{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# CS 236756 - Technion - Intro to Machine Learning\n", "---\n", "#### Tal Daniel\n", "\n", "## Tutorial 10 - Expectation Maximization\n", "---" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Agenda\n", "---\n", "* [Demonstrations](#-Demonstrations)\n", " * [K-Means](#--K-Means)\n", " * [Gaussian Mixture Models (GMM)](#-Gaussian-Mixture-Models-(GMMs))\n", "* [Expectation-Maximization](#-Expectation-Maximization-(EM))\n", " * [Formalization](#-Formalization)\n", "* [Gaussian Mixture Models (GMM)](#-Gaussian-Mixture-Models-(GMMs)-as-EM)\n", "* [Bernoulli Mixture Model (BMM)](#-Bernoulli-Mixture-Models-(BMMs)-as-EM)\n", "* [K-Means as \"Hard GMM\"](#-Relation-to-K-Means:-K-Means-as-\"Hard-GMM\")\n", "* [Recommended Videos](#-Recommended-Videos)\n", "* [Credits](#-Credits)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# imports for the tutorial\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "%matplotlib notebook" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Demonstrations\n", "---\n", "* Definitions:\n", " * **Hard Clustering** - clusters do not overlap, an element either belongs to a cluster or does not.\n", " * **Soft Clustering** - clusters may overlap. Strength of association between clusters and instances (confidence level)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### K-Means\n", "---\n", "* K-means clustering is one of the simplest and most popular unsupervised machine learning algorithms.\n", " * Typically, unsupervised algorithms make inferences from datasets using only input vectors without referring to known, or labeled, outcomes.\n", "\n", "\n", "* The objective of K-means: group similar data points together and discover underlying patterns. To achieve this objective, K-means looks for a fixed number (k) of clusters in a dataset.\n", " * This is also called **hard clustering** as the association of a data point to a cluster is definitive, that is, it belongs to one cluster only and cannot be included in other cluster.\n", " \n", "* A cluster refers to a collection of data points aggregated together because of certain similarities." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Illustration: \n", " * *E* and *M* stand for the **E-step** and **M-step**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Animation: " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* **Algorithm**: Starts with a first group of randomly selected centroids, which are used as the starting points for every cluster, and then performs iterative (repetitive) calculations to optimize the positions of the centroids. It halts creating and optimizing clusters when either:\n", " * The centroids have stabilized — there is no change in their values because the clustering has been successful.\n", " * The defined number of iterations has been achieved.\n", "\n", "Explanations and example from Understanding K-Means Clustering in Machine Learning - towardsdatascience.com" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# k-means example\n", "from sklearn.cluster import KMeans\n", "def generate_random_data():\n", " # generate random data\n", " X = -2 * np.random.rand(100,2)\n", " X[50:100, :] = 1 + 2 * np.random.rand(50,2)\n", " return X\n", "\n", "def plot_data(X):\n", " fig = plt.figure(figsize=(8,8))\n", " ax = fig.add_subplot(1,1,1)\n", " ax.scatter(X[ : , 0], X[ :, 1], s = 50, c = 'b')\n", " ax.grid()\n", " ax.set_xlabel(\"x\")\n", " ax.set_ylabel(\"y\")\n", " ax.set_title(\"some random data\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "X = generate_random_data()\n", "plot_data(X)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "def run_plot_kmeans(X):\n", " k_mean = KMeans(n_clusters=2)\n", " k_mean.fit(X)\n", " print(k_mean)\n", " # plot the centroids\n", " fig = plt.figure(figsize=(8,8))\n", " ax = fig.add_subplot(1,1,1)\n", " ax.scatter(X[ : , 0], X[ :, 1], s = 50, c = 'b', label=\"data\")\n", " ax.scatter(k_mean.cluster_centers_[0][0], k_mean.cluster_centers_[0][1], s=200, c='g', marker='s', label=\"center 1\")\n", " ax.scatter(k_mean.cluster_centers_[1][0], k_mean.cluster_centers_[1][1], s=200, c='r', marker='s', label=\"center 2\")\n", " ax.grid()\n", " ax.legend()\n", " ax.set_xlabel(\"x\")\n", " ax.set_ylabel(\"y\")\n", " ax.set_title(\"some random data\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n", " n_clusters=2, n_init=10, n_jobs=None, precompute_distances='auto',\n", " random_state=None, tol=0.0001, verbose=0)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "run_plot_kmeans(X)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Gaussian Mixture Models (GMMs)\n", "---\n", "* A Gaussian mixture model is a probabilistic model that assumes all the data points are generated from a mixture of a finite number of Gaussian distributions with unknown parameters. \n", " * That is, we consider a family of models, $p_{\\theta}(x)$, which is a weighted sum of $k$ Gaussian functions, where each Gaussian can have different mean and co-variance matrix.\n", "* One can think of mixture models as generalizing k-means clustering to incorporate information about the co-variance structure of the data as well as the centers of the latent Gaussians." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* The parameters of the model are the mean, co-variance and weight of each Gaussian, which are unknown and will be learned by the EM algorithm.\n", " * The parameters: $\\theta = \\{\\alpha_l, \\mu_l, \\Sigma_l \\}_{l=1}^k$ ($\\alpha$ is the weight vector).\n", " * In other words- \"with probability $\\alpha_l$ draw the sample from $l^{th}$ Gaussian\".\n", "* **Goal**: *Soft clustering* the data under the assumption that it is generated by a mixture of Gaussians.\n", " * The optimization method is called Expectation Maximization (EM) and will be used to achieve this goal." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Illustration: " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Animation: \n", "* Example: the following example is taken from The Python Data Science Handbook" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# Generate some data\n", "from sklearn.datasets.samples_generator import make_blobs\n", "from sklearn.mixture import GaussianMixture\n", "def generate_blobs():\n", " X, y_true = make_blobs(n_samples=400, centers=4,\n", " cluster_std=0.60, random_state=0)\n", " X = X[:, ::-1] # flip axes for better plotting\n", " return X\n", "\n", "def plot_blobs(X):\n", " fig = plt.figure(figsize=(8,8))\n", " ax = fig.add_subplot(1,1,1)\n", " ax.scatter(X[:, 0], X[:, 1], s=40, cmap='viridis')\n", " ax.grid()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "X = generate_blobs()\n", "plot_blobs(X)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# some helper functions for plotting\n", "from matplotlib.patches import Ellipse\n", "\n", "def draw_ellipse(position, covariance, ax=None, **kwargs):\n", " \"\"\"Draw an ellipse with a given position and covariance\"\"\"\n", " ax = ax or plt.gca()\n", " \n", " # Convert covariance to principal axes\n", " if covariance.shape == (2, 2):\n", " U, s, Vt = np.linalg.svd(covariance)\n", " angle = np.degrees(np.arctan2(U[1, 0], U[0, 0]))\n", " width, height = 2 * np.sqrt(s)\n", " else:\n", " angle = 0\n", " width, height = 2 * np.sqrt(covariance)\n", " \n", " # Draw the Ellipse\n", " for nsig in range(1, 4):\n", " ax.add_patch(Ellipse(position, nsig * width, nsig * height,\n", " angle, **kwargs))\n", " \n", "def plot_gmm(gmm, X, label=True, ax=None):\n", " ax = ax or plt.gca()\n", " labels = gmm.fit(X).predict(X)\n", " if label:\n", " ax.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis', zorder=2)\n", " else:\n", " ax.scatter(X[:, 0], X[:, 1], s=40, zorder=2)\n", " ax.axis('equal')\n", " \n", " w_factor = 0.2 / gmm.weights_.max()\n", " for pos, covar, w in zip(gmm.means_, gmm.covariances_, gmm.weights_):\n", " draw_ellipse(pos, covar, alpha=w * w_factor)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "def run_plot_gmm(X):\n", " gmm = GaussianMixture(n_components=4, random_state=42)\n", " fig = plt.figure(figsize=(8,6))\n", " ax = fig.add_subplot(1,1,1)\n", " ax.grid()\n", " plot_gmm(gmm, X, ax=ax)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "run_plot_gmm(X)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Expectation Maximization (EM)\n", "---\n", "* Probabilistic method for **soft clustering**.\n", " * The \"soft\" version of K-means\n", "* Assumes a probabilistic model of clusters that allows computing $Pr(c_j|x)$ for each cluster $c_j$ for a given example $x$.\n", " * If we had known for each data instance from what distribution it came from, we could have used a parametric estimation.\n", "* We introduce *unobservable (latent)* variables which indicate source distribution.\n", "* We run an iterative process:\n", " * Estimate latent variables from the data and the *current* estimation of distribution parameters.\n", " * Use current values of latent variables to refine parameter estimation." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Formalization\n", "---\n", "* Log likelihood for a mixture model (under the *i.i.d* assumption): $$ \\mathcal{L}(X|\\Theta) = \\log \\prod_{i=1}^n Pr(x_i|\\Theta) = \\sum_{i=1}^n\\log \\sum_{j=1}^k Pr(x_i|C_j;\\Theta)Pr(C_j;\\Theta)$$\n", "* Assume *latent* variables $z$, which when known make the optimization simpler:\n", " * **Complete** likelihood, $ \\mathcal{L}_c (X,Z|\\Theta) $, in terms of $x$ and $z$\n", " * **Incomplete** likelihood, $\\mathcal{L}(X|\\Theta)$, in terms of $x$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* The **incomplete** likelihood: $$\\mathcal{L}(X|\\Theta) = \\log \\left(\\prod_{i=1}^n Pr(x_i \\mid \\theta)\\right) = \\sum_{i=1}^n \\log \\left(\\sum_{j=1}^K Pr(x_i \\mid z_i=j, \\theta) Pr(z_i=j \\mid \\theta) \\right) $$\n", " * Calculating the log-likelihood of the observed data is **hard**!\n", " * This is because of the sum inside of the logarithm - the derivative w.r.t. to the parameters and equivalenting to 0, creating an equation with **no closed-form solution**.\n", "* The **complete** likelihood: $$ \\mathcal{L}_c (X,Z|\\Theta) = \\log\\left(\\prod_{i=1}^n Pr(x_i, z_i \\mid \\theta) \\right) = \\sum_{i=1}^n \\log(Pr(x_i \\mid z_i=j, \\theta) Pr(z_i=j \\mid \\theta)) $$\n", " * Much easier to calculate! But...\n", "* However, $z$ is *latent*, so we **can't compute** $ \\mathcal{L}_c (X,Z|\\Theta) $\n", " * But we can compute its **conditional expected value**, given $X$ and old $\\theta^t$: $$ Q(\\Theta;\\Theta^t) = \\mathbb{E}_Z [\\mathcal{L}_c(X,Z|\\Theta)|X,\\Theta^t)] = \\sum_Z Pr(Z|X,\\Theta^t) \\log Pr(X,Z;\\Theta) $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* From a computation viewpoint:\n", " * **The E-Step**: computes the **posterior probability** $Pr(Z|X,\\Theta^t)$ using the *current* estimates \n", " * $Pr(z_i=j|x_i, \\Theta)$ - probability point $i$ belongs to model $j$\n", " * **The M-Step**: updates the **parameter estimates** to get $\\Theta^{t+1}$ by maximizing $Q(\\Theta; \\Theta^t)$\n", " \n", "* The EM Algorithm requires an **initial guess** $\\Theta^0$ for the parameters.\n", "* Each iteration of E-step and M-step is **guaranteed to increase the log-likelihood** of the observed data, $\\log Pr(X|\\Theta)$ until a *local* maximum is reached." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Steps\n", "---\n", "* Iterate the two steps:\n", " * **E-step**: Estimate $Z$ given $X$ and current $\\Theta$\n", " * $Q(\\Theta|\\Theta^t) = \\mathbb{E}[\\mathcal{L}(X,Z|\\Theta)|X, \\Theta^t]$\n", " * **M-step**: Find new $\\Theta$ given $Z,X$ and old $\\Theta$\n", " * $\\Theta^{t+1} = argmax_{\\Theta} Q(\\Theta;\\Theta^t)$\n", "* An increase in $Q$ increases the incomplete likelihood $$ \\mathcal{L}(X|\\Theta^t) \\geq Q(\\Theta|\\Theta^t) $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "#### Proof: \n", "---\n", "* Denote the prior of $z$ for the $i^{th}$ sample: $q_i (z)$\n", "$$ \\mathcal{L}(X|\\theta) = \\sum_{i=1}^n \\log \\big[ \\sum_{z_l} p(x_i, z_l|\\theta) \\big] = \\sum_{i=1}^n\\log\\big[ \\sum_{z_l} q_i(z_l) \\frac{p(x_i, z_l|\\theta)}{q_i(z_l)} \\big] = \\sum_{i=1}^n\\log\\big[ \\mathbb{E}_{z \\sim q_i}( \\frac{p(x_i, z|\\theta)}{q_i(z)}) \\big]$$\n", "* Since $\\log$ is **concave** we use **Jensen's inequality** to derive the following lower bound: $$ \\mathcal{L}(X|\\theta) = \\sum_{i=1}^n\\log\\big[ \\mathbb{E}_{z \\sim q_i}( \\frac{p(x_i, z|\\theta)}{q_i(z)}) \\big] \\geq \\sum_{i=1}^n \\mathbb{E}_{z \\sim q_i}\\log\\big[\\frac{p(x_i, z|\\theta)}{q_i(z)}\\big] = \\mathcal{F}(\\theta, \\{q_i(\\cdot)\\}_{i=1}^n) $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "* This is **true for every choice of $q$**, and in particular for $q_i(z) = p(z|x_i, \\theta)$:\n", " $$ \\mathcal{L}(X|\\theta) \\geq \\sum_{i=1}^n \\mathbb{E}_{z \\sim p(z|x_i, \\theta)}\\log\\big[\\frac{p(x_i, z|\\theta)}{p(z|x_i, \\theta)}\\big] $$\n", " * Notice that this equals: $ \\mathcal{F}(\\theta, \\{q_i(\\cdot)\\}_{i=1}^n) = \\sum_{i=1}^n \\mathbb{E}_{z \\sim p(z|x_i, \\theta)}\\log(p(x_i|\\theta)) = \\sum_{i=1}^n \\log p(x_i|\\theta) = \\mathcal{L}(X|\\theta)$ (the first transition is due to the expectation on $z$, not on $x$), which means the **lower bound becomes equality**. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ " * Let's continue:\n", " $$ \\mathcal{L}(X|\\theta) \\geq \\sum_{i=1}^n \\mathbb{E}_{z \\sim q_i}\\log\\big[\\frac{p(x_i, z|\\theta)}{q_i(z)}\\big] =\\sum_{i=1}^n \\mathbb{E}_{z \\sim q_i}\\big[ \\log p(x_i, z | \\theta) - \\log q_i(z) \\big] $$ $$ = \\sum_{i=1}^n\\big[ \\mathbb{E}_{z \\sim q_i}\\log p(x_i, z | \\theta) - \\mathbb{E}_{z \\sim q_i}\\log q_i(z) \\big] = \\sum_{i=1}^n\\big[ \\mathbb{E}_{z \\sim q_i}\\log p(x_i, z | \\theta) +\\mathcal{H}(q_i(z)) \\big] \\geq Q(\\Theta;\\Theta^t)$$\n", " \n", " * $\\mathcal{H}(q_i(z))$ - the **entropy** of $q_i(z)$, which **does not depend on $\\theta$**. Thus, taking the $argmax_{\\theta}$: $$ argmax_{\\theta} \\sum_{i=1}^n\\big[ \\mathbb{E}_{z \\sim q_i}\\log p(x_i, z | \\theta) +\\mathcal{H}(q_i(z)) \\big] = argmax_{\\theta} Q(\\Theta;\\Theta^t) $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### E Step - EM Receipe\n", "---\n", "Estimate $Z$ given $X$ and current $\\Theta$ (the **posterior**):\n", "\n", "$$Pr(z_i=j|x_i, \\Theta)= r_{ij} = \\frac{Pr(x_i,z_i=j|\\Theta)}{Pr(x_i|\\Theta)} = \\frac{Pr(x_i,z_i=j|\\Theta)}{\\sum_{j'}Pr(x_i, z_i=j'|\\Theta)} = \\frac{Pr(x_i|z_i=j, \\Theta) \\cdot Pr(z_i=j|\\Theta)}{\\sum_{j'}Pr(x_i|z_i=j', \\Theta) \\cdot Pr(z_i=j'|\\Theta)} $$\n", "\n", "* Note, here: $\\Theta = \\Theta^t$ (we use the current estimate of $\\Theta$, and treat it as constant and not as a parameter).\n", "* Substitute the probabilities with the desired distribution.\n", "* That means: the probability for sample $x_i$ to be associated with cluster/source $j$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### M Step (Derive Q) - EM Receipe\n", "---\n", "$$Q(\\Theta|\\Theta^t) = \\mathbb{E}[\\mathcal{L}(X,Z|\\Theta)|X, \\Theta^t] = \\sum_Z Pr(Z|X,\\Theta^t) \\log Pr(X,Z;\\Theta) = \\sum_i \\sum_{j=1}^k Pr(z_i=j|x_i, \\Theta^t) \\log Pr(x_i, z_i=j, \\Theta) =$$ $$ \\sum_i \\sum_{j=1}^k r_{ij}[\\log Pr(z_i=j|\\Theta) + \\log Pr(x_i|z_i = j, \\Theta)]$$\n", "\n", "* $r_{ij} = Pr(z_i=j|x_i, \\Theta)$ (from E step)\n", "* Substitute $Pr(x_i|z_i=j, \\Theta)$ with the desired probability\n", "* **Find MLE** (differentiate and compare to 0)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Gaussian Mixture Models (GMMs) as EM\n", "---\n", "* One Gaussian: $$ \\mathcal{N}(x| \\mu, \\Sigma) = Pr(x| \\mu_j, \\Sigma_j) = \\frac{1}{(2\\pi)^{\\frac{d}{2}} |\\Sigma_j|^{\\frac{1}{2}}} e^{-\\frac{1}{2} (x-\\mu_j)^T \\Sigma_j^{-1} (x-\\mu_j)} $$\n", "* Gaussian **Mixture**: $$ Pr(x) = \\sum_{j=1}^k \\alpha_j \\mathcal{N} (x|\\mu_j, \\Sigma_j) $$\n", " * $\\sum_{j=1}^k \\alpha_j = 1$\n", " * The parameters of the model are: $\\alpha_j, \\mu_j, \\Sigma_j, \\forall j \\in \\{1,...,k\\}$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* The **log-likelihood** of a GMM: $$ \\mathcal{L}(X|\\Theta) = \\log \\prod_i Pr(x_i|\\Theta) = \\sum_i \\log \\sum_{j=1}^k \\alpha_j \\mathcal{N} (x|\\mu_j, \\Sigma_j) $$\n", "* **No closed form solution and not convex!**\n", "* We introduce a **latent random variable** $z$\n", " * $z \\in \\{0, 1\\}^k$ - a one-hot random variable indicating the source Gaussian the sample belongs to\n", " * $Pr(z_k) = \\alpha_k$ - the probability of that source\n", " * Reminder: $\\sum_{j=1}^k \\alpha_k = 1$\n", "* The marginal probability: $$ Pr(x) = \\sum_z p(z)p(x|z) = \\sum_{j=1}^k \\alpha_j \\mathcal{N} (x|\\mu_j, \\Sigma_j) $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### GMM - E-Step \n", "* The E-step computes the **posterior** probability of the missing data $$ Pr(z_i = j| x_i, \\Theta) = \\frac{Pr(x_i,z_i=j|\\Theta)}{\\sum_{j'} Pr(x_i,z_i=j'|\n", "\\Theta)} = \\frac{\\alpha_j Pr(x_i|\\mu_j, \\Sigma_j)}{\\sum_{j'} \\alpha_{j'}Pr(x_i|\\mu_{j'}, \\Sigma_{j'})} = \\frac{\\alpha_j |\\Sigma_j|^{-\\frac{1}{2}} e^{-\\frac{1}{2}(x_i-\\mu_j)^T\\Sigma_j^{-1}(x_i-\\mu_j)}}{\\sum_{j'} \\alpha_{j'} |\\Sigma_j'|^{-\\frac{1}{2}} e^{-\\frac{1}{2}(x_i-\\mu_{j'})^T\\Sigma_{j'}^{-1}(x_i-\\mu_{j'})}} $$\n", "* Denote: $r_{ij} = Pr(z_i=j|x_i, \\Theta)$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### GMM - Calculate $ Q(\\Theta;\\Theta^t)$ \n", "$$Q(\\Theta|\\Theta^t) = \\mathbb{E}[\\mathcal{L}(X,Z|\\Theta)|X, \\Theta^t] = \\sum_Z Pr(Z|X,\\Theta^t) \\log Pr(X,Z;\\Theta) = \\sum_i \\sum_{j=1}^k Pr(z_i=j|x_i, \\Theta^t) \\log Pr(x_i, z_i=j, \\Theta) =$$ $$ \\sum_i \\sum_{j=1}^k r_{ij}[\\log Pr(z_i=j|\\Theta) + \\log Pr(x_i|z_i = j, \\Theta)] = $$ $$ \\sum_i \\sum_{j=1}^k r_{ij}[ \\log \\alpha_j + \\log Pr(x_i|\\mu_j, \\Sigma_j)] = $$ $$ \\sum_i \\sum_{j=1}^k r_{ij} \\log \\alpha_j -\\frac{1}{2} \\sum_{j=1}^k \\log |\\Sigma_j| \\sum_i r_{i,j} -\\frac{1}{2} \\sum_i \\sum_{j=1}^k r_{ij}(x_i-\\mu_j)^T \\Sigma_j^{-1} (x_i-\\mu_j) + Const $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### GMM - M-Step \n", "* To maximize $Q(\\Theta;\\Theta^t)$ with respect to $\\mu_j$, we set the gradient to zero.\n", "* Reminder: $ \\frac{\\partial}{ \\partial s}(x-As)^TW(x-As) = -2A^TW(x-As)$\n", "* Derive: $$ \\frac{\\partial}{\\partial \\mu_j} Q(\\Theta; \\Theta^t) = \\sum_{i=1}^n r_{ij} \\Sigma_j^{-1} (x_i-\\mu_j) = 0 \\rightarrow \\hat{\\mu}_j = \\frac{\\sum_{i=1}^n r_{ij}x_i}{\\sum_{i=1}^n r_{ij}}$$\n", "* Similarly: $$ \\hat{\\Sigma}_j = \\frac{\\sum_{i=1}^n r_{ij}(x_i-\\mu_j)(x_i-\\mu_j)^T}{\\sum_{i=1}^n r_{ij}} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* To maximize $Q(\\Theta;\\Theta^t)$ with respect to $\\alpha_j$:\n", " * Use **Lagrange** multiplier:\n", " * $\\max Q(\\Theta;\\Theta^t) $ s.t. $\\sum_j \\alpha_j = 1 \\iff$\n", " * $\\mathcal{L} = Q(\\Theta;\\Theta^t) +\\lambda(1 - \\sum_j \\alpha_j) $\n", " * $\\frac{\\partial \\mathcal{L}}{\\partial \\alpha_j} = \\sum_i \\frac{r_{ij}}{\\alpha_j} - \\lambda = 0$\n", " * Find an expression for $\\lambda$ by **summing all partial derivatives** of $\\alpha_j$: $$ \\sum_i r_{ij}^{(t)} = \\lambda \\alpha_j \\rightarrow \\sum_j \\sum_i r_{ij}^{(t)} = \\lambda \\sum_j \\alpha_j \\rightarrow \\lambda = n $$\n", " * $\\sum_j \\sum_i r_{ij}^{(t)} = \\sum_j \\sum_i Pr(z_i=j|x_i, \\Theta^t)= \\sum_i \\frac{\\sum_j Pr(x_i,z_i=j|\\Theta)}{\\sum_{j'} Pr(x_i,z_i=j'| \\Theta)} = \\sum_{i=1}^n 1 = n$\n", " * Substituting $\\lambda$ back in the *Lagrangian* derivative: $$ \\frac{\\partial \\mathcal{L}}{\\partial \\alpha_j} = \\sum_i \\frac{r_{ij}}{\\alpha_j} - \\lambda = 0 \\rightarrow \\hat{\\alpha}_j = \\frac{\\sum_{i=1}^n r_{ij}}{n} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* To sum up: $$ \\hat{\\mu}_j = \\frac{\\sum_{i=1}^n r_{ij}x_i}{\\sum_{i=1}^n r_{ij}} $$
$$ \\hat{\\Sigma}_j = \\frac{\\sum_{i=1}^n r_{ij}(x_i-\\mu_j)(x_i-\\mu_j)^T}{\\sum_{i=1}^n r_{ij}} $$
$$ \\hat{\\alpha}_j = \\frac{\\sum_{i=1}^n r_{ij}}{n} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "### Bernoulli Mixture Models (BMMs) as EM\n", "---\n", "* We have $k$ coins such that:\n", " * The probability of observing *heads* with the $j^{th}$ coin is $p_j$.\n", " * We do not observe which coin was used.\n", " * We only observe $x_i \\in \\{0, 1\\} $, which records whether we see a *heads* or *tails*.\n", "* Let $z_i \\in \\{1,...,k \\}$ be the **missing information** of which coin was used on each flip (in other words, the *source* like in the GMM case).\n", " * The probability of using the $j^{th}$ coin is $Pr(z_i=j) = \\alpha_j$ (which is a *parameter*)\n", "* The complete data is given by $(X,Z)$\n", " * Using the **law of total probability**, the (marginal) probability of the observed data $X$: $$ Pr(X) = \\sum_j Pr(X|Z=j)Pr(Z=j) $$\n", " * Thus, the *likelihood* of the full data set (incomplete likelihood) is: $$ \\mathcal{L}(X|\\Theta)= \\prod_i \\sum_j Pr(x_i|z_i=j)Pr(z_i=j) = \\prod_i \\sum_j \\alpha_j p_j^{x_i} (1-p_j)^{1-x_i} $$\n", " * $\\Theta = (\\alpha, p)$\n", "\n", "#### BMM - E-Step \n", "* The E-step computes the **posterior** probability of the missing data $$ Pr(z_i = j| x_i, \\Theta) = \\frac{Pr(x_i,z_i=j|\\Theta)}{\\sum_{j'} Pr(x_i,z_i=j'|\n", "\\Theta)} = \\frac{\\alpha_j Pr(x_i|p_j)}{\\sum_{j'} \\alpha_{j'}Pr(x_i|p_{j'})} = \\frac{\\alpha_j p_j^{x_i}(1-p_j)^{1-x_i}}{\\sum_{j'} \\alpha_{j'}p_{j'}^{x_i} (1-p_{j'})^{1-x_i}} $$\n", "* Denote: $r_{ij} = Pr(z_i=j|x_i, \\Theta)$\n", "\n", "#### BMM - Calculate $ Q(\\Theta;\\Theta^t)$ \n", "$$Q(\\Theta|\\Theta^t) = \\mathbb{E}[\\mathcal{L}(X,Z|\\Theta)|X, \\Theta^t] = \\sum_Z Pr(Z|X,\\Theta^t) \\log Pr(X,Z;\\Theta) = \\sum_i \\sum_{j=1}^k Pr(z_i=j|x_i, \\Theta^t) \\log Pr(x_i, z_i=j, \\Theta) =$$ $$ \\sum_i \\sum_{j=1}^k r_{ij}[\\log Pr(z_i=j|\\Theta) + \\log Pr(x_i|z_i = j, \\Theta)] = $$ $$ \\sum_i \\sum_{j=1}^k r_{ij}[ \\log \\alpha_j + \\log Pr(x_i|p_j)] = $$ $$ \\sum_i \\sum_{j=1}^k r_{ij} \\log \\alpha_j +\\sum_i \\sum_{j=1}^k r_{ij} \\log \\big( p_j^{x_i} (1-p_j)^{1-x_i} \\big) = $$ $$ \\sum_i \\sum_{j=1}^k r_{ij} \\log \\alpha_j + \\sum_i \\sum_{j=1}^k r_{ij}x_i\\log(p_j) +r_{ij}(1-x_i)\\log(1-p_j)$$\n", "\n", "#### BMM - M-Step \n", "* To maximize $Q(\\Theta;\\Theta^t)$ with respect to $p_j$, we set the gradient to zero.\n", "* Derive: $$ \\frac{\\partial}{\\partial p_j} Q(\\Theta; \\Theta^t) = \\sum_{i=1}^n r_{ij} \\big( \\frac{x_i}{p_j} - \\frac{1-x_i}{1-p_j} \\big) = 0 \\rightarrow \\hat{p}_j = \\frac{\\sum_{i=1}^n r_{ij}x_i}{\\sum_{i=1}^n r_{ij}}$$\n", "* To maximize $Q(\\Theta;\\Theta^t)$ with respect to $\\alpha_j$:\n", " * Use **Lagrange** multiplier:\n", " * $\\max Q(\\Theta;\\Theta^t) $ s.t. $\\sum_j \\alpha_j = 1 \\iff$\n", " * $\\mathcal{L} = Q(\\Theta;\\Theta^t) +\\lambda(1 - \\sum_j \\alpha_j) $\n", " * $\\frac{\\partial \\mathcal{L}}{\\partial \\alpha_j} = \\sum_i \\frac{r_{ij}}{\\alpha_j} - \\lambda = 0$\n", " * Find an expression for $\\lambda$ by **summing all partial derivatives** of $\\alpha_j$: $$ \\sum_i r_{ij}^{(t)} = \\lambda \\alpha_j \\rightarrow \\sum_j \\sum_i r_{ij}^{(t)} = \\lambda \\sum_j \\alpha_j \\rightarrow \\lambda = n $$\n", " * $\\sum_j \\sum_i r_{ij}^{(t)} = \\sum_j \\sum_i Pr(z_i=j|x_i, \\Theta^t)= \\sum_i \\frac{\\sum_j Pr(x_i,z_i=j|\\Theta)}{\\sum_{j'} Pr(x_i,z_i=j'| \\Theta)} = \\sum_{i=1}^n 1 = n$\n", " * Substituting $\\lambda$ back in the *Lagrangian* derivative: $$ \\frac{\\partial \\mathcal{L}}{\\partial \\alpha_j} = \\sum_i \\frac{r_{ij}}{\\alpha_j} - \\lambda = 0 \\rightarrow \\hat{\\alpha}_j = \\frac{\\sum_{i=1}^n r_{ij}}{n} $$\n", "* To sum up:
$$ \\hat{p}_j = \\frac{\\sum_{i=1}^n r_{ij}x_i}{\\sum_{i=1}^n r_{ij}} $$
$$ \\hat{\\alpha}_j = \\frac{\\sum_{i=1}^n r_{ij}}{n} $$\n", "\n", "* If all $r_{ij} = \\{0,1\\}$, that is, deterministic, then:\n", " * The component labels, $z_i$, are **known**\n", " * The above update equations reduce to the standard formulas for *binomial distribution*." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Relation to K-Means: K-Means as \"Hard GMM\"\n", "---\n", "* Recall the E-Step for GMM: $$ Pr(z_i = j| x_i, \\Theta) = \\frac{Pr(x_i,z_i=j|\\Theta)}{\\sum_{j'} Pr(x_i,z_i=j'|\n", "\\Theta)} = \\frac{\\alpha_j Pr(x_i|\\mu_j, \\Sigma_j)}{\\sum_{j'} \\alpha_{j'}Pr(x_i|\\mu_{j'}, \\Sigma_{j'})} = \\frac{\\alpha_j e^{-\\frac{1}{2}(x_i-\\mu_j)^T\\Sigma_j^{-1}(x_i-\\mu_j)}}{\\sum_{j'} \\alpha_{j'} e^{-\\frac{1}{2}(x_i-\\mu_{j'})^T\\Sigma_{j'}^{-1}(x_i-\\mu_{j'})}} $$\n", "* Let's assume all the Gaussians have the same $\\Sigma = \\epsilon I$ : $$ Pr(z_i = j| x_i, \\Theta) = \\frac{Pr(x_i,z_i=j|\\Theta)}{\\sum_{j'} Pr(x_i,z_i=j'|\n", "\\Theta)} = \\frac{\\alpha_j e^{-\\frac{1}{2 \\epsilon}||(x_i-\\mu_j)||_2^2)}}{\\sum_{j'} \\alpha_{j'} e^{-\\frac{1}{2 \\epsilon}||(x_i-\\mu_{j'})||_2^2}} $$\n", "* At the limit $\\epsilon \\to 0$: $Pr(z_i=j|x_i, \\Theta) = 1$ for $j = argmin\\{ x_i - \\mu_j\\}$ and $Pr(z_i=j|x_i, \\Theta) = 0$ for all others." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Thus: $$ \\begin{cases}\n", " r_{ij} = 1 & \\quad \\text{if } j = argmin_j||x_i - \\mu_j||_2^2 \\\\\n", " r_{ij} = 0 & \\quad \\text{else }\n", " \\end{cases} $$\n", "* The GMM equations are now identical to the K-Means' eqautions: $$ \\hat{\\mu}_j = \\frac{\\sum_{i=1}^n r_{ij}x_i}{\\sum_{i=1}^n r_{ij}} $$
$$ \\hat{\\alpha}_j = \\frac{\\sum_{i=1}^n r_{ij}}{n} $$\n", " * The $\\alpha$s are not really required." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Recommended Videos\n", "---\n", "#### Warning!\n", "* These videos do not replace the lectures and tutorials.\n", "* Please use these to get a better understanding of the material, and not as an alternative to the written material.\n", "\n", "#### Video By Subject\n", "\n", "* EM Motivation:\n", " * Part 1 (7:53 min)\n", " * Part 2 (10:39 min)\n", " * Part 3 (3:05 min)\n", " * Part 4 (3:29 min)\n", " * Part 5 (10:53 min)\n", " \n", "* EM Lecture - K-Means + GMMs - **VERY RECOMMENDED** - Stanford - Machine Learning (12) - Andrew Ng\n", " * Andrew Ng is a *l-e-g-e-n-d-a-r-y* ML professor." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "## Credits\n", "---\n", "* Based on **Pattern Recognition and Machine Learning** by *Christopher Bishop* (chapter 9) and slides by *Shai Fine*\n", "* Icons from Icon8.com - https://icons8.com\n", "* Datasets from Kaggle - https://www.kaggle.com/" ] } ], "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.6.9" } }, "nbformat": 4, "nbformat_minor": 2 }