通过芝麻信用,能够很好地判断一个人的信用到底好不好,也可以结合人的行为偏好来做更精准的推荐。但千人千面,芝麻信用分是如何计算出来的?今天我们就来详细了解下——授信模型这个概念。
授信模型
芝麻信用分是由五大维度构成。
身份特质:你的学历(高中毕业还是博士毕业),表示人本身的稳定性,长时间改变不了的特质。 履约能力:看你消费后按时还款的能力(是否有房有车),表示人消费的兜底性。 信用历史:看你历史的信用(信用卡有无逾期),表示人本身的诚信。 人脉关系:看你支付宝好友的信用分是不是都很高,表示个人身份的稳定性及弱价值性。 行为偏好:看你是喜欢买价格高的还是低的,这部分数据最重要,表示人本身的当前信息,对产品后续决策有非常大的价值。
数据源
数据建模授信模型的第一步是数据源,同样以芝麻信用为例(如下图所示)。
从图中可以看出这里有一级分类:身份特质、行为偏好、履约能力、信用历史、人脉关系。这五大维度实际上有很多字段的中文名,每一个维度大概用了哪些字段,这些就是数据源。这里真实的数据变量有上千个,为什么会有这么多变量呢?实际上数据变量分为原始变量和衍生变量。
原始变量:是直接存储在数据库里的最基础变量,如每天的交易额(你今天花了多少钱)。 衍生变量:衍生变量是在基础变量的基础之上进行的,因为金融的本质是风险,所以都要对原始变量进行加工转化,一般是三种。 时间维度衍生,最近 1 个月交易额、最近 3 个月交易额。 函数衍生,最大交易额、最小交易额、交易额方差。 比率衍生,最近 1 个月交易额/最近 3 个月交易额。 基于这三种变换就可以对原始变量进行扩充,所以最终的数据模型里的数据变量非常多。在选择变量的时候,基于 RFM 原则,即最近、频次、钱,所有跟这三个属性相关的变量都要先保留,因为金融行业本身就是在和钱打交道。基于原始变量,我们做了一些衍生变量,有了数据源之后,第二步就是数据处理。
数据处理
所有的数据处理、数据建模都是为业务服务。真实工作中,数据处理和数据建模会慢慢迭代、优化,所以在前期的数据处理不会很复杂,一般分为三种。
数值型和字符串型字段的缺失性和合理性检验,剔除无效字段(50% 以上即可去掉)。 数值型字段的相关性验证,因为在前期,所有的字段都会拿出来,有很多的变量相关性非常强,但这个对于模型训练没有帮助,因此把相关性强的先过滤掉。后面我会单独讲相关性规律怎么做。 对字符串型字段的离散化处理。比如前面的身份特质,你的学历是高中还是博士,这样的字段不是数字型字段而是字符串型字段。 所以在数据处理时的要把数值型和字符串型分开,数值型往往是做相关性检验,而字符串形式,是做一些离散化处理。以相关性过滤举例,比如我们发现芝麻信用的数据源当中,最近 1 年的母婴消费金额与其他三个变量有很高的相关性,如下图所示。
可以看出它的相关性均在 0.7 以上,一般 0.7 以上是高度相关性,所以我们在后面建模的时候只保留一个(比如最近 1 年母婴消费金额)即可。其他三个变量先不要放在模型训练里,这就是相关性过滤。相关性过滤实非常简单,但确实很实用。再看字符型字段的离散化例子。问题:身份特质中你的学历是博士,请问如何处理这个字段?一般对字符型字段都是采用专家打分法,如下图所示。
比如小学是 0~20,初中是 20~40,以此类推。专家打分法是按照常识理解,直接分段取值。在模型前期,只要大的逻辑没有问题即可,比如,你这里小学是 90~100,这肯定就不行。经过这一步,所有的变量都转化为了数值,这样就具备了操作空间。
数据标准化
接下来是数据的标准化,虽然所有的变量都已经数值化,但是在量级和量刚上相差很大,如交易额和交易次数,这就没有可比性,所以要对所有的字段进行标准化。标准化的方法很多,选择合适的就行(比如,MAX-MIN 、 Z-score),这对后面的模型效果没有影响。数据标准化之后(假设用 MAX-MIN),所有的变量取值区间都会在 [0,1] 范围内,这个时候就可以进行数据建模。
数据建模
在建模前我们需要进行一些思考,芝麻信用分有 5 个维度:身份特质、履约能力、信用历史、人脉关系、行为偏好。5 个纬度在不同时期的权重也不一样,所以每个维度都要单独建模。在建模之前,一定要把业务目标先理一理,这样才能知道用什么模型。就芝麻信用来说,我们的目的是希望根据用户在这 5 个维度的综合芝麻分来给用户提供其他额外服务,比如花呗、借呗、免押金,同时保证用户不违约。因此逻辑上就是:根据用户的数据,算出用户违约的概率,而这个概率也可以转化为用户的分数,所以逻辑回归模型比较适合。一是简单,二是非线性。你在数据建模前一定要想好用什么模型,即使你觉得应该用逻辑回归,也要先说服自己。这里我反推一个具体方案。综合芝麻分是一个综合概率,而这个综合概率实际上是 5 个维度的概率加权,而 5 个维度各自的概率是每个维度的逻辑回归模型,而每个维度的逻辑回归模型是每个维度的训练集和测试集(如下图所示)。
以历史信用为例,假设该维度包含的字段有最近一个月主动查询金融机构信用次数 x1,最近一个月需还贷总额 x2,最近一个月逾期总额 x3。那么其违约概率就是如下公式:
这里 P 为用户违约的概率,a、b、c 为拟合系数。举个具体例子:A 用户,身份特质、履约能力、信用历史、人脉关系、行为偏好分别算出的概率是 0.1,0.2,0.3,0.4,0.5。根据当前产品所处阶段,觉得信用历史和履约能力两个模块最重要,那么这两个模块的影响权重就是 0.35,其他都是 0.1。那么小 A 的违约概率计算如下:P=0.10.1+0.350.2+0.350.3+0.10.4+0.1*0.5=0.275我们往往需要将 P 转化为实际数值,比如某个具体分数,这样才显得很直观,一般用以下方式转化:分数公式:score=(1-P)A+B,区间为 [300,900],可以算出 A=600,B=300所以 A 的芝麻综合分=0.725600+300=735芝麻分由此得出,当然真实的肯定更复杂,但是它的核心思想是这样,先给出一些数据源,然后进行数据处理,再然后进行数据标准化。实际上芝麻信用分数就是概率,概率这一块可能用的模型稍微不太一样,但是在前期一定是用比较简单的模型。