“看过这个的人也看过”算法

2024-04-01

我正在尝试编写一种算法,其作用有点像亚马逊的“购买此产品的人也购买了”。

两者之间的区别在于,我的只是计算您在单个会话中观看的“产品”,而亚马逊则计算每次购买/结账。

我在实施和弄清楚算法应该是什么方面遇到了一些困难。

  1. 到目前为止,我正在通过 SessionID 来计算观看过的产品 ID。
  2. 一天结束时,我有许多 ProductID 被许多 SessionID 监视。
  3. 现在,我需要在数据库中创建某种派系。也就是说,逐一查看 SessionID 并提取他们查看过的所有产品。然后,将其作为一个集团写入数据库表中。
  4. 一旦我有了派系,并且正在查看产品,我就会扫描此表以查看它所在的派系,然后提取所有其余的产品 ID。

如果我的算法是正确的,您有什么参考/想法吗?还有更好的吗?


我能够使用简单的数据库结构和非常简单的查询来实现您想要的结果:

Table

TABLE `exa`

| sesh_id | prod_id |
---------------------
| 1       | 1       |
| 1       | 2       |
| 1       | 3       |
| 1       | 4       |
| 2       | 2       |
| 2       | 3       |
| 2       | 4       |
| 3       | 3       |
| 3       | 4       |
| 4       | 1       |
| 4       | 2       |
| 4       | 5       |

Query

SELECT c.prod_id, COUNT(*)
FROM `exa` a
JOIN `exa` b ON a.prod_id=b.prod_id
JOIN `exa` c ON b.sesh_id=c.sesh_id
WHERE a.`prod_id`=3 AND c.prod_id!=3
GROUP BY c.prod_id
ORDER BY 2 DESC;

Result

| prod_id | COUNT |
| 4       | 9     |
| 2       | 6     |
| 1       | 3     |

这个想法是,每次会话查看产品时,它都会被插入到表中[在本例中exa]

然后,在任何特定的产品视图中,您可以检查查看该产品的用户还查看了哪些其他产品(按频率加权)。因此,在这个特定的示例中,查看产品 #3 的每个人都查看了产品 #4,因此它在排序中排在第一位。 产品 #5 仅被会话 #4 查看,而会话 #4 没有查看产品 #3,因此产品 #5 不会出现在结果中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“看过这个的人也看过”算法 的相关文章

  • 最低共同祖先算法

    所以我一直在研究实现最低共同祖先算法 我研究了许多不同的算法 主要是 Trajan 解决方案的变体或 RMQ 的变体 我正在使用非二叉树 我的树经常会在查询之间发生变化 因此预处理不一定值得 树的节点数不应超过 50 75 个 我想知道的是
  • java中的Anagram算法

    我想做字谜算法但是 这段代码不起作用 我的错在哪里 例如 des 和 sed 是字谜 但输出不是字谜 同时我必须使用字符串方法 不是数组 public static boolean isAnagram String s1 String s2
  • 加权图的 BFS 算法 - 寻找最短距离

    我看过很多帖子 即 post1 https stackoverflow com questions 30409493 using bfs for weighted graphs post2 https cs stackexchange co
  • 查找数组中 2 个缺失数字的最快方法

    这个问题的存在只是出于纯粹的好奇心 不是作业 找到在数组 1 n 中找到两个缺失数字的最快方法 因此 在相关帖子中 查找数字数组中缺失数字的最快方法 https stackoverflow com questions 2113795 qui
  • 大小为 n 的数组,其中一个元素 n/2 次

    给定一个由 n 个整数组成的数组 其中一个元素出现超过 n 2 次 我们需要在线性时间和恒定的额外空间中找到该元素 YAAQ 又一个数组问题 我有一种偷偷的怀疑 这类似于 在 C 中 We don t need an array publi
  • 让电脑实现360度=0度,旋转炮塔

    我正在制作一个游戏 其中有一个计算机控制的炮塔 炮塔可360度旋转 它使用 trig 找出枪瞄准所需的角度 obj deg 并将枪的当前角度存储在 gun deg 下面的代码以设定的速度旋转枪 if objdeg gt gundeg gun
  • 如何以最小化每个分区总和的最大值的方式对整数数组进行分区?

    输入是正整数或空整数的数组 A 和另一个整数 K 我们应该将 A 划分为 K 个连续元素块 我所说的 划分 是指 A 的每个元素都属于某个块 并且 2 个不同的块不包含任何共同元素 我们将块的总和定义为该块的元素的总和 目标是在 K 个块中
  • 在 O(n) 时间内对列表中的数字方块进行排序?

    给定一个按排序顺序排列的整数列表 例如 9 2 0 2 3 我们必须对每个元素进行平方并按排序顺序返回结果 所以 输出将是 0 4 4 9 81 我可以找出两种方法 O NlogN 方法 我们将每个元素的平方插入哈希集中 然后将元素复制到列
  • 单词预测算法

    我确信有一篇关于此问题的帖子 但我找不到提出这个确切问题的帖子 考虑以下 我们有字典可供使用 我们收到了许多单词段落 我希望能够根据此输入预测句子中的下一个单词 假设我们有几个句子 例如 你好 我的名字是汤姆 他的名字是杰瑞 他去了没有水的
  • 二分查找问题? [复制]

    这个问题在这里已经有答案了 可能的重复 实施二分查找有哪些陷阱 https stackoverflow com questions 504335 what are the pitfalls in implementing binary se
  • 将两个大数作为字符串相除,而不使用java中的Bignumbers

    我需要在不使用 Biginteger 的情况下划分两个大整数 因为数字不能存储在原始类型中 因为我需要从给定的字符串中逐个字符地执行此操作 我已经创建了一个名为 BigNumber 的类 用这个类我可以 Add multiply 比较两个内
  • 动态规划的复杂组合条件

    我正在探索动态规划设计方法如何与问题的底层组合属性相关 为此 我正在查看的规范实例硬币找零问题 Let S d 1 d 2 d m and n gt 0是请求的金额 我们可以用多少种方式相加n仅使用中的元素S 如果我们遵循一个动态规划如果要
  • 将所有奇数位置的元素移动到左半部分,将偶数位置的元素移动到右半部分

    给定一个包含正整数和负整数的数组 将所有奇数索引元素移动到左侧 将偶数索引元素移动到右侧 问题的难点是在维持秩序的同时就地做 e g 7 5 6 3 8 4 2 1 输出应该是 5 3 4 1 7 6 8 2 如果顺序不重要 我们可以使用快
  • 循环中的递归算法复杂度(运行时间)

    我想了解您对如何检测以下递归算法的 T n 运行时间 的意见 Charm 是一种用于发现事务数据库中频繁闭项集的算法 频繁闭项集列表是在一组交易 tids 中多次出现的频繁项 例如面包和牛奶是经常一起购买的物品 它们是通过将索引为 i 的当
  • 根据位置计算组合

    我在解决这个问题时遇到了麻烦 创建一个函数 给定字符集 C 可以生成第 N 个组合 或者返回给定起始位置 Ns 和结束位置 Ne 以及组合的最大长度 Mx 的一系列组合 一个具体的例子 令 C A B C 我们知道不同的组合将如下所示 假设
  • 查找重叠间隔序列中最大和的算法

    我试图解决的问题在数轴上有一个间隔列表 每个间隔都有一个预定义的分数 我需要返回最大可能的总分 问题是间隔重叠 并且重叠间隔中我只能使用一个 这是一个例子 Intervals Score 0 5 15 4 9 18 10 15 12 8 2
  • 对产品列表进行分类的算法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个代表或多或少相同的产品的列表 例如 在下面的列表中 它们都是希捷硬盘 希捷硬盘 500Go 适用于笔记本电脑的希捷硬盘 120
  • 颜色渐变算法

    给定两种 RGB 颜色和一个矩形 我可以创建一个基本的线性渐变 这博客文章 https bsou io posts color gradients with python关于如何创建它给出了很好的解释 但我想在这个算法中添加一个变量 角度
  • 如何找到给定顶点的所有多边形?

    我有一个顶点列表 并且我知道它们之间的连接 我试图找到顶点的所有多边形形状 这些多边形形状不应重叠 我做了一些研究 我认为如果我可以顺时针 或逆时针 没有区别 遍历顶点 我可以检测多边形形状 因此 我寻找顺时针遍历顶点的解决方案 我发现了一
  • 图中使用 K 个反向边的所有最短路径

    假设我有一个有向图 G V E 其边的权重为正整数 我需要做的是使用最多 K 整数 个反向边找到所有顶点之间的最短路径 我的意思是 如果我们在边 u 处 并且只有一条从 v 到 u 的有向边 只要我们没有在这条路径上使用 K 个反向边 我们

随机推荐

  • 如何修改 DateFormatSymbols 月份值

    我正在尝试为特定区域设置添加特定月份名称 我遇到的问题是挪威语 bokmal 的语言环境 注意 SimpleDateFormat 返回的月份名称是英语而不是挪威语 然而 区域设置 否 似乎工作正常 例如此代码结果为一月 二月等 String
  • 在 javax.xml.bind 中使集合通用

    在我编写的 REST 服务器中 我有几个集合类 它们包装要从我的服务返回的单个项目 XmlAccessorType XmlAccessType NONE XmlRootElement name person collection publi
  • 一个或多个无效的包名称。确保包名称与有效的 Google Play 商店 URL 关联

    I m having trouble configuring Facebook login for Kotlin App according to website address https developers facebook com
  • Django ORM 中的自定义 TruncFunc

    我有一个具有以下结构的 Django 模型 class BBPerformance models Model marketcap change models FloatField verbose name marketcap change
  • 为什么我必须匹配参数名称才能从 MVC4 Web 应用程序中的 ajax 调用获取 json 数据?

    我只是想知道为什么 NET需要将参数名称与JSON对象的键名称相匹配 此处快速代码预览 var json service COMMON method MENU SUBLIST UID 1000007 ULID stackoverflow U
  • 未知文件类型:basic archive.of(boost 和 emscripten)

    我正在尝试在浏览器内反序列化文件 使用 boost serialization 我用 emscripten 编译 boost 显然没有问题 当编译 实际上是链接 我的程序时 我收到错误 wasm ld error unknown file
  • 如何缩放 iframe 的内容?

    如何在我的网站页面中缩放 iframe 的内容 在我的示例中 它是 HTML 页面 而不是弹出窗口 例如 我想以原始大小的 80 显示 iframe 中出现的内容 基普的解决方案 https stackoverflow com questi
  • .htaccess 维护多个IP

    我在 htaccess 文件中使用以下代码将我的网站置于维护状态 本质上 它的作用是将非特定 IP 地址的任何人重定向到 maintenance 我有一个维护页面的子域 因此允许我在真实站点上执行测试 我的问题是 如何向该行添加第二个 IP
  • C# 只读二维数组

    在 C 中是否有返回只读二维数组的既定方法 I know ReadOnlyCollection是用于一维数组的正确选择 并且我很高兴编写我自己的包装类来实现this get 但如果这个轮子已经存在 我不想重新发明轮子 不幸的是 没有任何内置
  • Python 日志记录仅从脚本记录

    我正在我的一个简单脚本中使用 Python 日志记录模块 目前进行了以下设置 logging basicConfig format asctime s message s level logging INFO datefmt Y m d H
  • 如何打开机器人电子日志记录

    我需要一种非常简单的方法来让 Robolectric 3 0 打开日志记录 我想看到 robolectric 的输出 而不仅仅是我的测试 我在网上尝试的一切都不起作用 我把这个贴在哪里 robolectric logging enabled
  • 我如何自定义所有 UITextField 的 borderWidth 外观?

    我正在尝试自定义 borderWith 的所有 UITextField 外观 尝试这样的事情 只有前两行有影响 其余线路无法正常工作 UITextField appearance setBackgroundColor UIColor gre
  • 是否可以在

    这个问题在这里已经有答案了 我怎样才能添加 div or a span 标签内的 span div
  • Node-sass 未与 Node / Express 一起编译

    我试图让 node sass 与express一起工作 但我根本无法让它进行任何编译 这是我的 app js 文件 var express require express sass require node sass routes requ
  • 策略模式或函数指针[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在 C 中 当我有可以在运行时接受不同行为的算法时 我宁愿使用函数指针 例如 用于绘制图表的程序有一种绘制线条的算法 该算法可以接受任何函数
  • 同步jquery $.ajax而不锁定IE?

    花了一些时间尝试实现这一点 并找到了一个我认为在 Firefox 中效果很好的解决方案 但是在 IE 中测试时发现使用 async false 会导致浏览器被锁定 停止响应并似乎已冻结 通话时长 要求基本如下 我提供了一系列用户可以检查的复
  • UITableView reloadData EXC_BAD_ACESS 代码=2

    我有用于加载 UITableView 的代码 int numberOfSectionsInTableView UITableView tableView if tableView self peopleTableView return se
  • printf 不在 eclipse 的控制台上打印?

    include
  • Spark sql row_number 还是序列号?

    随机数生成器 SparkSQL 例如 Netezza 序列号 mysql 序列号 Thanks Spark sql 中的序列在 Spark 1 6 中 其 select monotonically increasing id from ta
  • “看过这个的人也看过”算法

    我正在尝试编写一种算法 其作用有点像亚马逊的 购买此产品的人也购买了 两者之间的区别在于 我的只是计算您在单个会话中观看的 产品 而亚马逊则计算每次购买 结账 我在实施和弄清楚算法应该是什么方面遇到了一些困难 到目前为止 我正在通过 Ses