Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Marketing CLV


Il valore economico del Cliente

💡 Cos'è il CLV nel Marketing

Il Customer Lifetime Value (CLV) è una metrica che rappresenta il valore economico totale che un cliente genera per un’azienda durante l’intera relazione commerciale.

Formula base del CLV

Una versione semplificata della formula del CLV è:

      
CLV = Valore Medio Ordine × Frequenza Acquisto × Durata della Relazione
      
    

Esempio:
Valore medio ordine = 100
Frequenza annua = 5
Durata relazione = 3 anni
CLV = 100 × 5 × 3 = 1500

✅ Perché il CLV è Cruciale nel Marketing

Calcolare e prevedere il CLV aiuta a:

  • Identificare i clienti più redditizi
  • Ottimizzare i budget pubblicitari
  • Misurare la redditività a lungo termine
  • Stabilire un costo di acquisizione cliente sostenibile
  • Migliorare le strategie di fidelizzazione

🔍 Prevedere il CLV con Python e Random Forest

Di seguito un esempio pratico di come prevedere il CLV utilizzando Python e Random Forest, un algoritmo non lineare molto efficace.

Dataset simulato

Supponiamo di avere un file CSV clv_dataset.csv con le seguenti colonne:

Colonna Descrizione
cliente_idID del cliente
total_spentSpesa totale
num_transactionsNumero di transazioni
recency_daysGiorni dall'ultimo acquisto
clvValore vita cliente (target)
Modello Python
      
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv("clv_dataset.csv")

df = df.dropna(subset=['clv', 'total_spent', 'num_transactions', 'recency_days'])
df['avg_order_value'] = df['total_spent'] / df['num_transactions']
df['recency_freq_ratio'] = df['recency_days'] / (df['num_transactions'] + 1e-5)

features = ['avg_order_value', 'num_transactions', 'recency_days', 'recency_freq_ratio']
X = df[features]
y = df['clv']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"MSE: {mse:.2f}, R²: {r2:.2f}")
      
    
Visualizzazione Risultati
      
importances = model.feature_importances_
importance_df = pd.DataFrame({
  'Feature': features,
  'Importanza': importances
}).sort_values(by='Importanza', ascending=False)

plt.figure(figsize=(14, 5))

plt.subplot(1, 2, 1)
sns.scatterplot(x=y_test, y=y_pred, alpha=0.5)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--')
plt.xlabel("CLV Reale")
plt.ylabel("CLV Predetto")
plt.title("Random Forest - CLV Reale vs Predetto")

plt.subplot(1, 2, 2)
sns.barplot(x="Importanza", y="Feature", data=importance_df)
plt.title("Importanza delle Variabili Predittive")

plt.tight_layout()
plt.show()
      
    

📈 Interpretazione dei Risultati

Alcuni indicatori chiave per valutare il modello:

  • MSE basso indica errore medio quadratico ridotto
  • R² alto mostra una buona capacità predittiva
  • Importanza delle variabili per identificare le feature decisive

🔄 Come Migliorare il Modello

  • Aggiungere variabili demografiche o comportamentali
  • Trasformare le variabili skewed (log)
  • Ottimizzare gli iperparametri con GridSearchCV
  • Provare altri modelli: XGBoost, LightGBM

⛽ Conclusione

Il CLV nel marketing è una metrica fondamentale per ottimizzare il ROI, identificare i clienti più preziosi e pianificare strategie di fidelizzazione efficaci.

Usare un modello come Random Forest in Python permette previsioni affidabili e insights utili per guidare le decisioni aziendali.

Risorse consigliate