Kaggle tip

naem1023·2021년 9월 23일
0

Ai competition

목록 보기
16/17

경진대회 플랫폼

  • Kaggle
  • 카카오 아레나: 계열사 전용이라고 한다.
  • 데이콘: public 대회. Kaggle 스타일이 적용되는 중이라고 한다.

Ranking

  • Ranking system: competition 내의 point로 정해지는 순위
    • 팀을 이뤄 출전하면 N\sqrt{N}빵한다.
  • Tier system: competition medal 수에 따라 결정

Competition

Purpose

  • Featured
    • 상업적 대회
    • 우승한 모델을 기업에서 쓰는 경우도 있다.
  • Research
    • 연구 목적 대회
    • 재밌는 주제는 많은데 상금이 낮다고 한다.
  • Getting started & Playground
    • Titanic survivor같이 초심자를 위한 대회
    • 포인트, 메달용 아님
  • Analytics
    • 데이터 분석 목적 대회
    • 데이터 탐색, 시각화 노트북을 제출
  • Recruiment
    • 채용 목적

Submit

  • General competition
    • 리소스 제약 없음
    • submission.csv만 제출
  • Code competition
    • kaggle notebook을 실행시켜 submission.csv 생성해야 한다.
    • 리소스 제한 있음
    • 쓸모 있는 모델을 만들도록 유도

Processing Competition

익히 봐왔던 도식도이다! 다른점은 다음과 같다.

  • Kaggle notebook 사용
  • 다른 사람이 생성한 Kaggle notebook 조회 가능
    • notebook마다 용도가 다르다. e.g., train, inference, preprocessing...

For Winning

빠르고 효율적인 pipeline 반복

  • GPU 장비 투자
    • 한국 캐글 그마분은 Ryzen3700, RAM 64GB, RTX 2080ti 2개를 쓰신다고 한다.
    • 2개 이상의 GPU라면 비블로워(GPU wrapper) 타입을 추천하셨다.
    • 연구자분들은 병렬 GPU가 필수일줄 알았는데 의외로 RTX 3090, 3080 1대도 좋다고 하시더라. 물론 3090 2개가 더 좋다.
    • RTX 3070을 72만원에 사게 해준 CDPR이 있는 폴란드를 향해 오늘도 절을 한다.
  • 본인의 시간 투자
    • 1~2달 동안 평일 하루 평균 4시간 이상, 주말 하루 평균 8시간 이상 투자하신다고 한다.
  • 템플릿처럼 사용할 수 있는 본인만의 baseline
    • 개발 속도 뿐만 아니라 실수도 줄어든다.
    • 링크를 통해 최근 3개월 동안 3개의 금메달을 따셨다고 한다.

Score improvement

  • Competition 내의 Notebook tab, Discussion에서 좋은 아이디어를 찾아보자
    • Augmentation, deep learing architecture
    • 참고할만한 논문
  • 마지막까지 방심하지말 것을 꼭 명심하라고 하셨다.

Validation strategy

Training set과 Test set에서 얻은 score차이를 좁히기 위한 방법론.

최종 순위 하락을 막기 위해 필수적이다. Public LB(Leader board)와 Private LB는 다르기 때문에 Public LB에 overfitting되지 않도록 하자.

  • 최근에는 Test set을 공개하지 않는 추세라고 한다.
  • Train set에서 Validation set 추출
    • K-fold validation
    • Startified k-fold
      • Class별로 validation set를 생성

Ensemble

대부분의 경우 single model보다 더 좋은 성능을 얻을 수 있다. 최근 Kaggle은 아래처럼 정리되는 추세다.
서로 다른 아키텍쳐끼리 ensemble할수록 잘 나온다고 한다. e.g., LSTM, BERT

  • Startified k-fold ensemble
    • validation check만 하지말고 해당 model들을 ensemble
  • 정형 데이터
    • LightGBM, CatBoost, XGBoost, NNs
  • 이미지 데이터
    • Resnet, efficientnet, resnext
  • 텍스트 데이터
    • LSTM, BERT, GPT-2, RoBert

Single model improvement

Ensemble을 처음부터 할 수는 없다. 어느 정도 single model을 개선한 후에 Ensemble을 시도해야하는데 개선의 한도선을 정해야 한다.

  • 상위 랭커들이 discussion에 언급한 single model 점수
  • 대회 종료 1~2주 전에 single model로만 50등 내에

잡다 팁

  • 팀이 좋다. 혼자 하기엔 2달 이상의 여정은 너무 길다.
  • 팀은 해체가 안되기 때문에 신중하자.
  • 동료 후보의 현재 대회 순위를 확인하자. 생각 외로 게으른 사람이 많다고 한다.
  • 폴더별로 v1, v2와 같은 version 관리.
    • Ensemble할 때 폴더 별로 정리한 version끼리 할 가능성을 열어두기 위해서 이렇게 하신다고 하더라.
    • VCS는 최종 업로드 시에만 사용한다고 하신다. ??? Version control을 아예 안하신다고 하셨다.
profile
https://github.com/naem1023

0개의 댓글