介绍了无监督学习 本文主要介绍Dimension Reduction,顺便介绍了聚类算法 维度缩减主要介绍经典的PCA算法和SVD算法,以及他们之间的关系 如何使用NN进行维度缩减(模拟PCA) PCA/SVG在推荐系统,文本处理上的应用 pdf 视频
无监督学习有2种
K-means 算法:
有 X = { x 1 , ⋯ , x n , ⋯ , x N } X=\left\{x^{1}, \cdots, x^{n}, \cdots, x^{N}\right\} X={x1,⋯,xn,⋯,xN}未标签数据,目的分成K类初始化聚类中心 c i , i = 1 , 2 , … K ( c^{i}, \mathrm{i}=1,2, \ldots \mathrm{K}\left(\mathrm{}\right. ci,i=1,2,…K( random x n x^{n} xn from X ) \left.X\right) X)重复: 遍历X中所有数据 x n x^{n} xn: b i n { 1 x n is most ′ ′ close ′ ′ to c i 0 Otherwise b_{i}^{n}\left\{\begin{array}{ll}1 & x^{n} \text { is most }^{\prime \prime} \text { close }^{\prime \prime} \text { to } c^{i} \\ 0 & \text { Otherwise }\end{array}\right. bin{10xn is most ′′ close ′′ to ci Otherwise b n b^n bn是一个one hot向量更新所有 c i c^i ci:对所有属于i类的 x n x^n xn做平均就有, c i = ∑ x n b i n x n / ∑ x n b i n c^{i}=\sum_{x^{n}} b_{i}^{n} x^{n} / \sum_{x^{n}} b_{i}^{n} ci=∑xnbinxn/∑xnbinHAC(Hierarchical Agglomerative Clustering)算法:
建树 每次取最相似的2个,建立父节点,直到根节点 选择一个阈值,进行切分 上面是2种聚类算法,聚类算法使得一个对象只能属于一个类, 有点以偏概全。下面的Distributed Representation,一个对象会和多类关联。其实,假如是一张图片,我们也是用上述方法,把图片描述成各个属性的权重,这就是把高维的image进行Dimension Reduction。
上面这个问题,单纯考虑颜色,其实可以把3D降维为2D,没必要在复杂的3D空间上求解。
怎么做Dimension Reduction?
特征选择 这种方法在左边有效,但是在右边,拿点1D是没法很好转成2D的。主成分分析 PCA(Principle component analysis)PCA的目的: Z = W x Z=W x Z=Wx PCA根据大量x找W,使得Z的维度小于x
ok,先考虑简单case,1D的情况: z 1 = w 1 ⋅ x z_{1}=w^{1} \cdot x z1=w1⋅x 并且假设w1的长度为1:
∥ w 1 ∥ 2 = 1 \left\|w^{1}\right\|_{2}=1 ∥∥w1∥∥2=1
x是高维空间的一个点,w1是高维的一个向量,做内积求x在w1上的投影
那么要选择怎样的w呢? 直觉上,我们应该选择的w要使得z的variance最大。 比如攻击力和防御力(2D)都很大,则认为能力(1D)很大。这就是2D -> 1D。 还是以w1来说: Var ( z 1 ) = 1 N ∑ z 1 ( z 1 − z 1 ‾ ) 2 \operatorname{Var}\left(z_{1}\right)=\frac{1}{N} \sum_{z_{1}}\left(z_{1}-\overline{z_{1}}\right)^{2} Var(z1)=N1z1∑(z1−z1)2
我们希望 Var ( z 1 ) \operatorname{Var}\left(z_{1}\right) Var(z1)最大。
上面是把高维投影到1D的情况。如果我们希望把高维投影到2D平面时:
z 1 = w 1 ⋅ x z 2 = w 2 ⋅ x \begin{array}{l} z_{1}=w^{1} \cdot x \\ z_{2}=w^{2} \cdot x \end{array} z1=w1⋅xz2=w2⋅x
z1求法和上面一样,z2不能再和z1一样,所以我们可以认为w1和w2正交。所以有下面约束:
Var ( z 1 ) = 1 N ∑ z 1 ( z 1 − z ˉ 1 ) 2 ∥ w 1 ∥ 2 = 1 Var ( z 2 ) = 1 N ∑ z 2 ( z 2 − z 2 ‾ ) 2 ∥ w 2 ∥ 2 = 1 w 1 ⋅ w 2 = 0 \operatorname{Var}\left(z_{1}\right)=\frac{1}{N} \sum_{z_{1}}\left(z_{1}-\bar{z}_{1}\right)^{2} \\ \left\|w^{1}\right\|_{2}=1 \\ \operatorname{Var}\left(z_{2}\right)=\frac{1}{N} \sum_{z_{2}}\left(z_{2}-\overline{z_{2}}\right)^{2} \\ \left\|w^{2}\right\|_{2}=1 \\ w^{1} \cdot w^{2}=0 Var(z1)=N1z1∑(z1−zˉ1)2∥∥w1∥∥2=1Var(z2)=N1z2∑(z2−z2)2∥∥w2∥∥2=1w1⋅w2=0
投影到更多维: W = [ ( w 1 ) T ( w 2 ) T ⋮ ] W=\left[\begin{array}{c} \left(w^{1}\right)^{T} \\ \left(w^{2}\right)^{T} \\ \vdots \end{array}\right] W=⎣⎢⎢⎡(w1)T(w2)T⋮⎦⎥⎥⎤ 由于 w i w^i wi互相正交且长度为1,所以W是正交矩阵
怎么求w?
下面是数学部分,求w,还是以w1为例:
先推导 z 1 ‾ \overline{z_{1}} z1
z 1 = w 1 ⋅ x z 1 ‾ = 1 N ∑ z 1 = 1 N ∑ w 1 ⋅ x = w 1 ⋅ 1 N ∑ x = w 1 ⋅ x ˉ \begin{array}{l} z_{1}=w^{1} \cdot x \\ \overline{z_{1}}=\frac{1}{N} \sum z_{1}=\frac{1}{N} \sum w^{1} \cdot x=w^{1} \cdot \frac{1}{N} \sum x=w^{1} \cdot \bar{x} \end{array} z1=w1⋅xz1=N1∑z1=N1∑w1⋅x=w1⋅N1∑x=w1⋅xˉ 那么 Var ( z 1 ) = 1 N ∑ z 1 ( z 1 − z ˉ 1 ) 2 \operatorname{Var}\left(z_{1}\right)=\frac{1}{N} \sum_{z_{1}}\left(z_{1}-\bar{z}_{1}\right)^{2} Var(z1)=N1∑z1(z1−zˉ1)2转化为: = 1 N ∑ x ( w 1 ⋅ x − w 1 ⋅ x ˉ ) 2 = 1 N ∑ ( w 1 ⋅ ( x − x ˉ ) ) 2 \begin{array}{l} =\frac{1}{N} \sum_{x}\left(w^{1} \cdot x-w^{1} \cdot \bar{x}\right)^{2} \\ =\frac{1}{N} \sum\left(w^{1} \cdot(x-\bar{x})\right)^{2} \end{array} =N1∑x(w1⋅x−w1⋅xˉ)2=N1∑(w1⋅(x−xˉ))2
根据: ( a ⋅ b ) 2 = ( a T b ) 2 = a T b a T b = a T b ( a T b ) T = a T b b T a \begin{array}{l} (a \cdot b)^{2}=\left(a^{T} b\right)^{2}=a^{T} b a^{T} b \\ =a^{T} b\left(a^{T} b\right)^{T}=a^{T} b b^{T} a \end{array} (a⋅b)2=(aTb)2=aTbaTb=aTb(aTb)T=aTbbTa
可以进一步转化:
= 1 N ∑ ( w 1 ⋅ ( x − x ˉ ) ) 2 = 1 N ∑ ( w 1 ) T ( x − x ˉ ) ( x − x ˉ ) T w 1 = ( w 1 ) T 1 N ∑ ( x − x ˉ ) ( x − x ˉ ) T w 1 = ( w 1 ) T Cov ( x ) w 1 \begin{array}{l} =\frac{1}{N} \sum\left(w^{1} \cdot(x-\bar{x})\right)^{2} \\ =\frac{1}{N} \sum\left(w^{1}\right)^{T}(x-\bar{x})(x-\bar{x})^{T} w^{1} \\ =\left(w^{1}\right)^{T} \frac{1}{N} \sum(x-\bar{x})(x-\bar{x})^{T} w^{1} \\ =\left(w^{1}\right)^{T} \operatorname{Cov}(x) w^{1} \quad \end{array} =N1∑(w1⋅(x−xˉ))2=N1∑(w1)T(x−xˉ)(x−xˉ)Tw1=(w1)TN1∑(x−xˉ)(x−xˉ)Tw1=(w1)TCov(x)w1 用S化简: S = Cov ( x ) S=\operatorname{Cov}(x) S=Cov(x)
所以最后化简为: 找 w 1 w^1 w1,使得 Var ( z 1 ) \operatorname{Var}\left(z_{1}\right) Var(z1)最大 还得满足长度为1约束。 Var ( z 1 ) = ( w 1 ) T S w 1 ∥ w 1 ∥ 2 = ( w 1 ) T w 1 = 1 \begin{array}{c} \operatorname{Var}\left(z_{1}\right) = \left(w^{1}\right)^{T} S w^{1} \\ \left\|w^{1}\right\|_{2}=\left(w^{1}\right)^{T} w^{1}=1 \end{array} Var(z1)=(w1)TSw1∥∥w1∥∥2=(w1)Tw1=1
我们可以使用拉格朗日乘数法来求w1: g ( w 1 ) = ( w 1 ) T S w 1 − α ( ( w 1 ) T w 1 − 1 ) g\left(w^{1}\right)=\left(w^{1}\right)^{T} S w^{1}-\alpha\left(\left(w^{1}\right)^{T} w^{1}-1\right) g(w1)=(w1)TSw1−α((w1)Tw1−1) 由于 w 1 w^1 w1是个向量,对elemen求偏微分: ∂ g ( w 1 ) / ∂ w 1 1 = 0 ∂ g ( w 1 ) / ∂ w 2 1 = 0 \begin{array}{l} \partial g\left(w^{1}\right) / \partial w_{1}^{1}=0 \\ \partial g\left(w^{1}\right) / \partial w_{2}^{1}=0 \end{array} ∂g(w1)/∂w11=0∂g(w1)/∂w21=0 得到:
S w 1 − α w 1 = 0 S w 1 = α w 1 \begin{array}{l} S w^{1}-\alpha w^{1} = 0 \\ S w^{1}=\alpha w^{1} \end{array} Sw1−αw1=0Sw1=αw1
所以认为 w 1 w^1 w1是S的特征向量,在进一步两边都左乘 w 1 w^1 w1 ( w 1 ) T S w 1 = α ( w 1 ) T w 1 = α \left(w^{1}\right)^{T} S w^{1}=\alpha\left(w^{1}\right)^{T} w^{1} = \alpha (w1)TSw1=α(w1)Tw1=α
结论:所以当 w 1 w^1 w1为矩阵S的最大特征向值 α = λ 1 \alpha = \lambda_{1} α=λ1对应的特征向量时, ( w 1 ) T S w 1 \left(w^{1}\right)^{T} S w^{1} (w1)TSw1最大
同理:找 w 2 w^2 w2,使得 Var ( z 2 ) \operatorname{Var}\left(z_{2}\right) Var(z2)最大 还多了一项约束: Var ( z 2 ) = ( w 2 ) T S w 2 ∥ w 2 ∥ 2 = ( w 2 ) T w 2 = 1 ( w 2 ) T w 1 = 0 \begin{array}{c} \operatorname{Var}\left(z_{2}\right) = \left(w^{2}\right)^{T} S w^{2} \\ \left\|w^{2}\right\|_{2}=\left(w^{2}\right)^{T} w^{2}=1 \end{array} \\ \left(w^{2}\right)^{T} w^{1}=0 Var(z2)=(w2)TSw2∥∥w2∥∥2=(w2)Tw2=1(w2)Tw1=0 同样使用拉格朗日乘数法: g ( w 2 ) = ( w 2 ) T S w 2 − α ( ( w 2 ) T w 2 − 1 ) − β ( ( w 2 ) T w 1 − 0 ) g\left(w^{2}\right)=\left(w^{2}\right)^{T} S w^{2}-\alpha\left(\left(w^{2}\right)^{T} w^{2}-1\right)-\beta\left(\left(w^{2}\right)^{T} w^{1}-0\right) g(w2)=(w2)TSw2−α((w2)Tw2−1)−β((w2)Tw1−0) 求偏微分:
∂ g ( w 2 ) / ∂ w 1 2 = 0 ∂ g ( w 2 ) / ∂ w 2 2 = 0 \begin{array}{l} \partial g\left(w^{2}\right) / \partial w_{1}^{2}=0 \\ \partial g\left(w^{2}\right) / \partial w_{2}^{2}=0 \end{array} ∂g(w2)/∂w12=0∂g(w2)/∂w22=0 得到: S w 2 − α w 2 − β w 1 = 0 S w^{2}-\alpha w^{2}-\beta w^{1}=0 Sw2−αw2−βw1=0 左乘 ( w 1 ) T (w^1)^T (w1)T: ( w 1 ) T S w 2 − α ( w 1 ) T w 2 − β ( w 1 ) T w 1 = 0 ( w 1 ) T S w 2 − α 0 − β 1 = 0 \left(w^{1}\right)^{T} S w^{2}-\alpha\left(w^{1}\right)^{T} w^{2}-\beta\left(w^{1}\right)^{T} w^{1}=0 \\ \left(w^{1}\right)^{T} S w^{2} - \alpha0 - \beta1 = 0 (w1)TSw2−α(w1)Tw2−β(w1)Tw1=0(w1)TSw2−α0−β1=0 其中 ( ( w 1 ) T S w 2 ) T = ( w 2 ) T S T w 1 = ( w 2 ) T S w 1 = λ 1 ( w 2 ) T w 1 = 0 \begin{array}{l} \left(\left(w^{1}\right)^{T} S w^{2}\right)^{T}=\left(w^{2}\right)^{T} S^{T} w^{1} \\ =\left(w^{2}\right)^{T} S w^{1}=\lambda_{1}\left(w^{2}\right)^{T} w^{1}=0 \end{array} ((w1)TSw2)T=(w2)TSTw1=(w2)TSw1=λ1(w2)Tw1=0 所以最后: 0 − α 0 − β 1 = 0 β = 0 0 - \alpha0 - \beta1 = 0\\ \beta = 0 0−α0−β1=0β=0 也就有: S w 2 − α w 2 = 0 S w 2 = α w 2 S w^{2}-\alpha w^{2}=0\\ S w^{2}=\alpha w^{2} Sw2−αw2=0Sw2=αw2
结论:所以当 w 2 w^2 w2为矩阵S的第二大特征向值 α = λ 2 \alpha = \lambda_{2} α=λ2对应的特征向量时, ( w 2 ) T S w 2 \left(w^{2}\right)^{T} S w^{2} (w2)TSw2最大 解释为什么选第二大:如果选最大则不会和 w 1 w^1 w1正交,但是由于S的对称矩阵,所以可以第二大
ok,数学分析部分结束
PCA也可用来去相关,我们来看z的协方差矩阵: Cov ( z ) = 1 N ∑ ( z − z ˉ ) ( z − z ˉ ) T = W S W T \operatorname{Cov}(z)=\frac{1}{N} \sum(z-\bar{z})(z-\bar{z})^{T}=W S W^{T} Cov(z)=N1∑(z−zˉ)(z−zˉ)T=WSWT 转换步骤可以参考上面数学部分,其中, S = cov ( x ) S=\operatorname{cov}(x) S=cov(x) 进一步转换: Cov ( z ) = W S [ w 1 ⋯ w K ] = W [ S w 1 ⋯ S w K ] = W [ λ 1 w 1 ⋯ λ K w K ] = [ λ 1 W w 1 ⋯ λ K W w K ] = [ λ 1 e 1 ⋯ λ K e K ] = D \begin{array}{ll} \operatorname{Cov}(z)=W S\left[w^{1} \quad \cdots \quad w^{K}\right]=W\left[S w^{1} \quad \cdots \quad S w^{K}\right] \\ =W\left[\lambda_{1} w^{1} \quad \cdots \quad \lambda_{K} w^{K}\right]=\left[\lambda_{1} W w^{1} \quad \cdots \quad \lambda_{K} W w^{K}\right] \\ =\left[\begin{array}{lll} \lambda_{1} e_{1} & \cdots & \lambda_{K} e_{K} \end{array}\right]=D \end{array} Cov(z)=WS[w1⋯wK]=W[Sw1⋯SwK]=W[λ1w1⋯λKwK]=[λ1Ww1⋯λKWwK]=[λ1e1⋯λKeK]=D 所以协方差矩阵时对角矩阵(只有对角线上有非0元素的矩阵)
图像描述: 那么为什么要做decorrelation?
目的就是使得参数变得简单,比如一个generative模型,用高斯分布来描述数据分布,如果做了PCA decorrelation,就可以认为输入数据的协方差矩阵是对角矩阵,就可以减少参数量,从而避免过拟合。
从另一角度来说明PCA
一个数字图片可以描述成多个笔画组成,后面加平均表示所有数字图片的共有特性。
用 x ^ \hat{x} x^表示重建 x − x ˉ ≈ c 1 u 1 + c 2 u 2 + ⋯ + c k u K = x ^ x-\bar{x} \approx c_{1} u^{1}+c_{2} u^{2}+\cdots+c_{k} u^{K}=\hat{x} x−xˉ≈c1u1+c2u2+⋯+ckuK=x^ 我们希望找到 { u 1 , … , u K } \left\{u^{1}, \ldots, u^{K}\right\} {u1,…,uK}使得重建误差最小: ∥ ( x − x ˉ ) − x ^ ∥ 2 \|(x-\bar{x})-\hat{x}\|_{2} ∥(x−xˉ)−x^∥2 即: L = min { u 1 , … , u K } ∑ ∥ ( x − x ˉ ) − ( ∑ k = 1 K c k u k ) ∥ 2 L=\min _{\left\{u^{1}, \ldots, u^{K}\right\}} \sum\left\|(x-\bar{x})-\left(\sum_{k=1}^{K} c_{k} u^{k}\right)\right\|_2 L={u1,…,uK}min∑∥∥∥∥∥(x−xˉ)−(k=1∑Kckuk)∥∥∥∥∥2 每笔数据可以表示成: x 1 − x ˉ ≈ c 1 1 u 1 + c 2 1 u 2 + ⋯ x 2 − x ˉ ≈ c 1 2 u 1 + c 2 2 u 2 + ⋯ x 3 − x ˉ ≈ c 1 3 u 1 + c 2 3 u 2 + ⋯ x^{1}-\bar{x} \approx c_{1}^{1} u^{1}+c_{2}^{1} u^{2}+\cdots \\ x^{2}-\bar{x} \approx c_{1}^{2} u^{1}+c_{2}^{2} u^{2}+\cdots \\ x^{3}-\bar{x} \approx c_{1}^{3} u^{1}+c_{2}^{3} u^{2}+\cdots x1−xˉ≈c11u1+c21u2+⋯x2−xˉ≈c12u1+c22u2+⋯x3−xˉ≈c13u1+c23u2+⋯ 所以我们希望L最小,也就是矩阵x要越接近U·C,我们知道任何矩阵都可以使用SVD分解成: X = U Σ V T X=U\Sigma V^T X=UΣVT,所以可以使用SVD求U和C。 我们只需要紧奇异值分解: 所以当 U = { u 1 , u 2 , … u K } U= \left\{u^{1}, u^{2}, \ldots u^{K}\right\} U={u1,u2,…uK}, V = C V = C V=C。L取得最小值。
SVD和PCA经典解法的关系
回顾PCA: z = W x \quad z=W x z=Wx
[ z 1 z 2 ⋮ z K ] = [ ( w 1 ) T ( w 2 ) T ⋮ ( w K ) T ] x \left[\begin{array}{c} z_{1} \\ z_{2} \\ \vdots \\ z_{K} \end{array}\right]=\left[\begin{array}{c} \left(w_{1}\right)^{\mathrm{T}} \\ \left(w_{2}\right)^{\mathrm{T}} \\ \vdots \\ \left(w_{K}\right)^{\mathrm{T}} \end{array}\right] x ⎣⎢⎢⎢⎡z1z2⋮zK⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡(w1)T(w2)T⋮(wK)T⎦⎥⎥⎥⎤x
我们希望 Var ( z 1 ) \operatorname{Var}\left(z_{1}\right) Var(z1), Var ( z 2 ) \operatorname{Var}\left(z_{2}\right) Var(z2), Var ( z 3 ) \operatorname{Var}\left(z_{3}\right) Var(z3)…最大,即 Cov ( z ) \operatorname{Cov}(z) Cov(z)最大。
此时当 W W W为矩阵 S = C o v ( x ) S=Cov(x) S=Cov(x)的特征向值 α = λ \alpha = \lambda α=λ对应的特征向量时, C o v ( z ) = W T S W {Cov}(z) = W^{T} S W Cov(z)=WTSW最大。 而在SVD中,矩阵U为 X X T = ( x − x ˉ ) ( x − x ˉ ) T XX^T = (x-\bar{x})(x-\bar{x})^T XXT=(x−xˉ)(x−xˉ)T的特征向量。
S = C o v ( x ) = 1 N ∑ ( x − x ˉ ) ( x − x ˉ ) T S=Cov(x) = \frac{1}{N} \sum(x-\bar{x})(x-\bar{x})^{T} S=Cov(x)=N1∑(x−xˉ)(x−xˉ)T
X X T = ( x − x ˉ ) ( x − x ˉ ) T X X^{T}=(x-\bar{x})(x-\bar{x})^{T} XXT=(x−xˉ)(x−xˉ)T
也就证明了: { u 1 , u 2 , … u K } = { w 1 , w 2 , … w K } \left\{u^{1}, u^{2}, \ldots u^{K}\right\} = \left\{w^{1}, w^{2}, \ldots w^{K}\right\} {u1,u2,…uK}={w1,w2,…wK} 时,L就取得最小。
总结:在PCA中找到的W对应SVD中的U,在PCA中降维的输出z对应SVD中就是V。
假如使用PCA已经求出 w k w^k wk x ^ = ∑ k = 1 K c k w k ⟷ x − x ˉ \hat{x}=\sum_{k=1}^{K} c_{k} w^{k} \longleftrightarrow x-\bar{x} x^=k=1∑Kckwk⟷x−xˉ 由于 w k w^k wk是标准正交基,所以: c k = ( x − x ˉ ) ⋅ w k c^{k}=(x-\bar{x}) \cdot w^{k} ck=(x−xˉ)⋅wk 假设K=2: 使用神经网络+GD,输入是 x − x ˉ x-\bar{x} x−xˉ,输出是 x ^ \hat{x} x^,损失函数和上面类似: L = ( x − x ˉ ) − x ^ L =(x-\bar{x}) - \hat{x} L=(x−xˉ)−x^ 那么使用GD方法不可能找出的 w k w^k wk比PCA找出的重建误差还要小。 所以在linear情况下,用PCA是比较方便的,而用神经网络可以更深,也就是 Deep Autoencoder。
PCA是基于无标签的数据做处理,如果有标签使用PCA的话,可能会使得橙色和蓝色混在一起,有标签数据可以使用LDA(linear discriminant analysis)处理。
没法做非线性变换
有6个特征,所以会有6个特征值,对应特征向量是6维的。我们可以做截断式奇异值分解(有损压缩),比如只保留4个特征值,去掉2个不太重要的特征。
那么对应的特征向量,或者说w,或者u就是: PC1:代表综合能力的特征 PC2:代表防御但速度低的特征
图片看作是矩阵,可以分解成Eigen-digits或者Eigen-face。
由于c(或者上面的a)的元素可以是正或负,所以特征可以是全部数字笔画或者一个完整的轮廓。 使用NMF(non-negative matrix factorization)可以强制 a 1 , a 2 … … a_{1}, a_{2} \ldots \ldots a1,a2……非负,强制 w 1 , w 2 … … w^{1}, w^{2} \ldots \ldots w1,w2……非负,所以每个特征就只能相加,从而更像component。
矩阵分解是推荐系统中一个经典算法,这里再回顾一下和PCA的关系
根据用户对物品的喜爱程度,有下表: 我们希望通过矩阵分解得到用户对各个特征(特征个数K是经验值)的喜爱程度以及物体在各个特征上的强度,也就是在选定特征组成空间中的点。 具体做法: 上面表我们表示成矩阵X,用户数表示M,物体数表示N,潜在特征有K个 K中r是1xk的行向量,N中的r是kx1的列向量。 比如下面的例子: 把一个矩阵X分解,降为2个特征Dim1 和 Dim2 U k U_k Uk表示用户对2个特征的喜爱程度 V k V_k Vk表示物体在2个特征上的强度 这种完整的矩阵分解称为Pure MF/ Pure SVD,但是在真实数据中往往是比较稀疏的,存在很多空缺,需要推荐算法进行补充(也就是推荐)
利用GD求用户和物品的隐含向量表示。这种方法被称为FunkSVD。
也就求得:
然后就可以预测空缺的地方: 如果值比较大就可以进行推荐。
上面的例子在文章上表示就是LSA
降维的方法有很多,这里再列举一些与PCA有关的方法:
Multidimensional Scaling (MDS) [Alpaydin, Chapter 6.7]
MDS不需要把每个data都表示成feature vector,只需要知道特征向量之间的distance,就可以做降维,PCA保留了原来在高维空间中的距离,在某种情况下MDS就是特殊的PCA
Probabilistic PCA [Bishop, Chapter 12.2]
PCA概率版本
Kernel PCA [Bishop, Chapter 12.3]
PCA非线性版本
Canonical Correlation Analysis (CCA) [Alpaydin, Chapter 6.9]
CCA常用于两种不同的data source的情况,比如同时对声音信号和唇形的图像进行降维
Independent Component Analysis (ICA)
ICA常用于source separation,PCA找的是正交的组件,而ICA则只需要找“独立”的组件即可
Linear Discriminant Analysis (LDA) [Alpaydin, Chapter 6.8]
LDA是supervised的方式
以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用