CIAO,
Vorrei sapere quale piattaforma di clustering, disponibile in JMP o JMP Pro, è più adatta per identificare i cluster da questi dati a spirale.

Utilizzando HDBSCAN posso identificare correttamente i cluster come illustrato di seguito ma vorrei utilizzare JMP se possibile:

Script della tabella allegato.
Grazie jpol
Ciao @jpol ,
Mi sono imbattuto in questo post e l'ho trovato molto interessante - non ricordo nemmeno cosa stavo cercando, ma questo è stato un post davvero interessante e grazie per il set di dati originale con cui giocare!Ho provato un altro approccio, che potrebbe interessarti. Prima di tutto, ho aggiunto alcune colonne extra nella tabella dei dati e ne ho tolte altre che non mi servivano. Ho aggiunto più dati X e Y, ma con il rumore quindi le spirali non erano così belle (solo per rendere il problema più difficile!
). Ho persino trasformato le coordinate X/Y in coordinate R/theta per testare il clustering e la modellazione, ma ho scoperto che R e theta non hanno migliorato il clustering o la modellazione. In allegato anche la tabella dei dati.
Hai ragione sul fatto che quei punti "anomali" provochino il caos con il metodo di collegamento singolo nel clustering gerarchico, anche durante la standardizzazione dei dati. Penso che sia perché quei punti condividono qualcosa in comune con il resto dei dati e finiscono anche per gonfiare la deviazione standard per i dati all'interno di quella colonna (cioè X o Y). Tuttavia, in JMP 11, hanno aggiunto l'opzione Standardize Robustly che fa risaltare ancora di più gli outlier. Non conosco l'intero algoritmo per questo, ma immagino che JMP probabilmente esegua una sorta di test anomalo T ^ 2, Jackknife o KNN. Infatti, se utilizzi la piattaforma Multivariata ed esegui un test T^2, oppure utilizzi la piattaforma Esplora valori anomali ed esegui un test KNN, puoi vedere che i 5 punti aggiuntivi vengono visualizzati come potenziali valori anomali. L'unico in questione potrebbe essere quello al centro. Puoi vedere i rapporti qui sotto. Vengono inoltre salvati come script nella tabella dati.


In breve, seleziona Standardizza in modo affidabile quando pensi di avere valori anomali, questo ridurrà al minimo l'impatto dei valori anomali quando JMP standardizza i dati. Quando ottieni il dendrogramma, puoi selezionare 8 cluster e la piattaforma Hierarchical Clustering distinguerà correttamente i 5 punti dati aggiuntivi come cluster individuali. Vedere di seguito il rapporto HC di JMP. Puoi vedere che tutti gli ammassi anomali sono allineati su un singolo braccio di costellazione. Non possono essere inseriti nel proprio cluster perché non condividono abbastanza in comune tra loro mentre condividono anche troppo in comune con il resto del set di dati. Devi ancora specificare 8 cluster, altrimenti raggrupperà il punto centrale e l'intera spirale in un cluster e i 4 punti esterni ciascuno nel proprio cluster.

Se avessi una terza dimensione di dati -- diciamo la luminosità della stella (lo dico solo perché è molto simile all'immagine di una galassia) o la coordinata Z, allora potresti aggiungerla ai dati per consentire un altro metodo di distinzione. Se sai in anticipo che sono valori anomali, puoi sempre specificare il numero totale di cluster - 8 in questo caso - e il clustering gerarchico li seleziona bene (quando si standardizza in modo robusto). Se i punti in questione sono cose come fiducial per contrassegnare posizioni specifiche su una lastra fotografica o layout di transistor su un wafer di Si, allora questi possono essere rimossi dal set di dati all'inizio. Ma questa è una conoscenza a priori che devi in qualche modo includere nei dati.
Ho deciso di giocarci ancora un po' e vedere se un algoritmo di macchina potesse individuare i cluster. Tra i metodi disponibili in JMP Pro, penso che Support Vector Machines potrebbe essere il migliore poiché richiede input numerici per ricavare output di classificazione. Questo set di dati è essenzialmente un problema di classificazione. Stai cercando di distinguere ciascun braccio della spirale dagli altri bracci.
Utilizzando i cluster dalla piattaforma di clustering gerarchico come output per modellare con gli input X e Y per la piattaforma Support Vector Machine in JMP Pro, sono stato in grado di modellare perfettamente i diversi cluster. Non sapendo quali parametri esatti utilizzare nel modello, ho eseguito un progetto di ottimizzazione con 40 esecuzioni e, sicuramente, la piattaforma SVM è stata in grado di individuare gli 8 cluster. La tabella di contingenza dei cluster rispetto ai cluster previsti contiene 0 classificazioni errate. *Aggiornamento*: ho dimenticato di menzionare che ho utilizzato anche il 50% dei dati come set di convalida durante l'addestramento del modello SVM.
Ecco l'output del rapporto SVM. Puoi vedere che ogni braccio è identificato in modo univoco così come i 5 valori anomali aggiuntivi.

Confrontando i dati colorati con il metodo HC e SVM, vediamo che sono essenzialmente identici. (Ho cambiato il tipo di marcatore per i valori anomali in * quindi era più facile da vedere).


E la tabella delle contingenze mostra 0 classificazioni errate.

Questo è stato un set di dati davvero interessante con cui giocare e ti ringrazio per aver postato questa domanda. Ancora una volta, non ricordo nemmeno cosa stavo cercando inizialmente, ma ho trovato questo fantastico. Potrei provare alcune delle altre piattaforme e vedere come se la cavano nel modellare/classificare questi dati. Grazie!
Spero che aiuti!,
DS
**Aggiornamento 2**:
Quindi, sono tornato indietro e ho testato l'adattamento di questo set di dati utilizzando alcune delle altre piattaforme di modellazione predittiva in JMP e le uniche altre due che si sono avvicinate sono state le piattaforme dell'albero decisionale e della foresta di bootstrap. Anche in questo caso, nessuno dei due si comporta bene come il modello SVM. Entrambi hanno selezionato solo 3 cluster durante la modellazione, i cluster sono quasi gli stessi, ma non del tutto. Quindi, in effetti, SVM sembra essere la scelta migliore.


Ho anche provato la nuova piattaforma XGBoost, che non funziona molto bene, sorprendentemente. Ho provato diverse opzioni di adattamento, ma potrei non averlo ottimizzato come potrebbe essere, poiché ci sono molti parametri di ottimizzazione diversi. Il meglio che ha fatto è stato classificare i 3 bracci della spirale e solo un valore anomalo, il resto è stato classificato erroneamente. Quindi, alla fine, il clustering HC per ottenere l'output e la modellazione SVM per modellare l'output per potenziali spirali sconosciute è probabilmente il migliore. Molto divertente!
Non sono l'esperto qui; Mi rimetto agli altri. La mia ipotesi sarebbe un passaggio separato per scoprire punti non più lontani della media da altri punti, ma fallirebbe se ci fossero due valori anomali uno accanto all'altro, quindi il loro gruppo di due dovrebbe essere testato ... forse l'HDBSCAN sta facendo qualcosa del genere.
Puoi condividere che tipo di processo produce i cluster a spirale?
Grazie Craig per aver indicato il metodo corretto e il link dell'articolo.
Il metodo Single Link funziona molto bene su questo set di dati relativamente pulito.
Lo script della tabella che ho fornito sopra include uno script per aggiungere qualche altra riga di dati, "Aggiungi righe".
Questi dovrebbero essere considerati come valori anomali, o almeno essere identificati come non appartenenti a nessuno dei tre cluster principali. Qualcosa come il cluster "-1" in HDBSCAN.
L'aggiunta di questi punti extra sembra creare scompiglio con il metodo di collegamento singolo (quando si cercano 3 o 4 cluster).
Qualche idea su come evitare questo?


- Filippo
Collegamento singolo. Dovrai sapere quanti cluster vuoi, 3 per esempio, o spezzerà i bracci a spirale in più.
Hierarchical Cluster(
Y( :X, :Y ),
Method( "Single" ),
Standardize Data( 1 ),
Color Clusters( 1 ),
Dendrogram Scale( "Distance Scale" ),
Number of Clusters( 3 )
)
Dendrogram with cluster colorsDendrogram with cluster colorsDendrogram with cluster colorsDendrogramma con colori a grappolo
Graph with cluster colorsGraph with cluster colorsGraph with cluster colors Grafico con colori cluster
Penso che questo articolo possa essere d'aiuto, ho letto quanto basta per vederlo menzionato "catena".
https://stats.stackexchange.com/questions/195446/choosing-the-right-linkage-method-for-hierarchical-clustering