├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Steve Kwon 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hello Kaggle!:wave: 2 | 3 | `Kaggle의 공식 문서`와 `캐글 가이드`라는 책을 읽고 `Kaggle`의 정의나 기본적인 사용법들에 대하여 정리해보았습니다.
4 | 5 | `캐글 가이드`는 `동양북스`라는 출판사에서 나온 책입니다. 책에 대해 궁금하신 분을 위해 링크도 첨부해두겠습니다.
6 | - [캐글 가이드: 전 세계 데이터 과학자와 소통하고, 경쟁하고, 성장하기 - 동양북스](https://www.dongyangbooks.com/book/book_view.asp?menu_1=general&menu_2=general%5Fit&goods_code=2656) (동양북스 공식 홈페이지 - 캐글 가이드) 7 | - [kaggle-guide by dybooksIT](https://github.com/dybooksIT/kaggle-guide) (동양북스의 공식 깃허브 - 캐글 가이드) 8 | 9 | 저처럼 이제 막 `Kaggle`을 접하는 분들에게 도움이 되었으면 합니다.
10 | 수정해야할 부분이 있으면 `Issues`에 남겨주시면 감사하겠습니다.
11 | 12 | 참고로 `Hello Kaggle!` 문서는 `Python 프로그래밍` 또는 `머신러닝 이론` 같은 것은 거의 다루지 않고 `Kaggle 사용법`에 집중하였습니다.
13 | 프로그래밍이나 데이터 사이언스, 머신러닝 자료를 찾고 계신 분들을 위해 제가 도움을 받았던 링크를 몇 군데 남겨두겠습니다.
14 | - [DATA SCIENCE ROADMAP 2020](https://medium.com/@ArtisOne/data-science-roadmap-2020-b256fb948404) 15 | - [datastacktv님의 data engineer roadmap](https://github.com/datastacktv/data-engineer-roadmap) 16 | - [My Data Science Online Learning Journey on Croursera](https://www.kdnuggets.com/2020/11/data-science-online-learning-journey-coursera.html) 17 | - [머신러닝 딥러닝 독학자료 모음 - teddylee777님의 machine-learning Repository](https://github.com/teddylee777/machine-learning) 18 | - [Team-Neighborhood의 I want to study Data Science](https://github.com/Team-Neighborhood/I-want-to-study-Data-Science) 19 | - [한걸음 한걸음, 데이터 과학자(Data Scientist)가 되는 방법](https://theorydb.github.io/dev/2020/04/12/dev-competition-how-to-become-data-scientist/) 20 |
21 | 22 | ## 목차 23 | 1. [Kaggle이란 무엇인가요?](#kaggle이란-무엇인가요) 24 | - [Kaggler? Kaggling?](#kaggler-kaggling) 25 | - [Competition외에 서비스나 특징들](#competition외에-서비스나-특징들) 26 | - [Kaggling을 위해 필요한 지식](#kaggling을-위해-필요한-지식) 27 | - [Kaggler가 되기 전에 준비해야 할 것](#kaggler가-되기-전에-준비해야-할-것) 28 |
29 | 30 | 2. [Kaggle은 어떻게 활용되나요?](#kaggle은-어떻게-활용되나요) 31 | - [데이터 분석을 위한 인프라로 활용하기](#데이터-분석을-위한-인프라로-활용하기) 32 | - [Notebook 활용하기](#notebook-활용하기) 33 | - [Dataset 활용하기](#dataset-활용하기) 34 | - [회사 연수에 활용하기](#회사-연수에-활용하기) 35 | - [Discussion 활용하기](#discussion-활용하기) 36 |
37 | 38 | 3. [Kaggle Competition?](#kaggle-competition) 39 | - [가장 일반적인 Competition인 Featured](#가장-일반적인-competition인-featured) 40 | - [연구목적의 Research](#연구목적의-research) 41 | - [학습용 Competition인 Getting Started](#학습용-competition인-getting-started) 42 | - [데이터 사이언티스트, 엔지어들의 Playground](#데이터-사이언티스트-엔지니어들의-playground) 43 | - [취업 기회를 얻을 수 있는 Recruitment](#취업-기회를-얻을-수-있는-recruitment) 44 | - [정기적으로 열리는 Annual Competition](#정기적으로-열리는-annual-competition) 45 | - [분석한 결과를 효과적으로 설명해야하는 Analytics](#분석한-결과를-효과적으로-설명해야하는-analytics) 46 |
47 | 48 | 4. [Kaggle 시작하기](#kaggle-시작하기) 49 | - [회원가입](#회원가입) 50 | - [Kaggle Courses 둘러보기](#kaggle-courses-둘러보기) 51 | - [Kaggle 등급](#kaggle-등급) 52 | - [메달](#메달) 53 | - [Kaggle Contributor 되기](#kaggle-contributor-되기) 54 | - [Kaggle Rankings](#잠깐) 55 |
56 | 57 | 5. [Notebook에 대하여](#notebook과-친해지기) 58 | - [Notebook 소개](#notebook에-대한-간단한-소개는-여기를-다시-읽어주세요) 59 | - [Notebook으로 할 수 있는 것은?](#notebook으로-할-수-있는-것은) 60 | - [Notebook 만들고 사용하기](#notebook-만들고-사용하기) 61 | - [Notebook의 다양한 설정](#notebook의-다양한-설정) 62 | - [Notebook에서 Data 불러오는 법](#notebook에서-data-불러오는-법) 63 | - [Notebook에서 외부 패키지 사용하기](#notebook에서-외부-패키지-사용하기) 64 | - [Notebook에서 Dataset 소스 코드 사용하기](#notebook에서-dataset-소스-코드-사용하기) 65 |
66 | 67 | 6. [Competitions와 Notebooks](#competitions와-notebooks) 68 | - [Notebook은 데이터 분석 Competition말고 어디에 사용될 수 있나요?](#notebook은-데이터-분석-competition-말고-어디에-사용될-수-있나요) 69 | - [Competition Notebook에서 사용할 Data File 다루는 법](#competition-notebook에서-사용할-data-file-다루는-법) 70 |
71 | 72 | 7. [Competitions의 진행 흐름](#competitions의-진행-흐름) 73 | - [범용 알고리즘을 구현한 Baseline](#범용-알고리즘을-구현한-baseline) 74 | - [데이터 분석 Notebook](#데이터-분석-notebook) 75 | - [Notebook 포크하기](#notebook-포크하기) 76 | - [병합 Notebook](#병합-notebook) 77 | - [지금까지 나온 Notebook 등장 순서 정리와 결론](#지금까지-나온-notebook-등장-순서-정리와-결론) 78 |
79 | 80 | 8. [Competitions의 규칙](#competitions의-규칙) 81 | - [어떤 규칙들을 봐야하나요?](#어떤-규칙들을-봐야하나요) 82 |
83 | 84 | 9. [Kaggle에서 기술의 흐름을 살펴보자](#kaggle에서-기술의-흐름을-살펴보자) 85 | - [종료된 Competition에서 살펴보기](#종료된-competition에서-살펴보기) 86 | - [입상한 솔루션 한 번에 살펴보기](#입상한-솔루션-한-번에-살펴보기) 87 |
88 | 89 | 10. [Kaggle Dataset과 API를 활용해보자](#kaggle-dataset과-api를-활용해보자) 90 | - [공개 Dataset 활용하기](#공개-dataset-활용하기) 91 | - [Data Repository(데이터 저장소)로 활용하기](#data-repository데이터-저장소로-활용하기) 92 | - [Kaggle API](#kaggle-api) 93 | - [Kaggle API 설치하기](#kaggle-api-설치하기) 94 | - [Kaggle API 사용하기](#kaggle-api-사용하기) 95 |
96 | 97 | 11. [마무리 인사](#마무리-인사) 98 |
99 | 100 | *** 101 | 102 |
103 | 104 | ## Kaggle이란 무엇인가요? 105 | - __`Kaggle`__ 은 데이터 분석 경진 대회를 주최하는 플랫폼입니다. 106 | - 경진대회는 회사의 `연구 과제, 주요 서비스`를 위해 분석이 필요한 데이터를 제공해서 주최하는게 일반적입니다. 107 | ![1](https://user-images.githubusercontent.com/61633137/103594874-3c684d80-4f3d-11eb-9300-c33588266c63.png) 108 |
109 | 110 | - __`인공지능, 머신러닝 붐`__ 이 일어나면서 참가자 수가 계속 증가해왔으며 2017년 `구글`의 모회사 __'Alphabet'__ 에 인수되기도 하였습니다. 111 | - Alphabet의 인수 이후 Kaggle은 단순한 플랫폼이 아닌 데이터 사이언티스트, 엔지니어들에게 매우 중요한 사이트가 되었습니다. 112 |
113 | 114 | ### `Kaggler`? `Kaggling`? 115 | - 마치 구글에서 검색하는 것을 __`Googling`__ 이라고 하는 것 처럼
116 | Kaggle의 사용자는 __`Kaggler`__, Kaggle에서 활동하거나 Competition에 참가하는 것은 __`Kaggling`__ 이라고 합니다. 117 |
118 | 119 | ### Competition외에 서비스나 특징들 120 | - __`Jobs`__ 121 | - Jobs를 원래 제공해왔으나 2020년 12월 22일 서비스를 종료했습니다.
122 | 간단하게 요약하자면 이용자 수가 적어서라네요.
123 | 자세한 내용은 https://www.kaggle.com/jobs-board-closed 여기서 읽어보시길 바랍니다. 124 |
125 | 126 | - __[`Course`](https://www.kaggle.com/learn/overview)__ 127 | ![image](https://user-images.githubusercontent.com/61633137/103596261-e0072d00-4f40-11eb-9e50-2315e734d267.png) 128 | - `Python`, `머신러닝`, `시각화` 등에 대한 실무, 실용적인 강의들을 제공합니다. 129 | - 체계적으로 배우지 못했거나 최신 기술이 아닌 강의를 공부했다면 Kaggle의 Course가 꽤 유용할 수 있습니다. 130 | - 또한 모든 강의들은 `영어`로 제공되고 `무료`이며 `수료증`을 제공합니다. 131 |
132 | 133 | - __`영어`__ 134 | - 전 세계의 데이터 사이언티스트들이 모이므로 기본적으로 `영어`를 사용합니다. 135 | - `Competition의 공지사항`, `데이터 세트(Dataset)`, `토론(Discussion)`도 영어로 이루어집니다. (영어 공부 필수!! 또는 `파파고..`)
136 | 아래는 Discussion과 Site Forum 사진입니다. 137 | ![image](https://user-images.githubusercontent.com/61633137/103596175-a59d9000-4f40-11eb-9e8c-90fc24e51347.png) 138 | - 실제로 Competition 입상자들의 프로필을 살펴보면 `미국`, `러시아`, `중국`, `인도`, `한국` 등 다양합니다. 139 |
140 | 141 | - __`프로그래밍 언어`__ 142 | - 일반적으로 __`Python`__ 과 __`R`__ 을 많이 사용합니다. 143 |
144 | 145 | ### Kaggling을 위해 필요한 지식 146 | - |목적|필요한 지식| 147 | |------|-----| 148 | |Competition 참가|Python, R, 데이터 분석| 149 | |Competition 주최|데이터 분석, 영어| 150 | |Kaggler와 토론|영어| 151 | |Course를 통한 학습|영어| 152 |
153 | 154 | ### Kaggler가 되기 전에 준비해야 할 것 155 | - 필수: `인터넷`, `Python`, `R` 프로그래밍이 가능한 PC 156 | - 권장: `GPU 탑재된 서버` or `워크스테이션`, 대용량의 `HDD` or `SSD` 157 |
158 | 159 | *** 160 | 161 |
162 | 163 | ## Kaggle은 어떻게 활용되나요? 164 | ### 데이터 분석을 위한 `인프라`로 활용하기 165 | - Kaggle은 `웹 기반`으로 데이터 분석에 필요한 도구를 제공해줍니다.(Notebook) 166 | - 다양한 Kaggler들과 커뮤니티를 이루고 있어 경쟁과 협력이 가능합니다. 167 |
168 | 169 | ### `Notebook` 활용하기 170 | - Kaggle에서 제공하는 __`데이터 분석용 프로그래밍 환경`__ 입니다. 171 | - SaaS 환경으로 Notebook에 작성한 코드를 서버에서 실행하는 방식입니다. 172 | - 프로그래밍 환경을 제공해주므로 별도의 개발 환경 구축이 필요없습니다.(Python 설치, Anaconda 설치 등등 필요 X) 173 | - __`Jupyter Notebook`__ 을 참고해 만들어져 비슷합니다. 174 | - 기본적으로 `4Core CPU + 16GB RAM`을 제공합니다. `GPU 서버`는 `2Core CPU + GPU + 13GB RAM`을 제공합니다.
175 | __`사용 횟수 제한없이 무료로 제공`__ 해주며 `GPU는 1주일에 30시간` 동안 사용할 수 있습니다. 176 |
177 | 178 | ### `Dataset` 활용하기 179 | ![image](https://user-images.githubusercontent.com/61633137/103597920-b18b5100-4f44-11eb-8f02-df689352a762.png) 180 | - 머신러닝 기반의 데이터 분석 프로그램을 개발할 때 가장 먼저 해야하는 것은 __`Dataset`__ 을 준비하는 것입니다. 181 | - 학술 목적으로 공개되었거나 Kaggler가 만들어 공개한 Dataset는 누구나 사용할 수 있습니다. 182 | - 만약 공개하고 싶지 않은 Dataset이라면 __`Private`__ 설정을 통해 외부에는 공개하지 않을 수 있습니다. 183 | - 한 번이라도 Dataset이나 Notebook을 `공개`로 설정하면 `Apache 2.0 License`가 적용되므로 신중하게 결정해야 합니다. 184 |
185 | 186 | ### `회사 연수`에 활용하기 187 | - 책에 나온 예시: 신경망 기반 머신러닝 프로그래밍 작성 직원 연수 188 | - 1. Kaggle 회원 가입 189 | - 2. 직원들은 진행자의 Noteboook을 복사하고 실행할 준비 190 | - 3. Notebook의 신경망 모델 수정 191 | - 4. 수정한 모델의 실행 결과를 Competition에 제출하고 점수 확인 192 | - 만약 Kaggle을 이용하지 않았다면? 193 | - 1. 연수용 컴퓨터에 개발 환경 구축 194 | - 2. 머신러닝 프로그램(신경망 모델) 예제 배포 195 | - 3. 신경망 모델 실행 결과를 점수로 환산하여 평가하는 프로그램 작성 196 | - 4. 실행한 모델의 평가 점수 확인 197 | - 5. 신경망 모델 수정 198 | - 6. 실행 결과에 따라 점수가 달라지는 것을 확인 199 |
200 | 201 | - Kaggle이 `개발 환경 구축`, `점수 확인`, `배포` 등의 점에서 훨씬 간편하고 비용이 덜 든다는 것을 알 수 있습니다. 202 |
203 | 204 | ### `Discussion` 활용하기 205 | - 모르는 것이 있으면 메인 홈페이지의 __`Communities`__ , __`Site Forums`__ , 그리고 Competition마다 있는 __`Discusstion`__ 에 질문할 수 있습니다.
206 | - `Communities` 207 | ![image](https://user-images.githubusercontent.com/61633137/103608822-9548dd80-4f5f-11eb-8a55-626a9a0015bb.png) 208 | 209 | - `Site Forums` 210 | ![image](https://user-images.githubusercontent.com/61633137/103608932-f2dd2a00-4f5f-11eb-8d5d-6f1761e61a1f.png) 211 |
212 | 213 | *** 214 | 215 |
216 | 217 | ## Kaggle Competition? 218 | [Competitions Documentation](https://www.kaggle.com/docs/competitions)에서 몇 가지 내용을 참조하여 작성했습니다. 219 |
220 | 221 | ### 가장 일반적인 Competition인 `Featured` 222 | ![image](https://user-images.githubusercontent.com/61633137/103611173-0dfe6880-4f65-11eb-8141-aac631077c34.png) 223 | - 난이도가 있으며 일반적으로 상업적인 목적을 가진 Competition들입니다. 224 | - 대부분의 Kaggler들이 참여하며 지금까지 진행되었던 Competition들의 상금은 `$100`부터 많게는 `$1,500,000`까지도 있습니다. 225 |
226 | 227 | ### 연구목적의 `Research` 228 | ![image](https://user-images.githubusercontent.com/61633137/103611678-1d31e600-4f66-11eb-9e41-c972d26d3440.png) 229 | - 연구적인 주제들을 주로 다루며 일반적으로 상금이나 보상은 주어지지 않습니다.(현재 진행중인 Research Competition들은 모두 상금이 있네요) 230 | - 대신 덜 경쟁적이며 지적 호기심이 많은 Kaggler들과 토론해가며 연구를 할 수 있습니다. 231 |
232 | 233 | ### 학습용 Competition인 `Getting Started` 234 | ![image](https://user-images.githubusercontent.com/61633137/103609060-510a0d00-4f60-11eb-98e6-b42e4d2a8336.png) 235 | - 여기에 나오는 Competition들은 초보자 대상의 학습용 Competition들입니다. 236 | - 특히 __`Titanic: Machine Learning from Disaster`__ , __`House Prices: Advanced Regression Techniques`__ , __`Digit Recognizer`__ 이 3가지 Competition은 머신러닝에 입문한 분들에게 가장 많이 추천되고 도움이 되는 Competition들입니다. 237 |
238 | 239 | ### 데이터 사이언티스트, 엔지니어들의 `Playground` 240 | ![image](https://user-images.githubusercontent.com/61633137/103609928-45b7e100-4f62-11eb-992a-14a98dc190b3.png) 241 | - 주로 데이터 사이언티스트와 엔지니어들이 흥미롭다고 느낄만한 주제들로 Competition이 열립니다. 242 | - Playground라고 해서 난이도가 쉽진 않습니다. 보통 최근에 발표한 학술/기술적 문제나 공공 사회 문제도 다룹니다. 243 | - 주최측에서 상금이나 보상을 제공하는 경우도 있습니다. 244 |
245 | 246 | ### 취업 기회를 얻을 수 있는 `Recruitment` 247 | ![image](https://user-images.githubusercontent.com/61633137/103611946-bc56dd80-4f66-11eb-8408-576df10506c3.png) 248 | - 기업들이 주최하며 보상은 주로 Job Interview(면접) 기회입니다. Competition이 종료된 시점에 참가자들은 Resume(이력서)를 업로드할 수 있습니다. 249 |
250 | 251 | ### 정기적으로 열리는 `Annual Competition` 252 | - Kaggle에는 정기적으로 열리는 Competition들이 몇 가지 있습니다. 현재 Kaggle의 에서 다음과 같은 내용을 확인할 수 있습니다. 253 | ![image](https://user-images.githubusercontent.com/61633137/103610665-04283580-4f64-11eb-9e75-b4f37e84c2bf.png) 254 |
255 | 256 | ### 분석한 결과를 효과적으로 설명해야하는 `Analytics` 257 | - 이건 Documentation에 설명이 나와있지 않아서 현재 올라와있는 Analytics Competition들을 직접 읽어보고 작성했습니다. 258 | - 각 Competition의 Evaluation과 Submission 형식을 읽어보니 Analytics의 채점 방식은 Notebook을 직접 제출하여 사람이 채점하는 방식으로 보여집니다.
259 | 분석한 데이터를 주최자의 요구사항에 맞게 설명해야 합니다. 마치 회사에서 프레젠테이션을 통해 경영진을 설득하는 것과 비슷해보입니다. 260 |
261 | 262 | *** 263 | 264 |
265 | 266 | ## Kaggle 시작하기 267 | ### `회원가입` 268 | - Kaggle을 시작하기에 앞서 오른쪽 상단의 `Register` 버튼을 눌러서 회원가입을 먼저 진행해주셔야 합니다. 269 |
270 | 271 | ### Kaggle `Courses` 둘러보기 272 | - 머신러닝이나 데이터 분석 공부가 충분하지 못한 분들은 위에서 소개했던 [`Courses`](https://www.kaggle.com/learn/overview)에서 필요한 부분을 공부하는 것도 좋은 방법입니다. 273 | - 각 과정은 2~8개의 수업으로 구성되어 있고 다양한 실습 예제를 제공합니다. 274 |
275 | 276 | [Kaggle Progression System](https://www.kaggle.com/progression)을 참조해서 작성했습니다.
277 | `Contributer`가 되는 법에 대해 설명하기 전에 `Kaggle 등급`과 `메달`에 대한 설명을 먼저 하겠습니다. 278 | 279 | ### Kaggle `등급` 280 | - Kaggle에는 Progression System이 있는데 쉽게 이야기해서 `Kaggler 등급`입니다.
281 | 이 등급은 데이터 사이언티스트로써 어느정도의 실력을 가졌는지 가늠할 수 있는 좋은 지표입니다.
282 | 또한 자신이 얼마나 성장했는지를 직관적으로 보여주기도 합니다. 283 | - Kaggle 등급은 다음과 같이 5단계로 나뉘어지며 각 등급을 달성하기 위한 조건도 제시되어 있습니다. 284 | - `Novice`
285 | ![image](https://user-images.githubusercontent.com/61633137/103615154-689bc280-4f6d-11eb-9893-a3336cd8c00b.png) 286 |
287 | 288 | - `Contributor`
289 | ![image](https://user-images.githubusercontent.com/61633137/103615214-85d09100-4f6d-11eb-8ed2-60415fdcc0ad.png) 290 |
291 | 292 | - `Expert`
293 | ![image](https://user-images.githubusercontent.com/61633137/103615347-c9c39600-4f6d-11eb-8dc6-6525f5bf35a6.png) 294 |
295 | 296 | - `Master`
297 | ![image](https://user-images.githubusercontent.com/61633137/103615383-d9db7580-4f6d-11eb-8705-c983f7a70e1e.png) 298 |
299 | 300 | - `Grandmaster`
301 | ![image](https://user-images.githubusercontent.com/61633137/103615428-e9f35500-4f6d-11eb-839c-c1af9c1494ed.png) 302 |
303 | 304 | - 또한 위 사진들에서 볼 수 있듯이 Kaggle 등급은 `Competitions`, `Datasets`, `Notebooks`, `Discussion` 각 분야 별로 다르게 부여됩니다. 305 | - 오른쪽 위 계정 아이콘을 누른 후 `My Profile`을 선택해서 프로필 페이지로 넘어갑니다.
306 | 그럼 본인의 프로필 정보와 Kaggle 활동 내용 및 등급을 확인할 수 있습니다.
307 |
308 | 309 | ### `메달` 310 | - 간단히 이야기해서 메달은 Kaggler들의 각 분야에서의 활동 성과를 보여줍니다. 311 | - `Competition`에서 훌륭한 결과를 얻은 Kaggler 312 | - 인기가 많은 `Notebook`을 작성하고 공유하는 Kaggler 313 | - 유용한 `Dataset`을 공유하는 Kaggler 314 | - 좋은 `Comment`를 작성하는 Kaggler 315 |
316 | 317 | - `Contributer` 등급은 해당하는 조건을 만족하면 되지만 `Expert` 부터는 각 분야에 해당하는 조건에 요구하는 메달을 모아야 합니다. 318 | - `Competitions`의 경우 참가하는 팀 수에 따라 메달의 수여 기준도 다음과 같이 달라집니다.
319 | ![image](https://user-images.githubusercontent.com/61633137/103616627-1d36e380-4f70-11eb-8d7b-c026270fab11.png) 320 |
321 | 322 | - `Datasets`, `Notebooks`, `Discussion`은 Vote 숫자로 평가합니다. Vote 숫자가 높을 수록 많은 Kaggler들에게 추천을 받았다는 의미입니다.
323 | ![image](https://user-images.githubusercontent.com/61633137/103617270-52900100-4f71-11eb-9760-7e520ffddd4b.png) 324 | - 유의해야할 사항은 각 부분의 게시물별로 수여되는 메달의 종류는 하나입니다.
325 | 예를 들어서 `Dataset`에 올린 게시물이 20 Votes를 받았다면 동메달은 없어지고 은메달을 받는 것입니다. 326 |
327 | 328 | ### Kaggle `Contributor` 되기 329 | #### 1.사용자 프로필 정보 추가하기 330 | - 본인의 프로필에 들어가서 Edit Profile을 클릭하고 다음 내용을 입력합니다. 331 | - `자기소개 (bio)` 332 | - `직업 (Occupation)` 333 | - `소속 조직 (Organization)` 334 | - `거주 도시 (City)` 335 | - 그 외에 `프로필 이미지`, `SNS` 등은 자유롭게 설정하시면 됩니다. 336 |
337 | 338 | #### 2. SMS 인증하기 (SMS verify your account) 339 | - 프로필 화면에서 `Phone Verification`을 클릭합니다. 340 | - `국가코드 (Country Code)`, `전화번호 (Phone Number)`, `로봇이 아닙니다` 박스에 체크를 한 후 `Send code`를 클릭합니다. 341 | - 전송된 코드를 입력하고 `Verify`를 클릭하면 인증이 완료됩니다. 342 |
343 | 344 | #### 3. Script 실행하기 (Run 1 script) 345 | - `Course`에서 강의를 진행하거나 직접 `Notebook`을 생성하여 아무 코드나 실행해보면 달성할 수 있습니다. 346 | - `4. Competition에 참가하기`에도 실행하는 과정이 있으니 건너뛰어도 괜찮습니다. 347 |
348 | 349 | #### 4. Competition에 참가하기 (Make 1 competition or task submission) 350 | - `Getting Started` 카테고리에 있는 Competition을 하나 고릅니다. 351 | - 들어가보면 화면 중간 정도에 아래와 같은 메뉴를 보실 수 있습니다.
352 | ![image](https://user-images.githubusercontent.com/61633137/103619281-cbdd2300-4f74-11eb-8c00-840110e018ce.png) 353 | - 여기서 `Notebooks`를 클릭하고 다른 사람들이 작성한 Notebook들을 구경해봅니다. 354 |
355 | 356 | - 원하는 Notebook을 하나 골라서 열어보면 오른쪽 위에 ![image](https://user-images.githubusercontent.com/61633137/103619428-12cb1880-4f75-11eb-9ec9-435c40a13160.png) 357 | 버튼이 보일 것입니다. 이 버튼을 클릭해서 Notebook을 복사합니다. 358 |
359 | 360 | - 복사가 완료되면 다시 오른쪽 위에 있는 `Save Version`을 클릭합니다. 361 | - `Version Name`: 원하는 이름을 입력할 수 있습니다. 362 | - `Version Type`: `Quick Save` 또는 `Save & Run All (Commit)`, 두 가지 옵션이 있는데 `Quick Save`는 저장만하고 실행은 하지 않으며 `Save & Run All (Commit)`은 실행도 합니다. 363 |
364 | 365 | - 여기서 `Save & Run All (Commit)`을 클릭하고 `Save` 버튼을 누릅니다. 366 |
367 | 368 | - 다시 프로필로 돌아가서 `Notebooks`를 클릭하면 방금 복사한 Notebook을 확인할 수 있습니다.
369 | 이 노트북을 클릭하면 오른쪽 메뉴 중에 `Output`이 있습니다.
370 | `Output`을 누르면 볼 수 있는 `Submission.csv`(Submission 파일의 이름은 다를 수도 있습니다)를 선택하고 오른쪽에 있는 `Submit to Competition`을 클릭합니다. 371 |
372 | 373 | - 이제 `Leaderboard` 메뉴로 화면이 옮겨지고 제출된 파일이 자동으로 채점이 됩니다.
374 | 채점이 끝나면 점수를 확인할 수 있고 `Jump to your position on the leaderboard`를 클릭해 자신의 순위를 확인할 수 있습니다. 375 |
376 | 377 | #### 5. 댓글 달고 다른 사람의 게시물이나 댓글에 Upvote 하기 (Make 1 comment & Cast 1 upvote) 378 | - `Discussion`에서 자신이 원하는 Topic에 들어가서 관심있는 글을 클릭합니다. (`Site Forums`의 `Getting Started`에 들어가보는 것을 추천드립니다.) 379 | - 글을 잘 읽어보고 `댓글`을 작성합니다. 글이 유용하거나 마음에 들었다면 `Vote`도 눌러줍시다. 380 |
381 | 382 | #### 6. Kaggle `Contributor` 되기 완료! 383 | 384 | #### 잠깐! 385 | - 한 가지 내용을 더 추가하겠습니다. 바로 [Kaggle Rankings](https://www.kaggle.com/rankings)입니다. 386 | - `Competitions`, `Datasets`, `Notebooks`, `Discussion` 네 분야 별로 순위를 확인할 수 있습니다. 387 | - 아래 사진은 `Competitions` 분야의 순위를 보여주고 있습니다. 또한 그 분야에 각 등급별로 몇 명이나 있는지 확인도 가능합니다. 388 | ![image](https://user-images.githubusercontent.com/61633137/103715609-6c2e5880-5004-11eb-8970-9965f8089d15.png) 389 |
390 | 391 | *** 392 | 393 |
394 | 395 | ## Notebook과 친해지기 396 | ### [Notebook에 대한 간단한 소개는 여기를 다시 읽어주세요!](#notebook-활용하기) 397 |
398 | 399 | ### `Notebook`으로 할 수 있는 것은? 400 | - 데이터 분석용 프로그래밍이 주 목적이며 작성된 프로그램은 캐글 서버에서 실행됩니다. 401 | - `Competition`에 제출하거나 `Notebook`을 `Kaggler`들과 공유할 수 있습니다. 공유되는 `Notebook`중에는 오직 교육 또는 기술을 알려주기위한 목적인 것도 있습니다. 402 | - `코드용 셀` 과 `마크다운 셀`을 활용하여 코드, 코드에 대한 설명(텍스트, 이미지 등)을 작성할 수 있습니다.
403 | [마크다운(Markdown) 사용법](https://gist.github.com/ihoneymon/652be052a0727ad59601)
404 | [마크다운 emoji-cheat-sheet](https://github.com/ikatyang/emoji-cheat-sheet)
405 | 위 두가지 링크는 제가 처음 마크다운을 사용하면서 참고했고 이모지는 지금도 필요할 때마다 가끔식 보고있습니다. 406 |
407 | 408 | ### `Notebook` 만들고 사용하기 409 | - `Notebook` 메뉴에 들어가서 오른쪽 상단을 보면 ![image](https://user-images.githubusercontent.com/61633137/103716652-f081db00-5006-11eb-9368-e3bbe2795bbc.png) 이런 버튼이 있을텐데 클릭해줍니다. 410 |
411 | 412 | - `Kaggle Notebook`은 `Script`와 `Notebook`, 두 가지 타입을 선택할 수 있습니다. 413 | - `Script`는 일반적으로 사용하는 코드 편집기에 코드를 작성하고 실행하는 방식입니다. 414 | - `Notebook`은 `Jupyter Notebook`과 비슷한 인터랙티브 개발 환경입니다. 셀을 나누어서 원하는 부분의 코드만 실행할 수 있는 특징이 있습니다. 415 |
416 | 417 | - 왼쪽 상단에 `File`을 누르고 `Editor Type`에 커서를 대면 타입을 고를 수 있습니다. 또한 `Language`에서 `Python`과 `R`중에 사용할 언어를 고를 수 있습니다.
418 | ![스크린샷(1)](https://user-images.githubusercontent.com/61633137/103716793-38a0fd80-5007-11eb-854c-f709e9ac911b.png) 419 |
420 | 421 | - 왼쪽 상단에 아래 사진과 같이 생긴 칸을 누르면 이름을 변경할 수 있습니다.
422 | ![image](https://user-images.githubusercontent.com/61633137/103717015-c0870780-5007-11eb-9fb8-13c501956cb2.png) 423 |
424 | 425 | - 처음 `Notebook`을 생성하면 다음과 같은 코드가 보일 것입니다. 426 | ```python 427 | # This Python 3 environment comes with many helpful analytics libraries installed 428 | # It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python 429 | # For example, here's several helpful packages to load 430 | 431 | import numpy as np # linear algebra 432 | import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv) 433 | 434 | # Input data files are available in the read-only "../input/" directory 435 | # For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory 436 | 437 | import os 438 | for dirname, _, filenames in os.walk('/kaggle/input'): 439 | for filename in filenames: 440 | print(os.path.join(dirname, filename)) 441 | 442 | # 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" 443 | # You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session 444 | ``` 445 | 위 코드는 `Python`의 `Numpy`와 `Pandas` 라이브러리를 불러온 후, 파일을 가져올 디렉터리를 `/kaggle/input`으로 지정한 것입니다. 446 |
447 | 448 | - `Notebook`에 `Hello Kaggle!`을 출력해보겠습니다. 아무 코드셀에 커서를 대면 `+ Code` 버튼을 볼 수 있는데 눌러주도록 합니다. 449 | - 그러고 나서 다음과 같이 작성해줍니다.
450 | ![image](https://user-images.githubusercontent.com/61633137/103717568-2c1da480-5009-11eb-94d3-486db9f4b4eb.png) 451 |
452 | 453 | - 왼쪽 상단의 ![image](https://user-images.githubusercontent.com/61633137/103718200-89195a80-5009-11eb-83a9-efa581ca645a.png) 이 재생버튼을 눌러주거나
454 | 현재 실행시키고 싶은 코드 셀로 가서 `Ctrl + Enter` 또는 `Shift + Enter` 입력해서 코드를 실행합니다. 그러면 다음과 같이 출력이 될 것입니다.
455 | ![image](https://user-images.githubusercontent.com/61633137/103717489-f4166180-5008-11eb-88b8-85936bb31044.png) 456 |
457 | 458 | - 셀에서 볼 수 있는 버튼들의 각 기능들입니다.
459 | - ![image](https://user-images.githubusercontent.com/61633137/103721394-e369e980-5010-11eb-8df6-a5f77b67caf3.png) : 셀 위치를 한 칸 앞으로 올립니다.
460 | - ![image](https://user-images.githubusercontent.com/61633137/103721428-f7155000-5010-11eb-86f7-3a0e8ccff5af.png) : 셀 위치를 한 칸 아래로 내립니다.
461 | - ![image](https://user-images.githubusercontent.com/61633137/103721456-085e5c80-5011-11eb-9768-24161e8b6f4e.png) : 해당 셀을 삭제합니다.
462 | - ![image](https://user-images.githubusercontent.com/61633137/103721476-17450f00-5011-11eb-92ba-84e80c437c8d.png)/![image](https://user-images.githubusercontent.com/61633137/103721509-2deb6600-5011-11eb-88ed-979cd05bbb7b.png) : 해당 셀을 숨기거나 나타냅니다.
463 | - ![image](https://user-images.githubusercontent.com/61633137/103721551-48254400-5011-11eb-98ef-66aaa3e6a3c8.png) : 다음과 같은 부가 기능을 제공합니다.
464 | ![image](https://user-images.githubusercontent.com/61633137/103721556-49ef0780-5011-11eb-8abb-45061ffa7de0.png) 465 |
466 | 467 | ### `Notebook`의 다양한 설정 468 | - `공개`&`비공개` 설정하기 469 | - `Notebook`은 다른 `Kaggler`들에게 공유하기 위해 공개할 수 있습니다. 하지만 본인만 알고싶다거나 팀으로 활동할 때에는 `비공개`, `특정 사용자에게 공유`같은 설정을 할 수 있습니다. 470 | - 오른쪽 상단에 있는 `Share` 버튼을 누르면 공개 또는 비공개를 설정하는 창이 열립니다. 471 | - `Privacy`를 `Public`으로 설정하면 `Apache 2.0 License` 적용과 함께 공개가 됩니다. 472 | - `Colaborators`에서 사용자를 검색해 공동 작업자로 추가할 수 있습니다. 473 |
474 | 475 | - `Settings` 설명 476 | - `Language` : `Python`과 `R` 중에 사용할 프로그래밍 언어를 설정할 수 있습니다. 477 | - `Environment` : `Docker` 이미지를 설정할 수 있습니다. `Original`은 `Notebook`을 만들 때 직접 개발 환경을 설정하는 것이고 `Latest Available`은 `Kaggle`이 제공하는 최신 개발 환경을 사용하는 옵션입니다. 478 | - `Accelerator` : `GPU` 또는 `TPU`를 사용할지 설정할 수 있습니다. 479 | - `GPU/TPU Quota` : `GPU` 및 `TPU` 사용 시간와 사용량을 보여줍니다. 480 | - `Internet` : 인터넷 연결 여부를 설정할 수 있습니다.
481 | `Internet`을 `On`으로 설정하면 특정 패키지를 설치할 수 있습니다. 또한 구글 계정을 이용해 `GCP (Google Cloud Platform)`의 `BigQuery`, `Cloud Storage`, `AutoML` 서비스를 사용할 수 있습니다. 482 |
483 | 484 | ### `Notebook`에서 `Data` 불러오는 법 485 | - `Kaggle Notebook`은 `Competition Data` 뿐만 아니라 공유되고 있는 다양한 `Dataset`을 이용할 수 있습니다.
486 | 이런 경우에는 별도의 파일을 `Notebook`에서 사용할 수 있도록 설정해주어야 합니다. 487 |
488 | 489 | - 1. 새로운 `Notebook`을 만들어서 하는 방법 490 | - 자신이 사용하길 원하는 `Dataset`에 가면 ![image](https://user-images.githubusercontent.com/61633137/103732584-086b5600-502b-11eb-9d12-06d4a77914b8.png) 이런 버튼을 볼 수 있는데 `New Notebook`을 누르면 파일이 자동으로 설정됩니다.
491 |
492 | 493 | - 2. 기존의 `Notebook`에 추가하는 방법 494 | - 현재 갖고있는 `Notebook`에 새로운 데이터를 추가하려면 우선 `Notebook`으로 접속합니다.
495 | 그리고 오른쪽 상단에 있는 ![image](https://user-images.githubusercontent.com/61633137/103732714-4d8f8800-502b-11eb-8909-4825d3eabec4.png) `+ Add Data` 버튼을 클릭합니다.
496 | 그러고나면 창이 하나 나타나는데 거기서 원하는 `Dataset`을 검색한 후 `Add`를 누르면 됩니다. 497 |
498 | 499 | - 3. 직접 업로드하는 방법 500 | - `Data` 메뉴에 들어가서 오른쪽 상단을 보면 ![image](https://user-images.githubusercontent.com/61633137/103733211-8b40e080-502c-11eb-8088-69e4bbf28e72.png) `+ New Data` 버튼이 있는데 이것을 클릭합니다.
501 | 그리고 `Enter Dataset Title`에 이름을 입력한 뒤 `Select Files to Upload`를 눌러서 파일을 업로드합니다. (zip이나 tar.gz같은 압축 파일 형식도 가능합니다.)
502 | 마지막으로 `Create`을 눌러서 `Dataset`을 업로드합니다. 이렇게 업로드한 `Dataset`을 i이나 ii의 방식으로 불러와서 사용하면 됩니다. 503 |
504 | 505 | - 4. 다른 `Notebook`의 출력 데이터를 사용하는 방법 506 | - ii의 방법을 따라하면 창이 하나 나타나는데 거기서 `Kernel Ouput Files` 탭을 클릭하면 다른 `Notebook`의 출력 데이터를 사용할 수 있습니다. 507 |
508 | 509 | ### `Notebook`에서 외부 패키지 사용하기 510 | - `pip`로 설치할 수 있는 외부 패키지는 `Notebook`의 하단에 있는 `Console`을 클릭해서 `pip install package_name`과 같이 설치할 수 있습니다.
511 | ![image](https://user-images.githubusercontent.com/61633137/103733887-153d7900-502e-11eb-9660-12bf25592e96.png) 512 |
513 | 514 | - 또한 다음 두 가지 예시처럼 코드 셀에서 직접 `pip`를 사용할 수도 있습니다. 515 | ```python 516 | !pip install package_name 517 | ``` 518 | ```python 519 | import os 520 | os.system('pip install package_name') 521 | ``` 522 |
523 | 524 | ### `Notebook`에서 `Dataset` 소스 코드 사용하기 525 | - 만약 `hello_kaggle` 이라는 패키지를 포함한 `example dataset`을 `Notebook`에 추가하면 ../input/example-dataset/hello_kaggle 디렉터리를 추가하면됩니다.
526 | 추가하는 코드는 다음과 같습니다. 527 | ```python 528 | import sys 529 | sys.path.append("../input/example-dataset/hello_kaggle") 530 | ``` 531 |
532 | 533 | *** 534 | 535 |
536 | 537 | ## Competitions와 Notebooks 538 | ### `Notebook`은 데이터 분석 `Competition` 말고 어디에 사용될 수 있나요? 539 | - 일반적으로 입상이 목표라면 `Competition`이 종료된 후 `Notebook`을 공개하게 됩니다.
540 | 하지만 `Competition`이 진행되고 있을 때에도 `Kaggler`들과 토론을 할 수 있는 환경도 조성되어 있습니다. 541 |
542 | 543 | ### `Competition Notebook`에서 사용할 `Data File` 다루는 법 544 | - `Competition`을 진행할 때 `Notebook`의 오른쪽 상단을 보면 `Data` 탭이 있습니다. 눌러보면 3가지의 파일이 있을 것인데 각 파일에 대한 설명은 다음과 같습니다. 545 | - `train.csv` : 정답 레이블이 있는 학습용 데이터입니다. 546 | - `test.csv` : 정답 레이블이 없는 테스트용 데이터입니다. 547 | - `sample_submission.csv` : 제출용 데이터 예입니다. 548 |
549 | 550 | - `Competition`의 `Data` 메뉴를 보면 각 파일이 어떤 데이터가 담겨 있는지 확인할 수 있습니다.
551 | 예시로 `Titanic - Machine Learning from Disaster`를 보겠습니다.
552 | ![image](https://user-images.githubusercontent.com/61633137/103719565-9e43b880-500c-11eb-95ff-67b5cda88821.png)
553 | 위 사진에서 [Data](https://www.kaggle.com/c/titanic/data?select=gender_submission.csv) 메뉴를 클릭하면 다음과 같이 Overview를 읽어볼 수 있고
554 | ![image](https://user-images.githubusercontent.com/61633137/103719731-00042280-500d-11eb-8638-b0f543c65171.png)
555 | 더 아래로 내려가보면 다음과 같이 각 파일을 선택해 데이터를 확인해볼 수 있으며 다운로드도 가능합니다.
556 | ![image](https://user-images.githubusercontent.com/61633137/103719767-17431000-500d-11eb-9e20-e36dccdadbb4.png)
557 | 558 | - 위 파일들을 이용해서 모델을 작성 및 제출할 csv 파일을 생성했다고 가정하고 제출하는 방법을 다루어보겠습니다.
559 | ([4-competition에-참가하기](#4-competition에-참가하기-make-1-competition-or-task-submission)에서도 같은 내용이 설명되어 있습니다.) 560 | - `Notebook` 화면의 오른쪽 상단에 있는 `Save Version`을 클릭합니다. (만약 코드를 실행하지 않은 상태라면 `Save & Run All (Commit)`을 클릭하면 됩니다. 561 | - `Save & Run All (Commit)`에서 `Commit`은 현재 제가 문서를 작성하고 있는 `Github`의 `Git Commit`과 같은 의미입니다.
562 | 그래서 `Kaggle Notebook`은 이전에 작성했던 소스 코드의 버전을 참조할 수 있습니다. 563 | 564 | - 이제 프로필로 돌아가서 `Notebooks`를 클릭하면 방금 저장한 Notebook을 확인할 수 있습니다.
565 | 이 노트북을 클릭하면 오른쪽 메뉴 중에 `Output`이 있습니다.
566 | `Output`을 누르면 볼 수 있는 `Submission.csv`를 선택하고 오른쪽에 있는 `Submit to Competition`을 클릭합니다. 567 |
568 | 569 | - 이제 `Leaderboard` 메뉴로 화면이 옮겨지고 제출된 파일이 자동으로 채점이 됩니다.
570 | 채점이 끝나면 점수를 확인할 수 있고 `Jump to your position on the leaderboard`를 클릭해 자신의 순위를 확인할 수 있습니다. 571 |
572 | 573 | *** 574 | 575 |
576 | 577 | ## Competitions의 진행 흐름 578 | - 여기서 나오는 종류나 순서는 `캐글 가이드` 저자 사카모토 도시유키님의 개인 생각입니다. 579 | 580 | ### 범용 알고리즘을 구현한 `Baseline` 581 | - 먼저 데이터 분석을 시작하면 범용 알고리즘을 통해 출력 데이터를 얻습니다. 582 | - 이후 본격적으로 머신러닝 모델을 개발하고 범용 알고리즘을 통해 얻은 출력 데이터와 결과를 비교합니다. 583 | - 비교한 결과에서 범용 알고리즘보다 결과가 나쁘게 나왔다면 모델에 문제점이 있다고 추측할 수 있습니다. 584 |
585 | 586 | ### 데이터 분석 `Notebook` 587 | - `Competition`의 데이터를 분석하고 `시각화`를 해서 보여주는 `Notebook`을 뜻합니다. 588 | - 제출할 데이터를 만들지 않고 분석한 데이터 사이의 상관관계, 규칙, 구조 등을 파악하는데 집중합니다. 또한 `종속 변수`와 잘 맞는 `독립 변수`도 찾습니다. 589 | - `Competition` 경험이 적다면 다른 `Kaggler`들이 분석한 데이터들을 보면서 지식과 인사이트를 쌓는 것도 좋은 시작이 될 수 있습니다. 590 |
591 | 592 | ### `Notebook 포크하기` 593 | - `머신러닝`과 `Kaggle`에 처음 입문한 사람들은 곧바로 데이터 분석이나 모델을 개발하지 않고 공개되어 있는 `Notebook`을 포크해오는 것도 하나의 방법입니다. 594 | - `포크(Fork)`란 소스 코드의 한 버전을 복사해오는 것을 뜻합니다. 595 | - 포크하고 싶은 `Notebook`의 오른쪽 상단에 위치한 ![image](https://user-images.githubusercontent.com/61633137/103757146-b25ed880-5053-11eb-9e1f-48b887dc2eba.png) 버튼을 눌러서 복사하면됩니다. 596 |
597 | 598 | ### `병합 Notebook` 599 | - `Merge`, `Blending`, `Stacking`, `Ensemble` 등의 단어가 `Notebook` 제목에 있다면 `병합 Notebook` 이라고 합니다. 600 | - 이름에서 알 수 있듯이 여러 `Notebook`을 합친 `Notebook`을 뜻합니다. 601 | - 예시: ![image](https://user-images.githubusercontent.com/61633137/103759052-6f523480-5056-11eb-8d15-17e83fdb492d.png) 602 |
603 | 604 | ### 지금까지 나온 `Notebook` 등장 순서 정리와 결론 605 | ![Untitled Diagram](https://user-images.githubusercontent.com/61633137/103762670-0cfc3280-505c-11eb-89c9-a79645e1dedb.png) 606 | - 위와 같은 순서로 `Competition`이 진행된다고 했을 때 무작정 우승자의 `Notebook`을 보는 것보단 그 과정을 이해할 수 있도록 다양한 `Notebook`을 공부해보는 것이 좋을 것이라 생각이됩니다. 607 | - 또한 `Competition`은 기본적으로 경쟁을 하는 것이므로 공개된 `Notebook`들은 다른 `Kaggler`들이 알아도 본인에게 큰 타격이 없다는 뜻입니다.
608 | 실제로 입상한 분들의 `Notebook`을 보면 당시 최신 기술을 사용하거나 공개했던 `Notebook`과는 다른 솔루션을 사용한 경우도 종종 보입니다. 609 |
610 | 611 | *** 612 | 613 |
614 | 615 | ## Competitions의 규칙 616 | - `Kaggle`의 `Competitions`는 간혹 별도의 규칙이 있는 경우가 있습니다. 그 이유는 `Competitions`의 주최가 보통 특정 회사로부터 이루어지기 때문인데요, 그 회사가 원하는 결과를 얻기 위해 특별한 규칙이 생기곤 합니다. 617 |
618 | 619 | ### 어떤 `규칙`들을 봐야하나요? 620 | - 1. `Rules` : `Competition`에서 입상하기 위해선 우선 그 `Competition`의 규칙을 잘 알고 있어야 합니다. 각 `Competition`의 `Rules` 메뉴를 확인하면 됩니다.
621 | - 2. `Evaluation` : `Overview`의 `Evaluation` 페이지에서 `평가 함수`를 살펴보고 어떤 평가 방식이 적용되는지를 확인해야 합니다. 보통 통계학 기반의 함수가 사용됩니다.
622 | - 3. `1인 점수 확인 횟수` : 데이터를 하나씩 변경하면서 결과 파일을 자주 제출하여 점수를 자주 확인할 수 있다면 의미있는 성과를 거두지 못하겠죠, 그래서 보통 점수 확인 횟수에 제한이 있습니다.
623 | - 4. `Notebook Only Competition` : `Kaggle Notebook`만 사용해서 결과를 제출해야 합니다.
624 | `Kaggle Notebook`만 사용하게 될 경우 `Kaggler`들이 `Notebook`을 공개할 확률이 높아지며 모든 참가자는 공개된 `Notebook`을 볼 수 있으므로 좋은 아이디어를 쉽게 발견할 수 있습니다.
625 | 또한 모든 참가자의 컴퓨터 연산 자원이 같아지기 때문에 개인 워크스테이션을 쓰는 사람과 그렇지 않은 사람 사이의 불평등을 해소할 수 있습니다. 626 |
627 | 628 | *** 629 | 630 |
631 | 632 | ## Kaggle에서 기술의 흐름을 살펴보자 633 | ### 종료된 `Competition`에서 살펴보기 634 | - `Kaggle`의 특징이 하나 있는데 바로 오래전에 종료된 `Competition`의 `Discussion`과 `Notebook`을 그대로 남긴다는 것입니다.
635 | 그래서 이것들을 잘 살펴보면 당시 어떤 기술이 어떤 방식으로 어디에 적용되었는지 확인할 수 있습니다. 636 | - 예시 637 | |Competition|사용된 기술|설명| 638 | |------|-----|-----| 639 | |Mercari Price Suggestion Cahllenge(2018.2)|TF-IDF 벡터 + 전결합층 신경망|각 단어의 출현 빈도를 신경망으로 학습| 640 | |Toxic Comment Classification Challenge(2018.3)|FastText, Glove + GRU + LightGBM|단어 벡터 사전을 시계열 데이터로 학습해 조합함| 641 | |Avito Demand Prediction Challenge(2018.6)|FastText + LSTM + 2D-CNN|문장의 데이터와 이미지를 신경망으로 동시에 학습| 642 | |Quora Insincere Questions Classification(2019.1)|Glove, para + OOV Token + LSTM + 1D-CNN|어휘 이외의 단어를 OOV 토큰으로 학습| 643 | |Jigsaw Unintended Bias in Toxicity Classification(2019.6)|BERT + XLNet + GPT2| BERT 모델이 Kaggle에 등장| 644 |
645 | 646 | ### 입상한 솔루션 한 번에 살펴보기 647 | - [Data-Science-Competitions](https://github.com/interviewBubble/Data-Science-Competitions)라는 `Github` 저장소에서 `Competition`에 입상한 솔루션을 주제별로 정리하여 공개하고 있습니다.(지금 확인해보니 11개월전이 마지막 커밋이긴 합니다.) 648 | - 입상한 솔루션은 당시 기술 기반이므로 현재 더 좋은 기술이 있는지 확인해봐야 합니다. 649 | - 그리고 대부분의 `Competition`은 종료된 이후에도 `Private Leaderboard` 페이지에 최신 기술을 적용한 솔루션이 계속 공개됩니다. 650 |
651 | 652 | *** 653 | 654 |
655 | 656 | ## Kaggle Dataset과 API를 활용해보자 657 | ### 공개 `Dataset` 활용하기 658 | - 일반적인 알고리즘을 연구할 때는 널리 공개된 `Dataset`을 통해 성능을 테스트하는 것이 좋은데 `UCI Machine Learning Repository`가 유명합니다.
659 | 많은 학술 논문에서 이용하기도 합니다. 660 |
661 | 662 | ### `Data Repository`(데이터 저장소)로 활용하기 663 | - `Github`를 사용할 때 스토리지나 서버는 필요하지 않은 것처럼 `Kaggle`을 `Dataset`과 `Notebook`을 간편하게 저장하는 장소로 활용할 수 있습니다.(무료!) 664 | - 또한 `Notebook`에 `Dataset`을 바로 연결하여 사용할 수 있다는 장점도 있습니다. 665 | - 공개 `Dataset` 하나당 최대 20GB를 사용할 수 있고 비공개의 경우 전체 최대 20GB를 사용 가능하다는 용량 제한이 있습니다. 666 |
667 | 668 | ### `Kaggle API` 669 | - `Kaggle API`는 다양한 개발 환경에서 `Kaggle`의 여러가지 기능을 사용할 수 있는 API 입니다. 670 | - `Python 3`으로 구현되었으며 터미널 환경에 커맨드를 입력하는 방식입니다. 671 |
672 | 673 | ### `Kaggle API` 설치하기 674 | - 시작하기 전에 `Python`과 `pip`를 먼저 설치해주셔야 합니다. 675 | - [Python 설치](https://www.python.org/downloads/) 676 | - [pip 설치](https://pip.pypa.io/en/stable/installing/) 677 |
678 | 679 | - 1.우선 `pip install kaggle` 명령어로 `Kaggle API`를 설치해줍니다. 680 | - 2.그리고 본인 프로필에 들어가서 ![image](https://user-images.githubusercontent.com/61633137/103771883-ea721580-506b-11eb-888d-bff7ae4b8b07.png) 이렇게 생긴 버튼을 클릭후 `Accounts`를 누릅니다. 681 | - 3.![image](https://user-images.githubusercontent.com/61633137/103771829-d4645500-506b-11eb-93d8-14c99f8e4255.png)
682 | 여기서 `Create New API Token`을 눌러서 `json` 파일을 다운로드합니다. 683 | - 4. 방금 다운로드한 `json` 파일을 사용자의 홈 디렉터리에 `.kaggle/kaggle.json` 으로 저장하면 `Kaggle API`를 사용할 준비가 완료되었습니다. 684 |
685 | 686 | ### `Kaggle API` 사용하기 687 | - 사용자 PC의 터미널을 열고 명령을 실행할 수 있습니다. 688 | - `kaggle competitions list` 명령을 실행하면 현재 진행중인 `Competition`들을 확인할 수 있습니다.
689 | ![Screenshot from 2021-01-06 22-15-25](https://user-images.githubusercontent.com/61633137/103772382-c82cc780-506c-11eb-8230-e0ad0f23f02d.png) 690 | - `Competition`의 파일을 확인하고 다운로드하려면 `kaggle competitions files COMPETITION_NAME` 으로 파일을 확인하고 `kaggle competitions download COMPETITION_NAME` 하면 파일들을 다운로드할 수 있습니다. 691 | - `Kaggle API`에 대해 더 자세히 알아보시려면 [Kaggle Public API Documentation](https://www.kaggle.com/docs/api)을 확인해주시길 바랍니다. 692 |
693 | 694 | ### 마무리 인사 695 | 일단 부족함이 많은 저의 __`Hello Kaggle!`__ 문서를 읽어주신 모든 분들에게 감사 드립니다.
696 | 사실 저는 __`파이썬`__ 을 2020년 4월에 처음 공부했고 같은 해 7월에 입대를 하게되면서 공부에 온전히 집중하지 못하는 상황이기도 했습니다.
697 | 그래서 데이터 사이언스 분야를 심도있게 공부하지 못했고 이해도 많이 부족합니다.
698 | 이제서야 __`머신러닝`__ 과 __`Kaggle`__ 에 발을 들이게 되었네요.
699 | 이번에 __`Hello Kaggle!`__ 문서를 정리하면서 __`Kaggle`__ 에 대한 이해도가 높아졌고 __`Getting Started 에 있는 Competition`__ 부터 시작하려고 합니다.
700 | 또한 다른 뛰어난 __`Kaggler분들의 Notebook`__ 을 보면서 최신기술을 열심히 따라가 보려고 합니다.
701 | 데이터 사이언스를 공부하는 모든 분들 __`화이팅`__ 입니다! 702 | --------------------------------------------------------------------------------