F@N Ad-Tech Blog

株式会社ファンコミュニケーションズ nend・nex8のエンジニア・技術ブログ

Domain Adaptation Neural Networkを使ったCTR予測

5日間のデータ分析のインターンに参加させていただいた田中です。普段はデータサイエンスをやっています。

内容

今回のインターンでは、Domain Adaptation Neural Networkを使ったCTR予測を行いました。

Domain Adaptation Neural Networkとは転移学習のひとつで、ラベルのあるデータとラベルのないデータを使って、ラベルのないデータに対しても予測できるように学習します。

通常のNeural Networkを使用したCTR予測では、インプレッションすることが出来たデータしか学習に使用できません。よって、インプレッションすることが出来なかったデータに対しては予測精度が著しく落ちることがあります。しかし、Domain Adaptation Neural Networkの場合、インプレッションすることが出来たデータとインプレッションすることが出来なかったデータを使うことで、すべてのデータについて高い精度で予測することが出来ます。

1日目

午前は、アドテクについて教えていただきました。

午後からは、論文をいくつか読んで、Domain Adaptation Neural Networkを構築しました。 Domain Adaptation Neural Networkの構築にはPytorchを使いました。

2日目

始めは、データの前処理とデータの読み込みを実装し、Domain Adaptation Neural Networkの学習をしました。

次に、評価関数の実装を行いました。使った評価関数は、Log Loss、Normalized Entropy、AUC、ECE(期待カリブレーション誤差)です。

CTR予測では、クリックされる確率を予測したいのであって、2クラス分類をしたいわけではありません。つまり、Log Lossなどの評価指標は不十分です。そこで、クリックされる確率を評価するのにより適切なECEという指標を用います。ECEの計算方法は、まずカリブレーションカーブを求めます。カリブレーションカーブとは、データをいくつかのグループにわけて, それぞれのグループ内での予測確率と, データの頻度が一致していることを評価します。そして、対角線とカリブレーションカーブの平均絶対誤差を計算することで求められます。この指標を使うことで、より良いCTR予測モデルを作ることが出来ます。

f:id:yuk_tanaka:20190809185539p:plain
カリブレーションカーブ

3日目

テストデータを使って、Domain Adaptation Neural Networkのテストを行いました。この時に、実装した評価関数を使って評価しました。

4日目

GPUインスタンスを借りて、Domain Adaptation Neural Networkの学習をしました。ここで、実際に運用するときのことを考慮した前処理に修正しました。

5日目

修正したデータと修正した前処理を使ってデータを加工し、Domain Adaptation Neural Networkの学習とテストと評価を行いました。また、一般的なNeural NetworkとDomain Adaptation Neural Networkの比較を行いました。

結果は以下の通りになります。3つの評価関数において、Domain Adaptationを使ったほうが良いという結果になりました。

Neural Network Domain Adaptation Neural Network
Log Loss 0.674 0.661
Normalized Entropy 0.998 0.970
AUC 0.685 0.664
ECE 0.089 0.086

参考文献

www.jstage.jst.go.jp

感想

ハイパーパラメータチューニングと検証ができなかったのが少し残念です。わからないところは非常にわかりやすく教えてもらえるのでよかったです。改善のためのアドバイスもしていただきました。5日間という短い期間でしたが、とても成長できて楽しかったです。