2016-06-14 98 views
6

Sono interessato a conoscere le reti neurali e, ad esempio, ho provato con il seguente set di dati che è stato derivato sperimentalmente.Come convalidare l'output fornito dalla rete neurale probabilistica in MATLAB?

Sto utilizzando il seguente vettore di input per la mia rete neurale;

X = [1 1; 1 2; 1 3; 1 4; 4 1; 4 2; 4 3; 4 4; 7 1;7 2; 7 3; 7 4]'; 
Tc = [1 1 2 3 1 1 2 2 1 1 2 2]; 

Voglio dividere i dati di input in tre classi, descritte dal vettore di input Tc. Quindi sto convertendo gli indici di classe target Tc in vettori T e il valore di spread che sto usando è 1.

Usando la funzione newpnn in MATLAB, sto ottenendo i limiti decisionali per le tre classi.

Ho un dubbio sulla convalida se il limite di decisione è appropriato. Sto convalidando l'output con un singolo dato X =[2;3.55] appartiene alla classe 2. È rappresentato dal punto nero nel grafico di output. Il blu è classe 1. Il giallo è la regione appartenente alla classe 2. Il rosso è classe 3.

Come mostrato nella trama, la previsione della rete neurale è risultata essere di classe 2, che coincide con la classe reale di il set.

Quindi, significa che la mia rete neurale è corretta e convalidata?

P.S. Ho una conoscenza di base delle reti neurali. Inoltre, capisco il concetto di avere più esempi di formazione e set di validazione. Mi aspetto una risposta che soddisfi i dettagli disponibili, dal momento che non posso ottenere più dati sperimentalmente.

enter image description here

+1

Bene, con le informazioni che hai dato, il la risposta sembra essere "Sì, il tuo NN è convalidato, hai fatto un buon lavoro". Tuttavia, tieni presente che l'allenamento e i test sembrano essere esattamente gli stessi (vedendo i primi 2 grafici), quindi ovviamente avrai una risposta corretta. Prova a convalidare il tuo NN con valori che non sono stati utilizzati nella formazione. –

+0

@AnderBiguri grazie per la tua risposta. Sebbene, subito dopo aver postato questa domanda, mi sono sentito piuttosto stupido a chiedermelo. So che i dati di allenamento sono molto meno per qualsiasi tipo di allenamento conclusivo.Ho usato l'interpolazione cubica per ottenere più punti dati (120). Ho tenuto 100 per addestrare la rete e 20 per il test. Ora la previsione si è rivelata piuttosto grande. La percentuale di accuratezza è di circa il 98%. Immagino che questa domanda sia ora risolta, ma dal momento che avevo dichiarato la taglia per questa domanda, non posso cancellare questa domanda. Grazie ancora per la tua risposta. – rcty

risposta

1

Hmm, penso che non capisce bene era di convalida è in termini di reti neurali. È possibile che non controlli la rete solo con un campione. Quindi, proverò a insegnarti ciò che so sulla convalida delle reti neurali. È un lungo processo statistico che implica una certa riflessione sui "dati del mondo reale", sul "comportamento atteso", ... Non è possibile convalidare qualcosa con dati come 10-20 e un punto di convalida.

In genere, quando si insegna una rete neurale si dovrebbe avere 3 set:

  • il primo, la formazione impostare è l'ingresso dell'algoritmo che viene utilizzato per impostare i pesi delle diverse reti. È solo una sorta di dati obbligatori utilizzati per eseguire l'algoritmo.
  • La seconda serie, la convalida set consente di scegliere il giusto algoritmo per il vostro problema e per ridurre sovradattamento. Confronta le prestazioni di quelle diverse e scegliere il migliore (quello sovralimentato non avrà una buona prestazione).
  • Il set di prova : è l'ultima fase. Dopo aver scelto l'algoritmo e il suo parametro, usi una serie di nuovi dati (presi dal mondo reale) e controlli se esegue ciò che è supposto fare (è come un test di coerenza).

(fonte: https://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-set)

Per esempio, stiamo costruendo un algoritmo utilizzato per controllare se una persona "ha qualche possibilità di diventare ricchi". Ecco come si costruisce e si valida la rete neurale.

  1. In primo luogo, chiediamo a 10.000 persone se sono ricchi o meno e controlliamo alcuni parametri (età, posizione, ...). Rende il "set di dati originale".
  2. Abbiamo diviso l'elenco di 10.000 persone in 3 set (6000 2000 e 2000): il set di allenamento, il set di convalida e il set di test (nota: la proporzione può variare in base alla procedura di convalida).
  3. Applichiamo il set di apprendimento (6000 primi dati) e lo applichiamo alle nostre diverse reti neurali per insegnarli (chiamiamoli A, B, C e D)
  4. Prendiamo il set di convalida (2000 dati successivi) per verificare le prestazioni delle quattro reti. Ecco come si evita il sovradattamento. Supponiamo che la rete A non sia affatto una rete, è solo un registratore. Registra i diversi dati e le loro classi ma non è in grado di prevedere nulla. Quel "algoritmo fittizio" avrebbe dato un risultato del 100% se avessimo fatto il test di validazione con la prima persona 6000, ma falliremo completamente in quel test. Quindi, dopo quel test, puoi scegliere il "miglior algoritmo". Scegliamo C.
  5. Ora eseguiamo C con il resto dei dati (set di test o nuovi dati se possibile, è sempre meglio). Se vediamo che C ha un comportamento molto strano e imprevedibile (può essere causato da qualche errore umano come la realizzazione di insiemi che non sono realmente indipendenti o comunque corretti, ad esempio se i dati risalivano al 1996), scegliamo un altro algoritmo o proviamo a verificare qual è il problema con i dati o l'algoritmo.

È come creare una rete neurale affidabile (non dimenticare, i due problemi principali non sono controllare il risultato finale e il sovradattamento).

Poiché il sovradattamento è un concetto chiave. Proverò a definirlo un po 'e dare un esempio. L'overfitting sta facendo un algoritmo in grado di costruire approssimazioni molto ravvicinate ma che non sono in grado di prevedere nulla (quello che ho chiamato "algoritmo fittizio").

Confrontiamo ad esempio un interpolatore lineare e uno polinomiale (1000000 ° grado, altissimo grado). Il nostro algoritmo polinomiale probabilmente si adatta molto bene ai dati (il sovradimensionamento estremo corrisponde esattamente a tutti i nostri dati). Ma non sarà in grado di prevedere nulla.

Per l'esempio seguente, se nel nostro set di convalida (estratto da dati del mondo reale) un punto in (2, -2) e (-1,2), si può supporre che la nostra interpolazione polinomiale sia stata chiaramente sovralimentata perché suggerisce valori come (-1,10) e (2,20). Quello lineare dovrebbe essere più vicino.

enter image description here

spero che sarà di aiuto. (nota che non sono un esperto in quel dominio ma ho provato a fare una risposta molto leggibile e semplice, quindi se qualcosa è falso, sentiti libero di commentare :))