Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Presentation 1

2018/7/5
あきやまさん作成資料

  • Login to see the comments

  • Be the first to like this

Presentation 1

  1. 1. リンクバル イベントレコメンドエンジン作成 WINNER’S SOLUTION あきやま
  2. 2. はじめまして 秋山卓也 株式会社KDDI総合研究所 デジタルマーケティングとか新規事業検討とか 分析コンペとか Kaggle Expert twitter:@ak_iyama
  3. 3. 参加動機 自分が得意とするテーブルデータ 賞金が高い 優勝して「街コン日本一」を名乗りたかった
  4. 4. 本コンペのポイント データの理解・整備 ランキング学習 ターゲットエンコーディング
  5. 5. 本コンペのポイント データの理解・整備 ランキング学習 ターゲットエンコーディング
  6. 6. データの理解・整備 タスクの理解 本コンペのタスク • 街コンサイト上のユーザに対して、関連度の高そうなイベントをランキング形式で予測 • その後の実際のユーザのサイト上でのアクションを元にスコアリング • 関連度は下記のアクションの順番で高く評価され、 関連度の高いイベントをランキング上位に置くと高スコアとなる • 購入 • ブックマーク • イベントページの閲覧
  7. 7. 予測対象ユーザ: 予測対象期間に何れかのイベントに何れかの行動を起こしたユーザ(2,886人) ※予測対象ユーザはデータとして与えられている ※予測対象ユーザは9/24時点では未登録で情報のないユーザもいる 予測対象イベント: 09/30までに開催されたサイト掲載済み全イベント(158,392イベント) 20172014 09/24 09/30 ここまでのデータを使って ここの行動を予測 組み合わせ: 2,886人× 158,392イベント= 457,119,312件!? データの理解・整備 時系列でいうと…
  8. 8. データの理解・整備 そんなバカなことはできないので… 20172014 09/24 09/30 ここの1週間でデータ確認 09/24までに開催されるイベントに対するアクションのうち、 • 全アクション数:19924 • 09/17までに開催されたイベントに対するアクション数:110 (うち閲覧が109、ブックマークが1) 09/17 予測対象期間以前に開催されたイベントは考慮しない方針に 予測対象イベント数:158,392 → 2,422 組み合わせ数: 2,886人× 2,422イベント= 6,989,892件
  9. 9. データの理解・整備 学習・検証用データ整備 20172014 09/24 09/3009/1709/1009/03 testセット validセット trainセット1trainセット2trainセット3 08/27 ・・・ ・・・ 直近1週間を検証用データとし、学習用データはそれ以前のものを1週間区切りで管理する メリット: 学習のスケーラビリティ (少数データでモデルを組んだあと、好きなだけデータを増やせる)
  10. 10. データの理解・整備 データ量問題 • 予測対象イベントを減らしたとしても、組み合わせはまだ多い • 組み合わせ数(再喝): 2,886人× 2,422イベント= 6,989,892件 • 学習セットを増やすととてもメモリに乗らない、学習時間がかかりすぎる • 実際にアクションが起こるユーザ×イベントの組み合わせは少ない • 09/17週では11,795件 • 正例に対して負例が極端に多い“不均衡データ” Negative down-sampling + bagging(のアレンジ) • 正例はそのまま、負例を1/xにdown-sampling • down-samplingしたデータセットをx個作成し、baggingする ※trainセットのみ。validセットおよびtestセットはdown-samplingしない。
  11. 11. データの理解・整備 データ量問題 • down-sampling+baggingの割合と回数xの検証 ※コンペ期間中は「えいや!」で割合を1/8とした 0.2 0.205 0.21 0.215 0.22 0.225 0.23 0 5 10 15 20 25 validスコア(nDCG@20) down-samplingの割合(1/x)とバギングの回数(x) ※学習セットは9/10週の 1週のみで検証
  12. 12. データの理解・整備 学習セットの量 • 学習セット(学習に用いる週数)は多ければ多いほど良い ※コンペ期間中は「えいや!」で12週とした ※学習セットを増やす事でメモリに乗らなくなる場合、down-samplingの割合を調節すれば良い 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0 2 4 6 8 10 12 14 validスコア(nDCG@20) trainセット数 ※down-samplingの割合は1/8で baggingはせずに検証
  13. 13. 本コンペのポイント データの理解・整備 ランキング学習 ターゲットエンコーディング
  14. 14. ランキング学習 タスクの理解(再び) 本コンペのメトリック nDCG(normalized discounted cumulative gain) @ 20 各ユーザに対しての関連イベントランキング20位までが、より関連度の高い順に並んでいる ほど高いスコアとなる
  15. 15. ランキング学習 NDCGの最適化 ランキング学習によりNDCGを直接最適化 参考: From RankNet to LambdaRank to LambdaMART: An Overview https://www.microsoft.com/en-us/research/publication/from-ranknet-to-lambdarank-to-lambdamart-an-overview/# Light GBMでは、 applicationをLambdaLankとすることでランキング学習が可能 ※XGBoost, Catboost等でも可能
  16. 16. ランキング学習 MAX_POSITION • LightGBMではNDCG@kのkはmax_positionというパラメータとして変更が可能 負例が多く、低い順位の方の最適化も考慮した方がよく、kは大き目が良い ※コンペ期間中は「えいや!」でmax_positionを1000とした 0.2 0.202 0.204 0.206 0.208 0.21 0.212 0.214 0.216 0.218 0.22 0 200 400 600 800 1000 1200 validスコア(nDCG@20) 最適化に用いるnDCG@kのk ※学習セットは9/10週の1週のみ down-samplingの割合は1/8で baggingはせずに検証
  17. 17. ランキング学習 EARLY_STOPPING_ROUNDS • ランキング学習は学習時のスコアが暴れやすいため、early_stopping_roundsは大きめ にした方が良い ※コンペ期間中は「えいや!」でearly_stopping_roundsを400とした 0.2 0.202 0.204 0.206 0.208 0.21 0.212 0.214 0.216 0.218 0.22 0 200 400 600 800 1000 1200 1400 validスコア(nDCG@20) iteration数 ※学習セットは9/10週の1週のみ ndcg@kのkは1000とし、 down-samplingの割合は1/8で baggingはせずに検証
  18. 18. 本コンペのポイント データの理解・整備 ランキング学習 ターゲットエンコーディング
  19. 19. ターゲットエンコーディング 基本的な特徴作成戦略 • 時間がなかったため、あまり深いEDAはしていない • 下記の観点で、登録情報や過去ログから統計的な特徴を作成 • ユーザに関する特徴(152種類) • イベントに関する特徴(67種類) • ユーザ×イベントの組み合わせに関する特徴(9種類) • ターゲットエンコーディング特徴(48種類) 合計276種類
  20. 20. ターゲットエンコーディング ターゲットエンコーディング特徴作成 • 「ユーザの性別」「ユーザの居住地」「イベントの開催地」の3つのカテゴリ変数について、 それぞれの組み合わせにおけるアクションの発生しやすさを特徴量化 例: 東京在住ユーザのアクション数 10, 000件 東京在住×埼玉開催のアクション数 1,000件 東京在住×埼玉開催の起こりやすさ 0.1 青森在住ユーザのアクション数 1,000件 青森在住×青森開催のアクション数 600件 青森在住×青森開催の起こりやすさ 0.6 件数では青森×青森が少ないが 割合で見ると発生しやすいことが 定量化できる
  21. 21. ターゲットエンコーディング ターゲットエンコーディング特徴の影響 • ターゲットエンコーディング特徴の有無によるスコアの違い ※学習セットは9/10週の1週のみ ndcg@kのkは1000とし、 down-samplingの割合は1/8で baggingはせずに検証 0.2 0.202 0.204 0.206 0.208 0.21 0.212 0.214 0.216 0.218 0.22 なし あり validスコア(nDCG@20) ターゲットエンコーディング特徴
  22. 22. • gainの上位にターゲットエンコーディング特徴が多数 ターゲットエンコーディング FEATURE IMPORTANCE
  23. 23. まとめ 本コンペのポイント データの理解・整備 ランキング学習 ターゲットエンコーディング タスクとデータを正しく理解し、基本的な処理を確実に行うことが大事!!
  24. 24. 余談 メモリで殴ったんじゃないかと思われそうですが… (実際メモリ256GBマシンでしたが…) • 12週データ学習で、手元スコア0.26357 → 最終LBスコア0.27708だったので • スコア差的には、4週くらいの学習でも優勝できた(と思う) • 前述のように、down-samplingでも対応可能 学習セット数やハイパーパラメータ次第で、まだスコアが伸びる余地あり
  25. 25. 余談の余談 人の行動からビジネスを最適化するのが好きなので、非常に楽しいコンペでした! 今後見かけたら是非「街コン日本一」や「街コンキング」と呼んでください! ちなみに既婚です

×