Nella prossime due lezione descriveremo un po’ più nel dettaglio alcuni problemi risolvibili con le reti neurali. In particolare:
Iniziamo con il vedere cosa è un problema di classificazione …
Classificare è un’attività fondamentale svolta da tutti gli esseri viventi. Tramite i nostri sensi abbiamo esperienza di un oggetto e siamo subito in grado di “classificarlo” in una particolare categoria, ad esempio come:
È importante osservare che questa capacità di classificare nella giusta categoria un “oggetto” passa attraverso una fase preliminare di “esperienza con oggetti simili”.
In maniera analoga, è possibile pensare ad un algoritmo in grado, tramite l’osservazione di un insieme di casi, di classificare “oggetti” nella appropriata categoria.
Supponiamo di avere un cesto pieno di palline di colore diverso e vogliamo distinguere le palline di colore rosso da tutte le altre. Quindi noi sappiamo, a priori, che il nostro insieme di palline si suddivide in due classi:
Il problema è quello di definire in maniera operativa un modo automatico (o semi-automatico) per assegnare ciascuna pallina alla classe PALLINE ROSSE o alla classe PALLINE NON ROSSE.
Ad esempio, possiamo definire un primo algoritmo (semplice) che possa risolvere il problema:
Dove x è un array di dimensione 3 contente i valori R, G e B tramite i quali descriviamo il colore di ciascuna pallina.
La classificazione di un oggetto avviene sempre in base a degli attributi, proprietà, caratteristiche dell’oggetto stesso che lo accomunano ad altri oggetti.
Le classi si possono considerare come “etichette” (spesso mutuamente esclusive) che si “pongono” su un oggetto.
Un oggetto da classificare è, allora, rappresentato da un vettore contenente i valori dei suoi attributi, caratteristiche.Nell’esempio precedente, allora, ogni pallina è rappresentato da un vettore costituito da tre valori (caratteristiche dell’oggetto).
Un problema di classificazione può essere caratterizzato, in maniera non esaustiva ma utile per gli scopi del corso, nella seguente maniera:
Un processo effettivo (un algoritmo) che sia capace di assegnare ogni , rappresentato da
(vettore di caratteristiche), ad una ed una sola classe
.
Una “misura di bontà” del risultato del processo di classificazione.
Naturalmente una qualsiasi processo che faccia questo è sempre realizzabile, il problema è, però, se tale processo è un “buon” algoritmo di classificazione oppure no.
Vediamo, allora, quali sono alcune proprietà che definiscono un “buon” algoritmo di classificazione.
***
In teoria, il miglior algoritmo di classificazione dovrebbe essere capace di classificare ogni a
stesso.
Dovrebbe permettere:
Una possibile “misura di bontà” del risultato del processo di classificazione è dato da due parametri:
Qualitativamente, il primo parametro indica la capacità dell’algoritmo di recuperare tutti gli elementi della classe.
Il secondo parametro, invece, la capacità dell’algoritmo di non sbagliare.
Andiamo a precisare formalmente cosa intendiamo con recall e precision.
Supponiamo che l’insieme U di N elementi da classificare sia suddiviso in due classi C e U-C. Una volta che abbiamo realizzato il processo di classificazione su tutti gli N elementi di U, di cui conosciamo l’effettiva classificazione, definiamo:
Ovviamente è: TP+FP+TN+FN=N
Osserviamo che il numero di elementi che il processo di classificazione ha classificato come appartenenti a C è pari a TP+FP.
Allora definiamo:
In figura: Recall e Precision. L’ovale bianco corrisponde all’insieme U sottoposto al processo di classificazione. L’ovale grigio rappresenta gli elementi di U che appartengono alla classe C, i restanti elementi non appartengono alla classe C. Il rettangolo grigio rappresenta gli elementi che un processo di classificazione assegna alla classe C.
La situazione ideale è quella per cui si ha Recall e Precision pari a 1. Recall=1 significa che tutti gli elementi che appartenevano alla classe C e che sono stati dati in input al processo di classificazione sono stati effettivamente classificati come appartenenti alla classe C. Mentre Precision=1 significa che tutti gli elementi che appartenevano alla classe U-C e che sono stati dati in input al processo di classificazione sono stati effettivamente classificati come appartenenti alla classe U-C.
Avere solo uno dei due pari a 1 (Recall o Precision) è facile, ad esempio Recall=1 si ottiene classificando sempre un elemento come appartenente alla classe C, il difficile è avere entrambi i valori alti.
In figura: Recall e Precision. L’ovale bianco corrisponde all’insieme U sottoposto al processo di classificazione. L’ovale grigio rappresenta gli elementi di U che appartengono alla classe C, i restanti elementi non appartengono alla classe C. Il rettangolo grigio rappresenta gli elementi che un processo di classificazione assegna alla classe C.
Un problema di clusterizzazione (o segmentazione) ha molte cose in comune con un problema di classificazione ma, possiamo affermare, che sussiste in una fase precedente.
In questo caso, infatti, l’insieme U di elementi che rappresenta il nostro universo non è a priori suddiviso in un numero finito di classi ma si vuole proprio determinare se tale insieme è suddivisibile in classi in base a qualche “misura di distanza” tra gli elementi dell’insieme U.
Anche in questo caso, in generale, possiamo dire che un problema di segmentazione è caratterizzato da:
Nel caso dei problemi di regressione, invece, in maniera molto sintetica, abbiamo la necessità di modellare una relazione (espressa, in genere, in termini di una funzione) tra variabili continue.
Ad esempio, dato un insieme di n valori ordinati a cui sono associati n valori
tramite una qualche funzione sconosciuta f, cioè
, si vuole conoscere per il prossimo valore
q uale sia il valore associato
. Fondamentalmente, allora, abbiamo il problema di approssimare la funzione f sulla base dei valori
e
.
Nota importante.
I tre tipi di problemi fin qui esposti (classificazione, segmentazione, e regressione) si possono ridurre (o lo sono già di per sé) a problemi di approssimazione di funzioni.
Nel prosieguo focalizzeremo la nostra attenzione sui problemi di classificazione e di approssimazioni di funzioni.
1. Informazioni generali sul corso
3. Un modello computazionale del neurone biologico
4. Possibili problemi risolvibili con Reti Neurali
5. Problemi di Classificazione ed approccio probabilistico
7. Capacità rappresentativa delle reti neurali - parte prima
8. Capacità rappresentativa delle reti neurali - Parte seconda
9. Apprendimento e generalizzazione
10. Discesa del gradiente e backpropagation
11. Back-Propagation
13. Interpretazione output di una rete neural feed-forward
14. Complessità della rete, generalizzazione e termini di regolari...
15. Cross-entropy e variazioni sulla discesa del gradiente
16. Verso le reti neurali RBF: interpolazione esatta.
17. Reti neurali RBF
18. Addestramento di una rete RBF
19. Parametri delle funzioni a base radiale
20. Un primo modello di reti neurali ricorrenti: formalismo di Caia...