2017-03-07 80 views
3

我使用谷歌tensorflow TensorFlow Wide & Deep Learning来预测点击率。该代码基于wide_n_deep_tutorial.py如何在张量流中使用不同的损失函数,DNNLinearCombinedClassifier

但是,auc是坏的。我检查代码,结果发现,的int DNN_Linear_Combined.py,损失函数被定义为

loss = math_ops.reduce_mean(loss_unweighted, name=name) 

在CTR预测,列车数据是不平衡的。所以如果使用这种损失函数,当预测更多的样本在负值类(多数类)时,损失会更好。

更重要的是,预测的点击率远高于真实点击率。 (真实点击率低于1%,平均预测点击率约为30%。)

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

  1. 功能math_ops.reduce_logsumexp在tensorflow /蟒蛇/ OPS/math_ops.py
  2. 功能_log_loss_with_two_classes在tensorflow /的contrib /学习/蟒蛇/学习/估计/ head.py

然而,第一个不会改变math_ops.reduce_sum。我不知道如何使用第二个函数。

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

谢谢。

+0

那是什么,你的培训任务解决?你的数据集是什么?请澄清这些方面。 –

回答

0

如果你只是想计算logloss和损失给出,那么你可以按照以下计算logloss,你不需要修改代码:

log_loss = math_ops.log(loss) 
+1

谢谢,但你能给更多的细节?我的目的不是要计算logloss,而是要用logloss函数作为对象函数来训练模型。在estimator/head.py中,'loss,weighted_average_loss = _loss(parametors)'。那么我应该使用哪个函数来获取logloss?谢谢。 – Cow

相关问题