DATA MINING ET BIG DATA Stéphane TUFFERY Université Catholique de l’Ouest Institut de Mathématiques Appliquées 11 décembre 2015 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 1 Présentation de l’intervenant Responsable de l’équipe statistique dans un grand groupe bancaire français Enseigne à l’Université Rennes 1 et à l’ENSAI Docteur en Mathématiques Auteur de : Data Mining et Statistique Décisionnelle, Éditions Technip, 2005, 4e édition 2012, préface de Gilbert Saporta Data Mining and Statistics for Decision Making, Éditions Wiley, mars 2011 Étude de cas en Statistique Décisionnelle, Éditions Technip, 2009 Computational Actuarial Science with R (ouvrage collectif), Éditions Chapman & Hall, 2014 Modélisation prédictive et apprentissage statistique avec R, Éditions Technip, 2015 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 2 Plan Qu’est-ce que le data mining ? Qu’est-ce que le Big Data ? À quoi sert le data mining ? À quoi sert le Big Data ? Exemple d’analyse d’un réseau social avec R L’élaboration d’un modèle de scoring ------------------------------------------------------------------------------------------------------------ La sélection des variables La modélisation Réduction de la complexité et agrégation de modèles Méthodes pour le Big Data Analyses en grande dimension : comparaison de logiciels Conclusion 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 3 Qu’est-ce que le data mining ? 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 4 La fouille de données Le data mining est l’ensemble des : méthodes scientifiques … destinées à l’exploration et l’analyse … de (souvent) grandes bases de données informatiques … en vue de détecter dans ces données des profils-type, des comportements récurrents, des règles, des liens, des tendances inconnues (non fixées a priori), des structures particulières restituant de façon concise l’essentiel de l’information utile … pour l’aide à la décision On parle d’extraire l’information de la donnée Selon le MIT, c’est l’une des 10 technologies émergentes qui « changeront le monde » au XXIe siècle Selon Hal Varian, Chief Economist de Google : “I keep saying that the sexy job in the next 10 years will be statisticians” 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 5 Les 2 types de méthodes de data mining Les méthodes descriptives (recherche de « patterns ») : visent à mettre en évidence des informations présentes mais cachées par le volume des données (c’est le cas des segmentations de clientèle et des recherches d’associations de produits sur les tickets de caisse) réduisent, résument, synthétisent les données il n’y a pas de variable à expliquer Les méthodes prédictives (modélisation) : visent à extrapoler de nouvelles informations à partir des informations présentes (c’est le cas du scoring) expliquent les données il y a une variable à expliquer 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 6 Les 2 principales familles de méthodes descriptives carte de Kohonen Source : Lebart-Morineau-Piron, Statistique exploratoire multidimensionnelle, page 10 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 7 Qu’est-ce que la classification ? Regrouper des objets en groupes, ou classes, ou familles, ou segments, ou clusters, de sorte que : 2 objets d’un même groupe se ressemblent le plus possible 2 objets de groupes distincts diffèrent le plus possible le nombre des groupes est parfois fixé les groupes ne sont pas prédéfinis mais déterminés au cours de l’opération Méthode descriptive : pas de variable à expliquer privilégiée décrire de façon simple une réalité complexe en la résumant Utilisation en marketing, médecine, sciences humaines… segmentation de clientèle marketing Les objets à classer sont : des individus des variables les deux à la fois (biclustering) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 8 Classement et prédiction Ce sont des méthodes prédictives on parle aussi d’apprentissage supervisé Classement : la variable à expliquer (ou « cible », « réponse », « dépendante ») est qualitative on parle aussi de classification (en anglais) ou discrimination Prédiction : la variable à expliquer est quantitative on parle aussi de régression exemple : le prix d’un appartement (en fonction de sa superficie, de l’étage et du quartier) Scoring : classement appliqué à une problématique d’entreprise (variable à expliquer souvent binaire) chaque individu est affecté à une classe (« risqué » ou « non risqué », par exemple) en fonction de ses caractéristiques 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 9 Tableau des méthodes descriptives type famille méthodes modèles descriptives géométriques En grisé : méthodes « classiques » sous-famille analyse factorielle (projection sur un espace de dimension inférieure) analyse typologique (regroupement en classes homogènes) analyse typologique + réduction dimens. 11/12/2015 méthode analyse en composantes principales ACP (variables continues) analyse factorielle des correspondances AFC (2 variables qualitatives) analyse des correspondances multiples ACM (+ de 2 var. qualitatives) méthodes de partitionnement (centres mobiles, k-means, nuées dynamiques) méthodes hiérarchiques (ascendantes, descendantes) classification neuronale (cartes de Kohonen) classification relationnelle (variables qualitatives) détection d’associations modèles combinatoires modèles à base de détection de liens règles logiques © Stéphane Tufféry - Usage réservé à l’UCO 10 Tableau des méthodes prédictives type famille sous-famille méthodes prédictives modèles à base de règles logiques modèles à base de fonctions mathématiques arbres de décision réseaux de neurones En grisé : méthodes « classiques » 11/12/2015 prédiction sans modèle méthode arbres de décision (variable à expliquer continue ou qualitative) réseaux à apprentissage supervisé : perceptron multicouches, réseau à fonction radiale de base modèles régression linéaire, ANOVA, MANOVA, paramétriques ANCOVA, MANCOVA, modèle linéaire ou semigénéral GLM, régression PLS, ridge, paramétriques lasso, SVR (variable à expliquer continue) analyse discriminante linéaire, régression logistique, régression logistique PLS, SVM (variable à expliquer qualitative) modèle log-linéaire, régression de Poisson (variable à expliquer discrète = comptage) modèle linéaire généralisé, modèle additif généralisé (variable à expliquer continue, discrète ou qualitative) k-plus proches voisins (k-NN) © Stéphane Tufféry - Usage réservé à l’UCO 11 Zoom sur les méthodes prédictives explicatives à expliquer 1 quantitative n quantitatives (représentent des quantités ≠) 1 qualitative nominale ou binaire 1 discrète (comptage) 1 quantitative asymétrique 1 qualitative ordinale n quantitatives ou qualitatives 11/12/2015 1 quantitative (covariable) n quantitatives (covariables) rég. linéaire simple, régression robuste, arbres de décision régression PLS2 rég. linéaire multiple, ANOVA, rég. robuste, PLS, arbres de arbres, réseaux de décision neurones ADL, régression logistique, arbres de décision 1 qualitative n qualitatives (facteur) (facteurs) ANOVA, arbres de décision, réseaux de neurones régression PLS2, MANOVA réseaux de neurones MANOVA, réseaux de neurones ADL, rég. logistique, régression régression reg. logistique PLS, logistique, logistique, arbres, réseaux de DISQUAL, DISQUAL, neurones, SVM arbres arbres, réseaux de neurones modèle linéaire généralisé (régression de Poisson, modèle log-linéaire) modèle linéaire généralisé (régressions gamma et log-normale) régression logistique ordinale mélange ANCOVA, arbres de décision, réseaux de neurones MANCOVA, réseaux de neurones régression logistique, arbres, réseaux de neurones (au moins 3 niveaux) modèle à mesures répétées (les n variables représentent des mesures répétées d’une même quantité) © Stéphane Tufféry - Usage réservé à l’UCO 12 Statistique, data mining et Big Data Statistique (avant 1950) : quelques centaines d’individus quelques variables recueillies avec un protocole spécial (échantillonnage, plan d’expérience…) fortes hypothèses sur les lois statistiques suivies (linéarité, normalité, homoscédasticité) le modèle prime sur la donnée : il est issu de la théorie et confronté aux données utilisation en laboratoire Analyse des données (1960-1980) : quelques dizaines de milliers d’individus quelques dizaines de variables construction des tableaux « Individus x Variables » importance du calcul et de la représentation visuelle 11/12/2015 Data Mining (1990-2010) : plusieurs millions d’individus plusieurs centaines de variables données recueillies avant l’étude, à d’autres fins données imparfaites, avec des erreurs de saisie, des valeurs manquantes… pour l’aide à la décision nécessité de calculs rapides, parfois en temps réel on ne recherche pas toujours l’optimum théorique, mais le plus compréhensible pour des non statisticiens faibles hypothèses sur les lois statistiques la donnée prime sur le modèle : le modèle est issu des données et on en tire éventuellement des éléments théoriques utilisation en entreprise Big Data (depuis 2010) : plusieurs centaines de millions d’individus plusieurs milliers de variables, de tous types données recueillies dans les entreprises, les systèmes, les objets connectés, Internet données parfois très bruitées pour l’aide à la décision, des nouveaux services © Stéphane Tufféry - Usage réservé à l’UCO 13 Qu’est-ce que le Big Data ? 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 14 Le Big Data Le Big Data recouvre l’ensemble des problématiques associées à la collecte et à l’exploitation de très grands ensembles de données, de natures et de formats très variés (textes, photos, clics, signaux de capteurs, d’objets connectés…), et en évolution très rapide, voire continue Le Big Data envahit de nombreux domaines d’activités : santé, industrie, transport, finance, banque et assurance, grande distribution, politiques publiques, sécurité, recherche scientifique… Les enjeux économiques sont majeurs : McKinsey (Big Data, the next frontier for innovation, competition and productivity, 2011) estime que le Big Data permettrait d’économiser chaque année 300 milliards de dollars aux politiques de santé aux USA et d’engendrer 600 milliards de dollars de consommation en utilisant les données de localisation des consommateurs Selon l’Institut Montaigne (Big data et objets connectés, 2015), les répercussions des objets connectés et du Big Data sur l’économie française pourraient atteindre les 3,6 % de PIB à échéance 2020 (et environ 7 % en 2025) Les impacts sont très importants dans la vie des personnes et des entreprises Les défis technologiques sont formidables 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 15 L’explosion de la production de données Données signalétiques et sociodémographiques Données de comportement (utilisation du téléphone, de la carte bancaire, du véhicule…) Données CRM (contact avec un service client, fidélisation…) Données externes provenant des mégabases de données privées ou des administrations (Open Data) Informations remontées par les capteurs industriels, routiers, climatiques, puces RFID, NFC, objets connectés (caméras, compteurs électriques, appareils médicaux, voitures…) Géolocalisation par GPS ou adresse IP Données de tracking sur Internet (sites visités, mots-clés recherchés...) Contenu partagé sur Internet (blogs, photos, vidéos…) Opinions exprimées dans les réseaux sociaux (sur une entreprise, une marque, un produit, un service…) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 16 Les 3 « V » du Big Data Volume L’ordre de grandeur de ces volumes est le pétaoctet (1015 octets) L’accroissement du volume vient de l’augmentation : du nombre d’individus observés (plus nombreux ou à un niveau plus fin) de la fréquence d’observation et d’enregistrement des données (mensuel quotidien, voire horaire) du nombre de caractéristiques observées Cet accroissement vient aussi de l’observation de données nouvelles (Internet, objets connectés, géolocalisation…) Variété Ces données sont de natures et de formes très diverses : numériques, logs web, textes, sons, images… Cette variété rend difficile l’utilisation des bases de données usuelles et requiert une variété de méthodes (text mining, web mining…) Vitesse, ou Vélocité Vélocité des données qui proviennent de sources où elles sont mises à jour rapidement, parfois en continu (streaming data) Vitesse des traitements appliqués à ces données, parfois en temps réel Dans certains cas, les modèles eux-mêmes sont mis à jour rapidement 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 17 Les outils du Big Data Outils informatiques de traitement des données massives Besoin de distribuer le stockage et les calculs pour un coût raisonnable : MapReduce, Hadoop, Spark Besoin d’accéder à une puissance informatique importante à la demande : le cloud computing Besoin de gérer des données plus évolutives et moins structurées que les données habituelles : bases sans schéma (NoSQL) Nombreuses solutions open source : Hadoop, Cassandra, Spark, R… Enjeu : conjuguer puissance et sécurité des traitements Méthodes statistiques d’analyse des données en grande dimension Machine Learning et Deep Learning Méthodes d’échantillonnage, d’optimisation Estimateurs régularisés (Lasso, ridge…) Apprentissage incrémental (pour les data streams) Text Mining (pour l’analyse des textes en langage naturel) Théorie des graphes (pour les réseaux sociaux) Enjeu : extraire l’information utile d’une masse énorme de données 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 18 A quoi sert le data mining ? 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 19 Le data mining dans la banque Naissance du score de risque en 1941 (David Durand) Multiples techniques appliquées à la banque de détail et la banque d’entreprise Surtout la banque de particuliers : grand nombre de dossiers dossiers relativement standards montants unitaires modérés Essor dû à : développement des nouvelles technologies nouvelles attentes de qualité de service des clients pression mondiale pour une plus grande rentabilité surtout : ratio de solvabilité Bâle 2 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 20 Quelques types de scores Score d’appétence prédire l’achat d’un produit ou service Score de (comportement) risque prédire les impayés ou la fraude Score de pré-acceptation + Appétence croisement des deux précédents Score d’octroi (ou d’acceptation) + Risque - prédire en temps réel les impayés Score d’attrition prédire le départ du client vers un concurrent Et aussi : en médecine : diagnostic (bonne santé : oui / non) en fonction du dossier du patient et des analyses médicales courriels : spam (oui / non) en fonction des caractéristiques du message (fréquence des mots…) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 21 Le data mining dans l’assurance de risque Des produits obligatoires (automobile, habitation) : soit prendre un client à un concurrent soit faire monter en gamme un client que l’on détient déjà D’où les sujets dominants : attrition ventes croisées (cross-selling) montées en gamme (up-selling) Besoin de décisionnel dû à : concurrence des nouveaux entrants (bancassurance) bases clients des assureurs traditionnels mal organisées : compartimentées par agent général ou structurées par contrat et non par client 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 22 Le data mining dans la téléphonie Deux événements : fin du monopole de France Télécom dans la téléphonie fixe arrivée à saturation du marché de la téléphonie mobile D’où les sujets dominants dans la téléphonie : score d’attrition (churn = changement d’opérateur) optimisation des campagnes marketing et aussi le text mining (pour analyser les lettres de réclamation) Problème du churn : coût d’acquisition moyen en téléphonie mobile : 250 euros plus d’un million d’utilisateurs changent chaque d’année d’opérateur en France les lois facilitant le changement d’opérateur la portabilité du numéro facilite le churn 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 23 Le data mining dans le commerce Vente Par Correspondance utilise depuis longtemps des scores d’appétence pour optimiser ses ciblages et en réduire les coûts des centaines de millions de documents envoyés par an e-commerce personnalisation des pages du site web de l’entreprise, en fonction du profil de chaque internaute optimisation de la navigation sur un site web Grande distribution analyse du ticket de caisse détermination des meilleures implantations (géomarketing) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 24 Autres exemples De l’infiniment petit (génomique) à l’infiniment grand (astrophysique pour le classement en étoile ou galaxie) Du plus quotidien (reconnaissance de l’écriture manuscrite sur les enveloppes) au moins quotidien (aide au pilotage aéronautique) Du plus ouvert (e-commerce) au plus sécuritaire (détection de la fraude dans la téléphonie mobile ou les cartes bancaires) Du plus industriel (contrôle qualité pour la recherche des facteurs expliquant les défauts de la production) au plus théorique (sciences humaines, biologie…) Du plus alimentaire (agronomie et agroalimentaire) au plus divertissant (prévisions d’audience TV) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 25 Reconnaissance de l’écriture manuscrite L’intérêt économique de la reconnaissance de caractères est grand : tri automatique du courrier, traitement des chèques bancaires… Problème classique en apprentissage statistique De nombreuses méthodes ont été testées : réseaux de neurones, k-plus proches voisins, SVM et arbres de décision boostés Les réseaux de neurones à convolution autorisent un taux d’erreur < 1 % La base la plus connue est celle des codes postaux manuscrits numérisés collectée par le National Institute of Standards and Technology (USA) la base complète est disponible sur le site du NIST (http://www.nist.gov/srd/nistsd19.cfm) et est composée de 814 255 images écrites par 3699 personnes – elle est payante une base de 70 000 images extraite de la précédente par le MNIST (Modified National Institute of Standards and Technology) est composée de chiffres écrits par 250 personnes environ (des employés et des étudiants), gratuite, souvent utilisée par les chercheurs, et disponible ici : http://yann.lecun.com/exdb/mnist/ les images de la base MNIST sont de plus prétraitées, avec des caractères centrés, redressés et de taille normalisée 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 26 A quoi sert le Big Data ? 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 27 Les Big Data d’Internet L’exploitation des données de tracking sur Internet (sites visités, mots-clés recherchés...) permet de détecter les phénomènes parfois avant les organes officiels Santé : Google Flu Trends Finance : évolution des cours de Bourse L’exploitation des données postées dans les réseaux sociaux permet de détecter des tendances plus rapidement que par des enquêtes d’opinion Veille sur l’e-réputation d’une entreprise Suivi des opinions sur une marque, un produit L’exploitation du contenu partagé sur Internet (blogs, photos, vidéos…) et des messages permet d’affiner les propositions commerciales Marketing digital Modèles de recommandation pour la vente en ligne 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 28 Google Flu Trends En analysant les mots clés sur son moteur de recherche, Google a pu établir une corrélation entre certaines requêtes et l’apparition d’une épidémie de grippe (plus précisément entre la fraction des requêtes contenant une certaine combinaison de mots-clés et la fraction des visites chez le médecin concluant à des symptômes de la grippe). Cette corrélation a été corroborée par les organismes de veille sanitaire et a fait l’objet d’une publication dans Nature (2009) : http://www.nature.com/nature/journal/v457/n7232/full/nature07634.html Cet exemple illustre le V de la vitesse, avec des mises à jour de données quotidiennes et non hebdomadaires comme dans les suivis sanitaires traditionnels : or, plus une épidémie est détectée rapidement et mieux elle est combattue 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 29 Google Trends et le CAC 40 Une étude parue dans Nature (2013) démontre une corrélation entre les mots clés saisis sur Google et l’évolution des cours de bourse. Avant une chute des indices boursiers, les investisseurs sont préoccupés et recherchent sur Internet des informations les aidant à décider de conserver ou vendre leurs titres Google Trends permet de connaître la fréquence à laquelle un terme a été cherché sur Google, avec visualisation par région, des recherches associées et de certains titres dans l’actualité 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 30 Analyse textuelle automatique des tweets Calcul quotidien d’un score d’opinion sur la marque ou l’entreprise -2.0 -1.5 -1.0 -0.5 Score médian Score moyen 0.0 0.5 1.0 1.5 2.0 2.5 3.0 On peut croiser ce score avec les nouvelles extraites sur Internet sept. 14 sept. 15 sept. 16 sept. 18 sept. 20 sept. 22 sept. 24 sept. 26 sept. 28 sept. 29 sept. 30 oct. 02 oct. 04 oct. 06 oct. 08 Date Détection automatique des thèmes des tweets 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 31 Le marketing digital Des plates-formes virtuelles automatisées (ad exchange) mettent en relation directe les acheteurs (annonceurs) et vendeurs de publicité sur Internet dans un système d’enchères en temps réel (Real Time Bidding) Quand un internaute arrive sur une page Web sur laquelle est réservé un espace publicitaire, la page envoie une requête à la plate-forme La plate-forme ad exchange envoie un appel à enchérir (bid request) à l’ensemble des acheteurs potentiels, qui répondent en proposant une enchère (bid) Des algorithmes permettent aux annonceurs de déterminer le montant qu’ils ont intérêt à proposer et le contenu précis à afficher en fonction des caractéristiques de l’internaute, d’un budget pour une campagne… Ils s’appuient sur le profil de l’internaute et son historique de navigation transmis par l’ad exchange, et sur des analyses qui montrent que les bannières ont plus ou moins d’effet sur ce type d’internaute quand elles sont placées sur certains sites L’ad exchange attribue la bannière au plus offrant et sa publicité s’affiche instantanément sur le site du vendeur (lequel peut filtrer les annonceurs) Ce processus dure quelques dizaines de millisecondes, le temps du chargement de la page Web par l’internaute 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 32 Les Big Data des objets connectés Capteurs industriels, routiers, climatiques, médicaux Possibilité de maintenance personnalisée et d’alerte en fonction des informations collectées en temps réel par de multiples capteurs (usure des pièces, pression…) Calcul en temps réel de la consommation, suivi du réseau, prédiction des dysfonctionnements, facturation plus économique et plus rapide, grâce aux compteurs connectés Optimisation de la chaîne d’approvisionnement (supply chain) Diagnostic médical à distance : suivi des maladies chroniques et détection de risques de crise cardiaque Objets connectés Le smartphone se transforme en « boîte noire » Équipements électroménagers et domotique Géolocalisation Publicité géolocalisée Aide à la conduite et la circulation routière Tarification d’assurance automobile basée sur le comportement individuel du conducteur 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 33 Exemple d’analyse d’un réseau social avec R 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 34 Caractérisation des réseaux sociaux Les réseaux sociaux sont des graphes avec des propriétés particulières : ils sont très grands et peuvent avoir des millions de sommets les sommets ont un ensemble d’attributs (nom, adresse, âge, langue…) les sommets avec des attributs proches sont plus souvent connectés ce sont des graphes « sans échelle » (le nombre de sommets ayant un degré donné d est proportionnel à d–k, où k est une constante (souvent ∈ [2,3] ) ce sont des graphes « petit-monde » (faible distance moyenne entre deux sommets, ≤ log(nombre sommets)) ils ont un coefficient de clustering (transitivité) élevé : probabilité que deux voisins d'un sommet choisis aléatoirement soient eux-mêmes connectés ils se décomposent généralement en « communautés », qui sont des sous-graphes dont les sommets sont fortement connectés entre eux et faiblement connectés aux sommets des autres communautés 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 35 R pour explorer Twitter Il faut d’abord se connecter à l’interface Twitter (https://dev.twitter.com/) avec un compte et créer une application avec le bon paramétrage des droits d’accès Récupérer des codes qui permettent de se connecter à l’API Twitter api_key <- "YOUR API KEY" api_secret <- "YOUR API SECRET" access_token <- "YOUR ACCESS TOKEN" access_token_secret <- "YOUR ACCESS TOKEN SECRET" setup_twitter_oauth(api_key,api_secret,access_token,access_t oken_secret) Quelques commandes de base avec le package twitteR getUser(“xxx")$followersCount # nombre de followers getUser(“xxx")$friendsCount # nombre de followees (abonnements) userTimeline(“xxx",n=100) # fil d’un utilisateur trend <- availableTrendLocations() # tendances getTrends(trend[which(trend$country=="France"),]$woeid) # tendances sur la France 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 36 Récupération de tweets avec twitteR Extraction de tweets sur un sujet entre deux dates tweets <searchTwitter("Patrick Modiano", lang='fr', n=30000, since='2014-10-01', until='2014-10-10') Conversion en data frame df <- twListToDF(tweets) df <do.call("rbind", lapply(tweets, as.data.frame)) # commande équivalente table(as.Date(df$created)) # date des tweets table(df$screenName) # auteurs des tweets table(df$longitude), table(df$latitude) # localisation texte <unlist(lapply(df$text, function(x) gsub("[^[:print:]]", "", x))) # suppression des caractères non imprimables 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 37 Mise en forme du corpus avec tm Création d’un corpus : ensemble de documents myCorpus <- Corpus(VectorSource(texte)) Passage en bas de casse myCorpus <- tm_map(myCorpus, tolower) Suppression des mots commençant par @ myCorpus <tm_map(myCorpus, function(x) gsub("@[[:alnum:]]*", "", x)) Suppression de la ponctuation (en supprimant d’abord les ’) > myCorpus <- tm_map(myCorpus, function(x) gsub("'", " ", x)) > myCorpus <tm_map(myCorpus, function(x) removePunctuation(x, preserve_intra_word_dashes = TRUE)) Suppression des nombres > myCorpus <- tm_map(myCorpus, removeNumbers) Suppression des URL myCorpus <tm_map(myCorpus, function(x) gsub("http[[:alnum:]]*", "", x)) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 38 Mise en forme du corpus : mots-outils Définition de mots-outils (« mots-vides », ou stop-words) myStopwords <- c(stopwords('french'), "via", "amp", "a", "rt", "où", "ça") Les mots-outils sont des termes, comme les prépositions, les articles, les pronoms et les conjonctions (« mots grammaticaux »), qui, par opposition aux « mots lexicaux » (substantifs, adjectifs, verbes), apportent peu d’information car leur distribution est uniforme dans la plupart des textes Comme ils sont assez nombreux (environ 20% à 30% des mots d’un texte standard), on les supprime à l’aide d’un « anti-dictionnaire », qui peut être éventuellement enrichi en fonction du contexte Suppression des mots-outils myCorpus <tm_map(myCorpus, removeWords, myStopwords) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 39 Mise en forme du corpus (ctd) Suppression des blancs inutiles myCorpus <- tm_map(myCorpus, stripWhitespace) Correction de fautes myCorpus <tm_map(myCorpus, gsub, pattern="credit", replacement="crédit") Indiquer que l’on a toujours un corpus de documents et non un simple corpus de caractères, engendré par des transformations non-standard > myCorpus <tm_map(myCorpus, PlainTextDocument) Export du texte du corpus texte.corpus <data.frame(text=unlist(sapply(myCorpus, `[`, "content")), date=as.Date(df$created), lon=df$longitude, lat=df$latitude, stringsAsFactors=F) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 40 Racinisation Le but des transformations précédentes est de diminuer le nombre de termes différents tout en perdant le moins d’information possible simplifier l’analyse et réduire la sparsité Définition d’un dictionnaire dictCorpus <- myCorpus Racinisation (stemming) : passage au radical (suppression de la fin du mot) corpus.stem <tm_map(myCorpus, stemDocument, language = "fr") Inconvénient de la racinisation : la racine n'est pas toujours un mot réel et le résultat manque de lisibilité et de pertinence > stemDocument("fraises",language = "french") [1] "frais" > stemDocument("cherche",language = "fr") [1] "cherch" > stemDocument("cherchent",language = "fr") [1] "cherchent" 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 41 Lemmatisation "stem completion" : remplacement de chaque radical par sa forme originale la plus fréquente (ou la 1ère ou au hasard…) dans un dictionnaire spécifié corpus.stem <tm_map(corpus.stem, dictionary=dictCorpus) stemCompletion, Lemmatisation : passage des flexions à la forme canonique (lemme) pour un verbe : infinitif pour un nom, adjectif, article… : masculin singulier difficulté : une même forme graphique (homographie) peut correspondre à plusieurs formes canoniques, et seule l’analyse grammaticale permet de déterminer la forme canonique pertinente exemples : suis (suivre, être), été (être, été), sens (sens, sentir) on peut tenter une désambiguïsation automatique mais il faut peut-être exclure certaines formes graphiques de la lemmatisation automatique La lemmatisation est plus complexe et plus longue que la racinisation mais plus adaptée aux langues latines, qui ont un fort taux de flexion 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 42 Exemple : tweets parlant du Crédit Agricole 3945 tweets extraits entre le 16 septembre et le13 octobre 2014 > df <- twListToDF(searchTwitter("Credit_Agricole", lang='fr', n=5000)) > table(as.Date(df$created)) 2014-09-16 2014-09-17 2014-09-18 2014-09-19 2014-09-20 2014-09-21 2014-09-22 7 103 125 128 216 174 211 2014-09-23 2014-09-24 2014-09-25 2014-09-26 2014-09-27 2014-09-28 2014-09-29 175 101 130 77 64 89 155 2014-09-30 2014-10-01 2014-10-02 2014-10-03 2014-10-04 2014-10-05 2014-10-06 213 137 186 231 142 113 203 2014-10-07 2014-10-08 2014-10-09 2014-10-10 2014-10-11 2014-10-12 2014-10-13 173 157 186 133 121 87 108 Les six premiers tweets > head(df$text) [1] "Crédit agricole Assurances crée une plate-forme unique en assurance vie patrimoniale: UAF Patrimoin... http://t.co/KEF0pwNMu5 #Assurance" [2] "La banquiere le retour vendredi dans les bacs du crédit agricole à Blain .. Qui veut placer son argent ? Venez venez :)" [3] "RT @CreditAgricole: #Logement : Faut-il un apport personnel pour acheter ? http://t.co/a5EbDpboI3 #CreditAgricole" [4] "RT @CreditAgricole: #Assurance : Profitez de votre domicile en toute tranquillité avec nos assurances http://t.co/w1KFNiXD0S" [5] "RT @CreditAgricole: #MozaicM6 : Jusqu'au 30 septembre, gagnez vos places pour le concert de @Yodelice à Paris http://t.co/F0FW9MK7jP" [6] "Demain go to Crédit Agricole." 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 43 Mise en forme des tweets Transformation du corpus (sans racinisation) Passage du corpus transformé à un data frame > texte.corpus <data.frame(text=unlist(sapply(myCorpus, `[`, "content")), date=as.Date(df$created), lon=df$longitude, lat=df$latitude, stringsAsFactors=F) Résultat de la mise en forme du texte > head(texte.corpus$text) [1] "crédit_agricole assurances crée plate-forme unique assurance vie patrimoniale uaf patrimoin assurance" [2] " banquiere retour vendredi bacs crédit_agricole blain veut placer argent venez venez " [3] " logement faut- apport personnel acheter crédit_agricole" [4] " assurance profitez domicile toute tranquillité assurances " [5] " mozaicm6 jusqu 30 septembre gagnez places concert paris " [6] "demain go to crédit_agricole" 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 44 Passage à une forme matricielle Construction d’une matrice « termes (lignes) / documents (colonnes) » à partir du corpus > tdm <TermDocumentMatrix(myCorpus, list(wordLengths=c(1,Inf))) > nTerms(tdm) # nb de termes de la matrice [1] 4534 control = On a 4534 termes et une matrice très « sparse » : seulement 29910 cases non nulles sur 17 886 630 (= 4534 x 3945) 0 2 > Zipf_plot(tdm) 4 Vérification de la loi de Zipf log(frequency) 6 8 > tdm A term-document matrix (4534 terms, 3945 documents) Non-/sparse entries: 29910/17856720 Sparsity : 100% Maximal term length: 44 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 0 2 4 log(rank) 6 458 Word cloud Le word cloud permet de repérer les termes les plus fréquents (plus gros, et placés au centre du graphique) conseil plus coupe calme bien inaugurer prend plan tond thepub tank of f toute santé hf cliente nouvelle 3si alerte comment grand lanceurs unique partout rh bastille sécuricompte handicap f inanceinnov ation v eut accepter random.order = FALSE, surendettement tout groupedécouv rez va france gouvernance accompagne tour etat agricole semaine record prendre demande nepassezpasacote solutions domicile télésurveillance 1 banque pret aca siège paris protégez assurance application rse participant préconisé emploi clients lindustrie saisit f rançois bancaire engagement près auto septembre candidats niort situation comme village engage belle mozaicm6 pubs générale crédit_agricole > wordcloud(d$word, d$freq, min.freq=5, colors=grayLevels, rot.per=.2, max.words=100) problème of f re 2014 assurances banques f inancière hollande analy ste chez licenciée contre-pied recrute caisse random.order = FALSE => les mots fréquents sont affichés d'abord, donc au centre Limite : le word cloud ne rapproche pas les termes voisins dans le corpus 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 46 On veut rapprocher les termes voisins dans le corpus, en considérant des termes comme d’autant plus proches qu’ils sont co-occurrents dans un plus grand nombre de documents La structure matricielle construite permet d’appliquer les méthodes habituelles d’analyse factorielle et de classification (ici une CAH) On part de la matrice « termes / documents », dont on supprime les termes les plus rares (pas plus de 99% de termes 0) crédit_agricole tdm2 <- removeSparseTerms(tdm, sparse=0.99) m2 <- as.matrix(tdm2) distMatrix <- dist(scale(m2)) h <- hclust(distMatrix, method="ward.D2") plot(h) 40 > > > > > © Stéphane Tufféry - Usage réservé à l’UCO 47 va innovation village hollande françois record off the france bancaire 2014 groupe agricole tond sécuricompte clients comment partout accompagne toute application banque lanceurs - problème alerte gouvernance etat conseil saisit banques nouvelle solutions 11/12/2015 protégez domicile télésurveillance assurance 20 0 Height 60 80 100 Classification des termes Classification des documents On peut classer des termes mais aussi des documents Une méthode permet d’identifier 5 classes, caractérisées par les termes suivants : cluster 1 : accompagne banque crédit_agricole nouvelle partout application toute cluster 2 : assurance domicile protégez solutions télésurveillance - 2014 cluster 3 : crédit_agricole banque agricole alerte comment problème cluster 4 : gouvernance conseil crédit_agricole nouvelle etat banques saisit cluster 5 : hollande village crédit_agricole françois off the record Les classes (ou « clusters ») sont de tailles inégales : > kmeansResult$size [1] 328 136 3041 184 135 121 Plusieurs méthodes de classification existent (k-means, k-medoids…) Certaines méthodes peuvent déterminer un nombre de classes optimal selon un certain critère exemple : les k-means avec l’algorithme clusterSim qui s’appuie sur un critère tel que l’indice Silhouette de Rousseeuw (s’assurant d’une faible distance entre les éléments d’une même classe et d’une distance moyenne plus grande entre eux et les éléments d’une autre classe) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 48 Score d’opinion (ou analyse de sentiments) Méthode de base : partir d’une liste de mots positifs et d’une liste de mots négatifs, compter dans chaque document le nombre de mots positifs et lui soustraire le nombre de mots négatifs Cela donne le « score » du document Voici sur le corpus de tweets la distribution des scores : > table(texte.corpus$score) -3 -2 -1 0 1 2 6 199 485 1609 1060 187 3 395 4 4 La brièveté des tweets entraîne bien sûr la faible amplitude du « score d’opinion » La qualité du score dépend de celle des listes 1500 count 1000 500 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 49 0 -2 0 texte.corpus$score 2 4 Évolution du score d’opinion dans le temps -2.0 -1.5 -1.0 -0.5 Score médian Score moyen 0.0 0.5 1.0 1.5 2.0 2.5 3.0 On calcule le score moyen et le score médian chaque jour sept. 15 sept. 16 sept. 18 sept. 20 sept. 22 sept. 24 sept. 26 sept. 28 sept. 29 sept. 30 oct. 02 oct. 04 oct. 06 oct. 08 oct. 10 oct. 12oct. 13 Date 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 50 Graphe des termes avec leur connotation On crée un graphe non orienté dont les sommets sont les termes, et dont les arêtes relient deux termes s’ils sont co-occurrents dans un document Pour cela, on part de la matrice « termes / documents », dont on supprime les termes les plus rares (pas plus de 98% de termes 0) > tdm2 <- removeSparseTerms(tdm, sparse=0.98) > m2 <- as.matrix(tdm2) On passe à une matrice booléenne que l’on transforme en matrice d’adjacence (mij = nombre de termes présents dans les documents i et j) > > > > m2[m2>=1] <- 1 termMatrix <- m2 %*% t(m2) g <- graph.adjacency(termMatrix, weighted=T, mode="undirected") g <- simplify(g) On fait correspondre les termes plus fréquents à des sommets plus gros > freq <- sort(rowSums(m2), decreasing=TRUE) > d <- data.frame(word=names(freq), freq=freq) > V(g)$size <- log(d[match(V(g)$name, d$word),2])*5 On colorie les sommets en rouge s’il s’agit de « mots négatifs » et en vert si ce sont des « mots positifs » 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 51 Graphe des termes avec leur connotation 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 52 Détection des communautés # plusieurs méthodes disponibles > cm <- fastgreedy.community(g) > cm <- edge.betweenness.community(g) > cm <- walktrap.community(g) > length(cm) # nombre de communautés > sizes(cm) # taille des communautés # association de chaque sommet à sa communauté > memb <- cutat(cm, steps=which.max(cm$modularity)-1) # coloriage des communautés > colbar <- rainbow(length(cm)) > col <- colbar[membership(cm)] # graphe interactif > tkplot(g, vertex.color=col) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 53 Communautés dans le graphe des termes Méthode Walktrap 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 54 Communautés dans le graphe des termes Méthode Gloutonne 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 55 Géolocalisation des tweets Représentation cartographique du lieu du tweet quand il est connu Point rouge si le score du tweet est < 0, vert s’il est > 0 et bleu s’il est = 0 Mais cette information est rarement disponible, car l’option de géolocalisation est désactivée par défaut sur Twitter 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 56 Élaboration d’un modèle de scoring 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 57 Définition de la variable à expliquer En médecine : définition souvent naturelle un patient a ou non une tumeur (et encore faut-il distinguer les différents stades d’une tumeur) Dans la banque : qu’est-ce qu’un client non risqué ? aucun impayé, 1 impayé, n impayés mais dette apurée ? Dans certains modèles, on définit une « zone indéterminée » non modélisée : 1 impayé ⇒ variable à expliquer non définie aucun impayé ⇒ variable à expliquer = 0 ≥ 2 impayés consécutifs ⇒ variable à expliquer = 1 (≥ 3 impayés pour Bâle 2) Définition parfois encore plus problématique en attrition dans la banque, contrairement à la téléphonie ou l’assurance, on peut partir brutalement ou progressivement 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 58 Biais de sélection En risque : certaines demandes sont refusées et on ne peut donc pas mesurer la variable à expliquer certaines populations ont été exclues de la modélisation et on leur applique pourtant le modèle il existe des méthodes « d’inférence des refusés », mais dont aucune n’est totalement satisfaisante et parfois aucune trace n’est conservée des demandes refusées ! En appétence : certaines populations n’ont jamais été ciblées et on ne leur a pas proposé le produit si on les modélise, elles seront présentes dans l’échantillon des « mauvais » (clients sans appétence) peut-être à tort contrairement au cas précédent, on peut mesurer la variable à expliquer car il y a des souscriptions spontanées envisager de limiter le périmètre aux clients ciblés Fraude à la carte bancaire : certaines transactions ont été rejetées et on ne sait pas toujours si elles étaient frauduleuses 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 59 Taille de l’échantillon taux d'erreur mauvaise généralisation données de test t données apprentissage bonne généralisation taille de l'échantillon d'apprentissage Théorème de Vapnik : R < Remp h (log(2n / h) + 1) − log(α / 4) + n 11/12/2015 taille suffisante © Stéphane Tufféry - Usage réservé à l’UCO 60 Représentativité de l’échantillon d’apprentissage Hypothèse fondamentale : l’échantillon d’apprentissage est représentatif de la population à laquelle sera appliqué le modèle N’implique pas un échantillonnage aléatoire simple : événement à prédire rare ⇒ stratification non proportionnelle de l’échantillon sur la variable à expliquer parfois : 50 % de positifs et 50 % de négatifs nécessaire quand on utilise CART pour modéliser 3 % de positifs, sinon CART prédit que personne n’est positif ⇒ excellent taux d’erreur = 3 % ! change la constante du logit de la régression logistique intéressant en cas d’hétéroscédasticité dans une analyse discriminante linéaire 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 61 Quand on manque de données Enquêtes auprès d’échantillons de clients en les incitant à répondre à des questionnaires en leur proposant des cadeaux Utilisation des mégabases de données (Acxiom, Wegener Direct Marketing) Utilisation de données géodémographiques (type d’habitat en fonction de l’adresse) données moins précises que des données nominatives mais disponibles pour des prospects « Scoring prénom » Recours à des modèles standards préétablis par des sociétés spécialisées (ex : scores génériques) quand on a des données actuelles mais peu d’historique 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 62 Scoring prénom P a s c a l 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 63 Construction de la base d’analyse variable cible : acheteur (O/N) O N … … O … … N … âge PCS 58 27 … … 46 … … 32 … cadre ouvrier technicien employé situation nb montant famille achats achats marié 2 40 célibataire 3 30 … … … … … … célibataire 3 75 … … … … … … marié 1 50 … … … variable à expliquer observée année n … … … … … … … … … variable explicative m … … … … … … … … … variables explicatives observées année n-1 O : au moins 500 clients ciblés dans l'année n et acheteurs N : au moins 500 clients ciblés dans l'année n et non acheteurs échantillon apprentissage test … … test … … apprentissage … au moins 1000 cas n° client 1 2 … … k … … 1000 … répartition aléatoire des clients entre les 2 échantillons PREDICTION f 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 64 Sélection des périodes d’observation Élaboration du modèle :--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--: – 24 mois – 12 mois aujourd’hui observation des observation de la variables explicatives variable à expliquer Application du modèle ? :--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--:--: – 12 mois aujourd’hui + 12 mois observation des prédiction de la variables explicatives variable à expliquer Le modèle sera par exemple une fonction f telle que : Probabilité(variable cible = x) = f(variables explicatives) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 65 Pré-segmentation Segmentation (classification) de la population : en groupes forcément distincts selon les données disponibles (clients / prospects) : homogénéité du point de vue des variables explicatives ou en groupes statistiquement pertinents vis-à-vis des objectifs de l’étude : homogénéité du point de vue de la variable à expliquer ou selon certaines caractéristiques sociodémographiques (âge, profession…) si elles correspondent à des règles métiers (offres marketing spécifiques) Autres caractéristiques recherchées : simplicité de la segmentation (pas trop de règles) nombre limité de segments et stabilité des segments tailles des segments généralement du même ordre de grandeur 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 66 Intérêt de segmenter : le paradoxe de Simpson courriel téléphone TOTAL courriel téléphone TOTAL courriel téléphone TOTAL 11/12/2015 sans achat 950 475 1 425 Hommes avec achat 50 25 75 TOTAL 1 000 500 1 500 taux d'achat 5,00% 5,00% 5,00% sans achat 450 900 1 350 Femmes avec achat 50 100 150 TOTAL 500 1 000 1 500 taux d'achat 10,00% 10,00% 10,00% sans achat 1 400 1 375 2 775 Tous clients avec achat 100 125 225 TOTAL 1 500 1 500 3 000 taux d'achat 6,67% 8,33% 7,50% © Stéphane Tufféry - Usage réservé à l’UCO 67 Paradoxe de Simpson : explication Paradoxe : les hommes ne répondent pas mieux au téléphone qu’au courriel de même pour les femmes et pourtant, le téléphone semble avoir globalement un meilleur taux d’achat Explication : un individu pris au hasard ne répond pas mieux au téléphone mais les femmes achètent plus et on a privilégié le téléphone pour les contacter liaison entre les variables « sexe » et « canal de vente » Autre exemple publié dans le Wall-Street Journal du 2/12/2009 : le taux de chômage est globalement plus faible en octobre 2009 (10,2 %) qu’en novembre 1982 (10,8 %) et pourtant, ce taux de chômage est plus élevé en 2009 à la fois pour les diplômés et pour les non-diplômés ! l’explication est l’existence d’une liaison entre l’année et le niveau d’étude : le niveau moyen d’étude est plus élevé en 2009, et le taux de chômage est plus faible chez ceux dont le niveau d’étude est plus élevé 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 68 Analyse exploratoire des données Explorer la distribution des variables Vérifier la fiabilité des variables valeurs incohérentes ou manquantes suppression ou imputation ou isolement valeurs extrêmes voir si valeurs aberrantes à éliminer certaines variables sont fiables mais trompeuses le profil de souscripteurs peut être faussé par une campagne commerciale ciblée récente Variables continues détecter la non-monotonie ou la non-linéarité justifiant la discrétisation tester la normalité des variables (surtout si petits effectifs) et les transformer pour augmenter la normalité éventuellement discrétiser : découper la variable en tranches en fonction de la variable à expliquer et isoler les valeurs manquantes ou aberrantes 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 69 Examen de la distribution des variables La durée du crédit présente des pics prévisibles à 12, 24, 36, 48 et 60 mois On constate assez nettement la plus forte proportion de crédits plus longs parmi ceux qui ont des impayés Pas de valeur manquante ou aberrante 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 70 Normalisation : transformations Log (V) transformation la plus courante pour corriger un coefficient d’asymétrie > 0 Si V ≥ 0, on prend Log (1 + V) Racine carrée (V) si coefficient d’asymétrie > 0 -1/V ou –1/V² si coefficient d’asymétrie > 0 V2 ou V3 si coefficient d’asymétrie < 0 Arc sinus (racine carrée de V/100) si V est un pourcentage compris entre 0 et 100 La transformation de Box-Cox (f(X) = (Xλ-1)/λ si λ ≠ 0, et f(X) = log(X) sinon) recouvre un ensemble de transformations possibles, selon la valeur du paramètre λ déterminée par maximisation de la vraisemblance (en écrivant la densité d’une loi normale), et est implémentée dans plusieurs logiciels, dont R (fonction boxplot du package MASS) Transformation Correction Effet 11/12/2015 exp(V) V3 V2 asymétrie à gauche fort moyen V pas de correction √V log(V) -1/V -1/V2 asymétrie à droite moyen © Stéphane Tufféry - Usage réservé à l’UCO fort 71 Normalisation : un exemple Revenus : Log(1+revenus) : Racine(revenus) : Asymétrie = 2,38 Asymétrie = - 2,03 Asymétrie = 0,64 Aplatissement = 11,72 Aplatissement = 12,03 Aplatissement = 1,76 La racine carrée normalise ici mieux que le logarithme 11/12/2015 (Loi normale : asymétrie aplatissement (– 3) = 0) © Stéphane Tufféry - Usage=réservé à l’UCO 72 Utilité de la normalisation Une des hypothèses de l’analyse discriminante linéaire : multinormalité de X/Gi et égalité des matrices de covariances N’est en pratique jamais satisfaite Mais on constate une amélioration des performances de l’analyse discriminante lorsque l’on s’en rapproche : en neutralisant les « outliers » (individus hors norme) en normalisant les variables explicatives susceptibles d’entrer dans le modèle Moralité : mieux vaut connaître les contraintes théoriques pour se rapprocher des conditions optimales 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 73 Discrétisation en tranches naturelles Densité clients sans appétence clients avec appétence variable explicative Y 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 74 Pourquoi discrétiser ? Appréhender des liaisons non linéaires (de degré >1), voire non monotones, entre les variables continues et la variable à expliquer par une analyse des correspondances multiples, une régression logistique ou une analyse discriminante DISQUAL Neutraliser les valeurs extrêmes (« outliers ») qui sont dans la 1ère et la dernière tranches Gérer les valeurs manquantes (imputation toujours délicate) rassemblées dans une tranche spécifique ou regroupée avec une autre Gérer les ratios dont le numérateur et le dénominateur peuvent être tous deux > 0 ou < 0 exemple : EBE / capital économique (rentabilité économique), résultat net / capitaux propres (rentabilité financière ou ROE) Améliorer parfois le pouvoir prédictif Faciliter la lisibilité du modèle (grille de score) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 75 Analyse exploratoire des données (suite) Variables qualitatives ou discrètes regrouper certaines modalités aux effectifs trop petits représenter les modalités dans une analyse des correspondances multiples Créer des indicateurs pertinents d’après les données brutes prendre l’avis des spécialistes du secteur étudié création d’indicateurs pertinents (maxima, moyennes, présence/absence…) utiliser des ratios plutôt que des variables absolues (exemple : plafond ligne de crédit + part utilisée ⇒ taux d’utilisation du crédit) calcul d’évolutions temporelles de variables création de durées, d’anciennetés à partir de dates croisement de variables, interactions utilisation de coordonnées factorielles Détecter les liaisons entre variables entre variables explicatives et à expliquer (bon) entre variables explicatives entre elles (colinéarité à éviter dans certaines méthodes) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 76 Exploration avec une ACM 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 77 Traitement des valeurs manquantes D’abord vérifier que les valeurs manquantes ne proviennent pas : d’un problème technique dans la constitution de la base d’individus qui ne devraient pas se trouver dans la base Sinon, plusieurs solutions sont envisageables selon les cas : supprimer les observations (si elles sont peu nombreuses ou si le non renseignement de la variable est grave et peut laisser suspecter d’autres anomalies dans l’observation) ne pas utiliser la variable concernée (surtout si elle est peu discriminante) ou la remplacer par une variable proche mais sans valeur manquante mieux vaut supprimer une variable a priori peu utile, mais qui est souvent non renseignée et conduirait à exclure de nombreuses observations de la modélisation traiter la valeur manquante comme une valeur à part entière imputation : remplacer la valeur manquante par une valeur par défaut ou déduite des valeurs des autres variables remplacer les valeurs manquantes grâce à une source externe (rarement possible) Mais aucune solution n’est idéale 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 78 Imputation statistique Imputation par le mode, la moyenne ou la médiane forte distorsion de la distribution de la variable préférer une imputation dans une classe obtenue préalablement Imputation par une régression ou un arbre de décision minoration de la variabilité et des intervalles de confiance des paramètres estimés mais possibilité d’ajouter un résidu aléatoire Y = f(Xi) + ε Imputation hot deck imputation par la valeur d’une autre observation tirée aléatoirement augmente la variance variantes : hot deck séquentiel, métrique, dans la classe de l’observation Imputation multiple augmente aussi la variance en remplaçant chaque valeur manquante par m valeurs (par exemple m = 5), puis en faisant les analyses sur les m tables et en combinant les résultats pour obtenir les paramètres avec leur variance (intra et inter-tables) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 79 L’imputation n’est jamais neutre Surtout si les données ne sont pas manquantes au hasard Déformation des variances et des corrélations avant imputation après imputation par la moyenne imputation par ← moyenne ou régression → 6 5 4 3 2 1 0 0 1 2 3 yi 6 5 5 4 4 3 3 2 2 1 xi 0 imputation par régression + résidu aléatoire yi 6 1 xi 0 0 1 2 3 0 1 2 3 source : J.-P. Nakache – A. Gueguen, RSA 2005 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 80 La sélection des variables 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 81 Importance de la sélection des variables Exemple de David Hand (2005) : régression avec un coefficient de corrélation linéaire 0,5 entre chaque prédicteur (variable explicative) et la variable à expliquer, et un coefficient de corrélation ρ entre chaque prédicteur les courbes représentent 1-R² (proportion de la somme des carrés non expliquée) en fonction du nombre de prédicteurs 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 82 Limiter le nombre de variables sélectionnées En présence de colinéarité entre les prédicteurs, l’apport marginal de chaque prédicteur décroît très vite Et pourtant, ici chaque prédicteur est supposé avoir la même liaison avec la variable à expliquer, ce qui n’est pas le cas dans une sélection pas à pas réelle où la liaison décroît ! Conclusion : éviter au maximum la colinéarité des prédicteurs limiter le nombre de prédicteurs : souvent moins de 10 alternative : la régression PLS ou pénalisée (ridge, Lasso…) Remarque : dans une procédure pas à pas, le 1er prédicteur peut occulter un autre prédicteur plus intéressant 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 83 Sur-apprentissage en régression (A) Modèle trop simp le (B) Bon modèle (C) Modèle trop complexe Un modèle trop poussé dans la phase d’apprentissage : épouse toutes les fluctuations de l’échantillon d’apprentissage, détecte ainsi de fausses liaisons, et les applique à tort sur d’autres échantillons On parle de sur-apprentissage ou sur-ajustement 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 84 Sur-apprentissage en classement (C) Modèle trop complexe (B) Bon modèle Source : Olivier Bousquet 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 85 Taux d’erreur en fonction de la complexité du modèle taux d'erreur données de test mauvaise généralisation bonne généralisation données apprentissage complexité du modèle (A) (B) arrêter ici (C) Théorème de Vapnik : R < Remp + 11/12/2015 h (log(2n / h) + 1) − log(α / 4) n © Stéphane Tufféry - Usage réservé à l’UCO 86 Sélection des variables explicatives En présence de corrélation linéaire entre les prédicteurs, l’apport marginal de chaque prédicteur décroît très vite Il peut même altérer le modèle (inversions de signes des paramètres) et réduire son pouvoir prédictif On doit effectuer des tests statistiques de liaison On peut préférer un prédicteur moins lié à la variable à expliquer s’il est moins corrélé aux autres prédicteurs On peut travailler sur les coordonnées factorielles Il est plus facile de limiter le nombre de prédicteurs si la population est homogène Et même s’ils sont peu corrélés, les prédicteurs doivent être suffisamment peu nombreux (ou bornés comme dans la régression pénalisée) pour éviter d’avoir un modèle trop complexe et du surajustement 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 87 Rappel sur les tests Tests paramétriques supposent que les variables suivent une loi particulière (normalité, homoscédasticité) ex : test de Student, ANOVA Tests non-paramétriques ne supposent pas que les variables suivent une loi particulière se fondent souvent sur les rangs des valeurs des variables plutôt que sur les valeurs elles-mêmes peu sensibles aux valeurs aberrantes ex : test de Wilcoxon-Mann-Whitney, test de Kruskal-Wallis Exemple du r de Pearson et du ρ de Spearman : r > ρ ⇒ présence de valeurs extrêmes ? ρ > r ⇒ liaison non linéaire non détectée par Pearson ? ex : x = 1, 2, 3… et y = e1, e2, e3… 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 88 Le V de Cramer V de Cramer = χ2 2 χ max mesure directement l'intensité de la liaison de 2 variables qualitatives, sans avoir recours à une table du χ² indépendamment du nombre de modalités et de l’effectif en intégrant l’effectif et le nombre de degrés de liberté, par l'intermédiaire de χ²max χ²max = effectif x [min (nb lignes, nb colonnes) – 1] V compris entre 0 (liaison nulle) et 1 (liaison parfaite) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 89 Pourquoi le V de Cramer ? Classe 1 Classe 2 Classe 1 Ensemble Classe 2 Ensemble Effectifs observés : Effectifs observés : A 55 45 100 A 550 450 1000 B 20 30 50 B 200 300 500 Total 75 75 150 Total 750 750 1500 Effectifs attendus si la variable est indépendante de la classe : Effectifs attendus si la variable est indépendante de la classe : A 50 50 100 A 500 500 1000 B 25 25 50 B 250 250 500 Total 75 75 150 Total 750 750 1500 Probabilité du χ² = 0,08326454 Probabilité du χ² = 4,3205.10-8 V de Cramer = 0,14142136 V de Cramer = 0,14142136 Quand la taille de la population augmente, le moindre écart finit par devenir significatif aux seuils usuels 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 90 Exemple de liste des variables Obs Liste des variables par liaison décroissante avec la variable à expliquer Ici les variables sont qualitatives et la liaison mesurée par le V de Cramer 0,4 0,35 V_Cramer Variable 1 0.35174 Comptes 2 0.24838 Historique_credit 3 0.20499 Duree_credit 4 0.19000 Epargne 5 0.17354 Objet_credit 6 0.15809 Montant_credit 7 0.15401 Biens 8 0.13553 Anciennete_emploi 9 0.13491 Statut_domicile 10 0.12794 Age 11 0.11331 Autres_credits 12 0.09801 Situation_familiale 13 0.08152 Garanties 14 0.07401 Taux_effort 15 0.05168 Nb_credits 16 0.04342 Type_emploi 17 0.03647 Telephone 18 0.02737 Anciennete_domicile 0,3 0,25 0,2 0,15 0,1 0,05 11/12/2015 Ag tre e s_ cr tu ed at io it s n_ fa m ilia le G ar an t ie Ta s ux _e ff o Nb rt _c re di Ty ts pe _e m pl oi An Te cie le p nn ho et ne e_ do Nb m ici _p le er s_ ch ar ge Si Au Hi s Co m pt to es riq ue _c re Du di t re e_ cr ed it Ep ar gn O e bj et _c M re on di ta t nt _c re di t An cie Bi nn en et s e_ em St at pl ut oi _d om ici le 0 © Stéphane Tufféry - Usage réservé à l’UCO 19 0.00301 Nb_pers_charge91 Sélection des variables : bootstrap On effectue une régression logistique stepwise sur chacun des échantillons bootstrap Variable Nb occurrences Constante 50 V05 46 V09 39 V14 37 V01 35 V03 34 V13 28 V02 23 V04 22 V18 18 V22 18 V19 16 V17 15 V24 14 V08 13 V36 12 V28 11 V07 10 11/12/2015 Variable Nb occurrences V25 7 V26 7 V15 6 V12 5 V29 5 V31 5 V10 4 V20 4 V06 2 V16 2 V32 2 V37 2 V11 1 V21 1 V23 1 V27 1 V34 1 V35 1 Bootstrap : B tirages aléatoires avec remise de n individus parmi n et sélection de variables sur chacun des B échantillons bootstrap C 60 o V n 0 50 s e5 V V t 0 V V 1 a 9 0 0 4 40 n 1 3 V t 1 V V 3 0 30 0 V V 2 4 1 2 V V V V V 1 1 V V 8 2 2 0 20 9 7 3 2 4 8 0 V V V V V V 6 8 V V 7 2 2 1 1 2 3 V V V V V V V V V V 1 2 5 6 5 10 2 9 1 0 0 0 1 3 3 1 2 2 2 3 3 6 6 2 7 1 1 3 7 4 5 seuil seuil 0 © Stéphane Tufféry - Usage réservé à l’UCO 92 La modélisation 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 93 Quelques méthodes classiques de scoring Analyse discriminante linéaire Résultat explicite P(Y/ X1, … , Xp) sous forme d’une formule Requiert des Xi continues et des lois Xi/Y multinormales et homoscédastiques (attention aux individus hors norme) Optimale si les hypothèses sont remplies Régression logistique Sans hypothèse sur les lois Xi/Y, Xi peut être discret, nécessaire absence de colinéarité entre les Xi Méthode très souvent performante Méthode la plus utilisée en scoring Arbres de décision Règles complètement explicites Traitent les données hétérogènes, éventuellement manquantes, sans hypothèses de distribution Détection d’interactions et de phénomènes non linéaires Mais moindre robustesse 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 94 Grille de score Passage de coefficients (« Estimation ») à des pondérations dont la somme est comprise entre 0 et 100 Variable Modalité Age > 25 ans 0 Age ≤ 25 ans 8 Autres_credits Aucun crédit extérieur 0 Nb points Analyse des estimations de la vraisemblance maximum Erreur Khi 2 DF Estimation std de Wald Pr > Khi 2 Paramètre Intercept 1 -3.1995 0.3967 65.0626 <.0001 Comptes CC >= 200 euros 1 1.0772 0.4254 6.4109 0.0113 Autres_credits Crédits extérieurs 7 Comptes CC < 0 euros 1 2.0129 0.2730 54.3578 <.0001 Comptes Pas de compte 0 Comptes CC [0-200 euros[ 1 1.5001 0.2690 31.1067 <.0001 Comptes Pas de compte 0 0 . . . Comptes CC ≥ 200 euros 13 Historique_credit Crédits en impayé 1 1.0794 0.3710 8.4629 0.0036 Comptes CC [0-200 euros[ 19 Historique_credit Crédits sans retard 1 0.4519 0.2385 3.5888 0.0582 Comptes CC < 0 euros 25 Historique_credit Jamais aucun crédit 0 0 . . . Duree_credit > 36 mois 1 1.4424 0.3479 17.1937 <.0001 Duree_credit ≤ 15 mois 0 Duree_credit 16-36 mois 1 1.0232 0.2197 21.6955 <.0001 Duree_credit 16-36 mois 13 Duree_credit <= 15 mois 0 0 . . . Duree_credit <= 25 ans 1 0.6288 0.2454 6.5675 0.0104 > 36 mois 18 Age Age > 25 ans 0 0 . . . Epargne pas épargne ou > 500 euros 0 Epargne < 500 euros 1 0.6415 0.2366 7.3501 0.0067 Epargne < 500 euros 8 Epargne pas épargne ou > 500 euros 0 0 . . . Garanties Avec garant 1 -1.7210 0.5598 9.4522 0.0021 Garanties Avec garant 0 Garanties Sans garant 0 0 . . . Garanties Sans garant 21 Autres_credits Aucun crédit extérieur 1 -0.5359 0.2439 4.8276 0.0280 Historique_credit Jamais aucun crédit 0 Autres_credits Crédits extérieurs 0 0 . . . Historique_credit Crédits sans retard 6 11/12/2015 Historique_credit © Stéphane Tufféry - Usage réservé à l’UCO Crédits en impayé 95 13 Exemples de notations Note d’un jeune de moins de 25 ans, qui demande pour la première fois un crédit dans l’établissement et qui n’en a pas ailleurs, sans impayé, avec un compte dont le solde moyen est légèrement positif (mais < 200 €), avec un peu d’épargne (< 500 €), sans garant, qui demande un crédit sur 36 mois : 8 + 0 + 19 + 13 + 8 + 21 + 0 = 69 points Note d’un demandeur de plus de 25 ans, avec des crédits à la concurrence, sans impayé, avec un compte dont le solde moyen est > 200 €, avec plus de 500 € d’épargne, sans garant, qui demande un crédit sur 12 mois : 0 + 7 + 13 + 0 + 0 + 21 + 0 = 41 points On constate la facilité de l’implémentation et du calcul du score 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 96 Découpage de la note de score On peut calculer les déciles du nombre de points et leurs Table de dnbpoints par Cible taux d’impayés correspondants : dnbpoints(Rang pour la variable nbpoints) Analysis Variable : nbpoints FREQUENCE Pct en ligne Rang pour N la variable nbpoints Obs Minimum Maximum 0 11/12/2015 104 Cible OK KO Total 0 99 95.19 5 4.81 104 1 89 93.68 6 6.32 95 2 100 93.46 7 6.54 107 6.0000000 29.0000000 1 95 33.0000000 37.0000000 2 107 39.0000000 42.0000000 3 101 19 84.17 15.83 120 3 120 43.0000000 48.0000000 4 71 27 72.45 27.55 98 4 98 49.0000000 54.0000000 5 60 33 64.52 35.48 93 5 93 55.0000000 60.0000000 6 81 6 81 61.0000000 65.0000000 48 33 59.26 40.74 7 60 44 57.69 42.31 104 8 38 54 41.30 58.70 92 9 34 72 32.08 67.92 106 7 104 66.0000000 69.0000000 8 92 70.0000000 74.0000000 9 106 75.0000000 95.0000000 Seuils de taux © Stéphane Tufféry - Usage réservé à l’UCO Total 700 300 97 1000 Taux d’impayés par tranches de score Table de nbpoints par Cible nbpoints FREQUENCE Pourcentage Pct en ligne 8,69% d’impayés octroi du crédit avec un minimum de formalités Cible OK risque faible 389 [0 , 48] points 38.90 KO Total 37 3.70 8.69 426 42.60 risque moyen 239 137 [49 , 69] points 23.90 13.70 376 37.60 72 126 7.20 12.60 36.36 63.64 198 19.80 91.31 63.56 36.44 risque fort ≥ 70 points Total 11/12/2015 Tranche de risque faible : Tranche de risque moyen : 36,44% d’impayés octroi du crédit selon la procédure standard Tranche de risque élevé : 63,64% d’impayés octroi du crédit interdit sauf par l’échelon hiérarchique supérieur (directeur d’agence) 700 300 1000 70.00 30.00 100.00 © Stéphane Tufféry - Usage réservé à l’UCO 98 Reprenons nos exemples Demandeur de moins de 25 ans, qui demande pour la première fois un crédit dans l’établissement et qui n’en a pas ailleurs, sans impayé, avec un compte dont le solde moyen est légèrement positif (mais < 200 €), avec un peu d’épargne (< 500 €), sans garant, qui demande un crédit sur 36 mois : 69 points ⇒ risque moyen On est à la limite du risque élevé et cette limite aurait été franchie avec un crédit sur plus de 36 mois Demandeur de plus de 25 ans, avec des crédits à la concurrence, sans impayé, avec un compte dont le solde moyen est > 200 €, avec plus de 500 € d’épargne, sans garant, qui demande un crédit sur 12 mois : 41 points ⇒ risque faible 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 99 Exemple de prédiction des impayés à 12 mois 100% 90% 5,61 7,64 80% 10,46 70% 17,27 50,3 60% 50% 26,8 40% 22,37 30% 20% 17,45 32,23 10% 5,67 3,41 0,8 0% % clients Score 1 11/12/2015 Score 2 % impayés Score 3 Score 4 © Stéphane Tufféry - Usage réservé à l’UCO Score 5 Score 6 100 Les résultats du modèle retenu (autre exemple) 50,00% 45,00% 40,00% 35,00% 30,00% 25,00% 20,00% 15,00% 10,00% 5,00% 0,00% taux souscription 1 2 3 4 5 6 7 8 9 10 0,10% 0,22% 0,67% 0,86% 1,38% 2,15% 3,23% 9,37% 21,08% 44,76% Observer l’évolution « exponentielle » du taux de souscription 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 101 Sensibilité et spécificité Pour un score devant discriminer un groupe A (les positifs ; par exemple : les risqués) par rapport à un autre groupe B (les négatifs ; par exemple : les non risqués), on définit 2 fonctions du seuil de séparation s du score : sensibilité = α(s) = Prob(score ≥ s / A) = probabilité de bien détecter un positif spécificité = β(s) = Prob(score < s / B) = probabilité de bien détecter un négatif Pour un modèle, on cherche s qui maximise α(s) tout en minimisant les faux positifs 1 - β(s) = Prob(score ≥ s / B) faux positifs : négatifs considérés comme positifs à cause du score Le meilleur modèle : permet de détecter le plus possible de vrais positifs avec le moins possible de faux positifs 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 102 1,0 Courbe ROC ,8 Source de la courbe ,5 Ligne de référence arbre de décision ,3 analys discriminante La courbe ROC 0,0 0,0 régress. logistique ,3 ,5 ,8 1,0 sur l’axe Y : sensibilité = α(s) sur l’axe X : 1 - spécificité = 1 - β(s) proportion y de vrais positifs en fonction de la proportion x de faux positifs, lorsque l'on fait varier le seuil s du score Aire AUC sous la courbe ROC = probabilité que score(x) > score(y), si x est tiré au hasard dans le groupe A (à prédire) et y dans le groupe B 1ère méthode d’estimation : par la méthode des trapèzes 2e méthode d’estimation : par les paires concordantes 3e méthode équivalente : par le test de Mann-Whitney Le modèle est d'autant meilleur que l’AUC s’approche de 1 AUC = 0,5 ⇒ modèle pas meilleur qu'une notation aléatoire 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 103 Exemple de courbe ROC # Classe Score # Classe 1 P 0,90 11 P 0,40 2 P 0,80 12 N 0,39 3 N 0,70 13 P 0,38 4 P 0,65 14 P 0,37 5 P 0,60 15 N 0,35 6 P 0,55 16 1,000 N 0,30 7 P 0,50 17 N 0,25 8 N 0,45 18 9 N 0,44 19 10 N 0,42 20 ,900 Score P 0,20 N 0,15 N 0,10 ,800 0,37 0,15 0,10 ,900 1,000 0,25 0,40 ,700 True positive rate 0,50 ,600 0,42 ,500 ,400 ,300 ,200 0,70 ,100 ∞ ,000 ,000 11/12/2015 ,100 ,200 ,300 ,400 ,500 ,600 False positive rate © Stéphane Tufféry - Usage réservé à l’UCO ,700 ,800 104 Interprétation de la courbe ROC seuil s minimum : tous classés en + taux de vrais positifs prédiction parfaite seuil s maximum : tous classés en - prédiction nulle taux de faux positifs 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 105 Matrice de confusion et courbe ROC Tableau de classementa Prévu CHD Observé CHD 0 0 1 1 45 16 Pourcentage global 12 27 Pourcentage correct 78,9 62,8 72,0 a. La valeur de césure est ,500 Sensibilité = 27/43 = 0,63 Seuil à 0,5 (= césure de la matrice de confusion) 1 - Spécificité = 1-(45/57) = 0,21 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 106 Courbes ROC avec entrée progressive des variables du modèle Sensi bi l i t é 1. 0 _step_ = 7 0. 9 0. 8 0. 7 _step_ = 1 0. 6 0. 5 0. 4 0. 3 Rapprocher l’apport de plus en plus faible de chaque variable avec la remarque de David Hand 0. 2 0. 1 0. 0 0. 0 0. 1 0. 2 0. 3 0. 4 0. 5 0. 6 0. 7 0. 8 0. 9 1. 0 1 - Spéci f i ci t é 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 107 Les 7 principes de base de la modélisation La préparation des données est la phase la plus longue, peut-être la plus laborieuse mais la plus importante Il faut un nombre suffisant d’observations pour en inférer un modèle Validation sur un échantillon de test distinct de celui d’apprentissage (ou validation croisée) Arbitrage entre la précision d’un modèle et sa robustesse (« dilemme biais – variance ») limiter le nombre de variables explicatives et surtout éviter leur colinéarité ou utiliser une méthode de pénalisation ou d’agrégation Perdre parfois de l’information pour en gagner découpage des variables continues en classes On modélise mieux des populations homogènes intérêt d’une classification préalable à la modélisation La performance d’un modèle dépend souvent plus de la qualité des données et du type de problème que de la méthode 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 108 Réduction de la complexité et agrégation de modèles 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 109 Fonction de perte et risque d’un modèle Si un modèle relie X et Y en sorte que Y = (X) + ε, avec E(ε) = 0 et V(ε) = σ², et si estime , des fonctions de perte L courantes sont : y continue ⇒ L(y, (x)) = (y – (x))² y = –1/+1 ⇒ L(y, (x)) = ½ |y – (x)| Risque (ou risque réel) = espérance de la fonction de perte sur l’ensemble des valeurs possibles des données (x,y) comme on ne connaît pas la loi de probabilité conjointe de x et y, on ne peut qu’estimer le risque l’estimation la plus courante est le risque empirique ∑ − ( ) ou ∑ − ( ) (n = effectif) on retrouve le taux d’erreur pour y = –1/+1 Dans le cas quadratique, le risque se décompose en : Erreur irréductible σ² + Biais²(modèle) + Variance(modèle) Variance de y autour de sa valeur moyenne + (différence entre espérance de la prédiction f(x) et valeur moyenne de y)² + variance de la prédiction 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 110 Dilemme Biais-Variance Plus un modèle est complexe, plus son biais diminue mais plus sa variance augmente Nous devons trouver le bon compromis entre biais et variance, entre ajustement aux données d’apprentissage (biais) et capacité de généralisation (variance) Dans quelques cas simples, la complexité d’un modèle est égale à p+1, où p est le nombre de paramètres Dans certaines situations, on ne peut pas diminuer le nombre de paramètres car les utilisateurs veulent voire apparaître simultanément des critères même s’ils sont fortement corrélés : médecine, avec des mesures physiologiques, des résultats d’analyses banque, avec des résultats d’analyses saisis sur les entreprises La complexité peut être diminuée par l’introduction de bornes ≤ dans la recherche des coefficients d’un modèle de régression (les observations étant dans une sphère de rayon R) complexité ≤ min [partie entière (R²C²),p] + 1 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 111 Solutions de réduction de la complexité La régression avec pénalisation Lδ (δ ≥ 0), λ ≥ 0, C ≥ 0 minimiser -2.log-vraisemblance (ou Σ des carrés résiduels) + λ ∑ minimiser -2.log-vraisemblance avec la contrainte ∑ Deux situations : ≤ δ ≤ 1: sélection de prédicteurs (AIC, BIC si δ = 0 , Lasso si δ = 1) δ > 1: rétrécissements de coefficients (ridge si δ = 2) La régression ridge (ou logistique ridge) est la plus répandue elle réduit les coefficients dans toutes les directions, surtout celles à faible variance (le coefficient de la ridge sur la 1ère composante principale diminue moins que le coefficient sur la 2e composante, etc.) La complexité peut aussi être réduite par la régression PLS avec une seule composante : les signes des coefficients sont égaux aux signes des corrélations entre prédicteurs et variable réponse la régression PLS réduit les coefficients dans les directions à faible variance, mais peut provoquer une hausse trop grande dans les directions à forte variance ⇒ l’erreur de prédiction de la PLS est souvent un peu supérieure 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 112 Ridge plot Évolution des coefficients en fonction de la pénalisation Régression ridge 11/12/2015 Régression Lasso © Stéphane Tufféry - Usage réservé à l’UCO 113 Sélection Lasso Méthode prisée de sélection de variables, notamment lorsque p >> 0 Lorsque p est très grand, une bonne généralisation du modèle exige une pénalisation de plus en plus forte pour diminuer sa complexité, mais si de fortes colinéarités existent entre les variables… la régression ridge tend à rétrécir les coefficients de variables corrélées vers des valeurs proches il est plus pertinent et plus lisible de supprimer certaines variables, ce que fait le Lasso On montre qu’avec p > n, n = nombre d’observations, le nombre de coefficients Lasso non nuls est ≤ n pour toute valeur de λ ce n’est pas gênant lorsqu’on peut supposer nuls un assez grand nombre de coefficients (hypothèse de sparsité), mais dans certains cas (génomique), il peut être souhaitable de conserver plus de variables 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 114 Elastic net L’elastic net de Zou et Hastie est un compromis entre le Lasso et la régression ridge, dans lequel la pénalisation est de la forme : 1− + avec α variant entre 0 (modèle ridge) et 1 (modèle Lasso) L’elastic net permet à la fois de rétrécir les coefficients et d’en annuler certains 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 115 Introduction aux méthodes d’agrégation Nous avons vu que la complexité d’un modèle doit être maîtrisée pour lui assurer une faible somme « biais² + variance » et donc une bonne généralisation La complexité d’un modèle peut être diminuée par : la diminution du nombre de prédicteurs l’introduction de bornes sur les coefficients de régression de ces prédicteurs l’augmentation de la marge des SVM Nous allons voir une autre approche avec les méthodes d’agrégation (ou « méthodes d’ensemble ») qui consistent à agréger les prédictions de plusieurs modèles de même type, d’une façon qui permette de réduire la variance et éventuellement le biais du modèle agrégé 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 116 Principe des méthodes d’agrégation La moyenne de B variables aléatoires i.i.d. de variance ², a une variance ² L’espérance de cette moyenne de variables aléatoires est égale à l’espérance de chaque variable Si les variables sont identiquement distribuées mais dépendantes, avec une corrélation positive ρ, la variance de la moyenne est !" ² + ² Cette formule peut être appliquée à la fonction de prédiction définie par chaque modèle dans l’agrégation. Si ces fonctions sont fortement corrélées, l’agrégation réduira peu la variance, même si B est grand 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 117 Bagging 1/2 En moyennant des classifieurs (par exemple des arbres) sur B échantillons bootstrap, on obtient un classifieur : dont le biais n’a pas diminué dont la variance a diminué d’autant plus que la corrélation entre les classifieurs est faible Les B modèles sont agrégés : par un vote ou une moyenne des probabilités P(Y=1|X) quand on sait calculer cette moyenne (classement) par une moyenne des estimations (régression) C’est le bagging : Bootstrap AGGregatING, Breiman, 1996 La procédure de vote appliquée à des arbres de faible qualité peut conduire à un résultat pire lors de l’agrégation Supposons que Y = 1 pour tout x et que chaque classifieur prédise 1 avec la probabilité 0,4 et 0 avec la probabilité 0,6. L’erreur de classement de chaque classifieur vaudra 0,6 mais l’agrégation par vote donnera un classifieur dont l’erreur vaudra 1. 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 118 Bagging 2/2 Le classifieur de base est le même à chaque itération : arbre de décision, réseau de neurones… La corrélation entre les classifieurs est diminuée par : le mécanisme de bootstrap l’augmentation de la complexité ⇒ Le bagging s’applique mieux aux classifieurs à faible biais et variance élevée ⇒ particulièrement les arbres de décision ⇒ La stratégie d’élagage est simple : préférer le bagging sur des arbres profonds Bagging inefficace sur un classifieur fort, dont les différents modèles seront trop corrélés pour réduire la variance R : packages ipred et randomForest 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 119 Forêts aléatoires 1/3 Le bagging manque d’efficacité quand les modèles sont trop corrélés ⇒ on veut donc les décorréler Introduction d’une 2e randomisation : sur les individus (bagging) mais aussi sur les prédicteurs, en ajoutant à chaque scission un tirage aléatoire d’un sous-ensemble de taille q (constante) parmi l’ensemble des p prédicteurs (forêts aléatoires, Breiman, 2001) Plus la corrélation baisse (elle peut descendre à ρ = 0,05 ou même moins quand on agrège des arbres avec q proche de 1) plus la variance du modèle agrégé diminue : ² + !" ² Évite de voir apparaître trop souvent les mêmes variables les plus discriminantes Chaque arbre élémentaire est moins performant mais l’agrégation conduit à un modèle agrégé plus performant : l’augmentation du biais est plus que compensée par la diminution de la variance R : packages randomForest (sur arbre CART), party (sur arbre CTree) et bigrf pour les forêts aléatoires sur données massives (bigrf s’appuyant sur bigmemory pour le dépassement de RAM et foreach pour la parallélisation des arbres) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 120 Forêts aléatoires 2/3 Diminuer le nombre q de prédicteurs augmente le biais mais diminue la corrélation entre les modèles et la variance du modèle final ⇒ q permet de régler le compromis entre biais et variance Pour le classement, Breiman suggère un sous-ensemble de q = √p variables ou [log(p)+1] ou 1 Mais il ne faut pas que ce nombre q soit trop faible si une forte proportion de variables sont peu discriminantes Les forêts aléatoires commencent à être très efficaces lorsque la probabilité de sélectionner un prédicteur discriminant est > 0,5. Cette probabilité est donnée par la loi hypergéométrique. Si 6 variables discriminantes sont mélangées à 30 non discriminantes, la probabilité de tirer au moins une variable discriminante parmi 6 est : > sum(dhyper(1:6, 6, 30, 6)) [1] 0.6951548 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 121 Forêts aléatoires 3/3 Le nombre q de prédicteurs est le seul paramètre réellement à régler Le nombre d’itérations est moins sensible à régler, et on a intérêt à le choisir assez élevé le nombre de modèles à agréger devrait croître avec le nombre de prédicteurs à noter la convergence des performances atteinte avec un nombre de modèles agrégés parfois très inférieur au nombre de combinaisons de p variables parmi n (n!/p!(n–p)!), c’est-à-dire bien avant que toutes les combinaisons possibles de variables soient apparues Les forêts aléatoires résistent bien au sur-apprentissage (contrairement aux réseaux de neurones et au boosting) même quand le nombre de modèles agrégés est grand 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 122 Similitudes entre forêts aléatoires et régression pénalisée ridge Le rétrécissement λ des coefficients dans la régression ridge ⇔ sélection de q < p prédicteurs aléatoirement parmi les p prédicteurs Augmenter λ ou réduire q : augmente le biais, puisque la solution est cherchée dans un sous-espace fixé par la contrainte réduit la variance, de façon à compenser la hausse du biais Autre analogie : tous les prédicteurs peuvent apparaître dans le modèle par rétrécissement de leurs coefficients dans la régression ridge ou par sélection au hasard dans les forêts aléatoires ⇒ le travail de sélection des variables est simplifié ! ☺ Pouvoir prédictif élevé ! 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 123 Différences entre forêts aléatoires et régression pénalisée ridge Le paramètre de pénalisation λ permet un ajustement continu du biais-variance, alors que le nombre q est discret Il permet d’ajuster les coefficients à l’aide du ridge plot en sorte que tous les coefficients aient un signe cohérent voire que certains coefficients soit supérieur à un certain seuil fixé par les experts du domaine La régression pénalisée est déterministe Les calculs de la régression pénalisée sont plus rapides mais les calculs des forêts aléatoires peuvent être parallélisés Manque de lisibilité d’un modèle de forêts aléatoires, qui détruit la structure d’arbre 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 124 Extra-Trees 1/2 Extra-Trees : Extremely randomized Trees (Geurts et al. , 2006) Points communs avec les forêts aléatoires : à chaque scission, q prédicteurs candidats sont sélectionnés par tirage aléatoire, pour q < p nombre total de prédicteurs la meilleure scission est retenue parmi les q possibles, sur la base de l’indice de Gini pour le classement et de la variance pour la régression Différence avec les forêts aléatoires : chaque scission est aléatoire : si par exemple il s’agit d’un prédicteur continu, le choix du seuil de scission sera aléatoire, sans tenir compte de la variable à expliquer (seuil tiré selon la loi uniforme entre les valeurs minimale et maximale du prédicteur) Le biais est augmenté mais la variance est diminuée, dans une proportion qui peut rendre le compromis biais-variance propice à la diminution de l’erreur le biais peut être diminué en construisant chaque arbre sur l’ensemble de la population, sans bootstrap Avantage : rapidité de l’apprentissage R : package extraTrees 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 125 Extra-Trees 2/2 Cas extrême d’Extra-Trees est celui où q = 1 : comme un seul prédicteur est sélectionné aléatoirement à chaque scission, la construction de l’arbre est alors totalement aléatoire et indépendante de la variable à expliquer Y évidemment, la prédiction n’est pas aléatoire et la variable à expliquer est prise en compte à un stade du processus : lors de l’affectation de chaque nœud terminal (et donc de chaque individu) à une classe de Y (classement) ou une valeur de Y (régression), qui se fait selon les règles d’affectation usuelles le biais est maximal, mais la diminution de la variance peut être intéressante Les tests de Geurts et al. montrent que : dans les problèmes de classement, la racine carrée de p est généralement un bon compromis entre biais et variance, qui minimise l’erreur dans les problèmes de régression, le biais semble augmenter avec la diminution du nombre de prédicteurs sélectionnés, plus rapidement qu’en classement, et ils obtiennent de bons résultats avec q = p 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 126 Agrégation de modèles : le boosting BOOSTING, Freund et Schapire, 1996 Algorithme adaptatif et généralement déterministe : on travaille souvent sur toute la population et à chaque itération, on augmente le poids des individus mal classés ou mal ajustés dans les itérations précédentes à la fin, on agrège les modèles en les pondérant par leur qualité Diminue le biais et pas seulement la variance (grâce au mécanisme d’agrégation) mais peut être sujet au sur-ajustement Nombreuses variantes : Discrete AdaBoost, Real AdaBoost, Gentle AdaBoost, LogitBoost, Arcing (Adaptative Resampling and Combining)… performances pas toujours très différenciées sur des données réelles (voir plus loin l’arc-x4 de Breiman) R : packages ada, gbm et mboost 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 127 Illustration (Robert Schapire) Extrait d’une conférence visible ici : http://videolectures.net/mlss05us_schapire_b/ 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 128 Algorithme Discrete AdaBoost Pondération des observations 1) Initialiser les poids des N individus de l’échantillon d’apprentissage : 10 pi = 1/N, i = 1, 2, …, N 8 6 2) Répéter pour m = 1 à M 4 2 ajuster le classifieur fm(x) ∈ {-1,+1} sur l’échantillon 0 0 0,2 0,4 0,6 d’apprentissage pondéré par les poids pi Taux d'erreur calculer le taux d’erreur εm de fm(x) (tenant compte du poids de chaque observation mal classée) et calculer αm = log((1-εm)/εm) on peut multiplier αm par un paramètre de pénalisation (shrinkage) λ < 1 pour diminuer l’intensité du mécanisme adaptatif si εm < 0,5, multiplier le poids pi de chaque observation mal classée par exp(αm) (sinon : interrompre l’algorithme ou réinitialiser les poids) – le multiplicateur décroît avec le taux d’erreur normaliser les poids pi pour que leur somme soit 1 3) Le classifieur boosté est le signe de la somme ∑mαmfm(x) (ou la valeur moyenne des αmfm(x)) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 129 Effet de la pénalisation Avec l’augmentation de la pénalisation, la convergence est plus lente, il faut augmenter le nombre d’itérations mais le sur-apprentissage diminue 2 2 2 2 Error 0.2 2 0.3 0.3 > plot(boost, kappa=F, test=T, tflag=F) 1 1 1 1000 2000 3000 4000 5000 0 2 2 1 1 1 1 1 1000 2000 3000 4000 5000 0.2 2 2 2 2 2 Iteration 1 to 5000 λ = 0,1 0.1 Error Iteration 1 to 5000 λ=1 2 1 Train 2 Test1 0.0 1 0.3 0 1 2 0.1 0.1 λ = 0,01 0.0 1 0.0 Error 2 1 Train 2 Test1 0.2 1 Train 2 Test1 11/12/2015 0 1000 1 1 1 1 2000 3000 4000 5000 © Stéphane Tufféry - Usage réservé à l’UCO Iteration 1 to 5000 130 Sur-apprentissage en boosting Le boosting est sujet au sur-apprentissage Cela vient du mécanisme adaptatif qui conduit à surpondérer des individus mal classés qui sont peut-être hors norme Pour minimiser le sur-apprentissage, les packages ada et gbm proposent de déterminer automatiquement un nombre optimal d’itérations qui minimise le taux d’erreur (ada) ou la fonction de perte (gbm) ce nombre est déterminé sur l’échantillon d’apprentissage, ou sur un échantillon de test (ada), ou enfin (gbm) par validation croisée Il est généralement recommandé de limiter l’agrégation à ce nombre ou une autre valeur déterminée (AUC en test, par exemple) > pred.boost <- predict(boost, test, type='prob', n.iter=1800)[,2] Autres solutions : utiliser une autre fonction de perte diminuer le paramètre λ de pénalisation 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 131 Le boosting d’arbres stumps 1 Train 2 Test1 2 2 1 1 1 0.25 2 2 2 1 1 0.15 0.20 Error 0.30 0.35 Les « stumps » sont des arbres de profondeur 1, avec seulement deux feuilles Leur pouvoir discriminant individuel est bien sûr faible, mais leur boosting conduit à un pouvoir discriminant souvent supérieur à celui de la régression logistique Real AdaBoost meilleur que Discrete AdaBoost 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO0 1000 2000 3000 Iteration 1 to 5000 4000 132 5000 Limites du boosting Sensibilité au bruit due au mécanisme adaptatif qui met l’accent sur les observations difficiles à classer ou ajuster éventuellement diminuée par le choix d’une fonction de perte adaptée (Gentle plutôt que Real AdaBoost en classement, et valeur absolue plutôt que fonction quadratique en régression) Inefficace sur classifieur de base stable (analyse discriminante linéaire, régression logistique sur des variables fixées…) dans ce cas ce seront souvent les mêmes observations qui seront mal classées, et leur poids augmentera fortement, ainsi que le taux d’erreur Temps de calcul plus longs que pour les forêts aléatoires, qui peuvent être parallélisées convergence vers une performance optimale généralement plus lente, particulièrement sensible lorsque la frontière entre les classes à prédire est mal délimitée et qu’AdaBoost perd du temps à repondérer les erreurs de classement des observations qui se trouvent proches de la frontière Complexité des réglages (fonction de perte, nombre d’itérations, pénalisation) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 133 Comparaison entre boosting et forêts aléatoires L’erreur en test se stabilise pour les forêts aléatoires alors qu’elle augmente pour le boosting 0.30 0.25 erreur 0.35 RF OOB RF test AdaBoost test (pénal = 1) AdaBoost test (pénal = 0.01) 0 11/12/2015 1000 2000 3000 # itérations © Stéphane Tufféry - Usage réservé à l’UCO 4000 5000 134 Comparaison des caractéristiques BAGGING Le bagging est un mécanisme aléatoire FORÊTS ALÉATOIRES Idem bagging À chaque itération, l’apprentissage se fait sur un Idem bagging échantillon bootstrap différent À chaque itération, À chaque itération, l’apprentissage se fait sur un l’apprentissage se fait sur sous-ensemble aléatoire de l’ensemble des prédicteurs prédicteurs À chaque itération, le modèle produit doit aussi être À chaque itération, le modèle produit doit être performant sur l’ensemble des performant sur l’ensemble observations, mais l’est moins des observations que le bagging, puisque tous les prédicteurs ne sont pas utilisés Dans l’agrégation finale, tous les modèles ont le Idem bagging même poids 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO BOOSTING Le boosting est un mécanisme adaptatif et généralement (sauf l’arcing) déterministe Généralement (sauf l’arcing), à chaque itération, l’apprentissage se fait sur l’échantillon initial complet À chaque itération, l’apprentissage se fait sur l’ensemble des prédicteurs À chaque itération, le modèle produit doit être performant sur certaines observations ; un modèle performant sur certains outliers sera moins performant sur les autres observations Dans l’agrégation finale, les modèles sont généralement pondérés selon leur erreur 135 Comparaison des points forts / faibles BAGGING FORÊTS ALÉATOIRES BOOSTING Réduction de la variance par moyenne de modèles Peut diminuer la variance et le Idem bagging, mais avec une plus biais du classifieur de base grande réduction de la variance Mais la variance peut augmenter avec un classifieur de base stable Perte de lisibilité sur des arbres de décision Idem Idem Peu efficace sur les « stumps » Efficace sur les « stumps » Très efficace sur les « stumps » Convergence plus rapide Idem bagging Convergence plus lente Idem bagging Algorithme séquentiel ne pouvant être parallélisé Idem bagging Risque de sur-apprentissage si le nombre d’itérations est grand Les forêts aléatoires sont toujours supérieures au bagging et assez souvent plus que le boosting (sauf si les prédicteurs discriminants sont très rares) Le boosting est souvent plus efficace que le bagging, du moins sur les données non bruitées Possibilité de paralléliser l’algorithme Pas de sur-apprentissage : supérieur au boosting en présence de « bruit » Le bagging est le plus simple à mettre en œuvre mais est généralement moins discriminant que les forêts aléatoires et le boosting 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 136 Méthodes pour le Big Data 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 137 Méthodes statistiques pour le Big Data Les principales méthodes de modélisation statistique appliquées aux Big Data sont fondées sur les techniques avancées d’échantillonnage, d’optimisation, de Machine Learning, de Deep Learning (et notamment les réseaux de neurones à convolution), les estimateurs du type Lasso, l’apprentissage incrémental, les Very Fast Decision Trees pour les data streams, et bien sûr le text mining pour l’analyse des textes en langage naturel On peut ajouter la détection des règles d’association, utilisée dans la grande distribution pour l’analyse des tickets de caisse, qui sont des Big Data avec des nombres de tickets de plusieurs centaines de millions et des nombres de produits de plusieurs dizaines de milliers On peut mentionner un autre axe de recherche, sur la visualisation des données en grande dimension, qui est importante aussi parce qu’il faut communiquer des informations à des interlocuteurs non spécialistes 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 138 p >> n La régression en grande dimension pose le problème classique de sélection des variables On rencontre aussi, par exemple en bio-statistique (séquençage de l’ADN) ou en chimiométrie (statistique appliquée aux données chimiques), des situations où le nombre de variables est supérieur, voire très supérieur, au nombre d’individus (on parle de tableaux plats), et où les méthodes classiques de régression ne s’appliquent pas et cèdent la place à des méthodes telles que la régression Lasso ou PLS Le nombre de variables étudiées peut varier entre 104 et 108, alors que le nombre d'observations est de quelques centaines 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 139 Les données fonctionnelles Les données fonctionnelles sont des données qui ne sont pas ponctuelles mais sont continues, comme des courbes ou des images Ces données se sont multipliées avec les progrès technologiques qui permettent la collecte et le stockage d’observations de plus en plus fines, captant en continu les informations sur un objet étudié (météorologique, environnemental, médical, alimentaire…) Ces données sont de grande taille, mais posent aussi des problèmes de corrélation élevée entre deux observations proches d’un même phénomène continu Au lieu de discriminer des individus au vu de quelques caractéristiques en nombre fini observées en quelques instants choisis, on n’a pas d’a priori sur le moment et la durée des différences entre deux courbes d’évolution, ce qui amène à les considérer dans leur intégralité au lieu de les discrétiser Dans les modèles prédictifs sur données fonctionnelles, les variables explicatives et à expliquer peuvent être de dimension finie, infinie ou les deux Travaux récents sur les séries temporelles fonctionnelles 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 140 Nouvelles approches en Machine Learning Les méthodes de Machine Learning (agrégation de modèles, SVM, réseaux de neurones…) sont utilisées pour leur pouvoir prédictif élevé, dans des situations où la lisibilité du modèle n’est pas recherchée et où leur caractéristique « boîte noire » n’est pas un inconvénient Exemple d’une librairie en ligne, qui veut proposer des titres à ses clients. Dans ce problème, les variables (titres déjà achetés) sont excessivement nombreuses et créent des matrices creuses difficiles à modéliser. L’approche courante est de décomposer la clientèle en un très grand nombre de segments, éventuellement des milliers, recalculés en permanence par des techniques statistiques qui permettent de situer chaque client dans un petit segment de clients ayant des goûts proches. Ensuite, on lui propose les titres souvent acquis par les autres clients de son segment, que lui-même n’aurait pas encore acquis. Ces calculs sont refaits en permanence, sans recherche de segments et de modèles robustes et lisibles. 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 141 Algorithmes incrémentaux et data streams Les algorithmes incrémentaux permettent d’élaborer et de mettre à jour un modèle en utilisant les nouvelles observations au fur et à mesure de leur arrivée, sans avoir à retraiter les anciennes On parle de « data stream analysis », d’apprentissage « on-line », opposé au « batch » ou « offline learning » C’est utile pour les data streams et les données trop massives pour être traitées dans leur intégralité Certains arbres de décision sont incrémentaux : notamment les « Very Fast Decision Trees » qui de plus échantillonnent les données en entrée Les données d’apprentissage sont supposées provenir de la même distribution ou au contraire subir un « concept drift » dans le temps 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 142 Le Deep Learning Le deep learning, ou deep machine learning, est une branche du machine learning, qui cherche à modéliser des phénomènes complexes (reconnaissance de la voix, de l’image, analyse textuelle…) par des mécanismes inspirés des neurosciences Face à la complexité, le cerveau fonctionnerait moins en simplifiant les signaux par du preprocessing (réduction de la dimension) que par des structures hiérarchiques d’unités qui chacune utilise en entrée la sortie de l’unité précédente On suppose que les données sont générées par l’interaction de différents facteurs organisés en niveaux emboîtés partant des données brutes aux concepts les plus abstraits On utilise des méthodes supervisées et non supervisées Plus de résultats empiriques que théoriques 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 143 Les réseaux de neurones à convolution Les réseaux à convolution possèdent plusieurs couches, comme le perceptron, mais avec une particularité adaptée à l’extraction de caractéristiques locales Dans un perceptron, une unité d’une couche cachée est entièrement connectée à toutes celles de la couche précédente, tandis que pour un réseau à convolution, une unité est connectée à un sous-ensemble des unités de la couche précédente Ces sous-ensembles d’unités se recouvrent Ainsi chaque unité est une unité de détection d'une caractéristique locale telle qu’un trait d’écriture La complexité du réseau avec ses multiples couches est réduite par l'utilisation des poids partagés, réduisant ainsi le nombre de paramètres et facilitant la généralisation du modèle Analogie avec le cerveau dont chaque neurone du cortex visuel détecte certaines caractéristiques dans de petites régions de la rétine, mais de la même façon pour toutes les régions proches, c’est-à-dire tous les neurones 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 144 Principe des réseaux à convolution Illustration des connexions locales, et du passage du local au global pour exploiter la corrélation des données spatiales proches : chaque unité d’une couche est connectée à 3 unités adjacentes de la couche précédente, mais l’unité de la couche m+1 est connectée aux 5 unités de la couche m-1 Illustration des poids partagés : tous les poids de la même couleur sont identiques, ce qui permet de détecter des traits caractéristiques présents en plusieurs endroits de l’image, des invariants de l’écriture chaque unité d’une couche cachée a le même jeu de poids mais peut avoir un biais spécifique 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 145 Comparaison entre perceptron et réseau à convolution Perceptron à gauche et réseau à convolution à droite Source : Émilie POISSON, Christian VIARD-GAUDIN Cette structure hiérarchique est un exemple de deep learning 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 146 Analyses en grande dimension : comparaison de logiciels 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 147 Comparaison des algorithmes implémentés méthode k-means classification ascendante hiérarchique régression linéaire régression logistique GLM régression pénalisée modèle de durée de Cox arbres de décision forêts aléatoires boosting (GBM) SVM à noyau linéaire classifieur bayésien naïf ACP réseaux de neurones analyse de graphes 11/12/2015 R base kmeans ffbase cluster lm bigglm.ffdf glm bigglm.ffdf glm bigglm.ffdf glmnet survival rpart randomForest gbm e1071 e1071 stats nnet igraph bigmemory bigkmeans biglm bigglm bigglm gputools gpuHClust gpuLm gpuGlm gpuGlm h2o h2o.kmeans RevoScaleR rxKmeans Spark x Mahout x h2o.glm h2o.glm h2o.glm h2o.glm h2o.coxph rxLinMod rxLogit rxGlm x x x rxDTree h2o.randomforest rxDecisionForest h2o.gbm h2o.naiveBayes h2o.prcomp h2o.deeplearning © Stéphane Tufféry - Usage réservé à l’UCO x x x x x x x x 148 Comparaison des temps de calcul Sur un PC avec un processeur Intel i3-2330M double cœur cadencé à 2,2 GHz, avec 8 Go de RAM et Windows 7 en version 64 bits 36 millions de lignes traitées, représentant 3,17 Go au format csv, 3,14 Go au format SAS et 5,19 Go au format SPSS (ou 1,38 Go avec le nouveau format compressé ZCOMPRESSED de SPSS, qui ne change ici pas les temps de calcul) Import des 5 fichiers CSV (années 2004 à 2008) SPSS 23 SAS 9.4 R 3.1.2 (ff) 20 mn 10 3 mn 37 9 mn 30 R 3.1.2 (h2o) 2 mn 30 Fusion des 5 fichiers importés 7 mn 42 59 s 3 mn 06 Régression linéaire sur 5 prédicteurs 7 mn 58 1 mn 10 4 mn 09 17 s Création d'une variable binaire (Late) et d'une variable continue (Hour) 1 mn 00 2 mn 25 6s 8s Régression logistique sur 5 prédicteurs 11 mn 53 37 mn 22 13 mn 54 2 mn 15 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 149 Code SPSS Statistics Régression linéaire GLM ArrDelayn BY UniqueCarrier WITH ActualElapsedTime DepDelay Year Distance /PRINT=DESCRIPTIVE PARAMETER /DESIGN=ActualElapsedTime DepDelay Year Distance UniqueCarrier. Procédure équivalente pour la régression linéaire UNIANOVA ArrDelayn BY UniqueCarrier WITH ActualElapsedTime DepDelay Year Distance /METHOD=SSTYPE(3) /PRINT=DESCRIPTIVE PARAMETER /CRITERIA=ALPHA(.05) /DESIGN=ActualElapsedTime DepDelay Year Distance UniqueCarrier. Création des variables et régression logistique COMPUTE Late = (ArrDelayn > 15). COMPUTE Hour = TRUNC(CRSDepTime/100). FORMATS Late (F1.0) Hour (F2.0). LOGISTIC REGRESSION VARIABLES Late /METHOD=ENTER Distance Year Hour CRSElapsedTime UniqueCarrier /CATEGORICAL = UniqueCarrier /CRITERIA=BCON(.0001) PIN(.05) POUT(.10) ITERATE(20) CUT(.5) /EXTERNAL. À noter l’option /EXTERNAL en cas de manque de RAM (mais inutile ici avec 8 Go de RAM) et l’option /CRITERIA=BCON(.0001) au lieu de 0,001 par défaut, pour correspondre à l’option epsilon = 1e-4 de h2o.glm (arrêt des itérations quand l’évolution des coefficients devient inférieure à ce seuil) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 150 Code SAS 9.4 Régression linéaire proc glmselect data=bases.volsusa (keep = ArrDelay UniqueCarrier Year Distance ActualElapsedTime DepDelay); class UniqueCarrier ; model ArrDelay = UniqueCarrier Year Distance ActualElapsedTime DepDelay / selection=none ; Autre procédure équivalente (plus lente dans notre test) proc glm data=bases.volsusa (keep = ArrDelay UniqueCarrier Year Distance ActualElapsedTime DepDelay); class UniqueCarrier ; model ArrDelay = UniqueCarrier Year Distance ActualElapsedTime DepDelay /solution ; Création des variables et régression logistique data bases.volsUSA ; set bases.volsUSA ; Late = (ArrDelay > 15) ; Hour = int(CRSDepTime/100) ; length Late Hour 3; proc logistic data=bases.volsusa (keep = Late UniqueCarrier Year Hour Distance CRSElapsedTime); class UniqueCarrier ; model Late = UniqueCarrier Year Hour Distance CRSElapsedTime / selection=none xconv=1e-4; Avec SAS 9.3, diminution des temps de traitement par l’utilisation de l’option BUFSIZE=MAX pour limiter le nombre de pages d’observations des tables SAS, c’est-à-dire leur morcellement 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 151 Code R avec packages ff, ffbase et biglm Import des fichiers entete = read.csv(file="D:\\Data\\2008.csv", header = TRUE, nrows = 1000) headclasses = sapply(entete, class) v2004.ff <- read.csv.ffdf(file="D:\\Data\\2004.csv",header=TRUE, colClasses=headclasses, BATCHBYTES = 20*getOption("ffbatchbytes")) … vols <- ffdfappend(v2008.ff,v2007.ff) vols <- ffdfappend(vols,v2006.ff) vols <- ffdfappend(vols,v2005.ff) vols <- ffdfappend(vols,v2004.ff) On augmente la valeur de BATCHBYTES = nombre d’octets alloués au data frame contenant les chunks (ffbatchbytes = sa valeur par défaut = 1/100e de memory.limit) Régression linéaire fflin <- bigglm(ArrDelay ~ DepDelay+Distance+Year+ActualElapsedTime+UniqueCarrier, data=vols, chunksize=1000000) Création des variables et régression logistique vols$Hour <- floor(vols$CRSDepTime/100) vols$Late <- (vols$ArrDelay > 15) fflin <- bigglm(Late ~ Distance+Year+Hour+CRSElapsedTime+UniqueCarrier, data=vols, family = binomial(), chunksize=1000000, tolerance=1e-4) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 152 H2O H2O est une bibliothèque open source d’algorithmes de machine learning qui s’exécutent sur une machine virtuelle Java optimisée pour un OS 64 bits Créée par la société californienne 0xdata Les algorithmes sont le modèle linéaire généralisé, les forêts aléatoires, le boosting, l’analyse en composantes principales, les k-means, le réseau de neurones multi-couches Deep Learning… Les traitements sont parallélisés et s’exécutent autant que possible en mémoire, dont l’utilisation est optimisée grâce à une forte compression des données Package R h2o : permet d’exécuter des instructions écrites en R dans un cluster H2O l’environnement de travail de H2O est distinct de celui de R, son espace mémoire propre, les objets ne sont pas stockés dans l’environnement R, et R ne contient que les pointeurs vers les objets du cluster H2O Un des trois projets prometteurs cités par John Chambers (créateur du langage S et l'un des principaux membres du projet R) à la conférence useR!2014 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 153 Code R avec package h2o Démarrage et connexion à un cluster local > localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE, max_mem_size = '2g', ice_root="D:\\Data\\h2o", nthreads=-1) Import d'un répertoire entier > vols <- h2o.importFolder(path = "D:\\Data\\volszip") Régression linéaire > glmh2o <- h2o.glm(y = "ArrDelay", x = c("DepDelay", "Distance", "Year", "ActualElapsedTime", "UniqueCarrier"), training_frame = vols, family = "gaussian", nfolds = 0, alpha = 0, lambda = 0) Création des variables et régression logistique > vols$Hour <- floor(vols$CRSDepTime/100) > h2o.exec(vols$Late <- (vols$ArrDelay > 15) > glmh2o <- h2o.glm(y = "Late", x = c("Distance", "Year", "Hour", "CRSElapsedTime", "UniqueCarrier“), training_frame = vols, family = "binomial", nfolds = 0, alpha = 0, lambda = 0) 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 154 Conclusion 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 155 Le métier de data scientist Le Big Data fait partie des 34 plans industriels lancés par le gouvernement français le 12 septembre 2013 il est présent dans l’un des 9 marchés prioritaires pour l’industrie du futur lancés le 18 mai 2015 : l’économie des données Le Big Data a besoin de « data scientists » qui connaissent : les enjeux métiers (économie, finance, marketing, risque, production…) les technologies informatiques (architecture, bases de données, algorithmes, logiciels) les méthodes de statistique et de Machine Learning Des centaines de milliers d’emplois de data scientists annoncés dans le monde L’activité de data scientist mélange à la fois : les disciplines (mathématiques, informatiques, économiques…) les mondes (académiques et professionnels) contribution méthodologique voire théorique notable de start-ups et de géants du Web (Google, Facebook, Criteo…) Premières formations spécialisées en 2013 aux USA et en France 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 156 Bibliographie (livres) P. Bühlmann, S. van de Geer (2011). Statistics for High-Dimensional Data, Springer Arthur Charpentier (ed.) (2014). Computational Actuarial Science with R, Chapman and Hall/CRC T. Hastie, J. Friedman and R. Tibshirani (2009). The Elements of Statistical Learning: Data Mining, Inference and Prediction, Springer Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani (2013). An Introduction to Statistical Learning, with Applications in R, Springer N. Marz and J. Warren (2014). Big Data, Principles and best practices of scalable realtime data systems, Manning Eric Siegel (2013). Predictive Analytics: The Power to Predict Who Will Click, Buy, Lie, or Die,Wiley Mireille Gettler Summa, Léon Bottou, Bernard Goldfarb, Fionn Murtagh, Catherine Pardoux et Myriam Touati (2012). Statistical Learning and Data Science, Chapman & Hall/CRC 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 157 Bibliographie (articles) Des cours très instructifs sur la statistique et le Big Data : http://wikistat.fr/ Un article sur le Big Data dans la revue des anciens de l’Ensae : http://www.ensae.org/docs/2013164614_v46-focus1.pdf Un article dans le Journal du CNRS de novembre-décembre 2012 (pp. 20-27) : http://www.cnrs.fr/fr/pdf/jdc/JDC269.pdf Un article d'Éric Moulines dans la Gazette des mathématiciens de la Société Française de Mathématique, n° 144, avril 2015 (pp. 5-12) : http://smf.emath.fr/files/144-bd.pdf Des sources de données Big Data : http://www.smartdatacollective.com/bernardmarr/235366/big-data-20-freebig-data-sources-everyone-should-know http://www.datasciencecentral.com/profiles/blogs/the-free-big-data-sourceseveryone-should-know 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 158 Bibliographie sur R Michael J. Crawley (2012). The R Book, John Wiley & Sons Ltd, 2nd edition. Hadley Wickham (2014). Advanced R programming, Chapman & Hall/CRC (et aussi : http://adv-r.had.co.nz/) La page du CRAN consacrée aux packages de R pour la parallélisation et les traitements http://cran.rde données massives : project.org/web/views/HighPerformanceComputing.html Michael J. Kane, John W. Emerson, Stephen Weston. Scalable Strategies for Computing with Massive Data. Journal of Statistical Software,Volume 55, Issue 14, 2013 un article récent qui offre un panorama sur les packages de R conçus pour le traitement des données massives. Il décrit notamment bien les packages bigmemory et foreach, mais non le package ff. Chun Wang, Ming-Hui Chen, Elizabeth Schifano, Jing Wu, Jun Yan. A Survey of Statistical Methods and Computing for Big Data, http://arxiv.org/pdf/1502.07989v1.pdf un article sur les méthodes statistiques, les packages R et les autres logiciels Deux conférences, intitulées « Taking R to the Limit », portant l’une sur la parallélisation avec R, l’autre sur la description et la comparaison des packages ff et bigmemory, ainsi que sur MapReduce. http://www.bytemining.com/wp-content/uploads/2010/07/r_hpc.pdf http://www.bytemining.com/wp-content/uploads/2010/08/r_hpc_II.pdf Le blog de Revolution Analytics : http://blog.revolutionanalytics.com/ Le « hub » des R-bloggers : http://www.r-bloggers.com/ Livres téléchargeables gratuitement : http://ucanalytics.com/blogs/learn-r-12-books-andonline-resources/ 11/12/2015 © Stéphane Tufféry - Usage réservé à l’UCO 159