모델 앙상블
Machine Learning 모델의 예측을 개선하는 한 가지 방법은 앙상블입니다. 가장 기본적인 방법은 여러 모델의 예측값을 단순 평균하는 것입니다. 더 발전된 방법은 각 모델의 예측값을 다른 모델에 입력으로 넣어 최종 예측을 만드는 방식입니다. 두 방법 모두(개별 모델이 충분히 좋다는 전제하에) 일반적으로 전체 성능을 높여 줍니다. 기억하시겠지만, 랜덤 포리스트도 다수의 의사결정나무를 앙상블하는 기법입니다.
이번에는 신경망의 예측을 앙상블해 보겠습니다. 방금 만든 3개의 모델—기본 모델, 커스텀 손실 함수를 사용한 모델, 드롭아웃을 적용한 모델—로 예측을 만든 뒤, numpy의 .hstack() 함수로 예측값을 가로로 결합하고, np.mean(predictions, axis=1)으로 행 단위 평균을 내어 최종 예측을 구하겠습니다.
이 연습은 강의의 일부입니다
Python으로 배우는 금융 분야 Machine Learning
연습 안내
- 우리가 학습한 3개 모델(
model_1,model_2,model_3)에 대해.predict()메서드를 사용해scaled_train_features와scaled_test_features에 대한 예측을 생성하세요. - 예측값들을
np.hstack()으로 가로 방향으로 쌓아 하나의 행렬로 만든 다음, 행 단위 평균을 구해(train/test 각각) 평균 예측을 얻으세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Make predictions from the 3 neural net models
train_pred1 = model_1.predict(____)
test_pred1 = model_1.predict(____)
train_pred2 = ____
test_pred2 = ____
train_pred3 = model_3.predict(scaled_train_features)
test_pred3 = model_3.predict(scaled_test_features)
# Horizontally stack predictions and take the average across rows
train_preds = np.mean(np.hstack((train_pred1, train_pred2, train_pred3)), axis=1)
test_preds = np.mean(____, ____)
print(test_preds[-5:])