3. (Kaggle) Riiid Competition Winner's Solution

2024. 1. 4. 14:39NAVER AI Tech/Deep Knowledge Tracing

EDA

- 연속형 변수 : 결측치 개수 파악, 최대/최소 값 파악, 중앙값, 평균 파악, 첨도,왜도 확인, target에 따른 feature 분포 확인

- 범주형 변수 : 결측치 개수 파악, Unique 값 개수 파악, value 별 개수 count, 최빈도 값 파악, value 별 target 분포 확인

 

- 시간 데이터가 주어짐 : feature를 풍부하게 생성해낼 수 있다.

- 해당 대회는 특정 학생이 TOEIC 시험문제를 맞출지를 예측하는 대회로 문제를 푸는데 소요시간이 길다면 틀릴 확률이 높은 인사이트를 활용하여 해당 문제의 평균 시간, 틀린 학생들의 평균 시간 등을 feature로 추가할 수 있다.

- 문항별, 시험지별, 태그별 평균 정답률을 feature로 추가할 수도 있고 등장 빈도를 feature로 추가할 수도 있다.

- 기술 통계량을 사용할 때는 test에 해당 feature가 없기 때문에 data leakage를 조심해서 사용해야 한다.

**모든 feature는 모델에 넣어보고 성능이 올라갔는지를 보고 유의미를 판단해야한다.

 

Solution

- https://www.kaggle.com/c/riiid-test-answer-prediction/discussion/218318

1. 기본 feature만 사용하고, DL 모델에게 Feature Engineering을 맡김.

2. Transformer sequence를 늘림 → 성능은 올라가지만 시간복잡도가 크게 증가함

3. 시간복잡도를 낮추기 위해 마지막 Query만 사용. → O(L**2d) 에서 O(Ld)로 시간복잡도 감소

    - 이때 Q,K,V의 shape이 (L,d)

4. Transformer에 Positional Embedding을 제외하여 순서와 관계없이 입력들 사이의 관계를 파악 후 LSTM 모델을 이용하여 Sequential 특성을 파악