NMF與LSA時間複雜度分析

2021-08-20 06:08:22 字數 1733 閱讀 4748

淺層語義分析(lsa)通過「向量語義空間」來提取文件與詞中的「概念」,進而分析文件與詞之間的關係。

lsa的基本假設是,如果兩個詞多次出現在同一文件中,則這兩個詞在語義上具有相似性。

lsa使用大量的文字上構建乙個矩陣,這個矩陣的一行代表乙個詞,一列代表乙個文件,矩陣元素代表該詞在該文件中出現的次數,

然後再此矩陣上使用奇異值分解(svd)來保留列資訊的情況下減少矩陣行數,

之後每兩個詞語的相似性則可以通過其行向量的cos值(或者歸一化之後使用向量點乘)來進行標示,此值越接近於

1則說明兩個詞語越相似,越接近於

0則說明越不相似。

如圖所示,奇異值分解,就是把上面這樣乙個大矩陣,分解成三個小矩陣相乘。三個矩陣有非常清晰的物理含義。第乙個矩陣x是對詞進行分類的乙個結果。它的每一行表示乙個詞,每一列表示乙個語義相近的詞類,或者簡稱為語義類。這一行的每個非零元素表示這個詞在每個語義類中的重要性,數值越大越相關。如下所示:

非負矩陣分解(non-negative matrix factor),簡稱

nmf,是由

lee和

seung

於1999

年在自然雜誌上提出的一種矩陣分解方法,它使分解後的所有分量均為非負值(要求純加性的描述

),並且同時實現非線性的

維數

約減。

nmf的思想:

v=wh(w

權重矩陣、

h特徵矩陣、

v原矩陣),通過計算從原矩陣提取權重和特徵兩個不同的矩陣出來。屬於乙個無監督學習的演算法,其中限制條件就是w和

h中的所有元素都要大於0。

實驗執行環境:win10,

matlab r2017b

,16g

記憶體,intel core i7-6700hq[email protected]

實驗資料設定:

實驗隨機生成1000×1000的矩陣

m,分別進行

nmf與

lsa運算。

實驗程式見筆者部落格上傳資源部分中的test_lsa.m與test_nnmf.m檔案附件**。

1、lsa時間複雜度

lsa演算法的核心在於奇異值分解,而奇異值分解一般分兩步進行。首先,將矩陣a變換成乙個雙對角矩陣,這個過程的計算量為o(mn2)。第二步是將雙對角矩陣變成奇異值分解的三個矩陣,這一步的計算量可以忽略不計。所以,綜上所述,對於乙個 m×n 矩陣,用lsa降維至m×r,進行svd的時間複雜度是o(mn2), 並且,對乙個較大的稀疏矩陣,lsa降維的計算複雜度可降至: o(cmn),其中,c2、nmf時間複雜度

nmf演算法的時間效率取決於迭代的次數, 變化幅度也較大。

複雜度分析 時間複雜度 空間複雜度

執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...

複雜度分析 時間複雜度分析和空間複雜度分析

其實,只要講到資料結構與演算法,就一定離不開時間 空間複雜度分析。而且我個人認為,複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。1.時間複雜度分析 對於剛才羅列的複雜度量級,我們可以粗略地分為兩類,多項式量級和非多項式量級。其中,非多項式量級只有兩個 o ...

時間複雜度與空間複雜度的分析

演算法複雜度分為時間複雜度和空間複雜度 對於乙個演算法來說,空間複雜度和時間複雜度往往是相互影響的。當追求乙個較好的時間複雜度時,可能會使空間複雜度的效能變差,即可能導致占用較多的儲存空間 反之,當追求乙個較好的空間複雜度時,可能會使時間複雜度的效能變差,即可能導致占用較長的執行時間。有時我們可以用...