3rd place solution(by Oregin)
お疲れ様です。俺人です。
今回の野菜取引価格の予測で3位の解法を紹介させていただきます。
内容的には同じ内容ですが、図等を追加した記事をブログでも公開しておりますので、併せてご参照ください。
【3位解法】Probspace開催「野菜取引価格の予測」の振り返り。
(https://oregin-ai.hatenablog.com/entry/2023/08/23/190148)
1.全体構成
野菜についてどのような分類をして予測するか、天候情報をどのように加工して、何を選択するかで知恵を絞りました。
全体構成としては、大きく分けて以下の2つの構成で構築し、それぞれの予測値の平均を最終的な提出としました。
地域に関しても考慮に入れようか悩んだのですが、今回の価格は生産地ではなく消費地の価格とのことでしたので、地域別の予測はあまり影響しないと仮定して、野菜の種類だけに注目することとしました。
2.特徴量選択
特徴量については、価格の時系列データのほかに天候情報について以下の通り加工し、分類した野菜毎に、選択して学習に利用しました。
【特徴量の加工】
元データ
- 天候情報の元データを日照時間、降水量、降雪量、最高気温、最低気温、平均気温の6つに分類
累積和
- 日照時間、降水量の合計、降雪量合計、平均気温、最低気温25℃以上日数、最高気温25℃以上日数、最低気温0℃未満日数、最高気温0℃未満日数、日照時間0.1時間未満日数について、累積和を特徴量として追加。
- 累積については、2か月、3か月、4か月、6か月、12か月のパターンで累積和を計算。
差分
- 最高気温と最低気温の差、平均気温と最低気温の差、最高気温と平均気温の差、最高気温の平均と最低気温の平均の差を特徴量として追加。
閾値以上、以下のフラグ
- 日照時間につき、100,150,200,250,300を閾値として以上、以下のフラグを特徴量として追加。
- 降水量の合計につき、10,50,100,200,300,400,500を閾値として以上、以下のフラグを特徴量として追加。
- 降雪量の後継につき、5,10,30,50,100,150,200を閾値として以上、以下のフラグを特徴量として追加。
- 最高気温の平均、最低気温の平均、平均気温につき、5,10,15,20,25,30,35を閾値として以上、以下のフラグを特徴量として追加。
【特徴量の選択】
上記の各特徴量について、野菜の分類ごとに特徴量を選択して学習・予測を行いました。
| 野菜分類 | 日照時間 | 降水量 | 降雪量 |・・・・
| 茸 類 | × | × | × |・・・
| 根菜直根 | 〇 | × | × |・・・
・・・
3.モデル構築
モデルは野菜分類ごとに学習・予測を行いました。
それぞれのモデルは基本的にはProbSpaceのトピックに投稿させていただいている以下のモデルを基本として、LSTMの部分にSimpleRNN、GRUを利用した3種類のモデルにつき、野菜分類ごとにハイパーパラメーターを調整して作成しています。
LSTM Base line−コメント付き (LB 0.27614 ) by Oregin (https://comp.probspace.com/competitions/vegetable_price/discussions/Oregin-Post9ed99a078ff6b67ea44d)
4.感想
今回のコンペは、野菜の価格を予測するという時系列データを扱った課題でした。
3位という結果を残せて満足しているのですが、悔いが残る点としては、以下の2点です。
1点目は、最初の段階で地域による予測の分類は行わなかったので、該当する野菜の主な産地の天候情報に絞るなどの工夫で、もう少し精度があげられたのではないかという点です。
2点目は、価格について、そのままの値を利用して予測しましたが、対数化を試すことをすっかり忘れてしまっており、対数化することでも精度があげられたのではないかという点です。
他にも細かいところでは色々できたのではないかと考えています。
皆さんの解法を参考にさせていただきながら、今後のコンペに生かしていきたいと思います。
5.謝辞
最後となってしまいましたが、本コンペを運営してくださいました、Probspase の運営の皆様、一緒にコンペに取り組んでいらっしゃった皆様、Twitter上でやりとりを実施させていただいた皆様に心より感謝申し上げます。
今後とも、よろしくお願いいたします。