较大的kmeans项目中的用户word2vec模型输出

时间:2019-05-17 14:56:30

标签: python cluster-analysis k-means word2vec unsupervised-learning

我正在尝试一个相当大的无监督学习项目,并且不确定如何正确使用word2vec。我们正在尝试根据有关客户的统计数据以及他们在我们的网站上采取的行动对客户群进行分类。有人建议我使用word2vec并将用户执行的每个动作都视为“句子”中的单词。此步骤之所以必要,是因为单个客户可以在数据库中创建多行(大致相同的统计信息,但网站上每个操作按时间顺序排列的新行)。为了对这些数据执行kmeans,我们需要将每个客户ID的数据减少到一行。因此,以前的想法是将动作分解为句子“描述用户的动作”中的单词

我的问题是,我在网上遇到了无数的教程和资源,向您展示了如何使用word2vec(与kmeans结合使用)自己对单词进行聚类,但是没有一个教程展示了如何将word2vec输出用作更大的kmeans模型。我需要能够将word2vec模型与有关客户的其他值一起使用。我应该怎么做?如果您想使用编码示例进行具体说明,我正在使用python进行聚类,但是我也可能会缺少一些非常明显和高级的内容。似乎word2vec输出向量,但kmeans需要正数才能工作,不是吗?任何指导表示赞赏。

2 个答案:

答案 0 :(得分:0)

有两种常见方法。

  1. 取所有单词的平均值。这很容易,但是得到的向量往往是平均的。它们与文档中的关键字不相似,但是与最普通,信息最少的单词相似。尽管这种方法是最常被提及的方法,但我对这种方法的体验还是令人失望的。
  2. par2vec / doc2vec。在训练过程中,除了邻居单词外,还为每个用户的所有上下文添加一个“单词”。这样,您为每个段落/文档/用户获得一个“预测性”向量,就像在第一个word2vec中获得一个词一样。这些功能本来可以提供更多信息,但需要花费更多的精力进行训练-您无法下载预先训练的模型,因为它们是在训练过程中计算出来的。

答案 1 :(得分:0)

在您的情况下,将单词/句子向量与任何聚类方法或什至是受监督方法结合使用时,上述所有方法都需要固定向量长度。您将必须限制序列长度。您可以使用多种方法将这些序列转换为向量。

将单词向量的这些序列转换为向量是这里的挑战。

您可以将它们取平均值或连接起来,但是这些事情将不是很准确,而且随着时间的推移也不会变得更好。
我发现这张纸非常好……正是您想要的。Try this

构建像这样或使用RNN的好处是,除了将它们聚类之外,以后您可以使用相同的模型来尝试预测下一个最可能的操作。