我试图用Python 编写完整的SVM实现,但是在计算Lagrange系数时遇到一些问题。
首先让我重新叙述一下我从算法中了解的内容,以确保我走在正确的道路上。
如果是一个数据集和ÿ 我 ∈ { - 1 ,1 }是的类别标签X 我,然后∀ 我,ÿ 我(瓦特Ť X 我 + b )≥ 1x1,x2,...,xnyi∈{−1,1}xi
∀i,yi(wTxi+b)≥1
因此,我们只需要解决一个优化问题即可
∥w∥2
服从yi(wTxi+b)≥1
就拉格朗日系数而言,这转化为找到,和和最小化:wbα=(α1,α2,...αn)≠0≥0
L(α,w,b)=12∥w∥2−∑αi(yi(wTx+b)−1)
现在,由于和我们可以将其重写为有约束
∂L∂w=0⟹w=∑αiyixi
∂L∂b=0⟹∑yiαi=0
L(α,w,b)=Q(α)=∑αi−12∑∑αiαjyiyjxTixj
αi≥0 and ∑αiyi=0
因此,我正在尝试使用Python解决优化问题,而我能找到的唯一免费软件包称为cvxopt。
我需要一些帮助来解决这个问题,但我找不到很好的例子,虽然我了解理论,但很难将其翻译成代码(我本来希望相反更多来自编程背景)。
请注意,在某些时候,我想使用内核但我不确定在代码中解决此问题的含义。
L(α,w,b)=Q(α)=∑αi−12∑∑αiαjyiyjK(xi,xj)
任何帮助将不胜感激,我真的不知道如何在Python中实现此功能。如果您有更好的模块来解决优化问题,我也想阅读一下。