adaboost算法详解及python实现python机器学习系列(十八)

侯小啾 侯小啾     2022-11-10     521

关键词:

文章目录


1. AdaBoost 算法简介

Boosting是机器学习的三大框架之一,其特点是,训练过程中的诸多弱模型,彼此之间有着强依赖关系。Boost也被称为增强学习或提升法。典型的代表算法是AdaBoost算法。AdaBoost算法的核心思想是:将关注点放在预测错误的样本上。

AdaBoost 算法可以概括如下:

①假设共有m个样本数据,首先根据需求划分好训练集数据,按照一般思路,训练出第一个弱模型 G 1 ( x ) G_1(x) G1(x)

②对第一个弱模型 G 1 ( x ) G_1(x) G1(x),计算该弱模型的分类错误率(或者说带权错误率,但是因为第一次迭代训练是均等权重的,所以第一次迭代的带权错误率等于普通的分类错误率)。
通过计算的分类错误率来确定该弱模型的权重,并更新训练集数据的权值分布。
(这里涉及两个权重不要弄混,先是模型权重,再是样本数据权重)
记模型 G 1 ( x ) G_1(x) G1(x)的权重为 α 1 \\alpha_1 α1,则 F 1 ( x ) = 0 + α 1 G 1 ( x ) F_1(x)=0+\\alpha_1G_1(x) F1(x)=0+α1G1(x)(因为是第一次迭代,所以上一次可以暂记为0)。

③开始第二次迭代,使用更新后的样本权重再次训练一个弱模型,然后将该弱模型与上一次训练的弱模型 G 2 ( x ) G_2(x) G2(x),按照一定的规则得到的模型权重进行复合, F 2 ( x ) = F 1 ( x ) + α 2 G 2 ( x ) F_2(x)=F_1(x) + \\alpha_2 G_2(x) F2(x)=F1(x)+α2G2(x)
遂得到模型 F 2 ( x ) F_2(x) F2(x)
这里的重点,就在于 α 1 , α 2 \\alpha_1,\\alpha_2 α1α2等,这些模型的权重的确定。

④循环以上过程n次(从第二次开始,每次计算的模型错误率,是带权错误率)。
(n的值是自己指定的,希望的迭代次数)。
直到得到模型 F n ( x ) = F n − 1 ( x ) + G n ( x ) F_n(x)=F_n-1(x)+G_n(x) Fn(x)=Fn1(x)+Gn(x),即为AdaBoost算法的输出模型,此时的模型 F n ( x ) F_n(x) Fn(x)是一个强训练模型。


2. AdaBoost算法 逻辑详解

按照以上思路,下边开始针对其中涉及的细节进行详解。

2.1 数据


首先要面对的,是数据。假设样本数据集D中共有m个样本,并表示如下:

           D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) D=\\(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\\ D=(x1,y1),(x2,y2),...,(xm,ym)

其中 x i x_i xi是特征向量, y i y_i yi是标签。标签的取值可以是1和-1。

AdaBoost算法每次训练模型的时候,使用的可以是从m个样本中抽样抽出的部分样本,但是预测的时候必须统一,测试集必须是固定的m个样本。


2.2 带权错误率

使用AdaBoost算法,每次训练完弱模型后,需要进一步计算出其带权错误率。
带权错误率的公式如下:
             ε j = ∑ i = 1 m ω i j I f j ( x ) ≠ y i \\varepsilon_j=\\sum_i=1^m \\omega_ijI\\f_j(x)≠y_i\\ εj=i=1mωijIfj(x)=yi

如何理解这个式子:其中 I ( ) I() I()是指示函数,即,当括号内条件满足时值为1,当不满足条件时值为0。
这里括号内的条件,即表示对某样本的分类不正确。可以看出,预测错误的样本越多,该值则越大。


ω i j \\omega_ij ωij即第j次迭代中的第i个样本的权重。
在第一次迭代中第一次训练弱模型时,每个样本的初始权重是均等的,均为 1 m \\frac1m m1

即每个样本被选中的概率是均等的。AdaBoost算法首先基于该均等的权重训练一个简单的弱学习器。
且因为均等权重,在第一次迭代的输出的弱分类器的带权错误率,是刚好等于预测错误的个数在m个样本中所占的比重的。(即带权错误率等于普通的分类错误率)。


2.3 损失函数 与 确定样本权重

AdaBoost算法的损失函数为指数损失。

以第k次迭代为例,第k次迭代将得到模型 F k ( x ) = F k − 1 ( x ) + α k G ( x ) F_k(x)=F_k-1(x)+\\alpha_kG(x) Fk(x)=Fk1(x)+αkG(x),则
F k ( x ) F_k(x) Fk(x)的损失函数函数为:

      L o s s = ∑ i = 1 m e − y i F k ( x i ) Loss=\\sum_i=1^me^-y_iF_k(x_i) Loss=i=1meyiFk(xi)

     经简单分析,可以看出,对于每个样本
     若预测正确,则指数为负,损失只增加 1 e \\frac1e e1
     若预测错误,则损失函数的损失会增加e。

 将该损失函数进行进一步展开得:

      L o s s = ∑ i = 1 m e − y i F k ( x i ) Loss=\\sum_i=1^me^-y_iF_k(x_i) Loss=i=1meyiFk(xi)

         = ∑ i = 1 m e − y i ( F k − 1 ( x i ) + α k G ( x i ) ) =\\sum_i=1^me^-y_i(F_k-1(x_i)+\\alpha_kG(x_i)) =i=1meyi(Fk1adaboost算法详解(haar人脸检测)(代码片段)

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。Adaboost算法本身是通过改变数据分布来实现的,它根据每次训... 查看详情

adaboost算法的原理推导及解释(代码片段)

文章目录Adaboost算法的原理推导及解释前置知识:Boosting概述Boosting方法的基本思想Boosting方法的的学习方法核心部分:Adaboost算法的原理推导和解释Adaboost算法的基本思想Adaboost算法的算法流程Adaboost算法的原理推导及解释... 查看详情

adaboost算法的原理推导及解释(代码片段)

文章目录Adaboost算法的原理推导及解释前置知识:Boosting概述Boosting方法的基本思想Boosting方法的的学习方法核心部分:Adaboost算法的原理推导和解释Adaboost算法的基本思想Adaboost算法的算法流程Adaboost算法的原理推导及解释... 查看详情

一文详解机器学习中最好用的提升方法:boosting与adaboost(代码片段)

...f0c;它们都强大无比。而本文作者从最基础的Boosting概念到AdaBoost算法进行了详细的介绍,并展示了如何实现AdaBoost,这些都是走进集成方法大家族的敲门砖。最近,Boosting技术在Kaggle竞赛以及其它预测分析任务中大行其... 查看详情

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

...成更好的模型。代表自然就是我们的随即森林了。GBDT和Adaboost是boost算法中比较常见的两种,这里主要讲解Adaboost。AdaboostAdaboost算法的核心就是两个权重。对于数据有一个权重,权重大的数据计算的损失就大;然后对于每一个弱... 查看详情

人脸验证算法jointbayesian详解及实现(python版)

人脸验证算法JointBayesian详解及实现(Python版)Tags:JointBayesianDeepLearningPython本博客仅为作者记录笔记之用,不免有很多细节不对之处。还望各位看官能够见谅,欢迎批评指正。博客虽水,然亦博主之苦劳也... 查看详情

adaboost算法的原理与推导——转载及修改完善

《Adaboost算法的原理与推导》一文为他人所写,原文链接: http://blog.csdn.net/v_july_v/article/details/40718799另外此文大部分是摘录李航的《统计学笔记》一书,原书下载链接:http://vdisk.weibo.com/s/z4UjMcqGpoNTw?from=page_100505_profile&wvr=6... 查看详情

apache hama 是不是适合实现 adaboost 算法?

】apachehama是不是适合实现adaboost算法?【英文标题】:Isapachehamasuitableforimplementingadaboostalghoritm?apachehama是否适合实现adaboost算法?【发布时间】:2014-03-2718:53:54【问题描述】:我有兴趣在hadoop环境中实现adaboost算法。我进行了研... 查看详情

adaboost算法和matlab实现(代码片段)

 一、AdaBoost简介    Boosting,也称为增强学习或提升法,是一种重要的集成学习技术,能够将预测精度仅比随机猜度略高的弱学习器增强为预测精度高的强学习器,这在直接构造强学习器非常困难的情况下,为学... 查看详情

一文速学-时间序列分析算法之指数平滑法详解+python代码实现(代码片段)

...,非常感谢参阅前言前两篇文章已经将时间序列分析算法的移动平均法系列讲的很详细清晰了:一文速学-时间序列分析算法之加权移动平均法详解+ 查看详情

python应用实战案例-pythongeopandas包详解(附大量案例及代码)(代码片段)

前言以下为博主为大家准备的人工智能&算法研究类精品专栏,喜欢的小伙伴自行下载。深度学习100例全系列详细教程 深度学习算法原理介绍及应用案例tensorflow从入门到精通100讲 深度学习框架TensorFlow的应用案例手把... 查看详情

adaboost对实际数据分类的julia实现

写在前面AdaBoost是机器学习领域一个很重要很流行的算法,而Julia是一门新兴的发展迅速的科学计算语言。本文将从一个实际例子出发,展示如何用Julia语言实现AdaBoost算法。什么是AdaBoost这方面的资料有很多,我将基于Hastie和Tibsh... 查看详情

吴裕雄python机器学习——集成学习adaboost算法回归模型(代码片段)

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportdatasets,ensemblefromsklearn.model_selectionimporttrain_test_splitdefload_data_classification():‘‘‘加载用于分类问题的数据集‘‘‘#使用scikit-learn自带的digits数据 查看详情

吴裕雄python机器学习——集成学习adaboost算法分类模型(代码片段)

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportdatasets,ensemblefromsklearn.model_selectionimporttrain_test_splitdefload_data_classification():‘‘‘加载用于分类问题的数据集‘‘‘#使用scikit-learn自带的digits数据 查看详情

一文速学-gbdt模型算法原理以及实现+python项目实战(代码片段)

...thon实现1.原始决策树累积2.sklearn前言上篇文章内容已经将Adaboost模型算法原理以及实现详细讲述实践了一遍,但是只是将了Adaboost模型分类功能,还有回归模型没有展示,下一篇我将展示如何使用Adaboost模型进行回归算... 查看详情

r数据分析之adaboost算法

Rattle实现AdaBoost算法Boosting算法是简单有效、易使用的建模方法。AdaBoost(自适应提升算法)通常被称作世界上现成的最好分类器。Boosting算法使用其他的弱学习算法建立多个模型,对数据集中对结果影响较大的对象增加权重,一... 查看详情

数字图像处理:opencv直方图均衡算法研究及模拟实现

一、引言在《数字图像处理:直方图均衡(HistogramEqualization)的原理及处理介绍》(链接:https://blog.csdn.net/LaoYuanPython/article/details/119857829)中介绍了数字图像处理中应用直方图均衡进行图像增强的原理、应用示例,在《数字图... 查看详情

隐马尔科夫模型hmm详解——python实现

目录学习算法Viterbi学习算法Baum-Welch学习算法python实现代码地址:https://gitee.com/liangcd/speech_learning/tree/master/HMMHMM基本概念、概率计算、预测算法请看上一篇文章,感谢您的阅读!学习算法已知观测序列O=(o1,o2,…,oT),b... 查看详情