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

Last reviewed 2019-02-06 UTC

Questo articolo è la terza di una serie in quattro parti che descrive 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.

Installazione del 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 gcloud CLI, 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 Installazione e Automazione del file README per configurare l'ambiente ed eseguire il deployment dei componenti della soluzione. Sono inclusi il set di dati di esempio e l'ambiente Cloud Composer.

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

Come parte delle istruzioni di installazione, hai impostato le variabili per il tuo ambiente come descritto nella sezione per la configurazione del file README.

Modifica la variabile REGION in modo che corrisponda alla regione Google Cloud geograficamente più vicina a te. Per un elenco delle regioni, consulta Regioni e zone.

Architettura e implementazione

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

Architettura del processo per la preparazione, l'addestramento e la gestione dei dati utilizzata 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 essere utilizzati dai modelli.
  • Addestramento dei modelli: i modelli vengono creati, addestrati e ottimizzati in modo da 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 tratta un modo specifico per eseguire l'importazione dati. BigQuery offre diversi modi per importare i dati, tra cui Pub/Sub, Cloud Storage e BigQuery Data Transfer Service. Per ulteriori informazioni, consulta BigQuery per i professionisti del data warehouse. Nell'approccio descritto in questa serie, utilizziamo un set di dati pubblico. Importerai questo set di dati in BigQuery, come descritto nel codice campione nel file README.

Preparazione dei dati

Per preparare i dati, esegui delle query su BigQuery come quelle mostrate nella Parte 2 di questa serie. In un'architettura di produzione, esegui le query come parte di un grafo diretto aciclico (DAG) 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 dell'architettura relativa all'addestramento.

Indipendentemente dal tipo di modello che scegli, il codice mostrato in questa soluzione viene eseguito su AI Platform (AI Platform), sia per l'addestramento che per la previsione. AI Platform offre i seguenti vantaggi:

  • Puoi eseguirlo in locale o nel cloud in un ambiente distribuito.
  • Offre connettività integrata ad altri prodotti Google, come Cloud Storage.
  • Puoi eseguirlo utilizzando solo pochi comandi.
  • Semplifica l'ottimizzazione degli iperparametri.
  • È scalabile con il minimo di modifiche 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. Successivamente, esporterai i set di dati dalle tabelle BigQuery a Cloud Storage. Nell'architettura di produzione descritta in questo articolo, le query vengono eseguite da un DAG Airflow, descritto più dettagliatamente nella sezione Automation riportata di seguito. Puoi eseguire il DAG manualmente come descritto nella sezione Esegui DAG del file README.

Previsioni di pubblicazione

Le previsioni possono essere create online oppure offline. Ma creare previsioni è diverso da soddisfarle. In questo contesto del CLV, eventi quali l'accesso di un cliente a un sito web o la visita a un negozio al dettaglio non influiranno drasticamente sul lifetime value del cliente. Pertanto, le previsioni possono essere eseguite 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 precise. Questo fenomeno è chiamato disallineamento addestramento/produzione.
  • Puoi usare 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 le seguenti:

  • Gestione delle versioni.
  • 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 i file archiviati in Cloud Storage per l'input e l'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 dell'output della previsione è definito in uno Estimatorspec restituito dalla funzione del modello di stima in questo codice di 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)

Utilizzo delle previsioni

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

  • Un esperto di dati può sfruttare le previsioni offline durante la creazione dei segmenti utente.
  • La tua organizzazione può fare offerte specifiche in tempo reale, quando un cliente interagisce con il tuo brand online o in un negozio.

Analisi 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 provengono in genere da strumenti di gestione dei rapporti con i clienti (CRM), ma le informazioni sul comportamento degli utenti possono avere altre fonti, ad esempio Google Analytics 360.

Utilizza BigQuery se vuoi svolgere una delle seguenti attività:

  • Archiviazione 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, inclusi join su terabyte di dati dei clienti.
  • Visualizzazione dei dati mediante strumenti di business intelligence leader del settore.

Oltre al suo ruolo di archiviazione gestita e motore di query, BigQuery può eseguire direttamente algoritmi di machine learning utilizzando BigQuery ML. Caricando il valore del CLV di ciascun cliente in BigQuery, consenti ad analisti di dati, data scientist e engineer di sfruttare metriche aggiuntive nelle loro attività. Il DAG Airflow discusso nella prossima sezione include un'attività per caricare le previsioni del CLV in BigQuery.

Gestione a bassa latenza tramite Datastore

Le previsioni effettuate offline spesso possono essere riutilizzate per fornire previsioni in tempo reale. In questo scenario, l'aggiornamento delle previsioni non è fondamentale, ma lo è ottenere l'accesso ai dati al momento giusto e in modo adeguato.

Se memorizzi la previsione offline per la pubblicazione in tempo reale, le azioni intraprese da un cliente non modificheranno immediatamente il suo CLV. Tuttavia, è importante poter accedere rapidamente al CLV. Ad esempio, la tua azienda potrebbe voler reagire rapidamente quando un cliente utilizza il tuo sito web, pone una domanda all'helpdesk o effettua il pagamento tramite il point of sale. In questi casi, una risposta rapida può migliorare il rapporto con i clienti. Pertanto, archiviare l'output di previsione in un database veloce e rendere disponibili le query sicure al tuo frontend sono fondamentali per avere successo.

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

  • Supporta i database di documenti NoSQL.
  • Consente di accedere rapidamente ai dati utilizzando una chiave (ID cliente), ma abilita anche le query SQL.
  • È accessibile tramite un'API REST.
  • È pronto per l'uso, il che significa che non è previsto alcun costo 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 del CLV in Datastore. Il seguente snippet di codice del 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 sono in Datastore, puoi scegliere il modo in cui vuoi interagire, che può includere:

Automatizzare la 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 ancora bisogno di automazione e gestione dei guasti.

Alcuni script possono aiutarti a incollare i passaggi. Tuttavia, è consigliabile automatizzare i passaggi con un gestore di flusso di lavoro. Apache Airflow è uno strumento di gestione del flusso di lavoro molto popolare e puoi utilizzare Cloud Composer per eseguire una pipeline Airflow gestita su Google Cloud.

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

  1. Crea set di dati BigQuery.
  2. Carica il set di dati pubblico da Cloud Storage a BigQuery.
  3. Pulisci i dati da una tabella BigQuery e scrivili in una nuova tabella BigQuery.
  4. Creare caratteristiche basate sui dati in una tabella BigQuery e scriverle in un'altra tabella BigQuery.
  5. Se il modello è una rete neurale profonda (DNN), suddividi i dati in un set di addestramento e di valutazione all'interno di BigQuery.
  6. Esporta i set di dati in Cloud Storage e rendili disponibili su AI Platform.
  7. Fai in modo che AI Platform addestra periodicamente il modello.
  8. Eseguire il deployment del modello aggiornato su AI Platform.
  9. Esegui periodicamente una previsione batch su 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 diretti aciclici per questa soluzione

Questa soluzione utilizza due DAG. Il primo DAG copre i passaggi da 1 a 8 della sequenza elencata 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 riassumi i passaggi da 1 a 8 dei passaggi del DAG di Airflow.

Flusso di flusso d'aria che mostra i passaggi da 1 a 8 del processo

Il secondo DAG copre 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 DAG di Airflow.

Flusso di flusso d'aria che mostra i passaggi 9 e 10 del processo

I DAG sono separati perché le previsioni e l'addestramento potrebbero avvenire in modo indipendente e in base a una pianificazione diversa. Ad esempio, potresti:

  • Prevedi i dati ogni giorno per i clienti nuovi o esistenti.
  • Reimposta il modello ogni settimana per incorporare nuovi dati o attivalo dopo aver ricevuto un numero specifico di nuove transazioni.

Per attivare manualmente il primo DAG, puoi eseguire il comando dalla sezione Esegui Dag del file README in Cloud Shell o utilizzando l'interfaccia alla gcloud CLI.

Il parametro conf trasmette le variabili a diverse parti dell'automazione. Ad esempio, nella seguente query SQL utilizzata per estrarre le 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 maggiori dettagli, consulta il file README nel repository GitHub.

Passaggi successivi

  • Esegui l'esempio completo nel repository di GitHub.
  • Incorpora nuove funzionalità nel modello CLV utilizzando alcuni dei seguenti elementi:
    • Dati di clickstream, che possono aiutarti a prevedere il CLV per i clienti per i quali non disponi di dati storici.
    • Reparti e categorie di prodotto che possono aggiungere un contesto extra e aiutare la rete neurale.
    • Nuove funzionalità create con gli stessi input usati in questa soluzione. Ad esempio, le tendenze di vendita delle ultime settimane o dei mesi precedenti la data di soglia.
  • Leggi la Parte 4: utilizzare AutoML Tables per il modello.
  • Scopri altre soluzioni di previsione predittiva.
  • Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Visita il nostro Cloud Architecture Center.