P3-8.5 여러 비교 열은 어떻게 하나의 검토 우선순위 후보로 묶는가¶
Section ID:
P3-8.5Version:v2026.09.20
비교표에 열이 많다고 모든 열을 점수 하나에 넣어야 하는 것은 아닙니다. 검토 후보 큐를 만들 때는 어떤 열로 순서를 정하고, 어떤 열은 근거를 읽기 위해 남기는지 구분합니다. 같은 자료라도 정렬 정책이 달라지면 순서가 달라집니다. 우선순위는 관측값에 자동으로 붙어 있는 성질이 아니라, 정한 정책의 결과입니다.
먼저 한 행과 각 열의 뜻을 고정하기¶
아래는 이미 검토 대상으로 선정된 세 비교 구간의 가상 자료입니다. 한 행은 개별 동작이 아니라 여러 완료 동작을 묶은 비교 구간이므로 식별자는 window_id입니다. A·B·C는 이 절 안의 식별자이며 앞 절의 동일 문자 행을 그대로 이어받은 것은 아닙니다. 여기서는 검토 대상 포함 여부가 아니라 그 대상 사이의 순서만 정합니다.
| 입력 열 | 이 사례에서의 뜻 |
|---|---|
| window_id | 서로 다른 비교 구간의 고유 식별자 |
| diff_mean | 최근 동작별 후반 평균의 평균−기준선의 같은 평균, 단위 L/min |
| recent_count | 최근 구간에 포함된 서로 다른 완료 동작 수 |
| decline_count | 후반 평균−초반 평균 ≤ −0.30 L/min인 최근 동작 수, 경계 포함·동작당 한 번 집계 |
| safety_related | 사전에 정한 공정 검토 분류에서 안전 관련 항목에 해당하면 yes, 아니면 no |
하강 조건은 P3-7.2와 같습니다. safety_related는 공정 분류 기록에서 가져온 표시이며 차이값이나 표본 수로 계산하지 않습니다. yes는 이미 사고나 한계 위반이 발생했다는 뜻이 아니고, no도 안전 보증이 아닙니다. 별도 긴급 대응 절차가 적용되는 상황을 이 정렬 연습으로 대체하지 않습니다.
비교에 필요한 측정값과 분류 표시는 모두 있고, 각 기준선과 최근의 측정 정의·운전 조건이 맞으며 세 구간의 차이는 같은 유량 단위로 비교할 수 있다고 가정합니다. 누락된 안전 분류를 no로 채우거나, 단위가 다른 차이를 그대로 정렬해서는 안 됩니다.
차이값과 규칙 충족 건수를 나란히 읽기¶
| window_id | diff_mean (L/min) | recent_count | decline_count | safety_related |
|---|---|---|---|---|
| A | -0.35 | 20 | 14 | yes |
| B | -0.35 | 3 | 1 | no |
| C | -0.18 | 18 | 12 | yes |
하강 비율은 decline_count/recent_count로 계산합니다. A는 14/20=70%, B는 1/3≈33.3%, C는 12/18≈66.7%입니다. 이 수치로 모호한 반복 점수를 대신할 수 있지만, 비율에 발생 순서가 들어 있는 것은 아니므로 연속 하강 횟수로 읽지는 않습니다.
차이 크기는 부호를 제외한 절댓값입니다. A와 B는 |−0.35|=0.35, C는 |−0.18|=0.18 L/min입니다. 절댓값은 증가·감소의 방향을 버리므로 원래 부호도 보존합니다. 이 사례는 두 방향의 차이 크기를 같은 방식으로 다루는 정책이며, 실제 목적이 하락 탐지라면 방향을 반영한 별도 규칙이 필요합니다.
20건이나 18건이라는 수, 또는 작은 산포만으로 “신뢰도가 높다”고 인증할 수 없습니다. 관측 범위·동작 간 의존성·기준선 적합성을 따로 확인해야 합니다. B의 표본이 적다는 사실도 자동으로 마지막 순위를 정해 주지는 않습니다.
정책 1: 안전 관련 분류, 차이 크기, ID 순서¶
가상 정책 queue-v1은 다음 순서를 사용합니다. 앞 기준에서 순서가 결정되면 뒤 기준으로 그 순서를 뒤집지 않습니다.
safety_related=yes인 구간을 no보다 먼저 둡니다.- 같은 분류 안에서는
diff_mean의 절댓값이 큰 구간을 먼저 둡니다. - 두 값이 모두 같으면
window_id의 알파벳 오름차순으로 정합니다.
먼저 A·C가 yes 묶음, B가 no 묶음으로 나뉩니다. yes 묶음 안에서 0.35 > 0.18이므로 A가 C보다 앞섭니다. 따라서 A → C → B입니다. C가 B보다 앞서는 이유는 더 높은 고장 확률이나 더 많은 표본이 아니라 첫 번째 분류 규칙입니다.
정책 2: 차이 크기, ID 순서¶
비교용 가상 정책 queue-v2는 절댓값 내림차순 → ID 오름차순만 사용합니다. 이 정책에서는 안전 관련 분류를 정렬에 사용하지 않습니다. A와 B가 0.35로 동률이므로 ID로 A를 먼저 두고, 0.18인 C가 뒤에 옵니다. 결과는 A → B → C입니다. 두 정책은 계산을 비교하는 예시이며 어느 하나가 실제 운영에 더 적합하다고 검증한 결과가 아닙니다.
| window_id | queue-v1 순위 | queue-v2 순위 | 순서가 정해진 핵심 이유 |
|---|---|---|---|
| A | 1 | 1 | v1에서는 yes 묶음의 큰 차이, v2에서는 B와 동률 후 ID 우선 |
| B | 3 | 2 | v1에서는 no 묶음, v2에서는 C보다 큰 차이 |
| C | 2 | 3 | v1에서는 yes 묶음, v2에서는 가장 작은 차이 |
두 정책 모두 하강 비율과 최근 건수를 정렬 기준에 포함하지 않습니다. 이 열들은 관측 근거와 해석의 한계를 설명하기 위해 남깁니다. 산포와 패턴 요약도 이번 순위 규칙에는 없습니다. 따라서 “반복성이 높아서 A가 1위”라고 설명하면 실제 규칙과 다른 이유를 붙이는 셈입니다. 그런 열로 순서를 바꾸려면 적용 순서와 동률 규칙을 새 정책에 명시해야 합니다.
비교 근거를 검토 우선순위로 연결하기¶
flowchart TD
A["확인한 비교 행"] --> B["정책이 지정한 정렬 열"]
B --> C["우선 기준과 동률 규칙 적용"]
C --> D["순위와 정책 버전"]
A --> E["건수·비율은 근거로 보존"]
E --> F["한계 설명과 순위 이유 구분"]
D --> F
출력에는 window_id, rank, policy_version을 남기고 사용한 입력 행과 연결합니다. 순위 1은 이 후보 집합에서 먼저 검토한다는 뜻이지 고장 확률 1이나 확정 진단이 아닙니다. ID 동률 규칙은 순서를 일관되게 만드는 장치이며, A라는 이름 자체가 더 중요한 근거라는 뜻도 아닙니다.
직접 순서를 바꾸어 보기¶
B의 diff_mean만 −0.40으로 바꾸면 각 정책의 순서는 어떻게 될까요? 이어서 원래 표로 돌아가 C의 decline_count만 12에서 18로 바꾸면 순위가 달라질까요?
해설: 첫 변경에서 queue-v1은 안전 관련 분류가 먼저이므로 여전히 A → C → B입니다. queue-v2는 차이 크기가 먼저이므로 B → A → C가 됩니다. 두 번째 변경에서는 C의 하강 비율만 18/18=100%가 되고, 두 정책 모두 이 비율을 사용하지 않아 원래 순서 A → C → B, A → B → C를 유지합니다. 100% 역시 고장 확률이 아닙니다.
체크리스트¶
- 한 행의 단위와 모든 입력 열의 뜻, 하강 비율의 분자·분모를 설명할 수 있는가?
- 두 정책의 순서와 동률 처리를 재현하고, 사용하지 않는 열을 순위 이유로 들지 않는가?
- 순위와 고장 확률을 구분하고 정책 버전·입력 근거를 함께 남길 수 있는가?
출처와 참고 자료¶
- Python 공식 문서, Sorting Techniques — 여러 정렬 키를 순서대로 비교하고 동률이면 다음 키를 사용하는 원리를 참고했습니다. 본문의 자료와 두 운영 정책은 자체 구성한 가상 예시입니다. 확인일: 2026-09-20.