ひろしまQuest2022河川の水位予測

1.8K Views

February 17, 23

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

ひろしまQuest2022 河川の水位予測 TeamShiny近藤 2023年2月15日(水)

2.

アジェンダ 1. コンペ概要 6. データ成形、前処理 2. チーム概要 7. その他工夫点 3. EDA 8. まとめ 4. 予測手法 5. 他メンバーの取り組み 2

3.

コンペ概要 広島県内の観測データ(河川の水位、雨量、潮位) から、翌日の各河川(各観測局)の水位を 予測するアルゴリズムを作成する。 分析用データとして、以下が与えられる。 内容 :観測日時、ダムや観測地点の 緯度経度、水位、雨量、潮位 観測期間:6年間 観測頻度:1時間ごと 3

4.

チーム概要 チームシャイニー、シャイニーラボの利用者、スタッフあわせて 5名でチームを組んだ。 ⚫ A(データ成形、前処理、モデリング) ⚫ B(データ成形、前処理) ⚫ C(データ成形、前処理) ⚫ D(前処理、モデリング) ⚫ 近藤(データ成形、前処理、モデリング) 分析は各自行い共有する。週1回は集まり案を出し合う。 4

5.

結果 最終順位は Public Leaderbord6位、 Private Leaderbord7位。 賞金を狙える位置にいたが、 あと一歩届かない結果に。 金メダルは持ち帰れた。 少しシェイクダウンして、 LBを意識しすぎた感があった。 5

6.

EDA  フォーラムのチュートリアルの可視化。  これとは別でヒートマップ、特徴量重要度も出して 検討もした。あまり有用な知見は得られなかった。  地図を見て知見を得てはならないというルールがあり、 周辺観測所や上流下流を判定するのに緯度経度を使う必要 がある。 6

7.

観測所を地図上にプロット 雨量観測所(青)は 全体的に散らばっていて、 水位観測所(赤)は 河川周辺にまとまってい る。 雨量観測所は緯度経度か らの距離でエリアが求め られ、 水位観測所は近い場所を 同傾向として使えそうか。 7

8.

6年間の水位 全期間、6年間の水位より 例年、夏に水位が高い期 間があるが、 2年目に欠損が多くあり、 5年目夏に豪雨があり水位 が例年以上に上昇してい る期間がある。 8

9.

1年目の水位 夏にまとまった雨で水位 が変動する以外は変動は 少ない。 近くにダムなどがなけれ ば同じような水位の変動 傾向が見て取れる。 9

10.

予測手法 おおまかに解法は、水位観測所ごとに1時間ずつ水位を予測 する手法と、水位の変動が大きい観測所は24時間まとめて 予測する手法の、2種類のハイブリッド方式を採用した。 水位の変動が大きい観測所は、 全水位観測所 瀬戸内海周辺の観測所が多く 166 周辺の港の潮位の値も多少は 有効だった。 観測所ごと 156 変動 大 10 10

11.

基本戦略 ⚫ 欠損値、異常値、外れ値を適切な値に置き換え減らす AIの傾向を捉えやすくするため ⚫ 河川上流水位の追加を検討 アイデアを煮詰められなかった点として一番に挙げられるの が、後述する河川上流水位を緯度で判定し追加する手法。 川の流れる方向が東西南北バラバラのため精度の貢献は 低かったため見送った。 11

12.

水位観測所ごとに1時間ずつ水位を予測  166ある水位観測所ごとに予測。各観測所ごとの傾向が 捉えられる反面、一括で処理できないためどうしても 学習時間、推論時間が多くかかる。  各水位観測所ごとに最大水位、最小水位、基準水位が 異なるのでこの手法自体は有効だったと思われる。  推論時24行データにおいて、時間の変数以外に説明変数に 大きな差異はなく、変動を捉えずらかったよう(後述)。 12

13.

水位の変動が大きい観測所は24時間 まとめて予測  166ある水位観測所の一部の変動が大きい観測所を1行 データにおいて多出力で予測。1時間ごとの増減は前述の 手法よりこちらの手法の方が捉えやすかったよう。  観測所はラベルエンコーディングして区別している。  河川ごと、季節ごと、雨季や乾季ごとの学習なども試した がtestデータでは精度が上がらず不採用。 13

14.

その他予測手法 ⚫ モデル 観測所ごとではmax_depth=3、水位変動大ではmax_depth=10が適合した。 MultiOutputRegressorのアーリーストッピングは学習時には行えていたが提出時に 調整が必要となり未反映。CatboostはGPUを使用した。最終提出には入れなかったが、 結果として入れない方が良かった。 kerasのMLPやkerasのGRUでまあまあの精度が出ていたが、推論時間の関係で不使用。 LightGBMはoptunaのハイパーパラメータチューニングが有効だった。 ⚫ 評価方法 Hold-outValidationをしtrainデータ9割で、validデータ1割で評価。 評価はデータが少ないためほとんど参考にせずLBをあてにしていた。(Shakedownの 原因かも) 最終的にはアーリーストッピングしていない部分は6年分全部をtrainデータに使用。 ※上位解法では、交差検証を採用していたので追求すればよかったかもしれない。 14

15.

他メンバーの取り組み  Aは観測所のダミー変数化、多出力モデルに関心があり 追求していた。また、速度、精度ともに有効な線形モデルに着目し、 アンサンブルの幅を広げることに貢献した。  Bはデータ成形、全体の細かなところを中心に意見を 出していた。  Cはデータ成形、前処理でアイデアを頻繁に提案し率先して 動いた。また全体の取りまとめも行った。  Dは先行して取り組んでいた。水位、雨量の12時間平均 などの改善点の提示や、近藤とは異なるアプローチがあり、特に 提出zip作成時に大きな助けとなった。また交差検証にも取り組んでいた。 15

16.

データ成形、前処理(1) ⚫ 使用した特徴量 ・前日の12時から24時の水位 ・前日の0時から24時の水位観測所から近いTOP3の雨量観測所の平均雨量 ・広島県西中部の2箇所の雨量観測所(吉和、菅沢)の 前日の0時から24時の平均雨量 ・時間 ・水位変動大の観測所は前日の0時から24時の潮位も追加 ⚫ 使用しなかった特徴量(推論時間の兼ね合いもある) ・前日の0時から12時の水位、前々日の0時から24時の水位、雨量、潮位 ・前日、前々日の0時から24時の水位、雨量の12時間平均、最大、最小値 ・河川上流(緯度より選定)の前日の0時から24時の水位 ・月、日、季節 ・前日の水位、雨量の2時間移動平均 ・24時間雨量の0をカウント ・ダムかどうかのフラグ ・水位の平方根(流量に比例と論文に書かれていた) 16

17.

データ成形、前処理(2) ⚫ 目的変数 対数変換を行ったり、「当日水位-前日23時の水位」も試したが効果が確認でき ないため見送った。 ⚫ 前処理 "大谷池"は300以下を+100。"白川"は200以上を-227.5。"七社"は9以上を-10。 "門田"は0を欠損値に。 同観測所が複数行ある等の不整合なデータの調整。 水位、雨量、潮位を1時間ずつシフトさせ、データ数を24倍に増やした。 一部モデルでは豪雨期間を省いた。 ⚫ 欠損値補完 水位、雨量、潮位に関して、limitで制限したinterpolateで線形補完。残った欠 損値は全平均を取り補完。 年月ごとの平均、多変量補完、多重代入法なども試したが、効果が確認できず不 採用。 17 ※上位解法では、近い観測所の値で補完したり、前日の予測値を当日の欠損値補 完として使用していた。

18.

その他工夫点 ⚫ 学習時の工夫 観測所ごとに加えて河川ごと、季節ごと、雨季や乾季ごとの学習 なども試したがtestデータでは精度が上がらず不採用。 ⚫ 推論時の工夫 推論時間がギリギリだったためonnxを介して軽量化、速度向上を 図った。それでも遅いので重要度が高くなさそうな特徴量を省いた。 精度は悪くなかったため、1時間ごとに予測して予測値をtestデータ に入れて24回推論させる方式も試したが、推論時間がかかるので 見送った。 18

19.

アンサンブルによるスコアの向上 ⚫ 観測所ごと ⚫ 予測値の加重平均をとって最終的な予測値として提出。 ⚫ LightGBM、HistGradientBoosting、Ridge、MLP(学習前に 正規化)を使用。 ⚫ 加重平均の割合は0.25:0.25:0.25:0.25。 ⚫ 水位変動大の観測所 ⚫ 推論時間の関係でHistGradientBoostingのみを使用。 19

20.

プログラミングコードについて 整ったコードとはとても言い難いのでお見苦しいところが あるかもしれません。以下リンクへお進みください。 ⚫ チュートリアル https://drive.google.com/file/d/1gGeb7cjLc3EqZBX9q1sxmIBDhA8oOaw/view?usp=share_link ⚫ 最終提出の学習用コード、提出zip https://drive.google.com/drive/folders/1J8id9i9OJlVO098YdZFCLuVPo0Dzp29?usp=share_link 20

21.

まとめ アイデアは終盤まで尽きることはなく時間が足りなかった。  推論時間を気にしたり提出zipを作るのに多数の時間を  費やした。  jc氏、mochizuki氏などのコンペ常連相手に対抗できる 戦いができ、自信となった。  次回も同じような方式のSignateの時系列問題にチームで 参加予定。経験を活かしていきたい。  終盤は個人でまとめてしまったので、チームでの取り組み には課題が残った。 21

22.

ご清聴ありが とうございま した 22