의학계와 데이터 사이언스

0
751

얼마전 의학 연구직으로 있는 학창 시절 친구를 만났다. 자기네가 데이터 작업을 하고 있는데, 여기에 머신러닝인지 인공지능인지라는걸 쓰면 뭔가 좀 더 획기적인 정보를 찾아낼 수 있냐고 묻더라.

논문을 한 번 읽고, 두 번 읽고, 세 번 읽고, 아무리 생각해봐도 별 대단할게 없는 사회학자들 데이터 리서치하는 수준의 정보들인데, 여기에 머신러닝을 어떻게 써보겠다는건지 잘 이해가 안 되더라. Pabii 수업 시간에 계속 주장하는대로, 데이터에 Non-linear 패턴이 없으면 머신러닝이라는 계산 작업은 아무런 의미가 없다. Linear 관계를 찾는 작업, 특히 데이터 샘플이 랜덤 오차를 갖고 있는 경우라면 단순한 OLS가 최적의 Estimation 방법이기 때문이다.

굳이 뭔가 더 작업을 해 보겠다면 Latent variable을 찾아내기 위해서 Factor Analysis를 해 볼 수는 있다. 근데, 그렇게 찾아낸 Factor들에 이름을 달아주지 않고 의학 저널에 논문을 Publish 할 수 있을까? 적어도 내 연구 필드에서는 (거의) 불가능한 부분이었기 때문에, 의학 저널들이 제대로 통계 스터디를 한 논문에게만 bar를 넘을 수 있도록 해 준다면 어렵지 않을까 싶다.

Medicine doctor hand working with modern computer interface as medical concept (Source: Powerful Medical)

그럼 좋은 논문이란 뭘까?

몇 달 전에 수업에 찾아오셨던 약학 전공자 분이 수업 끝에 Nature 논문 하나를 보여주시던데, 거기에 딱 위의 Factor Analysis 개념을 활용한 Neural Network 모델이 있었다. 참고로 이런 모델의 공식 명칭은 Auto-encoder다.

약학 쪽 지식을 하나도 안 갖고 있기 때문에 무슨 말인지는 몰랐지만, 어쨌건 입력 변수 n개는 매우 많았는데, 이걸 5개의 Key element들로 추려내려고 Auto encoder를 활용했고, 그래서 이전과는 다른 결과값을 찾아냈다는게 논문의 요지였다.

분명히 그들이 찾아낸 결과값이 충격적이었기 때문에 Nature라는 어마어마한 저널에 출판이 되었을 것이라고 생각한다. 여기서 Auto encoder의 역할은 통계학 수업 때 배우는 Factor Analysis를 좀 더 그래픽 모델 스럽게 구현한 것에 불과하다. (좀 더 수학적으로 정확하게 이야기하면, Latent variable을 찾아내는 계산을 Linear말고 Non-linear하게 했다는 뜻이다.) 말을 바꾸면, Auto encoder를 썼기 때문에 그 논문이 Nature에 나가는 대박 논문이 된게 아니라, (Non-linear) Factor Analysis 덕분에 남들이 그 동안 찾지 못했던 결과를 찾아낸 것이라고 봐야한다.

글 첫머리에 이야기한 그 의학 연구직에 있는 친구가 필자를 찾아온 것은 아마도 본말이 전도된 정보를 들었기 때문일 것이다. 의학 분야에서 도메인 지식이 하나도 없는 필자가 그 친구를 도와줄 수 있는 것은 모델 코드를 쳐 주고, 특정 모델이 왜 작동하지 않는지, 어떤 모델을 쓰는게 논리적으로 맞는 건지에 대한 통계학적 경험을 전달해 줄 수 밖에 없다.

아주 최근에는 비슷한 일을 의학 교수님 한 분과도 겪어 봤다. 특별히 대단할 것 없는 Non-linear regression을 돌린 모델이 들어간 논문인데, 그 분야에서는 뭔가 중요한 결론이었을지 모르지만, 통계 모델만 봤을 때는 “오~ 여기에 머신러닝의 Ensemble 모델을 쓰면 결과를 완전히 뒤 엎을 수 있습니다” 따위의 코멘트는 할 수 없는 논문이었다. 기대한 것과 다르다고 불편한 답장을 보내셨는데, 뭐라 할 말이 없더라. (Pabii 수업까지 한 달 들으신 분인데, 이분 수업 헛들었다는 생각이 들어서 메일 받고 좀 기분이 나빴다.)

아마도 거의 대부분의 연구들이 다루는 데이터가 Non-linear 패턴을 갖고 있는 데이터가 아닐 것이다. 빅데이터 정의하는 글을 이미 여러번 썼지만, 데이터가 랜덤 오차를 갖고 있으면 Linear 계산법이 맞고, 당연하겠지만 머신러닝 모델을 쓸 수 있는 여지는 확 줄어든다.

 

머신러닝 방법론을 쓴다는 (양산형) 논문들

설령 Non-linear 계산법들 (속칭 머신러닝 계산법)을 써서 약간 더 Fitting이 좋게 나왔다고 해도, 그 방법론에 절대적인 믿음을 가지지는 말았으면 하는게, 모든 데이터는 약간의 오차를 항상 갖고 있고, 그 오차 때문에 일부 Non-linear 모델들의 Fitting이 좀 더 좋게 나오는게 그렇게 놀라운 일은 아니다. 다만, 데이터 셋이 바뀔 때마다 Fitting이 더 잘 나왔던 모델이 지속적으로 높은 Fitting을 보여줄 확률은 매우 낮다. 약간의 오차를 더 잘 잡아내는데는 도움이 되었지만, 오차의 형태가 바뀌면 더 이상 Fitting을 높게 유지할 수 없기 때문이다.

가끔씩 받는 의학 분야 저널 논문을 보면, 거의 대부분이 Multivariate Linear regression vs. 머신러닝 계산법 10가지 비교를 통해, 머신러닝 계산법 중 어떤 특정 계산법이 제일 좋더라는 결론을 내고 있다. 이해가 되는 부분은, 그 분들이 다루는 데이터 중 일부는 구간별로 유의미함이 달라지는 경우 (ex. 5~10, 20~30 구간만 영향을 주고, 나머지는 효과 x)이거나 , 병이 걸린 환자들을 대상으로한 데이터이기 때문이다. 앞의 경우는 Tree 계열 모델들이 Euclidean space에서의 계산법보다 더 fitting이 잘 나오는게 당연하고, 뒤의 경우는 데이터 자체가 이미 Multi-pattern을 갖고 있다고 봐야한다. 머신러닝 계산법 10가지를 다 써보고 그 중에 어떤 방법이 제일 낫더라는 결과론적인 계산값들을 공유한 기초적인 논문들이 SCI 논문이라고 나오는걸 보면 내 입장에서는 황당할 수 밖에 없다.

정말 제대로 된 리서치라고 하려면, 데이터의 형태에 맞춰 Tree 계열 모델을 써야할지, Euclidean space 기반의 모델을 써야할지에 대한 적절한 판단을 내려서, Tree 계열 모델을 쓰기로 결론 내렸으면 어떤 계산법을 써야하고, 데이터는 어떻게 처리하는게 맞는지에 대한 고민을 해야하지 않을까? 머신러닝 모델 10개를 다 써 봤더니 뭐가 제일 좋더라….는 정말 심각하게 잘못된, 학부 수준도 안 되는 적용방법이다. 머신러닝 모델 10개를 우리 데이터 셋에 맞게 어떻게 고친 상태에서 돌려봤더니 어떤 모델이 제일 좋더라고 하면 백번 양보해서 타협할 수 있다. 그 전에 데이터 전처리가 더 우선이기는 하겠지만… 의학을 하나도 모르는 통계학자는 그 동네 상황을 잘 모르니 데이터 전처리를 함부로 할 수 없다. 의학 하시는 분들이 방법론을 공부하거나, 통계학 하시는 분들이 의학 공부를 하시는 수 밖에.

 

계산법을 갖다쓰지말고 데이터를 전처리하면?

공학이나 사회학으로 가도 상황이 비슷비슷하더라. 필자가 위의 구간별 유의미성이 다른 데이터를 다루고 있었으면, 어떤 형태로 튀어나올지 예측 불가능한 Non-parametric 모델 (ex. Tree 계열 모델들)을 쓸게 아니라, 데이터를 가공했을 것이다. 효과가 있는 투약 구간이 5~10, 20~30이면, 그 구간에 걸리는 대상들을 1, 나머지는 0으로 놓는 Dummy 변수를 하나 더 추가하면 기존의 Multivariate regression 모델로 충분히 좋은 결과를 낼 수 있다.

Multivariate Regression 계열의 모델들은 어떤 변수가 어느 정도의 효과를 갖는지를 눈으로 직접 보고 직관적으로 쉽게 확인할 수 있다는 장점이 있기 때문에 글로벌 IT회사들이 Classification을 할 때 괜히 복잡한 Kernel SVM이나 Tree기반 Random Forest, Gradient Boosting을 쓰는대신 Logistic regression을 쓴다. (사실 그런 Kernel function을 쓰는 작업도 데이터 전처리로 치환할 수 있으니까.) 위와 같이 데이터 전처리를 살짝만 하면 충분히 Logit을 쓸 수 있다는 사실을 인지하고 있고, Logit이 관리에 더 적합한 모델이라는 사실을 아는 사람들이 굳이 다른 모델들에 관심을 가질까?

머신러닝 방법론을 쓴다는 양산형 논문들이 가지는 가장 큰 문제가 바로, “잘 모르니까 덮어놓고 이것저것 다 써 봤더니 어떤게 제일 좋더라”는 저급한 이해도에서 출발했다는 점이다. 학위 과정 중에, 평소에 데이터로 공부하는 중에 한번이라도 데이터의 형태를 변형해서 원하는 모델과 매칭시키는 작업을 해 봤다면 저런 논문을 쓰게 될까?

저런 계산법만 갖다써서 Non-linear 계산법 중 어떤 방법이 더 좋다는 결론을 특정 데이터 셋에서 얻어내고 난 다음 스텝은 뭘까? 다른 데이터 셋에서는 그 계산법과 유사하지만 다른 계산법이 더 Fitting이 좋다는 결론이 얼마든지 나올 수 있는데?

비슷한 여러개의 샘플에서 지속적으로 특정 군의 계산법이 더 Fitting이 좋게나오면, 이 데이터는 어떤 특정한 구조를 갖고 있겠구나는 결론을 내리고, 그 구조를 찾아내서, 그동안은 못 찾았던 병리학적인 원인-결과 관계를 찾아내는게 더 적합한 “연구”가 아닐까? 위의 약학에서 Autoencoder 썼다는 논문에서 저자들의 의도가 정말로 그랬는지는 모르겠지만, 결과론적으로 봤을 때는 100개가 넘는 변수들은 결국 5개의 Factor들로 정리될 수 있다는 결론, 그게 특정 약의 적용 기제와 연결되어 있다는 걸 알려줬기 때문에 Nature라는 초특급 저널에 실릴 수 있었을 것이라고 생각한다.

이래서 머신러닝에서 쓰는 계산법을 소개하는 수업 대신 기본적인 통계학 훈련을 더 받아야한다고 주장하는 것이다.

 

나가며 – 머신러닝? 데이터 전처리와 모델링이 먼저다!

뱅킹 시절 인턴으로 썼던 학부 후배가 모 투자사에 있어 Pabii의 사업 모델을 이야기 한 적이 있다. 스마트폰에 앱을 깔고, 그 데이터들을 가공해서 광고주들이 원하는 사람에게 Target 광고를 뿌릴 수 있도록 해 준다는 단순 요약한 아이디어를 던졌더니, 왜 고생스럽게 스마트폰에 앱을 깔게 하느냐, 그냥 광고주들한테 데이터 받으면 되는거 아니냐는 반문을 받았었다. 그거 남들이 이미 다 하고 있다고, 근데 그런 데이터로 할 수 있는 작업이 한계가 있어서, 아예 개인 스마트폰에서 더 핵심적인 데이터를 받아와야 시장 구조를 바꿀 수 있다고 설명해줬는데, 왜 그런 데이터가 필요한지 도무지 이해를 못 하는 표정이어서 좀 안타까웠다.

위의 의학 연구직군 분들이 데이터 사이언스에 대한 과도한 기대를 갖고 있는 부분과 Pabii 사업모델에 학부 후배가 던진 반문의 공통점은 뭘까? 어떤 데이터가 있어야, 어떻게 전처리해야 데이터 사이언스 모델이 파워를 발휘할 수 있는지에 대한 이해가 좀 더 깊었다면 그런 대화를 굳이 하지 않았어도 되었을 것이다.

수업시간 마지막에 잠깐 이야기하지만, 결국은 계산법 싸움이 아니라 데이터 싸움, 모델링 테크닉 싸움이고, 데이터를 많이 갖고 있다의 싸움이 아니라, 필요한 데이터를 갖고 있느냐의 싸움, 그 데이터를 어떻게 가공해서 적절한 모델을 만들어 낼 수 있느냐의 싸움으로 귀결이 된다. (수학적으로는 Target vector space를 커버할 수 있는 Data를 갖고 있느냐, 필요에 따라 vector space를 Kernel transformation할 수 있느냐, 그 kernel처리된 vector space를 설명하는 방정식을 찾을 수 있느냐로 바꿔 쓸 수 있겠다.)

데이터 사이언스의 어떤 테크닉(계산법, ex. Deep Learning)을 이용하면 대박이 난다는 단순한 관점에서 벗어난 사람들이 좀 많아졌으면 좋겠다.