2017-03-07 15 views
3

私は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に

  1. 機能math_ops.reduce_logsumexp
  2. tensorflow /パイソン/ OPS/math_ops.pyで機能 _log_loss_with_two_classes

ただし、最初はmath_ops.reduce_sumで変更されません。そして、私は第二の関数の使い方を知らない。

私の質問は、logloss関数を使用するようにコードを修正する方法として要約することができます。

ありがとうございました。

+0

あなたが訓練されているタスクは何ですか解決する?あなたのデータセットは何ですか?これらの側面を明確にしてください。 –

答えて

0

あなただけloglossを計算したい、と損失は、あなたは以下のようにlogloss計算することができますし、コードを変更する必要はありません指定されている場合:

log_loss = math_ops.log(loss) 
+1

ありがとうございますが、詳細をお知らせください。私の目的は、loglossを計算するのではなく、オブジェクト関数としてlogloss関数を使ってモデルを訓練することです。 estimator/head.pyでは、 'loss、weighted_average_loss = _loss(parametors)'となります。だから、どの機能を使ってログロスを得るべきですか?ありがとう。 – Cow

関連する問題