【问题标题】:support vector machine in rr中的支持向量机
【发布时间】:2016-09-25 17:24:00
【问题描述】:

我一直在使用 R Studio 研究支持向量机算法。但是,我的准确率很低,我不知道如何解决它。我期望准确率高于 90%。

这是我的代码:

install.packages("caTools")
install.packages("class")
library(caTools)
library(class)
install.packages("ISLR")
library(ISLR)

Collegedata<-College[,-1]
Collegedata[,-17]<-scale(Collegedata[,-17])



med<-median(Collegedata$Grad.Rate)
Grad.Rate<-Collegedata$Grad.Rate>=med
Grad.Rate1<-as.numeric(Grad.Rate)
Collegedata<-data.frame(Collegedata,Grad.Rate1)
corcollege<-cor(Collegedata)
Collegedata<-Collegedata[,-2:-3]
Collegedata<-Collegedata[,-4]
Collegedata<-Collegedata[,-7]
Collegedata<-Collegedata[,-13]

SVM
install.packages("e1071")
library("e1071")
collegesplit=sample.split(Collegedata, SplitRatio=0.8)
collegetrain<-subset(Collegedata, collegesplit==1)
collegetest<-subset(Collegedata, collegesplit==0)
collegetrain<-data.frame(collegetrain)

svm.model.college <- svm(Grad.Rate1 ~ ., data = collegetrain, type = "C-classification", cost = 1,gamma = 0.125, cross =10)
svm.pred.college <- predict(svm.model.college, collegetest[,-13])
table(pred = svm.pred.college, true = collegetest[,13])
install.packages('ROCR')
     library(ROCR)
     ROC=predict(svm.model.college,newdata=collegetest)
     ROC<-as.vector(ROC)
     ROC<-as.numeric(ROC)
     pred=prediction(ROC,collegetest$Grad.Rate1)
     perf=performance(pred,'tpr','fpr')
     plot(perf)
     as.numeric(performance(pred,'auc')@y.values)

【问题讨论】:

  • 必须尝试微调参数?

标签: r svm


【解决方案1】:

我已经有一段时间没有编写 SVM 了,所以我无法为您提供任何代码,但是,我可以说 SVM 对您选择的超参数非常敏感,例如成本和伽玛。您希望对某些值序列执行网格搜索以确定最佳值。我建议使用 e1071 包中的 tune.svm() 或 best.tune() 函数来执行此操作。此外,虽然默认的高斯核通常是最佳核,但不能保证它是最好的,因此您或许可以尝试使用线性核。

您可能会发现 this paper 有助于开发用于构建模型的框架。

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2015-09-08
    • 2013-07-05
    相关资源
    最近更新 更多