Lecture5-数据降维
1. 降维(Dimensionality Reduction)
- 我们假设数据能够在低维空间被表示
- 高维数据在低维空间的表示是更加高效的。
1.1. SVD示例
r表示保留的特征值的数量
1.2. 压缩/降低尺寸
- 1 0 6 10^6 106行, 1 0 3 10^3 103列,不更新
- 随机访问一行数据,很少的错误时可以接受的
- 如下的矩阵其实是个二维矩阵,我们通过缩放[1 1 1 0 0]或[0 0 0 1 1]可以重建所有的行
1.3. 矩阵的秩
- 什么是矩阵A的秩?A的线性独立列数
- 例子:
A = [ 1 2 1 − 1 − 3 1 3 5 0 ] R a n k ( A ) = 2 A = \begin{bmatrix} 1 & 2 & 1 \\ -1 & -3 & 1 \\ 3 & 5 & 0 \\ \end{bmatrix}\ Rank(A) = 2 A=⎣⎡1−132−35110⎦⎤ Rank(A)=2
1.4. 秩是可以降维
我们可以通过
[1 2 1][-2 -3 1]
两个向量来重写矩阵A,A的新坐标为:[1 0][0 1][1 -1]
1.5. 降维的目的
- 数学上是发现数据中的轴
- 发现隐藏的联系和主题:比如经常一同出现的单词等
- 移除相似和噪声特征:并不是所有单词都是有用的
- 数据解释和可视化
- 更容易处理和存储数据:(找到规律,压缩数据量)
1.6. 降维的描述
- 与用两个坐标表示每一个点不同,我们用轴上的坐标表示每一个点(对应红线上点的位置)。
- 通过这样做,我们会产生一些错误,因为这些点并不完全在直线上(信息损失),需要我们考虑我们是否可以接受这部分信息损失。
2. SVD
奇异值的值必然为正
2.1. SVD的分类
2.2. SVD的介绍
- 变量(维数)较多,增加了分析问题的复杂性
- 数据丰富但知识贫乏:实际问题中,变量之间可能存在一定的相关,因此,多变量中可能存在资讯的重叠
- 人们自然希望通过克服相关、重叠性,用较少的变量来代替原来多的变量,而这种代替可以反映原来多个变量的大部分资讯,这实际上是一种"降维"的思想。
3. 降维方法汇总
3.1. 特征值与特征向量
- 设 A A A是 n n n阶矩阵,如果数 λ \lambda λ和n维非零列向量使关系式 A x = λ x Ax = \lambda x Ax=λx成立
- 则称 λ \lambda λ是方阵A的特征值,非零向量x称为A的对应特征值的特征向量。
- 一般求解方法
∣ A − λ I ∣ = 0 ⟺ ∣ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . . . . a n 1 a n 2 . . . a n n ∣ = 0 |A - \lambda I| = 0 \iff \begin{vmatrix} a_{11} & a_{12} & ... & a_{1n} \\ a_{21} & a_{22} & ... & a_{2n} \\ . & . & ... & . \\ a_{n1} & a_{n2} & ... & a_{nn} \\ \end{vmatrix} = 0 ∣A−λI∣=0⟺∣∣∣∣∣∣∣∣a11a21.an1a12a22.an2............a1na2n.ann∣∣∣∣∣∣∣∣=0
3.2. 降维方法
- PCA(主成分分析,Principal-Component Analysis)
- LDA(线性判别分析)
- 因子分析
- SVD(奇异值分解,Singular-Value Decomposition)
- CUR分解
4. SVD(奇异值分解,Singular-Value Decomposition)
A [ m ∗ n ] = U [ m ∗ r ] ∗ Σ [ r ∗ r ] ( V [ n ∗ r ] ) T A_{[m * n]} = U_{[m * r]} * \Sigma_{[r * r]} (V_{[n * r])^T} A[m∗n]=U[m∗r]∗Σ[r∗r](V[n∗r])T
矩阵符号 | 矩阵名称 | 矩阵描述 |
---|---|---|
A A A | 输入数据矩阵 | m * n维 |
U U U | 左奇异矩阵 | m * r维,正交矩阵, U U T = I UU^T = I UUT=I |
Σ \Sigma Σ | 奇异值对角矩阵 | r * r维,r是矩阵A的秩,只有对角线上有值,其他元素均为0 |
V V V | 右奇异矩阵 | n * r维,正交矩阵, V T V = I V^TV = I VTV=I |
Notes:奇异值分解的信息下降是非常快的,基本上前100个奇异值就可以表征大多数的数据。
4.1. SVD图示
4.2. 奇异值求解
A
A
T
=
U
Σ
V
T
V
Σ
T
U
T
=
U
Σ
Σ
T
U
T
(1-1)
AA^T = U\Sigma V^TV\Sigma^TU^T = U\Sigma\Sigma^TU^T \tag{1-1}
AAT=UΣVTVΣTUT=UΣΣTUT(1-1)
A
T
A
=
V
Σ
U
T
U
Σ
V
T
=
V
Σ
T
Σ
V
T
(1-2)
A^TA = V\Sigma U^TU\Sigma V^T = V\Sigma^T\Sigma V^T \tag{1-2}
ATA=VΣUTUΣVT=VΣTΣVT(1-2)
我们通过简单分析可以知道 A A T AA^T AAT和 A T A A^TA ATA是对称矩阵
- 我们利用上面的(1-1)式来进行特征值分解,得到的特征矩阵就是U
- 通过上面的(1-2)式来进行特征值分解,得到的特征矩阵就是V
- 对 Σ Σ T \Sigma\Sigma^T ΣΣT或者 Σ T Σ \Sigma^T\Sigma ΣTΣ中的特征值开方,可以获得所有的奇异值
4.3. SVD计算示例
A = [ 0 1 1 1 1 0 ] A T = [ 0 1 1 1 1 0 ] A = \begin{bmatrix} 0 & 1 \\ 1 & 1 \\ 1 & 0 \end{bmatrix} \ A^T = \begin{bmatrix} 0 & 1 & 1 \\ 1 & 1 & 0 \end{bmatrix} A=⎣⎡011110⎦⎤ AT=[011110]
求解特征值要从大到小排列
矩阵名 | 矩阵值 | 特征值 | 特征矩阵 |
---|---|---|---|
U U U | U = A ∗ A T = [ 1 1 0 1 2 0 0 1 1 ] U = A * A^T = \begin{bmatrix} 1 & 1 & 0 \\ 1 & 2 & 0 \\ 0 & 1 & 1\end{bmatrix} U=A∗AT=⎣⎡110121001⎦⎤ |
λ
1
=
3
,
u
1
=
(
1
6
,
2
6
,
1
6
)
T
\lambda_1 = 3, u_1 = (\frac{1}{\sqrt{6}},\frac{2}{\sqrt{6}},\frac{1}{\sqrt{6}})^T
λ1=3,u1=(61,62,61)T λ 2 = 1 , u 2 = ( 1 2 , 0 , − 1 2 ) T \lambda_2 = 1, u_2 = (\frac{1}{\sqrt{2}}, 0, -\frac{1}{\sqrt{2}})^T λ2=1,u2=(21,0,−21)T λ 3 = 0 , u 3 = ( 1 3 , − 1 3 , 1 3 ) T \lambda_3 = 0, u_3 = (\frac{1}{\sqrt{3}}, -\frac{1}{\sqrt{3}}, \frac{1}{\sqrt{3}})^T λ3=0,u3=(31,−31,31)T | [ 1 6 1 2 1 3 2 6 0 − 1 3 1 6 − 1 2 1 3 ] \begin{bmatrix} \frac{1}{\sqrt{6}} & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \\ \frac{2}{\sqrt{6}} & 0 & -\frac{1}{\sqrt{3}} \\ \frac{1}{\sqrt{6}} & -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \end{bmatrix} ⎣⎢⎡616261210−2131−3131⎦⎥⎤ |
V V V | V = A T ∗ A = ( 2 1 1 2 ) V = A^T*A = (\begin{matrix} 2 & 1 \\ 1 & 2\end{matrix}) V=AT∗A=(2112) |
λ
1
=
3
,
v
1
=
(
1
2
,
1
2
)
T
\lambda_1 = 3,v_1 = (\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}}) ^ T
λ1=3,v1=(21,21)T λ 2 = 1 , v 2 = ( − 1 2 , − 1 2 ) T \lambda_2 = 1,v_2 = (-\frac{1}{\sqrt{2}}, -\frac{1}{\sqrt{2}}) ^ T λ2=1,v2=(−21,−21)T | [ 1 2 − 1 2 1 2 − 1 2 ] \begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{bmatrix} [2121−21−21] |
求解奇异值为: 3 a n d 1 \sqrt{3}\ and\ 1 3 and 1
4.4. SVD的性质
我们通常可以将一个实数矩阵A按照分解为 A = U Σ V T A = U\Sigma V^T A=UΣVT
- U , Σ , V U,\Sigma,V U,Σ,V:唯一
- U,V:列正交
- U T U = I , V T V = I U^TU = I,V^TV = I UTU=I,VTV=I,I是单位矩阵
- 列是正交单位向量
- Σ \Sigma Σ:对角矩阵:对角值(奇异值)为正,并以降序排列
4.5. SVD的例子的解释(Users to Movies)
- U:"User to Concept"相似度矩阵
- 第一列:SciFi-concept
- 第二列:Romance-concept
-
Σ
\Sigma
Σ:
- 第一对角值:“strength” of the SciFi-concept
- 对角值:“strength” of each concept
- V:"movie-to-concept"相似度矩阵
4.6. SVD的向量理解
- 不使用二维(x, y)来描述一个点,而是使用一个点z来描述这个点。
- 点的位置是在向量v1上的
- 如何选择v1:最小化reconstruction errors(我们选择使用欧氏距离)
4.6.1. 最小化 reconstruction errors
- SVD目标:最小化 reconstruction errors
∑ i = 1 N ∑ j = 1 D ∣ ∣ x i j − z i j ∣ ∣ 2 → 0 \sum\limits_{i = 1}\limits^{N}\sum\limits_{j = 1}\limits^D||x_{ij} - z_{ij}||^2 \to 0 i=1∑Nj=1∑D∣∣xij−zij∣∣2→0
- 如何被认为是没有了,下降结束了?设置最小的奇异值为0
- 得到SVD后的近似矩阵(将最小的奇异值设置为0和U、V中对应的行和列置为0,重新做乘法得到新的矩阵)
4.6.2. SVD向量理解例子:Users to Movies
4.7. SVD - 最低秩近似
- 定 理 : 如 果 A = U Σ V T 并 且 B = U S V T , 并 且 S 是 一 个 对 角 r ∗ r 的 矩 阵 , 并 且 s i = δ i ( i = 1... k ) , 并 且 其 他 的 s i = 0 , 那 么 B 是 A 的 最 合 适 的 近 似 矩 阵 , 并 且 r a n k ( B ) = k 定理:如果A = U\Sigma V^T并且B = U S V^T,并且S是一个对角r*r的矩阵,并且s_i = \delta_i(i = 1...k),并且其他的s_i=0,那么B是A的最合适的近似矩阵,并且rank(B) = k 定理:如果A=UΣVT并且B=USVT,并且S是一个对角r∗r的矩阵,并且si=δi(i=1...k),并且其他的si=0,那么B是A的最合适的近似矩阵,并且rank(B)=k
- 什么是最好?B在 r a n k ( B ) = k rank(B) = k rank(B)=k的时候是 min B ∣ ∣ A − B ∣ ∣ F \min\limits_B||A-B||_F Bmin∣∣A−B∣∣F的解
- ∣ ∣ A − B ∣ ∣ F = ∑ i j ( A i j − B i j ) 2 ||A-B||_F = \sqrt{\sum\limits_{ij}(A_{ij} - B_{ij})^2} ∣∣A−B∣∣F=ij∑(Aij−Bij)2
4.7.1. 引理
- ∣ ∣ M ∣ ∣ F = ∑ i ( q i i ) 2 ||M||_F = \sum\limits_i(q_{ii})^2 ∣∣M∣∣F=i∑(qii)2 当 M = P Q R是M的SVD的时候
- U Σ V T − U S V T = U ( Σ − S ) V T U\Sigma V^T - USV^T = U(\Sigma - S)V^T UΣVT−USVT=U(Σ−S)VT
4.7.2. 引理的证明
∥ M ∥ = ∑ i ∑ j ( m i j ) 2 = ∑ i ∑ j ( ∑ k ∑ l p i k q k l r l j ) 2 ∥ M ∥ = ∑ i ∑ j ∑ k ∑ l ∑ n ∑ m p i k q k l r l j p i n q n m r m j \begin{array}{l} \|M\|=\sum\limits_i\sum\limits_j\left(m_{i j}\right)^{2}=\sum\limits_i \sum\limits_j\left(\sum\limits_k \sum\limits_lp_{i k} q_{kl} r_{lj}\right)^{2} \\ \|M\|=\sum\limits_i\sum\limits_j\sum\limits_k\sum\limits_l \sum\limits_n\sum\limits_m p_{ik} q_{kl} r_{lj} p_{in} q_{nm} r_{mj} \end{array} ∥M∥=i∑j∑(mij)2=i∑j∑(k∑l∑pikqklrlj)2∥M∥=i∑j∑k∑l∑n∑m∑pikqklrljpinqnmrmj
- ∑ i p i k p i n \sum\limits_ip_{ik}p_{in} i∑pikpin是1,如果k=n,不然为0
- P是列正交矩阵,R是正交矩阵,Q是对角矩阵
A = U Σ V T , B = U S V T min B , r a n k ( B ) = K ∣ ∣ A − B ∣ ∣ F = min ∣ ∣ Σ − S ∣ ∣ F = min s i ∑ i = 1 r ( δ i − s i ) 2 \begin{array}{l} A = U \Sigma V^T, B = U S V^T \\ \\ \min\limits_{B, rank(B)=K}||A-B||_F \\ = \min ||\Sigma - S||_F = \min\limits_{s_i}\sum\limits_{i=1}\limits^r(\delta_i-s_i)^2 \end{array} A=UΣVT,B=USVTB,rank(B)=Kmin∣∣A−B∣∣F=min∣∣Σ−S∣∣F=simini=1∑r(δi−si)2
- 我们想要的是最小化 min s i ∑ i = 1 r ( θ i − s i ) 2 \min\limits_{s_i}\sum\limits_{i=1}^r(\theta_i-s_i)^2 simini=1∑r(θi−si)2
- 解决方案就是令 s i = δ i ( i = 1... k ) s_i = \delta_i(i = 1...k) si=δi(i=1...k)并且其他 s i = 0 s_i=0 si=0
min s i ∑ i = 1 k ( δ i − s i ) 2 + ∑ i = k + 1 r δ 2 = ∑ i = k + 1 r δ 2 \begin{array}{l} \min\limits_{s_i}\sum\limits_{i=1}\limits^k(\delta_i-s_i)^2 + \sum\limits_{i = k + 1}\limits^r\delta^2 \\ = \sum\limits_{i = k + 1}\limits^r\delta^2 \end{array} simini=1∑k(δi−si)2+i=k+1∑rδ2=i=k+1∑rδ2
4.7.3. 定理的说明
- 为什么将
δ
i
\delta_i
δi设置为0是正确的做法?
- 向量 u i u_i ui和 v i v_i vi是单位长度,所以 δ i \delta_i δi是用来调整他们的
- 所以让 δ i \delta_i δi成为0可以导致更少的损失
- 我们应该保持多少 δ s \delta_s δs,拇指原则: ∑ i δ i 2 \sum\limits_i\delta_i^2 i∑δi2的和在80%-90%,保证信息损失不太多
4.8. SVD算法的复杂度
- 计算SVD的复杂度: m i n ( O ( n m 2 ) , O ( n 2 m ) ) min(O(nm^2), O(n^2m)) min(O(nm2),O(n2m))
- 但是如果我们只想知道奇异值或者前k个奇异值,或者矩阵是稀疏矩阵,那么复杂度会大大下降
4.9. SVD和特征分解的关系
-
SVD角度: A = U Σ V T A = U \Sigma V^T A=UΣVT
-
特征分解的角度: A = X Λ X T A = X \Lambda X^T A=XΛXT
- A是对称的
- U,V,X都是正交矩阵
- Λ , Σ \Lambda,\Sigma Λ,Σ都是对角的
A A T = U Σ V T ( U Σ V T ) T = U Σ V T ( V Σ T U T ) = U Σ Σ T U T ( X Λ 2 X T ) A T A = V ( Σ T U T ) ( U Σ V T ) = V Σ Σ T V T ( X Λ 2 X T ) \begin{array}{l} AA^T \\ = U\Sigma V^T (U\Sigma V^T)^T \\ = U\Sigma V^T (V\Sigma^TU^T) \\ = U\Sigma\Sigma^TU^T(X \Lambda^2 X^T )\\ \\ A^TA \\ = V(\Sigma^TU^T)(U\Sigma V^T) \\ = V\Sigma\Sigma^TV^T(X \Lambda^2 X^T ) \end{array} AAT=UΣVT(UΣVT)T=UΣVT(VΣTUT)=UΣΣTUT(XΛ2XT)ATA=V(ΣTUT)(UΣVT)=VΣΣTVT(XΛ2XT)
4.10. 案例:如何查询
- 查找类似这个矩阵的用户:将查询映射到"概念空间"中-怎么做?
- user q: q c o n c e p t = q V q_{concept} = q V qconcept=qV
- user d: d c o n c e p t = d V d_{concept} = d V dconcept=dV
- 观察:被评级为"Alien"," Serenity"的用户d与被评级为"Matrix"的用户q相似,尽管d和q的共同点为零!
4.11. SVD的效果
5. CUR分解
- 目标:将矩阵A解释为C,U,R,使得 ∣ ∣ A − C ∗ U ∗ R ∣ ∣ F ||A - C*U*R||_F ∣∣A−C∗U∗R∣∣F最小
5.1. 选择行和列的方式
- 尽管我们是随机的选择行和列,但是我们还是保留了对于重要的行和列的权重
- 行和列的权重计算: f = ∑ i , j a i j 2 f=\sum\limits_{i,j}a_{ij}^2 f=i,j∑aij2
- 我们按照概率 p i = ∑ j a i j 2 f p_i = \sum\limits_{j}\frac{a_{ij}^2}{f} pi=j∑faij2选择行
- 我们按照概率 q j = ∑ i a i j 2 f q_j = \sum\limits_{i}\frac{a_{ij}^2}{f} qj=i∑faij2
- 归一化处理:将所有的元素都是除以 r q j \sqrt{rq_j} rqj(行)、 r p i \sqrt{rp_i} rpi(列)
5.2. CUR对列(行)进行取样
- 以列为例,行也是相似的
- 输入:矩阵 A ∈ R m ∗ n A \in R^{m * n} A∈Rm∗n,样例数c
- 输出: C d ∈ R m ∗ c C_d \in R^{m * c} Cd∈Rm∗c
- 算法过程:
- 对于 ∀ x ∈ [ 1 , n ] , P ( x ) = ∑ i A ( i , x ) 2 ∑ i , j A ( i , j ) 2 \forall x \in [1, n],P(x) = \frac{\sum\limits_iA(i, x)^2}{\sum\limits_{i,j}A(i,j)^2} ∀x∈[1,n],P(x)=i,j∑A(i,j)2i∑A(i,x)2
- 对于
∀
i
∈
[
1
,
c
]
\forall i \in [1, c]
∀i∈[1,c],以一列为例
- 选择 k ∈ [ 1 , n ] k \in [1, n] k∈[1,n]满足分布P(x)
- 计算 C d ( : , i ) = A ( : , k ) c P ( k ) = A ( : , k ) c ∗ ∑ i A ( i , k ) 2 ∑ i , j A ( i , j ) 2 C_d(:,i) = \frac{A(:,k)}{\sqrt{cP(k)}} = \frac{A(:, k)}{\sqrt{c * \frac{\sum\limits_iA(i, k)^2}{\sum\limits_{i,j}A(i,j)^2}}} Cd(:,i)=cP(k)A(:,k)=c∗i,j∑A(i,j)2i∑A(i,k)2A(:,k)
- 请注意,这是一种随机算法,同一列可以多次采样
5.3. 计算U
- U是一个 r ∗ r r*r r∗r的矩阵,所以是比较小的,并且如果他是高密度、难计算的也是可以的。
- 首先计算W,我们让W是列C和行R的交集,并且计算出W的SVD表示为 W = X Σ Y T W = X \Sigma Y^T W=XΣYT
- 然后计算
Σ
\Sigma
Σ的Moore-Penorse inverse(伪逆矩阵):
Σ
\Sigma
Σ
- Σ \Sigma Σ是一个对角矩阵
- 他的Moore-Penorse inverse满足
- 1 σ \frac{1}{\sigma} σ1 如果 σ ≠ 0 \sigma \neq 0 σ=0
- 0 如果 σ = 0 \sigma=0 σ=0
- 然后:
U
=
W
+
=
Y
(
Σ
+
)
2
X
T
U = W^+ = Y(\Sigma^+)^2X^T
U=W+=Y(Σ+)2XT
- 非零奇异值的倒数: Σ i i + = 1 / Σ i i \Sigma_{ii}^{+} = 1/\Sigma_{ii} Σii+=1/Σii
- W + W^+ W+是伪逆
5.3.1. 为什么伪逆是有效的
W = X Σ Y W − 1 = X − 1 ∗ Σ − 1 ∗ Y − 1 ∵ X − 1 = X T , Y − 1 = Y T Σ − 1 = 1 Σ i i \begin{matrix} W = X \Sigma Y \\ W^{-1} = X^{-1} * \Sigma^{-1} * Y^{-1} \\ \because X^{-1} = X^T, Y^{-1} = Y^T \\ \Sigma^{-1} = \frac{1}{\Sigma_{ii}} \\ \end{matrix} W=XΣYW−1=X−1∗Σ−1∗Y−1∵X−1=XT,Y−1=YTΣ−1=Σii1
- X、Y正交矩阵, Σ \Sigma Σ是对角矩阵
- 因此,如果W是非奇异矩阵,伪逆矩阵是真的逆矩阵
5.4. CUR是可以被证明是SVD的一个很好近似
5.5. CUR的优点和缺点
5.5.1. 优点
- 很好计算:由于基向量是实际的列和行
- 稀疏矩阵:由于基向量是实际的列和行
5.5.2. 缺点
- 重复的列和行:大量的列将被多次采样
5.6. 如何避免重复
- 方案一:直接抛弃
- 方法二:用重复项的平方根缩放(乘)列/行
6. SVD和CUR
6.1. 简单的实验
- DBLP bibliographic data
- Author-to-conference 的大稀疏矩阵
- A i j A_{ij} Aij:作者i在会议j上发表的论文数量
- 428k个作者(列),3659会议(行)
- 非常稀疏
6.2. DBLP的结果
7. 线性假设
- SVD只能用于线性投影:低维线性投影,保持欧式距离
- 非线性方法:Isomap
- 数据位于一个低维的非线性曲线
- 使用距离度量对应的形状