跳转到内容

R 中的数据挖掘算法/聚类/CLUES

来自维基教科书,开放的书籍,开放的世界

聚类分析,根据相似性(或不相似性)度量将模式组织成簇,是一种无监督技术,广泛应用于各种学科。它在数据挖掘中有很多应用,因为大型数据集需要被划分为更小、更同质的组。聚类技术具有广泛的用途,例如人工智能、模式识别、经济学、生物学和营销。聚类技术很重要,随着数据量和计算机处理能力的增加,其重要性也随之增加。

clues:基于局部收缩的非参数聚类

[编辑 | 编辑源代码]

R 包 clues 旨在提供对簇数量的估计,并同时通过局部收缩获得数据集的划分。clues 中的收缩过程是通过均值漂移算法完成的。它也受到 K 最近邻方法的影响,不使用核函数。K 值从一个小数字开始,逐渐增加,直到强度度量、CH 指数或轮廓指数优化。CLUES 算法的主要贡献是它能够识别和处理不规则元素。为了帮助验证簇数量和聚类算法质量的质量,提供了五个指标来支持决策。

CLUES(基于局部收缩的 CLUstEring)算法包含三个过程

  1. 收缩
  2. 划分
  3. 确定最佳 K

对于收缩过程,数据集以一种方式进行校准,将每个数据点推向其焦点,即簇中心或概率密度函数的模式。K 值是迭代选择的,由于中值的稳健性,每个数据点都移动到该集合中元素级中值。此中值包含其 K 个最近邻,根据不相似性度量,即欧几里德距离或皮尔逊相关性。

对于此过程,用户需要设置一个停止规则,超过该规则,额外的迭代在准确性方面将不再显着。经过此收缩过程后,数据中的相互间隙很明显。

划分过程使用从收缩中获得的校准数据。此数据用于代替原始数据集。划分从选择一个任意数据点开始,并将其替换为其最近的同类点,记录它们的距离。相同的移动应用于此同类点。选择不进行替换。一旦选择了某个数据点进行替换,它在该运行中就不会再次被选择。为了分离组,引入了平均距离的总和和四分位距的 1:5 倍。每次新的同类点超越移动都会创建一个新的组,并增加一个组索引。

最佳 K 计算涉及优化强度度量指数,即 CH 指数或轮廓指数。引入一个因子 f 来提高计算速度。默认情况下,此因子为 0.05。用户可以修改此因子,但必须意识到与大因子相关的长时间计算。只要 K 位于最佳 K 的邻域内,K 的选择对聚类结果几乎没有影响。选择因子 0.05 旨在最大限度地减少不会显着影响结果的额外计算。

为了增强计算能力,我们将 K 初始化为 fn,并将 K 的增量大小设置为 fn 用于下一次迭代。然后,我们将前一步的校准数据用作新数据。

安装

R > install.packages("clues")

使用

library("clues")

clues 过程

clues(y, n0, alpha, eps, itmax, K2.vec, strengthMethod, strengthIni, disMethod, quiet)

参数

  • y:数据矩阵,是 R 矩阵对象(对于维度 > 1)或向量对象(对于维度 = 1),行是观测值,列是变量。
  • n0:对簇数量的猜测。默认值为 5。
  • alpha:速度因子。默认设置为 0.05。
  • eps:一个小正数。如果值小于“eps”,则认为该值为零。默认值为 1.0e-4。
  • itmax:允许的最大迭代次数。默认值为 20。
  • K2.vec:迭代第二遍的最近邻数量范围。默认值为 n0 (5)。
  • strengthMethod:指定首选的簇强度度量(即簇的紧凑性)。两种可用的方法是“sil”(轮廓指数)和“CH”(CH 指数)。
  • strengthIni:簇强度度量的下限的初始值。任何负值都可以。
  • disMethod:不相似性度量的规范。可用的度量是“Euclidean”和“1-corr”。
  • quiet:逻辑值。指示是否应该输出中间结果。

本节列出了运行 clues 时可以查看的值。

  • K:可用于获得最终聚类的最近邻的数量。
  • size:每个簇的数据点数量的向量。
  • mem:数据点的簇成员资格向量。簇成员资格取值:1、2、...、g,其中 g 是估计的簇数量。
  • g:对簇数量的估计。
  • CH:如果“strengthMethod”为“CH”,则最终划分的 CH 指数值。
  • avg.s:如果“strengthMethod”为“sil”,则最终划分的轮廓指数值的平均值。
  • s:如果“strengthMethod”为“sil”,则数据点的轮廓指数向量。
  • K.vec:每次迭代使用的最近邻的数量。
  • g.vec:每次迭代获得的簇数量。
  • myupdate:逻辑值。指示第一遍获得的划分是否与第二遍获得的划分相同。
  • y.old1:用于收缩和聚类的数据。
  • y.old2:收缩和聚类后返回的数据。
  • y:来自输入的数据副本。
  • strengthMethod:来自输入的 strengthMethod 的副本。
  • disMethod:来自输入的不相似性度量的副本

我们将展示一个使用 Maronna 数据集运行 clues 的示例。该集合在二维空间中有 4 个略微重叠的簇。每个簇包含 50 个数据点。Maronna 数据是模拟数据集。数据从 4 个具有身份协方差矩阵和均值向量 μ = {(0,0), (4,0), (1,6), (5,7)} 的二元正态分布中抽取。

R > data(Maronna)
R > maronna <- Maronna$maronna
R > res <- clues
R > res <- clues(maronna, quiet = TRUE) # run clues

结果如下所示

R > summary(res)

Number of data points:
[1] 200

Number of variables:
[1] 2

Number of clusters:
[1] 4

Cluster sizes:
[1] 53 47 50 50

Strength method:
[1] "sil"

avg Silhouette:
[1] 0.5736749

dissimilarity measurement:
[1] "Euclidean"

绘制结果,我们可以在图 1 中看到 clues 算法找到的四个簇。

参考文献

[编辑 | 编辑源代码]
  1. Meira Jr., W.;Zaki, M. 数据挖掘算法基础。 [1]
  2. Cluster R 包。 [2]
  3. Wang, X.,Qiu, W.,Zamar, R. H.,CLUES:一种基于局部收缩的非参数聚类方法 [3]
华夏公益教科书