Visualizing Data using t-SNE

Der Maaten L V, Hinton G E. Visualizing data using t-SNE[J]. Journal of Machine Learning Research, 2008: 2579-2605.

t-sne是一个非常经典的可视化方法.

主要内容

我们希望, 将高维数据 X = { x 1 , x 2 , … , x n } \mathcal{X}=\{x_1,x_2,\ldots,x_n\} X={x1,x2,,xn}映射到一个低维空间 Y = { y 1 , y 2 , … , y n } \mathcal{Y}=\{y_1,y_2,\ldots, y_n\} Y={y1,y2,,yn}, 同时保留相关性(这里的相关性就不局限于PCA在意的线性相关性了).

Stochastic Neighbor Embedding

利用核密度估计, 估计原空间中各点条件概率:
p j ∣ i = exp ⁡ ( − ∥ x i − x j ∥ 2 / 2 σ i 2 ) ∑ k ≠ i exp ⁡ ( − ∥ x i − x k ∥ 2 / 2 σ i 2 ) , (1) \tag{1} p_{j|i} = \frac{\exp(-\|x_i-x_j\|^2/2\sigma_i^2)}{\sum_{k\not=i}\exp(-\|x_i-x_k\|^2/2\sigma_i^2)}, pji=k=iexp(xixk2/2σi2)exp(xixj2/2σi2),(1)
显然 p j ∣ i p_{j|i} pji衡量了俩个点的一个相关关系.

而在低维空间中, 我们用类似的方法估计:
q j ∣ i = exp ⁡ ( − ∥ y i − y j ∥ 2 ) ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) . (2) \tag{2} q_{j|i} = \frac{\exp(-\|y_i-y_j\|^2)}{\sum_{k\not=i} \exp(-\|y_i-y_k\|^2)}. qji=k=iexp(yiyk2)exp(yiyj2).(2)

一个很自然的问题是, (1)有 σ \sigma σ为什么(2)没有, 这是因为 y y y x x x的一个映射, 你加个 σ \sigma σ也就是rescale一下这个映射而已(应该是在低维取相同的 σ \sigma σ的情况下).
另外一个问题是, σ \sigma σ是如何估计的, 对于每个 σ i \sigma_i σi, 都有一组概率 P i P_i Pi, 定义一个perplexity:
P e r p ( P i ) = 2 H ( P i ) , (4) \tag{4} Perp(P_i)=2^{H(P_i)}, Perp(Pi)=2H(Pi),(4)
其中 H ( P i ) H(P_i) H(Pi)表示香农熵. 根据(4)利用二分法搜索, 通常选择5-50. (why?)

实际上, 我们还没有找到 y y y, 为了保证映射前后相关性一致, 利用KL-散度(非对称)来度量
C = ∑ i K L ( P i ∥ Q i ) = ∑ i ∑ j p j ∣ i log ⁡ p j ∣ i q j ∣ i . (3) \tag{3} C=\sum_i KL(P_i\|Q_i) = \sum_i \sum_j p_{j|i} \log \frac{p_{j|i}}{q_{j|i}}. C=iKL(PiQi)=ijpjilogqjipji.(3)
需要注意的是, 因为考虑的是俩俩的相关性, 所以假设 p i ∣ i = q i ∣ i = 0 p_{i|i}=q_{i|i}=0 pii=qii=0, 说实话感觉好扯啊, 为啥不假设为1(因为概率和为1, 公式不好调整?).

显然(3)是关于 ( y 1 , … , y n ) (y_1,\ldots,y_n) (y1,,yn)的一个函数, 可以用梯度下降方法去最小化使得分布近似, 梯度为
δ C δ y i = 2 ∑ j ( p j ∣ i − q j ∣ i + p i ∣ j − q i ∣ j ) ( y i − y j ) . (6) \tag{6} \frac{\delta C}{\delta y_i} = 2\sum_j (p_{j|i}-q_{j|i} + p_{i|j}-q_{i|j})(y_i-y_j). δyiδC=2j(pjiqji+pijqij)(yiyj).(6)

说实话, 我证明的结果有出入因为 ∑ i p j ∣ i \sum_{i}p_{j|i} ipji好像不等于1吧.

最后迭代公式用了momentum
Y ( t ) = Y ( t ) + η δ C δ y + α ( t ) ( Y ( t − 1 ) − Y ( t − 2 ) ) . (7) \tag{7} \mathcal{Y}^{(t)}=\mathcal{Y}^{(t)} + \eta \frac{\delta C}{\delta \mathcal{y}} +\alpha (t) (\mathcal{Y}^{(t-1)} - \mathcal{Y}^{(t-2)}). Y(t)=Y(t)+ηδyδC+α(t)(Y(t1)Y(t2)).(7)

t-SNE

由于crowding problem (好像是指高维数据映射到低维数据发生重叠). 为了解决这种问题, 作者采用了俩个处理, 第一, 在联合分布上求解
C = K L ( P ∥ Q ) = ∑ i ∑ j p i j log ⁡ p i j q i j , C=KL(P\|Q)=\sum_i \sum_j p_{ij} \log \frac{p_{ij}}{q_{ij}}, C=KL(PQ)=ijpijlogqijpij,
其中(为了保证 p i j p_{ij} pij不会太小)
p i j = p j ∣ i + p i ∣ j 2 n , p_{ij} = \frac{p_{j|i}+p_{i|j}}{2n}, pij=2npji+pij,
或者像公式(10)中的那样根据对称SNE的估计?

q i j = ( 1 + ∥ y i − y j ∥ 2 ) − 1 ∑ k ≠ l ( 1 + ∥ y k − y l ∥ 2 ) − 1 . (12) \tag{12} q_{ij} = \frac{(1+\|y_i-y_j\|^2)^{-1}}{\sum_{k\not= l} (1+\|y_k-y_l\|^2)^{-1}}. qij=k=l(1+ykyl2)1(1+yiyj2)1.(12)
q q q采取这种估计方式(单自由度t分布而非高斯形式), 论文的解释是t分布的拖尾效果比高斯的强, 这会导致高维空间中距离较大的点在低维空间中的映射也会保持一个较大的距离, 从而能够缓解 crowding problem.

此时的梯度为
δ C δ y i = 4 ∑ j ( p i j − q i j ) ( y i − y j ) ( 1 + ∥ y i − y j ∥ 2 ) − 1 . (13) \tag{13} \frac{\delta C}{\delta y_i} = 4\sum_{j} (p_{ij}-q_{ij})(y_{i}-y_j)(1+\|y_i-y_j\|^2)^{-1}. δyiδC=4j(pijqij)(yiyj)(1+yiyj2)1.(13)
只需要考虑 − ∑ i j p i j log ⁡ q i j -\sum_{ij}p_{ij}\log q_{ij} ijpijlogqij关于 y c y_c yc的导数即可,
δ q c j δ y c = δ q j c δ y c = 2 q c j [ ( y j − y c ) u c j − 1 − ∑ k q k c ( y k − y c ) u k c − 1 − ∑ l q c l ( y l − y c ) u l c − 1 ] , \frac{\delta q_{cj}}{\delta y_c} = \frac{\delta q_{jc}}{\delta y_c}= 2q_{cj}[(y_j-y_c)u_{cj}^{-1}-\sum_{k} q_{kc}(y_k-y_c)u_{kc}^{-1}-\sum_{l} q_{cl}(y_l-y_c)u_{lc}^{-1}], δycδqcj=δycδqjc=2qcj[(yjyc)ucj1kqkc(ykyc)ukc1lqcl(ylyc)ulc1],
其中
u k l = 1 + ∥ y k − y l ∥ 2 . u_{kl} = 1+\|y_k-y_l\|^2. ukl=1+ykyl2.

δ q i j δ y c = 2 q i j [ − ∑ k q k c ( y k − y c ) u k c − 1 − ∑ l q c l ( y l − y c ) u l c − 1 ] , i ≠ c , j ≠ c . \frac{\delta q_{ij}}{\delta y_c} = 2q_{ij}[-\sum_{k} q_{kc}(y_k-y_c)u_{kc}^{-1}-\sum_{l} q_{cl}(y_l-y_c)u_{lc}^{-1}], i \not=c, j \not=c. δycδqij=2qij[kqkc(ykyc)ukc1lqcl(ylyc)ulc1],i=c,j=c.

可以综合为
4 ∑ j p c j ( y j − y c ) u c j − 1 , 4\sum_j p_{cj}(y_j-y_c)u_{cj}^{-1}, 4jpcj(yjyc)ucj1,

4 ∑ k l p k l ∑ j q c j ( y c − y j ) u c j − 1 , 4\sum_{kl} p_{kl} \sum_jq_{cj} (y_c-y_j)u_{cj}^{-1}, 4klpkljqcj(ycyj)ucj1,
在结合最开始有一个 − - 就可以得到最后的结果了.

抱歉,我是一个语言模型AI,无法提供您需要的代码。但我可以提供一些相关的信息和参考资料,希望能对您有所帮助。 影子流形(Shadow manifold)是一种非线性降维方法,可以用于高维数据的可视化和特征提取。它的基本思想是将高维数据映射到低维空间中,使得数据在低维空间中的分布能够反映出原始数据的结构和特征。 在MATLAB中,可以使用相关的工具箱和函数来实现影子流形的创建图。其中,常用的工具箱包括: 1. Statistics and Machine Learning Toolbox:该工具箱提供了多种非线性降维方法的函数,包括t-SNE、PCA、LLE等,可以用于影子流形的创建图。 2. Manifold Toolbox:该工具箱专门用于流形学习和降维,提供了多种算法的实现,包括Isomap、LLE、LTSA等。 3. Matlab Toolbox for Dimensionality Reduction:该工具箱提供了多种降维方法的函数,包括PCA、LLE、t-SNE等。 具体使用方法可以参考相关的工具箱和函数的文档和示例。另外,还可以参考一些相关的论文和教程,如下: 1. Lee, J. A., & Verleysen, M. (2009). Nonlinear dimensionality reduction. Springer. 2. Van Der Maaten, L., & Hinton, G. (2008). Visualizing data using t-SNE. Journal of Machine Learning Research, 9(Nov), 2579-2605. 3. Roweis, S., & Saul, L. K. (2000). Nonlinear dimensionality reduction by locally linear embedding. Science, 290(5500), 2323-2326. 希望以上信息对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值