机器学习之聚类任务的经典算法(未完,本月内将持续更新)

一、聚类算法的基本类型:

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,值越大,意味着聚类的效果越好)

你可能感兴趣的:(机器学习,聚类,机器学习)