Lending Club est une société américaine de financement participatif basée à San Fransisco. Elle a été fondée par Renaud Laplanche en 2006. C’est une plateforme de prêt entre particuliers qui permet aux emprunteurs d’avoir accès à des crédits à des taux inférieurs à ceux proposés par les banques traditionnelles et permet aux investisseurs d’investir leur épargne sous la forme d’un prêt à une communauté qui vérifie certaines conditions (risque lié à l’emprunteur, dimension sociale ou solidaire, etc.).
Pour une banque ou un institut qui offre du crédit, il est crucial de connaître les clients et leur capacité de remboursement. Les techniques traditionnelles d’évaluation du crédit existent déjà et tiennent compte des différentes caractéristiques d’un client, mais elles ne s’adaptent pas facilement à un nouvel environnement, contrairement aux techniques d’apprentissage machine qui peuvent détecter des relations et des comportements invisibles.
Les prédictions du modèle peuvent être exprimées sous la forme d’une probabilité de solvabilité ou sous la forme d’une classification binaire (payeur/délinquant).
Pour résoudre le problème, nous utiliserons un ensemble de données partielles de la compétition du club de prêt sur Kaggle.
Exploration des ensembles de données
Nom | Type | Valeurs manquantes | Signification |
Id | Numérique | 0 | Id du client |
Loan_amnt | Numérique | 0 | Montant du prêt |
Emp_length | Catégorique | 0 | Durée d’emploi |
Home_ownership | Catégorique | 0 | L’accession à la propriété |
Zip_code | Catégorique | 0 | Code postal aux Etats-Unis |
Annual_inc | Numérique | 0 | Revenu annuel |
Dti | Numérique | 0 | Dette par rapport au revenu |
Delinq_2yrs | Numérique | 0 | Nombre d’impayés au cours des deux dernières années |
Inq_last_6mths | Numérique | 0 | Nombre de demandes de renseignements au cours des 6 derniers mois |
Open_acc | Numérique | 0 | Nombre de transactions ouvertes au cours des 6 derniers mois |
Pub_rec | Numérique | 0 | Nombre de documents publics dérogatoires |
Revol_bal | Numérique | 0 | Solde du crédit rotatif |
Revol_util | Numérique | 93 | Le taux d’utilisation des lignes renouvelables |
Total_acc | Numérique | 0 | Le nombre total de lignes de crédit actuellement dans le dossier de crédit de l’emprunteur. |
Collections_12_mths_ex_med | Numérique | 13 | Nombre de collectes en 12 mois hors collectes médicales |
Acc_now_delinq | Numérique | 0 | Le nombre de comptes sur lesquels l’emprunteur est en retard. |
Tot_coll_amt | Numérique | 22361 | Montant total dû |
Tot_cur_bal | Numérique | 22361 | Solde total du compte |
Toal_rev_hi_lim | Numérique | 22361 | Limite de crédit |
Purpose | Catégorique | 0 | Objet du prêt |
Loan_status | Catégorique | 0 | Payeur/Délinquant |
Loan_status est notre variable d’intérêt sur laquelle nous allons faire la prédiction. Il y a deux catégories :
- Payeurs : Des gens qui ont payé tout leur crédit.
Nombre de personnes dans cette catégorie : 60432. Cela représente 61 % de l’ensemble du budget de l - Délinquants : Les gens qui n’ont pas remboursé leur crédit.
Nombre de personnes dans cette catégorie : 38766. Cela représente 39% de l’ensemble des individus.
Nous ne sommes donc pas dans le contexte d’un problème de données fortement déséquilibrées où le pourcentage de la classe minoritaire est proche de 5%.
Dans le cas discuté précédemment, deux techniques pourraient être utilisées :
- Suréchantillonnage : Nous allons dupliquer les individus de la classe minoritaire afin d’équilibrer les deux classes.
- Sous-échantillonnage : Nous allons réduire la taille de la classe majoritaire afin de l’équilibrer avec la classe minoritaire.
Le but de ces deux techniques est d’inclure le déséquilibre dans la fonction de coût de l’algorithme afin de ne pas discriminer une classe en faveur de l’autre.
Ingénierie des caractéristiques
Le processus d’ingénierie des variables prédicteurs doit se faire simultanément sur la formation et les tests pour assurer un traitement similaire. Nous combinons donc les deux ensembles de données avant d’appliquer toute fonction.
Remplissage des valeurs manquantes
Il faut ici distinguer les deux types de variables (catégorielles et numériques) puisque le traitement sera différent.
Pour les variables catégorielles, nous créerons une catégorie ” Inconnu ” qui s’adressera aux personnes pour lesquelles la catégorie d’une variable catégorielle n’a pas été mentionnée.
Pour les variables continues, nous remplacerons NaN par la médiane et créerons une variable de contrôle binaire appelée ” manquante ” qui est 1 s’il manque une valeur dans la ligne et 0 sinon.
One-hot encoding
Nous créons des variables de type binaire pour chaque catégorie de chaque variable catégorielle : l’objectif est de remplacer les chaînes de caractères (non interprétables par la majorité des algorithmes) par des variables numériques. Ainsi, la valeur “purpose_medical” sera égale à 1 si l’objet du prêt de la personne est “médical” dans la variable catégorielle “purpose”.
Modèles d’apprentissage machine
Nous utiliserons trois algorithmes de classification : Régression logistique, Random Forest et XGBoost qui est une version améliorée du gradient boosting. Ces algorithmes sont détaillés dans Qu’est-ce que l’apprentissage supervisé ?
Au cours du processus, il est nécessaire de bien choisir l’ensemble des prédicteurs et de sélectionner les meilleurs hyper-paramètres. Plusieurs configurations seront évaluées pour ne choisir que celle fournissant la meilleure performance.
Résultats
Dans un premier temps, nous évaluerons l’amélioration due à la sélection d’hyper-paramètres.
Nous utilisons la recherche aléatoire et nous obtenons les paramètres et scores suivants pour chaque algorithme :
Algorithme | Hyper-paramètres | Précision | Rappel | F1 |
Régression logistique | Penalty = “elastic net” L1_ratio = 1 Alpha = 0.01 | 42% | 55% | 47% |
Random Forest | N_estimators = 300 Max_features = “sqrt” Criterion=”entropy” | 59% | 34% | 43% |
XGBoost Classifier | N_estimators = 500 Learning_rate = 0.03 Colsample_bylevel = 0.7 Max_depth = 7 | 59% | 40% | 47% |
Les courbes de ROC et de précision/rappel obtenues sont :




Nous trouvons que l’algorithme XGBoost offre les meilleures performances par rapport aux trois scores : les surfaces sous la courbe ROC, la courbe de précision et le score F1.
Comme pour la régression logistique, l’aire sous la courbe ROC est proche de 0,5, ce qui signifie qu’elle est toujours équivalente à un classificateur aléatoire.
Dans un deuxième temps, nous conserverons les paramètres précédemment choisis pour le XGBoost et nous appliquerons également la sélection des prédicteurs dans le but de réduire la taille. La méthode qui sera évaluée est l’élimination récursive des variables prédictives qui est implémentée sur Scikit-Learn dans le module RFE. Cette méthode nécessite des variables catégorielles discrètes, mais comme il y aura autant d’exécutions que de variables, il est recommandé d’utiliser le LabelEncoder qui transforme les variables catégorielles en variables ordinales. Il est également implémenté dans Scikit-Learn.
Le classement obtenu est :


Examinons de plus près les variables prédicteurs les plus importantes. Pour que la plateforme puisse prêter de l’argent à un client, il est important qu’il dispose des informations suivantes :
- Revenu annuel (annual_inc)
- Montant du crédit (loan_amt)
- Heures de travail (emp_length)
- Ratio d’endettement par rapport au revenu (dti)
- Solde du crédit revolving (revol_bal)
- Nombre d’appels et d’enquêtes publiques (inq_last_6_mths)
- Nombre de défaillances d’autres entreprises au cours des deux dernières années (delinq_2yrs)
- Nous trouvons en fait cette information dans le classement.
Les résultats obtenus en sélectionnant les trois quarts des variables prédicteurs les plus importantes sont résumés ci-dessous :
Algorithme | Précision | Rappel | F1-score | ROC auc |
XGboost Classifier | 59% | 40% | 47% | 69% |
Interprétation
Nous sommes donc en mesure de détecter 40% des cas positifs (personnes qui n’ont pas remboursé) dans les données et d’avoir 59% des précisions positives correctes (ce qui signifie que 40% des prévisions positives sont de fausses alertes : personnes solvables et étiquetées comme insolvables). Le score F1 reflète la combinaison de la précision et du rappel et est proche de 50%.
L’aire sous la courbe ROC est de 70%, nous dépassons de 20% celle associée au classificateur aléatoire.