日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

提升方法之AdaBoost算法

發布時間:2023/12/4 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 提升方法之AdaBoost算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

提升方法之AdaBoost算法

作為非數學專業出身看到密密麻麻的數學公式剛開始真的是非常頭疼。算法的物理邏輯的時候尚能理解,但是涉及到具體的數學公式實現就開始懵逼了:為什么要用這個公式,這個公式是怎么推到的,這個公式達到什么樣的效果?
這里結合自己的理解和畫圖,用最直白的語言對每個公式作用進行解剖。


一、AdaBoost核心概念總結

  • 提升方法是將弱學習算法提升為強學習算法的統計學習方法。在分類學習中,提升方法通過反復修改訓練數據的權值分布,構建一系列基本分類器(弱分類器),并將這些基本分類器線性組合,構成一個強分類器。代表性的提升方法是AdaBoost算法。(重點是:更新分類器的參數訓練集的權重見下2

    AdaBoost模型是弱分類器的線性組合:

    f(x)=Mm=1αmGm(x)f(x)=∑m=1MαmGm(x)

    • MM表示該提升樹共有MM個弱分類器組成
    • Gm(x)Gm(x)表示第mm個弱分類器
    • αmαm為第mm個弱分類器的參數(反應該分類器的重要性)
  • AdaBoost算法的特點是通過迭代每次學習一個基本分類器。每次迭代中,核心思想是:提高那些被前一輪分類器錯誤分類數據的權值,而降低那些被正確分類的數據的權值。最后,AdaBoost將基本分類器的線性組合作為強分類器,其中給分類誤差率小的基本分類器以大的權值,給分類誤差率大的基本分類器以小的權值

  • AdaBoost的訓練誤差分析表明,AdaBoost的每次迭代可以減少它在訓練數據集上的分類誤差率,這說明了它作為提升方法的有效性。(每次迭代誤差遞減且誤差0?<0.50≤?<0.5
  • AdaBoost算法的一個解釋是該算法實際是前向分步算法的一個實現。在這個方法里,模型是加法模型,損失函數是指數損失,算法是前向分步算法時的二分類學習方法。每一步中極小化損失函數。
  • 提升樹是以分類樹或回歸樹為基本分類器的提升方法。提升樹被認為是統計學習中最有效的方法之一。
  • AdaBoost是一種典型的提升樹算法。

    通過上面的總結我們看到,AdaBoost是一個神奇的算法,以精妙的方式通過更新數據集的權重以及各個弱分類器的參數組合成一個強分類器。那么它具體是怎么做到的呢?

    二、AdaBoost算法推導

    輸入:訓練數據集T=(x1,y1),(x2,y2),...,(xN,yN)T=(x1,y1),(x2,y2),...,(xN,yN),其中xiX?Rn,yiY={?1,1}xi∈X?Rn,yi∈Y={?1,1},弱學習算法Gm(x)Gm(x);

    輸出:最終強化算法分類器G(x)G(x)
    (1)初始化訓練數據總和為1的權值分布:(初始權重為歸一化后的均值既1N1N

    D1=(w11,...,w1i,...w1N),w1i=1N,i=1,2,...ND1=(w11,...,w1i,...w1N),w1i=1N,i=1,2,...N
    (2)對 m=1,2,...Mm=1,2,...M:(弱分類器的個數)

    (a)使用具有權值分布的DmDm的訓練數據集學習,得到基本分類器:(數據集XX到{-1,1}的映射)
    Gm(x):X?>{?1,1}Gm(x):X?>{?1,1}
    (b)計算Gm(x)Gm(x)在訓練數據集上的分類誤差率:(公式不夠簡潔明了,其實總結下來非常好理解:誤差率emem=誤分類樣本的權值之和)

    em=Ni=1P(Gm(xi)yi)=Ni=1wmiI(Gm(xi)yi)em=∑i=1NP(Gm(xi)≠yi)=∑i=1NwmiI(Gm(xi)≠yi)

    • 我們來考慮下誤差emem的取值空間:由于訓練集權制之和為1,因此誤差0em10≤em≤1。但是這樣還不夠。因為我們在選擇分裂閾值的時候會選擇一個最優或局部最優的取值來分裂,且當em=0.5em=0.5是表明該分裂閾值對預測無貢獻。因此最終得到的emem的實際取值應小于em0.5em≤0.5
    • 所以最終:0em0.50≤em≤0.5,且每次迭代誤差emem遞減。這點對下面的參數理解很重要。

    (c)計算Gm(x)Gm(x)的系數:(這里對數為自然對數)

    αm=12log1?ememαm=12log1?emem

    • 那么問題來了,為什么要用這個公式來計算更新每個基分類器的參數?我們先畫個圖出來觀察下這個函數。(其中y軸為αmαm,x軸為誤差emem

    • 由(2-b)我們得到誤差emem的取值范圍為0em<0.50≤em<0.5,結合該圖可以可知0<αm<10<αm<1
    • 另外可以發現,通過該函數的轉換,弱分類器Gm(x)Gm(x)的誤差的越小,參數αmαm越大。即實現了給分類誤差率小的基本分類器以大的權值,給分類誤差率大的基本分類器以小的權值

    (d)更新訓練數據集的權值分布:(該權值決定數據集的重要性,并讓誤差的計算變得簡單)

    Dm+1=(wm+1,1,...,wm+1,i,...wm+1,N)Dm+1=(wm+1,1,...,wm+1,i,...wm+1,N)
    wm+1,i=wmiZmexp(?αmyiGm(x?i)),i=1,2,...Nwm+1,i=wmiZmexp(?αmyiGm(x?i)),i=1,2,...N

    • 這里yi={?1,1}yi={?1,1}為真實值,Gm(xi)={?1,1}Gm(xi)={?1,1}為預測值。當預測正確時yiGm(xi)yiGm(xi)為1,反之為-1。
    • δmi=αmyiGm(xi)δmi=αmyiGm(xi)θmi=wmiZmθmi=wmiZm(把它看作一個用于歸一化權值的加權平均常數)。權重wm+1,iwm+1,i的更新函數可以簡化為wm+1,i=θmiexp(δmi),i=1,2,...Nwm+1,i=θmiexp(δmi),i=1,2,...N畫出y=wm+1,i=exp(δmi)y=wm+1,i=exp(δmi)的圖形來看一下:由于0<αm<10<αm<1,所以?1<δm,i<1?1<δm,i<1。且使得預測錯誤的數據集樣本點更新后的權重變大,預測正確的權值變小,然后對所有權值進行歸一化。這就是該函數實現的作用。(圖中y=1是當αα無限接近于0時的情況:解釋為,當αmαm權值越大,權重wm+1,iwm+1,i更新改變的效果越明顯。)
    • 這里,ZmZm是規范化因子,目的是使各數據集的權重進行歸一化。理解為ZmZm=更新后的各數據集權重之和。
      Zm=Ni=1wmiexp(?αmyiGm(xi))Zm=∑i=1Nwmiexp(?αmyiGm(xi))

    (3)構建基本分類器的新型組合f(x)=Mm=1αmGm(x)f(x)=∑m=1MαmGm(x),即:

    G(x)=sign(f(x))=sign(Mm=1αmGm(x))G(x)=sign(f(x))=sign(∑m=1MαmGm(x))
    * 函數 sign()sign()的意義是將正數判別為1,負數判別為-1,最終達到分類的目的。如圖:

    參數αmαm公式及權重wm+1,iwm+1,i其實是通過前向分步算法分別得到的αmαmGm(x)Gm(x)并使得fm(x)fm(x)再訓練數據集TT上的指數損失最小。具體的推導過程可參考《統計學習方法》–李航 第145~146頁

    三、AdaBoost算法實現步驟

    上面解釋了AdaBoost算法的具體內容。這里寫出它的分布實現步驟再對上文算法加深下理解:

    (1)假設訓練數據集具有均勻的權值分布,即每個訓練樣本在基本分類器的學習中作用相同,這一假設保證第1步能夠在原始數據上學習基本分類器G1(x)G1(x)

    (2)AdaBoost反復學習基本分類器,在每一輪m1,2,,Mm=1,2,…,M順次地執行下列操作:

    (a)使用當前分布DmDm加權的訓練數據集,學習基本分類器Gm(x)Gm(x)

    (b)計算基本分類器Gm(x)Gm(x)再加權訓練數據集上的分類誤差率(即誤分類樣本的權值之和。這里要注意wmiwmi表示第mm輪中第ii個實例的權值,且權值之和為1,即Ni=1wmi=1∑i=1Nwmi=1):

    em=P(Gm(xi)yi)=Gm(xi)yiwmiem=P(Gm(xi)≠yi)=∑Gm(xi)≠yiwmi

    (c)計算基本分類器Gm(x)Gm(x)的系數αmαmalphamalpham表示Gm(x)Gm(x)在最終分類器中的重要性。由上面(2-c)可知,em1/2em≤1/2時,alpham0alpham≥0,并且αmαm隨著emem的減小而增大,所以分類誤差率越小的分類器在最終分類器中的作用越大。

    (d)更新訓練數據的權值分布為下一輪作準備。式(2-d)的權重更新函數可以寫成:

    • 由此可知,被基本分類器Gm(x)Gm(x)誤分類樣本的權值得以擴大,而被正確分類樣本的權值卻得以縮小。兩相比較,誤分類樣本的權值被放大e(2αm)=em1?eme(2αm)=em1?em倍。因此,誤分類樣本在下一輪學習中起更大的作用。不改變所給的訓練數據,而不斷改變訓練數據權值的分布,使得訓練數據在基本分類器的學習中起不同的作用,這是AdaBoost的一個特點。

    (3)線性組合f(x)f(x)實現MM個基本分類器的加權表決。系數αmαm 表示了基本分類器Gm(x)Gm(x)的重要性,這里,所有αmαm 之和并不為1。f(x)f(x)的符號決定實例x的類,f(x)f(x)的絕對值表示分類的確信度。利用基本分類器的線性組合構建最終分類器是AdaBoost的另一特點。

    提升方法是即采用加法模型(即基數函數的線性組合)與前向分步算法,以決策樹為基函數的提升方法稱為提升樹(boosting tree)。對分類問題決策樹是二叉分類樹,對回歸問題決策樹是二叉回歸樹。

    喜歡本文的伙伴請關注我的博客http://ihoge.cn

    總結

    以上是生活随笔為你收集整理的提升方法之AdaBoost算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。