{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import numpy as np\n", "from matplotlib import pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 0 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Basic principles of machine learning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is where we start diving into the field of machine learning.\n", "\n", "By the end of this section you will\n", "\n", "- Know the basic categories of supervised learning, including classification and regression problems.\n", "- Know the basic categories of unsupervised learning, including dimensionality reduction and clustering.\n", "- Know the basic syntax of the Scikit-learn **estimator** interface.\n", "- Know how features are extracted from real-world data.\n", "\n", "In addition, we will go over several basic tools within scikit-learn which can be used to accomplish the above tasks." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Problem setting" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "A simple definition of machine learning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Machine Learning (ML) is about building programs with **tunable parameters** (typically an\n", "array of floating point values) that are adjusted automatically so as to improve\n", "their behavior by **adapting to previously seen data.**\n", "\n", "In most ML applications, the data is in a 2D array of shape ``[n_samples x n_features]``,\n", "where the number of features is the same for each object, and each feature column refers\n", "to a related piece of information about each sample.\n", "\n", "Machine learning can be broken into two broad regimes:\n", "*supervised learning* and *unsupervised learning*.\n", "We\u2019ll introduce these concepts here, and discuss them in more detail below." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Introducing the scikit-learn estimator object" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Every algorithm is exposed in scikit-learn via an ''Estimator'' object. For instance a linear regression is:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.linear_model import LinearRegression" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Estimator parameters**: All the parameters of an estimator can be set when it is instantiated:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "model = LinearRegression(normalize=True)\n", "print(model.normalize)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "True\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "print(model)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "LinearRegression(copy_X=True, fit_intercept=True, normalize=True)\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Estimated parameters**: When data is fitted with an estimator, parameters are estimated from the data at hand. All the estimated parameters are attributes of the estimator object ending by an underscore:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = np.array([0, 1, 2])\n", "y = np.array([0, 1, 2])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "_ = plt.plot(x, y, marker='o')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "X = x[:, np.newaxis] # The input data for sklearn is 2D: (samples == 3 x features == 1)\n", "X" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 8, "text": [ "array([[0],\n", " [1],\n", " [2]])" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "model.fit(X, y) \n", "model.coef_" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 9, "text": [ "array([ 1.])" ] } ], "prompt_number": 7 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Supervised Learning: Classification and regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In **Supervised Learning**, we have a dataset consisting of both features and labels.\n", "The task is to construct an estimator which is able to predict the label of an object\n", "given the set of features. A relatively simple example is predicting the species of \n", "iris given a set of measurements of its flower. This is a relatively simple task. \n", "Some more complicated examples are:\n", "\n", "- given a multicolor image of an object through a telescope, determine\n", " whether that object is a star, a quasar, or a galaxy.\n", "- given a photograph of a person, identify the person in the photo.\n", "- given a list of movies a person has watched and their personal rating\n", " of the movie, recommend a list of movies they would like\n", " (So-called *recommender systems*: a famous example is the [Netflix Prize](http://en.wikipedia.org/wiki/Netflix_prize)).\n", "\n", "What these tasks have in common is that there is one or more unknown\n", "quantities associated with the object which needs to be determined from other\n", "observed quantities.\n", "\n", "Supervised learning is further broken down into two categories, **classification** and **regression**.\n", "In classification, the label is discrete, while in regression, the label is continuous. For example,\n", "in astronomy, the task of determining whether an object is a star, a galaxy, or a quasar is a\n", "classification problem: the label is from three distinct categories. On the other hand, we might\n", "wish to estimate the age of an object based on such observations: this would be a regression problem,\n", "because the label (age) is a continuous quantity." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Classification**: K nearest neighbors (kNN) is one of the simplest learning strategies: given a new, unknown observation, look up in your reference database which ones have the closest features and assign the predominant class.\n", "\n", "Let's try it out on our iris classification problem:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn import neighbors, datasets\n", "iris = datasets.load_iris()\n", "X, y = iris.data, iris.target\n", "knn = neighbors.KNeighborsClassifier(n_neighbors=1)\n", "knn.fit(X, y)\n", "# What kind of iris has 3cm x 5cm sepal and 4cm x 2cm petal?\n", "print(iris.target_names[knn.predict([[3, 5, 4, 2]])])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['virginica']\n" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "# A plot of the sepal space and the prediction of the KNN\n", "from helpers import plot_iris_knn\n", "plot_iris_knn()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**: Now use as an estimator on the same problem: sklearn.svm.SVC.\n", "\n", "> Note that you don't have to know what it is do use it.\n", "\n", "> If you finish early, do the same plot as above." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Regression**: The simplest possible regression setting is the linear regression one:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Create some simple data\n", "import numpy as np\n", "np.random.seed(0)\n", "X = np.random.random(size=(20, 1))\n", "y = 3 * X[:, 0] + 2 + np.random.normal(size=20)\n", "\n", "# Fit a linear regression to it\n", "from sklearn.linear_model import LinearRegression\n", "model = LinearRegression(fit_intercept=True)\n", "model.fit(X, y)\n", "print(\"Model coefficient: %.5f, and intercept: %.5f\"\n", " % (model.coef_, model.intercept_))\n", "\n", "# Plot the data and the model prediction\n", "X_test = np.linspace(0, 1, 100)[:, np.newaxis]\n", "y_test = model.predict(X_test)\n", "import pylab as pl\n", "plt.plot(X[:, 0], y, 'o')\n", "plt.plot(X_test[:, 0], y_test)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Model coefficient: 3.93491, and intercept: 1.46229\n" ] }, { "output_type": "pyout", "prompt_number": 12, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\n5a71urgAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "A recap on Scikit-learn's estimator interface" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Scikit-learn strives to have a uniform interface across all methods,\n", "and we\u2019ll see examples of these below. Given a scikit-learn *estimator*\n", "object named `model`, the following methods are available:\n", "\n", "- Available in **all Estimators**\n", " + `model.fit()` : fit training data. For supervised learning applications,\n", " this accepts two arguments: the data `X` and the labels `y` (e.g. `model.fit(X, y)`).\n", " For unsupervised learning applications, this accepts only a single argument,\n", " the data `X` (e.g. `model.fit(X)`).\n", "- Available in **supervised estimators**\n", " + `model.predict()` : given a trained model, predict the label of a new set of data.\n", " This method accepts one argument, the new data `X_new` (e.g. `model.predict(X_new)`),\n", " and returns the learned label for each object in the array.\n", " + `model.predict_proba()` : For classification problems, some estimators also provide\n", " this method, which returns the probability that a new observation has each categorical label.\n", " In this case, the label with the highest probability is returned by `model.predict()`.\n", " + `model.score()` : for classification or regression problems, most (all?) estimators implement\n", " a score method. Scores are between 0 and 1, with a larger score indicating a better fit.\n", "- Available in **unsupervised estimators**\n", " + `model.transform()` : given an unsupervised model, transform new data into the new basis.\n", " This also accepts one argument `X_new`, and returns the new representation of the data based\n", " on the unsupervised model.\n", " + `model.fit_transform()` : some estimators implement this method,\n", " which more efficiently performs a fit and a transform on the same input data." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Regularization: what it is and why it is necessary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Train errors** Suppose you are using a 1-nearest neighbor estimator. How many errors do you expect on your train set?\n", "\n", "This tells us that:\n", "- Train set error is not a good measurement of prediction performance. You need to leave out a test set.\n", "- In general, we should accept errors on the train set." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**An example of regularization** The core idea behind regularization is that we are going to prefer models that are simpler, for a certain definition of ''simpler'', even if they lead to more errors on the train set.\n", "\n", "As an example, let's generate with a 9th order polynomial." ] }, { "cell_type": "code", "collapsed": false, "input": [ "rng = np.random.RandomState(0)\n", "x = 2 * rng.rand(100) - 1\n", "\n", "f = lambda t: 1.2 * t ** 2 + .1 * t ** 3 - .4 * t ** 5 - .5 * t ** 9\n", "y = f(x) + .4 * rng.normal(size=100)\n", "\n", "plt.figure()\n", "plt.scatter(x, y, s=4)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 13, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now, let's fit a 4th order and a 9th order polynomial to the data. For this we need to engineer features: the n_th powers of x:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x_test = np.linspace(-1, 1, 100)\n", "\n", "plt.figure()\n", "plt.scatter(x, y, s=4)\n", "\n", "X = np.array([x**i for i in range(5)]).T\n", "X_test = np.array([x_test**i for i in range(5)]).T\n", "order4 = LinearRegression()\n", "order4.fit(X, y)\n", "plt.plot(x_test, order4.predict(X_test), label='4th order')\n", "\n", "X = np.array([x**i for i in range(10)]).T\n", "X_test = np.array([x_test**i for i in range(10)]).T\n", "order9 = LinearRegression()\n", "order9.fit(X, y)\n", "plt.plot(x_test, order9.predict(X_test), label='9th order')\n", "\n", "plt.legend(loc='best')\n", "plt.axis('tight')\n", "plt.title('Fitting a 4th and a 9th order polynomial')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 14, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nYII=\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "With your naked eyes, which model do you prefer, the 4th order one, or the 9th order one?\n", "\n", "Let's look at the ground truth:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.figure()\n", "plt.scatter(x, y, s=4)\n", "plt.plot(x_test, f(x_test), label=\"truth\")\n", "plt.axis('tight')\n", "plt.title('Ground truth (9th order polynomial)')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 15, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Regularization is ubiquitous in machine learning. Most scikit-learn estimators have a parameter to tune the amount of regularization. For instance, with k-NN, it is 'k', the number of nearest neighbors used to make the decision. k=1 amounts to no regularization: 0 error on the training set, whereas large k will push toward smoother decision boundaries in the feature space." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise: Interactive Demo on linearly separable data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the **svm_gui.py** file in the repository: https://github.com/GaelVaroquaux/sklearn_pandas_tutorial" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "______\n", "\n", "\n" ] } ], "metadata": {} } ] }