Java教程

手撕SVM

本文主要是介绍手撕SVM,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

首先了解一下SVM是干什么的,SVM用来分类样本的。SVM的目标是寻找到一个最佳的超平面使得(超平面可能有很多,最佳超平面和支持向量之间的间隔最可能大)。划分超平面可以通过线性方程来描述:

$$ w^Tx+b = 0 $$

$w=(w_1;w_2;...;w_d)$为法向量,决定了超平面的方向,$b$为位移项,据定了超平面与原点之间的距离,$w,b$是确定超平面的两个唯一的重要因素,记为$(w,b)$,样本空间中任意点$x$到超平面$(w,b)$的距离可写为:

$$ r = \frac{|w^Tx+b|}{||w||} $$

假设超平面$(w,b)$能够训练样本正确分类,即对于$(x_i, y_i) \in D$,若$y_i = +1$,则有$w^Tx_i+b>0$;若$y_i=-1$,则有$w^Tx_i+b<0$,根据切比雪夫不等于,我们一定可以找到一个$\epsilon$ 满足$w^Tx_i+b≤\epsilon<0$,$\epsilon<0$

$$ w^Tx_i+b≤\epsilon<0 $$ $$ 两边同时除以-\epsilon, \frac{-w^Tx_i}{-\epsilon}-\frac{b}{\epsilon}≤-1$$ $$ w^Tx_i+b≤-1, y_i=-1 (1)$$ $$同理,w^Tx_i+b≥+1, y_i=+1(2)$$

距离超平面最近的这几个样本点使得(1)(2)成立,它们被称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为$\gamma$,$\gamma$也被称为“间隔”(margin)

$$\gamma = \frac{2}{||w||}=\frac{1}{||w||}+\frac{1}{||w||}$$ ![image](https://www.www.zyiz.net/i/l/?n=22&i=blog/1195588/202204/1195588-20220419235341591-1027609089.png)

 

 

![](https://www.www.zyiz.net/i/l/?n=22&i=blog/1195588/202204/1195588-20220420091903333-1827856908.png)
这篇关于手撕SVM的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!