{ "metadata": { "name": "", "signature": "sha256:a6e7e8e6dd048c1dfbedc22afe3d0202f5b899f4daa0f82572fb2ea998d52af0" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Filter Example\n", "\n", "This example demonstrates the connection between MKS and signal\n", "processing for a 1D filter. It shows that the filter is in fact the\n", "same as the influence coefficients and, thus, applying the `predict`\n", "method provided by the `MKSRegressionModel` is in essence just applying a filter." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "prompt_number": 64 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we construct a filter, $F$, such that\n", "\n", "$$F\\left(x\\right) = e^{-|x|} \\cos{\\left(2\\pi x\\right)} $$\n", "\n", "We want to show that if $F$ is used to generate sample calibration\n", "data for the MKS, then the calculated influence coefficients are in\n", "fact just $F$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "x0 = -10.\n", "x1 = 10.\n", "x = np.linspace(x0, x1, 1000)\n", "def F(x):\n", " return np.exp(-abs(x)) * np.cos(2 * np.pi * x)\n", "p = plt.plot(x, F(x))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 65 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we generate the sample data `(X, y)` using\n", "`scipy.ndimage.convolve`. This performs the convolution\n", "\n", "$$ p\\left[ i \\right] = F\\left[j\\right] X\\left[i - j\\right] $$\n", "\n", "for each sample." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import scipy.ndimage\n", "\n", "Nspace = 101\n", "Nsample = 50\n", "np.random.seed(201)\n", "x = np.linspace(x0, x1, Nspace)\n", "X = np.random.random((Nsample, Nspace))\n", "y = np.array([scipy.ndimage.convolve(xx, F(x), mode='wrap') for xx in X])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 71 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this problem, a basis is unnecessary as no discretization is\n", "required in order to reproduce the convolution with the MKS. Using\n", "the `ContinuousIndicatorBasis` with `n_states=2` is the equivalent of a\n", "non-discretized convolution in space." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from pymks import MKSRegressionModel\n", "from pymks import ContinuousIndicatorBasis\n", "\n", "basis = ContinuousIndicatorBasis(n_states=2, domain=[0, 1])\n", "model = MKSRegressionModel(basis=basis)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 72 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fit the model using the data generated by $F$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "model.fit(X, y)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 73 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To check for internal consistency, we can compare the predicted\n", "output with the original for a few values" ] }, { "cell_type": "code", "collapsed": false, "input": [ "y_pred = model.predict(X)\n", "print y[0, :4]\n", "print y_pred[0, :4]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-0.41059557 0.20004566 0.61200171 0.5878077 ]\n", "[-0.41059557 0.20004566 0.61200171 0.5878077 ]\n" ] } ], "prompt_number": 74 }, { "cell_type": "markdown", "metadata": {}, "source": [ "With a slight linear manipulation of the coefficients, they agree perfectly with the shape of the filter, $F$. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(x, F(x), 'r', label=r'$F$')\n", "plt.plot(x, -model.coeff[:,0] + model.coeff[:, 1], 'k--', label=r'$\\alpha$')\n", "l = plt.legend()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ngg==\n", "text": [ "" ] } ], "prompt_number": 75 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some manipulation of the coefficients is required to reproduce the filter. Remember the convolution for the MKS is\n", "\n", "$$ p \\left[i\\right] = \\sum_h^{n-1} \\alpha_h \\left[j\\right] m_h \\left[i - j\\right] $$\n", "\n", "However, the `MKSRegressionModel` solves a modified form of this. There are always redundant coefficients since\n", "\n", "$$ \\sum\\limits_{h=0}^{n-1} m_h \\left[i\\right] = 1 $$\n", "\n", "Thus, the convolution must be rewritten taking this into account. We can rewrite the convolution as\n", "\n", "$$ \\begin{split}\n", "p \\left[i\\right] &= \\sum\\limits_{h=0}^n \\alpha_h \\left[j\\right] m_h \\left[i - j\\right] \\\\\n", " &= \\sum\\limits_{h=0}^{n - 2} \\alpha_h \\left[j\\right] m_h \\left[i - j\\right] + \n", " \\alpha_{n-1} \\left[j\\right] \\left( I\\left[i - j\\right] - \\sum\\limits_{h=0}^{n - 2} m_h \\left[i - j\\right] \\right) \\\\\n", " &= \\alpha_{n - 1} \\left[ j \\right] I\\left[i - j\\right] +\n", " \\sum\\limits_{h=0}^{n - 2} \\left(\\alpha_h\\left[j\\right] - \\alpha_{n-1}\\left[j\\right] \\right) m_h\\left[i - j\\right] \\\\\n", " &= \\beta + \\sum\\limits_{h=0}^{n - 2} b_h \\left[ j \\right] m_h \\left[ i - j \\right] \n", "\\end{split}$$\n", "\n", "where $\\beta = \\alpha_{n - 1} \\left[ j \\right] I\\left[i - j\\right]$ is just a constant and $I\\left[i\\right] = 1$ for all $i$.\n", "This removes the redundancies from the regression. Manipulation of the $\\beta$ and $b_0$ demonstrate that the filter is reproduced." ] } ], "metadata": {} } ] }