R數據分析之AdaBoost算法


Rattle實現AdaBoost算法

Boosting算法是簡單有效、易使用的建模方法。AdaBoost(自適應提升算法)通常被稱作世界上現成的最好分類器。

Boosting算法使用其他的弱學習算法建立多個模型,對數據集中對結果影響較大的對象增加權重,一系列的模型被創建,然后調整那些影響分類的模型的對象權重值,實際上,模型的權重值從一個模型到另一個模型震盪。最后的模型由一系列的模型組合而成,每個模型的輸出都根據相應的成績被賦予權重值。我們注意到,如果數據失效或者弱分類器過於復雜都會導致boosting失敗。

Boosting有些類似於隨機森林,建立一個整體的模型,最后的模型比弱分類器任何的組合要好。區別於隨機森林的,要建完一棵再建另一棵,然后基於之前的模型再細化。內容是建立完一個模型之后,任何錯分類的樣本都被升高權重(boosted)了。一個提升的樣本本質上在數據集中會給予突出,使得單樣本觀測過多。目的是使下一個模型能更有效的針對此樣本正確分類,如果還沒有正確分,樣本會再次被升高。

相比於隨機森林,boosting算法更趨於多元化,任何模型的方法都可以被當作學習算法,決策樹是經常使用的算法。

1.boosting概述

Boosting算法通常由一組決策樹作為知識表達的基礎形式,知識表達關鍵的地方是我們合並決策的方法。對於boosting,使用權重成績(score),每一個模型都對應一個權重。

2.算法

作為元學習,boosting使用一些簡單的學習算法組成多重模型,boosting經常依賴弱學習算法--通常任何弱分類器都可以被使用。一系列的弱分類模型可以組成一個強分類器。

一個弱分類實際上就比隨機猜測的錯誤率稍好一點。但是組合起來將會有可觀的分類效果。

算法開始基於訓練數據建立一個弱的初始化模型,然后訓練數據中的錯分樣本將會被提升(權重增加),開始時所有的樣本都會被賦予一個權重值,比如權值1。權重通過一個公式被提升,所以被錯分的樣本的權值將會被提升(大於1)。

使用這些被提升的樣本再去建立新的模型,我們可以將其作為問題樣本,之后的模型將會重視這些錯分樣本(權值大的樣本)。

我們可以通過一個簡單的例子展示一下過程。假設有10個樣本,每個樣本有初始權重,0.1,我們建立一個決策樹,有四個錯分的樣本(樣本7,8,9,10),我們可以計算錯分樣本的權重之和0.4(通常我們用e表示)。這是模型准確率的測量。e被用作更新權重的測量值,變換后的值a=0.5*log((1-e)/e),錯分樣本新的權重值將會是ea,我們的例子當中,a=0.2027,樣本7,8,9,10新的權重值將會是0.1*ea,(0.1225)

新的模型比如還有錯分樣本,1和8,它們現在的權重是0.1和0.1225,新的e是0.2225,新的a值為0.6275,所以樣本1的權重變為0.1*ea,(0.1869)。樣本8的權重為0.1225*ea(0.229).我們可以看到現在樣本8的權重進一步增加了,程序繼續執行直到單一樹的錯誤率大於50%。

3.實驗實例

使用rattle建立模型

在model工具欄中有Boost選項,單獨的決策樹建立使用rpart.建立一個模型的結果信息打印到文本視區。使用weather數據集(在數據欄data點擊執行按鈕可以自動加載)。

文本視區開始輸出的是建立模型的一些函數:

文本視區的Call基本信息中:

模型預測變量是RainTomorrow,data表示是基本數據信息,contol=參數直接傳參給rpart(),iter=是建立樹的數量。loss是指數損失函數,Iteration是要求建立的樹的數目。

性能評估

混淆矩陣顯示了模型的性能,列出了訓練數據的預測正確情況。

train error 是模型訓練的錯誤率=1-(214+29)/(214+1+12+29)  預測正確的樣本/總樣本

out-of-bag 方法的錯誤率和相應的迭代次數。

train.err1 train.kap1 
48 48

Variables actually used in tree construction:
[1] "Cloud3pm" "Cloud9am" "Evaporation" "Humidity3pm" 
[5] "Humidity9am" "MaxTemp" "MinTemp" "Pressure3pm" 
[9] "Pressure9am" "Rainfall" "Sunshine" "Temp3pm" 
[13] "Temp9am" "WindDir3pm" "WindDir9am" "WindGustDir" 
[17] "WindGustSpeed" "WindSpeed3pm" "WindSpeed9am"

Frequency of variables actually used:

WindDir9am WindGustDir Sunshine WindDir3pm Pressure3pm 
36 26 25 25 23 
Cloud3pm MaxTemp MinTemp Temp9am WindSpeed3pm 
12 8 6 6 6 
Evaporation WindGustSpeed Cloud9am Humidity3pm Humidity9am 
5 5 3 3 2 
Pressure9am Rainfall Temp3pm WindSpeed9am 
2 2 2 1

Time taken: 0.70 secs

Variables actually used in tree construction 是模型的決策樹構造實際使用的屬性。

Frequency of variables actually used是模型屬性使用到的頻次,從大到小列出。

最后是花費的時間0.7秒,因為數據量較小,所以花費的時間是很少的。

一旦模型建立完成,工具欄的error按鈕將會繪制如下圖所示的錯誤率圖,隨着更多的樹加入模型,錯誤率不斷降低,開始下降比較迅速,后來慢慢趨於平坦。

importance按鈕繪制了模型重要的屬性:

右下角的continue按鈕可以繼續增加樹的數目進行訓練模型。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM