AlphaFold를 이용한 단백질 구조 예측

최근 Alphafold의 소스 코드와 전체 단백질 예측 구조 데이터 베이스가 공개되면서, 정말 다양한 방면에 활용이 가능할 것으로 생각되고 있습니다. 유전체 연구자의 입장에서는 Alphafold를 이용하면 수 많은 변이들의 in-silico structural prediction이 가능하기에, 과거에 존재하던 variant prediction tool들 보다 훨씬 강력하고 정확한 예측 도구가 나타날 것으로 생각됩니다. 이번 포스팅은 공개된 Alphafold2의 소스 코드와 데이터 베이스 자료를 정리해보고자 합니다.

[Alphafold2 모델 모식도]

Alphafold2의 경우, 기존에 실험적으로 17% 정도만 알려져있던 단백질의 3차원적인 구조를 딥러닝 기법을 활용하여, 존재하는 거의 모든 단백질에 대해서 높은 정확도로 예측하여 해당 구조를 데이터베이스로 제공하고 있습니다. 이는 과거에 알지 못했던 많은 단백질의 3차원 구조들에 대한 높은 예측을 제공하기 때문에, 완전히 새로운 필드를 열었다고 해도 과언이 아닙니다. 특히나 단백질의 3차원 모델화가 가능하다는 것은 이 모델을 활용하여 추후에 파생되는 약물 상호 작용이나 변이의 효과에 대한 예측도 가능하다는 이야기가 되기 때문에, 그 파급력은 더욱 클 것으로 생각됩니다.

현재 AlphaFold Protein Structure Database는 약 2만개의 단백질에 대한 정상 구조를 예측되어 제공하고 있지만, 개인적으로는 인간의 유전체에 존재하는 수 많은 변이 (Missense & Indel variants) 에 대해, mutant protein 들의 예측도 포함하는 Database가 update가 되길 기대해 봅니다. 현재까지의 아미노산 서열의 변화에 대한 많은 예측 Tool이 개발되었지만, 임상적으로 해석하고 활용하기에는 많은 한계가 있었는데, 최종 변이 단백질의 구조를 높은 정확도로 예측할 수 있다면, 그 해석과 활용도 용이해지기 때문입니다. 단백질 하나에 존재할 수 있는 아미노산 변이의 종류는 수만가지가 넘을 것이기 때문에 (아미노산 20종 x 단백질 서열 크기 500~2,000개 아미노산), 이러한 Database를 구축하기 위해서 컴퓨터가 연산해야할 데이터량이 무지막지하겠지만, 결국에는 이러한 in-silico saturated mutagenesis proteome Database도 추후에 구축되지 않을까 예상합니다. (비트 코인 채굴하는 자원이면, 금방 될 듯 합니다…)

[관련 포스팅 보기]

[References]

Deepmind Blog 소개 글: https://deepmind.com/blog/article/putting-the-power-of-alphafold-into-the-worlds-hands

Open source github 자료: https://github.com/deepmind/alphafold/

AlphaFold Protein Structure Database: https://alphafold.ebi.ac.uk/

Jumper, John, et al. “Highly accurate protein structure prediction with AlphaFold.” Nature (2021): 1-11.

Jumper, J., Evans, R., Pritzel, A. et al. “Highly accurate protein structure prediction with AlphaFold”. Nature (2021).

데이터 사이언티스트의 흔한 오류와 의료 정보 데이터 전처리시 고려할 사항

이번 포스팅은 Towards Data Scientist의 Top 10 Statistics Mistakes Made by Data Scientists 을 읽고, 의료 정보 데이터를 다룰 때도 역시 적용되는 흔한 오류들에 대해서 글을 써보고자 합니다. 데이터 사이언스와 머신 러닝이 보편화된 지금, 다양한 머신 러닝 기법을 데이터에 적용하는 것은 그리 어렵지 않은 일이 되었습니다. 머신 러닝 기법을 의료 분야에 적용하고 활용하는 시도가 다양하게 진행되고 있습니다만, 사실 많은 사람들이 간과하는 내용이 위 페이지에서 얘기하는 부분과 일맥 상통합니다. 위 페이지의 내용을 간략히 정리하면 아래와 같습니다.

  1.  Not fully understand objective function
  2.  Not have a hypothesis why something should work
  3.  Not looking at the data before interpreting results
  4.  Not having a naive baseline model
  5.  Incorrect out-sample testing
  6.  Incorrect out-sample testing: applying preprocessing to full dataset
  7.  Incorrect out-sample testing: cross-sectional data & panel data
  8.  Not considering which data is available at point of decision
  9.  Subtle Overtraining
  10.  “need more data” fallacy

특히 빅데이터를 활용하겠다고 하는 분야에서, 해당 내용에 대한 충분한 고찰이 있는지는 잘 모르겠습니다. 데이터 사이언스에서 가장 중요한 것은 데이터 그 자체 (Data) 입니다. 그러나 데이터가 쌓여서 빅데이터가 되면, 나무가 모여 숲을 이루는 것과 같이, 사람들은 빅데이터 (숲)의 처리 기술 (Technology)에만 집중하게 됩니다.

kisspng-tree-technology-root-geographic-data-and-information-5b0dafd3ca7051.5449292215276236358292

그러나 Real world (현실)에서 수집된 데이터는 수많은 오류를 포함하게 되고, 개별 나무의 오류에 대한 보정은 무시하고, Technology만을 이용해서 숲 전체를 보정하고자 노력합니다. 의료 데이터의 경우, 대부분의 데이터가 수기 입력 (manual input)이기 때문에, 필연적으로 몸무게, 성별 등과 같은 정보가 잘못 입력되는 경우가 빈번합니다. 체중을 54.7 kg이라고 입력해야하는데, 점을 잘못찍어서 5.47 kg이 된다던가, 547 kg이 입력되는 경우가 대표적입니다. 의료 데이터의 경우는 특히나 이러한 오류가 빈번한데, 이를 세심하게 고려하지 않고 교정없이 열심히 모델을 수립하고 예측하면 엉뚱한 모델이 도출됩니다. 그러한 면에서 데이터 전처리 (Data pre-processing)는 의료 데이터를 다루는 경우에 더욱 중요한 과정이라고 할 수 있겠습니다.

특히, 빅데이터를 다루는 많은 사람들은 raw data 를 들여다 보지 않습니다. 그러나 의료 빅데이터를 다룰 경우, 모든 환자 데이터를 들여다 보지는 못하더라도, 최소한 일부분이라도 한명씩 리뷰를 해보며 각 데이터를 따져볼 필요가 있습니다. raw data를 들여다 보는 것은 정말 중요합니다. 이러한 과정을 통해서, 데이터 자체가 지니고 있는 오류를 발견하고 보정해주고, 추후에 모델이 수립될 경우의 그 의미와 해석에 대해서 서로 연결 시켜나갈 수가 있게 됩니다. 모든 것을 컴퓨터에 맡기는 머신 러닝의 개념과 역설적으로 의료 데이터는 노가다가 필요합니다.

[Reference]

Top 10 Statistics Mistakes Made by Data Scientists

https://towardsdatascience.com/top-10-statistics-mistakes-made-by-data-scientists-2d58ccf12ab1

임상 빅데이터와 딥러닝(Deep Learning)을 활용한 연구와 고려사항

2년전부터 임상 빅데이터딥러닝 (Deep Learning) 기술을 접목하여 준비했던 논문이 있는데, 최근에 미국 심장학회 (American Heart Association)에서 발간하는 Stroke 지에 게제 승인이 나서, 관련된 내용을 정리하는 포스팅을 남길까 합니다.

의료 정보 빅데이터에 기계 학습 (Machine Learning) 기술을 활용하여 발표 하였던 저희의 첫번째 논문에서는 800명 정도의 환자 데이터를 이용하였는데, 당시 논문은 DIC 진단에 대해 기존 방법에 비해 진단 정확도를 높일 수는 있었지만, 딥러닝 기술이 다른 머신 러닝 기법 (Logistic regression, SVM, Random Forest, ANN)과 비교해서 우수한 성능을 보이지 못했습니다. 해당 연구를 통해, 다음과 같은 한계점을 느꼈습니다.

  1. 머신 러닝 기법이 통계적 기법보다 더 강한 성능을 보이기 위해서는 충분한 수와 양질의 데이터가 필요하다.
  2. 그러나 임상 메타데이터는 수는 많지만 매우 지저분 (messy)하다. (전처리 과정에 매우 큰 노력이 들어가야 한다.)
  3. 딥러닝의 강점을 충분히 활용하기 위해서는 매우 큰 양질의 코호트 데이터가 필요하다.

관련 포스팅 및 논문 보기>

의학 연구를 위한 기계학습 1: Supervised learning의 연구 설계 구조

의료 정보 빅데이터를 활용한 연구와 고려 사항

첫번째 머신 러닝 논문>> https://www.ncbi.nlm.nih.gov/pubmed/29718941

위와 같은 경험을 토대로 양질의 코호트를 찾던 중, 매우 운이 좋게도 신경과에 있는 친구와 의견을 나눌 수 있었고, 다행히 10년 정도 매우 잘 정리된 뇌졸중 환자 코호트를 활용할 수 있었습니다. 아래의 이를 토대로, 이번에 발표한 논문의 내용입니다.

 

Machine Learning–Based Model for Prediction of Outcomes in Acute Stroke

 

I. 논문의 배경 및 내용 소개

뇌졸중 (Stroke)은 고혈압, 흡연, 비만, 고콜레스테롤 등의 다양한 질환에 의해서, 뇌혈관의 혈류가 원활하지 않게 되면서 뇌세포의 사멸이 발생하는 급성 질환입니다. 다만, 빠른 처치 (약물 투여 또는 수술)를 통해서, 뇌혈류를 정상화 시키게 되면 정상적으로 회복 시키는 것이 가능하고, 그렇지 못할 경우에는 영구적인 뇌손상이 남게 됩니다.

저희는 응급실에 뇌졸중이 발생하여 내원한 환자 2,604명의 다양한 임상 정보를 토대로, 3개월 후 시점에서 환자의 예후가 좋을지 나쁠지를 예측하는 머신 러닝 모델을 개발하였습니다. 그동안 임상적으로 예후 예측에 널리 쓰이던 ASTRAL score 는 6가지 임상 정보를 이용하여, 환자의 예후를 예측했는데 저희는 응급실 도착 후에 환자로 부터 얻은 38가지 임상 정보에 딥러닝을 활용하여 환자의 예후를 예측했고, 5% 정도 더 정확하게 환자의 예후를 예측할 수 있었습니다. 재미있는 점은 아무리 딥러닝 기술을 이용하더라도, ASTRAL에서 사용하는 6개의 임상 정보만을 이용하는 경우에는 두 모델 (ASTRAL score 및 딥러닝) 간의 차이가 없었다는 점입니다.

 

II. 논문의 의의 및 시사점

6개의 임상 정보만을 활용하여, 딥러닝을 시켰을 때의 성능이 ASTRAL score와 차이가 없었다는 점은 딥러닝 기술이라고 해서 없는 정보를 더 잘 만들어 냄을 의미하지 않습니다. 즉, 환자의 예후에 영향을 미치는 다양한 요인을 더 세밀하게 수집을 해야만 더 정확한 예후를 예측할 수 있음을 의미합니다. 다른 말로 하면, 환자의 다양한 임상 정보를 매우 정확하고 다양한 측면에서 세밀하게 데이터를 얻어야만, 진정한 의미의 정밀 의료 (Precision Medicine)의 실현이 가능하다는 뜻이 됩니다.

 

AI(Artificial Intelligence) concept, 3D rendering, abstract image visual

II. 딥러닝 기술을 적용한 의학 연구시 고려할 사항

딥러닝 기술은 심층 신경망 (Deep neural network)을 형성함으로써, 기존 통계적 기법에서는 무시되는 데이터들 간의 매우 사소한 인과 관계도 활용할 수 있는 장점이 있습니다. 이러한 특징은 정밀 의료라는 프레임에 매우 적합한 점이라고 할 수 있습니다. 그러나, 이러한 네트워크를 제대로 형성 시키기 위해서는 충분한 수의 양질의 데이터가 필수  (Garbage In, Garbage Out)입니다. 즉, 사금을 채취 과정과 동일하게 아무리 모래 (빅데이터)를 많이 퍼와서, 딥러닝을 시킨다고 의미 있는 결과가 얻어지지 않습니다. 그러나, 딥러닝 기술을 모방한 많은 연구들은 이러한 점을 충분히 고려하지 않거나, 한계점을 지닌채 수행되었습니다.

또한 딥러닝이 충분한 성능을 발휘하기 위해서는 적어도 10,000개 이상의 데이터가 필요한 것으로 알려져 있습니다. 다행히 저희의 이번 연구에서는 10년간 매우 신경 써서 모은 4,000명 이상의 데이터를 이용할 수 있었고, 그럼에도 불구하고 초창기 5~6년의 데이터는 상대적으로 데이터 퀄리티가 떨어져서, 연구에서 제외할 수 밖에 없었습니다. 결국, 최근 3~4년 간 신경써서 모은 38개 임상 정보의 2,604명의 환자의 데이터 (38 x 2,604) 만을 이용하게 되었습니다. 그럼에도 딥러닝 기술과 ASTRAL score 간의 차이는 5% 정도 밖에 되지 않았습니다. 추후에 딥러닝의 장점을 더 잘 살리기 위해서는, 더 크고 정밀한 수의 데이터가 필요한 이유입니다. 그러나 이는 단일 기관에서는 거의 불가능하고, 따라서 국가 주도 또는 콘소시엄 형식의 연구가 필요한 이유가 됩니다.

 

[References]

Heo J, Yoon JG, et al., “Machine Learning–Based Model for Prediction of Outcomes in Acute Stroke”. Stroke: 2019

[참석 후기] AI EXPO 2018 인공지능 유저 컨퍼런스

블로그 컨텐츠의 다양화를 위해, 앞으로는 학회나 워크샵 참석 관련 후기나 내용들도 포스팅을 하려고 합니다. 그래서 이번 포스팅은 2018년 7월 9일 참석한 국제 인공지능 박람회에서 있었던 인공지능 유저 컨퍼런스 관련 발표 내용 및 자료입니다.

AI EXPO 2018은 발빠른 인공지능 시대에 맞춰(?) 올해 첫번째로 개최되는 국제 행사라고 합니다. 덕분에 오랜만에 코엑스에 방문하게 되었습니다. 개회사에서는 다양한 정치계 인사들도 참석해서 축사를 해주시더군요. 그러나 첫 개최라 그런지, 행사 진행이 미숙한 점이 많았고 컨퍼런스 장도 전시장 바로 옆 열린 공간에서 진행해서 어수선하고 시끄러웠습니다. 어쨌든 점점 키워가려고 하는 행사에, 저는 정말 운이 좋게 연자로 초청되어 발표할 기회를 갖게 되었습니다.

위와 같이 컨퍼런스는 크게 두 세션으로 진행되었고, 세션 1에서 전국 병원들의의 커다란 컨소시엄으로 진행되고 있는 Dr. Answer 프로젝트가 주로 소개되었습니다. 런칭된지 얼마 되지않아 성공적으로 끝날지는 지켜봐야겠지만, 상당히 인상적이었습니다.

많은 분들이 발표 슬라이드를 핸드폰으로 찍으시던데, 혹시 필요한 분들을 위해 마지막으로 저의 발표 자료를 업로드하고 포스팅을 마칩니다.

이 슬라이드 쇼에는 JavaScript가 필요합니다.

 

의료 정보 빅데이터를 활용한 연구와 고려 사항

최근 의료에서 핫한 키워드 두가지를 꼽자면 ‘빅데이터‘와 ‘인공지능‘일 것입니다. 많은 의료계 연구자들이 의료 빅데이터에 인공 지능을 접목하여, 새로운 연구를 시도하고 있고 저 또한 관심을 갖고 공부를 시작했기에, 이번 포스팅에서는 그 동안 제 스스로 의료 정보 빅데이터를 다루면서 느꼈던 데이터의 여러 가지 특성, 연구 활용을 위한 한계 및 고려사항 을 포스팅해 보고자 합니다.

관련 포스팅 보기 -> 의학 연구를 위한 기계학습 1: Supervised learning의 연구 설계 구조

우선, 의료 정보 빅데이터라고 할 수 있는 데이터의 종류는 환자에 대한 주치의의 의료 정보 기록(Electrical Medical Record, EMR) 부터 검체 검사 결과 (Lab findings), 영상 검사 결과 (Image findings) 등등 까지 다양합니다. 이러한 환자의 데이터는 다양한 양식으로 병원별 데이터 저장소 (Data Storage System)에 보관되는데, 여기서 가장 근본적인 문제가 발생합니다.

 

Medical record on tablet screen with stethoscope on wooden backg

I. EMR 기록 – 표준화된 데이터 보관 양식의 부재

비록 최근에는 데이터 보관 및 양식의 표준화를 위한 노력이 시작되어 많은 진전을 이루고 있습니다만, 과거 EMR system이 처음 구축될 당시에는 오늘 날의 빅데이터의 시대까지 내다볼 여력이 없었습니다. 따라서 대부분의 환자 데이터는 병원별로 구축된 적당한 양식으로  보관되었습니다. 어떤 환자의 의무 기록 사본은 손글씨로 작성되어, 적당히 스캔해서 이미지로 올라가 있기도 하고, 어떤 의무 기록은 다양한 데이터 필드에 문장을 서술하는 방식으로 기록되어 있습니다. 이러한 데이터 형식은 사람이 이해할 수는 있지만, 컴퓨터 친화적 (컴퓨터가 이해할 수 있는 데이터)이지 않은 형식입니다.

데이터 curation이 적당히 되어 있지 않기 때문에 이러한 데이터를 다시 활용하려면 결국 의학적 지식을 가진 전문가가 다시 수작업으로 데이터를 전처리 및 분류해야만 합니다. 무엇보다 가장 큰 문제는 그나마 가장 분류에 활용할 수 있는 진단 코드 또는 보험 청구 코드 마저도 다양한 현실적 문제에 영향을 받는다는 것입니다. 의학적으로 진단이 동일하더라도 진료 부서나 주치의, 환자의 경제적 상황 등등에 따라 진단 코드도 달라지게 됩니다. 또한 그나마 객관적이라고 보이는 진단 코드라고 하는 것도 모든 의학적 상태를 정확하게 반영하지 못합니다.

이러한 현실은 의료 빅데이터 저장소로 부터 과거의 관심있는 케이스들을 다시 불러 들여 연구에 활용하거나 서로 다른 기관의 데이터를 공유 또는 통합하고자 할 때, 데이터 전처리에 커다란 노력을 요구하는 큰 장벽으로 작용합니다.

 

shutterstock_143897611

II. 검체 검사 결과 – Lab data의 특성 및 한계

상대적으로 주관적이라고 할 수 있는 환자에 대한 주치의의 의무 기록에 비해, 혈액 검사 결과와 같은 데이터는 수치 결과로 되어 있어 상당히 객관적이고 활용하기 용이하다고 생각하기 쉽습니다. 사실 진단검사의학과 의사로서 빅데이터와 인공 지능에 대해 공부를 시작하게 된 것도 Lab 데이터의 이러한 특성 때문입니다. 그러나 상당히 객관적으로 생각되는 수치 데이터 또한 여전히 너무나 많은 문제들을 내재하고 있습니다.

그 중에 가장 큰 문제는 검체 검사 결과는 절대적 데이터가 아니라는 점입니다. 즉 같은 환자의 혈액을 가지고 검사를 하더라도, 어떤 회사의 장비를 이용하여 어떠한 원리로 검사를 하느냐에 따라 보고되는 검사 결과의 수치는 전부 제각각이며, 주치의는 검사 결과의 절대값으로 환자의 상태를 판단하는 것이 아니라 정상 참고 범위 (Reference range)를 기준으로 상승했는가 또는 하락했는가를 보고 환자를 본다는 점입니다. 그렇다면 이러한 정상 참고 범위를 기준으로 표준화한 값을 활용하면 되지 않겠는가? 라고 생각하기 쉽습니다만, 사실 모든 검사 항목에 대해 기관별로 정상 참고 범위를 설정하는 것은 현실적으로 어려운 점이 많기도 하고 가능하지 않은 경우도 많이 발생합니다.

또한 여전히 검사 기관별로 보고하는 결과의 단위도 제각각인 경우가 많으며, 같은 항목을 보는 검사 (e.g. 면역 관련 검사)에 대해서도 정성적 (Positive or Negative), 반정량적 (1:2, 1:16 등), 정량적 (152.4 와 같은 수치)으로 보고 방식이 상이하기도 합니다. 또한 검사 장비도 기계이기 때문에 검사 기법과 원리가 점점 발달하게 되는데, 가령 기계의 검사 방법이 ELISA에서 Chemiluminescence immunoassay로 바뀌면 보고되는 데이터 수치의 신뢰도 및 특성도 엄청나게 바뀌게 됩니다. 만약 수년간의 데이터를 모아서 연구에 활용하려고 하는데, 병원에서 중간에 검사 장비를 바꾸는 event가 있었다고 하면 데이터 수치에 엄청난 bias가 개입하게 됩니다. 사실 이러한 여러 가지 문제들은 진단검사의학과를 전공한 의사가 아니면 크게 중요하게 생각하지 않는 문제들이나, 개인적으로 이러한 lab data를 가지고 실제로 연구를 해보려고 하니 생각보다 이러한 요소가 결과에 너무도 크게 영향을 미친다는 사실을 느꼈습니다.

 

46155_1

III. 영상 검사 결과 활용의 어려운 점

사실 저는 영상의학과 의사가 아니기 때문에, 영상 데이터에 대해서는 전문가가 아닙니다. 따라서 이 부분은 간략하게만 언급하겠습니다. 영상 데이터는 그래도 많은 이미지가 표준화된 양식으로 되어 있기 때문에 가장 활용이 용이한 측면이 있습니다. 딥러닝과 같은 다양한 머신 러닝 기법들이 가장 먼저 적용되고 있는 분야도 영상이나 병리과의 이미지 판독이라는 것만 봐도 알 수 있습니다. 그러나 연구의 관점에서 보면, 이러한 기법을 위해서는 엄청나게 많은 수의 데이터가 필요하고 동시에 그 용량도 어마 어마하게 됩니다. 필연적으로 이러한 데이터를 처리하려면, 최신의 분석 기법과 동시에 컴퓨터의 연산 능력도 매우 크게 요구됩니다.

 

IV. 마치며…

사실 의료 정보 빅데이터라고 하면 정말 쉽게 병원 서버의 CDRS 시스템을 이용하여 양질의 데이터를 얻을 수 있을 줄 알았습니다. 그리고 그 많은 수의 데이터를 활용하여 데이터 전처리 및 가공을 하면 최신의 빅데이터 분석 기법을 활용할 수 있을 줄 알았습니다. 그러나 제가 연구를 직접 해보면서 느낀 것은 아직은 양질의 데이터 수집이 현실적으로 쉽지 않다는 것입니다. 진단명과 코드에 기반하여 10,000건이 넘는 케이스들을 모아보았지만 데이터의 퀄리티가 너무 떨어졌습니다. 의학적 관점에서 중요한 내용들은 많은 경우, 의무 기록 한켠에 다양한 의학적 term으로 서술되어 있었고  EHR 시스템의 진단 코드 데이터는 연구 수준으로 모두 신뢰하기 어려웠습니다. 물론 코드 기반의 데이터 추출을 활용하여 어느 정도 데이터 전처리는 가능했지만, 결국 최종적으로는 수작업으로 모든 환자의 의무기록을 리뷰하고 확인하는 과정이 필요했습니다.

사실 마지막으로 가장 중요한 점은 이러한 빅데이터 접근법을 활용한 연구를 하였을 때, 정말로 의미있는 결과를 도출할 수 있는가? 인 것 같습니다. 위에서 언급한 것과 같은 이유로 많이 편향되고 Noise가 포함된 의료 정보 데이터를 잘 활용하여 연구 결과를 도출 했을 때, 그것이 정말로 의학의 발전에 도움이 될 수 있는가?는 또 다른 문제이기 때문입니다.

아래는 제가 하루에 환자 2~30명의 케이스를 2~3시간 정도씩 리뷰하여 1,000여건의 케이스를 분류하여 작성한 논문입니다. 사실 처음 빅데이터에 대한 기대와는 다르게, 엄청나게 많은 노가다(?)가 요구되었고, 데이터 수집 및 정리 (Data curation)에만 6개월에 가까운, 많은 시간이 걸렸습니다. 마지막으로 위의 과정을 통해서 나온 저희 논문과 준비할 때 도움이 되었던 논문을 소개하며, 이번 포스팅은 여기서 마치도록 하겠습니다.

[Reference]

Yoon JG et al. Machine learning-based diagnosis for disseminated intravascular coagulation (DIC): Development, external validation, and comparison to scoring systems. PLoS ONE 13(5): e0195861

Rumsfeld, John S., Karen E. Joynt, and Thomas M. Maddox. “Big data analytics to improve cardiovascular care: promise and challenges.” Nature Reviews Cardiology 13.6 (2016): 350.

 

의학 연구를 위한 기계학습: Supervised learning의 연구 설계 구조

 

이번 학기 마지막 대학원 수업으로 ‘인공지능과 의학 응용’이라는 과목을 수강 중입니다. 수강 인원을 보면, 얼마나 많은 임상 선생님들이 인공지능 (Artificial Intelligence)을 이용하여 의학 연구에 응용하는 것에 관심이 많은지 알수 있었습니다. 학기가 다 끝나지는 않았지만, 안타깝게도 강의 교수님이 통계학과 선생님이라 그런지 수업을 신청한 임상 선생님들의 요구(Needs)와 수준을 제대로 파악하지 못한 듯 합니다. 대학원 수업에 대한 약간의 답답함이 생겨, 의사들의 입장에서 쉽게 이해하고 연구에 적용할 수 있는 관점에서 관련 글을 포스팅 해볼까 합니다. 사실 저도 통계학과 전공자나 컴퓨터 과학 전공자가 아니기 때문에, 전문 용어는 최대한 줄이고 개념적, 응용적 관점에서 글을 쓰도록 하겠습니다.

의학 연구에 적용하기 위해 개념적으로 알아야할 머신 러닝 (Machine Learning) 내용은 그리 어렵지 않습니다. 사실 연구를 위한 머신 러닝 응용은 통계학적 분석이나 크게 다를 바 없는 하나의 분석 도구 (Analytic tool)일 뿐입니다. 그리고 대부분의 연구에서 적용하는 머신 러닝은 대부분 Supervised learning과 Unsupervised learning 2가지 방법 중 하나입니다. (사실 Semi-supervised learning, Reinforcement learning 등의 기법도 있지만, 아직까지 의학 연구에는 그리 많이 쓰이지 않으므로 넘어가겠습니다.) 최근 가장 최신 기법으로 생각되고 있는 딥러닝 또한 적용 알고리즘의 차이 일 뿐 대부분 연구에 사용되는 연구의 큰 틀은 동일합니다. 그리고 그 마저도 대부분이 Supervised learning 방법이라고 생각하면 쉽습니다. 이번 포스팅에서는 Supervised learning을 이용한 연구의 구조와 방법, 각각의 예를 살펴보겠습니다.

  1. Supervised learning (지도 학습)을 이용한 연구: 컴퓨터에게 명확한 결과의 정답지(흔히, Label이라고 부릅니다.) 를 제공하여 훈련(Training)을 시킵니다. 컴퓨터는 정답지를 바탕으로 각 변수의 중요도 및 기여도를 판단하게 되고, 훈련된 데이터를 바탕으로 모델을 수립하게 됩니다. 모델이 수립되면, 우리가 알고자 하는 테스트 데이터를 이용하여, 만들어진 모델의 성능을 평가합니다. 지도 학습은 크게 다음과 같은 2개 target (분류 또는 수치 예측)에 따라 서로 다른 알고리즘을 적용하게 됩니다.

1) 분류 (Classification): 질병 상태와 정상 (Diseased vs. Healthy control)을 여러 임상적 결과에 따라 분류하는 경우로, 가장 흔히 사용하는 방법입니다. 예로, 암 환자와 정상 환자의 여러 가지 임상 변수 데이터를 제공하고 둘을 구분하는 모델을 수립하는 경우가 있습니다. 이 경우에는 2가지 또는 그 이상의 카테고리로 데이터를 구분하게 됩니다.

2) 수치 예측 (Regression): 양적인 값을 예측하는 모델을 수립하고자 할때 사용하는 방법입니다. 예로 암 환자의 여러 가지 임상 변수 데이터를 바탕으로 생존 기간을 예측하고자 하는 경우가 있습니다. 이 경우에는 정량적인 수치로 예측 결과가 나오게 됩니다.

supervised learning
Supervised learning 방법을 이용한 연구 방법의 모식도. Training data를 통해 최적의 모델을 수립하고, Test data를 통해 실제 수립된 모델의 성능을 평가합니다.

Supervised learning을 이용할 때 중요한 점은 다음과 같습니다.

  1. Label 결과가 중요하다.: 머신 러닝은 제공된 정답지(Label; gold standard)를 토대로 수학적 계산을 통해 최적의 모델을 수립하게 되므로, 잘못된 Label을 주거나 모호한 데이터를 토대로 training을 시키면 이상한 모델이 수립될 수 밖에 없습니다. 또한 Supervised learning과 unsupervised learning을 구분짓는 요소가 바로 Label의 존재 유무 입니다. 즉, 모델 수립시 사람의 개입이 있게 되는 모델이 supervised learning이 되겠습니다.
  2. 임상 변수 (Clinical variable) 선택이 매우 매우 중요하다.: 연구를 설계하고, 머신 러닝 알고리즘을 적용할 때, 특징적인 임상 변수 데이터를 제공하여 모델을 수립하게 되는데, 사실 어떠한 변수를 주던지 모델은 만들어집니다. 다시 말하면, 의미없고 전혀 관련성이 없는 변수인데도 불구하고 머신 러닝 알고리즘은 그것을 판단하지 않고 모델 수립에 데이터를 이용하게 된다는 것입니다. 종종 이것은 잘못된 해석을 유도할 수 있습니다. 즉, 모델링에 사용할 임상 변수를 선택하는데 있어 신중하고 꼼꼼하게 고려하고 해석해야한다는 것입니다. 임상 변수의 선택 및 해석에 대한 부분은 머신러닝 전문가라 하더라도 잘 모를 수 있기 때문에, 임상 연구자들이 가장 중요하게 챙겨야 할 부분이라고 할 수 있습니다. 그리고 많은 경우, 수립된 모델에서 변수의 중요도를 계산하여 실제로 적절한 모델인지 해석하게 되는데, 복잡한 알고리즘의 경우 연구자가 그 중요도를 판별하기 어려운 경우도 있기 때문에, 적절한 임상 변수 선택은 매우 중요한 과정이라고 할 수 있습니다.
  3. Over-fitting (과적합)을 피하기 위해, Validation 과정은 필수다.: 일차적으로 모델을 수립할 경우, 머신 러닝 알고리즘은 가장 최적의 모델을 만들어줍니다. 따라서 이때의 모델의 정확도(accuracy)성능(performance)은 좋을 수 밖에 없습니다. (이를 과적합이라고 부릅니다.) 하지만 이 때 수립된 모델의 경우, 매우 지엽적인 데이터에 한정되어 그러한 성능을 보일 수 있기 때문에, 일반적인 상황에서도 수립된 모델이 잘 작동하는지를 평가해야 합니다. 이 과정을 Validation 이라고 부릅니다. Validation은 다른 병원 또는 다른 환자 데이터에서 시행하는 external validation을 시행하는 것이 bias 제거 측면에서 더 좋지만, 임상 데이터가 적은 경우에는 전체 데이터를 Training set과 Test set으로 적절히 쪼개서 (8:2 또는 7:3, 혹은 cross validation 등)  internal validation을 시행하게 됩니다.

마지막으로 대표적인 논문을 살펴보고, 포스팅을 마치겠습니다. 2016년 JAMA에 실린 딥러닝 알고리즘을 적용하여 당뇨병성 망막증을 진단하는 모델을 개발하고 검증한 매우 유명한 머신 러닝 관련 논문입니다. 역시 연구 구조는 위의 틀을 크게 벗어나지 않는 것을 볼 수 있습니다.

1_00000

2

Development set은 모델 수립을 위한 training data 이며, 각각의 이미지에는 전문가가 당뇨병성 망막증이라고 labeling된 데이터가 제공됩니다. 이 데이터를 토대로 수립된 모델을 다른 기관의 validation set에서 그 성능을 평가한 것을 볼 수 있습니다. 보통 모델의 성능 평가는 ROC 커브 (Receiver operating chracteristic curve)를 통해 하게 되는데, ROC curve의 작성과 해석에 관한 부분은 다음번 포스팅에서 다루도록 하겠습니다.

[참고 문헌]

Deo, Rahul C. “Machine learning in medicine.” Circulation 132.20 (2015): 1920-1930.

Gulshan, Varun, et al. “Development and validation of a deep learning algorithm for detection of diabetic retinopathy in retinal fundus photographs.” JAMA 316.22 (2016): 2402-2410.