{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# How HDBSCAN Works\n", "\n", "HDBSCAN is a clustering algorithm developed by [Campello, Moulavi, and Sander](http://link.springer.com/chapter/10.1007%2F978-3-642-37456-2_14). It extends DBSCAN by converting it into a hierarchical clustering algorithm, and then using a technique to extract a flat clustering based in the stability of clusters. The goal of this notebook is to give you an overview of how the algorithm works and the motivations behind it. In contrast to the HDBSCAN paper I'm going to describe it without reference to DBSCAN. Instead I'm going to explain how I like to think about the algorithm, which aligns more closely with [Robust Single Linkage](http://cseweb.ucsd.edu/~dasgupta/papers/tree.pdf) with [flat cluster extraction](http://link.springer.com/article/10.1007%2Fs10618-013-0311-4) on top of it.\n", "\n", "Before we get started we'll load up most of the libraries we'll need in the background, and set up our plotting (because I believe the best way to understand what is going on is to actually see it working in pictures)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import sklearn.datasets as data\n", "%matplotlib inline\n", "sns.set_context('poster')\n", "sns.set_style('white')\n", "sns.set_color_codes()\n", "plot_kwds = {'alpha' : 0.5, 's' : 80, 'linewidths':0}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next thing we'll need is some data. To make for an illustrative example we'll need the data size to be fairly small so we can see what is going on. It will also be useful to have several clusters, preferably of different kinds. Fortunately sklearn has facilities for generating sample clustering data so I'll make use of that and make a dataset of one hundred data points." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "moons, _ = data.make_moons(n_samples=50, noise=0.05)\n", "blobs, _ = data.make_blobs(n_samples=50, centers=[(-0.75,2.25), (1.0, 2.0)], cluster_std=0.25)\n", "test_data = np.vstack([moons, blobs])\n", "plt.scatter(test_data.T[0], test_data.T[1], color='b', **plot_kwds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, the best way to explain HDBSCAN is actually just use it and then go through the steps that occurred along the way teasing out what is happening at each step. So let's load up the [hdbscan library](https://github.com/lmcinnes/hdbscan) and get to work." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import hdbscan" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "HDBSCAN(alpha=1.0, gen_min_span_tree=True, metric='euclidean',\n", " min_cluster_size=5, min_samples=None, p=None)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clusterer = hdbscan.HDBSCAN(min_cluster_size=5, gen_min_span_tree=True)\n", "clusterer.fit(test_data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So now that we have clustered the data -- what actually happened? We can break it out into a series of steps\n", "\n", "1. Transform the space according to the density/sparsity.\n", "2. Build the minimum spanning tree of the distance weighted graph.\n", "3. Construct a cluster hierarchy of connected components.\n", "4. Condense the cluster hierarchy based on minimum cluster size.\n", "5. Extract the stable clusters from the condensed tree." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Transform the space\n", "\n", "To find clusters we want to find the islands of higher density amid a sea of sparser noise -- and the assumption of noise is important: real data is messy and has outliers, corrupt data, and noise. The core of the clustering algorithm is single linkage clustering, and it can be quite sensitive to noise: a single noise data point in the wrong place can act as a bridge between islands, gluing them together. Obviously we want our algorithm to be robust against noise so we need to find a way to help 'lower the sea level' before running a single linkage algorithm.\n", "\n", "How can we characterize 'sea' and 'land' without doing a clustering? As long as we can get an estimate of density we can consider lower density points as the 'sea'. The goal here is not to perfectly distinguish 'sea' from 'land' -- this is an initial step in clustering, not the ouput -- just to make our clustering core a little more robust to noise. So given an identification of 'sea' we want to lower the sea level. For practical purposes that means making 'sea' points more distant from each other and from the 'land'.\n", "\n", "That's just the intuition however. How does it work in practice? We need a very inexpensive estimate of density, and the simplest is the distance to the *k*th nearest neighbor. If we have the distance matrix for our data (which we will need imminently anyway) we can simply read that off; alternatively if our metric is supported (and dimension is low) this is the sort of query that [kd-trees](http://scikit-learn.org/stable/modules/neighbors.html#k-d-tree) are good for. Let's formalise this and (following the DBSCAN, LOF, and HDBSCAN literature) call it the **core distance** defined for parameter *k* for a point *x* and denote as $\\mathrm{core}_k(x)$. Now we need a way to spread apart points with low density (correspondingly high core distance). The simple way to do this is to define a new distance metric between points which we will call (again following the literature) the **mutual reachability distance**. We define mutual reachability distance as follows:\n", "\n", "
$d_{\\mathrm{mreach-}k}(a,b) = \\max \\{\\mathrm{core}_k(a), \\mathrm{core}_k(b), d(a,b) \\}$
\n", "\n", "where $d(a,b)$ is the original metric distance between *a* and *b*. Under this metric dense points (with low core distance) remain the same distance from each other but sparser points are pushed away to be at least their core distance away from any other point. This effectively 'lowers the sea level' spreading sparse 'sea' points out, while leaving 'land' untouched. The caveat here is that obviously this is dependent upon the choice of *k*; larger *k* values interpret more points as being in the 'sea'. All of this is a little easier to understand with a picture, so let's use a *k* value of five. Then for a given point we can draw a circle for the core distance as the circle that touches the fifth nearest neighbor, like so:\n", "\n", "\"Diagram\n", "\n", "Pick another point and we can do the same thing, this time with a different set of neighbors (one of them even being the first point we picked out).\n", "\n", "\"Diagram\n", "\n", "And we can do that a third time for good measure, with another set of five nearest neighbors and another circle with slightly different radius again.\n", "\n", "\"Diagram\n", "\n", "Now if we want to know the mutual reachabiility distance between the blue and green points we can start by draing in and arrow giving the distance between green and blue:\n", "\n", "\"Diagram\n", "\n", "This passes through the blue circle, but not the green circle -- the core distance for green is larger than the distance between blue and green. Thus we need to mark the mutual reachability distance between blue and green as larger -- equal to the radius of the green circle (easiest to picture if we base one end at the green point).\n", "\n", "\"Diagram\n", "\n", "On the other hand the mutual reachablity distance from red to green is simply distance from red to green since that distance is greater than either core distance (i.e. the distance arrow passes through both circles).\n", "\n", "\"Diagram\n", "\n", "In general there is [underlying theory](http://arxiv.org/pdf/1506.06422v2.pdf) to demonstrate that mutual reachability distance as a transform works well in allowing single linkage clustering to more closely approximate the hierarchy of level sets of whatever true density distribution our points were sampled from." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Build the minimum spanning tree\n", "\n", "Now that we have a new mutual reachability metric on the data we want start finding the islands on dense data. Of course dense areas are relative, and different islands may have different densities. Conceptually what we will do is the following: consider the data as a weighted graph with the data points as vertices and an edge between any two points with weight equal to the mutual reachability distance of those points.\n", "\n", "Now consider a threshold value, starting high, and steadily being lowered. Drop any edges with weight above that threshold. As we drop edges we will start to disconnect the graph into connected components. Eventually we will have a hierarchy of connected components (from completely connected to completely disconnected) at varying threshold levels.\n", "\n", "In practice this is very expensive: there are $n^2$ edges and we don't want to have to run a connected components algorithm that many times. The right thing to do is to find a minimal set of edges such that dropping any edge from the set causes a disconnection of components. But we need more, we need this set to be such that there is no lower weight edge that could connect the components. Fortunately graph theory furnishes us with just such a thing: the minimum spanning tree of the graph.\n", "\n", "We can build the minimum spanning tree very efficiently via [Prim's algorithm](https://en.wikipedia.org/wiki/Prim%27s_algorithm) -- we build the tree one edge at a time, always adding the lowest weight edge that connects the current tree to a vertex not yet in the tree. You can see the tree HDBSCAN constructed below; note that this is the minimum spanning tree for *mutual reachability distance* which is different from the pure distance in the graph. In this case we had a *k* value of 5." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nJBNRwltSwisiIiIivZb/+Ah9u6JJeCtzSnhFREREpMeW35okO12KZu2lhUjWjTsVvCIiIiIxkv/E\ncIQJ70wk68adCl4RERGRGFmeKJK5EE0PrxJeEREREem5nBLerlPBKyIiIhIjpYki6YgS3pISXhER\nERHptfzRYQoRJbxVJbwiIiIi0mvL40UyBfXwdpMKXhEREZEYUcLbfSp4RURERGJkabxIqi+ahHep\npIRXRERERHqs7+gw/RElvDUlvCIiIiLSa6WJIukPI5rSoIRXRERERHpNCW/3qeAVERERiZGls+rh\n7TYVvCIiIiIx0jeqhLfbVPCKiIiIxMjS+CSpvlI0ayvhFREREZFeK4yOMBBRwltXwisiIiIivbb4\n5iR+RAnvohJeEREREek5a7HWRrb27UgFr4iIiEiMFMZGGIyopaGhlgYRERER6bXFNyfx1NLQVSp4\nRURERGKk8EklvN123YK33W4DcOHChR27GREREZGddKnOuVT3xMHs4vxNuXacXbfgnZ2dBeCrX/3q\njt2MiIiISC/Mzs4yMjLS69sA4In/+e9e38Itx9jrbAOs1+u88cYb7N69m2QyudP3JSIiIhK5drvN\n7Owsd999N6lUqqf30mq1duwn6/v27cNxbp/O1usWvCIiIiIit4JEr29ARERERCRKKnhFRERE5Jam\ngldEREREbmkqeEVERETklvb/AkiGdv5+2wUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clusterer.minimum_spanning_tree_.plot(edge_cmap='Spectral', edge_linewidth=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Build the cluster hierarchy\n", "\n", "Given the minimal spanning tree, the next step is to convert that into the hierarchy of connected components. This is most easily done in the reverse order: sort the edges of the tree by distance (in increasing order) and then iterate through, creating a new merged cluster for each edge. The only difficult part here is to identify the two clusters each edge will join together, but this is easy enough via a [union-find](https://en.wikipedia.org/wiki/Disjoint-set_data_structure) data structure. We can view the result as a dendrogram as we see below:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nS5c22v/111+Pr371q3HOOefEWWedFdddd11s27atlaoFAIDOK9PwsGDBgpg9e3bccMMNsWTJkrj8\n8stjxowZsXLlykM+c/3118eWLVvikUceicceeyz27t0b06ZNi9ra2lasHAAAOp/8rN64trY25s6d\nG1dccUWUlpZGRMTAgQOjrKws5s6dG6NHj27wzC9+8YvYsGFD/PznP48TTjghIiL+8R//MV566aX4\n05/+FMcee2yrfgYAAOhMMht52LhxY1RXV8e5555br33kyJGxdu3a2LdvX4Nnnn/++SguLq4LDhER\n/fr1iwsvvFBwAACAFpZZeNiyZUtERBQUFNRrLywsjP379x90HUNlZWUMGDAgHnzwwfj4xz8eI0eO\njC996Uvx2muvtUrNAADQmWUWHvbu3RsREd27d6/XfuB6z549DZ559dVX4+mnn47KysqYPXt2zJw5\nM8rLy+Oqq66Kd955p+WLBgCATiyzNQ9H4u233473ve998Z3vfCfy8vLiwx/+cLzvfe+LqVOnxsqV\nK+NjH/tY1iUCAECHldnIQ8+ePSOi4QjDgesePXo0eKZHjx5x2mmnRV5eXl3bWWedFXl5efHyyy+3\nYLUAAEBm4WHAgAEREbF169Z67Zs3b478/Pzo37//QZ/5f//v/9Vr279/f9TW1h40bAAAAM0ns2lL\nRUVFUVhYGC+88EKMHTu2rn3FihUxatSo6Nq1a4NnzjvvvPjGN74Ru3fvrttxaf369RERcdppp7VO\n4QBAu/LII4/Erl27YtWqVZHL5ZKf27RpU4ONXd6ruLg4Ro0aFSeccEJ88pOfPNpSoc3LdM3D9OnT\n4/bbb49hw4bF8OHDY+nSpbFmzZpYsGBBRETMmjUrXnrppXj44YcjIuLiiy+Ohx56KD7/+c/HHXfc\nEa+++mp8/etfj7PPPjvOOuusLD8KANBGPfroo1FRUVF3fcYZZ8Szzz57VK85evTo2LRpU+Ryucjl\nclFUVCQ80ClkGh5KS0ujpqYm5syZE1VVVVFUVBQPPPBADB06NCIidu3aFdu3b6/rf+yxx8a8efPi\n7rvvjr//+7+PLl26xAUXXBC33XZbVh8BAAA6jcx3W5o0aVJMmjTpoPfuueeeBm19+/aNOXPmtHRZ\nAADAe2S2YBoAAGhfhAcAACCJ8AAAACQRHgAAgCTCAwAAkER4AAAAkggPAABAEuEBAABIIjwAAABJ\nhAcAACCJ8AAAACQRHgAAgCT5qR13794dCxYsiP/6r/+K6urquPfee+PUU0+NtWvXxvHHHx+nn356\nS9YJAABkLGnkYevWrXHxxRfH97///aiuro6XX345/vSnP0VExL/+67/GFVdcERs2bGjRQgEAgGwl\nhYd/+qd/il69esXTTz8dTz75ZL17X/va1+Kss86K+++/v0UKBAAA2oak8PDiiy/G9OnTo7CwsMG9\n/Pz8uPrqq+M///M/m704AACg7UgKDzU1NdG7d+9D3u/WrVu8/fbbzVYUAADQ9iSFh6Kionj66acP\nef/HP/5xfPCDH2y2ogAAgLYnabelq6++Om6//fbYvXt3XHjhhRERsXbt2tiwYUMsWbIk1qxZEzNn\nzmzRQgEAgGwlhYfLLrss9u7dGw888EAsW7YsIiLuuuuuiIh4//vfH1/5ylfikksuabkqAQCAzCWf\n8zBlypSYOHFibNiwIaqqqiIiom/fvjF48OA49thjW6xAAACgbUgODxER1dXV8ZGPfKTu+u23347/\n/u//dkAcAAB0AkkLpvfu3RvTpk2LT3ziE/Xaa2pqorS0ND796U9HTU1NixQIAAC0DUnh4Z//+Z9j\n/fr1MX369HrtPXr0iLvvvjs2bNgQ9957b4sUCAAAtA1J4eHZZ5+Nm2++Oa666qr6D3fpEpdddll8\n+ctfjiVLlrRIgQAAQNuQFB5ee+21+MAHPnDI+4WFhaYtAQBAB5cUHk499dT42c9+dsj7DokDAICO\nL2m3pU996lPxxS9+MbZu3RrFxcVx4oknxp/+9Kf4/e9/H88//3xUVFTE7NmzW7pWAAAgQ0nh4aKL\nLor77rsv7r///pg1a1a9ewMGDIjZs2dHSUlJixQIAAC0DcnnPFx00UVx0UUXRVVVVVRXV0eXLl3i\nL//yL+PEE09syfoAAIA2okmHxEVE9OnTJ/r06dMStQAAAG1YUnioqamJ+++/P9asWRN//OMfY//+\n/fXu19bWRl5eXjz33HMtUiQAAJC9pPAwc+bMePzxx6Nv377Rt2/f6Nq1a0vXBQAAtDFJ4WH58uUx\nderUuPnmm1u6HoA2Z9y4cVFRUZF1GU1WWVkZBQUFWZfRqEGDBsXy5cuzLgOAREnh4Y033oixY8e2\ndC0A7cYZZ5wRzz77bNZltCtjxoyJysrKrMsA4CgkHRL3kY98JH7729+2dC0AAEAblhQevvGNb8TS\npUvjpz/9aezataulawIAANqgpGlLl112Wezbty+++tWvNriXl5dXt9tSe5wTDAAApEkKD6NGjYq8\nvLxG+xzuPgAA0L4lhYdvf/vbjd5/55134q233mqWggAAgLYpac3D4ZSVlcWFF17YHC8FAAC0UUkj\nDxERL7zwQixbtix27txZ74Tp/fv3x8svv2zaEgAAdHBJ4eGpp56Km266KfLz8+Okk06KqqqqOPnk\nk+MPf/hD7Nu3L4YPHx5Tp05t6VoBAIAMJU1b+tGPfhQXXnhhlJWVxYoVKyIi4qGHHop169bV7cA0\nYsSIlqsSAADIXFJ42Lx5c1x55ZXRrVu3eu35+flx5ZVXxtChQ2PmzJktUiAAANA2JC+Yfvc6h+OP\nPz5ee+21uuuPfexj8fOf/7x5KwMAANqUpPAwePDgeOihh2LHjh0REVFYWBhPPfVU3f2tW7fGvn37\nWqZCAACgTUhaMH399dfHddddF1//+tfjwQcfjL/7u7+Lb3/727Fx48Y45ZRTYsWKFVFcXNzStQIA\nABlKCg/nnHNOPP7447F9+/aIiLjqqqvilVdeiSeffDIqKytj5MiRceedd7ZknQAAQMaSz3k47bTT\n4rTTTvvzQ/n5cdttt8Vtt90WERGvv/56vP766y1TIQAA0CYkrXk4/fTT49e//vUh769evTouu+yy\nZisKAABoexodeSgrK4va2tqIiPj1r38dNTU1Dfq8/fbb8bOf/Sz27NnTMhUCAABtQqPh4bOf/Wxd\nKPja177W6AuNHTu2+aoCAADanEbDw5o1a+I3v/lNXHLJJfG5z30uPvCBDzTok5eXFyeffHKMHDmy\nxYoEAACy12h46NKlS5x55pkxc+bMOP/886NXr16tVRcAANDGJO22dMkll8TatWvj2GOPjcGDB0dE\nxG9+85v40Y9+FH/84x/j4osvjr/9279t0UIBAIBsJe229O///u8xefLkKCsri4iIXbt2xVVXXRXP\nPPNM7NixI2666aZ6J04DAAAdT1J4eOihh+KSSy6JT37ykxERsXDhwti7d2/89Kc/jSVLlsSnP/3p\neOSRR1q0UAAAIFtJ4eF3v/tdXHzxxXXXzz//fIwYMSI+9KEPRUTEeeedF5s2bWqZCgEAgDYhac3D\nMcccE8ccc0xERLz22mtRUVERN998c939/fv3xzvvvNMyFQIAQCt75JFHYteuXbFq1arI5XKZ1FBZ\n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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clusterer.single_linkage_tree_.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This brings us to the point where robust single linkage stops. We want more though; a cluster hierarchy is good, but we really want a set of flat clusters. We could do that by drawing a a horizontal line through the above diagram and selecting the clusters that it cuts through. This is in practice what [DBSCAN](http://scikit-learn.org/stable/modules/clustering.html#dbscan) effectively does (declaring any singleton clusters at the cut level as noise). The question is, how do we know where to draw that line? DBSCAN simply leaves that as a (very unintuitive) parameter. Worse, we really want to deal with variable density clusters and any choice of cut line is a choice of mutual reachability distance to cut at, and hence a single fixed density level. Ideally we want to be able to cut the tree at different places to select our clusters. This is where the next steps of HDBSCAN begin and create the difference from robust single linkage." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Condense the cluster tree\n", "\n", "The first step in cluster extraction is condensing down the large and complicated cluster hierarchy into a smaller tree with a little more data attached to each node. As you can see in the hierarchy above it is often the case that a cluster split is one or two points splitting off from a cluster; and that is the key point -- rather than seeing it as a cluster splitting into two new clusters we want to view it as a single persistent cluster that is 'losing points'. To make this concrete we need a notion of **minimum cluster size** which we take as a parameter to HDBSCAN. Once we have a value for minimum cluster size we can now walk through the hierarchy and at each split ask if one of the new clusters created by the split has fewer points than the minimum cluster size. If it is the case that we have fewer points than the minimum cluster size we declare it to be 'points falling out of a cluster' and have the larger cluster retain the cluster identity of the parent, marking down which points 'fell out of the cluster' and at what distance value that happened. If on the other hand the split is into two clusters each at least as large as the minimum cluster size then we consider that a true cluster split and let that split persist in the tree. After walking through the whole hierarchy and doing this we end up with a much smaller tree with a small number of nodes, each of which has data about how the size of the cluster at that node descreases over varying distance. We can visualize this as a dendrogram similar to the one above -- again we can have the width of the line represent the number of points in the cluster. This time, however, that width varies over the length of the line as points fall our of the cluster. For our data using a minimum cluster size of 5 the result looks like this:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clusterer.condensed_tree_.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is much easier to look at and deal with, particularly in as simple a clustering problem as our current test dataset. However we still need to pick out clusters to use as a flat clustering. Looking at the plot above should give you some ideas about how one might go about doing this." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extract the clusters\n", "\n", "Intuitively we want the choose clusters that persist and have a longer lifetime; short lived clusters are ultimately probably merely artifcacts of the single linkage approach. Looking at the previous plot we could say that we want to choose those clusters that have the greatest area of ink in the plot. To make a flat clustering we will need to add a further requirement that, if you select a cluster, then you cannot select any cluster that is a descendant of it. And in fact that intuitive notion of what should be done is exactly what HDBSCAN does. Of course we need to formalise things to make it a concrete algorithm.\n", "\n", "First we need a different measure than distance to consider the persistence of clusters; instead we will use $\\lambda = \\frac{1}{\\mathrm{distance}}$. For a given cluster we can then define values $\\lambda_{\\mathrm{birth}}$ and $\\lambda_{\\mathrm{death}}$ to be the lambda value when the cluster split off and became it's own cluster, and the lambda value (if any) when the cluster split into smaller clusters respectively. In turn, for a given cluster, for each point *p* in that cluster we can define the value $\\lambda_p$ as the lambda value at which that point 'fell out of the cluster' which is a value somewhere between $\\lambda_{\\mathrm{birth}}$ and $\\lambda_{\\mathrm{death}}$ since the point either falls out of the cluster at some point in the cluster's lifetime, or leaves the cluster when the cluster splits into two smaller clusters. Now, for each cluster compute the **stability** to as\n", "\n", "$\\sum_{p \\in \\mathrm{cluster}} (\\lambda_p - \\lambda_{\\mathrm{birth}})$.\n", "\n", "Declare all leaf nodes to be selected clusters. Now work up through the tree (the reverse topological sort order). If the sum of the stabilities of the child clusters is greater than the stability of the cluster then we set the cluster stability to be the sum of the child stabilities. If, on the other hand, the cluster's stability is greater than the su of it's children then we declare the cluster to be a selected cluster, and unselect all its descendants. Once we reach the root node we call the current set of selected clusters our flat clsutering and return that.\n", "\n", "Okay, that was wordy and complicated, but it really is simply performing our 'select the clusters in the plot with the largest total ink area' subject to descendant constraints that we explained earlier. We can select the clusters in the condensed tree dendrogram via this algorithm, and you get what you expect:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nT2L37t04deoUJElCdnY2+vbtiy5dukS13lmT9ObmZmzevBlvv/02PvjgA/h8PhQWFmLWrFkYOXIk\nMjMzo7ow0ZkI35Ouhi9g/KL/FoaIiCiB6uvr8eCDD2Ljxo3w+/3tnnM4HLj++uvx3//933A6nRGt\n22mS/s0332D+/PnYsmULPB4P/u3f/g0PPfQQRo8ejRdffBG1tbVM0El7giaKIt9ksCediIjCIUmA\njZV0PPzww9i8eTNuueUWXHbZZcjJyYEsyzh+/Di2bduGtWvXwmaz4Yknnoho3U6T9P/8z/+E3W7H\n7373O1xzzTXIyclRn7vvvvswb948/P73v8cjjzwS1exHojMRsgLdjmD/whAREVFU/vrXv2Lq1Km4\n4447Ojx34403ori4GM8++2zE63Y63WXYsGF4/fXXceutt7ZL0BVTpkxBjx498Itf/AIulyviC5O2\nRJ4uEqA21esaBREREX0/TncJ6dev3xmfi6b42GmS/pvf/OasX1xRUYERI0bgJz/5CXbu3BnxxUlD\ncWq3sNmkqD8uLEiP/sKid1yIfJPEE0eJiIjCNnjwYOzYsaPT53fs2IErr7wy4nVjPsyovLwcSUlJ\nuPfee/H+++/HuhzFi+gJluh90TGeOKor0V97IiJKCCtPdzl06JD63+Xl5ZgxYwbq6uowYsQI5OXl\nQZIkuFwubNmyBR9++CEqKysjvkZcThwdP348br/99ngsRXEmZJII8TcvhqrQYr7+RERE1LkRI0Z0\neGz37t148cUXv/fzr732WuzatSuia8QlSQeA5OTkeC1FccBWBYMQMEcX/QaJiIgSw6bRdBct1oy3\nyZMna36NuCXpZFCCVtKFJ/AIRvakExERndk999yj+TWYpJuV6AmW6ImiyD3pREREYZCCf7RYVzRe\nrxd79+5FfX19p+/9l19+eURrMkk3uxiTxAvynfjyaFOcgokAWy70w9eeiIgobNXV1bj33ntRW1vb\n6edIkqRfTzoZDCu5upLsdgCA7PPpHEnklJiV74GIiOj78MTRgEcffRQ5OTmYNm0a8vPz4XDEJ71m\nkm5SwraJBIm+edEW/B9U6CQ9Tv/IEBERmdmBAwfw9NNP46qrrorrunwXNjtRK+mC96RLjmAlvdUb\n1df375GBXYcaY4oh2sOk/MGYWUknIqIzsUGj6S7xX1JTffr0QXNzc9zXFe11oHDFMbm1S1LEH+fn\nOeN2fRFJaiU9uiRdT0rMtiTewxMREZ3N9OnTsXDhQnz66adxXZfvwmYnaiVdcJI98L+W3ytgku5V\nKun854GIiDonSZImv/EW7bfo5513HgoKCnDbbbchLS0N3bp1U5+TJAmyLEOSJGzatCmidfkubFaC\n/YB3YJaedK94Pel+L3vSiYiIwjVt2jRs3boVl112GfLy8pCUlNThc6K58eC7sEm1/WFQ7uBEIvrG\nUbUnXeBKus3BnnQiIuqclU8cbWv79u34r//6L9x+++1xXZc96VbAlpeEE7snnSMYiYiIwtW1a1cU\nFxfHfV0m6WbGo+l1Y4qedLa7EBHRGUiSdh8imTx5MpYtW4aWlpa4rst3YTOTJDET9LZE+z81SJmM\nImZPOpN0IiI6u8BhRlpsHI3t6xsaGnDdddchKSkJmzdvBgD4fD7Mnz8fa9euxalTp1BaWopp06Zh\n8ODBMcd78OBBnD59GsOGDcOgQYPabRxt6/HHH49oXb4LkzEJfnOhnjgqcCXdxiSdiIgENG/ePJw6\ndQp5eXnqY3PnzsWqVaswe/ZsFBcXY+3atSgvL8fq1atRWloa0/UWLVqk/vdf//rXTj+PSTp1IMsy\nRKtHi79xVOB2F/akExFRGIy4cXTnzp1YtWoVfvzjH+Pjjz8GEKisr1y5Er/97W8xatQoAMDUqVPx\nwQcfYMmSJXjiiSdiinfXrl2atOcySTcxSZIgA8JXpUWkjmD0idfuovak8zAjIiISiM/nw8yZMzFh\nwoR2j2/fvh0tLS0YOnRou8eHDBmCN998M+brarV/ju/CZsaNo7oRud3Fz8OMiIgoDFpt8ox2zRUr\nVqCpqQl33XUXnnvuOfXx/fv3AwAKCwvbfX5hYSFcLhfcbjdSU1OjjnfhwoVhfV5FRUVE6/Jd2MQk\nux2y1ytmNVfwlgtJ4MOMlNeePelERCSKo0ePYsGCBVi4cGGHw4QaGxshSRJSUlLaPe50OgEE2mGY\npFNCSQ470BJ7y8V53dOw1+WOU1ThEX0MoHKYkZA96a3Kay/mDRIRESWGDRJsGux6i2bNWbNmYcSI\nEXGZ1hKpjRs3dnhMlmW4XC5s3rwZX3zxBf7whz9EvK6YGRCFJTSrW9xqrqiVdBsPMyIiIkqI999/\nH9u2bcNbb731vc9nZmZClmU0NTWp1XMgUEFXno/Fd9toFEVFRbjkkkvwzDPPYM6cOZgzZ05E6zJJ\nNzG1L1rARFG5sRC1mqvcIInZk94KAJAcSWf5TCIisjKj9KRv2LABdXV1GDZsmPqY3++HLMvo168f\nJk2aBCDQm15WVqZ+zr59+1BQUNChDSbefvCDH2DZsmURfx2TdBOzOZTNiyJW0sXevCh0T7pX6UkX\n8waJiIisZcqUKR0muqxcuRKbNm3C0qVLkZ6ejhdeeAFVVVVqki7LMqqqqjB8+HDN4/vHP/4R1SAM\nMTMgCotazRWwki76gTpC96QLvh+AiIgSQ4I2c9IjXTIvL6/dwUUAkJ2dDYfDgZKSEgDAxIkTsXjx\nYpSWlqKkpATLli2Dy+XqkNxH4/e///33Pu71elFTU4MdO3Zg5MiREa/Ld2ETkxzijgGUBW93YU86\nERGRfiRJale9njRpEmRZxsyZM1FbW4u+ffti6dKlnfaTR2LNmjWdxtClSxfccMMNmDZtWsTr6pqk\njxgxAocOHerw+M9//nM8+OCDOkRkLqFTLwVsuTBLu0ureEm6n5V0IiIKg02SYNOgKT0ea1ZUVLQb\neShJUofH4mX37t1xXxMwQCX9jjvu6PCrhlhmVVJIqN1FvCRd+I2jJjhxVNRWIyIiIjPQ/V3Y6XQi\nJydH7zBMySZyu4vgLRehyToCJunKa88knYiIzsAo0130sHbt2oi/5qabboro8/kubGJCJ4qCV3OV\nuP0CtruENo6KeYNERESktQceeCCiz5ckiUk6hYTGAAqYKIpeSRd446hf8BskIiJKDCP3pGstnD70\nkydP4n/+53+wZs0aFBcXR3wN3d+FP/vsM0yYMAF79uxBWloabrzxRpSXlyM5OVnv0IQndiVd7JYL\noW+QvGJv2iUiItKTLMtYuXIlFixYAJ/Ph9/97nf45S9/GfE6ur4LZ2dnw+12484770Rubi6qq6sx\nd+5c1NTU4PHHH9czNFMIzeoWL0kXfcKIcoMUy2tv02L4bBhCPeli/haDiIgSw8o96Z355JNP8Oij\nj2LPnj3q6MXc3Nyo1tI1A3rjjTfa/f38889HQ0MD5s2bhylTpnQYTE+REfowI3UEo5iJoi1J3Eq6\n0kcv6g0SERFRorlcLsyZMwd//vOfceGFF2LlypW49NJLY1rTcO/CynGtLpeLSXqM1HYXARNF0Y+m\nF/sGSdkPYLh/HoiIyEAkADaN1hWF1+vF8uXL8cwzz8DhcGDGjBm49dZb2x2kFC0tXtuw7N27Fw88\n8AAOHDjQ7vHPP/8cdrsdRUVFOkVmHqFqbuztLjZb+B/FubHPuTfNYUZC3iBx4ygREdHZbN26PV/w\nNQAAIABJREFUFTfeeCP+8Ic/YMyYMfjLX/6C2267LS4JOqBjJb2goADV1dX4+uuvcf/99yM/Px/V\n1dVYsmQJbrnlFmRlZekVmmmYoporaCXdJvB+AI5gJCKicEiSFLeE9LvrGt29996LDRs24OKLL8af\n/vQn9OvXL+7X0C1JT01NxfLly1FZWYn77rsPtbW1KCgowMSJE3H33XfrFZapiLxxVJ3uImolXeBW\nI9E37RIRUWJI0KY1xfgpOrBhwwYAwLFjx3DPPfec9fMlScKmTZsiuoau78KFhYWorKzUMwRTE3oE\no0/sam5oTrpYr70sy4DfD0DcTbtERERamzx5ckSfH81vB1gqMzGR211EP1CnbU+6LMtC/OoOaNvq\n4hAmZiIi0oeVDzMKp3oeK902jpL2lL7oeGwcTbRQu4uY1VxJkoT8TUboICMxX3ciIiKzELNMSWER\nMUlUhDaOivsjKtntkH2+wPciyPch+oZdIiJKHCv3pCcCK+kmJuoYQFmWTVHRlZQRmK3ivP6itxkR\nERGZBd+JTSx0NL04SSIAdeMibDZINnHvI0XcEyD6VB0iIkocSQp8aLEusZJuaqJOGPGboIoOhKrR\nIt0kyd5WAGK3GREREZkB34lNzCZqu4tP7E2jCknAjbvKTH32pBMR0dlpc5gRu9IDWEk3MVE3jprl\nWHoR9wSY5bUnIiISHd+JTUzESi7Qpi9a8ERRzHYXpdVI7NeeiIi0Z4M21V5WkAP4OpiYiBsXgTan\njQre7mJLTgYA+FtadI4kfL5grLaUZJ0jISIisjaWy0xMqaT7Baukm6Uv2paaCgDwud06RxI+5YbC\nHoydiIioM5KkTU86T7wOYCXdxMSvpIt9D6kkukJV0oM3FDYm6URERLoSOwuiM7KpPemCJenBSrpN\n9Ep6SgoAwNcsUCU9mKTbU1N0joSIiIyOJ45qi5V0E1OnuwjW7hIawSj2PaQ9Tamki5Ok+9xsdyEi\nIjICsbMgOiNRDzNSJ4wIXkm3pyg96Wx3ISIi8wmcOKpFT3rclxQSK+kmJgk4AhBoc+Ko6CMYgy0j\n0W4cvSDfqR65HOnHBfnOqK6ptruksN2FiIhIT2JnQXRGwh5mZJITR9WNowJNd1FHMLKSTkREZ8E5\n6dri62BiNvXES8GSdJOceqkk6T6BpruENo4ySSciItKT2FkQnVGoki5Wu4tZKulqu4tA0118nO5C\nRETh0mhOOpvSA1hJNzFl46Vw7S4mOcxI2Tgq4nQXtrsQERHpi5V0E1MPMxJs46hZDjMKnTjKdhci\nIjIfzknXFivpJqZUosWb7mKSSnqwZUSojaPKCEZOdyEiItKV2KVKOiNhDzPymqOSbo9DJd2e4L48\nf3CTq3IQExERUWeUsb9arEtM0k3N5kgCIGBPus8c012UdhexetKVOelM0omI6MxskGDToDlFizVF\nxHYXEwttHBWr3cU0G0fVw4zE6UkPbRxluwsREYmjvr4es2bNwtVXX43+/ftj9OjR+OMf/whZlgEA\nPp8PlZWVGDZsGAYMGICxY8di69atOkd9ZmKXKumM1BNHW8VK0k1z4miK0u4iTiWdG0eJiChcRmp3\nue+++3Do0CE88cQTKCwsxJYtWzBr1iykpqZi/PjxmDt3LlatWoXZs2ejuLgYa9euRXl5OVavXo3S\n0tL4fxNxwEq6iSlHu/tbWtQ7yWj1zklFst121o/eObEnd2pftOCbF0XbOCrLsnrwEpN0IiISxeHD\nh7Fz505Mnz4dV1xxBQoLC3H77bdjyJAhePfdd9HQ0IAVK1Zg8uTJGDVqFIqLizF16lSUlJRgyZIl\neoffKbFLlXRGkt0OyeGA7PVCbm2FlJysd0hhUZJ00SeM2JKTAUmC3+OB7PMZ/nAmubUV8PshORyG\nj5WIiPQnBf9osW4kzj33XFRXV3d4XJZlOBwObN++HR6PB0OHDm33/JAhQ/Dmm2/GFKuWWEk3uXhM\nGEk0n0laLiSbTb3R8LV4dI7m7NTXnZNdiIhIYK2trVi1ahU+/fRT3HHHHdi/fz8AoLCwsN3nFRYW\nwuVywW3Q33gzSTc5W0qgei7ShBF/MKFVYhdZqOXI+K9/aEY6k3QiIjo7pSddi49ojRs3DgMHDkRl\nZSUqKysxYsQINDY2QpIkpHznN/ROpxMA0NDQEMvLoBm2u5icunmxRaBKeot5kkV7Wipa6+qE+E2G\n3630o4vdZkRERNY1b9481NbWYuPGjZgyZQpmz56td0hRY5JucqHNi8ZPEhVqsih4TzoQ6qsXYfMo\nK+lERBQJSaM56bH0uefn5yM/Px9lZWVobGzErFmzcO+990KWZTQ1NanVcyBUQc/MzIw5Zi2w3cXk\nQj3R4iTpSqxmmNUd2hMgTpLOnnQiIhJJTU0NVq9eDa+3/cjp0tJS1NXVIT09HQDU3nTFvn37UFBQ\n0KENxiiYpJtc2zGMogi1XYifLIZOHTX+62+W0ZdERJQYRulJ//bbbzF9+nR88skn7R7/8ssvkZaW\nhlGjRiEtLQ1VVVXqc7Iso6qqCsOHD4/HS6EJtruYnFpJF6CSq/B7lBGMJtg4qpw62mz811+J0Qy/\nwSAiIuu44oor0L9/f8yYMQMPPfQQevXqhY8//hivvvoqbr75ZmRkZGDixIlYvHgxSktLUVJSgmXL\nlsHlcmHChAl6h98pJukmZxeokqtQ2y5M0Bsd2rhr/CRdmUBjT03TORIiIhKBBI1OHI3w8202GxYt\nWoS5c+figQceQENDA4qKilBRUYHx48cDACZNmgRZljFz5kzU1taib9++WLp0aYexjEbCJN3klKqo\nCNNFFKERjOJXdEXauOvjdBciIhJUTk4OHnvssU6flyQJFRUVqKioSGBUsWGSbnK25GCS6DF+kqjw\nqRVd8ZNFETeOmuHmiIiItGeUE0fNihtHTU6kSq5CidUMyaJNoCTdr053YbsLERGR3lhJNznRNo76\nvV7IPh9gs0FyiP/jKdJ0HXX0pQlujoiISHs2KfChxbrESrrpqZX0YJ+30bUdvyhpsRslwZSZ4yLc\nJPHEUSIiIuMQv1RJZyTSdBGgbTVX/PGLQOj1F+PE0WYAnO5CREThYU+6tlhJNzmR2i2ANmMATTB+\nEWgzJ12APQFKjJyTTkREpD9W0k1OtBGMZksUQyeOGr+SzhNHiYgoIlGcDhruusRKuumJV0k3V6Ko\njmCM8sTR87qnQZKkiD7O6x5du4oSI6e7EBER6Y+VdJOzCZqkm2XCiDpdR4DXX6n2m+W1JyIibbEn\nXVtM0k1OpMN0APONAVRefzE2jnK6CxERhY8jGLXFdheTU6akiDeC0RyJokg3SeqJo5zuQkREpDvd\nk/QdO3Zg3LhxGDhwIK666ipUVlZClmW9wzIN8UYwKi0X5pjuItLGXfXEUZPcIBERkbYkhFpe4vuH\nAJ2T9K+//hp33HEHrr76arz99tuYPn06XnrpJSxevFjPsExFPcxIgCQRMN/GUYfTCQDwNTdD9vt1\njqZz/tZW+D0ewGYzTasRERGRyHTtSX/22WcxfPhw3H333QCAHj16ICsrCxkZGXqGZSptNy7Ksmz4\nUzzNNoJRstthdzrha2qCr6kJDoP+bHsbGgAASZkZhv8ZISIiY5A0GsHIt6EA3Srpfr8fW7ZswXXX\nXdfu8SFDhuCiiy7SKSrzsTkckBwOwO+H7PXqHc5Zma2SDgCOzEBi3nq6QedIOucNxubIzNQ5EiIi\nIgJ0TNJramrQ2NiItLQ03HvvvRg6dChGjx6N5cuX6xWSaYk0htFslXQAcGQEEl+lWm1ESmxGrfQT\nEZHxSBp+kI5J+smTJwEAs2fPxtChQ7FkyRL85Cc/wZw5c7Bo0SK9wjIlpSotxOZFj1JJN8fGUSDQ\nQgIA3tOndY6kc61qJZ1JOhERkRHo1pPe2toKALjhhhvws5/9DABQVlaGvXv3Yvny5bjrrrv0Cs10\nQhNGjD/hRdngqoyONAOlOu01dLtL4AZCqfoTERGdjSRJsGnQQM69UQG6VdKVzaH9+vVr9/gll1yC\nEydO4MSJE3qEZUpKJV2pUhuZTx0DaJ5KulKd9jYYt5LOdhciIiJj0a2SXlRUBJvNhtra2naP+4Nj\n6jjhJX7UnnQR2l1MduIoENqMaeyNo4EbiKQurKQTEVF4tOofZx09QLdKenp6Oi655BJs3ry53eOf\nfvopevXqhRQTJWl6E+rUSzMm6Uq7CzeOEhERUZh0Pcxo8uTJ2LhxI55//nns378fy5Ytw1/+8hdM\nnDhRz7BMR+nv9rd4dI7k7NQRjCZqdxFq4yiTdCIiChfHu2hK18OMBg8ejPnz52PBggV4+umnkZeX\nh5kzZ+KWW27RMyzTsQUnpfhaYqukF3RNxpH61niE1CkfN47qQt04yukuREREhqBrkg4Ao0ePxujR\no/UOw9TsqeLMSfcHbyTMNIJR6UlnuwsREZmJFPyjxbqkc7sLJYZNpDnpwZYcU/Wki3DiaDBJ58ZR\nIiIiY9C9kk7aswt14qgygtFESbpy4qiBe9K97EknIqIISVLgQ4t1iZV0S7AJkqTLPh9krxeQJEhJ\nSXqHEzeOjHQAgLexEXJwxKiR+L1e+JqbAZsNdqdT73CIiIgITNItQZQRjG3HL5rptDGbwwF7Whrg\n98PX1Kx3OB207Uc30+tORETa4nAXbTFJtwCbunHU2CMYzTh+UWHkU0fZ6kJERGQ8TNItwJYc3Dga\n4whGrZlx/KLCyKeOqptGM7lplIiIIsQyumaYpFuAOoLR4NNd1PGLZqykZxj3QCPOSCciIjIeTnex\nALUnvdl4/dBt+ZotkKQbcFY6Z6QTEVE0OCddW0zSLUBNEBsbdY7kzELJYrrOkcRfUmb0p44W56Zi\n/8nwfgvSMzvy0ZWtrKQTEVEUOIJRW0zSLUAdAWjAKm5bSnz2dPMli7FW0m0a/ovFjaNERETGwyTd\nAkIJotEr6YH4zFhJd3RRNo4asCedG0eJiCgKWu3zZCE9gBtHLcDudAKSBF9TE2SfT+9wOqW045ix\nohvaOGq832aolXS2uxARERkGk3QLkNqcJOltbNI5ms6ZuSfdkRGoUhux5YgbR4mIKCoGOs3I4/Fg\n4cKF+OEPf4hBgwbhRz/6EV5++WX1eZ/Ph8rKSgwbNgwDBgzA2LFjsXXr1qi+7URhkm4RoaPpjZck\nKtR2FxP2pMeycVRroY2jbHchIiIxPfbYY3jppZcwdepUvPnmm/jpT3+KRx99FKtWrQIAzJ07F6+9\n9hpmzJiBdevW4corr0R5eTm++uornSPvHJN0ixChL93clXSeOEpERGYjafIn0lL66dOn8cYbb2Dy\n5Mn44Q9/iKKiIvzyl7/EkCFD8Oabb6KhoQErVqzA5MmTMWrUKBQXF2Pq1KkoKSnBkiVLtHlp4oAb\nRy3CkW78CS8+M/ekd+GJo0RERFrIzMzEBx98gLS0tHaP5+TkYM+ePfj000/h8XgwdOjQds8rSbxR\nsZJuEayk66vtTZLs9+scTYjf64WvqQmw2WB3pp39C4iIiIKUOelafESqW7duSG1zGGJzczP+/ve/\nY+DAgfj2228BAIWFhe2+prCwEC6XC263O6bXQStM0i1ChFnpZu5JtyUlwZaaCvj9hjr5Vf3tRXo6\nJBv/OSAiInN45JFH0NDQgDvvvBONjY2QJAkpKe0P/HMGh2o0GDQ34ruyRSiVdJ+BTx01cyUdaLN5\n1ED/GPC0USIiipaBhruoZFnGzJkzsX79ejz55JMoKiqKYTV9MUm3CKP3pPs9Hvg9Hkh2e6DibELK\nGMbWeuNsHuWmUSIiMgufz4f7778f69atw4IFCzBq1CgAgZ51WZbR1NR+DLVSQc806J4sbhy1CEem\nsXvSQ6eNZkCKphlNAI4YKumF3ZIBAK7T3u99Pjczuv+VuWmUiIiiZrAjRx955BFs3rwZL7zwAi67\n7DL18V69egEA9u/fj7KyMvXxffv2oaCgoEMbjFGwkm4RoY2jxqykm73VBWiTpBtowgtPGyUiIjN4\n7bXXsHr1avzxj39sl6ADwKWXXoq0tDRUVVWpj8myjKqqKgwfPjzRoYaNlXSLUNtdDNqT7jXx+EWF\nEU8d5WmjREQUrdBc8/ivG4nGxkbMnTsXN998M/r06QOXy9Xu+dzcXEycOBGLFy9GaWkpSkpKsGzZ\nMrhcLkyYMCGeoccVk3SLYCVdf6FTR43Tk87TRomISHSff/456uvr8corr+CVV15p95wkSdi1axcm\nTZqkbiqtra1F3759sXTp0g5jGY2ESbpFGH0EoxKX3YTjFxXqgUb19TpHEuINxpLEdhciIopQtDPN\nw1k3Ej/4wQ+we/fus6wpoaKiAhUVFTFElljsSbcIox9mFNo4at5KenK3bgAAz6lTOkcSosSSnJ2t\ncyRERETUFivpFmF3OgFJgq+pCbLPB8lu1zukdqzQk64m6ScNlKQHY0kKxkZERBQugw13MR1W0i1C\nstkCiToAb2PTWT478azQk65Uq1uNVEk/eRIAkJzNJJ2IiMhImKRbiNqX3mi8vnS13cXEPelJbSrp\nsizrHA0g+/3wnKoFEKryExERhc2IR46aCJN0CzFyX7oVKukOZxpsqanwezzwGWAUZmt9PeD3w5GZ\nCVtSkt7hEBERURtM0i1EnZVuwAkvPgv0pAOhlhcj9KUrMbDVhYiIoiFp+IeYpFuKkSvp6rxuE1fS\ngVBCrPSC60ntR2erCxERRUEZwajFB3G6i6UYeVa6FXrSgTZJepSbR+P5D1eoks7xi0REREbDJN1C\nlEq6EfqhvyvU7mLySrqBxjC2nmK7CxERxYZFb+2w3cVCjNqT7vd44Pd4INntsKWm6h2OptSedAOM\nYeT4RSIiIuNiJd1CHJnG7EkPnTaaAcnkjWihSroBetJP8SAjIiKKkbnftnXFSrqFhDaOGquSboXx\niwqlat0anE+uJ/akExERGRcr6RaitrsYrCfda5Hxi0DbEYwGqKRzBCMREcVAq3GJHMEYwEq6hbCS\nrj+jnDoaOG00mKSz3YWIiMhwWEm3kNAIRoNV0oNJut3k4xeBNqeOut3wNTbpdmPC00aJiChWWs00\nN/n2tLCxkm4hxq2kW2P8osIILS+c7EJERGRsTNItxO50ApIEX1MTZJ9P73BUVupJB4CUc3IAAC3H\nj+sWQ4vrRLtYiIiIIiVp+EFM0i1FstkCiToAb2OTztGEeE+fBmCdSnooST+hWwye4A1C8jnn6BYD\nERERdY5JusWofemNxml5UdtdLNCTDoQS4xaXS7cYlCp+CpN0IiKKFkvpmmKSbjGhvnTjbB5Vbhgs\nU0nPDSTGHh0r6UoVn0k6ERGRMXG6i8Wos9INtHm07YmjVqAkxnr2pIfaXdiTTkRE0QkUvbWYk04A\nk3TLSerSBQDgrT8d1dfbzzAXKTczuh8nb309AMCRmRnV14vGCD3partLLivpRERERsQk3WKSunUF\nAHhqT0X19bmZDhxv8MYzJHhqawFY51AdpSfdc/w4ZFmGlOCBsLLPB8+JwAjGlBxW0omIKDqck64t\n9qRbTHLXQJLeeqpW50gCfC0t8DU2QXI4LNOT7nA6YXc64fd41Mk2ieSprYPs8yEpqwtsyckJvz4R\nERGdnW6V9IMHD2LUqFGdPr9582YUFBQkMCJrUCvpBknSW2vrAABJWVmQbNa5Z0w5JwdN+5vQcvy4\n2oKUKBy/SERE8aDVIBYW0gN0S9ILCgrw0UcfdXh82bJleO+995CXl6dDVOantJS01holSVdaXbrq\nHElipeSeg6b9B9DiOoGM4uKEXpuTXYiIiIxPtyTdZrMh5zv9sMePH8fLL7+MJ598Ena7XafIzC2p\nq1JJj64nPd6UOJIslqS37UtPNM5IJyKiuGApXVOG6i946qmn0LdvX4wYMULvUExLqVgbpZKutN0k\nd7XGplGFnmMYW1wcv0hERGR0hpnuUlNTg3Xr1mHx4sV6h2JqSV26ADYbWutPw+/1wubQ90dAuVmw\nWiU9NIYx8Um6h5V0IiKKAyn4R4t1yUCV9BdffBHnn38+Bg8erHcopibZ7YFEXZbRWlevdzhtKunW\nStJD7S6Jn5Wu9qRzRjoREcVCCo1hjOcHc/QAQyTpbrcbq1atwu233653KJZgpJYXy1bSgwmy+5gr\n4dduOR64ZgrbXYiIiAzLEO0uH330EdxuN66++mq9Q7GEpKwsAMbYPNpqsYOMFCm5uZDsdniOH4ev\npQX2lJSEXNfb1ITWU7WwJScjmQcZERFRDLhvVFuGqKRv3rwZffv27TDthbSRZKAxjEq7S5LF2l1s\nDgdS8wNjRt2HDifsus01hwAAqQXnWmouPRERkWgM8S69bds2DBo0SO8wLCPZIAcaybIcqqR3zdI1\nFj2kFfYAADQdrEnYNZsPHgxcu0ePhF2TiIhMStLwg/RP0n0+Hw4ePIjCwkK9Q7EMpWrdqnOS7mtq\ngt/jgS01Ffa0NF1j0YOSKDfXJDJJrwlem6f5EhERGZnuPekNDQ3w+/1IT0/XOxTLUCvptfr2pKuT\nXSy2aVShS5IebHdx8qaYiIhixBGM2tK9kp6VlYXdu3fjlltu0TsUyzBKJd2qm0YVSruLkjgngnJD\nwEo6ERGZic/nw7x581BWVoaFCxd2eK6yshLDhg3DgAEDMHbsWGzdulWnSMOne5JOiackxR6dN45a\nddOoQkmUm2sOQZZlza8n+3xoDm5SZZJORESx0mJGujorPQLHjx/H+PHj8d5778HxPYc0zp07F6+9\n9hpmzJiBdevW4corr0R5eTm++uqrOL0S2mCSbkFqu8vJUwlJDjvTGhwBadV2l6TMTCRldYHf7Ybn\nxEnNr+c+5oLs9SI5J9uSewCIiMic/vznP6Nr1654/fXXYfvO5LKGhgasXLkSkydPxqhRo1BcXIyp\nU6eipKQES5Ys0Sni8DBJtyB7ejpsycnwu93wNTXpFkfLicDJl8nZ2brFoDe1Lz04dUVLoVYXTnYh\nIqLYGWW4y3XXXYcFCxZ87/7G7du3o6WlBUOHDm33+JAhQ/DRRx9FeKXEYpJuQZIkITl42mQiKrid\n8ShJuoVPvgxtHtW+L51JOhERmVFeXl6nz+3fvx8AOkwRLCwshMvlgtvt1jS2WDBJtyileu05qWeS\nfrJdLFYU6kvXfsKLciOgbFglIiKKhQSNetLjGGNjYyMkSULKd072djqdAALtMEbFJN2iUoLV65bj\nJ3SLQWl3SbFyJT2BE144I52IiEgcTNItSu9KuizLoUp6joWT9GDCnIhTR5Uk3clKOhERxYVRutI7\nl5mZCVmW0fSdPXhKBT0zMzNu14o33Q8zIn0oibHSF55o3vp6yF4v7OnpsH/nV1BWkpqXB8nhgOf4\ncfjcbthTU8/4+edkRPe/rLehAa11dbAlJ1v6poiIiKylV69eAAK96WVlZerj+/btQ0FBQYc2GCNh\nJd2iUoKJWotOSXpLsIpu5VYXAJDsdqSemw8AaD6kXcuL2o/eowckG/+3JyKi2BllTvqZXHrppUhL\nS0NVVZX6mCzLqKqqwvDhw+N3IQ2wkm5RyTnBdhedprsobTZW3jSqSOvRA80HDqL54CFkFBdrcg2e\nNEpERGa1a9cu1NfXAwD8fj9qamrw8ccfAwAGDRqEiRMnYvHixSgtLUVJSQmWLVsGl8uFCRMm6Bn2\nWTFJtyjdk/TghlUlDitzFvbASWg74UXpeedkFyIiipf4do+3XzcSjz32GLZt2xb4WknCmjVrsGbN\nGkiShE2bNmHSpEmQZRkzZ85EbW0t+vbti6VLl3YYy2g0TNItKrlrV8BmQ2tdHfytrbAlJSX0+upk\nF/ZHJ2QMY6jdhZV0IiIyl5deeumsn1NRUYGKiooERBM/bE61KMluR3K3rgAAz8lTCb++2u7CSjrS\ngnfyTd/u1+waTd9+2+5aREREMdOqH12L8ryAmKRbWHJ2cMKLDmMYQ+0urKQ7e/UEbDY0HayBT4OT\nz7yNjXAfPgLJ4YCziEk6ERGRCJikW1jKOUpfeuInvCg3Bmx3AewpKXD2LAL8fjR+sy/u6zf8ay8A\nIL1P74S3NRERkXlJGv4hJumWplTS9RjDqFyT7S4BGeedBwBo+PpfcV+7MZikZ5ynzeQYIiIiij8m\n6RaWfI5yoFFi2118bjd8jU2QkpLgMPBJX4mUURJM0oMJdTw1/CuQ+KcHbwSIiIjiwvgHjgqN010s\nTD3QyHU8oddVrpeSkwMpnicWCEypcjf+K/6VdCXxzyhhJZ2IiOLHKCMYzYqVdAtLzc8DALgPH07o\ndZsPHW53fQKcvXtpsnnU29gI96HDwU2jRXFbl4iIiLTFJN3CUgvOBQA0Hz4CWZYTdl3lpkC5Pmm3\neZSbRomISCtajF9UxzASk3QrS8rMhCMzE363O6Gz0pVKehqT9Ha02DzKTaNERERiYpJucUqinMiW\nF7WSfi6T9LaURDqem0e5aZSIiLTCEYzaYpJucUqirFS3E0GtpPOI+nbUCS9ffhm3NRu++jq4Nivp\nREREImGSbnGJrqT7WlrgOX4ckt2O1O7dE3JNUaQX94EtNRXNNYfi0n7kPnYM7iNHYU93Ir1XrzhE\nSERE1AZHMGqKSbrFJbqS7j5yFACQktcdkt2ekGuKwpaUhC59LwQA1O38LOb1lDWy+vfja01ERCQY\nJukWl+hKultpdWE/+vfKGtAfAFD7z50xr1X3z2CSPmBAzGsRERF9Fwvp2mKSbnGpapJ+BLLfr/n1\nmjl+8YyUJL1uZ2xJuizL6hrKmkRERCQOJukW53A6kZSVBb/HA8+Jk5pfj5X0M8so7gN7uhMtR4/B\nffRo1Ou4Dx2G58RJJGV1CcxfJyIiijPOSdcWk3QKHWp06JDm12Il/cwkux1Z/fsBiK0vXWmX6dK/\nPyQb/zcnIiISDd+9CWkFgVGIidg86uZBRmel9JArPeXRUFpdul7EfnQiItIG56Rri0n+RpfbAAAI\nJUlEQVQ6JWzzqM/thufkSUgOB1LOOUfTa4ksK5hY1/7zn1HtE5B9PtTt/Dy4FvvRiYiIROTQOwDS\nX6RjGM/JiO7Hxn34SOB6+XkcCXgGzp5FSMk9By2u46jftQtZ/fpF9PV1Oz+Dt74eqefm81RXIiLS\njlb94yykA2AlnZC4SrpyE8DE8cwkScI5V10JADhe9WHEX+8Kfk3usKsgcfcNERGRkJikE1LPzQcQ\nOGhI9vk0u45yE8B+9LPLHX4VAOD4R3+Dv7U17K/zezw4sfXvAIBzhl2pSWxERESkPSbpBHtqKpKz\nsyF7vWg5flyz67CSHj5nr15w9iyC93QDav/xz7C/7tT2HfA1NSG9uA+chYUaRkhERERaYpJOANqO\nYdSu5YWV9PBJkoRzhgWq6a4tH4T9da6qwOfmBr+WiIhIKxI0mpOu9zdmEEzSCUDocCG3hkl6M8cv\nRiQ32K5ysnobfM3NZ/18b2MjTm77BGjT005ERERiYpJOAIC0HoFZ6U0HDmqyfuvp02itrYUtORnJ\nOTmaXMNsUvPy0KXvhfC73Tj81jtn/fxDb/4Zcmsrsgb0R8o5fI2JiEhbnJOuLSbpBABI79MbANC4\nb58m6zd+E1jX2bsXT8CMQNG4nwIADq5eg9bTpzv9PE9tHWrWvtnua4iIiEhczJYIAODs3RtAIJmO\n5gCds1GS9PQ+feK+tpl1HXgRsgZeBF9jE2pWren08w7+6Q343W50u+xSZPXrm8AIiYjIqjTpR9dq\n9rqAmKQTACC5axaSs7Phd7vhPno07uuHkvTecV/b7Hr94nYAwOG33kGLq+P0HffRozjylw2AJKHX\nL25LdHhERGRRkoYfxCSd2lBbXvbui/vajd98AwDIKGYlPVKZpSXIGToYfo8Hu2Y/jtb6UNuLp7YO\nu2Y9DtnrRe7wq5Ae/I0IERERiY1JOqm06kv3t7ai+WANIElw9uoZ17WtovjOCUgtKEDjN/vw2UMz\ncerTHTi1/VN89uAMNO0/gLSiQvQe/2u9wyQiIithKV1TDr0DIONID1a5lap3vDQdOAjZ60VajwLY\nU1PjurZVJHfrhv6zHg4k5fu+xRcPz1KfSyssRP9ZDyO5a5aOERIREVE8MUknldIqEe92FyXp56bR\n2KTkZOOiJx/H4bfewYmtf4ckScgZMhjnXn8dHBnpeodHREQWEyh6x7/szUJ6AJN0UqXm58GWmgrP\niRNora9HUpcucVmXm0bjJykzEz3H/RQ9OWaRiIjI1NiTTirJbkd6r14AQol1PKhJOjeNEhERmQZH\nMGqLSTq1k17cG0D8knRZltu0u/SOy5pEREREZqdrku7xeLBw4UJcd911uOiii3D11Vdj4cKF8Hg8\neoZlaenFxQCA019+GZf13IcOw9fYhKRuXZHcrVtc1iQiIiL9GW24y//+7/9i5MiRGDBgAK6//nq8\n9dZbUa5kDLr2pM+dOxerV6/G448/jrKyMuzatQvTp09HQ0MDHnjgAT1Ds6wufcsAAPVf7IIsy5Bi\n/J1T3edfBNe9MObYiIiIiL7PypUrUVlZiUceeQQXX3wxtmzZgmnTpiErKwtXXnml3uFFRdckfd26\ndRg7dixGjRoFACgsLMQnn3yC9evXM0nXSVqPHkjK6oLWU7VwHz6MtIKCmNarDybpPKqeiIjIZLSa\naR7hmrIsY9GiRbj11ltx0003AQB69+6Nbdu2YdGiRcIm6bq2u9hsNths7UNISkqKuXpL0ZMkCV36\nBhJqJcGORf0XSiWdSToRERHF3969e3Hs2DEMHTq03eODBw/G9u3bhW2j1jVJv+2227B+/Xrs3LkT\nsizjq6++wvr16zFu3Dg9w7K8LsGqd93nu2Jax33sGFqOuWBPT4ezZ1E8QiMiIiLDkDT5E2kp/dtv\nvwUA9OjRo93jRUVF8Pv9OHDgQLy+4YTStd2loqICJ06cwC233AKHwwGv14tx48ahoqJCz7AsT0nS\nY62k138RSPK79C2DZLfHHBcRERHRdzU2NgIAnE5nu8eVvzc0NCQ8pnjQNUl//vnn8c477+CJJ57A\nhRdeiD179mDOnDno1q0bfvOb3+gZmqWl9+oJe7oTLceOocXlQkpublTr1H/OVhciIiKzOnb0iCYz\nzY8dPRL/RQWkW5JeW1uLBQsWYPr06WqT/wUXXICWlhY8/PDD+NWvfoWuXbvqFZ6lSXY7rnj5pZjX\nKZn8/1Ay+f/FISIiIiIymvG/vF3vEAAAmZmZADpWzJW/Z2RkJDymeNAtSd+/fz+8Xi+Kg3O5FT17\n9oTX68XBgwfDStLz8/OxadMm5OfnaxUqEREREQUpuVcirhOOXsHT0vfv34/S0lL18X379sHhcKBn\nz56axKc13ZJ05YX/5ptvcMUVV6iP7927FwBw7rnnhrWOw+FAYWFh/AMkIiIiog6Mlnv16dMHRUVF\nqKqqwsiRI9XHt2zZgiFDhiApKUnH6KKnW5LevXt3XHPNNXjmmWeQm5uLCy64AF9//TWeffZZXHXV\nVcjJydErNCIiIiISyOTJk/Hggw9i0KBBuPzyy/HWW2+huroaK1eu1Du0qEmyLMt6XbypqQkLFy7E\n+vXrcfLkSWRnZ+Oaa67B1KlTkZ6erldYRERERCSYl19+GUuXLsXRo0fRp08fTJ06FVdffbXeYUVN\n1ySdiIiIiIg60vUwIyIiIiIi6ohJOhERERGRwTBJJyIiIiIyGCbpREREREQGwySdiIiIiMhgmKQT\nERERERkMk3QiIiIiIoNhkk5EREREZDBM0omIiIiIDOb/A75K1LpDC8VUAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clusterer.condensed_tree_.plot(select_clusters=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have the clusters it is a simple enough matter to turn that into cluster labelling as per the sklearn API. Any point not in a selected cluster is simply a noise point (and assigned the label -1). We can do a little more though: for each cluster we have the $\\lambda_p$ for each point *p* in that cluster; If we simply normalize those values (so they range from zero to one) then we have a measure of the strength of cluster membership for each point in the cluster. The hdbscan library returns this as a `probabilities_` attribute of the clusterer object. Thus, with labels and membership strengths in hand we can make the standard plot, choosing a color for points based on cluster label, and desaturating that color according the strength of membership (and make unclustered points pure gray)." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n9evX6/nnn1dRUZEsFstClAsAAAAsO+FwWH19fVq/fn1Cr5NwYOjv79e5c+ckSb29vQoEAjp06JAM\nw1BlZaUqKip07Ngx/d3f/Z2eeuoprVu3TpWVlbrjjjv0/e9/X0VFRSoqKtKPfvQjORwO3XnnnbP6\n/hkZGdq8eXOi/w0AAAAg5STyZOGShAPD/v379eijj058bTKZdO+990qSHnzwQT344IMaGxtTS0uL\n/H7/xH5PPPGEvve97+lv/uZv5PP5tHnzZj333HOTuigBAAAASC6TMdPV1gAAAACsOElZhwEAAADA\n8kBgAAAAABATgQEAAABATAQGAAAAADERGAAAAADERGAAAAAAENOyDAyHDx/Wjh07dPPNN0+7b3t7\nu9asWRP1329/+9tFqHZ5ms05li6u1P3tb39b27Zt05VXXql77rlHJ0+eXOAql6/jx4/rnnvu0caN\nG7V161Y98cQTk9Yp+Siu45l57rnndMstt2jDhg267bbb9Morr8Tdf7Y/B8zuHD/zzDNRr9mrr756\nEStefsLhsH70ox9pzZo12rNnz7T7cx3P3mzOMdfx3AQCAe3Zs0e33nqrrrrqKv3pn/6pfvnLX8Y9\nhmt5dmZ7jhO5lhNeuG2xPfvss/rHf/xHlZSUKBgMzvi4PXv26Kqrrpq0LSsra77LSwlzOcff/OY3\ndfLkST311FMqLCzUz3/+c9133336z//8TxUUFCxwxctLb2+v7rvvPn3iE5/Q448/rv7+fj3++OP6\n1re+pR/84Adxj+U6ju3555/XU089pV27dmnTpk3at2+fvv71rysnJ0c7duyYsn8iP4eVarbnWJLK\nysq0d+/eSdtMJtNilLss9ff366GHHtLAwICs1un/RHMdz95sz7HEdTwX3/3ud/Vf//Vf2rVrl9at\nW6c33nhDTz75pNLT0/Vnf/ZnU/bnWp692Z5jKYFr2VhG3G63ceONNxrHjh0zvv3tbxt/8id/Mu0x\nbW1tRmNjo3Ho0KFFqHD5m8s5bm5uNhobG43XXnttYlswGDSuv/564+mnn17Icpel3bt3G9dff70R\nDAYntr322mtGY2Oj0draGvUYruP4IpGIccMNNxjf/e53J21/4IEHjHvuuSfqMXP5OaxkcznHTz/9\n9IzeQ/Chn//858ZXvvIVw+PxGBs2bDCeeeaZuPtzHc/ebM8x1/HsjYyMGFdccYXxL//yL5O233//\n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\nQEz/Pztrdeby7tnUAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cluster_colors = [sns.color_palette(desat=sat)[col] \n", " if col >= 0 else (0.5, 0.5, 0.5) for col, sat in \n", " zip(clusterer.labels_, clusterer.probabilities_)]\n", "plt.scatter(test_data.T[0], test_data.T[1], c=cluster_colors, **plot_kwds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And that is how HDBSCAN works. It may seem somewhat complicated -- there are a fair number of moving parts to the algorithm -- but ultimately each part is actually very straightforward and can be optimized well. Hopefully with a better understanding both of the intuitions and some of the implementation details of HDBSCAN you will feel motivated to [try it out](https://github.com/lmcinnes/hdbscan). In turn I expect to see the hdbscan library continue to develop; various improvements, such as getting the asymptotic complexity down to $O(n \\log n)$, support for streaming clustering, and continued development of visualization and analysis tools are all planned and hopefully coming soon." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }