机器学习笔记028 | 支持向量机SVM的原理

还记的之前笔记《关于分类问题的预测》提到关于逻辑回归的分类么?

对于类似这样的蓝圈和红叉:

机器学习笔记028 | 支持向量机SVM的原理_第1张图片

我们可以用一根直线把它们区分开来:

机器学习笔记028 | 支持向量机SVM的原理_第2张图片

但显然,这不是一条很好的决策边界。因为只要放入更多的数据,可能就会出现识别错误:

机器学习笔记028 | 支持向量机SVM的原理_第3张图片

怎么样才能在放入了更多的数据之后,依然能够比较准确的区分呢?

这里似乎可以有无数条可以分割的曲线:

机器学习笔记028 | 支持向量机SVM的原理_第4张图片

我们需要做的就是找到最合适的一条。

有一个比较受欢迎的算法,可以帮我们做到这一点。这个算法叫做支持向量机(SVM,Support Vector Machine)

SVM其实是试图把直线在最佳位置,好让在直线的两边距离数据有尽可能大的空隙,就像下图这样:

机器学习笔记028 | 支持向量机SVM的原理_第5张图片

训练集中的每一个数据点,距离分割直线都有一定的距离。

添加分割直线的时候,只要使得最靠近直线的点,与直线的距离最大化,最终就能够得到这样的效果。

大部分数据点对于这条直线的摆放都没有起到作用,最终决定直线位置的,是下图中这么两个数据点:

机器学习笔记028 | 支持向量机SVM的原理_第6张图片

这里最靠近黑线的蓝圈和红叉,就是支持向量。

这里的距离是怎么计算得到的呢?

逻辑回归的预测函数是: hθ(x) = g(θTx)

这条黑线其实就是一条决策边界,对应着向量化公式 θTx = 0。

θTx 大于0的情况被认定为红叉,θTx 小于0被认定为蓝圈。

这里 θTx 是包含了θ0 和 x0 的,并且x0 = 1。

我们将 θ0 设定 b ,向量 θ1,θ2,θ3,…,θn 设定为 w ,对公式进行一下变形,就能够得到:

θTx = wTx + b

对于直线 wTx + b = 0,w就是其法向量,垂直于直线的向量。

法向量可以根据直线的方向向量(对应着斜率)推导得到。

例如 Ax + By + C = 0 ,该直线的斜率为 -A/B ,方向向量为 ( 1,-A/B ),因为 法向量*方向向量 = 0 ,所以其法向量为 ( 1,B/A ) ,也就是 ( A,B ) 。

所以我们可以看到这样的一个图片:

机器学习笔记028 | 支持向量机SVM的原理_第7张图片

有一个点x,投射到直线上的对应的点为 x0 。w是这条直线的法向量,γ为x到直线的距离。

那么我们可以得到:

其中||w||为向量到直线的范数,或者说是向量长度。范数的平方就是该向量的内积:||w||2 =wTw

这个公式进一步推导,我们就可以得到:

γ就是点到直线的距离,由于距离必然为正,这里我们加一个绝对值:

我们希望找到的黑线对于两种分类的数据点都有足够大的间隔,其实就是希望 θTx >> 0 是红叉,并且θTx << 0 是蓝圈。

对于逻辑回归函数 g 来说,我们可以认为只要概率大于 70% ,那么结果就比较确切了。

因为g(1) ≈ 0.7 ,所以对于分类结果,在 y = 1 的时候,我们可以设置 θTx ≥ 1 ,在 y = 0 的时候,我们可以设置 θTx ≤ -1 。

我们要求得最大的 γ ,为了方便计算,设置 |θTx| = 1 ,也就是 |wTx + b| = 1 。那么函数的间隔就是:

我们要最大化间隔,那就是要计算:

对于需要得到的最小化||w||来说,这其实和下面的公式的问题是等价的:

所以求解的目标就是:

机器学习笔记028 | 支持向量机SVM的原理_第8张图片

文章转载自公众号:止一之路

你可能感兴趣的:(机器学习笔记028 | 支持向量机SVM的原理)