聚类分析详解:相似性度量与系统聚类法的MATLAB实现
创作时间:
作者:
@小白创作中心
聚类分析详解:相似性度量与系统聚类法的MATLAB实现
引用
CSDN
1.
https://m.blog.csdn.net/2501_90186640/article/details/145804442
聚类分析是一种无监督学习方法,用于将数据集中的对象划分为若干组(簇),使得同一簇内的对象相似性较高,不同簇间差异显著。本文详细解析聚类分析的核心方法,涵盖样本与类间相似性度量(欧氏距离、马氏距离、类平均法等)及层次聚类流程。通过销售员业绩案例,逐步演示MATLAB中pdist、linkage、cluster函数的实战应用,包括数据标准化、距离矩阵计算、聚类树生成与结果划分。结合代码示例与可视化解读,帮助读者掌握多维数据分群的核心技能。
1. 聚类分析概述
聚类分析(Cluster Analysis)是一种无监督学习方法,旨在将数据集中的对象划分为若干组(簇),使得同一簇内的对象相似性较高,不同簇间差异显著。其核心步骤包括相似性度量与聚类算法设计。本节重点介绍样本与类间相似性度量方法,以及基于层次聚类的系统聚类法(Hierarchical Clustering),并结合MATLAB函数pdist、linkage、cluster进行实战演示。
2. 相似性度量方法
方法 | 公式 | 特点 | 适用场景 |
---|---|---|---|
欧氏距离 | $d(x,y) = \sqrt{\sum_{k=1}^{p} (x_k - y_k)^2}$ | 对量纲敏感,需标准化;坐标旋转后距离不变。 | 空间直线距离计算 |
马氏距离 | $d(x,y) = \sqrt{(x-y)^T \Sigma^{-1}(x-y)}$ | 解决变量相关性与量纲影响;计算复杂度高。 | 高相关性变量 |
绝对值距离 | $d(x,y) = \sum_{k=1}^{p} | x_k - y_k | $ |
Chebyshev距离 | $d_{\infty}(x,y) = \max_{1 \leq k \leq p} | x_k - y_k | $ |
最短距离法 | $D(G_1, G_2) = \min_{x_i \in G_1, y_j \in G_2} d(x_i, y_j)$ | 易形成链状结构,对噪声敏感。 | 噪声较少的数据 |
最长距离法 | $D(G_1, G_2) = \max_{x_i \in G_1, y_j \in G_2} d(x_i, y_j)$ | 倾向于生成紧凑簇,抗噪声能力强。 | 噪声较多的数据 |
类平均法 | $D(G_1, G_2) = \frac{1}{n_1 n_2} \sum_{x_i \in G_1} \sum_{y_j \in G_2} d(x_i, y_j)$ | 平衡最短与最长距离,鲁棒性较好。 | 一般数据 |
Ward法 | $D(G_1, G_2) = D_{12} - D_1 - D_2$ | 倾向于生成方差小的簇。 | 方差较小的簇 |
3. 系统聚类法(层次聚类)
3.1 算法流程
- 初始化:每个样本自成一类,计算距离矩阵D。
- 迭代合并:
- 找到距离最小的两类$G_p$和$G_q$,合并为新类$G_r$。
- 更新距离矩阵,重新计算$G_r$与其他类的距离。
- 终止条件:所有样本聚为一类,生成聚类树(Dendrogram)。
3.2 MATLAB核心函数详解
函数 | 功能 | 语法 | 参数说明 | 输出 |
---|---|---|---|---|
pdist | 计算样本间距离 | Y = pdist(X, 'metric', '参数') | -X:m×n数据矩阵,每行为一个样本。 -'metric':距离类型,如'euclidean'、'cityblock'。 | Y:长度为$(m-1)\cdot m/2$的距离向量。 |
linkage | 生成层次聚类树 | Z = linkage(Y, 'method') | -Y:pdist输出的距离向量。 -'method':类间距离方法,如'single'、'complete'。 | Z:$(m-1) \times 3$矩阵,记录聚类过程。 |
cluster | 从聚类树中划分指定数量的簇 | T = cluster(Z, 'maxclust', K) | -Z:linkage输出的聚类树。 -'maxclust', K:指定最终簇的数量K。 | T:m×1向量,元素表示对应样本所属的簇编号。 |
dendrogram | 绘制聚类树 | dendrogram(Z) | -Z:linkage输出的聚类树。 | 生成聚类树状图。 |
squareform | 将距离向量转换为方阵 | D = squareform(Y) | -Y:pdist输出的距离向量。 | D:m×m对称距离矩阵。 |
MATLAB核心函数示例
函数 | 示例代码 | 功能说明 |
---|---|---|
pdist | dist = pdist(data, 'cityblock'); | 计算数据矩阵data中样本间的绝对值距离。 |
linkage | Z = linkage(dist, 'average'); | 使用类平均法生成层次聚类树。 |
cluster | T = cluster(Z, 'maxclust', 3); | 将数据划分为3个簇。 |
dendrogram | dendrogram(Z); | 绘制聚类树状图。 |
squareform | dist_matrix = squareform(dist); | 将距离向量转换为对称距离矩阵。 |
3.3 完整案例:销售员业绩聚类
数据准备
5名销售员的销售业绩如下:
销售员 | 销售量(百件) | 回款额(万元) |
---|---|---|
$w_1$ | 1 | 0 |
$w_2$ | 1 | 1 |
$w_3$ | 3 | 2 |
$w_4$ | 4 | 3 |
$w_5$ | 2 | 5 |
步骤详解
- 计算绝对值距离矩阵:
data = [1,0; 1,1; 3,2; 4,3; 2,5];
dist = pdist(data, 'cityblock'); % 绝对值距离
dist_matrix = squareform(dist); % 转换为方阵
输出距离矩阵:
$$
\begin{bmatrix}
0 & 1 & 4 & 6 & 6 \
1 & 0 & 3 & 5 & 5 \
4 & 3 & 0 & 2 & 4 \
6 & 5 & 2 & 0 & 6 \
6 & 5 & 4 & 6 & 0 \
\end{bmatrix}
$$
- 生成聚类树:
Z = linkage(dist, 'single'); % 最短距离法
dendrogram(Z); % 绘制聚类树
- 划分3个簇:
T = cluster(Z, 'maxclust', 3);
disp(T'); % 输出:[1, 1, 2, 2, 3]
结果解读:
- 第1类:$w_1, w_2$(业绩较差)
- 第2类:$w_3, w_4$(业绩中等)
- 第3类:$w_5$(业绩最佳)
4. 总结
- 相似性度量:欧氏、马氏距离适用于不同场景,需结合数据特性选择。
- 层次聚类流程:pdist→linkage→dendrogram→cluster四步完成分析。
- MATLAB优势:函数简洁高效,支持多种距离与聚类方法,适合快速验证算法。
核心代码模板:
data = [样本数据矩阵];
dist = pdist(data, 'metric'); % 计算距离
Z = linkage(dist, 'method'); % 生成聚类树
dendrogram(Z); % 可视化
T = cluster(Z, 'maxclust', K); % 划分K个簇
掌握上述方法,可灵活应用于客户分群、图像分割、生物分类等场景,为数据分析提供有力支持。
热门推荐
如何提出管理咨询需求
白细胞计数偏高是什么原因
自制黄焖鸡的秘诀(从选材到烹饪,做出最地道的黄焖鸡)
如何应对工作中的领导变更
孙吴县殡葬改革实践:减项降费优服务,提升群众满意度
常见的金属表面除锈方法汇总
打架拘留记录会不会影响个人信用评估
5G远程医疗技术:重塑医疗护理的未来图景
人类精神与智慧的源头:奠基世界文明范式的“四大圣哲”
零基础如何备考日语N3?
消费者投诉案件查询:法律实务与操作指南
创业机会识别与资源整合
做汗蒸会对身体有哪些功效
二手房房东不降价?这些谈判技巧帮你争取合理价格
如何申请法院强制执行房产
买新房如何判断小区环境?这五大标准必须牢记!
逾期有必要咨询律师吗
亲属“不够用”了,想给自己找个监护人
西瓜放冰箱隔夜能吃吗?西瓜的正确保存方法
Qt和Flutter哪个开发app更好
黄花风铃木:春日的“黄金风铃”及其生态价值
“图必有意,意必吉祥”:中国传统纹样的文化内涵
户籍证明开具指南:流程详解与注意事项
天干欠合代表什么意思及其对命运的影响解析
动产与不动产的法律定义及其区分
“里海”是湖,为什么叫作海?
庭前调解的流程、费用及协议不履行时的处理方法
项目管理系统:实现成本透明化,避免预算黑洞
三个课堂是指什么?如何开展?
如何使用会议行程安排模板高效规划会议日程?