我使用谷歌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是否提供这个功能? 我检查了代码,发现如下:
- 功能
math_ops.reduce_logsumexp
在tensorflow /蟒蛇/ OPS/math_ops.py - 功能
_log_loss_with_two_classes
在tensorflow /的contrib /学习/蟒蛇/学习/估计/ head.py
然而,第一个不会改变math_ops.reduce_sum
。我不知道如何使用第二个函数。
总之,我的问题可以概括为:如何修改代码以使用logloss函数。
谢谢。
那是什么,你的培训任务解决?你的数据集是什么?请澄清这些方面。 –