Executive Summary

중환자실에서 패혈증을 미리 알리는 AI는 환자 기록을 한 시간 단위로 읽어 위험도를 매기고, 위험도가 높은 상위 몇 퍼센트에게 경보를 띄운다. 그런데 그 기록은 대부분 비어 있다. 검사는 의사가 필요하다고 판단할 때만 하기 때문이다. 비어 있는 칸을 어떤 값으로 메울지는 모델을 만들기 전에 지나가는 선택이고, 논문 표에도 병원 보고서에도 거의 적히지 않는다. 이 글은 매사추세츠대 로웰 연구진이 10월 15일 arXiv에 올린 「Alert-List Concordance for Evaluating Imputation Strategies in ICU Sepsis Prediction」을 따라, 그 선택이 누구에게 경보를 울릴지를 얼마나 바꾸는지 본다.

공개 데이터 PhysioNet/CinC 2019의 환자 4만 336명분 기록에 빈칸 채우는 법 아홉 가지를 각각 적용했다. 뒤에 붙는 분류기도 확률 보정도 알람 기준도 모두 고정했으니 달라지는 것은 빈칸뿐이다. 전체 성적은 여덟 방법이 AUROC 0.011 폭 안에 몰렸고, 28쌍 가운데 22쌍은 통계적으로 구별되지 않았다. 그런데 같은 조건에서 상위 10% 경보 명단은 52~75%만 겹친다. 성적이 가장 높은 ForwardFill은 다른 어느 방법과도 40~45%밖에 겹치지 않는다.

4절까지는 논문에 적힌 사실을 따라간다. 사내 데이터 파이프라인의 눈으로 읽는 5절은 이 글의 해석이다.

주요 수치

출처: Siddappa, Raju, Al Amin, Ma, Alert-List Concordance for Evaluating Imputation Strategies in ICU Sepsis Prediction(arXiv:2610.22635, 2026년 10월 15일).

71.9%

모델에 들어간 39개 변수의 평균 결측률

검사수치 26개 중 25개는 90%가 넘는 시간대에 값이 없다

28쌍 중 22쌍

전체 성적이 통계적으로 구별되지 않은 방법 쌍

환자 단위로 재고 본페로니 보정을 거친 AUROC 비교다

52~75%

그 방법들이 내놓은 상위 10% 명단이 겹치는 비율

방법마다 정확히 1,211명씩 뽑는데 같은 사람은 절반 남짓이다

5 대 22~26시간

ForwardFill만 짚은 환자와 양쪽이 다 짚은 환자의 경보 리드타임

혼자 찾아낸 환자는 더 이르게가 아니라 더 늦게 걸린다

1

점수는 같은데 명단은 절반 남짓만 겹친다

실험 설계는 변수를 하나로 묶는 데 공을 들였다. 열 갈래 모두 같은 네 단계를 지난다. 빈칸을 메우고, 트리 100개짜리 같은 XGBoost 분류기로 학습하고, 학습 데이터의 20%로 확률을 보정하고, 위험도 상위 k%에게 경보를 띄운다. 분류기의 설정값도 보정 방식도 알람 기준도 전부 고정했다. 갈리는 것은 첫 단계뿐이다.

성적부터 보면 차이가 거의 없다. 전체 판별력을 재는 AUROC에서 ForwardFill이 0.787로 홀로 앞서고, 빈칸을 아예 메우지 않고 결측 구조를 그대로 넘기는 XGBoostNative가 0.744다. 나머지 여덟 방법은 0.722에서 0.733 사이, 폭으로는 0.011 안에 다 들어온다. 어느 한 방법의 신뢰구간보다도 좁은 폭이다. 이 여덟 방법 사이의 28쌍을 환자 단위로 비교하고 본페로니 보정을 걸면 22쌍에서 유의한 차이가 나오지 않는다. 성적만 놓고 고르라면 사실상 아무거나 집어도 된다.

다른 지표로 봐도 다르지 않다. 양성 사례가 드문 자료에서 판별력을 보는 AUPRC는 그 여덟 방법이 0.049에서 0.054 사이이고, 예측 확률이 실제 발생 빈도와 얼마나 맞는지 재는 브라이어 점수는 0.01733에서 0.01737 사이다. 뒤쪽은 다섯째 자리에서야 갈린다. ForwardFill은 두 지표에서도 가장 좋은 쪽에 서지만, 나머지 여덟을 서로 줄 세울 근거는 어느 지표에도 없다. 보정 방법을 고를 때 흔히 쓰는 잣대는 가려 둔 값을 얼마나 비슷하게 되살렸는지 재는 복원 오차와 이런 전체 지표인데, 둘 다 누가 뽑혔는지는 묻지 않는다.

그다음이 이 논문이 새로 한 일이다. 저자들은 각 파이프라인이 실제로 누구를 골랐는지를 꺼내 맞대 본다. 알람 시스템이 병동에 내놓는 출력은 순위표가 아니라 정해진 비율의 사람 명단이기 때문이다. 평가 집합 1만 2,101명에서 상위 10%를 뽑으면 어느 방법이든 정확히 1,211명이다. 숫자는 같다. 겹치는 사람을 세면 달라진다. 두 명단을 합친 사람 가운데 양쪽에 모두 들어 있는 사람의 비율, 곧 자카드 유사도가 0.518에서 0.750 사이다.

가장 많이 겹치는 쌍은 DAE와 MIDA다. 같은 오토인코더 구조에 노이즈 주는 방식만 다른 두 방법인데, 그 둘이 0.750이고 95% 신뢰구간은 0.726에서 0.771이다. 거의 같은 알고리즘인데도 명단의 4분의 1이 서로 다른 사람이다. 순위 상관으로 보면 이 차이는 가려진다. 45쌍 전체에서 스피어만 상관은 0.825에서 0.975, 켄들 타우는 0.633에서 0.872로 높다. 전체 줄 세우기는 비슷하게 하면서 맨 윗자리에서만 갈리기 때문이다.

성적은 한 밴드 안에 몰리고, 명단은 갈린다 같은 분류기·같은 확률 보정·같은 상위 10% 알람, 빈칸 채우는 법만 다르다 전체 성적 (AUROC) 여덟 방법이 0.011 폭 안에 있다 ForwardFill 0.787 XGBoostNative 0.744 Mean 0.733 SAITS 0.732 BRITS 0.732 DAE 0.730 MICE 0.728 MIDA 0.727 GRU-D 0.724 MAE 0.722 0.72 0.74 0.76 0.78 가로축은 0.715부터 그렸다 상위 10% 경보 명단이 겹치는 비율 여덟 방법끼리 0.518 ~ 0.750 ForwardFill과 나머지 0.40 ~ 0.45 0 0.25 0.50 0.75 1
▲ 페블러스 원본 도식 | 출처: Alert-List Concordance for Evaluating Imputation Strategies in ICU Sepsis Prediction의 표 I과 본문 수치 재구성
2

중환자실 기록은 열 칸 중 일곱 칸이 비어 있다

빈칸을 메우는 선택이 왜 이만큼 힘을 갖는지는 재료를 보면 짐작이 간다. PhysioNet/CinC 2019 데이터는 미국 두 병원, 베스이스라엘 디코니스 의료원과 에모리대학병원의 중환자실 기록이다. 환자 4만 336명, 155만 2,210 환자-시간이 한 시간 간격의 표로 깔려 있고, 패혈증 여부는 국제 기준인 Sepsis-3로 붙어 있다. 모델에 들어가는 변수는 생체징후 8개와 검사수치 26개, 인구통계와 입원 정보 5개를 합쳐 39개다. 이 환자들을 패혈증 비율을 맞춰 70 대 30으로 가른 뒤 2만 8,235명으로 학습하고, 1만 2,101명은 평가용으로 떼어 두고 학습에 한 번도 쓰지 않았다. 앞 절에서 상위 10% 명단을 센 집합이 이 1만 2,101명이다.

그 39개 변수의 평균 결측률이 71.9%다. 특히 검사수치 쪽이 심해서, 26개 가운데 25개는 환자-시간의 90% 이상에서 값이 없다. 예외는 포도당 하나인데 그것도 83%가 비어 있다. 같은 검사를 연달아 한 간격은 중앙값 5시간, 사분위 범위 2시간에서 11시간이고, 가장 긴 공백은 326시간이다.

이 빈칸은 기계 고장으로 생긴 것이 아니다. 중환자실에서 검사는 의사가 필요하다고 판단할 때 나간다. 그래서 값이 없다는 사실 자체가 임상 판단의 흔적이고, 환자가 얼마나 위중한지에 대한 정보를 품고 있다. 이 논문이 인용한 2019년 JMIR Medical Informatics 연구가 그 점을 따로 측정해 두었다. MIMIC-III에서 어떤 값이 관측됐는지의 패턴만으로 30일 사망을 예측해도 AUROC 0.68이 나온다. 무엇을 쟀는지가 아니라 무엇을 재기로 했는지가 이미 신호라는 뜻이다.

빈칸을 메운다는 것은 그 신호 위에 숫자를 덮어쓰는 일이다. 비교 대상 아홉 가지는 덮어쓰는 방식이 서로 다르다. ForwardFill은 그 환자에게서 마지막으로 관측된 값을 계속 끌고 가고, Mean은 학습 데이터의 변수별 평균을 넣는다. 끌고 갈 값이 아직 없는 입원 초기 구간에서는 ForwardFill도 학습 데이터 평균을 쓴다. MICE는 변수들 사이의 관계를 세운 회귀식을 열 번 돌려 값을 추정한다. 나머지 여섯은 신경망이다. DAE와 MAE와 MIDA는 오토인코더 계열이고, SAITS는 어텐션, BRITS는 양방향 순환 신경망을 쓰며, GRU-D는 마지막 관측 이후 시간이 흐를수록 값을 학습 평균 쪽으로 서서히 끌어내린다. 여기에 빈칸을 메우지 않고 결측 구조를 그대로 트리에 넘기는 XGBoostNative가 비교 기준으로 붙는다.

같은 빈칸에 ForwardFill은 여섯 시간 전 젖산 수치를 적고, Mean은 병원 전체 평균을 적고, GRU-D는 그 둘 사이 어딘가를 적는다. 어느 쪽도 실제로 측정된 값이 아니다. 뒤에 붙는 모델은 셋 다 측정값으로 읽는다.

3

성적이 가장 높은 방법이 가장 다른 명단을 낸다

ForwardFill은 두 자리에서 동시에 극단에 선다. AUROC는 0.787로 열 갈래 가운데 가장 높고, 다른 어느 방법과 맞대도 명단이 겹치는 비율은 0.40에서 0.45로 가장 낮다.

두 병원을 따로 돌려도 같은 그림이 나온다. 베스이스라엘 쪽은 환자 6,118명에 패혈증 531건, 에모리 쪽은 5,983명에 349건이다. 한쪽 병원에서 ForwardFill이 다른 방법과 겹치는 비율의 최댓값은 0.409, 다른 쪽은 0.440이다. 반면 ForwardFill을 뺀 나머지 쌍들은 각각 0.466과 0.454에서 시작한다. 두 집단의 범위가 아예 닿지 않는다.

환자 한 명의 시간별 위험도를 하나의 점수로 묶는 규칙을 바꿔 봐도 마찬가지다. 저자들은 최댓값, 상위 3시간 평균, 90백분위, 최근 6시간, 최초 24시간, 전체 평균의 여섯 가지로 다시 계산했다. 재구성 계열끼리는 겹침이 0.45에서 0.90까지 규칙에 따라 크게 흔들리는데, ForwardFill은 어느 규칙에서도 0.36에서 0.46에 머문다. 흔들리지 않는 바깥쪽이다.

정작 병원 대시보드에 올라가는 숫자로는 이 차이가 보이지 않는다. 상위 10%를 기준으로 정밀도는 열 방법이 0.257에서 0.298 사이, 재현율은 0.353에서 0.410 사이다. 정밀도 편차는 0.041이다. 무작위로 뽑았을 때의 0.073과 견주면 네 배쯤 되는 성능이고, 그 성능은 어느 방법을 써도 비슷하다. 명단 겹침이 0.40과 0.75로 거의 두 배 차이 나는 동안 운영 지표는 소수점 둘째 자리에서 움직인다. 모델 교체 보고서가 정밀도와 재현율만 담고 있다면 아무 일도 없었던 것으로 읽힌다.

명단은 거의 두 배 갈리는데, 운영 지표는 그대로다 같은 열 가지 파이프라인, 상위 10% 알람 기준 — 가로축은 공통 0~1 눈금 명단 겹침 (자카드 유사도) 0.40~0.75 (폭 0.35) 정밀도 (Precision@10%) 0.257~0.298 (폭 0.041) 재현율 (Recall@10%) 0.353~0.410 (폭 0.057) 0 0.25 0.50 0.75 1 세 지표 모두 같은 열 가지 보정 방법, 같은 평가 집합에서 쟀다.
▲ 페블러스 원본 도식 | 출처: Alert-List Concordance for Evaluating Imputation Strategies in ICU Sepsis Prediction의 정밀도·재현율·자카드 유사도 수치 재구성
4

먼저 잡아서가 아니라 늦게 잡아서다

여기까지 보면 ForwardFill이 남들보다 예민해서 남들이 놓치는 환자를 더 일찍 잡아내는 것처럼 읽힌다. 저자들이 경보가 울린 시각을 재 보니 반대였다. ForwardFill만 단독으로 지목한 환자는 111명이고, 그중 63명은 첫 Sepsis-3 판정이 붙기 전에 임계값을 넘었다. 그 앞선 시간의 중앙값이 5시간이다. 여러 방법이 함께 짚은 환자들의 같은 수치는 22시간에서 26시간이다.

경보가 첫 패혈증 판정보다 얼마나 앞섰나 (중앙값) 여러 방법이 함께 지목한 환자 22~26시간 ForwardFill만 지목한 환자 5시간 0 10 20 30 판정 전 리드타임 (시간) ForwardFill이 단독으로 지목한 환자 111명 가운데 63명이 판정 전에 임계값을 넘었고, 그 63명의 리드타임을 센 값이다.
▲ 페블러스 원본 도식 | 출처: Alert-List Concordance for Evaluating Imputation Strategies in ICU Sepsis Prediction의 경보 타이밍 분석 수치

저자들이 내놓는 설명은 ForwardFill의 성질과 중환자실 결측의 성질이 우연히 맞물린다는 것이다. 마지막 관측값을 계속 끌고 가는 방식이라, 최근에 측정한 값이 나쁠수록 그 나쁜 값이 그대로 유지된다. 중환자실에서는 상태가 나쁜 환자일수록 자주 그리고 최근에 측정된다. 두 성질이 겹치면 점수가 올라가지만, 그것이 더 나은 임상적 판단이라는 근거는 아니라고 논문은 분명히 적는다.

엇갈린 환자들이 어떤 사람들인지도 따로 살폈다. 패혈증 양성 환자 880명을 상위 10% 기준으로 세 쌍에서 비교했더니, 양쪽 방법이 모두 고른 환자군이 중환자실 재원 기간이 가장 길고 위험도도 가장 높았다. 모든 패널에서 크러스컬-월리스 검정 p값이 0.001보다 작다. 눈에 걸리는 쪽은 ForwardFill만 지목한 환자군이다. 이 사람들의 재원 기간은 양쪽이 다 짚은 환자군에 가까운데, 다른 방법들이 매긴 위험도 점수는 훨씬 낮다. 빈칸을 메운 방식이 같은 환자를 다르게 읽었다.

연산 비용도 같은 방향을 가리킨다. 순차 구조의 신경망 보정기는 GPU를 쓰고도 Mean의 5배에서 12배를 쓴다. SAITS가 7.54분으로 Mean의 0.62분 대비 12.2배다. 오토인코더 계열은 2.4배에서 3.0배로 그나마 싸다. 그 비용을 치르고도 AUROC 우위는 없다. 임상적 우월성이 증명돼서가 아니라 값이 싸서 평균 대체가 널리 쓰인다고 저자들은 정리한다.

4.1저자들이 스스로 그은 선

이 연구가 말하지 않는 것도 논문에 적혀 있다.

  • • 환자 결과가 바뀐다는 것을 보인 것이 아니다. 누가 걸리는지가 바뀐다는 것까지만 보였다. 그 변화가 에스컬레이션 결정이나 치료 결과를 어떻게 바꾸는지는 이 데이터로 답할 수 없고, 전향적 그림자 배포가 최종 검증이라고 저자들은 적는다
  • • 미국 두 병원 코호트 한 곳이다. MIMIC-IV 같은 다른 코호트로 외부 검증을 하지 않았고, 같은 패턴이 다른 병원에서도 나올지는 열려 있다
  • • 시계열 보정기를 행 단위로 구현했다. SAITS와 BRITS와 GRU-D는 원래 환자의 궤적 전체를 보도록 설계된 모델인데 여기서는 한 행씩 처리하게 했다. 저자들이 이 비교의 가장 중요한 한계로 꼽는 대목이고, 신경망 계열의 성적이 낮게 나온 이유의 일부일 수 있다
  • • 결측 지시자를 일부러 뺐다. 값이 비어 있다는 사실과 마지막 관측 이후 경과시간을 피처로 넣지 않았다. 보정된 값 자체만 비교하려는 설계인데, 넣었더라면 XGBoostNative 대비 보정 방법들의 위치가 달라질 수 있다
  • • MICE는 한 벌만 썼다. 연쇄방정식을 열 번 반복하되 최종 데이터셋은 하나만 만들었고 루빈 규칙으로 합치지 않았다. MIDA는 다섯 번 평균이다
5

페블러스가 이 논문을 주목하는 이유

모델을 바꿀 때 데이터팀이 확인하는 것은 보통 성능 지표다. 새 버전의 AUROC가 떨어지지 않았는지, 정밀도와 재현율이 유지되는지를 본다. 이 논문이 보여 주는 것은 그 확인이 통과한 뒤에도 남는 질문이다. 지표가 그대로라는 사실은 같은 사람에게 경보가 간다는 것을 뜻하지 않는다. 여기서 바뀐 것은 모델도 아니고 학습 방법도 아니다. 빈칸을 무엇으로 메웠는지 하나뿐이었다.

전처리 단계가 유독 위험한 이유는 기록이 남지 않아서다. 모델 구조와 하이퍼파라미터는 논문에도 적히고 사내 문서에도 남지만, 어떤 보정을 썼는지는 코드 어딘가의 한 줄로 끝나는 경우가 많다. 병원에 납품되는 상용 모델이라면 그 한 줄은 고객 쪽에 아예 보이지 않는다. 기록이 없으면 비교할 대상도 없고, 비교할 대상이 없으면 명단이 바뀌었다는 사실 자체를 발견할 수 없다.

비슷한 자리에서 한 번 크게 데인 전례가 있다. 미국 병원에 널리 깔린 상용 패혈증 예측 모델을 2021년 JAMA Internal Medicine이 외부 검증했을 때, 입원 환자의 18%에 경보를 울리면서 패혈증 사례의 67%를 놓치고 있었다. 그때 깨진 것은 벤더가 제시한 성능 수치였다. 이번 논문은 한 걸음 더 들어간다. 성능 수치가 정직하고 서로 같아도, 그 수치 아래에서 경보를 받는 사람은 바뀌어 있을 수 있다.

다행히 확인하는 쪽은 비싸지 않다. 모델을 다시 학습시킬 필요가 없다. 두 버전이 뽑은 상위 k% 명단을 둘 다 저장해 두었다가 겹치는 비율을 세면 된다. 그러려면 세 가지가 기록에 남아 있어야 한다.

  • • 어떤 보정을 어떤 설정으로 썼는지. 방법 이름만으로는 부족하다. ForwardFill이라면 첫 관측 이전 구간을 무엇으로 채웠는지, GRU-D라면 감쇠 속도를 어떻게 잡았는지까지가 값을 정한다
  • • 결측 지시자를 피처로 넣었는지. 값이 비어 있다는 사실 자체가 신호인 영역에서는 이 한 줄이 모델이 읽는 정보를 바꾼다
  • • 점수가 아니라 명단. 집계된 지표만 남기고 누가 뽑혔는지를 버리면 나중에 어떤 비교도 복원할 수 없다. 저장해야 할 것은 식별자 목록과 그것이 어느 버전 어느 시점의 출력인지다

이 세 가지가 있으면 전처리를 바꿀 때마다 명단 겹침을 함께 보고할 수 있다. 겹침이 0.9라면 사실상 같은 시스템이고, 0.5라면 성능이 같더라도 다른 시스템이다. 셋 중 하나라도 없으면 같은 질문에 영영 답할 수 없다. 패혈증 경보에서는 그 답이 환자 이름 단위로 나오고, 신용 심사나 설비 고장 예측에서는 다른 이름 단위로 나올 뿐 구조는 같다.

Editor's Note

전처리 코드는 대개 가장 먼저 쓰이고 가장 늦게까지 손대지 않는 부분이다. 성능이 유지되는 한 고칠 이유가 없기 때문이다. 이 논문은 그 조건절을 흔든다. 성능이 유지된다는 것은 명단이 유지된다는 뜻이 아니었다.

여기까지 읽어 주셔서 감사하다. 이 글의 사실관계는 arXiv에 공개된 논문 원문에서 확인했다. 쓰인 데이터는 PhysioNet/CinC 2019 공개 데이터셋이고, 논문은 IEEE ICDM 2026과 함께 열리는 생의료정보 데이터마이닝 워크숍(DMBIH 2026)에 채택됐다. 사내 모델을 교체하거나 전처리를 손볼 때 바뀐 명단을 따로 비교해 보신 사례가 있다면 나눠 주시면 좋겠다.

(주)페블러스 데이터 커뮤니케이션팀
2026년 10월 20일

R

참고문헌

1차 출처

배경·인용 연구