SVM基础:
http://www.chinakdd.com/article-W82k0g2822JE712.html
看了一部分,还没看完。。
博文:
(1)http://blog.csdn.net/chl033/article/details/4645544
写的浅显易懂
(2)如何提升LibSVM分类效果
http://blog.csdn.net/xiahouzuoxin/article/details/9372805
1. ‘svm-scale’的使用
2. 实际使用LibSVM的步骤
3. 关于交叉验证(CrossValidation,简称CV)
4. 关于GridSearch
5. 非平衡数据
6. 自定义核函数(转自http://www.matlabsky.com/forum.php?mod=viewthread&tid=15296)
另:
一、SVM 怎样能得到好的结果
- 对数据做归一化(simple scaling)
参考:http://jacoxu.com/?p=118
svmscale是用来对原始样本进行缩放的, 范围可以自己定, 一般是[0,1]或[-1,1]. 缩放的目的主要是
1) 防止某个特征过大或过小, 从而在训练中起的作用不平衡;
2) 为了计算速度. 因为在核计算中, 会用到内积运算或exp运算, 不平衡的数据可能造成计算困难.
用法: svmscale [-l lower] [-u upper]
[-y y_lower y_upper]
[-s save_filename]
[-r restore_filename] filename
其中, []中都是可选项:
-l: 设定数据下限; lower: 设定的数据下限值, 缺省为-1
-u: 设定数据上限; upper: 设定的数据上限值, 缺省为1
-y: 是否对目标值同时进行缩放; y_lower为下限值, y_upper为上限值;
-s save_filename: 表示将缩放的规则保存为文件save_filename;
-r restore_filename: 表示将按照已经存在的规则文件restore_filename进行缩放;
filename: 待缩放的数据文件, 文件格式按照libsvm格式.
默认情况下, 只需要输入要缩放的文件名就可以了: 比如(已经存在的文件为test.txt)
svmscale test.txt
这时, test.txt中的数据已经变成[-1,1]之间的数据了. 但是, 这样原来的数据就被覆盖了, 为了让规划好的数据另存为其他的文件, 我们用一dos的重定向符>来另存为(假设为out.txt):
svmscale test.txt > out.txt
运行后, 我们就可以看到目录下多了一个out.txt文件, 那就是规范后的数据. 假如, 我们想设定数据范围[0,1], 并把规则保存为test.range文件:
svmscale –l 0 –u 1 –s test.range test.txt > out.txt
这时, 目录下又多了一个test.range文件, 可以用记事本打开, 下次就可以用-r test.range来载入了.
应用 RBF kernel
用cross-validation和grid-search得到最优的c和g
用得到的最优c和g训练训练数据
测试
二、Windows下svm使用的文件格式形成代码
在matlab中调用svm时没有那么多功能(我目前理解的是这样哦~~),如交叉验证和数据归一化等。为了使用这些功能,可以使用libsvm的exe文件进行交叉验证和训练等。这些文件能够接收的训练数据是下面的形式。下面程序就是把matlab中的特征向量和标签转换成需要的格式。
load('test.mat');%test.mat中的变量test是结构对象,test.X代表训练数据(n*d,d为特征向量长度),test.Y(n*1)代表数据的类别
[size1,size2]=size(test.X);
fid=fopen('test.txt','wt');
for i=1:size1
fprintf(fid,'%g ',test.Y(i));
for j=1:size2
fprintf(fid,'%g:',j);
if j==size2
fprintf(fid,'%g\n',test.X(i,j));
else
fprintf(fid,'%g ',test.X(i,j));
end
end
end
最终形成的文件格式为:
[标签] 1:value 2:value 3:value……..
1 1:0 2:0 3:0.123379 4:0.56402 5:1.25773 6:2.27725 7:3.36294 8:2.5937
0 1:0 2:0 3:0 4:0.00410983 5:0.294078 6:1.3213 7:2.09252 8:3.55806
…