关联规则延伸之协同过滤

news2025/2/27 16:29:58

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

  • 一、协同过滤
    • 1、含义
    • 2、策略
  • 二、基于用户的协同过滤
    • 1、寻找相似偏好的用户
    • 2、欧式距离及系数
    • 3、皮尔逊系数
    • 4、其他系数
    • 5、算法步骤
    • 6、局限性
  • 三、基于物品的协同过滤
    • 1、介绍
    • 2、算法步骤
    • 3、优缺点
    • 4、2种算法适应场景
  • 四、电影推荐代码示例
    • 1、读入数据
    • 2、数据处理
    • 3、查看评分分布
    • 4、选取电影对用户推荐


一、协同过滤

1、含义

  • 协同(collaborating)是群体行为,过滤(filtering)则是针对个人的行为
  • 利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息
  • 来源比如:实际生活中,朋友之间相互推荐自己喜欢的东西

2、策略

  • 协同过滤通过用户和产品及用户的偏好信息产生推荐
  • 最基本的策略有两种:
    • 找到具有类似品味的人所喜欢的物品
    • 从一个人喜欢的物品找类似的物品
  • 这两种策略对应两个最知名的类别推荐技术
    • 基于用户的协同过滤
    • 基于物品的协同过滤

二、基于用户的协同过滤

  • 基于用户的协同过滤(user collaborating filter,简称userCF)通过用户对不同内容(物品)的行为来评测用户之间的相似性,找到“邻居”基于这种相似性做出推荐
  • 这种推荐的本质是给相似的用户推荐其他用户喜欢的内容

1、寻找相似偏好的用户

比如5个用户对2件商品的评分。这里的分值可能表示真实的购买,也可以是用户对商品不同行为的量化指标。例如,浏览商品次数、向朋友推荐商品、收藏、分享或评论等,都可以表示用户对商品的态度和偏好程度;
在这里插入图片描述
画出散点图后,即可看出用户分布情况,用户距离接近,,则评分较为接近;

2、欧式距离及系数

欧几里得距离:

d(a, b) = √[ Σ(xᵢ₁ - xᵢ₂)² ] (i = 1, 2, ..., n)

欧几里得系数:

d(a, b)  = 1 / ( 1+ d(a, b)  )

系数越小,表示2用户距离越近,用户偏好也接近。

3、皮尔逊系数

在这里插入图片描述
在这里插入图片描述

  • r=1:表示两个变量完全正相关。

  • r=−1:表示两个变量完全负相关。

  • r=0:表示两个变量没有线性关系。

  • r 的绝对值越接近 1,表示两个变量之间的线性关系越强;越接近 0,表示线性关系越弱。

  • 极强相关:r>0.80

  • 强相关:0.61<r≤0.80

  • 中度相关:0.41<r≤0.60

  • 弱相关:0.21<r≤0.40

  • 极弱相关/无相关:r≤0.20

4、其他系数

  • 余弦相似度系数

在这里插入图片描述

  • 杰卡德系数
    在这里插入图片描述

5、算法步骤

  • 找到和目标用户兴趣相似的用户集合(计算两个用户之间的兴趣相似度)
  • 找到这个集合中的用户所喜欢的,并且目标用户没有使用(消费)过的物品推荐给目标用户
    在这里插入图片描述

6、局限性

  • 首先每次计算用户直接相似度的时候,需要遍历每个用户和所有用户的评分,这样在网站用户增长到一定程度后,计算用户直接的相似度的过程将会变得越发的困难
  • 基于用户的协同过滤算法,并不容易从数学原理的角度解释
  • 用户口味变化快,非静态,所以兴趣迁移问题很难反应出来
  • 数据稀疏,用户和用户之间有共同的消费行为实际上是比较少的,而且一般都是一些热门物品,对发现用户兴趣帮助也不大

三、基于物品的协同过滤

1、介绍

  • 基于物品的协同过滤(item collaborating filter,简称item CF)算法给用户推荐那些和他们之前喜欢的物品相似的物品;
  • 如购买该商品的用户还购买来其他商品

基于物品的协同过滤和基于用户的协同过滤原理相似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给用户。

2、算法步骤

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

3、优缺点

在这里插入图片描述

4、2种算法适应场景

在这里插入图片描述
在这里插入图片描述

四、电影推荐代码示例

1、读入数据

#导入相关的包
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
import os

films=pd.read_excel("./data/apriori/电影.xlsx")
films.head(3)

在这里插入图片描述

2、数据处理

#将电影数据和评分数据进行拼接
model_data=pd.merge(films,scores,on="电影编号")
model_data.head()

在这里插入图片描述

3、查看评分分布

#查看评分的分布
model_data["评分"].hist()

在这里插入图片描述

# 计算每部电影的平均分
model_data_mean=model_data.groupby("名称")["评分"].mean()

# 评分高的前五部电影
film_top=pd.DataFrame(model_data_mean)
film_top.sort_values("评分",ascending=False).head()

在这里插入图片描述

# 打分人数
film_top["评分次数"]=model_data.groupby("名称")["评分"].count()
film_top.sort_values("评分次数",ascending=False).head()

在这里插入图片描述

# 合并后的数据
model_data.head(5)

在这里插入图片描述

use_item=model_data.pivot_table(index="用户编号",columns="名称",values="评分")
use_item.head()

在这里插入图片描述

4、选取电影对用户推荐

Calculate_film=use_item["沉默的羔羊(1991)"]

# 空值填充0
use_item=use_item.fillna(0)

#计算该目标电影和其他电影的相似程度
corr_matrix=use_item.corrwith(Calculate_film)
corr_matrix.head()

在这里插入图片描述

# 数据转换
recommend_list=pd.DataFrame(corr_matrix)

recommend_list=recommend_list.rename(columns={0:"相关程度"})
recommend_list=recommend_list.sort_values("相关程度",ascending=False)
recommend_list.head()

在这里插入图片描述

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

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

相关文章

php实现一个简单的MySQL分页

一、案例演示: 二、php 代码 <?php $servername = "localhost"; // MySQL服务器名称或IP地址 $username = "root"; // MySQL用户名 $password = "123456"; // MySQL密码 $dbname = "test"; // 要连接的数据…

外盘黄金期货需要注意什么?

为大家整理了关于黄金做单的五大原则&#xff0c;相信对于新手投资者来说肯定会产生一定的帮助。  1、看多空&#xff1a;主要有两种方法&#xff0c;基本面判断和技术面判断&#xff0c;基本面判断&#xff0c;主要是借助基本信息面&#xff0c;如政策。供需&#xff0c;产量…

文字不换行了

单行文字不换行 添加... .line1Text {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;cursor: pointer; } 双行文字换行添加... .line2Text {overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;text-overflow: e…

向量化在人工智能领域的深度实践:技术革新与效率提升

在人工智能&#xff08;AI&#xff09;的飞速发展中&#xff0c;向量化技术作为一种基础且关键的数据处理手段&#xff0c;正日益受到广泛关注。向量化是将文本、图像、声音等数据转换为数值向量的过程&#xff0c;这些向量能够表示原始数据的特征和语义信息&#xff0c;为深度…

【gtest】 C++ 的测试框架之使用 gtest 编写单元测试

目录 &#x1f30a;前言 &#x1f30a;使用 cmake 启动并运行 gtest &#x1f30d;1. 设置项目 &#x1f30d;2. 创建并运行二进制文件 &#x1f30a;1. gtest 入门 &#x1f30d;1.1 断言&#xff08;assertions&#xff09; &#x1f30d;1.2 简单测试 &#x1f30d;…

进程(Processes)

在 Elixir 中&#xff0c;所有代码都在进程内运行。进程彼此隔离&#xff0c;彼此并发运行并通过消息传递进行通信。进程不仅是 Elixir 中并发的基础&#xff0c;而且还提供了构建分布式和容错程序的方法。 Elixir 的进程不应与操作系统进程混淆。Elixir 中的进程在内存和 CPU…

如何使用CCS9.3打开CCS3.0工程

如何使用CCS9.3打开CCS3.0工程 点菜单栏上的project&#xff0c;选择Import Legacy CCSv3.3 Porjects…&#xff0c;弹出对话框&#xff0c;通过Browse…按钮导入一个3.3版本的工程项目&#xff1b; 选择.pjt文件&#xff0c;选择Copy projects into worlkspace 右击选择P…

二分查找总结:算法原理,适用题型,经典题单

二分查找 感谢灵神的题单 题单&#xff1a;分享丨【题单】二分算法&#xff08;二分答案/最小化最大值/最大化最小值/第K小&#xff09; - 力扣&#xff08;LeetCode&#xff09; 每天四道题&#xff0c;大概用时一个月刷完&#xff0c;如果没有时间的同学可以学习我总结的算…

中信所:中国科学技术信息研究所-国家科技图书文献中心

文章目录 1. Intro2. History3. Staffing level4. Facility resources5. Scientific achievementsReference国家工程技术数字图书馆 National Engineering and Technology Digital Library 1. Intro 中国科学技术信息研究所(以下简称中信所)是在周恩来总理、聂荣臻元帅等党和…

【CS.AL】算法复杂度分析 —— 渐进符号表示法

文章目录 1 概述2 渐进符号详解2.1 大O符号&#xff08;O&#xff09;2.2 Ω符号&#xff08;Ω&#xff09;2.3 Θ符号&#xff08;Θ&#xff09;2.4 o符号&#xff08;o&#xff09;2.5 ω符号&#xff08;ω&#xff09; 3 具体例子3.1 插入排序&#xff08;Insertion Sort…

GitHub强制双重验证、二次验证之下载微软Authenticator

Download Microsoft Authenticator 如上图&#xff0c;安卓手机在国内&#xff0c;基本没有下载使用的可能。 下载 Microsoft Authenticator 如上图&#xff0c;找到了国内下载渠道&#xff0c;但仅联想商店的新版本适合使用&#xff0c;下载安装即可。

C++11初始化列表打包器initializer_list

有时我们无法提前知道应该向函数传递几个实参。为了编写能处理不同数量实参的函数我们使用initializer_list Cplusplus中的定义&#xff1a; 其里面有三个成员函数 也就是说他是支持迭代器的&#xff0c;支持迭代器就支持范围for 图像理解 函数类型 void Test1_initializer_li…

一手洞悉巴西slot游戏包投放本土网盟CPI广告优势

一手洞悉巴西slot游戏包投放本土网盟CPI广告优势 在巴西这片热土上&#xff0c;slot游戏包的投放本土网盟CPI广告是一项既充满挑战又富有机遇的任务。CPI&#xff08;Cost Per Install&#xff09;广告模式&#xff0c;即按安装付费&#xff0c;已经成为许多游戏开发商推广产品…

ios18新功能:设专属“咒语”动动嘴巴即可操作iphone

苹果 iOS / iPadOS 18 系统引入了“人声快捷指令”&#xff08;Vocal Shortcuts&#xff09;功能&#xff0c;即便iPhone、iPad 处于锁屏状态下&#xff0c;也能响应你的语音命令。 苹果官方对“人声快捷指令”的介绍如下&#xff1a;iPhone 和 iPad 用户可以通过人声快捷指令…

2024牛客网高频精选Java面试八股文整理(附答案)

Java 面试 Java 作为编程语言中的 NO.1,选择入行做 IT 做编程开发的人&#xff0c;基本都把它作为首选语言,进大厂拿高薪也是大多数小伙伴们的梦想。以前 Java 岗位人才的空缺&#xff0c;而需求量又大&#xff0c;所以这种人才供不应求的现状&#xff0c;就是 Java 工程师的薪…

yolo模型评估指标相关概念

mAP&#xff08;mean Average Precision 平均精度&#xff09;&#xff0c;是一个经常被用来衡量目标 检测模型是否具有较好性能的指标。 计算mAP需要先计算每一类物体的AP&#xff0c;然后取平均值&#xff0c;所以下面介绍的 TP,FP,FN,TN都是针对某一类物体&#xff08;目标&…

CATIA软件 输入无参格式还原成为有参模型教程

上图为零件设计中特征辨识的命令栏&#xff0c;此次分享是对手动/自动特征辨识的命令应用&#xff0c;作个简单操作的分享了解。在CATIA软件中把输入的无参模型通过特征化后转化为有参模型的过程。其实CATIA软件早有这个功能提供给用户使用了&#xff0c;可能大家很少用。有了手…

数据通信与网络(二)

如何构建网络协议 这些协议采用分层的结构&#xff0c;每层协议实现特定功能&#xff0c;同时也需要依靠低层协议所提供的服务。 网络协议可以理解为三部分组成&#xff1a; 1、语法&#xff1a;通信时双方交换数据和控制信息的格式&#xff0c;是对通信时采用的数据结构形式…

【Numpy】numpy.r_用法

numpy.r_[字符串, 数组, 数组] numpy.r_的这三个整数默认值是0,1,-1 numpy.c_就是numpy.r_在三个整数是-1,2,0时的特例&#xff0c;因为常用&#xff0c;所以单独拎出来了。第一个参数-1指沿最后一个轴(维度)连接 有一个shape(2, 3, 4)的数组 np.random.randint(low0, high1…

Apache Tomcat介绍

目录 前言 一、Apache Tomcat的历史 二、核心特性与组件 三、Tomcat-基本使用 总结 前言 在Java Web开发领域&#xff0c;Apache Tomcat是一个不可或缺的核心组件。作为一个轻量级的开源Web应用服务器&#xff0c;Tomcat提供了一种简单而高效的方式来部署和管理Java Servle…