【问题标题】:How do UnknownCategoricalLevels affect the confidence values of H2O model predictionsUnknownCategoricalLevels 如何影响 H2O 模型预测的置信度值
【发布时间】:2017-11-15 01:00:36
【问题描述】:

我正在使用由h2o flow 生成的 DRF 模型。当针对这个模型运行新的输入数据时(在带有EasyPredictModelWrapper的java程序中使用它的MOJO),有大量的UnknownCategoricalLevels(使用getUnknownCategoricalLevelsSeen()getUnknownCategoricalLevelsSeenPerColumn()methods检查)。

我的解决方法是仅使用那些预测置信度高于某个阈值(例如 0.90)的预测。 IE。模型选择的classProbability 必须大于要使用的阈值。

我的问题是:

  1. 这个解决方案是错误的(即实际上并没有解决/解决问题(例如unknownlevels 实际上不会影响类概率值))还是有效 解决方法解决问题?
  2. 有没有更好的方法来解决这个问题?

谢谢。

【问题讨论】:

    标签: machine-learning h2o


    【解决方案1】:

    未知的分类级别被视为该列的 NA。

    在不了解数据的详细信息(包括误报和误报的成本影响)的情况下,我不会说您需要对具有 NA 的行与没有的行进行任何不同的阈值。 (DRF 已经很好地处理了 NA。)

    请注意,内置阈值是 max-F1(不是 0.5)。因此,如果您要更改具有未知值的行的阈值,则它与 max-F1(而不是 0.5)相关。使用自己的阈值当然是一种有效的方法。

    如果您想可视化您的树以更轻松地查看 NA 的行为,您可以按照此处的说明进行操作:

    还有其他处理它的策略,例如对分类输入列进行目标编码并将 NA 视为平均目标值。 (这有效地将分类变量转换为数字变量,但需要您对数据进行预处理。)

    【讨论】:

    • 只是为了进一步澄清,当您说 “因此,如果您要更改具有未知值的行的阈值,它是相对于 max-F1(而不是 0.5)。” 做您的意思是,如果我要在 java 代码中使用模型的 MOJO 并设置一个自定义阈值(例如 max_mean_perclass_accuracy)t0 并带有类似return (p.classProbabilities[1] >= t0) ? 1: 0; 的行,那么模型实际上将使用 maxF1+t0 的阈值或只是默认阈值是maxF1?谢谢。
    • 我将“默认”一词更改为“内置”。 MOJO 只知道 max-F1 烘焙。来自 MOJO 的预测类基于 max-F1。因此,您必须编写自己的代码来比较 p.classProbabilities[1],如上所示,以使用不同的阈值来确定预测的类。
    猜你喜欢
    • 2021-05-26
    • 2017-06-25
    • 1970-01-01
    • 2019-03-28
    • 2013-04-21
    • 2019-10-04
    • 2019-12-21
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多