Il dynamic time warping è usato per con­fron­ta­re sequenze di valori di lunghezze diverse al fine di rilevare le si­mi­la­ri­tà con il pattern matching. L’algoritmo del DTW genera percorsi di warping dai quali, mediante back­trac­king e mi­su­ra­zio­ni delle dif­fe­ren­ze, si possono ri­co­no­sce­re le si­mi­la­ri­tà no­no­stan­te la di­stor­sio­ne temporale o la velocità diversa. Il DTW è uti­liz­za­to ad esempio per il ri­co­no­sci­men­to vocale, il ri­co­no­sci­men­to digitale della firma o anche per l’analisi dei mercati fi­nan­zia­ri.

Cosa significa dynamic time warping (DTW)?

Il dynamic time warping, ovvero “di­stor­sio­ne temporale dinamica”, di primo acchito può suonare come una tec­no­lo­gia di Star Trek. In realtà non si tratta di nient’altro che di un algoritmo che mappa serie temporali o sequenze di valori diverse e le confronta. Con il “warping” è possibile ri­co­no­sce­re le si­mi­la­ri­tà degli schemi cor­ri­spon­den­ti tra le sequenze, anche se pre­sen­ta­no una lunghezza o una velocità diverse.

In pratica: nel caso occorra allineare due sequenze diverse, l’algoritmo è in grado di ri­co­no­sce­re schemi identici anche con velocità o distanza diverse. Con­fron­tan­do le firme della stessa persona è possibile in­di­vi­dua­re le si­mi­la­ri­tà anche con di­men­sio­ni del carattere diverse.

Qual è lo scopo del dynamic time warping?

È vero che al primo impatto il DTW sembra un concetto astratto, senza vantaggi pratici evidenti. Ma è proprio il contrario: in svariate ap­pli­ca­zio­ni, il dynamic time warping svolge un’im­por­tan­te funzione di analisi. Questo vale so­prat­tut­to per l’analisi di sequenze video e audio, grafici o modelli sta­ti­sti­ci, dunque per le sequenze che possono essere rap­pre­sen­ta­te in modo lineare e con­fron­ta­te. Ri­co­no­scen­do le cor­ri­spon­den­ze, il DTW permette di avviare de­ter­mi­na­te azioni, segnali o funzioni.

Inoltre, mediante la mi­su­ra­zio­ne e il ri­co­no­sci­men­to di schemi nelle serie di valori è possibile rilevare sviluppi di sistema simili anche in lassi di tempo diversi. Per questo motivo l’algoritmo DTW trova ap­pli­ca­zio­ne anche in tec­no­lo­gie all’avan­guar­dia, come il machine learning, il su­per­vi­sed learning o le reti neurali, per ad­de­stra­re le capacità di analisi e di reazione dei sistemi di au­toap­pren­di­men­to e valutare i record di dati in modo più ef­fi­cien­te.

Come funziona il dynamic time warping?

Per ri­co­no­sce­re schemi e si­mi­la­ri­tà in serie di valori diverse, il DTW cerca cor­ri­spon­den­ze ottimali, in inglese “optimal match”, sfrut­tan­do i principi “uno-a-molti” o “molti-a-uno”. Si applicano diverse regole e con­di­zio­ni:

  • Ciascun valore di una sequenza deve essere con­fron­ta­to con uno o più valori della seconda sequenza (e viceversa).
  • Il primo valore di una sequenza deve essere con­fron­ta­to con il primo valore della seconda sequenza.
  • L’ultimo valore di una sequenza deve essere con­fron­ta­to con l’ultimo valore della seconda sequenza.
  • La rap­pre­sen­ta­zio­ne (mappatura) delle serie di valori della prima sequenza sulle serie di valori della seconda sequenza deve aumentare in modo monotono. Le posizioni dei valori all’inizio e alla fine delle sequenze devono quindi coin­ci­de­re, senza omissioni o so­vrap­po­si­zio­ni.

Si ha una cor­ri­spon­den­za ottimale quando tutti i requisiti e le con­di­zio­ni sono sod­di­sfat­ti. Si utilizza la co­sid­det­ta “funzione di costo”, che permette di creare una misura della dif­fe­ren­za tra i valori delle sequenze. Più la funzione di costo è bassa, più la cor­ri­spon­den­za è ottimale.

L’algoritmo crea inoltre un percorso di warping in grado di ri­co­no­sce­re cor­ri­spon­den­ze ottimali anche in sequenze di lunghezze diverse. Il percorso di warping è creato at­tra­ver­so il back­trac­king, con cui l’algoritmo rap­pre­sen­ta uno o più valori di una sequenza su punti della seconda sequenza. In questo modo è possibile trovare cor­ri­spon­den­ze anche in sequenze temporali di lunghezza diverse no­no­stan­te o, meglio, grazie alla di­stor­sio­ne temporale.

Quali sono le ap­pli­ca­zio­ni del dynamic time warping?

Il DTW è uti­liz­za­bi­le ovunque sia possibile rap­pre­sen­ta­re record di dati in sequenze lineari e con­fron­tar­li. Spesso è impiegato come pre e post controllo nell’analisi dei dati, che possono essere di tipo audio o video, al­fa­nu­me­ri­ci o record basati sui Big Data.

Di seguito altri campi d’ap­pli­ca­zio­ne del DTW:

  • Ri­co­no­sci­men­to di schemi nelle sequenze audio: un’im­por­tan­te ap­pli­ca­zio­ne del DTW è il ri­co­no­sci­men­to vocale. Gli schemi vocali re­gi­stra­ti e salvati con il DTW vengono mappati nel pattern matching. In presenza di sequenze audio di diversa lunghezza o velocità, il DTW utilizza la di­stor­sio­ne temporale per creare un percorso di warping. Così si possono ri­co­no­sce­re le si­mi­la­ri­tà anche in vocali e con­so­nan­ti di lunghezza diversa o pro­nun­cia­te a una velocità variabile.
  • Ri­co­no­sci­men­to di schemi nelle sequenze video: per il ri­co­no­sci­men­to dei gesti e dei movimenti, il DTW mappa le sequenze video, ad esempio di serie di movimenti. Sono eseguiti un confronto e un ri­co­no­sci­men­to di schemi nelle sequenze di movimenti anche in presenza di lunghezze temporali o velocità dif­fe­ren­ti.
  • Ri­co­no­sci­men­to di schemi nei dati fi­nan­zia­ri: altre im­por­tan­ti ap­pli­ca­zio­ni sono i mercati fi­nan­zia­ri e le finanze aziendali. Il DTW si presta per creare pre­vi­sio­ni sui cicli fi­nan­zia­ri, curve del fatturato o tendenze di borsa. Operando su lassi di tempo diversi, può evi­den­zia­re e vi­sua­liz­za­re tendenze e cicli simili o identici nei dati di mercato e aziendali. L’analisi è basata sia su pre­vi­sio­ni sia sui dati aziendali e fi­nan­zia­ri raccolti.

Quali strumenti im­ple­men­ta­no il dynamic time warping?

Troviamo l’algoritmo DTW nelle librerie di diversi software open source, tra cui:

  • DTW Suite con pacchetti di pro­gram­ma­zio­ne per Python e R.
  • FastDTW offre un’im­ple­men­ta­zio­ne per gli algoritmi DTW.
  • MatchBox im­ple­men­ta il DTW per i segnali audio.
  • mlpy e pydtw, librerie di Python per l’ap­pren­di­men­to au­to­ma­ti­co, offrono anche funzioni DTW.
  • Gesture Re­co­gni­tion offre algoritmi DTW per il ri­co­no­sci­men­to dei gesti in tempo reale.

Per uti­liz­za­re il DTW nel modo più ef­fi­cien­te possibile si ricorre anche alle seguenti tecniche di calcolo rapido:

  • PruneDTW
  • SparseDTW
  • FastDTW
  • Mul­ti­sca­leDTW

Esempio: il dynamic time warping come algoritmo in Python

Per il­lu­stra­re la com­ples­si­tà del dynamic time warping trovate di seguito un esempio di algoritmo DTW nel codice Python:

def dtw(s, t, window):
    n, m = len(s), len(t)
    w = np.max([window, abs(n-m)])
    dtw_matrix = np.zeros((n+1, m+1))
    
    for i in range(n+1):
        for j in range(m+1):
            dtw_matrix[i, j] = np.inf
    dtw_matrix[0, 0] = 0
    
    for i in range(1, n+1):
        for j in range(np.max([1, i-w]), np.min([m, i+w])+1):
            dtw_matrix[i, j] = 0
    
    for i in range(1, n+1):
        for j in range(np.max([1, i-w]), np.min([m, i+w])+1):
            cost = abs(s[i-1] - t[j-1])
            # take last min from a square box
            last_min = np.min([dtw_matrix[i-1, j], dtw_matrix[i, j-1], dtw_matrix[i-1, j-1]])
            dtw_matrix[i, j] = cost + last_min
    return dtw_matrix
Python

Nella funzione pre­sen­ta­ta nell’esempio di codice all’inizio vengono passati tre parametri. Prima i due segnali da ana­liz­za­re vengono passati nei parametri chiamati s e t. So­li­ta­men­te per i segnali si tratta di matrici o vettori. Il parametro window permette di spe­ci­fi­ca­re con quanti altri elementi può avvenire un ab­bi­na­men­to.

Nella funzione viene prima creata una matrice, ini­zia­liz­za­ta con il valore infinito. La fase centrale del DTW si svolge negli ultimi due cicli for annidati: ai costi che sono salvati nella variabile costs e che si ricavano dalla distanza dei due valori di input sul ri­spet­ti­vo indice si somma il valore salvato nella variabile last_min.

Si tratta di un valore che per via della pro­gram­ma­zio­ne dinamica deriva dai valori già calcolati. Si sceglie il minimo dai valori cir­co­stan­ti già calcolati e lo si aggiunge ai costi pre­ce­den­te­men­te con­teg­gia­ti. Questo passo sta­bi­li­sce se due elementi sono abbinati di­ret­ta­men­te, se si aggiunge un elemento oppure lo si elimina.

Una volta eseguita la funzione, si riceve una matrice di distanza da cui si può leggere il percorso di warping.

Al­ter­na­ti­ve al dynamic time warping

Ulteriori pos­si­bi­li­tà al­ter­na­ti­ve al DTW per il ri­co­no­sci­men­to di pattern nelle sequenze di valori e serie temporali sono:

  • Cor­re­la­tion Optimized Warping (COW)
  • Analisi dei dati fun­zio­na­le
  • Modello di Markov nascosto
  • Algoritmo di Viterbi
Vai al menu prin­ci­pa­le