• No results found

Strojov´e uˇcen´ı a Datamining

N/A
N/A
Protected

Academic year: 2022

Share "Strojov´e uˇcen´ı a Datamining"

Copied!
53
0
0

Loading.... (view fulltext now)

Full text

(1)

Strojov´ e uˇ cen´ı a Datamining

Diplomov´ a pr´ ace

M13000177

Studijn´ı program: N2612 – Elektrotechnika a informatika Studijn´ı obor: 1802T007 – Informaˇcn´ı technologie Autor pr´ace: Bc. Patrik Drhl´ık

Vedouc´ı pr´ace: RNDr. Kl´ara C´ısaˇrov´a, Ph.D.

(2)

Machine learning and Datamining

Diploma thesis

M13000177

Study programme: N2612 – Electrical Engineering and Informatics Study branch: 1802T007 – Information technology

Author: Bc. Patrik Drhl´ık

Supervisor: RNDr. Kl´ara C´ısaˇrov´a, Ph.D.

(3)
(4)
(5)
(6)

Podˇ ekov´ an´ı

R´ad bych podˇekoval vedouc´ı pr´ace RNDr. Kl´aˇre C´ısaˇrov´e, Ph.D. za jej´ı ochotu pˇri pomoci s prac´ı, doporuˇcov´an´ı materi´al˚u a konstruk- tivn´ı pˇripom´ınky. D´ale bych r´ad podˇekoval sv´e pˇr´ıtelkyni, kter´a mˇe vˇzdy velmi podporovala. Stejnˇe tak jako m´ym rodiˇc˚um, kteˇr´ı mi v˚ubec cel´e studium umoˇznili.

(7)

Abstrakt

Pr´ace je pˇr´ıspˇevkem ke studiu form´atu MOOC kurz˚u. Popisuje exis- tuj´ıc´ı MOOC port´aly a osobn´ı zkuˇsenost z kurzu Machine Learning na port´ale Coursera. Na z´akladˇe tohoto kurzu jsou v pr´aci analy- zov´any metody supervizovan´eho strojov´eho uˇcen´ı – line´arn´ı regrese, logistick´a regrese, neuronov´e s´ıtˇe a support vector machines (SVM).

V´ysledkem pr´ace je v´yukov´y program pro experimentov´an´ı s line´arn´ım SVM s jednou c´ılovou promˇennou. Program pom´ah´a uˇzivatel˚um pochopit d˚usledky volby jednotliv´ych parametr˚u. Je realizov´an jako webov´a aplikace v jazyce Python za pouˇzit´ı fra- meworku Django. Je k dispozici ´uˇcastn´ık˚um kurzu dataminingu v e- learningov´em port´alu ALS na TUL. V r´amci pr´ace je tak´e pops´an postup zpracov´an´ı t´ematu line´arn´ı regrese ve form´atu MOOC.

Kl´ıˇ cov´ a slova

MOOC, Strojov´e uˇcen´ı, Datamining, Support Vector Machines, Py- thon

(8)

Abstract

The thesis is a contribution to studying the MOOC format. It de- scribes existing MOOC portals and a personal experience from the Machine Learning course on Coursera. It contains an analysis of su- pervised machine learning methods based on the Machine Lear- ning course. Namely linear regression, logistic regression, neural networks and support vector machines (SVM).

The result of the thesis is an educational program for experimenting with a linear SVM with one target variable. Program helps users understand the meaning of choosing each parameters. It is made as a web application in the programming language Python and the Django framework. It is available for the participants of the datamining course in the e-learning portal ALS at TUL. The thesis also describes how the MOOC course for linear regression was made.

Keywords

MOOC, Machine learning, Datamining, Support Vector Machines, Python

(9)

Obsah

Uvod´ 11

2 MOOC 12

2.1 Form´at MOOC kurz˚u. . . 12

2.2 Pˇr´ıklady aktu´alnˇe dostupn´ych MOOC port´al˚u . . . 14

2.2.1 Khan Academy . . . 14

2.2.2 Udacity . . . 14

2.2.3 edX . . . 15

2.2.4 Canvas Network . . . 15

2.2.5 Open2Study . . . 15

2.2.6 FutureLearn . . . 16

2.2.7 Academic Earth . . . 16

2.2.8 Coursera . . . 16

2.3 Moje zkuˇsenost s port´alem Coursera . . . 17

3 Metody supervizovan´eho uˇcen´ı 19 3.1 Popis pouˇzit´eho znaˇcen´ı . . . 19

3.2 Line´arn´ı regrese . . . 20

3.3 Logistick´a regrese . . . 21

3.4 Neuronov´e s´ıtˇe . . . 22

3.5 Support Vector Machines . . . 25

4 V´yukov´y program pro experimentov´an´ı s algoritmem SVM 27 4.1 Pouˇzit´e technologie . . . 27

4.1.1 Python Django framework . . . 28

4.1.2 NumPy . . . 28

(10)

4.1.3 Matplotlib . . . 28

4.2 Struktura aplikace . . . 29

4.3 Popis uˇzivatelsk´eho prostˇred´ı aplikace . . . 30

4.4 Pouˇzit´e datasety . . . 33

4.4.1 Line´arnˇe separovateln´a data . . . 33

4.4.2 Line´arnˇe neseparovateln´a data . . . 34

4.4.3 Line´arnˇe ˇc´asteˇcnˇe separovateln´a data s validaˇcn´ım datasetem . 34 4.5 Implementace SVM . . . 35

4.5.1 Form´at dat . . . 36

4.5.2 Nastaven´ı modelu a popis vstupn´ıch parametr˚u algoritmu . . . 37

4.5.3 Tr´enov´an´ı modelu s vyuˇzit´ım algoritmu SMO . . . 38

4.5.4 Testov´an´ı modelu . . . 41

4.6 Implementace SVM v praxi . . . 41

4.7 Uk´azka v´yukov´ych prvk˚u aplikace . . . 42

5 T´ema zpracovan´e ve form´atu MOOC 43 5.1 Pouˇzit´e n´astroje . . . 43

5.1.1 EduArt . . . 44

5.1.2 Vizualiz´er . . . 44

5.1.3 ALS . . . 45

5.2 Popis zpracovan´eho t´ematu v r´amci port´alu ALS. . . 45

Z´avˇer 47

Literatura 50

A Obsah pˇriloˇzen´eho CD 51

B Certifik´at z kurzu Machine Learning 52

(11)

Seznam obr´ azk˚ u

3.1 Pˇr´ıklad neuronov´e s´ıtˇe se tˇremi vrstvami [2, lekce 8, s. 19]. . . 24 4.1 Screenshot formul´aˇre pro natr´enov´an´ı modelu SVM. . . 31 4.2 Screenshot v´ysledku natr´enovan´eho modelu SVM podle parametr˚u

z obr´azku 4.1. . . 32 4.3 Line´arnˇe separovateln´y dataset. . . 34 4.4 Neline´arnˇe separovateln´y dataset nevhodn´y pro zpracov´an´ı line´arn´ım

SVM.. . . 35 4.5 Line´arnˇe ˇc´asteˇcnˇe separovateln´y dataset (vlevo) a validaˇcn´ı dataset

(vpravo), kter´y se vyuˇz´ıv´a k testov´an´ı modelu. . . 36 4.6 Grafick´y popis pr˚ubˇehu algoritmu SVM. . . 36 4.7 Diagram tˇr´ıd m´e implementace algoritmu SVM. . . 37 4.8 V´yvojov´y diagram tr´enov´an´ı SVM modelu s vyuˇzit´ım algoritmu SMO. 39 4.9 Screenshot z aplikace, kde je vyskakovac´ı n´apovˇeda k parametru C. . 42

(12)

Uvod ´

ˇZijeme v dobˇe, ve kter´e je dostupnost informac´ı t´emˇeˇr neomezen´a. Probl´emem vˇsak nˇekdy m˚uˇze b´yt to, ˇze nemaj´ı dostateˇcnou formu a ˇcasto poch´azej´ı z ned˚uvˇeryhodn´ych zdroj˚u. Tento probl´em zaˇcaly glob´alnˇe ˇreˇsit tzv. MOOC port´aly (viz kapitolu 2) pˇribliˇznˇe od roku 2009. Svˇetov´e univerzity se chopily tvorby kurz˚u z r˚uzn´ych oblast´ı, daly jim jednotn´y form´at a zaˇcaly je volnˇe poskytovat vˇsem nadˇsen´ym z´ajemc˚um.

V ˇCesk´e republice ˇz´adn´y takov´y jednotn´y port´al prozat´ım nenalezneme. Ambic´ı do budoucna bude vytvoˇren´ı podobn´eho port´alu, kter´y by provozovala Technick´a univerzita v Liberci. Prozat´ım se t´ımto t´ematem na univerzitˇe zab´yv´a skupina lid´ı a moje pr´ace by mˇela pˇrispˇet ke studiu form´atu MOOC kurz˚u, kter´y by se vyuˇzil v tvorbˇe zm´ınˇen´eho port´alu.

Jedn´ım z pr˚ukopn´ık˚u tˇechto port´al˚u je Andrew Ng, kter´y p˚usob´ı na Stanfordsk´e univerzitˇe v Kalifornii. Jeˇstˇe zn´amˇejˇs´ı je ale pravdˇepodobnˇe d´ıky strojov´emu uˇcen´ı a dataminingu. To je oblast, kter´a velmi souvis´ı s ohromn´ym r˚ustem informac´ı a dat.

D´ıky algoritm˚um z t´eto oblasti je moˇzn´e z´ıskat cenn´e informace z dat, kter´e na prvn´ı pohled nejsou vidˇet. Tyto metody se bˇeˇznˇe vyuˇz´ıvaj´ı napˇr. v marketingov´ych oblas- tech, ve finanˇcnictv´ı a v podstatˇe kdekoliv, kde je k dispozici velk´e mnoˇzstv´ı dat.

Dok´aˇzeme d´ıky nim odhadnout, jak´e produkty zlevnit, komu udˇelit ´uvˇer a mnoho dalˇs´ıch.

Spojen´ım tˇechto dvou zaj´ımav´ych oblast´ı vyˇslo jako vhodn´e vytvoˇren´ı v´yukov´eho programu pro vybran´e t´ema ze strojov´eho uˇcen´ı. Zejm´ena s d˚urazem na to, aby ˇclovˇek dok´azal algoritmus pochopit tak, aby vˇedˇel, proˇc pouˇz´ıt pr´avˇe ten. Pro- gramy pro tuto oblast samozˇrejmˇe jiˇz existuj´ı. Pˇr´ıkladem m˚uˇze b´yt tˇreba IBM SPSS Modeler. Algoritmy v nˇem ale funguj´ı jako black box a je v nˇem vyˇzadov´ana jejich pˇredchoz´ı znalost. Druhou str´ankou vˇeci je cena programu, kter´a je vysok´a a znemoˇzˇnuje jeho vyuˇz´ıv´an´ı bˇeˇzn´ym z´ajemc˚um.

(13)

2 MOOC

MOOC [16] neboli anglicky Massive Open Online Course je kurz, kter´y je obvykle zdarma, nem´a omezen´y poˇcet ´uˇcastn´ık˚u a je k dispozici kaˇzd´emu, kdo m´a internetov´e pˇripojen´ı. Volnˇe by se term´ın dal pˇreloˇzit jako Otevˇren´y onlinov´y kurz pro ˇsirokou veˇrejnost. Tradiˇcn´ı onlinov´e nebo e-learningov´e kurzy jsou vˇetˇsinou omezeny poˇctem

´

uˇcastn´ık˚u, aby bylo zajiˇstˇeno, ˇze se instruktor kurzu bude vˇsem n´aleˇzitˇe vˇenovat.

V MOOC kurzech individu´aln´ı kontakt s instruktorem vˇetˇsinou chyb´ı. Studenti si pak mus´ı pomoct sami napˇr. sdruˇzov´an´ım ve skupink´ach at’ uˇz po s´ıti v internetov´ych f´orech nebo osobnˇe. Hlavn´ı myˇslenkou je, aby bylo kvalitn´ı vzdˇel´an´ı nebo pracovn´ı kvalifikace k dispozici vˇsem, kteˇr´ı o to maj´ı z´ajem.

2.1 Form´ at MOOC kurz˚ u

Kurzy se daj´ı rozliˇsit podle mnoha krit´eri´ı. To, ˇze jsou zdarma, nen´ı ´upln´ym pravi- dlem. Najdou se i takov´e, kter´e jsou zpoplatnˇen´e. Vˇetˇsina ale nab´ız´ı moˇznost, kter´a je nˇekde mezi. Je moˇzn´e absolvovat kurz zdarma, ale pokud je zaplacen poplatek, tak je ´uˇcastn´ıkovi kurzu po ´uspˇeˇsn´em absolvov´an´ı zasl´an ovˇeˇren´y certifik´at, kter´ym se d´ale m˚uˇze prezentovat napˇr. pˇred sv´ym zamˇestnavatelem nebo ve ˇskole. Tyto certifik´aty zas´ılaj´ı i nˇekter´e kurzy, kter´e jsou zcela zdarma. Nejsou ale stoprocentnˇe ovˇeˇriteln´e.

Kurzy se tak´e liˇs´ı t´ım, jak dlouho trvaj´ı. Existuj´ı kurzy, kter´e jsou v´azan´e na konkr´etn´ı datum a vˇetˇsinou trvaj´ı v rozmez´ı 4–12 t´ydn˚u. Kurz v tˇechto pˇr´ıpadech ud´av´a informaci o ˇcasov´e n´aroˇcnosti za t´yden, kter´a se pohybuje od 1–10 hodin.

Takov´y kurz vyd´av´a nov´e materi´aly maxim´alnˇe na t´yden nebo dva dopˇredu. Na druhou stranu jsou zde i kurzy, kter´e nejsou ˇcasovˇe omezen´e a student je m˚uˇze absolvovat sv´ym vlastn´ım tempem.

Oblasti, kter´ymi se kurzy zab´yvaj´ı jsou r˚uznorod´e. Pˇrevl´adaj´ı jednoznaˇcnˇe tech- nick´a ˇci pˇr´ırodovˇedn´a t´emata jako jsou kapitoly z matematiky, programov´an´ı nebo

(14)

umˇel´a inteligence. Nechyb´ı vˇsak ani kurzy t´ykaj´ıc´ı se finanˇcn´ıch, hudebn´ıch nebo psychologick´ych oblast´ı.

Hlavn´ımi poskytovateli tˇechto kurz˚u jsou pˇredn´ı svˇetov´e vysok´e ˇskoly jako MIT, Harvard, Stanford nebo Princeton. Mimo univerzity se na v´yvoji kurz˚u pod´ıl´ı i spoleˇcnosti jako Google nebo Facebook.

Kurz b´yv´a sloˇzen z nˇekolika hlavn´ıch blok˚u, kde jeden blok odpov´ıd´a vyuˇcovan´emu t´ydnu. Kaˇzd´y takov´y blok se d´ale ˇclen´ı na d´ılˇc´ı t´emata, kter´a jsou podpoˇrena prezentacemi, odkazy na dalˇs´ı moˇzn´e podp˚urn´e materi´aly a zejm´ena kr´atk´e videoz´aznamy, kter´e trvaj´ı 8–15 minut. To je v´yborn´y zp˚usob, kter´y pom´ah´a udrˇzovat pozornost. Nav´ıc je bˇeˇzn´e, ˇze se v pr˚ubˇehu videoz´aznam jednou nebo dvakr´at zastav´ı a d´a studentovi jednoduchou ot´azku z probran´e oblasti. Pokud od- pov´ı spr´avnˇe, m˚uˇze pokraˇcovat. Pokud ne, tak m˚uˇze tak´e pokraˇcovat, ale m˚uˇze to br´at jako indik´ator toho, ˇze t´ema zcela nepochopil. V takov´em pˇr´ıpadˇe je vhodn´e si pˇredchoz´ıch p´ar minut pustit znovu.

Po absolvov´an´ı teoretick´e ˇc´asti pˇrich´az´ı ˇc´ast praktick´a. Na cel´y blok odpov´ıd´a test pˇribliˇznˇe s 5 ot´azkami. Ty se vyb´ıraj´ı n´ahodnˇe z pˇripraven´eho bal´ıku ot´azek a kaˇzd´a m´a nˇekolik moˇzn´ych odpovˇed´ı, kter´e se tak´e mohou liˇsit pˇri dalˇs´ım spuˇstˇen´ı testu. Kurzy se pak liˇs´ı t´ım, kolik m´a na dan´y test student pokus˚u. Velmi ˇcasto pokusy neb´yvaj´ı omezen´e v˚ubec. Student si test m˚uˇze proch´azet kolikr´at chce, dokud neuspˇeje a dokud si nevyjasn´ı pˇr´ıpadn´e nesrovnalosti.

V oblastech, kde se vyuˇz´ıv´a programov´an´ı je bˇeˇzn´a druh´a praktick´a ˇc´ast. V t´e

´

uˇcastn´ık dostane podrobnˇe sepsan´e zad´an´ı o ´uloze a aplikuje nauˇcen´e poznatky do pˇredpˇripraven´eho k´odu. Programuje jen j´adro vˇeci a nemus´ı ˇreˇsit mnohdy ˇcasovˇe n´aroˇcn´e ´ukoly, kter´e by ho od samotn´eho hlavn´ıho ´ukolu mohly odradit.

V´ysledn´e v´ystupy hotov´ych program˚u jsou odes´ıl´any na server, kter´y ˇreˇsen´ı po- rovn´av´a s v´ysledkem a informuje studenta o ´uspˇechu ˇci ne´uspˇechu.

Z test˚u i programovac´ıch cviˇcen´ı student z´ısk´av´a body, kter´e jsou na konci kurzu seˇcteny a je z nich vyhodnocen celkov´y v´ysledek. V´ysledn´y jiˇz v´yˇse zmiˇnovan´y certi- fik´at tak maj´ı n´arok z´ıskat pouze ti, kter´ym se podaˇr´ı pˇrekonat nastavenou bodovou hranici.

Posledn´ı velmi d˚uleˇzitou souˇc´ast´ı MOOC kurzu je diskuzn´ı f´orum, kde mohou studenti prob´ırat sv´a ˇreˇsen´ı, formovat studijn´ı skupinky ˇci hledat pomoc se zadan´ymi

´

ukoly. Mimo odpovˇedi od student˚u je tak´e moˇzn´e z´ıskat odpovˇed’ od povˇeˇren´eho person´alu, kter´y se kurzu vˇenuje.

(15)

2.2 Pˇ r´ıklady aktu´ alnˇ e dostupn´ ych MOOC port´ al˚ u

Provozovateli MOOC port´al˚u, webov´ych str´anek sdruˇzuj´ıc´ı MOOC kurzy, jsou pˇredevˇs´ım univerzity, kter´e maj´ı kapacity v podobˇe odborn´ych pracovn´ık˚u. Mnohdy se jedn´a o svˇetovˇe zn´am´e odborn´ıky v r˚uzn´ych oblastech. Nejvˇetˇs´ımi pr˚ukopn´ıky mezi tˇemito port´aly jsou americk´e univerzity. Sv˚uj velk´y port´al m´a ale i Velk´a Brit´anie nebo Austr´alie a na dalˇs´ıch pracuj´ı i jin´e zemˇe.

2.2.1 Khan Academy

Khan Academy [12] je organizace, kterou zaloˇzil Salman Khan v roce 2006. Netvoˇr´ı typick´e MOOC kurzy, jejichˇz form´at je pops´an v kapitole 2.1, ale nastavila jednu z jejich nejd˚uleˇzitˇejˇs´ıch souˇc´ast´ı – kr´atk´a videa o d´elce maxim´alnˇe 15 minut. Pan Khan s t´ımto form´atem pˇriˇsel jeˇstˇe pˇred zaloˇzen´ım Khan Academy, kdyˇz zaˇcal sv´e mlad´e sestˇrenici nahr´avat videa, ve kter´ych ji douˇcoval matematiku. Ta nahr´al na server YouTube a pos´ılal j´ı je. V dneˇsn´ı dobˇe m´a jeho kan´al na tomto serveru tis´ıce vide´ı, kter´e sleduj´ı miliony lid´ı po cel´em svˇetˇe.

V ˇCesku vznikl projekt Khanova ˇskola, kter´y spoˇc´ıv´a v pˇrekladu vide´ı z Khan Academy a n´asledn´emu poskytov´an´ı ˇcesk´emu uˇzivateli. Moment´alnˇe maj´ı pˇreloˇzeno pˇres dva tis´ıce vide´ı z matematiky, chemie, informatiky a dalˇs´ıch oblast´ı.

2.2.2 Udacity

P´anov´e Sebastian Thrun a Peter Norvig v roce 2011 vytvoˇrili kurz s n´azvem Intro- duction to Artificial Intelligence ( ´Uvod do umˇel´e inteligence). Hlavn´ım c´ılem bylo, aby byl kurz pro vˇsechny zdarma a k dispozici. Kurzu se z´uˇcastnilo pˇres 160 000 student˚u z v´ıce jak 190 zem´ı a nedlouho na to bylo zaloˇzeno Udacity [19].

Velk´ym rozd´ılem oproti ostatn´ım port´al˚um je fakt, ˇze jsou kurzy provozov´any svˇetov´ymi firmami a ne univerzitami. Sebastian Thrun, jako jeden ze zakladatel˚u, je s´am ze spoleˇcnosti Google, kde se pod´ıl´ı na v´yvoji auta, kter´e dok´aˇze jezdit bez ˇridiˇce. Google je tedy jednou z firem, kter´a kurzy poskytuje. Mimo Google se na jejich v´yvoji pod´ıl´ı i Facebook nebo AT&T – americk´a firma zab´yvaj´ıc´ı se nejen mobiln´ımi technologiemi.

Mimo jednotliv´e MOOC kurzy poskytuje Udacity tak´e tzv. Nanodegrees neboli nanovzdˇel´an´ı. Jedn´a se o sdruˇzen´ı kurz˚u do jednoho bal´ıku, kter´y dohromady tvoˇr´ı

(16)

komplexn´ı ˇreˇsen´ı problematiky. Aktu´alnˇe jich je na port´ale k dispozici 5 a kaˇzd´y se zab´yv´a konkr´etn´ı oblast´ı. Jedn´ım z nich je napˇr. vzdˇel´an´ı v oblasti v´yvoje front endu webov´ych aplikac´ı. Nejsou ale zdarma a po t´ydenn´ı zkuˇsebn´ı dobˇe ´uˇcastn´ık plat´ı 200 $ za mˇes´ıc. Netrv´a v ˇr´adech t´ydn˚u, ale mˇes´ıc˚u, konkr´etnˇe od ˇsesti do dvan´acti.

Jejich smyslem je vytvoˇren´ı kvalifikace, kter´a povede k z´ısk´an´ı pr´ace v dan´em oboru.

2.2.3 edX

Dalˇs´ım zn´am´ym port´alem je edX [9], na jehoˇz zaloˇzen´ı se v roce 2012 pod´ılely univer- zity Harvard a MIT. To jsou tak´e jedny z univerzit, kter´e zde kurzy poskytuj´ı. Mimo univerzit se zde na kurzech pod´ıl´ı tak´e napˇr. firma Microsoft. Je zde moˇzn´e nal´ezt i kurzy, kter´e nejsou speci´alnˇe zamˇeˇren´e na studenty, ale na pracuj´ıc´ı odborn´ıky, kter´ym se nad´ale hod´ı vzdˇel´av´an´ı v oboru. Dalo by se to pˇrirovnat k Nanodegree od Udacity (viz2.2.2), ale pouze v rovinˇe jednotliv´ych kurz˚u. Jinak je port´al klasick´ym pˇredstavitelem posyktovatel˚u MOOC kurz˚u.

2.2.4 Canvas Network

Americk´y port´al s n´azvem Canvas Network [4] byl zaloˇzen v roce 2012. Kurzy jsou ve valn´e vˇetˇsinˇe v´azan´e na dan´y ˇcas a jsou uˇzivateli vyps´any na hlavn´ı str´ance bez jak´ekoliv kategorizace. V provozu jich je nˇekolik des´ıtek a tvoˇr´ı je univerzity. Canvas Network se pyˇsn´ı zejm´ena t´ım, ˇze poskytuje vlastn´ı n´astroj na vytv´aˇren´ı kurz˚u, tzv.

LMS – Learning Management System.

2.2.5 Open2Study

Australsk´ym z´astupcem na poli MOOC port´al˚u je Open2Study [15]. Provozovatelem je sdruˇzen´ı australsk´ych univerzit. Aktu´alnˇe je zde k dispozici 49 kurz˚u. Rozd´ılem oproti ostatn´ım port´al˚um je to, ˇze vˇzdy bˇeˇz´ı pouze 4 t´ydny (pokud nejsou k dispo- zici neomezenˇe pro uˇcen´ı se vlastn´ım tempem). Zaj´ımavou moˇznost´ı je urˇcitˇe posky- tov´an´ı tzv. akreditovan´ych kurz˚u. Ty patˇr´ı lehce mimo samotn´y port´al Open2Study, ale provozuje ho stejn´e sdruˇzen´ı univerzit, kter´e se neboj´ı j´ıt cestou vyuˇcov´an´ı online.

V tˇechto programech je proto moˇzn´e z´ıskat i vysokoˇskolsk´y titul.

(17)

2.2.6 FutureLearn

Tento port´al [10] provozuje stejnojmenn´a spoleˇcnost, kter´a m´a z´akladnu v britsk´ych univerzit´ach. Mimo ty spolupracuje i s bristkou n´arodn´ı knihovnou, britsk´ym mu- zeem a dalˇs´ımi d˚uleˇzit´ymi britsk´ymi vzdˇel´avac´ımi institucemi. Prvn´ı kurzy spustili v z´aˇr´ı roku 2013 a po necel´em roce se k nim zaregistrovalo na p˚ul milionu stu- dent˚u. V dneˇsn´ı dobˇe se pyˇsn´ı ˇc´ıslem pˇrekraˇcuj´ıc´ım jeden milion student˚u. Form´at kurz˚u a druhy jejich poskytov´an´ı se jinak v z´asadˇe neliˇs´ı od popisovan´eho form´atu v kapitole2.1.

2.2.7 Academic Earth

Texask´y port´al Academic Earth [1] zaˇcal b´yt vyv´ıjen v roce 2008 a o rok pozdˇeji jiˇz zaˇcal poskytovat online kurzy zdarma. Kurzy zde poskytuj´ı v´yhradnˇe univerzity zejm´ena z USA. Ty doplˇnuje napˇr. univerzita z Oxfordu, Velk´e Brit´anie. Web jako takov´y je ale rozcestn´ık, kde si student m˚uˇze podle kategorie vyhledat t´ema, kter´emu by se chtˇel vˇenovat a odtud je pak pˇresmˇerov´an na univerzitn´ı str´anky nebo napˇr.

port´al YouTube.

2.2.8 Coursera

Coursera [7] by se pravdˇepodobnˇe dala povaˇzovat za nejzn´amˇejˇs´ı a tak´e nej- obl´ıbenˇejˇs´ı MOOC port´al. Z´azem´ı m´a na Standfordsk´e univerzitˇe v Kalifornii. Jej´ımi zakladateli jsou Daphne Koller a Andrew Ng. Andrew v roce 2011 vytvoˇril kurz s n´azvem Machine Learning (Strojov´e uˇcen´ı), na kter´y se mu pˇrihl´asilo pˇres 100 000 lid´ı. To byl jeden z hlavn´ıch impulz˚u, kter´e ho vedly k zaloˇzen´ı port´alu s podobn´ymi kurzy.

Kurzy zde poskytuje na 80 univerzit a dalˇs´ıch instituc´ı z USA, Evropy i Asie.

Form´at kurz˚u je zhruba takov´y jako v kapitole 2.1. Nav´ıc zde existuj´ı tzv. Spe- cializations (Specializace), kter´e se velmi podobaj´ı Nanodegrees, kter´e poskytuje port´al Udacity (viz kapitola 2.2.2). Poskytuje jich vˇsak vˇetˇs´ı mnoˇzstv´ı. Specializace je sloˇzena ze 3–10 kurz˚u a celkov´a doba na z´ısk´an´ı specializace m˚uˇze dosahovat aˇz jednoho roku. Po absolvov´an´ı vˇsech kurz˚u specializace mus´ı student cel´e snaˇzen´ı za- konˇcit vlastn´ım projektem, v kter´em by mˇel aplikovat nabyt´e znalosti. K dokonˇcen´ı je za kaˇzd´y d´ılˇc´ı kurz tˇreba zaplatit 49 $. Pokud se ˇz´akovi nepodaˇr´ı napoprv´e kurz absolvovat, tak m´a moˇznost to zkusit jeˇstˇe jednou a nemus´ı tak znovu platit.

(18)

2.3 Moje zkuˇ senost s port´ alem Coursera

Na podzim loˇnsk´eho roku (2014) jsem se v r´amci ˇreˇsen´ı t´eto pr´ace a podle jej´ıho zad´an´ı pˇrihl´asil na kurz Machine Learning (Strojov´e uˇcen´ı) [2] na MOOC port´ale Coursera (viz kapitola 2.2.8). Je to stejn´y kurz, po jehoˇz zpˇr´ıstupnˇen´ı veˇrejnosti Andrew Ng zaloˇzil Courseru. Jednalo se o mou prvn´ı zkuˇsenost s MOOC kurzem.

Kurz trval pˇresnˇe deset t´ydn˚u a za ´uspˇeˇsn´e absolvov´an´ı vˇsech cviˇcen´ı a test˚u sliboval certifik´at potvrzuj´ıc´ı znalost probran´ych t´emat. Pˇredmˇet byl vyuˇcov´an v angliˇctinˇe a k dispozici byly titulky v dalˇs´ıch 4 jazyc´ıch (ˇceˇstina mezi nimi nebyla). ˇCasov´a n´aroˇcnost kaˇzd´eho t´ydne byla odhadov´ana na 5–7 hodin.

Kaˇzd´y t´yden jsem si na postup v kurzu vyhradil jeden den. Kaˇzd´y t´yden byly z teorie k dispozici jeden aˇz dva pˇredn´aˇskov´e bloky, kter´e se skl´adaly z d´ılˇc´ıch 5–8 kr´atk´ych vide´ı. V n´aroˇcnˇejˇs´ıch t´ematech tato videa dosahovala nejv´ıce d´elky 20 minut, jinak pˇribliˇznˇe kolem 10 minut. V pr˚ubˇehu videa se vˇzdy jednou nebo dvakr´at s´am zastavil pr˚ubˇeh a m´ısto nˇej se objevila kontroln´ı ot´azka se ˇctyˇrmi moˇzn´ymi odpovˇed’mi. Vˇzdy se to t´ykalo t´ematu, o kter´em Andrew pr´avˇe mluvil, takˇze jsem si bud’ ovˇeˇril, ˇze mu rozum´ım, a nebo ˇze by se mi hodilo si kus pustit jeˇstˇe jednou. S t´ımto zp˚usobem pod´an´ı l´atky jsem se setkal poprv´e a velmi pozitivnˇe mˇe to pˇrekvapilo, protoˇze jsem l´atku ch´apal mnohem snadnˇeji. Dˇelal jsem si s´am pozn´amky na pap´ır a odpov´ıd´an´ı na kontroln´ı ot´azky mi tak vcelku nedˇelalo ˇz´adn´y probl´em.

Po shl´ednut´ı pˇredn´aˇsek pˇriˇsla prvn´ı praktick´a ˇc´ast, kter´a mˇela ovˇeˇrit teoretickou znalost probl´emu. Jednomu pˇredn´aˇskov´emu bloku odpov´ıdal jeden kr´atk´y test, kter´y se vˇzdy skl´adal z pˇeti ot´azek, kde kaˇzd´a mˇela ˇctyˇri moˇzn´e odpovˇedi. Nˇekter´e byly stavˇeny tak, ˇze byla spr´avn´a pouze jedna odpovˇed’, ale vˇetˇsina tak, ˇze jich mohlo, ale nemuselo b´yt v´ıc spr´avn´ych. To test trochu komplikovalo, ale o to l´epe to dok´azalo znalosti provˇeˇrit. Po odesl´an´ı jsem okamˇzitˇe vidˇel, co bylo spr´avnˇe a co ne. U vˇsech odpovˇed´ı nav´ıc leˇzelo vysvˇetlen´ı, proˇc je dan´a odpovˇed’ spr´avnˇe ˇci ˇspatnˇe. Kdyˇz jsem nemˇel pln´y poˇcet bod˚u, tak jsem test opakoval znovu. Poˇcet pokus˚u nebyl omezen a tak jsem v˚ubec nebyl ve stresu z toho, ˇze by se mi to nemuselo pov´est.

Jedin´ym omezen´ım byla moˇznost absolvov´an´ı dalˇs´ıho pokusu pouze kaˇzd´ych deset minut. K nahl´ednut´ı jsem pak vˇzdy mˇel vˇsechny pokusy, s kter´ymi se napˇr. daly porovn´avat odpovˇedi pro zlepˇsen´ı v´ysledku. Ot´azky i odpovˇedi se ale pomˇernˇe dost mˇenily. Takto jsem vˇzdy postupoval dokola do z´ısk´an´ı pln´eho poˇctu bod˚u. Pouze v jednom pˇr´ıpadˇe jsem potˇreboval ˇctyˇri pokusy, jinak se mi to daˇrilo napoprv´e nebo

(19)

napodruh´e.

Kdyˇz se mi povedlo absolvovat test, tak jsem pˇrikroˇcil k plnˇen´ı programovac´ıch cviˇcen´ı. V prvn´ım a posledn´ım t´ydnu tato cviˇcen´ı chybˇela. Kaˇzd´e cviˇcen´ı spoˇc´ıvalo ve staˇzen´ı zazipovan´eho archivu se zdrojov´ymi k´ody a instrukcemi v pdf souboru.

Programovalo se v programu Octave, kter´y je obdobou Matlabu. Hlavn´ım rozd´ılem je to, ˇze je zdarma. Kaˇzd´e cviˇcen´ı se skl´adalo ze 4–7 d´ılˇc´ıch ´ukol˚u. V bal´ıku soubor˚u bylo vˇzdy nˇekolik skript˚u. Cel´e to bylo postaven´e tak, aby se student zab´yval pouze j´adrem vˇeci. M´ym ´ukolem bylo doplnit urˇcit´y poˇcet skript˚u, kter´e se pak postupnˇe volaly v hlavn´ım pˇripraven´em programu. Bylo potˇreba dˇelat vˇse postupnˇe, protoˇze na sebe ´ukoly vˇzdy navazovaly a poˇc´ıtaly s t´ım, ˇze pˇredchoz´ı funkce jsou jiˇz hotov´e.

Hlavn´ı program vˇzdy porovn´aval hodnoty, kter´e maj´ı vych´azet s tˇemi, kter´e vracely m´e funkce. Pokud se liˇsily, tak jsem vˇedˇel, ˇze je nˇeco ˇspatnˇe a musel jsem program pˇredˇelat. Po vyhotoven´ı vˇsech ˇc´ast´ı se pˇr´ımo z konzole Octave na server Coursery odes´ılaly v´ysledky. Pˇresnˇeji se odes´ılaly moje naprogramovan´e skripty, pouˇstˇely se na tamnˇejˇs´ım serveru a porovn´avaly se v´ystupn´ı hodnoty. Pokud nastala chyba, byl jsem informov´an. Pokud ne, bylo mi poblahopˇr´ano a mˇel jsem pro jeden t´yden splnˇeno.

Pln´y poˇcet bod˚u za teoretick´e ´ulohy mohl b´yt vˇzdy 5 a z programovac´ıch ´uloh 100. Na kaˇzdou ´ulohu byly pˇribliˇznˇe dva t´ydny ˇcasu a pokud jsem to nestihl, tak jsem m´ısto pln´eho poˇctu mohl z´ıskat maxim´alnˇe 80 %. ˇZ´adn´e body by se nepˇripsaly pouze v pˇr´ıpadˇe nevyplnˇen´ı nebo odesl´an´ı po term´ınu ukonˇcen´ı cel´eho kurzu. 80 % byla tak´e hranice, nad kterou se ˇclovˇek musel dostat, aby z´ıskal certifik´at (m˚uj certifik´at k nahl´ednut´ı v pˇr´ıloze B).

Neodmyslitelnou ˇc´ast´ı cel´eho snaˇzen´ı byla konzultace v´ysledk˚u s ostatn´ımi stu- denty v diskuzn´ıch f´orech. Nesmˇely se tam publikovat ˇz´adn´e v´ysledky ani konkr´etn´ı postupy a ˇclenov´e t´ymu kurzu to peˇclivˇe kontrolovali a takov´e pˇr´ıspˇevky rychle mazali. Naopak ale tak´e odpov´ıdali a radili, jak d´al. Ke kaˇzd´emu programovac´ımu cviˇcen´ı vˇzdy vytvoˇrili Unit Testy s ovˇeˇren´ymi daty, na kter´ych jsem si mohl ovˇeˇrit spr´avnou funkˇcnost.

Celkovˇe mˇe cel´y svˇet kolem MOOC velmi nadchl, zejm´ena pak v oblasti stro- jov´eho uˇcen´ı. Kurz mˇe bavil od zaˇc´atku do konce a na uˇcen´ı nov´ych informac´ı jsem se vˇzdy velmi tˇeˇsil. Nemohu jinak neˇz tento kurz doporuˇcit i ostatn´ım nadˇsenc˚um.

Informace z kurzu jsou k dispozici i po jeho skonˇcen´ı a kdykoliv potˇrebuji sehnat informace o strojov´em uˇcen´ı, tak v´ım, kde hledat.

(20)

3 Metody supervizovan´ eho uˇ cen´ı

Strojov´e uˇcen´ı [2, lekce 1, s. 15], [3, s. 60–61] je oblast, kter´a se zab´yv´a algoritmy, jeˇz jsou schopn´e zlepˇsovat sv´e v´ysledky na z´akladˇe rostouc´ı zkuˇsenosti. Dvˇe nejvˇetˇs´ı ka- pitoly t´eto oblasti jsou supervizovan´e a nesupervizovan´e uˇcen´ı. Tato pr´ace se zab´yv´a pouze supervizovan´ym uˇcen´ım. Tyto algoritmy tvoˇr´ı model nad zn´am´ymi daty. Je- den vzorek dat se skl´ad´a z p´aru vstupn´ıho a v´ystupn´ıho objektu. To, ˇze data zn´ame, znamen´a ˇze pro kaˇzd´y vstupn´ı objekt je zn´am´a hodnota v´ystupn´ıho objektu. V ne- supervizovan´em uˇcen´ı o vzorku tuto informaci nem´ame. Vstupn´ı objekt b´yv´a vektor hodnot (atribut˚u) a v´ystupn´ı objekt pak hodnota. Pokud se jedn´a o data, na kter´a se aplikuje regresn´ı model, tak je v´ystupn´ı hodnota spojit´a. Pokud se aplikuje kla- sifikaˇcn´ı model, tak je v´ystupn´ı hodnota diskr´etn´ı (kategorick´a).

3.1 Popis pouˇ zit´ eho znaˇ cen´ı

Tr´enovac´ı set – data, na kter´ych se model uˇc´ı Testovac´ı set – data, na kter´ych se model testuje x – vstupn´ı vektor vzorku

y – v´ystupn´ı hodnota vzorku

m – poˇcet vzork˚u v tr´enovac´ım setu

n – d´elka vstupn´ıho vektoru (poˇcet atribut˚u) θ – vektor parametr˚u ve funkci hypot´ezy (x, y) – jeden vzorek

(x(i), y(i)) – i-t´y vzorek

a(j)i – aktivaˇcn´ı funkce neuronov´e s´ıtˇe jednotky i ve vrstvˇe j

Θ(j) – matice vah zajiˇst’uj´ıc´ı funkˇcn´ı mapov´an´ı z vrstvy j do vstvy j + 1

(21)

3.2 Line´ arn´ı regrese

Line´arn´ı regrese [18, s. 10], [3, s. 49–51] je statistick´a metoda, kter´a se snaˇz´ı naj´ıt z´avislost mezi vstupn´ı a v´ystupn´ı promˇennou. Na z´akladˇe zn´am´ych vzork˚u a vstupn´ı hodnoty nov´ych dat predikuje jejich v´ystupn´ı hodnotu. ´Uˇcelem je nalezen´ı pˇr´ımky, pro kterou plat´ı, ˇze souˇcet kvadr´at˚u rezidu´ı je minim´aln´ı. Funkce, kter´a pˇr´ımku reprezentuje se naz´yv´a hypot´eza (angl. hypothesis) [2, lekce 2, s. 4] N´azev vol´ım podle absolvovan´eho anglick´eho kurzu Machine learning. V ˇcesk´e literatuˇre se m´ısto pojmu hypot´eza pouˇz´ıv´a n´azev regresn´ı funkce. Je pops´ana n´asleduj´ıc´ım vzorcem:

hθ(x) = θ0+ θ1x. (1)

Hlavn´ı ot´azkou je nalezen´ı vˇsech parametr˚u θi. K tomu se vyuˇz´ıv´a hodnotov´a funkce (angl. cost function) [2, lekce 2, s. 8–21], kter´a je pops´ana n´asledovnˇe:

J (θ0, θ1) = 1 2m

m

X

i=1

(hθ(x(i)) − y(i))2. (2)

Tato funkce je konvexn´ı a m´a miskovit´y tvar (angl. bowl-shaped ). To tedy zna- men´a, ˇze pro jednu dvojici hodnot θ0 a θ1 je jej´ı hodnota minim´aln´ı. Tyto konkr´etn´ı parametry vytvoˇr´ı pˇr´ımku, kter´a minimalizuje souˇcet kvadr´at˚u odchylek. Jednou z moˇznost´ı minimalizov´an´ı J (θ0, θ1) je vyuˇzit´ı metody postupn´eho kles´an´ı (angl. gra- dient descent ) [2, lekce 2, s. 23–48]. Tato metoda postupnˇe mˇen´ı parametry θ0 a θ1 tak, ˇze sniˇzuje hodnotu J (θ0, θ1). Vyuˇz´ıv´a k tomu konstantu naz´yvanou m´ıra uˇcen´ı (angl. learning rate) a znaˇcenou α. Ta urˇcuje velikost kroku, kter´ym se tato metoda pˇribliˇzuje k minimu J (θ0, θ1). Je potˇreba inicializovat parametry θj na n´ahodnou hodnotu. Nejˇcastˇeji se oba parametry ale inicializuj´ı na 0. Dokud nebude v´ysledek konvergovat, bude se upravovat podle vzorce3:

opakovat dokud nekonverguje { θj := θj − α ∂

∂θj

J (θ0, θ1) (pro j = 1 a j = 0) }.

(3)

Existuje tak´e analytick´e ˇreˇsen´ı nalezen´ı parametr˚u θ [2, lekce 4, s. 23–28], kter´e

(22)

se naz´yv´a norm´aln´ı rovnice (angl. normal equation). V´yhodou je, ˇze nen´ı potˇreba nastavovat m´ıru uˇcen´ı α. Nev´yhodou m˚uˇze b´yt pouˇzitelnost pouze do urˇcit´e velikosti vstupn´ıho vektoru (poˇctu atribut˚u) – maxim´alnˇe n = 1000. Jak je vidˇet ve vzorci 4, v´ypoˇcet pˇri vˇetˇs´ım poˇctu atribut˚u m˚uˇze b´yt v´ypoˇcetnˇe n´aroˇcn´y kv˚uli hled´an´ı inverzn´ı matice po n´asoben´ı dvou matic.

θ = (XTX)−1XTy (4)

D˚uleˇzit´ym krokem je v´ybˇer m´ıry uˇcen´ı α tak, aby v´ysledek konvergoval. Pokud je hodnota pˇr´ıliˇs mal´a, tak m˚uˇze algoritmus trvat dlouho, ale o to bl´ıˇze k minimu se dostane. Pˇri zvolen´ı pˇr´ıliˇs vysok´e hodnoty se m˚uˇze st´at, ˇze algoritmus nebude v˚ubec konvergovat nebo dokonce divergovat. Po zjiˇstˇen´ı parametr˚u regresn´ı funkce lze jednoduˇse predikovat nov´e hodnoty dosazen´ım do funkce hypot´ezy (viz vzorec 1). Je tak moˇzn´e si jednoduˇse ovˇeˇrit ´uspˇeˇsnost modelu aplikac´ı na testovac´ım setu.

Nˇekter´a data se ale nechovaj´ı line´arnˇe. ˇReˇsen´ım je aplikace neline´arn´ı hypot´ezy, kter´a m˚uˇze b´yt exponenci´aln´ı nebo polynomi´aln´ı a m´ıt libovolnˇe vhodn´y stupeˇn.

Napˇr. kvadratick´a nebo druh´a odmocnina:

hθ(x) = θ0+ θ1x2, hθ(x) = θ0+ θ1

x. (5)

3.3 Logistick´ a regrese

Logistick´a regrese [18, s. 12] je velmi podobn´a line´arn´ı regresi. V´ystupn´ı hodnota vˇsak nen´ı spojit´a, ale diskr´etn´ı. M˚uˇze nab´yvat libovoln´eho mnoˇzstv´ı hodnot, ale nejˇcastˇeji se vyuˇz´ıvaj´ı hodnoty dvˇe. Negativn´ı (0) a pozitivn´ı (1) tˇr´ıda. Model logis- tick´e regrese urˇcuje pravdˇepodobnost, se kterou je moˇzn´e urˇcit, jestli vzorek patˇr´ı do pozitivn´ı tˇr´ıdy. Obor hodnot funkce hypot´ezy mus´ı b´yt v intervalu 0 <= hθ(x) <= 1 [2, lekce 6, s. 4]. Predikujeme, ˇze vzorek patˇr´ı do pozitivn´ı tˇr´ıdy, pokud hθ(x) >= 0.5.

Nem˚uˇze b´yt line´arn´ı, aby l´epe odr´aˇzela pravdˇepodobnostn´ı rozloˇzen´ı. Vyuˇz´ıv´a se proto tzv. sigmoid´aln´ı funkce [3, s. 52] (g(z) ve vzorci6). Hypot´eza [2, lekce 6, s. 6]

vypad´a n´asledovnˇe:

(23)

hθ(x) = g(θTx), kde g(z) = 1

1 + e−z.

(6)

Kdyby byla hodnotov´a funkce stejn´a jako v line´arn´ı regresi (viz vzorec 2), tak by za pouˇzit´ı sigmoid´aln´ı funkce v hypot´eze nebyla konvexn´ı a proto bychom v n´ı nedok´azali nal´ezt glob´aln´ı minimum. Celkov´a hodnotov´a funkce m´a tvar popsan´y ve vzorci 8. Je spojen´ım dvou logaritmick´ych funkc´ı (viz vzorec 7), kter´e jsou obˇe konvexn´ı.

Cost(hθ(x), y) =

− log hθ(x) if y = 1

− log 1 − hθ(x) if y = 0

(7)

J (θ) = 1 m

m

X

i=1

y(i)Cost(hθ(x(i)), y(i)))

= −1 m[

m

X

i=1

y(i)log hθ(x(i)) + (1 − y(i)) log (1 − hθ(x(i)))]

(8)

Nalezen´ı parametr˚u θ je stejnˇe jako v line´arn´ı regresi (kapitola3.2) moˇzn´e pomoc´ı metody postupn´eho kles´an´ı (viz vzorec 3). Algoritmus funguje totoˇznˇe. Rozd´ılem je pouze pouˇzit´ı funkce hypot´ezy pro logistickou regresi. Existuj´ı vˇsak jeˇstˇe sofistiko- vanˇejˇs´ı algoritmy pro neline´arn´ı optimalizaci. Jsou jimi napˇr. algoritmy BFGS nebo L-BFGS [2, lekce 6, s. 24]. Jsou mnohdy rychlejˇs´ı neˇz metoda postupn´eho kles´an´ı a nepotˇrebuj´ı ke sv´e funkci nastaven´ı hodnoty m´ıry uˇcen´ı α. Nev´yhodou m˚uˇze b´yt to, ˇze jsou celkovˇe sloˇzitˇejˇs´ı.

3.4 Neuronov´ e s´ıtˇ e

Dalˇs´ı supervizovanou metodou strojov´eho uˇcen´ı jsou neuronov´e s´ıtˇe [18, s. 13–14].

Na rozd´ıl od obou zm´ınˇen´ych regres´ı nevych´az´ı ze ˇz´adn´eho statistick´eho modelu.

Inspiruje se funkc´ı lidsk´eho mozku a cel´y proces se podob´a rozpozn´av´an´ı vzor˚u a minimalizaci chyby. Metoda se pouˇc´ı ze zkuˇsenosti z kaˇzd´e pˇrijat´e informace.

Neuronovou s´ıt’ tvoˇr´ı skupina vrstev, kde v kaˇzd´e je sada uzl˚u (viz obr´azek3.1).

Prvn´ı vrstva se naz´yv´a vstupn´ı a je totoˇzn´a se vstupn´ım vektorem x. Kaˇzd´y uzel zde odpov´ıd´a jednomu atributu a je jich tedy vˇzdy n. Posledn´ı vrstva (na obr´azku

(24)

3.1 tˇret´ı) se naz´yv´a v´ystupn´ı. M˚uˇze obsahovat libovoln´y poˇcet uzl˚u v z´avislosti na ˇreˇsen´em probl´emu. Pokud je v´ystupem neuronov´e s´ıtˇe pouze bin´arn´ı hodnota, tak je uzel jen jeden. Mezi vstupn´ı a v´ystupn´ı vrstvou m˚uˇze b´yt libovoln´y poˇcet tzv.

skryt´ych vrstev o libovoln´ych poˇctech uzl˚u. Tyto poˇcty z´avis´ı na sloˇzitosti probl´emu a jsou pˇredmˇetem experimentov´an´ı. Nejbˇeˇznˇejˇs´ı je vˇsak pouˇzit´ı jedn´e skryt´e vrstvy.

V pˇr´ıpadˇe pouˇzit´ı v´ıce vrstev se doporuˇcuje nastaven´ı stejn´eho poˇctu uzl˚u pro kaˇzdou z nich [2, lekce 9, s. 28]. Dobr´ym zvykem je vyuˇzit´ı tzv. nult´ych uzl˚u (viz uzly oznaˇcen´e +1 na obr´azku 3.1) do vˇsech vrstev, kromˇe t´e posledn´ı. Hodnoty tˇechto uzl˚u jsou vˇzdy rovny jedn´e.

Kaˇzd´y uzel v kaˇzd´e vrstvˇe kromˇe prvn´ı je definov´an tzv. aktivaˇcn´ı funkc´ı. Pokud by neuronov´a s´ıt’ nemˇela ˇz´adnou skrytou vrstvu, tak by se jednalo o logistickou regresi. Jako aktivaˇcn´ı funkce se totiˇz pouˇz´ıv´a sigmoid´aln´ı funkce (viz g(z) ve vzorci 6). Posledn´ı uzel je z´aroveˇn funkce hypot´ezy. Celkovˇe se tedy na neuronovou s´ıt’ d´a pohl´ıˇzet jako na skupinu vnoˇren´ych logistick´ych regres´ı.

K vypoˇcten´ı celkov´e hypot´ezy neuronov´e s´ıtˇe je zapotˇreb´ı o nˇeco v´ıc informac´ı neˇz v logistick´e regresi. Nam´ısto pouˇzit´ı vektoru θ se zde pouˇz´ıvaj´ı matice Θ(j) a je jich o jednu vrstvu m´enˇe neˇz je jejich celkov´y poˇcet. Je moˇzn´e je povaˇzovat za takov´e mezivrstvy. Rozmˇer kaˇzd´e z nich z´avis´ı na rozmˇerech sousedn´ıch vrstev. Pokud je sj poˇcet uzl˚u ve vrstvˇe j a sj+1poˇcet uzl˚u ve vrstvˇe j + 1, tak m´a matice Θ(j) rozmˇer sj+1× (sj+ 1) [2, lekce 8, s. 20] (bez vloˇzen´ych nult´ych uzl˚u).

Jak se ke koneˇcn´emu v´ysledku dojde by mˇelo b´yt patrn´e z pˇredpis˚u pro vˇsechny aktivaˇcn´ı funkce z n´asleduj´ıc´ıch vzorc˚u (konkr´etn´ı pˇredpis pro neuronovou s´ıt’

z obr´azku3.1):

a(2)1 = g(Θ(1)10x0+ Θ(1)11x1+ Θ(1)12x2+ Θ(1)13x3), a(2)2 = g(Θ(1)20x0+ Θ(1)21x1+ Θ(1)22x2+ Θ(1)23x3), a(2)3 = g(Θ(1)30x0+ Θ(1)31x1+ Θ(1)32x2+ Θ(1)33x3), hΘ(x) = a(3)1 = g(Θ(2)10a(2)0 + Θ(2)11a(2)1 + Θ(2)12a(2)2 + Θ(2)13a(2)3 ).

(9)

V´ypoˇcet hodnotov´e funkce je prakticky totoˇzn´y s hodnotovou funkc´ı logistick´e regrese (viz vzorec 8). V neuronov´e s´ıti je ale nutn´e poˇc´ıtat s t´ım, ˇze m˚uˇze m´ıt pr´avˇe K v´ystupn´ıch uzl˚u a je tedy tak nutn´e pˇres vˇsechny tyto v´ystupy iterovat.

Jednoduchou ´upravou a pˇreznaˇcen´ım z vektoru θ na matici Θ vznik´a tento vztah:

(25)

Obr´azek 3.1: Pˇr´ıklad neuronov´e s´ıtˇe se tˇremi vrstvami [2, lekce 8, s. 19].

J (Θ) = −1 m[

m

X

i=1 K

X

k=1

yk(i)log ((hΘ(x(i)))k) + (1 − yk(i)) log (1 − (hΘ(x(i)))k)]. (10)

V´ysledn´y z´amˇer s neuronovou s´ıt´ı je stejn´y jako s line´arn´ı i logistickou regres´ı.

Potˇrebujeme naj´ıt takov´e parametry Θ, pro kter´e bude J (Θ) minim´aln´ı. Postup je principi´alnˇe stejn´y jako u logistick´e regrese. Opˇet se vyuˇz´ıv´a metoda postupn´eho kles´an´ı, ke kter´e jsou potˇreba vˇsechny parci´aln´ı derivace

∂Θ(l)ijJ (Θ), kde l je ˇc´ıslo mezivrstvy (nebo vrstvy, ke kter´e se konkr´etn´ı matice parametr˚u Θ v´aˇze) a pˇr´ısluˇsn´e indexy i a j oznaˇcuj´ıc´ı jednotliv´e prvky t´eto matice [2, lekce 9, s. 5–13]. Pokroˇcilejˇs´ı optimalizaˇcn´ı metodou je spojen´ı algoritm˚u dopˇredn´e a zpˇetn´e propagace (angl.

forward and back propagation) [3, s. 167].

(26)

3.5 Support Vector Machines

Autory algoritmu Support Vector Machines (SVM) jsou Vapnik a Cortes, kteˇr´ı ho publikovali v roce 1995 [6]. ˇCesky se d´a volnˇe pˇreloˇzit jako metoda podp˚urn´ych vektor˚u. M˚uˇze b´yt vyuˇzit jak pro regresn´ı, tak i klasifikaˇcn´ı anal´yzu. Stejnˇe jako pˇredchoz´ı algoritmy m˚uˇze b´yt klasifikaˇcn´ı SVM pouˇzit pro rozliˇsov´an´ı v´ıce neˇz dvou tˇr´ıd. V pˇr´ıpadˇe klasifik´atoru, kter´y rozdˇeluje data pouze na dvˇe mnoˇziny, v´ystupn´ı objekt nab´yv´a hodnot y ∈ {−1, 1}.

SVM se pouˇz´ıv´a jak pro separaci line´arn´ıch, tak i neline´arn´ıch dat. V obou pˇr´ıpadech se snaˇz´ı naj´ıt takovou kˇrivku (v line´arn´ım pˇr´ıpadˇe pˇr´ımku), kter´a mnoˇziny rozdˇel´ı co nejvˇetˇs´ı mezerou (angl. margin). Takovou kˇrivku nelze vˇzdy nal´ezt.

Zab´yvat se ale budu pouze line´arn´ım pˇr´ıpadem. Vapnik a spol. v [6] pro tuto pˇr´ıleˇzitost zav´ad´ı pojem soft margin. Takov´a mezera st´ale rozdˇeluje obˇe mnoˇziny v co nejvˇetˇs´ım mˇeˇr´ıtku, ale dovoluje ˇspatnou klasifikaci nˇekter´ych vzork˚u (napˇr.

outlier˚u1).

M´ısto parametr˚u θ se v SVM pracuje s parametry w, b a hypot´eza vypad´a jako

hw,b(x) = g(wTx + b). (11)

Parametr b zde nahrazuje θ0 a parametr w nahrazuje zbyl´y vektor [θ1, . . . , θn] [13, s. 3]. K nalezen´ı parametru w lze dospˇet vyˇreˇsen´ım [13, s. 13]

w =

m

X

i=1

αiy(i)x(i), (12)

kde je ´ukolem nalezen´ı parametr˚u αi. Vˇetˇsina z tˇechto parametr˚u bude nulov´ych a ty, kter´e budou nenulov´e, urˇcuj´ı podp˚urn´e vektory (angl. support vectors). To jsou takov´e vzorky, kter´e jsou pobl´ıˇz pˇr´ımky rozdˇeluj´ıc´ı obˇe skupiny [13, s. 11]. Po nalezen´ı parametr˚u αi a w jiˇz jen staˇc´ı zjistit posledn´ı parametr b z rovnice

wTx + b = 0, (13)

kter´a oznaˇcuje body na pˇr´ımce rozdˇeluj´ıc´ı obˇe mnoˇziny bod˚u [13, s. 5]. V sa- motn´em algoritmu se vyskytuje velmi d˚uleˇzit´y parametr C, kter´y ovlivˇnuje chov´an´ı rohoduj´ıc´ı pˇr´ımky. Umoˇzˇnuje vyuˇzit´ı zm´ınˇen´eho soft marginu. Pˇri mal´ych hodnot´ach

(27)

v ˇr´adech desetin jednotek aˇz jednotek se chov´a tak, ˇze zanedb´av´a outliery. Jakmile se hodnota C zvyˇsuje, tak se snaˇz´ı naj´ıt mnoˇziny rozdˇelit co nejpˇresnˇeji, vˇcetnˇe outlier˚u.

V pˇr´ıpadˇe neline´arn´ıho SVM se d´a uplatnit tzv. kernel trick. Spoˇc´ıv´a v tom, ˇze se nevyuˇzij´ı p˚uvodn´ı vstupn´ı hodnoty x, ale zobraz´ı se do jin´eho prostoru (s vyso- kou dimenz´ı), d´ıky kter´emu se ulehˇc´ı v´ypoˇcetn´ı n´aroˇcnost. Zobrazen´ı prov´ad´ı tzv.

kernel funkce, kter´a m˚uˇze b´yt definov´ana r˚uznˇe. Pˇri nepouˇzit´ı kernelu v pˇr´ıpadˇe line´arn´ıho SVM se mluv´ı o line´arn´ım kernelu. Dalˇs´ımi pˇr´ıklady jsou napˇr. RBF nebo Gaussi´ansk´y kernel [13, s. 16].

(28)

4 V´ yukov´ y program pro experimentov´ an´ı s algoritmem SVM

Kdyˇz jsem se poprv´e setkal s dataminingem, tak jsme zkoumali r˚uzn´e pˇr´ıpadov´e studie. Jedn´ım z ´ukol˚u, kter´y n´as v kurzu ˇcekal, bylo vytvoˇren´ı vlastn´ı pˇr´ıpadov´e studie na n´ami zvolen´em datasetu. Vyuˇcovan´ym a doporuˇcovan´ym n´astrojem na vytvoˇren´ı studie byl program IBM SPSS Modeler. Ten obsahuje sadu n´astroj˚u pro celkovou anal´yzu dat vˇcetnˇe algoritm˚u strojov´eho uˇcen´ı. Kaˇzd´y takov´y algoritmus ale funguje jako black box1. Dˇelalo mi probl´em pochopit, jak´y algoritmus pouˇz´ıt a pˇredevˇs´ım s jak´ymi parametry. Z tohoto d˚uvodu jsme doˇsli k z´avˇeru, ˇze by bylo vhodn´e vytvoˇrit v´yukov´y program, kter´y by pomohl student˚um pochopit, jak tyto algoritmy funguj´ı. V r´amci t´eto pr´ace jsme zvolili implementaci line´arn´ıho SVM.

4.1 Pouˇ zit´ e technologie

Pˇri tvorbˇe v´yukov´eho programu se rozhodovalo mezi implementac´ı desktopov´e a webov´e aplikace. Nakonec byla kv˚uli snadn´e pˇrenositelnosti a dostupnosti i na mobiln´ıch platform´ach zvolena webov´a aplikace. Velmi obl´ıben´y jazyk pro progra- mov´an´ı webov´ych aplikac´ı je PHP. Ten ale nebyl shled´an jako vhodn´y pro imple- mentaci tˇechto v´ypoˇcetnˇe n´aroˇcnˇejˇs´ıch algoritm˚u. V kurzu Machine learning (viz 2.3) jsme pouˇz´ıvali program Octave a programovali jsme tam nˇekolik algoritm˚u strojov´eho uˇcen´ı vˇcetnˇe line´arn´ıho SVM. Byl proto zvolen jazyk, kter´y um´ı velmi dobˇre zpracov´avat vektory a matice a nav´ıc je schopn´y vytvoˇrit webovou aplikaci – Python. M´a k dispozici knihovny numpy a matplotlib, kter´e ho velmi pˇribliˇzuj´ı k funkˇcnosti matlabu. D´ıky v´ybornˇe popsan´ym tutori´al˚um webov´eho frameworku Django byl v´yvoj aplikace bezprobl´emov´y.

1Nen´ı zn´am´a jeho implementace ani zp˚usob, jak´ym funguje.

(29)

4.1.1 Python Django framework

Django framework [8] umoˇzˇnuje rychlou a snadnou tvorbu webov´ych aplikac´ı. Volnˇe se drˇz´ı n´avrhov´eho vzoru MVC2. Oproti ostatn´ım framework˚um nen´ı Django o nic ochuzen. Zaj´ımavost´ı navrch je napˇr. automatick´e vygenerov´an´ı administraˇcn´ıho rozhran´ı, kter´e se vytvoˇr´ı z definovan´ych model˚u. To ale nebylo v aplikaci nevyuˇzil, protoˇze nebylo potˇreba pracovat s datab´az´ı ani vytv´aˇret datov´e modely.

Z bezpeˇcnostn´ıho hlediska je framework tak´e velmi dobˇre vybaven. Souˇc´ast´ı je syst´em autentifikace uˇzivatel˚u. Jsou oˇsetˇreny nejbˇeˇznˇejˇs´ı bezpeˇcnostn´ı slabiny jako je SQL injection, cross-site scripting, cross-site request forgery nebo clickjacking. D´ıky tomu, ˇze je Django open source projekt, tak do nˇej existuje cel´a ˇrada jiˇz vytvoˇren´ych komponent, pom˚ucek a dalˇs´ıch vˇec´ı, kter´e dok´aˇz´ı urychlit a usnadnit v´yvoj webu.

Volba Djanga se uk´azala jako velmi vhodn´a pro dan´y probl´em a tak´e pˇrinesla znalost nov´e technologie.

4.1.2 NumPy

NumPy je knihovna jazyka Python [14]. NumPy se vyuˇz´ıv´a ve vˇedeck´e oblasti k so- fistikovanˇej´ım v´ypoˇct˚um. Souˇc´ast´ı jsou vˇsechny moˇzn´e matematick´e funkce, kter´e jsou potˇreba k poˇc´ıt´an´ı libovoln´ych probl´em˚u. Hlavn´ı v´ysadou je vˇsak podobnost s matlabem. Vˇetˇsina funkc´ı, kter´e jsou v matlabu, jsou i v NumPy se stejn´ymi n´azvy. Hlavn´ı v´yhodou je zpracov´an´ı N–rozmˇern´ych pol´ı, kter´e se velmi jednoduˇse pouˇz´ıv´a. Pro vektory i matice jsou implementov´any vˇsechny z´akladn´ı matematick´e operace. Stejnˇe jako v matlabu zde funguje maticov´e n´asoben´ı i n´asoben´ı po prvc´ıch (i ostatn´ı operace jako sˇc´ıt´an´ı apod.). Knihovna tak´e dovoluje vyuˇzit´ı zdrojov´eho k´odu v jazyce C/C++ nebo Fortran. Nakonec nechyb´ı ani dalˇs´ı n´astroje z line´arn´ı algebry, Fourierova transformace nebo pr´ace s pseudon´ahodn´ymi ˇc´ısly.

4.1.3 Matplotlib

Dalˇs´ı pouˇzitou knihovnou je Matplotlib [11]. Je to siln´y n´astroj, kter´y slouˇz´ı k vy- kreslov´an´ı 2D graf˚u. Jej´ı s´ıla a obl´ıbenost spoˇc´ıv´a v tom, ˇze obsahuje n´astroj pyplot, kter´y m´a syntax velmi podobn´y matlabu. Uˇzivatel m´a moˇznost nastaven´ı veˇsker´ych vykreslovan´ych informac´ı. Jako datov´e vstupy pro grafy je moˇzn´e vyuˇz´ıvat i objekty

2Model View Controller je architektura, kter´a rozdˇeluje aplikaci na tˇri ˇasti – data (model), zobrazen´ı pomoc´ı ˇsablon (view) a propojovac´ı vrstvu (controller).

(30)

pol´ı z knihovny NumPy 4.1.2. Grafy lze exportovat do soubor˚u, zobrazovat skrze konzoli a tak´e odes´ılat ve spr´avn´em form´atu prohl´ıˇzeˇci. D´ıky tomu se d´a zobrazen´ı vypoˇcten´ych graf˚u implementovat do webov´e aplikace. Napˇr. vyuˇzit´ım zmiˇnovan´eho Django frameworku4.1.1. Export je moˇzn´y do rastrov´ych, ale i vektorov´ych form´at˚u (napˇr. SVG). Pouˇzit´ı je velmi snadn´e a ovl´ad´an´ı z´akladn´ıch funkc´ı je t´emˇeˇr totoˇzn´e s matlabem.

4.2 Struktura aplikace

Cel´a aplikace respektuje rozloˇzen´ı sloˇzek a soubor˚u vych´azej´ıc´ı z Django frameworku:

• project – koˇrenov´y adres´aˇr s n´azvem aplikace, – project – adres´aˇr s nastaven´ım cel´eho projektu,

– static – adres´aˇr se statick´ymi soubory (obr´azky, CSS3, JS4), – svm – adres´aˇr s v´yukov´ym programem SVM,

∗ datasets – adres´aˇr s datasety,

∗ models – adres´aˇr pro cachov´an´ı model˚u,

∗ templates – adres´aˇr pro ˇsablony aplikace SVM,

∗ templatetags – adres´aˇr pro pomocn´e filtery v ˇsablon´ach,

∗ svm train.py – soubor s tˇr´ıdami pro zpracov´an´ı SVM, – templates – adres´aˇr se ˇsablonami pro cel´y projekt,

– manage.py – soubor, kter´y obsahuje uˇziteˇcn´e programy pro obsluhu Django projektu.

V adres´aˇri s nastaven´ım cel´eho projektu jsou tˇri velmi d˚uleˇzit´e soubory – settings.py, urls.py a views.py. V prvn´ım zm´ınˇen´em doch´az´ı k registraci aplikac´ı pouˇz´ıvan´ych v projektu, nastaven´ı ˇcasov´eho p´asma, datab´aze apod. V urls.py se na- stavuje glob´aln´ı routov´an´ı5 a v tˇret´ım se ˇreˇs´ı pˇred´av´an´ı parametr˚u ˇsablon´am z jed- notliv´ych pohled˚u.

3Kask´adov´e styly nastavuj´ıc´ı vzhled str´anky.

4Soubory skriptovac´ıho jazyka JavaScript.

5Podoba URL odkazu str´anek.

(31)

Za zm´ınku z koˇrenov´eho adres´aˇre stoj´ı jeˇstˇe soubor manage.py. Byl vyuˇz´ıv´an zejm´ena pro spouˇstˇen´ı webov´eho serveru, na kter´em aplikace bˇeˇzela. Jedn´a se o jed- noduch´y server, kter´y je souˇc´ast´ı Django instalace. Tv˚urci Djanga ale pro nasazen´ı do produkce doporuˇcuj´ı vyuˇzit´ı lepˇs´ıch server˚u jako je napˇr. Apache. Druhou d˚uleˇzitou souˇc´ast´ı souboru je tzv. Django shell neboli konzole. D´ıky n´ı bylo dosaˇzeno jed- noduch´eho testov´an´ı aplikace i z pˇr´ıkazov´e ˇr´adky bez potˇreby zap´ın´an´ı webov´eho serveru.

Konkr´etn´ı aplikace je v adres´aˇri svm. Vˇsechny v´ypoˇcetn´ı prvky pouˇz´ıvan´e k reprezentaci dat, vytv´aˇren´ı model˚u SVM a jejich testov´an´ı jsou v souboru svm train.py. Existuj´ı zde i dalˇs´ı soubory, kter´e nejsou v adres´aˇrov´e struktuˇre uve- deny. N´azvy maj´ı stejn´e jako v adres´aˇri s nastaven´ım cel´eho projektu a doplˇnuj´ı jeho pravidla pro svoji konkr´etn´ı potˇrebu. Datasety, nad kter´ymi algoritmus pracuje, jsou ve sloˇzce datasets. Protoˇze tr´enov´an´ı model˚u za pouˇzit´ı urˇcit´ych parametr˚u m˚uˇze b´yt ˇcasovˇe n´aroˇcnˇejˇs´ı, existuje sloˇzka models, do kter´e se natr´enovan´e modely ukl´adaj´ı.

4.3 Popis uˇ zivatelsk´ eho prostˇ red´ı aplikace

Aplikace byla rozdˇelena do tˇrech z´akladn´ıch sekc´ı. Tou prvn´ı je domovsk´a str´anka, na kter´e jsou pouze statick´e informace o cel´em projektu, kter´y je vˇenov´an stro- jov´emu uˇcen´ı. Do budoucna se pl´anuje implementace dalˇs´ıch algoritm˚u z t´eto ob- lasti, o kter´ych uˇz bylo ps´ano dˇr´ıve jako napˇr. line´arn´ı a logistickou regresi nebo neuronov´e s´ıtˇe. Tato pr´ace se zamˇeˇruje pouze na line´arn´ı SVM. Cel´a aplikace je vytvoˇrena tak, aby byla velmi jednoduˇse pochopiteln´a a ovladateln´a. V horn´ım menu jsou odkazy na hlavn´ı str´anku, materi´aly k algoritm˚um a sekce pro samot- nou demonstraci a experimentov´an´ı s algoritmy. V sekci s materi´aly jsou um´ıstˇeny odkazy na literaturu, z kter´e se v t´eto pr´aci ˇcerp´a. Ve zm´ınˇen´e literatuˇre je detailnˇe vysvˇetlen´a funkˇcnost implementovan´eho algoritmu. D´ale tak´e seznam pouˇz´ıvan´ych pojm˚u a popis aplikace. Konkr´etnˇe popis jednotliv´ych dataset˚u, vstupn´ıch para- metr˚u a zp˚usobu vyhodnocen´ı natr´enovan´eho modelu. Nechyb´ı tam ani odkaz na kurz Machine Learning na port´ale Coursera, kter´y by mˇel vyzkouˇset kaˇzd´y, kdo se zaj´ım´a o tuto problematiku.

Tou hlavn´ı ˇc´ast´ı je ale sekce algoritmy. Pˇri prvn´ım pˇr´ıchodu se uˇzivateli zob- raz´ı jednoduch´y formul´aˇr na lev´e stranˇe obrazovky, kter´ym se nastavuj´ı parametry k tr´enov´an´ı modelu (viz obr´azek4.1). Pro demonstraci jsou pro uˇzivatele pˇripraveny tˇri datasety (viz kapitola 4.4), na kter´ych m˚uˇze b´yt algoritmus natr´enov´an. Po

(32)

vybr´an´ı datasetu si uˇzivatel m˚uˇze data prohl´ednout a nˇeco o nich na prvn´ı pohled zjistit. K dispozici jsou dvˇe moˇznosti – zobrazen´ı dat v tabulce a grafick´e zobrazen´ı dat. V tabulkov´em zobrazen´ı se lze tak´e napˇr. dozvˇedˇet, kolik vzork˚u dan´y data- set obsahuje, kolik z nich je negativn´ıch a kolik pozitivn´ıch. V grafick´em zobrazen´ı uˇzivatel vid´ı vˇsechny vozrku v grafu. Pozitivn´ı jsou oznaˇceny ˇcern´ym kˇr´ıˇzkem a ne- gativn´ı ˇzlut´ym koleˇckem. V pˇr´ıpadˇe, ˇze je k datasetu k dispozici i tzv. testovac´ı (validaˇcn´ı) dataset, uvid´ı je oba.

Obr´azek 4.1: Screenshot formul´aˇre pro natr´enov´an´ı modelu SVM.

V pouˇzit´e implementaci algoritmu je mimo datasetu potˇreba zadat dalˇs´ı tˇri pa- rametry SVM. Jsou jimi parametr C, Epsilon a Maxim´aln´ı poˇcet pr˚uchod˚u. O tom, co kter´y parametr znamen´a se p´ıˇse v kapitole4.5. Pˇred odesl´an´ım m´a uˇzivatel jeˇstˇe moˇznost nastaven´ı cachov´an´ı model˚u. Pokud je pol´ıˇcko zakˇskrtl´e, tak se natr´enovan´y model uloˇz´ı do souboru. Pokud uˇz byl model se stejn´ymi parametry natr´enov´an, tak se ze souboru naˇcte. V nezaˇskrtl´em pˇr´ıpadˇe se model vˇzdy tr´enuje znovu a odnikud se nenaˇc´ıt´a.

K ´uspˇeˇsn´emu odesl´an´ı formul´aˇre a zah´ajen´ı tr´enov´an´ı modelu je potˇreba spr´avnˇe vyplnit vˇsechny ´udaje. Pokud nˇekter´y z ´udaj˚u chyb´ı, tak je uˇzivatel mus´ı doplnit. Po odesl´an´ı vyplnˇen´eho formul´aˇre se natr´enuje model a zobraz´ı se v´ysledky. Hlavn´ım v´ysledkem je vykreslen´ı grafu, v kter´em jsou zakresleny vˇsechny vzorky, pˇr´ımka (rozhoduj´ıc´ı linie) a oznaˇcen´e podp˚urn´e vektory. Konkr´etn´ı v´ysledek je vidˇet na obr´azku4.2. Podp˚urn´e vektory jsou ohraniˇceny ˇcerven´ymi ˇctvereˇcky. To jsou takov´e

(33)

vzorky, kter´e maj´ı nenulov´e koeficienty α (viz 3.5).

Obr´azek 4.2: Screenshot v´ysledku natr´enovan´eho modelu SVM podle parametr˚u z obr´azku4.1.

Druh´ym v´ysledkem je jednoduch´a tabulka, kter´a procentu´alnˇe hodnot´ı ´uspˇeˇsnost modelu na testovac´ıch datech. Ta se poˇc´ıt´a z pod´ılu poˇctu vˇsech spr´avnˇe prediko- van´ych vzork˚u a poˇctu vˇsech vzork˚u v datasetu. Zobrazuje tak´e poˇcet podp˚urn´ych vektor˚u (zkratka SV ), celkov´y poˇcet vzork˚u v datasetu a poˇcty vzork˚u, v kter´ych se algoritmus zm´ylil nebo byl naopak ´uspˇeˇsn´y. To jsou ˇctyˇri ˇc´ısla urˇcuj´ıc´ı faleˇsnˇe pozitivn´ı (angl. false positive), faleˇsnˇe negativn´ı (angl. false negative), pravdivˇe po- zitivn´ı (angl. true positive) a pravdivˇe negativn´ı (angl. true negative) vzorky (viz tabulku4.1).

(34)

Tabulka 4.1: V´ysledky testov´an´ı modelu podle parametr˚u z obr´azku 4.1.

Nepravdiv´e Pravdiv´e

Pozitivn´ı 0 20

Negativn´ı 1 30

Celkov´y poˇcet vzork˚u 51 Uspˇ´ eˇsnost 98.039 %

Poˇcet SV 13

4.4 Pouˇ zit´ e datasety

Podle [13] byly pˇripraveny tˇri datasety, na kter´ych si uˇzivatel m˚uˇze vyzkouˇset funkˇcnost algoritmu. Kaˇzd´y z dataset˚u m´a r˚uzn´e vlastnosti, kter´e jsou pops´any v n´asleduj´ıc´ıch kapitol´ach. V tabulce4.2 je zaznamen´ano, kolik a jak´ych vzork˚u jed- notliv´e datasety obsahuj´ı. Posledn´ı dataset v tabulce je oznaˇcen slovem val. To znaˇc´ı, ˇze se jedn´a o validaˇcn´ı dataset, kter´y se pouˇz´ıv´a k testov´an´ı modelu natr´enovan´eho nad datasetem oznaˇcen´ym stejn´ym ˇc´ıslem.

Tabulka 4.2: Porovn´an´ı informac´ı o jednotliv´ych datasetech.

Dataset Poˇcet vzork˚u

Poˇcet atribut˚u

Poˇcet y=1 Poˇcet y=0 Line´arnˇe separovateln´y

4.4.1 51 3 21 30 ano

4.4.2 863 3 480 383 ne

4.4.3 211 3 106 105 ˇc´asteˇcnˇe

4.4.3 val 200 3 87 113 –

4.4.1 Line´ arnˇ e separovateln´ a data

Na tomto datasetu (viz obr´azek4.3) je jasnˇe vidˇet, ˇze existuje pˇr´ımka, kter´a dok´aˇze line´arnˇe rozdˇelit prvky do dvou skupin. Na tomto pˇr´ıkladu algoritmus line´arn´ı SVM funguje nejl´epe. Hlavn´ı zaj´ımavost´ı je vˇsak to, ˇze je zde pˇribliˇznˇe na souˇradnic´ıch (x0, x1) = (0.1, 4.1) outlier. Oˇcividnˇe je bl´ıˇze k druh´e skupinˇe, neˇz ke kter´e ve skuteˇcnosti patˇr´ı. Uˇzivatel si na tomto datasetu m˚uˇze jednoduˇse vyzkouˇset d˚uleˇzitost jednotliv´ych parametr˚u a to, jak je potˇreba je nastavit, aby napˇr. outlier obsahovali

(35)

Obr´azek 4.3: Line´arnˇe separovateln´y dataset.

4.4.2 Line´ arnˇ e neseparovateln´ a data

Tento dataset (viz obr.4.4) nen´ı vhodn´y ke zpracov´an´ı line´arn´ım SVM. Zaˇclenil do v´ybˇeru byl proto, aby si to uˇzivatel uvˇedomil a napˇr. navrhl moˇzn´e ˇreˇsen´ı. T´ım by v tomto pˇr´ıpadˇe bylo pouˇzit´ı SVM s jin´ym kernelem (napˇr. RBF), kter´y by dok´azal naj´ıt neline´arn´ı kˇrivku, kter´a data dok´aˇze rozdˇelit. Linie, kterou by kˇrivka mˇela v´ezt je na prvn´ı pohled tak´e zˇrejm´a jako u pˇredchoz´ıho datasetu. Uˇzivateli ale nic nebr´an´ı ve vyzkouˇsen´ı natr´enov´an´ı line´arn´ıho modelu a vykreslen´ı separuj´ıc´ı kˇrivky.

4.4.3 Line´ arnˇ e ˇ c´ asteˇ cnˇ e separovateln´ a data s validaˇ cn´ım data- setem

Posledn´ı dataset (viz obr.4.5vlevo) se oproti dvˇema pˇredchoz´ım liˇs´ı zejm´ena dvˇema aspekty. T´ım prvn´ım je, ˇze sice neexistuje pˇr´ımka, kter´a by obˇe skupiny bod˚u dok´azala perfektnˇe rozdˇelit, ale d´a se naj´ıt takov´a, kter´a dataset rozdˇeluje s velmi vysokou ´uspˇeˇsnost´ı. Nen´ı tedy probl´em na tento dataset vyuˇz´ıt line´arn´ı SVM. Jin´y kernel by pravdˇepodobnˇe ´uspˇeˇsnost modelu dok´azal jeˇstˇe zv´yˇsit, ale ne tak v´yraznˇe.

Druh´ym aspektem je, ˇze testov´an´ı modelu neprob´ıh´a na stejn´ych natr´enovan´ych da- tech, ale na zvl´aˇstn´ım validaˇcn´ım datasetu (viz obr. 4.5 vpravo). To je v praxi tak´e preferovan´y zp˚usob. Pokud k dispozici takov´y dataset nen´ı, tak se data bud’ testuj´ı na tr´enovac´ım setu a nebo se tr´enovac´ı dataset v urˇcit´em pomˇeru rozdˇel´ı.

(36)

Obr´azek 4.4: Neline´arnˇe separovateln´y dataset nevhodn´y pro zpracov´an´ı line´arn´ım SVM.

4.5 Implementace SVM

Pro lepˇs´ı pochopen´ı algoritmu je uvedeno grafick´e sch´ema (viz obr´azek4.6) pr˚ubˇehu cel´eho algoritmu. Cel´y pr˚ubˇeh je rozdˇelen do tˇr´ı hlavn´ıch ˇc´ast´ı. Tou prvn´ı je naˇcten´ı parametr˚u z formul´aˇre, kter´e zad´a uˇzivatel. V druh´e ˇc´asti pˇrich´az´ı na ˇradu tr´enov´an´ı modelu na z´akladˇe pˇripraven´ych parametr˚u. Po ´uspˇeˇsn´em vytvoˇren´ı modelu se ve tˇret´ı ˇc´asti pr˚ubˇehu otestuje jeho kvalita. Koneˇcn´e v´ysledky jsou uˇzivateli zobra- zeny ve formˇe vykreslen´ı rozhoduj´ıc´ı linie a tabulky spr´avnˇe a ˇspatnˇe predikovan´ych vzork˚u (viz 4.3).

Vedle grafick´eho sch´ematu je nav´ıc uveden diagram tˇr´ıd, kter´y popisuje struk- turu tˇr´ıd v aplikaci. Jak je vidˇet na obr´azku 4.7, tak je hlavn´ı tˇr´ıdou SvmTrain.

Ta zajiˇst’uje naˇcten´ı dat ze souboru a vytvoˇren´ı modelu. Data se naˇc´ıtaj´ı pomoc´ı tˇr´ıdy LoadDataFromTxt a samotn´y SVM model je reprezentov´an tˇr´ıdou SvmModel.

Tato tˇr´ıda vyuˇz´ıv´a libovolnou tˇr´ıdu, kter´a dˇed´ı od abstraktn´ı tˇr´ıdy KernelFunction.

Ta zajiˇst’uje zp˚usob v´ypoˇctu kernel matice, kterou algoritmus vyuˇz´ıv´a. Protoˇze se v t´eto pr´aci vyuˇz´ıv´a pouze line´arn´ı SVM, tak byla pro tento ´uˇcel vytvoˇrena tˇr´ıda LinearKernelFunction, kter´a nem´a oproti abstraktn´ı tˇr´ıdˇe ˇz´adn´y parametr nav´ıc a pouze implementuje z´akladn´ı metodu compute kernel(). Na diagramu je zn´azornˇena moˇznost pˇr´ıpadn´e rozˇs´ıˇritelnosti o dalˇs´ı kernely. Posledn´ı tˇr´ıdou, kter´a v diagramu disponuje je SvmPredict. Ta vyuˇz´ıv´a instanci tˇr´ıdy SvmModel k otes-

(37)

Obr´azek 4.5: Line´arnˇe ˇc´asteˇcnˇe separovateln´y dataset (vlevo) a validaˇcn´ı dataset (vpravo), kter´y se vyuˇz´ıv´a k testov´an´ı modelu.

Obr´azek 4.6: Grafick´y popis pr˚ubˇehu algoritmu SVM.

tov´an´ı ´uspˇeˇsnosti modelu.

4.5.1 Form´ at dat

Datasety jsou uloˇzeny v souborech ve form´atu .txt. Kaˇzd´y ˇr´adek odpov´ıd´a jed- nomu vzorku. Vˇsechny atributy jsou oddˇeleny ˇc´arkou. Jako desetinn´a ˇc´arka se vyuˇz´ıv´a teˇcka. Protoˇze se pracuje pouze s datasety, kter´e se daj´ı zobrazit ve dvoj- rozmˇern´em prostoru, tak obsahuj´ı pouze dva atributy. Tˇret´ım atributem je vˇzdy c´ılov´a promˇenn´a, kter´a nab´yv´a pouze hodnot 0 nebo 1.

Pro naˇcten´ı dat se vyuˇz´ıv´a tˇr´ıda LoadDataFromTxt. Pˇri inicializaci se j´ı poskytne parametr s n´azvem souboru, kter´y m´a naˇc´ıst. Ze souboru se pak n´aslednˇe vytvoˇr´ı dvˇe promˇenn´e – X a y. Matice reprezentuj´ıc´ı atributy jednotliv´ych vzork˚u, resp.

c´ılov´a promˇenn´a urˇcuj´ıc´ı tˇr´ıdu, do kter´e vzorek spad´a. Data se ukl´adaj´ı jako datov´y

(38)

Obr´azek 4.7: Diagram tˇr´ıd m´e implementace algoritmu SVM.

typ numpy.ndarray, kter´y dok´aˇze reprezentovat n-rozmˇern´e pole.

4.5.2 Nastaven´ı modelu a popis vstupn´ıch parametr˚ u algoritmu

Nastavov´an´ı parametr˚u modelu prob´ıh´a ve formul´aˇri popisovan´em v kapitole 4.3.

Kromˇe v´ybˇeru datasetu a moˇzn´e volby cachov´an´ı je k natr´enov´an´ı modelu potˇreba nastavit tˇri z´akladn´ı parametry.

Hlavn´ım parametrem algoritmu je C. Ten dok´aˇze model nastavit tak, aby v´ıce ˇci m´enˇe reflektoval postaven´ı outlier˚u v datasetu. Pˇri pouˇzit´ı n´ızk´ych hodnot v ˇr´adu jednotek algoritmus outliery ignoruje. ˇC´ım vyˇsˇs´ı je pak jeho hodnota, t´ım v´ıce se snaˇz´ı nal´ezt pˇr´ımku, kter´a by dok´azala dataset rozdˇelit co nejl´epe. S niˇzˇs´ı hodnotou tedy algoritmus vyuˇz´ıv´a tzv. soft margin (viz kapitolu 3.5). Pokud je ale hodnota pˇr´ıliˇs n´ızk´a (ˇr´adovˇe setiny aˇz tis´ıciny jednotek), tak zaˇc´ın´a b´yt algoritmus nestabiln´ı a mnohdy je v´ysledn´a pˇr´ımka nesmysln´a. Pˇri vyˇsˇs´ıch hodnot´ach (v ˇr´adek stovek aˇz tis´ıc˚u) naopak uˇz nejsou rozd´ıly tak znateln´e a z´aleˇz´ı zde pˇredevˇs´ım na poˇc´ateˇcn´ı ini- cializaci algoritmu (viz kapitolu4.5.3). Uˇzivatel m´a v programu moˇznost vyzkouˇset C v rozsahu 10−3 aˇz 104.

Druh´ym zad´avan´ym parametrem je epsilon, kter´y je na diagramu tˇr´ıd i v sa-

(39)

motn´em k´odu nazv´an float tolerance. Uˇzivatel ho m˚uˇze zadat v rozsahu 10−3aˇz 10−2. Parametr se vyuˇz´ıv´a pro porovn´av´an´ı α parametr˚u v algoritmu kolem nuly a C. Pa- rametr ovlivˇnuje pˇredevˇs´ım pˇresnost zasazen´ı pˇr´ımky (kv˚uli porovn´av´an´ı). ˇC´ım je menˇs´ı, t´ım je v´ysledek pˇresnˇejˇs´ı. Druhou str´ankou vˇeci je ale vˇetˇs´ı ˇcasov´a n´aroˇcnost, kdy mus´ı algoritmus podniknout v´ıc krok˚u k optimalizaci pˇri zadan´e toleranci.

Posledn´ım parametrem je maxim´aln´ı poˇcet pr˚uchod˚u, v k´odu nazvan´y jako max passes. Uˇzivatel m´a moˇznost zadat hodnotu z rozsahu 1–50. Je to ˇc´ıslo, kter´e ovlivˇnuje potˇrebn´y poˇcet pr˚uchod˚u algoritmu, neˇz bude moct skonˇcit a vy- hodnotit v´ysledky. Zde plat´ı, ˇze pˇri vˇetˇs´ım poˇctu pr˚uchod˚u m´a algoritmus vˇetˇs´ı pravdˇepodobnost na lepˇs´ı v´ysledek, ale je v´ypoˇcetnˇe n´aroˇcnˇejˇs´ı.

4.5.3 Tr´ enov´ an´ı modelu s vyuˇ zit´ım algoritmu SMO

Kdyˇz s SVM poprv´e pˇriˇsel Vapnik [6], vyuˇz´ıval k v´ypoˇct˚um algoritmus PCG. V roce 1999 pˇriˇsel s nov´ym algoritmem John Platt [17]. Nazval ho SMO (angl. Sequential minimal optimization) a nahradil j´ım vyuˇzit´ı PCG. Tak´e bylo rozhodnuto zvolen´ı t´eto implementace zejm´ena d´ıky zkuˇsenosti z kurzu strojov´eho uˇcen´ı [2]. SMO je oproti PCG v´yraznˇe rychlejˇs´ı d´ıky tomu, ˇze vˇzdy vz´ajemnˇe optimalizuje pouze dvo- jice vzork˚u.

Tr´enov´an´ı modelu zajiˇst’uje tˇr´ıda SvmTrain. Pr˚ubˇeh cel´eho algoritmu je vidˇet na v´yvojov´em diagramu na obr´azku 4.8. Hlavn´ı vnˇejˇs´ı cyklus ovlivˇnuje promˇenn´a maxim´aln´ı poˇcet pr˚uchod˚u, kterou zad´av´a uˇzivatel. Dokud je poˇcet pr˚uchod˚u menˇs´ı, tak se n´asleduj´ıc´ı optimalizace opakuje.

Vnitˇrn´ı cyklus bˇeˇz´ı pˇres vˇsechny vzorky v datasetu v n´ahodn´em poˇrad´ı. SMO vˇzdy optimalizuje dvojici vzork˚u. Konkr´etnˇe doch´az´ı k optimalizaci podp˚urn´ych vektor˚u – parametr˚u α (viz kapitolu 3.5). Pro kaˇzd´y vzorek se udrˇzuje tzv. chy- bov´a cache v promˇenn´e E. Je to hodnota, kter´a je rozd´ılem hypot´ezy (viz vzorec 11) a hodnoty c´ılov´eho atributu y. Po uloˇzen´ı nov´e hodnoty do chybov´e cache se kontroluje, jestli je aktu´aln´ı prvek vhodn´y k optimalizaci nebo ne. Aby byl vybran´y vzorek vhodn´y, tak mus´ı splˇnovat n´asleduj´ıc´ı podm´ınku:

( y [ i ] ∗ E [ i ] < − f l o a t t o l e r a n c e and a l p h a [ i ] < C) o r ( y [ i ] ∗ E [ i ] > f l o a t t o l e r a n c e and a l p h a [ i ] > 0 )

Situaci, kdy tato podm´ınka nen´ı splnˇena je pops´ana aˇz na konci pr˚ubˇehu. Kdyˇz je splnˇena, tak doch´az´ı k v´ybˇeru druh´eho vzorku pro optimalizaci. Je zde vyuˇzit

(40)

Obr´azek 4.8: V´yvojov´y diagram tr´enov´an´ı SVM modelu s vyuˇzit´ım algoritmu SMO.

heuristick´y pˇredpoklad, kter´y ve sv´em algoritmu popisuje John Platt [17]. Ve verzi SVM programovan´e v r´amci kurzu Machine Learning, je druh´y vzorek automaticky

References

Related documents

Není u tohoto dílu větší odpor vzduchu oproti hladkému

Hodnocen´ı navrhovan´ e vedouc´ım diplomov´ e pr´ ace: velmi dobře Hodnocen´ı navrhovan´ e oponentem diplomov´ e pr´ ace: výborně minus.. Pr˚ ubˇ eh obhajoby diplomov´

Hodnocen´ı navrhovan´ e vedouc´ım diplomov´ e pr´ ace: výborně Hodnocen´ı navrhovan´ e oponentem diplomov´ e pr´ ace: výborně.. Pr˚ ubˇ eh obhajoby diplomov´ e

Martin Bílek, Ph.D.: Jaké maximální otáčky byly použity pro pohon vřetene?. -Z- Jaké napětí jste používal

Předseda komise (doc. Tomáš Kasper, Ph.D.) pověřil vedením komise členku komise (PhDr. Magda Nišponská, Ph.D.). Klasifikace:

Zkoumanému podniku navrhujete změnu organizačního schématu společnosti na agilnější variantu v podobě společnosti orientované na projekty?. Myslíte, že tato změna bude

Hodnocen´ı navrhovan´ e vedouc´ım diplomov´ e pr´ ace: výborně Hodnocen´ı navrhovan´ e oponentem diplomov´ e pr´ ace: výborně.. Pr˚ ubˇ eh obhajoby diplomov´ e

Bezprostˇrednˇ e po v´ ybˇ eru z´ akladov´ eho frameworku bylo nutn´ e vytvoˇrit koncept cel´ e architektury nov´ ych frameworkov´ ych souˇ c´ ast´ı, kter´ e umoˇ zn´ı