今天和大家聊一個(gè)非常重要,在機(jī)器學(xué)習(xí)領(lǐng)域也廣泛使用的一個(gè)概念——矩陣的特征值與特征向量。[1] 我們先來看它的定義,定義本身很簡(jiǎn)單,假設(shè)我們有一個(gè)n階的矩陣A以及一個(gè)實(shí)數(shù)lambda,使得我們可以找到一個(gè)非零向量x,滿足: 如果能夠找到的話,我們就稱lambda是矩陣A的特征值,非零向量x是矩陣A的特征向量。[2] 幾何意義光從上面的式子其實(shí)我們很難看出來什么,但是我們可以結(jié)合矩陣變換的幾何意義,就會(huì)明朗很多。 我們都知道,對(duì)于一個(gè)n維的向量x來說,如果我們給他乘上一個(gè)n階的方陣A,得到Ax。從幾何角度來說,是對(duì)向量x進(jìn)行了一個(gè)線性變換。變換之后得到的向量y和原向量x的方向和長(zhǎng)度都發(fā)生了改變。 但是,對(duì)于一個(gè)特定的矩陣A來說,總存在一些特定方向的向量x,使得Ax和x的方向沒有發(fā)生變化,只是長(zhǎng)度發(fā)生了變化。我們令這個(gè)長(zhǎng)度發(fā)生的變化當(dāng)做是系數(shù)lambda,那么對(duì)于這樣的向量就稱為是矩陣A的特征向量,lambda就是這個(gè)特征向量對(duì)應(yīng)的特征值。 求解過程我們對(duì)原式來進(jìn)行一個(gè)很簡(jiǎn)單的變形: 這里的I表示單位矩陣,如果把它展開的話,可以得到一個(gè)n元的齊次線性方程組。這個(gè)我們已經(jīng)很熟悉了,這個(gè)齊次線性方程組要存在非零解,那么需要系數(shù)行列式 不為零,也就是系數(shù)矩陣的秩小于n。 我們將這個(gè)行列式展開: 這是一個(gè)以lambda為未知數(shù)的一元n次方程組,n次方程組在復(fù)數(shù)集內(nèi)一共有n個(gè)解。我們觀察上式,可以發(fā)現(xiàn) lambda 只出現(xiàn)在正對(duì)角線上,顯然,A的特征值就是方程組的解。因?yàn)閚次方程組有n個(gè)復(fù)數(shù)集內(nèi)的解,所以矩陣A在復(fù)數(shù)集內(nèi)有n個(gè)特征值。 我們舉個(gè)例子,嘗試一下: 假設(shè): 那么 我們套入求根公式可以得出使得 f(lambda) = 0 的兩個(gè)根 lambda1 lambda2,有: 這個(gè)結(jié)論可以推廣到所有的n都可以成立,也就是說對(duì)于一個(gè)n階的方陣A,都可以得到: 我們下面來看一個(gè)例子: 我們帶入 可以得到: 在我們之前的文章當(dāng)中,我們就介紹過了Python在計(jì)算科學(xué)上的強(qiáng)大能力,這一次在特征值和特征矩陣的求解上也不例外。通過使用numpy當(dāng)中的庫(kù)函數(shù),我們可以非常輕松,一行代碼,完成特征值和特征向量的雙重計(jì)算。 我們一起來看代碼: import numpy as npa = np.mat([[3, 1], [1, 3]])lam, vet = np.linalg.eig(a) np.linalg.eig 方法會(huì)返回兩個(gè)值,第一個(gè)返回值是矩陣的特征值,第二個(gè)返回值是矩陣的特征向量,我們看下結(jié)果: 這里的特征向量為什么是0.707呢?因?yàn)镻ython自動(dòng)幫我們做好了單位化,返回的向量都是單位向量,不得不說實(shí)在是太貼心了。 總結(jié)關(guān)于矩陣的特征值和特征向量的介紹到這里就結(jié)束了,對(duì)于算法工程師而言,相比于具體怎么計(jì)算特征向量以及特征值。理解清楚它們的概念和幾何意義更加重要,因?yàn)檫@兩者在機(jī)器學(xué)習(xí)的領(lǐng)域當(dāng)中廣泛使用,在許多降維算法當(dāng)中,大量使用矩陣的特征值和特征向量。 對(duì)于降維算法的原理,這里不過多贅述,我們會(huì)在以后的文章當(dāng)中更新相關(guān)內(nèi)容。感興趣的同學(xué)可以小小期待一下。 文章到這里就結(jié)束了,這也是線性代數(shù)專題的最后一篇文章,短短六篇文章當(dāng)然不能涵蓋線性代數(shù)這門學(xué)科當(dāng)中的所有知識(shí)點(diǎn),但實(shí)際當(dāng)中常用的內(nèi)容基本上已經(jīng)都包括了。 今天的文章就到這里,如果覺得有所收獲,請(qǐng)順手點(diǎn)個(gè)關(guān)注或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力。 參考資料[1]《線性代數(shù)-第五版》: 上海交通大學(xué)出版社。 [2] 程序員的數(shù)學(xué)2: 結(jié)城浩 |
|