【推荐系统】了解推荐系统的生态(重点:推荐算法的主要分类)

【大家好,我是爱干饭的猿,本文重点介绍推荐系统的关键元素和思维模式、推荐算法的主要分类、推荐系统常见的问题、推荐系统效果评测。
后续会继续分享其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】

上一篇文章:《【SparkSQL】SparkSQL的运行流程 & Spark On Hive & 分布式SQL执行引擎》

1. 了解推荐系统的生态

本章带你了解推荐系统的生态,让你从思维上重塑对推荐系统的认知。了解推荐系统是由哪些关键元素支撑的,推荐算法的分类以及什么才算一个好的推荐系统。

1.1 推荐系统的关键元素和思维模式

推荐系统是一个系统工程
在这里插入图片描述

1. 推荐系统的关键元素-数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 数据是整个推荐系统的基石 - 清洗和预处理
  • 用户行为能真实的反映每个用户的偏好和习惯
  • 显式反馈数据会比较稀疏,隐式反馈数据蕴含大量的信息

2. 推荐系统的关键元素-算法

  • 基于流行度的推荐算法 - 根据PVUV进行推荐,无个性推荐
  • 基于协同过滤的推荐算法
  • 基于内容的推荐算法 - 标签、特征向量
  • 基于模型的推荐算法 - 解决协同过滤算法的数据稀疏性的问题
  • 混合算法

3. 推荐系统的关键元素-领域知识

  • 不同领域,不同行业有自己的知识体系和评价准则
  • 泛化的推荐无法满足具体领域中特定的用户需求
  • 结合领域知识定制推荐系统
    在这里插入图片描述

4. 推荐系统的关键元素-UI

  • 推荐结果的最终呈现给用户的展示位置,提供了哪些信息
  • 不同物品的推荐,根据用户的关注点,展现的方案也要不同
    在这里插入图片描述

5. 推荐系统的思维模式

  • 要有不确定的思维 - 推荐算法都是概率算法
  • 目标思维 - 追求的是指标的增长

1.2 推荐算法的主要分类

在这里插入图片描述

1. 基于关联规则的推荐算法

  • 基于Apriori 的算法

    • Apariori是无监督学习算法
    • Apariori是挖掘一堆数据集中数据之间的某种关联
    • 数据集很大时,Apariori运行效率很低 - FP-Growth解决此问题
  • 基于FP-Growth的算法

    • FP-Growth 不产生候选集 - 和Apriori的两个不同点
    • FP-Growth只需要扫描⒉次数据集 - 和Apriori的两个不同点
    • 数据集映射到一颗FP树上,再从这棵树挖掘频繁项集 - 思路

关联分析算法应用场景关联分析算法应用场景

  • 购物篮分析:
    通过放入购物篮的不同商品之间的联系,分析顾客的购物习惯
    • 例子:购买鞋子的顾客,10%的会同时购买袜子
      帮助商家能制定营销策略,货架摆放

2. 基于内容的推荐算法

  • 推荐内容相似的物品 - 文章、商品类目及文本信息

在这里插入图片描述

  • TF-IDF算法步骤: - 基于自然语言
    • 提取关键词及其TFIDF值
    • 将共同关键词的TFIDF值的积并求和
    • 获取相似度的值

在这里插入图片描述

3. 基于协同过滤的推荐算法

在这里插入图片描述

  • 基于用户的协同过滤:兴趣相近的用户会对同样的物品感兴趣
  • 基于物品的协同过滤:推荐给用户他们喜欢的物品相似的物品
  • 基于物品的协同过滤,要基于用户的方式 - 不能简单推荐相似物品

在这里插入图片描述

  • 缺点:

    • 数据稀疏性和冷启动问题
  • 优点:

    • 挖掘用户的潜在兴趣
    • 仅需要评分矩阵来训练矩阵分解模型
  • SVD++是最流行的协同过滤模型 - 解决数据稀疏的问题

  • 基于概率的矩阵分解PMF - 解决SVD模型过于复杂的问题

  • Spark内置的推荐算法是基于隐语义模型的协同过滤 - ALS
    在这里插入图片描述

4. 基于模型的推荐算法

  • 模型 - 基于深度学习

5. 基于混合的推荐算法

  • 加权的混合:多种推荐算法按照权重组合起来
  • 分层的混合:多种推荐算法,前一个推荐结果作为下一个的输入
  • 分区的混合:多种推荐机制,将不同的推荐结果分不同的区推荐

1.3 推荐系统常见的问题

  • 冷启动
  • 数据稀疏
  • 不断变化的用户喜好
  • 不可预知的事项

1. 冷启动

在这里插入图片描述
冷启动问题解决方法:

  • 根据用户注册信息对用户进行分类

  • 推荐热门的排行榜

  • 基于深度学习的语义理解模型

  • 引导用户把自己的属性表达出来

  • 利用用户在社交媒体的信息

方案:

  • 文本分析
  • 主题模型
  • 给物品打标签
  • 推荐排行榜单

2. 数据稀疏

  • 用户喜欢的物品,与其相似的用户也喜欢这个物品 - 协同过滤
  • 用户-物品矩阵是稀疏矩阵 - 计算不准确

解决方案:

  • 降低矩阵维数能降低数据稀疏性 - 奇异值分解
    • 弊端:降低矩阵维数会丢失有效数据,使得预测的评分不准确
  • 假设用户对其感兴趣物品相似的物品也感兴趣 - 数据填充
    • 弊端:固定填充没有考虑到项目的属性,对推荐带来偏差
  • 基于深度学习的语义理解模型 - 基于物品本身的信息

3. 不断变化的用户喜好

解决方案:

  • 对用户行为的存储有实时性
  • 推荐算法要考虑到用户近期行为和长期行为
  • 要不断挖掘用户新的兴趣爱好

4. 什么是好的推荐系统?

  • 推荐给用户的是用户感兴趣的内容
  • 满足所有内容都被推荐给感兴趣的用户
  • 能预测用户的行为
  • 帮助用户发现那些他们可能会买,但不容易发现的东西

1.4 推荐系统效果评测

  • 模型离线实验
  • A/B Test在线实验
  • 用户调研和用户反馈

1. 模型离线实验

  • 将数据集分为训练集和测试集
  • 在训练集上训练推荐模型,在测试集上进行预测
  • 通过预定的指标来评测测试集上的预测结果

2. A/B Test在线实验

  • A/B Test在线实验是以正交分桶为基础(随机将用户划分几组)
  • 根据分桶执行不同的算法得出差异化的指标
  • 取其中较优的算法

在这里插入图片描述

  • A/B Test可以在各个桶间进行多层多类的AB Test测试
  • A/B Test 也可以作为针对特定用户进行个性化的推荐

3. 用户调研和用户反馈

  • 预测准确率高不代表用户满意度高
  • 用户调研需要有一些真实的用户,需要他们完成一些的任务
  • 缺点是用户调研成本高,一般情况下很难进行大规模的用户调查

4. 评测指标

4.1 预测准确度

预测准确度:度量预测用户行为的能力

4.1.1 评分预测
  • 评分预测:用户对物品的评分行为
  • 预测准确度:均方根误差(RMSE)和平均绝对误差(MAE)

在这里插入图片描述

4.1.2 TopN推荐
  • TopN推荐:个性化推荐列表
  • 预测准确度:准确率/召回率

在这里插入图片描述

  1. 训练集(PHP, Java,C,C++)
  2. 测试集T(u)(Ruby,R,Python)
  3. 推荐列表R(u) (R,Python,Java,Vue)
  4. R(u)和T(u)的交集=2,准确率=2/4,召回率=2/3
4.2 覆盖率
  • 覆盖率:描述推荐系统对物品长尾的发掘能力
    在这里插入图片描述
4.3 多样性
4.4 新颖性
4.5 惊喜度
4.6 信任度
4.7 实时性
4.8 健壮性

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

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

相关文章

万户协同办公平台ezoffice wpsservlet接口任意文件上传漏洞

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、漏洞描述 万户ezOFFICE协同管理平台是一个综合信息基础应用平台&am…

【webpack】初始化

webpack 旧项目的问题下一代构建工具 Vite 主角 :webpack安装webpack1,mode的选项2,使用source map 精准定位错误行数3,使用watch mode(观察模式),自动运行4,使用webpack-dev-server工具,自动刷…

【Flutter】vs2022上开发flutter

在vs上开发flutter,结果扩展仓库上没办法找到Dart,Flutter。 在 这 搜索Dart时也无法找到插件。 最后发现是安装工具出错了 安装了 开发需要的是

UDS诊断 10服务

文章目录 简介诊断会话切换请求和响应1、请求2、子功能3、肯定响应4、否定响应5、特殊的NRC 为什么划分不同会话报文示例UDS中常用 NRC参考 简介 10服务,即 Diagnostic Session Control(诊断会话控制)服务用于启用服务器中的不同诊断会话&am…

HTML5+CSS3小实例:3D翻转Tab选项卡切换特效

实例:3D翻转Tab选项卡切换特效 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=…

Jsoup爬取HTTPS页面数据资源,并导入数据库(Java)

一、实现思路 示例页面&#xff1a; 2020年12月中华人民共和国县以上行政区划代码 忽略https请求的SSL证书通过Jsoup获取页面标签遍历行标签&#xff0c;分别获取每个行标签的第二个和第三个列标签将获取到的行政代码和单位名称分别插入sql语句占位符执行sql语句&#xff0c…

Ray构建GPU隔离的机器学习平台

Ray框架介绍 Ray 是一个开源分布式计算框架,在 机器学习基础设施中发挥着至关重要的作用。Ray 促进分布式机器学习训练,使机器学习从业者能够有效利用多个 GPU 的能力。 Ray可以在集群上分布式地运行任务,并且可以指定任务运行时需要使用的GPU数量。Ray可与Nvidia-docker等…

ChatGPT/GPT4科研实践篇: AI绘图+论文写作+编程

1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用&#xff0c;完成数据分析、编程以及深度学习等相关科研项目。 4、…

基于ssm vue协同过滤算法的图书推荐系统源码和论文

基于ssm vue协同过滤算法的图书推荐系统源码和论文742 idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 开发技术 ssm 摘 要 “互联网”的战略实施后&#xff0c;很多行业的信息化水平都有了很大的提升。但是目前很多行业…

Matlab 点云曲线探测(算法不稳定,仅用于学习)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 这是一个很有趣的曲线探测的方法,不过我没有复现出论文中那样的效果,可能是理解有误,但这个算法仍然是很有意思,故这里也对其进行记录。 按照论文中的思路,首先我们需要通过一种线性强度图来计算确定每个点的法…

三层交换机配置DHCP服务

第一步&#xff1a;进入二层交换机Switch 1&#xff09;输入命令&#xff1a; Switch(config)#vlan 10 Switch(config)#vlan 20 2&#xff09;修改F0/1 和F0/2为access口&#xff0c;F0/24为trunk口 第二步&#xff1a;进入三层交换机 1&#xff09;输入命令 Switch(config)#…

Jenkins中文官网地址

Jenkins中文官网地址&#xff1a; Jenkins 用户手册Jenkins 是一个开源自动化服务器https://www.jenkins.io/zh/doc/