meta_pixel
Tapesearch Logo
Log in
Machine Learning Guide

MLA 011 Practical Clustering Tools

Machine Learning Guide

OCDevel

Artificial, Introduction, Learning, Courses, Technology, Ml, Intelligence, Ai, Machine, Education

4.9848 Ratings

🗓️ 8 November 2020

⏱️ 35 minutes

🧾️ Download transcript

Summary

Primary clustering tools for practical applications include K-means using scikit-learn or Faiss, agglomerative clustering leveraging cosine similarity with scikit-learn, and density-based methods like DBSCAN or HDBSCAN. For determining the optimal number of clusters, silhouette score is generally preferred over inertia-based visual heuristics, and it natively supports pre-computed distance matrices.

Links

K-means Clustering

  • K-means is the most widely used clustering algorithm and is typically the first method to try for general clustering tasks.
  • The scikit-learn KMeans implementation is suitable for small to medium-sized datasets, while Faiss's kmeans is more efficient and accurate for very large datasets.
  • K-means requires the number of clusters to be specified in advance and relies on the Euclidean distance metric, which performs poorly in high-dimensional spaces.
  • When document embeddings have high dimensionality (e.g., 768 dimensions from sentence transformers), K-means becomes less effective due to the limitations of Euclidean distance in such spaces.

Alternatives to K-means for High Dimensions

  • For text embeddings with high dimensionality, agglomerative (hierarchical) clustering methods are preferable, particularly because they allow the use of different similarity metrics.
  • Agglomerative clustering in scikit-learn accepts a pre-computed cosine similarity matrix, which is more appropriate for natural language processing.
  • Constructing the pre-computed distance (or similarity) matrix involves normalizing vectors and computing dot products, which can be efficiently achieved with linear algebra libraries like PyTorch.
  • Hierarchical algorithms do not use inertia in the same way as K-means and instead rely on external metrics, such as silhouette score.
  • Other clustering algorithms exist, including spectral, mean shift, and affinity propagation, which are not covered in this episode.

Semantic Search and Vector Indexing

  • Libraries such as Faiss, Annoy, and HNSWlib provide approximate nearest neighbor search for efficient semantic search on large-scale vector data.
  • These systems create an index of your embeddings to enable rapid similarity search, often with the ability to specify cosine similarity as the metric.
  • Sample code using these libraries with sentence transformers can be found in the UKP Lab sentence-transformers examples directory.

Determining the Optimal Number of Clusters

  • Both K-means and agglomerative clustering require a predefined number of clusters, but this is often unknown beforehand.
  • The "elbow" method involves running the clustering algorithm with varying cluster counts and plotting the inertia (sum of squared distances within clusters) to visually identify the point of diminishing returns; see kmeans.inertia_.
  • The kneed package can automatically detect the "elbow" or "knee" in the inertia plot, eliminating subjective human judgment; sample code available here.
  • The silhouette score, calculated via silhouette_score, considers both inter- and intra-cluster distances and allows for direct selection of the number of clusters with the maximum score.
  • The silhouette score can be computed using a pre-computed distance matrix (such as from cosine similarities), making it well-suited for applications involving non-Euclidean metrics and hierarchical clustering.

Density-Based Clustering: DBSCAN and HDBSCAN

  • DBSCAN is a hierarchical clustering method that does not require specifying the number of clusters, instead discovering clusters based on data density.
  • HDBSCAN is a more popular and versatile implementation of density-based clustering, capable of handling various types of data without significant parameter tuning.
  • DBSCAN and HDBSCAN can be preferable to K-means or agglomerative clustering when automatic determination of cluster count or robustness to noise is important.
  • However, these algorithms may not perform well with all types of high-dimensional embedding data, as illustrated by the challenges faced when clustering 768-dimensional text embeddings.

Summary Recommendations and Links

Transcript

Click on a timestamp to play from that location

0:00.0

You're listening to Machine Learning Applied.

0:02.8

In this episode, we're going to talk about practical clustering tools, per the usual difference

0:08.1

between Machine Learning Guide and Machine Learning Applied.

0:10.7

I won't be talking about any theory about clustering or how these clustering algorithms work.

0:16.0

I'm just going to be talking about some of the Scikit Learn packages and some of the tips and tricks that I've found

0:22.2

useful in actually applying clustering techniques in Nothi. And hopefully in a future

0:28.2

machine learning guide episode, I'll talk about the theory behind some of these tools and

0:33.0

clustering in general, et cetera. Now, the first tool I'm going to talk about is Sykit learn K means.

0:40.9

Everyone knows K means. K means is just the most popular clustering algorithm ever, just ever.

0:48.6

It's everyone uses it 99% of the time if they're clustering, they're using K means.

0:53.8

And in fact, I just recommend trying k-means first.

0:57.1

If you need to cluster your vectors, try k-means.

0:59.8

If it works great.

1:02.0

If not, then you'll move on to basically the other tools we'll talk about in this episode.

1:07.8

How does k-means work kind of generally in practice?

1:11.4

We're not going to talk about theory. I don't want to talk about how these centroids move around and then the points

1:15.9

shift and all these things. I want to talk about in practice, you will be using the Psykitlearn

1:21.6

clustering.kling.kmeans package and you will specify up front a number of clusters. So let's say you have a thousand

1:30.7

vectors. That's your matrix. A thousand by ten, ten being the number of dimensions per

1:37.2

vector in your matrix. Well, you would need to know in advance how many clusters you're going

1:43.3

to be clustering your matrix into. And then what

1:46.1

will happen is you'll say, K means, parentheses, n underscore clusters equals number of clusters. And in

...

Please login to see the full transcript.

Disclaimer: The podcast and artwork embedded on this page are from OCDevel, and are the property of its owner and not affiliated with or endorsed by Tapesearch.

Generated transcripts are the property of OCDevel and are distributed freely under the Fair Use doctrine. Transcripts generated by Tapesearch are not guaranteed to be accurate.

Copyright © Tapesearch 2025.