Please enable JavaScript in your browser.

fltech - 富士通研究所の技術ブログ

富士通研究所の研究員がさまざまなテーマで語る技術ブログ

SIGNATE 「ブルーカーボン・ダイナミクスを可視化せよ!」コンペティションで2位入賞しました

こんにちは、人工知能研究所 AutoMLプロジェクトの近藤です。
2023年1月から4月にかけて、SIGNATEで開催された「ブルーカーボン・ダイナミクスを可視化せよ!」コンペティションに参加し、2位に入賞しました。
本記事では、コンペティション概要、解法と開催期間中の取り組み、終了後の振り返りについて紹介します。

リーダーボード(一部編集済み)

コンペティション概要

本コンペティションでは、沖縄県全域を対象とした海草藻場の被度(一定面積を海草が覆う割合を0-100%で計測した値)の予測精度を競いました。
海草は、光合成を伴う成長過程において炭素が海中に固定されることから海草藻場の保全・再生が温暖化対策の一つとして注目されています。一方で海草藻場の人工的な再生は技術的に困難であり、特に日本海域では台風や河川の影響が強く、時間的・空間的な変動がとても大きいです。 本コンペを通じて海草藻場の空間的な分布と時間的な変動の仕組みを理解することで、実効性のある海草藻場再生につながることが期待されます。

データセット

下記の表形式データが与えられました。

  • 観測期間:1999年~2020年
  • データサイズ:約18000行 x 約4000列
  • 特徴量:
    • 観測地点の環境由来:水深、陸からの距離、水温、塩分濃度など
    • 観測地点の衛星画像由来:Landsat7号、Landsat8号、Sentinelの衛星3機種の2000~2021年までの各年のデータ(RGB、植生指数など)

評価指標

平均二乗誤差で評価されました。

ポイント

20年分かつ沖縄県全域が対象であり規模が非常に大きく、データセットには欠損が多く含まれていました。 網羅的な観測が難しい海の生態系に関する課題背景に沿うべく、学習データとテストデータとが空間的・時間的に異なっており、欠損補完の工夫や欠損に強い汎用的な特徴量を作り出せるかがポイントになると考えました。

2位解法と開催期間中の取組み

機械学習モデルのパイプライン概要を以下に書きます。

3000個以上と数の多い衛星データに関して20年分のデータの中で被度を計測した年と近い値(観測年から見た一昨年、去年、今年)のみを抽出し残りは期間平均に集約し、欠損があるが重要な特徴量に関してサブモデルで予測した値を新たな特徴量として加えました。学習モデルにはLightGBMを用いました。

以下に、Publicスコアの改善に効いた処理を2つ説明します。

①目的変数の分布に合わせた損失関数の設定

下図は学習データセットにおける被度のヒストグラムです。被度は0から1の値を取り得ますが、多くの観測地点で海草は繁栄しておらず0近傍に値が集中している事が分かります。そこで、Tweedie分布を仮定した損失関数を設定しモデルを学習しました。

目的変数「被度」のヒストグラム

②文献ごとの観測時の有効数字の揺れに着目したキー特徴量の考案

被度のヒストグラムを眺めると0.625や0.600など頻繁に観測される値が存在することが分かりました。 0.625は0.5~0.75を丸めた値であり0.600は10段階に丸めた値であろうと予測でき、データセットの引用元の文献ごとに観測時の有効数字に揺れがあることが考えられました。この揺れがモデルの学習に影響しない様に、敢えて有効数字を落とす処理を考えました。

また、地理的な問題に効く事が多いターゲットエンコーディングを活用するため、観測地域を格子状に分割し格子内での集計値を上記処理の対象にしました。 それぞれの格子に属する学習データセットに対し被度上位10%を集計しこの値を新たな特徴量に利用します。 本コンペティションでは学習データとテストデータは空間的に異なる地点にあり、単純なターゲットエンコーディングは出来ないため、衛星画像由来の特徴量を説明変数に上記で計算した被度上位10%値を予測するサブモデルを学習・推論し、新たな特徴量として本モデルに追加しました。

以下に、有効数字を落とした格子内の被度上位10%値を予測するサブモデルの処理ステップを書きます。

  • 緯度経度を元に観測地域を200x200の格子に分割し、ターゲットエンコーディングの集計単位とする。
  • 各格子内の学習データセットに関して被度上位10%値を計算する。
  • 有効数字を落とすために、0~1の範囲の連続値を取り得る被度上位10%値を5つのbooleanに変換する。
    • 被度ヒストグラムで見つかった5つの頻値[0.05, 0.2, 0.4, 0.675, 0.825]を利用する。
    • 各データに対し、被度上位10%値がヒストグラム5つの頻値を超えるか否かの5つのbooleanを計算する。例えば、被度上位10%値が0.8であれば[True, True, True, True, False]、0.1であれば[True, False, False, False, False]と計算できる。
  • 5つのbooleanそれぞれを予測するサブモデルを5つ学習する。サブモデルの説明変数にはSentinel衛星データを用いる。
  • サブモデルの予測値を本体モデルの特徴量として追加する。

この5つの特徴量がモデルのFeature Importanceにて上位を占め、Publicスコアでも安定して上位にランクイン出来ました。

コンペ終了後の振り返り

前処理を丁寧に行うことで初めて入賞圏内までスコアが改善

キー特徴量を追加した時点でリーダーボード上では良いスコアが得られていました。一方で、コンペ終了後にPrivateスコアの推移を確認したところ、一般的な前処理を丁寧に行うことで初めて入賞圏内までスコアが改善していることが分かりました。

privateスコアの推移

Privateスコアの推移グラフでは4月1日付近でスコアが改善している事が分かります。ここで追加した処理は外れ値の除去や衛星データの⽋損埋めであり、一般的な前処理です。大事な前処理ではあるのですがその対象が3000個以上存在しており終盤まで放置してしまっていました。
衛星データは計測時の海上の波の強さや空の雲の影響で多くの外れ値が計測されます。衛星データは提供された時点で前処理が施されていましたが、取り切れていない外れ値もありました。3000個以上の特徴量に対し、一つ一つ可視化しながら外れ値をNullにし、その後に20年分の衛星データに関して欠損の少ない年から順にサブモデルを学習・推論し、欠損を推論値で補完しました。
ちなみに、衛星データに関しては上記の補完が効きましたが、観測地点の環境データに関しては補完せず欠損のまま扱った方が良い特徴量もあり、特徴量ごとの補完有無とその補完手法の検証に終盤の1か月を費やしました。Publicスコア上は目立った改善が無く地道な作業となったのですが、検証と改善をやり切る事で良いPrivateスコアが得られました。

関係者との交流で更なる性能改善の糸口を発見

本コンペティションは人工知能学会が共催しており、2023年度人工知能学会全国大会にて解法発表の場を頂き関係者と交流出来ました。 コンペ運営者からは海草藻場に関するドメイン知識やデータセットに関するお話を伺い、参加者とは取り組んだ工夫や苦労を共有し合えました。
特に、コンペ運営者からは海底の地質やサンゴ礁の影響があることを聞き、私が考えた5つのbooleanをサブモデルで学習・予測する手法は、海草藻場の被度を直接学ぶのではなく、繁栄に必要な地質やサンゴ礁に関する条件を部分的に学んでいると解釈できるのではないかと思い当たりました。

5つのサブモデルのFeature Importanceを下記に可視化しました。

5つのモデルに共通して重要な特徴量もありますが、少しずつ違う特徴量からも学んでいることが分かります。 例えば、閾値の値が小さい0.05のサブモデルではNDSIという特徴量が6番目に位置しており比較的重要な特徴量です。NDSIはNormalized Difference Salinity Indexの略であり、検索すると塩分濃度や水分など土壌に関する文献を見つけられました。サンゴ礁の有無や地質と、この特徴量を関連付けるには更なる検証が必要ですが、海草に直接関係のありそうな植生指数だけでなく、海草に一見無関係な衛星データ指数にも着目し様々な生存条件を併せてモデリング出来れば更なる性能向上が期待できるのではないかという糸口が得られました。

最後に

生態系に関するデータ分析には今回初めて取り組んだのですが、素人ながらアイデアがどんどん出てきて3か月に渡る開催期間の中、検証ネタが尽きず、非常に楽しく取り組むことが出来ました。問題設計、データ整形やコンペ運営に関係された皆様と一緒に取り組んだ参加者の皆様に感謝申し上げます。

「コンペ終了後の振り返り」で述べた丁寧な前処理や愚直なパターン検証は時間はかかるがあまり面白くないところでもあり、自動化したいところです。
本記事では触れておりませんが、普段の業務では表形式データを対象にしたAutoMLの研究開発に取り組んでおり、こうした領域で相性が良い技術だと考えています。 本技術に関して皆様に触って頂ける環境が公開できており、ご興味のある方はぜひ下記の解説記事から触ってみて下さい。
機械学習コードを自動生成するFujitsu AutoMLデモアプリを一般公開しました