Python AdaBoost提升算法
1 声明
本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。
2 AdaBoost提升简介
随机森林是通过一堆随机决策树来预测目标变量,还有一种方法是通过提升的方法。该方法里常用的是AdaBoost,这里通过对一系列弱的模型(浅些的决策树)就行迭代,每次迭代时对错分的样本给予更高关注以纠正模型。它的执行过程见下:
1、给每个样本初始的权重
,这里n是样本的总量。
2、训练这个弱的模型
3、针对每个样本做判断:
如果当前的弱模型预测
正确,则降低对应权重
的值反之当前的弱模型预测
错误,则增加对应权重
的值。4、训练新的弱模型,具有更大
的观测值具有更大的优先级。
5、重复3和4直至数据被很好的预测了。
在scikit-learn里我们用实例化的AdaBoost:AdaBoostClassifier、AdaBoostRegressor. 其中最重要的参数有base_estimator, n_estimators, and learning_rate其中
- base_estimator是指训练弱模型的算法,默认是决策树
- n_estimators迭代训练模型的个数
- learning_rate每个模型对权重的占比,默认是1.降低该值会使得权重升高或者使得模型训练变慢。
- loss参数仅适用于AdaBoostRegressor,是更新权重时的损失函数。默认是线性损失函数,也可以改成平方或者指数函数。
3 AdaBoost代码示例
# 加载相关包和数据
from sklearn.ensemble import AdaBoostClassifier
from sklearn import datasets
iris = datasets.load_iris()
features = iris.data
target = iris.target
#创建adaboost tree分类对象
adaboost = AdaBoostClassifier(random_state=0)
model = adaboost.fit(features, target)
4 总结
无