Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- fourier transform
- python버전 동시 사용
- continous deployment
- fourier 변환
- Machine Learning
- 크롤링할때 중요한것
- transductive learning
- 머신러닝
- transductive
- 머신러닝 딥러닝
- 크롤링 주의사항
- 푸리에 변환
- docker commands
- 푸리에변환이란
- rnn구현
- inductive
- 기초머신러닝
- 서버 os
- inductive transductive
- python패키지설치
- virtual env
- 푸리에
- 서버로 파일 복사
- server os
- dlib 설치
- Fourier
- python2 python3
- rnn
- inductive learning
- 로컬에서 서버
Archives
- Today
- Total
우당탕탕 도비의 코딩로그
[SVM]SVM(Support Vector Machine) 이란? 본문
반응형
**SVM (Support Vector Machine)** 설명에 관한 포스팅입니다.
🕵🏻♀️ SVM은
Supervised learning 기반의 분류 알고리즘으로, 주어진 데이터를 가장 넓은 margin을 두고 두 개 또는 다중 그룹으로 나누는 최적의 경계선(Hyperplane)을 찾는 것이 핵심!
즉, 데이터를 나누는 가장 좋은 선 또는 면을 찾아주는 알고리즘
💡핵심 개념
SVM이 찾는 선은 마진(Margin)이 가장 넓은 경계선입니다.
- Hyperplane(초평면): 데이터를 나누는 선 또는 면
- Support Vectors(서포트 벡터): 경계선과 가장 가까이 위치한 데이터 포인트
- Margin: 서포트 벡터와 경계선 사이의 거리 → 이 거리를 최대화함
"가장 마진이 넓은 선이 가장 일반화(generalization)가 잘 될 것이다!"
🧠 데이터가 직선으로 나누어질 수 없을때는,
비선형 분류: Kernel Trick 을 사용해서 고차원으로 데이터를 변환하여 분리!
대표적인 커널 종류:
- RBF (Radial Basis Function)
- Polynomial
- Sigmoid
🔎 SVM이 쓰이는 곳
- 스팸 메일 필터링
- 신용카드 사기 탐지
- 이미지 분류 (얼굴 인식 등)
- 바이오 분야 질병 진단
실제로 금융, 헬스케어, 보안 분야 등에서 널리 활용
🧐 장점 VS 단점
장점 | 단점 |
경계가 명확할 때 높은 정확도 | 큰 데이터셋에는 학습 속도가 느릴 수 있음 |
고차원 데이터에 강함 | 커널과 파라미터 설정이 까다로움 |
서포트 벡터만 사용하므로 효율적 | 노이즈에 민감할 수 있음 |
👩💻 SVM을 활용한 Iris 분류 문제 예제 코드
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = SVC(kernel='rbf')
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
print("정확도:", accuracy)
👩💻 학습된 SVM 모델의 직선 y = ax + b 구하는 방법
import numpy as np
coefficient = np.array(svc.coef_)
a1 = coefficient[0][0]
a2 = coefficient[0][1]
intercept = svc.intercept_
a = -(a1/a2)
b = -(intercept[0]/a2)
print(f"y = {a}x + {b}")
반응형
Comments