AI VIDEO BRIEFING
고립 숲(Isolation Forest) 완전 정리: 트리 기반 이상치 탐지의 원리와 파이썬 활용법
무작위 트리에서 한 점을 고립시키는 데 드는 경로 길이로 이상치를 가려내는 고립 숲 알고리즘의 핵심 원리와, 트리를 여러 개 만들어 평균을 내는 이유, 그리고 사이킷런으로 오염도와 예측값(-1)을 다루는 실전 활용법까지 정리했다.

핵심 메시지
쉽게 이해하기
발표자는 쿡 거리, 마할라노비스 거리, Z 점수, 상자 그림에 이어 또 하나의 다변량 이상치 탐지 기법으로 고립 숲을 소개한다. 핵심 직관은 단순하다. 데이터를 흩뿌려 보면 가장자리의 극단값, 즉 이상치는 나머지 점들과 떼어내기가 쉽다는 것이다.
이름에 '숲'이 들어가는 점에서 랜덤 포레스트와 닮았지만 목적이 다르다. 랜덤 포레스트는 수치나 범주를 예측하는 알고리즘인 반면, 고립 숲은 오직 주어진 데이터 점이 이상치인지 아닌지를 가려내는 데 쓰인다. 두 기법 모두 여러 트리를 모은다는 공통점이 있다.
트리를 만드는 방식은 완전히 무작위다. 예를 들어 나이와 연봉 두 특성이 있다면, 먼저 한 특성을 무작위로 고르고(가령 나이) 그 범위 안에서 임의의 값(가령 25)을 골라 데이터를 둘로 가른다. 다시 무작위로 특성과 값을 골라 가르기를 반복해, 모든 점이 더 쪼갤 수 없는 말단 노드(잎)로 떨어질 때까지 분할을 이어간다.
한 점을 고립시키는 데 든 분할(규칙)의 수가 경로 길이다. 위키백과 예시처럼 중심의 점은 열 번 넘게 갈라야 떼어지지만 가장자리 점은 한두 번이면 충분하다. 무작위라 시도마다 분할 수가 달라지므로, 트리를 여러 개 만들어 점마다 평균 경로 길이를 구하고 이를 오름차순으로 정렬해 가장 짧은 점들을 이상치로 본다.
파이썬에서는 사이킷런 앙상블 모듈의 IsolationForest로 구현한다. 병렬 작업 수(n_jobs), 재현성을 위한 random_state, 그리고 전체에서 이상치로 볼 비율인 오염도(contamination)를 지정한다. 정답(y) 없이 fit으로 학습하고 predict로 판정하며, 이상치는 -1로 표시된다. 발표자는 고객 이탈 데이터에서 신용점수·잔액·추정연봉·나이 등 수치 열로 모델을 학습시키고, 이상치 비율이 과하면 오염도를 0.5%, 0.1% 등으로 낮춰 여러 번 반복 조정한다.
주요 인사이트
- 이상치 탐지를 '얼마나 멀리 떨어져 있나'가 아니라 '얼마나 쉽게 고립되나'로 바꿔 생각하는 발상의 전환이 고립 숲의 핵심이다.
- 단일 무작위 트리는 우연에 휘둘리지만, 많은 트리의 평균 경로 길이를 쓰면 안정적인 이상치 점수를 얻는다는 앙상블적 발상이 깔려 있다.
- 오염도는 정답이 아니라 가설에 가까워, 결과를 살펴보며 정상 데이터가 섞이면 비율을 낮추는 식의 반복 튜닝이 필요하다.
- 같은 '숲' 계열이라도 랜덤 포레스트는 값을 예측하고 고립 숲은 이상 여부만 가린다는 점에서 용도가 명확히 갈린다.
자주 묻는 질문
고립 숲에서 '경로 길이'란 무엇인가?
하나의 데이터 점을 무작위 분할로 완전히 고립시키기까지 필요한 분할(규칙)의 횟수다. 이상치는 적은 분할로 떨어져 경로 길이가 짧고, 중심부의 일반 점은 더 많은 분할이 필요해 경로 길이가 길다.
왜 트리를 여러 개 만들어 평균을 내는가?
분할이 무작위라 같은 점도 시도마다 필요한 분할 수가 달라지기 때문이다. 트리를 여러 개(예: 100개) 만들어 점마다 경로 길이의 평균을 구하면 우연의 영향을 줄여, 가장 짧은 평균 경로 길이를 가진 점을 안정적으로 이상치로 판정할 수 있다.
사이킷런에서 오염도(contamination)는 어떤 역할을 하나?
전체 데이터 중 이상치로 간주할 비율을 지정하는 값이다. 예컨대 1만 개 데이터에 1%를 주면 100개가 이상치로 표시된다. 결과에 정상 데이터가 너무 많이 섞이면 0.5%, 0.1% 등으로 낮춰 다시 학습하며 적정값을 찾는다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗