ProbSpace YouTube動画視聴回数予測コンペに参加した
4/28から行われていたProbSpace主催のYouTube動画視聴回数予測コンペに参加しました。結果はpublic10位・private11位でした。
コンペ概要
このコンペはYouTube APIとして公開されているメタデータを用いて、動画視聴回数を予測するものでした。メタデータの中には、動画コンテンツの質的指標となるlike/dislike・コメント数や、タイトル名・説明文・タグ・投稿時間といった情報が含まれていました。サムネイル画像も取得することができ、テーブル×text×画像といった多様なデータを扱うこのでき点で非常に面白いコンペでした。
チームメンバー
メンバーは内定者同士で交流を深めたいという思いから、内定者slackで参加者を募り、集まった6人を2チームに分け参加しました。両チームともデータコンペ 経験者1名・NLP専門1名・画像専門1名とバランスの良いチームとなりました。
取り組み
特徴量(数値系)
- 日付に関する特徴量(時間, 曜日, 週末など)
- 計測日と投稿日の差
- likes, dislikes, comment_countに関する四則演算, 二乗, log
- categoryIdごとに視聴回数の平均, 分散, 四分位点などを算出(参考:@hirayuki)
- channelIdごとに過去のlikes, dislikes, comment_count数を集計, 四則演算, 平均, 分散, 四分位点を算出
特徴量(text)
- CountVectorize、TfidfVectorizer, Universal Sentence Encoder でベクトル化したものをTruncatedSVDで7次元に圧縮
- description, tags, title, channelTitleの単語数
- ユニーク単語数, その割合
- httpsの数
- 日本語かどうかのフラグ(参考:@hirayuki)
- 頻出単語をもとにそれが含まれているかのフラグ(Music, ted, twitter, アニメなど)
- 学習済みの言語判定(pycld2)を使って何語かを判定
Universal Sentence Encoder + TruncatedSVDで7次元圧縮した特徴量がコンペ終盤のスコアの上昇(+0.06)に大きく貢献しました。
モデル
上記から算出した255の特徴量を用いて10foldのLightgbmを採用しました。
うまくいかなかったこと・できなかったこと
KaggleのAvito Demand Prediction Challengeのsolutionを参考に画像に関する特徴量を作って見ましたが効きませんでした。また、disableされたlike, dislikeの予測に取り組見ましたがこれもダメでした。しかし、上位陣はこれによりスコアを上げているみたいなのでもう少し丁寧に取り組めば良かったです。コンペ終盤にスコアが0.735→0.724と上昇したため他のモデルとのアンサンブルやスタッキングもできませんでした。
最後に
今までテーブルデータのコンペしか出たことがありませんでしたが、内定者とチームを組むことによりNLPの前処理についてはかなり学ぶことができました。コンペ期間中にチームでZOOM飲みをしたりしコンペを通して交流ができたのは良かったです。順位もこれまでのコンペに比べると良い順位だったと思います。
以下は自然言語の前処理がナニモワカラナイ僕が参考にさせていただいたブログです。とてもわかりやすくまとめてあったので共有します。