{
"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": 1,
"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": [
"iVBORw0KGgoAAAANSUhEUgAAAXkAAAEACAYAAABWLgY0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
"AAALEgAACxIB0t1+/AAAEBZJREFUeJzt3WusZXddh/HnS0nVlkspl2nFmvoClIYiYCxouQy3MlxK\n",
"O4QCVbEiIojgOxUl2kEUW7QVATUSCukLhfAGbLl2QEeqBqUJ0Co0hUiTFsuACgFiiBR/vlirsHpm\n",
"5szZ++y1115rPZ9kMmfvc/ZZ/+zu/Pqc/1lrT6oKSdI03WPoBUiS+uOQl6QJc8hL0oQ55CVpwhzy\n",
"kjRhDnlJmrBdD/kkb09yOMlNnftOTXIwyS1Jrktyym6PI0la3CpK/h3Avi33vRo4WFUPBT7a3pYk\n",
"rVlWcTFUkjOBa6vq7Pb2zcATq+pwktOAQ1X1Y7s+kCRpIX3tye+pqsPtx4eBPT0dR5K0jd5/8VrN\n",
"jwq+d4IkDeCePX3fw0lOq6ovJTkd+PLWL0ji4JekJVRVdvq1fQ35a4BLgMvbv997tC9aZKHaXpID\n",
"VXVg6HVMhc/navl8rs6igbyKUyjfCfwT8KNJbkvyYuAy4GlJbgGe3N6WJK3Zrku+qi4+xqeeutvv\n",
"LUnaHa94nY5DQy9gYg4NvYCJOTT0AuZqJefJL3XgpNyTl6TFLDo7LXlJmjCHvCRNmENekibMIS9J\n",
"E+aQl6SRSLho0cf0dcWrJGlFEh4E/Bnw8EUfa8lL0gZr6/1G4N+BRy36eEtekjbQlnq/sIqPt/cv\n",
"xJKXpA2ztd7vGvDLsOQlaUMcq953w5KXpA2wynrvsuQlaUB91HuXJS9JA+mr3rsseUlas77rvcuS\n",
"l6Q1Wke9d1nykrQG66z3Lkteknq27nrvsuQlqSdD1XuXJS9JPRiy3rsseUlaoU2o9y5LXpJWZFPq\n",
"vcuSl6Rd2rR677LkJWkXNrHeuyx5SVrCJtd7lyUvSQva9HrvsuQlaYfGUu9dlrwk7cCY6r3Lkpek\n",
"bYyx3rsseUk6hrHWe5clL0lbjL3euyx5SeqYQr13WfKSxLTqvcuSlzR7U6v3Lkte0mxNtd67LHlJ\n",
"szTleu+y5CXNyhzqvcuSlzQbc6n3Lkte0uTNrd67LHlJkzbHeu+y5CVN0pzrvcuSlzQ5c6/3Lkte\n",
"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\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": [],
"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))"
]
},
{
"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 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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}