1

我正在使用https://www.tensorflow.org/api_docs/python/tf/estimator/DNNClassifier

假设我有一个分类问题。试图对 2 件事进行分类。Class1是Happy Face,Class2不是Happy Face。在这个特定的场景中,每天查看 1,000 多个样本时,我只想抓住前 10 个快乐面孔。所以说真的,我只是想非常有信心,前 10 个面孔是快乐面孔。因此,如果它将一张快乐的脸归类为一张不快乐的脸,我可以接受。它可能会错过一些(或者说实话,它会在每天审查的 1000 多个中的 100 个)。但是,如果它错误地将一张不开心的脸归类为开心的脸……我不会对结果感到满意。

So we could say that:
GOOD = TP = (truth) Happy Face,      (prediction) Happy Face
BAD  = FP = (truth) Not Happy Face,  (prediction) Happy Face
GOOD = TN = (truth) Not Happy Face,  (prediction) Not Happy Face
OK   = FN = (truth) Happy Face,      (prediction) Not Happy Face

几乎,我可以忍受偶尔的 FN(假阴性)。但我真的不想要 FP(误报)

我有兴趣使用权重列来“减重”一个类的所有内容,并“增重”另一个类。

最后,我想要某种有偏的损失/成本函数。训练时,FP 应该“花费”更多,FN 应该仍然花费,但要少一些。查看 DNNClassifier,似乎 weight_column 可能是答案。

训练时,我可以将所有 Happy Faces 的权重设置为 1.5+(或其他东西,需要进行实验)。我可以将所有 Not Happy Faces 设置为 0.5(或其他值)。

所以,归结为几个问题:

  1. 这就是重量列的用途吗?

  2. 我看到权重列应该是一个特征/输入。在这种情况下,我不希望将权重列用作特征,因为我假设模型会了解权重与分类的相关性,并严重依赖该输入作为预测变量。那么,tensorflow 是否使用权重列作为输入?我希望它不会。

  3. 假设/希望 TF 不使用权重列作为输入,在预测/评估时,我应该为权重列传入什么?1?

  4. 如果 weight_column 不是答案,那么处理这种情况的推荐解决方案是什么(一个特定类的有偏成本函数)?我不需要模型在所有分类上都是 100% 准确的。但是对于一个类,当它说它是一张快乐的脸时,我希望它非常自信地认为它是一张快乐的脸。如果它漏掉了几张Happy Faces,它就会认为它们不是Happy Faces。没关系。只要我每天得到我的前 10 个“最快乐”的面孔,我就很高兴 :)

谢谢你的帮助。我很感激。

4

1 回答 1

0

我认为使用阈值是处理 FN 和 FP 权衡的更好方法。您可以执行以下操作:

probability_of_1 = predictions from estimator
if probability_of_1 > YOUR_THRESHOLD:
  output = happy-face
else:
  output = not-happy-face
于 2018-01-29T17:23:56.997 回答