Strojové učení bez Pythonu, Anacondy a dalších plazů

Ne, samozřejmě to nemyslím vážně. Musí být nějaká hranice, do jaké míry je možné zjednodušit téma. Ale pro první fáze, pochopení základních konceptů a rychlé „vnoření“ do tématu, to může být přijatelné. A jak správně pojmenovat tento materiál (možnosti: „Strojové učení pro začátečníky“, „Analýza dat od základů“, „Algoritmy pro malé děti“), probereme na konci.

K věci. Napsal jsem několik praktických programů v MS Excel pro vizualizaci a přehledné zobrazení procesů, které probíhají v různých metodách strojového učení při analýze dat. Vidět znamená věřit, jak se říká v kultuře, která většinu těchto metod vyvinula (mimochodem, zdaleka ne všechny. Mocná „metoda podpůrných vektorů“, neboli SVM, support vector machine – je vynálezem našeho krajana Vladimira Vapnika, Moskevský institut řízení. Rok 1963, mimochodem! Teď pracuje a učí v USA).

Tři soubory na ukázku

1. Klasifikace metodou k-průměrů

Úkoly tohoto typu patří k „učení bez učitele“, kdy potřebujeme rozdělit vstupní data do předem známého počtu kategorií, ale přitom nemáme žádné „správné odpovědi“, ty musíme vyzískat ze samotných dat. Základní klasická úloha nalezení poddruhů květů kosatce (Ronald Fisher, rok 1936!), která se považuje za první vlaštovku této oblasti znalostí – je právě tohoto druhu.

Metoda je dost jednoduchá. Máme sadu objektů, prezentovaných jako vektory (sady N čísel). U kosatců to jsou sady 4 čísel, charakterizující květ: délka a šířka vnější a vnitřní části okvětního plátku, odpovídajícím způsobem (Kosatce Fishera — Wikipedie). Jako vzdálenost, nebo míru blízkosti mezi objekty, se volí běžná eukleidovská metrika.

Dále se náhodně (nebo i nijak náhodně, viz dále) vybírají centra klastrů a vypočítávají se vzdálenosti od každého objektu k centrům klastrů. Každý objekt je v tomto kroku iterace označen jako patřící k nejblíže umístěnému centru. Poté se centrum každého klastra posune na aritmetický průměr souřadnic jeho členů (podobně jako v fyzice se také nazývá „střed hmotnosti“), a proces se opakuje.

Proces se dostatečně rychle konverguje. Na obrázcích to v dvourozměrném prostoru vypadá takto:

1. Počáteční náhodné rozložení bodů na rovině a počet clusterů

Strojové učení bez Pythonu, Anacondy a dalších plazů

2. Určení center clusterů a přiřazení bodů k jejich clusterům

Strojové učení bez Pythonu, Anacondy a dalších plazů

3. Přesunování souřadnic center clusterů, přepočet příslušnosti bodů, dokud se centra nestabilizují. Je vidět trajektorie pohybu centra clustera k konečné poloze.

Strojové učení bez Pythonu, Anacondy a dalších plazů

V jakémkoli okamžiku lze zadat nová centra clusterů (aniž bychom generovali nové rozložení bodů!) a vidět, že proces dělení není vždy jednoznačný. Matematicky to znamená, že u optimalizované funkce (součet čtverců vzdáleností od bodů k centrům jejich clusterů) nacházíme nikoli globální, ale lokální minimum. Tuto problém lze překonat buď výběrem počáteční center clusterů bez náhody, nebo procházením možných center (někdy je výhodné umístit je přesně na některý z bodů, pak máme alespoň záruku, že nedostaneme prázdné clustery). V každém případě má konečná množina vždy přesnou dolní mez.

S tímto souborem si můžete pohrát na tomto odkazu (nezapomeňte zapnout podporu maker. Soubory byly zkontrolovány na viry)

Popis metody na Wikipedii — metoda k-průměrech

2. Aproximace polynomy a rozdělení dat. Přeučení

Vynikající vědec a popularizátor vědy o datech K.V. Voroncov stručně hovoří o metodách strojového učení jako o "vědě o procházení křivek skrze body". V tomto příkladu budeme hledat vzor v datech metodou nejmenších čtverců.

Jsou ukázány techniky rozdělení původních dat na "tréninkové" a "kontrolní", stejně jako jev známý jako přeúčení. Při správné aproximaci budeme mít nějakou chybu na tréninkových datech a o něco větší na kontrolních. Při nesprávné - přesnou přizpůsobení tréninkovým datům a obrovskou chybu na kontrolních.

(Známý fakt, že skrze N bodů lze procházet jedinou křivku N-1. stupně, a tento způsob v obecném případě nedává požadovaný výsledek. Interpolující polynom Lagrange na Wikipedii)

1. Zadáme počáteční rozložení

Strojové učení bez Pythonu, Anacondy a dalších plazů

2. Dělíme body na "tréninkové" a "kontrolní" v poměru 70 ku 30.

Strojové učení bez Pythonu, Anacondy a dalších plazů

3. Provádíme aproximující křivku podle tréninkových bodů, vidíme chybu, kterou dává na kontrolních datech.

Strojové učení bez Pythonu, Anacondy a dalších plazů

4. Provádíme přesnou křivku přes tréninkové body a vidíme ohromující chybu na kontrolních datech (a nulovou na tréninkových, ale co z toho?).

Strojové učení bez Pythonu, Anacondy a dalších plazů

Zde je samozřejmě uvedena nejjednodušší varianta s jediným rozdělením na "tréninkové" a "kontrolní" podmnožiny, v obecném případě se to dělá mnohokrát pro nejlepší přizpůsobení koeficientů.

Soubor je k dispozici zde, prověřený antivirem. Aktivujte makra pro správnou funkci.

3. Gradientní sestup a dynamika změny chyby.

Zde bude čtyřrozměrný případ a lineární regrese. Koeficienty lineární regrese budou určovány po krocích metodou gradientního sestupu, ze začátku budou všechny koeficienty nulové. Na samostatném grafu je vidět dynamika snižování chyby při stále přesnějším přizpůsobení koeficientů. Existuje možnost podívat se na všechny čtyři dvourozměrné projekce.

Pokud nastavíte příliš velký krok gradientního sestupu, je vidět, že pokaždé přeskakujeme minimum a k výsledku dojdeme za větší počet kroků, i když nakonec stejně dojdeme (pokud příliš nezvýšíme krok sestupu – pak algoritmus "vyjde z kontrolu"). A graf závislosti chyby na kroku iterace nebude plynulý, ale "trhaný".

1. Generujeme data, nastavujeme krok gradientního sestupu.

Strojové učení bez Pythonu, Anacondy a dalších plazů

2. Při správném výběru kroku gradientního sestupu hladce a dostatečně rychle dosáhneme minima.

Strojové učení bez Pythonu, Anacondy a dalších plazů

3. Při nesprávném výběru kroku gradientního sestupu přeskakujeme maximum, graf chyby je "trhaný", konvergence zabírá více kroků.

Strojové učení bez Pythonu, Anacondy a dalších plazů
a

Strojové učení bez Pythonu, Anacondy a dalších plazů

4. Při zcela nesprávném výběru kroku gradientního sestupu se vzdalujeme od minima.

Strojové učení bez Pythonu, Anacondy a dalších plazů

(Abychom reprodukovali proces při uvedených hodnotách kroku gradientního sestupu na obrázcích, zaškrtněte "reference data").

Soubor – na tomto odkazu, je potřeba aktivovat makra, viry nejsou.

Jak tvrdí uznávané společenství, je takové zjednodušení a metoda předávání materiálu akceptovatelná? Mělo by se to přeložit do angličtiny?

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster