캐글은 어떻게 시작하는 것이 좋을까요?

캐글을 시작하는 초보자의 입장에서 캐글을 접근하는 방법론에 관한 글들을 정리해봤습니다.

캐글이란?

캐글(Kaggle) 은 데이터 사이언스 경진 대회 플랫폼입니다. 즉 데이터를 분석하는 대회입니다. 머신러닝 그리고 딥러닝을 연습하고 싶은 분들에게는 최고의 플랫폼입니다.

마치 알고리즘을 공부하기에 Problem Solving 사이트(BOJ, Codeforces, Project Euler) 등이 유용한 것과 마찬가지입니다.

하지만 캐글 자체가 초보자가 접근하기에 좋은 플랫폼은 아닙니다. 적어도 저한테는 어려운 플랫폼이었습니다. 영어가 익숙하지 않은 사용자라면 더 그럴 것입니다. 그렇기에 제가 캐글을 시작하는 과정을 남겨 많은 사람에게 공유하고자 이 글을 씁니다.

캐글 초보자를 위한 10가지 팁

본 글은 10 Tips to Get Started with Kaggle을 참고하여 작성하였습니다.

캐글을 시작하고, 캐글을 통해 머신러닝 스킬을 늘리고 싶은 분들을 위한 10가지 팁입니다. 이 글을 번역 및 정리하는 이유는 제가 실천하기 위함입니다. :-)

1. 데이터 사이언스 프로그래밍 환경을 고르기

머신러닝을 진행하는데는 다양한 언어와 다양한 환경을 사용할 수 있습니다. 프로그래밍을 오래하신 분의 경우에는 2개 이상의 언어를 함께 사용하여 효율성을 늘릴 수 있습니다. 하지만 캐글에서는 하나로 골라야 하며, 그 중에 가장 많이 사용하는 언어는 R과 Python 입니다.

두 언어 중에 고민하시는 분은 다음 글을 참고하면 좋을 것 같습니다.

두 언어 모두 라이브러리가 많고, 오픈 소스 환경이 매우 증가하고 있기 때문에 어떤 선택도 좋은 선택이라고 생각합니다.

저는 Python을 사용합니다. 그 이유는 참고 자료가 많고, 익숙한 언어이기 때문입니다. 또한 다른 분야에 범용으로 사용에는 Python이 편리하기 때문입니다.

2. 일반적으로 사용되는 테스트 데이터셋으로 연습하기

언어와 방법이 익숙해지면 실제 데이터셋, 현업에서 활용하는 것이 중요합니다. 하지만 초보자의 경우에는 연습을 위해 기본적으로 데이터 분석에 제공되는 데이터셋을 사용하는 것이 좋습니다. Kaggle 외에도 다양한 서적과 사이트에는 머신러닝 문제를 제공하는 곳이 많습니다. Kaggle을 시작하기에 앞서 인공적으로 데이터셋을 만들거나, 제공된 데이터로 연습하는 것을 추천합니다.

  • 제가 들은 수업에서는 표준 분포를 가진 데이터셋을 평균, 분산, 공분산을 설정하여 데이터셋을 만들어서 연습했습니다.
  • 그리고 Keras나 scikit-learn 모듈에서는 기본으로 제공되는 데이터셋이 있습니다.
  • 원문에서는 UCL Machine Learning Repository를 추천하고 있습니다.

이런 작은 데이터에 대한 연습은 mini-Kaggle 이라고 할 수 있습니다. 기본적인 머신러닝 방법은 제 다른 글을 참고하면 좋을 것 같습니다.

3. 데이터 변형과 전처리에 대한 다양한 방법을 찾아보기

Data transformation 또는 Data Wrangling, Data Munging으로 표현되는 이것은 데이터 처리는 머신러닝 알고리즘을 적용하기 전 필수 작업입니다. Kaggle 및 데이터 사이언스에서 사용되는 데이터는 최적화가 완료된 데이터가 아닙니다. 데이터를 합치는 작업부터 NaN 데이터 채우기 등 다양한 전처리를 통해 머신러닝 알고리즘에 적용하기 좋은 데이터를 만들어야 합니다.

데이터 전처리가 전체 과정의 70%라고 할 정도라 해도 과언이 아닙니다. 데이터 전처리는 효율을 높이기 위한 하나의 방법이고, 현업에서는 더더욱 필요한 과정이므로 많은 자료를 통해 이에 대한 센스를 늘리는 것이 중요합니다.

4. 특성 공학의 중요성

특성 공학은 문제 해결에 있어 데이터에 대한 이해를 바탕으로 합니다. 캐글에서는 정교한 머신러닝이 아닌 특성 공학으로 우승한 사례가 자주 발견됩니다. 주어진 문제에 대한 충분한 이해와 창의적인 생각으로 특성을 찾는 것이 중요합니다. 필요 없는 특성을 없애고, 필요한 특성을 추가시키는 방식이나 오토인코딩을 통한 중요 특성 선택 자동화 방법이 있습니다.

가장 좋은 예시로는 시계가 있습니다. 아날로그 시계를 읽는 프로그램을 만들면 x, y축의 2차원 벡터로 하여 계산하는 방법이 있습니다. 하지만 더 좋은 방법은 극좌표로 변환한다면 훨씬 프로그램을 유용하게 만들 수 있습니다. - 케라스 창시자에게 배우는 딥러닝 참고

5. 앙상블 방법 익히기

머신러닝에서 앙상블은 여러 분류기들로 구성한 집합에 각 분류기에 대한 가중치를 두어 향상된 예측 성능을 달성하는 통계 학습 알고리즘을 나타냅니다. 하나의 모델을 선택하는 대신, 앙상블 방법은 여러 가지 모델을 특정 방식으로 결합하여 더 좋은 결과를 만드는 것을 목표로 합니다. 캐글에서는 여러 모델의 앙상블을 이용합니다.

6. 과적합 대응법 익히기

훈련 데이터셋에서는 Overfitting, 즉 과적합이 좋은 성과처럼 보이지만 테스트 데이터셋에서는 좋은 성과를 못얻을 가능성이 큽니다. 캐글에서는 이 테스트 데이터셋으로 leaderboard에 점수가 오릅니다. 또한

7. Forum 활용하기

Kaggle의 포럼에는 좋은 학습 자료가 많습니다. 이 분야에 있어 전문가분들의 인사이트를 배울 수 있습니다. 잘하기 위해서는 질문하는 것이 가장 좋은 방법입니다.

이런 부분에 있어서는 한국의 다양한 페이스북 커뮤니티도 활용하면 좋습니다. 저는 텐서플로 코리아, 캐글 코리아를 가장 많이 활용하고 있습니다. 많은 분들이 좋은 자료를 올리시고, 때로는 재미있는 프로젝트 이야기가 많습니다.

캐글과 같이 데이터 사이언스 분야에 있어 좀 더 체계적인 커뮤니티를 만들 수 있다면 좋을 것 같다는 생각을 합니다. 이럴 때는 제가 능력이 부족해서 아쉬울 뿐입니다. 능력을 기르는 것만이 답!!

8. 자신만의 캐글 toolbox 만들기

캐글에서는 미리 만들어둔 툴을 사용하는 것이 좋습니다. 세상에는 좋은 라이브러리와 또 분야마다 특화된 코드들이 있습니다. :-) 우선은 이런 툴들을 활용하다보면 실력이 늘것이고, 그 후에는 데이터 파이프라인 을 만드는 작업이 필요합니다. 이와 관련하여 좋은 링크를 가져와봅니다.

9. 예전 Kaggle Challenge들로 연습하기

기계학습보다 중요한 것은 본인의 학습입니다. 위의 도구들과 방법들이 익숙해졌다면 캐글 예전 대회들을 통해 연습 및 학습해볼 차례입니다. 과거 경쟁 우승자의 커널 등을 살펴보며 학습하는 것이 중요합니다. 아직 우리는 배울게 많은 단계이기 때문입니다.

public 또는 private 리더보드에서 상위 10%를 노려봅시다.

10. 시작하기!

이제 1번부터 9번까지를 진행했다면 캐글을 본격적으로 시작할 준비가 된 것입니다. 대회를 통해 학습하는 것도 매우 좋은 방법입니다. 데이터 분석에 대한 트렌드를 알 수 있고, 자신의 위치를 아는 방법 중 최고는 직접하는 것이기 때문입니다.

이제 시작해봅시다!!

REFERENCE

Leave a Comment