본문 바로가기

Statistics

Peak Over Threshold(POT)와 Epsilon Threshold


본 글에서는 비정상 데이터를 판단할 때 사용되는 임계값(기준값, threshold)를 설정하는 알고리즘 중 Peak Over Threshold(POT) SPOTEpsilon Threshold에 대해 살펴보고자 합니다. 


1. Pot Over Threshold(POT)

Peak Over Threshold(POT)는 극한치(극단값) 분포 이론(Extreme Value Thoery)을 기반으로 일변량 시계열 데이터(univariate time series)에서 비정상 데이터 여부를 판단하는 임계값(threshold)을 설정하는 방법론입니다.

 

비정상 데이터(anomaly data)는 보통 극단값(maximum 또는 minimum value)을 의미합니다. 비정상 데이터 여부를 판단하기 위해서는 보통 사용자(혹은 전문가)가 임의로 사전 지식 혹은 데이터 분포 가정을 바탕으로 수동으로 임계값(threshold)를 설정합니다. 하지만, POT 알고리즘을 사용할 경우, 전체 데이터에 대한 분포 가정을 하지 않으며 사용자는 임계값(threshold)에 대해서 수동으로 설정할 필요도 없습니다.

 


Question: 전체 데이터의 $q\%$ 이하를 비정상 데이터로 판단하도록 임계값 $z_q$를 어떻게 설정할 것인가?
즉, $P(X_t > z_q) < q$를 만족하는 $z_q$를 어떻게 찾을 것인가?

 

Answer: POT는 Extreme Value Theory(EVT)를 기반으로 임계값 $z_q$를 찾습니다.


1.1 Extreme Value Theory(EVT)

Extreme Value Theory(EVT)란, 데이터 집합에서 극단값(최댓값 또는 최솟값)의 분포를 적합하고 분석하는 통계적인 기법의 한 분야입니다. 

 

▶ Key point

EVT의 가장 중요한 특성은 데이터의 기존 분포에 관계없이 극단값의 분포는 특정한 분포로 수렴한다는 것입니다.

이는 'Central Limit Theorem(CLT, 중심극한정리)'와 유사한 특성을 가지는 것을 알 수 있습니다.

 

※ Central Limit Theorem(CLT)란, 동일한 확률분포를 가진 독립 확률 변수 $n$개의 평균의 분포는 $n$이 적당히 크면 기존의 분포와 관계없이 정규분포로 수렴한다는 이론. 즉, 모평균의 분포와 관계없이 데이터가 충분히 크면 표본평균은 정규분포로 수렴한다는 이론

 

CLT(중심극한정리)는 데이터의 개수가 충분히 큰 경우($n \to \infty$) 모집단의 분포와 관계없이 표본평균의 분포는 정규분포로 수렴합니다.
EVT(극단값 이론)은  데이터의 개수가 충분히 큰 경우($n \to \infty$) 모집단의 분포와 관계없이 극단값의 분포는 특정 Extreme Value Distribution $G_\gamma$(극단값 분포)로 수렴합니다.

 

▶ Extreme Value Distribution(극단값 분포)

극단값 분포는 식 $(1)$과 같은 형태를 가집니다.

$$G_\gamma: x \to exp(-(1+\gamma x)^{-\frac{1}{\gamma}}), \, r \in \mathbb{R}, 1+\gamma x >0 \tag{1}$$

극단값 분포의 모수인 extreme value index $\gamma$을 어떻게 설정하느냐에 따라 [Table 1]과 같이 크게 3가지 형태 standard distribution을 정의할 수 있습니다.

Tail behavior($x \to \tau$) Domain Example
Heavy Tail, $P(X > x) \approxeq x^{- \frac{1}{\gamma}}$ $\gamma > 0$ Frechet
Exponential Tail, $P(X > x) \approxeq e^{-x}$ $\gamma = 0$ Gamma
Bounded, $P(X>x) \underset{x \geq \tau}{=} 0$ $\gamma < 0$ Uniform

[Figure 1]: Tail Distribution $\bar{G}_r$ according to $\gamma$

 

 

 

 

[Figure 1]를 통해 $\gamma$ 값에 따라 서로 다른 극단값의 분포의 형태를 가지는 것을 알 수 있습니다.

$\gamma \geq 0$인 경우는, 부드럽게(smooth) 감소하는 형태인 반면,
$\gamma<0$인 경우는, 특정 값 이후로는 0인 값으로 절단(truncated)된 형태임을 알 수 있습니다.

 

 

 

 

 

 

본 글에서는 $\mathbf{X}$의  극단값 분포(꼬리 분포)를 $\bar{F}(x)=P(X>x)$로 명시하겠습니다.

 

▶ Extreme Value Theory(EVT)의 응용

EVT(극단값 이론)을 기반으로 모집단의 분포에 대한 사전 지식이 없어도 극단값 분포(꼬리 분포)를 특정 극단값 분포로 적합함으로써 $P(X < z_q) < q$를 만족하는 $z_q$를 추론할 수 있습니다.

 

[Figure 2] EVD fit of an unknown cdf

 

 

 

  • Given $q$,
    We can find $z_q$ such that $P(X>z_q)<q$.

즉, $\mathbf{X}=(X_1, X_2, \cdots, X_n)$ 의 극단값(꼬리) 분포 $\bar{F}$ Extreme Value Distribution(EVD) $\bar{G}_r$ 적합함으로써 극단값(extreme value)이 발생할 확률 $P(X>z_q)$을 계산할 수 있습니다.

 $\mathbf{X}=(X_1, X_2, \cdots, X_n)$는 이상치 점수(anomaly score)로 생각하시면 될 것 같습니다.

 

 

 

다만, 데이터 $\mathbf{X}$의 꼬리 분포로 적절한 EVD(극단값 분포)를 설정하기 위해서는 모수 $\gamma$를 추정해야 합니다. $\gamma$를 추정하는 대표적인 방법론으로는 "Hill's estimate""Pickands' estimate" 방법론이 존재하지만 두 방법론은 모두 특정 꼬리 분포에 대해서만 잘 작동한다는 단점이 존재합니다.

 

특정 극단값(꼬리) 분포를 이용하여 $P(X>z_q) < q$를 만족하는 $z_q$를 추론하는 또 다른 이론으로 Peak Over Threshold(POT)가 존재하며 이는 EVT의 second theorem인 Pickands-Balkema-de Haan Theorem을 기반한 방법론입니다.

본격적으로 POT에 대해서 살펴보고 정상 시계열 데이터(stationary time series data)에 대해서 임계값(threshold) $z_q$를 설정하는 SPOT 알고리즘을 설명하고자 합니다.

1.2 Peaks Over Threshold(POT) approach


▶ [Theorem 1] Pickands-Balkema-de Haan Theorem

The culmulative distribution function $F \in D_r$ if and only if a function $\sigma$ exists, for all $x \in \mathbb{R}$, s.t., $1+rx>0$:

$$\dfrac{\bar{F}(t + \sigma(t)x)}{\bar{F}(t)} \underset{t \to \tau}{\sim} (1+rx)^{-\frac{1}{r}}$$


[Theorem 1]을 응용하여 극단값 분포 $\bar{F}_t(x)$를 식 $(2)$와 같이 정의할 수 있습니다.

$$\bar{F}_t(x) = P(X-t>x|X>t) \underset{t \to \tau}{\sim} (1 + \dfrac{r x}{\sigma(x)})^{-\frac{1}{r}} \tag{2}$$

 

식 $(2)$는 임계값(threshold) $t$보다 큰 $X$에 한하여, $X-t$가 $x$보다 클 확률에 대한 분포를 정의하였습니다. 

$(1 + \dfrac{r x}{\sigma(x)})^{-\frac{1}{r}}$는 Generalized Pareto Distribution(GPD, 일반화 파레토 분포) 형태를 보입니다. 

 

※ Generalized Pareto Distribution(GPD)에 대한 참고자료: 위키피디아

 

즉, $Y_t = \{X_i - t | X_i > t\}$에 대해서 $Y_t$의 분포는 GPD를 따릅니다.

$$Y_t \sim GPD \text{  with parameter } \gamma, \sigma$$

※ 모수 $\mu$는 null 값인 GPD입니다.

 

▶ Extreme Value Theory(EVT) v.s. Peak Over Threshold(POT)

EVT의 경우, $\mathbf{X}$의 극단값에 대한 분포를 정의하였습니다. → $\color{darkred}{P(X_i>x)} \sim G_r$
POT의 경우, $\mathbf{Y} = \{X_i-t|X_i>t\}$의 극단값에 대한 분포를 정의하였습니다.  즉, $X_i$가 임계값(threshold) $t$보다 큰 데이터($X_i>t$)에 한하여 데이터 $X_i$와 임계값(threshold) $t$의 차이에 대해 분포를 정의하였습니다 $\color{darkred}{P(Y_i > x) = P(X_i - t > x | X_i>t)} \sim GPD$

 

▶ Maximum Likelihood Estimator(MLE) of $\hat{\gamma}, \hat{\sigma}$

GPD(일반화 파레토 분포)에는 2개의 모수 $\gamma$와 $\sigma$가 존재합니다. 모수 추정 방법으로는 "Method of Moments(MOM)", "Probability Weighted Moments(PWM)"과 "Maximum Likelihood Estimation(MLE)" 등이 존재합니다. POT에서는 MOM과 PWM보다 더 efficient하고 robust한 MLE로 모수 $\gamma$와 $\sigma$를 추정합니다.

 

[Log likelihood of GPD]

GPD(일반화 파레토 분포)의 로그 가능도 함수는 식 $(3)$과 같습니다.

$$log L(\gamma, \sigma) = l(\gamma, \sigma) = -N_t log \sigma - (1+\dfrac{1}{r}) \sum^{N_i}_{i=1} log(1+\dfrac{r}{\sigma}Y_i) \tag{3}$$

  • $Y_i = X_i - t > 0 \text{  for  } X_i > t$

식 $(3)$을 최대화하는 $\theta = (\gamma, \sigma)$를 계산함으로써 데이터와 가장 잘 맞는(적합한) $\hat{\gamma}^{MLE}, \hat{\sigma}^{MLE} \text{  s.t.  } \nabla l(\gamma, \sigma) = 0$ 를 추정할 수 있습니다. 

 

식 $(3)$을 $\theta = (\gamma, \sigma)$에 대해서 미분함으로써 $\hat{\gamma}^{MLE}$와 $\hat{\sigma}^{MLE}$ 를 추정하는데 계산상 복잡하고 어렵습니다. 이에 대하여 GPD(일반화 파레토 분포)의 경우 보통 "Grimshaw's trick"를 사용하여 모수 $\theta = (\gamma, \sigma)$를 추정합니다. Grimshaw 방법론은 'two variable optimization problem' 'single variable optimization problem'으로 변환하여 모수를 추정하는 방법론입니다.


▶Grimshaw's trick

 

만약 $\nabla l(\gamma, \sigma)=0$을 만족하는 최적해(solution)가 $\gamma^*, \sigma^*$인 경우, $x^* = \gamma^*/ \sigma^*$은 scalar equation $u(x)v(x)=1$의 최적해(solution)입니다.

$$u(x) = \dfrac{1}{N_t} \sum^{N_t}_{i=1} \dfrac{1}{1+xY_i}, \, v(x) = 1 + \dfrac{1}{N_t} \sum^{N_t}_{i=1} log(1+xY_i) \tag{4}$$

 

즉, 식 $(4)$의 최적해 $x^*$를 추정함으로써(→ single variable optimization problem)
우리는 $\gamma^* = v(x^*) - 1$과 $\sigma^* = \gamma^*/x^*$를 추정할 수 있습니다( → two variable optimization problem )

 

Grimshaw의 방법론을 사용하기 위해서는 $1+xY_i$는 항상 양수이어야 한다는 조건을 만족해야 합니다. 


POT에서 $\mathbf{Y} = \{X_i - t | X_i > t\}$으로 정의하였기 때문에 $Y_i$는 항상 양수입니다. Grimshaw의 조건을 만족하기 위해서는 $(- \dfrac{1}{Y^M}, + \infty)$  사이에 존재하는 최적해 $x^*$를 추정해야 합니다($Y^M = \max Y_i$).


▶ Calculate quantile $z_q$ with MLE $\hat{\gamma}, \hat{\sigma}$

Grimshaw의 방법론을 이용하여 GPD(일반화 파레토 분포)의 로그 가능도 함수를 최대화하는 최적해(solution) $\hat{\gamma}$, $\hat{\sigma}$를 추정함으로써 우리는 $P(Y_i>z_q) = P(X_i - t > z_q | X_i >t) < q$를 만족하는 $z_q$를 추정할 수 있습니다.

$$\color{darkred}{z_q \simeq t + \dfrac{\hat{\sigma}}{\hat{\gamma}}((\dfrac{qn}{N_t})^{-\hat{\gamma}}-1)}$$

$$\text{s.t. } \bar{F}_t(x) = P(X-t>z_q|X>t) \underset{t \to \tau}{\sim} (1 + \dfrac{r x}{\sigma(x)})^{-\frac{1}{r}} < q$$

  • $t$: "high" threshold
  • $q$: desired probability
  • $n$: the total number of observations
  • $N_t$: the number of peaks. i.e. the number of $X_i$ s.t. $X_i >t$

1.3 SPOT algorithm

지금까지 $\mathbf{X}$의 분포(모집단의 분포)에 대한 강한 가정 없이 $P(Y_i>z_q) = P(X_i - t > z_q | X_i >t)$의 분포(극단값의 분포)에 Generalized Pareto Distribution을 적합함으로써 $P(Y_i>z_q) < q$를 만족하는 $z_q$를 추정하는 Peak Over Threshold(POT) 방법론에 대해 살펴보았습니다.

 

[Section 1.3 SPOT algorithm]에서는 정상 시계열 데이터에 대해서 $P(Y_i>z_q) = P(X_i - t > z_q | X_i >t) < q$를 만족하는 초기값 $z_q$를 설정하고 새로 들어오는 데이터를 기반으로 $z_q$를 업데이트하는 SPOT 알고리즘에 대해 살펴보고자 합니다.


  • [First step]: initialization step with computs an threshold $z_q$ from $n$ observations $X_1, X_2, \cdots, X_n$
  • [Second step]: update $z_q$ with the incoming data and use it as a decision bound

1.3.1 Initialization setup

[Figure 3] Anomaly Detection Overview

▶ Input Value of POT

- $n$개의 관측된 데이터 $X_1,X_2, \cdots, X_n$

- 확률값 $q$(고정된 값)

 

▶ Output Value of POT

$P(Y_i>z_q) = P(X_i - t > z_q | X_i >t) < q$를 만족하는 $z_q$

 

▶ Process

1. 임계값 $t$는 최대한 높게 설정합니다.

2. 임계값 $t$보다 큰 $X_i$인 Peaks를 얻을 수 있습니다.

3. $ \mathbf{Y}_t = \{X_i-t|X_i>t\}$를 peaks set으로 정의합니다.

4. $\mathbf{Y_t}$의 분포(Peaks set)은 Generalized Pareto Distribution(GPD)를 따른다고 가정함으로써 Grimshaw 방법론을 기반으로 모수 $\hat{\gamma}, \hat{\sigma}$를 추정합니다.

5. 추정된 모수 $\hat{\gamma}, \hat{\sigma}$와 $t$를 기반으로 $P(Y_i>z_q) = P(X_i - t > z_q | X_i >t) < q$를 만족하는 $z_q \simeq t + \dfrac{\hat{\sigma}}{\hat{\gamma}}((\dfrac{qn}{N_t})^{-\hat{\gamma}}-1)$를 계산합니다.

 

▶ Initial Threshold $t$를 설정하는 방법

임계값 $t$를 설정하는데 중요한 단 하나의 조건은 $z_q$보다 낮게 설정해야 합니다($t < z_q$). 

 

▶ Calibration Step(교정 단계)

[Algorithm 1]은 training step(훈련 단계)로 보일 수 있지만 초기 설정 단계(initialize step) 혹은 calibration step(교정 단계)로 초기값 $z_q$를 설정하는 단계입니다. 즉, [Figure 3]에서 "calibration" 부분에 해당하는 데이터 $X_1,X_2, \cdots, X_n$를 바탕으로 "stream" 부분에서 비정상 데이터 판단 여부로 사용할 $z_q$를 추정하였습니다.

 

※ 교정 단계는 지시값(indication, $z_q$)와 내가 재려고 하는 양(quantity, $q$) 간의 관계를 수립하고 이를 바탕으로 측정 결과(measurement result)를 얻는 단계를 의미합니다.

※ 논문에 따르면 training step이 아닌 이유는 초기 배치 $X_1,X_2, \cdots, X_n$에 대해 labeling하지 않았으며 ground truth(실제값)도 고려하지 않았기 때문입니다.

1.3.2 SPOT: Finding Anomalies in stream

 [Section 1.3.2 Finding Anomalies in stream]에서 $z_q$를 업데이트하는 과정에 대해 살펴보겠습니다([Figure 3]에서 "stream" 부분 참조).

▶The principle of the SPOT algorithm

SPOT 알고리즘에서 새로 들어오는 데이터(stream data) $X_i, i >n$는 모두 같은 분포를 가져야 한다는 필요 조건이 존재합니다. 즉, stream data $X_i, i >n$의 분포는 시간에 의존해서는 안 됩니다. 우리는 시계열 데이터의 평균 및 공분산이 시간에 의존하지 않은 경우 정상성(stationary)을 만족한다고 지칭합니다.

 

▶ Step

[First step: Initialization step]: POT($X_1, \cdots, X_n, q$)

[Section 1.3.1]에서 살펴보았던 POT  알고리즘으로 $X_1, \cdots, X_n$의 데이터를 바탕으로 POT를 수행함으로써 초기값 $z_q$를 얻습니다(Algorithm 1).

  • Return(반환값): $z_q, t$

 

[Second step: Update step]

새로 들어오는 데이터 $X_i, \text{ for }  i >n$로부터 $z_q$를 업데이트하며 아래와 같이 3가지 케이스로 나눌 수 있습니다.

 

"Anomaly case": $X_i > z_q$

만약, 새로 들어온 데이터 $X_i, \text{ for }i>n$가 $z_q$보다 큰 경우 비정상 데이터로 판단하고 비정상 데이터 집합 $\mathbf{A}$에 추가하며 SPOT 업데이트에 관여하지 않습니다.

"Real Peak Case": $X_i > t$

만약, 새로 들어온 데이터 $X_i, \text{ for }i>n$가 $t$보다 큰 경우 $X_i$는 peaks set $\mathbf{Y}_t$에 추가됨으로써 임계값 $z_q$가 새로 업데이트 됩니다.

"Normal Case":$X_i < t$

만약, 새로 들어온 데이터 $X_i, \text{ for }i>n$가 $t$보다 작은 경우는 peaks set $\mathbf{Y}_t$의 변함이 없기 때문에 임계값 $z_q$는 새로 업데이트 되지 않습니다.


지금까지 모집단의 분포에 관계없이 극단값에 대한 분포는 특정 극단값 분포에 수렴한다는 Extreme Value Thoery(EVT)를 기반으로 임계값을 추정하는 Peak Over Threshold(POT) 방법론에 대해 살펴보았습니다.

 

POT는 모든 데이터 $\mathbf{X}$를 사용하지 않고 임계값 $t$보아 큰 데이터 $X_i > t$에 한해서 $z_q$를 추정하였다는 점에서 low memeory를 갖는다는 장점이 존재합니다. 

 

요약하면,

POT는 $Y_t = \{X_i-t>x|X_i>t\} \sim \text{Generalized Pareto Distribution(GPD) with parameter } \gamma, \sigma$를 설정함으로써 $P(Y_i>z_q) = P(X_i - t > z_q | X_i >t) < q$를 만족하는 초기값 $z_q$를 추정하였습니다. 새로 들어오는 데이터 $X_i, \text{ for } i>n$가 $z_q$보다 큰 경우, $t$보다 큰 경우, $t$보다 작은 경우에 대해서 3가지로 분류함으로써 $z_q$가 업데이트 됩니다.


 

2. Epsilon Threshold

[Section 2]에서는 비정상 데이터 판단 여부를 결정하는 임계값을 설정하는 또 다른 방법론인 epsilon threshold에 대해 간단하게 살펴보고자 합니다.

▶ Step

1. Construct set of threshold $\epsilon$

$$\mathbf{\epsilon}  =  \mu(\mathbf{e}_s) + z \sigma(\mathbf{e}_s)$$

$\mathbf{e}_s$: train dataset(normal dataset)의 anomaly score(이상치 점수)

  • $\mu(\mathbf{e}_s)$: $\mathbf{e}_s$의 평균(정상 데이터의 이상치 점수 평균)
  • $\sigma(\mathbf{e}_s)$: $\mathbf{e}_s$의 표준편차(정상 데이터의 상치 점수 표준편차)
  • $z>0$ 오름차순 혹은 내림차순으로 배열된 집합, 보통 2에서 10 사이의 값을 갖도록 설정.
    $z = \{2.5,3.0,3.5, \cdots, 9.0,9.5,10.0\}$

즉, $\mathbf{\epsilon}$은 정상 데이터의 이상치 점수의 평균값으로부터 특정 표준편차($z \sigma(\mathbf{e}_s)$) 떨어진 상한값(upper confidence bound)의 집합입니다.

2. Select $\epsilon$

우리는 임계값 후보 집합 $\mathbf{\epsilon}$ 중 식 $(5)$가 가장 큰 $\epsilon$을 최종 임계값으로 선택합니다.

$$\mathbf{\epsilon} = argmax(\epsilon) = \dfrac{\triangle \mu(\mathbf{e}_s)/\mu(\mathbf{e}_s) + \triangle \sigma(\mathbf{e}_s)/\sigma(\mathbf{e}_s)}{|\mathbf{e}_a| + |\mathbf{E}_{seq}|^2} \tag{5}$$

  • $\triangle  \mu(\mathbf{e}_s) = \mu(\mathbf{e}_s) - \mu(\{e_s \in \mathbf{e}_s | e_s < \epsilon\})$
  • $\triangle  \sigma(\mathbf{e}_s) = \sigma(\mathbf{e}_s) - \sigma(\{e_s \in \mathbf{e}_s | e_s < \epsilon\})$
    • $\{e_s \in \mathbf{e}_s | e_s < \epsilon\})$: 평균과 upper confidence bound 사이에 있는 값들(평균 근처에 있는 데이터들)
  • $\mathbf{e}_a = \{e_s \in \mathbf{e}_s|e_s > \epsilon\}$
    • $\{e_s \in \mathbf{e}_s|e_s > \epsilon\}$: upper confidence bound를 벗어나는 값들(정상 데이터의 이상치 점수 평균 근처에서 벗어나는 값들)
  • $\mathbf{E}_{seq}$= continuous sequences of $e_a \in \mathbf{e}_a$ 

분모 $ |\mathbf{e}_a| + |\mathbf{E}_{seq}|^2 $ 는 penalty term으로 비정상 데이터 객체 수가 너무 많게 판단되지 않도록 규제하는 term입니다.

 

▶ Step

Epslion threshold에 대한 이해를 돕고자 참고자료로 구현된 코드를 첨부하였습니다.

def epsilon_threshold(train_scores, reg_level=1):
    e_s = train_scores
    best_threshold = None
    max_score = -10000000
    mean_e_s = np.mean(e_s) ## train score의 평균 및 표준편차
    sd_e_s = np.std(e_s)

    for z in np.arange(2.5, 12, 0.5):
        epsilon = mean_e_s + sd_e_s * z ## 정상,비정상 판단
        pruned_e_s = e_s[e_s < epsilon] ## e_s 값이 epsilon 값보다 작은 값들 ## 정상 객체

        i_anom = np.argwhere(e_s >= epsilon).reshape(-1, ) ## e_s 값이 espilon 값보다 큰 경우 ## 비정상 객체의 위치
        buffer = np.arange(1, 50) ## 주변 데이터 포인트 사이의 잠재적인 상관관계나 종속성 포착
        i_anom = np.sort(
            np.concatenate(
                (
                    i_anom,
                    np.array([i + buffer for i in i_anom]).flatten(),
                    np.array([i - buffer for i in i_anom]).flatten(),
                )
            )
        )
        i_anom = i_anom[(i_anom < len(e_s)) & (i_anom >= 0)] ## 인덱스 범위가 0보다 작거나 e_s의 길이보다 큰 경우 인덱스 제거
        i_anom = np.sort(np.unique(i_anom)) ## 최종적인 i_anom에는 데이터셋 내의 모든 비정상적인 인스턴스의 인덱스와 인근 데이터 포인트가 포함
        
        if len(i_anom) > 0:
            mean_perc_decrease = (mean_e_s - np.mean(pruned_e_s)) / mean_e_s
            sd_perc_decrease = (sd_e_s - np.std(pruned_e_s)) / sd_e_s
            denom = None
            if reg_level == 0:
                denom = 1
            elif reg_level == 1:
                denom = len(i_anom)
            elif reg_level == 2:
                denom = len(i_anom) ** 2
                
                # denom => penalty term
            score = (mean_perc_decrease + sd_perc_decrease) / denom

            if score >= max_score and len(i_anom) < (len(e_s) * 0.5):
                max_score = score
                best_threshold = epsilon

    if best_threshold is None:
        best_threshold = np.max(e_s)
    return best_threshold

본 글에서는 비정상 데이터를 판단하는 임계값을 설정하는 방법 중 통계적인 기법으로 Peak Over Threshold(POT)와 Epslion Threshold에 대해 살펴보았습니다. 사용자(혹은 전문가)가 사전 지식을 바탕으로 수동으로 임계값을 설정하지 않고 모델로부터 산출된 이상치 점수(anomaly score)를 기반으로 POT의 경우는 이상치 점수의 극단값의 분포를 적합함으로써 espilon threshold는 이상치 점수의 평균과 표준편차를 이용함으로써 임계값을 설정하였습니다. 


 

'Statistics' 카테고리의 다른 글

Variational Inference(변분법)  (0) 2024.06.24
Generalized Linear Model For Count Time Series  (0) 2023.12.11
Oracle P-values and variable screening  (0) 2022.11.27