아이리스에 포뮬러를 사용하여 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
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.