• Non ci sono risultati.

deriva dei dati: metodologia e strumenti utilizzati

2. Data Distribution-based Drift Detection: la seconda categoria più gran- gran-de di algoritmi è quella che si basa sulla distribuzione gran-dei dati per rilevare la

4.5 Strumenti di implementazione usati

curva. Successivamente per ogni tempo di test ti si effettuano le nuove predizioni delle etichette, si uniscono i dati di test con i dati di training e su questi viene ricalcolata la curva delle distanze medie intra cluster per tutti i punti. Per rendere confrontabili le curve ottenute al tempo t0 e nei tempi successivi di test t viene fatto un downsample sull’unione di train e test per ottenere una cardinalità pari a quella di training. A questo punto si plotta la curva ordinata delle distanze intra-cluster e si osserva il suo spostamento, più la curva si alza, maggiore sarà la distanza tra i punti e di conseguenza minore sarà la coesione all’interno della classe, implicando così la presenza di una deriva dei dati. A questo punto per poter quantificare la variazione della distribuzione dei dati e quindi il drift si calcola, come visto già in [39], il Mean Arctangent Absolute Percentage Error (MAAPE) tra i valori delle distanze nel seguente modo:

AAP Et = arctan

3

-DistanzaIntraClustert− DistanzaIntraClustert0 DistanzaIntraClustert

-4

M AAP E = 1 N

N

Ø

t=1

AAP Et

Il M AAP E indica il valore del degrado totale, se moltiplicato per la percentuale di punti NNc si ottiene il valore approssimato del degrado per la singola classe.

Le due metodologie proposte sono delle alternative per il rilevamento del concept drift in modo non supervisionato. Nel capitolo successivo saranno riportati i risultati delle due alternative, sarà fatto un confronto e si determinerà la soluzione migliore per il caso di studio.

4.5 Strumenti di implementazione usati

4.5.1 Python

Per le analisi oggetto di questa tesi il linguaggio di programmazione usato è Python.

Si tratta di un linguaggio di programmazione ad alto livello, rilasciato per la prima volta nel 1991 dal suo creatore Guido Van Rossum. Python supporta diversi paradigmi di programmazione, da quella procedurale con l’uso di funzioni a quella ad oggetti. [43] È fornito di una libreria built-in e di una gestione automatica della

memoria e delle eccezioni. Queste peculiarità rendono Python uno dei linguaggi più ricchi e comodi da usare. Adotta un meccanismo garbage collection che si occupa automaticamente dell’allocazione e del rilascio della memoria. Questo consente al programmatore di usare variabili liberamente senza dichiararle e allocarle ma-nualmente. Python è nato per essere un linguaggio facilmente interpretabile, con una sintassi pulita e snella che permette una programmazione molto chiara e senza ambiguità in cui i blocchi logici vengono costruiti allineando le righe. Si tratta di un linguaggio che si definisce pseudocompilato, in cui un interprete si occupa di analizzare il codice sorgente, ovvero file testuali con estensione .py, e se sintattica-mente corretto di eseguirlo. Il codice sorgente non viene convertito direttasintattica-mente in linguaggio macchina, ma passa prima da una fase di pre compilazione in bytecode per essere poi riutilizzato dopo la prima esecuzione del programma ed evitare così di reinterpretare ogni volta il file sorgente migliorando le prestazioni. A differenza del C non esiste una fase di compilazione separata che generi un file eseguibile a partire da quello sorgente. Il file sorgente Python può essere interpretato e eseguito dalla maggior parte delle piattaforme esistenti. È un linguaggio portabile sviluppato in ANSI C ed è possibile usarlo su qualsiasi piattaforma purché abbia installato l’interprete Python. Python è gratuito e può essere liberamente modificato e ridistribuito con licenza open-source. Tutte queste caratteristiche lo rendono uno dei linguaggi più diffusi al mondo in quanto può essere usato in moltissimi campi applicativi.

Libreria scikit-learn

È una libreria open source di apprendimento automatico per il linguaggio di programmazione Python. Si tratta di un modulo integrato ad altri pacchetti usati solitamente per l’apprendimento automatico classico ad esempio numpy, matplotlib e scipy. È uno strumento molto potente e in grado di risolvere la maggior parte dei problemi di machine learning. Fornisce una vasta gamma di algoritmi di apprendimento supervisionato e non supervisionato, oltre alle varie metriche di qualità dei modelli. Le analisi che sono state effettuate hanno sfruttato gli algoritmi di machine learning presenti in questa libreria. [44]

4.5 – Strumenti di implementazione usati

Libreria pandas

Questa libreria ha l’obiettivo di eseguire analisi di dati reali su Python, essa è uno strumento utile per manipolare i dati in modo flessibile e potente. Pandas fornisce delle strutture dati e delle funzioni progettate per far lavorare in modo rapido, facile ed espressivo i dati strutturati. È uno degli elementi chiave che rendono Pyhton potente e produttivo nel contesto del data analysis. Nell’ambito del progetto di tesi è stata usata per gestire i dati in formato Json. Essi sono stati strutturati in un oggetto DataFrame, che è alla base di questa libreria. Il DataFrame è una struttura tabellare bidimensionale e orientata per colonne con etichette di righe e di colonna. Pandas inoltre combina le caratteristiche molto performanti di NumPy con una manipolazione flessibile di fogli di calcolo o database relazionali. Ha una funzionalità molto sofisticata di indicizzazione per semplificare la rimodulazione, la suddivisione e le aggregazioni di sottoinsiemi di dati. [45]

Libreria Matplotlib

Matplotlib è la libreria Python più usata per la produzione di grafici e altre visualizzazioni di dati 2D. Si integra bene con IPython fornendo un ambiente interattivo per la stampa e l’esplorazione dei dati. Matplotlib fornisce una grande selezione di grafici che aiutano a capire i modelli, le tendenze e le correlazioni all’interno dei dati. È importante per fornire una maggiore comprensione delle informazioni quantitative. [45]

4.5.2 Json

JavaScript Object Notation o in breve JSON è un formato di scambio di dati introdotto nel 1999 ed è stato ampiamente adottato a metà degli anni 2000. È il formato standard più usato nell’ambito della comunicazione tra i servizi web e i loro clienti. JSON deriva da JavaScript ma è un formato indipendente dalla piattaforma. Sono tanti i linguaggi di programmazione in grado di leggere e gestire i file di questa estensione. I file JSON sono formati da stringhe, ciascuna delle quali rappresenta un oggetto. In Python i file JSON possono essere letti tramite Pandas con il metodo read_json() che restituisce un DataFrame che memorizza i dati sotto forma di colonne e righe in modo da renderli pronti per gestirli e usarli per le analisi. [46]

Capitolo 5

Caso di studio e risultati