Condividi tramite


Componente: clustering K-Means

Questo articolo descrive come usare il componente K-Means Clustering in Progettazione Azure Machine Learning per creare un modello di clustering K-means non sottoposto a training.

K-means è uno dei più semplici e i migliori algoritmi di apprendimento non supportati. È possibile usare l'algoritmo per un'ampia gamma di attività di Machine Learning, ad esempio:

  • Rilevamento di dati anomali.
  • Clustering di documenti di testo.
  • Analisi dei set di dati prima di usare altri metodi di classificazione o regressione.

Per creare un modello di clustering, è possibile:

  • Aggiungere questo componente alla pipeline.
  • Connettere un set di dati.
  • Impostare parametri, ad esempio il numero di cluster previsti, la metrica di distanza da usare per creare i cluster e così via.

Dopo aver configurato gli iperparametri del componente, si connette il modello non sottoposto a training al modello di training del clustering. Poiché l'algoritmo K-means è un metodo di apprendimento non eseguito, una colonna di etichetta è facoltativa.

  • Se i dati includono un'etichetta, è possibile usare i valori dell'etichetta per guidare la selezione dei cluster e ottimizzare il modello.

  • Se i dati non hanno etichetta, l'algoritmo crea cluster che rappresentano le categorie possibili, in base solo ai dati.

Comprendere il clustering K-means

In generale, il clustering usa tecniche iterative per raggruppare i casi in un set di dati in cluster che dispongono di caratteristiche simili. Questi raggruppamenti sono utili per esplorare i dati, identificare le anomalie nei dati e infine per effettuare stime. I modelli di clustering consentono anche di identificare le relazioni in un set di dati che potrebbe non derivare logicamente tramite l'esplorazione o la semplice osservazione. Per questi motivi, il clustering viene spesso usato nelle prime fasi delle attività di Machine Learning, per esplorare i dati e individuare correlazioni impreviste.

Quando si configura un modello di clustering usando il metodo K-means, è necessario specificare un numero di destinazione k che indica il numero di centroid desiderati nel modello. Il centroid è un punto rappresentativo di ogni cluster. L'algoritmo K-means assegna ogni punto dati in ingresso a uno dei cluster riducendo al minimo la somma all'interno del cluster di quadrati.

Quando elabora i dati di training, l'algoritmo K-means inizia con un set iniziale di centroidi scelti in modo casuale. I centroid servono come punti di partenza per i cluster e applicano l'algoritmo di Lloyd per perfezionare in modo iterativo le loro posizioni. L'algoritmo K-means arresta la compilazione e l'affinamento dei cluster quando soddisfa una o più di queste condizioni:

  • I centroidi si stabilizzano, significa che le assegnazioni del cluster per i singoli punti non cambiano più e l'algoritmo è convergente su una soluzione.

  • L'algoritmo ha completato l'esecuzione del numero specificato di iterazioni.

Dopo aver completato la fase di training, usare il componente Assegna dati ai cluster per assegnare nuovi casi a uno dei cluster trovati usando l'algoritmo K-means. L'assegnazione del cluster viene eseguita calcolando la distanza tra il nuovo caso e il centroid di ogni cluster. Ogni nuovo caso viene assegnato al cluster con il centroid più vicino.

Configurare il componente clustering K-Means

  1. Aggiungere il componente K-Means Clustering alla pipeline.

  2. Per specificare la modalità di training del modello, selezionare l'opzione Crea modalità di training .

    • Singolo parametro: se si conoscono i parametri esatti da usare nel modello di clustering, è possibile specificare un set specifico di valori come argomenti.
  3. Per Numero di centroid, digitare il numero di cluster che si desidera che l'algoritmo inizi con.

    Il modello non è garantito per produrre esattamente questo numero di cluster. L'algoritmo inizia con questo numero di punti dati e esegue l'iterazione per trovare la configurazione ottimale. È possibile fare riferimento al codice sorgente di sklearn.

  4. Le proprietà Inizializzazione vengono usate per specificare l'algoritmo usato per definire la configurazione iniziale del cluster.

    • Prima N: il numero iniziale di punti dati viene scelto dal set di dati e usato come mezzo iniziale.

      Questo metodo viene chiamato anche il metodo Forgy.

    • Casuale: l'algoritmo inserisce in modo casuale un punto dati in un cluster e quindi calcola la media iniziale come centroid dei punti assegnati casualmente del cluster.

      Questo metodo viene chiamato anche il metodo di partizione casuale .

    • K-Means++: questo è il metodo predefinito per inizializzare i cluster.

      L'algoritmo K-means++ è stato proposto nel 2007 da David Arthur e Sergei Vassilvitskii per evitare il clustering povero dall'algoritmo K-means standard. K-means++ migliora con K-means standard usando un metodo diverso per scegliere i centri cluster iniziali.

  5. Per inizializzazione del numero casuale, digitare facoltativamente un valore da usare come inizializzazione del cluster. Questo valore può avere un effetto significativo sulla selezione del cluster.

  6. Per Metrica scegliere la funzione da usare per misurare la distanza tra vettori del cluster o tra i nuovi punti dati e il centroid scelto in modo casuale. Azure Machine Learning supporta le metriche di distanza del cluster seguenti:

    • Euclidean: la distanza euclidea viene comunemente usata come misura della dispersione del cluster per il clustering K-means. Questa metrica è preferibile perché riduce al minimo la distanza media tra i punti e i centroidi.
  7. Per le iterazioni digitare il numero di volte in cui l'algoritmo deve scorrere i dati di training prima di finalizzare la selezione di centroidi.

    È possibile modificare questo parametro per bilanciare l'accuratezza rispetto al tempo di training.

  8. Per Assegnare la modalità etichetta, scegliere un'opzione che specifica come deve essere gestita una colonna di etichetta, se presente nel set di dati.

    Poiché il clustering K-means è un metodo di Machine Learning non eseguito, le etichette sono facoltative. Tuttavia, se il set di dati dispone già di una colonna etichetta, è possibile usare tali valori per guidare la selezione dei cluster oppure specificare che i valori vengono ignorati.

    • Ignorare la colonna etichetta: i valori nella colonna etichetta vengono ignorati e non vengono usati nella compilazione del modello.

    • Riempimento dei valori mancanti: i valori di colonna etichetta vengono usati come funzionalità per creare i cluster. Se le righe mancano di un'etichetta, il valore viene imputato usando altre funzionalità.

    • Sovrascrivere da vicino al centro: i valori di colonna etichetta vengono sostituiti con valori di etichetta stimati, usando l'etichetta del punto più vicino al centroid corrente.

  9. Selezionare l'opzione Normalizzare le funzionalità se si desidera normalizzare le funzionalità prima del training.

    Se si applica la normalizzazione, prima del training, i punti dati vengono normalizzati [0,1] da MinMaxNormalizer.

  10. Eseguire il training del modello.

    • Se si imposta La modalità di training suSingolo parametro, aggiungere un set di dati con tag e eseguire il training del modello usando il componente Training Clustering Model .

Risultati

Dopo aver completato la configurazione e il training del modello, è possibile usare un modello che è possibile usare per generare punteggi. Esistono tuttavia diversi modi per eseguire il training del modello e più modi per visualizzare e usare i risultati:

Acquisire uno snapshot del modello nell'area di lavoro

Se è stato usato il componente Train Clustering Model :

  1. Selezionare il componente Train Clustering Model (Esegui training del modello di clustering ) e aprire il pannello destro.

  2. Selezionare Scheda Output . Selezionare l'icona Registra set di dati per salvare una copia del modello sottoposto a training.

Il modello salvato rappresenta i dati di training al momento del salvataggio del modello. Se in seguito si aggiornano i dati di training usati nella pipeline, non aggiorna il modello salvato.

Vedere il set di dati dei risultati del clustering

Se è stato usato il componente Train Clustering Model :

  1. Fare clic con il pulsante destro del mouse sul componente Training Clustering Model .

  2. Selezionare Visualize (Visualizza).

Suggerimenti per la generazione del modello di clustering migliore

È noto che il processo di seeding usato durante il clustering può influire significativamente sul modello. Il seeding indica il posizionamento iniziale di punti in potenziali centroidi.

Ad esempio, se il set di dati contiene molti outlier e un outlier viene scelto per inizializzare i cluster, nessun altro punto dati sarebbe adatto a tale cluster e il cluster potrebbe essere un singleton. Vale a dire, potrebbe avere un solo punto.

È possibile evitare questo problema in un paio di modi:

  • Modificare il numero di centroidi e provare più valori di inizializzazione.

  • Creare più modelli, variando la metrica o iterando di più.

In generale, con i modelli di clustering, è possibile che qualsiasi configurazione specificata comporterà un set ottimizzato in locale di cluster. In altre parole, il set di cluster restituiti dal modello si adatta solo ai punti dati correnti e non è generalizzabile ad altri dati. Se si usa una configurazione iniziale diversa, il metodo K-means potrebbe trovare una configurazione diversa, superiore e superiore.

Passaggi successivi

Vedere il set di componenti disponibili per Azure Machine Learning.