{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This note implements PCA using `np.linalg.svd` and compare the results to sklearn implementation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Sklearn implementation" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# adopted from https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_lda.html#sphx-glr-auto-examples-decomposition-plot-pca-vs-lda-py\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from sklearn import datasets\n", "from sklearn.decomposition import PCA, TruncatedSVD\n", "\n", "iris = datasets.load_iris()\n", "\n", "pca = PCA(n_components=2)\n", "projected_skl = pca.fit(iris.data).transform(iris.data)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(projected_skl[:, 0], projected_skl[:, 1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Custom implementation" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "X = iris.data.T" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4, 150)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "n = X.shape[1]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "X_tilde = X - X.mean(axis=1).reshape(-1, 1)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Check data are standardized\n", "np.testing.assert_allclose(X_tilde.sum(axis=1), np.zeros(len(X_tilde)), atol=1e-12)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "U, Σ, Vh = np.linalg.svd(1 / np.sqrt(n - 1) * X_tilde, full_matrices=False)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4, 4)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U.shape" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4, 150)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Vh.shape" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Check eigenvectors are normalized\n", "np.testing.assert_allclose((U**2).sum(axis=1), np.ones(len(X_tilde)), atol=1e-12)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(1, 2, figsize=(10, 4))\n", "axes = axes.ravel()\n", "\n", "axes[0].plot(Σ, marker='o')\n", "axes[0].set(ylabel='Singular values')\n", "axes[0].grid()\n", "\n", "axes[1].plot(np.cumsum(Σ / Σ.sum()), marker='o')\n", "axes[1].set(ylabel='Singular value cumulative fractions')\n", "axes[1].grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Validates the projections of $\\tilde{Y}$ match those from sklearn implementation exactly." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# We project both X and \\tilde{X} becuase it appears that sklearn implementation projects the later\n", "X_projected = - U[:,:2].T @ X\n", "X_projected_tilde = - U[:,:2].T @ X_tilde" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(projected_skl[:,0], X_projected[0])\n", "plt.scatter(projected_skl[:,0], X_projected_tilde[0])\n", "plt.plot([-4, 4], [-4, 4])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(projected_skl[:,1], X_projected[1])\n", "plt.scatter(projected_skl[:,1], X_projected_tilde[1])\n", "plt.plot([-1.5, 2], [-1.5, 2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Validates the variances match those from sklearn implementation." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4.22824171, 0.24267075])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pca.explained_variance_" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4.22824171, 0.24267075, 0.0782095 , 0.02383509])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Σ ** 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Project back to the original space" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "X_proj_back = - U[:,:2] @ X_projected" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.470912453963494" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.var(X_proj_back, ddof=1, axis=1).sum()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.4709124539634955" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(Σ ** 2)[:2].sum()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(1, 4, figsize=(16, 3))\n", "axes = axes.ravel()\n", "\n", "for i, ax in enumerate(axes):\n", " ax.scatter(X.T[:, i], X_proj_back.T[:, i], marker=\".\", edgecolor=\"none\")\n", " ax.set(\n", " title=f\"coordinates in original {i}th dimension \",\n", " xlabel=\"before projection\",\n", " ylabel=\"after projection back\",\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This show the difference in coordinate for each data point between before projection and reconstruction (after projecting back to the high-dimensional space)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we attribute the lost variance in the last two eigenvalues to the dimensions in the original high-dimensional space." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(1, 4, figsize=(16, 3))\n", "axes = axes.ravel()\n", "\n", "for i, ax in enumerate(axes):\n", " ax.scatter(X.T[:, i], X_proj_back.T[:, i] - X.T[:, i], marker=\".\", edgecolor=\"none\")\n", " ax.set(\n", " title=f\"coordinates in original {i}th dimension \",\n", " xlabel=\"before projection\",\n", " ylabel=\"Delta\",\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "so the lost variances in the last two eigenvalues are from all four dimension in the original space." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we plot the lost variance in each dimension between after projection back and before projection." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "delta_var = np.var(X_proj_back, ddof=1, axis=1) - np.var(X, ddof=1, axis=1) \n", "plt.bar(range(len(X_proj_back)), delta_var)\n", "\n", "plt.xlabel(\"Dimension\")\n", "plt.ylabel(\"Δ in variance\")\n", "plt.grid(axis=\"y\")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.10204459301637295" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "delta_var.sum()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.10204459301636891" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(Σ ** 2)[2:].sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Confirm trace of $X$ is equal to sum of eigenvalues/singular values squared." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.572957046979868" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.var(X_tilde, ddof=1, axis=1).sum()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.572957046979867" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.var(X, ddof=1, axis=1).sum()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.572957046979864" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(Σ ** 2).sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# On a separate note, verify the working of sklearn TruncatedSVD, which is closely related to PCA" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "X = np.array([\n", " [3, -4, 7, 1, -4, -3],\n", " [7, -6, 8, -1, -1, 7],\n", "])" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(X[0], X[1])\n", "plt.plot([-8, 8], [-8, 8])" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "U, Σ, Vh = np.linalg.svd(X)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ -7.57023468, 7.19152763, -10.4085844 , 0.37870705,\n", " 2.83834972, -4.61866347]])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U[:,0:1].T @ X" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 7.57023468],\n", " [-7.19152763],\n", " [10.4085844 ],\n", " [-0.37870705],\n", " [-2.83834972],\n", " [ 4.61866347]])" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trunc_svd = TruncatedSVD(n_components=1)\n", "trunc_svd.fit_transform(X.T)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }