文档章节

推荐算法概述:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法

xiaomin0322
 xiaomin0322
发布于 06/20 15:33
字数 2305
阅读 17
收藏 2
点赞 0
评论 0

所谓推荐算法就是利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西。推荐算法主要分为两种

1. 基于内容的推荐

     基于内容的信息推荐方法的理论依据主要来自于信息检索和信息过滤,所谓的基于内容的推荐方法就是根据用户过去的浏览记录来向用户推荐用户没有接触过的推荐项。主要是从两个方法来描述基于内容的推荐方法:启发式的方法和基于模型的方法。启发式的方法就是用户凭借经验来定义相关的计算公式,然后再根据公式的计算结果和实际的结果进行验证,然后再不断修改公式以达到最终目的。而对于模型的方法就是根据以往的数据作为数据集,然后根据这个数据集来学习出一个模型。一般的推荐系统中运用到的启发式的方法就是使用tf-idf的方法来计算,跟还有tf-idf的方法计算出这个文档中出现权重比较高的关键字作为描述用户特征,并使用这些关键字作为描述用户特征的向量;然后再根据被推荐项中的权重高的关键字来作为推荐项的属性特征,然后再将这个两个向量最相近的(与用户特征的向量计算得分最高)的项推荐给用户。在计算用户特征向量和被推荐项的特征向量的相似性时,一般使用的是cosine方法,计算两个向量之间夹角的cosine值。

 

2.基于协同过滤的推荐

    基于协同过滤的推荐算法理论上可以推荐世界上的任何一种东西。图片、音乐、样样可以。 协同过滤算法主要是通过对未评分项进行评分 预测来实现的。不同的协同过滤之间也有很大的不同。

    基于用户的协同过滤算法: 基于一个这样的假设“跟你喜好相似的人喜欢的东西你也很有可能喜欢。”所以基于用户的协同过滤主要的任务就是找出用户的最近邻居,从而根据最近邻 居的喜好做出未知项的评分预测。这种算法主要分为3个步骤:

     一,用户评分。可以分为显性评分和隐形评分两种。显性评分就是直接给项目评分(例如给百度里的用户评分),隐形评分就是通过评价或是购买的行为给项目评分 (例如在有啊购买了什么东西)。

    二,寻找最近邻居。这一步就是寻找与你距离最近的用户,测算距离一般采用以下三种算法: 1.皮尔森相关系数。 2.余弦相似性。 3调整余弦相似性。 调整余弦 相似性似乎效果会好一些。

    三,推荐。产生了最近邻居集合后,就根据这个集合对未知项进行评分预测。把评分最高的N个项推荐给用户。 这种算法存在性能上的瓶颈,当用户数越来越多的时候,寻找最近邻居的复杂度也会大幅度的增长。

     因而这种算法无法满足及时推荐的要求。基于项的协同过滤解决了这个问题。 基于项的协同过滤算法 根基于用户的算法相似,只不过第二步改为计算项之间的相似度。由于项之间的相似度比较稳定可以在线下进行,所以解决了基于用户的协同过滤算法存在的性能瓶 颈。

 

3.基于关联规则推荐

     基于关联规则的推荐(Association Rule-based Recommendation)是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会同时购买面包。

算法的第一步关联规则的发现最为关键且最耗时,是算法的瓶颈,但可以离线进行。其次,商品名称的同义性问题也是关联规则的一个难点。

 

4.基于效用推荐

    基于效用的推荐(Utility-based Recommendation)是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性(Vendor Reliability)和产品的可得性(Product Availability)等考虑到效用计算中。

 

5.基于知识的推荐

    基于知识的推荐(Knowledge-based Recommendation)在某种程度是可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的。基于知识的方法因它们所用的功能知识不同而有明显区别。效用知识(Functional Knowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。

6.组合推荐

   由于各种推荐方法都有优缺点,所以在实际中,组合推荐(Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通过组合后要能避免或弥补各自推荐技术的弱点。

在组合方式上,有研究人员提出了七种组合思路:
   1)加权(Weight):加权多种推荐技术结果。
2)变换(Switch):根据问题背景和实际情况或要求决定变换采用不同的推荐技术。
3)混合(Mixed):同时采用多种推荐技术给出多种推荐结果为用户提供参考。
4)特征组合(Feature combination):组合来自不同推荐数据源的特征被另一种推荐算法所采用。
5)层叠(Cascade):先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。
6)特征扩充(Feature augmentation):一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。
7)元级别(Meta-level):用一种推荐方法产生的模型作为另一种推荐方法的输入。

 

主要推荐方法的对比

各种推荐方法都有其各自的优点和缺点,见表1。

表1 主要推荐方法对比

推荐方法 优点 缺点
基于内容推荐        推荐结果直观,容易解释;                 

 

不需要领域知识

新用户问题;                         

 

复杂属性不好处理;

要有足够数据构造分类器

协同过滤推荐 新异兴趣发现、不需要领域知识;

 

随着时间推移性能提高;

推荐个性化、自动化程度高;

能处理复杂的非结构化对象

稀疏问题;

 

可扩展性问题;

新用户问题;

质量取决于历史数据集;

系统开始时推荐质量差;

基于规则推荐 能发现新兴趣点;

 

不要领域知识

规则抽取难、耗时;

 

产品名同义性问题;

个性化程度低;

基于效用推荐 无冷开始和稀疏问题;

 

对用户偏好变化敏感;

能考虑非产品特性

用户必须输入效用函数;

 

推荐是静态的,灵活性差;

属性重叠问题;

基于知识推荐 能把用户需求映射到产品上;

 

能考虑非产品属性

知识难获得;

 

推荐是静态的

本文转载自:https://blog.csdn.net/u011630575/article/details/78648868

共有 人打赏支持
xiaomin0322
粉丝 82
博文 3458
码字总数 140043
作品 0
上海
架构师
各大平台的推荐系统原来是靠他来完成的,太牛了

1. 推荐系统概述 电子商务网站是个性化推荐系统重要地应用的领域之一,亚马逊就是个性化推荐系统的积极应用者和推广者,亚马逊的推荐系统深入到网站的各类商品,为亚马逊带来了至少30%的销售...

h8b6pk7m7r8
2017/11/30
0
0
各大平台的推荐系统原来是靠他来完成的,太牛了

1. 推荐系统概述 电子商务网站是个性化推荐系统重要地应用的领域之一,亚马逊就是个性化推荐系统的积极应用者和推广者,亚马逊的推荐系统深入到网站的各类商品,为亚马逊带来了至少30%的销售...

h8b6pk7m7r8
2017/11/27
0
0
推荐系统基础知识储备

1 推荐系统基础 1.1 个性化推荐概述 1.1.1 推荐系统概述 首先,需要申明一点的就是推荐系统!=推荐算法。推荐系统是一套完善的推荐机制,包括前期数据的准备、具体推荐的过程(这个过程可能是...

流川枫AI
2016/10/17
0
0
推荐算法概览

推荐算法概览(一) 为推荐系统选择正确的推荐算法非常重要,而可用的算法很多,想要找到最适合所处理问题的算法还是很有难度的。这些算法每种都各有优劣,也各有局限,因此在作出决策前我们...

hblt-j
01/23
0
0
推荐系统-初识

推荐系统可认为是一种特殊形式的信息过滤(Information Filtering)系统,主要有“协同过滤推荐”、“基于内容的推荐”、“基于关联规则的推荐”、“基于知识推理的推荐”、“组合推荐”这几...

whk66668888
2017/10/31
0
0
推荐算法综述

1. 前言 随着移动互联网技术和社交网络的发展,每天都有大量包括博客,图片,视频,微博等等的信息发布到网上。我们正处于大数据的时代,传统的信息检索技术已经不能满足用户对信息发现的需求...

u013709270
2017/11/24
0
0
系列学习——推荐算法综述

作者:章华燕 编辑:祝鑫泉 随着移动互联网技术和社交网络的发展,每天都有大量包括博客,图片,视频,微博等等的信息发布到网上。我们正处于大数据的时代,传统的信息检索技术已经不能满足用...

u013709270
01/01
0
0
实时推荐系统的3种方式

推荐系统介绍 自从1992年施乐的科学家为了解决信息负载的问题,第一次提出协同过滤算法,个性化推荐已经经过了二十几年的发展。1998年,林登和他的同事申请了“item-to-item”协同过滤技术的...

-_-一条狗
2016/02/24
102
0
推荐系统--基于用户的协同过滤算法

概述 和搜索引擎一样,推荐系统是为了帮助人们更快速的获得对自己有用的信息。 和搜索引擎不同,推荐系统是人们被动的获取,由系统根据用户行为或其他的信息推荐给用户的,儿搜索引擎是用户主...

欣儿
2014/05/16
0
0
《Python机器学习算法》PDF

下载链接: https://pan.baidu.com/s/127BE89PmeSqsgjQYHFPzDQ 密码: 7dkh 出版社: 电子工业出版社; 第1版 (2017年7月1日) 外文书名: Machine Learning Algorithm 平装: 343页 语种: 简体中文...

sinat_33899729
05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
26分钟前
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
59分钟前
0
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
6
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部