SVM支持向量机 超详细过程讲解

SVM支持向量机 超详细过程讲解

    • 前言
    • 一、线性模型

前言

此篇文章为B站浙大机器学习课程支持向量机部分的个人笔记,不喜勿喷。笔记顺序从线性模型到非线性模型,层层递进,十分易懂。

一、线性模型

先从一个简单二维线性模型开始。
SVM支持向量机 超详细过程讲解_第1张图片
可以简单的认为,就是找到一条线,并让这条线到两边的距离都为d/2,而在虚线上的点,就叫做支持向量。

  • 接着提升到三维空间里,就可以认为是找到一个平面,并让这个平面到两边的距离都为d/2,而距离这个平面d/2的点,就叫做支持向量。
  • 最后 扩展到高维空间里,就可以认为是找到一个超平面,并让这个超平面到两边的距离都为d/2,而距离这个平面d/2的点,就叫做支持向量。在高维空间中,点的表示为(x1,x2,…,xn),所以通常把高维空间中的点叫做向量。

因此,我们可以得到支持向量的定义:

  • 训练数据及标签:(x1, y1), (x2, y2) …
    注意:这里的x1是高维空间的坐标,是一个向量,可以表示为
    x1 = [x11, x12, x13, … , x1n]T。而y1是标签,y1 只能为 +1或-1。
    可以理解 向量 x1 是属于 +1 类的,或 x1 是属于 -1 类的。

  • 线性模型:(w, b)
    其中 w是一个向量,维度和x1相同, w = (w1, w2, w3, … , wn); b是一个常数。
    超平面可以表示为:wTx + b = 0。
    wTx1 = w1 * x11 + w2 * x12 + … + wn * x1n。

  • 一个训练集线性可分是指:
    对于所有 { (xi, yi) } i = 1 ~ n
    存在 (w, b)
    使得对于任意的 i = 1 ~ n都满足:
    a. 若yi = +1 则 wTxi + b ≥ 0
    b. 若yi =-1 则 wTxi + b < 0
    将a,b两个式子简化成一个式子,就可以得到:
    yi * (wTxi + b) ≥ 0 (公式1

接下来的一步 需要用到2个知识点:

  • 知识点1:wTx + b = 0 与 a*wTx+a*b = 0 是同一个平面 (a > 0)
    若(w, b)满足公式1,则(aw, ab)也满足 公式1

  • 知识点2:点到平面的距离公式:
    在二维平面中,设直线为 w1x + w2y + b = 0,则点(x0, y0)到该直线的距离为:
    SVM支持向量机 超详细过程讲解_第2张图片
    推广一下:
    向量x1到超平面 wTx + b = 0 的距离为:

    SVM支持向量机 超详细过程讲解_第3张图片
    其中:
    wTx1 = w1 * x11 + w2 * x12 + … + wn * x1n
    在这里插入图片描述

有了上述两个知识点后
我们就可以根据 知识点2得到高维空间中的支持向量到超平面的距离为:
SVM支持向量机 超详细过程讲解_第4张图片
然后,我们根据知识点1,对 (w, b) 进行缩放,缩放为(a*w, a*b)
最终使支持向量到超平面的距离等于1,即 |wTx + b| = 1
则此时 支持向量 到 超平面 的距离为:
SVM支持向量机 超详细过程讲解_第5张图片
因此 我们需要最大化 d,在数学上等价于 最小化 ||w||²,而为了后面的求导方便,我们可以再等价于 最小化 1/2*||w||²。

最后 我们可以得到在线性模型中的使d最大化的优化问题:

  • 最小化:1/2*||w||²
  • 限制条件:yi * (wTxi + b) ≥ 1 (i = 1 ~ N)

这是一个二次优化问题, 即 目标函数是二次项,限制条件是一次项。二次优化问题,要么无解,要么只有一个极值。

先写到这,读者可以选择直接去看B站视频,文中链接已放,视频中的讲解超级详细。

你可能感兴趣的:(机器学习)