第一章 好的推荐系统

1.1 前言

推荐系统的基本任务是联系用户和物品,解决信息过载的问题

分类目录和搜索引擎各自存在的问题:

分类目录:
搜索引擎:搜索引擎需要用户主动提供准确的关键词才能寻找信息

推荐系统:帮助用户快速发现有用信息,和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。

索索引擎和推荐系统的区别:
搜索引擎:用户有明确的查找需求–>用户需要
推荐系统:用户没有明确的查找需求–>用户可能感兴趣,可能会不需要

一个小知识点:长尾理论和长尾商品
长尾商品:”小众“、少数人需要

推荐的方式

  • 1 社会化推荐 2 基于内容的推荐 3 基于协同过滤的推荐

推荐算法的本质:通过一定的方式将用户和物品联系起来。

推荐系统常用的三种联系用户和物品的方式:
好友、历史兴趣、注册信息

1.2 个性化推荐系统的应用

和搜索引擎不同,个性化推荐系统需要依赖用户的行为数据,因此一般都是作为一个应用存
在于不同网站之中。个性化推荐系统在这些网站中的主要作用是通过分析大量用户行为日志,给不同用户提供不同的个性化页面展示,来提高网站的点击率和转化率。
组成:几乎所有的推荐系统应用都是由前台的展示页面、后台的日志系统以及推荐算法系统3部分构成的。

以亚马逊为例:
个性化推荐列表和相关推荐列表
个性化推荐列表:基于历史兴趣和基于好友关系
相关推荐列表:一种是包含购买了这个商品的用户也经常购买的其他商品,另一种是包含浏览过这个商品的用户经常购买的其他商品–>重要应用:打包销售
区别:使用了不同用户行为计算物品的相关性

个性化推荐的成功应用需要两个条件:
第一是存在信息过载,因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了。第二是用户大部分时候没有特别明确的需求,因为用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。

1.3 推荐系统评测

一个完整的推荐系统一般存在3个参与方(如图1-22所示):用户、物品提供者和提供推荐系统的网站。

所以,好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。

1 推荐系统的实验方法 获得待评测指标的方法/途径
在推荐系统中,主要有3种评测推荐效果的实验方法,即离线实验(offline experiment)、用户调查(user study)和在线实验(online experiment)。

一般来说,一个新的推荐算法最终上线,需要完成上面所说的3个实验。

首先,需要通过离线实验证明它在很多离线指标上优于现有的算法。
然后,需要通过用户调查确定它的用户满意度不低于现有的算法。
最后,通过在线的AB测试确定它在我们关心的指标上优于现有的算法。

方法一:离线实验
优缺点:
方法二:用户调查
最好的方法就是将算法直接上线测试,但是在上线测试前一般需要做一次称为用户调查的测试。

存在一些缺点,因此
1 我们在做用户调查时,一方面要控制成本,另一方面又要保证结果的统计意义。
2 需要尽量保证测试用户的分布和真实用户的分布相同,要尽量保证是双盲实验,不要让实验人员和用户事先知道测试的目标
名词:双盲实验

方法三:在线实验
常用方法:AB测试
它通过一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算法。
由于AB测试存在试验周期比较长等缺点,因此一般不会用AB测试测试所有的算法,而只是用它测试那些在离线实验和用户调查中表现很好的算法。
切分流量是AB测试中的关键

2 评测指标
定性或定量计算
指标一:用户满意度
用户满意度是评测推荐系统的最重要指标。
用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。

方法一:调查问卷
因此在设计问卷时需要考虑到用户各方面的感受,这样用户才能针对问题给出自己准确的回答。

方法二:在线系统
用点击率、用户停留时间和转化率等指标度量用户的满意度

指标二:预测准确度
预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标。

在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。

用以衡量预测准确度的指标:
评分预测:
评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。
TopN 推荐:
TopN 推荐的预测准确率一般通过准确率( precision ) / 召回率( recall )度量

指标三:覆盖率
定义:覆盖率( coverage )描述一个推荐系统对物品长尾的发掘能力。
覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。

覆盖率是一个内容提供商会关心的指标。

对覆盖率的改进:
为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有的物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。
可以通过研究物品在推荐列表中出现次数的分布描述推荐系统挖掘长尾的能力。如果这个分布比较平,那么说明推荐系统的覆盖率较高,而如果这个分布较陡峭,说明推荐系统的覆盖率较低。

覆盖率的其他定义:
在信息论和经济学中有两个著名的指标可以用来定义覆盖率。
第一个是信息熵,第二个指标是基尼系数( Gini Index )。
从基尼系数看覆盖率:
如果基尼系数比较小–>系统/物品的流行度很平均–>系统的覆盖率较高

一个概念:马太效应
如果一个系统会增大热门物品和非热门物品的流行度差距,让热门的物品更加热门,不热门的物品更加不热门,那么这个系统就有马太效应。
现在主流的推荐算法(比如协同过滤算法)是具有马太效应的

指标四:多样性
为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。
多样性描述了推荐列表中物品两两之间的不相似性。
用户 u 的推荐列表 R(u) 的多样性定义:
推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:
指标五:新颖性
指标六:惊喜度
指标七:信任度
指标八:实时性
指标九:健壮性
健壮性(即 robust, 鲁棒性)指标衡量了一个推荐系统抗击作弊的能力。
指标十:商业目标

获取各种评测指标的途径:

3 评测维度
增加评测维度的目的就是知道一个算法在什么情况下性能最好。(尺有所短寸有所长,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点)
一般来说,评测维度分为如下 3 种。

用户维度 主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
物品维度 包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
时间维度 包括季节,是工作日还是周末,是白天还是晚上等。

读书笔记--项亮《推荐系统实践》第一章相关推荐

  1. 读书笔记--推荐系统实践 第一章

    推荐系统实践 编著 项亮 参与创建Resys China推荐系统社区 第一章 好的推荐系统 什么是好的推荐系统?什么样的特征?有哪些评价指标? 1.1 好的推荐系统 信息过载 (Information ...

  2. 西瓜书读书笔记整理(二)—— 第一章 绪论

    第一章 绪论 第一章 绪论 1.1 引言 1. 什么是机器学习 2. 机器学习的主要内容 3. 模型与模式 1.2 基本术语 1. 数据集 / 训练集 / 验证集 / 测试集 2. 示例 / 样本 3 ...

  3. 【读书笔记】C#高级编程 第一章

    这一章主要就是一个大体的介绍. 有几个概念需要注意下. 1: CTS: Common Tpye System 通用类型系统. .Net平台有多种语言,比如用VB.NET 写了一个类,然后C#需要继承这 ...

  4. 推荐系统实践-第一章

    1.什么是推荐系统? --对用户的行为信息进行分析,预测数据库中用户可能感兴趣的信息. 2.推荐系统的主要任务是什么? --解决信息过载的问题 3.如何评鉴一个推荐系统的好坏? --三种方式相结合:离 ...

  5. 读书笔记-《大话数据结构》第一章数据结构绪论

    1.3数据结构的起源 数据结构:是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科. 程序设计=数据结构+算法 1.4基本概念和术语 1.4.1数据:描述客观事物 ...

  6. 【读书笔记】.NET本质论第四章-Programming with Type(Part Two)

    欢迎阅读本系列其他文章: [读书笔记].NET本质论第一章 The CLR as a Better COM [读书笔记].NET本质论第二章-Components(Part One) [读书笔记].N ...

  7. 数据结构笔记(王道考研) 第一章:绪论

    大部分内容基于中国大学MOOC的2021考研数据结构课程所做的笔记,该课属于付费课程(不过盗版网盘资源也不难找...).后续又根据23年考研的大纲对内容做了一些调整,将二叉排序树和平衡二叉树的内容挪到 ...

  8. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第五章 着色基础 Shading Basics

    写在前面的话:因为英语不好,所以看得慢,所以还不如索性按自己的理解简单粗糙翻译一遍,就当是自己的读书笔记了.不对之处甚多,以后理解深刻了,英语好了再回来修改.相信花在本书上的时间和精力是值得的. -- ...

  9. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第七章 阴影 Shadows

    写在前面的话:因为英语不好,所以看得慢,所以还不如索性按自己的理解简单粗糙翻译一遍,就当是自己的读书笔记了.不对之处甚多,以后理解深刻了,英语好了再回来修改.相信花在本书上的时间和精力是值得的. -- ...

  10. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第六章 纹理 Texturing

    写在前面的话:因为英语不好,所以看得慢,所以还不如索性按自己的理解简单粗糙翻译一遍,就当是自己的读书笔记了.不对之处甚多,以后理解深刻了,英语好了再回来修改.相信花在本书上的时间和精力是值得的. -- ...

最新文章

  1. DL之IDE:深度学习之计算机视觉开发环境搭建的详细流程(Ubuntu16.04+cuda9.0+cuDNN7.4.2+tensorflow_gpu)
  2. 西北民族大学c语言程序设计复试科目,2016年西北民族大学中国民族信息技术研究院962C语言程序设计复试笔试仿真模拟题...
  3. SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法
  4. 机器学习---算法---马尔科夫
  5. python函数使用说明
  6. 如何在Java中执行Python模块?从认识JEP库开始
  7. 法向量与切向量的转化
  8. mysql sniffer数据库审计_MySQL抓包工具:MySQL Sniffer
  9. 读书郎上市背后隐忧:业绩下滑明显,市场地位较靠后,竞争力存疑
  10. 钉钉、企业微信平台发送工资条程序--燕春科技工资条管理系统2.0
  11. TSP_旅行商问题 - 模拟退火算法(三)
  12. PADS VX2.8 基本规则的设置方法
  13. cacti监控及配置
  14. 爆改小米3G路由器,openwrt踩坑
  15. python中的除法,取整和求模
  16. Android手机通讯录
  17. 为什么修改jsp不用重启tomcat,而修改servlet要重启tomcat
  18. 阿里云携手 Elastic 及社区大咖们共同打造 《Elastic Stack 实战手册》电子书
  19. 微软 Windows 网络邻居
  20. Pygame经典游戏飞机大战,黑马程序员案例讲解

热门文章

  1. 如何用W7100A实现串口转以太网
  2. springboot配置文件不生效的原因
  3. Android,通讯录导入,contacts,联系人
  4. linux中mail未找到命令,mail命令使用在linux系统中输入mail,就进入了收件箱错误的是()...
  5. HTML5 汉字转化为拼音,带读声,穷举多音字
  6. 硬件设计之一——电源设计04:滤波电路
  7. WM6.5系统和软件的注册表修改以及优化
  8. 机房综合环境监控系统
  9. [Unity实战]制作卷动的波浪
  10. oracle 19c INS-20802