目录
ID3:使用信息增益作为属性选择度量
理论
ID3算法递归地构建决策树,从根节点开始,对所有特征计算信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归地调用以上方法构建决策树;知道所有特征的信息增益均很小或者没有特征可以选择为止。最后得到一个决策树。
在算法中(C4.5也是),有三种情形导致递归返回:
(1)当前节点包含的样本全属于同一类别,无需划分。
(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分。(此时将所含样本最多的类别设置为该叶子节点类别)
(3)当前节点包含的样本集合为空,不能划分。(将其父节点中样本最多的类别设置为该叶子节点的类别)
例子
优缺点
ID3优点是理论清晰、方法简单、学习能力较强,但也存在一些缺点:
(1)只能处理分类属性的数据,不能处理连续的数据;
(2)划分过程会由于子集规模过小而造成统计特征不充分而停止;
(3)ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息。
C4.5算法
采用信息增益比作为评价标准
CART算法
剪枝处理
当训练数据量大、特征数量较多时构建的决策树可能很庞大,这样的决策树用来分类是否好?答案是否定的。决策树是依据训练集进行构建的,当决策树过于庞大时,可能对训练集依赖过多,也就是对训练数据过度拟合。从训练数据集上看,拟合效果很好,但对于测试数据集或者新的实例来说,并不一定能够准确预测出其结果。如果过早的停止对节点的进一步分裂,可能会造成拟合不足。因此,对于决策树的构建还需要最后一步----即决策树的修剪。
预剪枝
构建树的过程中,在尚未完全拟合训练集的情况下,即在一个结点中的类別还没有达到最纯并且还可以进一步进行分裂的情况下,就停止对它的分裂。设定一个阈值,若信息增益低于这个阈值就停止分裂。
- 难点:阈值的确定
- 不足:可能导致拟合不足或过拟合
后剪枝 -- 更常用
完全生长的决策树->删除分支->子树替换
后剪枝是基于创建完决策树之后,再对决策树进行自底向上地剪枝判断,因此训练时间开销会比预剪枝或者不剪枝决策树要大。
- 概况误差估计 (二刷
- Validation set(验证集/确认集)
- 从训练数据集中移出一部分作为确认数据集。
- 在判断一棵子树是否需要被替换时,利用确认数据集来比较替换前和替换后的分类误差,如果替换后的误差低,则实现剪枝。
缺点:训练数据集的数据量变少可能会影响决策树的学习效果。
ps.一般需要将样本分成独立的三部分:训练集(train set),验证集(validation set)和测试集(test set)