Feature Crosses: Crossing One-Hot Vectors

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.