python库umap有效地揭示高维数据的结构和模式初探
作者:小寒聊python
python 库umap
今天给大家分享一个超强的 python 库,umap
https://github.com/lmcinnes/umap
UMAP 是一种用于降维的算法,可用于类似于 t-SNE 的可视化。UMAP 基于流形学习的概念,旨在更有效地揭示高维数据中的结构和模式。
该算法基于关于数据的三个假设。
数据均匀分布在黎曼流形上
黎曼度量是局部常数(或者可以近似为局部常数)
流形是局部连接的
优点
UMAP 作为一种现代的降维技术,具有如下优点。
速度快:UMAP 通常比其他降维技术,如 t-SNE,更快,尤其是在处理大型数据集时。
良好的可扩展性:UMAP能够处理相当大的数据集,同时保持较低的计算和内存要求。
保持全局结构:相比于 t-SNE,UMAP 在保持局部结构的同时,还能较好地保留全局数据结构。
参数少且具有解释性:UMAP的参数较少,而且相对直观易懂,如邻域大小和最小距离。
交互式可视化:其低维表示适合进行交互式数据探索和可视化。
兼容性:UMAP可以与 scikit-learn 等 Python 机器学习库无缝集成。
数学原理
构建高维空间的邻域图:对于每个点,UMAP 在高维空间中寻找其近邻,并基于距离或相似性构建一个加权图。这种加权是通过局部距离度量(如欧氏距离)来实现的。
优化过程:UMAP 尝试找到一个低维表示,其中的点保持着类似于高维数据的局部和全局关系。这是通过最小化高维空间和低维空间之间的交叉熵损失来实现的。
流形假设:UMAP 假设数据分布在某种低维流形上。这意味着即使数据原本存在于高维空间,也可以在更低维的空间中找到其近似表示。
相关公式
高维空间中的距离度量:对于每个点 ,UMAP定义了一个局部距离度量,通常为欧氏距离或其他度量。
交叉熵最小化:UMAP最小化的目标函数基于交叉熵,形式上为:
其中, 是高维空间中点 和 之间的连接概率,而 是低维表示中对应点的相似性度量。
概率分布匹配:UMAP 尝试匹配高维和低维空间中的两个概率分布 和
优化算法:通常使用随机梯度下降或类似方法来最小化交叉熵损失。
初体验
库的安装
我们可以直接使用 pip 来进行安装,umap 依赖于 scikit-learn 和 numba,确保你已经安装了它们。
pip install umap-learn
如果你想使用绘图功能,可以使用。
pip install umap-learn[plot]
一个案例
这里,我们使用 MNIST 数据集来作为演示。
import umap from sklearn.datasets import load_digits digits = load_digits() mapper = umap.UMAP(n_neighbors=10,min_dist=0.001).fit(digits.data) umap.plot.points(mapper, labels=digits.target)
以上就是python库umap有效地揭示高维数据的结构和模式初探的详细内容,更多关于python库umap高维数据的资料请关注脚本之家其它相关文章!