LoginSignup
64
73

More than 3 years have passed since last update.

時系列データで売上予測しようとしたときに参考になった記事

Posted at

こんにちは、最近初めてグリコの売上予測ハッカソンで時系列データを扱ったのですがこれがむずかった。。。
最終的にコンペでは中の中の上ぐらいまではあげられたので、忘れないうちに助けていただいた記事たちをここにまとめておきたいと思います。

参考にさせていただいた記事の内容はざっくりまとめると以下のようになります。

  • LightGBM
  • LSTM
  • RandomForest
  • 遺伝的プログラミング
  • 特徴量の作り方、データの見方
  • statsmodelsの季節成分分解
  • changefinderを利用した異常検知

記事まとめ一覧

- SIGNATE お弁当の売り上げをLightGBMで予測してみた

https://qiita.com/chusan/items/d7b210243f3b646375ba

季節性のある時系列データをうまくLightGBMで分析できています。
トレンドを外して考えることで精度がよくなる一例で、RandomForestを使った特徴量選択の方法も記載してくださっており本当に助かりました。
このコードのおかげで中の中にたどりつくことができました。

- Pythonで時系列分析の練習(6)トレンド、季節性、残差に分解

https://momonoki2017.blogspot.com/2018/03/python6.html

Statsmodelsを使ってデータをトレンド、季節性、残差に分ける方法が記載されています。これと上記のLightGBMを組み合わせることでまあまあな成績がでました。

- Kerasで多変量LSTM

https://qiita.com/tizuo/items/b9af70e8cdc7fb69397f

kerasでやってみようとしたのですがあまり精度はよくなかったです。
予測したい年にいろいろハプニングが発生し、例年のようには売れなかったためkeras の lstmのような過去のデータのみ参照する手法はよくなかったと考えられます。
ですがLSTMを用いる際のデータ処理の方法について学べたのは面白かったです。

- LSTMで仮想通貨の価格予測をする

https://qiita.com/licht110/items/f89c699cbdff05ec90de

こちらもkeras の LSTMです。LSTMをつかうにあたってCross Validationできるほどデータ数が多くなかったことも問題でした。(36ヶ月分しかありませんでした)

- 遺伝的プログラミングによる特徴量生成でLightGBMの精度向上【kaggle Advent Calendar 11日目】

https://upura.hatenablog.com/entry/2018/12/11/000000

最終日に精度があがらず困っていたので、Upuraさんの記事を参考にして自分で手動で特徴量を大量に作ってみたところ、見事あがりました!しかしそれでも混戦から抜け出せなかったのでこれは最後の最後に取っておくべき手法なのだと感じました。
また説明力がないので自分的にはちょっと気持ち悪いとも感じてしまいました。

- Pythonによる時系列分析の基礎

https://logics-of-blue.com/python-time-series-analysis/

こちらのLogics of blueさんによる記事も大変参考になりましたが、やはりLSTMと同じく、イレギュラーなハプニングに対応できず没となりました。

- 【随時更新】Kaggleテーブルデータコンペできっと役立つTipsまとめ

https://naotaka1128.hatenadiary.jp/entry/kaggle-compe-tips

最終日に見つけた記事です。精度があがらず困っている中でこの記事を読み始めたのですが、もっとはやく気づけばよかったと思いました。。。

- 状態空間モデル

https://logics-of-blue.com/%E7%8A%B6%E6%85%8B%E7%A9%BA%E9%96%93%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A8%E3%81%AF/

Logics of blueさんによる状態空間モデルの解説です。もし仮に現在までのデータしか存在しないなかでこれからの予測をしなければいけないのなら、状態空間モデルが一番強いのかもしれません。

- 異常検知

https://www.procrasist.com/entry/22-changefinder

python の changefinderを使って異常検知ができるときいて使ってみたのですが、パラメーター調整に主観が絡んでくるため没となりました。これが成功すれば売上が本来はうまくいくはずの月でも異常検知によって失敗することが予測できたかもしれない?

でも結局はデータをしっかりみることが大事

よく言われていますが、EDA大事です。優勝者はちゃんとデータをみて、目的変数と相関が高い特徴量をひとつ見つけ、それで単回帰をまわすだけで群を抜いてトップに躍り出ていました。なのでまずはデータをみた上でそれに応じた手法を考えるべきなのだと痛感させられたコンペでした。

64
73
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
73