Il machine learning (ML) è un tema caldo in questo momento.
E il machine learning supervisionato riceve molta attenzione. Hanno reti neurali appariscenti, il classificatore Naive Bayes e molti altri metodi interessanti (alcuni dei quali sono stati trattati in il nostro blog JMP qui ).
Ma il machine learning supervisionato richiede etichette o dati veritieri. Non possiamo chiedere a un computer di apprendere cos'è un gatto se non possiamo dirgli quando è corretto o errato. Sfortunatamente, le etichette sono difficili da trovare in alcuni set di dati. Le persone hanno escogitato modi ingegnosi per ottenere dati etichettati a buon mercato, come i CAPTCHA, che ti chiedono di fare clic su ogni foto che contiene un segnale di stop, o la famosa applicazione Quick Draw di Google; ma può essere costoso etichettare set di dati di grandi dimensioni.
Spesso non disponiamo di etichette o della verità, ma disponiamo di dati. In questi casi, dobbiamo usare un apprendimento automatico supervisionato. Il machine learning senza supervisione è così chiamato perché non possiamo dirgli cosa è giusto o sbagliato. Proprio come una nuova babysitter che non conosce le regole della casa, gli algoritmi ML senza supervisione non hanno le risposte giuste. Non possiamo “correggere” l'algoritmo quando sbaglia qualcosa, perché non esiste una risposta chiara o sbagliata.
Sebbene non sia l'unico tipo di ML non supervisionato, il clustering è molto popolare. Quando non disponiamo di gruppi prestabiliti per i nostri dati, il nostro istinto naturale è spesso quello di creare noi stessi tali gruppi. In generale, il clustering mira a raggruppare i punti dati vicini nello stesso gruppo e i punti dati lontani tra loro in gruppi diversi. Questo è chiamato coesione (punti simili sono insieme) e separazione (i punti dissimili non lo sono). Poiché non abbiamo etichette per il confronto, spesso giudichiamo il “successo” dei nostri cluster/gruppi in base a quanto sono coesi e separati.
K-significa
Diamo un'occhiata a questo piccolo set di dati proveniente da un grande magazzino chiamato RA Quello di Fisher . Fisher's sta cercando di implementare un nuovo programma di premi a tre livelli, ma lo staff deve sapere che tipo di offerte fare per ciascuno dei tre livelli.
Hanno raccolto dati pilota sul numero medio di acquisti e sul numero medio di articoli in ciascun acquisto per 30 clienti. I dati sono rappresentati graficamente di seguito.
Vogliamo separare i nostri clienti in tre gruppi in modo da poter avere un livello adatto a ciascun cliente. Quindi, decidiamo di utilizzare k-means per dividere i clienti in tre gruppi in base al numero medio di viaggi che effettuano all'anno e al numero di articoli che acquistano in media per viaggio.
Il primo passo di k-medie è scegliere k. Ne abbiamo scelti tre. Quindi scegliamo k punti casuali dai nostri dati. Tratteremo questi punti dati come i centri dei nostri tre cluster.
Quindi, assegniamo a ciascun punto dati di trovarsi nel cluster del punto a cui è più vicino. Ad esempio, questo punto in alto è il più vicino al punto blu, quindi sarà nel cluster blu.
Assegniamo ciascuno dei nostri punti a un cluster in questo modo.
Ora che abbiamo tre cluster, possiamo ricalcolare i nuovi centri di ciascun cluster.
E poi riassegnare ciascun punto al suo nuovo cluster più vicino.
Ripetiamo quindi questi passaggi finché l'appartenenza al cluster (o i centri) non cambia:
- Calcola centri
- Riassegnare i punti
Una volta raggiunto questo stato, il nostro modello ha convergente e utilizziamo queste appartenenze ai cluster come assegnazioni finali dei cluster.
Ora possiamo utilizzare i nostri cluster per creare i nostri tre livelli di clienti per Fisher's. Sembra che abbiamo un gruppo chiaro in rosso che effettua pochi viaggi e non acquista molti articoli. Per averli in negozio più spesso, il martedì offriamo uno sconto del 15%.
Il gruppo verde effettua un numero moderato di viaggi, ma acquista una grande quantità di articoli quando lo fa. Per soddisfarli, il nostro livello Argento includerà coupon con uno sconto del 60% su un articolo ogni settimana per attirare questi clienti più spesso.
Infine, il nostro livello Gold si rivolgerà al gruppo blu, che entra regolarmente nel negozio, ma acquista solo pochi articoli. Questo livello include eventi semestrali con uno sconto del 50% paghi uno prendi uno per cercare di invogliare questi clienti ad acquistare più articoli.
K-means è un ottimo modo per separare i tuoi dati in gruppi. E anche se il nostro esempio aveva solo due dimensioni (viaggi e articoli), le medie k possono funzionare bene per dati di dimensione superiore. È semplicemente più difficile tracciare i risultati in un post sul blog….
In precedenza ho menzionato che l'apprendimento non supervisionato non ha risposte “corrette” con cui confrontare i nostri risultati. Non possiamo calcolare l'accuratezza o la sensibilità. Ma possiamo calcolare una misura di coesione e separazione. Il più comune è a punteggio della sagoma . I punteggi della silhouette variano tra -1 e 1, dove i punteggi più alti sono migliori. un(i) è la distanza media tra un punto dati, e ogni altro punto dati nel suo cluster. Questo misura la coesione, ovvero quanto sono vicini tra loro i punti dati in un cluster. I cluster strettamente uniti avranno piccoli a(i)s .
bi) è la distanza media più piccola tra io e ogni punto in un cluster diverso. Questo misura la separazione, ovvero quanto sono separati i cluster l'uno dall'altro. I cluster ben definiti avranno valori elevati per bi) .
Nel complesso, il punteggio della silhouette per un punto lontano dai punti di altri cluster, ma vicino ai punti del proprio cluster avrà un punteggio della silhouette elevato e positivo. I punti più vicini ai punti di altri cluster che ai punti del proprio cluster avranno punteggi di silhouette piccoli, anche negativi.
Possiamo avere un'idea di quanto "bene" i nostri cluster si adattino ai dati prendendo una media dei punteggi della silhouette per ciascun punto dati. Il punteggio della silhouette per i nostri cluster di clienti (diciamo 10 volte più velocemente...) è 0,614, il che significa che i nostri cluster sono relativamente coesi e separati.
Quando otteniamo punteggi medi di silhouette elevati, crediamo di aver scoperto qualche tipo di struttura latente nei dati. Se i cluster sono simili a se stessi e diversi dagli altri, sembra che questi gruppi siano presenti in natura, non qualcosa che abbiamo imposto ai dati.
Massimizzazione delle aspettative (con miscele di gaussiane)
K-means è un algoritmo relativamente rapido e sporco per il clustering dei dati. È veloce da imparare e spesso veloce da implementare. Ma presenta due potenziali svantaggi: in primo luogo, presuppone la sfericità, il che significa che gli ammassi hanno la forma di sfere multidimensionali. In pratica, ciò significa più o meno che stiamo presupponendo che tutte le nostre caratteristiche abbiano la stessa varianza, il che spesso non è vero. Pensa a raggruppare i gatti in base al numero medio di volte in cui miagolano al giorno e alla loro lunghezza in centimetri. È molto improbabile che queste due cose abbiano la stessa varianza.
Il secondo problema è che k-significa difficile assegnazioni di cluster. Ogni punto appartiene esattamente ad un cluster. A volte, soprattutto attorno ai bordi dei nostri cluster, potremmo voler tenere conto del fatto che un punto potrebbe far parte di uno dei due cluster. Come questo punto qui. Potrebbe essere blu O verde.
Quindi quando pensiamo...o sappiamo...che le nostre diverse caratteristiche non hanno la stessa varianza, o lo desideriamo morbido assegnazioni di cluster, possiamo guardare a una generalizzazione popolare di k-mean: massimizzazione delle aspettative o EM in breve.
La massimizzazione delle aspettative viene spesso implementata con miscele di gaussiane, ovvero distribuzioni normali multidimensionali. Poiché è un po' complicato, chiameremo questa tecnica Miscele normali, perché è così che la chiama JMP. Partiamo dal presupposto che tutti i dati che osserviamo provengano da K distribuzioni normali multidimensionali e vogliamo capire quali sono queste distribuzioni.
Proprio come con le k-medie, le miscele normali utilizzano punti di partenza casuali, ma invece di selezionare solo i centri, sceglie una media e una covarianza casuali per ciascuna delle k distribuzioni. All'inizio potrebbero sembrare un po' stravaganti, ma restate con noi.
Questo è il passo Aspettativa, o E. Quindi, calcoliamo la probabilità che ogni punto appartenga a ciascuna distribuzione. Invece di assegnare a ciascun punto dati un'assegnazione difficile a un cluster, diciamo a cui appartiene ogni cluster con determinate probabilità.
Il prossimo è il passo M. Ricalcoliamo i parametri di distribuzione, proprio come abbiamo calcolato i nuovi centri in medie k. Poiché ogni punto dati appartiene a ogni cluster con una certa probabilità, utilizziamo ogni punto per calcolare i nuovi parametri di distribuzione e ponderarli in base alle rispettive probabilità di far parte di quel gruppo. Un punto che ha solo una probabilità dello 0,01% di appartenere al cluster A non influenzerà molto il calcolo della media e della covarianza del cluster A. Almeno non rispetto a un punto che ha il 75% di probabilità di appartenere al Cluster A.
Se ti piacciono i calcoli, la formula per la nuova media e la covarianza è riportata di seguito.



Queste formule sono più o meno le stesse che usiamo normalmente per calcolare medie e covarianza, ma con l'aggiunta di una che valuta il contributo di un punto dati al calcolo in base alla probabilità che il punto dati appartenga alla distribuzione k-esima.
Una volta che abbiamo i nuovi parametri per ciascuna delle nostre distribuzioni k, eseguiamo nuovamente il passo E e ricalcoliamo la probabilità che ogni punto appartenga a ciascuna distribuzione.
Poi ovviamente arriva il passo M, poi un altro passo E… e così via finché le nostre distribuzioni “convergono”. Ciò significa che con ogni iterazione di un passaggio E e M, NIENTE cambia, o almeno le cose non cambiano troppo. Di solito, esaminiamo la probabilità del log e ci assicuriamo che sia relativamente stabile.
Ora abbiamo la probabilità che ciascun punto dati appartenga a ciascun cluster. Se abbiamo bisogno di assegnazioni di cluster rigide, possiamo semplicemente scegliere che ciascun punto dati appartenga al cluster con la probabilità più alta. Ma la cosa bella dei mercati emergenti è che possiamo abbracciare la confusione dei membri del cluster. Possiamo esaminare un punto dati e considerare il fatto che, sebbene molto probabilmente appartenga al cluster B, è anche molto probabile che appartenga al cluster D. Ciò tiene conto anche del fatto che potrebbero non esserci confini netti tra i nostri cluster. Questi gruppi sono costituiti da distribuzioni multidimensionali sovrapposte, quindi tracciare linee ben definite potrebbe non essere sempre la soluzione migliore.
Clustering in JMP
JMP ha reso il clustering incredibilmente semplice. Tutto quello che devi fare è andare al menu Analizza > Clustering. Sono disponibili entrambe le medie K e EM con miscele di gaussiane (chiamate Miscele normali nel menu).


Seleziona semplicemente uno dei due K-significa O Miscele normali , seleziona le colonne in cui desideri creare il cluster e scegli il numero di cluster che desideri trovare. Clic Andare e avrai il tuo risultato! Se desideri salvare le assegnazioni dei cluster, fai semplicemente clic sul triangolo rosso accanto all'analisi del cluster e scegli Salva cluster !
Per vedere un grafico dei tuoi cluster, fai clic sul triangolo rosso e seleziona Biplot .
Se vuoi provare più k alla volta, aggiungi semplicemente al file Allineare casella nella piattaforma K-means o Normal Mixtures. Il tuo output ora ti mostrerà le informazioni per ogni k! JMP sceglierà per te il k migliore visualizzato sotto il Confronto tra cluster menù.
Per k-means, JMP (come SAS) utilizza il Cubic Cluster Criterion (questo è ciò che CCC sta per), per selezionare quale k si adatta meglio ai tuoi dati. Valori CCC più alti sono migliori e indicano che i cluster si adattano bene ai dati, in modo simile ai punteggi della silhouette. JMP sceglierà il k con il valore CCC più elevato come cluster ottimale. Per ulteriori informazioni su CCC, vedere Qui .

Per le miscele normali, JMP utilizza AICc (criterio informativo di Akaike corretto) e BIC (criterio informativo bayesiano) per scegliere il miglior k. Sia AIC che BIC (come i punteggi silhouette e CCC) misurano quanto bene un modello (i tuoi cluster, qui) si adatta ai dati. Valori AIC e BIC piccoli indicano un buon adattamento del modello, quindi JMP sceglierà il k che fornisce il più basso Valori AIC/BIC (notare che alcuni valori AICc mancano poiché il set di dati è piccolo).
Conclusione
Ora sai come usarlo JMP per raggruppare i dati utilizzando le medie k e i modelli di miscela gaussiana (o miscele normali in JMP)! Pertanto, quando ottieni un set di dati eccezionale senza etichette o dati veritieri, puoi comunque creare alcune informazioni interessanti utilizzando il machine learning senza supervisione.