Linear Support Vector Machines

R में Support Vector Machines

Kailash Awati

Instructor

Training और test सेट में split करें

  • पिछले अध्याय में बनाया गया डेटासेट dataframe df में है।
  • डेटासेट को training और test सेट में बाँटें
  • Random 80/20 split
    # 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 Machines

Decision boundaries और kernels

  • Decision boundaries अलग-अलग आकार की हो सकती हैं — lines, polynomials या और जटिल functions.
  • Decision boundary के प्रकार को kernel कहते हैं।
  • Kernel पहले से specify करना होता है।
  • इस अध्याय में linear kernels पर फोकस है।
R में Support Vector Machines

Linear kernel के साथ SVM

  • हम e1071 लाइब्रेरी का svm फंक्शन इस्तेमाल करेंगे।
  • फंक्शन में कई parameters होते हैं। हम ये सेट करेंगे:
    • formula - dependent variable बताने वाला formula. हमारे केस में y.
    • data - डेटा वाला dataframe, यानी trainset.
    • type - C-classification (classification problem).
    • kernel - decision boundary का रूप, यहाँ linear.
    • cost और gamma - मॉडल ट्यून करने के parameters.
    • scale - data को scale करना है या नहीं (Boolean).
R में Support Vector Machines

Linear SVM बनाना

  • e1071 लाइब्रेरी लोड करें और svm() फंक्शन चलाएँ
library(e1071)
svm_model<- svm(y ~ .,
                data = trainset, 
                type = "C-classification", 
                kernel = "linear", 
                scale = FALSE)
R में Support Vector Machines

मॉडल का overview

  • svm_model enter करने पर मिलेगा:
    • मॉडल का overview, जिसमें classification और kernel type शामिल हैं
    • tuning parameter values
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 Machines
# 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 Machines
  • Training और test सेट के लिए class predictions निकालें.
  • मॉडल की training और test accuracy जाँचें.
# 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 Machines

अभ्यास करते हैं!

R में Support Vector Machines

Preparing Video For Download...