분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
[Public NaN..] 2022-10-12년 validation기준 0.1436
제출일자를 착각하여 제출못한 제 못난 코드입니다..ㅠ
참여하면서 의미있는 변수를 찾는것이 너무 어렵더라구요. 그래서 아예, 변수를 만들지말고, 블럭별 시퀀스의 의미를 추론하는 모델로 학습하면 어떨까?로 시작했습니다.
핵심 컨셉은 다음과 같습니다.
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에서 좋은 결과가 있었습니다.
시간을 많이 투자하지 못하여 코드도 정리가 하나도 안되어있고. 복잡한 부분도 많지만 이러한 접근방법도 있다정도만 소개드리고 싶었습니다!
감사합니다:)
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
직업정보제공사업 신고번호: J1204020250004
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io |
전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved