Recherche…


Introduction

Le package stats fournit la fonction hclust pour effectuer un clustering hiérarchique.

Remarques

Outre hclust, d'autres méthodes sont disponibles, voir la vue du package CRAN sur le clustering .

Exemple 1 - Utilisation de base de hclust, affichage du dendrogramme, grappes de parcelles

La bibliothèque de grappes contient les données ruspini - un ensemble standard de données pour illustrer l'analyse de grappe.

    library(cluster)                ## to get the ruspini data
    plot(ruspini, asp=1, pch=20)    ## take a look at the data

Données Ruspini

hclust attend une matrice de distance, pas les données d'origine. Nous calculons l’arbre en utilisant les paramètres par défaut et l’affiche. Le paramètre de blocage aligne toutes les feuilles de l'arbre le long de la ligne de base.

    ruspini_hc_defaults <- hclust(dist(ruspini))
    dend <- as.dendrogram(ruspini_hc_defaults)
    if(!require(dendextend)) install.packages("dendextend"); library(dendextend)
    dend <- color_branches(dend, k = 4) 
    plot(dend)

entrer la description de l'image ici

Coupez l'arbre pour donner quatre grappes et répliquez les données en colorant les points par grappe. k est le nombre de grappes souhaité.

    rhc_def_4 = cutree(ruspini_hc_defaults,k=4)
    plot(ruspini, pch=20, asp=1, col=rhc_def_4)

Données Ruspini - premier regroupement

Ce regroupement est un peu étrange. Nous pouvons obtenir un meilleur regroupement en dimensionnant d'abord les données.

    scaled_ruspini_hc_defaults = hclust(dist(scale(ruspini)))
    srhc_def_4 = cutree(scaled_ruspini_hc_defaults,4)
    plot(ruspini, pch=20, asp=1, col=srhc_def_4)

Données Ruspini à l'échelle - en cluster

La mesure de dissimilarité par défaut pour comparer les grappes est "complète". Vous pouvez spécifier une mesure différente avec le paramètre de méthode.

    ruspini_hc_single = hclust(dist(ruspini), method="single")

Exemple 2 - hclust et valeurs aberrantes

Avec la classification hiérarchique, les valeurs aberrantes apparaissent souvent sous forme de clusters à un point.

Générez trois distributions gaussiennes pour illustrer l'effet des valeurs aberrantes.

    set.seed(656)
    x = c(rnorm(150, 0, 1), rnorm(150,9,1), rnorm(150,4.5,1))
    y = c(rnorm(150, 0, 1), rnorm(150,0,1), rnorm(150,5,1))
    XYdf = data.frame(x,y)
    plot(XYdf, pch=20)

Données de test

Construisez la structure du cluster, divisez-la en trois groupes.

    XY_sing = hclust(dist(XYdf), method="single")
    XYs3 = cutree(XY_sing,k=3)
    table(XYs3)
    XYs3
      1   2   3 
    448   1   1 

Hclust a trouvé deux valeurs aberrantes et a mis tout le reste dans un grand cluster. Pour obtenir les "vrais" clusters, vous devrez peut-être définir k plus haut.

    XYs6 = cutree(XY_sing,k=6)
    table(XYs6)
    XYs6
      1   2   3   4   5   6 
    148 150   1 149   1   1 
    plot(XYdf, pch=20, col=XYs6)

Données de test groupées - 3 valeurs aberrantes et 3 grandes grappes

Cette publication de StackOverflow fournit des conseils sur la manière de sélectionner le nombre de clusters, mais prenez en compte ce comportement dans la classification hiérarchique.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow