精华内容
下载资源
问答
  • 04-02 AdaBoost算法

    2020-03-03 09:18:47
    文章目录AdaBoost算法AdaBoost算法学习目标AdaBoost算法详解Boosting算法回顾AdaBoost算法AdaBoost算法目标函数优化AdaBoost算法流程输入输出强分类器流程强回归器流程AdaBoost算法优缺点优点缺点AdaBoost算法 ...

    AdaBoost算法

    在这里插入图片描述

      集成学习中弱学习器之间有强依赖关系的,称之为Boosting系列算法,而AdaBoost则是Boosting系列算法中最著名的算法之一。

      AdaBoost算法强大之处在于既可以解决分类问题,又可以解决回归问题。

    AdaBoost算法学习目标

    1. AdaBoost算法目标函数优化
    2. 强分类器和强回归器流程
    3. AdaBoost算法优缺点

    AdaBoost算法详解

    Boosting算法回顾

    在这里插入图片描述

      Boosting算法的流程是:首先训练处一个弱学习器,根据弱学习器的误差率更新训练样本的权重,然后基于调整权重后的训练集训练第二个弱学习器,直到弱学习器达到事先指定的数目T,停止算法。

      对于Boosting算法的流程,可以看到如果我们解决以下4个问题,既可以得到完整的Boosting算法

    1. 弱学习器的误差率
    2. 训练样本的权重 w w w更新方法
    3. 更新样本权重的方法
    4. 结合策略

    AdaBoost算法

      上面讲到了Boosting算法需要解决的4个问题,因为AdaBoost算法隶属于Boosting算法,那么AdaBoost算法也需要解决这4个问题,其实也可以说成只要是Boosting系列的算法,都需要解决这4个问题。

    AdaBoost算法目标函数优化

      AdaBoost算法可以理解成模型是加法模型、目标函数是指数函数、学习算法是前向分步算法时的学习方法。其中加法模型可以理解成强学习器是由之前所有的弱学习器加权平均得到的;前向分步算法则可以理解成弱学习器训练数据的权重通过前一个弱学习器更新。

      AdaBoost算法的模型是加法模型,即强学习器的模型为
    f ( x ) = ∑ k = 1 K α k G k ( x ) f(x) = \sum_{k=1}^K \alpha_kG_k(x) f(x)=k=1KαkGk(x)
    其中 K K K K K K个弱学习器。

      AdaBoost算法的事前向分步算法,即经过 k − 1 k-1 k1次迭代后,第 k − 1 k-1 k1轮后强学习器为
    KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ f_{k-1}(x) & =…
    经过 k k k次迭代后,第 k k k轮后强学习器为
    f k ( x ) = ∑ i = 1 k α i G i ( x ) = f k − 1 ( x ) + α k G k ( x ) f_k(x) = \sum_{i=1}^k \alpha_i G_i(x) = f_{k-1}(x) + \alpha_kG_k(x) fk(x)=i=1kαiGi(x)=fk1(x)+αkGk(x)
      得到第 k k k轮强学习器后,我们知道AdaBoost的目标函数是指数函数,因此我们的目标是使前向分步算法得到的 α k \alpha_k αk G k ( x ) G_k(x) Gk(x)使 f k ( x ) f_k(x) fk(x)在训练数据集上的指数损失最小,即AdaBoost的目标函数为
    KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ (\alpha_k,G_k(…
      由于 e [ − y i ( f k − 1 ( x i ) ) ] e^{[{-y_i(f_{k-1}(x_i))}]} e[yi(fk1(xi))]的值不依赖 α , G \alpha,G α,G,因此他与最小化无关,它仅仅依赖于随着每一轮迭代而变化的 f k − 1 ( x ) f_{k-1}(x) fk1(x),因此可以把 e [ − y i ( f k − 1 ( x i ) ) ] e^{[{-y_i(f_{k-1}(x_i))}]} e[yi(fk1(xi))]看做 w ‾ k i \overline{w}_{ki} wki,即目标函数变为
    ( α k , G k ( x ) ) = arg ⁡   m i n ⏟ α , G ∑ i = 1 m w ‾ k i e [ − y i ( α G ( x i ) ) ] (\alpha_k,G_k(x)) = \underbrace{\arg\,min}_{\alpha,G}\sum_{i=1}^m \overline{w}_{ki} e^{[{-y_i(\alpha{G(x_i)}})]} (αk,Gk(x))=α,G argmini=1mwkie[yi(αG(xi))]
      现在的目标就是最优化AdaBoost的目标函数得到能使目标函数最小化的 α k ∗ \alpha_k^* αk G k ∗ ( x ) G_k^*(x) Gk(x)

      首先,对于任意的 α > 0 \alpha>0 α>0 G k ∗ ( x ) G_k^*(x) Gk(x)表示第 k k k轮能够使得加训练数据分类误差率最小的基本分类器,分类误差率为
    e k = ∑ i = 1 m w ‾ k i I ( y i ≠ G k ( x i ) ) ∑ i = 1 m w ‾ k i = ∑ i = 1 m w ‾ k i I ( y i ≠ G k ( x i ) ) = ∑ y i ≠ G k ( x i ) w ‾ k i e_k = {\frac{\sum_{i=1}^m\overline{w}_{ki}I(y_i\neq{G_k(x_i)})}{\sum_{i=1}^m\overline{w}_{ki}}} = \sum_{i=1}^m\overline{w}_{ki}I(y_i\neq{G_k(x_i)}) = \sum_{{y_i}\neq{G_k(x_i)}}\overline{w}_{ki} ek=i=1mwkii=1mwkiI(yi=Gk(xi))=i=1mwkiI(yi=Gk(xi))=yi=Gk(xi)wki
    G k ∗ ( x ) G_k^*(x) Gk(x)
    G k ∗ ( x ) = a r g   min ⁡ ⏟ G ∑ i = 1 m w ‾ k i I ( y i ≠ G ( x i ) ) G_k^*(x) = \underbrace{arg\,\min}_{G}\sum_{i=1}^m \overline{w}_{ki} I(y_i\neq{G(x_i))} Gk(x)=G argmini=1mwkiI(yi=G(xi))
       G k ∗ ( x ) G_k^*(x) Gk(x)即为学习器的 G k ( x ) G_k(x) Gk(x),把 G k ( x ) G_k(x) Gk(x)代入目标函数对 α \alpha α求导并使导数为0,可以把上述的目标函数优化成
    KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ (\alpha_k,G_k(…
    既得最小的 α \alpha α
    α k ∗ = 1 2 log ⁡ 1 − e k e k \alpha_k^* = {\frac{1}{2}}\log{\frac{1-e_k}{e_k}} αk=21logek1ek
      最后看样本的权重更新,利用 f k ( x ) = f k − 1 ( x ) + α k G k ( x ) f_k(x)=f_{k-1}(x)+\alpha_kG_k(x) fk(x)=fk1(x)+αkGk(x) w ‾ k i = e [ − y i f k − 1 ( x i ) ] \overline{w}_{ki}=e^{[-y_if_{k-1}(x_i)]} wki=e[yifk1(xi)]可得
    KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \overline{w}_{…
       w ‾ k + 1 , i \overline{w}_{k+1,i} wk+1,i即接下来要讲到的AdaBoost算法的训练数据权重的更新公式。

    AdaBoost算法流程

    在这里插入图片描述
      AdaBoost算法既可以解决分类问题,又可以解决回归问题。对于分类问题,此处我们讲述的AdaBoost算法流程主要是针对二分类问题,二分类问题和多分类问题的区别主要在于弱分类器的系数上,本文会介绍AdaBoost SAMME算法如何计算弱分类器的系数;对于回归问题,由于AdaBoost用来解决回归问题的变种有很多,本文只对AdaBoost R2算法做一个介绍。

    输入

       m m m个样本 n n n个特征的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\} T={(x1,y1),(x2,y2),,(xm,ym)}

      针对二分类问题, y i ∈ Y = { 1 , − 1 } y_i\in{Y=\{1,-1\}} yiY={1,1}

    输出

      最终强学习器 G ( x ) G(x) G(x)

    强分类器流程

    1. 初始化训练数据的权重
      D 1 = ( w 11 , ⋯   , w 1 i , ⋯   , w 1 m ) , w 1 i = 1 m , i = 1 , 2 , ⋯   , m D_1 = (w_{11},\cdots,w_{1i},\cdots,w_{1m}),\quad{w_{1i}={\frac{1}{m}},\quad{i=1,2,\cdots,m}} D1=(w11,,w1i,,w1m),w1i=m1,i=1,2,,m
    2. 生成弱分类器
      G k ( x ) , k = 1 , 2 , ⋯   , K G_k(x),\quad{k=1,2,\cdots,K} Gk(x),k=1,2,,K
    3. 计算弱分类器 G k ( x ) G_k(x) Gk(x)在训练集上的分类误差率为
      KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ e_k & = \sum_{…
    4. 计算 G k ( x ) G_k(x) Gk(x)的权重系数
      KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & \alpha_k={\f…
        二分类问题的权重系数中,可以看出如果分类误差率 e k e_k ek越大,则对应的弱分类器的权重系数 α k \alpha_k αk越小,即误差率小的弱分类器权重系数越大。

      多分类问题使用的是AdaBoost SAMME算法,其中 R R R为类别数,如果 R = 2 R=2 R=2,则该多元分类的权重系数将变成二元分类的权重系数。
    5. 更新训练数据的权重
    KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & D_{k+1} = (w…
      其中 Z k Z_k Zk是规范因子
    Z k = ∑ i = 1 m w k i e − α k y i G k ( x i ) Z_k=\sum_{i=1}^mw_{ki}e^{-\alpha_ky_iG_k(x_i)} Zk=i=1mwkieαkyiGk(xi)
      从 w k + 1 , i w_{k+1,i} wk+1,i的计算公式中可以看出,如果第 i i i个样本分类错误,则 y i G k ( x i ) < 0 y_iG_k(x_i)<0 yiGk(xi)<0,导致样本的权重在第 k + 1 k+1 k+1个弱分类器中变大,反之,则样本权重在第 k + 1 k+1 k+1个弱分类器中变小。
    6. 结合策略
    KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & f(x)=\sum_{k…

    强回归器流程

    1. 初始化训练数据的权重
      D 1 = ( w 11 , ⋯   , w 1 i , ⋯   , w 1 m ) , w 1 i = 1 m , i = 1 , 2 , ⋯   , m D_1 = (w_{11},\cdots,w_{1i},\cdots,w_{1m}),\quad{w_{1i}={\frac{1}{m}},\quad{i=1,2,\cdots,m}} D1=(w11,,w1i,,w1m),w1i=m1,i=1,2,,m
    2. 生成弱分类器
      G k ( x ) , k = 1 , 2 , ⋯   , K G_k(x),\quad{k=1,2,\cdots,K} Gk(x),k=1,2,,K
    3. 计算弱回归器 G k ( x ) G_k(x) Gk(x)在训练集上的最大误差
      E k = max ⁡ ∣ y i − G k ( x i ) ∣ , i = 1 , 2 , ⋯   , m E_k = \max|y_i-G_k(x_i)|,\quad{i=1,2,\cdots,m} Ek=maxyiGk(xi),i=1,2,,m
    4. 计算每个样本之间的相对误差
      e k i = ∣ y i − G k ( x i ) ∣ E k e_{ki}={\frac{|y_i-G_k(x_i)|}{E_k}} eki=EkyiGk(xi)
        此处也可以使用均方误差,即 e k i = ( y i − G k ( x i ) ) 2 E k 2 e_{ki}={\frac{(y_i-G_k(x_i))^2}{E_k^2}} eki=Ek2(yiGk(xi))2
    5. 计算第 k k k弱回归器的误差率和权重系数
      KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ & e_k = \sum_{…
    6. 更新训练数据的权重
      w k + 1 , i = w k i Z k α k 1 − e k i w_{k+1,i} = {\frac{w_{ki}}{Z_k}\alpha_k^{1-e_{ki}}} wk+1,i=Zkwkiαk1eki
        其中 Z k Z_k Zk是规范因子
      Z k = ∑ i = 1 m w k i α k 1 − e k i Z_k = \sum_{i=1}^m w_{ki}\alpha_k^{1-e_{ki}} Zk=i=1mwkiαk1eki
    7. 结合策略
      G ( x ) = G k ∗ ( x ) G(x) = G_{k^*}(x) G(x)=Gk(x)
        其中 G k ∗ ( x ) G_{k^*}(x) Gk(x)是所有 ln ⁡ 1 α k , k = 1 , 2 , ⋯   , K \ln{\frac{1}{\alpha_k}},\quad{k=1,2,\cdots,K} lnαk1,k=1,2,,K的中位数对应序号 k ∗ k^* k对应的弱回归器

    AdaBoost算法优缺点

    优点

    1. 不容易过拟合
    2. 分类精准度高
    3. 由于弱分类器既可以是分类器又可以是回归器,使用灵活

    缺点

    1. 由于是对训练数据加权,有可能会赋予训练数据中的异常值较高的权重,影响模型的准确度

    小结

      AdaBoost算法并没有使用较深的数学知识,而是推导过程涉及较为复杂的逻辑。如果看完一遍还不是很理解,需要自己多多揣摩。

      AdaBoost算法目前是一个比较流行的Boosting算法,他的弱学习器既可以是回归器,又可以是分类器,这也是AdaBoost较为强大的一点。虽然理论上任何学习器都可以作为AdaBoost的弱学习器,但是AdaBoost算法用的较多的弱学习器一般还是决策树和神经网络。

      相信有了第一个集成算法AdaBoost的基础,对于接下来的第二个用的较为广泛的Boosting系列算法你也能很快熟悉他,即梯度提升树(gradient boosting decision tree,GBDT)

    在这里插入图片描述

    展开全文
  • adaboost算法

    2017-09-26 01:12:00
    预备知识 强学习与弱学习 一个概念是强可学习的充分必要条件是这个概念是弱可学的。 分类 对于分类问题,提升算法通过组合...adaboost算法 损失函数 设\((x_1, y_1),(x_2, y_2),(x_3, y_3), \cdots, (x_n, y_n)\)是...

    预备知识

    • 强学习与弱学习
      一个概念是强可学习的充分必要条件是这个概念是弱可学的。
    • 分类
      对于分类问题,提升算法通过组合多个较为容易学习到的弱分类器构成一个强分类器。
    • 关键问题
      • 每一轮训练数据的权值或概率分布确定;
      • 弱分类器构建强分类器的方式。

    adaboost算法

    损失函数

    \((x_1, y_1),(x_2, y_2),(x_3, y_3), \cdots, (x_n, y_n)\)是一组样本\(x_i\)是特征向量,\(y_i\)是类别标签,分类问题的目标函数为:
    \[\min \limits_{G} \frac{1}{n}\sum_{i=1}^{n}I(G(x_i) \neq y_i)\]
    即需要训练出的分类器使得误分概率最小,\(I\)是示性函数。

    定理一(算法收敛)

    adaboost算法最终分类器的训练的误差界为:
    \[\frac{1}{n}\sum_{i=1}^{n}I(G(x_i) \neq y_i) \leq \frac{1}{n}\sum_{i=1}^{n}e^{-y_if(x_i)}=\prod_{m}Z_m\]
    其中\(G\)为最终分类器,\(f\)为多个弱分类器的线性组合,\(Z_m\)为第m轮训练中各样本点权值的线性组合且有\(Z_m \le 1\),该定理确保了算法在迭代过程的收敛性。

    定理二(二分类问题指数级收敛)

    针对二分类问题adaboost算法的训练误差界有以下性质:
    \[\prod_{m=1}^{M}Z_m=\prod_{m=1}^{M}[2\sqrt{e_m(1-e_m)}]=\prod_{m=1}^{M}\sqrt{1-4\gamma_{m}^{2}} \leq e^{-2\sum \limits_{m=1}^{M} \gamma_{m}^{2}}\]
    其中\(\gamma_{m}=\frac{1}{2} - e_m\), \(M\)总训练轮数, \(e_m =P(G_m(x_i) \neq y_i)=\sum \limits_{G_m(x_i) \neq y_i} w_{mi}\)即每轮训练中误分样本权值之和。\(e^{-2\sum \limits_{m=1}^{M} \gamma_{m}^{2}}\)确保了在训练过程中随着迭代次数得到增加模型误分概率呈指数级下降。

    算法步骤(来自于李航的《统计学习方法》)

    输入:数据集\(\{(x_1, y_1),(x_2, y_2),(x_3, y_3), \cdots, (x_N, y_N)\}\),其中\(x_i \in X \subseteq R^n\),\(y_i \in \{-1, 1\}\);弱分类器;
    输出:最终分类器\(G(x)\).

    1. 给初始数据设置权值,默认等概率。\[D_1=(w_{11},\cdots,w_{1i},\cdots,w_{1N}),w_{1i}=\frac{1}{N},i=1,2,3,\cdots,N\]
    2. 弱分类器训练及样本点权值更新:对\(M=1,2,\cdots,m\)
      1. 在具有权值\(D_m\)的数据集\(X\)上训练基本分类器:\[G_m(x):X\longrightarrow \{-1,1\}\]
      2. 计算分类器\(G_m(x)\)在具备权值\(D_m\)的数据集\(X\)上的分类误差率:\[e_m = P(G_m(x_i) \neq y_i) = \sum_{i=1}^{N}w_{mi}I(G(x_i) \neq y_i)\]
      3. 计算分类器\(G_m(x)\)的系数\[\alpha_m = \frac{1}{2}\log \frac{1-e_m}{e_m}\],上式\(\alpha_m\)是一个减函数,分类器的误分率越小,分类器的系数越大也就是在最终分类器中 的权值越大。
      4. 权值更新\[D_m=(w_{m+1,1},\cdots,w_{m+1,i},\cdots,w_{m+1,N})\],\[w_{m+1,i} = \frac{w_{mi}}{Z_m}e^{-\alpha_m y_i G_m(x_i)},i=1,2,3,\cdots,N\],其中\(Z_m\)是规范化因子\[Z_m = \sum_{i=1}^{N}e^{-\alpha_m y_i G_m(x_i)}\]

    3.组合步骤2中训练的弱分类器为强分类器\(G(x)\):\[f(x) = \sum_{m=1}^{M}\alpha_mG_m(x)\],\[G(x) = sign(f(x))=sign(\sum_{m=1}^{M}\alpha_mG_m(x))\]

    算法分析

    • adaboost算法的主要思想是将多个对局部样本具备较强反映的“弱分类器”组合为一个综合能力较强的“强分类器”;
    • 每个基本分类器的分类能力有强有弱,在最终分类器中其系数和分类能力强弱成正比例关系,此处以误分比例来衡量分类器的强与弱;
    • 区别与随机森林中的随机抽取样本训练局决策树,在adaboost中是通过样本点的权值控制分类器主要作用在哪些样本点上;
    • 对于正确分类的样本点\((x_i,y_i)\)\(y_i G_m(x_i)>1, e^{-\alpha_m y_i G_m(x_i)}>1\),反之则\(e^{-\alpha_m y_i G_m(x_i)}<1\),这样保证了在训练下一个基本分类器时此次被误分的样本点会被重点照顾;
    • 分类器的系数\(\alpha_m = \frac{1}{2}\log \frac{1-e_m}{e_m}\)合理的反映了分类能力强弱。
    • 最终的分类器\[G(x) = sign(\sum_{m=1}^{M}\alpha_mG_m(x))\]相当于让所有的弱分类器做了一次带权重的投票。

    转载于:https://www.cnblogs.com/crazysquirrel/p/7524127.html

    展开全文
  • AdaBoost算法有关内容

    2017-11-01 21:12:28
    AdaBoost算法

    AdaBoost算法有关内容

    网页搜索阶段

    在网页上输入“AdaBoost算法”后,打开推荐的前几个网页,了解一些基本的AdaBoost算法信息。
    在某个网页的开始,说到,要想了解AdaBoost算法,就要先有关于bagging和boosting的基础知识比较好,所以我先去了解bagging和boosting的信息。了解的时候,发现首先提到的是集成学习这个知识点,以及偏倚-方差这个概念。

    偏倚-方差分解

    (Bias-variance decomposition, BVD)

    具体内容,可以在Vpegasus的blog学习。(里面有一副图,感觉十分详细)

    偏倚(bias):预测值的期望(均值)与实际值之间的差值

    方差(variance):实际预测值与预测值的期望(均值)之间的差别

    集成学习(Ensemble Learning)——通俗一点,就是“三个臭皮匠,顶个诸葛亮”

    (南大周志华教授将Ensemble Learning翻译为集成学习)

    如果算法无论如何优化都无法达到我们的要求,又或者精准算法的实现或调优成本太大, 这时,我们就会想,能不能把几个算法或模型结合起来,以’集体’的力量来解决问题,这就是集成学习产生的原因。

    集成学习的思路:
    在对新的实例进行分类的时候,把若干个单个分类器集成起来,通过对多个分类器的分类结果进行某种组合来决定最终的分类,以取得比单个分类器更好的性能。如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。

    集成学习关于#怎么训练每个算法#?和#怎么融合每个算法?#,主要有两种思路, 一种是bagging, 一种是boosting, 本质上分别是对于方差, 偏倚的不同优化方式。

    集成学习的关键:围绕学习器的差异和强度

    集成学习的一些进展:
    引入半监督学习可以不牺牲个体学习器精度就能提升多样性(diversity),设计结果——UDEED算法

    Ps:集成学习者认为: 只要允许我使用多个学习器,就能把弱学习器提升到足够强,根本不需要什么无标记样本。半监督学习者认为: 只要能让我使用无标记样本,就能把学习器提升到足够强,哪需要什么多学习器。双方各执一词,真是老死不相往来的节奏。

    (以上的部分内容摘自Vpegasus的blog机器学习刀光剑影 之 屠龙刀

    bagging

    bagging 是并行式集成学习, 也可以说是投票式(voting)式学习. 以##少数服从多数##的原则来进行表决.

    bagging有两个关键点:自助采样和投票

    自助采样
    Bagging是多个学习器组合的集成学习, 每个学习器(称为基学习器) 都要独立训练, 每个基学习器的输入数据是有放回的从样本中抽取子样本(subsampling), 数量一般要求同原样本的数据量(个数) 一致.(ps: 每个个体被抽到的概率是1−(1−1n)n≈63.2%)

    投票
    当每个基学习器训练完成后,对每个个体进行(民主)投票表决, 比如分类, 得票最多的类别即为此个体的类别.

    (这一部分摘自Vpegasus的blog

    关于AdaBoost算法的内容,推荐一篇文章

    初次学习,定有许多地方存在不少缺漏或错误,敬请指正~

    展开全文
  • AdaBoost算法概述

    2021-04-29 20:20:09
    详细介绍参考Adaboost入门教程——最通俗易懂的原理介绍(图文实例)和集成学习之Adaboost算法原理结 基本原理 Adaboost算法基本原理就是将多个弱分类器(弱分类器一般选用单层决策树)进行合理的结合,使其成为...

    本文为本人另两篇博客机器学习/计算机视觉(cv)实习面试资料整理(附字节、阿里、腾讯、美团面经)机器学习知识点整理以及集成树知识点概括下的子内容,有需要的朋友按需自取~

    另:本文只是知识点的整理概括,更为详细的可以参考我每个部分给出的链接~

    详细介绍参考Adaboost入门教程——最通俗易懂的原理介绍(图文实例)AdaBoost与gbdt理解集成学习之Adaboost算法原理小结

    基本原理

    • Adaboost算法基本原理就是将多个弱分类器(弱分类器一般选用单层决策树)进行合理的结合,使其成为一个强分类器;
    • Adaboost采用迭代的思想,每次迭代只训练一个弱分类器,训练好的弱分类器将参与下一次迭代的使用。也就是说,在第N次迭代中,一共就有N个弱分类器,其中N-1个是以前训练好的,其各种参数都不再改变,本次训练第N个分类器。其中弱分类器的关系是第N个弱分类器更可能分对前N-1个弱分类器没分对的数据,最终分类输出要看这N个分类器的综合效果;
    • 原始的AdaBoost算法是在算法开始的时候,为每一个样本赋上一个权重值,初始的时候,大家都是一样重要的。在每一步训练中得到的模型,会使得数据点的估计有对有错,我们就在每一步结束后,增加分错的点的权重,减少分对的点的权重,这样使得某些点如果老是被分错,那么就会被“重点关注”,也就被赋上一个很高的权重。然后等进行了N次迭代(由用户指定),将会得到N个简单的分类器(basic learner),然后我们将它们组合起来(比如说可以对它们进行加权、或者让它们进行投票等),得到一个最终的模型;

    算法步骤

    Adaboost算法可以简述为三个步骤:

    1. 首先,是初始化训练数据的权值分布D1。假设有N个训练样本数据,则每一个训练样本最开始时,都被赋予相同的权值:w1=1/N;
    2. 然后,训练弱分类器hi。具体训练过程中是:如果某个训练样本点,被弱分类器hi准确地分类,那么在构造下一个训练集中,它对应的权值要减小;相反,如果某个训练样本点被错误分类,那么它的权值就应该增大。权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去;
    3. 最后,将各个训练得到的弱分类器组合成一个强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用;

    换而言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

    损失函数

    Adaboost损失函数为指数函数,即定义损失函数为:
    在这里插入图片描述

    正则化

    为了防止Adaboost过拟合,我们通常也会加入正则化项,这个正则化项我们通常称为步长(learning rate)。定义为ν,对于前面的弱学习器的迭代:
    在这里插入图片描述
    如果我们加上了正则化项,则有:
    在这里插入图片描述
    ν 的取值范围为0<ν≤1。对于同样的训练集学习效果,较小的ν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果;

    主要优点

    • Adaboost作为分类器时,分类精度很高;
    • 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活;
    • 作为简单的二元分类器时,构造简单,结果可理解;
    • 不容易发生过拟合;

    主要缺点

    • 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性;

    本人关于树的其他文章

    展开全文
  • Adaboost 算法

    2015-03-30 15:07:03
    转自:... Adaboost 算法  机器学习是利用一些方法来使机器实现人的学习行为,以便获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。  AdaBoost全名“adaptive Boost”   一 B
  • 实战 | AdaBoost算法

    2020-03-24 20:11:03
    1. 写在前面 今天的主角AdaBoost算法,这是集成方法的一种方式,通过今天的学习,快速Get到AdaBoost的原理,并最后运用AdaBoost算法实现对波士顿房价的预测。 现在一...
  • Adaboost算法多类问题Matlab实现 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 一种adaboost多类分类算法Matlab实现 一...
  • AdaBoost算法系列1

    千次阅读 2014-10-09 22:36:17
    AdaBoost算法系列1
  • 理解AdaBoost算法

    千次阅读 2018-09-04 15:21:47
    其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。 书的购买链接 书的勘误,优化,源代码资源 与随机森林一样,Boosting...
  • Adaboost算法原理分析

    2018-08-13 13:18:14
    Adaboost算法原理分析和实例+代码(简明易懂)  转自 http://blog.csdn.net/guyuealian/article/details/70995333  本人最初了解AdaBoost算法着实是花了几天时间,才明白他的基本原理。也许是自己能力有限吧,很...
  • AdaBoost算法(一)——基础知识

    千次阅读 2019-05-08 21:09:08
    AdaBoost算法(一)——基础知识篇 集成学习系列博客: 集成学习(ensemble learning)基础知识 随机森林(random forest) AdaBoost算法(一)——基础知识篇 在前面博客集成学习(ensemble learning)基础知识中...
  • Adaboost算法学习

    千次阅读 2015-12-18 14:38:25
    目前因为做人脸识别的一个项目,用到了AdaBoost的人脸识别算法,因为在网上找到的所有的AdaBoost的简介都不是很清楚,让我看看头脑发昏,所以在这里打算花费比较长的时间做一个关于AdaBoost算法的详细总结。...
  • 大话AdaBoost算法

    2018-06-12 14:55:44
    其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。 书的购买链接 书的勘误,优化,源代码资源 原创声明:本文为 SIGAI 原创...
  • Adaboost算法

    2014-01-13 13:42:00
    首先,Boosting和Bagging两种算法都是通过构造一系列的预测函数,然后以某种方式将他们组合成最终的预测模型,以此来提高学习算法的准确度。 Bagging的主要思想是给定一个弱学习算法和一组训练集(x1,y1),…,...
  • AdaBoost算法(二)——理论推导篇

    千次阅读 2019-06-09 17:27:46
    AdaBoost算法(二)——理论推导篇 集成学习系列博客: ...在前面AdaBoost算法(一)——基础知识篇中详细介绍了adaboost的基础知识和原理,如果你只想了解adaboost的基本原理那么只看那篇博客就足...
  • AdaBoost算法源码分析

    千次阅读 2017-10-24 16:38:27
    基本的理论知识可以参考李航的统计学习和西瓜书,在这里简单介绍: bagging:基于数据随机抽样的分类器,更先进的bagging方法有随机森林等。 boosting:是一种与bagging类似的技术,但boosting是...AdaBoost算法的流
  • AdaBoost 算法简介

    千次阅读 2014-04-21 22:28:52
     AdaBoost(Adaptive Boosting)算法是一种原理简单的有监督的机器学习算法。它的发展与一个非常有趣的理论有关,即强学习算法与弱学习算法的等价性问题,能否使用弱分类器和多个实例来构建一个强分类器。这里的...
  • EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略 目录 AdaBoost算法的简介 1、理解AdaBoost算法 1.1、从前向逐步递增角度来看理解AdaBoost:要找到最优的f很难→每次递增。 1.2、前向...
  • 按照下面思路介绍集成学习中的AdaBoost算法 –集成学习基本知识 –Boosting –AdaBoost算法 –分类器权重更新公式推导 –样本分布更新公式推导
  • Adaboost 算法的原理与推导
  • 比较全面的Adaboost算法总结(一)

    千次阅读 2018-12-07 12:27:45
    4. AdaBoost算法的训练误差分析 5. AdaBoost算法的解释 6. AdaBoost算法的正则化 7. AdaBoost算法的过拟合问题讨论 8. 总结 Boosting的算法流程 Boosting算法是一种由原始数据集生成不同弱学习器的迭代算法,...
  • 目录Adaboost算法介绍与证明什么是adaboost算法流程前置知识前向分布算法算法证明 Adaboost算法介绍与证明 什么是adaboost AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert ...
  • AdaBoost算法理解

    2017-03-02 11:41:37
     我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比的美感。而每次将学过的算法应用到实际中,并解决了实际问题后,那种快感更是我在其它地方体会不到的。  一直想写关于算法的...
  • Boosting & AdaBoost算法

    千次阅读 2015-12-29 09:06:59
    Boosting & AdaBoost 1 算法起源  在机器学习领域中,关键问题就是如何利用观测数据通过学习得到精确估计。但是,在实际应用领域中,构造一个高精度的估计几乎是不可能的。Boosting就给出了一个解决上述问很好的...
  • AdaBoost算法过程 AdaBoost是英文&amp;quot;Adaptive Boosting&amp;quot;(自适应增强)的缩写,它的自适应在于:前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次...
  • AdaBoost算法的实现一

    千次阅读 2017-07-07 09:27:20
    前言依旧按照之前的博客路线来:介绍算法的基本原理和概念——>算法的拓展知识——->代码实现。本节主要是介绍sklearn包中有关AdaBoost方法的使用。包:sklearn.ensemble组合技术通过聚集多个分类器的预测来提高分类...
  • Adaboost算法和MATLAB实现

    千次阅读 2018-05-20 00:10:00
    一、AdaBoost简介 Boosting, 也称为增强学习或提升法,是一种重要的集成学习技术, 能够将预测精度仅比随机猜度略高的弱学习...其中最为成功应用的是,Yoav Freund和Robert Schapire在1995年提出的AdaBoost算法。 ...
  • [飞桨机器学习]AdaBoost算法 提升方法(Boosting),是一种可以用来减小监督式学习中偏差的机器学习算法。面对的问题是迈可·肯斯(Michael Kearns)提出的:一组“弱学习者”的集合能否生成一个“强学习者”?弱...
  • Boosting算法 提升算法/Boosting是一种提高弱分类器准确度的方法。 通常在分类问题中,boosting通过改变训练样本的权重,学习多个分类器,并将这些分类器线性组合,提高分类性能。一组弱分类器可以创建一个强大的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,079
精华内容 3,231
关键字:

adaboost算法小知识