文章目录
-
- 一、聚类分析基本概念:什么是聚类
-
- [1.1 什么是聚类](#1.1 什么是聚类)
- [1.2 为什么需要聚类](#1.2 为什么需要聚类)
- [1.3 聚类vs分类](#1.3 聚类vs分类)
- 二、聚类分析中的数据类型:如何计算相似性
-
- [2.1 数据矩阵和相异度矩阵](#2.1 数据矩阵和相异度矩阵)
- [2.2 区间标度变量的相异度](#2.2 区间标度变量的相异度)
- [2.3 分类变量的相异度](#2.3 分类变量的相异度)
- [2.4 混合类型变量的相异度](#2.4 混合类型变量的相异度)
- 三、划分方法:K-means算法
-
- [3.1 K-means算法原理](#3.1 K-means算法原理)
- [3.2 K-means的优缺点](#3.2 K-means的优缺点)
- [3.3 K值的选择](#3.3 K值的选择)
- 四、实战场景:客户细分
-
- [4.1 业务痛点识别](#4.1 业务痛点识别)
- [4.2 方案拆解:用核心知识点解决问题](#4.2 方案拆解:用核心知识点解决问题)
- [4.3 长期适配策略](#4.3 长期适配策略)
- 总结
聚类分析是机器学习中的无监督学习方法,通过将相似对象分组,自动发现数据中的隐藏模式和结构,无需人工标注就能实现数据分类。本文以客户细分为实战场景,系统讲解聚类分析的基本概念、数据类型和最常见的划分方法(K-means),帮助读者理解如何从"无类标号的数据"到"自动分组",掌握聚类分析的技术本质和设计逻辑。
一、聚类分析基本概念:什么是聚类
!NOTE
📝 关键点总结:聚类分析的核心是将相似对象分组,最大化簇内相似性、最小化簇间相似性,是无监督学习方法,不需要类标号就能自动发现数据中的模式。
核心特征:
- 无监督学习:不考虑数据类标号,通过聚类产生新类标号(自动分类)
- 核心原则:最大化簇内相似性,最小化簇间相似性
- 动态性:最优分组数一般未知,聚类结果是动态的
- 应用场景:数据探索、模式发现、数据压缩、异常检测
与分类的区别:分类是监督学习(有类标),聚类是无监督学习(无类标);分类需要训练数据,聚类不需要。
1.1 什么是聚类
问题:什么是聚类?
通俗理解 :聚类就像把一堆水果按照相似性分组,比如把苹果、橙子、香蕉分别放在不同的篮子里,不需要事先知道有哪些种类,只需要根据水果的特征(颜色、形状、大小)自动分组。核心作用:将物理或抽象对象的集合划分成相似的对象类,发现数据中的隐藏模式和结构。
本质原理 :聚类分析时不考虑数据类标号,而是通过聚类产生新类标号(自动分类)。对象根据最大化内部的相似性(similarity)、最小化类之间的相似性的原则进行聚类或分组(簇,cluster)。设计原因 :在实际应用中,很多数据没有类标号,或者获取类标号成本很高,聚类可以自动发现数据中的模式,不需要人工标注。例如,在肤纹研究中,研究人员将中华56个民族梳理成南方和北方两大民族群,找到了民族肤纹的标志性群体,这就是聚类的应用。决策标准:当数据没有类标号或获取类标号成本高时,用聚类;当需要发现数据中的隐藏模式时,用聚类;当需要数据探索和可视化时,用聚类。
应用边界:适合无类标号的数据、需要发现隐藏模式的场景。但聚类结果可能不唯一,不同的相似性度量会产生不同的聚类结果。
1.2 为什么需要聚类
问题:为什么需要聚类?
通俗理解 :就像图书馆需要把书籍分类整理,聚类可以帮助我们发现数据中的规律和模式,理解数据的结构。核心作用:数据探索、模式发现、数据压缩、异常检测。
本质原理 :分类需要高昂的代价收集和标记大量训练元组集或模式,而聚类把数据集合划分成组(簇),然后给这些数量相对较少的组指定标号,成本更低。设计原因 :在实际应用中,获取有类标号的训练数据往往成本很高,而聚类可以自动发现数据中的模式,不需要人工标注。例如,在股票分析中,可以根据股票的价格波动模式自动将股票分成不同的行业组,而不需要事先知道有哪些行业。决策标准:当获取类标号成本高时,用聚类;当需要探索数据中的模式时,用聚类;当需要数据压缩时,用聚类。
应用边界:适合数据探索、模式发现、数据压缩的场景。但聚类结果需要人工解释和验证。
1.3 聚类vs分类
问题:聚类和分类有什么区别?
通俗理解 :分类就像老师根据标准答案批改作业(有标准答案),聚类就像学生自己发现规律(没有标准答案)。核心作用:理解聚类和分类的区别,选择合适的机器学习方法。
本质原理 :分类是监督学习,有类标号,需要训练数据;聚类是无监督学习,无类标号,不需要训练数据。与分类相比,聚类有如下特征:聚类过程与结果的动态性(最优分组数一般未知,可能没有关于聚类的任何先验知识,聚类结果是动态的);不同的相似性度量,不同的目的要求,产生的聚类结果是不一样的。设计原因 :不同的应用场景需要不同的方法。当有类标号时,用分类;当无类标号时,用聚类。例如,对顾客分组促进童装销售时,孩子数是最重要属性,年收入和受教育水平相关,年龄和婚姻状况无关,这需要根据业务目标选择合适的相似性度量。决策标准:有类标号 → 分类;无类标号 → 聚类;需要预测新样本 → 分类;需要发现数据模式 → 聚类。
应用边界:分类和聚类有不同的应用场景。但实际应用中,可以先聚类发现模式,再分类预测新样本。
二、聚类分析中的数据类型:如何计算相似性
!NOTE
📝 关键点总结:聚类分析需要处理不同类型的数据,核心是计算对象之间的相异度,不同数据类型需要不同的相异度计算方法。
数据类型:
- 数据矩阵:对象-变量结构,用p个变量表示n个对象(二模矩阵)
- 相异度矩阵:对象-对象结构,存储n个对象之间的相异度(一模矩阵)
- 区间标度变量:粗略线性标度的连续变量(重量、高度、气温等)
- 分类变量:标称变量(性别、颜色等)
- 序数变量:有序的分类变量(等级、排名等)
- 混合类型变量:包含多种类型的变量
相异度计算:区间标度变量用Minkowski距离(欧氏距离、曼哈顿距离);分类变量用简单匹配系数;序数变量先转换为区间标度变量;混合类型变量加权组合。
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是曼哈顿距离(Manhattan distance), q = 2 q=2 q=2是欧氏距离(Euclidean distance)。设计原因 :不同的距离度量适合不同的数据分布。欧氏距离适合数据分布均匀的情况,曼哈顿距离对离群点更鲁棒。由于不同变量的单位不同(如身高用厘米,体重用公斤),需要标准化(如z-score标准化)使不同变量具有相同的权重。决策标准:数据分布均匀 → 欧氏距离;数据有离群点 → 曼哈顿距离;不同变量单位不同 → 标准化后再计算距离。
应用边界 :适合连续变量。但需要标准化,计算复杂度是 O ( n p ) O(np) O(np),其中n是对象数,p是变量数。
2.3 分类变量的相异度
问题:如何计算分类变量的相异度?
通俗理解 :就像比较两个人的性别(男/女),分类变量是离散变量(如性别、颜色、品牌),需要用匹配程度来衡量相似性。核心作用:计算离散变量对象之间的相异度。
本质原理 :分类变量(Categorical variables)是标称变量,例如性别、颜色、品牌等。计算相异度的方法包括:简单匹配系数(Simple Matching Coefficient) 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的情况(如购物篮分析)。决策标准:所有分类变量同等重要 → 简单匹配系数;只关注共同特征 → 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-means算法?
通俗理解 :K-means就像把一堆点分成K组,每组找一个中心点(质心),让组内的点都离中心点最近。核心作用:快速将数据划分成K个簇,每个簇用质心表示。
本质原理 :K-means算法首先创建k个划分的初始集合,然后采用迭代重定位技术,通过将对象从一个簇转移到另一个来改进划分的质量。聚类结果是簇内的相似度高,而簇间的相似度低。簇的相似度是关于簇中对象的均值度量,可以看做是簇的质心(Centroid)或中心(centre of gravity)。算法步骤:1. 随机选择k个对象作为初始簇中心;2. 将每个对象分配到最近的簇中心;3. 重新计算每个簇的中心(均值);4. 重复步骤2-3直到簇中心不再变化。设计原因 :K-means算法简单快速,适合大规模数据。但只能发现球状簇,对离群点敏感,需要预先指定簇数k。决策标准:数据量大且需要快速聚类 → 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-means有什么优缺点?
通俗理解 :K-means就像一把快刀,能快速切分数据,但只能切出圆形,而且容易被异常点影响。核心作用:理解K-means的优缺点,判断是否适合当前问题。
本质原理 :K-means的优点包括:算法简单,易于理解和实现;计算效率高,适合大规模数据;结果直观,每个簇用质心表示。缺点包括:需要预先指定簇数k,但最优k值通常未知;只能发现球状簇,不能发现任意形状的簇;对离群点敏感,离群点会影响簇中心的位置;初始簇中心的选择会影响最终结果,可能陷入局部最优。设计原因 :K-means的设计目标是快速聚类,因此牺牲了灵活性(只能发现球状簇)和鲁棒性(对离群点敏感)。对于需要发现任意形状簇或数据有离群点的场景,需要使用其他算法(如DBSCAN、K-medoids)。决策标准:数据量大且需要快速聚类 → K-means;数据是球状分布 → K-means;数据有离群点 → 不用K-means;需要任意形状簇 → 不用K-means;需要预先指定簇数 → K-means。
应用边界:适合大规模数据、球状簇、需要快速聚类的场景。但对于复杂数据,可能需要尝试多种算法。
3.3 K值的选择
问题:如何选择合适的K值?
通俗理解 :K值就像分组数量,分得太少(K=2)可能把不同的人分在一起,分得太多(K=10)可能把相似的人分开,需要找到合适的平衡点。核心作用:选择合适的K值,获得最佳的聚类效果。
本质原理 :K值的选择通常使用肘部法则(Elbow Method):计算不同K值下的簇内平方和(Within-Cluster Sum of Squares, WCSS),WCSS会随着K值增大而减小,当K值增大到一定程度时,WCSS的下降速度会变慢,形成"肘部",这个K值就是合适的K值。也可以使用轮廓系数(Silhouette Coefficient):计算每个对象的轮廓系数,轮廓系数越大,聚类效果越好,选择轮廓系数最大的K值。设计原因 :K值太小会导致簇内差异大(欠拟合),K值太大会导致簇间差异小(过拟合)。肘部法则和轮廓系数都是通过量化聚类质量来选择K值,但肘部法则更直观,轮廓系数更精确。决策标准:需要快速选择 → 肘部法则;需要精确选择 → 轮廓系数;有领域知识 → 根据业务需求选择K值;没有先验知识 → 尝试多个K值,选择效果最好的。
应用边界:K值选择需要根据数据特点和应用需求。但肘部法则和轮廓系数都是启发式方法,可能需要结合领域知识。
四、实战场景:客户细分
4.1 业务痛点识别
电商平台有100万客户,需要根据客户的购买行为(年龄、年收入、年消费金额)将客户分成不同的群体,以便进行精准营销。传统方法需要人工分析,成本高且效率低。我们需要一个能够自动发现客户群体的方法,从客户数据中自动识别出不同的客户类型。
4.2 方案拆解:用核心知识点解决问题
数据准备 :客户数据包含年龄(区间标度变量)、年收入(区间标度变量)、年消费金额(区间标度变量)。为什么这样准备:这三个变量都是连续变量,适合用区间标度变量的方法计算相异度。由于不同变量的单位不同(年龄用岁,收入用元,消费金额用元),需要标准化(如z-score标准化)使不同变量具有相同的权重。
相异度计算 :使用欧氏距离计算客户之间的相异度。为什么这样选择:客户数据分布相对均匀,欧氏距离适合。标准化后的数据消除了单位差异,可以直接计算欧氏距离。
聚类算法选择 :使用K-means算法,K=5(根据业务需求分成5个客户群体)。为什么这样选择:数据量大(100万客户),需要快速聚类,K-means适合;客户群体通常是球状分布(年龄和收入相近的客户聚集在一起),K-means可以处理;需要预先指定簇数,K-means满足要求。
K值确定 :使用肘部法则确定K值,计算K=2到K=10的WCSS,选择WCSS下降速度变慢的K值。为什么这样确定:肘部法则简单直观,适合快速选择K值。如果业务有明确需求(如分成5个群体),也可以直接使用业务K值。
4.3 长期适配策略
数据变化 :如果客户数据增加或变化,可以重新运行K-means算法,或者使用增量聚类方法。判断标准:数据变化大 → 重新运行K-means;数据变化小 → 使用增量聚类;需要实时更新 → 使用增量聚类。
K值调整 :如果聚类效果不好(如簇内差异大或簇间差异小),可以调整K值。判断标准:簇内差异大 → 增大K值;簇间差异小 → 减小K值;聚类效果不好 → 尝试不同的K值。
算法选择 :如果数据有离群点或需要发现任意形状的簇,可以改用K-medoids或DBSCAN。判断标准:数据有离群点 → K-medoids;需要任意形状簇 → DBSCAN;数据量大且需要快速聚类 → K-means。
总结
聚类分析通过将相似对象分组,自动发现数据中的隐藏模式。通用应用逻辑公式:(1)理解问题类型(有类标号用分类,无类标号用聚类);(2)准备数据(识别数据类型,标准化数据);(3)计算相异度(根据数据类型选择相异度计算方法);(4)选择聚类算法(根据数据特点和应用需求选择算法);(5)确定参数(如K-means的K值);(6)评估结果(验证聚类效果,调整参数)。
可直接套用的落地模板 :(1)数据准备 :识别数据类型(区间标度、分类、序数、混合),标准化数据(消除单位差异);(2)相异度计算 :区间标度变量用欧氏距离或曼哈顿距离,分类变量用简单匹配系数或Jaccard系数,混合类型变量加权组合;(3)算法选择 :数据量大且需要快速聚类 → K-means,数据有离群点 → K-medoids,需要任意形状簇 → DBSCAN;(4)参数确定 :K-means的K值用肘部法则或轮廓系数,DBSCAN的 ϵ \epsilon ϵ和MinPts根据数据密度确定;(5)结果验证:可视化聚类结果,结合领域知识验证,调整参数优化效果。