Isolation Forest

Isolation Forest

March 2, 2025
Review, writing
Anomaly, IsolationForest

Isolation Forest 관련 논문을 읽고 알고리즘을 파악해보려고 합니다.

1 Isolation Forest Intro #

“Anomalies are data patterns that have different data characteristics from normal instances” (Liu et al., 2008)

이상치는 정상 instances 와 다른 데이터 특성을 가진 데이터 패턴이다 라고 제시하고 있고,

이상 탐지는 데이터에서 평소와 다른 비정상적인 패턴을 찾는 과정이라고 정의를 해 볼 수 있습니다.

기존의 이상 탐지 방법들은 정상적인 데이터의 패턴을 먼저 학습하고, 이를 벗어나는 데이터를 이상치로 간주하는 방식을 사용했습니다.

하지만, 정상 데이터를 학습하는 데 시간이 오래 걸리고,

고차원 데이터에서는 성능이 떨어지며,

훈련 데이터에 이상치가 포함되지 않으면 탐지하기 어렵습니다.

이런 문제를 해결하기 위해 Isolation Forest 방법이 제시되었습니다.

2 격리하는 새로운 방식 #

Isolation Forest 개념

기존 방법과는 다르게 정상 데이터를 학습하지 않고, 대신 이상치를 빠르게 격리하는 방식을 사용하는 방법도 있습니다.

이는 정상 데이터보다 이상치들이 더 쉽게 분리된다는 원리를 활용한 것 입니다.

핵심 아이디어는

랜덤한 분할로 트리를 만들고,

이상치는 적은 분할 횟수로 격리되는 것입니다. 즉 이상치는 경로 길이가 짧고,

정상 데이터는 많이 나뉘어야 격리 되고, 경로 길이가 깁니다.

이 방식을 사용하면 데이터가 많아도 빠르게 이상치를 찾을 수 있고, 고차원 데이터에서도 성능이 유지됩니다.

3 동작 과정 #

여러 개의 트리들을 생성하고, 경로 길이를 분석하여 이상치를 탐지하는 방식으로 동작합니다.

3.1 여러 개의 isolation tree(itree) 생성 #

알고리즘 1

여러 개의 isolation tree를 생성해서 forest를 구성하도록 합니다.

여러 개의 트리를 만들기 위해서,

데이터에서 일부 샘플을 무작위로 선택합니다.

각 트리에서 데이터를 랜덤하게 분할하여 빠르게 이상치를 격리합니다.

트리의 깊이를 제한해서 과적합을 방지합니다.

알고리즘 1의 경우 forest를 초기화하고(여러 개의 트리를 저장할 빈 숲을 만들며)

최대 트리 깊이를 설정합니다. t번 정도 isolation tree 생성 반복을 해서 t개의 iTree를 생성하여 forest에 추가합니다.

각 트리는 데이터셋 X에서 랜덤하게 샘플링된 Psi (기호 적기 귀찮…) 개의 데이터를 사용해서 학습합니다.

생성된 t개의 isolation tree 를 반환합니다.

이 단계에선 여러 개의 iTree를 만들어 isolation Forest를 구성합니다.

3.2 경로 길이 측정 #

데이터 포인트는 isolation tree 에서 격리될 때까지의 path length를 계산합니다.

알고리즘 2

이상치는 경로 길이가 짧고

적은 분할 횟수로 쉽게 격리되며

정상 데이터는 경로 길이가 길며

많은 분할 횟수가 필요합니다.

측정한 경로 길이 값을 평균 내어 Anomaly Score, 이상 점수를 계산합니다.

좀 더 동작 과정을 설명하면 종료 조건을 확인하고 트리 깊이가 최대 깊이에 도달하거나 데이터 크기가 1이하면 종료 합니다. 이 때 외부 노드를 생성하고 데이터 크기를 저장합니다.

분할 속성 및 갚을 선택합니다 q, p

데이터 분할의 경우 분할 값 p 를 기준으로 데이터를 두 개의 그룹으로 나누는데 왼쪽 서브트리 오른쪽 서브트리로 나뉩니다.

재귀적으로 iTree를 생성하고,

데이터를 랜덤하게 분할하면서 트리를 생성하며, 이상치가 더 빠르게 격리되도록 합니다.

3.3 Anomaly Score 계산 #

알고리즘 3

외부 노드인지를 확인하고,

분할 속성 및 값을 확인합니다. 현재 노드에서 데이터를 분할한 속성 q와 분할 값 p를 가져옵니다.

경로 탐색이 시작하고 탐색할 때마다 경로 길이를 1 증가합니다.

특정 데이터 포인트 x의 경로 길이를 측정하여 이상치인지 판단하는 기준을 제공합니다

anomaly score가 1에 가까우면 이상치,

0.5에 가까우면 정상 데이터

장점 #

빠른 실행 속도… nlogn의 실행 속도를 가집니다.

고차원 데이터에 강하고 속성들이 많아도 성능을 유지할 수 있으며,

훈련 데이터에 이상치가 없어도 탐지를 가능하게 할 수 있습니다. 기존 방법보단 유연하고,

샘플링을 활용하여 연산 최적화를 할 수 있습니다. 일부 데이터만 사용해도 높은 정확도를 유지할 수 있습니다.

현업이라면 금융 사기 탐지나 네트워크 보안, 제조 결함 감지와 같이 빠르고 효율적인 탐지가 필요한 곳이면 적용해 볼 가능성이 있습니다.

해당 접근 방법이 중요한 이유는,

랜덤 분할로 이상치를 빠르게 찾아낼 수 있고, 기존의 거리나 밀도 기반 방법보다는 효율적이며, 대량 데이터와 고차원 데이터에서도 강력한 성능을 가질 수 있습니다.

정리 #

정리하면,

먼저, 여러 개의 isolation Tree를 생성해서 숲을 구성하고,

두 번재로, 데이터를 랜덤하게 분할하여 개별 트리를 구축,

세 번째, 새로운 데이터 포인트 x가 트리에서 얼마나 빠르게 격리되는지를 측정하고,

네 번째, 여러 트리에서 얻은 경로 길이를 기반으로 이상 점수를 결정하며,

마지막, 이상 점수가 특정 임계값 이상이면 이상치로 판단합니다.

끝.

Reference #

Liu, F. T., Ting, K. M., & Zhou, Z. (2008). Isolation forest. Proceedings of the 2008 IEEE International Conference on Data Mining (ICDM), 413-422. https://doi.org/10.1109/ICDM.2008.17