matlab協方差矩陣計算函數


一、協方差矩陣的定義及其計算公式

  協方差矩陣在機器學習中經常用到,查看wiki:http://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5 可知協方差矩陣的具體計算公式如下:

統計學概率論中,協方差矩陣是一個矩陣,其每個元素是各個向量元素之間的協方差。這是從標量隨機變量到高維度隨機向量的自然推廣。

假設X是以n個標量隨機變量組成的列向量

X = \begin{bmatrix}X_1 \\  \vdots \\ X_n \end{bmatrix}

並且\mu_i是其第i個元素的期望值,即, \mu_i = \mathrm{E}(X_i)。協方差矩陣被定義的第i,j項是如下:

\Sigma_{ij}
= \mathrm{cov}(X_i, X_j) = \mathrm{E}\begin{bmatrix}
(X_i - \mu_i)(X_j - \mu_j)
\end{bmatrix}

即:

\Sigma=\mathrm{E}
\left[
 \left(
 \textbf{X} - \mathrm{E}[\textbf{X}]
 \right)
 \left(
 \textbf{X} - \mathrm{E}[\textbf{X}]
 \right)^\top
\right]
=
\begin{bmatrix}
 \mathrm{E}[(X_1 - \mu_1)(X_1 - \mu_1)] & \mathrm{E}[(X_1 - \mu_1)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_1 - \mu_1)(X_n - \mu_n)] \\ \\
 \mathrm{E}[(X_2 - \mu_2)(X_1 - \mu_1)] & \mathrm{E}[(X_2 - \mu_2)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_2 - \mu_2)(X_n - \mu_n)] \\ \\
 \vdots & \vdots & \ddots & \vdots \\ \\
 \mathrm{E}[(X_n - \mu_n)(X_1 - \mu_1)] & \mathrm{E}[(X_n - \mu_n)(X_2 - \mu_2)] & \cdots & \mathrm{E}[(X_n - \mu_n)(X_n - \mu_n)]
\end{bmatrix}

矩陣中的第(i,j)個元素是X_iX_j的協方差。這個概念是對於標量隨機變量方差的一般化推廣。

 

二、理解的關鍵

  1、理解的關鍵是兩個隨機變量x1,x2的協方差如何計算,有cov(x1,x2) = E{[(x1-E(x1)][x2-E(x2)]},對於離散的隨機變量x1,x2,協方差矩陣描述的x1,x2相互聯系的偏差,所以兩個隨機變量是一一對應的,即假設有m個樣本值,則分別為(x11,x21),(x12,x22),(x13,x23),...(x1m,x2m),這便可以寫成一個2*m的矩陣的形式。則x1,x2協方差表示的是兩個隨機變量對應的樣本值分別都減去各自均值后的乘積的均值(因為無偏性估計的緣故,除以的不是m而是m-1);

  2、所以對於一個n*m的樣本矩陣,得出的協方差矩陣C是n*n的矩陣,協方差矩陣每個元素Cij表示的隨機變量xi,xj的協方差。所以協方差矩陣是一個對稱矩陣,且對角線上元素為每個隨機變量的方差(如果是信號的話可以看成是能量);如果各個變量相關性很小的話,互相的協方差接近0,即協方差矩陣基本上為對角陣;

  3、可以證明,協方差矩陣是非負定矩陣,這可以有非負定矩陣的定義得到;(參考北京大學出版社《多元統計分析》)

  4、同樣地,為了表示各個隨機變量相關性到底有多大,可以引入相關性矩陣。

三、matlab計算公式:

  matlab中有一個計算協方差矩陣的函數cov,從其help中可知,該函數的輸入為一個m*n的矩陣X,其定義和wiki上的定義相反,每一行表示一個隨機向量,即有n個隨機變量。如果將一個隨機向量看成一個模式的特征向量的話,那么該矩陣表示該模式的一個特征向量用n個特征表示,共有m個特征向量,即有m個樣本。

根據matlab中的help文檔的cov函數介紹寫一個類似的函數:

 1 function cov = covariance(X)
 2 % 由隨機變量樣本矩陣計算協方差矩陣
 3 %---- 輸入:    
 4 % X:     M*N的樣本矩陣,其中一行表示一個隨機向量樣本
 5 %       共有M個隨機樣本
 6 %---- 輸出:
 7 % cov:   N*N的協方差矩陣,表示各個隨機變量的協方差
 8 %---- 計算方法
 9 % 隨機變量均值用樣本均值統計量估計:X_mean = 1/N*ΣXi;
10 % 隨機變量方差用樣本方差統計量估計:S = 1/(N-1)*Σ(Xi-X_mean)^2
11 % 隨機變量協方差可以用如下統計量估計:C = 1/(N-1)*Σ(Xi-X_mean)(Yi-Y_mean)
12 
13 % 各個樣本減去其平均值
14 % X = bsxfun(@minus,X,mean(X));
15 %或者:
16 %X = X-repmat(mean(X),size(X,1),1);
17 cov = 1/(size(X,1)-1)*X'*X;

 


免責聲明!

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



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