R數據分析之AdaBoost算法

Rattle實現AdaBoost算法算法

Boosting算法是簡單有效、易使用的建模方法。AdaBoost(自適應提高算法)一般被稱做世界上現成的最好分類器。函數

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

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

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

1.boosting概述對象

Boosting算法一般由一組決策樹做爲知識表達的基礎形式,知識表達關鍵的地方是咱們合併決策的方法。對於boosting,使用權重成績(score),每個模型都對應一個權重。blog

2.算法it

做爲元學習,boosting使用一些簡單的學習算法組成多重模型,boosting常常依賴弱學習算法--一般任何弱分類器均可以被使用。一系列的弱分類模型能夠組成一個強分類器。io

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

算法開始基於訓練數據創建一個弱的初始化模型,而後訓練數據中的錯分樣本將會被提高(權重增長),開始時全部的樣本都會被賦予一個權重值,好比權值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按鈕能夠繼續增長樹的數目進行訓練模型。

相關文章
相關標籤/搜索