决策树包括3个步骤:
特征选择的准则是信息增益或者信息增益比、Gini指数。选取具有分类能力的特征可以提高学习效率。决策树中的信息增益等价于训练数据集中类与特征的互信息。
决策树学习采用自顶向下的递归方法,以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为0,每个叶子节点中的实例都属于同一类。也就是说最上面的节点我们越不确定,随着条件越多,确定性越大。决策树是在无法进一步降低熵的情况下停止创建分支。决策树的生成方法有以下三种:
ID3决策树会偏向于选择取值较多的,即高度分支属性,但是这类属性不一定是最优属性。而且ID3决策树只能处理离散属性,对于连续的属性,在分类前需要进行离散化。
为了解决高度分支属性的问题,采用信息增益作为选择测试属性的标准,得到C4.5决策树
剪枝的原因:如果不剪枝,决策树是过拟合的,需要去掉不必要的节点使模型具有泛化能力。生成的决策树非常详细并且庞大,每个属性都被详细的考虑,决策树的叶子节点所覆盖的训练样本是纯的,对训练样本进行分类,效果会很好,误差率极低,训练样本中的错误数据也会被决策树学习,成为决策树的部分,但是对于测试数据集效果不好,即过拟合。
剪枝方法:预剪枝和后剪枝。
预剪枝:为了避免过拟合,设定一个阈值,熵值减小的数量小于这个阈值,就停止继续分支。但是效果不好
后剪枝:删除一些子树,用其叶子节点代替。这个叶子节点所标识的类别用这棵树中大多数训练样本所属的类别来表示。
剪枝的过程是对拥有同样父节点的一组节点进行检查,判断如果将其合并,熵的增加量是否小于某一个阈值,如果,小,说明这一组节点可以合并一个节点,包含了所有可能的结果。是目前最普遍的做法。
CART算法组成:
决策树生成:递归构建二叉决策树的过程。
① 回归树的生成(用平方误差最小化原则),最小二乘回归树生成。
②分类树的生成(用基尼指数最小化原则),进行特征选择,生成二叉树
CART生成算法:
输入:训练数据集D,停止计算的条件
输出:CATR决策树
根据训练数据集,从根结点开始,递归地对每一个节点进行一下操作,构建二叉决策树:
(1)设结点的训练数据集为D,计算现有特征对数据集的Gini指数,此时,对每一个特征A,对其可能取得每个值α,根据样本点对A=α的测试为是或否将D分割成D1和D2两部分,然后计算A=α时的Gini指数。
(2)在所有可能的特征A以及他们所有的切分点α中,选择Gini指数最小的特征及其对应的切分点作为最优特征与最优切分点,依最优特征与最优切分点,从现节点生成两个子结点,将训练数据集依特征分配到两个子结点中去。
(3)对两个子结点递归地调用(1),(2),直至满足停止条件
(4)生成CART决策树
算法停止计算的条件是结点中的样本个数小于预定阈值,或样本集的Gini指数小于预定阈值(样本基本属于同一类),没有更多特征。
CART剪枝:先从决策树T0底端开始不断剪枝,直到T0的根结点,形成一个子树序列(T0,T1,,,Tn),通过交叉验证的方法在独立验证数据集上对子树序列进行测试,从中选择最优子树。
决策树的超参数
谈到随机森林就会接触到两个概念:bagging和boosting。
Bootstraping:有放回的是抽样方法(可能抽到重复的样本)
Bagging算法:
Boosting算法(将弱分类器组装成一个强分类器):通过提高在前一轮中被弱分类器分错样本的权值,减小前一轮中分对的样本的权值。通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误列表大的分类器的权值。提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。
区别:
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
算法组合:
1)Bagging+决策树=随机森林
2)AdaBoost(既可做分类又可做回归)+决策树=提升树
3)Gradient Boosting +决策树=GBDT(GBDT中的树是回归树,不是分类树,用来做回归预测,调整后可用于分类)
随机森林的主要三个超参数:
(1)结点规模:随机森林不像决策树,每一棵树叶节点所包含的观察样本数量可能十分少,该超参数的目标是生成树的时候尽可能保持小偏差。
(2)树的数量
(3)预测器采样的数量:一般有D个预测器,那么可以在回归任务中使用D/3个预测器作为采样数,在分类任务中使用D^(1/2)个预测器作为抽样。
优点:
局限性:如果区分的类别十分多时,随机森林的表现不好,并且在需要推断超出范围的独立变量或非独立变量,随机森林做的不好。当决策树个数很多时,训练的时间和空间会比较大。因此一般模型都会用梯度提升树算法或者其他的提升方法。
GBDT算法可以处理分类和回归的问题。
对于Adaboost,我们是利用前一轮迭代弱学习器的误差率来更新训练集的权重,而GBDT是前向分步算法,但是弱分类器限定为只能使用CART回归树模型,也是迭代算法,迭代思路与AdaBoost思路不一样。
在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是ft−1(x), 损失函数是L(y,ft−1(x)), 我们本轮迭代的目标是找到一个CART回归树模型的弱学习器ht(x),让本轮的损失函数L(y,ft(x)=L(y,ft−1(x)+ht(x))最小。也就是说,本轮迭代找到决策树,要让样本的损失尽量变得更小。
GBDT的思想可以用一个通俗的例子解释,假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小
损失函数拟合的问题:用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。
GBDT的分类问题:GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。为了解决这个问题,主要有两种方法:
GBDT的优点:
(1)可以灵活处理各种类型的数据,包括连续值和离散值
(2)在相对少的调参时间情况下,预测的准确率也可以较高,是相对于SVM来说的
(3)使用一些健壮的损失函数,对异常值的鲁棒性非常强,比如Huber损失函数和Quantile损失函数
GBDT的缺点:
弱学习器之间存在依赖关系,难以并行训练数据,不过关可以通过自采样的SGBT来达到部分并行,而且容易过拟合(没有正则,没有自采样,只有剪枝)
1.决策树是一种分类和回归的基本模型:
2.决策树的优点:
3.如何学习一颗决策树:
4.启发式算法:
分为三步:特征选择、模型生成、决策树的剪枝。
这三个步骤就是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程,这个过程就是划分特征空间,构建决策树的过程。
5.如何选择最优特征:
根据特征的分类能力去选择最优特征,特征分类能力的衡量通常采用信息增益或信息增益比。
要理解信息增益,首先要理解熵这个概念。从概率统计的角度看,熵是对随机变量不确定性的度量,也可以说是对随机变量的概率分布的一个衡量。熵越大,随机变量的不确定性越大。对同一个随机变量,当它的概率分布为均匀分布时,不确定性最大,熵也最大。对有相同概率分布的不同的随机变量,取值越多的随机变量熵越大。
其次,要理解条件熵的概念。正如熵是对随机变量不确定性的度量一样,条件熵是指,有相关的两个随机变量X和Y,在已知随机变量X的条件下随机变量Y的不确定性。定义为X给定条件下Y的条件概率分布的熵对X的数学期望。
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别为经验熵与经验条件熵。
所谓信息增益,也叫互信息,就是指集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差。
用信息增益去选择特征有一个问题,即偏向于选择取值较多的特征。解决思路就是对取值较多的特征进行适当的惩罚(这里如果面试官感兴趣,可以说说惩罚思想,如L1,L2都是一种惩罚的做法),这就是信息增益比所干的事。
6.递归的中止条件:
通常有两个终止条件,一是所有训练数据子集被基本正确分类。二是没有合适的特征可选,即可用特征为0,或者可用特征的信息增益或信息增益比都很小了
7.什么是决策树剪枝,怎么剪枝;
由于根据训练数据生成的决策树往往过于复杂,导致泛华能力比较弱,所以,实际的决策树学习中,会将已生成的决策树进行简化,以提高其泛华能力,这一过程叫做剪枝。具体说就是在已生成的决策树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点。
一般剪枝算法都基于同一个思想,即减小决策树模型的整体损失函数,即正则化的极大似然函数。
一般剪枝算法给定α后,通过不断剪枝来减小决策树模型的整体损失。具体实现这个算法时可以采用动态规划。
CART剪枝算法优势在于不同提前确定α值,在剪枝的同时找到最优的α值
8.在CART剪枝算法中,当α确定时,存在唯一的最小子树使得损失函数最小。
https://www.zhihu.com/question/65502113
9.随机森林的应用场景:
随机森林是一种集成算法,首先选取不同的特征和训练样本,生成大量的决策树,然后综合这些决策树的结果来进行最终的分类。相对于决策树,在准确性上有很多的提升,同时一定程度上改善了决策树容易被攻击的特点。
适用场景:
10.决策树的应用场景:
11.随机森林在Bagging的基础上,在训练的过程中引入了随机特征选择:随机选择样本(放回抽样)、随机选择特征、构建决策树、随机森林投票(平均)
随机选择特征:在树的构建中,从样本集的特征集合中随机选择部分特征,然后从这个子集中选择最优的属性用于划分。这种随机性导致随机森林的偏差会有稍微的增加,但是由于随机森林的平均特性,会使得它的方差减小,而且方差的减小补偿了偏差的增大。随机森林在噪声较大的分类或者回归问题上会过拟合。
12.GBDT与随机森林的不同点: