Preparazione dati per prevedere gli acquisti

Machine Learning per il marketing con Python

Karolis Urbonas

Head of Analytics & Science, Amazon

Regressione: prevedere una variabile continua

  • Regressione: apprendimento supervisionato
  • Variabile target: continua o di conteggio
  • Versione più semplice: regressione lineare
  • Dati di conteggio (es. giorni attivi) spesso meglio con regressione di Poisson o Binomiale Negativa
Machine Learning per il marketing con Python

Feature RFM: recency, frequency, monetary

  • RFM: base di molti metodi di feature engineering
  • Recency: tempo dall’ultima transazione del cliente
  • Frequency: numero di acquisti nel periodo osservato
  • Valore Monetary: totale speso nel periodo osservato
Machine Learning per il marketing con Python

Esplora la distribuzione delle vendite per mese

# Esplora la distribuzione mensile delle osservazioni
online.groupby(['InvoiceMonth']).size()
InvoiceMonth
2010-12    4893
2011-01    3580
2011-02    3648
2011-03    4764
2011-04    4148
2011-05    5018
2011-06    4669
2011-07    4610
2011-08    4744
2011-09    7189
2011-10    8808
2011-11    9513
dtype: int64
Machine Learning per il marketing con Python

Separa i dati delle feature

# Escludi la variabile target
online_X = online[online['InvoiceMonth']!='2011-11']

# Definisci la data di snapshot NOW = dt.datetime(2011,11,1)
# Crea le feature features = online_X.groupby('CustomerID').agg({ 'InvoiceDate': lambda x: (NOW - x.max()).days, 'InvoiceNo': pd.Series.nunique, 'TotalSum': np.sum, 'Quantity': ['mean', 'sum'] }).reset_index()
features.columns = ['CustomerID', 'recency', 'frequency', 'monetary', 'quantity_avg', 'quantity_total']
Machine Learning per il marketing con Python

Rivedi le feature

print(features.head())

Intestazione delle feature

Machine Learning per il marketing con Python

Calcola la variabile target

# Crea tabella pivot con transazioni mensili per cliente
cust_month_tx = pd.pivot_table(data=online, index=['CustomerID'], 
                               values='InvoiceNo',
                               columns=['InvoiceMonth'],
                               aggfunc=pd.Series.nunique, fill_value=0)
print(cust_month_tx.head())

Tabella pivot mensile per cliente

Machine Learning per il marketing con Python

Finalizza la preparazione e fai lo split train/test

# Salva i nomi di colonna per ID e target
custid = ['CustomerID']
target = ['2011-11']

# Estrai la variabile target Y = cust_month_tx[target]
# Estrai i nomi delle feature cols = [col for col in features.columns if col not in custid]
# Salva le feature X = features[cols]
Machine Learning per il marketing con Python

Dividi i dati in training e test

# Dividi casualmente il 25% dei dati per il test
from sklearn.model_selection import train_test_split
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, 
                                                    test_size=0.25, 
                                                    random_state=99)

# Stampa le shape dei dataset print(train_X.shape, train_Y.shape, test_X.shape, test_Y.shape)
(2529, 5) (2529, 1) (843, 5) (843, 1)
Machine Learning per il marketing con Python

Passiamo agli esercizi di preparazione dati!

Machine Learning per il marketing con Python

Preparing Video For Download...