Category Archives: 데이터과학 개념잡기

온라인 서비스 개선을 데이터 활용법 (How We Use Data 발표)

최근에는 주로 데이터 과학 입문자들을 위한 글을 주로 올렸었지만, 저의 본업은 검색엔진(Bing)의 데이터 과학자로서 검색 결과의 품질을 측정하고 개선할 수 있는 평가 지표 및 기법을 개발하는 일입니다. 이를 위해서 사용자 행동, 사용자 피드백, 패널 등 다양한 데이터 소스와 실험 디자인 및 분석 기법이 사용됩니다.

이와 관련해 최근에 How We Use Data라는 행사에서 ‘온라인 서비스 개선을 데이터 활용법’이라는 주제로 발표를 할 기회가 있었습니다. 웹 검색엔진, 추천서비스, 소셜 네트워크 등 다양한 온라인 서비스 회사들에서 어떻게 서비스 품질을 평가하고 개선하기 위해 노력하는지를 궁금해 하셨던 분이라면 참고하실만합니다. 좋은 자리 만들어주신 고영혁님께 감사 말씀 드립니다.

아래 발표자료와 동영상을 공개합니다.

위 발표와 관련하여 다음 자료를 추천합니다. 데이터 활용에 관한 좀더 폭넓은 방법과 사례를 원하시는 분이라면 헬로 데이터 과학을 참고하시기 바랍니다.

데이터 과학을 위한 도구의 선택

보조장치 없는 인간의 지적 능력은 미약하기 짝이 없다. 종이와 펜, 컴퓨터와 같은 인지 보조장치의 사용으로 인간의 기억과 사고력은 극적으로 향상된다. – 도널드 노먼

사용성(Usability)이라는 개념의 주창자로 유명한 도널드 노먼(Donald A. Norman)은 <생각있는 디자인>[@Norman1993]이라는 책에서 인간의 미약한 기억과 판단력을 보완해주는 인지 보조장치의 중요성에 대해 언급하고 있다. 이처럼 도구는 단순히 잘 정의된 일을 수행하는 수단에 지나지 않고 일을 수행하는 우리의 사고 프로세스를 제한하고 규정함으로써 결과물에 지대한 영향을 끼친다.

데이터 문제 해결을 위한 도구의 선택은 앞서 언급한 데이터 문제의 요소에 의해서도 결정된다. 문제 해결의 주체인 개인이나 조직이 어떤 도구에 익숙하거나 혹은 배울 수 있는지, 문제 해결의 초점이 어떤 데이터 처리 및 분석, 그리고 시각화 기법을 요구하는지, 마지막으로 데이터의 크기 및 특성이 어떤지가 모두 어떤 도구를 선택하고 조합해야 하는지에 대한 기준이 된다.

이 글에서는 우선 널리 사용되는 데이터 과학을 위한 도구의 특성을 알아보고, 프로젝트의 특성에 따라 도구를 조합하는 방법을 제시한다. 그리고 이중 데이터 과학을 시작하는 사람들이 꼭 알아야 할 도구인 엑셀과 R에 대해 자세히 설명한다.

데이터 과학을 위한 도구들

지금부터 데이터 과학을 위해 주로 사용되는 도구의 특성에 대해 알아보자. 우선 아래 표에서 널리 사용되는 도구들을 데이터 및 과업의 여러 가지 특성에 따라 비교해 보았다. 이를 각 특성별로 간단히 살펴보자.

데이터 과학을 위한 도구들

처리용량/속도 우선 한 번에 처리 가능한 데이터의 크기(Volume / Throughput) 관점에서는 빅데이터 솔루션의 대표 주자로 각광받는 하둡이 거의 무한대의 용량을 처리할 수 있으며, 인덱스 및 클러스터 구축 여부에 따라 RDBMS역시 테라바이트급의 데이터를 저장 및 처리할 수 있다. 반면 나머지 도구들은 메모리 한도 내에서 작업이 가능하다. 커스텀 코드의 한계는 물론 작성하기 나름이다.

하지만 1장서 언급했듯이 이런 처리 용량의 차이는 처리 속도(Response Time)와 트레이드오프를 관계에 있다. 메모리 기반의 프로그램들이 대부분 실시간에 가까운 응답 속도를 보장하는 반면, 실시간 처리에 최적화되지 않은 대부분의 빅데이터 솔루션들은 요청을 보낸 후 상당 시간을 기다려야 하기 때문이다. 특히 하둡의 경우 조직 전체에서 공유 인프라로 활용되는 경우가 많아 대기 시간이 더 길어지게 마련이다.

데이터포멧 대부분의 솔루션이 테이블 데이터를 처리할 수 있으며, 이들 테이블에는 보통 숫자, 문자열, 시간 등 다양한 데이터 형이 포함될 수 있다. 또한 대부분 테이블 형태의 데이터 처리에 필요한 필터링(filtering), 정렬(sorting), 조인(joining), 합계(aggregation) 등의 연산을 제공한다. 따라서 이런 기본 연산의 조합으로 해결가능한 데이터 처리 작업의 경우에는 기존의 솔루션을 최대한 활용하는것이 바람직하다.

맞춤/확장성 마지막으로 이들 환경에서는 필요한 경우 새로운 함수를 구현해 사용할 수 있는 다양한 프로그래밍 환경을 제공한다. 최근에는 NumPy/SciPy/Pandas/iPython을 포함하는 파이썬(Python) 기반의 솔루션이 많이 사용되고 있다. 범용 프로그래밍 언어인 파이썬의 특성상 분석에 사용한 코드를 웹서비스등 다른 시스템과 통합하기 쉬운 장점이 있다.

예측/시각화 이외에 부가적인 기능이라 할 수 있는 기계 학습 및 시각화 기능의 경우 R이나 파이썬이 가장 강력한 기능을 제공하지만, 기본적인 기능은 엑셀에서도 제공한다. 하둡이나 데이터베이스를 사용하는 경우에도 별도의 패키지를 통해 이런 기능을 제공받을 수 있다. 또한 이들 플렛폼과 별도로, 시각화 및 통계 모델링에는 많은 패키지나 라이브러리가 나와있으므로 용도에 따라 찾아 사용하도록 하자. 일반 사용자를 위한 패키지중에서는 타블로우(Tableau), 프로그래머를 위한 라이브러리 중에는 D3.js가 널리 사용되고 있다.

그렇다면 현업 실무자들은 어떤 도구를 사용하고 있을까? 오라일리 사에서 2014년에 데이터 과학에 종사하는 800여명의 현업 실무자를 대상으로 실시한 여론조사에 따르면 [@harris13] 가장 널리 사용되는 데이터 과학의 도구는 데이터베이스, 엑셀, R과 파이썬 순으로 나타났다. 본 블로그의 독자그룹을 대상으로 한 설문조사에서도 가장 많이 사용되는 도구는 엑셀 및 데이터베이스가 가장 많이 사용되는 도구로 나타났다. (본 설문은 아직 진행중이며, 설문에 참여하면 자세한 결과를 볼 수 있다.)

문제에 맞는 도구 선택하기

그렇다면 이렇게 다양한 도구중 무엇을 사용해야 할까? 우선 데이터의 크기 및 분석의 성격, 그리고 사용가능한 도구가 무엇인지가 출발점이 될 것이다. 아래 그림은 앞서 설명한 도구들을 데이터의 크기 및 사용자 인터페이스의 성격에 따라 나누어 보여준다. 그림의 오른쪽으로 갈수록 큰 데이터를 다룰 수 있고, 아래로 갈수록 프로그래밍을 많이 필요로 하는 도구들이다. 예컨대 데이터 크기가 작으며 일회성 분석 작업이 대부분이라면 엑셀을 써도 무방할 것이다.

ch2_tools_ds_choice

데이터 과학을 위한 도구를 선택하는 기준.

하지만 문제해결 과정에서 한가지 도구만 사용하라는 법은 없다. 사실 대부분의 데이터 문제는 문제해결 단계에 따라 적절한 도구를 조합해서 사용하는 능력을 요구한다. 어떤 단계에서 무슨 도구를 사용하느냐는 문제의 특성에 따라 결정되는 부분이지만 몇가지 가이드라인을 제시하면 다음과 같다.

간단한 도구로 시작하여 복잡한 도구로 옮겨간다. 위에서 살펴본 것처럼 같은 작업을 하는 데에도 메뉴 조작으로 끝나는 환경과 프로그래밍을 해야 하는 환경이 있다. 또한 프로그래밍 환경간에도 R과 같은 간단한 것과 C++와 같이 상대적으로 복잡한 것이 존재한다. 이런 선택은 개인의 경험과 선호도에 따라 결정할 부분이다. 하지만 많은 경우, 일회성 작업은 최대한 단순한 도구로 하는 것이 효율을 높이는 방법이다. 분석 작업에는 다양한 아이디어를 최대한 신속하게 실험해볼 수 있어야 하지만, 일단 검증된 분석 시나리오를 나중에 제품 수준의 코드로 구현하는 것은 어렵지 않기 때문이다.

분석 초반에 최대한 데이터 크기를 줄인다. 앞서 설명했듯이 빅데이터를 다루는 도구들은 처리용량을 키우기 위해 응답속도를 희생하는 경우가 많다. 비슷한 작업을 수정을 거쳐 계속 반복하게 되는 데이터 문제의 특성상 느린 응답속도는 작업 효율의 하락과 직결된다. 따라서, 문제해결 초기에 작업 대상이 되는 데이터의 크기를 최대한 줄이는 것이 분석에 드는 시간을 최대한 아끼는 길이다. 또한 데이터 크기가 줄어들수록 좀더 다양한 범위의 도구를 분석에 사용할 수 있다는 장점도 있다.

이해를 돕기 위해 필자가 작업 단계별로 주로 사용하는 도구를 소개하면 아래와 같다. 우선 데이터 준비 단계에서는 하둡이나 데이터베이스에 존재하는 원본 데이터에서 필요한 부분을 선택하거나 집계(aggregation), 표본추출(sampling) 등을 적용하여 최소한으로 줄인다. 그러면 보통 PC 메모리에 들어가는 정도의 크기가 되는데, 이 데이터를 엑셀이나 R에서 불러 데이터의 값이나 분포에 이상이 없는지 확인한다.

문제해결 단계별로 적절한 도구들

문제해결 단계별로 적절한 도구들

또한 데이터를 사용해 어떤 일반화된 결론을 내리거나 예측을 해야할 경우에는 다시 R이나 파이썬을 사용한다. 이때 데이터 크기가 큰 경우 하둡 등의 클러스터에서 돌아가는 예측 기법을 사용할 때도 있다. 또한 모델을 제품에 적용해야 할 경우에는 C++/C#등의 언어로 다시 구현하는 경우도 있다. 마지막으로 결과를 발표하거나 문서화할 때에는 다시 엑셀을 사용한다.

엑셀로 시작하는 데이터 과학

위에서 데이터 과학을 위한 다양한 도구를 알아보았다. 그렇다면 데이터 과학을 시작하는 여러분에게 하나의 도구를 추천한다면 무엇일까? 필자는 주저없이 엑셀을 추천할 것이다. 엑셀? 엑셀로 뭘 할 수 있냐고 여러분은 생각할지도 모른다. 하지만 데이터 과학을 처음 공부하는 입장에서 엑셀만한 툴은 없다. 또한 앞서 소개한 설문에 따르면 [@harris13] 엑셀은 SQL및 R과 함께 현업에서 여전히 가장 많이 쓰이는 도구다.

이해를 돕기 위해 카메라에 비유해보자. 필자는 엑셀을 똑딱이 디카에, R을 수동조작이 가능한 DSLR에 비유하고 싶다. 전문가의 손에 들어간 DSLR이 더 좋은 결과물을 만들어낼 수 있다는 것은 자명하다. 하지만 세상에는 아이폰 카메라만 가지고도 기가막힌 결과물을 만들어내는 작가들이 있고, 많은 사진 초보들이 DSLR 및 렌즈을 사서 익히는데 엄청난 시간과 노력을 들이지만 결과물은 신통치 않은 것도 사실이다. 즉, 도구 자체에 집착하기보다는 주어진 도구를 최대한 활용하는 것이 중요하다는 이야기다.

다시 데이터 과학으로 돌아와서 이야기하면, 엑셀은 분명 처리용량이나 고급 분석기능, 그리고 자동화 측면에서 한계가 있는 도구다. 하지만 데이터 과학을 처음 접하는 사람들이 빠른 시간에 개념을 익히고 뭔가 시작하기에 엑셀만한 도구도 없다는 것이 필자의 생각이다. 또한, 위 통계자료가 보여주듯 필자를 포함한 현업 종사자들도 엑셀을 꾸준히 사용하고 있다. 그렇다면 왜 데이터 과학을 위한 도구로 엑셀이 가진 장점은 무엇일까?

코드가 아닌 데이터가 중심이다

최근에 나온 대부분의 데이터 과학 관련 수업이나 책에서는 R이나 파이썬과 같은 프로그래밍 언어에, 빅데이터를 다루기 위한 하둡을 다룬다. 물론 이들은 엑셀보다 더 큰 데이터를 다룰 수 있고, 더 강력한 기능을 제공한다. 그리고 코드를 이용한 데이터 처리는 재사용성면에서 강점이 있다. 대부분의 전문가들이 이런 도구를 사용하는 데에는 분명 이유가 있다.

하지만, 이들은 모두 프로그래밍에 대한 지식을 전제로 한다는 공통점이 있다. 프로그래밍에 익숙치 않은 많은 사람들에게 새로운 언어를 공부한다는 것은 분명 큰 부담이다. 데이터 과학에 관심이 있는 모든 사람들이 R이나 파이썬 문법부터 익혀야 한다면 몇명이나 성공할 수 있을까. 이전 글에서 밝혔듯이 효과적인 데이터 과학은 문제 정의에서 출발해야 한다. 그리고 문제 및 데이터의 종류에 따라 엑셀로도 충분한 경우가 있을 것이다. 마치 분석 작업의 효율을 위해서는 스몰데이터로 시작해야 하듯이, 엑셀로 시작하고 필요에 따라 더 강력한 도구를 배워 사용하면 어떨까?

또한 이런 프로그래밍 기반의 도구를 사용해 데이터를 처리하다보면 자칫 원본 데이터의 다양한 특성과 잠재적인 문제점을 간과할 수 있다. 대부분의 시간을 코드를 작성하고 실행하는데 보내다 보면, 원본 데이터 대신 이미 각종 집계 및 분석 기법이 적용된 결과에만 초점을 맞추기 쉽기 때문이다. 이렇게 분석을 한참 진행한 후에 원본 데이터의 문제점을 발견하는 경우도 허다하다.

반면 엑셀 등 스프레드시트애서는 워크시트에 로딩된 원본 데이터를 꼼꼼히 살피면서 작업할 수 있다. 즉, 코드가 아니라 데이터가 중심이 되는 것이다. 그래서 현업에서 R 및 파이썬과 같은 도구를 일상적으로 사용하는 필자도 코딩을 하기 전에 샘플 데이터를 엑셀로 불러 검증하는 습관이 있다. 즉, 프로그래밍을 아는 사람들에게도 엑셀은 쓸모가 있는 도구다.

올인원(all-in-one) 솔루션이다

엑셀은 기능면에서 데이터 과학의 스위스 아미 나이프와 같다. 스위스 아미 나이프 하나에 온갖 툴이 다 들어있듯이, 데이터 과학의 전과정을 엑셀로 해볼 수 있기 때문이다. ^[하지만 스위스 아미 나이프에 있는 툴들이 본격적인 작업을 위해서는 부족하듯이, 엑셀의 기능도 고급 사용자에게는 부족한 점이 많다.]

우선 엑셀을 통해 데이터를 직접 입력하거나 온라인 폼(form)을 통해 데이터를 모을 수 있다. 이 과정에서 데이터의 중복이나 오류를 검증할 수 있다. 또한, 데이터에 필요한 컬럼을 손쉽게 추가할 수 있고, 이를 필터링하거나 피벗테이블을 통해 집계하는 것도 가능하다.

또한 엑셀은 아쉬우나마 기본적인 데이터 분석 기능을 제공한다. 엑셀에 기본으로 제공되는 분석 도구모음(Analysis Toolpak)을 사용하면 히스토그램(histogram), 가설 검증(hypothesis testing), 연관성 및 회귀 분석(correlation and regression), 시계열 예측 (forecasting) 등 다양한 분석 기법을 사용할 수 있다.

엑셀에서 제공하는 다양한 분석 기능

엑셀에서 제공하는 다양한 분석 기능

또한 엑셀은 다양한 시각화 기능을 제공한다. 셀 단위의 시각화 (조건부 포메팅 / 스파크차트)는 다른 분석도구에서는 찾아보기 힘든 기능으로 데이터를 직접 보면서 패턴을 찾기에 유용하다. 또한 몇가지 제약에도 불구하고 엑셀의 기본적인 플로팅 기능은 쓸만한 수준이다. 최근 버전의 엑셀에서는 파워피봇(PowerPivot) 등을 통해 좀더 강력한 시각화 기법을 사용할 수 있다. 파워피봇을 사용하면 시간이나 지도상의 데이터까지 손쉽게 플로팅할 수 있다.

엑셀에서 제공하는 다양한 시각화 기능

엑셀에서 제공하는 다양한 시각화 기능

반면에 R과 같은 대부분의 범용 도구들은 이미 수집이 완료된 데이터를 다룬다. 또한 데이터 저장, 분석, 시각화 등 특정한 분야에 집중하는 도구도 많다. 이 경우 단계별로 도구를 바꿔야 하고, 이를 위해 데이터를 변환하는 수고가 들어간다. 이에 반해 부족하나마 하나의 도구로 데이터 과학의 전 과정을 수행할 수 있다는 것은 분명 장점이다.

결과물을 쉽게 공유할 수 있다

지난번 글에서 강조했듯이, 데이터 과학의 전 과정에서 이해당사자 및 다른 분야의 전문가와 끊임없이 소통하는 것은 필수적이다. 이런 관점에서 전통적인 프로그래밍 기반의 도구들의 문제점은 분석의 최종 결과를 제외한 중간 과정과 결과물을 다른 사람과 공유하기가 쉽지 않다는 점이다. 보통 분석용 코드는 일회용으로 생각하기 때문에 주의하지 않으면 작성자 이외에는 알아보기 힘든 경우가 많고, 주석을 꼼꼼히 달아도 프로그래머가 아니면 이해하기 어렵기 때문이다.

최근에는 KnitriPython Notebook과 같은 도구가 등장하여 이런 문제를 부분적으로 해결해준다. 이런 도구를 사용하면 분석용 코드와 관련 문서를 동시에 생성할 수 있기 때문에, 분석용으로 R과 파이썬을 주로 사용한다면 꼭 알아야할 도구들이다. 하지만 이를 위해서는 추가적인 노력이 필요하고 비전문가에게는 여전히 쉬운 솔루션이 아니다.

반면에 엑셀은 결과물이 (당연히) 문서이기 때문에 조금만 주의하면 쉽게 공유할만한 결과물을 만들 수 있다. 또한 의사결정권자를 포함한 대부분의 사람들이 엑셀을 사용할 것이다. 따라서 엑셀로 데이터를 공유하면 누구나 그 중간과정을 검토하고 문제점을 발견하거나 개선하는데 참여할 수 있다. 또한 데이터를 다루는 많은 도구들이 엑셀 포멧을 기본적으로 지원한다. 즉, 데이터 처리 및 분석 과정의 투명성을 극대화할 수 있는 것이다. 데이터 분석을 한참 진행하다가 앞단계의 오류로 지금까지의 노력이 물거품이 되어본 사람이라면 이런 투명성의 중요함을 이해할 것이다.

엑셀에서 R로 넘어가기

위에서 알아본 것처럼 엑셀은 데이터 과학을 시작하기 위한 도구로서 적합하며, 현업 전문가들도 엑셀을 지속적으로 활용하는 이유가 있다. 하지만 아이가 자라면서 원래 입던 옷이 몸에 맞지 않게 되듯이, 데이터를 문제해결에 본격적으로 활용하다보면 엑셀만으로는 부족함을 느끼게 된다. 혹은 앞서 사용했던 디카의 비유를 적용하면 똑딱이 디카를 쓰던 사용자가 품질과 기능의 한계를 느끼는 상황이라고 할 수 있겠다.

이럴 때 프로그래밍 기반의 데이터 처리 도구를 찾게 되는데, 엑셀만 사용하던 사용자에게는 굉장히 낯선 경험일 것이다. 여기서는 이중 가장 널리 사용되는 R을 중심으로 이런 도구들이 엑셀과 어떻게 다르고 어떤 가능성을 추가적으로 제공하는지 알아보도록 하자. 이를 통해 현재 엑셀을 주로 사용하는 사용자들이 R이 과연 자신에게 필요한지를 고민해볼 수 있기를 바란다.

워크시트에서 변수로

우선 엑셀을 쓰다가 R을 시작한 사용자가 크게 느끼는 변화 중 첫번째는 워크시트 대신에 입력창만이 존재한다는 것이다. 엑셀에서는 데이터를 입력하거나 불러오고, 계산의 중간 과정 및 최종 결과를 저장하는데 모두 거대한 테이블 형태의 워크시트를 사용하지만, R에서는 워크시트를 제공하지 않기 때문이다. 반면에 R을 포함한 모든 프로그래밍 언어에서는 변수라는 개념을 사용한다. 이런 변수는 작업공간에 존재하지만 고정된 위치를 갖지는 않으며, 벡터, 행렬, 테이블 등 고유의 자료형을 갖는다.

그렇다면 변수를 어떻게 만들고 사용할 수 있을까? R에서는 모든 변수를 만들때 고유의 이름을 붙이도록 한다. 따라서 나중에 변수의 내용을 참조할 때에는 그 이름을 사용하면 된다. 사실 엑셀에도 셀 혹은 테이블에 이름을 붙여서 참조할 수 있는 기능이 있으니, R에서는 모든 데이터를 위치가 아닌 이름으로 참조한다고 기억하면 된다. 아래 그림은 같은 데이터를 엑셀과 R에서 어떻게 저장하는지를 보여준다.

ch2_excel_vs_r_vars

엑셀의 워크시트와 R의 변수: 워크시트는 위치를 기준으로 참조하지만, 변수는 이름을 기준으로 참조한다.

그렇다면 이렇게 워크시트 대신 변수를 쓰는 방식의 장점은 무엇일까? 데이터의 크기와 종류가 얼마 되지 않을때는 모든것을 한눈에 보면서 작업할 수 있는 워크시트가 더 편리할 것이다. 하지만, 크고 복잡한 데이터를 다루는 프로젝트의 데이터를 워크시트에 관리하다보면 잦은 스크롤과 버벅임 등으로 오히려 불편함을 느끼게 된다. 또한 변수를 셀의 위치로 참조하는 방식도 복잡한 워크시트에서는 오류의 가능성을 높인다.

따라서 엑셀의 전문가들은 모든 셀과 테이블에 이름을 붙여 관리하는 것을 추천한다. 이렇게 하면 굳이 크고 복잡한 워크시트 사이를 오갈 필요가 없기 때문이다. 그리고 R과 같은 프로그래밍 환경에서는 아예 워크시트 대신에 모든 것을 고유의 이름과 자료형을 가진 변수로 대신하는 것이다.

요약: 워크시트의 모든 데이터에 이름을 붙이지 않으면 기억할 수 없는 수준이라면 R을 고려해보자.

메뉴에서 함수로

엑셀에 비해 R의 또다른 차이는 리본과 메뉴의 부재다. 엑셀에서 메뉴를 선택해서 수행할 대부분의 작업이 R에서는 함수 호출을 통해 이루어지기 때문이다. 이런 함수에는 데이터를 불러오거나 저장하고, 특정한 연산이나 분석 기능을 수행하고, 또한 주어진 데이터를 시각화하는 기능이 모두 포함된다. 즉, 엑셀에서는 데이터 처리와 관련된 기능중 일부를 함수형태로 제공하는데 비해 R은 모든 기능이 함수를 통해 구현되는 것이다.

ch2_excel_vs_r_funs

엑셀과 R비교: 메뉴와 함수

언뜻 메뉴를 선택하는 대신에 함수를 기억해서 입력하는 방식은 불편하게 들린다. 하지만 R에 익숙해진 사용자들은 입을 모아 함수가 더 편리한 방식이라고 이야기한다. 왜 그릴까?

작업의 효율성 엑셀과 같이 수행할 기능을 메뉴에서 선택하는 방식은 처음에는 손쉽게 기능을 배울 수 있다는 장점이 있다. 하지만, 복잡한 작업을 메뉴와 워크시트를 오가며 수행하다 보면 금방 지치게 되고, 또 같은 작업을 계속 반복한다고 그만큼 효율이 올라가지는 않는다. 즉 메뉴 기반의 프로그램은 반복되는 작업에는 한계를 드러내는 것이다. 엑셀에서는 이런 반복되는 작업을 위해 매크로 기능을 제공한다. 하지만 매크로는 데이터의 형태나 기능이 조금만 달라져도 금방 한계를 드러낸다.

반면에 데이터 처리 코드를 통해 작업을 수행하는 방식은, 일단 작성된 코드를 손쉽게 반복 호출할 수 있다는 장점이 있다. 예컨데 원본 데이터에 10단계의 처리를 해야 데이터 가공이 완료된다고 하자. 메뉴로 작업하는 경우 데이터가 갱신될때마다 상당 부분의 작업을 다시해야 하지만, 코드로 작업하는 경우 이미 작성된 코드에 입력 데이터만 바꾸어 다시 실행하면 되는 것이다.

기능의 확장성 데이터 처리를 하다보면 기본적으로 지원되는 기능이외에 추가적인 작업을 해야하는 경우가 종종 생긴다. 예컨데 엑셀은 주어진 텍스트 문서를 단어 단위로 쪼개 단어별 개수를 세는 기능을 제공하지 않는다. 이처럼 엑셀과 같은 메뉴 기반으로 프로그램은 주어진 기능으로 해결되지 않는 작업에 있어서 한계를 드러낸다. 엑셀에서는 VBA라는 프로그래밍 환경을 제공한다. 하지만, 이를 위해서는 VBA라는 또다른 프로그래밍 환경과 언어에 익숙해져야 한다.

반면에 R에서는 기존에 존재하는 함수를 조합하여 얼마든지 새로운 함수를 만들 수 있다. 그리고, R에서는 전세계의 R 사용자들이 이미 만들어놓은 다양한 기능을 CRAN이라는 곳에서 찾아 사용할 수 있다. 대부분의 통계 및 데이터 전문가들이 R을 사용하기 때문에, CRAN에는 데이터에 관련해 상상가능한 거의 모든 기능이 제공된다.

요약: 매크로나 VBA를 항상 써야하는 수준이라면 R을 고려해보자.

분석에서 예측으로

마지막으로 엑셀과 R의 기능적인 차이를 알아보자. 앞서 설명한대로 엑셀은 기본적인 데이터 분석 및 시각화 기능을 제공한다. 하지만 엑셀에서 제공하는 기능은 전문적인 데이터 관련 작업을 하기에는 부족한 점이 있다. 시중에는 이를 보완해주는 애드온(add-on) 패키지가 몇가지 나와 있지만, 대부분 유료인데다 그 종류가 아주 다양하지도 않다.

이를 좀더 구체적으로 알아보면, 엑셀은 T-test나 선형회귀분석(Linear Regression)같은 기본적인 통계 기능은 제공하지만, 분류 및 군집화와 같은 기계학습 관련 기능은 제공하지 않는다. 또한, 데이터 시각화 기능에 있어서도 엑셀은 이용가능한 시각화의 종류나 자유도 면에서 제약이 있다.

요약: 고급 통계나 기계학습 등의 기능을 써야하는 수준이라면 R을 고려해보자.

맺음말

이번 글에서는 널리 쓰이는 데이터 처리 및 분석도구의 장단점을 알아보고, 이를 적절히 조합하여 업무에 활용하는 방법을 사례로 알아보았다. 데이터를 다루는 수많은 툴이 존재하며 이들 각각이 다른 특성과 한계를 지니는 만큼, 용도에 적합한 도구를 선택하는 일은 중요하다. 또한, 데이터를 다루는 일이 대부분 여러 단계를 거치게 되므로, 각 단계에 맞는 도구를 선택하여 조합하는 능력도 필요하다.

이번 글에서는 또한 널리 사용되는 데이터 관련 도구 중 엑셀과 R을 간단히 소개했다. 이미 많은 독자들이 친숙하게 여길 엑셀의 데이터 과학을 위한 도구라는 관점에서 다시 살펴보았고, 엑셀에서 좀더 전문가용 솔루션인 R로 넘어가려고 할때 고려해야 할 사항을 알아보았다. 그리고 R과 엑셀이 인터페이스 측면에서는 상이하지만, 개념적으로는 비슷하다는 점을 설명했다. 다음 글에서는 좀더 구체적인 사례를 가지고 엑셀과 R을 비교해볼까 한다.

이전 글에서 스몰데이터의 가치를 강조했듯이 필자의 견해는 데이터과학을 배우려는 모든 사람들이 모두 프로그래밍을 해야할 필요는 없다는 것이다. 하지만 마치 DSLR 카메라가 일반인을 겨냥하여 좀더 쉬운 사용법에 강력한 기능을 제공하듯이, R과 같은 도구들은 좀더 강력하고 편리한 형태로 진화를 거듭하고 있다. 따라서 데이터 과학자로서의 진로를 생각하는 사람들은 필히 이런 도구에 관심을 가져야 할 것이다.

추신: 이 글은 권정민 / 최현우님의 피드백을 거쳐 작성되었습니다. 제 글의 초고는 독자그룹 여러분들께 먼저 보내드립니다.

참고문헌

Harlan Harris, Marck Vaisman, Sean Murphy. 2013. “Analyzing the Analyzers: An Introspective Survey of Data Scientists and Their Work.” O’Reilly Free Report.
Norman, Donald A. 1993. Things That Make Us Smart: Defending Human Attributes in the Age of the Machine. Basic Books.

데이터를 이용한 문제해결의 장점

지금까지 데이터 과학의 개념을 ‘데이터’와 ‘과학’으로 나누어 알아보았다. 앞에서는 데이터 과학을 데이터에 기반한 문제해결 방식으로 소개했지만, 문제 해결에는 이외에도 다양한 방법이 있다. 개인적인 경우에는 직관에 따라 해결책을 찾을수도 있고, 조직의 경우에는 당사자들간의 토의를 통하여 해결할 수도 있다. 그렇다면 데이터 과학, 즉 데이터 기반의 문제해결이 갖는 장점은 무엇일까?

데이터를 이용한 문제해결의 장점

데이터를 이용한 문제해결의 장점

위 그림에서 요약하듯 흔히 데이터 기반의 문제해결이 분석의 질을 향상시키는 점에만 주목하는 경향이 있지만, 데이터의 활용은 문제정의부터 데이터 분석, 제품 구현 및 의사소통에 이르기까지 문제해결의 전단계에 걸쳐 차이를 가져올 수 있다. 이를 좀더 자세히 알아보자.

새로운 관점과 문제정의

데이터 과학이 흔히 분석 단계에서 직관을 보조하는 도구로 인식되는 경우가 많다. 하지만 이외에도 데이터에 의한 문제해결은 종종 문제에 대한 새로운 관점을 부여하고, 혹은 관습의 틀을 깨는 문제 정의를 가능케 한다. 직관이나 토의에 의한 문제정의은 주로 개인, 혹은 집단에 속한 개인들의 경험과 주관에 의지하는 경우가 많은데 반해, 데이터에 의한 문제정의는 관찰가능한 현상과 누구나 동의할 수 있는 수치화된 지표에 기반하기 때문이다.

‘머니볼’은 데이터 과학을 야구라는 오랜 역사를 가진 스포츠에 적용한 오클랜드A 구단의 단장인 빌리빈의 이야기를 다룬 책이다. 1 다른 메이저리그 스카우터들이 자신의 경험과 ‘감’을 통해 선수를 뽑고 있을 때, 빌리빈은 선수의 미래 성적과 가치에 대한 과학적 측정 방법을 도입하여 자신의 팀을 성공으로 이끌었다.

또한, 주어진 문제를 데이터화하려는 노력은 종종 해당 개인이나 조직의 업무 프로세스를 바꾸는 결과를 낳기도 한다. 현상을 데이터화하기 위해서는 업무 프로세스에서 관찰가능한 (즉 측정가능한) 부분을 최대화해야 하기 때문이다. 이는 종종 기존 프로세스에 숨겨져있던 비효율을 없애고, 좀더 투명하고 객관적인 프로세스를 만드는 결과를 낳는다. 문제를 정의하는 과정에서 이미 업무를 개선하는 효과를 얻는 것이다.

필자는 다양한 개인 데이터 분석 프로젝트를 통해 이런 개선 효과를 여러번 경험하였다. 우선 필자가 웨이트 트레이닝을 시작했을 때의 일이다. 보통 근육 운동을 할때 ‘운동기록부’를 작성하라는 조언을 많이 듣는다. 보통 여기에는 그날 한 운동의 종류와 무게, 반복 횟수를 적는데, 이를 통해 자신의 운동 능력의 발달을 한눈에 볼 수 있다.

필자가 적은 운동기록부의 일부

필자가 적은 운동기록부의 일부

그런데 운동기록부를 적다 보니 그날그날의 반복횟수에 영향을 미치는 요인이 필자의 운동능력 이외에도 다양히 존재하는 사실을 발견했다. 예컨데, 특정 부위의 운동을 여러 종류에 걸쳐서 하면 당연히 나중에 하는 운동에는 100%의 힘을 발휘하기 힘들다. 또한 운동 중간에 쉬는 시간이 길어지면 다음 운동에 평소보다 더 많은 횟수의 반복을 할 수 있다.

즉, 자신의 운동능력을 정확히 반영하는 운동기록부를 작성하기 위해서는 운동의 프로세스 자체를 정형화해야 한다는 점을 깨달았다. 즉, 운동의 순서를 미리 결정하고, 운동을 시행하는 시간 및 쉬는 시간을 모두 타이머로 일정하게 맞추는 것이다. 이렇게 정확한 순서로 운동을 하면서 예전보다 훨씬 더 좋은 결과를 얻을 수 있었다. ‘데이터화’가 가져다준 뜻밖의 효과였다.

세밀하고 객관적인 분석

인간의 두뇌는 다양한 감각을 통해 정보를 수집하고, 이를 바탕으로 거의 순간적인 결정을 내릴 수 있는 엄청난 능력을 지녔다. 그리고 오랜 시간과 노력을 통해 이런 감각과 직관을 세련화한 각 분야의 ‘전문가’들이 보여주는 능력은 많은 사람들을 놀라게 한다. 하지만, 인간의 감각과 직관은 동시에 여러 한계를 지닌다. 여기서는 정확도와 편향이라는 측면에서 이를 생각해보자.

정확도 우선 직관적으로 내릴 수 있는 판단의 정확도에는 한계가 있다. 야구에서 타율 2할 8푼과 3할 타자의 차이는 연봉이나 대우면에서 상당히 다른 결과를 가져온다. 하지만 데이터에 의존하지 않고 순수 인간의 판단만으로 이를 구분해낼 수 있을까? 야구 통계의 아버지 빌 제임스(Bill James)는 ‘머니볼’에서 이렇게 말한다. 3할을 치는 타자와 2할7푼5리의 타자간의 실력 차이를 직관적으로 알기는 어렵다는 이야기다.

Think about it. One absolutely cannot tell, by watching, the difference between a .300 hitter and a .275 hitter. The difference is one hit every two weeks. It might be that a reporter, seeing every game that the team plays, could sense that difference over the course of the year if no records were kept, but I doubt it. (@MBALL)

이번에는 개인 데이터 분석의 사례를 생각해보자. 필자는 2002년부터 다양한 방식으로 필자가 보내는 시간의 질을 측정해오고 있다. 2 시간의 질은 주로 그때 그때의 감정 상태에 기반하기 때문에 ‘행복도’라고 봐도 무방할 것이다. 이런 이야기를 주변 사람들에게 하면 항상 듣는 이야기가 있다. “행복도요? 그거 그냥 아는거 아닌가요? 왜 측정을 하죠?” 그럼 필자는 이렇게 답변한다. “그럼 지난주보다 이번주에 10% 더 행복한지 어떻게 알 수 있을까요?” 그럼 대부분의 사람들은 그때서야 수긍을 한다.

위 두 사례에서 내릴 수 있는 결론은 간단하다. 직관적으로 아는 것은 차이를 만들기에 충분치 않다는 것이다. 어쩌면 이것이 우리의 삶과 업무가 수많은 측정 기구로 둘러쌓인 이유일 것이다. 데이터에 기반한 문제해결은 이런 측정값을 모아 좀 더 정확하게 만들고, 이를 바탕으로 삶과 비즈니스의 중요한 문제에 대해 (예컨데 ‘주어진 예산으로 내년에 어떤 선수를 뽑아야 할까?’와 같은) 최적의 판단을 내릴 수 있도록 도와준다.

편향 인간의 판단은 정확도의 한계 이외에도 다양한 종류의 편향과 오류의 가능성을 내표하고 있다. 우선 인간의 판단은 상식이나 자신의 경험에 (그것도 최근의 경험에) 좌지우지된다. 또한 자신이나 자신이 속한 집단의 이익이 걸린 판단의 경우에는, 일단 결론을 내려놓고 이를 정당화할 근거를 찾는 경우도 비일비재하다. 이런 직관의 오류에 대해 ‘머니볼’에서는 다음과 같이 말한다.

The human mind played tricks on itself when it relied exclusively on what it saw, and every trick it played was a financial opportunity for someone who saw through the illusion to the reality. (@MBALL)

실제로 빌리빈 단장이 다른팀에 비해 좋은 선수를 싸게 살 수 있었던 것은 그의 경쟁자들이 직관의 편향이라는 함정에 빠진 반면에 그는 철저의 데이터에 근거해서 결정했기 때문이다. 즉, 다른 스카우터들이 선수의 키나 외모와 같은 눈에 띄지만 실제 경기력과는 관계가 별로 없는 사실에 근거해 판단을 내린 반면에, 빌리빈은 실제 경기 결과와 선수 개인의 특성에 관한 분석을 통해 발견한 출루율과 같은 (그 당시에는 사람들이 별로 신경쓰지 않았던) 지표에 의해 선수를 골랐다.

필자의 행복 측정 프로젝트에서도 비슷한 경험이 있다. 필자가 대학원을 마치고 직장을 구하던 2012년도, 몇달간의 행복도 데이터를 분석하던 필자는 놀라운 결론에 도달했다. 주중보다 주말이, 아침보다 밤, 연구실보다는 집에서의 행복도가 더 낮은 것이었다. 사실 그때까지만 해도 필자는 일반적인 통념에 따라 주중의 행복도가 높다고 생각하고 있었지만, 데이터는 그 반대의 사실을 알려주고 있었다. 쉴때 더 행복하다는 편견을 데이터가 고쳐준 것이다.

분석 결과의 효율적이고 정확한 구현

앞장에서 언급한대로 데이터 분석의 결과물은 다양한 형태로 구현될 수 있다. 일회성 분석이라면 분석 결과가 곧 산출물이 되겠지만, 많은 경우 데이터 과학의 대상이 되는 문제는 반복적으로 발생한다. 이런 경우의 산출물은 반복되는 의사결정을 자동화하는 통계 모델이 될수도 있고, 또한 사용자의 이용 패턴을 반영하는 검색이나 추천 알고리즘이 될수도 있다. 이런 데이터 과학의 산출물을 데이터 제품(Data Product)이라고도 한다.

데이터 기반의 해결책이 갖는 장점은 이런 구현 단계에서도 발휘된다. 우선 인간의 경험과 노력에 의존하는 기존 해결책에 비해 데이터에 기반한 모델이나 알고리즘은 반복적인 의사결정을 굉장히 효율적으로 내릴 수 있다. 또한 일단 모델이 만들어지면, 이를 더 큰 데이터에 적용하기 위해서는 더 많은 데이터를 넣어주면 된다. 모델을 다른 비슷한 상황에 적용하는 일도 간단하다. 해당 상황에 맞는 데이터를 넣어주면 되기 때문이다.

필자의 전공분야인 검색엔진의 경우를 생각해보자. 전통적으로 도서관 등의 정보 저장소에서 자료를 찾아주는 일은 사서의 역할이며, 이는 문헌정보학 및 관련분야의 지식을 필요로 하는 전문직이다. 하지만 아무리 뛰어난 사서라도 어느 이상의 규모를 초과하는 도서관의 장서에 대한 지식을 모두 갖출수는 없을 것이다. 반면에 구글이나 빙과 같은 웹 검색엔진은 전세계의 모든 문서에 대한 검색 서비스를 제공하면서도 상당한 정확도를 자랑한다. 또한, 일단 하나의 국가 혹은 시장에 대해서 검색엔진을 만들어 놓으면, 다른 시장에 대해 서비스하기 위해서는 해당 시장의 문서만 넣어주면 된다.

이처럼 데이터 기반의 제품들이 일단 만들어지면 너무나 쉽고 효율적으로 서비스를 제공할 수 있기 떄문에, 소비자와 물건을 혹은 소비자와 공급자를 연결하는 ‘중계업’들은 점점 설자리를 잃어가고 있다. 아마존으로 대표되는 전자상거래 업체들이 기존의 서점이나 소매상 등을 위협하고 있고, 넷플릭스와 같은 영화 렌탈 서비스가 기존의 비디오 대여점을 거의 대체해가고 있는 것이 대표적인 사례다.

투명하고 강력한 의사소통

접근 방식에 관계없이, 집단 내부나 혹은 고객을 위하여 문제를 해결하는 경우라면 그 최종단계는 관계자나 고객에게 그 결과를 전달하는 작업일 것이다. 객관적인 증거를 제시하기 어려운 기존의 문제해결 방법은 이런 소통 과정에서 많은 한계를 드러낸다. 당사자들이 자신의 주관적 견해에 따라 결과를 받아들이지 않을 수도 있고, 그러다보면 결국 최고의사결정권자의 의중에 따라 결론이 내려지게 마련이기 때문이다.

이런 상황에서 데이터 과학은 어떤 사람도 설득할 수 있는 힘을 부여한다. 이때 그 힘의 원천은 사실에 근거한 결론이다. 제아무리 주관이 강한 사람도 명명백백한 사실을 부인할수는 없을테니 말이다. 또한, 이런 결론은 비슷한 다른 문제에도 적용할 수 있다는 장점이 있다. 문제를 한번만 풀어 놓으면 결과를 계속 사용할 수 있는 것이다. 객관적인 관찰과 실험에 근거하는 과학 논문이 전세계적으로 읽히는 것은 이런 이유에서일 것이다.

물론 데이터 수집, 분석 및 소통에 이르기까지 데이터 과학의 모든 프로세스에는 주관이 개입할 여지가 있다. 하지만, 적어도 결론에 이르는 과정을 투명하게 공개한다면 데이터에 기반한 결정은 객관적으로 검증할 방법이 있다. 또한, 데이터가 있다고 모든 사람을 설득할 수 있는 것은 아니다. 하지만, 데이터의 힘에 대한 믿음이 확산되면서 점점 데이터 기반의 의사결정을 따르려는 개인이나 조직은 점점 늘어나고 있다.

맺음말: 데이터가 만능의 해결책은 아니다

지금까지 데이터 기반의 문제해결의 장점을 살펴보았다. 하지만 필자는 데이터가 모든 문제를 해결할 수 있는 만능의 해결책이라고 주장하는 것은 아니다. 사실 데이터를 통한 문제해결 과정은 수집, 분석, 소통에 이르기까지 상당한 시간과 노력을 필요로 한다. 데이터를 직접 수집해야 하는 경우에는 특히 그렇다. 따라서 데이터 기반의 접근방식을 택하기 이전에, 이런 비용을 감수할 가치가 있는지 충분히 검토해야 한다.

결국 중요한 것은 비용을 정당화할 만큼의 효용을 데이터 기반의 해결책을 통해 뽑아낼 수 있느냐이다. 만약 실패했을 경우 값비싼 대가를 치루어야 하는 의사결정이나, 조직의 운명을 결정할 수 있는 목표 달성을 위해서라면 그에 합당한 투자를 해야 할 것이다. 하지만, 적당한 데이터가 존재하지도 않고, 아주 중요하지도 않은 일회성 결정이라면 굳이 데이터를 모아 분석하는 수고를 할 필요가 있을까.

다시 스포츠 데이터 분석을 사례로 생각해보자. ‘머니볼’에서는 1980년대부터 야구에 데이터 기반의 분석 방법이 널리 사용되게 된 배경을 다음과 같이 설명한다.

When Bill James published his 1977 Baseball Abstract, two changes were about to occur that would make his questions not only more answerable but also more valuable. First came radical advances in computer technology: this dramatically reduced the cost of compiling and analyzing vast amounts of baseball data. Then came the boom in baseball players’ salaries: this dramatically raised the benefits of having such knowledge. (@MBALL)

즉, 야구라는 스포츠가 시작되면서부터 데이터는 쌓여왔지만, 실제 데이터 분석이 진가를 발휘하게 된 것은 극히 최근의 일이라는 것이다. 컴퓨터 기술 발전하면서 분석의 비용은 떨어지고, 선수의 진짜 가치를 판별할 수 있는 분석력의 가치는 메이저리그 선수들의 몸값이 폭등하면서 훨씬 높아졌다는 이야기다.

이처럼 문제해결의 가치는 시대의 흐름에 따라 바뀌기도 하니, 예전에 유효했던 접근방식일지라도 꾸준히 재검토해볼 필요가 있다. 하지만 분석 기술의 발전에 따른 품질 향상과 비용의 하락은 모든 분야에 공통되는 요인이다. 따라서 필자는 데이터 기반의 접근방식이 지금보다 훨씬 널리 쓰이리라는 전망에 한표를 던지고 싶다.

p.s. 추신: 이 글은 권정민 / 김성철님의 피드백을 거쳐 작성되었습니다. 제 글의 초고는 독자그룹 여러분들께 먼저 보내드립니다.

참고자료

Lewis, Michael. 2004. Moneyball: The Art of Winning an Unfair Game. WW Norton & Company.


  1. 이 책은 데이터 과학을 자신의 분야에 (특히 데이터 과학이 현재 많이 사용되지 않는 분야에) 적용하고자 하는 개인이라면 꼭 일독을 권한다. 
  2. 이는 예를 들어 자신의 현재 느끼는 주관적인 행복도를 1~5까지로 평가하는 것이다. 좀더 자세한 내용은 다음 슬라이드를 참조하기 바란다. 이 발표 내용은 Seattle Times에 기사화되기도 했다. 

데이터로 ‘과학’하기: 데이터 과학자의 자질과 태도

지난 글에서 데이터 과학의 ‘데이터’에 대해 알아보았다. 이번에는 데이터를 가지고 ‘과학’을 한다는 것이 어떤 의미인지 생각해보자. 과학의 일반적인 정의는 어떤 대상을 탐구하여 좀더 명확한 지식을 얻는 것이다. 이를 좀더 현실적인 관점에서 생각해보면 과학은 우리가 당면한 문제를 해결하는 수단으로서 사용된다. 여기서 문제는 어떤 의사결정을 내리거나, 목표 달성을 위한 방법을 찾거나, 혹은 알려지지 않은 현상을 예측하는 모델을 만드는 것 등을 모두 포함한다.

또한 구체적인 행위(혹은 프로젝트)로서의 과학에는 대부분 주어진 기간과 예산, 그리고 ‘고객’ — 해당 프로젝트를 요청한 개인이나 조직이 있다. 따라서, 데이터를 통한 문제해결이 효과를 거두기 위해서는 우선 주어진 기간과 예산이라는 제약조건을 준수하고, 그 결과를 고객과 성공적으로 소통할 수 있어야 한다. 예를 들어 태풍의 진로를 예측하는 모델은 태풍이 실제로 접근하기 전에 답을 내놓지 않으면 아무 소용도 없을 것이다. 기껏 내놓은 해결책이 고객의 반발에 부딛히는 경우에도 이를 효과적으로 설득할 수 있어야 한다.

이를 종합하면 데이터 과학은 데이터에 근거하여 대상을 탐구하고, 이를 바탕으로 당면한 문제를 주어진 제약하에서 풀어내려는 노력으로 정의할 수 있겠다. 여기서도 중요한 점은 과학은 ‘문제’에서 출발하며, 데이터는 문제를 풀기 위한 수단이라는 것이다. 또한 현실 세계의 데이터 과학 프로젝트는 주어진 제약조건 하에서 고객이 요구하는 산출물을 만들어내야 한다. 이점을 제대로 이해하지 못하면 앞에서 지적한 대로 지나치게 많은 데이터를 가지고 씨름하는 우를 범할 수 있다.

데이터 과학의 단계

위 정의에 근거한 데이터 과학의 일반적인 단계는 다음과 같다.

  1. 주어진 문제를 명확히 정의한다.
  2. 문제를 풀기 위한 데이터를 구한다.
  3. 데이터를 가공하고 분석하여 해결책을 유도한다.
  4. 해결책을 여러가지 방식으로 구현한다.
  5. 관계자에게 결과를 적절한 형태로 소통한다.

다음에 위의 각 단계를 상세히 설명하겠지만, 여기서는 각 단계를 간단히 짚어보자. 우선 (1) 문제 해결이 목표인만큼 문제 정의에서 출발한다. 또한, (2) 문제 해결에 적합한 데이터를 필요한 만큼 구해야 할 것이다. 데이터가 존재하는 경우에는 기존의 데이터에서 필요한 부분을 추출하고, 그렇지 않은 경우에는 직접 수집하면 된다. (3) 수집 및 추출된 데이터는 대부분 적절한 가공 과정을 거쳐야 다양한 분석 작업에 사용할 수 있다. 가공된 데이터를 가지고 시각화 및 분석을 통해 해결책을 유도할 수 있다.

여기까지가 문제 정의에서 해결책을 유도하는 과정이다. 만약 단순히 해결책을 찾는 것이 목표라면 여기서 멈출 수 있겠지만, (4) 실제로 대부분의 문제는 그 해결책을 현실 세계에서 어떤 식으로든 구현해내야 하는 것이 보통이다. 예컨데 이메일 스펨을 극복하는 것이 목표라면, 데이터를 분석해서 스팸의 패턴을 찾아낸 후에는 실제로 작동하는 스펨 필터를 구현해서 메일 시스템에 통합해야 하는 것이다. 그리고, 기업 등의 조직 환경에서 문제를 해결하는 경우에는 (5) 문제 해결의 결과를 관계자에게 적절히 소통하는 작업도 필수적이다.

물론 현실 세계의 문제를 해결하는 일이 이렇게 단순하게(straightforward) 이루어지지는 않는다. 보통 문제 정의 단계서부터 다양한 이해당사자와 의견 조율을 거쳐야 하고, 데이터를 제대로 구하지 못해 목표를 수정해야 하는 경우도 비일비재하다. 또한, 데이터를 분석하다보면 미처 고려하지 못한 사항을 발견하거나, 관련된 문제를 발견하기도 한다. 해결책은 찾았지만 구현 및 소통 단계에서 어려움에 부딛히는 경우도 많다. 즉, 데이터 기반의 문제해결 과정에는 다양한 난관이 존재한다.

따라서 위에서 설명한 (1)~(5)까지의 단계는 가이드라인 정도로 생각하는게 옳다. 보통은 각 단계가 몇번은 반복되어야 다음 단계로 넘어갈 수 있기 때문이다. 심지어는 수집 단계에서의 오류가 분석 단계에서 발견되어 다시 데이터를 모아야 하는 경우도 비일비재하다. 이런 의미에서도 앞서 설명한 스몰데이터 위주의 린(Lean)한 접근방식이 필수적이다. 불확실성이 큰 문제해결의 초기 단계에 시간과 노력을 많이 기울이는 대신, 가벼운 이터레이션(iteration)을 여러번 반복하는 것이 해결책에 훨씬 효율적으로 다가갈 수 있기 때문이다.

이쯤 이야기하면 ‘데이터과학이 힘든 거구나’ 하는 독자가 있을 것이다. 하지만 이러한 불확실성은 데이터과학의 본질을 생각해보면 너무나 당연한 일이다. 과학 자체가 기존에 뚜렷한 해결책이 없는 문제를 풀려는 노력이고, 데이터를 사용한다는 것은 모든 현상을 설명하는 이론이 존재하지 않기에 경험적 접근을 필요로 한다는 뜻이기 때문이다. 하지만 ‘머니볼’의 [@MBALL] 빌리빈 단장이 데이터 기반의 선수선발로 메이저리그를 뒤흔들었듯, 불확실성이 클수록 그에따른 보상도 클수 있다는 것을 유념하자.

데이터 과학자의 자질

지금까지 데이터 과학의 프로세스를 알아보았다. 그렇다면 이런 일을 하는 데이터 과학자는 어떤 사람이고, 어떤 자질이 요구되는가? 사실 전통적인 과학자나 데이터 분석가도 이런 업무에 종사한다고 볼 수 있지 않을까?

위 단계를 바탕으로 과학자, 데이터 분석가, 그리고 데이터 과학자와의 관계도 정의할 수 있다. 우선 과학자는 가설을 검증하여 이론화하기 위한 수단으로 데이터를 모으고 분석하는 사람들이다. 이는 앞장에서 설명한 단계의 (1)~(3)에 해당하는 과정이다. ^[각주] 또한 (좁은 의미의) 데이터 분석가는 주어진 데이터를 분석하여 가치있는 결론을 유도하는 사람들이다. 이는 주로 (3)에 해당한다. 또한 조직의 규모가 커질수록 개발자, 디자이너, 매니저 등 각 부분을 담당하는 전문가가 따로 있을 것이다.

과학자, 데이터 분석가, 데이터 과학자의 역할 차이

과학자, 데이터 분석가, 데이터 과학자의 역할 차이

이처럼 전통적인 의미의 과학자나 데이터 분석가가 앞서 설명한 단계의 일부에 초점을 맞추는 것에 반해, 데이터 과학자는 문제 정의에서부터 데이터 수집과 분석, 해결책 구현, 그리고 커뮤니케이션에 이르는 문제 해결의 전단계에 관여한다는 특징이 있다. 데이터 과학자가 이렇게 다양한 역할을 요구받는 것은 문제 해결의 각 단계가 밀접하게 연관되기 때문이다. 예컨데, 제대로 된 문제 정의와 데이터의 수집 과정을 거지치 않고는 효과적인 분석이 이루어지기 힘들며, 해결책의 구현과 소통을 위해서는 분석 과정에 대한 이해가 필수적인 것이다.

하지만 한 개인이 이 모든 분야의 전문가가 된다는 것은 거의 불가능에 가깝다. 그렇다면 현업의 데이터 과학자들은 어떻게 이를 대처하고 있을까? 최근에 오라일리에서 발표한 자료에 따르면 [@harris13] 데이터 과학자의 유형을 크게 데이터 비즈니스맨/창조자/연구자/개발자의 4가지로 나누고 있다. 예컨데 데이터 개발자는 주 업무는 개발자이면서 데이터 과학의 전 프로세스에 관여하는 사람이다.

데이터 과학자의 유형

데이터 과학자의 유형

또한 아래 차트를 보면 각 유형의 전문가들은 서로 다른 종류의 스킬셋을 개발하고 있는 것을 볼 수 있다. 예컨데 데이터 비즈니스맨의 경우 비즈니스 스킬의 비중이, 데이터 연구자의 경우 통계 스킬의 비중이 압도적으로 높다.

데이터 과학자의 유형별 스킬셋의 분포

데이터 과학자의 유형별 스킬셋의 분포

즉, 실제 데이터 과학자들도 모든 분야에 다 전력투구하기보다는 자신의 배경과 업무에 맞는 역할을 찾고, 그 역할에 집중하려고 노력하는 것을 볼 수 있다. 자신의 핵심 스킬을 중점적으로 갈고 닦되, 다른 분야에도 관심을 갖고 배우는 소위 T자형 인재가 되어야 하는 것이다. 모든 개인에게 주어진 시간은 한정적이고, 현업에서는 대부분 다른 분야의 전문가와 협업한다는 사실을 감안하면 이는 현실적인 선택이다. 특히 위 차트에 다르면 데이터 비즈니스맨과 데이터 연구자의 경우 그 집중도가 높다.

이처럼 협업이 중요시되는 업무의 특성상 데이터 과학자에게 높은 수준의 커뮤니케이션 스킬이 필수적이다. 또한 앞서 밝힌대로 데이터 기반의 문제해결은 분질적으로 불확실성이 크고, 이를 위해 요구되는 도구와 기술 역시 하루가 다르게 진화하고 있다. 따라서 데이터 과학자에게는 상황 변화에 따라 문제 접근의 방식을 바꿀 수 있는 유연성과, 필요에 따라 다양한 툴을 배우거나 심지어는 만들어낼 수 있는 학습능력이 요구된다. [@Davenport12]

데이터 과학을 시작하기 위한 태도

앞에서 살펴본대로 데이터 과학자에게는 다양한 자질이 요구된다. 그렇다면 이런 자질을 극대화할 수 있는 태도는 무엇일까? 우선 데이터 과학자는 문자 그대로 ‘과학’을 하는 사람이다. 현상을 종합하여 그 본질을 밝히는 과학자로서의 태도를 가져야 한다. 하지만 현업에 종사하는 데이터 과학자는 주어진 예산과 기한내에 문제에 대한 실용적인 해결책을 찾아내는 비즈니스맨과 공학자의 면모도 갖추어야 한다. 이 중 문제 해결 단계별로 특히 중요한 태도로 다음 몇가지를 들 수 있다.

호기심과 관찰력 우선 문제 탐색 및 정의 단계에서는, 주변 현상에서 데이터를 통해 해결할만한 문제를 찾아내는 호기심과 관찰력이 필요하다. 일단 문제가 정의된 후에는 문제 해결에 단서가 될만한 데이터를 최대한 찾아낼 수 있어야 할 것이다. 셜록 홈즈는 사실적 증거에 기반하여 미궁에 빠진 사건을 해결하는 능력으로 유명하다. 고객의 문제에 대한 데이터 기반의 해결책을 찾아야 하는 데이터과학자 역시 명탐정이 되어야 하지 않을까?

냉정함과 열린 마음 문제 정의가 끝나고 데이터를 수집 및 분석하는 단계에서는 주관을 최대한 배제하고 객관적인 관점에서 데이터를 바라볼 수 있는 냉정함과 열린 마음이 필요하다. 즉 자신의 관점을 유지하되, 데이터가 밝히는 증거를 자신의 주관과 입장보다 우선시해야 한다. 이에 관련하여 데이터 과학 커뮤니티에서 잘 알려진 격언이 있다.

데이터가 직접 말하게 하라.

이처럼 데이터를 통해 문제를 해결하려는 사람이라면 자신의 주관이 결과물에 투영되는 것을 최소화해야 한다. 이는 법을 집행하는 책임을 가진 판사에게 높은 도덕적 기준이 요구되는 것과 같은 이치다. 데이터의 힘을 빌어 문제를 해결해야 할 책임을 부여받는 데이터 과학자가 데이터의 힘을 남용한다면 훨씬 큰 피해를 끼칠 수 있기 때문이다. 2005년에 나라 전체를 발칵 뒤집으며 학계 전체에 대한 불신을 낳은 황우석 교수 사태를 기억한다면, 데이터 조작의 유혹이 얼마나 개인과 사회에 치명적인 피해를 가져오는지 알 수 있다.

끈기와 열정 흔히 과학자, 혹은 데이터 과학자를 생각하면 엄청나게 쌓여있는 데이터를 보고 섬광처럼 빛나는 통잘력을 발휘하여 단숨에 해결책을 찾아내는 광경을 떠올릴지도 모르겠다. 하지만 앞서 설명했듯 데이터 분석 및 모델링은 데이터 과학자의 업무중 일부에 해당하며, 잘 정리된 데이터가 분석되기만을 기다리는 상황은 현업에서는 좀처럼 발생하지 않는다.

데이터 과학자들의 업무 프로세스를 최근 기사에서도 데이터 과학자는 약 80%의 시간을 분석을 위한 데이터를 모으고 준비하는데 사용한다고 밝히고 있다. [@lohr2014big] 또한 앞서 설명했듯이 현업에서의 데이터 과학은 문제정의부터 의사소통까지의 전 과정이 끊임없이 반복되는 지난한 과정이다. 이처럼 데이터 과학의 실상을 알고나면 가장 중요한 자질이 ‘끈기’라는 생각을 하게 된다. 그리고 이런 끈기는 열정이 없이는 지속되기 어려운 것이다.

맺음말

이번 글에서는 데이터를 가지고 ‘과학’을 한다는 의미를 살펴보았다. 데이터 과학의 프로세스와, 이에 관련화여 데이터 과학자의 업무 및 요구되는 자질과 태도를 설명했다. 데이터 과학과 같이 광범위하고 빠르게 변화하는 분야에 대한 글을 쓴다는 것은 조심스러운 일이지만, 이번 글이 독자 여러분의 이해에 도움이 되기를 바라는 마음이다. 데이터과학자가 되는 과정에 대해서는 많은 자료가 있는데, 데이터과학 자료모음의 관련섹션을 참고하기 바란다.

추신: 이 글은 전희원 / 박미라 님의 피드백을 거쳐 작성되었습니다. 제 글의 초고는 독자그룹 여러분들께 먼저 보내드립니다.

참고문헌

Davenport, Thomas H, and DJ Patil. 2012. “Data Scientist: The Sexiest Job of the 21st Century.” Harvard Business Review Magazine.

Harlan Harris, Marck Vaisman, Sean Murphy. 2013. “Analyzing the Analyzers: An Introspective Survey of Data Scientists and Their Work.” O’Reilly Free Report.

Lewis, Michael. 2004. Moneyball: The Art of Winning an Unfair Game. WW Norton & Company.

Lohr, Steve. 2014. “For Big-Data Scientists, Janitor Work Is Key Hurdle to Insights.” The New York Times 17.

‘데이터’ 과학 개념잡기: 빅데이터의 허상과 스몰데이터의 가치

오늘은 데이터 과학의 ‘데이터’를 이야기해보자. 본질적으로 데이터는 현실을 반영하는 기록이다. 예컨대 각 국가별 통계 지표는 다양한 관점에서 해당 국가의 현황을 파악할 수 있게 해준다. 하지만 국가별 통계에 한 나라의 모든 현상이 기록되지 않듯이 현실의 모든 단면을 데이터로 표현하는 것은 불가능하다. 또한 모든 대상을 다 기록할 수 있는것은 아니다. 예컨대 사람의 뇌에서 일어나는 대부분의 현상은 아직도 대부분 이해되지 못하고 있다.

따라서 데이터는 보통 데이터를 만든 주체의 고유한 의도와 관점을 반영하여 만들어진다. 예컨대 기업의 재무제표는 해당 회사를 재무적 관점에서 바라본 것으로 경영진, 투자자 및 규제 당국의 필요에 부응한다. 또한 데이터의 수집 과정에서 다양한 기술적, 시간적, 비용적인 제약조건이 고려되어야 한다. 결론적으로 데이터는 어떤 주체가 특정한 목표와 의도를 가지고, 다양한 제약조건 하에서 만들어낸 현상의 기록이라고 정의할 수 있다. 1

여기서 중요한 점은 데이터는 특정한 목표를 가지고 만들어진 수단이지 그 자체가 목표는 아니라는 점이다. 즉, 데이터 과학을 집짓기에 비유하면 데이터는 원재료와 같다. 물론 제대로 된 집을 짓기 위해서는 좋은 재료가 필요하다. 하지만, 재료가 많다고 더 좋은 집을 지을 수 있는 것도 아니고, 솜씨있는 장인은 아마도 제한된 양과 적당한 질의 재료로도 좋은 집을 짓는 사람일 것이다. 이런 관점에서 최근의 빅데이터 열풍은 주객이 전도된 양상이라고 하겠다.

대부분의 데이터는 테이블로 표현가능하다

아직도 데이터라고 하면 약간 막연할 것이다. 이제 지금 설명한 ‘데이터’라고 하는 대상을 좀더 구체적으로 표현할 수 있는 방법을 알아보자. 데이터 과학을 시작하는 독자들의 이해를 돕기 위해 조금 과장해서 이렇게 말할 수 있다.

“모든 데이터는 테이블이다.”

여기서 테이블은 우리가 흔히 보는 행(row)과 열(column)로 구성된 표를 말한다. 흔히 보는 제품별 사양 비교나 날짜별 날씨 변화같은 표 말이다. 여기서 열은 데이터가 갖는 속성을, 그리고 행은 그런 속성을 갖는 개별 대상에 해당한다. 각 열을 보면 데이터가 가진 각 속성의 분포를, 각 행을 보면 개별 대상의 모든 속성을 볼수 있다. 즉, 테이블은 우리가 관심을 갖는 대상의 다양한 속성을 담는 그릇이다.

그럼 정말 모든 데이터는 테이블로 존재하는가? 반드시 그렇지는 않다. 데이터는 실제로 다양한 형태를 갖기 때문이다. 요즘 자주 이야기하는 사회관계망(social network) 데이터는 각 개체가 다른 개체와 갖는 연결관계를 표현하는 그물망(graph) 형태를 띤다. 또한 문서와 같은 텍스트 데이터, 그리고 사진, 음성 및 동영상과 같은 멀티미디어 데이터도 있다.

그럼에도 불구하고 필자가 데이터는 테이블이라고 한 것은 데이터 과학에서 관심을 갖는 데이터의 절대 다수가 테이블 형태를 띠거나, 혹은 테이블로 변환될 수 있기 때문이다. 위에서 언급한 그물망 역시 테이블에 연결의 시작점과 종료점의 형태로 저장할 수 있으며, 텍스트 및 멀티미디어 데이터도 테이블의 자료형 중 하나로 저장할 수 있다. 따라서, (거의) 모든 데이터는 테이블 형태로 표현할 수 있다고 해도 과언이 아니다.

무엇보다 테이블은 인간에게나 컴퓨터에게나 이해하고 처리하기 편리한 형태다. 스프레드시트, 데이터베이스 등 대부분의 데이터 처리 프로그램이 테이블 형태의 데이터를 다루는 것은 우연이 아니다. 또한, R, Matlab과 같은 데이터 처리용 프로그래밍 언어들도 테이블을 기본 자료형으로 사용한다. 좀더 큰 데이터베이스의 경우에도 SQL이나 Hive와 같은 테이블 형태의 데이터를 다루는 언어를 사용해 접근할 수 있다.

최근 통계도 이런 설명을 뒷받침한다. 오라일리 사에서 2014년에 데이터 과학에 종사하는 800여명의 현업 실무자를 대상으로 실시한 여론조사에 따르면 가장 널리 사용되는 데이터 과학의 도구는 SQL, 엑셀, R과 파이썬으로 나타났다. 즉, 아직도 테이블 기반의 도구들이 대세라는 결론이다.

ch1_dss_survey

이렇게 데이터를 테이블로 생각하면 데이터와 관련된 다른 개념을 쉽게 이해할 수 있다. 빅데이터는 단지 행과 열이 굉장히 많은 테이블이다. 또한, 대부분의 데이터 관련 작업은 테이블을 만들고, 처리하고, 분석하는 일이다. 이제 말도 탈도 많은 빅데이터에 대해 알아보자.

빅데이터의 허상

앞서 데이터는 테이블이고, 빅데이터는 단지 굉장히 큰 테이블이라고 말했다. 그렇다면 왜 다들 빅데이터가 중요하고, 빅데이터 솔루션을 모두가 알아야 한다고 이야기하는 것일까? IT업계에서는 은총알(silver bullet)이라는 말이 있다. 새로운 기술이 나타날때마다, 모든 문제를 해결할 수 있을 것처럼 과장되어 소개되는 현상을 가리키는 말이다. 필자의 견해로 빅데이터는 대표적인 은총알이다.

우선 빅데이터의 개념을 생각해보자. 널리 통용되는 말로는 데이터의 양(Volume)이 많고, 복잡성(Variety)이 크며, 빨리빨리 쌓이는(Velocity) 것이 빅데이터라고 말한다. 빨리빨리 쌓이면 양이 많아질테니, 결국은 규모가 크고 복잡한 것이 빅데이터이다. 그리고 ‘크다’의 기준은 보통 개인용 워크스테이션 한대에 들어가는지를 기준으로 한다.

데이터를 처리하기 위한 컴퓨팅 기술은 1950년대부터 발전해 왔는데, 그렇다면 왜 빅데이터라는 개념을 만들었을까? 이는 최근에 엄청난 규모의 데이터를 수집 및 처리하고, 이를 바탕으로 검색 및 추천과 같은 서비스를 만드는 구글, 야후 및 아마존과 같은 기업이 등장과 관련이 깊다. 이런 회사에서 자체 필요에 따라 대용량 데이터를 처리 기술을 급속도로 발전시켰고, 이런 기업에서 개발한 기술들이 솔루션화되어 기업용 컴퓨팅 시장의 큰 축을 차지하게 된 것이다.

이처럼 빅데이터는 대기업, 그것도 대용량 데이터를 일상적으로 처리하는 온라인 서비스 기업의 필요에 따라 탄생한 개념이다. 물론 정말 빅데이터 활용이 필요한 장소와 문제도 있다. 예컨대 검색이나 추천 서비스를 개발하는 경우 데이터가 클수록 결과물의 질도 높아진다. 예컨데 구글의 PageRank같은 알고리즘은 전세계의 웹문서 전체를 넣고 돌려야 제대로 된 결과를 얻을 수 있을 것이다. 또한 천문학, 생물학 등 원본 데이터의 크기가 워낙 큰 분야도 있다.

하지만 데이터 과학을 공부하는 우리 모두가 빅데이터에 관심을 가지고, 빅데이터 솔루션을 알아야 할까? 필자는 그렇지 않다고 생각한다. 빅데이터와 관련 기술은 꼭 필요한 곳에 한정적으로 사용해야 하며, 전문적인 데이터 과학자가 아닌 일반인이 빅데이터 솔루션을 배워야 할 이유는 별로 없다는 것이 필자의 의견이다. 그 이유를 알아보자.

빅데이터는 비싸고 느리다. 우선 세상의 이치가 그렇듯이, 데이터의 규모가 커질수록 이를 처리하는 비용은 커지고 속도는 느려진다. 이런 비효율은 데이터와 관련된 모든 작업을 복잡하고 어렵게 만든다. 데이터를 직접 수집해야하는 경우라면 그 어려움과 비용은 이루 말할수 없을 것이다. 따라서 정말 그렇게 많은 데이터가 필요한지 꼭 짚고 넘어갈 일이다.

데이터의 크기는 분석의 질과도 관련이 깊다. 데이터 분석을 제대로 해본 사람은 공감하겠지만 데이터 처리 및 분석 작업은 한번에 끝나는 일이 거의 없고, 수정에 수정을 거듭해야 끝나는 것이 태반이다. 그런데 분석에 빅데이터를 사용하면 하루에도 수십번 반복해야 하는 작업을 한두번밖에 못하게 되고, 이는 결국 분석의 질을 떨어뜨린다. 즉 크기에서 얻어지는 장점이 작업의 비효율성으로 상쇄되는 것이다.

빅데이터를 작게 만들 수 있다. 이런 비효율을 최소화하기 위해 데이터 분석 업무에서 가장 먼저 하는 작업이 데이터의 크기를 최대한 줄이는 것이다. 여기에는 다양한 방법이 있는데, 통상적인 방법은 테이블 관점에서 생각해보면 필요한 행과 열만 선택하거나, 집계(aggregation)를 통해 개별 데이터를 그룹화하는 것이다. 또한 분석 작업의 종류에 따라, 데이터에서 적당한 수의 표본을 무작위 추출하여 (random sampling) 사용하는 방법도 있다.

마이크로소프트의 온라인 서비스 팀에서 근무하는 필자는 빅데이터를 일상적으로 다룬다. 하지만 대부분의 분석 작업에 있어서는 위에서 설명한 과정을 거치면 데이터를 필자가 사용하는 PC의 메모리에 올려서 R이나 엑셀같은 툴로 볼 수 있다. 이처럼 일단 빅데이터를 가공하여 작게 만들면 훨씬 다루기 편하기 때문에, 필자는 프로젝트 초반을 제외하고는 빅데이터 솔루션을 많이 사용하지 않는다.

요약하면 빅데이터 및 빅데이터 솔루션은 필요할 때만 사용해야 한다. 앞서 솜씨좋은 장인은 적은 재료로 좋은 집을 지을 수 있는 사람이라고 했다. 그런데 최근의 빅데이터 열풍은 지을 건물은 생각지도 않고 자재부터 모으는 격이다. 그리고 빅데이터 솔루션은 이런 대규모 자재를 다룰 수 있는 중장비에 비유할 수 있다. 오두막을 짓는데 고층건물에나 필요한 타워크레인을 동원한다면 이 얼마나 큰 낭비인가.

앞서 소개한 오라일리의 데이터 과학 설문조사를 다시 인용해본다. 전통적인 RDBMS와 하둡 기반의 빅데이터 솔루션의 활용도를 묻는 질문에 하둡만을 쓴다는 답변은 15%도 안되었다. 데이터 과학은 모두 빅데이터를 사용해야 할것처럼 이야기하지만, 현업에서는 아직도 과거의(?) 기술이 많이 사용된다는 반증이다. 그리고 앞서 이야기했듯, 하둡에서 역시 Hive및 Spark등 SQL등의 테이블 기반 연산을 지원하는 솔루션이 계속 등장하고 있다.

ch1_dss_survey_rdb_hadoop

스몰데이터로 시작하라

위에서 빅데이터를 꼭 필요한 경우에만 사용해야 한다는 점을 언급했다. 그렇다면 대안은 무엇인가? 필자는 그 대안으로 스몰데이터를 제시하고 싶다. 여기서 스몰데이터는 주어진 문제를 푸는데 필요한 최소량의 데이터를 말한다. 마치 린(Lean) 생산에서 수요에 맞추어 생산량을 조절하듯이, 분석의 목표를 달성하기 위한 최소한의 데이터만을 수집해서 사용하는 것이다.

데이터 과학의 프로세스 관점에서 생각해보면, 이는 데이터를 통해 풀고자 하는 문제를 먼저 정하고 그에 따라 필요한 만큼의 데이터만 모으라는 이야기다. 만약 다량의 데이터가 이미 존재하는 경우라면 거기서 필요한 만큼의 데이터를 추출해서 사용하면 된다. 어쨌든 데이터에 욕심을 부리지 말고 꼭 필요한 만큼의 데이터만 가지고 시작하라는 것이다. 2

이처럼 주어진 문제의 특성에 따라 필요한 데이터의 양을 산정하는 방식에는 많은 장점이 있다. 우선 비교적 소량의 데이터를 가지고 분석에 임하기 때문에 작업의 효율성을 최대화할 수 있다. 앞서 언급한대로 이런 효율적인 프로세스는 결국 결과물의 품질과 직결된다. 또한, 데이터가 존재하지 않아 수집에서 출발해야 하는 상황에서는, 이런 린(Lean)한 접근법을 통해 데이터를 모으는 수고와 비용을 아낄 수 있다.

물론 스몰데이터로 시작하다보면 데이터가 부족한 경우가 있다. 그러면 그때그때 필요한 만큼만 모으거나 원본 데이터에서 추출하면 된다. 필자의 경험에 따르면 이렇게 필요에 따라 데이터의 양을 늘려가는 것이, 처음부터 큰 데이터로 작업하는 비효율을 감수하는 것 보다 훨씬 낫다. 데이터 과학의 ‘데이터’가 제대로 된 ‘과학’을 하기 위한 수단이라는 점을 기억한다면 이는 당연한 귀결이 아닐까.

마지막으로, 이 글에서 빅데이터 및 관련 솔루션의 중요성을 폄하하고 싶은 의도는 추호도 없다는 점을 밝히고 싶다. 단지, 데이터 과학과 빅데이터가 거의 동의어처럼 사용되는 상황에서, 데이터 과학을 처음 접하는 사람들이 빅데이터라는 말에 기가 눌려 포기하는 우를 범하지 않기를 바라는 바램이다. 그리고, 이처럼 빅데이터에 대한 올바른 인식을 확산시키는 것이 현재의 열기를 장기적인 성장으로 이어가는 길이라고 믿는다.

추신: 이 글은 권정민 / 최현우 / 김성철님의 피드백을 거쳐 작성되었습니다. 제 글의 초고는 독자그룹 여러분들께 먼저 보내드립니다.


  1. 물론 여기서 목표는 데이터의 특성에 따라 상당히 광범위하게 정의될 수도 있고, 일단 만들어진 데이터를 다른 용도로 사용하는 것도 가능하다. 
  2. 주어진 문제에 필요한 데이터 양을 산출하는 방법은 통계학에서 표본 크기 추정(sample size estimation)이라고 하는데, 나중에 자세히 다루도록 하겠다. 

데이터 과학을 시작하는 방법

이 블로그는 ‘우리 모두를 위한 데이터 과학’을 이야기한다. 필자가 전달하고자 하는 주된 메시지는 우리 주변에는 이미 데이터를 수집하고 분석할 수 있는 다양한 수단이 존재하며, 이런 데이터를 활용하여 삶과 업무를 개선하는 일은 결코 복잡하지 않다는 것이다. 이를 위해 이 필자는 중고교 수준의 통계 및 컴퓨터 지식을 갖춘 보통 사람이 데이터 과학을 시작할 수 있는 방법을 제시하고, 이런 방법을 개인의 삶과 업무를 위해 활용하는 다양한 사례를 소개할 생각이다.

불행히도 ‘빅데이터’, ‘데이터 과학’등의 용어는 상당히 거창하게 들린다. 적어도 보통 사람이 ‘나도 한번 해볼까’ 하는 의욕을 갖게 하는 단어는 아니다. 뭔가 대용량 기업용 컴퓨터도 있어야 될 것 같고, 프로그래밍도 알아야 될 것 같고, 적어도 이공계 전공이 아니면 명함도 못 내밀것 같다. 하지만 필자는 그렇지 않다고 단언하고 싶다.

데이터는 우리의 삶과 일에서 당면한 문제를 해결할 수 있게 도와주는 수단에 불과하다. 사실 우리는 이미 체중계나 통장 잔고 등을 확인하면서 ‘오늘은 어제보다 체중이 늘었으니 셀러드를 먹어야 하나?’, ‘아, 이번달에는 전기세가 많이 나갔으니 실내온도를 조정해야겠다’ 등의 의사결정을 하고 있다. 이처럼 데이터를 사용해 현상을 파악하고 문제를 해결하려는 노력이 데이터 과학의 시작이다.

하지만 좀더 생각해보면, 우리가 일상적으로 내리는 ‘데이터 기반의 의사결정’에는 다양한 허점이 있다. 예를 들어 사람의 몸무게는 그날 그날의 신진대사에 따라 1-2킬로그람 정도는 매일 변한다. 따라서 어제와 오늘을 비교하여 체중이 줄었다고 결론을 내리는 것은 오류의 소지가 있다. 마찬가지로, 전기세가 많이 나올 수 있는 원인은 여러가지가 있는데, 이를 난방비와 연관짓는 것은 성급한 일이다.

필자가 생각하는 데이터 과학은 이런 상황을 정확히 이해하고 효과적인 결정을 내리도록 도와주는 수단이다. 예컨대, 앞에서 언급한 체중과 식단의 문제를 다시 생각해보자. 매일매일의 체중변화를 감안하여 일주일 정도 체중을 측정해보면 실제로 체중이 줄고 있는지를 좀더 정확하게 판단할 수 있다. 이때 가급적 같은 시간에 같은 옷을 입고 (혹은 아무것도 입지 않고) 체중을 재면 측정값의 오차를 최소화할 수 있을 것이다. 이렇게 하면 데이터 과학에서 말하는 ‘수집’단계가 끝난 것이다.

데이터 분석도 사실 복잡하고 난해한 것은 아니다. 앞서 수집한 데이터를 엑셀에 넣고 간단한 계산을 하면 평균과 오차 범위1를 구할 수 있다. 만약 채식을 하는 것이 실제로 몸무게를 줄이는지 궁금하다면, 각각 다른 조건하에서 데이터를 모은 후, 두 조건의 데이터 사이에 통계적으로 유의미한 차이가 있는지 비교하면 된다. 역시 엑셀에서 함수 호출 하나로 끝나는 일이다.

위에서 설명한 데이터 수집과 분석은 중고교 수준의 통계 지식와 오피스 활용 정도의 컴퓨터 실력만으로도 충분히 따라할 수 있는 것이다. 물론 데이터 과학에 앞에서 설명한 단순한 데이터 수집 및 분석 작업만 있는 것은 아니다. 사실 최근에 데이터 과학이 조명받게 된 것은 ‘빅데이터’로 대표되는 대용량 데이터의 등장과, 이를 활용한 검색 및 추천등의 데이터 기반 서비스의 등장에 힘입은 바가 크다. 이런 서비스가 일상화되면서, 데이터의 활용 범위와 위력을 실감하는 사람이 늘어난 것이다.

그렇다면 데이터 과학을 공부하는 모든 사람들이 이런 것들을 모두 알아야 될까? 필자는 아니라고 단언하고 싶다. ‘데이터 과학자’로서 알아야 할 데이터 과학과 ‘데이터를 삶과 업무에 활용하고자 하는 개인’이 알아야 할 데이터 과학의 범주는 엄연히 다르기 때문이다. 예컨데 전문가가 아닌 개인이 직접 빅데이터를 다루어야 하거나, 검색이나 추천 알고리즘 등을 구현해야 하는 경우는 거의 없지 않을까.

그렇다면 보통 사람이 데이터 과학을 배워서 활용하기 위한 올바른 접근법은 무엇일까? 필자는 우선 ‘기술’으로서의 데이터 과학보다 ‘사고방식’로서의 데이터 과학을 강조하고 싶다. 즉, 데이터 과학의 구체적인 기술을 습득하는데 초점을 맞추기 이전에, 데이터 기반으로 사고하는 방법을 익혀야 한다는 것이다. 구체적으로 이는 주변에 ‘데이터화’ 할 수 있는 현상에 항상 관심을 가지고, 데이터를 사용해 이를 개선할 수 있는 방법을 고민하는 것을 뜻한다.

또한, 새로운 기술이나 제품에 현혹되기보다는 구체적인 목표 달성이나 문제 해결에 초점을 맞추어야 한다. 하루가 멀다하고 새로운 기술이나 제품이 쏟아져나오는 상황에서 이는 쉬운 일이 아니다. 하지만 아무리 최신 기술이라도 지금 당면한 문제에 도움을 줄 수 없다면 의미가 없다. 좀더 구체적으로 필자는 다음 사항을 제안하고 싶다.

  • 문제 정의에서 시작하라 데이터에 관심을 갖기 시작한 사람들이 범하는 첫번째 오류는 무작정 데이터부터 모으기 시작하는 것이다. 하지만, 이런 접근으로는 어떤 데이터를 얼마나 모아야 할지, 그리고 모은 데이터를 가지고 무엇을 해야할지를 판단할 수 없다.

  • 스몰 데이터로 시작하라 문제 해결에 초점을 맞추다보면 생각보다 많은 데이터가 필요하지 않다는 사실을 발견하게 된다. 따라서 필자는 ‘스몰 데이터’로 시작해야 한다고 말하고 싶다. 스몰 데이터가 한계를 드러내는 경우에만 빅데이터를 사용하면 된다.

  • 주변에 있는 도구로 시작하라 데이터 처리 및 분석을 위한 도구가 대부분 개발자 위주로 되어있는 관계로, ‘개발자가 아니면 데이터 과학을 시작할 수 없다’고 생각하기 쉽다. 하지만, 역시 주변의 문제를 해결하는 것이 목적이라면 대용량 데이터를 다루거나 복잡한 통계 기법을 꼭 써야 하는 것은 아니다. 엑셀 등의 스프레드시트만 활용해도 웬만한 분석은 모두 가능하다.


  1. ‘오차 범위’나 ‘통계적 유의미성’과 같은 용어는 나중에 자세히 설명하겠지만, 우선 측정값이나 결론의 정확성을 나타내는 말로 이해하자. 

삶과 업무를 바꾸는 데이터 과학의 가능성

바야흐로 데이터의 시대, ‘빅데이터’, ‘데이터 과학’과 같은 용어들이 연일 뉴스에 등장한다. 데이터가 토지/노동/자본에 버금가는 가치 창조의 근원이니, 데이터 과학자가 21세기에 가장 각광받는 직업이라는 주장도 나오고 있다. 이에 발맞추어 정부 및 각 기관에서는 데이터 과학자 양성을 위한 각종 대책을 내놓고 있다.

실제로 분야에 관계없이 앞서가는 개인과 조직은 데이터를 의사결정과 제품 개발에 활용하고 있다. 오바마가 대선 캠페인에서 고용한 데이터 과학자 팀이 소셜 미디어 등을 분석하여 캠페인 승리에 지대한 공을 세웠다는 이야기는 잘 알려져 있다. 또한 마이크로스프트, 구글, 페이스북과 같은 기업에서는 검색 및 추천과 같은 데이터를 활용한 제품을 만들고, 또한 이런 제품을 개선하는데 또한 데이터를 활용함으로써 전세계 시장을 선도하고 있다.

또한 데이터 혁명은 현재 진행형이다. 지금까지는 소수의 기업이나 개인만이 데이터를 모으고 처리할 수 있는 수단과 기술을 갖추어왔다. 하지만 IT 기술의 발전은 그 범위를 전 산업과 경제 주체로 확산시키고 있다. 사물인터넷(IoT: Internet of Things)은 세상에 존재하는 모든 것에 센서가 부착되어 관련 데이터를 수집할 수 있게 하는 기술이다. 또한 그 대표격인 웨어러블 기술은 개인의 모든 활동에 대한 데이터가 수집되고 분석될 수 있는 가능성을 열었다.

이런 트렌드가 ‘보통 사람’에게 던져주는 메시지는 의미심장하다. 시장경제의 관점에서, 이는 내가 속한 산업에서 혹은 내 주변에서 현재 데이터를 활용하고 있지 않다고 해도, 조만간 데이터화(datafication)가 진행될 것이라는 예측을 가능하게 한다. 바꿔 말하면, 피할 수 없는 데이터화의 흐름 속에서 자신의 삶과 업무에 데이터를 활용하는 방법을 습득한 개인과 조직은 경쟁에서 우위를 점하게 될 것이다.

직장 내에서도 이런 변화는 유효하다. 기업내 모든 업무가 데이터화되는 추세 속에서 데이터 기반으로 사고하고 문제를 해결할 수 있는 능력은 큰 차이를 만들기 때문이다. 고집센 동료나 상사 때문에 고민하고 있는가? 주관적 의견이 아닌 데이터에 기반한 분석은 어떤 의사결정권자도 움직일 수 있는 힘을 부여한다. 여기에 멋진 인포그래픽(infographic)까지 곁들인다면 금상첨화일 것이다.

데이터의 위력은 삶을 바꾸어놓기도 한다. 최근 전세계적으로 자신의 삶에서 다양한 데이터를 수집하여 이를 통해 건강, 행복, 인간관계를 증진하는데 활용하는 사람들이 급속도로 증가하고 있다. 미국에서는 난치병 환자들을 중심으로 같은증상을 공유하는 사람들이 각자 데이터를 수집하고 이를 공유하여 함께 회복을 도모하는 커뮤니티가 활발하게 생겨나고 있다.

이처럼 데이터의 효과적인 활용은 개인 및 조직에게 시장 경쟁에서 승리하고, 조직에서 인정받으며, 자신의 삶을 바꿀 수 있는 힘을 제공한다. 하지만 대부분의 사람들은 이런 데이터 혁명에 대해 어떻게 느낄까? 당장 내 주변에서 느낄 수는 없으니 남의 이야기라고 여기고 있지는 않을까? 변화에 뒤쳐지고 있다는 소외감을 느끼지 않을까? 혹은 뭔가 시작하고 싶지만 어디서 어떻게 시작해야 할지 막막한 것은 아닐까?

필자는 미국의 대학원에서 데이터 과학의 첨단을 대표하는 분야인 정보 검색을 전공하여 박사학위를 받고, 현재 미국 마이크로소프트의 온라인 서비스 부문에서 데이터 과학자로 근무하고 있다. 이는 매일 수많은 종류의 데이터를 접하고, 이를 바탕으로 다양한 분석을 수행하는 일이다. 이런 경험은 앞에서 언급한 데이터 혁명의 위력과 파급효과를 그 최전선에서 느낄 수 있게 해주었다.

특히 필자가 담당하는 업무는 미국 검색 트래픽의 30%를 담당하는 빙(Bing.com) 서비스의 품질 측정 및 개선을 위한 데이터셋과 지표를 만드는 일이다. 검색 엔진 개발의 모든 프로세스는 정량적인 지표에 따라 계획, 실행 및 평가되기 때문에 이는 조직의 방향을 결정하는 일이라고 할 수 있다. 또한 업무의 일부로 사내 측정 및 실험에 대한 교육을 진행하면서 데이터를 업무에 제대로 활용하기 위해서는 많은 노하우가 필요하다는 사실을 배웠다.

업무 이외의 영역에서도 필자는 데이터를 활용하는 방법을 항상 고민해왔다. 대학을 다닐 때부터 “내가 행복하다고 느끼는 시간의 양을 최대화하는 것”이 인생의 목표 중 하나라고 여겨왔던 필자는 개인의 행복도를 측정하고 개선할 수 있는 방법을 찾기위해 약 10년간 다양한 방법을 개발하였다. 그리고 최근에는 생산성, 건강, 인간관계 등 삶의 다른 영역에서도 비슷한 접근을 시도하고 있다.

미국에는 어처럼 개인 데이터 분석에 관심을 갖는 사람들이 ‘수치화된 나’ (Quantified Self 이하 QS)라는 지역별 커뮤니티를 만들어 활동하고 있다. 필자는 2011년부터 보스턴 및 시애틀의 QS 커뮤니티에서 활발히 참여하면서 데이터 분석을 통해 자신의 목표를 달성하고 심지어 삶을 바꾸는 경우를 여럿 목격하였다. 필자의 행복 측정 프로젝트도 여러 사람들의 관심을 끌어 최근에 지역 신문에 기사화되기도 하였다.

이처럼 일과 삶에서 데이터를 활용하는 방법을 고민하면서, 필자는 데이터 과학이 어떤 특정한 산업이나 직업군의 사람에게만 가능한 일은 아니라는 확신을 갖게 되었다. 또한 자신의, 혹은 주변의 데이터를 모으고 분석하는 방법에 대한 사례와 노하우를 블로그, 기고문 등을 통해 공유하기 시작했다. 이런 글들에 여러 사람들의 관심과 격려를 받기 시작하면서, 필자는 좀더 많은 사람들에게 이런 메시지를 전달하기위한 방법을 고민하기 시작했다. 이 블로그는 그런 고민의 산물이다.