基于 itemCF (item collaborative filtering) 推荐(基于物品的协同过滤算法)的理解

2023-10-26

推荐系统,一般是用于电商、广告、内容、信息流等推荐平台,以挖掘数据的最大价值。可以提升用户粘性和转化率。而本文提及到的基于内容的协同过滤算法就是一个经典的算法。

基本思想

首先,什么是协同呢?协同在这里指的就是,用集体的智慧来为个体过滤出他需要的信息。

基于物品的协同过滤算法,就是以物品为连接点,给用户推荐那些和他们之前喜欢的物品相似的物品。 比如,该算法会因为你购买过《Java从入门到精通》而给你推荐《Java并发编程实战》。不过,基于物品的协同过滤算法并不利用物品的内容属性计算物品之间的相似度,二是通过分析用户的行为数据计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。

所以呢,这个算法思想的强大之处就在于,不用考虑目标物品之间的相互关系或者内在联系。只用考虑用户和物品之间的行为数据即可。

计算过程

相似度计算:

简单的计算公式如下
在这里插入图片描述
在这里插入图片描述
这里,分母|N(i)|是喜欢物品i的用户数,而分子|N(i)∩N(j)|是同时喜欢物品i和物品j的用户数,所以该公式也可以理解为喜欢物品i的用户中有多少比例也喜欢物品j。

在 1 式中,如果出现某种商品火爆,可能会导致计算错误,2式则在一定程度上进行了惩罚。

构建推荐矩阵:

假如说,有 a,b,c,d,e 五个商品,其购买数据如下。

在这里插入图片描述
那么按公式计算,a,b 的相似度为
在这里插入图片描述
以同样的方式,就可以得到相似度矩阵
在这里插入图片描述
下面就是,根据需要被预测的用户已有的记录 ,与相似度对应的数值相乘求和,再排序就能得到对应需要推荐的函数了。 比如下面公式就是计算 用户 u 对 物品 j 的兴趣。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
则:

p(u,b) = 0.331 +0.313 = 1.26

p(u,c) = 01 + 0.223 = 0.66

所以最终的推荐列表为【b,c,e】

优缺点
Item-based算法原理是给用户推荐那些和他之前喜欢的物品类似的物品,在推荐方面更加个性化,反映了用户自己的兴趣传承。在用户有新行为时,一定会导致推荐结果的实时变化。

适用范围:长尾物品丰富,用户个性化需求强烈的领域。

优点:可以利用用户的历史行为给用户做推荐解释,可以令用户比较信服。比较适用在物品较少、物品更新速度不会很快、用户的兴趣比较固定和持久的情况下。

缺点:无法避免用户冷启动,需要等待用户接触物品后才给他推荐相关物品,没有办法在不离线更新物品相似度表的情况下将新物品推荐给用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 itemCF (item collaborative filtering) 推荐(基于物品的协同过滤算法)的理解 的相关文章

  • Spring的xml配置

    Spring的xml依赖注入 文章目录 Spring的xml依赖注入 1 Bean依赖注入方式 1 1 set注入 1 2 构造器注入 2 Bean依赖注入的数据类型 2 1 普通数据的注入 2 2 集合数据类型 List lt Strin
  • 浅谈 防抖和节流

    防抖和节流 是优化高频率执行代码的手段 目的 节约浏览器 服务器的性能 主要方式 减少函数执行的次数 函数防抖 debounce 函数防抖 事件被触发 等待n秒后再执行回调 如果在这n秒内又被触发 则重新计数 防抖的目的 目的是为了让一定时

随机推荐

  • pybind 回调 多线程 异常

    thread代码 int RecvThread SOCKET sockClient py function caminfocall g caminfocall caminfocall py function caminfocall py f
  • quickjs集成mfc的实现

    QuickJS是一个轻量级的JavaScript解释器 可以在各种平台上运行 如果你想在MFC应用程序中使用QuickJS 你可以使用以下方法来实现 下载QuickJS源代码 然后在MFC应用程序中包含QuickJS文件 在MFC应用程序中
  • 操作系统笔记整理 ——目录索引页

    操作系统笔记整理 目录索引页 笔记整理参考书籍 计算机操作系统 第四版 汤小丹等编著 以下笔记整理主要包含了前八章的内容 具体包含的内容会在下面详细说明 笔记尚有许多不足之处 如果大家发现错误还请私信我修改 感谢 目录即链接 点击目录即可跳
  • XML:你真的有必要了解一下我

    对XML的深入浅出 一 概念 二 功能 三 基本语法 四 快速入门 五 组成部分 5 1文档声明 六 约束 6 1 DTD 6 2 Schema 七 解析 7 1 解析XML的方式 7 2常见解析器 八 Jsoup详解 8 1 快速入门 8
  • 第一届全国技能大赛(世赛项目)河北省选拔赛 网络安全项目任务书

    第一届全国技能大赛 世赛项目 河北省选拔赛 网络安全项目任务书 模块A 网络基础构建 网络基础服务搭建 1 第一部分 网络基础构建 2 第二部分 网络基础服务搭建 模块B 网络安全事件响应 数字取证调查和应用程序安全 1 第一部分 网络安全
  • 流程制造行业MES系统的四大应用特点

    MES制造执行系统就是生产加工过程执行系统 该系统可以融合生产规划信息内容及物料 供应 采购和库存等生产现场管理信息内容 根据数据采集系统 然后融合加工过程中的物料 工时 机器设备 人员等信息内容 让生产管理人员对加工过程及进度 建立一个及
  • 如何利用int型变量存放ip值(c语言)

    IP地址 ip地址是一个32位的二进制数 实际上是4个字节 点分十进制表示为 a b c d a b c d的值都是 0 255 例如ip地址 192 168 0 1 就是一个合格ip地址 可以知道a b c d这些字段都是一个无符号字节表
  • 关于前端文件上传后将文件保存至服务器路径存储在数据库并在相应页面展示的总结

    前期准备 1 开发环境及框架的搭建 基于SSH开发框架 2 数据库建表 表应该有一个字段用来存储文件在服务区上的存储路径 3 map xml文件 4 Action xml文件 5 写好实体类及get set 方法 6 DAO层 7 Acti
  • 线性代数(3)—— 逆矩阵、伴随矩阵、初等矩阵

    参考 张宇高等数学基础30讲 文章目录 1 矩阵的逆 1 1 逆矩阵的定义 1 2 逆矩阵性质与重要公式 1 3 用定义求逆矩阵 1 4 例题 2 伴随矩阵 2 1 伴随矩阵的定义 2 2 伴随矩阵的定义与重要公式 2 3 用伴随矩阵求逆矩
  • 每日一题 LCP 06. 拿硬币

    难度 简单 简单题 不多说 class Solution def minCount self coins List int gt int res 0 for coin in coins res ceil coin 2 return res
  • 国内主要大数据平台比较

    在当前信息时代 大数据处理和分析变得越来越重要 国内涌现了许多主流的大数据平台 它们提供各种功能和工具 帮助企业和组织处理和分析海量数据 本文将比较几个主要的国内大数据平台 并提供相应的源代码示例 阿里云大数据平台 阿里云大数据平台是国内领
  • [JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作

    本系列文章是作者暑假给学生进行实训分享的笔记 主要介绍MyEclipse环境下JSP网站开发 包括JAVA基础 网页布局 数据库基础 Servlet 前端后台数据库交互 DAO等知识 前一篇文章讲解了通过Servlet获取所提交的数据 这篇
  • OSB:Rest、Soap、SoapDB接口开发学习

    OSB Rest Soap DBSoap接口开发 开发配置 1 开启服务 2 登录WebLogic Server管理控制台 3 启动osb服务 4 登录ServiceBus控制台 Rest接口的开发 1 测试接口是否可以调通 2 开发接口
  • python opencv 调用摄像头失败问题的解决 Windows

    省流 内含 Python Opencv 双目相机拍照代码 手动 or 自动 可自取 如果你的 cv2 VideoCapture 函数卡住但不报错 打开 Windows 相机 应用可以正常看到摄像头画面 且能够正常用 cv2 imshow 打
  • python flask api接口开发编程

    使用 Python 和 Flask 设计 RESTful API 近些年来 REST REpresentational State Transfer 已经变成了 web services 和 web APIs 的标配 在本文中我将向你展示如
  • 简述同步和异步的区别

    同步是阻塞模式 异步是非阻塞模式 同步就是指一个进程在执行某个请求的时候 若该请求需要一段时间才能返 回信息 那么这个进程将会一直等待下去 直到收到返回信息才继续执行下去 异步是指进程不需要一直等下去 而是继续执行下面的操作 不管其他进程的
  • do-while(0)语句到底有什么用?

    前言 在一个群里面看到一个人问 do while 0 语句有什么用 do while 0 这个程序最终结果不应该就是程序只跑一次 那么写和不写有什么区别呢 do while 0 在复杂宏定义上的优点 为什么需要复杂宏 1 在讲解do whi
  • 反射的补充

    反射可以绕过编译阶段为集合添加数据 反射是作用在运行时的技术 此时集合的泛型将不能产生约束了 此时可以为集合存入其他任意类型的元素 泛型只是在编译阶段可以约束集合只能操作某种数据类型 在编译成Class文件进入运行阶段时 其真实类型都是Ar
  • 数据结构与算法笔记:计算思维之经典农夫过河问题C++实现

    农夫 羊 狼 菜的过河问题 问题描述 角色 农夫 羊 狼 菜 条件1 船很小 只能装下农夫和其他一个角色 条件2 无人看管 羊吃菜 狼吃羊 问 如何让其他三种角色被农夫平安带着过河 相关分析 我们可以先用人脑尝试一下相关渡河策略 1 先渡狼
  • 基于 itemCF (item collaborative filtering) 推荐(基于物品的协同过滤算法)的理解

    推荐系统 一般是用于电商 广告 内容 信息流等推荐平台 以挖掘数据的最大价值 可以提升用户粘性和转化率 而本文提及到的基于内容的协同过滤算法就是一个经典的算法 基本思想 首先 什么是协同呢 协同在这里指的就是 用集体的智慧来为个体过滤出他需