Vai al contenuto principale Passa a contenuto complementare

Trasformazione dei tipi di dati

Quando si addestra un modello di machine learning, è importante che il set di dati rappresenti accuratamente tutti i tipi di dati. Se una variabile è rappresentata in modo impreciso, si potrebbe ottenere un modello con una bassa accuratezza o un modello che sembra valido ma non effettua una buona previsione quando viene applicato ai dati del mondo reale. È necessario essere in grado di distinguere le misure di ciascuna caratteristica e di assegnare una rappresentazione adeguata a tale caratteristica.

In generale, il machine learning considera valore numerico tutto ciò che è di tipo float o doppio e categorico tutto ciò che è stringa. Tuttavia, questa potrebbe non essere sempre l'interpretazione corretta, come vedremo negli esempi seguenti.

Gli esempi si basano su un set di dati che è stato aggregato per rispondere alla domanda: "Un utente riacquisterà un prodotto qualsiasi entro 30 giorni dalla data del primo acquisto?" Il set di dati contiene colonne di diversi tipi di dati, come stringa, doppio, intero, booleano e data.

Colonne e tipi di dati

Tabella con nomi di colonne e tipi di dati.

Stringhe

La tabella seguente mostra due colonne del nostro set di dati che hanno entrambe il tipo di dati stringa. La colonna MarketingSource non presenta una differenza misurabile tra i valori, ad esempio tra "Facebook" e "Riferimento cliente". Non esiste una relazione numerica o scalare e la colonna deve quindi essere considerata di tipo categorico.

D'altra parte, i valori della colonna SourceCostPerAcquisition vanno da "Basso" ad "Alto" e presentano una differenza più misurabile tra loro. Non è così preciso come avere il costo medio di acquisizione per fonte in dollari, ma c'è un ordine di grandezza distinto tra i valori. In questo caso, si potrebbe discutere se SourceCostPerAcquisition debba essere considerato come categorico o numerico.

Dati campione per le colonne PersonID, MarketingSource e SourceCostPerAquisition

Tabella con dati campione.

Una pratica consigliata in queste situazioni è creare due configurazioni separate, ognuna con una classificazione possibile differente delle funzionalità. Gli esperimenti dovrebbero essere eseguiti separatamente. La prima configurazione è per la rappresentazione della stringa originale. Nella seconda configurazione, si assegna una mappatura numerica a differenti valori, convertendo la colonna nel doppio del tipo di dati. Ad esempio, "Basso" = 1,0, "Medio" = 2,0 e "Alto" = 3,0. Dopo aver eseguito ogni configurazione, è possibile comprendere meglio quale configurazione funziona meglio per un determinato caso d'uso. In alcuni casi, ha senso utilizzare la rappresentazione di una stringa, mentre in altri, può avere più senso una rappresentazione numerica.

Numeri

Quando c'è una differenza misurabile di ciò che i dati di una colonna descrivono, è necessario rappresentarli come valori numerici. Ne sono un esempio i costi, i ricavi, i profitti, i conteggi, le somme e le medie.

A volte il set di dati può avere un valore numerico che non è misurabile perché si tratta di un dizionario o di un valore incrementale come un ID. Nel nostro esempio, i valori della colonna PersonID avrebbero potuto essere scambiati per un valore numerico se non fossero iniziati con "Person_". Trattare gli ID come valori numerici sarebbe stata una rappresentazione imprecisa della differenza tra queste righe. La pratica migliore in questi casi è quella di rappresentare l'ID come una stringa. Prima di utilizzare un set di dati, potrebbe essere necessario determinare se una delle colonne numeriche debba essere convertita in valori categorici.

Date

Nel contesto del machine learning, i tipi di campo data sono variabili di tipo categorico. Sebbene le date e i timestamp possano essere sottratti l'uno dall'altro, una data ha diversi componenti. La questione è quale di questi componenti considerare e come: Il valore deve essere l'anno, il mese, il giorno del mese o dell'anno, o l'ora del giorno? Forse si desidera la differenza di orario in minuti? Per ottenere il massimo potere di previsione, la data deve essere analizzata in almeno alcune delle sue componenti. Alcune di queste componenti potrebbero essere di tipo categorico e altre di tipo numerico.

Ad esempio, una data può essere analizzata come giorno della settimana. Può essere rappresentata come un valore numerico (da 1 a 7) o come una stringa (da "domenica" a "sabato").

Giorni della settimana come numeri e stringhe

Tabella con i giorni della settimana rappresentati come numeri e stringhe.

La rappresentazione del giorno della settimana come valore numerico presenta alcuni problemi. Quando inizia la settimana, lunedì o domenica? Inoltre, anche se il giorno della settimana è importante, potrebbe essere nascosto in una tendenza ciclica.

In alcuni casi, la tendenza potrebbe essere molto indicativa, come nel grafico 1 in cui la settimana inizia il lunedì.

Grafico 1: vendite medie per giorno feriale quando la settimana inizia di lunedì

Grafico delle vendite per giorno della settimana con una chiara linea di tendenza.

Il grafico 2 presenta gli stessi dati del grafico 1, ma è stato spostato di un giorno, in modo che la settimana inizi la domenica. In questo caso la significatività dei dati è molto più bassa.

Grafico 2: vendite medie per giorno feriale quando la settimana inizia di domenica

Grafico delle vendite per giorno della settimana senza una chiara linea di tendenza.

Il grafico 3 illustra un altro problema legato all'uso del componente analizzato di una data come valore numerico. Potrebbe essere presente un modello significativo, ma se non è lineare, non verrà notato. Per questo motivo e a causa le tendenze cicliche (ad esempio, la stagionalità giornaliera o trimestrale) spesso presenti nelle componenti della data, si raccomanda di utilizzare queste componenti come valori di tipo categorico e non come valori di tipo numerico.

Grafico 3: la media delle vendite per giorno della settimana mostra un picco infrasettimanale

Grafico delle vendite per giorno della settimana, con un andamento ciclico che raggiunge un picco a metà settimana.

Qlik AutoML utilizza l'ingegneria automatica per separare i componenti di date e timestamp in colonne distinte. Ciò consente di migliorare le capacità predittive dei modelli creati. Le funzionalità progettate automaticamente derivate da una funzionalità data padre sono classificate come funzionalità numeriche. Se necessario, è possibile sovrascrivere questa funzionalità, in modo che le colonne della data vengano considerate come categoriche. Per ulteriori informazioni, vedere Ingegneria delle funzionalità data.

Differenze di data

Le differenze di data possono essere utilizzate come sostituto migliore degli ID incrementali, perché un ID incrementale è solo descrittivo dell'ordine in cui i record sono stati aggiunti alla tabella. Gli ID incrementali possono essere facilmente distorti dalla variazione del volume (clienti al giorno in molti esempi), mentre una differenza di data è indipendente da tale velocità.

La differenza di data può essere di diverse misure: secondi, ore, giorni, mesi o trimestri. Scegliere quello più pertinente alla granularità dei dati in proprio possesso. Ad esempio, quando si analizzano dati mensili, non ci sarà alcun valore reale in una differenza di data di giorni. In questo caso, una differenza di data di mesi sarebbe più rilevante.

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!