t-SNE和UMAP学习记录

t-SNE和UMAP学习记录

来源:https://www.youtube.com/watch?v=o_cAOa5fMhE

t-SNE

思想:

使高维接近的点在低维投影仍然接近

image.png

数学建模

∂  Loss (HighDim, LowDim)  ∂  LowDim  \frac{\partial \text { Loss (HighDim, LowDim) }}{\partial \text { LowDim }}  LowDim  Loss (HighDim, LowDim) 

  1. 将点距离远近转换为归一化的高斯概率分布(高维空间)。

    方差 σ \sigma σ为超参数,称为困惑度, σ \sigma σ值越大,覆盖的点越多,但在实践中,他的作用不明显,需要多尝试直到对可视化满意。此外,困惑度越大计算越慢。
    p i , j = e − ∥ x i − x j ∥ 2 2 σ i 2 ∑ k ≠ i e − ∥ x i − x k ∥ 2 2 σ i 2 p_{i, j}=\frac{e^{-\frac{\left\|x_i-x_j\right\|^2}{2 \sigma_i^2}}}{\sum_{k \neq i} e^{-\frac{\left\|x_i-x_k\right\|^2}{2 \sigma_i^2}}} pi,j=k=ie2σi2xixk2e2σi2xixj2
    image.png

  2. 在低维空间随机初始化一个分布,点距离同样用归一化高斯概率分布表示
    q i , j = e − ∥ y i − y j ∥ 2 ∑ k ≠ i e − ∥ y i − y k ∥ q_{i, j}=\frac{e^{-\left\|y_i-y_j\right\|^2}}{\sum_{k \neq i} e^{-\left\|y_i-y_k\right\|}} qi,j=k=ieyiykeyiyj2

  3. 用KL散度描述p、q分布的差异
    D K L ( P ∥ Q ) = ∑ i P ( i ) log ⁡ P ( i ) Q ( i ) D_{K L}(P \| Q)=\sum_i P(i) \log \frac{P(i)}{Q(i)} DKL(PQ)=iP(i)logQ(i)P(i)
    在这里插入图片描述

  4. KL散度对低维求梯度,据此调整低维分布
    ∂ D K L ( P ∥ Q ) ∂ y i = 2 ∑ j ( p i , j − q i , j + p j , i − q j , i ) ( y i − y j ) \frac{\partial D_{K L}(P \| Q)}{\partial y_i}=2 \sum_j\left(p_{i, j}-q_{i, j}+p_{j, i}-q_{j, i}\right)\left(y_i-y_j\right) yiDKL(PQ)=2j(pi,jqi,j+pj,iqj,i)(yiyj)

优缺点

相较于PCA,主要优点是可以处理非线性数据。

image.png

主要缺点是运算慢,困惑度越大计算越慢,t-SNE使用t分布加速运算。

UMAP

思想

使高维接近的点在低维投影仍然接近,但不是使用概率分布,而是使用图来表示高维和低维数据

在这里插入图片描述

主要步骤

找到每个样本的最近k个邻居,得到初始的二元图。k是UMAP的主要超参数。

在这里插入图片描述

二元图转换为加权图,以表示每个点与邻居的接近程度。

v i , j = e − max ⁡ ( 0 , d ( x i , x j ) − ρ i ) σ i v_{i, j}=e^{-\frac{\max \left(0, d\left(x_i, x_j\right)-\rho_i\right)}{\sigma_i}} vi,j=eσimax(0,d(xi,xj)ρi)

ρ i =  distance to nearest neighbor  \rho_i=\text { distance to nearest neighbor } ρi= distance to nearest neighbor ​​,概率值随着距离增加指数衰减,最近的邻居权重为1。不用归一化,运算速度比t-SNE更快。

将所有样本的加权图合并为1个

在这里插入图片描述

方式是将图对称化,使得任意两个点之间只有一条边:
w i j = v i , j + v j , i − v i , j ⋅ v j , i w_{i j}=v_{i, j}+v_{j, i}-v_{i, j} \cdot v_{j, i} wij=vi,j+vj,ivi,jvj,i
这个方程的作用是,结合边,并保持权重在0和1之间。

对高维和低维表示最小化交叉熵

image.png

用邻接矩阵表示加权图

在这里插入图片描述

∑ i , j w h d ( i , j ) log ⁡ ( w h d ( i , j ) w l d ( i , j ) ) + ( 1 − w h d ( i , j ) ) log ⁡ ( 1 − w h d ( i , j ) 1 − w l d ( i , j ) ) \sum_{i, j} w_{h d}(i, j) \log \left(\frac{w_{h d}(i, j)}{w_{l d}(i, j)}\right)+\left(1-w_{h d}(i, j)\right) \log \left(\frac{1-w_{h d}(i, j)}{1-w_{l d}(i, j)}\right) i,jwhd(i,j)log(wld(i,j)whd(i,j))+(1whd(i,j))log(1wld(i,j)1whd(i,j))

优缺点

优点:计算快,效果好,擅长保持全局结构。

缺点:超参数影响大。

python

pip install umap-learn

import umap
reducer = umap.UMAP()
embedding = reducer.fit_transform(scaled_penguin_data)

'''-----------------------------------------------------------------'''
UMAP(a=None, angular_rp_forest=False, b=None,
     force_approximation_algorithm=False, init='spectral', learning_rate=1.0,
     local_connectivity=1.0, low_memory=False, metric='euclidean',
     metric_kwds=None, min_dist=0.1, n_components=2, n_epochs=None,
     n_neighbors=15, negative_sample_rate=5, output_metric='euclidean',
     output_metric_kwds=None, random_state=42, repulsion_strength=1.0,
     set_op_mix_ratio=1.0, spread=1.0, target_metric='categorical',
     target_metric_kwds=None, target_n_neighbors=-1, target_weight=0.5,
     transform_queue_size=4.0, transform_seed=42, unique=False, verbose=False)

=-1, target_weight=0.5,
transform_queue_size=4.0, transform_seed=42, unique=False, verbose=False)














  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hardw_littlew

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值