2.3 数据矩阵
列方向数据矩阵X(n行,q列)每一行看作是一个观察点,每一列代表一个维度;即X数据矩阵为q元随机数矩阵,有n个观察点。图2.12展示三维直角坐标系中三维数据(q = 3)。必须指出,虽然数据在直角坐标系中呈现,但这并不意味着数据列向量正交,即列方向线性相关性为0。数据列向量之间相关性要借助统计学工具来确定。
图2.12 在三维直角坐标系表达X
为配合MATLAB矩阵运算,本书一般采用列方向数据矩阵形式。请读者注意,很多文献采用行方向数据矩阵X,将每一行代表一个维度,而每一列代表一个观察点。列方向数据矩阵X(n行,q列)转置便得到行方向数据矩阵XT(q行,n列)。
一元数据x1均值(中位数或众数)、方差(或均方差)、分位点、偏度和峰度为常见的几个统计学特征,如图2.13所示。
图2.13 数据x1统计学特点
数据x1期望值E(x1),即均值,可以通过下式求得:
其中,l为全1列向量,列数和x1一致;E() 计算期望。x1期望值E(x1)便是x1数据中心,去中心化列向量通过下式获得:
其中,llT为l向量和其转置lT乘积;为中心化计算矩阵。
如果x1为总体,数据x1方差通过下式获得:
如果x1为样本,数据x1方差通过下式获得:
多列向量数据矩阵X期望值E(X)通过下式计算获得:
整理上式得到两个等式:
对于列方向数据矩阵X,下式获得去中心化数据矩阵:
其中,l为全1列向量,和X有相同行数。
X列向量总体方差-协方差矩阵通过下式计算获得:
X列向量样本方差-协方差矩阵通过下式计算获得:
下面用两元数据来看一下几个常见数据统计学性质。对于两个维度数据,协方差研究它们之间线性相关性。比如图2.14中x1和x2这两例数据,下式计算获得两者总体协方差和样本协方差:
图2.14 数据x1和x2统计学特点
丛书第三册数学部分介绍过向量内积和数据方差、协方差存在诸多相似性,这种现象又叫作余弦相似性(cosine similarity)。x1和x2方差-协方差矩阵(variance-covariance matrix)如下:
Σ包含有关数据大量统计学信息,如图2.14所示。下面用之前讲到特征值分解和SVD分解对数据本身和方差-协方差矩阵做进一步分析。
方差-协方差矩阵Σ特征值分解得到如下等式:
V包含着两个特征向量v1和v2,即V = [v1, v2];Λ为特征值矩阵,具体如下:
v1和v2为正交系,λ1和λ2为数据在v1和v2方向上方差。若x1和x2线性相关系数为0,则x1和x2正交,如下例:
x1方差为5,x2方差为1。用mvnrnd() 函数生成1000个中心位于原点,满足如上方差-协方差关系二元随机数组,如图2.15所示。图2.15绘制v1和v2两个特征向量。图中v1和v2这两个向量长度正比于数据在这两个维度上均方差,即特征值平方根。请读者回顾丛书第三册第2章介绍的马哈距离(Mahalanobis distance, Mahal distance)。
图2.15 二元随机数组(方差-协方差矩阵为[5, 0; 0, 1],中心位于原点)
对二元随机数矩阵X = [x1, x2] 进行奇异值SVD分解:
其中,矩阵V形状为2×2。不考虑随机数数据数量影响,或特征值从大到小或者从小到大排列问题,SVD分解得到的方阵V和特征值分解得到的V一致。
若方差-协方差矩阵Σ取值如下:
x1方差为1,x2方差为5,两者线性无关。图2.16展示用mvnrnd() 函数生成1000个中心位于原点,满足如上方差-协方差关系二元随机数,以及v1和v2两个特征向量。
图2.16 二元随机数组(方差-协方差矩阵为[1, 0; 0, 5],中心位于原点)
若方差-协方差矩阵Σ取值如下:
x1和x2方差均为3,两者线性相关系数大于0。图2.17展示1000个二元随机数,中心位于原点,满足如上方差-协方差关系。图2.17同时给出v1和v2两个特征向量。特征值分解Σ得到:
图2.17 二元随机数组(方差-协方差矩阵为[3, 2; 2, 3],中心位于原点)
沿着v2(= [-0.7071; 0.7071])和v1(= [0.7071; 0.7071])两个特征向量方向,数据方差值分别为1和5;换句话说,以上特征值大小描述新正交空间中各个方向数据分散集中程度。
若方差-协方差矩阵Σ取值如下:
x1和x2同样均为3,两者线性相关系数小于0。特征值分解Σ得到:
同样得到,沿着v2(= [0.7071; 0.7071])和v1(= [0.7071; -0.7071])两个特征向量方向,数据方差值分别为1和5,如图2.18所示。如下代码获得图2.15~图2.18:
B4_Ch1_3.m clc; clear all; close all SIGMA = [5,0;0,1]; % SIGMA = [1,0;0,5]; % SIGMA = [3,2;2,3]; % SIGMA = [3,-2;-2,3]; num = 1000; X = mvnrnd([0,0],SIGMA,num); sigma = cov(X) [V_eig_original,LAMBDA_eig_original] = eig(SIGMA) [V_eig,LAMBDA_eig] = eig(sigma); [V_pca,Z,LAMBDA_pca] = pca(X); V_PC1 = V_pca(:,1)*sqrt(LAMBDA_pca(1)); V_PC2 = V_pca(:,2)*sq rt(LAMBDA_pca(2)); centers = mean(X); center_x = centers(1); center_y = centers(2); figure(1) plot(X(:,1),X(:,2),'.'); hold on plot(center_x,center_y,'ok') h = quiver(center_x,center_y,V_PC1(1),V_PC1(2)); h.AutoScaleFactor = 3; h = quiver(center_x,center_y,V_PC2(1),V_PC2(2)); h.AutoScaleFactor = 3; daspect([1, 1,1]); xlim([-8,8]); ylim([-8,8]); xlabel('x_1'); ylabel('x_2')
图2.18 二元随机数组,方差-协方差矩阵为[3, 2; 2, 3],中心位于原点
上述分析思路同样适用于多维数据。如图2.19所示,三维数据SVD分解或者PCA分析,相当于对原始数据进行正交化(orthogonalization)。这种正交化数据分析思路广泛应用在主元分析、正交回归、主元回归、因素分析等算法,丛书后文将会结合具体实例展开讲解。
图2.19 三维数据 相关性关系及正交化
这一小节最后,我们聊一聊数据矩阵线性变换(linear transformation)。X为列方向数据矩阵,f()为线性变换方程,X转化为列向量y。
其中,v为线性变换向量,b为常数。列向量y期望值E(y)和矩阵X期望值E(X)关系如下:
列向量y方差var(y)和矩阵X方差var(X)关系为:
var(X),即方差-协方差矩阵ΣX。
X为列方向数据矩阵X,而f() 为线性变换方程将X转化为矩阵Y,具体如下:
其中,V为线性变换矩阵,b为常数向量。矩阵Y期望向量E(Y)和矩阵X期望向量E(X)之间关系如下:
矩阵Y方差var(Y)和矩阵X方差var(X)关系如下:
上述性质常被称作期望线性性质(linearity of expectation)。
若数据矩阵X,每一行定义为一个维度,而每一列代表一个观察点。这种情况下,线性变换方程f()将X转化为行向量y。
其中,v为线性变换列向量,b为常数。行向量y期望E(y)和矩阵X期望E(X)之间关系如下:
行向量y方差var(y)和矩阵X方差var(X)关系如下:
如果X和Y均为行方向数据矩阵,而f() 为线性变换方程将X转化为矩阵Y,具体如下:
其中,V为线性变换矩阵,b为常数向量。矩阵Y期望E(Y)和矩阵X期望E(X)之间关系如下:
矩阵Y方差var(Y)和矩阵X方差var(X),即方差-协方差矩阵ΣX,之间关系如下:
很多读者可能会觉得这一部分内容过于理论化难于理解,事实确实如此,但是,这些线性性质和丛书之前讲到线性相关、Cholesky分解、特征值分解、SVD分解、PCA分析等内容之间有着密切联系。解开这些联系的钥匙将在下一节介绍。