什么是决策树
决策树的目的是生成一个树状图用于分类任务,其包含根节点、叶节点和内部节点。根节点包含所有的样本,内部节点对应一个个属性测试,叶节点则为决策结果,决策的过程即是从根节点到叶节点的过程。比如要对一批样本进行分类,这些样本具有不同的属性及属性值,这些属性构成了一个个节点,最后的分类结果就是叶节点。
划分选择
决策树最关键的在于属性节点的选择,在每一个节点都有很多种属性的选择,选择的原则是希望该分支节点所包含的样本尽可能属于同一类别。为了表示节点的纯度,引入信息熵的概念。
信息熵是度量样本集合纯度的最常用的指标,信息熵越小则纯度越高,为了表示不同节点的选择对信息熵的影响,引入信息增益作为选择的依据,即信息增益越大,则使用该属性所获得的纯度的提升越大,著名的ID3决策树就是用信息增益来划分属性的。但并不是信息增益越大越好,需要考虑决策树的泛化能力,实际上信息增益准则对取值较多的属性有所偏好,为减少这种偏好带来的不利影响,因此C4.5决策树算法不直接使用信息增益,而是使用增益率来选择最优划分属性,但是增益率准则对取值数目较少的属性有所偏好,因此不能直接选择增益率最大的候选划分属性,而是先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。其他的划分准则还有基尼指数(CART决策树)等。
剪枝处理
剪枝是决策树中应对过拟合问题的主要手段,决策树的分支越多,则分类越精细,就会出现过拟合现象,因此,通过剪枝操作,可以降低过拟合的风险。剪枝处理主要有两种方式,一种是预剪枝,一种是后剪枝。预剪枝是在生成决策树的过程中,对每个节点进行估计,如果该分支并不能够提升决策树的泛化能力,则停止划分。预剪枝能够降低过拟合的风险,同时也能减少训练时间,但是可能会有欠拟合的风险,即最后只生成了个树桩。后剪枝是在生成决策树后,自下而上的对非叶节点进行测试,如果叶节点替换分支节点能够提高泛化能力,则进行替换。后剪枝的泛化性能往往优于预剪枝,但是训练的时间较长。
连续值的处理
在实际应用中,并不是所有的属性取值都是离散值,还有可能遇到连续值,需要对连续值进行离散化,最简单的离散化方法就是二分法,首先取相邻两数的平均值作为其离散值的划分点,比如连续属性的取值为1 ,2, 3, 4, 5, 6,则将其候选划分点为1.5,2.5,3.5,4.5,5.5,再求这些划分点候选值中信息增益最大的划分点,再以此划分点将所有属性值分成两部分。
缺失值的处理
实际获得的样本可能会缺失一些属性值,如果完全抛弃这些数据则可能会丢失一些重要信息,也是对数据的一种浪费,因此需要对缺失值进行处理。在处理之前需要考虑两个问题
1、如何在属性值缺失的情况下进行属性划分。
2、给定了划分属性,若样本在该属性上的值确实,如何进行划分。
对于问题1,可以在信息增益的公式上进行修改,增加一个比例项,即某属性缺失值占总取值的比例。再求样本子集的信息熵时使用的是无缺失的样本。对于问题2,将在该属性上有缺失的样本同时分到各个分支,并调整其权重。
多变量决策树
单变量决策树的分类边界是轴平行的,虽然这样使得结果有较好的可解释性,但是有时会遇到分类边界比较复杂的情况,此时决策树就会变得很复杂,多变量决策树的决策边界是斜的,可以很好的对复杂分类边界进行近似,在多变量决策树中,非叶节点不是某一个属性,而是多个属性的线性组合,即在每一个非叶节点,都建立一个线性分类器。