Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sansan×atmaCup#6 1st place solution

A2cac4b3dcb2bc0b87917ddc034ef708?s=47 Sansan DSOC
November 16, 2020

Sansan×atmaCup#6 1st place solution

■イベント 
:Sansan×atmaCup #6 solution発表会
https://sansan.connpass.com/event/193901/

■登壇概要
タイトル:Sansan×atmaCup#6 1st place solution
発表者: 
takoi(蛸井) さん

Sansan DSOC
▼Website
https://sansan-dsoc.com/
▼Twitter
https://twitter.com/SansanDSOC

A2cac4b3dcb2bc0b87917ddc034ef708?s=128

Sansan DSOC

November 16, 2020
Tweet

Transcript

  1. Sansan×atmaCup#6 1st place solution Sansan×atmaCup #6 solution発表会 2020/11/16 takoi

  2. 目次 • 自己紹介 • 解法紹介 ◦ 解法概要 ◦ Feature Engineering

    ◦ Modeling ◦ Score ◦ Not work
  3. 自己紹介 • takoi(蛸井) • Kaggle Master • atmaCup成績 ◦ #1

    3位, #5 1位 • 京都にある会社で働いています
  4. 解法概要 • Feature Engineering ◦ targetを使った特徴量作成 ◦ corporation idのベクトル化 •

    Modeling ◦ 合計63のmodel(LightGBMとMLP)を最終sub用に作成 ◦ stackingしてensemble
  5. 名刺交換データの前処理 • corporation_id1 : 名刺を渡した企業 • corporation_id2 : 名刺を受け取った企業 •

    corporation_id1 : 名刺を交換した企業1 • corporation_id2 : 名刺を交換した企業2   corporation_id1 と corporation_id2 を入れ替えた dataをconcat
  6. Feature Engineering • 特徴量は6種類作成 ◦ targetに関する特徴量2種類 ◦ corporation_idに関する特徴量4種類 ▪ 1つはcorporation_idの統計量、3つはword2vecを使った特徴量

    ▪ word2vecを使ったのが上位になったキーの一つだと思います
  7. targetに関する特徴量1 • 名刺を交換した企業のtargetの割合 • 割合の計算するときは、num_tradesを使用せず、全ての名刺交換データ を1として計算 ◦ num_trades使うとCV、LB両方下がったため • corporation_id1

    と corporation_id2が等しいdataは削除 ◦ leakを防ぐ
  8. targetに関する特徴量2 • 名刺を交換した企業が名刺を交換した企業のtargetの割合 • targetに関する特徴量1と同様、num_tradesを使用せず • 名刺を交換した企業の、名刺を交換した企業が自社の場合をカウントしな い ◦ leakを防ぐ

  9. corporation_idに関する特徴量1 • 名刺交換データのcorporation_idのcount ◦ この特徴量入れてもCV、LB共に0.001ぐらいしか上がってないです

  10. corporation_idに関する特徴量2,3(word2vec) • [corporation_id1、corporation_id2]を文章とみなしてword2vecで学習 • embedding sizeが30、50、100、150、200、300、500、768のmodelを作 成 ◦ corporation_idのカテゴリ数が大きいので、embedding sizeを大きくすること

    により表現力が上がると思った ◦ embedding sizeを大きくしたのが優勝につながった(と思います) • 特徴量2:corporation_idごとのembedding • 特徴量3:名刺を交換企業のembeddingのmean
  11. corporation_idに関する特徴量4(word2vec) • 名刺を交換した企業を時系列に並べたもの(重複を削除)をtextとみなし て、word2vecで学習 • embedding sizeが30、50、75、100、150、200、300、500、768のmodel を作成 • 特徴量4:名刺交換相手のembeddingのmean

    ◦ corporation idごとのembeddingはCVが上がらなかったので、使って ません
  12. Modeling • CV:StratifiedKFold • 特徴量のセット(合計9)ごとに7つのモデルを作成し、stacking ◦ 特徴量のセット: targetに関する特徴量(共通)                 corporation_idに関する特徴量(embedding

    sizeごと) ◦ LightGBM と MLP * 6(DAEしたり、SEBlockいれたり) ◦ 上記のモデルをstacking(LightGBM) • stackingの出力をweighted average(optunaでweight最適化)
  13. Score   embedding size cv public private LightGBM 768 0.8131

    0.8100 0.8126 MLP 768 0.8358 0.8408 0.8418 stacking (lgb + MLP*6) 768 0.8378 0.8415 0.8411 weighted average (stacking * 9) all 0.8412 0.8423 0.8422
  14. embedding sizeごとのsingle model (MLP)のscore embedding size cv public private 30

    0.8211 0.8252 0.8253 50 0.8260 0.8329 0.8313 75 0.8289 0.8342 0.8344 100 0.8285 0.8362 0.8357 150 0.8297 0.8386 0.8400 200 0.8329 0.8412 0.8413 300 0.8339 0.8402 0.8411 500 0.8350 0.8400 0.8413 768 0.8358 0.8408 0.8418
  15. Not work • 特徴量 ◦ 名刺を交換した企業のtargetごとの、名刺を交換した企業のtargetの 割合 ▪ CVとLB改善するも、CVの改善の割にLBが上がらなかったので 不採用(leakを除ききれなかった?)

    ◦ corporation idではなく、targetを並べてword2vec ◦ word2vecで生成したembeddingを活用してcos類似度が大きい corporation idでtarget encoding ◦ 名刺交換データでBOW作成し、LDAやsvdで次元削減 ▪ LDAはnum_topicsをtargetのカテゴリ数にして、いい感じに次元 削減できないかと思ったが効かず
  16.          ご清聴ありがとうございました