본문 바로가기
Kaggle 대회

[ASHRAE - Great Energy Predictor III] Leakage 된 데이터 활용하기

by 사자처럼 우아하게 2019. 12. 9.

 

이번에는 Leakage 된 데이터를 활용하여 Score를 올려본 방법과 결과를 공유하도록 하겠습니다.

이 대회는 심각한 Data Leakage가 있었습니다. 현재까지는 Site 5개(0,1,2,4,15) 데이터의 시간대별/meter_type별 

Meter_reading 값이 오픈되어 있습니다. 이는 캐글에서 대회 주관자가 오픈한 것이 아니라 다른 대회 혹은 다른 Site에서

데이터 분석을 위해 올려놓은 데이터를 참가자들이 크롤링하여 정리한 것입니다.  아래에서 이야기하겠지만 Leakage 된

데이터는 LB Score에 0.1정도 영향을 미칩니다.

 

Leak Dataset은 총 5개 입니다. (참조 : https://www.kaggle.com/yamsam/ashrae-leak-data-station)

Leak Dataset을 활용하는 방법이 여러가지가 있을 수 있겠지만 제가 선택한 것은 아래 세가지 입니다.

(깃헙 코드 바로가기)

 

1.  기존 모델의 결과에 Leak data 결과 Replace 하기

    - Leak data를 활용하기 전에 제가 모델링하여 적정수준의  LB Score를 낸 결과 중에서 Leak된 Building_id와

      시간에 해당하는 데이터를 Replace 한 결과, 대부분의 모델에서 0.1 정도의 LB Score 이득이 있는 것으로 

      확인 되었습니다. 

       * LGBM 1.1 -> 1.007 / xgboost 1.125 -> 1.024 / catboost 1.152-> 1.047

 

2. Leak된 데이터를 삭제하고 Training 시키기

   - Leak 된 데이터에 이상치를 포함하고 있어서 학습이 더이상 안되는 것은 아닐까 하는 생각에 Leak 데이터를 

     제외하고 LGBM을 학습시켰습니다. 하지만 결과는 기존 결과보다 0.02 정도 낮게 나온것으로 확인되어서

      이 방법을 제외했습니다. 생각해보면 Tree 모델은 Building_id를 카테고리로 지정해뒀기 때문에 Building_id를

     몇개 지운다고 해서 학습이 드라마틱하게 더 잘되고 그러지 않는 것 같습니다.

 

3. Leak Validation

   - Kaggle에 공개된 커널 중 가장 점수가 높은 커널을 확인해보면 Leak Validation 방법 + Heuristic Search 방법을

     사용한 것을 확인할 수 있습니다.  여기에서 Leak Validation은 Leak된 데이터 셋의 결과를 Target으로 두고

     모델 결과물들(LGBM, XGBOOST, CATBOOST) 혹은 CV folds 를 잘 결합하여 최고의 성능을 낼수 있는 Weight를

     찾아가는 방법으로 진행 됩니다.

     이 방법을 적용하여 CV Folds 간의 가중치를 시뮬레이션 한 결과, 최근 데이터를 학습한 모델의 결과에  7을 

     다른 모델에는 각각 2 또는 1을 주어 가중 평균을 실시한 것이 가장 Best 인 것으로 나타났습니다.

     아무래도 주어진 데이터가 시계열 데이터이다보니 최근 데이터를 반영하는 것이 앞을 예측하는데 도움이 가장

     크게 된것으로 보입니다.

    (참조 : https://www.kaggle.com/wwwjk366/ashrae-leak-validation-bruteforce-heuristic-search)

댓글