【发布时间】:2017-03-07 11:01:46
【问题描述】:
我正在使用 google tensorflow TensorFlow Wide & Deep Learning 来预测点击率。 代码基于wide_n_deep_tutorial.py。
但是,auc 很糟糕。我检查了代码,发现在 DNN_Linear_Combined.py 中,损失函数定义为
loss = math_ops.reduce_mean(loss_unweighted, name=name)
在 CTR 预测中,训练数据不平衡。所以如果使用这种损失函数,当预测更多的负类(多数类)样本时,损失会更好。
此外,预测的点击率远高于真实点击率。 (真实点击率小于1%,平均预测点击率在30%左右。)
我的问题是:如何修改代码以使用 logloss? TF 提供这个吗? 我检查了代码,发现如下:
- tensorflow/python/ops/math_ops.py 中的函数
math_ops.reduce_logsumexp - 函数
_log_loss_with_two_classes在 tensorflow/contrib/learn/python/learn/estimators/head.py 中
但是,第一个不会对math_ops.reduce_sum 进行更改。而且我不知道如何使用第二个功能。
一句话,我的问题可以概括为:如何修改代码使用logloss函数。
谢谢。
【问题讨论】:
-
你训练要解决的任务是什么?你的数据集是什么?请澄清这些方面。