이상치 탐지 방법, 데이터별 선택법 6단계
- 이상치는 오류인지 중요한 사건인지 먼저 분리해야 합니다.
- 데이터 구조에 따라 통계·밀도·모델 기반 방법을 선택합니다.
- 임계값은 고정값보다 업무 비용과 검증 결과로 조정합니다.
- 탐지 후 삭제보다 원인 분류와 조치 이력 관리가 중요합니다.
이상치 탐지, 무엇부터 해야 할까?

이상치 탐지(Outlier Detection)는 다른 관측값과 비교해 유난히 멀리 떨어진 값 또는 평소와 다른 패턴을 찾아내는 방법입니다. 다만 탐지된 값이 곧바로 삭제 대상이라는 뜻은 아닙니다. 센서 고장, ETL(Extract, Transform, Load·데이터 추출·변환·적재) 오류, 중복 수집처럼 잘못된 데이터일 수 있지만, 장애 징후·부정 사용·급격한 고객 행동 변화처럼 실무에서 가장 먼저 확인해야 할 사건일 수도 있습니다.
따라서 실무의 목표는 “튀는 행을 제거하는 일”보다 의미 있는 이상을 빠르게 분류하고 적절한 담당자에게 전달하는 일에 가깝습니다. 단변량 수치 한 개를 점검한다면 IQR이나 Z-score로 시작할 수 있고, 여러 변수의 조합이 중요하면 Isolation Forest나 LOF(Local Outlier Factor)를 검토합니다. 시간의 흐름이 핵심이라면 계절성까지 분리한 뒤 잔차를 평가해야 합니다.
이상치와 이상 징후는 구분해야 합니다
이상치는 데이터 분포상 드문 값입니다. 반면 이상 징후는 업무 맥락에서 조사가 필요한 사건입니다. 예를 들어 주문 금액이 높아도 대량 구매 계약이라면 정상일 수 있고, 금액 자체는 평범해도 짧은 시간에 여러 국가에서 로그인했다면 보안 이상일 수 있습니다. 즉 통계적 희소성만으로 업무 위험을 확정하면 오탐이 늘어납니다.
탐지 대상의 형태를 먼저 적습니다
분석 시작 전에는 행 단위 사건인지, 일정 구간의 변화인지, 변수 조합의 어긋남인지 명확히 적어야 합니다. 이를 정하지 않으면 모델 점수는 나와도 알림이 무엇을 뜻하는지 설명하기 어렵습니다.
- 점 이상치: 특정 거래, 접속, 측정값 하나가 비정상적으로 멉니다.
- 문맥 이상치: 값 자체는 일반적이지만 시간·사용자 유형·지역 조건에서는 이례적입니다.
- 집단 이상치: 개별 값은 정상 범위여도 연속된 구간이나 묶음 전체가 평소 패턴과 다릅니다.
이상치 점수는 판정의 시작점입니다. 오류로 확인되기 전에는 원본을 삭제하지 말고, 원본값·탐지 시각·규칙 또는 모델 버전·검토 결과를 함께 보관해야 합니다.
데이터 형태별 이상치 탐지 방법 고르기

가장 복잡한 모델이 항상 좋은 선택은 아닙니다. 설명 가능성, 정상 데이터의 양, 라벨(정상·이상 정답)의 유무, 실시간 처리 필요성을 함께 비교해야 합니다. 아래 방법은 서로 경쟁하기보다 데이터 조건에 맞춰 쓰는 도구입니다.
| 상황 | 우선 방법 | 주의할 점 |
|---|---|---|
| 하나의 연속형 지표 | IQR, Z-score, MAD | 분포 왜곡과 극단값 영향을 확인합니다. |
| 여러 수치 변수 | Isolation Forest, LOF | 변수 스케일을 맞추고 결측치를 처리합니다. |
| 시간 순서가 있는 지표 | 이동 기준선, STL 잔차, 예측 오차 | 요일·계절성·배포 이벤트를 분리합니다. |
| 정답 라벨이 충분함 | 지도학습 분류 모델 | 희소한 이상 클래스와 시간 누수를 점검합니다. |
IQR·Z-score·MAD: 설명이 필요한 단변량 데이터
IQR(사분위 범위)은 1사분위수와 3사분위수 사이 범위를 사용합니다. 흔히 Q1−1.5×IQR 아래 또는 Q3+1.5×IQR 위를 후보로 표시하지만, 1.5는 절대 규칙이 아니라 검토 출발점입니다. Z-score는 평균에서 표준편차 몇 배 떨어졌는지 보는 방식이며, 정규분포에 가까운 데이터에서 해석이 쉽습니다. 평균과 표준편차 자체가 극단값에 흔들리는 데이터라면 중앙값과 MAD(Median Absolute Deviation·중앙 절대편차)를 쓰는 강건한 방식이 더 적합합니다.
Isolation Forest·LOF: 변수 조합의 낯섦을 찾는 방법
Isolation Forest는 무작위 분할을 반복해 빨리 고립되는 관측치를 이상 후보로 봅니다. 고차원 수치 데이터에서 비교적 빠르게 적용할 수 있지만, 점수만으로 원인을 설명하기 어렵습니다. LOF는 주변 이웃 대비 밀도가 낮은 지점을 탐지하므로 지역적으로 드문 패턴에 유용합니다. 다만 데이터 밀도가 크게 다른 군집이 섞이면 결과가 민감해질 수 있어 이웃 수 설정과 표본 추출 검증이 필요합니다. 구현 전에는 scikit-learn 이상치·신규성 탐지 문서에서 각 기법의 학습·예측 조건을 확인하는 편이 안전합니다.
실무 적용 6단계: 탐지부터 조치까지

아래 순서는 배치 분석과 실시간 모니터링 모두에 적용할 수 있습니다. 특히 운영 환경에서는 모델 정확도만큼 알림 이후의 분류·대응 흐름이 중요합니다.
1단계. 업무상 ‘이상’의 비용을 정의합니다
- 탐지하려는 사건을 한 문장으로 씁니다. 예: “사용자별 평소 범위를 벗어난 API 호출 급증”처럼 대상·기간·행동을 포함합니다.
- 놓침(False Negative)과 오탐(False Positive) 중 어느 쪽 비용이 큰지 담당 부서와 합의합니다.
- 차단, 경고, 사람 검토, 단순 기록 중 탐지 결과에 따른 조치 단계를 정합니다.
2단계. 데이터 품질과 기준 구간을 점검합니다
타임존 불일치, 단위 변경, 결측값 대체, 중복 이벤트, 배포 후 로그 스키마 변경은 모델이 이상으로 오인하기 쉽습니다. 학습 구간에는 가능한 한 정상 운영 기간을 사용하고, 이미 알려진 장애·프로모션·점검 기간은 별도 플래그로 남깁니다. 고객 행동 지표를 다룬다면 이탈 분석에서 코호트와 관찰 기간을 분리하는 방식도 중요하며, SaaS 고객 이탈 원인 분석 방법의 세그먼트 설계 원칙을 적용할 수 있습니다.
3단계. 기준선과 특징을 만듭니다
단순 절대값보다 사용자·서비스·장비별 기준선을 만드는 편이 유용합니다. 예를 들어 요청 수는 최근 7일 같은 요일·같은 시간대의 중앙값과 비교하고, 설비 데이터는 온도만 보지 말고 부하·회전수·운전 모드 같은 맥락 변수를 함께 넣습니다. 다변량 모델에는 범주형 변수 인코딩, 수치형 표준화, 결측치 처리 순서를 학습·추론에 동일하게 적용합니다.
4단계. 간단한 기준선과 모델을 함께 평가합니다
IQR 또는 이동 중앙값 같은 단순 규칙을 기준선으로 만들고, 그 다음 Isolation Forest나 시계열 예측 오차 모델을 비교합니다. 정확한 이상 라벨이 있다면 정밀도(탐지한 것 중 실제 이상의 비율), 재현율(실제 이상 중 탐지한 비율), PR-AUC를 봅니다. 라벨이 부족하면 과거 장애 티켓, 운영자 검토 표본, 알림 건수와 처리 시간을 함께 평가합니다.
5단계. 임계값을 알림 용량에 맞춰 조정합니다
많은 라이브러리의 contamination(전체 중 이상으로 가정하는 비율) 값은 실제 이상 비율을 보장하지 않습니다. 초기에는 후보를 넓게 생성하되, 담당자가 하루에 검토할 수 있는 건수와 사건 심각도를 기준으로 임계값을 조정합니다. 서비스별 트래픽이 다르면 하나의 전역 임계값보다 서비스별 또는 세그먼트별 기준이 낫습니다.
6단계. 피드백을 기록하고 드리프트를 감시합니다
드리프트는 데이터 분포나 정상 패턴이 시간이 지나 변하는 현상입니다. 신기능 출시, 고객 구성 변화, 센서 교체 뒤에는 과거 기준선이 더 이상 유효하지 않을 수 있습니다. 알림마다 ‘데이터 오류·정상 예외·실제 사건·판단 보류’ 같은 검토 라벨을 남기고, 월별 알림량·정밀도·미탐 사건을 확인해 재학습 또는 규칙 개정을 결정합니다.
시계열 이상치 탐지에서 놓치기 쉬운 조건
시계열에서는 값의 크기보다 “언제 발생했는가”가 핵심입니다. 월요일 오전의 트래픽 급증을 일요일 새벽과 같은 기준으로 평가하면 정상 패턴이 대량 알림으로 바뀝니다. 계절성은 일정 주기로 반복되는 변동이고, 추세는 장기적인 상승 또는 하락입니다. 이 둘을 제거하거나 별도로 모델링한 뒤 남은 잔차를 검사해야 합니다.
이동 평균만으로 계절성을 처리하지 않습니다
이동 평균은 단기 노이즈를 줄이는 데 도움이 되지만 주간·월간 주기가 뚜렷한 데이터에서는 기준을 흐릴 수 있습니다. 같은 요일·시간대 비교, STL(Seasonal-Trend decomposition using Loess·계절·추세 분해) 기반 잔차, 예측 모델의 오차처럼 시간 문맥을 반영한 점수를 사용합니다. 갑작스러운 수준 변화와 서서히 커지는 변화를 구분해 알림 정책도 다르게 설계해야 합니다.
지연 도착과 재처리 데이터를 분리합니다
로그가 늦게 도착하거나 집계가 재처리되면 과거 시점 값이 바뀔 수 있습니다. 실시간 알림용 데이터와 확정 분석용 데이터를 구분하고, 워터마크(이벤트가 늦게 도착할 수 있는 허용 시점) 이후에 확정 판정을 내리는 구조를 고려합니다. 그렇지 않으면 동일 사건이 반복 알림되거나 이미 해소된 이상이 뒤늦게 나타날 수 있습니다.
시계열 임계값은 모든 시간대에 하나로 고정하지 않는 편이 안전합니다. 계절성·배포·휴일·데이터 지연을 반영하지 않으면 모델 성능보다 운영 피로도가 먼저 악화될 수 있습니다.
탐지 결과를 안전하게 해석하는 체크리스트

이상치 탐지의 품질은 모델 점수 하나로 판단할 수 없습니다. 아래 질문에 답할 수 있어야 경고가 실제 의사결정으로 이어집니다.
- 이 값은 원천 시스템 오류, 수집 누락, 중복 적재와 같은 데이터 품질 문제인가요?
- 어떤 변수와 비교했을 때 이상이며, 해당 비교 기준은 언제 학습됐나요?
- 탐지 대상은 단일 사용자·장비에 국한되나요, 아니면 여러 대상에서 동시에 나타나나요?
- 이상 발생 전후에 배포, 요금제 변경, 프로모션, 장비 교체 같은 설명 가능한 이벤트가 있었나요?
- 알림을 받은 사람이 원인 확인과 조치에 필요한 원본 로그·대상 식별자·비교 구간을 볼 수 있나요?
마지막 질문이 특히 중요합니다. 탐지 모델이 블랙박스여도 운영 화면에는 점수, 주요 변화 변수, 기준 기간, 관련 이벤트를 함께 제공해야 합니다. 민감한 개인정보나 보안 로그를 처리한다면 접근 권한과 조회 이력을 분리하고, 필요한 최소 데이터만 노출해야 합니다.
자주 묻는 질문
Q. IQR에서 1.5배를 넘으면 반드시 이상치인가요?
아닙니다. 1.5배 IQR은 널리 쓰이는 후보 표시 기준일 뿐입니다. 데이터 분포, 표본 크기, 오류를 놓쳤을 때의 비용을 고려해 원본 기록과 업무 맥락을 확인한 뒤 판단해야 합니다.
Q. 이상치 탐지 전에 결측치를 먼저 처리해야 하나요?
대체로 그렇습니다. 많은 알고리즘은 결측값을 그대로 처리하지 못하며, 결측 자체가 장애 신호일 수도 있습니다. 결측 행을 무조건 제거하기보다 결측 원인을 별도 변수로 남길지 검토한 뒤 일관된 처리 규칙을 적용하세요.
Q. 라벨이 전혀 없으면 어떤 방법으로 시작하면 좋을까요?
단변량 지표는 IQR 또는 이동 중앙값을 기준선으로 시작하고, 여러 수치 변수는 Isolation Forest를 후보로 검토할 수 있습니다. 이후 운영자가 검토한 결과를 축적해 임계값과 모델을 개선하는 방식이 현실적입니다.
Q. Isolation Forest의 contamination 값은 실제 이상 비율과 같나요?
같다고 보기는 어렵습니다. 이는 모델이 이상 후보 경계를 정할 때 사용하는 가정값입니다. 과거 검토 결과와 알림 처리 가능 건수를 비교해 조정하고, 서비스별 데이터 특성이 다르면 각각 검증해야 합니다.
Q. 탐지된 이상 데이터를 삭제해도 되나요?
명백한 입력 오류나 중복으로 확인된 경우에는 정정 또는 제외할 수 있습니다. 그러나 보안 사고, 장애, 희귀 고객 행동일 가능성이 있으면 원본을 보존하고 분석용 데이터에서만 별도 플래그 또는 필터를 적용하는 편이 안전합니다.
