0
点赞
收藏
分享

微信扫一扫

Python AdaBoost提升算法


                                   Python AdaBoost提升算法

1 声明

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。

2 AdaBoost提升简介

随机森林是通过一堆随机决策树来预测目标变量,还有一种方法是通过提升的方法。该方法里常用的是AdaBoost,这里通过对一系列弱的模型(浅些的决策树)就行迭代,每次迭代时对错分的样本给予更高关注以纠正模型。它的执行过程见下:

1、给每个样本初始的权重

Python AdaBoost提升算法_迭代

,这里n是样本的总量。

2、训练这个弱的模型

3、针对每个样本做判断:

如果当前的弱模型预测

Python AdaBoost提升算法_决策树_02

正确,则降低对应权重

Python AdaBoost提升算法_权重_03

的值反之当前的弱模型预测

Python AdaBoost提升算法_决策树_04

错误,则增加对应权重

Python AdaBoost提升算法_迭代_05

的值。4、训练新的弱模型,具有更大

Python AdaBoost提升算法_迭代_06

的观测值具有更大的优先级。

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 总结

 

 

举报

相关推荐

0 条评论