如何在tensorflow,DNNLinearCombinedClassifier中使用不同的损失函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在tensorflow,DNNLinearCombinedClassifier中使用不同的损失函数相关的知识,希望对你有一定的参考价值。
我使用谷歌tensorflow TensorFlow Wide & Deep Learning来预测点击率。该代码基于wide_n_deep_tutorial.py。
但是,auc很糟糕。我检查了代码并发现,在DNN Linear Combined.by中,损失函数被定义为
loss = math_ops.reduce_mean(loss_unweighted, name=name)
在CTR预测中,列车数据不平衡。因此,如果使用这种损失函数,当在负面类(多数类)中预测更多样本时,损失将更好。
更重要的是,CTR的预测远远大于真正的点击率。 (真正的点击率低于1%,平均预测点击率约为30%。)
我的问题是:如何修改代码以使用logloss? TF提供这个吗?我检查了代码,发现了以下内容:
- 函数
math_ops.reduce_logsumexp
在tensorflow / python / ops / math_ops.py中 - 函数
_log_loss_with_two_classes
in tensorflow / contrib / learn / python / learn / estimators / head.py
但是,第一个没有改变与math_ops.reduce_sum
。我不知道如何使用第二个功能。
总之,我的问题可以概括为:如何修改代码以使用logloss函数。
谢谢。
答案
如果您只想计算logloss,并且给出了损失,那么您可以按如下方式计算logloss,而无需更改代码:
log_loss = math_ops.log(loss)
以上是关于如何在tensorflow,DNNLinearCombinedClassifier中使用不同的损失函数的主要内容,如果未能解决你的问题,请参考以下文章