@chanvee
2016-09-12T21:32:45.000000Z
字数 2138
阅读 1846
民生银行项目
算法
- 项目名称:民生银行精准数据化营销项目
- 项目背景:由于当前经济下行,并且随着大数据时代的到来,银行也越来越注重数据的重要性,因此,我们实验室与民生银行四川省分行合作了这个精准数据化营销项目。项目主要包括三个部分:1)高效获客;2)风险预警;3)客户画像。我主要负责了前面两个部分的实现。
- 项目介绍:
- 高效获客:高效获客的目的是通过挖掘出行内的重要客户,然后通过对这些重要客户进行营销,从而能够更精准更有效的获得更多的客户。这里的客户特指的小微商户,就是那些有实体店的小老板,不是那种个人储蓄户哈。举个例子,如果我知道某个用户在某个行业很有影响力,那么我们就可以通过营销这个客户,比如说让他说服他的交易对手办民生银行的卡给他提成,或者说通过这个客户找到其不在行内的交易对手,然后告诉他你办张民生银行的卡你们之间转账就不要钱等等优惠。那么怎么来定义或者寻找哪些客户是重要的呢?这里我们采用的就是复杂网络的方法来解决。想要定义网络,我们首先就要定义节点和节点之间的连边。很自然地,我们可以把行内的每个客户(没有行外的客户,因为我们是找行内的重要用户)当作一个节点。接下来,就是怎么定义边?一个直观的方法就是如果两个用户之间存在交易的话,那么我们认为这两个用户对应的节点之间就存在一条边。但是这样会导致一个问题,就是这样构建的网络很破碎,即边太少了,网络连不起来,这是因为,大部分行内用户都是与行外的用户(比如建设银行啊,工商银行等等)进行交易。为了解决这个问题,我们对边进行了另外一种定义,即如果用户A和用户B他们与一个共同的用户C都存在超过一定次数的交易的话(比如说A和C一个月内交易了5次,B也和C一个月内交易了5次),那么我们认为A和B之间也存在一条虚拟的连边,即使A和B之间并没有直接的交易,这样就解决了上述问题。接着,我们按照上面的定义我们就可以构建一个图或者说复杂网络,然后再利用复杂网络中判断节点重要性的只是找到重要的节点,从而找到对应的重要的客户。我们提供了4个节点重要性的指标:a)degree(度),也就是与用户有交易的其他用户的个数;b)交易总金额,即用户与其交易对手交易总金额之和;c)betweenness(点介数),这个有点不好理解,我也不知道能不能说清楚,首先网络中两个点之间都会有一个最短路径,然后一个点的介数就是所有经过这个点的最短路径数的条数;d)枢纽性,这个也有点不好理解,我们根据客户实体店的地点划分为不同的商圈,比如什么荷花池商圈,磨子桥商圈之类的,然后节点枢纽性的定义就是与该节点有连边的所有节点中在不同商圈的个数。最后我们根据这四个指标的大小进行排序,选择出最重要的客户。
- 风险预警:风险预警的目的是当银行把一笔贷款贷出去之后,希望能够提前判断哪些客户在下一个还款日时可能发生逾期行为(这个更偏算法了哦,不知道你有没有相关知识了)。我们主要通过用户之间的交易流水数据(这部分数据反映了用户当前的一个经营状况)和用户的历史贷款还款记录数据(这部分数据反映的是用户历史的一个信誉状况),从中提取相关特征,然后利用机器学习的方法来进行预测。选取的机器学习算法是随机森林。为了银行相关人员能够理解,我们提出了两个评价指标:a)“准确率”,即算法预测为逾期实际也逾期的客户数与实际总的逾期客户数的比例;b)“过滤率”,算法预测为非逾期的客户数与总客户数的比。这部分一般面试官会以此问一些相关算法的问题,所以对项目本身反倒不是特别关注哈。
- 面试官可能会问到的问题:
- 数据量有多大?高效获客我们一般选取的是一个月的交易流水数据,数据量大概是100万到150万条记录;风险预警的数据大概一个月是要对2万8的客户约8万条贷款进行判断。
- 结果如何?第一个高效获客,我们将结果反馈给银行,并通过客户经理去实际营销了那些重要客户,通过客户经理的反馈,效果还是不错的;第二个风险预警,我们的准确率平均达到了83%,过滤率为85%,也就是说如果有1000个客户,其中有100个逾期的话,我们的算法预测出的150个逾期当中有83个是真正逾期的。
- 第二个风险预警中有多少特征,哪些特征比较重要?我们总共提取了100多个特征,其中有70多个原生特征,比如还款卡余额,贷款总金额等等,然后还根据原生特征提取了30多个衍生特征,如平均交易金额,交易金额方差等等;其中还款卡余额、历史逾期次数、交易总金额等特征比较重要。
- 为什么选择随机森林?我们一开始也选取了一些其他方法,但是效果都不是很好,这主要是因为数据不平衡导致的,即发生逾期的客户数占少数,而随机森林算法往往对于这种非平衡的数据有不错的效果。
- 请简述以下随机森林算法的思想?详见这里,也可以百度下。
- 主要利用的语言?python,你可以说成你熟悉的语言
- 怎么结合到你想投的岗位:
- 这个项目比较偏算法岗位,所以可能没有一些相关基础不太好讲,如果放到测试岗位上的话,你可以多强调下跟银行的业务人员要多沟通啊,要充分理解业务,才能提出那些指标和特征啥的,这个是跟学校不同的,一般面试官比较喜欢听这个;还可以讲讲你在项目各个不同的阶段测试文档的编写啊,思路啊什么的。简而言之,就是把测试公用的一套东西套在这个项目上。
- 加油加油(^_^).