http://www.cnblogs.com/chaosimple/p/3182157.html
http://blog.csdn.net/goodshot/article/details/8611178
一、統計學的基本概念
統計學里最基本的概念就是樣本的均值、方差、標准差。首先,我們給定一個含有n個樣本的集合,下面給出這些概念的公式描述:
均值描述的是樣本集合的中間點,它告訴我們的信息是有限的,而標准差給我們描述的是樣本集合的各個樣本點到均值的距離之平均。
以這兩個集合為例,[0, 8, 12, 20]和[8, 9, 11, 12],兩個集合的均值都是10,但顯然兩個集合的差別是很大的,計算兩者的標准差,前者是8.3后者是1.8,顯然后者較為集中,故其標准差小一些,標准差描述的就是這種“散布度”。之所以除以n-1而不是n,是因為這樣能使我們以較小的樣本集更好地逼近總體的標准差,即統計上所謂的“無偏估計”。而方差則僅僅是標准差的平方。
二、為什么需要協方差
標准差和方差一般是用來描述一維數據的,但現實生活中我們常常會遇到含有多維數據的數據集,最簡單的是大家上學時免不了要統計多個學科的考試成績。面對這樣的數據集,我們當然可以按照每一維獨立的計算其方差,但是通常我們還想了解更多,比如,一個男孩子的猥瑣程度跟他受女孩子的歡迎程度是否存在一些聯系。協方差就是這樣一種用來度量兩個隨機變量關系的統計量,我們可以仿照方差的定義:
來度量各個維度偏離其均值的程度,協方差可以這樣來定義:
協方差的結果有什么意義呢?如果結果為正值,則說明兩者是正相關的(從協方差可以引出“相關系數”的定義),也就是說一個人越猥瑣越受女孩歡迎。如果結果為負值, 就說明兩者是負相關,越猥瑣女孩子越討厭。如果為0,則兩者之間沒有關系,猥瑣不猥瑣和女孩子喜不喜歡之間沒有關聯,就是統計上說的“相互獨立”。
從協方差的定義上我們也可以看出一些顯而易見的性質,如:
三、協方差矩陣
前面提到的猥瑣和受歡迎的問題是典型的二維問題,而協方差也只能處理二維問題,那維數多了自然就需要計算多個協方差,比如n維的數據集就需要計算
個協方差,那自然而然我們會想到使用矩陣來組織這些數據。給出協方差矩陣的定義:
這個定義還是很容易理解的,我們可以舉一個三維的例子,假設數據集有三個維度,則協方差矩陣為:
可見,協方差矩陣是一個對稱的矩陣,而且對角線是各個維度的方差。
四、Matlab協方差實戰
必須要明確一點,協方差矩陣計算的是不同維度之間的協方差,而不是不同樣本之間的。以下的演示將使用Matlab,為了說明計算原理,不直接調用Matlab的cov函數:
首先,隨機生成一個10*3維的整數矩陣作為樣本集,10為樣本的個數,3為樣本的維數。
圖 1 使用Matlab生成樣本集
根據公式,計算協方差需要計算均值,前面特別強調了,協方差矩陣是計算不同維度之間的協方差,要時刻牢記這一點。樣本矩陣的每行是一個樣本,每列是一個維度,因此我們要按列計算均值。為了描述方便,我們先將三個維度的數據分別賦值:
圖 2 將三個維度的數據分別賦值
計算dim1與dim2,dim1與dim3,dim2與dim3的協方差:
圖 3 計算三個協方差
協方差矩陣的對角線上的元素就是各個維度的方差,下面我們依次計算這些方差:
圖 4 計算對角線上的方差
這樣,我們就得到了計算協方差矩陣所需要的所有數據,可以調用Matlab的cov函數直接得到協方差矩陣:
圖 5 使用Matlab的cov函數直接計算樣本的協方差矩陣
計算的結果,和之前的數據填入矩陣后的結果完全相同。
五、總結
理解協方差矩陣的關鍵就在於牢記它的計算是不同維度之間的協方差,而不是不同樣本之間。拿到一個樣本矩陣,最先要明確的就是一行是一個樣本還是一個維度,心中明確整個計算過程就會順流而下,這么一來就不會迷茫了。
http://blog.csdn.net/ybdesire/article/details/6270328
協方差的定義

對於一般的分布,直接代入E(X)之類的就可以計算出來了,但真給你一個具體數值的分布,要計算協方差矩陣,根據這個公式來計算,還真不容易反應過來。網上值得參考的資料也不多,這里用一個例子說明協方差矩陣是怎么計算出來的吧。
記住,X、Y是一個列向量,它表示了每種情況下每個樣本可能出現的數。比如給定

則X表示x軸可能出現的數,Y表示y軸可能出現的。注意這里是關鍵,給定了4個樣本,每個樣本都是二維的,所以只可能有X和Y兩種維度。所以


用中文來描述,就是:
協方差(i,j)=(第i列的所有元素-第i列的均值)*(第j列的所有元素-第j列的均值)
這里只有X,Y兩列,所以得到的協方差矩陣是2x2的矩陣,下面分別求出每一個元素:
所以,按照定義,給定的4個二維樣本的協方差矩陣為:
用matlab計算這個例子
z=[1,2;3,6;4,2;5,2]
cov(z)
ans =
2.9167 -0.3333
-0.3333 4.0000
可以看出,matlab計算協方差過程中還將元素統一縮小了3倍。所以,協方差的matlab計算公式為:
協方差(i,j)=(第i列所有元素-第i列均值)*(第j列所有元素-第j列均值)/(樣本數-1)
下面在給出一個4維3樣本的實例,注意4維樣本與符號X,Y就沒有關系了,X,Y表示兩維的,4維就直接套用計算公式,不用X,Y那么具有迷惑性的表達了。


(3)與matlab計算驗證
Z=[1 2 3 4;3 4 1 2;2 3 1 4]
cov(Z)
ans =
1.0000 1.0000 -1.0000 -1.0000
1.0000 1.0000 -1.0000 -1.0000
-1.0000 -1.0000 1.3333 0.6667
-1.0000 -1.0000 0.6667 1.3333
可知該計算方法是正確的。我們還可以看出,協方差矩陣都是方陣,它的維度與樣本維度有關(相等)。參考2中還給出了計算協方差矩陣的源代碼,非常簡潔易懂,在此感謝一下!
參考:
[1] http://en.wikipedia.org/wiki/Covariance_matrix
[2] http://www.cnblogs.com/cvlabs/archive/2010/05/08/1730319.html
http://www.cnblogs.com/cezorzhao/archive/2013/01/11/xiefangcha.html
在做數字圖像處理的時候,特別是PCA降維的時候,很多情況下要遇到協方差矩陣,其實一直糊里糊塗的不知道到底是個什么東西,
以下是我收集的網上資料做的整理和自己的一些理解。
統計學的基本概念
學過概率統計的孩子都知道,統計里最基本的概念就是樣本的均值,方差,或者再加個標准差。首先我們給你一個含有n個樣本的集合,依次給出這些概念的公式描述,這些高中學過數學的孩子都應該知道吧,一帶而過。
均值:

方差:

均值方差的意義我就不多說了,均值就是描述樣本總體水品的,班級平均分你總歸明白的吧。
方差呢就是描述樣本穩定性的,比如你的成績,一會兒全班第一,一會兒不及格,這就是方差很大。張三總是在班級前十,但也沒當過第一,這方差就比較小。
那么協方差到底是做什么用的呢?
我們一直在討論一個隨機變量的情況,一個隨機變量的均值,一個隨機變量的方差,當涉及到兩個隨機變量的時候,有時候我們要判定他們兩個的相關性,協方差的意義就在於此。
我們再回頭看方差的定義:

這是描述的一個隨機變量,
然后我們看看兩個隨機變量X,Y,協方差的定義如下:

明白了吧,協方差在描述兩個隨機變量之間的相關度。
基於以上理論,我們明白了協方差的意義。那么協方差矩陣又是做什么的呢?想象一下,兩個隨機變量X,Y我們可以用協方差表示,那么10個,20個,n個呢。協方差矩陣就產生了。定義n維隨機變量Xn=[X1,X2,X3,.....Xn-1,Xn];(其實相當於n個隨機變量的集合)
我們用協方差矩陣表示他們互相之間的協方差:

(式中Un表示Xn的均值)
明顯這是個對稱矩陣,第i行j列,或者j行i列的值,表示Xi與Xj的協方差。
好了,最后,我覺得理解協方差矩陣的關鍵點在於理解多維隨機變量,不同維度之間的協方差,對應起來就是協方差矩陣的元素。



![clip_image002[20] clip_image002[20]](/image/aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvNDA3NzAwLzIwMTMwNy8xMDE0NDUxMC0wZTBiZmZlZjFmODg0ZGJmYjk4NGJhNzk4ZmUwMWE5NC5naWY=.png)




