{ "metadata": { "name": "", "signature": "sha256:52f5e4780072f4b85b22ee9239d33facfacf90d3ca75087352aa61c7396bc313" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Sveu\u010dili\u0161te u Zagrebu
\n", "Fakultet elektrotehnike i ra\u010dunarstva\n", "\n", "#Strojno u\u010denje\n", "http://www.fer.unizg.hr/predmet/su\n", "\n", "Ak. god. 2015./2016.\n", "\n", "#Laboratorijska vje\u017eba 1: Procjena parametara i Bayesov klasifikator\n", "\n", "(c) 2015 Jan \u0160najder\n", "\n", "*Verzija 0.3*\n", "\n", "Objavljeno: **27. listopada 2015.**
\n", "Rok za predaju: **1. studenog 2015.**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vje\u017eba se sastoji od vi\u0161e zadataka grupiranih u tri teme. U nastavku slijedite upute navedene u \u0107elijama s tekstom. Rje\u0161avanje vje\u017ebe svodi se na **dopunjavanje ove bilje\u017enice**: umetanja \u0107elije ili vi\u0161e njih **ispod** teksta zadatka, pisanja odgovaraju\u0107eg koda te evaluiranja \u0107elija. Odgovore na pitanja **nemojte pisati** u bilje\u017enicu koju \u0107ete demonstrirati asistentu (kako ih pri predaji ne bi samo \u010ditali).\n", "\n", "Molim vas, osigurajte se da u potpunosti **razumijete** kod koji ste napisali. Kod predaje vje\u017ebe, morate biti u stanju na zahtjev asistenta preina\u010diti i ponovno evaluirati Va\u0161 kod. Nadalje, morate razumjeti teorijske osnove onoga \u0161to radite, u okvirima onoga \u0161to smo obradili na predavanju. Stoga se nemojte ograni\u010diti samo na to da rije\u0161ite zadatak, ve\u0107 slobodno eksperimentirajte. To upravo i jest svrha ovih vje\u017ebi.\n", "\n", "Vje\u017ebe trebate raditi **samostalno**. Mo\u017eete se konzultirati s drugima o na\u010delnom na\u010dinu rje\u0161avanja, ali u kona\u010dnici morate sami odraditi vje\u017ebu. U protivnome vje\u017eba nema smisla." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# U\u010ditaj osnovne biblioteke...\n", "import scipy as sp\n", "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 2 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "1. Procjena parametara" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Definirajte funkciju izglednosti $\\mathcal{L}(\\mu|\\mathcal{D})$ za skup $\\mathcal{D}=\\{x^{(i)}\\}_{i=1}^N$ Bernoullijevih varijabli. Neka od $N$ varijabli njih $m$ ima vrijednost 1 (npr. od $N$ bacanja nov\u010di\u0107a, $m$ puta smo dobili glavu). Definirajte funkciju izglednosti tako da je parametrizirana s $N$ i $m$, dakle definirajte funkciju $\\mathcal{L}(\\mu|N,m)$. " ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prika\u017eite funkciju $\\mathcal{L}(\\mu|N,m)$ za (1) $N=10$ i $m=1,2,5,9$ te za (2) $N=100$ i $m=1,10,50,90$ (dva zasebna grafikona).\n", "\n", "**Q:** Koja vrijednost odgovara ML-procjenama i za\u0161to?" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prika\u017eite funkciju $\\mathcal{L}(\\mu|N,m)$ za $N=10$ i $m=\\{0,9\\}$.\n", "\n", "**Q:** Koja je ML-procjena za $\\mu$ i \u0161to je problem s takvom procjenom u ovome slu\u010daju?" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prika\u017eite beta-distribuciju $B(\\mu|\\alpha,\\beta)$ za razli\u010dite kombinacije parametara $\\alpha$ i $\\beta$, uklju\u010divo $\\alpha=\\beta=1$ te $\\alpha=\\beta=2$.\n", "\n", "**Q:** Koje parametere biste odabrali za modeliranje apriornog znanja o parametru $\\mu$ za nov\u010di\u0107 za koji mislite da je \"donekle pravedan, ali malo \u010de\u0161\u0107e pada na glavu\"? Koje biste parametre odabrali za nov\u010di\u0107 za koji dr\u017eite da je posve pravedan? Za\u0161to uop\u0107e koristimo beta-distribuciju, a ne neku drugu?" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Definirajte funkciju za izra\u010dun zajedni\u010dke vjerojatnosti $P(\\mu,\\mathcal{D}) = P(\\mathcal{D}|\\mu) \\cdot P(\\mu|\\alpha,\\beta)$ te prika\u017eite tu funkciju za gornje kombinacije parametara $N$ i $m$ i neke odabrane $\\alpha$ i $\\beta$. \n", "\n", "***Q***: Koje vrijednosti odgovaraju MAP-procjeni za $\\mu$? Usporedite ih sa ML-procjenama." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Za $N=10$ i $m=1$, na jednome grafikonu prika\u017eite sve tri distribucije: $P(\\mu,\\mathcal{D})$, $P(\\mu|\\alpha,\\beta)$ i $\\mathcal{L}(\\mu|\\mathcal{D})$." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.7" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pro\u010ditajte [ove](http://scikit-learn.org/stable/datasets/) upute o u\u010ditavanju oglednih skupova podataka u SciPy. U\u010ditajte skup podataka *Iris*. Taj skup sadr\u017ei $n=4$ zna\u010dajke i $K=3$ klase. Odaberite jednu klasu i odaberite sve primjere iz te klase, dok ostale primjere zanemarite (u nastavku radite samo s primjerima iz te jedne klase). Vizualizirajte podatke tako da na\u010dinite 2D-prikaze za svaki par zna\u010dajki (\u0161est grafikona; za prikaz je najjednostavnije koristiti funkciju [`scatter`](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter))." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pogledajte opis modul [`stats`](http://docs.scipy.org/doc/scipy-0.14.0/reference/stats.html) te prou\u010dite funkciju [`norm`](http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.norm.html#scipy.stats.norm). Implementirajte funkciju log-izglednosti za parametre $\\mu$ i $\\sigma^2$ normalne distribucije." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.9" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Izra\u010dunajte ML-procjene za $(\\mu, \\sigma^2)$ za svaku od $n=4$ zna\u010dajki iz skupa *Iris*. Ispi\u0161ite log-izglednosti tih ML-procjena. \n", "\n", "**Q:** Mo\u017eete li, na temelju dobivenih log-izglednosti, zaklju\u010diti koja se zna\u010dajka najbolje pokorava normalnoj distribuciji? " ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prou\u010dite funkciju [`pearsonr`](http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.mstats.pearsonr.html) za izra\u010dun Pearsonovog koeficijenta korelacije. Izra\u010dunajte koeficijente korelacije izme\u0111u svih \u010detiri zna\u010dajki u skupu *Iris*. " ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.11" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prou\u010dite funkciju [`cov`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html) te izra\u010dunajte ML-procjenu za kovarijacijsku matricu za skup *Iris*. Usporedite pristranu i nepristranu procjenu. Poka\u017eite da se razlika smanjuje s brojem primjera (npr. isprobajte za $N/4$ i $N/2$ i $N$ primjera)." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "1.12" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prou\u010dite funkciju [`multivariate_normal`](http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.multivariate_normal.html#scipy.stats.multivariate_normal). Definirajte funkciju koja vra\u0107a funkciju gusto\u0107e $P(x_1,x_2)$ za odabrane dvije zna\u010dajke. Nacrtajte grafikone kontura (funkcija [`contour`](https://scipy-lectures.github.io/intro/matplotlib/matplotlib.html#contour-plots)) za svih \u0161est parova zna\u010dajki." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "2. Bayesov klasifikator za diskretne zna\u010dajke" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "2.1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Za demonstraciju rada Bayesovog klasifikatora sa diskretnim zna\u010dajkama treba nam skup primjera sa diskretnim zna\u010dajkama i oznakama klase. Jedan takav ogledni skup podataka jest *digits*:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.datasets import load_digits\n", "digits = load_digits()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "gray() \n", "matshow(digits.images[0])\n", "show();" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Svaki primjer je matrica dimenzija $8\\times 8$:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "shape(digits.images[0])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "(8, 8)" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "digits.images[0]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "array([[ 0., 0., 5., 13., 9., 1., 0., 0.],\n", " [ 0., 0., 13., 15., 10., 15., 5., 0.],\n", " [ 0., 3., 15., 2., 0., 11., 8., 0.],\n", " [ 0., 4., 12., 0., 0., 8., 8., 0.],\n", " [ 0., 5., 8., 0., 0., 9., 8., 0.],\n", " [ 0., 4., 11., 0., 1., 12., 7., 0.],\n", " [ 0., 2., 14., 5., 10., 12., 0., 0.],\n", " [ 0., 0., 6., 13., 10., 0., 0., 0.]])" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ako na ovom skupu \u017eelimo trenirati Bernoullijev naivni Bayesov klasifikator, zna\u010dajke trebamo binarizirati. Prou\u010dite funkciju [`binarize`](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.binarize.html) i binarizirajte skup podataka." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Na binariziranom skupu podataka mo\u017eemo trenirati na\u0161 model. Naravno, da bismo mogli ispitati koliko dobro model radi, trebamo izdvojiti dio skupa za ispitivanje. Na\u010dinite podjelu skupa na 70% primjera za u\u010denje i 30% primjera za ispitivanje." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "2.2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pro\u010ditajte opis modula [`naive_bayes`](http://scikit-learn.org/stable/modules/naive_bayes.html). Za klasifikaciju primjera s diskretnim zna\u010dajkama treba nam tzv. *Bernoullijev naivni Bayes*, implementiran funkcijom [`BernoulliNB`](http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.BernoulliNB.html#sklearn.naive_bayes.BernoulliNB]). Prou\u010dite tu funkciju. Trenirajte model na skupu *digits* (na skupu za treniranje)." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "2.3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prou\u010dite modul [`metric`](http://scikit-learn.org/stable/modules/model_evaluation.html#prediction-error-metrics) za vrednovanje modela. Izra\u010dunajte to\u010dnost modela (mjera *Accuracy*) na skupu za treniranje i na skupu za ispitivanje.\n", "\n", "**Q:** Je li odnos izme\u0111u tih dviju pogre\u0161aka o\u010dekivan? Za\u0161to?" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "2.4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Trenirajte model bez zagla\u0111ivanja te izra\u010dunajte to\u010dnost takvog modela.\n", "\n", "**Q:** U \u010demu je problem?" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "2.5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Op\u0107enito govore\u0107i, \u0161to vi\u0161e primjera za u\u010denje imamo na raspolaganju, to \u0107emo mo\u0107i trenirati bolji model. Me\u0111utim, za svaki problem i svaki model postoji odre\u0111en broj primjera nakon kojeg daljnje pove\u0107avanje skupa za u\u010denje ne donosi velike dobitke. Uvid u to mo\u017eemo dobiti skiciranjem krivulje u\u010denja (engl. *learning curve*). Prou\u010dite funkciju [`learning_curve`](http://scikit-learn.org/stable/modules/generated/sklearn.learning_curve.learning_curve.html#sklearn.learning_curve.learning_curve) (ili sami implementirajte takvu funkciju) te prika\u017eite krivulju u\u010denja naivnog Bayesovog klasifikatora na skupu *digits*.\n", "\n", "**Q:** Bi li koristilo da imamo ve\u0107i skup primjera za u\u010denje? Koliko ve\u0107i?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "###2.6\n", "\n", "

\n", "**TBD**\n", "

" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "3. Bayesov klasifikator za kontinuirane zna\u010dajke" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "3.1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "U\u010ditajte skup podataka *Iris* i podijelite ga skup za u\u010denje i skup za provjeru u omjeru 70:30." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "3.2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prou\u010dite klasu [`GaussianNB`](http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html) koja implementira naivan Bayesov klasifikator za kontinuirane zna\u010dajke. Trenirajte model na skupu za u\u010denje *Iris* i vrednujte njegovu to\u010dnost na skupu za ispitivanje." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "3.3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Naivan Bayesov klasifikator u potpunosti zanemaruje korelacije izme\u0111u varijabli. Postavlja se pitanje bi li klasifikator na skupu *Iris* dosezao ve\u0107u to\u010dnost kada bi modelirao (linearne) zavisnosti izme\u0111u varijabli.\n", "\n", "Implementirajte Bayesov klasifikator s punom kovarijacijskom matricom za svaku klasu (dakle: nedijeljenom i nedijagonalnom kovarijacijskom matricom). Implementacija se sastoji od dvije funkcije: `train_GB` i `predict_GB`. Funkcija `train_GB(X,y)` neka trenira model Bayesovog klasifikatora sa Gaussovim gusto\u0107ama vjerojatnosti i vra\u0107a trenirani model. Za procjenu vektora srednjih vrijednosti $\\mu_j$ i kovarijacijskih matrica $\\Sigma_j$ mo\u017eete koristiti [ove](http://docs.scipy.org/doc/numpy/reference/routines.statistics.html) funkcije. Funkcija `predict_GB(model,X)` neka daje predikcije modela na svim primjerima iz `X`. Alternativno, model mo\u017eete implementirati kao klasu, a funkcije `train_GB` i `predict_GB` kao njezine metode. Izra\u010dunajte to\u010dnost modela na ispitnome dijelu skupa *Iris*." ] } ], "metadata": {} } ] }