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 di quattro articoli che illustrano come puoi prevedere il lifetime value cliente (CLV) utilizzando AI Platform (AI Platform) su Google Cloud.

Gli articoli di questa serie sono i seguenti:

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

Installazione del codice

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

  1. Se hai gcloud CLI installato, 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 di 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 e implementare i 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 questi passaggi.

Nell'ambito delle istruzioni di installazione, imposti le variabili per come descritto in sezione di configurazione del file README.

Modifica la variabile REGION in modo che corrisponda alla regione di Google Cloud geograficamente più vicino 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 di preparazione, addestramento e pubblicazione 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 in modo da essere utilizzabili dai modelli.
  • Addestramento dei modelli: i modelli vengono creati, addestrati e ottimizzati in modo da poter essere utilizzate per eseguire le previsioni.
  • Gestione delle previsioni: le previsioni offline vengono archiviate e rese disponibili a bassa latenza.
  • Automazione: tutte queste attività vengono eseguite e gestite tramite con Cloud Composer.

Importazione dei dati

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

Preparazione dei dati

Per preparare i dati, esegui query su BigQuery come quelle mostrato nella Parte 2. di questa serie. In un'architettura di produzione, esegui le query nell'ambito di un grafo aciclico diretto (DAG) di Apache Airflow. La sezione sull'automazione più avanti in questo documento. Fornisce ulteriori dettagli sull'esecuzione di query per la preparazione dei dati.

Addestramento del modello su AI Platform

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

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

  • Puoi eseguirlo localmente o nel cloud in un ambiente distribuito.
  • Offre connettività integrata ad altri prodotti Google, come di archiviazione ideale in Cloud Storage.
  • Puoi eseguirlo usando pochi comandi.
  • Semplifica l'ottimizzazione degli iperparametri.
  • Si adatta con modifiche minime all'infrastruttura, se presenti.

Affinché AI Platform possa addestrare e valutare un modello, devi fornire set di dati di addestramento, valutazione e test. Puoi creare i set di dati che eseguono query SQL come quelle mostrate nella Parte 2 di questa serie. Quindi esporterai e quei set di dati, dalle tabelle BigQuery a Cloud Storage. Nella nell'architettura di produzione descritta in questo articolo, le query vengono eseguite da un DAG Airflow, descritto più dettagliatamente nella sezione Automation 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. Tuttavia, creare le previsioni è diverso dal pubblicarle. In questo contesto del CLV, eventi come un cliente che accede a un sito web o visita un negozio di vendita al dettaglio non incideranno drasticamente sul lifetime value del cliente. Pertanto, è possibile fare previsioni anche se è necessario presentare i risultati 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-elaborate in modo diverso, le previsioni potrebbero essere meno accurate. Questo noto come disallineamento addestramento/distribuzione.
  • Puoi usare gli stessi strumenti per preparare i dati per l'addestramento 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 effettuare previsioni offline utilizzando un job batch. Per le previsioni, AI Platform semplifica attività come:

  • 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 file archiviati in Cloud Storage sia per l'input che per 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 di output della previsione è definito in un EstimatorSpec restituito dalla funzione del modello Estimator 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)

Utilizzare le previsioni

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

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

Dati e 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 di solito arrivano dagli strumenti di gestione dei rapporti con i clienti (CRM), ma le informazioni può avere altre origini, ad esempio Google Analytics 360

Dovresti usare BigQuery se vuoi svolgere uno di le seguenti attività:

  • Memorizzazione di dati strutturati provenienti da molte origini.
  • Trasferimento automatico di dati da strumenti SaaS comuni come Google Analytics 360, YouTube o AdWords.
  • Eseguire query ad hoc, incluse unioni su terabyte di dati dei clienti.
  • Visualizzazione dei dati utilizzando strumenti di business intelligence leader del settore.

Oltre al suo ruolo di motore di query e archiviazione gestito, BigQuery può eseguire algoritmi di machine learning direttamente utilizzando BigQuery ML. Caricando il valore del CLV di ciascun cliente in BigQuery, puoi consente agli analisti di dati, ai data scientist e ai data engineer di sfruttare metriche aggiuntive le loro attività. Il DAG Airflow discusso nella prossima sezione include un'attività per per caricare le previsioni del 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 ottenere ai dati al momento giusto e tempestivamente.

L'archiviazione della previsione offline per la pubblicazione in tempo reale significa che le azioni le richieste dei clienti non cambiano subito il CLV. Tuttavia, ottenere l'accesso perché il CLV è rapidamente importante. Ad esempio, la tua azienda potrebbe voler reagire rapidamente quando un cliente usa il tuo sito web, pone una domanda all'helpdesk o effettua il pagamento tramite il tuo point of sale. In questi casi, una risposta rapida può migliorare il rapporto con i clienti. Pertanto, archiviare l'output della previsione in un database veloce e rendere disponibili query sicure per il frontend sono fattori 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 accesso rapido ai dati utilizzando una chiave (ID cliente), ma consente anche query SQL.
  • È accessibile tramite un'API REST.
  • È pronto per l'uso, il che significa che non è necessario alcun sovraccarico di configurazione.
  • Scalabilità automatica.

Poiché non è possibile caricare direttamente un set di dati CSV Datastore. In questa soluzione utilizziamo Apache Beam Dialogflow con un modello JavaScript per caricare le previsioni del CLV. in Datastore. Il seguente snippet di codice dalla libreria 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 come interagire con essi, ad esempio:

Automatizzare la soluzione

Segui i passaggi descritti finora per iniziare a utilizzare i dati in per eseguire le prime fasi di pre-elaborazione, addestramento e previsione. Ma i tuoi non è ancora pronta per la produzione, perché hai ancora bisogno dell'automazione e e la gestione degli errori.

Alcuni script possono contribuire a unire i passaggi. Tuttavia, è buona prassi automatizzare i passaggi utilizzando un gestore dei flussi di lavoro. Apache Airflow è uno strumento molto diffuso per la gestione dei flussi di lavoro e puoi utilizzare Cloud Composer per eseguire una pipeline Airflow gestita su Google Cloud.

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

  1. Creare set di dati BigQuery.
  2. Carica il set di dati pubblico da Cloud Storage in BigQuery.
  3. Pulisci i dati di una tabella BigQuery e scrivili in una nuova tabella BigQuery.
  4. Crea elementi in base ai dati di una tabella BigQuery e scrivili in un'altra tabella BigQuery.
  5. Se il modello è una rete neurale profonda (DNN), suddividi i dati in un set di addestramento e un set di valutazione in BigQuery.
  6. Esporta i set di dati in Cloud Storage e rendili disponibili per la piattaforma AI.
  7. Fai addestrare periodicamente il modello ad AI Platform.
  8. Esegui il deployment del modello aggiornato in AI Platform.
  9. Eseguire 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 Repository GitHub README.

Grafici aciclici diretti per questa soluzione

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

Flusso dell'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 Airflow che mostra i passaggi 9 e 10 del processo

I DAG sono separati perché potrebbero verificarsi previsioni e addestramento in modo indipendente e con una programmazione diversa. Ad esempio, potresti eseguire le seguenti operazioni:

  • Prevedere i dati giornalieri per i clienti nuovi o esistenti.
  • Riaddestra il modello settimanalmente per incorporare nuovi dati o attivalo dopo la ricezione di un numero specifico di nuove transazioni.

Per attivare manualmente il primo DAG, puoi eseguire il comando dalla Dag corri del file README in Cloud Shell o utilizzando con gcloud CLI.

Il parametro conf passa le variabili a diverse parti dell'automazione. Ad esempio, nella seguente query SQL utilizzata per estrarre i componenti dai dati pulizia, 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 GitHub.
  • Incorpora nuove funzionalità nel modello CLV utilizzando alcune delle seguenti opzioni:
    • Dati relativi ai flussi di clic, che possono aiutarti a prevedere il CLV per i clienti per per i quali non disponi di dati storici.
    • Dipartimenti e categorie di prodotti che possono aggiungere un contesto aggiuntivo e che potrebbero essere utili alla rete neurale.
    • Le nuove caratteristiche che crei utilizzando gli stessi input usati in questa soluzione. Ad esempio, le tendenze di vendita per le ultime settimane o mesi prima della data di soglia.
  • Leggi la Parte 4: utilizzare AutoML Tables per il modello.
  • Scopri altre soluzioni di previsione predittiva.
  • Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.