决策树
决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。
其实用一下图片能更好的理解LR模型和决策树模型算法的根本区别,我们可以思考一下一个决策问题:是否去相亲,一个女孩的母亲要给这个女海介绍对象。
1分裂原则
我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的"纯度" (purity) 越来越高.
#1.1 ID3算法
一般而言,信息增益越大,则意味着使周属性α 来进行划分所获得的"纯
度提升"越大
1.2增益率 C4.5
先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的.
1.3尼基系数 CART算法
回归树
https://blog.csdn.net/jiede1/article/details/76034328
2剪枝处理
剪枝(pruning)——解决过拟合的主要手段.
在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得"太好"了,以致于把训练集自身、的一些特点当作所有数据都具有的一般性质而导致过拟合.因此,可通过主动去掉一些分支来降低过拟合的风险.
2.1预剪枝 (prepruning)
在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点
2.2后剪枝(postpruning)
先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能
3.应用
1决策树出现过拟合的原因及其解决办法?
原因:
在决策树构建的过程中,对决策树的生长没有进行合理的限制(剪枝);
样本中有一些噪声数据,没有对噪声数据进行有效的剔除;
在构建决策树过程中使用了较多的输出变量,变量较多也容易产生过拟合(该原因待解释!!!)。
解决办法
选择合理的参数进行剪枝,可以分为预剪枝和后剪枝,我们一般采用后剪枝的方法;
利用K−foldsK−folds交叉验证,将训练集分为KK份,然后进行KK次交叉验证,每次使用K−1K−1份作为训练样本数据集,另外一份作为测试集;
减少特征,计算每一个特征和响应变量的相关性,常见得为皮尔逊相关系数,将相关性较小的变量剔除;当然还有一些其他的方法来进行特征筛选,比如基于决策树的特征筛选,通过正则化的方式来进行特征选取等
2决策树是如何处理缺失值的?
https://blog.csdn.net/u012328159/article/details/79413610
如何在训练样本属性缺失的情况下进行划分属性的选择?
给定划分属性,若样本在该属性上的值是缺失的,那么该如何对这个样本进行划分?
如何解决测试样本中属性有缺失值的情况?
3.总结
ID3 是一个多叉树,使用了熵作为信息增益,不能处理连续值,而且有偏向性,倾向于选择类别较多的特征,因为IG相对偏大
C4.5 是一个多叉树,使用了熵计算信息增益比,信息增益比进行子节点分裂,对类别较多的特征进行惩罚
CART是一棵二叉树,对分类和回归都适用,对于回归树用平方误差最小化,对分类树用基尼指数进行特征选择。分类时和ID3、C4.5类似;回归时会遍历变量j, 对固定的切分变量扫描切分点s,计算MSE,选择使得MSE最小的(j,s)对。
CART之所以使用Gini指数是因为熵需要计算log,速度较慢
随机森林
1.Boosting and Bagging
目前的集成学习方法大致可分为:
Boosting:个体学习器问存在强依赖关系、必须串行生成的序列化方法
Bagging:个体学习器间不存在强依赖关系、可同时生成的并行化方法;前者的代表是 。
Bagging可以简单的理解为:放回抽样,多数表决(分类)或简单平均(回归)。
Bagging的思想比较简单,即每一次从原始数据中根据均匀概率分布有放回的抽取和原始数据大小相同的样本集合,样本点可能出现重复,然后对每一次产生的训练集构造一个分类器,再对分类器进行组合。
boosting的每一次抽样的样本分布都是不一样的。每一次迭代,都根据上一次迭代的结果,增加被错误分类的样本的权重,使得模型能在之后的迭代中更加注意到难以分类的样本,这是一个不断学习的过程,也是一个不断提升的过程,这也就是boosting思想的本质所在。迭代之后,将每次迭代的基分类器进行集成。那么如何进行样本权重的调整和分类器的集成是我们需要考虑的关键问题。
2 RF
Random Forest(随机森林)是Bagging的扩展变体,它在以决策树 为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,因此可以概括RF包括四个部分:1、随机选择样本(放回抽样);2、随机选择特征;3、构建决策树;4、随机森林投票(平均)。
随机选择样本和Bagging相同,随机选择特征是指在树的构建中,会从样本集的特征集合中随机选择部分特征,然后再从这个子集中选择最优的属 性用于划分,这种随机性导致随机森林的偏差会有稍微的增加(相比于单棵不随机树),但是由于随机森林的‘平均’特性,会使得它的方差减小,而且方差的减小补偿了偏差的增大,因此总体而言是更好的模型。
RF有两个随机采样过程:
行采样:采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本
列采样: 从M个feature中,选择m个(m << M)
通过样本的随机采样和特征的随机采样,RF的鲁棒性非常好
优缺点
优点
1、在数据集上表现良好,相对于其他算法有较大的优势(训练速度、预测准确度);
2、能够处理很高维的数据,并且不用特征选择,而且在训练完后,给出特征的重要性;3、容易做成并行化方法。
缺点:在噪声较大的分类或者回归问题上回过拟合。
更多问题:
-
为什么随机抽样?
保证基分类器的多样性,若每棵树的样本集都一样,那训练的每棵决策树都是一样 -
为什么要有放回的抽样?
保证样本集间有重叠,若不放回,每个训练样本集及其分布都不一样,可能导致训练的各决策树差异性很大,最终多数表决无法 “求同”,即最终多数表决相当于“求同”过程。 -
为什么不用全样本训练?
全样本忽视了局部样本的规律,不利于模型泛化能力 -
为什么要随机特征?
随机特征保证基分类器的多样性(差异性),最终集成的泛化性能可通过个体学习器之间的差异度而进一步提升,从而提高泛化能力和抗噪能力
3.GBDT(Gradient Boost Decision Tree 梯度提升决策树)
GBDT的核心就在于:每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学习。
优点:
1、它能灵活的处理各种类型的数据;
2、在相对较少的调参时间下,预测的准确度较高。
缺点
当然由于它是Boosting,因此基学习器之前存在串行关系,难以并行训练数据。
4.Xgboost
Xgboost是Boosting算法的其中一种,Boosting算法的思想是将许多弱分类器集成在一起,形成一个强分类器。因为Xgboost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。
Xgboost是以“正则化提升(regularized boosting)” 技术而闻名。Xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数,每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是Xgboost优于传统GBDT的一个特征。
参考 https://www.cnblogs.com/wj-1314/p/9402324.html
Reference
https://blog.csdn.net/manduner/article/details/90516561
https://blog.csdn.net/UniqueenCT/article/details/88929736
https://www.cnblogs.com/wj-1314/p/9402324.html