Università degli Studi di Napoli Federico II
CdLS in Ingegneria Informatica
Corso di intelligenza artificiale (6 CFU)
Anno Accademico 2008/2009
Studenti: 1
Sommario
- Rete neurale MLP.................................................................................................................3
- Il contest...............................................................................................................................3
- Operazioni sul dataset.........................................................................................................4
- Feature selection..................................................................................................................8
- Addestramento rete neurale MLP........................................................................................11
- Osservazione sul costo e operazione Rejected..................................................................312
Rete neurale Multilayer Perceptron
Nella seguente sezione saranno indicati i passi eseguiti per l'addestramento e il dimensionamento della nostra rete neurale, che nello specifico è la MultiLayer Perceptron, attraverso l'insieme dei campioni forniti nel dataset messo a disposizione dai docenti. Nel nostro caso di studio, i campioni contenuti nel dataset rappresentano pacchetti appartenenti a flussi di rete generati da diverse applicazioni (Http, Ftp, BitTorrent, ...).
Il contest
Una volta entrati in possesso del contest, verifichiamo che esso è costituito da tre file:
- MatriceDeiCosti.txt: file contenente la matrice di missclassificazione. Questa matrice verrà utilizzata per monitorare e dunque per ottimizzare il costo del classificatore addestrato. Ciascun elemento rappresenta il costo da pagare nel classificare campioni della classe i come campioni della classe j. Va da sé che gli elementi sulla diagonale principale hanno costo nullo (ammesso che sia le righe che le colonne hanno lo stesso ordinamento). L'ultima colonna fornisce il costo per ciascuna classe in caso di rigetto da parte del classificatore.
80 25 110 21 6881 1863 Rejected 0 1 1 1 5 5 5 80 1 0 1 1 5 5 5 25 1 1 0 1 5 5 5 110 1 1 1 0 5 5 5 21 10 10 10 10 0 1 16881 10 10 10 10 1 0 11863 - README.txt: questo file fornisce essenzialmente 3 indicazioni:
- La prima ci fornisce indicazioni inerenti al numero di campioni che costituisce il dataset, nel nostro caso vediamo che esso è costituito da 58478 istanze (!).
- La seconda indicazione ci informa che le istanze del dataset sono caratterizzate da 22 attributi che si presentano nella forma xk, yk dove xk è caratterizzato da 21 attributi. Il primo indica l'ID (relativo per classe di appartenenza) del campione e i restanti 20 rappresentano la dimensione (payload-size) alla quale viene aggiunto un segno che indica la direzione del pacchetto, dal client verso il server (+) o dal server verso il client (-) mentre yk fornisce la classe di appartenenza di xk.
- La terza informazione è rappresentata appunto dalle diverse classi di appartenenza dei campioni; abbiamo 6 classi di appartenenza: “80” per Http, “25” per Smtp, “110” per pop3, “21” ftp, “6881” per BitTorrent e “1863” per Msn. Per ciascuna classe sono indicati il numero di campioni appartenenti.
- TrainingSet.txt: contiene i campioni del dataset oggetto di studio.
Operazioni sul dataset
Illustreremo qui le operazioni che sono state eseguite sul dataset attraverso l'ambiente Knime. La prima operazione eseguita è stata quella di acquisizione del dataset attraverso l'utilizzo del nodo File Reader, questo nodo necessita essenzialmente come parametro di configurazione il path del file (il quale dovrà avere una opportuna formattazione dei dati) costituente il dataset. Ciò che viene restituito in uscita dal nodo è il DS sotto forma di matrice dove sulle righe abbiamo i campioni e sulle colonne gli attributi di cui l'ultima rappresenta la classe di appartenenza del campione individuato dalla riga.
Le successive operazioni, eseguite direttamente all'interno del nodo File Reader, sono state l'esclusione della colonna ID dal data set (in quanto questa contiene un identificativo del pacchetto e quindi non utile ai fini del processo di addestramento) e quella di convertire la colonna "class" del DS in stringa; quest'ultima operazione, sebbene non necessaria ai fini dell'addestramento, è stata comunque eseguita per poter poi assegnare a ciascuna classe un colore di riferimento e dunque di poterle distinguere facilmente.
L'operazione di colorazione, per classe di appartenenza, dei campioni è stata eseguita dal nodo Color Manager, il quale necessita come parametro di configurazione la selezione della colonna di riferimento (class nel nostro caso). A valle dell'esecuzione del nodo Color Manager, effettuando una view sull'elaborazione, abbiamo constatato che i campioni sono ordinati per classe, ovvero prima quelli della classe 110 poi quelli della classe 1863, 21, 25, 6881 e poi infine quelli della classe 80; in più abbiamo notato che i valori assegnati agli attributi da PK_size1 a PK_size20 sono interi relativi che spesso differiscono tra loro per diversi ordini di grandezza.
Illustrazione 1: DS prima dello shuffle
Onde evitare che questi aspetti dei campioni possano influire negativamente sulle prestazioni della rete, si è proceduto quindi a normalizzare l'intero dataset e a mescolarlo. Tali operazioni sono state effettuate attraverso l'utilizzo di due nodi Shuffle e Normalizer.
Illustrazione 2: DS dopo lo shuffle
Riportiamo di seguito la parte del progetto in Knime che realizza le operazioni sopra menzionate.
Illustrazione 3: Parte del progetto di Knime che effettua elaborazioni sul DS
Notiamo nell'immagine ulteriori nodi di cui non abbiamo ancora parlato e tra questi elenchiamo il nodo Pie Chart e lo Scatter Plot. Il nodo Pie Chart è stato introdotto solo per una questione puramente grafica, in effetti esso riporta su di un grafico a torta le istanze del DS raggruppate per classi (informazione per altro già fornita nel file Readme.txt).
Illustrazione 4: Pie Chart
Il nodo Scatter Plot invece rappresenta graficamente i campioni su di un sistema di assi cartesiani; il nodo renderizza i campioni sugli assi a seconda delle features selezionate. Riportiamo di seguito un esempio dove abbiamo selezionato per l'ascissa l'attributo ID mentre per le ordinate l'attributo PK_size1:
Illustrazione 5: Scatter plot ID.PK_size1
Tale grafo può essere di notevole aiuto nella fase di features selection nel capire quali sono, appunto, le...
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Intelligenza artificiale - tesina Knime
-
Intelligenza Artificiale
-
Intelligenza Artificiale
-
Intelligenza Artificiale