告诉你拟就会写吗。不如我给你写得了
在数学中,矩阵(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
比较复杂,可参考这篇 文章
参考文章:
------------------------------------------------------------------------------------------------------------------------------------------------
对于推荐系统来说存在两大场景即评分预测(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
比较复杂,可参考这篇 文章
参考文章:
百度文库有篇很好的,直接搜“毕业论文分块矩阵的应用”就行了。
好写哦!科技论文,专业性这么强,写出来,也是只有专业人员才能明白。首先,序言:把矩阵的乘法原理,加以介绍、解释和说明,这些就是书上现成的东西。接着介绍其应用都有哪些,具体在哪些方面。最后说明本文主要介绍哪些方面的具体应用及事例。进入正文,集中写清楚,你要介绍的应用及事例。字数要多,就多写,写详细一些;字数一般,就写得一般,就可以啦。。。祝成功!
随机环境中经济增长模型研究广义生产函数假设下的经济增长模型分析考虑市场预期的供求关系模型基于Matlab的离散事件模拟用风险预算进行资产配置有向图上的PAR贯序模拟系统单圈图的一般Randic指标的极值问题模糊数学在公平评奖问题中的应用模糊矩阵在环境评估中的初步应用模糊评判在电脑中的初步应用数学家的数学思想Riemann积分定义的网收敛表述微积分思想在不等式证明中的应用用有限的尺度标量无限的过程-略论极限ε语言在微积分及现代数学中的位置及意义微积分思想在几何问题中的应用齐次平衡法求KdV-Burgers方程的Backlund变换Painleve分析法判定MKdV-Burgers方程的可积性直接法求KdV-Burgers方程的对称及精确解行波求解KdV-Burgers方程因子有向图的矩阵刻划简单图上的lit-only sigma-game半正则图及其线图的特征多项式与谱分数有向图的代数表示WWW网络的拓扑分析作者合作网络等的拓扑分析古诺模型价格歧视用数学软件做计算微分方程的计算器用数学软件做矩阵计算的计算器弹簧-质点系统的反问题用线性代数理论做隐含语义搜索对矩阵若当标准型理论中变换阵求法的探讨对矩阵分解理论的探讨对矩阵不等式理论的探讨(1)对矩阵不等式理论的探讨(2)函数连续性概念及其在现代数学理论中的延伸从有限维空间到无限维空间Banach空间中脉冲泛函微分方程解的存在性高阶脉冲微分方程的振动性具有积分边界条件的分数阶微分方程解的存在唯一性分数阶微分方程的正则摄动一个形态形成模型的摄动解一个免疫系统常微分方程模型的渐近解前列腺肿瘤连续性激素抑制治疗的数学模型前列腺肿瘤间歇性激素抑制治疗的数学模型病毒动力学数学模型肿瘤浸润数学模型耗散热方程初边值问题解的正则性耗散波方程初边值问题解的正则性耗散Schrodinger方程初边值问题解的正则性非线性发展方程解得稳定性消费需求的鲁棒调节生产函数的计量分析企业的成本形态分析的研究分数阶Logistic方程的数值计算分数阶捕食与被捕食模型的数值计算AIDS传播模型的全局性分析HIV感染模型的全局性分析风险度量方法的比较及其应用具有区间值损益的未定权益定价分析模糊规划及其在金融分析中的应用长依赖型金融市场股票价格与长相依性分数布朗运动下的外汇期权定价不确定性与资产定价加油站点的分布与出租车行业的关系
告诉你拟就会写吗。不如我给你写得了
好写哦!科技论文,专业性这么强,写出来,也是只有专业人员才能明白。首先,序言:把矩阵的乘法原理,加以介绍、解释和说明,这些就是书上现成的东西。接着介绍其应用都有哪些,具体在哪些方面。最后说明本文主要介绍哪些方面的具体应用及事例。进入正文,集中写清楚,你要介绍的应用及事例。字数要多,就多写,写详细一些;字数一般,就写得一般,就可以啦。。。祝成功!
还有三个月就是毕业生们答辩的时间了,但是很多毕业生们目前连选题都还没有选好。时间紧迫,我立马为大家精心整理了一些大学数学系本科毕业论文题目,供毕业生们参考! 1、导数在不等式证明中的应用 2、导数在不等式证明中的应用 3、导数在不等式证明中的应用 4、等价无穷小在求函数极限中的应用及推广 5、迪克斯特拉(Dijkstra)算法及其改进 6、第二积分中值定理“中间点”的性态 7、对均值不等式的探讨 8、对数学教学中开放题的探讨 9、对数学教学中开放题使用的几点思考 10、对现行较普遍的彩票发行方案的讨论 11、对一定理证明过程的感想 12、对一类递推数列收敛性的讨论 13、多扇图和多轮图的生成树计数 14、多维背包问题的扰动修复 15、多项式不可约的判别方法及应用 16、多元函数的极值 17、多元函数的极值及其应用 18、多元函数的极值及其应用 19、多元函数的极值问题 20、多元函数极值问题 21、二次曲线方程的化简 22、二元函数的单调性及其应用 23、二元函数的极值存在的判别方法 24、二元函数极限不存在性之研究 25、反对称矩阵与正交矩阵、对角形矩阵的关系 26、反循环矩阵和分块对称反循环矩阵 27、范德蒙行列式的一些应用 28、方阵A的伴随矩阵 29、放缩法及其应用 30、分块矩阵的应用 31、分块矩阵行列式计算的若干方法 32、辅助函数在数学分析中的应用 33、复合函数的可测性 34、概率方法在其他数学问题中的应用 35、概率论的发展简介及其在生活中的若干应用 36、概率论在彩票中的应用 37、概率统计在彩票中的应用 38、概率统计在实际生活中的应用 39、概率在点名机制中的应用 40、高阶等差数列的通项,前n项和公式的探讨及应用 41、给定点集最小覆盖快速近似算法的进一步研究及其应用 42、关联矩阵的一些性质及其应用 43、关于Gauss整数环及其推广 44、关于g-循环矩阵的逆矩阵 45、关于二重极限的若干计算方法 46、关于反函数问题的讨论 47、关于非线性方程问题的求解 48、关于函数一致连续性的几点注记 49、关于矩阵的秩的讨论 _ 50、关于两个特殊不等式的推广及应用 51、关于幂指函数的极限求法 52、关于扫雪问题的数学模型 53、关于实数完备性及其应用 54、关于数列通项公式问题探讨 55、关于椭圆性质及其应用地探究、推广 56、关于线性方程组的迭代法求解 57、关于一类非开非闭的商映射的构造 58、关于一类生态数学模型的几点思考 59、关于圆锥曲线中若干定值问题的求解初探 60、关于置信区间与假设检验的研究 61、关于周期函数的探讨 62、函数的一致连续性及其应用 63、函数定义的发展 64、函数级数在复分析中与在实分析中的关系 65、函数极值的求法 66、函数幂级数的展开和应用 67、函数项级数的收敛判别法的推广和应用 68、函数项级数一致收敛的判别 69、函数最值问题解法的探讨 70、蝴蝶定理的推广及应用 71、化归中的矛盾分析法研究 72、环上矩阵广义逆的若干性质 73、积分中值定理的再讨论 74、积分中值定理正反问题‘中间点’的渐近性 75、基于高中新教材的概率学习 76、基于最优生成树的'海底油气集输管网策略分析 77、级数求和的常用方法与几个特殊级数和 78、级数求和问题的几个转化 79、级数在求极限中的应用 80、极限的求法与技巧 81、极值的分析和运用 82、极值思想在图论中的应用 83、几个广义正定矩阵的内在联系及其区别 84、几个特殊不等式的巧妙证法及其推广应用 85、几个重要不等式的证明及应用 86、几个重要不等式在数学竞赛中的应用 87、几种特殊矩阵的逆矩阵求法
矩阵的秩是反映矩阵固有特性的一个重要概念。计算矩阵的秩的一个有用应用是计算线性方程组解的数目。如果系数矩阵的秩等于增广矩阵的秩,则方程组只要有一个解。在这种情况下,它有精确的一个解,如果它的秩等于方程的数目。如果增广矩阵的秩大于系数矩阵的秩,则通解有 k 个自由参量,这里的 k 是在方程的数目和秩的差。否则方程组是不一致的。在控制论中,矩阵的秩可以用来确定线性系统是否为可控制的,或可观察的。
我的毕业论文题目是矩阵的乘法及其应用~个人感觉相当简单~我是数学与应用数学专业
我的毕业论文题目是矩阵的乘法及其应用~个人感觉相当简单~我是数学与应用数学专业
在线性代数中,一个n×n矩阵A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A的迹(或迹数),一般记作tr(A)。
性质:
设有N阶矩阵A,那么矩阵A的迹(用表示)就等于A的特征值的总和,也即矩阵A的主对角线元素的总和。
1、迹是所有对角元的和。
2、迹是所有特征值的和。
3、某些时候也利用tr(AB)=tr(BA)来求迹。
4、tr(mA+nB)=mtr(A)+ntr(B)。
扩展资料
在数值分析中,由于数值计算误差、测量误差、噪声和病态矩阵的存在,零奇异值通常表现为一个小数值。为了便于讨论和计算,把一个矩阵分解成性质上更简单或更熟悉的矩阵的组合。
由于矩阵的特征值和特征向量在矩阵的对角化中占有特殊的位置,提出了矩阵的特征值分解。虽然矩阵的特征值有很好的性质,但它们并不总是正确地表示矩阵的“大小”。
矩阵的奇异值和奇异值分解是矩阵理论和应用中非常重要的内容。它已成为多变量反馈控制系统最重要和基本的分析工具之一。它表示反馈控制系统的输出/输入增益,能反映控制系统的特性。
参考资料:百度百科-矩阵的迹
求矩阵A的迹主要用两种方法:1.迹是所有对角元的和,就是矩阵A的对角线上所有元素的和2.迹是所有特征值的和,通过求出矩阵A的所有特征值来求出它的迹。
多个矩阵相乘得到的方阵的迹,和将这些矩阵中的最后一个挪到最前面之后相乘的迹是相同的。
将一个矩阵分解为比较简单或者性质比较熟悉的矩阵之组合,方便讨论和计算。由于矩阵的特征值和特征向量在化矩阵为对角形的问题中占有特殊位置, 因此矩阵的特征值分解。
尽管矩阵的特征值具有非常好的性质,但是并不是总能正确地表示矩阵的“大小”。矩阵的奇异值和按奇异值分解是矩阵理论和应用中十分重要的内容。
扩展资料:
矩阵已成为多变量反馈控制系统最重要最基本的分析工具之一,奇异值实际上是复数标量绝对值概念的推广, 表示了反馈控制系统的输出/输入增益,能反映控制系统的特性。
某些时候也利用tr(AB)=tr(BA)来求迹,tr(mA+nB)=m tr(A)+n tr(B)奇异值分解(Singular value decomposition )。