主成分分析顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是n n n 维的,共有m m m 个数据( x 1 , x 2 , … , x m ) (x_1,x_2,\dots,x_m) ( x 1 , x 2 , … , x m ) 。我们希望将这m m m 个数据的维度从n n n 维降到n ′ n' n ′ 维,希望这m m m 个n ′ n' n ′ 维的数据集尽可能的代表原始数据集。我们知道数据从n n n 维降到n ′ n' n ′ 维肯定会有损失,但是我们希望损失尽可能的小。那么如何让这n ′ n' n ′ 维的数据尽可能表示原来的数据呢?
我们先看看最简单的情况,也就是n = 2 n=2 n = 2 ,n ′ = 1 n'=1 n ′ = 1 ,也就是将数据从二维降维到一维。数据如下图。我们希望找到某一个维度方向,它可以代表这两个维度的数据。图中列了两个向量方向,u 1 u_1 u 1 和u 2 u_2 u 2 ,那么哪个向量可以更好的代表原始数据集呢? 例如下图,从直观上也可以看出,u 1 u_1 u 1 比u 2 u_2 u 2 好,这就是我们所说的最大可分性
上图是二维空间中经过中心化的一组数据,我们很容易看出主成分所在的轴(以下称为主轴)的大致方向,即上图中u 1 u_1 u 1 所在的轴。因为u 1 u_1 u 1 所处的轴上,数据分布的更为分散,这也意味着数据在这个方向上方差更大。在信号处理领域,我们认为信号具有较大方差,噪声具有较小方差,信号与噪声之比称为信噪比。信噪比越大意味着数据的质量越好,反之,信噪比越小意味着数据的质量越小。由此我们不难引出PCA的目标,即最大化投影方差 ,也就是让数据在主轴上投影的方差最大。
对于给定的一组数据点{ v 1 , v 2 , … , v n } \{v_1,v_2,\dots,v_n\} { v 1 , v 2 , … , v n } ,其中所有向量均为列向量,中心化后的表示为{ x 1 , x 2 , … , x n } = { v 1 − μ , v 2 − μ , … , v n − μ } \{x_1,x_2,\dots,x_n\}=\{v_1-\mu,v_2-\mu,\dots,v_n-\mu\} { x 1 , x 2 , … , x n } = { v 1 − μ , v 2 − μ , … , v n − μ } ,其中μ = 1 n ∑ i = 1 n v i \mu = \frac{1}{n}\sum\limits_{i=1}^nv_i μ = n 1 i = 1 ∑ n v i ,即每个数据点减样本集均值。我们知道,向量内积在几何上表示为第一个向量投影到第二个向量上的长度,因此向量x i x_i x i 在w w w (单位方向向量)上的投影坐标可以表示为( x i , w ) = x i T w (x_i,w)=x_i^Tw ( x i , w ) = x i T w 。所以目标是找到一个投影方向w w w ,使x 1 , x 2 , … , x n x_1,x_2,\dots,x_n x 1 , x 2 , … , x n 在w w w 上的投影方差尽可能大。易知,投影之后均值为0 0 0 (因为μ ′ = 1 n ∑ i = 1 n x i T w = ( 1 n ∑ i = 1 n x i T ) w = 0 \mu'=\frac{1}{n}\sum\limits_{i=1}^nx_i^Tw=(\frac{1}{n}\sum\limits_{i=1}^nx_i^T)w=0 μ ′ = n 1 i = 1 ∑ n x i T w = ( n 1 i = 1 ∑ n x i T ) w = 0 ,这也是我们进行中心化的意义),因此投影后的方差可以表示为:
D ( x ) = 1 n ∑ i = 1 n ( x i T w ) 2 = 1 n ∑ i = 1 n ( x i T w ) T ( x i T w ) = 1 n ∑ i = 1 n w T x i x i T w = w T ( 1 n ∑ i = 1 n x i x i T ) w D(x)=\frac{1}{n}\sum\limits_{i=1}^n(x_i^Tw)^2=\frac{1}{n}\sum\limits_{i=1}^n(x_i^Tw)^T(x_i^Tw)=\frac{1}{n}\sum\limits_{i=1}^nw^Tx_ix_i^Tw = w^T(\frac{1}{n}\sum\limits_{i=1}^nx_ix_i^T)w D ( x ) = n 1 i = 1 ∑ n ( x i T w ) 2 = n 1 i = 1 ∑ n ( x i T w ) T ( x i T w ) = n 1 i = 1 ∑ n w T x i x i T w = w T ( n 1 i = 1 ∑ n x i x i T ) w
1 n ∑ i = 1 n w T x i x i T w \frac{1}{n}\sum\limits_{i=1}^nw^Tx_ix_i^Tw n 1 i = 1 ∑ n w T x i x i T w 其实就是样本的协方差矩阵,我们将其写作∑ \sum ∑ ,且由于w w w 是单位方向向量,即w T w = 1 w^Tw=1 w T w = 1 。所以,我们要解决的最大化问题可表示为:
m a x { w T ∑ w } , s . t . w T w = 1 max\{w^T\sum w\},\ \ \ \ s.t.\ \ w^Tw=1 ma x { w T ∑ w } , s . t . w T w = 1
引入拉格朗日乘子,并对w w w 求导令其等于0 0 0 ,便可以推出∑ w = λ w \sum w=\lambda w ∑ w = λ w ,此时:
D ( x ) = w T ∑ w = λ w T w = λ D(x)=w^T\sum w = \lambda w^Tw=\lambda D ( x ) = w T ∑ w = λ w T w = λ
熟悉线性代数的马上会发现,原来x x x 投影后的方差就是协方差矩阵的特征值。我们要找到最大的方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值对应的特征向量。次佳投影方向位于最佳投影方向的正交空间中,是第二大特征值对应的特征向量,以此类推。所以有以下PCA求解方法:
取特征值前d d d 大对应的特征向量w 1 , w 2 , … , w d w_1,w_2,\dots,w_d w 1 , w 2 , … , w d ,通过以下映射将n n n 维样本映射到d d d 维:
x i ′ = [ w 1 T x i w 2 T x i . . w d T x i ] x'_i = \left[ \begin{matrix} w_1^Tx_i\\ w_2^Tx_i \\ . \\ .\\ w_d^Tx_i \end{matrix} \right] x i ′ = w 1 T x i w 2 T x i . . w d T x i
新的x i ′ x_i' x i ′ 的第d d d 维就是x i x_i x i 在第d d d 个主成分w d w_d w d 方向上的投影,通过选取最大的d d d 个特征值对应的特征向量,我们将方差较小的特征(噪声)抛弃,使得每个n n n 维列向量x i x_i x i 被映射为d d d 维列向量x i ′ x'_i x i ′ ,定义降维后的信息占比为: η = ∑ i = 1 d λ i 2 ∑ i = 1 n λ i 2 \eta=\sqrt{\frac{\sum\limits_{i=1}^d\lambda_i^2}{\sum\limits_{i=1}^n\lambda_i^2}} η = i = 1 ∑ n λ i 2 i = 1 ∑ d λ i 2
给定数据集 D = { ( x i , y i ) } i = 1 m , y i ∈ { 0 , 1 } D=\{(x_i,y_i)\}_{i=1}^m,\ \ y_i\in\{0,1\} D = {( x i , y i ) } i = 1 m , y i ∈ { 0 , 1 } ,
第 i i i 类的集合 X i X_i X i ,第 i i i 类的均值向量 μ i \mu_i μ i ,第 i i i 类的协方差矩阵 ∑ i \sum_i ∑ i , i ∈ { 0 , 1 } i\in\{0,1\} i ∈ { 0 , 1 } 即一共就两类
两类样本的中心在直线 w w w 上的投影,即直线与原均值向量的内积 w T μ 0 w^T\mu_0 w T μ 0 和 w T μ 1 w^T\mu_1 w T μ 1 。所有样本点都投影到直线上,则两类样本的协方差为 w T ∑ 0 w w^T\sum_0w w T ∑ 0 w 和 w T ∑ 1 w w^T\sum_1w w T ∑ 1 w
投影后类内方差最小,即 w T ∑ 0 w + w T ∑ 1 w w^T\sum_0w+w^T\sum_1w w T ∑ 0 w + w T ∑ 1 w 尽可能小
类间方差最大,即 ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 ||w^T\mu_0-w^T\mu_1||_2^2 ∣∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 尽可能大
J = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T ∑ 0 w + w T ∑ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( ∑ 0 + ∑ 1 ) w J=\frac{||w^T\mu_0-w^T\mu_1||_2^2}{w^T\sum_0w+w^T\sum_1w}=\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\sum_0+\sum_1)w} J = w T ∑ 0 w + w T ∑ 1 w ∣∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 = w T ( ∑ 0 + ∑ 1 ) w w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w
定义“类内散度矩阵”:S w = ∑ 0 + ∑ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T S_w=\sum_0+\sum_1=\sum\limits_{x\in X_0}(x-\mu_0)(x-\mu_0)^T+\sum\limits_{x\in X_1}(x-\mu_1)(x-\mu_1)^T S w = ∑ 0 + ∑ 1 = x ∈ X 0 ∑ ( x − μ 0 ) ( x − μ 0 ) T + x ∈ X 1 ∑ ( x − μ 1 ) ( x − μ 1 ) T
定义“类间散度矩阵”: S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T
J = w T S b w w T S w w J=\frac{w^TS_bw}{w^TS_ww} J = w T S w w w T S b w
这就是LDA欲最大化的目标,即 S b S_b S b 与 S w S_w S w 的“广义瑞利商”(Generalized Rayleigh Quotient)
如何确定 w w w 呢?注意到上式的分子和分母都是关于 w w w 的二次项,因此上式的解 w w w 的长度无关,只与其方向有关。不失一般性,令 w T S w w = 1 w^TS_ww=1 w T S w w = 1 ,上式等价于
m i n w ( − w T S b w ) s . t . w T S w w = 1 \mathop{min}\limits_w( -w^TS_bw)\ \ \ \ s.t.\ \ w^TS_ww=1 w min ( − w T S b w ) s . t . w T S w w = 1
S b w = λ S w w S_bw=\lambda S_ww S b w = λ S w w
其中 λ \lambda λ 是拉格朗日乘子。注意到 S b w S_bw S b w 的方向恒为 μ 0 − μ 1 \mu_0-\mu_1 μ 0 − μ 1 ,不妨令 S b w = λ ( μ 0 − μ 1 ) S_bw=\lambda(\mu_0-\mu_1) S b w = λ ( μ 0 − μ 1 ) 代入上式
w = S w − 1 ( μ 0 − μ 1 ) w=S_w^{-1}(\mu_0-\mu_1) w = S w − 1 ( μ 0 − μ 1 )
考虑到数值解的稳定性,在实践中通常是对 S w S_w S w 进行奇异值分解,即 S w = U ∑ V T S_w=U\sum V^T S w = U ∑ V T ,这里 ∑ \sum ∑ 是一个对角矩阵,其对角线上的元素是 S w S_w S w 的奇异值,然后再由 S w − 1 = V ∑ U T S_w^{-1}=V\sum U^T S w − 1 = V ∑ U T 得到 S w − 1 S_w^{-1} S w − 1 。值得一提的是,LDA可从贝叶斯决策理论的角度来阐述,并可证明,当两类数据同先验,满足高斯分布且协方差相等时,LDA可达到最优分类。
若有很多类别,还是基于LDA基本思想,每个类间距离最大,类内距离最小。假定存在 N N N 个类,且第 i i i 类示例数为 m i m_i m i ,我们先定义“全局散度矩阵”:
S t = S b + S w = ∑ i = 1 m ( x i − μ ) ( x i − μ ) T S_t=S_b+S_w=\sum\limits_{i=1}^m(x_i-\mu)(x_i-\mu)^T S t = S b + S w = i = 1 ∑ m ( x i − μ ) ( x i − μ ) T
其中 μ \mu μ 是所有示例的均值向量,将类内散度矩阵 S w S_w S w 重新定义为每个类别的散度矩阵之和,即
S w = ∑ i = 1 N S w i , S w i = ∑ x ∈ X i ( x − μ i ) ( x − μ i ) T S_w=\sum \limits_{i=1}^NS_{w_i}, \ \ \ \ S_{w_i}=\sum\limits_{x\in X_i}(x-\mu_i)(x-\mu_i)^T S w = i = 1 ∑ N S w i , S w i = x ∈ X i ∑ ( x − μ i ) ( x − μ i ) T
S b = S t − S w = ∑ i = 1 N m i ( μ i − μ ) ( μ i − μ ) T S_b=S_t-S_w=\sum\limits_{i=1}^Nm_i(\mu_i-\mu)(\mu_i-\mu)^T S b = S t − S w = i = 1 ∑ N m i ( μ i − μ ) ( μ i − μ ) T
显然,多分类LDA可以有多种实现方法:使用 S b S_b S b , S w S_w S w , S t S_t S t 三者中的任何两个即可,常见的一种实现是采用优化目标:
m a x W t r ( W T S b W ) t r ( W T S w W \mathop{max}\limits_W\ \frac{tr(W^TS_bW)}{tr(W^TS_wW} W ma x t r ( W T S w W t r ( W T S b W )
其中 W ∈ R d × ( N − 1 ) W\in \mathbb{R}^{d\times(N-1)} W ∈ R d × ( N − 1 ) ,上式可通过广义特征值问题求解: S b W = λ S w W S_bW=\lambda S_wW S b W = λ S w W 。W W W 的闭式解则是 S w − 1 S b S_w^{-1}S_b S w − 1 S b 的 d ′ d' d ′ 个最大非零广义特征值所对应的特征向量组成的矩阵, d ′ ≤ N − 1 d'\leq N-1 d ′ ≤ N − 1 。
若将 W W W 视为一个投影矩阵,则多分类LDA将样本投影到 d ′ d' d ′ 维空间。 d ′ d' d ′ 通常远小于数据原有的属性数 d d d 于是,可通过这个投影来减少样本点的维数,且投影过程中采用了类别信息,因此LDA也常被视为一种经典的监督降维技术。
独立分量分析( Independent Component Analysis, ICA)的最重要的假设就是信号源统计独立,将数据转换为独立的分量,使用更少的分量来描述数据。这个假设在大多数盲信号分离的情况中符合实际情况。即使当该假设不满足时,仍然可以用独立成分分析来把观察信号统计独立化,从而进一步分析数据的特性。独立成分分析的经典问题是“鸡尾酒会问题”(Cocktail Party Problem)。该问题描述的是给定混合信号,如何分离出鸡尾酒会中同时说话的每个人的独立信号。当有 N N N 个信号源时,通常假设观察信号也有 N N N 个(例如 N N N 个麦克风或者录音机)。该假设意味着混合矩阵是个方阵,即 J = D J = D J = D ,其中 D D D 是输入数据的维数, J J J 是系统模型的维数。对于 J < D J<D J < D 和 J > D J>D J > D 的情况,学术界也分别有不同研究。
经典的鸡尾酒宴会问题(cocktail party problem)。假设在party中有 n n n 个人,他们可以同时说话,我们也在房间中一些角落里共放置了 n n n 个声音接收器(Microphone)用来记录声音。宴会过后,我们从 n n n 个麦克风中得到了一组数据 { x ( i ) ( x 1 ( i ) , x 2 ( i ) , … , x n ( i ) ) ; i = 1 , … , m } \{x^{(i)}(x^{(i)}_1,x^{(i)}_2,\dots,x^{(i)}_n);i=1,\dots,m\} { x ( i ) ( x 1 ( i ) , x 2 ( i ) , … , x n ( i ) ) ; i = 1 , … , m } , i i i 表示采样的时间顺序,也就是说共得到了 m m m 组采样,每一组采样都是 n n n 维的。我们的目标是单单从这 m m m 组采样数据中分辨出每个人说话的信号。有 n n n 个人说话,就是有 n n n 个信号源 s ( s 1 , s 2 , … , s n ) T , s ∈ R n s(s_1,s_2,\dots,s_n)^T,\ s\in \mathbb{R}^n s ( s 1 , s 2 , … , s n ) T , s ∈ R n 每一维都是一个人的声音信号,每个人发出的声音信号独立。 A A A 是一个未知的混合矩阵(mixing matrix),用来组合叠加信号 s s s ,那么
这里的 x x x 不是一个向量,是一个矩阵。其中每个列向量是 x ( i ) , x ( i ) = A s ( i ) x^{(i)},x{(i)}=As^{(i)} x ( i ) , x ( i ) = A s ( i ) ,即下图
x ( i ) x^{(i)} x ( i ) 的每个分量都由 s ( i ) s^{(i)} s ( i ) 的分量线性表示。 A A A 和 s s s 都是未知的, x x x 是已知的,我们要想办法根据 x x x 来推出 s s s 。这个过程也称作盲信号分离。令 W = A − 1 W = A^{-1} W = A − 1 ,则
s ( i ) = A ( − 1 ) x ( i ) = W x ( i ) s^{(i)}=A^{(-1)}x^{(i)}=Wx^{(i)} s ( i ) = A ( − 1 ) x ( i ) = W x ( i )
W = [ − w 1 T − . . . − w n T − ] W = \left[ \begin{matrix} -\ w^T_1\ -\\ . \\ . \\ .\\ -\ w_n^T\ - \end{matrix} \right] W = − w 1 T − . . . − w n T −
s j ( i ) = w j T x ( i ) s_j^{(i)}=w_j^Tx^{(i)} s j ( i ) = w j T x ( i ) ,其 s j ( i ) s_j^{(i)} s j ( i ) 即说话人 j j j 在 i i i 时刻发出的信号
中心化: 求出 x x x 均值,然后所有 x x x 减去均值
漂白: 目的是为了让 x x x 相互独立。将 x x x 乘以一个矩阵变成 x ~ \widetilde{x} x (其协方差矩阵是 I I I )
x ~ = E D − 1 / 2 E T x \widetilde{x}=ED^{-1/2}E^Tx x = E D − 1/2 E T x ,其中 E { x ~ x ~ T } = I E\{\widetilde{x}\widetilde{x}^T\} = I E { x x T } = I
使用特征值分解来得到 E E E (特征向量矩阵)和 D D D (特征值对角矩阵) ,公式为 E { x x ~ } = E D E T E\{x\widetilde{x}\}=EDE^T E { x x } = E D E T
我们假设每 s i s_i s i 有概率密度 p s p_s p s ,那么给定时刻原信号的联合分布就是
p ( s ) = ∏ i = 1 n p s ( s i ) p(s) = \prod_{i=1}^np_s(s_i) p ( s ) = ∏ i = 1 n p s ( s i ) ,每个人发出的声音信号 s s s 各自独立
p ( x ) = p s ( W x ) ∣ W ∣ = ∣ W ∣ ∏ i = 1 n p s ( w i T x ) p(x)=p_s(Wx)|W| = |W|\prod_{i=1}^np_s(w_i^Tx) p ( x ) = p s ( W x ) ∣ W ∣ = ∣ W ∣ ∏ i = 1 n p s ( w i T x )
现在,我们需要知道 p ( s ) p(s) p ( s ) 和 w w w ,才能求得 p ( x ) p(x) p ( x ) ,首先我们假设 s s s 的累积分布函数符合sigmoid函数
g ( s ) = 1 1 + e − s g(s) = \frac{1}{1+e^{-s}} g ( s ) = 1 + e − s 1 ,求导后 p s ( s ) = g ′ ( s ) = e s ( 1 + e s ) 2 p_s(s)=g'(s)=\frac{e^s}{(1+e^s)^2} p s ( s ) = g ′ ( s ) = ( 1 + e s ) 2 e s ,这就是 s s s 的密度函数
然后,我们就剩下 W W W 需要求解了,使用最大似然估计的方法求解,使用前面得到的 x x x 的概率密度函数
上式括号里的其实就是 p ( x ( i ) ) p(x^{(i)}) p ( x ( i ) ) ,最终,我们可求得
W : = W + α ( [ 1 − 2 g ( w 1 T x ( i ) ) 1 − 2 g ( w 2 T x ( i ) ) . . 1 − 2 g ( w n T x ( i ) ) ] x ( i ) T + ( W T ) − 1 ) W: =W+\alpha ( \left[ \begin{matrix} 1-2g(w_1^Tx^{(i)})\\ 1-2g(w_2^Tx^{(i)}) \\ . \\ .\\ 1-2g(w_n^Tx^{(i)}) \end{matrix} \right]x^{(i)^T}+(W^T)^{-1}) W := W + α ( 1 − 2 g ( w 1 T x ( i ) ) 1 − 2 g ( w 2 T x ( i ) ) . . 1 − 2 g ( w n T x ( i ) ) x ( i ) T + ( W T ) − 1 ) ,其中 α \alpha α 是梯度上升速率,人为指定
s ( i ) = W x ( i ) s^{(i)}= Wx^{(i)} s ( i ) = W x ( i )
假设我们有 N N N 个 D D D 维线性不可分的数据 x n ∈ R D , n = { 1 , 2 , … , N } x_n\in \mathbb{R}^D, n=\{1,2,\dots,N\} x n ∈ R D , n = { 1 , 2 , … , N } 。我们引入一个非线性映射函数 ϕ \phi ϕ : R D → R M , x ∣ → z = ϕ ( x ) , M > D \mathbb{R}^D\to \mathbb{R}^M,\ x|\to z = \phi(x),\ M>D R D → R M , x ∣ → z = ϕ ( x ) , M > D ,通过这个非线性映射函数可以将原来的线性不可分的样本映射到更高维度,在这个高维空间中,本来在原空间中线性不可分的样本现在线性可分了
每个特征值向量 v i v_i v i 都能从输入数据的线性组合得到: v i = ∑ n a i , n ϕ ( x n ) v_i=\sum \limits_n a_{i,n}\phi(x_n) v i = n ∑ a i , n ϕ ( x n ) ,代入上式即可得高维度特征分解的表达式:
C ⋅ v i = λ i v i ⇒ 1 N ∑ n ϕ ( x n ) ϕ ( x n ) T ⋅ ( ∑ m a i , m ϕ ( x m ) ) = λ i ( ∑ m a i , m ϕ ( x m ) ) C\cdot v_i = \lambda_iv_i \Rightarrow \frac{1}{N}\sum \limits_n \phi(x_n)\phi(x_n)^T\cdot(\sum \limits_m a_{i,m}\phi(x_m)) = \lambda_i(\sum \limits_m a_{i,m}\phi(x_m)) C ⋅ v i = λ i v i ⇒ N 1 n ∑ ϕ ( x n ) ϕ ( x n ) T ⋅ ( m ∑ a i , m ϕ ( x m )) = λ i ( m ∑ a i , m ϕ ( x m ))
两边同时左乘 ϕ ( x l ) \phi(x_l) ϕ ( x l ) ,并引入一个N × N N\times N N × N 的核函数 K K K ,即可得低维度特征分解表达式:
1 N ∑ n K ( x l , x n ) ∑ m a i , m K ( x l , x m ) = λ i ∑ m a i , m K ( x l x m ) \frac{1}{N}\sum \limits_nK(x_l,x_n)\sum\limits_ma_{i,m}K(x_l,x_m)=\lambda_i\sum\limits_ma_{i,m}K(x_lx_m) N 1 n ∑ K ( x l , x n ) m ∑ a i , m K ( x l , x m ) = λ i m ∑ a i , m K ( x l x m )
⇒ K ⋅ a i = λ i N ⋅ a i \Rightarrow K\cdot a_i = \lambda_iN\cdot a_i ⇒ K ⋅ a i = λ i N ⋅ a i ,其中 K K K 是 N × N N\times N N × N 维核矩阵, a i a_i a i 是 N N N 维列向量
求解公式的含义就是求K最大的几个特征值所对应的特征向量,由于 K K K 为对称矩阵,所得的解向量彼此之间肯定是正交的。 但是,请注意,这里的 a a a 只是 K K K 的特征向量,但是其不是高维空间中的特征向量,回看 v i = ∑ n a i , n ϕ ( x n ) v_i=\sum \limits_n a_{i,n}\phi(x_n) v i = n ∑ a i , n ϕ ( x n ) 公式,高维空间中的特征向量 v v v 应该是由 a a a 进一步求出。
我们现在考虑核函数 K ( v 1 , v 2 ) = < v 1 , v 2 > 2 K(v_1,v_2)=<v_1,v_2>^2 K ( v 1 , v 2 ) =< v 1 , v 2 > 2 ,即“内积平方”。这里面 v 1 = ( x 1 , y 1 ) , v 2 = ( x 2 , y 2 ) v_1=(x_1,y_1),v_2=(x_2,y_2) v 1 = ( x 1 , y 1 ) , v 2 = ( x 2 , y 2 ) 是二维空间中的两个点。
这个核函数对应着二维到三维空间的映射,它的表达式是: P ( x , y ) = ( x 2 , 2 x y , y 2 ) P(x,y)=(x^2,\sqrt{2}xy,y^2) P ( x , y ) = ( x 2 , 2 x y , y 2 ) ,可以验证:
< P ( v 1 ) , P ( v 2 ) > = < ( x 1 2 , 2 x 1 y 1 , y 1 2 ) , ( x 2 2 , 2 x 2 y 2 , y 2 2 ) > <P(v_1),P(v_2)>=<(x_1^2,\sqrt{2}x_1y_1,y_1^2),(x_2^2,\sqrt{2}x_2y_2,y_2^2)> < P ( v 1 ) , P ( v 2 ) >=< ( x 1 2 , 2 x 1 y 1 , y 1 2 ) , ( x 2 2 , 2 x 2 y 2 , y 2 2 ) >
= x 1 2 x 2 2 + 2 x 1 x 2 y 1 y 2 + y 1 2 y 2 2 = ( x 1 x 2 + y 1 y 2 ) 2 = < v 1 , v 2 > 2 = K ( v 1 , v 2 ) =x_1^2x_2^2+2x_1x_2y_1y_2+y_1^2y_2^2=(x_1x_2+y_1y_2)^2 = <v_1,v_2>^2=K(v_1,v_2) = x 1 2 x 2 2 + 2 x 1 x 2 y 1 y 2 + y 1 2 y 2 2 = ( x 1 x 2 + y 1 y 2 ) 2 =< v 1 , v 2 > 2 = K ( v 1 , v 2 )
在P这个映射下,原来二维空间中的图在三维空间中的像是这个样子:
而三维中的这个判决边界,再映射回二维空间中是这样的:
在机器学习中常用的核函数,一般有这么几类,也就是LibSVM中自带的这几类:
1) 线性:
2) 多项式:
3) Radial basis function:
4) Sigmoid:
若要求原始空间中样本的距离在低维空间中得以保持,如上图所示,即得到多维缩放(Multiple Dimensional Scaling, MDS)。假定 m m m 个样本在原始空间的距离矩阵为 D ∈ R m × m D\in \mathbb{R}^{m\times m} D ∈ R m × m ,其第 i i i 行 j j j 列的元素 d i s t i j dist_{ij} d i s t ij 为样本 x i x_i x i 到 x j x_j x j 的距离。我们的目标是获得样本在 d ′ d' d ′ 维空间的表示 Z ∈ R d ′ × m , d ′ ≤ d Z\in \mathbb{R}^{d'\times m},\ d'\leq d Z ∈ R d ′ × m , d ′ ≤ d ,且任意两个样本在 d ′ d' d ′ 维空间中欧氏距离等于原始空间中的距离,即 ∣ ∣ z i − z j ∣ ∣ = d i s t i j ||z_i-z_j||=dist_{ij} ∣∣ z i − z j ∣∣ = d i s t ij
令 B = Z T Z ∈ R m × m B=Z^TZ\in \mathbb{R}^{m\times m} B = Z T Z ∈ R m × m ,其中 B B B 为降维后样本的内积矩阵, b i j = z i T z j b_{ij}=z_i^Tz_j b ij = z i T z j ,有
d i s t i j 2 = ∣ ∣ z i ∣ ∣ 2 + ∣ ∣ z j ∣ ∣ 2 − 2 z i T z j = b i i + b j j − 2 b i j dist_{ij}^2=||z_i||^2+||z_j||^2-2z_i^Tz_j=b_{ii}+b_{jj}-2b_{ij} d i s t ij 2 = ∣∣ z i ∣ ∣ 2 + ∣∣ z j ∣ ∣ 2 − 2 z i T z j = b ii + b jj − 2 b ij
令降维后的样本 Z Z Z 被中心化,即 ∑ i = 1 m z i = 0 \sum_{i=1}^mz_i=0 ∑ i = 1 m z i = 0 。显然,矩阵 B B B 的行与列之和均为零,即 ∑ i = 1 m b i j = ∑ j = 1 m b i j = 0 \sum_{i=1}^mb_{ij}=\sum_{j=1}^mb_{ij}=0 ∑ i = 1 m b ij = ∑ j = 1 m b ij = 0 ,易知
∑ i = 1 m d i s t i j 2 = t r ( B ) + m b j j \sum\limits_{i=1}^mdist_{ij}^2=tr(B)+mb_{jj} i = 1 ∑ m d i s t ij 2 = t r ( B ) + m b jj ∑ j = 1 m d i s t i j 2 = t r ( B ) + m b i i \sum\limits_{j=1}^mdist_{ij}^2=tr(B)+mb_{ii} j = 1 ∑ m d i s t ij 2 = t r ( B ) + m b ii ∑ i = 1 m ∑ j = 1 m d i s t i j 2 = 2 m t r ( B ) \sum\limits_{i=1}^m\sum\limits_{j=1}^m dist_{ij}^2=2m\ tr(B) i = 1 ∑ m j = 1 ∑ m d i s t ij 2 = 2 m t r ( B )
其中 t r ( ⋅ ) tr(\cdot) t r ( ⋅ ) 表示矩阵的迹(trace) , t r ( B ) = ∑ i = 1 m ∣ ∣ z i ∣ ∣ 2 tr(B)=\sum_{i=1}^m||z_i||^2 t r ( B ) = ∑ i = 1 m ∣∣ z i ∣ ∣ 2 ,令
d i s t i . 2 = 1 m ∑ j = 1 m d i s t i j 2 dist_{i.}^2=\frac{1}{m}\sum\limits_{j=1}^mdist_{ij}^2 d i s t i . 2 = m 1 j = 1 ∑ m d i s t ij 2 d i s t . j 2 = 1 m ∑ i = 1 m d i s t i j 2 dist_{.j}^2=\frac{1}{m}\sum\limits_{i=1}^mdist_{ij}^2 d i s t . j 2 = m 1 i = 1 ∑ m d i s t ij 2 d i s t . . 2 = 1 m 2 ∑ i = 1 m ∑ j = 1 m d i s t i j 2 dist{..}^2=\frac{1}{m^2}\sum\limits_{i=1}^m\sum\limits_{j=1}^mdist_{ij}^2 d i s t .. 2 = m 2 1 i = 1 ∑ m j = 1 ∑ m d i s t ij 2
b i j = − 1 2 ( d i s t i j 2 − d i s t i . 2 − d i s t . j 2 + d i s t . . 2 ) b_{ij}=-\frac{1}{2}(dist_{ij}^2-dist_{i.}^2-dist_{.j}^2+dist_{..}^2) b ij = − 2 1 ( d i s t ij 2 − d i s t i . 2 − d i s t . j 2 + d i s t .. 2 )
由此即可通过降维前后保持不变的距离矩阵 D D D 求取内积矩阵 B B B
对矩阵 B B B 做特征值分解, B = V Λ V T B=V\Lambda V^T B = V Λ V T ,其中 Λ = d i a g ( λ 1 , λ 2 , … , λ d ) \Lambda = diag(\lambda_1,\lambda_2,\dots,\lambda_d) Λ = d ia g ( λ 1 , λ 2 , … , λ d ) 为特征值构成的对角矩阵, λ 1 ≥ λ 2 ≥ ⋯ ≥ λ d \lambda_1\geq \lambda_2\geq \dots \geq \lambda_d λ 1 ≥ λ 2 ≥ ⋯ ≥ λ d , V V V 为特征向量矩阵。假定其中有 d ∗ d^* d ∗ 个非零特征值,它们构成的对角矩阵 Λ ∗ = d i a g ( λ 1 , λ 2 , … , λ d ∗ ) \Lambda_*=diag(\lambda_1,\lambda_2,\dots,\lambda_{d^*}) Λ ∗ = d ia g ( λ 1 , λ 2 , … , λ d ∗ ) ,令 V ∗ V_* V ∗ 表示相应的特征向量矩阵,则 Z Z Z 可表达为
Z = Λ ∗ 1 / 2 V ∗ T ∈ R d ∗ × m Z=\Lambda_*^{1/2}V_*^T\in\mathbb{R}^{d^*\times m} Z = Λ ∗ 1/2 V ∗ T ∈ R d ∗ × m
在现实应用中为了有效降维,往往仅需降维后的距离与原始空间中的距离尽可能接近,而不必严格相等。此时可取 d ′ ≪ d d'\ll d d ′ ≪ d 个最大特征值构成的对角矩阵 Λ ~ = d i a g ( λ 1 , λ 2 , … , λ d ′ ) \widetilde{\Lambda}=diag(\lambda_1,\lambda_2,\dots,\lambda_{d'}) Λ = d ia g ( λ 1 , λ 2 , … , λ d ′ ) ,令 V ~ \widetilde{V} V 表示相应的特征向量矩阵,则 Z Z Z 可表达为
Z = Λ ~ 1 / 2 V ~ T ∈ R d ∗ × m Z=\widetilde{\Lambda}^{1/2}\widetilde{V}^T\in\mathbb{R}^{d^*\times m} Z = Λ 1/2 V T ∈ R d ∗ × m
输入: 距离矩阵 D ∈ R m × m D\in \mathbb{R}^{m\times m} D ∈ R m × m ,其元素 d i s t i j dist_{ij} d i s t ij ,为样本 x i x_i x i 到 x j x_j x j 的距离;低维空间维数 d ′ d' d ′
1:根据上面公式计算 d i s t i . 2 dist_{i.}^2 d i s t i . 2 , d i s t . j 2 dist_{.j}^2 d i s t . j 2 , d i s t . . 2 dist_{..}^2 d i s t .. 2
4:取 Λ ~ \widetilde{\Lambda} Λ 为 d ′ d' d ′ 个最大特征所构成的对角矩阵, V ~ \widetilde{V} V 为相应的特征向量矩阵
输出: 矩阵 V ~ T Λ ~ 1 / 2 ∈ R m × d ′ \widetilde{V}^T\widetilde{\Lambda}^{1/2}\in\mathbb{R}^{m\times d'} V T Λ 1/2 ∈ R m × d ′ ,每行是一个样本的低维坐标
输入: 样本集 D = { x 1 , x 2 , … , x m } D=\{x_1,x_2,\dots,x_m\} D = { x 1 , x 2 , … , x m } ;近邻参数 k k k ;低维空间维数 d ′ d' d ′
for i = 1 , 2 , … , m i=1,2,\dots,m i = 1 , 2 , … , m do
x i x_i x i 与 k k k 近邻点之间的距离设置为欧氏距离,与其他店的距离设置为无穷大
调用最短路径算法(eg. Dijkstra)计算任意两样本点之间距离 d i s t ( x i , x j ) dist(x_i,x_j) d i s t ( x i , x j )
将 d i s t ( x i , x j ) dist(x_i,x_j) d i s t ( x i , x j ) 作为MDS算法的输入
输出: 样本集 D D D 在低维空间的投影 Z = { z 1 , z 2 , … , z m } Z=\{z_1,z_2,\dots,z_m\} Z = { z 1 , z 2 , … , z m }
即样本点 x i x_i x i 的坐标能通过它的领域样本 x j x_j x j , x k x_k x k , x l x_l x l 的坐标通过线性组合而重构出来,而这里的权值参数在低维和高维空间是一致的,即
x i = w i j x j + w i k x k + w i l x l x_i=w_{ij}x_j+w_{ik}x_k+w_{il}x_l x i = w ij x j + w ik x k + w i l x l
第一步,先为每个样本 x i x_i x i 找到其近邻下标集合 Q i Q_i Q i ,然后计算出基于 Q i Q_i Q i 中的所有的样本点对 x i x_i x i 进行线性重构系数 w i w_i w i ,也就是找出每一个样本和其领域内的样本之间的线性关系
第二步,在低维空间领域重构系数 w i w_i w i 不变,去求每个样本在低维空间的坐标
m i n Z t r ( Z M Z T ) s . t . Z Z T = I \mathop{min}\limits_Z tr(ZMZ^T)\ \ \ \ s.t.ZZ^T=I Z min t r ( ZM Z T ) s . t . Z Z T = I
问题就成了对 M M M 矩阵进行特征分解,然后取最小的 d ′ d' d ′ 个特征值对应的特征向量组成低维空间的坐标 Z Z Z
SNE先将欧氏距离转换为条件概率来表达点与点之间的相似度。具体来说,给定 N N N 个高维数据 x 1 , x 2 , … , x N x_1,x_2,\dots,x_N x 1 , x 2 , … , x N ,先计算概率 p i j p_{ij} p ij ,正比于 x i x_i x i 和 x j x_j x j 之间的相似度(这种概率是我们自己构建的),即
p j ∣ i = e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 / ( 2 σ i 2 ) ) ∑ k ≠ i e x p ( − ∣ ∣ x i − x k ∣ ∣ 2 / ( 2 σ i 2 ) ) p_{j|i} = \frac{exp(-||x_i-x_j||^2/(2\sigma_i^2))}{\sum_{k\neq i}exp(-||x_i-x_k||^2/(2\sigma_i^2))} p j ∣ i = ∑ k = i e x p ( − ∣∣ x i − x k ∣ ∣ 2 / ( 2 σ i 2 )) e x p ( − ∣∣ x i − x j ∣ ∣ 2 / ( 2 σ i 2 ))
σ i \sigma_i σ i 依据不同的 x i x_i x i 取值不同,此外因为我们关注的是两两之间的相似度,所以设置 p x ∣ x = 0 p_{x|x}=0 p x ∣ x = 0 。对于低维度下的 y i y_i y i ,我们可以指定高斯分布的方差为 1 2 \frac{1}{\sqrt{2}} 2 1 ,因此它们之间的相似度如下
q j ∣ i = e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 ) ∑ k ≠ i e x p ( − ∣ ∣ x i − x k ∣ ∣ 2 ) q_{j|i} = \frac{exp(-||x_i-x_j||^2)}{\sum_{k\neq i}exp(-||x_i-x_k||^2)} q j ∣ i = ∑ k = i e x p ( − ∣∣ x i − x k ∣ ∣ 2 ) e x p ( − ∣∣ x i − x j ∣ ∣ 2 ) ,同样设定 q x ∣ x = 0 q_{x|x}=0 q x ∣ x = 0
如果姜维的效果比较好,局部特征保留完整,那么 p i ∣ j = q i ∣ j p_{i|j}=q_{i|j} p i ∣ j = q i ∣ j ,因此我们优化两个分布之间的距离 K L KL K L 散度,那么目标函数如下
C = ∑ i K L ( P i ∣ ∣ Q i ) = ∑ i ∑ j p j ∣ i l o g p j ∣ i q j ∣ i C=\sum\limits_iKL(P_i||Q_i)=\sum\limits_i\sum\limits_jp_{j|i}log\frac{p_{j|i}}{q_{j|i}} C = i ∑ K L ( P i ∣∣ Q i ) = i ∑ j ∑ p j ∣ i l o g q j ∣ i p j ∣ i
这里的 P i P_i P i 表示了给定 x i x_i x i 下,其他所有数据点的条件概率分布。需要注意的是KL散度具有不对称性,在低维映射中不同距离对应的惩罚权重是不同的,具体来说:距离较远的两个点来表达距离较近的两个点会产生更大的cost,相反,用较近的两个点来表达较远的两个点产生的cost相对较小,即用较小的 q j ∣ i = 0.2 q_{j|i}=0.2 q j ∣ i = 0.2 来建模较大的 p j ∣ i = 0.8 p_{j|i}=0.8 p j ∣ i = 0.8 ,cost为 p l o g ( p q ) = 1.11 plog(\frac{p}{q})=1.11 pl o g ( q p ) = 1.11 ,同样用较大的 q j ∣ i = 0.8 q_{j|i}=0.8 q j ∣ i = 0.8 来建模较大的 p j ∣ i = 0.2 p_{j|i}=0.2 p j ∣ i = 0.2 ,cost为 p l o g ( p q ) = − 0.277 plog(\frac{p}{q})=-0.277 pl o g ( q p ) = − 0.277 ,因此,SNE会倾向于保留数据中的局部特征。
首先,不同的点具有不同的 σ i \sigma_i σ i , P i P_i P i 的熵会随着 σ i \sigma_i σ i 的增加而增加。SNE使用困惑度 的概念,用二分搜索的方式来寻找一个最佳的 σ \sigma σ 。
困惑度: P e r p ( P i ) = 2 H ( p i ) Perp(P_i)=2^{H(p_i)} P er p ( P i ) = 2 H ( p i ) ,熵: H ( p i ) = − ∑ j p j ∣ i l o g 2 p j ∣ i H(p_i)=-\sum\limits_jp_{j|i}log_2p_{j|i} H ( p i ) = − j ∑ p j ∣ i l o g 2 p j ∣ i
困惑度可以解释为一个点附近的有效近邻点个数。SNE对困惑度的调整比较有鲁棒性,通常选在 5 5 5 至 50 50 50 之间,给定之后,使用二分搜索的方式寻找合适的 σ \sigma σ
那么核心问题就是如何求解梯度了,目标函数等价于 ∑ ∑ − p l o g ( q ) \sum\sum-plog(q) ∑∑ − pl o g ( q ) 这个式子与softmax非常相似,我们知道softmax的目标函数是 ∑ ∑ − y l o g ( p ) \sum\sum-ylog(p) ∑∑ − y l o g ( p ) ,对应的梯度是 y − p y-p y − p (注:这里的softmax中y表示label,p表示预估值)。 同样我们可以推导SNE的目标函数中的 i i i 在 j j j 下的条件概率情况的梯度是 2 ( p i ∣ j − q i ∣ j ) ( y i − y j ) 2(p_{i|j}-q_{i|j})(y_i-y_j) 2 ( p i ∣ j − q i ∣ j ) ( y i − y j ) , 同样j在i下的条件概率的梯度是 2 ( p j ∣ i − q j ∣ i ) ( y i − y j ) 2 ( p j ∣ i − q j ∣ i ) ( y i − y j ) 2(p_{j|i}−q_{j|i})(y_i−y_j)2(p_{j|i}−q_{j|i})(y_i−y_j) 2 ( p j ∣ i − q j ∣ i ) ( y i − y j ) 2 ( p j ∣ i − q j ∣ i ) ( y i − y j ) , 最后得到完整的梯度公式如下:
δ C δ y i = 2 ∑ j ( p j ∣ i − q j ∣ i + p i ∣ j − q i ∣ j ) ( y i − y j ) \frac{\delta C}{\delta y_i} = 2\sum\limits_j(p_{j|i}-q_{j|i}+p_{i|j}-q_{i|j})(y_i-y_j) δ y i δ C = 2 j ∑ ( p j ∣ i − q j ∣ i + p i ∣ j − q i ∣ j ) ( y i − y j )
在初始化中,可以用较小的 σ \sigma σ 下的高斯分布来进行初始化。为了加速优化过程和避免陷入局部最优解,梯度中需要使用一个相对较大的动量。即参数更新中除了当前梯度,还要引入之前的梯度累加的指数衰退项,如下:
Y ( t ) = Y ( t − 1 ) + η δ C δ Y + α ( t ) ( Y ( t − 1 ) − Y ( t − 2 ) ) Y^{(t)}=Y^{(t-1)}+\eta\frac{\delta C}{\delta Y}+\alpha(t)(Y^{(t-1)}-Y^{(t-2)}) Y ( t ) = Y ( t − 1 ) + η δ Y δ C + α ( t ) ( Y ( t − 1 ) − Y ( t − 2 ) )
这里的 Y ( t ) Y^{(t)} Y ( t ) 表示迭代 t t t 次的解, η \eta η 表示学习速率, α ( t ) \alpha(t) α ( t ) 表示迭代 t t t 次的动量。
2、低维空间下,使用 t t t 分布代替高斯分布表达两点之间的相似度
对称版SNE使用联合概率分布来替换条件概率分布,即 P P P 是高维空间里各个点的联合概率分布, Q Q Q 是低维空间下的,目标函数为:
C = K L ( P ∣ ∣ Q ) = ∑ i ∑ j p i , j l o g p i j q i j C=KL(P||Q)=\sum\limits_i\sum\limits_jp_{i,j}log\frac{p_{ij}}{q_{ij}} C = K L ( P ∣∣ Q ) = i ∑ j ∑ p i , j l o g q ij p ij
这里的 p i i p_{ii} p ii 和 q i i q_{ii} q ii 我们依旧设置为 0 0 0 ,我们将这种SNE称之为对称SNE,因为假设了对于任意 i i i , p i j = p j i p_{ij}=p_{ji} p ij = p ji , q i j = q j i q_{ij}=q_{ji} q ij = q ji ,因此概率分布可以改写为:
p i j = e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 / ( 2 σ i 2 ) ) ∑ k ≠ l e x p ( − ∣ ∣ x k − x l ∣ ∣ 2 / ( 2 σ i 2 ) ) p_{ij} = \frac{exp(-||x_i-x_j||^2/(2\sigma_i^2))}{\sum_{k\neq l}exp(-||x_k-x_l||^2/(2\sigma_i^2))} p ij = ∑ k = l e x p ( − ∣∣ x k − x l ∣ ∣ 2 / ( 2 σ i 2 )) e x p ( − ∣∣ x i − x j ∣ ∣ 2 / ( 2 σ i 2 )) q i j = e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 ) ∑ k ≠ l e x p ( − ∣ ∣ x k − x l ∣ ∣ 2 ) q_{ij} = \frac{exp(-||x_i-x_j||^2)}{\sum_{k\neq l}exp(-||x_k-x_l||^2)} q ij = ∑ k = l e x p ( − ∣∣ x k − x l ∣ ∣ 2 ) e x p ( − ∣∣ x i − x j ∣ ∣ 2 )
这种表达方式使得整体简洁了很多,但是会有引入异常值的问题。比如 x i x_i x i 是异常值,那么 ∣ ∣ x i − x j ∣ ∣ 2 ||x_i-x_j||^2 ∣∣ x i − x j ∣ ∣ 2 很会大,对应的所有的 x j x_j x j , p i j p_{ij} p ij 都会很小,导致低维映射下的 y i y_i y i 对cost影响很小。为了解决这个问题,我们将联合分布修正为: p i j = p i ∣ j + p j ∣ i 2 p_{ij}=\frac{p_{i|j}+p_{j|i}}{2} p ij = 2 p i ∣ j + p j ∣ i ,这保证了 ∑ j p i j > 1 2 n \sum_jp_{ij}>\frac{1}{2n} ∑ j p ij > 2 n 1 ,使得每个点对于cost都会有一定的贡献。对称SNE的最大优点是梯度计算变得简单,如下:
δ C δ y i = 4 ∑ j ( p i j − q i j ) ( y i − y j ) \frac{\delta C}{\delta y_i}=4\sum\limits_j(p_{ij}-q_{ij})(y_i-y_j) δ y i δ C = 4 j ∑ ( p ij − q ij ) ( y i − y j )
拥挤问题就是说各个簇聚集在一起,无法区分。比如有一种情况,高维度数据在降维到10维下,可以有很好的表达,但是降维到两维后无法得到可信映射,比如降维如10维中有11个点之间两两等距离的,在二维下就无法得到可信的映射结果(最多3个点)。 进一步的说明,假设一个以数据点 x i x_i x i 为中心,半径为 r r r 的 m m m 维球(三维空间就是球),其体积是按 r m r^m r m 增长的,假设数据点是在 m m m 维球中均匀分布的,我们来看看其他数据点与 x i x_i x i 的距离随维度增大而产生的变化。
从上图可以看到,随着维度的增大,大部分数据点都聚集在 m m m 维球的表面附近,与点 x i x_i x i 的距离分布极不均衡。如果直接将这种距离关系保留到低维,就会出现拥挤问题。为了解决拥挤问题, Cook et al.(2007) 提出一种slight repulsion的方式,在基线概率分布(uniform background)中引入一个较小的混合因子 ρ \rho ρ ,这样 q i j q_{ij} q ij 就永远不会小于 2 ρ n ( n − 1 ) \frac{2\rho}{n(n-1)} n ( n − 1 ) 2 ρ (因为一共了 n ( n − 1 ) n(n-1) n ( n − 1 ) 个pairs),这样在高维空间中比较远的两个点之间的 q i j q_{ij} q ij 总是会比 p i j p_{ij} p ij 大一点。这种称之为UNI-SNE,效果通常比标准的SNE要好。优化UNI-SNE的方法是先让 ρ \rho ρ 为0,使用标准的SNE优化,之后用模拟退火的方法的时候,再慢慢增加 ρ \rho ρ 。直接优化UNI-SNE是不行的(即一开始 ρ \rho ρ 不为0),因为距离较远的两个点基本是一样的 q i j q_{ij} q ij (等于基线分布), 即使 p i j p_{ij} p ij 很大,一些距离变化很难在 q i j q_{ij} q ij 中产生作用。也就是说优化中刚开始距离较远的两个聚类点,后续就无法再把他们拉近了。
q i j = ( 1 + ∣ ∣ y i − y j ∣ ∣ 2 ) − 1 ∑ k ≠ l ( 1 + ∣ ∣ y i − y j ∣ ∣ 2 ) − 1 q_{ij}=\frac{(1+||y_i-y_j||^2)^{-1}}{\sum_{k\neq l(1+||y_i-y_j||^2)^{-1}}} q ij = ∑ k = l ( 1 + ∣∣ y i − y j ∣ ∣ 2 ) − 1 ( 1 + ∣∣ y i − y j ∣ ∣ 2 ) − 1
δ C δ y i = 4 ∑ j ( p i j − q i j ) ( y i − y j ) ( 1 + ∣ ∣ y i − y j ∣ ∣ 2 ) − 1 \frac{\delta C}{\delta y_i}=4\sum\limits_j(p_{ij}-q_{ij})(y_i-y_j)(1+||y_i-y_j||^2)^{-1} δ y i δ C = 4 j ∑ ( p ij − q ij ) ( y i − y j ) ( 1 + ∣∣ y i − y j ∣ ∣ 2 ) − 1