【sklearn】AdaBoost

AdaBoost

1. 原理 & sklearn分类\回归接口

  • Boosting开山算法。
  • 在全样本上建立一棵决策树,根据该决策树的预测结果和损失函数值,增加被预测错误的样本在数据集中的权重,并让加权后的数据集被用于训练下一棵决策树。
  • 将后续建立的弱评估器的注意力引导到难以被正确分类的样本上。
  • 最终预测结果取所有基学习器的加权投票结果。
  • sklearn接口和参数:
    sklearn.ensemble.AdaBoostClassifier(base_estimator=None, *, n_estimators=50, learning_rate=1.0, algorithm=‘SAMME.R’, random_state=None)
    sklearn.ensemble.AdaBoostRegressor(base_estimator=None, *, n_estimators=50, learning_rate=1.0, loss=‘linear’, random_state=None)
'''
base_estimator 弱评估器
n_estimator 集成算法中弱评估器数量, 默认50
learning_rate 迭代中使用的学习率
algorithm(分类器专属) 指定分类ADB中使用的具体实现方法
loss(回归器专属) 指定回归ADB中使用的损失函数
random_state 控制每次建树前随机抽样过程的随机数种子
'''

知乎 - Adaboost 算法介绍(附常见面试题)

2. sklearn.ensemble.AdaBoostClassifier

2.1 导包 & 数据

from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_digits # 手写数字分类
# 用于回归,如房价预测
# from sklearn.ensemble import AdaBoostRegressor

data = load_digits()
X = data.data
y = data.target
print(X.shape,y.shape)
    (1797, 64) (1797,)    

2.2 参数详解 & 接口使用

2.2.1 接口使用
'''
base_estimator 弱评估器 
    AdaBoostClassifier 默认最大深度为1的树桩
    AdaBoostRegressor 默认最大深度为3的树苗
    clf.base_estimator_ 查看当前弱评估器
    clf.estimators_ 查看所有弱评估器
learing_rate 学习率η Ht(xi)=Ht-1(xi)+η*фt*ft(xi)
    控制集成过程中输出结果H(xi)的增长速度
    增长快所需n_estimator少,增长慢所需n_estimator多
    默认为1
n_estimators 最终形成评估器数量 默认50
'''
base_estimator = DecisionTreeClassifier(max_depth=10, max_features=30)
clf = AdaBoostClassifier(base_estimator=base_estimator, n_estimators=3)
clf = clf.fit(X, y)
2.2.2 learning_rate

在这里插入图片描述
Boosting算法往往需要在n_estimatorslearning_rate中做出权衡:
learning_rate控制Boosting集成过程中H(xi)的成长速度,
学习率大,每棵树结果较大,累加结果较快达到算法极限(H(xi)增长更快),所需n_estimators更少;
学习率小,每棵树结果较小,需要更多的树达到算法极限(H(xi)增长较快),所需n_estimators更多。
在这里插入图片描述

2.2.3 algorithm & loss

链接放这儿,先不细搞了。。。

2.3 查看生成的树

'''
若base_estimator指定random_state, 
不影响随机建树, 即后期生成的3棵决策树的随机种子不一样.
无法控制这个随机性.
'''
# 查看当前弱评估器
print(clf.base_estimator_)
# 查看所有弱评估器
print(clf.estimators_)
'''
DecisionTreeClassifier(max_depth=10, max_features=30)

[DecisionTreeClassifier(max_depth=10, max_features=30, random_state=1357504948)
,DecisionTreeClassifier(max_depth=10, max_features=30, random_state=477005128)
,DecisionTreeClassifier(max_depth=10, max_features=30, random_state=1473195767)
]
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值