协同过滤推荐算法

article/2025/10/19 16:09:13

一、协同过滤思想简介

二、协同过滤算法原理介绍

三、基于用户的协同过滤算法描述

四、基于物品的协同过滤算法

基于物品的协同过滤算法的优缺点


一、协同过滤思想简介

协同过滤,从字面上理解,包括协同过滤两个操作。首先我们在外出和朋友吃饭的时候肯定会问身边的朋友哪些饭店味道比较好,看看最近有什么美食推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。

所谓协同就是利用群体的行为来做决策(推荐),生物上有协同进化的说法,通过协同的作用,让群体逐步进化到更佳的状态。对于推荐系统来说,通过用户的持续协同作用,最终给用户的推荐会越来越准。而过滤就是从可行的决策方案中将用户喜欢的方案找出来,协同过滤就是对从群体的行为中来寻找存在的普遍相似性,通过相似性来对用户做出决策和推荐。

协同过滤利用了两个非常朴素的自然哲学思想:“群体的智慧”和“相似的物体具备相似的性质”,群体的智慧从数学上讲应该满足一定的统计学规律,是一种朝向平衡稳定态发展的动态过程,越相似的物体化学及物理组成越一致,当然表现的外在特性会更相似。虽然这两个思想很简单,也很容易理解,但是正因为思想很朴素,价值反而非常大。所以协同过滤算法原理很简单,但是效果很不错,而且也非常容易实现。

协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法(user-based collaboratIve filtering),和基于物品的协同过滤算法(item-based collaborative filtering)。

二、协同过滤算法原理介绍

简单的说就是:物以类聚,人以群分。所谓物以类聚,就是计算出每个物品最相似的物品列表,可以为用户推荐相似的物品。所谓人以群分,就是我们可以将与该用户相似的用户喜欢过的物品推荐给该用户。

 

三、基于用户的协同过滤算法描述

 基于用户的协同过滤算法的实现主要分为两个步骤:

  • 1)如何找到和你有相似爱好的人,也就是要计算数据的相似度:
  • 2)通过相似爱好的人来推荐商品

  计算相似度需要根据数据特点的不同选择不同的相似度计算方法,有几个常用的计算方法:

我们在寻找有有相同爱好的人的时候,可能会找到许多个,例如几百个人都喜欢A商品,但是这几百个人里,可能还有几十个人与你同时还喜欢B商品,他们的相似度就更高,我们通常设定一个数K,取计算相似度最高的K个人称为最相邻的K个用户,作为推荐的来源群体。

  这里存在一个小问题,就是当用户数据量十分巨大的时候,在所有人之中找到K个基友花的时间可能会比较长,而且实际中大部分的用户是和你没有什么关系的,所以在这里需要用到反查表

  所谓反查表,就是比如你喜欢的商品有A、B、C,那就分别以ABC为行名,列出喜欢这些商品的人都有哪些,其他的人就必定与你没有什么相似度了,从这些人里计算相似度,找到K个人

通过这K个人推荐商品

ABCD
X(相似度30%)
Y(相似度40%)

  我们假设找到的人的喜好程度如下,那么对于产品ABCD,推荐度可以计算为:

  • A:1*0.3=0.3
  • B:1*0.3=0.3
  • C:1*0.4=0.4
  • D:1*0.3+1*0.4=0.7

  很明显,我们首先会推荐D商品,其次是C商品,再后是其余商品

  当然我们也可以采用其他的推荐度计算方法,但是我们一定会使用得到的相似度0.3和0.4,也即一定是进行加权的计算

基于用户的协同推荐算法的步骤可以总结为:

  1.计算其他用户的相似度,可以使用反查表除掉一部分用户

  2.根据相似度找到最相似的K个用户

  3.在这些邻居喜欢的物品中,根据与你的相似度算出每一件物品的推荐度

  4.根据相似度推荐物品

四、基于物品的协同过滤算法(item-based collaborative filtering)

基于物品的协同过滤算法(简称ItemCF 算法)主要分为2个步骤:

  • 1)计算物品之间的相似度;
  • 2)根据物品的相似度和用户的历史行为给用户生成推荐列表;

其中,关于物品相似度计算的方法有夹角余弦、杰卡德(Jaccard)相似系数和相关系数等。

将用户对某一产品的喜好或者评分作为一个向量,例如用户对产品1的评分为

,对产品m的评分或者喜好程度为

 其中m为物品,n为用户数

 计算各个物品之间的相似度之后,即可构成一个物品之间的相似度矩阵,通过相似度矩阵,推荐算法会给用户推荐与其物品最相似的K个物品,推荐系统是根据物品的相似度以及用户的历史行为对用户的兴趣度进行预测并推荐的,在评价模型的时候一般是将数据集划分成训练集和测试集两部分。模型通过在训练集的数据上进行训练学习得到推荐模型,然后在测试集数据上进行模型预测,最终统计出相应的评测指标来评价模型预测效果的好与坏。

模型的评测采用的方法是交叉验证法。交叉验证法即将用户行为数据集按照均匀分布随机分成M份,挑选一份作为测试集,将剩下的M-1份作为训练集。然后在训练集上建立模型,并在测试集上对用户行为进行预测,统计出相应的评测指标。为了保证评测指标并不是过拟合的结果,需要进行M次实验,并且每次都使用不同的测试集。最后将M次实验测出的评测指标的平均值作为最终的评测指标。
基于用户的协同过滤推荐算法进行推荐,构建模型的流程如下图所示:

 训练集与测试集是通过交叉验证的方法划分后的数据集,通过协同过滤算法的原理可知,在建立推荐系统时,建模的数据量越大越能消除数据中的随机性,得到的模型准确度也就越高,但是随之而来也会导致计算时长过长。

基于物品的协同过滤算法的优缺点

优点:

  • 可以离线完成相似性步骤,降低了在线计算量,提高了推荐效率,可以利用用户的历史行为给用户做出推荐解释,结果容易让客户信服

缺点:

  • 现有的协同过滤算法没有充分利用到用户间的差别,使计算得到的相似度不够准确,导致影响了推荐精度;此外,用户的兴趣是随着时间不断变化的,算法可能对用户新点击兴趣的敏感性较低,缺少一定的实时推荐,从而影响了推荐质量。
  • 基于物品的协同过滤适用于物品数明显小于用户数的情形,如果物品数很多,会导致计算物品相似度矩阵代价巨大。
  • 不积跬步,无以至千里

http://chatgpt.dhexx.cn/article/FA6i8XHS.shtml

相关文章

推荐系统之协同过滤算法

1、介绍 协同过滤算法(Collaborative Filtering) 是比较经典常用的推荐算法,从1992年一直延续至今。所谓协同过滤算法,基本思想是根据用户的历史行为数据的挖掘发现用户的兴趣爱好,基于不同的兴趣爱好对用户进行划分并…

oracle数据库中spool的作用,Oracle中Spool命令如何使用 Oracle中Spool命令使用方法

Oracle中Spool命令如何使用?本篇文章小编给大家分享一下Oracle中Spool命令使用方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。 方法/步骤 首先需要明白Spool是Oracle的命令而不是sql语句。 Spool命…

oracle的Spool命令

使用spool命令实行将sql*plus中的输出的结果复制到一个指定的文件中,或者把查询的结果 发送到打印机中,直接使用spool off命令为止。 spool命令的语法如下: spool [file_name [create|replace|append] off|out] 其中file_name指定一个操作…

Oracle数据导出spool用法详解

Oracle数据导出spool用法详解 spool可导出select查询的结果集以emp表为例spool命令参数 spool可导出select查询的结果集 在实际的工作中,很多时候我们需要将Oracle中查询的数据导出来,生成excel格式的表以便于处理。虽然plsql可以导数据,但是…

oracle spool命令

1.spool的作用是什么? spool的作用可以用一句话来描述:在sqlplus中用来保存或打印查询结果。 通过spool 命令,可以将select 数据库的内容写到文件中,通过在sqlplus设置一些参数,使得按指定方式写到文件中。 spool 是…

spool命令的使用

(一)SPOOL是sqlplus中的命令 转自:https://blog.csdn.net/wangnan537/article/details/20706555 可作如下用途: 1)可使用SPOOL保存查询的结果集 [sql] view plain copy SPOOL "C:\test.txt" --生成test.txt文件 ...…

spooling

SPOOLing的含义是什么?试述SPOOLing系统的特点、功能以及控制过程。答:SPOOLing是Simultaneous Peripheral Operation On-Line (即外部设备联机并行操作)的缩写 SPOOLING ,它是关于慢速字符设备如何与计算机主机交换信…

SPOOLing技术

1.什么是SPOOLing 脱机输入、脱机输出技术。 该技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上,或者相反。 引入了多道程序技术后,可以利用进程来模拟脱机输入时的外围控制机功能。这样,外围操作…

SoapUI接口测试-基本操作

SoapUI:http接口测试 GET请求: 1、打开SoapUI工具,点击左上角REST,新建一个REST项目。(一般的http接口文档中会有声明此接口遵循RESTful API的设计规范),弹出的框中提示输入接口地址&#xff0c…

SoapUI-一款强大的Rest和Soap测试工具

文章目录 SoapUI-一款强大的Rest和Soap测试工具1.什么是SoapUI2.SoapUi基本使用-Http2.1 构建一个项目2.2 确定项目名2.3 创建测试用例以及用例组2.4 创建一个http请求的测试用例,这里我们用一个天气测试接口测试2.5 运行接口测试 3.SoapUi基本使用-Web Service3.1 …

接口测试工具--SoapUI下载安装教程

接口测试工具--SoapUI下载安装教程: 作为一个初学测试的小白,当然是从下载熟悉各种测试工具开始了,现在写一下SoapUI的下载安装过程,以便日后使用。 我是直接在松勤网的网站上找的下载资源:链接:ht…

SoapUI基本使用

SoapUI是用java开发的测试web service的工具。 SoapUI基本使用: 主要用其来查看web service提供的接口,以及返回的结果,以便进一步的利用,但是SoapUI的功能远不止这些,其可以对web service进行功能上和性能上的测试。…

soapui 自动化教程(四)

上一节介绍到了使用groovy实现接口自动化测试的基本功能。 本节将介绍groovy执行用例动态参数、参数回传、参数加密、soapui引入第三方jar包、生成随机参数(绕过业务逻辑中的一些唯一校验阻碍自动化),以适应更真实、复杂的场景。 soapui引入…

soapUI 5.7.0使用

soapUI 5.7.0使用 公司有接口是webService的,用的是soap协议类型,这时候使用postman就不好使了,所以这边要使用SoapUI来进行测试,以下是SoapUI的使用流程首先,新建一个SOAP项目 将webService的地址填入其中&#xff0c…

soapui 自动化教程(二)

soapui 之 groovy 基础 本教程需要一些groovy基础,不会也没关系,会任意一门编程语言就能看懂代码。 上一节介绍了soapui如何创建测试用例,本节介绍groovy脚本如何执行测试用例。 新建一个script测试用例存放脚本 新增一个step&#xff…

使用SoapUI测试webservice接口详细步骤

如题所示,当我们写好webservice接口以后,在正式发布使用之前总是需要测试下接口是否好用,使用SoapUI这个软件可以很方便地对我们写的接口进行测试。下面我以SoapUI测试一个SOAP类型的接口来举例说明: (1)S…

【工具】Soap UI注意事项

【工具】Soap UI注意事项 一. 字体大小调整二. 中文乱码 一. 字体大小调整 1.配置里: File->preferences->editor settings->select font 2.使用兼容性格式,高DPI缩放 效果: 二. 中文乱码 找到bin\SoapUI-5.4.0-EB.vmoptions文…

使用SoapUI 测试Web Service

如何测试写好的Webservice?你当然可以写代码来测试,但还是太麻烦,你得花时间去学习各语言的关于Webservice调用的相关API。这里推荐一个Webservice开发的必备工具- SoapUI,无须了解底层细节,就能快速测试你的Webservic…

SoapUI基础使用教程

目录 一、HTTP接口调用 1、创建项目 2、输入http请求地址 3、选择对应项目的request,输入信息发送请求 二、Webservice接口调用 2.1先来看soap风格的webservice接口调用的步骤 2.2再来看rest风格调用webservice接口的步骤 三、报文乱码 一、HTTP接口调用 1…

SoapUI安装教程【Windows】

Installing SoapUI on Windows Once you’ve downloaded the installer, the installation is pretty straightforward. Start it by just double-clicking on it. The installer will start immediately. 一旦下载安装程序,安装非常简单。只需双击它即可启动。安装…