데이터 사이언스의 학문적인 정의

0
3538

파비 내부에 기업부설연구소가 설립된 탓에 1년에 1번씩 담당기관에서 실사 방문을 받는다. 처음 그 방문을 받았을 때, “뭐하는 회사에요?”라고 물으시길래, 사업 모델을 간략하게 설명해드렸더니,

“아~ 빅데이터 회사네요”

라며 자기네 분류표 어느 구석에 Check를 하시더라.

순간 굉장히 불쾌했다. (누가 날더러 “아~ Data Analyst인가보네요? 저도 엑셀 잘 하거든요!” 라고 반응하는걸 듣는 느낌이었다.)

빅데이터 어쩌고라고 주장하는 회사들의 지적 수준이 어떤지 알고 있는데, 파비를 그들과 같은 그룹에 묶는다는 느낌이 들었기 때문일까? 사실 우리 회사를 나타나는 상징적인 키워드를 외부에서는 Data Science로 잡을 확률이 높고, 좀 지적 & 철학적으로 훈련 받으신 분들의 모임으로 가면 아마도 Integrated Intelligence라는 표현을 진정한 키워드로 고르실 수도 있다. (일반인 중에서는 AI라고 부르시는 분들도 있을듯)

하지만 파비에서 내부적으로 우리의 진짜 키워드로 삼는 표현은 Computational Science다. 그동안 Computer Science도 들어봤고, Data Science라는 표현도 들어봤고, 이게 Computational Statistics라는 지식이라는 것도 들어봤을텐데, 도대체 Computational Science는 또 뭐냐고?

(Source: Infinity War)

Computational Science란?

학문을 하는 사람들이 어떤 주장을 뒷받침하는 방식은 크게 2가지다. 이론적으로 증명하는 것과 실험결과물로 증명하는 것. 각각 연역적 추론과 귀납적 추론이라고 한다. (+물론 권위 or 짬밥으로 “우기기”를 하는 분도 은근 많다.) 데이터를 쓴다는 이야기는 굳이 따지자면 실험결과물로 증명하는 카테고리에 포함될 수 있다. 이론적으로 증명하는 것의 가장 단순한 예시는 소크라테스식의 3단 논법이라고 생각하면 될 것 같다.

위의 두 가지 방법 or 두 가지를 결합한 방식이 아주 오랫동안 학문하는 사람들의 필수 훈련 과목이었는데, 요즘들어 새로운 연구 방법론이 나왔다. 바로 Computational Science다.

도대체 어떤 연구 방법론을 Computational Science라고 부를까?

쉽게는 “컴퓨터를 학대해서” 손으로 계산할 수 없는 결과값을 뽑아내는 작업을 생각해 볼 수 있다. 또는 무수히 많은 가능성의 조합을 다 뒤져서 특정 사건이 일어날 수 있는 조합과 확률을 계산하는 것도 좋은 예시다.

최근의 유명 영화 Infinity War에서 Doctor Stranger가 14,000,605개의 시뮬레이션 끝에 딱 1개에서 자기네가 이긴다는 이야기를 하는 부분이, 1년후에 주가가 어떻게 움직일까에 대한 모든 가능성의 조합을 다 모았을 때 200% 상승하는 경우는 14백만분의 1이라고 이야기하는 것과 비슷한 맥락이다.

 

학계에서 Computational Science의 위치

Computational Science가 왜 이렇게 큰 관심을 끌어들이고 있냐는 질문에 대한 가장 확실한 답은 기존의 실험이나 데이터 기반 연구와는 달리 굳이 방대한 자료를 모으기 위해서 많은 노력을 들이지 않아도 된다는 점이다. 필자의 연구 주제였던 은행들의 포트폴리오 유사성과 금융시장의 연쇄다발적인 붕괴와 같은 연구를 하기 위해서는 은행이 절대로 노출시키지 않을 내부 포트폴리오 정보가 필수적이다. 비슷한 맥락으로 환태평양 지진대의 특정 이상 현상이 지진과 화산 폭발로 이어지는 경우의 수를 따져보려고 일부러 지진을 일으킬 수는 없다. 시뮬레이션 기반의 연구 결과물에 의존할 수 밖에 없는 것이다.

반대로, 일단 매우 많은 가정을 바닥에 깔고 모델을 만들어야하기 때문에, 가정이 하나만 실제와 달라도 아무 의미없는 연구가 되어버릴 수 있다. 결국 기초 데이터를 많이 확보해서, 가정을 매우 현실적으로 만들어야하는 과제를 안고 있는데, 이런 이유로 Robustness를 중시하는 기존의 수학, 통계학계에서는 Computational science를 Fake science라고 폄하하는 분들도 있다.

학계에서 어떤 Discipline이 Fake라는 공격을 받게되면 반박으로 가장 먼저 내세우는게 수학적인 엄밀성인데, 가정에 결과값이 좌우되는 학문 방법론의 한계를 극복하고자 수학적인 체계를 철저하게 검증하는 것이 Computational Science 분야의 특성 중 하나다.

또, “컴퓨터를 학대”해야하는 연구 작업의 특성상, 어떻게하면 하드웨어 자원 (Computational Power)을 덜 쓰고도 같은 결과를 얻어낼 수 있는지에 따라 학문적인 성취를 평가하기도 한다. 예를 들어 CPU, GPU 등의 계산 자원, RAM 같은 저장/처리 장치 자원, 또는 Information Theory를 적절하게 이용해 구조를 잘 설계해 가능성의 조합을 줄여버리는 작업 등등에 큰 가치를 부여한다.

데이터의 구조를 바꿔서 계산 비용 (Computational Cost)을 줄이려는 시도를 하시는 부류, 하드웨어 자원을 이용하는 방식을 바꾸려는 그룹을 보통 Engineering 쪽 연구자들 사이에서 만날 수 있고, Fourier Transform, PCA 같은 수학을 이용해 계산의 효율성을 높이려는 쪽을 Applied Statistics 연구자들 사이에서, 그리고 Game Theory 같은 non-numerical method를 쓰는 고민을 하는 분들을 수학과 경제학 분야에서 만날 수 있다.

(Source: Infinity War)

현재 Computational Science가 적용되는 학문

Computational Finance

기존의 통계학은 각 Process별 Independence가 깨지면 모델의 복잡성이 기하급수적으로 늘어나기 때문에 금융상품간 가격이 서로 복잡하게 연동되어 있는 요즘같은 시장에서 쉽게 쓰기가 어렵다. 2008년 금융 위기 당시, 전세계 4대, 5대 투자은행인 Bear Sterns와 Lehman Brothers가 연달아 무너지고, 다른 대형 투자은행들이 내일 망할지도 모른다는 소문이 Wall Street 전체에 파다하던 시절, JP Morgan 고위 관계자가 우주 역사에 한번 있을까말까한 사건들이 매일같이 일어나는 기이한 시장 상황이 벌어지고 있다는 인터뷰를 한 기록이 있는데, 기존의 가정은 금융상품 수익률이 독립적인 정규분포를 따를 것이라고 가정했기 때문에 나타난 현상이었다. (사실 정규분포를 따르지도 않았고, 서로 독립이지도 않았다.)

그 때를 기점으로 2010년대 초반부터 금융시장의 동시 붕괴를 Systemic Risk 라는 이름으로 새로운 형태의 위험으로 인식한 다음, 그 위험을 어떻게 계산할지에 대한 많은 연구가 있었는데, 정규분포 가정을 유지하려면 (그래서 계산을 인간이 이해할 수 있는 범위에서 하려면) Inter-dependence에 대한 고려를 할 수 밖에 없다는 사실을 BIS 같은 국제 기관과 FRB, BoE, ECB 등의 전세계 주요 중앙은행들이 납득하고 모델화하기 위해 큰 연구 비용을 쓰게 된다.

위에서 살짝 언급한대로, 은행들에게서 내부 Portfolio를 다 받아올 수도 없고, 또 그 내용이 시시각각으로 변화하기 때문에, 또 많은 금융 상품이 서로 연계되어 있기 때문에 요즘은 관련 연구 방법론으로 시뮬레이션을 활용하는 사례가 늘었다. (필자의 학문적인 배경이기도 하다.)

Computational Biology

DNA 구조도를 그리고 난 이래, 생물학, 생의학 연구의 방향이 크게 바뀌었다. 1개의 Gene이 인간 신체의 특정 기능에 직접적으로 영향을 미치는 경우도 있고, 다른 Gene들과 연계해서 간접적으로 영향을 미치는 경우도 있고, 또 여러개의 Gene이 복합적으로 영향을 미치는 경우도 있다. DNA 염기서열 안에 수 많은 Gene들이 있고, 각각의 복합 작용을 복잡계 수학으로도 쉽게 표현할 수 없다는 사실을 인지하고 나자, 갑자기 생물학에서 그전에 쓰지 않던 Network theory, Structural theory 들을 쓰기 시작했고, 최근에는 Information Component Analysis의 개념을 활용하는 Neural Net을 쓴 논문이 나오기도 했다.

PCA를 공부하신 분들은 알겠지만, Eigenvector는 상상속에 있는 하나의 축 같은 개념인데, 생물학에서는 Eigen-Gene이라는 이름으로 여러개의 Gene들을 재배열하고, 그에 맞춘 Array 를 2차원이 아니라 N차원으로 확장시키는 경우도 있다. 여기서만 끝났다면 Computational이라는 이름이 붙기 어려웠겠지만, 소수의 인간 데이터 샘플을 시뮬레이션으로 확장시킨다음, 질병 확산과 치료에 대한 연구 같은 의학적인 연구부터, 단백질 합성 방식의 변화같은 영양학적인 연구까지, 다양한 sub-area에서 Computational 방법을 활용하고 있다.

Complex Systems Theory

서울 시내에서 야식 배달 대행 서비스를 하고 있다고 생각해보자. 오토바이들의 움직임을 선으로 연결하면, 굉장히 복잡한 네트워크가 나올텐데, 그 네트워크는 여러분이 초,중,고 시절에 “한 붓 그리기”를 했던 그런 네트워크의 현실 버젼이라고 생각하면 된다. 이 때, 야식 배달 오토바이들이 가장 짧은 거리를 움직이도록 만들려면 어떻게 해야할까? 결국 “한 붓 그리기”를 현실 데이터로 하는 작업인데, 매일매일 야식 시키는 사람들의 주소도 바뀌고, 주문하는 음식점의 위치도 바뀌기 때문에, 수많은 종류의 가능성들을 생각해야한다. 겉으로 보이는 부분은 어떨지 모르겠지만, 뒤에서 돌아가는 계산만 놓고보면 Computational science를 이용한 Network optimization 계산이다.

이 부분을 Information theoryNon-equilibrium dynamics 같은 (초)고급 수학을 활용해 문제 풀이에 도전하는 연구자들도 있다. 참고로 Information theory는 보통 Game Theory와 Bayesian stat을 필수 지식으로하는 수학 분야고, Non-equilibrium dynamics는 시계열 통계학이 Equilibrium이라는 개념과 만나는 지점이라고 생각하면 된다.

Computational Engineering

아마 이 분야가 일반 독자들에게 가장 많이 알려진 영역이 아닐까 싶다. 쉽게는 CPU에서 코어 1개만 쓰는게 아니라, 수십개의 코어를 연결해서 Multi-core 계산이 가능하도록 만드는 프로그래밍 관점부터, GPU를 활용해서 대량의 데이터를 행렬 or Tensor 형태로 바꿔 빠르게 계산처리하는 부분도 해당된다. (Parallel programming, high performance computing)

이런 하드웨어 자원을 잘 쓰는 관점 뿐만 아니라, 이미지 인식, 자연어 처리 등 전형적인 Computer Science 주제들에서도 광범위하게 쓰이고 있고, Google이 TensorFlow라는 계산 프레임워크를 낸 덕분에 많은 연구자들이 이 주제에 쉽게 접근하고 있기도 하다. 위의 3개 연구를 오랫동안 해 오신 분들은 더더욱 공감하겠지만, 하드웨어 자원을 쓰는 혁신이 있기 전까지만해도 하나의 연구를 위한 시뮬레이션 계산은 슈퍼컴퓨터 자원을 얼마나 많이 얻어쓸 수 있느냐의 Money power game인 경우가 많았는데, 요즘은 어떤 아이디어와 어떤 수학을 더 Elegant하게 쓰느냐로 연구의 성과가 갈리는 경우가 많아지게 되었다.

**Big Data Analysis

혹자들은 “빅데이터 분석”이 Computational Science의 한 분야가 아니냐고 질문하시던데, 냉정히 말해서 필요한 수학과 통계학 훈련도를 봤을 때 빅데이터 분석은 수학, 통계학 훈련이 학부 기초 수준이어도 전혀 무리가 없는 업무라고해도 과언이 아니다. 오히려 특정 업계의 도메인 지식이 얼마나 많으냐가 훨씬 더 중요하다고 생각한다.

빅데이터를 Computational Science의 관점에서보면 분포함수와 상관관계에 대한 가정을 깔고 시뮬레이션으로 생성해야할 데이터를 Live & Raw 데이터로 구할 수 있다는 점에서 연구자의 가정에 끌려다니지 않는다는 장점이 있다. 하지만, 현재 시장에서 볼 수 있는 수준의 1차원적인 Graphical analysis를 학문의 영역에서 논하기에는 어려운 점이 많다. 시뮬레이션으로 처음 연구를 시작했던 분들이 기존 학계에서 Fake Science라는 폭격을 맞고 수학&통계학 모델링을 강화했던 것처럼, 현재 일반에서 보고 있는 빅데이터 분석이 Hard Science 하는 분들에게, 아니 최소한 마케팅, 사회과학같은 Soft Science 하는 분들에게라도 학문으로 인정받으려면 지금보다 수학적, 통계학적 Robustness를 훨씬 더 끌어올려야할 것이다.

논리성과 수학, 통계학으로 굳이 학문의 서열을 나누자면, Computational Science가 버겁게 겨우 학문의 영역으로 들어왔고, 빅데이터 분석은 여전히 학자들에게 Fake Science라고 폄하되는 레벨에 머물고 있는 것 같다.

 

나가며 – Data Science는 통계학인가요?

몇 달 전, Computational Biology로 박사 유학을 앞 둔 어느 학생을 Data Science Intern으로 면접 본 적이 있다. PCA와 Simulation을 이용한 연구 포트폴리오는 Bio 주제의 어느 박사 프로그램에서나 관심을 가질 내용이었는데, 정작 PCA 결과값에 Robustness를 고려한 부분에 대한 질문을 시작하자 수학, 통계학 지식이 학부 기초 과목 수준도 안 되는 걸 알 수 있었다.

Computational Science의 어느 한 분과 학문을 공부한 입장에서보면, 각각의 분과 학문에서 쓰이는 수학과 통계학은 거의 동일하다. 사실 수학쓰는 전공으로 대학원에서 연구하고 있으면, 자기 학문이 더 많이 쓰는 수학/통계학 방법론이 있을 뿐, 전공에 관계없이 공통적으로 알아야하는 부분은 큰 차이가 없다.

연구자들에게 Fake Science라고 무시당하던 Computational Science가 시장 수요 폭증에 맞춰 어느덧 학문 연구 방법의 하나로 인정받는 시점이 온 것은 위에 기술한 Engineering적인 혁신과 더불어, 각 분과 학문별로 수학/통계학의 엄밀성의 수준도 덩달아 높아졌기 때문일 것이다. (요즘 Computational Finance나 Computational Biology는 수학, 통계학, 물리학 박사 학위가 있는 Post-Doc들을 박사과정생으로 뽑기도 한다. 그 방법론을 쓰기 위한 수학&통계학 훈련이 1개 학문을 마스터한 레벨이어야 된다고 판단할만큼 버겁기 때문일 것이다.) 그런데, 위의 그런 예비 박사 유학생 수준으로 학부 기초 과목 수준도 안 되는 수학을 쓰며 연구를 하고 있으면 결국 Fake Scientist가 될 수 밖에 없다.

요즘 어디서 Data Science와 통계학의 차이가 뭐냐고 물으면 위의 Computational Statistics와 Computational Science 이야기를 꺼낸다. Computational Stat은 Stat지식을 CS의 도구로 풀어나가는 학문인데, 그걸 연구 방법론으로 쓰는 학문이 위에 언급한 Computational Science 그룹이라고. 예전에는 주먹구구식 연구법이라고 Fake Science라고 무시당했는데, 요즘에는 Bio나 Finance, 도시 설계 등등 수 많은 영역에 퍼져나가면서 수학, 통계학이 보강된 덕분에 학문으로 인정받는다고. 굳이 원 질문에 답을 달자면, 일반통계학은 (수학의 수 많은 영역과 더불어) 그런 연구 방법론들의 기초지식 중 하나고, Data Science는 사실 Computational Science의 다른 이름이라고. 통계학을 알아야 Computational Stat을 제대로 활용할 수 있고, 그래야 Computational Science를 하면서 Fake Science라는 욕을 안 먹는다고.

언젠가 파비의 인재풀, 자금력, 사업범위가 지금보다 더 커지면 Computational Finance에서 배웠던 Credit default model로 P2P 대출 시장에도 도전하고, Network Theory와 다른 Data Science 지식을 결합해서 배달 서비스에도 도전해 볼 계획이다. 위의 Computational Science에 장황한 설명과 필자의 사업 방향에 대한 정보가 Data Scientist가 왜 Data Analyst나 Data Engineer가 아닌지, 도대체 어떤 종류의 생각을 하는 사람인지 감을 잡는데 조금이나마 도움이 되었으면 한다.

 


 

파비 페이스북 페이지가 운영 중입니다.