Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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.3k
Django のセキュリティリリースを見る
nyk510
0
110
3分でMLアプリを作る 〜推論コードにちょっとのStreamlitを添えて〜
nyk510
1
1.1k
硬派で真面目なグラフを描く
nyk510
0
530
CORSをちゃんと理解する atmaバックエンド勉強会#4
nyk510
0
420
pythonで気軽にパッケージを作るのは良いという話。
nyk510
14
9.8k
RestAPIのページネーション atma バックエンド勉強会 #3
nyk510
1
1k
AWS CPU Credit を完全に理解する
nyk510
0
470
atmaCup#8 Opening
nyk510
0
280
Other Decks in Technology
See All in Technology
mablでリグレッションテストをデイリー実行するまで #mablExperience
bengo4com
0
470
A Compass of Thought: Guiding the Future of Test Automation ( #jassttokai25 , #jassttokai )
teyamagu
PRO
1
180
AIにおける自由の追求
shujisado
2
470
AI駆動開発によるDDDの実践
dip_tech
PRO
0
270
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
10
4.4k
Docker, Infraestructuras seguras y Hardening
josejuansanchez
0
140
プロダクトマネジメントの分業が生む「デリバリーの渋滞」を解消するTPMの越境
recruitengineers
PRO
3
410
安いGPUレンタルサービスについて
aratako
0
220
ブラウザ拡張のセキュリティの話 / Browser Extension Security
flatt_security
0
260
TROCCO 2025年の進化をデモで振り返る
__allllllllez__
0
340
Digitization部 紹介資料
sansan33
PRO
1
6.1k
手動から自動へ、そしてその先へ
moritamasami
0
100
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
18k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Bash Introduction
62gerente
615
210k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
69k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Building an army of robots
kneath
306
46k
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は便利