본문 바로가기

캐글코리아15

[Porto Seguro’s Safe Driver Prediction] Improve 최종적으로 240등(Private 0.29025, Public 0.28669) 모델을 구축했다. 이전 포스팅에서 공개한 Baseline을 기반으로 업그레이드를 시켰으며, 주된 변경점은 1. category Feature encoding 방법 변경 2.Undersampling 이다. [ Category Feature Encoding ] 이전의 머신러닝 대회에서는 카테고리 변수 내에 Label이 너무 많아 모두 dummy화 시킬 경우 Cardinality가 너무 높아져서 문제가 되는 경우가 많았다. 그래서인지 당연하게 Category Feature를 Get_dummy가 아닌 Label Encoding을 했는데 이게 문제가 되었다. 문제를 발견한 건 어떤 방법을 써도 성능이 개선되지 않음을 깨달았을 때부터이다.. 2020. 2. 23.
[Porto Seguro’s Safe Driver Prediction] Baseline 구축 Porto Seguro’s Safe Driver Prediction 이 대회는 XGBOOST를 기반으로 Baseline을 구축했다. LGBM 모델과 성능을 비교하면서 접근했는데 어떤 상황이든 LGBM보다 XGBOOST가 더 높은 성능을 보였다. 1등한 사람의 리뷰를 보면 Denoising Autoencoder로 Feature를 뽑고 그것을 가지고 Neural Net을 만들어서 학습시켰다. 시간이 남는다면 Autoencoder를 꼭 적용해봐야하겠다. 지금은 XGBOOST를 기반으로 여러가지 시도해본 결과를 작성한다. Discussion을 읽다 보면 공통적으로 눈에 들어오는 이야기가 있다. 그것은 각 폴드 마다 Gini Index 산포가 발생한다는 것인데 Public Score에서도 충분히 이런 현상이 있을.. 2020. 2. 11.
[Porto Seguro’s Safe Driver Prediction] 데이터 탐색하기 Porto Seguro’s Safe Driver Prediction 대회에서 제공하는 데이터에는 몇가지 특징이 있다. 1. 컬럼 이름(ind,reg, car, calc)을 가지고 Grouping이 된다 2. 컬럼 이름에 '_bin' 은 Binary Features , '_cat' 은 Categorical Features를 의미한다. 3. 컬럼 이름에 아무것도 안붙어있으면 Continuous or Ordinal Features를 의미한다. 4. '-1' 은 Null 값을 의미한다. 데이터는 총 57개의 X 데이터가 주어진다(ID,Target 제외). 이는 Interval (21개) / Ordinal(16개) / Binary(18개) Variables로 나뉜다. 1. Interval Variables : p.. 2020. 2. 2.
[Santander Product Recommendation] Feature engineering 어렵게, 정말 어렵게 Baseline을 구축했습니다. 쉽게 갈 수 있는 길을 어렵게 돌아온 이유는 생각해보면 문제에 대한 이해를 후순위에 두고 기술적으로만 접근했기 때문인 것 같습니다. 큰 교훈 하나 얻었으니 다음 대회부턴 문제에 대한 이해를 우선시 해야겠습니다. 아무튼 현재까지 구축된 Baseline을 기반으로 모델 성능을 Improve 하는 시도를 해보겠습니다. 1. Baseline : Public Score 0.01088 - lag-1 값(지난달 개인정보 + 보유 상품)을 신규 Feature로 하고 3 Folds(shuffle =True)로 CV 했을때 결과 입니다. - 생각보다 결과가 나빴지만 어렵게 구축한 Baseline인 만큼 만족하고 다음 단계로 넘어갔습니다. 2. Fold 구성 방식 변경 .. 2019. 12. 25.
[Santander Product Recommendation] Baseline 구축하기② 이번 포스팅에서는 앞서 언급한 치명적인 실수가 무엇인지 파헤쳐본 결과에 대한 것입니다. 열심히 Baseline을 구축하고 결과를 제출한 순간 LB Score 0.00698라는 처참한 결과를 얻었습니다. 무엇이 잘 못되었는지 아무리 뒤져봐도 모르겠어서 "머신러닝 탐구생활" 책에 제공된 Script를 한줄 한줄 필사 했습니다. 모델링까지 필사를 다하고 나니까 문제가 무엇인지를 깨달았네요. 제 사고가 문제였습니다. 머리를 개조해야했죠. 문제를 해결하기 위해 여러 방면으로 많은 시도(ex, fold 나눌때 Shuffle =True로 변경)를 했었는데 Valid log loss 1.5를 뚫지 못했었습니다. 1. 보이는 Target값(Y)이 Target값이 아니다. - 문제를 제대로 이해하지 못해서 발생하는 문제였.. 2019. 12. 25.
[Santander Product Recommendation] Baseline 구축하기① 이번 포스팅에서는 Baseline 구축을 위한 삽질을 공유해보고자 합니다. 먼저 이번 포스팅은 최종적인 Baseline을 만들기 전 실패한 경우를 이야기 하고 있음을 알려드립니다. Santander Product Recommendation 대회의 주된 목적은 고객이 신규로 구매할 것 같은 상품을 예측하는 것입니다. 하지만 주어진 데이터는 월별 고객이 보유한 상품 데이터입니다. 이를 인지하는 것이 Baseline을 구축하는데 중요한 포인트입니다. 저는 이것을 나중에 인지하고 기계적으로 Baseline을 구축하여 제출했다가 처참한 LB Score를 받았네요 아래는 월별 고객 보유 상품 데이터로 Baseline을 구축했던 과정입니다. 신규 구매 상품 예측 모델은 다음 포스팅에서 이야기하도록 하겠습니다. ㅁ B.. 2019. 12. 25.
[Santander Product Recommendation] 데이터 탐색하기 ② : Y Santander Product Recommendation 대회의 Target 값의 분포를 확인해보겠습니다.(타겟변수 총 24개) Training 데이터를 기반으로 각각의 분포를 확인해보면, - ind_cco_fin_ult1 상품의 구매가 가장 많았고 - ind_ahor_fin_ult1, ind_aval_fin_ult1 상품의 구매가 가장 적었습니다. 추후 모델링을 할 때는 구매가 거의 없었던 ind_ahor_fin_ult1, ind_aval_fin_ult1 Target 값은 제외하고 하겠습니다. # Target value 분포 확인하기 cols = ['ind_ahor_fin_ult1', 'ind_aval_fin_ult1', 'ind_cco_fin_ult1', 'ind_cder_fin_ult1', 'in.. 2019. 12. 22.
[Santander Product Recommendation] 데이터 탐색하기 ① : X Santander Product Recommendation 대회의 경우 총 24개의 X 인자와 24개이 Y 인자로 구성되어 있습니다. 이번 포스팅에서는 X/Y 인자를 나누어서 데이터 특징을 퀵하게 파악해보도록 하겠습니다. 일부 데이터는 다소 지저분하게 기록되어 있습니다(1.0 or 1). 이를 Cleaning 하는 작업은 Baseline 구축 편에서 이야기 하도록 하겠습니다. ㅁ 데이터 탐색하기(X) 1. fecha_dato : 월별 날짜 데이터로 2015년 1월~6월까지 데이터가 적고 점차 늘어남. 2. Ind_empleado(고용여부) - A : active / B ex employed(전직) / F filial / N not employee / P pasive - N(Not employee) : 9.. 2019. 12. 19.
[2019 3rd ML month with KaKR] 대회 참가 후기(삽질의 기록) 이번 포스팅은 몇달전에 참가했던 캐글코리아에서 주최한 자동차 분류대회 후기입니다. 당시에 2주정도 퇴근 후 시간을 할애하여 참가했었는데 그때 했던 삽질(?)들을 기록해두었다가 정리하여 공유합니다. 깃헙 바로가기 ㅁ Model Summary - Resnext101 8 Folds로 최종 제출했고 대회 종료 이틀전에 큰 오류가 있음을 깨닫고 급하게 수정하고 학습시키다보니 다른 모델을 제대로 앙상블 시킬 시간은 없었습니다. ① 전처리 : Cropping , Histogram Equalization ② Augmentation : cutout , rotation 30, horizonal=True, zoom:0.3, rescale :1/255 ③ Loss Function : categorical_crossentrop.. 2019. 12. 19.
[ASHRAE - Great Energy Predictor III] Best Weight 찾기 이번 포스팅에서는 Cross Validation 결과 Merge 할때 Weight를 어떻게 하면 좋을지 고민한 내용입니다. [Cross Validation, 최적의 Weight 찾기 : 1.1 -> 1.09 ] - 주어진 데이터를 Building_id 별로 Meter_reading 값을 산출하여 보면 최근 실적기준으로 추이가 변한 Building을 찾을 수 있었습니다. 빌딩의 옵션이 변했거나 주변 환경이 변한 이유일 것이라고 추정이 되는데, 이를 모델에 반영 하면 더 성능이 좋아질 것이라는 기대에 CV 결과를 단순 평균이 아닌 가중 평균을 진행했습니다. 데이터를 3 Folds로 분류하고 학습한 뒤 Inference 단계에서 모두 같은 비율로 평균을 내어 제출 했을 때 LB 1.1을 얻었고 최적의 비율을 .. 2019. 12. 15.
[ASHRAE - Great Energy Predictor III] Model 확장 이번에는 Lightgbm이 아닌 다른 모델을 활용하여 다양성을 부여해보도록 하겠습니다. 지금은 Lightgbm이 tree 계열에서 가장 좋은 성능을 보이는 모델이지만 이전에는 Xgboost 만한 모델이 없었습니다. 최근에는 Xgboost가 Lightgbm에 비해 성능이 조금 떨어지고 CPU 학습시 속도도 오래걸리는 경향이 있지만 GPU를 활용한 학습이 가능하다는 점에서 아직까지 많은 사람들이 찾고 있습니다. Lightgbm도 GPU 를 활용한 적합이 가능은 하지만 Kaggle에 올라오는 경험담에 의하면 안정적인 결과를 내지 못하는 것 같다고 합니다. 그래서 저는 Lightgbm으로 학습 할 때 CPU만 활용하고 있고 Xgboost는 GPU 학습시킬 때 활용하고 있습니다. Xgboost 결과를 아래에서 같.. 2019. 12. 8.
[ASHRAE - Great Energy Predictor III] Model 성능 향상시키기 이번에는 제가 Model 성능을 향상 시키기 위해 사용한 방법들을 살펴보겠습니다.(Base : LGBM) 이전 포스팅에서 리뷰했던 Baseline 모델의 성능은 LB = 1.3 입니다. (Github 코드 : 바로가기) 1. Feature Engineering : 1.3 → 1.13 - 앞선 Baseline에서 활용한 Feature 외에 몇 가지 Feature를 더 만들어서 반영했습니다. 아래 과정을 통해 LB Score를 0.17 향상시켰습니다. 첫번째는 isholiday 입니다. 건물의 전력소모량을 예측하는 문제이니 당연히 고려되어야 할 요소가 바로 휴일입니 다. 휴일에는 Education 이나 Office로 활용하는 건물은 휴일에는 전력 소모량이 줄어들 것이기 때문입니다. 비슷하게 생각하여 주말도 .. 2019. 12. 8.