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

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


지난 글(바로가기)에서는 EHR 데이터를 정제하는 방법에 대해 설명했습니다. 이번 글은 순차 패턴 마이닝을 간략히 설명하고 분석 결과를 소개합니다. 

순차 패턴 마이닝이란?

순차 패턴 마이닝(sequential pattern mining)은 대량의 데이터에 숨겨진 “순차적 패턴”을 찾는 분석방법입니다. 연속하여 일어나는 패턴을 찾는데 유용한 방법으로, 커머스 분야에서 고객이 어떤 순서로 제품을 구매하는지 분석하는데 자주 활용합니다. 

예를 들어 대형 슈퍼마켓에서 고객들의 구매 데이터를 가지고 있다고 가정해봅시다. 한 고객이 첫 날 맥주와 주스를, 다음날에는 기저귀와 맥주를, 그 다음날에는 우유와 과자를 구매했습니다. 한 번에 구매한 제품들을 하나의 집합(itemset)으로, 각 집합의 구매한 시간 순서를 고려하여 시퀀스로 나타낼 수  있습니다. 즉, 그 고객의 구매 내역은 ‘({맥주, 주스}, {기저귀, 맥주}, {우유, 과자})’ 라고 표현할 수 있고, 이를 시퀀스(sequence)라고 부릅니다. 이와 마찬가지로, 다른 고객들의 시퀀스를 정의할 수 있습니다. 순차 패턴 마이닝은 이러한 고객들의 시퀀스 내에서 공통으로 나타나는 시퀀스를 찾는 기법 입니다. 

고객 4명의 구매 내역을 예로 순차 패턴 마이닝을 해보겠습니다.

순차 패턴 마이닝에서는 패턴의 빈번함을 정의하기 위해 지지도(support)라는 척도를 사용하는데, 지지도란 전체 시퀀스 중 특정 패턴을 포함하는 비율입니다. 

위의 예제에서는 ‘(맥주, 기저귀, 우유)’의 패턴이 1번 고객과 2번 고객에서 나타났습니다. 4명 중 2명의 고객에게서 나타난 패턴이므로 지지도는 50% 입니다. 또한 ‘(기저귀, 우유)’의 패턴은 1번, 2번, 3번 고객에게서 나타나는 공통적인 패턴이므로 지지도는 75% 입니다.

사용자가 지지도 값을 정하면, 이 값도 큰 지지도를 가진 패턴을 순차 패턴 알고리즘이 찾습니다. 이렇게 큰 지지도 값을 가진 패턴을 빈번한 패턴(frequent pattern)이라고 합니다. 

순차 패턴 마이닝에서 빈번한 패턴을 찾아내기 위해서는 주어진 시퀀스 내에서 엄청난 양의 서브시퀀스들의 조합을 생성해야합니다. 따라서 서브시퀀스 조합의 경우의 수가 많은 경우 계산 복잡도가 커져 마이닝에 어려움이 발생합니다.

이러한 문제를 해결하기 위해 CloFAST 알고리즘을 사용하여 심혈관 질환자의 치료 경로 패턴을 분석하였습니다. CloFAST(Closed FAST sequence mining algorithm based on sparse id-lists) 알고리즘은 서브시퀀스 중 같은 지지도를 가지고 있으며 조합이 중첩될 때, 중첩된 조합을 모두 포함하고 있는 패턴(super pattern)만을 서브시퀀스로 추출하여 마이닝에 사용합니다.

예를 들어 <abc>: 20, <abcd>: 20, <abcde>: 15 와 같이 “<패턴>: 지지도”가 있을 때, <abcd>와 <abc>는 <abc>라는 패턴이 중복되며, 지지도가 서로 같습니다. 이 때 <abcd>는 <abc>의 super pattern입니다. CloFAST에서는 <abcd>와 <abcde> 패턴을 마이닝하게 되며, 이와 같은 패턴을 closed pattern이라고 합니다.

 CloFAST는 Closed pattern을 마이닝 함으로써 중복된 패턴의 수가 줄어들어 효율성이 향상될 뿐만 아니라 non-closed sequential pattern 마이닝 알고리즘을 사용하여 추출한 패턴과 동일한 파워를 유지 합니다(Fumarola, et al.). CloFAST 알고리즘에 대한 자세한 설명은 논문(바로가기)을 참고해주세요.

순차 패턴 마이닝 결과 

이전 글에서 설명한 6개의 카테고리 중 4개의 카테고리를 포함하는 것부터 시작하여 점진적으로 데이터에 포함되는 카테고리의 개수를 늘리면서 실험하였습니다. 이는 서브 시퀀스의 수에 영향을 받는 순차 패턴 마이닝의 특성상 적절한 카테고리의 개수를 정하는 것이 필요했기 때문입니다. 몇 번의 실험을 거쳐 마이닝에 걸린 시간과 메모리 등을 고려하였고, 카테고리 6개 전부를 포함하는 것으로 최종적으로 결정하였습니다.

아래의 패턴은 6개의 카테고리를 전부 포함하고, 최소 지지도는 5%로 설정하였을 때 나타난 분석 결과의 사례입니다.

  • 패턴 1 : 5%(18363명의 환자 중 979명)의 환자
    • 첫 번째 사례는 ‘응급(emergency)’로 내원하였으며, ‘허혈성 심장 질환(Ischemic heart disease)’을 진단 받은 환자가 ‘사망(died)’으로 이어지는 패턴이며, 전체 환자 중 약 5% 정도로 확인 됩니다.
  • 패턴 2 : 9%(18363명의 환자 중 1659명)의 환자
    • 두 번째 사례는 ‘응급(emergency)’으로 내원, ‘CMED(Cardiac Medical – for non-surgical cardiac related admissions)’ 서비스를 받았으며, ‘ECG(심전도 검사)’ 검사 후에 ‘CSURG(Cardiac Surgery – for surgical cardiac admissions)’ 서비스와 ‘심장동맥우회로조성술(Coronary artery bypass surgery, CABG)’ 로 이어지는 패턴이며, 전체 환자 중 약 10% 정도로 확인 됩니다.

EHR에 순차 패턴 마이닝을 적용할때 기대 효과

순차 패턴 마이닝을 적용한 결과 급성 심장 질환 환자에 발생하는 이벤트의 빈번한 패턴을 방대한 양의 데이터에서 찾아 낼 수 있었습니다.

지금까지 진료 현장에서 의사는 환자가 수술이 필요한 급성기에 해당하는지 판단하기 위해 다양한 데이터를 확인하고, 축적된 경험과 지식에 의해 판단을 내렸습니다. 이 과정에는 많은 시간과 노력이 필요했습니다. 

이번에 소개한 순차 패턴 마이닝과 같은 데이터 분석이, 환자의 데이터를 일일이 확인해야 하는 의사의 수고를 덜고 진료와 판단에 집중할 수 있도록 도움을 줄 것으로 기대됩니다. 데이터 분석을 활용하면 진료 과정에서 중요도가 높은 이벤트를 겪은 환자군을 추려낼 수 있습니다. 위의 패턴 1, 2와 같이 빈발 패턴에 해당하는 환자군에 더 집중해 더 나은 의료서비스를 제공하는데 도움이 될 것입니다. 

라인웍스는 의료진이 더 나은 의료서비스를 환자에게 제공할 수 있도록 의료진을 돕는 데이터 분석을 계속 개발할 계획입니다. 다양하고 빠르게 분석을 시도하고, 반복적인 검증을 통해 의료 현장에서 사용할 수 있는 실질적이고 효과적인 의료 데이터 분석 서비스, 의료 인공지능을 개발하는데 최선을 다하겠습니다.


용어 정리

  • emergency: 응급 입원
  • CSRU: Cardiac surgery recovery unit
  • CSURG: Cardiac Surgery – for surgical cardiac admissions
  • CMED: Cardiac Medical – for non-surgical cardiac related admissions
  • CABG:Coronary Artery Bypass Surgery
  • ECHO: 심장초음파 검사
  • ECG: 심전도 검사
  • Aspirin: 아스피린
  • NSAIDs: 비스테로이드 소염진통제
  • P2Y12 inhibitor: 항혈소판제제
  • Statin: 콜레스테롤 저하제
  • Immunosuppressant: 면역억제제
  • 심혈관 이벤트: 심혈관질환자에게 발생한 의료 이벤트(statin 처방, 수술 등)
  • 이벤트 카테고리: 의료 이벤트의 상위개념(진단, 검사, 투약 등)
  • 치료경로: 시간 순서로 나열된 의료 이벤트 시퀀스
  • 서브 시퀀스: 치료경로의 부분 집합

참고문헌


No comments yet.

Leave a comment

Your email address will not be published.