向量序列的分类

数据挖掘 分类 顺序
2021-10-10 09:54:23

我的数据集由向量序列组成。每个向量有 50 个实值维度。序列中的向量数量范围从 3-5 到 10-15。换句话说,序列的长度不是固定的。

一些相当数量的序列(不是向量!)用类标签注释。我的任务是学习一个给定向量序列的分类器,计算整个序列的类标签。

我无法说出数据的确切性质,但序列的性质不是时间的。然而,一个向量X一世 不能与向量互换 Xj 不改变标签(一世j)。换句话说,向量的顺序很重要。向量本身是可比较的,例如计算点积并使用此相似度值是有意义的。

我的问题是:有哪些工具/算法可以帮助对此类数据进行分类?

更新:数据具有这样一个属性,即一个或很少的向量会强烈影响类标签。

可能的解决方案:经过一些研究,看起来循环神经网络 (RNN) 很自然地符合要求。总体思路是选择上下文大小ķ,连接词向量,进行最大池化并通过经典 NN 输入。在句子中每个可能的上下文窗口位置,都会构建一个特征向量。例如,最终的特征向量是使用最大池化构建的。反向传播是为了调整网络的参数。我已经得到了一些积极的结果(GPU 是必须的)。

2个回答

由于您不能透露太多细节,因此我的回答不得不笼统。尽管如此,我希望它会有所帮助。首先,我只会考虑在分类之前减少序列(无论是通过使用点积还是其他方式),如果您可以确保不会丢失之后分类所需的信息。所以这种方法只有在你对分类的本质有一些了解的情况下才可行。举一个简单的例子:如果类标签只是序列中向量的数量,那么从点积预测类标签不会很成功。

因此,我会将完整序列作为分类的输入,并对您要考虑的序列长度施加最大值。您可以通过首先找到训练集中的最大序列长度 m,然后将每个 50 维向量序列转换为一个维度为 50*m 的向量,如果您的序列没有,最后可能会有一些缺失值最大长度。您可能希望摆脱这些缺失值,并且可能只想用零替换它们。

您可以从这里走两条路:1.)您直接应用已知适用于高维度的分类方法。尝试一些不需要太多调整的简单方法,例如朴素贝叶斯。通过这种方式,您可以查看这种方法是否可行,如果不可行,则不会浪费太多时间。2.)您首先尝试减少维度并更好地理解分类的性质。您可能想要使用诸如主成分分析之类的东西或分析每个向量成分与类标签之间的相关性/关联性。如果你成功了,你就知道如何在应用分类之前适当地减少输入的维度。

如果您想遵循这些想法中的任何一个,请记住,您的数据和分类的具体细节可能会使上述任何想法不可行。因此,在尝试确保您没有浪费时间之前,请仔细检查您知道但无法在此处发布的任何详细信息。

数据具有这样一种特性,即一个或很少的向量会强烈影响类标签。

最好(也是最简单)的方法可能是简单地在每个向量上训练一个分类器,然后对给定序列的向量中的预测进行平均。重要向量将对其预测产生很大影响,而对不重要向量的预测将接近 0.5(或对于非二元分类问题类似)。