{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": false }, "source": [ "# [Introduction to Data Science](http://datascience-intro.github.io/1MS041-2023/) \n", "## 1MS041, 2023 \n", "©2023 Raazesh Sainudiin, Benny Avelin. [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let’s start by talking about a few examples of supervised learning problems. Suppose we have a dataset giving the living areas and prices of 47 houses from Portland, Oregon:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "47\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Size of the house (in square feet)Number of bedroomsPrice of the house
021043399900
116003329900
\n", "
" ], "text/plain": [ " Size of the house (in square feet) Number of bedrooms Price of the house\n", "0 2104 3 399900\n", "1 1600 3 329900" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "df = pd.read_csv('data/portland.csv')\n", "print(len(df))\n", "df.head(2)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Size of the house (in square feet)', 'Number of bedrooms',\n", " 'Price of the house'],\n", " dtype='object')" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Lets say that our goal would be to predict the price of the house given the size and the number of bedrooms\n", "\n", "In the case of simple linear regression we could set $x$ to be the size in square feet and $y$ to be the price, the goal would then be to find a function $f(x)$ that is close to $y$ in some sense.\n", "\n", "In the context of machine learning they often use the following terminology: let $x^{(i)}$ denote the **features**(living area) and let $y^{(i)}$ denote the **target** (price), then a pair $(x^{(i)},y^{(i)}$ would be called a **training example**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this terminology they also call the set of observations $\\{(x^{(i)},y^{(i)}),\\, i=1,\\ldots,m\\}$ a training set. \n", "\n", "> **In this context the goal is statistical prediction**\n", "\n", "> Contrast this with the **statistical estimation** viewpoint of linear regression, where the goal is to estimate the parameters.\n", "\n", "Why is this difference, basically it is one of explainability. Estimation is often used as a tool to explain something through its statistical model and the estimated parameters of the model. Lets assume that there is a linear relationship between fat percentage and BMI, but we do not know the parameters. Then by simply taking a few observations and performing a parameter estimation under a given loss, such as the maximum likelihood estimator (MLE), we can do hypothesis tests to check if the parameters are positive or test between different proposed values of said parameters. The goal in statistical machine learning is often one of prediction, and as you will see, the models that are often in use, do not allow us to actually explain anything, although the prediction is also accomplished by first estimating parameters of a model but with the explicit goal of predicting future from past observations.\n", "\n", "> In conclusion, in statistical machine learning we are often using weaker model assumptions, but since we are focusing on prediction we do not really have a problem. In contrast, in classical statistical decision problems, the focus is on stronger model assumptions and the goal is to extract more detailed information about the relationships between features and targets to obtain a better explainable understanding of the underlying data generating process.\n", "\n", "> Think of the name, machine learning. From this you get that the focus has to be the behavior of the machine (prediction).\n", "\n", "It is important to bear in mind that estimation for explainability and estimation for predictability are both formally statistical decision problems. Here, we take such a mathematical approach." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### The Portland house price example using Sci-kit learn" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from Utils import showURL\n", "showURL('https://scikit-learn.org/stable/',600)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LinearRegression\n", "lr = LinearRegression()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#?LinearRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to use sci-kit learns framework to \"train\" a linear regression model we will first have to prepare the data in the way that it expects. The format is as follows\n", "\n", "* X -- a numpy array of shape (n_samples,n_features)\n", "* Y -- a numpy array of length n_samples" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "dtype('int64')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[['Size of the house (in square feet)','Number of bedrooms']].to_numpy().dtype" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from sklearn.model_selection import train_test_split\n", "X = df[['Size of the house (in square feet)','Number of bedrooms']].to_numpy() # To convert from dataframe to numpy array\n", "Y = df['Price of the house'].to_numpy()\n", "X_train, X_test, Y_train, Y_test = train_test_split(X,Y,random_state=0,test_size=0.5)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#help(train_test_split)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's note the shapes of `X` and `Y` now." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(47, 2) (23, 2) (24, 2) (23,) (24,)\n" ] } ], "source": [ "print(X.shape,X_train.shape,X_test.shape,Y_train.shape,Y_test.shape)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LinearRegression()" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr.fit(X_train,Y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This now gives us a fitted model for this particular data, so lets plot it." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.scatter(X_train[:,0],Y_train)\n", "plt.scatter(X_train[:,0],lr.predict(X_train))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "from Utils import scatter3d" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/avelin/opt/miniconda3/envs/sage_new/lib/python3.9/site-packages/plotly/io/_renderers.py:395: DeprecationWarning:\n", "\n", "distutils Version classes are deprecated. Use packaging.version instead.\n", "\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "marker": { "size": 2 }, "mode": "markers", "type": "scatter3d", "x": [ 4478, 1985, 1236, 1811, 1268, 2132, 1427, 4215, 1600, 1890, 1437, 3890, 1534, 1962, 1239, 1888, 3031, 1494, 2162, 1203, 1416, 2104, 852 ], "y": [ 5, 4, 3, 4, 3, 4, 3, 4, 3, 3, 3, 3, 3, 4, 3, 2, 4, 3, 4, 3, 2, 3, 2 ], "z": [ 665662.8079408824, 327476.5407789478, 223780.93804446512, 304081.256598686, 228083.51904313397, 347241.5222415828, 249461.96838026977, 627312.6541236828, 272722.79690432316, 311714.93720475957, 250806.52494235378, 580626.2496215622, 263848.72359456867, 324384.0606861546, 224184.30501309034, 308457.70965795266, 468117.15717293555, 258470.49734623265, 351275.1919278348, 219343.90138958787, 244994.63992758724, 340488.4476333574, 169161.64982604893 ] } ], "layout": { "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } } } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scatter3d(X_train[:,0],X_train[:,1],Y_train)\n", "scatter3d(X_train[:,0],X_train[:,1],lr.predict(X_train))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "plt.scatter(X_train[:,1],Y_train)\n", "plt.scatter(X_train[:,1],lr.predict(X_train))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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lmXZNbh+77//vnJzc/VXf/VXWrRokVpbW+1z3Kf48/v9kqScnBxJvJ+S0dX3qBvvpeQRDAZVVVWl8+fPq7i4mPdRLwhCQ6SlpUWSlJeXF3E8Ly/PPtfS0qJRo0ZpzJgxfdbk5uZGPX9ubq5dg+vz1a9+Va+++qreffdd/eAHP9D+/fs1Y8YMdXZ2SuI+xZsxRitWrNB9992noqIiSbyfkk1P90jivZQsGhoadOONN8rtduvJJ5/U1q1bVVhYyPuoF+w+P8RcLlfE18aYqGNXu7qmp/r+PA/659FHH7X/d1FRke6++27dfPPNeuONN/T1r3+91+/jPg2NJUuW6MMPP9SePXuizvF+Sg693SPeS8lh0qRJqq+v19mzZ/Xaa6/piSee0K5du+zzvI8i0SI0RDwejyRFpePW1lY7jXs8HnV1damtra3PmlOnTkU9/2effRaV6jE48vPzdfPNN+vjjz+WxH2Kp6VLl2rbtm167733NGHCBPs476fk0ds96gnvpcQYNWqUvvjFL+ruu+/WunXrdOedd+pHP/oR76NeEISGSEFBgTwej3bu3Gkf6+rq0q5duzR9+nRJ0pQpUzRy5MiIGp/Pp8bGRrumuLhYfr9fdXV1ds2+ffvk9/vtGgyu06dP69ixY8rPz5fEfYoHY4yWLFmi119/Xe+++64KCgoizvN+Srxr3aOe8F5KDsYYdXZ28j7qTbxHZw8n7e3t5tChQ+bQoUNGktm4caM5dOiQOXLkiDHGmPXr1xvLsszrr79uGhoazGOPPWby8/NNIBCwn+PJJ580EyZMMG+//bY5ePCgmTFjhrnzzjvNpUuX7JqysjJzxx13mJqaGlNTU2MmT55sysvL4/56U1Vf96m9vd2sXLnS7N271zQ3N5v33nvPFBcXm/Hjx3Of4mjx4sXGsizz/vvvG5/PZz/+/Oc/2zW8nxLrWveI91JyWLVqldm9e7dpbm42H374oXnuuedMWlqa2bFjhzGG91FPCELX4b333jOSoh5PPPGEMSY85beystJ4PB7jdrvNAw88YBoaGiKe48KFC2bJkiUmJyfHZGZmmvLycnP06NGImtOnT5v58+ebrKwsk5WVZebPn2/a2tri9CpTX1/36c9//rOZOXOmuemmm8zIkSPNF77wBfPEE09E3QPu09Dq6f5IMj/72c/sGt5PiXWte8R7KTl885vfNDfffLMZNWqUuemmm8xDDz1khyBjeB/1xGWMMfFrfwIAAEgejBECAACORRACAACORRACAACORRACAACORRACAACORRACAACORRACAACORRACAACORRACAACORRACAACORRACAACORRACAACO9f8D1bOC4s6pl7gAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.scatter(X_test[:,0],Y_test)\n", "plt.scatter(X_test[:,0],lr.predict(X_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see here, since the x-axis is size and the y axis is price we have an underlying variable which is number of bedrooms the line is not straight.\n", "\n", "Let's also plot the number of bedrooms `x[1]` against the price (y-axis) next to appreciate the other discrete feature.\n", "\n", "But remember, this is a linear model so if we consider the full 3-d space the predictions would be on a plane instead of a line." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.scatter(X_train[:,1],Y_train)\n", "plt.scatter(X_train[:,1],lr.predict(X_train))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.scatter(X_test[:,1],Y_test)\n", "plt.scatter(X_test[:,1],lr.predict(X_test))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8829506572411265" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr.score(X_train,Y_train) # Score returns R^2" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.44440818383631375" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr.score(X_test,Y_test) # Score returns R^2" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "36475.71776324453" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions_train = lr.predict(X_train)\n", "residual_train = Y_train - predictions_train\n", "np.mean(np.abs(residual_train))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([699900, 299900, 199900, 285900, 259900, 345000, 198999, 549000,\n", " 329900, 329999, 249900, 573900, 314900, 259900, 229900, 255000,\n", " 599000, 242500, 287000, 239500, 232000, 399900, 179900])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_train" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "predictions_test = lr.predict(X_test)\n", "residual_test = Y_test - predictions_test\n", "np.mean(np.abs(residual_test))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "_=plt.hist(np.abs(residual_test))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.mean(np.minimum(np.abs(residual_test),200000))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from Utils import epsilon_bounded\n", "epsilon_bounded(len(residual_test),200000,0.05)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from Utils import print_confidence_interval\n", "print_confidence_interval(np.mean(np.minimum(np.abs(residual_test),200000)),epsilon_bounded(len(residual_test),200000,0.05))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calibration\n", "\n", "Often we want to know if our predictions are calibrated, the concept is easiest to understand simply by looking at the following plot of the predicted value versus the true value" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(lr.predict(X_train),Y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here it looks quite good." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X_new = lr.predict(X_test)\n", "plt.scatter(X_new,Y_test)\n", "lr_calib = LinearRegression()\n", "lr_calib.fit(X_new.reshape(-1,1),Y_test)\n", "plt.plot(X_new,X_new)\n", "plt.plot(X_new,lr_calib.predict(X_new.reshape(-1,1)))" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "26234.398560870508" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sqrt(np.mean((lr_calib.predict(X_new.reshape(-1,1))-X_new)**2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, maybe not so good. We are underestimating the price." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here calibration would mean that the predictions and the true values \"follow\" a straight line with slope $1$ and intercept $0$. Actually the mean square calibration error is the following\n", "$$\n", " \\mathbb{E}[|\\mathbb{E}[Y \\mid f(X)] - f(X)|^2]^{1/2}\n", "$$\n", "Thus it is checking for every predicted value $f(X)$ the variance of the true values, we want this to be small.\n", "Lets compute the calibration error here" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "predictions = lr.predict(X_test).reshape(-1,1)\n", "\n", "lr_calib = LinearRegression()\n", "lr_calib.fit(predictions,Y_test)\n", "\n", "calibration_residual = (lr_calib.predict(predictions)-predictions)\n", "np.sqrt(np.mean(calibration_residual**2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.sqrt(np.mean((Y_test-predictions)**2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.scatter(predictions,lr_calib.predict(predictions))\n", "plt.scatter(predictions,Y_test)\n", "plt.scatter(predictions,predictions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the above we can see that we are not entirely calibrated, but that we have a simple additive bias, i.e. we are underestimating." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets try another model and see if we can change the calibration" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "lr2 = LinearRegression()\n", "lr2.fit(X_train[:,0:1]**2,Y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.scatter(lr2.predict(X_test[:,0:1]**2),Y_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "predictions_lr2 = lr2.predict(X_test[:,0:1]**2).reshape(-1,1)\n", "\n", "lr2_calib = LinearRegression()\n", "lr2_calib.fit(predictions_lr2,Y_test)\n", "\n", "calibration_residual_lr2 = (lr2_calib.predict(predictions_lr2)-predictions_lr2)\n", "np.sqrt(np.mean(calibration_residual_lr2**2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.scatter(predictions_lr2,lr2_calib.predict(predictions_lr2))\n", "plt.scatter(predictions_lr2,Y_test)\n", "plt.scatter(predictions_lr2,predictions_lr2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.sqrt(np.mean((Y_test-predictions_lr2)**2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above is a bit more complicated, we are always underestimating, but less so at smaller prices and more at higher prices. Interestingly this gives a smaller calibration error." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The calibration error is a bit tricky to get confidence bounds for, but can be done." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More about measuring the model\n", "\n", "We will illustrate this with an example built upon the Portland data that we saw earlier." ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ".. _california_housing_dataset:\n", "\n", "California Housing dataset\n", "--------------------------\n", "\n", "**Data Set Characteristics:**\n", "\n", " :Number of Instances: 20640\n", "\n", " :Number of Attributes: 8 numeric, predictive attributes and the target\n", "\n", " :Attribute Information:\n", " - MedInc median income in block group\n", " - HouseAge median house age in block group\n", " - AveRooms average number of rooms per household\n", " - AveBedrms average number of bedrooms per household\n", " - Population block group population\n", " - AveOccup average number of household members\n", " - Latitude block group latitude\n", " - Longitude block group longitude\n", "\n", " :Missing Attribute Values: None\n", "\n", "This dataset was obtained from the StatLib repository.\n", "https://www.dcc.fc.up.pt/~ltorgo/Regression/cal_housing.html\n", "\n", "The target variable is the median house value for California districts,\n", "expressed in hundreds of thousands of dollars ($100,000).\n", "\n", "This dataset was derived from the 1990 U.S. census, using one row per census\n", "block group. A block group is the smallest geographical unit for which the U.S.\n", "Census Bureau publishes sample data (a block group typically has a population\n", "of 600 to 3,000 people).\n", "\n", "An household is a group of people residing within a home. Since the average\n", "number of rooms and bedrooms in this dataset are provided per household, these\n", "columns may take surpinsingly large values for block groups with few households\n", "and many empty houses, such as vacation resorts.\n", "\n", "It can be downloaded/loaded using the\n", ":func:`sklearn.datasets.fetch_california_housing` function.\n", "\n", ".. topic:: References\n", "\n", " - Pace, R. Kelley and Ronald Barry, Sparse Spatial Autoregressions,\n", " Statistics and Probability Letters, 33 (1997) 291-297\n", "\n" ] } ], "source": [ "import ssl\n", "import numpy as np\n", "ssl._create_default_https_context = ssl._create_unverified_context\n", "\n", "import sklearn.datasets as datasets\n", "california_housing = datasets.fetch_california_housing()\n", "print(california_housing['DESCR'])" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "X = california_housing.data\n", "Y = california_housing.target\n", "# For the purpose of exposition we normalize the Y variable between 0 and 1\n", "Y = Y/np.max(Y)\n", "\n", "from sklearn.model_selection import train_test_split\n", "X_train,X_test,Y_train,Y_test = train_test_split(X,Y,train_size=0.9,random_state=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`X_train,Y_train` will now be different from `X_test,Y_test`. What this means is that if we assume that the original data is IID we can consider the two samples independent. So, let us train a simple linear regression model" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(18576, 8) (2064, 8) (18576,) (2064,)\n" ] } ], "source": [ "print(X_train.shape,X_test.shape,Y_train.shape,Y_test.shape)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LinearRegression()" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "lr = LinearRegression()\n", "lr.fit(X_train,Y_train)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "residual = Y_test-lr.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2064" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(residual)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "from Utils import plotEDF, makeEDF" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "image/png": "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RERENJAYRoiIiEhSDCNEREQkKYYRIiIikhTDCBEREUmKYYSIiIgkxTBCREREkmIYISIiIkn16669kda1L5vRaJS4EiIiIuqrrt/bve2vGhNhxGQyAQAKCgokroSIiIhCZTKZoNPpun08JraD93q9qK+vR3JyMmQyWbfHGY1GFBQU4Pz580N223j2QSf2Qyf2Qyf2Qyf2Qyf2Q6dI9IMQAiaTCXl5eYiL635lSEyMjMTFxSE/P7/Px2u12iH9DQawD7qwHzqxHzqxHzqxHzqxHzqFux96GhHpwgWsREREJCmGESIiIpLUoAojKpUKTzzxBFQqldSlSIZ90In90In90In90In90In90Cma+iEmFrASERHR4DWoRkaIiIgo9jCMEBERkaQYRoiIiEhSDCNEREQkKYYRIiIiklRMh5H29nbccccd0Ol00Ol0uOOOO9DR0dHrecePH8fNN98MnU6H5ORkzJw5EzU1NeEvOEz62w9dfvKTn0Amk2HNmjVhqzESQu0Hl8uFRx99FBMmTEBiYiLy8vKwZMkS1NfXR67oAbB27VqUlJRArVajvLwcO3bs6PH4bdu2oby8HGq1GqWlpXj55ZcjVGl4hdIPmzdvxvXXX4/MzExotVrMmjULf//73yNYbfiE+v3QZdeuXVAoFJg8eXJ4C4yQUPvB4XDg8ccfR1FREVQqFYYPH47XX389QtWGR6h9sHHjRkyaNAkJCQnIzc3F3XffDb1eH5liRQy78cYbxfjx48Xu3bvF7t27xfjx48V3vvOdHs85ffq0SEtLE4888og4ePCgOHPmjPjoo49EU1NThKoeeP3phy7vvfeemDRpksjLyxN/+tOfwltomIXaDx0dHeK6664TmzZtEidOnBAVFRVixowZory8PIJVX5q3335bxMfHi1dffVVUVlaKX/ziFyIxMVGcO3cu6PFnz54VCQkJ4he/+IWorKwUr776qoiPjxfvvvtuhCsfWKH2wy9+8Qvx9NNPi3379omTJ0+KVatWifj4eHHw4MEIVz6wQu2HLh0dHaK0tFTMmzdPTJo0KTLFhlF/+uHmm28WM2bMEFu3bhVVVVVi7969YteuXRGsemCF2gc7duwQcXFx4rnnnhNnz54VO3bsEOPGjRO33HJLROqN2TBSWVkpAIg9e/b42ioqKgQAceLEiW7PW7RokfjRj34UiRIjor/9IIQQtbW1YtiwYeLo0aOiqKgopsPIpfTDhfbt2ycA9PrDO1pMnz5dLF++3K9tzJgxYuXKlUGP/9WvfiXGjBnj1/aTn/xEzJw5M2w1RkKo/RDM2LFjxZNPPjnQpUVUf/th0aJF4l//9V/FE088MSjCSKj98D//8z9Cp9MJvV4fifIiItQ++P3vfy9KS0v92p5//nmRn58fthovFLPTNBUVFdDpdJgxY4avbebMmdDpdNi9e3fQc7xeLz7++GOMGjUKN9xwA7KysjBjxgy8//77Eap64PWnH4DOvrjjjjvwyCOPYNy4cZEoNaz62w8XMxgMkMlkSElJCUOVA8vpdOLAgQOYN2+eX/u8efO6fc8VFRUBx99www3Yv38/XC5X2GoNp/70w8W8Xi9MJhPS0tLCUWJE9Lcf1q9fjzNnzuCJJ54Id4kR0Z9++OCDDzB16lQ888wzGDZsGEaNGoWHH34YNpstEiUPuP70wezZs1FbW4stW7ZACIGmpia8++67WLhwYSRKjt01I42NjcjKygpoz8rKQmNjY9BzmpubYTab8e///u+48cYb8emnn+J73/se/uVf/gXbtm0Ld8lh0Z9+AICnn34aCoUCDzzwQDjLi5j+9sOF7HY7Vq5cicWLF8fEnTxbW1vh8XiQnZ3t156dnd3te25sbAx6vNvtRmtra9hqDaf+9MPF/vjHP8JiseC2224LR4kR0Z9+OHXqFFauXImNGzdCoYiJm7j3qj/9cPbsWezcuRNHjx7Fe++9hzVr1uDdd9/F/fffH4mSB1x/+mD27NnYuHEjFi1aBKVSiZycHKSkpODPf/5zJEqOvjDym9/8BjKZrMeP/fv3AwBkMlnA+UKIoO1A518/APDd734XDz30ECZPnoyVK1fiO9/5TtQt4gtnPxw4cADPPfccNmzY0O0x0SKc/XAhl8uF22+/HV6vF2vXrh3w9xFOF7+/3t5zsOODtceaUPuhy1tvvYXf/OY32LRpU9BAG2v62g8ejweLFy/Gk08+iVGjRkWqvIgJ5fvB6/VCJpNh48aNmD59OhYsWIBnn30WGzZsiNnRESC0PqisrMQDDzyAf/u3f8OBAwfwySefoKqqCsuXL49EqYi6KPyzn/0Mt99+e4/HFBcX48iRI2hqagp4rKWlJSANdsnIyIBCocDYsWP92svKyrBz587+Fx0G4eyHHTt2oLm5GYWFhb42j8eDX/7yl1izZg2qq6svqfaBFM5+6OJyuXDbbbehqqoKn332WUyMigCd389yuTzgL53m5uZu33NOTk7Q4xUKBdLT08NWazj1px+6bNq0CUuXLsU777yD6667Lpxlhl2o/WAymbB//34cOnQIP/vZzwB0/lIWQkChUODTTz/FNddcE5HaB1J/vh9yc3MxbNgw6HQ6X1tZWRmEEKitrcXIkSPDWvNA608frF69GnPmzMEjjzwCAJg4cSISExMxd+5c/Pa3v0Vubm5Ya466MJKRkYGMjIxej5s1axYMBgP27duH6dOnAwD27t0Lg8GA2bNnBz1HqVRi2rRp+Oabb/zaT548iaKioksvfgCFsx/uuOOOgB+8N9xwA+644w7cfffdl178AApnPwDfBpFTp07h888/j6lfyEqlEuXl5di6dSu+973v+dq3bt2K7373u0HPmTVrFj788EO/tk8//RRTp05FfHx8WOsNl/70A9A5InLPPffgrbfeiti8eDiF2g9arRZff/21X9vatWvx2Wef4d1330VJSUnYaw6H/nw/zJkzB++88w7MZjOSkpIAdP5eiIuLQ35+fkTqHkj96QOr1RowVSeXywF8O3oaVhFZJhsmN954o5g4caKoqKgQFRUVYsKECQGXco4ePVps3rzZ9/nmzZtFfHy8eOWVV8SpU6fEn//8ZyGXy8WOHTsiXf6A6U8/XCzWr6YRIvR+cLlc4uabbxb5+fni8OHDoqGhwffhcDikeAsh67p8b926daKyslI8+OCDIjExUVRXVwshhFi5cqW44447fMd3Xdr70EMPicrKSrFu3bpBdWlvX/vhb3/7m1AoFOLFF1/0+7p3dHRI9RYGRKj9cLHBcjVNqP1gMplEfn6++P73vy+OHTsmtm3bJkaOHCmWLVsm1Vu4ZKH2wfr164VCoRBr164VZ86cETt37hRTp04V06dPj0i9MR1G9Hq9+OEPfyiSk5NFcnKy+OEPfyja29v9jgEg1q9f79e2bt06MWLECKFWq8WkSZPE+++/H7miw6C//XChwRBGQu2HqqoqASDox+effx7x+vvrxRdfFEVFRUKpVIrLLrtMbNu2zffYnXfeKa688kq/47/44gsxZcoUoVQqRXFxsXjppZciXHF4hNIPV155ZdCv+5133hn5wgdYqN8PFxosYUSI0Pvh+PHj4rrrrhMajUbk5+eLFStWCKvVGuGqB1aoffD888+LsWPHCo1GI3Jzc8UPf/hDUVtbG5FaZUJEYvyFiIiIKLiou5qGiIiIhhaGESIiIpIUwwgRERFJimGEiIiIJMUwQkRERJJiGCEiIiJJMYwQERGRpBhGiIiISFIMI0RERCQphhEiIiKSFMMIERERSer/A1j3GzO2phyMAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "edf = makeEDF(residual)\n", "plotEDF(edf,points_at_jump=False,confidence_band=True)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predictions = lr.predict(X_test).reshape(-1,1)\n", "plt.scatter(predictions,Y_test)\n", "plt.scatter(Y_test,Y_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "predictions = lr.predict(X_test).reshape(-1,1)\n", "\n", "from sklearn.ensemble import RandomForestRegressor\n", "lr_calib = RandomForestRegressor(min_samples_leaf=100)\n", "lr_calib.fit(predictions,Y_test)\n", "\n", "calibration_residual = (lr_calib.predict(predictions)-predictions)\n", "np.sqrt(np.mean(calibration_residual**2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "plt.scatter(predictions,Y_test,alpha=0.1)\n", "plt.scatter(predictions,lr_calib.predict(predictions),alpha=0.1)\n", "plt.scatter(predictions,predictions)\n", "plt.xlim(0,1)\n", "plt.ylim(0,1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "predictions_calibrated = lr_calib.predict(lr.predict(X_test).reshape(-1,1))\n", "plt.scatter(predictions_calibrated,Y_test,alpha=0.1)\n", "plt.scatter(predictions_calibrated,predictions_calibrated)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see in the above plot that the true values is pretty much centered around the predicted values. However for a true test, one would now need to check this on a certain validation set, we will look into this later." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.mean((lr_calib.predict(lr.predict(X_test).reshape(-1,1))-Y_test)**2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.mean(((lr.predict(X_test).reshape(-1,1))-Y_test)**2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What about the mean square error?\n", "$$\n", " \\mathbb{E}[|Y-f(X)|^2]^{1/2} = \\left ( \\mathbb{E}[|\\mathbb{E}[Y \\mid f(X)]-f(X)|^2+|Y-\\mathbb{E}[Y \\mid f(X)]|^2] \\right )^{1/2}\n", "$$\n", "\n", "The first term is the calibration term (can be thought of as bias) and the second term is just the variance at the predicted value. For this particular problem, most of the contribution comes from the calibration error" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.sqrt(np.mean((Y_test-predictions)**2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Measuring how good a model is (explained variance)\n", "\n", "The **coefficient of determination** or **explained variance** is defined as follows:\n", "\n", "$$R^2 = 1- \\frac{MSE}{Var(y)}$$\n", "\n", "MSE - Mean Squared Error and is the sum of squares of the residual." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make it fit the exposition we did in the chapter about regression and finding confidence bounds for $R^2$ or FVU explicitly we need to figure out the max and min of the values. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from Utils import bennett_epsilon" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "n = len(Y_test)\n", "alpha=0.05\n", "import scipy.optimize as so\n", "h = lambda u: (1+u)*np.log(1+u)-u\n", "sigma2 = np.var(np.power(Y_test-np.mean(Y_test),2))\n", "f = lambda epsilon: np.exp(-n*sigma2*h(epsilon/sigma2))-alpha/2\n", "ans = so.fsolve(f,0.001)\n", "epsilon2 = np.abs(ans[0])\n", "print(epsilon2,f(epsilon2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "X = np.power(residual,2)\n", "sigma2 = np.var(X)\n", "b = np.max(X)-np.min(X)\n", "f = lambda epsilon: np.exp(-n*sigma2/(b**2)*h(b*epsilon/sigma2))-alpha/2\n", "ans = so.fsolve(f,0.001)\n", "epsilon1 = np.abs(ans[0])\n", "print(epsilon1,f(epsilon1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "lowerBound = (np.mean(np.power(residual,2))-epsilon1)/(np.var(Y_test,ddof=1)+epsilon2)\n", "upperBound = (np.mean(np.power(residual,2))+epsilon1)/(np.var(Y_test,ddof=1)-epsilon2)\n", "print(lowerBound,upperBound)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tells us the confidence interval for the FVU using Bennett's inequality. This is not too bad, and we could get smaller by having a bigger test set.\n", "\n", "Key takeaway here is that, for measuring regression performance we often need more testing data than we need for the classification problems. This is essentially due to the metrics being used." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More interesting example\n", "\n", "In our derivation, we might as well have considered multiple features, like multiple linear regression. The extension is the same, now $\\beta_0$ is still a number, but $\\beta_1,x$ are vectors in $\\mathbb{R}^d$ where $d$ is the number of features, $f(x) = \\beta_0 + \\beta_1 \\cdot x$. With this simple extension we can consider a more interesting example. Consider a dataset of 8x8 bitmaps representing handwritten digits, this can look like follows" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAFKCAYAAABB4xbCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAdnUlEQVR4nO3dYWhV9xnH8ecazbVNk2uHbUxolma+aCUNZo3UGhq0xQVCHZG6TjsQHbbo7IsGLczgC2MZi6XQZlBt1ZZpYEUpLfpCQVJqpEUcLCQirbShaZZbTCrJNHGrjVs8ezEmRqP+//c+557nXr8fOLCkT07+9/5yTn+7Sf83FgRBIAAAAAqmRb0AAACQOygWAABADcUCAACooVgAAAA1FAsAAKCGYgEAANRQLAAAgJrpmf6GV69elXPnzklhYaHEYrFMf/ucFASBXLp0SUpLS2XatNS6IrmEg2xsIhe7yMYu52yCDEsmk4GIcIRwJJNJcjF6kI3Ng1zsHmRj97hTNhl/xaKwsDCU8y5fvtx5tqWlxXm2s7NT/bwXL150PqePdJ7bsHLxceTIEefZRCLhPPvHP/7Rae7o0aPO5/SV7dk89dRTzrMffPCB8+yZM2ec5p599lnnc/qwmEtTU5Pz7Pbt251nv/32W+fZJUuWOM2FdS8TsZmND5971DvvvOM8+5vf/CaV5ai60/ObUrHYtWuXvPHGGzI4OCiVlZXS1tYmdXV1Tl8b1stSM2bMcJ71+aG75557nGejfsntvffek7fffttULj4KCgqcZ++77z7nWZ+fjbBkezbTp7vfKoqKipxnfTIPQywWS/l+FlYu8Xjcedbnufa571n4mcv2a8ZnDffee2+IK9F3p8fm/QusgwcPSlNTk2zdulW6u7ulrq5OGhoaZGBgIOVFQkdzczO5GEU2Nn300Ufcz4zimsle3sXizTfflHXr1smLL74o8+bNk7a2NikrK/N6KQfhWL16NbkYRTY27dy5k/uZUVwz2cvrVyFXrlyRrq4u2bJly6TP19fXy8mTJ6f8mvHxcRkfH7/28djYWArLhItnnnlm0sfkYgfZ2NTT0yNbt26d9LlbZUMumcU1k728XrEYHh6WiYkJKS4unvT54uJiGRoamvJrWltbJZFIXDvKyspSXy1u68EHH5z0MbnYQTY2+dzPyCWzuGayV0r/kfCNf7gRBMEt/5ijublZRkdHrx3JZDKVbwkH5GIX2djlmg25ZBbXTPby+lXI7NmzJS8v76bWeP78+Zta///F43Gvv3JG6r7//vtJH5OLHWRjk8/9jFwyi2sme3m9YpGfny81NTXS0dEx6fMdHR1SW1urujD4O378+KSPycUOsrGpurqa+5lRXDPZy3sfi02bNsnq1atlwYIFsmjRItmzZ48MDAzIhg0bwlgfPLS3t0ttbS25GEQ2Nr388suyfv167mcGcc1kL+9isXLlShkZGZHXXntNBgcH5bHHHpOjR49KeXl5GOtztmPHDufZn/3sZ86z999/v/PsP/7xD6e5X//6187n/PDDD51nW1tbzeXiw2cXv8WLFzvPPv30005zhw8fdj6nL4vZVFdXO8/e+P8eb2d0dNR59uGHH3aeDcOKFSvk8uXLGcnG9R71/PPPO59z/fr1zrO7d+92nq2pqXGa++STT5zP6cviNeNj7dq1zrM9PT2hrSMKKe28uXHjRtm4caP2WpCml156STZv3hz1MjAFsrGL+5lNXDPZi7dNBwAAaigWAABADcUCAACooVgAAAA1FAsAAKCGYgEAANRQLAAAgBqKBQAAUJPSBlmZ5LoDnM9umnPnznWe7evrc5698T0HbsX1MYn47bxpkc/ujkuWLAllDbm2q52W5cuXO8+ePn3aefbQoUPOs9u2bXOezXZ79uxxmnv99dedz/m3v/3NedbnXhbmjprZbNasWc6zPjtvtrW1Oc+GsVttf3+/6vl4xQIAAKihWAAAADUUCwAAoIZiAQAA1FAsAACAGooFAABQQ7EAAABqKBYAAEANxQIAAKihWAAAADXmt/S+//77nea6urqcz+mzta0PnzVku6amJqe5lpYW53MmEonUFnMHnZ2doZw32/lsI+yz5a/PeQ8fPuw8m+1c7zs+b0/gM+uzTbfrfffChQvO58wFPtt0+2y9vW/fPudZ1+vr4sWLzuf0uU+74BULAACghmIBAADUUCwAAIAaigUAAFBDsQAAAGooFgAAQA3FAgAAqKFYAAAANRQLAACghmIBAADU5MyW3j7b1YblbtoG13VbWZ+tasN6XmbNmhXKea1yfbyu27KLiCxfvjyltdyJzxbJdwuftxz4yU9+4jzb0dGhPvuLX/zC+ZyW73uNjY1Oc2+99ZbzOffv35/qcm7rlVdecZr77W9/G8r3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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import ssl\n", "ssl._create_default_https_context = ssl._create_unverified_context\n", "\n", "import matplotlib.pyplot as plt\n", "from sklearn.datasets import load_digits\n", "digits = load_digits()\n", "fig, ax = plt.subplots(2,5)\n", "plt.gray()\n", "for i in range(10):\n", " from math import floor\n", " row = floor(i/5)\n", " column = i % 5\n", " ax[row,column].imshow(digits['data'][i,:].reshape(8,8))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets first build a classifier that distinguishes the top row from the bottom row, so let us construct the target for this problem" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "target = (digits['target'] >= 5)*1" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "X_train,X_test,Y_train,Y_test = train_test_split(digits['data'],target)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
StandardScaler()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "StandardScaler()" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.preprocessing import StandardScaler\n", "sc = StandardScaler()\n", "sc.fit(X_train)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LogisticRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression()" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "logReg = LogisticRegression()\n", "logReg.fit(sc.transform(X_train),Y_train)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9138827023014106" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "logReg.score(sc.transform(X_train),Y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can with the same methods as before construct confidence bands around the residual ECDF using the DKW inequality:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from Utils import makeEDF,plotEDF\n", "edf = makeEDF(logReg.predict(X_test)-Y_test)\n", "plotEDF(edf)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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AACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAqhGFkdWrV2v27NmKxWKqq6vTpk2bvrB9KpXSypUrNWvWLEWjUZ1//vl68cUXR1QwAAAYX0KFrrBu3TotW7ZMq1ev1sKFC/XMM89o8eLF2rVrl2bOnJlznZtuukmHDh3SCy+8oK985Ss6fPiwstnsaRcPAABKn2OMMYWsMH/+fF1++eVas2bNwLI5c+boxhtvVFNT05D277zzjr7zne9oz549qq6uHlGRHR0disfjSiQSqqqqGtE2AADA2Mr3/F3QxzTpdFrbtm1TQ0PDoOUNDQ3asmVLznXefvttzZs3T0888YSmT5+uCy+8UD/60Y/U09MzbD+pVEodHR2DXgAAYHwq6GOa9vZ2+b6vmpqaQctramrU1taWc509e/bogw8+UCwW01tvvaX29nbdc889Onr06LD3jTQ1NenRRx8tpDQAAFCiRnQDq+M4g/5tjBmyrF8QBHIcR2vXrtUVV1yh6667TqtWrdLLL7887NWRFStWKJFIDLxaWlpGUiYAACgBBV0ZmTx5sjzPG3IV5PDhw0OulvSbOnWqpk+frng8PrBszpw5MsZo//79uuCCC4asE41GFY1GCykNAACUqIKujEQiEdXV1am5uXnQ8ubmZtXX1+dcZ+HChTp48KA6OzsHln388cdyXVczZswYQckAAGA8KfhjmuXLl+v555/Xiy++qN27d+v+++/Xvn371NjYKKnvI5Zbb711oP3NN9+sSZMm6Y477tCuXbv0/vvv64EHHtD3vvc9lZWVFW8kAACgJBX8nJElS5boyJEjeuyxx9Ta2qq5c+dq/fr1mjVrliSptbVV+/btG2g/YcIENTc362//9m81b948TZo0STfddJMef/zx4o0CAACUrIKfM2IDzxkBAKD0jMpzRgAAAIqNMAIAAKwijAAAAKsIIwAAwCrCCAAAsIow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M3/+fNPc3Gz27t1rfve735nNmzePYdWlp9B53rRpk3Fd1/ziF78we/bsMZs2bTKXXHKJufHGG8e48tKyfv16s3LlSvPP//zPRpJ56623vrC9jXPhuA4jV1xxhWlsbBy07KKLLjIPPfRQzvYPPvigueiiiwYtu/vuu803vvGNUatxPCh0nnO5+OKLzaOPPlrs0sadkc71kiVLzN/93d+ZRx55hDCSh0Ln+V//9V9NPB43R44cGYvyxo1C5/nJJ58055133qBlv/zlL82MGTNGrcbxJp8wYuNcOG4/pkmn09q2bZsaGhoGLW9oaNCWLVtyrvPhhx8OaX/ttddq69atymQyo1ZrKRvJPJ8sCAIlk0lVV1ePRonjxkjn+qWXXtKnn36qRx55ZLRLHBdGMs9vv/225s2bpyeeeELTp0/XhRdeqB/96Efq6ekZi5JL0kjmub6+Xvv379f69etljNGhQ4f0xhtv6Prrrx+Lks8YNs6FJfGH8kaivb1dvu+rpqZm0PKamhq1tbXlXKetrS1n+2w2q/b2dk2dOnXU6i1VI5nnk/385z9XV1eXbrrpptEocdwYyVx/8skneuihh7Rp0yaFQuP2172oRjLPe/bs0QcffKBYLKa33npL7e3tuueee3T06FHuGxnGSOa5vr5ea9eu1ZIlS9Tb26tsNqtvfetb+tWvfjUWJZ8xbJwLx+2VkX6O4wz6tzFmyLJTtc+1HIMVOs/9XnvtNf3kJz/RunXrdM4554xWeeNKvnPt+75uvvlmPfroo7rwwgvHqrxxo5BjOggCOY6jtWvX6oorrtB1112nVatW6eWXX+bqyCkUMs+7du3Svffeq4cffljbtm3TO++8o71796qxsXEsSj2jjPW5cNz+r9LkyZPled6QhH348OEhia/flClTcrYPhUKaNGnSqNVaykYyz/3WrVunO++8U6+//rquvvrq0SxzXCh0rpPJpLZu3art27frBz/4gaS+k6YxRqFQSBs2bNBVV101JrWXkpEc01OnTtX06dMH/an0OXPmyBij/fv364ILLhjVmkvRSOa5qalJCxcu1AMPPCBJ+vrXv66KigotWrRIjz/+OFevi8TGuXDcXhmJRCKqq6tTc3PzoOXNzc2qr6/Puc6CBQuGtN+wYYPmzZuncDg8arWWspHMs9R3ReT222/Xq6++yue9eSp0rquqqvTRRx9px44dA6/GxkZ99atf1Y4dOzR//vyxKr2kjOSYXrhwoQ4ePKjOzs6BZR9//LFc19WMGTNGtd5SNZJ57u7ulusOPm15nifpf/7PHafPyrlw1G6N/RLo/9rYCy+8YHbt2mWWLVtmKioqzGeffWaMMeahhx4yt9xyy0D7/q8z3X///WbXrl3mhRde4Ku9eSh0nl999VUTCoXMb37zG9Pa2jrwOnbsmK0hlIxC5/pkfJsmP4XOczKZNDNmzDB/8zd/Y3bu3Gk2btxoLrjgArN06VJbQygJhc7zSy+9ZEKhkFm9erX59NNPzQcffGDmzZtnrrjiCltDKAnJZNJs377dbN++3Ugyq1atMtu3bx/4CvWX4Vw4rsOIMcb85je/MbNmzTKRSMRcfvnlZuPGjQM/u+2228yVV145qP17771n/uIv/sJEIhFz7rnnmjVr1oxxxaWpkHm+8sorjaQhr9tuu23sCy9BhR7TJyKM5K/Qed69e7e5+uqrTVlZmZkxY4ZZvny56e7uHuOqS0+h8/zLX/7SXHzxxaasrMxMnTrVfPe73zX79+8f46pLy7//+79/4Xvul+Fc6BjDtS0AAGDPuL1nBAAAlAbCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKv+P0VopzviLARKAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(logReg.predict_proba(X_test)[:,1],Y_test,alpha=0.1)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6317027478996654" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions = logReg.predict_proba(X_test)[:,1].reshape(-1,1)\n", "\n", "from sklearn.ensemble import RandomForestRegressor\n", "lr_calib = RandomForestRegressor(min_samples_leaf=30)\n", "lr_calib.fit(predictions,Y_test)\n", "\n", "calibration_residual = (lr_calib.predict(predictions)-predictions)\n", "np.sqrt(np.mean(calibration_residual**2))" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.scatter(predictions,Y_test,alpha=0.1)\n", "plt.scatter(predictions,lr_calib.predict(predictions),alpha=0.1)\n", "plt.scatter(predictions,predictions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here you see its not very well calibrated. Simply because we are not minimizing the $L^2$ norm, we are minimizing the cross entropy loss." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.sqrt(np.mean((Y_test-predictions)**2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again we see that the root mean square error (RMS) is roughly of the same size as the calibration error." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How to calibrate" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
RandomForestRegressor(min_samples_leaf=30)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RandomForestRegressor(min_samples_leaf=30)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.model_selection import train_test_split\n", "X_tt,X_valid,Y_tt,Y_valid = train_test_split(digits['data'],target,random_state=0) # First split\n", "X_train,X_test,Y_train,Y_test = train_test_split(X_tt,Y_tt,random_state=0) # Second split\n", "\n", "from sklearn.preprocessing import StandardScaler\n", "sc = StandardScaler()\n", "sc.fit(X_train)\n", "\n", "from sklearn.linear_model import LogisticRegression\n", "logReg = LogisticRegression()\n", "logReg.fit(sc.transform(X_train),Y_train)\n", "\n", "predictions = logReg.predict_proba(X_test)[:,1].reshape(-1,1)\n", "\n", "from sklearn.ensemble import RandomForestRegressor\n", "lr_calib = RandomForestRegressor(min_samples_leaf=30)\n", "lr_calib.fit(predictions,Y_test)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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AatlWSP+b4wZNWxQEASyLEuPP/64LrvsMn34wx/WAw88oEcffXTcoyMbN25UJpMZeh08eHAyZQIAgLNAXUdG2tra5DjOqKMg3d3do46WDJo3b54WLFigdDo9NGz58uUyxujQoUNatmzZqGlisZhisVg9pQEAgLNUXUdGotGoVq5cqW3bto0Yvm3bNq1Zs2bMadauXasjR44on88PDXvppZdk27YWLlw4iZIBAMC5pO7TNHfeead+8IMf6JFHHtHevXt1xx136MCBA9qwYYOk2imWa6+9dmj8T37yk2ptbdUNN9ygPXv26JlnntHnP/95fepTn1IikZi6JQEAAGelup8zsn79evX29uq+++5TZ2enVqxYoa1bt2rx4sWSpM7OTh04cGBo/FQqpW3btumv//qvtWrVKrW2turqq6/W/fffP3VLAQAAzlp1P2ckDDxnBACAs8+0PGcEAABgqhFGAABAqAgjAAAgVIQRAAAQKsIIAAAIFWEEAACEijACAABCRRgBAAChIowAAIBQEUYAAECoCCMAACBUhBEAABAqwggAAAgVYQQAAISKMAIAAEJFGAEAAKEijAAAgFARRgAAQKgIIwAAIFSEEQAAECrCCAAACBVhBAAAhIowAgAAQkUYAQAAoSKMAACAUBFGAABAqAgjAAAgVIQRAAAQKsIIAAAIFWEEAACEijACAABCRRgBAAChIowAAIBQEUYAAECoCCMAACBUhBEAABAqwggAAAgVYQQAAISKMAIAAEJFGAEAAKEijAAAgFARRgAAQKgIIwAAIFSEEQAAECrCCAAACBVhBAAAhIowAgAAQkUYAQAAoSKMAACAUBFGAABAqAgjAAAgVIQRAAAQKsIIAAAIFWEEAACEijACAABCRRgBAAChmlQY2bx5s5YuXap4PK6VK1dq+/btE5pux44dcl1X73rXuyYzWwAAcA6qO4xs2bJFt99+u+6++2698MILuuKKK3TllVfqwIEDJ50uk8no2muv1fvf//5JFwsAAM49ljHG1DPB5ZdfrksvvVQPPfTQ0LDly5frqquu0qZNm8ad7hOf+ISWLVsmx3H0T//0T3rxxRcnPM9sNqt0Oq1MJqOmpqZ6ygUAACGZ6Pd3XUdGKpWKdu3apXXr1o0Yvm7dOu3cuXPc6X70ox/p1Vdf1T333DOh+ZTLZWWz2REvAABwbqorjPT0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BQAA566z+sgIAAA4+xFGAABAqAgjAAAgVIQRAAAQqjM+jGzevFlLly5VPB7XypUrtX379pOO//TTT2vlypWKx+M677zz9PDDD89Qpee+evri5z//uT74wQ9q9uzZampq0urVq/XrX/96Bqs9t9W7XQzasWOHXNfVu971rukt8C2i3n4ol8u6++67tXjxYsViMZ1//vl65JFHZqjac1u9ffH444/r4osvVjKZ1Lx583TDDTeot7d3hqrFKOYM9o//+I8mEomY73//+2bPnj3ms5/9rGloaDCvv/76mOPv27fPJJNJ89nPftbs2bPHfP/73zeRSMT87Gc/m+HKzz319sVnP/tZ85WvfMX853/+p3nppZfMxo0bTSQSMb/73e9muPJzT719Mai/v9+cd955Zt26debiiy+emWLPYZPph4997GPm8ssvN9u2bTP79+83v/nNb8yOHTtmsOpzU719sX37dmPbtvnmN79p9u3bZ7Zv324uuugic9VVV81w5Rh0RoeRyy67zGzYsGHEsHe84x3mrrvuGnP8L3zhC+Yd73jHiGG33HKLefe73z1tNb5V1NsXY7nwwgvNvffeO9WlveVMti/Wr19v/vZv/9bcc889hJEpUG8//Ou//qtJp9Omt7d3Jsp7S6m3L772ta+Z8847b8Swb33rW2bhwoXTViNO7ow9TVOpVLRr1y6tW7duxPB169Zp586dY07z3HPPjRr/Qx/6kJ5//nl5njdttZ7rJtMXbxYEgXK5nFpaWqajxLeMyfbFj370I7366qu65557prvEt4TJ9MMvf/lLrVq1Sl/96le1YMECXXDBBfrc5z6nYrE4EyWfsybTF2vWrNGhQ4e0detWGWN09OhR/exnP9NHPvKRmSgZYzhjfyivp6dHvu+rvb19xPD29nZ1dXWNOU1XV9eY41erVfX09GjevHnTVu+5bDJ98Wbf+MY3NDAwoKuvvno6SnzLmExfvPzyy7rrrru0fft2ue4Zu8mfVSbTD/v27dOzzz6reDyuX/ziF+rp6dGtt96qvr4+rhs5DZPpizVr1ujxxx/X+vXrVSqVVK1W9bGPfUzf/va3Z6JkjOGMPTIyyLKsEf83xowadqrxxxqO+tXbF4OeeOIJffnLX9aWLVs0Z86c6SrvLWWifeH7vj75yU/q3nvv1QUXXDBT5b1l1LNNBEEgy7L0+OOP67LLLtOHP/xhPfDAA3r00Uc5OjIF6umLPXv26LbbbtOXvvQl7dq1S7/61a+0f/9+bdiwYSZKxRjO2D+T2tra5DjOqGTb3d09KgEPmjt37pjju66r1tbWaav1XDeZvhi0ZcsW3XjjjfrpT3+qD3zgA9NZ5ltCvX2Ry+X0/PPP64UXXtBnPvMZSbUvRWOMXNfVk08+qfe9730zUvu5ZDLbxLx587RgwYIRP6e+fPlyGWN06NAhLVu2bFprPldNpi82bdqktWvX6vOf/7wk6Z3vfKcaGhp0xRVX6P777+coegjO2CMj0WhUK1eu1LZt20YM37Ztm9asWTPmNKtXrx41/pNPPqlVq1YpEolMW63nusn0hVQ7InL99dfrJz/5Cedip0i9fdHU1KQ//OEPevHFF4deGzZs0Nvf/na9+OKLuvzyy2eq9HPKZLaJtWvX6siRI8rn80PDXnrpJdm2rYULF05rveeyyfRFoVCQbY/8+nMcR9IbR9Mxw8K6cnYiBm/X+uEPf2j27Nljbr/9dtPQ0GBee+01Y4wxd911l7nmmmuGxh+8tfeOO+4we/bsMT/84Q+5tXeK1NsXP/nJT4zruuY73/mO6ezsHHr19/eHtQjnjHr74s24m2Zq1NsPuVzOLFy40PzFX/yF2b17t3n66afNsmXLzE033RTWIpwz6u2LH/3oR8Z1XbN582bz6quvmmeffdasWrXKXHbZZWEtwlveGR1GjDHmO9/5jlm8eLGJRqPm0ksvNU8//fTQe9ddd515z3veM2L8p556ylxyySUmGo2aJUuWmIceemiGKz531dMX73nPe4ykUa/rrrtu5gs/B9W7XQxHGJk69fbD3r17zQc+8AGTSCTMwoULzZ133mkKhcIMV31uqrcvvvWtb5kLL7zQJBIJM2/ePPOXf/mX5tChQzNcNQZZxnBMCgAAhOeMvWYEAAC8NRBGAABAqAgjAAAgVIQRAAAQKsIIAAAIFWEEAACEijACAABCRRgBAAChIowAAIBQEUYAAECoCCMAACBUhBEAABCq/x84FF6LcT92UAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(lr_calib.predict(logReg.predict_proba(X_valid)[:,1:2]),Y_valid,alpha=0.1)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
RandomForestRegressor(min_samples_leaf=30)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RandomForestRegressor(min_samples_leaf=30)" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions_valid = lr_calib.predict(logReg.predict_proba(X_valid)[:,1:2]).reshape(-1,1)\n", "\n", "from sklearn.ensemble import RandomForestRegressor\n", "lr_calib_valid = RandomForestRegressor(min_samples_leaf=30)\n", "lr_calib_valid.fit(predictions_valid,Y_valid)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5600686495900018" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "calibration_residual = (lr_calib_valid.predict(predictions_valid)-predictions_valid)\n", "np.sqrt(np.mean(calibration_residual**2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is a better calibration, lets check the curve" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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PIHP5+OSSy4Zz25FZBzuftvdJV1ORKTUik5GduzYwWc/+1m++MUv8txzz3HFFVdw9dVXc+TIkTHXi0ajfPjDH+YP//APxx2siBSvvqKehlDDmMs0hBo03oiIlI3huq5bzAqXXXYZa9as4c477xyctnLlSq655hpuvfXWUdd73/vex/nnn49lWfziF7/g+eefL3ifsViMmpoaotEo1dXVxYQrIqeM1r1X44yIyGQp9Pe7qJKRTCbDs88+y6ZNm4ZN37RpE08++eSo691zzz28/vrrfPnLXy5oP+l0mlgsNuwlIhPz8OaHeeTPH+HcmnOpCdRwbs25PPLnjygREZGyK2oE1q6uLmzbprm5edj05uZm2tvb867z6quvsm3bNh577DF8vsJ2d+utt3LLLbcUE5qIFKC+op5fXPOLcochIjLMuBqwGoYx7G/XdUdMA7Btmw984APccsstrFixouDt33TTTUSj0cFXa2vreMIUERGRGaCokpHGxkYsyxpRCtLR0TGitASgr6+PPXv28Nxzz/GpT30KAMdxcF0Xn8/HQw89xFvf+tYR6wWDQYLBYDGhicxqmVyGHa/soDXWSkt1C5tXbCbgC5Q7LBGRkigqGQkEAqxdu5Zdu3bxp3/6p4PTd+3axZ/8yZ+MWL66upoXX3xx2LQ77riDX//61zzwwAMsX758nGGLzB3b92zn3v334rjO4LRv7fkWW1ZtYeu6rWWMTESkNIp+au/WrVu59tprWbduHRs2bOAHP/gBR44c4YYbbgC8KpZjx47x4x//GNM0Wb169bD1582bRygUGjFdRIazHZttj23jwUMPjpjnuA737LsHQAmJiMx4RScjmzdv5uTJk3zlK1+hra2N1atXs3PnTpYuXQpAW1vbWcccEZGx7T68m6/95mt0pjrHXO7e/ffyqUs+pSobEZnRih5npBw0zojMFZlchv/1m//FL17/RcHrfOHSL3DtqmsnLygRkXEq9Pe76JIRESm97v5u3v1/3000Gy163dZYkb3NTvwOcgnwRaD5gqL3JyJSakpGRMqou7+bKx+4Egfn7AuPoqW6pbAF216E3+2Ek6+DnQIrBA3nwgXvgAUXjXv/IiITpWREpExGG569GKZhsnnF5rMv2PYi/PYfINkN1YsgWAPpKLS/BNHjcNnHlJCISNmMa9AzEZmYUiQiAFtWbSms8erv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vPIKpmmyePHiSY13NhvPtUgkEpjm8J8/y7KA06XpMsXK1XK2EAPdte666y53//797mc/+1m3oqLCPXTokOu6rrtt2zb32muvHVx+oGvv5z73OXf//v3uXXfdpa69JVLstfjZz37m+nw+97vf/a7b1tY2+Ort7S3XIcwaxV6LM6k3TWkUex36+vrcxYsXu3/+53/u7tu3z33kkUfc888/3/3Yxz5WrkOYNYq9Fvfcc4/r8/ncO+64w3399dfdxx9/3F23bp27fv36ch3CnDetkxHXdd3vfve77tKlS91AIOCuWbPGfeSRRwbnbdmyxf2DP/iDYcs//PDD7pve9CY3EAi4y5Ytc++8884pjnj2KuZa/MEf/IELjHht2bJl6gOfhYr9XAylZKR0ir0OL7/8snvVVVe54XDYXbx4sbt161Y3kUhMcdSzU7HX4tvf/ra7atUqNxwOuwsWLHA/+MEPukePHp3iqGWA4boqkxIREZHymbZtRkRERGRuUDIiIiIiZaVkRERERMpKyYiIiIiUlZIRERERKSslIyIiIlJWSkZERESkrJSMiIiISFkpGREREZGyUjIiIiIiZaVkRERERMpKyYiIiIiU1f8fFEpRV/9gT9IAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.scatter(predictions_valid,Y_valid,alpha=0.1)\n", "plt.scatter(predictions_valid,lr_calib_valid.predict(predictions_valid),alpha=0.1)\n", "plt.scatter(predictions_valid,predictions_valid)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8511111111111112" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "logReg.score(X_valid,Y_valid)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8866666666666667" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(Y_valid == (lr_calib_valid.predict(predictions_valid) >= 0.5)*1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also see on the graph that it is much more calibrated. \n", "\n", "We can also check the MSE" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.sqrt(np.mean((Y_valid-predictions_valid)**2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which is an improvement from before." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple classes\n", "\n", "The above example naturally leads us to wanting to model multiple outputs. That is, instead of the Bernoulli we could consider DeMoivre$(p_1,\\ldots,p_m)$ for $m$ classes. What we want is the following\n", "\n", "$$\n", " \\sum_{i=1}^m p_i = 1\n", "$$\n", "\n", "$Y_i \\mid X_i \\sim \\text{DeMoivre}(\\theta(X_i))$, where $\\theta \\in [0,1]^m$. But how do we find a good model for $\\theta$?\n", "\n", "Let us model each log-ratio as a linear function\n", "$$\n", " \\log\\left ( \\frac{P(Y = i \\mid X)}{P(Y = m \\mid X)}\\right ) = w_{i} \\cdot x, \\quad \\forall i=1,\\ldots,m-1\n", "$$\n", "now fix $i$ and consider" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " P(Y = i \\mid X) = e^{w_i \\cdot x} P(Y = m \\mid X), \\quad \\forall i=1,\\ldots, m-1\n", "$$\n", "Now\n", "$$\n", " \\sum P(Y = i \\mid X) = 1\n", "$$\n", "Hence\n", "$$\n", " P(Y = m \\mid X) = 1-\\sum_{i=1}^{m-1} P(Y = i \\mid X) = 1-\\sum_{i=1}^{m-1} e^{w_i \\cdot x} P(Y = m \\mid X)\n", "$$\n", "Hence\n", "$$\n", " P(Y = m \\mid X) = \\frac{1}{1+\\sum_{i=1}^{m-1} e^{w_i \\cdot x}}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plugging back in gives\n", "$$\n", " P(Y = i \\mid X) = \\frac{e^{w_i \\cdot x}}{1+\\sum_{j=1}^{m-1} e^{w_j \\cdot k}}\n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "X_train,X_test,Y_train,Y_test = train_test_split(digits['data'],digits.target)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "sc = StandardScaler()\n", "sc.fit(X_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", "logReg = LogisticRegression()\n", "logReg.fit(sc.transform(X_train),Y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "logReg.score(sc.transform(X_train),Y_train)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.13" }, "lx_course_instance": "2023", "lx_course_name": "Introduction to Data Science", "lx_course_number": "1MS041" }, "nbformat": 4, "nbformat_minor": 4 }