1. 支持向量机SVM
支持向量机(SVM, support vector machine)是名噪一时的机器学习方法,自20世纪末以来在模式识别领域风生水起,至今仍然活跃在各大论文期刊中。无论是和其他特征提取方法的结合,还是和其他模式识别方法的对比,SVM的表现都可圈可点。
SVM的目标是通过在属于两个不同类别的两组数据点之间找到良好决策边界(decision boundary)来解决分类问题。决策边界可以看作一条直线或一个平面,将训练数据划分为两块空间,分别对应于两个类别。对于新数据点的分类,你只需要判断它位于决策边界的哪一侧即可。
2.我与SVM
记得笔者第一次接触SVM是在大二期间的数学建模课大作业,想用SVM实现葡萄酒的多分类,但是课本上的例子只二分类的。我在特种楼A熬了一晚上,找到了笨办法的多分类,就是重复的二分类,也算是一次难得的努力。
在2019年11月,因为要进行论文的撰写,需要将CNN与SVM进行对比,笔者十分痛苦地查阅了相当多的MATLAB官方网页,最后倒也实现了SVM对波形信号的二分类,效果还不错,不过一年过去了论文还没有见刊,还需要继续努力啊。但是想要熟练掌握一种成熟的机器学习方法,需要付出的时间和精力还是很大的,希望以后我能有这样的机会吧,还能将SVM用到研究中。2020也要结束了,在这里对自己的SVM学习记录进行总结,回望过去,面向未来。
3.总结
MATLAB在SVM方面浸淫多年,已经形成了相当庞大的实现环境,这里对其简单实现进行总结。以下内容基于MATLAB官网的介绍文档,进行了一点个人的理解和整理,不算原创,但也不是单纯的翻译,也就恬不知耻的算作原创了。具体内容缺斤少两的,想看具体的英文内容请点击下方链接。
Support Vector Machine Classification中概括了matlab中的四种SVM分类函数,分别适用于不同的数据和分类要求。
3.1 fitcsvm低维或中维数据的二分类
fitcsvm训练或交叉验证支持向量机(SVM)模型在低维或中维预测数据集上的一类和二类(binary)分类。fitcsvm支持使用核函数映射预测数据,并支持通过二次规划实现目标函数最小化的顺序最小优化(SMO,sequential minimal optimization)、迭代单数据算法(ISDA,iterative single data algorithm)或L1软边界最小化。
傻瓜攻略(十七)——MATLAB实现SVM二分类之fitcsvm
3.2 fitclinear高维数据的二分类
要在高维数据集(即包含许多预测变量的数据集)上训练用于二分类的线性支持向量机模型,可以改用fitclinear。
傻瓜攻略(十八)——MATLAB实现SVM二分类之fitclinear
3.3 fitcecocSVM的多分类
对于组合二元支持向量机模型的多类学习,使用纠错输出码(ECOC,error-correcting output codes )。有关详细信息,请参阅fitcecoc。 ECOC 可以用来将 Multiclass Learning 问题转化为 Binary Classification 问题。
3.4 fitckernel数据的非线性二分类
对于大数据的非线性二分类,可以使用 fitckernel 训练二分类高斯核分类模型。
3.5 其他
此外,要训练SVM回归模型,请参阅fitrsvm (低维和中等维预测数据集),或fitrlinear(高维数据集)。
另,Support Vector Machines for Binary Classification中详细介绍了超平面等一系列知识(本科毕设时全靠将这种网页翻译成中文来充论文字数)
Bayesian Optimization with Tall Arrays介绍了如何通过使用“ OptimizeHyperparameters”名称-值对参数,使用贝叶斯优化来选择用于训练内核分类器的最佳参数。
Train Support Vector Machines Using Classification Learner App介绍了如何使用分类器APP训练支持向量机,并进行应用,给出了详细的图文教程,十分人性化。
此外,Select Data and Validation for Classification Problem还对Matlab自带的数据进行了说明,还是那句话,十分人性化。