首页

> 学术发表知识库

首页 学术发表知识库 问题

分块矩阵的研究背景及其应用论文

发布时间:

分块矩阵的研究背景及其应用论文

分块矩阵:处理阶数较高的矩阵时常采用的技巧。

分块矩阵是高等代数中的一个重要内容,是处理阶数较高的矩阵时常采用的技巧,也是数学在多领域的研究工具。对矩阵进行适当分块,可使高阶矩阵的运算可以转化为低阶矩阵的运算,同时也使原矩阵的结构显得简单而清晰。

分块矩阵

对矩阵进行适当分块,可使高阶矩阵的运算可以转化为低阶矩阵的运算,同时也使原矩阵的结构显得简单而清晰,从而能够大大简化运算步骤,或给矩阵的理论推导带来方便。有不少数学问题利用分块矩阵来处理或证明,将显得简洁、明快。

分块矩阵bai是一个矩阵, 它是把矩阵分别按照横竖du分割成一些小的子矩阵 。 然后zhi把每个dao小矩阵看成一个元素。如果分块矩阵的非零子矩阵都在对角线上,就称为对角分块矩阵。分块矩阵仍满足矩阵的乘法和加法。任何方阵都可以通过相似变换, 变为约当标准型。 约当标准型是最熟知的分块矩阵。利用分块矩阵可以简化很多有关矩阵性质的证明。

分块矩阵是一个矩阵, 它是把矩阵分别按照横竖分割成一些小的子矩阵 。 然后把每个小矩阵看成一个元素。如果分块矩阵的非零子矩阵都在对角线上,就称为对角分块矩阵。分块矩阵仍满足矩阵的乘法和加法。任何方阵都可以通过相似变换, 变为约当标准型。 约当标准型是最熟知的分块矩阵。利用分块矩阵可以简化很多有关矩阵性质的证明。

分块矩阵及其应用论文开题报告

分块矩阵,求解!授人予鱼不如授人予渔,在《线性代数》的学习中,方法尤为重要。下面就让我们一起解决《线性代数》中令人头痛的——矩阵分块法吧!如果您对——矩阵分块法的学习比较吃力,建议您先学习——矩阵乘法,传送门开启,嘛咪嘛咪哄!工具原料线性代数课本纸,笔(任何)方法/步骤分步阅读1/12前言:想要学会《线性代数》中的——矩阵分块法,我们这次的学习将按照下面的步骤进行:(1) 了解什么是矩阵分块法;(2) 矩阵分块的例子;(3) 分块矩阵的运算规则;(4) 利用矩阵相乘求解复杂运算;(5) 分块矩阵之间的运算规则;2/12让我们首先了解矩阵分块的定义,如下图:3/12矩阵分块示例,如下图:4/12分块矩阵的运算规则一,如下图:5/12分块矩阵的运算规则二,如下图:6/12分块矩阵的运算规则三,如下图:7/12分块矩阵的运算规则四,如下图:8/12分块矩阵的运算规则五,如下图:9/12分块矩阵运算示例一,如下图:10/12分块矩阵运算示例二,如下图:11/12分块矩阵运算总结,如下图:12/12关于分块矩阵已经讲解完了,祝贺您今天又学习了新知识。注意事项今天讲解了矩阵分块,更多精彩内容,敬请关注!如果您觉得这篇经验有所帮助,别忘了投上您宝贵的一票哦!内容仅供参考并受版权保护

分块矩阵bai是一个矩阵, 它是把矩阵分别按照横竖du分割成一些小的子矩阵 。 然后zhi把每个dao小矩阵看成一个元素。如果分块矩阵的非零子矩阵都在对角线上,就称为对角分块矩阵。分块矩阵仍满足矩阵的乘法和加法。任何方阵都可以通过相似变换, 变为约当标准型。 约当标准型是最熟知的分块矩阵。利用分块矩阵可以简化很多有关矩阵性质的证明。

线性代数(Linear Algebra)是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。 线性代数的主要内容是研究代数学中线性关系的经典理论。由于线性关系是变量之间比较简单的一种关系,而线性问题广泛存在于科学技术的各个领域,并且一些非线性问题在一定条件下 , 可以转化或近似转化为线性问题,因此线性代数所介绍的思想方法已成为从事科学研究和工程应用工作的必不可少的工具。尤其在计算机高速发展和日益普及的今天,线性代数作为高等学校工科本科各专业的一门重要的基础理论课,其地位和作用更显得重要。 线性代数主要研究了三种对象:矩阵、方程组和向量.这三种对象的理论是密切相关的,大部分问题在这三种理论中都有等价说法.因此,熟练地从一种理论的叙述转移到另一种去,是学习线性代数时应养成的一种重要习惯和素质.如果说与实际计算结合最多的是矩阵的观点,那么向量的观点则着眼于从整体性和结构性考虑问题,因而可以更深刻、更透彻地揭示线性代数中各种问题的内在联系和本质属性.由此可见,只要掌握矩阵、方程组和向量的内在联系,遇到问题就能左右逢源,举一反三,化难为易. 一、注重对基本概念的理解与把握,正确熟练运用基本方法及基本运算。 线性代数的概念很多,重要的有: 代数余子式,伴随矩阵,逆矩阵,初等变换与初等矩阵,正交变换与正交矩阵,秩(矩阵、向量组、二次型),等价(矩阵、向量组),线性组合与线性表出,线性相关与线性无关,极大线性无关组,基础解系与通解,解的结构与解空间,特征值与特征向量,相似与相似对角化,二次型的标准形与规范形,正定,合同变换与合同矩阵。 我们不仅要准确把握住概念的内涵,也要注意相关概念之间的区别与联系。 线性代数中运算法则多,应整理清楚不要混淆,基本运算与基本方法要过关,重要的有: 行列式(数字型、字母型)的计算,求逆矩阵,求矩阵的秩,求方阵的幂,求向量组的秩与极大线性无关组,线性相关的判定或求参数,求基础解系,求非齐次线性方程组的通解,求特征值与特征向量(定义法,特征多项式基础解系法),判断与求相似对角矩阵,用正交变换化实对称矩阵为对角矩阵(亦即用正交变换化二次型为标准形)。 二、注重知识点的衔接与转换,知识要成网,努力提高综合分析能力。 线性代数从内容上看纵横交错,前后联系紧密,环环相扣,相互渗透,因此解题方法灵活多变,学习时应当常问自己做得对不对?再问做得好不好?只有不断地归纳总结,努力搞清内在联系,使所学知识融会贯通,接口与切入点多了,熟悉了,思路自然就开阔了。 例如:设A是m×n矩阵,B是n×s矩阵,且AB=0,那么用分块矩阵可知B的列向量都是齐次方程组Ax=0的解,再根据基础解系的理论以及矩阵的秩与向量组秩的关系,可以有 r(B)≤n-r(A)即r(A)+r(B)≤n 进而可求矩阵A或B中的一些参数 上述例题说明,线性代数各知识点之间有着千丝万缕的联系,代数题的综合性与灵活性就较大,同学们整理时要注重串联、衔接与转换。 三、注重逻辑性与叙述表述 线性代数对于抽象性与逻辑性有较高的要求,通过证明题可以了解考生对数学主要原理、定理的理解与掌握程度,考查考生的抽象思维能力、逻辑推理能力。大家复习整理时,应当搞清公式、定理成立的条件,不能张冠李戴,同时还应注意语言的叙述表达应准确、简明。

下些论文,找个模板,按要求拼凑一下,一般就差不多了

矩阵的分解及其应用毕业论文

------------------------------------------------------------------------------------------------------------------------------------------------

对于推荐系统来说存在两大场景即评分预测(rating prediction)与Top-N推荐(item recommendation,item ranking)。矩阵分解主要应用于评分预测场景。

推荐系统的评分预测场景可看做是一个矩阵补全的游戏,矩阵补全是推荐系统的任务,矩阵分解是其达到目的的手段。因此,矩阵分解是为了更好的完成矩阵补全任务(欲其补全,先其分解之)。之所以可以利用矩阵分解来完成矩阵补全的操作,那是因为基于这样的假设:假设UI矩阵是低秩的,即在大千世界中,总会存在相似的人或物,即物以类聚,人以群分,然后我们可以利用两个小矩阵相乘来还原它。

矩阵分解就是把原来的大矩阵,近似的分解成小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵。

具体来说就是,假设用户物品的评分矩阵A是m乘n维,即一共有m个用户,n个物品.通过一套算法转化为两个矩阵U和V,矩阵U的维度是m乘k,矩阵V的维度是n乘k。

这两个矩阵的要求就是通过下面这个公式可以复原矩阵A:

说起矩阵分解,我们第一个想起的就是SVD。

SVD分解的形式为3个矩阵相乘,左右两个矩阵分别表示用户/项目隐含因子矩阵,中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小。因此我们可以只需要前个K因子来表示它。

但SVD分解要求矩阵是稠密的,也就是说矩阵的所有位置不能有空白。有空白时我们的M是没法直接去SVD分解的。大家会说,如果这个矩阵是稠密的,那不就是说我们都已经找到所有用户物品的评分了嘛,那还要SVD干嘛! 的确,这是一个问题,传统SVD采用的方法是对评分矩阵中的缺失值进行简单的补全,比如用全局平均值或者用用户物品平均值补全,得到补全后的矩阵。接着可以用SVD分解并降维。

虽然有了上面的补全策略,我们的传统SVD在推荐算法上还是较难使用。因为我们的用户数和物品一般都是超级大,随便就成千上万了。这么大一个矩阵做SVD分解是非常耗时的。那么有没有简化版的矩阵分解可以用呢?我们下面来看看实际可以用于推荐系统的矩阵分解。

FunkSVD是在传统SVD面临计算效率问题时提出来的,既然将一个矩阵做SVD分解成3个矩阵很耗时,同时还面临稀疏的问题,那么我们能不能避开稀疏问题,同时只分解成两个矩阵呢?也就是说,现在期望我们的矩阵M这样进行分解:

SVD分解已经很成熟了,但是FunkSVD如何将矩阵M分解为P和Q呢?这里采用了线性回归的思想。目标是让用户的评分和用矩阵乘积得到的评分残差尽可能的小,也就是说,可以用均方差作为损失函数,来寻找最终的P和Q。

在实际应用中,为了防止过拟合,会加入一个L2的正则化项。加入了正则化系数,需要调参。对于这个优化问题,一般通过梯度下降法来进行优化得到结果。

在FunkSVD算法火爆之后,出现了很多FunkSVD的改进版算法。其中BiasSVD算是改进的比较成功的一种算法。BiasSVD假设评分系统包括三部分的偏置因素:一些和用户物品无关的评分因素,用户有一些和物品无关的评分因素,称为用户偏置项。而物品也有一些和用户无关的评分因素,称为物品偏置项。这其实很好理解。比如一个垃圾山寨货评分不可能高,自带这种烂属性的物品由于这个因素会直接导致用户评分低,与用户无关。

一个用户给一个物品的评分会由四部分相加:

从左到右分别代表:全局平均分、物品的评分偏置、用户的评分偏置、用户和物品之间的兴趣偏好

BiasSVD增加了一些额外因素的考虑,因此在某些场景会比FunkSVD表现好。

SVD++算法在BiasSVD算法上进一步做了增强,这里它增加考虑用户的隐式反馈。它是基于这样的假设:用户除了对于项目的显式历史评分记录外,浏览记录或者收藏列表等隐反馈信息同样可以从侧面一定程度上反映用户的偏好,比如用户对某个项目进行了收藏,可以从侧面反映他对于这个项目感兴趣,具体反映到预测公式为:

学习算法依然不变,只是要学习的参数多了两个向量:x和y。一个是隐式反馈的物品向量,另一个是用户属性的向量,这样在用户没有评分时,也可以用他的隐式反馈和属性做出一定的预测。

它是基于这样的假设:用户的兴趣或者偏好不是一成不变的,而是随着时间而动态演化。于是提出了timeSVD,其中用户的和物品的偏置随着时间而变化,同时用户的隐含因子也随着时间而动态改变,在此物品的隐含表示并未随时间而变化(假设物品的属性不会随着时间而改变)。

其中,t为时间因子,表示不同的时间状态。

通过之前构建目标函数之后,就要用到优化算法找到能使它最小的参数。优化方法常用的选择有两个,一个是随机梯度下降(SGD),另一个是交替最小二乘(ALS),在实际应用中,交替最小二乘更常用一些,这也是推荐系统中选择的主要矩阵分解方法。 找到两个矩阵P和Q,让它们相乘后约等于原矩阵R:

P和Q两个都是未知的,如果知道其中一个的话,就可以按照代数标准解法求得,比如知道Q,那么P就可以这样算:

也就是R矩阵乘Q矩阵的逆矩阵就得到了结果,反之,知道了P 再求Q 也一样,交替最小二乘通过迭代的方式解决这个鸡生蛋蛋生鸡的难题: 1)、初始化随机矩阵Q里面的元素值

2)、把Q矩阵当做已知的,直接用线性代数的方法求得矩阵P

3)、得到了矩阵P后,把P当做已知的,故技重施,回去求解矩阵Q

4)、 上面两个过程交替进行,一直到误差可以接受为止

使用交替最小二乘好处: 1.在交替的其中一步,也就是假设已知其中一个矩阵求解另一个时,要优化的参数是很容易并行的; 2.在不是很稀疏的数据集合上,交替最小二乘通常比随机梯度下降要更快的得到结果。

在很多推荐场景中,我们都是基于现有的用户和商品之间的一些数据,得到用户对所有商品的评分,选择高分的商品推荐给用户,这是funkSVD之类算法的做法,使用起来也很有效。但是在有些推荐场景中,我们是为了在千万级别的商品中推荐个位数的商品给用户,此时,我们更关心的是用户来说,哪些极少数商品在用户心中有更高的优先级,也就是排序更靠前。也就是说,我们需要一个排序算法,这个算法可以把每个用户对应的所有商品按喜好排序。BPR就是这样的一个我们需要的排序算法。

BPR根据像交替最小二乘那样完成矩阵分解,先假装矩阵分解结果已经有了,于是就计算出用户对于每个物品的推荐分数,只不过这个推荐分数可能并不满足均方根误差最小,而是满足物品相对排序最佳

得到了用户和物品的推荐分数后,就可以计算四元组的样本中,物品1和物品2的分数差,这个分数可能是正数,也可能是负数,也可能是0。如果物品1和物品2相对顺序为1,那么希望两者分数之差是个正数,而且越大越好;如果物品1和物品2的相对顺序是0,则希望分数之差是负数,且越小越好。 目标函数:

把这个目标函数化简和变形后,和把AUC当成目标函数是非常相似的,也正是因为如此,BPR模型宣称该模型是为AUC而生的。

SVDFeature 是由上海交大Apex Data & Knowledge Management Lab(APEX)开发的一个推荐系统工具包。他们提出了一种基于feature 的矩阵分解的框架。

它的目的是有效地解决基于特征的矩阵分解。新的模型可以只通过定义新的特征来实现。

这种基于特征的设置允许我们把很多信息包含在模型中,使得模型更加与时俱进。使用此工具包,可以很容易的把其他信息整合进模型,比如时间动态,领域关系和分层信息。除了评分预测,还可以实现pairwise ranking任务。

SVDFeature的模型定义如下:

输入包含三种特征<α,β,γ>,分别是用户特征,物品特征和全局特征。

SVD :要求矩阵是稠密的,时间复杂度高。不推荐使用。 FunkSVD :不在将矩阵分解为3个矩阵,而是分解为2个低秩的用户项目矩阵,同时降低了时间复杂度。 BiasSVD :考虑偏置项时使用,也就是用户的爱好。 SVD++ :考虑用户的隐式反馈时使用。主动点评电影或者美食的用户是少数,也就是说显示反馈比隐式反馈少,这个时候就可以根据用户的隐式反馈推荐。 timeSVD :考虑时间因素时使用。人是善变的,随着时间的流逝,兴趣也会发生变化。 ALS :考虑建模时间时使用。强烈推荐使用,这也是社交巨头 Facebook 在他们的推荐系统中选择的主要矩阵分解算法。 BPR :考虑排序结果时使用。 SVDFeature :当我们有多个特征时,可以使用。SVDFeature的目的就是解决基于特征的矩阵分解。

矩阵分解算法的缺点 :都没有解决冷启动问题

准确率表示预测正确的样本数占总样本数的比例。

TP(true positive):表示样本的真实类别为正,最后预测得到的结果也为正; FP(false positive):表示样本的真实类别为负,最后预测得到的结果却为正; FN(false negative):表示样本的真实类别为正,最后预测得到的结果却为负; TN(true negative):表示样本的真实类别为负,最后预测得到的结果也为负.

精确率表示预测为正样本的样本中,正确预测为正样本的概率。

召回率表示正确预测出正样本占实际正样本的概率。

折中了召回率与精确率。

对于评分预测任务,一般都是根据原有的评分数据,利用矩阵分解等方法去拟合原评分,使得优化后的模型可以去预测新的评分,这里就要衡量你预测的评分和实际评分的差异了,指标也很简单,分为RMSE和MSE。 MSE 是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。 RMSE :RMSE是MSE的算术平方根。

AUC 这个值在数学上等价于:模型把关心的那一类样本排在其他样本前面的概率。最大是 1,完美结果,而 0.5 就是随机排列,0 就是完美地全部排错。 这个非常适合用来评价模型的排序效果,很适合作为BPR的评价指标。得到一个推荐模型后,按照它计算的分数,可以把用户想要的物品排在最前面。

具体的计算过程可看我的另一篇 文章

其中Rel表示与用户 u 相关的商品集(测试集), Rec表示推荐给用户的前K个列表,二者的交集除以Rec的集合元素个数(其实就是K),得到Precision@K。一般是算出每个用户的Precision@K,然后取平均值。

其中Rel表示与用户u相关的商品集(测试集),Rec表示推荐给用户的前K个列表,二者的交集除以Rec的集合元素个数(也就是测试集中用户u评过分的商品数),得到Recall@K。一般是算出每个用户的Recall@K,然后取平均值。

MAP(Mean Average Precision):单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。

主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。

MAP 是反映系统在全部相关文档上性能的单值指标。

系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高。如果系统没有返回相关文档,则准确率默认为0。 例如:

假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。

某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;

对于主题2检索出3个相关网页,其rank分别为1,3,5。

对于主题1,平均准确率为(1/1+2/2+3/4+4/7)/4=0.83。对于主题2,平均准确率为(1/1+2/3+3/5+0+0)/5=0.45。

则MAP= (0.83+0.45)/2=0.64。

正确检索结果值在检索结果中的排名来评估检索系统的性能。

其中Q是用户的个数,rank是对于第i个用户,推荐列表中第一个在ground-truth结果中的item所在的排列位置。

举个例子:假如检索三次的结果如下,需要的结果(cat,torus,virus)分别排在3,2,1的话,此系统地MRR为(1/3 + 1/2 + 1)/3 = 11/18

比较复杂,可参考这篇 文章

参考文章:

百度文库有篇很好的,直接搜“毕业论文分块矩阵的应用”就行了。

好写哦!科技论文,专业性这么强,写出来,也是只有专业人员才能明白。首先,序言:把矩阵的乘法原理,加以介绍、解释和说明,这些就是书上现成的东西。接着介绍其应用都有哪些,具体在哪些方面。最后说明本文主要介绍哪些方面的具体应用及事例。进入正文,集中写清楚,你要介绍的应用及事例。字数要多,就多写,写详细一些;字数一般,就写得一般,就可以啦。。。祝成功!

矩阵分解及其应用毕业论文

告诉你拟就会写吗。不如我给你写得了

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合[1] ,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。关于矩阵相关理论的发展和应用,请参考矩阵理论。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究。作为解决线性方程的工具,矩阵也有不短的历史。成书最迟在东汉前期的《九章算术》中,用分离系数法表示线性方程组,得到了其增广矩阵。在消元过程中,使用的把某行乘以某一非零实数、从某行中减去另一行等运算技巧,相当于矩阵的初等变换。但那时并没有现今理解的矩阵概念,虽然它与现有的矩阵形式上相同,但在当时只是作为线性方程组的标准表示与处理方式。矩阵正式作为数学中的研究对象出现,则是在行列式的研究发展起来后。逻辑上,矩阵的概念先于行列式,但在实际的历史上则恰好相反。日本数学家关孝和(1683年)与微积分的发现者之一戈特弗里德·威廉·莱布尼茨(1693年)近乎同时地独立建立了行列式论。其后行列式作为解线性方程组的工具逐步发展。1750年,加布里尔·克拉默发现了克莱姆法则[2] 。矩阵的现代概念在19世纪逐渐形成。1800年代,高斯和威廉·若尔当建立了高斯—若尔当消去法。1844年,德国数学家费迪南·艾森斯坦(F.Eisenstein)讨论了“变换”(矩阵)及其乘积。1850年,英国数学家詹姆斯·约瑟夫·西尔维斯特(James Joseph Sylvester)首先使用矩阵一词[3] 。英国数学家凯利被公认为矩阵论的奠基人。他开始将矩阵作为独立的数学对象研究时,许多与矩阵有关的性质已经在行列式的研究中被发现了,这也使得凯利认为矩阵的引进是十分自然的。他说:“我决然不是通过四元数而获得矩阵概念的;它或是直接从行列式的概念而来,或是作为一个表达线性方程组的方便方法而来的。”他从1858年开始,发表了《矩阵论的研究报告》等一系列关于矩阵的专门论文,研究了矩阵的运算律、矩阵的逆以及转置和特征多项式方程。凯利还提出了凯莱-哈密尔顿定理,并验证了3×3矩阵的情况,又说进一步的证明是不必要的。哈密尔顿证明了4×4矩阵的情况,而一般情况下的证明是德国数学家弗罗贝尼乌斯(F.G.Frohenius)于1898年给出的[2] 。1854年时法国数学家埃尔米特(C.Hermite)使用了“正交矩阵”这一术语,但他的正式定义直到1878年才由费罗贝尼乌斯发表。1879年,费罗贝尼乌斯引入矩阵秩的概念。至此,矩阵的体系基本上建立起来了。无限维矩阵的研究始于1884年。庞加莱在两篇不严谨地使用了无限维矩阵和行列式理论的文章后开始了对这一方面的专门研究。1906年,希尔伯特引入无限二次型(相当于无限维矩阵)对积分方程进行研究,极大地促进了无限维矩阵的研究。在此基础上,施密茨、赫林格和特普利茨发展出算子理论,而无限维矩阵成为了研究函数空间算子的有力工具[4] 。

------------------------------------------------------------------------------------------------------------------------------------------------

对于推荐系统来说存在两大场景即评分预测(rating prediction)与Top-N推荐(item recommendation,item ranking)。矩阵分解主要应用于评分预测场景。

推荐系统的评分预测场景可看做是一个矩阵补全的游戏,矩阵补全是推荐系统的任务,矩阵分解是其达到目的的手段。因此,矩阵分解是为了更好的完成矩阵补全任务(欲其补全,先其分解之)。之所以可以利用矩阵分解来完成矩阵补全的操作,那是因为基于这样的假设:假设UI矩阵是低秩的,即在大千世界中,总会存在相似的人或物,即物以类聚,人以群分,然后我们可以利用两个小矩阵相乘来还原它。

矩阵分解就是把原来的大矩阵,近似的分解成小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵。

具体来说就是,假设用户物品的评分矩阵A是m乘n维,即一共有m个用户,n个物品.通过一套算法转化为两个矩阵U和V,矩阵U的维度是m乘k,矩阵V的维度是n乘k。

这两个矩阵的要求就是通过下面这个公式可以复原矩阵A:

说起矩阵分解,我们第一个想起的就是SVD。

SVD分解的形式为3个矩阵相乘,左右两个矩阵分别表示用户/项目隐含因子矩阵,中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小。因此我们可以只需要前个K因子来表示它。

但SVD分解要求矩阵是稠密的,也就是说矩阵的所有位置不能有空白。有空白时我们的M是没法直接去SVD分解的。大家会说,如果这个矩阵是稠密的,那不就是说我们都已经找到所有用户物品的评分了嘛,那还要SVD干嘛! 的确,这是一个问题,传统SVD采用的方法是对评分矩阵中的缺失值进行简单的补全,比如用全局平均值或者用用户物品平均值补全,得到补全后的矩阵。接着可以用SVD分解并降维。

虽然有了上面的补全策略,我们的传统SVD在推荐算法上还是较难使用。因为我们的用户数和物品一般都是超级大,随便就成千上万了。这么大一个矩阵做SVD分解是非常耗时的。那么有没有简化版的矩阵分解可以用呢?我们下面来看看实际可以用于推荐系统的矩阵分解。

FunkSVD是在传统SVD面临计算效率问题时提出来的,既然将一个矩阵做SVD分解成3个矩阵很耗时,同时还面临稀疏的问题,那么我们能不能避开稀疏问题,同时只分解成两个矩阵呢?也就是说,现在期望我们的矩阵M这样进行分解:

SVD分解已经很成熟了,但是FunkSVD如何将矩阵M分解为P和Q呢?这里采用了线性回归的思想。目标是让用户的评分和用矩阵乘积得到的评分残差尽可能的小,也就是说,可以用均方差作为损失函数,来寻找最终的P和Q。

在实际应用中,为了防止过拟合,会加入一个L2的正则化项。加入了正则化系数,需要调参。对于这个优化问题,一般通过梯度下降法来进行优化得到结果。

在FunkSVD算法火爆之后,出现了很多FunkSVD的改进版算法。其中BiasSVD算是改进的比较成功的一种算法。BiasSVD假设评分系统包括三部分的偏置因素:一些和用户物品无关的评分因素,用户有一些和物品无关的评分因素,称为用户偏置项。而物品也有一些和用户无关的评分因素,称为物品偏置项。这其实很好理解。比如一个垃圾山寨货评分不可能高,自带这种烂属性的物品由于这个因素会直接导致用户评分低,与用户无关。

一个用户给一个物品的评分会由四部分相加:

从左到右分别代表:全局平均分、物品的评分偏置、用户的评分偏置、用户和物品之间的兴趣偏好

BiasSVD增加了一些额外因素的考虑,因此在某些场景会比FunkSVD表现好。

SVD++算法在BiasSVD算法上进一步做了增强,这里它增加考虑用户的隐式反馈。它是基于这样的假设:用户除了对于项目的显式历史评分记录外,浏览记录或者收藏列表等隐反馈信息同样可以从侧面一定程度上反映用户的偏好,比如用户对某个项目进行了收藏,可以从侧面反映他对于这个项目感兴趣,具体反映到预测公式为:

学习算法依然不变,只是要学习的参数多了两个向量:x和y。一个是隐式反馈的物品向量,另一个是用户属性的向量,这样在用户没有评分时,也可以用他的隐式反馈和属性做出一定的预测。

它是基于这样的假设:用户的兴趣或者偏好不是一成不变的,而是随着时间而动态演化。于是提出了timeSVD,其中用户的和物品的偏置随着时间而变化,同时用户的隐含因子也随着时间而动态改变,在此物品的隐含表示并未随时间而变化(假设物品的属性不会随着时间而改变)。

其中,t为时间因子,表示不同的时间状态。

通过之前构建目标函数之后,就要用到优化算法找到能使它最小的参数。优化方法常用的选择有两个,一个是随机梯度下降(SGD),另一个是交替最小二乘(ALS),在实际应用中,交替最小二乘更常用一些,这也是推荐系统中选择的主要矩阵分解方法。 找到两个矩阵P和Q,让它们相乘后约等于原矩阵R:

P和Q两个都是未知的,如果知道其中一个的话,就可以按照代数标准解法求得,比如知道Q,那么P就可以这样算:

也就是R矩阵乘Q矩阵的逆矩阵就得到了结果,反之,知道了P 再求Q 也一样,交替最小二乘通过迭代的方式解决这个鸡生蛋蛋生鸡的难题: 1)、初始化随机矩阵Q里面的元素值

2)、把Q矩阵当做已知的,直接用线性代数的方法求得矩阵P

3)、得到了矩阵P后,把P当做已知的,故技重施,回去求解矩阵Q

4)、 上面两个过程交替进行,一直到误差可以接受为止

使用交替最小二乘好处: 1.在交替的其中一步,也就是假设已知其中一个矩阵求解另一个时,要优化的参数是很容易并行的; 2.在不是很稀疏的数据集合上,交替最小二乘通常比随机梯度下降要更快的得到结果。

在很多推荐场景中,我们都是基于现有的用户和商品之间的一些数据,得到用户对所有商品的评分,选择高分的商品推荐给用户,这是funkSVD之类算法的做法,使用起来也很有效。但是在有些推荐场景中,我们是为了在千万级别的商品中推荐个位数的商品给用户,此时,我们更关心的是用户来说,哪些极少数商品在用户心中有更高的优先级,也就是排序更靠前。也就是说,我们需要一个排序算法,这个算法可以把每个用户对应的所有商品按喜好排序。BPR就是这样的一个我们需要的排序算法。

BPR根据像交替最小二乘那样完成矩阵分解,先假装矩阵分解结果已经有了,于是就计算出用户对于每个物品的推荐分数,只不过这个推荐分数可能并不满足均方根误差最小,而是满足物品相对排序最佳

得到了用户和物品的推荐分数后,就可以计算四元组的样本中,物品1和物品2的分数差,这个分数可能是正数,也可能是负数,也可能是0。如果物品1和物品2相对顺序为1,那么希望两者分数之差是个正数,而且越大越好;如果物品1和物品2的相对顺序是0,则希望分数之差是负数,且越小越好。 目标函数:

把这个目标函数化简和变形后,和把AUC当成目标函数是非常相似的,也正是因为如此,BPR模型宣称该模型是为AUC而生的。

SVDFeature 是由上海交大Apex Data & Knowledge Management Lab(APEX)开发的一个推荐系统工具包。他们提出了一种基于feature 的矩阵分解的框架。

它的目的是有效地解决基于特征的矩阵分解。新的模型可以只通过定义新的特征来实现。

这种基于特征的设置允许我们把很多信息包含在模型中,使得模型更加与时俱进。使用此工具包,可以很容易的把其他信息整合进模型,比如时间动态,领域关系和分层信息。除了评分预测,还可以实现pairwise ranking任务。

SVDFeature的模型定义如下:

输入包含三种特征<α,β,γ>,分别是用户特征,物品特征和全局特征。

SVD :要求矩阵是稠密的,时间复杂度高。不推荐使用。 FunkSVD :不在将矩阵分解为3个矩阵,而是分解为2个低秩的用户项目矩阵,同时降低了时间复杂度。 BiasSVD :考虑偏置项时使用,也就是用户的爱好。 SVD++ :考虑用户的隐式反馈时使用。主动点评电影或者美食的用户是少数,也就是说显示反馈比隐式反馈少,这个时候就可以根据用户的隐式反馈推荐。 timeSVD :考虑时间因素时使用。人是善变的,随着时间的流逝,兴趣也会发生变化。 ALS :考虑建模时间时使用。强烈推荐使用,这也是社交巨头 Facebook 在他们的推荐系统中选择的主要矩阵分解算法。 BPR :考虑排序结果时使用。 SVDFeature :当我们有多个特征时,可以使用。SVDFeature的目的就是解决基于特征的矩阵分解。

矩阵分解算法的缺点 :都没有解决冷启动问题

准确率表示预测正确的样本数占总样本数的比例。

TP(true positive):表示样本的真实类别为正,最后预测得到的结果也为正; FP(false positive):表示样本的真实类别为负,最后预测得到的结果却为正; FN(false negative):表示样本的真实类别为正,最后预测得到的结果却为负; TN(true negative):表示样本的真实类别为负,最后预测得到的结果也为负.

精确率表示预测为正样本的样本中,正确预测为正样本的概率。

召回率表示正确预测出正样本占实际正样本的概率。

折中了召回率与精确率。

对于评分预测任务,一般都是根据原有的评分数据,利用矩阵分解等方法去拟合原评分,使得优化后的模型可以去预测新的评分,这里就要衡量你预测的评分和实际评分的差异了,指标也很简单,分为RMSE和MSE。 MSE 是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。 RMSE :RMSE是MSE的算术平方根。

AUC 这个值在数学上等价于:模型把关心的那一类样本排在其他样本前面的概率。最大是 1,完美结果,而 0.5 就是随机排列,0 就是完美地全部排错。 这个非常适合用来评价模型的排序效果,很适合作为BPR的评价指标。得到一个推荐模型后,按照它计算的分数,可以把用户想要的物品排在最前面。

具体的计算过程可看我的另一篇 文章

其中Rel表示与用户 u 相关的商品集(测试集), Rec表示推荐给用户的前K个列表,二者的交集除以Rec的集合元素个数(其实就是K),得到Precision@K。一般是算出每个用户的Precision@K,然后取平均值。

其中Rel表示与用户u相关的商品集(测试集),Rec表示推荐给用户的前K个列表,二者的交集除以Rec的集合元素个数(也就是测试集中用户u评过分的商品数),得到Recall@K。一般是算出每个用户的Recall@K,然后取平均值。

MAP(Mean Average Precision):单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。

主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。

MAP 是反映系统在全部相关文档上性能的单值指标。

系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高。如果系统没有返回相关文档,则准确率默认为0。 例如:

假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。

某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;

对于主题2检索出3个相关网页,其rank分别为1,3,5。

对于主题1,平均准确率为(1/1+2/2+3/4+4/7)/4=0.83。对于主题2,平均准确率为(1/1+2/3+3/5+0+0)/5=0.45。

则MAP= (0.83+0.45)/2=0.64。

正确检索结果值在检索结果中的排名来评估检索系统的性能。

其中Q是用户的个数,rank是对于第i个用户,推荐列表中第一个在ground-truth结果中的item所在的排列位置。

举个例子:假如检索三次的结果如下,需要的结果(cat,torus,virus)分别排在3,2,1的话,此系统地MRR为(1/3 + 1/2 + 1)/3 = 11/18

比较复杂,可参考这篇 文章

参考文章:

矩阵的标准型研究及其应用的论文

好写哦!科技论文,专业性这么强,写出来,也是只有专业人员才能明白。首先,序言:把矩阵的乘法原理,加以介绍、解释和说明,这些就是书上现成的东西。接着介绍其应用都有哪些,具体在哪些方面。最后说明本文主要介绍哪些方面的具体应用及事例。进入正文,集中写清楚,你要介绍的应用及事例。字数要多,就多写,写详细一些;字数一般,就写得一般,就可以啦。。。祝成功!

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合[1] ,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。关于矩阵相关理论的发展和应用,请参考矩阵理论。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究。作为解决线性方程的工具,矩阵也有不短的历史。成书最迟在东汉前期的《九章算术》中,用分离系数法表示线性方程组,得到了其增广矩阵。在消元过程中,使用的把某行乘以某一非零实数、从某行中减去另一行等运算技巧,相当于矩阵的初等变换。但那时并没有现今理解的矩阵概念,虽然它与现有的矩阵形式上相同,但在当时只是作为线性方程组的标准表示与处理方式。矩阵正式作为数学中的研究对象出现,则是在行列式的研究发展起来后。逻辑上,矩阵的概念先于行列式,但在实际的历史上则恰好相反。日本数学家关孝和(1683年)与微积分的发现者之一戈特弗里德·威廉·莱布尼茨(1693年)近乎同时地独立建立了行列式论。其后行列式作为解线性方程组的工具逐步发展。1750年,加布里尔·克拉默发现了克莱姆法则[2] 。矩阵的现代概念在19世纪逐渐形成。1800年代,高斯和威廉·若尔当建立了高斯—若尔当消去法。1844年,德国数学家费迪南·艾森斯坦(F.Eisenstein)讨论了“变换”(矩阵)及其乘积。1850年,英国数学家詹姆斯·约瑟夫·西尔维斯特(James Joseph Sylvester)首先使用矩阵一词[3] 。英国数学家凯利被公认为矩阵论的奠基人。他开始将矩阵作为独立的数学对象研究时,许多与矩阵有关的性质已经在行列式的研究中被发现了,这也使得凯利认为矩阵的引进是十分自然的。他说:“我决然不是通过四元数而获得矩阵概念的;它或是直接从行列式的概念而来,或是作为一个表达线性方程组的方便方法而来的。”他从1858年开始,发表了《矩阵论的研究报告》等一系列关于矩阵的专门论文,研究了矩阵的运算律、矩阵的逆以及转置和特征多项式方程。凯利还提出了凯莱-哈密尔顿定理,并验证了3×3矩阵的情况,又说进一步的证明是不必要的。哈密尔顿证明了4×4矩阵的情况,而一般情况下的证明是德国数学家弗罗贝尼乌斯(F.G.Frohenius)于1898年给出的[2] 。1854年时法国数学家埃尔米特(C.Hermite)使用了“正交矩阵”这一术语,但他的正式定义直到1878年才由费罗贝尼乌斯发表。1879年,费罗贝尼乌斯引入矩阵秩的概念。至此,矩阵的体系基本上建立起来了。无限维矩阵的研究始于1884年。庞加莱在两篇不严谨地使用了无限维矩阵和行列式理论的文章后开始了对这一方面的专门研究。1906年,希尔伯特引入无限二次型(相当于无限维矩阵)对积分方程进行研究,极大地促进了无限维矩阵的研究。在此基础上,施密茨、赫林格和特普利茨发展出算子理论,而无限维矩阵成为了研究函数空间算子的有力工具[4] 。

我的毕业论文题目是矩阵的乘法及其应用~个人感觉相当简单~我是数学与应用数学专业

相关百科

热门百科

首页
发表服务