Finora ci siamo concentrati sul cross-feature di due funzionalità a virgola mobile. In pratica, i modelli di machine learning raramente
attraverso funzionalità continue. Tuttavia, i modelli di machine learning
spesso attraversano vettori di funzionalità molto comuni. Pensa agli incroci di caratteristiche di vettori caldi come congiunzioni logiche. Ad esempio, supponiamo che abbiamo due funzionalità: paese e lingua. Una codifica one-hot di ciascuna genera vettori con caratteristiche binarie che possono essere interpretate come country=USA, country=France
o language=English, language=Spanish
.
Quindi, se esegui una combinazione di queste codifiche rapide, ottieni caratteristiche binarie che possono essere interpretate come congiunzioni logiche, come:
country:usa AND language:spanish
Per fare un altro esempio, supponiamo che tu bini la latitudine e la longitudine, ottenendo vettori di caratteristiche a cinque elementi separati separati. Ad esempio, una latitudine e longitudine potrebbero essere rappresentate nel seguente modo:
binned_latitude = [0, 0, 0, 1, 0] binned_longitude = [0, 1, 0, 0, 0]
Supponiamo di creare una caratteristica incrociata di questi due vettori di funzionalità:
binned_latitude X binned_longitude
Questa caratteristica incrociata è un vettore one-hot a 25 elementi (24 zeri e 1 uno).
Il singolo 1
nella croce identifica una determinata congiunzione di latitudine e longitudine. Il modello può quindi imparare a conoscere tali associazioni.
Supponiamo che la latitudine e la longitudine vengano unite in modo molto più approssimativo, come segue:
binned_latitude(lat) = [ 0 < lat <= 10 10 < lat <= 20 20 < lat <= 30 ] binned_longitude(lon) = [ 0 < lon <= 15 15 < lon <= 30 ]
La creazione di una funzione incrociata di questi contenitori grossolani porta a una caratteristica sintetica che ha i seguenti significati:
binned_latitude_X_longitude(lat, lon) = [ 0 < lat <= 10 AND 0 < lon <= 15 0 < lat <= 10 AND 15 < lon <= 30 10 < lat <= 20 AND 0 < lon <= 15 10 < lat <= 20 AND 15 < lon <= 30 20 < lat <= 30 AND 0 < lon <= 15 20 < lat <= 30 AND 15 < lon <= 30 ]
Ora supponiamo che il nostro modello debba prevedere il livello di soddisfazione dei proprietari di cani secondo due funzionalità:
- Tipo di comportamento (abbaiare, pianto, rannicchiamento e così via)
- Ora del giorno
Se creiamo un cross-feature da queste funzionalità:
[behavior type X time of day]
quindi finiremo con una capacità molto più predittiva di entrambe le funzionalità. Ad esempio, se un cane piange (felice) alle 17:00, quando il proprietario torna dal lavoro sarà probabilmente un grande predittore positivo della soddisfazione del proprietario. Piangere (per fortuna, forse) alle 3:00 quando il proprietario stava dormendo profondamente è probabilmente un forte predittore negativo della soddisfazione del proprietario.
Gli studenti lineari si adattano bene a dati di grandi dimensioni. L'utilizzo di incroci di funzionalità su grandi set di dati è una strategia efficiente per l'apprendimento di modelli altamente complessi. Le reti neurali forniscono un'altra strategia.