ModArchive: AI per la storia della moda del Novecento
Venti riviste, 695 numeri, quasi 7 milioni di token e un motore di ricerca visiva calibrato sui cataloghi del Bon Marché. Così ModArchive usa l'AI per raccontare la moda del Novecento.
I visibility graph trasformano serie temporali in grafi per catturare strutture complesse invisibili ai metodi classici. Teoria, proprietà e implementazione in Python.
La maggior parte dei metodi classici per l'analisi di serie temporali, ARIMA, regressione lineare, decomposizione STL, si basano su un'assunzione fondamentale: la stazionarietà. La serie deve avere media, varianza e struttura di autocorrelazione stabili nel tempo.
Ma molte delle serie temporali più interessanti in ambito aziendale violano questa assunzione. I prezzi dell'energia elettrica hanno spike improvvisi e cambi di regime. I dati di vendita cambiano struttura dopo una promozione o una crisi. I mercati finanziari alternano periodi di bassa volatilità a fasi di turbolenza estrema.
Per queste serie, i metodi tradizionali producono risultati instabili o fuorvianti. I visibility graph offrono un approccio diverso: invece di cercare di adattare la serie a un modello statistico, la trasformano in un oggetto matematico, un grafo, che cattura la struttura geometrica e temporale della serie senza assumere stazionarietà.
L'idea è sorprendentemente intuitiva. Immagina la serie temporale come un paesaggio: ogni punto è una "torre" la cui altezza corrisponde al valore della serie in quel momento.
Due torri si "vedono", cioè i loro nodi corrispondenti nel grafo sono connessi, se la linea retta che le unisce non è ostruita da nessuna torre intermedia. In termini formali, due punti (t_i, y_i) e (t_j, y_j) sono connessi se per ogni punto intermedio t_k (con i < k < j) vale:
y_k < y_i + (y_j - y_i) * (t_k - t_i) / (t_j - t_i)
Questa è la definizione del Natural Visibility Graph (NVG), introdotta da Lacasa et al. nel 2008.
Esiste una variante più semplice, l'Horizontal Visibility Graph (HVG), dove due nodi sono connessi solo se non c'è nessun punto intermedio con valore superiore a entrambi. L'HVG è più restrittivo ma ha proprietà analitiche più semplici.
Il punto chiave è che la costruzione del grafo non richiede nessuna assunzione sulla distribuzione dei dati o sulla stazionarietà della serie. La trasformazione è deterministica e reversibile: data la serie, il grafo è unico. Dati i dati di struttura del grafo, si può ricostruire la serie (con alcune ambiguità).
Le proprietà del grafo risultante catturano caratteristiche della serie che i metodi classici faticano a descrivere:
Una volta costruito il grafo, si possono calcolare tutte le metriche standard dell'analisi di reti:
Degree distribution P(k) La distribuzione del numero di connessioni per nodo è la proprietà più informativa. Per il rumore bianco (serie stocastica senza struttura), l'HVG produce sempre una distribuzione esponenziale P(k) = (1/3)(2/3)^(k-2). Qualsiasi deviazione da questa distribuzione indica struttura nella serie.
Clustering coefficient Misura quanto i vicini di un nodo tendano a essere connessi tra loro. Valori alti indicano aree della serie con comportamento lokalmente regolare.
Lunghezza media del cammino minimo Quanto sono "vicini" i diversi momenti della serie nella struttura del grafo. Serie con memoria a lungo raggio tendono ad avere cammini più corti.
Hub nodes I nodi con grado eccezionalmente alto rispetto alla distribuzione media corrispondono a punti di svolta della serie: massimi storici, cambi di regime, eventi estremi. Identificarli automaticamente è uno dei casi d'uso più pratici del metodo.
Analisi di mercati energetici
Nelle serie di prezzi spot dell'energia (PUN italiano, EPEX, TTF), la distribuzione del grado del visibility graph segue tipicamente una power-law con esponente γ tra 2 e 3, indicando struttura frattale e memoria a lungo raggio. Questo ha implicazioni dirette per il pricing del rischio e la costruzione di modelli di forecasting.
Prezzi delle commodity
Per commodity agricole e metalli industriali, il confronto tra la degree distribution in periodi diversi permette di rilevare cambi di regime (da mercato tranquillo a speculativo) in modo più robusto rispetto ai test classici di stazionarietà come Dickey-Fuller.
Dati finanziari
Il confronto tra la struttura del grafo in periodi pre-crisi e post-crisi rivela come cambino le correlazioni di lungo periodo durante gli stress di mercato, informazione preziosa per la costruzione di portafogli robusti.
La libreria ts2vg è il punto di partenza naturale:
from ts2vg import NaturalVG
import networkx as nx
import numpy as np
# Costruisci il Natural Visibility Graph
ts = np.array([...]) # la tua serie temporale
nvg = NaturalVG()
nvg.build(ts)
# Converti in NetworkX per analisi
G = nvg.as_networkx()
# Degree sequence
degrees = [d for n, d in G.degree()]
# Hub nodes (top 5% per grado)
threshold = np.percentile(degrees, 95)
hub_indices = [n for n, d in G.degree() if d >= threshold]
Per serie lunghe (> 100.000 punti), ts2vg usa un algoritmo efficiente O(n log n) che rende il calcolo praticabile anche su dati ad alta frequenza.
Il visibility graph è uno strumento di analisi e feature extraction, non un modello di forecasting diretto. Le proprietà del grafo vengono tipicamente usate come feature aggiuntive in pipeline di machine learning più ampie, o per caratterizzare statisticamente il regime corrente della serie prima di applicare il modello di previsione appropriato.
La scelta tra NVG e HVG dipende dall'applicazione: NVG cattura più informazione strutturale, HVG è più facile da analizzare teoricamente. In pratica, è utile calcolare entrambi e confrontare le proprietà.
Il metodo è relativamente nuovo (2008) ma ha una letteratura scientifica in rapida crescita, con applicazioni documentate in fisiologia, climatologia, fisica e finanza. Per chi lavora con serie temporali complesse e non stazionarie, è uno strumento che vale la pena avere nel proprio toolkit.
Tag
Domande frequenti
Il visibility graph funziona solo con dati finanziari?
No. Il visibility graph è un metodo generale applicabile a qualsiasi serie temporale. È stato usato in fisiologia (analisi ECG, EEG), climatologia (precipitazioni, temperature), geofisica (sismologia), traffico di rete, prezzi di commodity energetiche e dati di produzione industriale. Il vantaggio principale, catturare strutture non stazionarie e non lineari, è rilevante ovunque la serie presenti cambi di regime, spike improvvisi o pattern ciclici irregolari.
Come si interpreta la degree distribution di un VG?
La degree distribution P(k) descrive quanti nodi hanno esattamente k connessioni. Una distribuzione power-law (P(k) ~ k^-γ) è tipica di serie con struttura frattale o memorie a lungo raggio, comune in mercati finanziari e serie energetiche. Una distribuzione esponenziale P(k) ~ e^-λk è invece tipica di serie di rumore bianco. La deviazione dalla power-law pura indica la presenza di strutture specifiche nella serie: picchi isolati, trend persistenti, cambi di regime.
Esiste una libreria Python per i visibility graph?
Sì. La libreria ts2vg (Time Series to Visibility Graph) è la più completa e attivamente mantenuta. Supporta sia il Natural Visibility Graph (NVG) che il Horizontal Visibility Graph (HVG), permette di costruire il grafo su serie lunghe in modo efficiente, e si integra nativamente con NetworkX per l'analisi delle proprietà del grafo. È disponibile su PyPI: pip install ts2vg.
Continua a leggere
Venti riviste, 695 numeri, quasi 7 milioni di token e un motore di ricerca visiva calibrato sui cataloghi del Bon Marché. Così ModArchive usa l'AI per raccontare la moda del Novecento.
Due approcci diversi per prevedere il futuro dai dati storici. Capire le differenze tra ARIMA e Prophet può fare la differenza tra una previsione accurata e un modello inutilizzabile.
Nel settore moda, anticipare un trend di sei mesi significa la differenza tra collezione venduta e magazzino invenduto. La computer vision sta cambiando le regole del gioco.