Come ricavare i dati per il Machine Learning

Come ricavare i dati per il Machine Learning

24 Gennaio 2020 ai 0

Per ricavare i dati per il Machine Learning bisogna avere chiari alcuni concetti:

I dati possono essere strutturati e non strutturati, per quanto concerte i dati strutturati esistono diversi formati che al giorno d’oggi possono essere considerati i principali standard, senza aggiungere spiegazioni questi sono: CSV, TSV, JSON, SQL, XML, HTML, EXCEL.

I dati non strutturati, come dice il nome stesso, mancano di una struttura che li identifica e per poterli utilizzare bisogna di fatto creare una struttura per ovviare al problema, i più noti sono: immagini, video, testo e file audio.

Chiarita la differenza tra dati strutturati e dati non strutturati, come sappiamo l’imput di un modello di ML può essere soltanto un vettore o una matrice di numeri, in altre parole dati strutturati. Come possiamo fare quindi ad ottenere un dato strutturato per passarlo come input in un algoritmo di Machine Learning partendo da un dato non strutturato come una immagine?

Rappresentazione di una immagine in BN con matrice di valori

Calcolo dei dati

Ogni immagine è composta generalmente di 3 byte, 1 byte contiene un valore da 0 a 256 e rappresenta il blu, uno il verde ed il terzo il rosso. Ogni pixel può assumere 256 valori PER CIASCUNO DEI TRE COLORI, quindi, per ogni colore: 256 valori = 8 bit (2 elevato a 8 = 256) = 1 byte, e dunque 1 pixel = 3 byte. Per il caso più semplice dell’immagine in bianco e nero, contiene un solo byte con un valore da 0 a 256 per rappresentare le sfumature di grigio.

Rappresentazione di una immagine in Bianco e Nero tramite Vettore

Arrivati a questo punto come monstrato nell’immagine sopra, è possibile estrarre la matrice dei valori che compongono l’immagine e ordinare ogni riga in modo sequenziale per ottenere un unico vettore. Non è importante l’ordine del vettore. Quello che importa è utilizzare lo stesso ordine per tutte le immagini del dataset.

Per quanto riguarda i testi invece, esistono molti modi per rappresentare dei testi in forma vettoriale e poterli utilizzare con algoritmi di machine learning. Vediamone in particolare due tipologie.

Bag of Words è un modello molto semplice per prappresentare testi in vettore, è utilizzato per raggruppare parole che appaio molto frequentemente all’interno di un discorso come avverbi articoli e soggetti, quindi è molto riduttivo per identificare l’argomento del discorso perchè da poca importanza a parole poco frequenti.

Metodo TF*IDF

Una tecnica per ovviare a questo problema è il metodo TF*IDF per dare più peso alle parole più rare all’interno del discorso e per penalizzare quelle piu frequenti, utilizzando le seguenti formule:

DOCUMENT FREQUENCY ovvero DF che misura la frequenza di almeno una volta la presenza di un preciso termine in un paragrafo, alla fine si ottiene un numero per ogni parola rappresentato in forma di array presente in ogni paragrafo.

INVERS DOCUMENT FREQUENCY ovvero IDF che misura l’importanza di ogni termine all’interno di tutto il documento complessivo, e si calcola come il logaritmo naturale del numero totale di paragrafi fratto frequenza delle parone nei paragrafi: log ( num Paragrafi / DF )

TERM FREQUENCY ovvero TF che misura la quantità di una parola specifica all’interno di un paragrafo, per esempio: la parola LA in questa frase sottolineata compare 2 volte su 11 parole. TF = 2/11 (senza contare i numeri). Anche qui si ottiene un array.
Alla fine è possibile ottenere un unico vettore moltiplicando gli array TF*IDF

Conclusione

Ecco come ricavare i dati per il Machine Learning con una logica semplice ed intuitiva. Ci sono molte procedure per ottenere i dati che ci servono ma questo è solo un esempio semplice e pratico per capire da dove partire. Buona fortuna!

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *