gpt4 book ai didi

ruby-on-rails - 算法建议——根据类别数据计算相关商店

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:32 24 4
gpt4 key购买 nike

我有一个storescategories 模型。一个商店可以有很多类别。

我正在尝试为每个商店创建一个相关商店列表。

我想根据一家商店与另一家商店共享的常见类别的数量来计算分数。

我有计划,但不确定如何开始使用 Ruby on Rails 编写代码。

有什么建议吗?

PS.我认为最好有一个单独的表来存储每个商店的计算数据——因为实时执行它会占用数据库大量资源。

更新 我刚刚在我的逻辑中发现了一个重大缺陷——只有少数像亚马逊这样的百货公司将主导所有商家的相关商店(因为它们几乎属于所有类别,因此将匹配利基商店的每个类别)。 有什么办法解决这个问题吗?

最佳答案

您的“主要缺陷”并不少见。正如您所说,亚马逊将与一切“相关”。对于任何试图使用这种关系的推荐系统来说,这是一个非常普遍的问题。我没有对商店类别进行过此操作,但问题与我构建的视频选择/排名系统非常相似。

帮助防止流行商品占据主导地位的一种常见方法是,不使用匹配类别的计数,而是为每家商店的分数赋予权重。常见的权重因子是 1/category_count1/sqrt(category_count)

想象一下三个商店:

Jim's Books - 2 categories: ["Books", "Music"]
Amazon - 10 categories: ["Books", "Music", "Movies", "Housewares", etc.]
Ralph's Remainders - 3 categories: ["Books", "Music", "Movies"]

现在,如果您正在寻找与 Jim's Books 类似的商店,您可以匹配这些类别。显然,Amazon 和 Ralph's 都包含类别“书籍”和“音乐”,如果您只使用匹配类别的计数,则两者的得分相同。

但是如果你使用加权因子,那么他们的分数就会有很大的不同。权重因子为 1/category_count:

Amazon - 10 categories, weighting factor = 1/10.
Ralph's - 3 categories, weighting factor = 1/3.

因此,Amazon 的相似度得分为 0.20,而 Ralph's 的相似度得分为 0.66。

如果权重因子是1/sqrt(category_count),那么:

Amazon - weighting factor = 1/sqrt(10) = 0.316
Ralph's - weighting factor = 1/sqrt(3) = 0.562

在这种情况下,Amazon 的得分约为 0.632,而 Ralph 的得分为 1.124。

我发现 1/sqrt(category_count) 通常更好,因为它抑制了非常受欢迎的商店(即那些有很多类别的商店)的压倒性影响,但没有那么多那些商店不会进入结果。使用 1/category_count 过分强调只有一两个类别的商店。

关于ruby-on-rails - 算法建议——根据类别数据计算相关商店,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8454478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com