본문 바로가기

캐글14

[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] 전혀 다른 모델 활용하기(MLP) 이번에는 XGBOOST가 아닌 MLP(Multi Layer Perceptron)을 활용한 학습한 내용에 대해 포스팅하겠습니다. 이번 포스팅은 아래 링크를 참고하였으니 더 자세한 내용이나 코드를 원하시는 분은 아래 참고 바랍니다. https://www.kaggle.com/hachemsfar/keras 많은 대회를 참가하지 않았지만 대회 리뷰들을 읽다보면 의외로 MLP가 좋은 성적을 거두는 경우들이 있습니다. 물론 MLP만 활용하는 것은 아니고 MLP와 다른 모델을 섞어서 다양성을 주는 겁니다. 이때 MLP를 학습시키는 게 매우 어려울때가 많습니다. 적당한 Hyperparameter들을 세팅해주지 않으면 생각처럼 학습이 잘 되지 않습니다. 기존에 세팅해뒀던 Baseline을 기반으로 모델만 변경하여 학습해봤.. 2019. 12. 25.
[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.
[2019 3rd ML month with KaKR] 대회 소개 캐글코리아라는 비영리 커뮤니티에서 진행한 "3차 대회 : 자동차 분류하기"를 소개하고자 합니다. 이 대회는 모든 사람에게 공개된 대회는 아니였고 캐글 코리아 회원에 한하여 특정 링크를 타고 들어가야 데이터 접근이 가능한 대회였습니다. 제목에서 알 수 있듯이 이 대회는 자동차를 분류하는 대회로 기존의 자동차인지 아닌지를 구분하는 대회보다 한단계 업그레이드 된 대회라고 보시면 되겠습니다. 대회바로가기 ㅁ 대회 소개글(from 대회) 우리가 살면서 갖고 싶은게 여러 가지가 있지만, 집 다음으로 보통 자동차 일 것입니다. 우리 주위에서 흔히 볼 수 있고, 편리한 교통 수단 중에 하나입니다. 전 세계적으로 그 수는 무려 10억대가 넘고, 그 종류는 수백, 수천 가지 이상 된다고 합니다. 하지만, 이렇게 많은 차종.. 2019. 12. 18.
[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.