集成方法中的梯度提升回归树(梯度提升机)模型
一、总结
一句话总结:
合并多个决策树:梯度提升回归树是另一种集成方法,通过合并多个决策树来构建一个更为强大的模型。
回归和分类:虽然名字中含有“回归”,但这个模型既可以用于回归也可以用于分类。
每颗树都试图纠正前一棵树的错误:与随机森林方法不同,梯度提升采用连续的方式构造树,每颗树都试图纠正前一棵树的错误。默认情况下,梯度提升采用连续的方式构造树,每棵树都试图纠正前一棵树的错误。
强预剪枝:默认情况下,梯度提升回归树中没有随机化,而是用到了强预剪枝。梯度提升树通常使用深度很小(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。