Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Optiver参戦記&銀メダル解法
Search
tonic
May 23, 2024
Programming
810
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Optiver参戦記&銀メダル解法
tonic
May 23, 2024
More Decks by tonic
See All by tonic
【データ分析コンペ×生成AI】妙だな…をLLMに気付かせる
tonic
7
2.1k
金融時系列のためのデータ拡張入門
tonic
4
1.8k
Other Decks in Programming
See All in Programming
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.5k
Distance field of Julia set
kinakomoti321
0
310
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.3k
Будущее локальных LLM – Алексей Голобурдин, PythoNN
sobolevn
0
120
仕様駆動開発入門 (何を作るかを先に決めて渡す) | 目指せ Kiro マスター 05
inariku
PRO
2
120
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
590
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.8k
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
350
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
290
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
2.3k
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
370
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
230
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
670
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
590
Become a Pro
speakerdeck
PRO
31
6.4k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
Darren the Foodie - Storyboard
khoart
PRO
5
4.1k
The Cult of Friendly URLs
andyhume
79
7.1k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
48k
The Curse of the Amulet
leimatthew05
4
17k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.7k
Unsuck your backbone
ammeep
672
58k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
Transcript
Optiver 参戦記 & 銀メダル解法 tonic 2024/05/23
1. 自己紹介 tonic(@tonic3561) フリーランスDS Kaggler
目次 1. ざっくり解法 2. 思考と試行の時系列振り返り a. 問題理解 b. ブレスト &
インプット c. ベースライン作成 d. ひたすら実験 3. 上位解法との差分考察
目次 1. ざっくり解法 2. 思考と試行の時系列振り返り a. 問題理解 b. ブレスト &
インプット c. ベースライン作成 d. ひたすら実験 3. 上位解法との差分考察
1. ざっくり解法 ◼ LightGBM と Transformer のアンサンブル ◼ 特徴量数: 462
◼ 8Fold CV の全モデルの予測値を平均 ◼ LGB : NN = 0.61 : 0.39 でブレンド ※ 解法詳細はこちら
目次 1. ざっくり解法 2. 思考と試行の時系列振り返り a. 問題理解 b. ブレスト &
インプット c. ベースライン作成 d. ひたすら実験 3. 上位解法との差分考察
2. 時系列振り返り ◼ tonic流 いつもの機械学習タスクの倒し方 1. 問題理解 (0.5週間) 2. ブレスト
& インプット(0.5週間) 3. ベースライン作成(1週間) 4. ひたすら実験、試行錯誤(4週間) ※かっこ内は今回の時間配分
2-1. 問題理解 ◼ 理解したいキーワード ◼ 問題の背景 ✓ 何を解きたいか? ✓ 必要そうなドメイン知識は?
◼ 評価指標(メトリクス) ✓ 最適化する指標は何か? ✓ その指標の性質は? ◼ データの内容・利用可能性 ✓ どんなデータか? ✓ データの流れは?(予測時点で何が利用可能か?) ✓ 55 timestamp / 日 ごとにその時点 以前の特徴量が利用可能 ✓ target 情報は時刻 0 時点で前日の 全データにアクセス可能 ✓ 60s 後のスペシフィックリターン予測 ✓ Closing Cross Auction 板? ✓ MAE のため特段考慮する必要ナシ
2-2. ブレスト & インプット ◼ まずはブレストから ◼ 公開情報(Notebook等)を調べる前にアイディア出しをする ◼ アイディア出しの主要軸
✓ 特徴量 … 結局良い特徴量が一番重要 ✓ 問題設計 … 多様な設計で解いたモデルのアンサンブルは大体強い ෝ 𝒚 = 𝑓 𝒙 の ෝ 𝒚, 𝑓, 𝒙 の 3 要素それぞれを検討する ◼ 次にインプット ◼ Disucussion 全部読む ◼ ドメイン知識を入れる(ex. Closing Cross Auction って何?) ◼ 知識を仕入れたうえで再度ブレスト ex. NNとGBDT両方で解いてみる(モデル 𝑓 ) 特徴量を時系列ベクトルとして入力する(入力 𝒙 )
2-3. ベースライン作成 ◼ CV(交差検証) ◼ 試行錯誤の拠り所となるため、信頼できるCVの構築が重要 ◼ 今回は通常の KFold CV
を採用(K=8) ◼ メトリックは MAE とその CV 間での安定性をモニタリング 𝑠𝑡𝑎𝑏𝑙𝑒_𝑙𝑜𝑠𝑠(𝒍) = (𝐸 𝑙𝑘 2 𝑉 𝑙𝑘 (𝑚𝑎𝑥(𝑙𝑘 ) – 𝑚𝑖𝑛(𝑙𝑘 )))1/4 Fold 1 2 3 4 5 6 7 8 train private test public test time_id
2-3. ベースライン作成 ◼ パイプライン実装 ◼ 以降の実験を高速かつ正確に回す準備をする ◼ 「前処理~特徴量計算~学習~予測~後処理~評価」 をパッケージ化 ◼
パイプラインのテンプレートは Github で公開してます ▲ submitは推論モジュールを呼び出すだけの図
2-4. ひたすら実験 ◼ 検証した主な仮説 ① ひたすら特徴量エンジニアリング ② 符号と絶対値の 2-stage 予測
③ Transformer ④ ブレンディング ① (ベースライン) ② ③ ④ ▲ メトリック改善の時系列
2-4-1. 特徴量エンジニアリング ◼ ロバストな問題設計のためか、特徴量を増やすほど精度が良くなった ◼ 採用した特徴量群(計 462 列) ◼ 各特徴量ペアの乖離、インバランス
◼ 列方向への同種の特徴量の集約 ◼ 前日の特徴量の集約(銘柄ごと、時間 ID ごと) ◼ 銘柄軸での日内 rolling 集約特徴量 ◼ 各特徴量の銘柄軸、時間 ID 軸での Group Encoding ◼ …etc
2-4-2.符号と絶対値の 2-stage 予測(失敗) ◼ リターンの符号と絶対値を予測しうる特徴量は異なる(Prado, 2019) → targetを符号と絶対値に分解し、それぞれを LightGBM で学習
◼ 結果:×(普通のLGBと予測傾向が似通ってしまい、アンサンブルに寄与せず)
2-4-3. Transformer ◼ 目的変数はスペシフィックリターン →他の銘柄との関連性や市況を捉えたい →全銘柄の情報をまとめて入力 & 出力す ればいいのでは? →Attention機構なら銘柄間の関連を学習
できるのでは? ⇒ Transformer Encoderいいかも? モデルアーキテクチャ概要図
2-4-4. ブレンディング + その他 ◼ OOF(Out of Fold)で LGB, Transformer
のアンサンブル重みを最適化 ◼ 最終的な重み … LGB : Transformer = 0.61 : 0.39(!) ▲ 予測値の散布図比較。かなり傾向が異なることがわかる。 Transformer LGB
2-4-4. ブレンディング + その他 ◼ その他の工夫 ✓ volume系の特徴量を敢えて前処理しない(差分化、対数化など) ✓ LGB
のハイパラチューニングをちゃんとやる ✓ Transformer の学習時に mixup を適用 ✓ 予測値をその平均で中心化 ◼ 効かなかった工夫 ✓ target を Rank Gauss 変換して予測 → アンサンブル ✓ ボラ予測モデルを構築して予測値を補正
目次 1. ざっくり解法 2. 思考と試行の時系列振り返り a. 問題理解 b. ブレスト &
インプット c. ベースライン作成 d. ひたすら実験 3. 上位解法との差分考察
3. 上位解法との差分考察 ◼ (恐らく)最も大きな差分 … 「再学習」 ◼ 評価期間のデータが学習データ期間とかなり離れていた → ドメインシフトにうまく対応できたかが重要だった
◼ tonic はそもそも submit の時間制限がギリギリだった → NN を含めて再学習する発想に至る余裕なし ◼ 1st solution は LGB + NN * 2 の構成にも拘わらず高速実装で再学習を実現 ◼ 次点 … アンサンブルするモデル数不足 ◼ 時系列方向に入力をベクトル化する問題設計をうまく扱えなかった → CNN, GRU 等追加で検証したい
Happy Kaggling!
None