概述
1. 决策树是什么?
决策树算法是机器学习中最经典的算法之一。大家可能听过一些高深的算法,例如在竞赛中经常使用的Xgboost、各种集成算法等,他们都是基于树模型来建立的,所以掌握那些模型,首先我们需要掌握决策树。
树:有一个根节点,由根结点开始,不断的扩展,最终到达叶子结点,叶子结点就是最终的点,后面就无法扩展了。(相关数据结构可以自行补齐)
决策树的原理和搜索二叉树的原理差不多,从根结点开始,每次经过一个结点,都需要判断走左边还是右边,最终目标结点,那么达到目标结点的过程就是决策的过程。
根节点:数据的聚集地,第一次划分数据集的地方
非叶子节点与分支:代表中间过程的每个节点
叶子节点:数据最终的决策结果。
1.1. 决策树算法及其区别
常用的决策树算法有ID3,C4.5,CART。
决策树算法 | 启发函数 | 描述 |
ID3 | 最大信息增益 | |
C4.5 | 最大信息增益比 | |
CART | 最大基尼系数(Gini) | CART在每次迭代中选择基尼系数最小的特征及其对应的切分点。 |
1.2. 决策树如何防止过拟合?[1]
完全生长的决策树会面临过拟合的问题。完全生长的决策树所对应的每个叶节点只会包含一个样本,这就导致决策树是过拟合的。用它进行预测时,在测试集上的效果将会很差。因此我们需要对决策树进行剪枝,剪掉一些枝叶,提高模型的泛化能力。
决策树的剪枝通常有两种方法:
预剪枝(Pre-Pruning):即在生成决策树的过程中提前停止树的增长。
后剪枝(Post-Pruning):在已生成的过拟合决策树上进行剪枝,得到简化版的剪枝决策树。
2. 集成学习方法Bagging 和Boosting的区别[2]
Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。
Boosting的过程,很类似于人类学习的过程,我们学习新知识的过程,往往是迭代式的,第一遍学习的时候,我们会记住一部分知识,但往往也会犯一些错误,对于这些错误,我们的印象会很深,第二遍学习的时候就会针对犯过错误的知识加强学习,以减少类似的错误发生。不断循环往复,直到犯错的次数减少到很低的程度。
Bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。其中很著名的算法之一是基于决策树基分类器的随机森林,为了让基分类器之间相互独立,将训练集分为若干子集(当训练样本数量较少时,子集之间可能有交叠)。Bagging方法更像是一个集体决策的过程,每个个体都进行单独学习,学习的内容可以相同,也可以不同,也可以部分重叠。但由于个体之间存在差异性,最终做出的判断不会完全一致,在最终做决策时,每个个体单独做出判断,再通过投票的方式做出最后的集体决策。
3. 树模型的关系
Bagging+决策树=随机森林
Adaboost+决策树=提升树
Gradient Boosting + 决策树 = GBDT
4. 随机森林原理[3]
随机森林就是用随机的方式建立一个森林,在森林里有很多决策树组成,并且每一棵决策树之间是没有关联的。当有一个新样本的时候,我们让森林的每一棵决策树分别进行判断,看看这个样本属于哪一类,然后用投票的方式,哪一类被选择的多,作为最终的分类结果。在回归问题中,随机森林输出所有决策树输出的平均值。
(1)随机森林既可以用于分类,也可以用于回归。
(2)它是一种降维手段,用于处理缺失值和异常值。
(3)它是集成学习的重要方法。
4.1. 两个随机抽取
(1)样本有放回随机抽取固定数目
(2)构建决策树时,特征随机抽取
解释:两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)
4.2. 随机森林算法是如何工作的?
在随机森林中,每一个决策树“种植”和“生长”的四个步骤:
(1)假设我们设定训练集中的样本个数为N,然后通过有重置的重复多次抽样获得这N个样本,这样的抽样结果将作为我们生成决策树的训练集;
(2)如果有M个输入变量,每个节点都将随机选择m(m<M)个特定的变量,然后运用这m个变量来确定最佳的分裂点。在决策树的生成过程中,m的值是保持不变的;
(3)每棵决策树都最大可能地进行生长而不进行剪枝;
(4)通过对所有的决策树进行加总来预测新的数据(在分类时采用多数投票,在回归时采用平均)。
4.3. 随机森林的优缺点
优点:
(1)在分类和回归都表现良好
(2)对高维数据的处理能力强,可以处理成千上万的输入变量,是一个非常不错的降维方法
(3)能够输出特征的重要程度
(4)有效的处理缺省值
4.4. 重要参数
随机森林分类效果(错误率)与两个因素有关:
(1)森林中任意两棵树的相关性:相关性越大,错误率越大;
(2)森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。
减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。在学习如何选择参数前首先介绍oob的概念。
4.5. oob:袋外错误率
为了选择最优的m,这里需要利用的是袋外错误率oob(out-of-bag error)。我们知道,在构建每个决策树的时候,采用的是随机又放回的抽取,所以对于每棵树来说,都有一些样本实力没有参与树的生成,所以这些样本成为袋外样本,即oob。所以我们需要做一下oob估计:
(1)对每个样本,计算它作为oob样本的树对它的分类情况
(2)多数投票作为该样本的分类结果
(3)用误分个数占样本总数的比率作为随机森林的oob误分率
oob误分率是随机森林泛化误差的一个无偏估计,它的结果近似于需要大量计算的k折交叉验证。所以没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计。
当我们知道了oob的计算方法,我们可以通过选取不同的m,计算oob error,找出oob error最小时对应的m的值。这和交叉验证的思想非常的相似。
4.6. RF特征重要性的度量方法
(1)对于每一棵决策树,计算其oob error_0
(2)选取一个特征,随机对特征加入噪声干扰,再次计算oob error_1
(3)特征的重要性=∑(oob error_1-oob error_0)/随机森林中决策树的个数
(4)对随机森林中的特征变量按照特征重要性降序排序。
(5)然后重复以上步骤,直到选出m个特征。
解释:用这个公式来度量特征重要性,原因是:给某个特征随机的加入噪声后,如果oob error增大,说明这个特征对样本分类的结果影响比较大,说明重要程度比较高。
4.7. RF特征选择
首先特征选择的目标有两个:
1:找到与分类结果高度相关的特征变量。
2:选择出数目较少的特征变量并且能够充分的预测应变量的结果。
特征选择的步骤:
(1)对于每一棵决策树,计算其oob error
(2)随机的修改OOB中的每个特征xi的值,计算oob error_2,再次计算重要性
(3)按照特征的重要性排序,然后剔除后面不重要的特征
(4)然后重复以上步骤,直到选出m个特征。
5. XGBoost原理
6. 随机森林,XGB,LGB的各自区别(面试常问)
7. GBDT和XGB的区别
参考:
[1,2] 百面机器学习
[3] https://www.jianshu.com/p/57e862d695f2
最后
以上就是爱笑大象为你收集整理的树模型总结的全部内容,希望文章能够帮你解决树模型总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复