Programovanie

Recenzia: Scikit-learn svieti pre jednoduchšie strojové učenie

Scikity sú vedecké panely nástrojov založené na Pythone postavené na SciPy, knižnici Pythonu pre vedecké výpočty. Scikit-learn je projekt s otvoreným zdrojom zameraný na strojové učenie: klasifikáciu, regresiu, klastrovanie, znižovanie rozmerov, výber modelu a predspracovanie. Je to dosť konzervatívny projekt, ktorý je z dôvodu údržby a obmedzených zdrojov pre vývojárov dosť opatrný na to, aby sa zabránilo plazeniu rozsahu a skákaniu po nevyskúšaných algoritmoch. Na druhej strane má celkom pekný výber solídnych algoritmov a používa Cython (kompilátor Python-to-C) na funkcie, ktoré musia byť rýchle, napríklad vnútorné slučky.

Medzi oblasťami, ktoré Scikit-learn robí nie pokrývajú hlboké učenie, učenie posilňovania, grafické modely a predikcia sekvencií. Je definovaný ako v jazyku Python, takže nemá API pre iné jazyky. Scikit-learn nepodporuje PyPy, rýchlu kompiláciu implementácie Pythonu just-in-time, pretože jej závislosti NumPy a SciPy úplne nepodporujú PyPy.

Scikit-learn nepodporuje akceleráciu GPU z viacerých dôvodov, ktoré súvisia so zložitosťou a závislosťami strojov, ktoré by zaviedla. Potom okrem Sieťových neurónov Scikit-learn nepotrebuje akceleráciu GPU takmer nijako.

Funkcie Scikit-learn

Ako som už spomenul, Scikit-learn má dobrý výber algoritmov pre klasifikáciu, regresiu, klastrovanie, redukciu dimenzionality, výber modelu a predspracovanie. V klasifikačnej oblasti, ktorá sa týka identifikácie kategórie, do ktorej objekt patrí, a nazýva sa supervidované učenie, implementuje podporné vektorové stroje (SVM), najbližších susedov, logistickú regresiu, náhodný les, rozhodovacie stromy atď., Až do viacúrovňová perceptrónová (MLP) neurónová sieť.

Implementácia MLP spoločnosťou Scikit-learn však nie je výslovne určená pre rozsiahle aplikácie. Pokiaľ ide o rozsiahle implementácie založené na GPU a hlboké učenie, pozrite sa na mnoho súvisiacich projektov Scikit-learn, ktoré zahŕňajú rámce hlbokej neurónovej siete vhodné pre Python, ako sú Keras a Theano.

Pre regresiu, ktorá sa týka predpovedania atribútu spojitej hodnoty spojeného s objektom (napríklad ceny akcie), má program Scikit-learn podporu vektorovej regresie (SVR), hrebeňovej regresie, laso, elastickej siete, regresie najmenšieho uhla (LARS) ), Bayesova regresia, rôzne druhy silnej regresie atď. To je v skutočnosti väčší výber regresných algoritmov, ako by väčšina analytikov mohla chcieť, ale pre každý zahrnutý existuje dobrý prípad použitia.

Pre klastrovanie, techniku ​​učenia bez dozoru, pri ktorej sa podobné objekty automaticky zoskupujú do množín, má program Scikit-learn k-means, spektrálne zoskupovanie, stredný posun, hierarchické zoskupovanie, DBSCAN a niektoré ďalšie algoritmy. Opäť bola zahrnutá škála konzervatívnych algoritmov.

Pri znižovaní rozmerov ide o zníženie počtu náhodných premenných, ktoré je potrebné zohľadniť, pomocou techník rozkladu, ako je napríklad analýza základných komponentov (PCA) a nezáporná maticová faktorizácia (NMF) alebo techniky výberu funkcií. Výber modelu je o porovnávaní, overovaní a výbere parametrov a modelov a využíva algoritmy, ako je napríklad vyhľadávanie v mriežke, krížová validácia a metrické funkcie. Pre obidve oblasti obsahuje Scikit-learn všetky osvedčené algoritmy a metódy v ľahko prístupných API.

Predbežné spracovanie, ktoré zahŕňa extrakciu a normalizáciu funkcií, je jednou z prvých a najdôležitejších častí procesu strojového učenia. Normalizácia transformuje prvky na nové premenné, často s nulovým stredným a jednotkovým rozptylom, ale niekedy leží medzi danou minimálnou a maximálnou hodnotou, často 0 a 1. Extrakcia funkcií zmení text alebo obrázky na čísla použiteľné pre strojové učenie. Aj tu Scikit-learn servíruje všetky chutné klasické jedlá, ktoré by ste od tohto podniku smorgasbord očakávali. Môžete slobodne zbierať tie, ktoré vás oslovia.

Všimnite si túto funkciu extrakcia sa celkom líši od funkcie výber, uvedené vyššie v rámci znižovania rozmerov. Výber funkcií je spôsob vylepšenia učenia odstránením nemenných, kovariančných alebo inak štatisticky nedôležitých prvkov.

Stručne povedané, program Scikit-learn obsahuje celú sadu algoritmov a metód na redukciu rozmerov, výber modelov, extrakciu prvkov a normalizáciu, hoci na ich dosiahnutie chýba akýkoľvek riadený pracovný tok, okrem dobrej zbierky príkladov a dobrej dokumentácie.

Inštalácia a spustenie programu Scikit-learn

Moja inštalácia Scikit-learn mohla byť moja najjednoduchšia inštalácia rámca strojového učenia vôbec. Pretože som už mal všetky predpoklady nainštalované a dostatočne aktuálne (Python, Numpy a Scipy), trval jeden príkaz:

$ sudo pip install -U scikit-learn

Dobre, trvalo mi to dva povely, pretože som prvýkrát zabudol sudo.

To ma prinútilo Scikit-learn 0.18.1. Pre dobrú mieru som skontroloval aj repozitár GitHub, nainštaloval som rámec testovania nosa a vytvoril vývojovú verziu Scikit-learn zo zdroja, ktorá bola jednoduchá ako zmena koreňa úložiska a písanie urobiť. Zostavenie Pythonu, vygenerovanie a kompilácia všetkých súborov C, prepojenie zostavy a vykonanie všetkých testov trvalo istý čas, nevyžadovalo to však nijaký zásah.

Spustenie môjho prvého príkladu Scikit-learn bolo tiež veľmi ľahké. Na stránke so všeobecnými príkladmi som klikol na príklad na vykreslenie krížovo overených predpovedí, prečítal som si poznámkový blok, stiahol zdrojový kód Pythonu a poznámkový blok Jupyter a spustil ich. Zdroj Pythonu sa na pár sekúnd prehnal, vygeneroval niekoľko varovných správ a vysunul graf. Notebook Jupyter urobil v podstate to isté, keď som ho bežal interaktívne, ako vidíte na obrázku nižšie.

Scikit-learn získava najvyššie známky za ľahký vývoj medzi všetkými rámcami strojového učenia, ktoré som testoval, hlavne preto, že algoritmy fungujú tak, ako sú inzerované a zdokumentované, API sú konzistentné a dobre navrhnuté a medzi nimi existuje len málo „nesúladov impedancie“. dátové štruktúry. Je potešením pracovať s knižnicou, v ktorej boli funkcie podrobne rozpracované a chyby úplne vyprázdnené.

Učenie Scikit-uč sa

Dokumentácia Scikit-learn je dobrá a príkladov je veľa - spolu asi 200. Väčšina príkladov obsahuje najmenej jeden graf vytvorený z analyzovaných údajov pomocou Matplotlib. To všetko prispieva k ľahkému rozvoju knižnice a ľahkému učeniu.

Existuje jeden dlhý výukový program „Výukový program o štatistickom výučbe na spracovanie vedeckých údajov“, ktorý má päť častí a prílohu o hľadaní pomoci. Výukový program je celkom dobrý, a to ako v pokrytí základných pojmov, tak aj v ukážkach príkladov s použitím skutočných údajov, kódu a grafov. Vyzýva tiež príklady súvisiace s textom - napríklad porovnanie štyroch rôznych klasifikátorov SVM uvedených na obrázku nižšie.

Príklady, ktoré som spracoval, boli na ich webových stránkach dosť zreteľné. V mnohých prípadoch, keď som si stiahol a spustil príklady, vyhodili by varovania, ktoré sa nezobrazujú na webovej stránke, ale vždy priniesli rovnaké výsledky. Prvý obrázok vyššie, ktorý zobrazuje výstup môjho notebooku Jupyter na vykreslenie predpovedí s krížovou validáciou, je dobrým príkladom.

Väčšinu varovaní pripisujem chybám v rámci Apple vecLib a vývoju v knižniciach Pythonu. Niektoré sa zdajú byť varovaniami v Pythone 2.7.10, ktoré sa nenachádzajú v žiadnej verzii použitej pre webovú stránku. Na obrázku nižšie je uvedené varovanie; príslušná webová stránka nie.

Ako knižnica Pythonu pre strojové učenie, so zámerne obmedzeným rozsahom, je Scikit-learn veľmi dobrý. Má široký sortiment osvedčených algoritmov s integrovanou grafikou. Inštalácia, učenie sa a používanie je pomerne jednoduchá a obsahuje dobré príklady a návody.

Na druhej strane Scikit-learn nezahŕňa hlboké učenie alebo posilňovacie učenie, ktoré vynecháva súčasné ťažké, ale dôležité problémy, ako je presná klasifikácia obrázkov a spoľahlivá analýza a preklad jazyka v reálnom čase. Okrem toho nezahŕňa grafické modely ani predikciu postupnosti, nemôže sa skutočne používať z iných jazykov ako Python a nepodporuje PyPy ani GPU.

Pokiaľ ide o uchopovací pazúr, výkon, ktorý dosahuje Scikit-learn pre strojové učenie iné ako neurónové siete, je celkom dobrý, a to aj bez akcelerácie PyPy alebo GPU. Python je často zippierší, ako ľudia očakávajú od tlmočníka, a použitie Cythonu na generovanie C kódu pre vnútorné slučky eliminuje väčšinu prekážok v Scikit-learn.

Je zrejmé, že ak sa zaujímate o hlboké vzdelávanie, mali by ste sa pozrieť inde. Napriek tomu existuje veľa problémov - od vytvorenia predikčnej funkcie spájajúcej rôzne pozorovania cez klasifikáciu pozorovaní až po učenie sa štruktúry v neoznačenom súbore údajov -, ktoré sa dajú použiť na obyčajné staré strojové učenie bez potreby desiatok vrstiev neurónov a pre tieto oblasti Scikit -nauč sa veľmi dobre.

Ak ste fanúšikom Pythonu, Scikit-learn môže byť najlepšou voľbou medzi knižnicami jednoduchého strojového učenia. Ak dávate prednosť Scale, potom by mohla byť Spark ML lepšou voľbou. A ak radi navrhujete svoje učebné kanály kreslením diagramov a písaním občasných úryvkov kódov Python alebo R, potom vám môže Microsoft Preferences vyhovovať Microsoft Cortana Analytics Suite - konkrétne Azure Machine Learning Studio.

---

Náklady: Zadarmo otvorený zdroj.Plošina: Vyžaduje Python, NumPy, SciPy a Matplotlib. Vydania sú k dispozícii pre MacOS, Linux a Windows.

Výsledková listinaModely a algoritmy (25%) Ľahkosť vývoja (25%) Dokumentácia (20%) Výkon (20%) Ľahké nasadenie (10%) Celkové skóre (100%)
Scikit-learn 0.18.199989 8.8
$config[zx-auto] not found$config[zx-overlay] not found