h2o Flow UI:构建模型但没有多类的 ROC 曲线或 AUC?

h2o Flow UI: Build Model but no ROC CURVE or AUC for multiclass?

参考https://dzone.com/articles/machine-learning-with-h2o-hands-on-guide-for-data

我能够按照这个例子绘制 ROC 和 AUC 曲线,但是当我对我的数据做同样的事情时,我有 "SCORING HISTORY - DEVIANCE" 而不是 "SCORING HISTORY - LOGLOSS" 和我的 "ROC CURVE - TRAINING METRICS"没有出现。

我的数据集有 2 classes, 0, 1 而不是示例中的 yes 和 no。什么决定了 ROC 曲线是否可移植?

2019 年 7 月 10 日更新参考 Maurever 的回复: 我有 "convert to enum" 用于我的响应 "label" 并将分布更改为 "bernoulli" 但我仍然无法绘制 ROC。

更新:给以后和我有同样遭遇的用户。似乎 h2o 无法将 class 的响应用作“0”和“1”,即使您转换为枚举也是如此。我的问题通过将 0 和 1 重新标记为 "Normal" 和 "Malicious" 来解决,并且将绘制 ROC 曲线。

My dataset has 2 classes, 0, 1 instead of yes and no from the example.

将会发生的事情是 H2O 决定它是一个数字列,而不是一个分类(又名因子)列。解决方法就是在该列上使用 as.factor()。在导入数据之后,但在使用它构建模型之前执行此操作。

然后它会知道要构建分类模型,而不是回归模型,并且您将获得您期望看到的指标。

这是一个示例:(或在 H2O 文档中搜索 as.factor,您会在其中找到更多内容)

在 Flow 中,您首先上传文件,然后单击解析文件,它会显示一个列列表。 categorical/factor 列在那里被称为 "Enum"(是的,这令人困惑)。您的列可能显示为数字,因此转到下拉框并将其更改为枚举。然后开始解析。然后,在那之后,建立你的模型。

您必须将响应列的类型更改为 "enum"、

或将模型参数设置中的分布更改为 "bernoulli"(二项式 class化)。

在图像中,您共享 "Enum(3)" 所以结果是多项式 classification 而不是二项式。所以你应该看到混淆矩阵而不是 ROC 曲线。 ROC 曲线只能显示 2-class class化(更多关于 ROC 的信息:https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5)。

您应该会看到类似这样的内容(如果您将分发设置为 "multinomial"):

我的问题已通过将目标变量从 0 和 1 更改为 False 和 True 值得到解决。