1 Il Data Mining una gran quantità di dati, ma quello che esse realmente M accumulano vogliono sono le informazioni. olte organizzazioni, industriali, commerciali, scientifiche, nelle loro attività I sistemi operazionali registrano le transazioni così come si presentano, notte e giorno, e immagazzinano i dati in file e database. I dati descrivono solo quello che accade e non forniscono giudizi o interpretazioni ne sono la base d'appoggio per intraprendere qualsiasi tipo di azione. Essi vengono registrati in modo sufficientemente strutturato, così che una sessione di registrazione descrive abbastanza chiaramente un fatto, un evento, ma molto spesso questa strutturazione è mancante. Alcuni analisti del settore industriale hanno stimato che i dati non strutturati rappresentano circa 80% dei dati raccolti dalle imprese, contro il 20% di dati strutturati. La rivoluzione digitale in questi ultimi anni ha provocato una notevole proliferazione di dati. Per di più la digitalizzazione delle informazioni risulta un processo abbastanza semplice e la memorizzazione è economica. È stato stimato che ogni 20 mesi raddoppia la quantità di dati accumulati e in futuro ci saranno certamente ulteriori notevoli miglioramenti. Il progredire delle tecniche di cattura e immagazzinamento di informazioni ha spinto le organizzazioni di ogni genere a collezionare enormi quantità di dati poiché essi raccolti in strutture più o meno complesse, contengono delle risorse, delle informazioni sfruttabili, evidenti o nascoste, con differenti gradi di utilità. Enormi quantità di dati non sono chiaramente di utilizzo immediato, ma richiedono una certa abilità nell'estrazione di informazioni. 1.1 Tradizione Tradizionalmente l'analisi dei dati era un processo “manuale” e l’analista doveva avere famigliarità sia con i dati sia con i metodi della statistica: egli stesso agiva come un sofisticato processore di queries (domande), mentre il elaboratore elettronico era solo un sostegno per il calcolo. Tale strategia di fronte alla crescita dimensionale degli archivi di dati era destinata a fallire. Di conseguenza si è costituita ed é cresciuta costantemente una comunità di ricercatori e professionisti interessati al problema dell’analisi automatica di grandi quantità di dati, nota come "Knowledge Discovery in Databases (KDD) ” (Scoperta di conoscenza nei databases). La prima serie di incontri con argomento il KDD si è tenuta nel 1989 e da allora si sono succedute diverse altre conferenze. 1.2 Nuove Tecniche L'abilità di analizzare e sfruttare database enormi è in ritardo rispetto l'abilità di raccogliere e memorizzare i dati. Una nuova generazione di tecniche e strumenti 1 computazionali è di conseguenza necessaria per agevolare l'estrazione di conoscenza (informazioni significative) dagli archivi di dati. Gli archivi digitali sono presenti dovunque: banche, industrie, supermercati, attività commerciali eccetera e molti processi generano flussi di record che vengono memorizzati in enormi databases, talvolta detti data warehouse (magazzini di dati). Più propriamente un data warehouse è un database costruito per agevolare l’accesso alle informazioni; tipicamente è alimentato da uno o più databases di transazioni e i dati devono essere ripuliti e strutturati per facilitare le queries, i sommari e le analisi. L'hardware e le tecnologie correnti per la gestione di databases permettono l'immagazzinamento e l'accesso ai dati in modo efficiente ed economico, tuttavia i databases in forma grezza, privi cioè di strutture sufficientemente sofisticate, non sono di immediato utilizzo. Come abbiamo detto il metodo tradizionale per trasformare i dati in conoscenza si basa sull'analisi e sull'interpretazione “manuale”, ma per le compiti richiesti oggigiorno, questo tipo di analisi risulta lenta, costosa e altamente soggettiva e contemporaneamente i databases sono cresciuti di dimensione: nel numero di records o oggetti memorizzati (fino a 109), e nel numero di campi o attributi per oggetto (fino a 103). Da ciò segue che il problema dell'estrazione di conoscenza da databases enormi andrà risolto tramite un processo di elaborazione più complesso, formato da molti passi, che possono andare dalla semplice manipolazione dei dati a sofisticate tecniche di inferenza statistica, di ricerca e di ragionamento artificiale. I dati sono il materiale grezzo dai quali si estrae l'informazione. Ma cosa si può apprendere dai dati per quanto riguardo all'allocazione delle proprie risorse in modo più efficiente, o a come soddisfare i propri clienti o a dove indirizzare le ricerche? La tecnologia più recente per affrontare tali problematiche è il data mining (estrazione dai dati). Il data mining sfrutta raffinate analisi statistiche e tecniche di modellazione per scoprire patterns e relazioni nascoste nei database, che i metodi ordinari spesso non scorgono. Si deve ora introdurre la definizione del termine inglese pattern, che in italiano correntemente può significare1: "campione, modello, esempio; disegno (di stoffa), motivo (di un vestito) oppure schema; forma, configurazione (elaborazione) oppure impronta, sagoma (medicina)". Tale termine risulta quindi abbastanza sfumato in italiano, perciò lo useremo sempre nella sua lingua originaria, previa definizione. I dati comprendono un insieme di fatti, e il pattern è un’espressione, in qualche linguaggio, che descrive un sottoinsieme di dati (o un modello applicabile a questo sottoinsieme), le associazioni tra essi, le sequenze ripetute o le regolarità nascoste nei dati. In definitiva un pattern indica una struttura o, in generale, una rappresentazione sintetica dei dati. 1 Conoscenza estratta tramite tecniche di Data Mining manuale dal vocabolario italiano-inglese “il Ragazzini” della Zanichelli. 2 1.3 Definizione di Knowledge Databases e Data Mining Discovery in Il processo di ricerca, di estrazione dei patterns dai dati é noto con molti nomi (anche come Data Mining) in differenti ambienti (estrazione di conoscenza, scoperta di informazione, raccolta di informazione, archeologia dei dati). Con i termini inglesi Knowlegde Discovery in Databases (KDD), si indica l’intero processo di scoperta di conoscenza dai dati dei databases. Il Data Mining è un particolare passo in questo processo: l'applicazione di specifici algoritmi per l'estrazione di patterns. Esso, insieme agli altri passi nel processo di KDD, come ad esempio la preparazione, la selezione, la pulizia dei dati (data cleaning), l'incorporamento di conoscenza già acquisita, l'interpretazione dei risultati, assicurano e garantiscono che conoscenza estratta sia effettivamente valida. Al contrario, l'applicazione alla cieca dei metodi di Data Mining (giustamente criticato come data dredging (dragaggio dei dati)) può risultare una attività rischiosa che porta alla scoperta di pattern non significativi. Il KDD è nato e evolve dall’incrocio di numerose ricerche in diversi campi di studio come machine learning, riconoscimento dei pattern, statistica, intelligenza artificiale, ragionamento sotto incertezza, sistemi esperti per acquisizione di conoscenza, visualizzazione dei dati, machine discovery, scientific discovery, recupero di informazione, elaborazione ad alte prestazioni e chiaramente anche dall’ambito della gestione di databases: i sistemi software per KDD inglobano teorie, algoritmi e metodi estratti da tutti questi campi. Le teorie e gli strumenti per la gestione di databases forniscono le infrastrutture necessarie per memorizzare, accedere e manipolare i dati e in particolare è nata una nuova disciplina per la gestione di grandi quantità di dati, il data warehousing, che rispecchia la tendenza attuale nel mondo economico a collezionare e ripulire i dati di transazioni, allo scopo di facilitare le decisioni. Le aree di ricerca che si occupano dell'inferenza di modelli dai dati, come il riconoscimento statistico dei pattern, la statistica applicata, machine learning e reti neurali, sono state la spinta per molti dei precedenti lavori di scoperta di conoscenza. Il processo di KDD si fonda ampiamente sui metodi di queste aree, soprattutto nel passo di Data Mining, ma differisce da esse perché mira all'intero processo di scoperta di conoscenza, si preoccupa cioè anche della memorizzazione dei dati e dell’accesso ad essi, come gli algoritmi possano essere scalati per trattare insieme massivi di dati, come interpretare e visualizzare i risultati, come l'interazione uomo-macchina possa essere modellata e realizzata pienamente, eccetera. La statistica fornisce al processo KDD il linguaggio e la struttura per quantificare l'incertezza nell'inferenza di pattern di valore generale estratti da campioni particolari della popolazione. Il KDD è un modello di più ampio respiro rispetto alla statistica poiché fornisce gli strumenti per l’automatizzazione dell'intero processo di analisi dei dati, inclusa l'arte statistica della selezione delle ipotesi. 3 1.3.1 Definizione di processo KDD. Si definisce processo KDD come [22]: Il processo non banale di identificazione di patterns validi, originali, potenzialmente utili e in definitiva comprensibili dai dati. I patterns ricavati dovrebbero essere: validi anche per i successivi dati (cioè per i dati dai quali non si sono ricavati i patterns in questione), e con qualche grado di certezza; originali almeno per il sistema e preferibilmente per l'utente, cioè dovrebbero contenere una qualche novità [25]; potenzialmente utili per l'utente o per l'applicazione da eseguire [25]; comprensibili, se non immediatamente almeno dopo qualche post-elaborazione. Questa definizione implica che si possano definire misure quantitative per valutare i patterns estratti: in vari casi si possono definire misure di certezza (stima della accuratezza della classificazione) o di utilità (guadagno, probabilmente in termini di risparmio economico o in velocità del tempo di risposta). Queste nozioni come quella di originalità e di comprensibilità sono molto soggettive, tuttavia in certi contesti la comprensibilità può essere stimata facilmente (es.: numero di bits necessari per descrivere i pattern). Spesso si ricorre alla nozione di interesse (interestingness in inglese) che è una misura globale del valore di un pattern: essa combina i concetti di validità, originalità, utilità, e semplicità. Il processo KDD è iterativo e interattivo, con molte decisioni prese dall'utente, e comporta l’esecuzione di molti passi raggruppabili in pochi tipi di operazioni fondamentali: la preparazione di dati, la ricerca dei pattern, la valutazione della conoscenza, i raffinamenti; tutte queste operazioni vengono iterate un certo numero di volte. 1.3.2 Data mining Il data mining è uno dei passi del processo KDD e in particolare consiste nella effettiva ricerca di pattern nei dati. Poiché i patterns su ogni insieme finito di dati sono potenzialmente in numero infinito e poiché l'elencazione di patterns implica qualche forma di ricerca in spazi ampi, risulta obbligatorio fissare dei vincoli computazionali che limitino il sottospazio dove un algoritmo di data mining effettivamente deve esplorare. Il data mining trova i patterns e relazioni tramite la costruzione di modelli. I modelli, come ad esempio le cartina stradale, sono delle rappresentazioni astratte della realtà. Una cartina può modellare le vie di una città, ma non può mostrare un incidente che rallenta il traffico, o gli edifici che richiederebbero delle deviazioni 4 del flusso veicolare. Non si dovrebbe mai confondere il modello con la realtà, però un buon modello è un'utile guida alla comprensione dei problemi con i quali si ha a che fare, e suggerisce le azioni che possono essere intraprese per raggiungere i propri scopi. Esistono due tipi principali di modelli in data mining. Il primo, quello dei modelli predittivi, usa i dati che rappresentano fatti o eventi dei quali sono noti l'evoluzione finale e risultati per costruire un modello che viene usato per predire esplicitamente l'evoluzione e i risultati per altri dati. Ad esempio un modello può essere costruito con la storia dei pagamenti delle persone alle quali si fatto un prestito, allo scopo di aiutare l'identificazione di chi probabilmente non restituirà i prestiti Il secondo tipo, quello dei modelli descrittivi, descrive i patterns esistenti nei dati che possono essere usati nella prese delle decisioni. La differenza fondamentale tra i due tipi di modelli è che i modelli predittivi fanno delle predizioni esplicite (come ad esempio la probabilità di una mancata restituzione di un prestito o la redditività di un cliente) mentre i modelli descrittivi sono usati per aiutare a costruire un modello predittivo o, quando essi sono la base per le decisioni e le azioni, per formulare una predizione implicita. Chiaramente, ogni organizzazione che conosce molto bene il proprio ambiente e i propri problemi, già è a conoscenza di molti importanti patterns che i suoi operatori hanno osservato negli anni. Ciò che il data mining può fare è non solo di confermare queste osservazioni empiriche, ma anche trovare patterns nuovi e più sottili. Questa nuova conoscenza può produrre ottimi risultati creando costanti miglioramenti. 1.4 Data mining: Cosa non può fare Il data mining è un insieme di strumenti, non è un sistema completamente automatico per l'estrazione d'informazioni dai databases. Non controlla il database guardando cosa accade e non avverte quando scorge un pattern interessante. Il bisogno di conoscere l'ambiente di lavoro, di capire cosa rappresentano i dati e di come funzionano i metodi analitici d'elaborazione, non viene eliminato; il data mining assiste l'analista nella ricerca dei patterns e delle relazioni nei dati, ma non dice quanto essi valgano per chi li estrae. Infine i patterns scoperti devono venire comunque verificati nel mondo reale. Sebbene un buono strumento di data mining mette al riparo dalle complessità delle tecniche statistiche, tuttavia richiede la comprensione del funzionamento degli strumenti che si scelgono e degli algoritmi sui quali sono basati. Ad esempio, le scelte fatte nell'inizializzazione degli strumenti di data mining e le ottimizzazioni selezionate, influenzano l'accuratezza e la velocità dei modelli. 5 Bisogna inoltre avere una buona conoscenza dei dati, ad esempio la qualità dei risultati spesso sarà sensibile alla presenza di valori che si discostano molto dai valori tipici nel database (outliers2), alla presenza di campi irrilevanti o di campi correlati tra loro, al modo nel quale i dati sono codificati e ai dati presi in considerazioni e a quelli esclusi. Gli algoritmi variano la loro sensibilità in conseguenza di questi problemi, ne segue che è poco ragionevole affidare tutte decisioni al solo software per il data mining. È anche scorretto affermare che il data mining trova delle risposte a domande che non gli sono state poste. Mentre si può non fornirgli un'ipotesi (“Le persone tra 18 e 25 anni sono interessate al mio prodotto?”), bisogna tuttavia informare lo strumento per il data mining su quale tipo di pattern si sta cercando. Piuttosto che formulare una vaga richiesta, “Aiutami a rendere più interessante il mio prodotto”, si può usare il data mining per individuare sia le caratteristiche della gente che è interessata al prodotto, sia di quella che oltre ad essere interessata, è anche disponibile a comprarlo. I patterns che il data mining trova per questi due obiettivi, potrebbero essere molto differenti. Il data mining non sostituisce gli abili analisti ma piuttosto dà loro un nuovo potente strumento per migliorare il lavoro da svolgere. 1.5 Data mining e data warehousing I dati che devono essere analizzati, frequentemente sono estratti dal data warehouse dell'organizzazione e posti in un data mart. Sebbene il data warehousing abbia contenuti e pratiche distinti dal data mining, è strettamente associato ad esso, infatti, il data warehousing è uno dei principali fattori dell'accresciuto interesse per il data mining. Tuttavia un data warehouse non è un prerequisito per la efficace applicazione del data mining, e molti strumenti per il data mining lavorano anche su flat files3, eventualmente estratti dalle sorgenti di dati operazionali (i dati usati per il funzionamento dell'organizzazione). Una definizione di data warehouse ben accettata è stata fornita da Inmon nel 1992 [14]: "Un data warehouse è una collezione di dati orientata ai soggetti, integrata, variabile nel tempo e non volatile, per il sostegno alle gestione delle decisioni." à Orientata ai soggetti: i dati sono definiti e organizzati in termini affaristici, raggruppati sotto etichette orientate ai soggetti ("Clienti", "Vendite"). à Integrata: gli oggetti del data warehouse sono definiti in modo tale che risultino validi per l'impresa e le sue sorgenti operazionali e le sorgenti 2 3 vedi Glossario vedi Glossario 6 à à esterne. Ad esempio tutte le occorrenze di elementi comuni di dati, come il numero di un cliente, devono essere rappresentate consistentemente per permettere la realizzazione di resoconti consistenti dal data warehouse. Variabile nel tempo: ogni dato nel data warehouse è marcato nel tempo al momento dell'ingresso nel data warehouse stesso. Così si realizza una registrazione cronologica che permette l'analisi storica. Non volatile: una volta caricati nel data warehouse, i dati non vengono più modificati. Così diventano una risorsa stabile per la realizzazione di rapporti e per le analisi comparative. La architettura di un data warehouse è costituita essenzialmente dai seguenti componenti principali: • sistemi sorgenti, da dove scaturiscono i dati, • trasporto dei dati e pulizia, muove i dati fra i diversi dispositivi di memorizzazione e si occupa della pulizia dei dati (consistenza), • deposito centrale, è il principale dispositivo di memorizzazione del data warehouse, • metadati, descrivono cosa è disponibile e dove, • data marts4, forniscono accessi veloci e specializzati ai dati per gli utilizzatori finali e per le applicazioni, • feedback operazionali, integra le decisioni suggerite dai dati all'interno del sistema, • utenti finali, sono la ragione principale per la quale si sviluppa il data warehouse. Utenti Finali Meta Dati Data Marts Feedback Operazionali Deposito Centrale Trasporto dei dati e Pulizia Trasporto dei dati e Pulizia Sistemi sorgenti Figura 1 Struttura di un data warehouse 4 Mart in italiano vuol dire mercato, emporio, sala d'aste. 7 I sistemi sorgenti forniscono al data warehouse i dati in forma grezza (ad esempio in un grosso supermercato una vendita viene registrata dalla cassa con un codice dell'articolo, l'ora, eccetera). Questi dati sono stati progettati per il funzionamento del sistema e non per la gestione delle decisioni e spesso adattare un data warehouse ai sistemi sorgenti presenta diverse difficoltà. Gli strumenti per i trasporto dei dati e la pulizia si riferiscono fondamentalmente al software usato per muovere i dati. Il deposito centrale è la parte più tecnicamente avanzata del data warehouse. È il database che contiene i dati ed è caratterizzato da tre fattori: • hardware scalabile, • sistema di database relazionale, • modello logico dei dati. La scalabilità si riferisce al fatto che l'hardware deve avere la capacità di crescere virtualmente senza limiti. Un unico hardware deve supportare molti utenti, molti dati, molti processi e ciò è stato possibile negli ultimi anni grazie ai miglioramenti nella tecnologia parallela. Le macchine parallele possono crescere aggiungendo più dischi, più memoria, più processori e più banda passante tra i componenti stessi. Tutto questo è di fondamentale importanza data il rapido aumento dell'accumulo dei dati. I databases relazionali sono ormai maturi per approfittare delle piattaforme hardware scalabili in tutte quelle operazioni su un gran numero di dati: caricare i dati, costruire gli indici, fare copie di salvataggio, eseguire delle queries. Ogni tipo di RDBMS (DBMS relazionale) è in grado di comunicare tramite ODBC (open database connectivity), usato praticamente da ogni programma da scrivania, e tramite i principali standards proprietari (IBM, Oracle, Sybase eccetera). Un modello dei dati descrive le strutture dei dati contenuti nel database, non va però confuso con la disposizione fisica (o schema) del database. Lo scopo del modello logico dei dati è di comunicare il contenuto del database a un più vasto auditorio. I metadati sono spesso una componente ignorata del data warehouse. Un buon sistema di metadati potrebbe includere le seguenti cose: - annotazioni sul modello logico dei dati, che spiegano il significato delle entità, degli attributi, quali sono i valori validi, eccetera, - le relazioni tra il modello logico e i sistemi sorgenti, - lo schema fisico - viste e formule più comuni per l'accesso ai dati, - informazioni per la sicurezza e l'accesso. 8 I data marts servono a superare i problemi del deposito centrale nel dover servire migliaia di utenti, con bisogni differenti. Un data mart è un sistema specializzato che raccoglie insieme i dati necessari ad un certo settore di utenti (dipartimento) e di applicazioni. Un data mart può essere realizzato con una vista o con una vista instanzializzata, cioè una vista i cui dati sono memorizzati in una apposita tabella. Molti sono i vantaggi quando si ha a disposizione un data warehouse. • L'integrazione dei dati permette all'analista di osservare e accedere i dati facilmente e rapidamente. Senza i dati integrati invece si spende molto tempo per la pulizia e il condizionamento dei dati prima di iniziare il processo di data mining. Il problema della pulizia dei dati per un data warehouse e per il data mining sono molto simili. • Nel data warehouse i dati sono presenti in forma dettagliata e "sommarizzata" (summarized) cioè sotto forma di riassunti (ad esempio la media e la deviazione standard di un certo campo), di descrizioni di sottoinsiemi di dati, perciò l'analista che deve usare il data mining si risparmia di compiere tali operazioni. • I dati sono ben individuati nel tempo e ciò permette lo studio nel tempo delle grandezze di interesse e di individuare patterns sul comportamento a lungo termine. • I metadati permettono all'analista una più immediata confidenza con i dati. • Sono già stati risolti molti dei problemi di fusione dei dati (data consolidation) e sono state attive le procedure di manutenzione. Malgrado questi vantaggi, la creazione di un ampio data warehouse che fonde i dati da tante sorgenti, che risolve i problemi d'integrità e che carica i dati in un database per le interrogazioni, può risultare un compito oneroso, richiedendo talvolta alcuni anni di lavoro e costi elevati. Si può tuttavia usare il data mining sui dati di uno o più databases semplicemente estraendoli e ponendoli in un database a sola lettura. Questo nuovo database funziona come un data mart. Figura 2 Data mining: data mart estratto dai databases 9 1.6 Data mining e OLAP Data mining e OLAP (On-Line Analitytical Processing) sono due strumenti spesso ritenuti simili, ma in effetti sono molto differenti e possono essere completarsi l'uno dell'altro. L'OLAP è una tecnologia software che permette agli analisti, ai gestori e ai dirigenti di accedere a grandi databases quando i dati risiedono in un unico data warehouse centralizzato, in data warehouses virtualmente distribuiti. Uno strumento OLAP deve rispettare diverse caratteristiche per essere considerato tale5, caratteristiche che sono racchiuse dalla definizione dell'OLAP nelle sole cinque parole chiavi: Fast Analisys of Shared Multidimensional Information (FASMI) ovvero analisi veloce di informazione multidimensionale condivisa. Uno strumento deve essere rapido nel fornire la risposta cioè con una media di 5 secondi, un minimo di meno di 1 secondo e un massimo di 20 secondi. Recenti studi dimostrano che un utente finale assume come fallito un processo se non riceve i risultati entro 30 secondi e successivamente digita la combinazioni di tasti Alt+Ctrl+Del, a meno che il sistema non avverta di attendere per più tempo. Questa velocità non è ottenibile facilmente quando si ha a che fare con grandi quantità di dati e particolarmente quando si richiedono elaborazioni specifiche. Si ricorre a molte varietà di tecniche per raggiungere questo obiettivo tra le quali forme di memorizzazione specializzate, estese pre-elaborazioni e stringenti requisiti hardware. La multidimensionalità dei dati è la richiesta regina per uno strumento OLAP. Senza addentrarci troppo nel problema, affermiamo che i dati sono organizzati in ipercubi ognuno dei quali con un certo numero di dimensioni. Una dimensione è un attributo o un attributo strutturato formato da una lista di membri (nomi o etichette, in generale valori discreti), che sono considerati dall'utente tutti dello stesso tipo. Spesso una dimensione ha una struttura gerarchica, ad esempio una dimensione temporale può essere strutturata in anni, ognuno dei quali e suddiviso in mesi, così come i campi dello stato, delle regione e della città organizzati gerarchicamente formano la dimensione geografica. Una dimensione agisce da indice per identificare i valori racchiusi nell'ipercubo: selezionando un membro per alcune dimensioni si ottengono dei sotto-ipercubi e se è selezionato un membro per ogni dimensione si ottiene una cella. Una regola fondamentale per la costruzione di un ipercubo è che un record di dati deve essere contenuto in una unica cella. Una cella contiene oltre al gruppo di dati indicizzati dalle dimensioni anche dei dati aggregati su essi e in particolare sui campi che non formano una 5 L'Olap Council, ovvero l'associazione di produttori di strumenti OLAP, ha formulato 18 regole che bisognerebbe rispettare per essere considerati un "integralista" OLAP. 10 dimensione (attributi aggregati): esempi di dati aggregati sono la media e la somma di un certo attributo, il numero di valori all'interno della cella con certe caratteristiche, eccetera. Selezionando un sotto-ipercubo, con calcoli rapidi ed elementari, si ottengono i dati aggregati per quella parte di record indicizzati dai membri delle dimensioni che identificano il sotto-ipercubo stesso: ad esempio selezionando un certo anno (che raccoglie 12 mesi) e una certa città si può ottenere il numero di nascite per quella città in quell'anno, oppure selezionando un certo mese e una certa regione (che raccoglie più città) si può ottenere il numero di morti per quella regione in quel mese. Il passaggio da dati più dettagliati a dati più generali (città Æ regione) è l'operazione di drill up, l'operazione inversa (anno Æ mese) è detta drill down. Per condivisione si intende che il sistema realizza tutti i requisiti di sicurezza per la riservatezza e la gestione degli accessi concorrenti quando si è in presenza di accessi multipli in scrittura. Risulta chiaro che il concetto di condivisione implica che uno strumento OLAP dovrebbe saper gestire la multiutenza e di conseguenza dovrebbe avere una architettura client-server. Altre caratteristiche dell'OLAP, come le già citate multiutenza e l'architettura client-server, sono: trattamento dei dati non normalizzati, memorizzazione dei risultati, trattamento dei valori mancanti (missing values)6, flessibilità per la creazioni di rapporti (reporting), uniformità delle prestazioni nel reporting al crescere del numero delle dimensioni e delle dimensione del database, riconfigurazione automatica del livello fisico. L'OLAP fa parte dell'insieme degli strumenti per la scelta delle decisioni. Tradizionalmente gli strumenti d'interrogazione (query) e per realizzare dei rapporti (report) descrivono cosa c'è nel database. L'OLAP va oltre, in quanto fornisce la risposta a perché certe cose sono vere. L'utente formula un'ipotesi (riguardo ad una relazione) e la verifica con una serie di queries sui dati. Ad esempio un analista potrebbe voler determinare quali fattori portano alla mancata restituzione di un prestito, egli può inizialmente ipotizzare che la gente con basso reddito è ad alto rischio, quindi analizza il database con l'OLAP per verificare (o confutare) quest'assunzione. Quando tale supposizione non viene suffragata dai dati, egli può allora rivolgere l'attenzione ai debiti elevati ritenendoli causa di rischio e così via, utilizzando anche combinazioni di fattori. In altre parole l'analista OLAP genera una serie d'ipotetici patterns e usa delle queries sul database per verificarli o confutarli. Ma quando il numero di variabili sale a decine o a centinaia diventa molto più difficoltoso formulare buone ipotesi 6 Per missing values si intende che non sono presenti i dati in una cella. Ciò può accadere perché la combinazione di membri che identificano la cella è priva di significato: ad esempio in un ipercubo che raccoglie informazioni sugli animali di una certa razza in una certa regione, alla cella contraddistinta dalle etichette "Pinguino" e "Polo Nord" non apparterrà nessun record perché al Polo Nord non ci sono i pinguini. 11 (richiedendo tra l'altro molto tempo) e analizzare il database con l'OLAP. Il data mining si differenzia dall'OLAP perché piuttosto che verificare degli ipotetici patterns, usa gli stessi dati per scoprire tali patterns. Per esempio se l'analista usa gli strumenti del data mining per identificare i fattori di rischio per la restituzione del prestito, potrà scoprire che le persone con debiti elevati e bassi guadagni sono ad alto rischio (come prima), ma potrà anche scoprire altri patterns che non pensava di testare, come ad esempio che l'età della persona è un fattore di rischio. E' qui che il data mining e l'OLAP s'integrano l'un l'altro. Prima sfruttare il pattern scoperto, l'analista ha bisogno di conoscere quali saranno le implicazioni finanziarie usando il pattern per controllare chi potrà accedere al credito. Gli strumenti OLAP permettono all'analista di rispondere a questo tipo di questioni. In più, l'OLAP è complementare anche nelle fasi precedenti del processo di scoperta di conoscenza poiché aiuta a comprendere i propri dati, concentrando l'attenzione sulle variabili importanti, identificando le eccezioni, gli outliers, i clusters, eccetera. Ciò è importante perché più si conoscono i dati e più risulta efficace il processo KDD. Infine uno strumento OLAP è spesso dotato di ottimi strumenti di visualizzazione, la qual cosa rende più comprensibile ciò che si è scoperto col data mining. 1.7 Data mining, machine learning e statistica Il data mining trae beneficio dai progressi nel campo dell'intelligenza artificiale (artificial intelligence, AI) e della statistica. Entrambe le discipline stanno lavorando su problemi di riconoscimento e classificazione di patterns, entrambe hanno contribuito grandemente alla comprensione e all'applicazione delle reti neurali e degli alberi di decisione. Il data mining non sostituisce le tecniche statistiche tradizionali, ma è un'estensione dei metodi statistici che è in parte una conseguenza dei forti mutamenti all'interno comunità statistica. Lo sviluppo di molte tecniche statistiche era fino ad ora basato su una teoria elegante e su metodi analitici che lavoravano abbastanza bene su modeste quantità di dati da analizzare. L'aumento di potenza dei calcolatori, il basso costo, accompagnato dal bisogno di analizzare enormi insiemi di dati con milioni di tuple, hanno permesso lo sviluppo di nuove tecniche basate sull'esplorazione brutale delle possibili soluzioni. Alcuni esempi sono gli algoritmi relativamente recenti come le reti neurali e gli alberi di decisione, e nuovi approcci a vecchi algoritmi come l'analisi 12 discriminante (discriminant analisys)7. Queste tecniche possono approssimare pressoché ogni forma funzionale o interazione. Le tecniche statistiche tradizionali richiedono l'intervento del modellatore (analista) per specificare la forma funzionale e le interazioni. Il data mining è l'applicazione di queste e d'altre tecniche dell'AI e della statistica ai più diffusi problemi del mondo affaristico, scientifico, eccetera, in modo da renderle disponibili a tutte quelle persone che lavorano con la "conoscenza" e anche ai professionisti della statistica. 1.8 Data mining e dell'hardware/software gli andamenti Una delle cause dello sviluppo del data mining è stato il considerevole miglioramento dei costi e delle prestazioni dell'hardware. La sensazionale caduta dei prezzi dei dischi per la memorizzazione (hard disks) da decine di migliaia di lire a megabyte a sole decine di lire a megabyte in questi ultimi pochi anni ha radicalmente cambiato le economie nella collezione e memorizzazione dei dati, permettendone la raccolta in quantità, su larga scala. Un terabyte di dati costa tra 20 e 30 milioni, mentre in precedenza si aggirava intorno a 20 miliardi di lire. La caduta dei costi dei processori è stata altrettanto fondamentale. Ogni generazione di chips accresce fortemente la potenza delle CPU, permettendo ulteriori abbassamenti della curva dei costi. Ciò si riflette anche sul prezzo delle RAM, dove il costo a megabyte è sceso da centinaia di migliaia di lire a migliaia di lire in soli pochi anni. Attualmente i personal computer sono dotati di 64 o più megabytes di RAM, le workstations possono avere 512 megabytes o più, mentre server con centinaia di gigabytes di memoria principale sono non sono una rarità. Mentre la potenza dei computer a singolo processore è vertiginosamente aumentata, gli effettivi miglioramenti per quanto riguarda la scalabilità provengono dalle architetture a computer paralleli. Potenzialmente tutti i server attualmente supportano CPU multiple ricorrendo al symmetric multi-processing (SMP)8 , e gruppi di questi server SMP possono essere creati allo scopo di permettere a centinaia di CPU di lavorare alla ricerca di patterns nei dati. I DBMS (database management system) inoltre sono progrediti nello sfruttamento del parallelismo dell'hardware ora disponibile. Ciò è importante perché grossi e complessi problemi di data mining possono richiedere un numero elevato d'accessi al database. Da tutto quanto detto risulta che molte degli barriere al raggiungimento di buone prestazioni nella ricerca di patterns in quantità enormi di dati stanno per essere superate. 7 8 Vedi paragrafo 4.10. vedi Glossario 13 1.9 Applicazioni del data mining Il data mining è diffuso tra molte organizzazioni grazie ai concreti apporti che fornisce; può essere usato tanto nel controllo (ad es. dei costi, dei processi) quanto può contribuire al miglioramento dei risultati (ad es. entrate, prodotti). Ricordiamo che il data mining, che per definizione è il passo della scoperta di conoscenza dai database nel quale si applicano gli algoritmi, è applicabile ovunque vi sia un database e in particolare un database massivo. Forniamo ora una breve carrellata sulle aree dove il data mining è utilizzato con successo. 1.9.1 Gestione del mercato (market management) Questa è l'area di applicazione dove il data mining è più stabilmente utilizzato[1]. L’area di applicazione più conosciuta è il Database Marketing, anche detto Mailshot Reponse. L’obiettivo è quello di condurre mirate e efficienti campagne promozionali, attraverso l’analisi dei dati contenuti nei database dell'impresa. In generale, viene costruito un database unico contenente le preferenze e gli stili di vita dei clienti, utilizzando fonti informative come transazioni di carte di credito, tessere sconto, certificati di garanzia e buoni sconto, chiamate di lamentela dei clienti: tutte queste informazioni insieme a studi generali sullo stile di vita delle categorie di clienti formano una miscela potente. Gli algoritmi di data mining setacciano i dati, cercando categorie di consumatori che hanno le stesse caratteristiche (ad esempio gli interessi particolari, il reddito e le abitudini di spesa) ed applicando per ciascuna categoria una specifica strategia di approccio. In questo modo il cliente non è disturbato da una eccessiva pubblicità, e nello stesso tempo gli addetti del marketing limitano i costi, facendo poche ma efficaci pubblicità. La “Bank of America”, che è la maggiore banca degli Stati Uniti, sta applicando con successo il Database Marketing, incrementando i servizi offerti ai clienti e di conseguenza anche i profitti. Le banche sono sempre meno a contatto con i loro clienti, a causa del fatto che quasi tutti i tipi di transazioni bancarie sono automatizzati. Se i clienti vanno meno spesso in banca, c’è meno opportunità di interagire con loro e quindi meno opportunità di proporre investimenti o altro, perciò saper sfruttare i dati relativi alle loro operazioni per risalire al loro comportamento e alle loro preferenze è di fondamentale importanza. Un’altra area di applicazione del data mining nella gestione del mercato è quella di determinare nel tempo i patterns sugli acquisti dei clienti. Si potrebbe determinare la sequenza nella quale i clienti sottoscrivono i servizi finanziari al crescere del nucleo familiare, oppure come un cliente cambia le automobili. Tipicamente la conversione di un conto da monointestato a cointestato indica 14 molto probabilmente un matrimonio, che potrebbe portare profitti sotto forma di mutui ipotecari, prestiti per la luna di miele, assicurazioni sulla vita, o prestiti per coprire le spese scolastiche dei figli. Se compresi al tempo giusto, i pattern temporali possono offrire grandi opportunità di guadagno. Il data mining viene applicato anche per le campagne di vendite incrociate (crossselling). Si ha un servizio di vendite incrociate quando un venditore al dettaglio o un fornitore di servizi cerca di rendere allettante la proposta di acquisto di un prodotto o di un servizio quando il cliente ha già acquistato un altro prodotto o servizio collegato al primo. 1.9.2 Gestione dei rischi (Risk Management) Il Risk Management non comprende soltanto il rischio associato alle assicurazioni e agli investimenti, ma una categoria più ampia di rischi derivanti dalla competitività delle aziende, dalla scarsa qualità dei prodotti e dalla perdita dei clienti (attrition). Il rischio è l'aspetto essenziale nell’attività assicurativa, ed il data mining è adatto a predire le linee di condotta da seguire. Le predizioni sono di solito espresse sotto forma di regole che vengono applicate ad esempio al potenziale sottoscrittore di una polizza assicurativa. La perdita di clienti è causata molto spesso alla concorrenza di altre aziende appartenenti allo stesso settore in cui si opera. È un problema crescente in un mercato sempre più competitivo, e il data mining viene utilizzato in finanza, nelle vendite e nelle telecomunicazioni per predire, e quindi prevenire, le probabili perdite di clienti. L’approccio generale consiste nel costruire un modello di un cliente vulnerabile, cioè che mostra le caratteristiche tipiche di chi ha già lasciato l'azienda per una concorrente. Le società di vendita utilizzano il data mining per comprendere meglio la vulnerabilità di alcuni loro prodotti in modo da offrirne altri migliori o più graditi. Una applicazione classica nel settore bancario è quella del merito creditizio. Esempi storici di prestiti sia andati a buon fine sia non restituiti vengono utilizzati per costruire il profilo di un buon candidato e di un cattivo candidato a cui elargire crediti. Molte compagnie di telecomunicazioni (telefonia, televisione via cavo o via satellite) ogni anno hanno molti introiti che non riescono a incassare e rappresentano un problema significativo. In questi casi si utilizza il data mining per costruire un modello predittivo che aiuta ad individuare se una utenza (o un gruppo di utenze) è affidabile o meno. 1.9.3 Gestione delle frodi (Fraud Management) Molte organizzazioni appartenenti a diverse aree, come vendite al dettaglio, servizi di carte di credito, assistenza sanitaria e società di telecomunicazioni, 15 utilizzano il data mining per rilevare e per prevenire le frodi. L’approccio usuale è il seguente: servendosi dei dati storici si costruisce un modello di comportamento fraudolento o potenzialmente fraudolento, e successivamente lo si utilizza per identificare comportamenti simili al modello costruito. Le società di telecomunicazioni fanno regolare uso del data mining per rilevare frodi con carte telefoniche. Si scandiscono milioni di transazioni giornaliere confrontandole con il modello costruito per scovare potenziali frodi. I principali elementi nella costruzione del modello sono la destinazione, la durata, l'ora e il giorno della chiamata. Le chiamate che deviano molto dai valori attesi devono essere ulteriormente analizzate. Molte banche utilizzano il data mining per proteggere se stesse e i fondi dei loro clienti da potenziali frodi con le carte di credito [2]. 1.9.4 Investimenti finanziari Molte applicazioni per l'analisi finanziaria adottano tecniche con modelli predittivi ( ad esempio reti neurali e regressione statistica) allo scopo di creare e ottimizzare i portafogli o costruire modelli di scambio. Per mantenere il vantaggio competitivo gli utenti e gli sviluppatori di tali applicazioni, che rimangono in uso per diversi anni, raramente rendono noto i loro precisi dettagli e la loro efficacia. In queste applicazioni l'accuratezza predittiva è di fondamentale importanza, mentre il bisogno di usare la conoscenza estratta per giustificare una azione raccomandata è meno importante [3]. 1.9.5 Gestione delle reti Un area di applicazione dove la componente temporale è dominante risulta essere la gestione delle reti di telecomunicazione. Queste reti estese e complesse producono quotidianamente molti allarmi, e le sequenze di essi contengono informazioni implicite sul comportamento della rete. Col data mining si può estrarre conoscenza preziosa sull'intero sistema e sulle sue prestazioni. Le regolarità e l'ordine degli allarmi sono usati nel sistema di gestione dei guasti per filtrare gli allarmi ridondanti, localizzare i problemi nella rete e predire i guasti pericolosi [4]. 1.9.6 Produzione industriale e manifatturiera Il controllo e la pianificazione dei processi tecnici di produzione rappresentano delle aree di prossima applicazione del data mining con grandi opportunità di profitto. Sebbene le grandi quantità di dati generati durante un processo di produzione sono spesso scarsamente sfruttati, nel lungo periodo sarà possibile controllare i processi automaticamente tramite la scoperta e l'uso di patterns molto indicativi sulla qualità dei prodotti. Il principale vantaggio dell'applicazione dei metodi della scoperta di conoscenza in questa area è il grande risparmio sui costi che si ottiene quando i risultati sono utilizzati per il controllo di processi costosi. 16 1.9.7 Data mining applicato ai dati scientifici Gli strumenti scientifici (satelliti, microscopi, telescopi) possono facilmente generare terabytes e petabytes9 di dati a velocità dell'ordine dei gigabytes per ora. Ne segue un rapido allargamento del gap tra la capacità di raccogliere i dati e l'abilità di analizzarli. L'approccio tradizionale consiste nell'andare a caccia tra i dati grezzi di fenomeni (spesso ipotizzati) e delle strutture sottostanti. Uno scienziato riesce a lavorare efficacemente con poche migliaia di osservazioni ognuna con un piccolo numero di variabili, meno di una decina, e posto di fronte a milioni di record ognuno con centinaia o migliaia di misurazioni la sua tecnica non è più applicabile. Tuttavia, quando il problema da trattare è ben conosciuto e lo scienziato sa cosa sta cercando, l'enorme quantità di dati può essere ridimensionata sottoponendola efficacemente alla data reduction (riduzione dei dati). Per data reduction, in ambiente scientifico, si intende l'individuazione delle essenziali variabili di interesse dalle osservazioni grezze: richiede operazioni di trasformazione, di selezione e di normalizzazione. Ridimensionati i dati nel range analizzabile, lo scienziato li può elaborare. Quando questo non si può fare oppure anche ridimensionando i dati essi non sono comunque analizzabili coi metodi tradizionali, si può ricorrere al data mining. Addirittura il data mining può essere usato anche in fase di data reduction, grazie al ricorso degli algoritmi di classificazione e di clusterizzazione. Esempi di applicazione del data mining sono: • Catalogazione degli oggetti celesti [5]. • Ricerca dei vulcani su Venere [6]. • Ricerca delle biosequenze nel genoma [7]. • Previsione di terremoti [8]. Oltre all'enorme quantità di dati, esistono altri problemi nell'applicazione del data mining nell'ambito scientifico. Tra essi ricordiamo: particolarità dei tipi di dato (immagini, suoni), dati incompleti, sparsi o poco affidabili, eccetera. Inoltre nell'area scientifica si devono affrontare problematiche che nelle altre aree di applicazione del data mining non sono così stringenti: • bisogna saper integrare la conoscenza precedentemente scoperta durante il data mining, • esistono requisiti più stringenti sull'accuratezza, • problemi di scalabilità di macchine e algoritmi sono più pressanti, • bisogna saper trattare con insiemi minoritari (a bassa probabilità) di dati, la cui occorrenza è rara. 1.9.8 Area medica Le applicazioni in medicina rappresentano un'altra area feconda: il data mining può essere uso nella predizione dell'efficacia di procedure chirurgiche, di test 9 tera = 1012, peta = 1015! 17 medici o di medicazioni [9]. Può individuare il comportamento nel tempo di alcune malattie ereditarie, ma in questo campo i dati storici non risalgono molto indietro nel tempo, salvo rarissime eccezioni. Alcune ditte farmaceutiche usano il data mining in grandi databases di composti chimici e di materiali genetici alla scoperta di sostanze che potrebbero essere candidate per successive ricerche allo scopo di produrre nuovi principi per il trattamento delle malattie. 1.9.9 Data Mining applicato ai testi e al Web Il data mining viene applicato ad un numero sempre maggiore di campi. Qui presentiamo due aree di sviluppo emergenti, che sono il text mining ed il web mining, che sono collegati anche da fatto che la maggior parte delle informazioni nel WWW appaiono sotto forma di testo. 1.9.9.1 Text mining Il text mining è l'applicazione dei tipici algoritmi del data mining ai testi e ai databases di testi. L’obiettivo non è una critica letteraria, piuttosto si vuole rendere disponibile alla rapida analisi e alla comprensione la quantità sempre crescente di informazione testuale. Tipica applicazioni sono l’indicizzazione automatica dei documenti e la creazione di mappe dove documenti simili o affini sono disposti vicini l'uno all'altro. Le parole sono analizzate nel loro contesto, ad esempio se la parola Quirinale appare in un articolo di architettura, l'articolo è disposto vicino agli articoli di architettura e non di politica. Se da un lato i sistemi di ricerca tradizionali sono generalmente vincolati da un strategia di confronto letterale sulle parole e dalla ingegnosità dell'utente, dall'altro il test mining apre la possibilità di apprendere i collegamenti che l'utente non ha inizialmente specificato ne ritiene possibili. Ad esempio applicare il text mining al contenuto delle lettere di reclamo dei clienti può rilevare problemi nascosti di fondamentale importanza per la qualità del prodotto o del servizio che altrimenti non sono visibili. 1.9.9.2 Web Mining Il web mining tocca due delle aree dove attualmente è concentrata la maggiore attenzione: Internet e data mining. L’idea è quella di applicarle il data mining ai registri (activity log) dei Web server: osservando gli spostamenti di molti utenti, si sviluppano previsioni sulle comportamento di essi nella rete, cioè su quali potrebbero essere i futuri siti di interesse ad un certo punto della navigazione. Gli sviluppatori dei siti mettono a disposizione in modo statico i link più probabili nella navigazione ricorrendo a congetture. Con il data mining, analizzando la storia delle navigazioni, si cerca di suggerire in modo dinamico al navigatore i link che possono interessargli [10]. Una volta a disposizione i siti di interesse nasce il problema dell'estrazione delle informazioni utili, ed è qui che possono venire in soccorso le strategie del text mining. Esistono inoltre dei programmi in grado di estrarre i titoli e gli autori di articoli [11]in vari formati disponibili in rete, altri in grado di individuare files FAQ (Frequently Asked Questions) e di estrarre da essi le risposte che interessano è [12]. 18 1.10 Quando è mining? vantaggioso applicare il data Le aree dove è possibile applicare la scoperta di conoscenza devono essere ricche di informazione, avere un ambiente in evoluzione, dipendere da decisioni basate sulla conoscenza e fornire grossi vantaggi per le decisioni esatte. Dato un ambiente con queste caratteristiche, i costi e i benefici dell'applicazione potenziale del data mining dipendono dai seguenti fattori: Alternative: non dovrebbero esserci soluzioni alternative semplici. Volume di dati: dovrebbero esserci un numero sufficienti di casi (record), diverse migliaia come minimo. Dal lato opposto, databases estremamente ampi sono un problema quando le risposte devono pervenire molto rapidamente. Complessità: più variabili (campi) ci sono e più è complessa l'applicazione. Qualità: il tasso di errore nei dati deve essere relativamente basso. Accessibilità: i dati devono essere facilmente accessibili. Dinamicità: sebbene sia più difficile trattare dati che cambiano rispetto a quelli statici, il data mining ripaga maggiormente in presenza di dati dinamici perché l'applicazione può essere riaddestrata automaticamente e regolarmente sui dati modificati. Competenza: più si è esperti e più il progetto è semplice, soprattutto quando la competenza è sulla forma e il significato dei dati. 1.11 Il successo del data mining Più importante della scelta d'ogni algoritmo sono l'abilità di chi costruisce il modello e il come un programma supporta il processo di costruzione di esso. Le differenze nella qualità dei risultati del modello sono più spesso causati da questi ultimi fattori che non dagli algoritmi stessi. Il successo per il data mining deriva da due ingredienti. Il primo è la correttezza nella formulazione del problema che si sta tentando di risolvere. Se un problema bene inquadrato solitamente si ottengono i migliori risultati. Il secondo fattore è l'utilizzazione dei dati corretti. Dopo aver scelto fra i dati disponibili, bisogna saperli trasformare e combinare in modo significativo. Quest'operazione sortisce il suo effetto quando i seguenti tre componenti sono ben integrati nel sistema di estrazione di conoscenza che si sta usando: • Strumenti grafici e di visualizzazione, che aiutano il costruttore del modello nella comprensione dei dati e nell'interpretazione dei risultati. • Strumenti d'interrogazione/OLAP, che anch'essi aiutano il costruttore a comprendere i dati e ad interpretare i risultati. • Algoritmi o analisi per la costruzione dei modelli. 19 1.12 Ostacoli e sfide per il data mining Come per qualsiasi innovazione di successo, anche per il data mining le difficoltà iniziali non mancano. Ne diamo una breve carrellata: 1.12.1 Archivi massivi di dati e ad elevata dimensionalità Come già detto, i databases a più gigabyte e con milioni di record e con gran numero di campi per record sono molto diffusi. Questi archivi creano degli spazi di ricerca che crescono in modo combinatorio e aumentano il rischio che gli algoritmi di data mining trovino patterns spuri che non sono generalmente validi. Soluzioni a questi problemi richiedono algoritmi molto efficienti, campionamento dei dati, metodi di approssimazione, elaborazione parallela spinta (scalabilità), tecniche di riduzione dimensionale e incorporazione di conoscenza precedentemente acquisita. 1.12.2 Interazione con l’utente e uso della conoscenza di base Esiste l’esigenza di dare risalto più all’interazione tra utente e macchina che alla completa automatizzazione del processo di data mining, allo scopo di facilitare il lavoro di chi non è esperto di data mining ma che comunque se ne deve servire. Molti degli attuali metodi e strumenti per il data mining non sono veramente interattivi e non incorporano facilmente la conoscenza di base sul problema, tranne che in forma semplice, sebbene l’uso di tale conoscenza è fondamentale in gran parte dei passi del processo KDD. 1.12.3 Super-adattamento (overfitting) significatività statistica e verifica della Se un algoritmo che sta cercando i migliori parametri per un modello usando un piccolo insieme di dati, potrebbe super-adattarsi a questi dati, cioè funzionare toppo bene su questi dati e troppo male sui restanti, cosicché il modello ottenuto perde di significatività. Per individuare l'insorgere di questo problema si usano metodi di cross-validation10 ed altre strategie statistiche. Un altro problema quando il sistema ricerca molti possibili modelli è la mancata verifica della significatività statistica. 10 Per una immediata definizione vedi Glossario, altrimenti la pagina 26 dove questa tecnica è esposta nei particolari. 20 1.12.4 Dati mancanti Questo è un problema grave soprattutto per i databases nella sfera economica. Alcuni attributi possono mancare perché il database non è stato realizzato allo scopo di estrarre conoscenza utile, oppure i dati mancano per errori degli operatori, per cadute di sistema, per errori nelle misurazioni, eccetera. Soluzioni possibili richiedono strategie statistiche più sofisticate che identificano variabili e dipendenze nascoste. 1.12.5 Comprensibilità dei patterns In molti casi è richiesta una completa comprensibilità da parte degli utenti dei patterns estratti; risultano quindi necessarie metodologie di rappresentazione grafica, di strutturazione di regole, di generazione di linguaggi naturali e tecniche per la visualizzazione di dati e della conoscenza. 1.12.6 Trattamento di dati e di conoscenze che cambiano nel tempo Dati che cambiano rapidamente (non stazionari) possono rendere i patterns precedentemente scoperti non più validi. Per evitare ciò si possono usare metodi incrementali per l’aggiornamento dei patterns e trattare le variazioni dei dati come l'innesco di ulteriori ricerche di possibili variazioni di patterns. 1.12.7 Integrazione Un sistema per la scoperta di conoscenza non integrato nel sistema globale può essere non molto utile. Problemi tipici di integrazione sono l’interazione con i DBMS, integrazione con fogli di calcolo e con strumenti di visualizzazione, adattamento a sensori che leggono i dati in tempo reale. Ambienti uomo-macchina fortemente interattivi come quelli richiesti dal processo KDD permettono sia la scoperta da parte del calcolatore con l'assistenza dall’utente, sia la scoperta da parte dell’utente con l'assistenza dal calcolatore. 1.12.8 Dati non standard, multimediali oggetti e orientati agli Attualmente i database tendono a contenere non più solo dati numerici ma anche grandi quantità di dati non standard e multimediali. I dati non standard sono dati geometrici, grafici, non numerici, non testuali ed anche dati non stazionari, dati temporali, dati spaziali, e ancora mix di dati numerici e categorici. I dati multimediali sono testi multilingua oppure immagini digitalizzate, video, audio, eccetera. Questi tipi di dati sono largamente oltre la portata della corrente tecnologia KDD. 21 1.12.9 Difficoltà di diffusione nei settori di applicazione Se da un lato molte delle tecnologie del data mining sono ben sviluppate, il loro diffusione nei possibili settori di applicazione è afflitta da vari problemi: • Insufficiente addestramento: i laureati delle scuole economiche hanno molta famigliarità con tecniche di analisi di verifica, meno con quelle per la predizione, scarsa con altre tecniche di scoperta. • Inadeguatezza degli strumenti: molti strumenti per il data mining supportano solo una delle tecniche di scoperta essenziali, di solito la predizione. Gli strumenti dovrebbero fornire la possibilità di realizzare l'intero processo di estrazione di conoscenza e anche delle interfacce utente adatte agli utenti finali e non ai soli tecnici. • Indisponibilità dei dati: spesso i dati sono distribuiti tra l'organizzazione in formati diversi e sono scarsamente organizzati e conservati. Per queste ragioni l'acquisizione e la pre-elaborazione dei dati assumono ruoli significativi all'interno del processo di estrazione di conoscenza e i data warehouse sono sempre più diffusi. 1.13 Evoluzione futura Malgrado la sua rapida crescita, lo stato dell’arte nel campo del KDD è ancora relativamente agli inizi. Molte delle problematiche fondamentali rimangono irrisolte. L’emulazione delle capacità della mente umana di sintetizzare nuova conoscenza dai dati risulta un’operazione complessa, quasi irraggiungibile, per qualsiasi macchina. Tuttavia le quantità di dati da analizzare richiedono inevitabilmente il forte utilizzo delle macchine e conseguentemente di gran numero di modelli, algoritmi eccetera. Però il fatto che lo sviluppo dell'area è spinto da forti bisogni sociali ed economici, è causa della sua continua crescita ma anche di quella selezione naturale che permette di scartare rapidamente quelle teorie e tecniche che non risultano vincenti. 2 Il Processo della Scoperta della Conoscenza N on è possibile sperare di utilizzare un algoritmo per il data mining, come le reti neurali o gli alberi di decisione, direttamente sui dati e pretendere di ottenere dei risultati significativi. La scoperta di conoscenza è un processo che richiede un certo numero di passi necessari per assicurare l'efficace applicazione del data mining. I passi fondamentali del processo di scoperta di conoscenza dai databases (Knowledge Discovery from Database, KDD) sono: 1. Identificazione del problema 22 2. Preparazione dei dati 2.1. Raccolta 2.2. Accertamento 2.3. Consolidamento e Pulizia 2.4. Selezione 2.5. Trasformazione 3. Costruzione del modello 3.1. Valutazione 3.2. Validazione esterna 4. Utilizzo del modello 5. Monitoraggio del modello Prerequisito fondamentale è l'avere una buona conoscenza dei dati e della realtà di mondo che essi descrivono. Senza questo background anche se (fortunatamente) si ottengono buoni risultati, non si saprebbe cosa significano pienamente, come sfruttarli, eccetera. Descriviamo brevemente i vari passi: 1. Identificazione del problema. Per il miglior uso del data mining bisogna saper esprimere chiaramente i propri obiettivi. Infatti una cattiva descrizione del problema rallenta lo sviluppo dell'intero processo e può causare la cattiva scelta del modello da utilizzare. 2. Preparazione di dati. Questo è il passo che richiede più tempo. Possono essere richieste più ripetizioni dei passi di preparazione dei dati e di costruzione del modello. La preparazione dei dati prende di solito tra il 50% e l'80% del tempo e degli sforzi dell'intero processo KDD. 2.1. Raccolta. Bisogna individuare le sorgenti dei dati che si vogliono scavare. Per di più è possibile che parecchi dati di cui si ha bisogno non sono mai stati collezionati, cosicché la fase di raccolta dei dati risulta inevitabile. 2.2. Accertamento. Anche il data mining, gran parte delle tecniche che lavorano sui dati, è vittima del GIGO (Garbage In, Garbage Out), cioè se gli si danno in ingresso dei dati scorretti, anche in uscita ci saranno dati scorretti. Ne segue che se si vogliono dei buon modelli occorre avere 23 buoni dati. Una ispezione dei dati identifica le caratteristiche dei dati che influiranno sulla qualità del modello11. I dati di cui si ha bisogno risiedono in un solo o più databases. Le sorgenti si possono trovare nel database dell'organizzazione, nel data warehouse o in data marts realizzati per scopi specifici, oppure non si hanno a disposizione perché esterni. Nasce il problema di consolidare i dati in un singolo database e in seguito si dovranno affrontare i tipici inconvenienti della consolidazione come le inconsistenti definizioni dei dati, le differenti codifiche dei dati e i valori inconsistenti per gli stessi elementi di dati. Anche quando i dati provengono da un solo database bisogna ugualmente esaminarli alla ricerca di problemi come la mancanza di dati o la presenza di valori che violano i vincoli di integrità. Bisogna anche accertarsi sulla provenienza dei dati, il tipo di memorizzazione, le unita di misura usate, come e quando i dati sono stati raccolti e sotto quali condizioni. In pratica bisogna assicurarsi, nel miglior modo possibile, che tutti i dati misurano la stessa cosa e nella stessa maniera 2.3. Consolidamento e Pulizia. É il passo nel quale si costruisce il database dal quale prelevare i dati da elaborare. Occorre consolidare i dati e rimediare, per quanto possibile, ai problemi che si sono identificati nel passo precedente. Chiaramente non si potranno risolvere in modo perfetto tutti i problemi, ma è d'obbligo tuttavia affrontarli nel migliore dei modi possibili. Ricorrere a soluzioni semplici, superficiali può addirittura peggiorare le cose. Ad esempio ignorare tuple con rilevanti mancanze di dati può portare alla costruzione di modelli di predizione che non rappresentano l'ottimo, infatti si basano su dati che in parte non hanno un particolare significato. 2.4. Selezione dei dati. Una volta raccolti e consolidati i dati, si passa alla selezione dei dati specifici per ogni modello che si vuole costruire. Per i modelli predittivi si separano le variabili (colonne) indipendenti da quelle dipendenti, si scelgono i casi (righe) per il training (addestramento) del modello. Alle inizio del loro sviluppo, molti algoritmi di data mining ignoravano automaticamente le variabili scarsamente significative e prendevano in considerazione giustamente solo le colonne correlate, ora però è consigliabile non fare affidamento esclusivamente sul software di elaborazione. Spesso la conoscenza del dominio del problema permette di 11 A titolo di esempio riportiamo la storia di un gruppo di "miners" di una compagnia di assicurazione che costruì un modello per predire chi tra i clienti avrebbe avuto più probabilmente un incidente. Risultò che le persone nate sotto il segno dei pesci erano più inclini agli incidenti! Ma tale conclusione sospetta fu chiarita quando ci si accorse che la maggior parte delle persone nel database era dei pesci e di conseguenza anche la maggior parte delle persone incidentate poteva essere nata sotto tale segno. 24 selezionare i dati correttamente. Gli strumenti grafici, che aiutano a visualizzare i dati e le loro relazioni, sono molto utili a questo punto: ad esempio aiutano nell'identificazione di variabili indipendenti importanti e rivelano variabili che sono in relazione lineare. Si può volere scartare i dati che sono chiaramente degli outliers. In qualche caso gli outliers contengono informazioni importanti (anche per la costruzione del modello), ma spesso essi possono e/o devono essere ignorati: ad esempio possono essere il risultato di uno scorretto inserimento dei dati oppure la registrazione di eventi che accadono molto raramente. Campionare i dati quando il database è grande è spesso una buona idea, e per molti problemi non si ha una grossa perdita di informazione, sebbene la campionatura deve essere fatta in modo rigoroso in modo da assicurare l'effettiva casualità della selezione. Di fronte alla scelta di analizzare pochi modelli costruiti su tutti i dati oppure analizzare tanti modelli ma costruiti su dati campionati, quest'ultimo approccio di solito è il migliore per la realizzazione di modelli più robusti e accurati. 2.5. Trasformazione. Dopo aver selezionato i dati si potrebbe presentare l'esigenza di operare ulteriori trasformazioni su essi. Si potrebbe volere utilizzare grandezze derivate, come ad esempio rapporti tra due variabili, oppure normalizzare qualche grandezza continua, o discretizzarla, oppure trasformare una variabile categorica in una variabile dicotomica multipla. 3. Costruzione del modello di data mining. È fondamentalmente un processo iterativo. Occorre esaminare modelli alternativi per trovare quello migliore per il problema posto: tale ricerca comporta spesso la riconsiderazione dei passi precedenti, ad esempio modificando la selezione dei dati o anche modificare la descrizione del problema stesso. Il procedimento di costruzione del modello può essere ad apprendimento supervisionato (come nella classificazione, regressione e serie temporali) o non supervisionato (come nel clustering, nella scoperta di associazioni e sequenze). La seguente descrizione si concentra sull'apprendimento supervisionato che ha una più chiara definizione rispetto all'apprendimento non supervisionato. Una volta deciso il tipo di modello da costruire, occorre scegliere l'algoritmo che costruirà tale modello. Tale scelta influisce anche sulle operazioni da effettuare nella fase della preparazione dei dati. Ad esempio una rete neurale 25 richiede che le variabili categoriche siano trasformate in gruppi di variabili binarie. Quando i dati sono pronti si procede all'addestramento del modello. L'essenza dell'apprendimento supervisionato è l'addestramento del modello su un porzione dei dati, quindi testare e verificare sui restanti dati. Il modello è costruito quando il ciclo di training e testing è terminato (con esito soddisfacente). Qualche volta c'è bisogno di un terzo insieme di dati, detto insieme di convalida (validation), perché i dati di test potrebbero influenzare le caratteristiche del modello, e l'insieme di convalida esegue una misura indipendente dell'accuratezza del modello. I processi di training e di testing richiedono che i dati vengano spezzati in almeno due gruppi: il primo per la stima dei parametri del modello, l'altro per la verifica. Se questi gruppi non sono distinti, l'accuratezza del modello sarà sovrastimata perché una parte dei dati di test è servita anche ad addestrare il modello. Una volta addestrato il modello, il tasso di accuratezza che si ottiene dando in pasto al modello stesso l'insieme di testing risulta una buona stima della accuratezza che si ottiene fornendo al modello dei dati nuovi. Non garantisce la correttezza del modello, ma se si usa il modello su databases con dati non dissimili a quelli degli insiemi di training e testing, l'accuratezza media sarà prossima a quella ottenuta col passo di testing. Il più semplice metodo di testing è noto come convalida semplice (simple validation). Si impone che una certa percentuale del database formi l'insieme di test che non verrà mai usato per la costruzione del modello. Questa percentuale tipicamente va dal 5% al 33%. Inoltre la divisione tra dati di testing e di training deve essere casuale affinché entrambi gli insiemi ottenuti riflettano le caratteristiche peculiari dell'intero database. Dopo il passo di testing alcune tuple (elementi, oggetti, eventi, casi, istanza, riga) saranno classificate in modo errato: il rapporto tra il numero di classificazioni scorrette e il numero totale di istanze fornisce il tasso di errore, mentre il rapporto tra classificazione corrette e il numero di istanze è il tasso di accuratezza (accuratezza = 1–errore). Anche nella costruzione di un solo modello, la convalida semplice può essere richiesta un dozzina di volte. Se si ha a disposizione una modesta quantità di dati per la costruzione del modello, un metodo di verifica più affidabile è la convalida incrociata (cross validation), nel quale i dati sono divisi casualmente in due insieme di pari cardinalità. Il modello è realizzato con l'intero insieme dei dati a disposizione, mentre la verifica avviene così: viene costruito un modello sul primo sottoinsieme e viene testato sul secondo ottenendo una certa accuratezza, si 26 esegue poi lo stesso processo scambiando i due sottoinsiemi e la media delle due (indipendenti) accuratezze da una miglior stima dell'accuratezza del modello costruito con tutti i dati. Con databases ancora più piccoli, con poche migliaia di tuple o meno, per il testing il database è solitamente diviso in più di due gruppi: per ogni gruppo viene creato un modello sui restanti gruppi e testato sul gruppo in questione. La media delle accuratezze ottenute è una miglior stima dell'accuratezza che si ricava costruendo il modello su tutti i dati a disposizione. Il bootstrapping (inizializzazione) è un'altra tecnica per la stima dell'accuratezza del modello e viene usata principalmente con piccoli insiemi di dati. Come per il cross validation, il modello è costruito su tutto l'insieme. Dopo vengono creati molti insiemi di training campionando l'insieme dei dati in modo casuale, può succedere che uno stesso record sia presente più di una volta nello stesso insieme di training. Vengono creati almeno 200 ( e qualche volta sopra i 2000) insiemi di training, e tipicamente la stima finale dell'accuratezza è data dalla media delle accuratezze di ogni insieme di testing di bootstrap. Nessuno strumento o modello è perfetto per tutti i dati e prima di iniziare è difficile, se non impossibile, accertare quale tecnica lavorerà meglio delle altre; molto spesso si devono costruire molti modelli prima di trovarne uno soddisfacente. Per ogni modello costruito si devono iterare le fasi di apprendimento e verifica, e spesso anche la fase di preparazione dei dati: la quantità di tempo usata nella ricerca di un buon modello è significativamente ridotta se l'algoritmo può sfruttare i vantaggi della computazione parallela. 3.1. Valutazione e interpretazione. A modello costruito e operanti, si valutano i risultati che si ottengono e se ne interpreta la significatività. Per problemi di classificazione, la matrice di confusione è uno strumento molto utile per capire la qualità dei risultati: essa mostra la distribuzione tra le varie classi dei valori attuali contro quella dei valori predetti. Non mostra soltanto quanto il modello predice bene, ma presenta anche i dettagli necessari a capire esattamente dove le cose non vanno per il verso giusto. Le colonne della matrice riportano le classi attuali mentre le righe le classi predette, cioè nella cella i-j si trova il numero di record che appartengono alla j-esima classe che vengono assegnati alla i-esima classe. Ne segue che sulla diagonale principale ci sono i numeri delle predizioni corrette, mentre nelle altre posizione ci sono il numero delle predizioni errate. 27 Attuali Predette classe A classe B classe C classe A classe B classe C 45 10 4 2 38 6 3 2 40 Figura 3 Matrice di Confusione In questa matrice di confusione il modello ha predetto correttamente 38 dei 46 ( = 2 + 38 + 6 = somma degli elementi della colonna della classe B) elementi della classe B, ne ha sbagliati 8 ritenendoli 2 della classe A e 6 della classe C. Ciò è molto più significativo che dire che l'accuratezza è pari all'82% ( 100* (45+38+40)/(45+10+4+2+38+6+3+2+40) = 100*123/150 = 82 ). In particolare se ci sono costi differenti associati ad ogni tipo di errore (elemento della classe X classificato invece della classe Y), un modello con bassa accuratezza può essere preferito ad un altro con ottima accuratezza ma con un costo superiore a causa del particolare tipi di errore che compie. Un altro importante criterio di valutazione è la comprensibilità del modello. In molti applicazioni economiche è importante saper spiegare perché una decisione è stata presa, mentre in altre persino piccoli miglioramenti in accuratezza sono così rilevanti che l'interpretabilità perde di attenzione. In generale gli alberi di decisione e i sistemi basati sulle regole esplicano meglio le ragioni implicite che hanno portato ad un certo risultato. Tuttavia anche un albero o una regola possono diventare talmente complessi da renderli non più interpretabili. Il grafico del lift (o di guadagno) è di grande aiuto per valutare l'utilità di un modello: mostra come i risultati cambiano con l'adozione di un modello. Ad esempio si può inviare della pubblicità via posta a un certo persone scelte in modo casuale e allo stesso numero di persone selezionate in base al modello e verificare gli scostamenti dei risultati. 28 100 90 80 70 60 50 40 30 20 10 0 1 2 3 4 5 6 Decile 7 8 9 10 Figura 4 Grafico Lift Un altro importante componente per l'interpretazione è l'accertamento del valore del modello. Un pattern può essere interessante, ma tentare di sfruttarlo costa più dei vantaggi che genera. In teoria si possono sfruttare i risultati di un modello in modo proficuo, ma potrebbero non esistere gli strumenti pratici per beneficiare della conoscenza conseguita. 3.2. Validazione esterna. In qualsiasi maniera venga stimata la bontà dell'accuratezza del modello, non si ha la garanzia che esso si rifletta nel mondo reale. Un modello valido non è necessariamente un modello corretto: questa discrepanza è causata principalmente dalle assunzioni implicite per la costruzione del modello. Ad esempio il tasso di inflazione può essere esclusa dal modello di previsione delle propensione agli acquisti dei consumatori, ma forte sbalzi di essa certamente influiscono sul comportamento delle persone. Pertanto è importante testare il modello sul mondo reale. Conviene selezionare prima un piccolo ambito dove applicare il modello, verificarne l'efficacia per questo spazio ristretto e solo dopo aver ottenuti riscontri positivi si può estenderlo all'intero dominio di applicazione. 4. Utilizzo del modello. Costruito e validato un modello per data mining, lo si può impiegare in due modi differenti. Il primo riguarda gli analisti che semplicemente visionano il modello e i sui risultati. Spesso l'analista applica il modello a dati differenti oppure lo usa per selezionare insiemi di records dal database da sottoporre a ulteriori analisi con altri tipi di strumenti come l'OLAP. A seguito di questi impieghi, l'analista suggerisce le eventuali azioni da intraprendere per il raggiungimento degli obiettivi fissati. Spesso però i modelli sono parte di un processo, come l'analisi dei rischi o la rivelazione di frodi, e sono incorporati nell'applicazione: ad esempio un 29 modello di predizione può essere integrato in una simulazione che viene impiegata nella scelta delle decisioni come per la programmazione delle promozioni. Oppure il modello può essere incorporato in un sistema di gestione di un inventario, che automaticamente genera delle ordinazioni quando si prevede che i livelli delle provvigioni scendono sotto le soglie. I modelli di data mining sono spesso applicati a un evento o transazione per volta. La quantità di tempo per processare tutte le nuove transazioni, e la velocità con la quale arrivano, determineranno se occorreranno algoritmi paralleli. Così, mentre le applicazioni per la valutazione dei rischi creditizi possono essere facilmente eseguite su computer di modeste dimensioni, il monitoraggio delle operazioni con carte di credito o delle chiamate telefoniche cellulari per la rivelazione di frodi potrebbero richiedere un sistema parallelo per trattare l'elevato numero di transazioni. Quando si ha a che fare con complesse applicazioni, il data mining è spesso solo un piccola, sebbene critica, parte del prodotto finale. Ad esempio, la scoperta di conoscenza attraverso il data mining può venire combinata con la conoscenza di esperti del settore e applicata ai dati nel database. In un sistema di rivelazione delle frodi, le forme (patterns) note di frodi vengono confrontate coi patterns scoperti. 5. Monitoraggio del modello. Naturalmente si deve misurare la bontà del lavoro svolto dal modello dopo averlo usato. Bisogna continuamente controllare il modello, anche quando funziona bene, perché nel tempo tutti i sistemi evolvono e cambiano i dati che essi producono. I commercianti sanno che i gusti della gente variano, a lungo andare il tasso di inflazione influisce sui comportamenti, variabili esterne precedente e correttamente trascurate, possono diventare influenti. Di tanto in tanto il modello va ritestato, riaddestrato ed eventualmente ricostruito da capo. I diagrammi che confrontano i risultati previsti con quelli osservati sono degli eccellenti indicatori del comportamento del modello. Tali diagrammi sono facili da usare e da capire, non sono computazionalmente dispendiosi e il software che li produce può essere incorporato col software che implementa il modello. Così il sistema può monitorare se stesso. 30 3 Tipi di Modelli 3.1 Introduzione ai modelli Lo scopo del data mining è produrre nuova conoscenza che l'utente possa utilizzare, sfruttando la costruzione di un modello del mondo reale che si basa sui dati raccolti da varie sorgenti Un modello per il data mining generalmente è inquadrato in uno dei seguenti tipi: classificazione, regressione, serie temporali, clustering (raggruppamenti), analisi delle associazioni e scoperta delle sequenze [23]. Modelli di classificazione, regressione e serie temporali sono principalmente usati per la predizione, mentre i modelli di clustering, di associazione e di scoperta di sequenze sono soprattutto utilizzabili per la descrizione. La classificazione e la regressione sono i tipi di modelli per il data mining più realizzati. Nei modelli predittivi, i valori o le classi che si predicono sono dette variabili dipendenti o obiettivo, mentre i valori impiegati per realizzare la predizione sono detti variabili indipendenti o predittrici. 3.1.1 Apprendimento supervisionato e non supervisionato Ci si riferisce alla classificazione, alla regressione e alle serie temporali come modelli a supervised learning (apprendimento sorvegliato), perché per costruirli c'è bisogno di dati che sono già classificati (o che hanno valori noti), cioè il modello deve imparare sulla base esempi come deve comportarsi con nuovi eventi. Al contrario per il clustering, le associazioni e la scoperta di sequenze, risultati già noti non sono disponibili e gli algoritmi non vengono addestrati. Ciò è spesso indicato come unsupervised learning (apprendimento non sorvegliato). 3.1.2 Descrizione gerarchica del problema Trattare i problemi del data mining in modo gerarchico, dà un vigoroso aiuto alla soluzione di essi. Al livello più alto della struttura c'è il problema espresso nei termini tipici dell'ambiente a cui si riferisce: in astronomia un problema può essere quello di inserire una stella in uno dei gruppi tipici fra i quali si raggruppano le stelle stesse, come ad esempio giganti rosse, nane bianche, eccetera. Il livello successivo è il tipo di modello che si vuole utilizzare. Si può realizzare 31 un modello di classificazione, di clustering per raggruppare le stelle. Più in basso c'è il livello dell'algoritmo che costruisce il modello. Ad esempio per la classificazione delle stelle si possono usare alberi di decisione, reti neurali, eccetera. Tuttavia si possono anche sfruttare algoritmi della statistica tradizionale. L'ultimo livello della gerarchia è occupato dal prodotto (tool) usato per la realizzazione del modello. Prodotti differenti generalmente realizzano differenti implementazioni di un particolare algoritmo. Queste differenze implementative si riferiscono a caratteristiche operazionali come l'uso della memoria e l'immagazzinamento dei dati, e influiscono quindi sulle prestazioni come la velocità e l'accuratezza. Spesso per molti dei problemi da affrontare il migliore approccio è costruire diversi tipi di modelli e provare più di un algoritmo per modello, perché, a secondo dei dati e del problema, alcuni algoritmi e modelli funzionano meglio di altri. Per di più è quasi impossibile determinare analiticamente quale algoritmo è il migliore per il modello che si sta costruendo. 3.2 Classificazione La classificazione permette di trovare le caratteristiche comuni tra un insieme di oggetti in un database e li raggruppa in classi differenti, in accordo con il modello di classificazione. Per costruire il tale modello, un campione del database è trattato come insieme di addestramento, nel quale ogni tupla ha gli stessi attributi di tutte le tuple nel database, e in più possiede un attributo categorico (etichetta) che indica la classe alla quale appartiene. L'obbiettivo della classificazione è all'inizio di analizzare i dati di addestramento e sviluppare il modello che descrive accuratamente ogni classe usando le caratteristiche insite nei dati. Tali descrizioni delle classi sono quindi utilizzate per classificare le altre tuple del database o future nuove tuple. Ne segue che la classificazione permette sia di comprendere meglio i dati sui quali si è effettuata la classificazione, sia di predire quale sarà il "comportamento" di nuovi dati. Ad esempio: • • • chi risponderà molto probabilmente a una campagna pubblicitaria postale? chi tra i malati trarrà beneficio da una particolare operazione chirurgica? chi fra gli studenti di ingegneria giungerà alla laurea? (Io) infatti una volta individuate le caratteristiche di un nuovo cliente, malato, studente, confrontandole con quelle delle classe ottenute, sarà facile collocarlo nel modo adeguato. 32 Come già detto il data mining crea i modelli di classificazione dall'esame di dati già classificati e per induzione predice il comportamento di futuri nuovi dati. I casi già classificati hanno origine da databases storici, come ad esempio dalle informazioni sulle persone che hanno già subito quella operazione chirurgica o che si sono già laureati. Oppure tali casi possono provenire da esperimenti nei quali un campione estratto dal database è testato nel mondo reale e si usano i risultati per la costruzione del classificatore. Ad esempio si può spedire ad un gruppo di persone estratte casualmente tra i probabili obiettivi per una campagna pubblicitaria postale e utilizzare le reazioni di tali persone per la realizzazione di un modello di classificazione da applicare all'intero database. In qualche problema di data mining un esperto classifica un campione del database e tale classificazione viene usata per creare un modello da applicare all'intero database. I modelli di classificazione sono realizzati nella maggior parte dei casi tramite alberi di decisione e reti neurali. 3.3 Regressione e previsione La regressione sfrutta valori già noti per predire altri valori non ancora noti. Tecnicamente si usano un gruppo di variabili divise tra variabili dipendenti e indipendenti. Dato un certo insieme di tuple delle quali sono noti i valori delle variabili dei due tipi, si costruisce il modello di regressione. Successivamente, avendo a disposizione un altro insieme di tuple delle quali sono noti solo i valori delle variabili indipendenti, si usa il modello per predire i valori delle variabili dipendenti. Insieme alla classificazione la regressione si occupa di predizione, con la differenza che la prima predice variabili categoriche mentre la regressione predice variabili numeriche. Nei casi più semplici si adoperano le tecniche standard della statistica come la regressione lineare. Sfortunatamente però in molti problemi reali i valori ignoti non sono delle semplici proiezioni lineari dei valori già noti, ciò accade soprattutto quando la variabile dipendente è legata a molte variabili indipendenti, o quando la regressione lineare è pesantemente influenzata da anche pochi outliers. Quindi tecniche più complesse sono necessarie per predire i valori futuri, come la regressione non lineare, le funzioni a base radiale (radial basis function, RBF), reti neurali RBF. Le stesse tecniche spesso possono essere usate sia per la regressione sia per la classificazione. Ad esempio, il CART (Classification And Regression Trees) costruisce alberi di classificazione che classificano variabili categoriche dipendenti, e alberi di regressione che predicono variabili continue dipendenti. Le reti neurali possono creare sia modelli di classificazione sia di regressione. 3.4 Clustering (analisi dei gruppi) Il clustering divide un database in gruppi distinti, senza il ricorso a dati di 33 addestramento. L'obiettivo è di trovare gruppi che sono differenti l'uno dall'altro, ma i membri di un singolo gruppo devono essere molto simili tra loro. Diversamente dalla classificazione, all'inizio del processo di clusterizzazione non si conosce che cosa rappresenteranno i cluster o quali attributi avranno maggior influenza sulla costituzione dei raggruppamenti stessi. Esistono moltissime tecniche per realizzare il clustering [16][17]: • algoritmi scissori, si basano sulla partizione dell'insieme iniziale in due sottoinsiemi e sulle successive suddivisioni delle partizioni che soddisfano a qualche criterio di ottimalità; • algoritmi aggregativi, nei quali i gruppi si formano aggregando le tuple a centri predeterminati in funzione di qualche criterio di scelta (k-mean, algoritmo agglomerativo); • reti neurali (Kohonen feature map) [18]. Raggruppare è una ottima maniera di iniziare qualsiasi analisi dei dati, infatti i clusters forniscono quella conoscenza iniziale sui dati che permette il miglior uso di essi nelle successive analisi. Tra i vantaggi del clustering ci sono: • apprendimento non supervisionato, • buon comportamento con dati categorici, numerici e di testo, facilità di applicazione, tra gli svantaggi: • difficoltà nella scelta delle misure di distanza tra le tuple, • sensibilità ai parametri iniziali, • difficoltà nell'interpretazione dei clusters risultanti. 3.5 Analisi dei legami (link analisys) Contrariamente ai modelli predittivi e alle operazione di segmentazione (clustering), che puntano a caratterizzare il contenuto di un database nel suo complesso, l'analisi dei legami cerca di stabilire i legami tra i records individuali o insiemi di records. Queste relazioni sono spesso chiamate associazioni. Una tipica applicazione dell'analisi dei collegamenti è proprio la scoperta di associazioni. Esistono tre specializzazioni per l'analisi dei collegamenti: 1. scoperta di associazioni, 2. scoperta di sequenze, 3. scoperte di sequenze temporali simili. 34 3.5.1 Scoperta di associazioni Lo scopo della scoperta di associazioni è di trovare insiemi di oggetti, che implicano la presenza di un altro insieme di oggetti nello stesso evento, nella stessa transazione. Un esempio classico è dato da un database di acquisti (transazioni) , ognuno dei quali è composto da diversi articoli (oggetti), eseguito da diversi acquirenti. Applicando la scoperta di associazioni a questo insieme di transazioni si scopriranno le affinità tra insiemi di oggetti. Queste affinità sono rappresentate tramite le regole di associazione. Generalmente una regola ha lo forma: "se X allora Y" e si rappresenta con X ⇒ Y, dove X è un insieme di oggetti ed è detto corpo o antecedente o parte sinistra, Y è anch'esso un insieme di oggetti, distinti da X, ed è detto testa o conseguente o parte destra. Gli algoritmi di associazione sono veloci ed efficienti nel ricavare le regole. Le difficoltà, piuttosto, nascono quando si deve giudicare della validità e dell'importanza delle regole. A questo riguardo sono importanti due parametri: il supporto e la confidenza. Il supporto indica il numero relativo di volte che appare una regola scoperta all'interno dell'insieme totale delle transazioni: supporto = numero di transazioni che contengono sia il corpo che la testa numero totale di transazioni Il supporto è indice dell'importanza della regola rispetto alle altre estratte dallo stesso database. La confidenza indica la forza della regola di associazione ed è definita dal rapporto: confidenza = numero di transazio ni che contengono sia il corpo che la testa numero di transazio ni che contengono solo il corpo Regole con supporto e confidenza elevati sono molto più significative di quelle con tali valori bassi. L'esistenza di una regola non implica obbligatoriamente l'esistenza di una relazione causale tra gli oggetti del corpo e della testa della regola. Di solito le regole che si ottengono appartengono a una delle tre seguenti categorie: • regole utili, • regole triviali, • regole inesplicabili. Le regole utili sono quelle che contengono informazione di buona qualità e che non sono difficili da giustificare, ad esempio "quando si compra la farina in quantità spesso si compre anche lo zucchero". Le regole triviali sono quelle che già ampiamente acquisite, ad esempio "se un 35 paziente soffre di vene varicose allora il paziente è donna". Le regole inesplicabili sono quelle che non hanno giustificazioni sensate e che non suggeriscono niente, ad esempio "quando si comprano dei lacci per le scarpe spesso si comprano anche dei floppy disks". Il lift è un'altra misura della forza dell'associazione A ⇒ B. Maggiore è il lift e maggiore sarà l'influenza che il numero di presenze di A tra le transazioni ha sulla probabilità che anche B comparirà, cioè più sono numerose le transazioni dove A è presente e maggiore è la probabilità che insieme ad A ci sia anche B. Il lift è il rapporto tra la confidenza di A ⇒ B e la frequenza relativa di B: T(AB) T(A) Τ( ΑΒ) ∗ Τ , = Τ( Α ) ∗ Τ( Β ) T(B) T Lift(Α ⇒ Β) = dove T(X) è il numero di transazioni che contengono l'insieme di voci X, T è il numero totale di transazioni. Per le due regole A⇒B e B⇒A il lift è coincidente (così come per il supporto) Esempi di regole utili sono: • Se vengono acquistati formaggio magro e yogurt, allora nell'85% dei casi viene comprato anche latte scremato (supporto 10%). • Se malato soffre di reumatismi, nel 40% dei casi è soggetto a cefalee e ha difficoltà nell'udito (supporto 1%). • Se una persona compra un martello e delle tavole, compra anche i chiodi il 50% delle volte (supporto 20%). Spesso accade che gli oggetti nel database sono moltissimi e ognuno di essi appare in relativamente poche transazioni (supporti bassi) e spesso si è interessati non a un singolo particolare oggetto (ad es. il Caffè Ciofè Decaffeinato) ma a categorie di oggetti (ad es. caffè). In questi casi, se la natura degli oggetti lo permette, si può ricorrere all'uso di tassonomie. Una tassonomia generalizza e gerarchizza gli oggetti, nel senso che diversi oggetti possono essere raggruppati sotto un unico concetto più generale e vari concetti possono essere raggruppati sotto concetti più generali, ottenendo così una gerarchia di concetti. Ad esempio una tassonomia per i prodotti in vendita al reparto bevande in un supermercato può avere la seguente struttura: Bibite Alcolici Vino Grappa Analco lici Acqua Gassosa Ora nello stesso numero di transazioni sono contenuti un minor numero di 36 concetti e quindi si trovano meno regole ma più significative. Nel campo della vendita al dettaglio, l'utilizzo dell'elettronica per le registrazioni di cassa (lettori ottici dei codici a barre) ha permesso la memorizzazione in grande quantità di transazioni, e quindi ha reso possibile la scoperta di associazioni per quanto riguarda gli acquisti e le vendite: tale attività viene detta in inglese marketbasket analysis. La tecnica più diffusa per la scoperta di regole di associazione è l'algoritmo Apriori. Alcune implementazioni di algoritmi per la scoperta di regole di associazioni supportano un solo elemento nella parte destra o nella parte sinistra. Tra i vantaggi della scoperta delle regole di associazione ricordiamo: • spesso risultati chiari e comprensibili, • non abbisogna di apprendimento, • lavora su dati di lunghezza variabile, • i procedimenti di calcolo che richiede sono facili da intendere. Tra gli svantaggi ci sono: • il numero di operazioni da eseguire varia esponenzialmente con la quantità di dati, • difficoltà nel decidere il numero appropriato di oggetti con cui lavorare, • viene sminuita l'importanza degli oggetti che si presentano raramente. Per quanto riguarda quest'ultimo inconveniente, la scoperta di associazioni funziona meglio quando tutti gli oggetti compaiono quasi con la stessa frequenza nei dati. Una estensione alle regole di associazione sono le regole di dissociazione, le quali coincidono con le prime, ma in più in esse si usa anche il connettore logico "e non" ("and not"), oltre che al "e" ("and"): "se X e (non Y) ⇒ W e (non Z)" Esempio: "se si compra farina e non zucchero allora si compra anche pelati". Le regole di dissociazione sono generate con semplici adattamenti agli stessi algoritmi per le regole di associazione, ovvero vengono considerati come nuovi oggetti gli inversi degli oggetti stessi: se l'oggetto X è presente in 30 transazioni su 100, allora l'oggetto "non X" sarà presente nelle restanti 70 transazioni. 3.5.2 Scoperta di sequenze Si tratta di un processo strettamente legato alla scoperta di associazioni, la differenza è che le relazioni tra gli oggetti devono rispettare una successione 37 temporale, cioè si cerca di individuare insiemi di oggetti che sono seguiti temporalmente da altri insiemi di oggetti. Risulta quindi fondamentale conoscere, oltre agli oggetti di una transazione, anche il tempo nel quale è avvenuta la transazione e chi la ha effettuata (un particolare cliente di un negozio, un certo malato sottoposto ad un ciclo di cure mediche, eccetera). Il campo che indica il tempo può essere una data, una ora, l'insieme di data e ora, o qualsiasi altro tipo di dato che comunque si riferisca al tempo (ad esempio un intero potrebbe indicare un anno); ci riferiremo ad esso come campo temporale. Il campo che si riferisce al soggetto della transazione è un dato categorico e ci riferiremo ad esso come campo soggetto. In definitiva una transazione è costituita da un campo soggetto, un campo temporale e diversi campi oggetto (items). Le sequenze non sono limitate a solo due insiemi di oggetti, come per le regole di associazione (A ⇒ B), ma ne possono contenere di più: A→B→C, dove il simbolo "→" sta per "segue". Per le sequenze è definito il supporto: data una certa sequenza, il supporto è il rapporto tra il numero di soggetti per i quali sussiste la sequenza e il numero totali di soggetti. Degli esempi di sequenze sono: • Quando una persona compra un martello, successivamente compra i chiodi nel 18% dei casi, e negli ulteriori successivi tre mesi nel 12% dei casi. • Se viene eseguita un certa operazione chirurgica ai polmoni, sopraggiunge successivamente la febbre e una infezione nel 45% dei casi. • Se il titolo A sale e l'indice MIBTEL scende, allora il titolo A salirà ulteriormente nel 68% dei casi. Molti programmi per il data mining trattano le sequenze come associazioni per le quali gli eventi sono collegati nel tempo. La scoperta di sequenze ha gli stessi vantaggi e svantaggi delle analisi delle associazioni, e in più bisogna considerare che: • c'è bisogno di specificare un solo parametro, il supporto; • occorrono un elevato numero di records per assicurare che per ogni soggetto ci siano un numero significativo di transazioni; • è richiesto un campo supplementare per rappresentare i soggetti, ma spesso i databases delle varie organizzazioni, specialmente quelle che si occupano di vendite, non memorizzano informazioni sui soggetti; • le tecniche di ricerca di sequenze funzionano meglio se i dati sono anticipatamente ordinati per soggetto e per tempo. 38 3.5.3 Scoperta di sequenze temporali simili La scoperta di sequenze temporali simili si occupa di trovare le sequenze simili tra loro, o simili ad una fissata sequenza, in un database con dati temporali. Per sequenza temporale intendiamo un insieme ordinato di valori di una variabile su un periodo di tempo. I modelli per la scoperta di sequenze temporali devono tenere in considerazione le proprietà caratteristiche del tempo come ad esempio la gerarchia dei periodi temporali (ora, giorno, mese, anno), i periodi particolari come i diversi tipi di settimana con 5, 6 o 7 giorni, le festività e le pause feriali, l'aritmetica delle date. Su un grafico bidimensionale si può rappresentare una sequenza temporale ponendo sull’asse delle ascisse il tempo per unita discrete costanti come ad esempio settimane, mesi oppure anni. Sull’asse delle ordinate sono graficati i valori della variabile, ad esempio vendite di prodotti, costi di mutui, quotazioni di titoli. Supponiamo che una società di distribuzione al dettaglio abbia un database con le vendite effettuate. Si potrebbero individuare i prodotti o di gruppi di prodotti che hanno un andamento delle vendite periodico, o quelli che le cui vendite sono in fase, in ritardo o in anticipo rispetto alle vendite di un altro gruppo di prodotti. Sulla base di tali informazioni si potrebbero ottimizzare i rifornimenti del magazzino per l’anno o per la stagione successiva. Fondamentale per la previsione di serie temporali è quando e come considerare due serie uguali. A causa dell'intrinseca casualità dei dati reali, il concetto di uguaglianza deve essere aggiustato per ottenere una significativa e utilizzabile definizione di similarità. Due approcci comuni a questo problema sono l'introduzione di un margine per l'errore e di un ammissibile gap di disaccordo. Il margine per l'errore è il numero massimo di oggetti in posizione corrispondente in due sequenze che possono differire ma che vengono considerati uguali: tale valore assicura la tolleranza per l'intrinseca variabilità delle serie di dati temporali. Il gap di disaccordo è il numero di unità temporali consecutive per le quali sono ignorati i valori in disaccordo: tale valore assicura che brevi sottosequenze non concordi in due sequenze non inficino sulla loro evidente somiglianza. Un vantaggio della scoperta di sequenze temporali simili è che molti pattern possono essere scoperti senza nessuna condizione particolare da imporre, tranne che i dati devono essere quantitativi e dipendenti dal tempo. Uno svantaggio sta nel fatto che bisogna impostare con cura un certo numero di parametri, e la cosa potrebbe non risultare agevole per un utente inesperto alle prime armi. Specificando un margine di errore troppo piccolo, sicuramente non si ottiene nessun risultato. Specificandolo troppo grande, si potrebbero ottenere troppe sequenze considerate simili ma che in realtà non lo sono. 39 Imponendo un gap di disaccordo troppo piccolo le sequenze simili potrebbero restare nascoste, imponendolo troppo grande, potrebbero venire fuori delle soluzioni non valide. 4 Data Mining: Strumenti e Tecnologie D opo aver parlato dei tipi di problemi che il data mining risolve e dei modelli che adotta, descriviamo ora alcune tecniche per realizzare tali modelli e risolvere tali problemi. Molti prodottori di software per il data mining usano delle varianti di algoritmi e di strumenti pubblicati sui giornali di statistica e di informatica, adattati agli obiettivi che si prefiggono. Ad esempio molte società informatiche vendono delle versioni del CART o del CHAID, due algoritmi per la classificazione ad albero, con migliorie per lavorare su computer paralleli oppure corretti delle imperfezioni che si trovano negli algoritmi pubblicati. Qualche ditta ha sviluppato dei propri algoritmi che non sono estensioni o perfezionamenti di approcci pubblici, ma che funzionano molto bene. Molti degli strumenti descritti di seguito possono essere pensati come generalizzazioni del metodo standard di modellazione: il modello di regressione lineare. Molti sforzi sono stati compiuti in statistica, in scienza computazionale, in intelligenza artificiale e in ingegneria per oltrepassare le limitazioni di questo modello base. La caratteristica comune di molte nuove tecnologie è che il meccanismo di ricerca dei patterns è diretto dai dati più che dell'utente. Le relazioni sono scovate dal software stesso basandosi soprattutto sui dati esistenti e non sulle capacità di un analista di specificare le forme e le interazioni tra variabili. Non un solo strumento o un insieme di strumenti possono o devono essere usati per risolvere un dato problema. La natura stessa dei dati condizionerà la scelta degli strumenti: avere a disposizione una buona varietà di tecnologie e tools agevola la ricerca del migliore modello possibile. 4.1 Reti Neurali Lo sviluppo delle reti neurali avviene prevalentemente nell'ambito dell'intelligenza artificiale. Esse traggono spunto, in modo impreciso, dalla biologia e in particolare sono una simulazione delle reti neurali del cervello umano, però le reti biologiche sono incomparabilmente più complesse delle loro attuali corrispondenti artificiali. I neuroni sono delle cellule viventi con una biochimica complessa, fittamente collegate tra di loro e l'intera struttura celebrale viene modificata continuamente tramite molti diversi meccanismi. Le reti neurali artificiali offrono i mezzi necessari per modellare ampi e complessi problemi con migliaia di variabili indipendenti che interagiscono tra loro in molti 40 modi12. Sono usate nei problemi di classificazione (quando l'output è dato da variabili categoriche), per la regressione (quando l'output è continuo) e per il clustering (reti neurali con funzioni caratteristiche di Kohonen) [20]. Una rete neurale artificiale è composta da un insieme di nodi (neuroni), ogni nodo è raggiunto in ingresso da diverse connessioni, mentre l'uscita è unica, anche se da essa possono partire più di una connessione ad altri nodi (Figura 5). Nodo Input Output Figura 5 Nodo o Neurone Artificiale Ogni nodo è un piccolo centro di elaborazione delle informazioni che gli pervengono: praticamente applica una certa funzione di trasferimento ai segnali di ingresso fornendo un segnale di uscita. I segnali di ingresso ad un nodo provengono da altri nodi o sono i segnali di ingresso della stessa rete neurale, mentre il segnale di uscita raggiunge altri nodi o è uno dei segnali di uscita della rete . Sia i segnali di ingresso che di uscita sono dei numeri reali. L'elaborazione effettuata da ogni nodo i-esimo consiste nel calcolo di una somma degli ingressi pesata sui pesi delle connessioni; quello che si ottiene è il valore di attivazione del nodo: A i = ∑ Wij * O j , j ∈ Ii dove Ii è l'insieme degli indici delle connessioni che entrano nel nodo i, Oj è l'uscita del nodo j, Wij è il peso della connessione dal nodo j al nodo i. I pesi Wij delle connessioni sono dei valori reali che indicano quanto il nodo j influisca fortemente sul nodo i: se Wij = 0 vuol dire che non esiste la connessione tra i nodi i e j, mentre se Wij < 0 il nodo j influisce in senso opposto sul nodo i. I pesi sono i parametri comportamentali della rete, infatti variando i pesi si varia il comportamento della rete, ovvero quello che è in grado di fare o calcolare. Una volta noto il valore di attivazione Ai del nodo i-esimo ad esso viene applicata una certa funzione, detta funzione di attivazione, che produce l'uscita Oi: O i = T(Ai ) . 12 Il teorema di Hecht-Nielsen afferma che una qualsiasi funzione vettoriale Y = F(X) può essere computata con elevata accuratezza con una rete neurale non ricorrente a soli tre strati avente un opportuno numero di nodi (anche molto elevato) nello strato intermedio, senza alcuna connessione all'interno dello strato ma totalmente connessa tra uno strato e l'altro. Tale teorema ha validità più teorica che pratica. 41 Le funzioni di attivazione sono funzioni a soglia o quasi, nel senso che più è alto l'ingresso e più è probabile che sarà alta anche l'uscita. Oi Ai Oi Ai Figura 6 Esempi di funzioni di attivazione I nodi che ricevono segnali dall'esterno (ingresso) saranno detti nodi di input della rete, i nodi che forniscono il loro valore di output all'ambiente esterno saranno detti nodi di output della rete. L'input della rete è dunque un insieme X di numeri reali (vettore) e l'output è anch'esso un insieme Y di reali13. Il compito della rete è di fornire un output quando gli si presenta un input, in altre parole la rete realizza una funzione vettoriale F tale che Y = F( X ). Il calcolo di F avviene in questo modo: inizialmente la rete è in stato di quiete, quindi tutti i nodi sono inattivi e forniscono un output Oi nullo. Quando pervengono dall'esterno dei segnali di input X, i nodi di input vengono sollecitati e mandano un segnale agli altri nodi. Ogni nodo della rete verrà dunque attivato in maniera diversa e propagherà stimoli agli altri nodi. Le uscite fornite dai nodi di output saranno trasmessi all'esterno formando l'insieme Y dei valori di input della rete. Si noti che si è supposto che l'elaborazione nella rete è avvenuta in modo istantaneo, ma le cose non sono così semplici quando nella rete ci sono connessioni cicliche. In questo caso alcuni nodi si stimolano a vicenda e possono verificarsi tre situazioni: • la reciproca stimolazione porta a attivare le unità di output con valori sempre differenti, e la rete fornira un output in perenne cambiamento: la rete non converge. Può succedere che l'output sia in continua crescita: in questo caso la rete esplode. • la reciproca stimolazione porta ad una sequenza di attivazioni che si ripetono ciclicamente, quindi anche l'output della rete sarà periodico: la rete oscilla. • la reciproca stimolazione porta a una combinazione di attivazioni che non cambia più: la rete converge verso una soluzione Y = F( X ). Questa è la situazione più interessante perchè rende la rete neurale una macchina deterministica. 13 Gli ingressi della rete sono dei numeri reali, mentre in precedenza si è detto che le reti neurali sono anche applicabili in presenza di variabili categoriche. Come si vedrà in seguito ciò è possibile grazie alla trasformazione dei valori categorici in vettori numerici formati da tutti 0 e un solo 1. Lo stesso ragionamento vale quando l'uscita è categorica: la rete in effetti produrrà in uscita dei vettori di tutti 0 e un solo 1, che verranno assegnati ognuno di essi ad un particolare valore categorico di uscita. 42 Finora non si è posto nessun vincolo alla struttura delle reti, ma per una loro implementazione software efficace bisogna ricorre a strutture semplici. Si possono classificare le reti in base alla loro struttura e alle loro caratteristiche di funzionamento: • Reti non ricorrenti: reti in cui le connessioni vanno in un solo senso, dall'input all'output, cioè sono prive di cicli. Le reti che presentano cicli sono dette cicliche. • Reti totalmente connesse: rete nelle quali ogni nodo è connesso con tutti gli altri (generalmente escluso se stesso); si noti che peso nullo per una connessione indica l'assenza della connessione. • Reti a strati: reti i cui nodi sono organizzati in insiemi separati e disgiunti di cui uno è detto strato di input, un'altro strato di output e gli altri vengono detti strati nascosti o intermedi. • Reti simmetriche: reti in cui la connessione fra due qualsiasi nodi è uguale in entrambi i sensi: Wij = Wji. • Reti autoassociative: reti in cui i nodi di input coincidono con quelli di output. Il compito di queste reti è di ricevere uno stimolo dall'esterno e di farlo evolvere, fornendo come risultato una versione modificata (o completata) dell'input ricevuto. • Reti stocastiche: reti in cui vi è una certa probabilità un nodo non venga attivato anche quando riceve stimoli. • Reti asincrone: reti in cui i nodi vengono attivati non tutti contemporaneamente ma uno alla volta secondo un ordine casuale. Le reti neurali differiscono da molti dei metodi statistici e in molte maniere. Principalmente, una rete neurale di solito ha più parametri di un modello statistico tipico. Per esempio in una rete con solo 6 nodi e 9 connessioni ci possono essere 15 parametri. Poiché i parametri sono così numerosi, e poiché le combinazioni tra essi sono numerosissime, il loro significato non è più comprensibile e la rete diventa una "scatola nera" di predizione. Oltre a non essere facilmente interpretabili e ad adattarsi troppo bene ai dati di training e meno bene agli altri, le reti neurali, e soprattutto le back propagation, richiedono molto tempo per l'apprendimento a meno che il problema da affrontare non sia semplice. Però una volta addestrata la rete fornisce le predizioni in tempi rapidissimi. Un altro obbligo imposto dal ricorso alle reti riguarda la preparazione dei dati che non è meno onerosa che per gli altri modelli. Le reti neurali hanno la qualità che vi si possono applicare quasi tutti i tipi di dati e fornire previsioni ragionevoli, ma ciò implica una particolare attenzione nelle fasi di pulizia dei dati, di selezione, di preparazione e di pre-elaborazione. 43 Infine le reti tendono a lavorare meglio quando il problema è molto grande e il rapporto segnale-rumore (SNR) dei dati è accettabilmente alto. Poiché esse sono molto flessibili troveranno molti falsi patterns in situazioni di basso SNR (quando c'è tanto rumore nei dati). Un vantaggio delle reti neurali è che possono facilmente essere implementate su computers paralleli su larga scala (massively parallel computers), dove tutti gli elaboratori simultaneamente svolgono i propri calcoli. Sono disponibili in commercio molti chips e schede ad hoc per reti neurali. Dopo aver dato delle definizioni concise dei componenti di una rete, delle possibili strutture e comportamenti di essa, dei suoi svantaggi e vantaggi, passiamo a descrivere due tipi di rete neurale che si usano il primo negli algoritmi di classificazione e il secondo negli algoritmi di clustering. Chiaramente poiché la classificazione necessita della fase di apprendimento supervisionato, allora anche la rete che la realizza apprenderà in modo supervisionato, al contrario poiché il clustering richiede apprendimento non supervisionato allora la rete imparerà senza ricorrere a degli esempi. 4.1.1 Reti back propagation (classificazione) La back propagation (propagazione all'indietro) è il tipo di rete neurale che si usa negli algoritmi di classificazione: spesso si adoperano le parole "classificazione neurale" quando si usa una rete neurale per la classificazione. 3 1 4 2 Input 6 Output 5 Strato Nascosto Figura 7 Rete neurale back propagation Una rete neurale back propagation (Figura 7), nella versione base, cioè con un solo strato nascosto, inizia con un strato di input, dove ad ogni nodo corrisponde una variabile indipendente (detta anche predittore o input). Questi nodi di ingresso sono connessi ai nodi di un strato nascosto. Ogni nodo di ingresso di solito è collegato a tutti quelli del strato nascosto. I nodi dello strato nascosto sono connessi ad un altro strato nascosto o allo strato di output. Lo strato di output rappresenta le variabili dipendenti. 44 W 3 13 1 W 36 W 23 W 14 4 W24 2 Output W15 Input W25 6 5 W56 Livello Nascosto Figura 8 Pesi della rete La Figura 8 mostra come, dopo lo stato di ingresso, ogni nodo riceve un insieme di inputs, ognuno moltiplicato per il peso della connessione Wij (il peso della connessione tra il nodo i e il nodo j), li somma, applica la funzione di attivazione a tale somma, infine passa l'output ai nodi dello strato successivo. Le funzioni di attivazione che si usano per le reti back propagation sono le sigmoidi: O= 1 , 1 + e −A dove A è il valore di attivazione e O è l'uscita. Ogni nodo è o una variabile di predizione (nodi 1 e 2) o una combinazione di variabili di predizione (nodi da 3 a 6). Il nodo 6 è una combinazione non lineare dei valori dei nodi di ingresso, data la non linearità delle funzioni di attivazione dei vari nodi. Al contrario se le funzioni di attivazione sono lineari, la rete neurale è equivalente a una regressione lineare. La rete neurale per funzionare deve essere addestrata: gli vengono posti in ingresso i valori delle variabili indipendenti e in uscita i corrispondenti valori delle variabili dipendenti: in questa maniera vengono modificati i pesi delle connessioni e eventualmente alcuni parametri nelle funzioni di attivazione, che rappresentano appunto la configurazione della rete, ovvero ciò che ha appreso. In origine il metodo più comune di training era il back propagation; più moderni sono il metodo del gradiente coniugato, quasi-Newton, Levemberg-Marquardt e algoritmi genetici. Ogni metodo di training (apprendimento) ha un insieme di parametri che controllano vari aspetti dell'apprendimento, come ad esempio la regolazione della velocità di convergenza o l'evitare gli ottimi locali. L'architettura o topologia di una rete neurale è la scelta delle variabili di ingresso e di uscita, del numero di strati nascosti, del numero di nodi per ogni strato nascosto e del tipo di connessione. Nel progetto di una rete, o l'utente o automaticamente il software devono decidere il numero di nodi nascosti e di strati nascosti, le funzioni d'attivazione e limiti sui pesi. 45 La rete neurale back propagation, anche nota coi termini rete feed-forward back propagation (rete a propagazione all'indietro e alimentata in avanti) viene usata molto diffusamente. La sua struttura è quella finora descritta e per semplicità assumeremo un singolo strato nascosto. L'addestramento back propagation è semplicemente una variante del gradiente discendente, un tipo di algoritmo che cerca di minimizzare un valore obiettivo (errore, nel caso di reti neurali) ad ogni passo. L'algoritmo procede come segue: il valore del nodo di uscita è calcolato in base ai valori dei nodi d'ingresso e all'insieme di pesi iniziali. I valori dai nodi d'ingresso sono combinati negli strati nascosti, ed i valori di questi nodi sono combinati tra loro per calcolare il valore dell'uscita.. Questa è la fase del feed-forward, cioè dell' "alimentazione in avanti", quando le informazioni viaggiano dallo strato di input verso lo strato di output: si può avere il feed-forward solo per reti acicliche dove il flusso può avere una sola direzione. L'errore nella uscita è dato dalla differenza tra l'uscita che si è ottenuta e quella desiderata (cioè, i valori attuali che si trovano nell'insieme di training). Quindi l'errore dalla uscita è rinviato ai nodi dello strato nascosto proporzionalmente ai pesi delle connessioni. Questa è la fase di back propagation, cioè della propagazione all'indietro. Ciò permette di calcolare l'errore oltre che per ogni nodo di uscita e anche per ogni nodo nascosto. In fine, l'errore di ogni nodo nascosto e ogni nodo di uscita viene usato per aggiustare il peso della connessione tra essi in modo da ridurre gli errori. Questo processo è ripetuto per ciascuna tupla dell'insieme di training e più volte sull'insieme di training, finché l'errore non decresce più o è accettabile: le iterazioni sono chiamate epoche. A questo punto la rete neurale è addestrata e può iniziare a trovare i patterns nell'insieme di testing. Poiché possono esserci molti parametri negli strati nascosti, una rete neurale con molti nodi nascosti alla fine si adatta sempre all'insieme di training. Il problema, naturalmente, è se la rete si comporterà bene anche con gli altri dati. Il pericolo è una rete neurale "overfitted" (super-adattata) la quale lavora bene solo si dati d'addestramento: occorre quindi sapere quando interrompere addestramento. Alcune realizzazioni valuteranno la rete neurale sui dati di testing periodicamente durante la fase di addestramento. Finché il tasso d'errore sull'insieme di testing decresce, l'addestramento continuerà. Se il tasso d'errore sui dati di testing cresce, sebbene il tasso d'errore sui dati d'addestramento decresca ancora, la rete neurale potrebbe super-adattare (overfittig) i dati. Se ulteriormente l'addestramento non riduce l'errore sull'insieme di testing, allora l'utente dovrebbe tornare a un modello precedente. 4.1.2 Kohonen feature maps o reti auto-organizzanti Le Kohonen feature maps (funzioni caratteristiche di Kohonen), o anche dette reti auti-organizzanti [21], sono utilizzate per riconoscere i cluster nei dati. Infatti il 46 loro scopo non è di fornire un output per un certo input ma di ricevere degli input e classificarli: la rete organizza in modo autonomo (senza il bisogno di esempi) una struttura che accomuna gli input simili tra loro individuando regolarità e somiglianze. Esse differiscono dalle rete back propagation per due motivi: hanno una differente topologia e non è più applicabile il metodo back propagation per l'apprendimento. Strato di output Strato di input Figura 9 Semplice Kohonen feature map Una Kohonen feature map è una rete neurale a strati in grado di riconoscere i patterns nei dati. È formata da soli due strati, quello di input e quello di output. Lo strato di output è formato da molti nodi al contrario delle reti back propagation che ne posseggono giusto una manciata. Ogni nodo di output è connesso a tutti i nodi di ingresso e lo strato di output è disposto a griglia: anche se i nodi di output non sono connessi con tutti gli altri dello stesso livello ma solo con quelli vicini, la struttura a griglia gioca un ruolo importante per il addestramento della rete. Quando un record della tabella di addestramento è presentato alla rete, i valori fluiscono attraverso la rete verso i nodi di output. I nodi di output competono tra loro e quello col valore più alto "vince". La "ricompensa" consiste nell'aggiustare i pesi delle connessioni che conducono al nodo vincente favorendo il rafforzamento nella risposta a quel particolare input. Non sono solo rafforzati i pesi per il nodo vincente ma anche quelli dei nodi ad esso più vicini (sulla griglia) per favorirne la risposta a quel tipo di input. Queste ultime modifiche sono controllate da un parametro detto parametro di vicinanza che regola la distanza dal nodo vincente dei nodi dei quali si modificano i pesi e di quanto devono essere modificati. All'inizio il "vicinato" è piuttosto ampio e anche le modifiche sono marcate, ma mentre l'addestramento procede il vicinato e la forza delle modifiche si riducono. In definitiva ogni volta che viene presentato in ingresso un certo tipo di input si fortifica sempre una stressa zona di uscita della rete. Man mano che la rete esamina i records, si autoconvince sempre più che tuple simili debbano far vincere 47 gli stessi nodi e che quindi tali records appartengono allo stesso cluster. Non tutte le uscite della rete rappresentano un cluster, anzi il numero di cluster è molto più piccolo del numero di nodi di output: qualora il meccanismo di limitazione dell'influenza di un nodo vincente sul suo vicinato non fosse efficiente, si otterrebbe un cluster per ogni nodo di output. I clusters simili tra loro hanno le rispettive uscite più prossime sulla griglia, mentre cluster molto differenti hanno le uscite più distanziate. Una volta addestrata la rete la si può utilizzare per clusterizzare nuovi records. Va sottolineato il fatto che la rete identifica l'appartenenza di un record a una certa classe, ma non spiega perché i membri di un cluster sono ritenuti simili tra loro e perché i clusters sono diversi tra loro. Una maniera per capire cosa accomuna i membri di un cluster è di calcolare, se possibile, la media su essi e ritenere tale media una rappresentazione o una descrizione del cluster. 4.2 Algoritmo Apriori: un algoritmo per la scoperta di regole di associazione Riprendiamo ora la definizione di regola di associazione , in modo più rigoroso. Un modello matematico semplice ma efficace per affrontare il problema della scoperta di regole di associazione è stato proposto da Agrawal, Imielinski e Swami [13]. Sia I = { i1, i2, ..., iN } un insieme di oggetti (items): ogni oggetto è fondamentalmente una etichetta, un valore categorico. Sia D un insieme di transazioni, dove ogni transazione T è un insieme di oggetti tale che T ⊆ I. Si noti che il numero di volte che un oggetto appare in una transizione è ininfluente, cioè quello che conta è che un dato oggetto sia presente o meno nella transazione (ad esempio quando si comprano insieme 12 uova e 2 litri di olio, quello che veramente interessa è il fatto che si sono acquistati uova e olio). Ogni transazione è identificata da un codice identificatore. Sia X un insieme di oggetti (itemset): si dice che la transazione T contiene X se e solo se X ⊆ T. Una regola di associazione è una implicazione di forma X ⇒ Y, dove X ⊂ I, Y ⊂ I e X ∩ Y = ∅. La regola X ⇒ Y ha confidenza c nell'insieme di transazioni D se c% delle transazioni che contengono X contengono anche Y. La regola X ⇒ Y ha supporto s nell'insieme di transazioni D se s% delle transazioni contengono X ∪ Y. La confidenza indica la forza della regola, il supporto invece l'importanza della regola rispetto alle altre scoperte nello stesso database. Spesso è desiderabile rivolgere l'attenzione solo a quelle regole che hanno un supporto ragionevolmente alto. Le regole con confidenza e supporto elevati sono dette regole forti. Lo scopo di qualsiasi algoritmo per la scoperta di regole è essenzialmente quello di trovare regole forti in databases di grandi dimensioni. Tale obbiettivo di solito si raggiunge dividendo il problema in due passi: • scoperta di large itemsets, cioè quegli insieme di oggetti che hanno il supporto più elevato di un predeterminato supporto minimo smin, 48 • utilizzo dei large itemsets per generare le regole di associazione dal database. Le buone prestazioni di un algoritmo per le regole di associazioni sono determinate esclusivamente dal solo primo passo, infatti una volta individuati i large itemsets, le corrispondenti regole di associazione si ottengono in maniera diretta. L'algoritmo Apriori è iterativo, ripetendo per un numero finito di volte (al massimo m-1, dove m è il numero di oggetti della transazione con più oggetti) i due passi appena descritti: ad ogni iterazione costruisce un insieme di large itemset candidati , conta il numero di occorrenze di ogni large itemset candidato tra le transazioni, determina i large itemset effettivi in base a un predeterminato supporto minimo, estrae le regole da ogni large itemset. Nella prima iterazione, di preparazione, l'Apriori scandisce tutte le transazioni contando il numero di occorrenze di ogni item. Genera così un insieme C1 di large itemsets candidati di grandezza 1 (un solo item per itemset), cioè tutti gli itemset con un solo item. Escludendo tutti i large itemset candidati che non superano il minimo supporto, ottiene l'insieme L1 di tutti gli effettivi large itemsets di grandezza 1. Con un large itemset di grandezza 1 non si può costruire nessuna regola, perché essa deve possedere almeno due items. Per scoprire l'insieme di large itemsets di grandezza 2 (cioè i large itemsets formati da due items), poiché ogni sottoinsieme di un large itemset deve anch'esso avere il minimo supporto, cioè ogni sottoinsieme di un large itemset è anch'esso un large itemset, l'Apriori usa L1⊗L1 per generare l'insieme C2 dei candidati large itemsets di grandezza 2, dove Lk⊗Lk = { X ∪ Y : X, Y ∈ Lk e | X ∩ Y | = k - 1 }, che nel caso di k = 1 coincide con la semplice concatenazione di due items. Tale operazione praticamente confronta a due a due tutti large itemsets di grandezza k, cercando quelli che differiscono per un solo item e da queste particolari coppie genera un large itemset candidato di grandezza k+1, i cui items sono tutti quelli comuni ai due large itemsets generatori più quello contenuto nel primo generatore ma non nel secondo e quello contenuto nel secondo ma non nel primo. ⎛ | L1 | ⎞ ⎟⎟ itemset di grandezza 2 e per ognuno di essi viene Ora C2 risulta composto di ⎜⎜ ⎝ 2 ⎠ scandito l'insieme delle transazioni per calcolare il proprio supporto. Solo i large itemset candidati di C2 con supporto superiore al minimo passano in L2, l'insieme degli effettivi large itemsets di grandezza 2. Tali successioni di operazioni al massimo fino a che non si arriva a generare l'insieme Ln di large itemsets di grandezza n pari al numero di items della transazione più grande, in effetti però tale processo termina molto prima perché non si possono più generare large itemsets con adeguato supporto. Algoritmo Apriori: genera C1 ; trova L1 da C1 ; finché è possibile proseguire: genera Ck+1 = Lk ⊗ Lk ; trova Lk+1 da Ck+1 ; genera la regole di associazione da Lk+1 ; fine. 49 Finora non abbiamo parlato del passo "genera la regole di associazione da Lk+1", ovvero il passo n° 2 di quasi tutti gli algoritmi per le regole di associazione. Dato un large itemset Lk di grandezza k, qualsiasi regola Ai⇒Bj, dove Ai e Bj sono qualsiasi sottoinsiemi di Lk rispettivamente con i e j items, dove i + j = k e Ai ∩ Bj = ∅, risulta essere una regola di associazione con supporto pari a quello di Lk, quindi valida per quanto riguarda il supporto. Tra tutte le regole ottenute da un large itemset si devono filtrare quelle che non raggiungono la confidenza minima. Quest'ultima operazione non richiede la scansione delle transazioni per ogni regola, dato che la confidenza della regola si ottiene con tramite i supporti di due diversi large itemsets, infatti per la generica regola Ai⇒Bj ottenuta da Lk, si ha: confidenza Ai⇒ Bj = T(A i B j ) T(A i ) = T(A i B j ) T T(A i ) T = supporto di L k supporto di A i dove T(XY) è il numero di transazioni che contengono sia X che Y. Il supporto di Lk è noto, ma anche quello di Ai perché anche esso è un large itemset dato che è sottoinsieme di Lk. L'algoritmo Apriori è chiaramente estensibile alle tassonomie, ottenendo regole generalizzate e gerarchiche. Ad esempio le regole molto dettagliate vengono esaminate solo se le regole al livello immediatamente superiore hanno supporto e confidenza molto al di sopra delle soglie. Esistono diverse varianti dell'Apriori, tra le quali quelle che permettono di ridurre il numero di scansioni del database, quelle che tramite campionamento permettono di analizzare immensi insiemi di transazioni ricorrendo a un compromesso tra accuratezza e efficienza, quelle che si adattano ad ambienti distribuiti, quelle che permettono la manutenzione delle regole scoperte quando i dati del database vengono modificati ad esempio per la presenza di nuove transazioni. 4.3 Alberi di decisione (decision trees) Gli alberi di decisione sono un modo per rappresentare una serie di regole che portano alla definizione di una classe o di un valore. La Figura 10 mostra un piccolo albero per la classificazione delle persone che chiedono un prestito, tra quelle affidabili e quelle non affidabili. Stipendio > 1.2 M£ ? No Lavora da più di 5 anni? Si Affidabile No Si Ha molti debiti? Si Non Non Affidabile Affidabile No Affidabile Figura 10 Un semplice albero di classificazione 50 L'albero è composto fondamentalmente da tre elementi: i nodi di decisione, i rami e le foglie. Il primo componente dell'albero è il nodo di decisione superiore o nodo radice, che specifica una condizione che deve essere testata. Viene così diviso l'albero in due rami, che rappresentano le possibili risposte. In base al tipo di algoritmo, ogni nodo può avere due o anche più rami. Ogni ramo porta o ad un altro nodo di decisione, o al fondo dell'albero, cioè a un nodo foglia o nodo classe). Al livello dei nodi foglia è nota la classe alla quale una tupla è assegnata, tupla che ha rispettato tutte le condizioni dei nodi sul cammino che va dalla radice alla foglia stessa. Navigando nell'albero, partendo dalla radice, si classificano le tuple sottoponendole di seguito alla condizione del nodo di decisione, finché non si raggiunge una foglia, cioè una classe. Ogni nodo usa i dati della tupla per scegliere il ramo appropriato. Il data mining è usato per creare l'albero dall'esame dei dati, e per indurre le regole che formano l'albero. Sono molti gli algoritmi che possono essere impiegati nella costruzione di un albero e tra gli altri ricordiamo il CHAID (Chi-squared Automatic Interaction Detection), CART (Classification and Regression Tree), Quest, C5.0. Gli alberi di decisione si sviluppano per mezzo di divisioni iterattive dei dati in gruppi discreti, con lo scopo di massimizzare la "distanza" tra i gruppi ad ogni divisione. Una delle differenze principali tra i vari metodi è appunto come misurare questa distanza. Senza approfondire ulteriormente, si può pensare che ogni divisione dei dati nei nuovi gruppi massimizzi la differenza dell'uno dall'altro il più possibile. Questo è talvolta detto rendere i gruppi più puri. Quindi nella ricerca delle condizioni per ogni nodo bisogna trovare quella che più mette in risalto le differenze tra i nuovi gruppi, in modo tale che in ogni gruppo ci siano solo gli elementi di una certa classe (nel limite del possibile). Gli alberi di decisione usati per la predizione di variabili categoriche sono chiamati alberi di classificazione perché essi collocano le tuple in classi o categorie, mentre gli alberi usati per la predizione di variabili continue sono gli alberi di regressione. L'albero, se è sufficientemente piccolo, risulta di immediata comprensione, però quando esso è costruito su databases con migliaia di attributi e quindi con un numero di livelli esponenziale con il numero degli attributi usati, sebbene rimanga 51 chiaro il ruolo di ogni nodo, l'intero albero risulta incomprensibile perché troppo complesso. Tuttavia il significato di ogni cammino radice-foglia è immediato per cui l'albero di decisione può spiegare, palesare le sue predizioni (al contrario delle reti neurali), e questo è un grosso vantaggio. Questa chiarezza però può risultare ingannevole. Ad esempio la rigidità delle condizioni di decisione spesso non si rispecchia nel mondo reale: che differenza passa tra una persona che guadagna 1'200'000 lire e 1'200'500 lire? tuttavia nell'albero di Figura 10 vengono considerati in modo differente. E inoltre, poiché gli stessi dati possono essere rappresentati da diversi alberi con eguale accuratezza, quali interpretazioni possono essere date per le differenti regole? Nella costruzione gli alberi richiedono pochi passaggi sui dati (non più di un passaggio per ogni livello dell'albero) e lavora bene anche in presenza di molte variabili indipendenti, di conseguenza i modelli sono costruiti molto rapidamente, rendendoli particolarmente adatti per grossi insiemi di dati. Gli alberi che sono lasciati crescere senza limiti prendono più tempo alla costruzione e diventano inintelligibili, ma soprattutto creano problemi di overfitting dei dati. La dimensione dell'albero può essere controllata tramite le regole d'arresto (stopping rules) che ne limitano la crescita. Una semplice e diffusa regola d'arresto è la limitazione del numero massimo di livelli (profondità dell'albero). Un'altra regola d'arresto richiede di fissare il numero minimo di tuple in un nodo sotto il quale non si deve più ricorrere alla divisione. Una alternativa alle regole d'arresto è la potatura (pruning) dell'albero. All'albero è permesso di crescere fino alla sua massima grandezza e a quel punto, ricorrendo a interventi euristici integrati o interventi dell'utente, gli vengono tolti alcuni rami riducendone la dimensione senza comprometterne eccessivamente l'accuratezza. Ad esempio un cammino o un sottoalbero che l'utente ritiene insignificante perché raccoglie pochissime tuple, possono essere rimossi. Una critica comune agli alberi di decisione è che essi scelgono un criterio di divisione ricorrendo ad un algoritmo "greedy" (avido, vorace), nel quale la decisione su quale variabile basare la divisione non tiene conto degli effetti che la divisione può avere sulle future divisioni. In altre parole la decisione sulla divisione è presa per un nodo in quel momento e non è mai più rivista. In più tutte le divisioni sono eseguite in successione e quindi ognuna di esse dipende dalle precedenti. Ne segue le soluzioni finali possono essere molto differenti tra loro se la condizione al nodo radice vari anche di poco. Non sono ancora chiari però i benefici che giungono dal preoccuparsi di "guardare in avanti" nella scelta dei criteri di divisione. I tentativi di guardare in avanti sono allo stadio della ricerca, ma sono computazionalmente onerosi e attualmente non si hanno a disposizione implementazioni commerciali. 52 Oltre a ciò gli algoritmi usati per la divisione si basano su condizioni ad una sola variabile, cioè considerano su una sola variabile indipendente per volta: questo approccio è una delle cause della rapidità nella costruzione del modello, ma limita fortemente la possibilità di scoprire le relazioni tra variabili apparentemente indipendenti. Esistono algoritmi che effettuano la divisione lavorando su più variabili indipendenti: gli alberi che permettono combinazioni lineari delle variabili sono noti come alberi obliqui. Un criterio lineare è ad esempio "Stipendio" < 0.15 * "Debiti". Un altro tipo di divisione su più variabili la combinazione logica di più condizioni semplici: ("Salario" > 1'200'000) OR ("Anni Lavorativi" > 5). Gli alberi di decisione trattano efficacemente dati non numerici. La capacità di operare su dati categorici riduce la quantità di trasformazioni da effettuare sui dati ed elimina l'esplosione di variabili indipendenti tipico delle reti neurali. Qualche albero di classificazione è progettato per lavorare meglio quando anche le variabili di ingresso sono categoriche e in questo caso le variabili continue vanno discretizzate. Ci sono poi alcuni alberi di decisione che non supportano variabili continue in uscita (cioè non possono costruire alberi di regressione) e in tal caso le variabili dipendenti nell'insieme di addestramento vanno anch'esse discretizzate. 4.4 Induzione di regole Una induzione di regole è un metodo per ricavare un insieme di regole allo scopo di classificare degli oggetti (casi). Anche gli alberi di decisione generano un insieme di regole, e spesso vengono detti induttori di regole, ma il significato che assumono in effetti è diverso. I metodi di induzione generano un insieme di regole indipendenti che non necessariamente (e poco probabilmente) costituiscono un albero. Poiché l'induttore di regole non è forzato alla divisione ad ogni livello e può guardare in avanti, sarà in grado di trovare patterns diversi e talvolta migliori per la classificazione. 4.5 K-nearerest neighbour e ragionamento basato sulla memoria Q uando si prova a risolvere nuovi problemi, spesso si guarda alle soluzioni di problemi simili che sono stati precedentemente affrontati. Il K-nearst neighbour (i k vicini più prossimi, K-NN) è una tecnica di classificazione che usa una variante di questo approccio. Si determina in quale classe collocare un nuovo oggetto dall'esame di un certo numero (k) di oggetti più simili ad esso, detti vicini (neighbours). Tra questi k si contano per ogni classe il numero di oggetti e si assegna il nuovo oggetto alla stessa classe alla quale appartengono il maggior numero dei vicini. 53 Y X X X N X Y X Y X Y X Figura 11 K-nearst neighbour. N è il nuovo oggetto. Sarà assegnato alla classe X perché nell'ellisse ci sono più elementi di X che di Y. La prima necessità del K-NN è una misura della distanza tra gli attributi. Per dati numerici esistono molte distanze ma per le variabili categoriche la definizione di distanza è meno definita ed sono richiesti particolari accorgimenti. Ad esempio qual è la distanza tra il verde e il blu? Oltre a ciò si deve anche saper combinare le distanze tra i singoli attributi in modo da ottenere una distanza globale tra gli oggetti. Una volta che si sa calcolare la distanza tra gli oggetti, bisogna scegliere l'insieme di oggetti già classificati da usare per classificarne dei nuovi, per determinare quanto grande deve essere il range (vicinanza, neighbourhood) nel quale effettuare i confronti, e infine per decidere in che maniera contare i vicini stessi ( ad esempio si può assegnare più importanza agli oggetti più prossimi e meno a quelli lontani). Il K-NN implica un forte carico computazionale perché il tempo di calcolo cresce fattorialmente col numero di oggetti. Al contrario degli alberi di decisione e delle reti neurali che processano i nuovi oggetti molto rapidamente, il K-NN obbliga a rifare i calcoli per ogni nuovo oggetto. Per aumentare la velocità dell'algoritmo spesso tutti i dati sono mantenuti in memoria. Spesso ci si riferisce a classificatori K-NN residenti in memoria come metodi di ragionamento basato sulla memoria (memory-based reasoning). I modelli K-NN sono facilmente comprensibili in presenza di poche variabili indipendenti. Sono utili anche alla costruzione di modelli che implicano tipi di dati non standard, come il testo. L'unico requisito per trattare un certo tipo di dato è che esista una metrica appropriata su tale tipo di dato. 4.6 Clustering demografico Nel clustering demografico l’algoritmo di data mining, durante la sua esecuzione, crea nuovi segmenti secondo il criterio che segue. Quando si presenta in input un record, si verifica che esso sia compatibile con almeno uno dei cluster già 54 esistenti, e se ciò non accade viene creato un nuovo segmento dove il record viene inserito. Tale verifica è eseguita secondo un certo misura di distanza tra il record in questione ed i record appartenenti ai diversi segmenti. La tecnica del clustering demografico si basa su un semplice principio di votazione, chiamato Condorcet, che misura la distanza tra i record di input per poterli assegnare ai cluster appropriati. Ogni record è contenuto in uno ed un solo cluster. Coppie di record vengono comparate secondo i valori dei campi individuali. Il numero di campi che hanno valori simili determina il loro livello di similarità. Il numero di campi che hanno valori diversi determina il loro livello di diversità. Per variabili non categoriche tale similarità è espressa attraverso un certo numero di intervalli: se due campi hanno valori dentro lo stesso intervallo, allora sono simili, altrimenti no. Quando una coppia di record ha lo stesso valore per lo stesso campo (oppure, nel caso di variabili non categoriche, ha valori simili per quel campo), quest’ultimo prende il voto +1, altrimenti prende –1. Infine, il punteggio complessivo è calcolato come la somma dei punteggi a favore e contro l’inserimento del record in un dato cluster. L’idea di base è che un record viene assegnato ad un certo cluster se il suo punteggio complessivo è maggiore rispetto al punteggio che avrebbe avuto in qualunque altro cluster. Se il punteggio complessivo risulta negativo per tutti i cluster, il record è un candidato per essere posto in un suo nuovo cluster, che viene creato. Quando si verifica ciò, bisogna ricalcolare il punteggio di tutti gli altri record rispetto a questo nuovo cluster e, se qualche record risulta avere un punteggio maggiore rispetto al precedente, viene spostato nel nuovo cluster. Il clustering demografico fornisce un veloce e naturale partizionamento di grandi databases. Una volta che si sono formati dei cluster sufficientemente grandi, la decisione di dove mettere un nuovo record non viene presa comparando ogni campo del record con ogni campo di tutti i record di tutti i cluster. Piuttosto, per ciascun cluster si assegnano dei valori, uno per ogni campo di un generico record, che rappresentano le distribuzioni dei valori di ciascun campo calcolate su tutti i record contenuti nel cluster. Il confronto avviene tra i campi del nuovo record e questi valori. A differenza del clustering neurale, che è adatto soltanto a dati numerici, il clustering demografico è particolarmente adatto per dati categorici, specialmente se il numero di categorie è basso. Inoltre esso può anche trattare variabili non categoriche, ed in tal caso l’analista deve stabilire delle tolleranze a priori. L’algoritmo usa tali tolleranze per determinare le similarità o le differenze tra due variabili. Valori all’interno delle tolleranze registrano un voto di uguaglianza a favore, mentre valori al di fuori delle tolleranze registrano un voto contro. La misura di similarità in questo caso non è un semplice valore binario (0,1), ma varia da 0 a 1. Zero indica valori lontani, 1 indica valori identici, 0.5 indica che i valori sono separati esattamente dal valore della tolleranza. 55 4.7 Funzioni a base radiale Il metodo delle funzioni a base radiale (RBF, radial basis functions) è una nuova tecnica per la predizione di valori che si è dimostrata più robusta e flessibile del approccio tradizionale della regressione, lineare e non lineare. Il metodo RBF lavora ricorrendo non ad una singola funzione non lineare ma ad una somma pesata di molte funzioni non lineari, dette appunto funzioni a base radiale. Una funzione a base radiale è una funzione non lineare di distanza da un centro ed è per questo motivo che è detta " a base radiale" : essa assume lo stesso valore per ogni punto con la stessa distanza o raggio dal centro. Le RBF distinguono delle regione nello spazio delle variabili indipendenti (input), in ognuna delle quali le variabili dipendenti assumono quasi gli stessi valori. Per ogni regione ottenuta viene costruito un centro che predice il valore medio della regione. Terminato di costruire il modello su valori noti delle variabili dipendenti, lo si può sfruttare per la predizione vera e propria: per ogni nuovo tupla di variabili indipendenti vengono predetti i valori delle variabili dipendenti tramite una media pesata delle predizioni di tutti i centri, dove il peso di ogni centro decade rapidamente se il centro è molto distante dalla tupla stessa. 4.8 Algoritmi genetici Gli algoritmi genetici non vengono impiegati nella ricerca diretta di patterns, ma piuttosto nella guida del processo di apprendimento dei metodi di data mining, come le reti neurali [19]. Essenzialmente essi agiscono come un metodo di ricerca guidata di buoni modelli nello spazio delle soluzioni. Sono detti genetici perché essi seguono vagamente il comportamento dell'evoluzione biologica, nel quale i membri di una generazione (di modelli) entrano in competizione per passare le proprie caratteristiche alla prossimo generazione, finché non viene trovato miglior modello. Ad esempio nella costruzione di una rete neurale, gli algoritmi genetici possono sostituirsi al backpropagation nella regolazione dei pesi. I cromosomi in questo caso conterranno i pesi. Oppure gli algoritmi genetici possono essere usati per trovare la migliore architettura della ret e i cromosomi conterranno il numero di strati nascosti e di nodi per ogni strato. Se da un lato gli algoritmi genetici sono un interessante approccio per l'ottimizzazione dei modelli, dall'altro aggiungono un surplus computazionale. 56 4.9 Regressione logistica (logistic regression) La regressione logistica è una generalizzazione della regressione lineare. È usata per la predizione di una variabile binaria; poiché la variabile dipendente è binaria non si può ricorrere direttamente alla regressione lineare. Perciò piuttosto che predire se l'evento stesso (la variabile dipendente) accadrà, si costruisce il modello usando il logaritmo della probabilità (odds) della sua presenza. Questo logaritmo è detto in inglese log odds. Come per le reti neurali, la regressione logistica diventa uno strumento di classificazione quando viene usato per predire variabili categoriche come ad esempio se una persona probabilmente compri o non compri, diventa invece uno strumento di regressione quando viene usato per predire variabili continue come la probabilità che una persona farà un acquisto. Se da un lato la regressione logistica è uno strumento di modellazione molto potente, dall'altro necessita l'assunzione che la variabile dipendente (il log odds, non l'evento stesso) sia lineare nei coefficienti delle variabili predittrici. Inoltre, il modellista basandosi sull'esperienza coi dati e l'analisi di essi, deve scegliere le variabili predittrici corrette e specificare la loro relazione funzionale con la variabile dipendente (ad esempio dovrà scegliere tra il guadagno, la sua radice quadrata o il suo logaritmo). Deve anche esplicitamente trasformare ogni possibile interazione in variabile predittrice. In definitiva il modellista deve essere in grado di ricercare le giuste variabili, trovare le loro espressioni rendere conto delle loro possibili interazioni: tutto questo richiede effettivamente molto abilità e esperienza da parte dell'analista. Le reti neurali, d'altro canto, usano gli strati nascosti per valutare le forme dei termini e interazioni non lineari in modo semi-automatico. Gli utenti hanno bisogno di un insieme differente di competenze analitiche allo scopo di impiegare con successo le reti. La scelta della funzione di attivazione influisce sulla velocità di apprendimento della rete: lo stesso ruolo lo gioca nella regressione logistica la trasformazione della variabile dipendente, ed è questa la principale ragione per cui una rete neurale senza strati nascosti è equivalente alla regressione logistica. 4.10 Analisi discriminante L'analisi discriminante è la più vecchia tecnica di classificazione, la prima pubblicazione è del 1936. Essa trova gli iperpiani che separano le classi. Il modello che ne risulta è semplice da interpretare poiché l'unica cosa che bisogna determinare è da quale parte dell'iperpiano giace un punto. L'addestramento è semplice e scalabile e la tecnica è molto sensibile ai patterns nascosti nei dati. È molto usata in medicina, nelle scienze sociali e in biologia, non è invece diffusa nel data mining per tre motivi principali. Primo, l'analisi discriminante assume che ogni variabile predittrice sia distribuita normalmente. Secondo, le variabili predittrici categoriali non ordinali (ad es., 57 rosso/blu/verde) non possono essere assolutamente usate. Terzo, i confini che separano le classi hanno solo la forma lineare, ma spesso i dati non possono essere separati in questa maniera. Le versioni recenti dell'analisi discriminante risolvono alcuni dei precedenti problemi realizzando i confini con funzioni quadratiche oltre che lineari, aumentando significativamente la sensibilità in taluni casi. Altre tecniche permettono di sostituire la normalità delle variabili indipendenti con una stima della distribuzione reale (cioè si può rimpiazzare la curva normale teorica con l'istogramma delle variabili). 4.11 Modelli additivi generalizzati (General Additive Models, GAM) Sono modelli che estendono sia il modello lineare sia la regressione logistica. Sono detti additivi perché si assume che il modello può essere scritto come la somma di funzioni anche non lineari, una per ogni variabile predittrice. Il modello GAM può essere usato per la regressione e la classificazione con risposta binaria. La principale caratteristica in più è che viene rimossa l'ipotesi di linearità. La variabile di uscita potrebbe essere virtualmente qualsiasi funzione del predittore finché non ha passi discontinui. Per esempio, si supponga che i mancati pagamenti siano una funzione piuttosto complicata del guadagno, e inizialmente decresca all'aumentare del guadagno. Successivamente incomincia ad aumentare per guadagni medio-bassi, infine raggiunto il picco tende a scendere per guadagni elevati. In questo caso un modello lineare fallirà se vuole descrivere la relazione tra mancanza di pagamenti e guadagni a causa del comportamento non lineare. Il GAM, sfruttando la potenza computazionale al posto della teoria e della conoscenza sulla forma della funzione, produrrà una curva sufficientemente regolare che descrive la precedente relazione. La più diffusa procedura di valutazione è la backfitting (adattamento all'indietro). Invece di stimare un gran numero di parametri, come fa la rete neurale, il GAM va oltre stimando il valore di uscita per ogni valore di ingresso — ad un punto una stima. Come per le reti neurali il GAM genera automaticamente una curva, fissando la complessità sulla base dei dati. 4.12 Multivariate (MARS) Adaptive Regression Splines A metà degli anni 80 si sviluppò un metodo progettato per superare i problemi del CART. Le principali imperfezioni che si eliminarono furono: - Predizioni discontinue (o hard splits). 58 - Dipendenza di tutte le divisioni da quelle precedenti. Interpretabilità ridotta a causa delle interazioni, specialmente interazioni di alto livello. Nacque così l'algoritmo MARS. L'idea base del MARS è molto semplice, mentre l'algoritmo stesso è piuttosto complesso. Molto brevemente si affrontano i difetti del CART nelle seguenti maniere: Rimpiazzando la diramazione discontinua in un nodo con un transizione continua modellata da una coppia di linee rette. Alla fine del processo di costruzione del modello, le linee rette in ogni nodo sono sostituite con una funzione più regolari (smooth) dette spline. Imponendo che le nuove divisioni non dipendano dalla precedenti. Sfortunatamente ciò comporta che il MARS perda la struttura ad albero del CART e che non produca più le regole. D'altro canto. il MARS automaticamente trova ed elenca le più importanti variabili predittrici oltre alle interazioni tra esse. Il MARS inoltre traccia la dipendenza della risposta da ogni predittore. Il risultato è un strumento di regressione non lineare, graduale, automatico. Il MARS, alla pari di molti algoritmi per reti neurali e per gli alberi di classificazione, ha la tendenza a superadattarsi ai dati di addestramento. Ciò può essere superato in due modi: primo, si può ricorrere a validazioni incrociate (cross-validation) manuale in modo da regolare l'algoritmo allo scopo di fornire buone predizioni sull'insieme di testing; secondo, sono presenti nell'algoritmo stesso vari parametri di regolazione (tuning) che possono dirigere la validazione incrociata interna. 4.13 Visualizzazione La visualizzazione dei dati (data visualization) è usato molte volte insieme con gli strumenti per il data mining [24]. L'importanza della visualizzazione per l'analisi efficace dei dati non può essere accentuata eccessivamente. Se i modelli statistici e le analisi di verifica sono essenziali per la produzione dell'analisi dei dati, è tuttavia la visualizzazione dei dati nella maggioranza dei casi a fornire quella chiarezza necessaria alla comprensione dei risultati ottenuti. E tanto più complessi sono i patterns individuati e più potenti e raffinati devono essere gli strumenti per visualizzarli. La visualizzazione funziona bene perché la grafica trasmette più informazione rispetto al testo e ai numeri. Patterns, relazioni, valori fuori dalla norma e valori mancanti sono più facilmente percepibili quando vengono mostrati graficamente invece che come una lista di frasi e di numeri. 59 Il fatto che i modelli hanno molte dimensioni o variabili è un problema nell'uso della visualizzazione, perché si è limitati a mostrare tutte queste dimensioni solo nelle due dimensioni dello schermo del computer e dei fogli. Di conseguenza gli strumenti di visualizzazioni devono ricorrere a rappresentazioni intelligenti per proiettare n dimensioni in solo due. Gli utenti daltonici o le persone che non hanno dimestichezza con le rappresentazioni spaziali potrebbero incontrare difficoltà con gli strumenti di visualizzazione. Inoltre, se da un lato la visualizzazione comunica una gran quantità di informazione, dall'altro richiede una preparazione ed un'abitudine alla lettura e all'interpretazione delle rappresentazioni grafiche. 60 INDICE GENERALE 1 IL DATA MINING .............................................................................. 1 1.1 Tradizione.............................................................................................................................1 1.2 Nuove Tecniche ....................................................................................................................1 1.3 Definizione di Knowledge Discovery in Databases e Data Mining...................................3 1.4 Data mining: Cosa non può fare .........................................................................................5 1.5 Data mining e data warehousing ........................................................................................6 1.6 Data mining e OLAP..........................................................................................................10 1.7 Data mining, machine learning e statistica ......................................................................12 1.8 Data mining e gli andamenti dell'hardware/software.....................................................13 1.9 Applicazioni del data mining.............................................................................................14 1.10 Quando è vantaggioso applicare il data mining? .......................................................19 1.11 Il successo del data mining...........................................................................................19 1.12 Ostacoli e sfide per il data mining ...............................................................................20 1.13 Evoluzione futura .........................................................................................................22 2 IL PROCESSO DELLA SCOPERTA DELLA CONOSCENZA ....... 22 3 TIPI DI MODELLI ............................................................................ 31 3.1 Introduzione ai modelli......................................................................................................31 3.2 Classificazione ....................................................................................................................32 3.3 Regressione e previsione ....................................................................................................33 3.4 Clustering (analisi dei gruppi) ..........................................................................................33 3.5 Analisi dei legami (link analisys) ......................................................................................34 61 4 DATA MINING: STRUMENTI E TECNOLOGIE.............................. 40 4.1 Reti Neurali.........................................................................................................................40 4.2 Algoritmo Apriori: un algoritmo per la scoperta di regole di associazione ..................48 4.3 Alberi di decisione (decision trees) ...................................................................................50 4.4 Induzione di regole.............................................................................................................53 4.5 K-nearerest neighbour e ragionamento basato sulla memoria ......................................53 4.6 Clustering demografico .....................................................................................................54 4.7 Funzioni a base radiale ......................................................................................................56 4.8 Algoritmi genetici...............................................................................................................56 4.9 Regressione logistica (logistic regression) ........................................................................57 4.10 Analisi discriminante....................................................................................................57 4.11 Modelli additivi generalizzati (General Additive Models, GAM) ............................58 4.12 Multivariate Adaptive Regression Splines (MARS) ..................................................58 4.13 Visualizzazione..............................................................................................................59 62