基于物品的协同过滤推荐算法_基于Mahout的协同过滤推荐算法

本文介绍了基于物品的协同过滤推荐算法,对比了与基于用户的协同过滤的区别。阐述了Mahout库的作用,特别是其在推荐引擎、聚类和分类中的应用。文章详细讲解了Mahout中的Taste框架,包括DataModel、UserSimilarity、ItemSimilarity和UserNeighborhood等核心接口,以及如何利用这些接口实现推荐算法。并提供了数据源下载和代码示例。
摘要由CSDN通过智能技术生成
1 协同过滤

基于物品的协同过滤

对物品进行相似度计算,然后再进行推荐。

基于用户的协同过滤

be1b1f8d6bf80f41304c2a1dd9e17382.png

        基于用户的协同过滤算法是通过用户的历史行为数据发现用户对商品或内容的喜欢,并对这些喜好进行度量和打分。根据不同用户对相同商品或内容的态度和偏好程度计算用户之间的关系。在有相同喜好的用户间进行商品推荐。

265b46e08bc35c9b8b0edae371c531ec.png

        模拟:5个用户分别对两件商品进行了评分。这里的分值可能表示真实的购买、浏览商品的次数、向朋友推荐商品,收藏,分享,或评论等等。这些行为都可以表示用户对商品的态度和偏好程度。

b25c3ca70f2f6cc7aa138ff890173c10.png

2 Mahout

♛定义:Mahout是一个算法库,集成了很多算法;Apache Mahout是一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建指能应用程序;Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。

♛作用:推荐引擎,聚类,分类

3 Mahout协同过滤算法
  • 定义

        Mahout使用了Taste来提高协同过滤算法的实现,它是一个基于Java实现的可扩展的,高效的推荐引擎。Taste既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法。

  • Taste提供的主要接口

a.DataMode

        DataModel 是用户喜好信息的抽象接口,它的具体实现支持从任意类型的数据源抽取用户喜好信息。Taste 默认提供JDBCDataModel 和 FileDataModel,分别支持从数据库和文件中读取用户的喜好信息。

b.UserSimilarity 、 ItemSimilarity

        UserSimilarity 用于定义两个用户间的相似度,它是基于协同过滤的推荐引擎的核心部分,可以用来计算用户的“邻居”,这里我们将与当前用户口味相似的用户称为他的邻居。ItemSimilarity 类似的,计算Item之间的相似度。

c.UserNeighborhood

        用于基于用户相似度的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的邻居用户的方式产生的。UserNeighborhood 定义了确定邻居用户的方法,具体实现一般是基于 UserSimilarity 计算得到的。

4 算法编程

下载数据源

db1b4e45ab29b453cb10e4f1bb230855.png

代码展示

67258138da55e43374bc7ddacb74e13c.png

运行结果

55f53ea2d2391d30e304745659b0506c.png

END

资料来源:唐银

编辑:吕婕

文中部分图片来源于网络

fefb128042da821a87888b167fca9447.png向上滑动 fd9e2f71385f73d11e047530f1bb3b2d.png e85bf8c1719a31c5546819a28d588514.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值