TheMatrix 写了: 2023年 1月 10日 20:14
主要是这两句不懂:
1,C可以写成一个线性变换A定义的内积。
2,A的正交基V。
推导还是懂的。
回答一下TheMatrix的问题。和前面rgg发的帖的字母选取有稍许不同。先写出来有4点不同,
1,他说A矩阵是mxn,(n是subjects,m是features),我这里用nxp,n是subjects, p是features。我为啥要这样用?因为“n by p”矩阵是统计系里面的标准表述;他肯定是别的出身比如EE,不是统计系出身)
2,SVD他用的USV',我写UDV',一回事,S=D
3,因为A矩阵的选取不同,自相关矩阵C他说是A'A,我说是AA',从1看其实是一回事。
4,因为3的不同(归根到底是1的不同),他最后得到的eigen value decomposition是V Lambda V',我得到的是U Lambda U'。也是一回事。
下面开始表述。
首先我们有一个A矩阵,它是nxp的,n行,p列;n一般是subjects,就是你关心的对象,p是features。rgg说A是一个线性变换,呃,也不是不可以,因为任何一个矩阵都可以被说成是一个线性变换。
C一般是你关心的对象的自相关矩阵,它的计算是这样从A来的:首先把A的各行减去其行内部元素的均值。然后再把各行内部元素scale一下使得每行内部元素的平方和为1。如此处理后,C=AA'就变成了自相关矩阵,主对角线上全部是1,次对角线上的值有正有负,但是其绝对值都小于1。这就是rgg说的
“C可以写成一个线性变换A定义的内积”。你不做scaling这一步也可以,这样C就不是一个自相关矩阵,而是一个方差矩阵。都行,反正都是正定的。
你若想得到C的pricipal components,你需要这么做:先做C的eigen value decomposition,也就是得到C=U Lambda U',然后把eigen values按照从大到小排列, 这样U的前面几个向量就是你要的principal components。
怎样通过A的SVD来求C的eigen decomposition?这样做:先做SVD,得到A=UDV';那么C=AA'=UDV'VDU'=U D^2 U',且D^2为对角阵,其实它就是Lambda; 所以C=UD^2U', 也把Lambda的对角线值按照大小排来,这样C的principal components是U的前几个向量。这就是rgg说的
“A的(SVD分解的第一个U矩阵的)正交基U”