Topic: [Machine Learning] Problema normalizzazione dato statistico  (Letto 148 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 297
  • Punti reputazione: 0
    • Mostra profilo
Ho più dati statistici che possono assumere un valore dallo 0 al 100%, però allo stesso possono NON avere quel dato.
Il comportamento della rete neurale deve differire, in quanto 0!=NULL

Dando una letta qua:  https://www.researchgate.net/post/Is_it_possible_to_train_a_neural_network_with_missing_data2

"A naive way for dealing with missing values is to fill them with a constant or a mean of its class"

Quindi teoricamente posso buttare il NULL a 0.0349237?

dettagli della NN (non so se servono...):
- libreria keras
- binary classification (1 output, non ricordo il nome della funzione di attivazione f(x) = {>= .5 -> 1, < .5 -> 0})
- sigmoid activation for all layers
- loss function: binary crossentropy
« Ultima modifica: Giugno 29, 2018, 08:40 da tommyb1992 »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.854
  • Punti reputazione: 9
    • Mostra profilo
Re:[Machine Learning] Problema normalizzazione dato statistico
« Risposta #1 il: Giugno 29, 2018, 19:02 »
> posso buttare il NULL a 0.0349237?

cioè hai valori che variano tra 0 e 100 ma la media sarebbe 0.03? Ok, suppongo.
Comunque, come ti suggeriscono anche le risposte nel forum che linki, dipende tutto da che cosa *sono* i tuoi dati, e in particolare che cosa *vuol dire* null nel tuo caso. Certo, se per te "null" è l'occasionale dato mancante, che ti aspetti accada con frequenza casuale, senza particolari bias, allora certo, puoi mettere una media al suo posto. Ma se a "null" è associato un significato particolare, e/o se tende a presentarsi in situazioni particolari, allora devi pensarci su.

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 297
  • Punti reputazione: 0
    • Mostra profilo
Re:[Machine Learning] Problema normalizzazione dato statistico
« Risposta #2 il: Giugno 29, 2018, 21:26 »
> posso buttare il NULL a 0.0349237?

cioè hai valori che variano tra 0 e 100 ma la media sarebbe 0.03? Ok, suppongo.
Li dice che posso usare un valore come costante o la media. (era numero costante tirato a caso)


Citazione
Comunque, come ti suggeriscono anche le risposte nel forum che linki, dipende tutto da che cosa *sono* i tuoi dati, e in particolare che cosa *vuol dire* null nel tuo caso. Certo, se per te "null" è l'occasionale dato mancante, che ti aspetti accada con frequenza casuale, senza particolari bias, allora certo, puoi mettere una media al suo posto. Ma se a "null" è associato un significato particolare, e/o se tende a presentarsi in situazioni particolari, allora devi pensarci su.

visto che generalizza da 0 a 1.0 (0 -> 100%), mettere 0.03xxx (o qualsiasi altro valore) è una cattiva idea, a meno che non faccio il round a due valori decimali (tipo 0,76/0,30/0.99 per il 76%, 30% e 99%) così se utilizzo un valore costante di 0.005 (per esempio) per il dato NULL e sono sicuro che non venga occupato dai valori assunti dai dati statistici.

Un altra soluzione che li non è scritta ma che mi è venuta in mente è comprimere i valori da 0 a 100, facendoli andare da 1 a 100 (quindi sottraendo lo 0.0x da ogni numero: chiedo scusa è sera e non ho voglia di pensare alla formula) lasciare libero lo spazio per lo 0.

Comunque la prima opzione non mi è sembrata una gran idea dall'inizio, ma ci ho voluto provare perchè pigro e non mi andava di sommare colonne e fare medie (contando che la struttura del cvs oltretutto è un casino perchè oltre alla colonne devo sommare multipli dati sulla stessa riga quindi veniva un casino).

Ma poi dopo che ho trainato e visto che, si migliorava, ma di poco, ho fatto ciò che non volevo fare: la media, poi oltretutto stiamo lavorando sul dato per eccellenza sul quale applicare la media, visto che stiamo parlando di statistica, mediamente esce quello, differente sarebbe stato se tramite machine learning avessi dovuto "ricostruire" foto casuali, li la media dei pixel, avrebbe avuto poco senso...