Importanza fondamentale negli algoritmi di raggruppamento giocano le distanze tra gli oggetti. Ecco alcune funzioni che manipolano le distanze:
dist(x, method="euclidean", diag=NULL, upper=NULL, p=2): calcola la matrice delle distanze data la matrice dei dati (con soli attributi numerici). Resituisce un oggetto di classe dist. Più in dettaglio:
x è una matrice oppure un data-frame;method è una stringa che indica il tipo di misura da usare. Tra le altre, abbiamo euclidean, manhattan, maximum, minkowski e binary;diag indica se visualizzare o no la diagonale nella matrice delle distanze;upper indica se visualizzare o no la parte superiore nella matrice delle distanze;p è l'esponente nella distanze di Minkowski.dist(iris[1:10,-5])
as.dist(m, diag=NULL, upper=NULL): trasforma una matrice numerica m quadrata in una matrice delle distanze. Solo la parte inferiore della matrice viene utilizzata, il resto è ignorato.cmdscale(d,k=2): trasforma una matrice delle distanze in una dei dati col metodo del multidimensional scaling. In pratica, trova la migliore disposizione delle istanze in k dimensioni che miniminna la differenza tra la matrice d e le distanze tra questi punti.?cmdscale.Ecco alcuni metodi di raggruppamento basato sulle partizioni.
kmeans(x,centers,iter.max,nstart=1): applica il metodo k-means.
x: matrice numerica o data-frame con soli attributi numerici;centers: un numero che indica il numero di cluster da trovare, o un vettore con i centri iniziali;iter.max: il numero massimo di iterazioni;nstart: il numeri di volte per cui ripetere l'algoritmo;kmeans contenete i seguenti elementi:
cluster: un vettore indicante, per ogni istanza in x, il cluster a cui appartiene;centers: matrice con i centri dei cluster trovati;withinss: la somma dei quadrati delle distanze dal centro per ogni cluster;size: le dimensioni dei cluster.Vedremo il metodo di partizionamento gerarchico di base fornito da R. In R sono implementati anche gli algoritmi AGNES e DIANA, all'interno del package cluster.
hclust(d, method="complete"): esegue un raggruppamento gerarchico a partire dalla matrice delle distanze d. L'argomento method indica il metodo usato per il calcolo della distanza da cluster: complete è il metodo della distanza massima (chiamato anche complete linkage), single è il metodo della distanza minima (chiamato anche single linkage). Il risultato è una lista di classe hclust (vedere help on-line di hclust per i dettagli).plot.hclust(x): se x è un hclust, visualizza un dendogramma del risultato.cutree(tree, k=NULL, h=NULL): se tree è un hclust, determina un partizionamento in k gruppi diversi. Alternativamente è possibile specificare il parametro h che è l'altezza (distanza tra cluster) a cui tagliare il dendogrammaidentify.hclust(x): se il dendogramma relativo a x è correntemente visualizzato, consente di identificare dei cluster cliccando con il mouse su un punto del grafico. Il risultato sarà, per ogni click, un vettore con i numeri delle istanze che appartengono al cluster selezionato. La selezione termina premendo il tasto destro.Confrontare il risultato sul dataset iris del metodo hmeans e del metodo hclust. Quale è migliore?