이상치
고친 사람 github-actions[bot]
이상치는 한 묶음의 값 가운데 나머지에서 멀리 떨어져 따로 살펴봐야 하는 값입니다. 응답 시간 대부분이 0.1초 안팎인 곳에 끼어든 3초짜리 한 건이 그런 값입니다. 이런 값 하나가 평균 같은 요약을 크게 흔듭니다. 그래서 묶음을 요약하기 전에 이런 값을 먼저 가려 따로 봅니다.
쉽고 빠른 이해
이상치는 숫자 묶음에서 혼자 멀리 떨어진 값입니다. 거의 다 0.1초 안에 끝난 요청 사이에 3초 걸린 한 건이 섞여 있으면 그 한 건이 이상치입니다.
이걸 가려 보지 않으면 요약이 엉뚱한 말을 합니다. 오래 걸린 한 건이 평균을 몇 배로 끌어올립니다. 요청 대부분이 금방 끝났어도 평균만 보면 전부 오래 걸린 것처럼 보입니다. 반대로 무작정 지우면 정말 오래 기다린 사용자를 못 보게 됩니다.
- 나머지 값들이 모인 가운데와 퍼진 폭을 잽니다
- 그 폭에 비해 너무 멀리 나간 값에 표시를 합니다
- 왜 생겼는지 보고 고칠지, 남겨 둘지 정합니다
가려내는 쪽도 대가를 치릅니다. 「얼마나 멀어야 먼가」를 사람이 정해야 합니다. 같은 값도 어느 기준을 쓰느냐에 따라 이상치가 되기도 하고 안 되기도 합니다.
상세
반 아이들이 한 달 용돈을 적어 냈습니다. 거의 다 3만 원에서 5만 원 사이입니다. 그런데 한 칸에만 300만 원이 적혀 있습니다. 담임은 그 칸부터 다시 봅니다. 0을 잘못 붙였는지, 정말 그만큼 받는 아이인지 알아보려는 것입니다.
이상치는 한 묶음의 값 가운데 나머지 대부분과 비정상적으로 멀리 떨어진 관측값입니다. 관측값은 재거나 기록해서 얻은 값 하나입니다. 영어로는 outlier 입니다.
값을 뽑아 온 전체가 모집단입니다. 거기서 뽑아 온 한 묶음이 표본입니다. 이상치는 대개 한 표본 안에서 따집니다.
요청 열두 건의 응답 시간을 재서 작은 것부터 세우면 이렇습니다. 값의 단위는 밀리초입니다.
100 · 110 · 120 · 120 · 120 · 130 · 130 · 140 · 150 · 150 · 150 · 3000
xychart-beta
title "요청 열두 건의 응답 시간 · 밀리초"
x-axis ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]
y-axis "밀리초" 0 --> 3200
bar [100, 110, 120, 120, 120, 130, 130, 140, 150, 150, 150, 3000]
열한 건은 100에서 150 사이에 모여 있습니다. 마지막 한 건만 3000, 곧 3초입니다. 이 한 건이 이 묶음의 이상치입니다. 나머지 대부분이 모인 덩어리를 이 글에서는 무리라고 부릅니다.
「멀다」는 늘 무리를 기준으로 잽니다. 3초짜리 한 건은 이 묶음에서는 이상치입니다. 대부분이 2초에서 4초 사이인 묶음에 들어가면 평범한 값이 됩니다. 이상치는 값 하나의 성질이 아니라 그 값과 무리 사이의 관계입니다.
무엇을 비정상적으로 멀다고 볼지는 정의가 정해 주지 않습니다. 어떻게 보면 그 판단은 분석하는 사람이나 합의 절차에 맡겨집니다. 그래서 비정상인 값을 골라내기 전에 정상인 값들이 어떻게 생겼는지를 먼저 그려 봐야 합니다.
「멀다」를 수로 정하는 법
판단을 사람에게 맡기더라도 기준은 수로 적어 둡니다. 규칙 하나를 같은 열두 건에 대 봅니다.
사분위수는 값을 크기순으로 세워 네 토막으로 자르는 경계입니다. 4분의 1 지점이 아래 사분위수입니다. 4분의 3 지점이 위 사분위수입니다. 열두 건에서는 120 과 150 입니다.
flowchart TD
T4["넷째 토막 · 150 · 150 · 3000"]
Q3["위 사분위수 · 150"]
T3["셋째 토막 · 130 · 140 · 150"]
M["중앙값 · 130"]
T2["둘째 토막 · 120 · 120 · 130"]
Q1["아래 사분위수 · 120"]
T1["첫째 토막 · 100 · 110 · 120"]
T4 --- Q3 --- T3 --- M --- T2 --- Q1 --- T1
그림은 열두 건을 세 건씩 네 토막으로 끊은 것입니다. 위로 갈수록 값이 큽니다. 3000 은 넷째 토막에만 들어 있어 경계 셋을 못 건드립니다.
두 경계 사이에 가운데 절반의 값이 모입니다. 위 사분위수에서 아래 사분위수를 뺀 폭이 사분위 범위입니다. 줄여서 IQR(Interquartile Range)이라고 씁니다.
열두 건의 사분위 범위는 30 입니다. 가운데 절반만 보고 재므로 양 끝에 선 몇 건이 이 수를 못 흔듭니다.
규칙은 이 폭의 1.5배만큼 바깥에 울타리를 치는 것입니다. 위 울타리는 150 + 1.5 × 30 = 195 입니다. 아래 울타리는 120 − 1.5 × 30 = 75 입니다. 울타리 밖에 선 값을 이상치로 봅니다.
flowchart TD
E["3000 · 울타리 밖 · 이상치"]
H["위 울타리 · 195"]
subgraph 상자["가운데 절반 · 120 ~ 150"]
Q3["위 사분위수 · 150"] --- Q1["아래 사분위수 · 120"]
end
L["아래 울타리 · 75"]
E --- H --- Q3
Q1 --- L
그림은 값을 세로로 세운 것입니다. 위로 갈수록 큽니다. 3000 은 위 울타리 195 를 한참 넘어 섰습니다. 나머지 열한 건은 100 에서 150 사이라 전부 두 울타리 안에 듭니다.
두 사분위수를 상자로 그리고 울타리 밖 값을 점으로 따로 찍는 그래프가 상자 그림입니다. 위의 세로 그림이 같은 꼴입니다. 「멀다」를 재는 규칙은 이것 말고도 여럿입니다. 아래 「갈래」가 그 차이를 다룹니다.
이상치가 생기는 까닭
찾은 이상치를 어떻게 할지는 왜 생겼는지에 달려 있습니다. 까닭은 크게 셋으로 갈립니다.
첫째는 잘못된 값입니다. 값을 잘못 옮겨 적었거나 측정이 제대로 안 된 경우입니다. 이런 값은 무리에 대해 알려 주는 것이 없습니다.
둘째는 정상인 드문 일이 일어난 경우입니다. 우연히 흔들려 멀리 나갔을 수도 있습니다. 들여다볼 만한 일이 정말 일어났을 수도 있습니다.
들여다볼 만한 일로 둘을 들 수 있습니다. 하나는 런타임이 안 쓰는 메모리를 거둬 가는 가비지 컬렉션입니다. 그동안 프로그램이 잠깐 멈추기도 합니다. 그 사이에 들어온 요청은 기록이 정상이어도 오래 걸립니다.
다른 하나는 캐시에 값이 없어 원본 저장소까지 다녀온 요청입니다. 이런 일을 캐시 미스라고 합니다. 이 요청도 기록은 정상입니다. 캐시에서 바로 나간 다른 요청들보다 오래 걸렸을 뿐입니다.
셋째는 값이 아니라 기준이 틀린 경우입니다.
정규 분포는 값들이 평균을 가운데 두고 종 모양으로 고르게 퍼진 분포입니다. 평균에서 떨어진 거리로 재는 규칙 여럿은 값들이 대략 이 모양을 따른다고 가정하고 「멀다」를 잽니다. 값들이 그 모양을 따르지 않으면 평범한 값도 이상치로 판정될 수 있습니다. 그때 까닭은 그 값이 아니라 가정한 모양에 있습니다.
찾은 뒤에 다루는 방법
다루는 순서는 표시가 먼저입니다. 울타리 밖 값에는 표시만 해 둡니다. 그다음 까닭을 확인합니다.
flowchart TD
A["울타리 밖 값에 표시한다"] --> B{"잘못된 값으로 확인되나"}
B -->|그렇다| C["고치거나 분석에서 지운다"]
B -->|"아니다 · 알 수 없다"| D{"가정한 분포 모양이 맞나"}
D -->|아니다| E["값을 변환해 다시 잰다"]
D -->|맞다| F["남겨 두고 요약을 바꾸거나 값을 누른다"]
잘못된 값으로 확인되면 분석에서 지웁니다. 고칠 수 있으면 고칩니다. 분석하기 전에 이런 값을 걸러 내는 일이 데이터 정제입니다.
잘못된 값인지 판정할 수 없을 때가 있습니다. 이상치가 잘못된 값인 경우도 흔하지만, 판정이 안 되면 대개 그냥 지우지 않습니다. 이상치는 그 값을 낸 과정이나 기록 과정에 대해 쓸모 있는 정보를 담고 있을 때가 많습니다. 지우기 전에 왜 나왔는지, 비슷한 값이 또 나올지를 먼저 봅니다.
값들이 종 모양이 아니라 로그를 씌우면 종 모양에 가까워지는 꼴이라면 값을 변환할 수 있습니다. 로그를 씌운 값에 평균에서 떨어진 거리로 재는 규칙을 다시 댑니다.
남겨 둘 때는 두 길이 있습니다. 하나는 요약을 이상치에 덜 끌려가는 값으로 바꾸는 것입니다. 다른 하나는 지우는 대신 양 끝의 값을 눌러 두는 것입니다.
평균은 모든 값을 더해 건수로 나눈 값입니다. 양 끝에서 정해진 수만큼 떼어 내고 남은 값으로 평균을 내는 방법이 절사평균입니다. 열두 건에서 위아래 한 건씩 떼면 3000 과 100 이 셈에서 빠집니다. 남은 열 건의 평균은 132 입니다.
양 끝의 값을 바로 안쪽 값으로 바꿔 두는 방법이 윈저화입니다. 열두 건이면 3000 을 150 으로, 100 을 110 으로 바꾸는 식입니다. 값의 개수는 지킵니다. 한 건이 요약을 흔드는 힘만 줄어듭니다.
배경
평균에는 모든 값의 크기가 들어갑니다. 그래서 먼 값 하나가 평균을 끌고 갑니다. 열두 건의 평균은 약 368 입니다. 3000 을 빼면 약 129 입니다.
표준편차는 값들이 평균에서 얼마나 퍼져 있는지를 수 하나로 나타냅니다. 평균과의 거리를 제곱해서 더하므로 먼 값 하나가 결과를 훨씬 크게 키웁니다.
| 요약값 | 열두 건 | 3000 을 뺀 열한 건 |
|---|---|---|
| 평균 | 약 368 | 약 129 |
| 중앙값 | 130 | 130 |
| 표본 표준편차 | 약 829 | 약 17 |
중앙값은 값을 크기순으로 세웠을 때 한가운데에 오는 값입니다. 중앙값은 줄에서 몇 번째인지만 봅니다. 값의 크기는 안 보므로 3000 이 있어도 없어도 130 입니다.
한 건 때문에 평균은 묶음의 전형적인 값을 더는 대표하지 못합니다. 퍼진 폭을 말하는 표준편차는 50배 가까이 부풀었습니다.
그래서 두 가지가 필요했습니다. 하나는 「멀다」를 수로 정해 요약을 흔드는 값을 미리 가려내는 규칙입니다. 다른 하나는 그런 값에 덜 흔들리는 요약입니다.
앞의 규칙이 가려내는 값이 이상치입니다. 뒤의 요약을 묶어 강건 통계라고 합니다.
예시
파이썬 statistics.quantiles
파이썬 표준 라이브러리의 statistics 모듈로 앞의 울타리 셈을 적으면 이렇습니다.
from statistics import quantiles
ms = [100, 110, 120, 120, 120, 130,
130, 140, 150, 150, 150, 3000]
q1, _, q3 = quantiles(ms) # 120.0 150.0
iqr = q3 - q1 # 30.0
hi = q3 + 1.5 * iqr # 195.0
[x for x in ms if x > hi] # [3000]
quantiles(data, *, n=4, method='exclusive') 의 n 은 토막 수입니다. 기본값 n=4 에서는
네 토막의 경계 셋을 돌려줍니다. 그 경계 셋이 사분위수입니다.
가운데 경계는 중앙값이라 이 셈에서는 _ 로 버렸습니다. 마지막 줄이 위 울타리를 넘은 값만
모읍니다.
기본 방식 'exclusive' 는 표본에 없는 더 큰 값과 더 작은 값이 모집단에 있을 수 있다고 보고
씁니다. 정렬한 m 개 가운데 i 번째 값보다 작은 값이 모집단의 i / (m + 1) 만큼 있다고 칩니다.
경계가 두 값 사이에 떨어지면 두 값 사이를 직선으로 나눠 채웁니다.
열두 건의 4분의 1 지점은 3번째와 4번째 값 사이입니다. 둘 다 120 이라 120 이 나옵니다.
같은 모듈의 mean() 은 이상치에 크게 흔들려서 전형적인 값이 아닐 수 있습니다. 덜 흔들리는
중심값으로는 median() 이 있습니다. 대신 효율은 평균보다 떨어집니다.
여기서 효율은 계산 속도가 아닙니다. 같은 개수의 값으로 모집단의 가운데를 얼마나 정확히 짚어 내나입니다. 값들이 종 모양으로 퍼져 있으면 평균이 중앙값보다 더 정확히 짚습니다.
Google SRE 의 응답 시간 지표
Google 의 SRE(Site Reliability Engineering, 사이트 신뢰성 엔지니어링)는 서비스의 응답 시간을 평균보다 백분위수로 보는 쪽을 대개 택합니다. 백분위수는 값을 크기순으로 세웠을 때 아래에서 몇 퍼센트 지점에 선 값입니다. 응답 시간 같은 지표는 대개 평균 하나보다 분포 전체로 보는 편이 낫다고 봅니다.
응답 시간 평균은 요청 대부분이 금방 끝나는 동안 일부가 훨씬 오래 걸리는 꼬리를 가릴 수 있습니다. 꼬리는 오래 걸린 쪽 끝에 늘어선 값들입니다. 이상치는 그 끝에서 혼자 멀리 떨어진 한두 건입니다. 꼬리는 그 끝 전체를 말합니다.
배경에서 본 「먼 값 하나가 평균을 끌고 간다」와 거꾸로 들리지만 두 말은 어긋나지 않습니다. 평균은 모든 값을 더해 건수로 나눈 수입니다. 오래 걸린 요청이 전체의 일부이고 그 값이 아주 멀지는 않으면 평균은 조금만 움직입니다. 그래서 꼬리 쪽이 크게 바뀌어도 평균 하나만 보면 평평해 보입니다.
Google SRE 가 보인 한 시스템에서 전형적인 요청은 약 50밀리초에 끝납니다. 그런데 요청의 5% 는 그보다 20배 오래 걸렸습니다. 평균만 보고 감시하면 하루 내내 변화가 없어 보였습니다. 그 사이 오래 걸린 쪽 끝, 곧 꼬리 지연은 크게 바뀌고 있었습니다.
99번째나 99.9번째 백분위수는 있을 법한 가장 오래 걸린 경우의 값을 보여 줍니다. 50번째 백분위수는 전형적인 경우를 보여 줍니다. 이 값이 중앙값입니다.
컴퓨터 시스템에서 나오는 값은 사람이 정한 제약 때문에 한쪽으로 치우치기 쉽습니다. 응답 시간은 0밀리초 아래로 못 내려갑니다. 타임아웃을 1,000밀리초로 두면 그보다 오래 걸린 성공 응답도 없습니다. 그래서 평균과 중앙값이 같거나 비슷하다고 가정할 수 없습니다.
분포를 확인하기 전에는 정규 분포라고 가정하지 않으려 합니다. 익숙한 직관과 근사가 안 맞을 수 있어서입니다. 이상치를 보고 움직이는 절차가 그 예입니다. 응답 시간이 긴 서버를 다시 시작하는 절차라면, 분포가 예상과 다를 때 너무 자주 돌거나 너무 드물게 돌 수 있습니다.
scikit-learn RobustScaler
머신러닝 모델에 넣기 전에 값의 크기를 맞추는 일이 표준화입니다. 흔히 평균을 뺀 뒤 분산이 1 이 되게 나눕니다. 분산은 표준편차의 제곱입니다.
그런데 이상치는 표본의 평균과 분산을 끌어당겨 틀어 놓을 때가 많습니다. 그럴 때는 중앙값과 사분위 범위를 쓰는 쪽이 대개 더 나은 결과를 냅니다.
RobustScaler(*, with_centering=True, with_scaling=True,
quantile_range=(25.0, 75.0), copy=True, unit_variance=False)
RobustScaler 는 이상치에 잘 버티는 통계량으로 값의 크기를 맞춥니다. 중앙값을 뺀 뒤
quantile_range 로 나눕니다. 기본값 (25.0, 75.0) 은 아래 사분위수와 위 사분위수를
가리킵니다. 그 사이가 사분위 범위입니다.
중앙값과 사분위 범위는 학습용 데이터에서 계산해 저장해 둡니다. 뒤에 들어오는 데이터에도 그 값을 씁니다.
Elastic Stack 의 이상치 점수
Elastic Stack 은 Elasticsearch 인덱스에 쌓인 데이터에서 이상치를 찾는 기능을 둡니다. 정답을 알려 주는 학습 데이터가 필요 없는 비지도 학습 기법입니다. 데이터를 한 번 훑는 일괄 분석이라 새 데이터가 들어오면 분석을 다시 돌려야 합니다.
기본으로는 점마다 이웃까지의 거리와 그 둘레의 빽빽함을 재는 방법 넷을 함께 돌립니다. 넷의 결과를 정규화해 합친 뒤 데이터 점마다 이상치 점수(outlier score)를 매깁니다. 점수는 0 에서 1 사이입니다. 클수록 그 점이 다른 점들에 비해 이상치일 가능성이 높습니다.
어디서부터 이상치로 볼지는 사용자가 정합니다. 예를 들어 점수가 0.5 를 넘는 점을 전부 이상치로 볼 수 있습니다. 이상치가 전체에서 작은 비율이라는 가정 위에서 도는 기능입니다.
갈래
이상치를 가르는 규칙들은 무리의 가운데와 퍼진 폭을 무엇으로 재느냐로 갈립니다. 가운데와 폭을 정하면 「멀다」는 「폭 몇 개만큼 가운데에서 떨어졌나」가 됩니다. 어느 쪽을 쓰느냐에 따라 같은 값이 이상치가 되기도 하고 안 되기도 합니다. 아래 표의 네 규칙을 소절마다 하나씩 풉니다.
| 규칙 | 가운데 | 폭 | 흔한 기준값 |
|---|---|---|---|
| 표준 점수 | 평균 | 표준편차 | 점수 3 |
| 사분위 범위 울타리 | 사분위수 | 사분위 범위 | 폭의 1.5배 · 3배 |
| 수정 표준 점수 | 중앙값 | 중앙값 절대 편차 | 점수 3.5 |
| 이웃과의 거리 · 밀도 | 이웃한 점들 | 이웃까지의 거리 | 도구마다 다름 |
표준 점수
표준 점수는 한 값이 평균에서 표준편차 몇 개만큼 떨어졌는지를 나타냅니다. 값에서 평균을 뺀 뒤 표본 표준편차로 나눠 얻습니다. 이 점수가 3을 넘으면 이상치로 보는 관례가 흔합니다. 상세에서 본 종 모양의 정규 분포에서는 값 천 개 가운데 약 997개가 평균에서 표준편차 셋 안에 들기 때문입니다.
이 관례는 표본이 작을 때 오해를 부를 수 있습니다. 표본의 값 개수를 n 이라 하면 표준 점수는 (n − 1)/√n 을 넘지 못합니다. 열두 건이면 상한이 약 3.18 이라 3000 의 점수 약 3.17 은 이미 상한에 붙어 있습니다. 열 건이면 상한이 약 2.85 라서 기준 3 을 넘는 값이 아예 나올 수 없습니다.
이상치가 둘인 표본에서 하나만 찾도록 재면 서로를 가릴 수 있습니다. 150 한 건을 3000 으로 바꾸면 평균은 약 606, 표본 표준편차는 약 1,118 로 부풉니다. 두 3000 의 점수는 약 2.14 로 기준 아래입니다. 이렇게 이상치가 평균과 표준편차를 함께 끌어올려 어느 값도 안 잡히는 일이 가림 효과(masking)입니다.
사분위 범위 울타리
상세에서 본 1.5배 울타리가 안쪽 울타리입니다. 3배만큼 바깥에 치는 바깥 울타리가 하나 더 있습니다. 안쪽 울타리를 넘은 값은 약한 이상치(mild outlier), 바깥 울타리까지 넘은 값은 극단 이상치(extreme outlier)입니다.
열두 건의 바깥 울타리는 150 + 3 × 30 = 240 이라 3000 은 극단 이상치입니다. 마지막 한 건이 3000 대신 220 이면 판정이 갈립니다. 220 은 안쪽 울타리 195 를 넘지만 바깥 울타리 240 안에 들어 약한 이상치가 됩니다. 그때는 극단 이상치가 없습니다.
3000 이 두 건이 되어도 열두 건의 사분위수는 120 과 150 에 머뭅니다. 울타리가 안 움직입니다. 사분위수와 사분위 범위를 가운데 절반의 값으로만 정하기 때문입니다.
수정 표준 점수
수정 표준 점수는 표준 점수의 평균과 표준편차를 중앙값과 중앙값 절대 편차로 바꾼 것입니다. 중앙값 절대 편차는 MAD(Median Absolute Deviation)로 줄여 씁니다. 값마다 중앙값과의 거리를 잰 뒤 그 거리들의 중앙값을 낸 값입니다.
점수는 0.6745 × (값 − 중앙값) / MAD 입니다. Iglewicz 와 Hoaglin 은 절댓값이 3.5 를 넘는 값을 이상치 후보로 표시하라고 권했습니다.
열두 건의 중앙값은 130, MAD 는 15 입니다. 3000 의 점수는 약 129 입니다. 나머지 열한 건은 모두 1.5 아래입니다. 3000 이 두 건이 되어도 중앙값과 MAD 가 그대로라 두 건 모두 약 129 를 받습니다.
| 3000 이 한 건 | 3000 이 두 건 | |
|---|---|---|
| 표준 점수 3 | 잡는다 · 약 3.17 | 놓친다 · 약 2.14 |
| 사분위 범위 울타리 | 잡는다 · 극단 | 잡는다 · 극단 |
| 수정 표준 점수 3.5 | 잡는다 · 약 129 | 잡는다 · 약 129 |
이웃과의 거리 · 밀도
값 하나가 여러 변수로 이뤄지면 크기순으로 한 줄로 세울 수 없습니다. 가운데와 폭을 수 하나로 정하기도 어렵습니다. 여러 변수일 때 「멀다」를 재는 기준은 방법마다 갈립니다. 그중 하나가 이웃입니다.
거리에 기반한 방법은 점마다 가까운 이웃 몇 개와 견줍니다. 정상인 점은 서로 가깝고 이상치는 멀리 있다고 가정합니다. 이 방법은 데이터 안에서 밀도가 곳마다 다른 것을 못 봅니다. 그래서 밀도에 기반한 방법이 이를 보완합니다.
LOF(Local Outlier Factor, 국소 이상치 계수)는 한 점의 밀도가 이웃들의 밀도에서 얼마나 벗어났는지를 잽니다. 이웃보다 눈에 띄게 성긴 점을 찾는 방법입니다. 이웃을 기준으로 삼지 않는 방법도 있습니다. 데이터의 모양을 타원으로 맞춰 그 모양에서 멀리 떨어진 점을 찾는 방법과, 변수와 나눌 기준값을 무작위로 골라 데이터를 거듭 나누는 Isolation Forest 가 그렇습니다.
경계
평소 조용하던 새벽에 요청이 한꺼번에 몰려들었다면 그것도 이상치인가. 아닙니다.
판정은 무엇을 한 묶음으로 보느냐에 달려 있습니다. 여기서 한 묶음은 그 시간대의 응답 시간들입니다.
그때 요청 한 건 한 건의 응답 시간은 묶음 안에서 평범합니다. 어느 값도 무리에서 떨어져 있지 않습니다. 평소와 다른 것은 값이 아니라 시간에 따라 요청이 들어오는 모양입니다.
시계열은 시간 순서로 쌓인 데이터입니다. 시계열에서 평소 모양을 먼저 세운 뒤 그 모양을 벗어난 사건을 찾는 일이 이상 탐지입니다. 이상치를 찾는 일은 그렇게 시간을 따라가지 않고 한 묶음 안에서 값끼리 견줍니다.
Elastic Stack 에서도 두 일은 다른 기능입니다. 이상치 찾기는 쌓인 데이터를 한 번 훑는 일괄 분석입니다. 다루는 데이터가 시계열이면 이상치 찾기 대신 이상 탐지 기능을 쓰는 편이 나을 수 있습니다.
관련 항목
이상치를 가르는 기준 통계량
사분위수 · 사분위 범위 · 표준편차 · 표준 점수 · 수정 표준 점수 · 중앙값 절대 편차 · 상자 그림 · 산점도
이상치인지 따지는 정식 검정
Grubbs 검정 · Tietjen-Moore 검정 · 일반화 ESD 검정 · Dixon 검정 · 가림 효과 · 정규성 검정
여러 변수에서 이상치를 찾는 알고리즘
LOF · Isolation Forest · k-최근접 이웃 · 타원 엔벨로프 · novelty detection
이상치에 크게 흔들리는 요약값
평균 · 분산 · 범위 · 상관 계수 · 선형 회귀
이상치에 잘 버티는 요약값
중앙값 · 분위수 · 백분위수 · 절사평균 · 윈저화 · 강건 통계 · 표준화
이상치가 드러나는 분포의 모양
분포 · 정규 분포 · 로그 정규 분포 · 치우침 · 긴 꼬리 · 꼬리 지연 · 히스토그램
이상치를 찾아 다루는 분석 작업
이상 탐지 · 데이터 정제 · 결측치 · 탐색적 자료 분석 · 데이터 분석 · 경보 · 시계열
이상치를 찾는 기능을 갖춘 도구
scikit-learn · Elasticsearch · Kibana · 파이썬 · 머신러닝
응답 시간에 이상치를 만드는 원인
캐시 미스 · 가비지 컬렉션 · 가비지 컬렉션 정지 · 재시도 · 타임아웃 · 측정 오류
응답 시간 이상치를 지켜보는 지표
다른 이름: outlier · 이상값 · 특이값 · 아웃라이어