3. 데이터 전처리
• 특정 타겟 값이 0인 데이터가 훈련 데이터에서 발견되었지만 여기서 떠오르는 좋은 생각은 없었습니다. 그래서 별도 작업은 하
지 않았습니다.
• dst 데이터에서 비어있는 값은 제공되는 일반적인 보간 함수를 이용해 채워 주었습니다. 그 뒤 다시 ‘ffill’, ‘bfill’ 방식으로 빈 값
들을 다시 채워 주었습니다.
• dst 데이터 값의 범위가 rho에 따라 달라지는 모습이 보여 이를 보정해 주었습니다. 다른 참가자의 경우 log 변환 후 rho 값으로
나누는 코드가 여럿 보이는데 저의 경우 이러한 방법을 알지 못하였고, 단순하게 임의의 10의 승수를 곱해주는 방식으로 처리
하였습니다. (데이터의 크기가 충분히 컸다면 rho 별로 데이터를 구분한 뒤 작업을 진행했을 것 입니다.)
• 결과적으로 dst 관련 데이터를 조정해주는 것 외에 특별한 작업을 하지 않았습니다.
4. 탐색적 데이터 분석
• 각 예측 항목에서 25%이하, 75% 이상에 속하는 데이터를 그려보고 차이점을 눈으로 확인하는 행위를 여러 번 해보았습니다.
• src 항목의 경우 일정 부분 패턴이 발견되었기에 이를 살려보고자 하였는데 결과적으로 잘 되지 않았습니다.
• dst 항목의 경우 13번째에서 17번째 항목, 30번째에서 34번째 항목에서 위로 치솟는 형태의 그래프가 여럿 목격되었습니다. 이
부분에 대한 코드가 포함되어 있습니다.
• dst 데이터를 화면에 그려보면 결국엔 그래프의 모양이 중요하다는 것이 드러납니다. src의 모양이나 dst의 모양을 패턴화(뾰족
솟는 구간을 세어보는 등의 작업.) 시켜보려 하다가 잘 되지 않았고, 인접한 두 변수 간의 변화에 대한 피쳐를 여러 가지 방법으
로 추가해보기로 결정하였습니다. (또는 같은 파장의 src와 dst 간 비교)
6. 모델 구축
• lightgbm을 사용해 모델을 만들었습니다. 부스팅 타입은 gbdt를 사용했고, 나머지 설정 값은 인터넷 자료를 참고해 임의로 지
정해 주었습니다. 폴드 횟수는 10으로 하였습니다.
• 학습 파라미터 튜닝에 대해 최적 값과 피쳐 목록을 찾아주는 자동화 방법이 있다는 것을 들어보긴 했지만 사용하진 않았습니다.
• 내부적으로 테스트 해보았을 때 hhb의 예측 값이 있으면 hbo2를 예측하는데 많은 도움이 됩니다. 따라서 hhb를 우선 예측한
뒤 이를 어림 값으로 전환해(예측의 오차를 감안한 어림 값 변환) hbo2를 예측하는 피쳐로 활용하는 방안을 적용해보았는데 아
쉽게도 LB에서 개선 효과는 거둘 수 없었고, 최종 모델에 반영하지 못하였습니다.
• 코드를 보면 아시겠지만 모델 구축과 관련한 특이점은 없습니다.
7. 검증
• 내부적으로 계산한 값과 리더 보드에서 계산된 값 간 차이가 적었기 때문에 과-학습에 대한 부담은 적은 편이었습니다.
• 중간 단계 이후론 내부적으로 계산된 값과 예측된 값에 대한 25%, 50%, 75% 값, 그리고 표준 편차 정도를 훈련 데이터 셋과 비
교하는 단순 검증 작업만 진행하였습니다. (각 타겟의 describe() 비교)
<train vs test>
8. 결과 및 결언
• 도메인에 대한 충분한 검토가 되어있지 않은 상태에서 접근한 것이 개인적으로 아쉽고, 타겟 값 간 상관 관계를 잘 풀어내지 못
한 부분도 아쉬운 부분이었습니다.
• 논리적으로 빈약한 모델임을 잘 알고 있기 때문에 특별히 드릴 말씀은 없고, 운이 좋았다고 생각하고 있습니다.