タイタニック号の生死判定の精度をC5.0とRandomForestとGBMで比較してみた
仕事でC5.0とRandomForest、GBMを比較することがあったのでタイタニック号の生死判定をcaretパッケージでやってみた。 caretの使い方は以下を参考にさせて頂いた。
Tokyo r11caret from dichika
以下コード
library(caret) data(Titanic) # Create Data tmp.titanic <- data.frame(Titanic) titanic <- data.frame( Class = rep(tmp.titanic$Class, tmp.titanic$Freq), Sex = rep(tmp.titanic$Sex, tmp.titanic$Freq), Age = rep(tmp.titanic$Age, tmp.titanic$Freq), Survived = rep(tmp.titanic$Survived, tmp.titanic$Freq) ) rm(tmp.titanic) rm(Titanic) # Training train.c50 <- train(Survived~., titanic, method="C5.0") train.rf <- train(Survived~., titanic, method="rf", importance=TRUE) train.gbm <- train(Survived~., titanic, method="gbm") # Importance of Variance varImp.c50 <- varImp(train.c50) varImp.rf <- varImp(train.rf) varImp.gbm <- varImp(train.gbm) # Prediction ## extractPrediction()だとエラーになるので個別に予測 test.c50 <- predict(train.c50, newdata=titanic) test.rf <- predict(train.rf, newdata=titanic) test.gbm <- predict(train.gbm, newdata=titanic) # ConfusionMatrix confmat.c50 <- confusionMatrix(test.c50, titanic$Survived) confmat.rf <- confusionMatrix(test.rf, titanic$Survived) confmat.gbm <- confusionMatrix(test.gbm, titanic$Survived)
変数の重要度をプロットしてみる。どの手法も性別は重要らしい。
C5.0
RandomForest
GBM
予測の精度はC5.0 < RandomForest = GBMだった
> confmat.c50 Confusion Matrix and Statistics Reference Prediction No Yes No 1364 351 Yes 126 360 Accuracy : 0.7833 95% CI : (0.7655, 0.8003) No Information Rate : 0.677 P-Value [Acc > NIR] : < 2.2e-16 Kappa : 0.4598 Mcnemar's Test P-Value : < 2.2e-16 Sensitivity : 0.9154 Specificity : 0.5063 Pos Pred Value : 0.7953 Neg Pred Value : 0.7407 Prevalence : 0.6770 Detection Rate : 0.6197 Detection Prevalence : 0.7792 'Positive' Class : No > confmat.rf Confusion Matrix and Statistics Reference Prediction No Yes No 1470 441 Yes 20 270 Accuracy : 0.7905 95% CI : (0.7729, 0.8074) No Information Rate : 0.677 P-Value [Acc > NIR] : < 2.2e-16 Kappa : 0.4334 Mcnemar's Test P-Value : < 2.2e-16 Sensitivity : 0.9866 Specificity : 0.3797 Pos Pred Value : 0.7692 Neg Pred Value : 0.9310 Prevalence : 0.6770 Detection Rate : 0.6679 Detection Prevalence : 0.8682 'Positive' Class : No > confmat.gbm Confusion Matrix and Statistics Reference Prediction No Yes No 1470 441 Yes 20 270 Accuracy : 0.7905 95% CI : (0.7729, 0.8074) No Information Rate : 0.677 P-Value [Acc > NIR] : < 2.2e-16 Kappa : 0.4334 Mcnemar's Test P-Value : < 2.2e-16 Sensitivity : 0.9866 Specificity : 0.3797 Pos Pred Value : 0.7692 Neg Pred Value : 0.9310 Prevalence : 0.6770 Detection Rate : 0.6679 Detection Prevalence : 0.8682 'Positive' Class : No
時間があったらルールを可視化してみる。(party-kitでツリーを描けなかった。。。)