机器学习-sklearn第六天——笔记

目录

  • 3 案例:用逻辑回归制作评分卡
    • 3.1 导库,获取数据
    • 3.2 探索数据与数据预处理
      • 3.2.1 去除重复值
      • 3.2.2 填补缺失值
      • 3.2.3 描述性统计处理异常值
      • 3.2.4 为什么不统一量纲,也不标准化数据分布?
      • 3.2.5 样本不均衡问题
      • 3.2.6 分训练集和测试集
    • 3.3 分箱
      • 3.3.1 等频分箱
      • 3.3.3 定义WOE和IV函数
      • 3.3.4 卡方检验,合并箱体,画出IV曲线
      • 3.3.5 用最佳分箱个数分箱,并验证分箱结果
      • 3.3.6 将选取最佳分箱个数的过程包装为函数
      • 3.3.7 对所有特征进行分箱选择
    • 3.4 计算各箱的WOE并映射到数据中
    • 3.5 建模与模型验证

3 案例:用逻辑回归制作评分卡

在银行借贷场景中,评分卡是一种以分数形式来衡量一个客户的信用风险大小的手段,它衡量向别人借钱的人(受信人,需要融资的公司)不能如期履行合同中的还本付息责任,并让借钱给别人的人(授信人,银行等金融机构)造成经济损失的可能性。一般来说,评分卡打出的分数越高,客户的信用越好,风险越小。
这些”借钱的人“,可能是个人,有可能是有需求的公司和企业。对于企业来说,我们按照融资主体的融资用途,分别使用企业融资模型,现金流融资模型,项目融资模型等模型。而对于个人来说,我们有”四张卡“来评判个人的信用程度:A卡,B卡,C卡和F卡。而众人常说的“评分卡”其实是指A卡,又称为申请者评级模型,主要应用于相关融资类业务中新用户的主体评级,即判断金融机构是否应该借钱给一个新用户,如果这个人的风险太高,我们可以拒
绝贷款。
一个完整的模型开发,需要有以下流程:
机器学习-sklearn第六天——笔记_第1张图片

3.1 导库,获取数据

机器学习-sklearn第六天——笔记_第2张图片

3.2 探索数据与数据预处理

在这一步我们要样本总体的大概情况,比如查看缺失值,量纲是否统一,是否需要做哑变量等等。其实数据的探索和数据的预处理并不是完全分开的,并不一定非要先做哪一个,因此这个顺序只是供大家参考
机器学习-sklearn第六天——笔记_第3张图片
机器学习-sklearn第六天——笔记_第4张图片

3.2.1 去除重复值

现实数据,尤其是银行业数据,可能会存在的一个问题就是样本重复,即有超过一行的样本所显示的所有特征都一样。有时候可能时人为输入重复,有时候可能是系统录入重复,总而言之我们必须对数据进行去重处理。可能有人会说,难道不可能出现说两个样本的特征就是一模一样,但他们是两个样本吗?比如,两个人,一模一样的名字,
年龄,性别,学历,工资……当特征量很少的时候,这的确是有可能的,但一些指标,比如说家属人数,月收入,已借有的房地产贷款数量等等,几乎不可能都出现一样。尤其是银行业数据经常是几百个特征,所有特征都一样的可能性是微乎其微的。即便真的出现了如此极端的情况,我们也可以当作是少量信息损失,将这条记录当作重复值
除去。
机器学习-sklearn第六天——笔记_第5张图片

3.2.2 填补缺失值

机器学习-sklearn第六天——笔记_第6张图片
机器学习-sklearn第六天——笔记_第7张图片

3.2.3 描述性统计处理异常值

现实数据永远都会有一些异常值,首先我们要去把他们捕捉出来,然后观察他们的性质。注意,我们并不是要排除掉所有异常值,相反很多时候,异常值是我们的重点研究对象,比如说,双十一中购买量超高的品牌,或课堂上让很多学生都兴奋的课题,这些是我们要重点研究观察的。
机器学习-sklearn第六天——笔记_第8张图片

3.2.4 为什么不统一量纲,也不标准化数据分布?

无论算法有什么样的规定,无论统计学中有什么样的要求,我们的最终目的都是要为业务服务。现在我们要制作评分卡,评分卡是要给业务人员们使用的基于新客户填写的各种信息为客户打分的一张卡片,而为了制作这张卡片,我们需要对我们的数据进行一个“分档”,比如说,年龄20-30岁为一档,年龄30-50岁为一档,月收入1W以上为一档,5000-1W为一档,每档的分数不同。一旦我们将数据统一量纲,或者标准化了之后,数据大小和范围都会改变,统计结果是漂亮了,但是对于业务人员来说,他们完全无法理解,标准化后的年龄在0.00328-0.00467之间为一档是什么含义。并且,新客户填写的信息,天生就是量纲不统一的,我们的确可以将所有的信息录入之后,统一进行标准化,然后导入算法计算,但是最终落到业务人员手上去判断的时候,他们会完全不理解为什么录入的信息变成了一串统计上很美但实际上根本看不懂的数字。由于业务要求,在制作评分卡的时候,我们要尽量保持数据的原貌,年龄就是8~110的数字,收入就是大于0,最大值可以无限的数字,即便量纲不统一,我们也不对数据进行标准化处理。

3.2.5 样本不均衡问题

机器学习-sklearn第六天——笔记_第9张图片

可以看出,样本严重不均衡。虽然大家都在努力防范信用风险,但实际违约的人并不多。并且,银行并不会真的一棒子打死所有会违约的人,很多人是会还钱的,只是忘记了还款日,很多人是不愿意欠人钱的,但是当时真的很困难,资金周转不过来,所以发生逾期,但一旦他有了钱,他就会把钱换上。对于银行来说,只要你最后能够把钱还上,我都愿意借钱给你,因为我借给你就有收入(利息)。所以,对于银行来说,真正想要被判别出来的其实是”恶意违约“的人,而这部分人数非常非常少,样本就会不均衡。这一直是银行业建模的一个痛点:我们永远希望捕捉少数类。之前提到过,逻辑回归中使用最多的是上采样方法来平衡样本。
机器学习-sklearn第六天——笔记_第10张图片

3.2.6 分训练集和测试集

机器学习-sklearn第六天——笔记_第11张图片

3.3 分箱

前面提到过,我们要制作评分卡,是要给各个特征进行分档,以便业务人员能够根据新客户填写的信息为客户打分。因此在评分卡制作过程中,一个重要的步骤就是分箱。可以说,分箱是评分卡最难,也是最核心的思路,分箱的本质,其实就是离散化连续变量,好让拥有不同属性的人被分成不同的类别(打上不同的分数),其实本质比较类似于聚类

3.3.1 等频分箱

机器学习-sklearn第六天——笔记_第12张图片

3.3.3 定义WOE和IV函数

机器学习-sklearn第六天——笔记_第13张图片

3.3.4 卡方检验,合并箱体,画出IV曲线

机器学习-sklearn第六天——笔记_第14张图片

3.3.5 用最佳分箱个数分箱,并验证分箱结果

机器学习-sklearn第六天——笔记_第15张图片

3.3.6 将选取最佳分箱个数的过程包装为函数

机器学习-sklearn第六天——笔记_第16张图片
机器学习-sklearn第六天——笔记_第17张图片

3.3.7 对所有特征进行分箱选择

机器学习-sklearn第六天——笔记_第18张图片
机器学习-sklearn第六天——笔记_第19张图片
机器学习-sklearn第六天——笔记_第20张图片

3.4 计算各箱的WOE并映射到数据中

我们现在已经有了我们的箱子,接下来我们要做的是计算各箱的WOE,并且把WOE替换到我们的原始数据model_data中,因为我们将使用WOE覆盖后的数据来建模,我们希望获取的是”各个箱”的分类结果,即评分卡上各个评分项目的分类结果。

机器学习-sklearn第六天——笔记_第21张图片

把以上过程包装成函数:
机器学习-sklearn第六天——笔记_第22张图片

接下来,把所有WOE映射到原始数据中:、
机器学习-sklearn第六天——笔记_第23张图片

3.5 建模与模型验证

终于弄完了我们的训练集,接下来我们要处理测试集,在已经有分箱的情况下,测试集的处理就非常简单了,我们只需要将已经计算好的WOE映射到测试集中去就可以了
机器学习-sklearn第六天——笔记_第24张图片
机器学习-sklearn第六天——笔记_第25张图片
机器学习-sklearn第六天——笔记_第26张图片
机器学习-sklearn第六天——笔记_第27张图片

3.6 制作评分卡
用numpy可以很容易求出A和B的值
有了A和B,分数就很容易得到了
我们可以通过循环,将所有特征的评分卡内容全部一次性写往一个本地文件ScoreData.csv:
机器学习-sklearn第六天——笔记_第28张图片

你可能感兴趣的:(机器学习,sklearn,决策树)