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

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

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