{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We perform best subset, forward stepwise, and backward stepwise selection on a single data set. For each approach, we obtain p + 1 models, containing 0, 1, 2, . . . , p predictors. Explain your answers:\n",
    "\n",
    "\n",
    "(a) Which of the three models with k predictors has the smallest training RSS?\n",
    "\n",
    "- The model obtained by best subset selection has training RSS equal to or smaller than the others. The best subset procedure considers all possible models for each number of predictors, forward stepwise, and backward stepwise do not. \n",
    "\n",
    "- For k=1, best subset and forward stepwise will always obtain the same model.\n",
    "\n",
    "- For k=p, best subset and backward stepwise will always obtain the same model.\n",
    "\n",
    "(b) Which of the three models with k predictors has the smallest test RSS?\n",
    "\n",
    "- The same reasoning above applies.\n",
    "\n",
    "(c)\n",
    "\n",
    "i. The predictors in the k-variable model identified by forward stepwise are a subset of the predictors in the (k+1)-variable model identified by forward stepwise selection.\n",
    "\n",
    "- True\n",
    "\n",
    "ii. The predictors in the k-variable model identified by backward stepwise are a subset of the predictors in the (k + 1) variable model identified by backward stepwise selection.\n",
    "\n",
    "- False\n",
    "\n",
    "iii. The predictors in the k-variable model identified by back- ward stepwise are a subset of the predictors in the (k + 1)- variable model identified by forward stepwise selection.\n",
    "\n",
    "- False\n",
    "\n",
    "iv. The predictors in the k-variable model identified by forward stepwise are a subset of the predictors in the (k+1) variable model identified by backward stepwise selection.\n",
    "\n",
    "- False\n",
    "\n",
    "v. The predictors in the k-variable model identified by best subset are a subset of the predictors in the (k + 1) variable model identified by best subset selection.\n",
    "\n",
    "- False"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. For parts (a) through (c), indicate which of i. through iv. is correct. Justify your answer.\n",
    "\n",
    "(a) The lasso, relative to least squares, is:\n",
    "\n",
    "iii. Less flexible and hence will give improved prediction accuracy when its increase in bias is less than its decrease in variance.\n",
    "\n",
    "(b) Repeat (a) for ridge regression relative to least squares.\n",
    "\n",
    "iii. Less flexible and hence will give improved prediction accuracy when its increase in bias is less than its decrease in variance.\n",
    "\n",
    "(c) Repeat (a) for non-linear methods relative to least squares.\n",
    "\n",
    "ii. More flexible and hence will give improved prediction accu- racy when its increase in variance is less than its decrease in bias."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3. Suppose we estimate the regression coefficients in a linear regression model by minimizing: (LASSO optimisation objective)\n",
    "\n",
    "for a particular value of s. For parts (a) through (e), indicate which of i. through v. is correct. Justify your answer\n",
    "\n",
    "\n",
    "(a) As we increase s from 0, the training RSS will:\n",
    "\n",
    "iii. Steadily increase.\n",
    "\n",
    "- We will pay a price in increased bias and recieve no benefit from reduced variance.\n",
    "\n",
    "(b) Repeat (a) for test RSS.\n",
    "\n",
    "ii. Decrease initially, and then eventually start increasing in a U shape.\n",
    "\n",
    "- Initially, the increased bias of the model is offset by an even larger reduction in variance. At higher values for s, the bias increases and is not offset by further reduction in variance; increaing the test RSS. (This assumes the model is actually suffering from high variance initially..)\n",
    "\n",
    "(c) Repeat (a) for variance.\n",
    "\n",
    "iv. Steadily decrease\n",
    "\n",
    "- We expect the variance to decrease (possibly rapidly initially) and then flatten out.\n",
    "\n",
    "(d) Repeat (a) for (squared) bias.\n",
    "\n",
    "iii. Steadily increase.\n",
    "\n",
    "- We expect the bias to increase steadily (possibly slowly initially) and then possibly increase more rapidly.\n",
    "\n",
    "(e) Repeat (a) for the irreducible error.\n",
    "\n",
    "v. Remain constant.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4. Suppose we estimate the regression coefficients in a linear regression model by minimizing:\n",
    "(Ridge optimisation objective)\n",
    "\n",
    "answers same as for 3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "5. It is well-known that ridge regression tends to give similar coefficient values to correlated variables, whereas the lasso may give quite dif- ferent coefficient values to correlated variables. We will now explore this property in a very simple setting.\n",
    "\n",
    "Suppose that `n = 2, p = 2`, `x11 = x12`, `x21 = x22`. Furthermore, suppose that `y1+y2 = 0` and `x11 + x21 = 0` and `x12 + x22 =0`,so that the estimate for the intercept in a least squares, ridge regression, or lasso model is zero: `β_hat_0 = 0.`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(a) Write out the ridge regression optimization problem in this set- ting. (b) Argue that in this setting, the ridge coefficient estimates satisfy βˆ 1 = βˆ 2 .\n",
    "\n",
    "![Q5ab.JPG](https://github.com/coxy1989/isl/blob/master/chapter_6/Q5ab.JPG?raw=true)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(c) Write out the lasso optimization problem in this setting. (d) Argue that in this setting, the lasso coefficients βˆ1 and βˆ2 are not unique—in other words, there are many possible solutions to the optimization problem in (c). Describe these solutions.\n",
    "\n",
    "![Q5cd.JPG](https://github.com/coxy1989/isl/blob/master/chapter_6/Q5cd.JPG?raw=true)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "6. We will now explore (6.12) and (6.13) further.\n",
    "\n",
    "(a) Consider (6.12) with p = 1. For some choice of y1 and λ > 0, plot (6.12) as a function of β1. Your plot should confirm that (6.12) is solved by (6.14)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.lines.Line2D at 0x115c534a8>"
      ]
     },
     "execution_count": 22,
     "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": [
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "y = 10\n",
    "lmbda = 2\n",
    "\n",
    "def eq_612(beta):\n",
    "    return (y - beta) ** 2 + (lmbda * (beta ** 2))\n",
    "\n",
    "betas = np.linspace(-3,10,101)\n",
    "f_of_betas = [eq_612(b) for b in betas]\n",
    "\n",
    "sns.lineplot(x=betas, y=f_of_betas)\n",
    "\n",
    "plt.axvline(x=y / (1 + lmbda), c='y')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(b) Consider (6.13) with p = 1. For some choice of y1 and λ > 0, plot (6.13) as a function of β1. Your plot should confirm that (6.13) is solved by (6.15)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.lines.Line2D at 0x1153d03c8>"
      ]
     },
     "execution_count": 30,
     "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": [
    "y = 10\n",
    "lmbda = 2\n",
    "\n",
    "def eq_613(beta):\n",
    "    return (y - beta) ** 2 + (lmbda * np.abs(beta))\n",
    "\n",
    "betas = np.linspace(-3,20,101)\n",
    "f_of_betas = [eq_613(b) for b in betas]\n",
    "sns.lineplot(x=betas, y=f_of_betas)\n",
    "\n",
    "solution = None\n",
    "if y > (lmbda/2):\n",
    "    solution = y - (lmbda/2)\n",
    "elif y < - lmbda / 2:\n",
    "    solution = y + lmbda/2\n",
    "elif y <= lmbda/2:\n",
    "    soluton = 0\n",
    "    \n",
    "plt.axvline(x=solution, c='y')\n",
    "    "
   ]
  }
 ],
 "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.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}