文章目录
本文内容一览(快速理解)
-
聚类分析是什么? 无监督学习方法,将相似对象分组,最大化簇内相似性、最小化簇间相似性,自动发现数据中的隐藏模式
-
聚类vs分类? 分类是监督学习(有类标),聚类是无监督学习(无类标);分类需要训练数据,聚类不需要;聚类结果动态,分类结果固定
-
如何计算相似性? 区间标度变量用欧氏距离或曼哈顿距离,分类变量用简单匹配系数或Jaccard系数,混合类型变量加权组合,需要标准化消除单位差异
-
K-means如何工作? 随机选择k个初始中心,将对象分配到最近中心,重新计算中心,迭代直到收敛,算法简单快速但只能发现球状簇
-
如何选择K值? 肘部法则(WCSS下降速度变慢的点)或轮廓系数(选择系数最大的K值),也可以根据业务需求选择
-
K-means的优缺点? 优点:算法简单、计算高效、结果直观;缺点:需要预先指定K值、只能发现球状簇、对离群点敏感
-
客户细分实战? 准备客户数据(年龄、收入、消费金额),标准化数据,使用欧氏距离计算相异度,K-means聚类(K=5),根据业务需求调整
-
如何选择聚类算法? 数据量大且需要快速聚类→K-means,数据有离群点→K-medoids,需要任意形状簇→DBSCAN,根据数据特点和应用需求选择
总结口诀
- 聚类本质:无类标号 → 自动分组 → 最大化簇内相似性
- 数据类型:区间标度→欧氏距离,分类→简单匹配,混合→加权组合
- K-means:随机中心→分配对象→更新中心→迭代收敛
- K值选择:肘部法则或轮廓系数,结合业务需求
- 算法选择:大数据快速→K-means,离群点→K-medoids,任意形状→DBSCAN
一、聚类分析基本概念:什么是聚类
[!NOTE]
📝 关键点总结:聚类分析的核心是将相似对象分组,最大化簇内相似性、最小化簇间相似性,是无监督学习方法,不需要类标号就能自动发现数据中的模式。核心特征:
- 无监督学习:不考虑数据类标号,通过聚类产生新类标号(自动分类)
- 核心原则:最大化簇内相似性,最小化簇间相似性
- 动态性:最优分组数一般未知,聚类结果是动态的
- 应用场景:数据探索、模式发现、数据压缩、异常检测
与分类的区别:分类是监督学习(有类标),聚类是无监督学习(无类标);分类需要训练数据,聚类不需要;聚类结果动态,分类结果固定。
1.1 什么是聚类
问题:什么是聚类?
通俗理解:聚类就像把一堆水果按照相似性分组,比如把苹果、橙子、香蕉分别放在不同的篮子里,不需要事先知道有哪些种类,只需要根据水果的特征(颜色、形状、大小)自动分组。就像图书馆需要把书籍分类整理,聚类可以帮助我们发现数据中的规律和模式。
核心作用:将物理或抽象对象的集合划分成相似的对象类,发现数据中的隐藏模式和结构。
本质原理:聚类分析时不考虑数据类标号,而是通过聚类产生新类标号(自动分类)。对象根据最大化内部的相似性(similarity)、最小化类之间的相似性的原则进行聚类或分组(簇,cluster)。
在实际应用中,很多数据没有类标号,或者获取类标号成本很高,聚类可以自动发现数据中的模式,不需要人工标注。例如,在肤纹研究中,研究人员将中华56个民族梳理成南方和北方两大民族群,找到了民族肤纹的标志性群体,这就是聚类的应用。
实际应用示例:在客户分析中,可以根据客户的购买行为(年龄、收入、消费金额)自动将客户分成不同的群体,而不需要事先知道有哪些客户类型。在股票分析中,可以根据股票的价格波动模式自动将股票分成不同的行业组。
应用边界:适合无类标号的数据、需要发现隐藏模式的场景。但聚类结果可能不唯一,不同的相似性度量会产生不同的聚类结果。
决策标准:当数据没有类标号或获取类标号成本高时,用聚类;当需要发现数据中的隐藏模式时,用聚类;当需要数据探索和可视化时,用聚类。
1.2 为什么需要聚类
问题:为什么需要聚类?
通俗理解:就像图书馆需要把书籍分类整理,聚类可以帮助我们发现数据中的规律和模式,理解数据的结构。分类需要高昂的代价收集和标记大量训练元组集或模式,而聚类把数据集合划分成组(簇),然后给这些数量相对较少的组指定标号,成本更低。
核心作用:数据探索、模式发现、数据压缩、异常检测。
本质原理:分类需要高昂的代价收集和标记大量训练元组集或模式,而聚类把数据集合划分成组(簇),然后给这些数量相对较少的组指定标号,成本更低。
在实际应用中,获取有类标号的训练数据往往成本很高,而聚类可以自动发现数据中的模式,不需要人工标注。例如,在股票分析中,可以根据股票的价格波动模式自动将股票分成不同的行业组,而不需要事先知道有哪些行业。
实际应用示例:在图像分析中,可以根据图像的像素特征自动将图像分成不同的类别(如风景、人物、动物),而不需要人工标注。在文本分析中,可以根据文本的主题自动将文档分成不同的类别。
应用边界:适合数据探索、模式发现、数据压缩的场景。但聚类结果需要人工解释和验证。
决策标准:当获取类标号成本高时,用聚类;当需要探索数据中的模式时,用聚类;当需要数据压缩时,用聚类。
1.3 聚类vs分类
问题:聚类和分类有什么区别?
通俗理解:分类就像老师根据标准答案批改作业(有标准答案),聚类就像学生自己发现规律(没有标准答案)。分类需要训练数据,聚类不需要;聚类结果动态,分类结果固定。
核心作用:理解聚类和分类的区别,选择合适的机器学习方法。
本质原理:分类是监督学习,有类标号,需要训练数据;聚类是无监督学习,无类标号,不需要训练数据。
与分类相比,聚类有如下特征:
- 聚类过程与结果的动态性(最优分组数一般未知,可能没有关于聚类的任何先验知识,聚类结果是动态的);
- 不同的相似性度量,不同的目的要求,产生的聚类结果是不一样的。
不同的应用场景需要不同的方法。当有类标号时,用分类;当无类标号时,用聚类。例如,对顾客分组促进童装销售时,孩子数是最重要属性,年收入和受教育水平相关,年龄和婚姻状况无关,这需要根据业务目标选择合适的相似性度量。
实际应用示例:
- 在邮件分类中,如果有大量已标注的邮件(垃圾邮件/正常邮件),用分类;如果没有标注,用聚类自动发现邮件类型。
- 在客户分析中,如果有客户标签(VIP/普通),用分类;如果没有标签,用聚类自动发现客户群体。
应用边界:分类和聚类有不同的应用场景。但实际应用中,可以先聚类发现模式,再分类预测新样本。
决策标准:有类标号 → 分类;无类标号 → 聚类;需要预测新样本 → 分类;需要发现数据模式 → 聚类。
二、聚类分析中的数据类型:如何计算相似性
[!NOTE]
📝 关键点总结:聚类分析需要处理不同类型的数据,核心是计算对象之间的相异度,不同数据类型需要不同的相异度计算方法。数据类型:
- 数据矩阵:对象-变量结构,用p个变量表示n个对象(二模矩阵)
- 相异度矩阵:对象-对象结构,存储n个对象之间的相异度(一模矩阵)
- 区间标度变量:粗略线性标度的连续变量(重量、高度、气温等)
- 分类变量:标称变量(性别、颜色等)
- 序数变量:有序的分类变量(等级、排名等)
- 混合类型变量:包含多种类型的变量
相异度计算:区间标度变量用Minkowski距离(欧氏距离、曼哈顿距离),需要标准化;分类变量用简单匹配系数或Jaccard系数;序数变量先转换为区间标度变量;混合类型变量加权组合。
2.1 数据矩阵和相异度矩阵
问题:聚类分析中数据如何表示?
通俗理解:就像用表格记录学生的成绩,数据矩阵用行表示对象(学生),用列表示变量(科目),相异度矩阵记录对象之间的相似程度。数据矩阵存储原始数据,相异度矩阵存储对象之间的相似程度。
本质原理:
- 数据矩阵(Data matrix)是对象-变量结构,用p个变量表示n个对象,是二模(two-mode)矩阵。数据矩阵适合存储原始数据。
- 相异度矩阵(Dissimilarity matrix)是对象-对象结构,存储n个对象之间的相异度,是一模(one-mode)矩阵。相异度矩阵适合存储对象之间的相似程度,便于聚类算法使用
实际应用示例:
- 在图像聚类中,数据矩阵存储每张图像的像素值,相异度矩阵存储图像之间的相似程度。
- 在文本聚类中,数据矩阵存储每个文档的词频,相异度矩阵存储文档之间的相似程度。
应用边界:相异度矩阵的计算复杂度是 O ( n 2 ) O(n^2) O(n2),对于大规模数据可能不适用。
决策标准:存储原始数据 → 数据矩阵;存储对象间相似程度 → 相异度矩阵;聚类算法通常使用相异度矩阵。
2.2 区间标度变量的相异度:为聚类提供相似性度量
区间标度变量(Interval-scaled variables)是一种粗略线性标度的连续变量,例如重量、高度、经纬度、气温等。选用的度量单位将影响聚类结果,需要进行标准化。常用的距离度量包括:
- Minkowski距离: d ( i , j ) = ( ∣ x i 1 − x j 1 ∣ q + ∣ x i 2 − x j 2 ∣ q + . . . + ∣ x i p − x j p ∣ q ) 1 / q d(i,j) = (|x_{i1}-x_{j1}|^q + |x_{i2}-x_{j2}|^q + ... + |x_{ip}-x_{jp}|^q)^{1/q} d(i,j)=(∣xi1−xj1∣q+∣xi2−xj2∣q+...+∣xip−xjp∣q)1/q
- 曼哈顿距离( q = 1 q=1 q=1): d ( i , j ) = ∣ x i 1 − x j 1 ∣ + ∣ x i 2 − x j 2 ∣ + . . . + ∣ x i p − x j p ∣ d(i,j) = |x_{i1}-x_{j1}| + |x_{i2}-x_{j2}| + ... + |x_{ip}-x_{jp}| d(i,j)=∣xi1−xj1∣+∣xi2−xj2∣+...+∣xip−xjp∣
- 欧氏距离( q = 2 q=2 q=2): d ( i , j ) = ( x i 1 − x j 1 ) 2 + ( x i 2 − x j 2 ) 2 + . . . + ( x i p − x j p ) 2 d(i,j) = \sqrt{(x_{i1}-x_{j1})^2 + (x_{i2}-x_{j2})^2 + ... + (x_{ip}-x_{jp})^2} d(i,j)=(xi1−xj1)2+(xi2−xj2)2+...+(xip−xjp)2
不同的距离度量适合不同的数据分布。欧氏距离适合数据分布均匀的情况,曼哈顿距离对离群点更鲁棒。
度量单位标准化,使不同变量具有相同的权重
由于不同变量的单位不同(如身高用厘米,体重用公斤),需要标准化(如z-score标准化)使不同变量具有相同的权重。
实际应用示例:在客户分析中,如果客户数据包含年龄(岁)、年收入(元)、年消费金额(元),由于单位不同,需要标准化后再计算距离。例如,年龄的范围是20-80岁,年收入的范围是10万-1000万,如果不标准化,年收入会主导距离计算。
应用边界:适合连续变量。但需要标准化,计算复杂度是 O ( n p ) O(np) O(np),其中n是对象数,p是变量数。
决策标准:
- 数据分布均匀 → 欧氏距离;
- 数据有离群点 → 曼哈顿距离;需要快速计算 → 曼哈顿距离(计算更简单)。
- 不同变量单位不同 → 标准化后再计算距离;
2.3 分类变量的相异度-用匹配程度来衡量相似性
分类变量(Categorical variables)是标称变量,例如性别、颜色、品牌等。
计算相异度的方法包括:
- 简单匹配系数: d ( i , j ) = p − m p d(i,j) = \frac{p-m}{p} d(i,j)=pp−m,其中p是变量总数,m是匹配的变量数
- Jaccard系数(二元变量): d ( i , j ) = r + s q + r + s d(i,j) = \frac{r+s}{q+r+s} d(i,j)=q+r+sr+s,其中q是两个对象都是1的变量数,r是对象i是1而对象j是0的变量数,s是对象i是0而对象j是1的变量数
分类变量没有顺序关系,不能用距离度量,需要用匹配程度。
- 简单匹配系数适合所有分类变量都同等重要的情况
- Jaccard系数适合只关注两个对象都是1的情况(如购物篮分析)
实际应用示例:在购物篮分析中,如果两个客户都购买了商品A和B,但没有购买商品C,Jaccard系数会计算他们购买商品的相似程度。在文本分析中,如果两个文档都包含某些关键词,Jaccard系数会计算它们的相似程度。
决策标准:
- 所有分类变量同等重要 → 简单匹配系数;
- 只关注共同特征 → Jaccard系数;
- 二元变量 → Jaccard系数;
- 需要加权 → 根据变量重要性设置权重。
2.4 混合类型变量的相异度
就像比较两个人,需要考虑多个方面(身高、性别、等级),混合类型变量包含多种类型的变量,需要分别计算再组合。加权组合可以平衡不同类型变量的影响,根据变量的重要性设置权重。
混合类型变量(Mixed-type variables)包含多种类型的变量(区间标度、分类、序数等)。
计算相异度的方法:对每种类型的变量分别计算相异度,然后加权组合。加权组合可以平衡不同类型变量的影响,根据变量的重要性设置权重。
例如, d ( i , j ) = ∑ f = 1 p δ i j ( f ) d i j ( f ) ∑ f = 1 p δ i j ( f ) d(i,j) = \frac{\sum_{f=1}^{p} \delta_{ij}^{(f)} d_{ij}^{(f)}}{\sum_{f=1}^{p} \delta_{ij}^{(f)}} d(i,j)=∑f=1pδij(f)∑f=1pδij(f)dij(f),其中 d i j ( f ) d_{ij}^{(f)} dij(f) 是变量f的相异度, δ i j ( f ) \delta_{ij}^{(f)} δij(f) 是指示变量(如果变量f对对象i和j都有效则为1,否则为0)。
实际应用示例:在客户分析中,如果客户数据包含年龄(区间标度)、性别(分类)、会员等级(序数),需要分别计算每种类型变量的相异度,然后加权组合。例如,如果年龄更重要,可以给年龄更高的权重。注意:权重设置需要领域知识,可能影响聚类结果。
决策标准:
- 混合类型变量 → 分别计算每种类型的相异度,然后加权组合;
- 根据变量的重要性设置权重;
- 如果变量缺失,用指示变量处理;
- 需要平衡不同类型变量 → 使用归一化权重。
三、划分方法:K-means算法
[!NOTE]
📝 关键点总结:K-means是最常用的划分方法,通过迭代优化将数据分成K个簇,每个簇用质心表示,算法简单快速但只能发现球状簇,对离群点敏感。核心机制:
- 初始化:随机选择k个对象作为初始簇中心
- 分配:将每个对象分配到最近的簇中心
- 更新:重新计算每个簇的中心(均值)
- 迭代:重复分配和更新直到簇中心不再变化
决策标准:数据量大且需要快速聚类 → K-means;数据是球状分布 → K-means;需要预先指定簇数 → K-means;数据有离群点 → 不用K-means(用K-medoids)。
3.1 K-means算法原理
算法步骤:
- 随机选择k个对象作为初始簇中心
- 将每个对象分配到最近的簇中心
- 重新计算每个簇的中心(均值)
- 重复步骤2-3直到簇中心不再变化
K-means算法简单快速,适合大规模数据。但只能发现球状簇,对离群点敏感,需要预先指定簇数k。
聚类结果是簇内的相似度高,而簇间的相似度低。簇的相似度是关于簇中对象的均值度量,可以看做是簇的质心(Centroid)或中心(centre of gravity)。
实际应用示例:在客户细分中,如果要将100万客户分成5个群体,K-means会随机选择5个客户作为初始中心,然后将每个客户分配到最近的中心,重新计算5个中心,不断重复直到中心不再变化。最终得到5个客户群体,每个群体用质心(平均年龄、平均收入、平均消费金额)表示。
决策标准:
- 数据量大且需要快速聚类 → K-means;
- 数据是球状分布 → K-means;
- 需要预先指定簇数 → K-means;
- 数据有离群点 → 不用K-means(用K-medoids)。
算法复杂度:时间复杂度 O ( n k t ) O(nkt) O(nkt),其中n是对象数,k是簇数,t是迭代次数。空间复杂度 O ( n + k ) O(n+k) O(n+k)。
3.2 K-means的优缺点
算法简单快速,但需要预先指定K值,只能发现球状簇,对离群点敏感,容易被异常点影响。
K-means的优点包括:
- 算法简单:易于理解和实现
- 计算效率高:适合大规模数据,时间复杂度 O ( n k t ) O(nkt) O(nkt)
- 结果直观:每个簇用质心表示,易于解释
缺点包括:
- 需要预先指定簇数k:但最优k值通常未知
- 只能发现球状簇:不能发现任意形状的簇(如环形、月牙形)
- 对离群点敏感:离群点会影响簇中心的位置
- 初始簇中心的选择会影响最终结果:可能陷入局部最优
K-means的设计目标是快速聚类,因此牺牲了灵活性(只能发现球状簇)和鲁棒性(对离群点敏感)。对于需要发现任意形状簇或数据有离群点的场景,需要使用其他算法(如DBSCAN、K-medoids)。
实际应用示例:
- 在图像分割中,如果图像中的物体是圆形或接近圆形,K-means效果好;如果物体是环形或月牙形,K-means效果差。
- 在客户分析中,如果客户群体是球状分布(年龄和收入相近的客户聚集在一起),K-means效果好;如果客户群体是任意形状,K-means效果差。
3.3 K值的选择
K值就像分组数量,分得太少(K=2)可能把不同的人分在一起,分得太多(K=10)可能把相似的人分开,需要找到合适的平衡点。
K值的选择通常使用以下方法:
-
肘部法则(Elbow Method):计算不同K值下的簇内平方和(Within-Cluster Sum of Squares, WCSS),WCSS会随着K值增大而减小,当K值增大到一定程度时,WCSS的下降速度会变慢,形成"肘部",这个K值就是合适的K值。
-
轮廓系数(Silhouette Coefficient):计算每个对象的轮廓系数,轮廓系数越大,聚类效果越好,选择轮廓系数最大的K值。轮廓系数范围是[-1, 1],越接近1表示聚类效果越好。
K值太小会导致簇内差异大(欠拟合),K值太大会导致簇间差异小(过拟合)。肘部法则和轮廓系数都是通过量化聚类质量来选择K值,但肘部法则更直观,轮廓系数更精确。
实际应用示例:在客户细分中,如果K=2,可能把高收入客户和低收入客户分在一起;如果K=10,可能把相似客户分开。使用肘部法则,如果K=5时WCSS下降速度变慢,就选择K=5。使用轮廓系数,如果K=5时轮廓系数最大,就选择K=5。
注意:肘部法则和轮廓系数都是启发式方法,可能需要结合领域知识。
四、实战场景:客户细分
4.1 业务痛点识别
电商平台有100万客户,需要根据客户的购买行为(年龄、年收入、年消费金额)将客户分成不同的群体,以便进行精准营销。传统方法需要人工分析,成本高且效率低。我们需要一个能够自动发现客户群体的方法,从客户数据中自动识别出不同的客户类型。
核心挑战:
- 客户数量大(100万),人工分析成本高
- 需要根据多个维度(年龄、收入、消费金额)进行分组
- 不同客户群体的特征不明确,需要自动发现
- 需要快速响应业务需求,支持精准营销
4.2 方案拆解:用核心知识点解决问题
数据准备:客户数据包含年龄(区间标度变量)、年收入(区间标度变量)、年消费金额(区间标度变量)。
为什么这样准备:
- 这三个变量都是连续变量,适合用区间标度变量的方法计算相异度。
- 由于不同变量的单位不同(年龄用岁,收入用元,消费金额用元),需要标准化(如z-score标准化)使不同变量具有相同的权重。例如,年龄的范围是20-80岁,年收入的范围是10万-1000万,如果不标准化,年收入会主导距离计算。
相异度计算:使用欧氏距离计算客户之间的相异度。
为什么这样选择:客户数据分布相对均匀,欧氏距离适合。标准化后的数据消除了单位差异,可以直接计算欧氏距离。欧氏距离计算简单,适合大规模数据。
聚类算法选择:使用K-means算法,K=5(根据业务需求分成5个客户群体)。
为什么这样选择:
- 数据量大(100万客户),需要快速聚类,K-means适合(时间复杂度 O ( n k t ) O(nkt) O(nkt));
- 客户群体通常是球状分布(年龄和收入相近的客户聚集在一起),K-means可以处理;
- 需要预先指定簇数,K-means满足要求。
K值确定:使用肘部法则确定K值,计算K=2到K=10的WCSS,选择WCSS下降速度变慢的K值。
为什么这样确定:肘部法则简单直观,适合快速选择K值。如果业务有明确需求(如分成5个群体),也可以直接使用业务K值。结合肘部法则和业务需求,选择K=5。
完整流程:
- 数据预处理:标准化年龄、年收入、年消费金额(z-score标准化)
- 计算相异度:使用欧氏距离计算客户之间的相异度
- K-means聚类:随机选择5个客户作为初始中心,将每个客户分配到最近的中心,重新计算中心,迭代直到收敛
- 结果分析:分析每个客户群体的特征(平均年龄、平均收入、平均消费金额),为精准营销提供依据
4.3 长期适配策略
数据变化:如果客户数据增加或变化,可以重新运行K-means算法,或者使用增量聚类方法。
判断标准:数据变化大(如新增50%客户) → 重新运行K-means;数据变化小(如新增5%客户) → 使用增量聚类;需要实时更新 → 使用增量聚类。
K值调整:如果聚类效果不好(如簇内差异大或簇间差异小),可以调整K值。
判断标准:簇内差异大(WCSS大) → 增大K值;簇间差异小(簇中心距离近) → 减小K值;聚类效果不好 → 尝试不同的K值(K=3, 4, 5, 6, 7),选择效果最好的。
算法选择:如果数据有离群点或需要发现任意形状的簇,可以改用K-medoids或DBSCAN。
判断标准:数据有离群点(如异常高消费客户) → K-medoids(对离群点更鲁棒);需要任意形状簇(如客户群体不是球状分布) → DBSCAN;数据量大且需要快速聚类 → K-means。
特征选择:如果某些特征不重要或影响聚类效果,可以调整特征权重或删除不重要特征。
判断标准:某些特征不重要(如客户ID) → 删除;某些特征更重要(如年消费金额比年龄更重要) → 增加权重;需要平衡特征影响 → 使用标准化和权重调整。
总结
聚类分析通过将相似对象分组,自动发现数据中的隐藏模式。
可直接套用的落地模板:
- (1)数据准备:识别数据类型(区间标度、分类、序数、混合),标准化数据(消除单位差异,如z-score标准化);
- (2)相异度计算:区间标度变量用欧氏距离或曼哈顿距离,分类变量用简单匹配系数或Jaccard系数,混合类型变量加权组合;
- (3)算法选择:数据量大且需要快速聚类 → K-means,数据有离群点 → K-medoids,需要任意形状簇 → DBSCAN;
- (4)参数确定:K-means的K值用肘部法则或轮廓系数,DBSCAN的 ϵ \epsilon ϵ 和MinPts根据数据密度确定;
- (5)结果验证:可视化聚类结果,结合领域知识验证,调整参数优化效果。
588

被折叠的 条评论
为什么被折叠?



