• 一:什么是SVM向量机

    SVM向量机通俗来讲,是用于分类的一种算法。


       举例来说,SVM要做的就是,1.将图中的黑点和白点分开 2.分割线要尽量离两边的样本点要远。

       图中的黑色实线即为分割线,黑色虚线即为俩边的样本到分割线最近的位置。我们假设白点样本到分割线的最近的距离为d1,黑色样本点到分割线的最近的距离为d2,我们必须保证d1=d2。若d1不等于d2,即分割线距离某个样本比另一个样本更近,这个分割线是不合适的,因为它会更偏袒某个样本。
       由于样本离分割线的最近距离相同,即某个样本点距离分割线的距离相同,黑色
    虚线是按照样本点来画的,所以在黑色虚线的样本点,即距离分割线最近的几个样本点,我们叫做支持向量,分割线叫做决策面,并且对于一组样本,通常有不同的决策面。
       并且d要大,即距离应当更宽,因为分割线距离样本越宽,这个分割线就越“安全”。越不容易分错。

       下面来看一下怎么计算:

       第一:我们可以从图像知道,决策面是一个直线函数,我们将其定义为 y = ax+b。

       第二:因为也许会有不同的多个决策面,所以我们要决定出哪个决策面最好,根据决策面的条件,我们知道,支持向量到决策面的距离越宽越好。所以这个距离我们用点到直线的距离公式。
    d = ∣ A x + B y + b ∣ ⌋ A 2 + B 2 ‾ d=\dfrac {\left| Ax+By+b\right| }{\rfloor \overline {A^{2}+B^{2}}} d=⌋A2+B2​∣Ax+By+b∣​
       我们将公式向量化,A,B都是我们不知道的,x,y是样本点的坐标,是已知的,我们将已知的x,y和未知的A,B提出来,组成向量的形式,即 x i = [ x i , y i ] x_{i} =[ x_{i},y_{i}] xi​=[xi​,yi​] ,i为第几组样本,w = [ A i , B i ] [ A_{i},B_{i}] [Ai​,Bi​] ,所以Ax + By = W i T X i W^{T}_{i}X_{i} WiT​Xi​,大家很熟悉的向量形式吧, A 2 + B 2 {A^{2}+B^{2}} A2+B2即为||w||,这里||w|| = W T W W^{T}W WTW。
    所以距离公式为 d = ∣ w T x i + b ∣ ∥ w ∥ d = \dfrac {\left| w^{T}x_{i}+b\right| }{\left\| w\right\| } d=∥w∥∣∣​wTxi​+b∣∣​​
       第三:这里我们可以回想一下为什么距离公式的分子要加绝对值符号,因为会有正负(废话呀这是),但什么时候是正什么时候是负呢,当点在这条线下方的时候为负,在上面为正(不再解释),而我们SVM正号要对样本进行分类,我们可以把被决策面上方的一边的样本定义为+1,下面的定义为-1,我们可以定义一个标签向量y = {-1,1},我们便可以利用这个标签向量去掉绝对值符号。即
    d = ( w T x i + b ) ∗ y i ∥ w ∥ , y i = − 1 或 1 d = \dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\| } ,y_{i} = {-1或1} d=∥w∥(wTxi​+b)∗yi​​,yi​=−1或1
      第四:我们想要计算d的最小值,我们先对分子进行处理:
    我们知道d是样本距离决策面的距离,且有正负,若大于d,则样本在决策面上面,被分到的标签是y =1 ,反之一样。则:
    ( w T x i + b ) ∗ y i ∥ w ∥ > = d , y i = 1 \dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\| }>=d ,y_{i} =1 ∥w∥(wTxi​+b)∗yi​​>=d,yi​=1
    ( w T x i + b ) ∗ y i ∥ w ∥ &lt; = − d , y i = − 1 \dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\| }&lt;=-d ,y_{i} =-1 ∥w∥(wTxi​+b)∗yi​​<=−d,yi​=−1
    同时处以d,得:
    ( w T x i + b ) ∗ y i ∥ w ∥ d &gt; = 1 , y i = 1 \dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\|d }&gt;=1 ,y_{i} =1 ∥w∥d(wTxi​+b)∗yi​​>=1,yi​=1
    ( w T x i + b ) ∗ y i ∥ w ∥ d &lt; = − 1 , y i = − 1 \dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\|d }&lt;=-1 ,y_{i} =-1 ∥w∥d(wTxi​+b)∗yi​​<=−1,yi​=−1
    设 W d = w ∥ W ∥ d W_{d}=\dfrac {w}{\left\| W\right\| d} Wd​=∥W∥dw​, B d = b ∥ W ∥ d B_{d}=\dfrac {b}{\left\| W\right\| d} Bd​=∥W∥db​
    可得: W d T x i + B d &gt; = 1 , y = 1 W^{T}_{d}x_{i}+Bd&gt;= 1,y= 1 WdT​xi​+Bd>=1,y=1
    W d T x i + B d &lt; = − 1 , y = − 1 W^{T}_{d}x_{i}+Bd&lt;= -1,y= -1 WdT​xi​+Bd<=−1,y=−1
    将两式合并 ( W T x i + B d ) y i ≥ 1 \left( W^{T}x_{i}+Bd\right) y_{i}\geq 1 (WTxi​+Bd)yi​≥1
    即 m i n [ ( w T x i + B d ) y i ] min[\left( w^{T}x_{i}+Bd\right) y_{i}] min[(wTxi​+Bd)yi​]的最小值为1
    这样距离公式转化成了求 1 ∥ W ∥ \dfrac {1}{\left\| W\right\| } ∥W∥1​的最大值
    即 max (d) = max 1 ∥ W ∥ \dfrac {1}{\left\| W\right\| } ∥W∥1​
    即求 ∥ W ∥ \left\| W\right\| ∥W∥的最小值
    求这么一个函数的最小值不一定好求,我们等效成求 1 2 ∥ W ∥ 2 \dfrac {1}{2}\left\| W\right\| ^{2} 21​∥W∥2的最小值,转换成这样是易于求极小值
       第五:我们这时候暂时总结一下(下面还有),判断求决策面是否合适转换成了求距离是否大,然后由距离公式不断推出,我们现在要求这个结果: m i n 1 2 ∥ W ∥ 2 min\dfrac {1}{2}\left\| W\right\| ^{2} min21​∥W∥2
    但是,别忘了这个式子是不全面的,这个式子是在约束条件 y i ( w T x i + b ) ≥ 1 y_{i}\left( w^{T}x_{i}+b\right) \geq 1 yi​(wTxi​+b)≥1得到的,所以要加上这个约束条件
    m a x ( d ) = m i n 1 2 ∥ W ∥ 2 max(d)=min\dfrac {1}{2}\left\| W\right\| ^{2} max(d)=min21​∥W∥2
    s . t . y i ( w T x i + b ) ≥ 1 s.t. y_{i}\left( w^{T}x_{i}+b\right) \geq 1 s.t.yi​(wTxi​+b)≥1或者 s . t . y i ( w T x i + b ) − 1 ≥ 0 s.t. y_{i}\left( w^{T}x_{i}+b\right) -1\geq 0 s.t.yi​(wTxi​+b)−1≥0
       第六,看见这个式子,学过高数的朋友应该心里想到了怎么求,用拉格朗日函数求解,设: L ( w , b , a ) = 1 2 ∥ W ∥ 2 − ∑ i = 1 n a [ y i ( w T x i + b ) − 1 ] L\left( w,b,a\right) =\dfrac {1}{2}\left\| W\right\| ^{2}-\sum ^{n}_{i=1}a[y_{i}\left( w^{T}x_{i}+b\right) -1] L(w,b,a)=21​∥W∥2−i=1∑n​a[yi​(wTxi​+b)−1]
    分别求L对w,b的偏导,得: ∂ L ∂ w = w − ∑ i = 1 n a ⋅ y i x i \dfrac {\partial L}{\partial w}=w-\sum ^{n}_{i=1}a\cdot y_{i}x_{i} ∂w∂L​=w−i=1∑n​a⋅yi​xi​ ∂ L ∂ b = − ∑ i = 1 n a ⋅ y i \dfrac {\partial L}{\partial b}=-\sum ^{n}_{i=1}a\cdot y_{i} ∂b∂L​=−i=1∑n​a⋅yi​
      第七:令偏导等于0: w = ∑ i = 1 n a ⋅ y i x i w = \sum ^{n}_{i=1}a\cdot y_{i}x_{i} w=i=1∑n​a⋅yi​xi​ 0 = ∑ i = 1 n a ⋅ y i 0=\sum ^{n}_{i=1}a\cdot y_{i} 0=i=1∑n​a⋅yi​
    对原式L(w,b,a)进行代入化简运算:
    L ( w , b , a ) = ∑ i = 1 n a i − 1 2 ( ∑ i = 1 n a i x i y i ) T ∑ i = 1 n a i x i y i L\left( w,b,a\right) =\sum ^{n}_{i=1}a_{i}-\dfrac {1}{2}\left( \sum ^{n}_{i=1}a_{i}x_{i}y_{i}\right) ^{T}\sum ^{n}_{i=1}a_{i}x_{i}y_{i} L(w,b,a)=i=1∑n​ai​−21​(i=1∑n​ai​xi​yi​)Ti=1∑n​ai​xi​yi​ = ∑ i = 1 n a i − 1 2 ∑ i j = 1 n a i a j y i y j x i T x i =\sum ^{n}_{i=1}a_{i}-\dfrac {1}{2}\sum ^{n}_{ij=1}a_{i}a_{j}y_{i}y_{j}x_{i}^{T}x_{i} =i=1∑n​ai​−21​ij=1∑n​ai​aj​yi​yj​xiT​xi​
    别忘了约束条件 s . t . ∑ i = 1 n a i y i = 0 s.t.\sum ^{n}_{i=1}a_{i}y_{i}=0 s.t.i=1∑n​ai​yi​=0 a i &gt; 0 , i = 1 , 2 , . . n a_{i}&gt;0,i=1,2,..n ai​>0,i=1,2,..n
    基本上是完成了计算方式,下面还有优化
    (我不想写了腰好疼哇啊啊啊啊啊,剩下的明天写吧)

简单明了的阐述SVM支持向量机以及做法步骤相关推荐

  1. 【Python】如何简单获取糗事百科?【详细步骤】

    文章目录 本文目标 一.爬虫基本概念 二.Requests 库基本介绍 1.引入库 2.Beautiful Soup 库介绍 3.糗百爬虫代码 总结 本文目标 掌握爬虫的基本概念 Requests 及 ...

  2. 整理最近学习的算法:SVM支持向量机(简单)、kappa值、ROC曲线和AUC值

    整理最近学习的算法:kappa值.ROC曲线和AUC值.SVM支持向量机(简单) 1.分类精度的检验 (1)kappa系数检验一致性和分类效果 下面给出公式: 其中,p0是每一类正确分类的样本数量之和 ...

  3. SVM支持向量机通俗导论(理解SVM的三层境界)

    神文 转自july:http://blog.csdn.net/v_july_v/article/details/7624837 支持向量机通俗导论(理解SVM的三层境界) 作者:July .致谢:pl ...

  4. 惊呼——SVM支持向量机三重境界!

    转载自:原文 前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个 ...

  5. 网格向量必须包含特征点。_【专题研究】基于SVM支持向量机模型的选股策略

    研究过集成学习中的随机森林和XGBoost后,本文将介绍一种更传统的机器学习方法:SVM支持向量机.SVM由于其较高的准确度,并且能够解决非线性分类问题,曾一度成为非常流行的机器学习算法.本文分别介绍 ...

  6. 机器学习(18)-- SVM支持向量机(根据身高体重分类性别)

    目录 一.基础理论 二.身高体重预测性别 1.获取数据(男女生身高体重) 2.数据处理(合并数据) 3.设置标签 4.创建分类器(支持向量机) 4-1.创建svm分类器 4-2.设置分类器属性(线性核 ...

  7. SVM -支持向量机原理详解与实践之五

    SVM -支持向量机原理详解与实践之四 SVM原理分析 SMO算法分析 SMO即Sequential minmal optimization, 是最快的二次规划的优化算法,特使对线性SVM和稀疏数据性 ...

  8. SVM支持向量机个人总结及理解

    SVM支持向量机个人总结 最近在学习支持向量机的内容,总感觉对这块的东西比较模糊,为了加深自己的印象以及理解,写一篇note来帮助自己回忆(纯属个人理解,如有错误,烦请改正,谢谢各位!) 1.1简单介 ...

  9. 历经一个月,终于搞定了SVM(支持向量机)-附源代码解析

    历经一个月,终于搞定了SVM(支持向量机)-附源代码解析 前言 其实整体算下来,断断续续的也得有快两个月了(原谅博主比较笨).中间也有好几次放弃,不想写这篇总结了,但是之前立下的誓言,要将学习到的每一 ...

最新文章

  1. mysql在建站起什么作用_数据库操作对比:Sql Server与MYSQL相比有哪些建站优势?...
  2. 结对编程--------四则运算 实验总结2
  3. Workaround for 1701 Cannot truncate a table referenced in a foreign key constraint using doctrine:
  4. selenium 获取href find_element_by_xpath
  5. linux中ctime,mtime,atime的区别
  6. Linq 中 Any与All
  7. google earth pro 64位_七彩虹秀精准刀工!iGame RTX 3060 Ti Advanced OC评测:烤机3小时64度...
  8. TensorFlow在Anaconda环境下创建
  9. 零基础学python尹会生_编程零基础应当如何开始学习 Python?
  10. linux命令行删除N天前的数据的命令
  11. rocketmq源码调试
  12. RHEL6.5 部署DNS服务器
  13. python 中获取数据etree.HTML打印问题
  14. 自学c语言难,自学C语言/C++到底难在哪里?
  15. 计算机网络路由交换技术运用,计算机网络路由交换的技术应用与发展趋势研究...
  16. 飞秋与虚拟机的有关IP设置
  17. 杂篇:随笔编程杂谈录--《隆中对》
  18. php微信调用摄像头拍视频,公众号调用摄像头录制视频
  19. 【FPGA】SPI协议
  20. html导出pdf及word,保留完成样式以及格式调研

热门文章

  1. error LNK2019:和error LNK2001:
  2. 自从被国家认定为新时代的农民工过后,国家又不让我 996 了.
  3. CVer最想知道的,简单分析下《2020年度中国计算机视觉人才调研报告》
  4. Spark入门(五)——Spark Streaming
  5. Python下openCV打开图片的几种方式/适应窗口大小
  6. TCP/IP协议,卷一第42页错误
  7. HDU-2094-产生冠军
  8. 第一遍Java学习笔记
  9. 视频教程免费分享:嵌入式stm32项目开发之心率检测仪的设计与实现
  10. 计算字符串的相似度/华为机试(C/C++)