前言
本文只涉及分类树,而不涉及回归树,本文大部分内容均来自于李航博士的《统计学习方法》,在此基础上增加一些个人理解
正文
分类树假设决策树是一棵二叉树
分类树其实与决策树差不多,不同之处在于特征选择以及树的剪枝
决策树利用信息增益选择最优特征,分类树利用基尼指数选择最优特征
决策树的剪枝是在所生成的决策树递归地进行剪枝,分类树利用αα的不同取值范围对分类树进行剪枝生成一系列子树,从子树中选取最优解
特征选择
分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点
注:
最优二值切分点
假设一个训练数据集为DD,特征为AA,最优二值切分点就是找到一个特征值AiAi,使得当A=AiA=Ai时,数据集DD能够很好的归类
基尼指数
分类问题中,假设有KK个类,样本点属于第kk类的概率为pkpk则概率分布的基尼指数定义为
注:
对于给定的样本集合DD,其基尼指数为
CkCk是DD中属于第kk类的样本子集,KK是类的个数
如果样本集合DD根据特征AA是否取某一可能值aa被分割成D1D1和D2D2两部分,即
则在特征AA的条件下,集合DD的基尼指数定义为
基尼指数Gini(D)Gini(D)表示集合DD的不确定性,基尼指数Gini(D,A)Gini(D,A)表示经A=aA=a分割后集合DD的不确定性. 基尼指数越大,集合的不确定性也越大
CART生成算法
从根节点开始,递归地对每个结点进行一下操作
对于当前集合DD,计算现有特征对该数据的基尼指数
注:
要计算所有特征的所有可能取值对该数据的基尼指数选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点. 依据最优特征及最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点当中去
- 对两个子结点递归地调用1,2;直至满足停止条件
分类树的剪枝
分类树利用αα的不同取值范围对分类树进行剪枝生成一系列子树,从子树中选取最优解
注:
αα的值是根据计算得来的,而不是随机设定的区域
从整体数T0T0开始剪枝,对T0T0的内部任意结点tt,以tt为单结点的树的损失函数为
以tt为根节点的子树TtTt的损失函数是
当α=0α=0或αα很小时,有不等式
当αα增大时,在某一αα处有
当αα继续增大时,有
这时,就可以进行剪枝操作
假设有一棵树T0T0,对T0T0中每一内部结点tt, 计算
它表示剪枝后整体损失函数减少的程度. 在T0T0中减去g(t)g(t)最小的TtTt,得到的子树作为T1T1,同时将最小的g(t)g(t)设为 α1α1. T1T1为区间[α1,α2)[α1,α2)的最优子树
对于子树T1T1,减去g(t)g(t)最小的Tt1Tt1,得到的子树作为T2T2,同时将最小的g(t)g(t)设为α2α2,T2T2为区间[α2,α3)[α2,α3)的的最优子树
经过上面的操作我们能得到一个子树集合{T1,T2,...Tn}{T1,T2,...Tn},即其对应的αα值,这样就可以根据交叉验证选取最优子树TαTα
注:
当αα的值增大时,为了得到更好的模型,模型的复杂度就会降低(复杂度降低就意味着剪枝),这样从剪枝后的子树集合中选择最好的模型就可以解决过度拟合问题
参考资料
[1]李航.决策树.统计学习方法.2012