You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

600 lines
87 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Linear regression\n",
"\n",
"The linear regression is a training procedure based on a linear model. The model makes a prediction by simply computing a weighted sum of the input features, plus a constant term called the bias term (also called the intercept term):\n",
"\n",
"$$ \\hat{y}=\\theta_0 + \\theta_1 x_1 + \\theta_2 x_2 + \\cdots + \\theta_n x_n$$\n",
"\n",
"This can be writen more easy by using vector notation form for $m$ values. Therefore, the model will become:\n",
"\n",
"$$ \n",
" \\begin{bmatrix}\n",
" \\hat{y}^0 \\\\ \n",
" \\hat{y}^1\\\\\n",
" \\hat{y}^2\\\\\n",
" \\vdots \\\\\n",
" \\hat{y}^m\n",
" \\end{bmatrix}\n",
" =\n",
" \\begin{bmatrix}\n",
" 1 & x_1^0 & x_2^0 & \\cdots &x_n^0\\\\\n",
" 1 & x_1^1 & x_2^1 & \\cdots & x_n^1\\\\\n",
" \\vdots & \\vdots &\\vdots & \\cdots & \\vdots\\\\\n",
" 1 & x_1^m & x_2^m & \\cdots & x_n^m\n",
" \\end{bmatrix}\n",
"\n",
" \\begin{bmatrix}\n",
" \\theta_0 \\\\\n",
" \\theta_1 \\\\\n",
" \\theta_2 \\\\\n",
" \\vdots \\\\\n",
" \\theta_n\n",
" \\end{bmatrix}\n",
"$$\n",
"\n",
"Resulting:\n",
"\n",
"$$\\hat{y}= h_\\theta(x) = x \\theta $$\n",
"\n",
"**Now that we have our mode, how do we train it?**\n",
"\n",
"Please, consider that training the model means adjusting the parameters to reduce the error or minimizing the cost function. The most common performance measure of a regression model is the Mean Square Error (MSE). Therefore, to train a Linear Regression model, you need to find the value of θ that minimizes the MSE:\n",
"\n",
"$$ MSE(X,h_\\theta) = \\frac{1}{m} \\sum_{i=1}^{m} \\left(\\hat{y}^{(i)}-y^{(i)} \\right)^2$$\n",
"\n",
"\n",
"$$ MSE(X,h_\\theta) = \\frac{1}{m} \\sum_{i=1}^{m} \\left( x^{(i)}\\theta-y^{(i)} \\right)^2$$\n",
"\n",
"$$ MSE(X,h_\\theta) = \\frac{1}{m} \\left( x\\theta-y \\right)^T \\left( x\\theta-y \\right)$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"# The normal equation\n",
"\n",
"To find the value of $\\theta$ that minimizes the cost function, there is a closed-form solution that gives the result directly. This is called the **Normal Equation**; and can be find it by derivating the *MSE* equation as a function of $\\theta$ and making it equals to zero:\n",
"\n",
"\n",
"$$\\hat{\\theta} = (X^T X)^{-1} X^{T} y $$\n",
"\n",
"$$ Temp = \\theta_0 + \\theta_1 * t $$\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 24.218\n",
"1 23.154\n",
"2 24.347\n",
"3 24.411\n",
"4 24.411\n",
" ... \n",
"295 46.357\n",
"296 46.551\n",
"297 46.519\n",
"298 46.551\n",
"299 46.583\n",
"Name: 0, Length: 300, dtype: float64"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"df = pd.read_csv('data.csv')\n",
"y = df['0']\n",
"y"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x10dca4890>]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"plt.plot(y,'.r')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1., 0.],\n",
" [ 1., 1.],\n",
" [ 1., 2.],\n",
" [ 1., 3.],\n",
" [ 1., 4.],\n",
" [ 1., 5.],\n",
" [ 1., 6.],\n",
" [ 1., 7.],\n",
" [ 1., 8.],\n",
" [ 1., 9.],\n",
" [ 1., 10.],\n",
" [ 1., 11.],\n",
" [ 1., 12.],\n",
" [ 1., 13.],\n",
" [ 1., 14.],\n",
" [ 1., 15.],\n",
" [ 1., 16.],\n",
" [ 1., 17.],\n",
" [ 1., 18.],\n",
" [ 1., 19.],\n",
" [ 1., 20.],\n",
" [ 1., 21.],\n",
" [ 1., 22.],\n",
" [ 1., 23.],\n",
" [ 1., 24.],\n",
" [ 1., 25.],\n",
" [ 1., 26.],\n",
" [ 1., 27.],\n",
" [ 1., 28.],\n",
" [ 1., 29.],\n",
" [ 1., 30.],\n",
" [ 1., 31.],\n",
" [ 1., 32.],\n",
" [ 1., 33.],\n",
" [ 1., 34.],\n",
" [ 1., 35.],\n",
" [ 1., 36.],\n",
" [ 1., 37.],\n",
" [ 1., 38.],\n",
" [ 1., 39.],\n",
" [ 1., 40.],\n",
" [ 1., 41.],\n",
" [ 1., 42.],\n",
" [ 1., 43.],\n",
" [ 1., 44.],\n",
" [ 1., 45.],\n",
" [ 1., 46.],\n",
" [ 1., 47.],\n",
" [ 1., 48.],\n",
" [ 1., 49.],\n",
" [ 1., 50.],\n",
" [ 1., 51.],\n",
" [ 1., 52.],\n",
" [ 1., 53.],\n",
" [ 1., 54.],\n",
" [ 1., 55.],\n",
" [ 1., 56.],\n",
" [ 1., 57.],\n",
" [ 1., 58.],\n",
" [ 1., 59.],\n",
" [ 1., 60.],\n",
" [ 1., 61.],\n",
" [ 1., 62.],\n",
" [ 1., 63.],\n",
" [ 1., 64.],\n",
" [ 1., 65.],\n",
" [ 1., 66.],\n",
" [ 1., 67.],\n",
" [ 1., 68.],\n",
" [ 1., 69.],\n",
" [ 1., 70.],\n",
" [ 1., 71.],\n",
" [ 1., 72.],\n",
" [ 1., 73.],\n",
" [ 1., 74.],\n",
" [ 1., 75.],\n",
" [ 1., 76.],\n",
" [ 1., 77.],\n",
" [ 1., 78.],\n",
" [ 1., 79.],\n",
" [ 1., 80.],\n",
" [ 1., 81.],\n",
" [ 1., 82.],\n",
" [ 1., 83.],\n",
" [ 1., 84.],\n",
" [ 1., 85.],\n",
" [ 1., 86.],\n",
" [ 1., 87.],\n",
" [ 1., 88.],\n",
" [ 1., 89.],\n",
" [ 1., 90.],\n",
" [ 1., 91.],\n",
" [ 1., 92.],\n",
" [ 1., 93.],\n",
" [ 1., 94.],\n",
" [ 1., 95.],\n",
" [ 1., 96.],\n",
" [ 1., 97.],\n",
" [ 1., 98.],\n",
" [ 1., 99.],\n",
" [ 1., 100.],\n",
" [ 1., 101.],\n",
" [ 1., 102.],\n",
" [ 1., 103.],\n",
" [ 1., 104.],\n",
" [ 1., 105.],\n",
" [ 1., 106.],\n",
" [ 1., 107.],\n",
" [ 1., 108.],\n",
" [ 1., 109.],\n",
" [ 1., 110.],\n",
" [ 1., 111.],\n",
" [ 1., 112.],\n",
" [ 1., 113.],\n",
" [ 1., 114.],\n",
" [ 1., 115.],\n",
" [ 1., 116.],\n",
" [ 1., 117.],\n",
" [ 1., 118.],\n",
" [ 1., 119.],\n",
" [ 1., 120.],\n",
" [ 1., 121.],\n",
" [ 1., 122.],\n",
" [ 1., 123.],\n",
" [ 1., 124.],\n",
" [ 1., 125.],\n",
" [ 1., 126.],\n",
" [ 1., 127.],\n",
" [ 1., 128.],\n",
" [ 1., 129.],\n",
" [ 1., 130.],\n",
" [ 1., 131.],\n",
" [ 1., 132.],\n",
" [ 1., 133.],\n",
" [ 1., 134.],\n",
" [ 1., 135.],\n",
" [ 1., 136.],\n",
" [ 1., 137.],\n",
" [ 1., 138.],\n",
" [ 1., 139.],\n",
" [ 1., 140.],\n",
" [ 1., 141.],\n",
" [ 1., 142.],\n",
" [ 1., 143.],\n",
" [ 1., 144.],\n",
" [ 1., 145.],\n",
" [ 1., 146.],\n",
" [ 1., 147.],\n",
" [ 1., 148.],\n",
" [ 1., 149.],\n",
" [ 1., 150.],\n",
" [ 1., 151.],\n",
" [ 1., 152.],\n",
" [ 1., 153.],\n",
" [ 1., 154.],\n",
" [ 1., 155.],\n",
" [ 1., 156.],\n",
" [ 1., 157.],\n",
" [ 1., 158.],\n",
" [ 1., 159.],\n",
" [ 1., 160.],\n",
" [ 1., 161.],\n",
" [ 1., 162.],\n",
" [ 1., 163.],\n",
" [ 1., 164.],\n",
" [ 1., 165.],\n",
" [ 1., 166.],\n",
" [ 1., 167.],\n",
" [ 1., 168.],\n",
" [ 1., 169.],\n",
" [ 1., 170.],\n",
" [ 1., 171.],\n",
" [ 1., 172.],\n",
" [ 1., 173.],\n",
" [ 1., 174.],\n",
" [ 1., 175.],\n",
" [ 1., 176.],\n",
" [ 1., 177.],\n",
" [ 1., 178.],\n",
" [ 1., 179.],\n",
" [ 1., 180.],\n",
" [ 1., 181.],\n",
" [ 1., 182.],\n",
" [ 1., 183.],\n",
" [ 1., 184.],\n",
" [ 1., 185.],\n",
" [ 1., 186.],\n",
" [ 1., 187.],\n",
" [ 1., 188.],\n",
" [ 1., 189.],\n",
" [ 1., 190.],\n",
" [ 1., 191.],\n",
" [ 1., 192.],\n",
" [ 1., 193.],\n",
" [ 1., 194.],\n",
" [ 1., 195.],\n",
" [ 1., 196.],\n",
" [ 1., 197.],\n",
" [ 1., 198.],\n",
" [ 1., 199.],\n",
" [ 1., 200.],\n",
" [ 1., 201.],\n",
" [ 1., 202.],\n",
" [ 1., 203.],\n",
" [ 1., 204.],\n",
" [ 1., 205.],\n",
" [ 1., 206.],\n",
" [ 1., 207.],\n",
" [ 1., 208.],\n",
" [ 1., 209.],\n",
" [ 1., 210.],\n",
" [ 1., 211.],\n",
" [ 1., 212.],\n",
" [ 1., 213.],\n",
" [ 1., 214.],\n",
" [ 1., 215.],\n",
" [ 1., 216.],\n",
" [ 1., 217.],\n",
" [ 1., 218.],\n",
" [ 1., 219.],\n",
" [ 1., 220.],\n",
" [ 1., 221.],\n",
" [ 1., 222.],\n",
" [ 1., 223.],\n",
" [ 1., 224.],\n",
" [ 1., 225.],\n",
" [ 1., 226.],\n",
" [ 1., 227.],\n",
" [ 1., 228.],\n",
" [ 1., 229.],\n",
" [ 1., 230.],\n",
" [ 1., 231.],\n",
" [ 1., 232.],\n",
" [ 1., 233.],\n",
" [ 1., 234.],\n",
" [ 1., 235.],\n",
" [ 1., 236.],\n",
" [ 1., 237.],\n",
" [ 1., 238.],\n",
" [ 1., 239.],\n",
" [ 1., 240.],\n",
" [ 1., 241.],\n",
" [ 1., 242.],\n",
" [ 1., 243.],\n",
" [ 1., 244.],\n",
" [ 1., 245.],\n",
" [ 1., 246.],\n",
" [ 1., 247.],\n",
" [ 1., 248.],\n",
" [ 1., 249.],\n",
" [ 1., 250.],\n",
" [ 1., 251.],\n",
" [ 1., 252.],\n",
" [ 1., 253.],\n",
" [ 1., 254.],\n",
" [ 1., 255.],\n",
" [ 1., 256.],\n",
" [ 1., 257.],\n",
" [ 1., 258.],\n",
" [ 1., 259.],\n",
" [ 1., 260.],\n",
" [ 1., 261.],\n",
" [ 1., 262.],\n",
" [ 1., 263.],\n",
" [ 1., 264.],\n",
" [ 1., 265.],\n",
" [ 1., 266.],\n",
" [ 1., 267.],\n",
" [ 1., 268.],\n",
" [ 1., 269.],\n",
" [ 1., 270.],\n",
" [ 1., 271.],\n",
" [ 1., 272.],\n",
" [ 1., 273.],\n",
" [ 1., 274.],\n",
" [ 1., 275.],\n",
" [ 1., 276.],\n",
" [ 1., 277.],\n",
" [ 1., 278.],\n",
" [ 1., 279.],\n",
" [ 1., 280.],\n",
" [ 1., 281.],\n",
" [ 1., 282.],\n",
" [ 1., 283.],\n",
" [ 1., 284.],\n",
" [ 1., 285.],\n",
" [ 1., 286.],\n",
" [ 1., 287.],\n",
" [ 1., 288.],\n",
" [ 1., 289.],\n",
" [ 1., 290.],\n",
" [ 1., 291.],\n",
" [ 1., 292.],\n",
" [ 1., 293.],\n",
" [ 1., 294.],\n",
" [ 1., 295.],\n",
" [ 1., 296.],\n",
" [ 1., 297.],\n",
" [ 1., 298.],\n",
" [ 1., 299.]])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"n = len(y)\n",
"x = np.linspace(0,n-1,n)\n",
"X = np.c_[np.ones(n), x]\n",
"X"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([25.70275643, 0.07850281])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)\n",
"theta"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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T0tLC/bv32+4PxqNBhcvXkRtba3hnD179qCrq8vwj6OvkiQJ58+fR0xMDADfuleyLGPhwoXYtm0b9uzZg+HDhxs9bsnfPY1Gg8OHDxsFbLt27UJwcDDGjh3rnB/ESfq7X6YcPHgQAIzeX75yv3rq6upCe3u7+72v7Fq+6qZKSkpkf39/+a233pK/+OILef78+XJoaKhRRa8vWrp0qbx37175+PHj8qeffipPmzZNHjJkiHz27FlZlmU5PT1djouLk/fs2SPX1NTIGo1G1mg0Lh6181y6dEk+cOCAfODAARmA/Nprr8kHDhyQGxsbZVmW5fz8fDk0NFT+4IMP5EOHDskPPPCAPHz4cPnbb781XOPuu++Wf/jDH8r79++X9+3bJycmJsqPPfaYq34khzF3ry5duiRnZmbKlZWV8vHjx+V//OMf8o9+9CM5MTFRvnLliuEavnKvnnvuOTkkJETeu3evfPr0acPX5cuXDef093fv2rVr8rhx4+S77rpLPnjwoLxjxw45IiJCzs3NdcWP5FD93a/6+np51apVck1NjXz8+HH5gw8+kEeMGCFPmjTJcA1fuV/Lli2Ty8vL5ePHj8uHDh2Sly1bJguCIH/88ceyLLvX+8ongg9ZluXf/e53clxcnOzn5yffeuutclVVlauH5HKPPPKIHBMTI/v5+ck/+MEP5EceeUSur683PP7tt9/KP//5z+Xrr79eDggIkB966CH59OnTLhyxc5WVlckAen099dRTsizr2m3/+7//W46KipL9/f3lqVOnykePHjW6xvnz5+XHHntMDgwMlIODg+Wnn35avnTpkgt+Gscyd68uX74s33XXXXJERIQ8YMAAOT4+Xp43b16v4N9X7pWp+wRA3rhxo+EcS/7uNTQ0yPfcc488aNAgeciQIfLSpUvlq1evOvmncbz+7teJEyfkSZMmyWFhYbK/v7+ckJAgZ2Vlyc3NzUbX8YX79cwzz8jx8fGyn5+fHBERIU+dOtUQeMiye72vBFmWZfvmUoiIiIj65vU1H0REROReGHwQERGRUzH4ICIiIqdi8EFEREROxeCDiIiInIrBBxERETkVgw8iIiJyKgYfRERE5FQMPoiIiMipGHwQERGRUzH4ICIiIqdi8EFERERO9f8Ba+nVHBqr/1IAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ypre = X.dot(theta)\n",
"plt.plot(x, ypre, '*-r', label='model')\n",
"plt.plot(x,y, '.k', label='data')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Polynomial model\n",
"\n",
"$$ y = \\theta_0+\\theta_1 t+\\theta_2 t^2++\\theta_3 t^3$$"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 2.28848082e+01, 1.35240024e-01, -1.89756565e-04])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X = np.c_[np.ones(len(x)), x, x*x]\n",
"theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)\n",
"theta"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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9qzVrVs364477rC2bNlirVixwmrTpo01efLkQHxL9aa6a5Wbm2v94Q9/sDZt2mTt3r3beu+996xLL73UuvXWWz3PESrXyrIsa9KkSVZWVpa1e/dua+vWrdakSZMswzCsf//735ZlBd/rKiTCh2VZ1l/+8herY8eOVlhYmHX99ddb69evD/SQAu6BBx6w2rdvb4WFhVmXXHKJ9cADD1i5ubme4z/++KP12GOPWRdffLHVvHlz67777rP27dsXwBH7T2ZmpgWUe3v44Ycty3Ivt/39739vtWvXzgoPD7f69u1r7dy50+s5Dh8+bP3yl7+0IiIirMjISOvRRx+1jh8/HoDvpv5Vdb1Onjxp3XHHHVabNm2spk2bWvHx8dbQoUPLhf9QuF4VXSPAev311z3n1OTfXV5entW/f3+rWbNmVuvWra2xY8daZ86c8fN3U7+qu1b5+fnWrbfeakVHR1vh4eFWQkKCNX78eKugoMDreULhWlmWZf3mN7+x4uPjrbCwMKtNmzZW3759PcHDsoLvdWVYlmXV/XyKiIiISMUafc2HiIiIBBeFDxEREfErhQ8RERHxK4UPERER8SuFDxEREfErhQ8RERHxK4UPERER8SuFDxEREfErhQ8RERHxK4UPERER8SuFDxEREfErhQ8RERHxq/8P+U1S7QKWuxQAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Xnew1 = np.linspace(0,300,50)\n",
"Xnew = np.c_[np.ones(len(Xnew1)), Xnew1, Xnew1*Xnew1]\n",
"ypred = Xnew.dot(theta)\n",
"plt.plot(Xnew1, ypred, '*-r', label='model')\n",
"plt.plot(x,y, '.g', label='data')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Batch gradient descent\n",
"$$ \\theta_{new} = \\theta - \\eta \\nabla_{\\theta} $$ \n",
"$$\\nabla = \\frac{2}{m}X^T(X\\theta-y) $$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.12.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}