我有一个网站,客户可以购买标有各种分类条款的商品。我想通过考虑与他们所做的购买相关的标签来创建一组可能对相同项目感兴趣的客户。我不想在每次建立小组时比较每个客户的标签列表,而是想知道我是否可以使用某种类型的评分来解决问题。
我正在思考它的方式,每个标签都会分配一些唯一的编号。当我执行评分操作时,它将呈现一个只能通过组合一组特定标签来实现的数字。
我可以更新客户"得分"定期使其保持相关性。
我是否在正确的轨道上?有什么想法吗?
答案 0 :(得分:1)
您对问题的描述看起来更像是群集或推荐问题。我不确定这些标签是否足以使用群集或推荐的信息。
你对分数的看法对我来说并不乐观,因为如果不仔细选择这些数字,可以通过多种方式实现相同的总和。
我建议你:
您可以为每个用户存储标签。当某些用户购买新商品时,您会将商品的标签添加到用户的标签中。在定期时间,您将更新用户配置文件。假设我们有用户A和B.如果在更新时A和B之间的相似度大于某个阈值,您将在用户之间添加一个表示两个用户相似的关系。如果它更低,你将删除关系(如果之前它们是相关的)。相似性可以是许多常见标签,也可以是num_common_tags / num_of_tags_assigned_either_in_A_or_B
。
稍后,当您希望获得具有特定标记集的用户时,您将只执行查询以检查哪些用户具有该组标记。您也可以通过查找哪些用户与相关用户链接来检查给定用户的类似用户。
答案 1 :(得分:0)
如果为每个标记分配2的唯一幂,则可以对与标记对应的值求和,并且具有完全相同标记集的用户将获得相同的值。
red = 1
green = 2
blue = 4
yellow = 8
例如,只有{ red, blue }
集合的客户的值为5。
这实际上是使用位图来表示集合。缺点是,如果你有很多标签,你很快就会用完整数。例如,如果您的(无符号)整数类型是四个字节,则您将被限制为32个标记。有些库和类可以让你代表更大的位集,但是,在这一点上,它可能值得考虑其他方法。
这种方法的另一个问题是它无法帮助您聚类相似但不相同的成员。