캐글을 위한 유용한 팁 정리
캐글은 데이터사이언티스트가 머신러닝 과제를 갖고 경쟁할 수 있는 커뮤니티 웹사이트입니다.
이는 개발자 스스로 자신의 기술을 연마하고 입증할 수 있는 좋은 방법이 될 수 있습니다.
캐글을 시작하고, 경쟁력 있는 머신러닝을 수행하는 데에 도움이 될 만한 유용한 팁을 정리해보았습니다.
데이터 사이언스 프로그래밍 환경 선택하기
고를 수 있는 머신러닝 프로그래밍 환경은 다양하고, 여러가지 환경을 선택하게 될 수도 있지만, 캐글을 시작할 경우 한 가지를 고르면 됩니다. 가장 많이 사용하는 환경은 R과 Python입니다.
1) R과 파이썬 이들 두 가지 오픈소스 환경의 기술에 대한 수요는 계속 증가하고 있습니다.
2) R은 통계 응용 프로그램의 학문적 사용에서 비롯되었으며 1993년으로 거술러 올라가는 긴 역사를 갖고 있습니다. 파이썬은 90년대 초반부터 시작되어 온 범용 프로그래밍 언어입니다.
3) 두 환경 모두 생태계는 잘 성숙되어 있습니다. R은 13,000개 이상 패키지를 갖고 있으며 파이썬은 scikit-learn, pandas, NumPy와 같은 라이브러리들이 널리 사용되고 있습니다.
4) 최근에 파이썬은 Theano, TensorFlow, Keras와 같은 딥러닝 툴들을 앞질렀습니다.
일반적으로 사용되는 test data set 연습하기
프로그래밍 언어에 익숙해지려면 실제 데이터셋에서 연습을 시작해야 합니다.
간단하고 잘 알려진 데이터셋에서 경험을 쌓기 위해 몇 가지 현실적인 설정이 필요합니다. UCI Machine Learning Repository를 사용하여 일련의 표준 머신러닝 문제를 해결하는 것이 좋습니다. 각 연습을 mini Kaggle competition으로 볼 수 있습니다.
1) 데이터셋을 training set과 test set으로 분할합니다. 그런 다음 캐글 방법론과 일치하도록 테스트셋을 public과 private leaderboard set으로 분할합니다.
2) 선택한 언어로 코드를 작성하고 각 데이터셋에 대한 예측을 수행하도록 설계된 통계 학습 알고리즘을 사용합니다. 가능한 한 많은 작은 데이터셋으로 계속 연습합니다.
3) 구글링해서 특정 데이터셋이 있는 머신러닝 솔루션을 찾아 결과를 해석합니다. 얼마나 많은 사람들이 사용했는지 놀라게 될 것입니다.
Data transformation 데이터 변환의 다양한 측면 살펴보기
데이터 변환 (일명 data wrangling, data munging) 에는 데이터 병합(merging data), 데이터 집계(aggregating data), 데이터 정리(cleansing data), 누락된 데이터 처리(handle missing data), 데이터 일관성 만들기(making data inconsistent) 등 다양한 형태의 데이터 준비가 포함됩니다.
데이터 변환은 종종 프로젝트의 시간과 예산의 최대 70%를 차지하므로 많은 경험을 쌓을 가치가 있습니다.
Feature engineering 중요
예측력 측면에서 문제에 대한 최상의 predictors를 선택할 때 feature engineering입니다. Kaggle challenges는 가장 정교한 알고리즘이 아니라 영리한 feature engineering으로 우승하였다는 것이 여러 차례 보고되었습니다.
feature variables 선택에 창의성을 더할 수 있도록 문제 영역에 대해 알아보도록 합니다. 이를 forward 및 backward elimination techniques와 결합하여 feature engineering 프로세스를 자동화합니다.
앙상블 ensembles 사용법 배우기
앙상블은 일련의 classifiers를 구축한 다음 prediction의 가중치를 부여한 vote를 통해 새로운 data points를 분류함으로써 향상된 예측 성능을 달성하는 통계 학습 알고리즘을 말합니다. 앙상블 방법은 단일 모델을 선택하는 대신, training data를 맞추기 위해 특정 방식으로 여러 모델을 결합합니다. 그동안 수상했던 많은 캐글 솔루션은 여러 모델의 앙상블을 사용합니다. 과적합을 이기는 방법을 배우세요. 과적합overfitting이란 training set에서는 잘 수행되지만 test set에서는 잘 수행되지 않는 모형을 말합니다. 캐글 시스템에서는 이 점수가 리더보드에 표시된 점수로 확장됩니다. 이들 점수는 과제 우승자를 식별하는 데 사용되는 validation data set (대개 data set의 20%)에 대한 모델 평가입니다.
포럼 forum 사용하기
캐글 사용자 포럼은 우수한 학습 자원입니다. 대화를 대충 훑어보는 것만으로도 통찰력을 얻을 수 있습니다.
자유롭게 질문하세요. 그러면 받게될 모든 잘 짜여진 답변들에 놀랄 것입니다. competition에서 유리한 솔루션을 이해하려면 경쟁 우위를 확보해야 합니다.
나만의 캐글 toolbox 개발하기
일반적으로 사용되는 코드 시퀀스로 구성된 다양한 도구를 이용하여 특별한 Kaggle toolbox를 만들어보세요. 그리고 연습을 통해 이러한 툴을 활용할 때 효율성을 높일 수 있습니다.
또한 데이터를 로드하고 변환하고 모델을 안정적으로 평가하는 데이터 파이프라인을 구축해보세요. 재사용 가능한 파이프라인을 설계하여 향후 competition에 배포할 수 있습니다. 초보자는 같은 과정을 반복해서 다시 만드는 실수를 저지르고는 합니다. 차라리 재사용 방법을 통해 캐글 챌린지 프로세스를 효율화할 수 있도록 노력해야 합니다.
과거 Kaggle challenges 연습하기
툴에 대해 어느정도 숙지하고 사용방법을 익혔다면 이전 캐글 과제들을 연습해봅니다. 또한 post candidate 솔루션을 게시하여 public 및 private leaderboard에서 평가받을 수 있습니다. 지난 몇 년 간의 여러 캐글 과제를 해결해봅니다. 이 팁은 상위 성과자들이 경쟁적인 머신러닝에 접근하고 그들의 방법을 자신만의 접근 방식에 통합시키는 방법을 학습하는 데에 도움이 되도록 고안되었습니다. 과거 competition 부분 우승자들의 선두에 서서 그들의 방법과 툴을 사용해보도록 해보세요. 새로운 기술을 습득하도록 해주는 다양한 문제 유형을 선택하는 게 좋습니다. 상위 10% 또는 그 이상의 public 또는 private leaderboard에서 점수를 얻도록 노력해봅니다.
Competition 시작하기
위의 모든 팁들을 지키는 데 성공했다면, 이제 캐글에서 경쟁할 준비가 되었습니다. 좋은 점수를 얻거나 장애물을 칠 때까지 한 번에 한 가지씩 도전에 임하는 것을 고려해보세요. 경쟁일 수도 있지만 지식을 배우고 공유하기 위해 참여하고 있다는 것을 기억하세요 (이는 귀중한 협업으로 이어질 것입니다).
창의적이고, 틀에서 벗어난 생각을 하고, 재미있게 즐기세요!
'공부 > AI (인공지능)' 카테고리의 다른 글
문과생이 배우는 파이썬 프로그래밍 (0) | 2021.02.13 |
---|---|
캐글(Kaggle)이란? 캐글러 되어 캐글링 시작하기 (0) | 2020.12.21 |
파이토치 (pytorch) 로 딥러닝 시작해보기 (2) | 2020.09.30 |
댓글