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:
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.
Dentro entre todas estas, cabría destacar las siguientes:
Incluye las técnicas de machine learning más básicas, como:
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:
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:
Spark MLlib permite el uso de filtros colaborativos, a través del algoritmo ALS (alternating least squares).
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:
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.
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.
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í.
Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.
El pasado jueves 21 de abril a las 19:00 horas tuvo lugar en Datahack el primer Datatalk organizado en colaboración con el Instituto de Ingeniería del Conocimiento de la Universidad Autónoma de Madrid (IIC). Contó con la presencia de Sergio-Nabil Khayyat, que nos habló sobre la importancia y usos de los grafos en redes sociales gracias a herramientas del Big Data.
Tras una breve introducción en la que no faltó el habitual repaso a las uves del Big data, pasamos a conocer qué era un grafo, una representación visual de las relaciones que se establecen entre varios entes, como una red social del tipo Linkedin o las relaciones entre los compañeros de clase de un instituto.
Los grafos se componen de nodos y de aristas que unen estos nodos. Los tipos de grafos dependen de la tipología de los nodos y aristas que lo componen. Los nodos pueden ser iguales, si todos poseen la misma naturaleza, o desiguales, si pertenecen a categorías distintas, por ejemplo, si unos nodos son personas, otros son empresas, otros usuarios de pago, etc.
En cuanto a las aristas, estas pueden ser dirigidas, si representan una acción que va de un nodo X a un nodo Y, como cuando alguien retuitea a otro alguien; no dirigidas, como una relación de amistad en Facebook; o aristas con pesos.
Una característica importante a la hora de estudiar un grafo es la centralidad de los nodos, centralidad medida por la cercanía entre nodos, el grado de conexión entre nodos, la densidad de los nodos y la centralidad de vector propio. En este aspecto destaca Google, cuyo buscador en un principio se basó en la centralidad de los nodos. Como hay mucha información, el buscador tenía que ordenar y dar la información relevante; ¿Cómo lo hacía? Pues considerando a cada web como un nodo y calculando la centralidad de dichos nodos, creando así el Page Rank (Aunque claro, eso era en el origen; ahora usa muchos más datos: corrección y originalidad del contenido, texto Alt de las imágenes, Spam Score, Meta tags, Pingüino, Panda, etc.).
¿Qué aplicaciones prácticas se les puede dar al cálculo de rutas entre nodos? Pues desde encontrar quién es la persona más influyente dentro de una empresa hasta detectar fraudes y destapar casos como los Papeles de Panamá.
Un organigrama nos dice quiénes ocupan los puestos de mayor y de menor responsabilidad; pero a través del análisis de nodos podemos detectar qué persona es la que realmente está en contacto con todos y hace que las comunicaciones entre la dirección y los empleados funcionen, la persona sin la cual el negocio se ralentizaría. También se puede estudiar, en una multinacional, cuál es la relación entre sus filiales, ver cuál es más importante y detectar problemas de comunicación interna.
Del mismo modo, analizando las redes sociales, podemos encontrar a los líderes de opinión, los influencers, esas personas que si se compran un Smartphone de última generación son capaces de generar en sus conocidos la necesidad de compra del mismo modelo de teléfono móvil. Al identificarlos, la empresa puede regalar un producto al influencer a cambio de que lo anuncie, ganando así múltiples clientes potenciales.
A la hora de analizar los grafos y los datos que las redes sociales proporcionan a aquellos que buscan analizarlos surgen tres problemas principales: el procesamiento en tiempo real, la visualización de los datos mediante grafos y el análisis de los textos (para detectar, por ejemplo, si un tuit es negativo o positivo, si tiene una emoción buena o mala, etc.). Para acelerar el procesamiento de la información hasta hacerla accesible rápidamente contamos con herramientas como Spark, que tiene el record mundial en velocidad de procesamiento de datos. Para los grafos, destacan las herramientas Neo4J y Elastic Search. Para los análisis de texto, Sergio Nabil destacó la herramienta NLTK.
Tras su ponencia, Sergio-Nabil respondió amable y acertadamente a las cuestiones que planteó el público, accediendo después a un coloquio informal acompañado del cáterin preparado para la ocasión. Si no quieres perderte los próximos eventos que organicemos, consulta nuestro MeetUp o nuestra Web.
Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.