私はCTRを予測するためにgoogle tensorflow TensorFlow Wide & Deep Learningを使用しています。 コードはwide_n_deep_tutorial.pyに基づいています。tensorflowで異なる損失関数を使用する方法、DNNLinearCombinedClassifier
しかし、aucは悪いです。私は、コードをチェックしDNN_Linear_Combined.py、損失関数は、CTRの予測では
loss = math_ops.reduce_mean(loss_unweighted, name=name)
として定義されたINT、列車のデータがアンバランスだったことがわかりました。したがって、この種の損失関数を使用すると、負のクラス(過半数クラス)でより多くのサンプルを予測するときに損失が改善されます。
さらに、予測されるクリック率は、実際のクリック率よりはるかに大きくなります。 (実際のCTRは1%未満です。平均予測CTRは約30%です)
私の質問は:loglossを使用するコードを変更する方法ですか? TFがこれを提供していますか? 私は、コードを確認し、次のが見つかりました:tensorflowに/ contrib /学ぶ/パイソン/学ぶ/推定/ head.pyに
- 機能
math_ops.reduce_logsumexp
- tensorflow /パイソン/ OPS/math_ops.pyで機能
_log_loss_with_two_classes
を
ただし、最初はmath_ops.reduce_sum
で変更されません。そして、私は第二の関数の使い方を知らない。
私の質問は、logloss関数を使用するようにコードを修正する方法として要約することができます。
ありがとうございました。
あなたが訓練されているタスクは何ですか解決する?あなたのデータセットは何ですか?これらの側面を明確にしてください。 –