1.4K Views
September 07, 23
スライド概要
成田空港 (RJAA / NRT)を対象として、機械学習を用いた霧の発生予測実験を行いました。主にロジスティック回帰とディープラーニングについて、結果だけでなく気象の概念に基づく解釈を記述しました。2019年2月8日の航空気象研究会で発表しました。
気象予報士・データサイエンティスト。気象データアナリスト養成講座講師。元運航管理者見習い。 気象データ分析・予測モデル開発・気象とビジネスデータの分析などを行っています。 最近は航空・衛星・地理空間データに興味あり。 Weather Data Science合同会社
AIによる成田空港の霧予測実験 t-SNEで2次元に圧縮した 数値予報モデルデータ 色は黄色ほど視程が低い Weather Data Science 加藤芳樹 Weather Data Science
自己紹介 加藤芳樹(Yoshiki Kato) Weather Data Science 気象予報士・データサイエンティスト 民間気象会社 とエアライン で航空気象に携わる 2018春に思い立って仕事を辞め、データサイエンスを学ぶ データミックス社 のデータサイエンティスト養成講座を受講 卒業課題として「AI霧予測」をテーマに取り組む 2018秋から夫婦で Weather Data Science を開始 - 航路気象についてのインタビュー - 大手IT企業の気象予報士案件 - Looop社より風力発電予測AI開発を受託 Weather Data Science 1
研究の背景 データサイエンティスト養成講座の卒業課題として取り組んだ研究を、 航空気象研究会の発表のためにアップデートしました AI(機械学習)を用いた霧の発生予測にチャレンジ! • • • • 予測地点は成田空港を選択 気象現象の概念モデルに基づくAI構築 気象予報士や運航管理者の業務の助けとなるプロダクト Deep Learning などの最新アルゴリズムも試験 濃霧の成田空港に着陸する飛行機 (YouTubeより引用) Weather Data Science 2
初期仮説 霧(放射霧)のポイント (1) Moisture(十分な水蒸気) (2) Cooling(夜間の放射冷却) (3) Calm Wind(風が弱い) → 大気が安定で穏やか 【初期仮説】 霧の概念モデルに基づき、特に (2) (3) を意識して特徴量を設計 することで、予測精度を上げら れるのではないか? Visibility [m] ● 基本的には湿度が100%近くなると霧は発生する ● しかし実際には100%近くとも霧が発生していない場合が多く、 湿度だけで予想すると空振りが多くなってしまう ● 他の気象要素を含めて機械学習させ、予測精度アップを図る Relative Humidity [%] ※特徴量 = 説明変数(言葉の定義) 数値予報モデルの湿度予測とMETAR視程の散布図 Weather Data Science 3
実験方法と使用するデータ 【実験方法】 [1] 霧の発生の有無を予測する(二値問題とする) [2] 霧の深さの予測をする(視程カテゴリー or 連続量) ・2014~2016年のデータで学習する ・学習したモデルで2017年の予測テストをする 【データ】 ■空港観測データ(METAR):予測ターゲット • 主に視程の観測値を使う 視程カテゴリー Category Range 0 5000m以上 1 3200~5000m 2 1600~3200m 3 800~1600m 4 ■数値予報モデル(MSM):特徴量(説明変数) • 成田空港の地点データを切り出す • 03・09・15・21zベースの FT=6~11(6コマ)を繋げて、 1日24時間の連続データを作る Weather Data Science 800m未満 4
特徴量の選択と作成 【基本的な気象要素】 ● 地上の要素 ・湿度・気圧・風向・風速・気温・露点温度・降水量・雲量 ● 上空の要素 ・1000, 975, 950hPa高度:風速・鉛直速度 ・1000, 975, 950, 850, 700, 500, 300hPa高度:湿度 【METAR観測から作った特徴量】 ・前24時間に雨が降ったかどうか (0 or 1) 【気象の概念モデルをもとに導入した特徴量】 ・風の鉛直シア(風ベクトルの差の大きさ) ・大気の安定度(気温の鉛直勾配) ・前線霧パラメータ(気温の鉛直勾配×降水量) ・時間帯(1日を8つの時間帯に分割) ・季節(月単位) ・前1時間の変化量(気温、露点温度、地上気圧) Weather Data Science 5
評価方法について 【気象の分野でよく使われる評価指標】 → 霧は極度の不均衡データになっている ■スレットスコア(TS) = D / ( B + C + D ) このうち適当に予測しても当たってしまう 割合を考慮したものをETSと呼ぶ ●バイアススコア(BI) = ( C + D ) / ( B + D ) 空振り・見逃しのバランスを見る 予報 0(なし) 1(あり) 0(なし) A C 1(あり) B D 実況 【ベンチマーク】 視程ガイダンスの精度:成田空港はだいたいTS = 0.08 (±0.02) (数値予報課報告・別冊第64号より引用、正しくはETS) ここで霧かどうかの閾値は 1600m となっている → 分析[1]の閾値も 1600m とする Weather Data Science 6
アルゴリズム いろいろな機械学習アルゴリズムを試しましたが… ロジスティック回帰とディープラーニングを紹介します 『ロジスティック回帰』 → 線形なので解釈性は高いが、予測精度はほどほど 『ディープラーニング』 → 予測精度は高いが、解釈は難しい(ブラックボックス) 【事前の想定】 ★ 解釈性の高いロジスティック回帰で、気象の概念モデルに基づく 特徴量設計の有効性を示す ★ ディープラーニングで高精度、ロジスティック回帰に圧勝! →では、どうだったか? Weather Data Science 7
実験結果 ロジスティック回帰 ディープラーニング 予報 予報 実況 0 1 0 7879 159 1 68 31 実況 0 1 0 7953 85 1 73 26 TS 0.11 TS 0.13 BI 1.92 BI 1.12 ※実験を繰り返すと結果が変化する TS : 0.09 〜 0.13 BI : 0.77 〜 1.12 ➢ ディープラーニングの方がスレットスコアは高い場合もあるが、 ロジスティック回帰に圧勝とまでは言えない… ➢ ディープラーニングのバイアススコアは1前後で良いが、 ロジスティック回帰は空振りが多い → 想定と異なる結果だが、学習したモデルを詳しく分析してみる Weather Data Science 8
ロジスティック回帰 特徴量 回帰係数 オッズ比 検定結果 (Intercept) -18.1 0.00 *** 前24時間に雨 0.7 2.04 *** 【回帰係数とオッズ比を確認】 地上湿度 Step関数、VIFでマルチコ排除、 P値で*2個以上の変数のみ表示 10.3 30570.78 *** 地上気圧 2.9 18.32 ** 下層の雲量 0.8 2.26 *** 中層の雲量 -1.2 0.30 ** 3月 -1.0 0.37 ** 4月 -1.2 0.30 ** 5月 -0.9 0.41 ** 7月 -0.8 0.43 *** 気温・変化量 5.2 179.70 ** 露点温度・変化量 -12.6 0.00 *** 風の鉛直シア -2.7 0.07 *** 大気安定度1 4.8 115.90 *** 地上湿度のオッズ比がデカ過ぎない? 大気安定度2 → over-fittingの可能性あり 正則化項をつけてみる → Elastic Net 1.6 5.12 ** 1000hPa湿度 3.9 48.84 ** 1000hPa鉛直流 6.2 472.53 ** 1000hPa風速 -5.6 0.00 *** 950hPa風速 6.5 654.78 *** ✓ ほとんどの変数が、気象の概念 モデルと合致する効果 ✓ 950hPa風速は謎(でも解釈可) ・ただ気になるのが… 気温・露点温度の変化量、回帰係 数がおかしい(乾燥するの?) → はずしてみよう ※特徴量はスケーリングしている Weather Data Science 9
ロジスティック回帰 気温変化量と露点温度変化量をはずしたら、 精度は少し下がるが、空振りが大きく減った! 【なぜ?考察してみた】 ➢ 実況で霧が発生中は、日の出後も気温が上がらず、空気が入れ替わりにくい ➢ ここで数値予報が霧の発生を予測できていないと、日の出とともに日射による 気温上昇を予測し、空気の入れ替わりで露点温度を下げる予測をする (特に冬に起こり得る) ➢ こうした状況を学習していたためと考えられる。 Before 実況 TS BI 0 1 After 予報 予報 0 1 7879 159 68 31 0.11 1.92 0 1 7929 109 78 21 0.09 1.31 実況 Weather Data Science TS BI 0 1 10
Elastic Net ✓ さらに空振りが減り、かつ精度は ETS=0.1 を維持できた! ✓ 湿度の大きすぎた回帰係数は程良くなり、時間変化量は係数ゼロに! ✓ 大気安定度1の回帰係数の方が、地上湿度より大きくなった! 【考察】 地上湿度による過剰な予測が 抑えられた結果、バランスの 良い予測になったといえる Elastic Net 予報 0 1 0 7938 100 実況 1 78 21 TS 0.1 BI 1.22 特徴量 回帰係数 オッズ比 0.7 1.99 前24時間の雨 1.9 6.51 地上湿度 -0.3 0.72 地上風速 0.2 1.19 地上風向・西 0.5 1.69 午前3~5時 -0.3 0.78 午後6~8時 0.4 1.43 2月 0.5 1.69 11月 . 気温・変化量 . 露点温度・変化量 0.1 1.15 風の鉛直シア 2.8 16.88 大気安定度1 1.2 3.18 大気安定度2 . 950hPa速度 ※一部の特徴量のみ掲載 Weather Data Science 11
ディープラーニング(DNN) なぜ期待していたほど精度が上がらないのか? 入力層 出力層 Loss(誤差) 隠れ層:3層 学習時のLossの推移 Batch Size = 128 Iteration = 15000回 Test Validation Train DNNのネットワーク模式図 ユニット数500〜1000 反復学習の回数 Deep Learningは反復学習して精度を高めて(誤差を減らして)いくが… 学習データに対しては誤差が減り続けているが、 予測テストデータに対してはある段階から誤差が増えてしまっている ➢ 過学習(Overfitting)の状態 ➢ 学習を続けても、予測精度は上がらない Weather Data Science 12
ディープラーニングを解釈する ※ブラックボックスと言われるが 中身の解釈はある程度可能 安定度1 地上湿度 1000hPa湿度 安定度2 1000hPa風速 Permutation Importance (各特徴量の重要度) Top 10 Deep Learningのモデルの中で、予測精度への貢献度が高い特徴量を表す ✓ 霧の概念モデルと合致する特徴量がランクインしている ✓ 特にTop 3は直感的にも納得 ✓ 地上湿度より安定度の方が重要度が大きい! Weather Data Science 13
ディープラーニングを解釈する Partial Dependence Plot : 地上湿度 地上湿度のみを変化させた時、霧の発生確率の予測がどう変化するか 発生確率 → 黒線は平均 水色は信頼区間 50 70 60 80 90 100 地上湿度(%) ✓ 湿度が上がるほど発生確率も高くなるが、メリハリがない ✓ 直感的には90%を超えたくらいから発生確率がグッと上がって欲しい → 学習がうまくできていない? Weather Data Science 14
ディープラーニングを解釈する Partial Dependence Plot : 大気安定度1 大気安定度1のみを変化させた時、霧の発生確率の予測がどう変化するか 発生確率 → 黒線は平均 水色は信頼区間 -1 -0.6 -0.1 0.3 0.8 1.3 1.7 2.2 気温の鉛直勾配(℃/100m) ✓ 逆転層ができると発生確率がグッと上がっている! ✓ 大気不安定な状態では発生確率が非常に小さい(ほぼゼロ) → 湿度より重要度が高いのも頷ける Weather Data Science 15
ディープラーニングを解釈する SHAP valueによる事例解析 : 2017年8月25日 19UTC METAR:VIS 500m DNN予測:800m未満のFGを予測 地上湿度98%、1000hPa湿度97%、大気安定度1.1℃/100m 地上露点温度 1000hPa風速 1000hPa湿度 地上湿度 大気安定度1 8月 950hPa風速 赤は霧発生にプラスの要素、青はマイナスの要素 太い黒の数字は霧の有無の予測(1.00が霧あり) ✓ 概ね霧の概念モデル通りに霧を予想できている Weather Data Science 16
ディープラーニングを解釈する SHAP valueによる事例解析 : 2017年3月2日 21UTC METAR:VIS 700m DNN予測:800m未満のFGを予測 地上湿度93%、1000hPa湿度85%、大気安定度1.4℃/100m 時間帯×前24hr降水 Td変化量 地上湿度 地上湿度÷975湿度 大気安定度1 地上が西風 赤は霧発生にプラスの要素、青はマイナスの要素 太い黒の数字は霧の有無の予測(1.00が霧あり) ✓ 湿度はやや微妙ながらも、大気安定度や他の気象要素が 霧あり予測へと押し上げている Weather Data Science 17
ディープラーニングを解釈する SHAP valueによる事例解析 : 2017年4月28日 16UTC METAR:VIS 700m DNN予測:5000m以上のFGなし予測 地上湿度93%、1000hPa湿度83%、大気安定度1.2℃/100m 大気安定度1 4月 950hPa風速 赤は霧発生にプラスの要素、青はマイナスの要素 太い黒の数字は霧の有無の予測(1.00が霧あり) ✓ 大気安定度は霧を予想しようとしている ✓ 4月であることの方が大きく効いて、霧なしの予想となった 調査期間の集計では「4月」は1年で2番目に霧日数が少なく、 空振りを抑制したいコンセプトには合致する予測になっている (ハズレ予測ではあるが…) Weather Data Science 18
ディープラーニングを解釈する SHAP valueによる事例解析 : 2017年10月8日 21UTC METAR:VIS 500m DNN予測:5000m以上のFGなし予測 地上湿度99%、1000hPa湿度93%、大気安定度 -0.6℃/100m 下層雲量 大気安定度2 下層雲量÷850湿度 975湿度÷950湿度 下層雲量÷中層雲量 地上が北西風 赤は霧発生にプラスの要素、青はマイナスの要素 太い黒の数字は霧の有無の予測(1.00が霧あり) ✓ 地上湿度が99%もあるのに、霧あり予測への影響力が小さい! ✓ 今のところ、なぜDNNがこのような予測をしたか不明… 大気安定度1が低いが、湿度99%もあれば霧ありでもおかしくない 少なくとも予測への貢献度がもっと高くてもいいはず MSMが99%以上の湿度予測の時、実際に霧が出たケースが少ないのかも? (要追加調査) Weather Data Science 19
なぜディープラーニングの精度が上がらないか? 【数値予報モデルの要因】 ➢ 数値予報の予測が外れることがある AIの学習に悪影響を及ぼしている可能性がある ➢ 数値予報モデルは継続的にアップデートされている 特性が変化した可能性がある 【気候の年々変動】 ➢ 学習年と予測テスト年の気候の違いが影響した可能性がある 2015~2016年は大規模なエルニーニョ年だった ➢ あらゆる気候状態を学習するには、10年以上の学習期間が必要 Weather Data Science 20
LSTM(時系列に特化したDeep Learning) ここまでの機械学習モデルは、MSMの精度に依存していた… そこで、観測値だけでLSTMを使って予測をすることを試す 長時間先の予測は無理だが、目先1~3時間先ならやる価値がある 【METAR観測値から得られる要素】 視程・風向・風速・瞬間風速・雨の有無・霧雨の有無・雪の有無・雲量 気温・露点温度・湿数(≒湿度)・地上気圧 【モデルの作り方】 時刻Tの視程以外の要素を特徴量とする 時刻T+1, T+3の視程をターゲット変数とする (このとき、視程は対数をとっておく) 入力 LSTM 全結合層 視程 2014年~2015年梅雨くらいまでをTrain、2015年残りをValidationとし、 2016年の1年間を予測Test期間とする Weather Data Science 21
LSTM(1時間先の予測) ➢ 1時間後はなかなか良い予測結果が出た ➢ 実況で視程が急激に下がる様子を事前に予想できているところがある 10000m 8000m 6000m 4000m 2000m 青:実況 オレンジ:予測 スレットスコア : 0.35 霧が発生した期間を一部切り出したグラフ Weather Data Science 22
LSTM(3時間先の予測) ➢ 3時間後にもなるとだいぶ苦戦している ➢ 健闘しているものの、実況にワンテンポ遅れる傾向が現れる ➢ 霧の予測数が少なくなっている 10000m 8000m 6000m 4000m 2000m 青:実況 オレンジ:予測 スレットスコア : 0.14 霧が発生した期間を一部切り出したグラフ Weather Data Science 23
Summary 【結果】 ➢ 気象現象の概念モデルに基づく特徴量設計は有効であった ➢ インプットする数値予報モデルの不確実性から、 Deep Learningといえど予測精度には限界があった ➢ LSTMは1~3時間先のナウキャスト予測として利用価値ありそう (興味あるエアライン様とテスト運用できたら嬉しいです) 【さらに精度を上げるために】 ◆ DNNやLSTMなどは、まだパラメータのチューニング余地あり ◆ 数値予報モデルデータも使ったLSTM(時系列データとして扱う) ◆ 季節ごとにAIモデルを作り分けた方が精度が上がるかもしれない ◆ 一般化線形混合モデルや、階層ベイズモデルを試す Weather Data Science 24
最後に 近年のAI技術の発達は目覚ましく、 データロボットなんてものまで現れましたが… 人としての気象予報士と 技術としてのAIが どちらも必要です …と強く実感しました Weather Data Science 25