Search
🏥

병원 전자 의무 기록 데이터를 활용한 패혈증 환자 사망/생존 예측 분석

프로젝트 요약
기간 : 2023-08-07 ~ 2023-10-02
목표 : 기존에 사용되지 않았던 데이터를 사전학습시켜 효율을 높이고 전이학습을 하여 패혈증 환자의 생존을 예측하는 인공 지능 모델을 만들어 의료 서비스를 실제로 구현.
결과 : 환자의 내일 생존/사망 예측에 대한 전이학습 모델의 예측률이 기존의 사전학습만 했을 시에 비해 7% 상승.
역할 및 기여
데이터 전처리에 주도적으로 참여
트랜스포머 모델의 사전학습 및 전이학습 모델링 참여
python, pandas를 이용한 전처리 전담
발표 자료 구성 및 제작

1. 문제 정의

최근 기술의 발전으로 빅데이터와 인공지능이 급부상하게 되었습니다. 따라서 다양한 분야에서 이 기술들을 접목하고 있고 인공지능이 실생활 전반에 사용되면서 인공지능이 학습하는 데이터 또한 방대해졌습니다. 이러한 바탕을 토대로 의료데이터를 사용하여 의료서비스에도 접목해 보면 좋을 것 같습니다.
현재 마이데이터라는 서비스를 통해 많은 사람들이 금융 분야에서 도움을 받고 있습니다. 개인뿐만 아닌 기업에서도 마이데이터를 통해 많은 성장을 했습니다. 앞으로는 마이데이터가 금융 분야에 한정된 게 아닌 다양한 분야에서 활약하게 될 것이며 의료분야에서도 개인과 의료서비스를 제공하는 제공자도 유용하게 사용될 것이라 예상됩니다. 의료정보를 통합하게 되면서 병원마다 검사를 새로 하는 일도 적어질 것이며 환자의 기저질환이나 특이점 등이 한눈에 파악되기 쉬워질 것이고, 기존에 받았던 의료서비스에 대해서도 기록되어 향후에 받게 되는 치료 방법에서도 환자의 상태에 보다 적합한 치료가 이루어질 수 있을 것으로 예상합니다. 더불어서 환자별로 맞춤형 의료 서비스가 제공되면 기존 병력이나 이상 유무, 가족력 등 개인적인 특징이 있는 부분에 있어서 보다 나은 서비스를 제공될 것으로 예상됩니다.
보건의료 마이데이터의 경제적 파급효과는 2032년까지 9조 7704억으로 예상되며 이에 앞서서 병원 의료 빅데이터를 활용하는 인공지능 모델로 개인화 의료 서비스를 실제로 구현해 보고자 합니다. 근 10년간 패혈증의 발병 요인인 고령인구가 4배, 당뇨 인구가 2배증가 하였고 코로나19로 인하여 많은 사람들의 면역력이 약해지면서 패혈증 환자가 급격히 늘어났기에 패혈증 환자를 위한 데이터 분석과 서비스를 하기로 선정했다.
80gb 정도 되는 방대하고 폭넓은 중환자실 공개데이터를 활용하고 기존에 사용되지 않았던 과거의 데이터에 사전학습을 시켜 효율을 높이고자 합니다. 그리고 전이학습을 하여 패혈증 환자의 생존을 예측하는 모델을 만든 후 이를 통해 서비스를 구현하고자 합니다.

2. 가설 설정

1.
통계청에서 나온 결과에 근거하여 전체 환자의 데이터 중에서도 패혈증 환자의 비율은 높을 것이다.
2.
사전학습(Pre-training) - 전이학습(Transfer learning)한 transformer 모델은 사전학습만 한 모델보다 생존/사망을 예측하는 정확도 값이 높을것이다.
3.
트랜스포머모델은 Self-attention mechanism을 사용해 시퀀스 내의 각 요소 간의 관계를 파악하고 기존의 RNN이나 CNN과 달리 시퀀스 내에 멀리 떨어진 요소들 간의 관계도 잘 파악합니다. 이는 우리가 전처리할 시간에 따른 데이터 포인트의 시퀀스로 이루어진 시계열 데이터를 효과적으로 학습할 수 있을 것이라 생각한다.

3. 데이터 수집 및 분석 & 모델링 & 서비스 구현

데이터 : 중환자실에 머물렀던 환자들의 비식별 보건의료 데이터(MIMIC-III)
일시 : 2001년부터 2012년까지
수집 방법 : CITI 프로그램에서 ‘Data or Specimens Only Research’ 과정을 이수, PhysioNet에서 접근 권한을 요청
총 데이터 수 : 61,532개 데이터
분석 전처리 및 모델링 방법 : python, pandas를 이용하여 패혈증 환자의 데이터를 살펴본 후 학습 시 검사데이터, 처방데이터, 시술에 대한 데이터 및 환자의 퇴원/사망일을 기준으로 시계열 데이터를 전처리하고 데이터프레임 생성. 사전학습 모델을 만들기 위해 환자의 이전 10일의 기록을 통해 다음 10일의 기록을 예측하는 모델을 만든다. 예측 단계인 전이 학습 단계에서는 환자의 이전 10일간의 기록을 바탕으로 D-Day에 환자가 생존할지 사망할지 예측한다. 학습을 완료하면 이제 모델은 환자의 이전 10일 데이터를 바탕으로 환자의 생사 예측 가능. 이와 같은 사전학습-전이학습으로 이전의 데이터로 이후의 데이터가 어떻게 생겼을지를 예측하는 사전학습(Pre-training) 모델을 만들고, 실제로 라벨을 출력해야 하는 전이 학습에서 이 사전학습 모델을 활용한다.
서비스 구현 : 마이데이터 활용에 동의한 특정 범주 환자들의 데이터를 추가로 학습시켜 맞춤형 모델을 만드는 과정을 구상했다. 이를 통해 특정 병원이나 특정 질병 합병증을 가진 환자들의 데이터로 개인화된 의료 서비스를 제공할 수 있습니다. FastAPI와 HTML을 사용한 웹 애플리케이션을 구현했습니다. 기본적으로 입력해야 할 데이터는 환자 1명의 데이터와, 예측 받을 날짜 2개이다. 그리고 추가 학습을 원한다면 입력할 환자의 data와 생/사 여부 label을 새로운 모델 칸에 각각 업로드 한다. 업로드 하면 결과 데이터와 날짜 그래프가 나타나게 되며 결과 데이터에서는 날짜와 날짜에 따른 위험도, 그리고 예측된 생/사가 표시되고, 각 날짜별 위험도를 시각화하여 그래프로 그려준다.

4. 결과

1.
전체 환자 중에 패혈증 환자의 비율을 시각화한 결과 12%가 패혈증 환자인걸로 나타난다. 상당히 높은 결과이다.
2.
사전학습(Pre-training) - 전이학습(Transfer learning)한 transformer 모델의 ROC-AUC는 93.47%이고 사전학습을 하지 않은 기존의 트랜스포머 모델은 88%의 정확도를 보여주며 예상했던 데로 기존의 모델보다 월등히 높은 정확도를 보여준다.
3.
기존의 트랜스포머 모델만 학습하고 예측했을 때의 정확도가 높은 것으로 보아 적합한 모델을 선정한 것으로 보인다.
Loading PDF…
Project_Analysis-of-the-death-survival-prediction-of-sepsis-patients-using-hospital-data
taeyoungyoun

5. 기대효과

1.
마이데이터로 인한 이러한 의료서비스가 실제로 사용된다면 병원에서는 환자의 패혈증 위험도에 따라 즉각적 조치가 가능하고 환자의 생존율을 고려하여 치료 방향을 조절할 수 있을 것으로 예상된다.
2.
환자가 자신의 의료 데이터에 더 쉽게 접근하고 이해할 수 있게 되면, 자신의 건강 관리에 더 적극적으로 참여하게 되며 이는 환자의 건강 결과에 긍정적인 영향을 미칠 수 있습니다.
3.
개인이 특이 패혈증 환자의 경우새롭게 모델을 학습시켜 맞춤형 서비스를 받을 수 있을 것이다.
4.
과정에서 학습해 두었던 사전학습 - 전이학습 모델을 활용한다면 패혈증뿐만 아니라 다른 질병에서도 유의미한 결과를 낼 것으로 예상된다.

6. 회고(KPT)

Keep

데이터를 전처리하고 모델링 하는 과정에서 의견을 좁히고 문제를 해결해나갔습니다.
패혈증 환자의 사망에 영향을 줄지를 전처리하는 과정에서 팀원 간에 의견 충돌이 있었습니다. 각 질병을 코드로 바꿔놓은 질병코드(ICD_CODE)라는 특성이 있었습니다. 패혈증 관련 질병코드는 매우 많았고 또한 패혈증도 여러 가지 종류가 있었습니다. 저희는 어떤 코드를 전처리해야 하는지 서로 의견이 갈렸습니다. 저는 먼저 패혈증 관련 데이터를 가장 많은 순으로 정렬하여 어떤 코드가 가장 많은 데이터를 가졌는지 확인해 봤고 상위 6개의 질병코드에 대해 자세히 알기 위해 인터넷에 검색하여 알아보았습니다. 그중에 3개의 코드가 가장 많이 발생하는 패혈증 유형이라고 생각했고 데이터 개수도 적절했기에 마감기한을 잘 지킬수 있었습니다.
데이터 전처리, 모델링, 발표 자료 준비 과정에서 모두 제 역할을 했습니다.
어떠한 팀원도 포기하지 않고 열심히 각자가 맡은 일에 적극적으로 참여했습니다.

Problem

데이터 전처리 문제에서 갈등이 있었습니다. 모델을 학습시키기 이전에 데이터를 전처리하는 과정에서 서로의 의견이 달라 의견을 조율하는 과정에서 문제가 있었습니다. 팀원 모두 팀 프로젝트를 해본 경험이 많지 않았기 때문에 서로 다른 관점을 통합하고 프로젝트를 진행하는데 쉽지 않았습니다. 아래와 같은 문제들이 있었습니다.
여러 가지 패혈증 가운데 어떤 환자들을 분석할 것이고 학습시킬 것인가?
어느 정도의 데이터를 모델 학습에 사용하는 게 좋을 것인가?
FastAPI 와 html을 활용해서 웹 애플리케이션을 구현하는데 힘들었습니다. 데이터 청년 캠퍼스라는 데이터 전문인력 양성 프로그램에서 본선에 진출하게 되어 개발까지 진행했습니다. 웹 구현을 해본 적도 없었고 시간도 많지 않았기 때문에 기술적 한계와 높은 기대치로 인해 완성도가 만족스럽지 않았습니다. 진행 속도도 매우 오래 걸렸고 부족함을 많이 느꼈습니다. 아래와 같은 문제들이 있었습니다.
데이터 분석 모델을 웹사이트에서 통합하는 과정에서 어려움을 겪었다.
API 설계와 구현 과정에서 데이터 전송, 요청 처리와 같은 코드 오류 문제가 있었다.
데이터를 병합하는 과정에서 데이터 손실이 발생했습니다. 학교의 서버 컴퓨터를 이용해서 개발을 했지만 데이터의 양이 방대해 램이 부족하다는 오류가 있었습니다. 사전학습 모델 생성 과정 중 데이터를 병합할 때 데이터를 이상 유/무 bool 형태로 축소했습니다. 최대한 데이터를 활용하는 방안을 고안했으나 데이터의 손실이 우려되었습니다.

Try

팀원간의 의견차이와 갈등을 해결하기위해 정기적인 미팅을 했으면 좋겠습니다.
저희 팀은 프로젝트 기간동안 오프라인과 온라인을 병행하면서 각자의 역할을 수행했습니다. 하지만 시간이 맞지 않는 팀원들도 있었기에 모두 모이는 경우는 많지 않았습니다. 그럴 때는 온라인 화상회의를 통해 서로의 의견을 공유했습니다. 하지만 효과적인 의사소통은 되지 않았고 서로 간에 의견공유도 많지 않았기에 아쉬웠습니다. 앞으로 팀 프로젝트를 할 경우에는 되도록 만나서 즉각적으로 피드백도 주고받는 것이 좋겠습니다.
웹 페이지를 구현하는 웹 프레임워크인 FastAPI를 공부하자.
향후 회사에 입사하거나 프로젝트를 할경우를 대비해서 프로젝트 구성, 테스트 코드, 리팩터링, 디버깅과 같은 웹 개발에 필요한 필수 지식을 공부하고 웹서버를 구축할 수 있도록 공부하자.
일반병동에서의 패혈증 환자에 대한 모델도 개발해 보자.
중환자실 데이터를 기반으로 학습하여 일반 병동에서의 패혈증 환자의 예후에 대해서는 제한적일 수 있습니다. 일반 병동의 데이터를 기반으로 모델을 개선한다면 일반 병동이나 더 나아가서 집 안에서 혈액검사만으로 패혈증의 위험을 알 수 있을 것입니다.
트랜스포머 모델을 이용한 사전학습 및 전이학습과 단일 트랜스포머 모델 학습의 정확도 비교에 대한 논문을 작성해도 좋을 것같다.
레이어 층을 다르게 하여 사전학습한 트랜스포머 모델과 사전학습 안한 모델의 Precision, Recall, F1-score, Accuracy 와같은 정확도를 비교하여 논문을 쓰면 트랜스포머 모델의 최적 활용 방안을 제공할수있다고 생각이 든다.