1. 程式人生 > >線性代數精華——矩陣的特徵值與特徵向量

線性代數精華——矩陣的特徵值與特徵向量

今天和大家聊一個非常重要,在機器學習領域也廣泛使用的一個概念——矩陣的特徵值與特徵向量。

我們先來看它的定義,定義本身很簡單,假設我們有一個n階的矩陣A以及一個實數\(\lambda\),使得我們可以找到一個非零向量x,滿足:

\[Ax=\lambda x\]

如果能夠找到的話,我們就稱\(\lambda\)是矩陣A的特徵值,非零向量x是矩陣A的特徵向量。


幾何意義


光從上面的式子其實我們很難看出來什麼,但是我們可以結合矩陣變換的幾何意義,就會明朗很多。

我們都知道,對於一個n維的向量x來說,如果我們給他乘上一個n階的方陣A,得到Ax。從幾何角度來說,是對向量x進行了一個線性變換。變換之後得到的向量y和原向量x的方向和長度都發生了改變。

但是,對於一個特定的矩陣A來說,總存在一些特定方向的向量x,使得Ax和x的方向沒有發生變化,只是長度發生了變化。我們令這個長度發生的變化當做是係數\(\lambda\),那麼對於這樣的向量就稱為是矩陣A的特徵向量,\(\lambda\)就是這個特徵向量對應的特殊值。


求解過程


我們對原式來進行一個很簡單的變形:

\[(A-\lambda I)x = 0\]

這裡的I表示單位矩陣,如果把它展開的話,可以得到一個n元的齊次線性方程組。這個我們已經很熟悉了,這個齊次線性方程組要存在非零解,那麼需要係數行列式

\[|A-\lambda I|\]

不為零,也就是係數矩陣的秩小於n。

我們將這個行列式展開:

\[ \left| \begin{matrix} a_{11}-\lambda & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} - \lambda & \cdots & a_{2n} \\ \vdots & \vdots & & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nm} - \lambda \end{matrix} \right| \]

這是一個以\(\lambda\)為未知數的一元n次方程組,n次方程組在複數集內一共有n個解。我們觀察上式,可以發現\(\lambda\)只出現在正對角線上,顯然,A的特徵值就是方程組的解。因為n次方程組有n個複數集內的解,所以矩陣A在複數集內有n個特徵值。

我們舉個例子,嘗試一下:

假設:

\[ A=\left[ \begin{matrix} a_{11}-\lambda & a_{12} \\ a_{21} & a_{22}-\lambda \\ \end{matrix} \right] \]

那麼\(f(\lambda)=(a_{11}-\lambda)(a_{22}-\lambda)-a_{12}a_{21}=\lambda^2-(a_{11}+a_{22})\lambda-|A|\),我們套入求根公式可以得出使得\(f(\lambda)=0\)的兩個根\(\lambda_1, \lambda_2\),有:\(\lambda_1+\lambda_2=a_{11}+a_{22},\quad \lambda_1\lambda_2=|A|\)。

這個結論可以推廣到所有的n都可以成立,也就是說對於一個n階的方陣A,都可以得到:

  1. \(\lambda_1+\lambda_2+\cdots+\lambda_n=a_{11}+a_{22}+\cdots+a_{nn}\)
  2. \(\lambda_1\lambda_2\cdots\lambda_n=|A|\)


案例


我們下面來看一個例子:

\[A=\left[ \begin{matrix} 3 & 1 \\ 1 & 3 \end{matrix} \right]\]

我們帶入\((A-\lambda I)x=0\),可以得到:

\[ \left| \begin{matrix} 3-\lambda & 1 \\ 1 & 3 - \lambda \end{matrix} \right|=0 \]

所以: \((3-\lambda)^2 - 1 = 0\),可以看出來\(\lambda_1=2, \quad \lambda_2=4\)

當\(\lambda=2\)時:

\[ \left[ \begin{matrix} 3 & 1\\ 1 & 3 \end{matrix} \right]x = 2x \]

\[ \left[ \begin{matrix} 3 & 1\\ 1 & 3 \end{matrix} \right][a_1, a_2]^T = [2a_1, 2a_2]^T \]

\[ \begin{aligned} 3a_1 + a_2 &= 2a_1 \\ a_1 + 3a_2 &= 2a_2 \end{aligned} \]

解之,可以得到:\(a_1+a_2=0\),所有\((x, -x)\)向量都是A的特徵向量。

同理,當\(\lambda = 4\)時:
\[ \begin{aligned} \left[ \begin{matrix} 3 & 1\\ 1 & 3 \end{matrix} \right]x &= 4x \\ \left[ \begin{matrix} 3 & 1\\ 1 & 3 \end{matrix} \right][a_1, a_2]^T &= [4a_1, 4a_2]^T \\ 3a_1 + a_2 &= 4a_1 \\ a_1 + 3a_2 &= 4a_2 \end{aligned} \]

解之,可以得到:\(a_1=a_2\),所有\((x, x)\)向量都是A的特徵向量。


使用Python求解特徵值和特徵向量


在我們之前的文章當中,我們就介紹過了Python在計算科學上的強大能力,這一次在特徵值和特徵矩陣的求解上也不例外。通過使用numpy當中的庫函式,我們可以非常輕鬆,一行程式碼,完成特徵值和特徵向量的雙重計算。

我們一起來看程式碼:

import numpy as np

a = np.mat([[3, 1], [1, 3]])
lam, vet = np.linalg.eig(a)

np.linalg.eig 方法會返回兩個值,第一個返回值是矩陣的特徵值,第二個返回值是矩陣的特徵向量,我們看下結果:

這裡的特徵向量為什麼是0.707呢?因為Python自動幫我們做好了單位化,返回的向量都是單位向量,不得不說實在是太貼心了。


總結


關於矩陣的特徵值和特徵向量的介紹到這裡就結束了,對於演算法工程師而言,相比於具體怎麼計算特徵向量以及特徵值。理解清楚它們的概念和幾何意義更加重要,因為這兩者在機器學習的領域當中廣泛使用,在許多降維演算法當中,大量使用矩陣的特徵值和特徵向量。

對於降維演算法的原理,這裡不過多贅述,我們會在以後的文章當中更新相關內容。感興趣的同學可以小小期待一下。

文章到這裡就結束了,這也是線性代數專題的最後一篇文章,短短六篇文章當然不能涵蓋線性代數這門學科當中的所有知識點,但實際當中常用的內容基本上已經都包括了。下週我們將開始全新的Python專題,希望大家多多期待。

如果覺得有所收穫,請順手點個關注或者轉發吧,你們的支援是我最大的動力。

相關推薦

線性代數筆記22——特徵值特徵向量

特徵向量   函式通常作用在數字上,比如函式f作用在x上,結果得到了f(x)。線上性代數中,我們將x擴充套件到多維,對於Ax來說,矩陣A的作用就像一個函式,輸入一個向量x,通過A的作用,得到向量Ax。對多數向量x而言,經過Ax的轉換後將得到不同方向的向量,但總有一些特殊的向量,它的方向和Ax方向相同,即Ax

線性代數導論21——特徵值特徵向量

對方陣的特徵值和特徵向量做講解,矩陣的特徵值和特徵向量會反映出矩陣的重要資訊,後面的課將講解特徵值和特徵向量的應用以及為什麼需要特徵值和特徵向量。 特徵向量和特徵值概念 Ax,矩陣A的作用就像輸入向量x,結果得到向量Ax(就像一個函式,微積分中的函式表示作用在數字x上得

線性代數精華——矩陣特徵值特徵向量

今天和大家聊一個非常重要,在機器學習領域也廣泛使用的一個概念——矩陣的特徵值與特徵向量。 我們先來看它的定義,定義本身很簡單,假設我們有一個n階的矩陣A以及一個實數\(\lambda\),使得我們可以找到一個非零向量x,滿足: \[Ax=\lambda x\] 如果能夠找到的話,我們就稱\(\lambda\)

線性代數(六)矩陣特徵值特徵向量——特徵值特徵向量求解 矩陣對角化

本節主要知識點 1.特徵向量與特徵值的定義:A為n階方陣,x為非零向量,Ax=λx,則λ為A的特徵值,x為A的屬於特徵值的特徵向量。 2.特徵值與特徵向量的求解過程(重點) 寫出f(λ)=det(A-λI) 特徵值:計算f(λ)的全部根 特徵向量:對A的每一個特徵值

線性代數公開課MIT Linear Algebra】 第二十四課 特徵值特徵向量的應用——馬爾科夫矩陣、傅立葉級數

本系列筆記為方便日後自己查閱而寫,更多的是個人見解,也算一種學習的複習與總結,望善始善終吧~ 馬爾科夫矩陣Markov Matrix 馬爾科夫矩陣Markov Matrix有兩個性質:所有元素大於等於0,所有矩陣的列相加等於1。 這裡性質導致一

線性代數矩陣向量、行列式、特徵值特徵向量(掌握這些概念一篇文章就夠了)

在數學領域中,線性代數是一門十分有魅力的學科,首先,它不難學;其次,它能廣泛應用於現實生活中;另外,在機器學習越來越被重視的現在,線性代數也能算得上是一個優秀程式設計師的基本素養吧? 一、線性代數的入門知識 很多人在大學學習線性代數時,國內

線性代數---矩陣---特徵值特徵向量

轉自:https://jingyan.baidu.com/article/27fa7326afb4c146f8271ff3.html 一、特徵值和特徵向量的定義 首先讓我們來了解一下特徵值和特徵向量的定義,如下: 特徵子空間基本定義,如下:

MIT 線性代數導論 第二十講:特徵值特徵向量

敲黑板,敲黑板 。特徵向量與特徵值在很多地方都有應用,這一將開始講這一部分的內容,也是線性代數裡面很重要的一部分知識了。 這一講的主要內容: 特徵值、特徵向量的概念 特徵值與特徵向量的計算方法 特徵向量、特徵值的概念 對於矩陣 AAA 和向量 xxx , 有

線性代數之六:特徵值特徵向量

6.1 特徵值與特徵向量 特徵向量:若A為n階方陣,如果存在一個非零向量x使得Ax=λx,則稱標量λ為特徵值(eigenvalue),稱x為屬於λ的特徵向量(eigenvector)。 特徵向量與零度空間:方程Ax=λx可以寫為(A−λI)x=0,因此λ為特

數學基礎系列(五)----矩陣矩陣的秩、向量特徵值特徵向量

一、矩陣 1、係數矩陣 前面學習了矩陣很多基礎知識,那麼遇到具體的線性方程組該怎麼辦呢?該怎麼轉換為矩陣來求解呢?如下圖所示,A為係數矩陣,X是未知數矩陣,B是常數矩陣。    2、矩陣轉置 簡單來說就是矩陣的行元素和列元素互相調換一下。    下面列出一些矩陣轉置常用的公式    這些都沒有什麼好說的

Machine Learning之高等數學篇(十二)☞《特徵值特徵向量

上一節呢,我們學習了《齊次與非齊次方程組解的結構定理》,這次我們續接上一節的內容,來學習下《特徵值與特徵向量》 一、特徵值與特徵向量 二、特徵值的性質 三、可對角化矩陣(非常重要) 四、正定矩陣 五、奇異矩

矩陣特徵值特徵向量及其求解

如果把矩陣看成運動,描述運動最重要的引數當屬運動的速度和方向。為了幫助大家理解,我們可以形象地認為:特徵值就是運動的速度,特徵向量就是運動的方向。 如果把矩陣看成運動,描述運動最重要的引數當屬運動的速

10 特徵值特徵向量

有趣的對話 數學是幹什麼的? 特徵值和特徵向量 特徵值和特徵向量到底是幹什麼的?為啥這樣寫就能算出來你想要的特徵值和特徵向量? 1.預備知識 2.直觀的描述他倆的意義 有的向量線性變換後離開了原來的張成空間

C++ Eigen庫計算矩陣特徵值特徵向量

C++Eigen庫程式碼 #include <iostream> #include <Eigen/Dense> #include <Eigen/Eigenvalues> using namespace Eigen

矩陣特徵值特徵向量

介紹特徵向量和特徵值在計算機視覺和機器學習中有許多重要的應用。眾所周知的例子是PCA(主成分分析)進行降維或人臉識別是特徵臉。特徵向量和特徵值的一個有趣應用在我的另一篇有關誤差橢圓的博文中提到。此外,特徵值分解形成協方差矩陣幾何解釋的基礎。在這篇文章中,我將簡單的介紹這個數

180122 特徵值特徵向量的幾何解釋python程式碼,附matplotlib繪製多邊形

紅色 基座標(豎著看) 1 0 0 1 綠色 變換矩陣(豎著看) 3 1 0 2 藍色 特徵向量(豎著看) 1−2√2 02√2 黑色 變換矩陣(左乘)特徵向量(豎著看) 3

c語言實現求一個矩陣特徵值特徵向量

前言       求矩陣的特徵值,主要是用的QR分解,在我的有一次部落格裡,我已經詳細地給出了計算的過程,大家有興趣可以去看下,經過幾天的鑽研,終於完成了整個的eig演算法。下面我將把我的整個程式碼附上,有不懂的可以問我,歡迎一起討論學習!        這是對上一次

Jacobi迭代求矩陣特徵值特徵向量+C程式碼

Jacobi計算過程如下: 1. 選擇矩陣A非對角元中最大值A[i][j],運用公式 tan 2O = 2*A[i][j] / (A[i][i] -A[j][j]) 獲得選擇平面矩陣J,使J * A *J'=A1 2. 計算得到A1後,重複第1歩,計算A2 =J2 *A1

特徵值特徵向量的意義

轉載地址:http://blog.csdn.net/sunshine_in_moon/article/details/45749691 本文轉自知乎大牛。  從定義出發,Ax=cx:A為矩陣,c為特徵值,x為特徵向量。  矩陣A乘以x表示,對向量x進行一次轉換(旋轉或拉

[matlab] eig函式求解矩陣特徵值特徵向量

在MATLAB中,計算矩陣A的特徵值和特徵向量的函式是eig(A),常用的呼叫格式有 5種: (1) E=eig(A):求矩陣A的全部特徵值,構成向量E。 (2) [V,D]=eig(A):求矩陣A的全部特徵值,構成對角陣D,並求A的特徵向量構成 V的列