协同推荐系统简介
最近几年搜索引擎理念可谓渗入人心,对于互联网产品设计人员来说,张口必言搜索。同事基于搜索技术的各种产品也在Web2.0的浪潮下如雨后春笋,刷刷往 外冒。在这些林林总总的产品里面,几乎都能见到“ tag , 相关新闻, 相似产品 ” 类推荐链接的踪影。稍加留意这些产品的实现就可以发现,大多还是基于关键词的搜索机制实现的。很显然基于关键词技术的相关推荐是最直观的,似乎也是最有效 的一种实现方式,如同机枪中的AK-47,那他冲锋陷阵总是屡试不爽。
对于文字类产品的推荐,基于关键词的实现方式,目前还是主流;但在电子商务,智能阅读推荐,商务搜索方面单纯的关键字相关性实现机制还不那么让人满意,这也就有了协同推荐过滤系统。
Collaborative filtering 。
所谓协同推荐,很显然弥补了单纯依赖关键词相关性的不足,把获取相关性数据的视角放大到数据从产生到消费的各个环节。
有2种最基础类型的协同推荐系统:
1 基于当前活跃用户 和 上一个用户的相似性 来进行分析(一般是计算用户购买或者感兴趣的商品来进行);侧重于用户
2 基于当前用户选择(或感兴趣)的商品 和 上一个用户感兴趣的商品的相似性来进行分析;
这也就是大家所熟知的
user-based 和item-based协同推荐。
根据实现机制物理载体划分,以上两类协同推荐系统可以分为:内存型 和 模式型的协同推荐。一般内存型的都比较直观,适合于小型的数据集合,而模式型的一般都是利用 机器学习的方法,适用于大规模的数据分析,也可以称之为离线分析。模式型的是我比较关心的,因为做基于SEO的日志分析 ,比较适合。
我们在进行协同分析的时候,要考虑协同的意义。一般来说协同就是指多个用户或多个数据项的交叉作用。如果数据项较多的情况下,如何定义数据项的关系就是个重要问题了。
下面说一下协同系统的设计要素吧:
1 数据项 Item
2 项集合 ItemCollection
3 数据项的关系权重 DirectedEdge
4 数据项在数据集合中的存储方式
具体的算法实现过程,可以参考:
Beyond Search 的
推荐系统:关联规则(2)。我这里摘录如下:
Apriori 是一种广度优先算法,通过多次扫描数据库来获取支持度大于最小支持度的频繁项集。它的理论基础是频繁项集的两个单调性原则:频繁项集的任一子集一定是频繁 的;非频繁项集的任一超集一定是非频繁的。晦涩的理论我这里就不多写了,有兴趣的可以去看论文。我把里面的例子给翻译一下,图文并茂,简明易懂。
某数据库 DB 里有 4 条事务记录,取最小支持度(min support)为 0.5,则计算频繁项集的过程如下:
TID |
Items |
100 |
A, C, D |
200 |
B, C, E |
300 |
A, B, C, E |
400 |
B, E |
|
扫描DB |
Itemset |
Support |
{A} |
2 (0.5) |
{B} |
3 (0.75) |
{C} |
3 (0.75) |
{D} |
1 (0.25) |
{E} |
3 (0.75) |
|
取满足 最小支持度 项集 |
Itemset |
Support |
{A} |
2 |
{B} |
3 |
{C} |
3 |
{E} |
3 |
|
Itemset |
{A, B} |
{A, C} |
{A, E} |
{B, C} |
{B, E} |
{C, E} |
|
扫描DB |
Itemset |
Support |
{A, B} |
1 (0.25) |
{A, C} |
2 (0.5) |
{A, E} |
1 (0.25) |
{B, C} |
2 (0.5) |
{B, E} |
3 (0.75) |
{C, E} |
2 (0.5) |
|
取满足 最小支持度 项集 |
Itemset |
Support |
{A, C} |
2 |
{B, C} |
2 |
{B, E} |
3 |
{C, E} |
2 |
|
Itemset |
{A, B, C} |
{A, B, E} |
{A, C, E} |
{B, C, E} |
|
扫描DB |
Itemset |
Support |
{A, B, C} |
1 (0.25) |
{A, B, E} |
1 (0.25) |
{A, C, E} |
1 (0.35) |
{B, C, E} |
2 (0.5) |
|
取满足 最小支持度 项集 |
Itemset |
Support |
{B, C, E} |
2 (0.5) |
|
如上可以看出,在海量数据的情况下,Apriori 算法的运算过程有 2 个问题:
- 需要多次扫描数据库,时间成本很高;
- 运算过程中需要产生大量的候选集,空间成本也非常高。
针对 Apriori 算法所做的改进也基本上是围绕着解决这两个问题进行的,如在扫描DB前首先进行以便事务合并和压缩,数据分区或抽样等。
Weka 里有 Apriori 算法的 Java 实现,非常值得一看。
推荐阅读:协同过滤(Collaborative Filtering)
分享到:
相关推荐
基于SSM(Spring+SpringMVC+MyBatis)和Vue.js的协同过滤算法电影推荐系统是一个利用用户历史观影记录和评分数据,通过协同过滤算法来预测用户可能喜欢的电影的系统。该系统主要由以下几个模块组成: 用户管理模块:...
信呼协同办公系统简介 信呼协同办公系统是开源的一款办公系统,跨平台的系统,支持APP,pc网页版,pc客户端等。 1、让每个企业单位都有自己的工作系统。 2、移动,免费开源工作系统,数据全部自己管理。 3、...
基于ssm基于协同过滤算法的图书推荐系统(源码 + 说明文档) 2系统相关技术介绍 5 2.1 Java介绍 5 2.2 SSM框架 6 2.3 Mysql数据库 6 2.4MySQL环境配置 6 2.5协同过滤算法简介 7 2.6B/S架构 7 3系统分析与设计 8 3.1...
- **简介**:BizBPMS是KingHe公司推出的一款业务流程管理套件,旨在为企业提供一个集成了业务流程管理和协同办公功能的综合平台。 - **特点介绍** - **强大的流程设计工具**:BizBPMS内置了BizFlowModeller,这是一...
【华天动力协同OA系统】是一款由大连华天软件有限公司研发的专业协同办公系统,旨在帮助企业构建高效、灵活的管理信息平台。该系统采用先进的技术架构,包括基于数据库的CACHE缓存技术和基于页面的PAGE CACHE服务器...
信呼协同办公系统是开源的一款办公系统,跨平台的系统,支持APP,pc网页版,pc客户端等。 简介: 1、让每个企业单位都有自己的工作系统。 2、移动,免费开源工作系统,数据全部自己管理。 3、自定义管理应用,模块...
项目简介:本项目是一款基于协同过滤算法构建的电影推荐平台,旨在为用户提供个性化的电影推荐服务。 技术栈: - 主要语言:Java - 辅助技术:JavaScript, CSS 文件构成: - 总文件数:76个 - Java源文件:38个 ...
然之协同管理系统简介 然之协同管理系统由客户管理(crm)、日常办公(oa)、现金记账(cash)、团队分享(team)和应用导航(ips)五大模块组成,主要面向中小团队的企业内部管理。和市面上其他的产品相比,然之协同更专注于...
【淘宝推荐系统简介】 在电子商务领域,推荐系统已经成为提高用户购物体验、促进商品销售的关键技术。淘宝推荐系统作为阿里巴巴集团的重要组成部分,它通过分析用户的购物行为、浏览历史、搜索记录等多维度数据,为...
项目简介:本源码为基于Springboot和Vue构建的化妆品协同过滤推荐系统,采用前后端分离的设计模式。该项目主要以Java为开发语言,辅以JavaScript、CSS和HTML等技术。整个项目包含1467个文件,其中包括634个gif动画、...
在推荐系统中,协同过滤算法是一种非常流行且有效的推荐技术,主要分为基于用户的协同过滤算法和基于物品的协同过滤算法。 1. 协同过滤算法简介: 协同过滤的基本思想是通过收集和分析用户的行为信息,找出与目标...
项目简介:本项目采用Java语言实现了一套融合多种推荐算法的系统。该系统深入结合用户与物品协同过滤、标签推荐及潜在因子分析技术,以提供更为精准的个性化推荐服务。项目文件总计111个,主要包括76个Java源代码...
**基于 Mahout 实现协同过滤推荐算法的电影推荐系统** 是一套完整的学习和开发资源,旨在帮助用户使用 Apache Mahout 构建一个功能完善的电影推荐系统。Mahout 是一个高效的机器学习库,专注于大规模数据的推荐、...
《基于Python的协同过滤图书推荐系统》 1 绪论 1.1 研究背景 在信息爆炸的时代,用户面临着海量的图书资源选择困难,如何从众多图书中找到符合个人兴趣的书籍成为了一个挑战。传统的图书推荐方式依赖于人工编辑的...
同时,系统提供的任务管理和异常状况监控功能,使得问题处理更为及时,增强了协同工作的效率。 Guru SRM协同采购平台通过提供这样一个统一的在线平台,不仅简化了供应链管理的复杂性,也强化了企业与供应商间的沟通...
推荐系统的核心算法包括基于内容的推荐、协同过滤(Collaborative Filtering, CF)、混合推荐等。基于内容的推荐主要依赖于用户过去的消费记录和项目本身的属性,通过比较项目之间的相似性来做出推荐。而协同过滤,...
项目名称:MovieRecommender - 基于Mahout的协同过滤电影推荐系统 项目简介: MovieRecommender是一个基于Apache Mahout库构建的电影推荐系统,采用协同过滤算法为用户提供个性化的电影推荐。该系统主要由Java语言...
《基于协同过滤算法的推荐系统》 推荐系统已经成为现代电子商务领域不可或缺的一部分,旨在解决信息过载问题,提高用户满意度和购买率。协同过滤算法作为推荐系统中最常用的技术之一,其核心理念是通过发现用户之间...