본문 바로가기
Kaggle 대회

[Porto Seguro’s Safe Driver Prediction] Baseline 구축

by 사자처럼 우아하게 2020. 2. 11.

 

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

 

댓글