淺層語義分析(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 ...
時間複雜度與空間複雜度的分析
演算法複雜度分為時間複雜度和空間複雜度 對於乙個演算法來說,空間複雜度和時間複雜度往往是相互影響的。當追求乙個較好的時間複雜度時,可能會使空間複雜度的效能變差,即可能導致占用較多的儲存空間 反之,當追求乙個較好的空間複雜度時,可能會使時間複雜度的效能變差,即可能導致占用較長的執行時間。有時我們可以用...