경제적인 유전체 서열 분석과 AI 지원 의료 이미지 영상이 등장하면서 정밀 의료에 대한 관심이 상당히 늘어났습니다. 정밀 의료에서는 데이터와 AI를 활용하여 최적의 치료 방법을 찾아내는 것을 목표로 합니다. 정밀 의료는 희귀 질병 및 암을 진단받은 환자의 치료 효과를 개선하지만, 환자가 아픈 후에야 적용이 가 능한 성격의 방법입니다.
의료 서비스 지출과 효과의 경우, 당뇨, 심장병, 약물 중독 장애 등의 만성 질환을 예방함으로써 치료 비용을 낮추고 삶의 질을 개선할 수 있는 매우 큰 기회가 있습니다. 미국에서 사망자 10명 중 7명, 의료 서비스 지출의 85%가 만성 질환에서 발생하고, 유럽과 동남아시아에서도 유사한 흐름이 발견됩니다. 전염되지 않는 질병은 일반적으로 환자를 교육하고 만성 질환을 일으키는 근본 문제를 해결하면 예방할 수 있습니다. 이런 문제에는 기저 생물학적 위험 요소(예: 신경학적 질병을 일으키는 알려진 유전적 위험), 사회 경제적 요소(예: 환경 오염, 건강한 식품/예방적 관리에 대한 접근성 부족), 행동 위험(예: 흡연, 음주, 정적인 라이프스타일) 등이 포함됩니다.
정밀 예방은 데이터를 사용하여 질병이 발병할 위험이 큰 환자 집단을 찾아내서, 발병 위험을 낮추는 개입을 제공하는 데 초점을 맞춥니다. 개입에는 위험군 환자를 원격으로 모니터링하고 라이프스타일 및 치료 권고 사항을 제공하는 디지털 앱을 활용하거나, 질병 상태를 모니터링하거나, 보충적 치료를 제공하는 등이 포함됩니다. 그러나 이런 개입을 적용하려면 먼저 위험한 환자를 찾아야 합니다.
위험한 환자를 파악하는 가장 강력한 도구 중 하나는 실제 데이터(RWD)입니다. RWD란 입원 시설, 임상 기관, 약국, 의료 기관으로 구성된 의료 시스템 에코시스템에서 생성된 데이터(예: 전자 의료 기록(EMR), 의료 기록(EHR))를 총칭하는 용어이며, 요즈음 들어서는 유전체, 소셜 미디어, 웨어러블 등의 다른 소스에서 수집된 데이터까지 포함되고 있습니다. 지난 블로그에서는 EHR 데이터로부터 임상 데이터 레이크를 구축하는 방법을 보여드렸습니다. 이 블로그에서는 임상 데이터 레이크를 더욱 발전시켜 Databricks Unified Data Analytics Platform으로 환자의 치료 여정을 추적하고 머신 러닝 모델을 만드는 방법을 설명합니다. 환자 진료 방문 기록과 인구 통계학적 정보를 입력하고 이 모델을 사용하면 특정 기간에 환자가 특정 질환을 앓을 위험을 평가할 수 있습니다. 이 예시에서는 약물 과용에 대해 살펴봅니다. 약물 과용이 중요한 주제인 이유는 약물 사용 장애가 있는 환자는 다양한 건강상의 문제가 발생하기 때문입니다. MLflow를 사용하여 모델을 추적하면 시간에 따라 모델이 변화하는 양상을 쉽게 추적할 수 있어, 환자 치료에 모델을 배포하는 과정을 보다 신뢰할 수 있습니다.
특정 시점의 위험을 예측하는 모델을 훈련하려면 환자와 관련이 있는 인구 통계학적 정보(예: 진료 시점의 나이, 인종)가 담긴 데이터 세트와 환자의 진단 기록에 대한 시계열 데이터가 필요합니다. 이 데이터는 환자가 향후 어떤 질병을 진단받을 가능성에 영향을 미치는 진단 및 인구 통계학적 위험을 알아보기 위한 모델을 훈련하는 데 사용할 수 있습니다.
그림 1: 데이터 스키마와 EHR에서 추출한 테이블 간의 관 계
이 모델을 훈련할 때 환자의 진료 기록과 인구 통계학적 정보를 활용할 수 있습니다. 이는 전자 의료 기록(EHR)의 형태로 제공됩니다. 그림 1은 워크플로에서 사용할 테이블을 나타냅니다. 이 테이블은 이전의 블로그에서 다룬 노트북을 사용하여 준비했습니다. 진료 방문, 조직 및 환자 데이터(PII 정보는 난수화)를 Delta Lake에서 로드한 후, 환자의 인구 통계학적 정보와 함께 모든 환자 진료 방문 데이터 프레임을 생성합니다.
표적 질환에 따라 훈련 데이터에 포함할 환자 세트도 선택합니다. 즉, 사례, 과거 진료 방문 시 1회 이상 해당 질병을 진단받은 환자, 동일한 숫자의 대조군, 발병 이력이 없는 환자를 포함합니다.
이제 연구에 포함할 환자로만 진료 방문 세트를 제한합니다.
필요한 기록을 가져왔으므로 특징점을 추가해야 합니다. 이 예측 작업에서는 인구 통계학적 정보 외에도 해당 질병으로 진단을 받은 총 횟수 또는 알려진 동반 질환(동반 이환), 이전 진료 방문 횟수를 특정 진료 방문에 대한 과거 컨텍스트로 선택합니다.
대부분 질병의 경우 동반 질환에 대한 여러 가지 문헌이 있지만, 실제 데이터 세트에서의 데이터를 활용하여 표적 질환과 관련된 동반 질환을 알아낼 수 있습니다.
우리 코드에서는 노트북 위젯을 사용하여 포함할 동반 질환의 개수와 진료 전체에서 살펴볼 기간(일)을 지정합니다. 이 매개변수는 MLflow의 추적 API를 사용하여 로깅합니다.
이제 각 진료 방문에 동반 질환 특징점을 추가해야 합니다. 각 동반 질환에 대해 과거에 해당 질환이 관찰된 횟수를 나타내는 열을 추가합니다.
이런 특징점은
2단계에 걸쳐 추가합니다. 먼저, 동반 질환 지표 함수를 추가하는 함수를 정의합니다( xi,c).