본문 바로가기

인사이트

EHR 데이터를 활용한 의료인공지능 모델 개발 파이프라인

환자 상태의 조기 예측은 환자를 위한 예방적 개입과 한정된 병원의 자원 할당에 도움을 줄 수 있어 중요성이 큽니다. 이를 위해 가장 쉽게 활용할 수 있는 것이 ‘EHR(Electronic Health Record) 데이터’입니다. 이는 쉽게 수치화 할 수 있고, 많은 입원 환자들의 데이터를 지속적으로 기록하기 때문입니다.

실제로 EHR 데이터를 활용한 규칙 기반(Rule-based)의 접근법들이 임상 환경에서 사용이 되고 있었으나, 최근에는 머신러닝, 그중에서도 ‘딥러닝’을 바탕으로 하는 접근법들이 주목받고 있습니다. 딥러닝 기반의 접근법은 ▲환자 개인의 특성을 고려할 수 있으며 ▲시간적인 정보를 활용하기 유리하고 ▲여러 정보를 동시에 반영할 수 있다는 장점이 있습니다.

관련 연구들이 활발히 진행되고는 있지만 아직 딥러닝 모델을 일상적인 치료 환경에서 사용하는 사례는 많지 않습니다.

2021년 Nature Protocols 저널에 실린 “Use of deep learning to develop continuous-risk models for adverse event prediction from electronic health records” 이라는 논문에서는 실제 임상 환경을 구현하기 위해서 필요한 파이프라인을 5개의 단계와 33개의 세부 요소로 나누어 제안하고 있습니다. 이제부터 논문에 어떠한 단계와 요소들이 담겨있는지 간단하게 소개해 드리겠습니다.

파이프라인 설명

EHR 데이터를 활용한 머신러닝 모델 개발 파이프라인은 다음과 같이 다섯 단계로 나눠볼 수 있습니다.

①문제 정의 ②데이터 전처리 ③모델 구조 선정 ④모델 보정 및 불확실성 추정 ⑤모델의 일반화 가능성 평가

 


자, 그럼 문제 정의 단계부터 살펴보겠습니다.

1. 문제 정의 단계

문제 정의 단계에서 가장 중요한 부분은 해당 문제가 데이터 기반 머신러닝 모델을 적용해서 풀 수 있는 문제인지를 먼저 고려한 후에 모델 학습에 필요한 적절한 데이터가 수집하고, 임상적으로 유의미한 환자군과 레이블링 방법을 선택하는 것입니다. 이를 보다 세부 단계로 나눠 정의해 보면 다음과 같습니다. 이를 보다 세부 단계로 나눠 정의해 보면 다음과 같습니다.

1) 임상에서 사용할 때의 실현 가능성을 평가: 목표로 하는 결과를 정확히 판독할 수 있는지, 해당 EHR 데이터가 주기적으로 취득이 되는지 등의 문제를 딥러닝 모델로 풀 수 있는지를 판단해야 합니다.

2) 결과 라벨링 정의: 지도 학습(Supervised Learning)을 위해서는 필수적입니다. 이는 같은 질환이라도 다양한 기준이 존재할 수 있기 때문입니다.

3) 데이터셋의 퀄리티 평가: 데이터의 분포가 딥러닝 모델을 학습하기에 적절한지, 생리학적으로 가능한 범위를 이탈하지는 않는지 등을 파악해야 합니다.

4) 포함/불포함의 기준 정의: 실제 임상 환경에서는 다양한 ‘결측치’나 ‘이상치’가 발생하기에 어떠한 기준으로 걸러낼 것인지 정의할 필요가 있습니다.

5) 시간 공식화: 추론을 몇 시간 간격으로 행할 것인지 또는 질환이 몇 시간 안에 발생했는가를 기준으로 할 것인지를 구체적으로 정의해야 합니다.

6) 보조 예측 타깃 검토: 보조 예측 타깃은 모델의 성능을 높일 수 있습니다. 예를 들어 급성 신부전(AKI)를 예측하는 모델을 만든다고 할 때, 관련된 전해질의 수치를 함께 예측할 수 있을 것입니다.

2. 데이터 전처리 단계

데이터 전처리 단계는 수집된 데이터를 모델을 학습하는데 알맞은 형태로 가공하고, 데이터 오류 및 데이터 결측 문제를 해결하여 모델이 잘 학습될 수 있도록 데이터를 준비하는 과정을 의미합니다. 보다 세부적인 단계들은 다음과 같이 구성할 수 있습니다.

7) 데이터 스플릿 생성: 환자 혹은 시간을 기준으로 ▲학습 ▲검증 ▲평가 세 가지로 나눌 수 있습니다.

8) 피처 엔지니어링(Feature Engineering): 임상학적 정보에 기반해 해당 질환을 예측하기 위해서 어떤 정보가 의미가 있는지를 선별해야 합니다.

9) 순차적인 성질을 고려해 환자 데이터 생성: 생성할 때는 데이터를 모델에 몇 시간 단위로 넣을지를 설정해야 합니다. 짧은 시간을 선택한다면 데이터가 존재하지 않는 시간대의 영향이 커지고, 긴 시간을 선택한다면 시간 정보의 손실이 발생한다는 단점이 존재합니다.

10) 타임스탬프 정리: EHR 데이터에서 타임스탬프(Timestamp)는 어떤 진단이 일어난 시간을 기록한 것을 말합니다. 실제 진단이 있지 않았을 때에도 진단 코드를 기록하는 등의 용도로 타임스탬프가 표기되어 있을 가능성이 있으니, 이를 명확히 할 필요가 있다고 말합니다.

11) 만성적인 정보 집계: EHR 데이터와 같이 지속적으로 얻어지고 있는 정보 외에도 과거 겪었던 질환들이 예측에 도움이 될 수 있습니다. 다만 어떠한 정보들을 어느 정도의 기간에서 받아들일 것인지 기준을 정해야 합니다.

12) 입력 데이터의 벡터화: 딥러닝 모델이 받아들이기 쉬운 벡터 형태로 데이터를 변형합니다. 이 과정에서 데이터의 존재 여부를 0 혹은 1로 표기하는 등의 방식으로 결측치를 보충할 수 있습니다.

13) 이상치의 경계 설정: 데이터 입력 오류나 생리학적으로 불가능한 값이 존재할 수 있습니다. 이를 위해 학습 데이터를 기준으로 1%, 99% 백분위 수 바깥 값은 제한합니다.

14) 정규화 및 희소값 인코딩: 모델의 수렴 속도를 위해 입력 값들을 정규화하고, 발생 빈도가 낮은 EHR 데이터는 희소값 인코딩을 통해 효율적으로 형태를 바꾸어 줍니다.

15) 성능 측정법 선정: 분류 문제에서는 area under the precision-recall curve(AUPRC), area under the receiver operating characteristic curve(AUROC)를 많이 사용한다고 합니다.

16) 구간중도절단(Interval Censoring): 구간중도절단이 학습 셋에 속하는지 검증 셋에 속하는지 이진으로 표기를 해줍니다.

3. 모델 구조 선정 단계

모델 구조 선정 단계는 앞단계에서 모델 학습에 필요한 데이터 전처리까지 모두 마쳤다면 실제 학습을 진행할 모델을 디자인하고 최고의 성능을 내는 모델을 학습하기 위한 모델 설정값들을 찾아가는 과정으로 볼 수 있습니다. 다음과 같이 9단계의 세부 단계로 나누어 볼 수 있습니다.

17) 베이스라인 모델 학습: 로지스틱 회귀 분석 혹은 XGBoost와 같은 베이스라인 모델을 학습합니다. 베이스라인을 고를 때에는 관련 문헌을 참고할 필요가 있습니다.

18) 피처 임베딩(Feature Embedding): 입력 데이터를 더 작은 차원으로 임베딩합니다.

19) 여러 딥러닝 모델을 시도: LSTM, GRU, DNC 등 다양한 RNN 모델들을 시험해볼 수 있습니다. 보조 예측 타겟이 있다면 별도의 헤드를 두는 것을 고려해봅니다.

20) 모델 옵티마이저(Optimizer) 설정: 분류 문제라면 cross-entropy 로스 함수, 회귀 문제라면 L1/L2 로스 함수를 사용할 수 있습니다. SGD, Adam, RMSProp과 같은 최적화 알고리즘으로 계산한 로스를 이용해 모델을 업데이트합니다.

21) 하이퍼파라미터(Hyper parameter) 최적화: 도메인 지식과 이전 문헌을 참고해서 하이퍼파라미터를 최적화합니다. 보조 예측 타깃이 있는 경우, 먼저 주요 타깃에 대해 최적화를 한 이후에 보조 예측 타깃까지 포함하여 최적화를 하도록 합니다.

22) 비교 실험(Ablation Study) 진행: 모델에 추가한 요소들이 있을 때와 없을 때 성능에 어떠한 차이가 있는지 비교해봅니다.

23) 피처 돌출성(Feature Saliency) 계산: 다양한 피처가 입력값으로 들어가는데요, 각각의 피처들을 0과 같은 상수로 바꾸어 고정했을 때 성능 변화를 보며 피처들의 영향력을 확인해봅니다.

24) 실패 사례 분석: 설정한 성능 측정법들로 실패 사례를 구분한 후 그 원인과 영향을 분석합니다. 분석할 때는 레이블링이 정확하게 되었는지, 임상 환경에 영향이 있을지 또한 꼼꼼히 살펴보아야 합니다.

25) 최종 모델 구조 선정: 이전 단계들을 바탕으로 최종 모델 구조를 결정합니다.

4. 모델 보정 및 불확실성 추정

모델 보정 및 불확실설 추정 단계는 학습이 마무리된 모델을 실제 의료 현장에서 사용하기에 좀 더 적합한 형태로 예측 결과값이 확률적 의미를 갖게 하는 보정 단계와 모델의 불확실성을 추정해보는 단계를 의미합니다. 이 단계를 통해 학습된 모델이 실제 의료현장에서 사용되는데 좀 더 신뢰성을 갖을 수 있게 됩니다.

26) 캘리브레이션(Calibration): 딥러닝 모델이 Softmax/Sigmoid 출력을 갖는 경우 0에서 1 사이의 값을 가지지만 확률로 해석하기 위해서는 등방성 회귀 모형 등의 추가적인 보정이 필요합니다.

27) 개별 예측의 불확실성을 추정: 하나의 모델에서는 편향이 존재할 수 있으므로 랜덤 시드를 제외하고는 동일한 여러 개의 모델로 앙상블을 구현한 후에 평가합니다.

28) 성능의 불확실성을 추정: AUROC, AUPRC와 같은 평가 지표의 신뢰 구간을 계산합니다.

29) 임상을 고려한 동작 지점(operating point) 설정: 최종 모델의 PR 곡선을 기준으로 여러 개의 동작 지점을 테스트해봅니다.

5. 모델의 일반화 가능성 평가 단계

마지막으로 최종 완성된 모델이 실제 의료 현장에 도입되어 사용될 때 얼마나 안정적이고 새롭게 입력되는 데이터들에 대해서 일관된 성능을 보여줄 수 있는지 평가하는 단계를 수행하게 됩니다.

30) 하위 모집단에서의 모델 성능 분석: 예측하고자 하는 질환과 관련된 하위 모집단을 임상 환경에서 정의하여 성능을 평가합니다.

31) 일일 예상 경고율을 정량화: 참인 경고를 한 비율, 잘못된 경고를 한 비율, 경고를 하지 않은 비율을 검토합니다. 이를 바탕으로 딥러닝 모델로 인해 생길 수 있는 미래의 리소스 부담을 예측할 수 있습니다.

32) 보지 않은 데이터에 대해 시간적인 측면에서 일반화 가능성 평가: 일부 시간대만 이용해 학습했을 때도 동일한 성능이 나오는지 확인합니다.

33)보지 않은 데이터에 대해 지역 적인 측면에서 일반화 가능성 평가: 여러 병원에서 성능이 일정하게 나오는지 확인합니다.


저희 AITRICS는 이번에 소개해드린 논문에서 제안하고 있는 다양한 개발 단계들과 각 단계별로 고려해야하는 요소들을 개발 프로토콜화 하여 연구를 진행하고 있을 뿐만 아니라, 이러한 가이드라인들과 더불어 자사의 노하우를 반영하여 의료 인공지능 모델 개발 과정을 자동화화고 통합 관리할 수 있는 의료인공지능 모델 개발에 특화된 MLOps를 구축하고 있습니다.

이와 관련된 소식들도 조만간 정리하여 쉽고 재밌게 전달드릴 수 있도록 하겠습니다. 이번 저희 논문 소개 글이 의료인공지능 분야에 관심이 있거나, 이 분야에 처음 접하시는 분들의 연구에 조금이라도 도움이 될 수 있기를 바랍니다! 😊

 


Reference
“Use of deep learning to develop continuous-risk models for adverse event prediction from electronic health records”, Nenad Tomašev, et al., Nature Protocols, 2021