{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Unsupervised Learning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "\n", "*Unsupervised learning* refers to machine learning techniques where we do not give the learning algorithm a target output (e.g. a set of expected classifications of the data). Instead, the algorithm must interpret the data entirely on its own, without any supervision from the user. Unsupervised learning is useful when we don't have access to pre-labelled data (e.g. this set of measurements corresponds to a faulty unit, and this other set of measurements corresponds to a funcitoning unit), or when we're more interested in exploring what trends exist in data (including those we may not even know about). However, the distinctions drawn in unsupervised learning tend to be less clear-cut than in supervised learning, and often involve more subjectivity in choice of parameters.\n", "\n", "Applications of unsupervised learning in the context of systems administration include:\n", "* Automated detection of abnormal events in logs\n", "* Automated detection of anomalies time series data\n", " * e.g. a spike in write latency on a NetApp that might indicate an errant job\n", "* Learned models of a system, which can then be used for prediction\n", " * e.g. a learned model of PUE from machine load, outside air temperature etc. that can then be used to investigate the effect of making a change to one of the variable (see Google's [Better data centers through machine learning](http://googleblog.blogspot.co.uk/2014/05/better-data-centers-through-machine.html))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Anomaly Detection\n", "\n", "For this workshop, we'll be focusing on a simple example of time series anomaly detection.\n", "\n", "This example is based on Chapter 4, *More Complex, Adaptive Models* from [Practical Machine Learning](https://www.safaribooksonline.com/library/view/practical-machine-learning/9781491914151/ch04.html) by Ted Dunning and Ellen Friedman.\n", "\n", "### Simple Anomaly Detection\n", "\n", "In some cases, we may be able to detect anomalies simply by looking for any values beyond a certain threshold:\n", "\n", "\n", "\n", "In other cases, though, the structure of the waveform may prevent detection using this method:\n", "\n", "\n", "\n", "And more subtle errors - a change in the shape of a periodic waveform, for examples - will be simply impossible to pick up with such a method:\n", "\n", "\n", "\n", "What we want is a more method that can learn what constitutes a \"normal\" waveform, not just in terms of its instantaneous value, but in terms of its *shape*.\n", "\n", "Our approach will be to define an \"anomaly\" as being some pattern in the waveform that hasn't been seen before. Our algorithm will build up a library of \"normal\" waveform shapes, and use that library to try and reconstruct a waveform to be tested. If the reconstruction is poor, then the waveform is likely to contain something abnormal, and is therefore anomalous.\n", "\n", "### Clustering\n", "\n", "To explore how we might go about determining what counts as normal, let's take a step back from our problem and have a look at a simpler example.\n", "\n", "Suppose we're manufacturing power supplies. Our power supplies use capacitors from two different manufacturers. During the QA phase we measure two variables for each unit tested: power efficiency and voltage ripple. We could plot a graph of one variable against another to get a sense of the distribution of the data:\n", "\n", "\n", "\n", "These two variables have acceptance tolerances, as shown by the dotted lines. Within these limits, however, we find that the data tends to form two groups, or *clusters*, depending on which type of capacitor is used.\n", "\n", "Suppose the next power supply that comes off the assembly line meets the tolerance requirements, but falls a way outside either of the two groups:\n", "\n", "\n", "\n", "This is a sign that there might be something wrong with the unit; that it is in some way anomalous.\n", "\n", "Here our clusters existed in the two-dimensional space defined by two variables (or two *features*, in machine learning parlance). But we can easily visualise how the approach can generalise to a three-dimensional space, defined by three features - or even an *n*-dimensional space, defined by *n* features. (The general case is a little harder to visualise, so just imagine a three-dimensional space and pretend there are more dimensions.)\n", "\n", "Clusters can be identified programatically using a *clustering* algorithm. The particular method we'll be using is called *k-means clustering*. (See [Cluster - K-means algorithm](https://class.coursera.org/ml-003/lecture/78) on Coursera if you're interested in more details of how the k-means algorithm works.)\n", "\n", "### Waveform Space\n", "\n", "To apply such a technique to waveforms, we'll need to decide how we're going to define the space in which clusters will be formed.\n", "\n", "First, we'll need to split the waveform into segments to give us separate \"samples\". But what will our *features* be - what are the variables that will define the *n*-dimensional space? We could go with standard measurements of each segment such as maximum, minimum and spread. But since our technique is generalisable to any number of dimensions, we can do something a bit more clever: we can take each element of the segment as a separate dimension. For a segment containing 32 time values, we define a 32-dimensional space. It is in this 32-dimensional space that we will form our clusters of waveform segments.\n", "\n", "### Waveform Anomaly Detection\n", "\n", "In the example of the power supplies, we detected anomalous samples based on the distance from clusters. For our waveforms, we're going to take a slightly different approach so that we can visualise what's going on.\n", "\n", "Consider our 32-dimensional waveform space. Each point in this space represents a possible waveform segment. Similar segments will cluster together. The middle of each cluster (the *centroid*) will provide some measure of the prototypical waveform pattern that all those segments are specific instances of. (If this is difficult to visualise, the other way to consider it is that the centroid is simply an average of all waveform samples in that cluster.)\n", "\n", "Note that the centroid, being a point in the waveform space, is itself a waveform. Thus, the cluster centroids provide us with a set of \"normal\" waveform segments.\n", "\n", "Suppose we then try to use our set of \"normal\" segments to reconstruct a set of data to be tested. If the data is similar in shape to what has come before it, we will be able to manage a good reconstruction. However, if the data contains some abnormal shape, we will not be able to reconstruct it using our normal shape library, and we will get a reconstruction error. This error will indicate an anomaly!\n", "\n", "In summary, our algorithm will be:\n", "\n", "**Training**:\n", "\n", "* Split waveform data into segments of *n* samples\n", "* Form a space in *n* dimensions, with each segment representing one point\n", "* Determine clustering of segment points, and determine the centres or *centroids* of the clusters\n", "* Cluster centroids provide library of \"normal\" waveform shapes\n", "\n", "**Testing**:\n", "\n", "* Try to reconstruct waveform data to be tested using cluster centroids learned during training\n", "* Poor reconstruction error on any individual segment indicates anomalous shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Our Data Set" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To explore anomaly detection, we'll be using an EKG data set from [PhysioNet](http://physionet.org/physiobank/database/apnea-ecg/), which is essentially the squishy version of the data we'll be getting from servers. Since this data has a very regular waveform, it provides a good vehicle for us to explore the algorithms without getting bogged down in the complications that come with real-world data.\n", "\n", "The data is supplied in the `a02.dat` file. A Python module `ekg_data.py` is provided to read the data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exploring the Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's get started by importing the EKG data module and examining what the data looks like:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(3182000,)\n" ] } ], "source": [ "from __future__ import print_function\n", "import ekg_data\n", "\n", "ekg_filename = 'a02.dat'\n", "ekg_data = ekg_data.read_ekg_data(ekg_filename)\n", "print(ekg_data.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data is provided as a one-dimensional list of floating-point samples:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ekg_data[0]:\t -4.0\n", "ekg_data[1]:\t -4.0\n", "ekg_data.min:\t -572.0\n", "ekg_data.max:\t 580.0\n" ] } ], "source": [ "print(\"ekg_data[0]:\\t\", ekg_data[0])\n", "print(\"ekg_data[1]:\\t\", ekg_data[1])\n", "print(\"ekg_data.min:\\t\", ekg_data.min())\n", "print(\"ekg_data.max:\\t\", ekg_data.max())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also plot a number of samples from the data to get a feel for the waveform:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# IPython 'magic' command to set the matplotlib backend to display\n", "# in the notebook\n", "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "n_samples_to_plot = 300\n", "plt.plot(ekg_data[0:n_samples_to_plot])\n", "plt.xlabel(\"Sample number\")\n", "plt.ylabel(\"Signal value\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since we have rather a lot of data, we'll take just the first 8,000 samples so our examples will run a bit faster:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ekg_data = ekg_data[0:8192]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Windowing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first step in our process is to split the waveform into overlapping segments, with the section of the original data sampled sliding along by two samples each time. We take this approach so that we get instances of each waveform shape with a variety of horizontal translations." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Produced 4081 waveform segments\n" ] } ], "source": [ "import numpy as np\n", "\n", "segment_len = 32\n", "slide_len = 2\n", "\n", "segments = []\n", "for start_pos in range(0, len(ekg_data), slide_len):\n", " end_pos = start_pos + segment_len\n", " # make a copy so changes to 'segments' doesn't modify the original ekg_data\n", " segment = np.copy(ekg_data[start_pos:end_pos])\n", " # if we're at the end and we've got a truncated segment, drop it\n", " if len(segment) != segment_len:\n", " continue\n", " segments.append(segment)\n", "\n", "print(\"Produced %d waveform segments\" % len(segments))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(This code is saved for later reuse in `learn_utils.sliding_chunker`.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a look at the segments we've produced:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import learn_utils\n", "\n", "learn_utils.plot_waves(segments, step=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that these segments do not necessarily begin and end with a value of zero. This could be a problem later on: since the learned \"normal\" segment will then also have non-zero starts and end, when we try to reconstruct our waveform to be tested by adding together our learned segment, we'll end up with discontinuities.\n", "\n", "The way we avoid this problem is to apply a *window function* to the data, which forces the start and end to be zero. A simple window function we can apply is the first half of a sine wave:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAD9CAYAAABDaefJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtYVNX+BvB3EDTvl1RUBkMBBbwMpImWFt4SyfBaYmVG\naORRUY928NIJrE5KV28dRY+YZqHZKbEC6liilgmpgBleQCUHMrwkampycf/+WD+KDEYGZmbtPfN+\nnmeepNnNvG3hy5q1v3stnaIoICIi++AkOwAREVkOizoRkR1hUScisiMs6kREdoRFnYjIjrCoExHZ\nEZNF/emnn05wdXUt6tGjx/fVHRMVFbXc29s712AwZGdmZgZYPiIREdWUyaIeHh6+PjU1Nbi655OT\nk0Py8vK8cnNzvdesWfPM1KlTV1k+IhER1ZTJoj5gwIA9LVu2vFjd89u3bw+dNGnSBgAIDAxMLy4u\nblFUVORq6ZBERFQzznX5jwsLC93c3d2NFV/r9fqCgoICvaura1Hl43Q6HW9bJSKqBUVRdOYcX+cL\npbe+YXUFXFEUzT5iYmKkZ3C0/JcuKYiLU9CkSQyCghSMHWv6MWaMgjZtFIwbp+DAAfn5tXzumV89\nj9qo00jdzc2t0Gg0uld8XVBQoHdzcyusy2uSYzt3Dli+HFi1Chg2DJg4Efj3v2v23169CqxdC4wc\nCXTrBixYAAwYAOjMGucQaVudRuqhoaHbN27c+CQA7Nu3r2+LFi2Kb516IaoJoxGYNQvo2lUU9vR0\n4L33gLZta/4ajRuL18jLAx55BIiIAPr3Bz77DKjloIdIc0yO1CdMmJC4a9euB86fP9/a3d3duGjR\nopjS0lIXAIiMjIwPCQlJTk5ODvHy8spr3Ljx1fXr14fbJrZtBQUFyY5QJ2rOf/w4EBcHfPyxKMKH\nDwMdOvzxfG2yN2ggXuupp4APPwQWLhSj9vnzRbGvV89i8W9Lzee+Jphfe3S1nbcx6010OsUW70Pa\nUVYGzJwJbN0KTJsGzJgBtGplnfdSFCAlBXjlFeDsWeCjj4Du3a3zXkSWpNPpoJh5oZRFnWzut9+A\nxx4Tc+BbtwLNmtnuvTdtAubMAbZvBwIDbfe+RLVRm6LOZQLIpq5cAUaMAJydgU8+sW1BB4AnngAS\nEoCHHwZ27LDtexPZAos62cyFC8CQIUDnzkBiIlC/vpwcDz0k5tofe0xMxRDZExZ1somffgIeeAAI\nCgLi4217sbIq998PpKaK+fz16+VmIbKkOvWpE9XEiRPA0KFAZCQQHS07zR/uvhtISwMefBAoLgZm\nz5adiKjuWNTJqg4dAoYPB2JigGeekZ3mr7p2BfbsEb90fvkFePFF3qxE2sbuF7Kab78FRo0Sd4iO\nHy87jWlnzwLBwcC994q8TpyYJBVgSyOpxhdfAI8/DmzcKEbqWnDpEhAaCuj1wDvvAC4ushORo2NR\nJ1XYvRsYN050lvTvLzuNea5fBx59FGjSBHj/fU7FkFzsUyfpzp0TrYIbN2qvoANAw4bihqgjR0SX\nDpHWcKROFnPzprixqEcPsZ6Llh0/Dtx3n7hByWCQnYYcFUfqJNWbbwIXLwIvvyw7Sd116QK89Za4\nwPvrr7LTENUcR+pkEfv2iXXMMzKAu+6SncZynn4aKC8HNmyQnYQcEUfqJMXFi0BYmJiDtqeCDgAr\nVgDffceiTtrBkTrViaIAY8cC7u7AsmWy01jH4cPAwIGiq8fXV3YaciQcqZPNvf028OOPwKuvyk5i\nPd27A4sXi1bH69dlpyEyjSN1qrXMTLGP6N69gJeX7DTWpSjiZqpmzYDVq2WnIUfBkTrZzJUrYuS6\nfLn9F3RA3IS0ejXw5ZfAli2y0xBVjyN1MlvFqLVJE2DNGtlpbOvgQbFGzLffAp6estOQveNInWwi\nIQH4/ntg6VLZSWzv7ruBf/5T9K/fuCE7DdFfcaROZvnhB7HRxa5dgJ+f7DRyKAowZoxo33TEX2xk\nOxypk1WVlYlpl7g4xy3ogJhfT0gAtm0Tc+xEasKiTjW2Zg3QsiUQHi47iXwtW4pRelQUUFoqOw3R\nHzj9QjVy4YIYne/YIRbsIjENM2yYWMQsKkp2GrJHXE+drGbaNLEb0IoVspOoy5EjYhPrnBygTRvZ\nacjesKiTVWRni82ZjxwBWrWSnUZ9Zs8Grl51vPZOsj4WdbI4RRHrnoSFAc8+KzuNOhUXAz4+QHKy\naHkkshR2v5DFbd0qitaUKbKTqFeLFmIN+ago8UuQSCYWdarWtWvAc8+JpQDq1ZOdRt3Cw4HffgMS\nE2UnIUfH6ReqVkyM2NaNhapm9u4V6+EcPSqWUCCqK86pk8Xk5wO9egFZWWKtdKqZiRPF+XrlFdlJ\nyB6wqJPFjBsH+PsDzz8vO4m2/PQT0LMnkJ7OBb+o7ljUySK++gqIiBC91w0byk6jPUuWiFUck5Jk\nJyGtY/cL1VlZmejiePNNFvTamj1bLHz2+eeyk5AjYlGnP1m1CmjXDhg1SnYS7WrQAHjrLWDmTKCk\nRHYacjS3LeqpqanBPj4+R729vXPj4uKib33+/PnzrYODg1P9/f2zunfvfvidd955yipJyerOnQNe\nfFFsIK0z6wMf3WrECKBTJ2DlStlJyNGYnFMvLy+v17Vr12M7duwY4ubmVnjPPfd8l5iYOMHX1/dI\nxTGxsbGxN27caLB48eL558+fb921a9djRUVFrs7OzmW/vwnn1DXh2WeBO+7gGuGWcuwY0L8/cPgw\n4OoqOw1pkcXn1DMyMvp4eXnleXh45Lu4uJSGhYVtTkpKGln5mPbt25+5fPlyMwC4fPlyszvvvPNC\n5YJO2pCVJdYHj42VncR+dO0KTJoELFwoOwk5EmdTTxYWFrq5u7sbK77W6/UF6enpgZWPmTJlytpB\ngwZ91aFDh5+uXLnS9IMPPni0qteKrVQtgoKCEBQUVKfgZFkxMcCCBeKWd7Kcf/5TbMw9b55jbNBN\ndZOWloa0tLQ6vYbJoq7T6W47Z/LKK68s8Pf3z0pLSws6ceKE59ChQ/+XnZ1taNq06ZXKx8VyCKha\nBw8C+/cDW7bITmJ/mjcHZswQa8O8847sNKR2tw54Fy1aZPZrmJx+cXNzKzQajb/fT2g0Gt31en1B\n5WP27t177yOPPLIVADw9PU906tTp1LFjx7qanYSkWbQIiI4W8+lkeVFRwKefAnl5spOQIzBZ1Hv3\n7r0/NzfXOz8/36OkpKT+li1bxoeGhm6vfIyPj8/RHTt2DAGAoqIi12PHjnXt3LnzSWuGJsvJzBSj\ndK7CaD0tWojR+r/+JTsJOQKT0y/Ozs5lK1eunD5s2LDPy8vL60VERKzz9fU9Eh8fHwkAkZGR8QsW\nLHglPDx8vcFgyL5586bTq6+++o9WrVr9Ypv4VFcVo3TeaGRdM2eKOfW8PM6tk3VxmQAHlpkp+qnz\n8ljUbWHRIrFQ2vr1spOQVnDtFzLLqFHAoEHcNNlWiovFKH3fPo7WqWZY1KnGOEqXg6N1MgeLOtXY\n6NFAUJCY6yXbqRitc2leqgkWdaqRzEzgoYeAEyc4SpchNhY4fRpISJCdhNSORZ1qhKN0uThap5pi\nUafb4ihdHThap5pgUafb4ihdHThap5pgUSeTsrKAkBCO0tUiJgYwGjlap+qxqJNJY8YA998PzJol\nOwkBwMWLgLc3kJEBdO4sOw2pEYs6VYujdHWKiQEKCoB162QnITViUadqcZSuThytkyks6lQljtLV\njaN1qg6LOlWJo3R142idqsOiTn9x7Jgo6KdOAY0ayU5D1Vm4ELh0CVi5UnYSUhMWdfqLyEigfXtu\nKK12Z84A3boBubnAnXfKTkNqwaJOf3L2rNjR/tgxoG1b2WnodiIigE6dgOefl52E1IJFnf4kNlaM\nAOPjZSehmvjhB2DIEDFVxv1iCWBRp0quXQM8PIA9e8RonbQhJAQYO1aM2olqU9RNbjxN2rVxI9Cv\nHwu61sydC7zxBnDzpuwkpFUs6nbo5k3gzTeBOXNkJyFzDRwINGgApKbKTkJaxaJuhz75BGjRAhgw\nQHYSMpdOJ0brr78uOwlpFYu6HXr9dTFK15k1E0dq8eijorXx4EHZSUiLWNTtTHq6WM517FjZSai2\nXFzEevdvvCE7CWkRu1/szKOPAvfdx00wtO7SJbFkQGYm0LGj7DQkC1saHdypU8A994h/Nm0qOw3V\nVcUUGufXHReLuoObOVOswrhkiewkZAmnTwMBAcDJk0Dz5rLTkAws6g7sl1/Enpfffw+4uclOQ5by\n2GNAr15sT3VULOoObPFi4OhRYMMG2UnIkg4cAEaNEqN1FxfZacjWeEepg7pxA1ixgqM5e9Srl1hr\n/YMPZCchrWBRtwOJiUD37kDPnrKTkDXMmSPaG/lhl2qCRV3jFEX8wM+dKzsJWcvw4cBvvwE7d8pO\nQlrAoq5xX3wh2t6GDpWdhKzFyUmM1tnaSDXBoq5xXBLAMTz+uLgR6YcfZCchtWNR17CsLCAnB5gw\nQXYSsrY77gCmTROrbxKZwpZGDQsPB7p0AebPl52EbOHCBXEvArcndBzsU3cgFfuP5uYCrVvLTkO2\nMmWK2NFq4ULZScgWrNKnnpqaGuzj43PU29s7Ny4uLrqqY9LS0oICAgIyu3fvfjgoKCjNnABUO2vX\nAmPGsKA7mhkzgFWrgNJS2UlItRRFqfZRVlZWz9PTM+/UqVMeJSUlLgaDISsnJ8e38jEXL15s4efn\n94PRaNQrioJz5861vvV1xNuQpZSUKIqbm6JkZspOQjI88ICibN4sOwXZwv/XTpN1+taHyZF6RkZG\nHy8vrzwPD498FxeX0rCwsM1JSUkjKx/z/vvvPzZ27Nj/6vX6AgBo3br1eav9BiIAwMcfA56egL+/\n7CQkQ1SUuIOYqCrOpp4sLCx0c3d3N1Z8rdfrC9LT0wMrH5Obm+tdWlrqMnDgwJ1XrlxpOnPmzGUT\nJ05899bXio2N/f3PQUFBCAoKqnN4R7V8OTB7tuwUJEtoqPj7P3BALCNA9iMtLQ1paWl1eg2TRV2n\n09326mZpaanLwYMH7/7yyy8HX7t2rVG/fv2+7du37z5vb+/cysdVLupUewcPiiVZR468/bFkn5yd\ngb/9TYzW33lHdhqypFsHvIsWLTL7NUwWdTc3t0Kj0ehe8bXRaHSvmGap4O7ubmzduvX5hg0bXm/Y\nsOH1+++/f3d2drbh1qJOlrFihfiBdjb5N0f2bvJk0d549izbG+nPTM6p9+7de39ubq53fn6+R0lJ\nSf0tW7aMDw0N3V75mJEjRyZ9/fXX/cvLy+tdu3atUXp6eqCfn1+OdWM7prNngW3bxA80ObY77wTG\njRNdUESVmRzvOTs7l61cuXL6sGHDPi8vL68XERGxztfX90h8fHwkAERGRsb7+PgcDQ4OTu3Zs+ch\nJyenm1OmTFnLom4dbGOkymbMAEJCgH/8g2ut0x9485FGlJYCnToBn37Krhf6Q1AQMHUqMH687CRk\nDdwkw46xjZGqEhUluqGIKrCoa8Ty5eIHmKiy0FCgoEC0NxIBLOqawDZGqk7l9kYigHPqmhAeLhbv\nmjdPdhJSI67eaL+4SqMd4mqMVBNTpgB33QU8/7zsJGRJvFBqh9jGSDUxYwawejVXbyQWdVUrLRXL\nrM6YITsJqV3PnmIK5qOPZCch2VjUVYxtjGQOtjcSwKKuamxjJHOwvZEAFnXVYhsjmYvtjQSw+0W1\n2MZItcH2RvvClkY7ce4c0KUL2xipdtjeaD/Y0mgn1q4FRo9mQafamT6d7Y2OjEVdZcrK2MZIdWMw\nAJ07i7X3yfGwqKtMUpL46BwQIDsJadmMGbxg6qhY1FVm5Urx8ZmoLkaNAk6eBLKzZSchW2NRV5Hv\nvxddC2PGyE5CWufiAjz7rBgkkGNh94uKREYCHToAMTGyk5A9KCoCfHyAEyeAVq1kp6HaYEujhl28\nKC5uHTkCtGsnOw3Zi4kTxYXTuXNlJ6HaYEujhq1fLzYRZkEnS5oxA3j7baC8XHYSshUWdRW4eVP8\n4PECKVlanz5AmzZAcrLsJGQrLOoqkJICtGwJ9O0rOwnZI7Y3OhYWdRVYsUKM0nVmzZwR1cyjj4rW\nxqNHZSchW2BRl+z4cbEiY1iY7CRkrxo0EOvBvP227CRkC+x+kWzmTKBRI2DxYtlJyJ4VFIjdkfLz\ngWbNZKehmmJLo8ZcuSKWBMjKAjp2lJ2G7N0jjwAPPMAL8lrClkaNefddYOBAFnSyjRkzxB2mN2/K\nTkLWxKIuiaJwnReyrQEDgPr1gR07ZCcha2JRl+SrrwAnJyAoSHYSchQ63R+jdbJfnFOXZNQoIDhY\nLLpEZCtXr4rrOBkZYlkKUjdeKNWI/HygVy/gxx+BJk1kpyFHM3euGLW/9prsJHQ7LOoaER0tthp7\n803ZScgRnTwplg84fVq005J6sftFA65fBxISgL/9TXYSclSdOwP9+gHvvSc7CVkDi7qNJSaKUZKX\nl+wk5Mgq1oPhB2j7w6JuQ4oCLF/OTaVJviFDgJISYPdu2UnI0ljUbWjXLuDGDeDBB2UnIUfn5CSW\nqFi6VHYSsrTbFvXU1NRgHx+fo97e3rlxcXHR1R333Xff3ePs7Fz20UcfcYfNaixdKn6QnPirlFTg\nySeBPXvEhVOyHybLS3l5eb3p06evTE1NDc7JyfFLTEyccOTIEd+qjouOjo4LDg5ONfdKraM4cQL4\n+muxvRiRGjRuDEREcK11e2OyqGdkZPTx8vLK8/DwyHdxcSkNCwvbnJSUNPLW41asWDFj3LhxH7Zp\n0+ac9aJq24oVwOTJ4geJSC2mTQM2bAAuX5adhCzF2dSThYWFbu7u7saKr/V6fUF6enrgrcckJSWN\n/OqrrwZ999139+h0uiqvp8fGxv7+56CgIAQ50P3xly8DGzeKjQqI1KRjR2DoULFH7syZstNQWloa\n0tLS6vQaJot6dQW6slmzZi1dsmTJvP+/wUhX3fRL5aLuaBISxMVRd3fZSYj+atYs4IknxOJy9erJ\nTuPYbh3wLlq0yOzXMFnU3dzcCo1G4++lyGg0uuv1+oLKxxw4cKBXWFjYZgA4f/5865SUlOEuLi6l\noaGh281OY4fKy0Ub4/vvy05CVLW+fYHWrYFPPwVG/mVylbTG5DIBZWVlzl27dj325ZdfDu7QocNP\nffr0yUhMTJzg6+t7pKrjw8PD1z/88MOfjBkz5qM/vYkDLxOwbRuwZAmwb5/sJETVS0wE1qwBdu6U\nnYQqs/gyAc7OzmUrV66cPmzYsM/9/Pxyxo8fv8XX1/dIfHx8ZHx8fGTd4jqGpUvFx1siNRs3DsjN\nFbtwkbZxQS8ryswEHn4YOHUKcHGRnYbItMWLxUbo69fLTkIVuEqjyjz1FODjA8ybJzsJ0e1duCDW\nJDp6FHB1lZ2GABZ1Vfn5Z8DXV9x01KqV7DRENRMZCXToAMTEyE5CAIu6qsTGAkVFwKpVspMQ1VxO\nDjBokNjApUED2WmI66mrxG+/AatXA1FRspMQmcfPD/D3BzZvlp2EaotF3Qo2bwYCAsT0C5HWzJol\nurYc7MO13WBRtzBFYRsjaduDD4pPm1xrXZtY1C1s1y6x+QDXTCet4lrr2sYLpRY2ahQwfLjoIiDS\nqqtXAQ8PID1d7GlKcrD7RbITJ8Q6Gj/+yF3aSfvmzRM7db31luwkjotFXbJZs4CGDcWdeURaZzSK\nTphTp4BmzWSncUws6hJdugR06gQcOgTo9bLTEFlGWJj49MkL/3KwT12i1avFXDoLOtmTv/9dTL+U\nlspOQjXFom4B16+LTgGu8UL2pk8fsR4M9wPQDhZ1C3jnHaB3b6BHD9lJiCxv/nwgLg64eVN2EqoJ\nFvU6KisDXntNfOMT2aPBg8WG6du5l5kmsKjX0QcfiHn0e++VnYTIOnQ6MbW4eDGXDtACFvU6UBSx\nVR1H6WTvRo8WHV7c7k79WNTr4LPPxO7rwcGykxBZl5MTEB3NezC0gEW9lhRFfIPPmyc+nhLZu8cf\nB44dA/bvl52ETGFRr6U9e8QmGOPGyU5CZBv16wNz5nC0rna8o7SWQkLE4l3PPCM7CZHtXL0q7pze\nvVvsv0vWxTtKbSQrC8jOBiZNkp2EyLYaNwamTwdefVV2EqoOR+q1EBYmbjaaO1d2EiLb++UXcZdp\ndjbg7i47jX3jgl42kJcH9OsHnDwJNG0qOw2RHHPnihvvuJGGdbGo28AzzwDt2gEvvig7CZE8P/0E\ndO8OHD8OtG4tO439YlG3sopv5GPHgDZtZKchkmvKFKBDB2DRItlJ7BeLupU995zYf3TZMtlJiOTL\nzRXLY3Aq0npY1K3o4kVxcSgzE+jYUXYaInUYP14szztnjuwk9olF3YpeekmMSNavl52ESD0yM4ER\nI8TPRoMGstPYHxZ1K6m44WLXLsDXV3YaInUZPhwYM0bMsZNl8eYjK/nPf4D+/VnQiaoyb564Gam8\nXHYSAljUb+vaNfENu2CB7CRE6nT//aLNd9Mm2UkI4PTLbS1eDBw8CGzdKjsJkXp9/fUfqzjecYfs\nNPaDc+oW9ssvQJcuwN694p9EVL2HHwYGDQJmz5adxH6wqFvYc88Bly8D8fGykxCp3/ffA0OGiLtM\nmzeXncY+WOVCaWpqarCPj89Rb2/v3Li4uOhbn3/vvfceNxgM2T179jx03333fXPo0KGe5gRQK6MR\nSEgAYmJkJyHShh49RCfM66/LTuLgFEWp9lFWVlbP09Mz79SpUx4lJSUuBoMhKycnx7fyMXv37u1X\nXFzcXFEUpKSkBAcGBu679XXE22jL008ryvz5slMQaUt+vqK0aqUoZ87ITmIf/r92mqzTtz5MjtQz\nMjL6eHl55Xl4eOS7uLiUhoWFbU5KShpZ+Zh+/fp927x580sAEBgYmF5QUKC32m8gG8nJAT75BPjH\nP2QnIdKWu+4S+wy89JLsJI7L2dSThYWFbu7u7saKr/V6fUF6enpgdcevW7cuIiQkJLmq52JjY3//\nc1BQEIKCgswOaysLFoiC3qKF7CRE2rNggdgVafZssbQG1VxaWhrS0tLq9Bomi7pOp6vx1c2dO3cO\nTEhIePqbb765r6rnKxd1Ndu7V7Qwbt4sOwmRNrVuDcyaBTz/PH+OzHXrgHdRLZbANDn94ubmVmg0\nGn/f28RoNLrr9fqCW487dOhQzylTpqzdvn17aMuWLS+anUIlFEXcHRcby15borqYPVvsY3rggOwk\njsdkUe/du/f+3Nxc7/z8fI+SkpL6W7ZsGR8aGrq98jGnT5/uOGbMmI82bdr0hJeXV55141pXcjJw\n/jzw5JOykxBpW+PGYqQ+f77sJI7ntn3qKSkpw2fNmrW0vLy8XkRExLr58+cvjo+PjwSAyMjI+MmT\nJ//n448/Ht2xY8fTAODi4lKakZHR509vooE+9fJyICBAXOAZOfL2xxORaaWlgJ8fsGqV6F8n8/Hm\nozrYuFHcZPT114DOrFNIRNXZsgV47TUgIwNw4kpTZuMqjbV04wbwwgvAkiUs6ESW9Mgj4lrVhx/K\nTuI4WNQhPh527w4MGCA7CZF9cXISg6WFC8V0DFmfw0+/XL4MeHsDO3aI25yJyPKGDAHGjQOefVZ2\nEm3hnHotvPACkJ8v5tSJyDr27wdCQ8Vm1Y0by06jHSzqZvr5Z6BbN9FL6+EhOw2RfXv0UcBgEFMx\nVDMs6mYKCxNrVcTFyU5CZP9OnAACA0UnTOfOstNoA7tfzJCUJEboXFqXyDY8PYHoaLFBtQrHeHbD\nIYt6cTEwbZrYULpRI9lpiBzH7NnApUvAunWyk9gvh5x+mTIFcHYWrYxEZFuHDgGDBwNZWYCbm+w0\n6sY59Rr48ksgPBw4fBho1kx2GiLH9MILQHY2sG0bb/gzhXPqt3H1qhilr1rFgk4k08KFQF4e8MEH\nspPYH4caqc+eDZw7B2zaJDsJEe3bB4waJT41t24tO406cfrFhH37gNGjxY7n/AYiUoe//x04e5YD\nrepw+qUaN24ATz8NLF3Kgk6kJi+9BHz7LfDZZ7KT2A+HKOr/+hfQpYu4o42I1KNxY2DtWrEmzOXL\nstPYB7uffsnOFosJZWcDHTpIiUBEtzFlClCvHrB6tewk6sI59VuUlQF9+wJTpwIRETZ/eyKqoeJi\nsfz1pk1ApX2XHR7n1G/x1ltAixZiPp2I1KtFC+Df/xYj9mvXZKfRNrsdqR8/Dtx7LxcPItKSCRMA\nvV5sgUecfvldSQkwaJBYlH/WLJu9LRHV0blzYrOarVu5ExnA6RcAYvW3yZNF6+KMGbLTEJE52rQB\nNmwQe5vm5spOo012V9RjYoBjx4D33xdX04lIW4YNA15+GRg+XIzcyTzOsgNYUkIC8N574mYGLqlL\npF2TJ4ttJkNDga++Aho2lJ1IO+xmTv2LL4CJE4Hdu4GuXa36VkRkA4oifqavXRNz7I74ydth59Sz\ns4EnngD++18WdCJ7odOJzTQuXgTmzpWdRjs0X9QLCoARI4AVK4D+/WWnISJLatAA+Ogj4PPPgeXL\nZafRBk3PqV++DDz0EBAVBYwfLzsNEVlDy5ZASoq476RjR7FcL1VPs3PqpaWioHt5AW+/zd1TiOzd\ngQNAcDDw6adAYKDsNLbhMHPqigJERgL164uPZCzoRPavVy9g/XoxUj9xQnYa9dJkUX/5ZbF57ebN\nYgNpInIMI0aIe1FCQoALF2SnUSdNFfWbN4G4ONGP/umnQJMmshMRka09+6wYrYeEAEaj7DTqo5mi\nXlAADB0KbN8O7NwJtGsnOxERybJ4sSjsvXqJT+z0B00U9a1bxV/ewIHArl2Ah4fsREQkk5MTMH8+\nkJwspmMmTgQuXZKdSh1UXdQvXwaeegpYsAD45BPg+ec5h05Ef+jdGzh4UEzF+vsDX38tO5F8qi3q\ne/cCAQGAiwuQmQn06SM7ERGpUePGwKpVohPukUeAhQtFy7OjUl1RLy0VH6fGjAFef11sSiv7gmha\nWprcAHWk5fxazg4wvy09/LAYAGZmihuVjh/XVn5LuW1RT01NDfbx8Tnq7e2dGxcXF13VMVFRUcu9\nvb1zDQZ56zLnAAAGzElEQVRDdmZmZkBtw+TliYXx9+0TH6lGj67tK1mW1r8xtJxfy9kB5re1du2A\nzz4T07b33gu88UYaJO15L43Jol5eXl5v+vTpK1NTU4NzcnL8EhMTJxw5csS38jHJyckheXl5Xrm5\nud5r1qx5ZurUqatq+uaXLwOpqWLOfMAAMT82YYK4JbhDh9r+LxGRI9PpgGnTxIqt+/cDnp6iyK9b\nJ0bv9l7kTRb1jIyMPl5eXnkeHh75Li4upWFhYZuTkpJGVj5m+/btoZMmTdoAAIGBgenFxcUtioqK\nXKt6vaIi4MMPgZkzgbvvFoV7yRKxpOYLL4ie05kzxZVtIqK68PMDnnlG3NPSt69Yl33IEKB9ezH3\nvny5mKopL5ed1MIURan2sXXr1nGTJ09eW/H1u++++8T06dNXVD5mxIgRn3zzzTf3Vnw9ePDgHfv3\n7+9V+RgACh988MEHH+Y/TNXoqh4mGwR1Op1i6vkKty44c+t/Z+6CNEREVDsmJzrc3NwKjUaje8XX\nRqPRXa/XF5g6pqCgQO/m5lZo+ahERHQ7Jot679699+fm5nrn5+d7lJSU1N+yZcv40NDQ7ZWPCQ0N\n3b5x48YnAWDfvn19W7RoUezq6lpkzdBERFQ1k9Mvzs7OZStXrpw+bNiwz8vLy+tFRESs8/X1PRIf\nHx8JAJGRkfEhISHJycnJIV5eXnmNGze+un79+nDbRCcior8wdxLe3EdKSkpw165dj3p5eeUuWbIk\n2trvZ+nHXXfdld+jR49D/v7+mffcc0+G7Dy3e4SHhye0bdu2qHv37t9X/LsLFy60GjJkyP+8vb2P\nDx069IuLFy+2kJ3TnPwxMTGxbm5uBf7+/pn+/v6ZKSkpwbJzVvU4ffq0e1BQ0E4/P78funXrdnjZ\nsmVRWjr/1eXXyvm/fv36HX369Ek3GAxZvr6+OfPmzVuspfNfXX5zz79VQ5aVldXz9PTMO3XqlEdJ\nSYmLwWDIysnJ8ZV98sx5eHh4nLpw4UIr2Tlq+ti9e/eAgwcPBlQuis8999yrcXFx/1AUBUuWLImO\njo5eIjunOfljY2Nj3njjjb/Lzna7x5kzZ9plZmb6K4qCK1euNOnSpcuxnJwcX62c/+rya+X8K4qC\nq1evNlIUBaWlpc6BgYH79uzZ018r57+6/Oaef6t2hNekz10LFA117wwYMGBPy5YtL1b+d5XvJZg0\nadKGbdu2qXaXx6ryA9r4O2jXrt3P/v7+WQDQpEmTX319fY8UFha6aeX8V5cf0Mb5B4BGjRpdA4CS\nkpL65eXl9Vq2bHlRK+cfqDo/YN75t2pRLywsdHN3d/99GXu9Xl9Q8U2iFTqdThkyZMiO3r1771+7\ndu0U2Xlqo6ioyLXi4rWrq2tRdTeHqdmKFStmGAyG7IiIiHXFxcUtZOe5nfz8fI/MzMyAwMDAdC2e\n/4r8ffv23Qdo5/zfvHnTyd/fP8vV1bVo4MCBO7t16/aDls5/VfkB886/VYt6Tfvc1eybb765LzMz\nMyAlJWX422+/PW3Pnj0DZGeqC51Op2jt72Xq1KmrTp061SkrK8u/ffv2Z+bMmfOG7Eym/Prrr03G\njh3732XLls1s2rTplcrPaeH8//rrr03GjRv34bJly2Y2adLkVy2dfycnp5tZWVn+BQUF+t27d9+/\nc+fOgZWfV/v5vzV/WlpakLnn36pFvSZ97mrXvn37MwDQpk2bc6NHj/44IyNDc4sAu7q6Fv3888/t\nAODMmTPt27Zte1Z2JnO0bdv2bMUP4+TJk/+j5r+D0tJSl7Fjx/534sSJ744aNWoboK3zX5H/iSee\n2FSRX0vnv0Lz5s0vPfTQQ58dOHCgl5bOf4WK/Pv37+9t7vm3alGvSZ+7ml27dq3RlStXmgLA1atX\nG3/xxRcP9ujR43vZucwVGhq6fcOGDZMAYMOGDZMqfli14syZM+0r/vzxxx+PVuvfgaIouoiIiHV+\nfn45s2bNWlrx77Vy/qvLr5Xzf/78+dYVUxPXr19v+L///W9oQEBAplbOf3X5K34hATU8/9a+mpuc\nnDy8S5cuxzw9PfNeeeWV+bKvLpvzOHnyZCeDwZBlMBiyunXrdlgL+cPCwhLbt2//k4uLS4lerzcm\nJCSEX7hwodXgwYN3qL2lq6r869ate3rixIkbe/Tocahnz57ZI0eO3Pbzzz+7ys5Z1WPPnj39dTrd\nTYPBkFW5/Uwr57+q/MnJycO1cv4PHTrUIyAg4KDBYMjq0aPHoVdfffU5RREtjVo4/9XlN/f86xRF\ntdNLRERkJi5yS0RkR1jUiYjsCIs6EZEdYVEnIrIjLOpERHaERZ2IyI78HxnA6WKXxEQdAAAAAElF\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "window_rads = np.linspace(0, np.pi, segment_len)\n", "window = np.sin(window_rads)**2\n", "plt.plot(window)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then multiply each segment by this window function:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "windowed_segments = []\n", "for segment in segments:\n", " windowed_segment = np.copy(segment) * window\n", " windowed_segments.append(windowed_segment)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotting the result, we see the difference that the windowing process makes. The segments are now flat at the start and end - perfect to be joined together later." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nJPn/V9yugzSl0rUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn_utils.plot_waves(windowed_segments, step=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that windowing also has the effect of making the segments less affected by the waveform either side of the segment. The waveform shape represented by the segment is now more \"concentrated\" in the middle." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Clustering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we cluster our waveform segments in 32-dimensional space. The k-means algorithm is provided by Python's *scikit-learn* library." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "KMeans(copy_x=True, init='k-means++', max_iter=300, n_clusters=150, n_init=10,\n", " n_jobs=1, precompute_distances='auto', random_state=None, tol=0.0001,\n", " verbose=0)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.cluster import KMeans\n", "\n", "clusterer = KMeans(n_clusters=150)\n", "clusterer.fit(windowed_segments)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The cluster centroids are available through the `cluster_centers` attribute. Let's take a look to see what sort of shapes it's learned:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn_utils.plot_waves(clusterer.cluster_centers_, step=15)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The clusterer appears to have learned a small number of basic shapes, with various horizontal translations. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reconstruction from Clusters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we come to the interesting part of the algorithm: reconstructing our waveform to be tested using the learned library of shapes. Our approach is going to be very simple. We'll:\n", "\n", "* Split the data into overlapping segments\n", "* Find the cluster centroid which best matches our segment\n", "* Use that centroid as the reconstruction for that segment\n", "* Join the reconstruction segments up to form the reconstruction\n", "\n", "This time, we only need enough overlap between segments to allow us to stitch the reconstructions back together again, so we'll go with an overlap of half a segment.\n", "\n", "First, let's see how well we do at reconstructing the original waveform. We first form segments:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "slide_len = segment_len/2\n", "test_segments = learn_utils.sliding_chunker(\n", " ekg_data,\n", " window_len=segment_len,\n", " slide_len=slide_len\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before trying to reconstruct the whole thing, we can check how the reconstruction fares for individual segments. Try changing the segment index to see the reconstruction for different segments." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "centroids = clusterer.cluster_centers_\n", "\n", "segment = np.copy(test_segments[0])\n", "# remember, the clustering was set up using the windowed data\n", "# so to find a match, we should also window our search key\n", "windowed_segment = segment * window\n", "# predict() returns a list of centres to cope with the possibility of multiple\n", "# samples being passed\n", "nearest_centroid_idx = clusterer.predict(windowed_segment)[0]\n", "nearest_centroid = np.copy(centroids[nearest_centroid_idx])\n", "plt.figure()\n", "plt.plot(segment, label=\"Original segment\")\n", "plt.plot(windowed_segment, label=\"Windowed segment\")\n", "plt.plot(nearest_centroid, label=\"Nearest centroid\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking good! So now, let's go ahead and try and reconstruct the full set of data." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Maximum reconstruction error was 12.4\n", "98th percentile of reconstruction error was 5.6\n" ] }, { "data": { "image/png": "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\n6rmIAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "reconstruction = np.zeros(len(ekg_data))\n", "slide_len = segment_len/2\n", "\n", "for segment_n, segment in enumerate(test_segments):\n", " # don't modify the data in segments\n", " segment = np.copy(segment)\n", " segment *= window\n", " nearest_centroid_idx = clusterer.predict(segment)[0]\n", " centroids = clusterer.cluster_centers_\n", " nearest_centroid = np.copy(centroids[nearest_centroid_idx])\n", " \n", " # overlay our reconstructed segments with an overlap of half a segment\n", " pos = segment_n * slide_len\n", " reconstruction[pos:pos+segment_len] += nearest_centroid\n", "\n", "n_plot_samples = 300\n", "\n", "error = reconstruction[0:n_plot_samples] - ekg_data[0:n_plot_samples]\n", "error_98th_percentile = np.percentile(error, 98)\n", "print(\"Maximum reconstruction error was %.1f\" % error.max())\n", "print(\"98th percentile of reconstruction error was %.1f\" % error_98th_percentile)\n", "\n", "plt.plot(ekg_data[0:n_plot_samples], label=\"Original EKG\")\n", "plt.plot(reconstruction[0:n_plot_samples], label=\"Reconstructed EKG\")\n", "plt.plot(error[0:n_plot_samples], label=\"Reconstruction Error\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(This reconstruction code is stored in `learn_utils.reconstruct` for later reuse.)\n", "\n", "The reconstruction is not bad at all!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Anomaly Detection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we're confident in our reconstruction algorithm, let's see what happens when we have an anomalous waveform. We'll introduce the anomaly manually by zeroing out a small number of samples of the original:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ekg_data_anomalous = np.copy(ekg_data)\n", "ekg_data_anomalous[210:215] = 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then attempting a reconstruction of this data, using the same code as above:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Maximum reconstruction error was 55.6\n", "98th percentile of reconstruction error was 9.5\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "recontruction = \\\n", " learn_utils.reconstruct(ekg_data_anomalous, window, clusterer)\n", " \n", "error = reconstruction[0:n_plot_samples] - ekg_data_anomalous[0:n_plot_samples]\n", "error_98th_percentile = np.percentile(error, 98)\n", "print(\"Maximum reconstruction error was %.1f\" % error.max())\n", "print(\"98th percentile of reconstruction error was %.1f\" % error_98th_percentile)\n", "\n", "plt.plot(ekg_data_anomalous[0:n_plot_samples], label=\"Original EKG\")\n", "plt.plot(reconstruction[0:n_plot_samples], label=\"Reconstructed EKG\")\n", "plt.plot(error[0:n_plot_samples], label=\"Reconstruction Error\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since our anomaly has produced a shape in the waveform that hadn't been seen before, the waveform around that point couldn't be reconstructed using the learned shape library. This gives a large, easily visible reconstruction error! This error could be easily detected using a simple threshold detector." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We've looked at one example of the use of unsupervised learning techniques in systems administration: anomaly detection of time series data based on reconstruction error from k-means clustering.\n", "\n", "This problem could have been solved in different ways. For example, we could have trained a predictive neural network model, and examined the difference between the predicted waveform and the actual waveform. In general, there is no 'one size fits all' solution in machine learning - different techniques will be required for different problems.\n", "\n", "A standalone script containing our full set of code is available in this repository as `learn.py`." ] } ], "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.5" } }, "nbformat": 4, "nbformat_minor": 0 }