(1)优化目标
支持向量机在学习复杂的非线性方程时能够提供一种更为清晰个更加强大的方式。
先回顾Logistic逻辑回归的相关概念,看如何进行改动可以得到支持向量机。
Logistic回归的假设函数,以及对应sigmoid激活函数图像如下:
Logistic回归中的代价函数为:
针对某一项的Cost为:
可以看到下图中SVM中对Logistic回归代价函数的改变:
Logistic回归总体优化目标到支持向量机的总体优化目标转换,如下图所示:
于是得到支持向量机的总体优化目标,最小化下面的函数,就得到了SVM学习得到的参数。
与逻辑回归不同的是,支持向量机并不会输出概率,相对的得到的是通过优化这个代价函数得到一个参数θ,支持向量机所做的是他直接进行一个预测,预测y是等于1还是等于0。学习得到参数值θ后,这就是支持向量机的假设函数的形式:
(2)直观上对大间隔的理解
有时候会把支持向量机叫做大间距分类器,本节中将会介绍这是什么意思,并给出直观的图像便于理解SVM假设。
对于下面的这个例子,有不止一条直线可以把正负样本划分开,但是相比来说,黑色的分界线要好很多,它是更稳健的决策边界。
从数学来说,这条黑色的决策边界拥有更大的距离,叫做边距,这个边距也叫做支持向量机的间距,这会使支持向量机具有鲁棒性。因此,支持向量机有时被称为大间距分类器。
从这张图中能够更直观的观察出支持向量机会选择什么样的模型。
对于下面大间距分类器,它是在常数C被设的非常大的情况下得出的:
当图中的异常点出现的时候,只因为出现了一个异常点,但是在常数C比较大的情况下,决策边界会从黑线变成红线,但如果常数C比较小,最后得到的还是黑线。
(3)大间距分类器的数学原理
********************************************************************************************************
通过简化问题,我们知道要求的最小值就是||θ||的最小值,即θ的范数最小值 ,通过两个向量相乘的几何含义如下:
经过上图的推导,就可以变成下面的样子
(4)核函数1
这一节中将改造支持向量机来构造复杂的非线性分类器,下面将介绍核函数是什么以及如何使用它。
之前的课程中有讲解用多项式解决非线性拟合问题:
在这里我们通过引入核函数来解决这个问题。
假设函数:
(用f代替x的参数)这个函数为新的假设函数。
手动的取3个点,把这些点叫做标记点:
我们设置f函数,衡量标记点l和原先样本点x的相似性。
上述公式中的相似度函数(similarity)用数学术语来说就是一个核函数 ,这里的核函数实际上是高斯核函数,即exp。这样就表示了样本x的一种高维映射,距离标记点x越近,值越高。
最后,我们需要研究δ对核函数的影响,通过图片看出,δ越大收敛慢,δ越小收敛快
(5)核函数2
下面将介绍如何在实际应用中应用核函数的思想,例如:如何处理支持向量机中的偏差方差的平衡。
上面介绍了选择标记点的过程,使我们能够定义相似度函数,也就是核函数,那么关于标记点,在实际问题中,我们应该怎么选取呢?
给定m个训练样本,将选取与m个样本完全一样的位置作为标记点。
这样,对于每一个训练集中的数据,我们都有一个m+1维向量与之对应
那么,上图中的向量就用于描述训练样本的特征向量。所以在给定核函数和相似度函数后,这就是我们如何使用简单的支持向量机。
给定x的值,并对样本x做出预测,先要计算特征向量f,f是m+1维特征向量,这里之所以有m是因为有m个训练样本,于是就有m个标记点。
预测样本点的归属类:
在预测时,使用以下计算公式:
这个函数等价于:
以上就是已知参数θ时 ,怎么做出预测的过程。那么 怎样得到参数θ呢?
方法具体来说就是要求解这个最小化问题, 你需要求出能使这个式子取最小值的参数θ。
另一个值得注意的问题是,当使用支持向量机时,怎么选择支持向量机中的参数?
首先选择的是优化目标中的参数C,C的作用和逻辑回归算法中的λ相似:
如果使用较大的参数C,则对应着逻辑回归中较小的λ时的情况,意味着不使用正则化,就有可能得到一个低偏差但高方差的模型,更倾向于过拟合;
如果使用较小的参数C,则对应着逻辑回归中较大的λ时的情况,意味着不使用正则化,就有可能得到一个高偏差但低方差的模型,更倾向于欠拟合。
另一个要选择的参数是高斯核函数中的δ^2
当δ^2偏大时,那么对应的相似度函数倾向于变得相对平滑,就有可能得到一个高偏差但低方差的模型;
当δ^2偏小时,那么对应的相似度函数倾向于变得相对集中,就有可能得到一个低偏差但高方差的模型;
这就是利用核函数的支持向量机算法。
(6)使用SVM
使用SVM的步骤:
一般使用SVM的软件包(例如:liblinear,libsvm…)来解决参数θ问题。
需要做的事情:
(1)首先提出参数C的选择
(2)需要选择内核参数或要使用的相似函数:
如果选择了高斯核函数,接下来要根据使用的支持向量机软件包,实现一个核函数或相似函数。
一个实现函数的注意事项:如果有大小很不一样的特征向量,很重要的事就是在使用高斯函数之前将这些特征变量的大小按比例归一化。
不是所有可能提出来的相似函数都是有效的核函数,高斯核函数和线性核函数以及有时可能会用到的核函数,这些函数都需要满足一个技术条件,叫作默塞尔定理。
需要满足这个条件的原因是因为支持向量机算法或SVM的实现函数有许多熟练的数值优化技巧,为了有效的求解参数θ,在最初的设想里,这些决策都用以将注意力仅仅限制在可以满足默塞尔定理的核函数上,这个定理所做的是确保所有的SVM包、所有的SVM软件包能够使用大类的优化方法并从而迅速得到参数θ。
多类别分类中的讨论:
输出在多个类别间恰当的判定边界
许多SVM的包已经内置了多分类的函数,因此,如果使用一个类似这样的模式,只是使用这些内置函数,但是会取得不错的效果。
除此之外,一个多分类的方法是使用one-vs-all的方法,要做的是训练K个SVM,如果有K个类别,用以将每个类别从其他类中区分开来,这会给你K参数的向量,这会尝试从其他所有类别中识别出y=1的类别。
逻辑回归VS支持向量机:
n代表特征的数量时,m是训练样本的数量时,应该如何选择两者中的一个呢?
▷ 当特征数量n很大,训练样本个数m不大时。比如,一个文本分类问题,特征矩阵的维度可能非常大,并且训练集的个数不大,这时候通常使用逻辑回归或不带核函数的SVM,使用线性核函数。(n=10000,m=10~1000)
▷ 当特征数量n比较少,并且训练样本m大小适中,这时候使用带高斯核函数的SVM。(n=1-1000,m=10~10000)
▷ 当特征数量n很小,训练样本个数m很大时,这时会尝试手动的创建更多的特征变量,然后使用逻辑回归或不带核函数的SVM。(n=1~1000,m=50000+)
▷ 对所有不同的问题、不同的设计,设计良好的神经网络可能会非常有效,但是神经网络训练起来可能会比较慢。
SVM仍然被认为是非常强大的机器学习算法之一,这是一个体系,包含了什么时候一个有效的方法去学习复杂的非线性函数,因此,实际上,与逻辑回归、神经网络、SVM一起使用这些方法来提高学习算法,有能力可能构造更加强大的机器学习系统和强大的算法工具。