Perché la mia precisione della rete neurale è al 100%?

6

Voglio chiedere su Neural Network.

Ho una ricerca e programmazione sulla rete neurale usando l'algoritmo di Backpropagation per la predizione. I miei dati di input utilizzando il modulo binario. Ma, sono ancora confuso, perché ottengo alcuni dati di input da esperti. Ho separato alcuni dati per la formazione e i dati rimanenti che ho usato per testare. Ricevo l'accuratezza al 100% per l'allenamento e il test. Penso che il 100% per l'allenamento sia possibile, ma il 100% per testarlo è qualcosa di strano.

È possibile che i dati ottenuti dagli esperti includano la separabilità lineare?

Se i dati sono separabili linearmente, la mia rete neurale non funziona o la mia rete neurale funziona perché il pattern è troppo semplice?

Grazie ..

    
posta Mario 18.06.2016 - 14:44
fonte

2 risposte

8

Se i dati sono linearmente separabili allora sì, è possibile. Prendi uno di questi grafici a dispersione che mostrano i punti blu e i punti rossi e la linea che li separa.

(immaginerubatada qui )

Se la tua rete neurale ha la linea giusta, è possibile che possa avere una precisione del 100%. Ricorda che l'uscita di un neurone (prima che passa attraverso una funzione di attivazione) è una combinazione lineare dei suoi input, quindi questo è un modello che una rete composta da un singolo neurone può apprendere. Ma i dati che stai utilizzando sono chiaramente sintetici, è piuttosto improbabile che i dati della vita reale siano perfettamente separabili linearmente.

    
risposta data 18.06.2016 - 16:52
fonte
1

Se il tuo classificatore di apprendimento automatico sta ottenendo previsioni perfette o quasi perfette (accurate = 1.0 e MCC = +1.0), probabilmente significa che c'è una funzionalità nel set di dati di input che è duplicato della funzione di destinazione che desideri per prevedere.

Se rappresenti il set di dati con le righe M come istanze di dati, N funzioni come colonne e 1 funzione di destinazione come colonna aggiuntiva, significa che una delle colonne N ha gli stessi valori della colonna di destinazione.

Il tuo algoritmo di apprendimento automatico è in grado di fare previsioni perfette perché, dopo alcune iterazioni, "capisce" che può fare previsioni accurate semplicemente guardando il valore successivo della funzione che duplica i bersagli.

Se ciò accade, il sistema di apprendimento automatico diventa abbastanza inutile: chiunque (anche senza un computer) può diventare in grado di fare previsioni perfette, semplicemente guardando la funzionalità duplicata.

Un esempio può essere trovato nel documento " Un approccio basato sulla rete neurale probabilistica per la diagnosi della malattia del mesotelioma "(Er et al, Computers & Electrical Engineering, 2012), in cui gli autori hanno utilizzato una rete neurale per predire la diagnosi di 324 pazienti con 34 caratteristiche e un'etichetta target. La colonna obiettivo è "classe di diagnosi", che indica se ciascun paziente (riga) ha o meno il mesotelioma. Ma il set di dati contiene un'altra funzione, chiamata "metodo di diagnosi", che ha esattamente gli stessi valori di "classe di diagnosi" (puoi controllare questo aspetto dando un'occhiata al loro set di dati, che hanno reso disponibile su Università di California Irvine Machine Learning Repository ).

Gli autori includono quel "metodo di diagnosi" nel loro set di dati di input, e quindi ottengono tassi di previsione di accuratezza incredibilmente elevata: accuratezza superiore = 0.98

Questa previsione non ha molto senso, perché distorta sulla duplicazione delle etichette di destinazione. Fondamentalmente includevano le etichette di verità di base nel set di dati che volevano prevedere. Se rimuovono questa funzione, i punteggi di previsione saranno molto più bassi.

Quindi, se vedi che il tuo algoritmo di apprendimento automatico predice troppo bene, ti chiedi sempre: includo qualsiasi funzione che duplica gli obiettivi nel mio set di dati di input?

    
risposta data 30.04.2018 - 22:29
fonte

Leggi altre domande sui tag