Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Data clustering con una mappa auto-organizzante

Il data clustering è un’altra eccellente applicazione per le reti neurali. Il processo si basa sul raggruppamento dei dati per similarità. Ad esempio, si possono eseguire le seguenti attività:

  • Segmentazione di mercato raggruppando le persone in base ai loro comportamenti di acquisto

  • Data mining tramite la suddivisione dei dati in sottoinsiemi correlati

  • Analisi bioinformatiche mediante il raggruppamento dei geni con modelli di espressione correlati

Supponiamo di voler raggruppare i tipi di fiori in base a lunghezza dei petali, larghezza dei petali, lunghezza del sepalo e larghezza del sepalo. Ci sono 150 casi di esempio per i quali si conoscono queste quattro misure.

Come nel caso del function fitting e del pattern recognition, esistono due modi di risolvere questo problema:

Generalmente è meglio iniziare con l’app e quindi utilizzarla per generare automaticamente gli script della riga di comando. Prima di utilizzare uno dei metodi, definisci il problema selezionando un set di dati. Ciascuna delle app per reti neurali ha accesso a set di dati campione che si possono utilizzare per sperimentare con il toolbox (vedere Set di dati campione per reti neurali superficiali). Se è presente un problema specifico da risolvere, è possibile caricare i propri dati nel workspace. Il prossimo capitolo descrive il formato dei dati.

Definizione di un problema

Per definire un problema di clustering, disponi i vettori di input (predittori) da raggruppare come colonne all’interno di una matrice di input. Ad esempio, si potrebbe raggruppare questo insieme di 10 vettori a due elementi:

predictors = [7 0 6 2 6 5 6 1 0 1; 6 2 5 0 7 5 5 1 2 2]

La prossima sezione mostra come addestrare una rete per eseguire il data clustering, utilizzando l’app Neural Net Clustering. Questo esempio si basa su un set di dati esemplificativo fornito in dotazione al toolbox.

Data clustering con l’app Neural Net Clustering

Questo esempio mostra come addestrare una rete neurale superficiale per eseguire il data clustering con l’app Neural Net Clustering.

Apri l’app Neural Net Clustering tramite nctool.

nctool

Selezione dei dati

L’app Neural Net Clustering contiene dei dati esemplificativi che ti aiuteranno ad iniziare ad addestrare una rete neurale.

Per importare i dati esemplificativi per il clustering del fiore Iris, seleziona Import > Import Iris Flowers Data Set (Importare > Importare set di dati fiori Iris). Se si importano dati propri da un file o da workspace, occorre specificare i predittori e se le osservazioni siano distribuite in righe o colonne.

Le informazioni sui dati importati compaiono nel Model Summary (Riepilogo modello). Questo set di dati contiene 150 osservazioni, con quattro feature ciascuna.

Creazione della rete

Per i problemi di clustering, la mappa auto-organizzante (SOM, self-organizing map) delle feature è la rete più utilizzata. Questa rete ha un unico livello e i neuroni organizzati in una griglia. Le mappe auto-organizzanti imparano a raggruppare i dati in base alle loro similarità. Per ulteriori informazioni sulle mappe SOM, vedere Cluster with Self-Organizing Map Neural Network.

Per creare la rete, specifica le dimensioni della mappa, che coincidono con il numero di righe e colonne della griglia. Per questo esempio, imposta il valore delle Map size (Dimensioni mappa) su 10, che corrisponde a una griglia con 10 righe e 10 colonne. Il numero totale di neuroni è pari al numero di punti sulla griglia. In questo esempio, la mappa ha 100 neuroni. È possibile vedere l’architettura di rete nel pannello Network.

Addestramento della rete

Per addestrare la rete, fai clic su Train (Addestrare). Nel pannello Training (Addestramento) si possono vedere i progressi dell’addestramento. L’addestramento continua fino al raggiungimento di uno dei criteri di arresto. In questo esempio, l’addestramento continua fino al raggiungimento del numero massimo di epoche.

Analisi dei risultati

Per analizzare i risultati dell’addestramento si generano dei grafici. Per l’addestramento di alcune SOM, il vettore di peso associato ad ogni neurone si sposta per diventare il centro di un cluster di vettori di input. Inoltre, anche i neuroni adiacenti l’uno all’altro nella topologia dovrebbero spostarsi l’uno vicino all’altro nello spazio di input, pertanto è possibile visualizzare uno spazio di input con elevata precisione dimensionale nelle due dimensioni della topologia di rete. La topologia predefinita per la SOM è esagonale.

Per tracciare i SOM Sample Hits, nella sezione Plots (Grafici), fai clic su Sample Hits (Hit campione). Questa figura mostra le posizioni dei neuroni all’interno della topologia e indica quante delle osservazioni sono associate ad ogni neurone (centri di cluster). La topologia è una griglia 10x10, quindi ci sono 100 neuroni. Il numero massimo di hit associati a qualunque neurone è 5. Pertanto ci sono 5 vettori di input in quel cluster.

Traccia i piani dei pesi (definiti anche piani dei componenti). Nella sezione Plots (Grafici), fai clic su Weight Planes (Piani dei pesi). Questa figura mostra un piano del peso per ciascun elemento delle feature di input (quattro nell’esempio). Il grafico mostra i pesi che collegano ogni input a ciascuno dei neuroni; i colori più scuri rappresentano i pesi più grandi. Se i modelli di connessione di due feature sono molto simili, si può presupporre che le feature siano altamente correlate.

Se non si è soddisfatti delle prestazioni della rete, si può procedere in uno dei seguenti modi:

  • Addestrare nuovamente la rete. Ogni addestramento ha pesi e bias iniziali della rete diversi e può produrre una rete migliore a seguito del riaddestramento.

  • Aumentare il numero di neuroni aumentando le dimensioni della mappa.

  • Usare un set più ampio di dati di addestramento.

Si può anche valutare la performance della rete su un ulteriore set di test. Per caricare ulteriori dati di test con cui valutare la rete, nella sezione Test, fai clic su Test. Generare dei grafici per analizzare i risultati di ulteriori test.

Generazione di codice

Seleziona Generate Code > Generate Simple Training Script (Generare codice > Generare script di addestramento semplice) per creare un codice MATLAB in grado di riprodurre le fasi precedenti dalla riga di comando. La creazione di codice MATLAB può essere utile se si desidera imparare come utilizzare la funzionalità della riga di comando del toolbox per personalizzare il processo di addestramento. In Data clustering con le funzioni della riga di comando, potrai esaminare più dettagliatamente gli script generati.

Esportazione della rete

Una volta addestrata, la rete può essere esportata nel workspace o in Simulink®. È anche possibile distribuire la rete con gli strumenti di MATLAB Compiler™ e altri strumenti di generazione di codice MATLAB. Per esportare la rete addestrata e i risultati, seleziona Export Model > Esport to Workspace (Esportare modello > Esportare in Workspace).

Data clustering con le funzioni della riga di comando

Il modo più semplice per scoprire come utilizzare la funzionalità della riga di comando del toolbox consiste nel generare degli script dalle app e poi modificarli per personalizzare l’addestramento della rete. Per un esempio, osservare il semplice script creato nella sezione precedente utilizzando l’app Neural Net Clustering.

% Solve a Clustering Problem with a Self-Organizing Map
% Script generated by Neural Clustering app
% Created 21-May-2021 10:15:01
%
% This script assumes these variables are defined:
%
%   irisInputs - input data.

x = irisInputs;

% Create a Self-Organizing Map
dimension1 = 10;
dimension2 = 10;
net = selforgmap([dimension1 dimension2]);

% Train the Network
[net,tr] = train(net,x);

% Test the Network
y = net(x);

% View the Network
view(net)

% Plots
% Uncomment these lines to enable various plots.
%figure, plotsomtop(net)
%figure, plotsomnc(net)
%figure, plotsomnd(net)
%figure, plotsomplanes(net)
%figure, plotsomhits(net,x)
%figure, plotsompos(net,x)

È possibile salvare lo script ed eseguirlo successivamente dalla riga di comando per riprodurre i risultati della precedente sessione di addestramento. Si può anche modificare lo script per personalizzare il processo di addestramento. In questo caso, segui ogni passaggio all’interno dello script.

Selezione dei dati

Lo script presuppone che i predittori siano già caricati nel workspace. Se i dati non sono caricati, li si può caricare nel seguente modo:

load iris_dataset

Questo comando carica i predittori irisInputs nel workspace.

Questo set di dati è uno dei set di dati campione inclusi nel toolbox. Per informazioni sui set di dati disponibili, vedere Set di dati campione per reti neurali superficiali. Inoltre, è possibile vedere un elenco di tutti i set di dati disponibili immettendo il comando help nndatasets. È possibile caricare le variabili da uno qualunque di questi set di dati utilizzando i propri nomi di variabile. Ad esempio, il comando

x = irisInputs;
caricherà i predittori per il fiore Iris nell’array x.

Creazione della rete

Crea una rete. Per questo esempio, utilizza una mappa auto-organizzante (SOM). Questa rete ha un unico livello e i neuroni organizzati in una griglia. Per ulteriori informazioni, vedere Cluster with Self-Organizing Map Neural Network. Durante la creazione della rete con selforgmap, occorre specificare il numero di righe e di colonne presenti nella griglia.

dimension1 = 10;
dimension2 = 10;
net = selforgmap([dimension1 dimension2]);

Addestramento della rete

Addestra la rete. La rete SOM utilizza l’algoritmo predefinito SOM con batch per l’addestramento.

[net,tr] = train(net,x);

Durante l’addestramento, la finestra di addestramento si apre e visualizza l’avanzamento. È possibile interrompere l’addestramento in qualunque momento facendo clic sul pulsante di stop .

Neural network training progress window

Test della rete

Esegui il test della rete. Una volta addestrata la rete è possibile utilizzarla per calcolare gli output della rete.

y = net(x);

Visualizzazione della rete

Visualizza il diagramma della rete.

view(net)

Graphical representation of the clustering network. The network has input size 4 and output size 100.

Analisi dei risultati

Per l’addestramento di alcune SOM, il vettore di peso associato ad ogni neurone si sposta per diventare il centro di un cluster di vettori di input. Inoltre, anche i neuroni adiacenti l’uno all’altro nella topologia dovrebbero spostarsi l’uno vicino all’altro nello spazio di input, pertanto è possibile visualizzare uno spazio di input con elevata precisione dimensionale nelle due dimensioni della topologia di rete. La topologia SOM predefinita è esagonale; per visualizzarla, immetti i seguenti comandi.

figure, plotsomtop(net)

SOM topology displaying a 10-by-10 grid of hexagons

In questa figura, ciascuno degli esagoni rappresenta un neurone. La griglia è 10x10, quindi questa rete contiene un totale di 100 neuroni. Ci sono quattro feature in ogni vettore di input, perciò lo spazio di input è tetradimensionale. I vettori di peso (centri dei cluster) rientrano in questo spazio.

Dato che questa SOM ha una topologia bidimensionale, è possibile visualizzare due dimensioni nei rapporti tra i centri dei cluster tetradimensionali. Uno strumento di visualizzazione per la rete SOM è la weight distance matrix (matrice delle distanze dei pesi, denominata anche U-matrix).

Per visualizzare la U-matrix, fai clic su SOM Neighbor Distances (Distanze neighbor SOM) nella finestra di addestramento.

SOM neighbor weight distance plot

In questa figura gli esagoni blu rappresentano i neuroni. Le linee rosse collegano i neuroni vicini. I colori nelle regioni contenenti righe rosse indicano le distanze tra i neuroni. I colori più scuri rappresentano distanze maggiori, mentre i colori più chiari rappresentano distanze minori. La mappa è attraversata da una fascia di segmenti scuri. La rete SOM sembra avere raggruppato i fiori in due gruppi distinti.

Fasi successive

Per acquisire maggiore esperienza nelle operazioni legate alla riga di comando, prova alcune delle seguenti attività:

Vedi anche

| | | | |

Argomenti complementari