Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

PROFILE Kurose (@enu_kuro) Software Engineer (仕事はiOS, Web Frontendメイン) 機械学習歴は1年半ちょっと (主にCourseraとKaggleで勉強) 2020/1~2020/10 ほぼ無職だったのでフルタイムで取り組んでいた Andrew Ng先⽣の⼈気講座で基礎を⾝に付けKaggleに挑戦 ⾃⼰紹介

Slide 3

Slide 3 text

atmaCup Kaggle コンペ参加歴

Slide 4

Slide 4 text

中盤からの参加ということもあり、順位は意識せず 淡々と取り組んでいたら優勝していた 10/23 8:30 ~ 10/24 18:00 10/22 21:34 初サブミット Total 10 Submissions スコアで振り返るSansan × atmaCup #12

Slide 5

Slide 5 text

コンペの進め⽅ 情報収集 モデル選択 特徴量選択 モデルアーキテクチャ & ハイパラ調整 エラー分析 前処理・後処理

Slide 6

Slide 6 text

Sansan × atmaCup #12 開幕! Competitionの説明とDiscussionを読んで 概要を把握しておく (まとまった時間が取れなかったので) 公式のチュートリアル"[講座#1] データを 眺めて submission する"をcolab上で動か してみる 10/15 ~ 10/20 情報収集

Slide 7

Slide 7 text

注⽬したポイント - CV, LBの⽬安 (colum2131さんのdiscussion"CV vs LB"参照) LB:0.8超えたら結構強い LBとCVに0.1くらい開きがある - TestにしかないClassが存在する 評価指標がクラスごとのF1 Score平均なのでスコアへの影響が⼤きい - 画像データから抽出されたデータによるテーブルデータ 画像としてデータを扱うこともできる? 最後まで本気で取り組むことを決めて⽬標設定 - 運営ベースライン(0.8147)を超える - Discussionにコメントする なんの強制⼒もなくゆるい⽬標だが、あると踏ん張りどころで背中を⼀押ししてくれることも ✓ ✓

Slide 8

Slide 8 text

LightGBMよく分からないんです... できればDeepでポンしたい rishigamiさんの"レイアウトに関する深層学習⼿法とGNNチュートリアル"を読んで GNNでも戦えそうな気がしたのでこれベースで勝負することに 今回のデータは矩形をNodeとみなし、 それぞれの中⼼点を結ぶ線を引くこと でグラフ構造化することができる 10/20 モデル選択

Slide 9

Slide 9 text

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さんのチュートリアルの特徴量をそのまま使⽤ 特徴量選択

Slide 10

Slide 10 text

モデルアーキテクチャ & ハイパラ調整 丸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

Slide 11

Slide 11 text

Class9(TestにしかないClass)への対応開始 何が分かった? class9は上下のスペースに配置されている(かも) TrainデータではClass9を対象としたエラー分析ができないので、 精度が同等の複数モデルでテストデータの推論結果を⽐較 結果が異なるデータを⾒ていくことに 上下のスペースにclass9の仮データを追加してみる? 10/23 こんな感じで気になったことをメモしていく エラー分析

Slide 12

Slide 12 text

最後にパラメータ変えた 4モデルの アンサンブルをサブミッ トして終わり スコア⼤幅アップを確認 仮説が当たっていた! この時点で2位に⼤差をつけて1位に Class9追加処理を雑に実装して... (後処理はなにもせず) LB 0.8819 深夜のサブミッション 10/24 00:24 真昼のサブミッション 10/24 11:51 前処理・後処理 実装・パラメータを調整して

Slide 13

Slide 13 text

- テーブルデータなのでLightGBMがメイン 今回はLightGBM勢が特徴量作り等を楽しみ過ぎた おかげでスコア的にはNN勢有利に働いた Transformer, GNNの⽅がスコア出しやすかった - コンペ慣れしてきた 進め⽅、重要なポイントの把握、NNのお気持ち理解etc 短期間で成果が出せた LightGBM Transformer GNN CNN 1位 ✓ 2位 ✓ 3位 ✓ 4位 ✓ 5位 ✓ ✓ 6位 ✓ 7位 ✓ 8位 ✓ 9位 ✓ ✓ ✓ 10位 ✓ 最終順位はNN系が上位を占める 勝 因

Slide 14

Slide 14 text

1週間くらいの短期決戦だとほとんどの⼈にとっては狙って上位に⼊れるもの でもないと思うので楽しむことを優先に考えて結果は運任せというスタンスで 良いと思います atmaCupはお祭り Kaggleは修⾏ 感 想 ちなみにKaggleのような⻑期決戦は修⾏(苦⾏)だと思って取り組んでいます つらい... 憂鬱...

Slide 15

Slide 15 text

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