Machine Learning

머신러닝 프로젝트 - 7. 모델 선택, 훈련 그리고 평가

BEOKS 2020. 3. 8. 15:41

들어가며

드디어 마지막입니다! 문제를 정의하고 데이터를 탐색하고 훈련 세트와 테스트 세트로 나누고 데이터를 정제하고 이를 자동으로 진행하기 위해서 추정기, 변환기 그리고 파이프라인에 대해서 알아보았습니다.

그렇다면 이제 머신러닝을 위한 데이터를 준비했으니 실제로 모델을 학습시켜 보도록합시다.

 

선형 회귀(Linear Regression) 모델

지금까지 주택 가격을 예측하는 모델을 위해서 데이터를 준비했으므로 선형 회귀(LinearRegression) 모델을 학습시켜 예측을 진행해봅시다.

https://colab.research.google.com/drive/1wWaPMCEb3ewf3CNKIeu262vQaCG36apw#scrollTo=la3RvTsfXAFv&line=1&uniqifier=1

 

Google Colaboratory

 

colab.research.google.com

놀랍게도 훈련을 위해서는 위 두 줄의 코드면 충분합니다. 추정 기를 수행하는 fit 메서드를 통해서 예측을 위한 모델 파라미터가 전부 준비되었습니다.

모델 평가

이번에는 데이터셋에서 5개의 샘플을 추출하여 파이프라인을 통한 데이터 정제 후 테스트를 진행해보겠습니다.

추정 값과 레이블의 값을 비교해봅시다.

두 값을 비교해보니 차이가 있습니다. 오차가 얼마나 나는지 평가하기 위해서 RMSE를 사용해보겠습니다.

주택 가격이120000에서120000에서 265000 사이에 존재하는데 반해 RMSE의 값이 $68628로 매우 만족스럽지 못한 오차가 발생합니다. 이는 데이터의 과소 적합에 해당하며 이는 충분한 정보를 제공하지 못했거나 모델이 충분히 강력하지 못하다는 것을 의미합니다. 

과소적합 해결

과소 적합을 해결하기 위해서는 크게 3가지 방법이 있습니다.

  1. 더 강력한 모델 선택
  2. 훈련 알고리즘에 더 좋은 데이터 특성 삽입
  3. 모델의 규제 감소

우리는 모델을 규제하지 않았으니 3번은 해당하지 않습니다. 문제를 해결하기 위해 우선 1번 옵션을 선택해봅시다. LinearRegression대신 DecisionTreeRegressor을 사용해서 훈련시켜보겠습니다. 이 모델은 데이터에서 복잡한 비선형 관계를 찾을 수 있습니다.

LinearRegression처럼 똑같이 평가를 해봅시다

놀랍게도 오차가 0이 나왔습니다. 이는 일반화가 잘 되었기보다는 과대 적합이 되었을 가능성이 매우 큽니다. 이를 확실히 하기 위해서 다른 방식으로 평가를 진행해보아야 합니다.

 

마치며

LinearRegression 모델을 선택하고 학습을 시킨 후 RMSE를 사용해서 모델을 평가해보았습니다. RMSE는 과소 적합인 경우는 파악하기 쉽지만 모델이 일반화가 잘 이루어졌는지 과대 적합(overfiting) 되어있는지 판단하기 모호합니다. 다음 글에서는 이를 위해 교차검증을 수행해보도록 하겠습니다.