上一篇文章中提到了投票分类器,bagging方法,pasting方法,随机森林等机器学习方法,对于这一类集成方法来说可以称之为使用相同的弱学习模型的集成方法,这会导致模型的单一,与如果模型不合适导致效果不好,所以引入了提升法,提升法是指通过几个弱学习器组合成为一个强学习器的集成方法。
总体思路是对循环训练预测器,每一次都对前序进行一些改变。
Adaboost:它是通过改变分类错误的实例权重后再进行分类,由于全中的改变,模型会偏向于选择权重较大的实例,以此进行循环,直至达到最优情况。
在sklearn.AdaboostClassifier中存在超参数algorithm,用于调整算法,为SAMME时,是基于多类指数损失函数的逐步添加模型,而为SAMME.R为基于概率。
##Adaboost
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
ada_clf =AdaBoostClassifier(DecisionTreeClassifier(max_depth=1),n_estimators=200,
algorithm='SAMME.R',learning_rate=0.5)
ada_clf.fit(x_train,y_train)
另一个集成方法,梯度提升。类似于最速下降法。它是通过针对上一个预测结果的残差值进行计算的。推导过程如下。
##梯度提升
tree_reg1 =DecisionTreeClassifier(max_depth=2)
tree_reg1.fit(x,y)
y2 =