流程:
(1) 首先选取K个样本点或随机生成K个点作为K个簇的初始中心。
(2) 计算所有样本点到K个簇中心的距离,将样本归到距离最近的簇中心簇中。
(3) 计算每个簇的平均特征更新K个簇的中心。
(4) 重复(2)(3)两个过程。
优点:
(1) 简单,时间复杂度低.
(2) 对密集的、球状或团状的区别明显的凸数据集而言聚类效果好。
缺点:
(1) 对离群点和噪声点敏感
(2) 需要提前指定簇数K,对K敏感
(3) 对初始的聚类中心选择敏感
(4) 只能聚凸(集合中的两个点,连线上的任意一点也在该集合内,即类似球形)的数据集。
层次聚类分为凝聚层次聚类和分裂层次聚类。
分裂层次聚类为自顶而下,先认为所有样本都属于一个簇,然后不断迭代划分成更小的簇,直到每个簇中只有一个样本为止。
凝聚层次聚类为自下而上,先认为所有样本自身为一个簇,然后不断迭代合并簇,直到最后所有的样本都只属于一个簇为止。
优点:
(1) 无需提前制定簇数
(2) 可以聚类成非凸形状
缺点:
(1) 计算复杂度高
(2) 奇异值(离群点和噪声点)会产生很大影响
(3) 可能会聚成链状。
优点:
(1) 可以对任意形状密集的数据集聚类(Kmeans只适用于凸数据集)
(2) 对异常点不敏感,可以聚类过程中自动排除异常点;聚类结果稳定,不随初始值改变。
缺点:
(1) 数据集样本密度不均匀,各个簇内间距相差较大时,聚类效果较差
(2) 调参较难,需要调节eps和minpoints
(3) 数据集较大时聚类计算复杂度大。
谱聚类的思想来源于图论,它把待聚类的数据集中的每一个样本看做是图中一个顶点,这些顶点连接在一起,连接的这些边上有权重,权重的大小表示这些样本之间的相似程度。同一类的顶点它们的相似程度很高,在图论中体现为同一类的顶点中连接它们的边的权重很大,不在同一类的顶点连接它们的边的权重很小。谱聚类的最终目标就是找到一种切割图的方法,使得切割之后的各个子图内的权重很大,子图之间的权重很小。
谱聚类中可以通过SVD进行降维。
谱聚类通过将离散问题连续化,通过Rayleigh quotient将特征向量和特征值与最小割问题建立联系。
优点:
(1) 谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法比如K-Means很难做到.
(2) 由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好。
缺点:
(1) 如果最终聚类的维度非常高,则由于降维的幅度不够,谱聚类的运行速度和最后的聚类效果均不好。
(2) 聚类效果依赖于相似矩阵,不同的相似矩阵得到的最终聚类效果可能很不同。