如何实现推荐引擎?

2024-03-21

请耐心等待我的写作,因为我的英语不熟练。

作为一名程序员,我想了解在推荐系统或相关系统下实现的算法或机器学习智能。例如,最明显的例子来自亚马逊。他们有一个非常好的推荐系统。他们会知道:如果你愿意this, 你可能还喜欢that,或者其他类似的东西:有多少人喜欢this and that一起。

当然我知道亚马逊是一个大网站,他们在这些系统上投入了大量的人力和金钱。但是,在最基本的核心上,我们如何在数据库中实现类似的功能?我们如何识别一个对象与其他对象的关系?我们怎样才能建立一个统计单元来处理这种事情呢?

如果有人能指出一些算法,我将不胜感激。或者,基本上,指出一些我们都可以学习的好的直接参考资料/书籍。谢谢你们!


有两种不同类型的推荐引擎。

最简单的是基于项目,即“购买产品 A 的客户也购买了产品 B”。这很容易实现。存储稀疏对称矩阵 nxn(其中 n 是项目数)。每个元素 (m[a][b]) 是任何人购买商品“a”和商品“b”的次数。

另一个是基于用户的。那就是“像你这样的人常常喜欢这样的事情”。该问题的一个可能的解决方案是 k 均值聚类。即构建一组集群,将具有相似品味的用户放置在同一集群中,并根据同一集群中的用户提出建议。

一种更好但更复杂的解决方案是一种称为“受限玻尔兹曼机”的技术。里面有他们的介绍here http://www.youtube.com/watch?v=AyzOUbkUf3M

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

如何实现推荐引擎? 的相关文章

  • 将区间映射到更小的区间的算法

    我尝试搜索 但由于问题的性质 我无法找到满意的内容 我的问题如下 我试图将 0 到 2000 范围内的数字 尽管理想情况下上限是可调的 映射到 10 到 100 范围内的更小的区间 上限将映射 2000 gt 100 和下限也是如此 除此之
  • 用 ruby​​ 解决旅行商问题(50 多个位置)

    我在一家快递公司工作 目前 我们 手动 解决了 50 多个地点的路线 我一直在考虑使用 Google Maps API 来解决这个问题 但我读到有 24 点的限制 目前我们在服务器中使用 Rails 因此我正在考虑使用 ruby 脚本来获取
  • 合并空间上接近的路径/线段的算法

    我正在寻找一种用于街道地图制图概括的几何算法 名称 在我的地图数据中 我有许多路径 点的有序列表 由线段连接 这些路径彼此靠近且几乎平行 我如何 1 识别这些 相邻路径 即如何找到比某个阈值更接近的路径 以及 2 将它们合并成一条路径 即如
  • 优雅的折线“左移”测试

    Given X Y 坐标 即车辆的位置 X Y 数组 它们是折线中的顶点 请注意 折线仅由直线段组成 没有圆弧 我想要的是 计算车辆是在折线的左侧还是右侧 当然还是在顶部 我的做法 迭代所有线段 并计算到每个线段的距离 然后 对于最近的段
  • O(mn) 比 O((m+n)^2) 更好吗?

    算法的输入是m and n 我的算法的时间复杂度是O mn 我有一个时间复杂度为的基准算法O m n 我的实现在时间复杂度方面是否优于基准 许多评论者和回答者希望只考虑以下情况 m n或者至少当它们通过一个常数因子相关时 这不是它的工作原理
  • 给定与总和匹配的长度的唯一 3 位数字 (-1,0,1) 序列的数量

    假设您有一个长度为 n 即空格数 的垂直游戏板 你有一个三面骰子 有以下选项 前进一 停留和后退 如果您低于或高于棋盘游戏空间的数量 则该游戏无效 一旦到达棋盘末端 唯一有效的动作就是 停留 给定确切的骰子投掷次数 t 是否可以通过算法计算
  • 为无向无权图实现推重标签算法 s-t 最小割边

    我正在寻找一个好的解决方案来在无向和未加权图中找到 s t 最小切割边 我想使用推送重新标记算法 但我不确定如何实现它以在无向和未加权图上找到最小割 在每对顶点之间有两条反向边 并在所有边上赋予相同的权重 并应用推送重新标记算法 我可以用这
  • 以一定角度遍历二维数组

    通常我们按行或列遍历数组 但这里我想以角度遍历它 我会尝试解释我的意思 因此 假设角度是 45 度 那么它会搜索为 0 0 then 0 1 1 0 then 0 2 1 1 2 0 等等 抱歉 无法上传图像 因为我是新用户 不允许这样做
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 如何在Scala中实现尾递归快速排序

    我写了一个递归版本 def quickSort T xs List T p T T gt Boolean List T xs match case Nil gt Nil case gt val x xs head val left righ
  • 加密成本高,解密成本低

    我希望该用户 攻击者加密数据并发送给服务器 现在我想要一种与标准算法完全相反的算法 使用快 难以解密 即很难使用服务器发送的密钥来加密密码等数据 以防止随机攻击 但很容易解密这样服务器在验证用户时消耗的时间非常少 但是对于攻击者来说 每次使
  • 反转二进制网络

    如何反转二元方程 以便找到哪些输入将产生给定的输出 Example Inputs i0 through i8 Outputs o0 through o8 Operators XOR AND 二元方程 1 i0 1 i1 0 i2 1 i3
  • 使到 n 个点的集合的欧氏距离之和最小的点

    我有一组点W x1 y1 x2 y2 xn yn 在 2D 平面上 你能找到一种算法 将这些点作为输入并返回一个点 x y 在 2D 平面上 距以下点的距离之和最小W 换句话说 如果 di Euclidean distance x y xi
  • 在 Java 中实现排列算法的技巧

    作为学校项目的一部分 我需要编写一个函数 该函数将接受整数 N 并返回数组 0 1 N 1 的每个排列的二维数组 该声明看起来像 public static int permutations int N 该算法描述于http www usn
  • 使用主方法求解 T(n) = 2T(n/2) + n/log n 和 T(n) = 4T(n/2) + n/log n 之间的差异

    我最近偶然发现了一个资源 其中 2T n 2 n log ntypeMM 宣布复发无法解决 我接受它作为一个引理 直到今天 另一种资源被证明是矛盾的 在某种意义上 根据资源 下面的链接 其中的 Q7 和 Q18 是建议 分别在问题中的1和2
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • 确定解决迷宫问题的最小线段数

    我有一个问题 我需要定义一个具有最少数量的顶点的多边形 该多边形与不透明的图像中的每个像素相交或包含每个像素 令 N 为图像中的像素数 我唯一的假设是图像的边界 孔 内不能包含透明像素 并且至少有两个像素是不透明的 举个例子 假设我有以下图
  • 删除队列中的最后一个元素

    我需要删除队列的最后一个元素 我唯一可以使用的操作是 Peek 获取第一个元素而不删除它 Enqueue element 向队列末尾插入一个元素 Dequeue 删除第一个元素 IsEmpty true 或 false 队列是否为空 而且我
  • 如何将无向图转换为 DAG?

    The 维基页面 http en wikipedia org wiki Directed acyclic graph Relation to other kinds of graphs says 任何无向图都可以通过为其顶点选择总顺序并将每
  • 解释一下从 N 个给定集合中的每一个中给出第 K 个最大数字的示例?

    今天我尝试解决一个Facebook 编程挑战赛 https facebook interviewstreet com recruit challenges 我遇到的挑战是 酒吧问题 可以找到here https github com alo

随机推荐

  • 水晶报表-关闭数据库连接

    这是C Visual Studio 2008 VS2008附带的水晶报表 我有一个驻留在 DLL 中的水晶报表查看器表单 DLL 负责加载水晶报表 基于报表文件名 并将报表显示在窗体上 当我完成水晶报表后 我对加载的报表文档对象调用 dis
  • Yeomen webapp 生成器在 Windows 上的 grunt 构建上失败

    我正在尝试 yeomen 脚手架工具 唯一的问题是我遇到了一些问题和咕噜声 我正在尝试使用 webapp 生成器组装一个简单的网站 搭建应用程序并使用grunt serve工作完美 仅在使用时失败grunt build 它失败并显示以下消息
  • 在for循环中取消NSOperation?

    我正在尝试使用在后台线程上实现搜索NSOperation on iOS 我不想子类化NSOperation所以这就是我正在做的 searchQueue cancelAllOperations NSInvocationOperation op
  • 成本函数和梯度似乎有效,但 scipy.optimize 函数无效

    我正在为 Andrew NG Coursera 课程编写 Matlab 代码 并将其转换为 python 我正在研究非正则化逻辑回归 在编写梯度和成本函数后 我需要类似于 fminunc 的东西 经过一番谷歌搜索后 我找到了几个选项 它们都
  • 防止 BoxLayout 扩展子项

    我想在 JPanel 内垂直堆叠一些 JComponent 以便它们堆叠在顶部 任何额外的空间都在底部 我正在使用 BoxLayout 每个组件都包含一个 JTextArea 必要时应允许文本换行 因此 基本上 我希望每个组件的高度是显示
  • 上传的日文和中文文件名编码问题

    我目前正在使用jQuery 文件上传 https github com blueimp jQuery File Upload 我可能会上传一些带有日文或中文文件名的文件 在浏览器的调试模式下我可以看到文件名例如是 疲 様 txt 或 测试文
  • 为什么链接器在未在任何地方指定的情况下寻找 python36_d.lib ?

    我正在编译Python C 扩展模块 https docs python org 3 6 extending building html使用 VS 2017 和 SWIG 扩展模块 pyd 文件 的链接器 用于调试配置 的命令是 OUT D
  • 将“\r\n”替换为“\n”

    我有一些文本数据打印出实际字符 r n 总共四个字符 我想用单个 n 字符替换这四个字符 但我似乎无法让 Python 为我做这件事 我目前正在尝试 mytext replace r n n 但这只是打印出 n 两个字符 而不是一个 我觉得
  • Objective-C 中的标记指针

    While 回答这个问题 https stackoverflow com a 20362087 115200我注意到现代 Objective C 运行时使用标记指针 这迈克 阿什 Mike Ash 的文章及其评论 http www mike
  • Linux下的Topshelf和.net core

    我有一个简单的应用程序 它使用 topshelf 作为服务启动 它看起来很简单 HostFactory Run x gt x Service
  • 在 Azure 逻辑应用中执行存储过程 - 错误网关错误

    当我从逻辑应用设计器执行存储过程时 出现严重的网关错误 我试图调用的存储过程 create procedure test as select from testable 测试表包含 100000 多行 存储过程的结果放置在Blob FTP中
  • 将宏参数传递给其他宏

    我是生锈新手 我正在尝试创建宏 它需要一个缓冲区 然后从中解码一些数据并创建给定的变量列表 如果发生错误 那么它应该打印错误并继续 因为我将在接收缓冲区的循环中调用它 像这样的东西 for bin ref in bufs extract b
  • 使用 PHP 进行正则表达式电话号码验证

    这是关于我之前提出的问题的另一个问题昨天 https stackoverflow com questions 18094180 ignore entered text after a certain length php jquery se
  • 如何在 Swift 中查找列表项的索引?

    我正在尝试寻找一个item index通过搜索list 有人知道该怎么做吗 我看到有list StartIndex and list EndIndex但我想要类似 python 的东西list index text 由于 swift 在某些
  • Spring Data cassandra 存储库上的插入和保存性能缓慢

    我正在尝试使用 spring 将 1500 条记录插入 cassandra 中 我有一个 POJO 列表 其中包含这 1500 条记录 当我调用 saveAll 或插入此数据时 需要 30 秒才能完成此操作 有人可以建议一种方法让我更快地完
  • start() 已经被调用。第二次调用将被忽略。

    在调用 start 后 在组件 StandardEngine Catalina StandardHost localhost StandardContext Account 上调用 start 方法 第二次调用将被忽略 请帮助我解决这些错误
  • 为什么 pandas df.loc + lambda 不起作用?

    I have created pandas frame from csv file And I want to select rows use lambda But it does not work I use this pandas ma
  • 无法运行程序“...”错误=2,没有这样的文件或目录(java)

    我正在尝试制作一个 java 程序来在我的 macbook 上建立 SSH 连接 它提示我输入用户名 然后是 IP 地址 然后应该执行 ssh username ip 下面是我的代码 import java io BufferedReade
  • 使用 Selenium 时如何选择要启用的 Chrome 扩展程序 [重复]

    这个问题在这里已经有答案了 我正在使用 Selenium Web 驱动程序使用 Chrome 作为浏览器来开发自动化测试 我为此使用Python 我的 Chrome 浏览器上有一个扩展 我希望在 Selenium 打开 Chrome 时启用
  • 如何实现推荐引擎?

    请耐心等待我的写作 因为我的英语不熟练 作为一名程序员 我想了解在推荐系统或相关系统下实现的算法或机器学习智能 例如 最明显的例子来自亚马逊 他们有一个非常好的推荐系统 他们会知道 如果你愿意this 你可能还喜欢that 或者其他类似的东