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階矩陣(由未知量前面的常系數所組成的矩陣)且還是非奇異矩陣即可逆矩陣
沒有必要分解為兩個三角形吧
用初等行變換化為一個最簡型階梯形就行了
化為三角形沒必要的