---
kind: concept
slug: ensemble-clustering
title: Ensemble clustering
summary: >-
  Ensemble clustering fuses several base clusterings, each built from a randomised part of the data, into one consensus partition. FastMICE does this for multi-view data with anchor-based bipartite graphs. Author-reported: top average NMI rank on 22 datasets and near-linear cost. Trade-offs: the cluster count k must be given, and runs are random and not reproducible in the official code.
tags: [clustering, ensemble-clustering, multi-view-clustering, anchor-graph, large-scale-clustering]
papers: ["2203.11572"]
related: []
status: draft
updated_at: 2026-10-18
---

## Overview

Ensemble clustering builds several base clusterings and combines them into one.
The diversity comes from randomness: each base clustering sees a different
random slice of the data, and a consensus step merges the results
[arxiv:2203.11572 §3.2] [arxiv:2203.11572 §3.5].

One card on wikillm lists this slug so far: [FastMICE](/papers/2203.11572), which
targets multi-view data, where each sample is described by several feature sets
called views [arxiv:2203.11572 §1]. Everything below is taken from that paper and
its reported results. This page therefore describes one method, not the field.

The paper's pipeline has four stages [arxiv:2203.11572 §3]:

- **Diversity source.** Random view groups, random feature columns, random
  anchors, random neighbour sets and a random cluster count per base clustering
  [arxiv:2203.11572 §3.2] [arxiv:2203.11572 §3.3] [arxiv:2203.11572 §3.4].
- **Base clusterer.** Each group builds one anchor-based bipartite graph over
  the samples, which is partitioned with the transfer cut
  [arxiv:2203.11572 §3.3] [arxiv:2203.11572 §3.4].
- **Consensus.** All base labels are stacked into one binary membership matrix,
  with one 1 per base clustering per sample, and partitioned again
  [arxiv:2203.11572 §3.5].

The paper presents early fusion (all views in one group) and late fusion (one
view per group) as the two extremes of the grouping step
[arxiv:2203.11572 §3.2].

## Variants

### Random view groups with anchor graphs (FastMICE)

Card: [Fast Multi-view Clustering via Ensembles](/papers/2203.11572).

- **Ensemble size.** M = 20 view groups, each giving one base clustering
  [arxiv:2203.11572 §4.2]. The authors report that a larger M helps
  [arxiv:2203.11572 §4.4] [fig. 3].
- **Anchor budget.** Each group shares a total of about p anchors (p = min{1000, N}
  in the experiments) and about K nearest anchors per sample (K = 5). Each view
  in a group gets an equal share, rounded up [arxiv:2203.11572 §3.3]
  [arxiv:2203.11572 §4.2]. The authors report that a moderate K, in the range
  [4, 8], works best on most datasets [arxiv:2203.11572 §4.6] [fig. 5].
- **Base partition.** The cluster count of each base clustering is drawn
  between k and 2k [arxiv:2203.11572 §4.2]. The transfer cut solves a small
  eigenproblem on the anchors, lifts the result to the samples, and then runs
  k-means [arxiv:2203.11572 §3.4].
- **Cost.** The text gives a near-linear cost in N under the assumption that
  the anchor count is much smaller than N and the other sizes are smaller
  still. It drops the cubic terms in the anchor count and in the total number
  of base clusters [arxiv:2203.11572 §3.6.1].
- **Reported results.** Average NMI rank 1.23 over 22 datasets, where the
  next best method scores 4.41. FastMICE has the highest NMI on 19 of 22
  [arxiv:2203.11572 tab. 3] [arxiv:2203.11572 §4.3]. On the YTF-200 dataset
  (286,006 samples) it runs in 263.81 s, against 3,184.79 s for the fastest
  other method that finished there [arxiv:2203.11572 tab. 7]. On YTF-400
  (398,191 samples) it is the only method that completes
  [arxiv:2203.11572 tab. 7].
- **Tuning.** The method uses the same M, p and K on every dataset. The user
  still supplies k, and picks the distance (Euclidean, or cosine for text)
  [arxiv:2203.11572 §4.2]. Baselines were tuned with a grid of 10⁻⁵ to 10⁵ per
  hyperparameter, on a random subset when N exceeds 10,000
  [arxiv:2203.11572 §4.2].

## When to use which

| Situation | Use | Why |
|---|---|---|
| Multi-view data with hundreds of thousands of samples and a modest machine (the authors used a 16 GB RAM CPU) | An anchor-based ensemble such as FastMICE | It is the only method in the study that finished YTF-400 [arxiv:2203.11572 tab. 7] [arxiv:2203.11572 §4] |
| Multi-view data where you can afford a per-dataset grid search and the set is small | Also test a dense baseline | The baselines are close or better on some sets. MVEC has the best NMI on BBCSport (90.57 against 88.95) and BMVC on Movies (29.07 against 28.59) [arxiv:2203.11572 tab. 3]. Tuning is costly: M²VEC needed 117,688 s to tune on NH-550 [arxiv:2203.11572 tab. 7] |
| Several datasets with different sizes and no time for tuning | A method with fixed defaults | The paper's claim is that FastMICE needs no per-dataset tuning, beyond k and the distance [arxiv:2203.11572 §4.2] |
| Text features | Cosine distance | The paper uses cosine for Movies, BBCSport and Citeseer [arxiv:2203.11572 §4.2] |
| Results must be repeatable | Fix seeds yourself and average several runs | Some entries have standard deviations of 5 or more NMI points [arxiv:2203.11572 tab. 3], and the paper averages 20 runs [arxiv:2203.11572 tab. 3]. The official code is not reproducible as released (see Contradictions) |
| Single-view data | Not covered here | The only card for this slug targets multi-view data, and its grouping step is defined over views [arxiv:2203.11572 §3.2] |

Sensitivity results are only described in the text, not given as numbers
[arxiv:2203.11572 §4.4] [arxiv:2203.11572 §4.5] [arxiv:2203.11572 §4.6]. Do not
read values from the sensitivity figures into your settings without checking
the source.

## Implementation sketch

Language-agnostic pseudocode of the FastMICE core. The paper has no algorithm
box, so this is our summary of its text [arxiv:2203.11572 §3].

```pseudocode
# Ensemble clustering, FastMICE-style  [arxiv:2203.11572 §3]
# Input:  views (V matrices, N rows each), k; M, p, K
# Output: labels (N,) in 0..k-1

def ensemble_cluster(views, k, M=20, p=1000, K=5):
    base = []
    for m in range(M):
        # Random non-empty group of views  [arxiv:2203.11572 §3.2]
        group = random_subset(views)
        # The group shares p and K across its members  [arxiv:2203.11572 §3.3]
        p_bar = ceil(p / len(group))
        K_bar = ceil(K / len(group))
        blocks = []
        for v in group:
            # Keep a random share of the columns, here 20 to 80 percent  [§4.2]
            X = random_columns(views[v], random_ratio(0.2, 0.8))
            # p_bar representatives of X  [arxiv:2203.11572 §3.3]
            anchors = pick_representatives(X, p_bar)
            # Gaussian weights to the K_bar nearest anchors, zero elsewhere  [§3.3]
            blocks.append(sparse_gaussian_graph(X, anchors, K_bar))
        # Unit-norm rows, concatenated across the group  [arxiv:2203.11572 §3.3]
        B_m = concat_rows_normalised(blocks)
        # Random cluster count between k and 2k  [arxiv:2203.11572 §4.2]
        base.append(transfer_cut(B_m, random_int(k, 2 * k)))
    # Stack the base labels and partition the union graph  [arxiv:2203.11572 §3.5]
    return transfer_cut(one_hot_union(base), k)
```

Where `transfer_cut(B, k)` solves an eigenproblem on the anchor graph, lifts
the eigenvectors back to the samples and runs k-means on them
[arxiv:2203.11572 §3.4]. Where implementations differ: the scaling of the
lifted embedding and the row normalisation before k-means are described under
Contradictions.

## Contradictions

No cross-paper disagreement: only one card lists this slug. Within the paper,
the text and the official code differ, and some reported numbers are not
explained.

- **Embedding scale and normalisation.** The text divides the lifted embedding
  by (1 − λ) [arxiv:2203.11572 §3.4] [arxiv:2203.11572 eq. 11]. The official code
  does not apply that division, and it normalises each row to unit length before
  k-means with cosine distance [arxiv:2203.11572 §3.4]. The paper does not
  mention row normalisation. Our card notes that the effect on partitions has
  not been measured.
- **Gaussian bandwidth.** The paper gives no bandwidth [arxiv:2203.11572 §3.3].
  The code uses the mean distance to the K̄ nearest anchors for Euclidean data,
  and 1 − distance for cosine data [arxiv:2203.11572 §3.3].
- **Random draws.** The text says "randomly chosen" for view members, feature
  ratios and cluster counts, and does not state the distributions
  [arxiv:2203.11572 §3.2] [arxiv:2203.11572 §3.3] [arxiv:2203.11572 §3.4]. The
  code draws them uniformly.
- **Reproducibility.** The paper states no seed. The official code reseeds from
  the clock before each random step, so reruns differ
  [arxiv:2203.11572 §4.2].
- **Baseline variance.** The captions say each value is an average over 20 runs,
  yet many baseline cells show a standard deviation of exactly 0.00. The paper
  does not explain this [arxiv:2203.11572 tab. 3].
- **Dataset count.** Parts of the text say 20 datasets, while the tables and
  dataset list give 22 [arxiv:2203.11572 §4.3] [arxiv:2203.11572 tab. 2].

## Papers

- [Fast Multi-view Clustering via Ensembles: Towards Scalability, Superiority, and Simplicity](/papers/2203.11572): FastMICE, which fuses random view groups, each turned into an anchor-based bipartite graph, through a consensus step. Author-reported results only.
