Mappe auto-organizzanti
Mappe auto-organizzanti (SOM) sono una forma non supervisionata di Machine Learning che può essere utilizzata per raggruppare dati con molte funzionalità. Il SOM non solo raggruppa i tuoi dati, ma li "mappa" anche su una dimensione inferiore (solitamente due dimensioni) in modo da poter visualizzare più facilmente i cluster.
Tradizionalmente, le SOM vengono spiegate come una forma di rete neurale artificiale in cui le caratteristiche sono input e i cluster sono output. Ma praticamente tutto ciò che riguarda il modo in cui un SOM viene addestrato e strutturato lo è diverso dalle tradizionali reti neurali feedforward, anche se alcuni termini sono gli stessi. Quindi, se stai iniziando con una tabula rasa per quanto riguarda la rete neurale, sarai comunque in grado di seguirlo. 
Per rendere le cose più semplici, definirò alcuni termini e il loro significato in anticipo:
Nodo . Li chiamiamo nodi perché prendiamo in prestito termini dalle reti neurali, ma i nodi nelle SOM rappresentano i centri di ciascuno dei nostri cluster. Il numero di nodi che hai è il numero di cluster che avrai.
Peso . Prendiamo in prestito anche il termine peso dalle reti neurali, ma i pesi nelle SOM sono diversi. I pesi rappresentano la posizione spaziale del nodo (come in K-Means abbiamo i centri dei cluster). I pesi avranno la stessa dimensione dei nostri vettori di dati.
Quartiere . L'intorno di un nodo è l'insieme dei nodi che gli sono sufficientemente vicini. Quanto vicino è “sufficientemente” vicino cambierà man mano che addestriamo il nostro SOM.
Tasso di apprendimento . Il tasso di apprendimento riflette quanto modificheremo i pesi dei nostri nodi in ogni iterazione. Grandi tassi di apprendimento significano che i nostri pesi potrebbero fluttuare selvaggiamente. Tassi di apprendimento molto piccoli significano che i nostri pesi non cambieranno molto rispetto ai valori iniziali.
Reticolo/Mappa. La disposizione/griglia dei nodi nella nostra Mappa.

SOM ad apprendimento incrementale
Per darti un'idea generale migliore di ciò che fanno i SOM, inizieremo esaminando i SOM addestrati iterativamente, che ci permetterà di vedere ogni passaggio nella creazione dei SOM uno per uno. Questo non è il metodo che JMP implementa. Per essere efficiente dal punto di vista computazionale, JMP addestra i suoi SOM con metodo batch, che vedremo di seguito.
Panoramica . Esistono cinque passaggi principali per addestrare un SOM in modo iterativo:
- Inizializzare i pesi dei nodi SOM. Questa operazione può essere eseguita in modo casuale oppure è possibile scegliere particolari pesi iniziali in modo che siano distribuiti in modo efficiente su tutti i possibili valori di input (cosa che fa JMP).
- Scegliere un punto dati casuale dal tuo set di dati.
- Calcola a quale nodo è più vicino il punto dati . Possiamo farlo calcolando la distanza tra il nostro punto dati e il peso di ciascun nodo. Il nodo più vicino è chiamato Migliore unità corrispondente ( BMU in breve).
- Una volta conosciuta la BMU, calcoliamo quali nodi si trovano nelle vicinanze della BMU . In altre parole, quali nodi sono sufficientemente vicini nella mappa alla BMU.
- Noi aggiornare il peso del BMU e tutti i suoi vicini in modo che i loro pesi siano più simili al nostro punto dati. In sostanza, stiamo adattando meglio i nostri cluster ai nostri dati. I nodi più lontani dalla BMU vengono modificati meno dei nodi vicini alla BMU (e alla BMU stessa).
Ripetiamo i passaggi 2-5 finché non raggiungiamo il numero massimo di iterazioni o finché i pesi dei nostri nodi smettono di cambiare.
In profondità . Diamo uno sguardo più approfondito ai passaggi 3-5 per capire cosa sta succedendo in modo più intuitivo.
Prima di iniziare, non lasciare che i calcoli ti impediscano di leggere questa sezione . Ti mostrerò le formule, ma va bene se non capisci tutti i calcoli, purché tu conosca l'idea generale alla base Perché usiamo questa matematica.
Trovare la BMU . Esistono molti modi per calcolare la distanza tra due vettori n-dimensionali; comunemente con i SOM, potresti vedere misure come Distanza euclidea o Distanza coseno.


In questo caso utilizzeremo la distanza euclidea. Per calcolare la BMU, calcoliamo la distanza euclidea tra il nostro vettore di dati selezionato e ciascuno dei vettori di peso per i nostri nodi. La BMU ha la distanza più piccola.
Calcolo dei quartieri . L'aggiornamento di più nodi/centri cluster separa i SOM da metodi più semplici come K-Means. Non solo cambieremo il peso della nostra BMU per essere più vicini al vettore dati, ma cambieremo anche i nodi che riteniamo siano sufficientemente vicini alla BMU.
I nodi sono considerati nelle vicinanze di una BMU se si trovano entro un certo raggio dalla BMU. In altre parole, se un nodo è all'interno di un cerchio con raggio, R , centrato sulla BMU, è considerato un vicino.
Inizialmente, vogliamo utilizzare un quartiere più o meno grande e modificare molti nodi. Ma, col passare del tempo, vogliamo che i nostri quartieri diventino più piccoli in modo da poter “perfezionare” ulteriormente il nostro SOM. Pensa a come, quando levighiamo qualcosa, spesso iniziamo con carta vetrata a grana grossa e procediamo fino alla carta vetrata a grana più fine.
Matematicamente, possiamo raggiungere questo obiettivo utilizzando una formula per il raggio del nostro vicinato, R , che dipende dal tempo e diminuisce man mano che continuiamo ad addestrare il nostro SOM. Alla fine, il quartiere sarà così piccolo che conterrà solo la BMU.
Aggiornamento dei pesi dei nodi . Una volta che sappiamo quali pesi dei nodi vogliamo aggiornare, calcoliamo quanto modificarli. I pesi dei nodi più vicini alla BMU cambieranno *la maggior parte*, e i nodi che si trovano ai margini del nostro vicinato cambieranno molto poco. Ma tutti i pesi dei nodi verranno avvicinati al vettore di dati corrente.
Lo facciamo utilizzando questa formula (non preoccuparti, ti guiderò attraverso le diverse parti tra un attimo):

Le W rappresentano il peso del nodo. W(t+1) è nostro aggiornato peso, W(t) è il nostro attuale peso. Se semplifichiamo per un momento l'ultima parte del lato destro, possiamo vedere che il nuovo peso aggiornato è il nostro vecchio peso moltiplicato per alcuni regolazione .

(V(t) - W(t)) è la distanza tra il nostro vettore dati e il peso del nodo corrente. Ciò mostra che il nostro aggiustamento dipenderà dalla distanza tra il vettore dati e il nodo.

L(t) è il tasso di apprendimento. Proprio come la nostra funzione di vicinato (in realtà ESATTAMENTE come la nostra funzione di raggio di vicinato...), il nostro tasso di apprendimento inizia con un valore relativamente grande, , e diminuisce nel tempo (la parte esponenziale lo fa per noi.)

Quando iniziamo ad addestrare il nostro SOM per la prima volta, il nostro tasso di apprendimento è elevato, ma col tempo vogliamo che i pesi dei nostri nodi siano più stabili, quindi riduciamo il tasso di apprendimento.

Non solo il tasso di apprendimento sta diminuendo tempo , ma anche la modifica ai pesi dei nostri nodi diminuisce man mano che il nodo diventa ulteriore dalla nostra BMU.
è un kernel gaussiano, che rappresenta matematicamente questo decadimento. ( dist è la distanza tra il nodo che stiamo modificando e la BMU nella mappa.)

Per un dato raggio, r(t), il kernel gaussiano avrà questa forma:
Quando la distanza tra il nodo che stiamo aggiornando e la BMU è ampia, sarà piccolo. Al contrario, quando il nodo che stiamo aggiornando è vicino alla BMU, sarà più grande.
Abbiamo finalmente decostruito l'intera formula!

Revisionare:
W(t) è il peso attuale di un nodo.

fa sì che i nodi più lontani dalla BMU vengano modificati meno rispetto ai nodi vicini alla BMU (e alla BMU stessa).
L(t) è il nostro tasso di apprendimento decrescente. Con il passare del tempo, stiamo "perfezionando" e apportando modifiche più piccole rispetto a quelle all'inizio dell'allenamento.
V(t) - W(t) è la distanza tra il vettore dati e il peso del nodo (entrambi n-dimensionali). Maggiore sarà la distanza, più le cose cambieranno.
Se sei arrivato fin qui, ti meriti una pausa! Abbiamo esaminato il modo in cui i SOM vengono addestrati in modo iterativo. Questo ci ha mostrato le idee generali che rendono unici i SOM: vale a dire il modo in cui aggiorniamo più pesi dei nodi a seconda tempo, distanza dalla BMU e distanza tra il vettore dati e il peso del nodo.
Se hai mai letto di SOM altrove, la cosa di cui le persone sono entusiaste è che i SOM “preservano la topologia”, che è solo un modo elegante per dire che i nodi che sono vicini tra loro nello spazio multidimensionale saranno vicini insieme nel nostro SOM. grid una volta che lo abbiamo addestrato. Questo ci aiuta a visualizzare i nostri dati utilizzando la griglia SOM poiché è facile rappresentare graficamente le cose in due dimensioni... ma molto più difficile in più dimensioni.
Imparare a conoscere la formazione SOM iterativa è utile per comprendere queste proprietà, ma non è efficiente dal punto di vista computazionale. Ecco perché JMP utilizza il file lotto metodo di training per eseguire effettivamente i calcoli SOM.
SOM di apprendimento batch
Questo algoritmo è quello descritto nel sito Web JMP. Invece di addestrare il nostro SOM un vettore di dati alla volta, possiamo utilizzare tutti i vettori di dati contemporaneamente!
Ecco i passaggi:
- Inizializzare i pesi dei nodi SOM (è lo stesso nel metodo iterativo)
- Tutto in una volta, calcolare le BMU per ciascun vettore di dati nel nostro set di addestramento.
- Calcolare i nuovi pesi dei nodi utilizzando questa formula:

è il numero di vettori di dati la cui BMU è il nodo j,
è la media di tutti quei vettori di dati e è la funzione di vicinato che decide quali nodi vengono modificati e di quanto. È simile a
nel nostro algoritmo di training incrementale.
4. Ripeti 2 e 3 finché il nostro SOM non converge.
I conti possono essere più difficili da seguire quando tutto accade tutto in una volta, ma la premessa di base dell'algoritmo Batch Learning è che invece di aggiornare i nostri nodi in risposta a uno vettore di dati, li aggiorniamo in risposta a Tutto i vettori di dati contemporaneamente (una specie di K-Means...). E fortunatamente per te, questo metodo spesso accelera il tempo necessario a JMP per addestrare il tuo SOM.
Nel JMP
In JMP, l'opzione SOM si trova nel menu Medie K. Usiamo un SOM per raggruppare alcuni hamburger fast food di vari ristoranti americani. Vai a Analizza > Clustering > Medie K . Verrà visualizzata la finestra K-Means Cluster. Fai clic e trascina tutte le variabili che desideri utilizzare sul file Y casella e fare clic OK .
All'interno del Pannello di controllo è presente un menu a discesa per Metodo. Scegliere Mappa auto-organizzativa . Da qui puoi scegliere la dimensione della tua griglia. Faremo 2x2, che ci dà quattro nodi disposti in forma rettangolare. Clic ANDARE .
Il nostro output ci mostra automaticamente le medie di ciascuno dei nostri quattro cluster. Possiamo salvare queste assegnazioni di cluster andando sul triangolo rosso nel menu Griglia SOM e selezionando " Salva cluster ”. Nello stesso menu possiamo anche selezionare “ Biploma " per vedere una rappresentazione visiva del nostro SOM. JMP traccerà i nodi/cluster in base ai primi due componenti principali. Qui sembra che il Cluster 1 (in alto) sia abbastanza lontano dagli altri tre. Possiamo verificarlo più tardi nel Costruttore di grafici.

Anche esaminando alcune delle nostre variabili, possiamo iniziare a capire perché il Cluster 1 era così diverso. Non contiene assolutamente proteine. Se osserviamo il nostro set di dati, possiamo vedere che gli elementi nel cluster 1 tendono ad essere dessert. 
Il cluster 2, invece, è ricco di calorie, proteine e grassi! Potresti voler fare attenzione a questi oggetti se vuoi rimanere sveglio a lungo dopo averli mangiati.
Conclusione
Le mappe autoorganizzanti sono uno strumento utile per raggruppare i dati costruendo una mappa che prende dati potenzialmente altamente dimensionali e mappandoli in una forma 2D molto più gestibile. In JMP , i SOM sono facili da implementare quanto i K-Means (anche se la matematica dietro è molto più complicata), quindi cosa hai da perdere provandoli?
Mappe auto-organizzanti (SOM) sono una forma non supervisionata di Machine Learning che può essere utilizzata per raggruppare dati con molte funzionalità. Il SOM non solo raggruppa i tuoi dati, ma li "mappa" anche su una dimensione inferiore (solitamente due dimensioni) in modo da poter visualizzare più facilmente i cluster.
Re: Mappe auto-organizzantiCiao Chelsea
hai un esempio su come utilizzare il SOM in JMP per la riduzione della dimensionalità?
In genere utilizzo SOM per il clustering, ma so che può essere utilizzato anche per ridurre il numero di predittori.
Grazie
Felice