- 데이터 분석 및 전처리
- preprocessing
- missing value imputation
- autocorrelation
- train, eval, test set 분리
- cross validation으로 학습 평가
- random split시 데이터가 과적합하게 된다면, 직접 분할하여 평가하기
- test set: 학습데이터와 비슷하지 않은 데이터(최근 데이터나, 별도 카테고리 데이터)로 검증
- oot(out-of-time): 최근 데이터 사용(학습시는 성능이 좋았으나, 실제 배포 후에 성능이 낮아지는 경우 등을 위한 metric)
- parameter 선정
- 풀고자 하는 문제에 적합한 파리미터를 선정한다.
- 예측하려는 데이터가 학습한 데이터와 전혀 다를 수 있는 경우, 보수적으로 과적합을 줄이는게 좋다.
- grid search로 큰 범주의 parameter 찾기.
- 각각의 parameter들을 하강 경사법과 비슷한 방식으로 미세 조정
- 검증
- 과적합 체크
- train, eval metric의 round별 분포를 보고, train 점수는 올라가는데, eval점수는 안 올라간다면, 과적합 의심.
- feature importance확인,
- importance가 거의 없는 피쳐들을 제거한다(학습에 오히려 방해됨)
- 중요 피쳐들이 레이블과 상관관계가 있는지 이해해보기
- 의미 없어 보이는 게 높은 importance를 가진다면, 과적합된건 아닌지 의심하고, 의미없는 피쳐를 전처리로 제거
- probability의 분포를 확인한다.(이진 분류 문제인데, 0.5근처에 모여있으면, 분류를 제대로 수행 못하고, 0, 1 쪽으로 몰릴 수록 좋은 분포임)
- test set 체크
- confusion metrix로 어떤 케이스에 많이 틀리는지 확인
- 잘못 예측한 케이스들 하나 하나 원인 분석 후 전처리 개선
- 도움이 될만한 피쳐를 추가 개발도 고려
- probability threshold 정하기. 어떤 메트릭이 중요하냐에 따라, 정한다.
- 트랜젝션 여부는 리콜이 중요함
- 과적합 체크
- 수동으로 설정한 파라미터드들을, 각 가능한 모든 조합으로 학습시키는 방법
- cross validation과 보통 같이 사용하여, 더 좋은 성능의 파라미터를 찾는 방법
- 데이터 자체가 과적합이 의심될 경우, 데이터를 과적합을 피할 수 있게 분리가 가능하다면, 수동분리하여, 파라미터를 찾는게 더 좋을듯..
확률 분포에 따라, 각 파라미터들을 임의로 설정하여 학습시키는 방법
build a probability model of the objective function and use it to select the most promising hyperparameters to evaluate in the true objective function https://data-scientist-brian-kim.tistory.com/m/88