the strength of their memberships in the various clusters. An object that is clearly
linked to a given cluster has a strong membership value for that cluster and weak
(or null) values for the other clusters. The membership values add up to 1 for each
object. To give an example from sensory evaluation, imagine the difficulty of
applying the two-state descriptor {sweet, bitter} to beers. A beer may be judged
by a panel of tasters to be, say, 30% sweet and 70% bitter. This is an example of a
fuzzy classification of beers for that descriptor.
Fuzzy c-means clustering is implemented in several packages, e.g. cluster
(function fanny()) and e1071 (function cmeans()). The short example below
uses the former.
Function fanny() accepts either site-by-species or dissimilarity matrices. In the
former case, the default metric is euclidean. Here we will directly use as input
the chord distance matrix ‘spe.ch’ previously computed from the fish species data.
An identical result would be obtained by using the chord-transformed species data
‘spe.norm’ with the metric ¼ "euclidean" argument.
The plot function can return two diagrams: an ordination (see Chap. 5) of the
clusters and a silhouette plot. Here we present the latter (Fig. 4.35) and we replace
the original ordination diagram by a principal coordinate analysis (PCoA, see Sect.
5.5) combined with star plots of the objects (Fig. 4.36). Each object is associated
with a small star plot (resembling a little pie chart) whose segment radiuses are
proportional to its membership coefficient.
k <- 4
# Choose the number of clusters
spe.fuz <- fanny(spe.ch, k = k, memb.exp = 1.5)
summary(spe.fuz)
# Site fuzzy membership
spe.fuz$membership
# Nearest crisp clustering
spe.fuz$clustering
spefuz.g <- spe.fuz$clustering
# Silhouette plot
plot(
silhouette(spe.fuz),
main = "Silhouette plot - Fuzzy clustering",
cex.names = 0.8,
col = spe.fuz$silinfo$widths + 1
)
# Ordination of fuzzy clusters (PCoA)
# Step 1: ordination (PCoA) of the fish chord distance matrix
dc.pcoa <- cmdscale(spe.ch)
dc.scores <- scores(dc.pcoa, choices = c(1, 2))
# Step 2: ordination plot of fuzzy clustering result
plot(dc.scores,
asp = 1,
type = "n",
main = "Ordination of fuzzy clusters (PCoA)")
142
4 Cluster Analysis
Précédent

- 155/444

Suivant