GBDT的核心就在于累加所有树的结果作为最终结果。
分类树
决策树的分类算法有很多,以具有最大熵的特征进行分类,以信息增益特征进行分类(ID3),以增益率特征进行分类(C4.5),以基尼系数特征进行分类(CART分类与回归树)等等。这一类决策树的特点就是最后的结果都是离散的具体的类别,比如苹果的好/坏,性别男/女。
回归树
回归树与分类树的流程大致一样,不同的是回归树在每个节点都会有一个预测值,以年龄为例,该节点的预测值就是所有属于该节点的样本的年龄的均值。
那回归树是根据什么来划分特征的呢?
分类树的最大熵、信息增益、增益率什么的在回归树这都不适用了,回归树用的是均方误差。遍历每个特征,穷举每个特征的划分阈值,而这里不再使用最大熵,使用的是最小化均方差——(每个人的年龄-预测年龄)^2/N,N代表节点内样本数。这很好理解,和预测年龄差距越大,均方差也就越大。因此要找到均方差最小的阈值作为划分点。
划分的结束条件一般有两个:第一是划分到每一个节点都只包含一个年龄值,但是这太难了;第二就是划分到一定的深度就停止,取节点内数据的均值作为最终的预测值。
XGBoost
XGBoost其实是由一群训练出来的CART回归树集成出来的模型。
明确目标
我们的目标其实就是训练一群回归树,使这树群的预测值尽量接近真实值,并且有尽可能强大的泛化能力。来看看我们的优化函数:
i表示的是第i个样本,前一项是表示的是预测误差。后一项表示的是树的复杂度的函数,值越小表示复杂度越