umz21/wyk/05_Regresja_wielomianowa.ipynb
2022-04-01 10:17:51 +02:00

1752 lines
378 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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": {
"slideshow": {
"slide_type": "notes"
}
},
"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": {
"slideshow": {
"slide_type": "notes"
}
},
"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": [
"[<matplotlib.lines.Line2D at 0x246ed465910>]"
]
},
"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": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"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": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"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": 7,
"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": 8,
"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": 8,
"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": 9,
"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": 10,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"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": 11,
"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": 12,
"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": 13,
"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": 14,
"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": 15,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-14-d7e55b0bd73a>: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": "iVBORw0KGgoAAAANSUhEUgAAAmwAAAFmCAYAAADQ5sbeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeVxUVf8H8M9BAWHADXeUx43ccyPNtMg0U0pF08hsecoyy3Jr0bbnycq0LBVbbLGnxayoX4iZZlm2oZmimYkbuCsuCKLDgAzMnN8fw+gwzCDLzNxlPu/Xa14w995hvgPMvd8553vOEVJKEBEREZF6BSgdABERERFVjAkbERERkcoxYSMiIiJSOSZsRERERCrHhI2IiIhI5ZiwEREREalcbaUDUEKjRo1k69atbXeOHgVOnwaaNAFatSp/n4i8Ky8P2L+//HvO/l5s1w6oX1+5+IiIfGjr1q1npJSNnbf7ZcLWunVrpKWl2e5ICUyfDiQm2i4OADB1KrBwISCEckFWlZRASgoQH182bnfbidTC8T04bpztvWe/r8X3IhFRDQghDrvc7o8T58bExMiLCRtgu2AEOPQOW63au0CsWAGMHl32Aud4IUxOBkaNUjpKItcc/1ftmKwRkcKMRUYkpSchIycD0RHRSOiSgPDgcK8+pxBiq5Qyptx2v0/Y9HKhcHwd9vjZSkFaoocPTkSkG6lHUhG3PA5WaYWp2ARDoAEBIgBrxq/BgKgBXntedwmbfw86cE5yrFbb18RE23YtJbNC2JIye/wBAUzWSDvs70VHWnsPEpFuGIuMiFseB6PZCFOxCQBgKjbBaLZtzzfn+zwm/07YUlLKJzWOSU9KitIRVo09fkdM1kjt9PTBiXxDSlsZiPP/hrvtRFWUlJ4Eq7S63GeVViTtTPJxRP6esMXH22q7HJMae9KTnGzbryVspSAt0tsHJ/K+lBRbza7j+c1+/hs9mv8zVGMZORkXW9acmYpNyMzN9HFE/p6wCWErxHdugXK3Xc3YSkFadbkPTiNHsjWFyoqPL39+czz/ae3DNqlOdEQ0DIEGl/sMgQa0b9jexxH5e8KmJ2ylIK263AenlSvZmkJlsWaXvCyhSwIChOsUKUAEIKFrgo8j4ihR/eA8bKRXHAFN7nBkMXmR2kaJMmEjIvXTy/Q75Dn8nyAfyDfnI2lnEjJzM9G+YXskdE1AWFCYV5+TCZsDJmxEGsTWFLJjqyvpGOdhIyL1utw0DVYrR0DTJazZJT/EhI2IlHe5aRpGjOAIaLpEb1MyEVWCXy7+TkQq4zhNA1C2i+vmm4HVq8u3pgC2/bGxXCfX39hHEFd2O5EOMGEjIuU5J2H2xG3qVGDBAtvUHo4jne3Hx8ayNYWI/AIHHRCRenBgARH5OQ46ICJ149Jq3sF1N4l0gQkbESmPS6t5D9fdJNIFJmxEpDxO0+A9XHfT+9iKST7AGjYiUh6XVvMurgrgXStW2ForHX+njr/z5GSOXqVK40oHDpiwEZHf4YAO7+HKC+RBHHRAROSvOKDDu5y78AMCmKyRxzFhIyLSMw7o8A3HuQTtmKyRBzFhIyLSMw7o8A22YpKXMWEjItIzrrvpfWzFJB/g0lRERHrGdTe9z10rJsD1bsljmLARERHVhL0Vk+vdkhcxYSMiIqoJtmKSD7CGjYiIiEjlmLARERERqRwTNiIiIiKVU0XCJoQYKoTYK4TIFELMcrH/CSHE9tLbTiGERQjRsHTfISHEP6X7uN4UERER6Y7igw6EELUAvAXgRgDHAGwRQnwjpdxlP0ZKOR/A/NLjhwOYLqXMdfgxA6WUZ3wYNhEREZHPqKGFrQ+ATCnlASmlGcAXAEZWcPw4AJ/7JLLLkRJYsaL8pIjuthMRETnidYQqSQ0JWySAow73j5VuK0cIEQpgKICvHTZLAD8IIbYKISZ6LUpXUlKA0aPLzmRtn/F69Ggu+UJERBXjdYQqSfEuUQCuVsZ195FiOIANTt2h/aWUWUKIJgDWCSH2SCl/K/cktmRuIgBERUXVNGab+PhLy48AtkkSHZcn4WSJRERUEV5HqJLUkLAdA9DK4X5LAFlujr0dTt2hUsqs0q+nhRArYOtiLZewSSnfA/AeAMTExHimjdl5+RH7G85xeRIiIiJ3eB2hShJS4f5xIURtAPsADAJwHMAWAHdIKdOdjqsH4CCAVlJKU+k2A4AAKaWx9Pt1AF6QUq6t6DljYmJkWpoHB5RKCQQ49C5brXyTERFR5fE6QqWEEFullDHO2xWvYZNSlgB4BMD3AHYD+FJKmS6EmCSEmORw6CgAP9iTtVJNAaQKIf4GsBnA6sslax4K+lIxqL3WwNG0aSwUJSKiynF1HXGsaSOCOrpEIaVcA2CN07Z3nO5/BOAjp20HAHT3cnjl2YtEp0yx3V+8uOz3ixdfaubmJyQiInLHnqzZa9Yca9gAXkfoIlUkbJrjXCTqKnFLTARiY7nwLxERuZeSUjZZc65p43WESilew6YEj9SwSWnr+ly8+NI2+xsOsL0J4+P5yYiIiNyT0vX1wt120j13NWxM2GqCRaJERETkQaoddKBZLBIlIiIt4GoKusCErTqci0St1ks1bUzaiIhITbiagi5w0EF1sEiUSJeMRUYkpSchIycD0RHRSOiSgPDgcKXDIqoZrqagC6xhqw5/KBL1h9dI5CD1SCrilsfBKq0wFZtgCDQgQARgzfg1GBA1QOnwiGrGsWfIjqspqBJr2DxJiEstaI79/+62axGb0MmPGIuMiFseB6PZCFOxbW5uU7EJRrNte745X+EIiWrIsSfITivJGmvwADBhqxk9JzWOTej218cmdNKppPQkWKXV5T6rtCJpZ5KPIyLyMC0PlNPztbYKWMNWE3quC+CCxORHMnIyLrasOTMVm5CZm+njiIg8SOurKej5WlsFTNhqQu9Jjf31OdY86OF1ETmJjoiGIdDgMmkzBBrQvmF7BaIi8hCtD5TT+7W2kjjowBP0OoEui1TJTxiLjIhcEAmj2VhuX3hQOLIey0JYUJgCkRF5gF4Gken1WuuEgw68Rct1ARXhXHOkVdUoUA4PDsea8WsQHhQOQ6ABgK1lLTzItp3JGmmafUCcc3Ljbrsa6fVaWxVSSr+79e7dW3qE1Srl1KlSAravru5rVXJy+dfh+PqSk6v286xW22OcfyfuthNVVw3+d41FRrl061I5a90suXTrUmksMvooaCJyS8/XWhcApEkXuYviyZMSN48lbJ5OatTE0wmWnn9XpC5+dnIn0j0/u364S9hYw1YTUid1Ab4gKxilxLo48jTH/zc7/p8RaZOfXWvd1bAxYSPf4UWUfElWo0DZzy4MRKQ+HHRAytPyTNukLfYPB44qU6DMCTqJSKWYsJHvVPciSlQVzt3vVRnhzBU+iEilOHEu+UZFNWwAW9rIc2oySSgn6CQilWING/nGihW2LiXHC59jEpecrO6Ztkk7PFGHVp36t8uGJVFUaEbB+QIUnC/EhYIiFBeVoLiouPRWAkuJ5eLxwv58AggMDkRQcCAC61z6GhoeAkO9UISE1bl0LBFpHgcdOGDCpgAWc5NWVGFwjKXEgpwTZ5F9NAfZR8/gzPFc5J0+h3PZ55GXfR55p88hL/s8THkmmM4XwmpxvcB8TQQECBjqhcJQ34C6EeFo2Kw+GjStjwZN66FBs/qIaN4ATVs3RrPWTRDeMIzJHZHKuUvY2CVKvmGfUbuy24mU4KLrPv/hqTie+Amy9hUg65ohyDpwClmZJ3HqUDZysnJhtZb90Fs7sBbqN6mHeo3ron6TeoiMbo6w+gaElLaIGeqGICQ8BHUMwQgMDixtPauNwOBA1KpdCxAAHH6k1Wq92BJnvmBrjSsqNKPQWAjTuQLk55lgOlcA07kCnM8xIvtYDval7Ufe6XPlYgsJq3MxeWt5RQu06hiJqI62r/Ua1fXBL5iIqostbEREAAqMhTjw5jIcfnoeDve8Docj2uLw7mPIyTpb5riIFg3Qol0zNGvTBE1aNULjVhFo1DICTUq/htU3qKIVy2Kx4HxOPnKO5+LU4WycOpSNk4dO49ThbJw4cArHM07AfKH44vH1GoWjddcotO/RGu16tkH7Hq0R1amlLYkkIp9hl6gDJmxE/q3AWIh9afuRsfUAMv46gMxtB3Fs3wnYz4d1QoMR1bkl/tW5JaI6tUSrK5qjxZFdaH7/ONQx1FE4es+wWCw4feQMju7JwtE9x3Fk9zEc+OcIDu44jKJCMwBb7Vy7Hq3R5ZoO6DqgI7r074gGTeopHDmRvjFhc8CEjch/SCmRtf8kdv2xD7s27sWuTftw6J8jF7sLG7eKQHSvtmjfsw3a92yDNt2i0CSqEQIClJ31yFhkRFJ6EjJyMhAdEY2ELgkIDw73+vNaSiw4ti8LmX8dQuZfB7F3Syb2bM5EcZGtNS4yujm6DeiInoO6oefgK5nAEXkYEzYHZRI2Fr0T6YqUEsf2ZeHvX3bh71/TseOXdOSezAMAhIaHoOPV0ejSrwM6XR2N6N5tUb+x+hKO1COpiFseB6u0wlRsgiHQgAARgDXj12BA1ACfx2MuKkbmtgPYmboHOzfswc7fd8N41gQAaNejNXoPvhK9brwS3a7rjKDgQJ/HR6QnTNgcXEzYOK0EkS6cPX0Oad9vR9r327H953TknrDVnUW0aIDu13dB1wGd0LV/B0R1bolatdRdk2UsMiJyQSSMZmO5feFB4ch6LAthQWEKRHaJxWJBxtYD2LpuB7b9uAO7Nu5FSbEFIWF1EDO0BwbE90HfW3rDUDdU0TiJtIijRB0dPcoZzIk0zGq1Ys/mTGxesw1b1m5HxtYDkFKiQdN66DmoG7rHdsGV13dBZPtmqhgAUBVJ6UmwStfTf1ilFUk7kzCh1wQfR1VWrVq10LFPNDr2icb4Z25FYX4hdvy6C398k4Y/VqXh9//bhMCg2uh145W4bkw/DBjdF6HhIYrGTKR1/tnCJoS8WMHGGcyJNMF8wYy/1u/ExpTN+GNVGs6eOoeAAIGOV1+BPkN7ok9cT7Tr0Vrx2rOamrluJl7d+Krb/bP6z8LcwXN9GFHVWK1W7N6UgdTkP5GavAknD2UjOCQI18RfhUHjr0PMkO4ceUpUAbawucNkjUi1LhQUYdOqNPz29SZs+e4vXDAVITQ8BH3ieqLf8BjEDO2Bug29X4jvS9ER0TAEGmAqNpXbZwg0oH3D9gpEVXkBAQHock0HdLmmAybOvwu7N+3Dj8t+wy9fbsTPn29A/Sb1MPD2/rhl0hBEdYxUOlzSM51N2K6KFjYhxFAAiQBqAVgqpZzntP96ACsBHCzdlCylfKEyj3WFLWxE6lVSXIKtP/yNn7/YgA0pm3HBVISGzeqj34ir0D/+KnQf2FXXhe1aqGGrjmJzMbZ8tx0/fvorNq3aimJzCXoN7oaRk4eh7y29fFdbqLOLOFVAo0siumthg5RS0RtsidZ+AG0BBAH4G0Bnp2OuB/BtdR7r6ta7SRMprVYpp06VErB9tVol+ZDVKmVycvnfu7vtpGtWq1Xu/nOfTHzoPTm60b1ysBgjRzW8Ry54YInc/vNOWVJSonSIPvX74d9l+Mvh0jDHIPE8pGGOQYa/HC5/P/y70qF5RO6pPLl8ztdyXKsH5WAxRo5v/ZD8fN4KeT7X6P0nT04uf953vB4kJ3s/huriebNqXF3nNXDdB5AmXeVLrjb68gagH4DvHe4/BeApp2PcJWyXfayrW+/evW2/Fa28SfVIyydN8picE7ky6dUUOaHLNDlYjJFxIePkS+MWyo3fbJHmIrPS4SnKWGSUS7culbPWzZJLty6VxiIfJDM+VlJcIn9P3iQfH/S8HCzGyFvCxssl0z+Up4+e8d6TWq1STpliO89MmVL2vDNlipRff63aCznPm9Xg+Pux326+WUqLpfxxKkl61ZywjYGtK9N+/y4Abzodcz2AnNIWtO8AdKnsYx32TQSQBiAtKirq0m9GRX8kv6LRTz5UcxaLRW5e+5f8T/wrckjt2+RgMUZOHfCMXP3+jzI/L1/p8Egh+/8+JOfdvVjeFJgghwXfLhdNeleePHTaO0/29ddlL+D2ZM2eyKk18eF5s3qs1vJ/b8ffl8ViS+Kc//YK5QdqTtjGuki63nA6pi6AsNLv4wBkVPaxrm4XW9hIWa4++fCko1vncs7LL1/7Rt7dfrIcLMbIMU0nyPdnLpNH9x5XOjRSkRMHT8lFk96VQ4MS5E2BCXLhg+/K7OM5nn0Sx1Y2x4RNC+cgnjerxtXvq0ePsr83e7LWo8elljcFWy7VnLBVuVsTwCEAjWrcJUq+5/yJxfmTj3MzNWlexrYDcv69b8m4kHFysBgjp137rFz/earfd3lSxU4fPSMXT35fDg1KkDeH3iGXzvpUGs96qAXWVcLm2EWqds7nTS3ErISKWiTtSZu7JE7Blks1J2y1ARwA0MZh4EAXp2Oa4dKI1j4AjgAQlXmsqxsTNgU51mBYLK5rC3jy0Tyr1Sq3fL9dPjF49sXapEWT3pX7/z6kdGikMVn7T8qXxy+Sg8UYObrRvXLlW2tlSXENBqE416xpLWFjC1vlXa7mz7mxQCW/V9UmbLbYEAdgX+mIz2dKt00CMKn0+0cApJcmZJsAXFPRYy93Y8KmIFefcJy/8uSjWcXmYrlu2a9yYo/H5GAxRiZEPiC/eCXFcy0j5Lcyth2Qjw38rxwsxsj7u06XO37bVb0fZL+IO9asOd6+/tqzgXsSa9iqxl0NmmPNmmNyZrGU3abQ71PVCZuvb0zYFOZYM+D8ZuFoJ00qKiyS37y9Vo5v/ZAcLMbICV2mybUfrme3J3mU1WqVvydvknf8a5IcLMbI+fe+JfOyz1X1h9iSMueaNeeRo2rEUaI1V5VuUrawKX9jwqYC7j7JcNSuphQVFsmUN7+Tt7ecKAeLMfLRfk/JP1alSQtrEcmLCvIL5fszl8mbAhPk6Eb3yp+W/yatVTlnaDXx4TxsNefqb2+xXErW7GU5rGFTx40Jm8L8pQZDxydXc5G5TKI27dpn5dYfd1TtoklUQwd3HpGPXP2UHCzGyGdHzJU5J3Ir90AdvzfpMlz9je1JnOP8bBwlqo4bEzYF+VMNhlY/xVegpKRErlv2q7yz7cMX509jokZKKikpkV+9/o2MCxknxzS5T278ZovSIZHWqCyBd5ewqWItUV+LiYmRaWlplz+QPE+ja7tVi+Prsr9e5/saWbNQSom0H/7G0pmf4sCOw2jfsw3umzMOMTf1gNDIayB9O5R+FPPuWoz92w9hxMM34cHX79H1mrOkX+7WEmXCRr4lpX8tvOyYtNlpLFk7sOMw3n38Y2z78R80b9sU9740DrG39UNAQIDSoRGVYS4qxofPfI7/W7AK0b3a4LkvH0Pztk2VDouoSpiwOWDCpiNaSAClBByTG6tV+Zgq4XyOER/9Jwmr3/0BhnqhuPO5sbjloSFstSDV27hyC+bf+xasVitmLZuCfsPLXfu8RwvnJFI1dwkbPyKTtqWk2LpYp0+3nRCBS61ao0fb9ivJHosjx1hVyGKxYOVba/HvKx7F6vfWYcTDQ/FRxhsYPe1mJmukCdeMvApvb30FkdHN8Z+Rr+CLeSvgs8YJtZ+TSLtcFbbp/cZBBzqi5kEMao7NjV2b9slJvZ6Qg8UY+fig5+WBfw4rHRJRtV0ouHBxlYQFDyyRxeZi7z+pq/e5uzneOCqVXABHiTJh0y21ThOioVGi+edMcvHk9+WNAWPl7S0nyl+SNnDkJ+mC1WqVHz77uRwsxshZQ1+U+edMvnhS18sfOSZsKj0XkPLcJWysYSN9kCqsE5PaqGXZ+M0WvDF5KXKyzmLkI0Nx70vjEBoeonRYRB713Qc/YdGk99C6SyvMWfM0GrVo6N0ndD4nTZkCLF6s+RHj5H2sYSP9kiqtExPCNkWJ84nY3XYfy8s+hzl3LMJ/419F3YhwLP5jDiYn3sdkjXRp2IRBmLP6aZw4cAqPD3weZ47neO/JXJ2TAFvSlphoS+SYrFEVMWEjbbOfGO0nP6vV9jUxUR1Jm0ptSNmMB7rOQOrXm/DvF27HW1vmoWOfaKXDAgAYi4xYum0pZq6biaXblsJYZFQ6JNKJmCHdMXftszh7Mg+P3zDbO0mbu3PS4sXlj2WyRlXALlHSNn+aiNcDTOcL8NbU/2Hdx7+ifc82ePLjR9Cma5TSYV2UeiQVccvjYJVWmIpNMAQaECACsGb8GgyIGqB0eKQT6Rv34ulhc9CgWX289vPznu0edXdOmjatfNLGFjZygV2ipE/x8bakzPGkJ4TtfnKybT8BsF2kJvV8Aj8t+w3jn7kVi/+Yo6pkzVhkRNzyOBjNRpiKTQAAU7EJRrNte745X+EISS+6XNMBc9c+g9wTZ/HU0JdwPteDrbiuzkmOpkxhTwBVCxM20jaV14mpgcViwbLZX2FG7H8AAAt+exH/fvF2BAapa061pPQkWKXV5T6rtCJpZ5KPIyI969yvA2anPInj+07gueHzUGi64Jkf7Orck5JyacDBokWXPlTakzbOzUaVwISNSMdyTpzFzBtfxCezv8TAcf3xzl/z0eWaDkqH5VJGTsbFljVnpmITMnMzfRwR6V3PG7rhqc+mYc+fGXjxtgWwlFi880TsCSAPYMJGpFM7ftuFh3o9gb2bM/HEh5Mx65MpMNQNVTost6IjomEINLjcZwg0oH3D9j6OiPzBtaP7YuqSidjy3V94f+an3nkS9gSQBzBhI9IZKSW+en0Vnhg0G4Z6oVi86WUMued6pcO6rIQuCQgQrk9JASIACV0TfBwR+Yu4BwYj/tFh+Hrht1j/2e9Kh0PkEhM2Ih0pMBbixYQFeO+JT3DNyKvw5uZ5qhpYUJHw4HCsGb8G4UHhF1vaDIEGhAfZtocFhSkcIenZg6/djW7XdcKCB97B/r8PKR0OUTmc1oPIl7y4+sHpI9l4bsQrOJR+FPfPHY8xjw2H0GBXS745H0k7k5CZm4n2DdsjoWsCkzXyibOn8vBwzEwE1QnEkm3zOYk0KYLTehCpQUqKbY4mx6H89nnjRo+u9mixvVsy8Ujfp3Dy0GnMWf00xj4+QpPJGgCEBYVhQq8JmDt4Lib0msBkjXymQdP6ePqzaTh58DTenPKB0uEQlcGEjciX4uPLz7/kOCt6NUaL/fZ/f+Cx6/+L4NBgLN44BzFDunshcCL/0O3aTrjjmVux7uNfsf7zVKXDIbqIXaJEvuaYpNlVY8ZzKSX+7/VVeO/JZeh8TQfMXvEE6jeu54WAifyLpcSCGdf/F4d2HsEH6QvRKDJC6ZDIj7BLlEgt7PMvOapisma1WvHOjI/x3pPLEHtbP8z/8T9M1og8pFbtWpj58SMoMZdgyYyPlQ6HCAATNiLfs7ewOarC8jQlxSV47b63kZy4GvGPDsPTn01DUJ0gLwRK5L9atGuGO565Fb999Qc2f/eX0uEQMWEj8innmrUqriloLirGSwkLsO6TX3HP7AQ8vOheBATwbUzkDWMfH4FWHVrgzUc/gLmo2LtPJqVt4Xjnc4C77eR3eKYn8qWUlEvJmr0btJJrChYVFuH50fOxIWULJi++D3c+N0azI0GJtCAoOBAPJ96HEwdO4dslP3j3ybw0gpz0gwkbkS9Vc03BQtMFPDfiFaSt3Y7p7z6I+EeG+TBoIv8VM6Q7et14JT596f+Qn+d6rVuP8MIIctIXjhIlUrkLBUV4Om4O0lP34PEPJ+PGu2KVDonIr2RuP4iHe8/EbU+MwP3z7vTeE3loBDlpG0eJEmlQsbkYL4x5DempezDr06lM1ogU0L5HGwwc1x8r31qL8zlG7z2RB0aQk36pImETQgwVQuwVQmQKIWa52D9eCLGj9LZRCNHdYd8hIcQ/QojtQgg2m5FuWCwWzL1zMbas3Y5p7z6Igbf3VzqkSjEWGbF021LMXDcTS7cthbHIixc4Ih+5fdYoXDAVITlxtfeepIYjyEnfFE/YhBC1ALwFYBiAzgDGCSE6Ox12EECslPJKAC8CeM9p/0ApZQ9XTYhEWiSlxKIH38Pv/7cJD752N4ZNGKR0SJWSeiQVkQsiMW3tNLy68VVMWzsNkQsikXqEM8aTtrXpGoX+8Vdh5ZtrYTpf4PknqOEIctI/xRM2AH0AZEopD0gpzQC+ADDS8QAp5UYp5dnSu5sAtPRxjEQ+9fF/k7D2f+sx/plbMWbGcKXDqRRjkRFxy+NgNBthKrYVZ5uKTTCabdvzzfkKR0hUM7fPGoX8PBPWffKr5394DUaQk39QQ8IWCeCow/1jpdvcmQDgO4f7EsAPQoitQoiJXoiPyKe+fXcdlr/0NYbedwPueSFB6XAqLSk9CVZpdbnPKq1I2pnk44iIPKtjn2hcEdMOa97/ER4fsFfNEeTkP9SQsLmqpnT5ThBCDIQtYZvpsLm/lLIXbF2qk4UQ17l57EQhRJoQIi07O7umMRN5xZ+rt+KNye+jT1xPTHtnoqbmWcvIybjYsubMVGxCZm6mjyMi8ry4+wfh4D9HsPvPDM/+YCGAUaPKDzBwt538jhoStmMAWjncbwkgy/kgIcSVAJYCGCmlzLFvl1JmlX49DWAFbF2s5Ugp35NSxkgpYxo3buzB8Ik84/DuY3j5jkS069EazybNQK3atZQOqUqiI6JhCDS43GcINKB9w/Y+jojI8waOG4DgkCD89OlvSodCfkYNCdsWANFCiDZCiCAAtwP4xvEAIUQUgGQAd0kp9zlsNwghwu3fAxgCYKfPIifykPw8E/4b/yqCQoLw/IonEWKoo3RIVZbQJQEBwvUpJUAEIKGrdrp3idwJDQ9Bn5t74fevN8FisSgdDvkRxRM2KWUJgEcAfA9gN4AvpZTpQohJQohJpYf9B0AEgLedpu9oCiBVCPE3gM0AVksp1/r4Jagf16hTNdv0HYk4efA0/vPVY2jSqpHSIVVLeHA41oxfg/Cg8IstbYZAA8KDbNvDgsIUjpDIQQ3Oi7Fjr8HZU+ew8/c9Xg6S6JLaSgcAAFLKNQDWOG17x+H7+wHc7+JxBwB0d95OTuxr1DmOPnIcQp6cbKuRIEV8NicZm9f8hSlv3Y9u13ZSOpwaGbPOsoQAACAASURBVBA1AFmPZSFpZxIyczPRvmF7JHRNYLJG6lOD82KfuJ4IDglC6oo/0f36Lj4OnPyVKhI28jLHNeoA28nJj9eoMxYZkZSehIycDERHRCOhSwLCg8MViWXbjzuwbPZXGHzXdbhl0pCyO6W0XVTi48sWHLvbrhJhQWGY0GuC0mEQVawG58UQQx1cGdsZW3/420fBEnEtUf/BNeoA2CZ2jVseB6u0wlRsgiHQgAARgDXj12BA1ACfxnImKxcP9XwC9RrXxRt/zi1ft7ZiBVtGibypBufF5EWrsWTGR/j04Nto+i8OZCPP4Vqi/o5r1KlqYler1Yr5/34TF0xFeO6rx1wPMnBsAbDPdO7HLaNEHleD82LvIVcCsLWSE/kCEzZ/wTXqVDWx66olP2Dbj/9g4mt341+d3Czc4TzTeUBA+ZnQiaj6anBejOrUEuENDNi9ycPzsRG5wYTNH3CNOgDqmdj1WMYJLJ35KWJu6o5bHryx4oPZMkrkHTU8Lwoh0LFvNPZsZsJGvsGEzR9wjToA6pjY1Wq14vUJb6N2UG08tvShy69kwJZRIu/wwHmxU98rcGjnURTmF/ogYPJ3TNj8AdeoA6COiV3XvP8TdqbuwaQF96BRZETFB7NllMh7PHBebN0tClJKHN1bbnEeIo9jwuYPuEYdAOUndj2TlYv3Zy5Djxu6Ysg911/+AWwZJfIeD5wXozpFAgAO7zrmjQiJyuA8bORXlJzYdcn0j1BiLqn8ou72FgDH+dbsSVtsrN+0jBKpVWT7ZqhVuxaO7jmudCjkB5iwkd9RYmLXv9b/g9+++gP3zE5AZPvmlXuQ/ZN+ZbcTkU/VDqyNRpENkX0sR+lQyA+wS5TIyywlFrw97UM0a90YYx8frnQ4RORBES0a4MzxXKXDID/AFjYiL/v+w59xaOdRPPflDASHBKtqaSwiqpmIyIY49M8RpcMgP8CEjciLzBfMWPbCV+jc7wpce+vVLpfGmvH9DEWWxqouJpxEl9RtGI78PNfzOxJ5EhM2Ii/69t11OHM8FzM/eRT55vyLS2PZ2SfyjVseh6zHsnwy+KEm9JBwEnlSSFgdFBovKB0G+QHWsBF5SaHpAj6fuwI9buiKHgO7qmpprOpQ01qsRGoRElYHFwqKYLFYlA6FdI4JG5GXrP1gPfJOn8M9s20T8qplaazq0nrCSeQNgcGBAABLMRM28i4mbEReUFJcgq9e/wbdru2Erv07AlDH0lg1ofWEk8gbrFbbh5iAWrycknfxP0xvpARWrCi/bJG77eQVP3++AdlHc5Aw89LktmpYGqsmtJ5wEnmDtNrOqZWaDJuoBpiw6U1KCjB6dNm1Ju1rUo4ezeWMPMRYZMTSbUsxc91MLN22FMaiSwMJpJT4etG3aN21FfoM63lxu9JLY9WU1hNOIm8oMZdACMEWNvI6jhLVm/j4S2tNAjDOewFJ/xmNjPSfEP3EICQMGwROwFAzlxspmb5xL/ZvP+RyCSoll8aqKXvC6fzaA0SAJhJOIm8wnSuAoV4oW9jI65iw6Y19rUkAqSsSEReaCGttwDQAMARuwoyFLTkFQw04jpS0c56aY+Vba2GoF4obxl/r8mcosTSWp2g54STyhvxzJhjqhSodBvkBJmx6JASM815AXGgijMGXNmttzi81utxIyU82LEPq15sw/KGbEGKo4+PofEPLCSeRp53PMSK8Ic+lNSKlrVwnPt7W6HC57X6Kne56JCWS/jMartMKTsFQE5cbKblt5T8oKbZgyD3X+zYwIlLEmWO5aNSyodJhaBtrryuFCZvelP6TZ/z1E0zBrg/hFAzVd7mRkqbfShDVKRLterT2bWBEpIjso2fQuGUjpcPQNsfaa3vSNn267f7Uqbb9xIRNd1JSgMRERPccxCkYvKCikZJ1zofgzPazuGHctSxAJvIDBcZCGM+a0CSKCVuN2Guv7UlbQMClZG3hQnaHlmLCpjfx8UByMhJeSOYUDF5Q0dQcz4Q/DwAYcGtfBSMkIl85svsYACCqY6TCkeiAw4C5i5islcGETW+EAEaNQniduuqd80vjk/vaR0omDk3ErP6zkDg0EVmPZeF06lm0aN+MJ28iP3F4V2nC1rmlwpHogL0b1JFjTRtxlKieqXYKBnuBqWNzt2PNQnIyMGqUsjFehvNIycL8QmxfvxPxj8bpujvUWGREUnoSMnIyEB0RjYQuCQgP5sx+5J8O7TyKwOBANG/TROlQtM25Zm3hwkv3Aba0lWLCpnOqnILBaXLfMm9OjRaY7kzdg5JiC2Ju6q50KF5zuQmDifzN3i2ZaN+zNWrVrqV0KNpWWntd5kO8vXs0MRGIjVX9h3hfYMJGvuf8ZrQnbhouMN2+fidqB9ZCl9KF3vWmMhMGK95yS+RDlhILMrYewLD7BykdivaV1l6XmW/Nfp2IjdXkh3hvUEUNmxBiqBBirxAiUwgxy8V+IYRYXLp/hxCiV2UfSyqlswLT7b+ko1O/K1An1M1cKhp3uQmDOa8f+ZuD/xzBhYIidOwbrXQo2ldae13u/O9uu59SPGETQtQC8BaAYQA6AxgnhOjsdNgwANGlt4kAllThsaRGOiowLSoswv7th9DlGn22rgGXnzCY8/qRv9n+804AQLdrOykcCfmLSidsQogbhRDvCyF6lN6f6KEY+gDIlFIekFKaAXwBYKTTMSMBfCJtNgGoL4RoXsnHkto4F5hareUnTdSQ/dsPwVJiQcc++p3b7nITBnNeP/I32376B606RqJxywilQyE/UZUWtocBPAHgTiHEDQB6eCiGSABHHe4fK91WmWMq81hSG3cFpvakTWPLkOzdsh8A0OGqdgpH4j0VTRjMef3I35iLivHPr7vQa1A3pUMhP1KVhC1bSpknpXwcwBAAV3koBled085NLO6OqcxjbT9AiIlCiDQhRFp2dnYVQySPsheYOtas2ZM2e+GphhzaeQR1I8LRKFK/n7QrmjBY8Xn9iHxs+/qduFBQhKuGeqrdgujyqjJKdLX9GynlLCHEox6K4RiAVg73WwLIquQxQZV4LABASvkegPcAICYmRlt9bnpjLySt7HaVO7o3C1Gd9N+wq9p5/Yh8bGPKZoSE1UFPtrCRD102YRNCLAIwXUq50nG7lPIND8WwBUC0EKINgOMAbgdwh9Mx3wB4RAjxBYC+AM5JKU8IIbIr8Vgirzq65zj6jfBUg7O6qXJePyIfslgs2PjNFlw1rCeC6gQpHQ75kcp0ieYD+EYIEQoAQoghQogNngpASlkC4BEA3wPYDeBLKWW6EGKSEGJS6WFrABwAkAngfdjq6dw+1lOxEV1OYX4h8rLPo0W7pkqHQkQ+8Pcvu3D21DlcO5prBpNvXbaFTUr5rBDiDgC/CiGKAJgAeHS+MynlGtiSMsdt7zh8LwFMruxjiXzlzPFcAEAjjhQjJ1zGS59+/PRXhNYNQb8RMUqHQn6mMl2igwA8AFui1hzABCnlXm8HRqQFFxO2yIYKR0JqwmW89KnQdAGpX/+J2LH9EBzi4UmypbSNkHec7b+i7eR3KtMl+gyA56SU1wMYAyCpdFoPIr+Xd/o8AKBB03oKR0Jq4biMl32yYVOxCUazbXu+OV/hCKm6fv4sFYX5FzDk3wM9/8NTUoDRo8vORWmfs3L0aM1Nd0Sed9mETUp5g5QytfT7f2BbVeAlbwdGpAWFxkIAQGjdUIUjIbXgMl76JKVEypvfoW33f6HrAC+sahIfX34CcccJxjU23RF5XpUXfy8dncnVbokAmM7bE7YQhSMhteAyXvq047ddOPjPEcx4fxKEN7omHddXTky03YCyE4yTX6vWWqJSykJPB0KkRUUFRQCg20Xfqeq4jJc+/d+CVagbEY4b7vBiDaJj0mbHZM07pARWrCi/FKK77Sqg+OLvRLrA8ymV4jJe+nNgx2FsWrUVo6bEeX6wgSN7N6gjDa6vrAkarBlkwkZE5EFcxkt/vnhlBULC6mDkI0O99yTONWtWa/maNvIcDdYMVrmGjYgusdeySKsEaikcDKkGl/HSjyN7juPXpI0YM2M4wht48e+XknIpWbB3gzrWtMXGanLpPtXSYM0gEzaiGggJrwMAKMy/4N2TOWkOl/HSh4//m4Tg0GCMfWJEuX0enRw5Ph5ITi4735o9qYiNVWWLj+bZf7/2ZA1QbbIGMGEjqhH7dB6mcwVM2Ih0JmPbAfz21R+487kxqN+47FyLHp8cWQjXLWjutlPNuasZVGnSxho2ohow1LMlbPl5rqdx0BtjkRFLty3FzHUzsXTbUhiLjEqHROQVUkosfWo5whuGYcyMW8rs4+TIOqDBmkG2sBHVQETz+gCAnKyzaN+jjcLReBeXWyJ/sunbrdi2bgceWvhvGOqVnaalMpMjsztc5TRYM8gWNqIasC/6nn00R+FIvIstCuRPzBfMWDL9I0R1isTwh4aU28/JkXXAXjPo2P1pT9rstYQqw4SNqAYimjdAQIDA6SPZSofiVVxuifxJ0isrceLAKUxePAGBQYHl9nNyZB2w1wY616q5264CTNh8TYOzK5N7tWrXQrO2TXFsX5bSoXgVWxTIXxzedRSfvfw1Bo7rj16Durk8pqLJkYstxSgsKWR9J3kcEzZf0+DsylSx1l1a4VD6MaXD8Cq2KLjGQRj6YrVasWDiuwitG4qHF93r9jhXkyPbma1mzPpxFiIXRCL1SKq3QyY/woTN1zQ4uzJV7F+dW+J4xgmYi4qVDsVruNxSealHUhG5IBLT1k7DqxtfxbS103iR1rhv3v4euzbuxaQF95SbxsOZfXLkVwa/gsCAst2mrO8kb2DC5mv2okZ70hYQUH6kCmlKdO92sFqs2L/9kNKheE11l1vSawsUB2Hoz7F9WVg681NcNbQHBt95XaUeExYUhuDawQiqFeRyP+s7yZM4rYcSNDa7MlWsc78rAAC7Nu5Fp77RCkfjPVVdbknP04BwWgff8uiKAi5YSix45e43EBQShBlLH7q45FxlsL6TfIUJmxI0NrsyVSyieQM0a90Y6Rv34Nbpt1z+ARpW2eWWHFug7OwXtbjlcch6LEvT62ryIu07vkj8P5uTjD2bM/HsF9PRqEXDKj3WXt/p6v/Bn+s7yfPYJeprGpxdmS6v23Wdsf3ndFgsFqVDUQW9TwPCQRi+4Yuu520/7sCyF77CoDuvRext11T58azvJF9hwuZr7mZXtidtHCWqSTE39YAxNx/70g4oHYoq6L0Fihdp3/B24n/meA7mjk9EVKdITH37gWr9jOrWdxJVFbtEfc0+u3J8fPnZlWNjOUpUo2KGdEdAgMCW7/7SdR1bZem9m8h+kXbuqgsQAbxIe5A3E/9iczFeTFiICwVFeO2rxxASFlLtn1XV+k6i6mDC5mv2WZQru500oW5EODr1uwIbUjbj7udvUzocxSV0ScCM72e43KeXFihepL3Pm4n/21M/xK6Ne/H0Z9Pwr04taxImgMrXdxJVF7tEiTzk+tv648COwzi866jSoSjOX7qJ7BfpuYPnYkKvCbp5XWrhra7nVe/8gG/fXYfbnhiJgbf3r0mIRD7DhI3IQ64bezUCAgR+SdqodCiqYG+BShyaiFn9ZyFxaCKyHsvS/JQe5DveSPx3/LYLb035H64a1hP3vTzO0yETeY2QfjgqMSYmRqalpSkdBunQkze+gBP7T+LjzDcREMDPQ0SekG/O90jX85E9xzFtwLOo1ygcb2yai7D6rkf6EilJCLFVShnjvJ01bEQeFHf/IMwZtwhp3/+NPsN6Kh0OkS54oj7sTFYunhr6EmrVroU5q59mskaawyYAIg/qP6oP6jeph1VLvlc6FCIqlZ9nwtPD5sCYm4+X1zyNFu2aKR0SUZUxYSPyoMCgQNzy4I34c/U2HN59TOlwiPxeoekCnh0+F0f3HMfzyU8guldbpUMiqhZFEzYhREMhxDohREbp1wYujmklhPhZCLFbCJEuhJjqsO95IcRxIcT20lucb18BUXnxjw5DcGgQPp+brHQoRH7NXFSM2be+ht1/7MOsT6ei1+ArlQ6JqNqUbmGbBeAnKWU0gJ9K7zsrAfCYlLITgKsBTBZCdHbYv1BK2aP0tsb7IRNVrF6juhg+aQh+/iwVxzJOKB0OkV+ylFjw8h2LsPWHvzH9/YcQO7af0iER1YjSCdtIAB+Xfv8xgHLT/EspT0gpt5V+bwSwG0CkzyIkqoaxj49AYHAgPn3hK6VDIfI7xeZivHT7QmxYsRkPL7oXQ+8dqHRIRDWmdMLWVEp5ArAlZgCaVHSwEKI1gJ4A/nTY/IgQYocQ4n+uulSJlNCgaX2Mmnozflr+O/Zt3a90OER+w3zBjNm3vobU5D/x0MJ/Y9QUVsqQPng9YRNC/CiE2OniNrKKPycMwNcApkkpz5duXgKgHYAeAE4AeL2Cx08UQqQJIdKys7Or+WqIKu/2WfGo37gu3n38E/jjfIdEvlZouoDnRszDn6u3YeqSiRg99WalQyLyGK/PwyalHOxunxDilBCiuZTyhBCiOYDTbo4LhC1ZWy6lvFjJLaU85XDM+wC+rSCO9wC8B9gmzq3yCyGqIkPdUNz139vwxiNLkbpiM64d3VfpkKiGjEVGJKUnISMnA9ER0UjokoDw4HClwyLYpu54bsQ87Nq4F098OBlD7rle6ZCIPErRlQ6EEPMB5Egp5wkhZgFoKKV80ukYAVt9W66UcprTvub2LlUhxHQAfaWUt1/uebnSAfmKpcSCh2Nm4nyOER/sWoTQ8BClQ6JqSj2SirjlcbBKK0zFJhgCDQgQAVgzfg2X21JYzomzeHrYHBzZfQyzPp3KAQakae5WOlC6hm0egBuFEBkAbiy9DyFECyGEfcRnfwB3AbjBxfQdrwoh/hFC7AAwEMB0H8dPVKFatWth6jsTkZN1Fh8++7nS4VA1GYuMiFseB6PZCFOxCQBgKjbBaLZtzzfnKxyh/zq8+ximXvMMsvafxEvfPsVkjXRL0aWppJQ5AAa52J4FIK70+1QAws3j7/JqgEQe0PnqKzD8oSFY+eZaXDemH7pd20npkKiKktKTYJVWl/us0oqknUk1XjqJqu7vX9Ix+9b5CAwOxIJfX+CkuKRrSrewEfmFCXPHo3nbJph7ZyLO5xqVDoeqKCMn42LLmjNTsQmZuZk+jojWLP0JM4e8iIbNGyBx4xwma6R7TNiIfCA0PARPfz4dZ0/mYcED73DUqMZER0TDEOh6sXBDoAHtG7b3cUT+y2Kx4N3HP8HCie+g56CuSNzwEpq1rnBGKCJdYMJG5CMdYtrhvpfHY8OKzfjmbS4OryUJXRIQIFyfLgNEABK6Jvg4Iv+Un2fC86Pm4/8WrMLIyUPx0qqnYKjnOpEm0hsmbEQ+dOv0m9H35l54Z8ZH2Jm6W+lwqJLCg8OxZvwahAeFX2xpMwQaEB5k2x4WFKZwhPqXuf0gHo6ZiS1rt+ORNybgkTcmoFbtWkqHReQzik7roRRO60FKys8z4ZG+T6HgfAHe2vIKGreMUDokr9PL/GX55nwk7UxCZm4m2jdsj4SuCUzWfGDthz/jjcnvo25EOJ77cgY69+ugdEhUU1ICKSlAfDwgxOW3+xF303owYfM2/lOSC4d3HcWjVz+NVh0j8fovs1EnNFjpkLyG85dRdRUVFuGtKR/iuw9+Qo8buuLpz6ahQZN6SodFnrBiBTB6NDB1KrBwoe06KCUwfTqQmAgkJwOjRikdpSLUOg+b/qWk2P4pp0+3/TMCl/4pR4+27Se/86/OrTDr0ynI3HYAL4x9HcXmYqVD8grOX0bVdfCfw3ik71P47oOfMO6pUZj3/bNM1vQkPt6WrCUmXro+2pO1qVNt+6kMJmzexn9KcuOaEVdh6pKJ2PLdX3j1njdhsViUDsnjKjN/GZEjq9WK5EWrMbnPUziXfR4vf/cM7ptzB2rVYr2arghha1mzXx8DAi5dF+0tblSGohPn+gX7PyVg+2dMTLR9z39KAhD3wGAYz5qwdNanCKtvwJS3H4BQ8f9EVWvRtDJ/mV5q7LTuTFYuXrvvbWz94W9cPbw3Hlv6EOo3Zquabtmvj/brIsDrYgWYsPkC/ympAglPjoQx14ikV1eiVu1amLz4PlUmba5q0WZ8P6PCWjT7/GWukja1zF9WnddFniWlxM9fbMCbjyyF+UIxprz9AG558EZVvg8ui3XLlWfvcXI0fTqvj26wS9QX3P1T+uGAD3JtwtzxGDNjOFa+tRZvTF4Kq9V1N6JSqluLpvb5y1hjp7wzWbmYfet8zB2fiMgrWuCdv+Zj+KQh2kzWANYtV5ZzeZDVWr58iMpgwuZt/KekShBCYOL8u3DbEyOx6p0f8Pr9S2ApUU9NW3Vr0dQ+fxlr7JQjpcTa/63H/V2mY8va7bh/3p1Y9PuLaHlFC6VDqxmt1i1LaRu56XxNcre9plJSytesOda0MbEth12i3ubunxKwbY+N9duhy1SWEAL3zxuPOqHB+GT2lzh76hye/WI6QsNDlA6tRrVoA6IGIOuxLFXOX6aVGju9Obr3OBZNeg87ft2Fbtd1woz3Jmk/UbPTat2yvWXQV9NsxMfbfqZjF7H9dxcbq97EVkFM2LyN/5RUBUII3PXfsYho0QCJD7+P6dc+h5e+fUrxyXVrWosWFhSGCb0meCu8atNCjZ2eXCgowhfzVuDLV1ciODQYU5dMRNwDgxAQULnOHs0MDtFi3bJjyyBgi9ebLYNCuE4A3W0nTpxLpFZpP/yNF8e+jpDwOnhp1VNo37ONYrEYi4yIXBAJo9lYbl94UDiyHstSRYtZVen1damNlBIbV27Bkukf4dThbAwc1x+TXrsHDTf9UunifE1NwOzYMmWn9hY2QLtx6wwnziXSmJgh3bFow0sIqBWA6dc+h/WfpyoWi9pr0apLr69LTQ6lH8WsoS/h+dHzERJWB6+tfx5PL59mS9YqWZyvqcEhWq5bduzOtWOyphrsEiVSsTZdo/Dmn3PxwtjXMXd8Inb8ko6HFv0bwSG+X8pKzbVoNaHX16W0s6fPYdnsr7D6vXUIDQ/Bw4vuxfCHhqB2YOllpwpdcJUZHKKaLnct1y1zmg1VY8JGpHINmzXAa+ufx4fPfoEv56/E7j8z8GzSdLTqEOnzWNRai1ZTen1dSig0XUDywtVIejUFRYVm3PLgjbhndgLqRjjVmlWhOF9Tg0O0Wrfs3DLomEADTNpUgDVsRBry55ptePWeN2G+YMbkxPtw070DtTtfFelKsbkYaz9Yj09f+hq5J85iwOi+uG/OuMt/sJDStiyRndVaLjFYum0ppq2d5nZwSOLQRCbcNcXF2FXDXQ0bEzYijck+loNX73kD239OxzUjr8KUtx9ARPMGSodFfqqkuAQ/LvsNy+d8jZMHT6PbtZ0wYe54dLmmw+UfXMkidw4O8QGu0KAaHHRApBONW0bglXX/wcT5dyPt++24v8t0rP3wZ/jjhy9STklxCdb+bz3u7TgVr9+/BOENw/DSt0/h9V9mVz1Zu0xxPgeH+IB9Og3npMzddvI5trARadixfVlY8MA7+Of33eg5qBsefXOCIrVt5D/MF8xY98mv+OKVFJw8eBrRvdvi7v/ehr4396pa93w1uuDyzfkcHEK6xy5RB0zYSE+sVitWv7sOHzz9GYoKijD28REY99QohIQpv0IC6cf5XCO+fWcdUt5Yg7OnzqHDVe1w53Njq56o2bELjsglJmwOmLCRHp09lYf3nlyGH5f9hobNG+C+OeNw492xlZ5FnsiVEwdPIXnRaqz933pcMBXhqqE9MGbGcPQc1I0DXoi8gAmbAyZspGfpG/finRkfYc/mTLTv2QYT5o5H7xuv5MWVKk1Kie0/78SqJd9jw4rNCKgVgIF3DMDYGcPRptu/lA6PSNeYsDmoccLGpnxSOavVil+SNuJ/T3+GU4ez0WNgF9wzOwFdB3RSOjRSsfw8E9Z98itWvfMDju45jvCGYRg2YRBGTRmGRpHKrmdL5C+YsDmoccLG+WpIbdx8WDBfMGP1Iwvw2aoM5GWfR/fru2D8s7eix8CubHEjALbWtN1/ZmDtB+vx8+epuFBQhE5XR2P4pJtw3dirFVlVg8ifuUvYuNJBdVRhSRUin0hJcfkhImjWkxj1QSKGfvYlvjsViqT5K/Hk4BfQud8VuH3WKPS9uRdr3PxU7smz+OnT37H2w/U4svs46hiCcf3t/THi4ZsQ3aut0uERkRO2sFVXJSd8JPKJipaVcfi/NF8w4/uPfkHSKyk4dTgbLa9ojuEP3YSb/n09DPUMSr8K8rLC/EL88U0a1n+eii1rt8NqsaLT1dEYNmEQYm+7BqHhHFlMpDR2iTrw2KCDSiypQuQzVfgQUVJcgt+++gMpb36H3ZsyUMcQjEHjr8PIyTexqFxnzEXFSFu7HT9/kYpNq7biQkERGreMwKDx1+LGe65HVEfO20capdN6ciZsDtjCRrpVjQ8R+7bux6q3v8f6z1NhvlCMrgM64qZ/D8S1Y66GoW6olwMmb7hQUIStP/yNDSmbsXHlFpjOFaBeo3BcN6YfBo4bgC79O7ArnLRPp/XkqkzYhBANASQBaA3gEIDbpJRnXRx3CIARgAVAif2FVPbxzjwySrQS3U9EPlXDDxHnc434/sNfsOb9dTi27wSC6gSi34gYDBp/HWJu6o7AoEAvBk81dfb0Ofy5ehs2rtyMbet2oKjQjPAGBlw9IgYDE/qj56BuqB3IsmXSEZ1ei9WasL0KIFdKOU8IMQtAAynlTBfHHQIQI6U8U53HO+MoUdIdD564pJTYszkTP336G35J2oBzZ4yoGxGOa0bEYMDovug5+EoEBTN5U5rFYsGePzOx5bu/sHntX8jYegAA0LhVBPqP7IN+I6/Cldd1YpJGvufLrkod9napNWHbC+B6KeUJIURzAL9IKcutGlxBwlapxzvjPGw6RN6NnQAAFJBJREFU5O9/Ey99iCgpLsHWdTvw8+ep+GNVGgrOFyI0PAR94npiwKi+6D2kO8Lqc7CCL0gpcTzzJP7+eSf+Wv8Ptq3bAeNZEwICBDpefQX6DO2Jvjf3QrserTllCynL140aOqsnV2vClielrO9w/6yUsoGL4w4COAtAAnhXSvleVR5fum8igIkAEBUV1fvw4cOefTGkLH9v9fRBwlpsLsb29TuRmvwnNq7cgrzs8wgIEOjQpz16Db4SvQZfiU5XR7Pr1EOsViuO7D6O9A17sOO3Xfj7l3TkZNkqPiJaNEDvId3RZ2hP9BzcDXUbhiscLZEDX3ZVsoXNo0/8I4BmLnY9A+DjSiZsLaSUWUKIJgDWAXhUSvlbVRI2R1yaSod0WsugVhaLBbs27sPWH/7G1h93YN+WTFitEiFhddD12k7o2r8jug7oiA5Xtav8xKt+3kp6PteIfWkHsGvjXuzatA97/syA6VwBAKBhs/roPrALusd2wZWxndHyihZsRSN180UipdPzvlpb2KrcpSmEeB5AvpTyNcW6REmddPhJSyuMZ/Ox/ed0bFv3N/75fTcO7zoGAKgdWAvRvduiyzUdcUVMO0T3aoMW7Zu5HqHoJ62kUkrkZZ/H/u2HkLH1ADK27UfGtoM4efA0AEAIgdZdW6Fzvw7o3O8KdO53BSKjmzNBI+3xdlelTs8Zak3Y5gPIcRg00FBK+aTTMQYAAVJKY+n36wC8IKVcW5nHu8KETcd0VsugVedzjEjfuBfpG/Zg54Y92Jd2AMVFxQCAOoZgtO3eGm27RaFNt3+hVccWiOrUEg2b1oOYMUM3n5YtFguyj+YgK/Mkjuw+jsO7juLw7mM4nH4M53OMF49r3rYponu3RXSvtriid1t06NOe06mQ9nnyA7S7VnarFXjqKWDu3LLnfY23yqs1YYsA8CWAKABHAIyVUuYKIVoAWCqljBNCtAWwovQhtQF8JqWcU9HjL/e8TNhUxlNdYVU9Qfh5F5wvlRSX4FD6UWRuO4j92w8hc/tBHPznyMUuPwAIrRuCqI6RaHHuOJru2YZmKEBTmND07jFo8s4CBHliTUsP/s1LikuQk3UW2cdykH00B2eO5eDU4WxkHTiFE/tP4uTB0ygptlw8PryBAVGdW6J151aI6twSbbpFoX3PNghvEFbz10WkJp7uqtRpS5o7qkzYlMKETWU88WaszgnCz04CaiOlxJnjuTi65ziO7DmOo3uO4+jeLJw4cAqnD5yEVZTtNjXUC0XDZvXRoFl9NGhaDw2a1EdYAwPC6htgqG+AoV4owuqHIjg0GEF1AhFUJ6j0ayBq1a5l61JcvRq4527gwUmQL76IYnMJii8Uwzz7RRQvWw7zvPko6NkHBecLUHC+EAXnC2E6V4DzOUbkZZ9D3ulzyMs+j7zT53Eu+zycz5+h4SFo0b4Zmrdrish2zdC8XTO0aNcUUZ0i0aBpfXZrkn/w9LlVp7Vq7jBhc8CETWU88WaszgnCz04CmlD6N7EkLkYO6uAkDDg1ZBROX3cT8k6dQ+6pPJw9mYezp/Jw9tS5Mi103hRW34B6jeuifpO6qN+kHuo3rocGTeuhcatGaNyy4cWvXI+VCN7pvfCjGmUmbA6YsKlQTd+M1T1B+NFJQPWqkUBbLBYUGi/AdK4A+Xkm5OeZYC40w3yhuPRmhrnQDEuJtfQpJAAJJK+A+PUXBMJquw0bgsD7JyAoJAih4XVgqBeK0LqhMNQLRUhYHdSqXUuBXwgRleEnNcpM2BwwYVMppd6MfnISUD1fdlHzb65vrE/VHz/6cO0uYePqv6QO9jejo+nTbdvV9LxS2hIL5/3utlPlxcfbkjLHE7AQtvvJybb9nqDU/xr5TkqKLfl3/Lva/+6jR9v2k3d44xzp3Pputdq+Jib613tXSul3t969e0tSEatVyqlTpQRsX13dV8vzJieX3+/4uORk78RKnqHU/xr5Fv/OyvHGOdLPzrsA0qSL3EXx5EmJGxM2lVHqzVid5+WFQNv87MTv1xz/rvYb36Pe541zpNVqe286P9bddo1zl7Cxho2UJxWqN6nu80r/qaXQHaX+10gZkrWKiuA5skY46MABEzaqMV4IiNSNSYOyeI6sNg46IPIU+4XAkT8VvhKpnWOy5s9F6krhOdIrmLARVQUvBETql5JSfv6+hQsvvVc5StR7eI70mtpKB0CkKe4uBIBte2wsl7MiUpp9ihjHmkT7ezU21nNTxFB5PEd6DWvYiKqCRetERO7xHFljHHTggAkbERERqREHHRCRfkiuOEFE/oUJGxFpD5ceIiI/w4SNSGvYumSrg3EeeeY4Mo1F5USkM0zYiLSGrUvlp2kICCg/Mo2ISEeYsBFpDVuXbBynC7BjskZEOsWEjUhr2Lpkw9nUiciPMGEj0iJ/b13ibOpE5GeYsBFpkb+3LnHpISLyM0zYiLSGrUuXlh5ybFW0J232JYmIiHSEa4kSaQ3X6rO9Zlev0d12IiKNY8JGpDVc2JqIyO8wYSPSGrYuERH5HdawkW9xln4iIqIqY8JGvsVZ+omIiKqMXaLkW46z9AO2uit/nKWfiIioCtjCRr7FWfqJiLSDZSyqwYSNfM/fZ+knItIKlrGohqIJmxCioRBinRAio/RrAxfHdBBCbHe4nRdCTCvd97wQ4rjDvjjfvwqqMn+fpZ+ISCscy1js52mWsShC6Ra2WQB+klJGA/ip9H4ZUsq9UsoeUsoeAHoDKACwwuGQhfb9Uso1Pomaqo+z9BMRaQfLWFRD6YRtJICPS7//GMDlUvVBAPZLKQ97NSryHq4BSUSkLSxjUQWlE7amUsoTAFD6tclljr8dwOdO2x4RQuwQQvzPVZcqqQzXgCQi0hY9lLHoYPCE1xM2IcSPQoidLm4jq/hzggCMAPCVw+YlANoB6AHgBIDXK3j8RCFEmhAiLTs7uxqvhDzCPhu/8yczd9t9QQdvZCIir9BLGYseBk9IKRW7AdgLoHnp980B7K3g2JEAfqhgf2sAOyvzvL1795ZEFyUnSwlIOXWqlFarbZvVarsP2PYTEfkjvZwfHWO2vxbn+yoBIE26yF2Unjj3GwD3AJhX+nVlBceOg1N3qBCiuSztUgUwCsBObwRJOsfJfImIXLOXscTHly9jiY3VzvnRsQ4vMfHS+V5DgyeEVLA5UwgRAeBLAFEAjgAYK6XMFUK0ALBUShlXelwogKMA2kopzzk8fhls3aESwCEADzokcG7FxMTItLQ0T78c0jLHZn87Db2RiYh0RUpbN6VjoljR9qr83ACHajCrVXXneCHEVilljPN2RQcdSClzpJSDpJTRpV9zS7dn2ZO10vsFUsoIx2StdPtdUspuUsorpZQjKpOsEbnEUVBEROrhjZozjQ+eUHqUKJE6aPyNTESkK56esFcHgyeUrmEjUp7zG9mxhg1gSxsRka95uubM3Ryg9p8fG2ubqUDFFK1hUwpr2KiMFStsTeyOb2THJC45WfVvZCIiXfr/9u4+1JK6juP457PW/mGKuoq5mvkQJhkV6iJqUYZtuQu6u1GgRBkJ4h+CQgUbQkkWPUDJChaYCRaSBF1LdMXMLCFRuoqrK5sPK4qbm4ubqfWHPdxvf8zv5HTveZhz7j1n5jfzfsFwz5mHc+f3nd/M+Z6Z3/xmpdqcTatN3BQ0sg0b0Ah05gsAzbOSTVWa2AfomEjYgBbsyADQKi1oc7bSaMMGAACapQVtzlYaZ9gAAJgGHns3OZqqLEHCBgDANLTh+ZV1oanKEiRsAIDJcRZpsJXuSwydRsIGAJgcZ5EG613C6yVtq1YtbZeF5mnojxASNgCz1dCDISbEWaTheOxdfhr6I4SEDcBsNfRgiAlxFmk4HnuXn6b+CImIzg2nn356AKjJwkLEFVdESMXffu+Rn4WFYhv2BrYjdT1n5W3VG2a0zSTNR5/chTNsAGarjjMyXIadLs4i9TeoL7Fe3edscnM18FI2CRuA2Zv1wZDLsNNDj/SD0ZdYvhr4I4SEDcDszfpg2NQ2KbMyzTOMnEUabDl9iXFWuD5N/RHS7zpp2wfasAE1qqtdT41tUmo3N7e0vOV4zM1N/tkLC8Xyi+M4aDyqmeY2w3A1x14D2rDVnjzVMZCwATWq82DY1YbxNH7PD9usPjX/CBmUsLmY1i3r1q2L+fn5ulcD6KaI4jLZ5s3/f0lo0PiV/L+9yxw9Xep6ouvlzxHbrJNsPxwR65aMJ2ED0HqxqE3Ktdcufd+FL8CI4q7cnoWFbpQ7Z2yzzhmUsHHTAUYLGr8iczSMb+RdbxiBbYYSEjaMRpcIyF3Xu1dYfIaxKXe9YTC2GRbr17Ct7QM3HYyJxq9A3rjjMD9ss84SNx28iTZsE6DxK5Cvum70wOTYZp3FTQclJGwTovErAABTxU0HWB4avwIAUBsSNoxG41cAAGpFwobR2tIlAt2TAAAyRcKG0drSJQLdkwAAMvWWulcAGbClLVuqj2+qzZvfPCsoLe3tPpfEEwDQObWeYbP9adtP2F6wveSOiNJ859l+0vYztreWxq+xfY/tp9Pfw2az5sjS4ku5q1Z179FEAIAs1X1JdKekT0q6f9AMtg+QdL2kDZJOkXSR7VPS5K2S7o2IkyTdm94Dg/WStjKSNQBAw9WasEXEroh4csRsZ0h6JiKejYh/SrpV0qY0bZOkm9PrmyVxTQvD0T0JACBDdZ9hq+IYSS+U3u9J4yTp7RGxV5LS3yNnvG7ICd2TAAAyNfWbDmz/RtJRfSZdFRG/qvIRfcaN/c1q+1JJl6a3b9jeOe5ntNARkl6ueyVm5XDp0OOld70s7Xt+27YXejcfrJHefcK2bQc/t23b7v3S3+pdy1p1qj4MQRwKxIEY9BCHwqzicFy/kVNP2CLiY8v8iD2Sji29f4ekF9Prl2yvjYi9ttdK2jdkPW6QdIMk2Z7v99iHriEOBdvz+4kD9SEhDgXiQAx6iEOh7jjkcEn0j5JOsn2C7dWSLpR0e5p2u6SL0+uLJVU5YwcAAJCVurv12GJ7j6SzJN1p++40/mjb2yUpIv4t6XJJd0vaJennEfFE+ohvS1pv+2lJ69N7AACAVqm149yIuE3SbX3GvyhpY+n9dknb+8y3X9K5E/zrGyZYpo2IQ4E4FIhDgTgUiAMx6CEOhVrj4ODOOAAAgEbLoQ0bAABAp7UyYeORV4Uq5bB9su1HS8Nrtq9M0662/efStI1L/0vzVd2etp+z/Xgq6/y4yzddxfpwrO37bO9K+9AVpWlZ14dB+3tpum1fl6Y/Zvu0qsvmpEIcPpPK/5jtB2x/oDSt7z6SowpxOMf2q6X6/tWqy+akQhy+XIrBTtv/sb0mTWtFfbB9k+19HtDdV2OODRHRukHSeySdLOl3ktYNmOcASbslnShptaQdkk5J074raWt6vVXSd+ou04RxGKscKSZ/kXRcen+1pC/VXY5ZxUHSc5KOWG4cmzpUKYektZJOS68PlvRUab/Itj4M299L82yUdJeKvh/PlPRQ1WVzGSrG4WxJh6XXG3pxSO/77iO5DRXjcI6kOyZZNpdh3LJIOl/Sb1tYHz4s6TRJOwdMb8SxoZVn2IJHXvWMW45zJe2OiOenulazt9zt2Zn6EBF7I+KR9Pp1FXdmH7N4vgwN2997Nkn6SRQelHSoi/4dqyybi5FliYgHIuKV9PZBFX1fts1ytmmn6sMiF0n62UzWbIYi4n5Jfx0ySyOODa1M2CrqwiOvxi3HhVq6M16eTgHflOulQFWPQ0j6te2HXTwZY9zlm26sctg+XtKpkh4qjc61Pgzb30fNU2XZXIxblktUnFnoGbSP5KZqHM6yvcP2XbbfO+ayOahcFtsHSjpP0i9Ko9tSH0ZpxLGh1m49lsMNeeRV3YbFYczPWS3pAklfKY3+oaRrVMTlGknfk/SFydZ0ulYoDh+MiBdtHynpHtt/Sr+8srGC9eEgFQfmKyPitTQ6m/rQR5X9fdA8rThWJJXLYvujKhK2D5VGZ7+PJFXi8IiK5iF/T+01fynppIrL5mKcspwv6Q8RUT4T1Zb6MEojjg3ZJmzRkEde1W1YHGyPU44Nkh6JiJdKn/2/17Z/JOmOlVjnaViJOETR/58iYp/t21Sc7r5fHasPtt+qIlm7JSLmSp+dTX3oY9j+Pmqe1RWWzUWVOMj2+yXdKGlDFP1dShq6j+RmZBxKP1QUEdtt/8D2EVWWzcg4ZVlyBaZF9WGURhwbunxJtAuPvBqnHEvaJqQv9Z4tkvreQZOBkXGw/TbbB/deS/q43ixvZ+qDbUv6saRdEfH9RdNyrg/D9vee2yV9Lt0RdqakV9Ol4yrL5mJkWWy/U9KcpM9GxFOl8cP2kdxUicNRaX+Q7TNUfF/ur7JsRiqVxfYhkj6i0jGjZfVhlGYcG6Z1N0Odg4ovkz2S3pD0kqS70/ijJW0vzbdRxV1wu1VcSu2NP1zSvZKeTn/X1F2mCePQtxx94nCgigPRIYuW/6mkxyU9lirh2rrLNK04qLjLZ0canuhqfVBx+SvSNn80DRvbUB/67e+SLpN0WXptSden6Y+rdIf5oGNFjkOFONwo6ZXS9p9P4wfuIzkOFeJweSrnDhU3X5zdxfqQ3n9e0q2LlmtNfVBxsmKvpH+pyB0uaeKxgScdAAAANFyXL4kCAABkgYQNAACg4UjYAAAAGo6EDQAAoOFI2AAAABqOhA0AAKDhSNgAAAAajoQNAMZg+z7b69Prb9i+ru51AtB+2T5LFABq8jVJX08PvD5V0gU1rw+ADuBJBwAwJtu/l3SQpHMi4nXbJ0q6SsXj3T5V79oBaCMuiQLAGGy/T9JaSW9ExOuSFBHPRsQl9a4ZgDYjYQOAimyvlXSLpE2S/mH7EzWvEoCOIGEDgApsHyhpTtIXI2KXpGskXV3rSgHoDNqwAcAy2T5c0jclrZd0Y0R8q+ZVAtAyJGwAAAANxyVRAACAhiNhAwAAaDgSNgAAgIYjYQMAAGg4EjYAAICGI2EDAABoOBI2AACAhiNhAwAAaDgSNgAAgIb7L2CePAcYVWSOAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"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": 16,
"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": 17,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-14-d7e55b0bd73a>: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": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"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": 18,
"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": 19,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plot_data(X1, y, xlabel='x', ylabel='y')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"scrolled": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x246ed4ba250>]"
]
},
"execution_count": 20,
"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": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"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": 21,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x2471ceee370>]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"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": 22,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x246ed4eb3a0>]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 691.2x388.8 with 1 Axes>"
]
},
"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": [
"<img style=\"margin:auto\" width=\"90%\" src=\"fit.png\"/>"
]
},
{
"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": [
"<img style=\"margin:auto\" width=\"60%\" src=\"bias2.png\"/>"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"<img style=\"margin:auto\" width=\"60%\" src=\"curves.jpg\"/>"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 5.3. Regularyzacja"
]
},
{
"cell_type": "code",
"execution_count": 35,
"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": 36,
"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": 37,
"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": 38,
"metadata": {
"scrolled": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-11-7e1d5e247279>:5: RuntimeWarning: overflow encountered in exp\n",
" y = 1.0/(1.0 + np.exp(-x))\n",
"<ipython-input-37-f0220c89a5e3>: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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tzp3/Lrj98PkyU5z3XRobXXGoE22bC4rL3eS1W3bnIS8tRWeflrJq4iIiEgK9ekOrLW2Bqdn4c7ztwPzYqabgKFxyn2xL/sXGfTOOQd+9jO4/noniQrFjN1WXAxjx8Jzz6XvWcyiIsjPT26c1DFjUh9PuuhZVxEREZG00Ei9Irnuqqtg5Uq44grnudihQ2H2bKd566pVMHx4+mIxBi6/PPGYs0VFcN116YlJRERERAYMJbAiA8HUqXD33U5z1j17YNkyZ9icRIlkKlx/fc/Nmr1eqKiAL3whfTGJiIiIyICgBFZE+teYMfDyyzBsmNOMOVZJCVRVwauvdl0mIiIiIpJAdgy4JCIDy5FHwscfw+OPw/33Q02Nk9hefbXz3K5PPz0iIiIi0nu6ihSR1MjPh0svdV4iIiIiIv1ATYhFREREREQkJyiBFRERERERkZygBFZERERERERyghJYERERERERyQlKYEVERERERCQnKIEVERERERGRnKAEVkRERERERHKCElgRERERERHJCUpgRUREREREJCcogRUREREREZGcoARWREREREREcoISWBEREREREckJSmBFREREREQkJyiBFRERERERkZygBFZERERERERyghJYERERERERyQlKYEVERERERCQnKIEVERERERGRnKAEVkRERERERHKCElgRERERERHJCUpgRUREREREJCcogRUREREREZGcoARWREREREREcoISWBEREREREckJSmBFREREREQkJyiBFRERERERkZygBFZERERERERyghJYERERERERyQlKYEVERERERCQnKIEVERERERGRnKAEVkRERERERHKCElgRERERERHJCUpgRUREREREJCcogRUREREREZGcoARWREREREREckKfElhjzOeMMWuMMVFjzOweyp1ljNlgjNlojFkYM7/CGPOcMeZ99728L/GIiIhIYt2dl2OWX2KMecd9LTXGHJmJOEVERDrr6x3Yd4HPAq90V8AY4wXuBs4GZgAXGWNmuIsXAi9Yaw8BXnCnRUREJEUSnJfbbAFOsdbOBG4G7ktvlCIiIvH1KYG11q6z1m5IUOxYYKO1drO1Ngg8Csx3l80HHnQ/Pwic25d4REREJKGezssAWGuXWmv3uZNvAAF1SDIAAAkDSURBVGPTHKOIiEhc6XgGdgzwccz0VncewEhrbTWA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\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"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": 39,
"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": 40,
"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": 41,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "16432480b157427989a9ae11e70ecf69",
"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": [
"<function __main__.slide_regularization_example_2(lamb)>"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"widgets.interact_manual(slide_regularization_example_2, lamb=slider_lambda)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"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": 43,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1152x576 with 1 Axes>"
]
},
"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": 44,
"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",
"<img width=\"100%\" src=\"learning-curves.png\"/>\n",
"\n",
"Źródło: http://www.ritchieng.com/machinelearning-learning-curve"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1152x576 with 1 Axes>"
]
},
"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
}