Newer
Older
abgabensammlungSS15 / is / UB4 / Ex4.ipynb
@MaxXximus92 MaxXximus92 on 8 Jun 2015 124 KB ea is
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "preamble": true
   },
   "source": [
    "(Defining latex commands: not to be shown...)\n",
    "$$\n",
    "\\newcommand{\\norm}[1]{\\left \\| #1 \\right \\|}\n",
    "\\DeclareMathOperator{\\minimize}{minimize}\n",
    "\\DeclareMathOperator{\\maximize}{maximize}\n",
    "\\newcommand{\\real}{\\mathbb{R}}\n",
    "\\newcommand{\\blasso}{\\beta^{\\mathrm{LASSO}}}\n",
    "\\newcommand{\\bzero}{\\beta^0}\n",
    "\\newcommand{\\bLS}{\\hat{\\beta}^{\\mathrm{LS}}}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LASSO and $\\ell_0$ estimator for orthonormal data (30 points)\n",
    "\n",
    "Let $X \\in \\real^{n \\times p}$ be your training input set, and $Y \\in \\real^n$ your training output.\n",
    "In a linear model we predict $\\hat{y}(x) = x^T \\hat{\\beta}$ for some input $x \\in \\real^p$ and some constant $\\hat{\\beta} \\in \\real^p$.\n",
    "The so-called $\\ell_0$-penalized estimator $\\bzero(\\lambda)$ tries to find a good $\\beta$ with reslatively few non-zero entries. It is defined as:\n",
    "\\begin{equation}\n",
    "    \\bzero(\\lambda) := \\mathrm{arg \\, min}_{\\beta} \\frac{1}{n} \\norm{Y - X \\beta}_2^2 + \\lambda \\norm{\\beta}_0 ,\n",
    "\\end{equation}\n",
    "where $\\norm{\\beta}_0 := \\sharp \\{j:\\beta_j \\neq 0\\}$ and $\\lambda > 0$.\n",
    "Alternatively, the LASSO estimator $\\blasso(\\lambda)$ is defined as:\n",
    "\\begin{equation}\n",
    "    \\blasso(\\lambda) := \\mathrm{arg \\, min}_{\\beta} \\frac{1}{n} \\norm{Y - X \\beta}_2^2 + \\lambda \\norm{\\beta}_1 ,\n",
    "\\end{equation}\n",
    "where $\\norm{\\beta}^2_2 := \\sum_{i=1}^p \\beta_i^2$, $\\norm{\\beta}_1 := \\sum_{i=1}^p |\\beta_i|$ and $\\lambda > 0$.  \n",
    "\n",
    "There are in general no analytic formulae for $\\bzero(\\lambda)$ and $\\blasso(\\lambda)$. In practice, they are computed by numerical optimization.\n",
    "However, we can compute an analytic expression in the special case of _orthogonal design_, where\n",
    "\\begin{equation}\n",
    "    p=n \\quad \\mathrm{and} \\quad \\frac{1}{n} X^T X = I_{p \\times p} .\n",
    "\\end{equation}\n",
    "The goal of this exercise is to compute these formulae."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## $\\ell_0$-regularized estimator  in the orthonormal design\n",
    "\n",
    "Let $g_{\\mathrm{hard}, \\lambda}$ be the function:\n",
    "\\begin{equation}\n",
    "    g_{\\mathrm{hard}, \\lambda} : \\real \\rightarrow \\real , \\quad z \\rightarrow z \\, 1_{ \\{|z| > \\lambda\\} } ,\n",
    "\\end{equation}\n",
    "where $1_{ \\{|z| > \\lambda\\} } = 1$ if $|z| > \\lambda$ and $0$ otherwise.\n",
    "Suppose we are in the orthonormal design.\n",
    "\n",
    "1. Plot $g_{\\mathrm{hard}, \\lambda}$ for $\\lambda = 1$.\n",
    "2. Write down the analytical formulae for the least square estimator $\\bLS$. (Not needed for the subsequent calculations)\n",
    "3. Prove that $\\bzero_j(\\lambda) = g_{\\mathrm{hard}, \\sqrt{\\lambda}}(z_j)$ where, again, $z_j := \\frac{1}{n}(X^T Y)_j$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "from numpy import *\n",
    "from scipy import *\n",
    "from matplotlib import pyplot as plt\n",
    "from sklearn import linear_model\n",
    "from pandas import * # for easy import of data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "rkJggg==\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0dc559e390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def ghard (l, z):\n",
    "    if(np.abs(z) > l):\n",
    "        return z\n",
    "    return 0\n",
    "\n",
    "vg = np.vectorize(ghard)\n",
    "\n",
    "x = np.linspace(-10, 10, 1000)    \n",
    "y = vg(1, x)\n",
    "\n",
    "plt.plot(x, y, '-')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 1.1.2\n",
    "\\begin{align*}%not sure whether this is meant...\n",
    "    \\hat{\\beta}^{LS}&=\\left(X^TX\\right)^{-1}X^T\\mathbf{y}\\\\\n",
    "    &=\\left(nI_{n\\times n} \\right)^{-1}X^T\\mathbf{y}\\\\\n",
    "    &=\\frac{1}{n}\\cdot I_{n\\times n}X^T\\mathbf{y}\\\\\n",
    "    &=\\frac{1}{n}\\cdot X^T\\mathbf{y}\n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 1.1.3\n",
    "\\begin{align}\n",
    " \\bzero(\\lambda) &:= \\mathrm{arg \\, min}_{\\beta} \\frac{1}{n} \\norm{Y - X \\beta}_2^2 + \\lambda \\norm{\\beta}_0 ,\\\\\n",
    "     &=\\mathrm{arg \\, min}_{\\beta} \\underbrace{\\frac{1}{n} Y^{T}Y}_{constant}- \\frac{2}{n}Y^{T}X\\beta+\\norm{\\beta}^2+\\lambda \\norm{\\beta}_0 \\\\\n",
    "     &=\\mathrm{arg \\, min}_{\\beta} -\\frac{2}{n}Y^{T}X\\beta+\\norm{\\beta}^2+\\lambda \\norm{\\beta}_0 \\\\\n",
    "         &=\\mathrm{min}_{\\beta} \\sum^p_{i=1}-\\frac{2}{n}Y^{T}_iX_i\\beta_i+\\beta_i^2+\\lambda \\cdot \\begin{cases}\n",
    "  0,  & \\beta_i =0\\\\\n",
    "  1, & \\beta_i \\neq 0\\\\\n",
    "\\end{cases} %0 oder eins\n",
    "\\\\\\text{The problem  can be simplified to one}\\\\ \\text{ some element representing all others}\\\\\n",
    "       L_i&=\\begin{cases}\n",
    "  0,  & \\beta_i =0\\\\\n",
    "  -\\frac{2}{n}Y^{T}_iX_i\\beta_i+\\beta_i^2+\\lambda , & \\beta_i \\neq 0\\\\\n",
    "\\end{cases} \\\\\n",
    "     \\\\\\frac{d L_i }{d \\beta}&= -\\frac{2}{n} X_i^TY_i +2 \\beta_i \\overset{!}{=} 0\\\\\n",
    "     \\beta_i&= \\frac{1}{n} X^T_iY_i\\\\\n",
    "     \\text{$\\beta_i$ in $L_i$,$\\beta_i \\neq 0$, determine for which $\\lambda$ $\\beta_i =0$}\\\\\n",
    "     0&=  -2\\beta_i^2+\\beta_i^2 +\\lambda\\\\\n",
    "     \\lambda&=|\\beta_i|^2\\\\\n",
    "    \\lambda &=  \\left|\\frac{1}{n} X^T_iY_i\\right|^2 \\\\\n",
    "     \\sqrt{\\lambda} &= \\left|\\frac{1}{n} X^T_iY_i\\right| \\\\\n",
    "     \\bzero(\\lambda) = \\frac{1}{n} X^T_iY_i \\cdot \n",
    "     \\begin{cases}\n",
    "  0, & |X^T_iY_i| =\\sqrt{\\lambda}\\\\\n",
    "  1, & |X^T_iY_i|><\\sqrt{\\lambda}\\\\\n",
    "\\end{cases}   \n",
    "     \\end{align}   \n",
    "     Das ist etwas reverse engineered. ich bezweifle die Korrektheit aber vielleicht hilft es um zur richtigen Lösung zu kommen"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LASSO estimator in the orthonormal design\n",
    "\n",
    "Let $g_{\\mathrm{soft}, \\lambda}$ be the function:\n",
    "\\begin{equation}\n",
    "    g_{\\mathrm{soft}, \\lambda} : \\real \\rightarrow \\real , \\quad z \\rightarrow \\mathrm{sign}(z) \\, (|z| - \\lambda)_+ .\n",
    "\\end{equation}\n",
    "Suppose we are in the orthonormal design.\n",
    "\n",
    "1. Plot $g_{\\mathrm{soft}, \\lambda}$ for $\\lambda = 1$.\n",
    "2. Prove that $\\blasso_j(\\lambda) = g_{\\mathrm{soft}, \\frac{\\lambda}{2}}(z_j)$, where $z_j := \\frac{1}{n}(X^T Y)_j$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "75KOw5IfkYTzaOodmr13B7ykbVnyI9DW+xXAeVjvkhZgyW+4Tr3/H9a7pAVZ8hsq4b40e+/nAb9U\n",
       "xcGBlyRphHop+SQHktye5JPtn319HGeqEp7O3evdAS9pKX2VfAFXVtWVPX3/SWrr/QrgqcAvVvGR\n",
       "gZckaeT63JNPj997cjr1fifNee8OeEm71ueQf1WSTye5KskpPR5n1BLum/A24C9p6v3lVXx96HVJ\n",
       "moZU1XIPTA4Cpx3lU68BPg58pb39OuD0qnrJlscX8NrOXYeq6tBSixmphH3AW4EPAL9exTcGXpKk\n",
       "DZNkL7C3c9elVbXjnZKlh/yOD5CcCVxbVWdvub8WWeiUtHvvVwJPoTlzxq0ZSTuy6Ozs6+ya0zs3\n",
       "9/O9qzRnL+EZNM/H/9KcOeOAl9Sbvs6uuTzJI2nOsvkC8LKejjMaCafQnDnzFODFVXx04CVJmoHe\n",
       "t2uOeeAZbde09f5W4H3Ab7j3LmlZi85Or3jtUVvvVwJPAn7Bepe0br53TU86e+/fojnv3QEvae0s\n",
       "+RXbUu+XVPG3Ay9J0oxZ8iuU8EzuXu8OeEmDsuRXoK33P6G5YMF6l7QxLPld6tT7/9Cc9+6Al7Qx\n",
       "LPklWe+SxsCSX0LCs7DeJY2AJb+AhPvR1PsTgJ+v4u8GXpIkbcuS36FOvX+T5swZB7ykjWfJH8eW\n",
       "en+Rw13SmFjy27DeJY2dJX8Ubb2/EXgc8HNVHBp2RZK0HEt+i4Rn09T714Efd8BLGjNLvtWp98dj\n",
       "vUuaCEseSDif79X7IxzwkqZi1iXf1vufAucCP1vF3w+8JElaqdmWfFvv/wp8jabeHfCSJmd2JZ9w\n",
       "Kk29/zTwMw53SVM2q5Lv7L1/Fetd0gzMouQ79f5TWO+SZmTyJZ/wHJp6/2+a894d8JJmY7Ilv6Xe\n",
       "L67iYwMvSZLWbpIlf5R6d8BLmqVJlXxb728CHov1LknTKfmEC2jq/T+x3iUJmEDJJ9yfpt4fA7yw\n",
       "iusHXpIkbYxRl3yn3r9Cc967A16SOkZZ8p16Pwd4gcNdko5udCWfcCFNvX+ZZu/dAS9JxzCakm/r\n",
       "/c3AT2K9S9KOjKLkE/bT1PthrHdJ2rGNLvkt9f78Kv5h4CVJ0qhsbMl36v1LNPXugJekBW1cySc8\n",
       "gKbefwLrXZJ2ZaNKPuG5NPV+B/BIB7wk7c5GlPyWen9eFf848JIkaRIGL/lOvf8HTb074CVpRQYt\n",
       "+YR3AY/GepekXgxd8l/Eepek3qSqhjlwUlWVQQ4uSSO16OwcuuQlST1yyEvShDnkJWnCHPKSNGEO\n",
       "eUmasKWHfJKLkvxbku8kefSWz/1Wks8luTnJebtfpiRpGbsp+ZuA/cDHuncmOQt4AXAWsA/48yT+\n",
       "xNCzJHuHXsOU+Hyuls/ncJYevlV1c1XdcpRPXQC8s6q+XVW3Ap+n+bdY1a+9Qy9gYvYOvYCJ2Tv0\n",
       "Auaqj8L+QeD2zu3bgQf3cBxJ0nFs+941SQ4Cpx3lU79dVdcucJxhLquVpJnbdshX1dOW+J5fBM7o\n",
       "3P6h9r4jJHH4r1CSS4dew5T4fK6Wz+cwVvUulN33UbgG+OskV9Js0zwE+JetD/B9aySpf7s5hXJ/\n",
       "ktuAxwLvT/JBgKr6DPBu4DPAB4FX1FDvgiZJMzfYu1BKkvq39vPXvYiqP0kOJLk9ySfbP/uGXtPY\n",
       "JNnXvv4+l+Q3h17P2CW5NcmN7evxiG1bbS/J25McTnJT575TkxxMckuS65Kcst33GOIiJS+i6k8B\n",
       "V1bVo9o/Hxp6QWOS5ATgLTSvv7OAi5M8bNhVjV4Be9vXo9fLLO4dNK/HrlcDB6vqocBH29vHtPYh\n",
       "6kVUvfMX2ss7B/h8Vd1aVd8G3kXzutTu+JpcUlVdD3x1y93PAa5uP74auHC777FJpexFVKvxqiSf\n",
       "TnLV8X6M0xEeDNzWue1rcPcK+EiSG5K8dOjFTMSeqjrcfnwY2LPdF/fyD3l7EVV/tnluXwP8BfB7\n",
       "7e3XAVcAL1nT0qbA19vqnVtVdyR5IHAwyc1tnWoFqqqOd71RL0O+74uo5mynz22StwGL/A9VR74G\n",
       "z+DuP11qQVV1R/v3V5K8h2ZLzCG/O4eTnFZVX0pyOvDl7b546O2arRdRvTDJiUl+hGNcRKVja/+D\n",
       "32U/zS+5tXM3AA9JcmaSE2lOBLhm4DWNVpKTkty7/fhk4Dx8Ta7CNcAl7ceXAO/d7ot7KfntJNkP\n",
       "vAl4AM1FVJ+sqmdU1WeS3HUR1Z14EdUyLk/ySJpthy8ALxt4PaNSVXcmeSXwYeAE4Kqq+uzAyxqz\n",
       "PcB7kkAza/6qqq4bdknjkuSdwBOBB7QXn/4ucBnw7iQvAW4Fnr/t93COStJ0Db1dI0nqkUNekibM\n",
       "IS9JE+aQl6QJc8hL0oQ55CVpwhzykjRhDnlJmrD/B3ksmr9zVxpPAAAAAElFTkSuQmCC\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0dc5343358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def gsoft (l, z):\n",
    "    return np.sign(z)*np.maximum(0,np.abs(z)-l) \n",
    "#assuming (x)_+ means max(0,x), the only definition (of many) I found that made sense...\n",
    "\n",
    "vg = np.vectorize(gsoft)\n",
    "\n",
    "x = np.linspace(-10, 10, 1000)    \n",
    "y = vg(1, x)\n",
    "\n",
    "plt.plot(x, y, '-')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 1.2.2\n",
    "\\begin{align}\\blasso(\\lambda) &:= \\mathrm{arg \\, min}_{\\beta} \\frac{1}{n} \\norm{Y - X \\beta}_2^2 + \\lambda \\norm{\\beta}_1 ,\\\\\n",
    "     &=\\mathrm{arg \\, min}_{\\beta} \\underbrace{\\frac{1}{n} Y^{T}Y}_{constant}- \\frac{2}{n}Y^{T}X\\beta+\\norm{\\beta}^2+\\lambda \\norm{\\beta}_1 \\\\\n",
    "     &=\\mathrm{arg \\, min}_{\\beta} -\\frac{2}{n}Y^{T}X\\beta+\\norm{\\beta}^2+\\lambda \\norm{\\beta}_1 \\\\\n",
    "         &=\\mathrm{min}_{\\beta} \\sum^p_{i=1}-\\frac{2}{n}Y^{T}_iX_i\\beta_i+\\beta_i^2+\\lambda |\\beta_i|\\\\\n",
    "       \\text{Minimize for a fixed i}\\\\\\text{The problem  can be simplified to the sum of its parts}\\\\\n",
    "       L_i&=-\\frac{2}{n}Y^{T}_iX_i\\beta_i+\\beta_i^2+\\lambda |\\beta_i|\\\\\n",
    "       \\text{ $Y^{T}_iX_i >0$ subjects to $\\beta_i \\geq 0$}\\\\\\text{and vice versa $Y^{T}_iX_i \\leq0$ subjects to $\\beta_i \\leq 0$ }\\\\\\\\\n",
    "       \\text{Case 1: $Y^{T}_iX_i >0$ and $\\beta_i \\geq 0$}\\\\\n",
    "      \\frac{dL_i}{d\\beta} &=-\\frac{2}{n}Y^{T}_iX_i+2\\beta_i+\\lambda \\overset{!}{=} 0\\\\\n",
    "      \\beta_i &= \\frac{1}{n}Y^{T}_iX_i-\\frac{\\lambda}{2}\\\\\n",
    "      \\text{this is only feasible if the right-hand side is nonnegative}\\\\\n",
    "     \\blasso_i(\\lambda)& =\\left(\\frac{1}{n}Y^{T}_iX_i-\\frac{\\lambda}{2}\\right)^+\n",
    "    \\\\&= sgn(\\frac{1}{n}Y^{T}_iX_i)% den schritt verstehe ich nicht\n",
    "    \\cdot\\left(\\left|\\frac{1}{n}Y^{T}_iX_i\\right|-\\frac{\\lambda}{2}\\right)^+\\\\\n",
    "    \\text{Case 2: $Y^{T}_iX_i \\leq0$ and $\\beta_i \\leq 0$}\\\\\n",
    "    \\text{leads obviously to the same equation, so it's proven}\n",
    "     % quelle http://stats.stackexchange.com/questions/17781/derivation-of-closed-form-lasso-solution\n",
    "  \\end{align}\n",
    " We needed more than 12 hours to solve these equations. Please be aware of the fact that we are computer scientist with only a basic math education. We are not mathematics students! "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Application of LASSO on a gene data set (70 points)\n",
    "\n",
    "(This exercise is independent of the first one.)\n",
    "\n",
    "The goal of this exercise is to apply both ridge regression and LASSO on real data.\n",
    "The data can be found on the homepage of the course, files _xtrain_xxxx.csv_ and _xtest_xxxx.csv_ , and comes from the paper <cite data-cite=\"Kemmeren2014\"> Kemmeren et al.</cite>.\n",
    "It consists of the logarithm of the gene expression levels of yeast cells.\n",
    "\n",
    "More specifically, we consider two datasets corresponding to two different targets: say gene 4710 for the first and gene 3290 for the second.\n",
    "In both cases, we would like to predict the gene expression levels of the target gene, given the gene expression levels of the other 6170 genes.\n",
    "For each dataset, we are given a training set $X_\\mathrm{train} \\in \\real^{140 \\, \\times \\, 6170}$, $y_\\mathrm{train} \\in \\real^{140}$ consisting of 140 yeast cells, and a test set $X_\\mathrm{test} \\in \\real^{20 \\, \\times \\, 6170}$ with 20 cells. To evaluate the performance of our model, we also provide the target values $y_\\mathrm{test} \\in \\real^{20}$ of the test set.\n",
    "\n",
    "You are asked, to hand in:\n",
    "\n",
    "1. A printout of the code of the function _printOutput_, that you will have appropriately modified (see section [_The printOutput function_](#The-printOutput-function)).\n",
    "2. Answer questions a. and b. of the section [_Linear regression with no regularizer_](#Linear-regression-with-no-regularizer).\n",
    "3. A printout of all the lines marked _### CHANGE THIS LINE ###_. On the printout, all regressions should be done using a regularizing parameter $\\lambda$ that you will have optimized using 10-fold cross-validation on the training set. However, you do not need to hand in the printout of the lines corresponding to these cross-validations.\n",
    "4. A printout of the output of all lines marked _### PROVIDE THE OUTPUT ###_.\n",
    "5. The same printouts as for questions 3. and 4., but with target gene 3290 instead of 4710 (i.e. with the second dataset).\n",
    "\n",
    "_Hint_: For all the regression tasks, we recommend to use python functions of the type _linear_model.xxx(xxx)_, of the pacakge _sklearn_. The code asked to hand in should look pretty similar to the code of the section [_Linear regression with no regularizer_](#Linear-regression-with-no-regularizer). Cross-validation can be easily done using ipython functions of the type _linear_model.xxxCV(xxx)_. Do not hesitate to consult the documentation of these functions. Finally, note that, what we call $\\lambda$ corresponds to the parameter _alpha_ of the python functions."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Loading the required packages."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Target: gene 4710"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Loading the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0     0.068299\n",
      "1     0.017395\n",
      "2    -0.050700\n",
      "3     0.032200\n",
      "4     0.061997\n",
      "5     0.089905\n",
      "6     0.107902\n",
      "7    -0.054100\n",
      "8    -0.127800\n",
      "9    -0.080800\n",
      "10    0.266001\n",
      "11    0.046798\n",
      "12    0.144595\n",
      "13   -0.042900\n",
      "14   -0.084100\n",
      "...\n",
      "125   -0.010501\n",
      "126   -0.122201\n",
      "127   -0.017400\n",
      "128    0.096505\n",
      "129   -0.051401\n",
      "130    0.141001\n",
      "131    0.027494\n",
      "132    0.031099\n",
      "133   -0.017400\n",
      "134   -0.061400\n",
      "135    0.080098\n",
      "136    0.115100\n",
      "137   -0.048000\n",
      "138    0.002206\n",
      "139    0.063503\n",
      "Name: y, Length: 140, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "### CHANGE THE PATHS ###\n",
    "a=4\n",
    "if a==4:\n",
    "    Xtrain = read_csv(\"./GeneDataSet/Xtrain_4710.csv\", header = False)\n",
    "    Xtest = read_csv(\"./GeneDataSet/Xtest_4710.csv\", header = False)\n",
    "    ytrain = read_csv(\"./GeneDataSet/ytrain_4710.csv\", header = False, names = [\"gene\",\"y\"])\n",
    "    ytest = read_csv(\"./GeneDataSet/ytest_4710.csv\", header = False, names = [\"gene\",\"y\"])\n",
    "else :\n",
    "    Xtrain = read_csv(\"./GeneDataSet/Xtrain_3290.csv\", header = False)\n",
    "    Xtest = read_csv(\"./GeneDataSet/Xtest_3290.csv\", header = False)\n",
    "    ytrain = read_csv(\"./GeneDataSet/ytrain_3290.csv\", header = False, names = [\"gene\",\"y\"])\n",
    "    ytest = read_csv(\"./GeneDataSet/ytest_3290.csv\", header = False, names = [\"gene\",\"y\"])\n",
    "\n",
    "Xtrain = Xtrain.drop(Xtrain.columns[[0]],axis = 1)\n",
    "ytrain = squeeze(ytrain.drop(ytrain.columns[[0]],axis = 1))\n",
    "Xtest = Xtest.drop(Xtest.columns[[0]],axis = 1)\n",
    "ytest = squeeze(ytest.drop(ytest.columns[[0]],axis = 1))\n",
    "print ytrain"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The printOutput function\n",
    "\n",
    "The purpose of this function is to plot the regression weights, the predicted values yhat of y against ytest, the (number of the) gene with the strongest coefficient and the so-called _coefficient of determination_ $R^2$, defined as:\n",
    "\\begin{equation}\n",
    "    R^2 := 1 - \\frac{\\sum_{(x_i,y_i) \\, \\in \\mathrm{\\, test \\ set}} (\\hat{y}(x_i) - y_i)^2}{\\sum_i (y_i - \\overline{y})^2},\n",
    "\\end{equation}\n",
    "where $\\overline{y}$ is the emperical mean of the $y_i$'s in the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def printOutput(lm_, Xtest_, ytest_):   # lm_ = instance of linear_model.xxx(xxx)\n",
    "    yhat = lm_.predict(Xtest_)  ### CHANGE THIS LINE ###\n",
    "    plt.figure(1)\n",
    "    plt.title(\"Regression Weights\")\n",
    "    plt.plot(lm_.coef_.T)\n",
    "    plt.figure(2)\n",
    "    plt.title('yhat vs ytest')\n",
    "    plt.plot(ytest_, yhat, 'ro')\n",
    "    plt.show()\n",
    "    print('R2 :', lm_.score(Xtest_,ytest_)) ### CHANGE THIS LINE ### \n",
    "    print('Gene with Strongest Coefficient :' , abs(lm_.coef_).argmax()) ### CHANGE THIS LINE ###\n",
    "    if hasattr(lm_, 'alpha'): print('Used Lambda :', lm.alpha) # if using linear_model.xxx\n",
    "    if hasattr(lm_, 'alpha_'): print('Lambda_ResultOfCV :', lm.alpha_ )# if using linear_model.xxxCV\n",
    "    #print('Regression Coefs :', lm_.coef_) # Can be printed out, if wanted\n",
    "    #print('Regression Intercept :', lm_.intercept_) # Can be printed out, if wanted\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Linear regression with no regularizer\n",
    "\n",
    "a. What should happen if you tried to apply linear regression without any regularizer on this data set?  \n",
    "    - many non-zero weights\n",
    "    - possible large weights\n",
    "b. Does this happen with the function _linear_model.LinearReagression()_ ?\n",
    "    - yes (only 1 zero for 4710, 3290)\n",
    "    - no (largest weight for 4710 ~0.0227, for 3290 ~0.0477)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0de011f080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0dc51ce518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 : 0.897396797403\n",
      "Gene with Strongest Coefficient : 1\n"
     ]
    }
   ],
   "source": [
    "lmlinear = linear_model.LinearRegression()\n",
    "lmlinear.fit(Xtrain,ytrain)\n",
    "\n",
    "printOutput(lmlinear,Xtest,ytest)   ### PROVIDE THE OUTPUT ###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.00143834,  0.02271741,  0.00203671, ...,  0.00043436,\n",
       "       -0.00189356,  0.01498915])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lmlinear.coef_\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'lm' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-8-6d141fbdefb9>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mzeros\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcoef_\u001b[0m\u001b[1;33m==\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mzeros\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mabs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcoef_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'lm' is not defined"
     ]
    }
   ],
   "source": [
    "zeros=(lm.coef_==0)\n",
    "print(zeros.sum())\n",
    "\n",
    "print(np.abs(lm.coef_).max())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Ridge regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "II7jOE4l/j+y0R5AFgXZJwAAAABJRU5ErkJggg==\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0dc51973c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n",
       "nQ5X/cdqOdMAAAAASUVORK5CYII=\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0dc5049978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 : 0.893852096495\n",
      "Gene with Strongest Coefficient : 250\n",
      "Lambda_ResultOfCV : 0.1\n"
     ]
    }
   ],
   "source": [
    "lm = linear_model.RidgeCV(cv=10)  ### CHANGE THIS LINE ###\n",
    "lm.n_jobs=-1\n",
    "lm.fit(Xtrain, ytrain);\n",
    "\n",
    "printOutput(lm, Xtest, ytest)   ### PROVIDE THE OUTPUT ###"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### LASSO regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/anacond3/lib/python3.4/site-packages/sklearn/linear_model/coordinate_descent.py:490: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations\n",
      "  ConvergenceWarning)\n"
     ]
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0dc5020358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f0dc5189908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 : 0.921985490655\n",
      "Gene with Strongest Coefficient : 5521\n",
      "Lambda_ResultOfCV : 0.000212589578453\n",
      "Regression Coefficient of Gene 5954 :  0.0\n"
     ]
    }
   ],
   "source": [
    "lm = linear_model.LassoCV(cv=10) ### CHANGE THIS LINE ###\n",
    "lm.n_jobs=-1\n",
    "lm.max_iter=1000\n",
    "lm.fit(Xtrain, ytrain)\n",
    "\n",
    "printOutput(lm, Xtest, ytest)   ### PROVIDE THE OUTPUT ###\n",
    "\n",
    "print('Regression Coefficient of Gene 5954 : ', lm.coef_[5954]) ### CHANGE THIS LINE ### ### PROVIDE THE OUTPUT ###"
   ]
  }
 ],
 "metadata": {
  "annotations": {
   "author": "",
   "categories": [
    "intelligent-systems-1-2015"
   ],
   "date": "2015-05-07",
   "location": "Beginning of next lecture",
   "parent": "IS_SS2015",
   "submission_date": "2015-05-21",
   "subtitle": "Exercise Sheet 4, Regularized Linear Regression",
   "tags": [
    "IntelligenSystems",
    "Course"
   ],
   "title": "Intelligent Systems 1 - Summer Semester 2015"
  },
  "celltoolbar": "Edit Metadata",
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}