【问题标题】:Clustering: a training dataset of variable data dimensions聚类:可变数据维度的训练数据集
【发布时间】:2011-12-17 20:08:32
【问题描述】:

我有一个包含 n 个数据的数据集,其中每个数据都由一组提取的特征表示。通常,聚类算法需要所有输入数据具有相同的维度(相同数量的特征),即输入数据 X 是由 n 个数据点组成的 n*d 矩阵,每个数据点具有 d 个特征。 在我的例子中,我之前已经从我的数据中提取了一些特征,但是每个数据的提取特征的数量很可能是不同的(我的意思是,我有一个数据集 X,其中数据点的特征数量不同)。 有什么方法可以调整它们,以便使用一些要求数据具有相同维度的常见聚类算法对它们进行聚类。

谢谢

【问题讨论】:

    标签: cluster-analysis dimensionality-reduction


    【解决方案1】:

    听起来您遇到的问题是它是一个“稀疏”数据集。一般有两种选择。

    1. 使用多维缩放技术降低输入数据集的维数。例如稀疏 SVD(例如Lanczos algorithm)或sparse PCA。然后在密集的低维输出上应用传统的聚类。

    2. 直接应用稀疏聚类算法,如sparse k-mean。请注意,如果您在网上搜索足够仔细,您可能会找到该论文的 PDF 文件(请访问 Academic.google.com)。

    [问题澄清后更新]

    在该问题中,对一个手写单词进行视觉分析以查找连接的组件(线)。对于每个组件,提取固定数量的多维特征。我们需要对单词进行聚类,每个单词可能有一个或多个连通分量。

    建议的解决方案:

    首先将连接的组件分类为 1000(*) 个唯一组件分类。然后根据它们包含的分类组件对单词进行分类(上面描述的稀疏问题)。

    *请注意,您选择的组件分类的确切数量并不重要,只要它足够高,因为 MDS 分析会将它们减少到基本的“正交”分类。

    【讨论】:

    • 问题是每个数据都是包含一个手写单词的图像。我总是从世界的一个连通分量(一种伪词)中提取 m 个固定特征,那么如果这个词包含 c 个连通分量,则为这个词提取的特征数是 d=m*c。因此,为我的数据集的每个数据(单词)提取的特征数量取决于 c(该单词包含的连接组件的数量),并且它可能因世界而异(即使对于同一类的 2 个单词,但较少)。在这种情况下,像 PCA 这样的东西有用吗?我不确定。
    • 特征本质上是分类的还是连续的?即一个词是否可以包含 N 个可能的特征(在这种情况下,词特征矩阵是稀疏的)或者特征本身本质上是(固定的)多维输入?,哪些词可能包含许多?
    • 一个字母可以包含 70 个可能的特征(连续统计值)。然后,每个数据(包含“c”个字母的单词)由 70*c 个值表示。由于“c”在一个单词之间是不同的,所以我会为不同的单词设置不同数量的值。
    • 谢谢。我已经修改了我的答案,建议您首先使用 70 个特征对连接组件进行分类,使用传统的密集分类技术,然后您可以根据它们包含的分类连接组件对单词进行分类(稀疏问题)。
    • 感谢您的帮助,这似乎是个好主意。但是,我看不清楚以后如何根据它们包含的分类连接组件对单词进行分类。每个词的特征向量会包含什么?
    【解决方案2】:

    还有一些聚类算法,例如DBSCAN,实际上并不关心您的数据。这个算法只需要一个距离函数。因此,如果您可以为您的特征指定距离函数,那么您可以使用 DBSCAN(或 OPTICS,它是 DBSCAN 的扩展,不需要 epsilon 参数)。

    所以这里的关键问题是您希望如何比较您的功能。这与集群没有太大关系,并且高度依赖于域。如果您的功能是例如单词出现次数,余弦距离 是一个不错的选择(使用 0 表示不存在的特征)。但是如果你例如有一组从图片中提取的 SIFT 关键点,没有明显的方法可以有效地将不同的特征相互关联,因为特征没有顺序(因此可以将第一个关键点与第一个关键点等进行比较) A这里可能的方法是派生另一组统一的特征。通常,词袋功能用于这种情况。对于图像,这也称为视觉词。本质上,您首先对子特征进行聚类以获得有限的词汇表。然后,您可以为每个原始对象分配由这些“单词”组成的“文本”,并对它们使用诸如余弦距离之类的距离函数。

    【讨论】:

    • 但问题在于距离函数本身。要指定距离函数(例如欧式距离),您的向量特征需要具有相同的维度。
    • 是的。您需要先解决这个问题,然后才能进行任何类型的聚类。当无法比较它们时,聚类算法应该如何对“相似”对象进行分组?请参阅更新的回复以获取一些指示(词袋)。
    【解决方案3】:

    我在这里看到两个选项:

    1. 限制自己使用所有数据点都具有价值的功能。
    2. 看看您是否可以为缺失的功能生成合理的默认值。

    但是,如果可能,您可能应该重新采样所有数据点,以便它们都具有所有特征的值。

    【讨论】:

    • Björn,我更好地解释了我的问题:我的数据集的每个数据都是包含一个手写单词的图像。我总是从世界的一个连通分量(一种伪词)中提取 m 个固定特征,那么如果这个词包含 c 个连通分量,则为这个词提取的特征数是 d=m*c。因此,为我的数据集的每个数据(单词)提取的特征数量取决于 c(该单词包含的连接组件的数量),并且它可能因世界而异。在这种情况下,您提出的两个选项是否适用?
    猜你喜欢
    • 2019-02-26
    • 2019-07-10
    • 1970-01-01
    • 2019-05-14
    • 2020-03-15
    • 1970-01-01
    • 2015-07-09
    • 2017-07-07
    • 2012-02-21
    相关资源
    最近更新 更多