最近学习树相关的东西,学完以后怕不总结回头又忘了,准备把学的整理一下写一写,学习期间特别感谢博主:我曾经被山河大海跨过,wepon大神知乎的回答,以及各位大佬的整理。
其实一年前看周志华《机器学习》的时候也算看过决策树,当时也是走马光花,后面参加数据预测类的比赛,开始接触Xgboost,GBDT,lightgbm才发现决策树的理论都是这些的基础,后续还会写adaboost,GBDT,Xgboost以及对应调参数怎么调。
文章若有不当,希望批评指正,一起交流,共同进步
参考资料:
《统计学习方法》
决策树学习笔记:https://blog.csdn.net/sb19931201/article/details/52464743
决策树学习笔记:https://blog.csdn.net/sb19931201/article/details/52491430
决策树学习就是通过递归的选择最优特征,并根据选择的特征对数据集进行分割,使得各个子数据集有一个最好的分类过程,说到这里,大家可能会觉得决策树就是用来分类,当时我开始学的时候,也是这么认为,不然,决策树也可以用来解决回归问题。
决策树往往能够很好的拟合训练数据,但是经常会发生过拟合,所以需要进行剪枝,剪枝又有预剪枝和后剪枝,比较常用是后剪枝。
决策树生成的过程是局部最优,决策树剪枝是全局最优。
首先介绍下熵的概念,太懒了,我就直接截图了
熵(经验熵):随机变量的不确定性
条件熵(经验条件熵):已知随机变量X的条件下随机变量Y的不确定性
信息增益:在得知特征X的信息而使得类Y的信息的不确定性减少的程度
信息增益算法:
了解信息增益和信息增益比以后,对ID3和C4.5学习就很轻松了
ID3(生成算法)决策树主要利用信息增益:(注意ID3的输入是有一个阈值,这个阈值是树生成停止的控制条件)
说白了,上述过程就是,如果样本属于同一类,不用分了,就是一个根结点(决策树桩),否则计算每个特征的信息增益,选择信息增益最大的特征进行划分,直到满足停止条件。
从上述过程可以发现,ID3只有树的生成,因此容易造成过拟合
观察过程可以发现,C4.5与ID3的区别,仅仅是C4.5特征选择的过程换成了信息增益比
我们知道根据上述过程生成的树,对训练数据分类很准,但是测试数据分类没那么准确,因此需要进行剪枝
决策树的剪枝通过极小化整体的损失函数或者代价函数
假设树T的叶结点个数为|T|,t是树T的叶节点,该叶结点上与Nt个样本点,其中k类的样本点有Ntk个,k=1,2,..,k
Ht(T)为叶结点t上的经验熵(熵),
可以看出,损失函数由训练数据的预测误差和模型的复杂度决定,这个公式在后面Xgboost也会出现,可以好好理解下,
剪枝其实说白了就是控制|T|的数量,剪枝后T小了,损失函数自然就小了,所以较大的α选择简单的树,较小的α可以选择复杂的树,α=0,只考虑模型与训练数据的拟合程度有关,不考虑树的复杂度,剪枝就是当α确定时(这里是和CART剪枝的区别,cart剪枝α不确定),选择使损失函数最小的模型。模型复杂度低,拟合数据能力差,模型复杂度高,拟合数据能力 强,其实就是找两者的平衡。
注意:剪枝时的输入,α参数是固定的。