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

问题描述 投票:6回答:2

使用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.68t与提供的信息不同。

如果有任何方法可以获得像我们使用confusionMatrix包中的caret这样的值?

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

logLoss指标。

r h2o
2个回答
6
投票

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

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

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的粉丝。我发现调整为最佳logloss的模型(而不是调整以获得最佳回忆,最佳精度,最佳精度,最低MSE等等)在转变为实际应用时往往更加强大。


2
投票

我喜欢以不同的方式阅读。你已经有了混淆矩阵,对于一些问题,你可以(当然!)直接计算准确度为(真阳性+真阴性)/总病例但是对于休息,有一种趋势是平衡准确性(取决于数量)预测因子必须对抗多重共线性并从不同样本大小的响应案例中消除偏差。

平衡精度=((TP / P)+(TN / N))/ 2 TP真正正确TN真负负P实际正N实际负数

这也为您的特异性和敏感性案例提供了真实的图片

© www.soinside.com 2019 - 2024. All rights reserved.