sklearn.ensemble.AdaBoostClassifier()函数解析(最清晰的解释)

欢迎关注WX公众号:【程序员管小亮】

sklearn.ensemble.AdaBoostClassifier()函数全称AdaBoost分类器。

class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, 
										learning_rate=1.0, algorithm=’SAMME.R’, 
										random_state=None)

参数

  • base_estimator: 可选参数,默认为DecisionTreeClassifier。理论上可以选择任何一个分类或者回归学习器,不过需要支持样本权重。我们常用的一般是CART决策树或者神经网络MLP。默认是决策树,即AdaBoostClassifier默认使用CART分类树DecisionTreeClassifier,而AdaBoostRegressor默认使用CART回归树DecisionTreeRegressor。另外有一个要注意的点是,如果我们选择的AdaBoostClassifier算法是SAMME.R,则我们的弱分类学习器还需要支持概率预测,也就是在scikit-learn中弱分类学习器对应的预测方法除了predict还需要有predict_proba。
  • algorithm: 可选参数,默认为SAMME.R。scikit-learn实现了两种Adaboost分类算法,SAMME和SAMME.R。两者的主要区别是弱学习器权重的度量,SAMME使用对样本集分类效果作为弱学习器权重,而SAMME.R使用了对样本集分类的预测概率大小来作为弱学习器权重。由于SAMME.R使用了概率度量的连续值,迭代一般比SAMME快,因此AdaBoostClassifier的默认算法algorithm的值也是SAMME.R。我们一般使用默认的SAMME.R就够了,但是要注意的是使用了SAMME.R, 则弱分类学习器参数base_estimator必须限制使用支持概率预测的分类器。SAMME算法则没有这个限制。
  • n_estimators: 整数型,可选参数,默认为50。弱学习器的最大迭代次数,或者说最大的弱学习器的个数。一般来说n_estimators太小,容易欠拟合,n_estimators太大,又容易过拟合,一般选择一个适中的数值。默认是50。在实际调参的过程中,我们常常将n_estimators和下面介绍的参数learning_rate一起考虑。
  • learning_rate: 浮点型,可选参数,默认为1.0。每个弱学习器的权重缩减系数,取值范围为0到1,对于同样的训练集拟合效果,较小的v意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。所以这两个参数n_estimators和learning_rate要一起调参。一般来说,可以从一个小一点的v开始调参,默认是1。
  • random_state: 整数型,可选参数,默认为None。如果RandomState的实例,random_state是随机数生成器; 如果None,则随机数生成器是由np.random使用的RandomState实例。

还有其他参数:
在这里插入图片描述

例子

>>> from sklearn.ensemble import AdaBoostClassifier
>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_samples=1000, n_features=4,
...                            n_informative=2, n_redundant=0,
...                            random_state=0, shuffle=False)
>>> clf = AdaBoostClassifier(n_estimators=100, random_state=0)
>>> clf.fit(X, y)  
AdaBoostClassifier(algorithm='SAMME.R', base_estimator=None,
        learning_rate=1.0, n_estimators=100, random_state=0)
>>> clf.feature_importances_  
array([0.28..., 0.42..., 0.14..., 0.16...])
>>> clf.predict([[0, 0, 0, 0]])
array([1])
>>> clf.score(X, y)  
0.983...

AdaBoost 分类器算法实现理论和代码在博客:《机器学习实战》学习笔记(七):利用AdaBoost 元算法提高分类性能

神经网络中的loss抖动是指在训练过程中模型的损失函数出现波动性变化的现象。这种抖动可能导致模型性能的下降或训练过程的不稳定。 出现神经网络loss抖动的原因有多种。首先,可能是学习率设置不合理。学习率过大会导致模型在训练过程中跳过优点,无法稳定地收敛;反之,学习率过小则可能导致训练过程缓慢甚至停滞不前。 其次,神经网络的模型复杂度和数据集的大小也会影响loss抖动。如果模型过于复杂而训练数据较少,模型很容易过拟合,导致loss抖动。解决这个问题的一个方法是增加训练数据或者减小模型复杂度。 此外,损失函数的选择和正则化方法也会对loss抖动产生影响。合适的损失函数能够更好地反映模型的预测误差,而正则化方法则可以减小过拟合风险。 后,优化算法的选择也可能导致loss抖动。一些常见的优化算法如随机梯度下降(SGD)是基于随机采样的,容易产生梯度的方差过大从而导致loss抖动。可以尝试使用其他优化算法或者调整算法的超参数来解决这个问题。 为了降低神经网络中loss抖动的影响,可以采取以下措施:恰当地设置学习率、增加训练数据或减小模型复杂度、选择合适的损失函数和正则化方法、调整优化算法及超参数。通过这些方法的综合应用,可以提高神经网络的训练稳定性和泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是管小亮

一口吃掉你的打赏,嗝~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值