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

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

上一篇文章:《【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.mzph.cn/news/205716.shtml

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

相关文章

javaee实验:Spring Boot 整合 Mybatis

目录 MybatisMyBatis 框架简介Mybatis 框架执行流程图映射器 实验目的实验内容实验过程数据库准备项目结构代码实现 实验结果 Mybatis MyBatis 框架简介 Mybatis 的前身是 Apache 的开源框架 iBatis,与 Hibernate 一样是一个 Java 持久层的框 架。Mybatis 的优势在…

使用Python实现的Excel像素画

简介:本项目主要使用python语言,将图片转为 Excel,图片中的每一个像素转化为 Excel 中的每一个单元格。主要使用pillow和xlsxwriter这两个模块。项目使用一个python文件即可。 一:项目功能和流程介绍 项目的主要功能&#xff1a…

Python-封装配置文件

Code [url] baidu http://www.baidu.com[value] send_value 百度[server] ip 220.181.111.188封装的格式可以套用 # 封装,类似函数调用 import configparserclass ReadConfigIni():def __init__(self,filename):self.cf configparser.ConfigParser()self.cf.read(filenam…

Pr项目标准化ProjectNormalizer插件|解决PR剪辑视频在Windows和Mac电脑切换打开pr项目工程文件需要重新链接媒体问题

当我们在 Windows 中打开在 Mac 上剪辑视频的 Premiere Pro 项目文件时,需要重新链接媒体。通常,如果选中“自动重新链接其他人”复选框,媒体将在某种程度上链接在一起。但是,有时这是行不通的,并且可能是一个非常困难…

java获取ip的工具类

java获取ip的工具类 直接上代码 package com.loit.park.common.utils;import org.slf4j.Logger; import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException;/*** author hanjinqun*…

百面嵌入式专栏(岗位分析)大疆嵌入式工程师【通信/流媒体】

文章目录 一、岗位简介二、解析2.1、网络协议2.2、音视频传输算法2.3、大规模音视频会议或直播系统 三、简历 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将对大疆嵌入式工程师【通信/流媒体】岗位进行分析 。 一、…

视频封面提取:精准截图,如何从指定时长中提取某一帧图片

在视频制作和分享过程中,一个有吸引力的封面或截图往往能吸引更多的观众点击观看。有时候要在特定的时间段内从视频中提取一帧作为封面或截图。如果每个视频都手动提取的话就会耗费很长时间,那么如何智化能批量提取呢?现在一起来看下云炫AI智…

用户案例|Milvus 助力 Credal.AI 实现 GenAI 安全与可控

AIGC 时代,企业流程中是否整合人工智能(AI)对于的企业竞争力至关重要。然而,随着 AI 不断发展演进,企业也在此过程中面临数据安全管理、访问权限、数据隐私等方面的挑战。 为了更好地解决上述问题,Credal.A…

0011Java程序设计-ssm药店管理系统微信小程序

文章目录 摘 要目 录系统实现5.2服务端开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:776871563 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机…

利用eclipse导入外部java工程

利用eclipse导入外部java工程,打开eclipse,依次点击File-Import,…按下图依次执行…

粒子库particles.vue3在项目中的使用

一、particles.vue3是什么 particles.vue3 是一个 Vue 3 的组件库,用于在 Vue 3 项目中创建和管理粒子效果。它基于 tsparticles 引擎,提供了一系列的 Vue 组件,使我们能够轻松地在应用程序中添加动态的粒子效果。   如果您正在开发一个 V…

Xilinx FPGA——ISE时序约束“建立时间不满足”问题解决记录

一、现象 最近使用赛灵思的FPGA设计项目时,出现时序约束失效问题。 点进去发现如下: 一个始终约束没有生效,有多处报错。 二、原因 出现这个问题的原因是,建立时间不满足。 时序违例的主要原因是建立时间和保持时间不满足要求&a…

Spark RDD惰性计算的自主优化

原创/朱季谦 RDD(弹性分布式数据集)中的数据就如final定义一般,只可读而无法修改,若要对RDD进行转换或操作,那就需要创建一个新的RDD来保存结果。故而就需要用到转换和行动的算子。 Spark运行是惰性的,在…

【Python】Python仓储管理系统(源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

uni-app 微信小程序之好看的ui登录页面(二)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…

go的两大测试方法- 官网推荐

go的两大测试方法- 官网推荐 go的两大测试方法- 官网推荐常见的不正规测试方法main方法个例测试验证 - 不正规1. 提供一个函数:Reverse(input string)进行测试2. 直接在函数下创建main函数下进行个例测试3. 测试发现,Reverse方法不支持某些汉字&#xff…

【SQL开发实战技巧】系列(四十九):Oracle12C常用新特性☞表分区部分索引(Partial Indexes)

系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…

数据分析基础之《matplotlib(4)—柱状图》

一、柱状图绘制 1、柱状图要素 有类别 2、需求:对比每部电影的票房收入 电影数据如下图所示: 3、matplotlib.pyplot.bar(x, height, width0.8, bottomNone, *, aligncenter, dataNone, **kwargs) 说明: x:有几个类别 height&am…

玩转Sass:掌握数据类型!

当我们在进行前端开发的时候,有时候需要使用一些不同的数据类型来处理样式,Sass 提供的这些数据类型可以帮助我们更高效地进行样式开发,本篇文章将为您详细介绍 Sass 中的数据类型。 布尔类型 在 Sass 中,布尔数据类型可以表示逻…

每日一练:插入排序

1. 概念及原理 插入排序是一种简单直观的排序算法,其基本思想是将一个元素插入到已经排序好的部分,然后不断地重复这个过程,直到整个数组有序。下面是插入排序的算法原理: 初始状态: 数组被分为已排序和未排序两个部分…