adaboost原理與實踐


Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。其算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的准確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最后將每次訓練得到的分類器最后融合起來,作為最后的決策分類器。對adaBoost算法的研究以及應用大多集中於分類問題,同時也出現了一些在回歸問題上的應用。就其應用adaBoost系列主要解決了: 兩類問題、多類單標簽問題、多類多標簽問題、大類單標簽問題、回歸問題。它用全部的訓練樣本進行學習。

                  

                                   

   

 

Adaboost算法優缺點:

優點

1)  Adaboost是一種有很高精度的分類器

2)  可以使用各種方法構建子分類器,Adaboost算法提供的是框架

3)  當使用簡單分類器時,計算出的結果是可以理解的。而且弱分類器構造極其簡單

4)  簡單,不用做特征篩選

5)  不用擔心overfitting(過度擬合)

缺點

1)  容易受到噪聲干擾,這也是大部分算法的缺點

2)  訓練時間過長

3)  執行效果依賴於弱分類器的選擇

 

#########################Weka###########################

Adaboost m1是一個非常受歡迎的二元分類算法

 

 

#################R語言############################

library(adabag)

## rpart library should be loaded

data(iris)

iris.adaboost <- boosting(Species~., data=iris, boos=TRUE, mfinal=5)

iris.adaboost

 

 

## Data Vehicle (four classes)

data(Vehicle)

l <- length(Vehicle[,1])

sub <- sample(1:l,2*l/3)

mfinal <- 10

maxdepth <- 5

 

Vehicle.rpart <- rpart(Class~.,data=Vehicle[sub,],maxdepth=maxdepth)

Vehicle.rpart.pred <- predict(Vehicle.rpart,newdata=Vehicle[-sub, ],type="class")

tb <- table(Vehicle.rpart.pred,Vehicle$Class[-sub])

error.rpart <- 1-(sum(diag(tb))/sum(tb))

tb

error.rpart

 

Vehicle.adaboost <- boosting(Class ~.,data=Vehicle[sub, ],mfinal=mfinal, coeflearn="Zhu",

    control=rpart.control(maxdepth=maxdepth))

Vehicle.adaboost.pred <- predict.boosting(Vehicle.adaboost,newdata=Vehicle[-sub, ])

Vehicle.adaboost.pred$confusion

Vehicle.adaboost.pred$error

 

#comparing error evolution in training and test set

errorevol(Vehicle.adaboost,newdata=Vehicle[sub, ])->evol.train

errorevol(Vehicle.adaboost,newdata=Vehicle[-sub, ])->evol.test

 

plot.errorevol(evol.test,evol.train)

 

 

 

 


免責聲明!

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



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