特征值與特征向量及其應用


    大學學習線性代數的時候,特征值(eigenvalue)和特征向量(eigenvector)一直不甚理解,盡管課本上說特征值和特征向量在工程技術領域有着廣泛的應用,但是除了知道怎么求解特征值和特征向量之外,對其包含的現實意義知之甚少。研究生之后學習統計學,在進行主成分分析過程中,需要求解變量的協方差矩陣的特征值和特征向量,並根據特征值的大小確定主成分,似乎知道了特征值和特征向量的一點點現實意義,但是本着考試為主的態度,沒有深入進去理解特征值和特征向量。最近看機器學習的一些方法,如特征降維方法如SVDPCA,線性判別法(Linear Discriminant AnalysisLDA)等方法的時候都涉及到特征值和特征向量,發現如果不深入理解特征值和特征向量,對這些方法的學習只能浮於表面,難以透徹理解。痛定思痛,決定由表及里好好的學習一下特征值和特征向量,本文的關於特征值和特征向量的理解和表述大量參考了網上的資料,僅作為本人學習筆記,謝絕轉載。

一、特征值和特征向量的概念和計算

    先看一下教科書上的定義:設An階方陣,如果存在常數及非零n向量x,使得,則稱是矩陣A的特征值,xA屬於特征值的特征向量。給定n階矩陣A,行列式

的結果是關於的一個多項式,成為矩陣A特征多項式,該特征多項式構成的方程稱為矩陣A的特征方程。

 

  定理:n階矩陣An個特征值就是其特征方程n個跟;而A的屬於特征值的特征向量就是其次線性方程的非零解。

  例:的特征根和特征向量

  解:,解一元二次方程可得

    對應的特征向量為x滿足,求得

    對應的特征向量為x滿足,求得

二、特征值和特征向量的幾何意義

1、矩陣、向量、向量的矩陣變換

  在進行特征和特征向量的幾何意義解釋之前,我們先回顧一下向量矩陣向量矩陣變換的等相關知識。

  向量行向量列向量向量在幾何上被解釋成一系列與軸平行的位移,一般說來,任意向量v都能寫成"擴展"形式:

  3維向量為例,定義pqr為指向+x+y+z方向的單位向量,則有v=xp+yq+zr。現在向量v就被表示成pqr線性變換了。這里的基向量是笛卡爾積坐標軸,但事實上這個一個坐標系可以由任意的3個基向量定義,只要這3個基向量線性無關就行(不在同一平面上)。因此,用一個矩陣乘以向量,如Ax,表述如下:

  如果把矩陣的行解釋為坐標系的基向量,矩陣與向量相乘(或向量與矩陣相乘)相當於執行一次坐標轉換,Ax=y可表述為x經矩陣A變換后變為y。因此,追溯矩陣的由來,與向量的關系,我們會覺得矩陣並不神秘,它只是用一種緊湊的方式來表達坐標轉換所需的數學運算。

2、矩陣的特征值和特征向量

  矩陣A的特征值和特征向量分別為x,記為,該式子可理解為向量x在幾何空間中經過矩陣A的變換后得到向量。由此可知,向量x經過矩陣A變換后,方向並無改變(反方向不算方向改變),只是伸縮了倍。

  以矩陣為例,其特征向值分別為,對應的特征向量為,那么)表示向量經過矩陣A變換后,得到,向量變換變為改變方向,知識將在原方向上擴充了2倍。特征值也是同樣道理,經過矩陣A變換后特征向量在原方向上擴充了3倍。

  因此,將特征向量看成基向量,矩陣就是這些基向量向對應的特征值伸展所需的數學運算。給定一個矩陣,就可以找出對應的基(特征向量),及透過向量變換(矩陣),這些基的伸展(特征值)。

三、特征值和特征向量的應用實例

1、主成分分析(Principle Component Analysis, PCA)

1)方差、協方差、相關系數、協方差矩陣

    方差:

    協方差:

    **方差是衡量單變量的離散程度,協方差是衡量兩個變量的相關程度(親疏),協方差越大表明兩個變量越相似(親密),協方差越小表明兩個變量之間相互獨立的程度越大。

    相關系數:

    **協方差和相關系數都可以衡量兩個表明的相關程度,協方差未消除量綱,不同變量之間的協方差大小不能直接比較,而相關系數消除了量綱,可以比較不同變量之間的相關程度。

    協方差矩陣:如果有兩個變量X,Y,那么協方差矩陣為,協方差陣說明了樣本中變量間的親疏關系。

2)主成分分析的思想和算法

  主成分分析是利用降維的思想,將多個變量轉化為少數幾個綜合變量(即主成分),其中每個主成分都是原始變量的線性組合,各主成分之間互不相關,從而這些主成分能夠反映始變量的絕大部分信息,且所含的信息互不重疊。它是一個線性變換,這個變換把數據變換到一個新的坐標系統中,使得任何數據投影的第一大方差在第一個坐標(稱為第一主成分)上,第二大方差在第二個坐標(第二主成分)上,依次類推。主成分分析經常用減少數據集的維數,同時保持數據集的對方差貢獻最大的特征。

  假設用p個變量來描述研究對象,分別用X1,X2…Xp來表示,這p個變量構成的p維隨機向量為X=(X1,X2…Xp),n個樣本構成組成了np列的矩陣A。主成分求解過程如下:

  第一步,求解得到矩陣A的協方差陣B

  第二步,求解協方差陣B,得到按大小順序排列的特征值向量為特征值向量中每個特征值組成的對角矩陣,U為所有特征值對應的特征向量構成的矩陣U,因此有重點來了U是有特征向量構成的正定陣,向量的每一行可以視為一個的基向量,這些基向量經過矩陣B轉換后,得到了在各個基向量上的伸縮,伸縮的大小即為特征向量。

第三步,主成分個數選擇,根據特征值的大小,將特征值較大的作為主成分,其對應的特征向量就為基向量,特征值的篩選根據實際情況而定,一般大於1即可考慮作為主成分。

3)實例分析——機器學習中的分類問題

  機器學習中的分類問題,給出178個葡萄酒樣本,每個樣本含有13個參數,比如酒精度、酸度、鎂含量等,這些樣本屬於3個不同種類的葡萄酒。任務是提取3種葡萄酒的特征,以便下一次給出一個新的葡萄酒樣本的時候,能根據已有數據判斷出新樣本是哪一種葡萄酒。

問題詳細描述:http://archive.ics.uci.edu/ml/datasets/Wine
訓練樣本數據:http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data

把數據集賦給一個17813列的矩陣R,它的協方差矩陣C1313列的矩陣,對C進行特征分解,對角化,其中U是特征向量組成的矩陣,D是特征之組成的對角矩陣,並按由大到小排列。然后,令,就實現了數據集在特征向量這組正交基上的投影。嗯,重點來了,中的數據列是按照對應特征值的大小排列的,后面的列對應小特征值,去掉以后對整個數據集的影響比較小。比如,現在我們直接去掉后面的7列,只保留前6列,就完成了降維。

  下面我們看一下降維前和降維后的使用svm分類結果,本部分采用實現SVMR語言包e1071,代碼如下表所示。分類結果顯示,使用主成分分析后的樣本和未進行主成分分析樣本的分類結果一樣。因此,主成分分析提取的6個主成分能較好的表達原樣本的13個變量。

library("e1071")
#讀取數據
wineData=read.table("E:\\research in progress\\百度雲同步盤\\blog\\特征值和特征向量\\data.csv",header=T,sep=",");

#計算協方差陣
covariance = cov(wineData[2:14])

#計算特征值和特征向量
eigenResult=eigen(covariance)

#選取6個主成分,並計算這6個主成分解釋的方差總和
PC_NUM = 6
varSum=sum(eigenResult$values[1:PC_NUM])/sum(eigenResult$values)

#降維后的樣本
ruduceData= data.matrix(wineData[2:14])%*%eigenResult$vectors[,1:PC_NUM]

#加入分類標簽
#finalData=cbind(wineData$class,ruduceData)

#給finalData添加列名
#colnames(finalDat) =c("calss","pc1","pc2","pc3","pc4","pc5","pc6")

#訓練樣本--主成分分析后的樣本作為訓練樣本
y=wineData$class;
x1=ruduceData;
model1 <- svm(x1, y,cross=10)
pred1 <- predict(model1, x1)
#pred1 <- fitted(model1)
table(pred1, y) #使用table來查看預測結果

#訓練樣本--原數據作為訓練樣本
x2=wineData[2:14]
model2 <- svm(x2, y,cross=10)
#pred2 <- predict(model2, x2)
pred2 <- fitted(model2)
table(pred2, y) #使用table來查看預測結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM