stevekwon211 / Hello-Kaggle-Guide-KOR

Kaggle을 처음 접하는 사람들을 위한 문서

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hello Kaggle!:wave:

Kaggle의 공식 문서캐글 가이드라는 책을 읽고 Kaggle의 정의나 기본적인 사용법들에 대하여 정리해보았습니다.

캐글 가이드동양북스라는 출판사에서 나온 책입니다. 책에 대해 궁금하신 분을 위해 링크도 첨부해두겠습니다.

저처럼 이제 막 Kaggle을 접하는 분들에게 도움이 되었으면 합니다.
수정해야할 부분이 있으면 Issues에 남겨주시면 감사하겠습니다.

참고로 Hello Kaggle! 문서는 Python 프로그래밍 또는 머신러닝 이론 같은 것은 거의 다루지 않고 Kaggle 사용법에 집중하였습니다.
프로그래밍이나 데이터 사이언스, 머신러닝 자료를 찾고 계신 분들을 위해 제가 도움을 받았던 링크를 몇 군데 남겨두겠습니다.


목차

  1. Kaggle이란 무엇인가요?

  1. Kaggle은 어떻게 활용되나요?

  1. Kaggle Competition?

  1. Kaggle 시작하기

  1. Notebook에 대하여

  1. Competitions와 Notebooks

  1. Competitions의 진행 흐름

  1. Competitions의 규칙

  1. Kaggle에서 기술의 흐름을 살펴보자

  1. Kaggle Dataset과 API를 활용해보자

  1. 마무리 인사



Kaggle이란 무엇인가요?

  • Kaggle 은 데이터 분석 경진 대회를 주최하는 플랫폼입니다.
  • 경진대회는 회사의 연구 과제, 주요 서비스를 위해 분석이 필요한 데이터를 제공해서 주최하는게 일반적입니다. 1

  • 인공지능, 머신러닝 붐 이 일어나면서 참가자 수가 계속 증가해왔으며 2017년 구글의 모회사 'Alphabet' 에 인수되기도 하였습니다.
  • Alphabet의 인수 이후 Kaggle은 단순한 플랫폼이 아닌 데이터 사이언티스트, 엔지니어들에게 매우 중요한 사이트가 되었습니다.

Kaggler? Kaggling?

  • 마치 구글에서 검색하는 것을 Googling 이라고 하는 것 처럼
    Kaggle의 사용자는 Kaggler, Kaggle에서 활동하거나 Competition에 참가하는 것은 Kaggling 이라고 합니다.

Competition외에 서비스나 특징들

  • Jobs
    • Jobs를 원래 제공해왔으나 2020년 12월 22일 서비스를 종료했습니다.
      간단하게 요약하자면 이용자 수가 적어서라네요.
      자세한 내용은 https://www.kaggle.com/jobs-board-closed 여기서 읽어보시길 바랍니다.

  • Course image
    • Python, 머신러닝, 시각화 등에 대한 실무, 실용적인 강의들을 제공합니다.
    • 체계적으로 배우지 못했거나 최신 기술이 아닌 강의를 공부했다면 Kaggle의 Course가 꽤 유용할 수 있습니다.
    • 또한 모든 강의들은 영어로 제공되고 무료이며 수료증을 제공합니다.

  • 영어
    • 전 세계의 데이터 사이언티스트들이 모이므로 기본적으로 영어를 사용합니다.
    • Competition의 공지사항, 데이터 세트(Dataset), 토론(Discussion)도 영어로 이루어집니다. (영어 공부 필수!! 또는 파파고..)
      아래는 Discussion과 Site Forum 사진입니다. image
    • 실제로 Competition 입상자들의 프로필을 살펴보면 미국, 러시아, 중국, 인도, 한국 등 다양합니다.

  • 프로그래밍 언어
    • 일반적으로 PythonR 을 많이 사용합니다.

Kaggling을 위해 필요한 지식

  • 목적 필요한 지식
    Competition 참가 Python, R, 데이터 분석
    Competition 주최 데이터 분석, 영어
    Kaggler와 토론 영어
    Course를 통한 학습 영어

Kaggler가 되기 전에 준비해야 할 것

  • 필수: 인터넷, Python, R 프로그래밍이 가능한 PC
  • 권장: GPU 탑재된 서버 or 워크스테이션, 대용량의 HDD or SSD



Kaggle은 어떻게 활용되나요?

데이터 분석을 위한 인프라로 활용하기

  • Kaggle은 웹 기반으로 데이터 분석에 필요한 도구를 제공해줍니다.(Notebook)
  • 다양한 Kaggler들과 커뮤니티를 이루고 있어 경쟁과 협력이 가능합니다.

Notebook 활용하기

  • Kaggle에서 제공하는 데이터 분석용 프로그래밍 환경 입니다.
  • SaaS 환경으로 Notebook에 작성한 코드를 서버에서 실행하는 방식입니다.
  • 프로그래밍 환경을 제공해주므로 별도의 개발 환경 구축이 필요없습니다.(Python 설치, Anaconda 설치 등등 필요 X)
  • Jupyter Notebook 을 참고해 만들어져 비슷합니다.
  • 기본적으로 4Core CPU + 16GB RAM을 제공합니다. GPU 서버2Core CPU + GPU + 13GB RAM을 제공합니다.
    사용 횟수 제한없이 무료로 제공 해주며 GPU는 1주일에 30시간 동안 사용할 수 있습니다.

Dataset 활용하기

image

  • 머신러닝 기반의 데이터 분석 프로그램을 개발할 때 가장 먼저 해야하는 것은 Dataset 을 준비하는 것입니다.
  • 학술 목적으로 공개되었거나 Kaggler가 만들어 공개한 Dataset는 누구나 사용할 수 있습니다.
  • 만약 공개하고 싶지 않은 Dataset이라면 Private 설정을 통해 외부에는 공개하지 않을 수 있습니다.
  • 한 번이라도 Dataset이나 Notebook을 공개로 설정하면 Apache 2.0 License가 적용되므로 신중하게 결정해야 합니다.

회사 연수에 활용하기

  • 책에 나온 예시: 신경망 기반 머신러닝 프로그래밍 작성 직원 연수
      1. Kaggle 회원 가입
      1. 직원들은 진행자의 Noteboook을 복사하고 실행할 준비
      1. Notebook의 신경망 모델 수정
      1. 수정한 모델의 실행 결과를 Competition에 제출하고 점수 확인
  • 만약 Kaggle을 이용하지 않았다면?
      1. 연수용 컴퓨터에 개발 환경 구축
      1. 머신러닝 프로그램(신경망 모델) 예제 배포
      1. 신경망 모델 실행 결과를 점수로 환산하여 평가하는 프로그램 작성
      1. 실행한 모델의 평가 점수 확인
      1. 신경망 모델 수정
      1. 실행 결과에 따라 점수가 달라지는 것을 확인

  • Kaggle이 개발 환경 구축, 점수 확인, 배포 등의 점에서 훨씬 간편하고 비용이 덜 든다는 것을 알 수 있습니다.

Discussion 활용하기

  • 모르는 것이 있으면 메인 홈페이지의 Communities , Site Forums , 그리고 Competition마다 있는 Discusstion 에 질문할 수 있습니다.

  • Communities image

  • Site Forums image




Kaggle Competition?

Competitions Documentation에서 몇 가지 내용을 참조하여 작성했습니다.

가장 일반적인 Competition인 Featured

image

  • 난이도가 있으며 일반적으로 상업적인 목적을 가진 Competition들입니다.
  • 대부분의 Kaggler들이 참여하며 지금까지 진행되었던 Competition들의 상금은 $100부터 많게는 $1,500,000까지도 있습니다.

연구목적의 Research

image

  • 연구적인 주제들을 주로 다루며 일반적으로 상금이나 보상은 주어지지 않습니다.(현재 진행중인 Research Competition들은 모두 상금이 있네요)
  • 대신 덜 경쟁적이며 지적 호기심이 많은 Kaggler들과 토론해가며 연구를 할 수 있습니다.

학습용 Competition인 Getting Started

image

  • 여기에 나오는 Competition들은 초보자 대상의 학습용 Competition들입니다.
  • 특히 Titanic: Machine Learning from Disaster , House Prices: Advanced Regression Techniques , Digit Recognizer 이 3가지 Competition은 머신러닝에 입문한 분들에게 가장 많이 추천되고 도움이 되는 Competition들입니다.

데이터 사이언티스트, 엔지니어들의 Playground

image

  • 주로 데이터 사이언티스트와 엔지니어들이 흥미롭다고 느낄만한 주제들로 Competition이 열립니다.
  • Playground라고 해서 난이도가 쉽진 않습니다. 보통 최근에 발표한 학술/기술적 문제나 공공 사회 문제도 다룹니다.
  • 주최측에서 상금이나 보상을 제공하는 경우도 있습니다.

취업 기회를 얻을 수 있는 Recruitment

image

  • 기업들이 주최하며 보상은 주로 Job Interview(면접) 기회입니다. Competition이 종료된 시점에 참가자들은 Resume(이력서)를 업로드할 수 있습니다.

정기적으로 열리는 Annual Competition

  • Kaggle에는 정기적으로 열리는 Competition들이 몇 가지 있습니다. 현재 Kaggle의 에서 다음과 같은 내용을 확인할 수 있습니다. image

분석한 결과를 효과적으로 설명해야하는 Analytics

  • 이건 Documentation에 설명이 나와있지 않아서 현재 올라와있는 Analytics Competition들을 직접 읽어보고 작성했습니다.
  • 각 Competition의 Evaluation과 Submission 형식을 읽어보니 Analytics의 채점 방식은 Notebook을 직접 제출하여 사람이 채점하는 방식으로 보여집니다.
    분석한 데이터를 주최자의 요구사항에 맞게 설명해야 합니다. 마치 회사에서 프레젠테이션을 통해 경영진을 설득하는 것과 비슷해보입니다.



Kaggle 시작하기

회원가입

  • Kaggle을 시작하기에 앞서 오른쪽 상단의 Register 버튼을 눌러서 회원가입을 먼저 진행해주셔야 합니다.

Kaggle Courses 둘러보기

  • 머신러닝이나 데이터 분석 공부가 충분하지 못한 분들은 위에서 소개했던 Courses에서 필요한 부분을 공부하는 것도 좋은 방법입니다.
  • 각 과정은 2~8개의 수업으로 구성되어 있고 다양한 실습 예제를 제공합니다.

Kaggle Progression System을 참조해서 작성했습니다.
Contributer가 되는 법에 대해 설명하기 전에 Kaggle 등급메달에 대한 설명을 먼저 하겠습니다.

Kaggle 등급

  • Kaggle에는 Progression System이 있는데 쉽게 이야기해서 Kaggler 등급입니다.
    이 등급은 데이터 사이언티스트로써 어느정도의 실력을 가졌는지 가늠할 수 있는 좋은 지표입니다.
    또한 자신이 얼마나 성장했는지를 직관적으로 보여주기도 합니다.

  • Kaggle 등급은 다음과 같이 5단계로 나뉘어지며 각 등급을 달성하기 위한 조건도 제시되어 있습니다.

    • Novice
      image

    • Contributor
      image

    • Expert
      image

    • Master
      image

    • Grandmaster
      image

  • 또한 위 사진들에서 볼 수 있듯이 Kaggle 등급은 Competitions, Datasets, Notebooks, Discussion 각 분야 별로 다르게 부여됩니다.

  • 오른쪽 위 계정 아이콘을 누른 후 My Profile을 선택해서 프로필 페이지로 넘어갑니다.
    그럼 본인의 프로필 정보와 Kaggle 활동 내용 및 등급을 확인할 수 있습니다.


메달

  • 간단히 이야기해서 메달은 Kaggler들의 각 분야에서의 활동 성과를 보여줍니다.
    • Competition에서 훌륭한 결과를 얻은 Kaggler
    • 인기가 많은 Notebook을 작성하고 공유하는 Kaggler
    • 유용한 Dataset을 공유하는 Kaggler
    • 좋은 Comment를 작성하는 Kaggler

  • Contributer 등급은 해당하는 조건을 만족하면 되지만 Expert 부터는 각 분야에 해당하는 조건에 요구하는 메달을 모아야 합니다.
  • Competitions의 경우 참가하는 팀 수에 따라 메달의 수여 기준도 다음과 같이 달라집니다.
    image

  • Datasets, Notebooks, Discussion은 Vote 숫자로 평가합니다. Vote 숫자가 높을 수록 많은 Kaggler들에게 추천을 받았다는 의미입니다.
    image
  • 유의해야할 사항은 각 부분의 게시물별로 수여되는 메달의 종류는 하나입니다.
    예를 들어서 Dataset에 올린 게시물이 20 Votes를 받았다면 동메달은 없어지고 은메달을 받는 것입니다.

Kaggle Contributor 되기

1.사용자 프로필 정보 추가하기

  • 본인의 프로필에 들어가서 Edit Profile을 클릭하고 다음 내용을 입력합니다.
    • 자기소개 (bio)
    • 직업 (Occupation)
    • 소속 조직 (Organization)
    • 거주 도시 (City)
  • 그 외에 프로필 이미지, SNS 등은 자유롭게 설정하시면 됩니다.

2. SMS 인증하기 (SMS verify your account)

  • 프로필 화면에서 Phone Verification을 클릭합니다.
  • 국가코드 (Country Code), 전화번호 (Phone Number), 로봇이 아닙니다 박스에 체크를 한 후 Send code를 클릭합니다.
  • 전송된 코드를 입력하고 Verify를 클릭하면 인증이 완료됩니다.

3. Script 실행하기 (Run 1 script)

  • Course에서 강의를 진행하거나 직접 Notebook을 생성하여 아무 코드나 실행해보면 달성할 수 있습니다.
  • 4. Competition에 참가하기에도 실행하는 과정이 있으니 건너뛰어도 괜찮습니다.

4. Competition에 참가하기 (Make 1 competition or task submission)

  • Getting Started 카테고리에 있는 Competition을 하나 고릅니다.

  • 들어가보면 화면 중간 정도에 아래와 같은 메뉴를 보실 수 있습니다.
    image

  • 여기서 Notebooks를 클릭하고 다른 사람들이 작성한 Notebook들을 구경해봅니다.

  • 원하는 Notebook을 하나 골라서 열어보면 오른쪽 위에 image 버튼이 보일 것입니다. 이 버튼을 클릭해서 Notebook을 복사합니다.

  • 복사가 완료되면 다시 오른쪽 위에 있는 Save Version을 클릭합니다.

    • Version Name: 원하는 이름을 입력할 수 있습니다.
    • Version Type: Quick Save 또는 Save & Run All (Commit), 두 가지 옵션이 있는데 Quick Save는 저장만하고 실행은 하지 않으며 Save & Run All (Commit)은 실행도 합니다.

  • 여기서 Save & Run All (Commit)을 클릭하고 Save 버튼을 누릅니다.

  • 다시 프로필로 돌아가서 Notebooks를 클릭하면 방금 복사한 Notebook을 확인할 수 있습니다.
    이 노트북을 클릭하면 오른쪽 메뉴 중에 Output이 있습니다.
    Output을 누르면 볼 수 있는 Submission.csv(Submission 파일의 이름은 다를 수도 있습니다)를 선택하고 오른쪽에 있는 Submit to Competition을 클릭합니다.

  • 이제 Leaderboard 메뉴로 화면이 옮겨지고 제출된 파일이 자동으로 채점이 됩니다.
    채점이 끝나면 점수를 확인할 수 있고 Jump to your position on the leaderboard를 클릭해 자신의 순위를 확인할 수 있습니다.

5. 댓글 달고 다른 사람의 게시물이나 댓글에 Upvote 하기 (Make 1 comment & Cast 1 upvote)

  • Discussion에서 자신이 원하는 Topic에 들어가서 관심있는 글을 클릭합니다. (Site ForumsGetting Started에 들어가보는 것을 추천드립니다.)
  • 글을 잘 읽어보고 댓글을 작성합니다. 글이 유용하거나 마음에 들었다면 Vote도 눌러줍시다.

6. Kaggle Contributor 되기 완료!

잠깐!

  • 한 가지 내용을 더 추가하겠습니다. 바로 Kaggle Rankings입니다.
  • Competitions, Datasets, Notebooks, Discussion 네 분야 별로 순위를 확인할 수 있습니다.
  • 아래 사진은 Competitions 분야의 순위를 보여주고 있습니다. 또한 그 분야에 각 등급별로 몇 명이나 있는지 확인도 가능합니다. image



Notebook과 친해지기


Notebook으로 할 수 있는 것은?

  • 데이터 분석용 프로그래밍이 주 목적이며 작성된 프로그램은 캐글 서버에서 실행됩니다.
  • Competition에 제출하거나 NotebookKaggler들과 공유할 수 있습니다. 공유되는 Notebook중에는 오직 교육 또는 기술을 알려주기위한 목적인 것도 있습니다.
  • 코드용 셀마크다운 셀을 활용하여 코드, 코드에 대한 설명(텍스트, 이미지 등)을 작성할 수 있습니다.
    마크다운(Markdown) 사용법
    마크다운 emoji-cheat-sheet
    위 두가지 링크는 제가 처음 마크다운을 사용하면서 참고했고 이모지는 지금도 필요할 때마다 가끔식 보고있습니다.

Notebook 만들고 사용하기

  • Notebook 메뉴에 들어가서 오른쪽 상단을 보면 image 이런 버튼이 있을텐데 클릭해줍니다.

  • Kaggle NotebookScriptNotebook, 두 가지 타입을 선택할 수 있습니다.
    • Script는 일반적으로 사용하는 코드 편집기에 코드를 작성하고 실행하는 방식입니다.
    • NotebookJupyter Notebook과 비슷한 인터랙티브 개발 환경입니다. 셀을 나누어서 원하는 부분의 코드만 실행할 수 있는 특징이 있습니다.

  • 왼쪽 상단에 File을 누르고 Editor Type에 커서를 대면 타입을 고를 수 있습니다. 또한 Language에서 PythonR중에 사용할 언어를 고를 수 있습니다.
    스크린샷(1)

  • 왼쪽 상단에 아래 사진과 같이 생긴 칸을 누르면 이름을 변경할 수 있습니다.
    image

  • 처음 Notebook을 생성하면 다음과 같은 코드가 보일 것입니다.
    # This Python 3 environment comes with many helpful analytics libraries installed
    # It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python
    # For example, here's several helpful packages to load
    
    import numpy as np # linear algebra
    import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
    
    # Input data files are available in the read-only "../input/" directory
    # For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory
    
    import os
    for dirname, _, filenames in os.walk('/kaggle/input'):
        for filename in filenames:
            print(os.path.join(dirname, filename))
    
    # You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using "Save & Run All" 
    # You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session
    위 코드는 PythonNumpyPandas 라이브러리를 불러온 후, 파일을 가져올 디렉터리를 /kaggle/input으로 지정한 것입니다.

  • NotebookHello Kaggle!을 출력해보겠습니다. 아무 코드셀에 커서를 대면 + Code 버튼을 볼 수 있는데 눌러주도록 합니다.
  • 그러고 나서 다음과 같이 작성해줍니다.
    image

  • 왼쪽 상단의 image 이 재생버튼을 눌러주거나
    현재 실행시키고 싶은 코드 셀로 가서 Ctrl + Enter 또는 Shift + Enter 입력해서 코드를 실행합니다. 그러면 다음과 같이 출력이 될 것입니다.
    image

  • 셀에서 볼 수 있는 버튼들의 각 기능들입니다.
    • image : 셀 위치를 한 칸 앞으로 올립니다.
    • image : 셀 위치를 한 칸 아래로 내립니다.
    • image : 해당 셀을 삭제합니다.
    • image/image : 해당 셀을 숨기거나 나타냅니다.
    • image : 다음과 같은 부가 기능을 제공합니다.
      image

Notebook의 다양한 설정

  • 공개&비공개 설정하기
    • Notebook은 다른 Kaggler들에게 공유하기 위해 공개할 수 있습니다. 하지만 본인만 알고싶다거나 팀으로 활동할 때에는 비공개, 특정 사용자에게 공유같은 설정을 할 수 있습니다.
    • 오른쪽 상단에 있는 Share 버튼을 누르면 공개 또는 비공개를 설정하는 창이 열립니다.
    • PrivacyPublic으로 설정하면 Apache 2.0 License 적용과 함께 공개가 됩니다.
    • Colaborators에서 사용자를 검색해 공동 작업자로 추가할 수 있습니다.

  • Settings 설명
    • Language : PythonR 중에 사용할 프로그래밍 언어를 설정할 수 있습니다.
    • Environment : Docker 이미지를 설정할 수 있습니다. OriginalNotebook을 만들 때 직접 개발 환경을 설정하는 것이고 Latest AvailableKaggle이 제공하는 최신 개발 환경을 사용하는 옵션입니다.
    • Accelerator : GPU 또는 TPU를 사용할지 설정할 수 있습니다.
    • GPU/TPU Quota : GPUTPU 사용 시간와 사용량을 보여줍니다.
    • Internet : 인터넷 연결 여부를 설정할 수 있습니다.
      InternetOn으로 설정하면 특정 패키지를 설치할 수 있습니다. 또한 구글 계정을 이용해 GCP (Google Cloud Platform)BigQuery, Cloud Storage, AutoML 서비스를 사용할 수 있습니다.

Notebook에서 Data 불러오는 법

  • Kaggle NotebookCompetition Data 뿐만 아니라 공유되고 있는 다양한 Dataset을 이용할 수 있습니다.
    이런 경우에는 별도의 파일을 Notebook에서 사용할 수 있도록 설정해주어야 합니다.

    1. 새로운 Notebook을 만들어서 하는 방법
    • 자신이 사용하길 원하는 Dataset에 가면 image 이런 버튼을 볼 수 있는데 New Notebook을 누르면 파일이 자동으로 설정됩니다.

    1. 기존의 Notebook에 추가하는 방법
    • 현재 갖고있는 Notebook에 새로운 데이터를 추가하려면 우선 Notebook으로 접속합니다.
      그리고 오른쪽 상단에 있는 image + Add Data 버튼을 클릭합니다.
      그러고나면 창이 하나 나타나는데 거기서 원하는 Dataset을 검색한 후 Add를 누르면 됩니다.

    1. 직접 업로드하는 방법
    • Data 메뉴에 들어가서 오른쪽 상단을 보면 image + New Data 버튼이 있는데 이것을 클릭합니다.
      그리고 Enter Dataset Title에 이름을 입력한 뒤 Select Files to Upload를 눌러서 파일을 업로드합니다. (zip이나 tar.gz같은 압축 파일 형식도 가능합니다.)
      마지막으로 Create을 눌러서 Dataset을 업로드합니다. 이렇게 업로드한 Dataset을 i이나 ii의 방식으로 불러와서 사용하면 됩니다.

    1. 다른 Notebook의 출력 데이터를 사용하는 방법
    • ii의 방법을 따라하면 창이 하나 나타나는데 거기서 Kernel Ouput Files 탭을 클릭하면 다른 Notebook의 출력 데이터를 사용할 수 있습니다.

Notebook에서 외부 패키지 사용하기

  • pip로 설치할 수 있는 외부 패키지는 Notebook의 하단에 있는 Console을 클릭해서 pip install package_name과 같이 설치할 수 있습니다.
    image

  • 또한 다음 두 가지 예시처럼 코드 셀에서 직접 pip를 사용할 수도 있습니다.
    !pip install package_name
    import os
    os.system('pip install package_name')

Notebook에서 Dataset 소스 코드 사용하기

  • 만약 hello_kaggle 이라는 패키지를 포함한 example datasetNotebook에 추가하면 ../input/example-dataset/hello_kaggle 디렉터리를 추가하면됩니다.
    추가하는 코드는 다음과 같습니다.
    import sys
    sys.path.append("../input/example-dataset/hello_kaggle")



Competitions와 Notebooks

Notebook은 데이터 분석 Competition 말고 어디에 사용될 수 있나요?

  • 일반적으로 입상이 목표라면 Competition이 종료된 후 Notebook을 공개하게 됩니다.
    하지만 Competition이 진행되고 있을 때에도 Kaggler들과 토론을 할 수 있는 환경도 조성되어 있습니다.

Competition Notebook에서 사용할 Data File 다루는 법

  • Competition을 진행할 때 Notebook의 오른쪽 상단을 보면 Data 탭이 있습니다. 눌러보면 3가지의 파일이 있을 것인데 각 파일에 대한 설명은 다음과 같습니다.
    • train.csv : 정답 레이블이 있는 학습용 데이터입니다.
    • test.csv : 정답 레이블이 없는 테스트용 데이터입니다.
    • sample_submission.csv : 제출용 데이터 예입니다.

  • CompetitionData 메뉴를 보면 각 파일이 어떤 데이터가 담겨 있는지 확인할 수 있습니다.
    예시로 Titanic - Machine Learning from Disaster를 보겠습니다.
    image
    위 사진에서 Data 메뉴를 클릭하면 다음과 같이 Overview를 읽어볼 수 있고
    image
    더 아래로 내려가보면 다음과 같이 각 파일을 선택해 데이터를 확인해볼 수 있으며 다운로드도 가능합니다.
    image

  • 위 파일들을 이용해서 모델을 작성 및 제출할 csv 파일을 생성했다고 가정하고 제출하는 방법을 다루어보겠습니다.
    (4-competition에-참가하기에서도 같은 내용이 설명되어 있습니다.)

    • Notebook 화면의 오른쪽 상단에 있는 Save Version을 클릭합니다. (만약 코드를 실행하지 않은 상태라면 Save & Run All (Commit)을 클릭하면 됩니다.
    • Save & Run All (Commit)에서 Commit은 현재 제가 문서를 작성하고 있는 GithubGit Commit과 같은 의미입니다.
      그래서 Kaggle Notebook은 이전에 작성했던 소스 코드의 버전을 참조할 수 있습니다.
  • 이제 프로필로 돌아가서 Notebooks를 클릭하면 방금 저장한 Notebook을 확인할 수 있습니다.
    이 노트북을 클릭하면 오른쪽 메뉴 중에 Output이 있습니다.
    Output을 누르면 볼 수 있는 Submission.csv를 선택하고 오른쪽에 있는 Submit to Competition을 클릭합니다.


  • 이제 Leaderboard 메뉴로 화면이 옮겨지고 제출된 파일이 자동으로 채점이 됩니다.
    채점이 끝나면 점수를 확인할 수 있고 Jump to your position on the leaderboard를 클릭해 자신의 순위를 확인할 수 있습니다.



Competitions의 진행 흐름

  • 여기서 나오는 종류나 순서는 캐글 가이드 저자 사카모토 도시유키님의 개인 생각입니다.

범용 알고리즘을 구현한 Baseline

  • 먼저 데이터 분석을 시작하면 범용 알고리즘을 통해 출력 데이터를 얻습니다.
  • 이후 본격적으로 머신러닝 모델을 개발하고 범용 알고리즘을 통해 얻은 출력 데이터와 결과를 비교합니다.
  • 비교한 결과에서 범용 알고리즘보다 결과가 나쁘게 나왔다면 모델에 문제점이 있다고 추측할 수 있습니다.

데이터 분석 Notebook

  • Competition의 데이터를 분석하고 시각화를 해서 보여주는 Notebook을 뜻합니다.
  • 제출할 데이터를 만들지 않고 분석한 데이터 사이의 상관관계, 규칙, 구조 등을 파악하는데 집중합니다. 또한 종속 변수와 잘 맞는 독립 변수도 찾습니다.
  • Competition 경험이 적다면 다른 Kaggler들이 분석한 데이터들을 보면서 지식과 인사이트를 쌓는 것도 좋은 시작이 될 수 있습니다.

Notebook 포크하기

  • 머신러닝Kaggle에 처음 입문한 사람들은 곧바로 데이터 분석이나 모델을 개발하지 않고 공개되어 있는 Notebook을 포크해오는 것도 하나의 방법입니다.
  • 포크(Fork)란 소스 코드의 한 버전을 복사해오는 것을 뜻합니다.
  • 포크하고 싶은 Notebook의 오른쪽 상단에 위치한 image 버튼을 눌러서 복사하면됩니다.

병합 Notebook

  • Merge, Blending, Stacking, Ensemble 등의 단어가 Notebook 제목에 있다면 병합 Notebook 이라고 합니다.
  • 이름에서 알 수 있듯이 여러 Notebook을 합친 Notebook을 뜻합니다.
  • 예시: image

지금까지 나온 Notebook 등장 순서 정리와 결론

Untitled Diagram

  • 위와 같은 순서로 Competition이 진행된다고 했을 때 무작정 우승자의 Notebook을 보는 것보단 그 과정을 이해할 수 있도록 다양한 Notebook을 공부해보는 것이 좋을 것이라 생각이됩니다.
  • 또한 Competition은 기본적으로 경쟁을 하는 것이므로 공개된 Notebook들은 다른 Kaggler들이 알아도 본인에게 큰 타격이 없다는 뜻입니다.
    실제로 입상한 분들의 Notebook을 보면 당시 최신 기술을 사용하거나 공개했던 Notebook과는 다른 솔루션을 사용한 경우도 종종 보입니다.



Competitions의 규칙

  • KaggleCompetitions는 간혹 별도의 규칙이 있는 경우가 있습니다. 그 이유는 Competitions의 주최가 보통 특정 회사로부터 이루어지기 때문인데요, 그 회사가 원하는 결과를 얻기 위해 특별한 규칙이 생기곤 합니다.

어떤 규칙들을 봐야하나요?

    1. Rules : Competition에서 입상하기 위해선 우선 그 Competition의 규칙을 잘 알고 있어야 합니다. 각 CompetitionRules 메뉴를 확인하면 됩니다.
    1. Evaluation : OverviewEvaluation 페이지에서 평가 함수를 살펴보고 어떤 평가 방식이 적용되는지를 확인해야 합니다. 보통 통계학 기반의 함수가 사용됩니다.
    1. 1인 점수 확인 횟수 : 데이터를 하나씩 변경하면서 결과 파일을 자주 제출하여 점수를 자주 확인할 수 있다면 의미있는 성과를 거두지 못하겠죠, 그래서 보통 점수 확인 횟수에 제한이 있습니다.
    1. Notebook Only Competition : Kaggle Notebook만 사용해서 결과를 제출해야 합니다.
      Kaggle Notebook만 사용하게 될 경우 Kaggler들이 Notebook을 공개할 확률이 높아지며 모든 참가자는 공개된 Notebook을 볼 수 있으므로 좋은 아이디어를 쉽게 발견할 수 있습니다.
      또한 모든 참가자의 컴퓨터 연산 자원이 같아지기 때문에 개인 워크스테이션을 쓰는 사람과 그렇지 않은 사람 사이의 불평등을 해소할 수 있습니다.



Kaggle에서 기술의 흐름을 살펴보자

종료된 Competition에서 살펴보기

  • Kaggle의 특징이 하나 있는데 바로 오래전에 종료된 CompetitionDiscussionNotebook을 그대로 남긴다는 것입니다.
    그래서 이것들을 잘 살펴보면 당시 어떤 기술이 어떤 방식으로 어디에 적용되었는지 확인할 수 있습니다.
  • 예시
    Competition 사용된 기술 설명
    Mercari Price Suggestion Cahllenge(2018.2) TF-IDF 벡터 + 전결합층 신경망 각 단어의 출현 빈도를 신경망으로 학습
    Toxic Comment Classification Challenge(2018.3) FastText, Glove + GRU + LightGBM 단어 벡터 사전을 시계열 데이터로 학습해 조합함
    Avito Demand Prediction Challenge(2018.6) FastText + LSTM + 2D-CNN 문장의 데이터와 이미지를 신경망으로 동시에 학습
    Quora Insincere Questions Classification(2019.1) Glove, para + OOV Token + LSTM + 1D-CNN 어휘 이외의 단어를 OOV 토큰으로 학습
    Jigsaw Unintended Bias in Toxicity Classification(2019.6) BERT + XLNet + GPT2 BERT 모델이 Kaggle에 등장

입상한 솔루션 한 번에 살펴보기

  • Data-Science-Competitions라는 Github 저장소에서 Competition에 입상한 솔루션을 주제별로 정리하여 공개하고 있습니다.(지금 확인해보니 11개월전이 마지막 커밋이긴 합니다.)
  • 입상한 솔루션은 당시 기술 기반이므로 현재 더 좋은 기술이 있는지 확인해봐야 합니다.
  • 그리고 대부분의 Competition은 종료된 이후에도 Private Leaderboard 페이지에 최신 기술을 적용한 솔루션이 계속 공개됩니다.



Kaggle Dataset과 API를 활용해보자

공개 Dataset 활용하기

  • 일반적인 알고리즘을 연구할 때는 널리 공개된 Dataset을 통해 성능을 테스트하는 것이 좋은데 UCI Machine Learning Repository가 유명합니다.
    많은 학술 논문에서 이용하기도 합니다.

Data Repository(데이터 저장소)로 활용하기

  • Github를 사용할 때 스토리지나 서버는 필요하지 않은 것처럼 KaggleDatasetNotebook을 간편하게 저장하는 장소로 활용할 수 있습니다.(무료!)
  • 또한 NotebookDataset을 바로 연결하여 사용할 수 있다는 장점도 있습니다.
  • 공개 Dataset 하나당 최대 20GB를 사용할 수 있고 비공개의 경우 전체 최대 20GB를 사용 가능하다는 용량 제한이 있습니다.

Kaggle API

  • Kaggle API는 다양한 개발 환경에서 Kaggle의 여러가지 기능을 사용할 수 있는 API 입니다.
  • Python 3으로 구현되었으며 터미널 환경에 커맨드를 입력하는 방식입니다.

Kaggle API 설치하기


  • 1.우선 pip install kaggle 명령어로 Kaggle API를 설치해줍니다.
  • 2.그리고 본인 프로필에 들어가서 image 이렇게 생긴 버튼을 클릭후 Accounts를 누릅니다.
  • 3.image
    여기서 Create New API Token을 눌러서 json 파일을 다운로드합니다.
    1. 방금 다운로드한 json 파일을 사용자의 홈 디렉터리에 .kaggle/kaggle.json 으로 저장하면 Kaggle API를 사용할 준비가 완료되었습니다.

Kaggle API 사용하기

  • 사용자 PC의 터미널을 열고 명령을 실행할 수 있습니다.
  • kaggle competitions list 명령을 실행하면 현재 진행중인 Competition들을 확인할 수 있습니다.
    Screenshot from 2021-01-06 22-15-25
  • Competition의 파일을 확인하고 다운로드하려면 kaggle competitions files COMPETITION_NAME 으로 파일을 확인하고 kaggle competitions download COMPETITION_NAME 하면 파일들을 다운로드할 수 있습니다.
  • Kaggle API에 대해 더 자세히 알아보시려면 Kaggle Public API Documentation을 확인해주시길 바랍니다.

마무리 인사

일단 부족함이 많은 저의 Hello Kaggle! 문서를 읽어주신 모든 분들에게 감사 드립니다.
사실 저는 파이썬 을 2020년 4월에 처음 공부했고 같은 해 7월에 입대를 하게되면서 공부에 온전히 집중하지 못하는 상황이기도 했습니다.
그래서 데이터 사이언스 분야를 심도있게 공부하지 못했고 이해도 많이 부족합니다.
이제서야 머신러닝Kaggle 에 발을 들이게 되었네요.
이번에 Hello Kaggle! 문서를 정리하면서 Kaggle 에 대한 이해도가 높아졌고 Getting Started 에 있는 Competition 부터 시작하려고 합니다.
또한 다른 뛰어난 Kaggler분들의 Notebook 을 보면서 최신기술을 열심히 따라가 보려고 합니다.
데이터 사이언스를 공부하는 모든 분들 화이팅 입니다!