【发布时间】:2013-03-09 18:54:40
【问题描述】:
假设我们有一个训练数据集{yᵢ, xᵢ},对于i = 1, ..., n,其中yᵢ 可以是-1 或1,xᵢ 可以是例如2D 或 3D 点。
一般来说,当输入点线性可分时,SVM模型可以定义如下
min 1/2*||w||²
w,b
受约束(对于i = 1, ..., n)
yᵢ*(w*xᵢ - b) >= 1
这通常称为hard-margin SVM model,因此是constrained minimization problem,其中未知数是w 和b。我们也可以在要最小化的函数中省略1/2,因为它只是一个常数。
现在,documentation 关于 Matlab 的 quadprog 状态
x = quadprog(H, f, A, b)最小化1/2*x'*H*x + f'*x受限于A*x ≤ b。A是双精度矩阵,b是双精度向量。
我们可以使用quadprog函数实现hard-margin SVM模型,得到权向量w,如下
-
H成为单位矩阵。 -
f'变为零矩阵。 -
A是约束的左侧 -
b等于-1,因为原来的约束有>= 1,当我们在两边乘以-1时,它变成了<= -1。
现在,我正在尝试实现soft-margin SVM model。这里的最小化方程是
min (1/2)*||w||² + C*(∑ ζᵢ)
w,b
受约束(对于i = 1, ..., n)
yᵢ*(w*xᵢ - b) >= 1 - ζᵢ
这样ζᵢ >= 0,其中∑ 是求和符号,ζᵢ = max(0, 1 - yᵢ*(w*xᵢ - b)) 和C 是hyper-parameter。
如何使用 Matlab 的 quadprog 函数解决这个优化问题?我不清楚方程应该如何映射到quadprog 函数的参数。
soft-margin SVM 模型的“primal”形式(即上面的定义)可以转换为“dual”形式。我这样做了,我能够得到拉格朗日变量值(以对偶形式)。但是,我想知道我是否可以使用quadprog 直接解决原始形式而无需将其转换为对偶形式。
【问题讨论】:
标签: matlab machine-learning svm quadprog