聚类算法&k-means聚类

聚类算法


§6.1 引言


判别分析和聚类分析是两种不同目的的分类方法,它们所起的作用是不同的。

判别分析方法假定组(或类)已事先分好,判别新样品应归属哪一组,对组的事先划分有时也可以通过聚类分析得到。

**聚类分析:**将分类对象分成若干类,相似的归为同一类,不相似的归为不同的类。

聚类分析分为Q型(分类对象为样品)和R型(分类对象为变量)两种。

§6.2 距离和相似系数


相似性度量:距离相似系数**。

距离常用来度量样品之间的相似性,相似系数常用来度量变量之间的相似性。

样品之间的距离和相似系数有着各种不同的定义,而这些定义与变量的类型有着非常密切的关系。

变量的测量尺度

通常变量按测量尺度的不同可以分为间隔、有序和名义尺度变量三类。

**间隔尺度变量:**变量用连续的量来表示,如长度、重量、速度、温度等。

**有序尺度变量:**变量度量时不用明确的数量表示,而是用等级来表示,如某产品分为一等品、二等品、三等品等有次序关系。

名义尺度变量:变量用一些类表示,这些类之间既无等级关系也无数量关系,如性别、职业、产品的型号等。

本章主要讨论具有间隔尺度变量的样品聚类分析方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

§6.3 系统聚类法

系统聚类法(hierarchical clustering method)是聚类分析诸方法中用得最多的一种。

基本思想是:开始将n个样品各自作为一类,并规定样品之间的距离和类与类之间的距离,然后将距离最近的两类合并成一个新类,计算新类与其他类的距离;重复进行两个最近类的合并,每次减少一类,直至所有的样品合并为一类。

以下列出了八种系统聚类方法,其区别在于类与类之间距离的计算方法不同。

一、最短距离法

二、最长距离法

三、中间距离法

四、类平均法

五、重心法

六、离差平方和法(Ward方法)

七、系统聚类法的统一

八、类的个数


系统聚类法的统一

在这里插入图片描述
在这里插入图片描述

§6.4 动态聚类法

动态聚类法的基本思想是,选择一批凝聚点或给出一个初始的分类,让样品按某种原则向凝聚点凝聚,对凝聚点进行不断的修改或迭代,直至分类比较合理或迭代稳定为止。类的个数k可以事先指定,也可以在聚类过程中确定。选择初始凝聚点(或给出初始分类)的一种简单方法是采用随机抽选(或随机分割)样品的方法。

动态聚类法有许多种方法,本节中,只讨论一种比较流行的动态聚类法——k均值法k均值法是由麦奎因(MacQueen,1967)提出并命名的一种算法。

k均值法的基本步骤

  1. 选择k个样品作为初始凝聚点,或者将所有样品分成k个初始类,然后将这k个类的重心(均值)作为初始凝聚点。
  2. 对除凝聚点之外的所有样品逐个归类,将每个样品归入凝聚点离它最近的那个类(通常采用欧氏距离),该类的凝聚点更新为这一类目前的均值,直至所有样品都归了类。
  3. 重复步骤(2),直至所有的样品都不能再分配为止。

最终的聚类结果在一定程度上依赖于初始凝聚点或初始分类的选择。经验表明,聚类过程中的绝大多数重要变化均发生在第一次再分配中。

k均值算法实战案例

原始数据:

在这里插入图片描述

%--------------------------------------------------------------------------
%               读取examp09_04.xls中数据,进行K均值聚类
%--------------------------------------------------------------------------

%*************************读取数据,并进行标准化变换*************************
[X, textdata] = xlsread('examp09_04.xls');  % 从Excel文件中读取数据
row = ~any(isnan(X), 2);  % 返回一个逻辑向量,非缺失观测对应元素1,缺失观测对应元素0
X = X(row, :);  % 剔除缺失数据,提取非缺失数据
countryname = textdata(3:end,1);  % 提取国家或地区名称,countryname为字符串元胞数组
countryname = countryname(row);  % 剔除缺失数据所对应的国家或地区名称

X = zscore(X);    % 数据标准化,即减去均值,然后除以标准差


%*************************选取初始凝聚点,进行聚类***************************
startdata = X([8, 27, 42],:);    % 选取第8、第27和第42个观测为初始凝聚点
idx = kmeans(X,3,'Start',startdata);    % 设置初始凝聚点,进行K均值聚类


%****************************** 绘制轮廓图 *********************************
[S, H] = silhouette(X,idx);    % 绘制轮廓图,并返回轮廓值向量S和图形句柄H



countryname(idx == 1)    % 查看第1类所包含的国家或地区
countryname(idx == 2)    % 查看第2类所包含的国家或地区
countryname(idx == 3)    % 查看第3类所包含的国家或地区

在这里插入图片描述

在聚类分析中,“Silhouette Value”(轮廓值)是一个衡量聚类效果好坏的指标。

轮廓值的范围是[-1, 1],它为每个数据点提供了一个介于-1和1之间的值,用来表示该数据点在当前聚类中的一致性和凝聚性。

轮廓值的解释如下:

  • 接近1的值表示数据点在其聚类中非常紧密,并且与最近的其他聚类相隔较远,即聚类效果良好。
  • 接近0的值表示数据点可能处于两个聚类之间的边界上,聚类效果不确定。
  • 负值表示数据点可能被错误地分配到了聚类,应该属于另一个聚类。

轮廓值可以用来评估聚类算法的性能,选择最佳的聚类数目,或者比较不同聚类算法的效果。

聚类分析结果:

ans =

16×1 cell 数组

' 中    国'
' 印度尼西亚'
' 伊    朗'
' 哈萨克斯坦'
' 朝    鲜 '
' 蒙    古'
' 菲 律 宾'
' 泰    国'
' 越    南'
' 埃    及'
' 墨 西 哥'
' 巴    西'
' 委内瑞拉'
' 俄罗斯联邦'
' 土 耳 其'
' 乌 克 兰'

ans =

8×1 cell 数组

' 孟加拉国'
' 柬 埔 寨'
' 印    度'
' 老    挝'
' 缅    甸'
' 巴基斯坦'
' 尼日利亚'
' 南    非'

ans =

19×1 cell 数组

' 文    莱'
' 以 色 列'
' 日    本'
' 韩    国'
' 马来西亚'
' 新 加 坡'
' 斯里兰卡'
' 美    国'
' 阿 根 廷'
' 捷    克'
' 法    国'
' 德    国'
' 意 大 利'
' 荷    兰'
' 波    兰'
' 西 班 牙'
' 英    国'
' 澳大利亚'
' 新 西 兰'

文章中的相关文件以及PPT文件可以在上传的资源:《聚类分析,使用MATLAB,案例和代码》中找到。

' 阿 根 廷'
' 捷    克'
' 法    国'
' 德    国'
' 意 大 利'
' 荷    兰'
' 波    兰'
' 西 班 牙'
' 英    国'
' 澳大利亚'
' 新 西 兰'

文章中的相关文件以及PPT文件可以在上传的资源:《聚类分析,使用MATLAB,案例和代码》中找到。

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值