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
- 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).
- Dividere il set di allenamento in k (ad esempio 10) parti, preferibilmente in modo stratified.
- Loop su tutte le coppie di valori C e sigma.
- 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.
- Tieni traccia di alcuni punteggi (precisione, F1 o qualsiasi altra cosa desideri ottimizzare).
- Restituisce la coppia di valori migliori per C, sigma per i punteggi appena calcolati.
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
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.
È 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
Per chiarire: "Formare un classificatore su ciascuna delle altre parti" in generale significa addestrarlo sulle altre parti combinate, non ognuna individualmente. – Dougal
@Dougal: sì, questo è quello che intendevo. Grazie. –
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