Finora abbiamo dato l'impressione che un modello agisca direttamente sulle righe di un set di dati. Tuttavia, i modelli importano i dati in modo un po' diverso.
Ad esempio, supponiamo che un set di dati fornisca cinque colonne, ma solo due di queste (b
e d
) siano caratteristiche del modello. Durante l'elaborazione
dell'esempio nella riga 3, il modello acquisisce semplicemente i contenuti delle due celle evidenziate (3b e 3d) come segue?
In realtà, il modello acquisisce un array di valori con virgola mobile chiamato vettore di caratteristiche. Puoi considerare un vettore di caratteristiche come i valori in virgola mobile che compongono un esempio.
Tuttavia, i vettori di caratteristiche utilizzano raramente i valori non elaborati del set di dati. In genere, devi elaborare i valori del set di dati in rappresentazioni da cui il tuo modello può apprendere meglio. Pertanto, un vettore di caratteristiche più realistico potrebbe avere il seguente aspetto:
Un modello non produrrebbe previsioni migliori con l'addestramento sui valori effettivi nel set di dati rispetto ai valori alterati? Sorprendentemente, la risposta è no.
Devi determinare il modo migliore per rappresentare i valori del set di dati non elaborati come valori addestrabili nel vettore di caratteristiche. Questa procedura è chiamata feature engineering ed è un aspetto fondamentale del machine learning. Le tecniche di feature engineering più comuni sono:
- Normalizzazione: conversione di valori numerici in un intervallo standard.
- Raggruppamento (chiamato anche bucketing): conversione dei valori numerici in bucket di intervalli.
Questa unità tratta la normalizzazione e la suddivisione in intervalli. L'unità successiva, Lavorazione dei dati categorici, tratta altre forme di preelaborazione, come la conversione di dati non numerici, come le stringhe, in valori a virgola mobile.
Ogni valore in un vettore di caratteristiche deve essere un valore in virgola mobile. Tuttavia, molte funzionalità sono naturalmente stringhe o altri valori non numerici. Di conseguenza, gran parte della creazione di funzionalità consiste nel rappresentare i valori non numerici come valori numerici. Ne vedrai di più nei moduli successivi.