{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Uczenie maszynowe – zastosowania\n", "# 5. Regresja wielomianowa. Problem nadmiernego dopasowania" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 5.1. Regresja wielomianowa" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Wprowadzenie: wybór cech" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Niech naszym zadaniem będzie przewidzieć cenę działki o kształcie prostokąta.\n", "\n", "Jakie cechy wybrać?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Możemy wybrać dwie cechy:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " * $x_1$ – szerokość działki, $x_2$ – długość działki:\n", "$$ h_{\\theta}(\\vec{x}) = \\theta_0 + \\theta_1 x_1 + \\theta_2 x_2 $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "...albo jedną:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " * $x_1$ – powierzchnia działki:\n", "$$ h_{\\theta}(\\vec{x}) = \\theta_0 + \\theta_1 x_1 $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Wniosek:** możemy tworzyć nowe cechy na podstawie innych poprzez wykonywanie na nich różnych operacji matematycznych." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Można też zauważyć, że cecha „powierzchnia działki” powstaje przez pomnożenie dwóch innych cech: długości działki i jej szerokości." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Regresja wielomianowa" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "W regresji wielomianowej będziemy korzystać z cech, które utworzymy jako potęgi cech wyjściowych." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przydatne importy\n", "\n", "import ipywidgets as widgets\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przydatne funkcje\n", "\n", "def cost(theta, X, y):\n", " \"\"\"Wersja macierzowa funkcji kosztu\"\"\"\n", " m = len(y)\n", " J = 1.0 / (2.0 * m) * ((X * theta - y).T * (X * theta - y))\n", " return J.item()\n", "\n", "def gradient(theta, X, y):\n", " \"\"\"Wersja macierzowa gradientu funkcji kosztu\"\"\"\n", " return 1.0 / len(y) * (X.T * (X * theta - y)) \n", "\n", "def gradient_descent(fJ, fdJ, theta, X, y, alpha=0.1, eps=10**-5):\n", " \"\"\"Algorytm gradientu prostego (wersja macierzowa)\"\"\"\n", " current_cost = fJ(theta, X, y)\n", " logs = [[current_cost, theta]]\n", " while True:\n", " theta = theta - alpha * fdJ(theta, X, y)\n", " current_cost, prev_cost = fJ(theta, X, y), current_cost\n", " if abs(prev_cost - current_cost) > 10**15:\n", " print('Algorithm does not converge!')\n", " break\n", " if abs(prev_cost - current_cost) <= eps:\n", " break\n", " logs.append([current_cost, theta]) \n", " return theta, logs\n", "\n", "def plot_data(X, y, xlabel, ylabel):\n", " \"\"\"Wykres danych (wersja macierzowa)\"\"\"\n", " fig = plt.figure(figsize=(16*.6, 9*.6))\n", " ax = fig.add_subplot(111)\n", " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", " ax.scatter([X[:, 1]], [y], c='r', s=50, label='Dane')\n", " \n", " ax.set_xlabel(xlabel)\n", " ax.set_ylabel(ylabel)\n", " ax.margins(.05, .05)\n", " plt.ylim(y.min() - 1, y.max() + 1)\n", " plt.xlim(np.min(X[:, 1]) - 1, np.max(X[:, 1]) + 1)\n", " return fig\n", "\n", "def plot_fun(fig, fun, X):\n", " \"\"\"Wykres funkcji `fun`\"\"\"\n", " ax = fig.axes[0]\n", " x0 = np.min(X[:, 1]) - 1.0\n", " x1 = np.max(X[:, 1]) + 1.0\n", " Arg = np.arange(x0, x1, 0.1)\n", " Val = fun(Arg)\n", " return ax.plot(Arg, Val, linewidth='2')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wczytanie danych (mieszkania) przy pomocy biblioteki pandas\n", "\n", "alldata = pandas.read_csv('data_flats.tsv', header=0, sep='\\t',\n", " usecols=['price', 'rooms', 'sqrMetres'])\n", "data = np.matrix(alldata[['sqrMetres', 'price']])\n", "\n", "m, n_plus_1 = data.shape\n", "n = n_plus_1 - 1\n", "Xn = data[:, 0:n]\n", "Xn /= np.amax(Xn, axis=0)\n", "Xn2 = np.power(Xn, 2) \n", "Xn2 /= np.amax(Xn2, axis=0)\n", "Xn3 = np.power(Xn, 3) \n", "Xn3 /= np.amax(Xn3, axis=0)\n", "\n", "X = np.matrix(np.concatenate((np.ones((m, 1)), Xn), axis=1)).reshape(m, n + 1)\n", "X2 = np.matrix(np.concatenate((np.ones((m, 1)), Xn, Xn2), axis=1)).reshape(m, 2 * n + 1)\n", "X3 = np.matrix(np.concatenate((np.ones((m, 1)), Xn, Xn2, Xn3), axis=1)).reshape(m, 3 * n + 1)\n", "y = np.matrix(data[:, -1]).reshape(m, 1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Postać ogólna regresji wielomianowej:\n", "\n", "$$ h_{\\theta}(x) = \\sum_{i=0}^{n} \\theta_i x^i $$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "# Funkcja regresji wielomianowej\n", "\n", "def h_poly(Theta, x):\n", " \"\"\"Funkcja wielomianowa\"\"\"\n", " return sum(theta * np.power(x, i) for i, theta in enumerate(Theta.tolist()))\n", "\n", "def polynomial_regression(theta):\n", " \"\"\"Funkcja regresji wielomianowej\"\"\"\n", " return lambda x: h_poly(theta, x)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Najprostszym przypadkiem regresji wielomianowej jest funkcja kwadratowa:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Funkcja kwadratowa:\n", "\n", "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x + \\theta_2 x^2 $$" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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7h/19WFkZjOAjwLVfS4l3OdHXaV+ic3MthH5aJqvJvAxi5xzTWZWCGw1s/dC/xOT+FiE1/puZ47nHklcPO36FjDdOdduZkuBnxI6UkqGjfq7P9TXh5GZBYDXgL90zrX1vRzhLTH7vEbIUoxzrso5d0uEr58BLeEh09D31iif0RT63gr8BG8aSOLXCEzr9bwEaBrAPZK4a7arc67NOdceevwLINvMJo1ciGlJ/d0H6uvDx8yy8ZKxl5xzr0e4JeE+r4QsvbwBrAw9Xgn8rO8NZjbWzArCj4F7gYg7eCSqfcAsMys1sxxgOV7b9/YGsCK0E2c+cDY8nSyDcs22N7PJZmahx3Pxfg+eHvFI04v6uw/U14dHqE2fBw455/45ym0J93lNWaaXJ4FXzewR4BiwDMDMioF1zrmlQBHwk9C/4SzgZefcL32Kd1RyznWb2ZeAzUAm8IJzrsbM/iJ0/VngF8BSoB44B3zBr3hTSZxt/1lglZl1A+eB5U4VsgfFzF4B7gEmmVkj8A9ANqi/D6c42l19fXgsAv4cOGhmb4de+zvgBhh4n1elfhERERGfacpSRERExGdKyERERER8poRMRERExGdKyERERER8poRMRERExGdKyERERER8poRMRERExGdKyEQk7ZjZnWb2jpmNCZ1OUWNmt/gdl4ikLxWGFZG0ZGb/CIwB8oBG59xan0MSkTSmhExE0lLorMt9wAVgoXPuks8hiUga05SliKSriUAAKMAbKRMR8Y1GyEQkLZnZG8CPgVJginPuSz6HJCJpLMvvAERERpqZrQC6nXMvm1km8Csz+7hzboffsYlIetIImYiIiIjPtIZMRERExGdKyERERER8poRMRERExGdKyERERER8poRMRERExGdKyERERER8poRMRERExGdKyERERER89v9v+uR1RUNIPQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X2, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0, 0]).reshape(3, 1)\n", "theta, logs = gradient_descent(cost, gradient, theta_start, X2, y)\n", "plot_fun(fig, polynomial_regression(theta), X)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Innym szczególnym przypadkiem regresji wielomianowej jest funkjca sześcienna:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Funkcja sześcienna:\n", "\n", "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x + \\theta_2 x^2 + \\theta_3 x^3 $$" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 397521.22456017]\n", " [-841359.33647153]\n", " [2253763.58150567]\n", " [-244046.90860749]]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X3, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0, 0, 0]).reshape(4, 1)\n", "theta, _ = gradient_descent(cost, gradient, theta_start, X3, y)\n", "plot_fun(fig, polynomial_regression(theta), X)\n", "\n", "print(theta)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Regresję wielomianową można potraktować jako szczególny przypadek regresji liniowej wielu zmiennych:\n", "\n", "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x + \\theta_2 x^2 + \\theta_3 x^3 $$\n", "$$ x_1 = x, \\quad x_2 = x^2, \\quad x_3 = x^3, \\quad \\vec{x} = \\left[ \\begin{array}{ccc} x_0 \\\\ x_1 \\\\ x_2 \\end{array} \\right] $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "(W tym przypadku za kolejne cechy przyjmujemy kolejne potęgi zmiennej $x$)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Uwaga praktyczna: przyda się normalizacja cech, szczególnie skalowanie!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Do tworzenia cech „pochodnych” możemy używać nie tylko potęgowania, ale też innych operacji matematycznych, np.:\n", "\n", "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x + \\theta_2 \\sqrt{x} $$\n", "$$ x_1 = x, \\quad x_2 = \\sqrt{x}, \\quad \\vec{x} = \\left[ \\begin{array}{ccc} x_0 \\\\ x_1 \\end{array} \\right] $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Jakie zatem cechy wybrać? Najlepiej dopasować je do konkretnego problemu." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Wielomianowa regresja logistyczna\n", "\n", "Podobne modyfikacje cech możemy również stosować dla regresji logistycznej." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def powerme(x1,x2,n):\n", " \"\"\"Funkcja, która generuje n potęg dla zmiennych x1 i x2 oraz ich iloczynów\"\"\"\n", " X = []\n", " for m in range(n+1):\n", " for i in range(m+1):\n", " X.append(np.multiply(np.power(x1,i),np.power(x2,(m-i))))\n", " return np.hstack(X)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [ { "data": { "text/plain": [ "matrix([[ 1. , 0.36596696, -0.11214686],\n", " [ 0. , 0.4945305 , 0.47110656],\n", " [ 0. , 0.70290604, -0.92257983],\n", " [ 0. , 0.46658862, -0.62269739],\n", " [ 0. , 0.87939462, -0.11408015],\n", " [ 0. , -0.331185 , 0.84447667],\n", " [ 0. , -0.54351701, 0.8851383 ],\n", " [ 0. , 0.91979241, 0.41607012],\n", " [ 0. , 0.28011742, 0.61431157],\n", " [ 0. , 0.94754363, -0.78307311]])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Wczytanie danych\n", "import pandas\n", "import numpy as np\n", "\n", "alldata = pandas.read_csv('polynomial_logistic.tsv', sep='\\t')\n", "data = np.matrix(alldata)\n", "\n", "m, n_plus_1 = data.shape\n", "n = n_plus_1 - 1\n", "Xn = data[:, 1:]\n", "\n", "Xpl = powerme(data[:, 1], data[:, 2], n)\n", "Ypl = np.matrix(data[:, 0]).reshape(m, 1)\n", "\n", "data[:10]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def plot_data_for_classification(X, Y, xlabel, ylabel):\n", " \"\"\"Wykres danych (wersja macierzowa)\"\"\"\n", " fig = plt.figure(figsize=(16*.6, 9*.6))\n", " ax = fig.add_subplot(111)\n", " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", " X = X.tolist()\n", " Y = Y.tolist()\n", " X1n = [x[1] for x, y in zip(X, Y) if y[0] == 0]\n", " X1p = [x[1] for x, y in zip(X, Y) if y[0] == 1]\n", " X2n = [x[2] for x, y in zip(X, Y) if y[0] == 0]\n", " X2p = [x[2] for x, y in zip(X, Y) if y[0] == 1]\n", " ax.scatter(X1n, X2n, c='r', marker='x', s=50, label='Dane')\n", " ax.scatter(X1p, X2p, c='g', marker='o', s=50, label='Dane')\n", " \n", " ax.set_xlabel(xlabel)\n", " ax.set_ylabel(ylabel)\n", " ax.margins(.05, .05)\n", " return fig" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Przyjmijmy, że mamy następujące dane i chcemy przeprowadzić klasyfikację dwuklasową dla następujących klas:\n", " * czerwone krzyżyki\n", " * zielone kółka" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data_for_classification(Xpl, Ypl, xlabel=r'$x_1$', ylabel=r'$x_2$')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Propozycja hipotezy:\n", "\n", "$$ h_\\theta(x) = g(\\theta^T x) = g(\\theta_0 + \\theta_1 x_1 + \\theta_2 x_2 + \\theta_3 x_3 + \\theta_4 x_4 + \\theta_5 x_5) \\; , $$\n", "\n", "gdzie $g$ – funkcja logistyczna, $x_3 = x_1^2$, $x_4 = x_2^2$, $x_5 = x_1 x_2$." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def safeSigmoid(x, eps=0):\n", " \"\"\"Funkcja sigmoidalna zmodyfikowana w taki sposób, \n", " żeby wartości zawsz były odległe od asymptot o co najmniej eps\n", " \"\"\"\n", " y = 1.0/(1.0 + np.exp(-x))\n", " if eps > 0:\n", " y[y < eps] = eps\n", " y[y > 1 - eps] = 1 - eps\n", " return y\n", "\n", "def h(theta, X, eps=0.0):\n", " \"\"\"Funkcja hipotezy\"\"\"\n", " return safeSigmoid(X*theta, eps)\n", "\n", "def J(h,theta,X,y, lamb=0):\n", " \"\"\"Funkcja kosztu\"\"\"\n", " m = len(y)\n", " f = h(theta, X, eps=10**-7)\n", " j = -np.sum(np.multiply(y, np.log(f)) + \n", " np.multiply(1 - y, np.log(1 - f)), axis=0)/m\n", " if lamb > 0:\n", " j += lamb/(2*m) * np.sum(np.power(theta[1:],2))\n", " return j\n", "\n", "def dJ(h,theta,X,y,lamb=0):\n", " \"\"\"Pochodna funkcji kosztu\"\"\"\n", " g = 1.0/y.shape[0]*(X.T*(h(theta,X)-y))\n", " if lamb > 0:\n", " g[1:] += lamb/float(y.shape[0]) * theta[1:] \n", " return g\n", "\n", "def classifyBi(theta, X):\n", " \"\"\"Funkcja decyzji\"\"\"\n", " prob = h(theta, X)\n", " return prob" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def GD(h, fJ, fdJ, theta, X, y, alpha=0.01, eps=10**-3, maxSteps=10000):\n", " \"\"\"Metoda gradientu prostego dla regresji logistycznej\"\"\"\n", " errorCurr = fJ(h, theta, X, y)\n", " errors = [[errorCurr, theta]]\n", " while True:\n", " # oblicz nowe theta\n", " theta = theta - alpha * fdJ(h, theta, X, y)\n", " # raportuj poziom błędu\n", " errorCurr, errorPrev = fJ(h, theta, X, y), errorCurr\n", " # kryteria stopu\n", " if abs(errorPrev - errorCurr) <= eps:\n", " break\n", " if len(errors) > maxSteps:\n", " break\n", " errors.append([errorCurr, theta]) \n", " return theta, errors" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta = [[ 1.59558981]\n", " [ 0.12602307]\n", " [ 0.65718518]\n", " [-5.26367581]\n", " [ 1.96832544]\n", " [-6.97946065]]\n" ] } ], "source": [ "# Uruchomienie metody gradientu prostego dla regresji logistycznej\n", "theta_start = np.matrix(np.zeros(Xpl.shape[1])).reshape(Xpl.shape[1],1)\n", "theta, errors = GD(h, J, dJ, theta_start, Xpl, Ypl, \n", " alpha=0.1, eps=10**-7, maxSteps=10000)\n", "print(r'theta = {}'.format(theta))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def plot_decision_boundary(fig, theta, X):\n", " \"\"\"Wykres granicy klas\"\"\"\n", " ax = fig.axes[0]\n", " xx, yy = np.meshgrid(np.arange(-1.0, 1.0, 0.02),\n", " np.arange(-1.0, 1.0, 0.02))\n", " l = len(xx.ravel())\n", " C = powerme(xx.reshape(l, 1), yy.reshape(l, 1), n)\n", " z = classifyBi(theta, C).reshape(int(np.sqrt(l)), int(np.sqrt(l)))\n", "\n", " plt.contour(xx, yy, z, levels=[0.5], lw=3);" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":10: UserWarning: The following kwargs were not used by contour: 'lw'\n", " plt.contour(xx, yy, z, levels=[0.5], lw=3);\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data_for_classification(Xpl, Ypl, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", "plot_decision_boundary(fig, theta, Xpl)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wczytanie danych\n", "\n", "alldata = pandas.read_csv('polynomial_logistic.tsv', sep='\\t')\n", "data = np.matrix(alldata)\n", "\n", "m, n_plus_1 = data.shape\n", "Xn = data[:, 1:]\n", "\n", "n = 10\n", "Xpl = powerme(data[:, 1], data[:, 2], n)\n", "Ypl = np.matrix(data[:, 0]).reshape(m, 1)\n", "\n", "theta_start = np.matrix(np.zeros(Xpl.shape[1])).reshape(Xpl.shape[1],1)\n", "theta, errors = GD(h, J, dJ, theta_start, Xpl, Ypl, \n", " alpha=0.1, eps=10**-7, maxSteps=10000)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":10: UserWarning: The following kwargs were not used by contour: 'lw'\n", " plt.contour(xx, yy, z, levels=[0.5], lw=3);\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Przykład dla większej liczby cech\n", "fig = plot_data_for_classification(Xpl, Ypl, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", "plot_decision_boundary(fig, theta, Xpl)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 5.2. Problem nadmiernego dopasowania" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Obciążenie a wariancja" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Dane do prostego przykładu\n", "\n", "data = np.matrix([\n", " [0.0, 0.0],\n", " [0.5, 1.8],\n", " [1.0, 4.8],\n", " [1.6, 7.2],\n", " [2.6, 8.8],\n", " [3.0, 9.0],\n", " ])\n", "\n", "m, n_plus_1 = data.shape\n", "n = n_plus_1 - 1\n", "Xn1 = data[:, 0:n]\n", "Xn1 /= np.amax(Xn1, axis=0)\n", "Xn2 = np.power(Xn1, 2) \n", "Xn2 /= np.amax(Xn2, axis=0)\n", "Xn3 = np.power(Xn1, 3) \n", "Xn3 /= np.amax(Xn3, axis=0)\n", "Xn4 = np.power(Xn1, 4) \n", "Xn4 /= np.amax(Xn4, axis=0)\n", "Xn5 = np.power(Xn1, 5) \n", "Xn5 /= np.amax(Xn5, axis=0)\n", "\n", "X1 = np.matrix(np.concatenate((np.ones((m, 1)), Xn1), axis=1)).reshape(m, n + 1)\n", "X2 = np.matrix(np.concatenate((np.ones((m, 1)), Xn1, Xn2), axis=1)).reshape(m, 2 * n + 1)\n", "X5 = np.matrix(np.concatenate((np.ones((m, 1)), Xn1, Xn2, Xn3, Xn4, Xn5), axis=1)).reshape(m, 5 * n + 1)\n", "y = np.matrix(data[:, -1]).reshape(m, 1)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X1, y, xlabel='x', ylabel='y')" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "scrolled": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAFoCAYAAAAfEiweAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXiU9b3+8fubHSZhD/sOkR0SS13Ro3VHLXXBhJ722Nbfse2pBY0b7latlbpC29MeThfb05YEXFHRui9oXdCEsJOwh7AkLGGyL/P9/TGxUJpAEmbmO8v7dV1eSeaZzHNfz/VkvHmWzxhrrQAAABBaca4DAAAAxCJKGAAAgAOUMAAAAAcoYQAAAA5QwgAAAByghAEAADgQtBJmjPm9MWavMWb1EY/1Msa8YYwpbvnaM1jrBwAACGfBPBL2tKSLj3psrqS3rLUZkt5q+RkAACDmmGAOazXGDJf0srV2YsvPGySdY63dZYwZIOlda+2YoAUAAAAIU6G+JqyftXaXJLV87Rvi9QMAAISFBNcB2mKMuV7S9ZLk8Xi+MnbsWMeJAAAdUVZZq31VDUpKiFNG31TFGeM6EhBwn3/+eYW1Nr0zvxvqErbHGDPgiNORe9t6orV2oaSFkjR16lS7YsWKUGUEAJygdzbs1Xf/8JmGxBk9+8MzNGVID9eRgKAwxmzr7O+G+nTkUknXtnx/raQXQ7x+AECQlXvrdeuSlZKkmy8cQwED2hDMERWLJP1d0hhjTKkx5jpJj0i6wBhTLOmClp8BAFHCWqtbn1mpiqoGnT6yt75/9kjXkYCwFbTTkdbaWW0sOi9Y6wQAuPX0R1v17oZy9eiaqCeypygujuvAgLYwMR8AEBDrdh3Sz15dL0l65MrJGtC9i+NEQHijhAEATlhdY7NmLypQQ5NPs04Zqosn9ncdCQh7lDAAwAn76SvrVLy3SiPTPbrnsnGu4wARgRIGADghb67do//7eJsS440W5GSpa1LYjqAEwgolDADQaXsP1em2Z4skSbddNFYTB3V3nAiIHJQwAECn+HxWNy9Zqf3VDToro4+umzbCdSQgolDCAACd8rvlW/RBcYV6eZL0+EzGUQAdRQkDAHTY6p2V+vnf/OMo5l01WX27pThOBEQeShgAoENqGpo0O69Ajc1W3z5tmC4Y3891JCAiUcIAAB3y4MvrtLm8Whl9U3XXpYyjADqLEgYAaLfXVu/Wok+3KykhTgtmZSklMd51JCBiUcIAAO2yq7JWc5/zj6OYe/FYjRvQzXEiILJRwgAAx9Xss8rNX6mDNY06Z0y6vnvmcNeRgIhHCQMAHNfC9zfr75v3qU9qkh69eoqMYRwFcKIoYQCAY1q546Aef32DJOnRq6coPS3ZcSIgOlDCAABtqq5v0py8AjX5rL5zxnCdO7av60hA1KCEAQDadP/SNdq6r0Zj+6dp7iVjXccBogolDADQqpeLyrTk81IlM44CCApKGADgX5QeqNEdz62SJN196Tid1C/NcSIg+iS4DgAACC9fjqPw1jXp/HF99a3ThnXuhbxeKT9fKi6WMjKk7GwpjTIHfIkSBgD4J//9Tok+3bpf6WnJmnfV5M6No1i+XJo+XfL5pOpqyeORcnOlZcukadMCHxqIQJyOBAD8w+fbDuipt4olSY/PnKLeqZ0YR+H1+guY1+svYJL/65ePV1UFMDEQuShhAABJkreuUTfmF6jZZ/WfZ43Q2Seld+6F8vP9R8Ba4/P5lwOghAEA/O59cY127K/V+AHddMtFYzr/QsXFh4+AHa26Wiop6fxrA1GEEgYA0AsFO/V8wU6lJPrHUSQnnMA4iowM/zVgrfF4pNGjO//aQBThwnwAiEVH3Lm4Y/hY3b1rgCTp3ssmaHTf1BN77exs/0X4rYmL8y8HQAkDgJhzxJ2LTTW1mvPtR1U1oK8u6p+gWacMOfHXT0vz3wV59N2RcXH+x1NPsOQBUYISBgCx5Mg7FyUtmPZNfTFgjPp7K/TI7+6Q+X8bA1OSpk2Tysr8R9tKSvynILOzKWDAEShhABBLjrhz8bNB4/XL07NlrE9PvPyEetYe8i+/7rrArCs1NXCvBUQhShgAxJKWOxcrkz268fJb5IuL1w8+XqIzthf5l3PnIhAylDAAiCUZGbIej+4670fa2b2vJu/aqNwP/uJfxp2LQEgxogIAYkl2tp4dd45eHne2ujbUav5LjynJ1+Rfxp2LQEhxJAwAYsjW+jjdd+EPpWbp/g+e1ogDZdy5CDhCCQOAGNHY7NOc/EJVN0uXjkvXzNFXSOdP4s5FwBFKGADEiKfe3KiVOw5qYPcUPTwzS6brKa4jATGNa8IAIAZ8vHmf/vvdTYoz0pPZmereNdF1JCDmUcIAIModrGnQTfmFslb60bmjderI3q4jARAlDACimrVWdz6/Srsq65Q5pIdmn5fhOhKAFpQwAIhii1fs0LJVu5WanKAFOVlKjOdtHwgX/DUCQJTaVF6l+5eulSQ9MGOChvbu6jgRgCNRwgAgCjU0+XRjXqFqG5s1I3Ogrsga5DoSgKNQwgAgCj3+xgat2lmpwT276MFvTJQxxnUkAEehhAFAlPmwpEL/895mxRlpfk6muqUwjgIIR5QwAIgi+6sblLu4UJI0+7wMfWVYL8eJALSFEgYAUcJaq9ufLdKeQ/WaOqynbjh3tOtIAI6BEgYAUeKvn27XG2v3KC05QU9mZyqBcRRAWOMvFACiQMlerx582T+O4qdXTtKQXoyjAMIdJQwAIlx9U7N+vKhQdY0+XXnyIH19ykDXkQC0g5MSZoy5yRizxhiz2hizyBiT4iIHAESDn7+2Qet2HdLQXl31wIyJruMAaKeQlzBjzCBJsyVNtdZOlBQvKSfUOQAgGry3sVy/W75F8XFG83MylZqc4DoSgHZydToyQVIXY0yCpK6SyhzlAICIVVFVr5sXr5Qk5V5wkrKG9nScCEBHhLyEWWt3SnpM0nZJuyRVWmtfP/p5xpjrjTErjDErysvLQx0TAMKatVa3PVOkiqp6nTqil37wb6NcRwLQQS5OR/aUNEPSCEkDJXmMMd86+nnW2oXW2qnW2qnp6emhjgkAYe1Pf9+mt9fvVbcU/ziK+Dg+lgiINC5OR54vaYu1ttxa2yjpOUlnOMgBABFpw26vfrpsnSTpkasma2CPLo4TAegMFyVsu6TTjDFdjf8TZc+TtM5BDgCIOHWNzZq9qEANTT5lTx2i6ZMGuI4EoJNcXBP2iaRnJH0haVVLhoWhzgEAkeiRV9drwx6vRvTx6N7Lx7uOA+AEOLmX2Vp7n6T7XKwbACLV2+v36OmPtiox3mhBTpY8jKMAIhoT8wEgAuz11unWJUWSpJsvHKNJg7s7TgTgRFHCACDM+XxWtywp0r7qBp0xqreuP2uk60gAAoASBgBh7g8fbdX7G8vVo2uinrgmU3GMowCiAiUMAMLYmrJKzXt1vSRp3lWT1b87H7ULRAtKGACEqdqGZs3JK1RDs0/fPHWoLprQ33UkAAFECQOAMPXQK2tVsrdKo9I9uudSxlEA0YYSBgBh6PU1u/WXT7YrKT5OC2ZlqUtSvOtIAAKMEgYAYWbPoTrd/qx/HMVtF4/RhIGMowCiESUMAMKIz2eVu7hQB2oadVZGH33vzBGuIwEIEkoYAISR//1gsz4s2afeniQ9fs0UxlEAUYwSBgBhYlVppR57fYMk6edXT1bfNMZRANGMEgYAYaCmoUlz8grU2Gx17enDdN64fq4jAQgyShgAhIEHXlqrzRXVGtMvTXdMH+c6DoAQSHAdAACc83ql/HypuFjKyJCys6W0tJCt/tVVu5T32Q4lJcRp/qxMpSQyjgKIBZQwALFt+XJp+nTJ55OqqyWPR8rNlZYtk6ZNC/rqyw7Wau5zqyRJd14yVmP7dwv6OgGEB05HAohdXq+/gHm9/gIm+b9++XhVVVBX3+yzuim/UJW1jTp3TLquPWN4UNcHILxQwgDErvx8/xGw1vh8/uVB9Jv3NumTLfvVJzVZj86cImMYRwHEEkoYgNhVXHz4CNjRqqulkpKgrbpwx0E9+cZGSdJjMyerT2py0NYFIDxRwgDErowM/zVgrfF4pNGjg7Laqnr/OIomn9X3zhyhc8b0Dcp6AIQ3ShiA2JWdLcW18TYYF+dfHgT3vbhG2/bVaNyAbrr9kjFBWQeA8EcJAxC70tL8d0GmpR0+IubxHH48NTXgq1y6skzPflGq5IQ4LcjJVHIC4yiAWMWICgCxbdo0qazMfxF+SYn/FGR2dlAKWOmBGt31vH8cxT2XjVdGv9DNIgMQfihhAJCaKl13XVBX0dTs0415hfLWNemC8f3076cODer6AIQ/TkcCQAj86p1NWrHtgPqmJWveVZMZRwGAEgYAwfb5tv1a8HaxJOmJazLVy5PkOBGAcEAJA4AgOlTXqDl5hWr2WX3/7JGaltHHdSQAYYISBgBBdO8Lq1V6oFYTB3XTzRcyjgLAYZQwAAiS5wtK9UJhmbokxmt+TpaSEnjLBXAY7wgAEATb99XonhfWSJLuu3y8RqUHfuQFgMhGCQOAAGtq9mlOfoGq6pt0ycT+yv7qENeRAIQhShgABNiCt4pVsP2gBnRP0c+unMQ4CgCtooQBQAB9umW/fvlOiYzxj6Po0ZVxFABaRwkDgACprG3UTfmF8lnpv84ZpdNH9XYdCUAYo4QBQABYa3Xn86u082CtpgzpoRvPP8l1JABhjhIGAAHwzOeleqVolzxJ8ZqfnanEeN5eARwb7xIAcIK2VlTrvqX+cRQ/mTFRw/t4HCcCEAkoYQBwAhqbfZqTV6CahmZdPmWgrjp5kOtIACIEJQwATsCTb2zUytJKDerRRQ99YyLjKAC0GyUMADrpo00V+vV7mxRnpKdyMtW9S6LrSAAiCCUMADrhYE2DcvNXylrphq9l6KvDe7mOBCDCUMIAoIOstZr77CrtPlSnk4f20OyvjXYdCUAEooQBQAflf7ZDr63ZrbTkBM3PyVIC4ygAdALvHADQAZvKq/STl9ZKkh78xkQN6dXVcSIAkYoSBgDtVN/UrNmLClTb2KwrsgbpG1mMowDQeZQwAGinx1/fqDVlhzSkVxc9MGOC6zgAIhwlDADaYXlxhRa+v1nxcUbzc7KUlsI4CgAnhhIGAMexv7pBuYsLJUk3npehk4f2dJwIQDRwUsKMMT2MMc8YY9YbY9YZY053kQMAjsdaq9ueKdJeb71OGd5L/3Uu4ygABEaCo/XOl/SatfZqY0ySJG4vAhCW/vzJdr25bo/SUhL0ZE6m4uP4WCIAgRHyEmaM6SbpbEnfkSRrbYOkhlDnAIDjKd7j1UMv+8dR/OzKSRrUo4vjRACiiYvTkSMllUv6gzGmwBjzW2OMx0EOAGhTXWOzfryoQPVNPs38ymBdNnmg60gAooyLEpYg6WRJv7bWZkmqljT36CcZY643xqwwxqwoLy8PdUYAMe7nr23Q+t1eDe/dVfd/nXEUAALPRQkrlVRqrf2k5edn5C9l/8Rau9BaO9VaOzU9PT2kAQHEtnc37NXvP9yihJZxFJ5kV5fPAohmIS9h1trdknYYY8a0PHSepLWhzgEArSn31uuWJSslSbkXnqQpQ3o4TgQgWrn6592PJf2l5c7IzZK+6ygHAPyDfxzFSlVUNej0kb31/bNHuY4EIIo5KWHW2kJJU12sGwDa8sePtuqdDeXq3iVRT2RPYRwFgKBiYj4ASFq/+5AefnW9JGneVZM0oDvjKAAEFyUMQMyra2zW7EUFamjyadYpQ3TxxAGuIwGIAZQwADHv4WXrtHFPlUame3TPZeNdxwEQIyhhAGLam2v36E9/36bEeKMFOVnqmsQ4CgChQQkDELP2HqrTbc8WSZJuu2isJg7q7jgRgFhCCQMQk3w+q5uXrNT+6gadldFH100b4ToSgBhDCQMQk37/4RZ9UFyhXp4kPT5ziuIYRwEgxChhAGLO6p2Vmvfal+MoJqtvtxTHiQDEIkoYgJhS09CkOXkFamy2+vZpw3TB+H6uIwGIUZQwADHlwZfXaVN5tTL6puquS8e5jgMghlHCAMSM11bv1qJPtyspIU4LZmUpJTHedSQAMYwSBiAm7K6s09zn/OMo5l48VuMGdHOcCECso4QBiHrNPqub8gt1sKZR54xJ13fPHO46EgBQwgBEv4Xvb9bfN+9Tn9QkPXr1FBnDOAoA7lHCAES1otKDevz1DZKkR6+eovS0ZMeJAMCPEgYgalXXN2lOXqGafFbfOWO4zh3b13UkAPgHShiAqPWTl9ZoS0W1xvZP09xLxrqOAwD/hBIGICq9UrRLi1eUKplxFADCFCUMQNTZebBWd7SMo7j70nE6qV+a40QA8K8oYQCiSrPP6qa8Qh2qa9L54/rqW6cNcx0JAFpFCQMQVX79bok+3bpf6WnJmnfVZMZRAAhblDAAUeOL7Qf05JvFkqQnrpmi3qmMowAQvihhAKKCt65RN+YVqtln9Z9njdBZGemuIwHAMVHCAESF+15co+37azR+QDfdctEY13EA4LgoYQAi3ouFO/VcwU6lJPrHUSQnMI4CQPhLcB0AQIzxeqX8fKm4WMrIkLKzpbTOj5DYsb9Gdz+/WpJ072UTNLpvaqCSAkBQUcIAhM7y5dL06ZLPJ1VXSx6PlJsrLVsmTZvW4ZdravbpxvxCeeubdNGEfpp1ypAghAaA4OB0JIDQ8Hr9Bczr9Rcwyf/1y8erqjr8kr94u0Sfbzug/t1S9MiVjKMAEFkoYQBCIz/ffwSsNT6ff3kHrNi6X794u1jG+MdR9PQkBSAkAIQOJQxAaBQXHz4CdrTqaqmkpN0vVVnbqDl5hfJZ6ftnj9IZo/sEKCQAhA4lDEBoZGT4rwFrjccjjR7drpex1uruF1Zr58FaTR7cXbkXnBTAkAAQOpQwAKGRnS3FtfGWExfnX94Oz32xUy+tLFPXpHjNz8lSUgJvYwAiE+9eAEIjLc1/F2Ra2uEjYh7P4cdTjz9aYtu+at37on8cxf2XT9CIPm0cWQOACMCICgChM22aVFbmvwi/pMR/CjI7u10FrLHZp9l5hapuaNalkwZo5tTBIQgMAMFDCQMQWqmp0nXXdfjX5r9ZrJU7Dmpg9xQ9fMUkxlEAiHicjgQQ9j7evE+/erdExkhPZmeqe9dE15EA4IQdt4QZY24wxvQMRRgAOFplTaNy8wtlrfSjc0br1JG9XUcCgIBoz5Gw/pI+M8YsNsZcbDgHACBErLW64/kilVXWKXNID805P8N1JAAImOOWMGvt3ZIyJP1O0nckFRtjHjbGjApyNgAxbsmKUi1btVuepHjNz8lUYjxXUACIHu16R7PWWkm7W/5rktRT0jPGmJ8HMRuAGLa5vEr3LV0jSXrwGxM1rDfjKABEl+PeHWmMmS3pWkkVkn4r6VZrbaMxJk5SsaTbghsRQKxpaPJpTl6hahub9fUpA3VF1iDXkQAg4NozoqKPpCuttduOfNBa6zPGXBacWABi2eNvbNCqnZUa3LOLHrpiIuMoAESl45Ywa+29x1i2LrBxAMS6D0sqtPD9zYoz0lPZmeqWwjgKANGJq1wBhI0D1Q3KXewfRzH7vAxNHd7LdSQACBpKGICwYK3V7c8Wac+hek0d1lM3nDvadSQACCpKGICw8NdPt+v1tXuUlpygJ7MzlcA4CgBRjnc5AM6V7PXqwZfXSpIeumKihvTq6jgRAAQfJQyAU/VNzfrxokLVNfp05cmDNCOTcRQAYoOzEmaMiTfGFBhjXnaVAYB7j762Qet2HdLQXl31wIyJruMAQMi4PBI2RxIjLoAY9v7Gcv12+RbFxxnNz8lUanJ7RhcCQHRwUsKMMYMlXSr/BH4AMaiiql65i1dKknIvOElZQ3s6TgQAoeXqSNhT8n/cka+tJxhjrjfGrDDGrCgvLw9dMgBBZ63V7c8UqaKqXqeO6KUf/Nso15EAIORCXsJaPupor7X282M9z1q70Fo71Vo7NT09PUTpAITC/328TW+t36tuKf5xFPFxfCwRgNjj4kjYmZK+bozZKilP0teMMX92kAOAAxt2e/XQK/7LQR+5arIG9ujiOBEAuBHyEmatvcNaO9haO1xSjqS3rbXfCnUOAKFX19is2YsK1NDkU/bUIZo+aYDrSADgDHPCAITMI6+u14Y9Xo3o49G9l493HQcAnHJ6P7i19l1J77rMACA03l6/R09/tFWJ8UYLcrLkYRwFgBjHkTAAQbfXW6dblxRJkm6+cIwmDe7uOBEAuEcJAxBUPp/VrUuKtK+6QWeM6q3rzxrpOhIAhAVKGICg+sNHW/XexnL16JqoJ67JVBzjKABAEiUMQBCtLTukea+ulyTNu2qy+ndPcZwIAMIHJQxAUNQ2NGt2XoEamn365qlDddGE/q4jAUBYoYQBCIqfLlurkr1VGpXu0T2XMo4CAI5GCQMQcK+v2a0/f7xdSfFxWjArS12S4l1HAoCwQwkDEFB7DtXp9mf94yhuu3iMJgxkHAUAtIYSBiBgfD6r3MWFOlDTqLMy+uh7Z45wHQkAwhYlDEDA/O8Hm/VhyT719iTp8WumMI4CAI6BEgYgIFaVVuqx1zdIkn5+9WT1TWMcBQAcCyUMwAmraWjSnLwCNTZbXXv6MJ03rp/rSAAQ9ihhAE7YAy+t1eaKao3pl6Y7po9zHQcAIgIlDMAJeXXVLuV9tkNJCXGaPytTKYmMowCA9qCEAei0soO1mvvcKknSnZeM1dj+3RwnAoDIQQkD0CnNPqub8gtVWduoc8ek69ozhruOBAARhRIGoFN+894mfbJlv/qkJuvRmVNkDOMoAKAjKGEAOqxwx0E9+cZGSdJjMyerT2qy40QAEHkoYQA6pKreP46iyWf1vTNH6JwxfV1HAoCIRAkD0CH3vbhG2/bVaNyAbrr9kjGu4wBAxKKEAWi3pSvL9OwXpUpOiNOCnEwlJzCOAgA6ixIGoF1KD9Toruf94yjuuWy8MvqlOU4EAJGNEgbguJqafboxr1DeuiZdML6f/v3Uoa4jAUDEo4QBOK5fvbNJK7YdUN+0ZM27ajLjKAAgAChhAI7p8237teDtYknSE9dkqpcnyXEiAIgOlDAAbTpU16g5eYVq9ll9/+yRmpbRx3UkAIgalDAAbbr3hdUqPVCriYO66eYLGUcBAIFECQPQqucLSvVCYZm6JMZrfk6WkhJ4uwCAQOJdFcC/2L6vRve8sEaSdN/l4zUqPdVxIgCIPpQwAP+ksdmnOfkFqqpv0iUT+yv7q0NcRwKAqEQJA/BPfvFWsQq2H9SA7in62ZWTGEcBAEFCCQPwD59u2a9fvlMiY/zjKHp0ZRwFAAQLJQyAJKmyplE35hXIZ6Uf/tsonT6qt+tIABDVKGEAZK3VnS+sUlllnaYM7q6bLjjJdSQAiHqUMAB65vNSvVK0S54k/ziKxHjeGgAg2HinBWLclopq3bfUP47iJzMmangfj+NEABAbKGFADGto8mlOXoFqGpp12eQBuurkQa4jAUDMoIQBMezJNzeqqLRSg3p00U+vYBwFAIQSJQyIUR9tqtBv3tukOCM9lZOp7l0SXUcCgJhCCQNi0IHqBuXmr5S10g1fy9BXh/dyHQkAYg4lDIgx1lrd8dwq7T5Up5OH9tDsr412HQkAYhIlDIgxeZ/t0GtrdistOUHzc7KUwDgKAHCCd18ghmwqr9IDL62VJD10xUQN6dXVcSIAiF2UMCBG1Dc1a/aiAtU2NuuKrEGakck4CgBwiRIGxIjHX9+oNWWHNKRXFz0wY4LrOAAQ8yhhQAxYXlyhhe9vVnyc0fycLKWlMI4CAFyjhAFRbn91g3IXF0qSbjwvQycP7ek4EQBAclDCjDFDjDHvGGPWGWPWGGPmhDoDECustbrtmSLt9dbrlOG99F/nMo4CAMJFgoN1Nkm62Vr7hTEmTdLnxpg3rLVrHWQBotqfP9muN9ftUVpKgp7MyVR8HB9LBADhIuRHwqy1u6y1X7R875W0ThK3aQEBVrzHq4de9v/b5mdXTtKgHl0cJwIAHMnpNWHGmOGSsiR94jIHEG3qGpv140UFqm/yaeZXBuuyyQNdRwIAHMVZCTPGpEp6VtKN1tpDrSy/3hizwhizory8PPQBgQj289c2aP1ur4b37qr7v844CgAIR05KmDEmUf4C9hdr7XOtPcdau9BaO9VaOzU9PT20AYEI9u6Gvfr9h1uU0DKOwpPs4tJPAMDxhPzd2RhjJP1O0jpr7ROhXj8Qzcq99bplyUpJUu6FJ2nKkB6tP9HrlfLzpeJiKSNDys6W0tJCmBQA4OKfyGdK+rakVcaYwpbH7rTWLnOQBYga/nEUK1VR1aDTR/bW988e1foTly+Xpk+XfD6pulryeKTcXGnZMmnatNCGBoAYFvISZq1dLon75IEA++NHW/XOhnJ175KoJ7KntD6Owuv1FzCv9/Bj1dX+r9OnS2VlUmpqaAIDQIxjYj4QBdbvPqSHX10vSZp31SQN6N7GOIr8fP8RsNb4fP7lAICQoIQBEa6usVmzFxWoocmnWacM0cUTB7T95OLiw0e+jlZdLZWUBCckAOBfUMKACPfwsnXauKdKI9M9uuey8cd+ckaG/xqw1ng80mg+1ggAQoUSBkSwt9bt0Z/+vk2J8UYLcrLUNek4l3lmZ0txbfzZx8X5lwMAQoISBkSovYfqdOszRZKk2y4aq4mDuh//l9LS/HdBpqUdPiLm8Rx+nIvyASBkmOIIRCCfz+rmJSu1v7pBZ2X00XXTRrT/l6dN898FmZ/vvwZs9Gj/ETAKGACEFCUMiEC//3CLPiiuUC9Pkh6fOUVxrY2jOJbUVOm664ITDgDQLpyOBCLM6p2Vmvfal+MoJqtvtxTHiQAAnUEJAyJIbUOz5uQVqLHZ6tunDdMF4/u5jgQA6CRKGBBBHnxlrTaVVyujb6ruunSc6zgAgBNACQMixGurd+uvn2xXUkKcFszKUkpivOtIAIATQAkDIsDuyjrNfc4/jmLuxWM1bkA3x4kAACeKEgaEOZ/PKndxoQ7WNOqcMen67pnDXUcCAAQAJQwIcws/2KyPNu1Tn9QkPXr1FBnTwXEUAICwRAkDwlhR6UE99rcNkiv47rIAAA0DSURBVKRHr56i9LRkx4kAAIFCCQPCVHV9k+bkFarJZ/WdM4br3LF9XUcCAAQQJQwIUz95aY22VFRrbP80zb1krOs4AIAAo4QBYeiVol1avKJUyYyjAICoRQkDwszOg7W6o2Ucxd2XjtNJ/dIcJwIABAMlDAgjzT6rm/ILdaiuSeeP66tvnTbMdSQAQJBQwoAw8ut3S/Tplv1KT0vWvKsmM44CAKIYJQwIEwXbD+jJN4slSU9cM0W9UxlHAQDRjBIGhAFvXaPm5BWq2Wf1n2eN0FkZ6a4jAQCCjBIGhIH7lq7R9v01Gj+gm265aIzrOACAEKCEAY69WLhTz32xUymJ/nEUyQmMowCAWEAJAxzasb9Gdz+/WpJ072UTNLpvquNEAIBQoYQBjjQ1+3RTfqG89U26aEI/zTpliOtIAIAQooQBjvzynRKt2HZA/bol65ErGUcBALGGEgY4sGLrfi14q1jGSE9ek6meniTXkQAAIUYJA0LsUMs4Cp+Vvn/2KJ0xuo/rSAAAByhhQAhZa3XX86u182CtJg/urtwLTnIdCQDgCCUMCKHnvtipl1aWqWtSvObnZCkpgT9BAIhV/B8ACJFt+6p174v+cRT3f32CRvTxOE4EAHCJEgaEQGOzT7PzClXd0KxLJw3QzK8Mdh0JAOAYJQwIgflvFmvljoMa2D1FD18xiXEUAABKGBBsH2/ep1+9W6I4Iz2ZnanuXRNdRwIAhAFKGBBElTWNuim/UNZKPzp3tE4d2dt1JABAmKCEAUFirdUdzxdpV2WdMof00OzzMlxHAgCEEUoYECRLVpRq2ardSk1O0IKcLCXG8+cGADiM/ysAQbC5vEr3LV0jSXpgxgQN7d3VcSIAQLihhAEB1tDk05y8QtU2NuvrUwbqiqxBriMBAMIQJQwIsMff2KBVOys1uGcXPXTFRMZRAABaRQkDAujDkgotfH+z4oz0VHamuqUwjgIA0DpKGBAgB6oblLvYP45i9nkZmjq8l+tIAIAwRgkDAsBaq9ufLdKeQ/WaOqynbjh3tOtIAIAwRwkDAuCvn27X62v3KC05QU9mZyqBcRQAgOPg/xTACSrZ69WDL6+VJD10xUQN6cU4CgDA8VHCgBNQ39SsHy8qVF2jT1eePEgzMhlHAQBonwQXKzXGXCxpvqR4Sb+11j7iIgdwoh59bYPW7Tqkob266oEZEzv2y16vlJ8vFRdLGRlSdraUlhacoACAsBPyEmaMiZf0K0kXSCqV9JkxZqm1dm2oswAn4v2N5frt8i2KjzOan5Op1OQO/DktXy5Nny75fFJ1teTxSLm50rJl0rRpwQsNAAgbLk5HniKpxFq72VrbIClP0gwHOYBOq6iqV+7ilZKkm87PUNbQnu3/Za/XX8C8Xn8Bk/xfv3y8qioIiQEA4cZFCRskaccRP5e2PAZEBGutbn+mSBVV9TplRC/98JwOjqPIz/cfAWuNz+dfDgCIei5KWGuf4WL/5UnGXG+MWWGMWVFeXh6CWED7/N/H2/TW+r3qlpKgp7IzFR/XwY8lKi4+fATsaNXVUknJiYcEAIQ9FyWsVNKQI34eLKns6CdZaxdaa6daa6emp6eHLBxwLBt2e/XQK+skST+7crIG9ujS8RfJyPBfA9Yaj0cazaBXAIgFLkrYZ5IyjDEjjDFJknIkLXWQA+iQusZmzV5UoIYmn66ZOliXTh7QuRfKzpbi2vjTi4vzLwcARL2QlzBrbZOkGyT9TdI6SYuttWtCnQPoqEdeXa8Ne7wa0cej+y6f0PkXSkvz3wWZlnb4iJjHc/jx1NTABAYAhDUnc8KstcskLXOxbqAz3l6/R09/tFUJLeMoPB0ZR9GaadOksjL/RfglJf5TkNnZFDAAiCFOShgQSfZ663TrkiJJ0i0XjdHkwT0C88KpqdJ11wXmtQAAEYePLQKOweezunVJkfZVN+iMUb11/VkjXUcCAEQJShhwDH/4aKve21iuHl0T9cQ1mYrr6DgKAADaQAkD2rC27JDmvbpekjTvqsnq3z3FcSIAQDShhAGtqG1o1uy8AjU0+/TNU4fqogn9XUcCAEQZShjQip8uW6uSvVUale7RPZeOdx0HABCFKGHAUd5Yu0d//ni7kuLjND8nS12S4l1HAgBEIUoYcIQ9h+p02zMrJUm3XTxGEwd1d5wIABCtKGFAC5/P6ubFK3WgplFnZfTR984c4ToSACCKUcKAFr9dvlnLSyrUy5Okx2dOYRwFACCoKGGApNU7K/Xo3zZIkh69erL6dmMcBQAguChhiHk1DU2avahAjc1W/3H6MJ03rp/rSACAGEAJQ8x78OW12lxRrZP6perO6eNcxwEAxAhKGGLaq6t2adGnO5SUEKcFs7KUksg4CgBAaFDCELN2VdZq7nOrJEl3XjJWY/t3c5wIABBLKGGISc0+q5vyC1VZ26hzx6Tr2jOGu44EAIgxlDDEpP95f5M+3rxffVKT9ejMKTKGcRQAgNCihCHmrNxxUE+8vlGS9NjMyeqTmuw4EQAgFlHCEFOq6ps0J69ATT6r7505QueM6es6EgAgRlHCEFPuX7pGW/fVaGz/NN128RjXcQAAMYwShpjxclGZnvm8VMkJcfoF4ygAAI5RwhATSg/U6I6WcRR3XzZeGf3SHCcCAMQ6ShiiXrPPKjd/pbx1TbpgfD9969ShriMBACBjrXWd4biMMV5JG1zniCF9JFW4DhFD2N6hxfYOPbZ5aLG9Q2uMtbZTp1cSAp0kSDZYa6e6DhErjDEr2N6hw/YOLbZ36LHNQ4vtHVrGmBWd/V1ORwIAADhACQMAAHAgUkrYQtcBYgzbO7TY3qHF9g49tnlosb1Dq9PbOyIuzAcAAIg2kXIkDAAAIKqEZQkzxsw0xqwxxviMMW3e4WGMudgYs8EYU2KMmRvKjNHEGNPLGPOGMaa45WvPNp631RizyhhTeCJ3g8Sq4+2vxm9By/IiY8zJLnJGi3Zs73OMMZUt+3OhMeZeFzmjhTHm98aYvcaY1W0sZ/8OoHZsb/bvADLGDDHGvGOMWdfST+a08pwO7+NhWcIkrZZ0paT323qCMSZe0q8kXSJpvKRZxpjxoYkXdeZKestamyHprZaf23KutTaT2587pp376yWSMlr+u17Sr0MaMop04P3hg5b9OdNa+0BIQ0afpyVdfIzl7N+B9bSOvb0l9u9AapJ0s7V2nKTTJP0oEO/hYVnCrLXrrLXHG856iqQSa+1ma22DpDxJM4KfLirNkPTHlu//KOkbDrNEq/bsrzMk/cn6fSyphzFmQKiDRgneH0LMWvu+pP3HeAr7dwC1Y3sjgKy1u6y1X7R875W0TtKgo57W4X08LEtYOw2StOOIn0v1rxsE7dPPWrtL8u9okvq28Twr6XVjzOfGmOtDli46tGd/ZZ8OnPZuy9ONMSuNMa8aYyaEJlrMYv8OPfbvIDDGDJeUJemToxZ1eB93NjHfGPOmpP6tLLrLWvtie16ilce41bMNx9reHXiZM621ZcaYvpLeMMasb/nXGI6vPfsr+3TgtGdbfiFpmLW2yhgzXdIL8p9GQHCwf4cW+3cQGGNSJT0r6UZr7aGjF7fyK8fcx52VMGvt+Sf4EqWShhzx82BJZSf4mlHrWNvbGLPHGDPAWrur5dDp3jZeo6zl615jzPPyn/KhhLVPe/ZX9unAOe62PPIN1Fq7zBjz38aYPtZaPnMvONi/Q4j9O/CMMYnyF7C/WGufa+UpHd7HI/l05GeSMowxI4wxSZJyJC11nClSLZV0bcv310r6lyORxhiPMSbty+8lXSj/DRRon/bsr0sl/UfLHTanSar88jQxOuy429sY098YY1q+P0X+98N9IU8aO9i/Q4j9O7BatuXvJK2z1j7RxtM6vI+H5Qd4G2OukPQLSemSXjHGFFprLzLGDJT0W2vtdGttkzHmBkl/kxQv6ffW2jUOY0eyRyQtNsZcJ2m7pJmSdOT2ltRP0vMtf9MJkv5qrX3NUd6I09b+aoz5Qcvy30haJmm6pBJJNZK+6ypvpGvn9r5a0g+NMU2SaiXlWKZXd5oxZpGkcyT1McaUSrpPUqLE/h0M7dje7N+Bdaakb0taZYwpbHnsTklDpc7v40zMBwAAcCCST0cCAABELEoYAACAA5QwAAAAByhhAAAADlDCAAAAHKCEAQAAOEAJAwAAcIASBiAmGGO+aowpMsaktHwCxBpjzETXuQDELoa1AogZxpiHJKVI6iKp1Fr7M8eRAMQwShiAmNHyOZKfSaqTdIa1ttlxJAAxjNORAGJJL0mpktLkPyIGAM5wJAxAzDDGLJWUJ2mEpAHW2hscRwIQwxJcBwCAUDDG/IekJmvtX40x8ZI+MsZ8zVr7tutsAGITR8IAAAAc4JowAAAAByhhAAAADlDCAAAAHKCEAQAAOEAJAwAAcIASBgAA4AAlDAAAwAFKGAAAgAP/HxTdPmMVvbemAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X1, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0]).reshape(2, 1)\n", "theta, _ = gradient_descent(cost, gradient, theta_start, X1, y, eps=0.00001)\n", "plot_fun(fig, polynomial_regression(theta), X1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Ten model ma duże **obciążenie** (**błąd systematyczny**, _bias_) – zachodzi **niedostateczne dopasowanie** (_underfitting_)." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X2, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0, 0]).reshape(3, 1)\n", "theta, _ = gradient_descent(cost, gradient, theta_start, X2, y, eps=0.000001)\n", "plot_fun(fig, polynomial_regression(theta), X1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Ten model jest odpowiednio dopasowany." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X5, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0, 0, 0, 0, 0]).reshape(6, 1)\n", "theta, _ = gradient_descent(cost, gradient, theta_start, X5, y, alpha=0.5, eps=10**-7)\n", "plot_fun(fig, polynomial_regression(theta), X1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Ten model ma dużą **wariancję** (_variance_) – zachodzi **nadmierne dopasowanie** (_overfitting_)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "(Zwróć uwagę na dziwny kształt krzywej w lewej części wykresu – to m.in. efekt nadmiernego dopasowania)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Nadmierne dopasowanie występuje, gdy model ma zbyt dużo stopni swobody w stosunku do ilości danych wejściowych.\n", "\n", "Jest to zjawisko niepożądane.\n", "\n", "Możemy obrazowo powiedzieć, że nadmierne dopasowanie występuje, gdy model zaczyna modelować szum/zakłócenia w danych zamiast ich „głównego nurtu”. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Zobacz też: https://pl.wikipedia.org/wiki/Nadmierne_dopasowanie" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Obciążenie (błąd systematyczny, *bias*)\n", "\n", "* Wynika z błędnych założeń co do algorytmu uczącego się.\n", "* Duże obciążenie powoduje niedostateczne dopasowanie." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Wariancja (*variance*)\n", "\n", "* Wynika z nadwrażliwości na niewielkie fluktuacje w zbiorze uczącym.\n", "* Wysoka wariancja może spowodować nadmierne dopasowanie (modelując szum zamiast sygnału)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 5.3. Regularyzacja" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def SGD(h, fJ, fdJ, theta, X, Y, \n", " alpha=0.001, maxEpochs=1.0, batchSize=100, \n", " adaGrad=False, logError=False, validate=0.0, valStep=100, lamb=0, trainsetsize=1.0):\n", " \"\"\"Stochastic Gradient Descent - stochastyczna wersja metody gradientu prostego\n", " (więcej na ten temat na wykładzie 11)\n", " \"\"\"\n", " errorsX, errorsY = [], []\n", " errorsVX, errorsVY = [], []\n", " \n", " XT, YT = X, Y\n", " \n", " m_end=int(trainsetsize*len(X))\n", " \n", " if validate > 0:\n", " mv = int(X.shape[0] * validate)\n", " XV, YV = X[:mv], Y[:mv] \n", " XT, YT = X[mv:m_end], Y[mv:m_end] \n", " m, n = XT.shape\n", "\n", " start, end = 0, batchSize\n", " maxSteps = (m * float(maxEpochs)) / batchSize\n", " \n", " if adaGrad:\n", " hgrad = np.matrix(np.zeros(n)).reshape(n,1)\n", " \n", " for i in range(int(maxSteps)):\n", " XBatch, YBatch = XT[start:end,:], YT[start:end,:]\n", "\n", " grad = fdJ(h, theta, XBatch, YBatch, lamb=lamb)\n", " if adaGrad:\n", " hgrad += np.multiply(grad, grad)\n", " Gt = 1.0 / (10**-7 + np.sqrt(hgrad))\n", " theta = theta - np.multiply(alpha * Gt, grad)\n", " else:\n", " theta = theta - alpha * grad\n", " \n", " if logError:\n", " errorsX.append(float(i*batchSize)/m)\n", " errorsY.append(fJ(h, theta, XBatch, YBatch).item())\n", " if validate > 0 and i % valStep == 0:\n", " errorsVX.append(float(i*batchSize)/m)\n", " errorsVY.append(fJ(h, theta, XV, YV).item())\n", " \n", " if start + batchSize < m:\n", " start += batchSize\n", " else:\n", " start = 0\n", " end = min(start + batchSize, m)\n", " return theta, (errorsX, errorsY, errorsVX, errorsVY)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przygotowanie danych do przykładu regularyzacji\n", "\n", "n = 6\n", "\n", "data = np.matrix(np.loadtxt(\"ex2data2.txt\", delimiter=\",\"))\n", "np.random.shuffle(data)\n", "\n", "X = powerme(data[:,0], data[:,1], n)\n", "Y = data[:,2]" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def draw_regularization_example(X, Y, lamb=0, alpha=1, adaGrad=True, maxEpochs=2500, validate=0.25):\n", " \"\"\"Rusuje przykład regularyzacji\"\"\"\n", " plt.figure(figsize=(16,8))\n", " plt.subplot(121)\n", " plt.scatter(X[:, 2].tolist(), X[:, 1].tolist(),\n", " c=Y.tolist(),\n", " s=100, cmap=plt.cm.get_cmap('prism'));\n", "\n", " theta = np.matrix(np.zeros(X.shape[1])).reshape(X.shape[1],1)\n", " thetaBest, err = SGD(h, J, dJ, theta, X, Y, alpha=alpha, adaGrad=adaGrad, maxEpochs=maxEpochs, batchSize=100, \n", " logError=True, validate=validate, valStep=1, lamb=lamb)\n", "\n", " xx, yy = np.meshgrid(np.arange(-1.5, 1.5, 0.02),\n", " np.arange(-1.5, 1.5, 0.02))\n", " l = len(xx.ravel())\n", " C = powerme(xx.reshape(l, 1),yy.reshape(l, 1), n)\n", " z = classifyBi(thetaBest, C).reshape(int(np.sqrt(l)), int(np.sqrt(l)))\n", "\n", " plt.contour(xx, yy, z, levels=[0.5], lw=3);\n", " plt.ylim(-1,1.2);\n", " plt.xlim(-1,1.2);\n", " plt.legend();\n", " plt.subplot(122)\n", " plt.plot(err[0],err[1], lw=3, label=\"Training error\")\n", " if validate > 0:\n", " plt.plot(err[2],err[3], lw=3, label=\"Validation error\");\n", " plt.legend()\n", " plt.ylim(0.2,0.8);" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":5: RuntimeWarning: overflow encountered in exp\n", " y = 1.0/(1.0 + np.exp(-x))\n", ":19: UserWarning: The following kwargs were not used by contour: 'lw'\n", " plt.contour(xx, yy, z, levels=[0.5], lw=3);\n", "No handles with labels found to put in legend.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "draw_regularization_example(X, Y)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Regularyzacja\n", "\n", "Regularyzacja jest metodą zapobiegania zjawisku nadmiernego dopasowania (*overfitting*) poprzez odpowiednie zmodyfikowanie funkcji kosztu.\n", "\n", "Do funkcji kosztu dodawane jest specjalne wyrażenie (**wyrazenie regularyzacyjne** – zaznaczone na czerwono w poniższych wzorach), będące „karą” za ekstremalne wartości parametrów $\\theta$.\n", "\n", "W ten sposób preferowane są wektory $\\theta$ z mniejszymi wartosciami parametrów – mają automatycznie niższy koszt.\n", "\n", "Jak silną regularyzację chcemy zastosować? Możemy o tym zadecydować, dobierajac odpowiednio **parametr regularyzacji** $\\lambda$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Regularyzacja dla regresji liniowej – funkcja kosztu\n", "\n", "$$\n", "J(\\theta) \\, = \\, \\dfrac{1}{2m} \\left( \\displaystyle\\sum_{i=1}^{m} \\left( h_\\theta(x^{(i)}) - y^{(i)} \\right) \\color{red}{ + \\lambda \\displaystyle\\sum_{j=1}^{n} \\theta^2_j } \\right)\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* $\\lambda$ – parametr regularyzacji\n", "* jeżeli $\\lambda$ jest zbyt mały, skutkuje to nadmiernym dopasowaniem\n", "* jeżeli $\\lambda$ jest zbyt duży, skutkuje to niedostatecznym dopasowaniem" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Regularyzacja dla regresji liniowej – gradient\n", "\n", "$$\\small\n", "\\begin{array}{llll}\n", "\\dfrac{\\partial J(\\theta)}{\\partial \\theta_0} &=& \\dfrac{1}{m}\\displaystyle\\sum_{i=1}^m \\left( h_{\\theta}(x^{(i)})-y^{(i)} \\right) x^{(i)}_0 & \\textrm{dla $j = 0$ }\\\\\n", "\\dfrac{\\partial J(\\theta)}{\\partial \\theta_j} &=& \\dfrac{1}{m}\\displaystyle\\sum_{i=1}^m \\left( h_{\\theta}(x^{(i)})-y^{(i)} \\right) x^{(i)}_j \\color{red}{+ \\dfrac{\\lambda}{m}\\theta_j} & \\textrm{dla $j = 1, 2, \\ldots, n $} \\\\\n", "\\end{array} \n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Regularyzacja dla regresji logistycznej – funkcja kosztu\n", "\n", "$$\n", "\\begin{array}{rtl}\n", "J(\\theta) & = & -\\dfrac{1}{m} \\left( \\displaystyle\\sum_{i=1}^{m} y^{(i)} \\log h_\\theta(x^{(i)}) + \\left( 1-y^{(i)} \\right) \\log \\left( 1-h_\\theta(x^{(i)}) \\right) \\right) \\\\\n", "& & \\color{red}{ + \\dfrac{\\lambda}{2m} \\displaystyle\\sum_{j=1}^{n} \\theta^2_j } \\\\\n", "\\end{array}\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Regularyzacja dla regresji logistycznej – gradient\n", "\n", "$$\\small\n", "\\begin{array}{llll}\n", "\\dfrac{\\partial J(\\theta)}{\\partial \\theta_0} &=& \\dfrac{1}{m}\\displaystyle\\sum_{i=1}^m \\left( h_{\\theta}(x^{(i)})-y^{(i)} \\right) x^{(i)}_0 & \\textrm{dla $j = 0$ }\\\\\n", "\\dfrac{\\partial J(\\theta)}{\\partial \\theta_j} &=& \\dfrac{1}{m}\\displaystyle\\sum_{i=1}^m \\left( h_{\\theta}(x^{(i)})-y^{(i)} \\right) x^{(i)}_j \\color{red}{+ \\dfrac{\\lambda}{m}\\theta_j} & \\textrm{dla $j = 1, 2, \\ldots, n $} \\\\\n", "\\end{array} \n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Implementacja metody regularyzacji" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def J_(h,theta,X,y,lamb=0):\n", " \"\"\"Funkcja kosztu z regularyzacją\"\"\"\n", " m = float(len(y))\n", " f = h(theta, X, eps=10**-7)\n", " j = 1.0/m \\\n", " * -np.sum(np.multiply(y, np.log(f)) + \n", " np.multiply(1 - y, np.log(1 - f)), axis=0) \\\n", " + lamb/(2*m) * np.sum(np.power(theta[1:] ,2))\n", " return j\n", "\n", "def dJ_(h,theta,X,y,lamb=0):\n", " \"\"\"Gradient funkcji kosztu z regularyzacją\"\"\"\n", " m = float(y.shape[0])\n", " g = 1.0/y.shape[0]*(X.T*(h(theta,X)-y))\n", " g[1:] += lamb/m * theta[1:]\n", " return g" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "slider_lambda = widgets.FloatSlider(min=0.0, max=0.5, step=0.005, value=0.01, description=r'$\\lambda$', width=300)\n", "\n", "def slide_regularization_example_2(lamb):\n", " draw_regularization_example(X, Y, lamb=lamb)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "908ebcd4bfdf4fe89ad0fb1347f6fea5", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=0.01, description='$\\\\lambda$', max=0.5, step=0.005), Button(descripti…" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "widgets.interact_manual(slide_regularization_example_2, lamb=slider_lambda)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def cost_lambda_fun(lamb):\n", " \"\"\"Koszt w zależności od parametru regularyzacji lambda\"\"\"\n", " theta = np.matrix(np.zeros(X.shape[1])).reshape(X.shape[1],1)\n", " thetaBest, err = SGD(h, J, dJ, theta, X, Y, alpha=1, adaGrad=True, maxEpochs=2500, batchSize=100, \n", " logError=True, validate=0.25, valStep=1, lamb=lamb)\n", " return err[1][-1], err[3][-1]\n", "\n", "def plot_cost_lambda():\n", " \"\"\"Wykres kosztu w zależności od parametru regularyzacji lambda\"\"\"\n", " plt.figure(figsize=(16,8))\n", " ax = plt.subplot(111)\n", " Lambda = np.arange(0.0, 1.0, 0.01)\n", " Costs = [cost_lambda_fun(lamb) for lamb in Lambda]\n", " CostTrain = [cost[0] for cost in Costs]\n", " CostCV = [cost[1] for cost in Costs]\n", " plt.plot(Lambda, CostTrain, lw=3, label='training error')\n", " plt.plot(Lambda, CostCV, lw=3, label='validation error')\n", " ax.set_xlabel(r'$\\lambda$')\n", " ax.set_ylabel(u'cost')\n", " plt.legend()\n", " plt.ylim(0.2,0.8)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAAHmCAYAAABK9WIBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZRc1X3u/Wd3VVdXz3NrFhoQltCAEEKSDcYSGIxJArYxII8hiY1D4im5l0D83nggyY2dOH5t3oRwsRe2rxfBF4ONnQvGRDGDwQIjMQg0gGapNfY8d1d31X7/OKeqTlUP6qFOVQ/fz1q1zj5DVe8WIPrp3x6MtVYAAAAAAEx2ebnuAAAAAAAAo0GABQAAAABMCQRYAAAAAMCUQIAFAAAAAEwJBFgAAAAAwJRAgAUAAAAATAm+BlhjzLXGmLeMMQeMMXcNcb/cGPMfxpjXjTG7jTF/5Gd/AAAAAABTl/FrH1hjTEDS25KullQv6WVJH7HW7vE88yVJ5dbaO40xtZLekjTbWhvxpVMAAAAAgCnLzwrsBkkHrLWH3ED6Y0k3pD1jJZUaY4ykEknNkgZ87BMAAAAAYIryM8DOk3Tcc17vXvP6F0krJJ2U9IakL1hrYz72CQAAAAAwRQV9/GwzxLX08crvk/SapCslLZX0n8aY31hr21M+yJjbJN0mScXFxZcsX77ch+5m2Nm90kCv065dIeWHc9sfAAAAAJgCdu7c2WitrR3qnp8Btl7SAs/5fDmVVq8/kvR160zEPWCMOSxpuaTfeR+y1t4v6X5JWr9+vd2xY4dvnc6Y/3WFdOp1p33bj6S5F+e2PwAAAAAwBRhjjg53z88hxC9LWmaMWWyMCUnaKukXac8ck3SVJBljZkl6h6RDPvYpe4KeiutAX+76AQAAAADThG8VWGvtgDHms5J+JSkg6QFr7W5jzJ+69++T9LeSfmCMeUPOkOM7rbWNfvUpqwKhZDs+lBgAAAAAMG5+DiGWtfYJSU+kXbvP0z4p6Ro/+5AzKRVYdgUCAAAAgInyNcDOaMGCZJsKLAAAAJBx/f39qq+vV28vP29PReFwWPPnz1d+fv6o30OA9UtKgGUOLAAAAJBp9fX1Ki0t1aJFi2TMUJugYLKy1qqpqUn19fVavHjxqN/n5yJOM5t3CHGUAAsAAABkWm9vr6qrqwmvU5AxRtXV1WOunhNg/cIQYgAAAMB3hNepazz/7AiwfgkwhBgAAACYzlpbW3XvvfeO673XXXedWltbR3zmy1/+srZt2zauz5+uCLB+YQ4sAAAAMK2NFGCj0eiI733iiSdUUVEx4jN333233vve9467f2OV3udzfQ9jfS4TCLB+SdlGhwALAAAATDd33XWXDh48qLVr1+qOO+7QM888oy1btuijH/2oVq9eLUn6wAc+oEsuuUQrV67U/fffn3jvokWL1NjYqCNHjmjFihX69Kc/rZUrV+qaa65RT0+PJOnWW2/VI488knj+K1/5itatW6fVq1dr3759kqSGhgZdffXVWrdunT7zmc/ovPPOU2Nj46C+PvXUU3rnO9+pdevW6aabblJnZ2fic++++25dfvnl+slPfjLo/KGHHtLq1au1atUq3XnnnYnPKykp0Ze//GVt3LhR27dv9+cPeAisQuyXYCjZZg4sAAAA4KtFdz3u22cf+frvDXn961//ut5880299tprkqRnnnlGv/vd7/Tmm28mVtZ94IEHVFVVpZ6eHl166aW68cYbVV1dnfI5+/fv10MPPaTvfve7uvnmm/Xoo4/q4x//+KCvV1NTo1deeUX33nuvvvnNb+p73/uevva1r+nKK6/UX//1X+vJJ59MCclxjY2N+ru/+ztt27ZNxcXF+sY3vqFvfetb+vKXvyzJ2c7m+eefl+SE8vj5yZMntWnTJu3cuVOVlZW65ppr9Nhjj+kDH/iAurq6tGrVKt19993j/4MdByqwfklZhTiSu34AAAAAyJoNGzakbAtzzz336KKLLtKmTZt0/Phx7d+/f9B7Fi9erLVr10qSLrnkEh05cmTIz/7Qhz406Jnnn39eW7dulSRde+21qqysHPS+F198UXv27NFll12mtWvX6oc//KGOHj2auH/LLbekPB8/f/nll7V582bV1tYqGAzqYx/7mJ577jlJUiAQ0I033jiaP5KMogLrF1YhBgAAAGac4uLiRPuZZ57Rtm3btH37dhUVFWnz5s1DbhtTUJDMDoFAIDGEeLjnAoGABgYGJDn7qZ6LtVZXX321HnrooXP22Xs+0meHw2EFAoFzfu1MI8D6hVWIAQAAgKwZbpivn0pLS9XR0THs/ba2NlVWVqqoqEj79u3Tiy++mPE+XH755Xr44Yd155136qmnnlJLS8ugZzZt2qQ///M/14EDB3T++eeru7tb9fX1uuCCC0b87I0bN+oLX/iCGhsbVVlZqYceekif+9znMv49jAVDiP3CIk4AAADAtFZdXa3LLrtMq1at0h133DHo/rXXXquBgQGtWbNGf/M3f6NNmzZlvA9f+cpX9NRTT2ndunX65S9/qTlz5qi0tDTlmdraWv3gBz/QRz7yEa1Zs0abNm1KLAI1kjlz5ugf/uEftGXLFl100UVat26dbrjhhox/D2NhRlNynkzWr19vd+zYketunNueX0gPf8JpL/99aeuDue0PAAAAMM3s3btXK1asyHU3cqqvr0+BQEDBYFDbt2/X7bffnlhUaioY6p+hMWantXb9UM8zhNgvVGABAAAA+OzYsWO6+eabFYvFFAqF9N3vfjfXXfIVAdYvbKMDAAAAwGfLli3Tq6++mutuZA1zYP3CNjoAAAAAkFEEWL+wjQ4AAAAAZBQB1i9sowMAAAAAGUWA9UuQAAsAAAAAmUSA9QurEAMAAABIU1JSIkk6efKkPvzhDw/5zObNm3WurUO//e1vq7u7O3F+3XXXqbW1NXMdnaQIsH5hDiwAAACAYcydO1ePPPLIuN+fHmCfeOIJVVRUZKJr5zQwMDDi+WjfNx4EWL94AyyrEAMAAADTzp133ql77703cf7Vr35V//zP/6zOzk5dddVVWrdunVavXq2f//zng9575MgRrVq1SpLU09OjrVu3as2aNbrlllvU09OTeO7222/X+vXrtXLlSn3lK1+RJN1zzz06efKktmzZoi1btkiSFi1apMbGRknSt771La1atUqrVq3St7/97cTXW7FihT796U9r5cqVuuaaa1K+TlxDQ4NuvPFGXXrppbr00kv1wgsvJL632267Tddcc40++clPDjo/evSorrrqKq1Zs0ZXXXWVjh07Jkm69dZb9Zd/+ZfasmWL7rzzzgn/mbMPrF9ShhBTgQUAAAB89dVyHz+7bcjLW7du1Re/+EX92Z/9mSTp4Ycf1pNPPqlwOKyf/exnKisrU2NjozZt2qTrr79expghP+ff/u3fVFRUpF27dmnXrl1at25d4t7f//3fq6qqStFoVFdddZV27dqlz3/+8/rWt76lp59+WjU1NSmftXPnTn3/+9/XSy+9JGutNm7cqPe85z2qrKzU/v379dBDD+m73/2ubr75Zj366KP6+Mc/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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cost_lambda()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 5.4. Krzywa uczenia się" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Krzywa uczenia pozwala sprawdzić, czy uczenie przebiega poprawnie.\n", "* Krzywa uczenia to wykres zależności między wielkością zbioru treningowego a wartością funkcji kosztu.\n", "* Wraz ze wzrostem wielkości zbioru treningowego wartość funkcji kosztu na zbiorze treningowym rośnie.\n", "* Wraz ze wzrostem wielkości zbioru treningowego wartość funkcji kosztu na zbiorze walidacyjnym maleje." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def cost_trainsetsize_fun(m):\n", " \"\"\"Koszt w zależności od wielkości zbioru uczącego\"\"\"\n", " theta = np.matrix(np.zeros(X.shape[1])).reshape(X.shape[1],1)\n", " thetaBest, err = SGD(h, J, dJ, theta, X, Y, alpha=1, adaGrad=True, maxEpochs=2500, batchSize=100, \n", " logError=True, validate=0.25, valStep=1, lamb=0.01, trainsetsize=m)\n", " return err[1][-1], err[3][-1]\n", "\n", "def plot_learning_curve():\n", " \"\"\"Wykres krzywej uczenia się\"\"\"\n", " plt.figure(figsize=(16,8))\n", " ax = plt.subplot(111)\n", " M = np.arange(0.3, 1.0, 0.05)\n", " Costs = [cost_trainsetsize_fun(m) for m in M]\n", " CostTrain = [cost[0] for cost in Costs]\n", " CostCV = [cost[1] for cost in Costs]\n", " plt.plot(M, CostTrain, lw=3, label='training error')\n", " plt.plot(M, CostCV, lw=3, label='validation error')\n", " ax.set_xlabel(u'trainset size')\n", " ax.set_ylabel(u'cost')\n", " plt.legend()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Krzywa uczenia a obciążenie i wariancja\n", "\n", "Wykreślenie krzywej uczenia pomaga diagnozować nadmierne i niedostateczne dopasowanie:\n", "\n", "\n", "\n", "Źródło: http://www.ritchieng.com/machinelearning-learning-curve" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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wKZNm7jiiitqvebcc8/laFuH3nnnnezfv/9I/+KLL2bXrl31vKNtMMCq6d5/HfYVxe0u/WHWXalzq/8Cuz9Ipi5JkiSplTvuuON4+OGHm/z+6gH2ySefpGfPns1R2lGVlpbW22/o+5rCAKumS58+POYS6HMSDD8n7kfl8bOwkiRJUht12223cffddx/pf+c73+E///M/2bt3L+eddx6FhYVMmDCBP/7xjzXeu27dOsaPHw9ASUkJs2fPZuLEiVx11VWUlJQcue5LX/oSU6dOZdy4cXz7298G4K677mLTpk1Mnz6d6dOnAzBs2DC2bdsGwB133MH48eMZP348d95555HPGzNmDF/4whcYN24cM2bMqPI5lYqKirj88ss59dRTOfXUU3n55ZePfLebb76ZGTNmcP3119for1+/nvPOO4+JEydy3nnnsWHDBgBuvPFG/v7v/57p06dz2223HfPvufvAqmmiCJY/nuqPuTT+tfAGWPtC3F50H3zkf0GOPyeRJElShn2nRwbvvbvWl2fPns03vvENvvzlLwPw0EMP8fTTT1NQUMAf/vAHunfvzrZt25g2bRqzZs0ihFDrfX7605/SuXNnlixZwpIlSygsLDxy7l//9V/p3bs3ZWVlnHfeeSxZsoRbb72VO+64g2effZa+fftWudeCBQv41a9+xeuvv04URZx++ul89KMfpVevXqxatYo5c+bwi1/8giuvvJJHHnmEa6+9tsr7v/71r/N3f/d3nH322WzYsIELL7yQ5cuXH7n3Sy+9RKdOnfjOd75TpX/ppZdy/fXXc8MNN3Dvvfdy66238thj8XabK1euZN68eeTm5jbt9z+NAVZNs2kh7NkYtwt6wrCPxO3Rl8T9A7tg1wZY+zycND25OiVJkqQMmTJlClu3bmXTpk0UFRXRq1cvhg4dyuHDh/nf//t/88ILL5CTk8MHH3zAhx9+yMCBA2u9zwsvvMCtt94KwMSJE5k4ceKRcw899BD33HMPpaWlbN68mWXLllU5X91LL73EJz/5Sbp06QLApz71KV588UVmzZrF8OHDmTx5MgCnnHIK69atq/H+efPmsWzZsiP9PXv2UFxcDMCsWbPo1KnTkXPp/VdffZVHH30UgOuuu45/+Id/OHLdpz/96WYJr2CAVVOlTx8e/XHIzY/b+QUw8Sp44+dxf+F9BlhJkiS1WVdc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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_learning_curve()" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "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.8.3" }, "livereveal": { "start_slideshow_at": "selected", "theme": "white" } }, "nbformat": 4, "nbformat_minor": 4 }