• Tecniche di data mining per la classificazione – Reti Neurali

    Date: 2011.03.21 | Category: Data Mining | Tags:

    Le reti neurali sono utilizzate nell’ambito del data mining per fare classificazione e regressione. Esse sono ispirate al funzionamento del cervello umano che funziona per associazioni usando i neuroni. I neuroni sono delle unità di elaborazione individuali, collegati tra loro tramite sinapsi.

    Reti Neurali Struttura

    Una rete neurale riceve come ingresso un vettore che è l’insieme dei valori delle colonne del record che desideriamo classificare. Può essere composta da più livelli interni alla rete (questi nodi sono detti “hidden”) ed infine come stadio finale c’è il livello di uscita composto da tanti nodi quante sono le etichette di classe, e ciascun nodo rappresenta la probabilità di appartenenza del record in esame a ciascuna etichetta di classe.

    Struttura di un neurone.

    Struttura di un Neurone
    All’interno di un neurone bisogna configurare due parametri:

    • il vettore dei pesi
    • l’offset (μk).

    Si inizia facendo il prodotto scalare tra “x” (vettore di input) e “w” (vettore dei pesi). Successivamente si somma il valore di “offset” ed infine, prima di restituire l’output, si applica ancora la funzione di attivazione, che può essere un gradino, un esponenziale o un sigmoide.

    L’output è compreso tra 0 e 1 e mi dà la probabilità di appartenenza del record ad ognuna delle classi in output.

    Costruzione di una rete neurale

    Si parte assegnando un insieme di pesi ed offset in modo casuale. Poi si prende il primo record del training set e lo si inietta in ingresso al sistema. Del record di training set in esame, si conosce l’etichetta di classe quindi nel momento in cui la rete neurale fornirà in output la probabilità di appartenenza a ciascuna etichetta di classe, tramite un procedimento noto con il nome di “back propagation“, è possibile calcolare lo scostamento o errore rispetto al risultato fornito e quello atteso e procedere con la correzione dei parametri dei vari neuroni in modo tale da ridurre tale errore. Si ripeto questa procedura per tutti i record del training set. Le condizioni in cui si ferma tale procedimento possono essere:

    • quando l’accuratezza sul training set soddisfa una certa soglia
    • quando la correzione è molto bassa (siamo giunti in un ottimo locale)
    • quando è trascorso troppo tempo –> troppe iterazioni o epoche (iterazioni sul training set).

    Se in ingresso alla rete abbiamo una variabile continua, questo sistema è comodo perché è sufficiente un solo ingresso. Ma se invece abbiamo un attributo di tipo categorico è un po’ più complicato, poiché ci vuole un ingresso per ogni valore del dominio. Nel caso booleano è semplice abbiamo solo 0 e 1. Se avessimo, ad esempio, attributi come l’età e lo stipendio è opportuno che queste due grandezze abbiano lo stesso intervallo di variazione (Questo perché l’età varia da 0 a 100 mentre lo stipendio potrebbe variare da 0 a 10.000 euro). Di conseguenza, in una fase di pre-processing, i dati in ingresso ad una rete neurale devono essere normalizzati, di solito si usa l’intervallo [0,1] oppure quello [-1,1]. Quando però si inseriscono i valori nella rete, all’interno subiscono delle operazioni di prodotto e di somma, e queste possono far uscire il valore della variabile dall’intervallo [0,1] o [-1,1]. Ecco a cosa serve la funzione f, essa riporta nell’intervallo di variazione corretto.

    Punti di forza

    • accuratezza elevata (algoritmo tra i migliori)
    • robusto in presenza di outliers e rumore, solido
    • efficienza di classificazione (classificazione veloce)
    • output discreto o continuo (posso usare le reti neurali anche per fare regressione)

    Punti deboli

    • addestramento complesso, può essere molto lento (se ho un training set vasto è
      escluso che si usino le reti neurali)
    • modello non interpretabile
    • difficile introdurre conoscenza nel dominio applicativo