機器學習之協方差和奇異值分解實現

2021-09-25 22:46:12 字數 1527 閱讀 6438

要求:有以下資料集(二維陣列)data,

[[3, 4, 1, 6, 4],

[2, 3, 5, 4, 0],

[3, 3, 1, 0, 0],

[5, 5, 6, 2, 2],

[0, 2, 3, 3, 3],

[0, 0, 0, 6, 6]]

對其svd分解,並列印輸出分解後的結果

在pca降維演算法中,我們要計算樣本資料的協方差。

協方差表示的是兩個變數的總體的誤差,這與只表示乙個變數誤差的方差不同。 如果兩個變數的變化趨勢一致,也就是說如果其中乙個大於自身的期望值,另外乙個也大於自身的期望值,那麼兩個變數之間的協方差就是正值。 如果兩個變數的變化趨勢相反,即其中乙個大於自身的期望值,另外乙個卻小於自身的期望值,那麼兩個變數之間的協方差就是負值。

在矩陣m的奇異值分解中

· u的列(columns)組成一套對m的正交"輸入"或"分析"的基向量。這些向量是mm的特徵向量。

· v的列(columns)組成一套對m的正交"輸出"的基向量。這些向量是mm的特徵向量。

· σ對角線上的元素是奇異值,可視為是在輸入與輸出間進行的標量的"膨脹控制"。這些是mm及mm的奇異值,並與u和v的列向量相對應。

奇異值分解在統計中的主要應用為主成分分析(pca),一種資料分析方法,用來找出大量資料中所隱含的「模式」,它可以用在模式識別,資料壓縮等方面。pca演算法的作用是把資料集對映到低維空間中去。 資料集的特徵值(在svd中用奇異值表徵)按照重要性排列,降維的過程就是捨棄不重要的特徵向量的過程,而剩下的特徵向量組成的空間即為降維後的空間。

import numpy as np

data = np.array([[

3,4,

1,6,

4],[

2,3,

5,4,

0],[

3,3,

1,0,

0],[

5,5,

6,2,

2],[

0,2,

3,3,

3],[

0,0,

0,6,

6]])

data = data.t

# 將資料均值縮放

data_mean = np.mean(data)

data = data - data_mean.reshape(-1

,1)# 計算協方差

cov_mat = np.cov(data)

# 奇異值分解

u,s,v = np.linalg.svd(cov_mat)

print

(u)print()

print

(s)print()

print

(v)# 奇異值分解後的u是按特徵值大小排序好的特徵向量,這為我們降維提供了可能,我們要降到幾維,就取u的前幾列和原來的樣本做乘積就可以了。

# 比如降到2維

# u_new = u[:,:2]

# data_new = np.dot(data,u_new) # 這就是降維後的樣本

機器學習 奇異值分解

奇異值分解是一種矩陣因子分解方法,是線性代數概念,但在統計學習中被廣泛使用,成為其重要工具 主要應用 在主成分分析 潛在語義分析上 奇異值分解的矩陣不需要是方陣,任意矩陣都可以進行分解,都可以表示為三個矩陣的乘積 因子分解 形式,分別是m階正交矩陣 由降序排列的非負對角線元素組成的m n矩形對角矩陣...

奇異值分解SVD eigen opencv實現

opencv 實現 先貼上奇異值分解的物理意義 再貼一下之前寫的筆記 分離通道 std vector src split img,src for int i 0 i src.size channels i svd std vectorw,u,vt,s for int i 0 i channels i...

SVD奇異值分解 機器學習

簡介 奇異值分解 singular value decomposition 是線性代數中一種重要的矩陣分解,是在機器學習領域廣泛應用的演算法,它不光可以用於降維演算法中的特徵分解,還可以用於推薦系統,以及自然語言處理等領域。是很多機器學習演算法的基石。奇異值分解在資料降維中有較多的應用,這裡把它的原...