Data Mining. Modèle d attrition Business Understanding Phase. Study of Churn



Documents pareils
L export de SAS vers Excel expliqué à ma fille

Crédit Scoring. Master 2 SRO. Année scolaire 2009/2010. Professeur : RICHARD EMILION. Réalisé par : MAHAMAT OUMAR ALHABO et OULD EL HADDAD CHEIKH

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

1 Modélisation d être mauvais payeur

Les dates SAS expliquées à ma fille

SAS de base : gestion des données et procédures élémentaires

Manipulation de données avec SAS Enterprise Guide et modélisation prédictive avec SAS Enterprise Miner

Utilisation du Logiciel de statistique SPSS 8.0

Interest Rate for Customs Purposes Regulations. Règlement sur le taux d intérêt aux fins des douanes CONSOLIDATION CODIFICATION

données en connaissance et en actions?

INSCRIPTION MASTER / MASTER S APPLICATION

INITIATION AU LOGICIEL SAS

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

1 Imputation par la moyenne

Support Orders and Support Provisions (Banks and Authorized Foreign Banks) Regulations

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Formulaire de candidature pour les bourses de mobilité internationale niveau Master/ Application Form for International Master Scholarship Programme

TP SAS initiation IUP MIAGE L3

Formation au logiciel SAS Statistical Analysis System

Plan 1/9/2013. Génération et exploitation de données. CEP et applications. Flux de données et notifications. Traitement des flux Implémentation

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Scénario: Données bancaires et segmentation de clientèle

Calculation of Interest Regulations. Règlement sur le calcul des intérêts CONSOLIDATION CODIFICATION. Current to August 4, 2015 À jour au 4 août 2015

Introduction aux outils BI de SQL Server Création de cubes dans SQL Server Analysis Services (SSAS)

ODS : organiser et diffuser des sorties

Examen Médian - 1 heure 30

Méthodologie de conceptualisation BI

Cheque Holding Policy Disclosure (Banks) Regulations. Règlement sur la communication de la politique de retenue de chèques (banques) CONSOLIDATION

Life Companies Borrowing Regulations. Règlement sur les emprunts des sociétés d assurance-vie CONSOLIDATION CODIFICATION

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

Gestion des données avec R

TD d économétrie appliquée : Introduction à STATA

Exemple PLS avec SAS

Récupérer au format AVI un extrait d'un DVD à l'aide du logiciel FlaskMpeg

Borrowing (Property and Casualty Companies and Marine Companies) Regulations

Le Système SAS et les accès via OLE DB : une introduction

distribution quelconque Signe 1 échantillon non Wilcoxon gaussienne distribution symétrique Student gaussienne position

Sauvegarde et Restauration d un environnement SAS

Le décisionnel plus que jamais au sommet de l agenda des DSI

Confirmation du titulaire de la carte en cas de contestation de transaction(s) Cardholder s Certification of Disputed Transactions

LE PETIT RELATION CLIENT. Les pratiques clés en 15 fiches. Nathalie Houver

Allo Support et services électroniques

Export Permit (Steel Monitoring) Regulations. Règlement sur les licences d exportation (surveillance de l acier) CONSOLIDATION CODIFICATION

calls.paris-neuroscience.fr Tutoriel pour Candidatures en ligne *** Online Applications Tutorial

TP: Représentation des signaux binaires. 1 Simulation d un message binaire - Codage en ligne

Changer la source d'une requête dans SAS Enterprise Guide. Ce document explique comment changer la table source de la tâche Filtre et requêtes.

LOI SUR LA RECONNAISSANCE DE L'ADOPTION SELON LES COUTUMES AUTOCHTONES ABORIGINAL CUSTOM ADOPTION RECOGNITION ACT

DOSSIER DE CANDIDATURE APPLICATION FORM

BIRT (Business Intelligence and Reporting Tools)

Form of Deeds Relating to Certain Successions of Cree and Naskapi Beneficiaries Regulations

Découverte du tableur CellSheet

Logiciel HLA Fusion Version 3.X.X

DEMANDE D OUVERTURE DE COMPTE REQUEST OF ACCOUNT OPENING. PROFIL CLIENT Customer Profile. Identité* Identity. Nom de jeune fille* / Maiden name

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Formulaire de candidature pour les bourses de mobilité internationale niveau Master/ Application Form for International Master Scholarship Program

First Nations Assessment Inspection Regulations. Règlement sur l inspection aux fins d évaluation foncière des premières nations CONSOLIDATION

INTRODUCTION. Bienvenue dans la TCN FRENCH TEAM, nous allons ensemble démarrer une belle aventure qui peut devenir lucrative pour tous.

8. Gestionnaire de budgets

Didacticiel Études de cas. Description succincte de Pentaho Data Integration Community Edition (Kettle).

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

ETABLISSEMENT D ENSEIGNEMENT OU ORGANISME DE FORMATION / UNIVERSITY OR COLLEGE:

INTRODUCTION AU DATA MINING

Règlement sur les baux visés à la Loi no 1 de 1977 portant affectation de crédits. Appropriation Act No. 1, 1977, Leasing Regulations CODIFICATION

Guide pour les chercheurs. Version 1.0

Données des SIM. Données signalétiques (nom, adresse), Historique d achat, Réactions passées aux actions de promotion

Règlement sur le télémarketing et les centres d'appel. Call Centres Telemarketing Sales Regulation

5. L Entreprise et les politiques budgétaires

TP Bases de données réparties

Projet 1 : RiskMetrix Conversion

Outils pour les réseaux de neurones et contenu du CD-Rom

Manuel de l Administrateur

UNIVERSITE DE YAOUNDE II

Grégoire de Lassence. Copyright 2006, SAS Institute Inc. All rights reserved.

Deuxième Licence en Informatique Data Warehousing et Data Mining La Classification - 1

Vue d ensemble de Windows PowerShell

de stabilisation financière

L'intelligence d'affaires: la statistique dans nos vies de consommateurs

La base de données dans ArtemiS SUITE

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

PHOTO ROYAUME DE BELGIQUE /KINDOM OF BELGIUM /KONINKRIJK BELGIE. Données personnelles / personal data

Configurer la supervision pour une base MS SQL Server Viadéis Services

RULE 5 - SERVICE OF DOCUMENTS RÈGLE 5 SIGNIFICATION DE DOCUMENTS. Rule 5 / Règle 5

Guide informatique AUDIT EVALUATION DE LA PRATIQUE DE L ANTIBIOPROPHYLAXIE EN MATERNITE

I. COORDONNÉES PERSONNELLES / PERSONAL DATA

Améliorer les performances du site par l'utilisation de techniques de Web Mining

Paris Airports - Web API Airports Path finding

Création dynamique des répertoires WORK et SASUSER des utilisateurs

MEMORANDUM POUR UNE DEMANDE DE BOURSE DE RECHERCHE DOCTORALE DE LA FONDATION MARTINE AUBLET

TP1. Outils Java Eléments de correction

Name Use (Affiliates of Banks or Bank Holding Companies) Regulations

AIDE FINANCIÈRE POUR ATHLÈTES FINANCIAL ASSISTANCE FOR ATHLETES

Approche Contract First

CONVENTION DE STAGE TYPE STANDART TRAINING CONTRACT

THE LAW SOCIETY OF UPPER CANADA BY-LAW 19 [HANDLING OF MONEY AND OTHER PROPERTY] MOTION TO BE MOVED AT THE MEETING OF CONVOCATION ON JANUARY 24, 2002

Architecture de la plateforme SBC

Compétences Business Objects

Transcription:

IUT de Caen - Département STID Responsable : Alain LUCAS Data Mining Modèle d attrition Business Understanding Phase STID 2ème année Lors d une réunion en septembre 2003 avec les responsables des directions Commerciale, Marketing, Statistique et Informatique, le directeur d une banque régionale demande : 1. de mener une étude sur le «churn» (ou «attrition») des clients de la banque, c est-à-dire d évaluer le pourcentage de clients qui quittent la banque pour la concurrence 2. de créer le cas échéant un modèle permettant de détecter en amont les clients susceptibles de partir à la concurrence en vue de les retenir par une stratégie commerciale. Study of Churn 2. Dans le but de réaliser l audit, créer un répertoire Datamining sur votre disque, puis copier le fichier Scores dans ce répertoire. 3. Lancer le logiciel SAS, puis créer une fenêtre EDITOR nommée Audit-Churn. 4. Dans la fenêtre ainsi créée, écrire les lignes de commande suivantes : dm clear log dm clear output options linesize=120 nodate nonumber 5. Créer à la suite du code la librairie DM via l instruction libname (adapter si besoin la lettre du disque!) : libname DM C :\Datamining 6. Dans le but d extraire la segmentation client en date du 01 août 2003, écrire les lignes de commande suivantes : data DM.Churn set DM.Scores if Date= 01AUG2003 d then output 7. Ecrire la procédure PRINT suivante : proc print data=dm.churn (obs=30) heading=h noobs title1 Audit du Churn title3 Visualisation de la table Churn Vérifier que l on obtient la sortie suivante : Après cette réunion, le responsable de la direction Statistique vous demande en tant que chargé d études de réaliser un audit concernant le «churn» des clients de la banque pour le mois de juillet 2003. Après avoir demandé au département informatique (IT - Information Technology) les données concernant la segmentation client (New/Gold/Silver/Bronce/Lead/Lost/Undefined) depuis janvier 2003, un fichier sous forme de table SAS nommé Scores vous a été fourni avec les informations demandées (cf. Table 1 pour visualiser un extrait du fichier). Tab. 1 : Extrait de la table Scores 1. La structure de ce fichier est de la forme multiples observations par clients. Qu est ce qui justifie ici le nom d une telle structure? Justifier votre réponse à l aide d un exemple. 1 Tab. 2 : Segment client au 1er août 2003 8. Dans le but de déterminer la fréquence du «churn» au mois de juillet 2003, écrire la procédure FREQ suivante : proc freq data=dm.churn title3 Fréquence des différents segments pour le mois de juillet 2003 table ValueSegment Indiquer alors précisément pour la banque le taux de churn pour le mois de juillet 2003. 2

Creation of Datamarts Votre responsable, à la vue de votre résultat, souhaite que le département de Statistique développe un modèle d attrition pour le mois de novembre 2003 permettant d identifier en amont les clients susceptibles de partir à la concurrence. Cela va consister en l élaboration d un score représentant la probabilité, pour chacun des clients, de quitter la banque. Etant novice dans la construction d un tel score, votre responsable vous informe que pour mener à bien cet objectif, il convient de définir une date de référence ainsi que trois périodes de temps spécifiques : Observational window ou Inputs variables window : période de temps permettant d observer l ensemble des caractéristiques des clients (données internes et externes) Operational lag ou Offset : période de latence durant laquelle on ne dispose pas de toutes les données concernant les clients du au processus de vérification et de stockage des informations dans le datawarehouse de la banque Performance window ou Target window : période de temps durant laquelle on observe ou non le départ d un client pour la concurrence. Sachant que votre responsable veut faire usage des données les plus récentes, vous décidez de choisir comme date de référence le 31 mai 2003, afin d avoir les trois périodes suivantes : Observational window : janvier à mai 2003 Operational lag : juin 2003 Target window : juillet 2003. En vue de construire le modèle, vous décidez de créer un datamart (ou magasin de données) spécifique à votre objectif en réalisant la fusion de plusieurs fichiers fournis par le département informatique préalablement sollicité par vos soins. Il s agit des fichiers Scores, Accounts, Leasing, Callcenter, et Customer. 6. Compiler le programme, puis vérifier que le contenu des tables nouvellement créées est en accord avec les tables suivantes : Scores Data Set : Dans le cadre du fichier Scores pour lequel vous disposez de toutes les informations, vous souhaitez créer une table nommée DataMart1 contenant les informations suivantes : segment client pour le mois d avril 2003 (LastValueSegment), segment client pour le mois de mai 2003 (ActualValueSegment), segment client pour le mois de juillet 2003 (FutureValueSegment), et création d une variable binaire permettant d identifier les clients partis à la concurrence au cours du mois de juiller 2003 (Cancel). 1. Créer une fenêtre EDITOR nommée Scores-Datamart1. 2. Dans la fenêtre nouvellement créée, écrire les lignes de commande suivantes : dm clear log dm clear output options linesize=120 nodate nonumber 3. Créer à la suite du code la librairie DM via l instruction libname (adapter si besoin la lettre du disque!) : libname DM C :\Datamining 4. Créer la macro-variable snapdate comme suit : %let snapdate = 31MAY2003 d 5. A la suite du programme, écrire les lignes de commande suivantes : data Last (rename = (ValueSegment = LastValueSegment)) Actual (rename = (ValueSegment = ActualValueSegment)) Future (rename = (ValueSegment = FutureValueSegment)) set DM.Scores DateEnd=intnx( month,date,-1, END ) format DateEnd date9. if DateEnd = intnx( month,&snapdate,-1, END ) then output Last else if DateEnd = intnx( month,&snapdate,0, END ) then output Actual else if DateEnd = intnx( month,&snapdate,+2, END ) then output Future drop Date DateEnd ScoreID En quoi consiste l instruction «DateEnd=intnx( month,date,-1, END )»? Expliquer en quoi consiste la séquence de if...then...else? 3 Tab. 3 : Table Last Tab. 4 : Table Actual Tab. 4 : Table Future 7. Vous souhaitez maintenant fusionner ces trois tables permettant ainsi d avoir une observation (i.e. une ligne) par client. Ecrire alors à la suite du programme les lignes de commande suivantes : proc sort data=last proc sort data=actual proc sort data=future Quel est l intérêt de la procédure SORT? 8. Ecrire l étape DATA suivante : data DM.DataMart1 LastValueSegment format = $10. label = Last Value Segment ActualValueSegment format = $10. label = Actual Value Segment FutureValueSegment format = $10. label = Future Value Segment Cancel format = 8. label = Customer canceled merge Last Actual Future (IN = InFuture) if InFuture Cancel = (FutureValueSegment = 8. LOST ) 4

Expliquer la ligne de commande «Cancel = (FutureValueSegment = 8. LOST )». Compiler le programme, puis visualiser la table DataMart1. Vérifier le succès de l opération. 9. Afin d obtenir les caractéristiques de la table ainsi que le nombre d observations et le nombre de données manquantes, écrire les deux procédure suivantes : proc contents data=dm.datamart1 title1 Table Scores title3 Caractéristiques de la table DataMart1 proc means data=dm.datamart1 n nmiss title3 Nombre d observations et nombre de données manquantes pour la table DataMart1 Compiler alors le programme, puis commenter succinctement les caractéristiques de la table DataMart1. Accounts Data Set : Vous décidez maintenant de travailler sur la table Accounts contenant des informations sur les comptes clients. Dans ce but, vous souhaitez créer une table DataMart2 contenant les informations suivantes : nombre de compte de chacun des clients (NrAccounts), solde total des comptes (Balance), moyenne des taux d intérêts (SavingAccount), moyenne des taux d emprunts (Loan), et la moyenne des taux de fonds disponibles immédiatement (Funds). 1. Placer le fichier Accounts dans le répertoire Datamining. 2. Créer une fenêtre EDITOR nommée Accounts-Datamart2. 3. Dans la fenêtre ainsi créée, écrire les lignes de commande suivantes : dm clear log dm clear output options linesize=120 nodate nonumber 4. Créer à la suite du code la librairie DM via l instruction libname (adapter si besoin la lettre du disque!) : libname DM C :\Datamining 5. Compiler le programme, puis vérifier que la table SAS admet la structure suivante : 6. Dans le but de dénombrer les comptes de chacun des clients, écrire les lignes de commande suivantes : proc sort data=dm.accounts ( keep = CustID AccountID ) out=tmp by CustID AccountID data tmp set tmp by CustID AccountID if last.accountid proc freq data=tmp noprint tables CustID / out=nraccounts (rename = (count = NrAccounts) drop = percent) proc datasets lib=work delete tmp quit Expliquer en quoi consiste la ligne de commande «if last.accountid». (Aide : comparer les résultats obtenus avec et sans cette ligne). 7. Compiler le programme, puis visualiser la table NrAccounts. Vérifier alors le succès de l opération. 8. Vous souhaitez maintenant extraire le solde des comptes de chaque client. Ecrire les lignes de commande suivantes à la suite de votre programme : proc sort data=dm.accounts (keep = CustID Balance) out=tmp data Balance set tmp if last.custid proc datasets lib=work delete tmp quit Compiler alors le programme, puis vérifier le succès de l opération en visualisant la table Balance. 9. Vous souhaitez synthétiser pour chaque client les trois types de taux en calculant la moyenne des taux par type de produit. Ecrire alors les lignes de commande suivantes : proc means data=dm.accounts (keep = CustID Interest Type) nway noprint class CustID Type var Interest output out = Interest (keep = CustID Type MeanInterest) Mean(Interest)=MeanInterest data Interest set Interest Type=compress(Type) proc transpose data=interest out=interest (drop = NAME LABEL ) var MeanInterest ID Type Préciser l intérêt de faire usage de la procédure TRANSPOSE. Compiler le programme, puis s assurer du succès de l opération. Tab. 6 : Table Accounts 5 6

10. Vous décidez maintenant de fusionner les tables ainsi créées. Dans ce but, écrire les lignes de commande suivantes : proc sort data=nraccounts proc sort data=balance proc sort data=interest data DM.DataMart2 NrAccounts format = 8. label = Number of Accounts Balance format = 8.2 label = Balance Loan format = 8.2 label = Loan Rate Mean SavingAccount format = 8.2 label = Savings Account Rate Mean Funds format = 8.2 label = Funds Rate Mean merge NrAccounts Balance Interest proc datasets lib=work delete NrAccounts Balance Interest quit Préciser en quoi consiste la procédure DATASETS. Compiler ce programme, puis vérifier que la table DataMart2 est cohérente avec la suivante : 11. Dans le but d obtenir des informations sur la table DataMart2, écrire à la suite du programme les procédures suivantes : proc contents data=dm.datamart2 title1 Accounts Data Set title3 Caractéristiques de la table DataMart2 proc means data=dm.datamart2 min mean median max cv n nmiss title3 Statistics for Balance, Loan, SavingAccount and Funds var Balance Loan SavingAccount Funds proc freq data=dm.datamart2 title3 Frequency for NrAccounts table NrAccounts Déterminer le nombre de clients présents dans cette table. Observez-vous des données manquantes? si oui, pour quelle(s) variable(s)? Commenter succintement le résultat de la procédure FREQ. Leasing Data Set : Vous décidez de travailler maintenant sur la table Leasing contenant des informations concernant les prêts accordés aux clients. En particulier, vous disposez des informations suivantes : date du début du prêt (StartDate), date de fin du prêt (EndDate), montant du prêt (Value), et taux annuel de remboursement (AnnualRate). 1. Placer le fichier Leasing dans le répertoire Datamining. 2. Créer une fenêtre EDITOR nommée Leasing-Datamart3. 3. Dans la fenêtre ainsi créée, écrire les lignes de commande suivantes : dm clear log dm clear output options linesize=120 nodate nonumber 4. Créer à la suite du code la librairie DM via l instruction libname (adapter si besoin la lettre du disque!) : libname DM C :\Datamining 5. Compiler le programme, puis vérifier que la table SAS admet la structure suivante : Tab. 7 : Table DataMart2 Préciser ce que représente les points dans la table. Tab. 8 : Table Leasing 7 8

6. Dans le but d extraire l information concernant la durée du prêt et le nombre de mois restant à payer, écrire l étape DATA suivante : data tmp (drop = StartDate EndDate) set DM.Leasing Duration=intck( month,datepart(startdate),datepart(enddate)) Rest=max(intck( month, 31MAY2003 d,datepart(enddate)),0) if Rest>0 then LeasingYN=1 else LeasingYN=0 Compiler le programme, puis vérifier le succès de l opération. Note : la fonction Datepart permet d extraire la date d une variable temporelle admettant un codage du type Date :Heure s exprimant sous la forme 13SEP1999 :00 :00 :00. Quant à la fonction intck, elle permet de calculer un écart entre deux dates exprimé en nombre de jours, de mois ou d années. 7. Cela étant, vous avez observé que des clients peuvent avoir plusieurs prêts en cours. Aussi, vous décidez de créer de nouvelles variables permettant de synthétiser les caractéristiques de prêt d un même client. Vous décidez donc de créer les variables : montant total des prêts (LeasingValue), taux moyen annuel (LeasingAnnualRate), durée moyenne des prêts (DurationMean), nombre de mois maximum restant à rembourser (RestMax), et emprunt en cours (HasLeasing). Ecrire alors les lignes de commande suivantes à la suite de votre programme : proc means data=tmp nway noprint class CustID var Value AnnualRate Duration Rest LeasingYN output out=tmp (drop = TYPE rename = ( FREQ = NrLeasing)) sum(value) = LeasingValue mean(annualrate) = LeasingAnnualRate mean(duration) = DurationMean max(rest) = RestMax max(leasingyn) = HasLeasing Compiler le programme, puis s assurer du succès de l opération en visualisant la table tmp. Expliquer concrètement le rôle de l option nway de la procédure MEANS (Aide : compiler avec et sans cette option, puis comparer la première ligne des deux tables tmp ainsi créées). 8. Dans le but de créer le DataMart3, écrire les lignes de commande suivantes : data DM.DataMart3 HasLeasing format = 8. label = Customer has any leasing contract NrLeasing format = 8. label = Number of leasing contracts LeasingValue format = 8.2 label = Total leasing value LeasingAnnualRate format = 8.4 label = Mean annual leasingrate RestMax format = 8. label = Maximum leasing rest (months) DurationMean format = 8.2 label = Mean leasing duration set tmp proc datasets lib=work delete tmp quit Compiler, puis vérifier le succès de l opération. 9. Enfin, pour terminer vous décidez d éditer un certain nombre de caractéristiques de la table ainsi que des variables la constituant. Dans ce but, écrire les trois étapes suivantes : proc contents data=dm.datamart3 title1 Leasing Data Set title3 Caractéristiques de la table DataMart3 proc means data=dm.datamart3 min mean median max cv n nmiss title3 Statistics for LeasingValue, LeasingAnnualRate, RestMax and DurationMean var LeasingValue LeasingAnnualRate RestMax DurationMean proc freq data=dm.datamart3 title3 Frequency for HasLeasing and NrLeasing table HasLeasing NrLeasing Compiler ces procédures, puis indiquer : le nombre de clients présents dans la table, la présence ou l absence de données atypiques ou «outliers», la présence ou l absence de données manquantes pour les variables quantitatives, la fréquence de clients ayant un prêt en cours, et la répartition du nombre de prêts. CallCenter Data Set : Vous décidez maintenant de travailler sur la table CallCenter contenant des informations concernant les appels passés par les clients au centre d appels. N ayant aucune information sur ce fichier, vous décidez d en réaliser une analyse rapide. 1. Placer le fichier CallCenter dans le répertoire Datamining. 2. Créer une fenêtre EDITOR nommée CallCenter-Datamart4. 3. Dans la fenêtre ainsi créée, écrire les lignes de commande suivantes : dm clear log dm clear output options linesize=120 nodate nonumber 4. Créer à la suite du code la librairie DM via l instruction libname (adapter si besoin la lettre du disque!) : libname DM C :\Datamining 5. Afin d obtenir des informations sur la table, écrire les lignes de commande suivantes : proc contents data=dm.callcenter title1 CallCenter Data Set title3 Caractéristiques de la table CallCenter Compiler le programme, puis visualiser la sortie. Préciser alors le nombre d observations et le nombre de variables. Préciser pour chacune des variables son type (qualitatif, quantitatif, chaîne de caractères, ou date). 6. Visualiser la table CallCenter, puis vérifier qu elle est en accord avec la table de la figure 9 (cf. page 11). 7. Vous souhaitez avoir des informations concernant la variable Category comme ses modalités ainsi que sa distribution. Dans ce but écrire les lignes de commande suivantes : proc freq data=dm.callcenter title3 Distribution de la variable Category table Category Compiler cette procédure, puis en déduire les modalités ainsi que la distribution de la variable Category. Commenter succinctement ce résultat. 8. Peut-on avoir, dans le cas présent, plusieurs appels enregistrés passés par un même client? Justifier votre réponse à l aide d un exemple. 9 10

proc datasets lib=work delete tmp1 tmp2 quit Compiler le programme, puis s assurer du succès de l opération. En quoi consiste la ligne de commande «if Complaints=. then Complaints=0»? 13. Dans le but de connaître les caractéristiques de la table DataMart4, écrire les lignes de commande suivante : proc contents data=dm.datamart4 title1 CallCenter Data Set title3 Caractéristiques de la table DataMart4 proc freq data=dm.datamart4 title3 Frequency for Calls and Complaints table Calls Complaints Compiler, puis commenter succinctement la distribution des variables Calls et Complaints. 9. Créer la macro-variable snapdate comme suit : %let snapdate = 31MAY2003 d Tab. 9 : Table CallCenter 10. Vous souhaitez comptabiliser le nombre d appels passés par client. Ecrire les lignes de commande suivantes : proc freq data=dm.callcenter noprint table CustID / out = tmp1 (drop = Percent rename = (Count = Calls)) where datepart(date) &snapdate Compiler le programme, puis s assurer du succès de l opération. 11. Vous souhaitez maintenant comptabiliser le nombre de réclamations par client qui sont intervenues avant la date de référence. Ecrire à la suite de votre programme les lignes de commande suivantes : proc freq data=dm.callcenter noprint table CustID / out = tmp2 (drop = Percent rename = (Count = Complaints)) where datepart(date)<&snapdate and Category= Complaint Compiler le programme, puis s assurer du succès de l opération. 12. Vous souhaitez enfin réaliser la fusion des deux tables nouvellement créées afin de constituer le DataMart4. Ecrire les lignes de commande suivantes : proc sort data=tmp1 proc sort data=tmp2 data DM.DataMart4 Calls format = 8. label = Number of call center contacts Complaints format = 8. label = Number of complaints merge tmp1 tmp2 if Complaints=. then Complaints=0 11 Customer Data Set : Dans le but de compléter l information interne détenue par la banque sur ses clients, vous décidez de faire usage de la table Customer contenant des informations personnelles concernant l ensemble des clients de la banque. Vous avez en particulier les informations suivantes : année de naissance (Birthdate), titre (Title), branche d activité (Branch), date d entrée à la banque (CustomerSince), sexe (Gender), et statut matrimonial (MaritalStatus). 1. Copier le fichier Customer dans le répertoire Datamining. 2. Créer une fenêtre EDITOR nommée Customer-Datamart5. 3. Dans la fenêtre ainsi créée, écrire les lignes de commande suivantes : dm clear log dm clear output options linesize=120 nodate nonumber 4. Créer à la suite du code la librairie DM via l instruction libname (adapter si besoin la lettre du disque!) : libname DM C :\Datamining Tab. 10 : sortie CONTENTS de la table Customer 12

5. Vous souhaitez avoir des informations sur la table Customer, avec notamment le nombre de clients sur lesquels on connaît des informations externes. A cette fin, écrire les lignes de commande suivantes : proc contents data=dm.customer title1 Customer Data Set title3 Caractéristiques de la table Customer Compiler le programme, puis vérifier que vous obtenez une sortie identique à celle de la figure 10 (cf. page 12). En déduire le type de chacune des variables et le nombre de clients présents dans la table. 6. Vous souhaitez dans le cadre du DataMart5 créer les variables suivantes : âge du client (Age), possession d un titre (HasTitle) et ancienneté du client à la banque en mois (CustomerMonths). Dans ce but, écrire les lignes de commande suivantes : data DM.DataMart5 Birthdate format = date9. label = Date of Birth Age format = 8. label = Age (years) Gender format = $6. label = Gender MaritalStatus format = $10. label = Marital Status Title format = $10. label = Academic Title HasTitle format = 8. label = Has Title? (0/1) Branch format = $5. label = Branch Name CustomerSince format = date9. label = Customer Start Date CustomerMonths format = 8. label = Customer Duration (months) set DM.Customer Age = round(yrdif(birthdate,&snapdate, ACTUAL )) HasTitle = (Title ne ) CustomerMonths=intck( month,customersince,&snapdate) Compiler le programme, puis vérifier le succès de l opération. En vous aidant éventuellement de l aide en ligne de SAS, expliquer en quoi consiste l instruction «round(yrdif(birthdate,&snapdate, ACTUAL ))». 7. Vous souhaitez maintenant contrôler les caractéristiques physiques de la table DataMart5. Dans ce but, écrire les lignes de commande suivantes : proc contents data=dm.datamart5 title1 Customer Data Set title3 Caractéristiques de la table DataMart5 Compiler le programme, puis vérifier que le type des variables est cohérent avec la définition imposée dans votre programme. 8. Dans le but d obtenir quelques caractéristiques des variables pertinentes, écrire les deux procédures suivantes à la suite de votre programme : proc means data=dm.datamart5 min max Q1 mean median Q3 CV nmiss title3 Statistics var Age CustomerMonths proc freq data=dm.datamart5 title3 Frequency for HasTitle and Branch table Gender MaritalStatus HasTitle Branch Compiler, puis analyser succinctement les caractéristiques de chacune des variables. 13 Creation of Business Data Set L ensemble des informations pertinentes (dans le cadre de votre objectif) concernant vos clients étant contenues dans plusieurs tables, il convient maintenant de les fusionner afin de regrouper ces informations dans une table unique que vous avez décidé d appeler BusinessDataset. 1. Créer une fenêtre EDITOR nommée DataMartFinal. 2. Dans la fenêtre ainsi créée, écrire les lignes de commande suivantes : dm clear log dm clear output options linesize=120 nodate nonumber 3. Créer à la suite du code la librairie DM via l instruction libname (adapter si besoin la lettre du disque!) : libname DM C :\Datamining Compiler ce programme. 4. Pour réaliser la fusion des cinq «datamarts», vous devez au préalable les trier selon la variable CustID. Aussi, vous décidez de créer une macro afin de faciliter le travail : %macro sort(k) proc sort data=dm.datamart&k %mend sort %sort(1) %sort(2) %sort(3) %sort(4) %sort(5) Compiler alors ce programme. 5. Dans le but de réaliser la fusion effective des cinq «datamarts», écrire les lignes de commande suivantes : data DM.BusinessDataset /*Scores DataMart1*/ LastValueSegment format = $10. label = Last Value Segment ActualValueSegment format = $10. label = Actual Value Segment FutureValueSegment format = $10. label = Future Value Segment Cancel format = 8. label = Customer canceled /*Accounts DataMart2*/ NrAccounts format = 8. label = Number of Accounts Balance format = 8.2 label = Balance Loan format = 8.2 label = Loan Rate Sum SavingAccount format = 8.2 label = Savings Account Rate Sum Funds format = 8.2 label = Funds Rate Sum /*Leasing DataMart3*/ HasLeasing format = 8. label = Customer has any leasing contract /*New Variable*/ NrLeasing format = 8. label = Number of leasing contracts LeasingValue format = 8.2 label = Total leasing value LeasingAnnualRate format = 8.4 label = Total annual leasingrate RestMax format = 8. label = Maximum leasing rest (months) DurationMean format = 8.2 label = Mean leasing duration /*Call Center DataMart4*/ HasCallCenter format = 8. label = Customer has any call center contact /*New Variable*/ Calls format = 8. label = Number of call center contacts Complaints format = 8. label = Number of complaints ComplaintsPct format = percent8.2 label = Percentage of complaints /*New Variable*/ 14

/*Customer DataMart5*/ Birthdate format = date9. label = Date of Birth Age format = 8. label = Age (years) Gender format = $6. label = Gender MaritalStatus format = $10. label = Marital Status Title format = $10. label = Academic Title HasTitle format = 8. label = Has Title? (0/1) Branch format = $5. label = Branch Name CustomerSince format = date9. label = Customer Start Date CustomerMonths format = 8. label = Customer Duration (months) merge if InCustomer DM.DataMart1 DM.DataMart2 DM.DataMart3 (IN = InLeasing) DM.DataMart4 (IN = InCallCenter) DM.DataMart5 (IN = InCustomer) 8. Vous décidez de supprimer les clients dont la variable Cancel contient une donnée manquante. Ecrire les lignes de commande suivantes : data DM.BusinessDataset set DM.BusinessDataset if Cancel=. then delete proc freq data=dm.businessdataset title1 Business Dataset title3 Distribution de la variable Cancel - Churn table Cancel Compiler, puis contrôler le succès de l opération. Vous disposez maintenant d un fichier de travail sous forme d une table SAS nommé BusinessDataset qui devrait ressembler à la table suivante : *Création des nouvelles variables /*Leasing*/ HasLeasing = InLeasing /*CallCenter*/ If Calls>0 then ComplaintsPct=Complaints/Calls HasCallCenter = InCallCenter Compiler le programme, puis vérifier le succès de l opération via une visualisation de la table. 6. Après visualisation de la table BusinessDataset, vous notez qu un certain nombre de données manquantes traduisent en fait la valeur numérique 0. Vous décidez alors de procéder au remplacement en insérant dans l étape DATA, après la phase de création des nouvelles variables, les lignes de commande suivantes : if Loan=. then Loan=0 if SavingAccount=. then SavingAccount=0 if Funds=. then Funds=0 if NrLeasing=. then NrLeasing=0 if LeasingValue=. then LeasingValue=0 if RestMax=. then RestMax=0 if DurationMean=. then DurationMean=0 if Calls=. then Calls=0 if Complaints=. then Complaints=0 if ComplaintsPct=. then ComplaintsPct=0 Compiler le de nouveau le programme, puis contrôler le succès de l opération. 7. Vous désirez connaître la distribution de la variable Cancel qui rend compte du «churn» dans votre «Business Dataset». Ecrire alors les lignes de commande suivantes : proc freq data=dm.businessdataset title1 Business Dataset title3 Distribution de la variable Cancel - Churn table Cancel Compiler, puis commenter le résultat de la procédure FREQ. Observe-t-on des données manquantes pour cette variable? Tab. 11 : table BusinessDataset Conclusion : vous disposez maintenant d un business data set opérationnel sur lequel il reste à opérer des modifications (transformation et création de variables) avant de construire le modèle d attrition. 15 16