Etude de cas en statistique décisionnelle, S. Tufféry - Editions Technip

Page 1



Stéphane TUFFÉRY

Université de Rennes 1 stephane.tuffery@univ-rennes1.fr

Étude de Cas en statistique décisionnelle

Deuxième édition actualisée et augmentée

2019

Éditions TECHNIP

5 avenue de la République, 75011 PARIS


CHEZ LE MÊME ÉDITEUR • Big Data, Machine Learning et Apprentissage Profond S. TUFFÉRY

• Média Planning J. F. CANGUILHEM, M.P. CUEFF

• Data science par analyse des données symboliques F. AFONSO, E. DIDAY, C. TOQUE

• Data mining et statistique décisionnelle S. TUFFÉRY

• Modélisation prédictive et apprentissage statistique avec R S. TUFFÉRY

• Probabilités, analyse des données et statistique G. SAPORTA

• Les techniques de sondage P. ARDILLY

• Économie générale O. HUEBER

• Approche pragmatique de la classification J.P. NAKACHE, J. CONFAIS

• Statistique explicative appliquée J.P. NAKACHE, J. CONFAIS

• Modèles statistiques pour données qualitatives J.-J. DROESBEKE, M. LEJEUNE, G. SAPORTA, Eds.

• Plans d’expériences. Applications à l’entreprise J.-J. DROESBEKE, J. FINE, G. SAPORTA, Eds.

• Méthodes bayésiennes en statistique J.-J. DROESBEKE, J. FINE, G. SAPORTA, Eds.

• Approches non paramétriques en régression J.-J. DROESBEKE, G. SAPORTA, Eds.

• Analyse statistique des données spatiales J.-J. DROESBEKE, M. LEJEUNE, G. SAPORTA, Eds.

Tous droits de traduction, de reproduction et d’adaptation réservés pour tous pays. Toute représentation, reproduction intégrale ou partielle faite par quelque procédé que ce soit, sans le consentement de l’auteur ou de ses ayants cause, est illicite et constitue une contrefaçon sanctionnée par les articles 425 et suivants du Code pénal. Par ailleurs, la loi du 11 mars 1957 interdit formellement les copies ou les reproductions destinées à une utilisation collective.

© Éditions Technip, Paris, 2019. ISBN 978-2-7108-1187-9


À Dominique



Avant-propos

Cet ouvrage est né du constat que les étudiants en économétrie et même en statistique, et de façon générale tous ceux qui s’initient à la science des données (data science), sont généralement plus intéressés par les études de cas que par les longs développements théoriques. De nombreux petits jeux de données, certains disponibles sur Internet, permettent d’illustrer tel ou tel aspect de l’analyse des données et de l’art de la modélisation. Plus rares sont ceux qui permettent de bâtir une étude de cas complète, telle que peuvent la souhaiter les étudiants et ceux qui veulent comprendre la démarche du data scientist et la mettre en œuvre avec un logiciel de statistique. Le présent ouvrage décrit l’utilisation d’un tel jeu de données dans l’élaboration d’une segmentation de clientèle et d’un score d’appétence dans le domaine de l’assurance dommages. Ce jeu de données est présenté plus bas et un lien vers le Web est donné à la fin de la bibliographie. Le logiciel ici employé est SAS/STAT, choisi pour sa large diffusion et le nombre et la variété de ses fonctionnalités. Bien entendu, le fond de la démarche exposée est indépendant du logiciel et pourrait être mis en œuvre avec un autre logiciel, tel que R ou Python par exemple. Le présent ouvrage s’adresse donc aussi aux praticiens de ces logiciels. D’ailleurs, il indique la manière d’utiliser R à l’intérieur d’un programme SAS, ainsi que la façon de traduire un modèle R en syntaxe SAS, directement utilisable sur SAS sans nécessiter la présence de R sur la même machine. La segmentation de clientèle et le scoring sont deux des principaux sujets rencontrés dans les entreprises qui exploitent la richesse de leurs bases de données. Ils correspondent aux deux aspects du data mining et de la statistique décisionnelle : l’activité de décrire et celle de prédire, l’analyse des données et la modélisation. Ils seront étudiés de façon indépendante l’un de l’autre, et le lecteur pourra étudier la première et la seconde partie de l’ouvrage indépendamment l’une de l’autre. En pratique, bien sûr, le score suit souvent la segmentation, la prédiction suit la description. Il y a deux raisons à cela : d’une part, on modélise mieux des données que l’on connaît bien pour les avoir soigneusement explorées ; d’autre part, les modèles de score gagnent souvent à être élaborés sur des populations homogènes, comme le sont les segments découverts au sein d’une population globalement hétérogène. La segmentation de clientèle que nous avons réalisée correspond à ce que les statisticiens appellent une « classification automatique » (clustering, en anglais), et elle reflète bien les besoins des services marketing ou des services de risque des entreprises dans l’approfondissement de la connaissance de leur clientèle. De même, le score d’appétence, qui permet d’attribuer à chaque client une note reflétant sa probabilité de souscrire un produit ou un service, est parfaitement représentatif des besoins des entreprises dans le domaine de la modélisation prédictive.


VI

Avant-propos

Par conséquent, ce qui est écrit dans cet ouvrage est totalement transposable dans d’autres secteurs d’activité que l’assurance : banque, téléphonie, distribution, voire médecine. Il devrait donc intéresser tous ceux qui veulent savoir comment s’élaborent une segmentation statistique et un modèle de score. Dans la première partie de l’ouvrage, nous montrons que la recherche purement statistique de la solution optimale d’un problème de classification automatique peut conduire à l’obtention d’une partition de la clientèle qui soit une véritable segmentation de clientèle au sens marketing du terme. Non seulement les segments (classes) de clients obtenus sont nettement différenciés, ce qui est l’objectif statistique, mais ils correspondent à des profils de clients bien identifiables du point de vue du marketing, coïncidant avec l’expérience des marqueteurs : le segment « haut de gamme » qui a fait des études supérieures, a de bons revenus, est marié et propriétaire, le segment qui « démarre dans la vie », composés de célibataires locataires avec des revenus plus modestes, etc. Ceci sous-entend que nous sachions bien décrire les segments obtenus plus ou moins automatiquement. Or, cette description n’est pas triviale et représente une part importante du travail. Nous mettons en œuvre trois manières de décrire les segments : par des tests statistiques comparant les valeurs des variables dans les différents segments, par une représentation graphique (factorielle) des indicatrices des segments parmi les autres variables, et par une classification hiérarchique descendante des variables. Une autre méthode existe, que nous n’avons pas employée : l’arbre de décision, dont la variable à expliquer est le numéro du segment. Ceci peut constituer un exercice profitable pour le lecteur1. Dans la seconde partie de l’ouvrage, nous parcourons une à une toutes les étapes de l’élaboration d’un modèle de score, c’est-à-dire d’un modèle prédictif dont la variable à expliquer est binaire. Ici, il s’agit de la variable « a acheté/n’a pas acheté ». Dans le cas d’un score de risque, la variable à expliquer est « a payé/n’a pas payé » et la démarche est exactement la même que celle ici décrite. Il en va de même pour tous les types de scores. Dans cette partie, nous montrons aussi comment l'utilisation conjointe du langage macro et de l'ODS (« Output Delivery System ») de SAS, ainsi que l’utilisation judicieuse des formats SAS pour le découpage des variables continues en classes, permet d'automatiser des tâches statistiques cruciales, au point de pouvoir traiter à la fois rapidement et rigoureusement les différentes étapes de la construction d'un modèle de score. Cette façon de faire est pratiquée en entreprise et n'est pourtant présentée, à notre connaissance, dans aucun ouvrage ou support de cours publiquement disponible. Nous n’avons pas utilisé un logiciel commercial de data mining tel que SAS Entreprise Miner, et ce, pour deux raisons principales. D’une part, ce type de logiciel est moins répandu, car nettement plus onéreux, qu’un logiciel de statistique tel que SAS/STAT. D’autre part, en remplaçant la programmation par des flèches reliant des icônes dans une interface graphique, et en écrivant le programme à votre place, ce type de logiciel a tendance à masquer par sa convivialité « ce qu’il y a sous le capot » des procédures de data science et de statistique. L’impression de facilité qu’il donne peut masquer le fond au profit de la forme, occulter les difficultés de la modélisation et ne pas favoriser une analyse 1

Nous avons esquissé cette méthode dans l’Annexe A.


Avant-propos

VII

approfondie des données. En outre, les interfaces graphiques permettent rarement d’exploiter l’ensemble des fonctionnalités des procédures qu’elles émulent. En ce qui concerne le volet descriptif, l’apport de SAS Entreprise Miner est de toute façon limité, sauf pour ce qui concerne la détection des règles d’associations non abordée ici, et il est au contraire moins riche que SAS/STAT dans l’analyse des données « à la française », c’est-à-dire l’analyse factorielle. Ceci est d’autant plus vrai que des macroprogrammes SAS utilisables avec SAS/STAT ont été développés par divers praticiens, notamment à l’INSEE, et complètent les sorties de SAS/STAT avec des sorties permettant une meilleure compréhension des données et une meilleure réflexion sur les résultats obtenus. En ce qui concerne le volet prédictif, le seul sacrifice à consentir dans notre approche purement « logiciel de statistique » était, jusqu’à l’apparition de la procédure HPSPLIT dans SAS 9.4, la vétusté de l’algorithme d’arbre de décision présenté dans la section 2.19 : la macro %TREEDISC, qui ne contient que la méthode CHAID et non CART, n’offre qu’une représentation graphique très fruste et ne permet pas la construction interactive de l’arbre, comme le fait par exemple SAS Entreprise Miner. Nous présentons la nouvelle procédure HPSPLIT dans la section 2.20. De toute façon, l’accent est mis dans cet ouvrage sur la régression logistique, qui est une méthode de modélisation nettement plus répandue. Dans notre étude de cas, l’arbre CHAID est surtout utilisé pour découper en tranches les variables continues. D’autres algorithmes intéressants implémentés dans SAS Entreprise Miner sont le bagging et le boosting, mais ces méthodes d’agrégation de modèles peuvent être programmées et nous fournissons d’ailleurs l’exemple du bagging dans la section 2.26. Et surtout, nous montrons dans les sections 2.21 et 2.22 que n’importe quelle fonction de R, qu’il s’agisse d’arbre de décision, de forêt aléatoire, de boosting, de réseau de neurones, etc., peut être utilisée dans SAS, mettant à la disposition de l’utilisateur de SAS une immense quantité de méthodes de data science, de statistique et de machine learning. Ajoutons que SAS Entreprise Miner ne se prête pas nécessairement à une portabilité aussi poussée qu’un programme SAS (ou R), qui peut être copié dans un simple blocnotes, envoyé par courriel, récupéré ou téléchargé de façon extrêmement souple par un autre utilisateur, qui peut même le lire et le comprendre sans posséder SAS. Un programme SAS peut être accompagné de commentaires, de variantes et ses différentes versions peuvent être sauvegardées et comparées. Sa traçabilité est rendue aisée et elle est particulièrement appréciée dans les domaines où les missions de contrôle et d’audit sont fréquentes. Cette forme de programmation, sous forme de code, se prête également bien, de notre point de vue, à une présentation dans un ouvrage, plus qu’une programmation par interface graphique qui se prête mieux à une démonstration à l’écran. Chaque ligne de code peut être suivie d’une explication et il est facile de faire référence dans le texte à telle instruction ou telle option. Pour les mêmes raisons, nous avons préféré l’approche classique de SAS/STAT aux nouvelles interfaces web interactives Visual Analytics et Visual Statistics de SAS et à la nouvelle architecture distribuée SAS Viya, qui ne sont pas encore diffusées partout et dont l’ergonomie est certainement agréable au quotidien, et plus simple encore à utiliser que SAS Entreprise Miner, mais n’aide pas nécessairement à la compréhension des méthodes et des concepts exposés dans l’ouvrage. Évidemment, si nous traitions des données si massives qu’il fallût distribuer les calculs, SAS Viya serait alors une solution intéressante,


VIII

Avant-propos

à côté d’ailleurs de l’usage de moteurs de bases de données appropriés. Le concept de serveur in-memory CAS (Cloud Analytic Services) de SAS Viya sera à suivre dans les années à venir, tant pour sa capacité à distribuer les calculs en mémoire que pour celle d’exécuter du code open source en Python ou R au milieu de procédures SAS (voir la section 2.21). Le lecteur peu familier avec la programmation ne doit pas juger l’approche de SAS/STAT trop austère. Si le code est un peu long, il n’est pas du tout nécessaire d’en connaître par cœur toutes les subtilités. La présente étude de cas veut montrer ce qu’il est possible de programmer avec SAS/STAT et les procédures existantes pour résoudre les problématiques qui nous intéressent. Après, sachant que telle procédure SAS existe pour telle problématique, le lecteur pourra trouver dans l’index des procédures à la fin de l’ouvrage le numéro de page où elle est illustrée, et recopier ou télécharger sur le site des Éditions Technip les parties du code qui l’intéressent. S’il veut aller plus loin, l’aide en ligne très complète de SAS lui présentera d’autres fonctionnalités et lui suggérera de nouvelles options de programmation. Le lecteur ne doit pas essayer de se remplir la tête de toutes les syntaxes utilisées dans cet ouvrage, mais prendre l’habitude de consulter l’aide en ligne de SAS ou les ouvrages que nous citons. Plus qu’au détail du code, le lecteur de cette étude de cas est invité à s’attacher à la démarche du statisticien. En effet, l’objectif de cette étude de cas et de cet ouvrage n’est pas de présenter un cours sur SAS, bien que la plupart des principales procédures de SAS/STAT y soient passées en revue. C’est pour cette raison aussi que les derniers développements graphiques de SAS ne sont pas systématiquement illustrés, et que nous avons au contraire cherché à utiliser la version la moins récente possible de SAS pour réaliser nos analyses, afin qu’elles puissent être reproduites par le plus grand nombre de lecteurs, même s’ils ne disposent pas de la dernière version de SAS. De façon générale, à l’exception des graphiques de la procédure SGPLOT apparue dans la version 9.2, le chapitre descriptif nécessitera une version de SAS au moins égale à 8.2 et le chapitre prédictif une version au moins égale à 9.1.3. Bien entendu, les apports des versions plus récentes, jusqu’à la version 9.4, sont indiqués.

  

Le but de l’ouvrage est triple : montrer de A à Z comment un data scientist réalise une étude de segmentation de clientèle (chapitre descriptif) ou de scoring (chapitre prédictif) ; mettre en évidence un certain nombre de principes de modélisation (intérêt d’une bonne sélection des variables ou d’un modèle parcimonieux, par exemple) ; fournir les outils (code SAS téléchargeable) permettant au lecteur de procéder aux mêmes analyses dans les mêmes conditions.

Pour un cours sur le logiciel SAS, nous renvoyons à l’ouvrage d’Olivier Decourt, le bien nommé SAS l’essentiel aux Éditions Dunod. Pour un débutant qui cherche les bases sur SAS, l’inusable Little Sas Book de Lora D. Delwiche et Susan J. Slaughter est également une bonne référence. Enfin, le récent ouvrage de Sébastien Ringuedé, SAS Introduction au décisionnel : du data management au reporting, est complet et détaillé. Par rapport à ces ouvrages, la particularité du nôtre, centré sur une étude de cas concrète, et non sur des exemples ad hoc, est que les procédures ne sont pas présentées selon un ordre a priori logique ou pédagogique, mais dans l’ordre où leur utilisation


Avant-propos

IX

s’impose. De ce fait, la même procédure peut revenir plusieurs fois, avec des utilisations différentes et des approfondissements successifs, ce qui peut être pédagogique aussi. Pour des rappels de cours sur les méthodes de classification et sur les méthodes de scoring, nous renvoyons à notre ouvrage Data Mining et Statistique Décisionnelle aux Éditions Technip (cinquième édition en 2017). Nous conseillons aussi les ouvrages de Jean-Pierre Nakache et Josiane Confais chez le même éditeur : Statistique explicative appliquée (2003) et Approche pragmatique de la classification : arbres hiérarchiques et partitionnements (2004). Le premier est consacré aux trois importantes méthodes prédictives illustrées dans notre étude de cas : la régression logistique, l’analyse discriminante linéaire et les arbres de décision. Le second ouvrage, plus théorique, est consacré à l’ensemble des méthodes de classification automatique, dont nous présentons ici les deux principales : les k-means et la classification ascendante hiérarchique. Signalons que quelques variantes intéressantes de calculs ne sont pas détaillées dans l’ouvrage et sont laissées comme exercices au lecteur, qui pourra les effectuer en téléchargeant le code et les données SAS sur le site des Éditions Technip. Bonne lecture !

Remerciements Je tiens à remercier tout particulièrement Olivier Decourt pour sa relecture attentive et ses remarques avisées, ainsi que Stéphane Colas (Datametric) pour ses nombreuses et utiles suggestions. Tous deux m’ont aussi permis d’améliorer en plusieurs points le code SAS proposé. Je remercie chaleureusement Franck Berthuit qui en peu de temps a pu relire mon manuscrit et me signaler plusieurs coquilles. Je remercie aussi Christelle Lepron pour les discussions que nous avons eues au sujet de SAS. Je remercie enfin Grégoire de Lassence (SAS France), qui m’a fait bénéficier de son expérience de la présentation de SAS.

Convention : le logarithme utilisé dans cet ouvrage est toujours le logarithme népérien, et il est noté « log ».



Table des matières

Avant-propos .................................................................................................................... V Analyses descriptives ....................................................................................................... 1 1.1. 1.2. 1.3.

Introduction.............................................................................................................................2 Début du programme SAS et liste des variables ....................................................................5 Analyse en composantes principales .....................................................................................9 1.3.1. 1.3.2. 1.3.3. 1.3.4.

Analyse en composantes principales avec l’âge ..................................................................... 9 Analyse en composantes principales sans l’âge ................................................................... 17 Analyse en composantes principales sans l’âge : nuage des variables ................................ 22 Analyse en composantes principales sans l’âge : nuage des individus ................................ 31

1.4. Classification par la méthode des k-means ..........................................................................33 1.5. Classification ascendante hiérarchique ................................................................................44 1.6. Interprétation des classes d’individus par le test de Kruskal-Wallis .....................................58 1.7. Analyse en composantes principales sur les variables initiales et les indicatrices des classes d’individus ...........................................................................................................................66 1.8. Classification hiérarchique descendante de l’ensemble des variables ................................75 1.9. Fin de la partie descriptive ...................................................................................................89

Analyses prédictives ....................................................................................................... 91 2.1. 2.2. 2.3.

Introduction...........................................................................................................................93 Liste et formats des variables ...............................................................................................97 Exploration des données : examen des distributions et des tableaux croisés ...................100 2.3.1. 2.3.2. 2.3.3. 2.3.4. 2.3.5.

Statistiques univariées .........................................................................................................100 Tableaux croisés entre variables explicatives .....................................................................106 Tableaux croisés entre variables explicatives et variable à expliquer .................................110 Création de nouvelles variables explicatives .......................................................................116 Détention de contrats d’assurance dans chaque segment de clientèle ..............................117

2.4. Exploration des données : regroupements de modalités de variables ...............................121 2.5. Discrétisation selon l’algorithme CHAID .............................................................................124 2.6. Croisement des variables discrétisées avec la variable à expliquer ..................................140 2.7. Représentation graphique du croisement de chaque variable explicative avec la variable à expliquer ........................................................................................................................................142 2.8. Sélection des variables : calculs des coefficients de corrélation ........................................146 2.9. Sélection des variables : liaison avec la variable à expliquer des variables explicatives quantitatives ...................................................................................................................................151 2.10. Sélection des variables : liaison avec la variable à expliquer des variables explicatives qualitatives ou discrétisées ............................................................................................................156 2.11. Sélection des variables quantitatives par analyse discriminante .......................................161 2.12. Sélection des variables : régressions logistiques sur échantillons bootstrap multiples ......165 2.13. Synthèse des étapes de sélection de variables .................................................................173 2.14. Sélection de variables au vu des tests statistiques ............................................................179


XII 2.15. 2.16.

Table des matières Sélection de variables après leur classification ..................................................................184 Construction des échantillons d’apprentissage et de validation .........................................195 2.16.1. Échantillonnage simple ........................................................................................................195 2.16.2. Échantillonnage stratifié .......................................................................................................196

2.17. 2.18.

Calcul de l’aire sous la courbe ROC ..................................................................................201 Modèles de score par analyse discriminante linéaire .........................................................204 2.18.1. Analyse discriminante sur l’ensemble des variables ...........................................................205 2.18.2. Analyse discriminante sur une sélection de vingt et une variables .....................................213 2.18.3. Analyse discriminante sur une sélection de dix variables ...................................................216 2.18.4. Analyse discriminante sur les vingt et une variables sélectionnées par la procédure STEPDISC .........................................................................................................................................218 2.18.5. Analyse discriminante sur les dix premières variables sélectionnées par STEPDISC........219 2.18.6. Analyse discriminante sur les six premières variables sélectionnées par STEPDISC ........221 2.18.7. Conclusion sur les modèles par analyse discriminante .......................................................223

2.19. 2.20.

Classement par arbre de décision, avec la macro %TREEDISC .......................................225 Classement par arbre de décision, avec la procédure HPSPLIT .......................................243 2.20.1. L’arbre CHAID ......................................................................................................................243 2.20.2. L’arbre CART .......................................................................................................................251

2.21.

Classement dans SAS à l’aide d’un modèle prédictif de R ................................................254 2.21.1. Modèle d’arbre CART ..........................................................................................................255 2.21.2. Modèle de forêt aléatoire .....................................................................................................261 2.21.3. Modèle de gradient boosting................................................................................................266

2.22. 2.23.

Import dans SAS d’un modèle en PMML ...........................................................................271 Régression logistique sur variables quantitatives ..............................................................273 2.23.1. 2.23.2. 2.23.3. 2.23.4. 2.23.5. 2.23.6. 2.23.7.

2.24.

Régression logistique sur variables discrétisées ................................................................300 2.24.1. 2.24.2. 2.24.3. 2.24.4. 2.24.5. 2.24.6.

2.25. 2.26. 2.27. 2.28. 2.29. 2.30. 2.31. 2.32.

Syntaxe de base de la régression logistique .......................................................................274 Première régression logistique pas à pas, sur l’ensemble des variables ............................276 Régression logistique pas à pas avec des seuils plus sévères de significativité ................286 Régression logistique pas à pas descendante ....................................................................288 Régression logistique pas à pas après sélection de variables ............................................294 Régression logistique sur les six premières variables sélectionnées par STEPDISC ........296 Conclusion sur les régressions logistiques sur variables quantitatives ...............................298 Recherche du meilleur modèle logistique ............................................................................300 Régression logistique pas à pas avec des seuils plus sévères de significativité ................304 Régression logistique pas à pas après sélection de variables ............................................306 Autre mode de sélection du meilleur modèle.......................................................................309 Affinement du meilleur modèle ............................................................................................311 Implémentation du modèle logistique ..................................................................................320

Croisement des scores : discriminant, logistique, CHAID et CART ...................................324 Bagging d’arbres de décision .............................................................................................329 Classificateur bayésien naïf ...............................................................................................342 Courbe de lift et courbe ROC des fonctions de score ........................................................347 Choix du modèle ................................................................................................................356 Calcul d’une grille de score ................................................................................................358 Découpage de la grille de score en notes discrètes ...........................................................365 Fin de la partie prédictive et conclusion .............................................................................371


Table des matières

XIII

Annexe A : Explication de la segmentation de clientèle par un arbre de décision .. 375 Annexe B : Macro-programme de discrétisation des variables ................................. 377 Bibliographie .................................................................................................................. 383 5.1. 5.2.

Ouvrages ............................................................................................................................383 Sites web ............................................................................................................................385

Index des procédures SAS ........................................................................................... 387



Chapitre 1

Analyses descriptives

Le premier chapitre de cet ouvrage est consacré au volet descriptif de l’étude de cas, dont le volet prédictif sera décrit dans le deuxième chapitre. Ce chapitre répond à la question suivante : comment construire une segmentation de clientèle sur une base statistique ? Cette question, très courante dans les directions commerciales et marketing, est ici abordée du début à la fin, en mettant en œuvre les méthodes statistiques les plus appropriées, et les principales procédures descriptives du logiciel SAS/STAT. La segmentation de clientèle à proprement parler est réalisée dans les sections 1.4 et 1.5, grâce aux algorithmes classiques de classification automatique implémentés dans SAS. La section 1.3 est consacrée à une analyse exploratoire préliminaire classique, sous la forme d’une analyse en composantes principales. Quant aux sections 1.6 à 1.8, elles s’attellent à une tâche qui n’est pas triviale : l’interprétation et la description des segments construits dans les deux sections précédentes, à partir des variables utilisées dans l’opération de segmentation. Ces dernières sections peuvent éventuellement être omises en première lecture, même si elles sont très utiles pour exploiter le résultat de la segmentation.

Nota Bene : Dans ce chapitre, l’ensemble des opérations sera réalisé à l’aide du logiciel SAS et de ses modules SAS Base, SAS/STAT, SAS/GRAPH. La version minimale à utiliser pour bénéficier de toutes les fonctionnalités mises en œuvre est la version 8.2, à l’exception de la procédure SGPLOT, qui permet d’obtenir des graphiques plus élégants que la procédure GPLOT mais qui nécessite une version de SAS au moins égale à 9.2.


2

1. Analyses descriptives

1.1. Introduction À partir d’ici, le lecteur doit imaginer qu’il est statisticien ou data scientist dans une compagnie d’assurance et que la direction marketing lui a demandé de construire une segmentation de clientèle. En pratique, cette segmentation de clientèle peut aussi être effectuée par des spécialistes de l’assurance sur la base de règles métiers. Cette façon de procéder est encore assez répandue car l’introduction des méthodes de data mining est assez récente dans le domaine de l’assurance (dont les actuaires utilisent par ailleurs depuis longtemps des méthodes statistiques pour les calculs de tarification). Néanmoins, son inconvénient de plus en plus reconnu est qu’elle repose sur des a priori et comporte une grande part de subjectivité. Pour cette raison, le lecteur statisticien s’est vu assigner la mission d’élaborer une segmentation statistique. Il va commencer par réunir les experts car, même si ces derniers ne vont pas définir eux-mêmes la segmentation de clientèle, ils pourront renseigner le statisticien sur les variables utiles à prendre en compte et celles à éviter pour des raisons de fiabilité ou de pertinence. Ensuite, le statisticien constituera sa base de données comme décrit dans notre précédent ouvrage Data Mining et Statistique Décisionnelle (chapitre 2). Il utilisera les fonctions de « data management » de SAS pour agréger des tables, les trier, les fusionner et mettre les données en forme, ou il fera appel à son service informatique qui lui fournira une base directement exploitable. Dans notre cas, la base étudiée est une base de 5822 assurés fournie à partir de données réelles par la compagnie néerlandaise de data mining Sentient Machine Research. Il a été utilisé dans un concours de data mining prédictif en 2000, l’objet de la compétition étant de construire le meilleur modèle de prédiction de souscription d’assurance caravane2. Les variables de cette base sont des données néerlandaises, comprenant des informations qui ne seraient probablement pas disponibles dans des données françaises, comme la religion. Signalons toutefois qu’il ne s’agit pas de données définies au niveau de l’individu, mais de données de géomarketing définies au niveau de la zone d’habitat (plus précisément, du code postal) de l’assuré, généralement en fonction d’un pourcentage de la population y possédant une caractéristique donnée. La plupart sont ainsi codées dans notre base : 0:0% 1 : 1 – 10 % 2 : 11 – 23 % 2

Pour une présentation du concours, on peut lire : P. van der Putten and M. van Someren (eds), The Insurance Company Case. Sentient Machine Research, Amsterdam, 2000. On peut aussi lire : CoIL challenge 2000: The insurance company case, Technical Report 2000-09, Leiden Institute of Advanced Computer Science, Netherlands, 2000. Enfin, une analyse des résultats du concours se trouve dans : P. van der Putten and M. van Someren, A Bias-Variance Analysis of a Real World Learning Problem: The CoIL Challenge 2000, Machine Learning, 57, pp. 177–195, 2004.


Chapitre 2

Analyses prédictives

Le second chapitre de cet ouvrage est consacré au volet prédictif de l’étude de cas débutée dans le premier chapitre avec son volet descriptif. Ce chapitre répond à la question suivante : comment construire un score d’appétence, qui permet d’attribuer à tout client une note indiquant sa probabilité de souscrire un produit ou un service ? Ce sujet est des plus classiques dans les directions commerciales et marketing mais aussi, en employant les mêmes méthodes, dans les directions des risques (avec des scores de risque). Il est ici traité avec un souci de rigueur mais aussi d’automatisation et d’industrialisation, en mettant en œuvre les méthodes statistiques les plus éprouvées et les principales procédures prédictives du logiciel SAS/STAT. Le résultat sera un score d’appétence à la souscription d’un contrat d’assurance caravane. Les sections 2.12, 2.26 à 2.28 présentent des techniques plus avancées ou de plus grandes difficultés de programmation, et leur lecture peut être omise sans altération de la compréhension du reste du texte. Les sections 2.8 à 2.11 font appel à des tests statistiques connus des statisticiens mais pas nécessairement répandus dans les directions marketing et parmi les chargés d’étude de ces directions. Nous les avons détaillés car ils apportent une rigueur qui est appréciée, voire indispensable, dans certains domaines (les analyses de risque dans l’industrie bancaire ou pharmaceutique), et qui est de toute façon toujours profitable. Nous espérons convaincre le lecteur que des outils tels que l’Output Delivery System ou le langage macro permettent de concilier cette rigueur avec la rapidité d’élaboration du modèle. Néanmoins, le lecteur allergique à la statistique et non contraint par les nécessités de son secteur d’activité pourra omettre ces sections en première lecture. Comme nous l’avons signalé dans l’avant-propos, des variantes sont suggérées mais non développées dans l’ouvrage, et le lecteur intéressé pourra télécharger sur le site de l’éditeur les données et le code SAS qu’il modifiera pour tester ces variantes. Il faut reconnaître que le volume limité des souscriptions à modéliser fait que les résultats obtenus ne sont pas toujours d'une stabilité maximale. Le lecteur pourra obtenir dans certaines variantes des résultats assez différents, notamment en termes de performance. Toutefois, cela ne remet nullement en cause la philosophie de l'étude de cas et la valeur des principes qu'elle veut illustrer.


92

2. Analyses prédictives

Nota Bene : Dans cette partie, l’ensemble des opérations sera réalisé à l’aide du logiciel SAS et de ses modules SAS Base, SAS/STAT, SAS/GRAPH et SAS/IML. La version minimale à utiliser pour bénéficier de presque toutes les méthodes mises en œuvre dans ce chapitre est la version 9.1.3. Néanmoins, la majorité des fonctionnalités sont disponibles dans la version 8.2, et les spécificités de SAS 9 sont signalées. Une exception notable concerne la procédure SGPLOT, qui nécessite une version de SAS au moins égale à 9.2 Une autre exception est l’appel de fonctions R dans SAS décrit dans la section 2.21, qui nécessite une licence SAS/IML et une version de SAS au moins égale à 9.2 Une troisième exception concerne l’import d’un modèle en langage PMML dans SAS (voir la section 2.22), qui nécessite au moins la version de 9.3 M2 de SAS. La dernière exception porte sur la procédure HPSPLIT d’arbre de décision (voir la section 2.20) apparue dans la version 9.4 de SAS.


2. Analyses prédictives

93

2.1. Introduction La segmentation de clientèle élaborée au chapitre 1 ayant été appréciée et utilisée par la direction marketing de la compagnie d’assurance, le statisticien data scientist se voit confier une nouvelle mission. Depuis quelque temps, la souscription de contrats « majeurs », tels que l’assurance automobile, stagne. Dans le même temps, les vacances en caravane connaissent un essor, car elles conjuguent économie et liberté. De plus en plus rares sont ceux qui veulent et peuvent passer leurs vacances à l’hôtel ou en location. La compagnie d’assurance envisage alors un prolongement naturel de l’assurance automobile : l’assurance caravane, encore peu souscrite et qui représente un potentiel important de développement pour la compagnie. Elle décide de lancer une campagne de marketing direct en direction de sa clientèle pour la promotion de ce type de contrat. Toutefois, la compagnie veut s’assurer d’obtenir un certain taux de souscription, et elle doit pour cela bien sélectionner les destinataires de son ciblage pour éviter de contacter à des personnes peu susceptibles de souscrire. C’est inutile et coûteux, et même nuisible à la relation commerciale, car les personnes indûment sollicitées apprécient généralement peu d’être ainsi dérangées. Pour savoir quels sont les clients à cibler prioritairement, on demande alors au statisticien de mettre au point un score d’appétence à la souscription d’un contrat d’assurance caravane. C’est l’objet de ce second chapitre. Nous reprenons donc la base de 5822 assurés néerlandais, que nous utilisons ici pour élaborer et tester plusieurs modèles prédictifs de score, comme cela fut le cas lors du concours de data mining qui popularisa en 2000 ce jeu de données. Les clients ciblés seront ceux dont le score est le plus élevé.

         

 

Les diverses opérations que nous allons réaliser et commenter sont les suivantes : analyses préalables univariées et bivariées des variables ; regroupement en classes des modalités des variables, en fonction de leurs taux de souscription ; analyse du pouvoir discriminant et sélection des variables ; écriture d’un macro-programme pour calculer l’aire sous la courbe ROC d’un modèle ; construction et évaluation de plusieurs modèles par analyse discriminante linéaire ; construction et évaluation de plusieurs modèles par arbre de décision ; construction et évaluation de plusieurs modèles par régression logistique ; construction et évaluation de plusieurs modèles par classificateur bayésien naïf, bagging, forêt aléatoire et gradient boosting (agrégation d’arbres de décision) ; comparaison de ces modèles par la superposition de leur courbe ROC et de leur courbe de lift ; calcul de la grille de score du modèle retenu. Les variables de la base sont de trois types : les variables sociodémographiques ; les variables de détention (nombre de contrats et montant des primes) de produits d’assurance, pour vingt et un types de produits ;


94 

2. Analyses prédictives

et la variable à expliquer, ou variable « cible », qui est « assur_caravane ».

Le deuxième et le troisième type de variables étaient absents de l’étude de la première partie, de même que quelques variables sociodémographiques : le nombre de maisons du quartier, le type de client, le pouvoir d’achat et le revenu moyen. Ces nouvelles variables sont très importantes. La variable à expliquer est bien sûr indispensable, et le fait que la compagnie ait déjà des souscripteurs d’assurance caravane rend possible et naturelle la définition de la variable à expliquer. Selon la méthodologie exposée dans notre précédent ouvrage Data Mining et Statistique Décisionnelle (chapitre 2), la souscription de contrats d’assurance caravane est observée sur les derniers mois les plus récents et donne lieu à une variable binaire « assur_caravane », valant 1 si le client a souscrit un contrat d’assurance caravane et 0 sinon. Sur 5822 clients de la base, 348 clients (5,98 %) ont souscrit un tel contrat dans les douze mois d’observation et sont donc dans la cible. Il reste 5474 clients nonsouscripteurs. Le modélisateur va donc chercher les caractéristiques qui font qu’un client a plus de chances d’être un souscripteur. Il va s’efforcer de lier la variable à expliquer aux autres variables, sociodémographiques et de détention, dites « explicatives ». Les variables de détention de produits d’assurance sont définies au niveau de l’individu. Elles constituent des variables dites comportementales : contrairement aux variables sociodémographiques qui décrivent le profil de l’individu, les variables comportementales décrivent son « comportement » dans la compagnie d’assurance, c’està-dire ses souscriptions de contrats. Si l’on faisait un score de risque, les variables comportementales concerneraient sa façon de conduire ou l’existence de sinistres. De façon similaire, les données comportementales dans une banque sont les données sur les produits détenus par les clients, leurs comptes, leurs crédits, leurs services, les flux qui s’y rattachent et le cas échéant les incidents de paiement. Les données sociodémographiques, dites aussi « signalétiques », et les données comportementales sont les deux grands types de variables explicatives pouvant être utilisées dans les scores d’appétence ou de risque. Les premières sont le plus souvent disponibles ; les secondes pas toujours, et quand elles sont utilisées, on parle de scores « comportementaux ». Nous allons ici chercher à construire un score comportemental, en observant la détention de produits au début de la période d’observation de la variable à expliquer. Nous saurons donc pour chaque client le nombre de produits qu’il détenait au début de cette période, pour l’ensemble des vingt et un types de produits commercialisés par la compagnie d’assurance. Ces vingt et un types couvrent une large gamme :  responsabilité civile ;  responsabilité civile entreprise ;  responsabilité civile agricole ;  assurance automobile ;  assurance moto ;  assurance cyclomoteur ;  assurance planche à voile ;  assurance bateau ;


2. Analyses prédictives

95

assurance vélo ; assurance remorque ; assurance camion ; assurance camion de livraison ; assurance tracteur ; assurance machine agricole ; assurance incendie ; assurance multirisques habitation (MRH) ; assurance personnelle accident ; assurance familiale accident ; assurance invalidité ; assurance sécurité sociale (santé) ; assurance-vie. On note la présence de contrats professionnels, qui s’explique par le fait que la clientèle de la compagnie est composée de particuliers mais aussi d’agriculteurs et de petits entrepreneurs.             

Les variables de montants de primes (cotisations) d’assurance sont aussi enregistrées et sont ainsi codées10 : 0:0€ 1 : 1 à 49 2 : 50 à 99 € 3 : 100 à 199 € 4 : 200 à 499 € 5 : 500 à 999 € 6 : 1 000 à 4 999 € 7 : 5 000 à 9 999 € 8 : 10 000 à 19 999 € 9 : plus de 20 000 €. Notre intérêt pour les variables de détention vient de ce que les variables comportementales, quand elles sont disponibles, ont un pouvoir prédictif souvent supérieur à celui des variables sociodémographiques11, a fortiori lorsque, comme ici, les variables sociodémographiques sont définies au niveau de la zone géographique et non de l’individu, perdant ainsi de leur acuité. Nous rappelons que, pour des raisons de protection des libertés individuelles, les variables sociodémographiques ne sont pas définies au niveau de l’individu, mais sont des 10

Par simplicité et pour tenir compte de l’inflation, nous avons conservé la codification initiale des montants alors que nous aurons pu diviser les seuils par 2, les montants étant exprimés à l’origine en florins néerlandais. 11 Une manière de le vérifier peut consister à effectuer deux ACP ayant les indicatrices « assur_caravane = 0 » et « assur_caravane = 1 » comme variables supplémentaires, et les variables sociodémographiques (ACP 1) ou comportementales (ACP 2) comme variables actives. On constate alors que les deux indicatrices sont un peu éloignées dans l’ACP 2, tandis qu’elles sont presque confondues (et au centre du plan factoriel) dans l’ACP 1.


254

2. Analyses prédictives

2.21. Classement dans SAS à l’aide d’un modèle prédictif de R Il est possible à un utilisateur du logiciel SAS d’utiliser des fonctions de R en insérant du code R dans du code SAS et en le faisant exécuter par SAS. Il suffit pour cela de disposer d’une licence SAS/IML, et d’avoir installé une version compatible de R :  une version 32 bits de SAS nécessite une version 32 bits de R ;  une version 64 bits de SAS peut être utilisée avec une version 32 bits ou une version 64 bits de R. En outre, il faut respecter les règles de compatibilité du Tableau 2.1 entre les versions de SAS et de R25. Tableau 2.1 – Compatibilité des versions de SAS et R

Version de SAS 9.2 9.22 9.3 9.3m2 9.4 9.4m1 9.4m2 9.4m3 9.4m4 9.4m5 9.4m6

PROC IML N/A 9.22 9.3 12.1 12.3 13.1 13.2 14.1 14.2 14.3 15.1

Date 07/2009 11/2010 07/2011 08/2012 07/2013 12/2013 08/2014 08/2015 11/2016 09/2017 11/2018

Versions de R 2.6.1 – 2.11.1 2.9.1 – 2.11.1 2.9.1 – 2.15.3 2.9.1 – 2.15.3 2.13.0 – 3.0.1 2.13.0 – 3.2.5 2.13.0 – 3.2.5 2.13.0 – 3.2.5 2.13.0 – 3.6.0 2.13.0 – 3.6.0 2.13.0 – 3.6.0

Cette solution est celle préconisée par SAS mais elle nécessite la présence de SAS/IML et ne s’applique pas à Python. Une autre solution permet de se passer de SAS/IML et d’exécuter des scripts R et Python à partir de SAS. Cette solution s’appuie sur une classe Java de SAS, SASJavaExec.jar, téléchargeable sur GitHub26, qui permet d’exécuter des scripts R. Elle est toutefois plus complexe à mettre en œuvre que celle que nous décrivons dans cette section, avec en particulier des sorties à enregistrer dans un fichier CSV pour les réimporter dans SAS. Une autre solution est la nouvelle architecture SAS Viya qui permet d’exécuter du code open source. Si plusieurs versions de R sont présentes sur votre ordinateur, il faut peut-être indiquer à SAS le chemin de la version de R à exécuter. Dans Windows, cela se fait en créant une variable d’environnement dont le nom est R_HOME et dont le contenu est le chemin de R, 25 26

Voir http://blogs.sas.com/content/iml/2013/09/16/what-versions-of-r-are-supported-by-sas/. https://github.com/sassoftware/enlighten-integration


2. Analyses prédictives

255

par exemple : C:\Program Files\R\R-3.5.1. Pour créer cette variable d’environnement, il faut aller dans le menu « Démarrer » de Windows, effectuer un clic droit sur l’item « Ordinateur », sélectionner « Propriétés », aller dans « Paramètres système avancés », cliquer sur le bouton « Variables d’environnement », puis sur le bouton « Nouvelle » dans la partie « Variables utilisateur », puis saisir le nom et le contenu de la variable. Deux autres possibilités existent :  ajouter « -SET R_HOME "C:\Program Files\R\R-3.5.1" » à la fin de la commande dans le raccourci de SAS sur le Bureau Windows27 ;  ou le mettre en tête du fichier CONFIG, qui se trouve dans « C:\program files\…\SASFoundation\9.4\nls\fr\sasv9.cfg » (le fr souligné étant en pour une version anglaise de SAS, et le « 9.4 » correspondant bien sûr à la version de SAS). Ce n’est pas tout. Avant d’exécuter du code R dans SAS, une option de SAS doit être activée au démarrage : RLANG. Comme précédemment, deux possibilités existent :  soit on ajoute « -RLANG » à la fin de la commande dans le raccourci de SAS sur le Bureau Windows28 ;  soit on le met en tête du fichier CONFIG, qui se trouve dans « C:\program files\…\SASFoundation\9.4\nls\fr\sasv9.cfg ». 2.21.1.

Modèle d’arbre CART

Dans cette section, nous mettons à profit cette solution pour réaliser un échantillonnage stratifié et élaborer un arbre CART. Le code doit enchaîner :  l’appel de la procédure IML ;  le passage de SAS à R de données en entrée ;  l’exécution du code R (entre les instructions SUBMIT et ENDSUBMIT29) ;  le passage de R à SAS de données en sortie ;  la fin de la procédure IML (QUIT). Nous utilisons l’instruction suivante pour transmettre une base SAS à R sous la forme d’un tableau de données (appelé « data frame » dans R). CALL ExportDatasetToR (SASDataSet, RDataFrame) ; La réciproque est l’instruction suivante : CALL ImportDataSetFromR (SASDataSet, RDataFrame) ; Elle est utilisée à la fin pour renvoyer à SAS les résultats calculés par R. Les noms des bases sont entre guillemets. D’autres instructions permettent d’échanger des matrices. Outre des bases, SAS peut transmettre à R des paramètres, tels que des noms de variables, des quantités, des chaînes de caractères… En l’absence de 27

Exemple : "C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -RLANG Exemple : "C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -RLANG 29 Attention, il ne faut pas laisser d’espace entre le « ENDSUBMIT » terminant le code SAS et son pointvirgule. Sinon, rien ne se passe à l’exécution. 28


256

2. Analyses prédictives

paramètre, l’appel de SAS se fera par « SUBMIT /R » et sinon les paramètres doivent suivre le « SUBMIT ». Dans notre exemple, nous avons passé en paramètres le nom des variables explicatives dans « x » et le nom de la variable à expliquer dans « y ». Évidemment, ces échanges de données ou de paramètres entre SAS et R sont facultatifs et il est possible d’appeler R sans cela. D’une part, on peut demander à R de lire une table SAS qui ne lui a pas été directement transmise par SAS, pourvu qu’on utilise un package approprié pour cette lecture : sas7bdat ou haven. D’autre part, les résultats produits par R, qui seraient affichés dans la console R si l’on travaillait directement dans R, seront affichés dans la fenêtre OUTPUT de SAS. Mais ici, on préférera utiliser la capacité de SAS à transmettre des données sous une forme directement exploitable par R, et par ailleurs on voudra récupérer l’échantillon stratifié et la base de test enrichie du calcul de score par CART, afin de pouvoir les utiliser dans d’autres analyses avec SAS. PROC IML ; CALL ExportDatasetToR ("work.test", "tic") ; x = TRANSLATE(COMPBL("&varmontant &varsociodemo"), "+", " ") ; y = "assur_caravane" ; SUBMIT x y / R ; # échantillon stratifié library(sampling) set.seed(123) id <- strata(tic, stratanames="assur_caravane", size=c(232,232), method="srswor",description=T)$ID_unit train <- tic[id,] valid <- tic[-id,] table(train$assur_caravane) table(valid$assur_caravane) # arbre CART library(rpart) packageVersion("rpart") ct.arbre <- rpart.control(minbucket=20, maxdepth=4) cart <- rpart(&y ~ &x, train, method="class", parms=list(split="gini"), control=ct.arbre) print(cart) jpeg(filename="C:/…/Assurance/CARTsousSAS.jpg") library(rattle) fancyRpartPlot(cart, sub=" ") train$CART <- predict(cart, type="prob", train) valid$CART <- predict(cart, type="prob", valid) ENDSUBMIT; CALL ImportDataSetFromR ("work.apprent3", "train") ; CALL ImportDataSetFromR ("work.valid3", "valid") ; QUIT ;


2. Analyses prédictives

329

2.26. Bagging d’arbres de décision Le Tableau 2.2 avec son aire sous la courbe ROC montre que la régression logistique et l’analyse discriminante linéaire fournissent des modèles sensiblement plus discriminants que les arbres de décision CHAID et CART. Mais un défaut plus sérieux des modèles d’arbre ne réside pas dans leur aire sous la courbe ROC plus faible que celles des autres modèles, mais dans le fait que cette aire est beaucoup plus basse que l’aire mesurée sur l’échantillon d’apprentissage (voir les sections 2.19 et 2.20.2). Un tel écart est symptomatique du manque de robustesse des modèles par arbres de décision, dont les performances peuvent varier beaucoup d’un échantillon à l’autre. La structure hiérarchique des arbres les rend sensibles à des changements dans les données qui seraient suffisamment limités pour ne pas modifier sensiblement le résultat d’une régression logistique ou d’une analyse discriminante linéaire. Cette variance fait des arbres des classificateurs dits « faibles » et a fait l’objet de nombreuses recherches afin de tenter d’y remédier. Une méthode de modélisation apparut en 1996 pour stabiliser les classificateurs faibles. Elle fut inventée par Leo Breiman sous le nom de bagging43, acronyme de « Bootstrap AGGregatING ». Elle s’effectue en tirant un certain nombre d’échantillons bootstrap, comme dans la section 2.12, en calculant sur chaque échantillon un modèle selon le classificateur choisi, puis en agrégeant les différents modèles. Cette agrégation consiste à calculer un modèle, dont la prédiction, pour chaque individu, est :  soit la moyenne des estimations Ei(Y|X) fournies par l’ensemble des modèles, dans le cas d’une régression (variable à expliquer quantitative) ;  soit la moyenne des probabilités Pi(Y=1|X) fournies par l’ensemble des modèles, ou leur vote, dans le cas d’un classement (variable à expliquer qualitative). Dans la méthode du vote (méthode originale de Breiman), la classe prédite par le bagging est définie comme la classe prédite par la majorité des modèles élémentaires. Si le classificateur de base est une analyse discriminante ou une régression logistique, le modèle agrégé conduit au même classement que le modèle dont les coefficients sont pour chaque variable (ou chaque modalité) la moyenne des coefficients des différents modèles. Le modèle obtenu par bagging n’est donc pas plus complexe que le modèle de base. Pour les arbres de décision, au contraire, il n’y a pas d’agrégation simple, et le modèle obtenu par bagging est la réunion de l’ensemble des arbres de tous les échantillons bootstrap. C’est un modèle qui n’est plus un arbre, qui n’en a plus la lisibilité et qui devient même fort complexe à mesure que le nombre d’échantillons bootstrap augmente. En revanche, la diminution de la variance par bagging est beaucoup plus nette sur les arbres de décision que sur des classificateurs de base stables telle la régression logistique. Le bagging s’applique facilement à la régression logistique mais il lui est de très peu d’apport, comme le montreront les tests qui suivent. Au contraire, le bagging augmente fortement la robustesse des arbres de décision, comme le montrera l’évolution de l’aire sous la courbe ROC sur l’échantillon de validation, en fonction du nombre d’échantillons bootstrap ayant servi au bagging.

43

Breiman, L. (1996). Bagging Predictors. Machine Learning 26:2, pp. 123-140.


330

2. Analyses prédictives

Le moindre apport de l’agrégation de modèles aux classificateurs stables peut s’interpréter à l’aide du résultat d’Hansen et Salamon44, selon lesquels l’agrégation de p classificateurs, dont les erreurs sont indépendantes et ont un taux inférieur à 50 %, conduit à un taux d’erreur pour le modèle agrégé qui tend vers 0 quand p tend vers l’infini. Or, moins un classificateur sera stable, moins ses erreurs sur des échantillons différents seront dépendantes. La macro %BAGGING qui va maintenant être décrite met en œuvre le bagging sur un arbre CHAID. Elle :  effectue n tirages bootstrap de la table « apprent » (apprentissage) en entrée (tirages avec remise de N individus parmi les N individus de la table),  calcule à l’aide de la macro %TREEDISC un arbre CHAID sur chacun des n échantillons bootstrap,  applique cet arbre à la table « valid » (validation) en entrée,  enregistre le score de chaque individu avec son identifiant (numéro de client) dans une table temporaire arbrei, où i est le numéro de l’échantillon bootstrap,  concatène la table arbrei aux tables précédentes arbrej (j < i),  en déduit pour tout i la prédiction moyenne des i premiers arbres sur chaque individu,  calcule l’aire sous la courbe ROC de cette prédiction moyenne,  et enregistre dans une table en sortie les aires ROC correspondantes : celle du premier arbre, celle de la moyenne du premier et du deuxième arbre, celle de la moyenne des trois premiers arbres, etc. On obtient en sortie de la macro %BAGGING deux tables : la table « auc_out » qui contient ces n aires sous la courbe ROC, et la table « bagging_out » qui contient pour chaque individu : son identifiant, le nombre n d’échantillons bootstrap, la valeur de la variable à expliquer, la moyenne et l’écart-type des prédictions des n arbres CHAID. Les paramètres de cette macro sont :  apprent : nom de la table utilisée pour l’apprentissage de l’arbre ;  valid : nom de la table utilisée pour la validation de l’arbre ;  varY : variable à expliquer ;  varXordinal : variables explicatives ordinales (ou continues) ;  varXnominal : variables explicatives nominales ;  min_feuille : nombre minimum d’observations dans chaque feuille de chaque arbre construit ;  n : nombre d’échantillons bootstrap utilisés pour le bagging. La profondeur maximale de l’arbre est un paramètre « maxdepth » de TREEDISC qui est fixé ici à 3 mais qui peut bien entendu être modifié, même si nous ne l’avons pas mis parmi les paramètres de BAGGING. Voici la description de la macro %BAGGING.

44

Hansen, L. and P. Salamon (1990). Neural network ensembles. IEEE Transactions on Pattern Analysis and Machine Intelligence 12, pp. 993-1001.


2. Analyses prédictives

331

%MACRO Bagging (apprent, valid, varY, varXordinal, varXnominal, min_feuille, n ) ; Elle nécessite l’appel préalable de la macro utilitaire %XMACRO et de la macro %TREEDISC. %inc 'C:\...\Assurance\xmacro.sas' ; %inc 'C:\...\Assurance\treedisc.sas' ; Une requête SQL permet d’enregistrer dans la macro-variable &sample le nombre d’observations de la table &apprent en entrée. Ceci se fait grâce à l’instruction « SELECT COUNT(*) INTO :sample ». PROC SQL NOPRINT ; SELECT COUNT(*) INTO :sample FROM &apprent; QUIT ; Le nombre d’observations &sample est écrit dans la fenêtre LOG de SAS. %PUT &sample ; Le traitement suivant, entre les instructions %DO et %END, est effectué pour chacun des &n échantillons bootstrap. %DO iter = 1 %TO &n ; Nous appelons la procédure SURVEYSELECT, comme dans la section 2.12. Elle permet de réaliser un certain nombre de types d'échantillonnages, dont le tirage aléatoire équiprobable avec remise déclenché par l'instruction METHOD = urs (« unrestricted random sampling »), la taille de l'échantillon étant spécifiée par SAMPSIZE = x et l'échantillon étant écrit dans la table spécifiée par OUT = <nom_table>. Comme dans la section 2.12, chaque observation est présente au plus une fois dans la table en sortie, mais avec la variable NumberHits qui contient le nombre de sélections de l’individu et qui est utilisée avec le paramètre FREQ=numberhits de la macro %TREEDISC pour que chaque individu soit pris en compte dans l’arbre de décision autant de fois qu’il a été tiré dans l’échantillon bootstrap. PROC SURVEYSELECT DATA = &apprent METHOD = urs OUT = &apprent._tmp SAMPSIZE = &sample OUTHITS NOPRINT ; RUN ; La macro %TREEDISC est ensuite appelée, avec l'option « trace=none » pour supprimer l’affichage des résultats, qui seraient beaucoup trop volumineux. Le nombre minimal d’observations dans chaque feuille de l’arbre est le paramètre « leaf ». L’option « noformat » sert à ne pas utiliser les éventuels formats des variables ; les calculs s’en trouvent accélérés.


358

2. Analyses prédictives

2.30. Calcul d’une grille de score Lorsqu’un modèle de score a été élaboré par régression logistique sur des variables qualitatives ou discrétisées, avec par conséquent un coefficient par modalité de variable (éventuellement nul pour la modalité de référence), on peut présenter la formule de calcul du score sous une forme très simple, si l’on ne se soucie pas d’obtenir la valeur de la probabilité a posteriori fournie par la régression logistique. Pour cela, il faut :  substituer le logit (combinaison linéaire des indicatrices des modalités) à la probabilité Q RST U comme valeur du score, VQ RST U  et normaliser le logit en sorte qu’il soit compris entre 0 et 100 (ou une autre valeur que 100, par exemple 1000). Dans cette normalisation du logit, les coefficients de la régression logistique sont remplacés par de nouveaux coefficients, appelés « nombres de points », associés chacun à une modalité. Par exemple, au lieu d’associer le coefficient 1,4911 (voir plus bas) à la modalité « > 999 » de « mt_auto », on lui associe 40 points. Le nombre de points associé à chaque modalité est déterminé en sorte que tout individu ait un nombre total de points compris entre 0 et 100, ces deux bornes étant atteignables, au moins en principe. Cette façon de calculer un score est courante en credit scoring, où l’on additionne les points liés à chaque modalité, pour avoir un nombre total de points qui est le score de l’individu. Telle tranche d’âge ajoute tant de points, telle tranche de revenus ajoute tant de points, etc. Cet ensemble de points est appelé « grille de score ». Il est particulièrement populaire auprès des analystes de crédit à la consommation car il est très explicite et montre clairement l’impact de chaque modalité. Ce nombre de points est linéairement parfaitement corrélé (corrélation de Pearson = 1) Q RST U au logit, mais non au « vrai » score logistique, c’est-à-dire à la probabilité . En VQ RST U revanche, il est parfaitement corrélé au score logistique en termes de rangs (corrélation de Spearman = 1), et son pouvoir discriminant est exactement le même, puisque les rangs, et Q donc le classement des individus, sont conservés par la fonction croissante . En VQ conséquence, l’aire sous la courbe ROC de la grille de score est égale à celle du score logistique. Ce calcul du score comme somme de points peut être décrit ainsi48. Pour chaque variable qualitative ou discrète Xj, on note cjk le coefficient associé à sa modalité k, et aj et bj les coefficients minimum et maximum de la variable : W = min[ \ [ et ] = max[ \ [ .

On calcule ensuite le poids total sur l’ensemble des variables du modèle, c’est-à-dire la somme des plus grands écarts entre deux coefficients d’une même variable : 48

Confais J., Nakache J.-P. (2003). Statistique explicative appliquée, Éditions Technip. Voir la section 4.8.3. Il faut adapter le calcul dans le cas d’une variable continue.


359

2. Analyses prédictives

'`abc = ><] − W = À chaque modalité k de Xj est associé un nombre de points égal à : \[− W d$e, N% = 100 × '`abc Nous allons voir maintenant comment déterminer avec SAS une grille de score, à partir du modèle logistique, le huitième, retenu dans la section 2.24, et dont les coefficients sont rappelés dans le tableau ci-après.

Paramètre

Estimation -2.9411

Intercept

1.4911

mt_auto

> 999

mt_auto

<= 999

mt_incendie

<= 99 ou > 499

-1.1303

mt_incendie

100 - 199

-0.2967

mt_incendie

200 - 499

0

revenu_moyen 0 1 2 3

0

-0.6029 0

revenu_moyen 4 5 6 7 8 9 niv_etud_bas

0à2

niv_etud_bas

3 et plus

0.5460 0

La détermination de la grille de score se fait en partant du fichier des paramètres du modèle, c’est-à-dire des coefficients associés à chaque modalité, qui a été créé dans la section 2.24 en faisant précéder la procédure LOGISTIC de l’instruction : ODS OUTPUT ParameterEstimates = coeff_logit ; Une première façon de coder consiste à utiliser dans une étape DATA les instructions FIRST, LAST et RETAIN. PROC SORT DATA=coeff_logit OUT=coeff_tmp ; BY Variable Estimate ; RUN ; DATA coeff_tmp ; SET coeff_tmp END=fin ; BY Variable ; RETAIN min max delta_tot 0; IF FIRST.Variable THEN DO min = Estimate ; max = 0 ; END ;


360

2. Analyses prédictives

delta_coeff = SUM(Estimate , - min) ; IF delta_coeff > max THEN max = delta_coeff ; IF LAST.Variable THEN delta_tot = SUM(delta_tot , max) ; IF fin THEN CALL SYMPUT('total_poids', delta_tot) ; RUN ;

L’étape DATA précédente commence à implémenter la formule de calcul du nombre de points d$e, N%, en utilisant une rupture au niveau de la variable (IF FIRST.VARIABLE…) pour initialiser la plus petite valeur et la plus grande valeur du coefficient \ [ de chaque modalité de cette variable. On stocke dans une macro-variable &total_poids le poids total utilisé au dénominateur de la formule de d$e, N%. Un codage alternatif plus concis fait appel à la procédure SQL qui sait déterminer le plus petit des coefficients d’une variable, par la syntaxe SELECT MIN(Estimate)… GROUP BY Variable, et qui sait aussi créer une macro-variable, par l’instruction SELECT … INTO : <nom_macro-variable>. On remarque l'auto-jointure de la table, qui permet de lui adjoindre la différence de chaque coefficient avec le coefficient minimal de sa variable. PROC SQL ; CREATE TABLE coeff_tmp AS SELECT Variable , ClassVal0, Estimate , Estimate - MIN(Estimate) AS delta_coeff FROM coeff_logit GROUP BY Variable ; SELECT SUM(delta_coeff) INTO : total_poids FROM coeff_tmp WHERE delta_coeff IN (SELECT delta_coeff FROM coeff_tmp GROUP BY Variable HAVING delta_coeff = MAX(delta_coeff)) ; QUIT ;

Dans les deux variantes de codage, le programme se poursuit ainsi : DATA grille (DROP = min delta_tot delta_coeff) ; SET coeff_tmp ; nbpoints = ROUND (100 * (Estimate - min)/ &total_poids) ; RUN ; Cette étape DATA achève le calcul du nombre de points d$e, N% associé à chaque modalité, en l’arrondissant à l’entier le plus proche pour plus de simplicité et lisibilité. Le tableau qui suit présente le résultat obtenu, avec le nombre de points dans la colonne de droite. PROC PRINT DATA=grille ; RUN ;


Chapitre 4

Annexe B : Macro-programme de discrétisation des variables

Dans la section 2.5, nous avons eu recours à un macro-programme SAS, qui n’avait pas été décrit et dont le code source n’était pas apparu alors, car ce macro-programme était utilisé sous une forme compilée, c’est-à-dire non pas sous la forme d’un code compréhensible par l’utilisateur, mais sous la forme d’un code écrit dans un langage machine illisible par l’utilisateur mais exécutable par la machine. La présente annexe décrit à présent ce macro-programme %DISCRETISATION en fournissant son code source. Comme pour tout macro-programme, on peut utiliser ce code de deux façons. Soit directement en l’incorporant dans le programme principal SAS, ce qui aura pour effet de le compiler immédiatement au moment de l’exécution du programme. Soit en le compilant préalablement, solution retenue dans cette étude de cas. La compilation a pour effet de générer un code compilé directement utilisable par la machine, en le stockant dans un catalogue appelé SASMACR, associé au fichier « sasmacr.sas7bcat ». Par défaut et lors d’un appel direct du macro-programme, le catalogue SASMACR est stocké dans la bibliothèque WORK, mais il est possible de le stocker dans une bibliothèque permanente, à condition d’ajouter l’option STORE à la fin de la première ligne de définition du macroprogramme, et d’activer l’option SASMSTORE = <nom_bibliothèque> MSTORED pour spécifier la bibliothèque devant contenir le code compilé. Dans ce cas, il n’est pas nécessaire de disposer ultérieurement du code source pour exécuter le macroprogramme, et avant d’appeler le macro-programme en écrivant son nom et ses paramètres, il suffit, comme dans la section 2.5, d’activer l’option SASMSTORE = <nom_bibliothèque> MSTORED pour indiquer la bibliothèque contenant le code compilé. Rappelons qu’avant de lancer le macro-programme %DISCRETISATION, il faut exécuter deux autres macro-programmes : %XMACRO et %TREEDISC. Les paramètres du macro-programme %DISCRETISATION sont décrits dans la section 2.5. Il y est notamment précisé que les variables traitées par ce macro-programme doivent être quantitatives avec un nombre limité de valeurs, ou ordinales, même si une généralisation de ce macro-programme serait possible, dans deux directions. D’une part, en direction des variables continues, auxquelles il faudra juste substituer leurs déciles ou d’autres quantiles. D’autre part, en direction des variables nominales, qu’il est possible de spécifier à la macro %TREEDISC par l’intermédiaire du paramètre NOMINAL = <nom_variables>. EXERCICE : Effectuer cette généralisation.


378

Annexe : macro-programme de discrétisation

Voici maintenant le macro-programme %DISCRETISATION. On notera l’instruction %LOCAL VAR qui permet de définir une macro-variable locale &VAR, laquelle n’entrera ainsi pas en conflit avec la macro-variable globale de même nom utilisée dans cette étude de cas. Ce macro-programme appelle le macro-programme %TREEDISC de façon itérative, une fois par variable à discrétiser. En effet, l’algorithme CHAID de %TREEDISC sera appliqué à chaque variable pour regrouper ses modalités au vu du critère du ². On a donc une instruction %LET VAR=%SCAN(&LISTVAR,&N,%STR( )) qui affecte à la macrovariable &VAR le nème mot de la liste de variables LISTVAR passée en paramètre, un ensemble de boucles %DO %WHILE (&VAR^=) qui exécute les traitements tant que la nème variable existe, et une incrémentation de la valeur de n effectuée à la fin de chaque boucle par l’instruction %LET N=%EVAL(&N+1).

LIBNAME BIBMACRO "C:\...\Assurance" ; OPTIONS SASMSTORE=BIBMACRO MSTORED ; %MACRO DISCRETISATION (FICHIER,TARGET,LISTVAR,FEUILLE,PREFIX,BIBFORMAT) / STORE ; %LET N=1; %LOCAL VAR; %LET VAR=%SCAN(&LISTVAR,&N,%STR( )); DATA &FICHIER._DISCRET; SET &FICHIER (KEEP = CLE &TARGET &LISTVAR); RUN; %DO %WHILE(&VAR^=); %TREEDISC( DATA=&FICHIER, DEPVAR=&TARGET, ORDINAL=&VAR, OUTTREE=TRD, LEAF=&FEUILLE, MAXDEPTH=1, OPTIONS=NOFORMAT, TRACE=NONE); %TREEDISC( INTREE=TRD, CODE='ARBRE.CODE'); DATA _NULL_ ; SET trd ; CALL SYMPUT("nb",_N_) ; RUN ; %IF &NB > 2 %THEN %DO ; /* test pour éliminer les variables non découpées */ DATA &FICHIER._DISCRET ; SET &FICHIER._DISCRET ; %INC 'ARBRE.CODE'; &PREFIX&VAR = NODE_ ; RUN; PROC FREQ ; TABLES &var * &target ; PROC FREQ ; TABLES &var * &prefix&var/LIST OUT=modal ; PROC SORT DATA=modal ; BY &prefix&var DESCENDING &var; RUN ;


379

Annexe : macro-programme de discrétisation

Grâce à l’option LIST, la table « modal » créée par la procédure FREQ contient une ligne par modalité de la variable à discrétiser. Elle contient aussi une variable, dont le nom est préfixé selon le paramètre en entrée de la macro, et dont la valeur est le numéro NODE_ du nœud de l’arbre CHAID correspondant à la modalité de la variable à discrétiser. Par exemple, il peut contenir : Obs 1 2 3 4 5 6 7 8 9 10

marie 0 1 2 3 4 5 6 7 8 9

xmarie 2 2 2 2 2 3 4 4 4 5

COUNT 64 75 157 246 324 946 1172 1683 361 794

PERCENT 1.0993 1.2882 2.6967 4.2254 5.5651 16.2487 20.1305 28.9076 6.2006 13.6379

DATA plages (KEEP = etiq plage &prefix&var) ; SET modal ; BY &prefix&var ; RETAIN etiq ; LENGTH etiq $92 ; IF FIRST.&prefix&var THEN etiq = " "; etiq = COMPRESS(&var)!!" "!!etiq ; IF LAST.&prefix&var THEN DO; IF LENGTH(etiq) > 1 THEN plage = COMPRESS(FIRST(etiq)!!" "!!SUBSTR(etiq,LENGTH(etiq),1)) ; ELSE plage = COMPRESS(etiq) ; OUTPUT ; END ; RUN ;

À noter l’utilisation de la fonction FIRST apparue avec SAS 9, qui extrait le premier caractère d’une chaîne. Quant à la fonction COMPRESS, elle supprime tous les espaces (ou d’autres caractères, si spécifiés) de la chaîne de caractères à laquelle elle est appliquée.

  

La table « plages » contient une ligne par modalité de la variable discrétisée, avec : le nom de cette variable discrétisée (préfixée selon le paramètre en entrée de la macro) ; la variable « etiq » qui contient la liste des modalités de la variable initiale correspondant à chaque modalité de la variable discrétisée ; la variable « plage » qui contient la plage de modalités de la variable initiale.



Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.