矩陣的廣義逆及python實踐

NO IMAGE

機器學習的代碼中經常有求矩陣的廣義逆,本文先從概念上總結了矩陣的廣義逆,然後用python的numpy庫實踐

概念

矩陣的廣義逆(Generalized inverse)也稱為偽逆(pseudo inverse),假設一個矩陣 矩陣的廣義逆及python實踐及另一矩陣 矩陣的廣義逆及python實踐,若 矩陣的廣義逆及python實踐 滿足 矩陣的廣義逆及python實踐,則 矩陣的廣義逆及python實踐 即為A的廣義逆矩陣。

提出矩陣的廣義逆的原因

提出矩陣的廣義逆的目的是對於可逆矩陣以外的矩陣(例如非方陣的矩陣)可以找到一矩陣有一些類似逆矩陣的特性。任意的矩陣都存在廣義逆,若一矩陣存在逆矩陣,逆矩陣即為其唯一的廣義逆陣。

考慮以下的線性方程組:

矩陣的廣義逆及python實踐 , 其中 A為 矩陣的廣義逆及python實踐 的矩陣,而y屬於A的列空間。

若矩陣A是可逆矩陣,則 矩陣的廣義逆及python實踐 即為方程式的解。而若矩陣A是可逆矩陣矩陣的廣義逆及python實踐

若矩陣A不可逆或是 矩陣的廣義逆及python實踐,需要一個 矩陣的廣義逆及python實踐 矩陣矩陣的廣義逆及python實踐使得下式成立:

矩陣的廣義逆及python實踐

因此 矩陣的廣義逆及python實踐 是線性方程組 矩陣的廣義逆及python實踐 的解,此矩陣的廣義逆及python實踐階的矩陣 矩陣的廣義逆及python實踐 也使矩陣的廣義逆及python實踐成立。

因此可以用以下的方式定義廣義逆矩陣:若一個矩陣的廣義逆及python實踐的矩陣A, 矩陣的廣義逆及python實踐 的矩陣矩陣的廣義逆及python實踐若可以使矩陣的廣義逆及python實踐成立,則矩陣矩陣的廣義逆及python實踐是A的廣義逆矩陣。

矩陣的廣義逆的種類

矩陣的廣義逆及python實踐矩陣的廣義逆及python實踐

(1) 矩陣的廣義逆及python實踐

(2) 矩陣的廣義逆及python實踐

(3) 矩陣的廣義逆及python實踐

(4) 矩陣的廣義逆及python實踐 .

矩陣的廣義逆及python實踐 滿足(1),即A的廣義逆陣。

若滿足(1)和(2),則為A的generalized reflexive inverse。

若四個條件都滿足,則為A的Moore–Penrose pseudoinverse。

python實踐

下面用numpy.linalg.pinv實踐求矩陣的廣義逆

# 定義一個矩陣
In [26]: A=np.array([[1, 2], [3, 4],[5,6]])
In [27]: A
Out[27]: 
array([[1, 2],
[3, 4],
[5, 6]])
# 求矩陣的偽逆
In [28]: pinv = np.linalg.pinv(A)
In [29]: pinv
Out[29]: 
array([[-1.33333333, -0.33333333,  0.66666667],
[ 1.08333333,  0.33333333, -0.41666667]])

測試一下

# 中間變量
In [31]: mid = np.dot(A, pinv)
# 滿足偽逆的定義,得回了原矩陣A
In [33]: np.dot(mid,A)
Out[33]: 
array([[1., 2.],
[3., 4.],
[5., 6.]])

因此可以看出,numpy.linalg.pinv的結果(上面的pinv矩陣)滿足矩陣的廣義逆及python實踐


參考資料:

[1] wikipedia 廣義逆陣

[2] numpy.linalg.pinv


相關文章

PRML讀書筆記1——1.1節

分部積分法(integrationbyparts)

PRML讀書筆記0——寫在前面的話

寫作平臺選擇記