Предположим, нам дан обучающий набор данных {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
Ее часто называют моделью жесткая маржа SVM, что, таким образом, представляет собой задачу ограниченной минимизации, где неизвестными являются w
и b
. Мы также можем опустить 1/2
в минимизируемой функции, учитывая, что это просто константа.
Теперь документация о quadprog
состояниях Matlab.
x = quadprog(H, f, A, b)
минимизирует1/2*x'*H*x + f'*x
с учетом ограниченийA*x ≤ b
.A
— матрица двойников, аb
— вектор двойников.
Мы можем реализовать модель SVM с жесткими границами, используя функцию quadprog
, чтобы получить вектор весов w
следующим образом.
H
становится единичной матрицей.f'
становится матрицей нулей.A
— левая часть ограниченийb
равно-1
, потому что исходное ограничение имело>= 1
, оно становится<= -1
, когда мы умножаем на-1
с обеих сторон.
Теперь я пытаюсь реализовать модель SVM soft-margin. а>. Уравнение минимизации здесь
min (1/2)*||w||² + C*(∑ ζᵢ)
w,b
с учетом ограничений (для i = 1, ..., n
)
yᵢ*(w*xᵢ - b) >= 1 - ζᵢ
так что ζᵢ >= 0
, где ∑
— символ суммирования, ζᵢ = max(0, 1 - yᵢ*(w*xᵢ - b))
и C
— это гиперпараметр а>.
Как можно решить эту проблему оптимизации с помощью функции quadprog
Matlab? Мне непонятно, как уравнение должно быть сопоставлено с параметрами функции quadprog
.
«primal» форма модели SVM с мягкой маржой (т. е. определение выше) может быть преобразована в «двойная. Я сделал это, и я могу получить значения переменных Лагранжа (в двойственной форме). Однако я хотел бы знать, могу ли я использовать quadprog
для непосредственного решения первичной формы без необходимости преобразования ее в двойную форму.