聚类算法总结

Kmeans

kmeans, 或k-均值聚类是一个不断重复迭代的算法,试图将样本分到k样本不交叉的簇中,划分的过程中,需要尽量的做到“同一个类内的样本离的越近越好,不同类间的样本离得越远越好”。
划分的过程使得类样本的平方和最小(WCSS within-cluster sum of squares),其需要满足目标:

\[arg \min \sum_{i=1}^{k}\sum_{x\in S_i} ||x-\mu_i||^2 \]

其中,\(\mu_i\)\(S_i\)中所有点的均值,上式叫做L2规数/欧几里得距离,算法的步骤为:

  1. 指定聚类数量k
  2. 随机初始化k个样本作为初始聚类中心
  3. 不断计算每个样本与聚类中心的距离,将样本分配给最近的中心
  4. 所有样本计算结束后,重新计算各自类簇内的聚类中心,计算方式为平均类内的所有样本
  5. 重复 3 4 步直到聚类中心不再变化或者达到迭代次数为止

kmeans存在的问题

  • 因为涉及到距离,如果采用欧式距离等只能适合于对连续型数据
  • 计算时间复杂度太高,基本就是\(O(n^2)\)
  • 由于是随机初始化的聚类中心,因次每次聚类的结果都不会稳定,而且效果不好
  • 容易收到异常值的影响

kmeans++

因为kmeans随机初始化聚类中心而导致的聚类结果不稳定的问题,kmeans++主要针对这个问题做了改进。核心就是在初始化聚类中心的时候,选择离已选的聚类中心最远的点作为初始化的依据
计算方式为:

  1. 随机选取中心点\(c_1\)
  2. 计算每个未被选择的样本与已有聚类中心的最短距离\(D(x)\)
  3. 计算每个样本被选为下一个聚类中心的概率:\(\frac{D(x)^2}{\sum_{x\in X} D(x)^2}\), 那么,谁离几个聚类中心最远,就更有可能被选择为聚类中心。
  4. 重复 2、3步直到选择到k个聚类中心
    5 选出后遵循kmeans的4 5 步

kmeans++存在的问题

  1. 除了聚类中心之外,其他的劣势和kmeans差不多

Mean Shift

mean shift(均值漂移)是一种用在非参数特征空间内用于定位密度函数最大值的算法,本质上是一种基于核密度的聚类算法。
它的工作原理是将质心的候选样本更新为给定区域内点的平均值,然后在后处理阶段对这些候选对象进行过滤,以消除近似重复的对象,从而形成最终的质心集。
均值漂移描述了一种定位密度函数最大值的通用非参数分析方法,其中均值漂移聚类只是指其在聚类任务中的应用。换句话说,mean shift在聚类应用中做的事情就是定位密度函数最大值(均值漂移算法),然后将点分配给最近的最大值。从这个意义上说,它与 k-means 有一些相似之处(密度最大值对应于后者的质心)。

区别于kmeans,它的实现不需要预先指定聚类数量,而且由于它是基于密度的,它可以检测任何形状的簇(kmeans是球形簇)。但是该算法依赖于带宽参数(或者说是滑窗半径),该参数仅确定将要被计算密度的邻域大小。小半径可能会产生过多的簇,而大半径可能会错误地组合多个簇。不过,可以使用使用 (kNN) 算法来确定最佳半径。

means shift
直观的看,聚类中心最初是随机映射到数据集上的(如 k-means)。每个中心周围是一个球(其半径由带宽参数决定),其中密度等于每个球内的点数。通过将中心移动到球内点的平均值(因此得名),球的中心被迭代地推向更高密度的区域。重复这个过程,直到球几乎没有运动。当多个球重叠时,保留点数最多的球,球内的样本属于同一个类簇

核密度估计(Kernel Density Estimation)

posted @ 2021-08-15 22:03  real-zhouyc  阅读(348)  评论(0编辑  收藏  举报