国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

奇異值分解(SVD)和np.linalg.svd()函數(shù)用法

這篇具有很好參考價(jià)值的文章主要介紹了奇異值分解(SVD)和np.linalg.svd()函數(shù)用法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、簡(jiǎn)介

????????奇異值分解是一種十分重要但又難以理解的矩陣處理技術(shù),在機(jī)器學(xué)習(xí)中是最重要的分解沒有之一的存在。那么,奇異值分解到底是在干什么呢?

????????矩陣?A?表示的是高維數(shù)據(jù),通常情況下高維數(shù)據(jù)分布并不是雨露均沾的,而往往是厚此薄彼,集中分布在某些維度上,如下圖

奇異值分解(SVD)和np.linalg.svd()函數(shù)用法

????????雖然原始數(shù)據(jù)的的確確是二維數(shù)據(jù),但是其實(shí)主要集中分布在直線?L?(一維空間)附近,在這里,SVD(奇異值分解)其實(shí)就是在尋找直線?L?,然后將數(shù)據(jù)映射到直線?L?上,實(shí)現(xiàn)數(shù)據(jù)降維的過程,即如下圖

奇異值分解(SVD)和np.linalg.svd()函數(shù)用法

????????于是,通過SVD(奇異值分解),就可以利用降維后的數(shù)據(jù)近似地替代原始數(shù)據(jù)。所以,SVD(奇異值分解)其實(shí)就是在尋找數(shù)據(jù)分布的主要維度,將原始的高維數(shù)據(jù)映射到低維子空間中實(shí)現(xiàn)數(shù)據(jù)降維。

二、概念

????????奇異值分解(singular Value Decomposition),簡(jiǎn)稱SVD,線性代數(shù)中矩陣分解的方法。假如有一個(gè)矩陣A,對(duì)它進(jìn)行奇異值分解,可以得到三個(gè)矩陣:

????????矩陣除了對(duì)角元素不為0,其他元素都為0,并且對(duì)角元素是從大到小排列的,前面的元素比較大,后面的很多元素接近0。這些對(duì)角元素就是奇異值。

????????中有n個(gè)奇異值,但是由于排在后面的很多接近0,所以我們可以僅保留比較大的r個(gè)奇異值:

????????實(shí)際應(yīng)用中,我們僅需保留著三個(gè)比較小的矩陣,就能表示A,不僅節(jié)省存儲(chǔ)量,在計(jì)算的時(shí)候更是減少了計(jì)算量。SVD在信息檢索(隱性語義索引)、圖像壓縮、推薦系統(tǒng)、金融等領(lǐng)域都有應(yīng)用。

????????SVD一個(gè)重要的應(yīng)用就是圖像壓縮存儲(chǔ),因?yàn)閿?shù)字圖像本身就是個(gè)矩陣,通過一個(gè)近似的低秩矩陣替代原矩陣,可以大大減少存儲(chǔ)量。SVD還有很多用途,比如機(jī)器學(xué)習(xí)中的主成分分析,這才是直接利用低維矩陣?M?替代原矩陣?A?實(shí)現(xiàn)降維。

三、np.linalg.svd(a,full_matrices=1,compute_uv=1)用法描述

參數(shù):
a是一個(gè)形如(M,N)矩陣

full_matrices的取值是為0或者1,默認(rèn)值為1,這時(shí)u的大小為(M,M),v的大小為(N,N) 。否則u的大小為(M,K),v的大小為(K,N) ,K=min(M,N)。

compute_uv的取值是為0或者1,默認(rèn)值為1,表示計(jì)算u,s,v。為0的時(shí)候只計(jì)算s。

返回值:

總共有三個(gè)返回值u,s,v
u大小為(M,M),s大小為(M,N),v大小為(N,N)。

A = u*s*v

????????其中s是對(duì)矩陣a的奇異值分解。s除了對(duì)角元素不為0,其他元素都為0,并且對(duì)角元素從大到小排列。s中有n個(gè)奇異值,一般排在后面的比較接近0,所以僅保留比較大的r個(gè)奇異值。?

例子:

>>> from numpy import *
>>> data = mat([[1,2,3],[4,5,6]])
>>> U,sigma,VT = np.linalg.svd(data)
>>> print U
[[-0.3863177 ?-0.92236578]
?[-0.92236578 ?0.3863177 ]]
>>> print sigma
[9.508032 ? 0.77286964]
>>> print VT
[[-0.42866713 -0.56630692 -0.7039467 ]
?[ 0.80596391 ?0.11238241 -0.58119908]
?[ 0.40824829 -0.81649658 ?0.40824829]]

????????因?yàn)閟igma是除了對(duì)角元素不為0,其他元素都為0。所以返回的時(shí)候,作為一維矩陣返回。本來sigma應(yīng)該是由3個(gè)值的,但是因?yàn)樽詈笠粋€(gè)值為0,所以直接省略了。?

四、例子

>>> a = np.random.randn(9, 6) + 1j*np.random.randn(9, 6)
>>> b = np.random.randn(2, 7, 8, 3) + 1j*np.random.randn(2, 7, 8, 3)

基于全 SVD 的重構(gòu),2D 案例:

>>> u, s, vh = np.linalg.svd(a, full_matrices=True)
>>> u.shape, s.shape, vh.shape
((9, 9), (6,), (6, 6))
# numpy的allclose方法,比較兩個(gè)array是不是每一元素都相等,默認(rèn)在1e-05的誤差范圍內(nèi)
>>> np.allclose(a, np.dot(u[:, :6] * s, vh))
True

>>> smat = np.zeros((9, 6), dtype=complex)
>>> smat[:6, :6] = np.diag(s)
>>> np.allclose(a, np.dot(u, np.dot(smat, vh)))
True

基于簡(jiǎn)化 SVD 的重建,2D 案例:

>>> u, s, vh = np.linalg.svd(a, full_matrices=False)
>>> u.shape, s.shape, vh.shape
((9, 6), (6,), (6, 6))
>>> np.allclose(a, np.dot(u * s, vh))
True
>>> smat = np.diag(s)
>>> np.allclose(a, np.dot(u, np.dot(smat, vh)))
True

基于全SVD、4D案例的重構(gòu):

>>> u, s, vh = np.linalg.svd(b, full_matrices=True)
>>> u.shape, s.shape, vh.shape
((2, 7, 8, 8), (2, 7, 3), (2, 7, 3, 3))
>>> np.allclose(b, np.matmul(u[..., :3] * s[..., None, :], vh))
True
>>> np.allclose(b, np.matmul(u[..., :3], s[..., None] * vh))
True

基于簡(jiǎn)化 SVD 的重建,4D 案例:

>>> u, s, vh = np.linalg.svd(b, full_matrices=False)
>>> u.shape, s.shape, vh.shape
((2, 7, 8, 3), (2, 7, 3), (2, 7, 3, 3))
>>> np.allclose(b, np.matmul(u * s[..., None, :], vh))
True
>>> np.allclose(b, np.matmul(u, s[..., None] * vh))
True

參考文獻(xiàn):

SVD(奇異值分解)到底在干什么 - 知乎

這次終于徹底理解了奇異值分解(SVD)原理及應(yīng)用

數(shù)據(jù)科學(xué)中需要知道的5個(gè)關(guān)于奇異值分解(SVD)的應(yīng)用

奇異值分解的物理意義_SilenceHell的博客-CSDN博客_奇異值分解的意義

奇異值分解的揭秘(一):矩陣的奇異值分解過程 - 知乎文章來源地址http://www.zghlxwxcb.cn/news/detail-400953.html

到了這里,關(guān)于奇異值分解(SVD)和np.linalg.svd()函數(shù)用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 奇異值分解SVD(singular value decomposition)

    奇異值分解SVD(singular value decomposition)

    SVD是一個(gè)很有用的矩陣因子化方法。 SVD提出的目的:任何一個(gè) m × n mtimes n m × n 的矩陣都可以當(dāng)作一個(gè)超橢圓(高維空間的橢圓),可以把它們當(dāng)作單位球體S的像。 一個(gè)超橢圓可以通過將單位球型在正交方向 u 1 , u 2 , . . . , u m mathbf{u_1},mathbf{u_2},...,mathbf{u_m} u 1 ? , u 2 ?

    2024年02月03日
    瀏覽(28)
  • SVD,奇異值分解的計(jì)算步驟以及實(shí)例講解

    SVD,奇異值分解的計(jì)算步驟以及實(shí)例講解

    ? ? ? ?奇異值分解 (singular value decomposition,SVD),已經(jīng)成為矩陣計(jì)算中最有用和最有效的工具之一,并且在最小二乘問題、最優(yōu)化、統(tǒng)計(jì)分析、信號(hào)與圖像處理、系統(tǒng)理論與控制等領(lǐng)域得到廣泛應(yīng)用。 ? ? ? ? 首先我們都知道方陣是可以特征值分解的,那么問題來了,如果矩

    2024年02月04日
    瀏覽(23)
  • 機(jī)器學(xué)習(xí)實(shí)戰(zhàn):Python基于SVD奇異值分解進(jìn)行矩陣分解(八)

    機(jī)器學(xué)習(xí)實(shí)戰(zhàn):Python基于SVD奇異值分解進(jìn)行矩陣分解(八)

    1.1 奇異值分解 奇異值分解( Singular Value Decomposition,SVD )是一種重要的矩陣分解技術(shù),它可以將一個(gè)矩陣分解為三個(gè)矩陣的乘積,分別為左奇異矩陣、奇異值矩陣和右奇異矩陣。SVD 的原理可以描述如下: 對(duì)于任意 m × n m times n m × n 的矩陣 A A A ,它的 SVD 分解為: A = U $

    2024年02月02日
    瀏覽(26)
  • 矩陣篇(五)-- 特征值分解(EVD)和奇異值分解(SVD)

    矩陣篇(五)-- 特征值分解(EVD)和奇異值分解(SVD)

    ????????設(shè) A n × n A_{n times n} A n × n ? 有 n n n 個(gè)線性無關(guān)的特征向量 x 1 , … , x n boldsymbol{x}_{1}, ldots, boldsymbol{x}_{n} x 1 ? , … , x n ? ,對(duì)應(yīng)特征值分別為 λ 1 , … , λ n lambda_{1}, ldots, lambda_{n} λ 1 ? , … , λ n ? A [ x 1 ? x n ] = [ λ 1 x 1 ? λ n x n ] Aleft[begin{array}{lll

    2024年02月08日
    瀏覽(14)
  • 【線性代數(shù)/機(jī)器學(xué)習(xí)】矩陣的奇異值與奇異值分解(SVD)

    我們知道,對(duì)于一個(gè) n × n ntimes n n × n 的矩陣 A A A ,如果 A A A 有 n n n 個(gè)線性無關(guān)的特征向量,則 A A A 可以相似對(duì)角化,即存在可逆矩陣 P P P 使得 A = P Λ P ? 1 A=PLambda P^{-1} A = P Λ P ? 1 ,其中 Λ Lambda Λ 是 A A A 的特征值組成的對(duì)角陣。 P P P 的列實(shí)際上就是 A A A 的特征向

    2024年02月10日
    瀏覽(19)
  • 奇異值分解(SVD)原理與在降維中的應(yīng)用

    奇異值分解(SVD)原理與在降維中的應(yīng)用

    奇異值分解(Singular Value Decomposition,以下簡(jiǎn)稱SVD)是在機(jī)器學(xué)習(xí)領(lǐng)域廣泛應(yīng)用的算法,它不光可以用于降維算法中的特征分解,還可以用于推薦系統(tǒng),以及自然語言處理等領(lǐng)域。是很多機(jī)器學(xué)習(xí)算法的基石。本文就對(duì)SVD的原理做一個(gè)總結(jié),并討論在在PCA降維算法中是如何運(yùn)用運(yùn)

    2023年04月25日
    瀏覽(23)
  • 【機(jī)器學(xué)習(xí)】 奇異值分解 (SVD) 和主成分分析 (PCA)

    【機(jī)器學(xué)習(xí)】 奇異值分解 (SVD) 和主成分分析 (PCA)

    ????????在機(jī)器學(xué)習(xí) (ML) 中,一些最重要的線性代數(shù)概念是奇異值分解 (SVD) 和主成分分析 (PCA)。收集到所有原始數(shù)據(jù)后,我們?nèi)绾伟l(fā)現(xiàn)結(jié)構(gòu)?例如,通過過去 6 天的利率,我們能否了解其構(gòu)成以發(fā)現(xiàn)趨勢(shì)? ????????對(duì)于高維原始數(shù)據(jù),這變得更加困難。這就像

    2024年02月15日
    瀏覽(23)
  • 時(shí)序分解 | MATLAB實(shí)現(xiàn)基于SVD奇異值分解的信號(hào)分解分量可視化

    時(shí)序分解 | MATLAB實(shí)現(xiàn)基于SVD奇異值分解的信號(hào)分解分量可視化

    效果一覽 基本介紹 SVD分解重構(gòu)算法,MATLAB程序,奇異值分解 (Singular Value Decomposition)是一種常見的矩陣分解方法,用于將矩陣分解成三個(gè)矩陣的乘積。在信號(hào)處理中,SVD 可以用于特征提取、信號(hào)降維、圖像壓縮等方面。SVD 的一個(gè)重要應(yīng)用是主成分分析 (PCA),可以用于提取數(shù)

    2024年02月11日
    瀏覽(33)
  • ORB-SLAM之SVD奇異值分解——理論 (一)

    在學(xué)習(xí)《視覺SLAM十四講》過程中常遇到SVD奇異值分解,經(jīng)過一段時(shí)間的學(xué)習(xí),在此進(jìn)行記錄整理, 本篇主要整理SVD的數(shù)學(xué)理論基礎(chǔ), 下一篇 進(jìn)行整理 SVD 實(shí)際應(yīng)用 。 給定一大小為 m × m mtimes m m × m 的矩陣 A A A ( 方陣 ),其對(duì)角化分解可以寫成 A = U Λ U ? 1 A=ULambda U^{-1} A =

    2024年02月07日
    瀏覽(22)
  • 矩陣:采用奇異值分解(SVD)對(duì)n個(gè)點(diǎn)進(jìn)行平面擬合

    奇異值分解(Singular Value Decomposition, SVD),是線性代數(shù)中一種重要的矩陣分解,在信號(hào)處理、統(tǒng)計(jì)學(xué)等領(lǐng)域有重要應(yīng)用。奇異值分解在某些方面與對(duì)稱矩陣或厄米矩陣基于特征向量的對(duì)角化類似。對(duì)稱矩陣特征向量分解的基礎(chǔ)是譜分析,而奇異值分解則是譜分析理論在任意矩

    2023年04月08日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包