机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题

Posted theworld666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题相关的知识,希望对你有一定的参考价值。

机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题

前言

svm作为深度学习提出前曾经风靡一段时间的机器学习方法,广泛被应用在数据分类,数据处理上。它以巧妙的算法(巧妙到对我来说真的有点复杂了😫😫😫。。。),速度快,分类正确率高而著称。我们本篇博客则重点介绍svm支持向量机的具体原理,以及他具体如何来处理分类问题。

1.从二维线性模型说起

让我们先来看这个问题,假设我们有给出一系列数据:
( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) . . . ( x n , y n ) (x_1,y_1),(x_2,y_2),(x_3,y_3)...(x_n,y_n) (x1,y1),(x2,y2),(x3,y3)...(xn,yn)
假设我们已经知道了他们中存在两个聚类,那么现在我们想要利用这一系列训练样本,训练出一个能够划分的这两个聚类的方法。使得接下来我们随机输入的点都能被正确的划分聚类。可视化问题就是下面这一张图:

我们对此的目标就是寻找到出一个分割直线 wx + b =0,能够正确划分这两个聚类(之后我们使用正样本和负样本来代称)。使用数学问题来表述就是寻找到出一系列点使得对于所有正样本代入式子wx+b得到值为正,所有负样本代入式子wx+b值为负。

当然这里又出现问题了,就是其实根据训练数据样本的不同我们可以找到这样的分割向量其实理论上来说是可以无限种的(限制一段空间,我们依然能绘画出无数条直线)。那么选择哪一条最好呢?

当然这里学者们依然给出了一个选择分隔直线的方法,我们选择能够能够使分隔间距最大的直线也就是图中红色这一条。为什么呢?因为我们生成出来的模型其实非常严重依赖当前训练集的数据。如果我们不选择间隔最大化的这条直线可能出现因为分隔平面与正样本区域距离的不够远导致一些原本属于负样本的点却被分类到负样本去了。

那么通过这上面的叙述,我们的问题就转化到下面这个问题上来了:

这些被圆圈圈住的点,我们就称之为支持向量(support vector)根据我们的假设这些支持向量代入直线计算只有可能为1或-1这两种值(至于如果你想了解为什么是1和-1而不是其他的数,这里推荐大家去看这位大佬的博客【机器学习算法】支持向量机入门教程及相关数学推导_SESESssss的博客-CSDN博客 ,这里我就不详细叙述了)。那么我们现在就是要寻找出一个最大间隔,这里我们使用数学表示就是:
对 于 正 样 本 , 负 样 本 中 最 靠 近 分 隔 直 线 的 向 量 存 在 以 下 参 数 w , b 使 得 w ⊤ x + b = 1 w ⊤ x + b = − 1 我 们 计 算 这 两 条 直 线 到 直 线 w ⊤ x + b = 0 的 距 离 计 算 可 得 : γ = 2 ∥ w ∥ 对于正样本,负样本中最靠近分隔直线的向量存在以下参数w,b使得\\\\ \\boldsymbolw^\\top \\boldsymbolx+b=1 \\\\ \\boldsymbolw^\\top \\boldsymbolx+b=-1\\\\ 我们计算这两条直线到直线\\boldsymbolw^\\top \\boldsymbolx+b=0 的距离计算可得:\\\\ \\gamma=\\frac2\\|\\boldsymbolw\\| 线w,b使wx+b=1wx+b=1线线wx+b=0γ=w2
这里在计算的时候使用了点到直线距离的计算公式有疑问的同学可以百度一下补充知识偶😘😘。到这里我们支持向量的最终目标就很明显了寻找到一个使得分隔最大的直线(对于高维的点是寻找分隔平面)来划分正样本和负样本。而为了寻找到这样的直线,我们其实并不需要利用所有样本,只需要这些距离分隔平面最近的向量来计算即可。所以这也是SVM(support vector machine)支持向量机名字的由来。他并不跟一般机器学习方法依赖数据集中的所有点来决定,他实际上只依赖于部分支持向量从而构建分类器。

那么又到了扯公式的时候了,如何寻找到这样的w,b呢?来让我们继续往下计算取:
arg ⁡ max ⁡ w , b 2 ∥ w ∥  s.t.  y i ( w ⊤ x i + b ) ≥ 1 , i = 1 , 2 , … , m . \\beginaligned \\underset\\boldsymbolw, b\\arg \\max & \\frac2\\|\\boldsymbolw\\| \\\\ \\text s.t. & y_i\\left(\\boldsymbolw^\\top \\boldsymbolx_i+b\\right) \\geq 1, i=1,2, \\ldots, m . \\endaligned w,bargmax s.t. w2yi(wxi+b)1,i=1,2,,m.
这个式子不够方便计算,为了计算方便我们进行转换,求原始值倒数的最小值等同于求原始值的最大值,所以我们做如下转换:
arg ⁡ min ⁡ w , b 1 2 ∥ w ∥ 2  s.t.  y i ( w ⊤ x i + b ) ≥ 1 , i = 1 , 2 , … , m \\beginaligned \\undersetw, b\\arg \\min & \\frac12\\|\\boldsymbolw\\|^2 \\\\ \\text s.t. & y_i\\left(\\boldsymbolw^\\top \\boldsymbolx_i+b\\right) \\geq 1, i=1,2, \\ldots, m \\endaligned w,bargmin s.t. 21w2yi(wxi+b)1,i=1,2,,m
式子展开到现在其实已经知道怎么解决很明显了。相信如果是对学习过高等数学非常深刻的同学一定记得:举个例子:

给定一个约束条件F(x,y,z) = 0需要求解f(x,y,z)的最大值的方法。使用拉格朗日乘子方法可以轻松解决这个问题:
设 方 程 为 f ( x , y , z ) + α F ( x , y , z ) = 0 然 后 分 别 对 x , y , z , α 求 导 即 可 以 确 定 当 取 得 极 值 时 x , y , z 的 值 设方程为 f(x,y,z) + α F(x,y,z)=0\\\\ 然后分别对x,y,z,α求导即可以确定当取得极值时x,y,z的值 f(x,y,z)+αF(x,y,z)=0x,y,z,αx,y,z
但是这里可能有同学又要问了?但是你这里约束条件是不等式啊?不是等式这也能直接使用拉格朗日乘子方法来求解吗?那么接下来我们就来详细探究在不等式情况下我们需要如何求解呢?(接下来涉及很多数学公式的推导,限于博主的知识水平不足,可能推导过程中存在一些错误,希望大家能够在评论区指正😥😥😥

2. 如何求解SVM的相关变量

这里我们先来说明拉格朗日函数是否能解决不等式约束问题。其实拉格朗日函数原本的公式是:对于带约束条件的优化问题,如果满足以下形式,我们就可以使用拉格朗日函数进行转化:
min ⁡ x ∈ R n f ( x )  s.t.  c i ( x ) ⩽ 0 , i = 1 , 2 , ⋯   , k h j ( x ) = 0 , j = 1 , 2 , ⋯   , l \\beginaligned &\\min _x \\in \\mathbbR^n f(x) \\\\ &\\text s.t. \\\\ &\\beginarrayl c_i(x) \\leqslant 0, \\quad i=1,2, \\cdots, k \\\\ h_j(x)=0, \\quad j=1,2, \\cdots, l \\endarray \\endaligned xRnminf(x) s.t. ci(x)0,i=1,2,,khj(x)=0,j=1,2,,l
对于上面这个式子,我们就可以转化为一个拉格朗日函数:
L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) L(x, \\alpha, \\beta)=f(x)+\\sum_i=1^k \\alpha_i c_i(x)+\\sum_j=1^l \\beta_j h_j(x) L(x,α,β)=f(x)+i=1kαi以上是关于机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题的主要内容,如果未能解决你的问题,请参考以下文章

机器学习-支持向量机的SVM(Supprot Vector Machine)算法-linear separable

机器学习-支持向量机SVM

机器学习-支持向量机的SVM(Supprot Vector Machine)算法-linear inseparable

支持向量机

机器学习算法之二:SVM(支持向量机)

什么是支持向量机?