Rlog1pdf

13
Universit´ e de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donn´ ees 1 Votre banque va t-elle vous prˆ eter de l’argent ? Sommaire 1.1 Description .............................................. 1 1.2 Enonc´ e ................................................. 2 1.2.1 Pr´ eparation des donn´ ees ....................................... 2 1.2.2 Valeurs manquantes ......................................... 3 1.2.3 Mod` ele de r´ egression logistique ................................... 5 1.2.4 ecision : oui ou non ......................................... 7 1.2.5 Validation par bootstrap ....................................... 10 1.2.6 n-Validation crois´ ee ......................................... 11 1.2.7 Phase finale .............................................. 13 Table des figures 1 Courbe de Roc ................................................. 8 2 Courbe de Lift ................................................. 9 3 Statistiques estim´ ees par bootstrap ...................................... 11 Liste des tableaux 1 Description des colonnes de la table hmeq .................................. 2 3 Premi` eres lignes de la table hemq ....................................... 2 5 Descriptif de la table .............................................. 3 7 Coefficients estim´ es ............................................... 6 9 esultats de la r´ egression logistique ...................................... 6 11 Rapports de cote ................................................ 7 13 Scoring de la table ............................................... 7 15 Matrice de confusion pour diff´ erents niveau de probabilit´ e ......................... 8 17 Table de lift ................................................... 10 19 Tableau de contingence crois´ ee ........................................ 12 1.1 Description Une banque, dans le cadre de son service de prˆ ets, d´ esire pouvoir pr´ edire la non solvabilit´ e d’un client demandant prˆ et en fonction des covariables explicatives. Pour ceci elle utilise sa base de donn´ ees client` ele constitu´ ee de l’historique de 5960 clients ayant contract´ e au moins un prˆ et. Le fichier de donn´ ees est disponible aux formats texte http://www.math.unicaen.fr/~kauffman/data/hmeq.txt sas7bdat http://www.math.unicaen.fr/~kauffman/data/hmeq.sas7bdat la table sans aucun traitement. sas7bdat http://www.math.unicaen.fr/~kauffman/data/hmeq1.sas7bdat la table avec les donn´ ees manquantes compl´ et´ ees. Cette base de donn´ ees, sert d’exemple pour SAS Entreprise Miner. Dans cet exercice nous allons utiliser SAS (BASE,STAT,GRAPH) uniquement. http://www.math.unicaen.fr/~kauffman/cours 1 francois.kauff[email protected]

description

export

Transcript of Rlog1pdf

Page 1: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

1 Votre banque va t-elle vous preter de l’argent ?

Sommaire

1.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Enonce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2.1 Preparation des donnees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2.2 Valeurs manquantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.3 Modele de regression logistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.4 Decision : oui ou non . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2.5 Validation par bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.2.6 n-Validation croisee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.2.7 Phase finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Table des figures

1 Courbe de Roc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Courbe de Lift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Statistiques estimees par bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Liste des tableaux

1 Description des colonnes de la table hmeq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Premieres lignes de la table hemq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Descriptif de la table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Coefficients estimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Resultats de la regression logistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 Rapports de cote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713 Scoring de la table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715 Matrice de confusion pour differents niveau de probabilite . . . . . . . . . . . . . . . . . . . . . . . . . 817 Table de lift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019 Tableau de contingence croisee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.1 Description

Une banque, dans le cadre de son service de prets, desire pouvoir predire la non solvabilite d’un client demandantpret en fonction des covariables explicatives. Pour ceci elle utilise sa base de donnees clientele constituee de l’historiquede 5960 clients ayant contracte au moins un pret. Le fichier de donnees est disponible aux formats

texte http://www.math.unicaen.fr/~kauffman/data/hmeq.txt

sas7bdat http://www.math.unicaen.fr/~kauffman/data/hmeq.sas7bdat la table sans aucun traitement.

sas7bdat http://www.math.unicaen.fr/~kauffman/data/hmeq1.sas7bdat la table avec les donnees manquantescompletees.

Cette base de donnees, sert d’exemple pour SAS Entreprise Miner. Dans cet exercice nous allons utiliser SAS(BASE,STAT,GRAPH) uniquement.

http://www.math.unicaen.fr/~kauffman/cours 1 [email protected]

Page 2: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

Bad qualitatif la personne a rembourse son credit sans incident(Bad=0) avec incidents (Bad=1)Loan quantitatif montant de la demande de pretMortdue quantitatif montant du sur l’hypothequeValue quantitatif valeur de la proprieteReason qualitatif motif du pret : Consolidation financiere Debtcon ,amelioration habitat Homelmp.Job qualitatif profession Mgr,Office, Other, ProfXexe, Sales, Self, manque

Yoj quantitatif nombre d’annees dans le travail actuelDerog quantitatif nombre de demande de report d’echeances de pretDeling quantitatif nombre de litigesClage quantitatif Age du plus ancien credit en moisNinq quantitatif nombre de demandes recentes de creditClno quantitatif nombre de credits dans la banqueDebtinc quantitatif Ratio dette sur revenu

Table 1 – Description des colonnes de la table hmeq

Obs bad loan mortdue value reason job yoj derog delinq clage ninq clno debtinc fold

1 1 1100 25860 39025 HomeImp Other 10.5 0 0 94.37 1 9 . 3

2 1 1300 70053 68400 HomeImp Other 7.0 0 2 121.83 0 14 . 4

3 1 1500 13500 16700 HomeImp Other 4.0 0 0 149.47 1 10 . 3

4 1 1500 . . . . . . . . . 3

5 0 1700 97800 112000 HomeImp Office 3.0 0 0 93.33 0 14 . 3

Table 3 – Premieres lignes de la table hemq

References

[1] Robert C. Blattberg, Byung-Do Kim, and Scott A. Neslin. Database marketing, Analysing and Managing Custu-mers. Springer, 2008. 3

[2] Andrew Gelman and Jennifer Hill. Data Analysis using regression and Multilevel/Hierarchical models. Cambridge,2007. 1.2.2

1.2 Enonce

1.2.1 Preparation des donnees

1. Dans cette question, on initialise la session SAS.

(a) Creer un repertoire hmeq dans le quel on travaillera. Puis un sous repertoire lib.

(b) Tele-chargez le fichier hmeq.sas7bdat et le mettre dans le repertoire lib.

(c) Definir comme repertoire associe a votre libraire par defaut user , le repertoire lib.

(d) Creer la table nommee variables contenant le descriptif des variables a l’aide de la procedure contents.

(e) Ajouter a la table hmeq une colonne validation a l’aide de l’instruction validation=rand(’table’,.6,.2,.2).Cette instruction permet de simuler un echantillon independant d’une va discrete prenant 3 valeurs {1, 2, 3}dont on peut preciser la loi. La base de donnees sera composee de trois parties disjointes Apprentissage(1)60%, Test(2) 20%, Validation(3) 20%.

http://www.math.unicaen.fr/~kauffman/cours 2 [email protected]

Page 3: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

Obs Member Num Variable Type Len Pos Format Label

1 USER.HMEQ 2 bad Num 8 8 Default or seriously delinquent

2 USER.HMEQ 11 clage Num 8 64 Age of oldest trade line in months

3 USER.HMEQ 13 clno Num 8 80 Number of trade (credit) lines

4 USER.HMEQ 14 debtinc Num 8 88 Debt to income ratio

5 USER.HMEQ 10 delinq Num 8 56 Number of delinquent trade lines

6 USER.HMEQ 9 derog Num 8 48 Number of major derogatory reports

7 USER.HMEQ 7 job Alph 6 103 Prof/exec sales mngr office self other

8 USER.HMEQ 3 loan Num 8 16 Amount of current loan request

9 USER.HMEQ 4 mortdue Num 8 24 Amount due on existing mortgage

10 USER.HMEQ 12 ninq Num 8 72 Number of recent credit inquiries

11 USER.HMEQ 6 reason Alph 7 96 Home improvement or debt consolidation

12 USER.HMEQ 1 validation Num 8 0 VALID.

13 USER.HMEQ 5 value Num 8 32 Value of current property

14 USER.HMEQ 8 yoj Num 8 40 Years on current job

Table 5 – Descriptif de la table

2. Dans cette question, on veut etudier si certaines variables explicatives ont un lien avec la variable bad. Dansun premier temps, on fait une analyse graphique a l’aide du module INSIGHT de SAS Solution-> Analyse->

Analyse interactive des donnees. Construire des boites a moustaches des variables quantitatives en fonctionde la variable bad. Explicitez les sens de variation. Faire de meme avec les variables explicatives qualitatives,on obtient des graphiques mosaique (analyse factorielle des correspondances simples). Enoncez les methodesstatistiques qui pourraient permettre de quantifier cette approche empirique.

3. La table (ou le catalogue) dictionary.columns contient la description de toutes les tables de SAS, si j’aibien compris ! Les instructions suivantes permettent de creer une macro variable nommee names de valeur laconcatenation des reponses d’une requete SQL.

proc sql;

select name into :names separated by ' ' from dictionary.columns

where

upper(libname)='USER' and

upper(memname)='HMEQ';

%put &names;

quit;

(a) Creer la macro variable nbvars contenant le nombre de colonne de la table HMEQ.

(b) La syntaxe into :var1-:var&nbvars, permet de creer les macros variables var1, var2, ..., var&nbvars.Construire alors nbvars macros variables contenant le nom des colonnes.

(c) De meme calculer le type d’une variable de la table HMEQ.

1.2.2 Valeurs manquantes

Dans cette question, on traite le cas des valeurs manquantes. Sur ce probleme difficile, on peut consulter le chapitreMissing data imputation du livre d’Andrew Gelman [2]. Ce chapitre est tres abordable et est illustre avec R. DansSAS des methodes de remplacement de valeurs manquantes sont disponibles dont les methodes d’imputations multiplesavec la proc mi ou Entreprise Miner.

Ici nous allons utiliser deux methodes : la methode du remplacement des valeurs manquantes d’une variable parune seule valeur (la moyenne ou le mode) en anglais ”Single Imputation”, conjointement avec l’ajout d’une variablebinaire pour chacune des variables explicatives indiquant si la valeur est manquante ou pas en anglais ”Missing variabledummies”.

Plusieurs solutions sont possibles dans SAS pour calculer des valeurs moyennes, des modes ou des valeurs fre-quentes par exemple la proc univariate. On fait le choix de n’utiliser que la proc sql couplee avec de la macroprogrammation, pour calculer les moyennes ou des modes puis les remplacer les valeurs manquantes par ces valeurschoisies.

1. Definir les macros type defaut comme etant des macros variables globales. Elles peuvent etre definies et modi-fiees a l’interieur de macros fonctions.

% global type defaut;

http://www.math.unicaen.fr/~kauffman/cours 3 [email protected]

Page 4: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

2. Construire une requete SQL permettant de calculer la moyenne d’une variable quantitative. Puis construireun macro programme MACRO moyenne(nom,table=_LAST_); permettant de creer une macro variable nommeedefaut dont la valeur sera la moyenne de la variable quantitative nom de la table nommee table.

proc sql;

% MACRO MOYENNE(nom,table=_LAST_);

select mean(&nom) into :defaut from &table;

% let defaut=&defaut;

% MEND;

% MOYENNE(loan,table=hmeq)

% put &defaut;

quit;

3. Construire une requete ou plusieurs requetes SQL permettant d’obtenir la modalite la plus frequente d’une variablequalitative. Puis construire un macro programme MACRO mode(nom,table=_LAST_); permettant de creer unemacro variable nommee defaut dont la valeur sera le mode de la variable qualitative nom de la table nommeetable.

proc sql;

% MACRO mode(nom,table=_LAST_);

select &nom into :defaut from

( select &nom,count(*) as freq

from &table

where &nom ^= ''

group by &nom

) having freq=max(freq);

% let defaut="&defaut";

% MEND;

% MODE(reason,table=hmeq)

% put &defaut;

quit;

4. Que fait la macro suivante ?

%MACRO DEFAUT(var,table=_LAST_,defaut= );

%let type=na;

%let m_existe=;

%if(&defaut= ) %THEN %DO;

select type into :type from dictionary.columns

where

upper(libname)='USER' and

upper(memname)=upper("&table") and

upper(name)=upper("&var");

select name into :m_existe from dictionary.columns

where

upper(libname)='USER' and

upper(memname)=upper("&table") and

upper(name)=upper("m_&var");

%IF &TYPE=num %THEN %MOYENNE(&var,table=&table);

%ELSE %MODE(&var,table=&table);

%IF(&m_existe= ) %THEN %DO;

alter table hmeq add m_&var num label="&var valeur manquante";

update hmeq set m_&var=case when &var IS MISSING then 1 else 0 end;

%END;

%END;

update hmeq set &var=&defaut where m_&var=1;

%put DEFAUT--> var="&var" m_existe=&m_existe type=&type defaut="&defaut";

%MEND;

/* essais */

proc sql;

%DEFAUT(loan,table=HMEQ);

%DEFAUT(yoj,table=HMEQ,defaut=14);

%DEFAUT(reason,table=HMEQ,defaut=na);

quit;

http://www.math.unicaen.fr/~kauffman/cours 4 [email protected]

Page 5: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

5. Redefinir les valeurs manquantes des variables explicatives en leur mode si elles sont sont qualitatives et en leurmoyenne si elles sont quantitatives, ainsi que les variables indicatrices des valeurs manquantes.

/* DECOUPE CHAINE TRES GROS PB AVEC QSCAN BUG?*/

%MACRO DECOUPE(chaine,table=_LAST_);

%let count=1;

%let y=%scan(&chaine,&count);

%do %while(&y ne );

%put DECOUPE=&count "&y";

%DEFAUT(&y,table=&table)

%let count=%eval(&count+1);

%let y=%scan(&chaine,&count);

%end;

%MEND;

quit;

proc sql;

%DECOUPE(&names,table=HMEQ) /* defaut pour na */

quit;

6. On traite maintenant les cas particuliers. A l’aide de la macro, definir la valeur manquante de debtinc a 50(expliquez ce choix de SAS). Redefinir les valeurs manquantes des variables job et reason a la chaıne "na".

proc sql;

%DEFAUT(debtinc,table=HMEQ,defaut=50) /* debtinc def=50 */

%DEFAUT(job,table=HMEQ,defaut="na") /* job na */

%DEFAUT(reason,table=HMEQ,defaut="na")/* reason na */

quit;

1.2.3 Modele de regression logistique

Dans cette question, on estime un modele de regression logistique (uniquement les effets principaux, pas de recherchede modele) grace a la base d’apprentissage ou de test validation =3.

proc logistic data=hmeq(where=(validation ^=3)) outmodel=modele;

class

reason(param=ref ref='na')

job(param=ref ref='na') ;

model bad(event='1')= loan--m_debtinc/

ctable pprob= (0.3, 0.5 to 0.8 by 0.1)

outroc=roc roceps=.01;

output out=logistic predprobs=(individual) l=lower95 u=upper95 /

alpha=.05;

run;

proc logistic inmodel=modele;

score data=hmeq out=valid(keep=validation loan bad P_1);

run;

Voici quelques resultats extraits des sorties de SAS.

http://www.math.unicaen.fr/~kauffman/cours 5 [email protected]

Page 6: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

Obs Variable ClassVal0 DF Estimate StdErr WaldChiSq ProbChiSq

1 Intercept 1 −7.2591 0.6283 133.4665 <.0001

2 loan 1 −0.00001 5.356E−6 3.5818 0.0584

3 mortdue 1 −3.23E−6 1.86E−6 3.0201 0.0822

4 value 1 4.063E−6 1.293E−6 9.8775 0.0017

5 reason DebtCon 1 −0.1410 0.3411 0.1708 0.6794

6 reason HomeImp 1 0.0152 0.3458 0.0019 0.9649

7 job Mgr 1 2.2215 0.4875 20.7679 <.0001

8 job Office 1 1.6262 0.4904 10.9959 0.0009

9 job Other 1 2.4060 0.4718 26.0071 <.0001

10 job ProfEx 1 2.1180 0.4838 19.1642 <.0001

11 job Sales 1 3.5798 0.5583 41.1087 <.0001

12 job Self 1 2.7540 0.5504 25.0373 <.0001

13 yoj 1 −0.0130 0.00763 2.9162 0.0877

14 derog 1 0.5226 0.0684 58.4341 <.0001

15 delinq 1 0.7998 0.0586 186.4341 <.0001

16 clage 1 −0.00631 0.000764 68.3873 <.0001

17 ninq 1 0.1713 0.0291 34.5669 <.0001

18 clno 1 −0.0110 0.00594 3.4171 0.0645

19 debtinc 1 0.0978 0.00989 97.7408 <.0001

20 m validation 0 0 . . .

21 m bad 0 0 . . .

22 m loan 0 0 . . .

23 m mortdue 1 0.4077 0.2330 3.0615 0.0802

24 m value 1 5.1512 0.5543 86.3793 <.0001

25 m reason 0 0 . . .

26 m job 0 0 . . .

27 m yoj 1 −0.5261 0.2171 5.8695 0.0154

28 m derog 1 −2.1311 0.3352 40.4140 <.0001

29 m delinq 1 −1.1000 0.4472 6.0489 0.0139

30 m clage 1 0.9641 0.3941 5.9858 0.0144

31 m ninq 1 −0.2792 0.4199 0.4422 0.5061

32 m clno 1 3.3480 0.7112 22.1637 <.0001

33 m debtinc 1 1.1599 0.1678 47.8013 <.0001

Table 7 – Coefficients estimes

Obs Label1 cValue1 nValue1 Label2 cValue2 nValue2

1 Percent Concordant 91.0 90.961861 Somers’ D 0.821 0.821208

2 Percent Discordant 8.8 8.841090 Gamma 0.823 0.822829

3 Percent Tied 0.2 0.197049 Tau−a 0.261 0.261396

4 Pairs 3643250 3643250 c 0.911 0.910604

Table 9 – Resultats de la regression logistique

http://www.math.unicaen.fr/~kauffman/cours 6 [email protected]

Page 7: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

Obs Effect OddsRatioEst LowerCL UpperCL

1 loan 1.000 1.000 1.000

2 mortdue 1.000 1.000 1.000

3 value 1.000 1.000 1.000

4 reason DebtCon vs na 0.869 0.445 1.695

5 reason HomeImp vs na 1.015 0.516 2.000

6 job Mgr vs na 9.221 3.547 23.971

7 job Office vs na 5.085 1.945 13.295

8 job Other vs na 11.089 4.399 27.956

9 job ProfEx vs na 8.315 3.221 21.462

10 job Sales vs na 35.865 12.007 107.132

11 job Self vs na 15.705 5.340 46.189

12 yoj 0.987 0.972 1.002

13 derog 1.686 1.475 1.928

14 delinq 2.225 1.984 2.496

15 clage 0.994 0.992 0.995

16 ninq 1.187 1.121 1.257

17 clno 0.989 0.978 1.001

18 debtinc 1.103 1.082 1.124

19 m mortdue 1.503 0.952 2.374

20 m value 172.646 58.261 511.608

21 m yoj 0.591 0.386 0.904

22 m derog 0.119 0.062 0.229

23 m delinq 0.333 0.139 0.800

24 m clage 2.623 1.211 5.677

25 m ninq 0.756 0.332 1.723

26 m clno 28.446 7.058 114.648

27 m debtinc 3.190 2.296 4.431

Table 11 – Rapports de cote

Obs validation bad loan P 1

1 Test 1 23300 1.00000

2 Apprentissage 1 2800 1.00000

3 Apprentissage 1 50000 1.00000

4 Test 1 40000 0.99999

5 Apprentissage 1 12000 0.99999

6 Validation 1 22000 0.99999

7 Apprentissage 1 6500 0.99998

8 Apprentissage 1 15000 0.99998

9 Validation 1 8000 0.99995

10 Apprentissage 1 37300 0.99994

Table 13 – Scoring de la table

1. Dans la table des coefficiens estimes quels sont les coefficients significativement non nuls, interpretez ces coeffi-cients.

2. Interpretez les rapports de cotes.

3. Decrire les resultats de la regression logistique dit d’association dans SAS.

1.2.4 Decision : oui ou non

Dans cette question, on s’interesse aux classiffieurs construits a partir de la regression logistique.

1. Decrire la table suivante.

http://www.math.unicaen.fr/~kauffman/cours 7 [email protected]

Page 8: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

Obs ProbLevel TrueEvents TrueNevents FalseEvents FalseNvents Correct Sensitivity Specificity FalsePos FalseNeg

1 0.300 720 3483 352 230 87.8 75.8 90.8 32.8 6.2

2 0.500 581 3660 175 369 88.6 61.2 95.4 23.1 9.2

3 0.600 511 3732 103 439 88.7 53.8 97.3 16.8 10.5

4 0.700 418 3783 52 532 87.8 44.0 98.6 11.1 12.3

5 0.800 326 3808 27 624 86.4 34.3 99.3 7.6 14.1

Table 15 – Matrice de confusion pour differents niveau de probabilite

2. Faire la representation graphique de la courbe ROC et interpretez.

symbol1 i=join v=none c=blue;

proc gplot data=roc;

plot _sensit_*_1mspec_=1;

title 'table roc';

run;

quit;

symbol1;

S e n s i t i v i t y

0 . 0

0 . 1

0 . 2

0 . 3

0 . 4

0 . 5

0 . 6

0 . 7

0 . 8

0 . 9

1 . 0

1 - S p e c i f i c i t y

0 . 0 0 . 1 0 . 2 0 . 3 0 . 4 0 . 5 0 . 6 0 . 7 0 . 8 0 . 9 1 . 0

Figure 1 – Courbe de Roc

3. Afin de choisir le seuil de probabilite au dela du quel, le classifieur va predire que le client est un mauvaispayeur, on ordonne les clients de la base d’apprentissage par ordre decroissant de leur score (probabilite d’etre

un mauvais payeur), puis on les partitionne en decile. Le premier decile µ(x) ∈ [0.71, 0.99] sont les 10% desclients ayant la plus forte proba d’etre un mauvais payeur. Le dixieme decile sont les 10% des clients ayant la

plus faible probabilite d’etre un mauvais payeur µ(x) ∈ [0., 0.008]. Pour chaque decile, on calcule le profit moyende la banque. La derniere etape consiste choisir le decile en fonction de criteres economiques ( par exemplemaximisation du profit). Si on choisit par exemple de ne conserver que les 70% ayant les meilleurs scores d’etre

un bon payeur, on ne proposera des prets aux clients ayant un score plus faible que .10 µ(x) < .10. Cet ensemblede clients sont ceux dont le risque moyen d’etre un mauvais payeur est moins de 10%.

http://www.math.unicaen.fr/~kauffman/cours 8 [email protected]

Page 9: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

Le lift d’un decile est simplement la probabilite moyenne d’etre un mauvais payeur pour ce decile, divise par laprobabilite moyenne d’etre un mauvais payeur de l’ensemble des clients. Un lift de 4 veut dire que l’on a 4 foisplus de chance d’etre un mauvais payeur que la moyenne.

On pourra consulter la partie ’Data Base marketing tool, statistical techniques’ du livre du Pr. Blattberg ”DataBase Marketing” [1].

p r e d i t o b s e r v e

l i f t

0

1

2

3

4

5

d e c i l e

0 1 2 3 4 5 6 7 8 9

Figure 2 – Courbe de Lift

Les criteres economiques vont etre parametrises pour un pret de la facon suivante

bon payeur le gain est de 100+ 0.05 ∗ loan, la banque gagne en moyenne 100 euros et 5% du montant du pret( c’est sans doute exagere).

mauvais payeur la perte est de 1000 + .20 ∗ loan, la banque perd en moyenne 1000 euros et perd en moyenne20% du montant du pret accorde.

(a) Calculer la table de lift sur la base d’apprentissage

(b) Trouver le decile a partir du quel les profits sont positifs.

(c) Calculer les gains moyens sur la base d’apprentissage et de test.

http://www.math.unicaen.fr/~kauffman/cours 9 [email protected]

Page 10: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

Obs decile loan prob min prob max prob pred prob obs lift pred lift obs profit

1 0 16579.49 0.71466 1.00000 0.89133 0.90449 4.39818 4.46468 −3745.92

2 1 16281.13 0.38500 0.71466 0.54356 0.54366 2.68214 2.68357 −1896.29

3 2 16820.79 0.16306 0.38479 0.25765 0.25000 1.27135 1.23403 −425.85

4 3 19800.00 0.09772 0.16229 0.12418 0.10704 0.61274 0.52837 338.73

5 4 18145.35 0.06302 0.09759 0.07846 0.09014 0.38716 0.44494 565.03

6 5 19799.72 0.04385 0.06295 0.05218 0.05618 0.25750 0.27731 774.28

7 6 20069.01 0.03100 0.04381 0.03692 0.02254 0.18217 0.11124 877.62

8 7 21115.17 0.01775 0.03095 0.02431 0.01966 0.11996 0.09706 1000.68

9 8 18419.15 0.00823 0.01775 0.01285 0.01408 0.06343 0.06952 947.62

10 9 18063.38 0.00047 0.00817 0.00397 0.01690 0.01960 0.08343 980.87

Table 17 – Table de lift

proc sort data=valid ;by descending P_1 ;run;

proc sql;

select count(*) into :nbtotal from valid where validation=1;

create view tmp as

select monotonic() as n,

floor((calculated n-1)/&nbtotal*10) as decile,

* from valid

where validation=1;

select mean(P_1), mean(bad) into :P1_mean,:BAD_MEAN from tmp;

create table lift as

select decile,

mean(loan) as loan,

min(P_1) as prob_min,max(P_1) as prob_max,

mean(P_1) as prob_pred,mean(bad) as prob_obs,

mean(P_1)/&P1_mean as lift_pred,

mean(bad)/&BAD_mean as lift_obs,

0 as profit

from tmp group by decile;

update lift set profit=-(loan*0.2+1000)*prob_pred+(100+loan*0.05)*(1-prob_pred);

select max(prob_min),count(*)*10,mean(profit),mean(loan)

into :prob_seuil,:pourcentage,:profit,:pret from lift where profit>0;

%put seuil=&prob_seuil pourcentage selectionne=&pourcentage,

profit moyen=&profit, pret moyen=&pret;

quit;

1.2.5 Validation par bootstrap

Une des methodes de validation d’un modele (pour les petits effectifs) est le methode de Boostrap. Dans cettequestion, on realise cette methode assez simplement avec SAS.

1. La procedure surveyselect permet de tirer aleatoirement des lignes d’une table. L’option metho=urs ”unres-tricted random sampling” permet de faire un tirage aleatoire avec remise de n=500 echantillons parmi ceux de latable hmeq et de repeter rep=20 fois ce tirage, la table de sortie est nommee out=boot. Les colonnes de la tableboot sont celles de la table originale aux quelles sont ajoutees les colonnes

replicate numero de la repetition

numberhits nombre de fois ou cette ligne a ete tiree.

proc surveyselect data=hmeq method=urs n=500 rep=20 out=boot;

run;

2. L’appel a la procedure logistic necessite de faire une regression par repetition by replicate;, et de prendreen compte que certaines lignes ont ete tirees plusieurs fois freq numberhits;

proc logistic data=boot outest=estimates;

class

http://www.math.unicaen.fr/~kauffman/cours 10 [email protected]

Page 11: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

reason(param=ref ref='na')

job(param=ref ref='na') ;

model bad(event='1')= loan--m_debtinc;

freq numberhits;

by replicate;

run;

3. La derniere etape consiste a calculer les estimateurs empiriques ecarts types des β grace aux repetitions, onverifie apres que less ecarts types estimes par la methode de bootstrap sont semblables a ceux estimes par laregression logistique (asymptotique).

proc means data=estimates n mean std ;

var intercept--m_debtinc;

run;

4. la sortie ods , ou output ne fonctionne pas comme la sortie des resultats en SAS9.1. J’ai utilise la sortie rtf

puis la commande unix ps2eps pour definir la ”BoundingBox”.

La procédure MEANS

Variable Libellé Nb Moyenne Écart-type

InterceptloanmortduevaluereasonDebtConreasonHomeImpjobMgrjobOfficejobOtherjobProfExjobSalesjobSelfyojderogdelinqclageninqclnodebtincm_validationm_badm_loanm_mortduem_valuem_reasonm_jobm_yojm_derogm_delinqm_clagem_ninqm_clnom_debtinc

Intercept: bad=0Amount of current loan requestAmount due on existing mortgageValue of current propertyHome improvement or debt consolidation DebtConHome improvement or debt consolidation HomeImpProf/exec sales mngr office self other MgrProf/exec sales mngr office self other OfficeProf/exec sales mngr office self other OtherProf/exec sales mngr office self other ProfExProf/exec sales mngr office self other SalesProf/exec sales mngr office self other SelfYears on current jobNumber of major derogatory reportsNumber of delinquent trade linesAge of oldest trade line in monthsNumber of recent credit inquiriesNumber of trade (credit) linesDebt to income ratiovalidation valeur manquantebad valeur manquanteloan valeur manquantemortdue valeur manquantevalue valeur manquantereason valeur manquantejob valeur manquanteyoj valeur manquantederog valeur manquantedelinq valeur manquanteclage valeur manquanteninq valeur manquanteclno valeur manquantedebtinc valeur manquante

202020202020202020202020202020202020202020202020202020202020202020

-13.8955540-0.000012971-5.614754E-65.6378276E-6

1.61986811.60498816.81857455.91193766.82201736.75437287.19754257.5083114

-0.00867000.80680740.8631005

-0.00789950.1548393

-0.02029060.1122266

000

0.933888016.3456874

00

-0.5753616-3.4033428-4.1922645-1.3667520-1.721003112.12797151.2950100

9.52936490.0000193220.000012035

9.7740588E-65.76194335.79014967.32492647.44132827.36613057.18152789.27442497.56076800.03738230.27183800.20140210.00393110.11477290.02108050.0607721

000

1.11193688.5309629

00

0.81714443.84267206.38985866.00515234.76572569.28010520.8309383

Figure 3 – Statistiques estimees par bootstrap

1.2.6 n-Validation croisee

Cette methode consiste a decouper l’echantillon en n groupes d’effectifs approximativement egaux, puis d’estimerun modele a partir des tous les groups sauf 1, on estime alors le classifieur sur la partie fold qui n’a pas servi pourl’estimation.

1. La premiere etape consiste a decouper l’echantillon en n groupes en tirant aleatoirement de facon equiprobableparmi 10 nombres {1, · · · , 10}.

data hmeq;

attrib fold label='Validation croisee'; /* fold premiere colonne */

set hmeq;

fold=rand('table',1/10,1/10,1/10,1/10,1/10,1/10,1/10,1/10,1/10,1/10);

run;

2. La macro suivante permet d’estimer le modele retirant un des groupes, puis de stocker les resultats.

data crossvalid;

fold=.;

http://www.math.unicaen.fr/~kauffman/cours 11 [email protected]

Page 12: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

bad=.;

P_1=.;

run;

%MACRO CROSSVALIDATION(n=10);

%DO NFOLD=1 %TO &n;

%put cross validation=&nfold/&n;

proc logistic data=hmeq(where=(fold^=&nfold)) outmodel=modele;

class

reason(param=ref ref='na')

job(param=ref ref='na') ;

model bad(event='1')= loan--m_debtinc;

score data=hmeq(where=(fold=&nfold)) out=tmp3(keep= fold bad P_1);

run;

data crossvalid;

set crossvalid tmp3;

run;

%END;

%MEND;

3. La derniere etape consiste a calculer la calsse predite et faire les comparaisons.

data crossvalid;

set crossvalid(where=(bad ^= .));

bad_chap=P_1> &prob_seuil;

run;

proc tabulate data=crossvalid;

class fold bad bad_chap;

table fold*bad,bad_chap;

run;

bad chap

0 1

N N

fold bad

1 0 321 122

1 14 107

2 0 376 144

1 19 93

3 0 286 151

1 13 103

4 0 350 137

1 13 98

5 0 350 128

1 19 114

6 0 342 150

1 14 103

7 0 356 142

1 15 109

8 0 365 123

1 17 94

9 0 316 155

1 7 122

10 0 315 142

1 8 107

Table 19 – Tableau de contingence croisee

http://www.math.unicaen.fr/~kauffman/cours 12 [email protected]

Page 13: Rlog1pdf

Universite de Caen Basse-Normandie 8 janvier 2013 M2-DECIM Fouilles de donnees

1.2.7 Phase finale

Il ne reste plus qu’a scorer les demandeurs de prets et ne retenir que ceux ayant un risque d’etre mauvais payeurde moins de 9%.

References

[Collica(2010)] Randall S. Collica. CRM segmentation and clustering. SAS, 2010.

http://www.math.unicaen.fr/~kauffman/cours 13 [email protected]