Plataformas y librerías para comenzar en el mundo del Machine Learning

Tuesday, April 24, 2018

Plataformas y librerías para comenzar en el mundo del Machine Learning

Escrito por Sergio Sancho Azcoitia, Security Research en ElevenPaths.

Desde los comienzos de la IA las principales empresas tecnológicas han empleado sus técnicas de aprendizaje con juegos clásicos como el ajedrez o el Go (juego tradicional chino) para mostrar su progreso siendo muchas veces capaces de derrotar a seres humanos como el campeón de ajedrez Gary Kasparov, que fue derrotado por Deep Blue de IBM.

A día de hoy, la inteligencia artificial (IA) se ha convertido en uno de los campos de desarrollo con más potencial, y se estima que durante los próximos años se convertirá en uno de los sectores que más avance y  genere  mayores beneficios a las empresas. En este campo emergente, con  una tasa anual de crecimiento de un 25%,  existen varias plataformas enfocadas a que los desarrolladores puedan trabajar en sus proyectos. Las plataformas consisten en software que una empresa ofrece a terceros, haciendo que éstas dependan del mismo a la hora de realizar su trabajo (como por ejemplo el sistema operativo Windows). A continuación os hablaremos de algunos de los lenguajes y librerías que pueden resultarte de interés si quieres comenzar en este mundillo.



Comenzaremos hablando de Python, Python es un lenguaje de programación con propósitos más generales que su uso en la inteligencia artificial. Sin embargo, está obteniendo gran popularidad entre expertos e ingenieros de Machine Learning. Todo esto se debe a algunas de sus librerías, algo que le hace capaz de ofrecer casi las mismas funcionalidades que otros lenguajes o plataformas como R o MatLab. A continuación, os presentaremos brevemente algunas de ellas. Si quieres saber más sobre librerías de Python, no te pierdas este otro post de nuestro blog: Python para todos (3): ScyPy, NumPy, Pandas ...¿Qué librerías necesitamos?)

  • NumPy: Esta es la principal librería para computación científica, contiene herramientas para integrar C++ e incluye funciones útiles en Algebra y transformadas de Fourier.
  • SciPy: En este caso tenemos una librería open-source para las matemáticas, ciencia e ingeniería. Esta librería incluye paquetes como Matplotlib o Pandas.
  • Pandas: Es una de las mejores librerías para el análisis de datos, es open-source y proporciona un alto rendimiento y facilidad de uso haciendo que no sea necesario cambiar nuestro código a otros lenguajes como R para poder analizarlo.
  • Scikit-learn: Esta librería está completamente enfocada al machine learning, ofrece herramientas simples y eficientes para la extracción y análisis de datos, es accesible para todo el mundo y está construida en base a NumPy, SciPy y Matplotlib.
  • Theano: Con esta librería podrás definir, evaluar y optimizar funciones matemáticas, tiene un funcionamiento fluido y se puede integrar con NumPy.
  • Tensorflow: Es una librería dedicada a la computación numérica, TensorFlow fue creada originalmente por el Brain Team de Google con el fin de realizar investigación de redes neuronales a un nivel profundo, pero su uso también es aplicable a varios dominios.

Continuamos con C++, un lenguaje enfocado principalmente a software a bajo nivel como el de componentes de un sistema operativo o protocolos de red. Este lenguaje se utiliza con frecuencia en sistemas integrados e infraestructuras que funcionan con sensores. En muchas ocasiones resulta ser un lenguaje un poco complicado para principiantes pero goza de un gran potencial. A continuación os presentamos algunas de las librerías que se pueden utilizar en C++ para realizar trabajos de Machine Learning.

  • LibSVM: Esta librería es muy útil para trabajar con  máquinas de soporte vectorial  (SVM), sirve para resolver problemas de clasificación y regresión de vectores. También puede servir para predecir la clase de una futura muestra.
  • Shark: Esta librería ofrece métodos de optimización lineal y no lineal, está basada en el aprendizaje de los algoritmos del núcleo, redes neurales y otras técnicas avanzadas de machine learning. Es compatible con la mayoría de sistemas operativos.
  • Mlpack: En este caso nos encontramos frente a una librería cuya finalidad es ofrecer una rápida puesta en marcha de los algoritmos de machine learning, esto lo hace proveyendo a estos algoritmos una línea de código simple que facilita su integración en soluciones de mayor escala.

Otro de los lenguajes más utilizados en el Machine Learning es Java, esto se debe a que es un lenguaje orientado a objetos y es bastante consistente, se basa en la claridad y fiabilidad, es open-source y es compatible con cualquier plataforma. Con java podrás desarrollar prácticamente cualquier aplicación, además cuenta con una gran cantidad de librerías, a continuación os presentaremos algunas de ellas enfocadas al mundo del Machine Learning.

  • Spark+MLlib: Esta librería encaja a la perfección con las APIs de Spark y trabaja conjuntamente con NumPy, Spark acelera el funcionamiento de MLlib, cuyo objetivo es realizar un aprendizaje escalable y más sencillo.
  • Mahout: Nos encontramos frente a una librería similar a NumPy, está enfocada a las expresiones matemáticas, algebraicas y estadísticas. 
  • Deeplearning4j: Esta es una librería dedicada al Deep learning, está escrita para Java y Scala, ofrece un entorno para que los desarrolladores entrenen y elaboren modelos de IA.

Por último, pero no por ello menos importante os hablamos de R, un lenguaje diseñado para la programación estática, es uno de los mejores para minar datos a gran escala y que también ofrece una gran colección de paquetes que permiten aplicar infinidad de algoritmos de Machine Learning y realizar test estáticos con ellos. Varias de las librerías mencionadas anteriormente son compatibles con R, y es por eso que , habiendo diversas posibilidades a la hora de elegir un lenguaje o plataforma para trabajar con IA a día de hoy, R es uno de los favoritos para desarrolladores de todo el mundo.

No comments:

Post a Comment