【问题标题】:Is there a way to nullify a specific feature in test set while evaluating a tensorflow model?有没有办法在评估张量流模型时取消测试集中的特定特征?
【发布时间】:2018-09-30 19:23:32
【问题描述】:

取消/忽略测试集中的特征背后的想法是了解模型对预测目标变量的考虑程度(通过比较评估指标的值)。对于数值变量,我想将它们设置为 0,假设乘法(带权重)为 0,因此它会从集合中消除。这种方法对吗,否则应该怎么做? 我正在使用 tensorflow 的 DNNRegressor 进行建模。

【问题讨论】:

  • 您是否考虑过其他标准形式的重要性测量,即 p 值和相关性分析?从 NN 中移除一个特征并不像设置为 0 那样简单,因为偏置项与下一层的前向方程相结合仍然会影响预测
  • 如果我错了请更正,但相关性分析不是模型学习之前用于特征选择的过滤方法吗?在模型经过训练后,我试图找出模型对特征的重要性。另外,在我的情况下,我只使用单个隐藏层,那么设置 0 的方法可以吗?
  • 那我会尝试不将其设置为零,而是设置为特征意味着以取消其效果。
  • 您能解释一下设置均值如何产生抵消效果吗?即使您可以分享一些有关基本理论的材料的链接,这也会有所帮助。谢谢。
  • 我没有具体的资料可以分享,但我的直觉是,将某个特征设置为零不一定会取消该特征,而是可能会将其设置为任意值。例如,考虑您的特征遵循以 x 为中心的高斯分布的情况,零位于尾部的最末端。然后在测试期间将特征设置为零将转化为一个非常独特的特征值,可能会引发强烈的激活。另一方面,将其设置为平均值实际上意味着一个相当常见的值,不会发生特定的响应。

标签: python tensorflow machine-learning deep-learning regression


【解决方案1】:

对于深度模型,没有通用的独立于输入的方法来执行您想要的这种特征消融(采用预训练模型,只需更改该特征在测试集上的表示)。

相反,我建议您进行训练时间消融:使用不同的特征组合训练模型的不同变体,并比较它们的验证集性能。这实际上会告诉您每个功能有多大帮助。

【讨论】:

    猜你喜欢
    • 2022-11-29
    • 1970-01-01
    • 2018-05-03
    • 2019-10-24
    • 2018-08-30
    • 1970-01-01
    • 2011-07-07
    • 2012-03-14
    • 2017-09-09
    相关资源
    最近更新 更多