LG에서 주관한 대회이며 공정을 통해 생산된 센서들의 성능을 예측하는 문제이다.
총 56개의 float형 특성으로 14개의 float형 라벨 값을 예측해야 한다. 난이도도 적절해 보였으며 지원자수가 많아 같은 학과의 친구와 참여하게 되었다.
14개의 라벨 값에 대한 RMSE에 가중치를 이용하여 하나의 수치로 만든 NRMSE를 비용 함수로 평가하였다.
Method
초기에는 EDA, 이상치 제거 데이터 전처리를 중점적으로 진행하며 성능을 끌어올리려 했지만 도메인 지식이 부족하여 시간 투자에 비해 성능 향상이 눈에 띄지 않았다. 또한 팀원 모두 시간이 부족하여 각각 모델을 별도로 학습하여 모든 모델을 앙상블 하는 방식으로 진행하기로 하였다.
전체 코드가 방대하므로 중점이 되는 몇 가지 부분만 나열하여 보겠다.
Validation
하루 제출 가능 횟수가 3회밖에 되지 않았기에 위와 같이 데이터를 쪼개 k-fold를 진행하여 모델을 검증한 뒤 제출하였다.
위 이미지와 같이 KFold를 진행할 시 5개의 데이터셋으로 별도로 생성된 모델의 예측을 평균 내어 사용하게 되므로 Val set에 대한 평가지표와 Test set에 대한 평가지표의 차이가 줄어든다.
Ensemble
Random Forest, XGBoost, SVR, HuberRegressor, ANN을 사용하여 모델을 학습시켜 보았다.
트리형 모델의 성능이 가장 좋았으며, SVR은 예측시간이 길어서 test에 대해 직접 예측한 다음 검증하였다.
예측값에 일정량을 곱하여 가중치를 두어 결과를 확인할 결과 예상과는 다르게 Linear한 모델과 ANN모델을 포함시킬 시 오히려 좋은 결과를 보여주지 못하였다.
따라서 제출 시에는 RF, SVR, XGBoost에 [4: 2: 4]의 비를 두어 제출하였으며 상위 약 30%에 위치하였다.
팀원과 모델을 각각 앙상블 하기 위해 생성한 모델 중 두 개를 선정하여야 했다.
RF와 XGBoost모두 성능이 좋지만 둘 다 트리형 모델이기에 모델의 학습이 유사했기에 RF를 빼고 제출하였다.
실제로 예측값의 분포를 확인하여 볼 시 RF와 XGBoost는 유사한 예측 데이터 분포를 보이지만 SVR의 분포는 이전의 두 개의 모델과 판이하였다.
Result
팀원 역시 대부분 트리 모델을 사용하여 학습하였으며 최종적으로 ExtraTree, CatBoost, XGBoost, SVR을 각각 [2 : 3 : 2: 3]의 비를 적용시켜 제출하였다.
PUBLIC순위는 10% 이내였지만 PRIVATE set적용 시 순위가 대폭 하락하였다.
Insight
기존에는 문자열을 잘라서 카테고리형으로 변환하거나 여러 수치 데이터를 합치는 식으로 진행하고 좋은 결과를 내었다.
적절한 데이터 전처리와 특성 생성은 무조건 모델 학습에 용이하다. 하지만 도메인 지식이 없는 분야에서 확실한 전처리 방법을 알 수 없는 경우에는 모델 튜닝을 먼저 하는 게 성능 향상에는 도움이 될 것이라 생각했다. 이번 대회 역시 모델 튜닝에만 집중하였으면 더 좋은 성적을 냈을 것 같아서 개인적으로 아쉬웠다.
전체 코드 링크: https://github.com/hykhhijk/Dacon/tree/master/LG_Radar
'Kaggle, Dacon' 카테고리의 다른 글
2024 자동차 데이터 분석 경진대회(프롬프트 엔지니어링) (0) | 2024.10.19 |
---|---|
캐글 노트북에서 기존 터미널과 똑같이 split하기 (0) | 2024.08.26 |
[Kaggle] Natural Language Processing with Disaster Tweets (0) | 2022.06.19 |
[Kaggle] Ubiquant Market Prediction (0) | 2022.06.19 |