{yᵢ, xᵢ}
,其中 i = 1, ..., n
,yᵢ
可以是 -1
或 1
,而 xᵢ
可以是二维或三维点等。
一般情况下,当输入点是线性可分的时,SVM 模型可以定义如下:
min 1/2*||w||²
w,b
受限于约束条件(对于 i = 1, ..., n
)
yᵢ*(w*xᵢ - b) >= 1
这通常被称为硬间隔SVM模型,因此是一个约束最小化问题,其中未知数是
w
和b
。我们也可以在要最小化的函数中省略1/2
,因为它只是一个常数。现在,关于Matlab的
quadprog
的文档说明如下:
我们可以使用
x = quadprog(H, f, A, b)
最小化1/2*x'*H*x + f'*x
,同时满足限制条件A*x ≤ b
。其中A
是一个双精度矩阵,b
是一个双精度向量。
quadprog
函数来实现硬间隔SVM模型,以获得权重向量w
,如下所示:
H
变成了一个单位矩阵。f'
变成了一个零矩阵。A
是约束条件的左侧。b
等于-1
,因为原始约束条件为>= 1
,当我们在两侧乘以-1
时,它变成了<= -1
。
现在,我正在尝试实现一个软间隔支持向量机模型。这里的最小化方程式是:
min (1/2)*||w||² + C*(∑ ζᵢ)
w,b
受限于约束条件(对于 i = 1, ..., n
)
yᵢ*(w*xᵢ - b) >= 1 - ζᵢ
这个优化问题需要满足ζᵢ >= 0
,其中∑
是求和符号,ζᵢ = max(0, 1 - yᵢ*(w*xᵢ - b))
,C
是一个超参数。
如何使用Matlab的quadprog
函数解决这个优化问题?我不清楚该方程应如何映射到quadprog
函数的参数。
软间隔支持向量机模型的"原始形式"(即上述定义)可以转换为"对偶形式"。我已经完成了转换,并能够获取拉格朗日变量值(在对偶形式中)。但是,我想知道是否可以直接使用quadprog
来解决原始形式,而无需转换为对偶形式。