信用卡违约客户的预测模型的选择(三)线性回归
2018-02-28 10:40
579 查看
模型选择
在银行业数据挖掘中最常用的数据挖掘算法主要为线性回归,logistic回归和决策树分类,根据本数据集的特征,主要分析线性回归和logistic回归。
线性回归方法
在方法选择上首先我们选择线性回归方法(linear regression model),基于回归结果进行分类选择。线性回归是最简单的预测模型。在这里我们选用sklearn lib中的库linear_model进行模拟测试。
在银行业数据挖掘中最常用的数据挖掘算法主要为线性回归,logistic回归和决策树分类,根据本数据集的特征,主要分析线性回归和logistic回归。
线性回归方法
在方法选择上首先我们选择线性回归方法(linear regression model),基于回归结果进行分类选择。线性回归是最简单的预测模型。在这里我们选用sklearn lib中的库linear_model进行模拟测试。
具体方法如下:
对模型进行训练:
lrg.fit(X_train, y_train)
得到预测值,及模型打分
lrg.predict(X_test)
lrg.score(X_test, y_test)
由于为分类变量,前期得到的分值较低,可以理解。线性模型变量的系数如下表所示。
变量 | Coefficient |
0. | |
LIMIT_BAL | -0.04271721 |
PAY_1 | 0.10171922 |
PAY_2 | 0.01269178 |
PAY_3 | 0.01885383 |
PAY_4 | -0.00203268 |
PAY_5 | 0.00640481 |
PAY_6 | -0.00282735 |
表1:线性回归系数值
模型的AUC=0.723,ROC曲线如下图所示。
我们基于预测结果设计一个分类器。
def classify(y_predict,y_test): pipei=0; tp=0; fp=0; tn=0 fn=0; p=0; n=0 num=np.shape(y_predict)[0] #tp,fp,tn,fn for j in range(10): class_Num = float(input('请输入你的分类阀值:')) for i in range(num): if y_test[i]==1: p+=1 else:n+=1 if y_predict[i]>class_Num: if y_test[i]==1: pipei+=1 tp+=1 else:fp+=1 elif y_test[i]==0: tn+=1 pipei+=1 else:fn+=1 print('正确率ACC为:',pipei/num) print('真正率为TPR:', tp / (tp+fn)) print('假正率为FPR:', fp / (fp+tn)) print('真负率为TNR:', tn / (fp+tn)) print('假负率为FNR:', fn / (fn + tp)) print('正例数为:',p) print('负例数为:',n) pipei = 0 tp = 0; fp = 0; tn = 0 fn = 0; p = 0; n = 0
图3-1 分类器不同阀值下正确率、混淆矩阵单元格变化趁势图
图3-1所示,正确率在0.4之前保持平稳,在0.4之后有小的升幅(至max=0.71),后下降后保持平稳。在这里提供两个优先选择点,即阀值1:class_Num=0.42及阀值2:class_Num=0.48.
具体分类阀值的选择,由于不同项目需求会有不同的侧重点,也就会对混淆矩阵值做出不同的选择。如在本例中,假设该模型的需求为:在成本预算内对下月违约客户进行尽可能的提前预防,通过短信提醒、账单提醒等不同形式精确地对存在违约风险的客户进行风险管理。则在本需求下会考虑降低分类阀值以提高tpr,应尽可能提高挖掘出存在违约风险的客户(即正例样本)的比例,在成本允许的情况下找到tpr与tnr之间的一个平衡点。
真正率和假正率之间保持着协同关系,随着一方的增长,也会促使另一方增长。例如,在某个模型设计中,分类器将全部样本划分为负例,这时正样本被全部划分为负例,全部划分错误,真正率=0,负样本则被全部被划分正确,假正率=0.在通常情况下,正负各被划分为一定比例,正负比例被划分的多少完全取决于分类器阀值的设置。在这里以logistic regression模型为例,我们知道logistic model为每个样本的打分在(0,1)之间,当我们将分类阀值设置为1时,则全部样本被划分为负例,当我们将分类器阀值设置为0时,则全部样本被划分为正例。我们也可以将阀值设置为0.5,0.6,0.7等,当阀值由0.5增加至0.6时,则分类器分类结果负例增加,产生假正例减少,假正率降低。分类器分类结果正例减少,产生真正例减少,真正率降低。可见正确率与真正率之间存在一定的冲突,正确率会随着真正率的提高,先上升后出现下降趋势。至阀值为0时,真正率为1,正确率为0.5.可权衡模型目标选取阀值。
为了达到更高的模型可信度,遂进行其他模型的验证。
相关文章推荐
- 信用卡违约客户的预测模型的选择(二)验证过程
- 信用卡违约客户的预测模型的选择(四)logistic模型及模型比较
- 信用卡违约客户的预测模型的选择(一)相关技术介绍
- 【数据挖掘与R语言笔记】预测海藻数量(二)线性模型和回归树模型
- R in action读书笔记(11)-第八章:回归-- 选择“最佳”的回归模型
- 2.9 线性回归算法学习——kNN模型解决回归问题及网格搜索最优参数
- 多元线性回归的预测
- 机器学习教程 之 线性模型:线性回归、对数几率回归、线性判别分析
- 在PostgreSQL中用线性回归分析linear regression做预测 - 例子2, 预测未来数日某股收盘价
- 线性回归 模型检验
- 【自然语言处理入门】03:利用线性回归对数据集进行分析预测(上)
- 用机器学习构建模型,进行信用卡反欺诈预测
- 初学ML笔记N0.1——线性回归,分类与逻辑斯蒂回归,通用线性模型
- 线性回归分析及预测
- 2.10 线性回归算法学习——回归模型的可解释性
- 机器学习——线性模型之回归与分类
- 【Scikit-Learn 中文文档】模型评估: 量化预测的质量 - 模型选择和评估 - 用户指南 | ApacheCN
- 【Scikit-Learn 中文文档】模型评估: 量化预测的质量 - 模型选择和评估 - 用户指南 | ApacheCN
- PRML读书会第四章 Linear Models for Classification(贝叶斯marginalization、Fisher线性判别、感知机、概率生成和判别模型、逻辑回归)
- 【Scikit-Learn 中文文档】模型评估: 量化预测的质量 - 模型选择和评估 - 用户指南 | ApacheCN