Saya mencoba memahami proses pelatihan mesin vektor dukungan linear . Saya menyadari bahwa properti SMV memungkinkan mereka dioptimalkan lebih cepat daripada dengan menggunakan pemecah pemrograman kuadratik, tetapi untuk tujuan pembelajaran saya ingin melihat bagaimana ini bekerja.
Data pelatihan
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()
Menemukan Hyperplane Margin Maksimum
Menurut artikel Wikipedia ini tentang SVM , untuk menemukan hyperplane margin maksimum yang perlu saya pecahkan
tunduk pada (untuk i = 1, ..., n)
Bagaimana cara saya 'menyambungkan' data sampel saya ke pemecah QP di R (misalnya quadprog ) untuk menentukan ?
r
svm
optimization
Ben
sumber
sumber
R
? dllJawaban:
PETUNJUK :
Quadprog memecahkan yang berikut:
Pertimbangkan
di mana adalah matriks identitas.saya
Jika adalah dan adalah :p × 1 y n × 1w p × 1 y n × 1
Pada baris yang sama:
Formulasikan menggunakan petunjuk di atas untuk mewakili kendala ketimpangan Anda.SEBUAH
sumber
quadprog
mengembalikan kesalahan "matriks D dalam fungsi kuadratik tidak pasti positif!"Mengikuti petunjuk-petunjuk rightskewed ...
sumber