目标:找到一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。
基本过程:从根结点开始,递归地选择最优特征,根据该特征对训练数据进行分割,直到每个子集都被分到叶结点上,有了明确的分类;但是这样得到的决策树在已知数据上表现完美,但在未知数据上表现未知,可能发生过拟合,所以需要进行剪枝,去掉过分细分的叶结点。 如果特征数量过多,可以在开始时就进行特征选择,只使用对训练数据有足够分类能力的特征。
特征选择
熵:随机变量不确定性的度量,值越大,对应的随机变量不确定性越大。其中pi代表X中每个值取值的概率。 经验熵
条件熵:在已知随机变量X的条件下随机变量Y的不确定性。 经验条件熵
这里统一规定0log0=0。
信息增益:特征A对训练数据集D的信息增益g(D,A),也称为互信息。其含义为由于特征A而使得对数据集D的分类的不确定性减少的程度。
信息增益比:信息增益会偏向于选择取值较多的特征,使用信息增益比可以进行校正。
上式HA(D)中的n代表的是特征A的取值个数,而上面H(D)中的n代表的是数据集D中所有的类别个数。
信息增益 vs 信息增益比:信息增益会偏向于选择取值较多的特征,因为取值多,将原始数据集划分地更细化,对应的子数据集中的类别纯度更高。但是这种方法的泛化能力低,采用信息增益比后,计算了每个特征的熵,取值较多的特征对应分母值较大,所以采用信息增益比时会偏向于选择取值较少的特征。
ID3算法:使用信息增益作为选择结点的标准,找到一个切分特征A后,对A的每一个可能值a对数据集进行切分,因此可能是多叉树,而不是二叉树。 结点对应的类为D中实例数最大的类。
C4.5算法:使用信息增益比作为选择结点的标准。也是多叉树。 结点对应的类为D中实例数最大的类。
剪枝:定义损失函数
其中|T|为所有叶结点的个数,t为叶结点,为叶结点t下的样本点个数,为个样本点中属于类别k的样本个数。
如果剪枝后的损失函数值变小,则进行剪枝。
剪枝分为预剪枝和后剪枝:
1)预剪枝:在决策树生成过程中,判断节点的划分能否带来决策树泛化性能的提升,如果不能则停止划分。
2)后剪枝:在生成完整的决策树之后,自底而上地对非叶节点考察,如果对应的子树替换为叶节点能提升泛化性能,则进行剪枝。
泛化性能的评估可通过验证集来验证。
CART树
分类与回归树,二叉树。内部结点特征是一个判断语句,取值为是或否,即特征上是否取这个值,分别对应左右两个分支。
特征选择:回归树使用平方误差最小化,分类树使用基尼指数最小化准则。
可以重复使用已经使用过的特征,这是和C4.5的区别,C4.5无法重复使用已经使用过的特征。
最小二乘回归树
输入空间划分确定后,可以使用每个样本的实际值与预测输出值的平方误差来表示预测误差,而为了最小化平方误差,易知每个叶结点上的输出应该为当前叶结点下所有样本的输出的平均值。最优切分变量j和最优切分点s的求解为:
也就是说找到一个切分点,能够最小化两侧的平方误差总和。而两侧的输出则分别为对应包含的样本点的平均值。
分类树
最小化基尼指数选择最优特征,同时决定该特征上的最优二值切分点,此切分点在所有特征的所有切分点中基尼指数最小。
基尼指数:
对应的二分类中
这里的D1和D2代表的是根据特征A的二值切分点将数据集D分割成的两个部分。
反映了从数据集中随机挑选两个样本类别不一致的概率。 基尼指数越大,不确定性越大,所以我们需要挑选能够最小化基尼指数的特征。
特征如何切分?
- 离散变量
如果有N个不同的值,那么需要将这N个值人工地划分到两个集合中,分别代表两个分支。
- N=2,设为{A,B}两个值,那只有一种划分方式:A-B。
- N=3,设为{A,B,C}三个值,那可以有3中划分方式:A-BC,B-AC,C-AB。
- N=4,设为{A,B,C,D}四个值,那通过组合可以有7种划分方式:A-BCD,B-ACD,C-ABD,D-ABC,AB-CD,AC-BD,AD-BC.
- N=5,设为{A,B,C,D,E}四个值,那通过组合可以有15种划分方式:A-BCDE,B-ACDE,C-ABDE,D-ABCE,E-ABCD,AB-CDE,AC-BDE,AD-BCE,AE-BCD,BC-ADE,BD-ACE,BE-ACD,CD-ABE,CE-ABD,DE-ABC。
依次类推,上述中的-代表分裂点,左右分别为两个分支中对应的特征值。最终需要找到切分后的基尼指数最少的切分方式。
- 连续变量
需要将连续值从小到大排好序,分别以每两个值的平均值x作为切分点,左右分支分别对应小于x,大于等于x。如果连续值的个数非常多,那么这种方式需要计算的候选切分点太多,为了减少计算量,可以先将值划分到规定个数的bin中,每个bin中值的大小对应为(a11,a12),(a21,a22)......(ak1,ak2),那么可以依次选取(a12+a21)/2,(a22+a31)/2......作为切分点,计算基尼指数。
ID3中还不能处理连续值,C4.5中采用了二分法对连续值进行处理。
- 缺失值
1)属性值缺失时进行属性选择:使用没有缺失值的样本子集进行计算。
2)给定了划分属性,如果样本在该属性上的值缺失,如何进行样本划分将样本同时划入所有子节点,并且调整样本权重,让同一个样本以不同的概率划入不同的子节点上去。