Componente: Clustering K-Means

Questo articolo descrive come usare il componente K-Means Clustering nella finestra di progettazione di Azure Machine Learning per creare un modello di clustering K-means senza training.

K-means è uno degli algoritmi di apprendimento non supervisionati più semplici e più noti. È 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, è necessario:

  • 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 la creazione dei 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 supervisionato, una colonna 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 etichette, l'algoritmo crea cluster che rappresentano le categorie possibili, in base esclusivamente ai dati.

Informazioni sul clustering K-means

In generale, il clustering usa tecniche iterative per raggruppare i casi in un set di dati in cluster che possiedono caratteristiche simili. Questi raggruppamenti sono utili per esplorare i dati, identificare le anomalie nei dati e infine per eseguire 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 fasi iniziali 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 centroidi desiderati nel modello. Il centroide è 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 centroidi fungono da punti di partenza per i cluster e applicano l'algoritmo di Lloyd per perfezionare in modo iterativo le loro posizioni. L'algoritmo K-means interrompe la compilazione e l'affinamento dei cluster quando soddisfa una o più di queste condizioni:

  • I centroidi si stabilizzano, ovvero 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 case a uno dei cluster trovati usando l'algoritmo K-means. L'assegnazione del cluster viene eseguita calcolando la distanza tra il nuovo case e il centroid di ogni cluster. Ogni nuovo caso viene assegnato al cluster con il centroide più vicino.

Configurare il componente clustering K-Means

  1. Aggiungere il componente clustering K-Means 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 centroidi digitare il numero di cluster da cui iniziare l'algoritmo.

    Il modello non garantisce che producano 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.

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

      Questo metodo viene chiamato anche metodo Forgy.

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

      Questo metodo è detto anche metodo di partizione casuale.

    • K-Means++: metodo predefinito per l'inizializzazione dei cluster.

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

  5. Per Valore di inizializzazione numero casuale, digitare facoltativamente un valore da usare come valore di inizializzazione per l'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 i vettori del cluster o tra i nuovi punti dati e il centroide 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 dei centroidi.

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

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

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

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

    • Compilare i valori mancanti: i valori delle colonne di etichetta vengono usati come funzionalità per creare i cluster. Se manca un'etichetta, il valore viene imputato usando altre funzionalità.

    • Sovrascrittura dal centro più vicino al centro: i valori della colonna etichetta vengono sostituiti con valori di etichetta stimati, usando l'etichetta del punto più vicino al centroide corrente.

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

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

  10. Eseguire il training del modello.

    • Se si imposta Create trainer mode (Crea modalità trainer) su Single Parameter (Parametro singolo), aggiungere un set di dati con tag ed eseguire il training del modello usando il componente Train Clustering Model (Esegui training del modello di clustering).

Risultati

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

Acquisire uno snapshot del modello nell'area di lavoro

Se è stato usato il componente Train Clustering Model :If you used the Train Clustering Model component:

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

  2. Selezionare la 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 un secondo momento si aggiornano i dati di training usati nella pipeline, non aggiorna il modello salvato.

Visualizzare il set di dati dei risultati del clustering

Se è stato usato il componente Train Clustering Model :If you used the Train Clustering Model component:

  1. Fare clic con il pulsante destro del mouse sul componente Train Clustering Model (Esegui training del modello di clustering).

  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 la posizione iniziale dei punti in potenziali centroidi.

Ad esempio, se il set di dati contiene molti outlier e viene scelto un outlier per eseguire il seeding dei cluster, nessun altro punto dati si adatta a tale cluster e il cluster potrebbe essere un singleton. In questo caso, potrebbe avere un solo punto.

È possibile evitare questo problema in due 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 provocherà un set di cluster ottimizzato in locale. In altre parole, il set di cluster restituiti dal modello è adatto 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.