{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from utils import *\n",
    "from ipywidgets import interact, widgets\n",
    "np.set_printoptions(precision=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. Visualizing MLE and MAP"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let's generate some data from a linear model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x10e5f4518>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(3)\n",
    "# Equation is \n",
    "# y = 0.5 x + 1.0\n",
    "coeffs = [1, 0.5]\n",
    "x, y = polynomial_data(coeffs, n_data=200)\n",
    "plot_polynomial(coeffs)\n",
    "plt.scatter(x, y, color='green')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Now we'll write a function to compute -log p(data = D | model = f_theta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def mse(x, y, coeffs):\n",
    "    return np.mean((x.dot(coeffs.T) - y)**2, axis=0)\n",
    "\n",
    "def pdata_mle(x, y, coeffs, sigma_2):\n",
    "    error = mse(x, y, coeffs)\n",
    "    return error / (2 * sigma_2)\n",
    "\n",
    "def pdata_map(x, y, coeffs, sigma_2, prior_mu, prior_sigma_2):\n",
    "    error_est = mse(x, y, coeffs)\n",
    "    error_prior = np.sum((np.array(coeffs) - prior_mu) ** 2, axis=1)\n",
    "    return error_est / (2 * sigma_2) + error_prior / (2 * prior_sigma_2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### How does this function look for different choices of coefficients?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "be3be59a7e36490596bb0cb4cd871046",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "interactive(children=(FloatSlider(value=0.5, description='sigma', max=1.0, min=0.1), Output()), _dom_classes=(…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<function __main__.<lambda>(sigma)>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def plot_loss_contours_mle(x, y, sigma=1.0, gt_coeffs=[0, 0], x0_range=(-2, 2), x1_range=(-2, 2)):\n",
    "    x0 = np.linspace(*x0_range, 100)\n",
    "    x1 = np.linspace(*x1_range, 100)\n",
    "    X0, X1 = np.meshgrid(x0, x1)\n",
    "    inputs = np.column_stack([X0.flatten(), X1.flatten()])\n",
    "    outputs = pdata_mle(polynomial_features(x, 1), y, inputs, sigma)\n",
    "    outputs = outputs.reshape(X0.shape)\n",
    "    min_val_at = np.unravel_index(outputs.argmin(), outputs.shape)\n",
    "    min_x0 = x0[min_val_at[0]]\n",
    "    min_x1 = x1[min_val_at[1]]\n",
    "    \n",
    "    fig, ax = plt.subplots(figsize=(5, 4))\n",
    "    plt.contourf(X0, X1, outputs, cmap=plt.cm.Blues)\n",
    "    plt.colorbar()\n",
    "    plt.scatter([gt_coeffs[0]], [gt_coeffs[1]], marker='x', color='r', label='Ground truth parameters')\n",
    "    plt.scatter([min_x1], [min_x0], marker='o', color='g', label='MLE parameters')\n",
    "    plt.title(\"MLE parameter estimates for f(x) = w0 + w1 * x\")\n",
    "    plt.xlabel(\"w0\")\n",
    "    plt.ylabel(\"w1\")\n",
    "    plt.legend()\n",
    "    \n",
    "interactive_plot = lambda sigma: plot_loss_contours_mle(x, y, sigma=sigma, gt_coeffs=coeffs)\n",
    "interact(interactive_plot, sigma=(0.1, 1.0, 0.1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MAP estimate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_loss_contours_map(x, y, prior_mean=(0, 0), prior_sigma=0.1, sigma=1.0, gt_coeffs=[0, 0], x0_range=(-2, 2), x1_range=(-2, 2)):\n",
    "    x0 = np.linspace(*x0_range, 100)\n",
    "    x1 = np.linspace(*x1_range, 100)\n",
    "    X0, X1 = np.meshgrid(x0, x1)\n",
    "    inputs = np.column_stack([X0.flatten(), X1.flatten()])\n",
    "    outputs = pdata_map(polynomial_features(x, 1), y, inputs, sigma, prior_mean, prior_sigma)\n",
    "    outputs = outputs.reshape(X0.shape)\n",
    "    min_val_at = np.unravel_index(outputs.argmin(), outputs.shape)\n",
    "    min_x0 = x0[min_val_at[0]]\n",
    "    min_x1 = x1[min_val_at[1]]\n",
    "    \n",
    "    fig, ax = plt.subplots(figsize=(5, 4))\n",
    "    plt.contourf(X0, X1, outputs, cmap=plt.cm.Blues)\n",
    "    plt.colorbar()\n",
    "    plt.scatter([gt_coeffs[0]], [gt_coeffs[1]], marker='x', color='r', label='Ground truth parameters')\n",
    "    plt.scatter([min_x1], [min_x0], marker='o', color='g', label='MAP parameters')\n",
    "    plt.scatter([prior_mean[0]], [prior_mean[1]], marker='x', color='black', label='Prior parameter mean')\n",
    "    plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d138d71a457f4bccb8cf5d17002af802",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "interactive(children=(FloatSlider(value=0.0, description='prior_mean_x0', max=1.0, min=-1.0), FloatSlider(valu…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<function __main__.<lambda>(prior_mean_x0, prior_mean_x1, prior_sigma)>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "interactive_plot = lambda prior_mean_x0, prior_mean_x1, prior_sigma: plot_loss_contours_map(x, y, prior_mean=[prior_mean_x0, prior_mean_x1], prior_sigma=prior_sigma, sigma=1.0, gt_coeffs=coeffs)\n",
    "interact(interactive_plot, prior_mean_x0=(-1.0, 1.0, 0.1), prior_mean_x1=(-1.0, 1.0, 0.1), prior_sigma=(0.1, 50.1, 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. Bias-variance tradeoff"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Recall:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(0)\n",
    "coeffs = [0.4, -0.5, 0.3, -0.5, -0.5]\n",
    "DATASET_SIZE = 400\n",
    "x, y = polynomial_data(coeffs, n_data=DATASET_SIZE)\n",
    "plt.scatter(x, y)\n",
    "plot_polynomial(coeffs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### How to choose degree of polynomial? Validation sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "N_TRAIN = DATASET_SIZE // 2\n",
    "x_train, y_train = x[:N_TRAIN], y[:N_TRAIN]\n",
    "x_val, y_val = x[N_TRAIN:], y[N_TRAIN:]\n",
    "\n",
    "errs_train = []\n",
    "ws_train = []\n",
    "errs_val = []\n",
    "for i in range(20):\n",
    "    w, err = least_squares(polynomial_features(x_train, i), y_train)\n",
    "    errs_train.append(err)\n",
    "    errs_val.append(validation_error(x_val, y_val, w))\n",
    "    ws_train.append(w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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ZtYhcrnPzDoDPwaWpPt8+N/F03jjrabV2dec8xH4fdcT3ynAi/7nnwkMMe+O+J5AL+D1Rrx3o+Iws0OAe4HjnXNro7YHfkchxtE16unxwPv+4znAUX48HYCjiO3pS2kcfiz74d3U8mrUtlSej4bMBH5hnv8FNvrFRCrPhQRLR64G5eumxpLrOTupWPIsbycVix9PpnM3pCt/uxTdBdqSfoAT8cbibAU+B+b42/cAZkW1Gwh8iPevqoqo7Xvh/ce5DHgKKGpiHJ2AecBSYC7Q0d9eBtwf1a4E719aBXVe/yKwGC9JTQV2CSsO4Ef+e73t/z43E+cDGApsBxZF/RycivMR9H3jXd483n/cxv98y/zPu1fUayv8130AHNvMv8+G4pjr/91GPv/Mhr6jkOL4HfCe/34vAftFvfYc/zwtA84OMw7/+VjgljqvS9n5wCue1vh/e5/ijcEcCYz09xtwtx/jYqJm1Ejluci3H7IkV/vHUr5uWiw5n7OTjCWv8nYysfjPxxJi7vaPlxX5W0u7i4iIiIiESENKRERERERCpIJbRERERCREKrhFREREREKkgltEREREJEQquEVEREREQqSCW0REREQkRCq4RURERERC9P8addHdeUK1KQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_poly_on_train_val(x_train, y_train, x_val, y_val, ws_train[1], \"Degree 1\")\n",
    "plot_poly_on_train_val(x_train, y_train, x_val, y_val, ws_train[4], \"Degree 4\")\n",
    "plot_poly_on_train_val(x_train, y_train, x_val, y_val, ws_train[19], \"Degree 19\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Can we make this more concrete?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Let's generate a bunch of datasets of different sizes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_datasets = {}\n",
    "y_datasets = {}\n",
    "dataset_sizes = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]\n",
    "n_datasets_per_size = 20\n",
    "\n",
    "for dsize in dataset_sizes:\n",
    "    x_datasets[dsize] = []\n",
    "    y_datasets[dsize] = []\n",
    "    for i in range(n_datasets_per_size):\n",
    "        x_, y_ = polynomial_data(coeffs, n_data=dsize)\n",
    "        x_datasets[dsize].append(x_)\n",
    "        y_datasets[dsize].append(y_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Now we'll fit regressions to each dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature_sizes = np.arange(1, 11)\n",
    "regression_coeffs = {}\n",
    "regression_errs = {}\n",
    "ridge_lambda = [0, 0.0001, 0.001, 0.01, 0.1, 1.0, 10.0]\n",
    "\n",
    "for fsize in feature_sizes:\n",
    "    regression_coeffs[fsize] = {}\n",
    "    regression_errs[fsize] = {}\n",
    "    for lam in ridge_lambda:\n",
    "        regression_coeffs[fsize][lam] = {}\n",
    "        regression_errs[fsize][lam] = {}\n",
    "        for dsize in dataset_sizes:\n",
    "            regression_coeffs[fsize][lam][dsize] = []\n",
    "            regression_errs[fsize][lam][dsize] = []\n",
    "            for x_, y_ in zip(x_datasets[dsize], y_datasets[dsize]):\n",
    "                features = polynomial_features(x_, fsize)\n",
    "                w, err = ridge_regression(features, y_, l=lam)\n",
    "                regression_coeffs[fsize][lam][dsize].append(w)\n",
    "                regression_errs[fsize][lam][dsize].append(err)\n",
    "                "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_regression_fits(feature_size, ridge_lambda, dset_size, dset_idx):\n",
    "    x_, y_ = x_datasets[dset_size][dset_idx], y_datasets[dset_size][dset_idx]\n",
    "    rcoeffs = regression_coeffs[feature_size][ridge_lambda][dset_size]\n",
    "    all_x_vals = np.linspace(-1, 1, 101)\n",
    "    plt.figure(figsize=(12, 4))\n",
    "    plt.subplot(121)\n",
    "    plt.title(\"Regression fits\")\n",
    "    plt.xlim(-1.0, 1.0)\n",
    "    plt.ylim(-1.0, 1.5)\n",
    "    for rcoef in rcoeffs[:-1]:\n",
    "        plot_polynomial(rcoef, color='orange', alpha=0.2, label=None)\n",
    "    plot_polynomial(rcoeffs[-1], color='orange', alpha=0.2, label='other models')\n",
    "    plot_polynomial(rcoeffs[dset_idx], label='this model')\n",
    "    plt.legend()\n",
    "    plt.scatter(x_, y_)\n",
    "    \n",
    "    err = regression_errs[feature_size][ridge_lambda][dset_size][dset_idx]\n",
    "    plt.subplot(122)\n",
    "    plt.title(\"Error\")\n",
    "    plt.xlim(-5, 5)\n",
    "    plt.ylim(0, 0.15)\n",
    "    plt.xticks([])\n",
    "    plt.bar(0, err)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "interactive_plot = lambda prior_mean_x0, prior_mean_x1, prior_sigma: plot_loss_contours_map(x, y, prior_mean=[prior_mean_x0, prior_mean_x1], prior_sigma=prior_sigma, sigma=1.0, gt_coeffs=coeffs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ee99bf03e6d145feb954856774a623b2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "interactive(children=(IntSlider(value=5, description='f_size', max=10, min=1), IntSlider(value=3, description=…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<function __main__.<lambda>(f_size, r_lam, dset_size, dset_idx)>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "interactive_plot = lambda f_size, r_lam, dset_size, dset_idx: plot_regression_fits(f_size, (r_lam > 0) * 10 ** (r_lam -5), 10*(dset_size+1), dset_idx)\n",
    "interact(interactive_plot, r_lam=(0, 6), f_size=(1, 10), dset_size=(0, 9), dset_idx=(0, n_datasets_per_size-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
