Kaggle로 시작하는 데이터 사이언스

이번 학기 부터 자대의 비전 랩실에서 학부 인턴으로 일하게 되어 인턴 동기들과 머신러닝 스터디를 진행하게 되었다. 그래서 이전까지 공부한 과정과 결과들을 정리, 복기하고 공유하기 위해 글을 작성하려고 한다.

Kaggle?

Kaggle

Kaggle은 한마디로 데이터 예측 경진대회 이다. 대부분의 Kaggle에서 주최되는 대회들은 주어진 train 데이터를 잘 사용해서 test 데이터에서 좋은 예측을 해내는 팀이 우승하게 된다. 유명한 문제로 Titanic이 있는데, train 데이터로 survival(생존 여부), pclass(티켓 등급), sex, age, sibsp(동승한 형제 혹은 배우자), parch(동승한 부모 혹은 자녀), ticket(티켓 번호), fare(운임), cabin(기내 번호) 등이 주어진다. 이 데이터를 잘 학습시켜 예측 모델을 만들어서 test 데이터에서 survival을 제외한 데이터가 주어졌을 경우 survival을 예측하는 문제이다. 처음 이 문제를 보았을 때, 이러한 데이터가 존재한다는 사실에도 무척 놀랐지만, 머신러닝등을 실제 생활의 데이터에 사용해 볼 수 있고 결과도 알 수 있다는 점이 흥미로웠다.

제 경험으로는…

나는 강성희 멘토님(지금은 DS School을 운영하시며 더 많은 사람들에게 Data Science를 전파하고 계신다. Ruby는 어디로)을 통해 Kaggle을 처음 도전해 보게 되었는데, 물론 처음에는 실수도 많이 했고, 익숙해지면 쉽게 해결할 수 있는 간단한 문제에도 삽질을 많이 했었다 (물론 그렇다고 지금은 전혀 그렇지 않다는 소리는 아니다). Kaggle에는 단순히 데이터만 존재하는 것이 아닌 수 많은 도전자들이 남긴 경험들이 담겨있다. 포럼의 글들을 읽어보면 생각지도 못한 부분에서 인사이트를 얻을수 있기도 한데, 실제 대회에 참가하지 않더라도 남아있는 글들을 보면 다른 사람들은 어떤 시도를 해보았고, 결과가 어땠으며 그 방법을 사용하는 이유는 무엇이며 더 좋은 방법은 어떤 것이 있는지를 알아볼 수 있다. 무엇보다 실제 이론을 구현하는 실력이 빠르게 증가한다. 머신러닝을 열심히 배우다 보면 한 번쯤 배워본 모델이나 이론을 실제 구현하고 사용해 보고 싶은 기분이 들 수 있는데 적절한 데이터를 구하는 것은 생각보다 어렵다. Kaggle에는 방대한 양의 데이터와 문제가 존재하기 때문에 비교적 쉽게 원하는 문제를 찾을 수 있다.

무엇을 배울 수 있을까요?

데이터 사이언스에 처음 입문해서 상금이 많이 걸린 대회나 실제 공개 보드에 점수를 올리기란 매우 힘든 일 입니다. 저는 처음에는 어떻게 데이터를 처리하고 원하는 형태로 만든 후에 예측에 사용할 수 있는지를 배웠으면 좋다고 생각합니다. 실제 데이터는 이론에서 배우는 것처럼 깔끔한 형태로 주어지지도 않고, 불필요한 데이터도 많이 있습니다. 전처리 과정에서 데이터를 정규화하고 손질하여 우리가 사용하기 쉬운 상태로 만들어야 하는데, 이러한 과정을 배울 수 있다면 좋은 경험이 될 것입니다. 더불어 결과를 좋게 만들기 위해 여러 시도를 해보았으면 합니다. 처음부터 가설을 세워 검증하고 결과를 향상시키는것은 어렵습니다. 많은 시도를 해 보고, 결과가 좋아진다면, 이유가 무엇인지 아는 것 만으로도 충분히 큰 도움이 될 수 있습니다.