- 第5章 Spark ML聚类算法
- 5.1 基于中心的聚类—Kmeans (K-均值) 聚类算法
- 5.1.1 K-均值聚类算法主要步骤
- 5.1.2 K-均值算法聚类效果演示
- 5.1.3 初始化聚类中心点
- 5.1.4 Kmeans模型参数详解
- 5.2 LDA 主题聚类算法
- 问题描述: 假设在你的硬盘驱动器上有很多文件夹,里面存放着大量的 mp3 文件。现在,如果可以构建一个 预测模型,从而可以帮助你自动将 类似的歌曲 进行 分类,并将它们组织成你喜欢的类别,例如乡村、说唱、摇滚等。这种将 mp3 文件分配到不同组的动作,使得 mp3 文件能以 无人监督 的方式被添加到相应的播放列表中。
- 在之前的章节中,我们假设你已经获得了 正确标记数据 的训练数据集。遗憾的是,当我们在真实世界中收集数据 (假如我们想将大量音乐分成有兴趣的播放列表) 时,我们往往无法如此奢侈。如果我们无法直接访问这些 mp3 文件的元数据,我们怎么可能将它们分成不同的组?
- 在这里, 聚类 算法通常是解决问题的核心。
- 简而言之,在无监督的机器学习问题中,训练数据集的正确类别往往是不可用或未知的。
- 换言之,无监督学习算法 的主要目的是探索未标记的输入数据中的未知/隐藏模式。
5.1 基于中心的聚类—Kmeans (K-均值) 聚类算法
- K-均值算法 的基本思想是初始随机给定 K 个 簇中心,按照 最邻近原则 把待分类样本点分到各个 簇。然后按 平均法 重新计算各个 簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。
K-均值算法 主要分为如下几个步骤:
- (1) 为待聚类的点寻找 聚类中心;
- (2) 计算每个点到 聚类 中心的距离,将每个点聚类到离该点最近的 聚类 中去;
- (3) 计算每个 聚类 中所有点的坐标平均值,并将这个平均值作为新的 聚类中心。
- (4) 反复执行(2)、(3),直到 聚类中心 不再进行大范围移动或者聚类次数达到要求为止。
下面展示了对 n 个样本点进行 K-均值算法 聚类的效果,这里 k 取 2。
K-均值++算法 选择初始中心点的基本思想就是: 初始的聚类中心之间的相互距离要 尽可能远。初始化过程如下:
- (1) 从输入的数据点集合中随机选择一个点作为第一个聚类中心;
- (2) 对于数据集中的每一个点x,计算它与最近聚类中心 (指已选择的聚类中心) 的距离 D(x);
- (3) 选择一个新的数据点作为新的聚类中心,选择的原则是: D(x) 较大的点,被选取作为聚类中心的概率较大;
- (4) 重复 (2) 和 (3),直到k 个聚类中心被选出来;
- (5) 利用这 k 个初始的聚类中心来运行标准的 K-均值算法。
从上面的算法描述可以看到,算法的关键是第 (3) 步,如何将 D(x) 反映到点被选择的概率上。一种算法如下。
- (1) 随机从点集 D 中选择一个点作为初始的中心点。
- (2) 计算每一个点到最近中心点的距离 Si,对所有 Si 求和得到 sum。
- (3) 然后再取一个随机值,用权重的方式计算下一个 “种子点”。取随机值random(0
- (4) 重复 (2) 和 (3),直到 k 个聚类中心被选出来。
- (5) 利用这 k 个初始的聚类中心来运行标准的 k-均值算法。
聚类中心点初始化方法:
5.2 LDA 主题聚类算法
暂略…



