参考:(5条消息) Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM_Jack-Cui-CSDN博客
【机器学习实战】【python3版本】【代码讲解】_哔哩哔哩_bilibili
SVM简介
支持向量机(support vector machines, SVM)是一种二分类模型,定义在特征空间上的间隔最大的线性分类器,还包括核技巧。SVM的学习策略就是间隔最大化,SVM的学习算法就是求解凸二次规划的最优化算法。涉及到KKT条件,拉格朗日对偶,二次规划等数学知识。SVM主对付小样本问题,对于如今大数据时代,存在较大弊端,但其具有非常严格的理论推导,值得GET。
支持向量: 支持起超平面的样本点即为支持向量
核函数:本质上为一种非线性映射函数,目的是将输入空间映射到高维特征空间,从而将在低维线性不可分的模式转换为高维线性可分的模式,同时核函数将m维高维空间的内积运算转化为n维低维输入空间的核函数计算,从而避免了“维数灾难”,大大简化计算。
常用核函数:
线性核(Linear Kernel): 即不使用核函数
多项式核(Polynomial Kernel):
有三个参数设置,degree:多项式核函数的阶数,默认3;-a用来设置核函数中的gamma参数设置,和RBF作用相同,默认是1/k(k为样本个数);-c用来设置核函数中的coef0(类似于b),默认值是0.
径向基核函数(Radial Basis Function):
应用最广泛,有一个参数。- g用来设置核函数中的gamma参数设置,默认是1/k(k为类别数)
高斯核(Gaussian Kernel):
Sigmoid核(Sigmoid Kernel):
有两个参数,-a用来设置核函数中的gamma参数设置,也就是公式中的第一个a(gamma),默认是1/k(k为类别数)。-c用来设置核函数中的coef0
support vector machines
惩罚项参数C作用等效于正则化参数1/λ, gamma参数作用等效于δ,表示函数值跌落到0的速度,其实就是标准差。
推荐:LIBSVM
SVM算法原理
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
如图,wx+b=0 即为分离超平面
具体参考(5条消息) Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM_Jack-Cui-CSDN博客 写的超详细!
拉格朗日函数:
KTT条件:
SMO算法:目标是求出一系列alpha和b,一旦求出了这些alpha,就很容易计算出权重向量w并得到分隔超平面。
工作原理:每次循环中选择两个alpha进行优化处理。
对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个维特征空间中的线性分类问题,在高维特征空间中学习线性支持向量机。由于在线性支持向量机学习的对偶问题里,目标函数和分类决策函数都只涉及实例和实例之间的内积,所以不需要显式地指定非线性变换,而是用核函数替换当中的内积。核函数表示,通过一个非线性转换后的两个实例间的内积。