t_SNE 非线性降维基础原理

简介: 本文记录了个人关于 非线性降维算法 t-SNE(t-Distributed Stochastic Neighbor Embedding)的学习理解,以供参考学习

1、PCA 线性降维

PCA 作为一种线性降维算法,它的线性体现在其本质是观察坐标系替换的时候,新坐标轴的生成本质是原始特征的一个线性组合,最后通过删减可解释方差最小的主成分完成数据的特征降维。

2、非线性降维

对于非线性降维算法,在于它不是寻找基于原始特征线性组合的方式生成新观察坐标系,而是关注数据集中相邻样本之间的相似性,并试图在低维空间中再现这些相似性。

2.1 t_SNE 降维策略

t_SNE 算法策略在于首先计算了高维空间中样本与样本间的欧式距离并转换为相似性分数,然后在一个二维空间上通过随机化所有样本并持续移动这些样本(移动过程基于KL散度建模),使得它们在二维空间中彼此间的距离与原始高维空间中的距离分布尽可能相似完成降维。

优点: t_SNE 相比 PCA 方法主要更好地 突出 数据集中的成簇特征。
缺点

  • ①生成的( tsne_1 和 tsne_2 特征轴 ) 不具有可解释性,因为它们不代表原始特征的逻辑组合,像 PCA 方法就可以清楚的根据特征向量解析主成分轴上原始特征的方差贡献情况。
  • ② t-SNE 在低维空间中的距离主要用来反映簇内样本间的相似性,但 簇间的距离不具有意义。比如对于在 t-SNE 中展示的3个集簇:两个距离很近,第三个距离另外两个很远,但不能说前两个簇彼此之间的相似性比它们与第三个集群之间的相似性更高。
  • 主要用于可视化,很难用于其他目的。

2.2 基本过程

step.1 首先计算原始高维空间内两两样本间的 欧式距离;然后通过高斯函数模型(高斯核)将距离度量矩阵转换成样本间的相似性分数矩阵 $X_{raw}$。由于 高斯核 受样本方差的影响,直接转换出的相似性分数对于一些稀疏的簇可能无法表征簇特征(因为样本间相似度变得很低),所以为了不同 $\sigma$ 参数计算的相似性分数变得可比同时在矩阵中突出簇特征,需要对原始的分数基于行进行比例归一化处理($p_{ij\_scale} = \frac {p_{ij}}{sum(p_i)}$)。

step.2 接下来初始化两个 tsne特征轴 并生成随机分布的所有样本。在这个二维空间内计算样本间的距离,并使用 t-分布概率密度函数 转换距离矩阵为相似性分数矩阵$X_{new}$。

t-SNE 本质是方法源于 SNE 降维策略提出的优化方法,SNE 在低维空间下也使用高斯函数来表达两点之间的相似度,但在低维后容易发生 crowding problem (拥挤问题,指的是各个簇聚集在一起无法区分)。 t-SNE 方法的提出主要是为了解决前者降维后所发生的 拥挤问题,在低维空间下使用了 t分布 替代高斯分布来表达两点之间的相似度, t分布 相比高斯分布函数曲线更平坦和具有更长的拖尾,这意味着高维空间内中低等相似的两个样本在低维空间的距离需要被放大(同理缩小相似样本的距离), t-分布概率密度函数 转换出的相似度才能与高斯核的结果相同。因此 t分布 的引入很好地满足了使得同一簇内的点(距离较近)聚合的更紧密,不同簇之间的点(距离较远)更加疏远的可视化目标。

step.3 最后一步就是根据两个相似性分数矩阵 $X_{raw}$ 和 $X_{new}$ 的差异性,使用 KL散度统计量 建模优化目标,计算梯度来移动初始化的系列样本点,使得每个样本都向高维特征空间中靠近它的样本点 靠拢,并 远离 高维特征空间中远离它的其它样本点。从而逐渐减少两个相似性分数矩阵的差异,也就是两个矩阵的KL散度统计量,一定迭代次数后收敛在低 KL 散度的获得tsne降维结果。
$$ C = \sum_{i}KL(P_i\|Q_i) = \sum_i\sum_j{p_{j|i}\log{\frac {p_{j|i}}{q_{j|i}}}}$$
$P$ 是高维空间上的相似性矩阵;$Q$ 是每次迭代后低维空间上的相似性矩阵。

tsne 使用KL散度(相对熵)作为损失函数存在罚分不对称的问题,即对于高维近低维远的情况罚分高(p = 0.99,q= 0.0001,cost = 0.99*log(0.99/0.0001) = 9),反过来对于高维远低维近的极端情况罚分却趋近于零(p = 0.0001,q= 0.99,cost = 0.0009)。从而导致目标点的移动过程中属于高维近低维远情况的移动步长更长($\frac {\partial C}{\partial q} = -\frac {p}{q}$),发生迭代到最后低维空间上出现整体相似的簇之间的距离比与不相似的簇之间的距离还要远的情况。也就是 tSNE 降维结果在全局结构上存在失真可能,所以 t-SNE 通常被认为在低维表示中主要保留相似样本的簇特征,但它不保留全局结构。最终表示中彼此接近的样本可以解释为彼此相似,但不能轻易说出原始数据中哪些样本簇与其它样本簇更相似。


Reference

① t-SNE 算法过程
② tsney与umap的差别
③ Maximizing similarity with t-SNE and UMAP
④ Softmax函数和交叉熵Cross-entropy以及KL散度求导_winycg的博客-CSDN博客_kl散度求导

目录
相关文章
|
6月前
|
机器学习/深度学习 算法 测试技术
【MATLAB】交叉验证求光滑因子的广义神经网络时序预测算法
【MATLAB】交叉验证求光滑因子的广义神经网络时序预测算法
99 0
|
3月前
|
机器学习/深度学习 算法 数据中心
【机器学习】面试问答:PCA算法介绍?PCA算法过程?PCA为什么要中心化处理?PCA为什么要做正交变化?PCA与线性判别分析LDA降维的区别?
本文介绍了主成分分析(PCA)算法,包括PCA的基本概念、算法过程、中心化处理的必要性、正交变换的目的,以及PCA与线性判别分析(LDA)在降维上的区别。
82 4
|
6月前
|
机器学习/深度学习 Python
使用Python实现特征选择与降维技术
使用Python实现特征选择与降维技术
51 2
使用Python实现特征选择与降维技术
|
6月前
|
数据可视化
主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化
主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化
|
传感器 算法 计算机视觉
非线性非高斯模型的改进粒子滤波算法(Matlab代码实现)
非线性非高斯模型的改进粒子滤波算法(Matlab代码实现)
165 0
|
6月前
|
机器学习/深度学习 算法
【MATLAB】交叉验证求光滑因子的广义神经网络回归预测算法
【MATLAB】交叉验证求光滑因子的广义神经网络回归预测算法
70 0
|
6月前
|
机器学习/深度学习 算法 数据可视化
降维算法了解一下
在机器学习中,随着数据特征的增加,需要更大的计算资源来训练模型。这可能导致模型的训练时间和内存消耗增加,甚至可能导致模型无法训练或训练结果不准确。 为此,降维算法成为机器学习领域中的一种重要技术,它可以将高维空间中的数据点映射到低维空间中。降维算法可以帮助我们发现数据中的隐藏模式和结构,提高模型的效果和性能。
|
机器学习/深度学习 数据采集 算法
学习笔记: 机器学习经典算法-主成分分析PCA与梯度上升法
机器学习经典算法-个人笔记和学习心得分享
141 0
|
机器学习/深度学习 数据采集 算法
【机器学习算法】4、降维算法之PCA(深入理解与实践)(一)
【机器学习算法】4、降维算法之PCA(深入理解与实践)(一)
165 0
|
机器学习/深度学习 算法
【机器学习算法】4、降维算法之PCA(深入理解与实践)(二)
【机器学习算法】4、降维算法之PCA(深入理解与实践)(二)
154 0