Dati e tecnologia

Modelli statistici nel pricing: cosa fanno davvero, in parole comprensibili

Che cosa restituisce ciascuna famiglia di modelli, i tre modi in cui sbagliano nelle strutture ricettive e la tabella di controllo con cui si verifica un modello senza saperlo costruire.

13 min di lettura 2.652 parole

Un modello di previsione non capisce niente della tua struttura. Cerca regolarità fra alcune variabili osservate e un esito già noto, le riassume in una funzione e applica quella funzione a casi nuovi. Nel pricing l’esito è quasi sempre uno di due: quante camere si venderanno per una certa data, oppure quale probabilità ha una prenotazione di essere cancellata. Tutto il resto è ingegneria intorno a queste due domande.

Questo articolo non serve a costruire un modello. Serve a controllarne uno che qualcun altro ha costruito, cosa che un albergatore può fare senza sapere di statistica, purché sappia quali tre domande fare e quale tabella chiedere.

Gli esempi sono costruiti su una struttura ipotetica: un quattro stelle di 120 camere in una città d’arte del nord Italia, aperto tutto l’anno, con un’occupazione media del 72 per cento. Sono 43.800 camere-notte disponibili l’anno, 31.536 vendute, 14.335 prenotazioni soggiornate e una durata media del soggiorno di 2,20 notti. Tutti i numeri che seguono derivano da questi.

Che cosa fa un modello, detto senza gergo#

Prendi una tabella storica in cui ogni riga è una data di soggiorno passata. Alcune colonne descrivono la situazione in un certo momento prima dell’arrivo: giorno della settimana, mese, camere già a bordo, prezzo esposto, giorni all’arrivo, eventi in città. Un’ultima colonna dice come è andata a finire: le camere effettivamente vendute.

Il modello è la procedura che, guardando molte righe passate, produce una regola per riempire l’ultima colonna quando manca. Nient’altro.

P=f(x1,x2,x3)
P = f(x_1, x_2, x_3)
Pesito previsto, per esempio le camere vendute per una datax con indicele variabili osservate al momento della previsione, come giorno della settimana, camere a bordo, giorni all'arrivofla regola trovata sui dati storici
Un modello è soltanto la regola f: cambia il modo di trovarla, non cambia la struttura del problema

Da questa scrittura discendono due conseguenze che vengono dimenticate quasi sempre. La prima: le variabili x devono essere note al momento in cui si fa la previsione, altrimenti la regola funziona solo sul passato. La seconda: la regola vale finché il mondo che l’ha generata resta simile a sé stesso. Entrambe verranno violate, ed è lì che nascono gli errori sistematici.

Le tre famiglie#

Regole scritte da una persona#

Sono del tipo: se mancano meno di sette giorni e l’occupazione è sotto il 60 per cento, abbassa di 15 euro. Non sono un modello statistico, sono una decisione codificata. Hanno un pregio enorme: si leggono, si discutono, si correggono in dieci minuti. Hanno un limite che compare presto: superate le venti regole cominciano a contraddirsi fra loro e nessuno sa più quale ha vinto.

Modelli statistici classici#

Medie mobili, indici di stagionalità, pickup additivo e moltiplicativo, regressione. Stimano pochi parametri su molte osservazioni e restituiscono una previsione con una misura della propria incertezza. Sono trasparenti: si può chiedere quanto pesa il giorno della settimana e ottenere un numero.

Modelli appresi#

Alberi di decisione, foreste, gradient boosting, reti neurali. Non impongono una forma alla relazione: la cercano nei dati. Su molte righe e molte variabili trovano combinazioni che nessuno avrebbe scritto a mano. In cambio non spiegano perché, e sono i più esposti a imparare cose che non esistono.

Famiglia Che cosa le serve Che cosa restituisce Dove si rompe
Regole scritte Una persona che conosce la struttura e mezza giornata di lavoro Una decisione, non una probabilità Quando i casi si moltiplicano e le regole si contraddicono
Statistici classici Due o tre anni di storico pulito, poche variabili Una previsione con un intervallo di incertezza Quando la relazione non è regolare o cambia forma
Appresi Molte righe, molte variabili, qualcuno che sappia validarli Una previsione o una probabilità, senza spiegazione diretta Quando le osservazioni per cella sono poche o le colonne contengono il futuro

Nessuna famiglia è superiore alle altre. La domanda giusta non è quale sia il modello migliore, ma quante osservazioni ha la struttura per ogni situazione che deve prevedere. È un conto che si fa in due minuti.

Primo modo di sbagliare: poche osservazioni per cella#

Un modello prevede per situazioni, non per l’albergo in generale. Una situazione è una combinazione: segmento, giorno della settimana, mese, fascia di anticipo. Ogni combinazione è una cella, e ogni cella ha bisogno delle sue osservazioni.

Con cinque segmenti, sette giorni della settimana e dodici mesi si ottengono 420 celle. Le 14.335 prenotazioni dell’anno danno 34,1 prenotazioni per cella: sufficienti. Ma nessuno prevede senza distinguere l’anticipo, perché una previsione a sessanta giorni e una a tre giorni sono due mestieri diversi. Aggiungendo sei fasce di anticipo le celle diventano 2.520 e le prenotazioni per cella scendono a 5,7. Su tre anni di storico si arriva a 17,1.

Cinque o sei osservazioni non bastano per stimare una media. Si può misurare quanto non bastano. Se in una cella le camere-notte vendute hanno una deviazione standard di 8 e le osservazioni sono 6, l’errore standard della media vale 8÷6=3,27 camere. Con la distribuzione t a 5 gradi di libertà l’intervallo al 95 per cento è di più o meno 8,4 camere: se la media osservata è 24, il valore vero sta fra 15,6 e 32,4.

Un modello che restituisce 24,0 per quella cella non sta dicendo una bugia. Sta dicendo una cosa vera con un’incertezza che nessuno mostra, perché i cruscotti stampano il numero e non l’intervallo.

La conseguenza pratica: più il modello è dettagliato, meno dati ha per ogni dettaglio. Chi chiede al fornitore la previsione per segmento, per tipologia di camera e per fascia di anticipo sta chiedendo di dividere lo stesso storico in migliaia di parti. Il numero arriva sempre. La sua affidabilità no.

Secondo modo di sbagliare: i cambi strutturali#

Il modello presume che il passato e il futuro appartengano allo stesso mondo. Nelle strutture ricettive questa ipotesi salta con una frequenza che sorprende chi arriva da altri settori.

Un esempio misurabile. La struttura chiude un piano da 18 camere per quattro mesi di lavori: la capacità scende da 120 a 102. Un modello addestrato sui livelli storici prevede in media 86,4 camere-notte al giorno, che è il 72 per cento di 120. Con la stessa occupazione, su 102 camere se ne vendono 73,4. La sovrastima è di 13,0 camere al giorno, il 15,0 per cento. Il modello non ha sbagliato a imparare: ha imparato un albergo che in quei mesi non esiste.

La difesa è semplice e quasi mai applicata: far lavorare il modello sul tasso di occupazione, non sul numero di camere, e tenere nello storico una colonna con le camere fisicamente disponibili ogni giorno. Un modello sul tasso sopravvive al cambio di capacità, uno sui livelli no.

Gli altri cambi strutturali tipici sono meno visibili e più insidiosi: un cambio di politica di cancellazione che sposta il mix fra tariffe rimborsabili e non rimborsabili, l’apertura di duecento camere nuove nel quartiere, la chiusura del ristorante che elimina la mezza pensione, l’ingresso in un nuovo canale. Ognuno di questi rende lo storico precedente un’altra cosa. Nessuno di questi genera un messaggio di errore.

Terzo modo di sbagliare: le colonne che contengono il futuro#

È l’errore più grave perché produce risultati magnifici. Se fra le variabili x finisce una colonna che si aggiorna dopo l’evento che si vuole prevedere, il modello impara a leggere il futuro nel passato e i suoi conti tornano perfettamente sullo storico.

Nelle prenotazioni le candidate sono sempre le stesse: lo stato del pagamento, che diventa rimborsato solo se la prenotazione è stata cancellata; il numero di modifiche alla riga, che continua a crescere fino al momento della cancellazione; la commissione effettivamente pagata, che vale zero per tutte le prenotazioni cancellate; la data dell’ultima modifica. Sono i casi discussi per esteso nell’articolo sulle tre colonne che ingannano qualsiasi modello di previsione delle cancellazioni.

La verifica non richiede statistica. Si prende l’elenco delle variabili usate dal modello e per ognuna si fa una sola domanda: questa colonna aveva già questo valore il giorno in cui avrei dovuto fare la previsione. Se la risposta è no, la colonna va tolta. Se il fornitore non sa rispondere, la risposta è no.

Il modello che non sbaglia mai sullo storico

Quando un fornitore mostra una previsione che ricalca il consuntivo passato quasi perfettamente, non è una buona notizia: è la prova che qualcosa non va. Le cause sono due e nessuna delle due è la bravura. O il modello ha visto i dati su cui viene valutato, e allora sta ripetendo a memoria invece di prevedere. Oppure fra le variabili c’è una colonna che si aggiorna dopo l’esito. In tutti e due i casi il comportamento in produzione sarà molto peggiore di quello mostrato, e il divario si scoprirà soltanto dopo qualche mese di decisioni sbagliate. La domanda da fare è una sola e va posta prima della firma: su quali date è stato addestrato e su quali date è stato misurato. Se le due liste si sovrappongono anche solo in parte, la dimostrazione non vale niente.

Come si controlla un modello senza saperlo costruire#

Il controllo non richiede di aprire il modello. Richiede di confrontare quello che il modello diceva con quello che è successo, e di farlo separatamente per orizzonte e per segmento. Le due misure che servono sono l’errore assoluto medio e lo scarto sistematico, e non ne servono altre.

MAE=1ni=1n|PiCi|
MAE = (1) / (n)∑_i=1^n| P_i – C_i |
MAEerrore assoluto medio, in camereP con indice iprevisione per la data iC con indice iconsuntivo per la stessa datannumero di date confrontate
Quanto il modello sbaglia, senza guardare in che direzione

La seconda misura usa la stessa formula senza il valore assoluto, e dice da che parte il modello sbaglia.

B=1ni=1n(PiCi)
B = (1) / (n)∑_i=1^n( P_i – C_i )
Bscarto sistematico, in camereP con indice iprevisione per la data iC con indice iconsuntivo per la stessa datannumero di date confrontate
Se B è negativo il modello sottostima sempre, e una sottostima costante si corregge a mano

Un modello può avere scarto sistematico nullo ed errore assoluto medio altissimo: sbaglia di dieci camere in più un giorno e di dieci in meno il giorno dopo. La media è perfetta, ogni singola decisione è sbagliata. Chiedere solo lo scarto medio è il modo più comune di farsi ingannare in buona fede.

La tabella per orizzonte#

Si prendono trenta date di soggiorno già consumate e si recuperano le previsioni salvate a 60, 30, 14, 7, 3 e 1 giorno dall’arrivo. Il consuntivo medio di quelle trenta date è 86,4 camere.

Giorni all’arrivo Previsione media Consuntivo medio Scarto sistematico Errore assoluto medio MAE sul consuntivo
60 79,1 86,4 -7,3 11,8 13,7%
30 82,6 86,4 -3,8 8,4 9,7%
14 84,9 86,4 -1,5 5,6 6,5%
7 86,1 86,4 -0,3 3,9 4,5%
3 87,0 86,4 0,6 2,4 2,8%
1 86,8 86,4 0,4 1,5 1,7%

Letta così la tabella dice due cose. La prima: a sessanta giorni il modello sottostima di 7,3 camere in media, sempre nella stessa direzione, e una sottostima costante è correggibile a mano finché non la corregge il fornitore. La seconda: l’errore assoluto medio a sessanta giorni vale 11,8 camere, cioè il 13,7 per cento del consuntivo. Se una decisione di prezzo si prende a sessanta giorni, si sta decidendo su un numero che oscilla di undici camere.

La stessa tabella per segmento#

Qui si trova la cosa che quasi nessuno guarda. Le previsioni a 14 giorni, scomposte sui cinque segmenti della struttura di esempio.

Segmento Consuntivo medio Errore assoluto medio Errore in quota del segmento
Diretto 21,0 2,1 10,0%
Portali 34,6 3,4 9,8%
Corporate 18,2 2,6 14,3%
Gruppi 8,4 4,7 56,0%
Tour operator 4,2 0,9 21,4%
Totale 86,4 5,6 6,5%

La somma degli errori dei cinque segmenti vale 13,7 camere, mentre l’errore sul totale è 5,6: due volte e mezzo meno. Non è un errore di calcolo. Gli errori dei segmenti si compensano fra loro, e l’aggregato appare più preciso di qualunque sua parte. Chi valuta un modello solo sul totale della struttura lo vede al suo meglio.

Il segmento gruppi sbaglia del 56,0 per cento in quota, su 8,4 camere. È il segmento su cui si prendono le decisioni più costose, accettare o rifiutare, e il modello lì non sa quasi niente: i gruppi sono pochi, grandi e irregolari, cioè esattamente il caso in cui le celle si svuotano.

Il caso delle cancellazioni: perché l’accuratezza inganna#

Per le cancellazioni la misura che i fornitori mostrano è quasi sempre l’accuratezza, cioè la quota di previsioni giuste. È la misura meno informativa che si possa scegliere, e si dimostra con un conto.

Modello di cancellazione, 120 camere, un anno

prenotazioni ricevute
18.380
cancellate davvero
4.045
tasso di cancellazione
22,0 per cento
previsioni giuste del modello che dice sempre “non cancella”
14.335
prenotazioni segnalate a rischio dal modello vero
3.680
di cui cancellate davvero
2.760
cancellazioni sfuggite al modello
1.285
accuratezza del modello che non fa niente: 78,0 per cento
accuratezza del modello vero: 88,0 per cento
precisione: 75,0 per cento; cancellazioni intercettate: 68,2 per cento

Un modello che non fa assolutamente niente ottiene il 78,0 per cento di accuratezza, perché la maggioranza delle prenotazioni non viene cancellata. Il modello vero arriva all’88,0: dieci punti di guadagno, che presentati da soli sembrano un ottimo risultato.

Tradotti in camere il quadro cambia. Delle 4.045 cancellazioni reali il modello ne intercetta 2.760 e ne perde 1.285, cioè 3,5 al giorno in media. In più segnala a rischio 920 prenotazioni che non verranno cancellate, 2,5 al giorno. Chi costruisce l’overbooking su quel modello deve sapere che ogni giorno lavora con circa tre camere e mezzo che si liberano senza preavviso e due e mezzo che non si liberano affatto. Questo è il numero utile. L’accuratezza dell’88 per cento non lo contiene.

Quello che nessun modello può dare#

Il limite più profondo non è tecnico. Un modello impara dai prezzi che hai praticato. Se ogni sabato di ottobre degli ultimi tre anni è stato venduto a 190 euro, il modello non ha mai osservato che cosa succede a 250. Prevede la domanda condizionata alle tue decisioni passate e, usato senza cautela, le ripete. Un sistema che dice di fare quello che hai sempre fatto non sta sbagliando: sta rispondendo esattamente alla domanda che gli è stata posta.

Il secondo limite riguarda il costo dell’errore, che non è simmetrico mentre l’errore assoluto medio lo tratta come se lo fosse. Con una tariffa netta di 130 euro e un costo variabile per camera venduta di 18 euro, sovrastimare di 5 camere e restare con cinque stanze vuote costa 5 per 112, cioè 560 euro di margine. Sottostimare di 5 camere e abbassare il prezzo di 20 euro su tutte le 86 camere della giornata costa 1.720 euro. Stesso errore di previsione, costo tre volte più alto in un verso che nell’altro. Nessuna misura di errore statistico vede questa differenza.

Il terzo limite è nelle percentuali. L’errore percentuale medio è inutilizzabile sui segmenti piccoli: in una cella che vende 2 camere, sbagliarne 2 fa il 100 per cento, e la media delle percentuali finisce dominata dalle celle irrilevanti. Le percentuali della tabella per segmento sono calcolate come errore assoluto medio diviso il consuntivo medio del segmento, che è una misura più stabile, e vanno lette solo insieme al valore assoluto.

L’ultimo limite è l’orizzonte. Ogni modello degrada quando aumenta la distanza dall’arrivo, come mostra la tabella per orizzonte, e nessuna tecnica ribalta questo fatto: a sessanta giorni gran parte della domanda non si è ancora manifestata. Un fornitore che promette a sessanta giorni la stessa precisione che ha a sette sta descrivendo un modello che ha visto il futuro.

Cosa chiedere lunedì mattina#

  1. Chiedi al fornitore su quali date il modello è stato addestrato e su quali è stato misurato, e controlla che le due liste non si sovrappongano.
  2. Fatti dare l’elenco delle variabili usate e passale una per una con la domanda del giorno della previsione: questo valore era già così allora.
  3. Chiedi l’errore assoluto medio e lo scarto sistematico, in camere, non l’accuratezza e non una percentuale isolata.
  4. Pretendi la scomposizione per orizzonte, almeno a 30, 14, 7 e 3 giorni: un unico numero riassuntivo nasconde tutto.
  5. Pretendi la scomposizione per segmento e confronta la somma degli errori dei segmenti con l’errore sul totale: il divario dice quanto l’aggregato sta lusingando il fornitore.
  6. Conta le osservazioni per cella prima di chiedere dettaglio: segmenti per giorni della settimana per mesi per fasce di anticipo, e dividi lo storico per quel numero.
  7. Controlla che le camere disponibili giorno per giorno siano una colonna dello storico e che il modello lavori su tassi, non su livelli.
  8. Salva ogni giorno la previsione del sistema accanto alle camere già confermate. Fra tre mesi avrai la tua tabella di controllo e non dovrai più chiederla a nessuno.

Da leggere dopo