梯度提升方法(Gradient Boosting)在众多机器学习竞赛中有着广泛的应用。本文介绍了梯度提升的基本概念,并结合实例讨论了梯度提升方法在实践中应用。
如果我们把线性回归比作丰田凯美瑞,那么梯度提升就好比UH-60黑鹰直升机。XGBoost,一个梯度提升的具体实现,在Kaggle社区中被广泛应用于各类机器学习竞赛。然而不幸的是,许多使用者(包括从前的我)把梯度提升当做一个黑盒来使用。在一些数据科学家的博客当中,也提出了很多对梯度提升的批评。因此,本篇文章的目的在于直观且全面地介绍经典的梯度提升方法。
前期准备
本文将从一个简单的示例开始。我们希望根据一个人是否玩视频游戏、是否喜欢园艺以及戴帽子时的特点来判断这个人的年龄。我们的目标是最小化均方误差。我们总共有九个训练样本来构建模型。
直观地说,我们可能希望
喜欢园艺的人年纪可能比较大
喜欢视频游戏的人可能比较年轻
对帽子的喜好可能对年龄的预测没有帮助
我们可以快速粗略地检测训练数据,看看这些假设是否成立:
现在,让我们使用回归树对数据进行建模。首先,我们要求回归树的叶子节点至少有三个样本数据。考虑到这一点,回归树只会根据"LikesGardening"这个特征进行一次划分。
这样做很好,但是这种做法忽略了"PlaysVideoGames"特征中包含的宝贵信息。我们可以尝试让回归树的叶子节点保留两个样本数据。
在这里,我们综合考虑"PlaysVideoGames"以及"LikesHats"特征中蕴含的信息,这些信息表明我们的模型陷入了过拟合,回归树的属性划分受到了随机噪声的影响。
此时,使用单一决策/回归树的缺点就暴露出来了——在整个特征空间中,我们无法对多个彼此重叠的区域进行预测。假设我们计算第一棵回归树的训练误差。
现在,我们可以根据第一棵回归树的残差构建另一棵回归树。
注意,尽管前面过拟合的回归树考虑了"LikesHats"特征,但是这个模型并没有考虑这个特征。这是因为,与过拟合的回归树不同,第二棵回归树能够结合所有训练样本,综合考虑"LikesHats"特征与"PlaysVideoGames"特征的信息。而过拟合回归树仅考虑了输入空间中小范围内的特征信息,进而允许随机噪声选择"LikesHats"作为划分特征。
原文链接:
https://yq.aliyun.com/articles/71144