Nella mia visione di cittadino, la miniera è sempre stata un qualcosa di lontano.scroodge

Se da adolescente mi avessero chiesto di associare un’immagine a quella dello scavare in miniera probabilmente avrei risposto con i sette nani di Biancaneve o Paperon dei
Paperoni nel Klondike.

Da “grande”, invece, sono entrato in contatto con una nuova disciplina detta “data mining” con la quale si è soliti  indicare l’insieme delle tecniche (principalmente matematiche) utilizzate per “scavare” non fra le pietre bensì fra i dati.

Ora, quindi, ogni volta che sento termini come “scavare” o “miniera” associo a queste parole sequenze di numeri da analizzare presenti sugli hard disk dei computer di mezzo mondo. Ammetto che questa associazione è ancora più strana di prima… ma sono le inevitabili deformazioni professionali di chi ha a che fare con la “matematica applicata”.

Però devo dire che, almeno secondo me, il nome “data mining” rende bene l’idea. Infatti così come il principale compito dei minatori è quello di estrarre piccole parti di metallo prezioso in mezzo a materiale vario, analogamente, chi si occupa di “data mining“, ricerca delle informazioni utili  fra una gran quantità di dati.

Data Mining: esempi per capire il problema

In questo ultimo periodo, il data mining ha assunto una importanza fondamentale a causa del fatto  che viviamo in una epoca di “abbondanza dei dati”.

Se, infatti, nel passato la parte difficile e lunga del lavoro dei ricercatori consisteva nel raccogliere i dati (spesso anni di lavoro), adesso, attraverso le nuove tecnologia, si è letteralmente sommersi da informazioni (molte delle quali inutili) raccolte in maniera spesso automatica o con “minimo sforzo” dai sistemi informatici.

Faccio solo alcuni esempi per chiarire. Considerate:

  • i dati degli acquisti delle carte di credito di milioni di utenti abbinati con i loro dati personali;
  • i dati raccolti dai satelliti di osservazione che girano sulla nostra testa. In molti casi sono migliaia e migliaia di immagini raccolte per decenni;
  • i dati delle società telefoniche relativi alle telefonate fatte da milioni di utenti;
  • tutte le informazioni che spontaneamente miliardi di utenti inseriscono su social network come Facebook e Twitter;
  • i dati di tipo biomedicali acquisiti dai centri di analisi e dagli ospedali, per non parlare degli studi  biologici sulle  sequenze di porzioni di DNA

Ciascun punto di questo elenco rappresenta una serie di dati a cui applicare le tecniche del data mining. Infatti, la quantità di informazioni è così elevata (per questo è stato coniato il termine “Big Data”)  che è assolutamente impensabile che una o più persone possano avere il tempo anche solo di guardare tutti i dati… figuriamoci di analizzarli.

E’ necessario, perciò, utilizzare:

  • delle tecniche matematiche per analizzare questi dati
  • linguaggi di programmazione che realizzano quelle tecniche
  • architetture hardware in grado di conservare in modo ordinato quantità di informazioni via via crescenti.

Vedremo in questo articolo di inquadrare il problema e,  nei successivi post,  degli esempi dei tipici metodi di analisi dei dati.

Alla ricerca di  clusters e patterns

Uno degli approcci più generali che si usa consiste nel ricercare se fra i dati è possibile ritrovare dei cluster ovvero raggruppamenti di dati con caratteristiche comuni. In alternativa  si ricercano dei pattern, ovvero degli schemi ricorrenti, che si ripetono nei dati. In questo modo i dati possono essere in qualche modo interpretati o caratterizzati associando a questi cluster o pattern dei significati.

Nella seguente immagine (la fonte di questa immagine la trovate tra i link in fondo al post) mostriamo degli esempi di  pattern  In ciascuno dei seguenti casi è presente un motivo che si ripete.

pattern_bis

Esempio immagini in cui sono presenti dei pattern che si ripetono

Un esempio di cluster, invece,  (tratto anche questo da una delle dispense che citiamo in fondo a questo post) è quello mostrato nella figura successiva.

pattern_datamining

In questo caso è analizzato il problema (assolutamente molto studiato da finanziarie e banche) della restituzione dei prestiti.

Nel grafico con le “x” sono rappresentate le persone che non restituiscono un prestito e con i “o” quelle che lo restituiscono.

Si osserva che (ovviamente è un esempio a scopo didattico) i due gruppi di pagatori e non pagatori, se rappresentati al variare dello stipendio, sono divisibili quasi esattamente in due gruppi da un valore detto di soglia. In altri termini se lo stipendio è minore di questa soglia, la probabilità di non restituire il prestito è talmente alta da sconsigliare la concessione del prestito. Si dimostra, quindi, che l’informazione sullo stipendio (come ben sa chiunque abbia chiesto un mutuo!) è fondamentale e discrimina fra i due gruppi.

In generale, trovare cluster significa raggruppare dati in classi in base alla loro distanza (magari in un post futuro affronteremo il problema delle distanze, al momento lasciamo l’idea intuitiva di distanza euclidea).

Nella figura successiva mostriamo un altro esempio con tre classi.

cluster_datamining

Esempio di cluster di dati suddivisi in tre gruppi

La cosa interessante è pensare che sugli assi si possono mettere diverse grandezze (anche molto diverse fra loro) e  che gli assi possono essere anche più di tre. L’uso di più dimensioni deriva dal fatto che punti  lontani fra loro in 3 dimensioni potrebbero essere visti  vicini se guardati in uno spazio con n dimensioni.

Ottenere un raggruppamento in classi simile a quello mostrato nella precedente figura è tutto tranne che semplice.

Nei prossimi post cercheremo di illustrare le  operazioni necessarie per arrivare a dei risultati simili a quelli presentati.

In particolare mostreremo i primi passi di quella che è considerata l’analisi statistica dei dati e lo faremo utilizzando un linguaggio di programmazione nato a posta per questo: R.

Link utili

Dispense sul Data Mining: http://bias.csr.unibo.it/golfarelli//DataMining/MaterialeDidattico/DMISI-Introduzione.pdf

Metodi statistici per il Data Mining: http://vivaldi.dst.unive.it/~mantovan/didattica/mdp/dispense/Predictive%20Modeling%20for%20Classification_R.pdf

Altre dispense sul data mining: http://usefulpatterns.org/msop/slides/part1.pdf

Informazioni sul linguaggio R: http://www.r-project.org/

CC BY-NC-SA 4.0
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.