聚类分析简述
聚类分析概述
聚类分析是一种无监督学习(无监督学习:机器学习中的一种学习方式,没有明确目的的训练方式,无法提前知道结果是什么;数据不需要标签标记),用于对未知类别的样本进行划分将它们按照一定的规则划分成若干个类簇,把相似(相关的)的样本聚在同一个类簇中, 把不相似的样本分为不同类簇,从而分析样本之间内在的性质以及相互之间的联系规律。它是一种思想,并不是一种方法。
层次聚类
层次聚类是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。举一个简单的例子,如图所示,这里的簇形成了一个简单的层次结构
现在来看看下面的几个小球,我们现在对它进行划分,可以将其划分为2个簇,3个簇,甚至还可以将一个小球作为一个簇,即分为6个簇,那么问题来了,我们最后应该选择划分为几个簇才是最合适的呢?这也是聚类算法中最需要解决的问题。
在层次聚类中我们通常通过计算相似度来进行数据的簇的划分。
相似度的计算:层次聚类使用欧式距离来计算不同类型数据点间的距离,即相似度。(如图例所示,计算数据点之间的距离来进行分簇)欧式距离公式:D=sqrt((x1-y1)^2 + (x2-y2)^2)
而层次聚类算法根据层次分解的顺序分为:自底向上和自顶向下,即凝聚的层次聚类算法(agglomerative)和分裂的层次聚类算法(divisive)。
凝聚层次聚类算法:开始每个数据都是一个类,之后根据寻找同类,最后形成一个类。
分裂层次聚类算法:开始所有数据都属于一个类,之后根据排除不同的,最后每个个体都成为一个“类”。
自底向上的合并算法:通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高。
如图表格中的数据为各个数据点之间的距离,会发现BD之间的距离是最小的,因此将BD进行合并后再计算BD与其他数据点之间的距离,然后再寻找距离最小的数据点进行合并,迭代进行以上操作。
由此可推出凝聚的层次聚类算法流程:
1、将每一个对象看作一类,计算两两之间的最小距离;
2、 将距离最小的两个类合并成一个新类;
3、 再重新计算新类与所有类之间的距离;
4、重复以上操作,直到所有类最后合并成一类;
而层次算法也有优缺点:
优点:
1、不需要预先制定聚类数;
2、可以发现类的层次关系;
3、可以聚类成其它形状;
缺点:
1、计算的复杂度较高;
2、奇异值也能产生很大影响;
K-Means算法
K-Means算法是基于划分的聚类算法,计算样本点与簇质心的距离,与簇质心相近的样本点划分为同一类簇。两个样本距离越远,则相似度越低。
基本概念:
1、要得到簇的个数,需要指定k值,例如k=3,则表示需要将数据分成3个簇;
2、质心,即为均值,向量的各个维度取平均,例如图中黑点便是红色数据点的质心(x轴数据取均值,y轴数据取均值)
3、距离的度量:常用欧式距离和余弦相似度(数据需先标准化)
4、优化目标:机器学习算法中优化目标是必不可少的一步。这里优化的是各个数据点到中心点的距离,距离越小越好。
以下图示便是K-Means算法工作流程:这里假设k=2,随机初始化两个点,然后将数据点与这两个点分别两两进行距离计算,然后进行分类,如c图,接着进行质心的更新,得到红色的质心与蓝色的质心后,再继续计算两两之间的距离,最后得到图f,在这之后无论进行多少次质心的更新,数据的簇不会有很大变化了。
优点:
1、简单,适合常规数据集;
缺点:
1、k值难确定,因为这是一个无监督算法,数据没有标签分类;
2、若与数据集较大的,此方法的复杂度会很高,因为要不断的进行质心的更新;
DBSCAN算法
DBSCAN是一种基于密度的空间聚类算法。 该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。
基本概念:
1、核心对象:若某个点的密度达到算法设定的阈值,则其为核心点。即r领域内点的数量个数不小于minPS,假设一个阈值为3,现以某个点为中心的领域内点的数量为7,即认为这个点为核心对象;
2、距离阈值:设定的半径r;
(以上两个值是需要自己指定,不需要指定簇的个数)
3、直接密度可达:若某点p在点q的r领域内,且q是核心点则p-q直接密度可达;
4、边界点:属于某个类的非核心点,不能发展下线了;
工作流程:
参数data:输入数据集
参数r:指定半径,可以根据k距离来设定,找突变点(k距离:给定数据集data中,计算点dataI(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)被称为k距离。
MinPS:密度阈值
优点:
1、不需要指定簇的个数
2、可以发现任意形状的簇
3、只需要指定两个参数
缺点:
1、参数难以选择
2、高维的数据选择较困难
版权归原作者 熊️兔 所有, 如有侵权,请联系我们删除。