LIBSVM是较为成熟的支持向量机的函数包(包含C\MATLAB\PYTHON\R等等)
下载网址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
本文内容基于其官网给出的《A Practical Guide to Support Vector Classication》
建议采用步骤(初学者):
(1)将数据转换为LIBSVM数据格式
LIBSVM数据格式即转换可参考:生成libSVM的数据格式及使用方法总结
事实上,即使不采用这种数据格式,也可以使用libsvm的函数,只是libsvm希望形成一个属于自己的标准,使得数据的使用更加规范化。
例如你使用的数据是500*11(样本属性)和500*1(样本标号)来训练分类器,调用svmtrain()函数也是没问题的。
(2)数据的缩放
数据缩放直白来说就是中心归一化,目的是使不同属性的取值范围接近,否则其对应的w权重相差较多,优化速度较慢。
以梯度下降法举个简单,例子假如样本只有两个属性[x1,x2],其分别对应权重theta1,theta2。如果x1,x2取值范围差距悬殊,theta1,theta2对应的取值范围为一个椭圆(如下图所示),要经历较长时间才达到极小值。