Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

目次 ● 自己紹介 ● 解法紹介 ○ 解法概要 ○ Feature Engineering ○ Modeling ○ Score ○ Not work

Slide 3

Slide 3 text

自己紹介 ● takoi(蛸井) ● Kaggle Master ● atmaCup成績 ○ #1 3位, #5 1位 ● 京都にある会社で働いています

Slide 4

Slide 4 text

解法概要 ● Feature Engineering ○ targetを使った特徴量作成 ○ corporation idのベクトル化 ● Modeling ○ 合計63のmodel(LightGBMとMLP)を最終sub用に作成 ○ stackingしてensemble

Slide 5

Slide 5 text

名刺交換データの前処理 ● corporation_id1 : 名刺を渡した企業 ● corporation_id2 : 名刺を受け取った企業 ● corporation_id1 : 名刺を交換した企業1 ● corporation_id2 : 名刺を交換した企業2   corporation_id1 と corporation_id2 を入れ替えた dataをconcat

Slide 6

Slide 6 text

Feature Engineering ● 特徴量は6種類作成 ○ targetに関する特徴量2種類 ○ corporation_idに関する特徴量4種類 ■ 1つはcorporation_idの統計量、3つはword2vecを使った特徴量 ■ word2vecを使ったのが上位になったキーの一つだと思います

Slide 7

Slide 7 text

targetに関する特徴量1 ● 名刺を交換した企業のtargetの割合 ● 割合の計算するときは、num_tradesを使用せず、全ての名刺交換データ を1として計算 ○ num_trades使うとCV、LB両方下がったため ● corporation_id1 と corporation_id2が等しいdataは削除 ○ leakを防ぐ

Slide 8

Slide 8 text

targetに関する特徴量2 ● 名刺を交換した企業が名刺を交換した企業のtargetの割合 ● targetに関する特徴量1と同様、num_tradesを使用せず ● 名刺を交換した企業の、名刺を交換した企業が自社の場合をカウントしな い ○ leakを防ぐ

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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が上がらなかったので、使って ません

Slide 12

Slide 12 text

Modeling ● CV:StratifiedKFold ● 特徴量のセット(合計9)ごとに7つのモデルを作成し、stacking ○ 特徴量のセット: targetに関する特徴量(共通)                 corporation_idに関する特徴量(embedding sizeごと) ○ LightGBM と MLP * 6(DAEしたり、SEBlockいれたり) ○ 上記のモデルをstacking(LightGBM) ● stackingの出力をweighted average(optunaでweight最適化)

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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のカテゴリ数にして、いい感じに次元 削減できないかと思ったが効かず

Slide 16

Slide 16 text

         ご清聴ありがとうございました