AdaBoost用于回归步骤

AdaBoost算法在回归中的应用不同于分类,不直接调整样本权重,而是通过重采样来处理误差。在SKlearn中,AdaBoost回归利用有放回的重采样策略来适应无法接受权重的算法,如神经网络。最终,模型的预测结果是通过预测值的中位数得出,而非加权平均。这一方法对于理解AdaBoost在回归任务中的工作原理至关重要。
摘要由CSDN通过智能技术生成

AdaBoost回归

AdaBoost常用于分类,在回归中常常有几个问题让人迷惑。

  1. AdaBoost算法在每次迭代之后,会改变样本的权重分布。分类算法会把错误的样本权重加大,正确的样本权重减小。而回归当中,则会根据误差大小来决定权重改变多少。
    在《统计学习算法中》举的例子是以单层的CART分类树来解释的,每次迭代会根据误差权重的不同学习出新的Cart树,也就是说每个模型之间是存在差异的。但是对于无法接受样本权重的算法,例如神经网络等算法,每次迭代产生的模型岂不是一样?
    后来去翻阅了Sklearn的源代码,才发现回归中,是通过重采样的方式代替权重更新。

    代码中的这段就是用于重采样,输入sample_weight,有放回采样。

        bootstrap_idx = random_state.choice(
            np.arange(_num_samples(X)), size=_num_samples(X), replace=True,
            p=sample_weight
        )
  1. 最后的结合策略
    正如方法名字所言。得到预测的中位数。。。
    当然,网上也有一些博客中提到加权平均的。我是不太明白中位数是起到什么作用。
def _get_median_predict(self, X, limit):
    # Evaluate predictions of all estimators
    predictions = np.array([
        est.predict(X) for est in self.estimators_[:limit]]).T

    # Sort the predictions
    sorted_idx = np.argsort(predictions, axis=1)

    # Find index of median prediction for each sample
    weight_cdf = stable_cumsum(self
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值