精华内容
下载资源
问答
  • 导读本文主要是介绍基于逻辑回归算法的稳定度评分模型实现流程,所选案例也详细展示了模型构建的整个流程及处理方法。来源:原力大数据 丨作者:黄广山数据猿官网 | www.da...
        

    640?wx_fmt=gif

    640?wx_fmt=jpeg

    导读

    本文主要是介绍基于逻辑回归算法的稳定度评分模型实现流程,所选案例也详细展示了模型构建的整个流程及处理方法。

    640?wx_fmt=jpeg

    来源:原力大数据 丨作者:黄广山

    数据猿官网 | www.datayuan.cn

    640?wx_fmt=jpeg

    今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区

    640?wx_fmt=png

    存量运营是企业针对现有客户,以提升 客户忠诚度,释放客户价值为目的的一系列经营方针和策略,是在当前人口红利和流量红利消失的情况下,企业十分重视的板块。本文将介绍其中一种策略——客户稳定度评分体系构建。


    客户稳定度评分模型 是评分卡模型的一种,本质上是一种有监督的机器学习模型,是一种以分数衡量流失几率的一种手段,用来预测客户在未来一段时间流失的概率。


    通过对客户的稳定度进行评分,可以对客户进行 分群,并针对不同稳定度的群体制定相应的营销维稳策略,为企业实现精细化运营提供决策依据。


    评分卡模型在信贷管理领域广为人知,除此之外,它还被广泛的应用在市场营销、客户关系管理、账户管理等场景。下文将以我们原力大数据为运营商搭建的客户稳定度评分模型为例,介绍整个模型和应用实现过程。


    准备工具

    Python2.7编程环境,sklearn算法库及其他科学计算库


    实现流程

    Step1  数据准备


    (1) 定义目标变量


    正样本:即 低稳定度客户,指的是以当月在网客户为基数,4个月后非正常在网的手机客户,标记为1。

    负样本:即 中高稳定度客户,指的是以当月在网客户为基数,4个月后仍正常在网的手机客户,标记为0。


    (2) 收集数据


    以5月在网客户为基数,以9月底客户是否正常在网给不同客户打上标签,仍然正常在网标记为0,非正常在网标记为1。取正例5万、反例10万进行建模。取5月在网客户的4月、5月数据作为历史数据,以2个月时间窗作为观察期。


    (3) 数据字段结果


    取了以下23个字段数据,如表1 所示:

    表1   字段解释

    640?wx_fmt=jpeg

    Step2  数据预处理


    (1) 数据清洗


    • 无效数据处理:删除无效字段、样例、缺失值,本次建模,共删除无效样例1.7万。


    注意:资费ID字段是一个类别数超过2000的定性字段,容易过拟合,故删除;


    • 数据转换:将入网时间字段转换为网龄(用NET_AGE字段表示,以月为单位),转换为机器可识别的类型;


    • 缺失值处理:对定性特征(离散型特征)采用众数填充法,对定量特征(连续型特征)采用均值填充法,本例中,定量特征包括:NET_AGE 、YW_JWQ_NUM 、JWQ_NUM 、ARPU_N 、ARPU_N_1、MOU_N 、CALL_N 、CALL_N_1共计8个特征字段,其余特征字段均为定性特征;


    (2) 定量变量筛选


    • 定量特征筛选:通过相关系数法筛选定量特征,如表2 所示,表中为各数值特征与目标变量的相关系数,首先,删除与目标变量相关性低于0.3的特征:ARPU_N 、ARPU_N_1、YW_JWQ_NUM;

    表2   特征字段及目标变量之间的相关系数矩阵

    640?wx_fmt=jpeg

    *字段说明:NET_AGE(网龄)、YM_JWQ_NUM(异网交往圈人数)、JWQ_NUM(交往圈人数)、APPU_N(本月费用)、APPU_N_1(上月费用)、MOU_N(本月通话时长)、MOU_N_1(上月通话时长)、CALL_N(本月主叫通话时长)、CALL_N_1(上月主叫通话时长)、STATE(1:低稳;0:中高稳)


    • 共线性问题处理:共线性问题又称做多重线性问题,在应用逻辑回归模型时应尽量避免出现共线性问题,即特征之间出现强相关性(相关系数大于0.8)时只能保留一个特征。


    可以看出MOU_N、MOU_N_1、CALL_N、CALL_N_1具有强相关性,删 .除CALL_N、CALL_N_1字段,合并MOU_N、MOU_N_1字段为 .  MOU_AVG,表示本月及上月通话时长均值。


    • 调整效果检测:经上述处理,得出调整后的相关系数矩阵,如表3所示。下表所示结果已经消除了共线性问题,并保留了与目标变量较为相关的特征字段。

    表3  调整后的特征字段及目标变量之间的相关系数矩阵

    640?wx_fmt=png

    *字段说明:NET_AGE(网龄)、JWQ_NUM(交往圈人数)、MOU_AVE(本月和上月平均通话时长)、STATE(1:低稳;0:中高稳)


    3) 定量变量分箱


    • 离散化:构建稳定度评分模型时需要将定量变量(连续变量)进行离散化,本项目采用卡方分裂算法对筛选后的定量特征进行分箱处理,默认分为6组。


    • 卡方分裂算法:卡方分裂算法是监督的、自底向上的(即基于合并的)数据离散化方法。它依赖于卡方检验:具有最小卡方值的相邻区间合并在一起,直到满足确定的停止准则;


    其思想是对于精确的离散化,相对类频率在一个区

    间内应当完全一致。如果两个相邻的区间具有非常类似的类分布,则这两个区间可以合并;否则,应当保持分开。而低卡方值表明它们具有相似的类分布。


    • 定量变量分箱结果如表4:

    表4  定量变量分箱结果

    640?wx_fmt=png

    (4) 定性变量筛选


    计算各个定性变量的IV值,删除小于0.1的变量:CITY_ID、IS_BXL、IS_BROAD、IS_JX、IS_YJ_EX共计5个字段;


    (5) WOE转换


    • 计算WOE值。


    • WOE:基于逻辑回归的评分卡模型一般需要先将所有变量进行WOE编码。它实际表示“当前分组中响应客户(标记为1的客户)占所有响应客户的比例”和“当前分组中没有响应的客户(标记为0的客户)占所有没有响应的客户的比例”的差异,WOE越大,差异越大。于逻辑回归的评分卡模型需要先将所有变量进行WOE编码。


    • WOE值如表5所示:

    表5  WOE值计算结果

    640?wx_fmt=jpeg

    WOE其实描述了变量当前这个分组,对判断个体是否响应客户(流失客户)所起到的影响方向和大小。当WOE为正时,变量当前取值对判断个体是否会响应起到的正向的影响,反之亦然。WOE值大小,体现这个影响的大小。

    如表中网龄NET_AGE字段,网龄小于28个月的分组WOE值都为正,表明网龄小于28个月的客户更有可能被判定为流失客户,网龄越小,WOE数值越大,表明可能性也越大。


    6) 数据集划分


    采用分层抽样,70%为训练集,30%为测试集。


    Step3  模型训练


    • 调用sklearn算法库中 逻辑回归算法,在已经预处理完毕的训练集上训练模型。


    • 采用 网格搜索法,进行超参数调整,得到局部最优超参数;


    • 储存拟合好的模型参数β0,β1,…,βn。


    Step4  模型评估


    • 评估分类模型在测试集上的表现,采用 AUC值 作为评估指标;

      AUC(Area Under Curve)被定义为ROC曲线下与坐标轴围成的面积;其本质就是一个概率值。


    • 结果:本次分类模型在测试集上测试的AUC值是 0.834,即Score值将正样本排在负样本前面的概率是 83.4%,模型效果较好。


    Step5  生成客户稳定度评分表


    通常,得分越高代表客户越稳定。在本项目中,将优比定义为 4:1(理论流失概率/理论正常概率),此时理论流失概率为80%,对应的分数定义为200分,双倍优比分数为50分,即用户得分每增加(或减少)50分,那么他的优比(理论流失概率/理论正常概率)将变成原来的0.5倍(或2倍)。


    经过计算,本项目中的稳定度得分为:


    Score = 300 –72.134*In(odds)


    当odds等于1时,也就是理论流失概率等于50%时,Score = 300;


    当odds等于0.5时,也就是理论流失概率等于33.3%时,Score = 350;


    当odds等于0.25时,也就是理论流失概率等于20%时,Score = 400;


    推荐当理论流失概率 ≥33.3% 时,即Score≤350 时,判定为低稳客户,当然,企业也可以根据需要自行根据客户的稳定度分数对客户进行分群。


    • 根据表5结果,把每个变量各个分组的woe值代入公式,可以计算得到最终的客户稳定度评分表,分数越高,代表客户越稳定;如下表所示:

    表6  客户稳定度评分结果

    640?wx_fmt=jpeg
    • 使上述评分表(表6)可对客户进行稳定度评分,通过该客户各个特征字段的得分加总,最终可得到客户的最终稳定度得分。如以下例子所示:

    表7  客户稳定度评分应用示例

    640?wx_fmt=jpeg

    结语

    本文主要是介绍基于逻辑回归算法的稳定度评分模型实现流程,所选案例也详细展示了模型构建的整个流程及处理方法。尽管模型表现良好,所选案例仍然存在以下不足之处:


    (1) 选用数据维度稍显不足,可能会忽略掉一些对模型有较大影响的字段;


    (2) 处理2个月数据时,为了消除共线性,只采用了简单的取均值方法处理,模型迭代时可以考虑采用更细致的特征工程方法,譬如,做差值,衍生出数据变化趋势字段;


    考虑到数据的变化因素,稳定度评分体系构建之后应保持对模型效果的持续监控,当发现模型效果变差时,或者经过一定的时间周期后,需要使用最新的数据进行模型迭代,以保证模型的时效性、准确性。


    本文作者


    黄广山,原力大数据模型算法工程师。


    原力大数据


    原力大数据旨在为企业实现:管理、分析、激活企业大数据,发掘企业大数据金矿;洞察、连接、盘活企业存量客户,深度营销企业存量客户。


    原力大数据专注于为企业提供基于大数据、云计算技术的数字化市场营销产品与服务,包括自主研发的原力MarTech(Marketing Technology营销技术)云平台、原力互联网商情云平台、企业大数据平台构建及软硬件集成、企业大数据平台规划咨询及相关专业服务。


    原力MarTech云平台五大能力


    1 企业自有大数据梳理、清洗、集成及建模,挖掘并积累高价值大数据资源;


    2 全方位的企业经营分析可视化应用服务,涉及会员用户、营销渠道、营销商品、营销活动等;


    3 用户行为数据分析,建立用户标签,提供千人千面的用户画像;


    4 用户洞察、精准营销,提供针对用户的多渠道、全过程营销自动化能力;


    5 营销效果实时数据分析评估,营销活动全过程持续迭代优化。


    数据猿读者亲启:


    名企&大佬专访精选

    向下滑动启阅

    以下文字均可点击阅读原文


    跨国外企:

    谷歌大中华及韩国区数据洞察与解决方案总经理郭志明IBM中国区开发中心总经理吉燕勇微软中国CTO官韦青前微软中国CTO黎江VMware中国区研发中心总经理任道远


    中国名企:

    联想集团副总裁田日辉首汽租车COO 魏东

    阿里巴巴数据经济研究中心秘书长潘永花

    搜狗大数据研究院院长李刚易观CTO郭炜

    前上海证券交易所副总裁兼CTO白硕携程商旅亚太区CMO 邱斐艾瑞集团CTO郝欣诚泰康集团大数据部总经理周雄志上海链家研究院院长陈泽帅蓝色光标首席数据科学家王炼


    知名学者:

    北大新媒体研究院副院长刘德寰中科院基因研究所方向东

     

    创业明星:

    地平线机器人创始人兼CEO余凯天工科仪董事长王世金ZRobot CEO乔杨天眼查创始人兼CEO柳超第四范式联合创始人兼首席架构师胡时伟天云大数据CEO雷涛Kyligence联合创始人兼CEO韩卿数之联创始人兼CEO周涛明略数据董事长吴明辉91征信创始人兼CEO 薛本川智铀科技创始人、CEO及首席科学家夏粉丨易宝支付联合创始人兼总裁余晨海云数据创始人兼CEO冯一村星环科技COO佘晖碳云智能联合创始人兼首席科学家李英睿

     

    知名投资人:

    前IDG创始合伙人、火山石资本创始人章苏阳

    华创资本合伙人熊伟铭六禾创投总裁王烨

    信天创投合伙人蒋宇捷青域基金执行总裁牟颖

    蓝驰创投合伙人朱天宇


    ——数据猿专访部


    (可上下滑动启阅)






    640?wx_fmt=png





    640?wx_fmt=jpeg640?wx_fmt=gif


    ▲向上滑动


    采访/报道/投稿

    640?wx_fmt=jpeg

    yaphet.zhang@datayuan.cn


    商务合作

    640?wx_fmt=jpeg

    18600591561(微信)



    长按右方二维码

    关注我们ˉ►


    640?wx_fmt=jpeg


    展开全文
  • Solr评分整理汇总 Solr本身的排序打分规则是继承自Lucene的文本相关的打分即boost,这一套算法对于通用的提供全文检索的服务来讲,已经够用了,但是想要根据实际业务需求定制自己的打分机制来获取理想的查询结果...

    Solr评分整理汇总

       Solr本身的排序打分规则是继承自Lucene的文本相关度的打分即boost,这一套算法对于通用的提供全文检索的服务来讲,已经够用了,但是想要根据实际业务需求定制自己的打分机制来获取理想的查询结果,文本相关度的打分是远远不够的。
     

    如何来定制实际业务需求的的排序打分规则(boost)呢?暂时得到如下三个方法:
    1、熟悉Lucene的打分规则算法,根据自己实际业务需求对其源码进行修改来定制自己的一套打分算法。这个对于一般新手来说难度较大,并且研读Lucene底层源码耗费时间较多,并且自己修改的源码的健壮性不能保证(大牛除外),所以对于源码级的功能修改一般不要进行。
    2、利用solr自己的排序方法,可以在查询时指定按照哪一字段进行排序,比如按照时间的倒叙等,配置多个字段权重可以通过Solr的edismax实现的方法,配置不同字段的权重最终影响boost的打分。这种方法比较简单,需要配置一下即可用,但有自身的局限性,对于特殊需求达不到满足,比如付费的信息最前显示。
    3、在edismax方法的基础上进行修改,edismax支持boost函数与score相乘作为打分结果,可以在建立索引时单独建立一个字段作为排序的依据字段,并且配合其他字段设置权重来共同影响最终的打分结果。这种方法技能满足特殊需求又能够满足文本本身的相关度,是比较理想的一种解决方案。
     

    solr的DisMaxQParserPlugin通过配置来制定结果文档打分规则,提供在针对文本boost打分上,支持搜索多个schema索引字段,并针对每一个字段设置不同的boost权限。

    简单的字段权重设置为

    pf: 可提供对一条记录的多个字段做匹配的功能
    qf: 针对查询的每个字段设置不同的boost权重打分,其设置的字段必须为在pf中配置的项。

    三个查询字段文本的相关度分别为0.8、1、0.6,计算返回结果的方法是各个字段的文本打分乘以权重再相加作为boost得分

    单独设置打分字段的设置为:

    bf查询支持一些solr的查询函数,这些函数可以作用在索引的字段上,bf也支持添加权重。

    其中vip是为排序单独设置的一个索引字段,date是每条数据发布的时间

      linear(x,m,c)表示 m*x+c ,其中m和c都是常量,x是一个变量也可以是一个函数, sqrt(x) 返回 一个数的平方根,sum(x,y)求两个的和

     

    深入理解Lucene默认打分算法

    当谈论到查询的相关性,很重要的一件事就是对于给定的查询语句,如何计算文档得分。文档得分是一个用来描述查询语句和文档之间匹配程度的变量。如果你希望通过干预Lucene查询来改变查询结果的排序,你就需要对Lucene的得分计算有所理解。

    匹配文档的打分因子

    当一个文档出现在了搜索结果中,这就意味着该文档与用户给定的查询语句是相匹配的。Lucene会对匹配成功的文档给定一个分数。至少从Lucene这个层面,从打分公式的结果来看,分数值越高,代表文档相关性越高

    自然而然,我们可以得出:两个不同的查询语句对同一个文档的打分将会有所不同,但是比较这两个得分是没有意义的。用户需要记住的是:我们不仅要避免去比较不同查询语句对同一个文档的打分结果,还要避免比较不同查询语句对文档打分结果的最大值。这是因为文档的得分是多个因素共同影响的结果,不仅有权重(boosts)和查询语句的结构起作用,还有匹配关键词的个数关键词所在的域查询因子中用到的匹配类型……。

    在极端情况下,只是因为我们用了自定义打分的查询对象或者由于倒排索引中词的动态变化,相似的查询表达式对于同一个文档都会产生截然不同的打分。

    计算出一个文档的得分,我们必须考虑如下的因素:

    • 文档权重(Document boost):在索引时给某个文档设置的权重值。
    • 域权重(Field boost):在查询的时候给某个域设置的权重值。
    • 调整因子(Coord):基于文档中包含查询关键词个数计算出来的调整因子。一般而言,如果一个文档中相比其它的文档出现了更多的查询关键词,那么其值越大。
    • 逆文档频率(Inerse document frequency):基于Term的一个因子,存在的意义是告诉打分公式一个词的稀有程度。其值越低,词越稀有(这里的值是指单纯的频率,即多少个文档中出现了该词;而非指Lucene中idf的计算公式)。打分公式利用这个因子提升包含稀有词文档的权重。
    • 长度归一化(Length norm):基于域的一个归一化因子。其值由给定域中Term的个数决定(在索引文档的时候已经计算出来了,并且存储到了索引中)。域越的文本越长,因子的权重越低。这表明Lucene打分公式偏向于域包含Term少的文档。
    • 词频(Term frequency):基于Term的一个因子。用来描述给定Term在一个文档中出现的次数,词频越大,文档的得分越大。
    • 查询归一化因子(Query norm):基于查询语句的归一化因子。其值为查询语句中每一个查询词权重的平方和。查询归一化因子使得比较不同查询语句的得分变得可行,当然比较不同查询语句得分并不总是那么易于实现和可行的

    Lucene的打分公式

    Lucene概念上的打分公式是这样的:(TF/IDF公式的概念版)

    tf-idf

    上面的公式展示了布尔信息检索模型和向量空间信息检索模型的组合。我们暂时不去讨论它,直接见识下Lucene实际应用的打分公式:

    lucene-tf-idf

    可以看到,文档的分数实际上是由查询语句q和文档d作为变量的一个函数值。打分公式中有两部分不直接依赖于查询词,它们是coord和queryNorm。公式的值是这样计算的,coord和queryNorm两大部分直接乘以查询语句中每个查询词计算值的总和。另一方面,这个总和也是由每个查询词的词频(tf),逆文档频率(idf),查询词的权重,还有norm,也就是前面说的length norm相乘而得的结果。听上去有些复杂吧?不用担心,这些东西不需要全部记住。你只需要知道在进行文档打分的时候,哪些因素是起决定作用的就可以了。基本上,从前面的公式中可以提炼出以下的几个规则:

    • 匹配到的关键词越稀有,文档的得分就越高。
    • 文档的域越小(包含比较少的Term),文档的得分就越高。
    • 设置的权重(索引和搜索时设置的都可以)越大,文档得分越高。

    正如我们所看到的那样,Lucene会给具有这些特征的文档打最高分:文档内容能够匹配到较多的稀有的搜索关键词,文档的域包含较少的Term,并且域中的Term多是稀有的。

    下面详细解释公式乘积的每个因子的含义,以及是如何计算的,这样能够加深对Lucene得分计算的理解,才能在实际应用中根据需要调整各个参数,从而制定满足应用的排序策略。

    coord(q,d)

    评分因子,是基于文档中出现查询项的个数。越多的查询项在一个文档中,说明些文档的匹配程序越高。默认是出现查询项的百分比。这个评分因子的计算公式是

    public float coord(int overlap, int maxOverlap) {
        return overlap / (float)maxOverlap;
    }

    比如检索”english book”, 现在有一个文档是”this is an chinese book”。那么,这个搜索对应这个文档的overlap为1(因为匹配了book),而maxOverlap为2(因为检索条件有两个book和english)。最后得到的这个搜索对应这个文档的coord值为0.5。

    queryNorm(q)

    queryNorm(q)是查询权重对得分的影响,这个因素对所有文档都是一样的值,所以它不影响排序结果。比如如果我们希望所有文档的评分大一点,那么我们就需要设置这个值。它的计算公式如下:

    public float queryNorm(float sumOfSquaredWeights) {
        return (float)(1.0 / Math.sqrt(sumOfSquaredWeights));
    }

    tf(t in d)

    即term t在文档d中出现的个数,它的计算公式官网给出的是:

    public float tf(float freq) {
        return (float)Math.sqrt(freq);
    }

    比如有个文档叫做”this is book about chinese book”, 我的搜索项为”book”,那么这个搜索项对应文档的freq就为2,那么tf值就为根号2,即1.4142135

    idf(t)

    关联到反转文档频率,文档频率指出现 term t 的文档数docFreq。docFreq 越少 idf 就越高(物以稀为贵),但在同一个查询下些值是相同的。默认实现

    public float idf(long docFreq, long numDocs) {
        return (float)(Math.log(numDocs/(double)(docFreq+1)) + 1.0);
    }

    这里的两个值解释下

    • docFreq 指的是项出现的文档数,就是有多少个文档符合这个搜索
    • numDocs 指的是索引中有多少个文档。

    比如我现在有三个文档,分别为:

    • this book is about english
    • this book is about chinese
    • this book is about japan

    我要搜索的词语是”chinese”,那么对第二篇文档来说,docFreq值就是1,因为只有一个文档符合这个搜索,而numDocs就是3。最后算出idf的值是:

    (float)(Math.log(numDocs/(double)(docFreq+1)) + 1.0) = ln(3/(1+1)) + 1 = ln(1.5) + 1 = 0.40546510810816 + 1 = 1.40546510810816

    boost(t)

    查询时期term的加权,这个就是一个影响值,比如我希望匹配chinese的权重更高,就可以把它的boost设置为2

    norm(t,d)

    这个项是长度的加权因子,目的是为了将同样匹配的文档,比较短的放比较前面。

    比如两个文档:

    • chinese
    • chinese book

    我搜索chinese的时候,第一个文档会放比较前面。因为它更符合”完全匹配”。

    m(t,d) = doc.getBoost()· lengthNorm· ∏ f.getBoost()

    这里的doc.getBoost表示文档的权重,f.getBoost表示字段的权重,如果这两个都设置为1,那么norm(t,d)就和lengthNorm一样的值。

    public float lengthNorm(FieldInvertState state) {
        final int numTerms;
        if (discountOverlaps)
            numTerms = state.getLength() - state.getNumOverlap();
        else
            numTerms = state.getLength();
        return state.getBoost() * ((float) (1.0 / Math.sqrt(numTerms)));
    }

    比如我现在有一个文档:chinese book,搜索的词语为chinese, 那么numTerms为2,lengthNorm的值为 1/sqrt(2) = 0.71428571428571。

    索引的时候,把 norm 值压缩(encode)成一个 byte 保存在索引中。搜索的时候再把索引中 norm 值解压(decode)成一个 float 值,这个 encode/decode 由 Similarity 提供。官方说:这个过程由于精度问题,以至不是可逆的,如:decode(encode(0.714)) = 0.625

    注意事项:

    • TF-IDF 算法是以 term为基础的,term就是最小的分词单元,这说明分词算法对基于统计的ranking无比重要,如果你对中文用单字切分,那么就会损失所有的语义相关性,这个时候搜索只是当做一种高效的全文匹配方法。
    • 按照规则1 某个词或短语在一篇文章中出现的次数越多,越相关。一定要去除掉stop word,因为这些词出现的频率太高了,也就是TF的值很大,会严重干扰算分结果。
    • TF在生成索引的时候,就会计算出来并保存,而IDF是在query的时候获取,包含t的文档数= length(term的posting list)。

    参考文档:

    展开全文
  • 词 t 在文档 d 的词频( tf )是该词在文档出现次数的平方根。 tf(t in d) = √frequency 检索词在该字段出现的频率?出现频率越高,相关性也越高。 字段出现过 5 次要比只出现过 1 次的相关性高。 反向文档...

    Elasticsearch 的相似度算法被定义为检索词频率/反向文档频率, TF/IDF 。

    一. 相关概念:

    1. 检索词频率:tf

    词 t 在文档 d 的词频( tf )是该词在文档中出现次数的平方根。

    tf(t in d) = √frequency

    检索词在该字段出现的频率?出现频率越高,相关性也越高。 字段中出现过 5 次要比只出现过 1 次的相关性高。

    1. 反向文档频率:idf

    词 t 的逆向文档频率( idf )是:索引中文档数量除以所有包含该词的文档数,然后求其对数。

    idf(t) = 1 + log ( numDocs / (docFreq + 1))

    每个检索词在索引中出现的频率?频率越高,相关性越低。检索词出现在多数文档中会比出现在少数文档中的权重更低。

    二、计算公式为:

    score(q,d)  =  queryNorm(q)  · coord(q,d)  · ∑ (tf(t,d) · idf(t)² · t.getBoost() · norm(t,d))  
    

    其它参数定义:

    1. 字段长度准则:norm

    字段长度归一值( norm )是字段中词数平方根的倒数。

    norm(d) = 1 / √numTerms

    字段的长度是多少?长度越长,相关性越低。 检索词出现在一个短的 title 要比同样的词出现在一个长的 content 字段权重更大。

    1. 查询归一因子

    查询归一因子queryNorm )试图将查询 归一化 ,这样就能将两个不同的查询结果相比较。

    这个因子是在查询过程的最前面计算的,具体的计算依赖于具体查询

    queryNorm = 1 / √sumOfSquaredWeights 
    

    sumOfSquaredWeights 是查询里每个词的 IDF 的平方和。

    以上是对于一个词项检索时的相关度计算,当查询多个词项时,得出多个相关度,则需要按照向量空间模型来计算整体的相似度:

    向量空间模型:vector

    向量空间模型(vector space model) 提供一种比较多词查询的方式,单个评分代表文档与查询的匹配程度

    在向量空间模型里,向量空间模型里的每个数字都代表一个词的 权重 ,与 词频/逆向文档频率(term frequency/inverse document frequency) 计算方式类似。

    3、控制相关度

    一般来说,控制相关度的需求,分为两种:

    1. 忽略TF/IDF
      即不需要评分,可以使用constant_score来达成,在 constant_score 查询中,它可以包含查询或过滤,为任意一个匹配的文档指定评分 1 ,忽略 TF/IDF 信息。

    2. 定制评分
      function_score 查询 是用来控制评分过程的终极武器,它允许为每个与主查询匹配的文档应用一个函数,以达到改变甚至完全替换原始查询评分 _score 的目的。本文主要介绍使用script_score函数。

    使用脚本计算评
    script_score
    自定义脚本可以完全控制评分计算:

    {
        "function_score": {
            "functions": {
                "script_score": {
                    "script": "doc['price'].value + doc['margin'].value"
                }
            }
        }
    }
    

    4、Painless

    es脚本引擎,简单安全,无痛使用,Painless使用白名单来限制函数与字段的访问,针对es的场景来进行优化,只做es数据的操作,更加轻量级。

    Painless中变量可以声明为基本数据类型、引用类型、字符串、void(不返回值)、数组以及动态类型。其支持下面基本类型:

    byte, short, char, int, long, float, double, boolean.声明变量与java类似:

    int i = 0; double a; boolean g = true;
    

    数组类型支持一维和多维,初始值为null。与引用类型一样,使用new关键字,并为每个维度设置中括号

    int[] x = new int[2];  
    x[0] = 3;  
    x[1] = 4;  
    
    int[] b = new int[] {1,2,3,4,5};  
    

    painless支持动态类型,elasticsearch会自动推断类型

    def a = 1;  
    def b = "foo";  
    def[][] h = new def[2][2];  
    

    条件语句和运算符

    Painless包含完整的操作符列表,除了它们的优先级和结合性之外,这些操作符与其他高级语言几乎兼容。

    if (doc['foo'].value = 5) {  
        doc['foo'].value *= 10;
    } 
    else {  
        doc['foo'].value += 10;
    }
    

    Painless支持if else,但不支持else ifswitch

    循环

    def total = 0;  
    for (def i = 0; i < doc['scores'].length; i++) {  
        total += doc['scores'][i];
    }
    return total;  
    

    5、控制相关度实践

    该实例中将使用script_score,将评分设置为:
    doc['download_cnt'].value * 2.5 +doc['replication_cnt'].value * 1.2

    {
        "query": {
            "function_score": {
                "query": {
                    "match": {
                        "name": "1"
                    }
                },
                "functions": [
                    {
                        "script_score": {
                            "script": {
                                "params": {
                                    "download_ratio": 2.5,
                                    "replication_ratio": 1.2
                                },
                                "lang": "painless",
                                "inline": "doc['download_cnt'].value * params.download_ratio + doc['replication_cnt'].value * params.replication_ratio"
                            }
                        }
                    }
                ]
            }
        }
    }
    

    _search操作中所有的返回值,都可以通过一个map类型变量doc获取。和所有其他脚本语言一样,用[]获取map中的值。这里要强调的是,doc只可以在_search中访问到

    展开全文
  • 全面的信贷评分模型开发流程介绍

    在这里插入图片描述
    本课程,将从信用评分模型的发展、应用、类型及开发流程等多个方面展开介绍,旨在让初学者全面了解其在信贷金融领域里的可靠性及重要性,并且掌握一定的开发能力。

    文章目录

    1.评分卡简介

    1.1 简介

    定义: 信用评分模型是运用数据挖掘技术和统计分析方法,通过对消费者的人口特征、信用历史记录、行为记录、交易记录等大量数据进行系统的分析,挖掘数据中蕴含的行为模式、信用特征,捕捉历史信息和未来信用表现之间的关系,发展出预测性的模型,以一个信用评分来综合评估消费者未来的某种信用表现。

    应用:信用评分模型是消费者信贷中先进额技术手段,是银行、信用机构、个人消费信贷公司、电信公司、保险公司等涉及消费信用的企业实体最核心的管理技术之一。被广泛应用于信用卡生命周期管理、骑车贷款管理、住房贷款管理、个人贷款管理、消费信贷管理等多领域,在市场营销、信贷审批、风险管理、账户管理、客户关系管理等多方面发挥着十分重要的作用。

    起源:信用评分模型的应用和发展,首先是应消费信贷金融机构风险管理的需要而产生的,然后才逐步应用到市场营销管理、收益管理、客户关系管理等领域。

    发展:从数理分析技术发展的层次上讲,信用评分魔性的发展经历了3个历史阶段:

    • 以客户分类为核心:使用一些描述性统计方法,如均值、方差、频率、概率分布等和探索性统计方法,如聚类分析、因子分析、相关性分析等,对客户资质信息进行简单的分析,结合经验进行初步评估,以此为基础对客户进行分门别类。
    • 以预测模型为核心:是信用分析技术的重大突破,它通过对消费信贷机构的外部信息和内部信息等进行深度挖掘,提炼出大量的反映消费者行为特征和资信能力的衍生变量,并运用先进的数理统计技术把各种变量的信息进行综合,系统性地对客户未来某方面的信用表现作出预测。
    • 以决策模型为核心:比纯粹的预测模型又进了一步,它不仅对消费者未来信用表现进行预测,还会将其以函数的形式加入决策,综合其他多个参考因子,将其对决策的影响数量化。如风险定价、额度管理,不同消费者对不同的利率、额度等的敏感度不同,也就意味着,需要对不同类型的消费者进行区分决策。

    现状:如今,消费金融信贷领域中,评分模型主要应用于:

    • 风险管理
      • 审批
      • 授信
      • 评级
      • 定价
      • 贷后管理
      • 催收
    • 市场营销
      • 获客
      • 精准营销
      • 交叉销售

    效能:它可以为管理人员提供大量具有高度预测力的信息,帮助管理人员制定行之有效的管理策略,以较高的精度有效地开拓市场、控制风险、挖掘收益,实现消费信贷业务的高效益。

    技术:数据库技术、数理统计技术、计算机技术的发展,使信用评分模型的发展获得科技基础。消费信贷活动的过程产生大量发展信用评分模型所需要的相关数据,这些数据反映了消费者信用历史、资信状况、信用行为等方面的信息。

    • 数据库技术:用于大规模收集、整理、保存、提取数据;
    • 数理统计技术:用于从大量的、纷繁复杂的数据中挖掘有用的信息、提炼行为特征、分析行为模式;
    • 计算机技术:使数据分析、模型发展、模型自动化实施等的数据处理规模、速度不断扩大,加速了整体技术的发展。

    1.2 种类

    1.2.1 依预测目的分

    • 风险评分模型
      • 对违约拖欠的风险概率进行预测
    • 收益评分模型
      • 对消费者给信贷机构带来收益的潜力大小进行预测
    • 流失倾向评分模型
      • 对现有客户在未来一定时期内流失的概率进行预测
    • 市场反应评分模型
      • 对目标客户接受信贷机构影响的概率进行预测
    • 转账倾向评分模型
      • 对目标客户把贷款余额从别的银行转账过来的概率进行预测
    • 循环信贷倾向
      • 对目标客户或现有客户利用信用卡账户进行循环信贷的概率进行预测
    • 欺诈评分模型
      • 对信用卡申请或信用卡交易为欺诈行为的概率进行预测

    1.2.2 依发展主体分

    • 信用局评分模型(通用化模型)
    • 行业共享模型(通用化模型)
    • 以银行内部自有数据为评分基础的客户化模型(客制化模型)

    1.2.3 依实证化程度分

    • 专家风险评分模型
    • 半客户化评分模型
    • 完全客户化评分模型

    1.2.4 依模型对象分

    • 账户层次评分模型
    • 客户层次评分模型
    • 消费者层次评分模型

    1.2.5 依生命周期分

    • 拓展客户
      • 管理决策:目标客户判断、产品/激励、利率/年费/其他收费
      • 评分模型:信用局风险评分、信用局收益评分、信用局破产评分、市场反应评分、转载倾向评分
    • 审批客户
      • 管理决策:是否批准、定价、初始信用额度、交叉销售
      • 评分模型:申请风险评分、信用局风险评分、信用局收益评分
    • 管理客户
      • 管理决策:提高/降低信用额度、交易授权、超额透支授信、反欺诈、重新定价、激活/挽留、坏账催收、续发信用卡
      • **评分模型:**行为风险评分、行为收益评分、流失倾向评分、坏账催收评分

    1.2.6 依使用时机分

    • A_score

      • **定义:**进件评分(application score)对每一笔新申请的贷款进行评分,主要用在信贷准入门槛的设计和授信额度的确定方面
      • **数据:**申请前的客户基本信息、登录、行为信息、外部征信数据
      • **目的:**预估到期后发生严重拖欠的概率(逾期天数>60天)
      • 范围:
        • 不经过评分、特列类型的案件处理
        • 信息缺失的案件处理
        • 评分截点的设定策略
        • 例外推翻的控制
        • 应用评分决定贷款额度的策略和定价
      • 项目:
        A_score.rar
    • B_score

      • 定义:行为评分(behavior score)按月对未逾期的贷款进行评分,主要用来在贷后管理中确定客户风险的高低,进而根据风险的不同采取不同的贷后管理手段。
      • 作用:行为评分可用于信贷客户多方面管理,包括额度管理、市场活动、提前预警等。B_score、历史信贷行为、外部征信源、恶意刷额识别评分
      • 策略:按照不同评分,给予不同管理手段策略:
        • 特差:早期预警
        • :限额
        • :不予调额
        • 流失:流失挽回
        • :提升额度
      • 数据:

    图片

    • 项目:
      B_score.rar

    • C_score

      • 定义:催收评分(collection score),对当前月逾期的贷款进行评分。主要是用来在催收管理中确定风险比较高的客户,进而根据风险的不同采取不同的催收手段
      • 数据:逾期信息、行为信息、征信信息、风险分类标注、催收日志挖掘、催收语音转文本
      • 模型
        • 催收难度及力度
        • 失联修复
        • 催收亲密度模型
      • 作用:应用评分决定贷款催收管理策略:
        • **入催客户:**忘还款、手头紧、老赖
        • **计算催收容易度:**设备特征、行为特征、信贷表现、前几期还款情况
        • **决策结果:**易、中、难
      • 项目
        C_score.rar
    • F_score

      • 定义:F_score,利用多种定量方法,评估欺诈概率,拒绝疑似恶意骗贷客户的进件及申请
      • 模型:
        • 多种算法集成学习
          • 业务规则
          • 逻辑回归
          • 随机森林
          • 神经网络
        • 关联风险模型
          • 图数据库
          • 关联图谱
            • 定义:利用图数据库、聚类分析和复杂网络,实时识别群体欺诈风险,给出团案预警
            • 过程:实时数据清洗——计算连通图——团体分割——团伙特性分析
          • 复杂网络
        • **反欺诈预警模型 **
      • 数据
        • 设备信息:异常设备、网络、地址
        • 行为信息:异常注册、登录、点击
        • 关联信息:关联人风险
        • 授信信息:征信数据、机构黑名单
      • 项目
        F_score.rar

    1.3 作用及优势

    特性:客观性、一致性、准确性、全面性、效率性

    作用

    • 风险模式数据化
    • 提供客观风险量尺:减少主观判断
    • 提高风险管理效率:节省人力成本
    • 风险管理
    • 市场营销
    • 财务、资本预算及考核绩效
    • 资产证券化及组合模式的创新

    优势:

    • 更稳:大数定律,坏账率更可控
    • 更快:自动化审批,提升效率
    • 更省:降低人力成本(审批、反欺诈、催收)
    • 更充分地使用弱变量
    • 反欺诈:预防 > 亡羊补牢

    2. 评分卡项目规划

    在设置评分卡前,风险管理单位必须先就其对信用评分的期望、应用计划及策略提出项目规划,主要包括以下六项:

    2.1 项目目标

    陈述目前作业现况以及想通过评分卡项目解决的问题。信用评分卡的建置需投入大量时间、精力、金钱、人力,风险管理各单位人员需思考当前工作问题及对评分卡的期望,目标设定必须清楚明确,最后产出结果有真正的帮助。
    目标确认后,若需与外部信用评分卡厂商合作,依需求内容、开发时间、开发成本、开发经验与能力等构面设计选商条件并定订各项条件的评分权重。

    2.2 项目范围

    依急迫程度排列优先处理程序,避免一次性处理太多问题,做到聚焦。
    针对选定目标设定项目范围,包括项目主要内容、涉及业务、相关部门、项目组织架构、项目成员等,逐项确认并列于计划书内。

    2.3 时程规划

    时程规划可分为:内部前置规划、流程与系统修改、评分模型建置、效力测试、上线导入等几个重要阶段。项目长度依复杂度及数据质量而定,一般来说大约界于6~9个月。

    2.4 成本效益分析

    成本评估包括相关设备扩充、系统购置或修改、模型开发等费用。效益则分为质化与量化两方面,质化效益包括风险管理技术与观念的提升、授信质量稳定等,量化效益须估算可节省的人力、作业时间及作业成本等。

    2.5 配套措施

    与信用评分有关的相关事项如授信规范、申请书格式修改、进件及征审流程设计、数据质量确认、教育训练等皆须事先规划,另外与之搭配的系统如评分运算引擎、决策系统及征审系统等也须在评分模型建置完成前准备就绪,否则将出现空有评分模型却无使用平台或业务流程运转不顺等窘境。

    2.6 运营计划

    信用模型上线之后的实际应用于管理,诸如信用评分的应用、模型效能监控、相关系统维护、紧急备援计划、运营作业成本、MIS分析等作业皆须详细规划,以确保信用评分与风险管理业务整合之后能够顺利运行。

    3.评分卡开发流程

    图片

    3.1 业务理解

    3.1.1 开发目的

    此步骤非常关键,却易被忽略。开发模型前,必须先决定评分目的及要预测的事件,并要有明确的定义。模型应用目的不同,对变量选择或好坏客户的定义也会有所不同。
    风险管理单位按照项目规划设定的目标与模型建置人员讨论,确认建置模型的目的。另外双方对项目进行方式、建置时程、成本、交付文件项目及格式、模型测试指针、项目验收标准、教育训练,以及其他特殊要求或条件限制达成共识。

    3.1.2 模型要求

    如:可解释、复杂度、样本量

    3.1.3 客户类型

    如:自有渠道、外部渠道、新客、老客

    3.1.4 产品类型

    如:大额、小额、单期、分期

    3.2 基本定义

    评分目的确认之后,紧接着要对建模所需的重要指标的基本定义进行讨论。

    3.2.1 窗口期

    • 观察期
      • 定义:变量计算的历史期间
      • 区间:不宜太短,稳定性不高;也不宜过长,无法反映近期情况,一般为6~24个月
      • 特点:观察期时间窗口越长,建模样本数越少
    • 表现期
      • 定义:准备预测的时间长度,如:预测客户未来12个月内出现违约的几率
      • 区间:一般为12~24,根据产品不同会有变化
      • 特点:表现期越长,违约率越高

    3.2.2 违约定义

    对于预测建模,定义目标变量是最重要、对建模结果影响最大的一步。坏客户定义越严格,意味着坏账率越低,同样意味着通过率越低。
    违约定义并不限定为逾期,只要认定为非目标客户,如未来一年内出现M2以上逾期、催收、呆账、强停、拒住、协商等,皆可当成评分模型中的违约条件。
    银行业信用评分解决方案默认的目标事件定义选择:

    • 不良或逾期
      • (观察窗口内)90天逾期
      • (观察窗口内)230天或260天或1*90天
    • 良好:
      • 从未逾期
      • 从未在观察期内逾期

    也可根据坏账转移矩阵定义,不同账期客户转移到更坏的概率不同,选取显著变化的节点
    图片

    定义好的目标变量(GOOD/BAD)基于以上良好/不良定义创建并与ABT表并接后预测建模。

    3.2.3 适用范围

    • 灰色区间

    某些条件下的客户,风险处于较为模糊的灰色地带,很难将其归类为好客户或坏客户,此类客户无鲜明的风险特征,很难判断好坏。为强化模型的区隔能力,灰色地带的客户不适合纳入建模样本中。不过在模型完成后,看加入测试,观察分数落点,理论上中等分数居多。
    业务中,可利用**转移分析(roll rate analysis)**观察各条件下的客户经过一段时间后的表现,观察区隔力和稳定度,作为灰色区间客户的好坏判断条件。
    也可加入人工干预,直接进行评估。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sCERUsrq-1569656926265)(https://uploader.shimo.im/f/Ms3vUKfOFrIyOgvl.png!thumbnail)]

    • 无评分意义

    并非所有状况都须依赖评分来判断风险,有些类型客户评分意义不大。例:

    • 目前处于逾期中的客户,本身已出现违约事实,无须加以评分

    • 数据缺漏严重

    • 数据期间过短

    • 近来无信用往来记录

    • 非常规对象

    用于建模的客户或申请者必须是日常审批过程中接触到的,需排除几类人群:

    • 异常行为:如销户、按条例拒绝的、特殊账户
    • 特殊账户:出国、失窃、死亡、未成年人、员工账户、VIP
    • 其他建模对象:欺诈、主动销户者(流失)

    3.2.4 样本区隔

    为了达到最佳效果,通常依客群或产品特性做样本区隔,分别开发数张字评分卡。
    **例:**信用卡的行为评分卡,预借现金、长期循环及全额缴清等几类客户行为各有特殊,其风险变量及变量权重可能有所差异,可考虑分别就这几类客户开发专属的子评分卡。
    若受预算、开发时间、数据积累等限制,暂时无法细切区隔而共享同一评分卡也可以,权宜做法为调整切分点或外加条件以做调整,不过效果可能较差。
    样本区隔不宜过度,适度有助于提高模型预测效果,过度则不但不利于后期子评分卡维护,且建模样本不足,反而影响模型的预测能力及稳定度。

    3.3 数据准备

    整个建模项目,最耗费时间的通常是数据整理阶段,对于入模数据,有如下多方面的准备条件。

    3.3.1 数据来源

    图片

    3.3.2 数据有效性

    • 正确性:数据真实准确
    • 完整性:广度、深度、长度,数据保留完整,缺失率低
    • 实时性:可以反映客户近期情况,实时更新客户动态信息变化
    • 合法性:数据使用必须合法,使用前需确认当地法令对授信准驳依据是否有特殊限制。某些国家不允许以性别、年龄、种族、地域等因子作为准驳依据条件。
    • 可用性
      • 不合理数据。如年龄过小或多大,予以剔除
      • 缺失数据。可利用平均数、众数、邻近值进行填充,如空值有特殊意义,可保留。
      • 数据加密格式。了解数据格式,厘清数据使用限制。

    3.3.3 原始变量选择

    获取到数据后,根据业务提取重要特征,建立对应数据字典
    图片

    3.3.4 样本选择

    • 样本数量:

    不同模型对数据量的要求不同,基本要求在5000+,最好可以达到3~10W,数据量越多越好。

    • 样本质量:

    样本内的数据需满足如下要求:

    • 代表性
    • 充分性:样本分布均匀
    • 时效性:窗口期内
    • 排除性:唯一标识
    • 表现推测性:正负样本分布明显

    3.3.5 抽样方式

    • 随机抽样
    • 分类抽样

    3.3.6 数据集准备

    按照要求准备原始变量及样本集,并且完成数据合并

    3.3.7 数据采样

    • 采样目的
      • 均衡样本
    • 采样方式
      • 过采样
      • 欠采样
      • 变量权重调整
    • 采样结果
      • 好坏样本比率为:3:1~5:1

    3.3.8 样本切分

    通常将样本集拆分为训练集测试集,通过评估模型在两个数据集上的表现,评估准确性及稳定性。可增加验证集,迭代模型区隔力和稳定度。

    • 训练集
      • 即发展组样本,一般占比70%
      • 用于建模
    • 测试集
      • 即对照组样本,一般占比30%
      • 建模完成后做验证之用

    3.4 数据探索

    3.4.1 数据质量检查

    • 正态性检验
    • 准确性诊断

    3.4.2 描述性统计分析

    • 样本总体
      • 样本量
      • 特征量
    • 变量类型
      • 连续型变量
      • 离散型变量
        • 数值型
        • 类别型
    • 变量分布
      • 位置度量
        • 中位数、众数
      • 集中程度
        • 均值、方差
      • 离散程度
        • 偏度、峰度
    • 缺失程度
      • 变量缺失
      • 样本缺失

    3.4.2 EDA探索性分析

    探索性分析和数据描述是检查数据并理解其特征的一系列过程的名称。在评分卡开发过程中,需要进行下列指标计算及变量分析:

    • WOE转换(证据权重)

    WOE值是分箱i的坏客户分布与好客户分布的比值的对数,调整为分箱i的坏好比与总体样本的坏好比 的比值的对数,衡量了分箱i对整体坏好比的影响程度。
    图片

    图片

    • IV(信息值)

    图片
    图片

    • 单变量分析(Single Factor Analysis):候选变量单变量统计特征的评价,及其取值在变量范围内的分布。完成变量分箱、WOE编码与IV计算后,我们需要做单变量分析,一般从两个角度进行分析:

      • **单变量X分布稳定性:**各箱占比相对均匀,每项占比不宜过高或过低,一般不低于5%
      • 单变量X与目标变量Y关联:验证单变量重要性
        • 从IV出发,筛选IV较高值
        • 单变量与目标变量做回归检验P值
    • 多变量分析(Multi Factors Analysis) :通过列联表、关联性和相关性指标确定不同变量之间的检验关系。多变量分析从两个角度分析变量的特性并完成筛选工作:

      • 变量间的两两线性相关性,通过相关系数矩阵
        • 选择IV较高的
        • 选择分箱均衡的
      • 变量间的多重共线性与目标变量关系,变量筛选
        • 特征重要性:随机森林、GBDT、XGBOOST
        • 模型拟合优度和复杂度:基于AIC的逐步回归
        • 带约束:LASSO
        • 多重共线性检验:VIF
    • 违约要素分析:计算每个候选预测变量分类或分段条件下的违约率分布。

    3.5 数据清洗

    3.5.1 格式处理

    3.5.2 缺失值处理

    3.5.3 异常值处理

    3.5.4 数据规约

    3.5.5 变量粗筛

    • 无意义变量
      • 如唯一标识、手机号等无效字段
    • 常量
      • 单类别比例超过95%,默认为常量,可剔除
    • 缺失率
      • 缺失率不高于设定值
    • 单类别比例
      • 单类别比例不低于5%

    3.6 特征工程

    3.6.1 特征衍生

    • 衍生目的

    基于业务,衍生适合入模的好特征,好的特征具有以下优势:

    • 稳定性高:市场因素,人群产品稳定的情况下,特征的分布稳定
    • 区分性高:违约与未违约客群的分布显著不同
    • 差异性大:不能在全部或大多数客群上取单一值
    • 可解释性强:特征与信用风险的关系符合风控逻辑
    • 衍生方式
      • 基于不同类别型变量,衍生不同时间切片某种操作频率、频次、登录方式个数等。
      • 基于时间变量,衍生账龄、在账月份数
      • 波动率指标,某种操作频次的频率、标准差
      • 决策树创建新特征

    图片

    • 衍生手段
      • 手动创建
      • 暴力生成

    3.6.2 特征分箱

    • 分箱定义:
      • 连续变量离散化
      • 状态多的离散变量合并少状态
    • 分箱优势:
      • 稳定性:避免特征中无意义的波动对评分带来波动
      • 缺失值处理:可将缺失作为独立的分箱带入模型
      • 异常值处理:可于其他值合并作为一个分箱
      • 无需归一化:从数值型变为类别型,没有尺度差异
    • 分箱限制:
      • 有一定的信息丢失,数值型变量分箱后变为取值有限的几个值
      • 需要编码。分箱后的变量是类别型,不能直接带入Logistic模型中,需要进行一次数值编码
    • 分箱方法:

    分箱原理为相似度高的归为一组,有监督考虑业务含义相似度,无监督考虑样本分布相似度。

    • 有监督
      • Best KS
      • ChiMerge卡方分箱
      • 决策树最优分箱

    图片

    • 无监督
      • 等频
      • 等距
      • 聚类

    3.6.3 特征编码

    • 编码方式
      • 数值编码
      • one-hot编码
        • 针对类别型大于2的分类变量,将其哑变量化
      • WOE编码

    3.6.4 特征选择

    为了提高信息值,需调整合并WOE相近的组别,最后得到的分组结果为粗分类。待所有长清单的变量信息值皆计算完成后,即可从中挑选变量,优先排除高度相关、趋势异常、解释不易及容易偏移者。
    经过筛选后的变量集合成为短清单,这个清单即模型的候选变量。在建模时可利用顺向进入
    法(forward selection)、反向排除法(backward elimination)、逐步回归法(stepwise)等方法选出效果最佳的变量组合。

    • 选择方式
      • 重要性
      • 共线性
      • 信息值
        • IV值高于0.2
        • IV高于10的剔除
      • 模型筛选
        • LASSO
        • stepwise

    3.7 模型训练 model training

    3.7.1 算法选择

    • Logistic
    • 优点:
      • 成熟、成功
      • 评分结果稳定
      • 评分构成透明
      • 实施部署简单
      • 不容易过拟合

    图片
    图片

    图片
    图片
    图片

    • GBDT

    图片
    图片

    • XGBOOST

    图片
    图片

    • 神经网络

    图片

    • 组合模型

    图片
    图片

    3.7.2 训练 train

    3.7.3 测试 test

    3.7.4 验证 oot

    • 准确性、稳健性、有意义
    • 样本外测试
    • 时间外测试

    3.8 拒绝推断

    通常,我们用以建立评分卡的建模对象人群(以前的Accepts)在结构上可能与实际申请人群存在着结构上的差异。因为只有接受了的申请者才能够对其定义目标变量。但我们将在生产系统中部署的模型需要对未来所有申请者评分。因此需要对拒绝过的用户做违约推断,即拒绝演绎、婉拒推论。
    只有当建模的接受人口(Accepts)与实际申请总体差别才需要拒绝推断:

    • 很大的时候评分卡批准率相对较低(低于70%)
    • 或以前的拒绝标准根据完全的人为判断决定的时候

    是否两总体间存在较大差异,可以通过一系列特征比较的图表来进行判断
    基本思路:

    • 利用在接受人群基础上训练的模型对拒绝人群评分
    • 将拒绝人群分为“推断好/推断不良”
    • 将此作为拒绝人群的目标变量累加(Append)到接受人群建模数据里
    • 对新数据集重复模型训练过程

    过程图
    图片

    具体方法

    • K近邻法

    当K=5时,对于新样本的预测选取最邻近的5个观测的分类的众数。

    3.9 标准评分转换

    基于预先设定的PDO及Base Point 对每个入模特征规则配置相应分值
    图片

    图片

    图片

    3.10 效力验证

    评分卡模型构建完成后需要验证魔性的性能,保证模型既稳定、有效,部署后需持续监测模型的表现,做到及时更新与迭代

    3.10.1 基本要求

    一般一个好的模型应该达到以下几个基本要求:

    • 精确性。达到可接受水平,避免过拟合。
    • 稳健性。要求最终模型的变量应该能够确保包含稳健一直的数据,能够在后续实施阶段准确获取,能够适用于更广范围的数据集。
    • 有意义。即业务变量及其预测值是可解释的,例如:信用卡的额度利用率越高,违约率相应也越高。
    • 模型中变量不宜过多。通常,包含的变量不超过1020个(最优1012个),变量太多可能导致过拟合,变量太少往往区分度不够。

    图片

    3.10.2 模型准确性

    • KS

    KS(柯尔莫哥洛夫-斯米尔诺夫kolmogorovsmirnow)图纵轴为坏客户累计百分比,横轴为 总体样本累计百分比。perf_eva函数绘制KS 曲线过程:
    ◦ 先将样本随机排列,随机种子seed默认为 186
    ◦ 按照预测违约概率倒序排列(坏客户累计百 分比曲线位于上方)
    ◦ 分为groupnum(默认20)等份 ◦ 计算每一等份中违约与正常客户的累计百 分比
    ◦ 绘制出两者之间差值即为KS曲线
    • KS曲线中的最大值即为KS值,其取值范围 0~1。KS值越大模型的区分能力越好。
    • 通常申请评分卡要求KS 0.3。而且测试集 与训练集的KS值相差小于0.01。
    图片

    • ROC与AUC

    • ROC(受试者工作特征曲线Receiver Operating Charactersitic)曲线纵轴为 真正例率(True Positive Rate, TPR),横 轴为假正例率(False Positive Rate, FPR):
    ◦ 先将样本随机排列,随机种子seed默认为 186
    ◦ 按照预测违约概率降序排列
    ◦ 分概率值计算好坏客户数量,然后计算 TPR=TP/(TP+FN)与FPR=FP/(TN+FP) ◦ 以TPR为纵轴FPR为横轴绘制散点图即为 ROC曲线
    • AUC(Area Under ROC Curve)为ROC曲线 下面积之和,其取值范围0~1。AUC值越大模 型效果越好。
    • 行为评分卡通常要求AUC 0.75,申请评分 卡的AUC相对低一些也能够接受。
    图片

    • GINI系数

    3.10.3 模型排序性

    • Lift

    3.10.4 变量有效性

    • IV

    3.10.5 模型稳定性

    • 评分稳定性指标(PSI)

    图片
    图片

    • 特征分布指标(VSI)

    3.10.6 评分排序性

    信用评分与违约概率成反比,分数越高停贷率越低;客群的评分分布区间一般符合正态性,有一定的离散度。
    图片

    3.11 模型报告

    整理完整的模型开发过程报告

    4.模型部署

    4.1 模型文件

    4.1.1 pkl

    4.1.2 pmml

    4.2 部署方式

    4.2.1 脚本

    4.2.2 决策引擎

    决策引擎配置

    • 位置:DW
    • 内容:信用评分——风险策略——数据集市CRM
    • 作用:决策额度、计算、定价

    5.评分卡的切分与使用

    5.1 评估指标

    利润贡献者所带来的利润,在弥补着利润消耗者带去的损失,信贷风险管理,讲究一个平衡和最优。综合评估模型不同决策点下的通过率和逾期率,制定最优效益的评分决策

    • 逾期率
    • 通过率
    • 综合盈利
    • 准入线

    5.2 设定策略

    • 准入线的设定策略
    • 风险切分点的设置
    • 不经过评分、特别类型的申请件的处理
    • 评分卡信息缺失的申请件处理
    • 例外推翻的控制

    图片

    图片

    5.3 基于A_score的额度定价

    预先设定好基础额度base limit(B),盖帽额度hat limit(H),托底额度floor limit(F)。评分最高的区间杜颖的预期违约率是Pmin,评分最低的区间对应的预期违约率是Pmax,占比最高的区间对应的预期违约率是P0,某一条进件对应的预期违约率是P1,则该进件对应的授信额度是:
    图片

    5.4 基于A_score的利率定价

    增添多种其他利率因子,同样与模型评分相关

    6.模型监控

    模型实施后,要建立多个报表对魔性的有效性、稳定性进行监控

    6.1 监控报表

    6.1.1 稳定性监控

    比较评分卡上线后建模训练样本客户的分值分布,监控模型的有效性。
    图片
    图片
    图片

    6.1.2 特征监控

    比较评分卡上线后和建模训练期间的每个特征的分布,监控特征的变化趋势,从而评估模型的有效性和稳定性
    图片
    图片

    6.1.3 未过评分账户监测

    6.1.4 不良贷款分析

    评估不同分数段的不良贷款,并与建模训练期间的预测进行比较,监控客户信贷质量。
    通过对不同分数段的不良信贷资产进行账龄分析、迁徙率分析,监控信贷资产质量是否发生显著性的变化。
    图片

    6.1.5 拒绝原因分析

    分析被评分卡拒绝的原因分布
    图片
    图片

    6.2 风险跟踪

    • 风险趋势分析
    • 异常行为分析
    • 欺诈网络分析
    • 风险警告

    7.模型调优

    网贷市场环境变化快,评分卡生命周期短,相比传统信贷模型迭代频率高。评分模型需保持稳定,当产品、客群、宏观经济、监管政策等没发生重大变化时,不同时间上的评分结果应保持稳定,便于策略应用。
    图片

    7.1 调优原因

    7.1.1 市场环境变化

    • 市场转移
    • 行业变化
    • 产品变化

    7.1.2 模型监控

    • 入模变量发生重大偏移
    • 当前评分与建模评分分布发生变化
    • 模型区分能力变差
    • 变量区分度变差

    7.1.3 新变量探索引入

    • 新数据源引入
    • 新的预测变量探索

    7.2 调优方法

    收紧或放松

    7.2.1 A类调优

    • 在通过的客群中寻找差客户拒绝
    • 将会降低通过率,且降低逾期指标
    • 离线即可完成量化分析

    7.2.2 D类调优

    • 在拒绝的客群中寻找好客户通过
    • 将会提高通过率,逾期指标可能增加
    • 需要决策引擎标记豁免部分样本分析

    7.3 调优步骤

    • 确认调整贷前策略还是贷中策略
    • 是D类调优还是A类调优
    • 量化分析调优阈值
    • 预测按照方案调整后的效果
    • 调整后验证结果与预计效果是否
    • 重复修正

    7.4 调额步骤

    • 筛选可调额客户
    • 分为调额组合对照组
    • 调额后调额组对照组资产趋势分析
    • 根据结果回调最初筛选可调额客户的规则

    8.常见问题

    8.1 数据问题

    • 历史数据量过少
    • 历史数据无切片

    8.2 建模问题

    • 建模目标不明确
    • 模型过拟合
    • 模型选型不合理
    • 错误使用后验变量
    • 评分的评估指标不合理
    • 离线数据与在线数据不一致

    8.3 业务问题

    • 沟通问题
    展开全文
  • 评分卡模型的IV和WOE详解

    万次阅读 多人点赞 2017-12-11 13:17:39
    比如我们有200个候选自变量,通常情况下,不会直接把200个变量直接放到模型去进行拟合训练,而是会用一些方法,从这200个自变量挑选一些出来,放进模型,形成入模变量列表。那么我们怎么去挑选入
  • 则意味着该文档与用户提交的查询时匹配的,在这种情况下,每个返回的文档都会有一个得分,得分越高,文档相关更高,但是,同一个文档针对不同查询的得分是不同的,比较某个文档在不同查询的分数是没有意义的,...
  • ES学习——ES评分简单介绍

    千次阅读 2019-03-30 19:00:30
    当我们能使用match来搜索匹配数据的时候,es会给每一个文档进行评分(匹配),并根据评分的大小对结果文档进行排序。 介绍 es的实时评分机制是基于 Lucene 的基础上实现的,最常见的是 TF/IDF和BM25这两种评分模型...
  • 第三方评分控件 RatingBar的使用

    千次阅读 2017-03-29 12:21:45
    需要自定义RatingBar的...通过网络搜索,发现这是原生RatingBar本身的问题,很多开发者推荐使用第三方评分控件。 一、添加依赖 dependencies { compile 'com.hedgehog.ratingbar:app:1.1.2' } 二、布局文件
  • 申请评分的数据预处理和特征衍生 模型处理的一般流程: 构建信用风险模型的特征 获取数据 链接:https://pan.baidu.com/s/1CsY11ArZ6YK3o1icghWj2w 提取码:znbs 数据预处理 1.基本处理: 原始数据带有一定的...
  • 项目一直用到RatingBar这个评分控件但奈何系统的太难用了,使用他要满足我们的需求需要弄一堆样式、设置这些或者那些东西。但这都不是重点最要命的是设置我们自己的图片他竟然对图片大小还有要求,若不合格就直接...
  • 金融申请评分

    千次阅读 2018-07-01 12:56:43
    金融申请评分卡(1)2018年02月23日 00:26:08阅读数:527金融申请评分卡概念的介绍 目前金融申请评分卡主要使用在一些互联网金融企业和保险银行机构,主要用来解决目前金融机构存在的信用风控问题。1、信用违约风险...
  • 信用评分与数据挖掘

    千次阅读 2018-09-07 14:16:47
    1、数据挖掘思维导图 思维导图为:Dr. Saed Sayad总结的An Introduction to Data Mining 个人更喜欢的分类方式为:1、分类与预测2...信用评分中主要包括申请评分、行为评分、催收评分卡、反欺诈。     其中,...
  • Z评分模型 有5个变量,Z1适用于上市公司,Z2适用于非上市公司,Z3适用于非制造企业。 Z1=1.2X1+1.4X2+3.3X3+0.6X4+0.999X5 X1:衡量资产流动性=(流动资产-流动负债)/资产总额 X2:衡量持续发展力=未分配利润/资产...
  • 申请评分的数据预处理和特征衍生 本章文章主要讲解以下内容 构建信用风险类型的特征 特征分箱 WOE编码 构建信用风险类型的特征 在我们运用模型之前,我们首先要进行特征工程,其本质是一项工程活动,目的...
  • 风控评分模型

    千次阅读 2017-05-04 15:53:31
    )前向后向选择,依赖模型,通过 AIC 或者 BIC 来选择最优特征集合。 五 模型  5.1  模型简介 这里采用的模型是 logistic regression  ,简称 LR 模型。选择这个模型的理由:( 1 )简单...
  • 评分卡模型-卡方分箱

    千次阅读 2018-11-20 18:39:02
    评分卡建模在金融行业应用得比较广泛,比如对客户的信贷诚信进行评分。在建模过程,对连续变量的分箱是一个必不可少的过程。正好我最近的项目也是要做一个积分卡,因此想对分箱做一个较全面的总结。 2.定义 ...
  • 信用评分卡(A卡/B卡/C卡)模型简介

    千次阅读 2019-07-24 21:10:48
    如今在银行、消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户有一个优质与否的评判。但是不是所有人都知道信用评分卡还分A,B,C卡三类!A卡(Application score card)申请评分卡B...
  • Lucene 评分机制

    2014-07-13 10:33:40
    在检索文档时,lucene会计算文档与查询语句之间的相似程度,以打分的形式来表示,分值越高,相似度和匹配越高。计算分值的公式如下: score(q,d) = coord(q,d) · queryNorm(q) · ∑ ( tf(t...
  • 现代组织越发依赖数据进行决策...本文就数据分析系统的两个重要问题:问卷评分中问题的选择,和系统的专家调整,进行了分析和阐述,并结合R语言给出了分析的例子。 本文的思路和方法,适用于所有的数据分析系统改进。
  • 零开始打造完整评分系统

    千次阅读 2012-09-03 06:56:26
    那么在本文,我们就来学着如何打造一个可用的评分系统。   2. 构建简单的评分系统 其实最初做一个评分系统很简单,我们首先先设计评分系统所需要的数据表,即用户评分表(user_rating):   CREATE...
  • 而对于代码依赖包的安全问题是我们这篇文章重点解决的事情,业界通常使用Dependency-Check来检查代码是否存在任何已知的,公开披露的安全漏洞。他检查依赖项中是否存在漏洞的原理也跟我们熟知的病毒查杀软件一样,...
  • 如今在银行、消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户有一个优质与否的评判。但是不是所有人都知道信用评分卡还分A,B,C卡三类! A卡(Application score card)申请评分卡 ...
  • 个性化社交网络协同过滤推荐系统依赖用户的社交关系(用户关注用户操作,称为用户之间的信任),根据用户对项目的评分数据,计算目标用户的最近邻居,同时将目标用户信任的用户加入最近邻居,进行推荐,旨在提高...
  • 在信贷风控领域,随着大数据、计算机集群技术、网络技术和人工智能的发展,越来越多的金融机构将传统的策略风控手段转向依赖机器学习模型等量化手段。信贷环节的审批、预警、催收以及营销等诸多场景也适合机器学习...
  • 信用评分与数据挖掘(一~七)

    千次阅读 2017-11-22 14:00:13
    转载自:http://www.cnblogs.com/nxld/p/6364958.html 1、数据挖掘思维导图 思维导图为:Dr. Saed Sayad总结的An Introduction to Data...2、信用评分中的常见算法 ...信用评分中主要包括申请评分、行为评分、催
  • 在这个博客,我将讨论如何使用Python (pandas, Sklearn)开发一个标准的评分卡,这是最流行和最简单的信用评分形式,用来衡量客户的信用价值。 项目动机 如今,信誉对每个人来说都是非常重要的,因为它被视为...
  • 相关性评分计算原理简介

    千次阅读 2019-05-16 11:34:24
    由于ES的索引原理是基于词的倒排索引,因此相关性评分也是基于词生成,简单来说,就是计算搜索条件内,每个词汇的相关性得分,然后进行相加后得到最终整个搜索条件的相关性得分。 我们再来回顾一下ES的评分原则:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,045
精华内容 5,618
关键字:

中度依赖的评分