题目:由LIBSVM的svmtrain输出结果得到分类超平面的法向量w和偏移项b
原文链接:由LIBSVM的svmtrain输出结果得到分类超平面的法向量w和偏移项b_彬彬有礼的专栏-CSDN博客
相信很多人都会使用LIBSVM软件包,svmtrain和svmpredict两个函数分别完成训练和预测:svmtrain输出训练模型,然将将训练模型作为svmpredict的输入参数即可得预测结果。训练模型作为一个中间变量似乎从来没有出现过,但对于很多人来说这的确已经足够了;然而,这并不能满足我们在某些应用场景的需要。SVM本质上与Logistic Regression一样,是训练得到一个分类超平面,有时候我们不仅仅是想要一个输出结果,而是要得到这个超平面,即法向量w和偏移项b,这时候就需要对svmtrain的输出模型进行研究了。
本文主要针对Matlab环境下应用LIBSVM,本文中的代码假设你已经下载并编译了LIBSVM,在文件夹中包含以下三个文件(本人为64软件,所以是.mexw64):
libsvmread.mexw64
svmtrain.mexw64
svmpredict.mexw64
还包含了以下数据集(该数据集在LIBSVM压缩包根目录下,无扩展名):
heart_scale
注:LIBSVM主页https://www.csie.ntu.edu.tw/~cjlin/libsvm/,请下载MATLAB and OCTAVE版本,目前最新版本是version3.22:
鉴于要读懂svmtrain的输出还是需要一些SVM的基础知道的,这里以[周志华. 机器学习. 清华大学出版社,2016.](以下统称西瓜书)为基础,原则上本文认为你已经读懂了第6章前四节内容,以下第1部分的有关支持向量机的介绍仅为第2部分介绍程序时叙述方便,详细内容请看原文。西瓜书必将成为机器学习领域的中文经典教材,建议买一本学习或者收藏,如果仅为了配合看本文也可以在网上搜索pdf电子版。以下为正文。
1、支持向量机基础
本部分重点知道分类超平面法向量w的计算公式(6.9)(或(6.17),二者相同),知道分类超平面偏移项b的计算公式(6.17)(6.18)即可,另外了解α是个什么角色……
支持向量机本质上是在某种约束条件下寻找一个分类超平面将正反两类样本分开:
支持向量机的模型是一个凸二次规划问题: