Di big data hanno parlato tutti negli ultimi anni, e anche se ora è passato un po’ di moda come argomento, abbiamo trovato fondamentale scriverci un post a riguardo, dato che spesso veniamo chiamati da clienti che pensano di necessitare soluzioni per analisi “big data”, quando in realtà hanno solo bisogno di ordinare la struttura del loro database o viceversa pensano di avere solo un database “male organizzato” quando in realtà stanno affrontando una vera e propria questione “big data” senza averne piena coscienza.
Partiamo però dalle basi, per evitare confusione.
La nostra definizione di big data (ovviamente semplificata per essere chiari anche a chi mastica poco di tecnologia) è :
Per big data si intendono tutte le collezioni di dati di dimensioni “notevoli” e con strutture difficili da “confrontare tra loro”.
Come si può vedere la definizione può essere divisa in 2 parti:
- La prima riguarda le dimensioni
- La seconda riguarda la strutturazione dei dati (e di conseguenza il loro contenuto)
Analizziamo quindi le singole componenti.
Cosa intendiamo per struttura di dimensioni notevoli?
Sicuramente qualche migliaia di dati non è considerata notevole come dimensione. Bisogna infatti sempre astrarsi dalla dimensione “umana” e ragionare in termini di potenza-macchina.
Noi adottiamo un metodo “sperimentale” per capire se considerare la struttura “grande abbastanza” per essere considerata big data.
Su un database (già ottimizzato) lanciamo una query di media complessità. Se il tempo di risposta della macchina (anche essa deve essere mediamente potente ed ottimizzata) è superiore ai 500ms allora i dati sono abbastanza per considerare la collezione un candidato ideale alla definizione di big data.
Cosa intendiamo per dati difficili da confrontare tra loro?
Una volta che la collezione è abbastanza grande per attribuire l’etichetta di big data bisogna verificare anche la difficile compatibilità degli oggetti all’interno della collezione.
Infatti se immaginiamo ad un database che contiene l’insieme delle varietà di mele questo sarà facilmente confrontabile/interrogabile al suo interno, in quanto le mele hanno un insieme di dati strutturati di tipo assoluto ed oggettivo (basta pensare al colore, la dimensione, il grado di dolcezza, …).
Quindi l’insieme di tutte le varietà di mele presenti al mondo non rappresenta un problema di big data.
Viceversa, se prendiamo l’insieme dei gusti/passioni di tutti gli esseri umani di un dato luogo, più o meno esteso, qui si presenta un problema di big data.
Se pensiamo ad esempio di fare un’analisi di compatibilità sui generi musicali tra due persone a caso nel database ci troveremo a dover confrontare oltre a 2 quantità diverse di preferenze anche 2 sfumature diverse di concetti simili.
Se infatti prendiamo due individui con solo una passione musicale evidenziata dovremo metterci a confrontare le sovrapponibilità possibili tramite un algoritmo decisionale simile ad una intelligenza artificiale.
Se infatti ad un individuo piace il genere rock ed al secondo invece piace l’heavy metal pur non essendo lo stesso genere i due individui hanno un grado di compatibilità che sicuramente è superiore a due individui che hanno come preferenze “jazz” e “musica dance”.
In questo genere di strutturazioni dati la parte del leone negli ultimi anni la stanno facendo i social network, in quanto l’enorme numero di iscritti porta con se un’enorme quantità di dati intrinsecamente difficili da analizzare e confrontare, in quanto molti di essi si basano appunto si gusti personali degli utenti, che vanno analizzati per eseguire profilazioni di carattere pubblicitario.
Per sopperire a questi problemi tecnici nelle strutture social si utilizzano due tecniche principali:
- Si struttura il database in modo che ogni oggetto sia a sua volta una ministruttura organizzata con uno scheletro generico e i dati al suo interno “liberi” (non vincolati ad una struttura generale)
- Si approssimano le affinità seguendo dati immessi in tabelle comuni (denominate anche tabelle di indice) e sistemi di approssimazione basati su alberi di affinità e test.
Questo cosa vuol dire?
Che ad esempio ogni utente in una struttura social avrà associato un suo set di tabelle che si popoleranno in modo diverso a seconda dei dati che lui immetterà all’interno della piattaforma, seguendo solo delle linee guida generali, a differenza dei database “statici” e che questi dati verranno confrontati tra loro sottoponendo (inizialmente casualmente) dei contenuti ad altri utenti non strettamente affini (ad esempio una canzone “heavy metal” ad un utente che ha indicato “rock” come preferenza) e analizzando la tipologia di risposta (mi piace, non mi piace) definendo quindi su base percentuale in grado di affinità sulle due preferenze.
In questo modo su larghissime collezioni di dati sarà possibile avere gradi di affinità sempre più precisi, in modo da prevedere quasi in modo assoluto i gusti di un utente.
Per chi volesse approfondire l’analisi dati dei social network consiglio la lettura del libro “Social media mining, estrarre ed analizzare informazioni dai social network” di Roberto Marmo.
LEAVE A COMMENT