머신러닝 대회 팁

조정훈·2024년 3월 27일

일반적인 머신러닝 대회 진행 순서

1. 데이터 확인

  • 변수분포 확인
  • 수치형 데이터 이상치 및 결측치 확인
  • 일반적인 데이터 전처리
    (분포 조정 및 값 범위 조절)

2. 도메인 특성 확인

  • 데이터 특성 확인
    1. 변수 표현
    ex)원자간 결합 거리를 그래프에 적용하기 등
    1. 전처리 기법 확인
      ex) Smiles code -> Graph Matrix
  • 머신러닝 기법 및 모델 확인
    1. 관련 모델의 논문 및 github 코드 확인
    ex)GCN
    1. 모델 튜닝 방안 모색
    2. 후처리 기법 확인

3. 찾은 내용을 기반으로 데이터에 적용

  • 검증 및 앙상블
  • 다시 1번부터 반복


저지르기 쉬운 실수들


1. 데이터를 자세히 들여다보지 않음

-> 데이터를 대충 보거나 EDA를 대충함.

kaggle에서 다른 사람들 노트북을 참고하거나 토론창에서 물어보거나 하면 좋다.

2. 모델 학습 시, 검증 데이터의 정보 노출(Data Leakage)

Data Leakage -> Test data를 활용하면 안되는데 사용함 : 정보 노출

데이터 스플릿 하기 전에 스케일링을 해버리고 스플릿을 하면 데이터 정보가 넘어가버림

3. 인간 편향

전 대회에서는 ~모델 썼을 때 별로였으니까 이번에도 안될거야..
-> 상황마다 다르기 때문에 열린 생각 필요

4. 성능이 좋기로 유명한 모델 맹신

데이터셋에 따라 다르기 때문에 성능이 좋다고 알려진 모델이 내 데이터셋에서도 좋다는 보장이없다.

5. 앙상블의 부재

대회에서는 앙상블을 하기 쉽기 때문에 안하면 손해.
할 수 있는 상황인데 안 할 이유가 없다.

6. 적절한 학습을 위한 손실 함수

손실함수, 평가지표 등 중요하다
정형데이터 같은 경우는 손실함수가 정해져 있는 경우가 많지만
XGBoost, LightGBM, Catboost 같은 경우 objective function 을 넣을 수 있다.
log loss, AUC, F1 score 등등 원하는 지표에 맞게 손실함수 넣으면 된다.

7. 모델 검증을 충분히 하지 않음

보통 public data 50% , private data 50% 가 존재하고 우리는 대회에서 public data만을 가지고 모델을 돌리는데 보통 대회가 끝나면 private data로 돌린 점수를 가지고 등수를 매긴다. 그런데 public data에 overfitting 되는 경우가 있다.
그래서 모델 검증을 잘 해야된다
-> 쉽게는 k-fold cross-validation 사용해서 해결 할 수 있다. 딥러닝에서는 gpu 사용량 때문에 너무 오래걸림. 이럴 경우는 validation data를 공들여서 잘 만들어야 한다. (seed를 바꿔가면서)

8. 팀원과의 소통 및 정보 공유

내가 이해한걸 팀원이 이해 못 할수도 있고, 반대로 팀원은 이해한 부분을 내가 이해를 못 해서 시간이 오래 걸릴 수 있다.

-> 모델 성능 기록툴을 이용해서 팀원에게 말하지 않아도 서로 성능이 어떻게 나왔는지 공유가 가능해짐

9. 실험 정신의 부재

"어떤 모델이 제일 좋음?"
-> 알 수가 없다. 도메인, 데이터 셋에 따라 다 다르기 때문에 실험해봐야 안다.

0개의 댓글