SVM

Linear SVM
- 这里的loss function max() 是convex的,参数的模* λ λ 也是convex但是可以分段微分
linear SVM
loss function behave

  • R中的kernal function
    kernal function

    rbfdot(sigma=)
    polydot(degree=,scale=,offset=)
    tanhdot(scale=, offset=)
    vanilladot()
    laplacedot(sigma=)
    besseldot(sigma=,order=,degree=)
    anovadot(sigma=,degree=)
    splinedot()
    

    现在来说一下kerlab里边的predict.ksvm

    predict(object,newdata,type="respon")

    object:ksvm中的变量
    If type(object) is C-svc, nu-svc, C-bsvm or spoc-svc the vector returned depends on the argument
    type :
    probabillilties 分为A或B类的概率
    votes: 分为A或B 01 表示

今天先到这里。明天继续学习SVM附上代码一篇:

#准备数据
data(promotergene)
ind <- sample(1:dim(promotergene)[1],20)
train.da <- promotergene[-ind,]
test.da <- promotergene[ind,]
#train a svm
gene <- ksvm(Class~.,data=train.da,kernal="rbfdot",kpar=list(sigma=0.015),C=70,cross=4,prob.model=T)
gene
#predict on the testing data
genepredict <- predict(gene,test.da,type='votes')
genepredict
#########################################################################
n <- 1000 # 样本数
p <- 2 # 变量数
sigma <- 1 # 分布的标准差
meanpos <- 0 # 正样本分布的均值
meanneg <- 3 # 负样本分布的均值
npos <- round(n/2) # 正样本数目
nneg <- n-npos # 负样本数目
# 生成正样本
##设置种子,为了试验可重复性
set.seed(1234)
xpos <- matrix(rnorm(npos*p,mean=meanpos,sd=sigma),npos,p)
##生成负样本
set.seed(1234)
xneg <- matrix(rnorm(nneg*p,mean=meanneg,sd=sigma),npos,p)
##正样本和负样本合并
x <- rbind(xpos,xneg)
# 生成标签
y <- matrix(c(rep(1,npos),rep(-1,nneg)))
#数据可视化
plot(x,col=ifelse(x>0,1,2))
#数据集划分
ntrain <- round(n*0.8) # number of training examples
tindex <- sample(n,ntrain) # indices of training samples
xtrain <- x[tindex,]
xtest <- x[-tindex,]
ytrain <- y[tindex]
ytest <- y[-tindex]
#训练模型
svm <- ksvm(xtrain,ytrain,kernel='vanilladot',type="C-svc",C=100,scaled=c())
svp <- ksvm(xtrain,ytrain,type="C-svc",kernel='vanilladot',C=100,scaled=c())
#结果可视化
plot(svm,data=xtrain)
ypred <- predict(svm,xtest) ##应用到测试集
table(ytest,ypred) ##利用table()生成混淆矩阵
sum(ypred==ytest)/length(ytest) #准确率0.975
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值