P3-4.3 시점 기록, 동작 샘플, 구간 집계는 어떻게 다른가¶
Section ID:
P3-4.3Version:v2026.09.19
샘플(sample)은 현재 질문에서 비교하는 한 건입니다. 행은 표의 저장 형식이므로 시점 기록, 동작 요약, 구간 집계 모두 한 행으로 저장할 수 있습니다. 앞 절에서 분할과 채점의 단위를 구별했듯이, 이번에는 같은 기록을 묶을 때 한 행의 뜻이 어떻게 바뀌는지 봅니다.
시점 기록 9행은 동작 3건을 담는다¶
다음은 직접 만든 가상 유량 기록입니다. event_id는 동작 식별자, second는 각 동작 시작 후 지난 초, flow는 L/min 단위 유량입니다. 이 작은 표에서는 (event_id, second)의 조합으로 관측 행 하나를 찾습니다. 다른 동작의 second=1을 같은 시각으로 읽으면 안 됩니다.
| event_id | second | flow |
|---|---|---|
| A | 0 | 0.8 |
| A | 1 | 1.5 |
| A | 2 | 1.1 |
| B | 0 | 0.7 |
| B | 1 | 1.2 |
| B | 2 | 1.0 |
| C | 0 | 0.9 |
| C | 1 | 1.6 |
| C | 2 | 1.2 |
A, second=1의 1.5는 A의 한 시점 값입니다. 이 행만으로 A 전체의 평균이나 최대값을 알 수 없습니다. “A 동작의 평균 유량은 얼마인가?”라는 질문에서는 A의 세 행이 동작 샘플 한 건의 재료가 됩니다.
동작별 평균을 구한 뒤 구간별로 다시 묶는다¶
먼저 같은 event_id의 관측을 모아 평균과 최대값을 구합니다. 이번 사례에서는 별도의 구간 배정으로 B를 과거 기준 구간 baseline, A·C를 최근 구간 recent에 둡니다. 이 배정은 설명을 위한 설정이며, 위 표의 경과 초나 알파벳 순서에서 알아낸 시간 순서가 아닙니다. 실제 자료에서는 구간의 시작·끝 또는 포함 사건 목록을 남겨야 합니다.
| event_id | point_count | event_flow_mean | event_flow_max | window |
|---|---|---|---|---|
| A | 3 | 1.133333 | 1.5 | recent |
| B | 3 | 0.966667 | 1.2 | baseline |
| C | 3 | 1.233333 | 1.6 | recent |
이 표의 한 행은 동작 1회이고 식별자는 event_id입니다. event_flow_mean은 그 동작 안의 유량 관측값을 평균한 것입니다. A는 (0.8 + 1.5 + 1.1) ÷ 3 = 3.4 ÷ 3 ≈ 1.133333 L/min입니다. 최대값 1.5도 같은 세 관측에서 고릅니다. 이런 요약값은 동작 비교에 쓰는 특징(feature)이 될 수 있지만, 시점별 변화 순서를 모두 보존하지는 않습니다.
이제 같은 window에 속한 동작 요약 행을 모읍니다. 구간 평균은 동작별 평균을 하나씩 가져와 다시 평균하며, 동작마다 같은 비중을 줍니다.
| window | member_events | event_count | window_flow_mean |
|---|---|---|---|
| baseline | B | 1 | 0.966667 |
| recent | A, C | 2 | 1.183333 |
이 표의 한 행은 구간 1개이고 이 사례의 식별자는 window입니다. 최근 구간은 (A의 평균 + C의 평균) ÷ 2 = (3.4/3 + 3.7/3) ÷ 2 ≈ 1.183333 L/min입니다. 첫 평균의 분모 3은 관측 수, 두 번째 평균의 분모 2는 동작 수입니다. 표에는 소수 여섯 자리로 표시했지만 계산은 반올림 전 값으로 합니다.
여기서는 모든 동작의 관측 수가 3으로 같아서, 최근 구간의 원시 관측 6개를 바로 평균해도 같은 값이 나옵니다. 관측 수가 다르면 두 계산이 달라질 수 있습니다. 그 가중치 차이는 P3-5.1에서 다루며, 여기서는 event_flow_mean과 window_flow_mean이 무엇을 모아 계산했는지를 구별합니다.
기준 구간 B 한 건은 계산 구조를 보여 주기 위한 비교 대상입니다. 이 한 건만으로 평소 상태를 충분히 대표한다고 판단할 수 없습니다. 최근 평균이 약 0.216667 L/min 높다는 관찰도 곧바로 상태 악화나 고장을 뜻하지 않습니다.
집계 행에서 원래 기록으로 돌아가기¶
최근 구간 평균을 확인하려면 recent → A·C → 각 동작의 0·1·2초 기록으로 거슬러 갑니다. 도식의 화살표는 계산 방향입니다. 결과를 검토할 때는 화살표 반대 방향으로 구성 사건과 관측을 찾습니다.
flowchart TD
A["A: 관측 3개"] --> AM["동작 A<br/>평균 1.133333"]
B["B: 관측 3개"] --> BM["동작 B<br/>평균 0.966667"]
C["C: 관측 3개"] --> CM["동작 C<br/>평균 1.233333"]
AM --> R["recent: A, C<br/>평균 1.183333"]
CM --> R
BM --> P["baseline: B<br/>평균 0.966667"]
따라서 같은 자료가 시점 표 9행, 동작 표 3행, 구간 표 2행으로 표현됩니다. 숫자가 줄었다고 원래 사건이 사라진 것은 아닙니다. 다만 평균만 남기고 원시 기록과 연결을 버리면 원래 변화 모양을 복원할 수 없습니다. 실제로 여러 기간을 쌓는 표에서는 recent라는 역할 이름만 반복하지 말고 서로 다른 구간을 식별할 ID와 구성 범위를 남깁니다.
질문을 바꾸면 구간도 샘플이 된다¶
“이번 동작은 다른 동작과 어떻게 다른가?”에서는 동작 1회가 샘플입니다. 반면 “최근 20회 동작을 묶은 구간은 이전 20회 구간과 평균 유량이 얼마나 다른가?”에서는 구간 하나를 비교 샘플로 삼을 수 있습니다. 이때 event_count와 window_flow_mean은 구간을 설명하는 값입니다. 샘플을 동작에만, 특징을 동작 요약에만 고정할 이유는 없습니다.
위 작은 사례의 최근 구간에는 실제로 A·C 두 건만 있습니다. “최근 20건”이라는 질문을 만들었다고 이 표가 20건의 근거를 제공하지는 않습니다. 구간을 한 샘플로 세어도 포함 사건 수는 별도로 남깁니다.
구간 배정을 바꾸어 계산 대상 확인하기¶
C를 recent에서 baseline으로 옮긴다고 가정하고, 시점·동작·구간 표의 행 수와 두 구간의 평균을 먼저 적어 보세요. 원시 관측값은 바꾸지 않습니다.
답은 9행·3동작·2구간 그대로입니다. 최근 구간은 A만 남아 1.133333, 기준 구간은 B·C의 평균을 다시 평균하여 (2.9/3 + 3.7/3) ÷ 2 = 1.1 L/min이 됩니다. A·B·C 각각의 평균은 그대로지만, 구간의 구성과 평균은 달라집니다. 구간 평균을 읽을 때 구성 사건을 함께 확인해야 하는 이유입니다.
이번에는 C의 세 관측을 자료에서 모두 제외해 보세요. 6행·2동작·2구간이 되고 최근 구간 평균은 A의 1.133333입니다. 첫 연습과 최근 평균이 같아도, 첫 연습에서는 C가 기준 구간에 있고 이번에는 어느 구간에도 없습니다. 평균 하나만 보고 자료의 포함 범위를 알아낼 수는 없습니다.
체크리스트¶
- 시점 표의
(event_id, second), 동작 표의event_id, 구간 표의window로 각각 무엇을 찾는지 설명할 수 있는가? - A의 평균에서 나누는 3과 최근 구간 평균에서 나누는 2의 뜻을 구별하는가?
recent의 1.183333을 A·C의 원래 여섯 관측에 연결할 수 있는가?- C의 구간 이동과 자료 제외가 행 수·평균·포함 사건을 어떻게 바꾸는지 설명할 수 있는가?
- 구간 자체를 샘플로 삼는 질문을 만들고 실제 포함 사건 수를 별도로 적었는가?
출처와 참고 자료¶
- W3C, PROV-Overview. 자료가 만들어진 과정과 파생 관계를 기록하는 일반 근거입니다. 이 절의 세 표와 수치는 자체 가상 사례이며 W3C가 정한 세 단계 분류가 아닙니다. / 확인일: 2026-09-19
- Google for Developers, Machine Learning Glossary: example. example은 특징으로 표현되는 한 사례이며 라벨이 있을 수도 없을 수도 있습니다. 이 절의 동작·구간 선택은 질문에 맞춘 사례 설정입니다. / 확인일: 2026-09-19