Ensemble1 : Bagging


  • データナビゲーション
    Rは基本データ「Iris」データを用い,Ensembleモデルを用いる前にデータの基本構造を探索する.
    ターゲット変数はSpeciesに設定され、setosaとnonetosaに分けられます.
  • iris$Species <- as.character(iris$Species)
    iris$Species[iris$Species !="setosa"] <- "non setosa"
    iris$Species <- as.factor(iris$Species)
    
  • Bagging
  • library(ipred)
    irisbag = bagging(Species ~ ., data=iris, nbagg = 135)
    
    library(caret)
    tmp = sample(1:150,120)
    iris_tr = iris[tmp,]
    iris_test = iris[-tmp,]
    irisbag_pred = predict(irisbag, iris_test)
    table(irisbag_pred, iris_test$Species)
    #Parameter selection
    tr_err = test_err = c()
    for (i in 1:150){
      irisbag = bagging(Species ~ ., data = iris_tr, nbagg = i)
      iris_pred_tr = predict(irisbag, iris_tr)
      iris_pred_test = predict(irisbag, iris_test)
      tr_err[i] = 1-sum(diag(table(iris_pred_tr, iris_tr$Species)))/nrow(iris_tr)
      test_err[i] = 1-sum(diag(table(iris_pred_test, iris_test$Species)))/nrow(iris_test)
    }
    
    plot(test_err, type="l", ylim=c(0,0.3))
    lines(tr_err,col="red")
    
    ctrl = trainControl(method = "cv", number = 10)
    train(Species ~ ., data = iris, method = "treebag",
          trControl = ctrl)
    
    グラフをParameter selectionで確認したところ,1〜150の区間で同じ誤り率と10倍交差検証で得られた最適木は135個,計135個と推定された.

    規格分類をBaggingで行い,精度=1.0,誤り率=0とした.