데이터과학 프로세스(1): 데이터 문제 정의하기

데이터 과학의 개념에 이어 데이터 과학의 프로세스를 몇회에 나누어 소개할 생각이다. 이번 글에서는 우선 데이터 문제의 유형을 소개하고, 이어 데이터 문제를 정의하는 과정을 다룬다. 데이터 문제 정의의 구체적인 사례로 넷플릭스 프라이즈를 살펴본다.

데이터 문제의 유형

본격적으로 데이터 과학의 프로세스를 알아보기에 앞서 데이터 문제의 유형을 생각해보자. 데이터 문제의 구성요소는 크게 문제의 당사자가 되는 주체, 문제가 달성하고자 하는 목표, 문제에서 다루는 데이터의 세가지 부분으로 나누어 생각해볼 수 있다. 그리고 이 세가지의 구성요소에 따라 문제의 성격 및 해결을 위한 도구와 방법이 결정된다.ch3_data_problem_elements

데이터 문제의 ‘주체’

우선 데이터 문제의 주체는 문제 해결 과정에 직/간접적으로 참여하는 당사자를 가리킨다. 이에 따라 각 단계에서 누가 어떤 역할을 하고, 의사소통이 어떻게 이루어져야 하는지가 결정된다. 여기서는 주체의 유형을 크게 조직과 개인으로 나누어 생각해보자.

조직이 주체

우선 조직이 주체가 되는 경우는 조직이 당면한 다양한 문제를 데이터의 힘을 빌어 해결하는 경우다. 기업에서 일어나는 시장조사, 프로젝트 및 조직별 성과 평가 등 대부분의 데이터 분석 작업이 여기에 해당한다. 조직 구조 측면에서는 해당 업무를 담당하는 조직이 직접 데이터 분석을 하는 경우와, 데이터 관련 업무를 담당하는 조직이 사내 혹은 외부에 별도로 있는 경우를 생각해볼 수 있다.

조직 차원의 문제는 다양한 분야의 전문가간의 협업을 통해 해결하는 경우가 많고, 문제를 해결하는 주체와 그 결과에 영향을 받는 주체가 다를 수 있다. 따라서 조직의 문제를 해결하는 상황에서는 문제 정의부터 데이터 수집, 분석, 해결책 도출에 이르는 전 과정을 조직의 다른 구성원들과 효과적으로 소통하는 것이 중요한 과제다. 특히 의사결정권을 가진 개인이나 조직이 문제 해결을 담당하는 조직 밖에 있는 경우, 문제 정의 단계부터 의사결정권자(혹은 조직)와의 긴밀한 소통이 필수적이다.

개인이 주체

이와 반대로 개인이 주체가 되는 경우는 개인이 자신의 삶이나 비즈니스에서 발생하는 다양한 문제를 데이터로 해결하려는 경우다. 자신의 문제를 데이터화한다는 것이 아직 많은 독자들에게 친숙하지는 않을 수도 있지만, 여기에는 앞서 살펴본 것처럼 실로 다양한 가능성이 있다. 또한, 스마트폰과 웨어러블의 확산에 따라 그 영역은 앞으로 더욱 넒어질 것이다. 앞서 언급한 개인의 건강 및 업무 생산성 등을 데이터화하여 분석하는 문제가 여기에 해당한다.

개인의 데이터 문제는 상대적으로 데이터의 크기가 작으며, 문제를 정의하고 해결하며 그 결과를 구현하는 것까지 모두 개인의 몫이라는 특성이 있다. 따라서 조직 차원의 문제해결에서와 같은 소통의 문제는 발생하지 않는다. 하지만, 구성원간의 감시와 견제가 존재하는 조직에서의 문제해결과는 달리, 개인적인 문제 해결에서는 철저한 객관성을 유지하기 위해 별도의 노력을 기울여야 한다.

데이터 문제의 ‘데이터’

이번에는 데이터 문제의 ‘데이터’의 유형에 대해 좀더 자세히 알아보자. 이러한 데이터의 유형은 데이터의 다양한 측면에서 데이터 문제의 성격을 규정한다.

데이터의 존재 유무

우선 데이터의 존재유무가 문제해결 과정에 많은 차이를 만든다. 우선 정해진 데이터를 가지고 문제 해결에 착수하는 경우를 생각해보자. 이 경우 수집의 부담은 덜 수 있지만, 주어진 데이터가 문제해결에 불충분한 경우 어려움에 봉착할 것이다. 따라서 많은 경우 추가적인 데이터를 수집할 수 있는 방법을 고민해야 한다. 이어지는 글에서는 문제 해결을 위해 얼마만큼의 데이터를 수집해야 하는지를 추산하는 방법을 다룬다.

반면에 데이터가 아예 존재하지 않는 경우에는 수집 방법부터 고민해야 한다. 또한 보통 수집 과정에서 시간과 비용이 들어가기 때문에 문제 해결에 따르는 비용이 데이터가 주어진 경우보다 더 큰 경우가 많다. 하지만 데이터가 존재하지 않는다는 것은 많은 경우 아직 아무도 해당 문제를 데이터화하려는 시도를 하지 않았다는 뜻이다. 따라서, 그만큼 어려움이 따를 수 있으나 해결에 성공하는 경우 더 큰 보상을 기대할 수도 있다.

데이터의 크기나 형태

또한 데이터의 크기나 형태에 따라 어떤 종류의 기술을 사용해야할지가 상당 부분 결정된다. 예컨데 데이터가 개인용 PC에 들어가지 않는 경우는 소위 빅데이터 솔루션을 사용해야 할 것이다. 또한 텍스트 및 멀티미디어 등의 무정형 데이터를 제대로 저장 및 분석하기 위해서는 각 데이터 유형에 맞는 기술을 사용해야 할 것이다.

시중에는 데이터의 크기(빅데이터 vs 스몰데이터), 데이터의 형태(관계형, 텍스트, 멀티미디어) 등에 따라 다양한 솔루션이 나와있다. 또한 R 및 파이썬과 같은 범용 데이터 분석 플랫폼은 대부분의 데이터 유형을 처리할 수 있다. 데이터 및 문제의 특성에 따라 도구를 선택하는 자세한 과정은 앞의 글을 참조하도록 하자.

데이터 분석의 목표

마지막으로 데이터 분석을 통해 달성하고자 하는 주요한 목표를 현상의 이해, 현상의 일반화, 그리고 현상의 예측으로 나누어 생각해볼 수 있다. 현상의 이해는 현상의 일반화를 위한 기초가 되고, 현상의 예측은 현상의 이해와 일반화에 기반한다. 따라서 이들 목표는 서로 독립적인 것이 아니라 데이터 분석의 각 단계로 이해해도 되겠다.

아래 그림은 데이터 분석의 세가지 유형을 구분하여 설명한다. 우선 탐험적 분석은 주어진 데이터를 이해하는 것을 목표로 한다. 통계적 추론은 주어진 데이터를 표본으로 이해하고, 여기서 한걸음 나아가 모집단에 대한 여러가지 결론을 유도하려고 한다. 마지막으로 기계학습은 현상을 설명하는 모델을 만들고 이를 통해 새로운 현상을 예측하려고 한다.

ch3_data_analysis_types

현상의 이해: 탐험적 데이터 분석

데이터 과학의 가장 기본적인 목표는 데이터를 활용하여 주어진 현상을 좀더 잘 이해하는 것이다.이는 통계학에서 ‘탐험적 데이터 분석(Exploratory Data Analysis)’이라고 부르는 단계로, 데이터를 통해 이루고자 하는 목표에 관계없이 기본적으로 꼭 거쳐야 하는 단계다. 이는 데이터에 포함된 각 속성의 분포, 속성 및 항목간의 관계 등을 밝히고, 이를 통해 현상에 대한 더 명확한 이해에 도달하는 것이다.

위에서 소개한 테이블 관점에서 설명하면 이는 주어진 현상의 각 속성(혹은 테이블의 열)간의 관계를 밝히려는 노력이다. 그리고 이를 위해서는 각종 통계값(statistics)의 계산, 데이터 시각화, 상관도(correlation) 분석 등의 기법이 사용된다. 따라서 이 단계의 목적은 데이터를 잘 이해하고, 현상에서 좀더 탐구해볼만한 가치가 있는 패턴을 추출해내는 것이다.

현상의 이해가 분석의 궁극적인 목적인 경우는 많지 않기에, 현상의 일반화나 예측이 목적인 경우 탐험적 데이터 분석을 생략하려는 유혹을 받기가 쉽다. 하지만, 데이터에 혹시나 있을 수 있는 오류를 찾아내기 위해, 혹은 통계적 추론 및 예측에 사용할 수 있는 속성을 결정하기 위해 탐험적 분석은 필수적으로 거쳐야할 단계다.

현상의 일반화: 통계적 추론

위 단계에서 주어진 현상을 이해하는데 초점을 맞추었다면, 현상의 일반화 단계에서는 이를 바탕으로 주어진 현상을 넘어선 일반적인 원리나 지식을 이끌어내려고 한다. 과학적 연구 방법론의 관점에서 이는 앞서 만들어낸 가설을 검증하는 단계로 생각할 수 있다. 즉 주어진 현상뿐 아니라 앞으로 일어날 수 있는 현상까지 설명할 수 있는 결론을 이끌어내려는 것이다.

데이터의 특성에 따라 이는 주어진 데이터에 적절한 통계적 추론 기법을 적용하는 선에서 끝나는 일이기도 하다. 하지만, 많은 경우 자연 상태에서 수집된 데이터에는 다양한 편향(bias)이나 노이즈가 존재한다. 따라서 자연과학에서는 현상에 대한 명쾌한 결론을 유도하기 위해 통제된 실험을 수행한다. 예를 들어 모든 속성 중 하나의 값을 바꿔가면서 데이터를 수집하고, 이 속성의 변화가 우리가 관심을 갖는 다른 속성에 어떤 영향을 끼치는지를 관찰하는 것이다.

이런 기법은 데이터에 기반에 각종 의사결정을 내려야 하는 비즈니스 실무에서도 널리 사용된다.예를 들어 온라인 서비스의 품질 개선을 위해 많이 사용되는 A/B테스트의 경우, 무작위로 지정된 두 사용자 그룹중 하나에 현재의 서비스를, 그리고 다른 그룹에 신규 개발된 서비스를 제공하고 사용자의 행동이 두 그룹간에 어떤 차이를 보이는지를 관찰하는 것이다.

현상의 예측: 기계 학습

마지막으로, 데이터를 통해 아직 관찰되지 않았지만 유용한 속성의 값을 예측하는 모델을 만드는 경우를 생각해볼 수 있다. 현상의 일반화를 목적으로 하는 통계적 추론에서는 주어진 현상 전체 및 특정 집단에 대한 예측을 내리는 반면에 기계학습 기법에서는 개별 항목의 속성값을 예측의 대상으로 삼는다.

이처럼 주어진 현상을 예측할 수 있는 모델은 많은 경우 직접 제품화되는 경우가 많은데, 예측 모델을 통해 고객의 선호도 및 비즈니스적인 의사결정을 최적화할 수 있기 때문이다. 웹 검색엔진에서 문서를 랭킹하는 모델, 혹은 전자상거래 사이트에서 고객에게 물건을 추천하는 모델 등이 여기에 속한다.

현상을 정확히 예측할 수 있다는 것은 현상에 대한 궁극적인 이해에 도달했다는 증거로 이해할수도 있을 것이다. 따라서 효과적인 예측을 통해서는 앞에서의 분석 및 추론 단계가 중요하며, 반면에 예측 모델을 만들어 현상을 이해하는데 활용하기도 한다.

데이터 문제 정의하기

만약 나에게 문제 해결을 위해 한시간이 주어진다면, 나는 55분동안 문제에 대해 생각하고 5분동안 해결책에 대해 생각하겠다. – 알버트 아인슈타인

학문적 업적 만큼이나 수많은 명언을 남긴 아인슈타인이 문제 해결에 대해 강조한 것은 문제를 해결하기에 앞서 명확히 정의하는 과정의 중요성이었다. 데이터를 통해 문제를 해결하려 하는 경우에도 이는 똑같이 적용된다. 문제 해결에 데이터가 필요하다는 것은 문제가 되는 상황에 대한 이해가 완전하지 않다는 의미이기 때문에, 해결에 앞서 주어진 문제를 철저히 이해하려는 노력이 더욱 중요하다.

문제 정의의 고려사항

위에서 데이터 문제를 구성하는 세가지 요소를 알아보았다. 주어진 문제에 대해 이들 요소들을 생각해본다면 문제의 기본적인 특성을 이해할 수 있을 것이다. 하지만 본격적인 문제 해결에 앞서 문제를 좀더 구체적으로 정의하는 과정이 필요하다. 마치 프로그램 작성에 앞서 스펙(specification) 문서를 작성하듯이 본격적인 프로젝트 착수에 앞서 문제 해결에 대한 계획을 문서화하는 것이다.

왜 이런 과정이 필요할까? 앞으로 설명하겠지만 데이터 과학의 각 프로세스마다 수많은 의사결정을 내리게 된다. 주어진 문제의 목표, 범위와 제약조건을 정확히 이해하고 있으면 이런 결정을 내릴 때 귀중한 길잡이가 된다. 특히, 팀단위로 일하며 여러 이해당사자가 관련된 경우 문제와 관련된 오해의 소지를 최소화하기 위해 이보다 더 좋은 방법은 없다. 대부분의 프로젝트에서 효과적인 의사소통은 문제해결의 성패를 좌우한다는 것을 상기하자.

효과적인 문제 정의는 적어도 다음 사항을 포함하고 있어야 한다.

  • 문제의 목표는 무엇인가?
  • 문제의 범위는 정확히 어디까지인가?
  • 문제 해결의 성공 / 실패 기준은 무엇인가?
  • 문제 해결에 있어서의 제약조건은 무었인가? (시간과 비용 등)

이에 더하여 데이터 기반의 문제해결의 위해서는 다음 사항을 추가적으로 고려해야 한다.

  • 문제와 관련된 데이터에 포함되어야 하는 요인은 무엇인가?
  • 문제 해결에 필요한 데이터를 어떻게 수집할 수 있는가?
  • 데이터 처리 및 분석을 위한 최적의 방법과 도구는 무엇인가?
  • 최종 결과물은 어떤 형태로 누구에게 전달되어야 하는가?

여기서 문제 정의는 한번 작성하고 끝나는 것이 아니라 해결 과정에서 끊임없이 재검토해야 한다는 점을 강조하고 싶다. 데이터 과학은 현상에 대한 불완전한 이해를 데이터를 통해 보완하려는 노력이다. 따라서 이 과정에서 초기에 고려하지 못했던 변수가 등장하는 일이 빈번히 발생하는데, 이에 유연하게 대응하는 것이 효과적인 문제 해결에 필수적이다.

문제 정의 검토 및 소통하기

위에서 설명한 문제 정의 단계를 거쳐 문제에 대한 좀더 구체적인 이해에 도달하게 될 것이다. 우선 문제의 목표 및 범위, 그리고 기본적인 해결방안 및 기대 효과를 도출할 수 있다. 그리고 데이터 수집 및 분석, 그리고 해결책의 구현에 소요되는 비용도 산정할 수 있을 것이다. 데이터 수집에 소요되는 비용은 수집의 방법 및 양에 의해, 그리고 데이터 분석 및 해결책의 구현에 소요되는 비용은 주로 데이터의 질과 분석의 복잡도에 따라 결정된다.

앞서 밝혔듯이 필자는 모든 문제를 데이터를 사용해 해결해야 된다고 생각하지는 않는다. 만약 문제 해결의 기대효과가 예상비용을 초과한다면 이는 데이터 기반의 해결책을 적용하기에 적절한 문제가 아닐 것이며, 이런 판단이 섰을 경우 더 이상의 낭비를 막기 위해 프로젝트를 중단해야 할 것이다. 이처럼 명확한 문제 정의는 문제 해결에 들어가는 노력의 타당성을 검토하는 것을 가능하게 한다. 제대로 된 데이터 과학자라면 언제 데이터를 문제해결에 사용할지도 판단할 수 있어야 할 것이다.

또한 조직의 문제를 해결하는 상황이라면 문제 정의에 대한 조직 구성원들의 피드백 및 공감대를 얻을 수 있어야 할 것이다. 이를 통해 문제의 필요성에 대한 인식을 나누고, 해결 방안에 대한 조언을 구할 수 있을 것이다. 또한 이 과정에 의사결정권자를 포함시킴으로써 프로젝트의 성공을 결정하는 조건을 정확하게 알 수 있을 것이다. 이 모든 과정은 도출된 해결책이 실제로 조직에 받아들여지기 위한 밑바탕이 된다.

문제 정의의 사례: 넷플릭스 프라이즈 (The Netflix Prize)

2006년 미국 최대의 비디오 대여 업체인 넷플릭스에서 넷플릭스 프라이즈(Netflix Prize)를 발표했을 때 관련 업계와 학계는 발칵 뒤집혔다. 넷플릭스 사용자들에 의한 백만개 이상의 영화 평가 데이터를 공개하면서 자사의 추천 알고리즘을 10%이상 개선하는 프로젝트에 백만달러의 상금을 내건 것이다. 온라인 기업의 핵심 역량중 하나인 예측 모델을 개발하는 프로젝트가 관련 데이터와 함께 외부로 공개된 적도 없었고, 상금 액수 역시 상상을 초월하는 것이었다.

데이터 과학의 문제를 정의를 설명하는데 넷플릭스 프라이즈를 이야기하는 이유는 이 경연을 위한 문제기 데이터 과학 문제 정의의 모범답안이라고 할만큼 잘 정의되어 있기 때문이다. 사실 기업 내부의 데이터와 프로젝트를 일반 대중에게 공개하려고 한다면 최대한 구체적이면서 명확한 정의가 필수적일 것이다. 여기서는 데이터 문제의 정의라는 측면에서 넷플릭스 프라이즈의 룰을 살펴보자.

목표 넷플릭스 프라이즈의 목표는 넷플릭스 사용자들의 영화 선호도 데이터를 (별점:1~5) 바탕으로 각 사용자가 미래에 볼 영화의 선호도를 예측하는 것이다.

범위 참가자들은 넷플릭스에서 제공한 데이터를 가지고 예측 모델을 개발하며, 평가 역시 넷플릭스에서 미리 정해진 데이터셋을 기반으로 실시한다.

성공기준 참가자들의 예측 모델은 넷플릭스의 자체 모델보다 10%이상 예측 성능을 향상시켜야 하며, 평가를 위해서는 RMSE(Root Mean Squared Error)를 사용한다.

데이터 참가자들에게는 약 50만명 가량의 사용자가 17000여개의 영화를 평가한 백만개 이상의 평가 데이터가 제공된다. 사용자들의 프라이버시를 보호하기 위해 모든 데이터는 익명으로 제공된다.

제약조건 참가자들은 하루에 최대 하나의 예측 결과를 업로드할 수 있다. 넷플릭스는 예측 결과의 평가하여 그 일부의 결과를 공개하고, 나머지는 최종 결과의 심사를 위해 사용한다.

위에서 살펴본대로 넷플릭스 프라이즈의 주체측에서는 추천 알고리즘의 개발이라는 데이터 문제의 모든 측면을 최대한 상세하게 정의하였다. 이런 노력은 2000명이 약 14,000개의 예측 모델을 개발한 대규모의 경연을 성공적으로 끝내는 것을 가능하게 했다. 넷플릭스 프라이즈의 웹사이트에서 실제 넷플릭스 프라이즈의 룰을 살펴볼 수 있다.

넷플릭스 프라이즈는 결국 누구에게 돌아갔을까? 2006년부터 3년간 약 2000팀이 참가한 끝에 1위의 영예와 상금은 AT&T의 ‘벨코아(BellKor)’팀에게 돌아갔다. 1위 팀이 구현한 알고리즘이 너무나 복잡해서 결국 실제 서비스에 적용되지는 못했다는 후문도 있었지만, 이 이벤트는 숱한 화제를 뿌리며 관련 분야의 발전에 크게 기여하였다. 그리고 통계적 예측 모델의 성능을 놓고 경쟁을 한다는 아이디어는 캐글(Kaggle)과 같은 회사에 의해 계승되고 있다.

추신: 본 글에 대한 피드백을 남겨주신 김치용, 박희창, 이권일 님을 비롯한 여덟 분께 감사드립니다.