http://blog.jobbole.com/72373/
在推荐系统简介中,我们给出了推荐系统的一般框架。很明显,推荐方法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐和组合推荐。
一、基于内容推荐
基 于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象 的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。 基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。
基于内容推荐方法的优点是:
1)不需要其它用户的数据,没有冷开始问题和稀疏问题。
2)能为具有特殊兴趣爱好的用户进行推荐。
3)能推荐新的或不是很流行的项目,没有新项目问题。
4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。
5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。
缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。
二、协同过滤推荐
协 同过滤推荐(Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后 利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优 点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。
协 同过滤是基于这样的假设:为一用户找到他真正感兴趣的内容的好方法是首先找到与此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给此用户。其基本 思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到电子商务推荐系统中来,基于其他用户对某一内 容的评价来向目标用户进行推荐。
基于协同过滤的推荐系统可以说是从用户的角度来进行相应推荐的,而且是自动的,即用户获得的推荐是系统从购买模式或浏览行为等隐式获得的,不需要用户努力地找到适合自己兴趣的推荐信息,如填写一些调查表格等。
和基于内容的过滤方法相比,协同过滤具有如下的优点:
- 1) 能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等。
- 2) 共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。
- 3) 有推荐新信息的能力。可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的。这也是协同过滤和基于内容的过滤一个较大的差别,基于内容的过滤推荐很多都是用户本来就熟悉的内容,而协同过滤可以发现用户潜在的但自己尚未发现的兴趣偏好。
- 4) 能够有效的使用其他相似用户的反馈信息,较少用户的反馈量,加快个性化学习的速度。
虽然协同过滤作为一种典型的推荐技术有其相当的应用,但协同过滤仍有许多的问题需要解决。最典型的问题有稀疏问题(Sparsity)和可扩展问题(Scalability)。
三、基于关联规则推荐
基 于关联规则的推荐(Association Rule-based Recommendation)是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零 售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购 买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会同时购买面包。
算法的第一步关联规则的发现最为关键且最耗时,是算法的瓶颈,但可以离线进行。其次,商品名称的同义性问题也是关联规则的一个难点。
四、基于效用推荐
基 于效用的推荐(Utility-based Recommendation)是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大 程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性(Vendor Reliability)和产品的可得性(Product Availability)等考虑到效用计算中。
五、基于知识推荐
基 于知识的推荐(Knowledge-based Recommendation)在某种程度是可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的。基于知识的方法因 它们所用的功能知识不同而有明显区别。效用知识(Functional Knowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以 是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。
六、组合推荐
由 于各种推荐方法都有优缺点,所以在实际中,组合推荐(Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法 去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通 过组合后要能避免或弥补各自推荐技术的弱点。
在组合方式上,有研究人员提出了七种组合思路:
- 1)加权(Weight):加权多种推荐技术结果。
- 2)变换(Switch):根据问题背景和实际情况或要求决定变换采用不同的推荐技术。
- 3)混合(Mixed):同时采用多种推荐技术给出多种推荐结果为用户提供参考。
- 4)特征组合(Feature combination):组合来自不同推荐数据源的特征被另一种推荐算法所采用。
- 5)层叠(Cascade):先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。
- 6)特征扩充(Feature augmentation):一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。
- 7)元级别(Meta-level):用一种推荐方法产生的模型作为另一种推荐方法的输入。
七、主要推荐方法的对比
各种推荐方法都有其各自的优点和缺点,见表1。
表1 主要推荐方法对比
|
||
推荐方法
|
优点
|
缺点
|
基于内容推荐
|
推荐结果直观,容易解释;
不需要领域知识
|
稀疏问题;新用户问题;
复杂属性不好处理;
要有足够数据构造分类器
|
协同过滤推荐
|
新异兴趣发现、不需要领域知识;
随着时间推移性能提高;
推荐个性化、自动化程度高;
能处理复杂的非结构化对象
|
稀疏问题;
可扩展性问题;
新用户问题;
质量取决于历史数据集;
系统开始时推荐质量差;
|
基于规则推荐
|
能发现新兴趣点;
不要领域知识
|
规则抽取难、耗时;
产品名同义性问题;
个性化程度低;
|
基于效用推荐
|
无冷开始和稀疏问题;
对用户偏好变化敏感;
能考虑非产品特性
|
用户必须输入效用函数;
推荐是静态的,灵活性差;
属性重叠问题;
|
基于知识推荐
|
能把用户需求映射到产品上;
能考虑非产品属性
|
知识难获得;
推荐是静态的
|
相关推荐
嵌入式系统软件设计中的常用算法(完整版)
在电商推荐系统中,算法 Ensemble是一个常见的技术。算法 Ensemble是指将多种推荐算法结合起来,以提高推荐的准确性和多样性。例如,可以使用协同过滤算法和基于内容的算法结合,以推荐更多样化的商品。 电商推荐...
### 嵌入式系统软件设计中的常用算法 #### 一、引言 随着嵌入式系统的广泛应用,软件设计在嵌入式系统开发中的地位变得日益重要。由于大多数从事嵌入式系统开发的技术人员并非计算机专业出身,他们在软件设计方面...
### 嵌入式系统软件设计中的常用算法 #### 知识点概述 本文将详细介绍嵌入式系统软件设计中常用的几种算法,并结合具体应用场景进行分析。这些算法包括但不限于数值计算、逻辑运算、数据结构处理等方面,对于提高...
这本书详细介绍了嵌入式系统软件设计中常用的算法,覆盖了从基础到高级的各种算法,包括但不限于线性方程组求解、代数插值和曲线拟合、数值积分、能谱处理、数字滤波、数理统计、自动控制、数据排序、数据压缩、检错...
《嵌入式系统软件设计中的常用算法》是周航慈所著的一本针对嵌入式领域初学者的重要教材。该书全面介绍了在嵌入式系统软件设计中不可或缺的各种算法,帮助读者深入理解并掌握这些算法在实际应用中的作用和实现方式。...
嵌入式系统软件设计中的常用算法涵盖了多个与嵌入式编程和系统优化相关的数学与计算机科学领域,本书旨在为嵌入式系统开发人员提供一本易于理解且实用的算法参考书。在嵌入式系统开发中,软件设计水平对产品的功能和...
协同过滤(Collaborative Filtering,简称CF)是推荐系统中常用的一种方法,它主要基于用户行为数据来预测用户可能的兴趣。该算法分为用户-用户协同过滤和物品-物品协同过滤两种类型。在本项目中,我们采用的是用户-...
本文将深入探讨“常见算法”,包括它们的基本概念、类型以及在实际应用中的作用。 一、算法基本概念 算法是一系列精确的指令,用于解决特定问题或执行特定任务。它由一组有限的步骤组成,这些步骤必须是明确的、可...
这个“操作系统常见算法算法演示”的资源,通过视觉化的方式,有助于理解这些复杂概念,使学习者能够更直观地看到这些算法在实际操作中的运行情况,对于理论学习和实验实践具有极大的帮助。无论是初学者还是深入研究...
1. **协同过滤算法**:协同过滤是推荐系统中最常用的一种算法,它主要基于用户的历史行为数据来预测用户可能的兴趣。系统中,协同过滤分为用户-用户协同过滤和物品-物品协同过滤两种类型。用户-用户协同过滤通过找出...
基本内容有:线性方程组求解、代数插值和曲线拟合、数值...从嵌入式系统的实际应用出发,用通俗易懂的语言代替枯燥难懂的数学推导,使读者能在比较轻松的条件下学到最基本的常用算法,并为继续学习其他算法打下基础。
协同过滤算法是推荐系统中常用的一种技术,尤其在电影推荐领域有着广泛的应用。协同过滤的基本思想是通过分析用户的历史行为,如对电影的评分,来推测用户未来可能的兴趣。它分为基于用户(User-Based)和基于物品...
这份50页的干货文档涵盖了多个常用的推荐算法,旨在帮助读者深入理解和掌握这些算法的原理与应用。以下是对这些算法的详细介绍: 1. **协同过滤**:协同过滤是最为常见的推荐系统方法,分为用户-用户协同过滤和物品...
最佳适配、最坏适配和首次适配是用于内存分配的常见算法,它们在动态内存分配中起作用,帮助有效地使用内存空间。 3. **磁盘调度算法**:磁盘调度负责决定磁头的移动顺序,以减少平均寻道时间。FCFS(先来先服务)...