持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情
有时候也被叫做大间隔分类器(Large Margin Intuition)
优化目标
优化逻辑回归的代价函数,y=1和y=0时分别对应左右两边的图像,将log表达式的平滑曲线改为紫红的折线形式,然后开始构建支持向量机
支持向量机代价函数
对代价函数进行改写,得到支持向量机的代价函数。1/m是常数,并不影响minJ(θ),将公式后半部分的λ(一个极大量,后半部分权重高)去掉,前半部分乘上一个常量C(一个极小量,同样后半部分权重高)
大间隔分类器
在支持向量机中,并不是刚刚好分类就可以了(这里以θ_tX>=0为例),而是需要构建一个安全间距(θ_tX>=1),就是在分类时不仅仅是需要一个决策界限(例如一条直线)将样本分开,而且这个决策界限距离样本要有一个间隔,这样能够增强支持向量机的健壮性
如果C非常大,那么希望有一个值可以使minJ(θ)的前半部分为0,如下图所示
观察决策边界,如下图所示,几条边界都能将样本分离出来,但是黑线是支持向量机得到的分类边界,相对有更好的健壮性
将minJ(θ)转化为向量内积的形式再进行计算,如下图所示
参数θ向量和决策边界垂直,θ_0=0表示参数θ向量过原点,左边的图绿色线是一个决策边界,通过计算得到的p很小,要满足条件p_i·||θ||>=1,则需要||θ||的值很大,即θ的范数很大(这里和向量的模很类似)。但是支持向量机需要一个范数较小的参数θ向量,即向右边这样的(p的值比较大,则||θ||的值较小),这样即得到一个比较合适的决策边界,间隔较大,健壮性高
核函数(Kernel)
改造支持向量机算法,使适用于复杂的非线性分类器
对于给定的特征x,计算新的特征变量。手动选取几个标记l_1,l_2,l_3等,然后计算相似度,如下图所示,用到的函数称为核函数,这里相似度函数就是核函数,这里给的例子(后面的表达式)是高斯核函数。一般不使用similarity(x,l_i)表示,而是使用K(x,l_i)表示
核函数的意义
如上图所示,在靠近标记点l_1和l_2时,分类为1;远离时,分类为0.那么可以根据距离标记的距离来绘制出决策边界,距离正例标记近则计算出来为1。
这就是利用标记点和核函数来训练出非常复杂的非线性分类问题的决策边界的方法
标记点的选择
训练集中的样本就是标记点,m个样本就有m个标记点。
推广到一个样本的所有特征,f1=每个特征与l1的高斯核函数之和。 f2=每个特征与l2的高斯核函数之和。
也就是说,若是有m个l点,那么给你一个样本的话,便可以求出f1、f2...fm.
如上图所示,这里的x_i并不是一个样本里的第i个特征,而是指第i个样本。所以有m个样本,m个标记点,才会有m个f(f_1~f_m,f_0=1为截距),f_1表示X和样本点l1的相似度,f_2表示X和样本点l2的相似度
将向量X映射成向量f,原来是n+1(或n)维的特征向量描述一个样本X_i,但现在使用m+1维的新特征向量f来描述一个样本X_i
使用核函数的支持向量机的学习算法
如上图所示,这里的使用新的特征向量计算代价函数,这里的θ向量变成了m+1维,后面的正则项也做修改,改为1~m
核函数的思想同样可以用到逻辑回归中,但效果不好,一般不使用
参数的选择
使用SVM
参数和核函数的选择
线性核的SVM是指没有使用核函数的SVM,也叫线性内核函数
特征向量数量n很大,训练样本数量m很小,如果只想拟合一个线性决策边界,而不是复杂的非线性决策边界(因为没有足够的数据,很可能会出现过拟合现象)
n很小,m很大,使用高斯核函数是一个不错的选择
如上图所示,计算||x-l||时,如果某个特征值比较大,会导致其他特征值作用被忽略,因此需要一定的缩放
莫塞尔定理了解一下,核函数需要满足莫塞尔定理
逻辑回归OR线性核函数的SVM
特征数量n很大,样本数量m很小,使用逻辑回归或者线性核函数的SVM
特征数量n很小,样本数量m适中,使用线性核函数的SVM
特征数量n很小,样本数量m很大,使用逻辑回归或者线性核函数的SVM
如下图所示