Programmering

14 open source-værktøjer til at få mest muligt ud af maskinindlæring

Spamfiltrering, ansigtsgenkendelse, anbefalingsmotorer - når du har et stort datasæt, som du gerne vil udføre forudsigelig analyse eller mønstergenkendelse på, er maskinindlæring vejen at gå. Spredningen af ​​gratis open source-software har gjort maskinindlæring lettere at implementere både på enkeltmaskiner og i stor skala og på de mest populære programmeringssprog. Disse open source-værktøjer inkluderer biblioteker til f.eks.Python, R, C ++, Java, Scala, Clojure, JavaScript og Go.

Apache Mahout

Apache Mahout giver en måde at opbygge miljøer til hosting af maskinlæringsapplikationer, der kan skaleres hurtigt og effektivt for at imødekomme efterspørgslen. Mahout arbejder hovedsageligt med et andet velkendt Apache-projekt, Spark, og blev oprindeligt designet til at arbejde med Hadoop for at køre distribuerede applikationer, men er blevet udvidet til at arbejde med andre distribuerede bagenden som Flink og H2O.

Mahout bruger et domænespecifikt sprog i Scala. Version 0.14 er en stor intern refaktor for projektet, baseret på Apache Spark 2.4.3 som standard.

Komponer

Komponer af Innovation Labs er målrettet mod et fælles problem med maskinindlæringsmodeller: mærkning af rå data, som kan være en langsom og kedelig proces, men uden hvilken en maskinlæringsmodel ikke kan levere nyttige resultater. Med Compose kan du i Python skrive et sæt mærkningsfunktioner til dine data, så mærkning kan udføres så programmatisk som muligt. Forskellige transformationer og tærskler kan indstilles på dine data for at gøre mærkningsprocessen lettere, såsom at placere data i skraldespande baseret på diskrete værdier eller kvantiler.

Core ML-værktøjer

Apples Core ML-ramme giver dig mulighed for at integrere maskinlæringsmodeller i apps, men bruger sit eget særskilte læringsmodelformat. Den gode nyhed er, at du ikke behøver at foruddanne modeller i Core ML-formatet for at bruge dem; Du kan konvertere modeller fra næsten alle almindeligt anvendte maskinlæringsrammer til Core ML med Core ML Tools.

Core ML Tools kører som en Python-pakke, så den integreres med et væld af Python-maskinlæringsbiblioteker og -værktøjer. Modeller fra TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learning, LibSVM og XGBoost kan alle konverteres. Neurale netværksmodeller kan også optimeres til størrelse ved hjælp af kvantisering efter træning (f.eks. Til en lille bit dybde, der stadig er nøjagtig).

Cortex

Cortex giver en bekvem måde at betjene forudsigelser fra machine learning-modeller ved hjælp af Python og TensorFlow, PyTorch, Scikit-learning og andre modeller. De fleste Cortex-pakker består kun af få filer - din kerne-Python-logik, en cortex.yaml-fil, der beskriver, hvilke modeller der skal bruges, og hvilke slags beregningsressourcer, der skal tildeles, og en krav.txt-fil til installation af de nødvendige Python-krav. Hele pakken er implementeret som en Docker-container til AWS eller et andet Docker-kompatibelt hosting-system. Beregningsressourcer tildeles på en måde, der gentager de definitioner, der bruges i Kubernetes til samme, og du kan bruge GPU'er eller Amazon Inferentia ASIC'er til at fremskynde serveringen.

Funktionsværktøjer

Funktionsteknik eller oprettelse af funktioner indebærer at tage de data, der bruges til at træne en maskinlæringsmodel, og producere, typisk manuelt, en transformeret og samlet version af de data, der er mere nyttige med henblik på at træne modellen. Featuretools giver dig funktioner til at gøre dette ved hjælp af Python-objekter på højt niveau bygget ved at syntetisere data i dataframes og kan gøre dette for data ekstraheret fra en eller flere dataframes. Featuretools giver også almindelige primitiver til synteseoperationerne (f.eks. tid_siden_forrige, for at give tid, der er gået mellem forekomster af tidsstemplede data), så du behøver ikke at rulle dem alene.

GoLearn

GoLearn, et maskinlæringsbibliotek til Googles Go-sprog, blev oprettet med de to mål om enkelhed og tilpasning, ifølge udvikler Stephen Whitworth. Enkelheden ligger i den måde, data indlæses og håndteres i biblioteket, der er mønstret efter SciPy og R. Tilpasningsevnen ligger i, hvordan nogle af datastrukturer let kan udvides i en applikation. Whitworth har også oprettet en Go-indpakning til Vowpal Wabbit-biblioteket, en af ​​bibliotekerne, der findes i Shogun-værktøjskassen.

Gradio

En almindelig udfordring, når man bygger maskinlæringsapplikationer, er at opbygge en robust og let tilpasset brugergrænseflade til modeluddannelse og forudsigelsesserveringsmekanismer. Gradio giver værktøjer til oprettelse af webbaserede brugergrænseflader, der giver dig mulighed for at interagere med dine modeller i realtid. Flere inkluderede eksempler på projekter, såsom inputgrænseflader til Inception V3-billedklassifikatoren eller MNIST-håndskriftgenkendelsesmodellen, giver dig en idé om, hvordan du kan bruge Gradio med dine egne projekter.

H2O

H2O, nu i sin tredje store revision, giver en hel platform til maskinlæring i hukommelsen, fra træning til servering af forudsigelser. H2Os algoritmer er tilpasset forretningsprocesser - for eksempel svig eller trendforudsigelser - snarere end f.eks. Billedanalyse. H2O kan interagere på en enkeltstående måde med HDFS-butikker oven på GARN, i MapReduce eller direkte i en Amazon EC2-forekomst.

Hadoop mavens kan bruge Java til at interagere med H2O, men rammen giver også bindinger til Python, R og Scala, så du også kan interagere med alle de tilgængelige biblioteker på disse platforme. Du kan også falde tilbage til REST-opkald som en måde at integrere H2O i de fleste rørledninger.

Oryx

Oryx, med tilladelse fra skaberne af Cloudera Hadoop-distributionen, bruger Apache Spark og Apache Kafka til at køre maskinlæringsmodeller på realtidsdata. Oryx giver en måde at opbygge projekter, der kræver beslutninger i øjeblikket, som f.eks. Anbefalingsmotorer eller detektion af live anomalier, der er informeret om både nye og historiske data. Version 2.0 er et næsten komplet redesign af projektet med dets komponenter løst koblet i en lambda-arkitektur. Nye algoritmer og nye abstraktioner for disse algoritmer (f.eks. Til valg af hyperparameter) kan når som helst tilføjes.

PyTorch Lightning

Når et kraftigt projekt bliver populært, suppleres det ofte med tredjepartsprojekter, der gør det lettere at bruge. PyTorch Lightning giver en organisatorisk indpakning til PyTorch, så du kan fokusere på den kode, der betyder noget, i stedet for at skrive kedelplade til hvert projekt.

Lynprojekter bruger en klassebaseret struktur, så hvert fælles trin for et PyTorch-projekt er indkapslet i en klassemetode. Trænings- og valideringssløjferne er semi-automatiserede, så du behøver kun at give din logik til hvert trin. Det er også lettere at konfigurere træningsresultaterne i flere GPU'er eller forskellige hardwaremix, fordi instruktionerne og objektreferencerne til at gøre det er centraliserede.

Scikit-lær

Python er blevet et go-to programmeringssprog til matematik, videnskab og statistik på grund af dets lette vedtagelse og bredden af ​​biblioteker, der er tilgængelige til næsten enhver applikation. Scikit-lærer udnytter denne bredde ved at bygge oven på flere eksisterende Python-pakker - NumPy, SciPy og Matplotlib - til matematik og naturvidenskabeligt arbejde. De resulterende biblioteker kan bruges til interaktive "workbench" -applikationer eller integreres i anden software og genbruges. Sættet fås under en BSD-licens, så det er helt åbent og genanvendeligt.

Shogun

Shogun er et af de længste projekter i denne samling. Det blev oprettet i 1999 og skrevet i C ++, men kan bruges med Java, Python, C #, Ruby, R, Lua, Octave og Matlab. Den seneste større version, 6.0.0, tilføjer native support til Microsoft Windows og Scala-sproget.

Selvom Shogun er populær og vidtrækkende, har den konkurrence. Et andet C ++ - baseret maskinlæringsbibliotek, Mlpack, har kun eksisteret siden 2011, men erkender at være hurtigere og lettere at arbejde med (ved hjælp af et mere integreret API-sæt) end konkurrerende biblioteker.

Spark MLlib

Machine learning-biblioteket til Apache Spark og Apache Hadoop, MLlib kan prale med mange almindelige algoritmer og nyttige datatyper, der er designet til at køre med hastighed og skala. Selvom Java er det primære sprog til at arbejde i MLlib, kan Python-brugere forbinde MLlib med NumPy-biblioteket, Scala-brugere kan skrive kode mod MLlib, og R-brugere kan tilslutte Spark fra version 1.5. Version 3 af MLlib fokuserer på at bruge Sparks DataFrame API (i modsætning til den ældre RDD API) og giver mange nye klassificerings- og evalueringsfunktioner.

Et andet projekt, MLbase, bygger oven på MLlib for at gøre det lettere at udlede resultater. I stedet for at skrive kode foretager brugerne forespørgsler ved hjælp af et deklarativt sprog à la SQL.

Weka

Weka, oprettet af Machine Learning Group ved University of Waikato, betegnes som "maskinindlæring uden programmering." Det er en GUI-arbejdsbænk, der giver data wranglers mulighed for at samle maskinlæringsrørledninger, træne modeller og køre forudsigelser uden at skulle skrive kode. Weka arbejder direkte med R, Apache Spark og Python, sidstnævnte ved hjælp af en direkte indpakning eller gennem grænseflader til almindelige numeriske biblioteker som NumPy, Pandas, SciPy og Scikit-learning. Wekas ​​store fordel er, at den giver browsable, venlige grænseflader til alle aspekter af dit job, herunder pakkehåndtering, forbehandling, klassificering og visualisering.