Top de librerías open source y frameworks para desarrollar Machine Learning

30 Abr, 2018

 

open source

Realizado por nuestro SmartB Francisco Padrino

En la actualidad  el crecimiento  de las aplicaciones o soluciones basados en machine learning en el campo de Big Data por parte del uso empresarial y comercial, es  debido a su gran de  capacidad de segmentar, clasificar, modelar  y  predecir todo aquellas variables o indicadores, que permiten el desarrollo y mejoras de los productos/servicios.  El científico de datos tiene la tarea de recolectar y  preparar (ETL) los datos, en función del modelo de negocio o variables de interés, y finalmente implementar el mejor algoritmo que modele la solución, lo cual corresponde a un conjunto de pasos que se debe seguir.

 

Pasos para la implementación de un modelo machine learning

 

Pasos para la implementación de un modelo Machine Learning

Recolectar la información: la gran variedad de datos útiles, por ejemplo las bases de datos públicas, bases de datos de empresas o incluso información libre en internet que se puede obtener con un scraper de datos. En esta etapa se deben limpiar los datos haciendo uniones entre las diferentes bases de datos.

Representación de los datos: Existe varias forma de representar los datos, en una base hay objetos o ejemplos en las filas, y características en las columnas. Es importante que estas características sean relevantes, útiles y que nos permitan entrenar el modelo.

 Aprendizaje: Para esta fase debemos elegir un algoritmo que se va alimentar con datos de entrenamiento. Así se obtiene un modelo que puede generar predicciones basadas en datos.

Evaluación del modelo: Al retomar los datos de una predicción generada por el modelo se pueden comparar con los datos reales que se utilizaron para alimentar el algoritmo. Así se puede obtener una métrica de rendimiento para decidir si el modelo es satisfactorio o si se debe iterar el proceso.

 

Herramientas de código abierto

 

El científico de datos  tiene a su disposición una gran variedad de software de código abierto,  librerías y framework que hace que machine learning sea cada vez menos difícil de implementar tanto para una maquina o la utilización a gran escala. Las siguientes herramientas de código abierto son las más utilizadas  y  populares incluyen librerías para Python, R, C++, Java, Scala, Clojure, JavaScript y Go.

– Sciki-learn: Python se ha convertido en el lenguaje de programación para matemáticas, ciencia y estadística ya sea por lo fácil que es adoptarlo y el número de librerías disponibles. Scikit-learn lidera al estar construido en las mejores librerías de Python (NumPy, SciPy y Matplotlib) para matemática y ciencias. La librería esta disponible bajo licencia BSD, por lo tanto es completamente abierto y reutilizable.

– Shogun: Creado en 1999 y escrito en C++, pero puede ser utilizado con Java, Python, C#, Ruby, R, Lua, Octave y Matlab. La última versión 6.0.0, agrega soporte para Windows y Scala. Shogun tiene un competidor Mlpack, que fue creado en 2011 y profesa ser más fácil y rápida para trabajar.

– Accord.Net framework: librería para machine learning y procesamiento de señales hecha para .Net, es una extensión del proyecto AForget.net. Accord incluye un conjunto de librerías para procesamiento de audio y flujo de imágenes (vídeos). Este algoritmo puede ser utilizado para detección de rostros o para seguimiento del movimiento de objetos.

– Apache Mahout: esta bastante emparejado con Hadoop, pero muchos de estos algoritmos funcionan también fuera de Hadoop. Es muy útil para aplicaciones de escritorio que luego serán migradas dentro de Hadoop o para proyectos con Hadoop.

– Spark MLib: Librería para Apache Spark y Apache Hadoop. MLib tiene muchos algoritmos y tipos de datos útiles, diseñado para ser rápido y a escala. Aunque Java es el primer lenguaje para trabajar con MLib, los usuarios de Python pueden conectar MLib con NumPy, los usuarios de Scala también pueden escribir código para MLib y los usuarios de R pueden trabajar con Spark versión 1.5.

– H2O: Está hecho para procesos de negocio, fraude o predicción de tendencias. H2O puede interactuar con HDFS, YARN, MapReduce o directamente con una instancia de EC2. Hadoop puede utilizar Java para interactuar H2O, pero el framework también proporciona enlaces para Python, R y Scala.

 GoLearn: Librería de machine learning para el lenguaje Go de Google, ha sido creado con las reglas de simplicidad y personalización.

– Weka: Es un conjunto de algoritmos Java para machine learning especificado para la minería de datos. Esta licenciado con GNU GLPv3 y tiene una colección de paquetes, oficiales y no oficiales. Weka también llega con un libro que explica el software y las técnicas usadas.

– Deeplearn.js: Otro proyecto para deep learning en el navegador web, Deeplearn.js, llega de la mano de Google.  Las redes neuronales son entrenadas directamente en el browser, sin ningún software del lado del cliente.

– ConvNetJS: Tal como el nombre lo indica, esta librería es una librería JavaScript para redes neuronales, facilita el uso del navegador para trabajar con el navegador. También esta disponible para trabajar con Node.js utilizando NPM.

– TensorFlow: Cuando una red neuronal se vuelve más compleja, llena de capas y parámetros, el proceso se vuelve mucho más complejo. Es aquí donde entra TensorFlow, una librería de computación numérica que computa gradientes automáticamente, esto quiere decir que está a un nivel más bajo y profundo que Keras o Pytorch. TensorFlow fue desarrollada por Google y la utilizan empresas como Airbnb, Dropbox, Uber y Snapchat. Aunque es muy popular es más recomendable para proyectos grandes y quizás más complejos, pues te da mucho control cuando estás construyendo redes neuronales. Si quieres aprender a diseñar redes neuronales y crear prototipos de manera rápida para entender cómo funcionan, una librería como Keras es ideal, pues incluso ésta utiliza TensorFlow por debajo para computar gradientes, pero sin que tengas que involucrarte con eso.

– Pytorch: es un framework de Python que permite el crecimiento rápido del Deep Learning, con una fuerte aceleración de la GPU. La característica principal de Pytorch es que utiliza grafos computacionales dinámicos. Todos los frameworks de Deep Learning utilizan un lenguaje, como Python en este caso, y un grafo computacional. Esto funciona así por cuestiones de eficiencia y optimización, pues un grafo computacional corre en paralelo en la GPU.Volviendo a la analogía del menú del restaurante, al utilizar un framework o una librería como Pytorch o Keras, básicamente con eso se empieza a trabajar y funciona muy bien para hacer predicciones. Pero después de decidir cuáles son los platos del menú tienes que saber cómo prepararlos. Esto sería el equivalente a ajustar la red y computar los pesos y los sesgos que puede tener, y se hace con gradientes.