Programování

Recenze: Scikit-learn svítí pro jednodušší strojové učení

Scikity jsou vědecké sady nástrojů založené na Pythonu postavené na SciPy, knihovně Pythonu pro vědecké výpočty. Scikit-learn je open source projekt zaměřený na strojové učení: klasifikace, regrese, shlukování, redukce dimenze, výběr modelu a předzpracování. Jedná se o poměrně konzervativní projekt, který je z důvodu udržovatelnosti a omezených zdrojů pro vývojáře velmi opatrný, aby nedocházelo k plížení rozsahu a skákání na neprokázaných algoritmech. Na druhou stranu má docela pěkný výběr solidních algoritmů a používá Cython (kompilátor Python-to-C) pro funkce, které musí být rychlé, jako jsou vnitřní smyčky.

Mezi oblastmi, které Scikit-learn dělá ne pokrývají hluboké učení, učení výztuže, grafické modely a predikci posloupnosti. Je definován jako v Pythonu a pro něj, takže nemá API pro jiné jazyky. Scikit-learn nepodporuje PyPy, rychlou kompilaci implementace Pythonu just-in-time, protože jeho závislosti NumPy a SciPy plně nepodporují PyPy.

Scikit-learn nepodporuje akceleraci GPU z několika důvodů, které souvisejí se složitostí a závislostmi strojů, které by zavedla. Kromě neuronových sítí má Scikit-learn malou potřebu akcelerace GPU.

Funkce Scikit-Learn

Jak jsem již zmínil, Scikit-learn má dobrý výběr algoritmů pro klasifikaci, regresi, shlukování, redukci rozměrů, výběr modelu a předzpracování. V oblasti klasifikace, která se týká identifikace kategorie, do které objekt patří, a nazývá se supervizované učení, implementuje podpůrné vektorové stroje (SVM), nejbližší sousedy, logistickou regresi, náhodný les, rozhodovací stromy atd. Až do neurální síť víceúrovňového perceptronu (MLP).

Implementace MLP společnosti Scikit-learn však výslovně není určena pro rozsáhlé aplikace. U rozsáhlých implementací založených na GPU a pro hluboké učení se podívejte na mnoho souvisejících projektů Scikit-learn, které zahrnují rámce hlubokých neuronových sítí vhodné pro Python, jako jsou Keras a Theano.

Pro regresi, která se týká předpovídání atributu s kontinuální hodnotou přidruženého k objektu (například ceny akcie), má Scikit-learn podporu vektorové regrese (SVR), hřebenové regrese, Lasso, Elastic Net, regrese nejmenšího úhlu (LARS ), Bayesiánská regrese, různé druhy silné regrese atd. Ve skutečnosti je to větší výběr regresních algoritmů, než by většina analytiků chtěla, ale pro každý z nich, které byly zahrnuty, existují dobré případy použití.

Pro shlukování, techniku ​​učení bez dozoru, při které se podobné objekty automaticky seskupují do sad, má Scikit-learn k-means, spektrální shlukování, střední posun, hierarchické shlukování, DBSCAN a některé další algoritmy. Opět byla zahrnuta škála konzervativních algoritmů.

Snížení rozměrů je o snížení počtu náhodných proměnných, které je třeba vzít v úvahu, pomocí technik rozkladu, jako je analýza hlavních komponent (PCA) a nezáporná maticová faktorizace (NMF), nebo techniky výběru funkcí. Výběr modelu je o porovnávání, ověřování a výběru parametrů a modelů a používá algoritmy, jako je vyhledávání v mřížce, křížové ověřování a metrické funkce. Pro obě oblasti zahrnuje Scikit-learn všechny osvědčené algoritmy a metody ve snadno přístupných API.

Předběžné zpracování, které zahrnuje extrakci a normalizaci funkcí, je jednou z prvních a nejdůležitějších částí procesu strojového učení. Normalizace transformuje prvky na nové proměnné, často s nulovým průměrem a jednotkovou odchylkou, ale někdy leží mezi danou minimální a maximální hodnotou, často 0 a 1. Extrakce funkcí změní text nebo obrázky na čísla použitelná pro strojové učení. I zde Scikit-learn servíruje všechny chutné klasické pokrmy, které byste u tohoto smorgasbordu očekávali. Můžete libovolně vybírat, které vás osloví.

Všimněte si této funkce extrakce se zcela liší od funkce výběr, zmíněno dříve v rámci redukce rozměrů. Výběr funkcí je způsob, jak zlepšit učení odstraněním neměnných, kovariantních nebo jinak statisticky nedůležitých funkcí.

Stručně řečeno, Scikit-learn zahrnuje celou sadu algoritmů a metod pro redukci rozměrů, výběr modelů, extrakci funkcí a normalizaci, i když pro jejich dosažení postrádá jakýkoli druh řízeného pracovního postupu, kromě dobré sbírky příkladů a dobré dokumentace.

Instalace a spuštění Scikit-learn

Moje instalace Scikit-learn mohla být moje nejjednodušší instalace rámce strojového učení vůbec. Jelikož jsem již měl všechny předpoklady nainstalované a dostatečně aktuální (Python, Numpy a Scipy), trvalo to jeden příkaz:

$ sudo pip install -U scikit-learn

Dobře, trvalo mi to dva příkazy, protože jsem poprvé zapomněl sudo.

To mě přimělo Scikit-learn 0.18.1. Pro dobrou míru jsem také zkontroloval úložiště GitHub, nainstaloval rámec testování nosu a vytvořil vývojovou verzi Scikit-learn ze zdroje, která byla stejně jednoduchá jako změna kořene úložiště a psaní udělat. Zkompilovat Python, vygenerovat a kompilovat všechny soubory C, propojit sestavení a spustit všechny testy trvalo nějakou dobu, ale nevyžadoval žádný zásah.

Spuštění mého prvního příkladu Scikit-learn bylo také velmi snadné. Na stránce obecných příkladů jsem kliknul do příkladu pro vykreslení křížově ověřených předpovědí, přečetl jsem notebook, stáhl zdrojový kód Pythonu a notebook Jupyter a spustil je. Zdroj Pythonu se na několik sekund chuglil, vygeneroval několik varovných zpráv a vyskočil graf. Notebook Jupyter udělal v podstatě totéž, když jsem ho provozoval interaktivně, jak vidíte na obrázku níže.

Scikit-learn získává nejvyšší známky snadnosti vývoje mezi všemi rámci strojového učení, které jsem testoval, hlavně proto, že algoritmy fungují tak, jak jsou inzerovány a dokumentovány, API jsou konzistentní a dobře navržená a mezi nimi existuje jen málo „nesouladů impedance“ datové struktury. Je potěšením pracovat s knihovnou, ve které byly důkladně upřesněny funkce a důkladně vypuštěny chyby.

Učení Scikit-učit se

Dokumentace Scikit-learn je dobrá a příkladů je mnoho - celkem asi 200. Většina příkladů zahrnuje alespoň jeden graf vytvořený z analyzovaných dat pomocí Matplotlib. To vše přispívá ke snadnému rozvoji knihovny a jejímu snadnému učení.

Existuje jeden dlouhý výukový program „Výukový program statistického učení pro zpracování vědeckých dat“, který má pět částí a přílohu o hledání nápovědy. Výukový program je docela dobrý, a to jak v pokrytí základních konceptů, tak v ukázkách pomocí skutečných dat, kódu a grafů. Vyvolává také příklady související s textem - například srovnání čtyř různých klasifikátorů SVM uvedených na obrázku níže.

Všechny příklady, které jsem prošel, byly na jejich webových stránkách docela jasné. V mnoha případech, když jsem stáhl a spustil příklady, vyhodili by varování, která se nezobrazují na webové stránce, ale vždy by přinesly stejné výsledky. První obrázek výše, zobrazující můj notebookový výstup Jupyter pro vykreslování křížově ověřených předpovědí, je dobrým příkladem.

Většinu varování připisuji vadám v rámci Apple vecLib a evoluci v knihovnách Pythonu. Některá se zdají být varování v Pythonu 2.7.10, která nebyla přítomna v jakékoli verzi použité pro webovou stránku. Níže uvedený obrázek má takové varování; příslušná webová stránka není.

Jako knihovna Pythonu pro strojové učení, se záměrně omezeným rozsahem, je Scikit-learn velmi dobrý. Má širokou škálu dobře zavedených algoritmů s integrovanou grafikou. Instalace, učení a používání je poměrně snadné a obsahuje dobré příklady a výukové programy.

Na druhou stranu Scikit-learn nepokrývá hluboké učení ani posilovací učení, které vynechává současné tvrdé, ale důležité problémy, jako je přesná klasifikace obrázků a spolehlivá analýza a překlad jazyka v reálném čase. Kromě toho neobsahuje grafické modely ani predikci sekvence, nelze ji skutečně použít z jiných jazyků než Python a nepodporuje PyPy ani GPU.

Na uchopovací dráp je výkon, který Scikit-learn dosahuje pro strojové učení jiné než neuronové sítě, docela dobrý, a to i bez akcelerace PyPy nebo GPU. Python je často zippier, než lidé očekávají od tlumočníka, a použití Cythonu ke generování C kódu pro vnitřní smyčky eliminuje většinu překážek v Scikit-learn.

Je zřejmé, že pokud vás zajímá hluboké učení, měli byste hledat jinde. Existuje však mnoho problémů - od vytvoření predikční funkce spojující různá pozorování přes klasifikaci pozorování až po učení struktury v neoznačeném datovém souboru -, které se hodí k prostému starému strojovému učení bez nutnosti desítek vrstev neuronů a pro tyto oblasti Scikit -naučte se velmi dobře.

Pokud jste fanouškem Pythonu, může být Scikit-learn nejlepší volbou mezi knihovnami prostého strojového učení. Pokud dáváte přednost Scale, pak Spark ML může být lepší volbou. A pokud rádi navrhujete své výukové kanály kreslením diagramů a psaním občasných fragmentů jazyka Python nebo R, pak vám může Microsoft Cortana Analytics Suite - konkrétně Azure Machine Learning Studio - vyhovovat.

---

Náklady: Zdarma otevřený zdroj.Plošina: Vyžaduje Python, NumPy, SciPy a Matplotlib. Vydání jsou k dispozici pro MacOS, Linux a Windows.

ScorecardModely a algoritmy (25%) Snadný vývoj (25%) Dokumentace (20%) Výkon (20%) Snadné nasazení (10%) Celkové skóre (100%)
Scikit-learn 0.18.199989 8.8
$config[zx-auto] not found$config[zx-overlay] not found