Machine Learning–úvod

Strojové učení a prediktivní analýza jsou pojmy, které mohou na nezasvěcené působit vpravdě magicky, přitom to není nic víc než spousta šikovné matematiky aplikovaná na ještě větší spoustu dat. Microsoft loni rozšířil svou platformu o službu Machine Learning, díky níž je předvídání budoucnosti (a hlavně tvorba infrastruktury, která to umožní) zase o něco jednodušší. Tento článek našeho hosta je praktickým úvodem do technologie a určitě není poslední, který pro vás chystáme.

Martin

Autorem článku je Roman Nedzelský , Microsoft MCT, MCSE, MCSA, MCITP, MCP, PMI CAPM, VMWARE VCA, SCRUM MASTER


Machine Learning je pojem, který se poprvé objevil v roce 1959, kdy ho Arthur Samuel definoval jako “vědecký obor, který dává počítačům vlastnost se učit bez výslovného programování”. Obecně je toto téma asociováno s algoritmy a technikami, které svým způsobem dovolují samo-učení a adaptaci k blízkému prostředí.

clip_image002

Z úhlu pohledu společnosti Microsoft je tento obor úzce spojen s prostředím Microsoft Azure, neboť je poskytován jako jedna z jeho služeb. Poskytována je nová možnost využití analytických služeb, která má za účel doplnit sadu nástrojů, sloužících k analyzování dat a predikování blízkých událostí pomocí jednotlivých algoritmů. Ty lze kombinovat, modifikovat a porovnávat mezi sebou tak, aby bylo vždy možné zobrazit mezivýsledky a výsledky provedených analýz. Je jasné, že s větším množstvím požadovaných vstupních dat vzniká většinou potřeba vytvoření specifických aplikací, která se upravují pro konkrétní použití v konkrétních prostředích, s konkrétními daty a velikostmi databází. Tyto aplikace následně vše kombinují dohromady a pracují s nimi co nejefektivnějším způsobem. Machine Learning je v pojetí společnosti Microsoft nazýván také Azure ML: Predictive analytics as a Service (PaaaS). Nejdůležitější je zde právě zmínka o službě a následně zmínka o slově analýza.

S použitím této služby je možné implementace kvalitních předpovědí všech typů a vztažených k jakýmkoliv typům vstupních dat, tedy dat ze všech možných korporátních prostředí. Je možné tedy predikovat například množství objednávek, množství skladových zásob, prodejů, alokace lidských zdrojů, nebo například demografické předpovědi z globální perspektivy. V rámci této nové služby je možné vytvořit nejprve prostředí, tzv. “Machine Learning Workspace” a poté použít ML Studio (web-based) k tvorbě prediktivních a adaptabilních modelů. Stejně jako je možné vytvářet různé modely pro různé algoritmy s různými daty a zaměřeními, je možné vytvářet i oddělení pracovní prostory, což poskytuje možnost většího oddělení práce – často bývá v praxi využíváno jako jednotlivé projekty (co prostor, to projekt). V rámci každého pracovního prostoru je následně možné importovat rozdílné datové zdroje, integrovat je mezi sebou a provádět různé simulace na základě těchto zdrojových dat. Například je i možné importovat data z MS Excelu, která jsou uložena jako „.csv“ soubor. Je možné spouštět skripty (v jazyce R) a používat komplexní sady nástrojů. Celý výsledný model se následně jeví spíše jako pracovní postup (workflow), nebo diagram aktivit, chcete-li.

clip_image004

clip_image006

Jednou z hlavních myšlenek Microsoftu byla nesporně snaha o zjednodušení celého procesu strojového učení (Machine Learning), protože až doposud vždy při aplikaci-realizaci algoritmů strojového učení bylo utraceno spousta finančních prostředků a realizací bylo většinou stráveno velmi času. To se týká pouze základních úkonů jako nastavení tréninkových (učících se) setů sloužících k naučení systémů, jak se učit na základě jednotlivých průchodů vstupních dat. Dále byly doposud spotřebovávány velké výpočetní výkony, aby takové připravené algoritmy daly aplikovat. Obecně Microsoft není první společností, která si hraje s konceptem strojového učení. Pokouší se o to již nějakou dobu například Google s jeho API, nicméně není ničím novým, že pro uživatele je vždy z pohledu designu a marketingu o trochu příjemnější práce s grafickým prostředím. A tady je na místě použít výraz „WOALA“, protože právě na toto Microsoft vsadil a připravil unikátní designer pro tvorbu algoritmů. Navíc zkombinoval toto prostředí s nejvíce používanými produkty dnešní doby pro práci s daty – SQL a EXCEL. Ve spojení například s technologií PowerBI toto poskytuje ucelenější scénář namísto pouhého propojování „něčeho s něčím“, nebo „něčeho s konektorem“.

Netřeba říkat více. ML Studio, které je poskytnuto všem v rámci sady programů na portálu Microsoft Azure, je pomocné k pochopení tvorby algoritmů, respektive k výuce základů a pochopení potenciálu konceptů strojového učení. Jak je ukázáno na následujícím obrázku, na levé straně jsou jednotlivé sady nástrojů, rozdělené do jednotlivých sekcí dle jejich použitelnosti (datové vstupy, výstupy, operace, Training,…), pravá strana slouží k nastavení jednotlivých částí. Pro začátek doporučuji rozhodně prohlédnout vzorové modely, které je možné společně s videi zobrazit na titulní stránce Machine Learning Studia. Jsou naprosto vhodným úvodem do celé problematiky a možnost prozkoumání jednotlivých částí modelu je výbornou pomůckou k pochopení jejich použití, stejně tak jako k pochopení nastavení jednotlivých komponent a vyzkoušení vizualizace jednotlivých mezikroků, nebo výstupu modelu, kde je většinou zakomponováno i porovnání, takže je vidět rozdílnost průchodů, případně použití rozdílných datových vstupů, nebo jejich úprav.

image

Modelový příklad

Nyní trocha praktických informací. Řekněme, že bychom rádi sestavili "network intrusion prevention model". Pro tento scénář je ve vzorových modelech připraven jeden z mnoha experimentů. Po zvolení tohoto modelu se designer automaticky přepne do návrhového zobrazení, kde jsem schopen editovat veškerá nastavení. Po dokončení veškerých úprav stačí stisknout „RUN“ a experiment se spustí, jinými slovy se inicializuje průběh dat celým modelem. Po dokončení je možné vizualizovat výsledek kliknutím pravým tlačítkem myši na proces „Evaluate model“ a poté na volbu „visualize“. Následující obrázek znázorňuje celý model a následnou vizualizaci výsledku. Pokud byste si chtěli vytvořit vlastní model, nebo jen přidat do předpřipraveného experimentu vlastní části, použijte vyhledávací oblast v levé horní části. Je zde mnoho uložených data setů, možností implementace dat z externích zdrojů, datových transformací, procedur strojového učení, nebo modulů, do kterých jste schopni vložit vlastní “R“ code. Nejvíce přínosné moduly pro mne jsou statistické, které mne umožní připravit automatizovaný proces pro téměř cokoliv – v mém případě především statistické analýzy s prediktivními funkcemi.

image

image

Začněme tedy s vlastním modelem. V ML Studio úvodní obrazovce klikněte na “NEW” a následně zvolte “blank model”.

  • Nejprve je nutné zvolit nějaká zdrojová data / nějaký zdroj těchto dat

clip_image014

Pokud kliknete na malé kolečko uprostřed spodní hrany tohoto tvaru, můžete vybrat volbu „visualize“ v menu a podívat se, jaká data v data setu jsou.

image

  • Nyní je potřeba vybrat potřebnou datovou transformaci, například “Missing value scrubber“ a “Project Columns“ – jak můžete vidět, project columns komponenta má v sobě ikonu vykřičníku, která indikuje, že něco zde chybí nastavit, případně, že je něco nastaveno špatně. Pokud na tuto komponentu klinete, můžete vidět v pravé části obrazovky (shape menu), že nejsou nastavené sloupce tabulky (project columns). Po jejich zvolení jen potvrďte a vše by mělo být v pořádku.

clip_image018clip_image020

image

  • Pak musíme rozdělit datové sady řadami do dvou částí. Dodejme, tento postup z menu na levé straně z “data transformation\sample and split“ sekce a nastavme “Fraction of rows in the first output dataset” na hodnotu 0.8. Poté přidejme další split proceduru jen tentokrát nastavme stejný parametr na hodnotu 0.75.

clip_image024

  • Poté musíme přidat nějaké procedury strojového učení z důvodů zajištění predikce atd. Přidejme tedy nejprve vektorovou “Two-Class Support Vector Machine” z menu “Machine Learning\Initialize Model\Classification“ a následně “Train Model” z menu “Machine Learning\Train section“. Po přidání propojme poslední split proceduru s trénovacím modelem a two-class support vector machine taktéž s trénovacím modelem. Pokud se podíváte na objekt train modelu, který jsme přidali, je na něm umístěna varovná ikona, která oznamuje, že není nakonfigurováno vše, co je potřeba pro korektní průchod celým modelem. Je potřeba spustit “column selector“ a protože se jedná o finanční proceduru, je potřeba zvolit “income column“.

image

  • Poslední věcí je přidání “score model“. Ten je možné najít v menu “Machine Learning“. Přetáhněte ikonu do diagramu a následně propojte score model a split connector a poté score model a train model.
  • Pokud nyní klikneme na tlačítko PLAY/RUN, počkáme na proběhnutí celého diagramu, následně klikneme na “score model“ a zvolíme možnost “visualize“, měli bychom vidět následující obrázek:

image

Jak můžete vidět, jsou zde dva nové sloupce s názvem "Scored labels" a "Score Probabilities". Takže něco se tam děje. Ok, pojďme dál.

  • Nyní přidejte “Evaluate model“ z menu “Machine Learning\evaluate“ a vytvořte spojení mezi tímto procesem a score modelem a znovu klikněte na PLAY.
  • Srovnejme nyní tento model s jiným. Můžeme přidat další zdroj namísto “two-class vector machine“. Pojďme zvolit například "two-class logistic regression" ze sekce “machine learning\initialize model\classification“.

clip_image030

  • Vzhledem k tomu, že chceme porovnat různé varianty vstupů, pojďme dvakrát zkopírovat části z předchozích kroků (tedy Train a Score model) a propojit Train model s jiným klasifikátorem. Vyberte “Train model“ a “Score model“ - stiskněte kombinaci kláves CTRL + C, CTRL + V a odstraňte připojení vstupu z části two-class support Vector Machine. Nyní připojte novou two-class logistic regression namísto two-class support vector machine na zkopírovanou Train Model část, pak připojte Score model s Evaluate model a nakonec znovu klikněte na tlačítko Play.

image

Po vizualizaci evaluate modelu by graf a tabulka měly vypadat přibližně takto:

image

 

  • Dobrým příkladem rozdílu je AUC hodnota, která byla 0,887 v prvním případě/scénáři a 0,899 v druhém případě/scénáři - můžete kliknout na vizualizaci na "second dataset to compare" vedle grafu.
  • Pojďme si udělat další srovnání. Přidejte další klasifikační část s názvem "two-class boosted decision tree", zkopírujte znovu části "train model" a "score model" a změňte připojení do “train model“ a do “two-class boosted decision tree“ namísto “two-class support vector machine logistic regression“. Pak přidejte další “evaluate model“ součást. Vše by mělo vypadat jako na následujícím obrázku. Spusťte znovu diagram a vyberte vizualizaci z druhé “evaluate model“ součásti.

image

Na vizualizaci vidíme, že hodnota AUC je o něco vyšší - tentokrát 0,925.

clip_image039

  • Pojďme najít optimální parametry pro sweep ("sweep parameters"). Vyberte sweep parameters část z menu "Machine Learning\Train". Propojte tuto metodu s "two-class support vector machine-cross boosted decision tree" a zbylé dva konektory propojte s výstupy z prvního rozdělení ("split"). Dále je potřeba vybrat sloupce v metodě "sweep parameters". U poslední přidané metody tedy klikněte na "properties" a v okně vlastností v pravé části okna následně na možnost "launch column selector", kde vyberte "income column" a potvrďte tlačítkem OK.

image

  • V nastavení "Sweep parameters" dále vyberte "random sweep mode", "maximum number of runs" nastavte na hodnotu 10 a vyberte AUC jakožto metriku pro měření výkonu.

clip_image043

Po dokončení tohoto nastavení označte "sweep parameters" dvakrát ji zkopírujte. První kopie by měla být propojena s první "split" metodou a metodou "two-class support vector machine", druhá by měla být propojena opět s první "split" metodou a "two-class logistic regression". Výsledek by měl vypadat takto:

image

Pokud nyní kliknete znovu na tlačítko Play, model by se měl aktualizovat. Nyní důležitá část :). Musíme zvolit optimum ze tří možných výsledků/variant, takže nejprve klikněte na "visualize" na poslední metodu "sweep parameters" (nejvíce vpravo). Zaměřujeme se na AUC sloupec a hledáme nejvyšší hodnotu. Řádek, který začíná s číslem 9 je naším kandidátem. Takže pojďme použít všechny hodnoty z tohoto řádku.

image

Nyní použijme tyto hodnoty. Přidejte další "two-class decision tree" a do vlastností této metody vložte údaje z řádku hodnot, vybraném v předchozím kroku (viz následující obrázek).

image

Přidejte "train model" a vytvořit spojení mezi "train model" a "two-class decision tree" a připojit se k stromu první metodu "split" (metoda umístěná pod metodou "Project Columns"). V "train model" vyberte sloupec "income". Přidejte "score model" a vytvořte spojení mezi "train model" vlaku a "score model" a vytvořte další spojení mezi prvním rozdělením/splitem (metoda umístěná pod metodou "Project Columns") a tímto "score model". Pak přidejte "evaluate model" a vytvořte spojení mezi "evaluate model" a "score model". Klikněte na RUN.

image

Pokud nyní klikněte na vizualizaci "evaluate model" (nejvíce vpravo a poslední vytvořená metoda), můžete vidět, že závěrečná testování hodnota AUC je 0,915.

Zde je konečně možné porovnání všech hodnot z posledního "score model" a z "two-class boosted decision tree" součástí našeho diagramu. Přidejme další "score model" pod "sweep parameters" metodu, následně propojme tento score model s první "split" metodou (pod "Project Columns") a se "sweep parameters". Na závěr je ještě potřeba přidat poslední "evaluate model", který spojuje score modely z posledních akcí tak, jak je na následujícím obrázku. Tento poslední prvek ale především poskytuje porovnání dalších variant, z něhož je možné zjistit odlišnost jednotlivých přístupů.

image

Zdroje