学习笔记:基于启发式的协同过滤推荐算法

协同过滤推荐算法可以分为 基于启发式 和 基于模型式 两种。基于启发式的协同过滤算法,又可以分为基于用户的协同过滤算法和基于项目的协同过滤算法。我首先细致学习了基于启发式的协同过滤算法。
启发式协同过滤算法主要包含3个步骤:
1)收集用户偏好信息;
2)寻找相似的商品或者用户;
3)产生推荐。
协同过滤的输入数据集主要是用户评论数据集或者行为数据集。这些数据集主要又分为显性数据和隐性数据两种类型。其中,显性数据主要是用户打分数据,譬如用户对商品的打分,五分制的1分,2分等。隐性数据主要是指用户点击行为、购买行为和搜索行为等,这些数据隐性地揭示了用户对商品的喜好。

一、基于用户的协同过滤
用相似统计的方法得到具有相似爱好或者兴趣的相邻用户,所以称为以用户为基础的协同过滤或基于邻居的协同过滤。
首先,收集用户信息,一般的网站系统使用评分的方式或是给予评价,这种方式被称为“主动评分”。另外一种是“被动评分”,是根据用户的行为模式由系统代替用户完成评价,不需要用户直接打分或输入评价数据。电子商务网站在被动评分的数据获取上有其优势,用户购买的商品记录是相当有用的数据。
然后,构建用户-项目(User/Item)评分矩阵,用Rij表示用户Ui对项目Ij的评分,如果没有评分则Rij=0;
接着,计算最近邻居,假设每一个用户对项目的评分都是一个在n维的空间向量,用计算空间向量的相似度代替计算用户相似性的这样的抽象问题。主要通过下方三种方式来计算用户间的相似度:
1)余弦相似度
余弦相似度主要通过假设在n 维的空间中的评分向量的夹角余弦值来进行计算,将获取用户相似度的目的转换为计算两个不同向量的夹角余弦的值。其中两个向量 、,分别表示用户i、j 在n 维空间的评分,计算公式为:
在这里插入图片描述

2)修正的余弦相似度
上边的公式过于理想化,没有考虑到每个人的评分标准是不同的。为了计算的精确性,通过将用户对某项目的评分减去用户对所有项目评分的平均评分,来解决用户间评分尺度不同的问题,公式为:
在这里插入图片描述

其中, 和 分别表示用户 i 和用户 j 评分过的推荐对象集合,示的是用户 i和 j的有过共同评分的对象集,用户i、j对项目I的评分分别表示为和,和 分别表示用户i和用户j的平均评分。

3)皮尔逊相似系数
用户i、j之间的相似性也通过皮尔逊相关系数度量,计算公式为:

在这里插入图片描述

其中a表示项目,Iij表示用户i与用户j评价过的项目集合的并集,Ri,a表示用户i对项目a的评分,表示用户i的平均评分,Rj,a表示用户j对项目a的评分,表示用户j的平均评分。
随后,依据上一步计算的用户相似度找到目标用户的K个最近邻居,借助这K个最近邻居计算用户对项目的预测评分,设N为用户最近邻居的集合,预测评分为,公式为:
在这里插入图片描述

在公式中,用表示用户n对项目I的评分,用表示用户u与n的相似性,用、 分别表示用户u与用户n对项目的平均评分。
通过上述几步的计算,即可获取目标用户对所有未评分的商品的预测评分,最后选择预测分值最高的Top-N个项目推荐给目标用户。

二、基于项目的协同过滤
以项目为基础的协同过滤方法有一个基本的假设“能够引起用户兴趣的项目,必定与其之前评分高的项目相似”,通过计算项目之间的相似性来代替用户之间的相似性。
首先,依然是收集用户信息,这个和上边的一样。
然后,构建用户-项目(User/Item)评分矩阵。
接着,计算已评价项目和待预测项目的相似度Wi,j,例如:要对项目 A 和项目 B 进行相似性计算,要先找出同时对 A 和 B 打过分的组合,对这些组合进行相似度计算,常用的算法类似用户为基础的协同过滤。
随后,计算用户u对项目i的兴趣。公式为:
在这里插入图片描述

这里N(u)是用户喜欢的物品的集合,S(i,K)是和物品i最相似的K个物品的集合,wi,j是物品i和j的相似度,ru,j是用户u对物品j的兴趣。该公式的含义是,和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名。
最后,为目标用户推荐的项目是目标用户没有评分同时预测评分高的项目。推荐项目的预测评分越高,目标用户对推荐的项目越感兴趣。

(学习时摘抄了几位大佬的文章,纯粹是自学使用的,感谢各位大佬的分享)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我会尽力回答你的问题。关于通过UDP传输音视频,我了解一些相关的知识,下面是一些学习笔记: 1. gstreamer是一个流媒体框架,用于创建、处理和播放多媒体流。它支持多种音视频格式,可以通过插件扩展功能。 2. 通过gstreamer可以使用UDP协议传输音视频数据。UDP协议是一种无连接的协议,不保证数据传输的可靠性和顺序性,但是传输效率高。 3. 首先需要创建一个gstreamer的pipeline,包括音视频源、编码器、UDP发送端等组件。例如: ``` gst-launch-1.0 -v filesrc location=test.mp4 ! decodebin ! x264enc ! rtph264pay ! udpsink host=192.168.1.100 port=5000 ``` 这个pipeline的作用是从test.mp4文件读取音视频流,解码后使用x264编码器进行压缩,然后使用rtph264pay将数据打包成RTP数据包,最后通过udpsink发送到指定的IP地址和端口。 4. 接收端需要创建一个gstreamer的pipeline,包括UDP接收端、解包器、解码器等组件。例如: ``` gst-launch-1.0 -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! autovideosink ``` 这个pipeline的作用是从UDP端口5000接收音视频数据,使用rtpjitterbuffer解决网络抖动问题,使用rtph264depay将RTP数据包解包成原始的H.264数据流,然后使用avdec_h264解码器进行解码,最后使用autovideosink播放视频。 5. 在实际使用过程中,还需要考虑数据的带宽限制、网络延迟等问题,以保证音视频传输的效果。 希望这些笔记能对你有帮助。如果你还有其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值