######################################################## 因子分析 ######################################################## 原始空间的基向量用 :math:`\vec{i}=[1,0]^T,\vec{j}=[0,1]^T` 表示,它们的模都是 :math:`1`,定义为单位向量。 原始空间的向量可以用这组基底的线性组合表示,比如 :math:`\vec{\nu} = x\vec{i}+y\vec{j}=[x,y]^T` 。 矩阵和向量相乘,可以看做是对向量的线性变换, 矩阵的列是线性变换后新的基向量在原空间的位置, .. warning:: 1. 这个新的基向量(矩阵的列向量)仍然是用原空间的基向量 :math:`\vec{i},\vec{j}` 描述的。 2. 变换后的向量的坐标数值(结果向量的值)也是表示原空间的坐标。 3. 如何得到基于新基向量的坐标值呢? .. math:: A = :math:`m\times n` 的矩阵 :math:`A`,:math:`n` 表示变换后的 :math:`n` 个基向量, 但是这 :math:`n` 个基向量本身是定义在 :math:`m` 维的空间中的。 一个向量 :math:`\vec{\nu}` - 当 :math:`m=n` 时,可以认为变换前后是同一个维度的空间,这意味这个变换仅仅是旋转和拉伸操作,维度没有变化。 - 当 :math:`mn` 时,:math:`A` 列空间( :math:`n` 维)是在一个更高维的行空间( :math:`m` 维)中, 列空间的基是用更高维的行空间描述的。列空间的原始向量 :math:`\vec{\nu}` 用新的基底(:math:`A` 的列向量)去 假设在原始平面空间 :math:`O_0` 中的一个向量为 :math:`\vec{\nu}=[1,1]^T` ,现在定义一个 :math:`m` 行 :math:`n` 列的矩阵 :math:`A` 对向量 :math:`\vec{\nu}` 进行线性变换, 其中 :math:`m=3,n=2`,矩阵 :math:`A` 具体为 .. math:: A = \begin{bmatrix} 2 & 0 \\ 0 & 2 \\ 1 & 1 \end{bmatrix} 矩阵 :math:`A` 的两列 :math:`A_{c0}=[2,0,1]^T,A_{c1}=[0,2,1]` 描述了两个向量, 单独看这两个向量,它们是三维空间中的两个向量。 可以在脑海里想象出三位空间中,从原点出发的两个箭头。 现在要用这两个向量(箭头):math:`A_{c0},A_{c1}` 去转换平面 :math:`O_0` 上的一个向量 :math:`\vec{\nu}` 。可以想象如下过程, 1. 通过平移,让 :math:`A_{c0},A_{c1}` 的顶端(箭头位置)落在平面 :math:`O_0` 上。 落点在平面 :math:`O_0` 的位置分别是 :math:`A_{c0} \rightarrow [2,0]^T,A_{c1} \rightarrow [0,2]^T`。 2. 我们用符号 :math:`c_0,c_1` 分别表示这两个落点,它们在平面 :math:`O_0` 上的坐标分别是 :math:`c_0=[2,0]^T,c_1=[0,2]^T`。 把这两个落点分别看成是平面 :math:`O_0` 上的两个新的基向量,记作 :math:`\vec{c_0},\vec{c_1}`。 3. 然后 表示两个新的基向量的的坐标,因为只有两列(两个点,两个基向量),它俩张成的空间是一个平面空间。 因为用矩阵 :math:`A` 对向量 :math:`\vec{\nu}` 进行线下变换, 所以可以认为矩阵 :math:`A` 的列所张成的空间就是 :math:`\vec{\nu}` 的原始平面空间, :math:`A_{c0},A_{c1}` 的前 :math:`2` 行元素,:math:`[2,0]^T,[0,2]^T`,就是新的基向量在原始平面空间的坐标。