zoukankan      html  css  js  c++  java
  • 集成方法中的梯度提升回归树(梯度提升机)模型

    集成方法中的梯度提升回归树(梯度提升机)模型

    一、总结

    一句话总结:

    合并多个决策树:梯度提升回归树是另一种集成方法,通过合并多个决策树来构建一个更为强大的模型。
    回归和分类:虽然名字中含有“回归”,但这个模型既可以用于回归也可以用于分类。
    每颗树都试图纠正前一棵树的错误:与随机森林方法不同,梯度提升采用连续的方式构造树,每颗树都试图纠正前一棵树的错误。默认情况下,梯度提升采用连续的方式构造树,每棵树都试图纠正前一棵树的错误。
    强预剪枝:默认情况下,梯度提升回归树中没有随机化,而是用到了强预剪枝。梯度提升树通常使用深度很小(1到5之间)的树,这样模型占用的内存更少,预测速度也更快。

    1、梯度提升背后的主要思想?

    不断添加树可以不断迭代提高性能:梯度提升背后的主要思想是合并许多简单的模型(在这个语境中叫做弱学习器),比如深度较小的树。每颗树只能对部分数据做出很好的预测,因此,添加的树越来越多,可以不断迭代提高性能。

    2、梯度提升机学习率特点?

    学习率:除了预剪枝与集成中树的数量之外,梯度提升的另外一个重要参数是learning_rate(学习率),用于控制每棵树纠正前一棵树的错误的强度。较高的学习率意味着每棵树都可以做出较强的修正,这样模型更为复杂。

    3、梯度提升和随机森林选择?

    随机森林鲁棒性:由于梯度提升和随机森林两种方法在类似的数据上表现的都很好,因此一种常用的方法就是先尝试随机森林,它的鲁棒性很好。
    随机森林->梯度提升:如果随机森林效果很好,但预测时间太长,或者机器学习模型精度小数点后第二位的提高也很重要,那么切换成梯度提升通常会有用。

    4、梯度提升主要缺点?

    需要仔细调参:梯度提升主要缺点是需要仔细调参,而且训练时间可能会比较长。与其他基于树的模型类似,这一算法不需要对数据进行缩放就可以表现的很好,而且也适用于二元特征与连续特征同时存在的数据集。
    不适用于高维稀疏矩阵:与其他基于树的模型相同,它也通常不适用于高维稀疏矩阵。

    二、第六个模型:集成方法中的梯度提升回归树(梯度提升机)模型

    转自或参考:第六个模型:集成方法中的梯度提升回归树(梯度提升机)模型
    https://blog.csdn.net/az9996/article/details/86617885


    1、梯度提升回归树(梯度提升机)
    梯度提升回归树是另一种集成方法,通过合并多个决策树来构建一个更为强大的模型。虽然名字中含有“回归”,但这个模型既可以用于回归也可以用于分类。与随机森林方法不同,梯度提升采用连续的方式构造树,每颗树都试图纠正前一棵树的错误。默认情况下,梯度提升采用连续的方式构造树,每棵树都试图纠正前一棵树的错误。默认情况下,梯度提升回归树中没有随机化,而是用到了强预剪枝。梯度提升树通常使用深度很小(1到5之间)的树,这样模型占用的内存更少,预测速度也更快。

    梯度提升背后的主要思想是合并许多简单的模型(在这个语境中叫做弱学习器),比如深度较小的树。每颗树只能对部分数据做出很好的预测,因此,添加的树越来越多,可以不断迭代提高性能。

    梯度提升树经常是机器学习竞赛的优胜者,并且广泛应用于业界。与随机森林相比,它通常对参数设置更为敏感,但如果参数设置正确的话,模型精度会更高。

    除了预剪枝与集成中树的数量之外,梯度提升的另外一个重要参数是learning_rate(学习率),用于控制每棵树纠正前一棵树的错误的强度。较高的学习率意味着每棵树都可以做出较强的修正,这样模型更为复杂。通过增大n_estimators来向集成中添加更多的树,也可以增加模型复杂度,因为模型有更多机会纠正训练集上的错误。

    2、分析梯度提升树

    可以看到,梯度提升树的特征重要性与随机森林的特征重要性有些类似,不过梯度提升完全忽略了某些特征

    由于梯度提升和随机森林两种方法在类似的数据上表现的都很好,因此一种常用的方法就是先尝试随机森林,它的鲁棒性很好。如果随机森林效果很好,但预测时间太长,或者机器学习模型精度小数点后第二位的提高也很重要,那么切换成梯度提升通常会有用。

    如果想将梯度提升应用在大规模问题上,可以研究一下xgboots包机器Python接口,这个库在许多数据集上的速度都比scikit-learn对梯度提升的实现要快(有时调参也更简单)。

    3、优点、缺点和参数
    梯度提升决策树是监督学习中最强大也最常用的模型之一。其主要缺点是需要仔细调参,而且训练时间可能会比较长。与其他基于树的模型类似,这一算法不需要对数据进行缩放就可以表现的很好,而且也适用于二元特征与连续特征同时存在的数据集。与其他基于树的模型相同,它也通常不适用于高维稀疏矩阵。

    参数n_estimators和learning_rate两者之间高度相关,因为learning_rate越低,就需要更多的树来构建具有相似复杂度的模型。随机森林的n_estimators值总是越大越好,但梯度提升不同,增大n_estimators会导致模型更加复杂,进而可能导致过拟合。通常的做法是根据时间和内存的预算选择合适的n_estimators,然后对不同的learning_rate进行遍历。

    另一个重要参数是max_depth(或max_leaf_nodes),用于降低每棵树的复杂度。梯度提升模型的max_depth通常都设置的很小,一般不超过5。

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    程序的局部性原理2
    程序的局部性原理
    ROM
    学习Spring Security OAuth认证(一)-授权码模式
    mybatis*中DefaultVFS的logger乱码问题
    maven生命周期绑定要点
    spring security antMatchers相关内容
    JSTL
    什么是CSS hack?
    Java中获得当前静态类的类名
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13763445.html
Copyright © 2011-2022 走看看