본문 바로가기
공부/R & Python

11-1. 서포트벡터머신 1 (Sipport Vector MAchine)

by 드인 2020. 3. 4.

11-1. 서포트벡터머신 1 (Sipport Vector MAchine)


1) 서포트벡터머신 (Support Vector Machine)

- 선형 SVM

- 비선형 SVM

2) iris 데이터 설명

- iris 데이터 (iris.csv)

3) 서포트벡터머신 패키지와 함수

- 서포트벡터머신을 수행하기 위한 패키지 : e1071

- 서포트벡터머신 함수 : svm

install.packages("e1071")
library (e1071)

 

4) 서포트벡터머신 결과

- 서포트벡터머신 함수 : svm(y변수~x변수, data= _

- iris 데이터의 서포트벡터머신 결과 (전체 데이터를 사용한 결과)

m1<- svm(Species ~., data = iris, kernel="linear")
summary(m1)

 

[svm의 결과 요약]

Call:
  svm(formula = Species ~ ., data = iris, kernel = "linear")


Parameters:
SVM-Type:  C-classification 
SVM-Kernel:  linear 
cost:  1 

 

Number of Support Vectors:  29

( 2 15 12 )

Number of Classes:  3 

Levels: 
  setosa versicolor virginica

 

svm에서 주어지는 옵션(default)

kernel=radial basis function,

gamma=1/(# of dimension) (1/4=0.25)

 

- svm모델에 적용하나 예측범주와 실제범주 비교(전체 데이터를 사용한 결과)

x<-iris[, -5]           iris데이터에서 타겟값이 5번째 열을 제외한 데이터, 즉 4개의 독립변수들만 있는 데이터
pred <- predict(m1, x)  svm모델 m1을 적용하여 예측된 범주값을 pred로 저장

y<-iris[,5]
table(pred, y)

 

[출력 결과]

                y
pred      setosa versicolor virginica
setosa         50          0         0
versicolor      0         46         1
virginica        0          4        49

오분류율 : (1+4)/150=0.0333 (3.33%)

 

- iris 데이터의 서포트벡터머신 결과 (전체 데이터를 사용한 결과)

plot(m1, iris,  Petal.Width~Petal.Length, slice=list(Sepal.Width=3, Sepal.Length=4))