{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from sklearn.decomposition import PCA, RandomizedPCA\n", "from sklearn.datasets import make_low_rank_matrix" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "X = make_low_rank_matrix(50, 100, effective_rank=10)\n", "\n", "total_variance = np.var(X, axis=0).sum()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's check that the explained variance ratio estimated internally by a full PCA model matches the true explained variance ratio as measured from the data:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "pca = PCA().fit(X)\n", "plt.plot(pca.explained_variance_ratio_, label='pca explained variance')\n", "\n", "X_transformed = pca.transform(X)\n", "variances = np.var(X_transformed, axis=0)\n", "true_explained_variance_ratio = variances / total_variance\n", "\n", "plt.plot(true_explained_variance_ratio, label='empirical explained variance')\n", "plt.legend(loc='best')\n", "plt.xlabel('pca components')\n", "plt.ylabel('fraction of total variance')\n", "None" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nbsiOVg6sAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "If the PCA is only partially computed (early truncation), this can no longer be estimated:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "pca = RandomizedPCA(n_components=20).fit(X)\n", "\n", "plt.plot(pca.explained_variance_ratio_, label='truncated pca explained variance')\n", "\n", "X_transformed = pca.transform(X)\n", "variances = np.var(X_transformed, axis=0)\n", "true_explained_variance_ratio = variances / total_variance\n", "\n", "plt.plot(true_explained_variance_ratio, label='empirical explained variance')\n", "plt.legend(loc='best')\n", "plt.xlabel('pca components')\n", "plt.ylabel('fraction of total variance')\n", "None" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because of the truncation, the RandomizedPCA model is ignoring ~27% of the total variance of the data in this `explained_variance_ratio_` estimate is lying." ] }, { "cell_type": "code", "collapsed": false, "input": [ "pca.explained_variance_ratio_.sum()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "1.0" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "true_explained_variance_ratio.sum()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "0.73030800688027508" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }