Machine Learning
14 Dicembre 2018
Humanativa

Algoritmi di Neuroimaging per il Clustering di Traiettorie GPS

L’utilizzo di massa di dispositivi portatili come smartphone e smartwatch ci permette di avere uno storico completo della nostra vita. Grazie alle informazioni collezionate da questi terminali, riusciamo a ricostruire, con accuratezza estrema, lo storico dei nostri spostamenti.

L’applicazione di algoritmi di machine learning ai dati di posizionamento, ci permette di poter estrarre informazioni molto rilevanti utili a capire i nostri comportamenti. Alcuni di questi pattern sono ad esempio: il percorso che facciamo da casa a lavoro, le gite fuoriporta, quali locali frequentiamo il sabato sera etc..

In questo articolo descriveremo un efficiente e pratico algoritmo non supervisionato di machine learning per poter effettuare l’identificazione di pattern di traiettorie. Nella prima parte descriveremo l’algoritmo di clustering utilizzato per poter scoprire pattern, nella seconda invece mostreremo come realizzare concretamente tale algoritmo in Python.

Un Algoritmo di Neuroimaging per il Clustering di Traiettorie GPS

Invece di utilizzare i classici algoritmi di clustering come KMeans o DBSCAN, in questo articolo utilizzeremo un algoritmo di cluster comunemente utilizzato nell’analisi di immagini cerebrali.

QuickBundle (QB) (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3518823/pdf/fnins-06-00175.pdf) è un semplice e compatto algoritmo di clustering utilizzato per clusterizzare le fibre di materia bianca del cervello estratte tramite l’applicazione di algoritmi di trattografia (https://en.wikipedia.org/wiki/Tractography).

Da una semplice osservazione delle immagini mostrate qui di seguito, possiamo facilmente notale che le traiettorie GPS sono molto simili alle fibre di materia bianca.

Figura 1 Esempio di fibre di sostanza bianca ottenute tramite algoritmo di trattografia.
Immagine da https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3518823/pdf/fnins-06-00175.pdf

L’idea principale è quella di trattare una singola traiettoria GPS come una fibra di sostanza bianca e dunque unire nello stesso cluster traiettorie “simili”. Nel resto di questo articolo dunque assumeremo che Traiettoria GPS = Fibra di materia bianca.

Un esempio che mostra come l’algoritmo sia capace di raggruppare fibre in base alla loro traiettoria spaziale, è visibile nella seguente immagine.

Figura 2 QuickBundle centroids with different thresholds. Imagine da Garyfallidis et al. Frontiers In Neuroscience, vol 6, 2016.

Aggiustando il parametro di threshold è infatti possibile raggruppare fibre più o meno distanti in accordo alla loro forma. Poiché il comportamento dell’algoritmo di clustering è fortemente dipendente dal valore assegnato al parametro di threshold, in contesti applicativi reali è necessario effettuare un tuning di questo parametro.

Altro risultato interessante ricavabile dall’algoritmo è legato alla capacità di generare un centroide caratteristico delle traiettorie aggregate in un dato cluster. Grazie a tale centroide è infatti possibile ottenere una rappresentazione compatta di un gruppo di traiettore.

Clustering delle Traiettorie GPS in Python

Vediamo ora come utilizzare praticamente, tramite linguaggio Python l’algoritmo precedentemente descritto su un dataset reali di traiettorie GPS.

I dati utilizzati in questo articolo sono relativi al tracciamento giornaliero degli spostamenti di un dato soggetto. Il dataset, rilasciato da Microsoft Research è disponibile al seguente link (https://www.microsoft.com/en-us/download/details.aspx?id=52367). Mentre una sua descrizione più approfondita è disponibile qui (https://yidatao.github.io/2016-12-23/geolife-dbscan/)

Prima di effettuare un’analisi approfondita dei dati, effettuiamo un plot delle coordinate GPS su google map utilizzando la libreria gmplot (https://github.com/vgm64/gmplot).

Figura 3 Traiettorie GPS nel dataset

Iniziamo dunque creando una funziona di distanza che tenga in conto del fatto che le traiettorie sono composte da coordinate GPS come descritto nell’immagine seguente.

Figura 4 Codice per calcolare le distanza tra coordinate GPS nelle traiettorie

Il codice calcola dunque la distanza tra tutte le coppie di punti all’interno delle traiettorie. E’ da notare che tale distanza può essere calcolata se e solo se le traiettorie hanno tutte un numero uguale di punti. Modificare tale porzione di codice affinché permetta di calcolare distanza anche tra traiettorie formate da punti diversi non è complesso.

Una volta definito come l’algoritmo QB deve calcolare la distanza tra i punti delle traiettorie, possiamo lanciare tale algoritmo sui dati di riferimento come descritto nella seguente immagine.

Figura 5 Codice Python per eseguire l’algoritmo di clustering

Possiamo dunque, sempre tramite l’ausilio di gmplot, rappresentare graficamente i diversi cluster ottenuti dall’applicazione di tale algoritmo su google map come mostrato nelle immagini qui di seguito.

Figura 6 Cluster #0

Figura 7 Cluster #2

Figura 8 Cluster #30

Conclusione

In questo articolo abbiamo descritto un metodo semplice e veloce per clusterizzare traiettorie ottenute da rilevatori GPS. Al fine di raggiungere tale scopo abbiamo utilizzato un algoritmo non convenzionale utilizzato ampiamente nell’ambito nel neuroimaging.

La limitazione principale di questo algoritmo è legata alla scelta del parametro di threshold utilizzato. Tale problema però può essere facilmente risolto tramite un dettagliato processo di selezione.

Info su: https://medium.com/isiway-tech/gps-trajectories-clustering-in-python-2f5874204a53

Condividi
algoritmi
big data
clustering
conoscere per innovare
data
humanativa
machine learning
neuroimaging
python
reti neurali
traiettorie gps

Articoli Tecnici

Data governance
6 Marzo
Humanativa

La Democratizzazione del Dato

La democratizzazione del dato si riferisce alla pratica di rendere […]

Security
20 Ottobre
Humanativa

HN Security all’evento “Pillole di Cybersecurity”

Con piacere il nostro collega Fabrizio Sensibile, Senior Security Advisor […]

Security
18 Luglio
Humanativa

HN Security presente all’evento OSSIF di ABI

HN Security ha partecipato all’evento OSSIF di ABI fornendo un […]

Machine Learning
4 Maggio
Humanativa

Reti neurali Generative (GAN)

Le GAN, fanno parte dei modelli di reti neurali generativi. Un […]

Machine Learning
13 Aprile
Humanativa

Machine Learning: Il Reinforcement Learning

Il Reinforcement Learning è uno dei temi più scottanti nel […]

Machine Learning
24 Marzo
Humanativa

Reti neurali: Feed-forward e Recurrent Neural Network

Modelli ricorrenti (RNN) Le reti neurali possono essere suddivise in […]

Data governance
4 Marzo
Humanativa

DENODO & HUMANATIVA, insieme per la Data Governance

La governance dei dati definisce come le imprese gestiscono la […]

Machine Learning
2 Febbraio
Humanativa

Reti neurali feed-forward – CNN – Convolutional Neural Network

Nel precedente articolo abbiamo descritto in linea generale il funzionamento […]

Machine Learning
18 Gennaio
Humanativa

Deep Learning la tecnologia del futuro, cosa è e perché rappresenta la prossima frontiera di Humanativa

In questi anni l’attività di ricerca e sviluppo realizzata da […]

Security
24 Giugno
Humanativa

Conosci il nemico

Marco Ivaldi, Technical Director di HN Security Il 9 giugno […]