降維算法: 奇異值分解SVD

冷凍工廠 發佈 2024-03-30T06:03:57.816583+00:00

總所周知,在低維下,數據更容易處理,但是在通常情況下我們的數據並不是如此,往往會有很多的特徵,進而就會出現很多問題:多餘的特徵會影響或誤導學習器。

動動發財的小手,點個讚吧!

1. 為什麼降維

總所周知,在低維下,數據更容易處理,但是在通常情況下我們的數據並不是如此,往往會有很多的特徵,進而就會出現很多問題:

  1. 多餘的特徵會影響或誤導學習器
  2. 更多特徵意味著更多參數需要調整,過擬合風險也越大
  3. 數據的維度可能只是虛高,真實維度可能比較小
  4. 維度越少意味著訓練越快,更多東西可以嘗試,能夠得到更好的結果
  5. 如果我們想要可視化數據,就必須限制在兩個或三個維度上

因此,我們需要通過降維(dimensionality reduction)把無關或冗餘的特徵刪掉。

  • 現有降維方法:

2. SVD 概述

奇異值分解(Singular Value Decomposition)簡稱SVD,主要作用是簡化數據,提取信息。

利用SVD實現,我們能夠用小得多的數據集來表示原始數據集。這樣做,實際上是去除了噪聲和冗餘信 息。當我們試圖節省空間時,去除噪聲和冗餘信息就是很崇高的目標了,但是在這裡我們則是從數據中 抽取信息。基於這個視角,我們就可以把SVD看成是從有噪聲數據中抽取相關特徵

  • SVD是如何從這些充滿著大量噪聲的數據中抽取相關特徵呢?

SVD的公式:

這個公式中, U 和 V 都是正交矩陣,即:

原始數據集A是一個m行n列的矩陣,它被分解成了三個矩陣,分別是:

這個公式用到的就是矩陣分解技術。在線性代數中還有很多矩陣分解技術。矩陣分解可以將原始矩陣 表示成新的易於處理的形式,這種新形式是兩個或多個矩陣的乘積。

不同的矩陣分解技術具有不同的性質,其中有些更適合於某個應用,有些則更適合於其他應用。最常 見的一種矩陣分解技術就是SVD。

  • Example
  • Example

3. SVD 的應用

3.1. 信息檢索

最早的SVD應用之一就是信息檢索。利用SVD方法為隱形語義索引(Latent Semantic Indexing,LSI)或者隱形語義分析(Latent Semantic Analysis,LSA)。

在LSI中,一個矩陣是由文檔和詞語組成的。當我們在該矩陣上應用SVD時,就會構建出多個奇異值。這些奇異值代表了文檔中的概念或主題,這一特點可以用於更高效的文檔搜索。在詞語拼寫錯誤時,只基於詞語存在與否的簡單搜索方法會遇到問題。簡單搜索的另一個問題就是同義詞的使用。這就是說,當我們查找一個詞時,其同義詞所在的文檔可能並不會匹配上。如果我們從上千篇相似的文檔中抽取出概念,那麼同義詞就會映射為同一概念。 這樣就可以大大提高文檔搜索的效率。

3.2. 推薦系統

SVD的另外一個應用就是推薦系統。也是目前SVD最主要的一個應用簡單版本的推薦系統能夠計算項或者人之間的相似度。更先進的方法則先利用SVD從數據中構建一個主題空間,然後再在該空間下計算其相似度。

關鍵字: