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

1st Place Solution / 1st Place Solution Sansan x atmaCup #12

Sansan DSOC
December 17, 2021

1st Place Solution / 1st Place Solution Sansan x atmaCup #12

■イベント 
:Sansan x atmaCup #12 振り返り会
https://atma.connpass.com/event/229180/

■登壇概要
タイトル:1st Place Solution
発表者: Kurose (@enu_kuro) さん

▼Sansan R&D Twitter
https://twitter.com/SansanRandD

Sansan DSOC

December 17, 2021
Tweet

More Decks by Sansan DSOC

Other Decks in Technology

Transcript

  1. Kurose (@enu_kuro) 1st Place Solution Sansan × atmaCup #12 振り返り会

  2. PROFILE Kurose (@enu_kuro) Software Engineer (仕事はiOS, Web Frontendメイン) 機械学習歴は1年半ちょっと (主にCourseraとKaggleで勉強)

    2020/1~2020/10 ほぼ無職だったのでフルタイムで取り組んでいた Andrew Ng先⽣の⼈気講座で基礎を⾝に付けKaggleに挑戦 ⾃⼰紹介
  3. atmaCup Kaggle コンペ参加歴

  4. 中盤からの参加ということもあり、順位は意識せず 淡々と取り組んでいたら優勝していた 10/23 8:30 ~ 10/24 18:00 10/22 21:34 初サブミット

    Total 10 Submissions スコアで振り返るSansan × atmaCup #12
  5. コンペの進め⽅ 情報収集 モデル選択 特徴量選択 モデルアーキテクチャ & ハイパラ調整 エラー分析 前処理・後処理

  6. Sansan × atmaCup #12 開幕! Competitionの説明とDiscussionを読んで 概要を把握しておく (まとまった時間が取れなかったので) 公式のチュートリアル"[講座#1] データを

    眺めて submission する"をcolab上で動か してみる 10/15 ~ 10/20 情報収集
  7. 注⽬したポイント - CV, LBの⽬安 (colum2131さんのdiscussion"CV vs LB"参照) LB:0.8超えたら結構強い LBとCVに0.1くらい開きがある -

    TestにしかないClassが存在する 評価指標がクラスごとのF1 Score平均なのでスコアへの影響が⼤きい - 画像データから抽出されたデータによるテーブルデータ 画像としてデータを扱うこともできる? 最後まで本気で取り組むことを決めて⽬標設定 - 運営ベースライン(0.8147)を超える - Discussionにコメントする なんの強制⼒もなくゆるい⽬標だが、あると踏ん張りどころで背中を⼀押ししてくれることも ✓ ✓
  8. LightGBMよく分からないんです... できればDeepでポンしたい rishigamiさんの"レイアウトに関する深層学習⼿法とGNNチュートリアル"を読んで GNNでも戦えそうな気がしたのでこれベースで勝負することに 今回のデータは矩形をNodeとみなし、 それぞれの中⼼点を結ぶ線を引くこと でグラフ構造化することができる 10/20 モデル選択

  9. Node特徴量 - x_center - y_center - box_width - box_height 0~1に正規化を⾏った中⼼座標と縦横幅

    正規化前の縦横⽐や⾯積等いくつか特徴量追加試したが精度あまり変わらなかったので採⽤せず NNは賢いので余計なことしなくても⼤丈夫なはず... Trust NN Edge特徴量 - x_diff (Nodeのx_centerの差) - y_diff (Nodeのy_centerの差) rishigamiさんのチュートリアルの特徴量をそのまま使⽤ 特徴量選択
  10. モデルアーキテクチャ & ハイパラ調整 丸1⽇モデルのチューニングに費やす ここで初サブ LB:0.7909まで到達 10/22 PNAConv Layer *

    4 + Fully Connected Layer ⼤きめのDropout(0.8) ⼤きめの Learning Rate(5e-3) StepLR 20epochで5e-3*0.1
  11. Class9(TestにしかないClass)への対応開始 何が分かった? class9は上下のスペースに配置されている(かも) TrainデータではClass9を対象としたエラー分析ができないので、 精度が同等の複数モデルでテストデータの推論結果を⽐較 結果が異なるデータを⾒ていくことに 上下のスペースにclass9の仮データを追加してみる? 10/23 こんな感じで気になったことをメモしていく エラー分析

  12. 最後にパラメータ変えた 4モデルの アンサンブルをサブミッ トして終わり スコア⼤幅アップを確認 仮説が当たっていた! この時点で2位に⼤差をつけて1位に Class9追加処理を雑に実装して... (後処理はなにもせず) LB

    0.8819 深夜のサブミッション 10/24 00:24 真昼のサブミッション 10/24 11:51 前処理・後処理 実装・パラメータを調整して
  13. - テーブルデータなのでLightGBMがメイン 今回はLightGBM勢が特徴量作り等を楽しみ過ぎた おかげでスコア的にはNN勢有利に働いた Transformer, GNNの⽅がスコア出しやすかった - コンペ慣れしてきた 進め⽅、重要なポイントの把握、NNのお気持ち理解etc 短期間で成果が出せた

    LightGBM Transformer GNN CNN 1位 ✓ 2位 ✓ 3位 ✓ 4位 ✓ 5位 ✓ ✓ 6位 ✓ 7位 ✓ 8位 ✓ 9位 ✓ ✓ ✓ 10位 ✓ 最終順位はNN系が上位を占める 勝 因
  14. 1週間くらいの短期決戦だとほとんどの⼈にとっては狙って上位に⼊れるもの でもないと思うので楽しむことを優先に考えて結果は運任せというスタンスで 良いと思います atmaCupはお祭り Kaggleは修⾏ 感 想 ちなみにKaggleのような⻑期決戦は修⾏(苦⾏)だと思って取り組んでいます つらい... 憂鬱...

  15. ありがとうございました! Kurose (@enu_kuro)