【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

【博客地址】:https://blog.csdn.net/sunyaowu315
【博客大纲地址】:https://blog.csdn.net/sunyaowu315/article/details/82905347

  研习社的壮大速度远超自己的想象,算是验证了自己的一个预期。社里关于Logistic算法及标准评分卡的问题很多,都蛮经典。今儿个,咱就认认真真的盘一遍。
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

问题:

  • Logistic算法的原理是啥啊?
  • 为何用卡方分箱?
  • 为何需要woe编码呢?
  • 变量bad rate必须满足单调性吗?
  • 为何要检验变量的正负性、单调性、相关性?
  • IV值有什么用啊?该怎么判断呢?
  • 最终标准评分怎么转换的?为什么要加一个截距项呢?

一 Logistic算法原理

1、基本概念

  逻辑斯蒂回归(logistic regression )是统计学中的经典分类方法,属于广义线性模型(generalizedlinear model)。虽然名字里带“回归”,但它实际上是一种分类方法,与多重线性回归有很多相同之处,最大的区别就在于它们的因变量取值不同。

  广义线下模型家族:

  • 若因变量是连续分布,就是多重线性回归
  • 若因变量是二项分布,就是Logistic回归
  • 若因变量是Poisson分布,就是Poisson回归
  • 若因变量是负二项分布,就是负二项回归

  Logistic是这样一个过程:对一个回归或者分类问题,建立代价函数,通过优化方法迭代求解出这个函数的最优参数,然后测试验证这个模型的好坏。

2、算法特点

  优点:

  • 速度快,适合二分类问题
  • 易解释,可以直接看到模型中各个变量的权重
  • 易调整,能容易地更新模型,吸收新的数据

  缺点:

  • 对数据和场景的适应性有限,精度一般,不如树模型、SVM、adaboost等一些其他的常用分类模型给力。

3、算法应用

  在Logistic回归模型中,y是一个定性变量,比如y=0或1,故其主要应用于研究某些分类事件发生的概率,如:银行业金融借贷场景中预测风险客户的违约逾期概率;气象局根据一些天气因素判断是否下雨;医疗机构根据病情特征判断客户患病的概率等。

  • 概率预测:根据模型,预测事件发生的概率;
  • 类型判别:将事件分类。

4、算法推导

1)Logistic分布

  我们首先介绍下Logistic分布(logistic distribution):

  设X为连续随机变量,X服从Logistic分布是指X具有下列分布函数和密度函数:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  如果所示:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

2)二项Logistic回归模型

  二项Logistic回归模型(binomial logistic regression model)是一种分类模型,由条件概率P(Y|X)表示,形式为参数化的Logistic分布。这里,X取实数,Y取值0或1。

  二项Logistic回归模型是如下的条件概率分布:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  这里x是输入,y是输出,w和b是参数,w成为权值向量,b称为偏置,w*x为w和x的内积。

  Logistic回归比较两个条件概率的大小,将实例分到概率值较大的那一类。

  当输入向量和权值向量扩充时,w = (w(1),w(2),…,w(n),b)T,X = (x(1),x(2),…,x(n),1)T,这时,Logistic回归模型如下:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  一个事件的几率(odds)是指该事件发生概率与不发生概率的比值,如果事件发生的概率为p,不发生的概率为1-p,那么该事件的odds为p/(1-p),该事件的对数几率log odds 或logit函数为:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  对逻辑回归而言,得:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  注意!注意!pay attention!!!

  也就是说,在Logistic回归模型中,输出Y=1的对数几率是输入x的线性函数,或者说,输出Y=1的对数几率是由输入x的 线性函数 表示的模型。

  通过Logistic回归模型定义式可以将线性函数w*x转换为概率:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  这时,线性函数的值越接近正无穷,概率值越接近1;线性函数的值越接近负无穷,概率值越接近0。这样的模型,就是Logistic回归模型。

3)模型参数估计

  Logistic回归模型学习时,对于给定的训练数据集T={(x1,y1),(x2,y2),…,(xn,yn)},可以应用极大似然估计模型参数,从而得到完整的Logistic回归模型。

  设:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  似然函数为:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  对数似然函数为:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  对L(w)求极大值,得到w的估计值。

  注意!注意!pay attention!!!

  这样,求参问题,就变为了以对数似然函数为目标函数的求参问题,Logistic回归学习中通常采用的方法是梯度下降法及拟牛顿法
  假设w的极大似然估计值是w,那么学到的Logistic回归模型为:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

4)极大似然估计

  (待续!)

二 标准评分卡开发流程

【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

1、数据获取

  准备数据源,如:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

2、数据处理

1)EDA

  对数据做描述性分析和探索性分析,发现变量的基本属性。

2)特征工程

  此处特征工程,特征特征处理,如缺失值、异常值、错误值、离群值等处理。

  对字段特征做处理,具体处理方式,请移步特征工程篇:【特征工程】呕心之作——深度了解特征工程

3)分箱

  • 概念:
    1.将连续变量离散化
    2.将多状态的离散变量合并成少状态
  • 目的:
    从模型效果上来看,特征分箱主要是为了降低变量的复杂性,减少变量噪音对模型的影响,提高自变量和因变量的相关度。从而使模型更加稳定。
  • 注意事项:
    分箱就是为了做到同组之间的差异尽可能的小,不同组之间的差异尽可能的大。
  • 分箱方法:
    等距、等频、卡方分箱、决策树分箱法
  • 分箱原则:
    (1)最小分箱占比不低于5%
    (2)箱内不能全部是好客户
    (3)连续箱单调

3、变量选择

1)woe编码

  • 概念:
    由于制作评分卡的某些需要,通常会在建立评分模型时将自变量(连续+离散都可以)做离散化处理(等宽切割,等高切割,或者利用决策树来切割),但是模型本身没办法很好地直接接受分类自变量的输入。所以信用评分卡中常用的WOE转换。
  • 目的:
    提升模型的预测效果,提高模型的可理解性。
  • 公式:
    WOE的公式就是:WOE=ln(好客户占比/坏客户占比)*100%=优势比
    好客户占比=数量(x︱y=好)/总人数
    【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

2)IV重要性

  • 概念:
      IV的全称是Information Value,中文意思是信息价值,或者信息量。
      在用逻辑回归、决策树等模型方法构建分类模型时,经常需要对自变量进行筛选。通常情况下,不会直接把所有变量直接放到模型中去进行拟合训练,而是会用一些方法。
      挑选入模变量过程是个比较复杂的过程,需要考虑的因素很多,比如:变量的预测能力,变量之间的相关性,变量的简单性(容易生成和使用),变量的强壮性(不容易被绕过),变量在业务上的可解释性(被挑战时可以解释的通)等等。但是,其中最主要和最直接的衡量标准是变量的预测能力
      “变量的预测能力”这个说法很笼统,很主观,非量化,而我们需要一些具体的量化指标来衡量每自变量的预测能力,并根据这些量化指标的大小,来确定入模变量。IV就是这样一种指标,他可以用来衡量自变量的预测能力。类似的指标还有信息增益、基尼系数等等。

  • 公式:
    【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

  • 标准:
      iv值一般取0.1-0.5,但iv值并不是越高越好,当高于0.5时就很可疑,因为它太过于好而显得不真实。但是也有些风控团队也将大于0.5的纳入模型,但是在学术界一般取值0.1-0.3

3)显著性、共线性、正负性、单调性分析的问题

  在变量初步选择完成后,我们还需要检查变量的可用性。通常要考虑的就是变量的显著性、共线性、正负性、单调性问题。

  注意!注意!pay attention!!!

  显著性水平,P-value,用于检验变量的有效性,通常取值为0.05以内。但在实际应用中,设为0.1,有可能比0.05更好,0.1的显著性水平就够了,90%相比95%的置信区间,其估计的误差范围要更小,也就是说牺牲估计的把握度可以换来估计的精确度。

  共线性不比解释,共线性明显容易导致过拟合。

  单调性正负性呢?我们记得在Logistic回归模型中,输出Y=1的对数几率是输入x的线性函数,又因为既然是线性函数,w内积向量的取值就需要正负一致呀;既然要保持线性,变量bad rate 就要保持单调一致呀。这样就不容易增加模型的复杂性,更易于解释。

  我们看图说话:
【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例
  这样,是否就立即明白了这个算法的简单性,线性加权的原理,一些困惑是不是就迎刃而解啦!

4、模型开发

  可使用R、python、matlab等语言,自己编写函数,或直接调用相对应的函数,进行样本拆分、模型训练、交叉验证等骚操作。具体流程,我们移步代码区,盘一遍就懂。

5、模型评估及监测指标

  风控模型评价指标总结

三 基于Logistic算法的标准评分卡开发python代码案例实操

  logistic算法构建标准评分卡python代码实例

四 总结

  logistic模型,是数据分析、建模人员的入门操作,正因其通用性、可调整和易解释性,才普遍为银行业、互联网金融行业业务所用。总结一句话:全民兼可盘!

  对数据分析、机器学习、数据科学、金融风控等感兴趣的小伙伴,需要数据集、代码、行业报告等各类学习资料,可添加qq群(资料共享群):102755159,也可添加微信wu805686220,加入微信讨论群,相互学习,共同成长。

  风里雨里,只要你骚,我就敢皮。