{ "cells": [ { "cell_type": "markdown", "id": "9496e038", "metadata": {}, "source": [ "# Lineare Regression mit 1 Feature ($d=1$)" ] }, { "cell_type": "code", "execution_count": 1, "id": "5754d665", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "# plotting settings\n", "pd.plotting.register_matplotlib_converters()\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "id": "282549b7", "metadata": {}, "source": [ "Wir verwenden hier beispielhaft den Datensatz [Melbourne Housing Snapshot](https://www.kaggle.com/datasets/dansbecker/melbourne-housing-snapshot). Diesen finden Sie auch im Moodle unter `data/melb_data.csv`." ] }, { "cell_type": "code", "execution_count": 2, "id": "cfe20800", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG',\n", " 'Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car',\n", " 'Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude',\n", " 'Longtitude', 'Regionname', 'Propertycount'],\n", " dtype='object')" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "melbourne_file_path = 'data/melb_data.csv'\n", "melbourne_data = pd.read_csv(melbourne_file_path)\n", "melbourne_data = melbourne_data.dropna(axis=0) # entfernen von Daten mit fehlenden Werten\n", "melbourne_data.columns # Spaltennamen der Tabelle (potentielle Features)" ] }, { "cell_type": "code", "execution_count": 3, "id": "e13b23ac", "metadata": {}, "outputs": [ { "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", " \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", " \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", " \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", " \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", " \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", " \n", "
SuburbAddressRoomsTypePriceMethodSellerGDateDistancePostcode...BathroomCarLandsizeBuildingAreaYearBuiltCouncilAreaLattitudeLongtitudeRegionnamePropertycount
1Abbotsford25 Bloomburg St2h1035000.0SBiggin4/02/20162.53067.0...1.00.0156.079.01900.0Yarra-37.8079144.9934Northern Metropolitan4019.0
2Abbotsford5 Charles St3h1465000.0SPBiggin4/03/20172.53067.0...2.00.0134.0150.01900.0Yarra-37.8093144.9944Northern Metropolitan4019.0
4Abbotsford55a Park St4h1600000.0VBNelson4/06/20162.53067.0...1.02.0120.0142.02014.0Yarra-37.8072144.9941Northern Metropolitan4019.0
6Abbotsford124 Yarra St3h1876000.0SNelson7/05/20162.53067.0...2.00.0245.0210.01910.0Yarra-37.8024144.9993Northern Metropolitan4019.0
7Abbotsford98 Charles St2h1636000.0SNelson8/10/20162.53067.0...1.02.0256.0107.01890.0Yarra-37.8060144.9954Northern Metropolitan4019.0
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " Suburb Address Rooms Type Price Method SellerG \\\n", "1 Abbotsford 25 Bloomburg St 2 h 1035000.0 S Biggin \n", "2 Abbotsford 5 Charles St 3 h 1465000.0 SP Biggin \n", "4 Abbotsford 55a Park St 4 h 1600000.0 VB Nelson \n", "6 Abbotsford 124 Yarra St 3 h 1876000.0 S Nelson \n", "7 Abbotsford 98 Charles St 2 h 1636000.0 S Nelson \n", "\n", " Date Distance Postcode ... Bathroom Car Landsize BuildingArea \\\n", "1 4/02/2016 2.5 3067.0 ... 1.0 0.0 156.0 79.0 \n", "2 4/03/2017 2.5 3067.0 ... 2.0 0.0 134.0 150.0 \n", "4 4/06/2016 2.5 3067.0 ... 1.0 2.0 120.0 142.0 \n", "6 7/05/2016 2.5 3067.0 ... 2.0 0.0 245.0 210.0 \n", "7 8/10/2016 2.5 3067.0 ... 1.0 2.0 256.0 107.0 \n", "\n", " YearBuilt CouncilArea Lattitude Longtitude Regionname \\\n", "1 1900.0 Yarra -37.8079 144.9934 Northern Metropolitan \n", "2 1900.0 Yarra -37.8093 144.9944 Northern Metropolitan \n", "4 2014.0 Yarra -37.8072 144.9941 Northern Metropolitan \n", "6 1910.0 Yarra -37.8024 144.9993 Northern Metropolitan \n", "7 1890.0 Yarra -37.8060 144.9954 Northern Metropolitan \n", "\n", " Propertycount \n", "1 4019.0 \n", "2 4019.0 \n", "4 4019.0 \n", "6 4019.0 \n", "7 4019.0 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "melbourne_data.head()" ] }, { "cell_type": "code", "execution_count": 4, "id": "8680d0c9", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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E8xhEepmUuoHKQCwvaAU8z46BJ3eFKSRERFRWxLUGZV58+ahsrISKSkpkEgksFqteOGFFzB58mSP1xuNRhiNRsfvKysrm2uobU5ptcktSLHbXlCK0moTl4CIiKjJBXVG5T//+Q/ef/99fPDBB9i/fz/Wrl2LV155BWvXrvV4/dKlSxEdHe34lZCQ0MwjbjsqDWaf56v8nCciIgoEkRDEEpuEhATMmzcPM2fOdBx7/vnn8a9//QsnTpxwu97TjEpCQgJ0Oh2ioqKaZcxtxemSaox47Xuv57c+fhu6x0U044iIiKi1qKysRHR0dIO+v4O69KPX6yEWu07qSCQS2Gw2j9fL5XLI5fLmGFqbp4mQYViyBts9LP8MS9ZAE8FlHyIianpBXfoZP348XnjhBWzZsgU///wzNmzYgNdeew0TJ04M5rAIQLRKhmWT+mJYssbl+LBkDZZP6sv8FCIiahZBXfqpqqrCggULsGHDBpSUlCA+Ph7Z2dl49tlnIZP5/yJszNQRXR97H5UqgxmRCik0EeyjQkREN6Yx399BDVRuFAMVIiKilqcx39/c64eIiIhCFgMVIiIiClkMVIiIiChkBbU8ma4fNwskIqK2gIFKC8TNAomIqK3g0k8Lw80CiYioLWGg0sI0ZLNAIiKi1oKBSgvDzQKJiKgtYaDSwkQppD7PR/o5T0RE1JIwUGlh7JsFesLNAomIqLVhoNLCcLNAIiJqS1ie3ALFxyixMjuNmwUSEVGrx0ClhYpWMTAhIqLWj0s/REREFLIYqBAREVHIYqBCREREIYuBChEREYUsBipEREQUshioEBERUchioEJEREQhi4EKERERhSwGKkRERBSyGKgQERFRyGKgQkRERCGLgQoRERGFLAYqREREFLIYqBAREVHIYqBCREREIYuBChEREYUsBipEREQUshioEBERUchioEJEREQhi4EKERERhSwGKkRERBSyGKgQERFRyGKgQkRERCGLgQoRERGFLAYqREREFLIYqBAREVHIYqBCREREIYuBChEREYUsBipEREQUshioEBERUchioEJEREQhi4EKERERhSwGKkRERBSyGKgQERFRyAoL9gCoeej0JpRWm1BpMCNKKYUmXIZolSzYwyIiIvKJgUobcL6iFnM/OoQdBaWOY8OSNVg2qS/iY5RBHBkREZFvXPpp5XR6k1uQAgDb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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.scatterplot(x=melbourne_data['BuildingArea'], y=melbourne_data['Price'])" ] }, { "cell_type": "code", "execution_count": 5, "id": "da3b8409", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 79.00\n", "2 150.00\n", "4 142.00\n", "6 210.00\n", "7 107.00\n", " ... \n", "12205 149.00\n", "12206 115.00\n", "12207 35.64\n", "12209 61.60\n", "12212 388.50\n", "Name: BuildingArea, Length: 6196, dtype: float64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "melbourne_data['BuildingArea']" ] }, { "cell_type": "code", "execution_count": 6, "id": "c1172236", "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BuildingAreaPrice
179.01035000.0
2150.01465000.0
4142.01600000.0
6210.01876000.0
7107.01636000.0
\n", "
" ], "text/plain": [ " BuildingArea Price\n", "1 79.0 1035000.0\n", "2 150.0 1465000.0\n", "4 142.0 1600000.0\n", "6 210.0 1876000.0\n", "7 107.0 1636000.0" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# wählen für unser Beispiel einen kleinen Ausschnitt aus den Daten\n", "max_area = 400\n", "max_datapoints = 100\n", "data = melbourne_data[melbourne_data['BuildingArea'] < max_area][:max_datapoints][['BuildingArea', 'Price']]\n", "data.head()" ] }, { "cell_type": "code", "execution_count": 7, "id": "8f9dec63", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "100" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(data)" ] }, { "cell_type": "code", "execution_count": 8, "id": "f1293084", "metadata": {}, "outputs": [ { "data": { "image/png": "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sQgqAADAWAQVAABgLIIKAAAwFkEFAAAYi6ACAACMRVABAADGiuol9Fu2KaqsrLS5JQAAoKNartsd2W4wqoPK2bNnJUn5+fk2twQAAHTW2bNn5XK5/D4mqndPbm5u1rFjx9S9e3c5HA67m2OryspK5efn6+jRo+wk3Qmct+Bx7oLDeQse5y44Jp43y7J09uxZ9e7dWwkJ/qtQorpHJSEhQX369LG7GUZxOp3GvBCjCecteJy74HDegse5C45p5y1QT0oLimkBAICxCCoAAMBYBJUYkZKSop/97GdKSUmxuylRhfMWPM5dcDhvwePcBSfaz1tUF9MCAIDYRo8KAAAwFkEFAAAYi6ACAACMRVCJIg8++KAcDofX1+DBgz3319bWatasWcrOzlZmZqamTJmizz77zMYW22fTpk2aOHGievfuLYfDodWrV3vdb1mWHnjgAeXl5SktLU3jxo3TwYMHvR5z+vRp3X777XI6ncrKytKdd96pqqqqCD6LyAt03qZPn97mNTh+/Hivx8TjeVu4cKGuuuoqde/eXbm5ubr55pt14MABr8d05O/zyJEjuvHGG5Wenq7c3Fz96Ec/UmNjYySfSsR15Nxdc801bV53d911l9dj4u3cLVmyRMXFxZ61UUaOHKnXX3/dc38svd4IKlHm8ssv1/Hjxz1fmzdv9tz3gx/8QK+99ppWrlypjRs36tixY7rllltsbK19zp07p6FDh+q///u/fd7/+OOPa/HixXrmmWf07rvvKiMjQzfccINqa2s9j7n99tv1/vvv66233tKaNWu0adMmfe9734vUU7BFoPMmSePHj/d6Da5YscLr/ng8bxs3btSsWbP0t7/9TW+99ZYaGhp0/fXX69y5c57HBPr7bGpq0o033qj6+npt3bpVf/jDH7R8+XI98MADdjyliOnIuZOk7373u16vu8cff9xzXzyeuz59+mjRokXauXOnduzYoeuuu06TJk3S+++/LynGXm8WosbPfvYza+jQoT7vq6iosJKSkqyVK1d6btu/f78lydq2bVuEWmgmSdaqVas83zc3N1u9evWynnjiCc9tFRUVVkpKirVixQrLsixr3759liRr+/btnse8/vrrlsPhsD799NOItd1O5583y7KsadOmWZMmTWr3ZzhvXzh58qQlydq4caNlWR37+/zLX/5iJSQkWCdOnPA8ZsmS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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = sns.scatterplot(x=data['BuildingArea'], y=data['Price'])" ] }, { "cell_type": "code", "execution_count": 30, "id": "00dc4dee", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BuildingArea 79.0\n", "Price 1035000.0\n", "Name: 1, dtype: float64\n", "[[1, 79.0]]\n" ] } ], "source": [ "X = []\n", "Y = []\n", "for _, row in data.iterrows():\n", " X.append([1] + [row['BuildingArea']])\n", " Y.append(row['Price'])\n", " break\n", "X = np.array(X)\n", "Y = np.array(Y)\n", "print(X[:5], Y[:5])" ] }, { "cell_type": "code", "execution_count": 10, "id": "efecad93", "metadata": {}, "outputs": [], "source": [ "def h_w(x, w):\n", " return w[0] + w[1]*x" ] }, { "cell_type": "markdown", "id": "e0577f21", "metadata": {}, "source": [ "## Analytische Lösung der linearen Regression\n", "\n", "`np.linalg.solve(A, b)` berechnet $w$ im linearen Gleichungssystem\n", "\n", "$ A w = b $\n", "\n", "$A$ - Matrix,\n", "$w$ - Vektor (unsere unbekannten),\n", "$b$ - Vektor.\n", "\n", "Wir suchen die Lösung $w$ im folgenden Gleichungssystem:\n", "\n", "$$ X^T X w = X^T Y $$\n", "\n", "Mit $A = X^TX$ und $b = X^T Y$ berechnet `np.linalg.solve(A, b)` unsere gesuchten Paramter für die lineare Regression." ] }, { "cell_type": "code", "execution_count": 11, "id": "35a78137", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 42 µs, sys: 7 µs, total: 49 µs\n", "Wall time: 51.3 µs\n" ] } ], "source": [ "%%time\n", "w_ana = np.linalg.solve(X.T @ X, X.T @ Y)" ] }, { "cell_type": "code", "execution_count": 12, "id": "9a6041bd", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[441524.42083181 6024.22929588]\n" ] } ], "source": [ "print(w_ana)" ] }, { "cell_type": "markdown", "id": "f51a85af", "metadata": {}, "source": [ "Plot der analytischen Lösung" ] }, { "cell_type": "code", "execution_count": 13, "id": "6486ec38", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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3bp1uP7667F8+XK5m0JERESCCZXzh7/11lv47LPPcPjw4VE932QywWQy2b82Go3eahoREREJQLYelfr6ejz44IN44403EBkZOarv2bRpE9Rqtf1fenq6l1tJREREclJIkiTJ8YN37NiBm2++GSEhIfbHLBYLFAoFlEolTCaTwzHAeY9Keno6DAYDVCqVz9pORERE7jMajVCr1aO6f8s29FNUVIQTJ044PHb33XdDp9Nhw4YNQ0IKAERERCAiIsJXTSQiIiKZyRZU4uLikJub6/BYTEwMkpKShjxOREREwUn2VT9EREREw5F11c9gpaWlcjeBiIiIBMIeFSIiIhIWgwoREREJi0GFiIiIhMWgQkRERMJiUCEiIiJhMagQERGRsBhUiIiISFgMKkRERCQsBhUiIiISFoMKERERCYtBhYiIiITFoEJERETCYlAhIiIiYTGoEBERkbAYVIiIiEhYDCpEREQkLAYVIiIiEhaDChEREQmLQYWIiIiExaBCREREwmJQISIiImExqBAREZGwGFSIiIhIWAwqREREJCwGFSIiIhIWgwoREREJi0GFiIiIhMWgQkRERMJiUCEiIiJhMagQERGRsBhUiIiISFgMKkRERCQsBhUiIiISFoMKERERCYtBhYiIiITFoEJERETCYlAhIiIiYTGoEBERkbAYVIiIiEhYDCpEREQkLAYVIiIiEhaDChEREQmLQYWIiIiExaBCREREwmJQISIiImExqBAREZGwGFSIiIhIWAwqREREJCwGFSIiIhIWgwoREREJi0GFiIiIhMWgQkRERMJiUCEiIiJhMagQERGRsBhUiIiISFgMKkRERCQsBhUiIiISFoMKERERCYtBhYiIiITFoEJERETCYlAhIiIiYTGoEBERkbAYVIiIiEhYDCpEREQkLAYVIiIiEhaDChEREQkrVO4GEJG4DF1mNHWYYezphSoqDJqYcKijw+VuFhEFEVl7VF5++WXk5eVBpVJBpVKhoKAAH3zwgZxNIqJLzrd1Y/22MhS9uAc3//4Ail7Ygwe2leF8W7fcTSOiICJrUJk0aRI2b96Mo0eP4siRIygsLMSqVavw+eefy9ksoqBn6DJjw9+P45PqJofH91Y34dG/H4ehyyxTy4go2Mg69HPjjTc6fP3UU0/h5ZdfxqeffopZs2bJ1CoiauowDwkp/fZWN6Gpw8wh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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = sns.scatterplot(x=data['BuildingArea'], y=data['Price'])\n", "\n", "xplot = [min(data['BuildingArea']), max(data['BuildingArea'])]\n", "yplot = [h_w(x, w_ana) for x in xplot]\n", "sns.lineplot(x=xplot, y=yplot, ax=ax)" ] }, { "cell_type": "code", "execution_count": 14, "id": "aab92a40", "metadata": {}, "outputs": [], "source": [ "# Definition der Kostenfunktion\n", "def J(w, x, y):\n", " \"\"\"w, x, y müssen numpy arrays sein\"\"\"\n", " errors = y - h_w(x=x, w=w)\n", " mse = 1.0/(2.0*len(errors)) * ( errors @ errors )\n", " return mse" ] }, { "cell_type": "code", "execution_count": 15, "id": "7ef64eb2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Kosten der analytischen Lösung: 200141433273.1325\n" ] } ], "source": [ "x = data['BuildingArea'].to_numpy(copy=True)\n", "y = data['Price'].to_numpy(copy=True)\n", "J_ana = J(w=w_ana, x=x, y=y)\n", "print('Kosten der analytischen Lösung: {}'.format(J_ana))" ] }, { "cell_type": "code", "execution_count": 16, "id": "0272e5ad", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([441524.42083181, 6024.22929588])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w_ana" ] }, { "cell_type": "markdown", "id": "217f80c5", "metadata": {}, "source": [ "## Numerische Lösung mit Gradient Descent" ] }, { "cell_type": "code", "execution_count": 17, "id": "6cda3066", "metadata": {}, "outputs": [], "source": [ "def grad_desc_upd(w, alpha, x, y):\n", " \"\"\"y, x sind Vektoren (numpy-arrays)\"\"\"\n", " errors = y - h_w(x=x, w=w)\n", " w_0_upd = w[0] + alpha / len(x) * sum(errors)\n", " \n", " errors_x_x1 = errors @ x\n", " w_1_upd = w[1] + alpha / len(x) * errors_x_x1\n", " return [w_0_upd, w_1_upd]" ] }, { "cell_type": "code", "execution_count": 18, "id": "b349e5ab", "metadata": {}, "outputs": [], "source": [ "def grad_desc(w, alpha, x, y, n_iterations):\n", " J_all = [J(w=w, x=x, y=y)]\n", " for it in range(n_iterations):\n", " w = grad_desc_upd(w=w, alpha=alpha, x=x, y=y)\n", " J_all.append(J(w=w, x=x, y=y))\n", " return w, J_all" ] }, { "cell_type": "code", "execution_count": 19, "id": "b87084ca", "metadata": {}, "outputs": [], "source": [ "w_tmp, J_tmp = grad_desc(w=[1e5, 1000.], alpha=1e-9, x=data['BuildingArea'].to_numpy(), y=data['Price'].to_numpy(), n_iterations=1)" ] }, { "cell_type": "code", "execution_count": 20, "id": "a129a532", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9999715711803561" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "J_tmp[1]/J_tmp[0]" ] }, { "cell_type": "code", "execution_count": 21, "id": "fd1bb601", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w_gd_1e4: [915045.6766397628, 2959.2952860626924]\n", "Vergleich zu Startkosten: 0.8899738097177349\n", "Vergleich zu analytischer Lösung: 1.0924465228987312\n", "(w0_gd - w0_ana)/w0_ana: 1.0724690039021088\n", "(w1_gd - w1_ana)/w1_ana: -0.5087678206259784\n", "CPU times: user 256 ms, sys: 8.18 ms, total: 264 ms\n", "Wall time: 90.6 ms\n" ] } ], "source": [ "%%time\n", "n_iterations = 10000\n", "alpha = 0.0001 # mit alpha experimentieren\n", "w_init = [1e6, 1000.]\n", "x = data['BuildingArea'].to_numpy()\n", "y = data['Price'].to_numpy()\n", "w_gd_1e4, J_all_1e4 = grad_desc(w=w_init, alpha=alpha, x=x, y=y, n_iterations=n_iterations)\n", "\n", "print('w_gd_1e4: {}'.format(w_gd_1e4))\n", "print('Vergleich zu Startkosten: {}'.format(J_all_1e4[-1]/J_all_1e4[0]))\n", "print('Vergleich zu analytischer Lösung: {}'.format(J_all_1e4[-1]/J_ana))\n", "print('(w0_gd - w0_ana)/w0_ana: {}'.format((w_gd_1e4[0]-w_ana[0])/w_ana[0]))\n", "print('(w1_gd - w1_ana)/w1_ana: {}'.format((w_gd_1e4[1]-w_ana[1])/w_ana[1]))" ] }, { "cell_type": "code", "execution_count": 22, "id": "1c26fde8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w_gd_1e5: [548748.7304152894, 5330.2046262550075]\n", "Vergleich zu Startkosten: 0.8185228834109243\n", "Vergleich zu analytischer Lösung: 1.004740216095697\n", "(w0_gd - w0_ana)/w0_ana: 0.24285023551238794\n", "(w1_gd - w1_ana)/w1_ana: -0.1152055533638727\n", "CPU times: user 958 ms, sys: 20.8 ms, total: 978 ms\n", "Wall time: 825 ms\n" ] } ], "source": [ "%%time\n", "n_iterations = 100000\n", "alpha = 0.0001 # mit alpha experimentieren\n", "w_init = [1e6, 1000.]\n", "x = data['BuildingArea'].to_numpy()\n", "y = data['Price'].to_numpy()\n", "w_gd_1e5, J_all_1e5 = grad_desc(w=w_init, alpha=alpha, x=x, y=y, n_iterations=n_iterations)\n", "\n", "print('w_gd_1e5: {}'.format(w_gd_1e5))\n", "print('Vergleich zu Startkosten: {}'.format(J_all_1e5[-1]/J_all_1e5[0]))\n", "print('Vergleich zu analytischer Lösung: {}'.format(J_all_1e5[-1]/J_ana))\n", "print('(w0_gd - w0_ana)/w0_ana: {}'.format((w_gd_1e5[0]-w_ana[0])/w_ana[0]))\n", "print('(w1_gd - w1_ana)/w1_ana: {}'.format((w_gd_1e5[1]-w_ana[1])/w_ana[1]))" ] }, { "cell_type": "code", "execution_count": 23, "id": "ebff7a0b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w_gd_3e5: [445476.78736763657, 5998.647038552499]\n", "Vergleich zu Startkosten: 0.8146664601191632\n", "Vergleich zu analytischer Lösung: 1.000006440595892\n", "(w0_gd - w0_ana)/w0_ana: 0.008951637439164814\n", "(w1_gd - w1_ana)/w1_ana: -0.0042465610235696925\n", "CPU times: user 2.4 s, sys: 53.3 ms, total: 2.45 s\n", "Wall time: 2.46 s\n" ] } ], "source": [ "%%time\n", "n_iterations = 300000\n", "alpha = 0.0001 # mit alpha experimentieren\n", "w_init = [1e6, 1000.]\n", "x = data['BuildingArea'].to_numpy()\n", "y = data['Price'].to_numpy()\n", "w_gd_3e5, J_all_3e5 = grad_desc(w=w_init, alpha=alpha, x=x, y=y, n_iterations=n_iterations)\n", "\n", "print('w_gd_3e5: {}'.format(w_gd_3e5))\n", "print('Vergleich zu Startkosten: {}'.format(J_all_3e5[-1]/J_all_3e5[0]))\n", "print('Vergleich zu analytischer Lösung: {}'.format(J_all_3e5[-1]/J_ana))\n", "print('(w0_gd - w0_ana)/w0_ana: {}'.format((w_gd_3e5[0]-w_ana[0])/w_ana[0]))\n", "print('(w1_gd - w1_ana)/w1_ana: {}'.format((w_gd_3e5[1]-w_ana[1])/w_ana[1]))" ] }, { "cell_type": "code", "execution_count": 24, "id": "a1b5db98", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w_gd_1e6: [441524.45883596264, 6024.229049890118]\n", "Vergleich zu Startkosten: 0.8146612132155007\n", "Vergleich zu analytischer Lösung: 1.0000000000000007\n", "(w0_gd - w0_ana)/w0_ana: 8.60748531445252e-08\n", "(w1_gd - w1_ana)/w1_ana: -4.0832990952070806e-08\n", "CPU times: user 7.99 s, sys: 155 ms, total: 8.14 s\n", "Wall time: 8.22 s\n" ] } ], "source": [ "%%time\n", "n_iterations = 1000000\n", "alpha = 0.0001 # mit alpha experimentieren\n", "w_init = [1e6, 1000.]\n", "x = data['BuildingArea'].to_numpy()\n", "y = data['Price'].to_numpy()\n", "w_gd_1e6, J_all_1e6 = grad_desc(w=w_init, alpha=alpha, x=x, y=y, n_iterations=n_iterations)\n", "\n", "print('w_gd_1e6: {}'.format(w_gd_1e6))\n", "print('Vergleich zu Startkosten: {}'.format(J_all_1e6[-1]/J_all_1e6[0]))\n", "print('Vergleich zu analytischer Lösung: {}'.format(J_all_1e6[-1]/J_ana))\n", "print('(w0_gd - w0_ana)/w0_ana: {}'.format((w_gd_1e6[0]-w_ana[0])/w_ana[0]))\n", "print('(w1_gd - w1_ana)/w1_ana: {}'.format((w_gd_1e6[1]-w_ana[1])/w_ana[1]))" ] }, { "cell_type": "markdown", "id": "f35b62d4", "metadata": {}, "source": [ "### Kosten J als Funktion von Gradient Descent Schritten" ] }, { "cell_type": "code", "execution_count": 25, "id": "b18c5272", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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OFADBgzQI488EvTMCGEEAABcpqysTCtWrNCaNWs0ceJEDR48WE8++aRuv/12rVixQpJUWlqqo0ePas2aNVq1apVWrlypoqIi3XfffUF9Fj0jAADgMvv27ZPf79eQIUNabPd6verdu7ckKRAIyOv1atWqVc37vfbaa7rllltUUlLS7lM3hBEAAHCZ6upqxcbGqqioSLGxsS1e69mzpyQpKytLcXFxLQLLjTfeKKlhZoUwAgAAQjZ69Gj5/X6dOXNGEydObHWfCRMmqL6+Xp988okGDx4sSfroo48kSddee227P4uraQAAsKnq6modOnRIUkP4eOmllzRlyhSlp6erf//++s53vqOdO3fqxRdf1OjRo3X27Flt2bJFI0aM0L333qtAIKCxY8eqZ8+eevnllxUIBOR2u5WSkqJ333233XUQRgAAsKnCwkJNmTLlsu2zZ8/WypUr5fP5tGjRIq1atUonTpxQRkaGbrvtNi1cuFDDhw+XJJ08eVKPP/643n33XSUnJ+vuu+/Wiy++qPT09HbXQRgBAABGcWkvAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAo/4/RHKJwieaoB0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.lineplot(x=list(range(len(J_all_1e6))), y=J_all_1e6)" ] }, { "cell_type": "markdown", "id": "5ec059f6", "metadata": {}, "source": [ "### Plotten der Ergebnisse und Vergleich zwischen analytischer und numerischer Lösung\n", "Nach $10^4$ Schritten des Gradient Descent Algorithmus weicht der lineare Fit noch sichtbar von der analytischen Lösung ab. Nach $10^5$ Schritten ist der Unterschied im Plot kaum zu erkennen.\n", "Die numerische Lösung war in diesem Beispiel deutlich langsamer als die analytische. Allerdings haben wir für die analytische Lösung auch eine effiziente numpy-Implementierung genutzt und für die numerische unoptimierten Python-Code." ] }, { "cell_type": "code", "execution_count": 26, "id": "21c941e4", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAHACAYAAACMB0PKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABhfklEQVR4nO3daXhb1b02/FuzJduSB1m25FGeMzmEBGiaECBJISmlTKUtpT0MPe0DJJxS2h6g7elIS2ihp4f2lE4M5XkgbSlDX2iZGkgCIaVJyDw4HuR5niTLtsa93w/CimVLnm1tSffvunIVa0vbS7u29u21/mstmSiKIoiIiIgkSB7tBhARERFFwqBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSFTdBZe/evbjqqqtgsVggk8nw0ksvzfgcoiji4YcfRnl5OTQaDXJzc/GjH/1o/htLRERE06KMdgPmy9DQEFauXInbbrsN11133azO8ZWvfAVvvPEGHn74YaxYsQJ9fX3o6+ub55YSERHRdMnicVNCmUyGF198Eddcc03wMbfbjW9961vYuXMnBgYGsHz5cjz00EO49NJLAQCnT59GVVUVTpw4gYqKiug0nIiIiELEzdDPVLZv3479+/fjj3/8I44dO4YbbrgBW7ZsQU1NDQDg5ZdfRnFxMV555RVYrVYUFRXh3//939mjQkREFEUJEVSamprw5JNP4rnnnsPFF1+MkpISfP3rX8f69evx5JNPAgDq6+vR2NiI5557Dk8//TSeeuopHDp0CJ/61Kei3HoiIqLEFTc1KpM5fvw4/H4/ysvLQx53u93IzMwEAAiCALfbjaeffjr4vMcffxyrV69GdXU1h4OIiIiiICGCitPphEKhwKFDh6BQKEKOpaSkAADMZjOUSmVImFmyZAmAQI8MgwoREdHiS4igsmrVKvj9fnR1deHiiy8O+5x169bB5/Ohrq4OJSUlAICzZ88CAAoLCxetrURERHRO3Mz6cTqdqK2tBRAIJj/72c9w2WWXISMjAwUFBfj85z+Pffv24ZFHHsGqVavQ3d2NXbt2oaqqCldeeSUEQcAFF1yAlJQU/PznP4cgCNi2bRv0ej3eeOONKL87IiKixBQ3QWX37t247LLLJjx+880346mnnoLX68UDDzyAp59+Gq2trTAajfjIRz6C73//+1ixYgUAoK2tDXfddRfeeOMNJCcnY+vWrXjkkUeQkZGx2G+HiIiIEEdBhYiIiOJPQkxPJiIiotjEoEJERESSFdOzfgRBQFtbG1JTUyGTyaLdHCIiIpoGURQxODgIi8UCuXzyPpOYDiptbW3Iz8+PdjOIiIhoFpqbm5GXlzfpc2I6qKSmpgIIvFG9Xh/l1hAREdF0OBwO5OfnB+/jk4npoDI63KPX6xlUiIiIYsx0yjZYTEtERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSFdNL6BMRxSv7sAc9Tg8cLi/0WhWMyWoYdOpoN4to0TGoEBFJTNvACO59/hjeqekJPrahzIgd11fBkqaNYsuIFh+HfoiIJMQ+7JkQUgBgb00P7nv+GOzDnii1jCg6GFSIiCSkx+mZEFJG7a3pQY+TQYUSC4MKEZGEOFzeSY8PTnGcKN4wqBARSYg+STXp8dQpjhPFGwYVIiIJMaaosaHMGPbYhjIjjCmc+UOJhUGFiEhCDDo1dlxfNSGsbCgz4qHrqzhFmRIOpycTEUmMJU2LX9y4Cj1ODwZdXqQmqWBM4ToqlJgYVIiIJMigYzAhAjj0Q0RERBLGoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJLFoEJERESSxaBCREREksWgQkRERJIlmaCyY8cOyGQy3H333dFuChEREUmEJILKgQMH8Jvf/AZVVVXRbgoRERFJSNSDitPpxE033YTf/e53SE9Pj3ZziIiISEKi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+93vcPnllwNASE2J1+tdlHapVKqQr2Uy2YyGVUaHmLxeLx577LHg436/H0888QR+9KMfBR9LTk4Oea3T6cRVV12Fhx56aMJ5zWYzAOCqq65CYWEhfve738FisUAQBCxfvpzFuEQLiD0qRASZTAa5XI6RkRFkZWUBANrb24PHxxerTsZgMMBsNuP9998PPubz+XDo0KE5tbGiogLHjx+H2+0OPjZ+6vEzzzyDvLw8HD16NNhjdOTIkWDNjN/vj3j+888/HydPnkRRURFKS0tD/iUnJ6O3txfV1dX49re/jU2bNmHJkiXo7++f03sioqkxqBAlILfbjY6ODnR0dOD06dO46667gj0KpaWlyM/Px/e+9z3U1NTgb3/7Gx555JEZnf8rX/kKduzYgZdeeglnzpzBnXfeGTKLaDY+97nPQRAEfPnLX8bp06fx+uuv4+GHHwYQCFoA8Pjjj+NTn/oUli9fHvLvi1/8Inp6evDaa69FPP+2bdvQ19eHG2+8EQcOHEBdXR1ef/113HrrrfD7/UhPT0dmZiZ++9vfora2Fm+99RbuueeeOb0nIpoagwpRAnrttddgNpthNptx0UUX4cCBA3juuedw6aWXQqVSYefOnThz5gyqqqrw0EMP4YEHHpjR+b/2ta/hC1/4Am6++WasXbsWqampuPbaa+fUZr1ej5dffhlHjhzBeeedh29961v4zne+AwBISkrCoUOHcPTo0QkFr0Cgl2fTpk14/PHHI57fYrFg37598Pv9uPzyy7FixQrcfffdSEtLg1wuh1wuxx//+EccOnQIy5cvx1e/+lX89Kc/ndN7IqKpycTxixsQEcWIZ555Brfeeivsdju0Wm20m0NEC4DFtEQUM55++mkUFxcjNzcXR48exb333otPf/rTDClEcYxBhYhiRkdHB77zne+go6MDZrMZN9xwQ8hMHiKKPxz6ISIiIsliMS0RERFJFoMKERERSRaDChEREUkWgwoRERFJFoMKERERSRaDChEREUkWgwoRERFJFoMKERERSRaDChEREUnW/w8tk/1QG0NcpAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot\n", "xplot = [min(data['BuildingArea']), max(data['BuildingArea'])]\n", "yplot_ana = [h_w(x, w_ana) for x in xplot]\n", "yplot_gd_1e4 = [h_w(x, w_gd_1e4) for x in xplot]\n", "yplot_gd_1e5 = [h_w(x, w_gd_1e5) for x in xplot]\n", "# yplot_gd_3e5 = [h_w(x, w_gd_3e5) for x in xplot]\n", "yplot_gd_1e6 = [h_w(x, w_gd_1e6) for x in xplot]\n", "ax = sns.scatterplot(x=data['BuildingArea'], y=data['Price'])\n", "ax = sns.lineplot(x=xplot, y=yplot_ana, ax=ax)\n", "ax = sns.lineplot(x=xplot, y=yplot_gd_1e4, color='red', ax=ax)\n", "ax = sns.lineplot(x=xplot, y=yplot_gd_1e5, color='grey', ax=ax)\n", "# ax = sns.lineplot(x=xplot, y=yplot_gd_3e5, color='green', linestyle='dotted', ax=ax)\n", "ax = sns.lineplot(x=xplot, y=yplot_gd_1e6, color='pink', linestyle='--', ax=ax)" ] }, { "cell_type": "markdown", "id": "60bc96a1", "metadata": {}, "source": [ "## Vorhersagen unseres Modells\n", "\n", "Man kann die Vorhersagen des Modells entweder im Plot oben auf der Geraden ablesen. Zu jedem Wert von `BuildingArea` (x-Achse des Plots) kann so der `Preis` auf der y-Achse abgelesen werden.\n", "\n", "Alternativ können wir die von uns oben definierte Funktion `h_w(x, w)` aufrufen. Der Parameter `w` ist die gefunden Lösung und `x` die `BuildingArea` für die wir einen Preis vorhersagen wollen." ] }, { "cell_type": "code", "execution_count": 27, "id": "e13003c8", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Preis laut analytischem Modell: 2170478.23\n", "Preis laut Gradient Descent Modell nach 10^5 Iterationen: 2078517.46\n", "Preis laut Gradient Descent Modell nach 3*10^5 Iterationen: 2167088.49\n", "Preis laut Gradient Descent Modell nach 1*10^6 Iterationen: 2170478.20\n" ] } ], "source": [ "# Beispiel: Vorhersage unseres Modells für ein Haus mit Wohnfläche 287:\n", "# wir machen je eine Vorhersage mit\n", "# 1. den analytisch gefundenen Paramtern\n", "# 2. den mit Gradient Descent nach 10^5 Iterationen gefundenen Parametern\n", "# 3. den mit Gradient Descent nach 3*10^5 Iterationen gefundenen Parametern\n", "building_area_new = 287\n", "price_ana = h_w(x=building_area_new, w=w_ana)\n", "price_1e5 = h_w(x=building_area_new, w=w_gd_1e5)\n", "price_3e5 = h_w(x=building_area_new, w=w_gd_3e5)\n", "price_1e6 = h_w(x=building_area_new, w=w_gd_1e6)\n", "print('Preis laut analytischem Modell: {:.2f}'.format(price_ana))\n", "print('Preis laut Gradient Descent Modell nach 10^5 Iterationen: {:.2f}'.format(price_1e5))\n", "print('Preis laut Gradient Descent Modell nach 3*10^5 Iterationen: {:.2f}'.format(price_3e5))\n", "print('Preis laut Gradient Descent Modell nach 1*10^6 Iterationen: {:.2f}'.format(price_1e6))" ] }, { "cell_type": "markdown", "id": "fca62677", "metadata": {}, "source": [ "## $R^2$" ] }, { "cell_type": "code", "execution_count": 28, "id": "f1703c7f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "erklärte Varianz (R^2): 0.22971025499088604\n" ] } ], "source": [ "x = data['BuildingArea'].to_numpy(copy=True)\n", "y = data['Price'].to_numpy(copy=True)\n", "J_ana = J(w=w_ana, x=x, y=y)\n", "MSE = 2*J_ana\n", "mu_y = sum(y)/len(y)\n", "sigma_y_quadrat = ( (y - mu_y) @ (y - mu_y) ) / len(y)\n", "R2 = 1 - MSE/sigma_y_quadrat\n", "print('erklärte Varianz (R^2): {}'.format(R2))" ] } ], "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.10.12" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }