{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Slow Feature Analysis\n", "\n", "Slow feature analysis consists of three main steps\n", "\n", "1. Projection in a feature space\n", "2. Whitening\n", "3. Computation of the temporal derivative \n", "3. Basis recovery\n", "\n", "Once the proper connection is made to PCA, this method becomes easy to understand and implement. \n", "\n", "## Polynomial Representation \n", "\n", "Polynomial expansion is often applied as a preprocessing step for SFA. All papers published on the topic avoid to write down explicitely the intended meaning behind *nonlinear expansion*. One reason for this might be that due to the wide use of the SFA-tk, rSFA or MDP packages for computing SFA which hide much of the details. Berkes (2005) is more precise on this question. For a random vector of size 3 for example, its corresponding polynomial expansion of degree 2 becomes:\n", "\n", "\\begin{equation}\n", "\\mathbf{h}(\\mathbf{x}) = [x_1^2, x_1x_2, x_1x_3, x_2^2, x_2x_3, x_3^2, x_1, x_2, x_3]\n", "\\end{equation}\n", "\n", "That is, $\\mathbf{h}$ consists of all the monomials up to degree 2. Using the built-in `product` function, we can generate all possible n-tuple for which the sum is less than or equal to the specified degree. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "from itertools import product\n", "\n", "monomials = lambda n, d: [t for t in product(range(d+1), repeat=n) if sum(t)<=d and sum(t) > 0]\n", "expand = lambda X, d: np.apply_along_axis(lambda x, mn: np.prod(np.power(x, mn), axis=1), 1, X, monomials(X.shape[1], d))\n", "\n", "X = np.array([[2, 3, 4], [5, 6, 7]])\n", "Y = expand(X, 2)\n", "print sorted(Y[0])\n", "print sorted(Y[1])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[2, 3, 4, 4, 6, 8, 9, 12, 16]\n", "[5, 6, 7, 25, 30, 35, 36, 42, 49]\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can compare the above output with the Matlab `expansion.m` function from `sfa_tk`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pymatbridge as pymat\n", "from pymatbridge import Matlab\n", "pymat.load_ipython_extension(get_ipython())\n", "mlab = Matlab()\n", "mlab.start()\n", "\n", "mlab.run_code('expansion([], [2 3 4; 5 6 7])')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Starting MATLAB on http://localhost:65268\n", " visit http://localhost:65268/exit.m to shut down same\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "MATLAB started and connected!\n", "Starting MATLAB on http://localhost:65284\n", " visit http://localhost:65284/exit.m to shut down same\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "." ] }, { "output_type": "stream", "stream": "stdout", "text": [ "MATLAB started and connected!\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "{u'content': {u'code': u'expansion([], [2 3 4; 5 6 7])',\n", " u'datadir': u'/private/tmp/MatlabData/',\n", " u'figures': [],\n", " u'stdout': u'\\nans =\\n\\n 2 3 4 4 6 8 9 12 16\\n 5 6 7 25 30 35 36 42 49\\n\\n'},\n", " u'success': u'true'}" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Whitening\n", "In order to satisfy the constraints in the optimization problem, we need to subtract the mean and transform the data so that it has unit variance: this can be done using PCA. Let's first generate some synthetic data to see the effect of whitening. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "from matplotlib import pyplot as plt\n", "\n", "mu1 = np.array([0.0, 0.0])\n", "sigma1 = np.array([[1.0, 0.5], [0.5, 1.0]])\n", "X = np.random.multivariate_normal(mu1, sigma1, 1000)\n", "plt.plot(X[:,0], X[:,1], '.')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAEACAYAAACqOy3+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnX2MVNX5x599A1wXdoFl2eLyJqCygswKZn/1JQyFDWV1\nw9ZKSonSWIXk17T5aVulxBj5B7S1/qFt2sQ0QmvDH2hatQaM0DhqtMSgiLUaaC1rQSXVdlCpLyCc\n3x+nh3numXPuPfdlXu7M95NMmJ25c+9z7zDf89znPM9zGoQQggAAAKSOxkobAAAAIBoQcAAASCkQ\ncAAASCkQcAAASCkQcAAASCkQcAAASCmJCPjp06epr6+PhoaGktgdAAAABxIR8Pvvv596e3upoaEh\nid0BAABwILaAHz16lHbu3Ek333wzoSYIAADKR2wBv/XWW+nee++lxkaE0wEAoJzEUt0nn3ySurq6\nqK+vD943AACUGxGDjRs3ip6eHjFjxgzR3d0tWltbxQ033ODZZtasWYKI8MADDzzwCPGYNWtWoAbH\nEnBOLpcT11xzTfEBKLFDlJS77rqr0iY4ATuTJQ12psFGIWrXzsWLhSCSj1WrSmKSERftTDRwjSwU\nAECt0doq/120iOjBBytri05iAr548WJ64oknktodAABUBdu3E61aRbR7N1FHR6Wt8dJcaQOqhWw2\nW2kTnICdyZIGO9NgI1Ht2tnRQbRjR2lsiUvDf2MtpTtAQwMyVAAAICQu2onkbQAASCkQcAAASCkQ\ncAAASCkQcAAASCkQcAAASCkQcAAASCkQcAAASCkQcAAASCkQcAAASCkQcAAASCkQcAAASCkQcADq\niPXribJZosFBouPHK20NiAsEHIA64tAhomefJdq1S4o5SDcQcADqiGpenACEB+1kAagjjh+XnveD\nD1bf4gTAi4t2QsABAKAKQT9wAACoYWIJ+GeffUb9/f2UyWSot7eXNm7cmJRdAAAAAogdQvnkk0+o\ntbWVvvjiC7ryyivppz/9KV155ZWFAyCEAgAAoSlLCKX1v9PaJ0+epNOnT9OECRPi7hIAAIADsQX8\nzJkzlMlkaPLkybRkyRLq7e1Nwi4AAAABxBbwxsZGevXVV+no0aP03HPPUS6XS8AsAAAAQTQntaP2\n9na6+uqrad++fZTNZj3vbdq06ezzbDZb9D4AANQ7uVwutAMcaxLzgw8+oObmZuro6KBPP/2Uli9f\n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\nngnqI0eOUE9PTwUtSj+nTp2ir3/963T99dfT8PBwpc0JpL29na6++mrat29fVQn4iy++SE888QTt\n3LmTPvvsM/roo49o7dq19Jvf/Mb8gbJE5BnVPIl56NChs88feOABcf3111fQGju7du0Svb294v33\n36+0KYFks1mxb9++Spvh4dSpU+L8888Xhw8fFp9//nnVTmIKIcThw4erfhLzzJkz4oYbbhC33HJL\npU3x5f333xf5fF4IIcQnn3wirrrqKrFnz54KW2Unl8uJa665xnebsi/oUM23rxs3bqT58+dTJpOh\nXC5H9913X6VNMvK9732PTpw4QQMDA9TX10ff+c53Km1SEb///e9p6tSptHfvXrr66qtpxYoVlTbp\nLM3NzfTzn/+cli9fTr29vfSNb3yD5s6dW2mzivjmN79Jl19+OR06dIimTp1asXBeEC+88AL99re/\npWeeeYb6+vqor6+PnnrqqUqbVcR7771HX/nKVyiTyVB/fz8NDQ3R0qVLK22WL0F6iUIeAABIKVhS\nDQAAUgoEHAAAUgoEHAAAUgoEHAAAUgoEHAAAUgoEHAAAUgoEHAAAUgoEHAAAUsr/A7SEeMVCUiTW\nAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will then subtract the mean of $X$ and take its SVD decomposition\n", "\\begin{equation}\n", "\\mathbf{X} = \\mathbf{U} \\Sigma \\mathbf{V}\n", "\\end{equation}\n", "\n", "The columns of $U$ are called left-singular vectors of $X$. They correspond to the eigenvectors of $XX^\\top$ (covariance). We then apply the whitening transformation using dot product\n", "\\begin{equation}\n", "\\mathbf{X}_W = \\mathbf{X}(\\mathbf{V}\\Sigma^{-1/2})^\\top\n", "\\end{equation}" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def whiten(X):\n", " U, S, V = np.linalg.svd(X, full_matrices=False)\n", " U *= sqrt(X.shape[0])\n", " return U\n", "\n", "X = whiten(X)\n", "\n", "plt.plot(X[:,0], X[:,1], '.')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Temporal derivative\n", "\n", "We compute the temporal derivative of the sphered signal using a discrete approximation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "derivative = lambda X: X[1:, :]-X[:-1, :]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Basis recovery\n", "\n", "Using the temporal derivative of the whiten signal, we can now obtain a basis in terms of its slowly varying components. It suffices here to once more to take the SVD decomposition. Numpy returns the singular values in the standard descending order. Therefore the first singular value is associated with the direction in which the variance in the temporal manifold is the highest. Since slow feature analysis aims at recovering the slow components, we want to pick the left singular vectors associated with the smallest singular values first. The slow features are the projection of the whiten signal onto the singular components of least variance." ] }, { "cell_type": "code", "collapsed": false, "input": [ "t = np.linspace(0, 2*np.pi, 5000)\n", "x1 = np.sin(t)+2*np.power(np.cos(11.*t), 2)\n", "x2 = np.cos(11.*t)\n", "X = np.column_stack((x1, x2)) \n", "\n", "plt.subplot(1, 2, 1)\n", "plt.plot(X[:,1], X[:,0], '.') \n", "\n", "Y = whiten(expand(X, 2))\n", "U, S, V = np.linalg.svd(derivative(Y), full_matrices=False)\n", "\n", "plt.subplot(1, 2, 2)\n", "Z = Y[:-1].dot(V[-1,:])\n", "plt.plot(Z)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nSUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "%%matlab\n", "path(path, '/Users/pierrelucbacon/workspace/sfa_tk/sfa');\n", "path(path, '/Users/pierrelucbacon/workspace/sfa_tk/lcov');\n", "T = 5000;\n", "t = linspace(0, 2*pi, T);\n", "x1 = sin(t)+cos(11*t).^2;\n", "x2 = cos(11*t);\n", "x = [x1; x2]';\n", "\n", "% plot the input signal\n", "subplot(1,3,1); plot(x2,x1);\n", "set(gca, 'Xlim', [-1.2, 1.2], 'YLim', [-1.2,2.2]);\n", "title('input signal x(t)');\n", "xlabel('x_2(t)'); ylabel('x_1(t)');\n", "\n", "\n", "[y, hdl] = sfa2(x);\n", "subplot(1,3,2); plot(t, y(:,1));\n", "set(gca, 'Xlim', [0,2*pi], 'PlotBoxAspectRatio', [1,1,1])\n", "title('output of the slowest varying function');\n", "xlabel('t'); ylabel('y_1(t)');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "text": [ "init preprocessing\n", "close preprocessing\n", "whitening and dimensionality reduction\n", "{\bWarning: PACK can only be used from the MATLAB command line.}\b \n", "> In lcov_clear at 11\n", " In sfa2_step at 41\n", " In sfa_step at 34\n", " In sfa2 at 27\n", " In web_eval at 44\n", " In webserver at 241\n", "init expansion step\n", "close expansion step\n", "perform slow feature analysis\n", "{\bWarning: PACK can only be used from the MATLAB command line.}\b \n", "> In lcov_clear at 11\n", " In sfa2_step at 96\n", " In sfa_step at 34\n", " In sfa2 at 29\n", " In web_eval at 44\n", " In webserver at 241\n", "{\bWarning: PACK can only be used from the MATLAB command line.}\b \n", "> In lcov_clear at 11\n", " In sfa2_step at 98\n", " In sfa_step at 34\n", " In sfa2 at 29\n", " In web_eval at 44\n", " In webserver at 241\n", "SFA2 closed\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nl1HFCKQ3VqEAAAAASUVORK5CYII=\n" } ], "prompt_number": 7 } ], "metadata": {} } ] }