如何在tensorflow,DNNLinearCombinedClassifier中使用不同的损失函数

时间:2017-03-07 11:01:47

标签: tensorflow deep-learning

我使用google tensorflow TensorFlow Wide & Deep Learning来预测点击率。 该代码基于wide_n_deep_tutorial.py

然而,auc很糟糕。我检查了代码并发现,在DNN_Linear_Combined.py中,损失函数被定义为

export class MyComponent {
  constructor(private emailValidator:EmailValidator, fb:FormBuilder){}

  this myForm = fb.group({
    email: [], [this.emailValidator.checkEmail.bind(this.emailValidator)]
  });
}

在CTR预测中,列车数据不平衡。因此,如果使用这种损失函数,当在负面类(多数类)中预测更多样本时,损失将更好。

更重要的是,点击率预测比实际点击率大得多。 (真正的点击率小于1%,平均预测点击率约为30%。)

我的问题是:如何修改代码以使用logloss? TF提供这个吗? 我检查了代码,发现了以下内容:

  1. 在tensorflow / python / ops / math_ops.py
  2. 中的函数loss = math_ops.reduce_mean(loss_unweighted, name=name) 张小流中的
  3. function math_ops.reduce_logsumexp / contrib / learn / python / learn / estimators / head.py
  4. 但是,第一个不会对_log_loss_with_two_classes进行更改。我不知道如何使用第二个功能。

    总之,我的问题可以概括为:如何修改代码以使用logloss函数。

    感谢。

1 个答案:

答案 0 :(得分:0)

如果您只是想计算对数损失,并且给出了损失,那么您可以按如下方式计算logloss,并且您不需要更改代码:

log_loss = math_ops.log(loss)