【问题标题】:User word2vec model output in larger kmeans project较大的 kmeans 项目中的用户 word2vec 模型输出
【发布时间】:2019-10-04 22:29:45
【问题描述】:

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

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

【问题讨论】:

  • 总共(最大可能)操作有多少??
  • 用户可以执行大约 36 种不同的操作。但该列包含用户采取的所有 操作的列表。由于没有最小或最大操作数,这些列表的长度不同。
  • 好的。只是想了解是否有 36 个动作,并说每个动作都有一个唯一 ID 例如,动作 1 的 id = 1。然后列表看起来像 - [1,3,5,36],[2,5, 6,2,6,7,4]。还有两个问题 - 可以为用户重复该操作吗?他们的动作有顺序吗??
  • 是的,每个用户都可以重复这些操作。虽然从技术上讲是有顺序的,但从功能上讲是没有的。例如,一组操作可能如下所示:[主页、搜索、产品列表页面、产品页面、产品列表页面、产品页面、搜索、产品页面、结帐]
  • 在您的情况下,使用任何聚类方法或什至监督方法的单词/句子向量的问题是,上述所有方法都需要固定的向量长度。您必须限制序列长度。

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


【解决方案1】:

有两种常见的方法。

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

【讨论】:

    【解决方案2】:

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

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

    您可以将它们平均或连接起来,但这些东西不会很准确,而且随着时间的推移不会变得更好。
    我找到了这篇非常好的论文……正是你想要的。Try this

    构建这样的东西或使用 RNN 的好处是,以后您可以使用相同的模型来尝试预测下一个最有可能的动作,而不仅仅是对它们进行聚类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多