- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对什么是基于项目的推荐感到困惑,如“Mahout in Action”一书中所述。书中有算法:
for every item i that u has no preference for yet
for every item j that u has a preference for
compute a similarity s between i and j
add u's preference for j, weighted by s, to a running average
return the top items, ranked by weighted average
最佳答案
基于项目的协同过滤
原来的基于Item的推荐是总基于用户项目排名(例如,用户对电影评分为 3 星,或者用户“喜欢”视频)。当您计算项目之间的相似性时,除了所有用户的评分历史之外,您不应该知道任何其他内容。因此,项目之间的相似度是基于评分而不是项目内容的元数据来计算的。
让我给你举个例子。假设您只能访问一些评级数据,如下所示:
user 1 likes: movie, cooking
user 2 likes: movie, biking, hiking
user 3 likes: biking, cooking
user 4 likes: hiking
假设现在您要为用户 4 提出建议。
movie: user 1, user 2
cooking: user 1, user 3
biking: user 2, user 3
hiking: user 2, user 4
由于这是一个二元评级(喜欢与否),我们可以使用类似
Jaccard Similarity 这样的相似性度量。计算项目相似度。
|user1|
similarity(movie, cooking) = --------------- = 1/3
|user1,2,3|
在分子中,user1 是电影和 cooking 都具有的唯一元素。在分母中,电影和 cooking 的联合有 3 个不同的用户(user1,2,3)。
|.|
这里表示集合的大小。所以我们知道在我们的例子中电影和 cooking 之间的相似性是 1/3。您只需对所有可能的项目对执行相同的操作
(i,j)
.
similarity(hiking, x)
的相似度得分其中 x 是您可能拥有的任何其他标签。 score(movie) = Similarity(biking, movie) + Similarity(cooking, movie)
score(hiking) = Similarity(biking, hiking) + Similarity(cooking, hiking)
基于内容的推荐
Movie stars 0 - 4 Movie Genres
user 1: 0 0 0 1 1 1 1 1 0 0
user 2: 1 1 0 0 0 0 0 0 1 1
user 3: 0 0 0 1 1 1 1 1 1 0
假设这是我们的电影简介:
Movie stars 0 - 4 Movie Genres
movie1: 0 0 0 0 1 1 1 0 0 0
movie2: 1 1 1 0 0 0 0 1 0 1
movie3: 0 0 1 0 1 1 0 1 0 1
为了计算电影对用户的好程度,我们使用
cosine similarity :
dot-product(user1, movie1)
similarity(user 1, movie1) = ---------------------------------
||user1|| x ||movie1||
0x0+0x0+0x0+1x0+1x1+1x1+1x1+1x0+0x0+0x0
= -----------------------------------------
sqrt(5) x sqrt(3)
= 3 / (sqrt(5) x sqrt(3)) = 0.77460
相似地:
similarity(user 2, movie2) = 3 / (sqrt(4) x sqrt(5)) = 0.67082
similarity(user 3, movie3) = 3 / (sqrt(6) x sqrt(5)) = 0.54772
如果你想给用户一个推荐
i
,随便挑电影
j
最高的
similarity(i, j)
.
关于mahout - 基于项目和基于内容的协同过滤有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372191/
谁能告诉我 mahout 的 RecommenderIRStatsEvaluator 是如何工作的?更具体地说,它如何随机拆分训练和测试数据以及结果与哪些数据进行比较?基于我的低估,您需要某种理想/预
我正在学习 Mahout 并阅读“Mahout in Action”。 当我尝试运行第 7 章 SimpleKMeansClustering.java 中的示例代码时,弹出了一个异常: 线程“main
我已经在 Mahout 教程中的合成控制数据上运行了 k-Means 聚类算法,并且想知道是否有人可以解释如何解释输出。我运行了 clusterdump 并收到了如下所示的输出(为了节省空间而被截断)
我有一个基于用户相似性的 bool 偏好推荐器。我的数据集本质上包含关系,其中 ItemId 是用户决定阅读的文章。我想添加第二个数据模型,其中包含 ItemId 是对特定主题的订阅。 我能想到的唯一
对于机器学习新手来说,高效使用 Apache Mahout 的学习先决条件是什么? 我知道 Mahout 的提交者需要微积分、线性代数、概率和机器学习才能贡献任何有用的东西。但是 Apache Mah
我正在为我的数据训练 mahout 分类器, 按照我发出的创建 mahout 模型的命令 ./bin/mahout seqdirectory -i /tmp/mahout-work-root/MyDa
我正在读取大约 700 万行数据,当我重新启动应用程序时,加载所有内容需要将近两分钟的时间。我试图找出加快速度的最佳方法,以便最多只需几秒钟即可重新启动应用程序。这是我希望加快速度的代码以及当前所需的
我正在尝试使用 Apache Mahout 创建一个基于项目的推荐器,该推荐器根据其他用户也有共同点的相似项目推荐后备项目。 我首先创建一个数据模型,然后尝试将它传递给各种不同的 ItemSimila
我使用 Mahout 和 Pearson 相关算法来根据用户对多个项目的偏好来比较和查找相似用户。我遇到的问题是 Mahout 和/或 Pearson 忽略了为每个项目选择相同偏好的用户。有谁知道是否
我正在通过 apache mahout 运行朴素贝叶斯分类器算法。我们可以选择在训练和运行算法实例时设置克大小。 将 n-Gram 大小从 1 更改为 2,会极大地改变最终的分类。为什么会出现这种情况
任何人都可以建议 Mahout 到底想要应用 LDA 的输入类型吗?如果有人请详细写下以获取输出,那就太好了 最佳答案 关于 mahout 中最新形式的 LDA 的文档有点稀疏。现在它被称为“cvb”
我有一个包含 5000 万个用户偏好的数据集,其中包含 800 万个不同的用户和 18 万个不同的产品。我目前正在使用 bool 数据模型,并有一个基于谷本相似性的基本推荐器。我正在尝试探索不同的算法
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我正在尝试 Apache Mahout,有很多关于如何使用 LDA 生成主题模型的信息,但是关于如何使用新的 CVB lda 算法执行相同操作的信息很少。我想要做的是生成单词到主题的概率,类似于原始的
我的环境: 驯象师:0.7 Hadoop:1.0.3 我做了什么: 安装了 mahout,并测试了朴素的贝叶斯示例 - 20newsgroup,它运行良好。 我想要达到的目标: 有 trainnb 和
当前的 Mahout 0.8-SNAPSHOT 包括用于主题建模的折叠变分贝叶斯 (cvb) 版本并删除了潜在狄利克雷分析 (lda) 方法,因为 cvb 可以更好地并行化。不幸的是,只有 lda 的
我所说的动态数据评级是指基于时间的推荐系统。 电影推荐的一个示例用例,推荐引擎读取用户历史电影观看数据并发现用户喜欢在周末观看 Action 片,引擎应该对 Action 片评分较高。 然而,由于历史
我有一个包含数据向量的文件,其中每一行都包含一个以逗号分隔的值列表。我想知道如何使用 mahout 对这些数据执行 k 均值聚类。维基中提供的示例提到了创建序列文件,但我不确定是否需要进行某种类型的转
我是 Mahout 的新手,正在尝试使用 0.5 版本的“Mahout in Action”。早期的示例之一要求使用斜率一推荐器。这个推荐器是否仍然包含在 Mahout 0.9 中?我已经浏览了文档,
我是 hadoop 的新手,更不用说 mahout 了。我希望有人可以帮助我通过这里..已经尝试了 2 天.. 我已经有一个 hadoop 集群在运行。 我正在使用 hadoop-2.0.0-alph
我是一名优秀的程序员,十分优秀!