SVM原理(1)

SVM原理(1),第1张

训练集 => 提取特征向量 => 结合一定的算法(分类器:比如决策树,KNN)=>得到结果

31例子:

图中哪条线对于区分两类小球好呢?

32 SVM寻找区分两类的超平面(hyper plane), 使边际(margin)最大

总共可以有多少个可能的超平面?无数条

如何选取使边际(margin)最大的超平面 (Max Margin Hyperplane)?

超平面到一侧最近点的距离等于到另一侧最近点的距离,两侧的两个超平面平行

33 线性可区分(linear separable) 和 线性不可区分 (linear inseparable)

有两类,分别是线性可区分和线性不可区分,我们先讲线性可区分

超平面可定义为:

w : weight vector

X 是训练实例

b :bias

41 假设2维特征向量:X = (x1, X2)

把 b 想象为额外的 wight

超平面方程变为:

所有超平面右上方的点满足:

所有超平面左下方的点满足:

调整weight,使超平面定义边际的两边:

综合以上两个式子得到:

决定决策边界的数据叫做支持向量,它决定了margin到底是多少

分界的超平面和H1或H2上任意一点的距离为 :

(ie: 其中||W||是向量的范数(norm))

所以,最大边际距离为:

51 SVM如何找出最大边际的超平面呢(MMH)?

利用一些数学推倒,以上公式 (1)可变为有限制的凸优化问题(convex quadratic optimization)

利用 Karush-Kuhn-Tucker (KKT)条件和拉格朗日公式,可以推出MMH可以被表示为以下“决定边界 (decision boundary)”

其中,

yi是支持向量点xi的类别标记

X^T是要测试的实例

具体的公式推导,可以自己在纸上推到试试。

 把包解压在C盘之中,如:C:\libsvm-3182

因为要用libsvm自带的脚本gridpy和easypy,需要去官网下载绘图工具gnuplot,解压到c盘进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改gridpy和easypy两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存

python与libsvm的连接(参考SVM学习笔记(2)LIBSVM在python下的使用)

1打开IDLE(pythonGUI),输入>>>importsys>>>sysversion

2如果你的python是32位,将出现如下字符:

(default,Apr102012,23:31:26)[MSCv150032bit(Intel)]’

这个时候LIBSVM的python接口设置将非常简单。在libsvm-316文件夹下的windows文件夹中找到动态链接库libsvmdll,将其添加到系统目录,如`C:\WINDOWS\system32\’,即可在python中使用libsvm

wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('ad-hidden')hide();}, function(){$('ad-hidden')show();});

3执行一个小例子

importos

oschdir('C:\libsvm-318\python')#请根据实际路径修改

fromsvmutilimport

y,x=svm_read_problem('/heart_scale')#读取自带数据

m=svm_train(y[:200],x[:200],'-c4')

p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m)

##出现如下结果,应该是正确安装了optimizationfinished,#iter=257nu=0351161

obj=-225628984,rho=0636110nSV=91,nBSV=49

TotalnSV=91

Accuracy=842857%(59/70)(classification)

以上就是关于SVM原理(1)全部的内容,包括:SVM原理(1)、如何利用python使用libsvm、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9854114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存