graph TD A[정상 데이터] --> B[모델 학습] B --> C[이상 점수 계산] C --> D{임계값 비교} D -->|점수 > 임계값| E[이상 탐지] D -->|점수 ≤ 임계값| F[정상 판정]
Local Outlier Factor를 이용한 이상 탐지
6/5/15
이상 탐지 (Anomaly Detection)는
정상적인 패턴에서 벗어난 데이터를 식별하는 기술
graph TD A[정상 데이터] --> B[모델 학습] B --> C[이상 점수 계산] C --> D{임계값 비교} D -->|점수 > 임계값| E[이상 탐지] D -->|점수 ≤ 임계값| F[정상 판정]
개별 데이터 포인트가 이상인 경우
특정 맥락에서만 이상인 경우
데이터 집합이 이상인 경우
핵심 과제
이상 탐지의 가장 큰 어려움은 “정상”의 정의가
명확하지 않다는 점
1. 통계적 방법
2. 기계학습 방법
3. 거리 기반 방법
4. 앙상블 방법
방법 | 장점 | 단점 | 적용 분야 |
---|---|---|---|
통계적 | 간단, 해석 용이 | 분포 가정 필요 | 단변량 데이터 |
One-Class SVM | 고차원 데이터 | 매개변수 조정 복잡 | 텍스트, 이미지 |
Isolation Forest | 빠른 속도 | 해석 어려움 | 대용량 데이터 |
LOF | 밀도 기반, 지역적 | 계산 복잡도 | 클러스터 데이터 |
LOF의 장점
LOF는 데이터의 지역적 밀도를 고려하여
다양한 밀도를 가진 클러스터에서도 효과적으로 작동합니다.
LOF (Local Outlier Factor)는 각 데이터 포인트의 지역적 밀도를
이웃 포인트들과 비교하여 이상 정도를 측정
핵심 아이디어:
LOF 값 해석:
graph TD A[데이터 포인트] --> B[k-최근접 이웃 찾기] B --> C[지역 밀도 계산] C --> D[이웃들의 밀도와 비교] D --> E[LOF 값 계산] E --> F{LOF > 임계값?} F -->|Yes| G[이상 탐지] F -->|No| H[정상 판정]
k-distance(p): 점 p에서 k번째 가장 가까운 이웃까지의 거리
1. k-최근접 이웃 찾기
2. 도달 거리 계산
3. 지역 도달 밀도 계산
4. LOF 값 계산
1. k-distance \[k\text{-distance}(p) = \text{distance to } k\text{-th NN}\]
2. Reachability Distance \[\text{reach-dist}_k(p,o) = \max\{k\text{-distance}(o), d(p,o)\}\]
3. Local Reachability Density \[\text{LRD}_k(p) = \frac{1}{\frac{\sum_{o \in N_k(p)} \text{reach-dist}_k(p,o)}{|N_k(p)|}}\]
4. Local Outlier Factor \[\text{LOF}_k(p) = \frac{\sum_{o \in N_k(p)} \frac{\text{LRD}_k(o)}{\text{LRD}_k(p)}}{|N_k(p)|}\]
여기서:
def LOF(data, k):
for each point p in data:
# 1. k-최근접 이웃 찾기
neighbors = find_k_nearest_neighbors(p, k)
k_dist = distance_to_kth_neighbor(p, neighbors)
# 2. 도달 거리 계산
reach_distances = []
for neighbor in neighbors:
neighbor_k_dist = distance_to_kth_neighbor(neighbor, k)
reach_dist = max(neighbor_k_dist, distance(p, neighbor))
reach_distances.append(reach_dist)
# 3. 지역 도달 밀도 계산
lrd_p = k / sum(reach_distances)
# 4. LOF 계산
lrd_sum = sum(calculate_lrd(neighbor, k) for neighbor in neighbors)
lof_p = lrd_sum / (k * lrd_p)
return lof_values
k 값이 작을 때 (k=3~5)
k 값이 클 때 (k=20~50)
graph LR A[k 값 선택] --> B{데이터 특성} B -->|밀집된 클러스터| C[작은 k] B -->|분산된 데이터| D[큰 k] B -->|노이즈 많음| E[큰 k] B -->|세밀한 탐지| F[작은 k]
주의사항
k 값은 데이터의 특성과 도메인 지식을 고려하여
선택해야 합니다.
시나리오:
특징:
결과:
장점:
도전 과제:
데이터 특성:
전처리:
LOF 설정:
성능 지표:
운영 효과:
적용 분야:
데이터 특성:
LOF 활용:
성과:
핵심 성공 요인:
분류 성능 지표:
특수 지표:
graph TD A[성능 평가] --> B[정확도 지표] A --> C[효율성 지표] A --> D[안정성 지표] B --> E[Precision/Recall] B --> F[F1-Score] B --> G[AUC-ROC] C --> H[처리 시간] C --> I[메모리 사용량] D --> J[매개변수 민감도] D --> K[노이즈 강건성]
알고리즘 | Precision | Recall | F1-Score | 처리시간 | 메모리 |
---|---|---|---|---|---|
LOF | 0.89 | 0.76 | 0.82 | 중간 | 높음 |
Isolation Forest | 0.85 | 0.82 | 0.84 | 빠름 | 낮음 |
One-Class SVM | 0.82 | 0.71 | 0.76 | 느림 | 중간 |
DBSCAN | 0.78 | 0.83 | 0.80 | 빠름 | 중간 |
LOF의 특징
네트워크 침입 탐지 데이터셋
LOF 성능:
신용카드 사기 탐지 데이터셋
LOF 성능:
NASA 우주왕복선 데이터셋
LOF 성능:
장점:
단점:
성능 최적화
적응형 LOF
하이브리드 접근
도메인 특화
기술적 발전:
응용 분야 확장:
graph TD A[LOF 발전 방향] --> B[성능 향상] A --> C[적용 확장] A --> D[기술 융합] B --> E[분산 처리] B --> F[근사 알고리즘] C --> G[새로운 도메인] C --> H[실시간 시스템] D --> I[딥러닝 결합] D --> J[설명 가능 AI]
LOF의 핵심 가치:
실무 적용 시 고려사항:
성공적인 LOF 적용을 위한 팁
질문과 토론
seonghak.hong@email.com
https://aidenhong.com
https://github.com/euriion
“데이터 속에 숨겨진 이상을 찾는 것은 바늘 찾기가 아니라,
패턴을 이해하는 것입니다.”
Anomaly Detection and LOF | 홍성학