如何使用无监督算法将客户与模型(客户 -> 项目列表 -> 项目中的单词列表)聚类
How to cluster customers with the model (Customer -> Item list -> Word list in items) with an unsupervised algorithm
需要有关聚类模型的建议。有一个客户列表 -> 客户有一个产品列表 -> 每个产品包含几个词。
我想按 activity 类型将客户分成几个组 - 即按一般主题。
您如何将这种模型引入向量聚类,例如 K-means?
到目前为止我的假设是 - 将每个单词都变成一个 fasttext 向量,select 例如在 TF-IDF 上的前 100 个单词,然后加上 * 100(fasttext 向量的大小)乘以 100 个单词,这将产生 10,000 列。也许在计算方面更经济?
这跟一个推荐系统很相关。我建议阅读有关基于内容与协作过滤推荐系统的内容。一个好的介绍是 this blog post.
因此,您可以根据许多属性进行聚类。您提出的想法可能会奏效。如果您拥有关于该产品的领域知识,您可以在寻找词向量之前利用它。例如,假设所有产品都已上架。你可以直接向量化产品,比如
vec = [
width,
depth,
height,
width * depth, # footprint/surface area is important on its own
width * depth * height,
color, # numeric representation
popularity, # possibly using a metric like sales
]
这只是一个示例,但它展示了如何在不借助 NLP 的情况下直接对产品进行矢量化。
如果您没有办法直接对您的产品进行矢量化,并且您不t/can不使用协同过滤(可能是冷启动问题),那么您可能想看看矢量化整个产品描述使用 Universal Sentence Encoder,无论输入大小如何,都会输出 512 维向量。
需要有关聚类模型的建议。有一个客户列表 -> 客户有一个产品列表 -> 每个产品包含几个词。 我想按 activity 类型将客户分成几个组 - 即按一般主题。
您如何将这种模型引入向量聚类,例如 K-means?
到目前为止我的假设是 - 将每个单词都变成一个 fasttext 向量,select 例如在 TF-IDF 上的前 100 个单词,然后加上 * 100(fasttext 向量的大小)乘以 100 个单词,这将产生 10,000 列。也许在计算方面更经济?
这跟一个推荐系统很相关。我建议阅读有关基于内容与协作过滤推荐系统的内容。一个好的介绍是 this blog post.
因此,您可以根据许多属性进行聚类。您提出的想法可能会奏效。如果您拥有关于该产品的领域知识,您可以在寻找词向量之前利用它。例如,假设所有产品都已上架。你可以直接向量化产品,比如
vec = [
width,
depth,
height,
width * depth, # footprint/surface area is important on its own
width * depth * height,
color, # numeric representation
popularity, # possibly using a metric like sales
]
这只是一个示例,但它展示了如何在不借助 NLP 的情况下直接对产品进行矢量化。
如果您没有办法直接对您的产品进行矢量化,并且您不t/can不使用协同过滤(可能是冷启动问题),那么您可能想看看矢量化整个产品描述使用 Universal Sentence Encoder,无论输入大小如何,都会输出 512 维向量。