2015-07-01 8 views
6

Sono nuovo agli SVM in Matlab e ho bisogno di un po 'di aiuto.SVM in Matlab: Significato del parametro 'box constraint' nella funzione fitcsvm

Voglio addestrare una macchina di supporto vettoriale utilizzando la funzione di compilazione fitcsvm di Statistics Toolbox. Ovviamente ci sono molte scelte di parametri che controllano come verrà addestrato SVM.

L'aiuto di Matlab è una piccola somma su come i parametri archiviano un risultato di allenamento migliore. Soprattutto il parametro 'Box Contraint' sembra avere un'influenza importante sul numero di vettori di supporto scelti e sulla qualità di generalizzazione.

The Help (http://de.mathworks.com/help/stats/fitcsvm.html#bt8v_z4-1) dice

un parametro che controlla la pena massima imposto osservazioni margin-violazione, e aiuta a prevenire overfitting (regolarizzazione).

Se si aumenta il vincolo di casella, il classificatore SVM assegna meno vettori di supporto. Tuttavia, l'aumento del vincolo di casella può portare a tempi di formazione più lunghi.

Come viene utilizzato esattamente questo parametro? È uguale o simile al fattore di margine morbido C nel riferimento the Wikipedia? O qualcosa di completamente diverso?

Grazie per il vostro aiuto.

risposta

11

Eri decisamente sulla strada giusta. Mentre la descrizione nella documentazione di fitcsvm (come hai postato nella domanda) è molto breve, dovresti dare un'occhiata al sito Understanding Support Vector Machines nella documentazione di MATLAB.

Nel caso non separabile (spesso denominato SVM a margine ridotto), uno consente l'errata classificazione, al costo di un fattore di penalità C. La formulazione matematica del SVM diventa quindi:

SVM Minimization Problem

con le variabili slack s_i che causano un termine di penalità che viene ponderato per C. Fare il C aumenta il peso delle classificazioni errate, che porta ad una separazione più severa. Questo fattore C è chiamato vincolo di casella. Il motivo di questo nome è che, nella formulazione del problema dell'ottimizzazione doppia, i moltiplicatori di Langrange devono essere compresi nell'intervallo [0,C]. C pone quindi un vincolo di casella sui moltiplicatori di Lagrange.

tl; dr la tua ipotesi era giusta, è il C nel margine morbido SVM.

+0

grazie mille! – cahilx

+0

Grazie ... qualche suggerimento sul miglior valore per il vincolo della scatola? – user836026

+0

@ user836026 Non è possibile avere 1 miglior valore per questo. Spesso finirai per mettere a punto il vincolo di casella per ottimizzare le prestazioni del tuo SVM. Alcuni buoni dettagli sono forniti nell'articolo MATLAB [Understanding SVMs] (http://mathworks.com/help/stats/support-vector-machines-svm.html). – hbaderts

Problemi correlati