0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kaggle tutorial bonus part 2

Posted at

tutorial は終了していますが、tutorialで紹介されていた他の人のコードを見て、勉強していきましょう。

の確認をしていきます。

tutorialでは、基本的に統計的なもの、time seriesについてはNNをあまり使わないような学習でしたが、ここではバンバンと使っていますので参考になります。

基本となる概念についてはしっかりと解説されていますので、ここでは補足とcodeの説明をします。

EDA:いろいろデータをいじったり視覚化しながらどのようにするかを考えること。

下の関数は、時系列データを教示ありのデータに変換しています。つまり、過去のデータ(入力特徴量)と未来のデータ(目標変数)のペアを作成しています。めちゃくちゃ便利ですね。

def series_to_supervised(data, window=1, lag=1, dropnan=True):
    # いろいろしている。

引数は

data: なんらかの時系列データをPandas DataFrame形式で渡す。
window: 過去のいくつの時点のデータを使って未来を予測するかを指定。例えば、window=3 なら、過去3時点分のデータを使う。
lag: 未来のいつの時点を予測するかを指定。例えば、lag=2 なら、2時点先を予測。

返り値はそれらを適切な形の表に直したDataFrameが返っています。

その後、それらをtestとtraningに分け・・と続いています。
何年か前のコードなので、最近見たニュースである、

が頭をよぎりますね。これは改善点?でしょうか?

このあと、多層パーセプトロンを使う際の注意点を述べています。時系列データにはそれ用のNNがありますがここではシンプルなNNを使用しているので、問題があるわけですね。つまり、MLP はシンプルなモデルであるため、時系列予測に適用できるものの、データの順序情報を無視してしまうという欠点があります。そのため、多くの場合、RNN(特に LSTM や GRU)のような、シーケンス情報を考慮できるモデルの方が良い予測性能を発揮します。

このような点で問題があることを説明した上で、NNをMLP、CNN,LSTMと変えた場合の精度の違いを見せてくれています。

最後にCNNーLSTMを見せてくれています。これはCNNとLSTMの良いとこどりをしたようなモデルだということですね。

農林水産省に資料がありました。日本語の資料が読みたければ

をみるのが良いのでしょう。

まとめてみると、
CNN で局所的な特徴を捉え、LSTM でそれらを統合することで、長い時系列データでも効率的に学習できる。
CNN で時間的な局所パターンを抽出し、LSTM でより広範囲な時間的依存関係を学習するという、階層的な特徴抽出が可能

という点でメリットがあるそうです。デメリットは急激に学習時間が増えることですね。

最後のところで、読者が自身でハイパーパラメータ(特にウィンドウサイズやネットワーク構造)を調整し、より良い結果を追求することを推奨しています。
実際、モデルのサイズ変えてみるとどうなるのだろう。と気になった人がおられたらopotunaとかと連携して探索してみる練習になりそうですね。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?