参考资料(要是对于本文的理解不够透彻,必须将如下博客认知阅读,方可全面了解决策树):git
1.https://zhuanlan.zhihu.com/p/85731206github
2.https://zhuanlan.zhihu.com/p/29980400算法
决策树是一个很是常见而且优秀的机器学习算法,它易于理解、可解释性强,其可做为分类算法,也可用于回归模型。本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID三、C4.五、CART),第二篇介绍 Random Forest、Adaboost、GBDT,第三篇介绍 Xgboost 和 LightGBM。机器学习
在进入正题以前,先让咱们了解一些有关信息论的知识!性能
在决策树算法中,熵是一个很是很是重要的概念。一件事发生的几率越小,咱们说它所蕴含的信息量越大。好比:咱们听女人能怀孕不奇怪,若是某天听到哪一个男人怀孕了,咱们就会以为emmm…信息量很大了。学习
因此咱们这样衡量信息量:测试
其中,P(y)是事件发生的几率。信息熵就是全部可能发生的事件的信息量的指望:优化
表达了Y事件发生的不肯定度。spa
众所周知,决策树学习的关键在于如何选择最优划分属性,通常而言,随着划分过程不断进行,咱们但愿决策树的分支结点所包含的样本尽量属于同一类别,即结点的“纯度”愈来愈高。
从信息论的知识中咱们知道:信息熵越大,从而样本纯度越低,。ID3 算法的核心思想就是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂。算法采用自顶向下的贪婪搜索遍历可能的决策树空间(C4.5 也是贪婪搜索)。
ID3算法使用信息增益为准则来选择划分属性,“信息熵”(information entropy)是度量样本结合纯度的经常使用指标,假定当前样本集合D中第k类样本所占比例为pk,则样本集合D的信息熵定义为:
假定经过属性划分样本集D,产生了V个分支节点,v表示其中第v个分支节点,易知:分支节点包含的样本数越多,表示该分支节点的影响力越大。故能够计算出划分后相比原始数据集D得到的“信息增益”(information gain)。
信息增益越大,表示使用该属性划分样本集D的效果越好,所以ID3算法在递归过程当中,每次选择最大信息增益的属性做为当前的划分属性。
C4.5 算法最大的特色是克服了 ID3 对特征数目的偏重这一缺点,引入信息增益率来做为分类标准。
C4.5 相对于 ID3 的缺点对应有如下改进方式:
利用信息增益率能够克服信息增益的缺点,其公式为:
注意:信息增益率对可取值较少的特征有所偏好(分母越小,总体越大),所以 C4.5 并非直接用增益率最大的特征进行划分,而是使用一个启发式方法:先从候选划分特征中找到信息增益高于平均值的特征,再从中选择增益率最高的。
决策树解决过拟合的主要方法:剪枝、随机森林
(1) 在决策树生成过程当中,对每一个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提高,则中止划分并将当前结点标记为叶结点。在构造的过程当中先评估,再考虑是否分支。衡量决策树泛化性能提高的方法:
(2)优缺点
(1) 后剪枝是先从训练集生成一棵完整的决策树,而后自底向上地对非叶子结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提高,则将该子树替换为叶结点。
(2) 后剪枝决策树的欠拟合风险很小,泛化性能每每优于预剪枝决策树。但同时其训练时间会大的多。
ID3 和 C4.5 虽然在对训练样本集的学习中能够尽量多地挖掘信息,可是其生成的决策树分支、规模都比较大,CART 算法的二分法能够简化决策树的规模,提升生成决策树的效率。
CART 在 C4.5 的基础上进行了不少提高。
CART决策树(分类树)使用“基尼指数”(Gini index)来选择划分属性,基尼指数反映的是从样本集D中随机抽取两个样本,其类别标记不一致的几率,所以Gini(D)越小越好,这和信息增益(率)正好相反,基尼指数定义以下:
进而,使用属性α划分后的基尼指数为:
采用一种“基于代价复杂度的剪枝”方法进行后剪枝,这种方法会生成一系列树,每一个树都是经过将前面的树的某个或某些子树替换成一个叶节点而获得的,这一系列树中的最后一棵树仅含一个用来预测类别的叶节点。而后用一种成本复杂度的度量准则来判断哪棵子树应该被一个预测类别值的叶节点所代替。这种方法须要使用一个单独的测试数据集来评估全部的树,根据它们在测试数据集熵的分类性能选出最佳的树。
CART 的一大优点在于:不管训练数据集有多失衡,它均可以将其消除不须要建模人员采起其余操做。
CART 使用了一种先验机制,其做用至关于对类别进行加权。这种先验机制嵌入于 CART 算法判断分裂优劣的运算里,在 CART 默认的分类模式中,老是要计算每一个节点关于根节点的类别频率的比值,这就至关于对数据自动重加权,对类别进行均衡。
CART(Classification and Regression Tree,分类回归树),从名字就能够看出其不只能够用于分类,也能够应用于回归。其回归树的创建算法上与分类树部分类似,这里简单介绍下不一样之处。
对于连续值的处理,CART 分类树采用基尼系数的大小来度量特征的各个划分点。在回归模型中,咱们使用常见的和方差度量方式,对于任意划分特征 A,对应的任意划分点 s 两边划分红的数据集 和
,求出使
和
各自集合的均方差最小,同时
和
的均方差之和最小所对应的特征和特征值划分点。表达式为:
其中, 为
数据集的样本输出均值,
为
数据集的样本输出均值。
对于决策树创建后作预测的方式,上面讲到了 CART 分类树采用叶子节点里几率最大的类别做为当前节点的预测类别。而回归树输出不是类别,它采用的是用最终叶子的均值或者中位数来预测输出结果。
最后经过总结的方式对比下 ID三、C4.5 和 CART 三者之间的差别。
除了以前列出来的划分标准、剪枝策略、连续值确实值处理方式等以外,我再介绍一些其余差别: