Spark MLlib - Bibliothèque d'apprentissage automatique d'Apache Spark

Ce blog Spark MLlib vous présentera la bibliothèque d'apprentissage automatique d'Apache Spark. Il comprend un projet de système de recommandation de film utilisant Spark MLlib.

Spark MLlib est le composant Machine Learning d'Apache Spark.L'une des principales attractions de Spark est la capacité à faire évoluer massivement le calcul, et c'est exactement ce dont vous avez besoin pour les algorithmes d'apprentissage automatique. Mais la limitation est que tous les algorithmes d'apprentissage automatique ne peuvent pas être efficacement parallélisés. Chaque algorithme a ses propres défis en matière de parallélisation, qu'il s'agisse de parallélisme de tâches ou de parallélisme de données.



Cela dit, Spark est en train de devenir la plate-forme de facto pour la création d'algorithmes et d'applications d'apprentissage automatique.Eh bien, vous pouvez consulter le organisée par des experts de l'industrie avant de continuer avec le blog.Les développeurs travaillant sur Spark MLlib implémentent de plus en plus d'algorithmes de machine de manière évolutive et concise dans le framework Spark. À travers ce blog, nous apprendrons les concepts de Machine Learning, Spark MLlib, ses utilitaires, ses algorithmes et un cas d'utilisation complet de Movie Recommendation System.



Les sujets suivants seront traités dans ce blog:

  1. Qu'est-ce que l'apprentissage automatique?
  2. Présentation de Spark MLlib
  3. Outils Spark MLlib
  4. Algorithmes MLlib
  5. Cas d'utilisation - Système de recommandation de films

Qu'est-ce que l'apprentissage automatique?

Développé à partir de l'étude de la reconnaissance de formes et de la théorie de l'apprentissage informatique dans l'intelligence artificielle, l'apprentissage automatique explore l'étude et la construction d'algorithmes qui peuvent apprendre et faire des prédictions sur les données - ces algorithmes surmontent les instructions de programme strictement statiques en faisant des prédictions ou des décisions basées sur les données. , en créant un modèle à partir d'échantillons d'entrées.



quelle est la difference entre git et github

Apprentissage automatique - Spark MLlib - Edureka Figure: Outils d'apprentissage automatique

L'apprentissage automatique est étroitement lié aux statistiques informatiques, qui se concentrent également sur la prédiction grâce à l'utilisation d'ordinateurs. Il a des liens étroits avec l'optimisation mathématique, qui fournit des méthodes, des théories et des domaines d'application dans le domaine. Dans le domaine de l'analyse de données, l'apprentissage automatique est une méthode utilisée pour concevoir des modèles et des algorithmes complexes qui se prêtent à une prédiction connue sous le nom d'analyse prédictive.

Il existe trois catégories de tâches d'apprentissage automatique:



  1. Enseignement supervisé : L'apprentissage supervisé est l'endroit où vous avez des variables d'entrée (x) et une variable de sortie (Y) et vous utilisez un algorithme pour apprendre la fonction de mappage de l'entrée vers la sortie.
  2. Apprentissage non supervisé : L'apprentissage non supervisé est un type d'algorithme d'apprentissage automatique utilisé pour tirer des inférences à partir d'ensembles de données constitués de données d'entrée sans réponses étiquetées.
  3. Apprentissage par renforcement : Un programme informatique interagit avec un environnement dynamique dans lequel il doit réaliser un certain objectif (comme conduire un véhicule ou jouer à un jeu contre un adversaire). Le programme reçoit des commentaires en termes de récompenses et de punitions alors qu'il navigue dans son espace à problèmes. Ce concept est appelé apprentissage par renforcement.

Présentation de Spark MLlib

Spark MLlib est utilisé pour effectuer un apprentissage automatique dans Apache Spark. MLlib comprend des algorithmes et des utilitaires populaires.

Présentation de MLlib:

  • spark.mllib contient l'API d'origine construite sur les RDD. Il est actuellement en mode maintenance.
  • spark.ml fournit une API de niveau supérieur basée sur DataFrames pour construire des pipelines ML. spark.ml est actuellement la principale API Machine Learning pour Spark.

Outils Spark MLlib

Spark MLlib fournit les outils suivants:

  • Algorithmes ML: Les algorithmes ML forment le cœur de MLlib. Ceux-ci incluent des algorithmes d'apprentissage courants tels que la classification, la régression, le clustering et le filtrage collaboratif.
  • Caractérisation: La mise en vedette comprend l'extraction, la transformation, la réduction et la sélection de dimensionnalité.
  • Pipelines: Les pipelines fournissent des outils pour la construction, l'évaluation et le réglage des pipelines ML.
  • Persistance: La persistance aide à enregistrer et à charger des algorithmes, des modèles et des pipelines.
  • Utilitaires: Utilitaires pour l'algèbre linéaire, les statistiques et le traitement des données.

Algorithmes MLlib

Les algorithmes et utilitaires populaires de Spark MLlib sont:

  1. Statistiques de base
  2. Régression
  3. Classification
  4. Système de recommandation
  5. Clustering
  6. Réduction de dimensionnalité
  7. Extraction de caractéristiques
  8. Optimisation

Examinons certains de ces éléments en détail.

Statistiques de base

Statistiques de base comprend les techniques d'apprentissage automatique les plus élémentaires. Ceux-ci inclus:

  1. Statistiques sommaires : Les exemples incluent la moyenne, la variance, le nombre, max, min et numNonZeros.
  2. Corrélations : Spearman et Pearson sont des moyens de trouver une corrélation.
  3. Échantillonnage stratifié : Ceux-ci incluent sampleBykey et sampleByKeyExact.
  4. Tests d'hypothèses : Le test du chi carré de Pearson est un exemple de test d’hypothèse.
  5. Génération de données aléatoires : RandomRDDs, Normal et Poisson sont utilisés pour générer des données aléatoires.

Régression

Régression l'analyse est un processus statistique d'estimation des relations entre les variables. Il comprend de nombreuses techniques de modélisation et d'analyse de plusieurs variables lorsque l'accent est mis sur la relation entre une variable dépendante et une ou plusieurs variables indépendantes. Plus précisément, l'analyse de régression aide à comprendre comment la valeur typique de la variable dépendante change lorsque l'une quelconque des variables indépendantes varie, tandis que les autres variables indépendantes sont maintenues fixes.

L'analyse de régression est largement utilisée pour la prédiction et la prévision, où son utilisation chevauche considérablement le domaine de l'apprentissage automatique. L'analyse de régression est également utilisée pour comprendre quelles variables indépendantes sont liées à la variable dépendante et pour explorer les formes de ces relations. Dans des circonstances restreintes, l'analyse de régression peut être utilisée pour déduire des relations causales entre les variables indépendantes et dépendantes.

Classification

Classification est le problème de l'identification à laquelle d'un ensemble de catégories (sous-populations) appartient une nouvelle observation, sur la base d'un ensemble d'apprentissage de données contenant des observations (ou des instances) dont l'appartenance à la catégorie est connue. C'est un exemple de reconnaissance de formes.

Ici, un exemple serait d'assigner un e-mail donné dans des classes «spam» ou «non-spam» ou d'attribuer un diagnostic à un patient donné comme décrit par les caractéristiques observées du patient (sexe, tension artérielle, présence ou absence de certains symptômes, etc.).

Système de recommandation

À système de recommandation est une sous-classe de système de filtrage d'informations qui cherche à prédire la «note» ou la «préférence» qu'un utilisateur donnerait à un article. Les systèmes de recommandation sont devenus de plus en plus populaires ces dernières années et sont utilisés dans divers domaines, notamment les films, la musique, les actualités, les livres, les articles de recherche, les requêtes de recherche, les balises sociales et les produits en général.

Les systèmes de recommandation produisent généralement une liste de recommandations de l'une des deux manières suivantes: par le filtrage collaboratif et basé sur le contenu ou l'approche basée sur la personnalité.

  1. Filtrage collaboratif approches de construction d'un modèle à partir du comportement passé d'un utilisateur (articles précédemment achetés ou sélectionnés et / ou évaluations numériques attribuées à ces articles) ainsi que des décisions similaires prises par d'autres utilisateurs. Ce modèle est ensuite utilisé pour prédire les éléments (ou les notes pour les éléments) qui pourraient intéresser l'utilisateur.
  2. Filtrage basé sur le contenu Les approches utilisent une série de caractéristiques discrètes d'un élément afin de recommander des éléments supplémentaires ayant des propriétés similaires.

De plus, ces approches sont souvent combinées en tant que systèmes hybrides de recommandation.

Clustering

Clustering est la tâche de regrouper un ensemble d'objets de telle sorte que les objets d'un même groupe (appelé cluster) soient plus similaires (dans un sens ou un autre) les uns aux autres qu'à ceux des autres groupes (clusters). C'est donc la tâche principale de l'exploration des données d'exploration, et une technique commune d'analyse de données statistiques, utilisée dans de nombreux domaines, notamment l'apprentissage automatique, la reconnaissance de formes, l'analyse d'images, la recherche d'informations, la bioinformatique, la compression de données et l'infographie.

Réduction de dimensionnalité

Réduction de dimensionnalité est le processus de réduction du nombre de variables aléatoires considérées, via l'obtention d'un ensemble de variables principales. Il peut être divisé en sélection de fonctionnalités et extraction de fonctionnalités.

  1. Sélection de fonctionnalité: La sélection d'entités trouve un sous-ensemble des variables d'origine (également appelées entités ou attributs).
  2. Extraction de caractéristiques: Cela transforme les données de l'espace de grande dimension en un espace de moins de dimensions. La transformation des données peut être linéaire, comme dans l'analyse en composantes principales (ACP), mais de nombreuses techniques de réduction de dimensionnalité non linéaire existent également.

Extraction de caractéristiques

Extraction de caractéristiques part d'un ensemble initial de données mesurées et construit des valeurs dérivées (caractéristiques) destinées à être informatives et non redondantes, facilitant les étapes ultérieures d'apprentissage et de généralisation, et dans certains cas conduisant à de meilleures interprétations humaines. Ceci est lié à la réduction de la dimensionnalité.

Optimisation

Optimisation est la sélection des meilleursélément (en ce qui concerne certains critères) d'un ensemble d'alternatives disponibles.

Dans le cas le plus simple, un problème d'optimisation consiste à maximiser ou minimiser une fonction réelle en choisissant systématiquement des valeurs d'entrée dans un ensemble autorisé et en calculant la valeur de la fonction. La généralisation de la théorie et des techniques d'optimisation à d'autres formulations comprend un vaste domaine de mathématiques appliquées. Plus généralement, l'optimisation comprend la recherche des «meilleures valeurs disponibles» d'une fonction objectif étant donné un domaine (ou une entrée) défini, y compris une variété de différents types de fonctions objectives et différents types de domaines.

Cas d'utilisation - Système de recommandation de films

Énoncé du problème: Pour créer un système de recommandation de films qui recommande des films en fonction des préférences de l'utilisateur à l'aide d'Apache Spark.

Nos exigences:

Alors, évaluons les exigences pour construire notre système de recommandation de films:

  1. Traitez une énorme quantité de données
  2. Entrée de plusieurs sources
  3. Facile à utiliser
  4. Traitement rapide

Comme nous pouvons l'évaluernos exigences, nous avons besoin du meilleur outil Big Data pour traiter des données volumineuses en peu de temps. Par conséquent, Apache Spark est l'outil parfait pour mettre en œuvre notre système de recommandation de films.

Regardons maintenant le diagramme de flux de notre système.

Comme nous pouvons le voir, ce qui suit utilise Streaming à partir de Spark Streaming. Nous pouvons diffuser en temps réel ou lire des données depuis Hadoop HDFS.

Obtention de l'ensemble de données:

Pour notre système de recommandation de films, nous pouvons obtenir les évaluations des utilisateurs de nombreux sites Web populaires tels que IMDB, Rotten Tomatoes et Times Movie Ratings. Cet ensemble de données est disponible dans de nombreux formats tels que les fichiers CSV, les fichiers texte etnd bases de données. Nous pouvons soit diffuser les données en direct à partir des sites Web, soit les télécharger et les stocker dansnotre système de fichiers local ou HDFS.

Base de données:

La figure ci-dessous montre comment nous pouvons collecter des ensembles de données à partir de sites Web populaires.

Une fois que nous diffusons les données dans Spark, cela ressemble un peu à ceci.

Apprentissage automatique:

L'ensemble du système de recommandation est basé sur l'algorithme d'apprentissage automatique Moindres carrés en alternance . Ici, ALS est un type d'analyse de régression où la régression est utilisée pour tracer une ligne entre les points de données de telle sorte que la somme des carrés de la distance de chaque point de données soit minimisée. Ainsi, cette ligne est ensuite utilisée pour prédire les valeurs de la fonction là où elle rencontre la valeur de la variable indépendante.

La ligne bleue du diagramme est la droite de régression la mieux ajustée. Pour cette ligne, la valeur de la dimension D est minimale. Toutes les autres lignes rouges seront toujours plus éloignées de l'ensemble de données dans son ensemble.

Implémentation Spark MLlib:

  1. Nous utiliserons le filtrage collaboratif (CF) pour prédire les notes des utilisateurs pour des films particuliers en fonction de leurs notes pour d'autres films.
  2. Nous collaborons ensuite avec la note des autres utilisateurs pour ce film en particulier.
  3. Pour obtenir les résultats suivants de notre machine learning, nous devons utiliser le DataFrame, le jeu de données et le service SQL de Spark SQL.

Voici le pseudo code de notre programme:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Importer les autres packages nécessaires object Movie {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Lire les données du fichier Movie CSV * ') //rawData.first () val rawRatings = rawData.map (* Diviser rawData sur le délimiteur de tabulation *) val notes = rawRatings.map {* Tableau de cas de carte de User, Movie and Rating *} // Formation du modèle de val de données = ALS.train (notes, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val prededRating = * Prédire pour l'utilisateur 789 pour le film 123 * val userId = * User 789 * val K = 10 val topKRecs = model.recommendProducts (* Recommandé à l'utilisateur pour la valeur particulière de K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Lire les données de la liste de films *') val title = movies.map (ligne => ligne.split ('|'). prendre ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titleRDD = movies.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). cache () titres (123) val moviesForUser = notes. * Rechercher l'utilisateur 789 * val sqlContext = * Créer un contexte SQL * val moviesRecommended = sqlContext. * Créez un DataFrame de films recommandés * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Sélectionnez le nombre (*) de moviesRecommendedTable'). foreach (println) moviesForUser. * Triez les notes pour User 789 * .map (* Mappez la note sur le titre du film *). * Imprimer la note * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (titres (rating.product), rating.rating))}}

Une fois que nous générons des prédictions, nous pouvons utiliser Spark SQL pour stocker les résultats dans un système SGBDR. En outre, cela peut être affiché sur une application Web.

Résultats:

Figure: Films recommandés pour l'utilisateur 77

Hourra! Nous avons ainsi réussi à créer un système de recommandation de films à l'aide d'Apache Spark. Avec cela, nous n'avons couvert qu'un des nombreux algorithmes populaires que Spark MLlib a à offrir. Nous en apprendrons davantage sur l'apprentissage automatique dans les prochains blogs sur les algorithmes de science des données.

À l'avenir, vous pouvez continuer à apprendre Apache Spark avec Spark Tutorial, Spark Streaming Tutorialet les questions d'entrevue Spark.Edureka se consacre à fournir la meilleure expérience d'apprentissage possible en ligne.

Consultez notre je Si vous souhaitez apprendre Spark et construire une carrière dans le domaine de Spark et développer une expertise pour effectuer un traitement de données à grande échelle à l'aide de RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​et Scala avec des cas d'utilisation réels.