Lo scopo di questo articolo è capire come strutturare un progetto di data mining nel modo più corretto. Quindi, vediamo parte per parte tutto ciò di cui hai bisogno.
Il data mining è una delle fasi della scoperta della conoscenza che prende in input dei dati (dataset) ben preprocessati e restituisce in output un modello in grado di predire l’attributo di classe di nuovi oggetti.
In rete puoi trovare diversi progetti già realizzati su specifici dataset, con vari scopi come ad esempio:
- Diagnosticare malattie;
- Riconoscere frodi finanziarie;
- Analizzare il sentiment;
- Classificare email spam;
- Rilevare anomalie in sistemi di rete;
- Classificare segnali biometrici;
- Valutare il rischio di assicurazione;
- Rilevare cambiamenti climatici;
- Identificare pubblicità ingannevoli;
- Prevedere il successo di startup;
- Valutare la sicurezza alimentare;
- Classificare le sicurezza stradale.
Cosa serve per realizzare un progetto di data mining?
Vediamo, quindi, di cosa hai bisogno per realizzare un progetto di data mining.
Linguaggi di programmazione
Innanzitutto, devi scegliere quale linguaggio di programmazione utilizzare per portare avanti il tuo progetto. Ti consiglio di utilizzare Python perchè attualmente è il linguaggio che si presta meglio a questo scopo grazie alla possibilità di lavorare ad alto livello e alla presenza di numerose librerie da importare comodissime sia nell’ambito del data mining sia in quello del machine learning.
Strumenti e tool da utilizzare
Infatti, tramite il pacchetto Jupyter (eseguibile tramite Anaconda) in Python sono presenti i Notebook. Come fa pensare il nome stesso si tratta di pagine che possono incorporare al loro interno sia delle celle con testo descrittivo e sia delle celle con codice di programmazione, il quale può essere anche eseguito e ottenere i risultati in delle sezioni del notebook stesso.
È possibile lavorare con i notebook jupyter anche tramite l’ambiente di sviluppo PyCharm (solo nella versione a pagamento che nel caso tu fossi uno studente universitario puoi richiedere gratuitamente).
In alternativa, se non vuoi lavorare in locale perchè le risorse della tua macchina sono limitate, puoi anche utilizzare i notebook tramite il servizio Colab di Google ed utilizzare le risorse distribuite.
Un’altra piattaforma di cui avrai bisogno durante lo svolgimento del tuo progetto è GitHub per il versioning del tuo codice.
Scegliere il dataset
Alla base di un progetto di data mining vi è un dataset su cui lavorare. Se non hai un dataset a disposizione puoi scaricarlo in rete da uno di questi siti: Kaggle, Google Dataset Search, Data.gov.
La scelta del dataset su cui lavorare dipende tanto anche dal tipo di task di data mining che si vuole eseguire, come ad esempio classificazione binaria, classificazione multipla, ecc…
Cerca sempre dei dataset che abbiano anche una documentazione accurata perchè a volte capita di non riuscire nemmeno ad interpretare bene il significato di alcuni attributi.
Il dataset per essere buono deve avere una dimensione ragionevole, altrimenti non ha senso fare analisi in quanto il modello non apprenderebbe nel modo corretto. Inoltre, dovrebbe essere abbastanza bilanciato anche se, in questo caso, eventualmente si può sopperire con azioni di bilanciamento.
Come impostare il progetto
Arrivati a questo punto vediamo quali sono i passi necessari (correlati alla scoperta della conoscenza) da compiere per la realizzazione del tuo progetto di data mining.
L’applicazione di tecniche di data mining su determinati dataset ha lo scopo di fornire informazioni utili e comprensibili ad aziende che non hanno nulla a che fare con il mondo tecnologico. Per tale motivo è molto importante presentare i risultati ottenuti (anche quelli parziali) in modo chiaro anche a chi non è del settore di competenza. Ad esempio un imprenditore del settore food non è interessato ai tecnicismi, l’unico suo interesse è individuare dei comportamenti comuni nei suoi clienti e sfruttarli a suo favore.
Quindi, è importante integrare la parte di data visualizzation in ogni fase del progetto perchè si tratta di un mezzo potente per esplorare, comprendere e comunicare relazioni importanti nei dati in tutte le fasi del processo di scoperta della conoscenza.
Introduzione
Innanzitutto, nell’introduzione del progetto è buona norma inserire le informazioni dell’autore. Poi dopo aver aver compreso il dataset, procedi con la sua descrizione (com’è formato? quali sono gli attributi? ecc…) e con gli obiettivi del progetto.
Setup & caricamento dati
Nella fase di setup importa tutte le librerie Python utili allo sviluppo del progetto, le principali sono: Pandas, Seaborn, Matplotlib, Numpy, Scikit-Learn.
Organizza le cartelle del tuo progetto e dedicane una al dataset che dovrai analizzare. Quindi, carica i dati da analizzare, tramite gli opportuni metodi delle librerie, creando i dataframe su cui andare a lavorare.
Preprocessing
Cosa rientra nel preprocessing? Nella maggior parte dei casi i dataset a nostra disposizione non sono pronti al punto tale da applicare subito gli algoritmi di data mining, quindi è necessario apportare delle modifiche preliminari. Questa fase è legata molto alla pulizia (data cleaning) e all’organizzazione dei dati.
In questa fase rientrano:
- la gestione dei valori mancanti (Nan) perchè ad esempio ci informazioni che non sono state raccolte. Si può risolvere in diversi modi, può procedere con la rimozione, puoi ignorare questi valori in fase di analisi, puoi compilare manualmente o in modo automatico i dati valori mancanti;
- la rimozione di valori duplicati, verifica se nel tuo tuo dataset ci sono degli oggetti uguali e rimuovili;
- la creazione di nuovi attributi per catturare informazioni rilevanti in modo più efficace;
- la rimozione dei valori non necessari, dovrai decidere quali features droppare perchè inutili (ad esempio l’attributo ID potrebbe non servire ai fini della classificazione). In questo caso è necessario individuare fin da subito quelli che sono gli attributi che più influenzano quello che ci interessa predire;
- l’aggregazione può combinare due o più attributi in uno (riduce la dimensionalità). È utile per stabilizzare i dati (perchè quando sono troppo dettagliati è difficile individuare informazioni utili) e per effettuare dei cambiamenti di scala (ad esempio da città a regione);
- il campionamento per selezionare dei sottoinsiemi rappresentativi (altrimenti il risultato è falsato) di dati dal dataset di partenza in quanto in alcuni casi questo ha delle dimensioni mastodontiche (riduce la cardinalità). Riducendo la quantità di dati da analizzare si riduce anche il costo delle risorse computazionali;
- la rimozione degli outlier, la rimozione di oggetti con caratteristiche molto diverse da tutti gli altri all’interno del dataset che influenzano negativamente l’analisi complessiva.
Trasformazione dei dati
La fase di trasformazione dei dati, invece, è orientata verso l’ottimizzazione. In questa rientrano operazioni come:
- la discretizzazione da valori continui a valori discreti;
- la binarizzazione, ovvero la rappresentazione di attributi discreti tramite attributi binari;
- la normalizzazione e la standardizzazione;
- l’encoding degli attributi categorici in formato numerico.
Bilanciamento del dataset
Prima di applicare qualsiasi algoritmo di data mining è estremamente necessario verificare che il dataset sia bilanciato sulla classe da predire, altrimenti il modello potrebbe non apprendere correttamente il pattern nei dati.
Eventualmente, bisogna bilanciare il dataset con le opportune tecniche. In ogni caso è bene mostrare all’utente finale tramite grafico se il dataset sia bilanciato o meno.
Recap
A questo punto il dataset è pronto per essere sottoposto agli algoritmi di data mining.
In questa fase, per chiarezza, è bene fare un recap dei risultati ottenuti in fase di preprocessing e trasformazione degli attributi (ad esempio tramite la funzione describe() di Pandas che permette di calcolare le statistiche descrittive di un dataframe).
Partizionamento del dataset in train set e test set
Il modello risultante nella fase di data mining viene calcolato su una parte dell’intero dataset a disposizione, mentre la restante parte è utilizzata a scopo di verifica. Quindi, il dataset di partenza viene partizionato in:
- Training Set, il quale contiene un insieme di oggetti (compresi di attributo di classe) su cui il modello viene addestrato;
- Test Set, il quale viene utilizzato per validare il modello generato.
Il partizionamento che andrai a fare dovrà continuare ad essere rappresentativo di quello originale. Solitamente, il training set contiene il 70-80% di tuple del set di partenza, mentre il test set solo il 30-20%.
Creazione modello (o più di un modello)
È arrivato il momento di realizzare il tuo modello addestrato sul training set. In base all’obiettivo del tuo progetto (ed ai task che dovrai eseguire) puoi utilizzare diversi modelli:
- Alberi decisionali;
- KKN Neighbors;
- Clustering gerarchico;
- Naive Bayes;
- Regressione logistica;
- Support Vector Machines;
- Artificial Neural Network;
- Random Forest;
- AdaBoost;
- e tanti altri.
Confronto modelli
Il tuo lavoro è quasi al completo: manca la parte più entusiasmante e tanto attesa, ovvero il confronto dei risultati ottenuti dall’applicazione dei vari modelli.
💡 Ricapitolando:
- Introduzione
- Setup & caricamento dati
- Preprocessing
- Trasformazione dei dati
- Bilanciamento del dataset
- Recap
- Partizionamento del dataset
- Creazione modelli
- Confronto modelli
Conclusioni
Come ogni progetto didattico o lavorativo ti consiglio di renderlo pubblico (tranne nel caso in cui non ti viene consentito) tramite le piattaforme di repository online, come GitHub. Per quale motivo renderlo accessibile a tutti? Per infoltire il tuo portfolio di lavori per nuove occasioni professionali, ma anche solo per ricontrollare il progetto in momenti futuri.
Non dimenticarti di affiancargli una relazione dettagliata e una presentazione comprensibile (magari con Canva) mettendo in evidenza tutte le attività svolte e i risultati ottenuti.