💻 본업(컴공생) 이야기/의료 데이터 공부 이야기

[의료 데이터 🩺] 4. Risk Stratification (위험 계층화), Part 1 (1)

st오리🐥 2025. 2. 3. 17:48
728x90
반응형
SMALL

의료데이터 공부하기 4강_ 위험 계층화
https://youtu.be/_shuV1tJbTU?si=BR6NArVryThEgikM

 
 
'위험 계층화' 는 환자 집단을 여러 범주로 나누는 방법이다.
ex) 고위험군, 저위험군, 중간위험군
 
'위험 계층화'는 '진단'과 다르다
 
진단 -> 오진(Misdiagnosis)이 발생하면 환자가 필요하지 않은 치료를 받거나, 적절한 치료를 제때 받지 못할 수 있다.
위험계증화 -> 특정 범주(고위험, 저위험 등)에 환자를 분류하는 것이 목표이며, 완벽한 정확도가 요구되는 것은 아니다.
 
이러한 차이점 때문에,
 
위험 계층화에서는 양성 예측도(Positive Predictive Value, PPV) 같은 지표를 중시한다.
즉, "우리가 고위험군이라고 예측한 환자들실제로 고위험군에 해당하는 비율이 얼마나 되는가?"가 중요한 평가 요소가 된다.
 


위험 계층화 사례

  1. 신생아의 심각한 질병 위험 예측
    • 조산아(premature infant)의 생존율이 과거에 비해 크게 향상되었음.
    • 위험 계층화를 통해 신생아의 건강 상태를 평가하고 적절한 치료를 제공할 수 있음.
    • 예: Apgar Score (신생아의 건강 상태를 평가하는 점수)
  2. 응급실 환자의 심장질환 위험 예측
    • 응급실(ER)에서 심장 관련 질환으로 방문한 환자를 즉시 입원시켜야 할지, 아니면 퇴원 후 관리할 수 있을지 결정하는 문제.
    • 이를 위해 머신러닝을 활용하여 위험을 예측하고, 불필요한 입원을 줄여 의료 비용을 절감할 수 있음.
    • 예: 1984년 연구에서 **로지스틱 회귀(Logistic Regression)**를 이용한 위험 예측 모델 사용
  3. 병원 재입원 위험 예측
    • 미국 의료 시스템에서는 30일 이내 재입원율이 높을 경우 병원이 정부로부터 패널티를 받음.
    • 따라서, 위험 계층화를 통해 어떤 환자가 재입원할 가능성이 높은지 예측하고, 퇴원 후 적절한 조치를 취할 수 있도록 함.
    • 예: 간호사 또는 사회복지사가 퇴원 환자에게 후속 조치를 제공
 

 


전통적인 접근 방식 vs 머신러닝 기반 접근 방식

전통적인 위험 계층화

  • 수작업으로 계산하는 점수 기반 시스템(Scoring System) 사용
  • 예: Apgar Score, FINDRISC (핀란드 당뇨병 위험 점수)
  • 단점: 계산이 번거롭고, 사용 빈도가 낮음

머신러닝 기반 위험 계층화

  • 더 많은 데이터와 변수를 활용 가능
  • 의료 워크플로우에 자동으로 통합 가능
  • 예측 정확도가 더 높을 가능성 있음
  • 빠르게 새로운 모델을 개발하고 배포 가능

===> But new dangers introduced with ML approach 
 


!! 제2형 당뇨병의 조기 예측(Early Detection of Type 2 Diabetes) !!
 
미국에서는 25% 이상의 당뇨병 환자가 진단되지 않은 상태이며, 이는 조기 개입의 기회를 놓치게 만든다.
 
기존 접근법

  • 기존의 접근 방식은 FINDRISC 같은 점수 기반 시스템을 이용했다.
  • 그러나 이러한 시스템은 자발적으로 설문을 작성해야 하므로 사용 빈도가 낮고, 자동화가 어렵다는 문제가 있다.

머신러닝 기반 접근법

  • 머신러닝을 활용하면, 이미 존재하는 의료 데이터(예: 건강 보험 청구 데이터)를 기반으로 자동으로 위험 계층화를 수행할 수 있다.
  • 즉, 환자가 별도로 설문을 작성할 필요 없이 건강 보험사의 데이터만으로도 고위험군을 식별할 수 있다.

 
=> 우리가 가지고 있는 데이터들에, 머신러닝을 통하여 우리가 가지고 있지 않는 대체 변수를 찾아 당뇨병 위험 예측을 하도록 할 수 있음 !!
 


환자의 건강 데이터를 구성하는 다양한 요소와 그 데이터가 어떻게 수집되는지 설명하는 사진

 
 
1) 적격성 기록 (Eligibility Records, 빨간색 화살표)

  • 환자가 건강 보험에 가입한 시기를 나타냅니다.
  • 특정 달에 데이터가 없는 경우, 이는 환자가 아무 활동도 하지 않았기 때문이 아니라 보험 가입 상태가 아니었기 때문일 수 있습니다.
  • 주요 정보:
    • 회원 ID
    • 나이/성별
    • 가입자 ID
    • 회사 코드

2) 의료 청구 기록 (Medical Claims, 초록색 화살표)

  • 환자의 진단 및 치료 내역을 나타냅니다.
  • 주요 정보:
    • ICD9 진단 코드
    • CPT 코드 (치료 또는 절차 코드)
    • 전문 분야 (예: 심장학, 일반 진료 등)
    • 서비스 제공 위치
    • 서비스 날짜

3) 약물 기록 (Medications, 주황색 화살표)

  • 환자에게 처방된 약물에 대한 정보입니다.
  • 주요 정보:
    • NDC 코드 (National Drug Code, 약물 고유 코드)
    • 약물 제공 일수
    • 처방 약물의 양
    • 서비스 제공자 ID
    • 처방 날짜

4) 검사실 테스트 (Lab Tests, 파란색 화살표)

  • 환자가 받은 실험실 테스트에 대한 정보입니다.
  • 과거에는 보험 회사가 어떤 테스트가 수행되었는지만 알았지만, 점점 더 많은 보험 회사가 검사 결과 데이터에도 접근할 수 있게 되었습니다.
  • 주요 정보:
    • LOINC 코드 (검사 이름, 예: 소변/혈액 테스트)
    • 검사 결과 (실제 값)
    • 검사실 ID
    • 정상 범위 (최대/최소값) 및 검사 날짜
     

 
 

주요 포인트:

  • 135,000명의 환자에게서 얻은 실험실 데이터를 분석한 결과, 진단 코드의 총 횟수는 환자 수를 크게 초과했습니다.
    • 예: 고혈압(hypertension) 관련 진단 코드는 400,000번 이상 발생했으며, 이는 동일 환자가 여러 시점에 반복적으로 진단받았음을 의미합니다.
  • 주요 질환
    • 고혈압 (Hypertension)
    • 고지혈증 (Hyperlipidemia)
    • 제2형 당뇨병 (Type 2 Diabetes Mellitus)
  • 기타 흥미로운 코드
    • 증상으로 보이는 코드: 예를 들어, 피로(Fatigue)가 진단 코드에 포함됨.
    • 절차 기록: 예를 들어, 독감 예방 접종(Vaccination for Influenza)과 같은 내용도 포함됨.

이 데이터는 질환 자체뿐 아니라, 증상과 절차 데이터가 포함된 다양하고 상세한 진단 코드의 활용 가능성을 보여준다.
이는 환자들의 치료 패턴 및 건강 상태를 시간 경과에 따라 추적하는 데 중요한 인사이트를 제공한다.
 


위험 계층화 문제를 어떻게 도출하고 어떻게 해결하고, 어떻게 머신러닝 문제로 공식화할 수 있을까?

 
* 2009년 데이터를 기반으로 환자가 2011~2013 기간에 제 2형 당뇨병에 걸릴지를 예측하기!

 

1. 레이블 누출(Label Leakage) 문제

(1) 레이블 누출이란?

  • 머신러닝 모델이 훈련할 때 미래의 정보(즉, 예측하려는 결과값 또는 힌트)가 이미 데이터에 포함되어 있는 상황을 말한다.
  • 예:
    • "환자가 미래에 당뇨병으로 진단받았는가?"를 예측하려고 하는데, 과거 데이터에 혈당 수치가 매우 높거나, 의사가 이미 당뇨병 가능성을 기록해둔 상태라면 모델이 쉽게 학습할 수 있다.
    • 하지만 이런 정보는 미래를 예측하는 데 사용할 수 없는 데이터이다. 왜냐하면, 모델을 사용할 당시에는 이런 정보를 실제로 알 수 없기 때문이다.

(2) 레이블 누출 문제의 위험

  • 모델이 "이미 명확한 힌트를 가진 데이터"를 바탕으로 학습하면, 실제 예측 상황에서 새로운 데이터를 만났을 때 제대로 작동하지 않을 가능성이 크다.
  • 예를 들어, 모델이 "혈당 수치가 높으면 무조건 당뇨병이다"라고 학습했다면, 혈당 수치가 낮은데도 당뇨병 초기 증상을 보이는 환자를 놓칠 수 있다.

 

2. 간격(Gap)을 두는 이유와 신뢰성이 높아지는 이유

(1) 왜 간격을 더 많이 두면 신뢰성이 높아질까?

  1. 이미 의사가 진단한 환자를 제외할 수 있다.
    • 간격 기간 동안(예: 2009~2011년) 진단된 환자는 "이미 관리 중인 환자"이다.
    • 모델은 이들을 제외하고, 의사가 예상하지 못한 새로운 환자를 타겟으로 삼을 수 있다.
  2. 모델이 더 현실적인 상황에서 학습할 수 있다.
    • 모델이 "과거의 정보만 가지고 미래를 예측하는 법"을 학습하게 된다.
      → 이는 모델이 실제로 적용되는 상황과 일치하기 때문에 더 신뢰성이 높아질 수 있다.

(2) 왜 "간격이 긴 경우 신뢰성이 높다"고 보는 것일까?

  • 간격이 길수록, 데이터에 포함된 힌트를 제거할 가능성이 높아진다.
  • 예를 들어:
    • 간격이 없으면(0년 gap), 2009년의 높은 혈당 수치 데이터를 보고 모델이 "이 환자는 2009~2011년에 당뇨병에 걸릴 것"이라고 쉽게 예측한다.
    • 간격이 길면(2년 gap), 2009년 데이터를 보고 2011~2013년의 당뇨병 진단 여부를 예측해야 합니다. 이렇게 하면 더 복잡한 패턴을 찾아야 하고, 모델의 예측 능력이 실제 상황에 더 가까워진다.

(3) "조기 진단"을 포기하는 게 아닌가?

  • 간격을 두면 조기 진단이 필요할 가능성이 큰, 하지만 의사가 아직 발견하지 못한 환자를 찾는 데 집중할 수 있다.
  • 조기 진단의 진짜 목표는 아직 진단되지 않았지만 위험에 처한 환자들을 찾아내는 것이다. 간격을 두는 것은 이 목표를 이루기 위해 데이터를 정제하는 과정이다.

 

결론!!

모델 학습에서  레이블 누출문제를 막기 위해 feature 생성기간과 예측기간 사이의 Gap 을 두는 것은 중요하다.

 
위험 계층화 과정에서 예측할 대상을 정하기 위해  과거 데이터를 사용할 때, 실제로 발생할 수 있는 문제 중 하나이다.


검열(Censoring)이란?

  • '검열(Censoring)'은 데이터가 불완전하거나 일부 구간에서 누락된 상태를 말한다.
  • 의료 데이터에서는 환자에 대한 모든 데이터를 항상 확보할 수 없기 때문에, 데이터가 불완전하거나 제한된 경우가 종종 발생한다.
  • 여기서 검열은 두 가지 유형으로 나뉩니다: 왼쪽 검열(Left Censoring)오른쪽 검열(Right Censoring)


 


머신러닝 모델 및 평가

이 연구에서는 L1 정규화 로지스틱 회귀(L1-Regularized Logistic Regression)를 사용했다.
L1 정규화의 장점

  1. 고차원 데이터를 다룰 수 있음
    • 건강 보험 데이터는 수천 개 이상의 특징(feature)을 포함할 수 있기 때문에, 모델이 자동으로 중요한 변수를 선택하도록 만듦
  2. 해석 가능성(Interpretability)이 높음
    • 기존의 블랙박스(Black Box) 모델과 달리, 특정 변수(예: 특정한 검사 결과, 특정 약물 복용 여부 등)가 예측에 미치는 영향을 분석할 수 있음

-
 
L1 정규화 (L1 Regularization)

  • 가중치 벡터(weight vector)의 L1 노름(norm)에 패널티를 부여하면 결과적으로 희소(sparse)한 해를 얻게 된다.
    • 여기서 희소(sparse)란 많은 가중치 값이 0이 되는 것을 의미한다.
  • L1 정규화 문제는 다음과 같이 정의된다:

여기서 ∥w(1)∥ = ∑(d) ∣ w(d) ∣ 이다.   (1)은 작은 1을 의미한다
이는 L2 정규화의 대안으로 사용됩니다.

 
쉽게 정리)

  • L1 정규화:
    • 가중치 값이 많아도 필요 없는 가중치는 0으로 만듦.
    • 결과적으로 희소한(sparse) 모델이 만들어짐. (0이 많이 포함된 모델)
  • L2 정규화:
    • 모든 가중치를 작게 줄이는 방식.
    • 가중치 값이 0에 가까워질 수 있지만, 완전히 0이 되지는 않음.

 
 
 
 
 
 
 
L1 정규화의 희소성 이점 (Sparsity Benefit of L1 Regularization)

가정:

  • 손실 함수(loss function)의 수준 집합(level set)을 최적화하는 문제를 고려한다. 이 수준 집합은 2차 함수(quadratic function)이다.

* 손실 함수는 모델의 예측값과 실제값 사이의 차이를 측정하는 함수이다.
우리가 최적화를 통해 최소화하고자 하는 것이 바로 이 손실함수이며, 값이 작아질 수록 모델의 예측 성능이 더 좋아진다는 것이다.
* 수준 집합은 수학에서 함수가 특정 값을 가지는 점들의 집합을 말하며, 손실함수 값이 특정 수준으로 동일한 점들의 집합을 의미한다.

  • 정규화 항을 추가하는 대신, 제약 조건을 설정한다고 가정한다.

예:
손실 함수를 최소화하되, 가중치 벡터의 L1 노름이 3 이하가 되도록 제약을 둔다.
 

L1 제약 조건 (L1 Constraint):

  • 가중치 w1 ,w2가 있을 때, 가중치 절대값의 합이 1인 경우 해는 다이아몬드(diamond) 모양의 공간 내에 있어야 한다.

L2 제약 조건 (L2 Constraint):

  • 반면, L2 노름을 사용할 경우 해는 구(sphere) 내에 있어야 합니다. 예를 들어, 가중치 벡터의 L2 노름이 1로 고정되면, 이는 반지름이 1인 구를 형성한다.

 
최적화 해 비교

  1. L2 정규화:
    • 구(sphere) 상에서 손실 함수의 중심과 가장 가까운 점이 최적화 해가 된다.
    • 이 해는 w1 w2가 모두 0이 아닌 값을 가질 가능성이 높다.
  2. L1 정규화:
    • 다이아몬드(diamond) 상에서 손실 함수의 중심과 가장 가까운 점이 최적화 해가 된다.
    • 이 해는 w1또는 w2 중 하나가 0이 되는 경우가 많다.

따라서, L1 정규화는 희소한 해를 제공하며, 이는 다음과 같은 두 가지 상황에서 유리하다.

  1. 과적합 방지(Prevent Overfitting)
    • 적은 수의 특징(features)만으로도 좋은 모델이 존재하는 경우, 과적합을 방지할 수 있음
  2. 해석 가능성(Interpretability)
    • L1 정규화를 사용하면 모델이 선택한 주요 특징들을 명확히 식별할 수 있음
    • 예를 들어, 핀란드에서 사용되는 FINDRISC와 같은 간단한 위험 점수 체계는 단 5~20개의 질문만으로도 충분히 환자의 위험을 예측할 수 있었다.

 
실용적 이점 (Practical Benefits)

  • L1 정규화를 사용하여 수백 개의 특징(features)만으로 모델을 훈련하면, 동일한 모델을 다른 데이터셋에 더 쉽게 적용할 수 있다.
    • 예를 들어, 건강 보험 회사의 데이터를 활용해 모델을 학습한 경우, 다른 기관에서는 동일한 특징만 사용해 모델을 적용 가능하다.
    • 이는 모델 배포(deployment)를 단순화시키고 효율성을 높인다.

 
쉽게 정리)

  1. L1 제약 조건:
    • 가중치의 절대값 합(w1+w2)이 일정 값(예: 1)을 넘지 않도록 제한.
    • 제한된 공간이 다이아몬드 모양으로 형성됨.
  2. L2 제약 조건:
    • 가중치의 제곱합(w1^2 + w2^2)이 일정 값(예: 1)을 넘지 않도록 제한.
    • 제한된 공간이 원 모양으로 형성됨.
  3. 최적화 해 비교:
    • L1 제약 조건에서는 해가 다이아몬드 꼭짓점에 위치할 가능성이 높음.
      • 결과: 많은 가중치가 0으로 설정되어 희소한 모델 생성.
    • L2 제약 조건에서는 해가 원 내부의 적당한 위치에 있음.
      • 결과: 가중치들이 작아지지만, 대부분 0이 되지 않음.

[ L1 정규화의 실제 사용 ]-------------------------------------------------

  1. 리스크 예측 모델:
    • 병원에서 환자의 데이터를 분석할 때, 모든 변수가 중요한 것은 아니다.
    • L1 정규화를 사용하면, 정말 중요한 변수(예: 혈압, 혈당 등)만 남기고 나머지는 제거한다.
  2. 해석 가능성:
    • L1 정규화로 희소한 모델을 만들면, 결과적으로 모델이 어떤 변수를 기반으로 예측했는지 이해하기 쉽다.
    • 예: 핀란드의 FINDRISC 모델은 단 10개의 질문만으로 당뇨병 위험을 예측한다.

[ 의료 데이터에서 L1 정규화는 왜 중요한가? ]---------------------------------
 

  • 리스크 계층화(Risk Stratification) 문제에서 데이터를 분석할 때, 수많은 변수(features)가 포함된다.
    • 예: 건강 보험 데이터에서 혈당, 나이, 병력, 약물 사용 기록 등.
  • 하지만, 이 중 일부 변수만 중요한 경우가 많다.
    • L1 정규화는 이런 중요한 변수만 남기고, 불필요한 변수는 제거하므로 모델을 단순화하고 성능을 개선한다.

 

 
 
 
 

728x90
반응형
LIST