【问题标题】:What is the role of `train=True` in H2O model_performance()?`train=True` 在 H2O model_performance() 中的作用是什么?
【发布时间】:2019-07-05 06:20:37
【问题描述】:

起初我认为model_performance(train=True) 给出了在我们训练模型的相同数据上进行预测的性能结果。但事实并非如此,因为该数字必须与model.model_performance(test_data=train) 相同,但事实并非如此。

考虑以下玩具示例:

# Make a dataframe
df = h2o.H2OFrame({'a':list(range(100)), 'b':list(range(100, 0, -1)), 'c':list(range(0, 200, 2))})

# Split the data
train, val, test = df.split_frame([.6, .2], seed=0)

# Build a model
from h2o.estimators.random_forest import H2ORandomForestEstimator
model = H2ORandomForestEstimator(seed=0)

# Train the model
model.train(x=train.names[:-1], y=train.names[-1], training_frame=train, validation_frame=val)

# Get performance results
print(model.model_performance(train=True)['mae'] 
      , model.model_performance(valid=True)['mae']
      , model.model_performance(test_data=test)['mae']
     )
# 1.3816 1.1968 1.4722

将结果与

进行比较
print(model.model_performance(test_data=train)['mae'] 
      , model.model_performance(test_data=val)['mae']
      , model.model_performance(test_data=test)['mae']
     )
# 0.5548 1.1968 1.4722

注意model_performance(train=True)model_performance(test_data=train)的结果不同,但model_performance(valid=True)model_performance(test_data=val)的结果是一样的。

所以我想知道model_performance(train=True)model.model_performance(test_data=train)是否应该相同(并且在H2O代码中计算有错误),或者model_performance(train=True)的目的是别的。

docs 它说

train:布尔值,可选
报告模型的训练指标。
有效:布尔值,可选
报告模型的验证指标。

但鉴于上述事实,这还不是很清楚。

【问题讨论】:

    标签: python machine-learning h2o


    【解决方案1】:

    train=True 显示模型在训练结束时的性能,这意味着它返回训练期间构建的训练指标,而test_data = traintrain 数据发送到模型进行预测并检查模型在该预测上的性能。

    【讨论】:

    • 请详细说明第一部分。此外,我认为任何答案都应该解释为什么 valid=Truetest_data=val 是相同的,而他们的培训对象却不同。
    • @LoMaPh 当使用train=Truevalid=True 时,它会报告该数据集的训练值。它是一个仅提取一点信息的辅助函数。当您提供数据集时,它会使用它进行预测。使用验证数据集,结果显然是相同的,因为它是在训练结束时进行评估的。 (根据记忆,训练错误是训练期间的错误,而不是最后的错误,这可以解释为什么它更糟。)
    • 我无法(很快)找到一个很好的参考,但确实找到了0xdata.atlassian.net/browse/TN-9,它至少显示了使用balanced_classes时的不同之处。
    • 验证mae 保持不变的一个可能原因是,在训练期间,模型永远不会从验证数据中学习。它在训练和测试期间对验证集进行预测以调整参数,因此结果相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2012-06-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多