Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Apache SPARK ML : principes, concepts et mise en œuvre

3.945 Aufrufe

Veröffentlicht am

Cette étude vise à présenter les concepts et les étapes pour la mise en œuvre d’une méthode d’apprentissage dans le cadre de Spark ML (API de méthodes d'apprentissage en SPARK) :
1. Spark ML : motivations
2. Transformateurs et estimateurs
3. Concepts de Pipeline
4. Évaluation d’une méthode d’apprentissage
5. Validation croisée et sélection des variables
6. Mise en œuvre des concepts sous Spark ML

Veröffentlicht in: Daten & Analysen
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

Apache SPARK ML : principes, concepts et mise en œuvre

  1. 1. APACHE SPARK MLIB : PRINCIPES ET CONCEPTS POUR LA MISE EN ŒUVRE DES MÉTHODES D’APPRENTISSAGE DR MUSTAPHA MICHRAFY CONTACT : DATASCIENCE.KM@GMAIL.COM
  2. 2. PLAN 1. Contexte 2. Objectif et prérequis 3. Spark MLIB, Motivations 4. Concepts pour la mise en place des algorithmes de Spark ML 5. DataFrame, Motivations 6. Pipeline et ses composants 7. API Pipeline en Spark MLIB 8. ‘Transformers’ et ‘Estimators’ en Spark MLIB 9. Transformer : étapes 10. Gestion des paramètres en Spark MLIB 11. Quelques ‘Transformers’ et ‘Estimators’ 12. Techniques pour l’évaluation d’une méthode d’apprentissage 13. API pour l’évaluation d’un algorithme d’apprentissage sous Spark ML 14.Validation croisée 15. Illustration et mise en œuvre sous Spark ML 2 M.MICHRAFY
  3. 3. CONTEXTE Cette étude a été menée dans le cadre des rencontres de travail organisées au Laboratoire CERMSEM, Centre d'Économie de la Sorbonne (CES). Elle vise à présenter les étapes pour la mise en œuvre d’une méthode d’apprentissage dans le cadre de Spark ML ( API d’apprentissage de SPARK). 3 M.MICHRAFY
  4. 4. OBJECTIF ET PRÉREQUIS • Connaissance du langage Scala • Connaissance de Spark et Spark SQL • Connaissance des méthodes d’apprentissage Cette étude vise à présenter les étapes d’un workflow pour la mise en place des méthodes d’apprentissage basées sur l’API Apache Spark ML. PrérequisObjectif 4 M.MICHRAFY
  5. 5. SPARK ML : MOTIVATIONS ? • Spark ML est une brique logiciel incontournable de la plate forme Apache Spark. • L’API Spark ML est dédiée à la mise en place des méthodes d’apprentissage. • Spark ML offre des services couvrant la préparation des données, l’enrichissement, la mise au point des méthodes d’apprentissage, et le déploiement. • Préparer, enrichir, transformer des données • L’API de Spark ML propose plusieurs transformateurs • Algorithmes pour le développement et la mise au point des méthodes de : o Classification o Régression o Clustering o Recommandation SPARK ML ? Fonctionnalités 5 M.MICHRAFY • En Apache Spark, deux API sont dédiées aux méthodes d’apprentissage : 1. Spark ML : il est basé sur l’API DataFrame 2. Spark MLIB : il est basée sur RDD. • Dans cette présentation, nous nous intéressons seulement à Spark ML. Par conséquent, l’API Spark MLIB ne sera pas abordée.
  6. 6. CONCEPTS POUR LA MISE EN PLACE DES ALGORITHMES DE SPARK ML 6 Concepts Spark ML Ce sont des algorithmes permettant de transformer une dataFrame en une autre Un pipeline est constitué de plusieurs Transformers et Estimators pour la mise en place d’un workflow ML. Les Transformers et Estimators partagent la même API pour spécifier les paramètres. C’est une structure de données distribuée, orientée colonne et adaptée pour les données statistiques ou méthodes d’apprentissage DataFrame Parameters Pipeline Transformers Ce sont des algorithmes visant à ajuster une fonction entre les variables explicatives et la variable cible. Les algorithmes s’appuient sur les données d’une DataFrame. Estimators Mesures pour évaluer la performance d’une méthode d’apprentissage. Evaluators Technique pour mettre au point une méthode d’apprentissage Cross Validation
  7. 7. DATAFRAME : MOTIVATIONS 7 • Les méthodes d’apprentissage trouvent des applications dans divers domaines, et nécessitant divers types de données. Variété des données • Alors quelle structure de données utilisée ? • Distribuée, résiliente, orientée colonne, optimisée • Supportant divers types de données, inclus les vecteurs DataFrame DataFrame est constituée de n lignes (les individus) m colonnes (les variables) une colonne est typée (vecteur) Popularisée par R, repris par python(Pandas) enfin, étendue par Saprk SQL
  8. 8. PIPELINE ET SES COMPOSANTS 8 PIPELINE Transformer Estimator  Un pipeline est une séquence d’étapes finies.  Chaque étape est associée à un Estimator ou un Transformer  Un Estimator est une interface qui doit implémenter la méthode fit()  Un transformer est une interface nécessitant l’implémentation de la méthode transform()  Transformer.transform() et Estimator.fit() sont des états légers.  Chaque instance du Transformer ou Estimator dispose d’un identifiant unique.
  9. 9. API PIPELINE EN SPARK MLIB 9 • Une méthode d’apprentissage fait appel à des phases de traitement, et d’apprentissage. • Un Pipeline, en Spark MLIB, est une séquence d’éléments de type pipelineStage. • Chaque PipelineStage est constitué d’un Transformer ou d’un Estimator. • Par conséquent, l’ordre des étapes (PiplineStage) est important Pipeline & PipelineStage • Pour une étape de transformation, la méthode transform() est appelée sur une Dataframe et retourne une DataFrame. Etape de Transformation • Pour une étape d’estimation, la méthode fit() d’un Estimator est appelée sur une dataframe pour produire un Transformer Etape d’Estimation DataFrame DataFrame DataFrame Transformer Pipeline PipelineStage
  10. 10. TRANSFORMER ET ESTIMATOR EN SPARK MLIB 10 • Un transformer permet de transformer des données. • En Spark ML, un transformer permet de transformer une DataFrame en une autre DataFrame. • Transformer est une classe abstraite qui étend la classe abstraite pipelineStage. Transformer • Un estimateur permet d’évaluer ou approcher un paramètre inconnu. • Un estimateur statistique vise à évaluer un paramètre inconnu via un échantillon de données • En Spark ML, un Estimator est un opérateur qui prend en entrée une DataFrame et retourne un Transformer. Estimator • Les implémentations de transformer dans :org.apache.spark.ml.feature • Des implémentation d’Estimators dans : org.apache.spark.ml.regression org.apache.spark.ml.recomendation org.apache.spark.ml.clustering org.apache.spark.ml.feature org.apache.spark.ml.classification … …. Package PipelineStage Estimator Transformer Params DataFrame DataFrame DataFrame Transformer Transformer Estimator Hiérarchie: Estimator&Transformer
  11. 11. ETAPES POUR LE TRANSFORMATEUR & ESTIMATEUR 11 Créer l’estimateur Positionner les paramètres d’entrée fit : ajuster le modèle selon les données transform : générer la nouvelle DataFrame Créer l’opérateur de transformation Positionner les paramètres d’entrée transform : générer la nouvelle DataFrame EstimateurTransformateur
  12. 12. PARAMETRES 12 • Les transformateurs, les estimateurs, les évaluateurs nécessitent des paramètres. • Spark ML propose un package dédié à la gestion des paramètres, partagé par les estimateurs et les transformateurs. Intérêt • Le package est : org.apache.spark.ml.param • La classe de base est Param. • Des spécialisations de Param, sont proposées, portant sur des primitifs (Int, Long, Float, Boolean,Double, String, IntArray, …) • Les classes Transformer et Estimator étendent la classe Params. Package Param Param BooleanParam DoubleParam FloatParam IntArrayParam IntParam DoubleArrayParam StringArrayParam LongParam Serializable ParamPair ParamMap Params Estimator Transformer
  13. 13. QUELQUES TRANSFORMERS ET ESTIMATORS 13  StringIndexer : coder des catégories  IndexToString : décoder des index  VectorIndexer : identifier des variables catégorielles selon un seuil de fréquence  QuantileDiscretizer : transformer une variable quantitative en une variable qualitative en utilisant le quantile  StandardScaler : normaliser un vecteur en utilisant la variance  Etc.  Tokenization : segmenter un texte en une liste de mots.  Binarization : transformer des valeurs numériques en valeurs binaires.  Normalizer : normaliser des vecteur en utilisant p-norm.  N-gram : calculer le prochain caractère à partir d’une séquence d’article  MinMaxScaler : transformer une variable quantitative vers une variable quantitative avec des valeurs dans un intervalle donné.  Etc. Transformers Estimators
  14. 14. EVALUER UNE MÉTHODE D’APPRENTISSAGE 14 • Pour évaluer la performance d’une méthode d’apprentissage, nous utilisons des mesures dédiées. • Pour un individu donné, une mesure d’évaluation exploite la valeur ajustée et la valeur de référence. • Nous avons des mesures pour : 1. les méthodes de régression 2. les méthodes de classification. Mesure d’évaluation ? • Le choix de la méthode d’évaluation dépend du problème traité et de la connaissance métier associée. • Quelles sont les mesures d’évaluation pour les méthodes de classification? • Quelles sont les mesures d’évaluation pour les méthodes de régression?
  15. 15. EVALUER UNE MÉTHODE D’APPRENTISSAGE : CLASSIFICATION 15 • Sensibilité : le taux de cas positifs correctement identifiés • Spécificité : le taux de cas négatifs correctement identifiés • Accuracy : le taux de cas positifs ou négatifs correctement identifiés. • F-mesure : le taux qui combine la sensibilité et la spécificité Mesures d’évaluation • La courbe ROC (receiver operating characteristic) est utilisée pour évaluer la performance d’un classifier binaire. • La courbe de ROC est la courbe qui donne la sensibilité en fonction de la spécificité. La courbe de ROC • Elle vise à mesurer la qualité d'une méthode de classification. • Elle indique si la méthode parvient à classifier correctement les individus. Matrice de confusion • Les mesures d’évaluation utilisent les notions : 1. VP (vrais positifs) : nombre de positifs classés positifs 2. FP (faux positifs) : nombre de négatifs classés positifs 3. FN (faux négatifs) : nombre de positifs classés négatifs 4. VN(vrais négatifs) : nombre de négatifs classés négatifs • Formules : 1. Sensibilité = VP/(VP+FN) 2. Spécificité = VN/(VN + FN) 3. Accuracy = (VP + VN)/(VP + VN + FP + FN) 4. F2 = 2.(Sensibilité+Spécificité)/(Sensibilité + Spécificité) Positif Négatif Positif TP FN Négatif FP TN Prédite Réelle Matrice de confusion
  16. 16. EVALUER UNE MÉTHODE D’APPRENTISSAGE : RÉGRESSION 16 • MSE : Erreur quadratique moyenne (mean Squared Error) • RMSE : c’est la racine carrée de MSE (root Mean Squared Error) • R : Coefficient de détermination • MAE : Erreur absolue moyenne (mean Absolute Error) • MAPE : Erreur absolue moyenne en pourcentage (Mean Absolute Percentage Error) Principales mesures • Elle vise à mesurer la qualité d'une méthode de régression en calculant une erreur globale • Une erreur est proche de zéro indique la pertinence du modèle Intérêt des mesures 𝑀𝑆𝐸 = 𝑙=1 𝑛 𝑦𝑙 − 𝑦𝒍 2 RMSE = 𝑀𝑆𝐸 𝑀𝐴𝐸 = 𝑙=1 𝑛 𝑦𝑙 − 𝑦𝑙 𝑅2 = 1 − 𝑀𝑆𝐸 𝑙=1 𝑛 (𝑦𝑙 − 𝑦)2 𝑀𝐴𝑃𝐸 = 𝑙=1 𝑛 (𝑦𝑙 − 𝑦𝑙) 𝑦𝑙 𝑛 . 100 y𝑙 𝑒𝑠𝑡 𝑙𝑎 𝑣𝑎𝑙𝑒𝑢𝑟 𝑟é𝑒𝑙, ( 𝑦 est la moyenne de 𝑦 ) 𝑦𝑙 𝑒𝑠𝑡 𝑙𝑎 𝑣𝑎𝑙𝑒𝑢𝑟 𝑎𝑗𝑢𝑠𝑡é𝑒, 𝑛 𝑑𝑒𝑠𝑖𝑔𝑛𝑒 𝑙𝑒 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑′𝑜𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑖𝑜𝑛𝑠
  17. 17. API POUR L’ÉVALUATION D’UN ALGORITHME D’APPRENTISSAGE 1/2 17 Evaluator BinaryClassificationEvaluator MulticlassClassificationEvaluator RegressionEvaluator  Evaluator : Classe abstraite pour l’évaluation de la méthode d’apprentissage.  Le package : org.apache.spark.ml.evaluation  Trois méthodes à implémenter : 1. Evaluate : évaluer le modèle 2. copy : copier une instance du modèle 3. uid : associer un ID  L’API Spark ML propose trois implémentations pour la classe abstraite Evaluator.  Les classes sont : 1. RegressionEvaluator pour les méthodes de régression 2. BinaryClassificationEvaluator : pour les méthodes de classification binaire 3. MulticlassClassificationEvaluator : pour les méthodes de classification muti-classes. Pour la régression Pour la classification binaire Pour la classification multi-classes
  18. 18. API POUR L’ÉVALUATION D’UN ALGORITHME D’APPRENTISSAGE 2/2 18 Evaluator BinaryClassificationEvaluator MulticlassClassificationEvaluator RegressionEvaluator  RegressionEvaluator : une classe dédiée aux algorithmes de régression.  Différentes mesures sont proposées: 1. RMSE (par défaut) 2. MSE 3. R2 4. MAE  BinaryClassificationEvaluator : une classe dédiée à l’évaluation des algorithmes de classification binaire.  Elle propose deux mesures : 1. areaUnderROC (par défaut) 2. areaUnderPR  MulticlassClassificationEvaluator : une classe dédiée à l’évaluation des algorithmes de classification multi-modales.  Elle propose différentes mesures : 1. F1 (par défaut) 2. weightedPrecision 3. weightedRecall 4. accuracy Pour les trois classes d’évaluation, il est possible de fixer : 1. Le nom de la colonne label avec la méthode setlabelCol 2. Le nom de la colonne prédite avec la méthode setPredictionCol 3. La mesure d’évaluation avec la méthode setMetricName Package : org.apache.spark.ml.evaluation
  19. 19. VALIDATION CROISÉE 1/2 19 • La validation croisée est une méthode d’estimation de fiabilité d’un modèle, basée sur une technique d’échantillonnage. • Elle permet : • d’optimiser les paramètres du modèle, • d’éviter le sur-apprentissage Intérêt Alors quelles sont les méthodes portant sur la validation croisée ? • Diviser les données en k échantillons(i..k) • Sélectionner un échantillon i pour la validation et le reste des données pour l'apprentissage. • Calculer le score de performance • Répéter les étapes 2-3 en sélectionnant un autre échantillon de validation. • Estimer l’erreur de prédiction en calculant la moyenne des k erreurs quadratiques moyennes • Diviser l'échantillon de taille n en deux sous échantillons : apprentissage (>60%), test (< 30%). • Le modèle est ajusté sur l'échantillon d'apprentissage et validé sur l'échantillon de test. • L'erreur est estimée en calculant une mesure ou un score de performance du modèle sur l'échantillon de test. Testset validation k-fold Cross-validation
  20. 20. VALIDATION CROISÉE 2/2 20 1. Diviser les données en k échantillons(i..k) 2. Sélectionner un échantillon i pour la validation et le reste des données pour l'apprentissage. 3. Calculer le score de performance 4. Répéter les étapes 2-3 en sélectionnant un autre échantillon de validation. 5. Estimer l’erreur de prédiction en calculer la moyenne des k erreurs quadratiques moyennes A. Diviser l'échantillon de taille n en deux sous échantillons : apprentissage (> 60%), test (< 30%). B. Le modèle est ajusté sur l'échantillon d'apprentissage et validé sur l'échantillon de test. C. L'erreur est estimée en calculant une mesure ou un score de performance du modèle sur l'échantillon de test. Tests et validation k-fold Cross-validation 1 2 3 4 5 6 DADT A B Ajuster le modèle sur DA et valider le modèle sur DT C Estimer l’erreur e Appliquer A et B pour chaque couple d’échantillon Calculer les erreurs e1 ….e6 Calculer l’erreur de prédiction e1 e2 e6 DA : données d’apprentissage DT : données de test . . .
  21. 21. ML TUNING : SÉLECTION DU MODÈLE ET CHOIX DES PARAMÈTRES 21 • Spark ML propose des outils (ML tuning) pour la sélection et l’optimisation d’un modèle. • Spark ML tuning s’appuie sur : • La validation croisée • L’ étude du comportement des paramètres Tuning sous Spark ML Tuning ML Pipeline Estimator s’applique sur org.apache.spark.ml.tuning associé au • La package portant sur le tuning ML est org.apache.spark.ml.tuning • Spark ML Tuning propose deux classes étendant Estimator : 1. CrossValidator : pour la validation croisée 2. TrainValidationSplit : pour l’optimisation des paramètres d’une méthode ML. • Les deux classes nécessitent : • Estimator • Evaluator • Parameters Tuning et classes associées CrossValidation TrainValidationSplit Estimator Evaluator est un nécessite Paramètres M.MICHRAFY
  22. 22. ML TUNING : CROSSVALIDATOR 22 • CrossValidator est la classe dédiée à la validation croisée. • C’est l’implémentation de la méthode k-fold. • Elle ne dispose pas de constructeur CrossValidator Deux étapes : initialisation et réalisation • Etape initialisation : fixer les paramètres d’entrée • Etape d’ajustement : effectuer la validation croisée via la méthode fit Mise en place ? Méthode k-fold modélise Etape d’Initialisation • Estimator : fixer l’estimateur ML ou le pipeline. • Evaluator : fixer la mesure d’évaluation. • EstimatorParamMaps : fixer les paramètres de l’estimateur ML • numFolds : fixer le nombre de fold • Seed : initialiser le générateur aléatoire Etape d’ajustement • fit : cette méthode applique la validation croisée et génère les modèles associés. • Elle retourne un objet de type CrossValidatorModel. Alors, quelle sont les méthodes de la classe CrossValidationModel ? Classe CrossValidator
  23. 23. ML TUNING : CROSSVALIDATORMODEL 23 • CrossValidatorModel est la classe qui encapsule le modèle de validation croisée. • Une instance de la classe CrossValidatorModel est retournée par la méthode fit de de l’objet CrossValidator CrossValidatorModel • avgMetrics : permet d’accéder à la mesure moyenne pour chaque entrée de la map des paramètres. • bestModel : retourne le meilleur modèle identifié pendant la validation croisée. • save : enregistre le modèle ML dans un fichier. • write : retourne une instance de MLwriter qui encapsule le modèle ML. • Transform : prédire les valeurs de la variable dépendante pour les données de test. Cette méthode applique le meilleur modèle identifié Fonctionnalités M.MICHRAFY
  24. 24. API SPARK ML : VUE PACKAGES 24 Package pour l’ évaluation des méthodes d’apprentissage Package pour la mise au point des méthodes ML Package pour la préparation et le formatage des données. Package dédié aux méthodes de classification Package dédié aux méthodes de régression Package dédié aux méthodes de clustering Package dédié aux méthodes de recommandation Package dédié la gestion des paramètres.
  25. 25. MISE EN ŒUVRE SOUS APACHE SPARK ML 25 • Cette section présente la mise en œuvre sous Spark ML : 1. Les transformateurs et les estimateurs pour la préparation et formatage des données 2. Les pipelines 3. L’évaluation des méthodes d’apprentissage 4. La mise au point d’un algorithme d’apprentissage • Les exemples ont été réalisés avec Apache Spark version 2.0.2 • Le langage utilisé est Scala. • Un prérequis de base en méthodes d’apprentissage est nécessaire
  26. 26. LES DONNÉES UTILISÉES 26 • Description : le jeu de données porte sur la pollution de l’air (112 individus et 13 variables) • Variables explicatives : T9, T12, T15, Ne9, Ne12, Ne15, Vx9, Vx12, Vx15, maxO3v, vent, pluie • Variable dépendante (cible) : maxO3 • URL : http://www.agrocampus-ouest.fr/math/livreR/ozone.txt OZONE • Description : le jeu de données comprend 50 échantillons de chacune des trois espèces d'iris • Variables explicatives : Sepallength, Sepalwidth, Petallength, Petalwidth • Variable dépendante (cible) : Species • URL : https://archive.ics.uci.edu/ml/machine-learning-databases/iris/ IRIS • Description : le jeu de données porte sur le concert de prostate • Variables explicatives : age, acide, rayonx, taille, grade, Y, log.acid • Variable dépendante (cible) : Y • URL : http://www.agrocampus-ouest.fr/math/livreR/cancerprostate.txt PROSTATE • Il est important de télécharger les jeux de données en local afin de les utiliser.
  27. 27. MISE EN OUVRE DES TRANSFORMATEURS ET ESTIMATEURS 27 M.MICHRAFY • Cette section présente des transformateurs avec des exemples utilisant l’API Spark ML • Les transformateurs présentés sont : 1. IndexToString 2. StringIndexer 3. VectorIndexer 4. OneHotEncoder 5. Normalizer 6. Tokenizer 7. Binarizer 8. VectorAssembler
  28. 28. TRANSFORMER : INDEXER VERS STRING  StringIndexer code une String en un double ( plutôt c’est un entier naturel)  Ceci permet de gérer les variables qualitatives en Spark ML.  StringIndexer permet de coder une seule variable. Objectif // importer de StringIndexer import org.apache.spark.ml. feature.StringIndexer // créer une dataFrame à partir d’une séquence val sq = Seq((0, “aa"), (1, “ab"), (2, "cd"), (3, "ad"), (4, "aa")) val dfin = spark.createDataFrame(sq). toDF("id", "category") // Etablir le modèle (fit) et construire la colonne sortie (transform) val indexer = new StringIndexer() .setInputCol("category" .setOutputCol("categoryIndex") val dfout = indexer.fit(dfin).transform(dfin) dfout. printSchema root |-- id: integer (nullable = false) |-- category: string (nullable = true) |-- categoryIndex: double (nullable = true) dfout.show(2) | id|category|categoryIndex| | 0| aa| 0.0| | 1| ab| 2.0| Exemple 28 M.MICHRAFY
  29. 29. TRANSFORMER : INDEXER VERS STRING  IndexToString décode un double en une String.  indexToString est l’application inverse de StringIndexer .  Ceci est utile pour retrouver le nom initiale d’une variable catégorielle Objectif // importer StringIndexer et , IndexToString import org.apache.spark.ml. feature.{StringIndexer, IndexToString} val sq = Seq((0, “aa"), (1, “ab"), (2, "cd"), (3, "ad"), (4, "aa")) val dfin = spark.createDataFrame(sq). toDF("id", "category") // fixer la colonne de sortie val indexer = new StringIndexer() .setInputCol("category") .setOutputCol("categoryIndex") // Etablir le modèle (fit) et construire la colonne sortie (transform) val indexed = indexer.fit(dfin).transform(dfin) val converter = new IndexToString() .setInputCol("categoryIndex").setOutputCol("originalCategory") val converted = converter.transform(indexed) converted.select("Category", "originalCategory"). printSchema root |-- Category: string (nullable = true) |-- originalCategory: string (nullable = true) converted.select("Category", "originalCategory").show(2) |Category|originalCategory| | a| a| | b| b| Exemple 29 M.MICHRAFY
  30. 30. TRANSFORMER : INDENTIFICATION ET CONVERSION VERS VARIABLES CATÉGORIELLES  VectorIndexer permet d’identifier des valeurs catégorielles selon un seuil en utilisant la méthode fit.  La méthode fit de VectorIndexer renvoie un objet « VectorIndexerModel »  VectorIndexerModel permet de mapper une variable en une variable catégorielle en utilisant transform. Objectif import org.apache.spark.ml. feature.VectorIndexer // importer VectorIndexer val dt = spark.read.format(“libsvm”).load(“data.txt”) // charger les données // fixer la colonne d’entrée et celui de la sortie val indexer = new StringIndexer() .setInputCol("features").setOutputCol("indexed").setMaxCategories(2) val indexed = indexer.fit(dt) // Ajuster le modèle sur les données(fit) // Ajouter la colonne « indexed » à la dataframe dt val indexedDt = indexerModel.transform(dt) // afficher les noms des colonnes de la dataframe indexedDt val indexedData = indexerModel.columns // res1 : Array[String] = Array(label, features, indexed) // afficher le nombre de colonnes différentes (features, indexed) indexedDt.filter(w => (w(1)!=w(2))).count // res2 : Long = 47 // afficher le nombre des variables catégorielles identfiées indexerModel.categoryMaps.size // res3 : Int = 53 Exemple 30 M.MICHRAFY
  31. 31. TRANSFORMER : MAPPER DES LABELS VERS UN VECTEUR BINAIRE  OneHotEncoder code un vecteur de labels (indexé) en un vecteur binaire.  L’idée est de coder une variable catégorielle en une liste de variable binaires.  La colonne des labels (indexés) doit être de type numérique.  Ce type de décodage est utile lorsqu’ on a un algorithme qui n’accepte que les variables quantitatives. C’est le cas d’une régression linéaire. Objectif // importer OneHotEncoder, StringIndexerval import org.apache.spark.ml.feature.{OneHotEncoder, StringIndexerval} val sq = Seq((0, "a"),(1, "b"),(2, "c"),(3, "a"),(4, "a"),(5, "c")) val df = spark.createDataFrame(sq).toDF("id", "category") //creer la dataframe // créer un indexer et ajuster le modèle sur les données df val indexer = new StringIndexer() .setInputCol("category").setOutputCol("categoryIndex").fit(df) val indexed = indexer.transform(dt) // générer la colonne categoryIndex // créer un opérateur de codage (labels vers binaires) val encoder = new OneHotEncoder() .setInputCol("categoryIndex").setOutputCol("categoryVec") // transformer les données (labels vers binaires) val encoded = encoder.transform(indexed) encoded.columns // afficher le nombre de colonnes de encoded // res1 : Array[String] = Array(id, category, categoryIndex, categoryVec) encoded.take(2)// afficher les 3 lignes de encoded // res2 : Array([0,a,0.0,(2,[0],[1.0])], [1,b,2.0,(2,[],[])], [2,c,1.0,(2,[1],[1.0])]) Exemple 31 M.MICHRAFY
  32. 32. TRANSFORMER : NORMALISATION DES DONNÉES  Normalizer vise à normaliser les données en utilisant la norme Lp, p est un paramètre d’entrée.  Lorsque p prend la valeur 2 (valeur par défaut), on retrouve la norme euclidienne.  La méthode setP(Double) de la classe Normalizer permet de fixer la norme. Objectif // importer Normalizer import org.apache.spark.ml.feature.Normalizer // charger les données : sample_libsvm_data.txt de la distribution Spark val dt = spark.read.format(“libsvm”) .load(“SparkPath/data/mllib/sample_libsvm_data.txt”) // fixer la colonne d’entrée et celui de la sortie et la norme utilisée val indexer = new Normalizer() .setInputCol("features") // fixer l’entrée .setOutputCol("normFeatures") // fixer la sortie .setP(2.0) // fixer la la nome L2 // Normaliser les données val l2NormData = normalizer.transform(dt) // afficher les données de la dataframe l2NormData l2NormData.show() Exemple 32 M.MICHRAFY
  33. 33. TRANSFORMER : SEGMENTATION DU TEXTE EN MOTS  Tokenizer vise à segmenter une phrase ou une ligne en une liste de mots.  Le Tokenizer utilise le séparateur espace pour segmenter un texte. Objectif // importer Tokenizer import org.apache.spark.ml.feature.Tokenizer // Créer la dataFrame sentenceDataFrame val sentenceDataFrame = spark.createDataFrame(Seq( (0, "La meilleure façon de predire l’avenir est de le creer"), (1, "Vous ne trouverez jamais ce que vous ne cherchez pas"), (2, "Si vous pouvez le rever, vous pouvez le faire.") )).toDF("label", "phrase") // fixer la colonne d’entrée et celui de la sortie val tokenizer = new Tokenizer().setInputCol("phrase").setOutputCol("words") // Segmenter chaque phrase en une liste de mots val tokenized = tokenizer.transform(sentenceDataFrame) // afficher les mots de chaque phrase et le label associé tokenized.select("words", "label").take(3).foreach(println) Exemple 33 M.MICHRAFY
  34. 34. TRANSFORMER : BINARISER UN VECTEUR  Binarizer permet de transformer un vecteur numérique en un vecteur binaire en se basant sur un seuil.  La binarisation utilise la règle suivante : si la valeur > seuil alors 1 sinon 0 Objectif // importer Binarizer import org.apache.spark.ml.feature.Binarizer // Créer la dataFrame sentenceDataFrame val data = Array((0, 0.1), (1, 0.5), (2, 0.7), (3,0.8)) val dataFrame = spark.createDataFrame(data).toDF("label", "feature") //Créer un op binarizer, fixer les colonnes d’entrée et de sortie et le seuil =0.5 val binarizer: Binarizer = new Binarizer() .setInputCol("feature").setOutputCol("bin_feature").setThreshold(0.5) // Binariser le vecteur feature et générer le résultat dans la colonne bin_feature val binarizedDataFrame = binarizer.transform(dataFrame) // afficher la dataframe générée binarizedDataFrame.show() |label|feature|bin_feature| | 0| 0.1| 0.0| | 1| 0.5| 0.0| | 2| 0.7| 1.0| | 3| 0.8| 1.0| Exemple 34 M.MICHRAFY
  35. 35. TRANSFORMER : REGROUPER DES COLONNES  VectorAssembler permet de regrouper des colonnes en une seule colonne.  Les colonnes à regrouper doivent faire partie des types suivants : numérique, booléen ou vecteurs (de type double).  Ceci est utile puisque les algorithmes de l’API Spark ML nécessitent que les variables explicatives soient de type vecteur. Objectif // importer VectorAssembler import org.apache.spark.ml.feature.VectorAssembler // Créer une dataframe avec 3 colonnes val sq = Seq((0,0.0,3.0),(1,1.0,0.0),(2,0.0,4.0),(3,0.0,1.0),(4,1.0,0.0),(5,0.0,2.0)) val df = spark.createDataFrame(sq).toDF("id", "eligible", "couleur") //Créer assembler pour regrouper les colonnes "eligible", "couleur" val assembler = new VectorAssembler() .setInputCols(Array("eligible", "couleur")).setOutputCol("features") // Generer une la colonne features qui regroupe "eligible", "couleur" val dfas = assembler.transform(df) // afficher le contenu de la dataframe dfas dfas.show() | id|eligible|couleur| features| | 0| 0.0| 3.0|[0.0,3.0]| | 1| 1.0| 0.0|[1.0,0.0]| | 2| 0.0| 4.0|[0.0,4.0]| | 3| 0.0| 1.0|[0.0,1.0]| | 4| 1.0| 0.0|[1.0,0.0]| | 5| 0.0| 2.0|[0.0,2.0]| Exemple 35 M.MICHRAFY
  36. 36. MISE EN OUVRE DES PIPELINES SOUS SPARK ML 36 M.MICHRAFY • Cette section porte sur la mise en œuvre des pipelines sous Spark ML. • Trois exemples sont abordés et portent sur : 1. Pipeline dédié à la régression linéaire 2. Pipeline dédié aux arbres de décision 3. Pipeline dédié à la régression logistique
  37. 37. PIPELINE : RÉGRESSION LINÉAIRE, DONNÉES OZONE 1/2  Proposer un pipeline qui vise à préparer des données et à ajuster un modèle de régression linéaire  Le pipeline est composé de : 1. Estimator : venIndexer 2. Estimator : pluieIndexer 3. Transformer : assembler 4. Transformer : featureIndexer 5. Estimator : lr Objectif import org.apache.spark.ml.{Pipeline, PipelineModel} import org.apache.spark.ml.feature.{VectorAssembler,StringIndexer,VectorIndexer} import org.apache.spark.ml.regression.LinearRegression // Charger les données et renommer les colonnes val ozone = spark.read.option("header", true).option("inferSchema","true") .option("delimiter"," ").csv("D:/MMY/PublicationsWeb/SparkML/ozone.txt") .toDF("id", "maxO3", "T9", "T12", "T15", "Ne9", "Ne12", "Ne15", "Vx9", "Vx12", "Vx15", "maxO3v", "vent", "pluie") // Créer l’indexer pour transformer « vent » en variable catégorielle val ventIndexer = new StringIndexer().setInputCol("vent").setOutputCol("labelVent") // Créer l’indexer pour transformer « pluie » en variable catégorielle val pluieIndexer = new StringIndexer().setInputCol("pluie").setOutputCol("labelPluie") // Regrouper les prédicteurs en une seul colonne val assembler = new VectorAssembler() .setInputCols(Array("T9", "T12", "T15", "Ne9", "Ne12", "Ne15", "Vx9", "Vx12", "Vx15", "maxO3v", "labelVent", "labelPluie")).setOutputCol("features") // Identifier et indexer les variables categorielles avec un seuil = 4 val featureIndexer = new VectorIndexer() .setInputCol("features").setOutputCol("indexedFeatures").setMaxCategories(4) Exemple 37 M.MICHRAFY 1
  38. 38. PIPELINE : RÉGRESSION LINÉAIRE, DONNÉES OZONE 2/2 // initier le modèle de régression linéaire val lr = new LinearRegression() .setMaxIter(20) .setRegParam(0.5) .setLabelCol("maxO3") .setFeaturesCol("indexedFeatures") .setPredictionCol("maxO3PredictCol") // créer le pipeline : ventIndexer, pluieIndexer, assembler, featureIndexer, lr val pipeline = new Pipeline() .setStages(Array(ventIndexer, pluieIndexer, assembler, featureIndexer, lr)) // ajuster le modèle sur les données ozone val model = pipeline.fit(ozone) // évaluer le modèle sur les données d’apprentissage val predictions = model.transform(ozone) // afficher les resultats de prediction predictions.select("id", "maxO3", "maxO3PredictCol" ) Suite 38 M.MICHRAFY 2Importer les packages Charger les données OZONE Créer l’indexer pour la variable vent. Créer l’indexer pour la variable pluie Regrouper les variables Regrouper les variables Identifier les variables catégorielles Créer le modèle de régression Créer le pipeline Ajuster le modèle sur les données et faire la prédiction
  39. 39. PIPELINE : ARBRE DE DÉCISION, DONNÉES IRIS  Proposer un pipeline qui vise à préparer des données et à ajuster un modèle basé sur la méthode d’arbre de décision.  Le pipeline est composé de 2 transformateurs et d’un estimateur. Objectif import org.apache.spark.ml.{Pipeline, PipelineModel} import org.apache.spark.ml.classification.{DecisionTreeClassifier,DecisionTreeClassificationModel} import org.apache.spark.ml.feature.{StringIndexer, VectorAssembler} // charger les données iris et renommer les colonnes val iris = spark.read.option("header", true).option("inferSchema", "true").csv("Path/iris.csv").toDF("id", "SepalL","SepalW","PetalL","PetalW", "Species") val assembler = new VectorAssembler() //Créer assembler pour regrouper les colonnes .setInputCols(Array("SepalL","SepalW","PetalL","PetalW")).setOutputCol("features") val indexer = new // transformer la variable Species en un indexer StringIndexer().setInputCol("Species").setOutputCol("SpeciesIndex") val dt = new // Créer le modèle d’apprentissage DT DecisionTreeClassifier().setLabelCol("SpeciesIndex"). .setPredictionCol("SpeciesPredictCol").setFeaturesCol("features") // créer un pipeline : assembler, indexer, dt val pipeline = new Pipeline().setStages(Array(assembler, indexer, dt)) // ajuster le modèle val model = pipeline.fit(iris) // evaluer le modèle sur les données d’apprentissage val predictions = model.transform(iris) predictions.show // ajuster les résultats Exemple 39 M.MICHRAFY Importer les packages Charger les données Indexer des catégories Regrouper des colonnes Initier le modèle d’arbre de décision Construire et lancer le pipeline Evaluer le modèle les données d’apprentissage
  40. 40. PIPELINE : REGRESSION LOGISTIQUE, DONNÉES PROSTATE  Proposer un pipeline qui vise à préparer des données et à ajuster un modèle régression logistique  Le pipeline est composé de 2 transformateurs et d’un estimateur. Objectif import org.apache.spark.ml.{Pipeline, PipelineModel} import org.apache.spark.ml.feature.{VectorAssembler,StringIndexer,VectorIndexer} import org.apache.spark.ml.classification.LogisticRegression val prostate = spark.read.option("header", true) // charger les données . .option("inferSchema", "true").option("delimiter",";").csv("cancerprostate.txt") .toDF("age","acide","rayonx","taille", "grade", "Y", "logAcid") val assembler = new VectorAssembler() // créer l’assember .setInputCols(Array("age","acide","rayonx","taille", "grade", "logAcid")).setOutputCol("features") val indexer = new StringIndexer(). // transformer la variable Y en un indexer setInputCol("Y").setOutputCol("label") val lr = new LogisticRegression() // Initier le modèle de régression logistique .setLabelCol("label").setFeaturesCol("features").setPredictionCol("labelPredictCol") .setMaxIter(20).setRegParam(0.3).setElasticNetParam(0.8) // créer un pipeline : assembler, indexer, lr val pipeline = new Pipeline().setStages(Array(assembler, indexer, lr)) val model = pipeline.fit(prostate) // ajuster le modèle sur les données val predictions = model.transform(prostate) // évaluer le modèle sur Prostate predictions.show // afficher les résultats Exemple 40 M.MICHRAFY Importer les packages Charger les données Indexer des catégories Regrouper des colonnes Initier le modèle régression logistique Construire et lancer le pipeline Evaluer le modèle sur les données d’apprentissage Afficher les résultats
  41. 41. MISE EN OUVRE DU PROCESSUS D’ÉVALUATION 41 M.MICHRAFY • Cette section vise à présenter des techniques relatives à l’évaluation d’une méthode d’apprentissage • Trois exemples sont abordés : 1. Evaluation d’une régression linéaire 2. Evaluation dune méthode d’arbre de décision 3. Evaluation de la régression logistique
  42. 42. EVALUATION DE LA RÉGRESSION LINÉAIRE, DONNÉES OZONE 1/2  Mise en œuvre de l’évaluation d’une méthode de régression linéaire pour les données OZONE.  L’idée est de montrer la manière d’utiliser la classe finale RegressionEvaluator.  Pour ce faire, nous avons deux étapes.  L’étape 1 consiste à positionner les paramètres : label, prédicteur, mesure.  L’étape 2 évalue la méthode ajustée et retourne un score.  L’exemple proposé reprend les étapes des slides 36-37. Objectif import org.apache.spark.ml.{Pipeline, PipelineModel} import org.apache.spark.ml.feature.{VectorAssembler,StringIndexer,VectorIndexer} import org.apache.spark.ml.regression.LinearRegression // Charger les données et renommer les colonnes val ozone = spark.read.option("header", true).option("inferSchema","true") .option("delimiter"," ")..csv("D:/MMY/PublicationsWeb/SparkML/ozone.txt") .toDF("id", "maxO3", "T9", "T12", "T15", "Ne9", "Ne12", "Ne15", "Vx9", "Vx12", "Vx15", "maxO3v", "vent", "pluie") // Créer l’indexer pour transformer « vent » en variable catégorielle val ventIndexer = new StringIndexer().setInputCol("vent").setOutputCol("labelVent") // Créer l’indexer pour transformer « pluie » en variable catégorielle val pluieIndexer = new StringIndexer().setInputCol("pluie").setOutputCol("labelPluie") // Regrouper les prédicteurs en une seule colonne val assembler = new VectorAssembler() .setInputCols(Array("T9", "T12", "T15", "Ne9", "Ne12", "Ne15", "Vx9", "Vx12", "Vx15", "maxO3v", "labelVent", "labelPluie")).setOutputCol("features") // Identifier et indexer les variables categorielles avec un seuil = 4 val featureIndexer = new VectorIndexer() .setInputCol("features").setOutputCol("indexedFeatures").setMaxCategories(4) Exemple 42 M.MICHRAFY
  43. 43. EVALUATION DE LA RÉGRESSION LINÉAIRE, DONNÉES OZONE 2/2 // initier le modèle de régression linéaire val lr = new LinearRegression().setMaxIter(20).setRegParam(0.5) .setLabelCol("maxO3").setFeaturesCol("indexedFeatures") .setPredictionCol("maxO3PredictCol") // créer le pipeline : ventIndexer, pluieIndexer, assembler, featureIndexer, lr val pipeline = new Pipeline() .setStages(Array(ventIndexer, pluieIndexer, assembler, featureIndexer, lr)) // ajuster le modèle sur les données ozone val model = pipeline.fit(ozone) // évaluer le modèle sur les données d’apprentissage val predictions = model.transform(ozone) // import de la classe pour l’evaluation import org.apache.spark.ml.evaluation.RegressionEvaluator val evalution = new RegressionEvaluator() // créer l’instance d’évaluation .setLabelCol("maxO3") //Fixer la colonne du label .setPredictionCol("maxO3PredictCol") // Fixer la colonne de la prédiction .setMetricName("rmse") // Fixer la mesure d’évaluation val RMSE = evalution.evaluate(predictions) print(s"Root Mean Squared Error = ${RMSE}") // afficher la valeur de RMSE Root Mean Squared Error = 13.60374600320492 Exemple 43 M.MICHRAFY Charger les données Appliquerlepipeline Préparer les données Initier et ajuster le modèle Effectuer la prédiction Initier l’évaluateur et positionner les params Evaluer la méthode Evaluerlemodèle Evaluation
  44. 44. EVALUATION DE L’ARBRE DE DÉCISION, DONNÉES IRIS  Mise en œuvre de l’évaluation d’une méthode d’arbre de décision, pour les données IRIS.  La classe d’évaluation utilisée est MulticlassClassificationEvaluator  La mesure utilisée est Accuracy Objectif import org.apache.spark.ml.{Pipeline, PipelineModel} import org.apache.spark.ml.classification.{DecisionTreeClassifier,DecisionTreeClassificationModel} import org.apache.spark.ml.feature.{StringIndexer, VectorAssembler} /***************************************************************** Reprendre les étapes du slide 38 : depuis le chargement des données, jusqu'au la génération de la dataframe predictions. ******************************************************************/ // import de la classe pour l’évaluation import org.apache.spark.ml.evaluation. MulticlassClassificationEvaluator // créer l’instance d’évaluation val evalution = new MulticlassClassificationEvaluator() .setLabelCol("SpeciesIndex") //Fixer la colonne du label .setPredictionCol("SpeciesPredictCol") // Fixer la colonne de la prédiction .setMetricName("accuracy") // Fixer la mesure d’évaluation // calculer la valeur de Accuracy val ACCURACY= evalution.evaluate(predictions) print(s“ Accuracy= ${ACCURACY}") // afficher la valeur de ACCURACY Exemple 44 M.MICHRAFY Charger les données Préparer les données Ajuster le model ML Initier l’évaluateur et positionner les params Evaluer la méthode via la mesure Accarucy
  45. 45. PIPELINE : REGRESSION LOGISTIQUE, DONNÉES PROSTATE  Mise en œuvre de l’évaluation d’une méthode de régression logistique, pour les données PROSTATE.  La classe d’évaluation utilisée est BinaryClassificationEvaluator  La mesure utilisée est areaUnderROC Objectif import org.apache.spark.ml.{Pipeline, PipelineModel} import org.apache.spark.ml.feature.{VectorAssembler,StringIndexer,VectorIndexer} import org.apache.spark.ml.classification.LogisticRegression /***************************************************************** Reprendre les étapes du slide 39 : depuis le chargement des données, jusqu'au la génération de la dataframe predictions. ******************************************************************/ // import de la classe pour l’évaluation import org.apache.spark.ml.evaluation. BinaryClassificationEvaluator // créer l’instance d’évaluation val evalution = new BinaryClassificationEvaluator() .setLabelCol(" label ") //Fixer la colonne du label .setRawxPredictionCol("labelPredictCol") // Fixer la colonne de la prédiction .setMetricName("areaUnderROC") // Fixer la mesure d’évaluation // calculer la valeur de areaUnderROC val areaUnderROC = evalution.evaluate(predictions) print(s“ AreaUnderROC= ${areaUnderROC}") // afficher la valeur de areaUnderROC Exemple 45 M.MICHRAFY Charger les données Préparer les données Ajuster le model ML Initier l’évaluateur et positionner les params Evaluer la méthode avec la mesure ROC
  46. 46. MISE EN OUVRE DE LA VALIDATION CROISÉE 46 M.MICHRAFY • Cette section porte sur la mise en œuvre de la validation croisée d’une méthode d’apprentissage sous Spark ML. • L’exemple abordé porte sur : 1. les données Prostate 2. la méthode de régression logistique 3. et validation croisée
  47. 47. VALIDATION CROISÉE, GRADIENT BOOSTING, DONNÉES PROSTATE 1/3  Mise en œuvre de la validation croisée d’une méthode de régression logistique , pour les données PROSTATE. Objectif import org.apache.spark.ml.{Pipeline, PipelineModel} import org.apache.spark.ml.feature.{VectorAssembler,StringIndexer,VectorIndexer} import org.apache.spark.ml.evaluation.BinaryClassificationEvaluator import org.apache.spark.ml.tuning.{CrossValidator, ParamGridBuilder} import org.apache.spark.ml.classification.LogisticRegression // Charger les données et renommer les colonnes val prostate = spark.read .option("header", true) // fichier avec un en-tête .option("inferSchema", "true") // faire l’inteférence sur le type de données .option("delimiter",";") // préciser le séparateur .csv("D:/MMY/PublicationsWeb/SparkML/cancerprostate.txt") .toDF("age","acide","rayonx","taille", "grade","Y", "logAcid") //renommer les cols. //Créer l’assembler pour regrouper les colonnes val assembler = new VectorAssembler() .setInputCols(Array("age","acide","rayonx","taille", "grade", "logAcid")) .setOutputCol("features") // Transformer la variable Y en un indexer val indexer = new StringIndexer() .setInputCol("Y") .setOutputCol("label") Exemple 47 M.MICHRAFY  La validation croisée et la gestion des paramètres de tuning nécessitent l’import de :  ParamGridBuilder  CrossValidator  Lors de la création d’une instance de type CrosseValdation, il est important de positionner :  le pipleline ou l’algorithme ML  l’instance d’évaluation  les paramètres de tuning A retenir 1
  48. 48. VALIDATION CROISÉE, FORÊT DE DÉCISION, DONNÉES PROSTATE 2/3 val lr = new LogisticRegression() // Créer le modèle d’apprentissage lr .setLabelCol("label") // Positionner la variable dépendante .setFeaturesCol("features") // Positionner le vecteur des variables explicatives .setPredictionCol("labelPredictCol") // Fixer le nom de la colonne prédite // Créer l’instance d’évaluation val evalution = new BinaryClassificationEvaluator() // évaluation binaire .setLabelCol("label") // Positionner la variable dépendante .setRawPredictionCol("labelPredictCol") // Positionner le nom de la colonne prédite .setMetricName("areaUnderROC") // Positionner la mesure d’évaluation // Positionner les paramètres de tuning pour le modèle lr val paramGrid = new ParamGridBuilder() .addGrid(lr.maxIter, Array(20, 30, 50)) // nombre d’itération addGrid(lr.regParam, Array(0.2, 0.1, 0.01)) // le coef de regularisation .addGrid(lr. elasticNetParam, Array(0.4, 0.6, 0.8)) // le coef elasticNetParam .addGrid(lr. threshold, Array(0.4, 0.5, 0.6)) // le seuil .build() // créer un pipeline : assembler, indexer, lr val pipeline = new Pipeline() .setStages(Array(assembler, indexer, lr)) Exemple 48 M.MICHRAFY 2
  49. 49. VALIDATION CROISÉE, GRADIENT BOOSTING, DONNÉES PROSTATE 3/3 // Instancier la validation croisée val cv = new CrossValidator() .setEstimator(pipeline) // positionner le pipeline .setEvaluator(evalution) // positionner l’instance d’évaluation .setEstimatorParamMaps(paramGrid) // Positionner les params de tuning .setNumFolds(3) // Positioner le nombre de fold .setSeed(27) // Positionner seed // Lancer le validation croisée et adjuster le modèle val cvModel = cv.fit(prostate) // collecter les moyennes pour chaque params de la validation croisée val avg = cvModel.avgMetrics println(s"avgMetrics = " + avg.mkString(", ")) // pointer la meilleur modele identifié durant la validation croisée Val bestModel = cvModel.bestModel // exécuter la prédiction avec bestModel sur les données d’apprentissage val prediction = cvModel.transform(prostate) prediction.show(3) Exemple 49 M.MICHRAFY Importer les packages : Transformateurs, estimateurs, Pipeline, évaluation, validation croisé Charger les données (prostate) Créer les transformateurs et les estimateurs Créer le pipeline Créer l’instance d’évaluation Créer l’instance validation croisée Lancer la validation croisée et effectuer la prédiction 3
  50. 50. DR MUSTAPHA MICHRAFY CONTACT : DATASCIENCE.KM@GMAIL.COM Un merci à Dr Bernard Kouakou et Dr Oussama Lachiri pour leurs lectures et remarques pertinentes.

×