【推荐系统】 一、推荐系统简介

2023-11-10

1. 推荐系统的作用和意义

​ 在这个时代,无论信息消费者还是信息生产者都面临巨大的挑战。

​     信息消费者:在大量信息中找到自己感兴趣的信息很困难。

​     信息生产者:将自己生产的信息让广大消费者关注很困难。

​ 推荐系统将用户与信息联系起来。

1.1 用户角度

​    推荐系统解决在“信息过载1的情况下,用户如何高效获取感兴趣的信息。

    比如:在大量电影、电视剧中无法选择出自己喜欢的,或者不知道自己喜欢的;在购物网站,不知道哪些商品适合自己等。

​    另外,用户大部分时候没有特别明确的需求,因为如果有明确的需求,在搜索框找自己想要的东西就行。

搜索引擎和推荐系统区别:

  • 搜索引擎需要用户主动提供准确的关键词来寻找信息。

  • 推荐系统可以通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。

  • 两者互补

1.2 公司角度

​    推荐系统解决产品能够最大限度地吸引用户、留存用户、增加用户黏性、提高用户转化率的问题,从而达到公司商业目的。

1.3 物品角度

​    推荐系统可以更好地发掘物品的长尾(Long Tail)2

​    主流商品往往代表了绝大多数用户的需求,而长尾商品往往代表了一小部分用户的个性化需求

2. 推荐系统的逻辑架构

推荐系统的本质其实就是要处理 “人”“信息” 之间的关系问题

2.1 信息(Item)

数字时代,信息是关键

​    这种信息,实际上是多种多样的。在商品推荐中是指“商品信息”,在视频推荐中是指“视频信息”,我们将其统称为物品信息

​    物品信息包含了物品的属性、特点等等。

2.2 人(User)

人 才是一切服务的对象

​    从“人”的角度出发,为了更可靠地推测出“人”的兴趣点,推荐系统希望可以利用大量与“人”有关的信息,我们将其统称为用户信息

​    用户信息包含了用户的历史行为、人口属性、关系网等等。

2.3 场景(Context)

环境千差万别,情况也瞬息万变

​    在具体的推荐场景中,用户还会受到不同环境信息的影响,我们将其统称为场景信息上下文信息

​    场景信息包含了例如时间、地点、用户此时的状态的等等。

2.4 推荐系统的形式化定义

​    对于某个用户U(User),在特定的场景 C(Context) 下,针对海量的物品信息构建一个函数,预测用户对于特定候选物品 I(Item) 的喜好程度,再根据喜好程度对所有候选物品进行排序,生成推荐列表的问题。

IMG_0234

3. 推荐系统的技术架构

3.1 两类问题

​     深度学习推荐系统架构和经典的推荐系统架构是一脉相承的,其本质是对经典的推荐系统架构中某些特定的模块进行改进,使之能够支持深度学习的应用,因此经典推荐系统框架仍然具有举足轻重的作用。

​ 实际的推荐系统中,需要着重解决的两类问题:

  1. 数据和信息:用户信息、物品信息、场景信息分别是什么?如何存储、更新和处理这些数据呢?
  2. 算法和模型:推荐系统模型如何训练、预测以及如何达成更好的推荐效果?

“数据和信息”部分逐渐发展为推荐系统中融合了数据离线批处理、实时流处理的数据流框架;

“算法和模型”部分则进一步细化为推荐系统中,集训练(Training)、评估(Evaluation)、部署(Deployment)、线上推断(Online Inference)为一体的模型框架。

IMG_0235

3.2 数据部分

​    数据部分主要负责用户、物品、场景信息的收集和处理。

​    对数据处理实时性由强到弱排序依次为:客户端与服务器端实时数据处理、流处理平台准实时数据处理、大数据平台离线数据处理。

​    即 在得到原始数据信息后,推荐系统的数据处理系统会将原始数据进一步加工。

3.3 模型部分

模型部分是推荐系统的主体

​    模型的结构一般由 召回层排序层 以及 补充策略与算法层 组成。

3.3.1 召回层3

​    利用高效的召回规则、算法或简单的模型,快速从海量候选集中召回用户可能感兴趣的物品。

3.3.2 排序层4

​    利用排序模型对初筛的候选集进行精排序

1

3.3.3 补充策略与算法层

​    也称为再排序层

​    在将推荐列表返回给用户之前,针对多样性流行度新鲜度 等指标,结合一些补充的策略以及算法对推荐列表进行适当调整,最终形成用户可见的推荐列表。

3.3.4 总结

​    以上模块共同组成了推荐系统模型部分的框架。

​    排序层 模型是推荐系统产生效果的重点,也是研究的重心!

​    召回层就好比歌唱比赛的海选,对于所有数据快速进行筛选。

​    排序层就好比歌唱比赛的晋级赛,从海选通过的选手中选出最好的一部分。

​    最后的补充层就好比决赛,对于本来已经很好的选手,进行最后地选择。

4. 深度学习与推荐系统

深度学习到底给推荐系统带来了什么革命性的影响呢?

​    在逻辑架构中我们知道,居于中心位置的抽象函数 f ( U , I , C ) f(U,I,C) f(U,I,C) ,负责对用户的内心想法进行“猜测”,为用户可能感兴趣的产品进行打分,最终得到推荐物品列表,这个函数一般称为“推荐系统模型”

​    深度学习应用在推荐系统中,极大地增强了推荐模型的 拟合能力5表达能力6

​    什么意思呢?

​     如果我们说 f ( U , I , C ) f(U,I,C) f(U,I,C) 这个函数具有最优的表达形式,那么传统模型只能够拟合出此函数的近似形式,而深度学习模型则可以极大程度地接近这个最优的表达形式。

​     另外,深度学习模型还具备一个无法替代的优势:我们可以让深度学习模型的神经网络模拟很多用户兴趣的变迁过程,甚至用户做出决定的思考过程。(这也是深度学习模型的恐怖之处)

5. 推荐系统评测

什么是好的推荐系统?

​     最开始很多人认为,好的推荐系统就是能够准确预测的推荐系统。实则不然,比如一件商品,某用户早就有想买的打算,不管推荐给他与否他都会买,这样的推荐结果并没有增加此商品的潜在购买人数,因此准确率看起来是很好的指标,但其实是一个很失败的推荐。

​     举一个极端例子:某系统预测明天太阳将在东方升起,虽然准确率可以达到100%,但是这样的预测却没有任何意义。

​     好的推荐系统不仅能够准确预测用户的行为,还可以帮助用户找到自己感兴趣但是却不容易发现的东西。

5.1 推荐系统实验方法

分为 离线实验用户调查在线实验

5.1.1 离线实验

5.1.1.1 步骤

  1. 获得用户行为数据,生成数据集
  2. 将数据集分成训练集和测试集
  3. 在训练集上训练用户兴趣模型,在测试集上进行预测
  4. 通过事先定义的指标评测算法在测试集上的预测结果。

​ 和传统机器学习训练模型过程类似

5.1.1.2 优缺点

优点 缺点
不需要有对实际系统的控制权 无法计算商业上关心的指标
不需要用户参与实验 离线实验的指标和商业指标存在差距
速度快,可以测试大量算法

5.1.2 用户调查

离线实验的指标和商业指标有差距,即高预测准确率并不代表高用户满意度。

​     需要一个较为真实的环境测试算法,最好的办法就是上线测试,但是具有较高的风险,因此上线测试前一般需要做一次用户调查。

5.1.2.1 注意事项

控制成本

​    用户调查的成本很高,需要用户大量时间完成任务并回答问题,有时候甚至需要花钱雇用测试用户。一般大量测试用户耗费成本,而少量测试用户得出的结论往往没有统计意义。因此需要一方面控制成本,一方面保证测试结果。

双盲实验

​    不要让实验人员和用户事先知道测试的目标,以免用户的回答和实验人员的测试受主观成分的影响。

相同分布

​    测试用户需要尽量保证测试用户的分布和真实用户的分布相同,比如男女各半,以及年龄、活跃度的分布都和真实用户分布尽量相同。

5.1.2.2 优缺点

优点 缺点
可以获得很多体现用户主观感受的指标 招募测试用户代价较大、成本较高
相对于在线实验风险较低,容易弥补错误 设计双盲实验困难

5.1.3 在线实验

​     当完成离线测试和用户调查后,可以将推荐系统上线做AB测试7,将它和旧的算法进行比较。

5.1.3.1 优缺点

优点 缺点
可以公平获得不同算法实际在线是的性能指标 周期较长,需要长期实验才能得到可靠的结果

​     一般不会用AB测试测试所有的算法,只会测试在离线实验和用户调查中表现很好的算法。 一个大型网站的AB测试系统的设计也是一项复杂的工程。

5.1.4 总结

​     一个新的推荐系统最终上线,需要完成如上的三个实验

  1. 需要通过离线实验证明它在很多指标上优于现有算法
  2. 需要通过用户调查确定它的用户满意度不低于现有算法
  3. 需要通过AB测试确定它在我们关心的指标优于现有算法

5.2 评测指标

在以上三种测试中,使用各种评测指标来评价推荐系统各方面的性能。

5.2.1 用户满意度

​     用户作为推荐系统的重要参与者,用户满意度是最重要的指标,但是其无法离线计算,只能在用户调查或在线测试中获得。

​     在在线系统中,用户满意度主要由一些对用户行为的统计得到。比如:

  1. 使用购买率度量用户满意度
  2. 使用用户反馈界面收集用户满意度
  3. 更一般的情况,使用点击率、用户停留时间、转化率等指标度量用户满意度

5.2.2 预测准确度

​     预测准确度度量了一个推荐系统或算法预测用户行为的能力,是最重要的推荐系统离线评测指标

5.2.2.1 评分预测

预测用户对物品的评分

均方根误差(RMSE)

R M S E = ∑ u , i ∈ T ( r u i − r ^ u i ) 2 ∣ T ∣ \mathrm{RMSE} = \frac{\sqrt{\sum_{u,i\in T}(r_{ui}-\hat{r}_{ui})^2}}{\big|T\big|} RMSE=Tu,iT(ruir^ui)2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【推荐系统】 一、推荐系统简介 的相关文章

随机推荐

  • 离散型随机变量及其分布律(五)

    有些随机变量值是有限 它全部可能取到的个或可列无限多个 这种随机变量称为离散型随机变量 三种重要的离散型随机变量
  • [转载].一直不怎么明白PID的运算输出结果怎么换算成执行机构的控制量

    http bbs 21ic com icview 50831 1 1 html 小明接到这样一个任务 有一个水缸点漏水 而且漏水的速度还不一定固定不变 要求水面高度维持在某个位置 一旦发现水面高度低于要求位置 就要往水缸里加水 小明接到任务
  • 计算机系统概述

    操作系统的概念 功能 操作系统 Operating System OS 是指控制和管理整个计算机系统的硬件和软件资源 并合理地组织调度计算机的工作和资源的分配 以提供用户和其他软件方便的接口和环境 它说计算机系统中最基本的系统软件 操作系统
  • anaconda添加python虚拟环境

    先将anaconda的源更换为国内源 否则下载很慢 conda config add channels https mirrors tuna tsinghua edu cn anaconda pkgs free conda config a
  • feigin应用

    feigin发送post请求 1 服务方一定加上 RequestBody RequestMapping value queryPerson ResponseBody public Person queryPerson RequestBody
  • 如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)

    新换了工作 需要熟悉新公司的产品开发项目 更新博客就懈怠了 不过环境的不同 也让我对嵌入式开发有了更深刻的理解 在原公司我主要负责在STM32F207芯片平台上 利用UCOS LWIP进行嵌入式服务器开发 工作涉及底层硬件 RTOS 协议栈
  • Linux内核源码分析-进程调度(三)-从进程创建到唤醒的过程去了解CFS调度器

    从进程创建到唤醒的过程去了解CFS调度器 从do fork开始 创建子进程 初始化新建进程p相关的调度参数 cfs的task fork操作 更新cfs rq上正在运行的进程的运行时间信息 更新cfs rq的最小虚拟运行时间 更新进程p对应的
  • redis学习笔记

    概述 redis可以当作缓存来使用 存在内存里 比读数据库更快 但是比从内存变量里取数据还是要慢不少的 redis sql 内存变量的对比 按存取速度来看 内存变量最快 sql最慢 但按照持久化的角度来说正好相反 各有优缺点 按需选择使用
  • 加法乘法原理、排列组合、线性规划

    排列组合 1 加法原理与乘法原理 加法原理 分类思想 一个事件的发生 分为几类事件的发生 通俗的说是好几种情况的发生 乘法原理 分步思想 一个事件的发生 分为几个子事件分步发生 这里要注意 1 子事件 如何把事件划分为几个子事件呢 子事件是
  • dlopen “no suitable image found ”问题之解决

    做一个练手小项目 基于 react transform boilerplate 的demo 克隆 react transform boilerplate项目 装包 package json中的包 style loader css loade
  • 并发、并行、同步、异步的概念

    并发与并行 假设一个工厂 包含多个车间 一个车间包含多个工人和多个房间 什么是cpu 工厂是时刻在运行的 因此可以理解cpu时刻在运行 什么cpu的核数 假设把一个cpu比作一份电量的话 一份电量又只能满足一个车间运行 那么其他车间就得停止
  • 使用python写一个星球大战游戏.py

    如果要使用 Python 写一个类似于星球大战的游戏 需要用到一些专业的游戏引擎 比如 Pygame 首先 需要安装 Pygame 库 可以使用以下命令进行安装 pipinstall pygame 其次 可以在 Pygame 中使用 pyt
  • 网络安全人才青黄不接、数字化转型迫在眉睫、你还在犹豫吗?

    大专能不能学网络安全呢 大专学网络安全能不能找到工作呢 大专学网络安全有竞争力吗 网络上关于质疑大专学历进入网络安全行业的声音越来越多了 居然有很多人在质疑大专学历从事网络安全没有竞争力 很多人看到某些招聘软件上起薪12K的薪资就望而却步了
  • Linux文件管理

    成功不易 加倍努力 1 文件系统目录结构 1 1文件系统的目录结构 1 2 常见的文件系统目录功能 1 3 应用程序的组成部分 1 4 Linux下的文件类型 2 文件操作命令 2 1 显示当前工作目录 2 2 绝对和相对路径 2 3 更改
  • Nano编辑器安装使用指南

    关于nano Nano编辑器是一个命令行文本编辑器 具有简单易用的界面和一些基本功能 Nano小巧友好 提供许多额外的特性 例如交互式的查找和替换 定位到指定的行列 自动缩进 特性切换 国际化支持 文件名标记完成等 Nano是为了代替闭源的
  • 《Zookeeper-分布式过程系统技术详解》第一部分基础概念笔记学习

    1 Zookeep的客户端API功能强大 其中包括 保障强一致性 有序性和持久性 实现通用的同步原语的能力 在实际分布式系统中 并发往往导致不正确的行为 ZooKeeper提供了一种简单的并发处理机制 2 ZooKeeper不适用的场景 整
  • 重新学javaweb---JSTL标签

    JSTL简介 标准标签库JSTL的全名为 Java Server Pages Standard Tag Library JSTL主要提供了5大类标签库 核心标签库 为日常任务提供通用支持 如显示和设置变量 重复使用一组项目 测试条件以及其他
  • Promise常用API介绍

    Promise中的API PromiseState 实例对象中的一个属性 Promisestate 状态 pending 未决定 resolved fullfilled 成功 rejected 失败 pending 变为resolved p
  • CSDN周赛64期题解(含部分代码)

    计算之魂 主题周赛如期回归 因为差不多每次都是新题 让人多了点期待 相信非编程题无需多言 答案都在书里 翻书翻得快 满分无障碍 当然 如果提前读过此书就更好了 比如原书中把金块切了 2 刀 问题中扩展了一下 变成切 9 刀 如果提前理解过原
  • 【推荐系统】 一、推荐系统简介

    1 推荐系统的作用和意义 在这个时代 无论信息消费者还是信息生产者都面临巨大的挑战 信息消费者 在大量信息中找到自己感兴趣的信息很困难 信息生产者 将自己生产的信息让广大消费者关注很困难 推荐系统将用户与信息联系起来 1 1 用户角度 推荐