热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Boosting,Bootstrap,Adaboost,GBDT,XGBoost,随机森林

通俗理解kaggle比赛大杀器xgboost (强烈推荐,该文中详细清晰的介绍了决策树、集成学习、Boosting、Bagging、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(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算法

XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学习竞赛中并取得了不错的成绩。因为XGBoost本质上还是一个GBDT,但是力争把速度和效率发挥到极致,所以叫X (Extreme) GBoosted。两者都是boosting方法。

XGBoost的核心算法思想不难,基本就是:



  1. 不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数f(x),去拟合上次预测的残差。

  2. 当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数

  3. 最后只需要将每棵树对应的分数加起来就是该样本的预测值。

XGBoost与GBDT有什么不同

除了算法上与传统的GBDT有一些不同外,XGBoost还在工程实现上做了大量的优化。总的来说,两者之间的区别和联系可以总结成以下几个方面。



  1. GBDT是机器学习算法,XGBoost是该算法的工程实现。

  2. 在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模 型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。

  3. GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代 价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。

  4. 传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类 器,比如线性分类器。

  5. 传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机 森林相似的策略,支持对数据进行采样。

  6. 传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺 失值的处理策略。

 


随机森林(Random Forest)

参考:知乎-随机森林算法梳理

当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果

随机森林的优缺点

随机森林的优点:

  ①训练可以高度并行化,可以有效运行在大数据集上。

  ②由于对决策树候选划分属性的采样,这样在样本特征维度较高的时候,仍然可以高效的训练模型。

  ③由于有了样本和属性的采样,最终训练出来的模型泛化能力强。

  ④可以输出各特征对预测目标的重要性。

  ⑤对部分特征的缺失容忍度高。

  ⑥袋外数据可用作验证集来检验模型的有效性,不用额外划分数据集。

随机森林的缺点:

  ①在某些噪声比较大的样本集上,随机森林容易陷入过拟合。

  ②取值划分比较多的特征容易对随机森林的决策产生更大的影响,从而影响拟合的模型效果。

 



推荐阅读
author-avatar
瓜子HR刘冲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有