質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

12965閲覧

多変量の時系列機械学習(LSTM,RNN)

mimamoru

総合スコア19

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

2クリップ

投稿2019/08/25 22:50

多変量の時系列機械学習に取り組んでいます。イメージとしては過去3日間の気圧、気温から当日の天気(晴れ 曇り 雨の3クラス)を求めるというものです。
[Kerasで多変量LSTM]のページを参考にkerasのlstm,simple rnnで学習をしています。
モデル定義と学習部分のコードは以下です。

python3

1def create_model(): 2 model = Sequential() 3 # model.add(LSTM(128, 4 model.add(SimpleRNN(128, 5 input_shape=(testX.shape[1], 3), 6 # kernel_initializer=>orthogonal(gain=1.0, seed=25),glorot_normal(seed=25),he_normal(seed=25)など 7 kernel_initializer=he_uniform(seed=25), 8 # recurrent_initializer=orthogonal(gain=1.0, seed=25), 9 return_sequences=True, 10 # kernel_regularizer=regularizers.l2(0.001), 11 recurrent_dropout = 0.4, 12 dropout=0.4 13 )) 14 model.add(SimpleRNN(16, 15 # activation="relu","tanh","linear","LeakyReLU(alpha=0.3)"など 16 activation="relu", 17 # kernel_initializer=>orthogonal(gain=1.0, seed=25),glorot_normal(seed=25),he_normal(seed=25)など 18 kernel_initializer=he_uniform(seed=25), 19 # recurrent_initializer=orthogonal(gain=1.0, seed=25), 20 dropout=0.2, 21 recurrent_dropout=0.2 22 )) 23 model.add(Dense(3, 24 # kernel_initializer=>orthogonal(gain=1.0, seed=25),glorot_normal(seed=25),he_normal(seed=25)など 25 kernel_initializer = glorot_normal(seed=25))) 26 model.add(Activation("softmax")) 27 # optimizer=Adam(lr=0.001),Adagrad(lr=0.005),RMSprop(lr=0.01),SGD(lr=0.005)など 28 model.compile(loss="categorical_crossentropy", optimizer=Adam(lr=0.001),metrics=['acc']) 29 return model 30def train(x_train, y_train) : 31 early_stopping = EarlyStopping(monitor='loss', mode='auto', patience=100) 32 model = create_model() 33 model.fit(x_train, y_train, batch_size=32, epochs=1000, callbacks=[early_stopping] 34 ) 35 return model

そこで大きく3つ質問です。
1つ目
入力データについてx_train を出力するとどのようになっているのが正解なのでしょうか。
trainX,(データ数, 2, 3)
[[[気圧1 気圧2 気圧3]
[ 気温1 気温2 気温3 ]]
[[気圧2 気圧3 気圧4]
[ 気温2 気温3 気温4 ]]
...
[[ 気圧n-2 気圧n-1 気圧n]
[ 気温n-2 気温n-1 気温n ]]]
trainY
[[0. 1. 0.]
[1. 0. 0.]
...
[1. 0. 0.]]
という形で良いのでしょうか。
2つ目
lossが全く下がらないのですが(trainingデータもtestデータも同様に精度が低いです。)、コード上での問題はありますか。optimizer activation iinitializerなどの選択の仕方や使うべき層よく分かりませんでした。またrecurrent_initializerなどのパラメータは使うべきでしょうか。
3つ目
本当は雨か晴れかの2クラス分類にしようかと考えていましたが、不均衡データになってしまうため諦めました。smoteを試みたのですが、気圧と気温のに変量があるせい(だと思います)で失敗しました。このようなデータにも対応できる不均衡解決法があれば知りたいです。

長くなりましたが1つでも教えていただけたら幸いです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1つ目のご質問に関しては、下記の記事がピンポイントです。

もうLSTMで悩まない!- データ前処理(世界観の説明編)

英語版

投稿2019/10/10 02:26

編集2019/10/12 02:42
shin_shin

総合スコア96

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mimamoru

2019/10/11 22:51

ありがとうございます。 なかなか詳しく書いてあるサイトに出会えなかったので助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問