1. SVM的验叉验证程序语句是怎么写的啊
你用的是libsvm的matlab版么?
训练模型时一般决定用哪类svm,哪个核函数,核函数的参数,惩罚系数c就差不多了。
我只用过c的
svm的交叉验证大部分应用时在选参数方面,如利用gridsearch寻找C和gamma,gridsearch的一个评价标准就是cross validation的结果,一般选5-fold,10-fold,或者20-fold,有时也用leave one out,就是n个样本,做n次n-1个训练,1个预测。
2. 自己写的一个Matlab的SVM回归程序,请求帮助
riverdata=[8.07 48.8 0.27 0.0191 3.0;2.70 200.0 1.55 0.074 1500.0;2.35 70 0.43 0.10 110;
3.84 72 0.76 0.13 260;0.85 47.0 0.32 0.067 14.0;2.10 60.0 0.94 0.104 54.0;
2.1 53 0.83 0.107 47;0.4 19 0.16 0.116 9.9;0.85 34 0.15 0.055 9.5;
0.76 64.0 0.67 0.27 35;1.56 24 0.71 0.043 9.6;1.1 59 0.88 0.12 42;
2.16 69 1.55 0.17 160;0.94 26 0.34 0.067 33;0.91 37 0.4 0.067 39;
2.04 104 0.58 0.05 315;4.75 127 0.64 0.08 670;0.49 16.0 0.27 0.08 20;
0.85 18 0.6 0.1 21;0.58 25 1.01 0.14 14;2.47 34 0.82 0.18 65;
0.43 16 0.37 0.05 14;0.58 36 0.21 0.049 8.1];
riverdata_train=riverdata(1:16,1:4);
riverdata_trainlabels=riverdata(1:16,5);
riverdata_test=riverdata(17:23,1:4);
riverdata_testlabels=riverdata(17:23,5);
%优选参数
bestmse=1;
for log2c = -10:10,
for log2g=-10:10,
cmd=['-v 4 -c',num2str(2^log2c),'-g',num2str(2^log2g),'-s 3 -p 0.4 -n 0.1'];
cv=svmtrain(riverdata_trainlabels,riverdata_train,cmd);
if (cv
3. SVM到底是什么
SVM叫做支持向量机( Support Vector Machines)是由Vanpik领导的AT&TBell实验室研究小组
在1963年提出的一种新的非常有潜力的分类技术, SVM是一种基于统计学习理论的模式识别方法,主要应用于模式识别领域.由于当时这些研究尚不十分完善,在解决模式识别问题中往往趋于保守,且数学上比较艰涩,因此这些研究一直没有得到充的重视.直到90年代,一个较完善的理论体系—统计学习理论 ( StatisticalLearningTheory,简称SLT) 的实现和由于神经网络等较新兴的机器学习方法的研究遇到一些重要的困难,比如如何确定网络结构的问题、过学习与欠学习问题、局部极小点问题等,使得SVM迅速发展和完善,在解决小样本 、非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中.从此迅速的发展起来,现在已经在许多领域(生物信息学,文本和手写识别等)都取得了成功的应用。
SVM的关键在于核函数,这也是最喜人的地方。低维空间向量集通常难于划分,解决的方法是将它们映射到高维空间。但这个办法带来的困难就是计算复杂度的增加,而核函数正好巧妙地解决了这个问题。也就是说,只要选用适当的核函数,我们就可以得到高维空间的分类函数。在SVM理论中,采用不同的核函数将导致不同的SVM算法
它是一种以统计学理论为基础的,以结构风险最小化的学习机学习方法,要优于神经网络学习