A. 怎么样在真实推荐系统中应用矩阵分解算法
里面有自带的LU分解函数,你可在帮助文档搜索 LU 给你一个我自己写的LU分解函数 function [myl,myu,x]=MYLU(A,b) %依据《现代电力系统分析》编制的LU分解程序。 %matlab自带的lu函数与书上所讲略有不同,不方便参照课本步骤进行后续计算。 %A为待分解的矩阵,myl为分解后下三角矩阵,myu为分解后的上三角矩阵,未考虑单独的对角阵D %clc %A=[5,0,0,5,1;2,1,1,0,0;0,1,2,0,10;1,0,5,1,0;1,1,0,3,10] %两组测试用矩阵方程 %b=[1,3,3,4,1]'; %M=[1,2,1,1;2,1,0,0;1,0,1,0;1,0,0,1] %b=[-1,1,2,0]' %A=[2,3,1;3,7,-1;5,-4,2] %b=[12,13,5]' n=length(A); myl=speye(n); %可以先不分配内存,由系统自动分配内存 myu=speye(n); %==============LU分解================ for i=1:n for j=1:n if (i<j) x=0; for k=1:i-1 x=x+myl(i,k)*myu(k,j); end myu(i,j)=(A(i,j)-x)/myl(i,i); end if(i>=j) x=0; for k=1:j-1 x=x+myl(i,k)*myu(k,j); end myl(i,j)=A(i,j)-x; end end end %B=myl*myu %测试LU分解矩阵,B=A表明结果正确 %===============解方程Ax=b================ y=(zeros(1,n))'; x=(zeros(1,n))'; y(1)=b(1)/myl(1,1);%解Ly=b for i=2:n p=0; for k=1:i-1 p=p+myl(i,k)*y(k); end y(i)=(b(i)-p)/myl(i,i); end %C=(myl*y) %测试Ly=b,如果相等表明结果正确 x(n)=y(n); for i=1:n-1 p=0; for k=n-i+1:n p=p+myu(n-i,k)*x(k); end x(n-i)=y(n-i)-p; end %D=myl*myu*x 里面注释部分可以删除
B. 推荐系统 矩阵分解的rmse怎么算
Excel 用Stdev计算均方根误差RMSE和用公式(见附图)计算的结果是一样的。 公式计算需注意根号中的分母是n-1而不是n. {1,2,3,4,5}的RMSE用Excel的Stdev计算结果与公式计算结果都是1.581139
C. 概率矩阵分解 时间复杂度 和 空间复杂度分析
首先要明确,一般计算复杂度是针对算法的,而不是针对问题本身,对于问题本身的分析要复杂得多,远远超出你目前的知识范围。一般稠密矩阵计算的各种算法复杂度都是O(n^3),这个需要对每个算法都进行分析,我只是把各种结论归结起来告诉你。对于具体的算法而言,这个是数出来了,不需要很特别的技巧(某些含log的需要解递归,但这里一般不用),比如说m*k的矩阵和k*n的矩阵相乘,最平凡的算法的计算次数是2mnk,就是从下面的循环里数出来的 for i=1:m for j=1:n for r=1:k c(i,j)=c(i,j)+a(i,r)*b(r,j) endfor endfor endfor 至于LU分解和Cholesky分解的计算次数分别是2/3*n^3和1/3*n^3,也是直接从循环里数出来的,不需要什么技巧。特征值的QR算法本质是迭代法,由于大致知道一般来讲总是很快进入局部的二次收敛,平均一个特征值需要2步(这个统计数据只适合于古典的Francis QR),才能估计出具体的系数。你最好是找一本矩阵计算的书自己先学一遍,不然我再多罗嗦也没用。
D. 矩阵分解算法隐含因子越多越好么
题主问的应该是latent factor的数量吧
简单的答案就是 不是
如果latent factor的数量过多 就会导致过度fit输入的矩阵
同时latent factor的数量过多 会导致计算跟存储的复杂度过大
E. 矩阵分解的乔里斯基法是什么最好有矩阵分解的乔里斯
平方根法又叫Cholesky分解法,是求解对称正定线性方程组最常用的方法之一.大家已经知道,对于一般方阵,为了消除LU分解的局限性和误差的过
F. 最小二乘法为什么要矩阵分解
简单一点讲就是为了算起来方便
最小二乘法最终还是要把解求出来,求解总得有一套方法吧,光说“解存在唯一”不顶用
G. 矩阵分解的奇异值分解法
奇异值分解 (singular value decomposition,SVD) 是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的计算时间。[U,S,V]=svd(A),其中U和V分别代表两个正交矩阵,而S代表一对角矩阵。 和QR分解法相同, 原矩阵A不必为正方矩阵。使用SVD分解法的用途是解最小平方误差法和数据压缩。
MATLAB以svd函数来执行svd分解法, 其语法为[S,V,D]=svd(A)。
H. 正定矩阵因子分解法(PMF)
3.2.4.1 方法建立
就全国范围而言,我国地下水质量总体较好,根据国家《地下水质量标准》(GB/T 14848—93),我国63%的地区地下水可直接饮用,17%经适当处理后可供饮用,12%不宜饮用,剩余8%为天然的咸水和盐水,由此可见,不宜饮用的地下水和天然咸水、盐水占到了20%,对于这些地下水型水源地饮用水指标并不一定受到污染而存在超标现象,其水质可能受到地下水形成演化影响更为明显,因此,考虑选择反映地下水形成、演化的地下水水化学类型常规指标,进行影响因素解析。地下水水质指标在取样与分析过程中,由于取样和样品处理、试剂和水纯度、仪器量度和仪器洁净、采用的分析方法、测定过程以及数据处理等过程均会产生测量误差(系统误差,随机误差,过失误差)。从取样到分析结果计算误差都绝对存在,虽然在各个过程中进行质量控制,但无法完全消除不确定性的影响,为确保分析结果的可靠性,采用PMF法对地下水水质指标考虑一定的不确定性误差,使分析数据能够准确地反映实际情况。
PMF(Positive Matrix Factorization)与主成分分析(PCA)、因子分析(FA)都是利用矩阵分解来解决实际问题的分析方法,在这些方法中,原始的大矩阵被近似分解为低秩的V=WH形式。但PMF与PCA和FA不同,PCA、FA方法中因子W和H中的元素可为正或负,即使输入的初始矩阵元素全是正的,传统的秩削减算法也不能保证原始数据的非负性。在数学上,从计算的观点看,分解结果中存在负值是正确的,但负值元素在实际问题中往往是没有意义的。PMF是在矩阵中所有元素均为非负数约束条件之下的矩阵分解方法,在求解过程中对因子载荷和因子得分均做非负约束,避免矩阵分解的结果中出现负值,使得因子载荷和因子得分具有可解释性和明确的物理意义。PMF使用最小二乘方法进行迭代运算,能够同时确定污染源谱和贡献,不需要转换就可以直接与原始数据矩阵作比较,分解矩阵中元素非负,使得分析的结果明确而易于解释,可以利用不确定性对数据质量进行优化,是美国国家环保局(EPA)推荐的源解析工具。
3.2.4.2 技术原理
PMF:模型是一种基于因子分析的方法,具有不需要测量源指纹谱、分解矩阵中元素非负、可以利用数据标准偏差来进行优化等优点。目前PMF模型此方法成功用于大气气溶胶、土壤和沉积物中持久性有毒物质的源解析,已有成熟的应用模型 PMF1.1,PMF2.0,PMF3.0等。PMF模型基本方程为:
Xnm=GnpFpm+E (3.7)
式中:n——取样点数;
m——各取样点测试的成分数量;
p——污染源个数;
Xnm——取样点各成分含量;
Gnp——主要源的贡献率;
Fpm——源指纹图谱。
基本计算过程如下:
1)样品数据无量纲化,无量纲化后的样品数据矩阵用D表示。
2)协方差矩阵求解,为计算特征值和特征向量,可先求得样品数据的协方差矩阵,用D′为D的转置,算法为:
Z=DD′ (3.8)
3)特征值及特征向量求解,用雅各布方法可求得协方差矩阵Z的特征值矩阵E和特征向量矩阵Q,Q′表示Q的转置。这时,协方差矩阵可表示为:
Z=QEQ′ (3.9)
4)主要污染源数求解,为使高维变量空间降维后能尽可能保留原来指标信息,利用累计方差贡献率提取显着性因子,判断条件为:
地下水型饮用水水源地保护与管理:以吴忠市金积水源地为例
式中:n——显着性因子个数;
m——污染物个数;
λ——特征值。
5)因子载荷矩阵求解,提取显着性因子后,利用求解得到的特征值矩阵E和特征向量矩阵Q进一步求得因子载荷矩阵S和因子得分矩阵C,这时,因子载荷矩阵可表示为:
S=QE1/2 (3.11)
因子得分矩阵可表示为:
C=(S′S)-1S′D (3.12)
6)非负约束旋转,由步骤5求得的因子载荷矩阵S和因子得分矩阵C分别对应主要污染源指纹图谱和主要污染源贡献,为解决其值可能为负的现象,需要做非负约束的旋转。
7)首先利用转换矩阵T1对步骤5求得的因子载荷矩阵S和因子得分矩阵C按下式进行旋转:
地下水型饮用水水源地保护与管理:以吴忠市金积水源地为例
C1=T1C (3.14)
式中:S1——旋转后的因子载荷矩阵;
C1——旋转后的因子得分矩阵;
T1——转换矩阵,且T1=(C∗C′)(C∗C′)-1(其中:C∗为把C中的负值替换为零后的因子得分矩阵)。
8)利用步骤7中旋转得到的因子载荷矩阵S1构建转换矩阵T2对步骤5中旋转得到的因子载荷矩阵S1和因子得分矩阵C1继续旋转:
S2=S1T2 (3.15)
地下水型饮用水水源地保护与管理:以吴忠市金积水源地为例
式中:S2——二次旋转后的因子载荷矩阵;
C2——二次旋转后的因子得分矩阵;
T2——二次转换矩阵,且T2=(S′1+S1)-1(S′1+
9):重复步骤7、8,直到因子载荷中负值的平方和小于某一设定的误差精度e而终止,最终得到符合要求的因子载荷矩阵S,即主要污染源指纹图谱。
3.2.4.3 方法流程
针对受体采样数据直接进行矩阵分解,得到各污染源组分及其贡献率的统计方法(图3.5)。
图3.5 方法流程图
(1)缺失值处理
正定矩阵因子分析是基于多元统计的分析方法,对数据有效性具有一定的要求,因此在进行分析之前首先对数据进行预处理。根据已有数据的特征结合实际情况主要有以下5种处理方法。
1)采样数据量充足的情况下直接丢弃含缺失数据的记录。
2)存在部分缺失值情况下用全局变量或属性的平均值来代替所有缺失数据。把全局变量或是平均值看作属性的一个新值。
3)先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。
4)采用预测模型来预测每一个缺失数据。用已有数据作为训练样本来建立预测模型,如神经网络模型预测缺失数据。该方法最大限度地利用已知的相关数据,是比较流行的缺失数据处理技术。
5)对低于数据检测限的数据可用数据检测限值或1/2检测限以及更小比例检测限值代替。
(2)不确定性处理
计算数据不确定性。
地下水型饮用水水源地保护与管理:以吴忠市金积水源地为例
式中:s——误差百分数;
c——指标浓度值;
l——因子数据检出限。
(3)数据合理性分析
本研究所用数据在放入模型前以信噪比S/N(Signal to Noise)作为标准进行筛选,信噪比S/N为:
地下水型饮用水水源地保护与管理:以吴忠市金积水源地为例
式中:xij——第i采样点第j个样品的浓度;
sij——第i采样点第j个样品的标准偏差。
信噪比小,说明样品的噪声大,信噪比越大则表示样品检出的可能性越大,越适合模型。
(4)数据输入及因子分析
与其他因子分析方法一样,PMF不能直接确定因子数目。确定因子数目的一般方法是尝试多次运行软件,根据分析结果和误差,Q值以及改变因子数目时Q值的相对变化等来确定合理的因子数目。
3.2.4.4 适用范围
PMF对污染源和贡献施加了非负限制,并考虑了原始数据的不确定性,对数据偏差进行了校正,使结果更具有科学的解释。PMF使用最小二乘方法,得到的污染源不需要转换就可以直接与原始数据矩阵作比较,PMF方法能够同时确定污染源和贡献,而不需要事先知道源成分谱。适用于水文地质条件简单,观测数据量较大,污染源和污染种类相对较少的地区,运用简便,可应用分析软件进行计算。
3.2.4.5 NMF 源解析
NMF在实现上较PMF算法简单易行,非负矩阵分解根据目的的不同大致可以分为两种:一是在保证数据某些性质的基础上,将高维空间的样本点映射到某个低维空间上,除去一些不重要的细节,获得原数据的本质信息;二是在从复杂混乱的系统中得到混合前的独立信息的种类和强度。因此,基于非负矩阵分解过程应用领域的不同,分解过程所受的约束和需要保留的性质都不相同。本书尝试性地将NMF算法应用于水质影响因素的分离计算中(表3.2)。
表3.2 RMF矩阵分解权值表
依照非负矩阵分解理论的数学模型,寻找到一个分解过程V≈WH,使WH和V无限逼近,即尽可能缩小二者的误差。在确保逼近的效果,定义一个相应的衡量标准,这个衡量标准就叫作目标函数。目标函数一般采用欧氏距离和散度偏差来表示。在迭代过程中,采用不同的方法对矩阵W和H进行初始化,得到的结果也会不同,算法的性能主要取决于如何对矩阵W和H进行初始化。传统的非负矩阵算法在对矩阵W和H赋初值时采用随机方法,这样做虽然简单并且容易实现,但实验的可重复性以及算法的收敛速度是无法用随机初始化的方法来控制的,所以这种方法并不理想。许多学者提出改进W和H的初始化方法,并发展出专用性比较强的形式众多的矩阵分解算法,主要有以下几种:局部非负矩阵分解(Local Non-negative Matrix Factorization,LNMF)、加权非负矩阵分解(Weighted Non-negative Matrix Factorization,WNMF)、Fisher非负矩阵分解(Fisher Non-negative Matrix Factorization,FNMF)、稀疏非负矩阵分解(Sparse Non-negative Matrix Factorization,SNMF)、受限非负矩阵分解(Constrained Non-negative Matrix Factorization,CNMF)、非平滑非负矩阵分解(Non-smooth Non-negative Matrix Factorization,NSNMF)、稀疏受限非负矩阵分解(Nonnegative Matrix Factorization with Sparseness Constraints,NMF-SC)等理论方法,这些方法针对某一具体应用领域对NMF算法进行了改进。
本书尝试应用MATLAB工具箱中NNMF程序与改进的稀疏非负矩阵分解(SNMF)对研究区11项指标(同PMF数据)进行分解,得到各元素在综合成分中的得分H,初始W0,H0采用随机法取初值。r为分解的基向量个数,合适的r取值主要根据试算法确定,改变r值观察误差值变化情况,本书利用SMNF算法计算时,r分别取2,3,4,采用均方误差对迭代结果效果进行评价,结果显示当r取2,4时误差值为0.034,取3时误差值为0.016,因此r=3是较合理的基向量个数。采用NNMF算法进行计算时,利用MATLAB工具箱提供的两种计算法分别进行计算,乘性法则(Multiplicative Update Algorithm)计算结果误差项比最小二乘法(Alternating Least-squares Algorithm)计算误差值小且稳定,但总体NNMF计算误差较大,改变初始W0,H0取值和增加迭代次数误差均未明显减小,调整r取值,随着r值的增大误差逐渐减小。
对比SNMF和NNMF算法所得权值结果,两种方法所得权值趋势一致,但得分值有所不同,由于SNMF算法对矩阵进行了稀疏性约束,计算结果中较小的权值更趋近于0,两次结果中在三个基向量上总体权值较大的元素项为T-Hard、
I. 矩阵分解的QR分解法
QR分解法是将矩阵分解成一个正规正交矩阵与上三角形矩阵,所以称为QR分解法,与此正规正交矩阵的通用符号Q有关。
MATLAB以qr函数来执行QR分解法, 其语法为[Q,R]=qr(A)。
J. 刚接触矩阵,想问一个有关矩阵分解的问题
克劳特(Crout)分解及Doolittle分解这两种算法一般都是用来解线性方程组的
不过只能用于n阶矩阵(由未知量前面的常系数所组成的矩阵)且还是非奇异矩阵即可逆矩阵
没有必要分解为两个三角形吧
用初等行变换化为一个最简型阶梯形就行了
化为三角形没必要的