{ "metadata": { "name": "", "signature": "sha256:0088dbf4945bad6e9f8c35c9d6fbc719fb559eda90494b116a7e5ecd9cfd61bf" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "*Sebastian Raschka* \n", "last modified: 03/31/2014" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "I am really looking forward to your comments and suggestions to improve and extend this tutorial! Just send me a quick note \n", "via Twitter: [@rasbt](https://twitter.com/rasbt) \n", "or Email: [bluewoodtree@gmail.com](mailto:bluewoodtree@gmail.com)\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem Category\n", "- Statistical Pattern Recognition \n", "- Supervised Learning \n", "- Parametric Learning \n", "- Bayes Decision Theory \n", "- Univariate data \n", "- 2-class problem\n", "- different variances\n", "- different priors\n", "- Gaussian model (2 parameters)\n", "- With conditional Risk (loss functions)\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "# Sections\n", "\n", "\n", "

Given information
\n", "• Deriving the decision boundary
\n", "• Plotting the posterior probabilities and decision boundary
\n", "• Classifying some random example data
\n", "• Calculating the empirical error rate
\n", "\n", " \n", "\n", " \n", " \n", "\n", "\n", "\n", "


" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Given information:\n", "\n", "[back to top]
\n", "\n", "\n", "####model: continuous univariate normal (Gaussian) model for the class-conditional densities\n", "\n", "\n", "$ p(x | \\omega_j) \\sim N(\\mu|\\sigma^2) $ \n", "$ p(x | \\omega_j) \\sim \\frac{1}{\\sqrt{2\\pi\\sigma^2}} \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-\\mu}{\\sigma}\\bigg)^2 \\bigg] } $\n", "\n", "\n", "####Prior probabilities:\n", "\n", "\n", "$ P(\\omega_1) = \\frac{2}{3}, \\quad P(\\omega_2) = \\frac{1}{3} $\n", "\n", "\n", "####Loss functions:\n", "\n", "where \n", "\n", "$ \\lambda(\\alpha_i|\\omega_j) = \\lambda_{ij}$, \n", "\n", "the loss occured if $action_i$ is taken if the actual true class is $ \\omega_j$ (assuming that $action_i$ classifies sample as $\\omega_i$)\n", "\n", "\\begin{equation}\n", "\\lambda = \\begin{pmatrix}\n", "\\lambda_{11} \\quad \\lambda_{12} \\\\\n", "\\lambda_{21} \\quad \\lambda_{22}\n", "\\end{pmatrix}\n", "= \\begin{pmatrix}\n", "0 \\quad 1 \\\\\n", "2 \\quad 0 \\\\\n", "\\end{pmatrix}\\\\\n", "\\end{equation}\n", "\n", "#### Variances of the sample distributions\n", "\n", "$ \\sigma_1^2 = 0.25, \\quad \\sigma_2^2 = 0.04 $\n", "\n", "#### Means of the sample distributions\n", "\n", "$ \\mu_1 = 2, \\quad \\mu_2 = 1.5 $\n", "\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Deriving the decision boundary\n", "[back to top]
\n", "\n", "### Bayes' Rule:\n", "\n", "\n", "$ P(\\omega_j|x) = \\frac{p(x|\\omega_j) * P(\\omega_j)}{p(x)}$ \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Risk Functions:\n", "\n", "$ R(\\alpha_1|x) = \\lambda_{11}P(\\omega_1|x) + \\lambda_{12}P(\\omega_2|x) $\n", "\n", "$ R(\\alpha_2|x) = \\lambda_{21}P(\\omega_1|x) + \\lambda_{22}P(\\omega_2|x) $\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "###Decision Rule:\n", "\n", "Decide $ \\omega_1 $ if $ R(\\alpha_2|x) > R(\\alpha_1|x) $ else decide $ \\omega_2 $." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow \\lambda_{21}P(\\omega_1|x) + \\lambda_{22}P(\\omega_2|x) > \\lambda_{11}P(\\omega_1|x) + \\lambda_{12}P(\\omega_2|x) $\n", "\n", "$ \\Rightarrow (\\lambda_{21} - \\lambda_{11}) \\; P(\\omega_1|x) > (\\lambda_{12} - \\lambda_{22}) \\; P(\\omega_2|x) $\n", "\n", "$ \\Rightarrow \\frac{P(\\omega_1|x)}{P(\\omega_2|x)} > \\frac{(\\lambda_{12} - \\lambda_{22})}{(\\lambda_{21} - \\lambda_{11})} $\n", "\n", "$ \\Rightarrow \\frac{p(x|\\omega_1) \\; P{(\\omega_1)}}{p(x|\\omega_2) \\; P{(\\omega_2)}} > \\frac{(\\lambda_{12} - \\lambda_{22})}{(\\lambda_{21} - \\lambda_{11})} $\n", "\n", "$ \\Rightarrow \\frac{p(x|\\omega_1)}{p(x|\\omega_2)} > \\frac{(\\lambda_{12} - \\lambda_{22}) \\; P{(\\omega_2)}}{(\\lambda_{21} - \\lambda_{11}) \\; P{(\\omega_1)}} $\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "$ \\Rightarrow \\frac{p(x|\\omega_1)}{P(x|\\omega_2)} > \\frac{(1 - 0) \\; (1/3)}{(2 - 0) \\; (2/3)} $\n", "\n", "$ \\Rightarrow \\frac{p(x|\\omega_1)}{P(x|\\omega_2)} > \\frac{1}{4} $\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "
\n", "\n", "\n", "$ \\Rightarrow \\Bigg( \\frac{1}{\\sqrt{2\\pi\\sigma_1^2}} \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-\\mu_1}{\\sigma_1}\\bigg)^2 \\bigg] } \\Bigg) \\Bigg/ \\Bigg( \\frac{1}{\\sqrt{2\\pi\\sigma_2^2}} \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-\\mu_2}{\\sigma_2}\\bigg)^2 \\bigg] } \\Bigg)> \\frac{1}{4} \\quad \\bigg| \\quad \\sigma_1^2 = 0.25, \\quad \\sigma_2^2 = 0.04, \\quad \\mu_1 = 2, \\quad \\mu_2 = 1.5 $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow \\Bigg( \\frac{1}{\\sqrt{2\\pi0.25}} \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-2}{0.5}\\bigg)^2 \\bigg] } \\Bigg) \\Bigg/ \\Bigg( \\frac{1}{\\sqrt{2\\pi0.04}} \\exp{ \\bigg[-\\frac{1}{2}\\bigg( \\frac{x-1.5}{0.2}\\bigg)^2 \\bigg] } \\Bigg)> \\frac{1}{4} $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow \\Bigg( 2 \\; \\cdot \\;\\frac{1}{\\sqrt{2\\pi}} \\exp{ \\bigg[-2 \\; \\cdot \\; (x-2)^2 \\bigg] } \\Bigg) \\Bigg/ \\Bigg( 5 \\; \\cdot \\; \\frac{1}{\\sqrt{2\\pi}} \\exp{ \\bigg[-12.5 \\; \\cdot \\; (x-1.5)^2 \\bigg] } \\Bigg)> \\frac{1}{4} $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow \\frac{2}{5} \\Bigg( \\exp{ \\bigg[-2 \\; \\cdot \\; (x-2)^2 \\bigg] } \\Bigg) \\Bigg/ \\Bigg( \\exp{ \\bigg[-12.5 \\; \\cdot \\; (x-1.5)^2 \\bigg] } \\Bigg) \\Bigg) > \\frac{1}{4} \\quad \\bigg| \\quad ln $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow \\bigg(-2(x-2)^2 \\bigg) - \\bigg(-12.5 (x-1.5)^2 \\bigg) > ln(\\frac{5}{8}) $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow -2(x-2)^2 + 12.5 (x-1.5)^2 - 0.47 > 0 $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow -2x^2 + 8x -8 + 12.5x^2 - 37.5x + 27.655 > 0 $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow 10.5 x^2-29.5 x+19.655 > 0$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$ \\Rightarrow x = 1.08625 \\quad and \\quad x = 1.72328 $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Plotting the class posterior probabilities and decision boundary\n", "\n", "[back to top]
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "\n", "def pdf(x, mu, sigma_sqr):\n", " \"\"\"\n", " Calculates the normal distribution's probability density \n", " function (PDF). \n", " \n", " \"\"\"\n", " term1 = 1.0 / ( math.sqrt(2*np.pi * sigma_sqr))\n", " term2 = np.exp( (-1/2.0) * ( ((x-mu)**2 / sigma_sqr) ))\n", " return term1 * term2\n", "\n", "# generating some sample data\n", "x = np.arange(0, 50, 0.05)\n", "\n", "def posterior(likelihood, prior):\n", " \"\"\"\n", " Calculates the posterior probability (after Bayes Rule) without\n", " the scale factor p(x) (=evidence). \n", " \n", " \"\"\"\n", " return likelihood * prior\n", "\n", "# probability density functions\n", "posterior1 = posterior(pdf(x, mu=2, sigma_sqr=0.25), prior=2/3.0)\n", "posterior2 = posterior(pdf(x, mu=1.5, sigma_sqr=0.04), prior=1/3.0)\n", "\n", "# Class conditional densities (likelihoods)\n", "plt.plot(x, posterior1)\n", "plt.plot(x, posterior2)\n", "plt.title('Posterior Probabilities w. Decision Boundary')\n", "plt.ylabel('P(w)')\n", "plt.xlabel('random variable x')\n", "plt.legend(['P(w_1|x)', 'p(w_2|x)'], loc='upper right')\n", "plt.ylim([0,1])\n", "plt.xlim([0,4])\n", "plt.axvline(1.08625, color='r', alpha=0.8, linestyle=':', linewidth=2)\n", "plt.axvline(1.72328, color='r', alpha=0.8, linestyle=':', linewidth=2)\n", "plt.annotate('R1', xy=(0.5, 0.8), xytext=(0.5, 0.8))\n", "plt.annotate('R2', xy=(1.3, 0.8), xytext=(1.3, 0.8))\n", "plt.annotate('R1', xy=(2.3, 0.8), xytext=(2.3, 0.8))\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Classifying some random example data\n", "\n", "[back to top]
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Parameters\n", "mu_1 = 2\n", "mu_2 = 1.5\n", "sigma_1_sqr = 0.25\n", "sigma_2_sqr = 0.04\n", "\n", "# Generating 10 random samples drawn from a Normal Distribution for class 1 & 2\n", "x1_samples = sigma_1_sqr**0.5 * np.random.randn(10) + mu_1\n", "x2_samples = sigma_1_sqr**0.5 * np.random.randn(10) + mu_2\n", "y = [0 for i in range(10)]\n", "\n", "# Plotting sample data with a decision boundary\n", "\n", "plt.scatter(x1_samples, y, marker='o', color='green', s=40, alpha=0.5)\n", "plt.scatter(x2_samples, y, marker='^', color='blue', s=40, alpha=0.5)\n", "plt.title('Classifying random example data from 2 classes')\n", "plt.ylabel('P(x)')\n", "plt.xlabel('random variable x')\n", "plt.legend(['w_1', 'w_2'], loc='upper right')\n", "plt.ylim([-1,1])\n", "plt.xlim([0,4])\n", "plt.axvline(1.08625, color='r', alpha=0.8, linestyle=':', linewidth=2)\n", "plt.axvline(1.72328, color='r', alpha=0.8, linestyle=':', linewidth=2)\n", "plt.annotate('R1', xy=(0.5, 0.8), xytext=(0.5, 0.8))\n", "plt.annotate('R2', xy=(1.3, 0.8), xytext=(1.3, 0.8))\n", "plt.annotate('R1', xy=(2.3, 0.8), xytext=(2.3, 0.8))\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nIm9vb0pLS6O6ujp67rnnKDo6Wqv9lClT6M6dO3Tx4kWyt7ensWPHUmZmJlVUVFBYWBht3rxZ5/bv\n9re//Y1mzZqlc5lSqaR+/frRiy++SNXV1VRbW0u//vorETX9P2ppvw8bNowSExOJiKiqqopOnjxJ\nRESffvopTZ48mWpqakitVtOZM2eENyQt7c/HH3+cVq9eTUREdXV1QkyWhBOHDomJieTn59dim7sT\nR2NlZWUkEomEF0m3bt1o48aNVFFRodVuxYoV9Mgjj9C1a9earKNx4rj7Rbxt2zYaOXIkEWle/H5+\nfnTq1CmdbUUikdYLb8aMGbRmzRoiIho7dix99tlnwrJDhw61OOOQyWSUkJCge0D+p3///rR3714h\nltDQUGFZVVUViUQiKioqouzsbLK1taXq6mph+ezZs4XE8frrr2u901Kr1RQYGEhHjhwRYtm6dauw\n/LHHHqNnnnlGuP/xxx/TlClTdMa4ZMkSeu2117Qe69Wrl7Du8vJy6tatG0VERNCSJUta7K+Hh4cw\nW1m5ciXFxsYKy/bt20eurq6kVquJiEgul5NIJBJeBzExMfTKK68I7TMyMsje3p7UarVW4igsLCQH\nBweqqakR2m7dupXGjh2rM6b77ruPfvjhB+H+Z599pjXjuNvd++zuxHG3v/3tb/TCCy/oXHZ3wiPS\nvAYPHz4s3F+4cCEtX75cuF9ZWUl2dnaUnZ0ttD9+/LiwfODAgfTOO+8I91966SVatmxZizESER08\neJA8PDzo6tWrOpcfP36cunTpovP13to4NN7v0dHRtHLlSiouLtZq85///EdrNtugtf05b948+utf\n/0q5ubmt9tFcuMahg5eXF27fvq33J1pUKhVefvllhIaGwt3dHSEhIRCJRLh9+zYA4Ntvv8X+/fsh\nk8kQExMjFLj//ve/IzQ0FLGxsejevTvWrFmj1/YeeeQRZGRkICsrCz/++CPc3d0xaNCgZtv7+fkJ\nfzs7OwvFwoKCAq1P23Tt2rXVbd/96ZwtW7YgKioKHh4e8PDwQHp6OkpKSprdNgBUVlYiPz8fHh4e\ncHJyEpYHBwcLf+fn56Nbt27CfZFIhKCgIOTl5QmP+fr6Cn87OTlp3Xd0dGy2KJqdnY21a9cKMXt4\neCA3NxcFBQUAAHd3d0ybNg3p6el46aWXtJ773nvvISwsDFKpFB4eHqioqBD2MwD4+PhoxeTt7S0U\n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\nAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "

\n", "\n", "## Calculating the empirical error rate\n", "\n", "[back to top]
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "w1_as_w2, w2_as_w1 = 0, 0\n", "for x1,x2 in zip(x1_samples, x2_samples):\n", " if x1 > 1.08625 and x1 < 1.72328:\n", " w1_as_w2 += 1\n", " if x2 <= 1.08625 and x2 >= 1.72328:\n", " w2_as_w1 += 1\n", " \n", "emp_err = (w1_as_w2 + w2_as_w1) / float(len(x1_samples) + len(x2_samples))\n", " \n", "print('Empirical Error: {}%'.format(emp_err * 100))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Empirical Error: 20.0%\n" ] } ], "prompt_number": 7 } ], "metadata": {} } ] }