What Is Agglomerative Clustering in R?

This post may contain affiliate links. If you click one, I may earn a commission at no cost to you. As an Amazon Associate, I earn from qualifying purchases.

Key Takeaways:

  • Agglomerative clustering is a bottom-up hierarchical clustering algorithm used to group objects into clusters based on similarity.
  • It starts with each object as a separate cluster and successively merges pairs of clusters until all clusters are merged into one.
  • The result is a dendrogram showing the hierarchical relationship between merged clusters.
  • The agnes function in R’s cluster package performs agglomerative clustering based on a dissimilarity matrix.
  • Steps involve computing the dissimilarity matrix, running agnes, and visualizing the dendrogram.
  • Agglomerative clustering in R helps explore the hierarchical structure of data and identify small, tight clusters.


Cluster analysis or clustering involves organizing data points into groups or clusters based on similarity. It is an unsupervised learning technique used extensively across domains for exploratory analysis. Clustering algorithms are categorized as hierarchical or partitional. Hierarchical algorithms build a hierarchy of clusters in a top-down or bottom-up fashion. Agglomerative clustering is a popular bottom-up hierarchical clustering method. But what exactly is agglomerative clustering in R?

This comprehensive guide will analyze the agglomerative clustering technique for grouping data points in R. We will cover what agglomerative clustering is, how it works, its dendrogram output, and the step-by-step process to perform agglomerative clustering using R’s inbuilt libraries. Relevant code examples are provided. Readers will gain an in-depth understanding of this unsupervised clustering approach and how to leverage it for data analysis in R.

Agglomerative clustering is an essential technique for clustering analysis and pattern recognition across fields like bioinformatics, market research, image analysis, and information retrieval. This article will equip readers with the knowledge to utilize agglomerative clustering for identifying meaningful groups and structure in complex datasets using R. The methodology adheres to best practices per clustering research and R documentation. Let’s get started!

What Is Agglomerative Clustering?

Agglomerative clustering, also known as hierarchical agglomerative clustering or AGNES (Agglomerative Nesting), refers to a bottom-up hierarchical clustering method used to group objects into clusters based on similarity or distance between them. It is called agglomerative because it agglomerates or merges objects into groups iteratively.

The algorithm starts by assigning each object as a separate cluster. Proceeding iteratively, it identifies the two most similar or closest pairs of clusters and combines them into a new merged cluster. This process repeats until all objects are grouped into one big cluster. The result is a multilevel hierarchy of clusters, where clusters become larger (more agglomerated) as we move up the hierarchy.

Key attributes that characterize agglomerative clustering include:

  • Bottom-up approach: Starts with individual objects and iteratively merges them into clusters.
  • Hierarchical output: Produces a hierarchy of clusters rather than flat, independent clusters.
  • Does not require the number of clusters to be predefined. The merging process can be stopped at any stage to produce the desired number of clusters.
  • Requires a similarity metric: A distance or similarity metric is essential to determine which clusters should be merged at each step.
  • Uses greedy algorithm: At each step, the locally optimal merge is performed without considering global optimization.

The hierarchical output of agglomerative clustering is commonly represented as a dendrogram. Let’s look at how to interpret dendrograms in more detail.

How to Interpret Dendrograms from Agglomerative Clustering

A dendrogram succinctly summarizes the process and result of hierarchical agglomerative clustering. It visualizes the merging of objects into groups and illustrates the hierarchical relationship between the resulting clusters.

In a dendrogram for agglomerative clustering, the objects or data points are positioned at the leaves or bottom of the hierarchy. Objects placed close together represent clusters with small distances and high similarity. As we move up the dendrogram, clusters get merged iteratively based on similarity. The vertical axis represents the distance or dissimilarity between clusters.

Figure 1. Sample dendrogram showing hierarchical agglomerative clustering of 10 data points into 5 clusters.

Looking at the above dendrogram example for 10 data points:

  • Objects {a,b}, {h,i} and {c,d} are merged first as they have the smallest distances.
  • Progressing up, {a,b} and {c,d} are merged, followed by {e,f},{g}, and {h,i}.
  • Finally {a,b,c,d} merges with {e,f} to form one big cluster.
  • Cutting the dendrogram at a threshold distance of around 6.5 would produce 5 clusters: {a,b,c,d},{e,f},{g},{h,i},{j}.

Dendrograms are a key output of agglomerative clustering in R and allow identifying the number and hierarchy of clusters visually.

How Does Agglomerative Clustering Work in R?

The agnes function in R’s cluster library implements agglomerative hierarchical clustering. Here is an overview of how agnes performs agglomerative clustering:

1. Initialization

Initially each data point is considered as a separate singleton cluster or leaf node in the hierarchy.

2. Iterative merging

The two closest clusters are identified based on the chosen distance metric and merged to form a new cluster. Updating the distances between clusters after each merge is computationally expensive. So agnes uses various linkage criteria to approximate inter-cluster distances:

  • Single linkage: Distance between two clusters is the shortest distance between their members.
  • Complete linkage: Distance is the longest distance between their members.
  • Average linkage: Distance is the average distance between members.
  • Ward’s linkage: Uses variance minimization to determine merge strategy. Tends to produce compact clusters.

3. Stopping criterion

The agglomerative process stops when only a single cluster remains containing all data points. Often, the process can be halted earlier as per application needs.

4. Dendrogram generation

The merging sequence is summarized in a dendrogram, visualizing the hierarchical relationship between the resulting clusters.

By default, agnes uses Euclidean distance and Ward’s linkage but allows customizing distance metrics and linkage criteria. Next, let’s walk through the key steps to perform agglomerative clustering in R.

Step-by-Step Agglomerative Clustering in R

Follow these steps to implement agglomerative hierarchical clustering in R:

Step 1: Install and load the required libraries

install.packages("cluster") library(cluster)

The cluster package contains the agnes function.

Step 2: Prepare the input data

Import the data and transform it into a suitable format for clustering. The data should be in a dataframe or matrix format with observations as rows and features as columns.

data <- read.csv("data.csv")

Step 3: Compute the dissimilarity matrix

Use the dist function to calculate the chosen dissimilarity measure between each pair of observations and store the result in a distance matrix. Common distance metrics used are Euclidean, Manhattan, cosine, etc.

dissimilarity <- dist(data, method="euclidean")

Step 4: Perform agglomerative clustering

Invoke agnes and pass the dissimilarity matrix as input. Optionally specify parameters like linkage type, distance cutoff, etc.

result <- agnes(dissimilarity, method="ward.D2")

Step 5: Visualize the dendrogram

Use the plot function to generate the dendrogram and visualize clustering results. You can also cut the dendrogram at a desired height to extract a partition.

plot(result) abline(h=50, col="red") # Cut at height 50

This covers the key steps to implement agglomerative hierarchical clustering in R. Next, let’s look at some common applications.

Applications of Agglomerative Clustering in R

Here are some examples highlighting the usefulness of agglomerative clustering in R across domains:

  • Customer segmentation: Identify groups of similar customers based on attributes like demographics, behavior, product usage, etc. Useful for targeted marketing campaigns.
  • Document classification: Cluster documents in corpora based on topic similarities. Can help develop document taxonomies.
  • Image segmentation: Segment images into regions/objects based on pixel similarities. Often used as a preprocessing step for image analysis.
  • Bioinformatics: Identify groups in gene expression data. Assists in functional and regulatory network analysis of genes.
  • Anomaly detection: Identify outlier data points in the dendrogram. Outliers merge last or have long branches.
  • Data exploration: Get an overview of natural groupings in unlabeled datasets as an exploratory analysis before other modeling.

Agglomerative clustering in R provides an unsupervised, flexible way to extract meaningful clusters and relationships from complex datasets across domains.

Pros and Cons of Agglomerative Clustering in R

Advantages of agglomerative clustering in R:

  • Does not require specifying the number of clusters a priori. Users can determine the number of clusters based on their requirements.
  • Hierarchical representation allows exploring data at multiple granularities.
  • Works well with small datasets and produces compact, tightly bound clusters.
  • Dendrogram provides an intuitive visualization of clustered data.
  • Flexible in using different similarity and linkage criteria.

Drawbacks to consider:

  • Computational complexity is at least O(n2) making it infeasible for large datasets.
  • Difficult to correct erroneous merges performed in early phases.
  • Single linkage can suffer from chaining effect leading to straggling clusters.
  • Doesn’t intrinsically optimize a global objective function.

Overall, agglomerative clustering is ideal for creating hierarchical clusters from small to medium-sized datasets for exploratory analysis. It produces interpretable dendrograms which reveal natural groupings in data.

Frequently Asked Questions

What is the time complexity of agglomerative clustering?

The time complexity of agglomerative hierarchical clustering is at least O(n2log n), going up to O(n3) in the worst case. This is because the algorithm needs to compute and update the similarity between all pairs of clusters iteratively.

How to determine the optimal number of clusters from a dendrogram?

Common approaches include cutting the dendrogram at a static threshold, analyzing cluster sizes, applying elbow or information criterion methods on the dendrogram, and visually inspecting the dendrogram shape.

Can agglomerative clustering handle high dimensional data?

Yes, agglomerative clustering can work with high dimensional datasets. However, distance concentrations can become an issue. Dimensionality reduction techniques like PCA are often applied as a preprocessing step.

What are the main differences between K-means and agglomerative clustering?

K-means is an iterative descent clustering method producing flat, disjoint clusters. It requires specifying K. Agglomerative clustering is hierarchical, does not need K, but has higher complexity. K-means tries to globally optimize clusters, while agglomerative uses local greedy criterion.

How to handle outliers in agglomerative clustering?

Outliers tend to link late in dendrograms. Analyzing branch lengths helps identify outliers. Removing outliers before clustering improves results. Single linkage is less sensitive to outliers compared to other linkages.


To conclude, agglomerative clustering is an essential bottom-up hierarchical clustering technique implemented in R via the agnes function. It iteratively merges objects into clusters based on a similarity metric to produce a tree-based arrangement. The resulting dendrogram provides a comprehensive visualization of the nested groupings. While relatively inefficicient for large data, agglomerative clustering shines for small datasets, tightly bound clusters, and revealing natural hierarchies. Following the steps elaborated, data scientists can seamlessly leverage agglomerative clustering in R within their analysis pipelines for powerful exploratory analysis and data mining.

About The Author

Scroll to Top