AdaBoost
-
定义
AdaBoost最流行的提升法的一种方式之一,将几个弱学习器集合成一个强学习器的任意集成方法.Adaptive Boosting的缩写.它专注于对前序进行纠正,关注前序拟合不足的训练实例. -
使用步骤
构建一个AdaBoost分类器,首先需要训练一个基础分类器(如决策树),用它对进行训练集进行预测.然后对错误分类的训练实例增加其相对权重,循环更新权重后再进行训练.
-
缺点
这种依序学习技术无法并行,只能在前一个预测期得到结果之后,调整新的预测器才能进行新的训练.在拓展方面,它的表现不如bagging和pasting. -
scikit-learn的AdaBoost
scikit-learn使用的是AdaBoost的多分类版本,叫做SAMME(http://goo.gl/Eji2vR)(基于多类指数损失函数的逐步添加模型).当只有两个类别的时候,SAMME等于AdaBoost.此外,如果预测器可以使用估算类别概率(即拥有predict_proba()方法),scikit-learn会使用SAMME的一个变种,即是SAMME.R(R代表real),它依赖的是类别概率而不是类别预测,通常表现更好.
接下来使用使用Scikit-learn的AdaBoostClassifier训练一个AdaBoost分类器,它基于200个单层决策树(Decision Stump),即max_depth = 1,换句话说就是一个决策节点加两个叶节点.
这里使用AdaBoostClassifier的默认基础估算器.
from sklearn.ensemble import AdaBoostClassifier
ada_clf = AdaBoostClassifier(
DecisionTreeClassifier(max_depth=1),n_estimatiors=200,
algorithm="SAMME.R",learning_rate=0.5
)
ada_clf.fit(X_train,Y_train)
//algorithm['ælgərɪð(ə)m],算法
//estimator['estɪmeɪtə],预测器,估量器
//predict[prɪ'dɪkt],预测
AdaBoost与梯度下降的区别:AdaBoost是在训练中不断加入新的预测期是模型效果更好,而梯度下降是不断调整单个预测器的参数使得成本函数最小化.
网友评论