- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在阅读推荐系统 wikipedia关于“算法”的部分似乎表明 K 最近邻和基于协同过滤的基于用户的算法是两个不同的东西。它是否正确?以我的理解,他们不是一样的吗?如果不是,它们之间有什么区别?谢谢。
最佳答案
不完全是。它们很相似(它们有相同的想法),但它们之间有几个主要区别。事实上,维基百科上的文章只描述了实现推荐系统的两种最不同的方法,但是有更多的方法同时使用了这两种方法的想法。
这就是我对维基百科文章的理解。
首先,KNN 不是第一种方法的主要特征。它只是一种在整个集合中寻找最近项的算法,因此它也可以用于协同过滤。最重要的思想在于一个术语“相似性”。要向有问题的用户推荐一些东西,您需要从他附近的人那里找到具有相似个人资料的人。例如,你想在 Facebook 上为用户 John 做推荐。您查看他的 Facebook 个人资料,然后查看他 friend 的个人资料。您找到 10 个具有相似个人资料的人并检查他们喜欢什么。如果 10 个具有相似概况的人中有 8 个喜欢新电影,约翰很可能也会喜欢它。
所以,这里有两点很重要:
维基百科文章没有涉及如何找到相似性度量的问题,但是有很多方法,包括在个人资料文本中搜索常用术语,找到最好的 friend (我在他们之间的消息数,连接图分析等)和许多其他人。
在第二种方法中,您不需要分析社区并找到相似的配置文件,但您需要收集用户的选择。让我们记忆一下 Facebook 用户 John 的例子。想象一下,我们可以获得所有 Facebook 用户的所有“喜欢”,包括 John 的用户。有了它们,您可以构建非常大的相关矩阵,其中行是用户 ID,列是他们可能“喜欢”的所有可能项目。如果实际“喜欢”了一个项目,则当前用户和当前项目的单元格设置为 1,否则为 0。
有了这样的矩阵(构建的或抽象的),您可以使用 association mining找到最强大的协会。比如,喜欢《加勒比海盗2》的10000人也喜欢《加勒比海盗3》,但其中只有500人喜欢《电锯惊魂》。所以我们可以假设 2 集“海盗”之间的关联要强得多。请注意,我们既没有分析用户,也没有分析电影本身(我们没有考虑电影名称、情节、 Actor 或类似的东西——只有“喜欢”)。这是协同过滤相对于基于相似性的方法的主要优势。
最后,要向我们的用户 John 推荐电影,您只需遍历他的“喜欢”并找到与当前项目关联最强的其他项目。
所以,这里要点是:
这两种方法各有优缺点。第一种方法基于人与人之间的某种联系(例如 Facebook 上的 friend ),很难用于像亚马逊这样的服务。同时,第二种方法基于所有用户的平均偏好,因此对于偏好差异很大的系统来说不是好的选择。
关于algorithm - K最近邻与基于用户的最近邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7742706/
我需要获取过去 24 小时的记录,但不能像这样按小时分组: SELECT HOUR(CompDate) AS hour, COUNT(1) AS action FROM mytable WHERE (
我们有一个自动完成列表,当您向某人发送电子邮件时会填充该列表,这一切都很好,直到列表变得非常大,您需要输入越来越多的地址才能找到您想要的地址, 这违背了自动完成的目的 我在想应该添加一些逻辑,以便自动
我在 android 的锁屏上工作我们如何禁用导航软按钮,已经尝试了所有方法,systemoverlay但它不起作用,在按下主页按钮时它会终止服务和 Activity 。 最佳答案 后退按钮可以通过覆
我有一个报告创建时间为 2016-05-30,现在我需要从报告时间开始的最后 7 天。我怎样才能使用时刻? report_create_time = moment('2016-05-30').form
我想找出向量中最接近的三个数字。 就像是 v = c(10,23,25,26,38,50) c = findClosest(v,3) c 23 25 26 我试过 sort(colSums(as.ma
考虑以下表结构: id speed 1 100 2 200 3 300 4 400 5 500 考虑以下查询:"SELECT * FROM records WHERE
我正在开发一个依赖 YouTube 直播和实时聊天(也来自 YouTube)的网络应用。事情进展顺利,突然嵌入的聊天功能无法在移动设备上运行。 我试图在我这边找到一个错误或一些无效的配置,但我找不到。
我正在制作一个 React Native 应用程序,它有一个安全部分,用户必须在其中输入密码才能解锁 protected 内容。问题是,当用户在锁定该部分之前切换到另一个应用程序时,将生成屏幕截图以及
我有一条 SQL 语句 (SQL Server Management Studio),我通过仪表板软件将数据传递到 where 语句中。用户可以选择年份(2013 年或现在的 2014 年)和月份(作
我有一个脚本可以添加一组行,使您能够在 SharePoint 列表表单中捕获其他访问者的信息。我有两个 anchor 标记,一个用于添加,另一个用于删除。当我添加一个新的访问者时它有效,当我删除访问者
我正在学习斯坦福 iOS 类(class),我有一个问题,我认为与最近的更新有关。这是代码部分: func evaluate(ops: [Op]) -> (result: Double?,remain
我注意到我的应用有一个奇怪的行为。每当我按下主页按钮时,我的应用程序就会被杀死。我没有在应用程序堆栈中看到该应用程序。我可以看到之前启动的其他应用程序。最初我怀疑 android:launchMode
我需要获取过去 7 天内的所有付费和临时条目,但我总是收到所有退回的内容。我不确定我做错了什么,我已经阅读了这里的很多帖子,但无法理解它是什么。 MySQL 5.6(如果它与我一直在做的事情有什么不同
我的表有一列以 mysql time() 格式格式化。 当它是一个值分配给名为 $preRemainOt 的 php 变量时我想重新安排到最近的 15 分钟 function roundTime($w
我想获取过去 7 天内每天每个产品的最后时间戳。数据库中有数千条记录。我怎样才能通过查询来做到这一点。大约有 25 种不同的产品,每种产品每天大约有 50 个时间戳。 表:构建数据 'Timesta
我现在的代码正在从 SQL 中获取移动应用程序中的数据,首先添加显示,我需要将其设置为在我的 Android 应用程序中显示最后添加的第一个。我有如下所示的 api 代码,最新的是根据我的要求显示的,
我有一张 table ,说 table 的描述为: | ID | SNO | c1 | c2 | c3 | ___________________________________ |
我有两个大小相等的向量,例如 A=[2.29 2.56 2.77 2.90 2.05] and B=[2.34 2.62 2.67 2.44 2.52]. 我有兴趣在两个相同大小的向量 A 和 B 中
之前,我在这里发布了一个问题,询问有关如何从驱动器读取和写入数据的建议,而不是通过像“aaa.txt”这样的文件标签,而只是扇区..我被建议尝试阅读和写作....但新问题出现了……毛茸茸的参数 int
我想删除在给定时间段内未登录的用户,但我稍后会根据结果选择时间段。 所以我需要报告,其中我将收到过去 1 个月、2 个月...... n 个月内未登录的用户数量。 我不太清楚如何在单个 mysql 查
我是一名优秀的程序员,十分优秀!