Bagging演算法的R語言實現

2021-09-23 21:41:48 字數 1727 閱讀 2846

bagging 是bootstrap aggregating的縮寫,是第一批用於多分類整合演算法。

bagging演算法如下:

迴圈k次,每次都從樣本集d中有放回地抽取樣本集di,這樣總共得到k個樣本集,用這k個樣本集進行決策樹生成,獲得k個決策樹模型,再將要檢測的資料用這k個決策樹模型進行多數表決,獲得票數多的結論。

這種思想跟現代民主投票制度如出一轍,乙個人再厲害,判斷力也是有限的,但是把一群人聚合在一起投票,那單個人所犯錯誤的概率就會被抵消,最後得出結論的正確性會明顯優於單個人做出決策。

個人認為其演算法倒是並不複雜,主要還是內部決策樹的實現。r語言提供了很強大的包實現該演算法。r語言中用於bagging演算法實現的是ipred包。

1、首先安裝ipred包。這個不複雜,就不介紹了(如果這個不會,還是先從頭開始學習r吧)

2、谷歌的結果好像不是很理想,所以安裝完之後還是檢視下幫助文件吧。  命令:help(package=」ipred」),找到bagging函式的使用

3、可以看到bagging函式有多種呼叫方式

## s3 method for class 'factor'

ipredbagg(y, x=null, nbagg=25, control=

rpart.control(minsplit=2, cp=0, xval=0),

comb=null, coob=false, ns=length(y), keepx = true, ...)

## s3 method for class 'numeric'

ipredbagg(y, x=null, nbagg=25, control=rpart.control(xval=0),

comb=null, coob=false, ns=length(y), keepx = true, ...)

## s3 method for class 'surv'

ipredbagg(y, x=null, nbagg=25, control=rpart.control(xval=0),

comb=null, coob=false, ns=dim(y)[1], keepx = true, ...)

## s3 method for class 'data.frame'

bagging(formula, data, subset, na.action=na.rpart, ...)

由於本示例使用的是iris資料集,顯然對應最後一種呼叫方式。

formula是資料模型,我們這邊應變數是species,所以資料模型就是species~.了。

data就是所需資料集,這裡是鳶尾花資料集iris

subset寫著是可選引數(我也沒看明白是啥引數,囧)

na.action=na.rpart  這個應該是指遇到空值或者異常值的處理辦法,預設是rpart。想來也不用管那麼多了

好了,呼叫下看看

最終輸出的是**形式的,縱向表示三種花種的真實屬類,橫向表示採用決策樹之後的**屬類。可以看到100%分類正確。

下圖是用cart樹做的**結果,可以看到versicolor有5個歸類錯誤,virginica乙個歸類錯誤,bagging完勝單獨決策樹

R語言實現KNN 演算法

knn是機器學習中最簡單的分類演算法之一 就是把每乙個測試樣本跟訓練樣本中的每乙個樣本求他們的歐式距離,然後選出最小的幾個,裡面哪乙個類多 這個測試樣本就屬於哪乙個類 用r語言自帶的iris 寫了一下 data iris length iris 1 idx sample 150,100 train ...

R語言實現K近鄰 knn 演算法

需求 rm list ls knnprop read.csv knn fictious.csv header false 樣本個數 prow 86 測試資料的個數 srow 258 迴圈次數 fornum 30 knn演算法 knn 距離排序 distancec distancec order di...

區域性搜尋演算法的R語言實現

禁忌演算法 禁忌演算法是啟發式演算法對個體的應用的一種。由於在運用最速下降或者最速上公升區域性搜尋最值的時候可能會因為到了區域性最小值後停止搜尋。這裡禁忌演算法是一種可以look back的演算法,但是需要設定一些禁忌目錄來保證搜尋不是無限的。例如 在baseball salary案例中,我們希望尋...