AI学習者・実務家の「疑問」を解消する

外資系IT企業で、主に火力発電所のAI最適化に従事 →2019年6月: 米国SAS社が主催する ”SaS Analytics Hackathon”で優勝

LSTMをよりわかりやすく&より詳細に!(前処理・世界観の説明編)

モチベーション(この記事は、どんな【疑問】の解消を目指すのか?)

LSTMのモデル作りたいんだけど、
どうやってデータ準備すればいいの?

って混乱してませんか?

 

その混乱の原因って、ずばり、これに尽きると思う。

 

・準備するべきデータの形 / 世界観 を理解してない

 

もうホント、これに尽きる。
逆に言うと、”世界観”さえ掴めば!理解できる。

 

なので、その混乱を解消するぞぉ!!という思いで、この記事書きます。

かなり、気合入れて作ったので、是非参考にしてください:) 

 

この記事は、ディープラーニングの実務で、ご活躍されている、巣籠先生の本を参考にしています。

本編

結論から言うと、理解するべきステップ(世界観)は、大きく3つです

  1. いくつ前(何秒/分/時間)までを、予測に使いたいのか?を決める。
    (何か、コードを書く必要はない。ただ決めるだけで良い。)

  2. 同じ変数同士で、ベクトルをつくる。
    (インプットが2変数なら、下記のようなイメージ。)
    ( [ [x1(t), x1(t+1), x1(t+2)], [x2(t), x2(t+1), x2(t+2)] ] 
    (一般的な、教師あり学習のデータ準備とは、違うから、気を付けて!!)

  3. 出来上がったら、Numpyの3次元配列に変換する
    (Kerasのお作法)

 

でもさぁ、言葉だけで言われても、わからないよね。。。

なので、図解で美しく(しつこく)、説明します!

 

データ準備のイメージ(図解で、右脳で、理解!)

下記、”回帰データ準備” vs ”LSTMのデータ準備"で、対比させて、説明します。

 

使うデータは、こちら。

 

今回使用するデータセット

出典:UCI Machine Learning Repository https://raw.githubusercontent.com/jbrownlee/Datasets/master/pollution.csv

 

"回帰のデータ準備"

回帰のデータ準備

同じ時点の変数を、一つのベクトルにまとめるイメージ

これは、皆さん、馴染みがあるんじゃないかな?

だって、X_input_dataframe.valuesでやっちゃえば済むような処理だし、直感的にわかりやすいですよね。

 

*実は普通の回帰モデルでも、t-1の変数を説明変数とするモデル
(Psudo-time seriesモデル/Naxモデル)を作ることできます。
が、その特集は、次回!

"LSTMのデータ準備"

まずは、時系列モデルの考え方の、おさらいから!

時系列モデルの予測のイメージ

時系列モデル:過去から未来を予測する→時系列情報が重要

いいですか?

ちゃんと理解してますか?

これ理解出来たら、LSTMのデータ準備の仕方も、直感的にイメージできるようになるので、しっかりおさらいを!

 

では、LSTMってどうやってデータ準備するの?

にお答えします。

今回は、「過去3時点前までの情報から予測する」LSTMを例にします。

LSTMのデータ準備、過去3時点前までの情報から予測するver

 
「は? 何言ってんの? よくわかんないぞ(プンプン)」ってなってしまった方、

もう一度、冷静に考えてみて。

回帰の場合は、基本的に、過去の値とか関係ないよね?

 

アイスクリームの売り上げ予測・回帰version だったら、

 

例えば、”2019/09/29(日)における”

X(平均気温、日照時間)を説明変数として、

”2019/09/29(日)における売り上げ” を予測するでしょ?

だから、、、回帰の場合は、、、同じ時点の変数でまとめないといけない!!!

 

でも、LSTMの場合は、時系列モデルだから、こうなるよね?

 

”2019/09/29(日)における売り上げを予測するために、” 

 【[ [平均気温(3日前), 平均気温(2日前), 平均気温(1日前)],

     [日照時間(3日前), 日照時間(2日前), 日照時間(1日前)] ]】を説明変数とする。

 

でしょ?

つまり、時系列情報が重要!であり、それを一緒にまとめてあげることが重要!なんですよね。

  

もし、まだわからない箇所がありましたら、遠慮なく、お申し付けください!

 

世界観がわかったら、下記の記事を見て、pythonで実践してみよう!

akenkenken.hatenablog.com