{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Ordinal Regression\n", "--\n", "Ordinal regression aims at fitting a model to some data $(X, Y)$, where $Y$ is an ordinal variable. To do so, we use a `VPG` model with a specific likelihood (`gpflow.likelihoods.Ordinal`)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import gpflow\n", "import numpy as np\n", "import matplotlib\n", "%matplotlib inline\n", "matplotlib.rcParams['figure.figsize'] = (12, 6)\n", "plt = matplotlib.pyplot" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'observed data value')" ] }, "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": [ "#make a one dimensional ordinal regression problem\n", "\n", "# This function generates a set of inputs X, \n", "# quantitative output f (latent) and ordinal values Y\n", "\n", "def generate_data(num_data):\n", " # First generate random inputs\n", " X = np.random.rand(num_data, 1)\n", " \n", " # Now generate values of a latent GP\n", " kern = gpflow.kernels.RBF(1, lengthscales=0.1)\n", " K = kern.compute_K_symm(X)\n", " f = np.random.multivariate_normal(mean=np.zeros(num_data), cov=K).reshape(-1, 1)\n", " \n", " # Finally convert f values into ordinal values Y\n", " Y = np.round((f + f.min())*3)\n", " Y = Y - Y.min()\n", " Y = np.asarray(Y, np.float64)\n", "\n", " return X, f, Y\n", "\n", "np.random.seed(1)\n", "num_data = 20\n", "X, f, Y = generate_data(num_data)\n", "\n", "plt.figure(figsize=(11, 6))\n", "plt.plot(X, f, '.')\n", "plt.ylabel('latent function value')\n", "\n", "plt.twinx()\n", "plt.plot(X, Y, 'kx', mew=1.5)\n", "plt.ylabel('observed data value')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 25.484796\n", " Number of iterations: 199\n", " Number of functions evaluations: 220\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 25.484796\n", " Number of iterations: 199\n", " Number of functions evaluations: 220\n" ] } ], "source": [ "# construct ordinal likelihood - bin_edges is the same as unique(Y) but centered\n", "bin_edges = np.array(np.arange(np.unique(Y).size + 1), dtype=float)\n", "bin_edges = bin_edges - bin_edges.mean()\n", "likelihood=gpflow.likelihoods.Ordinal(bin_edges)\n", "\n", "# build a model with this likelihood\n", "m = gpflow.models.VGP(X, Y, \n", " kern=gpflow.kernels.Matern32(1),\n", " likelihood=likelihood)\n", "\n", "# fit the model\n", "gpflow.train.ScipyOptimizer().minimize(m)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# here we'll plot the expected value of Y +- 2 std deviations, as if the distribution were Gaussian\n", "plt.figure(figsize=(11, 6))\n", "Xtest = np.linspace(m.X.read_value().min(), m.X.read_value().max(), 100).reshape(-1, 1)\n", "mu, var = m.predict_y(Xtest)\n", "line, = plt.plot(Xtest, mu, lw=2)\n", "col=line.get_color()\n", "plt.plot(Xtest, mu+2*np.sqrt(var), '--', lw=2, color=col)\n", "plt.plot(Xtest, mu-2*np.sqrt(var), '--', lw=2, color=col)\n", "plt.plot(m.X.read_value(), m.Y.read_value(), 'kx', mew=2)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# to see the predictive density, try predicting every possible discrete value for Y.\n", "def pred_density(m):\n", " Xtest = np.linspace(m.X.read_value().min(), m.X.read_value().max(), 100).reshape(-1, 1)\n", " ys = np.arange(m.Y.read_value().max()+1)\n", " densities = []\n", " for y in ys:\n", " Ytest = np.ones_like(Xtest) * y\n", " # Predict the log density\n", " densities.append(m.predict_density(Xtest, Ytest))\n", " return np.hstack(densities).T" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(14, 6))\n", "plt.imshow(np.exp(pred_density(m)), interpolation='nearest',\n", " extent=[m.X.read_value().min(), m.X.read_value().max(), -0.5, m.Y.read_value().max()+0.5],\n", " origin='lower', aspect='auto', cmap=plt.cm.viridis)\n", "plt.colorbar()\n", "plt.plot(X, Y, 'kx', mew=2, scalex=False, scaley=False)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Predictive density for a single input x=0.5\n", "x_new = 0.5\n", "ys = np.arange(np.max(m.Y.value+1)).reshape([-1, 1])\n", "x_new_vec = x_new*np.ones_like(ys)\n", "# for predict_density x and y need to have the same number of rows\n", "dens_new = np.exp(m.predict_density(x_new_vec, ys))\n", "fig = plt.figure(figsize=(8, 4))\n", "plt.bar(x=ys.flatten(), height=dens_new.flatten())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }