Boosting, Bootstrap, Adaboost, GBDT, XGBoost, 随机森林
通俗理解kaggle比赛大杀器xgboost (强烈推荐,该文中详细清晰的介绍了决策树、集成学习、Boosting、Bagging、Adaboost、GBDT、xgboost)
Adaboost,按分类对错,分配不同的weight,计算cost function时使用这些weight,从而让“错分的样本权重越来越大,使它们更被重视”。
Bootstrap也有类似思想,它在每一步迭代时不改变模型本身,也不计算残差,而是从N个instance训练集中按一定概率重新抽取N个instance出来(单个instance可以被重复sample),对着这N个新的instance再训练一轮。由于数据集变了迭代模型训练结果也不一样,而一个instance被前面分错的越厉害,它的概率就被设的越高,这样就能同样达到逐步关注被分错的instance,逐步完善的效果。
GBDT
GBDT中的树都是回归树,不是分类树。所以看GBDT之前,需要先看回归树内容。
- GBDT(MART) 迭代决策树入门教程 | 简介 (推荐,讲解简单清楚)
- 机器学习算法GBDT的面试要点-上篇 (强烈推荐)
- 【机器学习算法总结】GBDT (例子讲解的还可以)
- GBDT理解二三事
GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。
GBDT的核心就在于,每一棵树学的是之前所有树结论和与真实值的残差。
GB其实是一种理念,他并不是这一个具体的算法,意思是说沿着梯度方向,构造一系列的弱分类器函数。
当我们选择平方差损失函数时,梯度就是目标值减去预测值,即残差。用残差更新每个样本的目标值:叶子节点的均值作为落到该叶子节点的样本的预测值,使用目标值减去预测值,得到该样本的残差,作为下一棵树的训练目标。
随机森林与GBDT的比较
参考GBDT
相同点:
- 都是由多棵树组成;
- 最终的结果都由多棵树共同决定。
不同点:
- 组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成;
- 组成随机森林的树可以并行生成(Bagging);GBDT 只能串行生成(Boosting);这两种模型都用到了Bootstrap的思想;
- 随机森林的结果是多数表决表决的,而GBDT则是多棵树加权累加之和;
- 随机森林对异常值不敏感,而GBDT对异常值比较敏感;
- 随机森林是减少模型的方差,而GBDT是减少模型的偏差;
- 随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化;
- 随机森林对训练集一视同仁权值一样,GBDT是基于权值的弱分类器的集成 。
XGBoost
XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学习竞赛中并取得了不错的成绩。因为XGBoost本质上还是一个GBDT,但是力争把速度和效率发挥到极致,所以叫X (Extreme) GBoosted。两者都是boosting方法。
XGBoost的核心算法思想不难,基本就是:
- 不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数f(x),去拟合上次预测的残差。
- 当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数
- 最后只需要将每棵树对应的分数加起来就是该样本的预测值。
XGBoost与GBDT有什么不同
除了算法上与传统的GBDT有一些不同外,XGBoost还在工程实现上做了大量的优化。总的来说,两者之间的区别和联系可以总结成以下几个方面。
- GBDT是机器学习算法,XGBoost是该算法的工程实现。
- 在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模 型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
- GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代 价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
- 传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类 器,比如线性分类器。
- 传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机 森林相似的策略,支持对数据进行采样。
- 传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺 失值的处理策略。
随机森林(Random Forest)
参考:知乎-随机森林算法梳理
当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。
随机森林的优缺点
随机森林的优点:
①训练可以高度并行化,可以有效运行在大数据集上。
②由于对决策树候选划分属性的采样,这样在样本特征维度较高的时候,仍然可以高效的训练模型。
③由于有了样本和属性的采样,最终训练出来的模型泛化能力强。
④可以输出各特征对预测目标的重要性。
⑤对部分特征的缺失容忍度高。
⑥袋外数据可用作验证集来检验模型的有效性,不用额外划分数据集。
随机森林的缺点:
①在某些噪声比较大的样本集上,随机森林容易陷入过拟合。
②取值划分比较多的特征容易对随机森林的决策产生更大的影响,从而影响拟合的模型效果。