2017-04-22 44 views
1

我目前正試圖建立一個多類預測模型來預測26個英文字母中的字母。目前我使用ANN,SVM,Ensemble和nB構建了一些模型。但我堅持評估這些模型的準確性。儘管混淆矩陣顯示了按字母順序的正確和錯誤預測,但我只能得到每個模型的總體準確性。有沒有一種方法可以評估模型的準確性,類似於二項分類的ROC和AUC值。 注意:我目前使用H2o軟件包運行模型,因爲它爲我節省了更多時間。如何評估R中的多項分類模型?

回答

2

一旦您在H2O中訓練模型,如果您只需:print(fit)它會向您顯示該模型類型的所有可用指標。對於多類,我建議h2o.mean_per_class_error()。虹膜數據集

R代碼裏面例如:

library(h2o) 
h2o.init(nthreads = -1) 

data(iris) 
fit <- h2o.naiveBayes(x = 1:4, 
         y = 5, 
         training_frame = as.h2o(iris), 
         nfolds = 5) 

一旦你的模型,我們可以使用h2o.performance()功能查看所有的指標來評估模型的性能:

> h2o.performance(fit, xval = TRUE) 
H2OMultinomialMetrics: naivebayes 
** Reported on cross-validation data. ** 
** 5-fold cross-validation on training data (Metrics computed for combined holdout predictions) ** 

Cross-Validation Set Metrics: 
===================== 

Extract cross-validation frame with `h2o.getFrame("iris")` 
MSE: (Extract with `h2o.mse`) 0.03582724 
RMSE: (Extract with `h2o.rmse`) 0.1892808 
Logloss: (Extract with `h2o.logloss`) 0.1321609 
Mean Per-Class Error: 0.04666667 
Hit Ratio Table: Extract with `h2o.hit_ratio_table(<model>,xval = TRUE)` 
======================================================================= 
Top-3 Hit Ratios: 
    k hit_ratio 
1 1 0.953333 
2 2 1.000000 
3 3 1.000000 

或者你可以看看特定的公制,如mean_per_class_error

> h2o.mean_per_class_error(fit, xval = TRUE) 
[1] 0.04666667 

如果要查看測試裝置的性能,請執行以下操作:

perf <- h2o.performance(fit, test) 
h2o.mean_per_class_error(perf) 
+0

謝謝Erin的快速評論。我是否也可以知道,如果我可以純粹走過mean_per_class_error,或者我還應該留意AIC,讓單個模型選擇最佳模型。 – adimessi30

+0

我建議使用'mean_per_class_error'來選擇最佳模型。 –

+0

再次感謝Erin,讓我完成模型和他們的比較,並在這裏發表您的評論:) – adimessi30