2013-07-08 13 views
7

Sto tentando di applicare la selezione della funzione (ad esempio la selezione della funzione ricorsiva) in SVM, utilizzando il pacchetto R. Ho installato Weka che supporta la selezione delle funzionalità in LibSVM ma non ho trovato alcun esempio per la sintassi di SVM o qualcosa di simile. Un breve esempio potrebbe essere di grande aiuto.Esempio per la selezione della funzione svm in R

risposta

14

La funzione rfe nel pacchetto caret esegue la selezione della funzione ricorsiva per vari algoritmi. Ecco un esempio dalla caretdocumentation:

library(caret) 
data(BloodBrain, package="caret") 
x <- scale(bbbDescr[,-nearZeroVar(bbbDescr)]) 
x <- x[, -findCorrelation(cor(x), .8)] 
x <- as.data.frame(x) 
svmProfile <- rfe(x, logBBB, 
        sizes = c(2, 5, 10, 20), 
        rfeControl = rfeControl(functions = caretFuncs, 
              number = 200), 
        ## pass options to train() 
        method = "svmRadial") 

# Here's what your results look like (this can take some time) 
> svmProfile 

Recursive feature selection 

Outer resampling method: Bootstrap (200 reps) 

Resampling performance over subset size: 

    Variables RMSE Rsquared RMSESD RsquaredSD Selected 
2 0.6106 0.4013 0.05581 0.08162   
5 0.5689 0.4777 0.05305 0.07665   
10 0.5510 0.5086 0.05253 0.07222   
20 0.5203 0.5628 0.04892 0.06721   
71 0.5202 0.5630 0.04911 0.06703  * 

    The top 5 variables (out of 71): 
    fpsa3, tcsa, prx, tcpa, most_positive_charge 
+0

Ciò che è 'dimensioni = c (2, 5, 10, 20)' qui dentro? Significa le caratteristiche 2, 10 e 20? – Mahsolid

+0

@Mahsolid No, è il numero di funzioni che verranno utilizzate. rfe cercherà di trovare il miglior modello di ogni dimensione data in quel vettore. Controlla i documenti rfe per maggiori dettagli. –