콘텐츠로 이동

P3-4.4 샘플 단위를 잘못 잡았다는 신호는 무엇인가

Section ID: P3-4.4 Version: v2026.09.19

같은 라벨이 여러 행에 보인다고 곧바로 샘플(sample) 단위가 틀린 것은 아닙니다. 동작 결과를 각 시점 기록에 연결해 둔 표일 수 있습니다. 경고는 원래 대상과 계산 범위를 확인하라는 신호이며, 데이터 오류나 설비 고장의 확정 판정이 아닙니다.

앞 절에서는 같은 자료가 시점·동작·구간 표로 바뀌는 과정을 보았습니다. 이번에는 표의 단위를 잘못 읽었는지 확인할 근거와, 확인 뒤 고쳐야 할 부분을 구별합니다.

신호를 발견한 뒤 확인할 대상

보이는 신호 먼저 확인할 것 확인 뒤 가능한 판단
같은 사건에 같은 라벨이 반복됨 라벨이 시점에 붙는가, 동작 전체에 붙는가 의도한 반복 저장일 수도 있고, 사건 수를 행 수로 센 집계 오류일 수도 있음
한 행만으로 평균·기울기를 설명할 수 없음 계산에 사용한 사건·관측 구간·단위 여러 관측으로 계산한 특징을 행에 연결한 것이라면 가능함
“이번 한 건”의 뜻이 불분명함 문장이 시점·동작·구간 중 무엇을 가리키는가 비교 대상과 표의 단위가 맞는지 다시 확인
같은 사건이 학습·평가 양쪽에 있음 새 사건 성능을 보려는가, 이미 본 사건의 다른 시점을 보려는가 새 사건 성능을 평가하려면 사건별로 분리해야 함

flow_mean이라는 이름만으로는 동작 평균인지 최근 구간 평균인지 알 수 없습니다. 이름과 함께 계산 대상을 적어야 합니다. duration_seconds도 시작·종료 경계가 있어야 동작 길이로 해석할 수 있습니다. 아래 자료에서 A의 마지막 관측은 17초이지만, 종료 표시가 없으므로 이를 완결된 동작 길이로 단정하지 않습니다.

여러 관측으로 계산한 값이 시점 행에 저장되어 있다는 사실 자체는 오류가 아닙니다. 그 값의 계산 구간과 사용 시점이 질문에 맞는지를 봐야 합니다. 예를 들어 동작 종료 뒤에야 계산되는 전체 평균을 동작 도중의 예측 입력으로 사용할 수는 없습니다.

양성 행 18개와 양성 동작 1건

가상 원시 로그 CSV는 36개 시점 기록을 담습니다. event_id는 동작, second는 동작 시작 후 경과 초, flow는 L/min 단위 유량입니다. 이 연습에서 review_needed는 동작 전체에 부여한 가상 라벨로, 1은 검토 대상, 0은 검토 대상으로 표시하지 않았다는 뜻입니다. 실제 고장 정답이나 시점별 고장 판정이 아닙니다.

각 사건의 라벨이 모두 일치하는지 확인한 뒤, 행 수와 라벨 합을 비교하면 다음과 같습니다.

event_id 시점 행 수 행에 반복된 라벨 행별 라벨 합 동작당 한 번 센 검토 대상 수
A 18 1 18 1
B 9 0 0 0
C 6 1 6 1
D 3 0 0 0
합계 36 — 24 2

A의 18행에서 1을 더하면 18입니다. 그러나 모두 같은 동작 A의 라벨을 복사한 것이므로 검토 대상 동작은 A 한 건입니다. 전체도 18 + 6 = 24개의 양성 행과 A·C 두 동작으로 나뉩니다. “검토 대상 동작이 24건이다”라고 보고하면 집계 단위를 잘못 읽은 것입니다.

분모도 함께 보세요. 양성 행 비율은 24/36 ≈ 66.7%, 검토 대상 동작 비율은 2/4 = 50%입니다. 둘은 다른 질문의 답입니다. 행 비율에서는 관측이 많은 A가 D보다 여섯 배 많은 행을 차지합니다. 어느 비율도 여기서 모델 정확도나 고장 확률을 뜻하지 않습니다.

B와 D는 라벨 합이 0이지만 0도 각각 9행·3행에 반복됩니다. 따라서 라벨 합만 보고 “반복이 없다”고 판단하면 음성 라벨의 반복을 놓칩니다. 같은 라벨의 반복 여부는 사건별 행 수와 라벨 값의 일관성을 함께 봐야 합니다.

경고 기준을 바꾸면 어떤 사건이 남는가

자료를 직접 펼쳐 네 사건의 행 수를 센 다음, repeat_warning_threshold를 바꿔 보세요. 이 연습의 규칙은 라벨이 일치하는 사건에서 행 수 > 기준값이면 단위 점검 대상으로 표시한다입니다. 기준값은 반복 저장을 살펴볼 대상을 고르는 가상 규칙이며, 고장 임계값이나 표준 품질 기준이 아닙니다. 행 수는 첫 행을 포함한 전체 수입니다.

repeat_warning_threshold 점검 대상 event_id 대상 동작 수
1 A, B, C, D 4
3 A, B, C 3
9 A 1
18 없음 0

기준을 1에서 3으로 올리면 D가 빠집니다. D의 행 수 3은 기준과 같으므로 3 > 3을 만족하지 않습니다. 기준 9에서는 B도 같은 이유로 빠지고 A만 남습니다. 기존처럼 “대상이 하나라도 있는가?”만 표시하면 기준 1·3·9가 모두 yes이므로, 목록과 건수를 함께 읽어야 변화가 보입니다.

기준 18에서 경고가 사라져도 원시 표와 라벨은 변하지 않았습니다. 검토 대상 동작은 여전히 A·C 두 건입니다. 단위 점검 대상 수와 라벨이 가리키는 검토 대상 수는 서로 다른 수입니다. 경고를 줄이는 조작이 자료 오류를 해결했다는 뜻도 아닙니다.

라벨 불일치는 합치기 전에 확인한다

이번에는 A의 18행 중 한 행만 review_needed=0으로 바뀌었다고 가정해 보세요. 행별 합은 17이 되지만, 동작 A의 라벨은 0과 1로 충돌합니다. 동작당 한 라벨이라는 현재 설정에서는 이 상태를 먼저 확인해야 합니다. 반복 경고 기준을 높여도 충돌은 해결되지 않습니다.

이때 max()로 1을 고르거나 첫 행 값만 남기면 불일치가 가려집니다. 원래 라벨 기록과 연결 기준을 확인하고, 수정 전·후 기록이 섞였는지, 시점별 판정을 동작 라벨로 오해했는지 구별해야 합니다. 확인 전에는 A의 동작 라벨을 확정하지 않습니다. 반대로 실제로 시점마다 달라지는 라벨이라면 동작 안에서 서로 다른 값이 나오는 것이 허용될 수 있습니다.

신호에서 집계 규칙 점검으로 돌아가기

아래 도식은 반복 저장을 발견했을 때의 판단 순서입니다. 먼저 라벨의 대상과 일관성을 확인한 뒤, 보고하려는 건수의 단위를 맞춥니다.

flowchart TD
    A["반복 저장 발견"] --> B["라벨 대상과 범위 확인"]
    B --> C{"동작당 한 라벨인가?"}
    C -->|아니오| D["해당 대상의 라벨 정의 확인"]
    C -->|예| E{"동작 안의 라벨이 일치하는가?"}
    E -->|아니오| F["원래 기록과 연결 기준 확인"]
    E -->|예| G["질문에 맞게 집계·분할 단위 확인"]

마지막 연습으로 “기준 3에서 경고가 3건이므로 고장 동작이 3건이다”를 고쳐 보세요. 답은 “A·B·C 세 동작이 반복 저장 단위 점검 대상으로 선택되었다. 원래 검토 라벨이 1인 동작은 A·C 두 건이며, 고장 여부는 이 자료만으로 확정할 수 없다”입니다.

체크리스트

  • A의 양성 행 18개를 검토 대상 동작 1건으로 설명할 수 있는가?
  • 24/36과 2/4의 분자·분모가 무엇인지 구별하는가?
  • 기준 1→3에서 D가 빠지는 이유와 18에서 경고가 사라져도 달라지지 않는 사실을 말할 수 있는가?
  • 라벨 합이 0인 B·D에도 반복 저장이 있다는 것을 확인했는가?
  • 라벨 불일치를 임의로 합치지 않고 원래 대상·기록을 확인하는가?
  • 단위 점검 대상, 검토 라벨, 설비 고장을 구별하는가?

출처와 참고 자료

  • Google for Developers, Machine Learning Glossary: label. 라벨의 일반 의미를 확인하는 자료입니다. 이 절의 review_needed 의미와 반복 점검 규칙은 자체 가상 사례의 설정입니다. / 확인일: 2026-09-19
  • scikit-learn developers, Cross-validation for grouped data. 학습에서 보지 못한 그룹을 평가할 때 같은 그룹을 양쪽에 섞지 않는 분할의 근거입니다. 반복 저장 자체를 오류로 판정하는 근거는 아닙니다. / 확인일: 2026-09-19