推荐系统---EasyRec整体架构

一、EasyRec整体架构

什么是EasyRec

EasyRec是一个易集成、易扩展、功能强大且具有可视化管理的推荐系统。EasyRec可以同时给多个不同的网站提供推荐服务,通过tenant来区分不同的网站。架设EasyRec服务器,为网站申请tenant,通过tenant就可以很方便的集成到网站中。通过各种不同的数据收集(view,buy.ratingAPI收集到网站的用户行为,EasyRec通过离线分析,就可以产生推荐信息,您的网站就可以通过RecommendationsCommunity Rankings来进行推荐业务的实现。

从源码来看,EasyRec纵向采用三层架构模式(展现层、业务层和持久层),横向采用模块化(核心模块,插件模块,特定领域模块及推荐模块等)。下面是我对

 

从上图,我们可以清晰的了解到,EacyRec的分层很清晰,下面是我理解的模块详细图:

 

二、EasyRec功能介绍

有上面的介绍,我们可以大致了解EasyRec的基本功能。但是从功能模块上分析,很多模块从代码上还是有交叉的,主要包含以下内容:

1.easyrec-Core:核心模块,包括:数据模型,基本services(ItemAssocServiceRecommenderService)

2.easyrec-domain:针对特定领域做得一个孤立模块,支持第三方扩展业务,目前有music领域。

3.easyrec-Plugins-API:插件的父类,定义了扩展插件需要实现的接口。

4.easyrec-Plugins-Container:提供一个运行插件的框架。

5.easyrec-Plugins:一个插件集,扩展的插件目录

6.easyrec-Utils:工具集

7.easyrec-Webweb工程,提供api给调用者。

下面就每一个功能模块做一些介绍。

2.1 数据录入模块

数据录入模块提供了原始用户行为数据的录入功能,主要可以采用以下两种方式进行初始数据的录入:

1.Action API录入

通过Action(view,buy,rating) APIEasyRec可以接受到集成网站上用户的行为信息。从而为离线行为分析做准备。

2.批量导入功能

通过管理几面,还可以通过Import API进行.csv文件来快速的数据(itemrule)导入。数据的格式参数数据表itemassoc

2.2 管理模块

EasyRec提供了一个可视化的管理界面,用户通过注册用户可以进行相应功能管理。主要提供的管理功能有:

1.Tenants管理:EasyRec管理员通过该页面可以管理不同网站的tenant。可以操作用户的插件,tenant配置,查看日志和用户数据分析报表。

2.Operators管理:即用户管理,查看用户状态

3.Performance管理:展示REST API的工作效率

4.Plugins Log管理:展示不同分析插件的工作记录,还可以对各插件进行配置已经插件的数据分析报表。

5.Plugins管理:进行插件的上传、启动等操作。

6.Info管理:对系统的硬件及相关软件的运行状况进行实时采集。

2.3 推荐模块

推荐模块是该系统的灵魂所在,通过Recommendations Comunity Rankings两个API分别提供个性化和大众化的推荐服务。

个性化推荐:

1.其他用户看过

2.其他用户买过

3.其他用户觉得好

4.针对某个用户推荐

5.相关items

6.用户历史记录

大众化推荐:

1.被浏览最多的items

2.卖的最多的items

3.被评分最多的items

4.评价最好的items

5.评价最差的items

2.4 离线分析模块

离线分析模块是通过收集的用户行为信息,通过运行分析组件来产生推荐数据,从而为推荐模块服务。目前EasyRec已实现的推荐算法有:

1.ARM

2.ItemItem

3.Mahout-Boolean

4.Mahout-Slopeone

5.Pearson

6.Slopeone

7.Waiting

针对2.3节不同的推荐模块可以通过配置管理界面来配置不同的已注册的算法分析插件来产生推荐数据。

2.5 特定领域模块

该模块是为了不同用户扩展自己的用户数据模型,它是一个独立的模块。目前EasyRec源码中有关于Music领域的实现,具体实现见源码。

三、EasyRec数据库介绍

最新版的EasyRec0.98的数据库有25张表具体见下图:

 

下面就一下重要的表做一些说明:

Action表:记录action的操作信息


ratingValue:如果actionrating,则记录rating的值,否则默认

searchSuceeded:如果action是搜索,表示是否找到记录,否则默认

numberOfFoundItems:如果action是搜索,记录返回结果数


Actiontype表:表示action的类型


name:表示action的类型,如:buy,viewrate


Backtracking表:记录用户对推荐商品的行为信息


userId:对推荐商品操作的用户ID

itemFromId:推荐单页的商品ID

itemToId:推荐单页的商品关联推荐商品ID

assocType:推荐类型


Itemassoc表:存储item之间的关联关系

itemFromId:主动关联的itemid

itemFromId:主动关联的item的类型id

assocTypeIditem关联的类型id

assocTypeIditem之间关联的关联值

itemToId:被动关联的Id

itemToTypeId:被动关联的类型Id

sourceTypeId:插件类型Id

sourceInfo:插件的配置参数

 

Recommendation表:记录推荐行为


userId:操作用户的Id

queriedItemId:查询itemId

queriedItemTypeId:查询item的类型Id

queriedAssocTypeId:查询关联类型Id

relatedActionTypeId:相关操作类型Id

recommendationStrategy:推荐策略


RecommendatinItem表:推荐的商品信息

recommendationId:推荐行为的Id

predictionValue:预期的推荐值

itemAssocId:关联itemid

 

以上只是对EasyRec的主要表结构做了一下分析,主要是为了帮助理解EasyRec的运行流程及数据模型。其他的表的详细信息可以看数据库表结构得知。

四、EasyRec扩展开发

个人任务,EasyRec的强大之处不仅是功能齐全,而且还提供了非常方便的扩展功能。

插件扩展:

第一步,编程实现自己的插件。需要实现EasyRec已经定义好的接口,这样才能让EasyRec能够识别自己实现的插件。

GeneratorConfiguration接口:插件配置接口

GeneratorStatistics接口:插件分析接口,实际工作接口

easyrec-plugin.xml:将插件申明成一个spring bean

第二步,测试实现的组件,保证其功能完整

第三部,上传安装插件:选择插件、安装组件


在学习easyrec推荐系统的过程中,有如下几个概念容易混淆:

1、tenant:用来标识一个网站。多个网站可以同时调用easyrec的API,依靠tenantID区分不同的网站。

2、user:用户,即实际的实施行为的对象。行为数据是由每个tenant上的许多users产生的。

3、item:项目,即待推荐的对象。具体到电影推荐系统中,就是指某一部电影。

4、cluster:类,即将相似的item放入一个类中。例如,在电影推荐系统中,将动作片归为一类,一个item可以同时属于多个类。

5、type:类型,包括项目类型(例如:动作片、爱情片、科幻片)、动作类型(例如:购买、评分、浏览)、关系类型(例如:同时购买的、好评的、相关的)

6、operator:管理员,管理多个tenant,以及不同推荐算法配置等等。



转自:http://blog.sina.com.cn/s/blog_86dad8bb0101nul1.html

http://blog.csdn.net/u011065164/article/details/51461763

http://01404421.iteye.com/blog/1131352

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
## 项目说明 FlyCms 是一个类似知乎以问答为基础的完全开源的JAVA语言开发的社交网络建站程序,基于 Spring Boot+Bootstrap3+MyBatis+MYSQL+Solr+Ehcache 应用架构,专注于社区内容的整理、归类和检索,它集合了问答,digg,wiki 等多个程序的优点,帮助用户轻松搭建专业的知识库和在线问答社区。 业务模块包括:权限管理,会员管理,角色管理,定时任务管理(调度管理),问答管理,文章管理,分享管理,短信接口管理和邮件系统发送(注册、找回密码、邮件订阅),跨域登录,消息推送,全文检索、前端国际化等等众多模块等您自己来体验! ##### 开放源码,便捷开发 基于Spring Boot版本开发,利用成熟开发技术,开放系统源码和开发文档,让二次开发更容易。 ##### 弹性设计,任性定制 UI设计简约又灵活, Bootstrap定制模板让用户自由发挥,让自己的社区更具独特个性。 ##### 管理后台,轻松掌控 管理后台功能实用简约,只需轻点功能开关,即可完成系统配置,属于你的知识社区一挥而就。 ##### 轻快智能,更懂社交 FlyCms比论坛更开放,比资讯网站更了解用户,以用户为中心,更懂社交,更注重内容的分析和分享。 ##### 用戶互助,精准推送 用户之间相互解答,分享产品使用心得,只向用户推送自己关心的消息,扩大价值,压缩干扰。 > 使用说明:请保留页面底部的 *powered by 28844. com* 感谢支持 在线地址: [28844.com](http://www.28844.com) | [文档地址](https://www.28844.com/) ## 技术栈 - JDK8 - Spring-Boot - MyBatis - Freemarker - MySQL - Bootstrap3 - Solr - Quartz - i18n - Ehcache ## 特性 - 社区兼容性(IE9+) - 页面自适应布局 - 本地登录,手机注册, 邮件注册 - 登录时有验证码,尝试登录次数的限制 - 使用 `Spring-Boot` 开发 - MyBatis操作数据库 - 目前sql语句只支持MySQL,如果要切换数据库,需要手动修改代码 - Solr提供搜索和前台部分页面列表查询和分页 ## 网站功能 ##### 前台功能 - 问答栏目,用户可发布奖励积分邀请回答问题 - 答案发布管理统计等等; - 文章栏目,专家专栏,后台设置专家组可发布专业性文章资讯 - 文章栏目可分类,文章栏目目前可无限极分类 - 分享栏目,用户可分享发布如百度网盘资源地址,电影地址等等,赚取积分 - 各个栏目话题聚合内容,话题可编辑删除,审核; - 用户个人首页,可查看自己关注的用户和自己发布的内容 - 用户内容收藏 - 用户积分管理充值 - 用户绑定手机号码 - 用户绑定邮箱地址 - 用户密码找回 - 用户手机号码注册,需后台绑定运营商API; - 用户邀请注册奖励 ##### 网站后台 - 网站运营基本信息编辑 - 用户注册相关信息管理 - 用户手机运营商信息管理(目前只支持阿里大鱼) - 网站发送邮箱绑定,邮箱模板设置 - 会员信息管理、审核 - 问答管理 - 答案管理 - 文章管理、文章分类 - 话题管理 - 分享管理 - 友情链接管理 - 积分奖励规则管理 - 违禁关键词、敏感词过滤设置 - 增加定时任务管理,通过后台设置启动、关闭,执行任务日志 #### 二次开发准备 1. 开发环境要在IDE里装上lombok插件,否则编译器会报错 2. 程序部署建议使用Maven的assembly插件实现自定义打包方式 3. 项目已经接入了solr,程序安装需要先运行solr,solr已调试好,可直接启动,使用方法可访问官网查看; 4. 项目用到了阿里大于jar包,Maven时无法使用,可以下载doc/dysmsapi.zip,然后放本地的Maven的.m2\repository\com\alibaba\aliyun\目录下 5. 搜索和首页列表后期大部分前台列表准备都使用solr,所以要先下载目录下的solr,然后运行后启动程序,不然报错! #### solr原来的目录里上传的时候jar文件无法上传,压缩后提示上传文件不能大于10MB ## 如果需要的话进群空间下载,QQ群:`211378508` ## Windows下solr启动 - 比如solr放E:/盘下面,首先打开CMD窗口 - `e: `回车 - `cd e:/solr/bin` 回车 - `solr start -p 8983` 回车,等待启动成功
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值