机器学习--支持向量机(SVM)

支持向量机(线性) S V M SVM SVM

引入

S V M SVM SVM 用于解决的问题也是 c l a s s i f i c a t i o n classification classification,这里 y ∈ { − 1 , 1 } y \in \{-1, 1\} y∈{−1,1}

比如说这样一个需要分类的训练数据:

我们可以有很多直线来分开这两坨东西,就像这样:

我们看到这三条线 l 1 , l 2 l_1, l_2 l1,l2 和 l 3 l_3 l3,我们显然可以看出来 l 1 l_1 l1 比 l 2 l_2 l2 和 l 3 l_3 l3 要更优秀,但是我们怎么定义这个所谓的 "优秀" 呢?

间隔 M a r g i n Margin Margin 和 最小化 ∣ w ∣ |w| ∣w∣

我们这样理解,考虑将 l l l 在样本空间中平移,直到这条直线第一次碰到两组东西数据时停止。这样我们能得到两根 "边界线"(图中绿色的线)。

我们发现,我们认为最优秀的线所形成的 "边界线" 的距离是最大的,我们把这个距离成为间隔 m a r g i n margin margin。于是在 S V M SVM SVM 的思想中,我们就是要找到 m a r g i n margin margin 最大的那条线。

我们把这些"平移过程中第一次碰到的向量 "称为支持向量

我们把这条线根据之前的习惯写成这样:

h ( x ) = w T x h(x) = w^Tx h(x)=wTx

然后我们考虑如何计算出 m a r g i n margin margin。首先对于一个支持向量 x ( i ) x^{(i)} x(i) 来说,它到直线的距离可以写成:

d = ∣ ∑ j = 0 n w j x j ( i ) ∣ ∑ j = 1 n w j 2 = ∣ w T x ( i ) ∣ ∣ w ∣ d = \frac{\bigg|\sum\limits_{j = 0}^n w_jx^{(i)}j \bigg|}{\sqrt{\sum\limits{j = 1}^n w_j^2}} = \frac{\bigg|w^Tx^{(i)}\bigg|}{|w|} d=j=1∑nwj2 j=0∑nwjxj(i) =∣w∣ wTx(i)

然后又因为我们知道, h ( x ) = w T x h(x) = w^Tx h(x)=wTx 和 h ( x ) = ( a w ) T x h(x) = (aw)^Tx h(x)=(aw)Tx 本质上表示的是同一条直线(其中 a a a 是常数)。所以我们可以用 a a a 来放缩直线 h ( x ) h(x) h(x),使得 ∣ ( a w ) T x ( i ) ∣ = 1 |(aw)^Tx^{(i)}| = 1 ∣(aw)Tx(i)∣=1。

此时,支持向量 x ( i ) x^{(i)} x(i) 到直线的距离就是:

d = 1 ∣ w ∣ d = \frac1{|w|} d=∣w∣1

我们希望 d d d 最大,那么我们就希望 ∣ w ∣ |w| ∣w∣ 最小了。

但是这只是对于支持向量来说,那么对于其他向量来说又要满足什么要求呢?

限制条件

对于其他非支持向量 x ( j ) x^{(j)} x(j) 来说, x ( j ) x^{(j)} x(j) 到直线的距离显然是大于支持向量 x ( i ) x^{(i)} x(i) 的,所以我们有:

d x ( j ) = ∣ w T x ( j ) ∣ ∣ w ∣ > d x ( i ) = 1 ∣ w ∣ d_{x^{(j)}} = \frac{\bigg|w^Tx^{(j)}\bigg|}{|w|} > d_{x^{(i)}} = \frac 1{|w|} dx(j)=∣w∣ wTx(j) >dx(i)=∣w∣1

于是我们有:

∣ w T x ( j ) ∣ > 1 \bigg|w^Tx^{(j)}\bigg| > 1 wTx(j) >1

那么对于所有向量来说:

∣ w T x ∣ ≥ 1 \bigg|w^Tx\bigg| \ge 1 wTx ≥1

如果把绝对值去掉的话,我们就要分是 y y y 属于 1 1 1 类还是 − 1 -1 −1 类了。而经过分类讨论我们会发现,对于所有向量 x x x,我们都有:

y ( i ) [ w T x ( i ) ] ≥ 1                ( i = 1 ∼ m ) y^{(i)}[w^Tx^{(i)}] \ge 1 \;\;\;\;\;\;\;(i = 1 \sim m) y(i)[wTx(i)]≥1(i=1∼m)

总结

于是我们可以得到支持向量机想要我们做的事就是这样的:

min ⁡ w 1 2 ∣ w ∣ s . t .      y ( i ) [ w T x ( i ) ] ≥ 1 \begin{aligned} \min\limits_{w} \frac 12 &|w| \\ &s.t. \; \;y^{(i)}[w^Tx^{(i)}] \ge 1 \end{aligned} wmin21∣w∣s.t.y(i)[wTx(i)]≥1

相关推荐
zore_c16 分钟前
【C语言】文件操作详解1(文件的打开与关闭)
c语言·开发语言·数据结构·c++·经验分享·笔记·算法
资深web全栈开发18 分钟前
[特殊字符] LeetCode 2141:如何让 N 台电脑续航最久?——“二分答案“套路一文讲透
算法·leetcode
刃神太酷啦22 分钟前
C++的IO流和C++的类型转换----《Hello C++ Wrold!》(29)--(C/C++)
java·c语言·开发语言·c++·qt·算法·leetcode
稚辉君.MCA_P8_Java24 分钟前
Gemini永久会员 哈希表(Hash Table)高效的数据结构
java·数据结构·后端·算法·架构
Teroin25 分钟前
LeetCode55 跳跃游戏
数据结构·算法·leetcode
summer__777726 分钟前
【期末复习01】-算法题ProgramDesign
java·算法
CoderYanger31 分钟前
递归、搜索与回溯-记忆化搜索:40.矩阵中的最长递增路径
java·线性代数·算法·leetcode·矩阵·1024程序员节
报错小能手33 分钟前
数据结构 不带头结点的双向循环链表
数据结构·算法·链表
木头左35 分钟前
降维保真度权衡方差解释占比阈值对量化交易预测精度的影响分析
人工智能·机器学习·数学建模
李玮豪Jimmy39 分钟前
Day26:贪心算法part4(452.用最少数量的箭引爆气球、435.无重叠区间、763.划分字母区间)
算法·贪心算法