PYTHON/딥러닝
[PYTHON] 딥러닝 회귀 모델 (Regression Model)
G허니
2024. 4. 28. 21:37
딥러닝 회귀는 딥러닝(신경망)을 사용하여 연속형 값을 예측하는 회귀 문제를 해결하는 기술입니다. 딥러닝은 입력과 출력 간의 복잡한 비선형 관계를 모델링할 수 있는 강력한 도구로, 다양한 형태의 데이터에 대해 효과적으로 적용될 수 있습니다. 딥러닝 회귀는 예측할 출력 값에 대한 연속적인 값을 예측하는 데 사용됩니다.
알고리즘 동작 방식:
- 인공 신경망 구성: 딥러닝 회귀는 여러 층으로 구성된 인공 신경망을 사용합니다. 이 인공 신경망은 입력층, 은닉층(하나 이상), 출력층으로 구성되며, 각 층은 뉴런(노드)으로 구성됩니다.
- 순전파(Forward Propagation): 입력 데이터가 인공 신경망의 입력층으로 전달되고, 각 층의 가중치와 편향을 고려하여 계산된 출력이 순차적으로 전달됩니다. 이러한 과정을 통해 최종 출력값을 예측합니다.
- 손실 함수 계산: 예측된 출력값과 실제 출력값 간의 차이를 계산하기 위해 손실 함수(loss function)가 사용됩니다. 회귀 문제에서는 주로 평균 제곱 오차(Mean Squared Error, MSE)나 평균 절댓값 오차(Mean Absolute Error, MAE) 등의 손실 함수가 사용됩니다.
- 역전파(Backpropagation): 손실 함수의 값을 최소화하기 위해 역전파 알고리즘이 사용됩니다. 이 과정에서 경사 하강법(Gradient Descent)을 통해 가중치와 편향이 조정되어 손실 함수를 최소화하는 방향으로 학습이 진행됩니다.
- 모델 평가: 학습된 딥러닝 모델은 테스트 데이터에 대해 예측을 수행하고, 평가 지표(예: 평균 제곱 오차 또는 R² 점수)를 사용하여 모델의 성능을 평가합니다.
주요 특징:
- 비선형성: 딥러닝 모델은 비선형 함수를 사용하여 복잡한 데이터 패턴을 학습할 수 있습니다.
- 자동 특징 추출: 딥러닝은 입력 데이터로부터 특징을 자동으로 추출하고 학습할 수 있습니다. 이는 특징 공학의 필요성을 줄여줍니다.
- 대규모 데이터 처리: 대량의 데이터를 효과적으로 처리하고 학습할 수 있으며, GPU와 같은 병렬 처리 장치를 사용하여 계산 속도를 향상시킬 수 있습니다.
적용 분야:
- 금융 분야: 주가 예측, 자산 가격 모델링 등과 같은 금융 데이터 분석에 활용됩니다.
- 의료 분야: 환자 건강 상태 예측, 질병 진단 등에 사용될 수 있습니다.
- 시계열 데이터 분석: 주가, 날씨, 트래픽 등의 시계열 데이터에 대한 예측 및 모델링에 활용됩니다.
모델링
스케일링
# 스케일러 선언
scaler = MinMaxScaler()
# train 셋으로 fitting & 적용
x_train = scaler.fit_transform(x_train)
# validation 셋은 적용만!
x_val = scaler.transform(x_val)
모델링
from keras.models import Sequential
from keras.layers import Dense
from keras.backend import clear_session
from keras.optimizers import Adam
# 분석단위의 shape
nfeatures = x_train.shape[1] # X 변수 갯수
# 메모리 정리
clear_session()
# Sequential 타입
# 리스트 형태로 Hidden Layer추가
model = Sequential([ Dense(1, input_shape = (nfeatures,)) ])
# 모델요약
model.summary()
# 모델 컴파일링
model.compile(loss='mse', optimizer=Adam(learning_rate=0.1))
# 모델 학습
history = model.fit(x_train, y_train, epochs = 20, validation_split=0.2).history
# 모델 예측
pred = model.predict(x_val)
학습결과 출력 그래프
def dl_history_plot(history):
plt.figure(figsize=(10,6))
plt.plot(history['loss'], label='train_err', marker = '.')
plt.plot(history['val_loss'], label='val_err', marker = '.')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend()
plt.grid()
plt.show()
요약:
딥러닝 회귀는 딥러닝을 사용하여 연속형 값을 예측하는 회귀 문제를 해결하는 기술로, 비선형성, 대규모 데이터 처리, 자동 특징 추출 등의 특징을 가지고 있습니다. 다양한 분야에서 활용되며, 높은 예측 정확도와 유연성을 제공합니다.