主成分分析实例,常用矩阵范数,最小二乘求解

主成分分析实例

假设在 R n \mathbb{R}^{n} Rn 空间中有m个点 { x ( 1 ) , ⋯ x ( m ) } \{x^{(1)}, \cdots x^{(m)}\} {x(1),x(m)} , 我们希望对这些点进行有损压缩。编码这些点的一种方式就是使用低维表示。编码函数, 根据输入返回编码 f ( x ) = c f(x) = c f(x)=c 我们也希望找到一个解码函数,给定编码重构输入 , x ≈ g ( f ( x ) ) x \approx g(f(x)) xg(f(x)).

PCA 由我们选择的解码函数而定。 我们使用矩阵乘法将编码映射回 R n \mathbb{R}^n Rn , 即 g ( c ) = D c g(c) = D c g(c)=Dc , 其中 D ∈ R n × l D \in \mathbb{R^{n \times l}} DRn×l 是定义解码矩阵。为了使问题有唯一解, 我们限制 D D D 中的所有列向量都有单位范数。PCA限制 D D D的列向量彼此正交

为了将这个基本想法变为我们能够实现的算法,首先我们需要明确如何根据每一个输入 x x x 得到一个最优编码 c ∗ c ^* c 。一个方法是最小化原始输入向量 x 和重构向量 g ( c ∗ ) g(c^*) g(c) 之间的距离。 我们使用范数来衡量它们间的距离。

使用 L 2 L^2 L2 范数
c ∗ = a r g c m i n ∣ ∣ x − g ( c ) ∣ ∣ 2 c^* = arg_c min ||x - g(c)||_2 c=argcminxg(c)2
可以用平方 L 2 L^2 L2 代替范数 L 2 L^2 L2 ,然后进行相关推导。
c ∗ = a r g c m i n ∣ ∣ x − g ( c ) ∣ ∣ 2 2 c^* = arg_c min ||x - g(c)||^2_2 c=argcminxg(c)22
由向量点积可以得出 g ( c ) T x = x T g ( c ) g(c)^Tx = x^Tg(c) g(c)Tx=xTg(c)
∣ ∣ x − g ( c ) ∣ ∣ 2 2 = ( x − g ( c ) ) T ( x − g ( c ) ) = x T x − 2 x T g ( c ) + g ( c ) T g ( c ) ||x - g(c)||^2_2= (x-g(c))^T(x-g(c))= x^Tx - 2x^Tg(c) + g(c)^Tg(c) xg(c)22=(xg(c))T(xg(c))=xTx2xTg(c)+g(c)Tg(c)
由于求最优参数 c ∗ c^* c 使得 ∣ ∣ x − g ( c ) ∣ ∣ 2 2 ||x - g(c)||^2_2 xg(c)22 最小 所以 与 x T x x^Tx xTx 无关。并且把 g ( c ) = D c g(c) = D c g(c)=Dc 进行带入得到
c ∗ = a r g c m i n − 2 x T D c + c T D T D c c^* = arg_cmin-2x^TDc + c^TD^TDc c=argcmin2xTDc+cTDTDc
由于 D D D 的正交性和单位范数约束 D T ⋅ D = I D^T\cdot D = I DTD=I,原式子简化为
c ∗ = a r g c m i n − 2 x T D c + c T c c^* = arg_cmin -2x^TDc + c^Tc c=argcmin2xTDc+cTc
由于凸函数在一阶导数上取得极小值,原式子对 c c c 求导 = 0 即可。
▽ c ( − 2 x T D c + c T c ) = 0 \triangledown_c(-2x^TDc + c^Tc) =0 c(2xTDc+cTc)=0
由于 ∇ ( a T x ) = ∇ ( x T a ) = a \nabla(\boldsymbol{a}^T\boldsymbol{x}) = \nabla(\boldsymbol{x}^T\boldsymbol{a}) = \boldsymbol{a} (aTx)=(xTa)=a 可以得到 ∇ ( ( D T x ) T c ) = D T x \nabla(\boldsymbol{(D^Tx)}^T\boldsymbol{c}) = \boldsymbol{D^Tx} ((DTx)Tc)=DTx

∇ ( x T x ) = 2 x \nabla(\boldsymbol{x}^T\boldsymbol{x}) = 2\boldsymbol{x} (xTx)=2x 得到 ∇ ( c T c ) = 2 c \nabla(\boldsymbol{c}^T\boldsymbol{c}) = 2\boldsymbol{c} (cTc)=2c

原式化简得到 c = D T x \boldsymbol{c} = \boldsymbol{D^{T}x} c=DTx

这样最优编码 x 只需要一个矩阵 - 向量乘法操作就可以了。 把 c 带入 得到 f ( x ) f(x) f(x),并且定义 PCA 重构操作 r ( x ) r(x) r(x)
f ( x ) = D T x r ( x ) = g ( f ( x ) ) = D D T x f(x) = \boldsymbol{D^{T}x} \quad r(x) = g(f(x)) = \boldsymbol{DD^{T}x} f(x)=DTxr(x)=g(f(x))=DDTx
下面需要挑选编码矩阵 D D D 。回顾最小化输入和重构之间 L 2 L^2 L2 距离。 因为是使用相同矩阵 D D D对所有点进行解码,不能再孤立地看待每个点。相反,必须最小化所有维数和所有点上的误差矩阵的 Frobenius 范数。
D ∗ = a r g D m i n ⁡ ∑ i , j ( x j i − r ( x ( i ) ) j ) 2   s u b j e c t   t o   D T D = I l \boldsymbol{D^*} = \operatorname{arg_{D}min}\sqrt{\sum_{i,j}(x_{j}^{i} -r(x^{(i)})_{j})^2} \, subject\,to\, D^TD = I_{l} D=argDmini,j(xjir(x(i))j)2 subjecttoDTD=Il

考虑 l = 1 l =1 l=1 。 我们写成矩阵形式,记为 X ∈ R m × n X \in R^{m \times n} XRm×n, 其中 X i , : = x ( i ) T X_{i,:} = x^{(i)^{T}} Xi,:=x(i)T
d ∗ = a r g d m i n ⁡ ∥ X − X d d T ∥ F 2    s u b j e c t    t o    d T d = 1 = a r g d m i n ⁡ T r ( ( X − X d d T ) T ( X − X d d T ) ) = a r g d m i n ⁡ T r ( X T X − X T X d d T − d d T X T X + d d T X T X d d T ) \boldsymbol{d^*} = \operatorname{arg_{d}min}\left \| X -Xdd^{T}\right \|^{2}_{F} \; subject\; to\; d^Td = 1 \\ = \operatorname{arg_{d}min} Tr((X- Xdd^T)^T(X -X dd^T)) \\ = \operatorname{arg_{d}min}Tr(X^TX - X^TXdd^T - dd^TX^TX + dd^TX^TXdd^T) d=argdminXXddTF2subjecttodTd=1=argdminTr((XXddT)T(XXddT))=argdminTr(XTXXTXddTddTXTX+ddTXTXddT)
去除不相关的项,并且合并相同的项 ,按照循环改变迹运算中相乘矩阵顺序不影响结果,所以 T r ( X T X d d T ) = T r ( d d T X T X ) Tr(X^TXdd^T) = Tr(dd^TX^TX) Tr(XTXddT)=Tr(ddTXTX)
= a r g d m i n ⁡ − 2 T r ( X T X d d T ) + T r ( d d T X T X d d T ) = a r g d m i n ⁡ − 2 T r ( X T X d d T ) + T r ( X T X d d T d d T ) =\operatorname{arg_{d}min} -2Tr(X^TXdd^T)+Tr(dd^TX^TXdd^T) \\ =\operatorname{arg_{d}min} -2Tr(X^TXdd^T)+Tr(X^TXdd^Tdd^T) =argdmin2Tr(XTXddT)+Tr(ddTXTXddT)=argdmin2Tr(XTXddT)+Tr(XTXddTddT)
增加限制条件 并且最小化- c 等于 最大化 c,原等式变为
= a r g d m i n ⁡ − 2 T r ( X T X d d T ) + T r ( X T X d d T )    s u b j e c t    t o    d T d = 1 = a r g d m i n ⁡ − T r ( X T X d d T )    s u b j e c t    t o    d T d = 1 = a r g d m a x ⁡ T r ( X T X d d T )    s u b j e c t    t o    d T d = 1 = a r g d m a x ⁡ T r ( d T X T X d )    s u b j e c t    t o    d T d = 1 =\operatorname{arg_{d}min} -2Tr(X^TXdd^T)+Tr(X^TXdd^T) \; subject\; to\; d^Td = 1 \\ =\operatorname{arg_{d}min} -Tr(X^TXdd^T) \; subject\; to\; d^Td = 1 \\ = \operatorname{arg_{d}max} Tr(X^TXdd^T)\; subject\; to\; d^Td = 1 \\ = \operatorname{arg_{d}max} Tr(d^{T}X^TXd)\; subject\; to\; d^Td = 1 =argdmin2Tr(XTXddT)+Tr(XTXddT)subjecttodTd=1=argdminTr(XTXddT)subjecttodTd=1=argdmaxTr(XTXddT)subjecttodTd=1=argdmaxTr(dTXTXd)subjecttodTd=1
因为 d 的维度 是 n ∗ 1 n * 1 n1 X 的维度是 m ∗ n m * n mn 。 我们可以得出 d T X T X d d^{T}X^TXd dTXTXd 的维度是 1 ∗ n × n ∗ m × m ∗ n × n ∗ 1 = 1 ∗ 1 1 *n \times n*m \times m *n \times n *1 = 1*1 1n×nm×mn×n1=11 是一个数。 所以 T r ( c ) = c Tr(c) = c Tr(c)=c

我们可以把原问题转化为
a r g d m a x ⁡ d T X T X d    s u b j e c t    t o    d T d = 1 = a r g d m i n ⁡ − d T X T X d    s u b j e c t    t o    d T d = 1 \operatorname{arg_{d}max} d^{T}X^TXd \; subject\; to\; d^Td = 1 \\ = \operatorname{arg_{d}min} -d^{T}X^TXd \; subject\; to\; d^Td = 1 argdmaxdTXTXdsubjecttodTd=1=argdmindTXTXdsubjecttodTd=1
由于 X T X X^TX XTX 是实对称矩阵,令 A = X T X A = X^TX A=XTX, f ( d ) = − d T A d f(d) = -d^TAd f(d)=dTAd ,限制条件 ∥ d ∥ 2 = 1 \left \|d \right \|_2 = 1 d2=1 通过2.7中的定理可得,当 x 等于 A A A 的某个特征向量时, f f f 将返回对应的特征值。 在限制条件下, 函数 f f f 的最大值是最大特征值,最小值是最小特征值。所以 通过特征分解来求解可得,最优的 d d d X T X X^TX XTX 最大特征值对应的特征向量。

证明如下:
L ( d ) = − d T X T X d + λ ( d T d − 1 ) ∇ d L ( d ) = − 2 X T X d + 2 λ d = 0 λ d = X T X d L(d) = -d^TX^TXd + \lambda (d^Td -1) \\ \nabla_{d}L(d) = -2X^TXd + 2\lambda d = 0 \\ \lambda d = X^TXd L(d)=dTXTXd+λ(dTd1)dL(d)=2XTXd+2λd=0λd=XTXd
d 是 X T X X^TX XTX 最小特征值对应的特征向量 , λ \lambda λ 为其特征值

矩阵的范数

首先假设矩阵的大小为m∗n,即m行n列。

1-范数,又名列和范数。矩阵列向量中绝对值之和的最大值。 ∣ ∣ A ∣ ∣ 1 = max ⁡ j ∑ i = 1 m ∣ a i j ∣ ||A||_1=\max_j \sum_{i=1}^m|a_{ij}| A1=maxji=1maij

2-范数,又名谱范数,计算方法为 A T A A^TA ATA矩阵的最大特征值的开平方。 ∣ ∣ A ∣ ∣ 2 = λ 1 ||A||_2 = \sqrt{\lambda _1} A2=λ1 .其中 λ 1 λ_1 λ1 A T A A^TA ATA的最大特征值。

∞ \infty -范数,又名行和范数。矩阵行向量中绝对值之和的最大值。 ∣ ∣ A ∣ ∣ ∞ = max ⁡ j ∑ i = 1 n ∣ a i j ∣ ||A||_{\infty}=\max_j \sum_{i=1}^n|a_{ij}| A=maxji=1naij

F-范数,Frobenius范数,计算方式为矩阵元素的绝对值的平方和再开方。 ∣ ∣ A ∣ ∣ F = ( ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ 2 ) 1 2 ||A||_F={\left( \sum_{i=1}^m \sum_{j=1}^n |a_{ij}|^2 \right)}^{\frac{1}{2}} AF=(i=1mj=1naij2)21

最小二乘求解

线性方程组 A x = b A\boldsymbol{x}=\boldsymbol{b} Ax=b 的最小二乘解

  • 即求解 argmin x 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 \text{argmin}_\boldsymbol{x} \frac{1}{2}||A\boldsymbol{x}-\boldsymbol{b}||^2 _2 argminx21Axb22

  • 使用线性变换的求导公式 :

  • ∇ x 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 = 1 2 A T ∇ A x − b ∣ ∣ A x − b ∣ ∣ 2 2 = 1 2 A T ( 2 ( A x − b ) ) = A T ( A x − b ) \nabla_\boldsymbol{x} \frac{1}{2}||A\boldsymbol{x}-\boldsymbol{b}||^2_2 \\ = \frac{1}{2}A^T\nabla_{A\boldsymbol{x}-\boldsymbol{b}} ||A\boldsymbol{x}-\boldsymbol{b}||^2_2 \\ = \frac{1}{2}A^T(2(A\boldsymbol{x}-\boldsymbol{b})) \\ = A^T(A\boldsymbol{x}-\boldsymbol{b}) x21Axb22=21ATAxbAxb22=21AT(2(Axb))=AT(Axb)

  • 令导数等于零,再给方程两边同时左乘 ( A T A ) − 1 (A^TA)^{-1} (ATA)1,移项即得: x = ( A T A ) − 1 A T b \boldsymbol{x}=(A^TA)^{-1}A^T\boldsymbol{b} x=(ATA)1ATb

    • 这里假定方程组是超定的,即 A A A 列满秩且行数大于列数,因此上述逆矩阵存在
    • 补:如果方程组欠定但是是一致的,那么 x ∗ = A † b \boldsymbol{x^*}=A^\dagger\boldsymbol{b} x=Ab 是方程 A x = b A\boldsymbol{x}=\boldsymbol{b} Ax=b 的二范数最小的解,其中 A † A^\dagger A 是矩阵 A A A 的 Moore–Penrose 广义逆。

你可能感兴趣的:(机器学习)