{ "cells": [ { "cell_type": "markdown", "id": "9c53869e", "metadata": {}, "source": [ "# \"That's Unusual!\"\n", "\n", "## An Anomaly Detection System" ] }, { "cell_type": "markdown", "id": "52ca9e65", "metadata": {}, "source": [ "Here, we implement an anomaly detection algorithm and use it to detect failing servers on a network." ] }, { "cell_type": "code", "execution_count": 99, "id": "57d25c98", "metadata": {}, "outputs": [], "source": [ "# standard imports for any python ML project\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import seaborn as sns\n", "import scipy.io" ] }, { "cell_type": "markdown", "id": "41477abf", "metadata": {}, "source": [ "The following two cells import initial training and cross-validation data for use in constructing and testing our model. " ] }, { "cell_type": "code", "execution_count": 100, "id": "882f1c00", "metadata": {}, "outputs": [], "source": [ "data = scipy.io.loadmat('data/ex8data1.mat')" ] }, { "cell_type": "code", "execution_count": 101, "id": "02b69ab5", "metadata": {}, "outputs": [], "source": [ "X_train = data['X']\n", "Xval = data['Xval']\n", "yval = data['yval']" ] }, { "cell_type": "markdown", "id": "90db5dfe", "metadata": {}, "source": [ "The features imported above measure the throughput (mb/s) and latency (ms) of the response of each server. While our servers were operating, we collected $m = 307$ examples of how they were behaving and, thus, created an unlabeled dataset $\\{x^{(1)},\\ldots,x^{(m)}\\}$. We suspect that the vast majority of servers in our sample are acting normally, but there might also be servers acting anomalously within this dataset." ] }, { "cell_type": "markdown", "id": "5e626e84", "metadata": {}, "source": [ "We will use a Gaussian model to detect anomalous examples in our dataset. We begin by examining the 2D dataset above, which will allow us to visualize what the algorithm is doing. On this dataset, we will 1) fit a Gaussian distribution and 2) find values that have very low probability of occurence. Servers with characteristics that have a low-probability of occurence are, by definition, anomalies. Once our exploration of our 2D data set is complete, we will apply the anomaly detection algorithm to a larger dataset with many dimensions." ] }, { "cell_type": "code", "execution_count": 102, "id": "12ab8e53", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAG2CAYAAACZEEfAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9rUlEQVR4nO3deXhU9d3//9ckkGELQYRsEpKUTWUTxSIoksaSQiuL9lZbKgS4XahAv9xYsWiRECworVQrSq+2QrUueFdFvYuKCCSAiAUKBS03hRKWW4lBhITNUJLz+2N+Z3JmMpPMJCfMzMnzcV1zJWeZM++MczkvPuezuAzDMAQAAOBQcZEuAAAAoCkRdgAAgKMRdgAAgKMRdgAAgKMRdgAAgKMRdgAAgKMRdgAAgKMRdgAAgKMRdgAAgKMRdgAAgKNFNOwsXbpU/fr1U/v27dW+fXsNHjxY7777rve4YRgqKChQenq6WrdurZycHH366acRrBgAAMSaiIadLl266LHHHtO2bdu0bds25ebmasyYMd5As2jRIi1evFhLlizR1q1blZqaquHDh+vUqVORLBsAAMQQV7QtBNqxY0f98pe/1OTJk5Wenq4ZM2bowQcflCRVVlYqJSVFjz/+uO69994IVwoAAGJBi0gXYKqqqtKf//xnnTlzRoMHD1ZJSYlKS0uVl5fnPcftdmvYsGHavHlz0LBTWVmpyspK73Z1dbW++uorXXrppXK5XE3+dwAAgMYzDEOnTp1Senq64uIadyMq4mFn9+7dGjx4sL7++mu1a9dOK1eu1JVXXqnNmzdLklJSUnzOT0lJ0aFDh4Jeb+HChZo3b16T1gwAAC6OI0eOqEuXLo26RsTDTq9evbRz506dPHlSr7/+uvLz81VcXOw97t8aYxhGnS00s2fP1syZM73b5eXl6tq1q44cOaL27dvb/wcAAADbVVRUKCMjQ4mJiY2+VsTDTkJCgrp37y5JGjhwoLZu3aqnnnrK20+ntLRUaWlp3vPLyspqtfZYud1uud3uWvvNEV8AACB22NEFJerm2TEMQ5WVlcrOzlZqaqrWrFnjPXb+/HkVFxdryJAhEawQAADEkoi27Dz00EMaOXKkMjIydOrUKa1YsUJFRUV677335HK5NGPGDC1YsEA9evRQjx49tGDBArVp00bjxo2LZNkAACCGRDTsfPHFFxo/fryOHj2qpKQk9evXT++9956GDx8uSZo1a5bOnTun++67TydOnNCgQYP0/vvv23L/DgAANA9RN8+O3SoqKpSUlKTy8nL67AAAECPs/P6Ouj47AAAAdiLsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAARyPsAAAAR4to2Fm4cKGuvfZaJSYmKjk5WWPHjtXevXt9zpk4caJcLpfP47rrrotQxQAAINZENOwUFxdr6tSp2rJli9asWaMLFy4oLy9PZ86c8TlvxIgROnr0qPfxzjvvRKhiAAAQa1pE8sXfe+89n+3ly5crOTlZ27dv14033ujd73a7lZqaerHLAwAADhBVfXbKy8slSR07dvTZX1RUpOTkZPXs2VN33323ysrKgl6jsrJSFRUVPg8AANB8uQzDMCJdhCQZhqExY8boxIkT2rhxo3f/q6++qnbt2ikzM1MlJSWaM2eOLly4oO3bt8vtdte6TkFBgebNm1drf3l5udq3b9+kfwMAALBHRUWFkpKSbPn+jpqwM3XqVK1atUqbNm1Sly5dgp539OhRZWZmasWKFbr11ltrHa+srFRlZaV3u6KiQhkZGYQdAABiiJ1hJ6J9dkzTp0/X22+/rQ0bNtQZdCQpLS1NmZmZ2rdvX8Djbrc7YIsPAABoniIadgzD0PTp07Vy5UoVFRUpOzu73uccP35cR44cUVpa2kWoEAAAxLqIdlCeOnWqXnzxRb388stKTExUaWmpSktLde7cOUnS6dOn9dOf/lQfffSRDh48qKKiIo0aNUqdOnXSLbfcEsnSHaugQJo/P/Cx+fM9xwEAiCURDTtLly5VeXm5cnJylJaW5n28+uqrkqT4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XvAdbRUo+EieVcm//rpmXp9gAgUdc9Vy87jZymSuXp6bG3jl95ycUP96AE4WUthZv359U9cBIAhz5XIp+G2nUIUTnMyWHsl3MsPq6pqgEx9fM0+POWIrKSlw2DFbesxgFCwUmR2bzRab6mpPLdZWpP/3/2rel+xsTy1WoYxUA9CMNHrBiSjH2lhwAv8VzkNd8by+64S733977tya9aWsa22Z++paw0qqvUq6de2rnJya17Ou2WWtsaHvA4DoF9FVz2+55ZaAt6tcLpdatWql7t27a9y4cerVq5cNUQyA5Htrxryl1JDh1OGsoG7dX1UlfetbnhYdc3STVDPjclaW52EuOWHecgrWeuPfzycryzOj84ULNS04RUU1MyKb1/OvkRYcAKEIe56diRMn6s0331SHDh10zTXXyDAM7dixQydPnlReXp7+/ve/6+DBg1q7dq2uv/76pqo7ZMyzAydp6EKg/swgY96aChScrLe8zPOlmltb1vW0JE//mLi4uvvjBGINM+btMXNWZyvmygGal4jOs5Oamqpx48bpwIEDev311/XGG2/oX//6l+68805169ZNe/bsUX5+vh588MFGFQbAV0MXAvVn9skxr5OQUBMi5s+vOW4dmm4O35ZqQo9VYaG0fn3tSQTNIeHm7+bio1bWVpu1az2vu3atpy6TtUYACFu49706depk7N27t9b+vXv3GpdeeqlhGIaxa9cuIykpqXE32GxCnx04gV19dqzPlQwjIaHmOqFc0/pc/z401udb+/JY+/C4XIH78JivP3du/a8DoHmw8/s77LDToUMH46233qq1/6233jI6dOhgGIZh/POf//T+HmmEHcS6cDsVh3o9/5AT6rXMgGSGpbpqycmp2W/twGztcGzdDlRPuPUBcIaIdlAeP368/vM//1MPPfSQrr32WrlcLv31r3/VggULNGHCBElScXGxevfubWsLFNBcNWYhUH/+w9XNfjvhPN+6Mrp5Oy1YjevXe44vW+Zbpzn83Jwvx5wc0KxJqn29Rx4JPAQfAOoTdgflqqoqPfbYY1qyZIm++OILSVJKSoqmT5+uBx98UPHx8Tp8+LDi4uLUpUuXJik6HHRQBmr4z7Nj7fD885/XPUFhoE7KwYJJoOdlZUnf+IZvx2Oz35DJnATQOkmg9Trr1knDhrGKOdAc2Pr93dgmpmi/PcRtLKA2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AAAXjbWPTmWl52egTsuAneizAwC4KAJ1Rg7UaRmwG2EHAHBRVFUF7oxsbldVXfya0DzQQRkAAEQdOigDAACEiLADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcjbADAAAcLSbCzrPPPqvs7Gy1atVK11xzjTZu3BjpkgAAQIyI+rDz6quvasaMGXr44Ye1Y8cODR06VCNHjtThw4cjXRoAAIgBLsMwjEgXUZdBgwbp6quv1tKlS737rrjiCo0dO1YLFy6s9/kVFRVKSkpSeXm52rdv35SlAgAAm9j5/d3CppqaxPnz57V9+3b97Gc/89mfl5enzZs3B3xOZWWlKisrvdvl5eWSPG8aAACIDeb3th1tMlEddr788ktVVVUpJSXFZ39KSopKS0sDPmfhwoWaN29erf0ZGRlNUiMAAGg6x48fV1JSUqOuEdVhx+RyuXy2DcOotc80e/ZszZw507t98uRJZWZm6vDhw41+s5q7iooKZWRk6MiRI9wSbATeR/vwXtqH99IevI/2KS8vV9euXdWxY8dGXyuqw06nTp0UHx9fqxWnrKysVmuPye12y+1219qflJTEB88m7du35720Ae+jfXgv7cN7aQ/eR/vExTV+LFVUj8ZKSEjQNddcozVr1vjsX7NmjYYMGRKhqgAAQCyJ6pYdSZo5c6bGjx+vgQMHavDgwfrd736nw4cPa8qUKZEuDQAAxICoDzt33HGHjh8/rsLCQh09elR9+vTRO++8o8zMzJCe73a7NXfu3IC3thAe3kt78D7ah/fSPryX9uB9tI+d72XUz7MDAADQGFHdZwcAAKCxCDsAAMDRCDsAAMDRCDsAAMDRHB12nn32WWVnZ6tVq1a65pprtHHjxkiXFHMKCgrkcrl8HqmpqZEuKyZs2LBBo0aNUnp6ulwul958802f44ZhqKCgQOnp6WrdurVycnL06aefRqbYKFffezlx4sRan9PrrrsuMsVGsYULF+raa69VYmKikpOTNXbsWO3du9fnHD6X9QvlfeQzGZqlS5eqX79+3kkYBw8erHfffdd73K7Po2PDzquvvqoZM2bo4Ycf1o4dOzR06FCNHDlShw8fjnRpMad37946evSo97F79+5IlxQTzpw5o/79+2vJkiUBjy9atEiLFy/WkiVLtHXrVqWmpmr48OE6derURa40+tX3XkrSiBEjfD6n77zzzkWsMDYUFxdr6tSp2rJli9asWaMLFy4oLy9PZ86c8Z7D57J+obyPEp/JUHTp0kWPPfaYtm3bpm3btik3N1djxozxBhrbPo+GQ33zm980pkyZ4rPv8ssvN372s59FqKLYNHfuXKN///6RLiPmSTJWrlzp3a6urjZSU1ONxx57zLvv66+/NpKSkozf/va3Eagwdvi/l4ZhGPn5+caYMWMiUk8sKysrMyQZxcXFhmHwuWwo//fRMPhMNsYll1xi/OEPf7D18+jIlp3z589r+/btysvL89mfl5enzZs3R6iq2LVv3z6lp6crOztbP/jBD3TgwIFIlxTzSkpKVFpa6vMZdbvdGjZsGJ/RBioqKlJycrJ69uypu+++W2VlZZEuKeqVl5dLknehRT6XDeP/Ppr4TIanqqpKK1as0JkzZzR48GBbP4+ODDtffvmlqqqqai0WmpKSUmtRUdRt0KBBeuGFF7R69Wr9/ve/V2lpqYYMGaLjx49HurSYZn4O+YzaY+TIkXrppZe0bt06PfHEE9q6datyc3NVWVkZ6dKilmEYmjlzpm644Qb16dNHEp/Lhgj0Pkp8JsOxe/dutWvXTm63W1OmTNHKlSt15ZVX2vp5jPrlIhrD5XL5bBuGUWsf6jZy5Ejv73379tXgwYPVrVs3Pf/885o5c2YEK3MGPqP2uOOOO7y/9+nTRwMHDlRmZqZWrVqlW2+9NYKVRa9p06Zp165d2rRpU61jfC5DF+x95DMZul69emnnzp06efKkXn/9deXn56u4uNh73I7PoyNbdjp16qT4+Phaya+srKxWQkR42rZtq759+2rfvn2RLiWmmSPa+Iw2jbS0NGVmZvI5DWL69Ol6++23tX79enXp0sW7n89leIK9j4HwmQwuISFB3bt318CBA7Vw4UL1799fTz31lK2fR0eGnYSEBF1zzTVas2aNz/41a9ZoyJAhEarKGSorK7Vnzx6lpaVFupSYlp2drdTUVJ/P6Pnz51VcXMxn1AbHjx/XkSNH+Jz6MQxD06ZN0xtvvKF169YpOzvb5zify9DU9z4GwmcydIZhqLKy0t7Po02dp6POihUrjJYtWxrPPfec8Y9//MOYMWOG0bZtW+PgwYORLi2m3H///UZRUZFx4MABY8uWLcbNN99sJCYm8j6G4NSpU8aOHTuMHTt2GJKMxYsXGzt27DAOHTpkGIZhPPbYY0ZSUpLxxhtvGLt37zZ++MMfGmlpaUZFRUWEK48+db2Xp06dMu6//35j8+bNRklJibF+/Xpj8ODBxmWXXcZ76efHP/6xkZSUZBQVFRlHjx71Ps6ePes9h89l/ep7H/lMhm727NnGhg0bjJKSEmPXrl3GQw89ZMTFxRnvv/++YRj2fR4dG3YMwzCeeeYZIzMz00hISDCuvvpqn2GBCM0dd9xhpKWlGS1btjTS09ONW2+91fj0008jXVZMWL9+vSGp1iM/P98wDM8w37lz5xqpqamG2+02brzxRmP37t2RLTpK1fVenj171sjLyzM6d+5stGzZ0ujatauRn59vHD58ONJlR51A76EkY/ny5d5z+FzWr773kc9k6CZPnuz9nu7cubNx0003eYOOYdj3eXQZhmE0sKUJAAAg6jmyzw4AAICJsAMAAByNsAMAAByNsAMAAByNsAMAAByNsAMAAByNsAMAAByNsAOg2Rs/frwWLFjQZNffvXu3unTpojNnzjTZawAIjrADwMfEiRM1duzYBj//j3/8ozp06GBbPU1t165dWrVqlaZPn95kr9G3b19985vf1K9//esmew0AwRF2ADRrS5Ys0W233abExMQmfZ1JkyZp6dKlqqqqatLXAVAbYQdAWBYvXqy+ffuqbdu2ysjI0H333afTp09LkoqKijRp0iSVl5fL5XLJ5XKpoKBAkme14lmzZumyyy5T27ZtNWjQIBUVFXmva7YIrV69WldccYXatWunESNG6OjRoz6vv2zZMvXu3Vtut1tpaWmaNm2aJGny5Mm6+eabfc69cOGCUlNTtWzZsoB/S3V1tf785z9r9OjRPvuzsrL06KOPasKECWrXrp0yMzP11ltv6dixYxozZozatWunvn37atu2bd7nHDp0SKNGjdIll1yitm3bqnfv3nrnnXe8x7/zne/o+PHjKi4uDu8NB9BohB0AYYmLi9NvfvMbffLJJ3r++ee1bt06zZo1S5I0ZMgQPfnkk2rfvr2OHj2qo0eP6qc//akkT8vGhx9+qBUrVmjXrl267bbbNGLECO3bt8977bNnz+pXv/qV/vSnP2nDhg06fPiw9/mStHTpUk2dOlX33HOPdu/erbffflvdu3eXJN1111167733fMLRO++8o9OnT+v2228P+Lfs2rVLJ0+e1MCBA2sd+/Wvf63rr79eO3bs0Pe+9z2NHz9eEyZM0J133qm//e1v6t69uyZMmCBzecGpU6eqsrJSGzZs0O7du/X444+rXbt23uslJCSof//+2rhxY0PfegANZdvSpQAcIT8/3xgzZkzI5//3f/+3cemll3q3ly9fbiQlJfmcs3//fsPlchmfffaZz/6bbrrJmD17tvd5koz9+/d7jz/zzDNGSkqKdzs9Pd14+OGHg9Zy5ZVXGo8//rh3e+zYscbEiRODnr9y5UojPj7eqK6u9tmfmZlp3Hnnnd7to0ePGpKMOXPmePd99NFHhiTj6NGjhmEYRt++fY2CgoKgr2UYhnHLLbfUWQ+ApkHLDoCwrF+/XsOHD9dll12mxMRETZgwQcePH69zpNHf/vY3GYahnj17ql27dt5HcXGx/vWvf3nPa9Omjbp16+bdTktLU1lZmSSprKxMn3/+uW666aagr3PXXXdp+fLl3vNXrVqlyZMnBz3/3LlzcrvdcrlctY7169fP+3tKSookT0dj/31mfT/5yU/06KOP6vrrr9fcuXO1a9euWtds3bq1zp49G7QeAE2DsAMgZIcOHdJ3v/td9enTR6+//rq2b9+uZ555RpL073//O+jzqqurFR8fr+3bt2vnzp3ex549e/TUU095z2vZsqXP81wul/c2UevWreutb8KECTpw4IA++ugjvfjii8rKytLQoUODnt+pUyedPXtW58+fr3XMWosZhgLtq66uluQJWgcOHND48eO1e/duDRw4UE8//bTPNb/66it17ty53r8DgL0IOwBCtm3bNl24cEFPPPGErrvuOvXs2VOff/65zzkJCQm1RhwNGDBAVVVVKisrU/fu3X0eqampIb12YmKisrKytHbt2qDnXHrppRo7dqyWL1+u5cuXa9KkSXVe86qrrpIk/eMf/wiphvpkZGRoypQpeuONN3T//ffr97//vc/xTz75RAMGDLDltQCErkWkCwAQfcrLy7Vz506ffR07dlS3bt104cIFPf300xo1apQ+/PBD/fa3v/U5LysrS6dPn9batWvVv39/tWnTRj179tSPfvQjTZgwQU888YQGDBigL7/8UuvWrVPfvn313e9+N6S6CgoKNGXKFCUnJ2vkyJE6deqUPvzwQ585cu666y7dfPPNqqqqUn5+fp3X69y5s66++mpt2rTJG3waasaMGRo5cqR69uypEydOaN26dbriiiu8xw8ePKjPPvtM3/72txv1OgDCR8sOgFqKioo0YMAAn8cjjzyiq666SosXL9bjjz+uPn366KWXXtLChQt9njtkyBBNmTJFd9xxhzp37qxFixZJkpYvX64JEybo/vvvV69evTR69Gh9/PHHysjICLmu/Px8Pfnkk3r22WfVu3dv3XzzzT6juSTp29/+ttLS0vSd73xH6enp9V7znnvu0UsvvRRyDcFUVVVp6tSpuuKKKzRixAj16tVLzz77rPf4K6+8ory8PGVmZjb6tQCEx2WYN8QBwAHOnj2r9PR0LVu2TLfeemu953/99dfq1auXVqxYocGDBzdJTZWVlerRo4deeeUVXX/99U3yGgCC4zYWAEeorq5WaWmpnnjiCSUlJdWaKDCYVq1a6YUXXtCXX37ZZLUdOnRIDz/8MEEHiBBadgA4wsGDB5Wdna0uXbroj3/8Y51D1AE0L4QdAADgaHRQBgAAjkbYAQAAjkbYAQAAjkbYAQAAjkbYAQAAjkbYAQAAjkbYAQAAjkbYAQAAjkbYAQAAjvb/AVhoEt0TQixgAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(X_train[:, 0], X_train[:, 1], 'bx')\n", "plt.axis([0, 30, 0, 30])\n", "plt.xlabel('Latency (ms)')\n", "plt.ylabel('Throughput (mb/s)')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "b35ddcc3", "metadata": {}, "source": [ "From the plot above, it is evident that outliers (i.e., servers with unusual operating metrics) are present in our sample. " ] }, { "cell_type": "markdown", "id": "05da1cfb", "metadata": {}, "source": [ "To perform anomaly detection, we first must fit a model to the data's distribution. Given a training set $\\{x^{(1)},\\dots,x^{(m)}\\}$ (where $x^{(i)}\\in\\mathbb{R}^n$), we want to estimate a Gaussian distribution for each of the features x_i. For each feature $i = 1\\ldots n$, we need to find parameters $\\mu_i$ and $\\sigma^2_i$ that fit the data in the $i$-th dimension $\\{x_i^{(1)},\\ldots,x^{(m)}_i\\}$ (the $i$-th dimension of each example).\n", "\n", "The Gaussian distribution is given by $p(x;\\mu,\\sigma^2)=\\frac{1}{\\sqrt{2\\pi\\sigma^2}}e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}$ where $\\mu$ is the mean and $\\sigma^2$ is the variance. \n", "\n", "We can estimate the parameters,$(\\mu_i,\\sigma_i^2)$, of the $i$-th feature by using the following equations. To estimate the mean, we will use:\n", "$\\mu_i = \\frac{1}{m}\\sum_{j=1}^m{x^{(j)}}$ and for the variance we will use $\\sigma^2_i = \\frac{1}{m}\\sum_{j=1}^m{(x^{(j)}-\\mu_i)^2}$.\n" ] }, { "cell_type": "markdown", "id": "b9ca0482", "metadata": {}, "source": [ "Our first task is to complete the helper function estimateGaussian.py. This will assist us in defining our Gaussian distribution. The function takes as input the data matrix $X$ and should output an $n$-dimensional vector, $\\mu$, that holds the mean of all $n$ features and another $n$-dimensional vector, $var$, that holds the variances of all features. We use a vectorized implementation for the sake of efficiency." ] }, { "cell_type": "code", "execution_count": 103, "id": "309971e0", "metadata": {}, "outputs": [], "source": [ "def estimate_gaussian(X): \n", " \"\"\"\n", " Calculates mean and variance of all features \n", " in the dataset\n", " \n", " Args:\n", " X (ndarray): (m, n) Data matrix\n", " \n", " Returns:\n", " mu (ndarray): (n,) Mean of all features\n", " var (ndarray): (n,) Variance of all features\n", " \"\"\"\n", "\n", " m, n = X.shape\n", " \n", " mu = np.sum(X, axis = 0) / m\n", " var = np.sum((X - mu)**2, axis = 0) / m\n", " \n", " return mu, var\n", "\n", "mu, var = estimate_gaussian(X_train)" ] }, { "cell_type": "markdown", "id": "763d3862", "metadata": {}, "source": [ "Using the formula above, we calculate the first two moments (i.e., the mean and variance) of our distribution, which we display in the following cell." ] }, { "cell_type": "code", "execution_count": 114, "id": "1d962674", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean of each feature: [14.11222578 14.99771051]\n", "Variance of each feature: [1.83263141 1.70974533]\n" ] } ], "source": [ "mu, var = estimate_gaussian(X_train) \n", "\n", "print(\"Mean of each feature:\", mu)\n", "print(\"Variance of each feature:\", var)" ] }, { "cell_type": "markdown", "id": "ca06ee1c", "metadata": {}, "source": [ "While a numerical description of our distribution is sufficient, a visual aid to accompany our statistics seems appropriate. The following code creates our data visualization." ] }, { "cell_type": "code", "execution_count": 105, "id": "972c8f2e", "metadata": {}, "outputs": [], "source": [ "from scipy.stats import multivariate_normal\n", "def multivariate_gaussian(X, mu, sigma2):\n", " \"\"\" \n", " Computes the probability density function of the examples X under the multivariate gaussian \n", " distribution with parameters mu and sigma2. \n", " If Sigma2 is a matrix, it is treated as the covariance matrix. \n", " If Sigma2 is a vector, it is treated as the \\sigma^2 values of the variances in each dimension (a diagonal\n", " covariance matrix)\n", " \"\"\"\n", " p = multivariate_normal.pdf(X, mu, np.diag(sigma2))\n", " return p\n", "p = multivariate_gaussian(X_train, mu, var)" ] }, { "cell_type": "code", "execution_count": 106, "id": "ca0bcc90", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def visualize_fit(X_train, mu, Sigma2):\n", " \"\"\"\n", " Visualize the fit of the multivariate Gaussian distribution.\n", "\n", " Parameters:\n", " - X: numpy array, dataset with each n-dimensional data point in one row\n", " - mu: numpy array, mean vector\n", " - Sigma2: numpy array, covariance matrix or vector of variances\n", " \"\"\"\n", " plt.scatter(X_train[:, 0], X_train[:, 1], marker='x', color='blue')\n", " x, y = np.meshgrid(np.linspace(0, 35, 70), np.linspace(0, 35, 70))\n", " points = np.column_stack((x.flatten(), y.flatten()))\n", " p = multivariate_gaussian(points, mu, Sigma2)\n", " p = p.reshape(x.shape)\n", " contour_levels = np.logspace(-20, 0, 7)\n", " plt.contour(x, y, p, levels=contour_levels, colors='red', linewidths=0.7)\n", "\n", "visualize_fit(X_train, mu, var)" ] }, { "cell_type": "markdown", "id": "5a3e31c5", "metadata": {}, "source": [ "The plot confirms our intuition that most of our servers are located in a high-probability space." ] }, { "cell_type": "markdown", "id": "af3e7cfd", "metadata": {}, "source": [ "Having estimated the Gaussian parameters, we can investigate which examples have a very high probability of occurence and which examples have a very low probability of occurence. The low- probability examples are most likely anomalies in our dataset. One way to determine which examples are anomalies is to select a threshold based on a cross validation set. In this section, we implement an algorithm to select the threshold $\\epsilon$ using the $F_1$ score on a cross validation set.\n", "\n", "We will use the `selectThreshold.py` function to assist us in sorting out high- and low- probability cases. For this, we will use a cross validation set, $\\{(x^{(1)}_{cv},y^{(1)}_{cv}),\\ldots, (x^{(m)}_{cv},y^{(m)}_{cv})\\}$, where the label $y=1$ corresponds to an anomalous example, and $y=0$ corresponds to a normal example. For each cross validation example, we will compute $p(x^{(i)}_{cv})$. The vector of all of these probabilities $p(x^{(1)}_{cv}),\\ldots,p(x^{(m)}_{cv})$ is passed to `selectThreshold.py` in the vector $pval$. The corresponding labels $y^{(1)}_{cv},\\ldots,y^{(m)}_{cv}$ is passed to the same function in the vector $yval$.\n", "\n", "The function `selectThreshold.py` should return two values; the first is the selected threshold $\\epsilon$. If an example $x$ has a low probability $p(x) < \\epsilon$, then it is considered to be an anomaly. The function should also return the $F_1$ score, which tells us how well we're doing with respect to finding the ground truth anomalies given a certain threshold. For many different values of $\\epsilon$, we will compute the resulting $F_1$ score by computing how many examples the current threshold classifies correctly and incorrectly. The $F_1$ score is computed using precision (prec) and recall (rec): \n", "\n", "$F_1 = \\frac{2 ( prec)(rec)}{prec + rec}$\n", "\n", "We compute precision and recall by:\n", "$prec = \\frac{tp}{tp + fp}$, \n", "$rec = \\frac{tp}{tp + fn}$ where $tp$ is the number of true positives (i.e., the ground truth label says it's an anomaly and our algorithm correctly classified it as an anomaly). $fp$ is the number of false positives (i.e., the ground truth label says it's not an anomaly, but our algorithm incorrectly classified it as an anomaly). $fn$ is the number of false negatives (i.e., the ground truth label says it's an anomaly, but our algorithm incorrectly classified it as not being anomalous).\n", "\n", "In the code below, a loop will try many different values of $\\epsilon$ and select the \"best\" based on the $F_1$ score. The computation can be implemented using the $F_1$ score and a $for$ loop over all cross-validation examples to compute the values $tp$, $fp$, $fn$. We anticipate seeing a value for epsilon of about 8.99e-05." ] }, { "cell_type": "code", "execution_count": 1, "id": "4242b5de", "metadata": {}, "outputs": [], "source": [ "def select_threshold(yval, pval):\n", " \"\"\"\n", " Find the best threshold (epsilon) to use for selecting outliers.\n", "\n", " Parameters:\n", " - yval: numpy array, ground truth (0 for normal, 1 for outliers)\n", " - pval: numpy array, probability values from the validation set\n", "\n", " Returns:\n", " - best_epsilon: float, best threshold\n", " - best_F1: float, best F1 score\n", " \"\"\"\n", "\n", " best_epsilon = 0\n", " best_F1 = 0\n", " F1 = 0\n", "\n", " step_size = (max(pval) - min(pval)) / 1000\n", "\n", " for epsilon in np.arange(min(pval), max(pval), step_size):\n", " \n", " predictions = (pval < epsilon).astype(int)\n", "\n", " tp = np.sum((predictions == 1) & (yval == 1))\n", " fp = np.sum((predictions == 1) & (yval == 0))\n", " fn = np.sum((predictions == 0) & (yval == 1))\n", " \n", " # precision and recall calculations\n", " prec = tp / (tp + fp) if (tp + fp) != 0 else 0\n", " rec = tp / (tp + fn) if (tp + fn) != 0 else 0\n", "\n", " F1 = (2 * prec * rec)/(prec + rec) if (prec + rec) != 0 else 0\n", " if F1 > best_F1:\n", " best_F1 = F1\n", " best_epsilon = epsilon\n", " \n", " return best_epsilon, best_F1" ] }, { "cell_type": "markdown", "id": "c2467010", "metadata": {}, "source": [ "As seen in the output below, our `selectThreshold` routine yielded the anticipated value for epsilon. " ] }, { "cell_type": "code", "execution_count": 108, "id": "27e1acf3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Best epsilon found using cross-validation: 8.990853e-05\n", "Best F1 on Cross Validation Set: 0.875000\n" ] } ], "source": [ "p = multivariate_gaussian(Xval, mu, var)\n", "epsilon, F1 = select_threshold(data['yval'].ravel(), p)\n", "\n", "print('Best epsilon found using cross-validation: %e' % epsilon)\n", "print('Best F1 on Cross Validation Set: %f' % F1)" ] }, { "cell_type": "markdown", "id": "3856f033", "metadata": {}, "source": [ "The code below circles outliers in red. As one can see, all but one of the circles are in the expected areas." ] }, { "cell_type": "code", "execution_count": 109, "id": "81d46b9a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Find the outliers in the training set \n", "outliers = np.argwhere(p < epsilon)\n", "outliers = outliers.T[0]\n", "\n", "# Visualize the fit\n", "visualize_fit(X_train, mu, var)\n", "\n", "# Draw a red circle around those outliers\n", "plt.plot(X_train[outliers, 0], X_train[outliers, 1], 'ro',\n", " markersize= 10,markerfacecolor='none', markeredgewidth=2)" ] }, { "cell_type": "markdown", "id": "63797f9d", "metadata": {}, "source": [ "The code in this section runs the anomaly detection algorithm on a more realistic and challenging dataset. Each observation in the dataset is described by 11 features, capturing many more server properties. The following code will use the routines written above to estimate the Gaussian parameters ($\\mu_i$ and $\\sigma^{2}_i$), evaluate the probabilities for both the training data $X$ from which we estimated the Gaussian parameters, and do so for the cross-validation set $Xval$. Finally, it will use `selectThreshold` to find the best threshold $\\epsilon$ . We should see a value epsilon of about 1.38e-18, and 117 anomalies found." ] }, { "cell_type": "markdown", "id": "e653c9ce", "metadata": {}, "source": [ "In the following two cells, we load our data." ] }, { "cell_type": "code", "execution_count": 110, "id": "979e7c1f", "metadata": {}, "outputs": [], "source": [ "data = scipy.io.loadmat('data/ex8data2.mat')" ] }, { "cell_type": "code", "execution_count": 111, "id": "57eae2b5", "metadata": {}, "outputs": [], "source": [ "X = data['X']\n", "Xval = data['Xval']\n", "yval = data['yval']" ] }, { "cell_type": "markdown", "id": "6bcdae29", "metadata": {}, "source": [ "Below, we apply the algorithms developed during our exploration of a comparatively simple data set." ] }, { "cell_type": "code", "execution_count": 112, "id": "9d62e334", "metadata": {}, "outputs": [], "source": [ "mu, var = estimate_gaussian(X)\n", "p = multivariate_gaussian(X, mu, var)\n", "pval = multivariate_gaussian(Xval, mu, var)\n", "epsilon, f1 = select_threshold(yval.ravel(), pval)" ] }, { "cell_type": "markdown", "id": "ea21a733", "metadata": {}, "source": [ "The numbers displayed below indicate that our values for epsilon and total outliers came in as anticipated. This suggests our code is suitable for cases of varying complexity." ] }, { "cell_type": "code", "execution_count": 113, "id": "02643dc5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Best epsilon found using cross-validation: 1.3772288907613604e-18\n", "Best F1 on Cross Validation Set: 0.6153846153846154\n", "# Outliers found: 117\n" ] } ], "source": [ "print('Best epsilon found using cross-validation:', epsilon)\n", "print('Best F1 on Cross Validation Set:', f1)\n", "print('# Outliers found: ', sum(p < epsilon))" ] }, { "cell_type": "code", "execution_count": null, "id": "08b8f77d", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.8" } }, "nbformat": 4, "nbformat_minor": 5 }