본문 바로가기
Python/MachineLearning

Support Vector Machine - 개념

by 하니__ 2024. 4. 15.

 

 

 

 

 

어떤 선을 기준으로 나눠야 할까

 

 

 

 

 

 

가장 근접하고 있는 데이터를 기준으로 같은 길이를 갖는

 

직교 하는 선으로 하자

 

 

그렇다면 서포트 벡터 머신은 

다른 알고리즘과 비교해서 어떤 점이 특별할까

 

 

 

 

 

사과와 오렌지를 감별하는 알고리즘이라고 할 때

일반적인, 정상적인 사과와 오렌지 같은 경우

경계하는 선에서 멀리에 있을것이다

 

즉, 이게 사과인가? 이게 오렌지인가? 싶은 애매하게 생긴 것들이

클래시파이어 근처에 있게 되며

 

이를 판단하는데에 SVM이 최고라고 판단된다

 

from sklearn.svm import SVC

 

SVM을 사용하기 위해

 

sklearn의svm 모듈을 사용하여SVC를 임포트한다

SVC는 클래시파이어고

SVR은 리그레션이다

 

 

이후는 다른 것과 비슷하다

 

 
classfier = SVC()
classfier.fit(X_train, y_train)
y_pred = classfier.predict(X_test)
from sklearn.metrics import confusion_matrix,accuracy_score
cm = confusion_matrix(y_test, y_pred)
cm
array([[49,  9],
       [ 3, 39]], dtype=int64)
accuracy_score(y_test, y_pred)
0.88
 

 

88%의 정밀도를 가진다

 

 

 

 

SVC 파라미터에 커널을 리니어로 넣었을 경우

 

 

SVC(  )파리미터에 kernel을 'linear'로 입력이 가능하다

이 경우에는 어떻게 달라질까

 

 

classfier = SVC(kernel='linear')
classfier.fit(X_train, y_train)
y_pred = classfier.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
cm
array([[52,  6],
       [12, 30]], dtype=int64)
accuracy_score(y_test, y_pred)
0.82

 

 

 

 

이외의 조건이 같은 조건임에도

82%로 떨어지게 된다

 

 

이 조건 저 조건 바꿔가며 최상의 조건을 찾도록 하자