随着互联网的迅速发展,接入互联网的网页与服务器数量也以指数形式迅猛增长。互联网的发展,使得海量信息以飞快的更新速度在我们眼前不断呈现。例如,卓越亚马逊上存在着上千万的图书,NetFlix上有数万部电影。如此众多的信息,遍历一遍都变得十分艰难,更何况要在其中找到自己感兴趣的部分。传统的搜索策略,为每个用户的相同查询提供完全相同的搜索结果,无法针对不同用户的个人需求提供个性化服务。信息爆炸增长反而使信息的获取效率变低了。这种现象被称为信息过载。如今有效解决信息过载的工具之一便是个性化推荐。推荐问题从根本上来说就是“代替用户评估它从未看过的产品”[1-5]。这些产品包括书、电影、CD、网页、甚至可以是饭店、音乐、绘画等等——是一个从已知到未知的过程。

1    推荐问题的定义

假设C是用户集合,S是所有可能被推荐的条目的集合。那么我们可以在用户集合和条目集合的笛卡尔乘积之上定义一个效用函数u,来衡量条目s对用户c的有用程度,比如:푢:퐶×푆→푅,其中R是一个良序集(例如一定范围内的实数或者非负整数),那么对于任意用户푐∈퐶,我们需要选择条目푠'∈푆从而最大化用户的效用值,也就是说:

其示意图见图1

Figure 1. Illustration of Recommendation Algorithm

图1 推荐算法示意图

在一般的推荐系统中,效用值通常用用户评分或者是标记喜欢与否来衡量。但从原始的形式化定义出发,这个效用函数可以是任意形态,比如用户点击、收藏,或停留时间、回访,甚至是网站的销量、利润等,只要它满足效用函数的基本性质(可加性、传递性和三角不等式)。在这样的问题定义框架下,推荐问题转化为优化问题,个性化推荐算法的选择与推荐问题本身相互解耦。

我们只需关心算法对解决问题的效果和算法本身的效率,从而在最大程度上体现了对算法的包容性,各式各样的算法都可以在统一的框架下为最终的优化目标充分展开竞争。

2    推荐算法的分类及介绍

过去20年,个性化推荐算法得到长足的发展和进步。自从20世纪90年代中期第一篇系统介绍协同过滤算法的论文发表以来,针对个性化推荐系统的算法优化,学术界和工业界的研究学者和实践者们从不同的领域出发,提出了各种模型和解决方案。

粗略统计,所涉及到的学科包括人工智能、机器学习、认知科学、信息抽取、数据挖掘、预测理论、近似理论,甚至是管理科学、市场营销和心理学。所使用的算法除了传统的协同过滤,还包括图模型(Graph Model)、矩阵分解(Matrix Factorization)、奇异值分解(SVD,SingularValue Decomposition)、链接分析(Link Analysis)、回归分析(Regression Analysis),以及机器学习领域各种分类和学习算法。

Table 1 Categories of Recommendation Algorithm

表1 推荐算法分类

个性化推荐算法分类

启发式算法

基于模型

基于内容

TF-IDF

聚类

最大熵

相似度度量

贝叶斯分类

决策树

神经网络

专家系统

知识推理

协同过滤

K近邻

聚类

链接分析

关联规则

相似度度量

贝叶斯分类

决策树

神经网络

矩阵分解

概率模型

图模型

Boosting

Topic Model

回归分析

混合式

线性组合

投票机制

meta-heuristics

Ensemble

统一推荐框架

早期的推荐系统文献中一般从所选取的角度和所采用的技术两个不同的维度对个性化推荐算法进行划分。从选取的角度不同,可以分为基于内容的算法、协同过滤算法,以及混合式算法三大类。从具体技术角度,可以分为基于内存(Memory-based)的算法和基于模型(Model based)的算法两种形式。

2.1   基于内容的算法

基于内容的推荐是从信息抽取领域自然而然发展起来的一类算法,其出发点是在对文本信息和条目元信息进行整理、建模的基础上,针对用户的不同兴趣偏好进行推送。

最初,基于内容的推荐其实是协同过滤的衍生。他不依赖于用户对产品的评价,而是根据用户所选择的产品内容信息计算用户之间的相似度进行推荐的。基于内容的算法根本在于信息获取和信息过滤。因为在文本信息获取与过滤方面较为常数,现有很多基于内容的推荐系统都是通过分析产品的文本信息进行推荐。

在信息抽取领域,最常用的文本抽取方法便是TF-IDF方法:

假设有N个文本文件,关键词푘在푛个文件中出现,设푓푖푗为关键词푘在文件푑中出现的次数,那么푘在푑中的词频푇퐹푖푗定义为:

其中分母的最大值可以通过计算푑中所有关键词푘的频率得到。

在许多文件中同时出现的关键词对于表示文件的特性, 区分文件的关联性是没有贡献的. 因此TFij与这个关键词在文件中出现数的逆( IDFi ) 一起使用, IDFi的定义为:

文件dj可表示成向量:

其中:

这样,用户的配置文件和产品都可以表示成TD-IDF模型,通过计算两者的相关度进行推荐:

rc,s可以用二者的余弦相似度计算,如:

2.2   基于协同过滤的算法

与基于内容的推荐相对应,协同过滤推荐并不关心条目的具体属性,而是对用户群整体的评分信息进行整理和建模,根据用户行为找出口味相似的用户群或者风格类似的条目,在此基础上进行推荐。

协同过滤算法的核心思想是,先根据用户的历史信息计算用户间的相似度,再根据相似用户的喜好,为邻居用户推荐类似的产品。协同过滤最大特点是对产品格式没有特殊要求,可以处理难以文本化的产品如音乐、视频等。

协同过滤可以分为基于记忆的和基于模型的算法。

基于记忆的算法会根据目前系统中所有打过分的产品进行预测。这一类算法不需要预先训练模型,只需定期对评分数据进行预处理,比如计算用户或条目的相似性,在给用户进行推荐时,整个过程都可以在内存中完成。我们所熟知的基于余弦相似和K近邻的标准协同过滤算法就属于这个范畴,此外还有各种利用聚类做推荐的算法、关联规则、链接分析等。由于这类算法更多强调规则而非模型,有时也把基于内存的算法称为启发式推荐算法。

基于模型的推荐算法则有一个独立的模型训练阶段,利用全体或部分评分数据训练一个模型,这一步一般是离线完成的,在线推荐时则林勇训练好的模型实时做出相应。在这个框架下,可以利用人工智能和机器学习领域多年研究的各种模型和成果,算法的设计和实现过程要更加规范。

3    推荐算法的评价方法

现有的推荐系统中,大都使用准确度评价算法的优劣。假设用户可以浏览所有产品条目,并根据自身兴趣爱好对所浏览的产品进行偏好的排序。这样,用户对产品做出的排名与推荐算法预测到的产品排序之间的贴近程度即可定义为准确度。由于系统形式千差万别,因此评价指标难以标准化,在不同系统之间做出比较是很困难的。针对目前不同的系统,已有的准确度指标有:预测准确度、分类准确度、排序准确度、预测打分关联、距离标准化指标和半衰期效用指标。

3.1   预测准确度

预测准确度考虑推荐算法的预测打分与用户实际打分的相似程度。预测准确度的一个经典度量方法是度量系统的预测打分与用户的实际打分的平均绝对误差(Mean Absolute Error)。

其中,c为系统中用户i打分产品的个数,为用户的实际打分,为系统的预测打分。

这种方法有两个优点:一是计算方法比较简单,便于直观上的理解;二是对于不同的系统,其平局绝对误差是不同的,从而能区别不同系统的绝对误差。

除了平均绝对误差之外,还有平均平方误差(Mean Square Error)和标准平均绝对误差(NormalizedMean Absolute Error)等方法。其中,平均平方误差定义如下:

其中,为系统中用户一产品对的个数。在平局平方误差计算中,预测打分与实际打分作差之后还有一个平方操作,这样打分误差的影响会比平局绝对误差大。

3.2   分类准确度

分类准确度定义为推荐算法对一个产品用户是否喜欢判定正确的比例。因此,当用户只有二元选择时,用分类准确度进行评价较为合适。而且这种方法受打分稀疏性的影响。虽然目前有一些方法处理打分稀疏性问题,但效果并不理想。

另一种广泛应用的分类准确度指标为准确率、召回率以及相关指标。但准确率和召回率的计算又成了另一个新的问题。另外一个度量系统分类准确度的重要指标就是ROC曲线。

4    总结

个性化推荐问题是个系统性问题,设计多个学科,个性化推荐算法也可以包罗万象。相关领域的新进展,对用户行为的洞察,一个新的想法,都可以成为新的个性化推荐算法的基础。在工业界的时间领域,则不必纠结于算法种类上的划分或学科间的门户之见,但了解前人的工作,深入理解算法的理论来源和数学基础,无疑是有助于算法的改进和效果的提升。新的理论层出不穷,新的算法也是百花怒放,把无助基础和根本,使用效果来检验,方可立于不败之地。

转载至:http://blog.sciencenet.cn/blog-795423-702315.html

个性化推荐算法 综述相关推荐

  1. 个性化推荐算法实战第01章个性化推荐算法综述

    文章目录 个性化推荐算法实战第01章个性化推荐算法综述 1.什么是推荐系统? 2.个性化推荐算法在系统中所起到的作用 3.如何衡量个性化推荐算法在产品中起到的作用 4.推荐算法介绍 5.评估指标: 个 ...

  2. 基于隐语义模型的个性化推荐算法综述-笔记整理

    1. 前期知识 均方根值(RMS)+ 均方根误差(RMSE)+标准差(Standard Deviation) 1.均方根值(RMS)也称作为效值,它的计算方法是先平方.再平均.然后开方. 2.均方根误 ...

  3. Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户.物品的协同过滤推荐算法 个性化推荐算法.机器学习.分布式大数据.人工智能开发 FoodRecom ...

  4. Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 ShopRec ...

  5. 在线新闻推荐网 Python+Django+Mysql开发技术 基于用户、物品的协同过滤推荐算法 个性化新闻推荐系统 协同过滤推荐算法在新闻网站中的运用 个性化推荐算法、机器学习、分布式大数据、人工智

    在线新闻推荐网 Python+Django+Mysql开发技术 基于用户.物品的协同过滤推荐算法 个性化新闻推荐系统 协同过滤推荐算法在新闻网站中的运用 个性化推荐算法.机器学习.分布式大数据.人工智 ...

  6. 在线图书推荐网 Python+Django+Mysql开发技术 个性化图书推荐系统 协同过滤推荐算法在图书网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智

    在线图书推荐网 Python+Django+Mysql开发技术 个性化图书推荐系统 协同过滤推荐算法在图书网站中的运用 基于用户.物品的协同过滤推荐算法 个性化推荐算法.机器学习.分布式大数据.人工智 ...

  7. 在线电影推荐网 使用Python+Django+Mysql开发技术 在线电影推荐系统 电影网站推荐系统 基于用户、物品的协同过滤推荐算法 个性化推荐算法开发 机器学习、人工智能、大数据分布式开发

    在线电影推荐网 使用Python+Django+Mysql开发技术 在线电影推荐系统 电影网站推荐系统 基于用户.物品的协同过滤推荐算法 个性化推荐算法开发 机器学习.人工智能.大数据分布式开发 Mo ...

  8. 如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 组合、混合推荐算法FoodRecommendSystem

    如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 组合.混合推荐算法FoodRecommendSystem ...

  9. 基于内容的推荐算法的php实现,基于内容的个性化推荐算法

    摘要:个性化推荐算法有许多类别,主要包括基于内容的推荐.协同过滤.SVD.基于知识的推荐以及混合推荐算法.本文介绍基于内容的推荐算法(Content-basedRecommendation).基于内容 ...

最新文章

  1. c语言实现线性结构(数组与链表)
  2. 猴子选王c语言链表程序代码,c/c++编程题 之 猴子选大王(数组、链表两种方法)...
  3. Linux : find big file in the all directories
  4. 中文名称:程序员杂志2007精华本及附赠DVD光盘
  5. Windows OS上安装运行Apache Kafka教程
  6. Linux之nc命令
  7. 数据之路 - Python爬虫 - 免费代理
  8. 利用vs 分析DMP文件、pdb文件定位release下的异常崩溃
  9. 通过【Windows10安装程序---MediaCreationTool】来制作并安装Win10正式版
  10. Arduino+SIM900A+继电器
  11. java 实现将Object类型转换为int类型
  12. 洛谷P1724 东风谷早苗
  13. HDU 4565 (构造共轭函数+矩阵快速幂)
  14. 计算机黑屏然后蓝屏怎么办,突然蓝屏死机开机黑屏怎么办_蓝屏之后重启屏幕黑屏的解决方法...
  15. 华为p4不是鸿蒙吗怎么又改为安卓_华为鸿蒙系统不是为华为手机设计的 华为手机将继续使用安卓...
  16. 【转载】Aquanaut:水下变形金刚
  17. 计算机管理文件破坏怎么办,文件损坏,教您电脑文件损坏怎么修复
  18. 宏文件下载_EPLAN~宏资源获取
  19. java实现将数据生成图表至excel导出(包括折线图,柱状图,饼状图)
  20. delphi 控件大全(确实很全)

热门文章

  1. python wordcloud mask_python通过wordcloud绘制词云
  2. render_template
  3. 高斯分解LU矩阵之MATLAB实现
  4. Android 11源码——安全策略SELinux关闭
  5. 「镁客·请讲」华科创智喻东旭:纳米银线最终将带来移动终端的革命
  6. 单行文本 判断是不是溢出
  7. uniapp选择地址加模糊查询
  8. 图像检测:图像特征与描述
  9. 【分享】FD js本地调试文件替换后CROS跨域错误
  10. FANUC机器人的通讯方式(1)