谱聚类算法的原理
在分析快速迭代聚类之前,我们先来了解一下谱聚类算法。谱聚类算法是建立在谱图理论的基础上的算法,与传统的聚类算法相比,它能在任意形状的样本空间上聚类且能够收敛到全局最优解。 谱聚类算法的主要思想是将聚类问题转换为无向图的划分问题。
在分析快速迭代聚类之前,我们先来了解一下谱聚类算法。谱聚类算法是建立在谱图理论的基础上的算法,与传统的聚类算法相比,它能在任意形状的样本空间上聚类且能够收敛到全局最优解。 谱聚类算法的主要思想是将聚类问题转换为无向图的划分问题。
当数据是以流的方式到达的时候,我们可能想动态的估计(estimate
)聚类的簇,通过新的到达的数据来更新聚类。spark.mllib
支持流式k-means
聚类,并且可以通过参数控制估计衰减(decay
)(或“健忘”(forgetfulness
))。 这个算法使用一般地小批量更新规则来更新簇。
本文会介绍一般的k-means
算法、k-means++
算法以及基于k-means++
算法的k-means||
算法。在spark ml
,已经实现了k-means
算法以及k-means||
算法。 本文首先会介绍这三个算法的原理,然后在了解原理的基础上分析spark
中的实现代码。
假设向量v
是方阵A
的特征向量,可以表示成下面的形式:
lambda
表示特征向量v
所对应的特征值。并且一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解为下面的形式: 二分k-means
算法是层次聚类(Hierarchical clustering)的一种,层次聚类是聚类分析中常用的方法。 层次聚类的策略一般有两种:
自底向上
的方法,每一个观察者初始化本身为一类,然后两两结合自顶向下
的方法,所有观察者初始化为一类,然后递归地分裂它们 二分k-means
算法是分裂法的一种。
Bagging
采用自助采样法(bootstrap sampling
)采样数据。给定包含m
个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时,样本仍可能被选中, 这样,经过m
次随机采样操作,我们得到包含m
个样本的采样集。
给定n个带权的观察样本\((w_i,a_i,b_i)\):