预测时使用的阈值

Threshold used at prediction

根据 H2O 文档,预测时使用的阈值是训练中的最大 F1 阈值。 性能函数,

h2o.performance(model, newdata = test)

实际上 运行 测试集上的预测以计算混淆矩阵。

奇怪的是,我在使用以下方法预测相同的测试集时得到了不同的混淆矩阵:

h2o.predict(object, newdata=test).

这意味着 h2o.performance() 使用的阈值与 h2o.predict() 不同。 我想知道如何根据预测确定阈值。

H2O 对 h2o.performance() 和 h2o.predict() 使用最大 F1 阈值。区别在于它将使用什么数据集来估计最大 F1 阈值。


h2o.predict() 将使用它在训练期间选择的阈值。它根据模型的训练方式使用不同的最大 F1 阈值。基本上:

  • 如果您只有训练数据 - 最大 F1 阈值来自训练数据模型。
  • 如果训练期间有验证数据 - 最大 F1 阈值来自验证数据模型。

这在documentation and also on 中有解释。根据您在训练期间是否有验证数据,您将看到由 训练或验证 数据集确定的最大 F1 阈值。

h2o.performance() 将采用模型和新数据并计算什么阈值将为 新数据[=29= 提供最高 F1 ].在您的情况下,test 用于计算最大 F1 阈值。