데이터 사이언스 not “Data” but “Science”

두 부류의 착각이 있다. 하나는 머신러닝을 하는 개발자가 데이터 사이언티스트라는 착각이고, 다른 하나는 대용량의 데이터를 많이 다룬 데이터 분석가가 데이터 사이언티스트라는 착각이다. 필자는 전자를 Data Engineer, 후자를 Data Analyst로 부른다. 둘 모두 고급 통계학에 대한 지식이 전무하다는 점에서 이 분들을 데이터 “Scientist” 그룹에 묶는 것이 타당한지 의구심이 든다.

다른 글에서 줄기차게 이야기했던 것처럼, 머신러닝은 하나의 테크닉이다. 머신러닝을 잘한다는게, 딥러닝에 들어가는 Neural network의 계산 비용(Computation cost)가 줄어들 수 있는 모델 개조를 하는 능력일수도 있고, 어떤 문제에 적합하게 Neural network를 재구조화하는 능력일수도 있고, 아니면 자기네 회사 서버에 TensorFlow 같은 머신러닝 솔루션을 잘 얹는 능력일수도 있다. 첫번째와 두번째 능력은 머신러닝 연구자들이 갖고 있는 능력이고 이런 능력이 머신러닝 실력을 보여주는 능력이다. 반면 세번째 능력은 머신러닝을 잘 하는게 아니라, 머신러닝을 잘 “활용”하는 “개발자”라고 보면되고, 이런 지식은 개발 언어에 함수 몇 개를 더 많이 아는 것과 같은 피상적인 지식이다.

데이터 분석가(Data Analyst) 라는 타이틀을 달고 있으신 분들이 필자에게 자신의 업무 능력을 강조하면서 항상 하는 말이 “몇 년”동안 “엑셀”이나 SPSS, SAS 같은 데이터 패키지를 다뤄봤고, “얼마나 큰” 데이터를 다뤄봤는지에 대한 부분이다. 본인이 센스가 뛰어나고 통찰력(Insight)이 넘치는 데이터 분석가라면 아마 그 “몇 년”의 시간을 바탕으로 데이터가 보여주는 산업의 특성을 잘 설명하실 수 있을 것이라는 부분에는 의구심이 없다. 다만 그 분들이 아무리 큰 데이터를 다뤄봤다고해도 데이터 “분석가”가 아니라 “Scientist”라는 타이틀을 가져가실 수 있는지는 잘 모르겠다. 이분들이 “Scientist”라는 타이틀을 받으실려면 뭐가 더 필요할까? 학위? R이나 Python같은 연구, 개발 툴에 대한 지식과 경험? 머신러닝 테크닉?

 

데이터 사이언티스트란?

모 벤쳐 투자사와 술자리에서 데이터 사이언티스트가 하는 일이 정확하게 뭔지 궁금하다는 질문을 받았다. 이 질문에 대한 가장 좋은 대답을 존경하는 분께 들었는데, 이 글을 통해 많은 사람들과 공유하면 좋을 것 같다. 데이터 분석가는 자동차 수리공, 머신러닝 개발자는 자동차 엔진 개발자, 그리고 데이터 사이언티스트는 자동차 설계 및 디자이너라고. 참고로 여기서 엔진 개발자라는 분은 이미 만들어진 엔진을 차체에 이식시키는 수리공이 아니라, 4기통, 8기통 엔진을 직접 개발하는 엔지니어를 말한다. (한국에 있는 인공지능 기반 상품 회사에서 그런 능력을 갖추신 분을 별로 본 적이 없었다.)

숙련된 자동차 수리공은 자동차를 한번 운전해보고 엔진 소리를 들으면 어느 곳에 문제가 있는지 쉽게 파악해내고 적합한 솔루션을 제시할 수 있다. 머신러닝을 잘 활용하는 능력을 갖춘 개발자는 적절한 엔진을 장착시켜 자동차가 잘 나갈 수 있도록 해 줄 수 있다. 머신러닝 알고리즘을 직접 만드는 사람은 엔진 개발자라고 하면 적절한 비유가 될 것 같다. 그리고 차를 설계하고 디자인해서 상품을 출시하는 것에 해당하는 업무가 바로 데이터 사이언티스트의 업무가 아닐까한다. 말을 바꾸면, 데이터 사이언티스트에게 가장 핵심적인 스킬은 문제에 맞는 모델링을 하고 그 모델을 통계학, 시뮬레이션, 머신러닝 기술을 적절하게 조합해서 실제로 구현하는 능력이라고 본다.

예를 들어 유저들의 행동 패턴을 예측하는 온라인 광고 모델의 경우, 데이터 분석가는 유저의 연령, 성별, 지역 등등 식별화할 수 있는 정보들을 바탕으로 상호 연관관계를 잡아낼 수 있을 것이다. 거기에서 나온 Insight를 바탕으로 특정 유저군에게 광고 노출을 타겟하는 방식으로 광고를 진행할 수 있다. 머신러닝 개발자는 관계있는 변수들을 TensorFlow에 얹어서 그 변수들과 매칭율이 높은 유저에게 적절한 광고를 노출할 수 있는 시스템을 만들 수 있을 것이다.

데이터 사이언티스트는 우선 앞의 두 가지를 모두 다 할 수 있어야한다. 나아가 위에 언급한 것처럼 변수가 될 가능성이 있는 데이터 가공 능력도 필수다. 단순히 DB에 저장된 데이터를 그대로 TensorFlow에 얹는게 아니라, 다양한 테스트를 통해서 적절한 변수를 찾아낼 수 있어야한다. 변수들간의 상관관계가 목적에 부합하는지 테스트하는 능력도 필수다. 데이터에 오류가 있을떄 나타나는 상관관계가 있을 경우, 데이터 오류의 영향을 제거할수도 있어야 한다. 상관관계를 잡아내는 아이디어로 단순히 1차원적으로 몇몇 변수들간의 Correlation만 보는게 아니라, 데이터 조합을 바탕으로 Network를 구성한 다음 다시 Co-variance를 보는 방식으로 모델의 복잡성을 구체적으로 디자인 할수도 있어야 한다. 더불어 주어진 광고 캠페인 데이터와 미래 트렌드를 적절하게 조합하는 시뮬레이션 모델로 광고주에게는 광고 예산을 예상할 수 있게, 매체사에는 광고 물량을 예상할 수 있도록 해 줘야 한다. 사실 이 리스트는 만들다보면 끝이 없다.

어느 데이터 사이언스 학회에서 들었던 문구다.
“Key word in “Data Science” is not Data, but Science”

 

통계학의 저력

필자가 예전에 썼던 논문 하나를 소개하면서 글을 마무리할까 한다. 한 산업에서 기술 개발을 위한 Sunk Cost가 있는지, 그래서 경쟁 체제가 기술력 경쟁인지, 아니면 기술 개발보다 가격 경쟁으로만 산업 내 경쟁이 이뤄지고 있는지에 대한 테스트를 위해서 R&D 비용과 가격 경쟁용으로 쓰는 리베이트 비용을 놓고 Fixed effect (산업별 특성 있음) vs. Random effect (산업별 특성 없음)으로 Panel data regression을 돌린적이 있다. 이 산업은 우리나라 제약업계였고, 내 결론은 Fixed effect를 기각하는 것이었다. 같은 방식으로 글로벌 Top 10 제약 회사들로 다시 regression을 돌려보다 Fixed effect를 기각할 수가 없었다. 우리나라 제약업계의 리베이트 관행을 아는 사람이면 어느정도 예상할 수 있는 통계 분석이겠지만, 통계 모델로 직관을 증명해낸 그 순간의 “유레카!”는 지금도 잊을 수가 없다.

이런 방식으로 통계학 툴을 이용해서 다양한 아이디어를 검증하고 모델을 만들 수 있어야만 진정한 데이터 “사이언티스트”라고 할 수 있지 않을까?

 

<윗 글은 필자가 타사에 재직 중에 쓴 글을 일부 수정한 내용입니다. 원본은 이곳에서 확인해주세요.>

X