FANCOMI Ad-Tech Blog

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

インターンでCTR予測をしました

初めまして、9月2日から9月6日の5日間、ファンコミュニケーションズのインターンでお世話になった高専生4年の天野まゆです。今回はデータ分析ということでCTR予測というものに取り組みました。

CTR予測とは

CTR(Click Through Rate)はクリック率といい、動画や画像などの広告が表示された回数に対してどのくらいクリックされたかを割合で表します。
また、CTR予測を行うことによってユーザーのニーズがわかり効率的に広告を表示させることができます。

学習、テストデータの用意

CTR予測を行うために、必要なデータを用意します。しかし、そのままデータを出してしまうと不均衡データであったり、膨大な量のデータになってしまうのでハンドリングが大変になります。なので、今回は以下に示す2つの方法を使って学習、テストデータの用意をしました。

ランダムダウンサンプリング

データの中から等しく抽出(無作為抽出)し削除すること

ダウンサンプリング

不均衡なデータで偏った方のデータ削除すること

モデルの作成

テストデータが用意できたところでモデルを作成していきます。今回はscikit-learnというPythonの機械学習ライブラリを使ってモデルの作成を行いました。
まず、scikit-learnで学習するために先ほど作成したデータを数値化する必要があります。そのためにone-hot変換をしました。
one-hot変換が終わったところでモデルの作成に取り掛かります。今回は、ロジスティック回帰を使った予測モデルをインスタンス化し、fit関数で学習を行いました。

モデルの評価

今回のモデルの評価方法には、AUCとROC曲線を使いました。

ROC曲線

横軸をFalse Positive Rate(正解が負であるものを間違えて予測する割合)、縦軸をTrue Positive Rate(正解が正であるものを正しく予測した時の割合)とした時にできる曲線のこと。

AUC

ROC曲線下の面積。1に近くなればその予測モデルの精度は良く、0.5に近くなればランダムに予測して当たっていることになるので予測モデルの精度は悪いことがわかります。

これらを使って出た結果が以下のグラフのようになります。

f:id:fan_m_amano:20190905174348p:plain
ROC 曲線とAUC結果

※ グラフ内に書いてあるareaがAUCの値です。


AUCが1に近ければ近いほど精度が良いのですが、どこかで間違えてしまったのか非常に精度が悪い結果になってしまいました。

感想

データ分析は学校の授業でデータの取得から正規化、簡単な解析をやっていたのですが、生の膨大な量のデータを目の当たりにして最後までできるか不安でした。ですが、メンターの方がわからないことなど丁寧に教えてくださった甲斐もありなんとかモデルの評価までたどり着くことができました。今回は初めてのインターンということでとても緊張していましたが、食事会を開いてくださったり、社内も非常に過ごしやすく楽しい5日間を過ごせました。短い期間でしたがありがとうございました。