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

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

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

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

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

기계학습을 배우는 가장 쉬운 방법: AzureML로 집값 예측하기

최근 알파고와 인간의 대결이 화제가 되었지만, 기계학습 기법은 다양한 분야에서 널리 활용되고 있다. 여기서는 기계학습을 이용한 문제 해결의 과정을 사례로 배워보도록 하자. 기계학습의 다양한 기법 가운데 수치 형태의 속성을 예측하는 회귀 분석을 수행하고 그 결과를 평가하는 방법을 배워보도록 하자.

시중에는 다양한 기계학습 라이브러리 및 도구가 나와 있는데, 이번 실습에는 코드 없이 직관적인 인터페이스를 통해 기계학습을 수행할 수 있는 AzureML을 (‘애저엠엘’이라고 읽는다) 사용한다. AzureML은 클라우드 기반이라 설치할 필요도 없고, 만들어진 결과를 API 형태로 바로 활용할 수 있는 편리한 환경을 제공한다. (세부사항은 MS 공식 홈페이지 참조)

실습에 사용할 데이터셋은 보스턴의 지역별 집값에 영향을 끼치는 요인을 정리한 것으로, 다양한 변인을 조합하여 각 지역의 집값을 예측하는 것이 목표다. 본격적인 실습에 들어가기에 앞서 우선 데이터의 다양한 속성을 알아보자. 각 속성은 집값에 영향을 끼치는 다양한 요인을 나타내는 것을 알 수 있다.

속성

설명

CRIM

마을별 범죄율

ZN

주거지의 비율

INDUS

공업 지의 비율

CHAS

강변 위치 여부

NOX

대기 중 질소 산화물 농도

RM

가구당 방의 개수

AGE

1940년 전에 지어진 집의 비율

DIS

일터와의 평균 거리

RAD

고속도로 접근성

TAX

재산세율

PTRATIO

마을 별 학생-교사 비율

B

흑인 주거 비율

LSTAT

저소득층 주거 비율

MEDV

집값 중간값


AzureML 소개

AzureML(정식 명칭: Microsoft Azure ML)은 MS Azure (애저) 클라우드 컴퓨팅 플랫폼의 기계학습 부분을 일컫는다. 클라우드 컴퓨팅의 특성상 사용자는 자신의 컴퓨터에 프로그램을 설치하는 대신에 AzureML 서비스에 접속하여 원하는 기계학습 모델을 만들고, 이를 웹 서비스 형태로 배포할 수도 있다.

AzureML은 대용량 처리가 가능한 클라우드 환경에서 기본적인 선형 모델부터 최신의 앙상블 기법에 이르기까지 다양한 기계학습 방법을[1] 제공한다. 또한 사용자 경험(UX) 측면에서도 AzureML 스튜디오라는 (Microsoft Azure ML Studio) 기존 기계학습 환경보다 훨씬 편리한 환경을 제공한다. 프로그래밍이 아닌 마우스 조작으로 기계학습의 모든 단계를 수행할 수 있는 것이다.

AzureML 시작하기

AzureML은 기계학습 모델을 만들고 관리하고 배포하기 위한 모든 기능을 제공하는 AzureML 작업공간(workspace)을 제공한다. AzureML을 시작하기 위해서는 AzureML 작업공간에 무료 계정을 만들어 로긴해야 한다. 그 절차는 다음과 같다.

  1. 컴퓨터의 웹 브라우저를 실행한다.
  2. 주소창에 http://studio.azureml.net를 입력하여 AzureML 작업공간에 접속한다.
  3. 홈페이지의 위/오른쪽 코너의 Sign In 버튼을 클릭한다.
  4. 자신의 마이크로소프트 계정을 입력하고 (hotmail.com 가능) Sign In 버튼을 클릭한다.

    만약 마이크로소프트 계정이 없다면 아래 링크를 클릭하여 계정을 만들 수 있다.
  5. 만약 로긴 후에 Welcome 비디오가 보이면 이를 시청하거나 비디오 오른쪽 위의 X 버튼을 클릭하여 이를 닫는다.
  6. 마이크로소프트에서 제공하는 Microsoft Samples 화면이 나오면 역시 오른쪽 위의 X 버튼을 클릭하여 이를 닫는다.
  7. 이제 여러분은 마이크로소프트 계정을 사용하여 AzureML 작업공간에 로긴되었다.

AzureML에서 실험 만들기

AzureML 작업공간에서는 모델을 만들고 평가하고 분석하는 모든 작업이 실험(Experiment)이라는 단위로 이루어진다. 실험은 모델과 관련된 데이터, 알고리즘, 그리고 기타 작업을 모두 포함한다. 이제 첫번째 실험을 만들어 보자.

  1. 페이지 아래 왼쪽의 NEW 버튼을 클릭한다.
  2. NEW 대화 창에 EXPERIMENT 가 선택된 상태에서 Blank Experiment 버튼을 클릭한다.
  3. 이제 새로운 실험이 생성되었다. 실험의 각 부분은 다음과 같은 기능을 한다.
  1. 화면 중앙에 위치한 캔버스(Canvas)는 여러분이 실험을 구성하는 공간이다. 실험의 구성은 대개 적절한 모듈(module)을 끌어다 놓고 (drag and drop) 데이터의 흐름에 따라 서로 연결하는 과정이다.
  2. 사이트 왼쪽의 네비게이션 아이콘은 작업공간으로 돌아갈 수 있게 해준다.
  3. 캔버스 왼쪽에는 모듈 창이 있다. 모듈은 실험을 구성하는 재료가 된다.
  4. 캔버스 오른쪽에는 속성(Properties) 창이 있다. 여기서 각 모듈의 속성을 지정할 수 있다.
  5. 캔버스 위의 ‘Experiment created on…’,으로 시작하는 텍스트를 선택하여 지우고, 아래와 같이 Boston Housing Prices Regression을 입력한다.

AzureML을 사용한 탐색적 분석

이제 생성된 실험에 데이터셋과 모듈을 추가하여 본격적인 분석을 수행해보자. AzureML은 데이터를 불러들이는 여러 방법을 제공하는데, 여기서는 이 책과 함께 제공되는 보스턴 집값  데이터셋 (ch4/Boston.txt)을 불러들여 볼 것이다.

  1. 앞서 실험을 만들 때와 마찬가지로 페이지 아래 왼쪽의 NEW 버튼을 클릭한다.
  2. NEW 대화 창에 DATASET이 선택된 상태에서 FROM LOCAL FILE 버튼을 클릭한다.
  3. 파일을 데이터셋을 업로드하는 대화상자에서 우선 Choose File을 선택하여 보스턴 집값  데이터셋 (ch4/Boston.txt)을 불러들이고, 다음과 같이 입력한다.
  4. Boston Housing Prices라는 이름의 데이터셋이 추가된 것을 확인할 수 있다.
  5. 위에서 추가한 보스턴 집값 데이터셋을 캔버스로 끌어다 놓고, [dataset/Visualize]를 선택한다.
  6. 이제 데이터셋을 한눈에 확인할 수 있다. 아래 화면은 데이터셋의 행과 열의 개수, 그리고 처음 100행과 100열을 각 열에 대한 히스토그램과 함께 제공한다.
  7. 이제 화면 가장 오른쪽의 집값(medv) 속성을 클릭해본다. 해당 속성에 대한 다양한 통계값과 시각화를 볼 수 있다.
  8. AzureML은 속성간 관계를 시각화하는 기능도 제공한다. 위 화면에서 compare to 옆의 선택상자를 클릭하면 집값과 다른 속성을 스케터플롯으로 비교할 수 있다. 아래는 집값을 범죄율(crim) 및 방의 개수(rm) 속성과 비교한 결과다. 범죄율이 높은 곳은 집값이 상대적으로 낮으며, 방의 개수는 집값과 거의 비례하는 것을 알 수 있다.
  9. 이런 식으로 다양한 속성 간의 관계를 살펴보도록 하자.

AzureML을 사용한 회귀 분석

데이터를 살펴보았으니, 이제 예측 모델을 만들어보자. 우선 주어진 데이터셋을 모델을 만들기 위한 학습 데이터와 만들어진 모델을 평가하기 위한 평가 데이터로 분리하도록 하자.

  1. 우선 작업공간에서 데이터 분리를 위한 모듈을 찾아보자. 작업공간 왼쪽 위의 검색 창에 ‘split’을 입력하고 엔터를 누르면, 검색어에 해당하는 모듈만 볼 수 있다.
  2. Split 모듈을 끌어서 캔버스에 끌어다 놓는다. Split 모듈은 입력 포트 하나와 출력 포트 2개가 있으며, 화면 오른쪽의 Properties 창에서 모듈의 다양한 속성을 지정할 수 있다.
  3. Boston 데이터셋 모듈의 출력 포트에 마우스를 클릭한 뒤 끌어서 Split 모듈의 입력 포트에 놓으면 아래와 같이 두 모듈이 연결된다.
  4. 화면 오른쪽의 Properties 창에서 Fraction of rows in the first output dataset 텍스트 상자를 찾아 0.75를 입력한다. 이는 75%의 입력 데이터를 왼쪽 출력 포트로, 그리고 나머지 25%의 입력 데이터를 오른쪽 출력 포트로 보내는 설정이다.
  5. 캔버스 아래쪽의 RUN을 클릭한다. 이 명령은 작업공간의 각 모듈을 연결된 순서대로 실행한다.
  6. 실행이 완료되면 다음과 같이 Split 모듈의 오른쪽에 녹색 체크 표시를 볼 수 있다.
  7. 이제 Split 모듈의 왼쪽 출력 포트를 클릭해서, 메뉴의 Visualize를 선택하자. 380개의 (75%) 항목을 (rows) 확인할 수 있다. 같은 방식으로 오른쪽 출력 포트를 확인해 보면 126개의 (25%) 항목이 확인된다.

이제 널리 사용되는 선형 회귀 알고리즘을 사용해 집값을 예측하는 모델을 만들어 보자.

  1. 위에서와 같은 방식으로 검색 창에 train을 입력하여 Train Model 모듈을 찾고, 이를 캔버스에 끌어다 놓는다. 그 후에 Split Data 모듈의 왼쪽 출력 포트와 Train Model 모듈의 오른쪽 입력 포트를 연결한 결과는 다음과 같다.
  2. Properties 창에서 Launch column selector 버튼을 클릭한다. 이 창에서 모델이 예측하고자 하는 속성을 선택할 수 있다. 입력 창에 medv를 입력한 결과는 다음과 같다.

    입력 창의 오른쪽 아래 체크 버튼을 () 클릭하여 선택을 완료한다.
  3. 이제 선형 회귀 알고리즘에 해당하는 모듈을 추가해보자. 다시 화면 왼쪽 위의 검색창에 linear regression을 입력하여 선형 회귀 알고리즘을 찾은 후, 이를 캔버스에 끌어 놓고 Train Model 모듈의 첫번째 입력 포트와 연결한 결과는 다음과 같다.
  4. 이제 화면 아래 RUN 버튼을 눌러 선형회귀 모델을 만들 수 있다. 실행이 완료된 후에 Train Model 모듈의 출력 포트에 마우스 오른쪽 클릭을 하여 Visualize 해보면 다음과 같은 결과를 볼 수 있다. 학습된 모델의 설정값과 속성의 가중치를 확인할 수 있다.

마지막으로 만들어진 모델을 평가해보자. 모델은 만드는 과정에는 학습 데이터셋이 사용되었지만 만든 모델을 평가하는 과정에는 평가 데이터셋을 사용한다.

  1. 모듈 검색 창에 score를 입력하여 Score Model을 찾아 캔버스에 끌어 놓은 후, 아래 그림과 같이 앞서 만든 모델 및 평가 데이터와 연결한다. Score Model 모듈은 우리가 앞서 만든 모델을 사용하여 평가 데이터셋의 집값(medv)을 예측하는 기능을 한다.
  2. 화면 아래 RUN 버튼을 사용하여 실험을 실행하고, 실행히 끝난 후에는 Score Model 모듈의 출력 포트를 Visualize한다. 화면에 나오는 속성 가운데 Scored Labels는 집값(medv) 속성을 예측한 결과다.
  3. 화면에 나오는 컬럼 가운데 집값(medv)을 선택하고, 화면 오른쪽의 Visualizations 창에서 compare to에 Scored Labels를 선택하면 다음과 같다. 이 스케터플롯의 각 점은 평가 데이터셋의 각 항목에 대해 예측된 집값과 실제 집값을 비교한 결과다.

위 시각화를 통하여 집값 예측이 비교적 정확하다는 사실을 확인할 수 있었다. 이번에는 각종 평가 지표를 통해 이 결과를 알아보고, 선형회귀 모델보다 좀 더 정확한 부스팅 모델을 추가해서 성능을 비교해보자.

  1. 모듈 검색 창에 evaluate를 입력하여 Evaluate Model을 찾아 캔버스에 끌어 놓은 후, 아래 그림과 같이 앞서 만든 Score Model과 연결한다. Evaluate Model 모듈은 예측 값과 실제 값을 바탕으로 다양한 평가 지표를 보여준다.
  2. 실험을 실행시킨 후 Evaluate Model 모듈의 결과 포트를 Visualize한 결과는 다음과 같다. 앞서 살펴본 RMSE를 비롯한 다양한 평가지표와 예측된 집값과 실제 집값 간의 차이를 시각화한 결과를 볼 수 있다.
  3. 마지막으로 앙상블에 기반한 의사결정트리 모델을 추가해서 성능을 비교해보자. 우선 다음 그림에서와 같이 Boosted Decision Tree Regression 모듈 및 해당하는 Train / Score Model 모듈을 추가하고, Score Model 모듈의 결과 포트를 Evaluate Model 모듈의 다른 쪽 입력 포트에 연결한다.
  4. 다음은 위 실험을 실행한 후에 Evaluate Model 모듈의 출력 포트를 시각화한 모습이다. 선형회귀 모델에 비해 앙상블 트리 모델의 RMSE가 훨씬 낮으며, 에러의 분포 역시 전반적으로 훨씬 낮은 값을 보인다.

지금까지 AzureML을 사용해 간단한 회귀모델을 만들고 평가하는 방법을 알아보았다. 주어진 데이터를 학습 및 평가 데이터로 나누어 모델을 만들고 평가하는 기계학습의 기본 개념만 이해하고 있으면 프로그래밍 지식 없이도 학습 모델을 만들고 평가할 수 있다. 완성된 실험은 아래 링크를 통해 확인할 수 있다.

완성된 실험 보러가기


데이터 과학자가 바라본 알파고: 오해, 진실, 그리고 교훈

이번 주 내내 화제가 되었던 ‘세기의 대결’이 알파고의 승리로 끝났다. 어렸을 때 남들처럼 바둑을 배웠고, 지금은 검색엔진의 데이터 과학자로 일하는 필자 역시 매 대국을 흥미롭게 지켜보았다. 필자는 꾸준히 글을 통해 빅데이터의 허상을 지적해왔고 최근에는 일반인들의 데이터 입문을 돕는 책까지 출판한 터라 특히 관심이 가는 주제였다.

하지만 필자에게 더 흥미로웠던 점은 이 사건에 대한 전문가와 비전문가 간의 반응의 차이였다. 언론, 특히 한국 언론에서 보도되는 알파고는 인류의 구세주 혹은 재앙으로 우리의 삶을 송두리째 바꿔 놓을 것처럼 묘사되고 있다. 반면 데이터 과학 및 인공지능 종사자가 상당수인 필자의 SNS 타임라인은 무덤덤하거나 다소 냉소적인 반응이 주를 이룬다.

‘왜 이런 간극이 생겼을까?’라는 의문에서 출발한 필자는 이 글을 통해 다음 주제를 다루려고 한다.  IT 전문가들은 일반인들이 모르는 무언가를 알고 있을까? 알파고의 실체는 무엇이며 이번 대국의 진짜 의미는 무엇일까? 이제 딥러닝 전문가가 아니면 모두 도태되는 세상이 조만간 올까? 지금 나는 당장 무엇을 해야 하는가?

알파고는 전혀 새로운 종류의 AI다?

우선 알파고에 대한 이야기를 하지 않을 수 없다. 알파고의 작동원리는 구글의 논문 및 관련 글에 (이정원님 / 엄태웅님) 자세히 나와 있으므로 생략하고, 여기서는 알파고와 기존 AI와의 차이에 집중하려고 한다. 알파고의 진짜 혁신은 무엇일까?

필자는 해답을 찾기 위해 구글의 네이쳐 논문을 읽어보았다. 논문 초록에서는 알파고의 새로운 점을 다음과 같이 밝히고 있다. 요약하면 딥러닝 기법(DCNN)을 확률적 트리 서치 알고리즘(MCTS)과 결합했다는 것이다. 또한 알파고의 서로 다른 버전 간의 대국을 통하여 얻은 데이터를 강화 학습에 사용하는 것으로 알려져 있다.

그렇다면 이는 얼마나 새로운 아이디어일까? 위 논문에서 인용한 관련 논문을 찾아보면 바둑에 DCNN이나 MCTS를 적용하는 논문이나 시스템은 이미 여럿 있었다. 또한 최근에 페이스북에서 내놓은 논문에는 DCNN과 MCTS를 결합한 darkfmcts3라는 알고리즘을 소개하고 있다.

물론 darkfmcts3은 알파고를 이기지 못했으므로, 알파고가 현존 최고의 바둑 AI인 것은 맞다. 하지만, 알파고가 무에서 유를 창조했다는 식의 설명은 과장이다. 딥러닝은 이미 바둑 AI에 활용되고 있었고, 알파고는 딥러닝과 트리서치 등의 기존 학습 기법에 자기 자신과의 대국(self-play) 및 강화 학습 등 몇 가지 아이디어를 더해 만들어진 잘 튜닝된 시스템이다. 전혀 새로운 혁신이라기 보다는 점진적인 개선의 산물이라는 것이다.

AI가 세상을 정복하는 세상이 조만간 온다?

알파고가 세상에 전혀 없었던 신기술을 통해 만들어진 괴물(?)이라는 오해는 ‘알파고가 세상의 모든 문제를 풀수 있다’는 착각으로 이어진다. 딥마인드 홈페이지의 아래 설명은 그런 의미에서 오해의 소지가 다분하다. 사실 논문에 레퍼런스까지 읽는 사람이 얼마나 되겠는가?

The game of Go is widely viewed as an unsolved “grand challenge” for artificial intelligence. Despite decades of work, …. In this paper we describe our Go program, AlphaGo. This program was based on general-purpose AI methods, … This is the first time ever that a computer program has defeated a professional Go player, a feat previously believed to be at least a decade away.

위 글을 읽으면 알파고가 조만간 세상의 모든 문제를 해결할 수 있을 것 같다. 하지만, 위에서 설명한 대로 알파고는 기존 연구에 ‘바둑’이라는 문제의 특성에 착안한 몇 가지 아이디어를 더해서 만들어진 ‘바둑 AI’다. 인공지능의 궁극적 목표로 여겨지는 일반인공지능(Artificial general intelligence)과는 거리가 멀다.

이를 좀더 구체적으로 알아보자. 알파고는 체스보다 훨씬 경우의 수가 많은 바둑을 인간 최고수보다 더 잘 둔다. 하지만 바둑은 사람이 하는 다른 영역보다 훨씬 제한된 경우의 수를 가진, 그것도 매우 잘 정의된 규칙을 바탕으로 하는 게임이다. 이런 바둑의 특성은 트리 서치 등의 AI기법의 적용을 용이하게 한다.

더 중요한 것은 바둑 데이터의 핵심이라고 할 역대 기보가 잘 정리된 형태로 공개되어 있다는 것이다. 이런 바둑의 특성은 대용량 데이터를 필요로 하는 딥러닝 기법의 적용을 용이하게 한다. 하지만, 온라인 서비스 (예: 검색엔진) 등 제한된 분야를 제외하고는 이런 대용량의 정제된 데이터를 구하는 것은 어려운 일이다.

요약하면 알파고는 바둑이라는 문제의 특성에 특화된 문제해결 시스템이다. 일반인공지능을 구현하기 위해서는 1) 스스로 문제를 정의하는 기술 2) 경우의 수가 바둑보다 훨씬 큰 (거의 무한대인) 문제에 대한 근사치를 찾는 기술 3) 문제 해결에 필요한 데이터를 찾거나 만들어내는 기술이 필요한데, 이 모두 근래에 해결이 요원한 문제들이다. 그러니 AI가 인간을 대체할 것이라는 걱정은 당분간 접어 두자.

딥러닝으로 무엇이든 해결할 수 있다?

알파고에 대한 관심은 자연히 그 기반 기술인 빅데이터와 딥러닝으로 이어진다. 이미 ‘빅데이터면 무엇이든 할 수 있다’는 식의 기사는 많았고, 이에 더해 최근에는 딥러닝에 대한 기사가 넘쳐 나고 있다. 이들은 대부분 딥러닝의 가능성에 대한 장밋빛 전망 일색이다.

빅데이터에 대한 오해와 진실은 필자의 예전 글을 참조하도록 하고, 여기서는 딥러닝에 대해 이야기해 보자. 검색엔진에서 데이터과학자로 일하는 필자 역시 최근 딥러닝에 대한 다양한 기사와 논문을 접하고 있다. 기존의 기계학습 기법보다 사람의 손을 덜 거치고도 높은 성능을 나타낸다는 점에서 딥러닝은 분명 혁신적인 기술이다. (딥러닝에 대한 좀 더 자세한 설명은 엄태웅님의 글을 참고하자.)

하지만 이런 딥러닝의 잠재력을 실현하기 위해서는 치러야 하는 대가가 많다. 우선 대용량의 학습 데이터가 필요하며, 엄청난 계산량에 속도도 느리고 이를 뒷받침할 컴퓨팅 파워도 기본이다. 학습된 결과물을 인간이 해석하는 것도 쉽지 않은 블랙박스와도 같은 방법이다. 물론 이런 문제들은 연구와 기술 진보로 인해 점차 해결되고 있으니 미래는 지켜 볼일이다.

하지만, 딥러닝을 실제로 배워 당장 활용할 수 있는 조직이나 개인은 얼마나 될까? 기계학습 기법에는 다양한 유형이 있으며, 이중에는 딥러닝과 같은 높은 복잡도와 학습 성능을 자랑하는 알고리즘부터 선형모델과 같이 단순하지만 빠르고 이해가 쉬운 방법도 있다. 다양한 데이터 과학 프로젝트를 진행하는 필자의 경험으로는 현업에서 유용한 알고리즘은 제한된 데이터와 컴퓨팅 자원으로 사람이 이해할 수 있는 결과를 내는 후자인 경우가 많았다.

결국 빅데이터나 딥러닝이나 문제해결의 수단이다. 이미 많은 데이터와 충분한 컴퓨팅 파워가 있으며 학습 성능이 해석 가능성보다 중요한 경우 딥러닝은 고려해 볼만한 옵션이다. 하지만, 런타임에서의 성능 및 예측 결과를 설명할 수 있어야 하는 경우 딥러닝은 최선의 선택은 아니다. 또한 기계학습은 일단 만들어 놓으면 끝이 아니라 이를 꾸준히 유지 보수하는 비용도 생각해야 한다. 요약하면 무작정 딥러닝을 배우기보다는 주어진 예측 문제의 성격부터 고민해야 한다는 것이다.

‘세기의 대결’이 우리에게 가르쳐주는 진짜 교훈?

앞에서 필자는 알파고의 ‘혁신’이 실제로는 기존의 연구 성과의 연장선 상에 있으며, 알파고와 같은 시스템이 일반인공지능으로 발전하기까지는 오랜 시간이 걸릴 것이라고 전망했다. 또한 빅데이터와 딥러닝은 만능 열쇠라기보다는 아직은 한정된 영역의 문제에만 적용 가능한 기법이라는 사실도 알아보았다. 알파고의 기술적인 의의와 함께 그 한계도 명확히 알았을 것이다.

어쨌든 데이터의 폭증과 기계학습 등 이를 처리하는 다양한 기술이 세상을 바꾸고 있는 것은 분명하다. 그렇다면 이 시대를 살아가는 우리가 이러한 변화에 대처하기 위해 지녀야 할 바람직한 태도는 무엇일까? 우선 데이터 관련 기술 진보가 산업에 주는 영향을 설명하기 위해 필자가 상상력을 발휘하여 만든 다음 매트릭스를 살펴보자.

산업별 (열) 데이터 활용도별 (행) 인력 구성을 나타내는 위 매트릭스에 따르면 현재는 IT 산업에 종사하는 사람 중에는 데이터를 활용하는 사람이 많지만 기타 산업에는 데이터를 활용하는 사람이 많지가 않다. 하지만 필자는 아직은 데이터 활용이 저조한 기존 산업에서 데이터를 잘 활용하는 주황색 군에 속하는 사람들이 앞으로 각광 받을 것이라고 전망하고 싶다.

필자는 모두가 개발자나 데이터 과학자가 되어야 21세기에 살아남을 수 있다고 생각하지는 않는다. 오히려 시류에 편승하기 보다는 자신의 영역에서 데이터와 첨단 기술을 적절히 활용하는 것이 가치를 창조하는 지름길이라고 믿는다. 데이터 기반의 접근 방법은 점점 확산되고 있고, 분야에 관계없이 이를 이해하고 앞서나가는 사람에게 기회가 주어지는 것이다.

그렇다면 구체적으로 데이터를 활용한다는 것은 어떤 의미인가? 데이터 활용의 단계를 필자는 다음 세가지로 나누어 설명하고 싶다.

  1. 데이터를 전혀 활용하지 않음
  2. 다른 사람이 만들어 놓은 데이터를 분석하여 활용
  3. 데이터로 활용할 수 있는 문제를 적극적으로 탐색하고 해결

위 단계에 따르면  데이터를 아예 활용하지 않는 것보다는 다른 사람이 만들어 놓은 데이터라도 분석하여 활용하는 것이 바람직하지만, 데이터로 활용할 수 있는 문제를 적극적으로 탐색하고 해결하는 수준이 되어야 데이터 가지고 많은 가치를 만들어낼 수 있다. 이 세번째 그룹은 앞에서 필자가 소개한 매트릭스의 주황색 부분에 속하는 사람들이기도 하다.

그렇다면 어떻게 데이터를 제대로 활용하는 방법을 배울 수 있을까? 필자는 우선 ‘데이터 = 기술’이라는 편견을 깨고 문제 해결의 수단으로 데이터를 바라보는 ‘데이터 마인드’를 강조하고 싶다. 또한 자신의 삶과 업무에 데이터를 적극 활용하는 데이터 생활화 역시 데이터 문맹을 탈출하기 위한 요령이다. 데이터 입문에 대한 좀 더 자세한 내용은 필자의 블로그 및 저서 헬로 데이터 과학을 참조하기 바란다.

맺음말: ‘세기의 대결’ 그 이후는?

미국의 저명한 과학저널 ‘사이언스’에서 발간하는 매거진 최신호에서는 약 20년 전에 체스 인공지능이 인간 최고수를 꺾은 후 체스라는 분야에 일어난 변화를 소개하고 있다. 어떤 선수들은 좌절하고 분야를 떠나기도 하였지만, 다른 선수들은 인공지능 체스라는 새로운 ‘도구’를 개인 훈련 및 기량 향상에 적절히 활용하고 있다고 한다. 인공지능을 공식 경기에 비밀리에 활용하다가 적발된 사례가 있는가 하면, 아예 인공지능과 사람이 파트너로 서로 대결을 하는 룰도 생겨났다고 한다.

‘세기의 대결’이 인공지능의 승리로 끝난 바둑계 역시 변화가 불가피할 것으로 보인다. 이미 기계가 ‘침범한’ 바둑이라는 분야를 떠나려는 기사도 있겠지만, 다른 기사들은 알파고를 비롯한 신세대 인공지능 바둑이 보여주는 새로운 가능성을 연구하고 이를 발전의 계기로 삼을 것이다. 이미 5개월전 알파고와 대결했던 유럽 챔피언 판후이는 알파고와의 대결을 거울삼아 세계 랭킹이 633위에서 300위로 상승했다고 한다.

알파고의 성취는 분명 인상적이지만, 이는 인공지능 역사의 큰 맥락에서는 일보 전진에 불과하다. 하지만 이러한 기술 진보가 보여주는 변화의 잠재력과 방향은 명확하다. 점점 더 많은 현상이 데이터화되고, 이를 효과적으로 활용할 수 있는 개인과 조직에게 더 많은 기회와 보상이 돌아갈 것이다. 다행히 아직 우리에게 유효한 시간은 많이 남아있고, 이제 선택은 여러분에게 달렸다. 변화의 방향으로 한걸음 한걸음 나아갈 것인가, 아니면 변화의 흐름을 외면할 것인가?

헬로 데이터 과학이 출고되었습니다!

헬로 데이터 과학이 드디어 출고되었습니다. 늦어도 며칠 안으로는 온라인/오프라인 서점에서 만나보실 수 있을 겁니다. 독자분들께서 이 책에서 최대한의 가치를 얻어내기 위해 다음 몇 가지 사항을 제안합니다. 책을 읽으시다가 궁금하신 내용은 헬로 데이터 과학 Q&A 게시판을 이용해 주시구요, 구매자 설문에도 꼭 응답해 주시면 감사하겠습니다.

  • 데이터 과학은 결국 데이터를 사용한 문제 해결입니다. 책을 읽기 전에 자신이 데이터를 통해 어떤 문제를 해결하고 싶은지를 생각해 보고, 책을 읽으면서 이 문제를 꾸준히 떠올려 보세요.
  • 데이터 과학의 학습은 직접 해보는 실습으로 완성됩니다. 이책에서 제공하는 엑셀 실습은 꼭 따라 해보고, R 및 기타 실습도 따라해 봅니다.
  • 데이터 과학의 모든 내용을 책 한권에서 배울 수는 없습니다. 심화 학습을 위해 이 책에서 제공하는 참고 자료 중 관심이 가는 것은 꼭 찾아서 학습하세요.
  • 데이터 과학은 다른 사람과 함께 배워야 더 효과적입니다. 자신의 데이터 문제 해결 과정과 궁금증을 생활 데이터 커뮤니티에 공유해 보세요.
  • 데이터 과학은 끊임없이 변화하기 때문에 지속적으로 배워야 합니다.이메일 독자그룹이 책의 Facebook 페이지에 공유되는 데이터 과학에 관련된 최신 소식과 학습자료를 받아보세요.

헬로 데이터 과학을 공개합니다!

‘헬로 데이터 과학’이 드디어 세상의 빛을 보게 되었습니다. 지금 YES24에서 구매를 하실 수 있습니다. 아래는 책 집필에 대한 저의 소회를 담았습니다.


빅데이터니 데이터 과학이니 데이터에 대한 출판물이 쏟아지는 요즘, 또 책을 쓰겠다는 결심이 쉬운 것은 아니었다. 소위 ‘데이터 열풍’이 시작되기 훨신 전부터 스스로 다양한 데이터를 모아 분석하면서 느꼈던 데이터의 가치에 대한 믿음이 가장 큰 원동력이 아니었다 싶다. 굳이 빅데이터가 아니라도, 그리고 복잡한 수학이나 프로그래밍 없이도 데이터에서 많은 가치를 얻을 수 있다는 메시지를 담는다면 의미있는 목소리가 되겠다는 생각을 했다.

하지만 세상의 많은 일이 그렇듯이 책을 쓴다는 일이 어떤 일인지 알았다면 아예 시작조차 하지 않았을 것이다. 처음에 오랫동안 쓰던 블로그의 연장선 정도로 생각했던 책쓰기가 마치 오두막과 마천루를 짓는것과 같은 차이가 있다는 사실을 깨닫기까지는 그리 오랜 시간이 걸리지 않았다. 글을 쓴다는 공통점은 있지만 작업의 규모, 깊이, 그리고 프로세스 면에서 전혀 다른 차원의 결심과 노력을 요구하니 말이다. 물론 이미 시작한 뒤에는 쉽게 멈추기 힘든 매력을 발견하기도 하였다.

그럼에도 불구하고 집필을 시작한 것을 후회한 시간보다는 감사하게 생각했던 시간이 많았던 것 같다. 대학원을 마치고 시작한 회사 생활이 3년차에 접어들면서 현상에 안주하기 시작한 나 자신의 지적인 성장을 꾸준히 채찍질하는 계기가 되었고, 특히 데이터 과학이라는 새롭지만 방대한 분야의 다양한 이론과 사례를 내것으로 소화하는 기회를 얻을 수 있었다. 또한 집필을 시작하고, 집필한 내용을 틈틈이 블로그 및 각종 매체에 기고하기 시작하면서 다양한 인연을 만들 수 있었다.

착수부터 마무리까지 약 1년 반이 걸린 집필 기간동안 필자는 다음 세가지 원칙을 지키기 위해 애썼다. 그리고 책을 마무리한 지금 이순간, 이 원칙들이 어느 정도는 지켜졌다는 생각에 흡족한 마음이다.

최신의 지식과 자신의 노하우를 결합한다. 매일 새로운 기술이 쏟아지는 데이터 과학의 가급적 최신 트렌드를 전하되, 필자 자신의 목소리를 담으려고 애썼다.

매일 읽고 쓰되, 억지로는 하지 않는다. 재미있게 쓴 글이 읽기도 재미있을 것이다. 필자의 생산성 관리 원칙을 적용해 매일 조금씩 하되 무리해서 쓰려고 하지는 않았다.

집필 과정에 데이터 과학을 최대한 활용한다. 가장 좋은 교육은 본보기를 보여주는 것이다. 한 권의 책을 만드는 과정에 필요한 다양한 의사결정에 최대한 데이터를 활용하였다.

좋은 책을 만들겠다는 결심에서 세운 이 원칙들이, 사실 필자가 책 집필이라는 프로젝트를 완수하는데 결정적인 도움을 주지 않았나 생각도 해본다. 필자 자신의 목소리를 담으려고 하지 않았다면 무의미함에 포기했을 것이고, 매일 조금씩 하지 않았다면 지쳐서 포기했을 것이며, 독자 분들의 의견을 청취하고 수렴하는 과정이 없었다면 길을 찾지 못하고 포기했을테니 말이다. 책 집필 과정에 대한 자세한 이야기는 조만간 공개할 예정이다.

어쨌든 우여곡절 끝에 ‘헬로 데이터 과학’을 독자 여러분 손에 내놓게 되었다. 지금 당장 원하는 독자는 아래 링크를 통해 YES24에서 책을 주문할 수 있다. 그동안 참 많은 분들께서 ‘책 언제 나와요’ 라고 물어보실 때마다 쥐구멍에라도 들어가고 싶었는데, 이제 자신있게 답할 수 있게 되었다. ‘최선을 다해 열심히 만들었으니 잘 보셨으면 좋겠네요!’

YES24 바로가기: ‘헬로 데이터 과학 : 삶과 업무를 바꾸는 생활 데이터 활용법’
(책의 목차 및 추천사, 출판사에서 만들어 주신 위트있는 그래픽을 감상하시기 바란다!)

추신: 사람이 하는 일이 다 그렇지만 책은 정말 혼자서는 절대 만들 수 없다. 처음부터 끝까지 격려해준 가족들과 (특히 아내) 친구들, 그리고 유닌히도 고집이 센 저자를 이해하고 다독여 준 한빛미디어의 최현우 팀장님과 송경석 차장님, Last but not least 이 책의 재료가 된 블로그 글과 초고에 대해 응원과 조언을 아끼지 않은 독자 그룹 분들과 리뷰어 분, 그리고 그 중 추천의 글을 허락해 주신 고영혁/권정민/엄태욱/전희원/하용호 님, 그리고 오삼균 교수님께 특별한 감사의 말씀을 전한다.

2016-02-02 01_37_41-Store

넷플릭스가 추천 및 검색 알고리즘을 개선하는 방법

오늘은 최규민님의 소개로 넷플릭스가 추천 및 검색 알고리즘을 개선하는 방법에 관한 아티클을 읽었 습니다. 제 연구분야인 온라인 서비스의 평가방법에 관한 글이라 관심있게 읽었는데, 넷플릭스가 아니더라도 검색이나 추천과 같은 데이터 프로덕트를 만드는데 관심이 있는 분이라면 꼭 읽독을 권합니다. 아래는 간추린 핵심 내용입니다.

  • 넷플릭스의 개인화 추천 알고리즘은 각 고객에게 좀더 다양하고 만족스러운 시청 경험을 제공함으로써 최소한의 영화 컬렉션으로 (비용절감) 최대한의 고객 유지율을 (매출극대화) 달성할 수 있게 합니다.
  • 개인화 추천 알고리즘의 결과 품질에 대해 직관적으로 평가하는 것은 (특히 제3자의 입장에서) 어려운 일이기에, 평가자 데이터보다는 온라인에서의 사용자 행동이 주된 평가 척도가 됩니다.
    • 반대로 비교적 객관적인 평가가 가능한 검색 결과의 경우 평가단에 (Human Relevance Judgment) 많이 의지합니다. (자세한 내용은 제 SIGIR 튜토리얼 참고)
  • 넷플릭스가 사용하는 행동 기반의 지표에는 고객 맴버십 지속도(retention) / 고객 흥미도(engagement) 등이 있는데 흥미도와 지속도 사이에는 강한 상관관계가 있습니다. 또한 지속도는 구전효과(word-of-mouth)와 높은 상관관계가 있습니다.
    • 넷플릭스에서는 새로운 기능이 실제 서비스에 반영되기 위해서는 국지적인 지표의 개선을 가져올 뿐만 아니라 전체적인 고객의 흥미도와 지속도를 높일 수 있어야 합니다.
  • 넷플릭스에서는 온라인 실험을 위해 사용자를 작은 그룹(cell)으로 나누어 각 그룹에 대해 2~6개월 가량 일관된 경험을 제공한 후, 그룹간에 다양한 지표를 비교합니다.
    • 반대로 고객의 유지도보다는 결과의 품질에 초점을 맞추는 정보검색 분야에서는 비교적 짧은 기간(며칠~몇주)안에 온라인 실험이 끝나는 경우가 많습니다. (관련 논문)
  • 온라인 실험에서 주요 지표간 불일치가 발생하는 경우에는 (예: 고객 유지도 증가 but 흥미도 감소 혹은 제자리) 노이즈인 경우라고 생각하고 실험을 다시 수행하게 됩니다.
  • 온라인 실험의 대상에는 신규 고객과 기존 고객이 있는데, 기존 고객은 훨씬 많은 숫자가 있지만 새로운 경험을 제공했을때 그 효과를 편향없이 측정하기가 어렵습니다. 신규 고객은 숫자가 적지만 익숙함에 따른 편향이 적은 대신 Free Trial 관련 노이즈가 있습니다.
  • 넷플릭스에서는 몇 달씩 걸리는 온라인 실험의 효율을 높이기 위해 여러 알고리즘을 동시에 실험에 포함시키거나, 개별 유저를 서로 간섭하지 않는 여러 실험에 동시에 포함시키거나, 혹은 오프라인으로 온라인 실험 결과를 예측하는 기법을 사용하기도 합니다.
  • 넷플릭스는 진출한 나라마다 별도의 추천 알고리즘을 만드는 대신 사용자나 영화 컬렉션 면에서 비슷한 특색을 가진 국가를 지역으로 묶어 지역별로 다른 알고리즘을 제공하는 방법을 사용하고 있습니다.

이 아티클에 지적된 사항 중 많은 부분은 Bing의 검색 품질에 대한 평가를 담당하는 저도 고민하는 부분입니다. 여러가지 미묘한 차이가 있지만, 검색이나 추천이나 결국 사용자의 Input에 따라 최적의 결과를 보여주는 기법이기 때문입니다. 작년에는 주로 데이터 입문자 대상의 글을 썼는데, 올해는 제 연구분야의 글도 본격적으로 써볼 생각이니 기대 바랍니다.

p.s. 예전에 썼던 페이스북 피드 랭킹의 평가에 대한 글도 참고하세요. http://www.hellodatascience.com/?p=572

페이스북이 뉴스 피드 랭킹을 만들고 개선하는 방법

최근에 페이스북 피드 랭킹 팀과의 인터뷰를 통해 피드 랭킹에 사용되는 데이터와 알고리즘을 상세하게 소개하는 글이 있어 소개합니다. 사용자의 질의어 대신 선호도를 바탕으로 동장하는 검색엔진에 비유할수도 있겠습니다. 이 글은 지속적으로 발전하는 온라인 서비스를 위한 다양한 교훈을 제공합니다.

요약하면, 사용자 행동 / 패널 / 피드백은 보완적인 시그널을 제공하며, 따라서 사용자 행동에 대한 정교한 로깅, 그리고 사용자가 간단한 피드백을 제공할 수 있는 채널 확보, 그리고 사용자를 대변하는 패널을 통한 상세한 피드백 청취는 모두 필요하다는 점입니다.

아래 핵심 내용을 간추려 보았습니다:

  • 사용자가 접속할때마다 평균 1500개의 피드가 랭킹 대상이 된다. 이 숫자는 사용자의 친구 수 및 활동성 정도에 따라 달라진다.

  • 초기에는 클릭이나 LIKE같은 사용자 행동에 기반한 랭킹 시그널만을 사용했다. (즉, LIKE 수를 가장 높이는 피드의 순서를 계산한다) 특히 페북 초기에 LIKE는 클릭보다 훨씬 좋은 시그널이 되었다.

  • 하지만 클릭된 피드가 꼭 좋으리라는 보장은 없고, (제목은 현란하지만 실제 광고 / 스팸성 글들) LIKE역시 스팸 가능성이 높다. 또한 주변 사람들의 안좋은 소식은 중요하지만 LIKE되지는 않는다.

  • 점차 행동 기반의 시그널의 맹점을 인식하면서 사용자의 실제 선호도를 대변할 수 있는 패널을 사용하기 시작했다. 처음에는 미국 한 지역에 있던 패널이 전미 각 지역으로, 그리고 전세계로 퍼져서 패북 사용자의 다양한 취향을 반영하고 있다.

  • 페북은 패널과 함께 실제 사용자들이 자신의 피드에 보이는 내용을 통제할 수 있는 옵션을 제공하기 시작했다. 피드를 감추거나 사용자의 선호도를 표현할 수 있게 한 것이다. 이 내용은 당연히 피드 랭킹에 직접 반영된다.

  • 하지만 이렇게 선호도를 표시하는 사용자는 일부에 불과하며, 어떤 사용자들은 읽은 피드를 모두 감추는 행동을 보였다. 따라서 피드 랭킹 알고리즘은 이런 데이터의 불균형성도 고려해야 했다.

  • 행동 기반 시그널도 진화를 거듭하여, 피드를 클릭하여 읽은 시간, LIKE를 눌렀을 때 피드를 읽고 눌렀는지 안읽고 눌렀는지 등에 따라 차등을 두고 있다. 당연히 읽고 누른 LIKE가 좀더 확실한 시그널이다.

  • 피드 알고리즘에 대한 모든 개선사항은 오프라인 테스트, 내부 테스트, 사용자 대상의 A/B 테스트를 거치며, 알고리즘이 실제 서비스에 반영된 이후에도 개선된 알고리즘의 영향을 받지 않는 Hold-out 그룹을 두어 신규 알고리즘의 long-term effect를 검증한다.

업데이트 (2/1): 오늘 자로 페이스북이 피드 랭킹 알고리즘을 다시 바꾼 모양입니다. 이번에는 평가단의 조사 결과를 적극 반영했다고 하네요. 클릭이나 라이크와 같은 행동 기반의 시그널이 악용될 소지가 많다는 판단에 페이지 품질 기반의 시그널의 비중을 높인 것으로 보입니다.

빅데이터에 이어 생활데이터의 시대가 온다

(제 브런치와 ZDNet에 소개된 글입니다. 생활데이터 모임에 참가하실 분은 링크를 참조하세요.)

필자가 어디서 ‘데이터 과학자’라고 하면 보통 ‘아, 빅데이터 하시는군요’ 라고 하시는 분들이 많다. 하지만 필자가 누누히 밝혔듯이 데이터는 문제 해결의 수단이고, 빅데이터를 꼭 써야 문제가 풀리는 것은 아니다. 필자는 빅데이터보다 주변의 문제를 끊임없이 데이터로 푸는 ‘생활 데이터’가 필요하다고 믿는다.

생활 데이터 사례: 당뇨병 관리 & 치킨집 수요 예측

우선 생활 데이터를 사례로 알아보자. 한국 네스프레소(Nepresso)의 디지털 어퀴지션 매니저로  일하는 서영부님에게는 최근 고민거리가 생겼다. 장모님께서 당뇨병 진단을 받으신 것이다. 아버님께서 10년 넘게 당뇨 증상이 있으셨던 터라 당뇨병 환자에게 필수적인 혈당 관리의 번거로움을 누구보다도 잘 아는 그였다.

실제로 장모님께서는 새로운 식이요법에 적응하느라, 혈당 측정을 하시느라 여러 가지 어려움을 겪고 계셨다. 공복 시 혈당은 120 이하, 식후 혈당은 160 이하를 유지한다는 목표를 세우고 아침 공복 1번, 식후 3번 측정의 빈도로 측정을 시작하셨지만 이를 꾸준히 기록하는 것을  힘들어하셨다.


서영부 님께서 공유해주신 장모님의 혈당 기록표: 중간 중간 빠진 부분이 보인다

평소 업무상 데이터를 늘 활용하는 서영부님은 장모님께 혈당관리를 위한 데이터 사용법을 가르쳐드렸다. 종이에 입력하시던 혈당 데이터를 엑셀에 옮겨 추이를 보여드리고, 추가로 데이터를 넣으시면 그래프가 그려지도록 만들어드린 것이다. 또한 혈당 관리를 위해서는 어느 기준점 이하로 그래프가 내려가야 한다는 점을 이해시켜드렸다.


서영부 님께서 공유해주신 장모님의 혈당 기록표 엑셀 버전

이를 통해 장모님께서는 측정하는 숫자와 목표간의 관계를 이해하실 수 있었다. 이와 함께 서영부님은 장모님께서 혈당관리에 필수적인 운동량을 채우실 수 있도록 미 밴드도 드렸다. 단순히 밴드를 드린 게 아니라 운동량의 기준을 설정하여 운동량이 부족한 날은 더하시고, 많은 날은 쉬시도록 말씀을 드렸다. 이런 사위의 정성에 장모님이 감동하신 것은 물론이다.

이상은 작년 12월 필자가 주최한 ‘생활데이터’ 모임에서 서영부님께서 직접 발표하신 내용이다. 서영부님은 본인이 의사 거나 의학 데이터를 다루어 보신 것은 아니지만, 간단한 도구를 사용하여 주어진 데이터를 시각적으로 이해하고, 운동량을 정확히 측정하도록 장모님을 도와드린 것이다. 위 사례에서는 엑셀을 사용했지만 필자의 지난 글에서는 종이와 펜만으로 15년간 당뇨병을 이겨낸 사례를 소개하기도 했다.

간단한 데이터 활용으로 비즈니스에 큰 변화를 가져온 경우도 있다. 작년 통계청에서 주최한 통계활용 수기 공모에서 최우수상을 차지한 통계로 튀기는 치킨은 치킨집을 하는 아버지를 돕기 위해 매일 매일의 계육 수요를 예측하는 모델을 만들어 활용했던 대학생 허성일님의 이야기다. 제품의 품질과 비용 절감을 위해 필수적인 수요 예측의 문제를 계절, 날씨, 이벤트와 같은 단순한 속성을 바탕으로 예측해낸 것이다.


‘통계로 튀기는 치킨’에서 사용된 계육 수요 예측 모델

예측 모델이라지만 사실 위 테이블에서 보듯 몇 개의 변수에 가중치를 주어 결합하는 방정식이니 복잡한 통계 기법을 사용한 것은 아니다. 하지만 위 모델의 예상량과 실제량을 비교한 아래 그래프를 보면 상당한 정확도를 자랑함을 알 수 있다. 허성일 씨가 이 예측모델로 아버님의 사람을 듬뿍 받은 것은 물론이다.


‘통계로 튀기는 치킨’에서 사용된 계육 수요 예측 모델의 성능

생활 데이터를 실천하는 사람들: Quantified Self

위 사례의 주인공들에게는 자기 주변의 문제에서 출발하여, 비교적 간단한 데이터와 방법으로 문제에 접근하였다는 공통점이 있다. 데이터라면 흔히 대형 컴퓨터나 복잡한 수식을 떠올리지만 이들은 데이터를 두려워하는 대신 자신의 문제를 해결해주는 수단으로 적극 활용한 것이다. 필자는 이처럼 데이터를 자신의 문제를 푸는 수단으로 적극 활용하는 태도를 ‘데이터 생활화’ 혹은 ‘생활 데이터’라고 부르고 싶다.

이처럼 데이터를 적극적으로 활용하는 개인의 이야기가 약간 낯설게 느껴질지도 모르겠다. 하지만 정보기술의 발전에 따라 최근 들어 개인이 자신의 삶과 업무에서 데이터를 수집하여 활용하려는 움직임이 전 세계적으로 확산되고 있다. 그리고 이 트렌드의 중심에는 앞서 소개한 Quantified Self라는 (의미: 계량화된 자신, 이하 QS) 이름의 커뮤니티가 자리하고 있다.

QS는 말하자면 자기 주변의 문제를 직접 데이터로 해결하는 생활 데이터를 실천하는 개인들의 커뮤니티로 2007년 시작된 이래 현재 약 34개 국에 100개가 넘는 지역별 그룹을 가진 단체로 성장해왔으며, 2011년부터는 매년 미국과 유럽에서 국제적인 규모의 콘퍼런스가 개최되고 있다. 이는 생활 데이터의 활용에 대한 폭발적인 관심을 대변한다. 필자는 꾸준히 QS 모임에 참여하고 있으며, 필자의 개인 행복도 측정 관련 발표는 시애틀 타임즈에도 소개되기도 했다.

그럼 QS커뮤니티의 사람들은 어떤 유형의 데이터를 모으는 것일까? 이를 살펴보면 사람들이 주로 모으는 가장 흔한 데이터는 활동량, 음식, 몸무게, 수면 및 감정 데이터이다. 자신의 웰빙과 직접 관련된 데이터를 주로 모으는 것을 알 수 있다. 하지만 사람들은 이외에도 인지 기능, 혈당량, 위치, 심박수, 스트레스, 생산성 등 굉장히 다양한 종류의 데이터를 모으고 있다. 자세한 목록은 QS 웹사이트의 가이드를 참조하자.

생활 데이터의 종류와 빈도

하지만 이들은 대부분 데이터 과학자가 아닌 평범한 사람에 불과했다. 그렇다면 이들은 어떻게 이런 분석을 수행하고 있을까? 최근 연구에서는 QS 커뮤니티 회원들이 데이터 수집 및 분석에 주로 사용되는 도구의 분포를 소개하고 있다. 연구 결과를 보면 엑셀 등의 단순한 도구를 사용하는 사람들이 절반 가까운 44%를 차지하고 있다. 데이터로 자기 주변의 문제를 푸는데 대단한 도구가 필요하지는 않다는 결론을 내릴 수 있다.

데이터 과학 입문의 지름길: 생활 데이터

필자는 데이터 과학을 처음 공부하려는 사람들에게도 여러 이유에서 생활 데이터를 꼭 권한다. 우선 자신의 삶과 업무에 관련된 문제들을 푸는 것은 낯선 누군가의 문제를 푸는 것보다 흥미로운 일이다. 만약 데이터를 통해 나를 괴롭히는 지긋지긋한 건강 문제에서 벗어날 수 있다면? 혹은 지금 보다 업무의 생산성을 획기적으로 높일 수 있다면? 데이터 과학을 공부하기 위해서가 아니라도 충분히 동기부여가 된다.

또한 자기 자신의 문제를 푼다면 그 문제의 핵심은 무엇인지, 그리고 어떤 데이터를 모아야 할지에 대해서도 스스로 알 수 있다. 물론 도출한 해결책에 대한 평가도 스스로 내릴 수 있다. 즉, 스스로 문제 정의부터 해결책 도출에 이르기까지 데이터 과학의 전 과정을 진행해볼 수 있다. 이런 경험은 앞으로 여러 사람과 좀 더 복잡하고 규모가 큰 문제를 해결할 때 큰 도움이 된다.

마지막으로 생활 데이터는 그 특성상 크기도 작고, 관련된 문제들도 단순하다. 덩치 큰 도구나 어려운 분석 기법을 적용하지 않고도 결론에 도달할 수 있다. 이런 경험을 통해 데이터에서 가치를 끌어내는 과정이 꼭 복잡하고 어려울 필요가 없다는 점을 깨닫게 될 것이다. 이처럼 주변의 현상을 데이터 관점에서 바라보는 훈련을 통해서 데이터 문제를 발견하는 시각을 기를 수 있다.

이처럼 자신의 주변에서 흥미로운 문제를 발견하고, 이를 해결해나가는 과정을 통해 데이터 과학을 공부하다 보면 어느새 데이터 과학자의 태도와 소양을 갖춘 자신을 발견하게 될 것이다. 필자가 2002년 데이터 과학이라고 부를만한 활동을 시작하게 된 것도 주변의 다양한 데이터를 모아서 분석하면서부터다.

집밥을 사랑하는 당신, 생활 데이터를 시작하라!

최근 들어 백종원 씨 등의 영향으로 집밥 열풍이 불고 있다. 집밥의 장점은 원하는 음식을 자기가 구입한 재료로 자신의 입맛에 맞게 조리해 먹을 수 있다는 점이다. 스스로의 힘으로 해 먹으니 외식보다 저렴하고 안전하게 한 끼를 해결할 수 있는 것이다. 또한 외식과 달리 집밥을 습관화하면 요리 실력이 늘어 더 적은 노력으로 더 맛있는 음식을 해먹을 수 있을 것이다.

집밥을 차려 먹듯 자기 주변의 문제를 데이터로 풀어보는 ‘생활 데이터’

필자는 생활 데이터를 집밥에 비유하고 싶다. 우리는 보통 다른 사람이 모으고 분석한 결과를 사용하거나, 데이터 업무를 전문가에게 맡겨야 된다고 생각한다. 하지만, 글의 서두에서 소개한 사례에서 볼 수 있듯이 데이터로 주변의 문제를 해결하는 일이 꼭 거창하고 복잡할 필요는 없다. 그리고 앞서 소개한 Quantified Self 커뮤니티와 같이 실제로 스스로 하는 데이터 수집과 분석이 글로벌 트렌드로 자리 잡고 있다.

집밥과 마찬가지로 생활 데이터의 장점은 지금 나에게 필요한 문제를 나에게 맞는 방식으로 해결할 수 있다는 점이다. 내가 수집한 데이터에서 직접 내린 결론이므로 어딘가에서 읽은 지식보다 나에게 훨씬 적합한 결론에 도달할 수 있다. 또한 다른 사람에게 맡길 필요가 없으므로 시간과 비용이 절약되는 것은 물론이다. 특히 21세기의 석유라고 불리는 데이터를 자신의 핵심 경쟁력으로 삼고 싶은 사람이라면 생활 데이터를 당장 시작해야 할 것이다.

생활 데이터를 시작하는 사람들: ‘생활데이터’ 그룹

그럼 어디서 생활 데이터를 시작할 수 있을까? 우선 데이터 과학에 대한 필자의 다양한 글을 참고하고, 필자가 작년 말 시작한 페이스북 생활데이터 그룹에서 생활 데이터를 시작하는데 필요한 다양한 조언을 얻을 수 있다. 생활데이터 회원으로 활동하기 위해서는 페북 그룹에 가입 신청을 하고 간단한 가입 양식을 작성하면 된다.

생활데이터 그룹의 첫 모임이었던 작년 12월 모임에는 서두에 소개한 서영부님을 비롯한 스무 분이 참석하셨다. 이중 현재 카이스트에 대학원에 재학중이신 박건우님은 피트니스 앱 사용을 지속하는 사용자들의 특징을 소셜 미디어 데이터로 분석하셨고, 모임에 참석은 못하셨지만 김영웅님은 지하철 데이터를 분석해서 연말에 붐비지 않고 데이트를 할 수 있는 장소를 시각화한 결과를 공유하셨다.

올해도 생활데이터 모임에서는 온라인 정모를 통해 자기 주변의 데이터 활용 사례와 방법을 꾸준히 공유할 생각이다. 필자와 함께 국내 여러 유명 데이터 과학자들과 생활 데이터 애호가들이 활발히 활동하고 있다. 데이터 과학을 실습과 경험을 통해 배우고자 하는 분, 데이터로 꼭 풀어보고자 하는 문제가 있는 독자 여러분의 많은 참여를 바란다. 이어지는 글에서는 생활 데이터를 시작하는 방법을 자세히 다루도록 하겠다.

헬로 데이터 과학: 삶과 업무를 개선하는 데이터 과학 이야기

한국 방문 중 두차례의 공개 세미나를 통해 많은 분을 만났습니다. 데이터에 관한 글을 쓰기 시작한 이후로 가장 보람된 순간이 아니었나 합니다. 저도 이번 발표를 준비하고, 여러분들과 소통하면서 많은 것을 배울 수 있었습니다.

제한된 시간동안 최대한 많은 것을 전달하려고 했지만, 부족한 점이 있었을 줄로 압니다. 12월 22일 발표에서 사용한 자료는 아래 링크에서 보실 수 있습니다. 실제 사용했던 슬라이드에 시간 관계상 생략했던 슬라이드와 각종 링크를 추가한 확장판입니다.

자료를 보시고 추가적인 의견/궁금증을 알려주시면 앞으로의 글 및 발표에 반영하도록 하겠습니다. 앞으로 미국에서도 지속적인 온라인 세미나를 계획중이므로, 여러분들의 피드백은 큰 도움이 됩니다.

오늘은 주제별 학습 가이드의 두번째로 데이터과학 도구의 사용법을 익히기 위한 자료를 소개한다. 우선 도구의 선택에 대한 필자의 글을 참조하기 바란다. 아래는 도구별 학습에 도움이 되는 자료들이다.

R

우선 R을 시작하려는 독자들은 다음 웹사이트에서 도움을 받을 수 있다. 특히 첫번째 자료는 엑셀 사용자가운데 R을 시작하는 사람을 위한 책이다. (1장 제공)

R을 실제로 사용하다보면 필요한 함수나 문법을 찾느라 많은 시간을 소비하게 된다. 이럴때 유용한 것이 자주 사용하는 기능을 한두장에 요약해놓은 Cheatsheet다. R을 자주 사용한다면 꼭 출력해서 보관하도록 하자.

R을 제대로 공부하기 위해서는 아래 분야별 서적을 탐독하도록 하자. 첫 세권은 Leanpub에서 무료 혹은 일정 금액을 내고 구입할 수 있으며, 나머지 책들은 온라인 버전을 공개하고 있다.

R관련해서는 양질의 한글 자료도 많다. 일부 공개된 다음 두 책으로 시작하시기를 추천한다. 저자의 홈페이지에서는 이외에도 R 및 데이터 과학에 관련된 양질의 자료를 얻을 수 있다.

엑셀

우선 데이터과학을 시작하기에 좋은 도구인 스프레드시트의 사용법과 사용상 주의사항을 다룬 사이트이다.

다음은 스프레드시트중 가장 널리 사용되는 엑셀의 사용법을 다룬 글이다.