推荐算法概述(01)

1.什么是推荐系统

用户没有明确的需求,你需要的是一个自动化的工具,它可以分析你的历史兴趣,从庞大的电影库中找到几部符合你兴趣的电影供你选择。这个工具就是个性化推荐系统。

推荐系统的主要任务
推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢
推荐系统与搜索引擎的区别
和搜索引擎一样,推荐系统也是一种帮助用户快速发现有用信息的工具。和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。因此,从某种意义上说,推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。

从物品的角度出发,推荐系统可以更好地发掘物品的长尾( long tail)
需要推荐的两个因素
1.信息过载
2.用户没有明确的需求

2.个性化推荐系统的应用

相信个性化推荐系统对每一个经常使用互联网的人来说都不陌生,购物时有个性化商品推荐、听歌/看电影时有猜你喜欢的歌曲/电影推荐、逛论坛时有你想看的个性化热帖推荐……随着信息技术的飞速发展,人们逐渐走进了信息过载的时代,从大量的信息中找出自己感兴趣的东西成了一件困难的事情。一个好的推荐系统,可以在用户面前展示他感兴趣的东西,为商家推广产品,为平台(网站或手机应用)带来流量……可以说是实现了三方的共赢。
那么问题来了,推荐系统向用户推荐物品的依据有哪些呢?其中哪一种又是最优的?如何评价一个推荐系统是好是坏呢?

3.推荐系统评测

实验方法

在推荐系统中,主要有三种评测推荐效果的实验方法:离线实验,用户调查和在线实验。
离线实验
离线实验通过日志系统获得用户行为数据,生成数据集,将数据集划分成训练集和测试集,在训练集上训练模型,测试集上进行预测,最后对预测结果进行评测。
离线实验的优点是,不需要用户的实时参与,可以快速地进行大量不同算法的测试;它的主要缺点是无法获得点击率、转化率等很多商业上关注的指标,离线实验的指标和商业指标还存在着差距,比如高预测准确率不等于高用户满意度。
用户调查
用户调查是推荐系统评测的一个重要工具,很多离线时没有办法评测的与用户主观感受有关的指标都可以通过用户调查获得。选择测试用户时,需要尽量保持测试用户的分布与真实用户的分布相同,同时要尽量保证是双盲实验(实验人员和用户事先不知道测试的目标),避免实验结果受主观成分的影响。
用户调查的优点是可以获得体现用户主管感受的指标,弥补离线实验的不足,同时相对在线实验风险较低;它的主要缺点是招募测试用户代价大,因此会使测试结果的统计意义不足,此外,在很多时候设计双盲实验非常困难,而且用户在测试环境下的行为和真实环境下可能有所不同。
在线实验
在完成离线实验和必要的用户调查后,可以将推荐系统上线做AB测试,AB测试是一种常用的在线评测算法的实验方法,它通过一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法。
AB评测
上图是一个简单的AB评测系统:用户进入网站后,流量分配系统(由后台实验人员配置)决定用户是否需要被进行AB测试,然后用户浏览网页,浏览网页时的行为都会被通过日志系统发回后台数据库,实验人员在后台统计日志数据库中的数据,通过评测系统生成不同分组用户的实验报告,并比较和评测实验结果。
总结
一般来说,一个新的推荐算法最终上线前,需要完成3个实验:
首先,需要通过离线实验证明它在很多离线指标上优于现有的算法;然后,需要通过用户调查确定它的用户满意度不低于现有算法;最后通过在线测试确定它在我们关心的指标上优于现有的算法。

评测指标

用户满意度
用户满意度是评测推荐系统的最重要指标,它可以通过用户调查获得,设计问卷时要注意考虑到用户在各方面的感受。对于在线系统,用户满意度主要由对用户行为的统计得到:设置用户反馈按钮,或者用点击率、用户停留时间和转化率等指标度量用户的满意度。
预测准确度
预测准确度度量了一个推荐系统预测用户行为的能力,是最重要的推荐系统离线评测指标。对于不同研究方向的离线推荐算法,预测准确度的指标也不相同,主要有两种:
1、评分预测
评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算,对于测试集中的一个用户u和物品i,令rui是用户u对物品i的实际评分,而r’ui是推荐算法给出的预测,那么RMSE和MAE的定义分别为:
评分预测
python代码如下:

def RMSE(records):return math.sqrt(sum([(rui-pui)*(rui-pui) for u,i,rui,pui in records])/float(len(records)))def MAE(records):return sum([abs(rui-pui) for u,i,rui,pui in records])/float(len(records))

2、个性化(TopN)推荐列表
TopN推荐列表的预测准确率一般通过准确率和召回率度量:
TopN
其中R(u)是推荐列表,T(u)是用户在测试集上的行为列表。
通常来说,TopN推荐比评分预测更符合实际应用。
覆盖率
覆盖率描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例:
覆盖率
其中R(u)为用户u的推荐列表。
个性化的推荐系统应当不仅仅能够向用户推荐那些热门的物品,同时可以发掘适合用户的非热门物品,一个好的推荐系统不仅需要有比较高的用户满意度,也要有较高的覆盖率。
但是上面的定义过于粗略,为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有物品都出现在推荐列表中,且出现次数相差不大,那么推荐系统发现长尾的能力就很好。信息熵Gini系数也可以用来定义覆盖率:
覆盖率
其中p(i)是物品i的流行度除以所有物品流行度之和,ij是按照物品i流行度p()从小到大排序的物品列表中第j个物品。
多样性
多样性描述了推荐列表中物品两两之间的不相似性,假设s(i,j)定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义如下:
多样性
而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值。
其它评测指标还有新颖性、惊喜度、信任度、实时性、健壮性等,在这里就不一一列举。

用户行为数据

用户行为数据在网站上最简单的存在形式就是日志,日志中记录了用户的各种行为,比如网页浏览、点击、购买、评论、评分等等。
用户行为在个性化推荐系统中一般分为显性反馈行为隐性反馈行为。显性反馈行为包括用户明确表示对物品的喜好的行为,比如给物品评分,而隐性反馈行为是指那些不能明确反应用户喜好的行为,比如页面浏览行为。隐性反馈数据比显性反馈不明确,但其数据量更庞大。
此外,用户活跃度和物品流行度的分布都服从长尾分布,随着用户活跃度(物品流行度)的下降,用户数量(物品数量)逐渐下降,但不会迅速坠落到零,而是极其缓慢地贴近于横轴,粗看上去几乎与横轴平行延伸。
长尾分布
仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法,比如基于领域的算法、隐语义模型、基于图的算法等等,下面对这几种方法分别进行介绍。

基于邻域的算法

基于邻域的算法是推荐系统中最基本的算法,分为两大类,一类是基于用户的协同过滤算法,一类是基于内容的协同过滤算法。

基于用户的协同过滤算法(UserCF)

计算用户相似度
基于用户的协同过滤算法通过找到和目标用户兴趣相似的用户集合,找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
通过余弦相似度计算两个用户的兴趣相似度
余弦相似
如果对两两用户都利用余弦相似度计算,在用户数很大时消耗的时间将会非常多,因此可以首先筛选出兴趣物品集合交集不为零的用户对,然后再对这些情况除以分母计算兴趣相似度。
利用UserCF筛选用户感兴趣的物品
得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品,下面的公式度量了UserCF中用户u对物品i的感兴趣程度:
UserCF
其中S(u,k)包含和用户u兴趣最接近的K个用户,wuv是用户u和用户v的兴趣相似度,N(i)是对物品i有过行为的用户合集,rvi代表用户v对物品i的兴趣,使用单一行为的隐反馈数据时,所有的rvi=1。K值需要通过离线实验,选择在预测数据集上预测效果最好时所对应的值。
相似度计算改进
对一件冷门物品有过相同行为比对一件热门物品有过相同行为更能说明两个用户兴趣相似,比如,同时购买《数据挖掘导论》的用户显然比同时购买《新华字典》的用户喜好更相近。因此,需要对相似度公式进行如下的改进:
修正兴趣相似度
该公式通过1/log1+|N(i)|惩罚了用户u和用户v共同兴趣列表中的热门物品i,实验表明,改进的UserCF算法的各预测指标都有所提升。

基于物品的协同过滤算法(ItemCF)

计算物品相似度
基于物品的协同过滤算法是向用户推荐与他们过去喜欢过的物品相似的物品。那么首先需要计算物品之间的相似度,可以由下面的公式计算:
物品相似度
|N(i)|和|N(j)|分别是喜欢物品i和物品j的用户数,分母之所以这样设计,是为了减轻热门物品会和很多物品相似的可能性。
和UserCF算法类似,ItemCF算法在计算物品相似度时为了避免两两物品之间都需要进行计算,首先建立用户-物品倒排表,对于每个用户,将他物品列表中的物品两两在共现矩阵中加1,最后将矩阵归一化就可以得到物品之间的余弦相似度。
利用ItemCF筛选用户感兴趣的物品
得到物品之间的相似度之后,ItemCF通过以下公式计算用户u对一个物品j的兴趣:
ItemCF
其中S(j,K)包含和物品i最接近的K个物品,wji是物品i和物品j的相似度,N(u)是用户喜欢的物品合集,rui代表用户u对物品i的兴趣,使用单一行为的隐反馈数据时,所有的rui=1。
相似度计算改进
试想这样一种情况:如果有一个用户从网上购买了数十万本书准备开书店,这数十万本可能覆盖众多领域的书两两之间就产生了相似性,然而用户购买这些书并非出于自己兴趣,因此John S.Breese提出应当惩罚活跃用户对物品相似度的贡献,将计算公式改进为:
修正物品相似度
同时,对于某些过于活跃的用户,为了避免相似度矩阵过于稠密,通常直接忽略他们的兴趣列表,不纳入相似度计算的数据集。
物品相似度的归一化
如果将ItemCF的相似度矩阵按最大值归一化,可以提高推荐的准确率、覆盖率和多样性。原因是,物品往往归属于不同的类,类物品之间的相似度往往比不同类物品之间的相似度要高,类物品之间的相似度都变成1,推荐时的多样性和覆盖率就更好了。归一化公式如下:
相似度归一化

UserCF和ItemCF的综合比较

  • UserCF适用于用户较少的场合,因为用户很多时计算相似度矩阵的代价会很大,需要计算物品相似度矩阵的ItemCF则适用于物品数明显小于用户数的场合。
  • UserCF的推荐更社会化,反映了用户所在的小型兴趣群体中物品的热门程度,ItemCF的推荐更加个性化,反映了用户自己的兴趣传承。
  • 当用户有新行为时,UserCF算法中推荐结果不一定立即变化,而ItemCF中一定会导致推荐结果的实时变化。
  • UserCF适用于新闻推荐,主要是由于在新闻网站用户的兴趣比较粗粒度且偏向于热门,同时,新闻的时效性很强,维护物品相似度矩阵代价太大。
  • ItemCF适用于图书、电影、音乐和电子商务中的推荐,因为在这些网站中用户的兴趣比较固定,个性化推荐的任务是帮助用户发现和他研究邻域相关的物品。

隐语义模型(LFM)

基于兴趣分类方法的核心思想是通过隐含特征联系用户兴趣和物品,判断用户对哪些类的物品感兴趣,再将属于这些类的物品推荐给用户。那么,如何给物品分类,分类的粒度如何确定?如何确定用户对哪些类的物品感兴趣,以及感兴趣的程度?又如何确定物品在一个类中的权重呢?
隐语义分析技术基于用户行为统计进行自动聚类,较好地解决了以上几个问题。
LFM是隐语义分析技术中的一种模型,通过以下公式计算用户u对物品i的兴趣:
LFM
其中pu,k度量了用户u的兴趣和第k个隐类的关系,qi,k度量了第k个隐类和物品i之间的关系。计算这两个参数,需要一个训练集,对于每个用户u,训练集里都包含了用户u喜欢和不感兴趣的物品,通过学习这个数据集,就可以获得模型参数。

训练集采样

在隐性反馈数据集中,只有正样本,没有负样本。那么就需要在用户没有行为的物品中进行负样本的采用,经过实验,发现对负样本的采样应该遵循以下原则:对于每个用户,要保证正负样本的平衡,对每个用户采样负样本时,选取热门但用户没有行为的物品。
采样完成后可以得到一个用户-物品集K={(u,i)},如果(u,i)是正样本,则rui=1,否则rui=0。

优化损失函数

对于采样完成的训练集,需要优化如下损失函数来找到最合适的参数p和q:
lossfunc
最小化损失函数采用的是随机梯度下降法。

基于图的模型

基于图的模型首先需要将用户行为表示成二分图模型,令G(V,E)表示用户物品二分图,其中V由用户顶点合集VU和物品顶点合集VI组成,E为连接用户节点和物品节点的边的集合,用户节点和物品节点相连说明该用户对相连的物品产生过行为。
度量顶点之间相关性的方法有很多,主要有:两个顶点之间的路径数,两个顶点之间路径的长度,两个顶点之间的路径经过的顶点。
二分图模型

基于随机游走的PersonalRank算法

了解了二分图模型的基本概念,下面介绍一种计算图中顶点之间相关性的方法。
假设要给用户u进行个性化推荐,可以从用户u对应的节点vu开始在用户物品二分图上进行随机游走,游走到任何一个节点时,首先按照概率决定是继续游走还是停止这次游走并从vu节点重新开始游走。如果决定继续游走,那么就从当前节点指向的节点中按照均匀分布随机选择一个节点作为游走下次经过的节点。这样,经过很多次随机游走后,每个物品节点被访问到的概率会收敛到一个数。最终的推荐列表中物品的权重就是物品节点的访问概率。
这种方法可以表示成如下公式:
personalrank
PersonalRank算法可以通过随机游走进行比较好的理论解释,但该算法在时间复杂度上有明显的缺点,可以通过将PR转化成矩阵的方法进行改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

何为布隆过滤器

问题的提出 我们有一个不安全网页的黑名单,包含了100亿个黑名单网页的URL,每个网页URL最多占用64B.。 现在我们要设计一个网页过滤系统,这个系统要判断该网页是否在黑名单里,但是我们的空间有限,只有30GB. 允许有万分之一的判断…

推荐算法--利用用户行为数据(02)

文章目录目录1.什么是用户行为数据?1.1用户行为分类2.用户行为数据如何使用?2.1 用户活跃度和物品流行度的分布2.2 用户活跃度和物品流行度的关系2.3 协同过滤算法3.实验设计和算法评测4.基于邻域的的推荐算法4.1 基于用户的协同过滤算法4.2 基于物品的协…

《Head First设计模式》第九章(2)组合模式

组合模式 ​ 基于前一篇迭代模式的案例进行需求更新,餐厅的菜单管理系统需要有煎饼屋菜单和披萨菜单。现在希望在披萨菜单中能够加上一份餐后甜点的子菜单。 在迭代模式中,披萨菜单是用数组维护的,我们需要让披萨菜单持有一份子菜单&#xf…

Python(4)--Pycharm安装、使用小技巧

Pycharm安装1.专业版Pycharm 安装2.设置Pycharm桌面快捷图标3.Linux卸载一个软件4.教育版Pycharm的安装5.多文件项目演练(Pycharm针对学生和教师开发了免费使用版)1.专业版Pycharm 安装 1.官网下载安装包 .tar.gz 2.解压缩 tar -zxvf 文件名 3.移动解压…

推荐算法--推荐系统冷启动问题(03)

文章目录目录1.什么是冷启动问题?1.1冷启动问题1.2 冷启动问题的分类1. 用户冷启动2 物品冷启动3 系统冷启动2.如何解决冷启动问题?2.1利用用户注册信息2.2选择合适的物品启动用户的兴趣2.3利用物品的内容信息2.4 发挥专家的作用目录 1.什么是冷启动问题…

《Head First 设计模式》第十章-状态模式 状态模式

状态模式 策略模式和状态模式是双胞胎,在出生时才分开。你已经知道,策略模式是围绕可以互换的算法来创建成功业务的,然而,状态走的是更崇高的路,它通过改变对象内部的状态来帮助对象控制自己的行为。 定义状态模式 …

推荐算法--利用用户标签数据(04)

文章目录流行的推荐系统通过3种方式联系用户兴趣和物品 (1):利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品,这是基于物品的算法。 (2):利用和用户兴趣相似的其他用户…

Python(5)-注释

Python注释1.单行注释2. 多行注释(块注释)3.注释的使用和代码规范pyhton 的注释 使用自己熟悉的语言(中文),解释代码。Python解释器在执行文件时不会执行井号右边边的内容。1.单行注释 # 井号后面跟着注释内容 灰灰的虚…

网络原理知识点总结

第一章: 计算机网络系统由资源子网和通信子网组成。 计算机网络系统主要由网络通信系统、操作系统和应用系统构成 互联网基础结构发展的三个阶段: 第一阶段:从单个网络 ARPANET 向互联网发展的过程。 第二阶段:建成了三级结构…

推荐算法--时效性(05)

时效性 推荐系统应该考虑时间效应,因为用户的兴趣是有时间变化的。用户一年前喜欢的东西现在不一定感兴趣,相比于推荐过去喜欢的物品,推荐用户近期喜欢的物品更有参考价值。而在新闻更是如此,推荐过去跟用户兴趣一致的新闻已经失去…

推荐算法--推荐系统架构(06)

外围架构一般来说,每个网站都有一个 UI 系统,UI 系统负责给用户展示网页并和用户交互。网站会通过日志系统将用户在 UI 上的各种各样的行为记录到用户行为日志中。 从上面的结构可以看到,除了推荐系统本身,主要还依赖两个条件--界…

Python(6)-算数运算符

算数运算符1.算数运算符2.优先级1.算数运算符 加 减- 乘* 除/ 取商// 取余数% 幂**(能算n次方: 2**38,一直以为只能算平方) 扩展: 乘法用于字符串:字符串重复指定的次数,要拼接的次数很长时,用乘号很方便…

推荐算法--其他信息(07)

文章目录目录1.利用上下文信息1.1时间上下文1.2地点上下文2.利用网络社交数据2.1 获取网络社交数据途径2.2 社交网络数据2.3 基于社交网络的推荐2.4 推荐算法2.5 给用户推荐好友目录 1.利用上下文信息 1.1时间上下文 用户的兴趣是随着时间变化的,三天打鱼两天晒网…

Python(7)-程序执行的原理

程序执行的原理1.计算机中的三个核心部件2.程序执行的原理3.程序的作用1.计算机中的三个核心部件 CPU:中央处理区,超大规模的集成电路,负责处理数据、计算 内存:临时存储数据,断电数据消失,读取数据快 硬盘…

橙白oj 2017级《算法分析与设计》-练习02

注:A题我以为给新生出的,应该贼简单,是按顺序消灭,卡了十几分钟,成了最后一个ac的题,真是菜的真实。 Problem A: Description 白细胞是人体与疾病斗争的“卫士”。当病菌侵入人体体内时,白细胞…

python(9)-变量、input函数

变量、input函数1.变量的定义(不可变对象)2.变量的类型3.变量的命名规范4. 不同类型的数据计算5.类型转换函数6.input()7.Tips程序是用来处理数据的,而变量是用来存储数据的。 关于函数,是一个提前准备好的代码;可以直接使用,不用…

推荐算法--总结(08)

一、推荐系统结构二、推荐引擎算法(Algorithm)1、协同过滤推荐算法1.1 关系矩阵与矩阵计算1.1.1 用户与用户(U-U矩阵)1.1.2 物品与物品(V-V矩阵)1.1.3 用户与物品(U-V矩阵)1.1.4 奇异…

算法总结-1算法入门

1.0 前言 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 …

FM系列算法解读(FM+FFM+DeepFM)

在计算广告中,CTR是非常重要的一环。对于特征组合来说,业界通用的做法主要有两大类:FM系列和Tree系列。这里我们来介绍一下FM系列。   在传统的线性模型中,每个特征都是独立的,如果需要考虑特征与特征之间的相互作用…

二叉树层序遍历

层序遍历序列为:ABCDEFG 思路:栈是先进后出的数据结构,而队列是先进先出的数据结构。 我们层序遍历,很明显,先遇到的节点先打印,不同于前中后序遍历,我们采用队列结构。 具体执行过程如下&…