推荐系统算法 协同过滤算法详解(二)皮尔森相关系数

news2024/12/24 8:05:19

目录

前言

协同过滤算法(简称CF)

皮尔森(pearson)相关系数公式

算法介绍

 算法示例1:

算法示例2


前言

理解吧同胞们,实在是没办发把wps公式复制到文章上,只能截图了,我服了!!!

协同过滤算法(简称CF)

在早期,协同过滤几乎等同于推荐系统。主要的功能是预测和推荐。协同过滤推荐算法分为两类,分别是:

(英文userCF)

  1. 基于用户的协同过滤算法(相似的用户可能喜欢相同物品);这个一般适合推荐新闻和皮皮虾之类的,数据跟人有很大关系,而且信息是每日都是更新的。如果你推荐购物这种,因为一个新建的用户可能购买的商品不足全量商品万分之1,商品数据量大,人对商品购买少,很难找到相似的人;随着用户和物品数量的增加,计算复杂度增加,所以需要这种更适合第二种算法。

(英文itemCF)

  1. 基于物品的协同过滤算法(这种方法通过分析物品之间的相似性,推荐与用户之前喜欢的物品相似的其他物品)。当然也有缺点:需要足够的用户-物品交互数据来找出物品之间的相似性。

当然你除此之外,还有基于模型的协同过滤方法。这就属于更高级的推荐了,他一般是多因素,也是现代化推荐系统的主力。

  • 利用机器学习算法(如矩阵分解、深度学习等)来预测用户对物品的评分或偏好。
  • 优点:能够处理大规模数据集,提高推荐质量。
  • 缺点:模型训练可能需要大量计算资源。

上一章讲 协同过滤算法详解(一)过了下杰卡德相似度 和 余弦相似度,如果跳不进去,直接在我的博客搜索

推荐系统算法 协同过滤算法详解(一)杰卡德相似度和余弦相似度使用、缺陷-CSDN博客

这两者都是衡量相似度的方法,但它们通常不直接被称为协同过滤算法。不过,它们可以用于协同过滤算法中计算用户或物品之间的相似度。下面讲重点了。

皮尔森(pearson)相关系数

        余弦相似度的优化版本就是皮尔森相关系数(通过使用用户平均分对独立评分进行修正,减少了用户评分偏移设置的影响),两个相似度比较其实就是两条线,这两个都是通过计算三角的度数来判断相似度。当然还有个欧氏距离,这个是两边之间的距离的如果距离越长则相似度越低。

        欧氏距离适合做活跃度那这种,因为此时,你不是去看两条线比例和夹角,两个线还是要看红线距离

算法介绍

皮尔森(pearson)相关系数是一个结果介于-1(相反行为)和1之间的数值,绝对值越大表明相关性越强。

相关系数 0.8-1.0 极强相关
0.6-0.8 强相关
0.4-0.6 中等程度相关
0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关

0到-1 负相关

但是有一个明显的缺陷就是,它只对线性关系敏感。如果关系是非线性的,哪怕两个变量之间是一一对应的关系,皮尔森相关系数也可能接近0。

事实上,皮尔森相关系数有几种不同的计算公式,它们在数学上是等价的,但形式上略有不同。这可能导致在不同情境下使用不同的公式。

这次主要说下面常用的两种,

        两个公式在数学上是等价的,它们都衡量的是两个变量之间的线性关联程度。选择哪个公式取决于具体的计算需求和可用数据。例如,在使用计算机或统计软件时,第一个公式可能更常用,因为计算均值是很直接的。而在手动计算或当有全部数据且数据量不大时,第二个公式可能更方便。

 算法示例1:

        以下图表为例进行两个推荐,下图是个商品购买评分表,user_id是用户编号,good_id是商品编号,score是评分(范围是1-5分)

1002和1003的皮尔森系数

求:x为user_id是1003用户,y是user_id是1002用户,求二者皮尔森系数。

分子部分:

解:

 xy相同购买过商品id是1、2、9、10,列出1、2、9、10商品分数

        x={5,4,5,4}

        y={4,3,2,2}

x相加总分是18,则平均分是4.5,y的商品id是1、2、9、10相加是11,平均分是2.75。

=(5-4.5)(4-2.75)+(4-4.5)(3-2.75)+(5-4.5)(2-2.75)+(4-4.5)(2-2.75)

=0.5*1.25 -0.5*0.25-0.5*0.75+0.5*0.75

=0.625-0.125-0.375+0.375

=0.5

分母部分:

解:

结果:

        0.5/1.66 =0.301

        上述也会算出1001和1003的皮尔森系数是1,那么相对于0.3如果要推荐就推荐1001,1001内1003没有的商品就是要推荐的商品。

算法示例2

我们有两个变量 X 和 Y,每个变量有 5 个观察值:

X = {1, 2, 3, 4, 5}

Y = {2, 4, 5, 4, 5}

其中,n 是观察值的数量,x 和 y 是观察值,而 Σ 表示求和。

让我们一步一步计算:

  • Σx = 1 + 2 + 3 + 4 + 5 = 15
  • Σy = 2 + 4 + 5 + 4 + 5 = 20
  • Σxy = 1×2 + 2×4 + 3×5 + 4×4 + 5×5 = 2 + 8 + 15 + 16 + 25 = 66
  • Σx² = 1² + 2² + 3² + 4² + 5² = 1 + 4 + 9 + 16 + 25 = 55
  • Σy² = 2² + 4² + 5² + 4² + 5² = 4 + 16 + 25 + 16 + 25 = 86
  • n = 5

所以,这两组数据的皮尔森相关系数大约是 0.7746,表明它们之间存在较强的正相关关系。

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!作者在这拜谢了!

混口饭吃了!如果你需要Java 、Python毕设、商务合作、技术交流、就业指导、技术支持度过试用期。请在关注私信我,本人看到一定马上回复!

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

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

相关文章

基于中文垃圾短信数据集的经典文本分类算法实现

垃圾短信的泛滥给人们的日常生活带来了严重干扰,其中诈骗短信更是威胁到人们的信息与财产安全。因此,研究如何构建一种自动拦截过滤垃圾短信的机制有较强的实际应用价值。本文基于中文垃圾短信数据集,分别对比了朴素贝叶斯、逻辑回归、随机森…

数据结构——排序算法代码实现、包含注释易理解可运行(C语言,持续更新中~~)

一、排序 1.1 直接插入排序 1.1.1 思想 插入排序的核心操作是将待排序元素与已排序序列中的元素进行比较,并找到合适的位置进行插入。这个过程可以通过不断地将元素向右移动来实现。 插入排序的优势在于对于小规模或基本有序的数组,它的性能非常好。…

【经验分享】豆瓣小组的文章/帖子怎么删除?

#豆瓣小组的文章/帖子怎么删除?# 第一步: 手机登录豆瓣app ↓ 点右下角“我” ↓ 然后在页面点击我的小组 ↓ 点我发布的 ↓ ↓ 再任意点开一个帖子 ↓ 在文章和帖子的右上角有一个笔状的图标,切记不是右上角的横三点… ↓ ↓ 最后点下边的…

odoo 一日一技 owl Registry示例 在用户菜单增加开发者模式开关

# 示例介绍 在Odoo中,开发者模式是一个非常有用的工具,它允许开发人员对系统进行调试。如果每次都要去设置中打开调试模式将非常麻烦,上篇文章讲述了如何使用 owl registry,这篇我们来进行实操。 本文将介绍如何在Odoo的用户菜单…

令人感动的创富故事编号001:27岁Python程序员年入$600万+

27岁Python程序员年入$600万 27岁的你,在做什么? 为家庭生计而努力搬砖,辛勤工作? 还是放弃挣扎,选择躺平呢? 当我们还在为未来道路感到困惑之际,年仅27岁的Reilly已经迈向了财富自由的大门…

Socket 文件描述符

文件描述符的作用是什么? 每一个进程都有一个数据结构 task_struct,该结构体里有一个指向「文件描述符数组」的成员指针。该数组里列出这个进程打开的所有文件的文件描述符。数组的下标是文件描述符,是一个整数,而数组的内容是一…

用VR技术让党建“活起来”,打造党建知识科普新体验

随着现在工作、生活的信息化、网络化持续加深,传统的党建科普对年轻党员的吸引力日益降低,不管是面授讲课还是实地观摩的方式,都会受到时间和空间上的限制。因此,VR数字党建的出现为党建知识科普提供了新的可能,VR党建…

STM32 USB CDC协议的应用与优化技巧

STM32微控制器提供了使用USB CDC(Communications Device Class)协议来实现虚拟串口通信的功能。USB CDC协议可以将STM32设备模拟为一个虚拟串口设备,并通过USB接口与计算机进行通信。在本文中,我们将介绍USB CDC协议的应用与优化技…

elment-plus如何引入scss文件实现自定义主题色

elment-plus如何引入scss文件实现自定义主题色!如果您想修改elementPlus的默认主题色调,使用自定义的色调,可以考虑使用官方提供的解决办法。 第一步你需要在项目内安装sass插件包。 npm i sass -D 如图,安装完成后,你…

[pytorch入门] 6. 神经网络

基本介绍 torch.nn: Containers:基本骨架Convolution Layers: 卷积层Pooling layers:池化层Non-linear Activations (weighted sum, nonlinearity):非线性激活Normalization Layers:正则化层 Container…

边缘计算及相关产品历史发展

边缘计算及相关产品历史发展 背景边缘计算的历史CDN(Content Delivery Network)Cloudlet雾计算MEC(Multi-Access Edge Computing,MEC) 边缘计算的现状云计算厂商硬件厂商软件基金会 背景 最近,公司部分业务…

基于springboot+vue的社区医院信息平台系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

阿赵UE学习笔记——解决UE资源不能正常显示缩略图的问题

阿赵UE学习笔记目录 大家好,我是阿赵。   这里分享一个虚幻引擎使用小技巧。在使用虚幻引擎的过程中,经常会遇到有些资源在重新打开项目的时候,会看不到缩略图,而是显示默认资源的图标: 这个时候,第一种…

应用app的服务器如何增加高并发

增强服务器的高并发能力是现代网络应用非常关键的需求。面对用户数量的不断增长和数据量的膨胀,服务器必须能够处理大量并发请求。以下是一些提高服务器高并发能力的常用方法和具体实施细节: 优化服务器和操作系统配置 服务器和操作系统的默认配置不一定…

快速上手的AI工具-文心一言绘画达人

前言 大家好,现在AI技术的发展,它已经渗透到我们生活的各个层面。对于普通人来说,理解并有效利用AI技术不仅能增强个人竞争力,还能在日常生活中带来便利。无论是提高工作效率,还是优化日常任务,AI工具都可…

【模拟通信】AM、FM等的调制解调

调制相关的概念 调制:控制载波的参数,使载波参数随调制信号的规律变化 已调信号:受调载波,含有调制信号的全部特征 调制的作用: 提高发射效率多路复用,提高信道利用率提高系统抗干扰能力 两种调制方式 线性调制&a…

网络协议与攻击模拟_08DHCP协议

技术学习要了解某项技术能干什么?它的详细内容?发展走向? 一、DHCP协议 1、DHCP基本概念 dhcp动态主机配置协议,广泛应用于局域网内部 主要是为客户机提供TCP/IP 参数(IP地址、子网掩码、网关、DNS等)…

STL第四讲

第四讲 万用Hash Function 左侧的是设计为类并重载调用运算符,右侧是一般函数的形势; 但是右侧形势在创建容器时更麻烦; 具体例子: 第三种形势:struct hash 偏特化形式 tuple 自C03引入; 关于源码解读的…

Linux服务器系统修改SSH端口教程

修改端口号是通过修改SSH的配置文件实现的,在服务器终端先激活root用户,然后输入: vim /etc/ssh/sshd_config找到#Port 22这个位置 键盘按i进入编辑模式 删除掉Port 22前面的#,然后键盘按一下回车键(如果没有#可不必…

软件产品为什么要测试才能上线?测试可以发现所有bug吗?

在现如今信息时代,软件产品已经成为人们生活中不可或缺的一部分。无论是在工作中还是在娱乐休闲时,我们都需要依赖各种软件来完成各种任务。然而,你是否注意到了身边的软件产品都是经过严格的测试才能上线的呢?那么为什么软件产品必须要经过…