首页 > 编程语言 >基于矩阵分解的协同过滤算法

基于矩阵分解的协同过滤算法

时间:2024-04-11 22:01:20浏览次数:25  
标签:基于 推荐 过滤 矩阵 用户 算法 分解

引言

随着互联网、大数据等新技术的迅速发展,人们的生活变得更加便捷,但同时也导致网络数据爆炸式增长。为了快速帮助用户找到感兴趣的内容,越来越多的研究者致力于推荐算法的研究,以提高推荐质量,向用户推荐更符合其喜好的内容。然而,目前的推荐算法仍存在数据稀疏性、隐私保护和冷启动等问题,文章针对其中一些问题进行改进。

摘要

首先,为了缓解冷启动问题,文章引入引入潜藏的隐式信息即用户的社交信息和项目关联信息,结合这些隐式信息可以提高推荐算法的准确度。

本文提出了一种基于双正则化矩阵分解的推荐算法-MDABDRT算法(Matrix Decomposition Algorithm Based on Doubl-e Regular Terms),MDABDRT算法在矩阵分解模型中添加用户去噪声的社交信息正则项和融有用户活跃度的商品关联正则项,在矩阵分解过程中限制用户和项目潜在特征向量的学习。其中,通过用户去噪声的社交信息正则项,可以限制用户与其真正有相同兴趣喜好的社交好友的潜在特征向量相似,而融有用户活跃度的商品关联正则项,则可以限制商品与其有关联的商品的潜在特征向量相似,从而提高推荐质量。

由于基于双正则化矩阵分解的推荐算法忽略了用户潜在特征向量与项目潜在特征向量之间的非线性关系,引入深度神经网络来学习用户和项目潜在向量之间的非线性关系。

本文提出了基于深度神经网络的双正则化矩阵分解推荐算法- DRTMDABDNN 算法(Double Regular Term Matrix Decomposition Algorithm Based on Deep Neural Network),利用神经网络发现用户和项目之间更多非线性的隐藏偏好信息,提高对项目预测评分的准确性,提高推荐算法的精度。

最后,作者设计并实现一个个性化商城系统,将 MDABDRT 算法和 DRTMDABDNN 算法应用到商城系统的个性化推荐模块中,该系统能够根据用户的行为和偏好,推荐相关商品,从而实现更好的个性化推荐效果。

协同过滤推荐算法

该方法是目前应用最广泛、使用最多的推荐算法之一,该算法的主要思想是发现与当前用户有着相同兴趣爱好或者有过相似历史行为的用户,分析用户与用户之间的兴趣爱好的相似性、项目与项目之间的关联性以及用户对项目的操作行为,预测用户的兴趣,并向用户进行推荐相关内容。协同过滤推荐算法通常又被分为基于用户的协同过滤推荐算法、基于项目的协同过滤推荐算法、基于模型的协同过滤推荐算法三种类型。

基于用户的协同过滤推荐算法主要是通过用户对项目的历史操作行为发现用户的兴趣,然后通过评估用户与用户之间的相似程度,找到与这个用户有着相似兴趣爱好的用户,并向目标用户推荐相似用户们交互过的内容。

基于项目的协同过滤推荐算法是根据用户的历史评分信息发现用户的偏好,发现项目和项目之间的相似度,然后根据用户的兴趣偏好,向目标用户推荐类似的项目。

基于模型的协同过滤推荐算法是借助机器学习的方法来分析用户对项目的历史操作行为,通过学习用户打过分的项目来预测用户没有过打过分的项目的评分,并在此过程中建立数学模型。该类算法主要利用用户交互的历史评分数据,通过矩阵分解、奇异值分解、聚类分析等模型对历史评分进行学习,从而预测用户未交互的项目评分并进行推荐。

该类型的算法不需要将所有用户的数据读入到内存中在进行计算,可以对训练数据进行离线学习,从而获得模型的参数,最终得到线下的预测模型。该类型算法可以通过学习用户对项目的偏好模型,更好地预测出用户可能感兴趣的项目,在一定程度上可以缓解数据稀疏性问题和冷启动问题,也可以很好地解释推荐的结果。

混合推荐算法

混合推荐算法是一种结合多种推荐算法以提高推荐准确性和覆盖率的方法[8]。它可以通过基于模型的方法或者基于加权的方法将不同算法的结果结合起来,产生更好的推荐结果。混合推荐算法可以解决推荐系统中的一些难题,如冷启动问题、推荐结果多样性问题等。

矩阵分解

在协同过滤推荐算法中,矩阵分解是最常被使用的方法之一,该方法主要是利用机器学习和隐语义模型的特点挖掘潜在的用户与项目之间的关系。矩阵分解是一种将用户-项目评分矩阵分解成两个低维潜在特征矩阵的方法,这两个低维潜在特征矩阵分别是用户潜在特征矩阵和项目潜在特征矩阵,使得两个潜在特征矩阵的相乘的结果近似等于用户原始的打分矩阵,矩阵分解原理图如下图所示:
image

深度神经网络

深度神经网络是一种层次化的模型,它是由多个神经网络层组成的,每一层都由多个神经元组成,神经元用来处理输入的数据并输出产生的结果。深度神经网络主要由输入层、多个隐藏层和输出层组成。每层都将输入的数据变为更高级的表示,并将其作为下一层的输入数据。在模型训练期间,深度神经网络学习如何调节每层之间的连接权重,以确保使得预测值与实际值之间的误差尽可能的小,各层之间的权重调节需要利用反向传播来完成,反向传播主要是通过计算误差梯度来更新各个权重值。深度神经网络拥有强大的表示能力,因此可以发现数据之间的非线性关系。深度神经网络主要分为三类:前馈深度网络、反馈深度网络和双向深度网络。

基于矩阵分解的推荐算法

概述

该算法是当前推荐系统中广泛应用的一种算法。该算法因其在 Netflix Prize 比赛中的卓越表现而受到大量研究人员的关注。与其他协同过滤算法相比,矩阵分解算法具有更扎实的理论基础、更好的可扩展性、简单、易于实现等优势,已成为最受欢迎的一种算法。

矩阵分解主要应用在推荐算法的评分预测部分,该部分是推荐算法的一个重要组成部分。矩阵分解方
法一般用于分解用户-物品评分矩阵,从而得到两个隐含特征矩阵,并通过这些隐含的特征来评估用户喜欢某物品的可能性。

基于矩阵分解的推荐算法分类如图所示:
image

基于矩阵分解的协同过滤推荐算法

该算法通过将高维的用户-项目评分矩阵进行矩阵分解,分解成两个低维的矩阵即用户潜在特征矩阵和项目潜在特征矩阵,将这两个潜在特征矩阵相乘来预测用户未评分的项目的评分,并将这些评分按从高到低进行排序,向用户推荐评分最高的前N个项目。常见的算法有SVD算法等。

基于概率模型的矩阵分解算法

该算法将用户对项目的历史打分矩阵看成是由多个概率模型组成的混合模型,并利用最大似然或者贝叶斯推断方法来学习模型中的参数,从而进行推荐。常见的基于概率模型的矩阵分解算法有概率矩阵分解(PMF),隐式反馈下的概率矩阵分解(iPMF)等。

基于张量分解的推荐算法

该算法将用户对项目的历史打分矩阵看成是由多个概率模型组成的混合模型,并利用最大似然或者贝叶斯推断方法来学习模型中的参数,从而进行推荐。常见的基于概率模型的矩阵分解算法有概率矩阵分解(PMF)、隐式反馈下的概率矩阵分解(iPMF)等。

基于非负矩阵分解的推荐算法

该算法将用户对项目的历史打分矩阵看成是由多个概率模型组成的混合模型,并利用最大似然或者贝叶斯推断方法来学习模型中的参数,从而进行推荐。常见的基于概率模型的矩阵分解算法有概率矩阵分解(PMF)、隐式反馈下的概率矩阵分解(iPMF)等。

基于深度学习的矩阵分解算法

该算法将用户对项目的历史打分矩阵看成是由多个概率模型组成的混合模型,并利用最大似然或者贝叶斯推断方法来学习模型中的参数,从而进行推荐。常见的基于概率模型的矩阵分解算法有概率矩阵分解(PMF)、隐式反馈下的概率矩阵分解(iPMF)等。

基于社交信息的推荐算法

该算法将用户对项目的历史打分矩阵看成是由多个概率模型组成的混合模型,并利用最大似然或者贝叶斯推断方法来学习模型中的参数,从而进行推荐。常见的基于概率模型的矩阵分解算法有概率矩阵分解(PMF)、隐式反馈下的概率矩阵分解(iPMF)等。

系统设计

作者给出的设计图如下:
image

各功能模块图如下:
image

基于双正则化矩阵分解的推荐算法

在推荐算法中,常见的计算相似度的方法主要有:余弦相似度方法、欧几里得距离法以及皮尔逊相关系数方法等。文章提出的MDABDRT算法用皮尔逊系数来衡量商品之间的相似性。

为了推荐系统能够对用户间的相似性进行计算,除了考虑用户兴趣信息外,还可以利用额外的信息,如用户的社交信息等。用户的社交信息也会隐藏着用户的喜好,有相同兴趣爱好的两个用户会成为好友,并且他们之间会相互影响对方的喜好。

算法的伪代码如下
image

写在结尾

好了,今天的论文分享就写在这了,明天见。

标签:基于,推荐,过滤,矩阵,用户,算法,分解
From: https://www.cnblogs.com/wephilos/p/18119950

相关文章

  • 基于注意力机制与改进TF-IDF的推荐算法
    前言本篇文章是2020年8月发表于《计算机工程》的一篇期刊论文,文章名称《基于注意力机制与改进TF-IDF的推荐算法》。文章针对传统推荐系统主要依赖用户对物品的评分数据而无法学习到用户和项目的深层次特征的问题,提出基于注意力机制与改进TF-IDF的推荐算法(AMITI)。将双层注意力......
  • 基于内容的电影推荐算法研究
    引言今天读的文章为一篇名为《基于内容的电影推荐算法研究》的文章,文章提出了一种基于内容的电影推荐算法,通过分析电影特征和用户兴趣,实现更精准的电影推荐。文章中使用到了TF-IDF向量化方法,将电影类型和导演信息转化为特征向量,然后使用余弦相似度来衡量电影之间的相关性,接下来......
  • 深入理解MD5算法:原理、应用与安全
    第一章:引言导言在当今数字化时代,数据安全和完整性变得至关重要。消息摘要算法是一种用于验证数据完整性和安全性的重要工具。在众多消息摘要算法中,MD5(MessageDigestAlgorithm5)因其快速、广泛应用和相对较高的安全性而备受关注。本书将深入探讨MD5算法的原理、应用和安全性,帮......
  • 超详细!详解一道高频算法题:数组中的第 K 个最大元素
    超详细!详解一道高频算法题:数组中的第K个最大元素今天分享的题目来源于LeetCode第215号问题,是面试中的高频考题。题目描述在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。......
  • 实用算法模板——滑动窗口
    为了更好的说明这个问题,我们借用acWing上的一道题目模拟样例:解法一:使用stl中的双端队列求解解法二:使用数组模拟队列,运行速度更快如果还有疑问,可参考:C15【模板】单调队列滑动窗口最值_哔哩哔哩_bilibili希望对你有所帮助,感谢查看!......
  • Deep Deterministic Policy Gradient(DDPG)算法讲解笔记
    DDPGDeepDeterministicPolicyGradient,基于actor-critic模型提出了一个有效的valuebased连续型空间的RL算法,引入了一些帮助训练稳定的技术。基础:DQN,Batchnormm,Discretize,微积分backgroundDQN改进的推广Policybased方法(TRPO)已经在actionspace取得突破传统disc......
  • 算法训练营Day08-LeetCode344. 反转字符串 && 541. 反转字符串 II && 151. 反转字符串
    344.反转字符串题目链接:LeetCode344.反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题思路:字符串首尾字符交换即可完成反转。定......
  • 元启发式算法库 MEALPY 初体验-遗传算法为例
    简介官网:MealPY官网开源许可:(GPL)V3MEALPY简介官网简介翻译MEALPY(MEta-heuristicALgorithmsinPYthon)是一个提供最新自然启发式元启发算法的Python模块,它是最大的此类Python模块之一。这些算法模仿自然界中的成功过程,包括生物系统以及物理和化学过程。mealPy的目......
  • 算法笔记0411
    1.在C++中,set是一种关联容器,用于存储已排序的键值对,其中每个键都是唯一的。在上面的代码片段中,set<int>s;声明了一个整数类型的set,命名为s,它将自动按照元素值进行排序。set<int>::iteratorit;声明了一个名为it的迭代器,用于遍历set中的元素。迭代器是用于访问容器元素的通用......
  • 排序算法(c语言版)
    排序算法(c语言版)1、插入排序#include<stdio.h>//插入排序,升序voidinsertion_sort(intarr[],intlen){inti,j,key;for(i=1;i<len;i++){key=arr[i];//arr[i]为待插入的元素,保存在key中j=i-1;wh......