Я пытаюсь понять процесс обучения линейной поддержки векторной машины . Я понимаю, что свойства SMV позволяют оптимизировать их гораздо быстрее, чем с помощью решателя квадратичного программирования, но в целях обучения я хотел бы посмотреть, как это работает.
Учебные данные
set.seed(2015)
df <- data.frame(X1=c(rnorm(5), rnorm(5)+5), X2=c(rnorm(5), rnorm(5)+3), Y=c(rep(1,5), rep(-1, 5)))
df
X1 X2 Y
1 -1.5454484 0.50127 1
2 -0.5283932 -0.80316 1
3 -1.0867588 0.63644 1
4 -0.0001115 1.14290 1
5 0.3889538 0.06119 1
6 5.5326313 3.68034 -1
7 3.1624283 2.71982 -1
8 5.6505985 3.18633 -1
9 4.3757546 1.78240 -1
10 5.8915550 1.66511 -1
library(ggplot2)
ggplot(df, aes(x=X1, y=X2, color=as.factor(Y)))+geom_point()
Нахождение максимальной маржи гиперплоскости
Согласно этой статье в Википедии о SVM , чтобы найти максимальный запас гиперплоскости мне нужно решить
условии (для любого i = 1, ..., n)
Как «подключить» мои образцы данных к решателю QP в R (например, quadprog ), чтобы определить ?
r
svm
optimization
Бен
источник
источник
R
? и т. д.Ответы:
Подсказка :
Quadprog решает следующие задачи:
Рассмотрим
где - единичная матрица.I
Если равно а равно :w p×1 y n×1
На аналогичных строках:
Сформулируйте используя приведенные выше подсказки, чтобы представить ограничение неравенства.A
источник
quadprog
возвращает ошибку "матрица D в квадратичной функции не является положительно определенной!"Следующие подсказки
источник