Skip to content

Instantly share code, notes, and snippets.

@keatonb
Created September 22, 2022 14:56
Show Gist options
  • Save keatonb/e18dfe66d29779e6eb95fcdd585cb2f8 to your computer and use it in GitHub Desktop.
Save keatonb/e18dfe66d29779e6eb95fcdd585cb2f8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "1c621bd0",
"metadata": {},
"source": [
"# Determining confidence regions for GMMs\n",
"\n",
"Code behind my blog post at https://keatonb.github.io/archivers/gmmconfidence"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "2e7aec09",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# This code from https://scikit-learn.org/stable/auto_examples/mixture/plot_gmm_pdf.html\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.colors import LogNorm\n",
"from sklearn import mixture\n",
"\n",
"n_samples = 300\n",
"\n",
"# generate random sample, two components\n",
"np.random.seed(0)\n",
"\n",
"# generate spherical data centered on (20, 20)\n",
"shifted_gaussian = np.random.randn(n_samples, 2) + np.array([20, 20])\n",
"\n",
"# generate zero centered stretched Gaussian data\n",
"C = np.array([[0.0, -0.7], [3.5, 0.7]])\n",
"stretched_gaussian = np.dot(np.random.randn(n_samples, 2), C)\n",
"\n",
"# concatenate the two datasets into the final training set\n",
"X_train = np.vstack([shifted_gaussian, stretched_gaussian])\n",
"\n",
"# fit a Gaussian Mixture Model with two components\n",
"clf = mixture.GaussianMixture(n_components=2, covariance_type=\"full\")\n",
"clf.fit(X_train)\n",
"\n",
"# display predicted scores by the model as a contour plot\n",
"# I MODIFIED HOW SAMPLING IS DONE HERE\n",
"stepsize = 0.1\n",
"x = np.arange(-20.0, 30.0, stepsize)\n",
"y = np.arange(-20.0, 40.0, stepsize)\n",
"X, Y = np.meshgrid(x, y)\n",
"XX = np.array([X.ravel(), Y.ravel()]).T\n",
"Z = -clf.score_samples(XX)\n",
"Z = Z.reshape(X.shape)\n",
"\n",
"CS = plt.contour(\n",
" X, Y, Z, norm=LogNorm(vmin=1.0, vmax=1000.0), levels=np.logspace(0, 3, 10)\n",
")\n",
"CB = plt.colorbar(CS, shrink=0.8, extend=\"both\")\n",
"plt.scatter(X_train[:, 0], X_train[:, 1], 0.8)\n",
"\n",
"plt.scatter(2,2,marker='X',c='0',lw=0,s=100,ec='none')\n",
"\n",
"plt.title(\"Negative log-likelihood predicted by a GMM\")\n",
"plt.axis(\"tight\")\n",
"plt.savefig('GMMcontours.png')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1ab37f27",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9999999991736748"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Numerically integrate over whole sampled region, should be 1\n",
"np.sum(np.exp(-Z))*stepsize**2"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "1561672c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Here I plot contours that pass through a specific point\n",
"\n",
"pt = [2,2]\n",
"\n",
"CS = plt.contour(\n",
" X, Y, Z, norm=LogNorm(vmin=1.0, vmax=1000.0), levels=-clf.score_samples([pt]),colors=['0']\n",
")\n",
"#CB = plt.colorbar(CS, shrink=0.8, extend=\"both\")\n",
"plt.scatter(X_train[:, 0], X_train[:, 1], 0.8)\n",
"\n",
"plt.scatter(pt[0],pt[1],marker='X',c='0',lw=0,s=100,ec='none',zorder=3)\n",
"\n",
"plt.title(f\"Contours passing through point {pt}\")\n",
"plt.axis(\"tight\")\n",
"plt.savefig('GMMcontour2.png')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "cab0752f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9744483228926085"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Numerically integrate over more probable areas\n",
"lnL = clf.score_samples([[2,2]])\n",
"np.sum(np.exp(-Z[-Z > lnL]))*stepsize**2"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1fa04f79",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# The above is only reliable if the contour at this level are closed.\n",
"# (We can see that they are above, but check.)\n",
"from skimage import measure\n",
"\n",
"# Find contours at a constant value of 0.8\n",
"contours = measure.find_contours(Z, -clf.score_samples([pt]))\n",
"\n",
"def pathclosed(contour):\n",
" # Is this contour closed?\n",
" return np.all(contour[0] == contour[-1])\n",
"\n",
"def allclosed(contours):\n",
" # Are all contours closed?\n",
" return np.all([pathclosed(contour) for contour in contours])\n",
"\n",
"allclosed(contours)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a7b60138",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# What if we want the lnL value (or contour) at a given p-value?\n",
"pvalue = 0.05\n",
"\n",
"# Do this by sorting lnL high to low and matching to cumulative sum,\n",
"# then interpolate to desired value.\n",
"\n",
"sortlnL = np.sort(-Z.flatten())[::-1]\n",
"cumsum = np.cumsum(np.exp(sortlnL)*stepsize**2)\n",
"\n",
"# Make interpolator\n",
"from scipy.interpolate import interp1d\n",
"lnLatpvalue = interp1d(1-cumsum,sortlnL)\n",
"\n",
"val = lnLatpvalue(pvalue) #95% of distribution with lnL > -6\n",
"\n",
"# Plot cumulative distribution\n",
"plt.plot(sortlnL,cumsum)\n",
"plt.axvline(val,c='0',ls='--')\n",
"plt.ylim(0)\n",
"plt.xlim(-2,-10)\n",
"plt.xlabel('ln L')\n",
"plt.ylabel('cumulative probabity')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "d1bfe7d1",
"metadata": {},
"source": [
"## Exploring conditions for sufficient exploration"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "9c87245e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# generate 2d gaussian data w/ stddev 1 \n",
"nsample = 10000\n",
"G = np.random.randn(n_samples, 2)\n",
"\n",
"gm = mixture.GaussianMixture()\n",
"gm.fit(G)\n",
"\n",
"x = np.arange(-10.0, 10.0,0.1)\n",
"y = np.arange(-10.0, 10.0,0.1)\n",
"X, Y = np.meshgrid(x, y)\n",
"XX = np.array([X.ravel(), Y.ravel()]).T\n",
"Z = -gm.score_samples(XX)\n",
"Z = Z.reshape(X.shape)\n",
"\n",
"\n",
"levels = np.logspace(0, 3, 10)\n",
"CS = plt.contour(\n",
" X, Y, Z, norm=LogNorm(vmin=1.0, vmax=1000.0), levels=levels\n",
")\n",
"CB = plt.colorbar(CS, shrink=0.8, extend=\"both\")\n",
"plt.scatter(G[:, 0], G[:, 1], 0.8)\n",
"\n",
"plt.title(\"Negative log-likelihood predicted by a GMM\")\n",
"plt.axis(\"tight\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "8d670b94",
"metadata": {},
"outputs": [],
"source": [
"# First explore what step sizes give expected integration to 1\n",
"steps = np.logspace(-2,1,31) #from 0.01 to 10\n",
"sums = np.zeros(len(steps))\n",
"\n",
"for i in range(len(steps)):\n",
" x = np.arange(-10.0, 10.0,steps[i])\n",
" y = np.arange(-10.0, 10.0,steps[i])\n",
" X, Y = np.meshgrid(x, y)\n",
" XX = np.array([X.ravel(), Y.ravel()]).T\n",
" Z = np.exp(gm.score_samples(XX))\n",
" Z = Z.reshape(X.shape)\n",
" sums[i] = np.sum(Z) * steps[i]**2"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "35807573",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/sj/2_q0p2pj2cj4g2p70j327xfw0000gn/T/ipykernel_47441/34128467.py:9: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
" ax.set_xticklabels(['0.1','1.0'])\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot integrated probability vs. sampling step size\n",
"fig,ax = plt.subplots(figsize = (4,3))\n",
"plt.scatter(steps,sums,marker='s')\n",
"plt.xlim(0.09,4.3)\n",
"plt.xscale('log')\n",
"plt.xlabel('sample steps / sigma')\n",
"plt.ylabel('integrated pdf')\n",
"plt.ylim(0,1.5)\n",
"ax.set_xticklabels(['0.1','1.0'])\n",
"ax.set_xticks([0.1,1.0])\n",
"ax.set_ylim(0,1.2)\n",
"plt.axhline(1,ls='--',c='0.1',zorder=-1)\n",
"plt.tight_layout()\n",
"plt.savefig('Gstepsize.pdf')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "cbc5606d",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/sj/2_q0p2pj2cj4g2p70j327xfw0000gn/T/ipykernel_47441/1589078369.py:8: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
" ax.set_xticklabels(['0.1','1.0'])\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Inspect residuals more closely\n",
"fig,ax = plt.subplots(figsize = (4,3))\n",
"ax.scatter(steps,np.abs(1-sums),marker='s')\n",
"ax.set_xlim(0.09,4.3)\n",
"ax.set_xscale('log')\n",
"ax.set_xlabel('sample steps / sigma')\n",
"ax.set_ylabel('| 1 - integrated pdf |')\n",
"ax.set_xticklabels(['0.1','1.0'])\n",
"ax.set_xticks([0.1,1.0])\n",
"ax.set_yscale('log')\n",
"ax.set_ylim(0.0000000001,1)\n",
"ax.axhline(1,ls='--',c='0.1',zorder=-1)\n",
"plt.tight_layout()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "421fba13",
"metadata": {},
"outputs": [],
"source": [
"# Now integrate over different footprints (rel. to sigma)\n",
"\n",
"widths = np.arange(5,0.1,-0.2) #from 5 to 0.1\n",
"sums2 = np.zeros(len(widths))\n",
"\n",
"for i in range(len(widths)):\n",
" x = np.arange(-widths[i], widths[i]+1, 0.1)\n",
" y = np.arange(-widths[i], widths[i]+1, 0.1)\n",
" X, Y = np.meshgrid(x, y)\n",
" XX = np.array([X.ravel(), Y.ravel()]).T\n",
" Z = np.exp(gm.score_samples(XX))\n",
" Z = Z.reshape(X.shape)/100\n",
" sums2[i] = np.sum(Z) * 1**2"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "44d473ec",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot integrated probability vs. footprint size\n",
"fig,ax = plt.subplots(figsize = (4,3))\n",
"plt.scatter(widths,sums2,marker='s')\n",
"plt.xlim(0.9,5.1)\n",
"plt.xlabel('bounds / sigma')\n",
"plt.ylabel('integrated pdf')\n",
"plt.ylim(0,1.05)\n",
"plt.axhline(1,ls='--',c='0.1',zorder=-1)\n",
"plt.tight_layout()\n",
"plt.savefig('Gbounds.pdf')"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "7dd8b729",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Inspect amount missed by using too narrow of integration bounds\n",
"fig,ax = plt.subplots(figsize = (4,3))\n",
"plt.scatter(widths,1-sums2,marker='s')\n",
"plt.xlim(0.9,5.1)\n",
"plt.xlabel('bounds / sigma')\n",
"plt.ylabel('integrated pdf')\n",
"#plt.ylim(0.7,1.05)\n",
"plt.yscale('log')\n",
"plt.axhline(1,ls='--',c='0.1',zorder=-1)\n",
"plt.tight_layout()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment