Как понять метрики объекта H2OModelMetrics через h2o.performance

После создания модели с помощью 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.58, spec=0.68это отличается от предоставленной информации.

Если есть какой-то способ получить такие значения, как мы использовали confusionMatrix от caret пакет?

Для меня это более интуитивный показатель:

\ SQRT {(1-спецификации) ^ 2 + (1-сен) 2 ^}

чем logLoss Метрика.

2 ответа

Решение

Модели биномиальной классификации в 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

(Ответ на этот вопрос объясняет эту метрику более подробно.)

Лично я считаю максимальную точность наиболее интуитивной:

4                 max accuracy  0.288168 0.839957  64

Т.е. максимальная точность означает порог, который имеет самую низкую погрешность.

Какой из этих показателей вы считаете наиболее подходящим, вам все равно придется выбирать пороговое значение для ваших реальных невидимых данных. Один из подходов заключается в использовании порогового значения из таблицы, основанного на ваших тестовых данных (поэтому, если я думаю, что максимальная точность является наиболее важной, я бы использовал пороговое значение 0,288 в своем реальном приложении). Но я обнаружил, что усреднение порогового значения из данные испытаний и данные поезда, чтобы дать более надежные результаты.

PS После некоторого сопротивления я пришел к тому, что стал поклонником логов. Я обнаружил, что модели настроены на лучшую потерю логов (вместо настройки на лучшую отзывность, лучшую точность, лучшую точность, наименьшую MSE и т. Д. И т. Д.), Как правило, более устойчивы, когда превращаются в реальные приложения.

Мне нравится читать это по-другому. У вас уже есть Матрица замешательства, для некоторых задач вы можете (конечно!) Сразу вычислить точность как (истинные положительные значения + истинные отрицательные значения) / общее количество случаев, но для отдыха существует тенденция к сбалансированной точности (зависит от количества предикторы, которые вы должны противостоять мультиколлинеарности и устранить предвзятость из разных случаев выборки ответов).

Сбалансированная точность = ((TP/P)+(TN/N))/2 TP Истинный положительный TN Истинный отрицательный P Фактический положительный N Фактический отрицательный

Это дает истинную картину относительно ваших случаев специфичности и чувствительности, а также

Другие вопросы по тегам