2012-03-18 13 views
9

Ciao sto eseguendo classificazione SVM utilizzando SMO, in cui la mia kernel è RBF, ora voglio selezionare c e sigma valori, utilizzando la ricerca della rete e la convalida incrociata, Sono nuovo kernel funzioni, per favore aiutatemi, nel processo passo-passoselezione c e valore gamma

risposta

16
  1. Scegli alcuni valori per C e sigma che ritieni siano interessanti. Ad es., C = {1, 10, 100, 1000} e sigma = {.01, .1, 1} (Sto solo inventandolo).
  2. Dividere il set di allenamento in k (ad esempio 10) parti, preferibilmente in modo stratified.
  3. Loop su tutte le coppie di valori C e sigma.
    1. Loop su tutto k parti del set di allenamento. Tieni premuto il k. Allestire un classificatore su tutte le altre parti combinate, quindi testare la parte trattenuta.
    2. Tieni traccia di alcuni punteggi (precisione, F1 o qualsiasi altra cosa desideri ottimizzare).
  4. Restituisce la coppia di valori migliori per C, sigma per i punteggi appena calcolati.
+0

Per chiarire: "Formare un classificatore su ciascuna delle altre parti" in generale significa addestrarlo sulle altre parti combinate, non ognuna individualmente. – Dougal

+0

@Dougal: sì, questo è quello che intendevo. Grazie. –

+0

Penso che valga la pena notare che ciò a cui ci si riferisce (dividendo in k parti, ecc.) È chiamato Cross-Validation, in particolare una convalida incrociata di 10 volte. L'OP potrebbe non saperlo, a volte la parte più difficile nel cercare di trovare più informazioni è sapere quali parole chiave cercare. – karenu

4

Leggere una guida pratica per supportare la classica classificazione vettoriale di Chih-Wei Hsu, Chih-Chung Chang e Chih-Jen. Affrontano questo problema esatto e spiegano i metodi per eseguire una ricerca della griglia per la selezione dei parametri. http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

1

Aggiungo solo un po 'di spiegazione a larsmans' answer.

Il parametro C è un parametro di regolarizzazione/allentamento. I suoi valori più piccoli costringono i pesi ad essere piccoli. Più grande diventa, la gamma di pesi consentita diventa più ampia. Ne consegue che i valori più grandi di C aumentano la penalità per l'errata classificazione e quindi riducono il tasso di errore di classificazione sui dati di addestramento (che può portare a un eccessivo adattamento). Il tempo di allenamento e il numero di vettori di supporto aumenteranno all'aumentare del valore di C.

Potrebbe inoltre risultare utile leggere Extending SVM to a Soft Margin Classifier di K.K. Mento.

0

È inoltre possibile utilizzare la selezione del modello Uniform Design che riduce il numero di tuple da controllare. Il documento che spiega che è "Scelta del modello per il support vector machines via uniforme di progettazione" di Chien-Ming Huang Alcuni implementazione in Python sono esistono in ssvm 0.2