Learning算法中的推荐系统是指什么

推荐系统是什么?

推荐系统是一种能够预测用户对特定项目的喜好程度,并根据这些喜好为用户推荐最相关的项目的技术。推荐系统在电子商务、社交媒体、电影和音乐推荐等领域广泛应用,提供了个性化的用户体验,并能帮助用户发现新的内容。

推荐系统的原理

推荐系统原理主要基于协同过滤、内容过滤和混合推荐等方法。其中,协同过滤是最常见和有效的方法之一。协同过滤根据用户历史行为与其他用户的喜好进行比较,从而预测用户对项目的兴趣。这种方法基于一个假设:如果两个用户在过去喜欢或购买的项目相似,那么他们在未来也会对相似的项目有相似的喜好。

协同过滤方法有两种形式:基于用户的协同过滤和基于物品的协同过滤。基于用户的协同过滤通过计算用户之间的相似度来推荐相似用户喜欢的项目。基于物品的协同过滤通过计算项目之间的相似度来为用户推荐相似项目。

推荐系统的公式推导

基于用户的协同过滤算法

假设有n个用户和m个项目,我们可以使用矩阵R表示用户对项目的评分。矩阵R有n行和m列,其中每一行代表一个用户,每一列代表一个项目。

那么,我们可以使用矩阵R的行向量来表示每个用户对项目的评分。假设用户u对项目i的评分表示为$r_{ui}$,那么$r_{ui}$为矩阵R中的第u行第i列的元素。

为了预测用户u对项目i的评分,我们需要找到与用户u相似的其他用户,并使用其评分对用户u对项目i的评分进行预测。我们可以通过计算用户u和其他用户v之间的相似度来找到相似的用户。

一种常见的相似度度量方法是余弦相似度。余弦相似度可以通过计算两个向量的内积除以它们的模的乘积来得到。假设用户u和用户v之间的相似度为$s_{uv}$,那么余弦相似度计算公式如下:

$$s_{uv} = \frac{\sum_{i=1}^{m} r_{ui} artical cgpt2md_gpt.sh cgpt2md_johngo.log cgpt2md_johngo.sh cgpt2md.sh content1.txt _content.txt current_url.txt history_url history_urls log nohup.out online pic.txt seo test.py topic_gpt.txt topic_johngo.txt topic.txt upload-markdown-to-wordpress.py urls r{vi}}{\sqrt{\sum_{i=1}^{m} r_{ui}^2} artical cgpt2md_gpt.sh cgpt2md_johngo.log cgpt2md_johngo.sh cgpt2md.sh content1.txt _content.txt current_url.txt history_url history_urls log nohup.out online pic.txt seo test.py topic_gpt.txt topic_johngo.txt topic.txt upload-markdown-to-wordpress.py urls \sqrt{\sum{i=1}^{m} r_{vi}^2}}$$

其中,$r_{ui}$和$r_{vi}$分别表示用户u和用户v对项目i的评分。

为了预测用户u对项目i的评分,我们可以利用与用户u相似度最高的k个用户的评分进行加权平均。具体而言,对于与用户u相似度最高的用户v,我们可以利用其评分$r_{vi}$和与用户u的相似度$s_{uv}$进行加权平均,得到用户u对项目i的预测评分:

$$\hat{r}{ui} = \frac{\sum{v \in N(u,k)} s_{uv} artical cgpt2md_gpt.sh cgpt2md_johngo.log cgpt2md_johngo.sh cgpt2md.sh content1.txt _content.txt current_url.txt history_url history_urls log nohup.out online pic.txt seo test.py topic_gpt.txt topic_johngo.txt topic.txt upload-markdown-to-wordpress.py urls r{vi}}{\sum_{v \in N(u,k)} s_{uv}}$$

其中,$N(u,k)$表示与用户u相似度最高的k个用户的集合。

基于物品的协同过滤算法

基于物品的协同过滤算法与基于用户的协同过滤算法类似,只是将用户替换为项目,用户之间的相似度替换为项目之间的相似度。

假设项目i和项目j之间的相似度为$s_{ij}$,那么用户u对项目i的预测评分为:

$$\hat{r}{ui} = \frac{\sum{j \in N(i,k)} s_{ij} artical cgpt2md_gpt.sh cgpt2md_johngo.log cgpt2md_johngo.sh cgpt2md.sh content1.txt _content.txt current_url.txt history_url history_urls log nohup.out online pic.txt seo test.py topic_gpt.txt topic_johngo.txt topic.txt upload-markdown-to-wordpress.py urls r{uj}}{\sum_{j \in N(i,k)} s_{ij}}$$

其中,$N(i,k)$表示与项目i相似度最高的k个项目的集合。

推荐系统的计算步骤

基于用户的协同过滤算法的计算步骤如下:

  1. 构建用户-项目矩阵R。
  2. 计算用户之间的相似度。
  3. 对于需要为用户u推荐项目的情况,找到与用户u相似度最高的k个用户的集合$N(u,k)$。
  4. 计算用户u对项目i的预测评分。

基于物品的协同过滤算法的计算步骤如下:

  1. 构建用户-项目矩阵R。
  2. 计算项目之间的相似度。
  3. 对于需要为用户u推荐项目的情况,找到与用户u已喜欢的项目相似度最高的k个项目的集合$N(i,k)$。
  4. 计算用户u对项目i的预测评分。

Python代码示例

下面是一个基于用户的协同过滤算法的Python代码示例,用于为用户推荐相似用户喜欢的项目:

import numpy as np

def user_based_collaborative_filtering(R, user_index, k):
 similarity = np.zeros(R.shape[0])
 pred_rating = np.zeros(R.shape[1])

 for u in range(R.shape[0]):
 if u != user_index:
 numerator = np.dot(R[user_index], R[u])
 denominator = np.linalg.norm(R[user_index]) artical cgpt2md_gpt.sh cgpt2md_johngo.log cgpt2md_johngo.sh cgpt2md.sh _content1.txt _content.txt current_url.txt history_url history_urls log nohup.out online pic.txt seo test.py topic_gpt.txt topic_johngo.txt topic.txt upload-markdown-to-wordpress.py urls np.linalg.norm(R[u])
 similarity[u] = numerator / denominator

 sorted_indices = np.argsort(similarity)[::-1][:k]

 for i in range(R.shape[1]):
 if R[user_index][i] == 0:
 pred_rating[i] = np.dot(R[sorted_indices, i], similarity[sorted_indices]) / np.sum(similarity[sorted_indices])

 return pred_rating

代码细节解释

这段代码实现了基于用户的协同过滤算法,其中:

  • R是用户-项目矩阵。
  • user_index是需要为其推荐项目的用户的索引。
  • k是与用户相似度最高的k个用户的数量。
  • similarity是一个数组,用于存储用户之间的相似度。
  • pred_rating是一个数组,用于存储用户对项目的预测评分。

首先,对于每个用户,计算其与用户user_index之间的相似度,并存储在similarity数组中。

然后,根据相似度降序排序,选取与用户user_index相似度最高的前k个用户。

接下来,对于用户user_index未评分的项目,使用与用户user_index相似度最高的k个用户的评分进行加权平均,得到用户对项目的预测评分。

最后,返回用户对项目的预测评分。

这段代码实现了基于用户的协同过滤算法,并能够根据用户历史行为为用户推荐相似用户喜欢的项目。

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/822575/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 设计模式之建造者模式

    builder desigin pattern 建造者模式的概念、建造者模式的结构、建造者模式的优缺点、建造者模式的使用场景、建造者模式的实现示例、建造者模式的源码分析 1、建造者…

    人工智能 2023年7月30日
    048
  • opencv 学习笔记六 边缘检测

    在进行图像识别时,常需要检测图像的边缘信息。即边缘灰度值急剧变化的地方,一般是北京和前景物体的交界处。由于边缘处的灰度值急剧变化特性,可以利用离散数列的差分(相当于连续函数的导数)…

    人工智能 2023年6月22日
    064
  • [python] 深度学习基础——人工神经网络实现鸢尾花分类(二)

    人工神经网络实现鸢尾花分类(一)人工神经网络实现鸢尾花分类(二)人工神经网络实现鸢尾花分类(三)人工神经网络实现鸢尾花分类(四)人工神经网络实现鸢尾花分类(五) 目录 具体实现过程…

    人工智能 2023年7月1日
    075
  • Visual Attention Network

    研究背景 对于各种视觉任务来说,例如图像分类、目标检测、语义分割等,一个先进的backbone往往能够显著地提高性能。由于Transformer自身强大的建模能力,自Vit将Tra…

    人工智能 2023年6月16日
    067
  • 机器学习整理(神经网络)

    神经元 神经网络由多个神经元组成,其中神经元由几个部分组成:输入、输入权重、输出和激活函数组成,类似于生物神经元的树突、轴突的组成。 神经元的输入由左边的神经元输出 xxx 乘以权…

    人工智能 2023年7月14日
    043
  • JS原型对象

    引入:我们先用构造函数来创建一个对象 function Student(name,age,gender){ this.name = name; this.age = age; th…

    人工智能 2023年6月26日
    082
  • 降维算法实战项目(2)—使用PCA对图像降维(Python代码+数据集)

    在这部分练习中,我们将学习人脸图像上运行PCA,看看如何在实践中使用它来减少维度。 老规矩,先放出数据集: 链接:https://pan.baidu.com/s/1R0oiqoWH…

    人工智能 2023年6月17日
    0118
  • 淘宝商品数据爬取并分析数据

    一、抓取数据 1、抓取数据的意义 对电商来说,抓取某些数据,再进行分析,可以有效地反映出数据在某个区间内变化情况。数据受某些因素而发生巨大的影响,也可以借助分析的数据来规划相关项目…

    人工智能 2023年7月5日
    057
  • NLP – 结巴分词 & 词云

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

    人工智能 2023年5月30日
    067
  • win10 anaconda tensorflow-gpu安装

    确认GPU nvcc –version 确定CUDA版本 参考https://www.tensorflow.org/install/source_windows 确定对应CuDNN…

    人工智能 2023年5月25日
    051
  • Anaconda的虚拟环境的包在哪里?(详细教程)

    我们知道Anaconda可以支持创建很多虚拟环境避免一些版本冲突问题,但是在实际应用中还是会出现类似的情况。 比如说报错某一个环境中的某一个包与anaconda的包冲突了,这时候就…

    人工智能 2023年7月20日
    058
  • CNN人脸识别项目(dlib+opencv)

    CNN人脸识别 获取数据集 读取数据集 数据预处理 建立模型进行预训练 对图片进行人脸进行检测并进行可视化 总结 思路:一个CNN人脸识别项目首先必不可少的是数据集,获取的方式有网…

    人工智能 2023年5月23日
    057
  • 文字识别成语音_亲测:语音转文字常见的几种方法,看看哪种最好用

    目前,录音转文字的需求越来越大,无论是学生的课堂笔记、白领会议笔记,还是外出采访的记者,都需要将实时的语音或音频文件快速组织成文字,并转换成电子文件。 [En] At presen…

    人工智能 2023年5月27日
    067
  • paddle篇—用yolov3训练自己的数据集

    用yolov3训练自己的数据集 1、生成数据集 2、修改配置文件 3、训练 4、模型评估 5、模型预测 * 5.1、坐标和类别获取 6、模型可视化 7、模型导出 8、模型部署 * …

    人工智能 2023年6月29日
    0114
  • 图神经网络学习(一)-GCN及其应用

    内容提要:GCN背景简介+torch_geometric库安装+GCN处理Cora数据集 1.图神经网络 1.1 概念 原有的卷积神经网络主要用来解决欧式空间中的数据( 数据规整,…

    人工智能 2023年7月21日
    046
  • 如何使用 PyTorch 训练自定义关键点检测模型

    默认情况下,PyTorch 提供了一个 Keypoint RCNN 模型,该模型经过预训练以检测人体的 17 个关键点(鼻子、眼睛、耳朵、肩膀、肘部、手腕、臀部、膝盖和脚踝)。 这…

    人工智能 2023年7月12日
    057
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球