더북(TheBook)

아이리스에 포뮬러를 사용하여 SVM 모델을 만들어보자.

> install.packages("ksvm")
> library(ksvm)
> (m <- ksvm(Species ~ ., data=iris))
Using automatic sigma estimation (sigest) for RBF or laplace kernel
Support Vector Machine object of class "ksvm"

SV type: C-svc (classification)
 parameter : cost C = 1

Gaussian Radial Basis kernel function.
 Hyperparameter : sigma = 0.982467042345241

Number of Support Vectors : 63

Objective Function Value : -5.0512 -5.6974 -19.859
Training error : 0.013333

만들어진 모델로부터의 예측에는 predict( )를 사용한다.

> head(predict(m, newdata=iris))
[1] setosa setosa setosa setosa setosa setosa
Levels: setosa versicolor virginica

ksvm( ) 함수는 가우시안 커널을 기본으로 사용한다. 만약 커널 함수를 바꾸고 싶다면 kernel 파라미터에 원하는 함수를 지정한다. 다음은 vanilladot(특별한 변환 없이 내적을 계산함)을 지정한 예다.

> ksvm(Species ~., data=iris, kernel="vanilladot")
Setting default kernel parameters
Support Vector Machine object of class "ksvm"

SV type: C-svc (classification)
  parameter : cost C = 1

Linear (vanilla) kernel function.

Number of Support Vectors : 29

Objective Function Value : -0.9818 -0.322 -17.0644
Training error : 0.033333

커널에 사용하는 파라미터는 kpar에 리스트 형태로 지정한다. 다음은 3차(degree=3) 다항 커널을 사용한 예다.

> (m <- ksvm(Species ~., data=iris, kernel="polydot", kpar=list(degree=3)))
Support Vector Machine object of class "ksvm"

SV type: C-svc (classification)
  parameter : cost C = 1

Polynomial kernel function.
  Hyperparameters : degree = 3 scale = 1 offset = 1

Number of Support Vectors : 22

Objective Function Value : -0.0252 -0.0225 -6.3396
Training error : 0.013333
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.