Previsione del lifetime value cliente con AI Platform: deployment in produzione

Last reviewed 2019-02-06 UTC

Questo articolo è la terza parte di una serie in quattro parti che illustra come prevedere il lifetime value cliente (CLV) utilizzando AI Platform (AI Platform) su Google Cloud.

Gli articoli di questa serie includono:

  • Parte 1 - Introduzione. Introduce il CLV e due tecniche di modellazione per prevedere il CLV.
  • Parte 2: addestramento del modello. Illustra come preparare i dati e addestrare i modelli.
  • Parte 3: deployment in produzione (questo articolo). Descrive come eseguire il deployment dei modelli illustrati nella Parte 2 in un sistema di produzione.
  • Parte 4 - Utilizzo di AutoML Tables. Mostra come utilizzare AutoML Tables per creare un modello ed eseguirne il deployment.

Installare il codice

Se vuoi seguire la procedura descritta in questo articolo, devi installare il codice campione da GitHub.

  1. Se hai installato gcloud CLI, apri una finestra del terminale sul computer per eseguire questi comandi. Se non hai installato l'interfaccia a riga di comando gcloud, apri un'istanza di Cloud Shell.

    VAI A Cloud Shell

  2. Clona il repository del codice campione:

    git clone https://github.com/GoogleCloudPlatform/tensorflow-lifetime-value
    
  3. Segui le istruzioni di installazione nelle sezioni Installa e Automazione del file README per configurare il tuo ambiente ed eseguire il deployment dei componenti della soluzione. Ciò include il set di dati di esempio e l'ambiente Cloud Composer.

Gli esempi di comando nelle sezioni seguenti presuppongono che tu abbia completato entrambi i passaggi.

Nell'ambito delle istruzioni di installazione, puoi impostare le variabili per il tuo ambiente come descritto nella sezione di configurazione del file README.

Modifica la variabile REGION in modo che corrisponda all'area geografica di Google Cloud più vicina alla tua area geografica. Per un elenco di regioni, consulta Aree geografiche e zone.

Architettura e implementazione

Il seguente diagramma mostra l'architettura utilizzata in questa discussione.

Architettura del processo per la preparazione, la formazione e l'elaborazione dei dati utilizzate in questa soluzione

L'architettura è suddivisa nelle seguenti funzioni:

  • Importazione dati: i dati vengono importati in BigQuery.
  • Preparazione dei dati: i dati non elaborati vengono trasformati per diventare utilizzabili dai modelli.
  • Addestramento modelli: i modelli vengono creati, addestrati e ottimizzati per poter essere utilizzati per eseguire previsioni.
  • Pubblicazione delle previsioni: le previsioni offline vengono archiviate e rese disponibili a bassa latenza.
  • Automazione: tutte queste attività vengono eseguite e gestite tramite Cloud Composer.

Importazione di dati

Questa serie di articoli non illustra un modo specifico per eseguire l'importazione dei dati. BigQuery offre molti modi per importare dati, tra cui Pub/Sub, Cloud Storage e BigQuery Data Transfer Service. Per ulteriori informazioni, consulta BigQuery per i data warehouse. Nell'approccio descritto in questa serie, utilizziamo un set di dati pubblico. Importi questo set di dati in BigQuery, come descritto nell'esempio di codice nel file README.

Preparazione dei dati

Per preparare i dati, esegui le query su BigQuery come quelle mostrate nella Parte 2 di questa serie. In un'architettura di produzione, esegui le query come parte di un grafico aciclico diretto (AG) di Apache Airflow. La sezione sull'automazione più avanti in questo documento fornisce ulteriori dettagli sull'esecuzione delle query per la preparazione dei dati.

Addestramento del modello su AI Platform

Questa sezione fornisce una panoramica della parte di addestramento dell'architettura.

Indipendentemente dal tipo di modello scelto, il codice mostrato in questa soluzione viene pacchettizzato per essere eseguito su AI Platform (AI Platform), sia per l'addestramento che per le previsioni. AI Platform offre i seguenti vantaggi:

  • Puoi eseguirlo localmente o nel cloud in un ambiente distribuito.
  • Offre connettività integrata ad altri prodotti Google, come Cloud Storage.
  • Puoi eseguirlo con pochi comandi.
  • Facilita l'ottimizzazione degli iperparametri.
  • Scala con le modifiche minime all'infrastruttura, se presenti.

Affinché AI Platform sia in grado di addestrare e valutare un modello, devi fornire set di dati di addestramento, valutazione e test. Puoi creare i set di dati eseguendo query SQL come quelle mostrate nella Parte 2 di questa serie. Quindi, esporti questi set di dati dalle tabelle BigQuery in Cloud Storage. Nell'architettura di produzione descritta in questo articolo, le query vengono eseguite da un DAG Airflow, descritto più dettagliatamente nella sezione Automazione di seguito. Puoi eseguire il DAG manualmente come descritto nella sezione Eseguire DAG del file README.

Previsioni di pubblicazione

Le previsioni possono essere create online o offline. Tuttavia, creare previsioni è diverso da gestirle. In questo contesto CLV, eventi come l'accesso di un cliente a un sito web o la visita di un negozio di vendita al dettaglio non influiranno drasticamente sul lifetime value del cliente. Pertanto, le previsioni possono essere effettuate offline, anche se i risultati potrebbero dover essere presentati in tempo reale. La previsione offline ha le seguenti funzionalità operative:

  • Puoi eseguire gli stessi passaggi di pre-elaborazione sia per l'addestramento che per la previsione. Se l'addestramento e la previsione vengono pre-elaborati in modo diverso, le previsioni potrebbero essere meno accurate. Questo fenomeno si chiama disallineamento addestramento/produzione.
  • Puoi utilizzare gli stessi strumenti per preparare i dati per l'addestramento e la previsione. L'approccio discusso in questa serie utilizza principalmente BigQuery per preparare i dati.

Puoi utilizzare AI Platform per eseguire il deployment del modello ed eseguire previsioni offline utilizzando un job batch. Per la previsione, AI Platform facilita attività come la seguente:

  • Gestione delle versioni in corso...
  • Scalabilità con modifiche minime all'infrastruttura.
  • Deployment su larga scala.
  • Interazione con altri prodotti Google Cloud.
  • Fornire uno SLA.

L'attività di previsione batch utilizza file archiviati su Cloud Storage per input e output. Per il modello DNN, la seguente funzione di pubblicazione, definita in task.py, definisce il formato degli input:

clvf = CLVFeatures(ignore_crosses=True,
                   is_dnn=MODEL_TYPE not in PROBABILISTIC_MODEL_TYPES)
used_headers = clvf.get_used_headers(with_key=True, with_target=False)
default_values = clvf.get_defaults(used_headers)

rows_string_tensor = tf.placeholder(dtype=tf.string, shape=[None],
                                    name='csv_rows')
receiver_tensor = {'csv_rows': rows_string_tensor}

row_columns = tf.expand_dims(rows_string_tensor, -1)
columns = tf.decode_csv(row_columns, record_defaults=default_values)

features = dict(zip(used_headers, columns))

return tf.estimator.export.ServingInputReceiver(features, receiver_tensor)

Il formato di output della previsione è definito in un EstimatorSpec restituito dalla funzione del modello Estimator in questo codice da model.py:

predictions = {
    'customer_id': tf.squeeze(features[clvf.get_key()]),
    'predicted_monetary': output
}
export_outputs = {
    'predictions': tf.estimator.export.PredictOutput(predictions)
}

return tf.estimator.EstimatorSpec(mode=mode,
                                  predictions=predictions,
                                  export_outputs=export_outputs)

Utilizzare le previsioni

Dopo aver completato la creazione dei modelli e il loro deployment, puoi utilizzarli per eseguire previsioni CLV. Di seguito sono riportati i casi d'uso comuni del CLV:

  • Un esperto di dati può utilizzare le previsioni offline quando crea segmenti di utenti.
  • La tua organizzazione può fare offerte specifiche in tempo reale, quando un cliente interagisce con il tuo brand online o in negozio.

Analytics con BigQuery

Comprendere il CLV è fondamentale per le attivazioni. Questo articolo si concentra principalmente sul calcolo del lifetime value in base alle vendite precedenti. I dati sulle vendite di solito provengono da strumenti di gestione dei rapporti con i clienti (CRM), ma le informazioni sul comportamento degli utenti possono avere altre origini, come Google Analytics 360.

Consigliamo di utilizzare BigQuery se vuoi eseguire una delle seguenti attività:

  • Memorizzazione di dati strutturati da molte origini.
  • Trasferimento automatico dei dati da strumenti SaaS comuni come Google Analytics 360, YouTube o AdWords.
  • Esecuzione di query ad hoc, inclusa l'unione di terabyte di dati dei clienti.
  • Visualizzazione dei dati utilizzando strumenti di business intelligence leader del settore.

Oltre a svolgere il ruolo di motore di query e archiviazione gestito, BigQuery può eseguire direttamente algoritmi di machine learning utilizzando BigQuery ML. Caricando il valore CLV di ciascun cliente in BigQuery, consenti agli analisti, data scientist e tecnici di sfruttare le metriche aggiuntive nelle loro attività. Il DAG Airflow discusso nella sezione successiva include un'attività per caricare le previsioni CLV in BigQuery.

Gestione a bassa latenza con Datastore

Le previsioni effettuate offline possono spesso essere riutilizzate per fornire previsioni in tempo reale. Per questo scenario, l'aggiornamento della previsione non è fondamentale, ma riuscirai ad accedere ai dati al momento giusto e puntualmente.

L'archiviazione della previsione offline per la pubblicazione in tempo reale significa che le azioni intraprese da un cliente non modificano immediatamente il CLV. Tuttavia, accedere velocemente a quel CLV è importante. Ad esempio, la tua azienda potrebbe voler reagire rapidamente quando un cliente utilizza il tuo sito web, porre una domanda all'help desk o effettuare il pagamento tramite il tuo point of sale. In questi casi, una risposta rapida può migliorare la relazione con il cliente. Pertanto, archiviare l'output della previsione in un database veloce e rendere disponibili le query sicure sul frontend è la chiave per il successo.

Supponiamo che tu abbia centinaia di migliaia di clienti unici. Datastore è una buona opzione per i seguenti motivi:

  • Supporta database di documenti NoSQL.
  • Fornisce un accesso rapido ai dati utilizzando una chiave (ID cliente), ma abilita anche le query SQL.
  • È accessibile tramite un'API REST.
  • È pronto per l'uso, quindi non è previsto un overhead di configurazione.
  • Scala automaticamente.

Poiché non è possibile caricare direttamente un set di dati CSV in Datastore, in questa soluzione utilizziamo Apache Beam su Dialogflow con un modello JavaScript per caricare le previsioni CLV in Datastore. Il seguente snippet di codice dal modello JavaScript mostra come:

var prediction_object = JSON.parse(prediction_row);

to_write = {
  key: {
    path: [{
      //id: prediction_object.key,
      kind: 'clv',
      name: prediction_object.customer_id
    }]
  },
  properties: {
    predicted_monetary: {doubleValue: prediction_object.predicted_monetary}
  }
};

return JSON.stringify(to_write);

Quando i dati si trovano in Datastore, puoi scegliere in che modo vuoi interagire, che può includere:

Automazione della soluzione

Puoi utilizzare i passaggi descritti finora quando inizi a utilizzare i dati per eseguire i primi passaggi di pre-elaborazione, addestramento e previsione. Tuttavia, la tua piattaforma non è ancora pronta per la produzione, perché hai comunque bisogno di automazione e gestione degli errori.

Alcuni script possono aiutarti a incollare i passaggi insieme. Tuttavia, è una best practice automatizzare i passaggi utilizzando un gestore del flusso di lavoro. Apache Airflow è un popolare strumento di gestione dei flussi di lavoro e puoi utilizzare Cloud Composer per eseguire una pipeline Airflow gestita su Google Cloud.

Airflow funziona con grafici aciclici diretti (DAG), che consentono di specificare ogni attività e la sua relazione con le altre. Nell'approccio descritto in questa serie, esegui i seguenti passaggi:

  1. Creare set di dati BigQuery.
  2. Caricare il set di dati pubblico da Cloud Storage in BigQuery.
  3. Pulire i dati da una tabella BigQuery e scriverli in una nuova tabella BigQuery.
  4. Creare funzionalità basate sui dati in una tabella BigQuery e scriverle in un'altra tabella BigQuery.
  5. Se il modello è una rete neurale profonda (DNN), suddivide i dati in un set di addestramento e in un set di valutazione all'interno di BigQuery.
  6. Esporta i set di dati in Cloud Storage e rendili disponibili in AI Platform.
  7. Chiedi ad AI Platform di addestrare periodicamente il modello.
  8. Esegui il deployment del modello aggiornato su AI Platform.
  9. Esegui periodicamente una previsione batch sui nuovi dati.
  10. Salva le previsioni già salvate in Cloud Storage in Datastore e BigQuery.

Configurazione di Cloud Composer

Per informazioni su come configurare Cloud Composer, consulta le istruzioni nel file README del repository GitHub.

Grafici aciclici diretti per questa soluzione

Questa soluzione utilizza due DAG. Il primo DAG illustra i passaggi da 1 a 8 della sequenza riportata in precedenza:

default_dag_args = {
    'start_date': datetime.datetime(2050, 1, 1),
    'schedule_interval': None,
    'provide_context': True
}

dag = models.DAG(
    'build_train_deploy',
    default_args = default_dag_args)

Il seguente diagramma mostra l'interfaccia utente di Cloud Composer/Airflow, che riassume i passaggi da 1 a 8 dei passaggi DAG di Airflow.

Flusso Airflow che mostra i passaggi da 1 a 8 della procedura

Il secondo DAG illustra i passaggi 9 e 10.

default_dag_args = {
    'start_date': datetime.datetime(2050, 1, 1),
    'schedule_interval': None,
    'provide_context': True,
    'dataflow_default_options': {
        'project': PROJECT,
        'zone': DF_ZONE,
        'tempLocation': DF_TEMP
    }
}

dag = models.DAG(
    'predict_serve',
    default_args = default_dag_args)

Il seguente diagramma riassume i passaggi 9 e 10 del processo Airflow DAG.

Flusso Airflow che mostra i passaggi 9 e 10 della procedura

I DAG sono separati perché le previsioni e l'addestramento possono avvenire in modo indipendente e con una programmazione diversa. Ad esempio, puoi:

  • Prevedi dati giornalieri per clienti nuovi o esistenti.
  • Addestra nuovamente il modello ogni settimana per incorporare nuovi dati o attivarlo dopo la ricezione di un numero specifico di nuove transazioni.

Per attivare manualmente il primo DAG, puoi eseguire il comando dalla sezione Esegui Dags del file README in Cloud Shell o utilizzando l'interfaccia a riga di comando gcloud.

Il parametro conf trasmette le variabili a diverse parti dell'automazione. Ad esempio, nella seguente query SQL utilizzata per estrarre caratteristiche dai dati puliti, le variabili vengono utilizzate per parametrizzare la clausola FROM:

FROM
  `{{ dag_run.conf['project'] }}.{{ dag_run.conf['dataset'] }}.data_cleaned` a

Puoi attivare il secondo DAG utilizzando un comando simile. Per ulteriori dettagli, consulta il file README nel repository GitHub.

Passaggi successivi

  • Esegui l'esempio completo nel repository GitHub.
  • Incorpora nuove funzionalità nel modello di CLV utilizzando alcune delle seguenti funzionalità:
    • Dati di flussi di clic, che possono aiutarti a prevedere il CLV per i clienti per i quali non hai dati storici.
    • Reparti di prodotti e categorie che possono aggiungere ulteriore contesto e che potrebbero aiutare la rete neurale.
    • Nuove funzionalità create utilizzando gli stessi input utilizzati in questa soluzione. Alcuni esempi potrebbero essere le tendenze di vendita delle ultime settimane o dei mesi precedenti alla data in cui si è verificata la soglia.
  • Leggi la Parte 4: utilizza AutoML Tables per il modello.
  • Scopri altre soluzioni di previsione predittive.
  • Esplora architetture di riferimento, diagrammi, tutorial e best practice su Google Cloud. Consulta il nostro Centro di architettura cloud.