Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
CUMULATIVE GAIN
Partiamo dall’assunzione di classificazione binaria, che abbia come oggetto i clienti di una campagna
promozionale di marketing, assocerò 1 ad i clienti a cui deve essere inviato il messaggio pubblicitario
e 0 a quelli a cui non deve essere inviato.
L’azienda ha un totale di 1mln di clienti (dimensione del database) e rifacendosi sui risultati di una
campagna precedente la proporzione di clienti che si aspetta mediamente possa rispondere
positivamente accettando l’offerta sarà il 2%.
Quindi i messaggi della campagna pubblicitaria devono essere inviati ad un campione sul totale dei
clienti quando porto avanti una campagna pubblicitaria devo andare a selezionare una quota
parte di clienti, infatti se so che solo il 2% del totale (1 mln di clienti) risponderà positivamente alla
campagna, l’opzione migliore sarà individuare quel 2% di clienti ed inviare solo a loro l’offerta invece
che inviare il messaggio pubblicitario a tutto il database dei clienti. Così facendo ridurrò il numero di
comunicazioni/mail inviate agli utenti che non sono predisposti ad accettare l’offerta.
L’obiettivo che posso dunque pormi è individuare quel 2% di utenti senza spammare la mail di
offerta a tutto il milione affrontando dunque costi più elevati.
Se non utilizzo un modello di classificazione dovrò inviare l’offerta ad un milione di utenti ottenendo
solo il 2% di risposte...se invece faccio una classificazione (ossia cerco di individuare tra il mln di
clienti chi ha il valore 1 e chi ha il valore 0, ossia, chi accetta l’offerta e chi no) cerco individuare
direttamente quel 2% (ossia quelli che identifico come 1).
Dunque, cosa posso fare?
Prendo atto delle osservazioni passate, scelgo un modello (algoritmo), lo mando in run e ottengo il
risultato in termini di lista di clienti che identifico come 1 o 0. Ossia, ho una lista di clienti che
prevedo accetteranno l’offerta.
Una volta ottenuti i risultati posso tracciare una curva di questo tipo:
-sulle y avrò il tasso percentuale di risposte positive
-sulle x avrò i percentile dei clienti
Come traccio la curva?
Assumiamo di essere arrivati ad una lista di clienti che prevedo possano accettare l’offerta, vado a
classificare tali clienti dal primo (è quello con la più alta probabilità di accettare l’offerta, l’algoritmo
prevede che tale cliente la accetterà al 100%) all’ultimo (è quello che certamente non accetterà
l’offerta, 0% di probabilità).
Il risultato di una classificazione è dunque una lista di utenti, per ogni utente avrò “prevedo che
accetta” o “prevedo che non accetta” con in molti casi una probabilità associata. Quello che posso
fare con i risultati è metterli in ordine decrescente da quello con la probabilità più alta di accettare
l’offerta a quello con la probabilità più bassa.
Dopo aver strutturato questa classifica posso prendere il primo 10% di clienti (il primo percentile) e
vedere quanti di questi accettano l’offerta. Inizio dunque a prendere il primo 10% di clienti che
l’algoritmo ha predetto avere la maggiore probabilità di accettare l’offerta e vado a misurare quanti
di questi accetteranno l’offerta.
Ad esempio, posso dire che del primo 10% di clienti avrò un tasso di risposte positive vicino al 20%.
In altre parole, dopo aver messo in ordine decrescente i clienti, prendo il primo 10% della lista (che
saranno quelli che più probabilmente accetteranno)a questo 10% lancio l’offerta e vedo quanti
rispondono (rispondono quasi il 30%). Proseguo poi prendendo il successivo 10% di clienti, noto che
rispondono un’altra percentuale di clienti (che cumulata con le precedenti risposte positive mi fa
arrivare al quasi 50%)questo sino ad arrivare al campione completo 100% (ossia il numero
complessivo di clienti nel dataset scelto come 2% del milione) del quale misuro il rate di risposte
positive.
Ciascun punto mi dice qual è il tasso di risposte positive associato ad una specifica % di clienti.
L’aspettativa è di ottenere una il più lontana possibile dalla diagonale che collega A e B. La diagonale
è una classificazione casuale che associa a ciascun percentile lo stesso tasso di risposte
positiveossia è un caso in cui non applico il modello di classificazione e dico in maniera casuale se i
clienti di quel percentile risponderanno o meno.
Più la curva è lontana dalla diagonale, migliori sono i miei risultati e dunque il mio modello (la
diagonale rappresenta il lancio della monetina con la quale randomicamente assegno ad un utente il
valore 1 o il valore 0). Dunque, più la curva è lontana dalla diagonale più il classificatore è stato bravo
nel trovare direttamente il mio 2% di clienti, tale curva è un metodo di valutazione ex-post
dell’algoritmo (ossia è una valutazione che posso fare dopo che ho lanciato l’algoritmo ed ho
ottenuto dei risultati). Tanto più è alta dunque la % in ordinata associata al percentile tanto più è
bravo il classificatore, poiché significa che i primi nella lista che ha messo il classificatore (ossia i
primi percentili), sono poi quelli che veramente hanno acquistato portandomi ad un’impennata della
curva. Questo perché i percentili li ottengo mettendo i clienti in ordine di probabilità di acquisto
calcolata utilizzando i classificatori (ossia metto prima tutti quelli classificati con 1 e poi quelli con 0,
a loro volta quelli con 1 avranno una score function associatametterò dunque ai primi posti quelli
che acquistano al 100% ecco perché i primi percentili mi danno un’impennata della curva).
Il fatto di aver messo in ordine decrescente in base alla percentuale di risposte positive è il motivo
per cui la curva è molto inclinata all’inizio e poi si appiattisce, infatti il primo percentile conterrà i
clienti con la probabilità maggiore di accettaredunque se voglio beccare l’80% (del 2% di risposte
positive che mi attendo) di risposte positive mi basterà contattare soltanto il primo 40% della mia
lista di clienti (anziché contattarne 1mln). È inutile a questo punto contattare il restane 60% dei
clienti per incrementare soltanto del 20% il numero di risposte positive.
Così facendo riduco il numero di mail che devo inviare per ricevere il mio 2% atteso di risposte
positive (n.b. nel grafico il 100% di risposte positive in ordinata corrisponde al 2% di un milione).
n.b. quando parlo di costo del contatto mi riferisco sia al costo monetario (che nel caso della mail è
nullo, ma per altre forme pubblicitarie non è così) sia al costo intangibile. Avrò un costo intangibile
nel momento in cui invio la mail al cliente sbagliato e quest’ultimo si cancellain media il costo per
riacquisire/convincere un cliente che si è cancellato dal servizio (ha abbandonato la nostra azienda) è
6 volte quello iniziale (per convincerlo la prima volta).
LIFT CURVE
È un’altra opzione, in cui per ciascun valore sull’asse orizzontale (in cui ho sempre i percentili) avrò il
rapporto tra la proporzione di risposte positive ottenute dallo score generato dal classificatore e la
proporzione di risposte positive ottenute da una classificazione randomica.
È dunque, un’altra rappresentazione della Cumulative gain Chart.
Come la costruisco?
Assumiamo di far partire l’algoritmo (classifier), avrò come mostrato in tabella su 100000 clienti
contattati un numero di risposte positive pari a 5800questa è dunque la prima associazione tra
numero di clienti contattati e numero di risposte positive usando il classificatore. Non ho fatto altro
che contattare il primo 10% della mia lista dei clienti messi in ordine decrescente. Così proseguendo
con il secondo percentile se contatto 200000 clienti le risposte positive saranno 10500 (quelle nette
del secondo percentile di fatto sono 10500-5800 = 4700, come mi aspettavo sono meno di quelle del
percentile precedente).
N.B. Quelle in tabella sono dunque le performance del classificatore.
Adesso vado a rapportare tali performance con quelle randomiche, quindi se so che il tasso di
risposta globale atteso è del 2% e contatto 100000 clienti, le risposte positive senza il classifier
saranno proprio 100000*0,2.
Dunque, ciascun punto sarà costruito usando tale equazione: (numero di risposte ottenute usando il
classificatore/numero di clienti contattati con il classificatore) / (numero di risposte positive che mi
aspetto senza l’utilizzo del classificatore/numero di contatti che ho senza il classificatore).
Più elevato è il rapporto tra questi due valori (valore di “Lift”) migliore è il classificatore.
Quello che faccio è contattare 100000 persone dalla mia lista ordinata e vedo che con il classificatore
hanno risposto positivamente 5800. Se invece ne contatto 100000 casualmente, mi aspetto che mi
rispondano il 2% di 100000Faccio il rapporto fra i due ottengo il valore di Lift da piazzare sul
grafico. Così facendo continuo con gli altri percentili sino a 1000000.
Dunque, nello scegliere l’opzione migliore, andrò a valutare come tale la curva (Cumulative Gain) che
ha l’aria maggiore sottesa alla diagonale, ossia la curva migliore è la più alta.
In alcuni casi può però accadere che il metodo che da origine ad una curva con un elevata aria
sottesa può essere associata ad un basso valore di lift ad un fissato valore di “percentile”. Anche se
un modello da origine ad una Cumulative Gain Chart, migliore di un altro, quando vado a
rappresentare le curve di Lift per i due modelli, può capitare che il modello “peggiore” abbia un
valore di lift più alto associato ad uno specifico percentile fissato. In questo caso è proprio quello che
mi da un valore di lift più alto (per quel fissato valore di percentile) che devo andare a scegliere.
In altre parole, per quei due stessi classificatori, in esame se mi vado a calcolare le curve di lift potrei
avere che ad un dato percentile (fissato valore di percentuale di contatti) il valore di lift della curva
peggiore risulta maggiore del valore di lift della curva migliore. In quel caso è meglio scegliere al quel
fissato valore di lift il metodo che mi da il valore maggiore. Questo può succedere, perché in alcuni
casi ho un vincolo, per esempio la percentuale di contatti (se mi dicono che posso contattare solo il
primo 40% di clienti) in questo caso ho un vincolo in input e vado a vedere la lift curve per
scegliere il modello con il miglior valore di lift a quel percentile di clienti oltre la quale non posso
andare. Cioè prendo le curve di lift dei