반응형


2018 한국 PyCon Tutorial 후기


뒤 늦게 한국 Pycon이 시작된다는 것을 알아서 등록 기간을 놓쳐 본 이벤트라고 할 수 있는 Conference는 놓쳤지만 아쉬운 마음에 Tutorial이라도 들어보기로 했다. Kaggle 관련한 Tutorial 이었는데, 최근 많이 사용되어지는 데이터 분석 (EDA, Feature enginerring, 모델링) 관련한 팁을 얻고자 하는 마음이었다. 장소는 삼성역 코엑스 센터였다. "Dive into diversity" 라는 문구가 행사의 슬로건인듯 했다.   



장소 : 삼성역 코엑스 2F 그랜드볼룸




튜토리얼 후기 


데이터 분석 관련하여 최근 많이 활용되는 방법들에 대한 유용한 정보들을 많이 얻었다. 특히, Feature Engineering 부분에서는 Label encoding, one hot encoding이나 모델에서 importance를 계산해서 차원을 축소하는 등의 기본적인 것을 제외하면 아는 것이 많이 없었는데, 최근 Kaggle에서 많이 쓰이는 방법들을 알 수 있어 좋았다. 예를 들어, frequency encoding, mean encoding 등이었다. 원래 값을 통해 새로운 feature를 생성하는 것이 성능을 높일 수 있다는 것이 신기했다. 


Feature Engineering은 크게, Tree 기반 모델이냐, Tree 기반 모델이 아니냐에 따라 그 방법이 달라진다. 특히 Tree 기반의 모델의 경우 categorial feature를 encoding 할 때, frequency encoding, label encoding 등을 사용한다. 하지만 label encoding 같은 경우, 타겟값과 전혀 상관 없는 값이 코딩되는 것이기 때문에 성능이 안 좋을 수 있다. 반면, frequency encoding 은 타겟값과 관련있는 값이 인코딩 되기 때문에 더 좋다고 할 수 있다. 반면 neural network의 경우, one hot encoding을 주로 하게 된다. 다만 one hot encoding은 차원이 커지는 문제가 존재한다. 특히 categorical feature를 제거하냐 안하냐를 선택할 때는 주로 feature에 따른 타겟값의 분포를 보고 선택한다. 카테고리에 따른 타겟값의 분포에 차이가 없다면 그 feature는 없어도 무방할 것이다. 특히 mean encoding의 경우 feature와 타겟값이 관련을 갖게 만들면서, 차원도 높이지 않는다는 두마리 토끼를 잡을 수 있는 방법이었다. 그래서 최근 많이 사용되는 categorical 변수의 feature encoding 방법이라고 한다.


또한 Kaggle에서는 Cross-validation이 매우 중요하다는 것을 깨달았다. cross-validation 이 잘못된다면, 모델의 성능을 잘못평가하는 것이 되어버리기 때문에 좋은 성적을 얻기 힘들다. 핵심은 validation set과 test set에서 변수들의 값의 분포를 동일하게 해야한다는 것이다. 그렇지 않다면 validation set에서 성능이 높더라도 test set에서의 성능을 보장하기 어렵다. 


머신러닝 관련한 부분에서는 역시 lightgbm, catboost, xgboost 등의 gradient boosting tree 계열의 알고리즘이 많이 사용된다고 하며, 좋은 성적을 낸 사람들은 대부분 stacking을 활용한다. stacking 같은 ensemble 알고리즘이 좋은 이유는 성능이 0.7짜리인 3개의 모델을 결합함으로써 0.8 이상의 성능을 갖는 모델을 만들 수 있다는 것이다. stacking을 어떻게 하느냐에 따라 leader board에서의 등수가 좌우되는 것 같았다.  


아래 코세라 강의에 Kaggle 관련한 많은 팁들이 있는듯하다. 

https://www.coursera.org/learn/competitive-data-science


반응형
반응형