1、工作原理:
一种描述对实例进行分类的树形结构。由结点和有向边组成。内部结点表示一个特征或属性,叶节点表示一个类。从根节点到每个叶节点的路径对应了一个判定测试序列。从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点,这时,每一个子节点对应着该特征的一个取值,如此递归的对实例进行测试并分配,直至达到叶节点,最后将实例分到叶节点的类中。
2、算法流程:(决策树的构建)
(1)构建根节点,将所有训练数据都放在根节点;
(2)寻找划分数据集的最好特征,划分数据集;
(3)若数据集子集已经被基本正确分类,构建叶节点,否则,构建分支结点,对子集(2)(3);
(4)直到所有的训练数据子集都被基本正确分类或没有合适的特征为止;
(5)最后每个子集都被分到叶节点。
停止条件:
(1)每个叶子节点都只有一种类型的样本时(易过拟合)。
(2)结点中的样本个数小于预定阈值。
(3)样本集的信息增益小于预定阈值。
(4)没有更多的特征。
理想的决策树:叶子节点数尽量少,叶子节点的深度尽量小(太深可能会过拟合)
3、基本要素:
(1)特征选择
通常使用信息增益最大、信息增益比最大或基尼指数最小作为特征选择的总则。
数据集的分类越少(越纯),分类结果的信息熵越小。
信息增益偏爱可取值数目较多的属性。
增益率偏爱取值数目较少的属性。
基尼指数越小,数据集的纯度越高。(基尼指数用来度量分别的不均匀性,总的类别越杂乱,值越大)
(2)树的生成
ID3(信息增益)、C4.5(增益率)、CART(基尼指数)
(3)树的修剪
决策树剪枝是对已生成的树进行简化,往往通过极小化决策树整体的损失函数或代价函数来实现。
1)预剪枝
在决策树生成之前,对每个节点在划分前进行评估,若当前节点的划分不能带来决策树泛化性能的提升,则停止划分,并将当前节点标记为叶节点。
预剪枝使得决策树的很多分支都没有展示出来,降低了过拟合的风险,也减少了训练时间和测试时间;有些分支虽然当前划分不能提高泛化性能,甚至可能导致性能下降,但后续划分却有可能导致性能显著提高,会带来欠拟合的风险。
2)后剪枝
先从训练集中训练出一棵决策树,然后自底向上的对非叶节点进行考察,若将该结点对应的子树替换为叶节点能提高泛化性能,则将该结点替换为叶节点。
后剪枝保留了更多的分支,降低了欠拟合风险,性能往往高于预剪枝;但训练时间开销大。
4、特点:
“分而治之”
决策树就像带有终止块的流程图,终止块表示分类结果。
优点:
(1)计算简单,计算复杂度不高;
(2)模型具有可读性,输出结果易于理解,可解释性强;
(3)对中间值的缺失不敏感,比较适合处理有缺失属性的样本;
(4)能够处理不相关的特征;
(5)在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
(6)既可以用于分类也可以用于回归(CART)。
CART(分类回归树)是一个决策二叉树,通过递归的方式建立,每个节点在分裂的时候都是希望通过最好的方式将剩余的样本划分成两类,分类指标:
1)分类树:基尼指数最小化
2)回归树:平方误差最小化
回归树的构建流程:
a、遍历特征计算最优的划分点s,使其最小化的平方误差是:min{min(R1.sigma((yi−c1)2))+min(R2.sigma((yi−c2)2))},计算根据s划分到左侧和右侧子树的目标值与预测值之差的平方和最小,这里的预测值是两个子树上输入xi样本对应yi的均值;
b、找到最小的划分特征j以及其最优的划分点s,根据特征j以及划分点s将现有的样本划分为两个区域,一个是在特征j上小于等于s,另一个在在特征j上大于s,R1(j)={x|x(j)≤s}R2(j)={x|x(j)>s};
c、进入两个子区域按上述方法继续划分,直到到达停止条件。
分类树输出叶子节点中所属类别最多的那一类;回归树输出叶子节点中各个样本值的平均值。
缺点:
(1)可能会产生过度匹配问题;(剪枝、交叉验证、随机森林)
(2)决策树的生成只考虑局部最优;
(3)忽略了数据之间的相关性;
(4)对于各样本类别不一致的数据,信息增益的结果偏向于具有更多数值的特征。
(5)不支持在线学习,新样本到来后,决策树需要全部重建;
(6)单颗决策树分类能力弱,并且对连续值变量难以处理。
5、优化方法:
(1)决策树的剪枝对应于模型的全局选择,去掉过于细分的叶节点,使其回退到父节点,甚至更高的结点,然后 将父节点或更高的结点改为新的叶节点。
(2)若特征数量太多,可在决策树学习开始的时候,对特征进行选择,只留下对训练数据有足够分类能力的特征。
(3)从决策树中直接选取最优决策树是NP完全问题,现实中采用启发式方法学习次优的决策树。
(4)随机森林可以很大程度上减少过拟合,训练快速并且可调,参数也不像支持向量机那么多。
(《机器学习》周志华)
(5)连续值处理
若某个属性的取值为连续值,可应用连续属性离散化技术来处理。
(6)缺失值处理
1)在属性值缺失的情况下进行划分属性选择可推广为比例问题。无缺失值样本所占的比例,无缺失值样本中某一类所占的比例,无缺失值样本中在某一属性上取某值的样本所占的比例。
2)给定划分属性,若样本在该属性上的值缺失,对样本进行划分时,让同一个样本以不同的概率划分到不同的子节点中去。
(7)多变量决策树
根据样本的某一个属性进行样本的划分,得到的可视化分界平面都是由若干条平行于属性轴的直线所组成。可将直线替换为斜线来减少划分界限数目,同时划分的比较准确。斜线是根据属性的线性组合作为划分样本的依据。划分界面由斜线构成而不是平行于坐标轴的直线,即多变量决策树。
(8)增量学习
在收到新样本后对已学的的模型进行调整,而不是完全重新学习。但多步增量学习后的模型会与基于全部数据训练而得的模型有较大差别。
6、应用场景
数据分析师希望更好的理解手上的数据的时候往往可以使用决策树,因为它能够生成清晰的基于特征选择不同预测结果的树状结构。
决策树是相对容易被攻击的分类器,人为的改变一些特征,使得分类器判断错误。垃圾邮件躲避检测,因为决策树最终在底层判断是基于单个条件的,攻击者往往只需要改变很少的特征就可以逃过监测。
作为一些更有用的算法的基石。