`
m635674608
  • 浏览: 5062390 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Mahout的taste推荐系统里的几种Recommender分析

 
阅读更多

Taste简介

Mahout 是apache下的一个java语言的开源大数据机器学习项目,与其他机器学习项目不同的是,它的算法多数是mapreduce方式写的,可以在hadoop上运行,并行化处理大规模数据。

 

协同过滤在mahout里是由一个叫taste的引擎提供的, 它提供两种模式,一种是以jar包形式嵌入到程序里在进程内运行,另外一种是MapReduce Job形式在hadoop上运行。这两种方式使用的算法是一样的,配置也类似。基本上搞明白了一种,就会另外一种了。

 

Taste的系统结构如下图

 

 

其中:

Perference:表示用户的喜好数据,是个三元组(userid, itemid, value),分别表示用户id, 物品id和用户对这个物品的喜好值。

DataModel:是Perference的集合,可以认为是协同过滤用到的user*item的大矩阵。DateModel可以来自db, 文件或者内存。

Similarity:相似度计算的接口,各种相似度计算算法都是继承自这个接口,具体相似度计算的方法,可以参考这篇文章:http://anylin.iteye.com/blog/1721978

Recommender:  利用Similarity找到待推荐item集合后的各种推荐策略,这是最终要暴露个使用者的推荐接口,本文将重点介绍下taste里各种recommender的实现策略,有错误之处,请多指正。

 

各种Recommender介绍

按照协同过滤方法的分类, taste里的recommender可以分别划到对应的分类下:

Item-based:

         GenericItemBasedRecommender

         GenericBooleanPrefItemBasedRecommender

         KnnItemBasedRecommender

User-based:

         GenericUserBasedRecommender

         GenericBooleanPerfUserBasedRecommender

Model-based:

         SlopeOneRecommender

         SVDRecommender

         TreeClusteringRecommender

  ItemAverageRecommender

         ItemUserAverageRecommender

 

每种Recommender的详细介绍如下:

GenericUserBasedRecommender

一个很简单的user-based模式的推荐器实现类,根据传入的DataModel和UserNeighborhood进行推荐。其推荐流程分成三步:

第一步,使用UserNeighborhood获取跟指定用户Ui最相似的K个用户{U1…Uk};

第二步,{U1…Uk}喜欢的item集合中排除掉Ui喜欢的item, 得到一个item集合 {Item0...Itemm}

第三步,对{Item0...Itemm}每个itemj计算 Ui可能喜欢的程度值perf(Ui , Itemj) ,并把item按这个数值从高到低排序,把前N个item推荐给Ui。其中perf(Ui , Itemj)的计算公式如下:

其中 是用户Ul对Itemj的喜好值。

GenericBooleanPerfUserBasedRecommender

继承自GenericUserBasedRecommender, 处理逻辑跟GenericUserBasedRecommender一样,只是 的计算公式变成如下公式

其中是布尔型取值,不是0就是1。

GenericItemBasedRecommender

一个简单的item-based的推荐器,根据传入的DateModel和ItemSimilarity去推荐。基于Item的相似度计算比基于 User的相似度计算有个好处是,item数量较少,计算量也就少了,另外item之间的相似度比较固定,所以相似度可以事先算好,这样可以大幅提高推荐 的速度。

其推荐流程可以分成三步:

       第一步,获取用户Ui喜好的item集合{It1…Itm}

第一步,使用MostSimilarItemsCandidateItemsStrategy(有多种策略, 功能类似UserNeighborhood) 获取跟用户喜好集合里每个item最相似的其他Item构成集合 {Item1…Itemk};

第二步,对{Item1...Itemk}里的每个itemj计算 Ui可能喜欢的程度值perf(Ui , Itemj) ,并把item按这个数值从高到低排序,把前N个Item推荐给Ui。其中perf(Ui , Itemj)的计算公式如下:

其中 是用户Ul对Iteml的喜好值。

GenericBooleanPrefItemBasedRecommender

继承自GenericItemBasedRecommender, 处理逻辑跟GenericItemBasedRecommender一样,只是 的计算公式变成如下公式

其中是布尔型取值,不是0就是1。

KnnItemBasedRecommender

继承自GenericItemBasedRecommender, 处理逻辑跟GenericItemBasedRecommender一样,只是 的计算公式比较复杂,基于一篇论文提到的算法,论文地址在这里

http://public.research.att.com/~volinsky/netflix/BellKorICDM07.pdf。根据论文介绍,该算法对数据进行了一些预处理,同时改进了邻居选取策略,再不怎么增加计算量的情况下,可以较大幅度提高推荐准确度。

ItemAverageRecommender

这是一个提供给实验用的推荐类,简单但计算快速,推荐结果可能会不够好。它预测一个用户对一个未知item的喜好值是所有用户对这个item喜好值的平均值,预测公式如下。

ItemUserAverageRecommender

在ItemAverageRecommender的基础上,考虑了用户喜好的平均值和全局所有喜好的平均值进行调整,它的预测公式如下:

         其中 是所有用户对Itemj喜好的平均值, 是用户Ul所有喜好的平均值,是全局所有喜好值的平均值。

RandomRecommender

随机推荐item,  除了测试性能的时候有用外,没太大用处。

SlopeOneRecommender

基于Slopeone算法的推荐器,Slopeone算法适用于用户对item的打分是具体数值的情况。Slopeone算法不同于前面提到的基于 相似度的算法,他计算简单快速,对新用户推荐效果不错,数据更新和扩展性都很不错,预测能达到和基于相似度的算法差不多的效果,很适合在实际项目中使用。

 

基本原理:

 

用户   对itema打分     对itemb打分

X                          3                          4

Y                          2                          4

Z                          4                          ?

用户Z对itemb的打分可能是多少呢? Slope one算法认为:所有用户对事物A对itemb的打分平均差值是:((3 - 4) + (2 - 4)) / 2 = -1.5,也就是说人们对itemb的打分一般比事物A的打分要高1.5,于是Slope one算法就猜测Z对itemb的打分是4 + 1.5 = 5.5

 

当然在实际应用中,用户不止X,Y 两个,跟itemb相关的item也不止A一个,所以slopeone的预测公式如下:

其中表示与, 用户Ui打过分的除itemj之外所有其他item集合, 表示用户Ui对 itemk的打分。表示除Ui外所有其他用户对itemk和itemj打分差值的平均值。

其中表示除Ui外其他所有用户的集合。

SVDRecommender

基于SVD矩阵分解技术的推荐器,暂时没有研究, 具体可以参考这个文档。

https://cwiki.apache.org/confluence/display/MAHOUT/Collaborative+Filtering+with+ALS-WR

TreeClusteringRecommender

利用聚类方法的推荐器,暂时没有研究。

 

http://blog.csdn.net/zhoubl668/article/details/13297583

分享到:
评论

相关推荐

    基于协同过滤算法的电影推荐系统设计 (2).pdf

    在这个基于协同过滤的电影推荐系统设计中,采用了Apache Mahout库中的Taste推荐引擎,这是一个用Java实现的高效、可扩展的个性化推荐引擎。 Taste推荐引擎的核心组件包括DataModel、UserSimilarity、ItemSimilarity...

    基于协同过滤算法的电影系统.docx

    协同过滤算法是一种广泛应用于推荐系统中的技术,尤其在电影推荐领域。这种算法的基本思想是,如果用户A和用户B在过去对某些电影的评分有相似的倾向,那么可以预测A对未评分电影的兴趣可能会与B类似。协同过滤可以...

    适合前后端分离的页码生成器 -pagination.zip

    适合前后端分离的页码生成器

    三菱FX5U ST语言螺丝机程序集:标准模板,功能丰富,结构清晰,含威纶通触摸屏程序,高学习价值,三菱FX5U ST语言螺丝机程序合集:含触摸屏与功能块注释的学习范例,三菱FX5U ST语言 螺丝机程

    三菱FX5U ST语言螺丝机程序集:标准模板,功能丰富,结构清晰,含威纶通触摸屏程序,高学习价值,三菱FX5U ST语言螺丝机程序合集:含触摸屏与功能块注释的学习范例,三菱FX5U ST语言 螺丝机程序(含威纶通触摸屏程序),全ST语言编写,标准模版, 程序包含轴FB,气缸FB等多种功能块,结构清晰,注释详细, 具体很高的学习价值和参考价值。 ,三菱FX5U; ST语言; 螺丝机程序; 威纶通触摸屏程序; 轴FB; 气缸FB; 结构清晰; 注释详细。,三菱FX5U ST语言编程宝典:螺丝机标准模版程序

    项目使用Flutter进行开发,同时支持Andriod与iOS。 支持财经新闻阅读、实时大盘指数、实时沪深行情、k线查看、登录、网页查看、侧边栏、系統分享、微信分享等功能.zip

    项目使用Flutter进行开发,同时支持Andriod与iOS。 支持财经新闻阅读、实时大盘指数、实时沪深行情、k线查看、登录、网页查看、侧边栏、系統分享、微信分享等功能.zip项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,网络商品/电子资源资料具可复制性不支持退款,勿用于商业用途。质量优质,放心下载使用。

    基于TensorRT和YOLOv5算法的智能监控平台:多线程并行处理,视频监控与录像回放,支持多种功能部署,基于TensorRT和YOLOv5算法的智能监控平台:多线程并行处理,视频监控与录像回放一体

    基于TensorRT和YOLOv5算法的智能监控平台:多线程并行处理,视频监控与录像回放,支持多种功能部署,基于TensorRT和YOLOv5算法的智能监控平台:多线程并行处理,视频监控与录像回放一体化管理,tensorrt yolov5 QT 智能监控平台。 yolov5使用 tensorrt推理封装成dll,支持多线程多任务,可同时并行加载不同模型,同时检测。 Qt开发的监控平台,支持不同平台部署,视频监控,录像回放,电子地图,日志和系统设置应有尽有。 视觉监控,同时加载16路视频,同时并行检测任务,可网络流可本地视频。 ,关键词:tensorrt;yolov5;多线程多任务;QT智能监控平台;视频监控;录像回放;电子地图;并行检测;网络流;本地视频。 关键词之间用分号分隔,即:tensorrt; yolov5; 多线程多任务; QT智能监控平台; 视频监控; 录像回放; 电子地图; 并行检测; 网络流; 本地视频。,TensorRT加速Yolov5智能监控平台:多线程多任务并行处理,跨平台视频监控系统

    基于MATLAB的单容水箱水位模糊控制系统设计与仿真报告(含详细说明书及调试讲解),基于MATLAB的单容水箱水位模糊控制系统设计与仿真报告(含详细说明书及系统建模、模糊规则设定等),基于MATLAB

    基于MATLAB的单容水箱水位模糊控制系统设计与仿真报告(含详细说明书及调试讲解),基于MATLAB的单容水箱水位模糊控制系统设计与仿真报告(含详细说明书及系统建模、模糊规则设定等),基于MATLAB水箱水位模糊控制系统设计 matlab设计单容水箱,有仿真设计图+设计思路 有模糊设计面板 3个规则,带说明书[旺柴] 比较简单,能够出现跟随曲线 不 不,可讲解调试 7.5程序带简单说明书 15程序带详细说明书(系统建模+模糊规则设定+仿真分析)报告3k字 ,MATLAB; 水箱水位; 模糊控制系统设计; 仿真设计图; 设计思路; 模糊设计面板; 规则; 说明书; 跟随曲线; 系统建模; 仿真分析报告。,基于MATLAB的模糊控制系统设计:单容水箱水位管理新方案

    超火的开心锤锤动态表情包小程序源码-自动采集-免服务器和域名.zip

    超火的开心锤锤动态表情包小程序源码_自动采集_免服务器和域名 这款小程序里面的表情包人物的都是开心锤锤里面的人物 表情包是采集的!所以无需考虑表情包的问题 另外这款小程序是免服务器和域名的,所以运营成本是很低的 安装方法: 使用微信开发者工具打开改源码 然后设置合法域名(合法域名在压缩包里面) 然后上传提交审核就可以了

    电机工程学报论文模板,电机工程学报论文模板

    电机工程学报论文模板

    基于SSH的飞机订票系统,包括后台.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,网络商品/电子资源资料具可复制性不支持退款,勿用于商业用途。质量优质,放心下载使用。

    IT服务管理体系下运维服务报告控制程序规范与实施指南

    内容概要:本文档旨在建立和完善IT服务管理体系下的运维服务报告机制,详细描述了服务报告的管理和操作流程,明确了报告的目的、适用范围、职责分工和具体的工作步骤。文章首先概述了制定运维服务报告的目的——提供及时准确的数据以支持决策。随后,定义了报告的责任部门(主要为运维部),并且明确了不同类型报告(反应性报告、前置性报告、预先计划报告)的特点及其编制和发送规则。此外,还强调了关键绩效指标(KPIs)和服务报告的质量保证流程。最后,阐述了关于服务报告规划、变 更及年度评审的相关规定。 适合人群:企业运维团队成员、IT管理人员及其他相关领域的专业人士。 使用场景及目标:主要用于帮助企业在日常运营和技术维护活动中提高透明度和效率,确保与利益相关者的良好沟通和决策依据的可靠性;同时有助于推动服务质量的不断优化和改进。 阅读建议:建议关注报告类别和处理流程章节,以便更好地理解和运用此文档来提升自身的服务水平和支持能力。此外还需重视KPIs监控部分以衡量实际工作成效并对潜在风险予以警惕和防范措施部署。

    基于ssh网上书店.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,网络商品/电子资源资料具可复制性不支持退款,勿用于商业用途。质量优质,放心下载使用。

    人形机器人的软硬件项目立项书

    人形机器人的软硬件项目立项书

    Screenshot_2025-02-26-22-07-28-762_com.tencent.mm.jpg

    Screenshot_2025-02-26-22-07-28-762_com.tencent.mm.jpg

    Apache:Apache的安装与配置:6. Apache与域名绑定及SSL加密配置.pdf

    Apache:Apache的安装与配置:6. Apache与域名绑定及SSL加密配置.pdf

    基于粒子群优化算法的学习率及隐藏层参数调整堆叠自编码器用于数据回归预测(Matlab实现),基于粒子群优化堆叠自编码器(PSO-SAE)的数据回归预测算法参数优化与实现-学习率、隐藏层节点及最大训练

    基于粒子群优化算法的学习率及隐藏层参数调整堆叠自编码器用于数据回归预测(Matlab实现),基于粒子群优化堆叠自编码器(PSO-SAE)的数据回归预测算法参数优化与实现——学习率、隐藏层节点及最大训练次数调整,基于粒子群优化堆叠自编码器(PSO-SAE)的数据回归预测 优化参数为学习率,隐藏层节点个数,最大训练次数 matlab代码 ,核心关键词:PSO-SAE;数据回归预测;优化参数;学习率;隐藏层节点个数;最大训练次数;Matlab代码;粒子群优化;堆叠自编码器。,基于PSO-SAE算法的参数优化与数据回归预测的Matlab实现

    (程序、GUI、思路)MATLAB考勤系统设计.zip

    基于Matlab语言实现的设计项目 2、适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计中的部分功能,作为“参考资料”使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。

    基于ncnn部署yolov5s(7.0)手势检测模型的安卓demo,支持hagrid数据集18类手势识别.zip(毕设&课设&实训&大作业&竞赛&项目)

    基于ncnn部署yolov5s(7.0)手势检测模型的安卓demo,支持hagrid数据集18类手势识别.zip(毕设&课设&实训&大作业&竞赛&项目)项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,网络商品/电子资源资料具可复制性不支持退款,勿用于商业用途。质量优质,放心下载使用。

    回归实战-新冠病毒感染人数预测(四)

    回归实战-新冠病毒感染人数预测(四)

    基于非线性PID控制策略的Buck-Boost变换器电路设计及仿真波形展示,基于非线性PID控制的Buck-Boost变换器动态响应优化及电路应用探究,buck-boost变器的非线性PID控制,主电

    基于非线性PID控制策略的Buck-Boost变换器电路设计及仿真波形展示,基于非线性PID控制的Buck-Boost变换器动态响应优化及电路应用探究,buck-boost变器的非线性PID控制,主电路也可以成别的电路。 在经典PID中引入了两个TD非线性跟踪微分器,构成了非线性PID控制器。 当TD的输入为方波时,TD的输出,跟踪方波信号也没有超调,仿真波形如下所示。 输入电压为20V,设置输出参考电压为10V,在非线性PID的控制下,输出很快为10V,且没有超调。 当加减载时,输出电压也一直为10V。 整个仿真全部采用模块搭建,没有用到S-Function。 ,buck-boost变换器; 非线性PID控制; TD非线性跟踪微分器; 方波输入; 仿真波形; 输入电压; 输出参考电压; 加载条件; 模块搭建,非线性PID控制的Buck-Boost变换器与多种电路应用研究

Global site tag (gtag.js) - Google Analytics