开展数据降维的主要目的是更易于数据可视化,并识别高维数据集中的关键结构,将它们保存在低维嵌入中,减轻维数灾难,减少共线性带来的影响。常见的数据降维算法分为线性与非线性两大类。主成分分析(PCA)算法是 应用最为广泛的线性降维算法之一,能够快速寻找到原始变量的线性组合,通过保留少量的主成分,表征原始数据的主要特征。但是,PCA等线性算法不能处理高维到低维数据的非线性映射。
t-SNE(t-distributed stochastic neighbor embedding,t-分布随机邻域嵌入)、UMAP(Uniform Manifold Approximation and Projection,均匀流行近似和投影)是目前最流行的两种非线性降维算法,也是当前机器学习算法的应用研究热点之一,能够从数据中学习非线性模式,与PCA等算法相比,非线性降维算法能更好的分离样本。t-SNE算法不去寻找原始数据之间的逻辑组合关系,而是关注数据集中邻近样本之间的相似性,在低维空间中再现这些相似性。该算法的主要缺点是计算时间长,且不能对新数据进行预测。
UMAP算法工作原理与t-SNE类似,都是在高维空间中寻找距离,但测量距离的方式不同。UMAP算法假设数据样本均匀(Uniform)分布在拓扑空间(Manifold)中,沿着流形搜索数据并计算样本之间的距离,把数据样本近似(Approximation)映射(Projection)到低维空间,在低维再现这些距离。也就是说,该算法主要是学习高维空间中的流形结构,并找到该流形的低维表示方法。UMAP算法的特点决定了它的计算速度优于t-SNE算法,能够同时保留局部结构和全局结构。UMAP算法的本质是从高维数据中构建一个加权图,用边缘强度来表示一个点与另一个点的 “接近程度” ,然后将这个图映射到低维度上,在这个过程中需要确定关键的超参数,建立起数学模型。
n_neighbors:指定用于近似最近邻点的数量。较大的值关注更多的全局结构,较小的值关注更多的局部结构。
min_dist:低维空间中样本之间的最小距离。这个参数控制了UMAP将点紧密地聚集在一起的程度。
metric:UMAP将使用哪种距离度量来测量沿流形的距离,如euclidean距离、manhattan距离等,默认一般采用欧氏距离。
n_epochs:优化步骤的迭代次数。
python所用的umap包
n_neighbors: This determines the number of neighboring points used in local approximations of manifold structure. Larger values will result in more global structure being preserved at the loss of detailed local structure. In general this parameter should often be in the range 5 to 50, with a choice of 10 to 15 being a sensible default.
min_dist: This controls how tightly the embedding is allowed compress points together. Larger values ensure embedded points are more evenly distributed, while smaller values allow the algorithm to optimise more accurately with regard to local structure. Sensible values are in the range 0.001 to 0.5, with 0.1 being a reasonable default.
metric: This determines the choice of metric used to measure distance in the input space. A wide variety of metrics are already coded, and a user defined function can be passed as long as it has been JITd by numba.