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

问题描述 投票:3回答:1

我使用谷歌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提供这个吗?我检查了代码,发现了以下内容:

  1. 函数math_ops.reduce_logsumexp在tensorflow / python / ops / math_ops.py中
  2. 函数_log_loss_with_two_classes in tensorflow / contrib / learn / python / learn / estimators / head.py

但是,第一个没有改变与math_ops.reduce_sum。我不知道如何使用第二个功能。

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

谢谢。

tensorflow deep-learning
1个回答
0
投票

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

log_loss = math_ops.log(loss)
© www.soinside.com 2019 - 2024. All rights reserved.