业务场景

随着信贷产品上线半年后,前期根据用户基本信息、订单数据、充值数据、授信数据等进行授信不能满足大额用户的需求。为了更好的服务客户,需要针对不同场景进行精细化运营。解决以下问题:

  1. 控制信贷风险,减少损失
  2. 满足客户信贷需求,提升用户满意度

为此提出对平台各个用户根据规模数据提前对用户进行分层,然后套用之前授信模型,对用户进行授信。

以下只讲述一些思想和方法,具体数据不方便透露,代码网上很多,就不献丑了。模型不在与复杂,好用能实现业务需求即可。

用户分层建模

数据分析

  1. 数据来源:根据业务员以及信审调查的资料,通过数据处理得到相关数据特征对应的宽表。主要有:工人人数、车位数、交易金额、经营年限、经营地址、回款情况、房租水电等衡量用户规模的数据。
  2. 缺失值处理:连续变量使用决策树进行插补
  3. 数据标准化:因为要算距离
  4. 数据分布探索:查看各个特征的取值情况,对数据有个总体的观察
  5. 变量相关性,是否存在分类特征比较明显的变量
  6. PCA:将特征降到2维可以绘制出散点图,看是否存在聚类情况。保证信息量在 80% 以上

结论:约 20%的用户较大多数样本优秀,较符合二八定律,如果分类两类较合适(比例约为 4:1).对于8成的用户,如果需要可单独考虑进行分析,前期不建议细分(样本量少)

聚类

  1. 参数一般使用默认参数即可
  2. 遍历 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 isnandef hopkins(X):d = X.shape[1]#d = len(vars) # columnsn = len(X) # rowsm = int(0.1 * n) # heuristic from article [1]nbrs = NearestNeighbors(n_neighbors=1).fit(X.values)rand_X = sample(range(0, n, 1), m)ujd = []wjd = []for j in range(0, m):u_dist, _ = nbrs.kneighbors(uniform(np.amin(X,axis=0),np.amax(X,axis=0),d).reshape(1, -1), 2, return_distance=True)ujd.append(u_dist[0][1])w_dist, _ = nbrs.kneighbors(X.iloc[rand_X[j]].values.reshape(1, -1), 2, return_distance=True)wjd.append(w_dist[0][1])H = sum(ujd) / (sum(ujd) + sum(wjd))if isnan(H):print ujd, wjdH = 0return H

聚类评估

  1. 因为没有标签,所以一般通过评估类的分离情况来决定聚类质量。类内越紧密,类间距离越小则质量越高。我用到过的有sklearn中的Silhouette Coefficient和Calinski-Harabaz Index,sklearn里面解释的很清楚,直接把数据和聚类结果作为输入就可以了。
  2. 交叉验证:首先,把给定的数据集D划分成m个部分。m-1建立聚类模型,剩下一分检验聚类的质量。用检验集中的所有点与他们的最近形心之间的距离的平方和来度量聚类模型拟合检验集的程度。对于任意整数k>0,我们依次使用每一部分作为检验集,重复以上过程m次,导出k个簇的聚类。取质量度量的平均值作为总体质量度量。

聚类稳定性

  1. 只有聚类数和数据原始类数相匹配时,模型较稳定
  2. k=1的话,稳定性肯定是最高的

输入:给定聚类数目的聚类算法A,原始数据集S

  1. 根据原始数据集S产生n个不同的数据集S1,S2,…,Sn(取样或者加噪声等方法)
  2. 对于b=1,…,n,对数据集Sb用算法A聚类,得到聚类结果Cb
  3. 对于b=1,…,n,计算不同聚类结果之间的距离d(Cb,Cb’)
  4. 计算不稳定性(instability):$instability=\frac{1}{n^2}\sum_{i}{d(C_b,C_b')}$

算法要点

  1. K 值得选取:业务经验、交叉验证、最大 Calinski-Harabasz 分数值等
  2. k个中心得选择:随机中心,K-Means++(聚类中心个数逐步增加,距已有中心较远得点被选为新聚类中心的概率较大)。初始中心的选取对聚类结果和运行时间都有很大得影响
  3. 距离确定:一般用数据标准化后的欧式距离

传统 K-Means 算法思想

  1. 数据集 D 中随机选取 k 个聚类中心,并计算各个样本与中心点的距离,共 D*K 个距离
  2. 更新聚类中心(每一类的重心)
  3. 重复1,2 直至聚类中心变化小于给定阈值

K-Means距离计算优化elkan K-Means

  • elkan K-Means利用了两边之和大于等于第三边,以及两边之差小于第三边的三角形性质,来减少距离的计算。

大样本优化Mini Batch K-Means

  • 样本量10w以上,特征100个以上时,传统K-Means算法非常的耗时。采用从全部样本中无放回抽样出 大小为 batch-size 的样本来训练K-Means 模型
  • 聚类精度有所降低,可容忍

模型部署

  1. 跨平台机器学习模型交互–Python sklearn训练的模型导出为PMML
  2. 用PMML实现机器学习模型的跨平台上线
  3. PMML模型文件在机器学习的实践经验
  4. 对sklearn2pmml转换自定义函数的探索

参考资料

  1. 如何评价聚类结果的好坏?

kmeans-用户分层相关推荐

  1. 利用Kmeans聚类进行用户分层分析

    数据来源:和鲸社区 这里这里 一.数据浅析 import pandas as pd import matplotlib.pyplot as plt import numpy as np import ...

  2. 《十周成为数据分析师》笔记——业务线 第八节 常见互联网业务的数据分析报告的制作及用户分层模型

    互联网业务数据分析报告及用户分层模型 一.业务逻辑回顾及互联网相关指标 1.实战项目与业务逻辑回顾 数据报表(数据源)→用户画像(数据分析)→数据化运营(决策指导)→商业分析(宏观判断)→分析报告(结 ...

  3. 视频 + PPT 下载 | 在线教育行业如何制定用户分层运营策略?

    新冠疫情为在线教育行业按下"加速键",不少在线教育企业迎来了爆发式增长态势.随着疫情缓和,线上流量将逐渐回潮平稳.经此一"疫",面临巨头林立,竞争不断加剧的局面 ...

  4. each 数据获取attr_Python数据分析 — 基于RFM的精细化用户分层

    RFM模型是衡量客户价值和客户创利能力的重要工具和手段.在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的.该机械模型通过一个客户的近期购买行为.购买的总体频率以及花了多少钱3项指标 ...

  5. python给用户打标签_用Python实现RFM模型——互联网产品用户分层必备技巧

    1.前言 RFM模型即"R"--Recency(最近一次消费时间)."F"--Frequency(一段时间内消费频次)."M"--(一段时间 ...

  6. 运营数据分析模型—用户分层分析

    用户分层模型 分层分析法是根据数据分析对象的特征,按照一定的标志(指标),把数据分析对象划分为不同的部分和类型来进行研究,以揭示其内在的联系和规律性. 业务经营最忌吃大锅饭,对待用户一视同仁.当用户只 ...

  7. 首席新媒体黎想教程:浅谈用户运营中的用户分层

    其实是一种类似于价格歧视的策略,针对不同的用户采取不同的策略,最终达到提升用户价值,提升用户ARPU值的作用. 这也就是为什么在不同的手机和账号下看到的商品价格是不一样的原因,大数据杀熟就是这么来的! ...

  8. 用户分层在用户运营的运用

    从用户运营的整个过程来看,我们大致可以把用户运营分为五个过程: 用户增长/吸引新用户: 根据对用户的分层/分群,制定不同的运营策略和手段: 组织社群和活动,加强和用户的联系和互动: 建立用户激励体系, ...

  9. 常用数据分析模型:RFM模型——用户分层

    文章目录 1.用途 2.介绍 3.方法 4.案例 5.应用 1.用途 用户分层.用于判断每类用户的价值,并调整营销策略. 2.介绍 通过三个关键指标对客户进行观察和分类. 最近一次消费时间(R):客户 ...

  10. 【实操版】用户分层,这样做会更合理!

    本文读完需要很认真,请追求进步的你坚持阅读到最后,并且点个在看证明你读完了 有同学问:领导让做用户分层,可不管怎么分,似乎都觉得没有啥科学道理,也经常被嫌弃:"你这分层分的有啥意思" ...

最新文章

  1. Numpy and Matplotlib
  2. SQL Server 数据库的整理优化的基本过程(二)
  3. Exploring the Amazon Echo Dot, Part 2: Into MediaTek utility hell
  4. 10种常用降维算法源代码(python)
  5. MySQL中count方法和sum方法查询条件错误时返回结果
  6. CF-241 E.Flights(差分约束)
  7. 浅谈javascript继承【读javascript设计模式第四章节继承有感】
  8. 【转】学习Entity Framework 中的Code First
  9. django 1.8 官方文档翻译: 3-3-1 文件上传
  10. mysql concat键值对_mysql中concat函数实现数据库字段合并查询
  11. Netty工作笔记0063---WebSocket长连接开发2
  12. Matlab Tricks(六)—— 矩阵乘法的实现
  13. 用Java实现MD5加盐
  14. 基于北斗高精度定位的运河航道安全导航解决方案
  15. 工作中如果一直被领导忽略,你会怎么办?
  16. eas报错日记_eas日志收集方式
  17. STC15W408AS-35I-DIP28引脚功能图
  18. 微擎支付返回商户单号_支付宝,微信,银联支付
  19. 【翻译】和麻美学姐一起的世界树(マミさんと世界樹スレ)第八话后篇
  20. qq撤回消息还在服务器上面吗,QQ怎么查看对方撤回的消息?

热门文章

  1. php扩展引擎手册,模板引擎-THINKPHP 5.0 手册最新版
  2. python如何提交作业_用python 实现录入学生作业情况的小程序
  3. part-15 开环增益Avol
  4. 电子计算机的诞生与发展
  5. IndoorGML 介绍
  6. windows7无声音,提示未插入扬声器或耳机的解决办法
  7. Win10提示未插入扬声器或耳机
  8. 如何调整硬盘分区大小
  9. 上交计算机考研专业课,上海交大计算机专业考研必知考试科目与内容
  10. Web漏洞之CORS与JSONP跨域漏洞