魚がちっとも釣れない。
そもそも魚のいない場所に餌を垂らしても釣れるわけがない。
例えば回遊魚であるアジやサバを狙うのなら、岸近くで回遊してくれないと釣れない。
けれど、いつ・どの場所に回遊して来るのか分からない。
これ、事前に予測する方法が無いのかな?
そうすればボウズに悩まされる事が無くなるよね。
例えば「釣れる日」や「釣れる場所」を機械学習で予測って出来るんじゃないの?
そうだ男のロマンを求めてみよう!
小人閑居して不善をなす……
(C)底辺領主の勘違い英雄譚 – ぱらボら/馬路まんじ/ファルまろ
機械学習で「一週間後にアジが釣れる数」を推定してみた
数ヶ月前、年間の釣果状況を把握するために「市原海釣り公園」の情報をベースにWebサービスを作成した。
この海釣り公園では釣果以外にも
- 年月日
- 釣行人数
- 潮
- 上水温
- 下水温
- 天気
- 風向き
などの情報が記載されているので入手可能だ。
これらを特徴量(説明変数)とすれば、釣れる日ぐらいは予測できるのでは?
残念ながら「何時に釣れた」という情報は無いので、知りたいレベルには達していないけどね。
目的変数は「一週間後にアジが釣れる数」とする。
まずはヒートマップにより相関の強い特徴量チェックしてみよう。
1 2 3 4 5 6 7 8 9 10 |
def display_heatmap(df, k, target): corrmat = df.corr() cols = corrmat.nlargest(k, target)[target].index cm = np.corrcoef(df[cols].values.T) fig, ax = plt.subplots(figsize = (12, 10)) sns.set(font_scale = 1.2) hm = sns.heatmap(cm, cbar = True, annot = True, square = True, fmt = ".2f", annot_kws = {"size": 10}, yticklabels = cols.values, xticklabels = cols.values) plt.show() fig.savefig("figure4.png") |
結果はこちら。
相関係数の意味は次のとおり。
強さ | 関係性 |
---|---|
0~0.3未満 | ほぼ無関係 |
0.3~0.5未満 | 非常に弱い相関 |
0.5~0.7未満 | 相関がある |
0.7~0.9未満 | 強い相関 |
0.9以上 | 非常に強い相関 |
分かったことは
一週間後にアジが釣れるかは一週間前のアジの釣果に左右される
アジが釣れるかは「上層の水温」と「時期(月)」に左右される
なるほどなるほど。
……
……
こんなの学習させる意味なくね?
……
調べる前から分かっていたレベルだ。釣り人舐めんな!
特徴量(説明変数)を増やしてみる
機械学習で精度高く解くために特徴量(説明変数)を増やしてみよう。
「東京地方 過去の天気予報・降水確率」というサイトにCSVがあったので7日前の予測結果を特徴量(説明変数)に追加してみた。
これで、7日後の最高気温、7日後の最低気温、7日後の降水確率が追加された。
また、アングラーズでは、満潮、干潮時刻だけでなく、過去の次のようなデータも取得可能だ。
天文薄明、航海薄明、市民薄明、日出、正中、日没、市民薄明、航海薄明、天文薄明、略最高高潮面、大潮升、大潮差、小潮升、小潮差、平均水面、平均潮差、潮齢、平均高潮
特徴量として価値があるのか分からないけど抽出してヒートマップにしてみた。
新たに分かったことは
一週間後にアジが釣れるかはカワハギの釣果と弱い相関がある
ww
なんだそりゃww
次に、時系列なデータだと思うので本来は「回帰」で解くのが正しいかもしれないが、多クラス分類問題として解いてみる。
特徴量としての寄与度は次のとおり。
月齢なんて意味ねーだろww
日付なんて「20210921」とかの意味のない数字の羅列だよww
全く当てにならんわww
なお、AUC スコアは「0.651348」だった。
うーん、システムトレードの株価推測と同じ精度だww
そう考えると、システムトレードなんて夢のまた夢じゃんww
なお、カテゴリ型の中身が ‘object’ になっているため、そのままでは LightGBM に食べさせることができない。
LightGBM では int, float, boolean しか扱うこことができないため、scikit-learn の LabelEncoder を使って対応する整数値に変換する必要がある。
先行・関連研究研究を確認する
あまりに私の結果が不甲斐ないので、先行研究を紹介しておく。
近年「持続可能な漁業」が叫ばれているので、先行研究は大量にある。
ググって上位に出てきたPDFのみを紹介する。
なお備忘録として、商用利用可能かつ無料で公開されている衛星データ「Tellus(テルース)」も漁業の場所特定に使えそうだ。
また、今年度はドローン空撮画像を利用したSIGNATE 「魚群検知アルゴリズムの作成」というコンペも開かれた。
海水温パターンのクラスタリングによる良漁場推定
この分野で長年研究しているのは京都大学。
論文 | 2018年 |
---|---|
学会名 | 電子情報通信学会 |
研究機関 | 京都大学 学術情報メディアセンター |
執筆者 | 飯山将晃 |
学習モデル | Support Vector Regression、豊漁クラスタに所属する尤度に基づいて良漁場らしさを決定 |
説明変数 | 過去の漁場位置と漁獲量(14年分)、海水温データ |
目的変数 | 漁場インデックス |
結果 | プロの漁業者でも失敗することを考えれば十分な精度 |
機械学習を利用した内湾における 浮魚類群集の空間分布量の推定
論文 | 2019年 |
---|---|
学会名 | 土木学会 |
研究機関 | 株式会社シャトー海洋調査、名城大学大学院 |
執筆者 | 濱田 孝治, 吉田 司, 岡村 寛, 原 武史, 鈴木 輝明 |
学習モデル | Gradient Boosting(XGBoost) |
説明変数 | 167メッシュに分割した対象海域の水温、塩分、溶存酸素濃度、クロロフィルa濃度、動物プランクトン量 |
目的変数 | カタクチイワシ漁獲量の時空間的分布の推定 |
結果 | モデルは標本漁船による実測結果をよく再現 |
クロロフィルa濃度と動物プランクトン量の寄与度が高いことから、カタクチイワシが主として餌を求めて移動・回遊していることと、貧酸素水塊の状況も水温とともに影響を与えていることを示唆している。
機械学習を用いた衛星画像による漁場予測の研究
論文 | 2019年 |
---|---|
学会名 | 国際漁業学会 |
研究機関 | 一般財団法人リモート・センシング技術センター |
執筆者 | 荒井 頼子, 出原 真理子 |
学習モデル | 最大エントロピー (MaxEnt),ランダムフォレスト (RF).およびサポートベクターマシン (SVC) |
説明変数 | 海表面水温、海表面クロロフイル、海面高度アノマリー、地衡流速、過運動エネルギー、船舶検出データ |
目的変数 | 漁場分布の推定値 |
結果 | RFとSVMでは船舶位置と良く一致していた |
サンマの分布は海面水温の分布や動植物プランクトン量と関係があること推測できる。
機械学習を用いた三重県におけるブリ類漁獲量の実用的予測モデルの構築
参考文献によると、「機械学習に基づく鹿児島近海に来遊するクロマグロ幼魚の漁獲量予測」では、24 年間の鹿児島近隣県のクロマグロの漁獲量および種苗漁獲量、枕崎漁港のカツオの漁獲重量、フェリーの水温データ、黒潮離岸距離等を用いて、サポートベクター回帰による鹿児島県のヨコワ(クロマグロの幼魚)の漁獲量予測を行っている。
論文 | 2018年 |
---|---|
学会名 | 国際漁業学会 |
研究機関 | 三重大学 大学院生物資源学研究科 |
執筆者 | 万田敦昌、小川翔大、久野正博、藤田弘一、武田保幸、御所豊穂、海野幸雄、山田二久次 |
学習モデル | 線形回帰、サポートベクター回帰、ランダムフォレスト回帰、ニューラルネットワーク、ディープラーニングの |
説明変数 | 月平均水温、水温偏差、海面水温の長期変動傾向、黒潮流路、黒潮流量、月平均気温、北極振動、北大西洋振動、西太平洋パターン、北太平洋指数、前年のブリ類漁獲量、前年の被食 |
目的変数 | 当年の三重県のブリ類漁獲量 |
結果 | 線形回帰モデルは漁獲量の最大値、中央値、最小値を 20%程度の相対誤差で推定しており安定した予測結果が得られた |
ビッグデータによる統計的機械学習を利用した南九州の漁業予測・赤潮予測モデルの開発
論文 | 2019年 |
---|---|
学会名 | -(研究成果報告書) |
研究機関 | 広島工業大学、鹿児島大学 |
執筆者 | 庄野 宏、大富 潤 |
学習モデル | Tweedie回帰モデル、サポートベクター回帰、機械学習理論(ディープラーニングを含む) |
説明変数 | 気温、日照時間、降水量、平均風速、ベクトル風速、梅雨入り日 |
目的変数 | 赤潮発生の有無・規模・発生日・終息日 |
結果 | 全て実際の観測値とほぼ合致 |
まとめ
機械学習を使って一週間後のアジがどれだけ釣れるのか?を予想してみた。
分かったことは次の3つ。
- 一週間前に釣れていたら釣れる可能性が高い
- 水温と釣果は弱い相関がある
- カワハギの釣果がアジの釣果と弱い相関がある
最後はちょっと何を言ってるのか意味不明だけど、とりあえず終了とする。
今回使った(Webスクレイピングして作成した)CSVデータは「Github」に置いている。
利用したコードは株予測と全く同じなので割愛する。
【追記 2021.12.1】社内AIコンテストで「プロト賞受賞」
実は、この実装を社内AIコンテストに応募してみた。
ブログ書いても誰も見てくれないしね。
で、
見事「プロト賞」(実質2位)
を受賞しました!
持続可能な社会に向けたネタは需要があるっぽいね。
過去の受賞事例はこちら
2019年度・・・[社外]地元公園の写生大会で入賞受賞
2018年度・・・[社外]The Japan News翻訳コンテストで佳作受賞
2017年度・・・[社内]事業部門MVP 2017を受賞
2016年度・・・[社内]社内アイデアコンテストで部門長奨励賞を受賞