콘텐츠로 이동

5-1. 입력 분포가 달라졌는지 확인하기

기존 운영 모델의 high_risk 예측 비율이 갑자기 늘었다고 해서 모델이 고장났다고 결론낼 수는 없습니다. 모델에 들어온 값의 범위와 구성이 달라져도 같은 현상이 나타날 수 있으므로, 후보 교체에 관한 운영 판단을 확정하기 전에 입력 분포(input distribution)부터 확인해야 합니다.

이 실습에서는 정답이 없는 운영 요청 표본 100건을 기준 조건과 current-shift 조건으로 나누어 비교합니다. 같은 레코드에 정해진 변환만 적용하므로, 어떤 입력이 어느 방향으로 달라졌는지 분명하게 볼 수 있습니다.

이 실습에서 결론낼 수 있는 범위

  • 기준과 변화 조건에서 어떤 특성의 분포가 달라졌는지 확인합니다.
  • 그 결과로 입력 조건이 달라졌을 가능성이 커졌는지 작아졌는지 판단합니다.
  • 대상 환경의 실제 요청, 모델 성능 저하, 단일 원인은 이 실습만으로 확정하지 않습니다.

교육용 데이터

이 과정의 생체신호 관측 데이터는 실제 의료 판단이나 조언에 사용하지 않습니다. In-hospital_death는 교육용 위험도 분류의 정답으로만 다루며, 운영 요청 표본에는 이 정답을 포함하지 않습니다.

6교시 조사 흐름

5교시에 정한 팀 수집 기록의 절대 UTC 범위를 복원하고, 같은 6교시의 요청 단위 조사에서 대시보드 자료의 요청, 오류, 지연, 점수, 예측 신호를 먼저 비교합니다. 이 페이지는 그 조사에서 “입력 조건 변화” 가설을 확인하는 보조 읽기입니다. 트래픽을 다시 보내거나 조회 범위를 새로 고르지 않습니다.

실습 목표와 준비 자료

이번 실습의 목표는 예측 비율을 해석하기 전에 입력에서 먼저 확인할 항목을 익히는 것입니다. 수강생은 기준 요청과 변화 조건의 행 수, 결측 수, 평균, 중앙값을 비교하고, 그 결과가 강화하는 원인 후보와 아직 모르는 것을 구분합니다.

입력 분포는 한 특성의 평균 하나만으로 판단하지 않습니다. 관측 행 수가 다르면 평균의 분모도 달라지고, 극단값이 있으면 평균만 크게 움직일 수 있으므로 중앙값과 결측 수를 함께 봅니다. 실제 업무에서는 사분위수와 구간별 빈도도 추가할 수 있습니다.

실습 자료는 현재 운영 요청과 같은 열 구조를 가진 operational.csv, 요청 변화 조건을 정의한 scenarios.yaml, 5교시 팀 수집 기록입니다. 운영 요청 표본에는 target이 없어야 하며, 이 자료로 재현율이나 정밀도를 새로 계산해서는 안 됩니다.

실행 전에 다음을 확인합니다.

  • operational.csv에 target이 없는지
  • 기준·변화 조건이 같은 레코드 100건에서 시작하는지
  • 평균뿐 아니라 관측 행 수, 중앙값, 결측 수를 함께 기록할지
  • 5교시 팀 수집 기록에 유형, 환경, 모델 정보, baseline·current-shift 실행 ID와 절대 UTC 범위가 있는지
자료 확인할 내용 이 자료의 범위
data/splits-v2/operational.csv 레코드 수 100건, 특성 열, 결측, target 부재 V2 요청을 만들기 위한 정답 없는 표본
configs/traffic/scenarios.yaml current-shift에서 바꾸는 특성과 계산 규칙 교육 시나리오에서 의도한 입력 변화
labs/chapters/ch05/00_compare_input_distributions.ipynb 기준 조건과 변화 조건의 요약 통계 로컬에서 재현한 입력 분포 비교
5교시 팀 수집 기록 환경, 모델 정보, 실행 ID, 절대 UTC 범위, live/offline 구분 6교시 대시보드 조회를 같은 자료로 복원

표에 적힌 경로는 모두 tta-aiqa 저장소 루트를 기준으로 합니다. 입력 비교 노트북은 현재 PC에서 계산하므로 scope=local이고, 준비된 운영 표본을 사용하므로 provenance.source_kind=course_prepared_dataset입니다. 5교시 팀 수집 기록이 live target 또는 PREPARED/OFFLINE이더라도 이 노트북 결과까지 같은 범위로 넓히지 않습니다.

이 페이지의 통제된 로컬 100건은 입력 변화 규칙을 확인하는 별도 자료입니다. 첫째 날 출발 신호의 100건이나 5교시 팀 수집 기록의 baseline 60건, current-shift 60건, invalid 3건과 같은 분모로 합치지 않습니다.

먼저 예상하기

실행 전에 다음 질문에 답합니다. 정답을 맞히기보다, 어떤 결과가 나오면 자신의 설명을 바꿀지 적는 활동입니다.

  • 같은 100건에서 네 특성만 바뀐다면 high_risk 증가를 모델 결함보다 입력 조건 변화로 먼저 조사할 수 있는가?
  • 평균은 달라지지만 중앙값이 거의 같다면 분포가 달라졌다고 말하기에 충분한가?
  • target이 없는 표본에서 새 재현율을 계산할 수 있는가?

예상 문장: “current-shift에서 [특성]의 [평균/중앙값/결측 수]가 [방향]으로 바뀔 것으로 예상합니다. 이 결과만으로 [아직 모르는 것]은 판단하지 않습니다.”

실행하고 관측하기

노트북은 Pandas로 운영 요청 표본을 읽고, current-shift에 선언된 네 가지 변환을 적용합니다. 같은 100개 레코드를 유지하면서 age, heart_rate__mean, lactate__last, gcs__min만 바뀌는지 검사합니다.

다음 명령은 원본 노트북을 덮어쓰지 않고 실행 결과를 /tmp에 만듭니다. 명령이 끝나면 다음 순서로 확인합니다.

  1. target_present=False, rows=100인지 확인합니다.
  2. 실제로 바뀐 열과 설정에 선언한 네 열이 같은지 확인합니다.
  3. 특성별 관측 행 수, 평균, 중앙값을 기준·변화 조건으로 나란히 기록합니다.
uv run jupyter nbconvert --to notebook --execute \
  labs/chapters/ch05/00_compare_input_distributions.ipynb \
  --output /tmp/ch05-input-distribution.ipynb \
  --ExecutePreprocessor.timeout=120

정상적으로 실행되면 target_present=False, rows=100이 나오고 바뀐 열은 네 개뿐입니다. 기준·변화 조건의 요약 통계는 다음과 같습니다. 결측이 있는 특성은 관측 행 수가 100보다 작다는 점도 함께 기록합니다.

특성 관측 행 수 기준 평균 변화 조건 평균 기준 중앙값 변화 조건 중앙값
age 100 68.870 76.870 72.500 80.500
heart_rate__mean 97 88.903 103.903 87.630 102.630
lactate__last 55 1.916 2.874 1.600 2.400
gcs__min 97 8.670 7.268 8.000 6.000

예상값과 다르다면 먼저 데이터 경로, 시나리오 설정, 바뀐 열 목록을 확인합니다. 값이 다르다는 이유만으로 기대값에 맞춰 코드를 고치지 말고, 사용한 파일의 개정본과 실행 시각을 기록한 뒤 원인을 찾습니다.

관측을 해석하기

네 특성의 평균과 중앙값이 설정한 방향으로 움직였다는 사실은 입력 조건이 달라졌을 가능성을 높입니다. 다만 이 결과는 준비된 표본에 변환을 적용한 로컬 실습이므로, 실제 운영 환경에서도 같은 변화가 있었는지는 아직 모릅니다.

입력 분포 변화는 데이터 드리프트(data drift)의 신호가 될 수 있지만, 곧바로 모델 드리프트(model drift)를 뜻하지는 않습니다. 모델 드리프트는 입력과 정답의 관계 또는 모델 성능이 달라진 상태를 가리키며, 이를 판단하려면 신뢰할 수 있는 정답과 같은 평가 조건이 필요합니다.

개인 관찰 기록에는 다음 구조로 근거의 범위를 드러내어 씁니다. 5교시 팀 수집 기록의 관측과 개인이 실행한 로컬 입력 비교는 출처와 범위를 나누어 적습니다.

  • 관측: 로컬 운영 표본의 current-shift 조건에서 네 특성의 분포가 변했습니다.
  • 해석: 입력 조건이 달라졌을 가능성이 커졌습니다.
  • 한계: 대상 환경의 실제 요청과 정답을 확인하지 못했으므로 원인과 모델 성능 변화는 확정하지 않습니다.
  • 다음 확인: 같은 모델·임계값·시간대에서 점수와 예측 분포를 비교합니다.
확인 결과 원인 후보에 미치는 영향 아직 모르는 것 다음에 필요한 근거
설정한 네 특성만 변화 입력 조건이 달라졌을 가능성이 커짐 실제 운영 요청도 같은 조건인지 대상 환경의 시간대별 입력 요약과 요청 기록
결측이 있는 특성의 관측 행 수 확인 분모 차이에 따른 오해 방지 결측 자체가 예측 비율 증가의 원인인지 결측 비율의 기준 기간 비교
운영 표본에 target이 없음 정답 없는 운영 관측임을 확인 새 재현율, 정밀도, 미탐 수 지연 정답 또는 별도의 평가 자료

이 표의 마지막 열이 같은 6교시의 다음 확인으로 이어집니다. 5교시 팀 수집 기록에서 복원한 같은 모델 정보와 절대 UTC 범위를 유지한 채 5-2 점수와 예측 분포에서 점수 분포와 최종 예측 분포를 연결해야 입력 변화가 모델 출력에 어떻게 이어졌는지 설명할 수 있습니다.

기록할 한 문장

V2 운영 표본 100건을 같은 행 구성으로 비교한 결과, current-shift에서 선언한 네 특성의 분포가 바뀌었습니다. 이 로컬 결과로 입력 조건 변화 가능성은 커졌지만, 대상 환경의 실제 요청과 정답은 확인하지 못했으므로 모델 성능 저하와 단일 원인은 판단하지 않았습니다.

이 문장은 개인 관찰 기록에 요약합니다. 5교시 팀 수집 기록 자체를 개인 산출물처럼 복사하지 말고, 유형과 식별값, 자신이 해석한 관측·한계·다음 질문을 남깁니다.

막히면 확인할 점

다음 상황에서는 결과를 추정하지 말고 범위를 줄입니다.

  • 파일을 찾지 못했거나 열 구조가 다르면: 저장소 루트, 데이터 준비 절차, 분할 개정본을 확인합니다.
  • target_present=True이면: 운영 요청 표본이 아니므로 파일 경로를 바로잡고 평가 데이터와 섞지 않습니다.
  • 바뀐 열이 네 개보다 많으면: 레코드 정렬과 복사 과정을 확인합니다.
  • 해결하지 못하면: 파일 경로, 오류 메시지, 예상과 달랐던 열, 담당 팀을 기록합니다.