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

   

こんにちは。釣りを趣味としながらAI開発を本業としています、つりくず(@kuzu_tsuri)です。現在もCOVID-19のため、釣りを自粛しております。

この釣り自粛中という状況の中でもAIと釣りで何かできることがないか色々考えておりました。そこで、今回は東京のシーバスの釣果の予測にチャレンジすることに決めました!

COVID-19が収束した時には、このモデルを使って釣れる日や釣れない日を予測することができれば、より釣りが楽しくなるのでは?と考えています。

今回の東京シーバス釣果予測では、次のプロセスを踏んで行いました。

  1. データの定義と収集
  2. 回帰モデルの構築・評価
  3. 実データでの推論

各プロセスについて詳しく述べていきます。

1.地道に泥臭くデータの定義と収集

データを集める前に、目的変数と説明変数を最初に決めました。

目的変数

まず、目的変数を「東京都のシーバスの釣果」と定義し、データは釣果投稿SNSの釣りペディアさまから2018年分のデータを取得しました。シーバスは出世魚のため、セイゴ、フッコ、スズキと様々な表記が釣果データに見られましたので、これらを全てシーバスに名寄せしました。

説明変数

次に、説明変数としては、平均気温、最低気温、最高気温、降水量を選びました。こちらのデータは気象庁の過去の天気データより東京・羽田エリアのデータを2018年分ダウンロードしました。

☆これらのデータはこちらからダウンロード可能です

そして、追加の説明変数として、満潮時と干潮時の潮位を気象庁の潮位観測データからダウンロードしました。

☆これらのデータはこちらからダウンロード可能です

釣りに行く時には、釣行日が大潮の日なのか若潮の日なのかといった具合に、潮汐を確認します。一説によれば、大潮の日は潮の流れが大きいので釣れやすいといったこともありますので、満潮時の潮位と干潮時の潮位を説明変数として選択しました。

使用したデータ

これらの作業を行なった結果、118件の釣果データを得ることができました!
(異なるデータセットを繋ぎ合わせるためかなり大変でした。。。)

ちょっとデータ数は少ないですが、このデータを学習データ93件、テストデータ24件で分割するようにしました。これでデータの準備は整いました。

収集したデータの例:targetがシーバスの釣果で、その他のカラムは気温や潮位、降水量を表す。

2.複数の回帰モデルを構築、精度を検証

今回は、シーバスの釣果数を目的変数としたため、回帰モデルを構築していきます。

回帰モデルでの検証

まずは以下の3つの回帰モデルを利用しました。

  • SDG回帰(全てのデータを使わず、データを複数回分割して推論する回帰モデル)
  • Ridge回帰(全ての説明変数が重要な時に有効な回帰モデル)
  • Lesso回帰(一部の説明変数が重要な時に有効な回帰モデル)

精度の評価は相関係数R2値)で行います。相関係数は-1から1の範囲をとり、1に近ければ近いほど精度が良いモデルと判断することができます。

気になる結果はこちらです!

シーバス釣果予測の重回帰分析結果

なんと、テストデータでは相関係数がマイナスとなってしまい、とても良いモデルとは言えませんでした。。。

ニューラルネットワークを利用した回帰モデルでの検証

さて、このままでは悲しい結果のままなので、最後の望みをかけて、ニューラルネットワークを利用した回帰モデルも構築してみました。

精度の評価は、平均絶対誤差MAE)を利用しました。

結果はこちらです!

ニューラルネットワークによるepoch数に対するMAE(val_MAEがテストデータ)

学習を進めるとMAEが減少し、誤差が低減していきますが、MAEが5.7付近で頭打ちとなります。MAEは正解からどれくらい離れているかを示す指標で、5.7という結果は決して、良い結果とは言えません。。。

3.構築したモデルでシーバス釣果を予測してみる

これまでの回帰モデル構築により、精度が良いモデルができませんでした!
正直なところ、失敗です。。。

念のため、構築したモデルで予測を行い、実際の結果と比較してみました。

各アルゴリズムでのシーバス釣果の予測結果
(実際の結果と全然違う。。。)

当然ですが、全然、違う結果になってしまいましたね。。

予告:反省を活かして再チャレンジ!

今回のモデル構築は、正直に言って非常に悪い結果でした。

しかし、めげずに次回も引き続き、この問題にチャレンジしていきたいと思いますが、次の内容を順々に試していきたいと思います!

  • データの追加
    今回はデータ量を2018年の結果に絞ったため、2019年分のデータも追加することでより高精度を目指すことが可能かもしれません。
  • 特徴量の取捨選択(次元圧縮や特徴量の追加)
    例えば、海水温や風速をデータに加えるなど、まだまだ追加すべき特徴量はありそうです。また、事前のデータのばらつきを分析した特徴量の取捨選択も実施することにより、不要な特徴を減らすことで、モデルの安定性を高めることにもチャレンジしたいと思います。
  • 問題設定の変更
    今回は釣果数を目的変数としていましたが、釣果数によって釣れる/釣れないの2値分類に問題設定を変更することも検討しています。問題設定を分類問題へ変更することによって、使えるアルゴリズムの幅を広げることも可能です。

最も有効そうなのが分類問題へのアプローチの変更ですかね。。。まだまだ時間がかかると思いますが、シーバス釣果予測AIの構築へ向けて、多くの試行錯誤をしていきたいです!

また、シーバスの釣果予測に成功したらメバルやクロダイ、タチウオなど、様々な魚種特化のモデルを構築していきたいと思います・・!

釣り×AI実装」のほかの記事もどうぞ

▶ 「釣り場の混雑具合」検出にYOLOを使ってみた!
▶ 「釣り場の盛り上がり」を感情分析で捉えてみた
▶ ツイートを感情分析して「良い釣り場」を探してみた


※この記事は明日以降、会員限定コンテンツになります。同様に、過去の記事は全て会員のみ閲覧可能です。閲覧されたい方はこちらからご登録よろしくお願いします!(会員登録は無料です。)


業界から探す

さらに学ぼう!

PAGE TOP