Hello Kaggle!👋
Kaggle의 공식 문서
와 캐글 가이드
라는 책을 읽고 Kaggle
의 정의나 기본적인 사용법들에 대하여 정리해보았습니다.
캐글 가이드
는 동양북스
라는 출판사에서 나온 책입니다. 책에 대해 궁금하신 분을 위해 링크도 첨부해두겠습니다.
- 캐글 가이드: 전 세계 데이터 과학자와 소통하고, 경쟁하고, 성장하기 - 동양북스 (동양북스 공식 홈페이지 - 캐글 가이드)
- kaggle-guide by dybooksIT (동양북스의 공식 깃허브 - 캐글 가이드)
저처럼 이제 막 Kaggle
을 접하는 분들에게 도움이 되었으면 합니다.
수정해야할 부분이 있으면 Issues
에 남겨주시면 감사하겠습니다.
참고로 Hello Kaggle!
문서는 Python 프로그래밍
또는 머신러닝 이론
같은 것은 거의 다루지 않고 Kaggle 사용법
에 집중하였습니다.
프로그래밍이나 데이터 사이언스, 머신러닝 자료를 찾고 계신 분들을 위해 제가 도움을 받았던 링크를 몇 군데 남겨두겠습니다.
- DATA SCIENCE ROADMAP 2020
- datastacktv님의 data engineer roadmap
- My Data Science Online Learning Journey on Croursera
- 머신러닝 딥러닝 독학자료 모음 - teddylee777님의 machine-learning Repository
- Team-Neighborhood의 I want to study Data Science
- 한걸음 한걸음, 데이터 과학자(Data Scientist)가 되는 방법
목차
Kaggle이란 무엇인가요?
인공지능, 머신러닝 붐
이 일어나면서 참가자 수가 계속 증가해왔으며 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 여기서 읽어보시길 바랍니다.
- Jobs를 원래 제공해왔으나 2020년 12월 22일 서비스를 종료했습니다.
Course
Python
,머신러닝
,시각화
등에 대한 실무, 실용적인 강의들을 제공합니다.- 체계적으로 배우지 못했거나 최신 기술이 아닌 강의를 공부했다면 Kaggle의 Course가 꽤 유용할 수 있습니다.
- 또한 모든 강의들은
영어
로 제공되고무료
이며수료증
을 제공합니다.
영어
프로그래밍 언어
- 일반적으로
Python
과R
을 많이 사용합니다.
- 일반적으로
Kaggling을 위해 필요한 지식
-
목적 필요한 지식 Competition 참가 Python, R, 데이터 분석 Competition 주최 데이터 분석, 영어 Kaggler와 토론 영어 Course를 통한 학습 영어
Kaggler가 되기 전에 준비해야 할 것
- 필수:
인터넷
,Python
,R
프로그래밍이 가능한 PC - 권장:
GPU 탑재된 서버
or워크스테이션
, 대용량의HDD
orSSD
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
활용하기
- 머신러닝 기반의 데이터 분석 프로그램을 개발할 때 가장 먼저 해야하는 것은
Dataset
을 준비하는 것입니다. - 학술 목적으로 공개되었거나 Kaggler가 만들어 공개한 Dataset는 누구나 사용할 수 있습니다.
- 만약 공개하고 싶지 않은 Dataset이라면
Private
설정을 통해 외부에는 공개하지 않을 수 있습니다. - 한 번이라도 Dataset이나 Notebook을
공개
로 설정하면Apache 2.0 License
가 적용되므로 신중하게 결정해야 합니다.
회사 연수
에 활용하기
- 책에 나온 예시: 신경망 기반 머신러닝 프로그래밍 작성 직원 연수
-
- Kaggle 회원 가입
-
- 직원들은 진행자의 Noteboook을 복사하고 실행할 준비
-
- Notebook의 신경망 모델 수정
-
- 수정한 모델의 실행 결과를 Competition에 제출하고 점수 확인
-
- 만약 Kaggle을 이용하지 않았다면?
-
- 연수용 컴퓨터에 개발 환경 구축
-
- 머신러닝 프로그램(신경망 모델) 예제 배포
-
- 신경망 모델 실행 결과를 점수로 환산하여 평가하는 프로그램 작성
-
- 실행한 모델의 평가 점수 확인
-
- 신경망 모델 수정
-
- 실행 결과에 따라 점수가 달라지는 것을 확인
-
- Kaggle이
개발 환경 구축
,점수 확인
,배포
등의 점에서 훨씬 간편하고 비용이 덜 든다는 것을 알 수 있습니다.
Discussion
활용하기
-
모르는 것이 있으면 메인 홈페이지의
Communities
,Site Forums
, 그리고 Competition마다 있는Discusstion
에 질문할 수 있습니다.
Kaggle Competition?
Competitions Documentation에서 몇 가지 내용을 참조하여 작성했습니다.
Featured
가장 일반적인 Competition인
- 난이도가 있으며 일반적으로 상업적인 목적을 가진 Competition들입니다.
- 대부분의 Kaggler들이 참여하며 지금까지 진행되었던 Competition들의 상금은
$100
부터 많게는$1,500,000
까지도 있습니다.
Research
연구목적의
- 연구적인 주제들을 주로 다루며 일반적으로 상금이나 보상은 주어지지 않습니다.(현재 진행중인 Research Competition들은 모두 상금이 있네요)
- 대신 덜 경쟁적이며 지적 호기심이 많은 Kaggler들과 토론해가며 연구를 할 수 있습니다.
Getting Started
학습용 Competition인
- 여기에 나오는 Competition들은 초보자 대상의 학습용 Competition들입니다.
- 특히
Titanic: Machine Learning from Disaster
,House Prices: Advanced Regression Techniques
,Digit Recognizer
이 3가지 Competition은 머신러닝에 입문한 분들에게 가장 많이 추천되고 도움이 되는 Competition들입니다.
Playground
데이터 사이언티스트, 엔지니어들의
- 주로 데이터 사이언티스트와 엔지니어들이 흥미롭다고 느낄만한 주제들로 Competition이 열립니다.
- Playground라고 해서 난이도가 쉽진 않습니다. 보통 최근에 발표한 학술/기술적 문제나 공공 사회 문제도 다룹니다.
- 주최측에서 상금이나 보상을 제공하는 경우도 있습니다.
Recruitment
취업 기회를 얻을 수 있는
- 기업들이 주최하며 보상은 주로 Job Interview(면접) 기회입니다. Competition이 종료된 시점에 참가자들은 Resume(이력서)를 업로드할 수 있습니다.
Annual Competition
정기적으로 열리는
Analytics
분석한 결과를 효과적으로 설명해야하는 - 이건 Documentation에 설명이 나와있지 않아서 현재 올라와있는 Analytics Competition들을 직접 읽어보고 작성했습니다.
- 각 Competition의 Evaluation과 Submission 형식을 읽어보니 Analytics의 채점 방식은 Notebook을 직접 제출하여 사람이 채점하는 방식으로 보여집니다.
분석한 데이터를 주최자의 요구사항에 맞게 설명해야 합니다. 마치 회사에서 프레젠테이션을 통해 경영진을 설득하는 것과 비슷해보입니다.
Kaggle 시작하기
회원가입
- Kaggle을 시작하기에 앞서 오른쪽 상단의
Register
버튼을 눌러서 회원가입을 먼저 진행해주셔야 합니다.
Courses
둘러보기
Kaggle - 머신러닝이나 데이터 분석 공부가 충분하지 못한 분들은 위에서 소개했던
Courses
에서 필요한 부분을 공부하는 것도 좋은 방법입니다. - 각 과정은 2~8개의 수업으로 구성되어 있고 다양한 실습 예제를 제공합니다.
Kaggle Progression System을 참조해서 작성했습니다.
Contributer
가 되는 법에 대해 설명하기 전에 Kaggle 등급
과 메달
에 대한 설명을 먼저 하겠습니다.
등급
Kaggle -
Kaggle에는 Progression System이 있는데 쉽게 이야기해서
Kaggler 등급
입니다.
이 등급은 데이터 사이언티스트로써 어느정도의 실력을 가졌는지 가늠할 수 있는 좋은 지표입니다.
또한 자신이 얼마나 성장했는지를 직관적으로 보여주기도 합니다. -
Kaggle 등급은 다음과 같이 5단계로 나뉘어지며 각 등급을 달성하기 위한 조건도 제시되어 있습니다.
-
또한 위 사진들에서 볼 수 있듯이 Kaggle 등급은
Competitions
,Datasets
,Notebooks
,Discussion
각 분야 별로 다르게 부여됩니다. -
오른쪽 위 계정 아이콘을 누른 후
My Profile
을 선택해서 프로필 페이지로 넘어갑니다.
그럼 본인의 프로필 정보와 Kaggle 활동 내용 및 등급을 확인할 수 있습니다.
메달
- 간단히 이야기해서 메달은 Kaggler들의 각 분야에서의 활동 성과를 보여줍니다.
Competition
에서 훌륭한 결과를 얻은 Kaggler- 인기가 많은
Notebook
을 작성하고 공유하는 Kaggler - 유용한
Dataset
을 공유하는 Kaggler - 좋은
Comment
를 작성하는 Kaggler
Contributer
등급은 해당하는 조건을 만족하면 되지만Expert
부터는 각 분야에 해당하는 조건에 요구하는 메달을 모아야 합니다.Competitions
의 경우 참가하는 팀 수에 따라 메달의 수여 기준도 다음과 같이 달라집니다.
Datasets
,Notebooks
,Discussion
은 Vote 숫자로 평가합니다. Vote 숫자가 높을 수록 많은 Kaggler들에게 추천을 받았다는 의미입니다.
- 유의해야할 사항은 각 부분의 게시물별로 수여되는 메달의 종류는 하나입니다.
예를 들어서Dataset
에 올린 게시물이 20 Votes를 받았다면 동메달은 없어지고 은메달을 받는 것입니다.
Contributor
되기
Kaggle 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을 하나 고릅니다. -
여기서
Notebooks
를 클릭하고 다른 사람들이 작성한 Notebook들을 구경해봅니다. -
원하는 Notebook을 하나 골라서 열어보면 오른쪽 위에 버튼이 보일 것입니다. 이 버튼을 클릭해서 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 Forums
의Getting Started
에 들어가보는 것을 추천드립니다.)- 글을 잘 읽어보고
댓글
을 작성합니다. 글이 유용하거나 마음에 들었다면Vote
도 눌러줍시다.
Contributor
되기 완료!
6. Kaggle 잠깐!
- 한 가지 내용을 더 추가하겠습니다. 바로 Kaggle Rankings입니다.
Competitions
,Datasets
,Notebooks
,Discussion
네 분야 별로 순위를 확인할 수 있습니다.- 아래 사진은
Competitions
분야의 순위를 보여주고 있습니다. 또한 그 분야에 각 등급별로 몇 명이나 있는지 확인도 가능합니다.
Notebook과 친해지기
Notebook에 대한 간단한 소개는 여기를 다시 읽어주세요!
Notebook
으로 할 수 있는 것은?
- 데이터 분석용 프로그래밍이 주 목적이며 작성된 프로그램은 캐글 서버에서 실행됩니다.
Competition
에 제출하거나Notebook
을Kaggler
들과 공유할 수 있습니다. 공유되는Notebook
중에는 오직 교육 또는 기술을 알려주기위한 목적인 것도 있습니다.코드용 셀
과마크다운 셀
을 활용하여 코드, 코드에 대한 설명(텍스트, 이미지 등)을 작성할 수 있습니다.
마크다운(Markdown) 사용법
마크다운 emoji-cheat-sheet
위 두가지 링크는 제가 처음 마크다운을 사용하면서 참고했고 이모지는 지금도 필요할 때마다 가끔식 보고있습니다.
Notebook
만들고 사용하기
Kaggle Notebook
은Script
와Notebook
, 두 가지 타입을 선택할 수 있습니다.Script
는 일반적으로 사용하는 코드 편집기에 코드를 작성하고 실행하는 방식입니다.Notebook
은Jupyter Notebook
과 비슷한 인터랙티브 개발 환경입니다. 셀을 나누어서 원하는 부분의 코드만 실행할 수 있는 특징이 있습니다.
- 처음
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
Python
의Numpy
와Pandas
라이브러리를 불러온 후, 파일을 가져올 디렉터리를/kaggle/input
으로 지정한 것입니다.
Notebook
에Hello Kaggle!
을 출력해보겠습니다. 아무 코드셀에 커서를 대면+ Code
버튼을 볼 수 있는데 눌러주도록 합니다.- 그러고 나서 다음과 같이 작성해줍니다.
- 왼쪽 상단의 이 재생버튼을 눌러주거나
현재 실행시키고 싶은 코드 셀로 가서Ctrl + Enter
또는Shift + Enter
입력해서 코드를 실행합니다. 그러면 다음과 같이 출력이 될 것입니다.
- 셀에서 볼 수 있는 버튼들의 각 기능들입니다.
Notebook
의 다양한 설정
공개
&비공개
설정하기Notebook
은 다른Kaggler
들에게 공유하기 위해 공개할 수 있습니다. 하지만 본인만 알고싶다거나 팀으로 활동할 때에는비공개
,특정 사용자에게 공유
같은 설정을 할 수 있습니다.- 오른쪽 상단에 있는
Share
버튼을 누르면 공개 또는 비공개를 설정하는 창이 열립니다. Privacy
를Public
으로 설정하면Apache 2.0 License
적용과 함께 공개가 됩니다.Colaborators
에서 사용자를 검색해 공동 작업자로 추가할 수 있습니다.
Settings
설명Language
:Python
과R
중에 사용할 프로그래밍 언어를 설정할 수 있습니다.Environment
:Docker
이미지를 설정할 수 있습니다.Original
은Notebook
을 만들 때 직접 개발 환경을 설정하는 것이고Latest Available
은Kaggle
이 제공하는 최신 개발 환경을 사용하는 옵션입니다.Accelerator
:GPU
또는TPU
를 사용할지 설정할 수 있습니다.GPU/TPU Quota
:GPU
및TPU
사용 시간와 사용량을 보여줍니다.Internet
: 인터넷 연결 여부를 설정할 수 있습니다.
Internet
을On
으로 설정하면 특정 패키지를 설치할 수 있습니다. 또한 구글 계정을 이용해GCP (Google Cloud Platform)
의BigQuery
,Cloud Storage
,AutoML
서비스를 사용할 수 있습니다.
Notebook
에서 Data
불러오는 법
Kaggle Notebook
은Competition Data
뿐만 아니라 공유되고 있는 다양한Dataset
을 이용할 수 있습니다.
이런 경우에는 별도의 파일을Notebook
에서 사용할 수 있도록 설정해주어야 합니다.
-
- 기존의
Notebook
에 추가하는 방법
- 기존의
-
- 직접 업로드하는 방법
-
- 다른
Notebook
의 출력 데이터를 사용하는 방법
- ii의 방법을 따라하면 창이 하나 나타나는데 거기서
Kernel Ouput Files
탭을 클릭하면 다른Notebook
의 출력 데이터를 사용할 수 있습니다.
- 다른
Notebook
에서 외부 패키지 사용하기
- 또한 다음 두 가지 예시처럼 코드 셀에서 직접
pip
를 사용할 수도 있습니다.!pip install package_name
import os os.system('pip install package_name')
Notebook
에서 Dataset
소스 코드 사용하기
- 만약
hello_kaggle
이라는 패키지를 포함한example dataset
을Notebook
에 추가하면 ../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
: 제출용 데이터 예입니다.
-
Competition
의Data
메뉴를 보면 각 파일이 어떤 데이터가 담겨 있는지 확인할 수 있습니다.
예시로Titanic - Machine Learning from Disaster
를 보겠습니다.
위 사진에서 Data 메뉴를 클릭하면 다음과 같이 Overview를 읽어볼 수 있고
더 아래로 내려가보면 다음과 같이 각 파일을 선택해 데이터를 확인해볼 수 있으며 다운로드도 가능합니다.
-
위 파일들을 이용해서 모델을 작성 및 제출할 csv 파일을 생성했다고 가정하고 제출하는 방법을 다루어보겠습니다.
(4-competition에-참가하기에서도 같은 내용이 설명되어 있습니다.)Notebook
화면의 오른쪽 상단에 있는Save Version
을 클릭합니다. (만약 코드를 실행하지 않은 상태라면Save & Run All (Commit)
을 클릭하면 됩니다.Save & Run All (Commit)
에서Commit
은 현재 제가 문서를 작성하고 있는Github
의Git 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
의 오른쪽 상단에 위치한 버튼을 눌러서 복사하면됩니다.
병합 Notebook
Merge
,Blending
,Stacking
,Ensemble
등의 단어가Notebook
제목에 있다면병합 Notebook
이라고 합니다.- 이름에서 알 수 있듯이 여러
Notebook
을 합친Notebook
을 뜻합니다. - 예시:
Notebook
등장 순서 정리와 결론
지금까지 나온
- 위와 같은 순서로
Competition
이 진행된다고 했을 때 무작정 우승자의Notebook
을 보는 것보단 그 과정을 이해할 수 있도록 다양한Notebook
을 공부해보는 것이 좋을 것이라 생각이됩니다. - 또한
Competition
은 기본적으로 경쟁을 하는 것이므로 공개된Notebook
들은 다른Kaggler
들이 알아도 본인에게 큰 타격이 없다는 뜻입니다.
실제로 입상한 분들의Notebook
을 보면 당시 최신 기술을 사용하거나 공개했던Notebook
과는 다른 솔루션을 사용한 경우도 종종 보입니다.
Competitions의 규칙
Kaggle
의Competitions
는 간혹 별도의 규칙이 있는 경우가 있습니다. 그 이유는Competitions
의 주최가 보통 특정 회사로부터 이루어지기 때문인데요, 그 회사가 원하는 결과를 얻기 위해 특별한 규칙이 생기곤 합니다.
규칙
들을 봐야하나요?
어떤 -
Rules
:Competition
에서 입상하기 위해선 우선 그Competition
의 규칙을 잘 알고 있어야 합니다. 각Competition
의Rules
메뉴를 확인하면 됩니다.
-
Evaluation
:Overview
의Evaluation
페이지에서평가 함수
를 살펴보고 어떤 평가 방식이 적용되는지를 확인해야 합니다. 보통 통계학 기반의 함수가 사용됩니다.
-
1인 점수 확인 횟수
: 데이터를 하나씩 변경하면서 결과 파일을 자주 제출하여 점수를 자주 확인할 수 있다면 의미있는 성과를 거두지 못하겠죠, 그래서 보통 점수 확인 횟수에 제한이 있습니다.
-
Notebook Only Competition
:Kaggle Notebook
만 사용해서 결과를 제출해야 합니다.
Kaggle Notebook
만 사용하게 될 경우Kaggler
들이Notebook
을 공개할 확률이 높아지며 모든 참가자는 공개된Notebook
을 볼 수 있으므로 좋은 아이디어를 쉽게 발견할 수 있습니다.
또한 모든 참가자의 컴퓨터 연산 자원이 같아지기 때문에 개인 워크스테이션을 쓰는 사람과 그렇지 않은 사람 사이의 불평등을 해소할 수 있습니다.
Kaggle에서 기술의 흐름을 살펴보자
Competition
에서 살펴보기
종료된 Kaggle
의 특징이 하나 있는데 바로 오래전에 종료된Competition
의Discussion
과Notebook
을 그대로 남긴다는 것입니다.
그래서 이것들을 잘 살펴보면 당시 어떤 기술이 어떤 방식으로 어디에 적용되었는지 확인할 수 있습니다.- 예시
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
를 사용할 때 스토리지나 서버는 필요하지 않은 것처럼Kaggle
을Dataset
과Notebook
을 간편하게 저장하는 장소로 활용할 수 있습니다.(무료!)- 또한
Notebook
에Dataset
을 바로 연결하여 사용할 수 있다는 장점도 있습니다. - 공개
Dataset
하나당 최대 20GB를 사용할 수 있고 비공개의 경우 전체 최대 20GB를 사용 가능하다는 용량 제한이 있습니다.
Kaggle API
Kaggle API
는 다양한 개발 환경에서Kaggle
의 여러가지 기능을 사용할 수 있는 API 입니다.Python 3
으로 구현되었으며 터미널 환경에 커맨드를 입력하는 방식입니다.
Kaggle API
설치하기
- 1.우선
pip install kaggle
명령어로Kaggle API
를 설치해줍니다. - 2.그리고 본인 프로필에 들어가서 이렇게 생긴 버튼을 클릭후
Accounts
를 누릅니다. - 3.
여기서Create New API Token
을 눌러서json
파일을 다운로드합니다. -
- 방금 다운로드한
json
파일을 사용자의 홈 디렉터리에.kaggle/kaggle.json
으로 저장하면Kaggle API
를 사용할 준비가 완료되었습니다.
- 방금 다운로드한
Kaggle API
사용하기
- 사용자 PC의 터미널을 열고 명령을 실행할 수 있습니다.
kaggle competitions list
명령을 실행하면 현재 진행중인Competition
들을 확인할 수 있습니다.
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
을 보면서 최신기술을 열심히 따라가 보려고 합니다.
데이터 사이언스를 공부하는 모든 분들 화이팅
입니다!