운수종사자 인지적 특성 데이터를 활용한 교통사고 위험 예측 AI 경진대회

알고리즘 | 코드 제출 평가 | 정형 | 회귀 | 데이터 분석 | AUC | Brier Score | ECE

  • moneyIcon 상금 6,000만 원
  • 1,596명 마감
마감

 

[Public NaN..] 2022-10-12년 validation기준 0.1436

2025.11.14 14:45 322 조회 language

제출일자를 착각하여 제출못한 제 못난 코드입니다..ㅠ
참여하면서 의미있는 변수를 찾는것이 너무 어렵더라구요. 그래서 아예, 변수를 만들지말고, 블럭별 시퀀스의 의미를 추론하는 모델로 학습하면 어떨까?로 시작했습니다.

핵심 컨셉은 다음과 같습니다.
1. 모델
1.1. 각 An, Bn 블럭별로 블럭 내 -1,2,3 세부 조건사이의 관계를 임베딩 B, T, D (T = sequence length)
1.2. 블럭별 임베딩에서 trial의 순차적 관계 임베딩 (B, T, D) * N -> (B, D) *N
1.3. N개의 블럭사이의 관계 임베딩(B, N, D) -> (B, D) = h
1.4. 이렇게 추출한 h를 공통 수치형 변수와 함께 Tabular 딥러닝 모델인 TabM의 input으로 추가하여 학습
2. Processing
2.1. A,B를 나눠서 학습하지말고, A, B를 하나의 데이터셋으로 통합하여 한번에 학습하자
2.2. 시간별로 Label의 분포가 다르니, 전체 TestDate 기준으로 5개의 년도 (2018~2023, 2년씩, 1년 overlap)로 나눠서 학습하자.  
2.3. Primary키와 TestDate를 기준으로, 현재 Testdate 시점에서 과거 사고 누적 횟수, 과거 테스트 횟수를 count함(Validation의 경우에는 validation cutoff기간 전까지, 즉 각 데이터셋의 마지막 3개월을 validation으로 잡았을 때, 그 이전까지의 사고 누적횟수와 테스트 횟수만을 사용)
2.4. 2018-2020데이터셋으로 1차 학습, 그리고 학습된 weight를 가지고 1년씩 shift하면서 finetuning 
처음에 단순 feature engineering + XGB 조합으로는 좋은 성적을 못내었으나, 모델 구조를 변경하니 out-of-sample에서 좋은 결과가 있었습니다.
시간을 많이 투자하지 못하여 코드도 정리가 하나도 안되어있고. 복잡한 부분도 많지만 이러한 접근방법도 있다정도만 소개드리고 싶었습니다! 
감사합니다:)

코드