「シーバスの釣果」を釣果データからAIで予測してみた!中編(AI×釣り)【実装】

   

こんにちは。釣りを趣味としながらAI開発を本業としています、つりくず(@kuzu_tsuri)です。緊急事態宣言も明けて、釣りも緩やかに解禁されつつありますね!

世間が釣り解禁の状況の中、釣りが楽しくなるようなAIを開発したいと思い、前回に引き続き東京のシーバスの釣果の予測モデルにトライしたいと思います。

前回の記事:「シーバスの釣果」を釣果データからAIで予測してみた!前編(AI×釣り)【実装】

残念ながら前回構築した回帰モデルではシーバスの釣果を予測をできるレベルのものができませんでした。。。

今回は前回の反省を踏まえて、モデルの改善を行って行きたいと思います!

前回の反省:東京シーバス予測の問題点

これまで複数の回帰アルゴリズム(SDG回帰、Ridge回帰、Lasso回帰)で東京湾のシーバス予測にチャレンジしてきましたが、構築したモデルのテストデータに置ける相関係数が0.04と低く、とても精度の良いモデルとは言えません。

このような問題点を解消するために、3つのアプローチを検討しました。

  • データの追加
  • 問題設定の変更
  • 説明変数の追加や目的変数の見直し

まず、データの追加に関しては、現段階のデータで相関関係を見出すことができていない状況ですので、データを追加してもあまり効果が無いのと想定しています。

データの追加は、精度を70%から80%に向上させたいといった場合やモデルの堅牢性を高めたい場合は有効なのですが、そもそも相関係数が非常に低いので、アプローチとしては優先度を下げたいと思います(データの整形が鬼大変なのも理由としてあります)。

次に問題設定の変更は、回帰問題から分類問題へタスクを変更することで、利用可能なアルゴリズムを増やし、釣れる/釣れないのに2値分類として扱えば、精度の向上は見られそうです。

正直、一番効果がありそうなのですが、現状の回帰問題で取り扱うデータ自体の見直しを先にやっておきたいため、こちらも優先度を下げます。

ということで、今回取り組むのは説明変数の追加や目的変数の見直しとしたいと思います!

解決案1:目的変数を見直す

前回の東京シーバス釣果予測モデルでは、日ごとに釣り上げたシーバスの数を釣りペディアさまから使用許可を頂いた上で、データを取得いたしました。

そのデータの偏りを見てみましょう。

シーバス釣果数の日毎の偏り(釣果が投稿されない日は除外)

8月以降に釣果が上がり始めているようには見えますが、日毎の釣果には大きなバラツキがあります。このような状況の中で、日毎の気温や潮汐のような周期性をもつデータを説明変数と置くと、効果がなさそうなのも頷けます。

そこで、今回は1人あたりの釣果数を説明変数として取り扱いと思います!

正規化前後での目的変数の比較

上図が正規化後の目的変数(1人あたりのシーバス釣果)です。前回と比較して偏りはやや低減していますが、周期性は持たないので、結果は厳しそうですね。

と思いながらも、前回同様、SDG回帰、Ridge回帰そしてLasso回帰での相関係数を測定してみた結果がこちらです。

目的変数正規化後の結果

う〜〜ん、微妙な結果ですね。

前回の結果では学習データとテストデータに大きな乖離があるのが問題でしたが、今回も同様の結果となりました。そして、学習データの相関係数も低い。。。

ただし、前回のテストデータでは負の値となっていましたが、今回は正の相関を取るようになりました。そのため、目的変数を正規化した場合、学習データの相関係数もやや増加しているので、やらないよりはマシ程度の効果がありそうなことが分かりました。

解決案2:説明変数を見直す

さて、目的変数の正規化はあまり効果がありませんでしたので、次は説明変数の追加を行いたいと思います。

これまでの説明変数は、最高気温、最低気温、平均気温、降水量、朝まずめおよび夕まずめの最大、最小の潮汐を利用していました。

しかし、これらのデータは季節による周期性のあるデータである場合が多く、目的変数との相関を見出せないが故に、前回のような結果となりました。

とはいえ、最終的にはその日のシーバス釣果を予測したいので、気象データなど事前に予報が出るようなデータを説明変数として利用したいところです。

そこで、これまでのデータを利用しつつ、以下の説明変数を追加しました。

  • 前日との気温差
  • 最低気温と最高気温の変化
  • 海水の潮汐変化の差
  • 平均風速加

結果はこちらです!

説明変数の追加をした結果

相関係数は相変わらず低いですが、学習データとテストデータの相関係数の差が大きく減りました!また、学習データの相関係数も僅かながら増加しました。

とはいえ、相関係数は低いままな結果となり、回帰のアプローチとしてはまだまだ使えるモデルには程遠い結果となりました。

リアルデータの難しさ

結果だけを評価すると、今回のシーバス釣果予測も微妙な結果となってしまいました。。。

次回は問題設定を回帰問題から分類問題に置き直すことで、様々なアルゴリズムを試していきたいと思います!
※前編、中編と来たので、後編で終えることを期待・・・

今回取り扱った回帰問題ですが、これらのアルゴリズムはボストンの地価予測など、代表的な研究用のデータでは非常に高い精度のパフォーマンスを発揮します。その一方で、リアルな釣果データでは全く太刀打ちができないことも分かりました。

世のAIに関するニュースではアルゴリズムが注目されがちですが、自分自身が活用したいリアルなデータで効果を得るには数多くの工夫が必要なことも分かりました。

論文に掲載されるような結果は様々な工夫の元に成り立っており、その裏では数多くの失敗があるのかと思います。

今回の記事で、その裏側の泥臭い試行錯誤を感じ取ってもらえれば幸いです!

【バックナンバーはこちら】


業界から探す

さらに学ぼう!

PAGE TOP