业务场景
随着信贷产品上线半年后,前期根据用户基本信息、订单数据、充值数据、授信数据等进行授信不能满足大额用户的需求。为了更好的服务客户,需要针对不同场景进行精细化运营。解决以下问题:
- 控制信贷风险,减少损失
- 满足客户信贷需求,提升用户满意度
为此提出对平台各个用户根据规模数据提前对用户进行分层,然后套用之前授信模型,对用户进行授信。
以下只讲述一些思想和方法,具体数据不方便透露,代码网上很多,就不献丑了。模型不在与复杂,好用能实现业务需求即可。
用户分层建模
数据分析
- 数据来源:根据业务员以及信审调查的资料,通过数据处理得到相关数据特征对应的宽表。主要有:工人人数、车位数、交易金额、经营年限、经营地址、回款情况、房租水电等衡量用户规模的数据。
- 缺失值处理:连续变量使用决策树进行插补
- 数据标准化:因为要算距离
- 数据分布探索:查看各个特征的取值情况,对数据有个总体的观察
- 变量相关性,是否存在分类特征比较明显的变量
- PCA:将特征降到2维可以绘制出散点图,看是否存在聚类情况。保证信息量在 80% 以上
结论:约 20%的用户较大多数样本优秀,较符合二八定律,如果分类两类较合适(比例约为 4:1).对于8成的用户,如果需要可单独考虑进行分析,前期不建议细分(样本量少)
聚类
- 参数一般使用默认参数即可
- 遍历 n_clusters <- 2 to 10,选择最大 Calinski-Harabasz 分数值,得到最优分类
聚类趋势(聚类前)
霍普金斯统计量(Hopkins Statistic)评估给定数据集是否存在有意义的可聚类的非随机结构。如果一个数据集是有随机的均匀的点生成的,虽然也可以产生聚类结果,但该结果没有意义。聚类的前提需要数据是非均匀分布的。该值在区间[0, 1]之间,[0.01, 0.3]表示数据结构regularly spaced,该值为0.5时数据是均匀分布的,[0.7, 0.99]表示聚类趋势很强。
from sklearn.neighbors import NearestNeighbors
from random import sample
from numpy.random import uniform
import numpy as np
from math import isnan
def hopkins(