1. 程式人生 > >奇異值分解(SVD)與降維

奇異值分解(SVD)與降維

一、特徵分解

許多數學物件可以通過將它們分解成多個組成部分或者找到它們地 一些屬性來更好的理解。這些屬性是通用的,而不是我們選擇表示它們的方式而產生的。如:我們可以用十進位制或二進位制等方式表示12,但12=2*2*3永遠是對的。

1、特徵分解

特徵分解,即將矩陣分解成一組特徵值和特徵向量。

2、特徵值和特徵向量

假如存在A是一個n*n的矩陣,x是一個n維向量,λ為標量,滿足:Ax=λx,那麼,λ是矩陣A的一個特徵值,而x是矩陣A的特徵值λ對應的特徵向量。

即,方陣A的特徵向量是指與A相乘後相當於對該向量進行縮放的非零向量v,縮放幅度λ為特徵值。

如果求出了矩陣A的n個特徵值

λ1λ2...λn 以及這n個特徵值對應的特徵向量{q1,q2,...qn},那麼矩陣A可以用以下的特徵分解表示:

A=QΣQ1

其中Q是A的特徵向量組成的n維正交矩陣,Σ 是n個特徵值組成的對角矩陣,也可以用以下方式表示:

A=QΣQT

要進行特徵分解,矩陣必須滿足為方陣,如果為非方陣可以使用奇異值分解。

二、奇異值分解

奇異值分解(SVD)與特徵分解類似,是將矩陣分解為奇異向量與奇異值。通過上面可以知道,只有方陣才能進行特徵分解,但是每一個矩陣都有一個奇異值分解。

1、定義

對於奇異值分解,我們將其定義為以下形式,與特徵分解類似:

A=UΣVT

其中A是一個m*n的矩陣,U是一個m*m的矩陣,Σ是一個m*n的矩陣,V是一個n*n的矩陣,注意D不一定是方陣,如下所示:
這裡寫圖片描述
對角矩陣Σ對角線上的元素稱為矩陣A的奇異值,矩陣U的列向量稱為左奇異向量,矩陣V的列向量稱為右奇異向量。

2、推導

對於矩陣A的奇異值分解,可以用與A相關的特徵分解推匯出來,A的左奇異向量是AAT特徵向量,A的右奇異向量是ATA的特徵向量,A的非零奇異值是AATATA特徵值的平方根,推導如下:
這裡寫圖片描述

三、降維

上述關於的特徵分解或奇異值分解的過程,實際上並沒有體現出降維的過程,如果給定一個大小為20000*10000的矩陣,我們會發現通過奇異值分解得到三個矩陣U,

Σ,V大小依次是:20000*20000、20000*10000,、10000*10000,此時,分解出來的三個矩陣合起來更加的大,增大了計算機的儲存空間,那麼,奇異值分解是怎麼體現降維的呢?

1、截斷奇異值分解

事實上,奇異值分解體現在其低秩逼近問題上,在這裡也稱為截斷奇異值分解(Truncated SVD)。
對於奇異值,按照慣例,我們通常降序排列Σ的元素,而奇異值擁有一種特徵,它減少的速度特別快,通常前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上,也就是說我們可以用前面出現的k個奇異值和對應的左右奇異向量來近似的描述矩陣,即:

Am×n=Um×mΣm×nVn×nTUm×kΣk×kVk×nT

在這裡k要比n小得多,如下所示:
這裡寫圖片描述
假設取k=100,大小為20000*10000的矩陣可以分解為大小為20000*100、100*100、10000*100的三個矩陣,這樣便大大的減少了計算的儲存開銷。由於這個性質,SVD才可以用在降維,資料壓縮等等。

2、實戰

from sklearn.decomposition import TruncatedSVD
from sklearn.random_projection import sparse_random_matrix
X = sparse_random_matrix(100, 100, density=0.01, random_state=42)
svd = TruncatedSVD(n_components=min(X.shape)-1, n_iter=7, random_state=42)
svd.fit(X)

total_variance, n_components = 0.0, 0
for variance in svd.explained_variance_ratio_:
    total_variance += variance
    n_components += 1
    if total_variance > 0.9: break

svd = TruncatedSVD(n_components=n_components, n_iter=7, random_state=42)
x = svd.fit_transform(X)

上述程式碼定義了一個100*100的稀疏矩陣X,使用TSVD進行擬合。擬合完成後,通過variance佔比進行維數定義,當佔比超過90%時選取該點,這也就是上面提到的奇異值降維性質。
之後再使用當前選取的維數進行重新擬合,轉化,得到100*42維的矩陣x,完成降維過程。

三、參考

相關推薦

奇異分解SVD

一、特徵分解 許多數學物件可以通過將它們分解成多個組成部分或者找到它們地 一些屬性來更好的理解。這些屬性是通用的,而不是我們選擇表示它們的方式而產生的。如:我們可以用十進位制或二進位制等方式表示12,但12=2*2*3永遠是對的。 1、特徵分解 特

機器學習實戰精讀--------奇異分解SVD

svd 奇異值分解奇異值分解(SVD):是一種強大的降維工具,通過利用SVD來逼近矩陣並從中提取重要特征,通過保留矩陣80%~ 90%的能量,就能得到重要的特征並去掉噪聲SVD分解會降低程序的速度,大型系統中SVD每天運行一次或者頻率更低,並且還要離線進行。隱性語義索引(LST):試圖繞過自然語言理解,用統計

奇異分解SVD原理

  奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。就像是描述一個人一樣,給別人描述說這個人長得濃眉大眼,方臉,絡腮鬍,而且帶個黑框的眼鏡,這樣寥寥的幾個特徵,就讓別人腦海裡面就有一個較為清楚

機器學習筆記——基於奇異分解SVD的影象壓縮PIL

此指令碼的作用是圖片壓縮(清晰度尚可的情況下,可達到8倍以上的壓縮比),是SVD的一個應用實踐,涉及PIL、numpy庫。 (python中處理圖片的庫比較多,比如PIL、OpenCV、matplot

矩陣的奇異分解SVD理論

  矩陣的奇異值分解(Singular Value Decomposition,SVD)是數值計算中的精彩之處,在其它數學領域和機器學習領域得到了廣泛的應用,如矩陣的廣義逆,主分成分析(PCA),自然語言處理(NLP)中的潛在語義索引(Latent Semantic Indexing),推薦演算法等。   鑑

奇異分解SVD和主成分分析PCA

設X是一個n*m的資料矩陣(在此不把它理解成變換),每一列表示一個數據點,每一行表示一維特徵。 對X做主成分分析(PCA)的時候,需要求出各維特徵的協方差,這個協方差矩陣是。 (其實需要先把資料平移使得資料的均值為0,不過在此忽略這些細節) PCA做的事情,是對這個協方差矩陣做對角化: 可以這樣理解上式右邊

矩陣分解奇異分解SVD詳解

SVD分解 SVD分解是淺層語義分析(LSA)的數學基礎,本文是我的LSA學習筆記的一部分,之所以單獨拿出來,是因為SVD可以說是LSA的基礎,要理解LSA必須瞭解SVD,因此將LSA筆記的SVD一節單獨作為一篇文章。本節討論SVD分解相關數學問題,一個分為3個部分,第

Python機器學習筆記:奇異分解SVD演算法

完整程式碼及其資料,請移步小編的GitHub   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/MachineLearningNote   奇異值分解(Singular  Value Decomposition,後面簡稱 SVD)是線上性代數中一種

奇異分解SVD,Singular value decomposition

   5、python程式碼(PCA案例) #-*- coding:utf-8-*- from numpy import * import numpy as np import cv2 import matplotlib.pyplot as plt

奇異分解2

1.前言   第一次接觸奇異值分解還是在本科期間,那個時候要用到點對點的剛體配準,這是查文獻剛好找到了四元數理論用於配準方法(點對點配準可以利用四元數方法,如果點數不一致更建議應用ICP演算法)。一直想找個時間把奇異值分解理清楚、弄明白,直到今天才系統地來進行總結。

奇異分解1

轉載請宣告出處http://blog.csdn.net/zhongkejingwang/article/details/43053513     在網上看到有很多文章介紹SVD的,講的也都不錯,但是感覺還是有需要補充的,特別是關於矩陣和對映之間的對應關係。前段時間看了國外的一

基於奇異分解的影象壓縮除噪

一、本報告所用的一些基本原理 第一,慮噪過程。 巴特沃斯濾波器的特點是通頻帶內的頻率響應曲線最大限度平坦,沒有起伏,而在阻頻帶則逐漸下降為零。在振幅的對數對角頻率的波得圖上,從某一邊界角頻率開始,振幅隨著角頻率的增加而逐步減少,趨向負無窮大。 本程式通過不斷調整通帶截止頻率

人工智慧2- 學習主成成分分析PCA進行

一.為什麼要進行降維?     在進行分類的時候我們需要大量的特徵來提高分類器的準確度,但是分類器的效能隨著隨著維度的增加,逐步上升,達到某點其效能便逐漸下降。    為了避免效能下降的情況,我們要進行降低維度的處理。  &nb

機器學習筆記十三

目錄 1)Motivation 1:Data Compression 2)Motivation 2: Data Visualization 3)Principal Component Analysis problem formulation 4)Principal Compone

Tensorflow學習之Autoencoder圖片的結果展示

微信公眾號 實現功能: 在自編碼器(autoencoder)中有編碼器(encoder)和解碼器(decoder)。我們只看 encoder 壓縮的過程,使用它將一個數據集降維到只有兩個Feature時,將資料放入一個二維座標系內。 思路: 我們只顯示 en

Tensorflow學習之Autoencoder圖片並還原圖片

微信公眾號 實現功能: 用Tensorflow實現Autoencoder,通過對圖片特徵的壓縮並解壓,將結果與原始資料進行對比,觀察處理過後的資料是不是和原始資料很相像。(這裡會用到MNIST資料)  實現程式碼: import tensorflow as tf

【機器學習】人像識別——PCA

  降維沒有什麼祕訣。我用了python裡sklearn.decomposition模組的IncrementalPCA。   程式碼如下: X = np.array(dots) # do

機器學習實戰Machine Learning in Action學習筆記————10.奇異分解(SVD)原理、基於協同過濾的推薦引擎、資料

關鍵字:SVD、奇異值分解、降維、基於協同過濾的推薦引擎作者:米倉山下時間:2018-11-3機器學習實戰(Machine Learning in Action,@author: Peter Harrington)原始碼下載地址:https://www.manning.com/books/machine-le

機器學習實戰Machine Learning in Action學習筆記————10.奇異分解(SVD)原理、基於協同過濾的推薦引擎、數據

www 實現 由於 就是 計算 學習筆記 圖片 blob 標示 關鍵字:SVD、奇異值分解、降維、基於協同過濾的推薦引擎作者:米倉山下時間:2018-11-3機器學習實戰(Machine Learning in Action,@author: Peter Harringto

機器學習演算法SVD奇異分解

一、SVD奇異值分解的定義     假設是一個的矩陣,如果存在一個分解: 其中為的酉矩陣,為的半正定對角矩陣,為的共軛轉置矩陣,且為的酉矩陣。這樣的分解稱為的奇異值分解,對角線上的元素稱為奇異值,稱