请问,你了解推荐系统吗

你知道吗

    • 推荐系统:
      • 解决问题:
      • 系统环节:
      • 召回路径:
      • 推荐架构:
      • 通用技术架构:
      • 实现推荐:
        • 基于内容的推荐系统【Content-Based Recommendations】
          • 余弦相似度:
          • 示例计算:
          • 余弦相似度算法图:
          • 分析:
        • 实现协同过滤的推荐系统
          • 基于用户的协同过滤:

推荐系统:

定义:根据用户的历史信息和行为,向用户推荐他感兴趣的内容

基于行为的协同过滤:①当两种事物出现的频率很高时,那么大概率会进行捆绑推荐  --【啤酒和尿布】
②当两个人是相似的时候,那么大概率会把B看过的事物推给A  --【微信--他正在看】基于内容相似的推荐:①事物分类,大概率推荐相似度更高的事物

解决问题:

​ 1、信息过载 【用户无法寻找物品】【系统无法精准推荐达到商业目标】
​ 2、挖掘长尾【大量冷门物品无法暴露,但是价值加和超过热门物品,需要推荐曝光不同冷门兴趣的物品给冷门兴趣群众或者潜在兴趣群众】
​ 3、用户体验【发现自己潜在喜欢的事物】

系统环节:

目的:需要在50ms–100ms以内选择推出用户喜欢的条目?

在这里插入图片描述

召回:

  1. ​ 协同过滤召回
  2. ​ 内容相似召回
  3. ​ 图算法召回
  4. ​ 热门召回

排序:【如果排序算法很高效,可以直接省略召回阶段】

  1. ​ 机器学习

  2. ​ 二分类算法(用户喜欢 0 用户不喜欢1 按照概率排列)

    ​ LR

    ​ GBDT

    ​ DNN

调整:

  1. 去重【不看重复】
  2. 已读过滤
  3. 在线过滤【过滤无效事物】
  4. 热门补足【补全推荐】
  5. 分页提取【推荐内容分页显示】
  6. 合并内容信息【根据推荐的ID获取其他信息如标题、内容、介绍等】

召回路径:

  1. I2i:物品–>物品(内容相似、协同过滤、关联规则挖掘) 【计算物品相似度召回】
  2. u2i:用户----直接行为---->视频【点击喜好】
  3. u2(i2i):用户----直接行为---->视频A【此时会推荐视频A的类似视频】
  4. (u2u)2i:用户A----->行为<----用户B 【此时推荐两个用户共同的关注事物】
  5. (u2Tag)2I:用户A(Tag:老人、男性、单身) —>推荐类似标签列表【该种推荐算法较为精准】
  6. 基于图算法【PersonalRank】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jquOZpvA-1639810945734)(/Users/keino/Library/Application Support/typora-user-images/image-20211218141853574.png)]

推荐架构:

目的:既要满足用户实时交互推荐,又要满足可处理海量数据进行算法分析

NetFlix:分为三层

  1. 在线层:

    • 作用:快速响应,使用最新的数据输入

    • 缺点:为了满足实时效率,无法处理大量数据,只能读取缓存中的少量数据或者处理少量数据推送

  2. 离线层:

    • 作用:满足海量数据计算,优化算法,训练模型
    • 优点:可以使用复杂算法计算,处理海量数据
    • 缺点:无法对最新数据进行处理,只能天粒度或者小时粒度,做不到高效推荐
  3. 近线层:

    • 作用:游离于离线和实时之间,将处理结果写入高速缓存
    • 优点:可以使用接近于最新的数据,延迟时间远低于离线,略高于在线,同时也可以处理稍多的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Llbt8Ljc-1639810945735)(/Users/keino/Library/Application Support/typora-user-images/image-20211218144628901.png)]

推荐组合:

1、天粒度:离线层做算法实现,得到用户向量和物品向量存储Mysql

2、10秒钟:根据用户行为,查询TopN相似的物品列表,存储缓存

3、200ms:在线查询第二步结果,更新推荐列表

通用技术架构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNQC0PDh-1639810945741)(/Users/keino/Library/Application Support/typora-user-images/image-20211218150129704.png)]

实现推荐:

基于内容的推荐系统【Content-Based Recommendations】

注意:最早使用的推荐算法。影响深远⚠️

定义:给用户X推荐之前喜欢的物品相似的物品。即U2i2i、U2Tag2i

①物品打标签—>item矩阵

②给用户打标签【计算标签偏好】 ---->用户矩阵

③余弦相似度算法---->计算用户标签向量最相似的TopN物品列表

在这里插入图片描述

余弦相似度:

假设目前3个用户,一个A用户,一个B用户,一个C用户

用户向量矩阵:

动作片科幻片周星驰
UserA321
UserB123
UserC1000

物品向量矩阵:

动作片科幻片周星驰
无间道000
大话西游之月光宝盒001
复仇者联盟110
示例计算:

这里就举例计算用户A可能对复仇者联盟的喜欢程度吧:

P = (3 x 1 + 2 x 1 + 1 x 0) /( (3x3 + 2x2 + 1x1)^0.5 x (1x1 + 1x1 + 0x0)^0.5)

= 5 / (14^0.5 x 2^0.5)

=5 /(3.74 x 1.41)

=5/5.28

=0.94

越接近1那么越需要推荐。

再计算一个用户C可能对大话西游的喜欢程度吧:

P = (10 x 0 + 0 x 0 + 1 x 0) /( (10x10 + 0x0 + 0x0)^0.5 x (0x0 + 0x0 + 1x1)^0.5)

= 0 / (14^0.5 x 2^0.5)

=0

这肯定是不推荐的。完全不喜欢。

余弦相似度算法图:

在这里插入图片描述

分析:
  1. 优点:
    • 只需要该用户和当前视频标签即可
    • 可以不分热门或者冷门实现推荐
    • 容易满足用户口味
    • 简单的解释逻辑,就是用户喜欢的就推送,不喜欢的或者喜欢概率低的就不推送
  2. 缺点:
    • 对于打标签过程比较复杂,很难实现精准标签,有时需要人工打标签
    • 无法对新用户做推荐,因为新用户没有历史行为
    • 无法挖掘用户潜在兴趣,只能基于当前兴趣推荐

实现协同过滤的推荐系统

–使用行为数据,利用集体智慧推荐

  • 基于数据统计【记录】的CF
  • 基于模型【参数学习】的CF

协同过滤分为两种:

  1. 基于用户的协同过滤【U2U2I】先找相似的用户,然后观看相似用户推荐的视频
  2. 基于物品的协同过滤【U2I2I】先找相似的视频,然后观看相似视频的其他视频
基于用户的协同过滤:
  1. 搜索最相似的用户
  2. 计算u和新item的相似度
  3. 排序推荐

下面分开叙述:

前提:设有一用户和物品的向量矩阵:

i1i2i3i4i5i6i7
A451
B554
C245
D33
  • 搜索最相似的用户

    • Jacarrd相似度
    • 余弦相似度
    • 皮尔逊相关系数

    【Jacarrd相似度】

    比较简单,是使用用户对物品之前的关注与否来判断两个用户是否相似。

    分子:用户之间对于喜爱物品的交集个数

    分母:用户之间对于喜爱物品的并集个数

    缺点:没有考虑到用户物品的喜爱程度

在这里插入图片描述

​ 【余弦相似度】

​ 和上文类似,这里就不做叙述了

​ 缺点:计算过程中,对于用户没有关注或者没有浏览点击的物品直接喜爱程度记为0,这是不合适的。因为不够客观。容易造成相似度计算差距不明显。

​ 【皮尔逊相关系数】

​ 为了弥补余弦相似度的不足,对于用户没打分的物品,使用当前用户的对其他物品打分的均值。

​ 比如用户A对i2没有评分,这里就设置平均值,(4+5+1) = 5分,这里就默认用户A对i2也是5分

​ 计算好之后,再运用余弦相似度计算

在这里插入图片描述

  • 计算u和新item的相似度

在这里插入图片描述

需要使用第一步的结果。第一步可以得出每个用户和其他用户的相似度。

  • 直接平均法
  • 加权平均

【直接平均法】

已知用户A和用户B相似,用户A对i2没有喜爱程度【注意:上面皮尔逊系数是计算余弦相似度临时计算出的,只为为了防止不客观的用户喜爱得分,而不是真实意义上的用户对i2的喜爱程度】

但是用户B以及其他用户喜欢i2,那么推荐给用户A的权重就是:其他相似用户的得分的平均数:【假设其他相似用户是BC】

在这里插入图片描述

【加权平均】

那么推荐给用户A的权重就是:其他相似用户的相似度作为权重 x 其他用户得分累计作为分子,其他用户相似度之和作为分母。

在这里插入图片描述

  • ​ 排序推荐

    求出用户A对每一个物品的喜爱程度,按照喜爱程度排序推荐接即可

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

一条挨踢老狗的 2017 年终总结

2018年是中国的狗年&#xff0c;狗常常象征着忠诚&#xff0c;有忠贞不渝的意义&#xff0c;有时也代表财富。一条常年战斗在挨踢界&#xff0c;对挨踢事业忠贞不渝的老狗今天来回顾2017、展望2018。 作为一条对挨踢事业忠贞不渝的老狗&#xff0c;理所当然是热爱这个工作的&a…

Java面对对象三大特性之封装】

目录 1.封装2. 访问权限2.1 public权限2.2private权限2.3 默认权限 3.包的定义4. static成员5.静态成员初始化6.对象的打印 1.封装 封装&#xff1a;就是将数据和操作数据的方法进行结合&#xff0c;隐藏对象的属性和方法&#xff0c;仅对外实现一些接口和对象进行交互 其实就是…

Storm入门之第6章一个实际的例子

本文翻译自《Getting Started With Storm》译者&#xff1a;吴京润 编辑&#xff1a;郭蕾 方腾飞 本章要阐述一个典型的网络分析解决方案&#xff0c;而这类问题通常利用Hadoop批处理作为解决方案。与Hadoop不同的是&#xff0c;基于Storm的方案会实时输出结果。 我们的这个…

20222817 2022-2023-2《网络攻防实践》第十一次作业

目录 1.实践内容 2.实践过程 3 学习中遇到的问题及解决 4 实践总结 1.实践内容 1.Web浏览器渗透攻击实验 任务&#xff1a;使用攻击机和Windows靶机进行浏览器渗透攻击实验&#xff0c;体验网页木马构造及实施浏览器攻击的实际过程。 2.取证分析实践—网页木马攻击场景分析…

【Storm入门指南】第六章 真实示例

本章将演示一个典型的网页分析方案&#xff0c;通常使用 Hadoop 批量作业来解决的问题。不像 Hadoop 的实现方案&#xff0c;基于 Storm 的解决方案实时刷新并呈现结果。 示例有三个主要部分&#xff08;如图6.1所示&#xff09;&#xff1a; 一个 Node.js 的web应用&#xff0…

Storm 实时分析系统详解

一、Storm 概述 1、Storm 简介 Storm 是一个分布式的,可靠的,容错的数据流处理系统。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。Storm 集群的输入流由一个被称作 spout 的组件管理,spout 把数据传递给 bolt, bolt 要么把数据保存到某种存…

Storm 的一个案例

本章要阐述一个典型的网络分析解决方案&#xff0c;而这类问题通常利用Hadoop批处理作为解决方案。与Hadoop不同的是&#xff0c;基于Storm的方案会实时输出结果。 我们的这个例子有三个主要组件&#xff08;见图6-1&#xff09; 一个基于Node.js的web应用&#xff0c;用于测试…

getting start with storm 翻译 第六章 part-4

转载请注明出处&#xff1a;http://blog.csdn.net/lonelytrooper/article/details/9982967 Redis服务器 Redis是一套高级的用于持久化的内存KeyValue存储系统(见http://redis.io)。使用它来存储下述信息&#xff1a; ﹒产品信息&#xff0c;用于服务网站。 ﹒用户导航队列…

Phpstorm调试详解(包含命令行以及浏览器)

2019独角兽企业重金招聘Python工程师标准>>> 运行环境 PHP版本&#xff1a;5.5.12 Phpstorm : 9.0.2 xdebug : 2.2.5 下载地址&#xff0c;请下载与当前PHP版本对应的版本 系统平台&#xff1a;Windows 7 一 &#xff0c;要先给php安装xdebug扩展 1&#xff0c;…

windows核心编程之进程(3)

获取系统版本的函数: GetVersion返回一个DWORD类型的值&#xff0c;高子返回MS-DOS版本号&#xff0c;低字返回windows版本号 本来按照逻辑来说应该是低字的高字节返回windows的主版本号&#xff0c;低字节返回此版本号&#xff0c;但是编写该代码程序员犯了一个小错误&#…

2023CCPC河南省赛 VP记录

感觉现在的xcpc&#xff0c;风格越来越像CF&#xff0c;不是很喜欢&#xff0c;还是更喜欢多点算法题的比赛 VP银了&#xff0c;VP银也是银 感觉省赛都是思维题&#xff0c;几乎没有算法题&#xff0c;感觉像打了场大型的CF B题很简单没开出来&#xff0c;一直搞到最后&…

大学计算机专业 学习Python学习路线图(最新版)

这是我刚开始学习python时的一套学习路线&#xff0c;从入门到上手。&#xff08;不敢说精通&#xff0c;哈哈~&#xff09; 希望对大家有帮助哈~ 大家需要高清得完整python学习路线可以 一、Python入门、环境搭建、变量、数据类型 二、数据库编程 三、Linux系统 四、网页编…

哪些手机待办事项软件可以记录备忘并设置提醒?

当下手机软件的种类那么多&#xff0c;为什么有那么多人使用手机待办事项软件呢&#xff1f;原因很简单&#xff0c;因为这类软件可以记录备忘并设置提醒&#xff0c;非常适合哪些喜欢提前规划待办事项的人使用。但是&#xff0c;面对如此多的手机待办事项软件&#xff0c;具体…

【HTML】第 2 节 - HTML 标签

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、标题标签 3、段落标签 4、文本格式化标签 5、图像标签 5.1、基本作用 5.2、属性 6、超链接标签 7、音频标…

Vivado下时序逻辑模块的仿真

文章目录 D触发器两级D触发器带异步复位的D触发器带异步复位和同步置数的D触发器移位寄存器单口RAM伪双口RAM真双口RAM单口ROM 组合逻辑电路在逻辑功能上特点是任意时刻的输出仅仅取决于当前时刻的输入&#xff0c;与电路原来的状态无关。 时序逻辑在逻辑功能上的特点是任意时刻…

单元测试方法-cmockery实践

目录 单元测试概念 引子 定义 内容 方法 单元测试模型 测试模型构建 单元测试工具简介 Cmockery使用介绍 简介 使用 VPBX实践 UT框架搭建 目录 编译&#xff1a; 实例demo 例1&#xff1a; 例2&#xff1a; 例3&#xff1a; 例4&#xff1a; 例5&#xff…

从0开始搭建vue3+vite+ts+pinia项目

目录 项目搭建选项 项目搭建步骤 本地开发环境 Vite脚手架构建项目 关联Git仓库 开发工具 安装pinia 安装Sass 安装Vant-UI 安装postcss-pxtorem&#xff08;移动端项目&#xff09; 安装axios 本地调试 环境变量 本地代理 全局UI组件 路由中间件 项目部署 n…

layui(2)----页面元素

水平导航栏 依赖加载模块&#xff1a;element <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…

AcWing 回转游戏 dfs IDA* 剪枝 统一操作 java

&#x1f351; 算法题解专栏 &#x1f351; 回转游戏 如下图所示&#xff0c;有一个 # 形的棋盘&#xff0c;上面有 1 , 2 , 3 1,2,3 1,2,3 三种数字各 8 8 8 个。 给定 8 8 8 种操作&#xff0c;分别为图中的 A s i m H A \\sim H AsimH。 这些操作会按照图中字母和箭头…

MCGS昆仑通态触摸屏导入博途自定义数据类型和DB块变量的具体方法演示

MCGS昆仑通态触摸屏导入博途自定义数据类型和DB块变量的具体方法演示 如下图所示,在博途中新建项目后,添加自己所需的数据类型,然后选中该数据类型,右击选择“从块生成源“—”仅所选块“, 如下图所示,设置文件名后点击保存, 如下图所示,选中需要导出的DB块,右击选…