14 outils open source pour tirer le meilleur parti de l'apprentissage automatique

Filtrage du spam, reconnaissance faciale, moteurs de recommandation - lorsque vous disposez d'un grand ensemble de données sur lequel vous souhaitez effectuer une analyse prédictive ou une reconnaissance de formes, l'apprentissage automatique est la voie à suivre. La prolifération des logiciels open source gratuits a rendu l'apprentissage automatique plus facile à mettre en œuvre à la fois sur des machines uniques et à grande échelle, et dans les langages de programmation les plus courants. Ces outils open source incluent des bibliothèques pour Python, R, C ++, Java, Scala, Clojure, JavaScript et Go.

Apache Mahout

Apache Mahout offre un moyen de créer des environnements pour héberger des applications d'apprentissage automatique qui peuvent être mis à l'échelle rapidement et efficacement pour répondre à la demande. Mahout fonctionne principalement avec un autre projet Apache bien connu, Spark, et a été initialement conçu pour fonctionner avec Hadoop dans le but d'exécuter des applications distribuées, mais a été étendu pour fonctionner avec d'autres back-ends distribués comme Flink et H2O.

Mahout utilise un langage spécifique au domaine dans Scala. La version 0.14 est un refactor interne majeur du projet, basé sur Apache Spark 2.4.3 par défaut.

Composer

Compose, par Innovation Labs, cible un problème courant avec les modèles d'apprentissage automatique: l'étiquetage des données brutes, qui peut être un processus lent et fastidieux, mais sans lequel un modèle d'apprentissage automatique ne peut pas fournir de résultats utiles. Compose vous permet d'écrire en Python un ensemble de fonctions d'étiquetage pour vos données, afin que l'étiquetage puisse être effectué de la manière la plus programmatique possible. Diverses transformations et seuils peuvent être définis sur vos données pour faciliter le processus d'étiquetage, comme le placement de données dans des bacs en fonction de valeurs discrètes ou de quantiles.

Outils de base ML

Le framework Core ML d'Apple vous permet d'intégrer des modèles d'apprentissage automatique dans des applications, mais utilise son propre format de modèle d'apprentissage distinct. La bonne nouvelle est que vous n'avez pas besoin de pré-entraîner les modèles au format Core ML pour les utiliser; vous pouvez convertir des modèles de presque tous les frameworks d'apprentissage automatique couramment utilisés en Core ML avec Core ML Tools.

Core ML Tools fonctionne comme un package Python, de sorte qu'il s'intègre à la richesse des bibliothèques et outils d'apprentissage automatique Python. Les modèles de TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learn, LibSVM et XGBoost peuvent tous être convertis. Les modèles de réseau neuronal peuvent également être optimisés pour la taille en utilisant la quantification post-entraînement (par exemple, à une petite profondeur de bits qui est toujours précise).

Cortex

Cortex offre un moyen pratique de diffuser des prédictions à partir de modèles d'apprentissage automatique à l'aide de Python et TensorFlow, PyTorch, Scikit-learn et d'autres modèles. La plupart des packages Cortex se composent de seulement quelques fichiers - votre logique Python de base, un fichier cortex.yaml qui décrit les modèles à utiliser et les types de ressources de calcul à allouer, et un fichier requirements.txt pour installer toutes les exigences Python nécessaires. L'ensemble du package est déployé en tant que conteneur Docker sur AWS ou un autre système d'hébergement compatible Docker. Les ressources de calcul sont allouées d'une manière qui fait écho aux définitions utilisées dans Kubernetes, et vous pouvez utiliser des GPU ou des ASIC Amazon Inferentia pour accélérer la diffusion.

Outils en vedette

L'ingénierie des fonctionnalités, ou création de fonctionnalités, implique de prendre les données utilisées pour entraîner un modèle d'apprentissage automatique et de produire, généralement à la main, une version transformée et agrégée des données qui est plus utile pour entraîner le modèle. Featuretools vous offre des fonctions pour ce faire au moyen d'objets Python de haut niveau construits en synthétisant des données dans des dataframes, et peut le faire pour les données extraites d'une ou plusieurs dataframes. Featuretools fournit également des primitives communes pour les opérations de synthèse (par exemple, time_since_previouspour fournir le temps écoulé entre les instances de données horodatées), vous n'avez donc pas à les rouler vous-même.

GoLearn

GoLearn, une bibliothèque d'apprentissage automatique pour le langage Go de Google, a été créée avec le double objectif de simplicité et de personnalisation, selon le développeur Stephen Whitworth. La simplicité réside dans la façon dont les données sont chargées et traitées dans la bibliothèque, qui est calquée sur SciPy et R. La personnalisation réside dans la façon dont certaines des structures de données peuvent être facilement étendues dans une application. Whitworth a également créé un wrapper Go pour la bibliothèque Vowpal Wabbit, l'une des bibliothèques présentes dans la boîte à outils Shogun.

Gradio

L'un des défis courants lors de la création d'applications d'apprentissage automatique consiste à créer une interface utilisateur robuste et facilement personnalisée pour les mécanismes de formation des modèles et de service de prédiction. Gradio fournit des outils pour créer des interfaces utilisateur Web qui vous permettent d'interagir avec vos modèles en temps réel. Plusieurs exemples de projets inclus, tels que les interfaces d'entrée vers le classificateur d'images Inception V3 ou le modèle de reconnaissance d'écriture manuscrite MNIST, vous donnent une idée de la façon dont vous pouvez utiliser Gradio avec vos propres projets.

H2O

H2O, maintenant dans sa troisième révision majeure, fournit une plate-forme complète pour l'apprentissage automatique en mémoire, de la formation à la diffusion des prédictions. Les algorithmes de H2O sont conçus pour les processus métier (prédictions de fraude ou de tendance, par exemple) plutôt que, par exemple, l'analyse d'image. H2O peut interagir de manière autonome avec les magasins HDFS, au-dessus de YARN, dans MapReduce ou directement dans une instance Amazon EC2.

Les mavens Hadoop peuvent utiliser Java pour interagir avec H2O, mais le framework fournit également des liaisons pour Python, R et Scala, vous permettant également d'interagir avec toutes les bibliothèques disponibles sur ces plates-formes. Vous pouvez également revenir aux appels REST pour intégrer H2O dans la plupart des pipelines.

Oryx

Oryx, gracieuseté des créateurs de la distribution Cloudera Hadoop, utilise Apache Spark et Apache Kafka pour exécuter des modèles d'apprentissage automatique sur des données en temps réel. Oryx fournit un moyen de créer des projets qui nécessitent des décisions sur le moment, comme des moteurs de recommandation ou la détection d'anomalies en direct, qui sont informés à la fois par des données nouvelles et historiques. La version 2.0 est une refonte presque complète du projet, avec ses composants faiblement couplés dans une architecture lambda. De nouveaux algorithmes et de nouvelles abstractions pour ces algorithmes (par exemple pour la sélection d'hyperparamètres) peuvent être ajoutés à tout moment.

PyTorch Lightning

Lorsqu'un projet puissant devient populaire, il est souvent complété par des projets tiers qui le rendent plus facile à utiliser. PyTorch Lightning fournit un wrapper organisationnel pour PyTorch, afin que vous puissiez vous concentrer sur le code qui compte au lieu d'écrire des passe-partout pour chaque projet.

Les projets Lightning utilisent une structure basée sur des classes, de sorte que chaque étape commune d'un projet PyTorch est encapsulée dans une méthode de classe. Les boucles de formation et de validation sont semi-automatisées, il vous suffit donc de fournir votre logique pour chaque étape. Il est également plus facile de configurer les résultats de la formation dans plusieurs GPU ou différents mélanges de matériel, car les instructions et les références d'objet pour ce faire sont centralisées.

Scikit-learn

Python est devenu un langage de programmation incontournable pour les mathématiques, les sciences et les statistiques en raison de sa facilité d'adoption et de l'étendue des bibliothèques disponibles pour presque toutes les applications. Scikit-learn tire parti de cette ampleur en s'appuyant sur plusieurs packages Python existants - NumPy, SciPy et Matplotlib - pour les travaux mathématiques et scientifiques. Les bibliothèques résultantes peuvent être utilisées pour des applications interactives de «workbench» ou intégrées dans d'autres logiciels et réutilisées. Le kit est disponible sous licence BSD, il est donc entièrement ouvert et réutilisable.

Shogun

Shogun est l'un des projets les plus anciens de cette collection. Il a été créé en 1999 et écrit en C ++, mais peut être utilisé avec Java, Python, C #, Ruby, R, Lua, Octave et Matlab. La dernière version majeure, 6.0.0, ajoute la prise en charge native de Microsoft Windows et du langage Scala.

Bien que populaire et varié, Shogun a de la concurrence. Une autre bibliothèque d'apprentissage automatique basée sur C ++, Mlpack, n'existe que depuis 2011, mais prétend être plus rapide et plus facile à utiliser (grâce à un ensemble d'API plus complet) que les bibliothèques concurrentes.

Spark MLlib

La bibliothèque d'apprentissage automatique pour Apache Spark et Apache Hadoop, MLlib possède de nombreux algorithmes courants et des types de données utiles, conçus pour s'exécuter à la vitesse et à l'échelle. Bien que Java soit le principal langage pour travailler dans MLlib, les utilisateurs Python peuvent connecter MLlib à la bibliothèque NumPy, les utilisateurs Scala peuvent écrire du code sur MLlib et les utilisateurs R peuvent se connecter à Spark à partir de la version 1.5. La version 3 de MLlib se concentre sur l'utilisation de l'API DataFrame de Spark (par opposition à l'ancienne API RDD) et fournit de nombreuses nouvelles fonctions de classification et d'évaluation.

Un autre projet, MLbase, s'appuie sur MLlib pour faciliter l'obtention des résultats. Plutôt que d'écrire du code, les utilisateurs effectuent des requêtes via un langage déclaratif à la SQL.

Weka

Weka, créé par le Machine Learning Group de l'Université de Waikato, est présenté comme «l'apprentissage automatique sans programmation». C'est un atelier d'interface graphique qui permet aux gestionnaires de données d'assembler des pipelines d'apprentissage automatique, de former des modèles et d'exécuter des prédictions sans avoir à écrire de code. Weka fonctionne directement avec R, Apache Spark et Python, ce dernier via un wrapper direct ou via des interfaces pour des bibliothèques numériques courantes telles que NumPy, Pandas, SciPy et Scikit-learn. Le grand avantage de Weka est qu'il fournit des interfaces navigables et conviviales pour tous les aspects de votre travail, y compris la gestion des packages, le prétraitement, la classification et la visualisation.