0Pricing
Learn AI with Python · レッスン

時系列予測のためのLSTM

系列の準備、ステートレスLSTMとステートフルLSTM、ルックバックウィンドウ、マルチステップ予測について学習します。

「時系列予測のためのLSTM」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

時系列にLSTMを使う理由

LSTM(長短期記憶)は、ゲート付きのメモリセルを使って長い系列にわたるパターンを記憶する再帰型ニューラルネットワークです。十分なデータがあれば、ARIMAでは捉えられない非線形な依存関係もモデル化できるため、複雑な系列に適しています。

系列のウィンドウ化

LSTMはウィンドウから学習します。ウィンドウとは、次の値を予測するために使う、過去のステップの固定長の切り出しです。ウィンドウサイズが10の場合、モデルはステップ1~10を見てステップ11を予測し、次に2~11を見て12を予測する、という処理を繰り返します。

コードでウィンドウを作成する

ヘルパー関数を使うと、1次元の系列を入力とターゲットのペアに変換できます。

import numpy as np

def make_windows(series, window):
    X, y = [], []
    for i in range(len(series) - window):
        X.append(series[i:i+window])
        y.append(series[i+window])
    return np.array(X), np.array(y)

X, y = make_windows(values, window=10)

データのスケーリング

ニューラルネットワークは、スケーリングされた入力を使うと学習しやすくなります。MinMaxScalerを使って値を[0, 1]に写像し、後で予測値を逆変換することを忘れないでください。

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaled = scaler.fit_transform(values.reshape(-1, 1))

LSTM用の形状変更

KerasのLSTMレイヤーでは、入力が(samples, timesteps, features)の形状になっている必要があります。単変量系列では、featuresは1です。

# X is (samples, timesteps); add a feature axis
X = X.reshape((X.shape[0], X.shape[1], 1))
print(X.shape)  # (samples, timesteps, 1)

モデルの構築

単純な構成は、次の値を予測するDense(1)出力レイヤーに、1つのLSTM(50)レイヤーを接続するものです。

from tensorflow.keras import Sequential
from tensorflow.keras.layers import LSTM, Dense

model = Sequential([
    LSTM(50, input_shape=(X.shape[1], 1)),
    Dense(1)
])

Dense(1)を使う理由

1ステップ先の予測は、数値を1つ出力する回帰問題なので、最後のレイヤーには活性化関数なしのDense(1)を使います。複数ステップを予測する場合は、Dense(n_steps)を使います。

コンパイル

adamオプティマイザーとmse(平均二乗誤差)損失を使います。これは、連続値のターゲットに対する回帰で標準的に使われる選択です。

model.compile(optimizer="adam", loss="mse")

学習

ウィンドウ化したデータでモデルを学習させます。検証データの分割によって、エポックごとの汎化性能を監視できます。

history = model.fit(
    X, y,
    epochs=50,
    batch_size=32,
    validation_split=0.2
)

予測

新しいウィンドウに対して予測し、その後で逆変換して元のスケールに戻します。

pred_scaled = model.predict(X_test)
pred = scaler.inverse_transform(pred_scaled)

積層とチューニング

より難しい系列には、LSTMを積層し(最後以外のすべてでreturn_sequences=Trueを設定します)、ドロップアウトを追加します。レイヤーを増やすとより深いパターンを捉えられますが、より多くのデータが必要になり、過学習のリスクも高まります。

model = Sequential([
    LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)),
    LSTM(50),
    Dense(1)
])

確認テスト

LSTMによる予測の知識を確認しましょう。

まとめ

ウィンドウを準備し、MinMaxScalerでスケーリングし、(samples, timesteps, features)に形状を変更して、LSTM(50) + Dense(1)を構築しました。さらにadam/mseでコンパイルして学習し、予測値を逆変換して元のスケールに戻しました。これで時系列コースは終了です。次のコースはRecommendation Systemsです。

よくある質問

「時系列予測のためのLSTM」レッスンは無料ですか?

はい。「時系列予測のためのLSTM」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「時系列予測のためのLSTM」で何を学びますか?

系列の準備、ステートレスLSTMとステートフルLSTM、ルックバックウィンドウ、マルチステップ予測について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「時系列予測のためのLSTM」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 時系列の構成要素と定常性
  2. ARIMAとSARIMAモデル
  3. 自動予測のためのProphet
  4. 時系列予測のためのLSTM
← Learn AI with Pythonに戻る