中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現Adaboost的原理分析

發布時間:2021-12-03 17:03:43 來源:億速云 閱讀:182 作者:柒染 欄目:大數據

本篇文章為大家展示了怎么實現Adaboost的原理分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

基本原理

Adaboost算法基本原理就是將多個弱分類器(弱分類器一般選用單層決策樹)進行合理的結合,使其成為一個強分類器。

Adaboost采用迭代的思想,每次迭代只訓練一個弱分類器,訓練好的弱分類器將參與下一次迭代的使用。也就是說,在第N次迭代中,一共就有N個弱分類器,其中N-1個是以前訓練好的,其各種參數都不再改變,本次訓練第N個分類器。其中弱分類器的關系是第N個弱分類器更可能分對前N-1個弱分類器沒分對的數據,最終分類輸出要看這N個分類器的綜合效果。

怎么實現Adaboost的原理分析


弱分類器(單層決策樹)

Adaboost一般使用單層決策樹作為其弱分類器。單層決策樹是決策樹的最簡化版本,只有一個決策點,也就是說,如果訓練數據有多維特征,單層決策樹也只能選擇其中一維特征來做決策,并且還有一個關鍵點,決策的閾值也需要考慮。

怎么實現Adaboost的原理分析

關于單層決策樹的決策點,來看幾個例子。比如特征只有一個維度時,可以以小于7的分為一類,標記為+1,大于(等于)7的分為另一類,標記為-1。當然也可以以13作為決策點,決策方向是大于13的分為+1類,小于(等于)13的分為-1類。在單層決策樹中,一共只有一個決策點,所以下圖的兩個決策點不能同時選取。

怎么實現Adaboost的原理分析

同樣的道理,當特征有兩個維度時,可以以縱坐標7作為決策點,決策方向是小于7分為+1類,大于(等于)7分類-1類。當然還可以以橫坐標13作為決策點,決策方向是大于13的分為+1類,小于13的分為-1類。在單層決策樹中,一共只有一個決策點,所以下圖的兩個決策點不能同時選取。

怎么實現Adaboost的原理分析

擴展到三維、四維、N維都是一樣,在單層決策樹中,一共只有一個決策點,所以只能在其中一個維度中選擇一個合適的決策閾值作為決策點。


關于Adaboost的兩種權重

Adaboost算法中有兩種權重,一種是數據的權重,另一種是弱分類器的權重。其中,數據的權重主要用于弱分類器尋找其分類誤差最小的決策點,找到之后用這個最小誤差計算出該弱分類器的權重(發言權),分類器權重越大說明該弱分類器在最終決策時擁有更大的發言權。

Adaboost數據權重與弱分類器

剛剛已經介紹了單層決策樹的原理,這里有一個問題,如果訓練數據保持不變,那么單層決策樹找到的最佳決策點每一次必然都是一樣的,為什么呢?因為單層決策樹是把所有可能的決策點都找了一遍然后選擇了最好的,如果訓練數據不變,那么每次找到的最好的點當然都是同一個點了。

所以,這里Adaboost數據權重就派上用場了,所謂“數據的權重主要用于弱分類器尋找其分類誤差最小的點”,其實,在單層決策樹計算誤差時,Adaboost要求其乘上權重,即計算帶權重的誤差。

舉個例子,在以前沒有權重時(其實是平局權重時),一共10個點時,對應每個點的權重都是0.1,分錯1個,錯誤率就加0.1;分錯3個,錯誤率就是0.3。現在,每個點的權重不一樣了,還是10個點,權重依次是[0.01,0.01,0.01,0.01,0.01,0.01, 0.01,0.01,0.01,0.91],如果分錯了第1一個點,那么錯誤率是0.01,如果分錯了第3個點,那么錯誤率是0.01,要是分錯了最后一個點,那么錯誤率就是0.91。這樣,在選擇決策點的時候自然是要盡量把權重大的點(本例中是最后一個點)分對才能降低誤差率。由此可見,權重分布影響著單層決策樹決策點的選擇,權重大的點得到更多的關注,權重小的點得到更少的關注。

在Adaboost算法中,每訓練完一個弱分類器都就會調整權重,上一輪訓練中被誤分類的點的權重會增加,在本輪訓練中,由于權重影響,本輪的弱分類器將更有可能把上一輪的誤分類點分對,如果還是沒有分對,那么分錯的點的權重將繼續增加,下一個弱分類器將更加關注這個點,盡量將其分對。

這樣,達到“你分不對的我來分”,下一個分類器主要關注上一個分類器沒分對的點,每個分類器都各有側重。

Adaboost分類器的權重

由于Adaboost中若干個分類器的關系是第N個分類器更可能分對第N-1個分類器沒分對的數據,而不能保證以前分對的數據也能同時分對。所以在Adaboost中,每個弱分類器都有各自最關注的點,每個弱分類器都只關注整個數據集的中一部分數據,所以它們必然是共同組合在一起才能發揮出作用。所以最終投票表決時,需要根據弱分類器的權重來進行加權投票,權重大小是根據弱分類器的分類錯誤率計算得出的,總的規律就是弱分類器錯誤率越低,其權重就越高。


圖解Adaboost分類器結構

怎么實現Adaboost的原理分析

如圖所示為Adaboost分類器的整體結構。從右到左,可見最終的求和與符號函數,再看到左邊求和之前,圖中的虛線表示不同輪次的迭代效果,第1次迭代時,只有第1行的結構,第2次迭代時,包括第1行與第2行的結構,每次迭代增加一行結構,圖下方的“云”表示不斷迭代結構的省略。

第i輪迭代要做這么幾件事: 
1. 新增弱分類器WeakClassifier(i)與弱分類器權重alpha(i) 
2. 通過數據集data與數據權重W(i)訓練弱分類器WeakClassifier(i),并得出其分類錯誤率,以此計算出其弱分類器權重alpha(i) 
3. 通過加權投票表決的方法,讓所有弱分類器進行加權投票表決的方法得到最終預測輸出,計算最終分類錯誤率,如果最終錯誤率低于設定閾值(比如5%),那么迭代結束;如果最終錯誤率高于設定閾值,那么更新數據權重得到W(i+1)

圖解Adaboost加權表決結果

關于最終的加權投票表決,舉幾個例子: 
比如在一維特征時,經過3次迭代,并且知道每次迭代后的弱分類器的決策點與發言權,看看如何實現加權投票表決的。

怎么實現Adaboost的原理分析

如圖所示,3次迭代后得到了3個決策點, 
最左邊的決策點是小于(等于)7的分為+1類,大于7的分為-1類,且分類器的權重為0.5; 
中間的決策點是大于(等于)13的分為+1類,小于13分為-1類,權重0.3; 
最右邊的決策點是小于(等于19)的分為+1類,大于19分為-1類,權重0.4。 
對于最左邊的弱分類器,它的投票表示,小于(等于)7的區域得0.5,大與7得-0.5,同理對于中間的分類器,它的投票表示大于(等于)13的為0.3,小于13分為-0.3,最右邊的投票結果為小于(等于19)的為0.4,大于19分為-0.4,如下圖:

怎么實現Adaboost的原理分析

求和可得:

怎么實現Adaboost的原理分析

最后進行符號函數轉化即可得到最終分類結果:

怎么實現Adaboost的原理分析

本文代碼獲取方式:

關注微信公眾號 datayx 然后回復 boost  即可獲取。

更加直觀的,來看一個更復雜的例子。對于二維也是一樣,剛好有一個實例可以分析一下,原始數據分布如下圖:

怎么實現Adaboost的原理分析

Adaboost分類器試圖把兩類數據分開,運行一下程序,顯示出決策點,如下圖:

怎么實現Adaboost的原理分析

這樣一看,似乎是分開了,不過具體參數是怎樣呢?查看程序的輸出,可以得到如其決策點與弱分類器權重,在圖中標記出來如下:

怎么實現Adaboost的原理分析

圖中被分成了6分區域,每個區域對應的類別就是: 
1號:sign(-0.998277+0.874600-0.608198)=-1 
2號:sign(+0.998277+0.874600-0.608198)=+1 
3號:sign(+0.998277+0.874600+0.608198)=+1 
4號:sign(-0.998277-0.874600-0.608198)=-1 
5號:sign(+0.998277-0.874600-0.608198)=-1 
6號:sign(+0.998277-0.874600+0.608198)=+1 
其中sign(x)是符號函數,正數返回1負數返回-1。 
最終得到如下效果: 

怎么實現Adaboost的原理分析

通過這兩個例子,相信你已經明白了Adaboost算法加權投票時怎么回事兒了。

說了這么多,也舉了這么多例子,就是為了讓你從細節上明白Adaboost的基本原理,理解Adaboost的兩種權重的關系是理解Adaboost算法的關鍵所在。

上述內容就是怎么實現Adaboost的原理分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

无棣县| 秀山| 大厂| 平阳县| 建阳市| 巴彦县| 河津市| 辛集市| 乌鲁木齐县| 涪陵区| 桂平市| 凉城县| 遵义县| 诏安县| 洱源县| 广饶县| 祁连县| 辽中县| 蒲江县| 台南市| 鄂伦春自治旗| 麻江县| 武义县| 琼海市| 特克斯县| 天镇县| 松原市| 张家界市| 独山县| 扶风县| 东明县| 新乡县| 青岛市| 怀宁县| 乌拉特中旗| 启东市| 白沙| 宁陵县| 牙克石市| 且末县| 邛崃市|