データ分析好きが集まる交流プラットフォーム「ProbSpace」で開催された「野菜取引価格の予測」に参加し、3位(金)の成績を残せました!
今回のコンペは、複数項目の時系列データ予測タスクだったのですが、久々に上位争いに食い込める結果を残すことができました。
途中少し間が空いてしまうこともありましたが、最初から最後までじっくりと腰を据えて取り組むことができた良いコンペでした。
では、振り返って参りたいと思います。
1.全体構成
今回のコンペは、NEDO(産業技術総合開発機構)、大学、ベンチャー企業などでもモデルの開発が進められている野菜の価格変動を予測するタスクです。
42品目の野菜について消費地域ごとの340個の価格を、過去約4年分の価格と気温や日照時間等の気象情報から予測します。
野菜についてどのような分類をして予測するか、天候情報をどのように加工して、何を選択するかで知恵を絞りました。
全体構成としては、大きく分けて以下の2つの構成で構築し、それぞれの予測値の平均を最終的な提出としました。
- 野菜を種類(根菜、葉菜類、果実など)に分類し、分類ごとにモデル・特徴量を選択して学習・予測
- 野菜の価格周期をスペクトラム化しクラスタリングして、クラスごとにモデル・特徴量を選択して学習・予測
※クラスタリングのサンプルコードを以下に公開いたしました。
GitHub - Oregin-ML/Classification_of_vegetable_prices_by_spectrum_image
地域に関しても考慮に入れようか悩んだのですが、今回の価格は生産地ではなく消費地の価格とのことでしたので、地域別の予測はあまり影響しないと仮定して、野菜の種類だけに注目することとしました。
2.特徴量加工・選択
特徴量については、価格の時系列データのほかに天候情報(天候観測所348箇所ごとに、2015/1~2019/11の月次の天候データ)について以下の通り加工し、分類した野菜毎に、選択して学習に利用しました。
【特徴量の加工】
分類 | 処理内容 |
---|---|
元データ |
|
累積和 |
|
差分 |
|
閾値以上、以下のフラグ |
【特徴量の選択】
上記の各特徴量について、野菜の分類ごとに特徴量を選択して学習・予測を行いました。
3.モデル構築
モデルは野菜分類ごとに学習・予測を行いました。
それぞれのモデルは基本的にはProbSpaceのトピックに投稿させていただいている以下のモデルを基本として、LSTMの部分にSimpleRNN、GRUを利用した3種類のモデルにつき、野菜分類ごとにハイパーパラメーターを調整して作成しています。
LSTM Base line−コメント付き (LB 0.27614 ) by Oregin ; ProbSpace
野菜分類ごとの予測値を、2つの構成それぞれで集約した予測①と予測➁の平均を最終予測値としました。
このモデルで提出したファイルで、最終スコア:0.09673 となり、全体で3位で、金トロフィー圏内に入ることができました。
4.感想
今回のコンペは、野菜の価格を予測するという時系列データを扱った課題でした。
3位という結果を残せて満足しているのですが、悔いが残る点としては、以下の2点です。
1点目は、最初の段階で地域による予測の分類は行わなかったので、該当する野菜の主な産地の天候情報に絞るなどの工夫で、もう少し精度があげられたのではないかという点です。
2点目は、価格について、そのままの値を利用して予測しましたが、対数化を試すことをすっかり忘れてしまっており、対数化することでも精度があげられたのではないかという点です。
他にも細かいところは色々できたのではないかと考えています。
皆さんの解法を参考にさせていただきながら、今後のコンペに生かしていきたいと思います。
5.謝辞
最後となってしまいましたが、本コンペを運営してくださいました、Probspase の運営の皆様、一緒にコンペに取り組んでいらっしゃった皆様、Twitter上でやりとりを実施させていただいた皆様に心より感謝申し上げます。
今年上期は、コンペで知り合った皆様と実生活でも交流させていただく機会も増えてきました。
これからも色々な皆さんと交流することで、現実世界での社会の発展のために貢献できるよう頑張っていきたいと思います。
今後とも、よろしくお願いいたします。