antoinewrd1/Buy-Now-Pay-Later-Credit-Risk-Modeling-and-Customer-Analytics

GitHub: antoinewrd1/Buy-Now-Pay-Later-Credit-Risk-Modeling-and-Customer-Analytics

基于 R 语言的端到端 BNPL 信用风险建模项目,通过机器学习与无监督学习方法实现违约预测、客户分层与异常行为检测。

Stars: 0 | Forks: 0

# 先买后付(BNPL)信用风险建模与客户分析 使用 R 开发的端到端 BNPL 信用风险建模项目。包含 EDA、特征工程、回归和分类模型、聚类以及异常检测。Random Forest 取得了最佳性能(AUC 0.768),突显了对违约风险预测的有效性和客户细分的洞察力。 🚀 **项目概述** Buy Now, Pay Later (BNPL) 平台通过提供灵活、低门槛的短期信贷,迅速改变了消费融资方式。然而,这种便利性也带来了显著的信用风险,使得准确的违约预测变得至关重要。 本项目应用端到端的机器学习和分析技术来: * 预测信用风险评分 * 对违约与非违约客户进行分类 * 识别客户群体 * 检测异常和高风险行为 该工作流整合了数据预处理、探索性数据分析 (EDA)、监督学习、无监督学习和模型评估,以模拟真实的金融科技风险建模 pipeline。 📂 **数据集** * _**来源:**_ Kaggle BNPL 信用风险数据集 * _**规模:**_ 约 10,000 条记录 * _**包含特征:**_ 客户人口统计数据、收入和就业详情、交易历史、产品类别、风险评分和违约标志 ⚙️ 技术栈 * **语言与工具:** R, Kaggle API * **库:** * **数据处理:** tidyverse, reshape2 * **建模:** caret, glmnet, randomForest, e1071, rpart, nnet, kernlab * **聚类与异常检测:** dbscan, isotree * **可视化:** ggplot2, factoextra * **评估:** pROC 🔧 **项目 Pipeline** __**1. 数据准备:**__ * 将类别变量转换为 factor * 工程化特征:days_since_transaction * 标准化目标变量 (default_flag) * 移除冗余字段 **2. 探索性数据分析 (EDA):** * 风险评分分布 * 各客户群段的违约率 * 收入与风险的关系 * 相关性热力图 📌 **关键洞察:** * 某些客户群体显示出明显更高的违约率 * 财务属性与风险之间存在强烈的相关性 **3. 训练/测试集划分** * 使用分层抽样进行 80/20 比例划分 * 保持了类别分布以进行可靠的评估 **4. 特征缩放** * 对数值变量应用中心化和缩放 * 对于以下模型至关重要: * SVM * 神经网络 🤖 **机器学习模型** * 🔹 回归(风险评分预测) * 线性回归(基线模型 — 受数据泄漏影响) * Random Forest(稳健的非线性建模) 📊 _**结果:**_ * 线性回归 RMSE ≈ 0 → ⚠️ 表明存在数据泄漏 * Random Forest RMSE = 4.27 → 现实且可靠 🔹 **分类(违约预测)** * **基线模型:** * 决策树 * 逻辑回归 * **调优模型(5 折 CV,ROC 优化):** * 逻辑回归 * Random Forest * SVM(径向核函数) 📊 _**AUC 比较:**_ 模型 AUC: * Random Forest 0.768 * SVM 0.753 * 逻辑回归 0.740 🏆 最佳模型:Random Forest 📈 **评估指标:** 混淆矩阵, 准确率, 灵敏度, 特异度, ROC 曲线, AUC (Area Under Curve) 🧠 **无监督学习** 🔹 **聚类** * K-Means (k = 3) * 层次聚类 * DBSCAN 📌 **洞察:** * 存在一个主要的客户群体 * 较小的聚类代表了小众/高风险的细分群体 * DBSCAN 成功识别了噪声(离群点) 🔹 **异常检测** * Isolation Forest * One-Class SVM 📌 **目的:** * 检测欺诈或异常的财务行为 * 识别超出正常模式的高风险客户 🧪 **神经网络** * 单隐藏层(5 个神经元) * 二分类(违约预测) 📊 _**结果:**_ * 准确率: 39.1% * 灵敏度: 99.5% * 特异度: 0.3% ⚠️ 问题: * 模型将几乎所有观测值都预测为违约 * 由类别不平衡和收敛不佳引起 🔍 **关键发现:** * Random Forest 是各项任务中最可靠的模型 * 线性回归受到数据泄漏的影响 * 逻辑回归在没有特征工程的情况下表现不佳 * SVM 表现良好,但存在不稳定性 * 神经网络在处理不平衡的表格数据时较为吃力 * 客户行为在很大程度上趋于同质化,同时存在小众的高风险细分群体 📌 **建议:** _1. 使用集成模型:_ 部署 Random Forest 或 Gradient Boosting(例如 XGBoost) _2. 处理类别不平衡:_ * 应用: * SMOTE * 类别权重 * 阈值调优 _3. 防止数据泄漏:_ * 移除从目标变量派生的特征 * 验证特征独立性 _4. 优化决策阈值:_ * 超越默认的 0.5 截断值 * 与业务风险承受能力对齐 _5. 增加可解释性:_ * 特征重要性 * SHAP 值(未来改进) _6. 改进神经网络:_ * 正则化 * 更好的架构 * 平衡的数据集 _7. 利用无监督学习:_ * 将聚类和异常检测集成到生产 pipeline 中 ▶️ **如何运行** _**1. 克隆仓库:**_ * git clone https://github.com/yourusername/bnpl-credit-risk.git * cd bnpl-credit-risk _**2. 安装依赖项:**_ * 运行脚本 — 包将自动安装: * source("bnpl_analysis.R") _**3. Kaggle 设置:**_ * 确保已配置 Kaggle API: * kaggle datasets download -d shree0910/buy-now-and-pay-later-fintech-ml-dataset 📊 **未来改进:** * 实现 XGBoost / LightGBM * 添加贝叶斯优化的超参数调优 * 通过 API 部署模型(Plumber 或 FastAPI) * 构建交互式仪表板(Shiny / Tableau) * 集成实时评分 pipeline(Spark / Kafka) 📎 **项目结构** ├── data/ ├── bnpl_analysis.R ├── README.md └── outputs/ ``` ├── plots/ ├── models/ └── metrics/ ``` 💼 **作者** Antoine Ward 数据科学家 | 医疗保健与金融科技分析 LinkedIn: https://linkedin.com/in/antoine-ward-mph-2401581a1 GitHub: https://github.com/antoinewrd1
标签:Apex, R语言, 代码示例, 信贷风控, 异常检测, 数据分析, 机器学习, 金融科技, 随机森林