当前位置: 首页 > news >正文

客群画像|解决分群与特征分类问题,试一下这个处理方法

在信贷产品业务中,客户分群是一项重要内容,无论是针对风控的定制化管理,还是面向营销的价值度分层,客群分类的画像分析始终发挥着重要作用。从数据分析与挖掘的角度来讲,若实现存量客户的群体划分,往往采用机器学习中的聚类算法来高效完成,最常见的莫过于Kmeans无监督算法,不仅原理逻辑较为简单,而且实现过程也极为方便。
但是,对于Kmeans聚类模型的建立,首先需要确定合适的K值,这样才能有效满足业务的需求。针对Kmeans的K值确定,虽然经常采用“肘部图”的方法来直观判断,但在实际场景的很多情形下,由于样本数据的分布情况,得到的肘部图趋势并不明显,从图中仍然难以确定合适的K值,这样直接影响到建模过程的实施。针对这种常见情况,为了保证客户分群聚类模型的实现,我们可以采用一种新的聚类模型算法——层次聚类,同样可以实现客群的分类,而且最显著的优点是聚类数量的确定,相比Kmeans算法更为方便且直观。本文将为大家介绍这种经典聚类算法,并围绕具体的样本数据,全面解析层次聚类的原理逻辑与实现过程。

1、层次聚类的原理
层次聚类(Hierarchical clustering),也是一种无监督学习算法,是通过算出不同样本数据点之间的相似度,来创建一棵有层次的嵌套聚类树。在聚类树的分布结构中,树的最低层是不同类别的原始样本数据点,而树的顶层是一个聚类的根节点,中部从上至下是逐渐增多的分支节点。层次聚类不需要我们提前指定簇类数量,而是先完整的形成整个层次聚类树后,通过决定合适的样本距离,便可以自动得到对应的簇类数量与聚类效果,这个过程显然比Kmeans更为方便。
层次聚类是首先把每个样本对象作为一个簇,然后分别算出每个簇与簇之间的距离,接着合并距离最小的两个簇,这个合并过程一直重复进行,每次更新结果的簇类数量减一,直到最后只有一个簇类为止。假设现有5个样本数据点,层次聚类构建完整树的过程与结果,具体如图1所示。
在这里插入图片描述

                                                                图1 层次聚类树状图

在以上层次树状分布图中,横坐标表示样本数据点,纵坐标表示簇类距离,通过图表信息可以很直观的了解到从下到上的层次聚类过程。其中,垂直线长度越大,说明簇类之间的距离越大,例如我们设置距离阈值为12,则聚类的数量为阈值水平线与垂直距离线相交点的数量(2),这样得到2个簇类具体包含的样本分别为(1、2、4)和(3、5)。层次聚类根据树状结构图来分析合适聚类数量的过程,相比Kmeans聚类的肘部图原理,显然更为直观方便,而且更具有客观数据分布的合理性。

2、实例样本分析与处理
为了更好的介绍层次聚类的实现过程,我们围绕具体的实例样本数据来构建层次聚类模型。本文选取的样本数据包含1000条样本与个6个特征,部分数据样例如图2所示,其中id为样本主键,字段air_travel、credit_use、stable_index、online_level、model_score均为特征变量,具体特征字典如图3所示。此外,由于层次聚类为无监督算法模型,因此样本数据无需包含目标变量。
在这里插入图片描述
图2 样本数据样例

在这里插入图片描述

                                                            图3 样本特征字典

根据以上建模样本,我们在python环境采用describe()函数简单对数据进行探索分析,输出的eda分布结果如图4所示,可以从count结果获知样本各特征均无缺失值情况。同时,从极值、分位值等统计指标了解到,各特征均无明显的异常值分布。
在这里插入图片描述
图4 样本特征eda分布

由于层次聚类模型的原理思想,同样需要根据样本距离来确定簇类合并,因此在模型训练前需要将特征样本数据进行标准化处理,以避免特征的不同量纲导致的样本距离结果影响。特征数据的标准化处理,已是层次聚类、Kmeans聚类等模型算法的必然前置的数据处理步骤。本文数据的特征标准化处理过程如图5所示,输出结果样例如图6所示。
在这里插入图片描述
图5 特征标准化实现

在这里插入图片描述
图6 特征标准化结果

3、层次聚类模型实现
通过以上对样本数据的探索分析与必要处理,接下来便可以建立层次聚类模型,在模型正式拟合训练之前,我们需要结合上文关于层次聚类原理,来根据树状结构图来分析确定合适的聚类数量,具体实现过程如图7所示,输出的树状层次聚类分布如图8所示。
在这里插入图片描述
图7 层次聚类数量分析过程

在这里插入图片描述

                                                          图8 层次聚类数量可视化

从上图可知,由于蓝色垂直线的长度最大,因此可以将聚类距离阈值定义为1.00,则通过阈值横线与聚类纵线交叉的结果,获取本样本数据比较合适的聚类数量为2。当确定了合适的簇类数后,接着便可以采用层次聚类拟合函数来进行模型训练,实现过程如图9所示。同时,为了形象展示样本客群聚类后的效果,我们选择air_travel、credit_use这2个特征,来绘制二维分布散点图,以反映不同客群的分布特点,输出的可视化结果如图10所示。
在这里插入图片描述
图9 模型训练与效果展示

在这里插入图片描述
图10 簇类分布可视化

由以上聚类结果的簇类分布可知,两个样本客群在air_travel(最近1个月航旅出行次数)、credit_use(最近6个月信用卡交易次数)的交叉维度上,簇内的聚集程度、簇类的离散程度都是较为明显的,直接反映了聚类模型的效果较佳,也就是客群特征的区分度是比较好的。
当聚类模型完成后,为了更满足实际业务场景的需求,我们还需要对聚类各簇的样本分布进行特征分析,从业务角度来讲,是对各簇样本群体完成客户画像描述,这是非常重要也是场景需要的。这里我们对2个簇类群体进行频数汇总,同时选取特征air_travel、credit_use来具体描述客群的微观分布特点,具体实现过程如图11所示,输出数据的汇总结果如图12所示。
在这里插入图片描述
图11 簇类画像分析实现

在这里插入图片描述
图12 簇类画像汇总

根据以上簇类画像的汇总结果,可知这2个簇类的样本频数分布是比较均衡的,这也进一步反映了聚类结果的合理性。此外,我们围绕以上特征来简单描述下这2个客群的画像分布:最近1个月航旅出行的平均次数(air_travel)是相同的(均为1),但客群1的分布差异稍大;最近6个月信用卡交易次数(credit_use),客群1(25)明显大于客群2(4),说明前者的消费水平高于后者,营销价值较高,这对于产品的额度调整、再次营销等,具有很好的参考作用。这里仅选取特征air_travel和credit_use来分析的,在实际场景中可以对参与模型训练的所有特征来全面分析,这样得到的客群画像更为具体,从而为实际业务提供更多的信息价值。

综合以上内容,我们对层次聚类的原理逻辑与实现过程进行了解读,同时围绕具体样本数据,完成了客户分群的聚类模型,并描述各簇结果的画像特点。为了便于大家对层次聚类的进一步熟悉与理解,本文额外附带了与以上内容同步的python代码与样本数据,供大家参考学习,详情请移至知识星球参考相关内容。
在这里插入图片描述

更多详细内容,有兴趣的童鞋可关注:、
在这里插入图片描述

~原创文章

相关文章:

  • 【cmake实战六】如何使用编译的库(动态库dll)——windows系统
  • 【vue3源码】九、ref源码解析
  • Input系统学习-----injectInputEvent注入事件调用流程
  • Java项目:SSM物业缴费管理系统
  • 函数指针(函数作为参数传递给其他函数)
  • 2023考研推荐新闻传播专业入门可以看的好书
  • 解决Long类型web前端精度丢失问题
  • Docker服务编排
  • 为什么自动化营销对于独立站运营来说很重要?
  • 服务器模型选择
  • 使用Android studio开发一个数独游戏APP 系列第二讲
  • MySQL中的时间类型
  • linux的基础指令
  • Docker容器中安装Mysql和Redis等全过程(以在阿里云服务器中的Docker安装Mysql和Redis为例)
  • java---SPFA算法---判断负权回路(每日一道算法2022.8.31)
  • [deviceone开发]-do_Webview的基本示例
  • axios 和 cookie 的那些事
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • ECMAScript入门(七)--Module语法
  • exports和module.exports
  • Kibana配置logstash,报表一体化
  • Magento 1.x 中文订单打印乱码
  • Making An Indicator With Pure CSS
  • Transformer-XL: Unleashing the Potential of Attention Models
  • underscore源码剖析之整体架构
  • vue2.0项目引入element-ui
  • vue-cli在webpack的配置文件探究
  • Webpack 4 学习01(基础配置)
  • 阿里云应用高可用服务公测发布
  • 关于使用markdown的方法(引自CSDN教程)
  • 前端技术周刊 2019-01-14:客户端存储
  • 前嗅ForeSpider采集配置界面介绍
  • 如何设计一个比特币钱包服务
  • 使用权重正则化较少模型过拟合
  • 推荐一个React的管理后台框架
  • 原生 js 实现移动端 Touch 滑动反弹
  • 追踪解析 FutureTask 源码
  • #Lua:Lua调用C++生成的DLL库
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $L^p$ 调和函数恒为零
  • (C++20) consteval立即函数
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Python) SOAP Web Service (HTTP POST)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)详解PHP处理密码的几种方式
  • .NET Core 成都线下面基会拉开序幕
  • .NET Micro Framework初体验(二)
  • .Net Remoting(分离服务程序实现) - Part.3
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET单元测试