决策树代码实现
在上一篇《机器学习》之决策树原理中,我们从信息论开始详细介绍了 决策树的三种主要的算法,即 ID3,C4.5,CART 三种算法,介绍了它们的原理以及优缺点,又介绍了 两种 提升泛化能力的两种剪枝技术,预剪枝 和 后剪枝 ,并进行了比较
接下来,我们继续完成 在上一篇中未完成的部分。
6.1连续值处理
对于连续值我们需要使用离散化技术,最简单的策略是使用二分法
(图片来自网络)
选用二分法划分属性,然后计算出信息增益,寻找使信息增益最大化的划分点,需要注意的是,与离散属性不同,若当前结点划分为连续属性,该属性还可作为其后代结点的划分属性
6.2缺失值处理
面对缺失值数据,我们需要解决两个问题
- 如何在属性缺失的情况下进行划分属性选择?
- 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
对于问题(1),令D‘表示D中在属性a上没有缺失值的样本集子,则可以根据D‘来判断属性a的优缺
对于问题(2),若样本x在划分属性a上取值已知,则将x划入与其取值对应的子结点,并保持权重W;若取值未知,则将x同时划入所有子结点,并将权重值调整为r*w,直观的看,这就是让样本以不同的概率划入到不同的子结点去
7.多变量决策树
多变量决策树是实现”斜划分“,甚至更复杂划分的决策树,在此类决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试,在多变量决策树的学习过程中,不是为了每个非叶结点寻找一个最优划分属性,而是试图建立一个合适的线性分类器
8.扩展延伸
在信息增益,增益比,基尼指数之外,人们还设计了许多其他的准则用于决策树的划分,虽然它们对决策树的尺寸有较大影响,但对泛化性能的影响很有限;
剪枝方法和程度对决策树的泛化性能影响相当显著,有研究表明,在数据带有噪声时,可将泛化性能提高25%
多变量决策树算法主要有OCI 和 Brodley ,Utgoff 提出来的一系列算法
- OCI算法:先贪心的寻找每个属性的最优权值,在局部优化的基础上再对分类边界进行随机扰动以试图找到更好的边界
- Brodley ,Utgoff 则直接引入了线性分类器学习的最小二乘法。还有一些算法试图在决策树的叶结点上嵌入神经网络,以结合这两种学习机制的优势,列如”感知机树“
- 有些决策树算法可以进行增量学习,即在接收到新样本后可对以学到的模型进行调整,而不用完全重新学习。主要机制是通过调整分支路径上的划分属性次序来对树进行部分重构,如ID4算法,增量学习可以有效的降低每次接收到新样本后的训练时间开销,但多步增量学习后的模型会与基于全部数据训练而得的模型有较大差别