在这篇文章中,我们将探讨使用各种工具和技术进行贷款审批。我们首先分析贷款数据,并应用逻辑回归来预测贷款结果。在此基础上,我们将整合BERT进行自然语言处理,以提高预测准确性。为了解释预测结果,我们将使用SHAP和LIME解释框架,提供特征重要性和模型行为方面的见解。最后,我们将通过LangChain探索自然语言处理的可能性,以自动化贷款预测,利用对话式人工智能的力量。
本文中使用的笔记本文件可在GitHub上找到。
简介
本文将探讨贷款审批的各种技术,包括逻辑回归和BERT等模型的使用,以及应用SHAP和LIME进行模型解释。我们还将研究使用LangChain自动进行贷款预测的潜力。
创建SingleStore云账户
一篇之前的文章展示了创建一个SingleStore云账户的步骤。我们将使用免费共享层,并为工作区和数据库采取默认名称。
导入笔记本
我们将从GitHub上下载笔记本(之前有链接)。
在SingleStore Cloud控制台的左侧导航栏中,我们将选择开发 > 数据工作室。
在网页的右上角,我们将选择新建笔记本 > 从文件导入。我们将使用向导定位并导入从GitHub下载的笔记本。
运行笔记本
在确认我们连接到SingleStore工作区后,我们将逐个运行单元格。
我们首先安装必要的库并导入依赖项,然后从包含近600行的CSV文件中加载贷款数据。由于一些行包含缺失数据,我们将删除不完整的行进行初步分析,将数据集减少到约500行。
接下来,我们将进一步准备数据并将特征和目标变量分开。
可视化可以提供对数据的重要洞察,我们将首先创建一个热力图,显示仅数值特征之间的相关性,如图1所示。
图1:热力图
我们可以看到贷款金额和申请人收入之间有很强的关系。
如果我们绘制贷款金额对申请人收入的图表,我们可以看到大多数数据点都位于散点图的左下角,如图2所示。
图2:散点图
所以,收入普遍较低,贷款申请也通常是较小的金额。
我们还可以为贷款金额,申请人收入和共同申请人收入创建一个成对图,如图3所示。
图3:成对图
在大多数情况下,我们可以看到数据点倾向于聚集在一起,通常很少有异常值。
接下来,我们将进行一些特征工程。我们将识别出分类值并将这些值转换为数值,并在需要时使用独热编码。
然后,我们将使用逻辑回归创建一个模型,因为只有两种可能的结果:要么贷款申请被批准,要么被拒绝。
如果我们可视化特征重要性,我们可以做出一些有趣的观察,如图4所示。
图4:特征重要性
例如,我们可以看到信用历史显然非常重要。然而,婚姻状况和性别也是重要的。
现在我们将使用一个测试样本来进行预测。
我们将使用测试样本来生成一个贷款申请摘要,使用Transformers的Bidirectional Encoder Representations from Transformers(BERT)。示例输出:
BERT-Generated Loan Application Summary
applicant : mr blobby income : $ 7787. 0 credit history : 1. 0 loan amount : $ 240. 0 property area : urban area
Model Prediction ('Y' = Approved, 'N' = Denied): Y
Loan Approval Decision: Approved
使用BERT生成的摘要,我们将创建一个如图5所示的词云。
我们可以看到,申请人的姓名、收入和信用历史比较大且突出。
我们可以通过使用SHapley Additive exPlanations(SHAP)来分析我们测试样本的数据。在图6中,我们可以直观地看到重要的特征。
图6:SHAP
SHAP力图是分析数据的另一种方式,如图7所示。
图7:力图
我们可以通过展示SHAP值的方式来看每个特征如何贡献于我们测试样本的特定预测。
另一个非常有用的库是Local Interpretable Model-Agnostic Explanations(LIME)。这个结果可以在本文的附录笔记中生成。
接下来,我们将为我们的逻辑回归模型创建一个混淆矩阵(图8)并生成分类报告。
图8:混淆矩阵
图8所示的结果有些混合,但分类报告中包含了一些好的结果:
Accuracy: 0.84
Precision: 0.83
Recall: 0.98
F1-score: 0.90
Classification Report:
precision recall f1-score support
N 0.91 0.49 0.64 43
Y 0.83 0.98 0.90 109
accuracy 0.84 152
macro avg 0.87 0.74 0.77 152
weighted avg 0.85 0.84 0.82 152
总体而言,我们可以看到使用现有的机器学习工具和技术给我们提供了许多可能的方式来分析数据并找到有趣的关联,特别是到个体测试样本的水平。
接下来,让我们使用LangChain和大型语言模型来看看我们是否也能进行贷款预测。
一旦我们设置和配置了LangChain,我们将用两个示例来测试它,但限制数据的量,以免超出令牌和速率限制。这是第一个示例:
query1 = (
"""
Build a loan approval model.
Limit your access to 10 rows of the table.
Use your model to determine if the following loan would be approved:
Gender: Male
ApplicantIncome: 7787.0
Credit_History: 1
LoanAmount: 240.0
Property_Area_Urban: 1
Limit your reply to either 'Approved' or 'Denied'.
"""
)
result1 = run_agent_query(query1, agent_executor, error_string)
print(result1)
在这种情况下,原始数据集中的申请被批准了。
以下是第二个示例:
query2 = (
"""
Build a loan approval model.
Limit your access to 10 rows of the table.
Use your model to determine if the following loan would be approved:
Gender: Female
ApplicantIncome: 5000.0
Credit_History: 0
LoanAmount: 103.0
Property_Area_Semiurban: 1
Limit your reply to either 'Approved' or 'Denied'.
"""
)
result2 = run_agent_query(query2, agent_executor, error_string)
print(result2)
在这种情况下,原始数据集中的申请被拒绝了。
运行这些查询,我们可能会得到不一致的结果。这可能是由于限制了可使用数据的数量。我们还可以在LangChain中使用详细模式查看构建贷款批准模型的步骤,但在这个初始阶段关于创建该模型的详细步骤的信息不足。
需要更多关于对话AI的工作,因为许多国家都有公平贷款规则,我们需要关于为什么AI批准或拒绝某个特定贷款申请的详细解释。
总结
今天,许多强大的工具和技术增强了机器学习(ML)的能力,以更深入地了解数据和贷款预测模型。通过大型语言模型(LLMs)和现代框架,AI具有巨大潜力来增强或甚至替代传统的ML方法。然而,为了对AI的推荐有更大的信心,并在许多国家的法律和公平贷款要求下遵守规定,理解AI的推理和决策过程至关重要。
Source:
https://dzone.com/articles/building-predictive-analytics-for-loan-approvals