MLlib, la biblioteca de Machine Learning de Spark

MLlib la biblioteca de Machine Learning de Spark

MLlib o Spark MLlib es la librería de Machine Learning (ML) de Apache Spark. El framework de computación distribuida que incorpora esta librería permite hacer uso de una serie de algoritmos de Machine Learning.

Lo interesante de todo esto, es que los algoritmos de Machine Learning que están implementados dentro de MLlib pueden ser escalados y paralelizados, aprovechando toda la base de Spark.

Dentro de MLlib podemos encontrar dos APIs:

  • La API principal o Spark ML, basada en DataFrames y que es esta dentro del paquete ml
  • Y la API original o Spark MLlib, que hace uso de RDDs y esta dentro del paquete mllib. Actualmente se encuentra en modo mantenimiento y muy probable que deje de existir en Spark 3.0

El cambio de pasar de API basada en RDDs a otra basada en DataFrames, se debe a que estos últimos unas estructuras de datos más rápidas y fáciles de manejar.

MLlib la biblioteca de Machine Learning de Spark

Spark MLlib dispone de los siguientes herramientas:

  • Algoritmos de ML: son el core de MLlib. Están incluidos los algoritmos de machine learning más comunes: Clasificadores, Regresores, Clustering y Filtros Colaborativos.
  • Featurization: herramienta para extraer, seleccionar y transformar variables.
  • Pipelines: otra herramienta para construir, evaluar y optimizar las pipelines de ML.
  • Persistence: para guardar y cargar algoritmos, modelos y pipelines.
  • Utilities: utilidades de álgebra lineal, estadística y manejo de datos.

Dentro entre todas estas, cabría destacar las siguientes:

  • Estadística Básica
  • Algoritmos de Clasificación y Regresión
  • Sistemas de Recomendación
  • Clustering
  • Gestión de Features
  • Optimización

Estadística Básica

Incluye las técnicas de machine learning más básicas, como:

  • Cálculo de estadísticos descriptivos: media, varianza, , max, min, etc.
  • Se puede ver el grado de correlación existente entre las variables.
  • Muestreo estratificado, a través de dos métodos sampleBykey y sampleByKeyExact.
  • Contraste de hipótesis, por ejemplo a través del test de Chi-Cuadrado.
  • Generación de datos aleatorios siguiendo una determinada distribución, Normal o Poisson, por ejemplo.

Algoritmos de Clasificación y Regresión

Los problemas de aprendizaje supervisado son aquellos en los que existe una variable explícita, algo concreto: edad, fuga, color de pelo… a predecir.

Para aprender a predecir dicha variable, tendremos que enseñar al modelo un histórico pasado, del cual ya sabemos la respuesta, es decir, se utilizan datasets etiquetados, en los que ya se tiene información acerca de lo sucedido. Es decir, para crear un modelo de detección de fraude, será necesario contar con un conjunto de datos donde se sepa quién ha hecho fraude y quién no.

Los supervisados se dividen en dos categorías, clasificadores y regresores, dependiendo de cómo sea la variable a predecir.

En los de clasificación la variable a predecir es una categoría o clase (valor categórico o discreto), por ejemplo: rubio/moreno/pelirrojo, fuga/no-fuga de cliente, software malicioso/no-malicioso, etc. En estos, el modelo da como resultado un valor de probabilidad para cada una de las categorías disponibles (distribución de probabilidad).

Para el caso de la regresión, la variable a predecir es numérica (normalmente continua pero no es estrictamente necesario), por ejemplo: edad, altura, valor de una casa, número de Gb que va a gastar un cliente, etc.

En Spark MLlib están implementados muchos de estos algoritmos, tal y como podemos ver en la siguiente tabla, obtenida de su documentación oficial:

MLlib la biblioteca de Machine Learning de Spark

Sistemas de Recomendación

Un sistema de recomendación es una subclase de un sistema de filtrado de información que busca predecir la “calificación” o “preferencia” que un usuario daría a un elemento. Se han vuelto muy populares en los últimos años y se utilizan en muchas áreas que incluyen: películas, música, noticias, libros, artículos de investigación, búsquedas, etiquetas sociales y productos en general.

Se pueden clasificar según la forma en que generen la lista de recomendaciones:

  • Los filtros colaborativos basan la construcción del modelo en el comportamiento pasado del usuario (elementos previamente comprados o seleccionados y / o calificaciones numéricas otorgadas a esos elementos), así como decisiones similares tomadas por otros usuarios. Este modelo luego se usa para predecir los artículos en los que el usuario puede estar interesado.
  • Los métodos de filtrado basado en contenido utilizan una serie de características discretas de un artículo para recomendar elementos adicionales, con propiedades similares.
  • Además, estos dos enfoques a menudo se combinan como sistemas de recomendación híbridos.

Spark MLlib permite el uso de filtros colaborativos, a través del algoritmo ALS (alternating least squares).

Clustering

Los algoritmos de clustering son capaces crear una serie clústeres o grupos de observaciones que son similares entre sí.

Hay dos tipos de algoritmos de clustering:

  • Basados en la distancia: utilizan una métrica de distancia, como puede ser la euclídea, Manhattan o Mahalanobis, para separar los distintos grupos o clusters.
  • Basados en la densidad: computan los grupos teniendo cuenta la distancia entre los puntos y las “zonas” donde la densidad de puntos/observaciones es mayor.

Spark MLlib, permite de los siguientes algoritmos de clustering: K-means, Latent Dirichlet allocation (LDA), Bisecting k-means, Gaussian Mixture Model (GMM). Puedes obtener más información acerca de los mismos en el siguiente link.

Gestión de Features

Spark MLlib dispone de un buen número de algoritmos para  la extracción, selección y transformación de variables. Tienes más información al respecto, en el siguiente link.

Optimization

Spark MLlib disponer de una serie de métodos para optimizar el entrenamiento de los algoritmos, es decir, mejorar su velocidad de entrenamiento sin que haya pérdida en el rendimiento.

Para ver más detalles acerca de estos métodos, consulta el siguiente link.


Y hasta aquí esta introducción esta introducción al MLlib de Spark, en próximas entregas ahondaremos en algunos de los aspectos que se han visto aquí.

¡Buen día a tod@s!

Javier Moralo, Data & AI Creative de datahack

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *