Porto Seguro’s Safe Driver Prediction
이 대회는 XGBOOST를 기반으로 Baseline을 구축했다. LGBM 모델과 성능을 비교하면서 접근했는데 어떤 상황이든 LGBM보다 XGBOOST가 더 높은 성능을 보였다. 1등한 사람의 리뷰를 보면 Denoising Autoencoder로 Feature를 뽑고 그것을 가지고 Neural Net을 만들어서 학습시켰다. 시간이 남는다면 Autoencoder를 꼭 적용해봐야하겠다. 지금은 XGBOOST를 기반으로 여러가지 시도해본 결과를 작성한다.
Discussion을 읽다 보면 공통적으로 눈에 들어오는 이야기가 있다. 그것은 각 폴드 마다 Gini Index 산포가 발생한다는 것인데 Public Score에서도 충분히 이런 현상이 있을 것으로 생각하고 Cross validation 점수를 올리는 방향으로 전략을 수립하고 접근하는 사람이 많았다. 나도 이 전략으로 접근했다.
[ 데이터 변환 ]
1. train / test 데이터를 한번에 변환시켜주기 위해 Full_df를 새로 생성시켰다
train['flag'], test['flag'] = 'train','test'
target = train['target']
full_df = pd.concat([train.drop(['target'],axis =1 ),test])
full_df.head()
2. Null Value 처리
- Interval 컬럼은 Mean 값으로 , Ordinal 컬럼은 최빈값으로 처리했다.
- Nominal 컬럼은 최빈값을 넣는게 리스크 있다고 판단하여 -999로 일괄로 넣어줬다.
[ Feature engineering ]
1. 카테고리 빈도수
- 각 카테고리 변수에 들어가 있는 value들을 Count하여 신규 컬럼으로 추가했다. 이렇게 하면 Score에 유리했다.
2. Calc Value 제거
- 이 대회에서 Score 관점의 Magic이 있다면 그것은 Column을 추가하는 것이 아닌 삭제하는 것이다.
'_calc' 컬럼을 삭제하니 점수가 드라마틱하게 오른다. 이를 통해 Feature selection의 중요성에 대해 알게 되었다.
3. Oversampling
- SMOTE 알고리즘을 기반으로 Oversampling을 실시한 결과, 처참한 Score를 기록했다.(하기 Score 표 참고)
가상의 데이터를 만들어서 학습하는 것은 경험상 좋은 결과를 내지 못했다. 다음 Improve 단계에서는 Undersampling으로 도전해보겠다.
# Reference
- https://www.kaggle.com/tilii7/dimensionality-reduction-pca-tsne
- https://hamait.tistory.com/476
- http://blog.heartcount.io/dd
# 캐글 대회 # XGBOOST #Baseline
'Kaggle 대회' 카테고리의 다른 글
[Porto Seguro’s Safe Driver Prediction] Improve (0) | 2020.02.23 |
---|---|
[Porto Seguro’s Safe Driver Prediction] 데이터 탐색하기 (0) | 2020.02.02 |
[Porto Seguro’s Safe Driver Prediction] 대회 소개 / 지니계수 란? (0) | 2020.02.02 |
[APTOS 2019 Blindness Detection] 대회 소개 (0) | 2020.01.14 |
[Santander Product Recommendation] 전혀 다른 모델 활용하기(MLP) (0) | 2019.12.25 |
댓글