과적합과 앙상블

Python으로 배우는 금융 분야 Machine Learning

Nathan George

Data Science Professor

과적합

Python으로 배우는 금융 분야 Machine Learning

모델 단순화

단순화된 네트워크

Python으로 배우는 금융 분야 Machine Learning

신경망 옵션

과적합 방지 옵션:

  • 노드 수 줄이기
  • L1/L2 정규화 사용
  • 드롭아웃
  • 오토인코더 구조
  • 조기 종료
  • 데이터에 노이즈 추가
  • 최대 노름 제약
  • 앙상블
Python으로 배우는 금융 분야 Machine Learning

드롭아웃

드롭아웃

Python으로 배우는 금융 분야 Machine Learning

Keras에서의 드롭아웃

from keras.layers import Dense, Dropout

model = Sequential() model.add(Dense(500, input_dim=scaled_train_features.shape[1], activation='relu')) model.add(Dropout(0.5)) model.add(Dense(100, activation='relu')) model.add(Dense(1, activation='linear'))
Python으로 배우는 금융 분야 Machine Learning

테스트 세트 비교

드롭아웃 미적용 시 AMD R$^2$ 값:

  • 훈련: 0.91
  • 테스트: -0.72

드롭아웃 적용 시:

  • 훈련: 0.46
  • 테스트: -0.22
Python으로 배우는 금융 분야 Machine Learning

앙상블

랜덤 포레스트

Python으로 배우는 금융 분야 Machine Learning

앙상블 구현

# make predictions from 2 neural net models
test_pred1 = model_1.predict(scaled_test_features)
test_pred2 = model_2.predict(scaled_test_features)

# horizontally stack predictions and take the average across rows test_preds = np.mean(np.hstack((test_pred1, test_pred2)), axis=1)
Python으로 배우는 금융 분야 Machine Learning

앙상블 비교

테스트 세트 모델 1 R$^2$ 점수:

  • -0.179

모델 2:

  • -0.148

앙상블 (예측 평균):

  • -0.146
Python으로 배우는 금융 분야 Machine Learning

드롭아웃과 앙상블!

Python으로 배우는 금융 분야 Machine Learning

Preparing Video For Download...