P3-2.2 데이터셋 후보 안에는 어떤 구조가 들어가는가¶
Section ID:
P3-2.2Version:v2026.09.19
앞 절에서 본 것처럼 저장된 데이터셋도 현재 질문에 맞는 재구성이 필요할 수 있습니다. 그렇다면 질문은 곧바로 이어집니다. 데이터셋 후보(dataset candidate)를 다시 만든다면 그 안에는 어떤 구조가 들어가야 하는가 하는 질문입니다. Part 3에서는 이 질문에 답하기 위해 샘플(sample), 특징(feature), 기준선(baseline), 출력 구조(output structure)를 함께 봅니다. 이 용어들은 각각 따로 외우는 목록보다, 하나의 데이터셋 설계 구조로 읽어야 더 정확합니다. 무엇을 한 건의 샘플로 볼지 정해야 특징을 만들 수 있고, 특징이 있어야 무엇을 기준선과 비교할지 정할 수 있으며, 그 비교가 있어야 어떤 출력 구조를 만들 것인지도 결정할 수 있습니다.
이 절에서 특히 중요한 것은 타깃(target)으로 바로 굳히기 전의 출력 구조를 검토용 결과와 예측용 목표 후보를 가르는 문제 설계 축으로 읽는 일입니다. 데이터셋 후보를 하나의 표 이름이 아니라 몇 가지 연결된 구조로 읽어야 하는 이유도 여기에 있습니다. 무엇을 샘플로 잡는지, 어떤 특징을 남기는지, 무엇을 기준선과 비교하는지, 어떤 출력 구조로 끝나는지가 함께 정해져야 비로소 데이터셋 후보의 뜻이 선명해집니다.
아래 네 요소는 이 책의 상태 비교 사례를 설계하는 틀입니다. 모든 데이터셋에 기준선 열과 출력 열이 있어야 한다는 뜻은 아닙니다. 예를 들어 라벨 없는 이미지 모음에도 데이터셋이라는 말을 쓰며, 특징은 직접 측정한 값이나 범주일 수도 있어 반드시 요약 계산으로 만들어야 하는 것은 아닙니다.
동작 1회를 샘플로 보면, 그 동작의 측정 유량이나 운전 모드는 원래 기록에서 가져올 수 있고 평균·기울기는 기록에서 계산할 수 있습니다. 이 절에서는 유량의 평균과 마지막 구간 기울기를 특징으로 사용하고, 같은 조건의 과거 동작을 기준선으로 삼습니다. 출력은 정한 규칙에 따른 review 또는 no_flag이며, 실제 고장 여부를 확인한 라벨은 아닙니다.
이 관계를 표로 먼저 정리합니다.
| 구성요소 | 여기서 뜻하는 것 | 지금 단계에서 묻는 질문 |
|---|---|---|
| 샘플 | 비교나 학습의 기본 단위가 되는 한 건 | 무엇을 한 행으로 볼 것인가 |
| 특징 | 샘플을 나타내는 관측값·범주 또는 계산한 값 | 어떤 값을 남겨야 비교가 쉬운가 |
| 기준선 | 최근과 비교할 평소 구조 또는 기준 집단 | 무엇과 비교해야 변화가 보이는가 |
| 출력 구조 | 사람이 읽거나 모델이 이어받을 결과 형식 | 최종적으로 어떤 판단을 만들 것인가 |
이 네 가지를 한 번에 보면 데이터 모델링이 왜 단순 정리가 아닌지 드러납니다. 예를 들어 아직 샘플이 한 시점 측정값인지 동작 1회인지 정하지 않은 상태에서는 특징도 안정적으로 정할 수 없습니다. 시점별 표에 어울리는 특징과 동작 1회 표에 어울리는 특징은 다르기 때문입니다. 마찬가지로 기준선을 무엇으로 둘지 정하지 않으면 최근 구간 변화도 읽기 어렵습니다. 또 출력 구조가 검토 후보 생성인지 예측 라벨 출력인지 정해지지 않으면 어떤 비교가 필요한지도 모호해집니다.
즉 이 네 요소는 따로 외울 용어 목록이 아니라, 데이터셋 후보를 만드는 앞에서 뒤로 이어지는 설계 순서입니다. 샘플이 흔들리면 특징도 흔들리고, 특징이 흔들리면 기준선 비교도 흔들리고, 비교가 흔들리면 출력 구조도 흔들립니다. 그래서 이 절에서는 어떤 질문 순서로 서로 연결되는지를 먼저 고정합니다.
실제로는 아래 순서로 질문이 이어집니다.
- 지금 비교하려는 대상은 한 시점인가, 동작 1회인가, 최근 구간인가
- 그 대상을 설명하려면 어떤 값이나 범주를 남겨야 하는가
- 이 사례에서는 그 값을 무엇과 비교해 변화를 읽을 것인가
- 마지막 결과를 사람이 읽을 문장으로 낼지, 모델이 받을 라벨 후보로 낼지
이 네 질문은 각각 샘플, 특징, 기준선, 출력 구조에 대응합니다. 그래서 용어가 흐릿더라도 질문 순서를 따라가면 현재 어떤 데이터셋 설계 단계에 있는지 다시 확인할 수 있습니다.
아래 표는 뒤의 Python 예제와 같은 가상 CSV에서 계산한 최근 동작 R1·R2·R3입니다. 각 동작에는 0~5초의 유량 기록 6개가 있고, 마지막 구간은 모두 4~5초입니다. 유량과 평균의 단위는 L/min, 기울기와 기울기 차이의 단위는 L/min/s입니다. 표시는 소수 둘째 자리까지 반올림하지만 계산과 규칙 적용에는 반올림 전 값을 사용합니다.
| sample_id | mean_flow | late_drop_rate | baseline_mean_flow | baseline_late_drop_rate | baseline_gap | output |
|---|---|---|---|---|---|---|
| R1 | 0.83 | -0.32 | 0.94 | -0.05 | -0.27 | review |
| R2 | 0.90 | -0.08 | 0.94 | -0.05 | -0.03 | no_flag |
| R3 | 0.94 | -0.40 | 0.94 | -0.05 | -0.35 | review |
기준선 동작 B1·B2·B3의 마지막 기울기는 각각 −0.04, −0.06, −0.04 L/min/s입니다. 같은 조건의 평소 동작으로 가정한 이 세 값의 평균은 (-0.04−0.06−0.04)/3 = −0.046666… L/min/s이고, 표에서는 −0.05로 표시됩니다. 기준선 평균 유량도 세 동작의 평균 유량을 다시 평균한 값이며, 반올림하면 0.94 L/min입니다.
R1의 마지막 구간은 4초의 0.92에서 5초의 0.60 L/min으로 바뀝니다. 따라서 기울기는 (0.60−0.92)/(5−4) = −0.32 L/min/s입니다. 기준선 차이는 현재 기울기에서 기준선 기울기를 뺀 값입니다.
- 표시된 값으로 읽기:
−0.32−(−0.05) = −0.27 L/min/s - 반올림 전 계산:
−0.32−(−0.046666…) = −0.273333… L/min/s - 해석: 두 기울기 모두 하강을 나타내지만 R1이 평소 기준보다 약 0.27 L/min/s 더 가파르게 내려갑니다. 유량 자체가 음수라는 뜻이 아닙니다.
이 차이에 baseline_gap <= −0.20 L/min/s라는 가상 검토 규칙을 적용하면 R1·R3은 review, R2는 no_flag가 됩니다. 정확히 −0.20도 포함하므로 −0.21·−0.20·−0.19 가운데 앞의 두 값만 검토 대상입니다. no_flag는 이 규칙이 걸리지 않았다는 뜻이며 정상 확정이나 고장 없음 라벨이 아닙니다.
sample_id는 대상을 가리키고, mean_flow·late_drop_rate는 대상의 특징, baseline_gap은 비교 결과, output은 검토 규칙의 결과입니다. 검토 임계값을 바꾸어도 관측값이나 기울기·기준선 차이는 바뀌지 않습니다. 같은 숫자를 보고 사람이 무엇을 먼저 확인할지 정하는 정책이 바뀝니다. 이 절에서는 역할 표와 계산으로 이 차이를 읽고, 기울기의 시간축 모양은 앞 절의 차트와 연결합니다.
샘플·특징·기준선·출력의 연결¶
데이터셋 후보 안의 네 구조는 아래처럼 샘플 -> 특징 -> 기준선 비교 -> 출력 구조 순서로 맞물린다고 보면 한 번에 정리됩니다.
flowchart TD
A[무엇을 샘플 1건으로 볼지 정한다] --> B[그 샘플을 설명할 특징을 남긴다]
B --> C[그 특징을 기준선과 비교한다]
C --> D[출력 구조로 마무리한다]
D --> E[데이터셋 후보의 문제 형태가 선명해진다]
문제 상황: 동작 1회를 샘플 1건으로 잡은 뒤, 특징을 적고, 평소 기준선과 비교해, 마지막 운영 출력을 만드는 흐름을 표로 확인합니다.
입력(input): baseline 기간과 recent 기간이 함께 들어 있는 시점별 유량 로그 p3_2_2_event_flow_log.csv, 검토 후보로 보낼 기준 후보 review_gap_thresholds
입력 파일의 한 행은 한 샘플의 특정 초(second)에서 측정한 유량(flow)입니다. sample_id는 동작 1회를 가리키고, period는 그 샘플이 평소 기준선을 만들 baseline 구간인지 최근 비교 대상인 recent 구간인지를 구분합니다.
기대 출력(output): 원시 로그에서 샘플 행 -> 특징 표 -> 기준선 생성 -> 최근 샘플 비교표 -> 운영 출력이 만들어지고, review_gap_thresholds를 바꾸어 적용할 때 검토 후보 수가 달라지는 과정
확인할 개념: 출력 구조와 기준선은 미리 적어 둔 결과 열이 아니라, 원시 로그를 샘플 단위로 묶고 특징을 계산한 뒤 기간별 역할을 나누어 생성된다. 출력 기준을 여러 값으로 비교해야 운영 판단이 기준에 얼마나 민감한지 확인할 수 있다.
이 CSV의 각 동작은 결측 없이 1초 간격으로 측정되며, 기준선·최근 동작의 운전 조건이 같다고 가정합니다. 코드는 시간 간격을 확인한 뒤 마지막 두 유량값의 차이를 1초당 기울기로 사용합니다. 운전 조건의 일치 자체를 검증하는 자료는 이 CSV에 없으므로, 실제 데이터에서는 별도 확인해야 합니다.
예상 출력:
이 예제는 원시 로그에서 같은 행이 어떻게 단계적으로 데이터셋 후보 구조가 되는지 보여 줍니다. 처음에는 event_log에서 sample_id와 period를 기준으로 샘플 행을 잡고, 그다음 시점별 유량에서 mean_flow와 late_drop_rate를 계산합니다. 이어서 baseline 기간 샘플만으로 기준선을 만들고, recent 기간 샘플을 그 기준선과 비교합니다. 마지막 운영 출력은 미리 들어 있던 열이 아니라 baseline_gap과 review_gap_thresholds에서 생성됩니다. 기준을 -0.36으로 두면 검토 후보가 없고, -0.20으로 두면 R1과 R3이 검토 후보가 되며, 0.0으로 두면 최근 샘플 셋이 모두 검토 후보가 됩니다. 즉 출력 열은 단독으로 존재하는 것이 아니라 샘플 설정 -> 특징 계산 -> 기준선 생성 -> 기준선 비교 -> 운영 판단 기준이라는 앞선 단계의 결과를 이어받아 만들어집니다.
같은 표를 조금 더 해부해서 보면, 네 구조가 실제로 어느 칸에 들어 있는지도 분명해집니다.
| 열 이름 | 여기서 맡는 역할 | 왜 이 역할로 읽는가 |
|---|---|---|
sample_id | 샘플 식별자 | 무엇을 한 건으로 셌는지 가리키기 때문 |
mean_flow, late_drop_rate | 특징 | 샘플의 상태를 설명하는 값이기 때문 |
baseline_mean_flow, baseline_late_drop_rate | 기준선 열 | 평소 구간의 대표값을 따로 적어 둔 값이기 때문 |
baseline_gap | 기준선 비교 열 | 현재 샘플과 평소 기준선의 차이를 직접 적어 둔 값이기 때문 |
output | 출력 구조 | 사람이 읽거나 다음 단계가 이어받을 결과 형식이기 때문 |
이 표를 보면 데이터셋 후보가 단순히 열이 많은 표를 뜻하는 것이 아니라, 같은 행 안에 샘플, 설명 값, 비교 결과, 결과 형식이 서로 역할을 나눠 들어 있는 구조라는 점이 드러납니다.
review와 no_flag는 이 예제의 규칙이 만든 결과입니다. 실제 고장을 확인한 정답 라벨로 쓰려면 점검 기록과 고장 판정 기준 등 별도 근거가 필요합니다. 이 CSV에는 그런 근거가 없습니다.
| 구분 | 이 사례에서 확인할 수 있는 것 |
|---|---|
| 규칙 결과 | 정한 임계값에 따라 검토 대상으로 골랐는가 |
| 실제 고장 라벨 | 별도 점검으로 고장 여부를 확인했는가. 현재 CSV만으로는 알 수 없음 |
열의 역할도 사용 목적에 따라 달라질 수 있습니다. 예를 들어 이후 모델에서는 baseline_gap을 입력 특징으로 사용할 수 있습니다. 여기서는 계산 과정을 배우기 위해 원래 특징, 기준선과의 비교 결과, 검토 규칙의 결과를 구분합니다. 숫자로 된 열이라는 이유만으로 모두 같은 역할을 맡는 것은 아닙니다.
샘플을 정하고, 설명할 값을 고르고, 비교 기준과 출력 규칙을 정했다면 한 행을 원래 기록까지 거슬러 설명해 보세요. R1의 두 측정값으로 기울기를 구하고, B1·B2·B3에서 구한 기준선 기울기와 검토 임계값을 적용해 차이와 review 결과까지 재현할 수 있으면 이 사례의 구조를 읽은 것입니다.
체크리스트¶
- 측정값이나 운전 모드 같은 원래 값도 특징이 될 수 있음을 설명할 수 있는가?
- CSV에서 R1의 4초·5초 값을 찾아 기울기 −0.32를 계산하고, 기준선 기울기를 빼서 차이를 재현할 수 있는가?
- −0.32−(−0.05)가 음수인 이유와 그 단위가 뜻하는 것을 말할 수 있는가?
- −0.21·−0.20·−0.19를 검토 규칙에 넣었을 때 어느 값이 포함되는지 확인했는가?
- 임계값만 바꿨을 때 변하는 열과 그대로인 열을 구분하고,
review를 실제 고장 라벨로 읽지 않는가?
출처와 참고 자료¶
- Google for Developers,
Machine Learning Glossary의example,labeled example,feature,label. example 안에서 feature와 label이 어떤 역할을 맡는지 분리해 설명하므로, 샘플-특징-기준선-출력 구조를 한 표 안의 역할 구분으로 읽는 이 절의 전개를 뒷받침합니다. https://developers.google.com/machine-learning/glossary / 확인일: 2026-07-20 - U.S. Bureau of Labor Statistics,
Base period. 비교를 위한 기준 구간(reference period)이라는 일반 개념을 제공하므로, 이 사례에서 평소와의 차이를 읽기 위한 참조값의 역할을 보강합니다. 모든 특징이 기준선 비교를 거쳐야만 의미를 갖는다는 뜻은 아닙니다. https://www.bls.gov/bls/glossary.htm / 확인일: 2026-07-20 - W3C,
PROV-Overview. derivation, processing steps, reproducibility를 함께 다루므로, 출력 구조가 앞선 샘플 설정, 특징 계산, 기준선 비교의 파생 결과라는 상위 프레임을 보강합니다. https://www.w3.org/TR/prov-overview/ / 확인일: 2026-07-20