Sei sulla pagina 1di 8

Apprendimento Automatico

Classificazione con Percettrone


Multistrato
Sergio Cattaneo, 726786
Federico Valentini, 726584
23/06/14

Introduzione

Per questo progettino ci stato chiesto un compito di classificazione supervisionata implementando un percettrone multistrato.
Il dominio applicativo era a nostra scelta purche avesse un discreto di attributi nel continuo, cos come sono state a nostra discrezione tutte le scelte
implementative del caso.
La fase di feature selection e stata implementata con metodi wrapper.

Dataset

Il dataset che abbiamo scelto per il progettino e Leaf Data Set, scaricato
dallUCI Mahine Learning Repository1 , ed e cos composto:
340 istanze
30 classi
14 attributi
Per eseguire i nostri test ci siamo limitati a meta dataset, classificando solo
le prime 15 classi (171 istanze).
1

http://archive.ics.uci.edu/ml/datasets/Leaf

Numero
0
1
2
3
4
5
6

Attributo
Eccentricity
Aspect Ratio
Elongation
Solidity
Stochastic Convexity
Isoperimetric Factor
Maximal Indentation Depth

Numero
7
8
9
10
11
12
13

Attributo
Lobedness
Average Intensity
Average Contrast
Smoothness
Third Moment
Uniformity
Entropy

Table 1: Attributi disponibili nel dataset

Figure 1: Esemplari delle 15 classi utilizzate

Implementazione

3.1

Struttura della rete

Il percettrone e stato cos strutturato:


Uno strato iniziale con n nodi, dove n e la cardinalita dellinsieme di
features considerate.
Uno strato finale con m nodi, tanti quanti le m classi del problema.
Uno strato nascosto con

3.2

n+m
2

+ 1 nodi.

Funzioni di attivazione

Sono state utilizzate le seguenti tipologie di funzione di attivazione:


Per lattivazione dei nodi nello strato nascosto la sigmoide:
y(x) = a tanh(bx)
con a = 1.7159 e b = 2/3
Per lattivazione dello strato finale abbiamo prima eseguito una codifica 1-a-N delle classi, ad esempio 1 = (1, 0, 0, . . . , 0), 2 = (0, 1, 0, . . . , 0)
e n = (0, 0, 0, . . . , 1) e poi usato la funzione softmax :
(x)j =

xj

PNe

i=1

exi

che restituisce un vettore dove li-esimo elemento rappresenta la probabilit


a di appartenere alli-esima classe.

3.3

Funzione di errore

Per calcolare la performance ad ogni iterazione abbiamo utilizzato la funzione cross-entropy, pi


u adatta alla funzione di attivazione finale.
P
E(t, o) = N1 N
i=1 [ti ln (oi ) + (1 ti ) ln (1 oi )]

3.4

Pre-processing dei dati

Prima di addestrare il percettrone, abbiamo modificato i dati di ogni attributo j-esimo in questo modo:
zj =

aj j
j

La standardizzazione dei valori permette una pi


u veloce convergenza della
classificazione, anche grazie al fatto che la sigmoide che utilizziamo e centrata
sullo 0.

3.5

Parametri del modello

Infine ecco gli ultimi parametri della rete neurale:


Learning rate, = 0.048
Numero di iterazioni i = 250

Risultati

Per la feature selection abbiamo implementato una metodologia wrapper


di tipo greedy. In particolare abbiamo utilizzato una strategia iterativa
che, partendo dallinsieme vuoto, ad ogni iterazione aggiunge lattributo
che meglio classifica il dataset.
Gli indici usati per calcolare la prestazione di ciascun insieme di attributi
sono:
Accuratezza, =

#corretti
#istanze ,

Producer Accuracy, P.A. =


User accuracy, U.A. =

calcolata su tutta la matrice.


#correttij
#istanzej ,

#correttij
#classif icatij ,

calcolata per ogni classe j.

calcolata per ogni classe j.

4.1

Prima iterazione

Attributi
Accuracy
Attributi
Accuracy

0
36.26%
7
24.56%

1
40.35%
8
22.22%

2
36.84%
9
22.81%

3
47.95%
10
24.56%

4
32.16%
11
26.90%

5
39.77%
12
19.30%

Features = {3}

Figure 2: Matrice di confusione relativa alla prima iterazione


Classe
Producer Accuracy
User Accuracy
Classe
Producer Accuracy
User Accuracy
Classe
Producer Accuracy
User Accuracy

1
75%
39.13%
6
12.5%
100%
11
100%
100%

2
0%
n.a.
7
0%
n.a.
12
0%
0%
5

3
0%
0%
8
0%
n.a.
13
84.62%
61.11%

4
0%
n.a
9
85.71%
27.91%
14
66.67%
32%

5
100%
80%
10
23.08%
30%
15
100%
60%

6
28.66%
13
25.73%

4.2

Seconda iterazione

Attributi
Accuracy
Attributi
Accuracy

0
79.53%
7
64.33%

1
76.61%
8
71.35%

2
77.78%
9
64.91%

10
71.35%

4
57.89%
11
70.18%

5
73.01%
12
59.06%

Features = {0, 3}

Figure 3: Matrice di confusione relativa alla prima iterazione


Classe
Producer Accuracy
User Accuracy
Classe
Producer Accuracy
User Accuracy
Classe
Producer Accuracy
User Accuracy

1
66.67%
100%
6
50%
66.67%
11
100%
100%

2
90%
81.82%
7
70%
78%
12
66.67%
88.89%
6

3
50%
70%
8
100%
100%
13
100%
86.67%

4
87.5%
77.78%
9
100%
56%
14
83.33%
76.92%

5
100%
80%
10
30.77%
100%
15
80%
70%

6
60.82%
13
71.35%

4.3

Terza iterazione

Attributi
Accuracy
Attributi
Accuracy

7
88.89%

1
85.96%
8
94.15%

2
90.06%
9
94.15%

10
90.06%

4
84.80%
11
93.57%

5
89.47%
12
83.04%

Features = {0, 3, 13}

Figure 4: Matrice di confusione relativa alla terza iterazione


Classe
Producer Accuracy
User Accuracy
Classe
Producer Accuracy
User Accuracy
Classe
Producer Accuracy
User Accuracy

1
91.67%
91.67%
6
100%
100%
11
100%
100%

2
90%
90%
7
80%
89%
12
100%
100%
7

3
90%
80%
8
100%
100%
13
92.31%
92.31%

4
87.5%
100%
9
85.71%
92.31%
14
91.67%
100%

5
100%
90%
10
100%
92.86%
15
100%
100%

6
87.71%
13
94.15%

4.4

Ultima iterazione

Attributi
Accuracy
Attributi
Accuracy

7
96.49%

1
97.66%
8
97.66%

2
97.66%
9
100.0%

10
95.90%

4
95.32%
11
98.83%

5
96.49%
12
91.23%

Features = {0, 3, 9 ,13}

Figure 5: Matrice di confusione relativa alla quarta iterazione


Classe
Producer Accuracy
User Accuracy
Classe
Producer Accuracy
User Accuracy
Classe
Producer Accuracy
User Accuracy

1
100%
100%
6
100%
100%
11
100%
100%

2
100%
100%
7
100%
100%
12
100%
100%
8

3
100%
100%
8
100%
100%
13
100%
100%

4
100%
100%
9
100%
100%
14
100%
100%

5
100%
100%
10
100%
100%
15
100%
100%

6
95.91%
13