认识SVM
通过逻辑回归引入SVM
回顾逻辑回归:
在SVM中对代价函数进行改变 :
图像中的红色曲线cost函数代替了原来的log函数,并且将正则化部分的λ变为C,对应的代价函数变为:
对比于逻辑回归输出的是y=1的概率,支持向量机所做的是它来直接预测𝑦的值等于 1,还是等于 0。
大间距分类器
SVM模型假设为:
通过把𝐶设置成非常大的常数来给我们一些关于支持向量机模型的直观感受。
如果 𝐶非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为 0 的最优解。当𝑦 = 1时,你想令第一项为0,你需要做的是找到一个𝜃,使得𝜃𝑇𝑥 >= 1,类似地,对于一个训练样本,标签为𝑦 = 0,为了使cos𝑡0(𝑧) 函数的值为 0,我们需要𝜃𝑇𝑥 <= −1。
即:
这种情况下,最小化代价函数就转化成了,而这个函数的约束条件为
核函数
核函数概念
回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题:
在这里我们通过引入核函数来解决这个问题。
新的假设函数为
其中,我们用一系列的新的特征 f 来替换模型中的每一项。例如令: 𝑓1 = 𝑥1, 𝑓2 = 𝑥2, 𝑓3 = 𝑥1𝑥2, 𝑓4 = 𝑥12, 𝑓5 = 𝑥2……
另外,我们引入几个向量l(i)作为landmarks
给定一个训练实例 𝑥 ,我们利用 𝑥 的各个特征与我们预先选定的 地 标(landmarks)𝑙(1), 𝑙(2), 𝑙(3)的近似程度来选取新的特征𝑓1, 𝑓2, 𝑓3
exp中的函数为高斯核函数
则如果一个训练实例𝑥与地标𝐿之间的距离近似于 0,则新特征 𝑓近似于𝑒−0 = 1,如果训练实例𝑥与地标𝐿之间距离较远,则𝑓近似于𝑒−(一个较大的数) = 0。
这样就表示了样本x的一种高维映射,离标记点越近值越高。
σ对核函数的影响
通过图片看出,δ越大收敛慢,δ越小收敛快。
核函数细节补充
如何选择地标landmarks
我们通常是根据训练集的数量选择地标的数量,即如果训练集中有𝑚个实例,则我们选取𝑚个地标,并且令:𝑙(1) = 𝑥(1), 𝑙(2) = 𝑥(2), . . . . . , 𝑙(𝑚) = 𝑥(𝑚)。这样做的好处在于:现在我们得到的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上的,即:
每给定一个样本x,计算他与所有l的映射f:
下面我们将核函数运用到支持向量机中,修改我们的支持向量机假设为:
给定𝑥,计算新特征𝑓,当𝜃𝑇𝑓 >= 0 时,预测 𝑦 = 1,否则反之。
在进行预测之前还应当求解参数θ,即最小化代价函数。
SVM中的参数对模型的影响,主要是两个方面:C和δ。
𝐶 较大时,相当于𝜆较小,可能会导致过拟合,高方差;
𝐶 较小时,相当于𝜆较大,可能会导致低拟合,高偏差;
𝜎较大时,可能会导致低方差,高偏差;
𝜎较小时,可能会导致低偏差,高方差。
使用SVM
选择参数
- 选择一个合适的C:
- 大C:低偏差,高方差(对应低λ,overfitting)
- 小C:高偏差,低方差(对应高λ)
- 选择一个合适的核函数:
- linear kernel(No kernel)
- 高斯核
逻辑回归模型和支持向量机模型选用原则
𝑛为特征数,𝑚为训练样本数。
(1)如果相较于𝑚而言,𝑛要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。
(2)如果𝑛较小,而且𝑚大小中等,例如𝑛在 1-1000 之间,而𝑚在 10-10000 之间,使用高斯核函数的支持向量机。
(3)如果𝑛较小,而𝑚较大,例如𝑛在 1-1000 之间,而𝑚大于 50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。