[디블로터] ⑤데이터 과학 입문 + ‘니터’ 입문

가 +
가 -

저번 주에 ‘캐글’에 대해서 간단히 알아봤었습니다. 기업 등에서 데이터를 올려주면 문제를 푸는 방식으로 재미있게 공부할 수 있는 사이트입니다. R의 함수들은 실제로 데이터를 만져보고 필요한 함수를 찾아가면서 공부해야 실력이 늘 수 있겠다고 생각했습니다. 일단 기본적인 패키지를 공부했으니 캐글의 데이터를 이용해 실습하기로 했습니다.

지난 블로터 컨퍼런스에 강연자로도 오셨던 고석범 선생님의 책도 보면 좋겠다고 생각했습니다. ‘니터‘(knitr) 패키지를 활용해 ‘재현 가능한 연구’를 만든다는 게 나중에 기사 작성에서도 꽤 유용하겠다는 판단이 들었습니다. 나중에 데이터 시각화로 결과물을 내고, 그 과정을 공유할 때 훨씬 편리하고 깔끔하게 제시할 수 있을 것 같았습니다.

마지막으로 ‘Doing Data Science’라는 책을 골랐습니다. 오라일리에서 나온 책을 한빛 미디어에서 번역해 출판한 책입니다. 미국에선 대학교 교재로도 사용된다고 하더군요. 목표는 ‘데이터 저널리스트’지만, 데이터를 정제하고, 모형을 생각해 보고, 시각화를 통해 분석하는 일련의 과정은 데이터 과학자의 일과도 꽤 닮아있지 않나 싶었습니다. 어쨌거나 기사도 사회를 읽고 해석하려는 시도라면 과학적인 방법으로 접근하는 게 바람직하다고 보기도 했습니다. 당분간은 이 세 가지를 중점적으로 공부할 계획입니다.

 dbloter

데이터 과학이란 무엇인가?

메타마켓의 CEO 마이크 드리스콜은 다음과 같이 말한 바 있습니다.

“현실에서 보듯이 데이터 과학은 레드불과 같은 각성음료에 의지해서 날밤을 새우는 해킹과, 에스프레소에 의해 영감을 받는 통계학의 혼합이다”

데이터 과학은 복합적인 기술을 요구합니다. 프로그래밍 지식이 있어야 하고, 수학과 통계학적 지식도 갖춰야 하며, 내용적 전문성도 갖춰야 합니다. 이 접점에 데이터 과학이 있습니다. 데이터 과학자를 채용하는 공고를 보니 대부분의 직무 내용 설명에서 데이터 과학자가 컴퓨터과학, 통계학, 커뮤니케이션, 데이터 시각화 전문가, 해당 분야의 전문성을 요구했다 합니다. 사실 어지간한 사람이 아니고서야 모든 영역에서 전문가가 될 수는 없습니다. 그러므로 저자는 ‘데이터 과학이란 하나의 팀을 이룸으로써 전문적이 될 수 있는 것’이라고 말합니다.

더 읽어보세요!

왜 데이터 과학이 필요할까요? 삶의 많은 기록이 인터넷과 온라인에 축적되고 있습니다. 심지어 의식하지 못하는 오프라인의 행동도 데이터화되고 있습니다. 무심결이 카드를 찍고 지하철로 원하는 목적지에 도착해서 내리는 동안 나의 이동거리가 기록됩니다. 카드 사용 내역을 보면 한 사람의 입맛을 알아내는 것도 어렵지 않습니다.

이렇게 데이터화가 가속되고 있는 세상에서 데이터는 실시간으로 데이터 상품의 소재가 됩니다. 데이터 상품이란 데이터를 이용해서 만들어진 서비스 등을 말합니다. 정부 차원에서는 데이터 기반 정책이 될 수도 있고, 사소하게는 페이스북 친구추천이나 왓챠의 영화추천 같은 서비스도 해당될 수 있습니다. 지금 이 시점에 데이터가 주목받는 이유입니다.

이처럼 데이터는 어디에서나 만능으로 쓰일 수 있을 것만 같습니다. 그러나 저자는 데이터가 모든 것을 말해준다고 착각해서는 안 된다고 강조하고 있습니다. ‘N(모집단)=전체’라는 가정을 주의해야 한다고 말합니다. 예컨대 이렇습니다. 허리케인의 피해를 알아보고자 트위터를 긁어서 반응을 살폈습니다. 생각보다 피해가 작다는 반응입니다. 실제도 그럴까요? 아마 그렇지 않을 가능성이 큽니다. 정말로 큰 손해를 입은 사람은 트위터를 할 수 있을 리 없으니까요. 많은 데이터를 한 번에 처리할 수 있는 빅데이터의 시대라고 해도 표본을 잘 추출하는 문제가 여전히 중요한 이유입니다.

니터로 문서 만들기

두 번째 시간은 고석범 선생님의 책 ‘R과 Knitr를 활용한 데이터 연동형 문서 만들기’ 내용을 공부했습니다. 핵심은‘재현 가능한 연구’입니다. 재현 가능한 연구란 논문이나 연구 문서 내에 실제 연구에 사용됐던 소스코드, 데이터 등을 그대로 한 번에 포함시켜 이 문서를 받는 사람이라면 누구든 따라할 수 있게 만드는 것을 의미합니다. 즉 문서를 만들 때 코드도 넣고, 연구한 방법도 몽땅 넣어서 굉장히 쉽게 설명해주는 연구를 만든다고 볼 수 있습니다. 저자는 ‘문서 작성의 신뢰성, 원 데이터와 이를 활용한 최종 결론 사이의 신뢰성을 검증하기 위해’ 재현 가능한 연구의 개념이 필요하다고 이야기하고 있습니다.

니터 패키지를 사용하기 위해서 마크다운 문서에 코드 덩어리를 사용하는 법부터 배웠습니다. 코드 덩어리란 문서의 중간에 코드를 삽입할 수 있는 공간을 의미합니다. 스크립트를 넣는 셈입니다.

‘File→New File→R markdown’이 보입니다. 눌러서 실행합니다.

` ` `{r}(백틱 – ` – 을 세 개 입력하면 됩니다)

#코드가 들어가는 공간

` ` `

코드 덩어리를 만드는 기본 방법입니다. “`{r, echo=FALSE} 라고 옵션을 넣으면 코드의 결과물만 나옵니다.

dbloter1

위 사진을 보면 코드와 글자가 섞여 있는 모습이 보입니다. 읽어 온 데이터를 바탕으로 문서요소를 만들어 내고, 출력할 수 있습니다. 아직 활용은 해 보지 않았지만 데이터가 바뀐다고 해도 바로 반영될 수 있는 구조기 때문에 편리할 듯합니다. :)

네티즌의견(총 0개)