순차 패턴 마이닝을 활용한 EHR 분석 – 1편

라인웍스는  Electronic Health Record (전자의무기록, 이하 EHR) 데이터를 이용하여 다양한 데이터 분석, 머신러닝 프로젝트를 진행하고 있습니다. 이번 글에서는 순차 패턴 마이닝(Sequential Pattern Mining)을 EHR에 적용하여 분석한 사례를 소개합니다.


“순차 패턴 마이닝” 분석은 다양한 산업 분야에서 활용하고 있으며 특히 온라인 커머스 분야가 적극적으로 활용하고 있습니다. 고객이 상품을 구매한 순서를 파악할 수 있다면, 다음에 구매할 상품을 예측해볼 수 있습니다. 예측한 상품의 광고나 쿠폰을 제공하여 고객이 추천한 상품을 구매하게 되면 이는 매출증가로 이어질 것입니다. 대량의 구매 기록에서 이런 정보를 찾아내는 방법이 순차 패턴 마이닝입니다. 

라인웍스는 순차 패턴 마이닝을 의료데이터 분석에 적용해 심혈관 질환 환자의 질병 진행 순서와 주요 치료 경로를 분석하는 프로젝트를 진행했습니다. 

이 적용 사례를 앞으로 두 편에 걸쳐 소개하고자 합니다. 1편에서는 순차 패턴 마이닝 적용을 위한 데이터 정제 방법과 구축한 예시 DB를 설명합니다. 2편은 순차 패턴 마이닝을 적용한 분석 결과를 소개합니다. 

이번 글에서는 순차 패턴 마이닝을 위한 준비 과정인 데이터 정제에 대해 소개합니다.

활용 데이터 소개

이번 사례에서는 미국 중환자실 오픈 데이터베이스인 MIMIC-III를 활용했습니다. MIMIC-III는 46,520명의 실제 환자들이 중환자실에 머물렀을 때 발생한 데이터를 익명화하여 만들어진 연구용 데이터셋입니다. 이 데이터셋에서 심혈관 질환 환자를 분석 대상으로 정의해 환자들의 주요 치료 경로를 발견하기 위한 연구를 진행했습니다.

순차 패턴 마이닝을 위한 준비 – 데이터 정제

의료데이터 분석에 순차 패턴 마이닝을 적용하려면 데이터 정제가 필요합니다. 의료데이터는 상업적으로 수집된 데이터와 달리 환자 진료 과정에서 생성된 데이터입니다. 순차 패턴 마이닝을 적용하기 위해서는 각종 데이터 형식 전체를 아우르는 식별값이 필요한데, 의료 데이터는 복잡한 진료 환경에서 다양한 형식으로 생성되므로 이런 식별값이 없습니다. 이런 이유로 순차 패턴 마이닝 적용 전 데이터를 정제하는 과정을 거쳤습니다.

심혈관 이벤트 정의를 통한 Metadata 작성

먼저 입원 기간 동안에 심혈관 환자에게 발생할 수 있는 특정 사건들을 “심혈관 이벤트(이하 이벤트)”라고 정의했습니다. 각 이벤트는 그 종류에 따라 표 1과 같이 6개의 카테고리로 분류했습니다.

표 1. 고유한 이벤트의 카테고리 별 정보

분류한 카테고리 정보를 기반으로 <메타 데이터(Metadata) 테이블>을 작성합니다. 이 메타 데이터는 <이벤트 순차 테이블>과 연결해 사용하게 됩니다. 

<메타 데이터 테이블>은 아래와 같은 컬럼으로 구성합니다.

  • 이벤트ID
  • 카테고리
  • 이벤트 코드
  • 이벤트 이름
  • 단위

<메타 데이터 테이블>을 작성하면서, 기존 데이터에 코드가 존재함에도 불구하고 이벤트ID를 따로 구분해 생성했습니다. EHR 데이터에는 고유 분류체계가 있는 데이터(ICD-9 질병 코드, LOINC 진단검사 코드 등)와 분류체계가 없는 데이터(admit, icu 등)이 혼재되어 있습니다. 순차 패턴 분석을 위해서 데이터의 분류체계 유무와 상관없이 전체를 아우를 수 있는 식별값을 부여할 필요가 있었습니다.

따라서 새로 부여한 이벤트ID는 심혈관 이벤트 모두를 식별하기 위해 라인웍스가 부여한 값이며, 이벤트 코드는 각 이벤트가 원래 가지고 있던 코드 정보를 담았습니다. 

이벤트 순차 테이블 생성

이어서 그림 1과 같이 정제되지 않은 기존 이벤트 테이블에서 데이터를 가져와 새로운 형식으로 맞춰 <이벤트 순차 테이블>을 생성합니다.

그림 1. 이벤트 순차 테이블 생성 개념

<이벤트 순차 테이블>은 아래와 같은 컬럼으로 구성합니다.

  • 환자ID (subject_id)
  • 이벤트 타임스탬프 (ts)
  • 이벤트ID (event_id)
  • 이벤트 값 (event_value)

컬럼의 이벤트 ID는 <메타 데이터 테이블>을 참조합니다.

예시를 통해 본 이벤트 순차 테이블 생성 결과

앞서 생성한 <이벤트 순차 테이블>을 환자ID 4326의 예를 통해 살펴보겠습니다. 

환자 4326은 아래와 같은 정보를 가지고 있습니다. 

  • emergency로 들어와서 16일간 입원
  • 입원 시점에 허혈성 심장 질환(Ischemic heart disease)를 진단받음
  • 심장 수술 ICU 서비스 인 Cardiac Surgery – for surgical cardiac admissions(이하 ‘CSURG’)를 받음

이 정보를 토대로 표 2와 같은 <이벤트 순차 테이블>을 생성했습니다.

표 2. 환자 4326의 이벤트 순차 테이블 예시

이벤트 값(event value) 컬럼은 각 이벤트에서 발생하는 값을 의미합니다.. 

이 예시에서는 ‘emergency’는 입원일수, ‘ischemic heart disease’는 진단 여부, ‘CSURG’는 서비스 제공 여부를 뜻합니다.

EHR에 순차 패턴 마이닝 적용을 위한 준비 완료

<메타 데이터 테이블>, <이벤트 순차 테이블>을 만들어 데이터 정제를 마쳤습니다. 이제 EHR에 순차 패턴 마이닝을 적용해볼 준비가 됐습니다. 다음 글(바로가기)에서 순차 패턴 마이닝을 적용해 심혈관 환자 데이터를 분석한 결과를 소개하겠습니다.


용어 정리

  • 이벤트 데이터베이스: 환자의 모든 의료 이벤트가 저장되어 있는 데이터베이스
  • 심혈관 이벤트: 심혈관질환자에게 발생한 의료 이벤트(statin 처방, 수술 등)
  • 이벤트 카테고리: 의료 이벤트의 상위개념(진단, 검사, 투약 등)
  • 순차 데이터: 순서가 있는 데이터 요소의 집합

참고 문헌


No comments yet.

Leave a comment

Your email address will not be published.