目录
ID3,C4.5,CART
在之前提到决策树的时候我们说到表示信息不确定度的值叫做信息熵
数据集的信息熵:
以及条件熵:
表示在条件V确定后,对U仍然存在的不确定性。
信息熵减去条件熵即为信息增益,反映的是信息在得到条件V后消除随机不确定性的程度,即条件V给的信息有多少。所以我们对于选择特征进行分类的时候,当然选择信息增益较大的特征,这样具有较强的分类能力。
采用这种选择特征的方法得到的决策树我们叫做ID3。
可是ID3有一个缺点就是对可取值数目较多的特征有所偏好。比如说我们提供学生的特征,来对学生最后的某一个特质做分类。如果我们把学号当做是一个特征的话,很明显因为一个人一个学号,一旦用学号做划分,结果就直接出来了。但是这并不是我们所需要的。我们希望在所分结点尽量少的情况下得到尽可能多的信息。这个时候我们提出一个概念叫做信息增益率。即信息增益除以条目个数。以此为基准选择特征划分决策树,采用这种方法得到的决策树我们叫做C4.5。
但是上面两种决策树都只能够做分类,对于回归问题,我们又引入了CART。CART的划分标准我们采用基尼系数,熵模型拥有大量耗时的对数运算,基尼指数在简化模型的同时还保留了熵模型的优点。基尼指数代表了模型的不纯度,基尼系数越小,不纯度越低,特征越好。这和信息增益(率)正好相反。
其中 k 代表类别。
基尼指数反映了从数据集中随机抽取两个样本,其类别标记不一致的概率。因此基尼指数越小,则数据集纯度越高。基尼指数偏向于特征值较多的特征,类似信息增益。基尼指数可以用来度量任何不均匀分布,是介于 0~1 之间的数,0 是完全相等,1 是完全不相等。
提升树
提升是一个机器学习技术,可以用于回归和分类问题,它每一步产生一个弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升(Gradient boosting)。 梯度增强
梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合(基函数);提升算法通过迭代的选择一个负梯度方向上的基函数来逐i渐逼近局部极小值。这种在函数域的梯度提升观点对机器学习的很多领域有深刻影响。
提升的理论意义:如果一个问题存在弱分类器,则可以通过提升的办法得到强分类器。
首先介绍前向分步算法:
把多个分类器进行线性组合,便是加法模型:
其中b指基函数,γ则为基函数参数,β为基函数的系数(权重)。
给定训练数据集
定义损失函数为,即整体损失为
那么对于加法模型进行学习即是最小化上面的损失函数。
前向分步算法求解这一复杂优化问题的想法是:每一步只学习一个基函数及其系数,逐步逼近优化目标函数,具体来讲,每步只需要优化如下损失函数:
因此,前向分步算法的过程为:
前向分步算法循环 M 次,依次计算出每一个基函数的参数,最终得到加法模型。
当基函数为决策树的时候,我们采用加法模型与前向分步算法,最后得到的即为提升树。模型可表示为:
其中T表示决策树,θ为决策树的参数,M为树的个数。对于不同问题,提升树学习算法的主要区别在于使用的损失函数不同。回归问题,一般可用平方误差损失函数,分类问题可使用指数损失函数,一般决策问题可使用一般损失函数。
GBDT
当损失函数是平方损失函数和指数损失函数时,每一步的优化比较简单,但对一般损失函数而言,往往每一步的优化并不那么容易。这时候我们便需要GBDT(Gradient Boosting Decision Tree),即梯度提升决策树。GBDT就是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值:
作为回归问题提升树算法中的残差的近似值,拟合一个回归树。这个回归树一般可选CART回归树。具体算法如下:
、
Adaboost
提升树与GBDT是每棵树基于之前的集合做残差拟合得到的一种方法。下面思考另外一种Boost(提升)方法。每次基于之前的结果调整样本的权重,并且基于本树的误差率给予权值。多棵树组成的加法模型、损失函数为指数函数、学习算法为前向分步算法时的二类学习方法,叫做Adaboost。
AdaBoost算法是前向分步算法的特例,这时,模型是基本分类器组成的加法模型,损失函数是指数函数。损失函数取:
每棵树的分类错误率为:
y为样本真实值,G为预测值,w为样本权重
得到每棵树的权重α为:
然后更新下一棵树每个样本的权值为:
AdaBoost算法可以看做是采用指数损失函数的提升方法,其每个基函数的学习算法为前向分步算法,它的训练误差是以指数速率下降的。AdaBoost算法不需要事先知道下界y,具有自适应性(Adaptive),它能自适应弱分类器的训练误差率。