{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Uczenie maszynowe UMZ 2017/2018\n", "# 4. Algorytm KNN, uczenie nienadzorowane\n", "### Część 2" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 4.2. Uczenie nienadzorowane – Algorytm $k$ średnich" ] }, { "cell_type": "code", "execution_count": 2, "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", "import random\n", "import seaborn\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wczytanie danych (gatunki kosaćców)\n", "\n", "data_iris = pandas.read_csv('iris.csv', header=0, usecols=['łod.dł.', 'łod.sz.', 'pł.dł.', 'pł.sz.'])\n", "data_iris.columns=['x1', 'x2', 'x3', 'x4']\n", "\n", "X = data_iris.values\n", "Xs = data_iris.values[:, 2:4]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wykres danych\n", "def plot_unlabeled_data(X, col1=0, col2=1, x1label=r'$x_1$', x2label=r'$x_2$'): \n", " fig = plt.figure(figsize=(16*.7, 9*.7))\n", " ax = fig.add_subplot(111)\n", " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", " X1 = X[:, col1].tolist()\n", " X2 = X[:, col2].tolist()\n", " ax.scatter(X1, X2, c='k', marker='o', s=50, label='Dane')\n", " ax.set_xlabel(x1label)\n", " ax.set_ylabel(x2label)\n", " ax.margins(.05, .05)\n", " return fig" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przygotowanie interaktywnego wykresu\n", "\n", "dropdown_arg1 = widgets.Dropdown(options=[0, 1, 2, 3], value=2, description='arg1')\n", "dropdown_arg2 = widgets.Dropdown(options=[0, 1, 2, 3], value=3, description='arg2')\n", "\n", "def interactive_unlabeled_data(arg1, arg2):\n", " fig = plot_unlabeled_data(\n", " X, col1=arg1, col2=arg2, x1label='$x_{}$'.format(arg1), x2label='$x_{}$'.format(arg2))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4196201adbb34356bf7a5f511a8206f9", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type interactive.

\n", "

\n", " If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another notebook frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "interactive(children=(Dropdown(description=u'arg1', index=2, options=(0, 1, 2, 3), value=2), Dropdown(description=u'arg2', index=3, options=(0, 1, 2, 3), value=3), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "widgets.interact(interactive_unlabeled_data, arg1=dropdown_arg1, arg2=dropdown_arg2)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nwjH8+o0P8X6nvAgnHMsdTQlH5QVBB45HMr93dkdxpCeK5U+2oyscw02PbcOUO1/ETY9tw7FIHMmk\nsOlbPDVQc5Tb9cie79HemCW31W4/Xac8e3skpmHF3KmZ2ZTWtt3o6o2hZU6DoU09RepYJG6wvd5Y\nwmKPXeE4AOQ9u8IzMUypY1e02RfTcLTXaP9He2OIxLXMtl+/8SG6wrFM2gqQCrTMvfd1LP7lWzjS\nE8XUu/6Amx7bhiO9Mfzzb3ek2umJZRb3svMP9h2GKW+K9lEuhNgq2fabYrXvFLJpTF1TXF640/90\noqJAuny4z6MYfl/z8l6p+oo+jTrQKVbGHeT7fHPtZ97eHYlL1Xyuv2CyZQrdq5A01aVlo1l9hW2O\nKS/sCt41Idfe13/O1hbPTlsxj+u51opgGKZycUV1CBHdBOAmAJg4ceKwnttuGlNf5hhITUueNaYm\n7+lEv1fF6s3y5cP33n05wlENdz37Htp2HMC/XRPKmSLDSyW7j3ztOd+lsO32k6VXjR7hl+6bPYWe\nSUlRKG/1Fba5ysXJ8XmosEuzAsnH3BGBk0X3umKWLG1FH9ezj5WtFcE4RznaM+MeXLHIjxDiQSFE\nsxCiedSoUcN6brtpTF3fu23HAbS27UZvNJH3dGI4pmWWDz/zBy9g7r2vo7M7mtECByFTkW+nU9uf\npjhTuuRrz/k+X7v9ZDrhunqKbN/sgkxVVaTt2h3PNle5ODk+DyWyVBE77f3uSDzze/aYnZ22IiCk\nSivmtSIYZylXe2bcgSs+yp1ENo2ZrSmeSw2lkDbtlqvPtbQ9a4qXN/k+31z7mbePDHqxVqL2YKfm\nIzveqr7CNsdUBnba//rPdtridv4oWyuCYZjKhYTof7GbIe0A0UYAs5FSbOkE8K9CiIft9m9ubhZb\nt1rS14eUXOor+lS/ecn7Qts0p71k/70vriGZhHRp+3zVORgpjt+o/uy56OorXhVCCIt6hJ39yo4H\nwDZXmjj+EJwYn4ebfNVX+rRkbn9MrxXh97If2eD4zcjHnid9//mC2/3oZ18ZaJdKjuG6/kLPU4L3\nOC97djynXAixyOk+9Ic+jQkg8/9aT+ojxryAz2DatPt70Hfy7+Z9+2uHcTf5Pl+7/eTbCbVqfvZr\n1y7bHFOpqKoi9R/ztpr0O8LWH/324zrDMJUJjwQMwzAMwzBMRVMKsx6cU84wDMMwDMMwDsMf5QzD\n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\nuSfVxL0AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "seaborn.pairplot(data_iris, vars=data_iris.columns, size=1.5, aspect=1.75)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Odległość euklidesowa\n", "def euclidean_distance(x1, x2):\n", " return np.linalg.norm(x1 - x2)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Algorytm k średnich\n", "def k_means(X, k, distance=euclidean_distance):\n", " history = []\n", " Y = []\n", " \n", " # Wylosuj centroid dla każdej klasy\n", " centroids = [[random.uniform(X.min(axis=0)[f], X.max(axis=0)[f])\n", " for f in range(X.shape[1])]\n", " for c in range(k)]\n", "\n", " # Powtarzaj, dopóki klasy się zmieniają\n", " while True:\n", " distances = [[distance(centroids[c], x) for c in range(k)] for x in X]\n", " Y_new = [d.index(min(d)) for d in distances]\n", " if Y_new == Y:\n", " break\n", " Y = Y_new\n", " XY = np.asarray(np.concatenate((X, np.matrix(Y).T), axis=1))\n", " Xc = [XY[XY[:, 2] == c][:, :-1] for c in range(k)]\n", " centroids = [[Xc[c].mean(axis=0)[f] for f in range(X.shape[1])]\n", " for c in range(k)]\n", " history.append((centroids, Y))\n", "\n", " result = history[-1][1]\n", " return result, history" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wykres danych - klastrowanie\n", "def plot_clusters(X, Y, k, centroids=None):\n", " color = ['r', 'g', 'b', 'c', 'm', 'y', 'k']\n", " fig = plt.figure(figsize=(16*.7, 9*.7))\n", " ax = fig.add_subplot(111)\n", " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", "\n", " X1 = X[:, 0].tolist()\n", " X2 = X[:, 1].tolist()\n", " X1 = [[x for x, y in zip(X1, Y) if y == c] for c in range(k)]\n", " X2 = [[x for x, y in zip(X2, Y) if y == c] for c in range(k)]\n", "\n", " for c in range(k):\n", " ax.scatter(X1[c], X2[c], c=color[c], marker='o', s=25, label='Dane')\n", " if centroids:\n", " ax.scatter([centroids[c][0]], [centroids[c][1]], c=color[c], marker='+', s=500, label='Centroid')\n", "\n", " ax.set_xlabel(r'$x_1$')\n", " ax.set_ylabel(r'$x_2$')\n", " ax.margins(.05, .05)\n", " return fig" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Ys, history = k_means(Xs, 2)\n", "fig = plot_clusters(Xs, Ys, 2, centroids=history[-1][0])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przygotowanie interaktywnego wykresu\n", "\n", "slider_k = widgets.IntSlider(min=1, max=7, step=1, value=2, description=r'$k$', width=300)\n", "\n", "def interactive_kmeans_k(steps, history, k):\n", " if steps >= len(history) or steps == 10:\n", " steps = len(history) - 1\n", " fig = plot_clusters(Xs, history[steps][1], k, centroids=history[steps][0])\n", " \n", "def interactive_kmeans(k):\n", " slider_steps = widgets.IntSlider(min=1, max=10, step=1, value=1, description=r'steps', width=300)\n", " _, history = k_means(Xs, k)\n", " widgets.interact(interactive_kmeans_k, steps=slider_steps,\n", " history=widgets.fixed(history), k=widgets.fixed(k))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "41f26926f3cc4de6acf9239e228e775a", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type interactive.

\n", "

\n", " If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another notebook frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "interactive(children=(IntSlider(value=2, description=u'$k$', max=7, min=1), Button(description=u'Run Interact', style=ButtonStyle()), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "widgets.interact_manual(interactive_kmeans, k=slider_k)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Algorytm $k$ średnich – dane wejściowe\n", "\n", "* $k$ – liczba klastrów\n", "* zbiór uczący $X = \\{ x^{(1)}, x^{(2)}, \\ldots, x^{(m)} \\}$, $x^{(i)} \\in \\mathbb{R}^n$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Na wejściu nie ma zbioru $Y$, ponieważ jest to uczenie nienadzorowane!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Algorytm $k$ średnich – pseudokod\n", "\n", "1. Zainicjalizuj losowo $k$ centroidów (środków ciężkości klastrów): $\\mu_1, \\ldots, \\mu_k$.\n", "1. Powtarzaj dopóki przyporządkowania klastrów się zmieniają:\n", " 1. Dla $i = 1$ do $m$:\n", " za $y^{(i)}$ przyjmij klasę najbliższego centroidu.\n", " 1. Dla $c = 1$ do $k$:\n", " za $\\mu_c$ przyjmij średnią wszystkich punktów $x^{(i)}$ takich, że $y^{(i)} = c$." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Algorytm k średnich\n", "def k_means(X, k, distance=euclidean_distance):\n", " Y = []\n", " centroids = [[random.uniform(X.min(axis=0)[f],X.max(axis=0)[f])\n", " for f in range(X.shape[1])]\n", " for c in range(k)] # Wylosuj centroidy\n", " while True:\n", " distances = [[distance(centroids[c], x) for c in range(k)]\n", " for x in X] # Oblicz odległości\n", " Y_new = [d.index(min(d)) for d in distances]\n", " if Y_new == Y:\n", " break # Jeśli nic się nie zmienia, przerwij\n", " Y = Y_new\n", " XY = np.asarray(np.concatenate((X,np.matrix(Y).T),axis=1))\n", " Xc = [XY[XY[:, 2] == c][:, :-1] for c in range(k)]\n", " centroids = [[Xc[c].mean(axis=0)[f]\n", " for f in range(X.shape[1])]\n", " for c in range(k)] # Przesuń centroidy\n", " return Y" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Liczba klastrów jest określona z góry i wynosi $k$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Jeżeli w którymś kroku algorytmu jedna z klas nie zostanie przyporządkowana żadnemu z przykładów, pomija się ją – w ten sposób wynikiem działania algorytmu może być mniej niż $k$ klastrów." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Funkcja kosztu dla problemu klastrowania\n", "\n", "$$ J \\left( y^{(i)}, \\ldots, y^{(m)}, \\mu_{1}, \\ldots, \\mu_{k} \\right) = \\frac{1}{m} \\sum_{i=1}^{m} || x^{(i)} - \\mu_{y^{(i)}} || ^2 $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Zauważmy, że z każdym krokiem algorytmu $k$ średnich koszt się zmniejsza (lub ewentualnie pozostaje taki sam)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Wielokrotna inicjalizacja\n", "\n", "* Algorytm $k$ średnich zawsze znajdzie lokalne minimum funkcji kosztu $J$, ale nie zawsze będzie to globalne minimum." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Aby temu zaradzić, można uruchomić algorytm $k$ średnich wiele razy, za każdym razem z innym losowym położeniem centroidów (tzw. **wielokrotna losowa inicjalizacja** – _multiple random initialization_).\n", "* Za każdym razem obliczamy koszt $J$. Wybieramy ten wynik, który ma najniższy koszt." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Wybór liczby klastrów $k$\n", "\n", "* Najlepiej wybrać $k$ ręcznie w zależności od kształtu danych i celu, który chcemy osiągnąć." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 4.3. Metryki" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def powerme(x1,x2,n):\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": [], "source": [ "# Wykres danych\n", "def plot_data_for_classification(X, Y, xlabel=None, ylabel=None, Y_predicted=[], highlight=None):\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", " \n", " if Y_predicted != []:\n", " Y_predicted = Y_predicted.tolist()\n", " X1tn = [x[1] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 0 and yp[0] == 0]\n", " X1fn = [x[1] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 1 and yp[0] == 0]\n", " X1tp = [x[1] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 1 and yp[0] == 1]\n", " X1fp = [x[1] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 0 and yp[0] == 1]\n", " X2tn = [x[2] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 0 and yp[0] == 0]\n", " X2fn = [x[2] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 1 and yp[0] == 0]\n", " X2tp = [x[2] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 1 and yp[0] == 1]\n", " X2fp = [x[2] for x, y, yp in zip(X, Y, Y_predicted) if y[0] == 0 and yp[0] == 1]\n", " \n", " if Y_predicted != []:\n", " if highlight == 'tn':\n", " ax.scatter(X1tn, X2tn, c='r', marker='x', s=50, label='Dane')\n", " ax.scatter(X1fn, X2fn, c='k', marker='o', s=50, label='Dane')\n", " ax.scatter(X1tp, X2tp, c='k', marker='o', s=50, label='Dane')\n", " ax.scatter(X1fp, X2fp, c='k', marker='x', s=50, label='Dane')\n", " elif highlight == 'fn':\n", " ax.scatter(X1tn, X2tn, c='k', marker='x', s=50, label='Dane')\n", " ax.scatter(X1fn, X2fn, c='r', marker='o', s=50, label='Dane')\n", " ax.scatter(X1tp, X2tp, c='k', marker='o', s=50, label='Dane')\n", " ax.scatter(X1fp, X2fp, c='k', marker='x', s=50, label='Dane')\n", " elif highlight == 'tp':\n", " ax.scatter(X1tn, X2tn, c='k', marker='x', s=50, label='Dane')\n", " ax.scatter(X1fn, X2fn, c='k', marker='o', s=50, label='Dane')\n", " ax.scatter(X1tp, X2tp, c='g', marker='o', s=50, label='Dane')\n", " ax.scatter(X1fp, X2fp, c='k', marker='x', s=50, label='Dane')\n", " elif highlight == 'fp':\n", " ax.scatter(X1tn, X2tn, c='k', marker='x', s=50, label='Dane')\n", " ax.scatter(X1fn, X2fn, c='k', marker='o', s=50, label='Dane')\n", " ax.scatter(X1tp, X2tp, c='k', marker='o', s=50, label='Dane')\n", " ax.scatter(X1fp, X2fp, c='g', marker='x', s=50, label='Dane')\n", " else:\n", " ax.scatter(X1tn, X2tn, c='r', marker='x', s=50, label='Dane')\n", " ax.scatter(X1fn, X2fn, c='r', marker='o', s=50, label='Dane')\n", " ax.scatter(X1tp, X2tp, c='g', marker='o', s=50, label='Dane')\n", " ax.scatter(X1fp, X2fp, c='g', marker='x', s=50, label='Dane')\n", "\n", " else:\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", " if xlabel:\n", " ax.set_xlabel(xlabel)\n", " if ylabel:\n", " ax.set_ylabel(ylabel)\n", " \n", " ax.margins(.05, .05)\n", " return fig" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wczytanie danych\n", "import pandas\n", "import numpy as np\n", "\n", "alldata = pandas.read_csv('data.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", "X2 = powerme(data[:, 1], data[:, 2], n)\n", "Y2 = np.matrix(data[:, 0]).reshape(m, 1)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plot_data_for_classification(X2, Y2, xlabel=r'$x_1$', ylabel=r'$x_2$')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def safeSigmoid(x, eps=0):\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", " return safeSigmoid(X*theta, eps)\n", "\n", "def J(h,theta,X,y, lamb=0):\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", " 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", " prob = h(theta, X)\n", " return prob" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Metoda gradientu prostego dla regresji logistycznej\n", "def GD(h, fJ, fdJ, theta, X, y, alpha=0.01, eps=10**-3, maxSteps=10000):\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.37136167]\n", " [ 0.90128948]\n", " [ 0.54708112]\n", " [-5.9929264 ]\n", " [ 2.64435168]\n", " [-4.27978238]]\n" ] } ], "source": [ "# Uruchomienie metody gradientu prostego dla regresji logistycznej\n", "theta_start = np.matrix(np.zeros(X2.shape[1])).reshape(X2.shape[1],1)\n", "theta, errors = GD(h, J, dJ, theta_start, X2, Y2, \n", " alpha=0.1, eps=10**-7, maxSteps=10000)\n", "print('theta = {}'.format(theta))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wykres granicy klas\n", "def plot_decision_boundary(fig, theta, X):\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": [ { "data": { "text/plain": [ "matrix([[0],\n", " [1],\n", " [0],\n", " [0],\n", " [0],\n", " [0],\n", " [1],\n", " [1],\n", " [1],\n", " [0]])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_predicted = (classifyBi(theta, X2) > 0.5).astype(int)\n", "Y_predicted[:10]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przygotowanie interaktywnego wykresu\n", "\n", "dropdown_highlight = widgets.Dropdown(options=['all', 'tp', 'fp', 'tn', 'fn'], value='all', description='highlight')\n", "\n", "def interactive_classification(highlight):\n", " fig = plot_data_for_classification(X2, Y2, xlabel=r'$x_1$', ylabel=r'$x_2$',\n", " Y_predicted=Y_predicted, highlight=highlight)\n", " plot_decision_boundary(fig, theta, X2)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d66ed3534beb4ceb998f948bbb7f348c", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type interactive.

\n", "

\n", " If you're reading this message in Jupyter Notebook or JupyterLab, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another notebook frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "interactive(children=(Dropdown(description=u'highlight', options=('all', 'tp', 'fp', 'tn', 'fn'), value='all'), Output()), _dom_classes=('widget-interact',))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "widgets.interact(interactive_classification, highlight=dropdown_highlight)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Dokładność (_accuracy_):\n", "$$ accuracy = \\frac{tp + tn}{tp + fp + tn + fn} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Precyzja (_precision_):\n", " $$ precision = \\frac{tp}{tp + fp} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Pokrycie (_recall_):\n", " $$ recall = \\frac{tp}{tp + fn} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "_$F$-measure_:\n", "$$ F = \\frac{2 \\cdot precision \\cdot recall}{precision + recall} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "_$F_\\beta$-measure_:\n", "$$ F_\\beta = \\frac{(1 + \\beta) \\cdot precision \\cdot recall}{\\beta^2 * precision + recall} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* $F = F_1$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 4.4. Analiza głównych składowych" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Redukcja liczby wymiarów\n", "\n", "Z jakich powodów chcemy redukować liczbę wymiarów?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Chcemy pozbyć się nadmiarowych cech, np. „długość w cm” / „długość w calach”, „długość” i „szerokość” / „powierzchnia”." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Chcemy znaleźć bardziej optymalną kombinację cech." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Chcemy przyspieszyć działanie algorytmów." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Chcemy zwizualizować dane." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Błąd rzutowania\n", "\n", "**Błąd rzutowania** – błąd średniokwadratowy pomiędzy danymi oryginalnymi a danymi zrzutowanymi." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Sformułowanie problemu\n", "\n", "**Analiza głównych składowych** (_Principal Component Analysis_, PCA):\n", "\n", "Zredukować liczbę wymiarów z $n$ do $k$, czyli znaleźć $k$ wektorów $u^{(1)}, u^{(2)}, \\ldots, u^{(k)}$ takich, że rzutowanie danych na podprzeztrzeń rozpiętą na tych wektorach minimalizuje błąd rzutowania." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Analiza głównych składowych to zupełnie inne zagadnienie niż regresja liniowa!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Algorytm PCA\n", "\n", "1. Dany jest zbiór składający się z $x^{(1)}, x^{(2)}, \\ldots, x^{(m)} \\in \\mathbb{R}^n$.\n", "1. Chcemy zredukować liczbę wymiarów z $n$ do $k$ ($k < n$).\n", "1. W ramach wstępnego przetwarzania dokonujemy skalowania i normalizacji średniej.\n", "1. Znajdujemy macierz kowariancji:\n", " $$ \\Sigma = \\frac{1}{m} \\sum_{i=1}^{n} \\left( x^{(i)} \\right) \\left( x^{(i)} \\right)^T $$\n", "1. Znajdujemy wektory własne macierzy $\\Sigma$ (rozkład SVD):\n", " $$ (U, S, V) := \\mathop{\\rm SVD}(\\Sigma) $$\n", "1. Pierwszych $k$ kolumn macierzy $U$ to szukane wektory." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "\n", "# Algorytm PCA - implementacja\n", "def pca(X, k):\n", " X_std = StandardScaler().fit_transform(X) # normalizacja\n", " mean_vec = np.mean(X_std, axis=0)\n", " cov_mat = np.cov(X_std.T) # macierz kowariancji\n", " n = cov_mat.shape[0]\n", " eig_vals, eig_vecs = np.linalg.eig(cov_mat) # wektory własne\n", " eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:, i])\n", " for i in range(len(eig_vals))]\n", " eig_pairs.sort()\n", " eig_pairs.reverse()\n", " matrix_w = np.hstack([eig_pairs[i][1].reshape(n, 1)\n", " for i in range(k)]) # wybór\n", " return X_std.dot(matrix_w) # transformacja" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X_pca = pca(X, 2)\n", "fig = plot_unlabeled_data(X_pca)" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15rc1" }, "livereveal": { "start_slideshow_at": "selected", "theme": "amu" } }, "nbformat": 4, "nbformat_minor": 2 }