Justera SVM:er

Support Vector Machines i R

Kailash Awati

Instructor

Målet med justering

  • Svårt att hitta optimala parametervärden manuellt för komplexa kernlar.
  • Mål: hitta den optimala parameteruppsättningen med funktionen tune.svm().
Support Vector Machines i R

Justering i korthet

  • Så här fungerar det:
    • Ange ett sökintervall för varje parameter. Exempel: cost = 10^(-1:3), gamma = c(0.1,1,10), coef0 = c(0.1,1,10)
    • Bygg en SVM-modell för varje möjlig parameterkombination och utvärdera noggrannheten.
    • Returnera den kombination som ger bäst noggrannhet.
  • Beräkningsintensiv procedur!
Support Vector Machines i R
  • Justera SVM-modellen för det radiellt separerbara dataset som skapades tidigare
    • Byggde en polynomkärne-SVM i föregående lektion
    • Modellens noggrannhet var ~94 %.
  • Kan vi göra bättre genom att justera gamma, cost och coef0?
tune_out <- tune.svm(x = trainset[,-3], y = trainset[,3], 
                     type = "C-classification", kernel = "polynomial", degree = 2,
                     cost = 10^(-1:2), gamma = c(0.1,1,10), coef0 = c(0.1,1,10))

#print out tuned parameters tune_out$best.parameters$cost tune_out$best.parameters$gamma tune_out$best.parameters$coef0
0.1
10
1
Support Vector Machines i R
  • Bygg en SVM-modell med de bästa parametervärdena från tune.svm().
svm_model <- svm(y ~ ., data = trainset, type = "C-classification", kernel = "polynomial", degree = 2,
        cost = tune_out$best.parameters$cost,
        gamma = tune_out$best.parameters$gamma,
        coef0 = tune_out$best.parameters$coef0)
  • utvärdera noggrannhet på tränings- och testdata
pred_train <- predict(svm_model, trainset)
mean(pred_train == trainset$y)
pred_test <- predict(svm_model, testset)
mean(pred_test == testset$y)
1

0.9677419
#plot using svm plot
plot(svm_model, trainset)
Support Vector Machines i R

Kapitel 3.4 – radiellt separerbart dataset, justerad kvadratisk kärna, visualiserat med svm.plot

Support Vector Machines i R

Nu kör vi en övning!

Support Vector Machines i R

Preparing Video For Download...