散布矩阵(scatter matrix)是用于描述多元数据集合中各个变量之间关系的一种矩阵。在统计学和机器学习中,散布矩阵通常用于分析数据的方差、协方差和相关性等特征。
给定一个包含 n n n 个观测值的多元数据集合,其中每个观测值包含 d d d 个变量(或特征),则该多元数据集合的散布矩阵是一个 d × d d\times d d×d 的矩阵,其中每个元素表示相应变量之间的协方差。设 X X X 是一个 n × d n\times d n×d 的数据矩阵,其中每一行表示一个观测值,每一列表示一个变量,则该多元数据集合的散布矩阵 S S S 可以表示为:
S = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) ( x i − x ˉ ) T S = \frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})(x_i-\bar{x})^T S=n−11i=1∑n(xi−xˉ)(xi−xˉ)T
其中, x ˉ \bar{x} xˉ 是数据矩阵 X X X 每一列的均值向量, x i x_i xi 是数据矩阵 X X X 的第 i i i 行向量, T ^T T 表示向量的转置操作。
散布矩阵可以用于计算多元数据集合的协方差矩阵和相关矩阵等统计量,进而进行数据分析和机器学习模型的建立和评估。
散布矩阵的计算
给定一个包含 n n n 个二维坐标的数据集合,其中每个坐标记为 ( x i , y i ) (x_i, y_i) (xi,yi),则该数据集合的散布矩阵可以按照如下步骤计算:
计算每个坐标的均值向量 x ˉ = ( x ˉ 1 x ˉ 2 ) \bar{x} = \begin{pmatrix} \bar{x}_1 \ \bar{x}_2 \end{pmatrix} xˉ=(xˉ1 xˉ2),其中 x ˉ 1 \bar{x}_1 xˉ1 和 x ˉ 2 \bar{x}_2 xˉ2 分别表示所有 x x x 坐标和所有 y y y 坐标的平均值。
构造 2 × 2 2\times 2 2×2 的零矩阵 S = ( 0 0 0 0 ) S = \begin{pmatrix} 0 & 0 \ 0 & 0 \end{pmatrix} S=(00 00),作为散布矩阵的初始值。
对于每个坐标 ( x i , y i ) (x_i, y_i) (xi,yi),计算其与均值向量的差向量 v i = ( x i − x ˉ 1 y i − x ˉ 2 ) v_i = \begin{pmatrix} x_i - \bar{x}_1 \ y_i - \bar{x}_2 \end{pmatrix} vi=(xi−xˉ1 yi−xˉ2),然后将其外积(即 v i v i T v_i v_i^T viviT)加到散布矩阵 S S S 上。
最终得到的散布矩阵 S S S 即为所求。
具体地,散布矩阵的计算公式为:
S = 1 n − 1 ∑ i = 1 n ( v i v i T ) = 1 n − 1 ∑ i = 1 n ( x i − x ˉ 1 y i − x ˉ 2 ) ( x i − x ˉ 1 y i − x ˉ 2 ) S = \frac{1}{n-1}\sum_{i=1}^{n}(v_i v_i^T) = \frac{1}{n-1}\sum_{i=1}^{n}\begin{pmatrix} x_i - \bar{x}_1 \ y_i - \bar{x}_2 \end{pmatrix}\begin{pmatrix} x_i - \bar{x}_1 & y_i - \bar{x}_2 \end{pmatrix} S=n−11i=1∑n(viviT)=n−11i=1∑n(xi−xˉ1 yi−xˉ2)(xi−xˉ1yi−xˉ2)
其中, v i v i T v_i v_i^T viviT 表示向量 v i v_i vi 的外积, 1 n − 1 \frac{1}{n-1} n−11 是修正系数,以保证散布矩阵能够无偏估计数据集合的协方差矩阵。
利用散布矩阵计算协方差矩阵
协方差矩阵描述了多元数据集合中各个变量之间的协方差关系,可以用散布矩阵来计算。
假设有一个包含 n n n 个观测值,每个观测值包含 d d d 个变量的数据集合,其中数据矩阵为 X X X,每个变量的均值向量为 x ˉ \bar{x} xˉ,则该数据集合的协方差矩阵 Σ \Sigma Σ 可以用散布矩阵 S S S 来计算,公式为:
Σ = 1 n − 1 S S T \Sigma = \frac{1}{n-1}SS^T Σ=n−11SST
其中, S S S 是数据集合的散布矩阵, S T S^T ST 是 S S S 的转置矩阵, 1 n − 1 \frac{1}{n-1} n−11 是修正系数,以保证协方差矩阵能够无偏估计数据集合的协方差矩阵。
具体地,可以按照以下步骤计算协方差矩阵:
计算数据集合的散布矩阵 S S S,按照前面的方法计算。
计算 S S S 的转置矩阵 S T S^T ST。
计算协方差矩阵 Σ = 1 n − 1 S S T \Sigma = \frac{1}{n-1}SS^T Σ=n−11SST。
例子
现有下列训练样本,请用PCA算法将2维特征降为1维,并画出
训练样本和投影主轴以及投影后的样本点。(2,0)的转置,(2,1)的转置,(3,0)的转置,(4,2)的转置,(3,2)的转置,(4,1)的转置
对于一个包含 n n n 个二维坐标的数据集合,可以先计算该数据集合的散布矩阵 S S S,然后按照上述公式计算出该数据集合的协方差矩阵 Σ \Sigma Σ。 Σ \Sigma Σ 的对角线元素即为各个变量的方差,非对角线元素则表示两个变量之间的协方差。
PCA算法可以将具有高维特征的数据集转换为低维特征的数据集,以便更好地进行可视化、分类或聚类等操作。下面是将给定的2维训练样本降为1维的步骤:
对训练样本进行中心化,即将每个特征的均值减去该特征的平均值,得到新的训练样本 X X X。
计算训练样本的协方差矩阵 C = 1 n − 1 X X T C = \frac{1}{n-1}XX^T C=n−11XXT,其中 n n n 是训练样本的数量。
对协方差矩阵 C C C 进行特征值分解,得到特征值和特征向量。将特征向量按照对应的特征值大小进行排序,得到主成分方向。
取最大的特征值对应的特征向量作为主成分方向 v v v。
将训练样本投影到主成分方向上,得到新的一维特征向量 y = v X y = vX y=vX。
下面是具体的计算步骤:
首先,将给定的2维训练样本中心化,得到新的训练样本:
X = ( 10 9 10 11 0 1 0 − 1 1 0 − 1 0 9 10 11 10 ) − ( 5.5 5 ) = ( 4.5 3.5 4.5 5.5 − 5.5 − 4.5 − 5.5 − 6.5 − 4 − 5 − 6 − 5 4 5 6 5 ) X = \begin{pmatrix} 10 & 9 & 10 & 11 & 0 & 1 & 0 & -1 \ 1 & 0 & -1 & 0 & 9 & 10 & 11 & 10 \end{pmatrix} - \begin{pmatrix} 5.5 \ 5 \end{pmatrix} = \begin{pmatrix} 4.5 & 3.5 & 4.5 & 5.5 & -5.5 & -4.5 & -5.5 & -6.5 \ -4 & -5 & -6 & -5 & 4 & 5 & 6 & 5 \end{pmatrix} X=(1091011010−1 10−109101110)−(5.5 5)=(4.53.54.55.5−5.5−4.5−5.5−6.5 −4−5−6−54565)
然后,计算训练样本的协方差矩阵:
C = 1 7 X X T = ( 10.3929 − 9.6071 − 9.6071 10.3929 ) C = \frac{1}{7}XX^T = \begin{pmatrix} 10.3929 & -9.6071 \ -9.6071 & 10.3929 \end{pmatrix} C=71XXT=(10.3929−9.6071 −9.607110.3929)
对协方差矩阵进行特征值分解,得到特征值和特征向量:
( 10.3929 − 9.6071 − 9.6071 10.3929 ) ( 1 − 1 ) = 20 ( 1 − 1 ) \begin{pmatrix} 10.3929 & -9.6071 \ -9.6071 & 10.3929 \end{pmatrix} \begin{pmatrix} 1 \ -1 \end{pmatrix} = 20\begin{pmatrix} 1 \ -1 \end{pmatrix} (10.3929−9.6071 −9.607110.3929)(1 −1)=20(1 −1)
( 10.3929 − 9.6071 − 9.6071 10.3929 ) ( 1 1 ) = 0 ( 1 1 ) \begin{pmatrix} 10.3929 & -9.6071 \ -9.6071 & 10.3929 \end{pmatrix} \begin{pmatrix} 1 \ 1 \end{pmatrix} = 0\begin{pmatrix} 1 \ 1 \end{pmatrix} (10.3929−9.6071 −9.607110.3929)(1 1)=0(1 1)
特征值为 20 20 20 和 0 0 0,对应的特征向量为 ( 1 − 1 ) \begin{pmatrix} 1 \ -1 \end{pmatrix} (1 −1) 和 ( 1 1 ) \begin{pmatrix} 1 \ 1 \end{pmatrix} (1 1)。由于特征值 20 20 20 对应的特征向量 ( 1 − 1 ) \begin{pmatrix} 1 \ -1 \end{pmatrix} (1 −1) 是最大的特征值对应的特征向量,因此将其作为主成分方向 v v v。
将训练样本投影到主成分方向上,得到新的一维特征向量 y = v X y = vX y=vX:
y = ( 1 − 1 ) T ( 4.5 3.5 4.5 5.5 − 5.5 − 4.5 − 5.5 − 6.5 − 4 − 5 − 6 − 5 4 5 6 5 ) = ( 8 − 8 ) y = \begin{pmatrix} 1 \ -1 \end{pmatrix}^T \begin{pmatrix} 4.5 & 3.5 & 4.5 & 5.5 & -5.5 & -4.5 & -5.5 & -6.5 \ -4 & -5 & -6 & -5 & 4 & 5 & 6& 5 \end{pmatrix} = \begin{pmatrix} 8 \ -8 \end{pmatrix} y=(1 −1)T(4.53.54.55.5−5.5−4.5−5.5−6.5 −4−5−6−54565)=(8 −8)