推荐算法(一):协同过滤系列

2023-10-31

一、协同过滤(collaborative filtering)
一种ItemCF推荐baseline:
1.输入:user-item相关矩阵
2.中间结果:item间相似度计算:item_i与item_j间相似度:分子:与二者均有关联的user数,被同一个人购买的次数多则相似;分母包含各自关联的总用户数,用以惩罚热门item;
在这里插入图片描述
p.s.认为无评分时相当于做了热度衰减的频繁项集推荐方式;
如有user-item关系有权重(如用户对影片评分):相似度取决于对二者皆有交互的用户评分,将上式分子换为两item评分向量内积(余弦相似度),或对二者的评分减去二者各自平均值后相乘结果(皮尔逊相关系数)
在这里插入图片描述
保存item相似度矩阵;
3.user推荐:根据user-item相关矩阵得到user-itemlist,遍历该user交互过的itemlist,对每个item取相似N个,根据相似度聚合排序得到用户推荐结果;
ItemCF推荐用户交互过的item的相似item,适合item集比较稳定的情况下,如长视频等,对新item的推荐不友好,如推荐新闻等变化快的item,则UserCF更具优势,推荐以往相似兴趣的用户在看的内容;

附代码如下:

import math
def ItemSimilarity(train):
    # 物品-物品的共同矩阵
    C = dict()
    # 物品被多少个不同用户购买
    N = dict()
    for u, items in train.items():
        for i in items.keys():
            N.setdefault(i, 0)
            N[i] += 1
            C.setdefault(i, {
   })
            for j in items.keys():
                if i == j:
                    continue
                C[i].setdefault(j, 0)
                C[i][j] += 1
    # 计算相似度矩阵
    W = dict()
    for i, related_items in C.items():
        W.setdefault(i
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

推荐算法(一):协同过滤系列 的相关文章

  • 基于javaweb的音乐网站

    Springboot springmvc mybatis 数据库mysql 开发工具不限 前台 html css js 实现了注册 登陆 权限校验 上传歌曲 下载歌曲 播放歌曲 删除歌曲 个人歌单 后台 用户管理 mv上传 播放 歌曲新增
  • JVM安全点详解

    1 安全点是什么 在虚拟机在进行可达性分析时 HotSpot虚拟机会在特定的位置记录在哪有引用 这些特定的位置就叫做安全点 2 安全点的作用是什么 上边已经说过了 在Oomap的帮助下 HotSpot虚拟机很快就完成了GC Roots枚举
  • Java基础之——Stream 流、方法引用

    Stream 流 方法引用 1 Stream 流 1 1 引言 传统集合的多步遍历代码 几乎所有的集合 如 Collection 接口或 Map 接口等 都支持直接或间接的遍历操作 而当我们需要对集合中的元素进行操作的时候 除了必需的添加
  • 第八章 课后习题

    习题 一 填空题 1 在C 的输入输出系统中 最核心的对象是 流 执行输入和输出操作的类体系叫做 流类 2 当实际进I O操作时 cin与 标准输入 设备相关联 3 C 的流类库预定义了4个流 它们是 cin cout cerr 和 clo
  • 练手题 ——《应该被禁止的Leetflex账户》LeetCode Plus 会员专享题【详细解析】Hive / MySQL

    大家早上好 本人姓吴 如果觉得文章写得还行的话也可以叫我吴老师 欢迎大家跟我一起走进数据分析的世界 一起学习 感兴趣的朋友可以关注我的数据分析专栏 里面有许多优质的文章跟大家分享哦 另外也欢迎大家关注我的SQL刷题专栏 里面有我分享的高质量
  • Kafka的安装是否成功的简单测试命令

    Kafka的安装是否成功的简单测试命令 首先了解一下kafka的基本概念 1 Broker Kafka集群包含一个或多个服务器 这种服务器被称为broker 2 Topic 每条发布到Kafka集群的消息都有一个类别 这个类别被称为Topi
  • 洛谷P1220 关路灯 (区间动态规划)

    https www luogu org problemnew show P1220 题解 对于从第i个点走到第j个点 肯定会将 i j 的路灯全部关闭 考虑关闭第i 1个点 现在可能有两种状态 关完 i j 之后位于i 或者位于j 所以设计
  • 【error】 Request method ‘GET‘ not supported app端调用后台接口报错,后台人员自己调用时没问题

    目录 问题描述 原因分析 解决方案 方法一 方法二 方法三 联系自身 问题描述 org springframework web HttpRequestMethodNotSupportedException Request method GE
  • TS 函数

    在 TS 中 要使用函数 要求必须约束函数参数和返回值的类型 一 基础语法 1 JS 中函数 函数声明式 function 函数名 参数 return 返回值 函数表达式 const 变量名 function 参数 return 返回值 2
  • 3个赚钱思路和案例,都是暴利赚钱项目,最后一个你肯定见到过

    3个赚钱思路和案例 最后一个你肯定见到过 赚钱思路1 浙江两兄弟在淘宝开一家 西京超市 不进货不配送 就是利用程序爬京东的单品页 顾客下单再到京东下单 京东的配送效率没的说 又是快消品 几个月就升到金冠 他们利用淘宝的流量和京东的物流服务积
  • linux设置http/https proxy及忽略proxy的方法

    一 场景 有些linux服务器处于内网 并且没有公网ip 故要想与外网进行http https通信只能通过nat或者加proxy的方式 nat服务器有网段的限制 而http https proxy代理则没有 使用起来也方便 但是 使用htt
  • 【mfc】学生信息管理,实现List控件节点的增删改查

    之前在mfc这个专栏里面 写了很多关于win32的程序 其实也没什么的 win32是mfc的基础 mfc只是win32的扩展 系统自带的扩展 新建一个mfc如同新建一个win32程序 不过这个win32程序一开始就带了很多空函数框架 一 基
  • PG库分页查询数据异常(数据重复、数据丢失)-- 解决一次生产问题

    问题描述 有一个功能更新数据库时在生产环境下突然存在部分记录未被更新 需要把所有的记录更新 采取的是分页进行更新 但是每次更新以后都会出现部分业务没有被更新 排查过程 1 测试环境重现问题 在测试环境重现问题 发现测试环境也有这个问题 2
  • PHP在linux上执行外部命令

    http www douban com note 211492486 一 PHP中调用外部命令介绍 在PHP中调用外部命令 可以用 1 gt 调用专门函数 2 gt 反引号 3 gt popen 函数打开进程 三种方法来实现 方法一 用PH
  • nRF52832学习记录(四、定时器)

    一 nRF52832 定时器基本介绍 nRF52832 包含了 5个定时器模块 定时器有着不同的位宽选择 8 16 24 32位 通过BITMODE 寄存器的 第 0 1 位 选择 nRF52832 的定时器的内部结构 1 时钟源 定时器工
  • MATLAB中范数norm()函数精讲

    1 Matlab中norm有两种形式 形式 1 n norm A 2 n norm A p p 范数 功能 A可以是向量 也可以是矩阵 根据p的不同 norm函数可计算几种不同类型的矩阵 向量 范数 1
  • SpringBoot入门教程

    作者简介 哪吒 CSDN2021博客之星亚军 新星计划导师 博客专家 哪吒多年工作总结 Java学习路线总结 搬砖工逆袭Java架构师 关注公众号 哪吒编程 回复1024 获取Java学习路线思维导图 大厂面试真题 加入万粉计划交流群 一起
  • 修改Xcode生成的版权信息 Copyright © 2016年 xxx. All rights reserved.

    修改Xcode生成的版权信息 Copyright 2016年 xxx All rights reserved 选中 xcodeproj工程文件 显示包含内容 打开project pbxproj文件 全文搜索ORGANIZATIONNAME
  • Linux操作系统管理-LVM

    1 物理卷管理 常用管理命令如下 root linux8 pvcreate dev nvme0n2 dev nvme0n3 Physical volume dev nvme0n2 successfully created Physical
  • VMware虚拟机上如何设置windows7虚拟系统与主机时间不同?

    每次打开虚拟机时 windows虚拟机的时间老是与主机时间相同 就很烦 如下设置虚拟机与主机时间不同步 在搜索栏输入 管理工具 2 打开管理工具 gt 服务 3 找到VMware Tools做如下设置 4 找到Windows Time做如下

随机推荐

  • AIX 软件安装与维护

    1 AIX 软件产品 2 软件包的构成 由一个或者多个package构成一个完整的LPP 一个LPP是一个完整的软件产品 这个软件包含与这个LPP相关的所有Package 一个软件包是由一组具有共同功能的文件集而组成的一个可单独安装的镜像
  • 异常的深入研究与分析(2)

    本文主要是关于异常的面试题目 出自前几年的迅雷 支付宝等名企的笔试题目 内容由金丝燕网原创编辑 转载请注明链接 题目一 考察异常类的继承结构 那个类是所有异常的基础类 A String B Error C Throwable D Runti
  • 铝电解电容的寿命计算(纹波电流法)手把手教你

    本文教你通过纹波电流预测铝电解电容的寿命 计算方法来自Nichicon 所以以Nichicon的电解电容为例 不同厂家的计算公式可能稍有不同 首先选一款铝电解电容为例 这里选择常见的LGN系列3000h 105 420V 470uF的电容
  • matlab找出二维矩阵中最大值的位置或者最小值的位置

    matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max max A 注意二维矩阵要写两个max 找对应位置用find函数 举个例子 gt gt A 1 2 3 4 5 6 A 1 2 3 4 5 6 g
  • android 为什么使用dp单位,它的真正优势在哪里?

    一些新手开发人员 不是很明白dp的真正好处 只是知道这样用 那么今天我用我的理解来解释下 有不对之处 欢迎指正 什么是dp dp是一种与像素密度无关的单位 那什么是像素密度呢 先来解释下像素密度 像素密度 就是所谓的dpi 每英寸像素的数量
  • 零基础入门语义分割-Task1 赛题理解

    1 3 数据标签 赛题为语义分割任务 因此具体的标签为图像像素类别 在赛题数据中像素属于2类 无建筑物和有建筑物 因此标签为有建筑物的像素 赛题原始图片为jpg格式 标签为RLE编码的字符串 RLE全称 run length encodin
  • Chrome OS 初体验

    今天Google放出了Chrome OS的源码 很快网上有人把它编译成功在虚拟机上跑了起来 有朋友第一时间把虚拟镜像下载了 于是搞来一份 立刻开始体验 安装过程就不多说了 可以参考谷奥上的Chromium OS 安装教程 我用的是VMWar
  • Vue中replace的用法

    Vue js V 啥也不说了 就是这么牛逼
  • ps 2019安装破解以及添加CUR和ICO插件

    下载最新版 2019版 的PS后 只能使用和登陆 挺麻烦的 就想着破解来着 在网上搜索了一大圈 终于解决了 使用之前的替换amtlib dll的方式不适用了 需要替换ps的启动程序 ps 64位的安装路径为C Program Files A
  • <van-field>使用方案

    1 官方示例
  • js += 含义(小知识)

    是连接复值 s 5 表示把s的值 5后复值给s若s是字符串 则是连接后赋值 s 5 就是将s字符串的值连接上字符串5后赋值给s s 5 若s为字符串 则同s 5 因为JS是弱变量 会自动转5为 5 与s s 5 语句同意 转载于 https
  • 《数据库系统内 幕》分布式系统

    分布式部分 章8 分布式系统抽象 章9 故障 无超时的故障检测器 phi增量故障检测器 章10 领导者选举 选举过程 选举规则 章11 以数据为中心的一致性模型 单操作一致性模型 客户为中心的一致性 会话模型 复制协议 基于主备份协议的复制
  • Linux国内环境下安装kubeadm、kubelet、kubectl

    因为项目需要用Kubernetes来改版底层的Docker 所以一边写完成现在的任务一边继续学习Kubernetes 现有的一些文档和Kubernetes中文社区的中文文档都没有很详细的初期安装部署环境的教程 所以建议直接去官网看文档 当然
  • 优秀网站源码、编程源码下载网站大集中

    1 51源码 http www 51aspx com 2 源码之家 http www codejia com 3 源码网 http www codepub com 4 虾客源码 http www xkxz com 5 多多源码 http w
  • 牛客SQL练习三

    21查找所有员工自入职以来的薪水涨幅情况 题目描述 查找所有员工自入职以来的薪水涨幅情况 给出员工编号emp no以及其对应的薪水涨幅growth 并按照growth进行升序 CREATE TABLE employees emp no in
  • Unity Vuforia(高通)AR全流程

    Unity Vuforia播放视频全过程 从Unity的安装到打包 一 安装Unity 1 点击安装地址下载Unity Hub 下载好之后点击安装 2 从Unity Hub进去安装Unity 要先注册登陆账号 安装完后是这样的 二 新建项目
  • Vue+Element-UI Table表头排序

    Vue Element UI Table表头排序 Vue代码 定义后台需要接受的排序属性 排序sortChange Vue代码
  • js控制输入框

    转自 http www pinlue com article 2019 11 2221 409812495947 html
  • 【C++11】——右值引用、移动语义

    目录 1 基本概念 1 1 左值与左值引用 1 2 右值和右值引用 1 3 左值引用与右值引用 2 右值引用实用场景和意义 2 1 左值引用的使用场景 2 2 左值引用的短板 2 3 右值引用和移动语义 2 3 1 移动构造 2 3 2 移
  • 推荐算法(一):协同过滤系列

    一 协同过滤 collaborative filtering 一种ItemCF推荐baseline 1 输入 user item相关矩阵 2 中间结果 item间相似度计算 item i与item j间相似度 分子 与二者均有关联的user