1. Bagginggit
Bagging即套袋法,其算法過程以下:github
從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被屢次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,獲得k個訓練集。(k個訓練集之間是相互獨立的)算法
每次使用一個訓練集獲得一個模型,k個訓練集共獲得k個模型。(注:這裏並無具體的分類算法或迴歸方法,咱們能夠根據具體問題採用不一樣的分類或迴歸方法,如決策樹、感知器等)api
對分類問題:將上步獲得的k個模型採用投票的方式獲得分類結果;對迴歸問題,計算上述模型的均值做爲最後的結果。(全部模型的重要性相同)ide
2. 算法設計過程函數
2.1. 隨機採樣方法spa
樣本總數150條(Iris數據集)設計
抽樣方法是有放回隨機抽樣。對150個樣本的數據集,進行150次又放回隨機採樣,這樣獲得具備和原樣本空間同等大小的樣本集。
這樣操做次,獲得訓練樣本。33個用決策樹C50,34個樸素貝葉斯,33個用KNN。
2.2. 模型評價方法
2.2.1. 包外錯誤率
由抽樣方法可知,每次抽樣大約有36.8%的數據未被抽到,這36.8%將做爲包外數據,包外錯誤率:
圖 1 包外錯誤率
2.2.2. 成對多樣性度量
a->兩個個體學習器對同一條數據(h1=h2=Class),分類都與原數據集分類相同的總和
b->兩個個體學習器對同一條數據(h1=class,h2!=Class)
c->兩個個體學習器對同一條數據(h1!=class,h2=Class)
d->兩個個體學習器對同一條數據(h1!=class,h2!=Class),分類都與原數據集分類都不相同的總和
K統計量
Q統計量
相關係數
不一致度量
表1兩個分類器的分類結果組合狀況
圖2 多樣性度量矩陣
2.3. 僞代碼
|
過程: for i to T
end for i to T for j=i+1 to T 統計a,b,c,d end end |
3. 附錄
數據集簡介:
表2 iris
sepal length |
萼片長度 |
sepal width |
萼片寬度 |
petal length |
花瓣長度 |
petal width |
花瓣寬度 |
Class |
Iris-setosa -> 1 Iris-versicolor -> 2 Iris-virginica-> 3 |
R語言中的坑
第一次用R語言
例如
testData<-read.csv("G:\\testData.csv", header = FALSE)
將數據集導入以後 調用相關KNN NavieBayes等函數沒法成功 緣由是在導入的時候 數據集的class列 被自動轉換成了整型(int)
tempTrain[,nc]<-as.factor(tempTrain[,nc])
調用as.factor()將class轉換爲因子 就可解決
還有 代碼重複利用率低的問題 在下一次更新代碼之中 能夠解決
感謝你們批評指正