R 中的数据挖掘算法/聚类/CLUES
聚类分析,根据相似性(或不相似性)度量将模式组织成簇,是一种无监督技术,广泛应用于各种学科。它在数据挖掘中有很多应用,因为大型数据集需要被划分为更小、更同质的组。聚类技术具有广泛的用途,例如人工智能、模式识别、经济学、生物学和营销。聚类技术很重要,随着数据量和计算机处理能力的增加,其重要性也随之增加。
R 包 clues 旨在提供对簇数量的估计,并同时通过局部收缩获得数据集的划分。clues 中的收缩过程是通过均值漂移算法完成的。它也受到 K 最近邻方法的影响,不使用核函数。K 值从一个小数字开始,逐渐增加,直到强度度量、CH 指数或轮廓指数优化。CLUES 算法的主要贡献是它能够识别和处理不规则元素。为了帮助验证簇数量和聚类算法质量的质量,提供了五个指标来支持决策。
CLUES(基于局部收缩的 CLUstEring)算法包含三个过程
- 收缩
- 划分
- 确定最佳 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 算法找到的四个簇。