- t-SNE的提出背景:
- 数据一般都会服从某种分布,希望可以将数据根据某种规则来映射到这个分布上
- 高维度不同点之间的距离是一个分布,当两类样本比较相近时,欧式距离会把偏差磨平,导致最终发现不了差别。即维度爆炸导致距离度量出现问题。
- 前置知识铺垫:
- 1维的世界最多有两个点两两距离相同。2维的世界最多有3个点(等边三角形),3维有4个。
-
降维:
-
最简单的是投影:沿着一个轴把一个方向数据变化消除。每次投影可以减少一个维度。
-
PCA(主成分分析):
-
一个正交化线性变换,把数据变换到一个新的坐标系统中,使得数据的任何投影的第一大方差在第一个坐标(第一主成分)上,第二大方差在第二个坐标(第二主成分)上。
-
PCA被称为线性降维方法,因为对数据进行了线性变换。
-
- LLE:局部线性嵌入算法,是一种非线性算法,其认为每一个数据点都可以由其近邻点的线性加权组合构造得到。
-
- 谱方法:涉及矩阵特征向量的方法。
- 线性方法计算效率高,非线性算法对于大规模数据需要考虑随机游走等优化,否则计算代价非常高。
- 旋转、平移、翻转不会改变数据本身的结构。
-
欧几里得距离:平坦空间的最短距离。
-
广义的正方体:
-
特定:相邻的点仅有一个分量不同,可以从一个点出发不重复沿着边走边所有的点。
-
计算每个点到其他点的距离的方差,发现方差随着维度增多缓慢减小。
-
一个分布的方差有数据分布的“形状”决定,越弥散的分布有越大的方差。方差不变意味着分布形状基本不变。
-
-
“维数灾难”:随着维数增大,边之间的“分辨率“会降低。
-
由中心极限定理知,对于独立同分布的数据,数据样本越多则越能精确地估计数据的均值。该结论对于方差比、均值差等也成立。
-
数据很少以完全对称的方式分布,如:50维的轴对齐高斯分布,其中坐标i的标准偏差为1/i,即看到的是一个长椭圆形的点云。
-
降维肯定会丧失信息,但核心让距离近的点更近,距离远的点更远,即以找出各类别群的gap为主。
-
降维即找到embedding,从高维空间中找到可以很好地表征低维度空间的嵌入。
-
找嵌入常见方法:autoencoder
-
降维常用的方法:
-
PCA,旋转找到能表示方差最大的线性成分。因为一般方差更大,则特征在这个维度隐藏的信息更多,即这个维度有更多的信息帮助表征。
-
基于距离相似的E:MDS:将原空间中的边和当前空间中的边两两计算差的平方,所有求和之后除以原空间中的边的平方的和。
-
Isomap:将距离推广到了“测地距离”。“测地距离”:两点之间最短路径长度(离散空间)或某种加权的测度(连续的空间)。
-
学习思想:sammon mapping:试图靠拢相邻点的做法失败了,是否可以考虑推远不相邻的点。
-
使用knn算法来确定保留每个点最近的k个边。
-
由于knn仅选择最短的几个边,即使各个边长度差距不大,也增加了区分度。
-
引入knn将问题变成了黑盒:k对于数据本身的意义是什么?是否选中?
-
改进:用概率分布取代“是否”,这类方法称为SNE(随机领居嵌入)
-
将距离转换为概率分布,概率分布中概率较大的表示更有可能“靠在一起”。
-
将有限个连续数量值转换为概率分布:
-
先将一个连续的概率分布的密度函数作用到数值上,得到一些离散的概率值、
-
归一化概率值:得到一个标准的离散的概率分布。是离散分布的一种近似。
-
评测原来和现在概率的“相似性”
-
对于有重叠的概率分布,可以使用KL散度来表征相似。
-
-
-
-
-
- SNE:
- 将原始高维空间中的每个点相关的距离(邻居距离)转化为概率分布。
- 通过控制分布的形状来控制距离的区分度。
- 选择均值为0的高斯分布(正态分布):高斯分布在方差相等的分布中信息熵最大。在分布未知的情况下根据中心极限定理选择高斯分布,因为它是对未知分布的良好近似。
- 用信息熵评价分布的区分度,熵越高则区分度越低。信息熵是关于方差的单调递增函数:方差越小则分布越尖锐,区分度越高,否则分布越平坦,区分度越低。
- 将原始高维空间中邻居距离转化为所有边距离的概率分布。
- 上方得到的仅仅是关于每个点的邻居距离的概率分布(n个点的数据就有n个分布),目的是控制距离的显著程度。
- 将这些分布排列成矩阵,每行都是一个归一化的概率分布。
- 将这n个独立的分布转换为关于所有边的分布。
- 进行归一化:因为得到的是n个已经归一化的分布,为使得总体分布归一化,只需将矩阵中的每一项除以n即可。
- 对称化:g_(i,j)和g(j,i)对应同一距离,应该相同。所以设置为各取一半再相加作为新的值。
- 至此便把距离分布转换为了概率分布。
- 将低维度维空间中距离转化为概率分布:
- 低维度中不应使用带参数的概率密度
- 传统的SNE使用的是N(0,1)(标准正态分布),但使用自由度为1的(0均值)t分布效果更好,对应的方法为t-SNE.
- 将原始高维空间中的每个点相关的距离(邻居距离)转化为概率分布。
- t-SNE:(核心:把距离以概率分布的角度阐述)
- 计算某一个点到其他所有点的距离,然后映射到t分布上
- t-SNE的降维关键:把高维度的数据点之间的距离转化为高斯分布概率。(把一个点到各个点的距离用高斯分布的形式表示,并进行归一化。近的点得到的概率大,越远的点得到的概率越小。)
- 高维度相似度用高斯,低维度用t分布,然后设置一个惩罚函数,就实现了x降低维度但是保留一定局部特征的方法。
- 使用KL散度作为惩罚函数,保证在高维度相似度高的点在低维度相似度也高。(因为:分布相似就会导致特性相似)
- 降维必然带来信息损失,t-SNE保留局部信息必然牺牲全局信息,而因为t分布比 高斯分布更加长尾,可以一定程度减少这种损失。
- tsne的原理要点:
- 将原始高维空间中的每个点相关的距离(邻居距离)转化为概率分布
- 将原始高维空间中邻居距离转化为所有边距离的概率分布
- 将低维度维空间中距离转化为概率分布
- 优化:
- t-SNE的优化目标是非凸的。
- 优化目标是最小化KL散度。
-
使用点之间的距离(如欧式距离)代替点的坐标:
-
距离不受旋转和平移的影响,并且之和点数有关)。
-
各点间的距离完整保留空间结构,且去除不必要的转动和平移翻转。且距离本身不直接包含维度信息,不会受到冗余维度的影响。
-
- t-SNE属于流形学习范畴:
- 流形学习:
- 各个样本在高维的空间表示,均匀分布在一个流行(可理解为空间中一类样本的“形状”)中。
- 高维度的流形或形状可以有低维度进行折叠或变换得到的。
- 提出流形学习的目的:学到低维度空间到高维空间的变换,然后表征出各个高维空间中样本的特点。
- 流形学习:
- 关于t分布:
- 学生分布。
- 自由度为1的密度函数:
- t(x)=1/(π(1+x^2)),比标准正态分布更加平缓。
- t分布效果更好的原因:正态分布用于估计方差为δ的数据的均值,t分布用于估计方差未知的数据的平均值。即t分布低位数据没有先验方差的情况,而标准分布假定了方差为1。
- t-SNE在降维的过程中保留了很多的规律。
- 一般情况下,降维到三维要优于到二维,但论文和著作中更偏向二维的数据。
- t-SNE在连续运行的时间内不一定可以产生相似的输出。
-
t-SNE图比任何线性投影都更精确。
-
可使用t-SNE判断是否是真实的随机数据:
-
通过不断改变perplexity画图,如果(2,5,30,50,100)取值得到的结果都是无法区分的)
-
点云是随机生成的,它没有统计上有趣的簇:那些“簇”没有意义。低perplexity值通常会导致这种分布。将这些团块识别为随机噪声是读取t-SNE图的重要部分。
-
- t-SNE的缺点:速度慢。但对于大型真实数据集和对深度神经网络的分析上t-SNE优势很大。
- t-SNE的可调参数:
- perplexity:
- 控制的是尺度。
- 因为采用了高斯分布,所以知道大约有68%的数据集在一个标准差δ内,即大约在一个perplexity的范围内。
- perplexity极小时,在计算邻居距离的过程中,刚好可以覆盖最小尺度的“邻居”。然后再执行全局的归一化和对称化。
- perplexity用于平衡对数据的局部和全局的注意力,该参数可看做对于每个点的邻居数量的估计。
- 可以通过分析不同的perplexity来从t-SNE中获取更多的信息。
- perplexity需要比点的数量小得多。
- 对于足够高的perplexity值,细长形状易于阅读。在低复杂度时,局部效应和无意义的“聚集”占据中心位置。
- 可通过微调perplexity来观察全局几何。
- 原因:现实世界的数据可能有多个具有不同元素数量的簇。可能没有一个perplexity值可以捕捉所有簇群的距离,但复杂度是一个全局参数。
- t-SNE图中分离良好的集群之间的距离可能毫无意义。
- step的设置也很重要,最好是在结果稳定之后再停止。
- perplexity:
tsne 学习使用
于 2022-09-19 08:48:48 首次发布