如何实现一个SVM?思绪清楚便能学会

>2019-08-10 17:41:38 来源: AI科技评论
标签:

 

本文为韦易笑在知乎成就如何学习SVM(支撑向量机)和改良实现SVM算法程序下面的回复。


韦易笑知乎网址:

https://www.zhihu.com/people/skywind3000/activities

 

知乎成就:

https://www.zhihu.com/question/31211585/answer/640501555

 

如下为正文:

学习 SVM 的最佳办法是实现一个 SVM,可讲实践的很多,讲实现的太少了。

 

假设你已经读懂了 SVM 的原理,并了解公式怎么推导进去的,比如到这里:

 

 

SVM 的成就就变成:求解一系列称心束缚的 alpha 值,使得上面那个函数可以或许或许取到最小值。然后记载下这些非零的 alpha 值和对应样本中的 x 值和 y 值,就实现学习了,然后预测的时候用:

 

 

上面的公式计算出 f(x) ,如果返回值 > 0 那么是 +1 类别,否则是 -1 类别,先把这一步怎么来的,为什么这么来找篇文章读懂,不然你会做的一头雾水。

 

那么剩下的 SVM 实现成就便是如何求解这个函数的极值。办法有很多,咱咱咱们先找个动身点,比如 Platt 的SMO 算法(https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-98-14.pdf),它后面有伪代码描述怎么疾速求解 SVM 的各个系数。

 

第一步:实现传统的 SMO 算法

如今大部分的 SVM 开源实现,泉源都是 platt 的 smo 算法,读完他的文章和推导,然后照着伪代码写就行了,中央代码没几行:

target = desired output vector

point = training point matrix

 

procedure takeStep(i1,i2)

  if (i1 == i2) return 0

  alph1 = Lagrange multiplier for i1
  y1 = target[i1]
  E1 = SVM output on point[i1] – y1 (check in error cache)
  s = y1*y2
  Compute L, H via equations (13) and (14)
  if (L == H)
    return 0
  k11 = kernel(point[i1],point[i1])
  k12 = kernel(point[i1],point[i2])
  k22 = kernel(point[i2],point[i2])
  eta = k11+k22-2*k12
  if (eta > 0)
  {
    a2 = alph2 + y2*(E1-E2)/eta
    if (a2 < L) a2 = L
    else if (a2 > H) a2 = H
  }
  else
  {
    Lobj = objective function at a2=L
    Hobj = objective function at a2=H
    if (Lobj < Hobj-eps)
      a2 = L
    else if (Lobj > Hobj+eps)
      a2 = H
    else
      a2 = alph2
  }
  if (|a2-alph2| < eps*(a2+alph2+eps))
    return 0
  a1 = alph1+s*(alph2-a2)
  Update threshold to reflect change in Lagrange multipliers
  Update weight vector to reflect change in a1 & a2, if SVM is linear
  Update error cache using new Lagrange multipliers
  Store a1 in the alpha array
  Store a2 in the alpha array
  return 1

endprocedure

 

中央代码很紧凑,便是给定两个 ai, aj,然后迭代出新的 ai, aj 进去,另有一层轮回会不停的抉择最必要被优化的系数 ai, aj,然后调用这个函数。如何更新权重和 b 变量(threshold)文章里面都有说,再多调试一下,可以或许或许用 python 先调试,再换成 C/C++,包管获得一个正确可用的 SVM 程序,这是后面的基础。

 
存眷南京电子资讯网微信 ( ee-focus )
限量版产业观察、行业静态、技术大餐每日推荐
享用快时代的佳构慢阅读
 

 

持续阅读
应届毕业生年薪 200W,在 IC 界意味着什么?

最近对付华为的新闻已经使人麻木,不是解禁和禁供,便是在解禁和禁供的路上。大洋彼岸的某人似乎很担心自己过气,必要时不时在推特或许头条露面。

算法实现没思绪?一文进阶Python算法新技能

数据布局与算法是统统人都要学习的基础课程,自己写算法的过程可以或许或许帮助咱咱咱们更好地懂得算法思绪,不要轻视每个算法,一些虽然看似容易,但可能有很多坑。但是坑还要自己一个一个踩过来的,而且也只要自己踩过坑,能力让自己从实践到技能都获得晋升。

AI掌管人亮相央视,传统掌管人将被取代?

为纪念五四运动100周年,昨晚,以“咱咱咱们都是追梦人”为主题的2019年五四晚会《五月的鲜花》在中央广播电视总台播出!

哈佛学院设计出预测结核病耐药性算法,对医疗界有多大影响?

根据美国疾病节制和预防中央给出的数据显示,结核病是世界上最致命的疾病之一。2017年,近1000万人感染了结核病,此中130万人死于结核病。更糟的是,因为结核分枝杆菌具有对某些药物发生耐药性的能力,导致结核分枝杆菌很难针对。

运算环境变动越来越快,通用架构是否还能跟上?

据科技新报报导,通用型运算架构已经不再能称心以后的市场需要,针对相干应用场景需要的 FPGA 市场的赓续逐渐扩大,国际 IC 设计大厂赛灵思 ( Xilinx ) 于 2018 年就推出了以 FPGA 为基础的全球首款自行调适运算平台 ACAP 。目前采纳了 7 奈米制程的 ACAP 平台首款产品 Versal,以应对变更疾速的运算环境需

更多资讯
FPGA小技能:面积换速率的实例讲解
FPGA小技能:面积换速率的实例讲解

在FPGA中,如果要将一个采样率为480MHz,中频频率为302.5MHz的信号变频到零中频的基带信号,要怎么做呢?

践行“数据中央优先”计谋,赛灵思再发U50完善Alveo平台

IDC预测,到2025年,全球将有416亿台物联网设备,并将发生79.4 zettabytes(zb)的数据。虽然数据被看作未来的煤油,但是同样也必要壮大的算力将无序的数据加以提取,构成有用信息,能力给用户带来价值。因为数据在源源赓续发生,只凭仗CPU停止计算已经远远无法满意需要,于是设计职员开端采纳异构架构为数据中央加快,FPGA发挥越

剑指 CPU 和 GPU,FPGA 开拓新战场

在网络、计算和存储领域,越来越多的应用必要公用的架构,以使硬件可以或许或许和算法停止匹配,从而到达最佳运行效果,或许是提高它的运行速率。如今,网络上有很多分歧的数据,这些数据在运行过程傍边,它的请求是不一样的。

谷歌用了数千块TPU重建出了果蝇大脑神经图,能用来做什么?

研究大脑神经网络,又有新进展。

Xilinx扩大 Alveo 系列产品,推出面向任意效劳器和各种云的业界首款自顺应计算、网络和存储加快器卡

自顺应和智能计算的全球抢先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX))本日宣布推出 Alveo? U50,进一步扩大其Alveo 数据中央加快器卡产品组合。

友情链接:电动汽车技术网  宏发学校教育网  中国汽车租赁网  九尾餐饮管理网  缪斯文胸网  梅花表维修网  大学生校园网  启迪教育咨询网  九哲手绘网  大河报旅游网