多変量の時系列機械学習に取り組んでいます。イメージとしては過去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つでも教えていただけたら幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/11 22:51