目录

1.聚类算法的简介

2.常见的聚类算法

K-MEANS聚类算法

均值偏移聚类算法

GMM的期望最大化聚类


1.聚类算法的简介

聚类算法是一种典型的无监督学习算法,将相似的样本自动归类到一个类别当中。

计算相似度的方法就包括了欧氏距离法。

2.常见的聚类算法

K-MEANS聚类算法

🖊假设有k个质心以及分布了很多个点,哪个点离哪个质心近就划分到那个质心对应的类中,然后之后再在每个类中再求平均值,确定新的质心,如此迭代下去直至收敛。

例子:

解决野火问题时,救活人员以及野火所在的位置大致可以看为一个整体,当我们要在野外部署EOC使得能够覆盖到的救活人员和野火要尽量的多的范围,而且我们要尽量减少成本,即EOC的数量应该尽可能的少。在这种情况下,我们使用K均值算法。假设有k个EOC,计算人员到达每个EOC的距离,距离短的就分到相应的类别里,在这些分类点中,我们通过取组中的所有向量的均值重新计算出EOC(质心)的位置。

性能最好的聚类算法 聚类算法 知乎_聚类算法

       

性能最好的聚类算法 聚类算法 知乎_聚类算法_02

 

性能最好的聚类算法 聚类算法 知乎_性能最好的聚类算法_03

         

性能最好的聚类算法 聚类算法 知乎_算法_04

步骤:

  1. 设置k个点作为聚类中心;
  2. 计算每个点到所有聚类中心的距离,其中距离最短的点就作为该点所属的类别,以此完成第一次分类;
  3. 在第一次分类后重新计算质心的距离,即求各个点位置坐标的平均值;
  4. 重复上述过程直至收敛。

模型评估

误差平方和

性能最好的聚类算法 聚类算法 知乎_性能最好的聚类算法_05

性能最好的聚类算法 聚类算法 知乎_滑动窗口_06

SSE是松散度的衡量,所以SSE越小越好。下图中,左边区域的SSE小于右边,所以左边更好。 


均值偏移聚类算法

🖊均值偏移聚类算法是一种基于滑动窗口的算法,假设我们的窗口为一个以A点为中心,以r为半径的圆形区域,不断移动圆心从而使得圆形区域包围的点越来越多,直至收敛。其中移动圆心为圆形区域内的点的平均值,使得圆形区域逐渐向更高的点密度移动,直至圆形区域内包含的点数不再增加。

  1. 设置多个滑动窗口,通过计算滑动窗口里面点的平均位置确定新的圆心,不断移动圆心使得每个滑动窗口包含的点数尽量多。
  2. 当多个滑动窗口有重叠时,包含点数最多的保留。
  3. 数据点根据他们所在的滑动窗口聚类。

⭐:确定半径是关键!

GMM的期望最大化聚类

📕知识点解析:

1.极大似然估计:

设样本服从正态分布 N(μ,σ2) ,则似然函数为:

性能最好的聚类算法 聚类算法 知乎_聚类算法_07

目的:求解参数μ,σ2

  • 首先我们要对似然函数求对数

性能最好的聚类算法 聚类算法 知乎_性能最好的聚类算法_08

  • 对参数求导,再令导数为0,这样求出的点是似然函数的极值点

性能最好的聚类算法 聚类算法 知乎_算法_09

       解的:

性能最好的聚类算法 聚类算法 知乎_算法_10

  •  求解似然函数导数方程

2.GMM原理

🖊不同于K-MEANS聚类算法,高斯混合模型是给出每个样本被分配到每个簇的概率,最后从中选取一个最大的概率对应的簇作为该样本被分配到的簇。

我们假设存在 k 个簇,且每一个簇均服从高斯分布。我们以概率 

性能最好的聚类算法 聚类算法 知乎_算法_11

 随机选择一个簇 k ,并从该簇的分布中采样样本点,如此得到观测数据X ,则其似然函数为:

性能最好的聚类算法 聚类算法 知乎_滑动窗口_12

参数计算方法参考EM算法与GMM(高斯混合聚类) - 知乎 (zhihu.com)

  1. 选择簇的数量并初始化每个簇的高斯分布参数(均值和方差);
  2. 给定每个簇的高斯分布,计算每个数据点属于每个簇的概率;
  3. 基于这些概率我们计算高斯分布参数使得数据点的概率最大化,可以使用数据点概率的加权来计算这些新的参数,权重就是数据点属于该簇的概率;
  4. 重复迭代2和3直到在迭代中的变化不大。