Tuffery_-_UCO_Angers_-_Data_Mining_2015-2016

publicité
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
Téléchargement