Feature hashing

Feature engineering in R

Jorge Zazueta

Research Professor and Head of the Modeling Group at the School of Economics, UASLP

Wat is feature hashing?

  • Zet een tekstvariabele om in numerieke variabelen
  • Gebruikt hash-waarden als feature-indexen
  • Geheugenzuinige representatie van data
  • Handig als we nieuwe categorieën in nieuwe data verwachten

Wijs op basis van tekstwaarden een indexnummer toe aan elke carrier.

Tabel die feature hashing voor luchtvaartmaatschappijen laat zien.

Feature engineering in R

Hoeveel carriers zijn er?

De flights-dataset bevat carriers als factoren, maar we weten niet of er nieuwe carriers opduiken in nieuwe data.

flights %>%
  select(carrier) %>%
  table()
carrier
  9E   AA   AS   B6   DL   EV   F9   FL   HA   MQ   OO   UA   US   VX   WN   YV 
 859 1744   26 2503 2619 3014   38  186   14 1540    2 3367 1228  244  757   41
Feature engineering in R

Die feature hashen

We kunnen dummy-hashes maken om de factorwaarden te representeren met het pakket textrecipes.

recipe <- recipe(~carrier, 
                 data = flights_train) %>%
  step_dummy_hash(carrier, prefix = NULL, 
                  signed = FALSE, 
                  num_terms = 50L)
# Prep het recept
object <- recipe %>%
  prep()

# Bake het recept met nieuwe data
baked <- bake(object,
              new_data = flights_test)

Een blik op de step_dummy_hash() -representatie.

bind_cols(flights_test$carrier,baked)[1:6,c(1,18:20)]
New names:
• `` -> `...1`
# A tibble: 10 × 4
   ...1  `_carrier_17` `_carrier_18` `_carrier_19`
   <chr>         <int>         <int>         <int>
 1 EV                0             0             0
 2 B6                0             1             0
 3 EV                0             0             0
 4 MQ                0             0             0
 5 DL                0             0             0
 6 EV                0             0             0
Feature engineering in R

Hashing visualiseren

We kunnen de matrix bekijken met het pakket plot.matrix.

flights_hash <- 
    as.matrix(baked)[1:50,] 

plot(flights_hash, 
     col = c("white","steelblue"), 
     key = NULL,
     border = NA)

Een grafische weergave van een steekproef van de dummy-hash-toewijzingen van de oorspronkelijke carrier-factor.

Feature engineering in R

Laten we oefenen!

Feature engineering in R

Preparing Video For Download...