决策树(DT)
(一)决策树模型
决策树由节点和有向边组成,节点包括内部节点和叶节点,内部结点是某属性的切分点,叶节点是所有实例组成的输入空间被决策树所划分成的子空间,代表一类(标签为一类,或者没有合适的特征可以使用)。
决策树学习包括三个步骤:
- 1.特征选择(即属性选择,又包括切分点选择)
- 2.决策树生成
- 3.决策树的修剪
(二)特征选择及对应的决策树生成算法
在信息论中,熵是一种不确定性的度量。信息的数学期望。熵的计算根据样本中集合中的分类类别(标签y)——Enty(D)。
在未引入特征前,集合中的样本没有任何参考依据可以用来打标签,因此熵是最大的;当引入了特征后,给分类提供了一定的参考,此时样本的不确定性(类别)降低,熵减小。决策树的划分目标是通过模型决策的规则,不断降低样本的不确定性,最终给所有样本打标签。这是一个熵不断减小的过程。
信息熵是度量样本集合纯度的一种指标(仅涉及标签),若所有的分类子集合中都只有一类标签,则此时纯度最大。最小为0,最大为log2(K),K为类别总数。信息熵越小,代表样本越纯,如0时代表样本只有一种标签,类别最少。
1.信息增益
在用属性(特征)划分时,引入了属性a(a1,a2,a3),那么样本集合D就被属性分支分成了三份D1,D2,D3. 此时每一个子集合都有自己的熵(不确定性),将每一个集合的熵按样本数目赋予权重Di/D进行加权,最终得到以属性a为特征分类的分类后集合D的不确定性(熵),此时的熵显然是减小了。原无属性特征分类的集合D的熵Ent(D)减去通过属性a分类后的集合D的熵w1*Enta(D1)+为*Enta(D3)+w3*Enta(D3)即为信息增益(互信息)。
每个子集合再以自身为D,考察剩余属性特征,如此下去直至叶节点下都为一类标签或属性特征全部用完为止。
2.信息增益比(属性固有值intrinsic value)
而其实仅引入某属性特征,即引入了一种参考(可以得到以属性特征为分类标签的信息熵——Enta(D)),即以属性a的可能取值为标签求熵,称为属性a的固有值IV(intrinsic value), IV(a)=.
显然属性a的取值数目越多,固有值IV越大。而我们倾向于先选择属性可取值数目较少的那个属性,而不仅仅考虑信息增益,因此引入了增益率的概念, Gain_ratio(D,a)=.
- 先从所有候选划分属性集合A里找到所有信息增益高于平均水平的属性。 C4.5-1993
- 再从中选择信息增益率最高的。
3.基尼指数(CART分类树的生成)
基尼值:一种衡量集合纯度的标尺,数学定义为从集合D中随机抽取两个样本,其类别标签不同的概率。
Gini(D)=. 因此基尼值越小,集合纯度越高。
因此属性a的基尼指数定义为Gini_index(D,a)=, 在候选属性集合A中,选择基尼指数最小的那个作为最优选择。 基尼指数实际上还是比较类似信息增益。 CART-1984
4.最小二乘生成法(CART回归树的生成)
- 先遍历训练样本的所有的特征,对于特征 j,我们遍历特征 j 所有特征值的切分点 c。
- 找到可以让下面这个式子最小的特征 j 以及切分点c.
以上四种方法中都引入了阈值作为划分节点的大前提,且ID3及C4.5仅有决策树的生成,没有修剪,相对而言更容易造成过拟合。
(三)决策树的修剪prune
剪枝标准:在测试集上的泛化能力
1.预剪枝,自上向下
- 基于贪心本质,优点是很多分支没有展开,降低了过拟合风险,减少了训练时间开销及测试时间开销
- 贪心本质的缺点是当前划分虽不能提升泛化能力,甚至造成泛化能力下降,但不代表后续划分不能,带来了欠拟合的风险
2.后剪枝,自下至上
- 通常保留了更多的分支,欠拟合风险小,泛化能力更优
- 树生成后再对所有非叶节点考察,训练时间比未剪枝及预剪枝开销大的多。
CART剪枝:(后剪枝)
首先基于上面特征选择的方法,自下而上剪枝,形成子树序列(多个剪枝后的树),通过验证集的交叉验证选择最优子树T
(四)
1.连续值处理
- 连续属性离散化,将连续属性n个点,取连续两点的中位值作为可能切分点,即生成n-1个可能切分点。
- 注意:连续属性在当前节点的后代节点划分时可以重复使用。
2.缺失值处理(从Cart用的这种缺失值处理思路上可见,**在特征选择(就是决策树的生成)的过程中,不一定要对缺失值进行填充**)
- 首先,根据无缺失特征的样本子集进行特征选择
- 其次,将无缺失特征样本正常划分(权重为1),再将此特征有缺失的样本同时划入各个分支节点,并分别赋予各无缺失样本子集占总无缺样本子集之比的权重。