IA causale, esplorando l'integrazione del ragionamento causale nell'apprendimento automatico

fotografato da Melanie Deziel SU Unsplash

Benvenuti nella mia serie sull'intelligenza artificiale causale, in cui esploreremo l'integrazione del ragionamento causale nei modelli di apprendimento automatico. Aspettatevi di esplorare una serie di applicazioni pratiche in diversi contesti aziendali.

Nell'ultimo articolo abbiamo trattato ottimizzare gli effetti del trattamento non lineare nei prezzi e nelle promozioni. Questa volta copriremo misurare l'influenza causale intrinseca delle tue campagne di marketing.

Se ti sei perso l'ultimo articolo sugli effetti del trattamento non lineare nei prezzi e nelle promozioni, dai un'occhiata qui:

In questo articolo ti aiuterò a capire come misurare l'influenza causale intrinseca delle tue campagne di marketing.

Verranno trattati i seguenti aspetti:

  • Quali sono le sfide quando si tratta di misurazione del marketing?
  • Cos’è l’influenza causale intrinseca e come funziona?
  • Un caso di studio in Python che mostra come possiamo utilizzare l'influenza causale intrinseca per dare alle campagne di marketing il credito che meritano.

Il quaderno completo lo trovate qui:

Quali sono i diversi tipi di campagne di marketing?

Le organizzazioni utilizzano il marketing per far crescere la propria attività acquisendo nuovi clienti e fidelizzando quelli esistenti. Le campagne di marketing sono spesso suddivise in 3 categorie principali:

  • Marca
  • Prestazione
  • Ritenzione

Ognuno ha le proprie sfide uniche quando si tratta di misurazione: comprendere queste sfide è fondamentale.

Campagne di marca

Lo scopo delle campagne di marca è aumentare la notorietà del tuo marchio presso un nuovo pubblico. Vengono spesso trasmessi in TV e sui social media, questi ultimi spesso sotto forma di video. Di solito non hanno un invito all'azione diretto, ad esempio “il nostro prodotto ti durerà tutta la vita”.

La sfida con la misurazione della TV è immediatamente evidente: non possiamo tenere traccia di chi ha visto uno spot televisivo! Ma affrontiamo sfide simili anche quando si tratta di social media: se guardo un video su Facebook e poi visito organicamente il sito web e acquisto il prodotto il giorno successivo, è molto improbabile che riusciremo a collegare insieme questi due eventi.

C'è anche una sfida secondaria di un effetto ritardato. Quando si sensibilizza un nuovo pubblico, potrebbero essere necessari giorni/settimane/mesi prima che arrivino al punto in cui prendono in considerazione l'acquisto del tuo prodotto.

Esiste un argomento discutibile secondo cui le campagne di marca fanno tutto il lavoro duro. Tuttavia, quando si tratta di misurazioni di marketing, spesso vengono sottovalutate a causa di alcune delle sfide che abbiamo evidenziato sopra.

Campagne di performance

In generale, le campagne basate sul rendimento sono rivolte ai clienti presenti nel mercato del tuo prodotto. Funzionano attraverso ricerche a pagamento, canali social e di affiliazione. Di solito hanno un invito all'azione, ad esempio “fai clic ora per ottenere uno sconto del 5% sul tuo primo acquisto”.

Quando si tratta di campagne basate sulla performance, non è immediatamente ovvio il motivo per cui sono difficili da misurare. È molto probabile che saremo in grado di collegare l'evento in cui un cliente fa clic su una campagna a performance e il cliente effettua l'acquisto quel giorno.

Ma avrebbero cliccato se non avessero già familiarità con il marchio? Come hanno conosciuto il marchio? Se non avessimo mostrato loro la campagna, avrebbero comunque acquistato in modo organico? Queste sono domande difficili a cui rispondere dal punto di vista della scienza dei dati!

Campagne di fidelizzazione

L'altra categoria di campagne è la fidelizzazione. Questo è il marketing mirato a fidelizzare i clienti esistenti. Di solito possiamo eseguire test AB per misurare queste campagne.

Grafico del marketing di acquisizione

È comune riferirsi alle campagne di brand e performance come marketing di acquisizione. Come ho accennato in precedenza, è difficile misurare le campagne di marca e di performance: spesso sottovalutiamo le campagne di brand e sopravvalutiamo le campagne di performance.

Il grafico seguente è un esempio motivante (ma semplificato) di come funziona il marketing di acquisizione:

Immagine generata dall'utente

Come possiamo (equamente) stimare quanto ciascun nodo ha contribuito alle entrate? È qui che entra in gioco l'influenza causale intrinseca: tuffiamoci in ciò che è nella prossima sezione!

Da dove viene il concetto?

Il concetto è stato originariamente proposto in un documento nel 2020:

È implementato nel modulo GCM all'interno del pacchetto Python Do Why:

Personalmente inizialmente ho trovato il concetto piuttosto difficile da comprendere, quindi nella sezione successiva analizzeremolo passo dopo passo.

Riepilogo sui grafici causali

Prima di provare a comprendere l'influenza causale intrinseca, è importante comprendere i grafici causali, i modelli causali strutturali (SCM) e i modelli di rumore additivo (ANM). Il mio articolo precedente nella serie dovrebbe aiutarti ad aggiornarti:

Come promemoria, ciascun nodo in un grafico causale può essere visto come l'obiettivo in un modello in cui i suoi genitori diretti vengono utilizzati come funzionalità. È comune utilizzare un modello di rumore additivo per ciascun nodo non radice:

Immagine generata dall'utente

Cos’è veramente l’influenza causale intrinseca?

Ora che abbiamo ricapitolato i grafici causali, iniziamo a capire cos'è realmente l'influenza causale intrinseca…

La definizione del dizionario di intrinseco è “appartenenza naturale”. Nella mia testa penso a un imbuto e le cose in cima all'imbuto stanno facendo il lavoro pesante: vogliamo attribuire loro l'influenza causale che meritano.

Prendiamo il grafico di esempio qui sotto per aiutarci a iniziare a individuare ulteriormente l'influenza causale intrinseca:

Immagine generata dall'utente
  • A, B e C sono nodi radice.
  • D è un nodo non radice, che possiamo modellare utilizzando i suoi genitori diretti (A, B, C) e un termine rumore.
  • E è un nodo non radice, che, analogamente a D, possiamo modellare utilizzando i suoi genitori diretti (A, B, C) e un termine rumore.
  • F è il nostro nodo target, che possiamo modellare utilizzando i suoi genitori diretti (D, E) e un termine rumore.

Concentriamoci sul nodo D. Eredita parte della sua influenza sul nodo F dai nodi A, B e C. La parte intrinseca della sua influenza sul nodo F deriva dal termine rumore. Pertanto stiamo dicendo che il termine di rumore di ciascun nodo può essere utilizzato per stimare l'influenza causale intrinseca su un nodo target. Vale la pena notare che i nodi radice sono costituiti solo da rumore.

Nel caso di studio, approfondiremo esattamente come calcolare l'influenza causale intrinseca.

Come può aiutarci a misurare le nostre campagne di marketing?

Si spera che tu possa già vedere il collegamento tra l'esempio del marketing di acquisizione e l'influenza causale intrinseca: l'influenza causale intrinseca può aiutarci a smettere di sottovalutare le campagne di marca e a smettere di sopravvalutare le campagne di performance? Scopriamolo nel case study!

Sfondo

Si sta avvicinando la fine dell'anno e il Direttore del marketing sta subendo pressioni da parte del team finanziario per giustificare il motivo per cui intende spendere così tanto in marketing l'anno prossimo. Il team finanziario utilizza un modello dell'ultimo clic in cui le entrate vengono attribuite all'ultima cosa su cui un cliente ha fatto clic. Si chiedono perché debbano spendere qualcosa in TV quando tutti arrivano attraverso canali organici o social!

Il team di Data Science ha il compito di stimare l'influenza causale intrinseca di ciascun canale di marketing.

Impostazione del grafico (DAG)

Iniziamo configurando un DAG utilizzando la conoscenza del dominio da parte di esperti, riutilizzando l'esempio di acquisizione di marketing di prima:

# Create node lookup for channels
node_lookup = {0: 'Demand',
1: 'TV spend',
2: 'Social spend',
3: 'Organic clicks',
4: 'Social clicks',
5: 'Revenue'
}

total_nodes = len(node_lookup)

# Create adjacency matrix - this is the base for our graph
graph_actual = np.zeros((total_nodes, total_nodes))

# Create graph using expert domain knowledge
graph_actual(0, 3) = 1.0 # Demand -> Organic clicks
graph_actual(0, 4) = 1.0 # Demand -> Social clicks
graph_actual(1, 3) = 1.0 # Brand spend -> Organic clicks
graph_actual(2, 3) = 1.0 # Social spend -> Organic clicks
graph_actual(1, 4) = 1.0 # Brand spend -> Social clicks
graph_actual(2, 4) = 1.0 # Social spend -> Social clicks
graph_actual(3, 5) = 1.0 # Organic clicks -> Revenue
graph_actual(4, 5) = 1.0 # Social clicks -> Revenue

In sostanza, il modello dell'ultimo clic utilizzato dal team finanziario utilizza solo i genitori diretti delle entrate per misurare il marketing.

Immagine generata dall'utente

Processo di generazione dei dati

Creiamo alcuni campioni di dati seguendo il processo di generazione dei dati del DAG:

  • 3 nodi radice costituiti da termini rumore; Domanda, spesa per il brand e spesa sociale.
  • 2 nodi non radice, entrambi ereditano l'influenza dai 3 nodi radice più alcuni termini di rumore; Clic organici, clic social.
  • 1 nodo target, che eredita l'influenza dai 2 nodi non radice più un termine rumore; Reddito
# Create dataframe with 1 column per code
df = pd.DataFrame(columns=node_lookup.values())

# Setup data generating process
df(node_lookup(0)) = np.random.normal(100000, 25000, size=(20000)) # Demand
df(node_lookup(1)) = np.random.normal(100000, 20000, size=(20000)) # Brand spend
df(node_lookup(2)) = np.random.normal(100000, 25000, size=(20000)) # Social spend
df(node_lookup(3)) = 0.75 * df(node_lookup(0)) + 0.50 * df(node_lookup(1)) + 0.25 * df(node_lookup(2)) + np.random.normal(loc=0, scale=2000, size=20000) # Organic clicks
df(node_lookup(4)) = 0.30 * df(node_lookup(0)) + 0.50 * df(node_lookup(1)) + 0.70 * df(node_lookup(2)) + np.random.normal(100000, 25000, size=(20000)) # Social clicks
df(node_lookup(5)) = df(node_lookup(3)) + df(node_lookup(4)) + np.random.normal(loc=0, scale=2000, size=20000) # Revenue

Formazione dell'SCM

Ora possiamo addestrare l'SCM utilizzando il modulo GCM dal pacchetto Python Do Why. Impostiamo il processo di generazione dei dati con relazioni lineari, pertanto possiamo utilizzare la regressione della cresta come meccanismo causale per ciascun nodo non radice:

# Setup graph
graph = nx.from_numpy_array(graph_actual, create_using=nx.DiGraph)
graph = nx.relabel_nodes(graph, node_lookup)

# Create SCM
causal_model = gcm.InvertibleStructuralCausalModel(graph)

causal_model.set_causal_mechanism('Demand', gcm.EmpiricalDistribution()) # Deamnd
causal_model.set_causal_mechanism('TV spend', gcm.EmpiricalDistribution()) # Brand spend
causal_model.set_causal_mechanism('Social spend', gcm.EmpiricalDistribution()) # Social spend

causal_model.set_causal_mechanism('Organic clicks', gcm.AdditiveNoiseModel(gcm.ml.create_ridge_regressor())) # Organic clicks
causal_model.set_causal_mechanism('Social clicks', gcm.AdditiveNoiseModel(gcm.ml.create_ridge_regressor())) # Social clicks
causal_model.set_causal_mechanism('Revenue', gcm.AdditiveNoiseModel(gcm.ml.create_ridge_regressor())) # Revenue

gcm.fit(causal_model, df)

Influenza causale intrinseca

Possiamo facilmente calcolare l'influenza causale intrinseca utilizzando il modulo GCM. Lo facciamo e convertiamo i contributi in percentuali:

# calculate intrinsic causal influence
ici = gcm.intrinsic_causal_influence(causal_model, target_node='Revenue')

def convert_to_percentage(value_dictionary):
total_absolute_sum = np.sum((abs(v) for v in value_dictionary.values()))
return {k: round(abs(v) / total_absolute_sum * 100, 1) for k, v in value_dictionary.items()}

convert_to_percentage(ici)

Immagine generata dall'utente

Mostriamoli su un grafico a barre:

# Convert dictionary to DataFrame
df = pd.DataFrame(list(ici.items()), columns=('Node', 'Intrinsic Causal Influence'))

# Create a bar plot
plt.figure(figsize=(10, 6))
sns.barplot(x='Node', y='Intrinsic Causal Influence', data=df)

# Rotate x labels for better readability
plt.xticks(rotation=45)
plt.title('Bar Plot from Dictionary Data')
plt.show()

Immagine generata dall'utente

I nostri risultati sono intuitivi? Se dai uno sguardo al codice del processo di generazione dei dati vedrai che lo sono! Prestare molta attenzione a ciò che eredita ciascun nodo non root e a quale rumore aggiuntivo viene aggiunto.

Il modulo dell'influenza causale intrinseca è davvero facile da usare, ma non ci aiuta a comprendere il metodo alla base: per finire, esploriamo il funzionamento interno dell'influenza causale intrinseca!

Influenza causale intrinseca: come funziona?

Vogliamo stimare quanto il termine rumore di ciascun nodo contribuisce al nodo target:

  • Vale la pena ricordare che i nodi radice sono costituiti semplicemente da un termine rumore.
  • Nei nodi non radice separiamo il termine rumore da ciò che è stato ereditato dai genitori.
  • Includiamo anche il termine rumore proveniente dal nodo target: questo potrebbe essere interpretato come il contributo di fattori confondenti non osservati (anche se potrebbe anche dipendere da una specifica errata del modello).
  • I termini di rumore vengono quindi utilizzati per spiegare la varianza nel nodo di destinazione: questo può essere visto come un modello con i termini di rumore come caratteristiche e il nodo di destinazione come risultato.
  • Il modello viene utilizzato per stimare la distribuzione condizionale del nodo target dati sottoinsiemi di variabili di rumore.
  • Shapley viene quindi utilizzato per stimare il contributo di ciascun termine di rumore: se la modifica del termine di rumore ha un impatto minimo sull'obiettivo, l'influenza causale intrinseca sarà molto piccola.

Oggi abbiamo spiegato come stimare l'influenza causale intrinseca delle tue campagne di marketing. Ecco alcuni pensieri conclusivi:

  • L'influenza causale intrinseca è un concetto potente che potrebbe essere applicato a diversi casi d'uso, non solo al marketing.
  • Comprendere il funzionamento interno ti aiuterà ad applicarlo in modo più efficace.
  • Identificare il DAG e stimare accuratamente il grafico è fondamentale per ottenere stime ragionevoli dell'influenza causale intrinseca.
  • Nell'esempio dell'acquisizione di marketing, potresti prendere in considerazione l'aggiunta di effetti ritardati per il marketing del marchio.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *