관리 메뉴

꿈 많은 사람의 이야기

[2주차] 새벽 5시 캐글(kaggle) 필사하기 - 타이타닉 편_2 본문

kaggle(캐글)

[2주차] 새벽 5시 캐글(kaggle) 필사하기 - 타이타닉 편_2

이수진의 블로그 이수진의 블로그 2019. 1. 16. 09:46


어느덧 새벽 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% 정도의 정확도가 보여주게 됩니다!


오늘의 캐글 필사는 여기까지입니다.


0 Comments
댓글쓰기 폼