{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Continuous Latent Variable Models - PCA and FA" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Preliminaries\n", "\n", "- Goal \n", " - Introduction to Linear Latent Variable Models on continuous domains, specifically **factor analysis** and **principal component analysis**\n", "- Materials \n", " - Mandatory\n", " - These lecture notes\n", " - Optional\n", " - Bishop pp. 570-573, 577-580, 584-586 (PCA and FA)\n", " - M. Tipping and C. Bishop, [Probabilistic Principal Component Analysis](./files/bishop-ppca-jrss.pdf), Journal of the Royal Statistical Society. Series B, Vol.61, No.3, 1999 " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Continuous Latent Variable Models\n", "\n", "- (Recall that) mixture models use a discrete class variable." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Sometimes, it is more appropriate to think in terms of **continuous**\n", "underlying causes (factors) that control the observed data.\n", "\n", " - E.g., observe test results for subjects: English, Spanish and French\n", "\n", "$$\\begin{align*}\n", " \\underbrace{ \\begin{bmatrix} x_1\\;(=\\text{English})\\\\ x_2\\;(=\\text{Spanish})\\\\ x_3\\;(=\\text{French}) \\end{bmatrix} }_{\\text{observed}}% &= f(\\text{causes},\\theta) + \\text{noise}\\\\\n", "&= \\begin{bmatrix} \\lambda_{11},\\lambda_{12}\\\\ \\lambda_{21},\\lambda_{22}\\\\ \\lambda_{31},\\lambda_{32}\\end{bmatrix} \\cdot \\underbrace{ \\begin{bmatrix} z_1\\;(=\\text{literacy})\\\\ z_2\\;(=\\text{intelligence})\\end{bmatrix} }_{\\text{causes}} + \\underbrace{\\begin{bmatrix} v_1\\\\v_2\\\\v_3\\end{bmatrix} }_{\\text{noise}}\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- (**Unsupervised Regression**). This is like (linear) regression with unobserved inputs." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Dimensionality Reduction\n", "\n", "- If the dimension for the hidden 'causes' ($z$) is smaller than for the observed data ($x$), then the model (tries to) achieve **dimensionality reduction**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Key applications include \n", " 1. **compression** (store $z$ rather than $x$) \n", " - Compression through **real-valued** latent variables can be far more efficient than with discrete clusters.\n", " - E.g., with two 8-bit hidden factors, one can describe $2^{16}\\approx 10^5$ settings; this would take $2^{16}$ clusters!\n", " 2. **noise reduction** (e.g. in biomedical, financial or speech signals)\n", " 3. **feature extraction** (e.g. as a pre-processor for classification) \n", " 4. **visualization** (particularly if $\\mathrm{dim}(Z)=2$) " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example Problem: Visualization with missing data\n", "\n", "\n", "- We consider 38 examples from the 18-dimensional data set from the\n", "**Tobamovirus** data set, see section 4.1 in Tipping and Bishop (1999) (Originally from Ripley (1996)). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- We will visualize this data set after projection onto the two principal axes (i.e., axes that explain largest data variance). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- We will also consider the visualization problem when 20% of the data set is missing. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "38×18 Array{Int64,2}:\n", " 17 13 14 16 4 9 14 1 13 0 11 13 5 7 1 4 11 5\n", " 12 11 9 12 6 5 12 1 9 1 7 12 5 6 0 4 8 2\n", " 18 16 16 16 8 6 14 1 14 0 9 12 4 8 0 2 11 3\n", " 18 16 15 19 8 6 11 1 15 1 7 13 5 8 0 2 9 3\n", " 17 13 13 22 8 4 18 1 10 3 8 11 7 6 1 2 10 2\n", " 16 13 16 21 9 3 17 1 10 4 7 12 7 5 1 2 11 3\n", " 22 19 10 16 10 4 18 1 12 2 8 11 6 8 0 1 8 2\n", " 20 10 24 10 6 9 21 0 7 0 7 18 4 9 1 4 8 2\n", " 20 21 12 15 9 7 11 1 9 3 8 14 6 7 0 1 10 3\n", " 20 21 12 15 9 7 11 1 9 3 9 14 5 7 0 1 10 3\n", " 18 11 24 10 9 6 19 0 12 0 7 14 4 11 0 4 9 1\n", " 20 12 23 10 8 5 20 0 13 0 6 13 4 11 0 4 10 1\n", " 18 19 18 16 8 4 12 0 12 0 10 15 8 6 1 1 12 1\n", " ⋮ ⋮ ⋮ ⋮ \n", " 17 12 22 10 8 5 18 0 14 0 5 13 4 10 0 3 9 1\n", " 17 16 16 16 8 6 15 1 14 0 9 12 4 8 0 2 11 3\n", " 19 17 15 17 7 6 15 1 14 0 8 12 4 8 0 2 10 3\n", " 18 16 16 19 8 6 11 1 15 1 7 13 5 8 0 2 9 3\n", " 18 17 15 17 8 6 15 1 14 0 8 12 4 8 0 3 9 3\n", " 15 12 14 23 8 3 17 1 9 4 7 15 6 6 1 2 11 2\n", " 13 11 14 22 7 3 17 1 10 4 8 13 6 6 1 3 11 2\n", " 16 11 15 23 10 4 18 1 10 3 7 12 6 5 1 2 9 3\n", " 14 11 14 25 11 3 19 2 10 2 7 12 6 5 1 2 9 3\n", " 11 11 15 24 10 5 18 1 11 1 7 14 5 7 2 3 11 2\n", " 15 9 12 21 8 4 21 1 10 3 7 15 7 6 1 3 10 3\n", " 15 11 15 22 7 3 19 1 8 3 4 14 6 5 1 2 10 2" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "include(\"scripts/pca_demo_helpers.jl\")\n", "X = readDataSet(\"datasets/virus3.dat\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Model Specification for LC-LVM\n", "\n", "- In this lesson, we focus on _Linear_ Continuous Latent Variable Models (**LC-LVM**). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Introduce observation vector ${x}\\in\\mathbb{R}^D$ and $M$-dimensional (with $M \\lt D$) real-valued **latent factor** $z$:\n", "$$\\begin{align*}\n", " x &= W z + \\mu + \\epsilon \\\\\n", " z &\\sim \\mathcal{N}(0,I) \\\\\n", " \\epsilon &\\sim \\mathcal{N}(0,\\Psi)\n", "\\end{align*}$$\n", "or equivalently\n", "$$\\begin{align*}\n", "p(x|z) &= \\mathcal{N}(x|\\,W z + \\mu,\\Psi) \\tag{likelihood}\\\\\n", "p(z) &= \\mathcal{N}(z|\\,0,I) \\tag{prior}\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $W$ is the so-called $(D\\times M)$-dim **factor loading matrix**. The parameters of this model are given by $\\theta=\\{W,\\mu,\\Psi\\}$. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- For interesting models, the **observation noise covariance matrix** $\\Psi$ is always **diagonal**. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "\n", "- Note the similarity of the likelihood function in LC-LVM and [linear regression](http://nbviewer.ipython.org/github/bertdv/AIP-5SSB0/blob/master/lessons/06_linear_regression/Linear-Regression.ipynb): \n", "$$p(y|x) = \\mathcal{N}(y|\\theta^T {x}, \\sigma^2)$$\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### LC-LVM Analysis (1): The marginal distribution $p({x})$\n", "\n", "- Since the product of Gaussians is Gaussian, both the joint $p(x,z) = p(x|z)p(z)$, the marginal $p(x)$ and the conditional\n", "$p(z|x)$ distributions are also Gaussian." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The marginal distribution for the observed data is\n", "$$\n", "\\boxed{ p(x) = \\mathcal{N}({x}|\\,{\\mu},W W^T + \\Psi) } \n", "$$\n", "since the **mean** evaluates to \n", "$$\\begin{align*}\n", "\\mathrm{E}[x] &= \\mathrm{E}[W z + \\mu+ \\epsilon] \\\\\n", " &= W \\mathrm{E}[z] + \\mu + \\mathrm{E}[\\epsilon] \\\\\n", " &= \\mu \n", "\\end{align*}$$\n", "and the **covariance** matrix is\n", "$$\\begin{align*}\n", "\\mathrm{cov}[x] &= \\mathrm{E}[({x}-{\\mu})({x}-{\\mu})^T] \\\\\n", " &= \\mathrm{E}[(W z +\\epsilon)(W z +\\epsilon)^T] \\\\\n", " &= W \\mathrm{E}[z z^T] W^T + \\mathrm{E}[\\epsilon \\epsilon^T] \\\\\n", " &= W W^T + \\Psi \n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $\\Rightarrow$ **LC-LVM is just a MultiVariate Gaussian (MVG) model** $x \\sim \\mathcal{N}({\\mu},\\Sigma)$ with the restriction that\n", "\n", "$$\\Sigma= W W^T + \\Psi \\,.$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Covariance Matrix of $p(x)$ is of Intermediate Complexity\n", "\n", "- The effective covariance $\\mathrm{cov}[x] = W W^T + \\Psi$ is the low-rank outer product of two\n", "long skinny matrices plus a diagonal matrix.\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $\\Rightarrow$ LC-LVM provides a MVG model of **intermediate complexity**. Compare the number of free parameters:\n", " - $D(D+1)/2$ for full Gaussian covariance $\\Sigma$\n", " - $D(M+1)$ for LC-LVM model where $\\Sigma = W W^T + \\Psi$. \n", " - $D$ for diagonal Gaussian covariance $\\Sigma = \\mathrm{diag}(\\sigma_i^2)$\n", " - $1$ for isotropic Gaussian noise $\\Sigma = \\sigma^2 \\mathrm{I}$\n", " \n", "\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### LC-LVM Analysis (2): The Factor Loading Matrix $W$ is Not Unique\n", "\n", "- The factor loading matrix $W$ can only be estimated up to a rotation matrix $R$. Namely, if we rotate $W \\rightarrow WR $, then the covariance matrix for observations $x$ does not change (N.B.: a rotation (or orthogonal) matrix $R$ is a matrix such that $R^TR = R R^T = I$):\n", "\n", "$$\n", "W R (W R)^T + \\Psi = W R R^T W^T + \\Psi = W W^T + \\Psi\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $\\Rightarrow$ Two persons that estimate ML parameters for FA on the same data are **not guaranteed to find the same parameters**, since any rotation of $W$ is equally likely." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $\\Rightarrow$ we can infer latent **subspaces** rather than individual components. One has to be careful when interpreting the numerical values of $W$ and $z$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### LC-LVM analysis (3): Constraints on the Noise Variance $\\Psi$\n", "\n", "- When doing ML estimation for the parameters, a trivial solution for the covariance matrix $\\Sigma_x = W W^T + \\Psi$ is setting $\\hat W=0$ and $\\hat\\Psi$ equal to the sample variance of the data." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In this case, all data correlation is explained as noise. (We'd like to avoid this.) " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $\\Rightarrow$ The LC-LVM model is uninteresting without some restriction on the observation noise covariance matrix $\\Psi$. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The interesting cases are mostly for diagonal $\\Psi$. Note that if $\\Psi$ is diagonal, all correlations between the $(D)$ components of $x$ **must be explained** by the rank-$M$ matrix $W W^T$. Three model choices are common:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "##### 1. Factor Anaysis \n", "\n", "- In Factor Analysis (**FA**), $\\Psi$ is restricted to be _diagonal_:\n", "\n", "$$\\begin{align*} \n", "\\Psi = \\mathrm{diag}(\\psi_i) \n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### LC-LVM analysis (3): Constraints on the Noise Variance $\\Psi$, cont'd\n", "\n", "\n", "##### 2. Probabilistic Principal Component Analysis \n", "\n", "- In Probabilistic Principal Component Analysis (**pPCA**), the variances are further restricted to be the same,\n", " \n", "$$\\begin{align*} \n", "\\Psi = \\sigma^2 I \n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "##### 3. Principal Component Analysis \n", "\n", "- The 'regular' (deterministic) Principal Component Analysis (**PCA**) procedure can be obtained by further requiring that\n", "$$\\begin{align*} \n", "\\Psi &= \\lim_{\\sigma^2\\rightarrow 0} \\sigma^2 I \\\\\n", "W^T W &= I\n", "\\end{align*}$$ \n", "i.e., the noise model is discarded altogether and the columns of $W$ are orthonormal. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Regular PCA is a well-known deterministic procedure for dimensionality reduction (that predates pPCA)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$\\Rightarrow$ FA, pPCA and PCA differ only by their model for the noise variance $\\Psi$ (namely, diagonal, isotropic and 'zeros')." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Typical Applications\n", "- In PCA (or pPCA), the noise variance is assumed to be the same for all components. This is appropriate if all components of the observed data are 'shifted' versions of each other.\n", "\n", "$\\Rightarrow$ **PCA is very widely applied to image and signal processing tasks!**\n", "\n", "- Google (May-2015): [PCA \"face recognition\"] $>$ 300K hits; [PCA \"noise reduction\"] $>$ 100K hits " ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "fragment" } }, "source": [ "- FA is insensitive to scaling of individual components in the observed data (see appendix).\n", "- Use FA if the data are not shifted versions of the same kind.\n", "\n", "$\\Rightarrow$ **FA has strong history in 'social sciences'**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### ML estimation for pPCA Model\n", "\n", "- Given the generative model for pPCA \n", "$$\\begin{align*}\n", "p(x_n|z_n) &= \\mathcal{N}(x_n\\mid W z_n + \\mu,\\sigma^2 \\mathrm{I})\\\\\n", "p(z_n) &= \\mathcal{N}(z_n \\mid0,\\mathrm{I})\n", "\\end{align*}$$\n", "and observations ${D}=\\{x_1,\\dotsc,x_N\\}$, find ML estimates for the parameters $\\theta=\\{W,\\mu,\\sigma\\}$ " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Inference for ${\\mu}$** is easy: ${x}$ is a multivariate Gaussian with mean ${\\mu}$, so its ML estimate is\n", "$$ \\hat {\\mu} = \\frac{1}{N}\\sum_n {x}_n$$\n", "Now subtract $\\hat {\\mu}$ from all data points (${x}_n:= {x}_n-\\hat {\\mu}$) and assume that we have zero-mean data." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- For ML estimation of $W$ and $\\sigma^2$, both gradient-ascent and EM are possible. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Solution method 1: Gradient-ascent on the log-likelihood \n", "\n", "- Work out the gradients for the log-likelihood\n", "$$\\begin{align*}\\log\\, &p({D}|{\\theta}) \\\\ &= -\\frac{N}{2} \\log \\lvert 2\\pi(W W^T + \\sigma^2 \\mathrm{I})\\rvert -\\frac{1}{2}\\sum_n {x}_n^T(W W^T + \\sigma^2 \\mathrm{I})^{-1}{x}_n\\end{align*}$$\n", "and optimize w.r.t. $W$ and $\\sigma^2$. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- (Similarly to ML estimation in Gaussian mixture models), it turns out to be quite difficult to work out the gradient because of the coupling between $W$ and $\\sigma^2$ (but it is possible, see [Tipping and Bishop, 1999](./files/bishop-ppca-jrss.pdf))." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Solution method 2: Use EM\n", "\n", "- A big bonus for EM over gradient-based methods is that EM comfortably handles missing observations, e.g. through sensor malfunction. Missing observations are simply treated as hidden variables. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Maximizing the _expected complete-data log-likelihood_ leads to the following (see Bishop, pg.578 for derivation): " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$$\\begin{align*}\n", "\\textbf{E-step}:& \\\\\n", "M &= W^T W + \\sigma^2 \\mathrm{I}\\\\\n", "\\mathrm{E}\\left[ z_n\\right] &= M^{-1} W^T x_n \\\\\n", "\\mathrm{E}\\left[ z_n z_n^T\\right] &= \\sigma^2 M^{-1} + \\mathrm{E}\\left[ z_n\\right] \\mathrm{E}\\left[ z_n\\right]^T\\\\\n", "\\\\\n", "\\textbf{M-step}:& \\\\\n", "W_{\\text{new}} &= \\left[ \\sum_{n=1}^N x_n \\mathrm{E}\\left[z_n\\right]^T\\right] \\left[ \\sum_{n=1}^N \\mathrm{E}\\left[ z_n z_n^T\\right]\\right]^{-1} \\\\\n", "\\sigma^2_{\\text{new}} &= \\frac{1}{ND} \\sum_{n=1}^N \\left\\{ x_n^T x_n - 2 \\mathrm{E}\\left[z_n\\right]^T W_{\\text{new}}^T x_n + \\mathrm{Tr}\\left( \\mathrm{E}\\left[ z_n z_n^T\\right] W_{\\text{new}}^T W_{\\text{new}} \\right) \\right\\}\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Solution method 2: Use EM, cont'd\n", "\n", "- Note that after $x_n$ is observed, the unobserved 'input' $z_n$ is not known exactly; the uncertainty about input $z_n$, as expressed by the covariance $$\\text{cov}(z_n) = \\mathrm{E}\\left[ z_n z_n^T\\right] - \\mathrm{E}\\left[ z_n\\right] \\mathrm{E}\\left[ z_n\\right] ^T = \\sigma^2 M^{-1}$$ can be computed _before the data point $x_n$ has been seen_. \n", " - Exercise: Show that the precision about $z_n$ increases through observing $x_n.$\n", " - Compare this to linear regression, where we have full knowledge about an input-output pair." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- If there was no uncertainty about $z_n$, i.e., $\\mathrm{E}\\left[ z_n\\right] = z_n$ and $\\mathrm{E}\\left[ z_n z_n^T\\right] = z_n z_n^T$, then\n", "$$\n", "W_{\\text{new}} = \\left[ \\sum_{n=1}^N x_n z_n^T\\right] \\left[ \\sum_{n=1}^N z_n z_n^T\\right]^{-1}\n", "$$\n", " - Exercise: Verify that this solution resembles the [ML solution for linear regression](http://nbviewer.ipython.org/github/bertdv/AIP-5SSB0/blob/master/lessons/notebooks/06_Linear-Regression.ipynb). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example Problem Revisited\n", "\n", "Let's perform pPCA on the example (**Tobamovirus**) data set using EM. We'll find the two principal components ($M=2$), and then visualize the data in a 2-D plot. The implementation is quite straightforward, have a look at the [source file](https://github.com/bertdv/AIP-5SSB0/blob/master/lessons/notebooks/scripts/pca_demo_helpers.jl) if you're interested in the details." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "using LinearAlgebra\n", "include(\"scripts/pca_demo_helpers.jl\")\n", "X = readDataSet(\"datasets/virus3.dat\")\n", "(θ, Z) = pPCA(convert(Matrix,X'), 2)# uses EM, implemented in scripts/pca_demo_helpers.jl. Feel free to try more/less dimensions.\n", "\n", "\n", "using PyPlot\n", "plot(Z[1,:], Z[2,:], \"w\")\n", "for n=1:size(Z,2)\n", " PyPlot.text(Z[1,n], Z[2,n], string(n), fontsize=10) # put a label on the position of the data point\n", "end\n", "title(\"Projection of Tobamovirus data set on two dimensions (numbers correspond to data points)\", fontsize=10);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Note that the solution is not unique, but the clusters should be more or less persistent.\n", "\n", "Now let's randomly remove 20% of the data:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[17.0 13.0 14.0 16.0 4.0 9.0 NaN 1.0 13.0 0.0 11.0 13.0 NaN 7.0 1.0 4.0 11.0 5.0; 12.0 11.0 9.0 12.0 NaN 5.0 12.0 1.0 9.0 1.0 7.0 12.0 5.0 6.0 0.0 NaN 8.0 2.0; 18.0 16.0 16.0 NaN 8.0 6.0 14.0 1.0 NaN 0.0 9.0 12.0 NaN 8.0 0.0 2.0 11.0 NaN; 18.0 16.0 15.0 19.0 8.0 6.0 11.0 1.0 15.0 NaN 7.0 13.0 5.0 8.0 0.0 2.0 9.0 3.0; 17.0 13.0 13.0 NaN 8.0 4.0 18.0 1.0 10.0 NaN 8.0 11.0 7.0 6.0 1.0 NaN 10.0 2.0; 16.0 13.0 16.0 21.0 9.0 3.0 17.0 NaN 10.0 NaN 7.0 12.0 7.0 5.0 1.0 2.0 11.0 NaN; 22.0 NaN 10.0 16.0 10.0 NaN 18.0 NaN NaN 2.0 8.0 11.0 6.0 8.0 0.0 1.0 8.0 NaN; 20.0 10.0 24.0 10.0 6.0 9.0 21.0 0.0 7.0 0.0 7.0 NaN 4.0 9.0 1.0 NaN NaN 2.0; 20.0 21.0 12.0 15.0 NaN 7.0 11.0 1.0 NaN 3.0 8.0 14.0 6.0 7.0 NaN 1.0 10.0 3.0; NaN 21.0 NaN 15.0 9.0 7.0 11.0 1.0 9.0 3.0 9.0 14.0 5.0 7.0 NaN 1.0 10.0 3.0; NaN 11.0 NaN 10.0 9.0 6.0 19.0 0.0 12.0 NaN 7.0 14.0 NaN NaN NaN 4.0 9.0 1.0; 20.0 12.0 23.0 10.0 8.0 5.0 20.0 0.0 13.0 0.0 NaN 13.0 4.0 NaN NaN 4.0 10.0 1.0; NaN NaN 18.0 16.0 NaN 4.0 12.0 0.0 12.0 0.0 10.0 15.0 8.0 6.0 1.0 1.0 12.0 1.0; 17.0 NaN NaN 15.0 8.0 6.0 14.0 1.0 14.0 0.0 9.0 12.0 NaN NaN 0.0 3.0 NaN 3.0; 19.0 17.0 NaN NaN 8.0 NaN 14.0 1.0 14.0 0.0 8.0 12.0 NaN NaN 0.0 2.0 12.0 NaN; NaN NaN 15.0 NaN 8.0 5.0 14.0 1.0 14.0 NaN 8.0 12.0 4.0 8.0 0.0 2.0 12.0 3.0; NaN 15.0 16.0 16.0 8.0 6.0 14.0 1.0 15.0 NaN 8.0 12.0 NaN 8.0 NaN 2.0 NaN 3.0; 17.0 17.0 16.0 19.0 NaN 6.0 NaN 1.0 NaN 1.0 7.0 13.0 5.0 8.0 0.0 2.0 9.0 NaN; 18.0 17.0 NaN NaN 8.0 6.0 11.0 1.0 NaN 1.0 7.0 13.0 5.0 8.0 0.0 NaN 9.0 3.0; 22.0 NaN 10.0 16.0 10.0 5.0 17.0 1.0 12.0 2.0 8.0 11.0 6.0 8.0 0.0 1.0 8.0 NaN; 18.0 NaN NaN 18.0 NaN 8.0 17.0 1.0 14.0 1.0 5.0 16.0 4.0 NaN 0.0 NaN NaN 2.0; NaN 16.0 16.0 15.0 NaN 6.0 13.0 1.0 14.0 1.0 8.0 12.0 4.0 8.0 1.0 2.0 12.0 3.0; 20.0 21.0 12.0 NaN 9.0 NaN 11.0 1.0 10.0 3.0 NaN 14.0 7.0 7.0 0.0 1.0 9.0 3.0; 20.0 21.0 12.0 15.0 9.0 7.0 11.0 NaN 10.0 3.0 9.0 14.0 5.0 7.0 0.0 1.0 10.0 3.0; 18.0 12.0 NaN 10.0 9.0 NaN NaN 0.0 14.0 0.0 7.0 12.0 4.0 NaN 0.0 NaN 10.0 1.0; 18.0 12.0 21.0 10.0 10.0 NaN 18.0 0.0 13.0 0.0 8.0 12.0 4.0 NaN 0.0 4.0 10.0 NaN; 17.0 12.0 22.0 10.0 8.0 5.0 18.0 0.0 NaN NaN 5.0 13.0 4.0 10.0 0.0 3.0 NaN 1.0; NaN 16.0 16.0 NaN 8.0 6.0 15.0 1.0 NaN NaN NaN 12.0 4.0 8.0 0.0 2.0 11.0 NaN; 19.0 NaN 15.0 17.0 7.0 NaN 15.0 1.0 14.0 0.0 8.0 12.0 4.0 8.0 0.0 2.0 NaN 3.0; NaN 16.0 16.0 19.0 NaN 6.0 11.0 1.0 15.0 1.0 NaN 13.0 5.0 8.0 0.0 2.0 9.0 3.0; 18.0 17.0 15.0 17.0 8.0 6.0 15.0 1.0 NaN 0.0 8.0 12.0 4.0 8.0 0.0 3.0 9.0 3.0; 15.0 12.0 14.0 23.0 8.0 3.0 17.0 1.0 9.0 NaN 7.0 15.0 6.0 6.0 NaN 2.0 11.0 2.0; 13.0 11.0 14.0 22.0 NaN 3.0 NaN 1.0 10.0 4.0 8.0 13.0 6.0 6.0 1.0 3.0 11.0 2.0; 16.0 11.0 15.0 23.0 10.0 4.0 18.0 1.0 10.0 3.0 7.0 12.0 6.0 NaN 1.0 NaN 9.0 3.0; 14.0 NaN 14.0 NaN 11.0 3.0 19.0 2.0 10.0 2.0 7.0 12.0 6.0 5.0 NaN 2.0 9.0 3.0; NaN NaN 15.0 24.0 10.0 NaN 18.0 1.0 11.0 1.0 7.0 NaN 5.0 NaN 2.0 3.0 11.0 2.0; 15.0 NaN 12.0 21.0 8.0 4.0 NaN 1.0 10.0 3.0 7.0 15.0 7.0 6.0 1.0 3.0 10.0 3.0; 15.0 11.0 NaN 22.0 NaN 3.0 19.0 1.0 8.0 3.0 4.0 14.0 6.0 5.0 1.0 2.0 10.0 NaN]\n" ] } ], "source": [ "X_corrupt = convert(Matrix{Float64}, X)# convert to floating point matrix so we can use NaN to indicate missing values\n", "indices = findall(rand(Float64,size(X)) .< 0.2)\n", "X_corrupt[indices] .= NaN\n", "println(X_corrupt)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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/jjXr19HUFAQbty4gW+//RZ5eXnIy8sDADg6OsLY2FjP0dOTiIkMERFVWnn9cRITE7Fnzx4A0NxnpsSpU6fg6emph4jpScc+MkRERKR37CNDRERETx0mMkRERGSwmMgQERGRwWIiQ0RERAaLiQwREREZLCYyREREZLCYyBAREZHBYiJDREREBouJDBERERksJjJERERksJjIEBERkcGq0UQmOTkZYWFhcHV1hUKhwMaNG8utn5iYCIVCUWo6cuRITYZJREREBqpGn35dUFCAVq1a4c0338Qrr7xS6eWOHj2q9cAoR0fHmgiPiIiIDFyNJjIhISEICQl56OWcnJxQp06dGoiIiIiIniSPZR+Z1q1bo169enj++efx+++/l1u3sLAQeXl5WhMRERE9HR6rRKZevXpYunQp1q9fjw0bNqBp06Z4/vnnkZycXOYy0dHRUKlUmsnd3b0WIyYiIiJ9UoiI1MqGFArExcWhd+/eD7VcWFgYFAoFNm/erHN+YWEhCgsLNa/z8vLg7u6O3NxcrX42RERE9PjKy8uDSqV66Ov3Y9Uio0vHjh1x/PjxMucrlUrY2tpqTURERPR0eOwTmfT0dNSrV0/fYRAREdFjqEZHLeXn5+PEiROa16dOnUJGRgbs7OzQoEEDfPDBBzh79iy+/vprAMD8+fPh6emJ5s2b4/bt2/j222+xfv16rF+/vibDJCIiIgNVo4lMWloaAgMDNa+joqIAAJGRkVi5ciXUajWys7M182/fvo0JEybg7NmzsLCwQPPmzfHTTz+hV69eNRkmERERGaha6+xbW6raWYiIiIj054nt7EtERERUFiYyREREZLCYyBAREZHBYiJDREREBouJDBERERksJjJERERksJjIEBERkcFiIkNEREQGi4kMERERGSwmMkREBuzs2bN4/fXXYW9vD0tLSzzzzDPYu3evvsMiqjU1+qwlIiKqOVevXkXnzp0RGBiIbdu2wcnJCSdPnkSdOnX0HRpRrWEiQ0RkoObOnQt3d3esWLFCU+bp6am/gIj0gD8tEREZqM2bN6Ndu3Z47bXX4OTkhNatW+PLL7/Ud1hEtYqJDBGRgfrrr78QExODJk2a4Oeff8aIESMwZswYfP311/oOjajWKERE9B1EdarqY8CJiAyNmZkZ2rVrh127dmnKxowZg9TUVOzevVuPkRE9vKpev9kiQ0RkoOrVqwdfX1+tMh8fH2RnZ+spIqLax0SGiMhAde7cGUePHtUqO3bsGDw8PPQUEVHtYyJDRGSgxo8fj5SUFPznP//BiRMnsHr1aixduhSjRo3Sd2hEtYaJDBGRgWrfvj3i4uKwZs0atGjRAjNnzsT8+fMxcOBAfYdGVGvY2ZeIiIj0jp19iYiI6KnDRIaIiIgMFhMZIiIq0/Tp06FQKLQmFxcXfYdFpMFEhoiIytW8eXOo1WrNlJmZqe+QKhQTEwM/Pz/Y2trC1tYW/v7+2LZtGwDg9OnTpZKzkun777/Xc+T0sPjQSCIiKpeJiYnBtcK4ublhzpw58PLyAgCsWrUK4eHhSE9PR7NmzaBWq7XqL126FB999BFCQkL0ES49AiYyRERUruPHj8PV1RVKpRIdOnTAf/7zHzRq1EjfYZUrLCxM6/Xs2bMRExODlJQUNG/evFRiFhcXh379+sHa2ro2w6RqwJ+WiIioTB06dMDXX3+Nn3/+GV9++SVycnLQqVMnXL58Wd+hVVpxcTFiY2NRUFAAf3//UvP37t2LjIwMDBkyRA/R0aNiiwwREZXp/p9aWrZsCX9/fzRu3BirVq1CVFSUHiOrWGZmJvz9/XHr1i1YW1sjLi6u1LOpAGDZsmXw8fFBp06d9BAlPSq2yBARUaVZWVmhZcuWOH78uL5DqVDTpk2RkZGBlJQUvP3224iMjMThw4e16ty8eROrV69ma4wBYyJDRESVVlhYiKysLNSrV0/foVTIzMwMXl5eaNeuHaKjo9GqVSssWLBAq84PP/yAGzduYNCgQXqKkh4VExkiIirThAkTkJSUhFOnTmHPnj149dVXkZeXh8jISH2H9tBEBIWFhVply5Ytw0svvQRHR0c9RUWPin1kiIioTP/88w8GDBiAS5cuwdHRER07dkRKSgo8PDz0HVq5Jk2ahJCQELi7u+P69euIjY1FYmIi4uPjNXVOnDiB5ORkbN26VY+R0qNiIkNERGWKjY3VdwhVcv78eURERECtVkOlUsHPzw/x8fHo0aOHps7y5ctRv359BAUF6TFSelR8+jURERHpHZ9+TURERE8dJjJERERksJjIEBERkcFiIkNEREQGi4kMERERGSwmMkRERGSwmMgQERGRwarRRCY5ORlhYWFwdXWFQqHAxo0bK1wmKSkJbdu2hbm5ORo1aoTFixfXZIhERERkwGo0kSkoKECrVq2waNGiStU/deoUevXqha5duyI9PR2TJk3CmDFjsH79+poMk4iIiAxUjT6iICQkBCEhIZWuv3jxYjRo0ADz588HAPj4+CAtLQ3z5s3DK6+8onOZwsJCrYeA5eXlPVrQREREZDAeqz4yu3fvLvXMi+DgYKSlpeHOnTs6l4mOjoZKpdJM7u7utREqERERPQYeq0QmJycHzs7OWmXOzs4oKirCpUuXdC7zwQcfIDc3VzOdOXOmNkIlIiKix8Bj9/RrhUKh9brkmZYPlpdQKpVQKpU1HhcRERE9fh6rFhkXFxfk5ORolV24cAEmJiawt7fXU1RERET0uHqsEhl/f38kJCRolf3yyy9o164dTE1N9RQVERERPa5qNJHJz89HRkYGMjIyANwbXp2RkYHs7GwA9/q3DBo0SFN/xIgR+PvvvxEVFYWsrCwsX74cy5Ytw4QJE2oyTCIiIjJQNdpHJi0tDYGBgZrXUVFRAIDIyEisXLkSarVak9QAQMOGDbF161aMHz8en3/+OVxdXbFw4cIyh14TERHR000hJb1pnxB5eXlQqVTIzc2Fra2tvsMhIiKiSqjq9fux6iNDRERE9DCYyBAREZHBYiJDREREBouJDBERERksJjJERERksJjIEBERkcFiIkNEREQGi4kMERERGSwmMkRERGSwmMgQERGRwWIiQ0RERAaLiQwREREZLCYyREREZLCYyBAREZHBYiJDREREBouJDBERERksJjJERERksJjIEBERkcFiIkNEREQGi4kMERERGSwmMkRERGSwmMgQERGRwWIiQ0RERAaLiQwREREZLCYyREREZLCYyBAREZHBYiJDREREBouJDBERERksJjJERERksJjIEBERkcFiIkNEREQGi4kMERERGSwmMkRERGSwmMgQERGRwWIiQ0RERAaLiQwREREZLCYyREREZLCYyBAREZHBYiJDREREBouJDBERERmsWklkvvjiCzRs2BDm5uZo27YtduzYUWbdlStXQqFQlJpu3bpVG6ESERGRAanxRGbt2rUYN24c/v3vfyM9PR1du3ZFSEgIsrOzy1zG1tYWarVaazI3N6/pUImIiMjA1Hgi88knn2DIkCF466234OPjg/nz58Pd3R0xMTFlLqNQKODi4qI1ERERET2oRhOZ27dvY+/evQgKCtIqDwoKwq5d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haSkJC5jQHpV1+9vjsgQERkxlUoFALC3twdQ9ciDpaUlzMzMMHz4cKxYsQLz5s3D5MmT4eHhge3bt7OIIaPFERkiIiMlhMDQoUNRUFCAw4cPV9rn7t278PHxgUKhwNy5cxs4QqLa44gMEdErpqqFI8sVFhZi0KBB6NChA7766qsGjo6oYbCQISIyQuULRx46dKjShSOLiooQFBSEJk2aIC4uDubm5nqIkkj3OP2aiMiI1GbhyMLCQsjlclhYWGDXrl2v9H2UyPRxRIaIyIjUtHBkUVER5HI5iouLsX79ehQWFqKwsBAA4OjoyDWXyOTwYl8iIiMikUgqbY+NjcXYsWORlJSkMWvpednZ2WjdurUOoyOqu7p+f/PUEhGRERFCVLqNHTsWABAYGFhlHxYxVJ9qWmUaAMaPH482bdrA2toajo6OGDp0KC5evFivcbCQISIiIq2VrzKdkpKChIQElJaWQi6X48GDB+o+vr6+iI2NxYULF7Bv3z4IISCXy/H06dN6i4OnloiIiOilvbjKdGXOnDmDzp074/Lly2jTpo3GPp5aIiIiIr15cZXpFz148ACxsbFwd3dHy5Yt6+15WcgQERHRSxFCYOrUqejRowe8vLw09i1btgxNmjRBkyZNEB8fj4SEBFhYWNTbc7OQISIiopdSvsr0pk2bKuwLDw+HUqlEcnIy2rVrh9DQUDx69KjenpvryBAREVGd1bTKtFQqhVQqRbt27eDn54fXXnsNcXFxeP/99+vl+VnIEBERkdaEEJg0aRLi4uKQlJRU6SrTVR33+PHjeouDhQwRERFpraZVpq9evYotW7ZALpfD0dERN2/exPz582FtbY2BAwfWWxy8RoaIiIi0tnz5cqhUKgQGBkImk6m3LVu2AACsrKxw+PBhDBw4EG3btkVoaChsbW1x9OhRODk51VscHJEhIiIirdW0DJ2rqyv27t2r8zg4IkNERERGi4UMERERGS0WMkRERGS0WMgQERGR0WIhQ0REREaLhQwREREZLRYyREREZLRYyBAREZHRYiFDRERERouFDBERERktFjJERERktFjIEBERkdFiIUNERERGi4UMERERGS0WMkREOnDo0CGEhITA1dUVEokEP//8s8b+sWPHQiKRaGx+fn56ipbIeOm0kPnmm28QEBAAGxsbNGvWrFbHCCEQHR0NV1dXWFtbIzAw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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(θ, Z) = pPCA(convert(Matrix,X_corrupt'), 2) # Perform pPCA on the corrupted data set\n", "plot(Z[1,:], Z[2,:], \"w\")\n", "for n=1:size(Z,2)\n", " PyPlot.text(Z[1,n], Z[2,n], string(n), fontsize=10) # put a label on the position of the data point\n", "end\n", "title(\"Projection of CORRUPTED Tobamovirus data set on two dimensions\", fontsize=10);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "As you can see, pPCA is quite robust in the face of missing data." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "open(\"../../styles/aipstyle.html\") do f\n", " display(\"text/html\", read(f, String))\n", "end" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Julia 1.1.0", "language": "julia", "name": "julia-1.1" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.1.0" } }, "nbformat": 4, "nbformat_minor": 1 }