이 예측, 의미가 있나? — 연구원 출신 팀장이 '라벨 누수'를 스스로 발견하고 주제를 갈아엎다
📚 「AI 헬스케어 파이널 프로젝트」 연재 3편입니다. (2편: 이 숫자, 진짜 맞아?)

📝 한줄 요약
1편에서 미국과 한국의 건강 데이터를 잔뜩 모았으니, 이제 “고혈압·당뇨를 예측하는 모델”을 만들 차례였습니다. 그런데 만들기 직전에 “이거 사실 답을 보고 답을 맞히는 거 아닌가?”라는 의문이 들었어요. 확인해보니 진짜 그랬습니다(이걸 ‘라벨 누수’라고 합니다 — 정답을 미리 알려주는 변수가 섞여 점수가 부풀려지는 현상이에요). 그래서 예측 대상을 만성콩팥병(CKD)으로 통째로 바꾸는 큰 결정을 내렸고, 그 과정에서 AI 전문가 기능이 내놓은 답이 틀린 것까지 공식 자료로 잡아낸 하루를 기록합니다.
바쁘시면 이것만 읽어도 돼요:
- 깨달은 점: 건강검진 결과에 이미 혈압·혈당이 적혀 있는데 고혈압·당뇨를 “예측”하는 건 답안지를 보고 시험 보는 것과 같음 → 모델이 의미 없음(‘라벨 누수’)
- 결단: 예측 대상을 고혈압·당뇨에서 만성콩팥병(CKD)으로 통째로 변경. 의학적으로 진짜 의미 있는 예측으로 전환
- 인상적 순간: AI 의료 자문이 “크레아티닌은 40세 이상만 측정”이라고 했는데 틀린 정보였음 → 공단 공식 페이지로 확인해 정정
- 핵심 해법: 용어를 몰라도 “이게 무슨 뜻이야?”를 끝까지 물으면 본질이 잡힘. 기획이 바뀌는 걸 두려워하지 말 것
- 교훈: AI 답변도 100% 믿지 말고 공식 출처로 교차 검증. 예측 과제엔 항상 ‘답이 입력에 섞여 있지 않은지’ 의심할 것
🎯 이런 분들께 도움돼요
- 데이터로 무언가를 예측하는 모델을 만들거나 의뢰할 계획이 있는 분
- AI/ML로 전환 중인데 “좋은 예측 문제가 뭔지” 감을 잡고 싶은 분
- 의료·금융·채용처럼 “틀리면 안 되는” 분야에서 AI를 쓰려는 분
😫 문제 상황 (Before)
1편에서 데이터를 열심히 모았으니, 다음은 당연히 “이 데이터로 고혈압·당뇨를 예측하는 모델을 만들자”였습니다. 솔직히 고백하면 저희 프로젝트는 기획이 계속 바뀌고 있었어요. 아직 기획 단계였으니까요. 그날도 “프로젝트를 다시 정리해봤어”로 시작했습니다.
요구사항 정의서, API 명세서, 데이터 구조도(테이블 설계도)까지 1차로 만들고 나서 모델 이야기를 꺼내려는 순간, 이상한 느낌이 들었습니다.
“잠깐. 건강검진 결과지에 이미 혈압·공복혈당·당화혈색소가 다 적혀 있잖아? 그럼 고혈압·당뇨는 그 수치만 보면 거의 판정이 나는데, 그걸 또 ‘예측’한다는 게 무슨 의미가 있지?”
이 찜찜함이 이 글의 출발점입니다.
🛠️ 사용한 도구
- 도구: Claude Code
- 모델: Claude Opus
- 특이사항: 코드 도구이자, “이게 왜 문제야?”를 함께 파고드는 토론 상대 겸 의료 도메인 자문 겸 사실 검증 조수로 썼습니다
🔧 작업 과정
1) 곁가지지만 중요한 일 — 팀원이 가져온 “데이터가 텅 비는” 문제
본격적인 이야기 전에, 전날 팀 작업에서 있었던 한 장면부터요. 팀원이 다급하게 문제를 가져왔습니다.
팀장님 계산 취합 코드 최근 거로는 고칠 수가 없다고 하는데
gamma_gtp / sleep_hours KNHANES 매핑 수정이 필요한 상황이에요.
gamma_gtp : 2011 정상, 2012부터 100% 결측
sleep_hours: 2011~2015 정상, 2016부터 100% 결측
원인이 황당했어요. 한국 건강조사(KNHANES)는 조사 회차마다 같은 항목인데도 변수(컬럼) 이름을 바꿔 놨던 겁니다. 그래서 우리 코드가 옛날 이름만 찾다가 “데이터 없음”으로 처리한 거죠. AI에게 회차별 실제 이름을 찾아 연결하게 했더니 금방 복구됐습니다.
💡 공공데이터는 원래 그렇게 깔끔하지 않다. 그리고 팀장으로서, 팀원이 막힌 데이터 문제를 AI와 함께 빠르게 풀어주는 것도 중요한 역할이라는 걸 느꼈습니다.
2) 찜찜함의 정체 — “답을 보고 답을 맞히고 있었다”
다시 본론입니다. 모델을 만들기 직전, 그 찜찜함을 그대로 AI에게 던졌어요.
기획을 다시 바꿔야 될것 같아.
이미 건강검사 결과지에 혈압과 공복혈당, 당화혈색소 수치가 있는 상태에서
고혈압과 당뇨가 이미 거의 판정이 나기 때문에 예측 모델을 만들 필요가 없을것 같아
AI의 답은 명확했습니다. 제가 느낀 찜찜함에는 이름이 있었어요. ‘라벨 누수(label leakage)’ — 정답을 미리 알려주는 변수가 입력에 섞여, 점수가 실제보다 부풀려지는 현상입니다.
쉽게 말하면 이렇습니다. 시험 문제를 푸는데 답안지가 문제지에 섞여 있는 상황이에요. 고혈압의 ‘정답’은 결국 혈압 수치인데, 그 혈압 수치를 입력으로 주고 고혈압을 맞히라고 하면, 모델은 똑똑한 게 아니라 그냥 “혈압 140 넘으면 고혈압”이라는 뻔한 규칙만 외우는 거죠. 의학적으로 새로운 통찰이 전혀 없습니다.
💡 “예측”이 의미 있으려면, 정답이 입력값에 미리 들어가 있으면 안 됩니다. 이게 좋은 예측 문제의 첫 번째 조건이에요.
3) 그럼 뭘 예측하지? — 40대 이상, 그리고 콩팥
문제를 알았으니 방향을 틀어야 했습니다. 저는 두 가지를 제안했어요.
20~30대는 제외하고 40대 이상으로 하면 어떨까. 최근 고령화로 시니어 인구가 많으니
건강검진 데이터에 크레아티닌 수치와 eGFR 수치가 포함되어 있나? 40대 이상에서
그럼 다시 CKD는 크레아티닌, eGFR 수치로 진단할수 있나?
여기서 **만성콩팥병(CKD)**이 후보로 떠올랐습니다. 콩팥 기능은 ‘eGFR’이라는 수치(콩팥 기능 수치)로 보는데, 이건 건강검진의 ‘크레아티닌’이라는 항목에서 계산됩니다. 핵심은 이거예요. 콩팥병은 일반인이 평소에 잘 모르고 지나치는데, 검진 수치로 위험을 미리 알려주면 진짜 도움이 된다는 것. 그러니까 ‘답을 보고 답 맞히기’가 아니라, 진짜 예측이 됩니다.
AI에게 한국 건강조사 데이터를 살펴보게 했더니, 40~64세에서 CKD 양성이 1.04%, 게다가 아직 병은 아니지만 경계에 선 잠재 위험군이 30%나 나왔습니다. 미리 알려줄 사람이 그만큼 많다는 뜻이죠.
💡 좋은 예측 문제는 “사람이 평소에 모르고 지나치는 것”을 짚어줄 때 가치가 생깁니다.
4) 인상적이었던 순간 — AI(전문가)의 답이 틀렸다
CKD로 방향을 잡으면서, AI의 의료 자문 기능에 검진 항목을 물었습니다. 그런데 답변 중 하나가 어딘가 이상했어요. “크레아티닌은 만 40세 이상에게만 측정한다”는 거였죠. 그래서 의심하고 다시 확인을 요청했습니다.
건강검진 데이터에 크레아티닌·eGFR이 40세 이상만 측정되나? (의심)
잘못된 정보면 메모리에서 정정해줘
AI가 국민건강보험공단 공식 페이지를 직접 확인한 결과, 크레아티닌·eGFR은 전 연령 측정이 맞았습니다. AI의 의료 자문이 틀렸던 거예요. 곧바로 정정하고, 검증된 사실을 기록에 남겼습니다.
이 장면이 정말 인상 깊었어요. AI는 똑똑하지만 가끔 틀립니다. 그걸 잡아내는 건 결국 “이거 진짜 맞아?”라고 의심하고 공식 출처로 확인하는 사람의 몫이라는 걸 다시 느꼈습니다.
💡 AI 답변, 특히 의료·법률·금융 영역은 공식 출처로 한 번 더 확인하세요. 그럴듯해 보여도 틀릴 수 있습니다.
5) 본질 파고들기 — “라벨을 어떻게 정의하느냐”
여기서부터는 좀 깊은 토론이었어요. 같은 ‘콩팥병 예측’이라도 무엇을 정답으로 둘지에 따라 누수 위험이 달라지거든요. 저는 용어를 몰랐지만 계속 물었습니다.
수학적으로 누수를 위해 크레아티닌 입력 변수를 제외해야 한다는게 무슨 뜻이야?
라벨이 eGFR 수치면 안된다는 얘기인거잖아, eGFR < 60 이면 범위를 얘기하는것이고 라벨의 의미가 다르잖아
결국 우리가 사용해야 하는 데이터는 일반건강검진과 KNHANES가 일치되는 피처야,
그밖의 KNHANES 설문 데이터는 사용자에게 직접 설문 문항으로 받아서 넣을 수 있고
이렇게 “무슨 뜻이야?”를 계속 던지니, AI가 단계별로 풀어줬습니다. 그리고 중요한 원칙 하나가 정리됐어요.
우리가 쓸 수 있는 입력값 = (일반 건강검진에도 있고 + 조사 데이터에도 있는) 공통 항목 + 앱에서 사용자가 직접 답하는 설문
서비스에서 실제로 받을 수 없는 값을 학습에 쓰면 안 된다는, 당연하지만 놓치기 쉬운 원칙이죠.
💡 모델이 학습에 쓰는 값은, 실제 서비스에서도 받을 수 있는 값이어야 합니다. 그래야 현장에서도 똑같이 작동해요.
6) 결론 — 의미 있는 예측으로 다시 세우기
토론 끝에, 예측의 ‘정답’을 한 가지가 아니라 세 가지로 나눠서 잡기로 했습니다. 콩팥 기능 수치 자체를 맞히기, 위험군 여부 맞히기, 그리고 더 넓은 콩팥병 여부 맞히기. 그리고 관련 연구 논문을 조사해 근거를 보강하고, 모델링 전략 문서와 프로젝트 정리본·요구사항·시장 전략을 CKD 기준으로 전면 갱신했습니다.
하루 만에 프로젝트의 **심장(무엇을 예측할 것인가)**이 바뀐 셈인데, 신기하게도 불안하지 않았어요. “왜 바꿨는지”가 명확했고, 그 근거가 전부 기록에 남았으니까요.
💡 큰 방향을 바꿀 땐 “왜”를 기록하세요. 근거가 남으면 나중에 흔들리지 않습니다.
✅ 결과 (After)
Before vs After
| 항목 | Before | After |
|---|---|---|
| 예측 대상 | 고혈압·당뇨 (라벨 누수) | 만성콩팥병(CKD) — 의학적으로 의미 있는 예측 |
| 예측의 가치 | ”답 보고 답 맞히기” | 평소 모르고 지나치는 위험을 미리 알림 |
| 타겟 | 전 연령 | 40대 이상 (고령화 + 잠재 위험군 30%) |
| 사실 정확성 | AI 자문 답변 일부 오류 | 공식 출처로 교차 검증·정정 |
| 문서 | 고혈압·당뇨 기준 | CKD 기준으로 전면 갱신 (정리본·요구사항·전략) |
결과물
- 모델링 전략 v1.1 (CKD) — 정답을 세 갈래로 나눈 설계 + 연구 논문 근거
- 프로젝트 정리본 v0.3 / 요구사항 v0.3 / 시장 전략 v0.5 — CKD 기준 전면 갱신
- 검증된 사실 기록 — 검진 항목 진실 + 서비스-학습 데이터 일관성 원칙
💬 이 과정에서 배운 AI 활용 팁
효과적이었던 것
- “이거 의미가 있어?”라는 본질 질문을 던져라 — 작업을 시작하기 전에 “이게 진짜 가치 있나?”를 AI와 점검하면, 헛수고를 미리 막습니다.
- 용어를 몰라도 “무슨 뜻이야?”를 끝까지 물어라 — 저는 ‘라벨’, ‘회귀’ 같은 용어를 몰랐지만, 계속 물으니 본질이 잡혔어요. 모르는 걸 부끄러워하지 마세요.
- AI 답변을 공식 출처로 교차 검증하라 — “이거 진짜 맞아? 공식 페이지로 확인해줘”라고 하면, AI가 직접 확인해 잘못을 바로잡습니다.
- 방향을 바꿀 땐 “왜”를 기록하라 — 큰 결정일수록 근거를 남기면, 나중에 흔들리지 않고 팀과 심사위원에게 설명할 수 있습니다.
이렇게 하면 안 돼요
- AI 전문가 기능의 답을 곧이곧대로 믿지 마세요 — 그럴듯해도 틀릴 수 있습니다. 특히 의료·법률·금융 같은 분야는 반드시 공식 출처를 확인하세요.
- 예측 문제에 ‘답이 입력에 섞여 있는지’ 의심을 거르지 마세요 — 라벨 누수는 모델 성능이 너무 좋게 나올 때 오히려 의심해야 합니다.
- 공공·외부 데이터를 “깔끔할 것”이라 가정하지 마세요 — 연도마다 항목 이름이 바뀌는 등 함정이 많습니다.
🌍 다른 업무에 적용한다면?
- 채용 합격 예측: 입력에 ‘최종 면접 점수’가 들어가 있으면 라벨 누수입니다. 합격 결과가 이미 그 점수로 정해지니까요.
- 금융 부도 예측: ‘연체 횟수’로 ‘부도’를 예측하면 누수에 가깝습니다. 결과가 원인에 섞인 셈이죠.
- 어떤 예측이든: “이 정답을, 입력값만 보고 사람이 거의 알 수 있나?”를 자문하세요. 답이 YES라면 그 예측은 의미가 약합니다.
🚀 앞으로의 계획
방향(무엇을 예측할지)은 잡혔습니다. 하지만 아직 기획서는 앙상한 뼈대일 뿐이었어요.
다음 편(4편)에서는 이 뼈대에 살을 붙입니다. 사용자가 매일 들어오고 싶게 만드는 게임화 요소 — 콩팥 건강을 키우는 ‘헬스 알’ 캐릭터와 생활습관 챌린지로 기획을 살찌운 이야기를 풀어볼게요. 그리고 이때부터 제 담당이 될 ‘RAG’라는 완전히 새로운 기술(자료를 찾아 근거로 답하는 방식)을, 용어 하나하나 분해해 본질부터 공부하기 시작한 과정도 함께 담겠습니다.
📋 재사용 가능한 프롬프트
프롬프트 1: 예측 과제의 ‘라벨 누수’ 점검
내가 [무엇]을 예측하는 모델을 만들려고 해. 입력값은 [입력 목록], 정답(라벨)은 [정답 정의]야. 이 설계에 라벨 누수(정답이 입력에 섞여 있는 문제) 위험이 있는지 점검해줘. 누수가 있다면 어떤 입력을 빼야 하는지, 또는 예측 대상을 어떻게 바꾸면 의미 있는 예측이 되는지 제안해줘.
프롬프트 2: AI 답변을 공식 출처로 교차 검증
방금 네가 말한 [내용]이 정말 맞는지 의심돼. 공식 기관(정부·학회 등)의 공개 페이지를 직접 확인해서 사실인지 검증하고, 틀렸다면 정확한 내용으로 정정해줘. 출처 링크도 같이 알려줘.
프롬프트 3: 용어를 몰라도 본질부터 이해하기
나는 [이 분야]가 처음이라 [용어]가 무슨 뜻인지 몰라. 전문 용어 대신 일상 비유로 본질부터 설명해줘. 내가 “그럼 이건 왜 그래?”라고 계속 물으면, 그때마다 한 단계씩 더 깊이 풀어줘.
📌 「AI 헬스케어 파이널 프로젝트」 연재 3편입니다. 다음 막에서 또 이어집니다.