One-Class SVM
One-Class SVM
One-Class SVM(One-Class Support Vector)은 비지도 학습(Unsupervised Learning) 기반의 이상 탐지(Anomaly Detection) 알고리즘 중 하나로, 주어진 데이터가 정상(normal) 데이터인지, 아니면 이상(anomaly 또는 outlier) 데이터인지를 판단하는 데 사용된다. 전통적인 SVM이 주로 분류 문제를 해결하기 위해 두 개 이상의 클래스를 구분하는 반면, One-Class SVM은 하나의 클래스(정상 데이터)만 학습하고, 이 클래스의 분포 범위를 벗어나는 데이터를 이상치로 간주한다.
이 기법은 이상 탐지, 네트워크 침입 탐지, 결함 탐지, 금융 사기 탐지 등 정상 데이터는 충분히 확보할 수 있지만 이상 데이터는 드물거나 라벨링이 어려운 분야에서 널리 활용된다.
개요
One-Class SVM은 2001년 Bernhard Schölkopf와 동료들에 의해 제안된 알고리즘으로, Support Vector Machine(SVM)의 확장 형태이다. 핵심 아이디어는 정상 데이터를 포함하는 고차원 공간 내의 가능한 작고 조밀한 영역을 찾는 것이다. 이를 위해 알고리즘은 입력 데이터를 고차원 특징 공간으로 매핑하고, 원점(origin)에서 이 데이터들을 가능한 멀리 떨어뜨리는 초평면(hyperplane)을 찾는다.
결과적으로, 이 초평면은 정상 데이터의 경계를 정의하며, 새로운 데이터 포인트가 이 경계 안에 있으면 "정상"으로, 밖에 있으면 "이상치"로 분류된다.
작동 원리
1. 기본 개념
One-Class SVM은 다음과 같은 가정을 바탕으로 한다:
- 학습 데이터는 모두 정상 데이터로 구성되어 있다.
- 정상 데이터는 고차원 공간 내에서 특정한 밀도 영역에 집중되어 있다.
- 이상 데이터는 이 밀도 영역 밖에 위치한다.
목표는 정상 데이터를 가능한 한 잘 포함하면서도, 원점에서 멀리 떨어진 경계를 찾는 것이다. 이를 수학적으로 표현하면, 다음과 같은 최적화 문제를 해결한다:
[ \min_{\mathbf{w}, \rho, \xi_i} \frac{1}{2} |\mathbf{w}|^2 - \rho + \frac{1}{[nu](/doc/%EA%B8%B0%EC%88%A0/%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5/%EB%AA%A8%EB%8D%B8%20%ED%8F%89%EA%B0%80/nu) n} \sum_{i=1}^{n} \xi_i ]
제약 조건:
[ \mathbf{w} \cdot \phi(\mathbf{x}_i) \geq \rho - \xi_i, \quad \xi_i \geq 0 ]
여기서: - (\mathbf{w}): 초평면의 가중치 벡터 - (\rho): 결정 경계의 오프셋 - (\phi(\mathbf{x}_i)): 입력 데이터 (\mathbf{x}_i)를 고차원 특징 공간으로 매핑한 값 - (\xi_i): 슬랙 변수 (이상치 허용 정도) - (\nu): 사용자가 설정하는 하이퍼파라미터로, 이상치의 비율 상한 및 마진 오류를 제어 (0 < (\nu) ≤ 1)
2. 커널 함수 사용
One-Class SVM은 선형 경계로 제한되지 않으며, RBF(Radial Basis Function), 다항식, 시그모이드 등 다양한 커널 함수를 사용하여 비선형 데이터 분포도 효과적으로 모델링할 수 있다. 특히 RBF 커널은 대부분의 실제 응용에서 가장 널리 사용된다.
예: RBF 커널
[
K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-[gamma](/doc/%EA%B8%B0%EC%88%A0/%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5/%EB%AA%A8%EB%8D%B8%20%ED%8F%89%EA%B0%80/gamma) |\mathbf{x}_i - \mathbf{x}_j|^2)
]
주요 하이퍼파라미터
One-Class SVM의 성능은 다음과 같은 두 가지 주요 하이퍼파라미터에 크게 영향을 받는다:
하이퍼파라미터 | 설명 |
---|---|
nu (ν) |
이상치의 비율에 대한 상한값을 제어. 0에 가까울수록 더 엄격한 이상 탐지, 1에 가까울수록 더 관대한 기준 적용. 일반적으로 0.1~0.5 사이 사용. |
[kernel](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC/kernel) |
사용할 커널 함수 (예: 'rbf', 'linear', 'poly'). 데이터의 분포에 따라 선택. |
gamma |
RBF 커널의 폭을 결정. 값이 클수록 각 데이터 포인트의 영향 범위가 좁아지고, 과적합 위험 증가. |
장점과 한계
장점
- 비지도 학습 기반: 라벨링된 이상 데이터 없이도 모델링 가능.
- 비선형 경계 학습 가능: 커널 트릭을 통해 복잡한 데이터 분포도 처리.
- 이상치 비율 제어 가능:
nu
파라미터를 통해 모델의 민감도 조절 가능. - 고차원 데이터에 강함: 특징 수가 많아도 잘 작동.
한계
- 정상 데이터의 품질에 민감: 학습 데이터에 이미 이상치가 포함되면 성능 저하.
- 계산 비용: 커널 기반일 경우 대규모 데이터에서 느림.
- 결과 해석의 어려움: 결정 함수의 출력이 직관적이지 않을 수 있음.
- 하이퍼파라미터 튜닝 필요:
nu
,gamma
등의 조합 최적화가 중요.
Python 활용 예시 (scikit-learn)
from sklearn.svm import OneClassSVM
from sklearn.datasets import make_blobs
import numpy as np
# 정상 데이터 생성
X_train, _ = make_blobs(n_samples=300, centers=1, cluster_std=0.5, random_state=42)
# One-Class SVM 모델 정의
model = OneClassSVM(nu=0.1, kernel='rbf', gamma=0.1)
model.fit(X_train)
# 새로운 데이터 평가 (-1: 이상치, 1: 정상)
X_test = np.array([[0, 0], [3, 3]])
predictions = model.predict(X_test)
print(predictions) # 예: [1, -1]
관련 기법 및 비교
알고리즘 | 특징 | One-Class SVM과의 차이 |
---|---|---|
Isolation Forest | 트리 기반 이상 탐지, 고차원 데이터에 효율적 | 더 빠르고 스케일에 강함 |
Autoencoder | 딥러닝 기반, 비선형 재구성 오차 기반 | 더 복잡한 패턴 학습 가능 |
LOF (Local Outlier Factor) | 밀도 기반, 지역적 밀도 차이 활용 | 해석이 더 직관적 |
참고 자료
- Schölkopf, B., et al. (2001). Estimating the Support of a High-Dimensional Distribution. Neural Computation.
- Scikit-learn 공식 문서: https://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html
- Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning (2nd ed.). Springer.
One-Class SVM은 이상 탐지 분야에서 오랜 기간 검증된 강력한 기법으로, 특히 정상 데이터만 존재하는 상황에서 매우 유용하다. 다만, 데이터 전처리와 하이퍼파라미터 조정에 주의를 기울여야 하며, 문제의 특성에 따라 다른 알고리즘과 비교 적용하는 것이 바람직하다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.