一文搞懂:Adaboost及手推算法案例

站长亦新
站长亦新
站长亦新
81
文章
0
评论
2020年6月21日04:12:15 评论 326 1534字阅读5分6秒

boosting

Boosting 算法的特点在于:将表现一般的弱分类器通过组合变成更好的模型。代表自然就是我们的随即森林了。

GBDT和Adaboost是boost算法中比较常见的两种,这里主要讲解Adaboost。

Adaboost

Adaboost算法的核心就是两个权重。对于数据有一个权重,权重大的数据计算的损失就大;然后对于每一个弱分类器有一个权重,这个权重就是每一个弱分类器最终投票的比重。

【先给出Adaboost关键的公式】
\alpha_1=\frac{1}{2}ln(\frac{1-\epsilon_1}{\epsilon_1}) 分类器的投票权重
W_i=W_ie^{-\alpha_i y_i \hat{h}(x_i)} 更新样本的权重

【随即森林中最终投票每一个弱分类器的比重相同】

大概流程就是,现在有一个数据集,然后每个数据的比重都相同,然后训练了好几个不同的弱分类器。
1. 挑选错误率最低的弱分类器,然后通过【某种算法】得到这个弱分类器最终投票的比重,然后通过【某种算法】更新每一个数据的比重;
2. 因为每一个数据的比重更新了,所以再选择一个错误率最低的弱分类器,然后通过【某种算法】得到这个弱分类器最终投票的比重,然后通过【某种算法】更新每一个数据的比重;
3. 重复这个过程。


算法的流程:
一文搞懂:Adaboost及手推算法案例


这里给一个具体计算的例子:
假设这里有10个数据:

一文搞懂:Adaboost及手推算法案例

加号和减号分别代表不同的类别。然后每个类别有5个样本。

下面会给出3个弱分类器:
一文搞懂:Adaboost及手推算法案例

一文搞懂:Adaboost及手推算法案例

一文搞懂:Adaboost及手推算法案例

这三个分类器分别是h_1(x),h_2(x),h_3(x)
图中画圈的数据就是分类错误的数据。可以发现每个弱分类器都分错了3个。下面开始Adaboost的算法。

先计算三个弱分类器的错误率,因为一开始每个样本的权重都是0.1,每个分类器又都错了3个样本,所以错误率都是0.3。这里就随机选取第一个分类器作为错误率最低的那个好了。
我们这里通过第一个【某种算法】计算第一个弱分类器在最终的投票权重:
\alpha_1=\frac{1}{2}ln(\frac{1-\epsilon_1}{\epsilon_1})=0.5*ln(\frac{0.7}{0.3})=0.4236

然后通过这个\alpha_1=0.4236来更新每一个样本的权重。这也就是上面提到的第二个【某种算法】:
W(i)=W(i)*e^{-\alpha y_i \hat {h}(x_i)}

这啥意思的,现在假设第一个样本+1,这个样本的权重是0.1(更新前),然后这个样本在第一个分类器中是非类正确的,所以y_i \hat{h}(x_i)=1,所以这个样本更新后的权重就是0.1e^{-0.4236}=0.0655

当然,对于+3这个样本,第一个分类器就分类错误,所以y_i \hat{h}(x_i)=-1,所以呢这个样本更新后的权重就是:0.1e^{0.4236}=0.1527

下面经过第一个分类器之后的样本的权重:
一文搞懂:Adaboost及手推算法案例

然后再计算每一个分类器的基于更新之后样本权重的错误率:
一文搞懂:Adaboost及手推算法案例

这一次选的是第二个分类器,然后计算它的\alpha_2,然后再更新每一个样本的权重值:
一文搞懂:Adaboost及手推算法案例

然后是再寻找错误率最低的分类器:
一文搞懂:Adaboost及手推算法案例

到这一步的时候,我们已经有了\alpha_1,\alpha_2,\alpha_3,所以我们的adaboost已经得到了所有分类器的投票权重,所以最终的模型投票公式就是:
一文搞懂:Adaboost及手推算法案例


喜欢的话请关注我们的微信公众号~【你好世界炼丹师】。

  • 公众号主要讲统计学,数据科学,机器学习,深度学习,以及一些参加Kaggle竞赛的经验。
  • 公众号内容建议作为课后的一些相关知识的补充,饭后甜点。
  • 此外,为了不过多打扰,公众号每周推送一次,每次4~6篇精选文章。

微信搜索公众号:你好世界炼丹师。期待您的关注。
一文搞懂:Adaboost及手推算法案例

weinxin
我的微信
微信扫一扫
站长亦新
  • 本文由 发表于 2020年6月21日04:12:15
  • 转载请务必保留本文链接:http://helloworld2020.net/482/
AI面试之SVM推导 机器学习

AI面试之SVM推导

SVM现在主流的有两个方法。一个是传统的推导,计算支持向量求解的方法,一个是近几年兴起的梯度下降的方法。 梯度下降方法的核心是使用了hinge loss作为损失函数,所以最近也有人提出的深度SVM其实...
一分钟区别:判别模型与生成模型 数据挖掘

一分钟区别:判别模型与生成模型

1. 直观理解 先给出最直观的理解: 【判别式模型】:要确定一个图片是猫还是狗,用判别模型的方法就是根据数据集X训练模,然后把新的图片输入到模型中,模型给出这个图片是每个类别的概率。 【生成式模型】:...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: