我使用google tensorflow TensorFlow Wide & Deep Learning来预测点击率。 该代码基于wide_n_deep_tutorial.py。
然而,auc很糟糕。我检查了代码并发现,在DNN_Linear_Combined.py中,损失函数被定义为
export class MyComponent {
constructor(private emailValidator:EmailValidator, fb:FormBuilder){}
this myForm = fb.group({
email: [], [this.emailValidator.checkEmail.bind(this.emailValidator)]
});
}
在CTR预测中,列车数据不平衡。因此,如果使用这种损失函数,当在负面类(多数类)中预测更多样本时,损失将更好。
更重要的是,点击率预测比实际点击率大得多。 (真正的点击率小于1%,平均预测点击率约为30%。)
我的问题是:如何修改代码以使用logloss? TF提供这个吗? 我检查了代码,发现了以下内容:
loss = math_ops.reduce_mean(loss_unweighted, name=name)
张小流中的math_ops.reduce_logsumexp
/ contrib / learn / python / learn / estimators / head.py 但是,第一个不会对_log_loss_with_two_classes
进行更改。我不知道如何使用第二个功能。
总之,我的问题可以概括为:如何修改代码以使用logloss函数。
感谢。
答案 0 :(得分:0)
如果您只是想计算对数损失,并且给出了损失,那么您可以按如下方式计算logloss,并且您不需要更改代码:
log_loss = math_ops.log(loss)