零售商客户分群场景介绍
批发零售业
- 批发零售业是社会化大生产过程中的重要环节,是决定经济运行速度、质量和效益的引导性力量,是我国市场化程度最高,竞争最为激烈的行业之一
- 批发业是指批发商向批发、零售单位及其他企业、事业、机关批量销售生活用品和生产资料的活动,以及从事进出口贸易和贸易经纪与代理的活动。
- 零售商指其销售量主要来自零售的商业与企业。相对于生产者和批发商而言,处于商品流通的最终阶段。零售商的基本任务是为最终消费者服务
零售业的特征
- 交易对象是直接消费而购买商品的最终消费者
- 零售贸易的具体服务形式多样
- 零售贸易平均每笔交易量少,交易次数频繁
- 零售贸易受消费者购买行为的影响比较大
- 零售贸易大多在店内进行,网点规模大小不一,分布较广
- 零售贸易必须依靠周转速度取胜
客户分群的意义
什么是客户分群
将现有客户群体按一定规则,根据行为和需求等因素分成若干个特征鲜明的小群体
从而使得:
- 不同组别之间特征差异明显
- 同意群组内客户特征相似
客户分群的意义
- 打破数据孤岛,通过数据更深入地了解客户,提升客户与商家的黏度
- 在大众化营销失去优势的时代,依据不同分群的特点进行精准化营销,降低营销成本,提升企业竞争力
- 制定针对性的用户管理策略,提升客户满意度
构架客户分群解决方案
客户分群背后的K-means技术原理
机器学习基本概念
机器学习
机器学习是一门致力于研究如何通过计算的手段,根据经验改善系统自身的性能的学科
算法
算法是指一系列规则和运算公式。将这些规则和运算公式作用到数据集上,能够得到一个分析结果,通常就是一个模型
模型构建
模型构建是指选择数据和算法,执行算法生成模型的过程
数据集
数据集即我们机器学习使用的数据,往往既有很多维度,数据集常被划分为训练集和测试集
机器学习分类
监督学习(有类别标签的学习行为)
概念:监督学习从训练数据集合中学习模型,对测试数据进行预测
- 分类问题
- 回归分析
无监督学习(数据集没有标签)
**概念:**无监督学习指的是人们给机器一大堆没有分类标记的数据,让机器可以对数据分类、检测异常等。
聚类
- K-means:也称K均值聚类,它通过均值的计算,对样本分为K个不同的簇
- 层次聚类:试图对不同层次对数据集进行划分,从而形成树形的聚类结构
- DBSCAN:是一种基于密度的聚类算法,簇的个数由算法自动确定
降维
K-means算法基本概念
K-means算法是很典型的基于距离的聚类算法,一般采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终单位。
机器学习-距离度量
距离度量满足以下基本性质
- 非负性:dist(A,B) >= 0
- 同一性:dist(A,B) = 0当且仅当A =B
- 对称性:dist(A,B) = dist(B,A)
- 直递性:dist(A,C) <= dist(A,B) + dist(B,C)
常见距离度量
闵式距离不是一种距离, 而是一组距离的定义,是对多个距离度量公式的概括性的表述。其中p是一个变参数:
- 当p=1时,就是曼哈顿距离, 常用于街区划分等场景:
- 当p=2时,就是欧式距离,表示两点间直线距离;
- 当p=∞时,就是切比雪夫距离,用于许多游戏场景。
K-means算法-内部迭代原理
注:为避免运行时间过长,通常设置一个最大允许轮数或最小调整幅度作为阀值
K-means算法特点
- 使用速度快,原理简单易掌握
- k均值算法中k值是需要预先给定的,因为得到的结果会服务于后续目的,所以k值的确定不能脱离实际
- k均值的聚类算法需要不断地进行样本分类调整,不断地计算调整后地新的聚类中心,当数据量大的时候,算法开销很大
- k均值是求得局部最优解的算法,所以对于初始化时选取的k个聚类的中心比较敏感,不同点的中心选取策略可能带来不同的聚类结果
选择K-means算法的原因
- 聚类分析方法属于无监督机器学习,适用于较大数据样本和较多变量的分析任务;
- 分群作为批发商新业务,没有可供参考的分群经验,选择有监督的分类方法还需要考虑标记的依据。所以选择无监督学习;
- K-means算法的可解释性比较好,因此算法执行时不断迭代的过程便于业务人员的分析和观察,并根据业务需求决定何时的迭代终止点;
- 虽然K-means有可能导致局部最优解,不过我们可以通过多次重复的方式避免。
K-means流程
数据预处理
数据预处理主要有以下技术:
- 数据清理:可以用来清楚数据中的噪声,纠正不一致。
- 数据集成:将数据由多个数据源合并成一个致的数据存储,如数据仓库。–数据归约:可以通过如聚集、删除冗余特征或聚类来降低数据的规模。
- 数据变换: (例如,规范化)可以用来把数据压缩到较小的区间,如0.0到1.0.
聚类评估方法-簇内平方和
一种度量k-means 算法的聚类效果的指标是簇内平方和(cluster Sum of Square) ,又叫做lnertia。
Inertia表示数据样本与它所属的簇中心之间的距离(差异度)平方之和。直观的来说,Inertia越小,表示数据点越接近它们的中心,簇内相似度越高。因为对误差取了平方,会更凸显那些远离中心的点。
聚类评估方法-肘部法则
肘部法则-Elbow Method
我们知道k-means簇内平方和差会随着k的增加而降低,但是k值选择过大就没有了聚类的意义。对于有一定区分度的数据,在达到某个临界点时畸变程度会得到极大改善,之后缓慢下降,这个临界点就可以考虑为聚类性能较好的点。
聚类评估方法-轮廓系数
轮廓系数(Silhouette Ceofficient), 是聚类效果好坏的一种评价方式。最早由PeterJ.Rousseeuw在1986提出。它结合内聚度和分离度两种因素。可以用来在相同原始数据的基础上用来评价不同算法、或者算法不同运行方式对聚类结果所产生的影响。
华为云客户分群解决方案
客户分群在华为云上实现
- 使用ModelArts提供的开发环境进行机器学习开发
- 使用OBS或EVS来存储代码和数据
开发工具: Jupyter Notebook
Jupyter Notebook的本质是一个Web应用程序,支持实时代码,数学方程,可视化和markdown,且便于创建和共享程序文档。用途包括: 数据清理和转换,数值模拟,统计建模,机器学习等等。
K-means在sklearn中的实现
Sklearn
scikit-learn是python著名的机器学习库。
重要参数n_ clusters
n_clusters是KMeans中的k,表示着我们告诉模型我们要分几类。这是KMeans当中唯一一个必填的参数, 默认为8类。
对象存储服务OBS
对象存储服务(Object Storage Service, OBS) 是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,适合存放任意类型的文件。用户可以在OBS内执行操作包括:创建、修改、删除桶,上传、下载、删除对象等。
桶(Bucket) 是OBS中存储对象的容器;子
对象(Object) 是OBS中数据存储的基本单位,对象包括了:
■键值(Key)
■元数据(Metadata )
■数据( Data )
OBS标准存储类别
OBS设置有三类存储类别,分别为:标准存储、低频访问存储、归档存储,从而满足客户业务对存储性能、成本的不同诉求。创建桶时可以指定桶的存储类别,桶的存储类别可以修改。
- 在创建桶时可以定义桶的存储类别;
- 在上传对象时可以分别定义对象的存储类别。”
OBS坊向控制策略
OBS自前支持私有、公共读、公共读写三狆方向控制策略,您还可以在桶ACL (访问控制列表)中配置基于賦号或用戸組的桶级访问控制。
客户分群实操演示
客户分群实操演示
环境搭建
首先,创建一一个OBS桶,存放我们需要的数据和后续的开发文档。
开通ModelArts的Jupyter Notebook开发环境,指定我们创建好的桶内的目录。
数据的同步
我们在使用OBS内的数据前,需要先将数据进行同步,这样我们的数据才会真正在ModelArts的目录内显示。
数据的导入
我们可以使用pandas进行数据的读取,pandas的DataFrame格式可以像表格一样显示数据,还支持很多快捷方法来方便我们处理我们的数据。图中我们使用head()方法显示数据的前5行数据
数据预处理
在前5行数据我们就可以看出,其中前两列channe|和region列为分类特征,需要使用独热编码进行处理,而最后一-列id列属 于无用的特征,我们要将其删除
K值的选择
Sklearn的KMeans算法可以在每次拟合数据后,使用inertia_ 获取到簇内平方和。在sklearn中,我们使用模块metrics中的类silhouette score来计算轮廓系数。
我们使用matplotib对误差平方和及轮廓系数变化进行可视化显示。
已知误差平方和越小越好,轮廓系数越接近1越好,我们根据肘部法则就可以很快确定K值的选择了
模型的构建
为避免聚类的模型存在局部最优解,我们可以在构建模型时循环多次,确认误差平方和的最小值,从而得出相对更优的模型
模型的使用
在模型构建成功后,我们就可以使用模型进行聚类分析了。通过predict方法使用模型后,可以得到预测结果和簇的中心坐标
结果的可视化
我们可以再次使用matplotlib对我们的使用结果进行可视化显示