Plán: Jak se naučit strojové učení za 6 měsíců

Tento příspěvek byl napsán Metis Senior Data Scientist Zachariah Miller, který sídlí v Chicagu. Příspěvek si můžete prohlédnout na blogu společnosti zde.

Před několika dny jsem narazil na otázku týkající se Quory, která se zhroutila na: „Jak se mohu naučit strojové učení za šest měsíců?“ Začal jsem psát krátkou odpověď, ale rychle se promítl do obrovské diskuse o pedagogickém přístupu. Použil jsem a jak jsem provedl přechod od fyzického nerd k fyzice-nerd-with-machine-learning-in-his-toolbelt k datovému vědci. Zde je plán zdůrazňující hlavní body podél cesty.

Trochu nešťastná pravda

Strojové učení opravdu velkého a rychle se vyvíjejícího oboru. Bude to ohromující jen začít. S největší pravděpodobností jste skočili v okamžiku, kdy chcete použít strojové učení k vytváření modelů - máte nějakou představu o tom, co chcete dělat; ale při vyhledávání možných algoritmů na internetu existuje příliš mnoho možností. To je přesně to, jak jsem začal, a docela dlouho jsem se vzbouřil. S výhodou zpětného pohledu si myslím, že klíčem je začít dál proti proudu. Než budete připraveni je skutečně aplikovat na „skutečná“ data, musíte pochopit, co se děje „pod kapotou“ všech různých algoritmů strojového učení. Pojďme se do toho ponořit.

Existují 3 zastřešující tematické sady dovedností, které tvoří vědu o make-upu (vlastně mnohem více, ale 3, které jsou kořenovými tématy):

  • Matematika „Pure“ (počet, lineární algebra)
  • Statistiky (technicky matematické, ale je to více aplikovaná verze)
  • Programování (obecně v Pythonu / R)

Realisticky musíte být připraveni přemýšlet o matematice, než strojové učení dá smysl. Pokud například nejste obeznámeni s myšlenkami ve vektorových prostorech a pracujete s maticemi, pak bude skutečným bojem přemýšlení o prostorech funkcí, rozhodovacích hranicích atd. Tyto koncepty jsou celou myšlenkou klasifikačních algoritmů pro strojové učení - takže pokud o tom nepřemýšlíte správně, tyto algoritmy se zdají být mimořádně složité. Kromě toho je vše ve strojovém učení řízeno kódem. K získání dat budete potřebovat kód. Ke zpracování dat budete potřebovat kód. K interakci s algoritmy strojového učení potřebujete kód (i když používáte algoritmy, které napsal někdo jiný).

Místo, kde začít, je učení o lineární algebře. MIT má otevřený kurz o lineární algebře. To by vás mělo seznámit se všemi základními pojmy lineární algebry a měli byste věnovat zvláštní pozornost vektorům, násobení matic, determinantům a rozkladu Eigenvectoru - všechny tyto hry se hrají velmi těžce, protože kolečka, která způsobují algoritmy strojového učení. Také se ujistěte, že rozumíte věcem, jako jsou euklidovské vzdálenosti, bude také velmi pozitivní.

Poté by měl být váš další důraz na počet. Zde se nejvíce zajímáme o učení a porozumění významu derivátů a o tom, jak je můžeme použít pro optimalizaci. Existuje spousta skvělých zdrojů počtu, ale přinejmenším byste se měli ujistit, že projdete všechna témata v Single Variable Calculus a alespoň oddíly 1 a 2 Multivariable Calculus. To je skvělé místo k prozkoumání sestupu - skvělý nástroj pro mnoho algoritmů používaných pro strojové učení, což je jen aplikace dílčích derivátů.

Nakonec se můžete ponořit do programovacího aspektu. Vřele doporučuji Python, protože je široce podporován mnoha skvělými předdefinovanými algoritmy strojového učení. Existuje spousta článků o nejlepším způsobu, jak se naučit Python, takže doporučuji udělat nějaké googling a najít způsob, který vám vyhovuje. Nezapomeňte se také dozvědět o vykreslování knihoven (pro Python začněte MatPlotLib a Seaborn). Další běžnou možností je jazyk R. Je také široce podporován a používá ho mnoho lidí - já prostě dávám přednost Pythonu. Pokud používáte Python, začněte instalací Anaconda, což je opravdu pěkný přehled nástrojů Python pro vědu o datu / strojového učení, včetně scikit-learn, skvělé knihovny optimalizovaných / předem vytvořených algoritmů strojového učení v Pythonově dostupném obalu.

Jak vlastně mohu používat strojové učení?

Zde začíná zábava. V tuto chvíli budete potřebovat zázemí, abyste se mohli začít dívat na některá data. Většina projektů strojového učení má velmi podobný pracovní postup:

  1. Získat data (webscraping, volání API, knihovny obrázků): kódování pozadí.
  2. Vyčistěte / munge data. To má nejrůznější formy. Možná máte neúplná data, jak to zvládnete? Možná máte rande, ale je to v podivné formě a musíte jej převést na den, měsíc, rok. To jen zabere nějaké hraní s kódováním na pozadí.
  3. Výběr algoritmu (algoritmů). Jakmile budete mít data na dobrém místě pro práci s nimi, můžete začít zkoušet různé algoritmy. Obrázek níže je hrubý průvodce. Co je však důležitější, je to, že vám to poskytne spoustu informací, o kterých si můžete přečíst. Můžete procházet názvy všech možných algoritmů (např. Lasso) a říkat: „člověče, zdá se, že vyhovuje tomu, co chci dělat na základě vývojového diagramu… ale nejsem si jistý, co to je“ a pak přeskočit na Google a dozvědět se o tom: matematické pozadí.
  4. Vylaďte svůj algoritmus. Zde se vaše matematika na pozadí vyplatí nejvíce - všechny tyto algoritmy mají spoustu tlačítek a knoflíků, se kterými si můžete hrát. Příklad: Pokud používám sestupový přechod, co mám dělat, aby moje rychlost učení byla? Pak si můžete vzpomenout na svůj počet a uvědomit si, že míra učení je jen kroková, tak zatraceně vím, že to musím vyladit na základě svého porozumění ztrátové funkci. Takže poté upravíte všechny své zvonky a píšťalky na vašem modelu, abyste se pokusili získat dobrý celkový model (měřeno s přesností, vyvoláním, přesností, f1 skóre atd. - měli byste je vyhledat). Poté zkontrolujte metody overování / underfitting atd. Pomocí křížové validace (znovu, podívejte se na toto): matematické pozadí.
  5. Vizualizovat! Zde se vaše kódovací pozadí vyplatí ještě více, protože nyní víte, jak vytvořit grafy a jaké funkce vykreslování mohou dělat co.

Z dokumentace k SciKit Learn

Pro tuto fázi vaší cesty vřele doporučuji knihu „Data Science from Scratch“ od Joela Gruse. Pokud se o to pokoušíte sami (nepoužíváte MOOC ani bootcampy), poskytuje to pěkný, čitelný úvod do většiny algoritmů a také vás naučí, jak je kódovat. Opravdu moc nereaguje na matematickou stránku věcí ... jen na malé kousky, které škrábají povrch témat, takže vřele doporučuji naučit se matematiku a pak se ponořit do knihy. Také by vám měl poskytnout pěkný přehled o všech různých typech algoritmů. Například klasifikace vs. regrese. Jaký typ klasifikátoru? Jeho kniha se dotýká všech těchto a všechny vám ukáží vnitřnosti algoritmů v Pythonu.

Celkový plán

Klíčem je rozdělit je na bity schopné strávit a rozvrhnout časový plán pro dosažení vašeho cíle. Přiznám se, že to není nejzábavnější způsob, jak si to prohlížet, protože není tak sexy sedět a učit se lineární algebru, jako je to v počítačovém vidění ... ale to vás může opravdu dostat na správnou stopu.

  • Začněte s učením matematiky (2–3 měsíce)
  • Přesuňte se do programovacích výukových programů čistě podle jazyka, který používáte ... nenechte se chytit na straně strojového učení kódování, dokud nebudete mít jistotu, že budete psát „normální“ kód (1 měsíc)
  • Začněte skákat do strojových učebních kódů podle následujících tutoriálů. Kaggle je vynikajícím prostředkem pro některé skvělé výukové programy (viz soubor Titanic). Vyberte si algoritmus, který vidíte v tutoriálech, a podívejte se, jak jej napsat od začátku. Opravdu do toho kopat. Postupujte společně s návody pomocí předem vytvořených datových sad, jako je tento: Výukový program k implementaci k-nejbližších sousedů v Pythonu od nuly (1–2 měsíce)
  • Opravdu skočte do jednoho (nebo několika) krátkodobých projektů, na kterých jste nadšení, ale to není super komplex. Nesnažte se léčit rakovinu daty (zatím)… možná se pokuste předpovídat, jak úspěšný bude film na základě herců, které najali, a rozpočtu. Možná se pokuste předpovědět hvězdné hvězdy ve vašem oblíbeném sportu na základě jejich statistik (a statistik všech předchozích všech hvězd). (1+ měsíc)

Sidenote: Nebojte se selhat. Většinu času stráveného strojovým učením strávíte pokusem zjistit, proč se algoritmus nerozhodl, jak jste očekávali, nebo proč jsem dostal chybu XYZ ... to je normální. Klíčem je houževnatost. Jen jdi na to. Pokud si myslíte, že by logická regrese mohla fungovat ... zkuste to s malou sadou dat a podívejte se, jak to funguje. Tyto rané projekty jsou karanténou pro učení metod selháním - využijte je a vyzkoušejte vše, co má smysl.

Pak, pokud chcete dělat, aby se stroj učil živě - BLOG. Vytvořte web, který zdůrazňuje všechny projekty, na kterých jste pracovali. Ukažte, jak jste je udělali. Zobrazit konečné výsledky. Ať je to hezké. Přeji hezké vizuální efekty. Ať je to stravitelné. Vytvořte produkt, ze kterého se může učit někdo jiný, a doufejte, že zaměstnavatel uvidí veškerou práci, kterou vložíte.

Metis učí kurzy profesního rozvoje na částečný úvazek, které se zabývají tématy jako Strojové učení a mnoho dalšího. Zobrazit všechny kurzy a umístění zde: https://www.thisismetis.com/professional-development-courses