### 聚类超大数据集

我正在进行一个项目,这是我课程的一部分。这是一个高级数据库管理系统的项目,内容如下。

1)下载大量图片(100万张) –> 已完成

2)根据它们的视觉相似性进行聚类

a)找出每张图片的直方图 –> 已完成

b)现在根据它们的视觉相似性对图片进行分组(聚类)。

现在,我在第2b部分遇到了问题。我做了以下工作:

A)我使用Matlab找到了每张图片的直方图,现在用一个1D向量(16 x 16 x 16)来表示它。单个向量中有4096个值。

B)我生成了一个ARFF文件。它的格式如下。有100万个直方图(每张图片一个,因此文件中有100万行),每行有4097个值(图片名称 + 4096个双精度值来表示直方图)

C)文件大小为34 GB。最大的问题是:我该如何聚类这个文件?

我尝试使用了Weka和其他在线工具。但它们都卡住了。Weka卡在“读取文件”上。

我的桌面电脑有8 GB的RAM。我没有访问任何集群。我尝试过谷歌搜索,但找不到关于聚类大数据集的有用信息。我该如何聚类这些条目?

这是我的想法:

方法一:

我应该以50,000为一批来做吗?比如,先聚类前50,000个条目。找出尽可能多的聚类,称它们为k1,k2,k3… kn。

然后选择接下来的50,000个,并将它们分配到这些聚类中的一个,依此类推?这是否能准确地代表所有图片。因为,聚类仅基于前50,000张图片!

方法二:

使用随机的50,000个条目进行上述过程?

有任何建议吗?

谢谢!

编辑1:

可以使用任何聚类算法。


回答:

Weka不是你处理这个的最佳工具。我发现ELKI在聚类方面更加强大(而且更快)。我处理过的最大数据集是大约300万个对象,128维度。

然而,请注意,在这种规模和维度下,你的主要关注点应该是结果质量

如果你运行例如k-means,结果基本上是随机的,因为你使用了4096个直方图箱(太多了,特别是使用平方欧几里得距离时)。

为了获得好的结果,你需要退后一步,多思考一些。

  1. 是什么让两张图片相似。你如何衡量相似性?首先验证你的相似性度量方法。

  2. 哪个算法可以使用这种相似性概念?首先在小数据集上验证算法。

  3. 如何通过索引或并行处理来扩展算法?

根据我的经验,颜色直方图在色调8个箱 x 饱和度3个箱 x 亮度3个箱的范围内效果最好。超过这个范围,分箱过于细致。这会破坏你的相似性度量

如果你运行k-means,增加更多数据不会带来任何好处。它寻找统计均值,增加更多数据不会找到不同的均值,只会增加一些精度的小数位。因此,你不妨只使用10,000或100,000张图片的样本,你将得到几乎相同的结果。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注