一、拓扑概念

拓扑主要研究的对象为几何图形或空间结构,探究在连续改变形状后还能保持不变的一些性质。它只考虑物体间的位置关系而不考虑它们的形状和大小。简单的描述为:一些特殊的几何性质,在图形连续改变形状后还能继续保持不变。

二、拓扑数据分析

拓扑学研究的是一些特殊的几何性质,这些性质在图形连续改变形状后还能继续保持不变,称为“拓扑性质”。而在复杂的高维数据内部也存在着类似的结构性质,我们可以形象地称之为数据的形状(特征)。

拓扑数据分析(Topological data analysis, TDA),顾名思义,就是把拓扑学与数据分析结合的一种分析方法,用于深入研究大数据中潜藏的有价值的关系。

  • 相比于主成分分析、聚类分析这些常用的方法,TDA不仅可以有效地捕捉高维数据空间的拓扑信息,而且擅长发现一些用传统方法无法发现的小分类。这种方法也因此曾在基因与癌症研究领域大显身手。

  • 和通常研究的成对关系相比,这种相互关系的形状之中可能潜藏了巨大的研究价值。要理解数据的形状,就必须求助于拓扑学。TDA所做的就是抽取这种形状并进行分析。

三、拓扑分析步骤

在TDA数据分析中,mapper算法是必须的。具体的实现过程如下。

数据矩阵

  • 输入数据:输入数据可以是任何类型的数据,但是要满足一定的条件,即输入的数据必须要能够计算任何两数据之间的距离(这距离不局限于欧几里得距离,可以是用户定义的一些距离公式,目的就是要能够确定这个数据在总的输入数据中的一个大致“位置”)。
  • 输出:一个关于输入数据的拓扑图。

Mapper算法

The Algorithm
Given a dataset of points, the basic steps behind Mapper are as follows:

  1. Map to a lower-dimensional space using a filter function fff, or lens. Common choices for the filter function include projection onto one or more axes via PCA or density-based methods.
  2. Construct a cover (Ui)i∈I(U_i)_{i\in I}(Ui​)i∈I​ of the projected space typically in the form of a set of overlapping intervals which have constant length.
  3. For each interval U_i cluster the points in the preimage f−1(Ui)f^{-1}(U_i)f−1(Ui​) into sets Ci,1,…,Ci,kiC_{i,1},\ldots,C_{i,k_i}Ci,1​,…,Ci,ki​​.
  4. Construct the graph whose vertices are the cluster sets and an edge exists between two vertices if two clusters share some points in common.
  • 使用一个(或多个)filter 函数,将输入数据X经过计算得到一个(或多个)值。即f(X) = a ,a是一个实数。
  • 设置两个超参,分别是resolution(即intervals的间距大小)和overlap(重叠区间的大小)。(重要!!)
  • 在每个intervals里面进行局部聚类,可以使用任何聚类算法。将聚在一起的类归并到一个拓扑节点。每一个拓扑节点中包含了不同的数据点。
  • 基于第2步,resolution中设置的overlap(相邻intervals里面会有公共的数据点),将有overlap的两个拓扑节点,使用线连接起来。

优点

  • 优点1:一般现有的算法,如果要对高维数据进行可视化,必然会有一个降维的过程,那么现有的算法在降维后对原始数据会有一些信息的损失(维数越高,越明显)。而mapper算法始终保留高维空间中数据的整体拓扑信息,在这个方面,它远胜于其他算法。
  • 优点2:能够发现一些更小的类,检测传统方法无法找到的集群和有趣的拓扑结构
  • 优点3:发现的特征具有鲁棒性,选择最能区分数据和模型可解释性的特征

基于python的实现

Nowadays there are a few python open source libraries implementing the main TDA tools, like GUDHI, scikit-tda and Giotto. For our test we chose to use one of the most recent: the Giotto library, which is scikit-learn compatible, oriented towards machine learning, fast-performing with C++ state-of-the-art implementations.

# Define filter function
filter_func = umap.UMAP(n_neighbors=5)
# Define cover
cover = CubicalCover(kind='balanced', n_intervals=10, overlap_frac=0.2)
# Choose clustering algorithm
clusterer = DBSCAN(eps=10)
# Initialise pipeline
pipe = make_mapper_pipeline(filter_func=filter_func,cover=cover,clusterer=clusterer,verbose=True,n_jobs=-1,
)
# Plot Mapper graph
fig = plot_static_mapper_graph(pipe, X, color_by_columns_dropdown=True, color_variable=y)
fig.show(config={'scrollZoom': True})

拓扑数据分析-Topological data analysis相关推荐

  1. Topological Data Analysis(TDA) 拓扑数据分析与mapper算法

    目录 什么是TDA? mapper算法的大致流程 使用mapper进行数据分析的优点 参考连接 什么是TDA? 即对数据拓扑学特征进行分析的方法,那么什么是拓扑学特征?拓扑是研究几何图形或空间在连续改 ...

  2. 探索性数据分析(Exploratory Data Analysis,简称EDA)

    EDA就是拿到数据后对数据进行探索,发现数据有何特征或问题,它可以: 1.更好地理解数据 2.建立对数据的直觉 3.形成假设 4.洞察数据 EDA的一个主要方式就是数据可视化,这让你可以直观地看到数据 ...

  3. 为ML带来拓扑学基础,Nature子刊提出拓扑数据分析方法

    一位意大利数学家表示,现在我们可以使用一种新数学方法,让机器学习系统能更高效.快速地学习识别复杂图像.该数学家提出的理论已经被 Nature 子刊<Machine Intelligence> ...

  4. 拓扑数据分析在机器学习中的应用

    作者:曾凤 责任编辑:周建丁(zhoujd@csdn.net) 本文为<程序员>原创文章,未经允许不得转载,更多精彩文章请订阅2016年<程序员>http://dingyue. ...

  5. R语言统计入门课程推荐——生物科学中的数据分析Data Analysis for the Life Sciences

    Data Analysis for the Life Sciences是哈佛大学PH525x系列课程--生物医学中的数据分析(PH525x series - Biomedical Data Scien ...

  6. R语言explore包进行探索性数据分析实战(EDA、exploratory data analysis):基于iris数据集

    R语言explore包进行探索性数据分析实战(EDA.exploratory data analysis):基于iris数据集 目录

  7. R探索新数据分析(Exploratory Data Analysis,EDA)

    R探索新数据分析(Exploratory Data Analysis,EDA) 目录 R探索新数据分析(Exploratory Data Analysis,EDA) str方法进行数据概览及类型查看

  8. python进行探索性数据分析EDA(Exploratory Data Analysis)分析

    python进行探索性数据分析EDA(Exploratory Data Analysis)分析 show holy respect to python community, for there ded ...

  9. 【Python-ML】探索式数据分析EDA(Exploratory Data Analysis)

    # -*- coding: utf-8 -*- ''' Created on 2018年1月24日 @author: Jason.F @summary: 有监督回归学习-探索式数据分析(EDA,Exp ...

最新文章

  1. C++ 虚函数和纯虚函数的用法
  2. mciSendString 的两个小坑
  3. IntelliJ IDEA(2017)安装和破解
  4. 第一篇 著名函数之单值函数
  5. 网络知识:宽带下载网速是30MB/s,经过路由器后仅10MB/s,看完你就懂了!
  6. linux下ceontab不起作用,linux下crontab 不能执行的原因
  7. 信息学奥赛一本通 1152:最大数max(x,y,z)
  8. 《那些年啊,那些事——一个程序员的奋斗史》——49
  9. C++ - 深入理解new
  10. 下面哪个对象能代表当前的HTML文件,华师网络学院作业答案-WEB程序设计选择题...
  11. linux的日志监控和定期处理脚本
  12. 部分iPhone13 系统有bug
  13. Linux Ubuntu 下安装与卸载 JDK,亲测有效~
  14. C# List用法;用Find查找list中的指定元素
  15. c语言初学者程序,C语言初学者必懂的100个范例程序
  16. 百度地图logo去掉
  17. 电脑里的文件夹被误删了怎么恢复呢?几个步骤轻松解决
  18. 采集PMS7003 颗粒度传感器数据,显示在TFT屏幕上,并通过webapi上传(1/2)
  19. JVM性能调优3_垃圾收集器与内存分配策略__享学课堂
  20. 3D点云基础知识(一)-初始入门-知乎整理(一)

热门文章

  1. 51单片机学习:红外遥控实验
  2. JS实现页面右键菜单
  3. 如何利用样机制作一张精美的展示图
  4. MicrosoftWPS
  5. 网关、节点性能数据整理
  6. 送你一张带数据点分布的世界地图
  7. 三星手机电池循环清零代码_巅峰对决申真谞离奇“滑标” 三星杯决赛首局柯洁轻松告捷...
  8. CA-CFAR代码实现
  9. 计算机网络笔记(5) 传输层滑动窗口协议(GBN、SR)
  10. ASP.NET新闻发布网站