14 Open Source-Tools, um das maschinelle Lernen optimal zu nutzen

Spamfilterung, Gesichtserkennung, Empfehlungs-Engines - Wenn Sie über einen großen Datensatz verfügen, für den Sie eine Vorhersageanalyse oder Mustererkennung durchführen möchten, ist maschinelles Lernen der richtige Weg. Die Verbreitung von kostenloser Open-Source-Software hat die Implementierung von maschinellem Lernen sowohl auf einzelnen Maschinen als auch in großem Maßstab und in den meisten gängigen Programmiersprachen vereinfacht. Diese Open-Source-Tools umfassen Bibliotheken für Python, R, C ++, Java, Scala, Clojure, JavaScript und Go.

Apache Mahout

Apache Mahout bietet eine Möglichkeit, Umgebungen für das Hosten von Anwendungen für maschinelles Lernen zu erstellen, die schnell und effizient skaliert werden können, um die Anforderungen zu erfüllen. Mahout arbeitet hauptsächlich mit einem anderen bekannten Apache-Projekt, Spark, zusammen und wurde ursprünglich für die Zusammenarbeit mit Hadoop entwickelt, um verteilte Anwendungen auszuführen. Es wurde jedoch erweitert, um mit anderen verteilten Backends wie Flink und H2O zusammenzuarbeiten.

Mahout verwendet in Scala eine domänenspezifische Sprache. Version 0.14 ist ein wichtiger interner Refactor des Projekts, der standardmäßig auf Apache Spark 2.4.3 basiert.

Komponieren

Compose von Innovation Labs zielt auf ein häufiges Problem bei Modellen für maschinelles Lernen ab: die Kennzeichnung von Rohdaten, die ein langsamer und langwieriger Prozess sein können, ohne die ein Modell für maschinelles Lernen jedoch keine nützlichen Ergebnisse liefern kann. Mit Compose können Sie in Python eine Reihe von Beschriftungsfunktionen für Ihre Daten schreiben, sodass die Beschriftung so programmgesteuert wie möglich erfolgen kann. Für Ihre Daten können verschiedene Transformationen und Schwellenwerte festgelegt werden, um den Beschriftungsprozess zu vereinfachen, z. B. das Platzieren von Daten in Bins basierend auf diskreten Werten oder Quantilen.

Kern-ML-Tools

Mit dem Core ML-Framework von Apple können Sie Modelle für maschinelles Lernen in Apps integrieren, verwenden jedoch ein eigenes Lernmodellformat. Die gute Nachricht ist, dass Sie Modelle im Core ML-Format nicht vorab trainieren müssen, um sie zu verwenden. Mit Core ML Tools können Sie Modelle aus nahezu jedem gängigen Framework für maschinelles Lernen in Core ML konvertieren.

Core ML Tools wird als Python-Paket ausgeführt und lässt sich daher in die Fülle der Python-Bibliotheken und -Tools für maschinelles Lernen integrieren. Modelle von TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-Learn, LibSVM und XGBoost können alle konvertiert werden. Neuronale Netzwerkmodelle können auch durch Quantisierung nach dem Training für die Größe optimiert werden (z. B. bis zu einer kleinen Bittiefe, die immer noch genau ist).

Kortex

Cortex bietet eine bequeme Möglichkeit, Vorhersagen aus Modellen für maschinelles Lernen mithilfe von Python und TensorFlow, PyTorch, Scikit-learn und anderen Modellen bereitzustellen. Die meisten Cortex-Pakete bestehen nur aus wenigen Dateien - Ihrer Python-Kernlogik, einer cortex.yaml-Datei, in der beschrieben wird, welche Modelle verwendet werden sollen und welche Arten von Rechenressourcen zugewiesen werden sollen, und einer Datei "require.txt", um alle erforderlichen Python-Anforderungen zu installieren. Das gesamte Paket wird als Docker-Container für AWS oder ein anderes Docker-kompatibles Hosting-System bereitgestellt. Rechenressourcen werden so zugewiesen, dass sie den in Kubernetes verwendeten Definitionen entsprechen, und Sie können GPUs oder Amazon Inferentia-ASICs verwenden, um die Bereitstellung zu beschleunigen.

Featuretools

Beim Feature-Engineering oder der Feature-Erstellung werden die zum Trainieren eines maschinellen Lernmodells verwendeten Daten verwendet und in der Regel von Hand eine transformierte und aggregierte Version der Daten erstellt, die für das Training des Modells nützlicher ist. Featuretools bietet Ihnen Funktionen, um dies mithilfe von Python-Objekten auf hoher Ebene zu tun, die durch Synthetisieren von Daten in Datenrahmen erstellt wurden, und kann dies für Daten tun, die aus einem oder mehreren Datenrahmen extrahiert wurden. Featuretools bietet auch allgemeine Grundelemente für die Synthesevorgänge (z. B. time_since_previousum die zwischen Instanzen von Daten mit Zeitstempel verstrichene Zeit bereitzustellen), sodass Sie diese nicht selbst rollen müssen.

Geh `Lernen

GoLearn, eine Bibliothek für maschinelles Lernen für Googles Go-Sprache, wurde laut Entwickler Stephen Whitworth mit dem doppelten Ziel der Einfachheit und Anpassbarkeit erstellt. Die Einfachheit liegt in der Art und Weise, wie Daten in die Bibliothek geladen und verarbeitet werden, die SciPy und R nachempfunden ist. Die Anpassbarkeit liegt darin, wie einige der Datenstrukturen in einer Anwendung einfach erweitert werden können. Whitworth hat auch einen Go-Wrapper für die Vowpal Wabbit-Bibliothek erstellt, eine der Bibliotheken in der Shogun-Toolbox.

Gradio

Eine häufige Herausforderung beim Erstellen von Anwendungen für maschinelles Lernen besteht darin, eine robuste und einfach anpassbare Benutzeroberfläche für die Modellschulungs- und Vorhersagemechanismen zu erstellen. Gradio bietet Tools zum Erstellen von webbasierten Benutzeroberflächen, mit denen Sie in Echtzeit mit Ihren Modellen interagieren können. Mehrere enthaltene Beispielprojekte, wie z. B. Eingabeschnittstellen zum Inception V3-Bildklassifizierer oder zum MNIST-Handschrifterkennungsmodell, geben Ihnen eine Vorstellung davon, wie Sie Gradio mit Ihren eigenen Projekten verwenden können.

H2O

H2O, jetzt in seiner dritten großen Überarbeitung, bietet eine vollständige Plattform für maschinelles Lernen im Speicher, vom Training bis zum Bereitstellen von Vorhersagen. Die Algorithmen von H2O sind eher auf Geschäftsprozesse ausgerichtet - beispielsweise auf Betrug oder Trendvorhersagen - als beispielsweise auf die Bildanalyse. H2O kann eigenständig mit HDFS-Stores, zusätzlich zu YARN, in MapReduce oder direkt in einer Amazon EC2-Instanz interagieren.

Hadoop-Mavens können Java für die Interaktion mit H2O verwenden. Das Framework bietet jedoch auch Bindungen für Python, R und Scala, sodass Sie auch mit allen auf diesen Plattformen verfügbaren Bibliotheken interagieren können. Sie können auch auf REST-Aufrufe zurückgreifen, um H2O in fast jede Pipeline zu integrieren.

Oryx

Oryx, mit freundlicher Genehmigung der Entwickler der Cloudera Hadoop-Distribution, verwendet Apache Spark und Apache Kafka, um Modelle für maschinelles Lernen mit Echtzeitdaten auszuführen. Oryx bietet eine Möglichkeit, Projekte zu erstellen, für die im Moment Entscheidungen erforderlich sind, z. B. Empfehlungs-Engines oder die Erkennung von Live-Anomalien, die sowohl auf neuen als auch auf historischen Daten basieren. Version 2.0 ist eine nahezu vollständige Neugestaltung des Projekts, dessen Komponenten lose in eine Lambda-Architektur eingebunden sind. Neue Algorithmen und neue Abstraktionen für diese Algorithmen (z. B. für die Auswahl von Hyperparametern) können jederzeit hinzugefügt werden.

PyTorch Lightning

Wenn ein leistungsstarkes Projekt populär wird, wird es häufig durch Projekte von Drittanbietern ergänzt, die die Verwendung vereinfachen. PyTorch Lightning bietet einen Organisations-Wrapper für PyTorch, sodass Sie sich auf den Code konzentrieren können, der wichtig ist, anstatt für jedes Projekt ein Boilerplate zu schreiben.

Lightning-Projekte verwenden eine klassenbasierte Struktur, sodass jeder allgemeine Schritt für ein PyTorch-Projekt in einer Klassenmethode gekapselt ist. Die Trainings- und Validierungsschleifen sind halbautomatisch, sodass Sie nur Ihre Logik für jeden Schritt angeben müssen. Es ist auch einfacher, die Trainingsergebnisse in mehreren GPUs oder verschiedenen Hardwaremischungen einzurichten, da die Anweisungen und Objektreferenzen dafür zentralisiert sind.

Scikit-lernen

Python hat sich aufgrund seiner einfachen Einführung und der Breite der für nahezu jede Anwendung verfügbaren Bibliotheken zu einer bevorzugten Programmiersprache für Mathematik, Naturwissenschaften und Statistik entwickelt. Scikit-learn nutzt diese Breite, indem es auf mehreren vorhandenen Python-Paketen - NumPy, SciPy und Matplotlib - für mathematische und naturwissenschaftliche Arbeiten aufbaut. Die resultierenden Bibliotheken können für interaktive „Workbench“ -Anwendungen verwendet oder in andere Software eingebettet und wiederverwendet werden. Das Kit ist unter einer BSD-Lizenz erhältlich, daher vollständig geöffnet und wiederverwendbar.

Shogun

Shogun ist eines der langlebigsten Projekte in dieser Sammlung. Es wurde 1999 erstellt und in C ++ geschrieben, kann aber mit Java, Python, C #, Ruby, R, Lua, Octave und Matlab verwendet werden. Die neueste Hauptversion 6.0.0 bietet native Unterstützung für Microsoft Windows und die Scala-Sprache.

Obwohl Shogun beliebt und weitreichend ist, hat es Konkurrenz. Eine andere C ++ - basierte Bibliothek für maschinelles Lernen, Mlpack, gibt es erst seit 2011, sie ist jedoch schneller und einfacher zu bearbeiten (über ein integraleres API-Set) als konkurrierende Bibliotheken.

Spark MLlib

MLlib, die Bibliothek für maschinelles Lernen für Apache Spark und Apache Hadoop, bietet viele gängige Algorithmen und nützliche Datentypen, die für eine schnelle und skalierbare Ausführung ausgelegt sind. Obwohl Java die Hauptsprache für die Arbeit in MLlib ist, können Python-Benutzer MLlib mit der NumPy-Bibliothek verbinden, Scala-Benutzer können Code für MLlib schreiben und R-Benutzer können ab Version 1.5 in Spark einbinden. Version 3 von MLlib konzentriert sich auf die Verwendung der DataFrame-API von Spark (im Gegensatz zur älteren RDD-API) und bietet viele neue Klassifizierungs- und Bewertungsfunktionen.

Ein weiteres Projekt, MLbase, baut auf MLlib auf, um das Ableiten von Ergebnissen zu vereinfachen. Anstatt Code zu schreiben, stellen Benutzer Abfragen über eine deklarative Sprache à la SQL.

Weka

Weka, das von der Machine Learning Group an der Universität von Waikato gegründet wurde, wird als „maschinelles Lernen ohne Programmierung“ bezeichnet. Es ist eine GUI-Workbench, mit der Data Wrangler Pipelines für maschinelles Lernen zusammenstellen, Modelle trainieren und Vorhersagen ausführen können, ohne Code schreiben zu müssen. Weka arbeitet direkt mit R, Apache Spark und Python, letzteres über einen direkten Wrapper oder über Schnittstellen für gängige numerische Bibliotheken wie NumPy, Pandas, SciPy und Scikit-learn. Der große Vorteil von Weka besteht darin, dass es durchsuchbare, benutzerfreundliche Oberflächen für jeden Aspekt Ihres Jobs bietet, einschließlich Paketverwaltung, Vorverarbeitung, Klassifizierung und Visualisierung.