人工智慧的數學(1)奇異值分解

2021-03-02 一個關於讀書的神奇帳號

奇異值分解

本篇使用到了numpy

這個筆記系列的每一篇都不會很長,適合在各種碎片時間裡閱讀。代碼部分使用的語言是Python,需要使用到的包我都會在開頭標註出來的。

在數據分析的過程中,當原數據排成的矩陣規模較大時,通過奇異值分解,可將其分為左奇異矩陣、奇異值矩陣、右奇異矩陣,三個較小的矩陣,便於儲存和傳輸。

同時奇異值分解也便於進行對矩陣的數值運算的近似操作。

奇異值分解的英文是Singular Value Discomposition,也就是通常說的SVD。

當矩陣

這裡,

奇異值分解就是將特徵值分解的方法推廣到一般的矩陣上:

簡記為

可以通過numpy.linalg.svd()進行求解,這個函數的返回值是左奇異矩陣、奇異值、右奇異矩陣。

接下來要用特徵值作成奇異值矩陣。

u,s,vt=numpy.linalg.svd(A)
sig=numpy.zeros(numpy.shape(A))
sig[:len(s),:len(s)]=numpy.diag(s)

從而我們就能通過三個小矩陣重構原矩陣。

然後我們就可以開始矩陣近似的工作。

#*給定百分比,直接進行近似
def ApproxSVD(data,percent):
    U,s,VT=numpy.linalg.svd(data)
    sigma=numpy.zeros(numpy.shape(data))
    sigma[:len(s),:len(s)]=numpy.diag(s)
    #*這裡求出選取的奇異值個數
    sum_sigma=sum(s)
    sum_sigma1=(int)(sum_sigma)*percent
    sum_sigma2=0
    k=0
    while sum_sigma2 < sum_sigma1:
        for i in s:
            sum_sigma2 += i
            k+=1
    #*開始矩陣近似
    D=(U[:,:k].dot(sigma[:k,:k])).dot(VT[:k,:])
    return numpy.rint(D).astype("uint8")

我們選擇的確定取奇異值個數的方法是取奇異值總和對應百分比分位上的奇異值的個數。

這個系列的筆記不打算加入實際應用的部分,只記錄純理論的內容。如果時間允許的話,我會單獨再開設一個實戰開發的系列筆記。(老鴿王了)

相關焦點

  • 奇異值分解(SVD)
    SVD思維導圖奇異值分解(Singular Value Decomposition,SVD),是一種提取信息的方法。比如有一份記錄用戶關於餐館觀點的數據,要對其進行處理分析,提取背後的因素,這個因素可能是餐館的類別,烹飪配料等,然後利用這些因素估計人們對沒有去過的餐館的看法,從而進行推薦,提取這些信息的方法就叫奇異值分解法。
  • 奇異值分解SVD
    奇異值分解(SVD)在計算機視覺中有著廣泛的應用,如數據降維、推薦系統、自然語言處理等。本文是介紹SVD的數學計算過程,並從SVD的性質說明其應用的原理。奇異值分解(SVD)與特徵分解類似,是將矩陣分解為由奇異值(特徵值)和特徵向量表示的矩陣之積的方法。因而,在介紹SVD前有必要先介紹特徵值、特徵向量和特徵分解。
  • 奇異值分解(SVD) 的幾何意義
    如何獲得奇異值分解?( How do we find the singular decomposition? )事實上我們可以找到任何矩陣的奇異值分解,那麼我們是如何做到的呢?假設在原始域中有一個單位圓,如下圖所示。
  • 一文讓你通俗理解奇異值分解
    特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 奇異值分解及其應用
    ,一種是用奇異值分解去實現的。特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 數學推導+純Python實現機器學習算法28:奇異值分解SVD
    import numpy as np# 創建一個矩陣AA = np.array([[0,1],[1,1],[1,0]])# 對其進行SVD分解u, s, vt = np.linalg.svd(A, full_matrices=True)print(u.shape, s.shape, vt.shape)     然後分別查看u、s和v矩陣,並驗證下是否可由這三個矩陣恢復到矩陣
  • 奇異值分解(SVD) 的 幾何意義
    換句話說,如果某些奇異值非常小的話,其相對應的幾項就可以不同出現在矩陣 M 的分解式中。因此,我們可以看到矩陣 M 的秩的大小等於非零奇異值的個數。實例二我們來看一個奇異值分解在數據表達上的應用。假設我們有如下的一張 15 x 25 的圖像數據。
  • 強大的矩陣奇異值分解(SVD)及其應用
    ,一種是用奇異值分解去實現的。在上篇文章中便是基於特徵值分解的一種解釋。特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 奇異值分解(SVD)原理
    奇異值分解(Singular Value Decomposition,簡稱SVD)是在機器學習領域廣泛應用的算法,它不光可以用於降維算法中的特徵分解
  • 線性代數(Gelbert)---奇異值分解
    矩陣的分解幾乎貫穿了整個Gelbert的線代課,從《準備》中A=LDU(可逆消元),到《矩陣的冪》中A = S∧S-1(特徵向量都線性無關),《對稱矩陣》A = Q∧QT,最後到奇異值分解,用Gelbert的話就是最終和最好的分解,而且它對任意矩陣都可以。它應用很廣泛,網上有很多圖形降噪的例子,如果有時間,我還挺有興趣實現一個的,看上去也不難,大家都可以試試。
  • 【基礎】奇異值分解的原理與應用
    本文對適用範圍很廣的奇異值分解方法進行了介紹,並通過代碼演示說明了其工作方式、計算方法及其常見的幾種基礎應用。矩陣分解也叫矩陣因子分解,涉及到用給定矩陣的組成元素描述該矩陣。奇異值分解(SVD)可能是最著名和使用最廣泛的矩陣分解方法。所有矩陣都有一種 SVD 方法,這使得其比特徵分解(eigendecomposition)等其它方法更加穩定。
  • 奇異值分解, 這一篇就夠了
    教程概覽本教程分為 5 部分,依次為:1. 奇異值分解2. 計算奇異值分解3. 根據 SVD 重建矩陣4. 用於偽逆的 SVD5.用於降維的 SVD奇異值分解奇異值分解(SVD)是一種用於將矩陣歸約成其組成部分的矩陣分解方法,以使後面的某些矩陣計算更簡單。為了說明簡單,我們將關注用於實數值矩陣的 SVD,而會忽略複數矩陣的情況。
  • 一文讀懂機器學習中奇異值分解SVD
    1.1 矩陣分解作用1.2 矩陣分解的方法一文讀懂機器學習中奇異值分解SVD1.3 推薦學習的經典矩陣分解算法SVD具體介紹2.1 特徵值、特徵向量、特徵值分解2.2 SVD分解2.3 SVD分解的應用1.
  • 奇異值分解和矩陣分解傻傻分不清楚?一文幫你理清兩者差異!
    在推薦系統的相關研究中,我們常常用到兩個相關概念:矩陣分解和奇異值分解。這兩個概念是同一種算法嗎?兩者到底有什麼差別?在本文中,作者梳理了兩種算法的概念、來源和內容,並進行了比較。通過對相關內容的梳理,作者提出,矩陣分解是推薦系統中最初使用的概念,奇異值分解是對該方法的進一步發展。在現在的討論中,一般將兩種方法統一成為奇異值分解。
  • 奇異值的物理意義是什麼?
    ,一般是由奇異值分解(Singular Value Decomposition,簡稱SVD分解)得到。我們記這個像素矩陣為 現在我們對矩陣進行奇異值分解。直觀上,奇異值分解將矩陣分解成若干個秩一矩陣之和,用公式表示就是: 其中等式右邊每一項前的係數就是奇異值,
  • 通俗易懂的講解奇異值分解(SVD)和主成分分析(PCA)
    本教程包含以下內容特徵分解對稱矩陣的特徵分解奇異值分解(The Singular Value Decomposition,奇異值分解(SVD)特徵分解適用於n×n維的方形矩陣,而由於m×n維的矩形矩陣在變換過程中會改變矩陣原本的維數,從而對於矩形矩陣並沒有對其特徵值進行過定義。
  • 奇異值分解簡介:從原理到基礎機器學習應用
    奇異值分解(SVD)可能是最著名和使用最廣泛的矩陣分解方法。所有矩陣都有一種 SVD 方法,這使得其比特徵分解(eigendecomposition)等其它方法更加穩定。因此,這種方法在很多應用中都有應用,包括壓縮、去噪、數據壓縮。在這份教程中,你將了解用於將矩陣分解成其組成元素的奇異值分解方法。
  • 入門 | 奇異值分解簡介:從原理到基礎機器學習應用
    本文對適用範圍很廣的奇異值分解方法進行了介紹,並通過代碼演示說明了其工作方式、計算方法及其常見的幾種基礎應用。矩陣分解也叫矩陣因子分解,涉及到用給定矩陣的組成元素描述該矩陣。奇異值分解(SVD)可能是最著名和使用最廣泛的矩陣分解方法。
  • 數據科學中需要知道的5個關於奇異值分解(SVD)的應用
    線性代數的一種這樣的用途是奇異值分解(SVD)用於降維。你在數據科學中一定很多次遇到SVD。它無處不在,特別是當我們處理降維時。但它是什麼?它是如何工作的?SVD應用有什麼?事實上,SVD是推薦系統的基礎,而推薦系統是谷歌,YouTube,亞馬遜,Facebook等大公司的核心。
  • 幾何角度理解奇異值分解SVD
    二、SVD的幾何意義奇異值分解SVD ( The singular value decomposition )從幾何意義上來說:對於任意矩陣M,通過SVD。可以將一個相互垂直的坐標變換到另外一個相互垂直的坐標。