聚类
目录
聚类¶
|
用于聚类的可扩展 KMeans |
|
应用并行谱聚类 |
模块 dask_ml.cluster
实现了几种用于对无标签数据进行聚类的算法。
谱聚类¶
谱聚类在样本间的亲和矩阵上找到一个低维嵌入。然后对嵌入后的数据集进行聚类,通常使用 KMeans。
通常,谱聚类算法的可伸缩性不佳。当样本数量很大时,计算 \(n\_samples \times n\_samples\) 的亲和矩阵会变得非常昂贵。已经提出了几种算法来解决这一限制。
在 dask-ml
中,我们使用 Nyström 方法来近似大型亲和矩阵。这涉及从整个训练集中采样 n_components
行。对这个子集( \(n\_components \times n\_components\) )以及这个小部分子集与其余数据( \(n\_components \times (n\_samples - n\_components)\) )之间计算精确的亲和度。我们避免了直接计算亲和矩阵的其余部分。
令 \(S\) 为我们的 \(n \times n\) 亲和矩阵。我们可以将其重写为
\[\begin{split}S_d = \left[ \begin{array}\ A & B \\ B^T & C \\ \end{array} \right]\end{split}\]
其中 \(A\) 是我们采样的 \(n\_components\) 的 \(n \times n\) 亲和矩阵,\(B\) 是样本与数据集其余部分之间的 \(n \times (n - n\_components)\) 亲和矩阵。我们不直接计算 \(C\),而是用 \(B^T A^{-1} B\) 来近似它。
参见 谱聚类基准测试,查看 dask_ml.cluster.SpectralClustering
算法在样本数量增加时的可伸缩性示例。