编写程序的基本步骤~
1、将数据中心化,是每一组特征中心化,而不是每个样本的数据中心化哦。原因就是之后要进行PCA降维,这个过程之前如果不将数据中心化,那么之后测试数据集映射出来的点就不对啦~具体看图啦~
至于是否要归一化,这个并不是必要的步骤,所以看心情咯
2、PCA降维,这个最好是以矩阵短的那一边进行SVD分解,这样可以提速啦,转换的公式可以推导一下哈
X:2891×377的矩阵
根据推导可得:
Y和XZ都是C的特征向量
虽然 Y是2891×2891
XZ是2891×377
但是,由于X的秩最多377,所以的秩最多377,所以后边都是0,即使乘起来也木有用
我们之后想要取前边多少维的数据,就直接取XZ的就好啦,和Y的效果一样哒
此处需要注意的是:Y和Z都是单位矩阵,但是XZ并不是,因此在使用XZ之前需要对XZ进行归一化
3、数据经过PCA降维之后还需要对数据进行归一化,标签不必归一化
4、训练模型~~~
主要就是调节参数啦,当然,即使你不设置参数,svmtrain也会有默认参数啦~可以运行,但是效果嘛,就不敢保证咯
上网看了好多教程,但是都没有深入讲解如何高效地调节SVM的参数~~后来才知道,原来只有C和g是可以用程序自动选择的(网上搜一下,有很多类似程序哒),其他的。。。可能都要凭经验或者试出来的~
还记得之前数据中心化那一步吧,要用那个均值哦,测试的数据要减去均值,然后再进行降维操作哒,具体原因看前边的解释啦~
数据都放在一个维度上了之后,就可以用svmpredict预测啦~
这个过程就算正式全部搞定啦~然后你看准确率不大好的话,可以再调整前边的一些参数啦~加油!