当前位置: 首页 > article >正文

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

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

上一篇文章:《【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.kler.cn/a/161551.html

相关文章:

  • 《新智慧》期刊的征稿范围主要包括哪些方面?
  • Golang | Leetcode Golang题解之第559题N叉树的最大深度
  • GIS空间分析案例---城市公共设施配置与服务评价
  • 【图像压缩感知】论文阅读:Self-supervised Scalable Deep Compressed Sensing
  • K8资源之endpoint资源EP资源
  • 【深度解析】CSS工程化全攻略(1)
  • 【Java基础篇 | 面向对象】—— 聊聊什么是接口(上篇)
  • 智能优化算法应用:基于鹰栖息算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 2.HTML进阶
  • 为什么伦敦银交易中支撑和阻力位这么重要?
  • 展开说说:Android之广播接收者
  • 连接服务器的ssh终端自动断开解放方法
  • Comparator Comparators Comparable Collections排序源码解析
  • SRC挖掘漏洞XSS
  • uni-app实现返回刷新上一页
  • 基于selenium工具刷b站播放量(请谨慎使用)
  • Spring AOP从入门到精通
  • <蓝桥杯软件赛>零基础备赛20周--第9周--前缀和与差分
  • Linux 防病毒软件:CentOS有哪些付费的防病毒软件
  • Python if else条件语句详解
  • C++新经典模板与泛型编程:用成员函数重载实现is_base_of
  • java读取微信p12证书信息
  • 鸿蒙原生应用/元服务开发-Stage模型能力接口(一)
  • 【Python3】【力扣题】383. 赎金信
  • python flask Jinja2模板学习
  • elementui el-table用span-method方法对相同的列名或行名进行合并