1、K-Means(K均值)聚类
算法步骤:
(1)选择一些类,随机初始化它们的中心点。
(2)计算每个数据点到中心点的距离,数据点距离哪个中心点最近就划分到哪一类中。
(3)计算每一类中中心点作为新的中心点。
(4)重复以上步骤,直到每一类中心在每次迭代后变化不大为止。也可以多次随机初始化中心点,然后选择运行结果最好的一个。
2、均值漂移聚类
均值漂移聚类是基于滑动窗口的算法,来找到数据点的密集区域。这是一个基于质心的算法,通过将中心点的候选点更新为滑动窗口内点的均值来完成,来定位每个类的中心点。然后去除相似窗口,最终形成中心点集及相应的分组。
算法步骤:
(1)确定滑动窗口半径r,以随机选取的中心点C半径为r的圆形滑动窗口开始滑动。均值漂移类似一种爬山算法,在每一次迭代中向密度更高的区域移动,直到收敛。
(2)每一次滑动到新的区域,计算滑动窗口内的均值来作为中心点,滑动窗口内的点的数量为窗口内的密度。在每一次移动中,窗口会想密度更高的区域移动。
(3)移动窗口,计算窗口内的中心点以及窗口内的密度,知道没有方向在窗口内可以容纳更多的点,即一直移动到圆内密度不再增加为止。
(4)步骤一到三会产生很多个滑动窗口,当多个滑动窗口重叠时,保留包含最多点的窗口,然后根据数据点所在的滑动窗口进行聚类。
3、基于密度的聚类方法(DBSCAN)
与均值漂移聚类类似,也是基于密度的聚类算法。
算法步骤:
(1)首先确定半径r和minPoints. 从一个没有被访问过的任意数据点开始,以这个点为中心,r为半径的圆内包含的点的数量是否大于或等于minPoints,如果大于或等于minPoints则改点被标记为central point,反之则会被标记为noise point。
(2)重复(1)的步骤,如果一个noise point存在于某个central point为半径的圆内,则这个点被标记为边缘点,反之仍为noise point。重复步骤(1),直到所有的点都被访问过。
4、用高斯混合模型(GMM)的最大期望(EM)聚类
使用高斯混合模型做聚类首先假设数据点是呈高斯分布的。我们有两个参数来描述簇的形状:均值和标准差。我们将采用一个叫做最大期望(EM)的优化算法找到数据集的均值和标准差。
算法步骤:
(1)选择簇的数量(与K-Means类似)并随机初始化每个簇的高斯分布参数。也可以先观察数据给出一个相对精确的均值和方差。
(2)给定每个簇的高斯分布,计算每个数据点属于每个簇的概率。一个点越靠近高斯分布的中心就越可能属于该簇。
(3)基于这些概率我们计算高斯分布参数使得数据点的概率最大化,可以使用数据点概率的加权来计算这些新的参数,权重就是数据点属于该簇的概率。
(4)重复迭代2和3直到在迭代中的变化不大。