데이터 분석을 공부하다보면 언젠가 듣는 이름이 있다. “캐글”. 캐글이 뭔가 하고 검색을 해보면 “2010년에 설립된 예측 모델 및 분석 대회 플랫폼으로 기업 및 단체에서 데이터와 해결과제를 등록하면, 데이터 과학자들이 이를 해결하는 모델을 개발하고 경쟁한다.” 라는 거창한 말과 함께, ‘아 이곳에서 데이터를 가지고 분석 경쟁을 하는구나~’ 정도로만 알게 된다. 그러나 대다수가 캐글을 하는데 있어 상당한 진입장벽에 쉽게 포기를 하게 되더라. 그래서 이번에 캐글을 도전 해보고 싶었으나, 시도하기 엄두가 나지 않는 사람들을 위한 가이드를 한번 작성해보려 한다.
캐글 기본 환경 파악
우선 회원가입부터 해보자. 캐글 우측 상단에 Register 버튼을 클릭하면 회원가입 절차 View로 넘어 가는데 되도록이면 gmail로 가입하는걸 권한다.
회원가입이 되었다면 대회를 파악해보록 하자. 왼쪽 메뉴에 Compete버튼을 클릭하면 캐글에 존재하는 대회 들이 나오게 된다. 처음에는 기본적으로 Titanic이나 Bike sharing demand를 보면서 공부를 하면 된다. 우선 Titanic을 한번 보고 구조를 파악해보도록 하자.
캐글 회원가입
캐글 대회 파악
대회 메뉴 파악
각 대회의 메뉴를 파악 해보자. 여기까지는 간단하게 확인이 가능하다.
- Overview: 대회에 대한 전반적인 설명이 들어가 있다.
- Data: 대회에 필요한 데이터와 그에 대한 설명이 들어 있다.
- Notebook: 다른사람들이 어떻게 데이터 분석을 했는지 코드를 올리는 공간이다. 이곳에서 많은걸 배울 수 있다.
- Discussion: 대회에 대한 토론 장? 정도로 보자.
- Leaderboard: 순위를 확인할 수 있다.
- Rules: 대회 규칙
- Team: 나의 정보? 정도로 알아두자.
- My submissions: 데이터 분석한 결과를 확인할 수 있다.
- Submit Predictions: 데이터 분석한 결과를 제출하는곳.
캐글 입문 시작
지금부터가 본론이다. 사실 위 이야기는 가입부터 약 5분이면 간단하게 확인할 수 있는 내용이고, 지금부터 진입장벽을 깰 수 있는 이야기를 해보려 한다. Titanic를 예시로 들었으니, 어떻게 Titanic를 가지고 공부를 하는게 좋을지 알아보도록 하자.
자료 수집
캐글을 하려면 처음엔 필사를 하라고 하는데, 어떻게 필사를 하는게 좋을까? 다른사람들이 작업 결과들을 공부 하는게 가장 효과적이다. 다음 그림은 Titanic에 올라온 Notebook을 확인 하는 절차를 나타냈다.
Step 1
Titanic > Notebook 메뉴를 보자. 다른사람들이 작업한 결과들을 볼 수 있으며, 사용 언어에 따라, 필터링이 가능하다. 대표적으로 Languages와, Sort by를 사용하는게 효과적이다.
- Languages: Python, R, SQLite, Julia가 있다.
- Sort by
- Hotness: 가장 핫한 정도로 보면 된다. Comment나, Votes, Score를 종합적으로 순서를 메기는거 같다.
- Most Votes: Vote가 많은 순서대로
- Most Comments: Comment가 많은 순서대로
- Best Score: Score가 높은 순서대로
- Recently Created: 최근에 발행된 순서대로
- Recently Run: 최근에 코드가 실행된 순서대로
Step 2
카테고리별로 필터링과 순서를 잘 설정 해놓으면 사람들이 했던 노트북이 나오게 된다. 이는 많은 사람들에게 인정을 받은 노트북이라 잘 참고할 필요가 있다. 이제 이 상위 n개의 노트북을 모두 클릭클릭클릭.
Step 3
클릭해서 다른사람들은 어떻게 접근을 했는지 코드를 보자. 같은 타이타닉 주제로도 코드 형식이나 전개 방법들이 모두 다르다. 이를 모두 꼼꼼하게 공부 해보는게 가장 중요하다.
제출
제출은 우측상단 메뉴에서 Submit Predictions를 클릭 하고 파일을 첨부 하고, Describe 작성한뒤 첨부를 하면 된다. 그동안 캐글을 해보려고 시행착오를 겪어보면서 알게된건 다음과 같다.
- 제출 형식은 정해져 있지 않다.
.csv
파일로 제출할때 꼭 rownumber은 제거 하고 제출해야 한다. 안그럼 에러 발생.- 제출하면 점수가 나오는데 점수가 좋게 나오지 않으면 다시 이전으로 돌아가서 Best score 순서대로 notebook를 보자. 다른사람들은 어떻게 점수를 높혔는지 공부할수 있는 좋은 기회가 된다.
Notebook 작성
지금까지 notebook 자료들을 수집하고 이를 통해 공부 하고 제출하는 방법을 적어보았다. 이제는 Notebook를 만드는법을 적어 보려 한다. Notebook를 잘 만들어 두면 캐글 티어상승에 도움도 되고 좋은 경험이 된다.
Step 1
먼저 참여 하고 있는 캐글 대회에서 New Notebook
버튼을 클릭한다.
Step 2
New Notebook 버튼을 클릭하면 다음의 설정창이 나오는데, 각자의 입맛에 맞추어서 설정을 해주면 된다. 주로 사용하게 될 기능은 다음과 같다.
- Select language: Python, R
- Select type: Notebook, Script
Step 3
각자의 언어에 맞게 환경을 선택 하고 Create 버튼을 누르면 다음과 같은 notebook 화면이 나오게 된다. 이곳에서 이제 작업을 하게 될건데, 각각 기능을 설명하려고 한다.
- 1번 영역: Notebook 의 제목
- 2번 영역: 파일의 경로, Train/Test데이터가 이곳에 있으며, 파일 경로를 잘 찾아서 불러와야 한다.
- 3번 영역: 세부설정. Step 2의 설정과 같은데, 특이사항이 있다면 R에선 Rmd환경을 지원해준다.
- 4번 영역: Commit, 쉽게 말해서 Upload라고 보면 된다.
Step 4
Commit 버튼을 누르면 다음의 창이 나오게 되는데, 코드의 실행 상태를 볼수가 있다. 에러가 나오면 실패라고 나오니 확인을 잘하고 commit을 하도록 하자. 그리고 완성된 버전은 우측 상단에 Open Version버튼을 눌러 확인이 가능하다.
Step 5
노트북을 보면 점수가 나와 있는 것들이 있다. 노트북에 점수는 어떻게 노출 시키는지 알아 보자.
Step 6
노트북에 점수 표시 하기
- 우선 노트북에 write.csv등등 의 코드르 결과물을 export하는 코드를 만들어 주자.
- 다음의 노트북 결과뷰를 보면 우측에 Output 메뉴가 있는데, 이곳에서 Submit to Competition 버튼을 클릭하면 된다.
캐글 티어 시스템
캐글에는 티어 시스템이 있다. 쉽게 말해서 실버, 골드, 플레티넘, 다이아 등등의 계급이 나뉘는데 어떻게 올리는지 간단하게 소개 해보도록 하겠다. Novice, Contributor, Expert, Master, Grandmaster로 나뉘며, 입문자에게는 일단 Expert를 우선적으로 목표를 잡는게 좋다. 출처는 다음을 참고 하자. (출처: Kaggle Progression System)
계급의 종류
Novice
그냥 가입만 하면 되는 최초 단계. 대부분이 이곳에서 높은 진입장벽에 허우덕 대다가 포기 하더라.
Contributor
기본적인 정보를 입력하면 Contributor로 올라가게 된다. 다음의 조건들을 모두 충족시켜야 한다. 기본적인 정보 입력은 다음 그림을 참고 하자.
- Add a bio to your profile: 위 그림 참고
- Add your location: 위 그림 참고
- Add your occupation: 위 그림 참고
- Add your organization: 위 그림 참고
- SMS verify your account: 위 그림 참고
- Run 1 script: 스크립트 1번 실행
- Make 1 competition submission: 캐글 결과물 1번 제출
- Make 1 comment: 커멘트 1번
- Cast 1 upvote: 추천 1번 눌러주기
Expert
Expert부터는 본격적으로 캐글을 다루어야 하는 까다로운 조건들이 있다. 다음의 조건을 모두 충족시켜야 한다.
- Competitions: 동메달 2개 이상
- Datasets: 동메달 3개 이상
- Notebooks: 동메달 5개 이상
- Discussions: 동메달 50개 이상
Master
다음은 Master에 대한 조건 이다.
- Competitions: 금메달 1개, 은메달 2개
- Datasets: 금메달 1개 은메달 4개
- Notebooks: 은메달 10개
- Discussions: 은메달 50개, 총 메달 200개
Grandmaster
Grandmaster조건은 다음과 같다.
- Competitions: 금메달 5개, 팀이 아닌 단일로 참가 하여 금메달
- Datasets: 금메달 5개, 은메달 1개
- Notebooks: 금메달 15개
- Discussions: 금메달 50개, 총 메달 500개
메달
금, 은, 동메달은 어떤 기준으로 받을 수 있는지 한번 알아보자. 유의사항이 있는데
- Novice에 의한 추천
- 스스로 추천 하는 경우
- 오래된 게시물의 경우
위 경우에는 추천집계에서 제외 된다.
Competition 메달
competition 메달은 캐글 대회에서 얼마나 성적을 내는가로 집계 되는데, 이는 팀의 수마다 다르다.
0~99개팀 | 100~249개팀 | 250~999개팀 | 1000개팀 이상 | |
---|---|---|---|---|
동메달 | 상위 40% | 상위 40% | 상위 100등 | 상위10% |
은메달 | 상위 20% | 상위 20% | 상위 50등 | 상위 5% |
금메달 | 상위 10% | 상위 10등 | 상위 10등 + 0.2% | 상위 10등 + 0.2% |
- 상위 10등 + 0.2%는 일종에 알파 정도로 보도록 하자. 팀에 따라서 11등도 받을 수 있다.
Dataset 메달
- 동메달: 추천 5개
- 은메달: 추천 20개
- 금메달: 추천 50개
Notebook 메달
- 동메달: 추천 5개
- 은메달: 추천 20개
- 금메달: 추천 50개
Discussion 메달
- 동메달: 추천 1개
- 은메달: 추천 5개
- 금메달: 추천 10개
캐글 데이터셋 정리
다음은 캐글에 존재 하는 Competation과 Dataset들을 적당한 카테고리로 분류 해놓은 리스트다. 여기서 하나씩 해나가면 될것 같다.
Classification
Recommendation
Finance
총평
캐글이란것을 알게 된지 2년이 넘게 흘렀고, 캐글을 시도 하려다 실패 했던것이 두번이 지났고, 마지막 실패로부터 8개월정도가 흘렀다. 당시에 잠깐 다른 더 중요한걸 하느라 캐글을 접어 두었는데 이번에 하나씩 시행착오 겪어 보면서 느끼는것이 생각보다 더 진입장벽이 크다는 것이었다. 이제 어느정도 진입장벽은 허물었으니 일단은 Expert먼저 목표로 잡아야 겠다.