{ "cells": [ { "cell_type": "markdown", "id": "77fdeeaf", "metadata": {}, "source": [ "# Least Square Approximations Yield Posteriors" ] }, { "cell_type": "markdown", "id": "9cef2279", "metadata": {}, "source": [ "(Significance)\n", "\n", "Our justification of MLPs has so far been mostly heuristic.\n", "\n", "However, there is a close connection with Bayesian classification.\n", "\n", "In particular, the MLP outputs approximate the posterior probability.\n", "\n", "Recall that classification with $\\arg\\max_\\omega P(\\omega|x)$ is optimal under 0-1 loss." ] }, { "cell_type": "markdown", "id": "9d5ee452", "metadata": {}, "source": [ "(Unary Encoding of Classes)\n", "\n", "For classification problems, we encode classes using a *unary code*.\n", "\n", "That is, if the class is $i$, then the target vector is \n", "\n", "$$z_j = \\delta(i,j) = (0, ... , 0, 1, 0, ... , 0)$$\n" ] }, { "cell_type": "markdown", "id": "5a80d3f5", "metadata": {}, "source": [ "(Criterion Function)\n", "\n", "Let $\\tilde{z} = g(x;\\theta)$ be the predicted value of the MLP (or\n", "classifier in general).\n", "\n", "The criterion function that we optimize is ($t$ is the target vector)\n", "\n", "$$ e = J(\\theta) = \\sum (g(x;\\theta) - t)^2$$\n", "\n", "minimizing this is equivalent to minimizing each term and each output unit." ] }, { "cell_type": "markdown", "id": "c23c277c", "metadata": {}, "source": [ "(One Unit)\n", "\n", "Consider output unit $k$; we're minimizing\n", "\n", "$$ J_k(\\theta) = \\sum_x (g_k(x;\\theta) - t_k)^2 $$\n", "\n", "$$ ~~~~~~~~ = \\sum_{x\\in\\omega_k} (g_k(x;\\theta)-1)^2 + \\sum_{x\\not\\in\\omega_k} (g(x;w)-0)^2 $$" ] }, { "cell_type": "markdown", "id": "a09880e8", "metadata": {}, "source": [ "(Pulling Out Factors)\n", "\n", "$$ ~~~~~~~~ = \\sum_{x\\in\\omega_k} (g_k(x;\\theta)-1)^2 + \\sum_{x\\not\\in\\omega_k} (g(x;w)-0)^2 $$\n", "\n", "let's pull out some factors\n", "\n", "$$ ~~~~~~~~ = n \\left( \\frac{n_k}{n}\\frac{1}{n_k} \\sum_{x\\in\\omega_k} (g_k(x;\\theta)-1)^2 + \\frac{n-n_k}{n}\\frac{1}{n-n_k} \\sum_{x\\not\\in\\omega_k} (g_k(x;\\theta) - 0)^2 \\right)$$" ] }, { "cell_type": "markdown", "id": "f663e8b8", "metadata": {}, "source": [ "(Limit)\n", "\n", "Let us now consider the limit as $n\\rightarrow\\infty$; then\n", "\n", "$$ \\frac{n_k}{n} \\rightarrow P(\\omega_k) $$\n", "\n", "$$ \\frac{n-n_k}{n} \\rightarrow P(\\omega^c_k) $$" ] }, { "cell_type": "markdown", "id": "13873d8b", "metadata": {}, "source": [ "(Sums to Integrals)\n", "\n", "In the limit, sums over random samples turn into integrals:\n", "\n", "$${\\frac{1}{N}\\sum_{x_i\\tilde\\; p(x_i)} f(x_i)} \\rightarrow {\\int f(x) p(x) dx} $$" ] }, { "cell_type": "markdown", "id": "4798b100", "metadata": {}, "source": [ "(Sampled Sums to Integrals)\n", "\n", "The remaining sums converge to the corresponding integrals in the following equation:\n", "\n", "$$\\lim_{n\\rightarrow\\infty} \\frac{1}{n} J_k(\\theta) $$\n", "$$ ~~~~~~~~ = P(\\omega_k) \\int (g_k(x;\\theta)-1)^2 p(x|\\omega_k) dx + P(\\omega_k^c) \\int g_k^2(x;\\theta) p(x|\\omega_k^c) dx$$\n", "...\n", "$$ ~~~~~~~~ = \\int g_k^2(x;\\theta) p(x) dx - 2 \\int g_k(x;\\theta) p(x,\\omega_k) dx + \\int p(x,\\omega_k) dx $$\n", "$$ ~~~~~~~~ = \\int [ g_k(x;\\theta)-P(\\omega_k|x) ]^2 p(x) dx + \\int P(\\omega_k|x) P(\\omega_k^c|x) p(x) dx $$\n", "\n", "the second term is independent of $\\theta$." ] }, { "cell_type": "markdown", "id": "5b71b183", "metadata": {}, "source": [ "(Term-wise minimization)\n", "\n", "Therefore, least square minimization minimizes\n", "\n", "$$ \\int [g_k(x;\\theta) - P(\\omega_k|x)]^2 p(x) dx $$\n", "\n", "This is minimized for each term,\n", "therefore $g_k(x;\\theta) \\approx P(\\omega_k|x)$ asymptotically" ] }, { "cell_type": "markdown", "id": "18b2ba68", "metadata": {}, "source": [ "(Notes)\n", "\n", "- this relationship is true only asymptotically\n", "- the sum of the network outputs is not necessarily $1$\n", "- if the sum of the network outputs differs substantially from $1$, that's an indication that the pattern is outside the domain over which the network predicts probabilities well\n", "\n", "An alternative approach is to use *softmax*. In softmax, the output transfer function\n", "is replaced by $e^{By+b}$, and the actual output of the network is computed as the ratio of the output divided by the sum of all the outputs" ] }, { "cell_type": "markdown", "id": "5d27d7a8", "metadata": {}, "source": [ "Simple Demonstration with Gaussians\n", "====================================" ] }, { "cell_type": "code", "execution_count": 1, "id": "8f55ca5a", "metadata": { "collapsed": true }, "outputs": [], "source": [ "from pylab import *\n", "from scipy.stats import norm" ] }, { "cell_type": "markdown", "id": "130ded26", "metadata": {}, "source": [ "Let's consider a very simple, 1D classification problem.\n", "Our class-conditional densities $p(x|c)$ are normally\n", "distributed with means 0 and 1.\n", "We can calculate and plot the exact posterior directly." ] }, { "cell_type": "code", "execution_count": 2, "id": "c7555a66", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lxs = linspace(-4,5,1000)\n", "ys0 = norm.pdf(lxs); ys0 /= amax(ys0)\n", "plot(lxs,ys0)\n", "ys1 = norm.pdf(lxs,loc=2); ys1 /= amax(ys1)\n", "plot(lxs,ys1)\n", "posterior = ys1/(ys0+ys1)\n", "plot(lxs,ys1/(ys0+ys1))" ] }, { "cell_type": "markdown", "id": "50020d18", "metadata": {}, "source": [ "Now we take 100 samples from each class conditional density.\n", "These are the training samples for our classifier." ] }, { "cell_type": "code", "execution_count": 3, "id": "9d5cb485", "metadata": { "collapsed": true }, "outputs": [], "source": [ "samples0 = norm.rvs(size=100)\n", "samples1 = norm.rvs(size=100,loc=2)" ] }, { "cell_type": "code", "execution_count": 4, "id": "3a05420a", "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_=hist([samples0,samples1])" ] }, { "cell_type": "markdown", "id": "d2638081", "metadata": {}, "source": [ "Posteriors by Histogramming\n", "----------------------------\n", "\n", "We can compute the posteriors by binning and histogramming\n", "(this has nothing to do with the proof above, but it\n", "just is an illustration of the computation of posteriors).\n", "In the 1D case, this actually often works quite well." ] }, { "cell_type": "code", "execution_count": 5, "id": "a7fcc4f5", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\na9jtdsMwDGPKlCnGlClTLK6o4crKyozOnTsbhw4dMkpKSoyePXsa+/bts7ospzly5Iixa9cuwzAM\n4/Tp00ZKl4BpAAADQUlEQVSXLl186v0ZhmG89NJLxsMPP2wMHz7c6lKc7pe//KXxxhtvGIZhGKWl\npQ47T27bNOvVV19l6tSpBAUFAdCuXTt3/Wi3eeaZZ5g7d67VZbjEkCFDaNTI/HXp27cvhYWFFlfU\ncJXXSQQFBVWsk/AVN9xwA7169QKgefPmREVFcfjwYYurcp7CwkIyMjJ47LHHfG4yxffff8+mTZsY\nP348YA5zt2jRotb2bgvy3NxcPv74Y/r160dMTAw7duxw1492i/T0dEJCQujhB5s6LViwgGHDhlld\nRoPVtAaiqKjIwopcJz8/n127dtG3b1+rS3Ga3/zmN/z5z3+u6GD4kkOHDtGuXTvGjRvHbbfdxsSJ\nEzl37lyt7Z26vG7IkCH861//uuT5GTNmUFZWxokTJ9i6dSvbt29nzJgxHDx40Jk/3uUcvb9Zs2ax\ndu3aiue8sYdQ2/ubOXMmw4cPB8z32qRJEx5++GF3l+d0vrquobozZ84watQo5s2bR/Pmza0uxylW\nr17N9ddfT+/evX1yr5WysjJ27txJSkoKffr0YfLkycyePZvp06fX/AL3jPYYRlxcnGGz2Soed+7c\n2SguLnbXj3epvXv3Gtdff70RFhZmhIWFGYGBgcbNN99sHD161OrSnGrhwoXGT37yE+OHH36wuhSn\n2LJlixEbG1vxeObMmT53w7OkpMQYOnSo8d///d9Wl+JUU6dONUJCQoywsDDjhhtuMK655hrj0Ucf\ntbospzly5IgRFhZW8XjTpk3GvffeW2t7twX5a6+9Zvzxj380DMMwcnJyjNDQUHf9aLfzxZuda9as\nMbp162Z89913VpfiNKWlpUanTp2MQ4cOGRcuXPC5m53l5eXGo48+akyePNnqUlzKZrP55KyVO++8\n08jJyTEMwzCmTZvmcKaf23YuGj9+POPHj6d79+40adKkYhGRL/LFf7I/9dRTlJSUMGTIEAD69+/P\n3//+d4urapja1kn4is2bN7N48WJ69OhB7969AZg1axZxcXEWV+Z8vvg398orr/DII49QUlJC586d\nHa7RcdvBEiIi4hq+d7tXRMTPKMhFRLycglxExMspyEVEvJyCXETEyynIRUS83P8DC2nPjg/IjUcA\nAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xs = []\n", "ys = []\n", "for x in range(-5,5):\n", " y0 = sum(floor(samples0)==x)\n", " y1 = sum(floor(samples1)==x)\n", " xs.append(x+0.5)\n", " ys.append(y1*1.0/max(1.0,y0+y1))\n", "plot(xs,ys)\n", "plot(lxs,posterior,color='r')" ] }, { "cell_type": "markdown", "id": "8e20fb14", "metadata": {}, "source": [ "Least Square Fit with a Polynomial\n", "----------------------------------\n", "\n", "Let's try a simple least square fit, with a polynomial.\n", "Before we do that, let's look at the function we're actually\n", "trying to approximate.\n", "From a least square fitting point of view, this function\n", "looks rather odd." ] }, { "cell_type": "code", "execution_count": 9, "id": "7ce559d7", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nKpWQt9kQ+zGjo6Oor68PUi8hhJAAuAp5R0cHhoeHMTIygvHxcWzbtg09PT1Tjunp6cHjjz8OANi1\naxfOP//8WPJxQgghalwz8pqaGmzatAlLly5FuVxGX18fWltbsXnzZgBAf38/li9fjsHBQTQ1NeGc\nc87Bli1bEimcEEJIBdeMPNILMSMnhBDfhM7ICSGEVD8UckIIMRwKOSGEGA6FnBBCDIdCTgghhkMh\nJ4QQw6GQE0KI4VDICSHEcCjkhBBiOBRyG36Xj0wL1hkdJtQIsM6oMaVOHSjkNkz54bLO6DChRoB1\nRo0pdepAISeEEMOhkBNCiOEkuvohIYQQ/3jJdGLbrHIJW0IIiQdGK4QQYjgUckIIMZxEhfzrX/86\n2tra0N7ejo9//ONTNm2uFr785S+jtbUVbW1tuPHGG/G3v/0t7ZKU/PznP8cVV1yB6dOn45VXXkm7\nnNMoFApoaWlBc3MzNm7cmHY5Sm699VbU1dVhwYIFaZfiSqlUwuLFi3HFFVdg/vz5eOCBB9IuScnx\n48fR2dmJ9vZ2zJs3D1/5ylfSLsmRcrmMhQsXYsWKFWmX4khjYyOuvPJKLFy4EB/+8IfdD7YS5PDh\nw5OPH3jgAauvry/Jy2vxzDPPWOVy2bIsy7r77rutu+++O+WK1Ozfv996/fXXra6uLuvll19Ou5wp\nTExMWJdffrn11ltvWePj41ZbW5u1b9++tMs6jeeff9565ZVXrPnz56ddiit//vOfrT179liWZVlH\njhyx5s6dW5XfT8uyrKNHj1qWZVknTpywOjs7rZ07d6ZckZrvfOc71qpVq6wVK1akXYojjY2N1l/+\n8hetYxN15Oedd97k43fffRezZ89O8vJaLFmyBNOmVb4tnZ2dGB0dTbkiNS0tLZg7d27aZSgZGhpC\nU1MTGhsbUVtbi97eXgwMDKRd1mksWrQIF1xwQdplePL+978f7e3tAIBzzz0Xra2t+NOf/pRyVWre\n8573AADGx8dRLpdx4YUXplzR6YyOjmJwcBBf+MIXqr4JQ7e+xDPyr33ta7j00kvxwx/+EPfcc0/S\nl/fFo48+iuXLl6ddhnGMjY2hoaFh8nk+n8fY2FiKFWWHkZER7NmzB52dnWmXouTkyZNob29HXV0d\nFi9ejHnz5qVd0mnceeeduP/++ycNW7WSy+Vw3XXXoaOjAw8//LDrsZF/JUuWLMGCBQtO+/P0008D\nAL71rW/h7bffxuc//3nceeedUV8+khpFnTNmzMCqVatSqVG3zmqEcwbi4d1338VNN92E7373uzj3\n3HPTLkfJtGnT8Oqrr2J0dBTPP/981U2D/9WvfoWLL74YCxcurHo3/sILL2DPnj3Yvn07vve972Hn\nzp2Ox0beR/7ss89qHbdq1arU3K5XjY899hgGBwfx3HPPJVSRGt3vZbVRX18/ZSC7VCohn8+nWJH5\nnDhxAitXrsTnPvc5XH/99WmX48msWbPwiU98Ar///e/R1dWVdjmTvPjii3jqqacwODiI48eP4/Dh\nw7j55pvx+OOPp13aacyZMwcAcNFFF+GGG27A0NAQFi1apDw20d8thoeHJx8PDAxg4cKFSV5ei0Kh\ngPvvvx8DAwOYOXNm2uVoUW3OoqOjA8PDwxgZGcH4+Di2bduGnp6etMsyFsuy0NfXh3nz5uGOO+5I\nuxxHDh48iEOHDgEA/v73v+PZZ5+tuv/j9957L0qlEt566y389Kc/xbXXXluVIn7s2DEcOXIEAHD0\n6FE888wz7t1V8Y25ns7KlSut+fPnW21tbdaNN95oHThwIMnLa9HU1GRdeumlVnt7u9Xe3m6tXbs2\n7ZKUPPnkk1Y+n7dmzpxp1dXVWcuWLUu7pCkMDg5ac+fOtS6//HLr3nvvTbscJb29vdacOXOsGTNm\nWPl83nr00UfTLknJzp07rVwuZ7W1tU3+u9y+fXvaZZ3G3r17rYULF1ptbW3WggULrPvuuy/tklwp\nFotV27Xy5ptvWm1tbVZbW5t1xRVXeP4fSmytFUIIIfFQ3cO2hBBCPKGQE0KI4VDICSHEcCjkhBBi\nOBRyQggxHAo5IYQYzv8DCRWOYCXQ954AAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = c_[r_[samples0,samples1],r_[zeros(len(samples0)),ones(len(samples1))]]\n", "order = argsort(data[:,0])\n", "s = data[order,:]\n", "ylim(-0.1,1.1)\n", "plot(s[:,0],s[:,1])" ] }, { "cell_type": "markdown", "id": "d47249cf", "metadata": {}, "source": [ "We can use the function `polyfit` to perform polynomial fitting." ] }, { "cell_type": "code", "execution_count": 10, "id": "01ef4a88", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nSUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fit = polyfit(data[:,0],data[:,1],5)\n", "plot(lxs,polyval(fit,lxs))\n", "plot(lxs,posterior,color='r')" ] }, { "cell_type": "markdown", "id": "aa754449", "metadata": {}, "source": [ "The fit actually approximates the data fairly well over the range where we have data points.\n", "\n", "This looks even better if we clip the output values." ] }, { "cell_type": "code", "execution_count": 11, "id": "1ae6ee6b", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(lxs,clip(polyval(fit,lxs),0,1))\n", "plot(lxs,posterior,color='r')" ] }, { "cell_type": "markdown", "id": "c0f6c8f3", "metadata": {}, "source": [ "Linear Least Square\n", "-------------------\n", "\n", "For comparison, let's also look at a simple linear fit." ] }, { "cell_type": "code", "execution_count": 12, "id": "b51854e9", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\np/TvkgZSAAAAAElFTkSuQmCC\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = r_[c_[samples0,zeros(100)],c_[samples1,ones(100)]]\n", "fit = polyfit(data[:,0],data[:,1],1)\n", "plot(lxs,polyval(fit,lxs))\n", "plot(lxs,posterior,color='r')" ] }, { "cell_type": "markdown", "id": "5b929385", "metadata": {}, "source": [ "Note that these kinds of linear fits are very sensitive\n", "to outliers. \n", "We add two data points that ought to be really easy\n", "to classify, and they completely change the approximation\n", "to the posterior." ] }, { "cell_type": "code", "execution_count": 13, "id": "b784ce93", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data1 = data.copy()\n", "data1[0,:] = array([-100,0])\n", "data1[-1,:] = array([100,1])\n", "fit = polyfit(data1[:,0],data1[:,1],1)\n", "plot(lxs,polyval(fit,lxs))\n", "plot(lxs,posterior,color='r')" ] }, { "cell_type": "markdown", "id": "7f5cb08e", "metadata": {}, "source": [ "Logistic Regression\n", "--------------------" ] }, { "cell_type": "markdown", "id": "f0435e76", "metadata": {}, "source": [ "Logistic regression is a much better fit." ] }, { "cell_type": "code", "execution_count": 14, "id": "5dc20e14", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nmpmp8cHBpiP8z382712d4Tl1RUYqyItBNRWPO9YE7ltXUQoN8ri4OAIDAwnIGfs7bNgwoqOj8wT5\nypUrefBRi2/4AAAHLElEQVTBBwEIDw8nNTWV48eP09gD/9ltWaZ1m5UFmZnmtagjM9Mc6enmOH8+\n5/15iwvns0k/6yTjXBYZ551kns/iwjnzmn7WyYW0C2SeTncdzrPp7D8bz3dTP6RO1XTqVE2nXo10\n6la7QN1q6fhVOUvdSmnUIo2a2WlUz0qjWt00qlRLw+t0GnyXBrszTGu6YUPTFZL7tXNnM2bw+utN\n6mvXHZFyodAgT0lJwd/f3/XZz8+Pbdu2FXlPcnJygUG+rV5vvCwLC/DCMskJYFmX+Axg5fuaPNcu\nem9Z5r7c38/Lssi5Kc/5n7KPsfeZD+Gir/PyMu+9vS56j0UVr2yq4cTHysIbJz5k4UMW3pbT9VrJ\nyqKS5SQbL7K9fbC8K7lerUo+UKkSlnclqFoV65qqeFWrirdvVbyrV2Xq0SSmtD0PVavmP6pXh1qN\nzI45lzpq1NBDR5GKxirEBx98YD388MOuz4sWLbLGjx+f555+/fpZmzdvdn3u0aOHtWPHjnzfC5Ok\nOnTo0KHjMo+iFNoi9/X1JSkpyfU5KSkJv4tm6F18T3JyMr6+vvm+l7s96BQRKS8KXTSrY8eOxMfH\nk5CQQEZGBlFRUQy46IHXgAEDePfddwGIjY2lTp06Htk/LiLiqQptkfv4+DB79mx69eqF0+lk9OjR\nhISEMGfOHADGjh1L3759WbVqFYGBgdSoUYMFCxaUSeEiIpKjyM6XEjZ9+nTLy8vLOnXqVFn/0gV6\n+umnrbZt21rt2rWzunfvbiUmJtpdkvXUU09ZwcHBVtu2ba3BgwdbqampdpdkLV++3AoNDbW8vb0L\nfAZSllavXm21bNnSCgwMtF544QVba/nNqFGjrEaNGlmtW7e2uxSXxMREKyIiwgoNDbVatWplvfba\na3aXZJ0/f9666aabrHbt2lkhISHW3/72N7tLcsnKyrLCwsKsfv362V2KZVmWdf3111tt2rSxwsLC\nrE6dOhV6b5kGeWJiotWrVy8rICDAbYI8LS3N9X7mzJnW6NGjbazGWLt2reV0Oi3LsqxJkyZZkyZN\nsrkiy/ruu++sAwcOWBEREbYGeVZWlnXjjTdahw8ftjIyMqx27dpZ+/bts62e33z++efW119/7VZB\nfvToUWvnzp2WZVnW6dOnrRYtWrjF79XZs2cty7KszMxMKzw83Priiy9srsh4+eWXrREjRlj9+/e3\nuxTLsqzLysky3VjiySef5MUXXyzLX7JI1157rev9mTNnaJBnZ2B79OzZE29v80cTHh5OcnKyzRVB\ncHAwLVq0sLuMPHMbKleu7JrbYLeuXbtSt25du8vIo0mTJoTlrDFcs2ZNQkJC+PHHH22uCqpXrw5A\nRkYGTqeTevXq2VyRGaSxatUqHn74YbcamFHcWsosyKOjo/Hz86Nt27Zl9UsW2z/+8Q+aNWvGO++8\nw9/+9je7y8lj/vz59O3b1+4y3EZB8xZSUlJsrMgzJCQksHPnTsLDw+0uhezsbMLCwmjcuDHdunUj\nNDTU7pKYOHEiL730kqsB5Q68vLy4/fbb6dixI/PmzSv03hLdWKJnz54cO3Ys3/mpU6fy/PPPs3bt\nWte5svy/3qXqeu655+jfvz9Tp05l6tSpvPDCC0ycOLFMHtgWVROY37cqVaowYsSIUq+nuDXZzUuT\nnS7bmTNnuOeee3jttdeoedHSC3bw9vZm165d/Prrr/Tq1cv2afGffPIJjRo1on379jgcDtvquNiW\nLVto2rQpJ06coGfPngQHB9O1a9cC7y3RIF+3bl2B5/fu3cvhw4dp164dYP4Z06FDB+Li4mjUqFFJ\nlnBZdV1sxIgRZdb6LaqmhQsXsmrVKjZs2FAm9UDxf5/sVJy5DfI/mZmZ3H333YwcOZJBgwbZXU4e\ntWvX5s4772T79u22BvnWrVtZuXIlq1atIj09nbS0NB544AHXsGq7NG3aFICGDRsyePBg4uLiLhnk\nZT5qxbIurxO/tB08eND1fubMmdbIkSNtrMZYvXq1FRoaap04ccLuUvKJiIiwtm/fbtuvn5mZaTVv\n3tw6fPiwdeHCBbd52GlZlnX48GG3etiZnZ1t3X///daECRPsLsXlxIkT1i+//GJZlmWdO3fO6tq1\nq7V+/Xqbq/ofh8PhFqNWzp496xqIcebMGeuWW26x1qxZc8n7bekQcqd/Hk+ePJk2bdoQFhaGw+Hg\n5ZdftrskHn/8cc6cOUPPnj1p3749jz76qN0lsWLFCvz9/YmNjeXOO++kT58+ttSRe25DaGgoQ4cO\nzbOIm12GDx/OLbfcwsGDB/H393eL+RRbtmxh8eLFbNy4kfbt29O+fXtiYmJsreno0aN0796dsLAw\nwsPD6d+/Pz169LC1pou5Qz4dP36crl27un6f+vXrxx133HHJ+8tsYwkRESkd7vOIVkREroiCXETE\nwynIRUQ8nIJcRMTDKchFRDycglxExMP9Pw8+C7LdWChCAAAAAElFTkSuQmCC\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn import linear_model\n", "lr = linear_model.LogisticRegression()\n", "lr.fit(data[:,0].reshape(200,1),data[:,1])\n", "plot(lxs,lr.predict_proba(lxs.reshape(1000,1))[:,1])\n", "plot(lxs,posterior,color='r')" ] }, { "cell_type": "markdown", "id": "f9043fe4", "metadata": {}, "source": [ "Note that logistic regression is not influenced by outliers\n", "in the same way as linear least squares.\n", "That's because the derivative of the sigmoid is nearly zero\n", "for points that are correctly classified but far from the\n", "decision boundary." ] }, { "cell_type": "code", "execution_count": 15, "id": "2e5d74ab", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nU5CLiLi4/wdkmCzVgmjrAQAAAABJRU5ErkJggg==\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lr = linear_model.LogisticRegression()\n", "lr.fit(data1[:,0].reshape(200,1),data1[:,1])\n", "plot(lxs,lr.predict_proba(lxs.reshape(1000,1))[:,1])\n", "plot(lxs,posterior,color='r')" ] }, { "cell_type": "markdown", "id": "0be2b5aa", "metadata": {}, "source": [ "**Homework** Given class conditional densities $p(x|c)$ for $c\\in\\\\{0,1\\\\}$\n", "that are normal densities\n", "with means 0 and $\\mu$ and\n", "a standard deviation $\\sigma=1$, compute the posterior probability\n", "$P(c=1|x)$." ] }, { "cell_type": "markdown", "id": "fc9e7249", "metadata": {}, "source": [ "Least Squares with Kernel Functions\n", "-----------------------------------" ] }, { "cell_type": "markdown", "id": "ffc0e840", "metadata": {}, "source": [ "(Nonlinear Approximations to the Posterior)\n", "\n", "We are trying to predict a non-linear function $y = f(x)$.\n", "\n", "We have tried different approximations:\n", "\n", "- A linear fit: $y = mx+b$\n", "- A polynomial fit: $y = ax^5 + bx^4 + cx^3 + dx^2 + ex + f$\n", "- Logistic regression: $y = \\sigma(mx + b)$" ] }, { "cell_type": "markdown", "id": "47a7aa8a", "metadata": {}, "source": [ "(Generalization)\n", "\n", "Note that the polynomial fit is really just a multidimensional\n", "linear fit to a bunch of non-linear functions of the input.\n", "We can generalize this approach to a generalized linear fit\n", "(note that we can choose $\\phi_r(x) = 1$ to handle the constant term).\n", "\n", "$y = w_1 \\phi_1(x) + w_2 \\phi_2(x) + ... + w_r \\phi_r(x)$\n", "\n", "A common choice for the $\\phi_i$ is the use of a kernel, \n", "a single non-linear function that is shifted around:\n", "\n", "$y = w_1 \\phi(x-\\mu_1) + ... + w_r \\phi(x-\\mu_r) $" ] }, { "cell_type": "markdown", "id": "db7965b2", "metadata": {}, "source": [ "(Gaussian Kernels)\n", "\n", "And a particularly common choice for the $\\phi$ is Gaussian functions,\n", "$\\phi(x) = e^{-\\frac{x^2}{2\\sigma^2}}$\n", "\n", "This kind of representation forms the basis of *support\n", "vector* machines. Support vector machines (or kernel machines)\n", "effectively also perform a fit to the data points, just like\n", "least square methods, but using a different loss function (hinge loss).\n", "\n", "To perform a least square fit, we first take the original data\n", "$(x_i,y_i)$, transform it by computing the $\\phi_r$ functions,\n", "and then performing a linear fit on the outputs." ] }, { "cell_type": "markdown", "id": "ff91cef8", "metadata": {}, "source": [ "Let's start by sorting the data by its $x$ coordinate;\n", "that helps with plotting later (it has no influence on the fit).\n", "\n" ] }, { "cell_type": "code", "execution_count": 16, "id": "d9091fed", "metadata": { "collapsed": true }, "outputs": [], "source": [ "data = data[argsort(data[:,0]),:]" ] }, { "cell_type": "markdown", "id": "84490a7b", "metadata": {}, "source": [ "A Gaussian kernel with a smallish $\\sigma$ is given by this function.\n", "\n" ] }, { "cell_type": "code", "execution_count": 17, "id": "c791d576", "metadata": { "collapsed": true }, "outputs": [], "source": [ "def K(x,mu): return exp(-(x-mu)**2/0.2)" ] }, { "cell_type": "markdown", "id": "5698c72f", "metadata": {}, "source": [ "Now we define a function that computes all the $\\phi_r$ for a given\n", "input $x$.\n", "We can view this as a kind of ``feature extraction'',\n", "a preprocessing of the data that helps with classification.\n", "\n" ] }, { "cell_type": "code", "execution_count": 18, "id": "e6e67cf9", "metadata": { "collapsed": true }, "outputs": [], "source": [ "def Kv(x): return array([K(x,mu) for mu in linspace(-2,3,11)])" ] }, { "cell_type": "markdown", "id": "3e8be02f", "metadata": {}, "source": [ "To perform the linear fit, we first need to transform all the data points\n", "in the training set.\n", "\n" ] }, { "cell_type": "code", "execution_count": 19, "id": "b487b8d5", "metadata": { "collapsed": true }, "outputs": [], "source": [ "zs = array([Kv(x) for x in data[:,0]])" ] }, { "cell_type": "markdown", "id": "94e97823", "metadata": {}, "source": [ "To make sure that this worked as expected, let's plot\n", "the output of $\\phi_5(x_i)$ against the $x_i$.\n", "\n" ] }, { "cell_type": "code", "execution_count": 20, "id": "7b0440f2", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nLHIiIoP7fzoKGZQDySMeAAAAAElFTkSuQmCC\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(data[:,0],zs[:,5])" ] }, { "cell_type": "markdown", "id": "32a4bc8c", "metadata": {}, "source": [ "We can perform the least square fit with a pseudo-inverse:\n", "\n", "$$w = Z^\\dagger \\cdot y$$\n", "\n", "Here, $Z$ is the transformed data matrix,\n", "$y$ is the desired outputs,\n", "and $M^\\dagger$ is the pseudo-inverse of the matrix.\n", "\n" ] }, { "cell_type": "code", "execution_count": 21, "id": "e6581fb4", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.04377891, -0.06688098, 0.08231902, 0.03663106, 0.01220642,\n", " 0.05338284, 0.46667431, 0.34844818, 0.70233284, 0.31302812,\n", " 1.06082602])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w = dot(pinv(zs),data[:,1].reshape(200,1)).ravel()\n", "w" ] }, { "cell_type": "markdown", "id": "09e78a63", "metadata": {}, "source": [ "We can now compute the prediction of this least square approximation\n", "and compare it with the true posterior.\n", "\n" ] }, { "cell_type": "code", "execution_count": 22, "id": "4c92293e", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(lxs,[dot(w,Kv(x)) for x in lxs])\n", "plot(lxs,posterior,color='r')\n", "\n" ] }, { "cell_type": "markdown", "id": "49005aa2", "metadata": {}, "source": [ "As you can see, the fit works OK. The fact that it is near zero \n", "again above $x=4$ is just a consequence of the fact that we have no data there." ] }, { "cell_type": "markdown", "id": "136de8de", "metadata": {}, "source": [ "These kinds of fits can be tricky, though. For example, if\n", "we add another $\\phi_r$ centered in a region where there is no data,\n", "then the weight $w_r$ is adjusted based on the tail of that\n", "Gaussian, leading to an unreasonable posterior.\n", "\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "29b5b093", "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\neiIAAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def Kv(x): return array([K(x,mu) for mu in linspace(-3.5,3,11)])\n", "zs = array([Kv(x) for x in data[:,0]])\n", "w = dot(pinv(zs),data[:,1].reshape(200,1)).ravel()\n", "plot(lxs,[dot(w,Kv(x)) for x in lxs])\n", "plot(lxs,posterior,color='r')" ] }, { "cell_type": "markdown", "id": "80bea776", "metadata": {}, "source": [ "This means that it is prudent to pick values for the $\\mu_i$ that are close\n", "to the decision boundary, since using $\\mu_i$ centered on outliers may give\n", "rise to bad generalization.\n", "\n", "This is, in effect, what support vector machines are trying to do (among\n", "other things)." ] }, { "cell_type": "code", "execution_count": 23, "id": "d559763b", "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "98cf5f58", "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 5 }