8.2-无监督学习-线性降维( 五 )


主成分分析的另一个角度
我们从更清楚的角度来看PCA,你就会知道PCA到底在做什么 。假设我们考虑的是手写的数字,我们知道这些数字其实是一些basic 所组成的 。这些basic 可能就代表笔画 。举例来说:人类所手写的数字就是这些basic 所组成的,有斜的直线,横的直线,有比较长的直线,然后还有小圈,大圈等等,这些basic 加起来就可以得到一个数字 。这些basic 写做u1,u2,…u^5u1,u2,…u5,这些basic 其实就是一个一个的 。假设我们现在考虑的是mnist,mnist一张*,也就是28 *28维的 。这些其实就是28 *28维的,把这些加起来以后,你所得到的就代表了一个 。如果把它写成的话就是:x\ c_1u1+c_2u2+…c_kuk+\bar{x}x≈c1u1+c2u2+…ckuk+xˉ,x代表一张image里面的pixel,x等于加上这个,一直加到,再加上\bar{x}xˉ,\bar{x}xˉ是所有image的平均 。所以每一张image就是有一堆的 再加上它平均所组成的 。
举例来说:7是这三个加起来的结果,假设7就是x的话,c_1=1,c_2=0,c_3=1,c_4=0,c_5=1c1=1,c2=0,c3=1,c4=0,c5=1,你可以用c_1,c_2,…c_kc1,c2,…ck来表示一张image 。假设比pixel的数目少的话,那么这个描述是比较有效的 。7是1倍的u1u1,1倍u2u2,1倍的u^5u5所组成的,所以7是一个,它的第一维,第三维,第5维是1.
所以现在把\bar{x}xˉ移到左边,x减掉所以image的平均等于一堆,这些 写作\hat{x}x^,那现在假设我们不知道这些 是什么,不知道u1u1到ukuk的长什么样子 。那我们咋样找K 出来呢?我们要做的事情就是:我们要去找K 使得\hat{x}x^跟x-\bar{x}x?xˉ越接近越好,他们的差用 error(重建误差)来描述 。接下来我们要做事情就是:找K 个可以这个 error 。
在PCA中我们想说:我们要找一个 W,x乘以 W就得到了z,把W的每一个row写出来就是[w_1,w_2,…,w_k][w1,w2,…,wk],x乘上一个[(w_1)T,(w_2)T,…(w_k)^T][(w1)T,(w2)T,…(wk)T],以此类推 。那么说:是[w_1,w_2,…,w_k][w1,w2,…,wk]是 的,事实上你要解这个式子L=mi_n(u1,…uk)\sum \left | (x-\bar{x}) -(\sum_{k=1}{k}c_kuk)\right |L=min(u1,…uk)∑∥∥∥∥(x?xˉ)?(∑k=)∥∥∥∥,找出u1,…uku1,…uk 。由PCA找出的这个解w1,…wkw1,…wk就是可以让L最小化
我们有一大堆的x,现在假设有一个x_1x1,这个x_1x1减去\bar{x}xˉ等于u^1u1乘以 ,c上标1下标1(下标1代表说:它是u1u1的,上标1代表说:x1x1的u^ ),x^1-\bar{x} \ ++…x1?xˉ≈c11u1+c21u2+…
x-\bar{x}x?xˉ是一个(把这个拿出来),u1,u2…u1,u2…是一排(把它排起来,排起来就是一个),的数目是K个,把这些 排成一排变成一个,乘以变成另一个 。我们不只是有一笔data,x2-\bar{x}x2?xˉ是另外一个黄色的,这个(c_12,c_2^2,…c12,c22,…)乘以 u^2u2等于另一个黄色的,依次类推 。
那我们把所有的data用这个式子来表示的话,这样就会得到一个,这个的等于data的数目(你有1万笔data,=10000) 。现在\left{\begin{} … &… \ u^1 & u^2 \ …& … \end{}\right.?????…u1…u2…乘以这个 \left{\begin{} c_1^1 &c_1^2 \ c_2^1 & c_2^2 \ …& … \end{}\right.?????……跟这个越接近越好,所以你要左边两个跟右边这个之间的差距是会被的,也就是说:用SVD提供给我们的拆解方法,拆成这是三个相乘后,跟左边的是最接近的 。
奇异值分解
那要咋样来解这个问题呢?加入你有学过大一现代化,你就应该知道该咋样来解(可以参考李宏毅老师现代的课程) 。每一个 X,你可以用SVD把它拆成一个 U(m *k)乘上一个 \sum∑(k *k)乘上 V(k *n) 。这个 U就是\left{\begin{} … &… \ u^1 & u^2 \ …& … \end{}\right.?????…u1…u2…,这个\sum∑V就是\left{\begin{} c_1^1 &c_1^2 \ c_2^1 & c_2^2 \ …& … \end{}\right.?????…… 。
如果我们今天用SVD将X拆成这三个相乘,那右边三个相乘的结果是最接近左边这个的,那解出来的结果是什么样呢?其中U这个的 K 其实就是一组 ,这组 是XX^TXXT的,U总共有K个 ,这K 个 对应到XX^TXXT最大的k个的 。