AdaBoost
基本介绍
- 初始化训练数据的权值分布。每⼀个训练样本最开始时都被赋予相同的权值:1/N
- 进⾏多轮迭代,⽤m = 1,2, …, M表⽰迭代的第多少轮
- 使⽤具有权值分布Dm的训练数据集学习,得到基本分类器(选取让误差率最低的阈值来设计基本分类器)
- 计算Gm(x)在训练数据集上的分类误差率,Gm(x)在训练数据集上的误差率em就是被Gm(x)误分类样本的权值之和
- 计算Gm(x)的系数,am表⽰Gm(x)在最终分类器中的重要程度(⽬的:得到基本分类器在最终分类器中所占的权重):em <= 1/2时,am >= 0,且am随着em的减⼩⽽增⼤,意味着分类误差率越⼩的基本分类器在最终分类器中的作⽤越⼤
- 更新训练数据集的权值分布(为了得到样本的新的权值分布),⽤于下⼀轮迭代,使得被基本分类器Gm(x)误分类样本的权值增⼤,⽽被正确分类样本的权值减⼩
- 组合各个弱分类器,从⽽得到最终分类器
AdaBoostClassifier
1 | from sklearn.ensemble import AdaBoostClassifier |
1 | from sklearn.metrics import roc_curve, auc |
0.9225589225589226
- base_estimator: 基分类器,默认是决策树,在该分类器基础上进行boosting,理论上可以是任意一个分类器,但是如果是其他分类器时需要指明样本权重
- n_estimators: 基分类器提升(循环)次数,默认是50次,这个值过大,模型容易过拟合;值过小,模型容易欠拟合
- learning_rate: 学习率,表示梯度收敛速度,默认为1,如果过大,容易错过最优值,如果过小,则收敛速度会很慢;该值需要和n_estimators进行一个权衡,当分类器迭代次数较少时,学习率可以小一些,当迭代次数较多时,学习率可以适当放大
- algorithm: boosting算法,也就是模型提升准则,有两种方式SAMME, 和SAMME.R两种,默认是SAMME.R,两者的区别主要是弱学习器权重的度量,前者是对样本集预测错误的概率进行划分的,后者是对样本集的预测错误的比例,即错分率进行划分的,默认是用的SAMME.R
- random_state: 随机种子设置
参考: