[캐글 안내서] ❷ 캐글, 이렇게 시작하세요

[Must Have] 머신러닝·딥러닝 문제해결 전략
골든래빗 출판사
신백균 지음


학습 목표
캐글 가입부터 결과 제출까지 전체 프로세스를 배웁니다. 누구나 쉽게 따라 할 수 있게 캡쳐화면으로 설명해놓았습니다.
학습 순서
2.1 캐글 가입
캐글에 가입하는 방법부터 알아보겠습니다. 직접 따라 하면 누구나 쉽게 가입할 수 있습니다.
To Do 01 먼저 kaggle.com에 접속합니다. 캐글 메인 홈페이지가 뜰 겁니다.
To Do 02 홈페이지 우측 상단의 [Register]를 클릭하여 가입합니다.
To Do 03 구글 계정으로 가입하려면 [Register with Google]을 클릭하고, 다른 이메일로 가입하려면 [Register with your email]을 클릭합니다. 여기서는 구글 계정으로 가입하겠습니다.
To Do 04 다음 창에서 영어로 이름을 입력합니다. 띄어쓰기도 가능합니다. 입력 후 하단의 [Next] 버튼을 클릭합니다.
Note
중복된 이름이 이미 있다고 뜨면 다른 별칭으로 정하셔도 됩니다.
To Do 05 유의사항을 읽어본 뒤 [I agree]를 클릭합니다.
Note
캐글 사이트의 UI는 언제든 예고 없이 바뀔 수 있습니다. 캐글의 UI가 책의 설명과 맞지 않다면 다음 주소에 공개해둔 온라인 문서를 참고하세요.
《머신러닝·딥러닝 문제해결 전략》 캐글 UI 관련 최신 업데이트 문서
가입이 완료되었습니다. 어려운 건 없으셨죠?
2.2 경진대회 참여
가입을 했으니 이제 캐글 경진대회에 참여해보겠습니다.
먼저 우리가 참여할 ‘타이타닉 경진대회’에 대해 간략히 설명드리겠습니다. 이 대회는 타이타닉호를 탄 승객들의 이름, 성별, 나이, 지불한 운임, 가족수 등 여러 정보를 주고, 각 승객이 살았는지 죽었는지 예측하는 경진대회입니다. 훈련용 데이터에는 승객 정보와 생사여부가 모두 표기되어 있고 테스트용 데이터에는 승객 정보만 표기되어 있습니다. 훈련용 데이터로 모델을 훈련한 뒤 테스트용 데이터에 있는 승객의 정보를 기반으로 생사여부를 예측해야 합니다.
타이타닉 대회는 캐글을 처음 접하는 사람이 가장 먼저 시도하는 대회입니다. 대회라기보다 튜토리얼이라고 봐도 좋습니다. 너무 유명해서 캐글을 한 번쯤 해본 분은 이미 접했을 것입니다.
To Do 01 우선, 화면 좌측에서 [Competitions] 메뉴를 클릭합니다.
검색창이 두 개가 보일 것입니다. 맨 위는 경진대회, 데이터셋, 코드, 토론, 강좌 전체를 대상으로 검색할 수 있고, 그 아래는 경진대회에 국한하여 검색할 수 있습니다.
To Do 02 아무 검색창에서나 “Titanic”이라고 검색한 뒤 “Titanic: Machine Learning from Disaster”를 찾아 클릭합니다. 다음은 경진대회 검색창에서 검색한 예입니다.
그러면 타이타닉 경진대회의 첫 페이지가 뜹니다.
[Overview]부터 [Team]까지 여러 메뉴가 있죠? 각 메뉴마다 어떤 정보가 있고 어떻게 활용하는지는 6장에서 자세히 살펴보겠습니다.
To Do 03 경진대회에 참여하기 위해 우측 상단의 [Join Competition]을 클릭합니다.
Note
만약 [Join Competition]이 없고 [Submit Predictions]라고 뜨면 이미 참여가 완료된 것입니다. 일부 튜토리얼 대회는 참여 버튼을 누르지 않아도 자동 참여되게끔 바뀔 수도 있기 때문입니다. 또한, 이미 종료된 대회들은 [Late Submission]이라고 뜰 겁니다.
To Do 04 경진대회 규칙이 궁금하면 살펴보시고, [I Understand and Accept]를 클릭하여 대회에 참여합니다.
타이타닉 경진대회 참여가 완료되었습니다.
2.3 주피터 노트북 설정
주피터 노트북 생성
주피터 노트북jupyter notebook은 데이터 과학자가 많이 사용하는 오픈소스 웹 애플리케이션입니다. 주피터 노트북을 활용하면 텍스트, 코드, 수식, 그래프, 코드 결과를 하나의 파일(.ipynb)에 표현할 수 있어 굉장히 편리합니다.
개인 컴퓨터(로컬)에서도 주피터 노트북을 사용할 수 있습니다. 그런데 캐글에서도 주피터 노트북 환경을 제공하기 때문에 굳이 로컬 환경을 구축할 필요는 없습니다. 캐글이 제공하는 주피터 노트북을 노트북notebook이라고 부릅니다. 캐글 노트북 환경에는 기본적인 데이터 분석, 머신러닝 라이브러리가 이미 설치되어 있어 작업하기 편리합니다.
로컬 환경이 캐글 노트북 환경보다 좋다면 로컬에서 하셔도 됩니다. 그러나 캐글에 이제 막 입문한 분이라면 대부분 평범한 노트북이나 데스크톱을 가지고 있을 겁니다. 캐글은 GPU 환경도 제공해주고 게다가 캐글 노트북을 써야만 제출할 수 있는 대회도 종종 있습니다. 그렇기 때문에 이 책에서는 캐글 노트북 환경을 기반으로 설명하겠습니다. 개발 환경 구성에 시간 들이지 않고 바로 시작할 수 있습니다. 아주 쉽게 말이죠.
방금 참여한 타이타닉 경진대회에서 새로운 노트북을 생성해보겠습니다.
To Do 01 상단의 [Code] 메뉴를 클릭합니다.
그러면 다른 사람이 작성한 노트북들의 목록이 나타날 겁니다. 참고하면서 공부하셔도 되고 아이디어를 얻으셔도 됩니다. 지금은 제출까지 한번 해보는 단계이므로 새 노트북을 만들어 보겠습니다.
To Do 02 오른쪽 상단의 [New Notebook]을 클릭합니다.
그러면 바로 캐글에서 제공하는 노트북 환경이 뜹니다. 로컬에서 번거롭게 세팅할 필요 없이 온라인 환경에서 작업할 수 있게 되었습니다.
캐글 노트북 둘러보기
자주 사용하는 노트북 구성요소들을 설명하겠습니다. ❶ 현재 노트북 제목을 표시하는 영역이 상단에 있습니다. 원하는 노트북 제목으로 바꿔주겠습니다. 저는 “My First Notebook”으로 바꿨습니다.
❷ 다음으로 우측의 [Data] 탭을 클릭해 펼쳐보겠습니다. 그러면 오른쪽 그림처럼 변합니다. 여기에 타이타닉 경진대회용 데이터가 들어있습니다. ❸ Input 밑의 titanic 디렉터리를 다시 펼칩니다.
titanic 디렉터리에는 gender_submission.csv, test.csv, train.csv 파일이 있습니다. 각각 제출용 샘플 데이터, 테스트용 데이터, 훈련용 데이터입니다.
훈련용 데이터인 train.csv로 모델을 훈련하여, 테스트용 데이터인 test.csv로 결과를 예측하고, 제출용 샘플 데이터인 gender_subsmission.csv 형식에 맞게 제출하면 됩니다.
맨 처음 캐글 노트북을 실행하면 첫 번째 셀cell에 다음 코드가 자동으로 입력되어 있습니다. 이 셀을 실행해보겠습니다. 셀 실행 단축키는 두 가지입니다. Ctrl + Enter를 누르면 현재 셀만 실행하고, Shift + Enter는 현재 셀을 실행하고 다음 셀로 넘어갑니다.
Note
주피터 노트북에서 셀이란 독립적으로 실행할 수 있는 코드 조각을 뜻합니다.
# 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
실행 결과
/kaggle/input/titanic/train.csv
/kaggle/input/titanic/gender_submission.csv
/kaggle/input/titanic/test.csv
이와 같이 train.csv, test.csv, gender_submission.csv 파일이 위치한 경로를 출력합니다. 앞서 노트북 우측의 [Data] 탭에서 살펴본 구조 그대로입니다. 다만 루트 디렉터리인 kaggle은 [Data] 탭에 보이지 않습니다. 뒤에서 제출 파일을 만들면 제출 파일은 kaggle/output 디렉터리에 담길 것입니다.
당연한 말이지만 경진대회마다 input 디렉터리에 들어 있는 데이터가 다릅니다. 대회에 참여하고 노트북을 생성하면 해당 대회를 위한 데이터가 들어 있습니다.
캐글 노트북 만져보기
이제는 간단한 조작법을 살펴보겠습니다.
노트북은 셀 단위로 편집하고 실행하는 구조입니다. 다음은 셀 두 개로 구성된 화면 예시입니다.
수정할 코드가 있다면 해당 셀을 선택해 편집하면 되며, 언제든 새로운 셀을 추가하거나 중간에 삽입할 수 있습니다. 심지어 셀 왼쪽 공간을 위아래로 드래그하여 셀들의 순서를 바꿀 수도 있습니다.
설명글은 마크다운markdown 문법을 지원합니다. 원하는 마크다운 텍스트를 입력한 뒤 실행하면 렌더링된 텍스트가 생성됩니다.
코드는 셀 단위로 실행하며, 결과는 해당 셀 바로 아래 출력됩니다. 상단 메뉴바의 [Run] 메뉴에서 ‘모두 실행(Run all)’, ‘이전 셀까지 실행(Run before)’ 등 더 많은 실행 옵션을 확인할 수 있습니다.
캐글은 키보드로만 작업하는 데 익숙한 분을 위해 키보드 단축키도 풍부하게 제공합니다. 유용한 단축키들을 몇 가지 소개하겠습니다.
먼저 ❶ 셀을 하나 선택하고 ❷ Esc 키를 누른 뒤 다시 b 키를 누르면 ❸ 선택한 셀 아래에 새로운 셀이 추가됩니다.
Note
Esc 키는 명령 모드를 활성화하는 역할입니다.
반대로 현재 셀을 지우려면 Esc를 누른 뒤 d 키를 연속으로 두 번 누릅니다.
셀을 잘라낸 뒤 원하는 곳에 붙여넣을 수도 있습니다. 잘라내고 싶은 셀에 커서를 둔 뒤 Esc를 누른 후 x를 누릅니다. 그런 다음 키보드 위 아래 방향키를 활용해 붙여넣고 싶은 곳으로 이동한 뒤 v를 누르면 잘라낸 셀을 붙여넣을 수 있습니다.
다음으로 Escm을 누르면 해당 셀이 마크다운 셀로 변합니다. 반대로 Escy를 누르면 마크다운 셀이 코드 셀로 바뀝니다.
정리하면 다음과 같습니다.
  • 경진대회 : Ctrl + Enter 또는 Shift + Enter
  • 데이터셋 : Esc, b
  • 노트북 : Esc, a
  • 토론 : Esc, d, d
  • 경진대회 : Esc, x
  • 데이터셋 : Esc, v
  • 노트북 : Esc, m
  • 토론 : Esc, y
자주 사용하는 단축키들이므로 꼭 기억하시고, 다른 단축키가 궁금하신 분은 구글에 “jupyter notebook shortcuts”라고 검색해보시기 바랍니다.
한 가지만 추가로 설명하고 주피터 노트북 사용법을 마치겠습니다. 상단 메뉴 [View][Toggle line numbers]를 선택하면 셀 안에 줄번호가 표시됩니다. 코드가 많이 길어지면 유용한 기능입니다.
파이썬 및 설치된 라이브러리 버전 확인하기
캐글 노트북에는 파이썬을 비롯해 기본적인 라이브러리가 모두 설치되어 있습니다. 먼저 노트북에 설치된 파이썬 버전을 알아보겠습니다. 노트북 셀에 다음 코드를 입력하고 실행합니다.
import sys print(sys.version)
3.7.10 | packaged by conda-forge | (default, Feb 19 2021, 16:07:37)
[GCC 9.3.0]
집필 시점 기준으로 파이썬 3.7.10 버전이 설치되어 있습니다. 다음으로 설치된 라이브러리의 버전을 확인해보겠습니다. 머신러닝 경진대회를 다루는 6~9장에서는 다음과 같은 버전의 라이브러리를 사용합니다.
import numpy, pandas, seaborn, matplotlib, sklearn, scipy, missingno, lightgbm, xgboost
print('numpy :', numpy.__version__)
print('pandas :', pandas.__version__)
print('seaborn :', seaborn.__version__)
print('matplotlib :', matplotlib.__version__)
print('sklearn :', sklearn.__version__)
print('scipy :', scipy.__version__)
print('missingno :', missingno.__version__)
print('lightgbm :', lightgbm.__version__)
print('xgboost :', xgboost.__version__)
실행 결과
numpy : 1.19.5
pandas : 1.3.2
seaborn : 0.11.2
matplotlib : 3.4.3
sklearn : 0.23.2
scipy : 1.7.1
missingno : 0.4.2
lightgbm : 3.2.1
xgboost : 1.4.2
딥러닝 경진대회를 다루는 11~13장에서 사용하는 라이브러리 버전은 다음과 같습니다.
import numpy, pandas, matplotlib, sklearn, torch, torchvision, cv2, albumentations, transformers
print('numpy :', numpy.__version__)
print('pandas :', pandas.__version__)
print('matplotlib :', matplotlib.__version__)
print('sklearn :', sklearn.__version__)
print('torch :', torch.__version__)
print('torchvision :', torchvision.__version__)
print('cv2 :', cv2.__version__)
print('albumentations :', albumentations.__version__)
print('transformers :', transformers.__version__)
실행 결과
numpy : 1.19.5
pandas : 1.2.5
matplotlib : 3.4.3
sklearn : 0.23.2
torch : 1.7.1+cu110
torchvision : 0.8.2+cu110
cv2 : 4.5.3
albumentations : 1.0.3
transformers : 4.9.2
2.4 결과 제출하기
제출 파일 생성
훈련과 예측을 따로 하지 않고 샘플 파일인 gender_submission.csv의 내용 그대로를 제출 파일로 생성해보겠습니다. 제출하는 절차를 익히기 위해서입니다.
To Do 01 pandas의 read_csv() 함수로 gender_submission.csv 파일 내 데이터를 DataFrame 객체로 불러온 후 내용을 출력해보겠습니다.
import pandas as pd
submission = pd.read_csv('/kaggle/input/titanic/gender_submission.csv')
submission
실행 결과
https://goldenrabbit.co.kr/wp-content/uploads/2022/05/캐글-정복-첫걸음_054_01.png
승객 ID별 생사여부가 Survived 칼럼에 기재되어 있습니다. 제출용 샘플 파일은 임의로 남자 승객은 0, 여자 승객은 1로 생사여부를 표시했습니다. 샘플 데이터라서 남자는 다 죽고, 여자는 모두 살았다고 단순하게 나타낸 것입니다.
To Do 02 이제 submission 객체를 제출 파일로 변환하겠습니다.
submission.to_csv('submission.csv', index=False)
index=False로 지정하면 DataFrame의 인덱스는 제외한 채 csv 파일을 만들어 저장합니다. 제출 파일은 오른쪽 [Data] 탭에서 확인할 수 있습니다. Output/kaggle/working 디렉터리에 submission.csv 파일이 잘 생성되었군요.
커밋하기
생성된 submission.csv 파일을 제출하려면 먼저 커밋commit부터 해야 합니다.
To Do 01 오른쪽 위의 [Save Version] 버튼을 클릭합니다.
To Do 02 커밋 창이 뜨면 Version Name을 쓴 뒤(생략 가능) [Save] 버튼을 누릅니다.
화면 왼쪽 아래에 다음과 같이 커밋이 진행 중임을 알리는 창이 뜰 것입니다.
잠시 기다리면 다음과 같이 완료되었다고 알려줍니다. 코드가 복잡하고 처리할 게 많을수록 커밋하는 데 시간이 오래 걸립니다.
지금은 간단히 제출 파일만 만들었으므로 금방 완료될 것입니다.
제출 및 점수 확인하기
커밋을 했으니 이제 제출해보겠습니다. 오른쪽 위의 [Save Verison] 옆의 숫자가 ‘0’에서 ‘1’로 바뀐 것을 볼 수 있습니다. 커밋이 한 번 되었다는 뜻입니다.
To Do 01 ‘1’로 표시된 영역을 클릭합니다.
To Do 02 다음으로 오른쪽 위의 [Go to Viewer]를 클릭합니다.
Viewer의 [Notebook] 탭에서는 지금까지 작성한 코드를 볼 수 있습니다.
To Do 03 바로 옆의 ❶ [Data] 탭을 클릭하면 우리가 제출할 ❷ submission.csv의 내용이 보입니다. 결과 파일이죠. ❸ 제출하려면 [Submit] 버튼을 클릭합니다.
To Do 04 그러면 ❶ 노트북 제목, ❷ 커밋 메시지, ❸ 제출 파일이 순서대로 기재가 된 창이 뜹니다. 아래의 ❹ [Submit] 버튼을 다시 누릅니다.
제출이 완료되었습니다.
To Do 05 점수가 얼마나 되는지 궁금하죠? 아래의 [View My Submissions]를 클릭하여 점수를 확인 해봅니다.
Score가 0.76555라고 표시되어 있습니다.
이 대회의 평가 지표는 정확도accuracy로, 0~1 사이의 값을 갖습니다. 76%나 정답을 맞혔다니, 아무것도 하지 않은 것에 비춰보면 꽤 높네요.
To Do 06 이 점수면 전체 제출자 중 몇 등인지 확인해볼까요? 아래 [Jump to your leaderboard position]을 클릭합니다.
집필 시점 기준으로 전체 10,614등이네요. 총 제출자는 14,000명 정도 됩니다. 제출용 파 일을 그대로 제출하니 등수가 높을 리 없겠죠.
지금까지 캐글 가입부터 제출까지 전체 프로세스를 간략히 살펴보았습니다.
2.5 컨트리뷰터 되기
컨트리뷰터가 되는 조건 중 가장 까다로운 ‘경진대회 1회 참여 및 제출’을 완료했으니, 나머지 간단한 작업들을 마저 끝내서 등급을 올려봅시다.
To Do 01 먼저 현재 등급이 Novice가 맞는지 확인해보겠습니다. 캐글 홈페이지 로그인 후 오른쪽 위 아이콘을 클릭합니다.
To Do 02 개인정보 메뉴 탭이 뜨면 [Your Profile]을 클릭합니다.
그러면 다음과 같이 자신의 프로필이 뜹니다.
❶ 맨 위에 이름이 나타나고, ❷ 그 아래에는 경진대회, 데이터셋, 노트북, 토론마다 등급이 있습니다. 회원가입 후 아무것도 안 했으니 현재 등급은 모두 Novice입니다. 이를 Contributor로 업그레이드 해보겠습니다.
To Do 03 ❸ 오른쪽의 [Edit Public Profile] 버튼을 클릭하여 편집 화면으로 이동합니다.
To Do 04 ❶ 사진을 등록하고 직업, 회사(학교), 거주지, 개인 SNS 계정을 입력합니다. ❷ 이어서 아래쪽의 Phone Verification의 [Not verified]를 클릭한 다음 휴대폰 인증까지 마칩니다. ❸ 마지막으로 [Save Public Profile]을 클릭해서 저장합니다.
To Do 05 [Home] 탭을 눌러 프로필 메인으로 돌아옵니다. 다음으로 자기소개를 추가해보겠습니다. 프로필 중간 Bio 항목에서 ❷ [Click to add bio...]를 클릭합니다.
To Do 06 적당한 자기소개를 입력하고 [Save] 버튼을 클릭합니다.
To Do 07 마지막으로 다른 사람 노트북에 추천upvote을 누르고 댓글을 달면 됩니다. 타이타닉 경진대회에서 쉬운 노트북을 아무거나 선정해도 됩니다.
추천과 댓글 달기까지 모두 마치면 다음과 같이 모든 영역이 Contributor로 업그레이드됩 니다. 축하합니다!
2.6 예제 코드 캐글 노트북 복사하기
이 책의 모든 예제 코드는 캐글 노트북으로 공유해놨습니다. 독자 여러분은 제가 공유한 캐글 노트북을 복사해서 사용하실 수 있습니다. 노트북을 복사해 사용하면 라이브러리 버전을 책과 동일하게 맞출 수 있다는 장점이 있습니다. 즉, 책과 같은 환경에서 작업할 수 있습니다.
캐글 노트북을 복사해 실행하는 방법을 알아보겠습니다.
To Do 01 캐글에 로그인합니다.
제가 공유해둔 노트북으로, 타이타닉 데이터를 간단히 전처리한 후 랜덤 포레스트 모델로 훈련 및 예측한 코드입니다.
To Do 03 오른쪽 위의 [Copy & Edit] 버튼을 클릭합니다.
그러면 다음과 같이 노트북이 복사됩니다.
To Do 04 제대로 복사됐는지 확인해볼까요? 상단 메뉴에서 [Run All]을 클릭하여 전체 셀을 한 번에 실행해보세요.
전체 셀이 오류 없이 잘 실행될 것입니다.
To Do 05 이제 2.4절에서 배운 바와 똑같이 커밋하고 제출해보겠습니다.
점수가 0.77751로 향상되었습니다.
학습 마무리
이번 장에서는 캐글 가입부터 제출하는 방법을 알아보고 컨트리뷰터가 되어보았습니다. 그리고 제가 공유한 예제 노트북을 복사해 실행하는 방법도 알아봤습니다.

신백균
KAIST 산업및시스템공학과 졸업 후 한국생산성본부에서 직무교육 기획 및 운영을 담당하는 전문위원입니다. 세계 랭킹 0.18%의 캐글 노트북 엑스퍼트(Expert)이며, 월 평균 6만여 명이 방문하는 데이터 분석/머신러닝 관련 기술 블로그를 운영하고 있습니다. 참여자 1,200명 이상인 머신러닝 관련 오픈 채팅방의 운영진이기도 합니다.

Leave a Reply

©2020 GoldenRabbit. All rights reserved.
상호명 : 골든래빗 주식회사
(04051) 서울특별시 마포구 양화로 186, 5층 512호, 514호 (동교동, LC타워)
TEL : 0505-398-0505 / FAX : 0505-537-0505
대표이사 : 최현우
사업자등록번호 : 475-87-01581
통신판매업신고 : 2023-서울마포-2391호
master@goldenrabbit.co.kr
개인정보처리방침
배송/반품/환불/교환 안내