14 herramientas de código abierto para aprovechar al máximo el aprendizaje automático

Filtrado de correo no deseado, reconocimiento facial, motores de recomendación: cuando tiene un gran conjunto de datos en el que le gustaría realizar análisis predictivos o reconocimiento de patrones, el aprendizaje automático es el camino a seguir. La proliferación de software de código abierto gratuito ha hecho que el aprendizaje automático sea más fácil de implementar tanto en máquinas individuales como a escala, y en los lenguajes de programación más populares. Estas herramientas de código abierto incluyen bibliotecas para Python, R, C ++, Java, Scala, Clojure, JavaScript y Go.

Apache Mahout

Apache Mahout proporciona una forma de crear entornos para alojar aplicaciones de aprendizaje automático que se pueden escalar de forma rápida y eficiente para satisfacer la demanda. Mahout trabaja principalmente con otro conocido proyecto de Apache, Spark, y originalmente fue diseñado para trabajar con Hadoop por el simple hecho de ejecutar aplicaciones distribuidas, pero se ha ampliado para trabajar con otros backends distribuidos como Flink y H2O.

Mahout utiliza un lenguaje específico de dominio en Scala. La versión 0.14 es un refactor interno importante del proyecto, basado en Apache Spark 2.4.3 como predeterminado.

Componer

Compose, de Innovation Labs, tiene como objetivo un problema común con los modelos de aprendizaje automático: etiquetar datos sin procesar, que puede ser un proceso lento y tedioso, pero sin el cual un modelo de aprendizaje automático no puede ofrecer resultados útiles. Compose le permite escribir en Python un conjunto de funciones de etiquetado para sus datos, por lo que el etiquetado se puede realizar de la manera más programática posible. Se pueden establecer varias transformaciones y umbrales en sus datos para facilitar el proceso de etiquetado, como colocar datos en contenedores basados ​​en valores discretos o cuantiles.

Herramientas de Core ML

El marco Core ML de Apple le permite integrar modelos de aprendizaje automático en aplicaciones, pero utiliza su propio formato de modelo de aprendizaje distinto. La buena noticia es que no tiene que entrenar previamente los modelos en el formato Core ML para usarlos; puede convertir modelos de casi todos los marcos de aprendizaje automático de uso común en Core ML con Core ML Tools.

Core ML Tools se ejecuta como un paquete de Python, por lo que se integra con la gran cantidad de bibliotecas y herramientas de aprendizaje automático de Python. Los modelos de TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learn, LibSVM y XGBoost se pueden convertir. Los modelos de redes neuronales también se pueden optimizar para el tamaño mediante el uso de cuantificación posterior al entrenamiento (por ejemplo, a una pequeña profundidad de bits que aún es precisa).

Corteza

Cortex proporciona una forma conveniente de entregar predicciones a partir de modelos de aprendizaje automático mediante Python y TensorFlow, PyTorch, Scikit-learn y otros modelos. La mayoría de los paquetes de Cortex constan de solo unos pocos archivos: su lógica central de Python, un archivo cortex.yaml que describe qué modelos usar y qué tipos de recursos informáticos asignar, y un archivo requirements.txt para instalar los requisitos de Python necesarios. El paquete completo se implementa como un contenedor de Docker en AWS u otro sistema de alojamiento compatible con Docker. Los recursos informáticos se asignan de una manera que se hace eco de las definiciones utilizadas en Kubernetes para los mismos, y puede usar GPU o ASIC de Amazon Inferentia para acelerar el servicio.

Featuretools

La ingeniería de características, o creación de características, implica tomar los datos utilizados para entrenar un modelo de aprendizaje automático y producir, generalmente a mano, una versión transformada y agregada de los datos que es más útil para entrenar el modelo. Featuretools le brinda funciones para hacer esto a través de objetos Python de alto nivel construidos sintetizando datos en marcos de datos, y puede hacer esto para datos extraídos de uno o varios marcos de datos. Featuretools también proporciona primitivas comunes para las operaciones de síntesis (por ejemplo, time_since_previouspara proporcionar el tiempo transcurrido entre instancias de datos con marca de tiempo), por lo que no tiene que pasarlos por su cuenta.

GoLearn

GoLearn, una biblioteca de aprendizaje automático para el lenguaje Go de Google, se creó con el doble objetivo de simplicidad y personalización, según el desarrollador Stephen Whitworth. La simplicidad radica en la forma en que se cargan y manejan los datos en la biblioteca, que sigue el patrón de SciPy y R. La personalización radica en cómo algunas de las estructuras de datos se pueden extender fácilmente en una aplicación. Whitworth también ha creado un contenedor Go para la biblioteca Vowpal Wabbit, una de las bibliotecas que se encuentran en la caja de herramientas Shogun.

Gradio

Un desafío común al crear aplicaciones de aprendizaje automático es crear una interfaz de usuario robusta y fácilmente personalizada para los mecanismos de entrenamiento de modelos y servicio de predicciones. Gradio proporciona herramientas para crear interfaces de usuario basadas en web que le permiten interactuar con sus modelos en tiempo real. Varios proyectos de muestra incluidos, como interfaces de entrada para el clasificador de imágenes Inception V3 o el modelo de reconocimiento de escritura a mano MNIST, le dan una idea de cómo puede usar Gradio con sus propios proyectos.

H2O

H2O, ahora en su tercera revisión importante, proporciona una plataforma completa para el aprendizaje automático en memoria, desde el entrenamiento hasta la entrega de predicciones. Los algoritmos de H2O están diseñados para procesos comerciales (fraudes o predicciones de tendencias, por ejemplo) en lugar de, digamos, análisis de imágenes. H2O puede interactuar de forma independiente con las tiendas HDFS, además de YARN, en MapReduce o directamente en una instancia de Amazon EC2.

Los expertos en Hadoop pueden usar Java para interactuar con H2O, pero el marco también proporciona enlaces para Python, R y Scala, lo que le permite interactuar con todas las bibliotecas disponibles en esas plataformas. También puede recurrir a las llamadas REST como una forma de integrar H2O en casi cualquier canalización.

Orix

Oryx, cortesía de los creadores de la distribución Cloudera Hadoop, utiliza Apache Spark y Apache Kafka para ejecutar modelos de aprendizaje automático en datos en tiempo real. Oryx proporciona una forma de crear proyectos que requieren decisiones en el momento, como motores de recomendación o detección de anomalías en vivo, que se basan en datos nuevos e históricos. La versión 2.0 es un rediseño casi completo del proyecto, con sus componentes débilmente acoplados en una arquitectura lambda. En cualquier momento se pueden agregar nuevos algoritmos y nuevas abstracciones para esos algoritmos (por ejemplo, para la selección de hiperparámetros).

Rayo PyTorch

Cuando un proyecto poderoso se vuelve popular, a menudo se complementa con proyectos de terceros que facilitan su uso. PyTorch Lightning proporciona una envoltura organizativa para PyTorch, de modo que pueda concentrarse en el código que importa en lugar de escribir un texto estándar para cada proyecto.

Los proyectos Lightning utilizan una estructura basada en clases, por lo que cada paso común para un proyecto PyTorch se encapsula en un método de clase. Los ciclos de entrenamiento y validación son semiautomatizados, por lo que solo necesita proporcionar su lógica para cada paso. También es más fácil configurar los resultados de entrenamiento en múltiples GPU o diferentes combinaciones de hardware, porque las instrucciones y referencias de objetos para hacerlo están centralizadas.

Scikit-aprender

Python se ha convertido en un lenguaje de programación de referencia para matemáticas, ciencias y estadísticas debido a su facilidad de adopción y la variedad de bibliotecas disponibles para casi cualquier aplicación. Scikit-learn aprovecha esta amplitud al construir sobre varios paquetes de Python existentes (NumPy, SciPy y Matplotlib) para el trabajo de matemáticas y ciencias. Las bibliotecas resultantes se pueden utilizar para aplicaciones interactivas de "entorno de trabajo" o integradas en otro software y reutilizadas. El kit está disponible bajo una licencia BSD, por lo que es completamente abierto y reutilizable.

Shogun

Shogun es uno de los proyectos más longevos de esta colección. Fue creado en 1999 y escrito en C ++, pero puede usarse con Java, Python, C #, Ruby, R, Lua, Octave y Matlab. La última versión principal, 6.0.0, agrega soporte nativo para Microsoft Windows y el lenguaje Scala.

Aunque es popular y de gran alcance, Shogun tiene competencia. Otra biblioteca de aprendizaje automático basada en C ++, Mlpack, ha existido solo desde 2011, pero profesa ser más rápido y fácil de trabajar (a través de un conjunto de API más integral) que las bibliotecas de la competencia.

Spark MLlib

MLlib, la biblioteca de aprendizaje automático para Apache Spark y Apache Hadoop, cuenta con muchos algoritmos comunes y tipos de datos útiles, diseñados para ejecutarse a velocidad y escala. Aunque Java es el lenguaje principal para trabajar en MLlib, los usuarios de Python pueden conectar MLlib con la biblioteca NumPy, los usuarios de Scala pueden escribir código contra MLlib y los usuarios de R pueden conectarse a Spark a partir de la versión 1.5. La versión 3 de MLlib se centra en el uso de la API DataFrame de Spark (a diferencia de la API RDD anterior) y proporciona muchas funciones nuevas de clasificación y evaluación.

Otro proyecto, MLbase, se basa en MLlib para facilitar la obtención de resultados. En lugar de escribir código, los usuarios realizan consultas mediante un lenguaje declarativo al estilo SQL.

Weka

Weka, creado por el Grupo de Aprendizaje Automático de la Universidad de Waikato, se anuncia como "aprendizaje automático sin programación". Es un entorno de trabajo de GUI que permite a los encargados de gestionar los datos ensamblar canales de aprendizaje automático, entrenar modelos y ejecutar predicciones sin tener que escribir código. Weka trabaja directamente con R, Apache Spark y Python, este último mediante un contenedor directo o mediante interfaces para bibliotecas numéricas comunes como NumPy, Pandas, SciPy y Scikit-learn. La gran ventaja de Weka es que proporciona interfaces fáciles de navegar para todos los aspectos de su trabajo, incluida la gestión de paquetes, el preprocesamiento, la clasificación y la visualización.