제약 1
환자 누수
36,286명 중 4,618명(12.7%)이 둘 이상의 split 에 등장합니다. 그대로 학습하면 val/test 성능이 부풀려집니다. 학습 전에 patient_key 그룹 split 을 다시 만드는 것이 0순위 작업입니다.
Tab 3 · Training strategy
같은 문제를 이미 수백만 쌍으로 푼 연구가 있습니다. 그 결론을 그대로 베끼지 않고, 이 데이터셋(10만 장 · 36,286명 · 12 라벨)의 제약에 맞춰 다시 짠 계획입니다.
① 다중 라벨 합성이 정답이다. EchoNext(Nature 2025)는 70만–120만 ECG-초음파 쌍, 23만 명으로 학습했고, 저자들은 라벨 간 공선성이 크기 때문에 단일 라벨이 아니라 다중 라벨(multilabel) 접근이 합성 지표(SHD composite)를 더 잘 잡는다고 명시했습니다.
② 진짜 적은 분포 이동이다. 외부 병원 3곳(Cedars-Sinai 10,177 · Montreal 10,862 · UCSF 6,106)에서 AUROC 가 내부 83%에서 78–80%로 5–7%p 떨어졌고, 커뮤니티 코호트(PREVUE-VALVE, 65–85세 재택 ECG)에서는 71%까지 내려갔습니다. 유병률이 43% → 8%로 바뀌면 같은 모델이 다른 도구가 됩니다.
③ 전향 배포의 성적은 재현 가능하다. 85,000명에게 배포했을 때 9%를 고위험으로 표시했고, 그중 초음파를 찍은 사람의 약 3/4 이 실제 SHD 로 진단돼 기존 진단 경로 대비 수율이 약 2배였습니다.
④ 같은 데이터로 이미 벤치마크가 있다. PhysioNet EchoNext Mini-Model(우리가 쓰는 10만 장 부분집합)로 학습한 2026년 프리프린트에서 단순 CNN·TCN 계열이 AUROC 0.86 수준을 보고했습니다. 즉 “잘 만든 baseline 은 0.85 근처”가 현실적 기준선이고, 우리 목표는 그 위에서 누수 없는 평가·사진 강건성·배포입니다.
⑤ 라벨 하나짜리 문제는 이미 RCT 까지 갔다. Mayo 의 low-EF AI-ECG 는 무작위 임상시험(Nat Med 2021)에서 진단율을 올렸습니다. LVEF ≤ 45% 는 가장 성숙한 타깃이므로, 우리도 주 지표는 LVEF, 나머지 11개는 보조 지표로 두는 편이 안전합니다.
출처는 7절.
제약 1
36,286명 중 4,618명(12.7%)이 둘 이상의 split 에 등장합니다. 그대로 학습하면 val/test 성능이 부풀려집니다. 학습 전에 patient_key 그룹 split 을 다시 만드는 것이 0순위 작업입니다.
제약 2
결과지에 인쇄된 판독문(“ABNORMAL ECG” 61%, “LEFT AXIS DEVIATION” 등)이 라벨과 직접 상관합니다. 헤더·판독문을 끈 변형으로 이미지 기여도를 분리 측정해야 합니다.
제약 3
학습 이미지는 정면·무왜곡 렌더입니다. 실제 입력은 손떨림·원근·조명이 있는 사진이라 도메인 간극이 큽니다. 증강과 문서 정면화가 성능의 절반입니다.
--no-header --no-interpretation 으로 2만 장(각 split 비례)을
별도 렌더. 같은 split 정의를 그대로 사용해야 A/B 비교가 성립.pos_weight(음성/양성 비율). PR ≥ moderate(0.8%)처럼 희귀한 라벨에서
focal loss 와 비교.| 지표 | 대상 | 왜 |
|---|---|---|
| AUROC | 라벨별 + macro | 선행연구와 직접 비교 가능한 공통 지표 |
| AUPRC | 희귀 라벨(PR 0.8%, AR 1.3%) | 불균형에서 AUROC 는 낙관적 |
| Sensitivity @ fixed specificity | LVEF·SHD | 스크리닝 운영점은 여기서 결정 |
| ECE / Brier | 전 라벨 | 확률을 그대로 보여주는 UI 이므로 보정 필수 |
| Δ AUROC (판독문 유/무) | 전 라벨 | 텍스트 누수 크기 정량화 |
| Group split vs 기존 split | LVEF·SHD | 환자 누수로 부풀려진 정도 |
| 하위군 AUROC | 성별·연령대·세팅 | 형평성·일반화 |
보고 형식은 “내부 split / 그룹 split / no_split 외부” 세 열을 항상 같이 제시합니다. 한 숫자만 보고하면 이 데이터에서는 어떤 결론도 방어할 수 없습니다.
| 단계 | epoch | 추정 |
|---|---|---|
| 224px ResNet18 baseline | 12 | 1.5 h |
| 384px | 12 | 4 h |
| 448px 또는 ConvNeXt-T | 10 | 8 h |
| 누수 A/B 재학습 | 12 | 1.5 h |
| 사진 증강 파인튜닝 | 8 | 2 h |
주당 GPU 할당(약 30시간) 안에서 2주면 Stage 1–3 을 끝낼 수 있습니다. 가장 비싼 실험(448px)은 Stage 1 에서 해상도 민감도가 확인된 뒤에만 실행합니다.
스토리지: 이미지 4.3 GB + 썸네일 캐시 15 GB + 체크포인트. Kaggle Dataset 상한 안에서 여유가 있습니다.
수치는 4 worker 렌더 실측(0.20 s/장)과 통상적인 T4 처리량에서 계산한 추정입니다. 첫 실행에서 실측으로 대체합니다.
그룹 val macro AUROC 0.749 · LVEF ≤ 45% 0.818 · SHD 0.792. LVEF 는 목표(0.85)에 0.03 못 미쳤고 SHD 는 목표(0.80)에 근접했습니다. 같은 모델의 기존 val(학습에서 본 환자) macro 는 0.835 로, 환자 누수만으로 +0.086 이 부풀려집니다. 학습에 쓰지 않은 no_split 에서는 0.589 로 떨어져 별도 원인 분석이 필요합니다.
ViT(small) 는 0.485 — 사전학습 없이 6 epoch 로는 학습되지 않았습니다(구조 비교 불가).
판독문 누수 통제 실험 완료: 같은 2만 행에서 헤더·판독문만 제거하고 다시 학습한 결과 macro AUROC 0.721 → 0.708 (−0.013). LVEF −0.037, PR −0.067, AR·AS 는 +. 인쇄 텍스트의 기여는 작고 성능의 대부분은 파형에서 나옵니다. Grad-CAM 이 헤더에 몰린 것은 텍스트 판독이 아니라 상단 고주파 영역에 주의가 쏠린 현상으로 해석합니다.
해상도 실험 완료 (224 → 384): 그룹 val macro 0.749 → 0.768, 그룹 test 0.742 → 0.763. LVEF ≤ 45% 는 그룹 test 0.853 으로 목표(0.85) 달성, SHD 0.806 으로 목표(0.80) 달성. 반면 no_split 외부는 0.589 → 0.556 으로 악화 — 해상도가 아니라 분포 문제입니다. 다음 단계는 모델 확대가 아니라 no_split 코호트 규명과 실사진(촬영) 증강입니다.
① 224px 베이스라인에서 LVEF AUROC < 0.80 이면 → 라벨 정렬·경로 오류를 먼저 점검(모델 문제로 보지 않음).
② 그룹 split 과 기존 split 의 AUROC 차이가 0.02 미만이면 → 환자 누수는 이 데이터에서 무시 가능, 이후 실험은 기존 split 로 단축.
③ 판독문 유/무 차이가 0.05 이상이면 → 텍스트 누수 통제 없는 결과는 폐기하고 이미지 단독 성능만 보고.
④ 448px 가 224px 대비 +0.01 미만이면 → 해상도 실험 중단, 증강·강건성에 자원 이동.
수치(70만–120만 쌍, 외부 AUROC 78–80%, 배포 85,000명·9%·2배 수율, PREVUE-VALVE 71%)는 위 문헌의 초록·본문에서 인용했습니다. 우리 데이터 수치는 EDA 리포트에서 코드로 계산한 값입니다.