我有一个包含 n 个数据的数据集,其中每个数据都由一组提取的特征表示。通常,聚类算法需要所有输入数据具有相同的维度(相同数量的特征),即输入数据 X 是由 n 个数据点组成的*d 矩阵,每个数据点具有 d 个特征。在我的例子中,我之前已经从我的数据中提取了一些特征,但是每个数据的提取特征的数量很可能是不同的(我的意思是,我有一个数据集 X,其中数据点的特征数量不同)。有什么方法可以调整它们,以便使用一些需要数据具有相同维度的常见聚类算法对它们进行聚类。
谢谢
我有一个包含 n 个数据的数据集,其中每个数据都由一组提取的特征表示。通常,聚类算法需要所有输入数据具有相同的维度(相同数量的特征),即输入数据 X 是由 n 个数据点组成的*d 矩阵,每个数据点具有 d 个特征。在我的例子中,我之前已经从我的数据中提取了一些特征,但是每个数据的提取特征的数量很可能是不同的(我的意思是,我有一个数据集 X,其中数据点的特征数量不同)。有什么方法可以调整它们,以便使用一些需要数据具有相同维度的常见聚类算法对它们进行聚类。
谢谢
还有一些聚类算法,例如DBSCAN,实际上并不关心您的数据。这个算法所需要的只是一个距离函数。因此,如果您可以为您的要素指定距离函数,那么您可以使用 DBSCAN(或 OPTICS,它是 DBSCAN 的扩展,不需要 epsilon 参数)。
所以这里的关键问题是你想如何比较你的特性。这与集群没有太大关系,并且高度依赖于域。如果您的特征是例如单词出现,余弦距离是一个不错的选择(使用 0 表示不存在的特征)。但是,如果您例如从图片中提取了一组 SIFT 关键点,则没有明显的方法可以有效地将不同的特征相互关联,因为这些特征没有顺序(因此可以将第一个关键点与第一个关键点进行比较等)这里一种可能的方法是推导出另一组统一的特征。通常,词袋特征用于这种情况。对于图像,这也称为视觉词. 本质上,您首先对子特征进行聚类以获得有限的词汇表。然后,您可以为每个原始对象分配一个由这些“单词”组成的“文本”,并在它们上使用诸如余弦距离之类的距离函数。
听起来您遇到的问题是它是一个“稀疏”数据集。一般有两种选择。
使用多维缩放技术降低输入数据集的维度。例如稀疏 SVD(例如Lanczos 算法)或稀疏 PCA。然后在密集的低维输出上应用传统的聚类。
直接应用稀疏聚类算法,例如sparse k-mean。请注意,如果您在网上搜索得足够仔细,您可能会找到该论文的 PDF(尝试 Academic.google.com)。
[问题澄清后更新]
在该问题中,对一个手写单词进行视觉分析以查找连接的组件(线)。对于每个组件,提取固定数量的多维特征。我们需要对单词进行聚类,每个单词可能有一个或多个连接组件。
建议的解决方案:
首先将连接的组件分类为 1000(*) 个唯一组件分类。然后根据它们包含的分类组件对单词进行分类(上面描述的稀疏问题)。
*注意,您选择的组件分类的确切数量并不重要,只要它足够高,因为 MDS 分析会将它们减少到基本的“正交”分类。
我在这里看到两个选项:
但是,如果可能,您可能应该重新采样所有数据点,以便它们都具有所有特征的值。