L’analisi predittiva è diventata un elemento cruciale per le aziende che desiderano sfruttare appieno i propri dati per ottimizzare i processi operativi e migliorarne l’efficienza e l’efficacia. Questo metodo si basa sull’analisi dei dati storici che, attraverso l’utilizzo di algoritmi statistici avanzati e tecniche di machine learning, individua pattern e tendenze utili a prevedere gli eventi futuri.
Con l’evoluzione tecnologica oggi è possibile processare grandi volumi di dati con precisione e rapidità. Come parte di Var Group Data Science per l’ambito Analytics, supportiamo numerose aziende che adottano questa metodologia, conosciuta anche come Forecasting, per acquisire un vantaggio competitivo significativo. Uno strumento chiave per anticipare le tendenze di mercato e orientare le decisioni aziendali in modo proattivo. L’analisi predittiva trova applicazione in vari settori, inclusi e-commerce, sanità, retail e finanza, dimostrando la sua versatilità e il suo valore trasversale.
In questo articolo, osserveremo i vari strumenti di analisi previsionale messi a disposizione da Power BI.
Si può fare l’analisi predittiva in Power BI?
Power BI non è limitato solo all’analisi dei dati correnti, ma può essere utilizzato anche nella previsione delle tendenze future. Esistono principalmente due strumenti con cui realizzare delle analisi predittive in Power BI:
- Analisi previsionali temporali in Power BI: Power BI mette a disposizione dell’utente un set di tools per l’analisi temporale al fine di esplorare trend e tendenze di dati storici e fare previsioni basate su modelli predittivi. Le funzionalità di forecasting sono accessibili e intuitive per gli utenti, poiché permettono di modificare i parametri di previsione come lunghezza, stagionalità e intervallo di confidenza direttamente dal menù grafico nel pannello delle visualizzazioni.
- Estensioni integrative per analisi previsionali: Power BI è in grado di aggiungere e utilizzare al suo interno strumenti di analisi come R e Python, consentendo agli utenti di sfruttare le librerie di tali linguaggi per creare modelli personalizzati di apprendimento automatico e tecniche statistiche per generare previsioni.
Per replicare gli esempi presenti all’interno dell’articolo, scarica qui tutti i file necessari.
Analisi previsionali temporali in Power BI
Come accennato, Power BI offre molteplici feature di analisi avanzata dei dati. Tra le più interessanti evidenziamo il built-in forecasting.
Questo strumento permette di effettuare un’analisi predittiva in modo semplice e rapido, mantenendo la stessa granularità dei dati. Se hai la necessità di fare una previsione sui prossimi 30 punti dati, e con punto dati intendi “il giorno”, allora i record che costituiscono lo storico devono riportare la misurazione di cui fare previsione (valore numerico) con livello di dettaglio del giorno. Se invece con punto dati si intende “la settimana”, conseguentemente questo sarà il livello di dettaglio richiesto per procedere alla previsione.
Riassumendo, il forecasting è una previsione con lo stesso livello di granularità del punto dati usato. Dopo aver importato il dataset, l’analisi temporale tramite opzione built-in comporta l’utilizzo di un line chart, questo perché è indispensabile avere un riferimento temporale continuo nell’asse delle ascisse. Nell’asse delle ordinate si inserirà la misura aggregata, rispetto a livello di granularità del punto dati, per la quale vogliamo calcolare la previsione.
Le caratteristiche del dataset devono essere le seguenti:
- L’asse X riporta valori continui e uniformemente crescenti (vedi granularità del punto dati) con data type: date o date/time
- Line Chart deve contenere una sola misura, non può quindi contenere molteplici “linee”
Per abilitare l’opzione di previsione, selezionare la terza icona sotto la voce “Analytics” e quindi attivare l’opzione “Forecast”. È importante prestare attenzione ad avere le giuste condizioni per poter attivare questa opzione, poiché il forecast non è disponibile se Power BI non rileva delle date nel grafico.
L’analisi previsionale di Power BI include diversi parametri che possono essere impostati per modificare il risultato finale:
UNITS: le unità sono utilizzate per stabilire se si vuole fare una previsione in anni, trimestri, giorni o qualsiasi altra opzione disponibile in base alla tipologia di date presenti nel grafico.
FORECAST LENGTH: corrisponde alla lunghezza della previsione. È possibile decidere il numero di unità che si vuole prevedere. In questo esempio, utilizziamo una lunghezza di previsione pari a 15, il che significa che faremo una previsione di 15 unità, ossia 15 giorni.
IGNORE THE LAST: opzione con la quale si può specificare quali valori -e corrispondenti punti dati- ignorare quando si ritiene che alcuni intervalli di tempo non debbano essere inclusi nell’analisi previsionale perché associati a dati ritenuti poco significativi ai fini delle analisi. Ad esempio, un’attività commerciale può scegliere di ignorare le vendite nel mese di agosto perché non le ritiene rappresentative dati i numerosi giorni di ferie in cui l’attività commerciale è stata chiusa.
SEASONALITY: la stagionalità è un’opzione di Power BI utilizzata per determinare alcune tendenze in un determinato periodo. Rileva alcune variazioni nel corso dell’anno. È il periodo in cui un certo pattern si ripropone più volte all’interno della lunghezza della previsione. Non può essere maggiore del numero di unità presenti nel grafico. Maggiore è lo storico dei dati rispetto al numero di unità da prevedere e maggiore è la capacità di Power BI di fare previsioni più accurate.
CONFIDENCE INTERVAL: infine, si ha l’intervallo di confidenza. Esso è un intervallo che rappresenta la stima di un parametro. Anche se viene espresso sottoforma di percentuale (es. 95%), non significa che esiste una probabilità del 95% che il parametro sia compreso nei due estremi dell’intervallo. Un intervallo di confidenza al 95% significa che se la previsione venisse ripetuta, nel 95% dei casi l’intervallo conterrebbe il valore reale. L’intervallo di confidenza viene utilizzato, in altre parole, per determinare l’affidabilità del valore. Un intervallo di confidenza piccolo aumenta la probabilità che il valore reale non sia compreso negli estremi dell’intervallo perché la stima diventa più precisa. Al contrario, aumentando l’intervallo di confidenza aumenta la probabilità di trovare il giusto range per il valore reale, ma diminuisce la precisione della stima.
Nell’immagine qui sotto, puoi osservare un esempio di utilizzo dell’analisi previsionale in Power BI tramite l’applicazione di determinati parametri. La linea tratteggiata rappresenta i valori di Amount previsti mentre la banda azzurra rappresenta il margine di confidenza stabilito dal valore dell’intervallo percentuale scelto.
Le previsioni in Power BI si basano su algoritmo di forecast molto complesso denominato Exponential Smoothing. Per essere precisi, esistono due modelli di Exponential Smoothing: Seasonal Data (ETS AAA) che tiene conto di trend e stagionalità additive e Non-Seasonal Data (ETS AAN), modello più semplice che considera solo i trend.
Il modello ETS AAA è anche conosciuto come algoritmo di Holt-Winters. È il modello più complesso dei due perché ricerca i parametri ottimali per minimizzare lo scarto quadratico medio (MSE) nelle previsioni del modello di addestramento, prendendo in considerazione non solo le previsioni più “vicine” ma anche quelle con un orizzonte temporale più lungo, al fine di ridurne la variazione e preservarne la tendenza. Essenzialmente, il modello applica una media ponderata delle osservazioni storiche, dando più peso alle osservazioni recenti rispetto a quelle più remote.
In entrambi i casi, Power BI applica automaticamente l’algoritmo migliore a seconda dei dati che si hanno a disposizione.
Per poter replicare l’esempio, fai riferimento al workbook Power BI “PBI Forecast built-in e Script R.pbix” incluso nella cartella “1_esempio” che hai scaricato.
Estensioni integrative per il Forecast
Power BI offre la possibilità di utilizzare librerie e strumenti di R e Python come estensioni aggiuntive agli strumenti già presenti. Per entrambi i linguaggi di programmazione, sono disponibili specifici visuals che abilitano l’inserimento diretto del codice per creare grafici personalizzati, che possono poi essere facilmente incorporati nelle dashboard di Power BI.
Quando si seleziona l’icona di uno di questi oggetti visivi nel pannello delle visualizzazioni di Power BI, si genera un nuovo elemento nell’area di lavoro e si apre l’editor dedicato per inserire il codice necessario allo sviluppo del modello previsionale. Per integrare i dati nel proprio script R, è sufficiente trascinare i campi di interesse nella sezione “Valori” del pannello di configurazione della visualizzazione, seguendo lo stesso procedimento applicabile a qualsiasi altro elemento visivo in Power BI. È importante notare che solamente i campi inseriti in questa area saranno accessibili e utilizzabili nello script R
N.B sono necessari alcuni prerequisiti al fine di poter usare R e/o Python all’interno di Power BI. Bisogna accertarsi di aver correttamente installato R e/o Python nel proprio computer locale, oltre alle librerie e pacchetti necessari all’analisi. Inoltre, andrà abilitato lo scripting R e/o Python in Power BI Desktop in Opzioni file > Impostazioni > Opzioni > Globale selezionare Script R o Script Python a seconda di quello che si vuole abilitare. Verificare che l’installazione di R e/o Python locale sia specificata nella home directory corretta.
Nell’esempio mostrato sopra abbiamo importato le librerie che contengono le funzioni necessarie per applicare un modello previsionale basato sull’algoritmo Exponential Smoothing, lo stesso usato in Power BI. Utilizzando un dataset di esempio, abbiamo suddiviso il campione per l’addestramento del train set e del test set con la funzione “window”. È buona prassi riservare un 70% circa per il set di addestramento (train set), ovvero la porzione di dati utilizzata per addestrare il modello a fare previsioni accurate. Il restante 30% viene utilizzato per il set di validazione (test set), ossia una porzione di dati a parte non utilizzata in fase di addestramento che serve per valutare le prestazioni finali del modello in termini di capacità predittiva sui nuovi dati. Per questo motivo, al primo abbiamo assegnato le date dal 1956 al 1996 (40 anni), mentre al secondo le date dal 1997 al 2014 (17 anni, circa il 30% del dataset a disposizione).
Al termine della suddivisione nei set di addestramento e validazione, è necessario specificare quale algoritmo utilizzare (ETS sta per “Exponential Smoothing”, riga 16) assegnandogli con il parametro “model” il metodo usato dal framework: la prima lettera specifica “l’error type”, la seconda la “trend type”, mentre l’ultima la “season type”. Nel nostro caso, “AAA” identifica un Exponential Smoothing Seasonal Data con additive error, additive trend, e additve seasonality.
Le diverse scie di colore attorno alla linea previsionale prodotta dal nostro modello in R mostrano i due intervalli di confidenza stabilito di default da R se non vengono specificati valori diversi: 80% (viola scuro) e 95% (viola chiaro).
In questo caso non abbiamo applicato parametri particolari al modello che avrebbero prodotto un risultato più accurato. In generale, le fasi di addestramento del modello e di validazione sui dati di test set sono iterativi, ovvero vengono ripetute più volte cercando di trovare la combinazione migliore di parametri per ottenere una previsione più realistica.
Anche in questo caso ti invitiamo a replicare l’esempio partendo dal workbook Power BI “PBI Forecast built-in e Script R.pbix”.
Confronto tra tecniche di analisi predittiva in Power BI
Supponiamo a questo punto di voler confrontare le previsioni prodotte affidandosi all’opzione built-in in Power BI Desktop a modelli statistici i cui parametri possono essere specificati dall’utente, grazie all’esecuzione di script Python direttamente in Power BI. Come accennato, la possibilità di eseguire codice Python o R, è alla base delle estensioni integrative per il forecast.
Di seguito verrà presentato un confronto qualitativo tra il valore attuale (Actual value), il valore predetto con l’opzione nativa e integrata (PBI Forecast) e le previsioni calcolate tramite il training di due modelli basti su: SARIMA e Holt-Winters. Il dataset da cui partiamo raccoglie le transazioni di vendita giorno per giorno in uno span temporale di qualche anno a partire dal 2017.
Ecco il set-up dell’esempio:
Dataset:
- Conversione delle date nella notazione mm/dd/yyyy
- Granularità giornaliera, quindi le vendite sono aggregate (somma) a livello del giorno
- Training set, composto dai dati nello span temporale 01/01/2019 – 31/12/2019
- Actual values set, composto dai dati nello span temporale 01/01/2020 – 31/03/2020
- Visibilità public
Per poter replicare l’esempio trovate nella cartella “2_esempio”:
Il file pdf Istruzioni_e_Script_Python.pdf, contenente le istruzioni per la creazione dell’ambiente virtuale e il set-up in Power BI Desktop. Contiene anche il codice di base per il fit dei modelli importabili con la libreria StatsModels di Sci-kit learn.
Il dataset EXTRACT.csv, contenente le vendite e il giorno in cui sono avvenute -si tratta di un’estrazione del dataset Contoso liberamente distribuito da Microsoft.
Il dataset Sum of Sales Amount by Date.csv, contenente la proiezione delle vendite calcolata con la funzionalità di forecast built-in in Power BI Desktop. Utilizzato per mostrare nella dashboard un confronto tra le previsioni calcolate dai diversi modelli.
Il workbook PowerBI Analisi_Predittive_a_Confronto.pbix, contenente il codice di sviluppo del report.
In Power BI lo script Python che manipola i dati lo fa puntando ad una struttura dati tabellare della libreria Pandas, il DataFrame che di default è referenziato tramite la variabile dataset. Questa informazione è molto importante da tenere a mente nella stesura del codice, infatti solo queste specifiche strutture dati possono essere memorizzate e accedute anche dall’ambiente di ETL Power Query. A questo scopo abbiamo scelto di eseguire lo script Python come step in Power Query, poi di accedere al DataFrame contenente il risultato del forecast.
La serie delle vendite analizzata presenta un andamento debole, tendenziale e un andamento stagionale, non direttamente influenzati dallo scorrere del tempo. Quindi abbiamo pensato di ricorrere ai due rodati modelli (il processo di stima degli iperparametri esula dallo scopo):
- SARIMA (Seasonal AutoRegressive Integrated Moving Average) è l’estensione del modello ARIMA per le serie storiche con componente stagionale.
- Holt-Winters o Livellamento Esponenziale (simile a quanto proposto da Power BI in modo nativo) con modello di tipo “additivo”.
Il report si compone di due pagine:
- “Actual + Forecasting” mostra 3 differenti grafici a linee, che riportano l’andamento delle vendite nello storico, quindi nel training set (la serie storica con la quale si è fatto il fit dei modelli sia attraverso il codice Python sia attraverso la feature built-in di Power BI Desktop), seguite dalle previsioni calcolate.
- “Forecasting” mostra la comparazione sullo stesso grafico (attivabile tramite selezione) dei valori:
- PBI Forecast, predetti con l’opzione built-in di Power BI Desktop
- SARIMA, predetti con l’omonimo modello
- Holt-Winters, predetti con l’omonimo modello
- e confrontati con il valore atteso, Actual values
Tenendo conto di fattori secondari quali la conoscenza dei modelli e delle tecniche per stimare i valori non ideali degli iperparametri, l’analisi predittiva fatta da Power BI Desktop risulta essere di buona qualità e vantaggiosa per il suo basso costo operativo. Questo rende Power BI un buon strumento, nonostante il limite di non poter accedere direttamente ai valori predetti e ai loro intervalli di confidenza, che sono disponibili solo esportando i dati dell’oggetto visivo.
Conclusione
Per concludere, il forecasting in Power BI permette di ottenere insights predittivi partendo da una serie di dati storici già in possesso. Esistono diversi strumenti in grado di eseguire un’analisi previsionale, diversi a seconda del diverso grado di user-oriented dello strumento.
Impara a creare le tue Dashboard con Power BI
Se vuoi apprendere le basi di Power BI per connettere e visualizzare i dati e creare dashboard interattive di impatto, iscriviti al nostro corso.
Visualitics Team
Questo articolo è stato scritto e redatto da uno dei nostri consulenti.
Fonti:
- Describing the forecasting models in Power View: www.powerbi.microsoft.com
- ETS: Exponential Smoothing state space model, R Documentation: www.rdocumentation.org
- Exponential Smoothing in R Programming, GeeksforGeeks: www.geeksforgeeks.org
- Holt-Winters: www.statsmodels.org
- How to Forecast Data in Power BI, SQL Server Central: www.sqlservercentral.com
- Pandas DataFrame: pandas.pydata.org
- Python: www.python.org
- SAS, Analisi Predittiva: www.sas.com
- SAP, What is Predictive Analysis?: www.sap.com
- SARIMA: www.statsmodels.org
- Time Serie Forecasting with R (Part 2), Medium: www.medium.com
- Venv: www.docs.python.org
Condividi ora sui tuoi canali social o via email: