很久以前看吴恩达老师的视频和西瓜书时用jupyter写的,今天想起来就把它转到这里,真的挺方便。
目的:基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开并选择泛化能力最强的划分超平面。
1.间隔与支持向量–在众多超平面中找到鲁棒性最好的那个
划分超平面可通过如下线性方程描述:
w
T
x
+
b
=
0
w^Tx + b = 0
wTx+b=0
W与b共同决定了超平面。平面上任意一点到超平面的距离为:
γ = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ \gamma = \frac {|w^Tx + b|}{||w||} γ=∣∣w∣∣∣wTx+b∣
from IPython.display import Image
libo="C:/Users/libo/Desktop/machine learning/西瓜书/西瓜书图片/"
Image(filename = libo + "11.png", width=400, height=60)
如上图所示,使得 w T x + b = 1 w^Tx + b = 1 wTx+b=1 的点称为“支持向量”,易知,两个异类支持向量到超平面的距离之和为 γ = 2 ∣ ∣ w ∣ ∣ \gamma = \frac 2{||w||} γ=∣∣w∣∣2,称之为“间隔”。
我们的目的:找到最大间隔的划分超平面,即找到约束参数w和b,使得γ最大。
m a x 2 ∣ ∣ w ∣ ∣ max \frac 2{||w||} max∣∣w∣∣2
m i n 1 2 ∣ ∣ w ∣ ∣ 2 min \frac1 2||w||^2 min21∣∣w∣∣2
2.对偶问题
目的:换一种角度来找到最大间隔划分超平面所对应的模型。
任何一个线性问题都至少有一个对偶问题,所谓对偶问题,即换了一种问法的问题。
eg.企业怎样充分利用现有人力、物力去完成更多的任务 和 怎样用最少的人力、物力消耗去完成给定的任务。
m i n 1 2 ∣ ∣ w ∣ ∣ 2 min \frac1 2||w||^2 min21∣∣w∣∣2 该式(凸二次规划)的对偶问题为:(使用拉格朗日乘子法)
libo="C:/Users/libo/Desktop/machine learning/西瓜书/西瓜书图片/"
Image(filename = libo + "12.png", width=400, height=60)
求解该式时,训练样本 ( x i , y i ) (x_i,y_i) (xi,yi)需要满足 KKT 条件: ( α i : ∑ i = 1 m α i y i = 0 \alpha_i : \sum_{i=1}^{m} \alpha_i y_i = 0 αi:∑i=1mαiyi=0)
libo="C:/Users/libo/Desktop/machine learning/西瓜书/西瓜书图片/"
Image(filename = libo + "13.png", width=300, height=60)
该式为一个二次规划问题(含2个自变量的优化问题,问题规模正比于训练样本数,s.t.意为限制条件),求解该式时,有一个 SMO 算法 :
思想:固定 α i \alpha_i αi之外的所有参数,然后求 α i \alpha_i αi的极值。
执行:1.选取一对需更新的变量 α i \alpha_i αi和 α j \alpha_j αj;2.固定 α i \alpha_i αi意外的参数,用对偶矩阵不断更新 α i \alpha_i αi和 α j \alpha_j αj直到趋于稳定。
α i \alpha_i αi、 α j \alpha_j αj有一个不满足KKT条件的时候,目标函数就在迭代后减小。违背程度大则变量更新后的目标函数减幅越大。
核函数
背景:当原始样本空间并不存在一个能正确划分两类样本的超平面时,我们需要升维。到了某一高维特征空间,必然可分。
问题:空间维数过高,计算困难。
核函数:避免计算高维,模型最优解可由训练样本的核函数展开得到。 然后,难点变成了找到核函数。
特征空间的好坏对支持向量机的性能至关重要,不同的特征空间一般对应了不同的划分平面。因此,不合适的空间会导致性能不佳。
核函数的性质:1.核函数的线性组合也是核函数。 2.核函数的直积也是核函数。 3.如下:
libo="C:/Users/libo/Desktop/machine learning/西瓜书/西瓜书图片/"
Image(filename = libo + "14.png", width=400, height=60)
软间隔与正则化
背景:核函数很难找到,恰好找到,也可能是过拟合所造成的。
引入软间隔:允许一些样本出现分类错误。 于是乎,现在的任务变成了最小化间隔。
libo="C:/Users/libo/Desktop/machine learning/西瓜书/西瓜书图片/"
Image(filename = libo + "16.png", width=560, height=60)
libo="C:/Users/libo/Desktop/machine learning/西瓜书/西瓜书图片/"
Image(filename = libo + "15.png", width=560, height=60)
0/1损失函数的数学性质不佳,使得6.29不宜求解。通常使用一些替代函数来替换损失函数,他们通常是0/1损失函数的上界。
libo="C:/Users/libo/Desktop/machine learning/西瓜书/西瓜书图片/"
Image(filename = libo + "17.png", width=560, height=60)
支持向量回归
回归问题:给定训练样本,学得回归模型。使得 f ( x ) f(x) f(x)与 y 尽可能接近。
不同的是:SVR假设我们能容忍 f ( x ) f(x) f(x)与 y 之间最多有 ? 的偏差。如下图所示,即相当于构建一个宽度为 2? 的间隔带,若训练样本落入此区域,则预测正确。
libo="C:/Users/libo/Desktop/machine learning/西瓜书/西瓜书图片/"
Image(filename = libo + "18.png", width=560, height=50)
核方法
如果不考虑偏移项 b ,无论SVM还是SVR学得的模型都能表示为核函数的线性组合,显示出核函数的优势。所以发展出了一系列的基于核函数的学习方法,统称为核方法。
最常见的是通过引入核函数,将线性学习器进行非线性拓展。