728x90
땅따먹기 같이 생긴 서포트 벡터 머신.
오늘은 서포트 벡터 머신(SVM)을 알아보자.
오늘의 배움 |
|
1. SVM 이론
서포트 벡터 머신(SVM)이란?
- 정의: 데이터를 가장 잘 구분하는 경계선(초평면)을 찾는 머신러닝 알고리즘
- 핵심 개념 한 줄 설명: " 마치 운동장에 그려진 선처럼 데이터를 구분하는 경계선을 찾는 알고리즘 "
- SVM은 결정 경계(Decision Boundary) - 클래스 간 거리가 가장 먼 경계를 찾으면 -> 최적의 분리를 달성할 수 있음
📚 실제 예시로 이해하기
1. 운동장 라인 그리기 - 상황: 축구장에서 두 팀의 진영을 나누는 중앙선 그리기 - SVM 관점: * 중앙선 = 초평면 * 양 팀 선수들 = 데이터 포인트 * 안전거리 = 마진 |
2. 스팸 메일 분류 - 입력: 메일의 다양한 특징(단어 빈도, 링크 수 등) - SVM 작동: * 정상 메일 vs 스팸 메일 구분선 찾기 * 커널 트릭으로 복잡한 패턴 파악 |
핵심개념 정리
- 초평면(Hyperplane)
- 정의: 데이터를 구분하는 결정 경계
- 특징: 최대 마진을 가지도록 설정
- 예시: 2차원에서는 직선, 3차원에서는 평면
- 실생활 예시: 운동장의 중앙선처럼 두 팀을 구분하는 선
- 커널 트릭(Kernel Trick)
- 정의: 저차원 데이터를 고차원으로 변환하는 기법
- 특징: 비선형 문제를 선형으로 해결
- 종류: 선형, 다항식, RBF 커널
- 서포트 벡터(Support Vector)
- 정의: 결정 경계에 가장 가까운 데이터 포인트
- 특징: 전체 모델의 결정 경계를 결정
- 중요성: 적은 수의 데이터로 모델 결정
- 예시: 줄서기할 때 맨 앞과 맨 뒤에 서있는 사람
- 마진(Margin)
- 정의: 경계선(초평면)과 가장 가까운 데이터(서포트 벡터) 사이의 거리
- 특징: SVM은 마진을 최대화하는 초평면을 선택
- 예시: 주차할 때 옆 차와 띄우는 안전거리
SVM 유형별 비교 분석표
구분 | 선형 SVM | 비선형 SVM | SVR |
용도 | 선형 분류 | 복잡한 분류 | 회귀 예측 |
커널 사용 | 불필요 | 필요 | 선택적 |
계산 복잡도 | 낮음 | 높음 | 중간 |
적용 예시 | 텍스트 분류 | 이미지 인식 | 주가 예측 |
2. 선형 SVM 분류
직선으로 데이터를 구분할 수 있을 때 사용 -> 즉, 데이터가 선형적으로 구분 가능한 경우에 적합
- 예시: 키 180cm를 기준으로 농구선수와 일반인 구분하기
선형 SVM의 장단점
- 장점
- 간단하고 효율적이다.
- 고차원 데이터에서도 효과적이다.
- 단점
- 데이터가 선형적으로 분리되지 않는 경우 성능이 저하된다.
3. 비선형 SVM 분류
- 곡선으로 데이터를 구분해야 할 때 사용
- 비선형 SVM은 커널 트릭(Kernel Trick)을 사용하여 데이터를 고차원으로 매핑
-> 그 공간에서 선형적으로 분리 가능하도록 만듦. - 예시: 도넛 모양처럼 원형으로 데이터가 분포된 경우
커널 트릭
- 커널 함수는 원래 데이터 공간에서 계산하지 않고, 고차원 공간에서의 연산을 효율적으로 처리한다.
- 대표적인 커널 함수
- 다항 커널(Polynomial Kernel)
- RBF 커널(Radial Basis Function Kernel)
비선형 SVM 장단점
- 장점
- 선형적으로 구분되지 않는 데이터를 잘 처리한다.
- 다양한 커널 함수로 유연성이 높다.
- 단점
- 계산 비용이 높다.
- 커널 및 하이퍼파라미터 선택이 중요하다.
4. SVM 회귀 (SVR)
일반적인 회귀분석처럼 데이터를 잘 설명하는 선을 찾되, 허용 가능한 오차 범위(마진)를 설정하는 방법
- 실생활 예시:
- 식당에서 예상 대기시간을 알려줄 때 "약 20분 정도" 라고 하는 것
- 버스 도착 시간을 "5분 내외"로 예측하는 것
주요 특징 설명
- ε-튜브 (ϵ-Tube(epsilon tube))
- 의미: 허용 가능한 오차의 범위
- 예시:
- 시험 점수 예측할 때 ±5점 정도는 괜찮다고 보는 것
- 도착 시간 예측할 때 2분 정도의 오차는 허용하는 것
- 커널 트릭 활용 (Kernel Trick)
- 의미: 복잡한(비선형) 관계도 표현 가능
- 예시:
- 계절에 따른 아이스크림 판매량 예측
- 시간대별 교통량 예측
- 노이즈 처리 (일반화 성능)
- 의미: 이상치나 노이즈에 강함 -> 과적합을 방지하는 데 효과적
- 예시:
- 주식 가격 예측할 때 갑작스러운 변동 무시
- 센서 데이터에서 튀는 값 처리
[참고] Kernel
더보기
커널(Kernel)은 SVM(Support Vector Machine)에서 비선형 데이터를 고차원 공간으로 변환하여 선형적으로 분리 가능하게 만드는 방법이다. 커널 함수는 입력 데이터를 더 높은 차원의 특징 공간으로 매핑(mapping)하여, SVM이 복잡한 데이터의 패턴을 학습할 수 있게 해준다.
→ SVM의 핵심은 두 클래스를 최대한 잘 구분할 수 있는 초평면(hyperplane)을 찾는 것이며, 커널 함수를 통해 이 작업을 고차원에서도 수행할 수 있게 된다.
- 커널이 필요한 이유
- 많은 경우 데이터는 선형적으로 분리할 수 없는 형태로 분포되어 있다. 즉, 2차원 공간에서 직선을 이용해 구분할 수 없는 경우가 많다.
- 커널 함수를 사용하면, 고차원으로 데이터를 변환하여 선형적으로 분리 가능하게 만든다. 이를 통해 더 복잡한 데이터 구조를 효과적으로 처리할 수 있다.
- 이 변환을 직접 계산하지 않고, 커널 트릭(Kernel Trick)을 사용해 효율적으로 계산할 수 있다.
- 커널 트릭(Kernel Trick)
- 커널 트릭은 특징 공간으로의 변환을 직접 계산하지 않고, 커널 함수의 결과만 사용하여 마치 변환한 것처럼 처리하는 방법이다.
- SVM에서 입력 벡터의 내적만 계산하면 되기 때문에, 커널 함수를 사용하여 복잡한 계산을 효율적으로 수행할 수 있다. 이를 통해 고차원 변환을 일일이 수행하지 않아도 된다.
- 주요 커널 함수 종류
- 선형 커널(Linear Kernel)
- 커널 함수: $K(x, y) = x \cdot y$
- 단순히 선형 모델을 의미하며, 커널 함수가 두 벡터의 내적을 계산한다.
- 데이터가 선형적으로 분리 가능한 경우에 적합하다.
- 다항 커널(Polynomial Kernel)
- 커널 함수: $K(x, y) = (x \cdot y + c)^d$
- c: 상수
- d: 다항식의 차수
- 데이터의 비선형 관계를 다항식을 통해 표현할 때 사용된다.
- 커널 함수: $K(x, y) = (x \cdot y + c)^d$
- RBF 커널(Radial Basis Function Kernel, 가우시안 커널)
- 커널 함수: $K(x, y) = \exp\left(-\frac{\|x - y\|^2}{2\sigma^2}\right)$
- $\sigma$: 커널 폭을 결정하는 파라미터
- 가장 널리 사용되는 커널로, 데이터가 선형적으로 분리되지 않을 때 거리 기반의 유사성을 측정하는 방법이다.
- 데이터가 복잡한 비선형 관계를 가질 때 적합하다.
- 커널 함수: $K(x, y) = \exp\left(-\frac{\|x - y\|^2}{2\sigma^2}\right)$
- 시그모이드 커널(Sigmoid Kernel)
- 커널 함수: $K(x, y) = \tanh(\alpha x \cdot y + c)$
- 신경망의 활성화 함수와 유사한 형태를 가지며, 뉴럴 네트워크와의 유사성을 기반으로 한다.
- 선형 커널(Linear Kernel)
문제 유형
1: 분류 문제
# 예: 고양이와 강아지 사진 분류하기
from sklearn.svm import SVC
model = SVC(kernel='linear') # 선형 분류기 생성
model.fit(X_train, y_train) # 모델 학습
predictions = model.predict(X_test) # 예측하기
2: 회귀 문제
# 예: 주택 가격 예측하기
from sklearn.svm import SVR
model = SVR(kernel='rbf') # 비선형 회귀 모델 생성
model.fit(X_train, y_train) # 모델 학습
predictions = model.predict(X_test) # 예측하기
데이터 전처리가 중요하고, 데이터가 너무 많으면 학습시간이 오래 걸릴 수 있다고 한다.
다음은 '앙상블, 랜덤 포레스트'를 배워보자.
728x90
'Develop > ML·DL' 카테고리의 다른 글
차원 축소를 알아보자. (2) | 2025.01.25 |
---|---|
앙상블 학습 및 랜덤 포레스트를 알아보자. (2) | 2025.01.21 |
결정 트리를 알아보자. (2) | 2025.01.21 |
분류와 로지스틱 회귀를 알아보자. (0) | 2025.01.20 |
머신러닝 모델 선정: 회귀를 알아보자. (4) | 2025.01.19 |