1
我目前正試圖建立一個多類預測模型來預測26個英文字母中的字母。目前我使用ANN,SVM,Ensemble和nB構建了一些模型。但我堅持評估這些模型的準確性。儘管混淆矩陣顯示了按字母順序的正確和錯誤預測,但我只能得到每個模型的總體準確性。有沒有一種方法可以評估模型的準確性,類似於二項分類的ROC和AUC值。 注意:我目前使用H2o軟件包運行模型,因爲它爲我節省了更多時間。如何評估R中的多項分類模型?
我目前正試圖建立一個多類預測模型來預測26個英文字母中的字母。目前我使用ANN,SVM,Ensemble和nB構建了一些模型。但我堅持評估這些模型的準確性。儘管混淆矩陣顯示了按字母順序的正確和錯誤預測,但我只能得到每個模型的總體準確性。有沒有一種方法可以評估模型的準確性,類似於二項分類的ROC和AUC值。 注意:我目前使用H2o軟件包運行模型,因爲它爲我節省了更多時間。如何評估R中的多項分類模型?
一旦您在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)
謝謝Erin的快速評論。我是否也可以知道,如果我可以純粹走過mean_per_class_error,或者我還應該留意AIC,讓單個模型選擇最佳模型。 – adimessi30
我建議使用'mean_per_class_error'來選擇最佳模型。 –
再次感謝Erin,讓我完成模型和他們的比較,並在這裏發表您的評論:) – adimessi30