一、聚类算法的基本类型:
1. 划分聚类:算法通过不断迭代得到样本数据的最优分配,但由于其本质是贪心算法,因此它可能得到的是局部最优解。
经典算法:k-means算法
2. 层次聚类:在不同的层次上对数据集进行划分,从而形成树形的聚类结构。可以采用“自底向上”或“自顶向下”的策略进行划分。
经典算法:AGNES(AGlomerative NESting)算法
3. 密度聚类:假设聚类结构能够通过样本分布的紧密程度确定。通常情况下,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接性不断拓展聚类簇以获得最终的聚类结果。
经典算法:DBSCAN算法
4. 基于神经网络的聚类方式
二、经典聚类方法:
1. K均值算法(k-means算法)
K-means算法是基于质心的划分方法。基于质心的划分方法依据初始簇的选择、对象的划分、相似度的计算方法、簇中心的计算方法不同而不同。
算法思想:
该划分方法将簇中所有对象的平均值看做簇的质心,在初始时,需要给定划分的簇个数k,然后得到了k个初始划分集合,再根据一个数据对象与簇质心的距离将该对象赋予最近的簇(用迭代重定位技术更新簇中心),从而提高划分的质量。
算法描述:
input:样本集d={x1, x2, …… ,xm},聚类簇数k
过程:
(1) 从d中随机选择k个样本作为初始的均值向量(初始聚类质心);
(2)
repeat
for i = 1, 2, … , m do
计算xi与各个均值向量的距离;
把xi归到距离最小的均值向量所在的簇中
end for
for i = 1, 2, … , m do
计算第i个簇的新的均值向量
if新的均值向量=旧的均值向量
保持当前均值向量不变
else
更新均值向量
until所有均值向量均未更新
output:k个划分好的簇集合
算法优点:简单,易实现,聚类结果不受输入顺序影响
算法缺点:
(1) 时间复杂度是指数级,计算量大
(2) 聚类结果受k值影响
(3) 聚类结果不稳定
(4) 由于其算法本质是贪心算法,因此可能无法求得全局最优解
算法适用范围:已确定类别数量,数据集规模较小的情况
2. AGNES算法(单链接算法single-linkaged/全链接算法/均链接算法)
AGNES算法属于采用“自底向上”聚合策略的层次聚类算法。与k-means算法一样都需要输入聚类结果的簇数。
基本思想:(和哈夫曼编码的思想有点类似)
先把数据集中的每一个样本看成一个初始聚类簇,然后计算每一个样本与其他样本间的距离,把距离最小的两个聚类簇进行合并,不断重复该过程,直至聚类簇的数量达到预设的聚类簇个数。
算法描述:
input:样本集d={x1, x2, …… ,xm},聚类簇数k
过程:
for i= 1, 2, …… , 3 do
ci = {xi};
endfor
for i= 1, 2, …… , 3 do
for j = 1, 2, …… , 3 do
计算Ci与Cj的距离
end for
endfor
repeat
找出距离最小的两个聚类簇Ci和Cj
合并Ci和Cj
for i = 1, 2, …… , 3 do
for j = 1, 2, …… , 3 do
计算Ci与Cj的距离
end for
end for
until聚类簇个数为k
output:k个聚类簇
算法优点:易实现、聚类结果稳定
算法缺点:
(1) 时间复杂度高,计算量大
(2) 其算法本质也属于贪心算法,可能无法得到全局最优解
(3) 聚类效果受k值影响
算法适用范围:小规模数据集聚类
3. DBSCAN算法
DBSCAN算法是基于一组“邻域参数”(具体概念见下)刻画样本的紧密程度,从而实现将样本集合划分为若干个聚类簇。DBSCAN算法将簇定义为:由密度可达关系导出的最大密度相连的样本集合。若存在样本不属于任何簇中的样本,则该样本被认定为噪声或异常样本。
邻域参数:
邻域:样本集中与某一个样本的距离(一般为欧氏距离)小于邻域半径的样本集合
核心对象:如果某一样本的邻域中至少包含MinPts个样本,则该样本为核心对象(MinPts的值需要另外输入)
密度直达:若xj位于xi的邻域中,且xi为核心对象,则xi与xj密度直达
密度可达:对xi和xj,若存在样本序列p1,p2,…… ,pn,其中p1 = xi, pn = xj,且pi+1由pi密度直达,则称xj由xi密度可达(传递性)
密度相连:对xi与xj,若存在xk是的xi和xj均有xk密度可达,则称xi与xj密度相连(对称性)
基本思想:
先根据给定的邻域半径将所有的核心对象找出来,构成一个核心对象集合,然后随机选择一个核心对象作为出发点,找出由其密度可达的所有样本形成聚类簇,若聚类簇中含有核心对象,则在核心对象集合中删除这些核心对象(包含出发点),不断重复这一过程,直至核心对象集合为空就停止聚类。
算法描述:
input:样本集合d={x1, x2, …… ,xm},邻域半径e, 阈值minpts
过程:
for i= 1, 2, …… , m do
确定xi的邻域
if xi的邻域样本个数 > minpts
把xi归入核心对象集合
end if
endfor
初始化聚类簇数k=0
repeat
随机选取核心对象集合中的一个样本
计算由该样本密度可达的样本数量n
if n > minpts
将该样本和由该样本密度可达的所有样本归到一个聚类簇
遍历该聚类簇,如有核心对象,则将其从核心对象集合标记为已划分
end if
until所有核心对象均已被划分
output:若干个聚类簇
算法优点:
(1) 能在具有噪声空间中发现任意形状的簇,并且不影响簇的形状
(2) 不需要预先输入聚类簇的个数
(3) 能够过滤噪声和异常样本
算法缺点:
聚类效果受样本集合的密度分布影响,若样本分布不均匀或间距很大时,聚类效果不好
算法适用范围:
未知聚类簇的个数且数据集规模较小
4. 学习向量量化算法(Learning Vector Quantization, 简称LVQ)
LVQ算法与k-means算法类似,LVQ也是试图找到一组原型向量来刻画聚类结构,但与一般的聚类算法不同的是,LVQ假设样本数据带有类别标记,学习过程中利用样本的这些监督信息来辅助聚类。样本集合中的每一个样本数据表示(特征向量,类别标记)。
5. 高斯混合分布算法
三、聚类算法的准确度评估:
聚类算法的准确度度量标准是:簇内相似度高,簇间相似度低
评估聚类算法的准确率指标有:外部指标和内部指标。
1. 内部指标:直接考察聚类的结果而不利用任何参考模型
常见的内部指标有:DB指数(简称DBI)、Dunn指数(简称DI),DBI的值越小越好,DI的值越大越好
2. 外部指标:将聚类的结果与多个“参考模型”(将专家的划分结果作为参考模型)进行比较。
常用的外部指标有:Jaccard系数、FM系数、Rand系数(这三个系数的值小于1大于0,值越大,意味着聚类的效果越好)