直接在R中实施自定义停止指标以在H2O模型训练期间进行优化

时间:2018-08-02 15:39:44

标签: r customization packages random-forest h2o

我正在尝试实现MLmetrics FBeta_Score()中的R package

FBeta_Score <- function(y_true, y_pred, positive = NULL, beta = 1) {
   Confusion_DF <- ConfusionDF(y_pred, y_true)
   if (is.null(positive) == TRUE) 
   positive <- as.character(Confusion_DF[1,1])
   Precision <- Precision(y_true, y_pred, positive)
   Recall <- Recall(y_true, y_pred, positive)
   Fbeta_Score <- (1 + beta^2) * (Precision * Recall) / (beta^2 * Precision + 
   Recall)
   return(Fbeta_Score)
 }

H2O distributed random forest model中,我想在训练阶段使用custom_metric_func选项对其进行优化。 h2o.randomForest()函数的帮助文档说:

  

自定义评估功能的参考,格式:   'language:keyName = funcName'

但是我不知道如何直接从R中使用它以及我应该在stopping_metric选项中指定的内容。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:6)

当前仅对基于Python的自定义函数提供后端支持,可以通过h2o.upload_custom_metric()函数将其上传到后端。然后,该函数将返回一个函数引用(这是一个命名约定格式为'language:keyName=funcName'的字符串)。然后您可以传递给custom_metric参数。

例如:

custom_mm_func = h2o.upload_custom_metric(CustomRmseFunc, func_name="rmse", func_file="mm_rmse.py")

返回具有以下值的函数引用:

> print(custom_mm_func)
python:rmse=mm_rmse.CustomRmseFuncWrapper

关于将自定义指标用作停止指标的第二个问题,您可以在此处遵循一张吉拉票:https://0xdata.atlassian.net/browse/PUBDEV-5261

您可以找到有关如何使用自定义指标here的更多详细信息。