1. 程式人生 > >R語言之裝袋、adaboost、隨機森林演算法

R語言之裝袋、adaboost、隨機森林演算法

  首先,這三個演算法都是分類演算法,分類的準確率很高,這些方法都是組合多個分類器,每個分類器分別進行預測,通過簡單選舉多數,判定最終所屬分類。為什麼組合分類器能提高分類準確率:可以通過下面的圖進行解釋。左圖單個分類器就是圖上的對角線,當進行多個組合時,出現了圖上的折線圖,每個折邊都是一個分類器,當有多個分類器進行組合,就會出現右圖,最終達到一個曲線圖。組合演算法的優勢:1、能明顯提升判別準確率;2、對誤差和噪音更加魯棒性;3、一定程度抵消過度擬合;4、適合並行化計算。


一、裝袋演算法


建立k個模型就需要k個訓練集,且這些訓練集都有放回抽樣,這樣每次抽樣時每個樣本都有機會被抽到。袋裝演算法的優勢:1、準確率明顯高於組合中任何單個的分類器;2、對於較大的噪音,表現不至於很差,並且具有魯棒性;3、不容易過度擬合

二、Adaboost演算法

提升(boosting)演算法思想:

1 訓練集中的元組被分配權重
2 權重影響抽樣,權重越大,越可能被抽取
3 迭代訓練若干個分類器,在前一個分類器中被錯誤分類的元組,會被提高權重,使到
它在後面建立的分類器裡被更加“關注”
4 最後分類也是由所有分類器一起投票,投票權重取決於分類器的準確率

Adaboost演算法



解釋:

首先對原組進行權重初始化,建立k個數據集,切記此時每個資料集的樣本不一樣,後一個模型的資料集大部分樣本都是來自前一個模型誤分的樣本,是由於誤分樣本權重提高了。每個分類器進行預測屬於哪個類,並給該類加權重,最後看哪個累的權重之和最大就選哪個類。

提升演算法的優缺點:1:可以獲得比bagging更高的準確率;2、容易過度擬合。

三、隨機森林(Random Forest)演算法

1、由很多決策樹分類器組合而成(因而稱為“森林”)
2、單個的決策樹分類器用隨機方法構成。首先,學習集是從原訓練集中通過有放回抽樣得到的自助樣本。其次,參不構建該決策樹的變數也是隨機抽出,參不變數數通常大大小於可用變數數。
3、單個決策樹在產生學習集和確定參不變數後,使用CART演算法計算,丌剪枝
4、 最後分類結果取決於各個決策樹分類器簡單多數選舉

解釋:

構建K個決策樹,組成隨機森林,但是產生每個決策樹的資料集的變數數通常不一樣,使用CART演算法,只要進行簡單的四則運算就行了。最後根據選舉。隨機森林演算法優點:1、準確率可以和Adaboost媲美;2、對錯誤和離群點更加魯棒性;3、決策樹容易過度擬合的問題會隨著森林覎模而削弱;4、在大資料情況下速度快,效能好;

下面是相關決策樹和隨機森林演算法:

隨機森林演算法

匯入randomForest包

> attach(iris)
> model.forest <- randomForest(Species~.,data=iris)
> pre.forest <- predict(model.forest,iris)
> table(pre.forest,Species)
            Species
pre.forest   setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         50         0
  virginica       0          0        50

準確率100%

決策樹演算法

匯入rpart包

model.tree <- rpart(Species~.,data = iris,method = 'class')
> pre.tree <- predict(model.tree,data=iris,type = 'class')
> plot(model.tree,uniform = T,branch = 0,margin = 0.1,main="1")
> text(model.tree,use.n = T,fancy = T,col="red")
> table(pre.tree,Species)
            Species
pre.tree     setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         49         5
  virginica       0          1        45

準確率下降,下面是決策樹


解釋:setosa50個正確分類,versicolor誤分5個來源virginica,virginica誤分1個來自versicolor。