【基于协同过滤算法的推荐系统项目实战-2】了解协同过滤推荐系统

本文目录

  • 1、推荐系统的关键元素
    • 1.1 数据
    • 1.2 算法
    • 1.3 业务领域
    • 1.4 展示信息
  • 2、推荐算法的主要分类
    • 2.1 基于关联规则的推荐算法
      • 基于Apriori的算法
      • 基于FP-Growth的算法
    • 2.2 基于内容的推荐算法
    • 2.3 基于协同过滤的推荐算法
  • 3、推荐系统常见的问题
    • 1、冷启动
    • 2、数据稀疏
    • 3、不断变化的用户喜好
  • 4、推荐系统效果评测
    • 4.2 模型离线实验
    • 4.2 用户A\B Test在线实验

1、推荐系统的关键元素

1.1 数据

数据是整个推荐系统的基石,我们需要对数据进行清洗和预处理。

用户行为能够真实的反映每个用户的偏好和习惯,其中的显示反馈数据会比较稀疏,隐式的反馈数据蕴含了大量的信息。
在这里插入图片描述
在这里插入图片描述

1.2 算法

基于流行度的推荐算法:是基于PV、UV来进行推荐,没有个性推荐。

基于协同过滤的推荐算法:是目前比较主流的一个推荐算法。

基于内容的推荐算法:是通过打标签进行推荐的,可以基于特征向量对内容自动打标签。(以前是人工打标签,现在可以自动打标签了)

基于模型的推荐算法:解决协同过滤算法的数据稀疏性的问题。

1.3 业务领域

不同的领域,不同的行业都会有自己的知识体系,所以泛化的一些推荐系统是无法满足具体领域中的特定的用户需求,所以需要结合知识去特定一些推荐系统。

例如在:
金融领域是基于风险偏好的个性化推荐方法。
社交领域是基于社交信息的用户行为挖掘方法。
电商领域是基于情境感知的个性化偏好的挖掘方法。

1.4 展示信息

可以理解为展示UI,也就是前端数据可视化,你需要把什么样的信息、哪些信息展示给用户,才能做到吸引,高质量的吸引是重要的, 不能过于繁杂,也不能过于少, 要精准。

2、推荐算法的主要分类

在这里插入图片描述

2.1 基于关联规则的推荐算法

应用场景:购物篮分析。
通过放入购物篮的不同商品之间的联系,分析顾客的购物习惯。

基于Apriori的算法

Aparior是无监督学习算法,挖掘一堆数据集中的数据之间的某种关联。但是会存在一些明显的缺点,如数据集很大的时候,运行效率很低。

假设有四种单品,那如果两两组合,那少于某个特定值的就会淘汰,这个特定值叫做 支持度。只有当支持度大于某个特定值的时候,才能认为是有效的。
在这里插入图片描述

基于FP-Growth的算法

FP-Growth不产生候选集。另外只需要扫描2次数据集,这是和Apriori最大的两个不同点。

2.2 基于内容的推荐算法

简而言之,就是推荐内容相似的物品。

通过打标签tag来找内容相似的物品,也可以通过文本相似度来找内容相似的物品。

通过自然语言挖掘:文本相似度是通过TF-IDF算法来完成的:提取关键词及其TFIDF值,将共同关键词的TFIDF的值的积并求和,然后获取相似度的值。

最后,也能通过分类算法来分类。
在这里插入图片描述

2.3 基于协同过滤的推荐算法

在这里插入图片描述
基于用户的协同过滤:是指兴趣相近的用户会对同样的物品感兴趣。
基于物品的协同过滤:是指推荐给用户他们喜欢的物品相似的物品。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
协同过滤是为了解决数据稀疏,为此我们进行特征分解,把评分矩阵不全,进行降维。通过奇异值分解来进行特征分解,提出了SVD,但是SVD过于复杂,又提出了PMF。

3、推荐系统常见的问题

1、冷启动

在这里插入图片描述
根据用户注册信息对用户进行分类,如手机号运营商、邮箱等等可以适当解决用户冷启动。

也可以通过推荐热门的排行榜、基于深度学习的语义模型理解来解决。

所以需要引导用户把自己的属性表达起来。

对于物品冷启动,则需要通过文本分析、主题模型、给物品打标签、排行榜单等来做到。

2、数据稀疏

用户-物品矩阵是稀疏矩阵。其解决方案如下:
在这里插入图片描述
但降低维度也会有一定丢失属性。

3、不断变化的用户喜好

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

4、推荐系统效果评测

4.2 模型离线实验

1、模型离线实验:将数据集分为训练数据和测试数据集。在训练集上训练推荐模型,在测试集上进行预测。最后通过预定的指标来评测测试集上的预测结果。
在这里插入图片描述
模型离线实验是推荐系统中的一个基石,路径短,方便完成闭环以此来完成快速迭代,同时不会影响线上的用户体验。
最大的优点就是无需真实的用户参与。

但最大的缺点也是没有用户数据集真实,无法获得真实的用户关心指标。

4.2 用户A\B Test在线实验

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java 每日一练 (9)

文章目录1. 单选2. 编程1. 单选 1. 下面程序的输出是:() A : FmNwxy B :fmnwxy C :wxyfmn D : Fmnwxy 答案 : D , 这里主要考察 toUpperCase 和 replace 方法 , 注意点 : toUpperCas…

动态规划-基础(斐波那契数、爬楼梯、使用最小花费爬楼梯、不同路径、不同路径II、整数拆分、不同的二叉搜索树)

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的。动态规划问题,五步走:状态定义&am…

【数据结构】双向链表

🚀write in front🚀 📜所属专栏: 初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是…

海思SD3403/SS928V100开发(7)mcp2515-SPI转CAN驱动开发

1. 前言 需求: 需要一路can进行收发 分析: 根据目前使用较多的方案是使用主控端SPI接口 接入MCP2515芯片进行CAN协议转换 硬件: MCP2515->SPI2->SS928 2. Uboot开发 2.1 pinmux复用配置 2.1.1 修改uboot参数表 路径: osdrv/tools/pc/uboot_tools/ SS928V100…

Android 进程间通信机制(三) 系统进程与应用进程通信

一. 概述 Android中有一个重要的系统进程(system_server),运行着系统中非常重要服务(AMS, PMS, WMS等), 针对Activity而言,系统进程需要不断地调度Activity执行,管理Activity的状态; 每一个APK都需要运行在一个应用进程中&#xf…

【动态规划】最长上升子序列(单调队列、贪心优化)

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

jvm-题库

1、JVM内存模型 JVM内存区域总共分为两种类型 线程私有区域:程序计数器、本地方法栈和虚拟机栈 线程共享区域:堆(heap)和方法区 特征 线程私有区域:依赖用户的线程创建而创建、销毁而销毁,因用户每次访问都…

带头双向循环链表

在前面我们学习了单链表,发现单链表还是有一些不够方便,比如我们要尾插,需要遍历一遍然后找到它的尾,这样时间复炸度就为O(N),现在我们引入双向带头链表就很方便了,我们先看看它的结构。通过观察,我们发现一…

Vue全新一代状态管理库 Pinia【一篇通】

文章目录前言1. Pinia 是什么?1.1 为什么取名叫 Pinia?1.2. 为什么要使用 Pinia ?2. 安装 Pinia2.1.创建 Store2.1.1. Option 类型 Store2.1.2 Setup 函数类型 Store2.1.3 模板中使用3. State 的使用事项(Option Store )3.1 读取 State3.2 …

EEPROM芯片(24c02)使用详解(I2C通信时序分析、操作源码分析、原理图分析)

1、前言 (1)本文主要是通过24c02芯片来讲解I2C接口的EEPROM操作方法,包含底层时序和读写的代码; (2)大部分代码是EEPROM芯片通用的,但是其中关于某些时间的要求,是和具体芯片相关的,和主控芯片和外设芯片都有关系&…

一天吃透TCP面试八股文

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

vue模板语法

src目录文件说明: 1,数据绑定{{}} 数据绑定最常见的形式就是使用{{}}(双花括号)语法的文本插值 在template中使用{{}}文本插值语法中,设置一个变量,再在script中引入data函数,在return中进行数…

接口测试和性能测试有什么区别?我敢打赌你一定不知道

目录 一、什么是接口测试 二、接口测试原理 三、接口测试步骤 四、什么是性能测试 五、性能测试步骤 六、接口测试和性能测试的区别 一、什么是接口测试 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点…

2023最全Python+Selenium环境搭建教程-你绝对想不到有这么简单!

还有视频版本结合项目实战介绍,轻松学习! PythonSelenium自动化测试环境搭建Web自动化测试全套教程_哔哩哔哩_bilibiliPythonSelenium自动化测试环境搭建Web自动化测试全套教程共计180条视频,包括:1、Web自动化测试需求和挑战、2…

深度学习-Tensorflow使用Keras进行模型训练

本文以FasionMNIST/加州房价数据集为例,介绍KerasAPI进行分类问题/回归问题模型训练的方法Tensorflow版本Tensorflow和keara都需要2.0及以上版本import tensorflow as tf from tensorflow import keras print(tf.__version__) print(keras.__version__)分类MLP构建数…

AI_Papers周刊:第六期

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 2023.03.13—2023.03.19 文摘词云 Top Papers Subjects: cs.CL 1.UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation 标题:UPRISE:改进零样本评估…

要是早看到这篇文章,你起码少走3年弯路,20年老程序员的忠告

文章目录前言一、程序员的薪资是怎么样的?二、我现在的情况适合做程序员吗?三、大学期间到底应该学些什么?四、工作还是考研?五、总结前言 我是龙叔,一名工作了20多年的退休老程序员。 如果你在工作之前看到这篇文章…

【AI大比拼】文心一言 VS ChatGPT-4

摘要:本文将对比分析两款知名的 AI 对话引擎:文心一言和 OpenAI 的 ChatGPT,通过实际案例让大家对这两款对话引擎有更深入的了解,以便大家选择合适的 AI 对话引擎。 亲爱的 CSDN 朋友们,大家好!近年来&…

libcurl库访问人工智能平台之人脸识别

一、前言上一篇文章我们调用libcurl库去访问了百度,访问的是http协议的百度云主页。那么现在我们要基于翔云人工智能平台来实现人脸识别,具体的操作大概就是我们在linux下调用libcurl库去访问翔云人工智能平台,然后实现我们想要的两张人脸图片…

FPGA纯verilog实现RIFFA的PCIE通信,提供工程源码和软件驱动

目录1、前言2、RIFFA简介RIFFA概述RIFFA架构RIFFA驱动3、vivado工程详解4、上板调试验证并演示5、福利:工程代码的获取1、前言 PCIE是目前速率很高的外部板卡与CPU通信的方案之一,广泛应用于电脑主板与外部板卡的通讯,PCIE协议极其复杂&…