1. 程式人生 > >特徵值分解和奇異值(SVD)分解

特徵值分解和奇異值(SVD)分解

本文先從幾何意義上對奇異值分解SVD進行簡單介紹,然後分析了特徵值分解與奇異值分解的區別與聯絡,最後用python實現將SVD應用於推薦系統。

1.SVD詳解

SVD(singular value decomposition),翻譯成中文就是奇異值分解。SVD的用處有很多,比如:LSA(隱性語義分析)、推薦系統、特徵壓縮(或稱資料降維)。SVD可以理解為:將一個比較複雜的矩陣用更小更簡單的3個子矩陣的相乘來表示,這3個小矩陣描述了大矩陣重要的特性。

1.1奇異值分解的幾何意義(因公式輸入比較麻煩所以採取截圖的方式)

2.SVD應用於推薦系統

資料集中行代表使用者user,列代表物品item,其中的值代表使用者對物品的打分。基於SVD的優勢在於:使用者的評分資料是稀疏矩陣,可以用SVD將原始資料對映到低維空間中,然後計算物品item之間的相似度,可以節省計算資源。

整體思路:先找到使用者沒有評分的物品,然後再經過SVD“壓縮”後的低維空間中,計算未評分物品與其他物品的相似性,得到一個預測打分,再對這些物品的評分從高到低進行排序,返回前N個物品推薦給使用者。

具體程式碼如下,主要分為5部分:

第1部分:載入測試資料集;

第2部分:定義三種計算相似度的方法;

第3部分:通過計算奇異值平方和的百分比來確定將資料降到多少維才合適,返回需要降到的維度;

第4部分:在已經降維的資料中,基於SVD對使用者未打分的物品進行評分預測,返回未打分物品的預測評分值;

第5部分:產生前N個評分值高的物品,返回物品編號以及預測評分值。

優勢在於:使用者的評分資料是稀疏矩陣,可以用SVD將資料對映到低維空間,然後計算低維空間中的item之間的相似度,對使用者未評分的item進行評分預測,最後將預測評分高的item推薦給使用者。

相關推薦

特徵值分解奇異SVD分解

本文先從幾何意義上對奇異值分解SVD進行簡單介紹,然後分析了特徵值分解與奇異值分解的區別與聯絡,最後用python實現將SVD應用於推薦系統。 1.SVD詳解 SVD(singular value decomposition),翻譯成中文就是奇異值分解。SVD的用處有很多,比如:LSA(隱性語義分析)、推薦系

矩陣的特徵分解奇異SVD分解——求法意義

目錄 一、特徵分解(特徵值、特徵向量) 二、正定、半正定、負定 三、奇異值(SVD)分解 一、特徵分解(特徵值、特徵向量) 許多數學物件可以通過將它們分解成多個組成部分或者找到它們的一些屬性以便更好地理解,這些屬性是通用的,而不是由我們選擇表示它們的方式產生的。 例如,整

特徵值奇異svd

前言:     上一次寫了關於PCA與LDA的文章,PCA的實現一般有兩種,一種是用特徵值分解去實現的,一種是用奇異值分解去實現的。在上篇文章中便是基於特徵值分解的一種解釋。特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面

數學基礎系列(六)----特徵值分解奇異分解(SVD)

一、介紹   特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。   奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。就像是

easyui.utils.js 自己封裝的 使用easyui過程中方便操作

注意:該easyui.utils.js  會在我自己使用過程中不斷完善,大家一起進步。 在js上新增 以下 (function($){   function  其他方法。 })(jQuery); 的目的是為了防止該js檔案中的function與瀏覽器本身的一些functi

mysql儲存過程之變數建立DECLARESET

    我們都知道,變數是一個命名資料物件,變數的值可以在儲存過程執行期間更改。我們接下來就嘗試使用儲存過程中的變數來儲存直接/間接結果。 這些變數是儲存過程的本地變數,但是我們得注意,變數必須先聲明後

特征分解奇異分解

雲計 做到 mpi img .cn wikipedia cti 雲計算 position 特征值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裏面,也很少講任何跟特征值與奇異值有關的應用背景。 奇異值分解是一個有著很明顯的物理意義的

奇異分解SVD主成分分析PCA

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

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

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

奇異分解SVD原理

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

線性代數基礎矩陣、範數、正交、特徵值分解奇異分解、跡運算

目錄 基礎概念 矩陣轉置 對角矩陣 線性相關 範數 正交 特徵值分解 奇異值分解 跡運算 行列式 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~ 基礎概念 標量:一個標量就是一個單獨的數字 向量:一個向量就是一列數字 矩

機器學習十二——機器學習中的矩陣方法2特徵值奇異

QR分解(續) 令A=[a1,⋯,an],其中ai為列向量。則: u1u2u3uk=a1,=a2−proju1a2,=a3−proju1a3−proju2a3,⋮=ak−∑j=1k−1projujak,e1e2e3ek=u1∥u1∥=u2∥u2∥=u3∥

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

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

矩陣的奇異分解SVD理論

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

奇異分解SVD與降維

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

特徵值奇異分解(SVD)

特徵值分解和奇異值分解兩者有著很緊密的關係,兩者的目的都是為了提取矩陣最重要的特徵。本節先解釋特徵值分解。先用一個例項來說明特徵值和特徵向量的起因和實際意義,然後給出定義,計算方法,python程式碼以及其他解釋。 特徵值分解 例項 某城市有10000

矩陣分解奇異分解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

特徵值分解: 特徵值分解(Eigen decomposition),又稱譜分解(Spectral decomposition)是將矩陣分解為由其特徵值和特徵向量表示的矩陣之積的方法。需要注意只有方陣才可以施以特徵值分解。 N 維非零向量 v 是 N

C# List 賦 --引用類型的賦復制

地址 修改 引用 進行 urn ont pre 詳細 理論 最近項目維護中遇到一個問題,確切的說應該是兩個月前的問題也是因為這裏引起的,可惜當時困於業務不熟悉,也沒有更多時間允許查詢根源,導致再次引發了新的問題!!! 問題場景:基礎數據存於List類型的BOMs中,計算過程