Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
atmaCup#5 solutionまとめ
Search
Yamaguchi Takahiro
June 14, 2020
Technology
1
1.5k
atmaCup#5 solutionまとめ
atmaCup#5 の解法サーベイです。
https://www.guruguru.ml/competitions/10
Yamaguchi Takahiro
June 14, 2020
Tweet
Share
More Decks by Yamaguchi Takahiro
See All by Yamaguchi Takahiro
コンペを気楽に開催しよーぜ!@関西Kaggler会
nyk510
0
1.1k
Django のセキュリティリリースを見る
nyk510
0
59
3分でMLアプリを作る 〜推論コードにちょっとのStreamlitを添えて〜
nyk510
1
1k
硬派で真面目なグラフを描く
nyk510
0
480
CORSをちゃんと理解する atmaバックエンド勉強会#4
nyk510
0
360
pythonで気軽にパッケージを作るのは良いという話。
nyk510
14
9.5k
RestAPIのページネーション atma バックエンド勉強会 #3
nyk510
1
860
AWS CPU Credit を完全に理解する
nyk510
0
420
atmaCup#8 Opening
nyk510
0
230
Other Decks in Technology
See All in Technology
個人開発から公式機能へ: PlaywrightとRailsをつなげた3年の軌跡
yusukeiwaki
11
3k
表現を育てる
kiyou77
1
210
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
140
Classmethod AI Talks(CATs) #16 司会進行スライド(2025.02.12) / classmethod-ai-talks-aka-cats_moderator-slides_vol16_2025-02-12
shinyaa31
0
110
Classmethod AI Talks(CATs) #17 司会進行スライド(2025.02.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol17_2025-02-19
shinyaa31
0
120
Amazon S3 Tablesと外部分析基盤連携について / Amazon S3 Tables and External Data Analytics Platform
nttcom
0
130
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
390
TAMとre:Capセキュリティ編 〜拡張脅威検出デモを添えて〜
fujiihda
2
240
現場で役立つAPIデザイン
nagix
33
12k
RSNA2024振り返り
nanachi
0
580
あれは良かった、あれは苦労したB2B2C型SaaSの新規開発におけるCloud Spanner
hirohito1108
2
570
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
17
6.7k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
A Philosophy of Restraint
colly
203
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
For a Future-Friendly Web
brad_frost
176
9.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
Unsuck your backbone
ammeep
669
57k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Statistics for Hackers
jakevdp
797
220k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Transcript
atmaCup#5 Solutions 2020/06/14 nyk510・atma株式会社
もくじ • はじめに • 上位陣手法まとめ • NeuralNetwork • Gradient Boosted
Decision Tree • その他の話題
はじめに 今回のコンペでdiscussionで共有されたソリュー ションについて紹介していきます。 atmaCup#5ではなんと31人も!!ソリューションを 共有してくださいました ありがとうございま す!! 個別具体的なものを見ていると無限に時間がか かるのでキーワード的に紹介していきたいと思 います。
ソリューションタグで検索を かけると便利です
データの整理 スペクトル観測データ + 観測条件から結合 かどうかを予測する問題 結合しているかどうかの特徴はスペクトルの ピーク部分に現れる. この特徴をうまく捉えら れるかどうかが鍵. positiveデータの数が少ない不均衡データ
Positive (Target==1) Negative (Target=0)
上位陣モデルのまとめ • CV は stratified (or stratified group) • NNは必須
◦ 1~9位(private/publicともに)は全員NNが何かしらで使用されている ◦ 多いのは 1DCNN ついで wavenet / 2d-cnn / transformer • GBDT (多いのは LightGBM )とのアンサンブルが多い. たまに NN 単体。 coupledかどうかの判定は波形のピークとその周辺の情報が必要なため いかにうまく特徴化・NNに認識させられるかが勝負になったと推察
Neural Network (1DCNN) • モデル構造 • 入力データ • Lossの設計 •
Optimizer • その他のモデル・工夫
1DCNNとは 1次元の入力に対して畳み込み(局所的な情報だけを使った情報抽出)を行なう構造を 持ったNetwork。前後関係に意味があるテキスト分類などで使用されることが多い。 今回の波形データではピーク周辺などの情報が大事 → CNNでの情報抽出が有効 参考 1D-CNN & Extract
Feature Vectors https://www.guruguru.ml/competitions/10/discussions /2f89df26-e5ad-4398-a2fe-df22512fa6ec/ kerasを使ったシンプルな1DCNN https://www.guruguru.ml/competitions/10/discussions/b85 f3167-efd6-4411-8baa-8d5ffda51fac/
モデル構造 > 大きい Kernel Size shimishige / amaotone / Moro
/ tereka114 / ほか多数 • 入力に近い層で大きいカーネルサイズを採用 (11, 15 など) • おそらく波形の局所的な特徴よりも、ピークの幅や鋭さの情報を利用することが 大切でそれを組み込むために大きめのカーネルが必要なのではないかと推察
入力データ 生波形をそのまま入れるだけでなく、何らかの加工をしたものを chennel 方向に追加 して利用しているsolutionが多く見られました。 波形情報を再構成して追加 • Denoising Auto Encoder/と残差
(nejumiさん) • Lorentzian Fitting から復元した波形/元との残差 (nyanpさん, e-toppoさん, shimishigeさん) • savitzky-golay filter で平滑化したもの + 微分 (amaotome さん) 正規化 • sample wize normalization (amaotomeさん, yukiさん) • sample wize min-max scaling (e-toppoさn)
入力データ Augmentation データの水増し。画像では回転・反転などが一般的 [note] 上位陣でもやっている人がいたりいなかったりする。効果は限定的? • flip/gaussian noise/shift • manifold
mixup (CVは上がったが LB は向上せず: teraka) • fitting/ground(背景ノイズ)からtarget==1のデータを人工的に作成(HanDog1) という大技も その他 • fittingなどのテーブル情報をマージ (多数)
Lossの設計 Focal Loss (inoichi/ishikei/) Focal Loss for Dense Object Detection:
https://arxiv.org/abs/1708.02002 • 簡単に分類できるデータのロスを小さくする(無視する)ことで分類が難しいデータ をより注意して最適化することが狙いのLoss • 良かった (CVの安定性に寄与) という意見がある (ishikei) 一方であまりワークし ない (upura) という意見も。アーキテクチャ依存? その他 • BCE+RMSE (yCarbon) • target以外の情報を予測するマルチタスクのloss, 学習済みモデルの予測値を soft target として利用 (oct_path)
Optimizer Stochastic Weight Averaging (SWA) Averaging Weights Leads to Wider
Optima and Better Generalization: https://arxiv.org/abs/1803.05407 katsu1110 / copasta 最適化途中の重みを保存してその平均値 を使う手法 • Foldごとに学習が不安定になるのを 防ぐ効果があった (copastaさん)
Optimizer Lookahead Lookahead Optimizer: k steps forward, 1 step back
https://arxiv.org/abs/1907.08610 たまにちょっと前の重みとの算術平均点 に戻るフェーズを加えたoptimizer. NIPS2019. • SWAと同様に学習の安定性に寄与し た (agatanさん)
その他のモデル Wavenet (copasta / lain / takoi / e-toppo 他)
• private 1st/3rd で利用されている • kernel_sizeは 1DCNN と違って 3 程度で十分で大きくしても性能はよくならな い (copast) ◦ [note] 畳み込むノードを離す(=Dilation)処理が入っているので小さくても 十分遠くの情報を使えている? • ためしたがうまく行かなかったとの報告も複数あるため、アーキテクチャ・入力 データになんらかの工夫は必要か
その他のモデル Transformer (inoichi) • 1D-CNNの出力をtransformerでまとめ上げるような構成 2DCNN • 元波形・DAEの再構成・残差の3chennelを入力画像とみなして2DCNN (nejumi_dqx) Bidirectional
LSTM • 1DCNNと組み合わせたInception likeな構造(shimishige)
GBDT (Gradient Boosted Decision Tree) • Overview • 特徴量
GBDT (Gradient Boosted Decision Tree) ご存知勾配ブースティング木。テーブルデータでは鉄板。 NNメインで補助的に使用している人が多い印象。 が、単体でprivate10th (public=0.9122/private=0.8704) のチームもある
(rookzeno)のでやりようによっては単体でも戦える アルゴリズム • LightGBM が一番人気・次に Catboost • LightGBM→Catboostで大幅にスコアが伸びたとの報告あり(yCarbon). データ が少ない分 Catboostのカテゴリ変数の取り扱いが有意に働いている?
GBDT > 特徴量 • tsfresh利用者多数 ◦ たくさん作ってimportanceで絞るパターンが一般的 ◦ あたたかみ特徴量がtsfreshに敗北してなくなった (nino_pira)
• フーリエ変換 (やメルスペクトログラム変換) ◦ fitting param2 より imporatnce が高く出ている (kaerururu) 事例も報告さ れており相当強力か • ピーク周辺の特徴 ◦ peak_near_sum (nyk510 チュートリアルver2) とその亜種 (見る幅を変える など) ◦ ピーク前後の情報をそのまま入れる (takoi)
GBDT > 特徴量 • CNNのembeddingを入れる ◦ DAEの hidden layer (nejumi_dqx)
• その他気になったもの ◦ 生波形のgradientの統計量 (rookzeno) ◦ ピーク点周辺の左右対称性 / セカンドピークの情報 (kurupical) ◦ 数値特徴と光強度値の四則演算 (nasuka) ◦ 効いている特徴量を exec_wl などカテゴリ系カラムでgroupby (kurupical) ◦ lowpass後tsfresh
その他の話題 • CV戦略 • Pseudo Labeling
CV 戦略 不均衡データゆえ悩ましいところが多い部分 多いのは stratified / ついで stratified group /
group はなし • groupはCV/LBの相関が見られなかったため不採用 (amaotone) • discussion で camaro さんが共有してくださったおかげで group stratified も3,4 個 fold間でのスコアのブレが小さくなるようなシードを探る (nyanp) (Foldごとの難易度が揃うように調整しているイメージ?)
Pseudo Labeling 学習したモデルのtestデータへの予測値を擬似的なラベルとみなし、テストデータ+擬 似ラベルを学習データに追加して学習する手法 効果の有無がケースバイケース / ありなし同数程度報告されている • 効果あり ◦
katsu1110/hakubishin3/upura/rookzeno • 効果なし (あっても限定的) ◦ copasta: public上昇には寄与したがprivateでは限定的 ◦ tereka: 最初だけ成功・運用が難しいとのコメント
Pseudo Labeling やり方が微妙に違うので良いやり方があるのかも? 効果があったチームの方法 • 閾値を定めてそれ以上のデータをpositiveとみなす (upura/katsu1110) • 予測ラベルの上位100個・下位3000個をそれぞれpos/negとみなす(rookzeno) 擬似ラベルデータの使い方
• 事前学習に擬似ラベルとテストデータを使う (hakubishin3)
まとめ • 上位入賞の鍵はNNにあったコンペ • 単に1DCNNを使うのではなく入力データや構造に工夫が必要 ◦ large kernel size やフィルタ・残差の追加
• GBDTを使う場合にも波形からの特徴をうまく入れる必要がある ◦ tsfreshは便利