데이터 분석/머신러닝 독학하기

Step2. 머신러닝을 시작하기 전에

Jerry Jun 2020. 9. 14. 18:04
728x90

machine2

머신러닝을 시작하기 전에 알아야 할 것은 특성 공학(feature engineering) 이다.

특성 공학이란 머신러닝 프로젝트에서 훈련에 사용할 좋은 데이터(특성)들을 찾는 것이다. 에러, 이상치, 잡음으로 가득하면 결과가 좋지 않게 나오는 것은 당연하기 때문에 특성 공학에 시간을 쏟는 것은 절대 시간을 버리는 것이 아니다.

 

특성공학에는 두 가지 작업을 포함한다.

  • 특성 선택(feature selection) : 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택
  • 특성 추출(feature extraction) : 특성을 결합하여 더 유용한 특성을 만든다. 

 

모델이 새로운 샘플에 얼마나 잘 일반화될지 아는 유일한 방법은 새로운 샘플을 실제로 적용해보는 것이다. 그렇게 하기 위해 주로 쓰는 방법은 훈련 데이터를 "train set" 과 "test set" 으로 나누는 것이다. 캐글에서도 train 파일과 test 파일을 본 적이 있다. train 파일을 사용해 모델을 훈련시키고 테스트 파일을 주입시켜 모델을 테스트한다.

 

주로 데이터의 80%를 훈련 데이터로, 20%를 테스트 데이터로 사용한다.

 

테스트를 마치고 실제 서비스에 투입하지만 성능이 좋지 않고, 오차가 너무 크다고 나왔다고 가정하자. 그렇다면 원인을 이렇게 생각할 수 있다. 일반화 오차를 테스트 세트에서 여러 번 측정해서 모델과 하이퍼파라미터가 테스트 세트에 최적화된 모델로 바뀌었기 때문일 수 있다. 이에 대한 해결 방법은 검증 세트(validation set)라 부르는 두 번째 홀드아웃(holdout) 세트를 만드는 것이다. 훈련 세트(train set)를 사용해 여러가지 하이퍼파라미터로 여러 모델을 훈련시키고 검증 세트에서 최상의 성능을 내는 모델과 하이퍼파라미터를 선택하는 것이다. 선택한 뒤 일반화 오차의 추정값을 얻기 위해 테스트 세트로 단 한 번의 최종 테스트를 진행한다.

이 과정에서는 교차 검증(cross-validation)을 사용하는 것이 좋다. 훈련 데이터에서 검증 세트(validation set)로 많은 양의 데이터를 빼앗기지 않기 위해서이다. 

300x250