java 协方差矩阵_协方差矩阵概念(易理解)
一、統(tǒng)計學(xué)的基本概念
統(tǒng)計學(xué)里最基本的概念就是樣本的均值、方差、標(biāo)準(zhǔn)差。首先,我們給定一個含有n個樣本的集合,下面給出這些概念的公式描述:
均值:
標(biāo)準(zhǔn)差:
方差:
均值描述的是樣本集合的中間點(diǎn),它告訴我們的信息是有限的,而標(biāo)準(zhǔn)差給我們描述的是樣本集合的各個樣本點(diǎn)到均值的距離之平均。
以這兩個集合為例,[0, 8, 12, 20]和[8, 9, 11, 12],兩個集合的均值都是10,但顯然兩個集合的差別是很大的,計算兩者的標(biāo)準(zhǔn)差,前者是8.3后者是1.8,顯然后者較為集中,故其標(biāo)準(zhǔn)差小一些,標(biāo)準(zhǔn)差描述的就是這種“散布度”。之所以除以n-1而不是n,是因?yàn)檫@樣能使我們以較小的樣本集更好地逼近總體的標(biāo)準(zhǔn)差,即統(tǒng)計上所謂的“無偏估計”。而方差則僅僅是標(biāo)準(zhǔn)差的平方。
二、為什么需要協(xié)方差
標(biāo)準(zhǔn)差和方差一般是用來描述一維數(shù)據(jù)的,但現(xiàn)實(shí)生活中我們常常會遇到含有多維數(shù)據(jù)的數(shù)據(jù)集,最簡單的是大家上學(xué)時免不了要統(tǒng)計多個學(xué)科的考試成績。面對這樣的數(shù)據(jù)集,我們當(dāng)然可以按照每一維獨(dú)立的計算其方差,但是通常我們還想了解更多。比如,一個男孩子的猥瑣程度跟他受女孩子的歡迎程度是否存在一些聯(lián)系。協(xié)方差就是這樣一種用來度量兩個隨機(jī)變量關(guān)系的統(tǒng)計量,我們可以仿照方差的定義:
來度量各個維度偏離其均值的程度,協(xié)方差可以這樣來定義:
協(xié)方差的結(jié)果有什么意義呢?
直觀上來看,協(xié)方差表示的是兩個變量總體誤差的方差,這與只表示一個變量誤差的方差不同。
如果兩個變量的變化趨勢一致,也就是說如果其中一個大于自身的期望值,另外一個也大于自身的期望值,那么兩個變量之間的協(xié)方差就是正值。
如果兩個變量的變化趨勢相反,即其中一個大于自身的期望值,另外一個卻小于自身的期望值,那么兩個變量之間的協(xié)方差就是負(fù)值。
如果結(jié)果為正值,則說明兩者是正相關(guān)的(從協(xié)方差可以引出“相關(guān)系數(shù)”的定義),也就是說一個人越猥瑣越受女孩歡迎。如果結(jié)果為負(fù)值, 就說明兩者是負(fù)相關(guān),越猥瑣女孩子越討厭。如果為0,則兩者之間沒有關(guān)系,猥瑣不猥瑣和女孩子喜不喜歡之間沒有關(guān)聯(lián),就是統(tǒng)計上說的“相互獨(dú)立”。
從協(xié)方差的定義上我們也可以看出一些顯而易見的性質(zhì),如:
三、協(xié)方差矩陣
前面提到的猥瑣和受歡迎的問題是典型的二維問題,而協(xié)方差也只能處理二維問題,那維數(shù)多了自然就需要計算多個協(xié)方差,比如n維的數(shù)據(jù)集就需要計算個協(xié)方差,那自然而然我們會想到使用矩陣來組織這些數(shù)據(jù)。給出協(xié)方差矩陣的定義:
這個定義還是很容易理解的,我們可以舉一個三維的例子,假設(shè)數(shù)據(jù)集有三個維度,則協(xié)方差矩陣為:
可見,協(xié)方差矩陣是一個對稱的矩陣,而且對角線是各個維度的方差。
四、Matlab協(xié)方差實(shí)戰(zhàn)
必須要明確一點(diǎn),協(xié)方差矩陣計算的是不同維度之間的協(xié)方差,而不是不同樣本之間的。以下的演示將使用Matlab,為了說明計算原理,不直接調(diào)用Matlab的cov函數(shù):
首先,隨機(jī)生成一個10*3維的整數(shù)矩陣作為樣本集,10為樣本的個數(shù),3為樣本的維數(shù)。
圖 1 使用Matlab生成樣本集
根據(jù)公式,計算協(xié)方差需要計算均值,前面特別強(qiáng)調(diào)了,協(xié)方差矩陣是計算不同維度之間的協(xié)方差,要時刻牢記這一點(diǎn)。樣本矩陣的每行是一個樣本,每列是一個維度,因此我們要按列計算均值。為了描述方便,我們先將三個維度的數(shù)據(jù)分別賦值:
圖 2 將三個維度的數(shù)據(jù)分別賦值
計算dim1與dim2,dim1與dim3,dim2與dim3的協(xié)方差:
圖 3 計算三個協(xié)方差
協(xié)方差矩陣的對角線上的元素就是各個維度的方差,下面我們依次計算這些方差:
圖 4 計算對角線上的方差
這樣,我們就得到了計算協(xié)方差矩陣所需要的所有數(shù)據(jù),可以調(diào)用Matlab的cov函數(shù)直接得到協(xié)方差矩陣:
圖 5 使用Matlab的cov函數(shù)直接計算樣本的協(xié)方差矩陣
計算的結(jié)果,和之前的數(shù)據(jù)填入矩陣后的結(jié)果完全相同。
Update:今天突然發(fā)現(xiàn),原來協(xié)方差矩陣還可以這樣計算,先讓樣本矩陣中心化,即每一維度減去該維度的均值,使每一維度上的均值為0,然后直接用新的到的樣本矩陣乘上它的轉(zhuǎn)置,然后除以(N-1)即可。其實(shí)這種方法也是由前面的公式通道而來,只不過理解起來不是很直觀,但在抽象的公式推導(dǎo)時還是很常用的!同樣給出Matlab代碼實(shí)現(xiàn):
X = MySample - repmat(mean(MySample),10,1); % 中心化樣本矩陣,使各維度均值為0
C = (X'*X)./(size(X,1)-1);
總結(jié)
理解協(xié)方差矩陣的關(guān)鍵就在于牢記它計算的是不同維度之間的協(xié)方差,而不是不同樣本之間,拿到一個樣本矩陣,我們最先要明確的就是一行是一個樣本還是一個維度,心中明確這個整個計算過程就會順流而下,這么一來就不會迷茫了~
五、總結(jié)
理解協(xié)方差矩陣的關(guān)鍵就在于牢記它的計算是不同維度之間的協(xié)方差,而不是不同樣本之間。拿到一個樣本矩陣,最先要明確的就是一行是一個樣本還是一個維度,心中明確整個計算過程就會順流而下,這么一來就不會迷茫了。
總結(jié)
以上是生活随笔為你收集整理的java 协方差矩阵_协方差矩阵概念(易理解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机应用知识试题 上学吧,自考计算机应
- 下一篇: python+vue税务申报系统