{
 "metadata": {
  "name": "07C_In_depth_with_linear_models"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%pylab inline\n",
      "import numpy as np\n",
      "import pylab as pl"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
        "For more information, type 'help(pylab)'.\n"
       ]
      }
     ],
     "prompt_number": 0
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "In depth with linear models"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Linear models are useful when little data is available. I addition, they form a good case study of regularization."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Linear models for regression"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The most standard linear model is the 'ordinary least regression', often simply called 'linear regression'. When the number of features is large, it becomes ill-posed and overfits.\n",
      "\n",
      "Let us generate a simple simulation, to see the behavior of these models."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "rng = np.random.RandomState(0)\n",
      "X = rng.normal(size=(1000, 50))\n",
      "beta = rng.normal(size=50)\n",
      "y = np.dot(X, beta) + 4*rng.normal(size=1000)\n",
      "\n",
      "from sklearn import linear_model, cross_validation\n",
      "\n",
      "def plot_learning_curve(estimator):\n",
      "    scores = list()\n",
      "    train_sizes = np.linspace(50, 250, 20).astype(np.int)\n",
      "    for train_size in train_sizes:\n",
      "        test_error = cross_validation.cross_val_score(estimator, X, y,\n",
      "                        cv=cross_validation.ShuffleSplit(train_size=train_size, test_size=500, n=1000,\n",
      "                                                         random_state=0)\n",
      "                        )\n",
      "        scores.append(test_error)\n",
      "    pl.plot(train_sizes, np.mean(scores, axis=1), label=estimator.__class__.__name__)\n",
      "    pl.ylim(0, 1)\n",
      "    pl.ylabel('Explained variance on test set')\n",
      "    pl.xlabel('Training set size')\n",
      "    pl.legend(loc='best')\n",
      "\n",
      "\n",
      "plot_learning_curve(linear_model.LinearRegression())"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stderr",
       "text": [
        "/usr/local/lib/python2.7/site-packages/scikits/__init__.py:1: UserWarning: Module argparse was already imported from /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/argparse.pyc, but /usr/local/lib/python2.7/site-packages is being added to sys.path\n",
        "  __import__('pkg_resources').declare_namespace(__name__)\n"
       ]
      },
      {
       "output_type": "display_data",
       "png": "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\n"
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "As we can see, the ordinary linear regression is not defined if there are less training samples than features. In the presence of noise, it does poorly as long as the number of sample is not several times the number of features.\n",
      "\n",
      "The LinearRegression is then overfitting: fitting noise. We need to regularize.\n",
      "\n",
      "**The Ridge estimator** is a simple regularization of the ordinary LinearRegression. In particular, it has the benefit of being not computationaly more expensive than the ordinary least square estimate."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot_learning_curve(linear_model.LinearRegression())\n",
      "plot_learning_curve(linear_model.Ridge())"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\nDkIIIQr5f1J0u0b2vkwLAAAAAElFTkSuQmCC\n"
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We can see that in the low-sample limit, the Ridge estimator performs much better than the unregularized model.\n",
      "\n",
      "The regularization of the Ridge is a shrinkage: the coefficients learned are bias towards zero. Too much bias is not beneficial, but with very little samples, we will need more bias.\n",
      "\n",
      "The amount of regularization is set via the `alpha` parameter of the Ridge. Tuning it is critical for performance. We can set it automatically by cross-validation using the RidgeCV estimator:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot_learning_curve(linear_model.LinearRegression())\n",
      "plot_learning_curve(linear_model.Ridge())\n",
      "plot_learning_curve(linear_model.RidgeCV())"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\nAunV2747iAi1AAAAAElFTkSuQmCC\n"
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**The Lasso estimator** is useful to impose sparsity on the coefficient. In other words, it is to be prefered if we believe that many of the features are not relevant.\n",
      "\n",
      "Let us create such a situation with a new simulation where only 10 out of the 50 features are relevant:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "beta[10:] = 0\n",
      "y = np.dot(X, beta) + 4*rng.normal(size=1000)\n",
      "plot_learning_curve(linear_model.RidgeCV())\n",
      "plot_learning_curve(linear_model.Lasso())"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\n"
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We can see that the Lasso estimator performs, in our case, better than the Ridge when their is a small number of training observations. However, when they are a lot of observations, the Lasso under-performs. Indeed, the variance-reducing effect of the regularization is less critical in these situation, and the bias becomes too detrimental.\n",
      "\n",
      "As with any estimator, we should tune the regularization parameter to get best prediction. For this purpose, we can use the LassoCV object. Note that it is a significantly more computationally costly operation than the RidgeCV. To speed it up, we reduce the number of values explored for the alpha parameter."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot_learning_curve(linear_model.RidgeCV())\n",
      "plot_learning_curve(linear_model.LassoCV(n_alphas=20))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stderr",
       "text": [
        "/usr/local/lib/python2.7/site-packages/sklearn/linear_model/coordinate_descent.py:244: UserWarning: Objective did not converge for target 0, you might want to increase the number of iterations\n",
        "  ' to increase the number of iterations')\n"
       ]
      },
      {
       "output_type": "display_data",
       "png": "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\n/wEBBfQT5xTDKAAAAABJRU5ErkJggg==\n"
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**ElasticNet** sits in between Lasso and Ridge. It has a tuning parameter, l1_ratio, that controls this behavior: when set to 0, ElasticNet is a Ridge, when set to 1, it is a Lasso. It is useful when your coefficients are not that sparse. The sparser the coefficients, the higher we should set l1_ratio. Note that l1_ratio can also be set by cross-validation, although we won't do it here to limit computational cost."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot_learning_curve(linear_model.RidgeCV())\n",
      "plot_learning_curve(linear_model.ElasticNetCV(l1_ratio=.8, n_alphas=20))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\n"
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Practical tips:**\n",
      "\n",
      "- *Different algorithms for the same problem:* The Lasso model can be solved with different algorithms: the **Lasso** estimator implements a coordinate-descent approach; the **LassoLars** estimator implements the LARS alorithm. Depending on the situation, one may be faster than the other.\n",
      "\n",
      "- *Normalization:* as with all estimators, it can be useful to normalization your data. The linear models have a 'normalize' option that does the normalization, runs the models, and scales the coefficients so that they are suitable for non normalized data. Note that at the time of writing Lasso and LassoLars have different default settings for normalization."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Exercise:** Find the best linear regression prediction on the `diabetes` dataset, that is available in the scikit-learn datasets."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 7
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Linear models for classification"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In general, a 2-class classification task can be seen as a regression problem with output variables (y) drawn from [0, 1]. Let us simulate a simple example and applied linear regression to it."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Generate data\n",
      "np.random.seed(0)\n",
      "X = np.random.normal(size=100)\n",
      "y = (X > 0).astype(np.float)\n",
      "X[X > 0] *= 4\n",
      "X += .3 * np.random.normal(size=100)\n",
      "X = X[:, np.newaxis]\n",
      "pl.plot(X, y, 'o')\n",
      "\n",
      "# Fit a linear regression to it\n",
      "ols = linear_model.LinearRegression()\n",
      "ols.fit(X, y)\n",
      "X_test = np.linspace(-4, 10, 100)[:, np.newaxis]\n",
      "pl.plot(X_test, ols.predict(X_test))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "pyout",
       "prompt_number": 9,
       "text": [
        "[<matplotlib.lines.Line2D at 0x10e1d9b50>]"
       ]
      },
      {
       "output_type": "display_data",
       "png": "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\n"
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We can see that a linear fit is clearly not a good fit for variable in [0, 1].\n",
      "\n",
      "A better approach is to fit a sigmoid, this is called the **logistic regression**. The sigmoid can be seen as coming from a probabilistic model of 'y'.\n",
      "\n",
      "In scikit-learn, some estimators have a 'predict_proba' method that gives the probablity of each class under the model learned. Let us use the predict_proba method of the LogisticRegression object to plot the fit:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# First plot the data and the ordinary least square regression\n",
      "pl.plot(X, y, 'o')\n",
      "pl.plot(X_test, ols.predict(X_test))\n",
      "\n",
      "# Plot a logistic regression\n",
      "log_reg = linear_model.LogisticRegression(C=1e5)\n",
      "log_reg.fit(X, y)\n",
      "pl.plot(X_test, log_reg.predict_proba(X_test)[:, 1])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "pyout",
       "prompt_number": 10,
       "text": [
        "[<matplotlib.lines.Line2D at 0x10e1dd950>]"
       ]
      },
      {
       "output_type": "display_data",
       "png": "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\n"
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Regularization**: the logistic regression suffers from over-fit in the presence of many features and must be regularized. The 'C' parameter controls that regularization: large C values give unregularized model, while small C give strongly regularized models.\n",
      "\n",
      "Similar to the Ridge/Lasso separation, you can set the 'penalty' parameter to 'l1' to enforce sparsity of the coefficients.\n",
      "\n",
      "**Multi-class**: Multi-class with the LogisticRegression object is tackled using a one-vs-all approach."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Exercise:** Use LogisticRegression to classify digits."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 10
    }
   ],
   "metadata": {}
  }
 ]
}