[파이썬] Keras 타임시리즈 예측

시계열 데이터 예측은 많은 도메인에서 중요한 역할을 하고 있습니다. 예를 들어, 주식 가격, 날씨 예보, 트래픽 예측과 같은 다양한 분야에서 시계열 데이터를 사용하여 미래 값을 예측하는 것은 매우 유용합니다. Keras는 간편한 사용법과 높은 유연성으로 인해 시계열 데이터 예측에 효과적인 도구로 알려져 있습니다.

이 블로그 포스트에서는 Keras를 사용하여 시계열 데이터를 예측하는 간단한 예제를 살펴보겠습니다.

데이터 준비하기

먼저, 예제를 위해 시계열 데이터를 준비해야 합니다. 일반적으로 시계열 데이터는 한 열로 구성된 CSV 파일로 제공됩니다. 이 예제에서는 “sales.csv”라는 파일에서 매달 판매된 제품의 수를 예측하는 작업을 수행하겠습니다.

import pandas as pd

# CSV 파일 불러오기
data = pd.read_csv('sales.csv')

# 데이터 확인하기
print(data.head())

데이터 전처리하기

다음으로, 데이터를 전처리해야 합니다. Keras 모델은 입력 데이터를 행렬 형태로 받아들이기 때문에, 시계열 데이터를 적절한 형태로 변환해야 합니다. 예를 들어, 입력 데이터와 출력 데이터로 분할하고, 스케일링을 적용해야 합니다.

from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split

# 입력 데이터와 출력 데이터로 분할하기
X = data['month'].values
y = data['sales'].values

# 스케일링하기
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X.reshape(-1, 1))
y_scaled = scaler.transform(y.reshape(-1, 1))

# 학습 데이터와 테스트 데이터로 분할하기
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y_scaled, test_size=0.2, random_state=42)

모델 구성하기

이제 Keras 모델을 구성할 차례입니다. 여기서는 간단한 순차 모델을 사용하겠습니다. 모델에는 LSTM 레이어가 포함되어 있습니다. LSTM은 시계열 데이터의 장기 의존성을 감지할 수 있어 예측 성능을 향상시킬 수 있습니다.

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

# 모델 구성하기
model = Sequential()
model.add(LSTM(128, input_shape=(X_train.shape[1], 1)))
model.add(Dense(1))

# 모델 컴파일하기
model.compile(optimizer='adam', loss='mean_squared_error')

모델 학습하기

마지막으로, 구성한 모델을 학습시켜 예측 모델을 만듭니다. Keras에서는 fit 메서드를 사용하여 모델을 학습할 수 있습니다.

# 모델 학습하기
model.fit(X_train, y_train, epochs=100, batch_size=32)

# 모델 평가하기
loss = model.evaluate(X_test, y_test)
print('Test loss:', loss)

결과 확인하기

학습된 모델을 사용하여 예측을 수행할 수 있습니다. 예를 들어, 다음 달의 판매량을 예측해 볼 수 있습니다.

import numpy as np

# 다음 달의 데이터 예측하기
next_month = np.array([[0.9]])  # 입력 데이터 스케일링 필요
next_month_scaled = scaler.transform(next_month)
prediction = model.predict(next_month_scaled)

# 예측 결과 출력하기
print('Next month sales prediction:', scaler.inverse_transform(prediction))

이 예제는 Keras를 사용하여 시계열 데이터를 예측하는 기본적인 흐름을 설명했습니다. 실제로는 데이터의 특성에 따라 모델 구성과 하이퍼파라미터 조정을 더 신중하게 해야 합니다. 그러나 이 예제를 참고하여 더 복잡한 시계열 예측 모델을 구성할 수 있을 것입니다.

다른 예제 및 자세한 사용법은 Keras 공식 문서를 참조하시기 바랍니다.

Happy coding!