定义:聚类是一种无监督学习,样本没有标签,将一群样本划分到一个类中,使得:最大化类间距,最小化类内
四种聚类:
基于质心的聚类,使用中心表示该簇(K-means,K-medoids)
基于链接的聚类:层次聚类-在一定阈值处切断树,从而得到几个类
基于密度的聚类,DBSCAN,OPTICS,将高密度的区域连接起来
基于分布的聚类,Mixture models
K-means的思想:最小化数据到中心点的方差S,算法的目标是最小化数据点与所属簇中心之间的平方距离之和。
K-means 算法步骤:
但是如果是一个NP-hard问题,可以使用启发式搜索:
K-means的问题:
初始化的方式有可能导致划分结果完全不同,所以我们要对之进行避免
- 解决方法:
- 可以多次运行,然后选择error最小的聚类方式
- 不使用随机的方式选择初始点,比如选择最远的点作为聚类中心(kmeans++)
首先随机选择第一个类的中心点,然后计算剩余点的距离,在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。
K-means的限制:
簇是不同大小的话,不能很好的划分
簇有密度之分的话,也不能很好的划分
簇是非球形的话,划分结果也不好
解决方法:先划分出小的簇,然后合并成大簇。使用层次聚类或者基于密度的聚类可以克服以上三个问题。
Kmeans评价
优点:
缺点:
层次聚类定义:一种无监督学习方法,用于将数据点划分为多个不同的聚类簇。该算法通过计算数据点之间的相似性或距离来构建层次结构,并根据相似性度量逐步合并或划分聚类簇。
层次聚类思想:描述AB的相似度,A和B的相似性用最低共享内部节点的高度,相较于kmeans提供的是随机的结果,层次聚类提供的是确定性的结果,分为凝聚型层次聚类和分裂型层次聚类,主要关注自下而上或凝聚层次聚类。
层次聚类算法:开始每个点都是一类。然后确定距离最近的两个类,将之合并。重复直到只剩下一个类。
层次聚类优点:
层次聚类不足:
定义:树状图(dendrogram)是一种用于可视化层次聚类结果的图形表示方法。它将数据点和聚类簇按照层次结构展示,并显示它们之间的相似性或距离关系。
结构:在树状图中,每个数据点都表示为一个叶节点(leaf node),而每个聚类簇则表示为一个内部节点(internal node)。叶节点和内部节点之间通过边(branches)连接起来,形成一个树状结构。树状图的根节点(root node)表示整个数据集或最终的全局聚类簇。
特点:树状图通常以垂直方向绘制,其中纵轴表示聚类簇之间的距离或相似性度量。根据树状图上的切割点,可以选择不同层次的聚类簇。根据需要,可以通过调整切割点来获取不同粒度的聚类结果。
应用:树状图可以帮助我们直观地理解数据点之间的相似性和聚类结构。通过观察树状图,我们可以确定合适的聚类簇数目,或者选择合适的切割点来获取特定粒度的聚类结果。它在生物学、社会科学、计算机视觉等领域中被广泛使用。
两类距离:
single linkage cut interpretation
:对任意点xi,簇内存在一点xj,d(xi,xj)<=0.9complete linkage cut interpretation
:对任意点xi,其簇内的所有点都满足d(xi,xj)<=5各种问题:
single linkage
可能会划分出链条型的簇,簇不能太紧凑或者太分散complete linkage
可以避免链条型的簇,但是会受到过于紧凑簇的影响。因为它的分数是基于簇的最坏情况所以一个点可以更接近其他簇中的点,而不是它自己簇中的点。簇很紧凑,但距离不够远。average linkage
:不同于上述两个linkage,当我们切树状图的时候average linkage并不能给我们一个很好的解释。另外如果对结果简单应用一个单调递减变化,会影响最后的结果,从而我们不确定要使用哪种距离函数,而上述两个linkage没有这个问题Lance-Williams算法中聚类簇之间的连接方式:
单链接(Single Linkage):使用两个聚类簇中最近的两个数据点之间的距离作为聚类簇之间的距离。这种连接方式通常会导致产生长而细的聚类簇。
完全链接(Complete Linkage):使用两个聚类簇中最远的两个数据点之间的距离作为聚类簇之间的距离。这种连接方式通常会产生更紧凑且密集的聚类簇。
平均链接(Average Linkage):使用两个聚类簇中所有数据点对之间的平均距离作为聚类簇之间的距离。这种连接方式介于单链接和完全链接之间,能够平衡聚类簇的大小和紧密度。
算法思想:Lance-Williams算法通过递归地更新聚类簇之间的距离矩阵来实现。在每次迭代中,根据选择的连接方式计算新合并的聚类簇与其他聚类簇之间的距离,并将这些距离更新到距离矩阵中。这个过程不断重复,直到满足停止条件或达到预定的聚类数目。
特别注意:Lance-Williams算法只是层次聚类中的一种距离更新方法,而不是完整的层次聚类算法。它通常与其他聚类算法(如凝聚型层次聚类或K-means聚类)结合使用,以完成完整的聚类过程。
下面的更新公式是所有linkage的统一公式:
K-means:低内存占用;计算快,时间复杂度 O ( n ) O(n) O(n);但是结果对随机的初始化非常敏感,同时初始簇的个数需要事先确定。
层次聚类:是确定性的算法;树状图向我们展示了K的不同选择;仅需要一个距离矩阵,来看簇之间的不同;但是占用大量的内存,所需的计算也比K-means多。
基于密度的聚类算法,簇是高密度的区域,噪声点位于低密度的区域。
对于簇来说有两类点:
core point:其以eps为半径的范围内有至少MinPts个点
border point:在eps范围内的点数少于MinPts,但是他是core point的邻居
簇的概念
簇举例