{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Uczenie maszynowe\n",
"# 9. Przegląd metod uczenia nadzorowanego – część 1"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 9.1. Naiwny klasyfikator bayesowski"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"* Naiwny klasyfikator bayesowski jest algorytmem dla problemu klasyfikacji wieloklasowej.\n",
"* Naszym celem jest znalezienie funkcji uczącej $f \\colon x \\mapsto y$, gdzie $y$ oznacza jedną ze zdefiniowanych wcześniej klas.\n",
"* Klasyfikacja probabilistyczna polega na wskazaniu klasy o najwyższym prawdopodobieństwie:\n",
"$$ \\hat{y} = \\mathop{\\arg \\max}_y P( y \\,|\\, x ) $$\n",
"* Naiwny klasyfikator bayesowski należy do rodziny klasyfikatorów probabilistycznych"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"\n",
"\n",
"**Thomas Bayes** (wymowa: /beɪz/) (1702–1761) – angielski matematyk i duchowny"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Twierdzenie Bayesa – wzór ogólny\n",
"\n",
"$$ P( Y \\,|\\, X ) = \\frac{ P( X \\,|\\, Y ) \\cdot P( Y ) }{ P ( X ) } $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
"Twierdzenie Bayesa opisuje związek między prawdopodobieństwami warunkowymi dwóch zdarzeń warunkujących się nawzajem."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Twierdzenie Bayesa\n",
"(po zastosowaniu wzoru na prawdopodobieństwo całkowite)\n",
"\n",
"$$ \\underbrace{P( y_k \\,|\\, x )}_\\textrm{ prawd. a posteriori } = \\frac{ \\overbrace{ P( x \\,|\\, y_k )}^\\textrm{ model klasy } \\cdot \\overbrace{P( y_k )}^\\textrm{ prawd. a priori } }{ \\underbrace{\\sum_{i} P( x \\,|\\, y_i ) \\, P( y_i )}_\\textrm{wyrażenie normalizacyjne} } $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"source": [
" * W tym przypadku „zdarzenie $x$” oznacza, że cechy wejściowe danej obserwacji przyjmują wartości opisane wektorem $x$.\n",
" * „Zdarzenie $y_k$” oznacza, że dana obserwacja należy do klasy $y_k$.\n",
" * **Model klasy** $y_k$ opisuje rozkład prawdopodobieństwa cech obserwacji należących do tej klasy.\n",
" * **Prawdopodobieństwo *a priori*** to prawdopodobienstwo, że losowa obserwacja należy do klasy $y_k$.\n",
" * **Prawdopodobieństwo *a posteriori*** to prawdopodobieństwo, którego szukamy: że obserwacja opisana wektorem cech $x$ należy do klasy $y_k$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Rola wyrażenia normalizacyjnego w twierdzeniu Bayesa\n",
"\n",
" * Wartość wyrażenia normalizacyjnego nie wpływa na wynik klasyfikacji.\n",
"\n",
"**Przykład**: obserwacja nietypowa ma małe prawdopodobieństwo względem dowolnej klasy, wyrażenie normalizacyjne sprawia, że to prawdopodobieństwo staje się porównywalne z prawdopodobieństwami typowych obserwacji, ale nie wpływa na klasyfikację!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Klasyfikatory dyskryminatywne a generatywne\n",
"\n",
"* Klasyfikatory generatywne tworzą model rozkładu prawdopodobieństwa dla każdej z klas.\n",
"* Klasyfikatory dyskryminatywne wyznaczają granicę klas (*decision boundary*) bezpośrednio.\n",
"* Naiwny klasyfikator bayesowski jest klasyfikatorem generatywnym (ponieważ wyznacza $P( x \\,|\\, y )$).\n",
"* Wszystkie klasyfikatory generatywne są probabilistyczne, ale nie na odwrót.\n",
"* Regresja logistyczna jest przykładem klasyfikatora dyskryminatywnego."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Założenie niezależności dla naiwnego klasyfikatora bayesowskiego\n",
"\n",
"* Naiwny klasyfikator bayesowski jest *naiwny*, ponieważ zakłada, że poszczególne cechy są niezależne od siebie:\n",
"$$ P( x_1, \\ldots, x_n \\,|\\, y ) \\,=\\, \\prod_{i=1}^n P( x_i \\,|\\, x_1, \\ldots, x_{i-1}, y ) \\,=\\, \\prod_{i=1}^n P( x_i \\,|\\, y ) $$\n",
"* To założenie jest bardzo przydatne ze względów obliczeniowych, ponieważ bardzo często mamy do czynienia z ogromną liczbą cech (bitmapy, słowniki itp.)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Naiwny klasyfikator bayesowski – przykład"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [],
"source": [
"# Przydtne 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": 3,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Wczytanie danych (gatunki kosaćców)\n",
"\n",
"data_iris = pandas.read_csv('iris.csv')\n",
"data_iris_setosa = pandas.DataFrame()\n",
"data_iris_setosa['dł. płatka'] = data_iris['pl'] # \"pl\" oznacza \"petal length\"\n",
"data_iris_setosa['szer. płatka'] = data_iris['pw'] # \"pw\" oznacza \"petal width\"\n",
"data_iris_setosa['Iris setosa?'] = data_iris['Gatunek'].apply(lambda x: 1 if x=='Iris-setosa' else 0)\n",
"\n",
"m, n_plus_1 = data_iris_setosa.values.shape\n",
"n = n_plus_1 - 1\n",
"Xn = data_iris_setosa.values[:, 0:n].reshape(m, n)\n",
"\n",
"X = np.matrix(np.concatenate((np.ones((m, 1)), Xn), axis=1)).reshape(m, n_plus_1)\n",
"Y = np.matrix(data_iris_setosa.values[:, 2]).reshape(m, 1)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"liczba przykładów: {0: 100, 1: 50}\n",
"prior probability: {0: 0.6666666666666666, 1: 0.3333333333333333}\n"
]
}
],
"source": [
"classes = [0, 1]\n",
"count = [sum(1 if y == c else 0 for y in Y.T.tolist()[0]) for c in classes]\n",
"prior_prob = [float(count[c]) / float(Y.shape[0]) for c in classes]\n",
"\n",
"print('liczba przykładów: ', {c: count[c] for c in classes})\n",
"print('prior probability:', {c: prior_prob[c] for c in classes})"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [],
"source": [
"# Wykres danych (wersja macierzowa)\n",
"def plot_data_for_classification(X, Y, xlabel, ylabel): \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": "code",
"execution_count": 6,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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S5cu1fHjx1VYWBjrdBABM2fO1IQJE1RUVBTrVBAhH374oQYMGKC8vDx9+9vfVlVVVaxTQg+98sorGjVqlL75zW+qT58+GjFihH73u9/FOi1EmM/n0/PPP6/vfve7crlcMcmBmSPABn6/X3PmzNGYMWM0bNiwWKeDCNi1a5cKCwv173//W5mZmVq2bJnOO++8WKeFHlq6dKm2b9+uLVu2xDoVREhBQYGeffZZDR06VAcPHtTPfvYzjRs3Trt371bv3r1jnR66ad++fVq8eLHmzZunH//4x9qyZYvuuusupaWlaerUqbFODxHy8ssv64svvtB3vvOdmOVAcQTYYObMmdq9ezf3uSeQoUOHaufOnaqpqdEf//hHTZ06VevWraNAimPV1dWaPXu2Vq1apV69esU6HURI29vWL7jgAhUUFOjMM8/Uiy++qFtvvTWGmaEn/H6/Ro0apV/+8peSpBEjRmj37t1asmQJxVECeeqpp3TNNddowIABMcuB2+qACJs1a5ZeffVVvfnmmxo4cGCs00GEpKWlafDgwRo5cqQWLFigCy+8UP/93/8d67TQA9u2bdOnn36qr371q/J4PPJ4PFq3bp1++9vfyuPxqLm5OdYpIgJOOeUU5efna+/evbFOBT3Qv3//Dn+MOvfcc7llMoHs379fq1ev1m233RbTPJg5AiLEMAx9//vf17Jly1ReXs6DognO7/eroaEh1mmgB6644grt2rUr4Ni0adN0zjnn6Ic//KFSUlJilBkiqa6uTh999JEmT54c61TQA2PGjOmwPcaePXt05plnxigjRNozzzyjPn36aMKECTHNg+IoBurq6gL+gvXxxx9r586dysnJUW5ubgwzQ0/MnDlTL7zwgpYvX67evXvr0KFDkqTs7GxlZGTEODv0xH333adrrrlGubm5OnbsmF544QWVl5dr5cqVsU4NPdC7d+8OzwSefPLJOu2003hWMI7dc889uu6663TmmWfqwIEDeuCBB5SSkqJJkybFOjX0wNy5czV69Gj98pe/1E033aS33npLTz75pJ588slYp4YI8Pv9euaZZzR16lR5PLEtTyiOYmDr1q26/PLLW9/PmzdPkjR16lQ9++yzMcoKPbV48WJJ0vjx4wOOP/PMMzF9sBA99+mnn2rKlCk6ePCgsrOzdcEFF2jlypW68sorY50agHb++c9/atKkSfr88891+umna+zYsaqsrOywXDDiy8UXX6xly5bpvvvu0/z58zVo0CD95je/0be//e1Yp4YIWL16taqqqvTd73431qnIZRiGEeskAAAAACDWWJABAAAAAERxBAAAAACSKI4AAAAAQBLFEQAAAABIojgCAAAAAEkURwAAAAAgieIIAAAAACRRHAEAHGD8+PGaM2dOp+8j4R//+IdcLpd27tzpiHYAAM5DcQQAQCe+853vaOLEibFOAwAQJRRHAAAAACCKIwBAlB0/flxTpkxRZmam+vfvr0cffbTT2I8++iisNltudVu6dKlGjx6tXr16adiwYVq3bl2H2M8++0w1NTVqbm7WrbfeqkGDBikjI0NDhw7Vf//3f7fG/dd//Zd+//vfa/ny5XK5XHK5XCovL+/QXnNzs7773e/qnHPOUVVVVZftAgCcyxPrBAAAyeXee+/VunXrtHz5cvXp00c//vGPtX37dl100UUBcb/73e/05Zdf6sknn7TU9m9+8xudd955Wrhwoa677jp9/PHHOu2001pjJk2apKVLl+qyyy7TwIED9dJLL+m0007Txo0b9b3vfU/9+/fXTTfdpHvuuUfvvfeeamtr9cwzz0iScnJydODAgda2GhoaNGnSJP3jH//Q+vXrdfrpp6uxsTFkuwAA56I4AgBETV1dnZ566ik9//zzuuKKKyRJv//97zVw4MDWmFWrVuntt99WcXGxpcJIkmbNmqVvfOMbkqTFixdrxYoVeuqppzRv3rzW2ZsXXnhBRUVFkqSf/exnrZ8dNGiQNm3apBdffFE33XSTMjMzlZGRoYaGBvXr1y/od5kwYYIaGhr05ptvKjs7W5KUmpoasl0AgHNRHAEAouajjz6Sz+dTQUFB67GcnBwNHTpUkmQYhp599lmdfvrp6tOnj+X2CwsLW//d4/Fo1KhReu+997Rjxw598sknkhTQ7uOPP66nn35aVVVVqq+vl8/n6zCD1ZlJkyZp4MCBWrt2rTIyMgLO9aRdAEDs8MwRAMAxXC6X/ud//kf9+/ePaLsXX3yxHn744YBjS5cu1T333KNbb71Vb7zxhnbu3Klp06bJ5/OF1ea1116rt99+W5s2bYpouwCA2KE4AgBEzdlnn63U1FRt3ry59djRo0e1Z8+eiLRfWVnZ+u9NTU3atm2bzj333KCxFRUVGj16tGbMmKERI0Zo8ODBHRaASEtLU3Nzc9DPT58+XQ899JCuv/76gIUfwmkXAOBMFEcAgKjJzMzUrbfeqnvvvVdr167V7t279Z3vfEdud+j/O7rvvvs0ZcqULtt//PHHtWzZMr3//vuaOXOmjh49qu9+97tBY4cMGaKtW7dq5cqV2rNnj376059qy5YtATFnnXWW3n77bX3wwQf617/+pcbGxoDz3//+9/Xggw/qP//zP7Vhw4aw2wUAOBPPHAEAourXv/616urqdN1116l37966++67VVNTE/IzBw8eVFVVVZdtP/TQQ3rooYe0c+dODR48WK+88oq+8pWvBI294447tGPHDt18881yuVyaNGmSZsyYob/+9a+tMbfffrvKy8s1atQo1dXV6c0339RZZ50V0M6cOXPk9/t17bXXasWKFWG1CwBwJpdhGEaskwAAoCf+8Y9/aNCgQdqxYwcLHwAAuo3b6gAAAABAFEcAAAAAIInb6gAAAABAEjNHAAAAACCJ4ggAAAAAJFEcAQAAAIAkiiMAAAAAkERxBAAAAACSKI4AAAAAQBLFEQAAAABIojgCAAAAAEkURwAAAAAgSfr/AeGUifP1vx/pAAAAAElFTkSuQmCC\n",
"text/plain": [
"