76. 이상치 (Outlier) 탐지 기법

⚠️ 이 문서는 "100명의 평균 월급이 200만 원인데 1명이 100억을 버는 바람에 전체 평균이 1억으로 뻥튀기되는 참사"처럼, 빅데이터를 기반으로 AI를 학습시키거나 통계를 낼 때 전체 모델의 멱살을 잡고 나락으로 끌고 가는 미친 듯이 튀는 데이터(Outlier)들을, 단순히 인간의 눈대중이 아니라 통계적 잣대(IQR, Z-Score)와 최첨단 머신러닝 알고리즘(DBSCAN, Isolation Forest)으로 색출하여 무자비하게 썰어버리거나 분석하는 '이상치 탐지(Anomaly Detection)' 기법을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 데이터의 정상적인 패턴(밀집 구역)에서 혼자 너무 멀리 떨어져 동떨어져 있는 '외톨이 데이터'를 수학적으로 검거하는 기술이다.
  2. 가치: 데이터를 청소하는 '전처리(Preprocessing)' 단계에서는 통계의 왜곡과 AI 학습 방해를 막기 위해 이 쓰레기들을 반드시 썰어 버려야(삭제/대체) 하지만, '신용카드 사기 탐지'나 '공장 불량품 색출' 업무에서는 역설적으로 이 튀는 놈(이상치) 1개가 100억의 가치를 지닌 황금 타겟이 되기도 한다.
  3. 기술 체계: 변수 1개일 땐 상자 수염 그림의 IQR이나 정규분포의 **Z-Score(3 이상)**로 잘라내고, 변수가 수십 개인 복잡한 우주에서는 뭉쳐있지 않은 놈을 쫓아내는 DBSCAN 밀도 군집화나 혼자 외딴 숲에 있는 놈을 고립시켜 잡는 Isolation Forest 알고리즘을 등판시킨다.

Ⅰ. 통계학의 칼춤: Z-Score와 IQR (1차원 색출술)

변수가 '월급' 딱 하나라면, 수학 공식 2개로 완벽히 썰어버릴 수 있다.

  1. Z-Score (표준 점수) - 정규분포의 철퇴:
    • 데이터가 종 모양(정규분포)으로 예쁘게 모여있다고 가정한다.
    • $Z = \frac{(\text{내 점수} - \text{평균})}{\text{표준편차}}$. 내가 전체 평균에서 얼마나 멀리 떨어져 있는지를 보여주는 전투력 측정기다.
    • 통계학의 헌법인 '경험적 규칙(68-95-99.7)'에 따르면, Z값이 $+3$을 넘거나 $-3$보다 작을 확률은 우주에서 고작 **0.3%**밖에 안 된다.
    • 즉, 엑셀에 1만 명의 데이터를 넣고 돌렸는데 Z-점수가 +3.5가 나온 놈이 있다? "넌 정상적인 인간이 아니다! 돌연변이(이상치)다!" 라며 빨간 줄을 긋고 즉시 삭제해 버린다.
  2. IQR (사분위수 범위) - 튼튼한 상자 수염 그림 (Box Plot) $\star$:
    • Z-Score의 치명적 약점: 이상치(워렌 버핏)가 1명 끼어있으면 평균과 표준편차 자체가 뻥튀기되어 버려 Z-점수 자체가 망가진다.
    • 그래서 평균을 버리고, 데이터를 순서대로 줄 세워 1/4(Q1, 25%) 지점과 3/4(Q3, 75%) 지점을 가위로 싹둑 자른다. 이 진짜 평범한 놈들 50%가 모여있는 상자의 길이를 **IQR (Q3 - Q1)**이라고 부른다.
    • 이상치 적발 공식: 상자 끝(Q3)에서 상자 길이의 1.5배(1.5 * IQR)만큼 울타리를 치고, 이 울타리 밖으로 삐져나온 놈들은 무조건 미친놈(Outlier)으로 간주하고 모조리 도려낸다. 이상치 하나가 들어와도 중앙 50% 뼈대(IQR)는 흔들리지 않는 극강의 방어력(Robustness)을 갖춘 실무 최강의 툴이다.

📢 섹션 요약 비유: 회사원의 지각 시간을 잡습니다. Z-Score는 평균이 5분이고 표준편차가 2분일 때, "너 12분 늦었어? Z값이 3이 넘네, 넌 해고야!"라고 자르는 깐깐한 수학 교사입니다. 하지만 어제 10시간 지각한 놈(워렌 버핏)이 있으면 평균이 1시간으로 뻥튀기되어 12분 지각생이 용서받는 멍청한 일이 생깁니다. IQR은 반에서 가장 성실한 중간 50% 애들(Q1~Q3)이 몇 분에 왔는지 기준(상자)을 먼저 잡습니다. 그리고 이 상자에서 1.5배 이상 심하게 늦은 놈들은 어제 누가 10시간을 지각했든 말든 흔들리지 않고 모조리 몽둥이로 때려잡는 뚝심 있는 철혈 학생주임입니다.


Ⅱ. DBSCAN (밀도 기반 군집화): 2차원 공간의 왕따 찾기

데이터가 '월급'과 '나이' 두 개로 섞이는 순간, 통계 잣대는 꺾인다. 지도를 펼쳐라.

  1. 다차원(Multi-dimensional) 이상치의 맹점:
    • 키 150cm (정상), 몸무게 100kg (정상). 각각 Z-Score로 검사하면 통과다.
    • 하지만 2차원 산점도(X축 키, Y축 몸무게) 지도를 그려보면, '키 150에 100kg'인 사람은 2차원 우주 저 멀리 혼자 동떨어져 있는 명백한 기형적 이상치다. 1차원 검사로는 절대 잡을 수 없다.
  2. DBSCAN (Density-Based Spatial Clustering of Applications with Noise):
    • 클러스터링(군집화) AI 알고리즘의 황태자다.
    • 원리: 도화지에 뿌려진 점(데이터)들 중에서, 자기들끼리 빽빽하게 뭉쳐서(Density) 거대한 덩어리(클러스터, 인싸 무리)를 이루고 있는 놈들을 싹 다 파란색으로 칠한다.
    • 그 후, 어느 파란색 무리에도 끼지 못하고 저 멀리 허공에 점 하나, 두 개씩 처박혀서 둥둥 떠다니는 외톨이 점들이 남는다.
    • 알고리즘은 이 외톨이 점들에게 가차 없이 -1 이라는 라벨(Noise, 쓰레기)을 강제로 부여하며 시뻘건 색으로 이상치 색출을 끝내버린다. (모양이 동그랗든 길쭉하든 상관없이 밀도만 뭉쳐있으면 완벽하게 구별해 낸다.)

📢 섹션 요약 비유: 고등학교 운동장에 100명의 학생(데이터)이 흩어져 있습니다. DBSCAN은 반경 2미터 안에 친구가 3명 이상 있는 학생들끼리 손을 잡게 만듭니다(밀도 기반 뭉치기). 이렇게 손을 잡아 거대한 인싸 무리(클러스터)가 만들어집니다. 손을 잡기가 끝나고 보니 운동장 저 구석 화장실 옆에 반경 2미터 내에 아무도 없어 쭈구리고 있는 왕따 학생(Noise) 3명이 보입니다. 선생님(AI)은 그 외톨이들 머리 위에 시뻘건 레이저 포인트(이상치 적발)를 쏘아 단박에 색출해 내는 잔인하고도 정교한 공간 밀도 색출법입니다.


Ⅲ. Isolation Forest (고립의 숲): 빅데이터 AI의 끝판왕 절단기

가장 미친놈은 칼(조건)을 한 번만 휘둘러도 즉시 베여 나간다.

  1. 트리(Tree)를 이용한 분할의 미학:
    • 2008년에 나온, 현대 빅데이터 이상 탐지 생태계를 완전히 박살 내고 평정한 최강의 머신러닝 알고리즘이다. 변수(차원)가 100개건 1,000개건 미친 듯이 빠르고 정확하다.
    • 원리: 수만 개의 데이터가 있는 숲(공간)에서, 허공에 아무렇게나 **랜덤으로 칼질(선 긋기 분할, Decision Tree)**을 사정없이 쫙쫙 그어댄다. 모든 데이터가 칼에 베여서 자신만의 외딴방 1칸에 완벽히 갇힐(고립, Isolation) 때까지 칼질을 반복한다.
  2. 이상치(Outlier)의 숙명 (적은 칼질로 고립됨):
    • 빽빽하게 모여있는 99%의 정상인(인싸)들을 한 명씩 독방에 가두려면? 칼질을 10번, 20번 수없이 촘촘하게 그어야만 겨우 한 명씩 쪼개진다. (칼질 횟수 많음)
    • 하지만 우주 저 멀리 혼자 떨어져 있는 이상치(워렌 버핏)는? 아무렇게나 대충 허공에 칼을 딱 1번~2번만 스윽 그어버려도, 워렌 버핏은 이미 혼자 덩그러니 외딴 독방에 갇혀버린다 (고립 완료).
  3. 스코어링 (Anomaly Score):
    • 알고리즘은 칼질(분할)을 몇 번 당했는지 횟수(Path Length)만 샌다.
    • "너는 칼질 2번 만에 혼자 고립됐네? 너 100% 이상치 악성 해커다! (Anomaly Score 1.0)"
    • "너는 칼질을 15번이나 당해서 겨우 방에 갇혔네? 넌 빽빽한 정상인 무리에 숨어있던 선량한 시민이구나. 통과! (Anomaly Score 0.0)"
    • 이 어이없을 정도로 직관적인 아이디어 덕분에, 복잡한 거리 계산(DBSCAN)을 아예 할 필요가 없어져 수천만 건의 신용카드 결제 로그에서 0.1초 만에 카드 사기꾼(FDS)을 색출해 내는 전설적인 스피드를 달성했다.

📢 섹션 요약 비유: 산속에 숨은 간첩을 잡습니다. Isolation Forest는 하늘에서 장님 헬기가 그물을 마구잡이로 무작위 투하(랜덤 칼질)하는 방식입니다. 산 한가운데 1만 명의 군인(정상 데이터)이 똘똘 뭉쳐 텐트 치고 자고 있습니다. 반면 간첩(이상치) 1명은 산 저 멀리 절벽 끝에 혼자 숨어있습니다. 헬기가 그물을 대충 아무 데나 툭 던졌는데(1~2번의 분할), 뭉쳐있는 1만 명의 텐트는 끄떡없지만 벼랑 끝에 혼자 있던 간첩은 재수 없게 그 그물 한 방에 즉시 잡혀버립니다(빠른 고립). AI는 "야, 이놈은 그물 1번 던졌는데 잡히는 걸 보니 무리에서 미친 듯이 떨어져 있던 수상한 놈(이상치)이 확실하다!" 라며 천재적인 직관으로 범인을 특정해 버리는 미친 역발상의 숲입니다.