gpt4 book ai didi

r - 如何通过h2o.performance了解H2OModelMetrics对象的指标

转载 作者:行者123 更新时间:2023-12-02 17:30:21 26 4
gpt4 key购买 nike

使用h2o.randomForest创建模型后,然后使用:

perf <- h2o.performance(model, test)
print(perf)

我得到以下信息(值H2OModelMetrics对象)

H2OBinomialMetrics: drf

MSE: 0.1353948
RMSE: 0.3679604
LogLoss: 0.4639761
Mean Per-Class Error: 0.3733908
AUC: 0.6681437
Gini: 0.3362873

Confusion Matrix (vertical: actual; across: predicted)
for F1-optimal threshold:
0 1 Error Rate
0 2109 1008 0.323388 =1008/3117
1 257 350 0.423394 =257/607
Totals 2366 1358 0.339689 =1265/3724

Maximum Metrics: Maximum metrics at their respective thresholds
metric threshold value idx
1 max f1 0.080124 0.356234 248
2 max f2 0.038274 0.515566 330
3 max f0point5 0.173215 0.330006 131
4 max accuracy 0.288168 0.839957 64
5 max precision 0.941437 1.000000 0
6 max recall 0.002550 1.000000 397
7 max specificity 0.941437 1.000000 0
8 max absolute_mcc 0.113838 0.201161 195
9 max min_per_class_accuracy 0.071985 0.621087 262
10 max mean_per_class_accuracy 0.078341 0.626921 251

Gains/Lift Table: Extract with `h2o.gainsLift(<model>, <data>)`
or `h2o.gainsLift(<model>, valid=<T/F>, xval=<T/F>)`

我过去常常查看敏感性(召回率)和特异性来比较我的预测模型的质量,但根据所提供的信息,我无法理解此类指标。根据上述信息,我如何评估我的预测的质量?

如果我使用混淆矩阵计算此类指标,我会得到:sens=0.58spec=0.68,这与提供的信息不同。

是否有任何方法可以像我们使用 caret 包中的 confusionMatrix 那样获取此类值?

对我来说,这个指标更直观:

\sqrt{(1-spec)^2+(1-sen)^2}

logLoss指标。

最佳答案

h2o 中的二项式分类模型返回预测为“1”的概率 (p)(并且它们还会冗余地告诉您预测为“0”的概率,即1-p)。

要使用此模型,您必须决定截止。例如。你可以把它从中间分开,如果p > 0.5代表“1”,那么它就是“1”,否则它就是“0”。但您可以选择其他值,您在此报告中看到的是不同截止值下的模型质量:这就是您在“阈值”列中看到的内容。极值(请记住,基于您提供的测试数据)是这两个:

5                max precision  0.941437 1.000000   0
6 max recall 0.002550 1.000000 397

即如果将截止值指定为 0.94,则具有完美的精度;如果将截止值指定为 0.00255,则具有完美的召回率。

它显示的默认混淆矩阵使用这一行:

3                 max f0point5  0.173215 0.330006 131

(this question 的答案似乎更详细地解释了该指标。)

就我个人而言,我发现最大准确度是最直观的:

4                 max accuracy  0.288168 0.839957  64

即最大准确度是指误差最小的阈值。

无论您决定哪个指标最合适,您仍然必须为现实世界中不可见的数据确定一个阈值。一种方法是根据您的测试数据使用表中的阈值(因此,如果我认为最大准确度最重要,我会在实时应用程序中使用 0.288 的阈值。)但我发现对阈值进行平均测试数据和训练数据得出更可靠的结果。

附注在抵抗了一段时间后,我开始成为logloss的粉丝。 。我发现针对最佳对数损失进行调整的模型(而不是针对最佳召回率、最佳精度、最佳准确度、最低 MSE 等进行调整)在转化为实际应用程序时往往会更加稳健。

关于r - 如何通过h2o.performance了解H2OModelMetrics对象的指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43699454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com