1. 什么是集成学习方法
集成学习方法是指组合多个模型,以获得更好的效果,即将多个弱学习器组合成一个强学习器,使集成的模型具有更强的泛化能力。
集成学习主要有两种方法:Bagging和Boosting。
2. Bagging
Bagging方法是从原始的数据集中进行有放回的随机抽样,每次训练从原始样本中有放回的随机抽取n个样本,因为是有放回,所以某些训练样本在某次的训练集中可能出现多次或者根本不出现。这样重复m次就会训练出m个模型,如果是分类问题,则m个模型采用投票方法,投票最多的为最终分类;如果是回归问题,则对m个模型的结果取平均值。
3. AdaBoost
AdaBoost算法对于分类问题的步骤:
- 初始化时对每个训练样本赋予相等的权重
- 每次训练后,对预测错误的训练样本赋予更大的权重
- 训练n次后得到n个训练模型,每个模型的预测结果有不同的权重,准确率高的模型的预测结果权重较大
- n个模型的预测结果(Y∈\in∈{-1,1})进行加权求和得到最终结果
AdaBoost涉及到的两个权重:
- 预测错误的训练样本的权重更新: 预测正确样本的数量预测错误样本的数量\frac{预测正确样本的数量}{预测错误样本的数量}预测错误样本的数量预测正确样本的数量
例如初始权重都为1,总样本数为15,第一次训练后,预测错误的样本数量为5,那么预测错误的样本的权重更新为 15−55\frac{15-5}{5}515−5=2,这样预测正确样本的权重和 = 预测错误样本的权重和。 - 模型的权重:ln(accuracy1−accuracy)\ln(\frac{accuracy}{1-accuracy})ln(1−accuracyaccuracy) =ln(预测正确样本的数量预测错误样本的数量)\ln(\frac{预测正确样本的数量}{预测错误样本的数量})ln(预测错误样本的数量预测正确样本的数量)
如上述第一次训练后,预测错误的样本数量为5,那么该模型的权重为ln2。
4. sklearn中的Adaboost
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
'''
base_estimator: 弱学习器使用的模型
n_estimators: 使用的弱学习器的最大数量
'''
model = AdaBoostClassifier(base_estimator = DecisionTreeClassifier(max_depth=2),
n_estimators = 4)
model.fit(x_train, y_train)