在R中对大数据进行聚类并且与采样相关吗?


13

我是数据科学的新手,在查找R中具有200,000行和50列的数据集中的聚类时遇到问题。

由于数据同时具有数字变量和名义变量,因此使用Euclidean距离度量的K-means之类的方法似乎不是合适的选择。因此,我转向接受距离矩阵作为输入的PAM,agnes和hclust。

菊花方法可以处理混合类型的数据,但距离矩阵太大:200,000乘以200,000,比2 ^ 31-1(R 3.0.0之前的向量长度限制)大得多。

昨天发布的新R 3.0.0支持长度大于2 ^ 31-1的长向量。但是200,000 x 200,000的双矩阵需要大于16Gb的连续RAM,这在我的机器上是不可能的。

我读过有关并行计算和bigmemory包的信息,但不确定它们是否对您有帮助:如果我使用的是雏菊,它将生成一个大矩阵,该矩阵无论如何都无法容纳在内存中。

我还阅读了有关采样的文章: 采样与“大数据”时代相关吗?

因此,就我而言,对数据集使用抽样,对样本进行聚类然后推断整个数据集的结构是否相关?

你能给我一些建议吗?谢谢!

关于我的机器:

R版本3.0.0(2013-04-03)

平台:x86_64-w64-mingw32 / x64(64位)

操作系统:Windows 7 64bit

内存:16.0GB


我知道,唯一适用于大数据(例如数百万个案例)并且可以接受名义变量和数值变量的聚类方法是SPSS中找到的TwoStep聚类。
ttnphns

Answers:


4

正如您所注意到的,任何需要完整距离矩阵的方法都行不通。内存是一回事,但另一方面是运行时。分层聚类的典型实现是在(我知道ELKI具有SLINK,这是单链路聚类的算法)。这只是不能扩展到大数据集。O(n3)O(n2)

PAM本身不应该需要完整的距离矩阵,但是众所周知该算法伸缩性很差,因为它随后需要在每次迭代中(重新)计算每个群集内的所有成对距离,以找到最中心的元素。如果您有大量的群集,这要少得多,但是却非常昂贵!

相反,您应该研究可以使用索引结构进行加速的方法。有了良好的索引,此类聚类算法可以在运行,这对于大型数据集而言要好得多。O(nlogn)

但是,对于大多数这些算法,您首先需要确保距离功能确实很好。那么您需要考虑使用适当的索引来加速查询的方法。

还要注意,在很多情况下-这可能对PAM来说很成立-您可以先对样本运行算法,然后仅对完整数据集进行优化。如果您的样本具有代表性,那么k均值和PAM之类的算法应为您提供与完整数据集基本相同的结果。


在这里不会帮助OP,但是如果其他人出现了“中间”样本编号:R也有fastcluster(请参见math.stanford.edu/~muellner/fastcluster.html)。
cbeleites对SX不满意,2013年

嗨,Anony-Mousse,您能指出一些使用索引结构加速的算法吗?非常感谢!

例如,使用支持epsilon范围查询的索引可以很好地加速DBSCAN。可能也意味着转移聚类。OPTICS也可以通过这种方式进行加速,可以看作是链接聚类的更高级版本(您可以将其称为“分层密度链接聚类”)
QUIT--Anony-Mousse 2013年

2

请尝试使用R中群集程序包中的CLARA函数。它通过对数据进行二次采样来实现类似pam的算法(请确保您提供对数据有意义的子样本大小,因为默认值故意太小了)。如果可以用总数据的一小部分样本来表示数据中的中间变量(即-数据集中的簇相对较少),则该方法特别有用。这样,您可以使用少量随机样本有效地进行聚类,并将点添加到预先计算的聚类解决方案中。

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA


嗨,zzk,谢谢你的答复。我之前读过有关clara的文章,但似乎只提供欧几里得和曼哈顿指标。主要问题是我的数据集同时具有数字变量和名义变量。因此,将两个度量标准都不用于距离测量是不合适的。

嗯,是的,这目前对我也有限制。我相信该方法实际上可以在任意距离上完成,但是我没有费心查看源代码,看看是否可以更改它。
zzk 2013年

0

您还可以对定性变量进行多次对应分析,然后转换为数字变量。


2
这似乎是个好主意,但可能有点稀疏。您能对此进行充实以解释它是什么以及为什么会有帮助吗?
gung-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.