7.3K Views
November 08, 24
スライド概要
関西Kaggler会 交流会 in Osaka 2024#3 NeurIPS - Ariel Data Challenge 2024 振り返り moto 0
自己紹介 • Kaggle Competition Master(金1、銀3) • 理学部数理科学系3回生 • コンペのタイプにこだわりはないが、結果的に 時系列データが多め(物理系コンペ含む) ↓この記事を書いた人 moto 1
参加報告 yutoさん、kyuさんとチームを組んで参加 yutoさんとは関西Kaggler会で話したご縁でチーム結成 ありがとうございます!! 2
motoが思う物理系コンペで大事なこと 物理系コンペにおいて、 データの振る舞いには物理法則による単純な規則が あることが多い データの振る舞いにどのような物理現象が 関わっているのかに思いを馳せることが重要! 生じている物理法則を用いることで、 改善できることも多い 3
コンペ概要 恒星の前を惑星が通り過ぎる現象transitを • 可視光線望遠鏡FGS1 • 赤外線望遠鏡AIRS で観測する 恒星の前を惑星が通り過ぎる 現象"transit" 恒星 283種類の波長の光で観測した場合の • 惑星と恒星の面積比wl_1~wl_283 惑星 • 予測値の自信度sigma_1~sigma_283 を予測するコンペ メトリックはガウス分布の密度関数の対数 trainのtargetの平均値が0、最適値が1の相対評価 4
コンペデータ FGS1 AIRS キャリブレーションデータ 壊れたセンサーmaskなど 詳細は省略 空間 シミュレーションデータで 空間 波長 時間x空間x空間 時間x空間x波長 シミュレーターは公開され ている 5
このコンペの難しいところ • 問題設定や起きている物理現象の把握が難しい • データが非常にノイジー • センサーの状態がサンプル毎に異なる • 空間次元の解像度が小さい • データ数が少ない • testデータにtrainデータには含まれない恒星、惑星の大気組成が入っている • LBで0以下のスコアは0と表示されたためデバッグが難しい 6
共有されていたアイデア light curve:センサーが感知した光量の時間変化をあらわす曲線 transit中のlight curveを 持ち上げて多項式フィッティング d 惑星の面積 𝑑 = 恒星の面積 1 + 𝑑 1 公開ノートブックでは波長方向に平均を取ったlight curve、定数sigmaが 使われていた 波長ごとにwl_iをどうやって求める? sigma_iをどうやって求める? 7
私たちのチームの解法 • 画像の空間の中央付近をcrop • 波長方向にsliding windowで平均化 • 各波長ごとのlight curveを使う デノイズ処理が必須 • FGS1はノイズが多かったのでwl_1の予測は全波長で平均を 取ったlight curveで予測 • transit中の範囲を持ち上げる量を各波長ごとに最適化 • Random Forestでsigma_iを予測 NNモデルも作っていたが結局使えず... Public LB: 0.572 Public LB: 0.607 8
上位解法(1~10位)をざっくり紹介 wl_iの予測 • 先ほど紹介したlight curve系手法による予測(1位、3~10位) • 先ほど紹介したlight curve系手法+NNでのスタッキング(6位) • ベイズ系手法による予測(2位) sigma_iの予測 • 信号処理による予測(1位、3位、4位、7~10位) • NNによる予測(5位、6位) • ベイズ系手法による予測(1位、2位) 改善方法にはかなり多様性があった 9
上位解法(1~10位)をざっくり紹介 様々な改善方法があって非常に面白いが項目ごとにかいつまんで紹介 ◼ ノイズへの対処 ◼ センサーのキャリブレーション方法 ◼ transitのタイミング/深さを正確に予測 ◼ wlの予測方法 ◼ wlの予測値に対するpost process ◼ sigmaの予測方法 10
ノイズへの対処 • Savitzky–Golay filter(6位) • 局所的に多項式でフィッティング • 時間方向にbutter filter(9位) • 波長方向にhann window(9位) • 波長方向の近傍でexponential smoothing(8位) • すべての波長のlight curveにSVDでノイズ除去(8位) • 時間方向のbinの数を減らす(3位) • 波長方向の近傍で平均化(3位) • 波長が長い部分ではwindowサイズを大きく 11
センサーのキャリブレーション方法 • Hot Pixel Processを変更(1位、3位) • 極端な値を除去する処理が情報を落としてしまったらしい • foreground lightの除去(1位) • 恒星が無くてもセンサーが光を検出してしまう影響の除去 • wl_iに定数を掛けると何故か改善する現象があったがこれが原因 • 周りのピクセルを用いて壊れたセンサーのデータの補正(7位) 波長 • 空間の位置は同じで波長が近くの値を使って補正 • 空間の位置がずれると大きく値が変わる • 波長がずれても大きく値は変わらない 空間 https://www.kaggle.com/competitions/ariel-data-challenge-2024/discussion/543679 12
transitのタイミング/深さを正確に予測 • ガウス関数の一階微分との畳み込みからtransit 開始と終了の期間の中心点を求める。ガウス分 布の二階微分と畳み込みからtransitの開始地点 と終了地点を求める(3位) • (𝑓 ∗ 𝑔)’ = (𝑓 ∗ 𝑔’)という性質を使っている https://www.kaggle.com/competitions/ariel-datachallenge-2024/discussion/544471 • light curveを3つの2次関数と2つの一次関数に分 割してフィッティング(4位) • light curveの数式を作って数式のパラメーター をフィッティング(10位) https://www.desmos.com/calculator/iipeyednv z?lang=ja 13
wlの予測方法 • シミュレーターのコードを読んでデータの生成方法を把握(1位) 𝑦𝑝𝑟𝑒𝑑 = 𝐼(𝜆) × 𝐵𝑜𝑥(𝜆) × (1 + 𝑓(𝑡)・𝑔(𝜆)) • • • • 𝐼 𝜆 :恒星のスペクトル 𝐵𝑜𝑥 𝜆 :transitによる光量の変化 𝑓:時間方向のノイズ、5次の多項式 𝑔:スペクトル方向のノイズ、5次の多項式 • 𝐼 𝜆 のパラメーターの最適化をしてからその値を𝐼 𝜆 の初期値に設定し てそれ以外のパラメーターも最適化(𝐼 𝜆 も最適化することに注意) • 事前分布をきちんと考えてガウス過程回帰で予測(2位) • ガウス過程回帰は計算量が大きくなりがちなことで有名 • 1Dのガウス過程では普通のガウス過程回帰を2Dのガウス過程では Sparseなガウス過程回帰を使った 14
wlの予測方法 • strideをwindow_size//4に設定した波長方向のsliding windowで平均値を 取ったlight curveでtargetを予測(10位) • 波長方向の分割方法を11通り作り、分割したまとまりごとに平均値を取った light curveでwl_iを予測。wl_iを予測した値を2種類の1DCNNに渡してアン サンブル(6位) • NNは過学習をしないようにすることが重要 • 低波長部分と高波長部分の1DCNNを作り、出力をconcatするモデル • 分割方法のうち8通りを使い、1DCNNで予測をするモデル • sigmaも予測しているが後述 • lossはガウス分布の密度関数の対数を使った 15
wlの予測値に対するpost process • PCAでノイズ除去(3位) • Autoencoderでノイズ除去(1位) • NMFでノイズ除去(1位) • Savitzky–Golay filter(6位) https://www.kaggle.com/competitions/ariel-datachallenge-2024/discussion/543944 componentsは気体の種類 ごとに分かれている https://www.kaggle.com/competitions/arieldata-challenge-2024/discussion/544317 16
sigmaの予測方法 信号処理による解法 • strideをwindow_size//4に設定した波長方向のsliding windowを使う。各 windowに対してランダムに取ってきたwindow_size//2個のlight curveの平均 値でtargetを予測した際の予測値の標準偏差で予測(10位) • wl_iの予測値の標準偏差による予測(1位、5位) • 多項式フィッティングのMAEが小さくlight curveが平坦なほどsigmaは小さく (7位) 17
sigmaの予測方法 MLによる解法 • ガウス過程回帰で得られる標準偏差(1位、2位) • NNの予測値とlight curveの方法での予測値の差から1DCNNでsigmaを予測す る(6位) • FCNによる予測(5位) • 大気組成のバリエーションが足りないためシミュレーターで生成したデータ を追加して学習 18