Skip to content

Instantly share code, notes, and snippets.

@cauemello
Created June 8, 2016 20:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cauemello/d02a22cf4f8b5df02380bd9c09a86a7e to your computer and use it in GitHub Desktop.
Save cauemello/d02a22cf4f8b5df02380bd9c09a86a7e to your computer and use it in GitHub Desktop.
Boston House Prices
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Machine-Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Objetivo\n",
"\n",
"O objetivo deste trabalho é avaliar a base de dados *\"Boston House Prices\"* utilizando o algoritmo de seleção de variáveis LASSO e comparar o resultado com o modelo tradicional de regressão linear."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Carga inicial\n",
"\n",
"Será utilizada a biblioteca [scikit-learn](http://scikit-learn.org/) para o trabalho.\n",
"\n",
"A partir da biblioteca, é possível carregar diretamente os dados que serão utilizados. Esses dados serão carregados em um DataFrame para facilitar a visualização e a manipulação."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Boston House Prices dataset\n",
"\n",
"Notes\n",
"------\n",
"Data Set Characteristics: \n",
"\n",
" :Number of Instances: 506 \n",
"\n",
" :Number of Attributes: 13 numeric/categorical predictive\n",
" \n",
" :Median Value (attribute 14) is usually the target\n",
"\n",
" :Attribute Information (in order):\n",
" - CRIM per capita crime rate by town\n",
" - ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n",
" - INDUS proportion of non-retail business acres per town\n",
" - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
" - NOX nitric oxides concentration (parts per 10 million)\n",
" - RM average number of rooms per dwelling\n",
" - AGE proportion of owner-occupied units built prior to 1940\n",
" - DIS weighted distances to five Boston employment centres\n",
" - RAD index of accessibility to radial highways\n",
" - TAX full-value property-tax rate per $10,000\n",
" - PTRATIO pupil-teacher ratio by town\n",
" - B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n",
" - LSTAT % lower status of the population\n",
" - MEDV Median value of owner-occupied homes in $1000's\n",
"\n",
" :Missing Attribute Values: None\n",
"\n",
" :Creator: Harrison, D. and Rubinfeld, D.L.\n",
"\n",
"This is a copy of UCI ML housing dataset.\n",
"http://archive.ics.uci.edu/ml/datasets/Housing\n",
"\n",
"\n",
"This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n",
"\n",
"The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n",
"prices and the demand for clean air', J. Environ. Economics & Management,\n",
"vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n",
"...', Wiley, 1980. N.B. Various transformations are used in the table on\n",
"pages 244-261 of the latter.\n",
"\n",
"The Boston house-price data has been used in many machine learning papers that address regression\n",
"problems. \n",
" \n",
"**References**\n",
"\n",
" - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n",
" - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n",
" - many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)\n",
"\n"
]
}
],
"source": [
"from sklearn.datasets import load_boston\n",
"\n",
"boston = load_boston()\n",
"print(boston.DESCR)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CRIM</th>\n",
" <th>ZN</th>\n",
" <th>INDUS</th>\n",
" <th>CHAS</th>\n",
" <th>NOX</th>\n",
" <th>RM</th>\n",
" <th>AGE</th>\n",
" <th>DIS</th>\n",
" <th>RAD</th>\n",
" <th>TAX</th>\n",
" <th>PTRATIO</th>\n",
" <th>B</th>\n",
" <th>LSTAT</th>\n",
" <th>Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.00632</td>\n",
" <td>18</td>\n",
" <td>2.31</td>\n",
" <td>0</td>\n",
" <td>0.538</td>\n",
" <td>6.58</td>\n",
" <td>65.2</td>\n",
" <td>4.09</td>\n",
" <td>1</td>\n",
" <td>296</td>\n",
" <td>15.3</td>\n",
" <td>397</td>\n",
" <td>4.98</td>\n",
" <td>24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.0273</td>\n",
" <td>0</td>\n",
" <td>7.07</td>\n",
" <td>0</td>\n",
" <td>0.469</td>\n",
" <td>6.42</td>\n",
" <td>78.9</td>\n",
" <td>4.97</td>\n",
" <td>2</td>\n",
" <td>242</td>\n",
" <td>17.8</td>\n",
" <td>397</td>\n",
" <td>9.14</td>\n",
" <td>21.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.0273</td>\n",
" <td>0</td>\n",
" <td>7.07</td>\n",
" <td>0</td>\n",
" <td>0.469</td>\n",
" <td>7.18</td>\n",
" <td>61.1</td>\n",
" <td>4.97</td>\n",
" <td>2</td>\n",
" <td>242</td>\n",
" <td>17.8</td>\n",
" <td>393</td>\n",
" <td>4.03</td>\n",
" <td>34.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.0324</td>\n",
" <td>0</td>\n",
" <td>2.18</td>\n",
" <td>0</td>\n",
" <td>0.458</td>\n",
" <td>7</td>\n",
" <td>45.8</td>\n",
" <td>6.06</td>\n",
" <td>3</td>\n",
" <td>222</td>\n",
" <td>18.7</td>\n",
" <td>395</td>\n",
" <td>2.94</td>\n",
" <td>33.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.0691</td>\n",
" <td>0</td>\n",
" <td>2.18</td>\n",
" <td>0</td>\n",
" <td>0.458</td>\n",
" <td>7.15</td>\n",
" <td>54.2</td>\n",
" <td>6.06</td>\n",
" <td>3</td>\n",
" <td>222</td>\n",
" <td>18.7</td>\n",
" <td>397</td>\n",
" <td>5.33</td>\n",
" <td>36.2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT \\\n",
"0 0.00632 18 2.31 0 0.538 6.58 65.2 4.09 1 296 15.3 397 4.98 \n",
"1 0.0273 0 7.07 0 0.469 6.42 78.9 4.97 2 242 17.8 397 9.14 \n",
"2 0.0273 0 7.07 0 0.469 7.18 61.1 4.97 2 242 17.8 393 4.03 \n",
"3 0.0324 0 2.18 0 0.458 7 45.8 6.06 3 222 18.7 395 2.94 \n",
"4 0.0691 0 2.18 0 0.458 7.15 54.2 6.06 3 222 18.7 397 5.33 \n",
"\n",
" Price \n",
"0 24 \n",
"1 21.6 \n",
"2 34.7 \n",
"3 33.4 \n",
"4 36.2 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"boston_df = pd.DataFrame(boston.data)\n",
"boston_df.columns = boston.feature_names\n",
"boston_df['Price'] = boston.target\n",
"\n",
"pd.options.display.float_format = '{:,.3g}'.format # Just Format!\n",
"boston_df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Regressão Linear\n",
"\n",
"A regressão linear será realizada utilizando o método dos mínimos quadrados.\n",
"Apresentamos abaixo os coeficientes calculados."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Intercept</th>\n",
" <th>CRIM</th>\n",
" <th>ZN</th>\n",
" <th>INDUS</th>\n",
" <th>CHAS</th>\n",
" <th>NOX</th>\n",
" <th>RM</th>\n",
" <th>AGE</th>\n",
" <th>DIS</th>\n",
" <th>RAD</th>\n",
" <th>TAX</th>\n",
" <th>PTRATIO</th>\n",
" <th>B</th>\n",
" <th>LSTAT</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>OLS</th>\n",
" <td>22.5</td>\n",
" <td>-0.92</td>\n",
" <td>1.08</td>\n",
" <td>0.143</td>\n",
" <td>0.682</td>\n",
" <td>-2.06</td>\n",
" <td>2.67</td>\n",
" <td>0.0211</td>\n",
" <td>-3.1</td>\n",
" <td>2.66</td>\n",
" <td>-2.08</td>\n",
" <td>-2.06</td>\n",
" <td>0.857</td>\n",
" <td>-3.75</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Intercept CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n",
"OLS 22.5 -0.92 1.08 0.143 0.682 -2.06 2.67 0.0211 -3.1 2.66 -2.08 \n",
"\n",
" PTRATIO B LSTAT \n",
"OLS -2.06 0.857 -3.75 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"import numpy as np\n",
"\n",
"lr = LinearRegression()\n",
"\n",
"_x = boston_df.drop('Price', axis=1)\n",
"y = boston_df['Price']\n",
"\n",
"# Normalization\n",
"mu = np.mean(_x, axis=0)\n",
"sigma = np.std(_x, axis=0)\n",
"x = (_x - mu) / sigma\n",
"\n",
"lr.fit(x, y)\n",
"\n",
"coef_df = pd.DataFrame(index=np.append(['Intercept'], boston.feature_names))\n",
"coef_df['OLS'] = np.append([lr.intercept_], lr.coef_) \n",
"coef_df.T"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Apresentamos abaixo a média do quadrado dos resídudos, o coeficiente de determinação $R^2$ ..."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MSE</th>\n",
" <td>21.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R²</th>\n",
" <td>0.741</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS\n",
"MSE 21.9\n",
"R² 0.741"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import mean_squared_error, r2_score\n",
"\n",
"mse_ls = mean_squared_error(y, lr.predict(x))\n",
"r2_ls = r2_score(y, lr.predict(x))\n",
"\n",
"result_df = pd.DataFrame(index=['MSE', 'R\\u00b2'])\n",
"result_df['OLS'] = [mse_ls, r2_ls]\n",
"result_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... e o gráfico com a diferença entre o preço real e o calculado."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEPCAYAAACzwehFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztvXucXFWV9/3d3V23rr4lpEkEpJvcAyE3JsA86NAo4A2R\neXkF8Zn3NRAcGCaAjDMkhsHECfEhMjGvDGIIRJtxcsN53ngZ1AY+do8TETqBQJBOUNHOo4B0O84T\nibQQyHr+2Pt0nbp1VXXX6br0+n4++9NVp+qcs08F9m/vtfZay4gIiqIoijISNaXugKIoilL+qFgo\niqIoOVGxUBRFUXKiYqEoiqLkRMVCURRFyYmKhaIoipKTkouFMabZGPMNY8xBY8zzxphzjDGTjDGP\nGGNeMMZ0GWOaS91PRVGUiUzJxQL4EvBdEZkHLAQOAauAx0RkDvAD4DMl7J+iKMqEx5QyKM8Y0wTs\nF5EZKccPAeeLyKvGmGlAj4jMLUknFUVRlJKvLE4DfmuM+Zox5mljzBZjTD0wVUReBRCR3wAnlrSX\niqIoE5xSi0UdsAT4sogsAf6ANUGlLnc0J4miKEoJqSvx/X8N/EpE9rn3/xMrFq8aY6b6zFADmU42\nxqiIKIqijAIRMYV8v6QrC2dq+pUxZrY79F7geeDbwDJ37BPAt0a4RtW2NWvWlLwP+nz6fBPx+ar5\n2URGN8cu9coC4CZgmzEmBPwCuBqoBR4yxlwDHAauKGH/FEVRJjwlFwsReRZYmuGjC8e7L4qiKEpm\nSu3gVkago6Oj1F0IFH2+yqaan6+an220lDTOYqwYY6SS+68oilIKjDFIJTm4FUVRlMpAxUJRFEXJ\niYqFoiiKkhMVC0VRFCUnKhaKoihKTlQsFEVRlJyoWCiKoig5UbFQFEVRcqJioSiKouRExUJRFEXJ\niYqFoiiKkhMVC0VRFCUnKhaKoihKTlQsFEVRlJyoWCiKoig5UbFQFEVRcqJioSiKouRExUJRFEXJ\niYqFoiiKkhMVC0VRFCUnKhaKoihKTupK3QFjTD9wBDgOHBORs40xk4BdQBvQD1whIkdK1klFUZQJ\nTjmsLI4DHSKyWETOdsdWAY+JyBzgB8BnStY7RVEUpSzEwpDej48AD7rXDwKXjWuPFEVRlCTKQSwE\neNQYs9cYc607NlVEXgUQkd8AJ5asd4qiTDiOHj1a6i6UHSX3WQDnicgrxphW4BFjzAtYAfGT+n6Y\ntWvXDr/u6Oigo6MjiD4qijIBePnll7nttts4dOgQjz/+OMaYUnepKPT09NDT0zOmaxiRrOPwuGOM\nWQMcBa7F+jFeNcZMA7pFZF6G70s59V9RlMpkaGiITZs28cUvfpFrr72W1atX09TUVOpuBYYxBhEp\nSAlLaoYyxtQbYxrc6zhwMfAc8G1gmfvaJ4BvlaSDiqJUNSLCQw89xLx583j66afp7e3lzjvvrGqh\nGC2lNkNNBXYbY8T1ZZuIPGKM2Qc8ZIy5BjgMXFHKTiqKUn089dRTfOpTn+Lo0aN0dnaqCTsHZWWG\nKhQ1QymKUiieX+L73/8+d9xxB8uWLaO2trbU3RpXKs4MpSiKMl4MDQ3x+c9/ngULFjB16lReeOEF\nli9fPuGEYrSU2gylKIoSKCLCN77xDW699Vb+5E/+hN7eXqZPn17qblUcKhaKolQt6pcoHmqGUhSl\n6nj55Ze5+uqrueSSS1i2bBn79u1ToRgjKhaKolQN6pcIDjVDKYpS8ahfInhULBRFqWjULzE+qBlK\nUZSKRP0S44uKhaIoFYX6JUqDmqEURakIxssvMTg4SH9/P+3t7bS2thb9+pWKioWiKGXPePklduzY\nxfLlNxAOt/Pmm/1s3XovV111ZSD3qjQ0N5SiKGXLeOZxGhwcpK1tLkND3cAC4ACx2AUcPnyo6lYY\nmhtKUZSqoBR+if7+fsLhdqxQACwgFGqjv78/sHtWEmqGUhSlbChlvER7uzU9wQG8lcWxY4dpb28f\nl/uXOyoWiqKUBaWOl2htbWXr1nu55poOjDkZkZfYuvUrVWeCGi1qhlIUpaSUU7zE44//mD/+cYih\nod/zxz8O8fjjj5ekH+WIioWiKCWh3OIlDh48yD33bAGexBbofJJ77rmfgwcPlqQ/5YaKhaIo40q5\n1r3u7e0F3onfwQ2nuOOK+iwURRk3Su2XgOxBd2effTbwK/wObvi1O67oykJRlMApF7/Ejh27aGub\ny0UXXU9b21x27Ng1/Nm8efO4+OIO4FxgFnAuF1/cwbx588a9n+WIBuUpihIYQ0NDbNq0iS9+8Ytc\ne+21rF69umTmplxBd4nPtwJHgGZiseUalOfQlYWiKEWnHP0S6UF376CmZgr79+9P+fwy4BPAZRqU\n50N9FoqiFJVy8EtkIjno7iDwV/zhDydw2WVXsXXrvVx44Xvc59/EW1loUF6CslhZGGNqjDFPG2O+\n7d5PMsY8Yox5wRjTZYxpLnUfFUUZmfH2SwwODrJ3714GBwfz+r4XdBeNng9cA/QAP2NoqJvly28A\n4F3vOgf4OLAe+Djvfvc5VWeCGi1lIRbAzUCf7/0q4DERmQP8APhMSXqlKEpOShEvMZKjeiSuuupK\nvvWtXcTjs0jNAdXd3c2jj/YATwA/BZ7gkUd6NM7CUXKxMMacAnwQeMB3+CPAg+71g1gjoqIoZUSp\n/BKDg4MsX34DQ0PdHDny1PDKIN8VxuLFizl+3NsiC14OqJ///OfAKSTHWZzMY489VvRnqETKwWex\nCfg7wG9qmioirwKIyG+MMSeWpGeKomSklH4JzxE9NJSeHTYfk5Fnjlq+/AJCoTaOHTvM1q33Ultr\ngF+THGfxElOnTg3sWSqJkoqFMeZDwKsi8owxpmOEr2bdH7t27drh1x0dHWXjTFOUaiSI+hKFVqYr\nRnbYq666kgsvfE/Sfa256W2gA2gH+oG3OfPMMwt8ovKjp6eHnp6esV1ERErWgM8D/wv4BfAKcBT4\nOnarwlT3nWnAwSzni6IowfP666/L+vXr5YQTTpCVK1fKkSNHinLd7dt3Siw2WZqbl0gsNlm2b985\n4vcHBgakt7dXNm/eIrHYZGlqWpzXefnQ29srsdiZAgMCvQIDEovNl97e3jFfu9xwY2dh43WhJwTV\ngPOBb7vXXwBWutcrgTuznFPM309RlBSOHz8uu3btkra2Nrn88svlxRdfLNq1BwYGJBabLPCsgAg8\nK7HYZBkYGMj4/VRh2bx5i/T29mb9ftD9qWRGIxbl4LPIxJ3AQ8aYa7DpH68ocX8UZcIRtF8iH9+D\nZ6JqaGgYdmrb7x/glluKW/I0my9Dt846ClWXcmroykJRis5LL70ky5Ytk2nTpskDDzwgb7311qiu\n45mMss3Mc83k/SuJSKTJmYhkuDU1LQ7ERJSr39UAo1hZlHzrrKLkotDgKyV//L9tMeMl8omD8Gby\nsdgFNDUtIRa7gE2b7qS/v5+DBw8mbY99441vMTT0c1K3uwYRXd3a2srSpUt1RZFKoepSTg1dWVQ9\nhTpAlfzxftumpsUSCsVlypQpRfFL5Gv792bwfX19SU5ru5JokVjstKSVRDTaLpFIy5ic2vmsGnRl\nkWW8LfSEcmoqFtXNRHI4jjeJ33aHwLsE5kg43FiU37a3t1eam5ckDfSNjYuks7Mzo4nJc1an/ltD\nTKA76d/eE5bR9DOficdEmZyoWChVRaZBJyg79UTj4YcfllBossA0gQcE3irab5tJ5CEmjY1nZhWG\nSKRFGhuTfRKx2HyJRJqKsj02n4nHRJqcjEYsynU3lKIUJfhqIpMp2M2rL7Fx40ZEXge+A/w3ivnb\n+ncV1dWdymuvvQCs5bXXbgUOcPPN7yYcnoE/rUY43M6bb/6C5Ojpl9m//wmOHj2ad8BeNvLZeWVT\nkZ9McrqPk/KODK968lEUYCGwwrWFhSpSUA1dWVQ9frt6NZsFRDLbykdrP081p2zbtiMtXiLo33Zg\nYEA6OzvTVgwNDfMlEmlJm8EHEWjn70uuVUNfX58zfSWviPr6+orWj3KBIMxQ2IywPwH+wbXngBsL\nvVEQTcViYjARHI6ZbOXbt++UaLRF4vE5Eo225D14pg+MO8SYWpkxY4bs3r077buZftti/ebZBuls\nwhDkv3UucbQR3KcJtAjMFmiRaLS9Ks2eQYnFASDuex8HDhR6oyCaioVSDWQbUOvq4gKTBM4UaJS6\nuviIMQtdXV3Dzfp6XhJY5ga/sNTXL8hrxl5sJ2+2QbrYwjDWnU4DAwMSCjW632uhQIuEQg1VOUkJ\nSiyeA6K+91HguUJvFERTsVDKlUIGwkyO/Pr60wXqBTYITHaDV0xWrfpM2vnbt++UcLhZYKZAvdTV\nxaWmJuwGvRvd3/yctkE5eYPesloMgRsYGHC/Y+LZw+FmFYsCxOJvgGeBta49A3yq0BsF0VQslHJk\nNMnx0ncHNQmcmjbQh0JNwzZ0bzURjU5y3zku8AWBGjGmTsLhRonHZzsRSQjRSLuecu1AC8pMNJbB\nvlgCN5F23wUiFva6LAFucm1xoTcJqqlYKOXGSAPXSANtqqnmmmv+UiDibOfia7MkEmmSFStuklhs\nssTjc5wY7BMbLzFf4BSpr58+bJLK1J9s8Qoj9T+oGISxDvbFGuQT/egWm3W2W7fO5iMWwOSRWqE3\nCqKpWCjlRraBa9269TkHWn9Ec2LQSo1X8I57AWsHBMICUwT+0q1EZgrEZPPmLSKSLkQrVtw8Yl8y\n+RiCjEEY62BfzL6tWHGz+21nC8RkxYqbCr5GJVBssfglts7EL7EVQX4L/Kd7/ctCbxREU7FQyo1M\nA1c02jLiYJa64kgePHc6gZjphGCnOz5D4K8EThC4VCAq1scx8j0SQjTySmPkPo1+9p7vb1boYF+M\nbcAalDdKsZDEgHw/8EHf+w8A9xV6oyCaioVSCnLZ7VMHrnXr1mcdaL3vxuMLR5jFdzuT1G5J+CWM\nwJ8JvOi+1yB219TIg3mmQd+LlM616glyIC3WYD8Wf4r6LMYuFmk7n3Q3lFKN5DPY5Gu3918r20D7\nne98R2prG5OOe7tv0k1HN0kk0iS1tXExplYuu+z/coFtM8Rur93i/uZeMeSTgykfv0o+z17s3z9I\ndGUxdrHoAv4eW5S2HbgN6Cr0RkE0FQulWOQjAmMZTFIH2osv/oBbLcxKmsnCDOnq6hIRG1Hc2dkp\nPT09smzZMjnxxBPltttuk1deeWX489ramECzwGKBuNgcTIuSfBONjYslEmlJ82HE4wsyZncdaTad\n76qqUhPxTZSMAUGJxWTgS8B+176kDm6lmsi8dbUlLc1Db2+vS11h6zMXOrB67/fs2eN8DF+RdAd2\nvXR1dbno7UkSiZwkYOTDH740Y93rRJT3bIlGW4ZLjWbyTXhOb39keCTSlBZbMNrZdLXMzD2RrsY0\nHx6BbZ0t16ZioRSDTLZqb4uqv87z5s1bnMlmoRvkN2QcDAcGBkbc/XT99TeIdUYvcb6GZrfCaJZQ\nqEGef/55CYXiAicJXC7wcM5AutTZvhW2xSnPtEAikSaJRlNjNxqKMpuuBpt/pa+M8iWolUUrcBfw\nXeAHXiv0RkE0FQulGGS2408WuN2ZdRZLJNIkoVBT2kz9rrs2Jg3U3qw9286kvr6+tJm8FYuwRCJN\ncscdn5eFCxdKTY3fjyACM2TduvUFPVNqsj6YLPX1p7vYjOQBvaura8z+gkpfWVR6/wshKLF4BFgO\nHATOB74KbCj0RkE0FQulWGzfvtMNrrOcUGzxmYh2CjSm+Rei0TMkEmmS+npr+7/rro1usNnmVg3J\nA/K6detdZHZqoN0MgZCcf/75cuKJJ8qmTZt8UdneQD9JotGWggauxEpoQdJKKHVlUW67mkpFNayM\n8iUosXjK/T3gO7a30BsF0VQslGLS19fnBvNusX6JhWJ9E9kC5JJ3EUFMotFTfef4fSDNLjHgbklO\n4fGk2KA6JBRqlWh0kmzfvlPWrVvvVieL3bV2jmrg2rx5i0QiTdLQMH948B6P1OSVmCVYVxZjF4sn\n3N8u4EPAYuDFQm8URFOxUIqNN5A2NMx3YuBfJXgBcrOcSWpahhVC2AnITrFbWWdITU29u5a3anmv\nWAf3NAEEagUe9glLi+zZs8etALY58clv4Mo0UOd7TKnslVEhBCUWlwDNwHygG3gKuLTQGwXRVCwU\nj1yppwsZGL3vb968JYP/oVvC4Qa5+WYvLUTyTiYrAI1uRdAsNTXRDN+LCMxz5qhbnMj4RWeWhMMN\n8tGPXinRaMuIA5f/2UYTA6KkMxF+n4rbDQVEgCfdltzngDXu+CTnK3nBrWias5xf5J9QqUSsqaVF\nGhvTB9Wx7m7x72xqalosoVCj1NU1ipd/ycY2LBLrpPZWEH3iba+NRmdKwtfh1ZeoFbhN4C23akh2\nhluxiQucJtHoJFm3bv2IQXLNzUskGm3JawvsRNnto4xMsXND/RNwd7ZW6I1GuE+9+1sLPAGcDWwA\nbnXHVwJ3Zjk3mF9SqRgSTtz0GIli2qDT04F7A3vMmZ7a3etI0ufWTxEVW1fiBIGr3fvu4e+EQg0+\n53qj5Ls9N/FsAwL/IDBycF252OQnwsy93BmNWNSQnX3O5JStFQWxVePBrjLqAAE+Ajzojj8IXFas\n+ynVw8GDB7nxxluA6cACd3QBb7zRyuLF53LfffcTDrcnfTY0NIn77ru/4Hu1trYyadIkamtPTboe\nnAR8DZtv8wlsbbBzqa8/g1DovyHyNhADNgNTgJ2cf/55xGKX09S0hFjsAh588AH273+ccPgVwLjr\nPIO1+m6gtvYk+vv7k/rT39/vnu0gMBfYDfwG+IL7xgGOHTtMe3t7hnMS/Q+F2tKuHSQ7duyirW0u\nF110PW1tc9mxY9e43VsZI4WqS7EbUIM1Q/0e+B/u2H+lfOd3Wc4totYqlURiq+tsNxPf4Jvttwh0\nSzTaUpQtqB6Z4zHqxYvm9gLfamujEgo1OMe2ERuvMSDQK/H4/OFZders2u6ASi5U5AXSZVpZWH9K\n+krHv/MpV//Hc2VR6vsrCRjFyqIul5gYY7qxs/1UkXlPkcTqOLDYGNME7DbGnJHhfmn391i7du3w\n646ODjo6OorRLaVMGRwcZP/+/VxzzfW88ca/Y2fJB4BzsbP3V4D1wJvU1EzmkkuW8tBDfwrMAQ4D\nXyEc3kB/fz+tra0F3bu1tZWtW+9l2bI/4803p7h7veX+trp+/JTjx9/i7bcbgDuxdcPeC9wIRDh+\n/GXa29tpbW1Nu/91132Sz39+I0NDB3zP9TO+9KUvpX23tbWV2277O26//Wv4VwqNjXP4p3/6FB/8\n4AcznrN1670sX34BoVAbx44dZuvWewv+HUaLt7IZGkpf2YxXHyYqPT099PT0jO0iudQEOMvXzgO+\nCHyhUFXKpwG3A5/Grq2numPTgINZvl9swVXKEP/uJC+dt53R7/TNwGcInOxWGX4HdEgSW2DtFtRM\ndZULsaN7/ouurq7hPjU02BVFLBaTSGSqwJGkvsXjs/NyKHsO6MbGRUnJ/7L1YzQz9VL5DHRlUT4w\nXruhgN7RnJfhOlNwO52wht0fAh/EOrhXuuPq4J7AJAbPxSnmpm4nCnucEDS7143uswHf8S3u78kC\nTRIKNSQNUIVuOe3r65Ndu3bJ3XffLc8//7zcf//98o53vEMuueQS6e3tzTggdnV1DacrzzVQZ0tA\nOJa04eVCpfW3WglELEgupzoFeB/wQqE3ynLtM4Gnsd68A8Btvns+ht06+wjQkuX8YH5JpSzInrPJ\nS8UxywnIVElsN53tXjeLDaarF/iY7/stEo22D+8Syne26w1ysdh032rlnQI1MmXKFOnu7k77buqA\nOJptq/mmTq+k3UWV1t9qJCix+CWJ8qo/c4P3uwq9URBNxaK6yZwN9nRJTpfhJeLrds7evhSnb7ek\nB8XFhtNPZ7pHQ8PCLFtOuwWaxG59vVRsAN4agWhaOutMq4NCTTDFMNtMhHTbSuGMRixG2jrr+TRO\nE5Hp7u8sEblYRPbkdIYoyhhpb2/nzTf7sYtO3N8Xsc5k//bVKcCb2Npcu4FGIAQMYp3apyR9Pxab\nwdGjR7Pe4+jRn3LffVuG+5HYclqL3dr6JjAPu/BdC7yT3t7epL63traydOnSYcftaLatjnWr6403\nforTTz+LZcs+z+mnn8WNN96c13mKkpFcagL8NT4zEDa6+oZCVSmIhq4sqp4VK25yKwPrsD7rrKWS\nHvFcL7aQkJdawzNP1QuckbayCIWSt6LedddGSc3OClHZtWuXDAwMyKuvvurqS0wVqJPUwDv/SiUb\n472y6OvrG3FFpUxsCMgM9UyGY/sLvVEQTcWiOshmwx4YGHB1HaJuEPcipcPOHLTYmaRCbgBPHRwn\niXV0b3CfzXACEk7aZdTZ2SkwXRIV8HYK1EssNl8ikSaZM2eOtLW1SzjcKNFouxOMhICtWHFTXs85\nGufuaB3C9plSU6HPks7OzrzOV6qboMTiOcD43tcCzxd6oyCaikXlM5IDd9euXW5Qvl1SU2BYAZkk\nEJVQaJ7YfEupCfkWOwEQsakw6sU6x21KEE+ckmfhA+66j4rN4zRFQqG4vPLKKxl3QxU6Ux+Nc3c0\n5+jKQhmJoMTiLuAhbGTRe93rjYXeKIimYlHZ5DKz3H333W6QT6/4ZlcYEd8A3yTp0cwt4sVWJNek\nGJDGxkVJTuyEuetk950TBFYKHKnYAjiJZ5pV0ApIqX6CEosa4K+Af3XtOqC20BsF0VQsKptclcns\n7DgidgeUZyISsb6FuBMMcZ8tkUS9icVuFRGSRA0JL4BvscC2NNv/8ePHZePGjTJ58mSpqQmJv75E\nJQeO6W6owpkIW3sDEYtybioWlcXI20ltEJ0/b9PAwIAsWbI0gwkqJnCzJBzdnukocR1rnopLbW1c\nkqvZ1Us02pJk7tq3b5+cc845Mnv2bNm9e/eYA8cmwmBTrUyUFO5FFQvnqziQrRV6oyCaikXxCHqA\ny/Y/4fbtOyUUanQD/0wJh5uHS3+mFx7yUoJvdAIQEhuAN9+tNPxO7Ii8730fkFCowQnJIoEmqa1N\nxES89NJLsmzZMmlpaZFQKJ4kDrmqy2X7vfwR57nSdSjlxURKR1JssWgbqRV6oyCaikVxCGI2lTqw\nZvufMNNniWyx/pKmXvNyQIUlsSOp3r2Pihel7a1AotF5Tlzqxas58elP/62sX79eTjjhBLnxxhvT\nMtPmKhoUDjdLKNSQ9nvZGt6p/pWYCkaFkMssWk2oGUopmCBmU6nis27d+qz/E2b6HzQSme5EYcCZ\nnvyDb5MY4wlF6opjt1j/RbcknOA1kkjPMcP9RRYvXiIvvvhiXgNE5rQj3rZc+3vZan1NkqiK57XM\nKcaV8mNgYCCt2mCmpJPVQFAO7nOBvcBRbOjq28DvC71REE3FYuwUezaVbaUQDjeI33cw0srCrhC8\nGfpONzBb85KNu4hkGJRniN0RtcQJxak+kZgp1lw1x7WIhMMNOVc93vN0dna6RIb++yW25TY0zJdQ\nqMk9X/rOrYaG+VU5O602BgYGfGbLxQKT0pJOVgtBicU+YCa2QFEtcDWuSFGpm4rF2Cn2yiJdfGyA\nWyRiI6mj0fY0U1eihvYiZ8aZJuDf9hkViMgll1ziypR+YYSVhV9wYuKPl7B+jVcEZkgsNn14APdW\nBalFgxL+hzMz3C+xsrBC6BUt8sq8JqLBq9XuXW0k/tsdEG/3nZqhChQL9/eA75hGcFcRxUwbnb7D\nKdkf4K+P7a9R0dh4pkQiTXLTTTe7wXaSm6l7ZqV6SURpn+5eN/kG5WmSCMATgZPExkok4iW8bbMQ\nGzYNZXNIp4uo9YE0Ni4a9ll4v9eqVasl2RF/u0BEYrF5Vb2jptpQB/fYxeKHQBj4Z2yB31uAZwu9\nURBNxaJ4FHM3lDcAJ3wP3gA+IJHIdFm1arWvRkVUYIXYbLHb3Cw9UzT2fLGmpEQRIysYJ7vjYScq\nx93Kw4g1QyXiJeyA3igwVdatWz/i4JA5G+186ezsTNsNlcl8UVcXH65hUep/DyV/JkogY1Bi0Yat\nQt8ErMFWyptZ6I2CaCoW5UtfX59LvueZb3aKted7TuYNkvBHeFXtTnMCkCnPU71rnk/iJvd+obuG\n5/SOSqLutRek5/ksPiPQPaIgeGaHQmeZ3lbfeHx2WhxHoUyUvf7lRnIq+t6k/1aqjWJvnW0FTs9w\n/AygtdAbBdFULMqX3t5eicfnSCJdhz+AbptAgzue+B/TDuzN7nPvPG/l0CTpPopu9/5RtxpBEuYq\nfz2LiNTWxtPMbLkEoVDzXDFWAxPJFFJu6NbZ0YvFTuDPMhx/N7C90BsF0VQsSstIQWoDAwMuqG6S\nMwvN9M30vQp2Ta6dKYkdTHOcoDQ6sTjDDf4zJdksNVPghwLrxfolWgS+KNAl1n8xWRL+jKlSWxuT\nP//zy2XPnj1Jz7B9+063XdLutgqFGpJEYbzNQRNpwCo3JpJQF1ss9o3w2U8KvVEQTcXCMt4D2sDA\ngKxbt37YVBIKNUo43JwlOrvBZyJKTfQXc2LQIvBRJwpxgY+7192+1YHfLPWMWH/EVIHLxfolvMju\nAUlUzuv1nZvZDp0QtW3i+U38KUfGm4k0YJUjE6VGeLHFImud7ZE+G8+mYjF+9m3/7qXkNBzpO55S\n4xTsDqe6DKuDBW5l4MVRxMSak7yBvUXsVlRxwlAvcIrYQLsaJ0L+gkXNkly/YqY7lk9Z1eRVz7p1\n6wP5HfNhogxY5cpE2FxQbLF4GPhghuMfAL5X6I2CaBNdLMZjFuqtIqLRFrd7KSZ295JnKumV1JQc\nqZljbezE7RkG7RZJj9D2+yK897e7Qf+DYp3XfyvwY7cq8WejnSHx+GyJxSbLXXdtdBHVK2WkIkDJ\n5rLymc1PhAFLKR3FFotZwE+BTuBG1x50x2YXeqMg2kQXi6Dt294M187QJ7nZt1cbwotUzr6y2Lx5\ni9TVeTUi+sRmivWn3fCLjtdmivU7eCIw36024gL/r9jdTyKZU4HEhkuhithgu+QdWYnv+VN2r1u3\nXlJXPeprWd/QAAAgAElEQVQnUKqZom+dBSIuYnuja9cA0UJvElSb6GIR5MoicxqOyW6QTjYfhUIN\nEg43J5lNNm/2Ipn9if5OFru1dZtY81JTxoHcriIWO4EwYv0X/5BBmDxzk01fHo22Dw/w/mA7myIk\n+9559RMoEw1NJDgBCcq+nWnVYgfwrwhEJB6fK9Foy3BwW+rOqPTsq5OcOJzhu16fExEvmK3Fvd8h\n8C6xO6PCYnc3RcXulvKc5d7q5HZJ3RNvTV9N4k8sGI22jFgGVf0EykRiNGJh7HmlwRhzCjYyfCpw\nHLhfRO42xkwCdmEDAvuBK0TkSIbzpZT9LxcGBwfp7++nvb2d1tbWtOMNDQ0cPXp0+G/q97Jds61t\nLkND3cACbBmTswFDXd07qKn5T+6++x+57rpPpp333e9+l2uu+TzHj7/g+2QJ8AfgN8B/uGtuBz4L\n/Bj7z/xzbCHGOHAHsAyYA9QBA8AfqKmpZceOTn70o8e55577OH7cACcRDv+Wzs77ALj66ut54416\n4L+wac1eIhpt4oc/fIilS5cW/DsqSrVhjEFETEEnFaouxWzANGCRe90AvADMBTYAt7rjK4E7s5xf\nNKWtNryZcixmk+CFQlMFYhKLnTnizHlgYEC6urqkq6tL7rproySS4rW42f0ksX6GSVJTE8uY56m+\nfm4G89Ikd43lzqw0XRKR2k86s1aT2F1TP0o5z0vvUS/19dNl5crPpPRruUSjNudUIgI33Z8xltKi\n6nBWqgmCMkNhc0PNdy1U6E3y7gx8E7gQOARMlYSgHMry/WL/hlVBZn9D8i6jbAV+/FXr6urirnhQ\nr8D9kl61rl5qaiISDjdLQ8OiFLNQm1jfg2cuqhMbG3FCihmpVqxfosmJ0SclEX9RL4na2SLWPxLP\nWGAoEnmndHZ2OtNZ+g6tWGx0acL9u8E0/YZSLQQiFkAHcBj4d2xSwV+SIbJ7rA1ox9oiGoD/Svns\nd1nOKfqPWOkk6i+cKcn+hlniz8qaqcCPtfM3SuZguLslPbmfV8I0VZQ2usH/Rklkh/XEwUvFsVes\nn6JWbMzEie6zbWIjurtcX5KvfdNNNzth8vdjgUBE9uzZk3VlUajDOiESXu6qxG4wdX4rlc5oxKIu\nD0vVRuBiEXkBwBgzG9gBnJW3rSsHxpgG4F+Bm0XkqDFGUr6S+n6YtWvXDr/u6Oigo6OjWN2qOHbs\n2MXy5TdQV9fGa6/9HJsk+Fasv+HXWJ8BwAGOHTtMe3v7sJ3+61/fxhtvvAWcAlwO3AtcSTjcijHn\nU1MziaGh37hreT6Ml4Hp7j3u72nAavf+34AaEj6KA8A5wP8AerB+iduA17B5Kl/H+ilC2AXl/cD5\nwAnAy0QiU7nvvq/x1ltvu/M7hp8tGj2NcDjM6tWf5vbbPwSciK3bNQP4BatX35a3H2LHjl1cc831\n/PGPb2L9KV7fLwAOEQq10d/fr34NpWLo6emhp6dnbBfJpSb46liMdGy0Deu9/D5WKLxjB0k2Qx3M\ncm5R1baSyWZ6ikat/6CurlWsz2L+8C4mz8cQjc6XRCZY71w7Q/cC3Gz+pHdIop7EZEkk+UvdyjpL\nEllevbiI1wXucKuID4utL+FfuXj3rZcrrviY2/a6SMLhJqmt9UxoqVlqT5XUAkNjTd+R+B0z1f+2\n9TB0ZaFUOgRkhvoq8AB2GteBne59tdAbjXD9fwa+mHJsA7DSvVYHt2MkJ2umra6NjYuks7NT+vr6\npLe3V/r6+oZzOmWu/ubFUYh4Pou//dtbpa7OLwjdzqy0W6wJKurMR7MzXC8mNrvsF8T6MC50IuL5\nMiICcyXVtOXVgejt7ZWuri5f9bJ0MYzH56b5EcayDTa5Wlrq/erHnH5cUcqBoMQiAvwN8P+7dgsQ\nKfRGWa59Hram9zPYsq1PA+8HJgOPYXdHPQK0ZDk/oJ+y/MiVAyoRW9AtXhrw1Bl18uqj1zfr99oC\nd/xZCYWa5E//9N2Sud71TCcCH5PkGhXvyPA949pJ7jtTJeG7aMsoMF61uuQ+p8/0PTHMJJ6j3b2U\n/Bsl6n9Ho5OGY0oUpdIJSiziQK3vfS1QX+iNgmjlLhbF2m6Zb90Fu002It5uplCoKUlUent7XX4n\nyTpTh3axu5zqJbGDKv17tbVeMaJMO65eErjUicQJAheIXY0sEevI9guEZ7qaL55JKRxuTvrNvMJC\nqfcLyhzkX5n4Aw8VpVoISiyeABp87xuAxwu9URCtnMWimNlg86/olp6nyT/wJlJwdLsVxO2+gTom\ndmurV7Z0myR2P6VWnNsg4XCDEyfxtdlidzfVijVPfc4N8A1io7GzlUw9TeCz4k8I2NXVlfQbDAwM\nyEc/eqWMV8lLjatQqpmgxOKZfI6VopWrWBQ711D+taJT4wsGBE4eTq5nr/G+pAEX3uMGcc95vdN3\nrn8m3y121fIdAZFw+GTfCsFf99qITcnRLontpt650yUR2Je6Itnte1+fUSwylbz0/DE6qCtK/gQl\nFj8ClvjenwX8uNAbBdHKVSyKlQ3WP7vN5rTNvrJI2NsjEWtKsU7tVJNSRKzfYYn7fly8iGljvAR8\n3u6j89x53orkVHd+1K0YbnfXjIp1Yne5a3k5oGqdSHkrlcVOkOokkR9qkoRCDWmDf6bfNBI5VUKh\nBmlsHDkqXVGUZIISi6XAi9jN8nuwCXzOKvRGQbRyFYtirCwymbGymUYSGVYXuUG5IW1VEIk0uXTd\nfqd26urhWff+NPEczXv27JHPfvazsmbN5yQWmywNDZ7J6lGBZW7QrxP4d9912ySRjiM546v9rids\n2wSictVVfyHhcJPU18/Outso/Tf1BGuhpG6fVRRlZAIRC3tdQoxDuo+CO1+mYiGSe/vmSDbxbCaX\nkQZCf36mcLhBEjuYvFn8bKmtjbvButt95vdLeG2GwN3S0JCeHmNgYED+8R//0V1vstjCQkfcOXFJ\nmJw881SfZNrtZFcj3irn42K3wM6XSKQpaSdUtt80IVjJ234z9VlRlHSCWlnUA3+PzQgLtijSJYXe\nKIhWzmIhkl0Qcjm/e3t7JRabLokyn8m1GnLdI1Gdrlu84DqbqK9ZEialdrHmp9SUGs0Zxen48eOy\na9cumTp1qlhz0sMpq5GvuL9e3icR6JRMVepgitj0IbskUUTJXisfUezs7MyY8iMSadKVhaLkQVBi\nsQubM+InkhAPdXCPknxMVH19mWfkqVlTRxKdFStucjP4d0hiJ5O/2l2jwB7xtq7W1c2RRKxETN77\n3ouG77d3714577zzZNGiRbJ7924JhRrE72OwZi+vql1cEqatbCuLkBOJhZKaLDCTbydVELNFq4+0\nKlEUJUFQYrHP/d3vO/ZsoTcKolWiWOTj/LYri+RtqalZU0cSncRnnRnNNXZgnykQkVCoQdas+Zwr\nf/pZgY+IdVDPEojK3LnzZNq0afLAAw/IK6+8Ir29vXLTTTe775zsViL+cqunOzGodysMr1iRt6IJ\nSU1NPKVPiTTkqcKZTRD9fppIpEWFQlEKICixeByIAU+79zOA3kJvFESrRLHIZ2WRz3dGEp3EZ71i\nfQPiaza/kWeeCoWapK6uQRIZZMNiczjd4YSgTrq6upLSdFufyGkCq51oLBDPyZxIU55wYNfXz5K6\nOpsxtquryxcY6LUZAienrY5y/Q4aC6EooyMosbgIm558ENiGTSPeUeiNgmiVKBYiNjguEmmShob5\nWbd85uMgz72y6JZM+Y2sCWinb6De5l4/I4m61xcLvCg2ErxBks1Y3ZKopb1RrEmrXUKhJolETk0R\ngkQKES8uIpMJadWq1Xltlx3NFmRFUZIpulgABngnNkf0h4BLgCmF3iSoVolikTCfLM5oPkmtZe1V\nrcs0e7Z+icwRzd59amtPSTIDGRMRfxEkKx4DYutLnOe+2yo2PYe3UvB/f7LAFvFSikC91NXFZd26\n9dLX1+fL+OpVt2sRL97CG+jzNSEVO7hxNOjqRalGglpZPFfoRcerVZpY5JvjybPPr1hxU9L7zZu3\nDIvHnj17fDue0rfXbt++0yUWjIiNju51ZqcGX/rvZrH+hUsFpgmscYO7d92YwCkpK4X5Ys1T6c+w\nfftOd82ZTkxCksgJZYPt/Blw8xmEx5JBdqwUM2WLopQTQYnFg8DSQi88Hq3SxCL/HE8ybJ5JzOo3\niD9JYKYsr+nX8mdqHRDolXh8vqxatVrC4UZX4wKxforTJJHHyTNRLXSDfWrE98zh63krhq6urpT+\ne2KTOLe2Nj6qwbcUs/tyWNUoSlAEJRaHsGnEX8SWC3uOIhY/GkurBLFINSvll+PJa7OGB2Q728+U\nU6l7hGv1ifVBfNqdv0Csr6FObKrwy8XGSzSLrbEdl3STk42UbmxcJLHYZFm1arWr0z0pacWQqDvh\n9b1XkmMs0qPFy3nwVX+JUs0EJRZtmVqhNwqilbtYZDJjeMfi8QUj5HhKFYNeJxypYnK6Wwm8U8Jh\nG/3smXjq6uLusym+Gf5egUViHdhexLWItxspFGqQcLhZotEzBGISibxz2PzlFzxrakrObJvuuO5O\nWVlscyuSyhh8dWWhVDNFFQsgCnwKuAe4Dqgr9OJBt3IWi2yDzebNWyQabZF4fE5SHqTt23e6XUc2\nPiEcbh72WcTjc8WaipIH6UTVOVu7IhRqkObmJW7m7+Vm8qrYLRPrl3hArHkpsX0WJkt9/XTp6uoa\n3qll02+kO59HmnF7QmjFZ5LATZIoHtSSJjLlPviW0l+iKEFSbLHYBfyLE4pvAl8q9OJBt3IWi2xl\nTq3TOXnATJ6VJ1e5s4N3i69OdsQNxtE0s44dmPucgGwTOCywXKxf4mqxeZw8kfEC8xrES8KXaVtr\noTEgXV1dEo/PkURtigGJx2dLV1dXRQ6+uhtKqUaKLRbP+V7XeUF55dTKWSwyDaqRSItLE548K+/s\n7Mw4W093GnumqS+IzauUKeDuBved0wRqxJquwpKcnsPzTcSkvn7m8MCdXH864bxONRWNNOhrIJ2i\nlD/FFounR3pfDq2UYpHPoJc6qG7evCXjQJptRp/uNLZpP7yAvvRUHs1u1bDItQfc+xlJAuCl+rjm\nmk8mPUNfX58rl9osmba7pq4wsj1/Ja4gFGUiUWyxeBv4vWuvAW/5Xv++0BsF0UolFoXsv08dVLMN\npJmOp8/SbV2KPXv2DKcj91J219bGJFHS9AGBt9w57RlEJSbXXvvJjM+UmnDQ2+6aLYgw3+dWFKV8\nCGQ3VDm3UohFMXbJZBtIMx33BvFo1BYkisWSq8Ldffc9UltrK9XV1kbEmGhS30KhJvd5TBI1JDak\nmYbSzV2Txfo/Uv0imt1VUSodFYtxIJvjurOzM7BZdKI+RWLQjkYnycaNG8WYGoELxeZx8nwazeIv\nUbpq1Wrnw/DMUMnbVjPHeCwW+AdJ3e5aTnUjMqUu19WMouRGxWIcyBYPEWQd6PTBfK/U1sbl1FNP\nlXh8VspgPktsLqaRoqvTnc7pz1TvSrGmRnCXR0W6XKlR1E+iKNmpSLEAtgKv+qPCgUnAI8ALQBfQ\nnOXc4v6CeZJc8zomNhVH+iBcLBKDuVf3eoqEQnF57rnncqQISc7bNJLTOfXzdevWD2/dTcRslEet\n69ypUco/hkNRSkmlisW7gEUpYrEBuNW9XgncmeXcov6AheCV98y0FTbXrDtX/e3Uz15//XW54oor\nBYyEwydKNDopq2Pcm2Fn29Y6kpkm2+f5pFQfT0ZOjZL/v4OiTFQqUixsv2lLEYtDwFT3ehpwKMt5\nxfz9CmY0MQUj7aRK/Wzbth2ya9cuaWtrk8svv3y4sFEux3gQtvvRCk0Q6MpCUcZGNYnF71I+/12W\n84r3642SXFth/aKQX8Ei77PtUlNTJ/Pnz5fu7u7SPmQOSpHKu5AVlaIoyYxGLIw9r7QYY9qA74jI\nAvf+dyIy2ff5f4rICRnOkzVr1gy/7+jooKOjYxx6nMzg4CD9/f20t7fT2trK4OAgbW1zGRrqBhYA\nB4jFLuCb39zBFVd8hiNHnho+t6lpCY89dh8AF110PUeOfAe4Dfg+0WiY7u5dnHvuuePS79FeI9Oz\nHj58aNTXLOTeqb/7WJ9HUaqRnp4eenp6ht9/7nOfQ0RMQRcpVF2CaKSvLA6SbIY6mOW8IulsccmW\nbC9TzYdIpEn6+vrk8OHDUlfnbXtdKfCjvEwpozUPFWs1oKm8FaXyoILNUO0k56LaAKx0r8vSwT0S\nI5mbUoPsotH5EgrFZcqUKXL22WdLJNKctykl14Cf7fPk/iUnLizmsyqKUp5UpFgA24GXgTeA/wVc\njd06+xh26+wjQEuWc4v9G2alEAfuwMCArFu33qUiX5A2kCeC7LaLrXs9R8LhxmHfRT73yTXg51do\naafbDrtEoF7WrVs/qt9Gc0EpSmVRkWIxljZeYlGIycb7bix2pkBMwuGTkupWiIg8/PDDEgpNlkR9\nibcKNt3kGvBzlXCNRtMr741lRaDR04pSOahYBEAhZpbsOZa6JRabLIcPH5Y77rhDJk2aJHV1UYEf\njXqgzjXg5+r3unXrpZIq1ymKUjxGIxY1BXnDJyD9/f2Ew+3YnT4ACwiF2ujv78/ru9Z3Xw80ce65\n57J//34++9m1GFMHXATMJBz+M7ZuvbegHTytra3cdtvfASdk7Ftraytbt95LLHYBTU1LiMUuSLrH\nddd9kljsd9iy6gAHOHbsMO3t7Xn3QVGUCUSh6lJOjYpYWTQJzBdjamX37t0FO5dzRXvnU9lO604o\niuIHNUMFgzeoZnJWZ/tuNDpHvPoSoVBc/uVftotIYVtNvZKqjY3ZB/OxDvjqa1CUicdoxKKulKua\nSkLkOPCG+5udyy67lOeee5Yvf/nL/MVfXM3HP/5x5s+fP2z+aW9v5803+7Hmn3cAj/Lmm79MM//c\nd9/9XH/9zcATvPGGDXZbvvwCLrzwPUnmqquuupILL3xPXsFomYLWWltbNYBNUZTcFKou5dQoIzPU\n8ePHk/I4vfjii1mvuX37TgmFGsUWFpop4XBzWsK/SKRJYGHSCgRmjHl7q6bwVhQFNUMVn3zMRnv3\n7pXzzjtPFi1alJbHKZOZJ5cA9fb2umy2qf6P5lEFz2ngnKIofkYjFrobKgfJZiPw7xp6+eWXufrq\nq/nwhz/M1Vdfzb59+5JyU+3YsYu2trlcdNH1tLXNZceOXUDuHVbt7e289dZL2OD1C4CFwLnAXYTD\np2XciTUShezoUhRFyUih6lJOjXF2cHtO5M7Of5Y77rhDJk+eLCtXrpQjR46knVNYhtn0mb53T2gX\naBTYMuoVga4sFEXxg5qhgmNgYECefPJJuf/++/PyS+SKoPbSgYy0iynf7+WDbpNVFMVjNGJRFinK\nR4sxRsar/z/96U9Zvnw5R48eZdOmTTlToWdL3b1p053ccssqwmFr3lq9+tNcd90nC97FNBo0hbei\nKADGGKTAFOUqFnny8ssv873vfY9ly5ZRW1ub1zk7duxi+fIbCIXaOHbs8LBQlKL2QyZUPBRlYjIa\nsVAHd56cdNJJLF++PG+hABsDcfjwIR577D4OHz7EkiWLqKs7GZtgd5BSOpqzOd8VRVEyoWIRMK2t\nrSxdupTW1laefvoZXnvt58AngbnAF3jjjV/S0NAwrn0aHBxk+fIbGBrq5siRpxga6mb58hsYHBwc\n134oilI5qFiME4ODg9xyyyrgCeAZoBtYizFNnHXWu8Z1Zq9baRVFKRQVi3Eic0bamfzxj/867jP7\nkWJHFEVRMqFiMU5kGqDhJWxF2fGd2edKX64oipKK7oYaR7zdUXV1p/Laay8Aa4FbKdWuKN0NpSgT\nE906WwF4A/TTTz/DLbesGt5Wu3XrvVx11ZWl7p6iKBMAFYsKo5pm9tX0LIpS7ahYKCXBM695Uem6\nSlKU8kbFQhmRIGb/2dKalCoqXVGU3GgEt5KVoCK2NWZDUSYGZb2yMMa8H/j/sKK2VUQ2pHyuK4s8\nCHL2rysLRak8qmplYYypAe4B3gecAVxljJlb2l5VJkHO/jVmQ1EmBmW7sjDGnAusEZEPuPersDnY\nN/i+oyuLPBiP2b/uhlKUymE0K4u6oDpTBE4GfuV7/2vg7BL1paLxZv/Ll1+QFNdRzEG9tbVVRUJR\nqphyFou8WLt27fDrjo6OnEWJJipXXXUlF174Hp39K8oEpKenh56enjFdo9zNUGtF5P3uvZqhFEVR\nikBVObiBvcBMY0ybMSYMfAz4don7pCiKMiEpWzOUiLxtjFkBPEJi6+zBEndLURRlQlK2Zqh8UDOU\noihK4VSbGUpRFEUpE1QsFEVRlJyoWCiKoig5UbFQFEVRcqJioSiKouRExUJRFEXJiYpFAAwODrJ3\n714GBwdL3RVFUZSioGJRZIIqMqQoilJKNCiviGghIEVRKgENyisxWmJUUZRqRcWiiLS3t/Pmm/3A\nAXfkAMeOHaa9vb10nVIURSkCKhZFREuMKopSrajPIgC0xKiiKOXMaHwWKhaKoigTDHVwK4qiKIGg\nYqEoiqLkRMVCURRFyYmKhaIoipITFQtFURQlJyoWiqIoSk5ULBRFUZScqFgoiqIoOSmZWBhj/m9j\nzE+MMW8bY5akfPYZY8zPjDEHjTEXl6qPiqIoiqWUK4vngD8H/t1/0BgzD7gCmAd8ALjXGFNQpGG1\n0NPTU+ouBIo+X2VTzc9Xzc82WkomFiLygoj8DEgVgo8AO0XkLRHpB34GnD3e/SsHqv0/WH2+yqaa\nn6+an220lKPP4mTgV773L7ljiqIoSomoC/LixphHgan+Q4AAt4nId4K8t6IoilI8Sp511hjTDXxa\nRJ5271cBIiIb3PvvA2tE5MkM52rKWUVRlFFQaNbZQFcWBeDv9LeBbcaYTVjz00ygN9NJhT6soiiK\nMjpKuXX2MmPMr4BzgX8zxnwPQET6gIeAPuC7wA1atEJRFKW0lNwMpSiKopQ/5bgbKi+MMe83xhwy\nxvzUGLOy1P0ZK8aYrcaYV40xB3zHJhljHjHGvGCM6TLGNJeyj6PFGHOKMeYHxpjnjTHPGWNucser\n5fkixpgnjTH73fOtccer4vk8jDE1xpinjTHfdu+r5vmMMf3GmGfdv2GvO1YVz2eMaTbGfMMFOT9v\njDlnNM9WkWJhjKkB7gHeB5wBXGWMmVvaXo2Zr2Gfx88q4DERmQP8APjMuPeqOLwF/I2InAH8KfDX\n7t+rKp5PRN4ALhCRxcAi4APGmLOpkufzcTPWPOxRTc93HOgQkcUi4sV1VcvzfQn4rojMAxYChxjN\ns4lIxTWsn+N7vvergJWl7lcRnqsNOOB7fwiY6l5PAw6Vuo9Fes5vAhdW4/MB9cA+YGk1PR9wCvAo\n0AF82x2rpuf7JXBCyrGKfz6gCXgxw/GCn60iVxakB+79muoM3DtRRF4FEJHfACeWuD9jxhjTjp19\nP4H9j7Uqns+ZaPYDvwEeFZG9VNHzAZuAv8PGSXlU0/MJ8KgxZq8x5lp3rBqe7zTgt8aYrzkT4hZj\nTD2jeLZKFYuJSkXvRjDGNAD/CtwsIkdJf56KfT4ROS7WDHUKcLYx5gyq5PmMMR8CXhWRZ0hPz+On\nIp/PcZ6ILAE+iDWTvpvq+PerA5YAX3bP9wesJabgZ6tUsXgJONX3/hR3rNp41RgzFcAYMw0YKHF/\nRo0xpg4rFF8XkW+5w1XzfB4i8nugB3g/1fN85wGXGmN+AewA3mOM+Trwmyp5PkTkFfd3EGsmPZvq\n+Pf7NfArEdnn3v9PrHgU/GyVKhZ7gZnGmDZjTBj4GDaYr9IxpAcoLnOvPwF8K/WECuKrQJ+IfMl3\nrCqezxgzxdtNYoyJARcBB6mS5xOR1SJyqohMx/6/9gMR+X+A71AFz2eMqXerXowxceBibFbsiv/3\nc6amXxljZrtD7wWeZxTPVrFxFsaY92O9/DXAVhG5s8RdGhPGmO1Y5+EJwKvAGuwM5xvAO4HDwBUi\n8r9L1cfRYow5D/gh9n9AcW01NjL/ISr/+c4EHsT+t1gD7BKR9caYyVTB8/kxxpyPTc9zabU8nzHm\nNGA39r/LOmCbiNxZRc+3EHgACAG/AK4Gainw2SpWLBRFUZTxo1LNUIqiKMo4omKhKIqi5ETFQlEU\nRcmJioWiKIqSExULRVEUJScqFoqiKEpOVCyUCYcx5m2XJ+c5Y8wuY0x0nO7bZox53d37J8aYTmNM\n7Riu91ox+6coI6FioUxE/iAiS0TkTOAYcH3qF4wxQZXs/bnL0bMAGxB1xRiupUFSyrihYqFMdP6D\nROqYQ8aYB40xzwGnGGMuMsY8bozZ51Yg9QDGmKXGmB8ZY54xxjxhjIm7AkhfNcYcMMY8ZYzpGOmm\nInIcG8F+srtmjTHmC66I0jPGmE+643FjzGOuD88aYy4N9NdQlCyoWCgTEQPDyQ0/gE1DAjALuMet\nOF4H/h54r4j8CfAU8DfGmBCwE7hRRBZh63L8Efhr4LiILAA+Djzo8pZlu3cUOAf4vju+HPjfInIO\nNondXxpj2oAh4DLXh/cAG4v3MyhK/tSVugOKUgJixpin3ev/ALZiZ/j9rg4F2AJbpwM/ciapEPBj\nYA7wsog8DeBSrWOMeRdwtzv2gjGmH5gN/CTl3jPcvacD/yYi3ucXA2caYz7q3jdhxesl4E6XMvs4\ncJIx5kQRqcQMqEoFo2KhTERed36DYZyL4g/+Q8AjIvLfU743n5FrOvjPz8TPRWSJMeYErBBdIiL/\n5r5/o4g8mnK/T2CTSy4WkePGmF8C4+KQVxQ/aoZSJiLZBnL/8SeA84wxM2A4jfUs4AVgmjHmLHe8\nwe1o+g/gv7tjs7HO6xey3UNE/hNbhGa1O94F3OBMYxhjZjkfSTMw4ITiAmzp3VzPoShFR8VCmYhk\n20U0fFxEfovN97/DGPMs8DgwR0SOAVcC9xhjngEeASLAvUCtMeYAtkDQJ9x3R7rHN7EmsfOwKaT7\ngM0m9XEAAABeSURBVKedg30zNo30NmCp68NfYOtk5HoORSk6mqJcURRFyYmuLBRFUZScqFgoiqIo\nOVGxUBRFUXKiYqEoiqLkRMVCURRFyYmKhaIoipITFQtFURQlJyoWiqIoSk7+D2IEjyS90jUqAAAA\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1132efc50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"def scatterPlot(actual, predicted):\n",
" plt.scatter(actual, predicted)\n",
" range = [actual.min(), actual.max()]\n",
" plt.plot(range, range, 'black')\n",
" plt.xlabel(\"Preco Real\")\n",
" plt.ylabel(\"Preco Calculado\")\n",
" plt.show()\n",
" \n",
"scatterPlot(y, lr.predict(x))"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Validação Cruzada\n",
"\n",
"É possível verificar no gráfico acima que, para os preços mais altos, o modelo não representou bem os dados.\n",
"\n",
"Faremos uma validação cruzada para verificar esse comportamento. Os dados serão divididos em 5 grupos."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Fold 1] R²: 0.64\n",
"[Fold 2] R²: 0.71\n",
"[Fold 3] R²: 0.59\n",
"[Fold 4] R²: 0.08\n",
"[Fold 5] R²: -0.26\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS</th>\n",
" <th>OLS - CV</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MSE</th>\n",
" <td>21.9</td>\n",
" <td>37.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R²</th>\n",
" <td>0.741</td>\n",
" <td>0.56</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS OLS - CV\n",
"MSE 21.9 37.2\n",
"R² 0.741 0.56"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.cross_validation import KFold\n",
"\n",
"kf = KFold(len(x), n_folds=5)\n",
"p = np.zeros_like(y)\n",
"for k, (train, test) in enumerate(kf):\n",
" lr.fit(x.ix[train], y[train])\n",
" p[test] = lr.predict(x.ix[test])\n",
" print(\"[Fold {0}] R\\u00b2: {1:.2f}\".\n",
" format(k+1, lr.score(x.ix[test], y[test])))\n",
"\n",
"mse_ls_cv = mean_squared_error(y, p)\n",
"r2_ls_cv = r2_score(y, p)\n",
"\n",
"result_df['OLS - CV'] = [mse_ls_cv, r2_ls_cv]\n",
"result_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"É possível verificar que o $R^2$ foi baixo para os dois últimos grupos."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nD2X3yFMaYT4yAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10acbda20>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatterPlot(y, p)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Regressão LASSO\n",
"\n",
"Utilizaremos a técnica *Least Absolute Shrinkage and Selection Operator - LASSO* para selecionar as variáveis explicativas utilizando um parâmetro de regularização $\\alpha = 0.13$."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS</th>\n",
" <th>OLS - CV</th>\n",
" <th>LASSO</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MSE</th>\n",
" <td>21.9</td>\n",
" <td>37.2</td>\n",
" <td>22.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R²</th>\n",
" <td>0.741</td>\n",
" <td>0.56</td>\n",
" <td>0.732</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS OLS - CV LASSO\n",
"MSE 21.9 37.2 22.7\n",
"R² 0.741 0.56 0.732"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import Lasso\n",
"\n",
"alpha = 0.13\n",
"\n",
"las = Lasso(alpha=alpha)\n",
"las.fit(x, y)\n",
"\n",
"mse_lasso = mean_squared_error(y, las.predict(x))\n",
"r2_lasso = r2_score(y, las.predict(x))\n",
"\n",
"result_df['LASSO'] = [mse_lasso, r2_lasso]\n",
"result_df"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nSKRtAiXCkya5SCQhGzZsVLOUUpP09/enjJXlEos9hewb7wY0AQ8C1/j2PZdmhnouy7kl/kprn2zr\nRNtBPLXyal9fn2zbtk3i8YWSy2yzefMWaWyMi3VC+8NR50gy1DXIIe5FQXkzjJgTjm53rLcm9t+I\njYaaLevWXZ+2IFG7WF9HQuwCSMnBO9/yrhOr89Sf8Z1As0SjudtVlFqgXGLxZeBeZ47qBu4Bvlxs\nQzmu/3+Az6ftuxW4zv2sDu4C8fspwuF2CYVa3CCdcE/lSdNKU1NcIpE2iccXuaf/BSkzEc8hnPRl\nBA+e9tyIm2Gk+zSWuHZvE+uXONcdG5SIZx3aTU3xsTLobW3LJBpNSGOjVzV2ckJct2/f6Zzk89Pu\nZ5nAfRpaq9Q85RKLCPAJbCGff8IufhQptqEs1z4LWwzoaeyyrU9iCwdNBx5x0VEPAYks55fpq6xO\ncj0tZ1vPet266yUaTUg0aiOPQqGTJRm+6vkcFkt65JG3yJHNhJ4nqWaZee68kBMib0U8b5bhiYBX\nLnypJLOpT5TMSKnFYmcrycQ6/71mG7zLGeIavOrddIERDa1Vap5yiUUcaPS9bwSai22oHNtUEot8\nWcZ9fX0Sjy8Q2OIGteUCzWN29oGBAXnsscdy1nRKLhjULE1NcWloiAfMKPp9IpBZc8k6theK9Ut4\ny58+6TsmGnDedEmayGxiXTpBg3e5n/C97zx9cSadWSi1TrnE4ntAi+99C/DdYhsqx1btYlGK5B7P\nB5Eryzg5qJ2SMRD7j7NhpcvcwLzNmVXEt80R+MzYzCSZZ+HNKLwFhXqcCKSbnU4Rm2jXJnC1wKti\ny3x4M5mEWKe2tyCS57Pw51LE5JJL/jzwu6hE+WhvYaRoNFH3Wb3K1KFcYvF0IfsqsVWzWJSi3lBy\ncFyQMTB7ppBU89OApCajjUgkcurYk7rNbI64p2TPdJQ+M7hi7NzU0NV+d+5G106nJHMp/HWcmsSu\nL+Fds1mamprdufdLchlVz1G+xbVzuhMkW/QvWw2naDQh8fgCiUYTBa0FXiqmQlavMnUol1h8B1ju\ne/9W4P8W21A5tmoVi1LUG8r0QQSXAU8N9RyRpMkoWQ48EmmXtWuvkVAoLqm5Et6So4tTBmq7SNEz\nbmBPSGqo7JDvvNlOBKJiQ2FvlNTwWa/E+DOSzMyOZtyL3dcnSVPUPNm2bVue79T2taVl6VjdKkVR\n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\nnPxtVJG6AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11aa15dd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatterPlot(y, las.predict(x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Comparação dos coeficientes\n",
"\n",
"Abaixo podemos verificar que, ao penalizar os estimadores com um $\\alpha > 0$, quase todos os coeficientes ficaram com valores menores em módulo. O coeficiente de *AGE* ficou igual a 0, ou seja, o algoritmo eliminou um parâmetro da regressão."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Intercept</th>\n",
" <th>CRIM</th>\n",
" <th>ZN</th>\n",
" <th>INDUS</th>\n",
" <th>CHAS</th>\n",
" <th>NOX</th>\n",
" <th>RM</th>\n",
" <th>AGE</th>\n",
" <th>DIS</th>\n",
" <th>RAD</th>\n",
" <th>TAX</th>\n",
" <th>PTRATIO</th>\n",
" <th>B</th>\n",
" <th>LSTAT</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>OLS</th>\n",
" <td>22.5</td>\n",
" <td>-0.92</td>\n",
" <td>1.08</td>\n",
" <td>0.143</td>\n",
" <td>0.682</td>\n",
" <td>-2.06</td>\n",
" <td>2.67</td>\n",
" <td>0.0211</td>\n",
" <td>-3.1</td>\n",
" <td>2.66</td>\n",
" <td>-2.08</td>\n",
" <td>-2.06</td>\n",
" <td>0.857</td>\n",
" <td>-3.75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>LASSO</th>\n",
" <td>22.5</td>\n",
" <td>-0.537</td>\n",
" <td>0.596</td>\n",
" <td>-0.0366</td>\n",
" <td>0.65</td>\n",
" <td>-1.43</td>\n",
" <td>2.87</td>\n",
" <td>-0</td>\n",
" <td>-2.21</td>\n",
" <td>0.755</td>\n",
" <td>-0.479</td>\n",
" <td>-1.88</td>\n",
" <td>0.74</td>\n",
" <td>-3.73</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Intercept CRIM ZN INDUS CHAS NOX RM AGE DIS RAD \\\n",
"OLS 22.5 -0.92 1.08 0.143 0.682 -2.06 2.67 0.0211 -3.1 2.66 \n",
"LASSO 22.5 -0.537 0.596 -0.0366 0.65 -1.43 2.87 -0 -2.21 0.755 \n",
"\n",
" TAX PTRATIO B LSTAT \n",
"OLS -2.08 -2.06 0.857 -3.75 \n",
"LASSO -0.479 -1.88 0.74 -3.73 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"coef_df['LASSO'] = np.append([las.intercept_], las.coef_) \n",
"coef_df.T"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Validação Cruzada - LASSO\n",
"\n",
"Faremos também um teste de validação cruzada, dividindo os dados em 5 grupos.\n",
"\n",
"É possível verificar que o $R^2$ continua baixo para os dois últimos grupos, porém o $R^2$ geral da validação cruzada foi maior que o da validação cruzada no método de mínimos quadrados ordinários.\n",
"\n",
"Concluímos que, apesar de termos um ajuste pior da amostra de treino utilizando LASSO, o modelo se comporta melhor nos dados fora da amostra."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Fold 1] α: 0.13, R²: 0.69\n",
"[Fold 2] α: 0.13, R²: 0.74\n",
"[Fold 3] α: 0.13, R²: 0.58\n",
"[Fold 4] α: 0.13, R²: 0.06\n",
"[Fold 5] α: 0.13, R²: -0.04\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS</th>\n",
" <th>OLS - CV</th>\n",
" <th>LASSO</th>\n",
" <th>LASSO - CV</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MSE</th>\n",
" <td>21.9</td>\n",
" <td>37.2</td>\n",
" <td>22.7</td>\n",
" <td>35.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R²</th>\n",
" <td>0.741</td>\n",
" <td>0.56</td>\n",
" <td>0.732</td>\n",
" <td>0.58</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS OLS - CV LASSO LASSO - CV\n",
"MSE 21.9 37.2 22.7 35.5\n",
"R² 0.741 0.56 0.732 0.58"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kf = KFold(len(x), n_folds=5)\n",
"p = np.zeros_like(y)\n",
"for k, (train, test) in enumerate(kf):\n",
" las.fit(x.ix[train], y[train])\n",
" p[test] = las.predict(x.ix[test])\n",
" print(\"[Fold {0}] \\u03b1: {1:.2f}, R\\u00b2: {2:.2f}\".\n",
" format(k+1, alpha, las.score(x.ix[test], y[test])))\n",
"\n",
"mse_lasso_cv = mean_squared_error(y, p)\n",
"r2_lasso_cv = r2_score(y, p)\n",
"\n",
"result_df['LASSO - CV'] = [mse_lasso_cv, r2_lasso_cv]\n",
"result_df"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"image/png": "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\nSUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11ab30080>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatterPlot(y, p)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Caminho LASSO\n",
"\n",
"Com a visualização do *LASSO Path*, podemos ver o comportamento de cada coeficiente da regressão de acordo com a variação do parâmetro de regularização $\\alpha$.\n",
"\n",
"Quando $\\alpha$ é muito grande, a penalização é significativa e todos os coeficientes ficam muito próximos de 0. A medida que o $\\alpha$ tende a 0, os coeficientes se estabilizam e tendem aos valores calculados pelo método dos mínimos quadrados ordinários."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11aa77588>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"las = Lasso()\n",
"alphas = np.logspace(-3, 1.5, 1000)\n",
"alphas, coefs, _ = las.path(x, y, alphas=alphas)\n",
"\n",
"fig, ax = plt.subplots()\n",
"ax.plot(alphas, coefs.T)\n",
"ax.set_xscale('log')\n",
"ax.set_xlim(alphas.max(), alphas.min())\n",
"plt.vlines(alpha, coefs.min(), coefs.max())\n",
"plt.xlabel(\"Alpha\")\n",
"plt.ylabel(\"Coeficientes\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## LASSO com seleção automática do $\\alpha$\n",
"\n",
"Faremos uma implementação de validação cruzada para encontrar o melhor parâmetro de regularização $\\alpha$ de acordo com os dados da amostra."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Fold 1] α: 0.76, R²: 0.73\n",
"[Fold 2] α: 0.66, R²: 0.70\n",
"[Fold 3] α: 0.67, R²: 0.40\n",
"[Fold 4] α: 0.02, R²: 0.08\n",
"[Fold 5] α: 0.16, R²: -0.03\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS</th>\n",
" <th>OLS - CV</th>\n",
" <th>LASSO</th>\n",
" <th>LASSO - CV</th>\n",
" <th>LASSO - CV (α selection)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MSE</th>\n",
" <td>21.9</td>\n",
" <td>37.2</td>\n",
" <td>22.7</td>\n",
" <td>35.5</td>\n",
" <td>38.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R²</th>\n",
" <td>0.741</td>\n",
" <td>0.56</td>\n",
" <td>0.732</td>\n",
" <td>0.58</td>\n",
" <td>0.542</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS OLS - CV LASSO LASSO - CV LASSO - CV (α selection)\n",
"MSE 21.9 37.2 22.7 35.5 38.6\n",
"R² 0.741 0.56 0.732 0.58 0.542"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LassoCV\n",
"\n",
"las = LassoCV()\n",
"kf = KFold(len(x), n_folds=5)\n",
"p = np.zeros_like(y)\n",
"\n",
"for k, (train, test) in enumerate(kf):\n",
" las.fit(x.ix[train], y[train])\n",
" p[test] = las.predict(x.ix[test])\n",
" print(\"[Fold {0}] \\u03b1: {1:.2f}, R\\u00b2: {2:.2f}\".\n",
" format(k+1, las.alpha_, las.score(x.ix[test], y[test])))\n",
"\n",
"mse_lasso_cv_2 = mean_squared_error(y, p)\n",
"r2_lasso_cv_2 = r2_score(y, p)\n",
"\n",
"result_df['LASSO - CV (\\u03b1 selection)'] = [mse_lasso_cv_2, r2_lasso_cv_2]\n",
"result_df"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11ad2f048>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatterPlot(y, p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Regressão com termos de segunda ordem\n",
"\n",
"Repetiremos as regressões adicionando o quadrado das variáveis explicativas ao modelo. Vamos verificar se o modelo de segunda ordem pode predizer melhor o preço dos imóveis."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS X²</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Intercept</th>\n",
" <td>18.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CRIM</th>\n",
" <td>-2.96</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ZN</th>\n",
" <td>-0.988</td>\n",
" </tr>\n",
" <tr>\n",
" <th>INDUS</th>\n",
" <td>0.0311</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CHAS</th>\n",
" <td>0.0536</td>\n",
" </tr>\n",
" <tr>\n",
" <th>NOX</th>\n",
" <td>-2.62</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RM</th>\n",
" <td>1.89</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AGE</th>\n",
" <td>0.0627</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DIS</th>\n",
" <td>-3.24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RAD</th>\n",
" <td>3.83</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TAX</th>\n",
" <td>-2.23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PTRATIO</th>\n",
" <td>-1.32</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>-0.36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>LSTAT</th>\n",
" <td>-5.32</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CRIM²</th>\n",
" <td>0.213</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ZN²</th>\n",
" <td>0.397</td>\n",
" </tr>\n",
" <tr>\n",
" <th>INDUS²</th>\n",
" <td>0.331</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CHAS²</th>\n",
" <td>0.182</td>\n",
" </tr>\n",
" <tr>\n",
" <th>NOX²</th>\n",
" <td>-0.0441</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RM²</th>\n",
" <td>0.859</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AGE²</th>\n",
" <td>0.13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DIS²</th>\n",
" <td>0.599</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RAD²</th>\n",
" <td>-0.667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TAX²</th>\n",
" <td>0.427</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PTRATIO²</th>\n",
" <td>0.58</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B²</th>\n",
" <td>-0.318</td>\n",
" </tr>\n",
" <tr>\n",
" <th>LSTAT²</th>\n",
" <td>1.15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS X²\n",
"Intercept 18.7\n",
"CRIM -2.96\n",
"ZN -0.988\n",
"INDUS 0.0311\n",
"CHAS 0.0536\n",
"NOX -2.62\n",
"RM 1.89\n",
"AGE 0.0627\n",
"DIS -3.24\n",
"RAD 3.83\n",
"TAX -2.23\n",
"PTRATIO -1.32\n",
"B -0.36\n",
"LSTAT -5.32\n",
"CRIM² 0.213\n",
"ZN² 0.397\n",
"INDUS² 0.331\n",
"CHAS² 0.182\n",
"NOX² -0.0441\n",
"RM² 0.859\n",
"AGE² 0.13\n",
"DIS² 0.599\n",
"RAD² -0.667\n",
"TAX² 0.427\n",
"PTRATIO² 0.58\n",
"B² -0.318\n",
"LSTAT² 1.15"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"col2 = ['{0}\\u00b2'.format(c) for c in list(x.columns)]\n",
"df2 = x.copy()**2\n",
"df2.columns = col2\n",
"\n",
"x2 = pd.concat([x, df2], axis=1)\n",
"\n",
"lr = LinearRegression()\n",
"lr.fit(x2, y)\n",
"\n",
"coef_df_2 = pd.DataFrame(index=np.append(['Intercept'], x2.columns))\n",
"coef_df_2['OLS X\\u00b2'] = np.append([lr.intercept_], lr.coef_) \n",
"coef_df_2"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS</th>\n",
" <th>OLS - CV</th>\n",
" <th>LASSO</th>\n",
" <th>LASSO - CV</th>\n",
" <th>LASSO - CV (α selection)</th>\n",
" <th>OLS X²</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MSE</th>\n",
" <td>21.9</td>\n",
" <td>37.2</td>\n",
" <td>22.7</td>\n",
" <td>35.5</td>\n",
" <td>38.6</td>\n",
" <td>14.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R²</th>\n",
" <td>0.741</td>\n",
" <td>0.56</td>\n",
" <td>0.732</td>\n",
" <td>0.58</td>\n",
" <td>0.542</td>\n",
" <td>0.831</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS OLS - CV LASSO LASSO - CV LASSO - CV (α selection) OLS X²\n",
"MSE 21.9 37.2 22.7 35.5 38.6 14.3\n",
"R² 0.741 0.56 0.732 0.58 0.542 0.831"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mse_ls = mean_squared_error(y, lr.predict(x2))\n",
"r2_ls = r2_score(y, lr.predict(x2))\n",
"\n",
"result_df['OLS X\\u00b2'] = [mse_ls, r2_ls]\n",
"result_df"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11adb0240>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatterPlot(y, lr.predict(x2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Conforme esperado, vemos que o modelo de segunda ordem se encaixa melhor. Porém, faremos mais a frente a validação cruzada para verificar se não está ocorrendo *overfitting*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Regressão LASSO com termos de segunda ordem\n",
"\n",
"Dessa vez escolhemos um valor maior para $\\alpha$, visto que há agora um maior número de variáveis a serem eliminadas pelo modelo.\n",
"\n",
"Observamos um maior número de coeficientes iguais a 0."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS X²</th>\n",
" <th>LASSO X²</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Intercept</th>\n",
" <td>18.7</td>\n",
" <td>21.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CRIM</th>\n",
" <td>-2.96</td>\n",
" <td>-0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ZN</th>\n",
" <td>-0.988</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>INDUS</th>\n",
" <td>0.0311</td>\n",
" <td>-0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CHAS</th>\n",
" <td>0.0536</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>NOX</th>\n",
" <td>-2.62</td>\n",
" <td>-0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RM</th>\n",
" <td>1.89</td>\n",
" <td>2.23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AGE</th>\n",
" <td>0.0627</td>\n",
" <td>-0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DIS</th>\n",
" <td>-3.24</td>\n",
" <td>-0.74</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RAD</th>\n",
" <td>3.83</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TAX</th>\n",
" <td>-2.23</td>\n",
" <td>-0.216</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PTRATIO</th>\n",
" <td>-1.32</td>\n",
" <td>-1.39</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>-0.36</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>LSTAT</th>\n",
" <td>-5.32</td>\n",
" <td>-4.97</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CRIM²</th>\n",
" <td>0.213</td>\n",
" <td>-0.108</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ZN²</th>\n",
" <td>0.397</td>\n",
" <td>0.145</td>\n",
" </tr>\n",
" <tr>\n",
" <th>INDUS²</th>\n",
" <td>0.331</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CHAS²</th>\n",
" <td>0.182</td>\n",
" <td>0.215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>NOX²</th>\n",
" <td>-0.0441</td>\n",
" <td>-0.619</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RM²</th>\n",
" <td>0.859</td>\n",
" <td>1.03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AGE²</th>\n",
" <td>0.13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DIS²</th>\n",
" <td>0.599</td>\n",
" <td>-0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RAD²</th>\n",
" <td>-0.667</td>\n",
" <td>-0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TAX²</th>\n",
" <td>0.427</td>\n",
" <td>0.053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PTRATIO²</th>\n",
" <td>0.58</td>\n",
" <td>0.0311</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B²</th>\n",
" <td>-0.318</td>\n",
" <td>-0.236</td>\n",
" </tr>\n",
" <tr>\n",
" <th>LSTAT²</th>\n",
" <td>1.15</td>\n",
" <td>0.808</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS X² LASSO X²\n",
"Intercept 18.7 21.2\n",
"CRIM -2.96 -0\n",
"ZN -0.988 0\n",
"INDUS 0.0311 -0\n",
"CHAS 0.0536 0\n",
"NOX -2.62 -0\n",
"RM 1.89 2.23\n",
"AGE 0.0627 -0\n",
"DIS -3.24 -0.74\n",
"RAD 3.83 0\n",
"TAX -2.23 -0.216\n",
"PTRATIO -1.32 -1.39\n",
"B -0.36 0\n",
"LSTAT -5.32 -4.97\n",
"CRIM² 0.213 -0.108\n",
"ZN² 0.397 0.145\n",
"INDUS² 0.331 0\n",
"CHAS² 0.182 0.215\n",
"NOX² -0.0441 -0.619\n",
"RM² 0.859 1.03\n",
"AGE² 0.13 0\n",
"DIS² 0.599 -0\n",
"RAD² -0.667 -0\n",
"TAX² 0.427 0.053\n",
"PTRATIO² 0.58 0.0311\n",
"B² -0.318 -0.236\n",
"LSTAT² 1.15 0.808"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha = 0.20\n",
"\n",
"las = Lasso(alpha=alpha)\n",
"las.fit(x2, y)\n",
"\n",
"coef_df_2['LASSO X\\u00b2'] = np.append([las.intercept_], las.coef_) \n",
"coef_df_2"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS</th>\n",
" <th>OLS - CV</th>\n",
" <th>LASSO</th>\n",
" <th>LASSO - CV</th>\n",
" <th>LASSO - CV (α selection)</th>\n",
" <th>OLS X²</th>\n",
" <th>LASSO X²</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MSE</th>\n",
" <td>21.9</td>\n",
" <td>37.2</td>\n",
" <td>22.7</td>\n",
" <td>35.5</td>\n",
" <td>38.6</td>\n",
" <td>14.3</td>\n",
" <td>16.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R²</th>\n",
" <td>0.741</td>\n",
" <td>0.56</td>\n",
" <td>0.732</td>\n",
" <td>0.58</td>\n",
" <td>0.542</td>\n",
" <td>0.831</td>\n",
" <td>0.807</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS OLS - CV LASSO LASSO - CV LASSO - CV (α selection) OLS X² \\\n",
"MSE 21.9 37.2 22.7 35.5 38.6 14.3 \n",
"R² 0.741 0.56 0.732 0.58 0.542 0.831 \n",
"\n",
" LASSO X² \n",
"MSE 16.3 \n",
"R² 0.807 "
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mse_lasso = mean_squared_error(y, las.predict(x2))\n",
"r2_lasso = r2_score(y, las.predict(x2))\n",
"\n",
"result_df['LASSO X\\u00b2'] = [mse_lasso, r2_lasso]\n",
"result_df"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11a8911d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatterPlot(y, las.predict(x2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Validação Cruzada\n",
"\n",
"Faremos agora o teste de validação cruzada para o modelo com termos de segunda ordem."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Fold 1] R²: 0.68\n",
"[Fold 2] R²: 0.53\n",
"[Fold 3] R²: 0.82\n",
"[Fold 4] R²: 0.42\n",
"[Fold 5] R²: -0.25\n",
"-------------------\n",
"[Fold 1] α: 0.20, R²: 0.80\n",
"[Fold 2] α: 0.20, R²: 0.83\n",
"[Fold 3] α: 0.20, R²: 0.81\n",
"[Fold 4] α: 0.20, R²: 0.36\n",
"[Fold 5] α: 0.20, R²: 0.50\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>OLS</th>\n",
" <th>OLS - CV</th>\n",
" <th>LASSO</th>\n",
" <th>LASSO - CV</th>\n",
" <th>LASSO - CV (α selection)</th>\n",
" <th>OLS X²</th>\n",
" <th>LASSO X²</th>\n",
" <th>OLS X² - CV</th>\n",
" <th>LASSO X² - CV</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>MSE</th>\n",
" <td>21.9</td>\n",
" <td>37.2</td>\n",
" <td>22.7</td>\n",
" <td>35.5</td>\n",
" <td>38.6</td>\n",
" <td>14.3</td>\n",
" <td>16.3</td>\n",
" <td>30.6</td>\n",
" <td>21.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R²</th>\n",
" <td>0.741</td>\n",
" <td>0.56</td>\n",
" <td>0.732</td>\n",
" <td>0.58</td>\n",
" <td>0.542</td>\n",
" <td>0.831</td>\n",
" <td>0.807</td>\n",
" <td>0.638</td>\n",
" <td>0.746</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" OLS OLS - CV LASSO LASSO - CV LASSO - CV (α selection) OLS X² \\\n",
"MSE 21.9 37.2 22.7 35.5 38.6 14.3 \n",
"R² 0.741 0.56 0.732 0.58 0.542 0.831 \n",
"\n",
" LASSO X² OLS X² - CV LASSO X² - CV \n",
"MSE 16.3 30.6 21.4 \n",
"R² 0.807 0.638 0.746 "
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kf = KFold(len(x2), n_folds=5)\n",
"p = np.zeros_like(y)\n",
"for k, (train, test) in enumerate(kf):\n",
" lr.fit(x2.ix[train], y[train])\n",
" p[test] = lr.predict(x2.ix[test])\n",
" print(\"[Fold {0}] R\\u00b2: {1:.2f}\".\n",
" format(k+1, lr.score(x2.ix[test], y[test])))\n",
"\n",
"mse_ls_cv = mean_squared_error(y, p)\n",
"r2_ls_cv = r2_score(y, p)\n",
"\n",
"result_df['OLS X\\u00b2 - CV'] = [mse_ls_cv, r2_ls_cv]\n",
"\n",
"print('-------------------')\n",
"\n",
"p = np.zeros_like(y)\n",
"for k, (train, test) in enumerate(kf):\n",
" las.fit(x2.ix[train], y[train])\n",
" p[test] = las.predict(x2.ix[test])\n",
" print(\"[Fold {0}] \\u03b1: {1:.2f}, R\\u00b2: {2:.2f}\".\n",
" format(k+1, alpha, las.score(x2.ix[test], y[test])))\n",
"\n",
"mse_lasso_cv = mean_squared_error(y, p)\n",
"r2_lasso_cv = r2_score(y, p)\n",
"\n",
"result_df['LASSO X\\u00b2 - CV'] = [mse_lasso_cv, r2_lasso_cv]\n",
"\n",
"result_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusão\n",
"\n",
"Observamos na tabela anterior que nos testes de validação cruzada a regressão LASSO teve um desempenho superior em relação ao método dos mínimos quadrados ordinários. Podemos concluir, portanto, que a seleção de variáveis feita pela regularização melhorou o modelo para previsões (dados fora da amostra)."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3.0
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment