어느덧 새벽 5시 캐글(kaggle) 2주차이다!
지난 게시글에서 타이타닉(titanic) 캐글 커널을 필사했었다
하지만 결과는 그리 좋지 못했었는데 오늘은 그것을 보완하는 작업을 한다
이번 필사 작업의 참조 커널은
https://www.kaggle.com/yassineghouzam/titanic-top-4-with-ensemble-modeling/notebook
에서 참고하였다!
이것을 필사? 참고 후 현재 나의 캐글 상태이다.
캐글 코리아에서 주최한 2019 1st ML month with KaKR 대회 성적은 별로지만
밑에 titanic : machine learning 부분의 대회는 상위 6% 성적을 보였다.
이 글은 주로 seaborn의 factorplot을 자주 이용했다.
factorplot을 사용하면 단순히 라인? 그래프 처럼 나오는지 알았더니 저렇게 kind='bar' 식으로 하면 barchart도 만들어졌다.
꽤나 간단한 방법인 것 같다
그리고 나이 같은 연속적인 데이터는 violinplot을 이용하기도 하지만
이렇게 seaborn의 FacetGrid와 map을 이용해 사용하기도 한다.
저렇게 하면 위 사진처럼 나오게 된다
그리고 추가적으로 seaborn의 kdeplot을 사용하게 되면 더 이쁘게? 표현이 가능하다
seaborn의 kdeplot은 x 값을 주고 color와 shade를 줄 수 있다
그리고 지난 게시글에서 fare의 값 범위가 적은건 0, 큰건 500까지 간 것을 볼 수 있었는데
이 스케일이 폭이 너무 크면 모델이 잘 훈련되지 않는다.
그래서 보통 minmaxscaler와 standardscaler 등을 사용하기도 한다.
이 커널에서는 log 스케일로 변경하였다.
pandas.map(lambda i : np.log(i) if i > 0 else 0) 으로 진행한다
그리고 지난 글에서 사용하지 않는 앙상블 방법을 사용한다
앙상블(ensemble)은 동일한 학습 알고리즘을 사용해서 여러 모델을 학습하는 개념이다.
앙상블(ensemble)은 배깅(bagging)과 부스팅(boosting)으로 나뉘어진다.
배깅은 샘플을 여러 번 뽑아 각 모델을 학습시켜 결과를 집계(aggregating)한다.
부스팅은 앞에서 틀린 것이 있다면 거기에 가중치를 부여해서 틀린 것을 맞추도록 하는 방법
그리고 이 데이터 셋의 정확한 지표를 위해서 gridsearch와 stratifiedkfold를 사용한다
방법은 아래와 같다
decistiontree를 AdaBoostClassifier에 넣어서 진행한다.
adaboost는 트리 기반의 모델입니다. adaptive boosting의 줄임말이죠.
이거는 약한 분류기들을 서로 모으고 상호보완 후 조합해서 강 분류기를 만들어줍니다.
그리고 param_grid 값에 파라미터 값을 넣어줍니다.
이후 gridsearchcv 에다가 AdaBoostClassifier 값과 param_grid값, 그리고 cv 값 등을 넣어줍니다.
이후 best 값을 뽑아냅니다.
랜덤포레스트도 마찬가지입니다.
param_grid에 다양한 매개 변수들의 설정을 넣어주고
마찬가지로 gridsearch에 넣어줍니다.
저는 이와 같은 방식을
ExtraTreesClassifier, SVC, GradientBoostingClassifier 3개를 더 추가해서
VotingClassifier에 넣어주었습니다. 이거는 일종의 스태킹(stacking) 방법으로 저 모델들을 조합해 더 좋은 모델을 만들어내는 방법입니다.
그리고 그 결과는 아까와 같은 81~82% 정도의 정확도가 보여주게 됩니다!
오늘의 캐글 필사는 여기까지입니다.
'kaggle(캐글)' 카테고리의 다른 글
[3주차] 새벽 5시 캐글(kaggle) 필사하기 - porto 데이터 편 - 1 (0) | 2019.01.26 |
---|---|
캐글을 하면서 겪은 이슈들(kernel stopping, timeout error) (0) | 2019.01.24 |
[1주차] 새벽 5시 캐글(kaggle) 필사하기 - 타이타닉(titanic) 편 (8) | 2019.01.12 |
캐글(kaggle) 커널 추가하기(add kernel) (0) | 2018.07.08 |
캐글(kaggle) 커널 삭제하기(delete kernel) (0) | 2018.07.08 |