機器學習第九篇:詳解Adaboost算法

2021-02-13 俊紅的數據分析之路

01|基本概念:

提升方法的基本思想:對於任何一個複雜任務來說,將多個專家的判斷進行適當的綜合所得出的判斷,要比任何一個專家單獨的判斷好。

先來看兩個概念:強可學習和弱可學習。

在概率近似正確學習的框架中(簡稱PAC),一個概念(類),如果存在一個多項式的學習算法能夠學習它,並且正確率很高,那麼就稱這個概念是強可學習的;一個概念,如果存在一個多項式的學習算法能夠學習它,學習的正確率僅比隨機猜測略好,那麼就稱這個概念是弱可學習的。

弱可學習與強可學習之間是有一定的差距,如果已經發現弱可學習算法,那麼能否將它提到強可學習算法,這裡的如何提升就是提升方法需要解決的問題。最具代表性的就是AdaBoost算法。

對於分類問題而言,給定一個訓練樣本集,求比較粗糙的分類規則(弱分類器)要比求精確地分類規則(強分類器)容易的多。提升方法就是從弱學習算法,反覆學習,得到一系列分類器(又稱為基本分類器),然後組合這些弱分類器,構成一個強分類器。大多數的提升方法都是改變訓練數據的概率分布(訓練數據的權值分布),針對不同的訓練數據分布調用弱學習算法學習一系列弱分類器。

這樣,對於提升方法來說,有兩個問題需要解決:一是在每一輪如何改變訓練數據的權值或概率分布;二是如何將弱分類器組成一個強分類器

對於第一個問題,AdaBoost的做法是,提高那些被前一輪弱分類器錯分類樣本的權值,而降低那些被正確分類樣本的權值。這樣一來,那些沒有得到正確分類的數據,由於其權值加大而受到後一輪的弱分類器的更大關注。於是,分類問題被一系列的弱分類器「分而治之」。至於第二個問題,即弱分類器的組合,AdaBoost採取加權多數表決的方法。具體地,加大分類誤差率小的弱分類器的權值,使其在表決中起較大的作用,減小分類誤差率大的弱分類器的權值,使其在表決中起較小的作用。

02|AdaBoost算法:

假設給定一個二分類的訓練數據集

其中,每個樣本點由實例和標記組成。x是實例空間,y是標記集合。AdaBoost利用以下算法,從訓練數據集中學習一系列弱分類器或基本分類器,並將這些弱分類器線性組合成一個強分類器。

算法步驟:

1.初始化訓練數據的權值分布,讓訓練數據集中的每一個樣本均等於1/N。    

                

2.對m=1,2,...,M(m表示反覆訓練的次數)

(a)使用具有權值分布的 Dm的訓練數據集學習,得到基本分類器

               

(b)計算Gm(x)在訓練數據集上的分類誤差率(誤分類樣本權值之和)

                

上式中表示第m輪中第i個實例的權值。

(c)計算Gm(x)的係數

                  

上式中的對數為自然對數,上式的結果是該分類器在最終分類器的所佔的權重,即多項式的係數。

由上式可得,當時,,且隨著的減小而增大,意味著分類誤差越小的基本分類器在最終分類器中的作用越大。

(d)更新訓練數據集的權值分布

                   

                  

這裡,是規範化因子

                   

3.構建基本分類器線性組合

                  

得到的最終分類器

                 

係數表示了基本分類器的重要性,這裡,所有的之和並不為1。f(x)的符號決定實例x的分類,f(x)的絕對值表示分類的確信度。

03|前向分布算法:

考慮加法模型(每一輪迭代的分類函數的加和)

其中,為基函數,為基函數的參數,為基函數的係數。

在給定訓練數據及損失函數L(y,f(x))的條件下,學習加法模型f(x)成為經驗風險極小化即損失函數最小化問題:

通常這是一個複雜的優化問題。前向分步算法求解這一優化問題的想法是:因學習的是加法模型,如果能夠從前向後,每一步只學習一個基函數及其係數,逐步逼近優化目標函數,那麼就可以簡化優化的複雜度。具體地,每步只需要優化如下目標函數:

前向分步算法步驟:


輸入:訓練數據集;損失函數L(y,f(x));基礎函數集;

輸出:加法模型f(x)

1.初始化

2.對m=1,2,...,M

(a)極小化損失函數

得到參數,

(b)更新

3.得到加法模型

這樣,前向分布算法將同時求解從m=1到M所有參數,的優化問題簡化為逐個求解各個,的優化問題。

04|前向分步算法與AdaBoost關係:

AdaBoost 算法可以認為是模型為加法模型、損失函數為指數函數、學習算法為前向分步算法的二類分類學習方法。

相關焦點

  • AdaBoost算法詳解以及代碼實現
    這篇博客主要解釋AdaBoost的算法詳情以及實現。它可以理解為是首個「boosting」方式的集成算法。是一個關注二分類的集成算法。一、算法的總體情況AdaBoost的目標是建立如下的最終的分類器:其中,假設我們輸入的訓練數據總共有nn個,用(x_1,y_y),\cdots,(x_n,y_n)(x1,yy),⋯,(xn,yn)表示,其中xx是一個多為向量,而其對應的y=\{-1,1\}y={−1,1}。1.1、sign函數這裡的sign函數是符號函數。
  • 比較全面的Adaboost算法總結(二)
    總結本文詳細總結了AdaBoost算法的相關理論,第一篇文章相當於是入門AdaBoost算法,本文是第二篇文章,該文詳細推導了AdaBoost算法的參數求解過程以及討論了模型的過擬合問題。AdaBoost算法是一種迭代算法,樣本權重和學習器權重根據一定的公式進行更新,第一篇文章給出了更新公式,但是並沒有解釋原因,本節用前向分布算法去推導樣本權重和學習器權重的更新公式。
  • AdaBoost--從原理到實現
    PAC 定義了學習算法的強弱弱學習算法---識別錯誤率小於1/2(即準確率僅比隨機猜測略高的學習算法)強學習算法---識別準確率很高並能在多項式時間內完成的學習算法同時 ,Valiant和 Kearns首次提出了 PAC學習模型中弱學習算法和強學習算法的等價性問題
  • 機器學習第二篇:詳解KNN算法
    我的2020總結,戳圖片,留言抽大獎大家好,我是老表~本篇介紹機器學習眾多算法裡面最基礎也是最「懶惰」的算法——KNN(k-nearest neighbor)。但在統計學習中我們評判兩者的遠近關係的時候是有一個可以量化的東西,這裡我們用的是歐式距離。歐式距離又稱歐幾裡得距離,是指在m維空間中,兩個點之間的真實距離。
  • 關於Adaboost算法
    Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。一.引入對於Adaboost,可以說是久聞大名,據說在Deep Learning出來之前,SVM和Adaboost是效果最好的 兩個算法,而Adaboost是提升樹(boosting tree),所謂「提升樹」就是把「弱學習算法」提升(boost)為「強學習算法」(語自《統計學習方法》),而其中最具代表性的也就是
  • 人工智慧之機器學習算法體系匯總
    > 來源:https://blog.csdn.net/qq_34424731/article/details/76443719本文主要梳理了機器學習算法體系
  • 機器學習-聚類算法k-均值詳解
    對於含有n個數據的數據集D,以及簇數k,本文所講的劃分算法將基於距離函數,將對象組劃分成k個分區,每個分區代表一個簇,並儘量使簇中對象相似,不同簇中對象相異。使用簇內變差來衡量Ci的質量,它是Ci中所有對象和形心直接的誤差的平方和:定義E為數據集中所有對象的誤差平方和:算法原理為了得到k個簇,k-均值算法首先在D中隨機的選取k個對象,作為k個簇的中心。對於剩下的每個對象,根據其與各個簇中心的歐式距離,將其分配到最近的一個簇中。
  • 《機器學習-原理、算法與應用》出版了
    SIGAI微信公眾號自去年4月份發布第一篇文章「機器學習-波瀾壯闊40年」起,到今天為止,已經累計發布文章164篇,在各個平臺的閱讀次數超過超過300萬次,深受人工智慧學習者和從業者的喜愛,其中不乏大量的精品文章。此公眾號創立之初的目的是為了幫助大家學習和掌握人工智慧技術,用於學術研究和產品研發,傳播人工智慧技術。
  • 學好機器學習,這裡有你需要的一切
    樸素貝葉斯用於18000+篇/Sogou新聞文本的分類 第七課: 回歸 1.  線性回歸2.  Logistic/Softmax回歸3.  廣義線性回歸4.  L1/L2正則化5.  Ridge與LASSO6.
  • Adaboost 算法的原理與推導
    另外,AdaBoost算法不需要事先知道下界γ,AdaBoost具有自適應性,它能適應弱分類器各自的訓練誤差率 。最後,Adaboost 還有另外一種理解,即可以認為其模型是加法模型、損失函數為指數函數、學習算法為前向分步算法的二類分類學習方法,下個月即12月份會再推導下,然後更新此文。而在此之前,有興趣的可以參看《統計學習方法》第8.3節或其它相關資料。
  • 想入門機器學習?機器之心為你準備了一份中文資源合集
    機器之心整理參與:機器之心編輯部機器學習日益廣為人知,越來越多的計算機科學家和工程師投身其中。不幸的是,理論、算法、應用、論文、書籍、視頻等信息如此之多,很容易讓初學者迷失其中,不清楚如何才能提升技能。本文作者依據自身經驗給出了一套快速上手的可行方法及學習資源的分類匯總,機器之心在其基礎上做了增益,希望對讀者有所幫助。
  • 各種機器學習算法的應用場景分別是什麼(比如樸素貝葉斯、決策樹、K 近鄰、SVM、邏輯回歸最大熵模型)?
    如果樓主是想為未來工作做積累,你還得對以下算法多做研究,這些才是目前工業界主流應用的算法。1.國內工業界應用機器學習最多的領域我們先從工業界對於機器學習的需求開始說起,明白用戶需求才知道什麼算法用的多。
  • 通俗講解集成學習算法!
    ,不錯過本文以圖文的形式對模型算法中的集成學習,以及對集中學習在深度學習中的應用進行了詳細解讀。介紹兩個重要的Boosting算法:自適應提升(adaboost)和梯度提升(gradient boosting)。簡而言之,這兩種元算法在順序化的過程中創建和聚合弱學習器的方式存在差異。自適應提升算法會更新附加給每個訓練數據集中觀測數據的權重,而梯度提升算法則會更新這些觀測數據的值。
  • 從淺層模型到深度模型:概覽機器學習優化算法
    該論文從淺層模型到深度模型縱覽監督學習中常用的優化算法,並指出了每一種優化算法的優點及局限性,同時其還包括了一階和二階等各種算法的形式化表達。機器之心主要對本論文選擇性地編譯了優化算法的部分,更詳細的推導及介紹請查看原論文。
  • 聚焦快速機器學習訓練算法,UC伯克利尤洋189頁博士論文公布
    機器之心報導編輯:蛋醬、小舟這份 189 頁的博士學位論文,凝結了尤洋在快速機器學習訓練算法領域的研究心血。過去十年,深度學習應用領域的數據量迅速增長,使得深度神經網絡(DNN)的訓練時間拉長。而這已經成為機器學習開發者和研究者面臨的瓶頸問題。
  • Python手寫機器學習最簡單的KNN算法
    摘要:從零開始學習機器學習最簡單的 KNN 算法。今天開始,我打算寫寫機器學習教程。
  • 第一本機器學習寫的書面世!狂啃53000篇論文寫成
    Springer Nature和法蘭克福的歌德大學共同開發了機器學習算法Beta Write,使用機器學習集成相似的聚類分析,將海量的文獻連貫的排列起來,並創建出簡潔的文章摘要,將論文摘要和原文連結生成書籍,幫助讀者儘快獲取系列論文的重要內容,還有助於讀者進一步閱讀原始文章。我們一起來看看AI寫書水平怎麼樣:
  • 10 個常用機器學習算法
    (給算法愛好者加星標,修煉編程內功)來源:機器之心   本文介紹了 10 大常用機器學習算法,包括線性回歸、Logistic
  • 機器學習(Machine Learning)&深度學習(Deep Learning)資料(之一)
    《深度學習與統計學習理論》 介紹:作者是來自百度,不過他本人已經在2014年4月份申請離職了。但是這篇文章很不錯如果你不知道深度學習與支持向量機/統計學習理論有什麼聯繫?那麼應該立即看看這篇文章.11.
  • 帶你少走彎路:五篇文章學完吳恩達機器學習
    作者:黃海廣[2]時間不多的朋友可以按照以下五篇文章的筆記和作業代碼(原課程作業是 OCTAVE的,這裡是復現的 Python 代碼)進行學習,快速入門機器學習,避免走彎路。可以收藏下這篇文章,以後用碎片時間在手機上學習機器學習。