Kaggle

Kaggle 플랫폼의 모든 것 :: 똑똑하게 Kaggle 사용하기

uomnf97 2024. 3. 31. 23:45

안녕하세요, 제이덥입니다. 오늘은 세계 최대의 데이터 사이언스 커뮤니티 플랫폼인 Kaggle에 대해 이야기하려고 합니다. 일반적으로 많은 사람들이 Kaggle을 리더보드형 인공지능 경진대회 플랫폼으로만 인식하고 있습니다. 하지만 Kaggle은 경진대회 이외에도 디스커션, 코드, 데이터셋, 강의 등 다양한 기능을 제공하는데요. 따라서 이번 포스팅에서는 Kaggle을 보다 폭넓게 활용할 수 있는 여러 방법에 대해 소개하고자 합니다.

 

Kaggle이란?

캐글(Kaggle)은 앞서 말씀드린 것 처럼 데이터 사이언스 & AI 커뮤니티 플랫폼입니다. 이 플랫폼에서 전 세계에 있는 데이터 과학자, 분석가, 그리고 ML/DL 학습자들이 모여 데이터 분석 경험을 쌓고, 자신의 프로젝트를 진행하고, 지식을 공유하며 경쟁하고 협력할 수 있는 기회를 제공합니다. 경진대회(competition)이 이를 수행하는 핵심 기능이지만 이외에도 Kaggle은 다양한 데이터셋(Dataset), 코드 공유(code), 토론 포럼(Discussion) 등을 통해 데이터 과학 커뮤니티의 성장과 발전에 기여하고 있습니다.

2010년 Anthony Goldbloom과 Jeremy Howard가 설립한 캐글은 2024년 현재까지 15년 동안 1,700만 명의 사용자를 보유한 커뮤니티로 성장했습니다. 30만 9천 개의 데이터셋, 102만 8천 개의 분석 및 솔루션 코드, 2,500개의 모델을 공유하였으며, 2만 6천 개의 대회를 개최하였습니다. 긴 시간 동안 성장하며 플랫폼은 많은 발전을 이루었는데요. 아래에서 기능들을 하나씩 살펴보도록 하겠습니다.

 

Feature #1 | Competition

캐글에서 경진대회(Competition)는 캐글 유저들 즉, 캐글러(Kaggler)들이 참여할 수 있는 리더보드형 대회를 말합니다. 대회에서는 실생활, 산업, 의료, 자연 과학 등 다양한 도메인의 데이터 과제(Task)와 데이터가 주어집니다. 참가자들은 본인의 다양한 데이터 사이언스 스킬을 통해 문제에 도전하고 과정에서 얻었던 통찰을 공유하며 함께 성장합니다.

 

Competition 대회는 목적에 따라 다음과 같이 크게 6가지로 나눌 수 있습니다.

1️⃣ Getting Started : Titanic 생존자 예측, Housing Price 예측 등 일반적으로 널리 알려져있거나, 데이터 사이언스 입문용 대회입니다. 반영구적으로 열려있으며, 따로 상품이 정해져있지 않습니다.
2️⃣ Playground : Getting Started 바로 윗 단계에 있는 대회로 주로 Tabular Playground Series라는 이름으로 대회가 열리고 있습니다. Kaggle 굿즈가 상품으로 주어지며 1~3등을 주로 시상합니다.
3️⃣ Community : Community가 주관하는 대회입니다. 캐글 코리아와 같은 단체에서 주관하는 대회로 참가자, 상품 모두 대회를 주최한 커뮤니티에서 결정합니다. 한국에서는 캐글 코리아에서 행사와 함께 대회를 주최하는 것을 보실 수 있습니다.
4️⃣ Featured : 캐글에서 볼 수 있는 흔한 대회로 상업적인 성격의 대회입니다. 다양한 도메인의 대회(의료, 산업, 댓글 등)가 포함되며, 큰 상금이 걸려있는 대회입니다.
5️⃣ Research : Featured 대회와 유사하지만 연구적이고 실험적인 성격이 강한 대회입니다. 다양한 도메인의 대회가 열리며 상금이 주어집니다.

 

이미 열렸던 대회더라도 Code를 통해 EDA, 학습 파이프라인를 살펴볼 수 있고, Discussion을 통해 논의 되었던 내용을 살펴보며 인사이트를 얻어갈 수 있습니다.

 

제가 생각할 때 Competition을 올바르게 사용하는 방법은 아래와 같습니다.

  1. 목적에 맞는 대회에 참여하기
    • 현재 공부하는 도메인, 태스크, 수준을 고려하여 종류를 선택해 참여할 수 있습니다. 또한 대회 참여를 학습을 목표로 하시면서 이미 종료된 대회에 참여하며 공부를 할 수 있습니다. 본인이 참여하는 목적을 고민해본 뒤 대회를 선택해서 참여해보세요.
  2. Discussion & Code 참고하기 + 기여해보기
    • 앞서 말씀드린 것처럼 대회에 참여하며 Discussion & Code에 다양한 코드/인사이트가 공유됩니다. 대회에 참가하며 해당 내용을 참고하여 본인의 아이디어에 다른 분들의 아이디어를 더해보세요. 그리고 공부했던 내용을 정리해서 공유해보세요. 리더보드에 높은 순위를 얻는 것도 중요하지만, Kaggle에서는 Discussion & Code에서 따로 Rank를 부여하고 있기 때문에 만약 대회에 수상하기 어려운 상황(대회 중간에 참여 / 한정된 GPU 자원)이라면 이 쪽에서 높은 메달을 노려보는 것도 좋은 방법이라고 생각합니다.

대회에 참여하는 방법 및 규칙에 대해서는 추후에 따로 다른 포스팅을 통해 다뤄 보도록 하겠습니다. 궁금하신 분들은 Competition Document를 참고하세요.

 

Feature #2 | Datasets

캐글(Kaggle)에서는 다양한 데이터셋을 공유합니다. 앞 서 언급해드렸듯이 약 30만 9000개의 데이터셋이 공유되어 있는데요. NLP, 이미지, 영상 등 다양한 도메인의 데이터를 CSV, JSON, SQLite, Archives, Big Query 등 다양한 형식의 파일로 제공합니다. 모든 캐글러는 데이터를 열람하고 다운로드를 받을 수 있으며, 이를 개인 프로젝트에 사용할 수 있다는 점이 메리트입니다.

 

제가 생각하는 Dataset 활용 방법은 본인이 수행하고 싶은 프로젝트에 적합한 데이터를 선택한 뒤, 이를 토이 프로젝트의 데이터로 이용하는 것입니다. 이 때 주의해주셔야 할 부분은 데이터를 사용할 때 반드시 라이센스를 확인해야한다는 것입니다.

 

Feature #3 | Code

 

코드(Code)는 캐글에서 만들어지는 모든 분석 자료와 솔루션, 그리고 그것을 작성하고 실행할 수 있는 클라우드 컴퓨팅 환경을 통틀어 카리킵니다.[1] 특히, 데이터 셋에서 작성한 분석 코드, 경진대회를 참여하며 작성한 솔루션 코드를 모두 이 곳에서 검색해서 뢓용할 수 있습니다. 그리고, 이 코드는 노트북(ipynb) 형태로 제공되어 있습니다. 물론 이 코드를 script 형태로 변환해서 다운로드 받을 수 있지만, 기본적으로 노트북 형태로 제공됩니다.

 

그리고 놀라운 부분은 사용자에게 NVDIA Tesla P100 / Tesla T4 X 2개의 환경을 사용자에게 GPU 자원을 주당 30시간을 제공한다는 점입니다. 또한, TPU 환경(TPU v3-8) 도 총 20시간 제공합니다. 관심있는 코드를 직접 웹상에서 돌려보면서 코드가 어떻게 동작하는지 확인할 수 있습니다.

 

제가 제한하는 활용법은 아래와 같습니다.

  1. 모델 & 데이터 분석과 관련된 코드 검색
    • 대회나 데이터 셋에서는 특정 모델에 대한 코드 자료를 찾기 번거롭습니다. 따라서 Code 섹션을 활용하여 특정 모델이 어떻게 다양한 방식으로 활용되고 있는지 검색하고 찾아볼 수 있습니다. 따라서, 모델/기법에 대해서 검색하고 싶으실 경우 Code 섹션을 활용해보세요.(물론 큰 모델이나, 대회 참여를 Kaggle Notebook자원으로 참가하는 것을 권장하지 않습니다.)
  2. 모델 학습
    • 개인이 GPU 환경이 제한되어 있다면, 간단한 머신러닝 코드는 Kaggle Notebook환경에서 코드를 돌려보며 어떻게 동작하는지 확인하실 수 있습니다. 아주 제한적인 시간이 제공되지만, 불가피할 경우 유용합니다.

 

Feature #4 | Discussions

 

디스커션(Discussion) 세션은 머신러닝, AI에 관련된 토픽에 대해서 글을 게시하거나, 질문하고, 토론을 할 수 있는 공간입니다. 이 공간은 아래와 같이 나뉩니다.

1️⃣ General: 자유로운 공간입니다. 게시글을 포스팅하거나 관심있는 주제에 대한 토론을 열 수 있습니다.
2️⃣ Getting Started : 캐글 입문자들이 할 수 있는 질문입니다.
3️⃣ Product Feedback: Kaggle 플랫폼을 사용하며 건의할 수 있는 공간입니다.
4️⃣ Questions & Answers : 데이터 과학자들에게 기술적인 조언을 구하는 곳입니다.
5️⃣ Compeition Hosting : Competition을 호스팅할 때 조언을 구할 수 있는 공간입니다.
6️⃣ Accomplishments : Achievement를 공유하고 축하하는 공간입니다.

 

관심있는 주제에 대해서 어떤 논의가 오갔는지 검색하고 활용할 수 있는 공간입니다.

캐글 플랫폼의 주요 기능에 대해서 다뤄봤습니다. 다음 포스팅에서는 대회에 참여하는 방법/Kagglge Progression System(캐글 티어 시스템)에 대해서 다룰 예정입니다.

 

Reference :