可视化降维方法 t-SNE
本篇主要介绍很好的降维方法t-SNE的原理
- 详细介绍了困惑度perplexity对有效点的影响
- 首先介绍了SNE
- 然后在SNE的基础上进行改进:1.使用对称式。2.低维空间概率计算使用t分布
t-SNE(t分布和SNE的组合)
- 以前的方法有个问题:只考虑相近的点在降维后应该接近,但没有考虑不相近的点在降维后应该比较远
- t-SNE主要原理为:
其中 S(xi,xj)S(x^i , x^j)S(xi,xj) 代表 xix^ixi 与 xjx^jxj 之间的相似度
SNE
原理:
这里可以看做高斯函数,∣∣xi−xj∣∣2{||x_i - x_j||}^2∣∣xi−xj∣∣2 是自变量 , 也就是横坐标,高斯函数的值是纵坐标。方差越大,高斯函数越平滑,概率高的点就比较多。方差越小,函数越尖锐,概率大的点就比较少。可以认为,当我们在寻找一个点的邻近点时,方差可以调节我们寻找的主要邻近点的个数
特点
考虑计算原始空间中,其他所有点 j 与点 i 之间的距离,并转换为概率,代表相似程度
用指数,距离一拉开,相似度会迅速下降
我们的目标就是在目标空间中找其他所有点 j 与点 i 之间的距离,并转换为概率,且这个概率和原始空间的概率越接近越好
- 接近就代表着分布类似
- 保证了离得近的点还离得近,离得远的点还离得远
- 这是该算法的很重要的优点
- 以前的算法要么只考虑距离远的点还要距离远,要么只考虑距离近的点还要距离近
- 计算量很大,因为每个点都要算 P 和 Q
困惑度(perplexity):
困惑度可以解释为有效邻居(其他点也考虑,只不过占比重太小了,不是有效邻居)的平滑方法
H(Pi)H(P_i)H(Pi) 是 Shannon Entropy 。
用来解释混乱度,怎么理解混乱度呢?
- 比如一个分类任务,将一个物体分为两个类
- H=−∑(pi)log(pi)H = -\sum(p_i)\log(p_i)H=−∑(pi)log(pi)
- 如果分为第一个类的概率 p1=1p_1 = 1p1=1 , 显然 p2=0p_2 = 0p2=0 , 这时的H=0+0=0H = 0 + 0 = 0H=0+0=0 , 这时H小,意味着混乱度低,因为我们可以明确如何进行分类,所以不混乱
- 如果分为第一个类的概率 p1=0.5p_1 = 0.5p1=0.5 , 显然 p2=0.5p_2 = 0.5p2=0.5 , 这时 H=−(0.5log0.5+0.5log0.5=−log0.5)H = -(0.5\log0.5 \quad + \quad0.5\log0.5 = -\log0.5 )H=−(0.5log0.5+0.5log0.5=−log0.5) 这时 , H的值达到最大。意味着混乱度高,因为我们无法确定如何分类
- 对应到混乱度函数的图像中,就是 ppp 的值越接近中间,混乱度越大,越接近两边,混乱度越小。
- 上面我们讨论的是两个 ppp 的情况 , 扩展到多个 ppp 也一样。各个 ppp 越靠近中间,混乱度越大(也就是 H 大)
如图,当 ppp 分布在两端时,函数的值比较小。如果 HHH 的值增大,则意味着,有更多的 ppp 往中间分布了(左边的往右移动,右边的往左移动),也就是我们在大 ppp 和小 ppp 之间做了一个均衡 ,小的 ppp 变大了 , 大的ppp 变小了,各个 ppp 更接近了。这时候就代表着,我们在寻找一个点的邻近点时,考虑了更多的有效点(以前有些离得太远的点没有认定为有效点)
将 ppp 的值放到下面的高斯函数图像中观察,这就对应 σ\sigmaσ 更大。也就是高斯分布更平滑了。因为,高斯分布越平滑,能获得比较大的值的点越多,也就是距离稍远的点也有不错的高斯函数值。这些点对应的 ppp 也就变大了,对loss的影响也变大,成为有效点。
也就是说,我们可以通过调节困惑度 perplexity 来调节 H , 进而调节 σ\sigmaσ
- 困惑度越大 , H就越大 , σ\sigmaσ 就越大 , 我们在寻找一个点的邻近点的时候就会考率更多的有效点
- 困惑度越大,越考虑全局(考虑的点更多,更远),困惑度越小,越考虑局部(考虑的点更少,更近)
评价标准:K-L散度
C=∑iKL(Pi∥Qi)=∑i∑jpj∣ilogpj∣iqj∣iC=\sum_{i} K L\left(P_{i} \| Q_{i}\right)=\sum_{i} \sum_{j} p_{j \mid i} \log \frac{p_{j \mid i}}{q_{j \mid i}}C=∑iKL(Pi∥Qi)=∑i∑jpj∣ilogqj∣ipj∣i
pj∣ip_{j|i}pj∣i 越大 , qj∣iq_{j|i}qj∣i 越小时 , 此时的Cost越高。即高维空间的点越接近,映射到低维空间时反而越远,此时的惩罚是很大的,这是正确的情况。
pj∣ip_{j|i}pj∣i 越小 , qj∣iq_{j|i}qj∣i 越大时 , 此时的Cost越小。即高维空间的点距离远时,映射到低维空间的点接近时,此时的惩罚却很小,这时跟我们想要的结果正好相反。
这个问题也是t-SNE的一个缺点。因此SNE倾向于保留局部特征,即让高维离得近的点尽可能在低维时聚在一起,但是不考虑不同类间的间隔,直观理解为:整个降维后的图像会比较“拥挤”(原因就是上面这个,导致长程斥力不够)
t-SNE
优化:相较于SNE,有两方面优化:
- 优化了 p 和 q 的对称性
- 使用 t 分布优化了 q
对称性:
注意到,概率函数具有不对称性,即Pi∣j≠Pj∣iP_{i|j} \ne P_{j|i}Pi∣j=Pj∣i 且 Qi∣j≠Qj∣iQ_{i|j} \ne Q_{j|i}Qi∣j=Qj∣i ,因为分母不一样。这与我们的直觉不符,无论 xix_ixi 和 xjx_jxj 谁作为中心,其出现在对方附近的概率应该是相同的
当然我们也可以在原空间(高维空间)中定义
但是这样会带来问题:假设点 xix_ixi 是一个噪声点,那么∣xi−xj∣|x_i - x_j|∣xi−xj∣ 的平方会很大,那么对于所有的 j,pijp_{ij}pij 的值都会很小,导致在低维映射下的 yiy_iyi 对整个损失函数的影响很小,但对于异常值,我们显然需要得到一个更大的惩罚
于是我们定义: pij=pi∣j+pj∣i2np_{ij} = \frac{p_{i|j} + p_{j|i}}{2n}pij=2npi∣j+pj∣i
这样既保证了对称,又不会导致概率值像上面一样小(因为如果 iii 是噪声 , 那么 Pi∣jP_{i|j}Pi∣j 就会比 Pj∣iP_{j|i}Pj∣i 大得多)
t分布优化q
t分布优化后的q
qij=(1+∥yi−yj∥2)−1∑k≠l(1+∥yi−yj∥2)−1q_{i j}=\frac{\left(1+\left\|y_{i}-y_{j}\right\|^{2}\right)^{-1}}{\sum_{k \neq l}\left(1+\left\|y_{i}-y_{j}\right\|^{2}\right)^{-1}}qij=∑k=l(1+∥yi−yj∥2)−1(1+∥yi−yj∥2)−1
梯度
δCδyi=4∑j(pij−qij)(yi−yj)(1+∥yi−yj∥2)−1\frac{\delta C}{\delta y_{i}}=4 \sum_{j}\left(p_{i j}-q_{i j}\right)\left(y_{i}-y_{j}\right)\left(1+\left\|y_{i}-y_{j}\right\|^{2}\right)^{-1}δyiδC=4∑j(pij−qij)(yi−yj)(1+∥yi−yj∥2)−1
当 qijq_{ij}qij 太大或者太小时,也就是 (yi−yj)(y_i - y_j)(yi−yj) 太大或者太小,都会导致梯度趋近于0 , 这不利于更新点 iii 的坐标,这是目前的一个问题。不过一般情况下,这种情况出现比较少,而且其他点的的更新也会影响点 iii 的梯度
映射后的样本相似度采用 t-分布的一种,是对SNE的改进,这里改变的是 q , 且 q 已经经过对称优化了
横轴表示距离,纵轴表示相似度, 可以看到,对于较大相似度的点,t分布在低维空间中的距离需要稍小一点;而对于低相似度的点,t分布在低维空间中的距离需要更远。这恰好满足了我们的需求,即同一簇内的点(距离较近)聚合的更紧密,不同簇之间的点(距离较远)更加疏远。
一句话来说:因为我们的目的是令 qijq_{ij}qij 与 pijp_{ij}pij 相等。若达成这个目标,在低维空间中,近的点会更近,远的点会更远
可视化降维方法 t-SNE相关推荐
- MachineLearning 12. 机器学习之降维方法t-SNE及可视化 (Rtsne)
点击关注,桓峰基因 桓峰基因公众号推出机器学习应用于临床预测的方法,跟着教程轻松学习,每个文本教程配有视频教程大家都可以自由免费学习,目前已有的机器学习教程整理出来如下: MachineLearnin ...
- 降维方法小结和理解:PCA、LDA、MDS、ISOMAP、SNE、T-SNE、AutoEncoder
PCA:Principle component analysis 主成分分析 百度百科:它是一个线性变换.这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成 ...
- MachineLearning 13. 机器学习之降维方法UMAP及可视化 (umap)
点击关注,桓峰基因 桓峰基因公众号推出机器学习应用于临床预测的方法,跟着教程轻松学习,每个文本教程配有视频教程大家都可以自由免费学习,目前已有的机器学习教程整理出来如下: MachineLearnin ...
- t-SNE:最好的降维方法之一
引言 本期由来自哈工大的同样热爱科普的潮汐之子为我们带来t-SNE的全方位普及,作者的研究方向为自然语言处理 说明 本文目的是做成一个60分钟t-SNE闪电入门简介,可能无法详细讲解原理,学术帝还请阅 ...
- 【Python学习系列二十三】Scikit_Learn库降维方法(矩阵分解)-PCAFA
1主成分分析PCA 1.1 精确PCA和似然估计 PCA基于最大方差的正交变量分解多维数据集.在scikit-learn库中,PCA的实现是先通过fit方法计算n维的特征值和特征向量,然后通过tran ...
- 【深度学习】数据降维方法总结
引言: 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达 ...
- 传统的线性降维方法效果不佳。_10分钟数据降维入门
1. 前言 在硕士期间学习研究了数据降维相关的知识,阅读了一些相关文章,也断断续续在知乎上写了 一些数据降维的入门级文章,收获了一些小伙伴的赞同,并在GitHub上开源了一些特征抽取算 法的源代码,获 ...
- python降维可视化 自编码_如何使用自动编码器可视化降维? (Python | TensorFlow)...
我正在尝试调整Aymeric Damien's code来可视化由 TensorFlow 中实现的自动编码器执行的降维 . 我看到的所有示例都在 mnist digits数据集上工作,但我想使用此方法 ...
- 两种降维方法的总结——LLE(局部线性嵌入),ISOMAP(等度量映射)
简介 流形学习是一类借鉴了拓扑流形概念的降维方法.流形是在局部与欧式空间同胚的空间,换言之,它在局部具有欧式空间的性质,能用欧式距离来进行距离计算.若低维流形嵌入到高维空间中,则数据样本在高维空间的分 ...
最新文章
- MAYA 2022基础入门学习教程
- VScode 插件、配置记录
- Elasticsearch之Mapping
- 什么是Activity、生命周期
- requests模块的入门使用
- 步步为营 .NET 代码重构学习笔记 三、内联方法(Inline Method)
- HBase 名称空间namespace的创建/建表/删除
- cxTreeList交换当前两个节点的的位置
- 开源改变世界概括_为什么任何开源社区都很难改变
- java mysql 连接测试_java连接mysql数据库及测试是否连接成功的方法
- MagicHouse- 智能家居管理机器人 在线演示
- SQL注入***的种类和防范手段
- java开发工程师简历模板
- linux下udp调试工具,linux tcp udp 调试工具
- solidity教程(四)僵尸作战系统
- [转载]大数据入门 - 董飞
- [JS]Tue Feb 01 2022 00:00:00 GMT+0800 (中国标准时间) 日期格式化
- java定时器Scheduled,可动态设置定时器执行时间
- 颗粒归仓水稻总体产量5500吨 国稻种芯-洪江:怀化水稻秋收
- VS2010/VS 2008 代码界面设置护眼色豆沙绿
热门文章
- 巴特沃夫 c语言,全相位滤波器在人工耳蜗CIS方案中的应用
- Nginx配置信息损毁又无备份时如何恢复
- 重磅 | 美国前财长、哈佛大学前校长Larry Summers加入e代理全球顾问
- 刚刚拿下「中国AI最高奖」的语音技术,能给我们带来什么?
- 2012年1月,拥有131年历史的柯达申请破产
- 华为鸿蒙操作系统有哪些特点和优势?余承东《全场景时代 新体验与新生态》演讲全文
- 2021年G1工业锅炉司炉多少分及格及G1工业锅炉司炉模拟考试题
- PS初学——基本图像模式与调整(二)
- 刷脸支付凭什么这么火 ? 开启你的智慧生活 !
- mysql配置主从复制和mysql多实例配置主从复制