AdaBoost元算法 —— 理论

在做重要决定时,大家可能都会考虑吸取多个专家而不是一个人的意见。机器学习也可以采用这种方式,这就是元算法(meta-algorithm)背后的思路。元算法是对其他算法进行组合的一种方式。AdaBoost便是一种最流行的元算法,该方法是机器学习工具箱中最强有力的工具之一。

目录

基于数据多重抽样的分类器

 bagging:基于数据随机重抽样的分类器构建方法

boosting

训练算法:基于错误提升分类器的性能


基于数据多重抽样的分类器

我们可以将不同分类器组合起来,而这种组合结果称为集成方法或者元算法

使用集成方法时可以有多种形式:

  • 不同算法的集成
  • 同一算法在不同配置下的集成
  • 数据集的不同部分分配给不同分类器之后的集成

AdaBoost

优点:泛化错误率低,易编码,可以应用在大部分分类器上,五参数调整

缺点:对离群点敏感

适用数据类型:数值型和标称型数据

 bagging:基于数据随机重抽样的分类器构建方法

自举汇聚法(bootstrap aggregating),也称bagging方法,是在从原始数据集选择S次后得到S个新数据集的一种技术。新数据集和原数据集的大小相等。每个数据集都是通过在原数据集中随机选择一个样本来进行替换得到的。这里的替换就意味着可以多次地选择同一样本。这一性质允许新数据集中可以有重复的值,而原始数据集的某些值在新集合中则不再出现。

在S个数据集建好之后,将某个学习算法分别作用于每个数据集就得到S个分类器。当我们要对新数据进行分类时,就可以应用这S个分类器。与此同时,选择分类器投票结果最多的类别作为最后的分类结果。

当然,还有一些更先进的bagging方法,比如随机森林。

boosting

boosting是一种和bagging类似的技术。不论是在boosting和bagging中,所使用的多个分类器的类型都是一致的。

  • boosting和bagging的不同点在于:
    • bagging中,不同的分类器时通过串行训练而获得的,每个新分类器都是根据已训练出的跟类其的性能进行训练。bagging中的分类器的权重是相等的。
    • boosting是通过集中关注被已有分类器错分的数据来获得新的分类器。boosting中分类器的权重是不相等的,每个权重代表的是其对应分类器在上一轮迭代中的成功度。

boosting方法的一个最流行的版本便是AdaBoost.

训练算法:基于错误提升分类器的性能

AdaBoost是adaptive boosting (自适应boosting)的缩写,其运行过程如下:

训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值,首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练中,将会重新调整每个样本的权重,其中,第一次分对的样本的权重将会降低,而第一次分错的样本的权重将会提高。为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器都分配了一个权重值alpha,这些alpha值是基于每个弱分类器的错误率进行计算的。其中,错误率定义为:

\epsilon = \frac{\textup{number of samples classified incorrectly}}{\textup{number of allsamples}}

而alpha的计算公式如下:

\alpha=\frac{1}{2}\ln (\frac{1-\epsilon}{\epsilon})

计算出alpha值之后,可以对权重向量D进行更新,以使得那些正确分类的样本的权重降低而错分样本的权重升高。D的计算方法如下:

  • 如果某个样本被正确分类,那么该样本的权重更改为:D_i^{(t+1)}=\frac{D_i^{(t)}e^{-\alpha}}{\textup{Sum}(D)}
  • 如果某个样本被分类错误,那么该样本的权重更改为:D_i^{(t+1)}=\frac{D_i^{(t)}e^{\alpha}}{\textup{Sum}(D)}

在计算出D之后,AdaBoost又开始进入下一轮迭代。AdaBoost算法会不断重复训练和调整权重的过程,知道训练错误率为0或者弱分类器的数目达到用户的指定值为止。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AdaBoost回归算法是一种集成学习算法,用于解决回归问题。它通过组合多个弱回归器来构建一个强回归器。每个弱回归器都是在前一个弱回归器的残差上进行训练,以逐步减小误差。AdaBoost回归算法的核心思想是通过加权平均的方式将多个弱回归器的预测结果进行组合,从而得到最终的回归结果。 在sklearn中,AdaBoost回归算法的实现可以使用AdaBoostRegressor类。这个类提供了一些参数和方法,用于调整和使用AdaBoost回归算法。 以下是使用AdaBoostRegressor完成回归任务的示例代码: ```python from sklearn.ensemble import AdaBoostRegressor from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt # 创建回归数据集 X, y = make_regression(n_samples=100, n_features=1, noise=0.1) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 创建AdaBoost回归器 regressor = AdaBoostRegressor(n_estimators=100, learning_rate=0.1) # 拟合训练数据 regressor.fit(X_train, y_train) # 预测测试数据 y_pred = regressor.predict(X_test) # 绘制结果 plt.scatter(X_test, y_test, color='blue', label='Actual') plt.scatter(X_test, y_pred, color='red', label='Predicted') plt.legend() plt.show() ``` 这段代码首先使用make_regression函数创建一个回归数据集,然后将数据集分为训练集和测试集。接下来,创建一个AdaBoost回归器,并使用fit方法拟合训练数据。最后,使用predict方法预测测试数据,并使用matplotlib库绘制实际值和预测值的散点图。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值