Come ottenere i confini delle decisioni da SVM lineare in R?


9

Ho bisogno di un pacchetto che possa darmi l'equazione per un modello SVM lineare. Attualmente sto usando e1071 in questo modo:

library(e1071)
m = svm(data, labels, type='C', kernel='linear', cost=cost, probability=FALSE, scale=scale)
w = t(m$coefs) %*% data[m$index,]  #Weight vector
b = -model$rho #Offset

Tuttavia, non sono sicuro di come e1071::svm()selezioni le classi positive e negative, quindi penso che questo potrebbe rovinare con diversi set di dati. Qualcuno può confermare come questa funzione decide quale classe è positiva e quale è negativa?

Inoltre, esiste un pacchetto migliore per questo?


1
Ho fornito alcune informazioni al riguardo su un thread correlato: Calcolo del limite decisionale di un modello SVM lineare .
chl

Risposte:


1

Xd

d <- sum(w * x) + b

d>0X+1-1newdata

predict(m, newdata)

o

predict(m, newdata, decision.values = TRUE)

Fai attenzione quando usi SVM dal pacchetto e1071, vedi Problemi con e1071 libsvm? domanda. Diversi altri pacchetti SVM per R sono kernlab, klaR e svmpath, vedi questa panoramica: Support Vector Machines in R di A. Karatzoglou e D. Meyer.


2
Grazie, ma la mia domanda è su come ottengo i valori di eb. Inoltre, per quanto riguarda il valore della decisione, chiedo come e1071 decida quale etichetta assegnata sia positiva e negativa per i dati di allenamento quando si superano i fattori.
reisner

1
Non ho familiarità con e1071, ma conosco SVM. Se una classe è considerata positiva o negativa non influirà sul risultato. Puoi prendere qualsiasi set di dati e scambiare le etichette di classe e dovresti comunque ottenere lo stesso risultato in termini di classificazione dei punti di prova (per gli stessi parametri). Il positivo e il negativo vengono utilizzati per determinare se l'istanza ricade sul lato destro del limite di decisione.
Karenu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.