선형 서포트 벡터 머신

R에서의 Support Vector Machine

Kailash Awati

Instructor

훈련 세트와 테스트 세트로 분할

  • 이전 챕터에서 생성한 데이터셋이 데이터프레임 df에 있습니다.
  • 데이터셋을 훈련 세트와 테스트 세트로 분할합니다.
  • 무작위 80/20 분할
    # Set seed for reproducibility
    set.seed(1)
    # Set the upper bound for the number of rows to be in the training set
    sample_size <- floor(0.8 * nrow(df))
    # Assign rows to training/test sets randomly in 80/20 proportion
    train <- sample(seq_len(nrow(df)), size = sample_size)
    # Separate training and test sets
    trainset <- df[train, ]
    testset <- df[-train, ]
    
R에서의 Support Vector Machine

결정 경계와 커널

  • 결정 경계는 직선, 다항식, 복잡한 함수 등 다양한 형태를 가질 수 있습니다.
  • 결정 경계의 유형을 커널이라고 합니다.
  • 커널은 사전에 지정해야 합니다.
  • 이 챕터에서는 선형 커널을 다룹니다.
R에서의 Support Vector Machine

선형 커널 SVM

  • e1071 라이브러리의 svm 함수를 사용합니다.
  • 이 함수는 여러 매개변수를 가집니다. 다음 매개변수를 명시적으로 설정합니다.
    • formula - 종속 변수를 지정하는 공식. 여기서는 y.
    • data - 데이터를 포함하는 데이터프레임 (trainset).
    • type - C-classification으로 설정 (분류 문제).
    • kernel - 결정 경계의 형태. 여기서는 linear.
    • cost와 gamma - 모델 튜닝에 사용되는 매개변수.
    • scale - 데이터 스케일링 여부를 나타내는 불리언.
R에서의 Support Vector Machine

선형 SVM 구축

  • e1071 라이브러리를 로드하고 svm() 함수를 호출합니다.
library(e1071)
svm_model<- svm(y ~ .,
                data = trainset, 
                type = "C-classification", 
                kernel = "linear", 
                scale = FALSE)
R에서의 Support Vector Machine

모델 개요

  • svm_model을 입력하면 다음을 확인할 수 있습니다.
    • 분류 및 커널 유형을 포함한 모델 개요
    • 튜닝 매개변수 값
svm_model
Call:
svm(formula = y ~ .,
    data = trainset,
    type = "C-classification",
    kernel = "linear", 
    scale = FALSE)

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

Number of Support Vectors: 55
R에서의 Support Vector Machine
# Index of support vectors in training dataset
svm_model$index

# Support vectors svm_model$SV
# Negative intercept (unweighted) svm_model$rho
# Weighting coefficients for support vectors svm_model$coefs
4   8  10  11  18  37  38  39  47  59  60  74  76  77  78  80  83 ...

x1 x2 5 0.519095949 0.44232464
-0.1087075
[,1] [1,] 1.0000000
R에서의 Support Vector Machine
  • 훈련 및 테스트 세트에 대한 클래스 예측을 구합니다.
  • 훈련 및 테스트 세트 정확도를 평가합니다.
# Training accuracy
pred_train <- predict(svm_model, trainset)
mean(pred_train == trainset$y)
1
# Test accuracy
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
1
# Perfect!!
R에서의 Support Vector Machine

연습할 시간입니다!

R에서의 Support Vector Machine

Preparing Video For Download...