摘要:
合集:AI案例-ML-泛金融业
AI问题:回归预测问题
数据集:MinChunHuang2005台湾地区信用卡客户数据集
数据集价值:违约预测
解决方案:逻辑回归
一、问题描述
信用卡客户的违约支付、人口因素、信用数据、支付历史和账单声明的信息具有多方面的价值,尤其在金融风险评估、市场营销和客户服务等领域。以下是这些信息的具体价值体现:
- 风险管理
- 违约支付信息:帮助金融机构识别高风险客户,预测潜在违约行为,从而采取预防措施或调整信贷策略。
- 信用数据:综合评估客户的信用状况,包括信用评分、历史借贷记录等,有助于做出更准确的信贷决策。
- 支付历史:反映客户的还款习惯和能力,是判断信用可靠性的重要依据。
- 客户洞察
- 人口因素:了解客户的年龄、性别、教育水平、婚姻状况等基本信息,有助于细分市场和定制个性化服务。
- 账单声明信息:分析客户的消费模式和偏好,可以发现潜在的需求和市场机会。
- 产品开发
- 分析上述各类数据,金融机构能够设计出更符合目标客户群体需求的金融产品和服务。
- 例如,针对不同风险等级的客户推出差异化的信贷产品。
- 营销策略
- 利用人口统计信息和消费行为数据,制定精准的营销活动和推广方案。
- 通过识别高价值客户群体,优化资源配置,提高营销回报率。
- 客户服务优化
- 分析支付历史和账单信息,及时发现并解决客户可能遇到的问题,提升客户满意度。
- 提供针对性的财务咨询和建议,帮助客户改善财务状况。
- 法规遵从与监管报告
- 准确记录和分析客户数据有助于确保金融机构遵守相关法律法规要求。
- 在必要时,这些数据还可用于编制监管报告和应对审计检查。
- 科研与学术研究
- 对大量信用卡数据的深入研究可以为经济学、金融学等领域提供丰富的实证材料和研究课题。
- 这些研究成果又可以反过来指导实践,推动行业发展。
二、数据集内容
UCI_Credit_Card.csv 数据集是一个关于台湾地区信用卡客户的真实世界数据集,由 Min-Chun Huang 和 Yu-Chin Lin 在 2005 年收集。数据集包含2005年4月至2005年9月台湾信用卡客户的违约支付、人口因素、信用数据、支付历史和账单声明的信息。共3万条记录。这个数据集被广泛应用于信用评分、违约预测和其他金融风控相关的机器学习和数据挖掘任务。
数据结构
本数据集采用了一个二元变量,违约支付/Y字段(是=1,否=0)作为输出/响应变量。使用以下23个变量作为输入/解释变量:
X1:给予的信用额度(新台币):包括个人消费者信用及其家庭(补充)信用。
X2:性别(1=男性;2=女性)。
X3:教育程度(1=研究生院;2=大学;3=高中;4=其他)。
X4:婚姻状况(1=已婚;2=单身;3=其他)。
X5:年龄(岁)。
X6 - X11:过去的支付历史。我们追踪了过去每月的支付记录(从2005年4月到2005年9月),如下所示:
X6 = 2005年9月的还款状态;
X7 = 2005年8月的还款状态;
……;
X11 = 2005年4月的还款状态。
还款状态的测量尺度为:-1 =按时支付;1 =延迟一个月支付;2 =延迟两个月支付;……;8 =延迟八个月支付;9 =延迟九个月及以上支付。
X12-X17:账单声明金额(新台币)。
X12 = 2005年9月的账单声明金额;
X13 = 2005年8月的账单声明金额;
……;
X17 = 2005年4月的账单声明金额。
X18-X23:前期支付金额(新台币)。
X18 = 2005年9月支付的金额;
X19 = 2005年8月支付的金额;
……;
X23 = 2005年4月支付的金额。
字段数据类型定义:
Variable Name | Role | Type | Demographic | Description |
---|---|---|---|---|
ID | ID | Integer | ||
X1 | Feature | Integer | LIMIT_BAL | |
X2 | Feature | Integer | Sex | SEX |
X3 | Feature | Integer | Education Level | EDUCATION |
X4 | Feature | Integer | Marital Status | MARRIAGE |
X5 | Feature | Integer | Age | AGE |
X6 | Feature | Integer | PAY_0 | |
X7 | Feature | Integer | PAY_2 | |
X8 | Feature | Integer | PAY_3 | |
X9 | Feature | Integer | PAY_4 | |
X10 | Feature | Integer | PAY_5 | |
X11 | Feature | Integer | PAY_6 | |
X12 | Feature | Integer | BILL_AMT1 | |
X13 | Feature | Integer | BILL_AMT2 | |
X14 | Feature | Integer | BILL_AMT3 | |
X15 | Feature | Integer | BILL_AMT4 | |
X16 | Feature | Integer | BILL_AMT5 | |
X17 | Feature | Integer | BILL_AMT6 | |
X18 | Feature | Integer | PAY_AMT1 | |
X19 | Feature | Integer | PAY_AMT2 | |
X20 | Feature | Integer | PAY_AMT3 | |
X21 | Feature | Integer | PAY_AMT4 | |
X22 | Feature | Integer | PAY_AMT5 | |
X23 | Feature | Integer | PAY_AMT6 | |
Y | Target | Binary | default payment next month |
数据样例
X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | X9 | X10 | X11 | X12 | X13 | X14 | X15 | X16 | X17 | X18 | X19 | X20 | X21 | X22 | X23 | Y | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | LIMIT_BAL | SEX | EDUCATION | MARRIAGE | AGE | PAY_0 | PAY_2 | PAY_3 | PAY_4 | PAY_5 | PAY_6 | BILL_AMT1 | BILL_AMT2 | BILL_AMT3 | BILL_AMT4 | BILL_AMT5 | BILL_AMT6 | PAY_AMT1 | PAY_AMT2 | PAY_AMT3 | PAY_AMT4 | PAY_AMT5 | PAY_AMT6 | default payment next month |
1 | 20000 | 2 | 2 | 1 | 24 | 2 | 2 | -1 | -1 | -2 | -2 | 3913 | 3102 | 689 | 0 | 0 | 0 | 0 | 689 | 0 | 0 | 0 | 0 | 1 |
2 | 120000 | 2 | 2 | 2 | 26 | -1 | 2 | 0 | 0 | 0 | 2 | 2682 | 1725 | 2682 | 3272 | 3455 | 3261 | 0 | 1000 | 1000 | 1000 | 0 | 2000 | 1 |
3 | 90000 | 2 | 2 | 2 | 34 | 0 | 0 | 0 | 0 | 0 | 0 | 29239 | 14027 | 13559 | 14331 | 14948 | 15549 | 1518 | 1500 | 1000 | 1000 | 1000 | 5000 | 0 |
4 | 50000 | 2 | 2 | 1 | 37 | 0 | 0 | 0 | 0 | 0 | 0 | 46990 | 48233 | 49291 | 28314 | 28959 | 29547 | 2000 | 2019 | 1200 | 1100 | 1069 | 1000 | 0 |
5 | 50000 | 1 | 2 | 1 | 57 | -1 | 0 | -1 | 0 | 0 | 0 | 8617 | 5670 | 35835 | 20940 | 19146 | 19131 | 2000 | 36681 | 10000 | 9000 | 689 | 679 | 0 |
6 | 50000 | 1 | 1 | 2 | 37 | 0 | 0 | 0 | 0 | 0 | 0 | 64400 | 57069 | 57608 | 19394 | 19619 | 20024 | 2500 | 1815 | 657 | 1000 | 1000 | 800 | 0 |
致谢
Any publications based on this dataset should acknowledge the following:
Lichman, M. (2013). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
许可协议
This dataset is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license.
Creative Commons Attribution 4.0 International (CC BY 4.0) 是一种广泛使用的版权许可协议,允许他人在保留署名权的前提下自由地使用、分享、改编和重新分发原创作品。这种许可证非常适合希望最大化作品传播范围并促进知识共享的创作者和版权持有者。
三、预测样例
本研究的目标是利用一些有监督的机器学习算法来确定决定信用卡违约可能性的关键驱动因素,并强调所使用方法背后的数学方面。信用卡违约发生在你在信用卡还款上严重拖欠时。为了增加市场份额,台湾的发卡银行向不合格的申请者过度发放现金和信用卡。同时,大多数持卡人,不管他们的还款能力如何,都过度使用信用卡进行消费并积累了沉重的信用和债务。
目标是构建一个自动化模型,既能识别关键因素,也能基于客户信息和历史交易数据预测信用卡违约。有监督机器学习范式的一般概念随后报告,连同用于构建模型的所有技术和算法的详细解释。特别是,已经应用了逻辑回归、随机森林和支持向量机算法。
安装
常用数据分析和传统机器学习开发包的安装方法如下:
conda create -n ml python=3.12
conda activate ml
conda install numpy pandas matplotlib seaborn statsmodels
conda install scikit-learn scipy
conda install openpyxl 3.1.5
conda install -c conda-forge imbalanced-learn
安装后的开发包版本信息:
python 3.12.7 h14ffc60_0 anaconda
numpy 1.26.4 py312hfd52020_0 anaconda
scipy 1.13.1 py312hbb039d4_0 anaconda
pandas 2.2.2 py312h0158946_0 anaconda
scikit-learn 1.5.1 py312h0158946_0 anaconda
matplotlib 3.9.2 py312haa95532_0 anaconda
seaborn 0.13.2 py312haa95532_0 anaconda
statsmodels 0.14.2 py312h4b0e54e_0 anaconda
openpyxl 3.1.5
imbalanced-learn 0.12.4 pyhd8ed1ab_0 conda-forge
运行
参考文章《AI训练集、验证集、测试集和评估指标》,基于测试集运行结果如下图:
分析后结论:
- 逻辑回归和支持向量机无论使用何种不平衡技术,性能保持不变,而对于随机森林则不然,原因可能是决策树要表现良好需要大量数据,但同时下采样技术减少了数据量。
- 总体而言,过采样略微优于欠采样;
- 正类是最难分类的,所选的任何模型似乎都无法把握问题的复杂性。
- 实证观察到,一般来说,欠采样作为预处理步骤所需的时间比过采样多,这很可能是因为前者要计算所有数据的k均值以找到质心。
上述所有算法都已在训练集上进行了尝试和超参数调整,采用了k折交叉验证技术。在训练集上选择了表现最佳的超参数配置来重建模型并在测试集上进行评估。
最后,下表比较了所有分类器(在其最佳配置下)在验证集和测试集上的结果。正如我们所看到的,测试集上获得的分数与验证集上获得的分数非常接近。
以下条形图展示了训练-验证阶段的结果摘要,其中所有算法都使用其最佳超参数(即最大化正类的f1分数)进行训练,并采用了两种技术来解决类别不平衡问题。
合成少数类过采样技术(Synthetic Minority Over-sampling Technique,简称SMOTE)是一种用于处理分类问题中类别不平衡的数据增强技术。它通过在少数类样本之间插值生成新的合成样本来增加少数类的数量,从而平衡数据集。
工作原理
- 选择样本:从少数类中随机选择一个样本。
- 确定邻居:找到该样本的k个最近邻(通常是最近的k个少数类样本)。
- 生成合成样本:在选定的样本和其邻居之间随机选择一个点,生成一个新的合成样本。
Cluster centroid(聚类中心)是指在聚类分析中,每个聚类簇的代表点或中心点。聚类分析是一种无监督学习方法,用于将数据点分组成多个簇,使得同一簇内的数据点彼此相似,而不同簇之间的数据点差异较大。
源码版权许可协议
MIT License
Copyright (c) 2020 Roberto Franceschi