DatistEQ研发十多载,代码几十万行,却一直困惑于理论基础问题。这种数据处理方式在人类科学史上,处于一个什么样的位置呢?它在科技发展的大树中又在那一个枝叶上呢?偶然间看了一篇关于有向无环图的文章,才豁然开朗,原来是它。如此,研发上,有了更多的技术参考;应用上,有了更多的科学依据。
1、图[1]
图是由一组顶点和一组能够将两个顶点相连的边组成。
图主要包括:
- 无向图,结点的简单连接
- 有向图,连接有方向性
- 加权图,连接带有权值
- 加权有向图,连接既有方向性,又带有权值
术语
- 顶点:图中的一个点(vertex)
- 边:连接两个顶点的线段叫做边(edge)
- 相邻的:一个边的两头的顶点称为是相邻的顶点
- 度数:由一个顶点出发,有几条边就称该顶点有几度,或者该顶点的度数是几
- 路径:通过边来连接,按顺序的从一个顶点到另一个顶点中间经过的顶点集合
- 简单路径:没有重复顶点的路径
- 环:至少含有一条边,并且起点和终点都是同一个顶点的路径
- 简单环:不含有重复顶点和边的环
- 连通的:当从一个顶点出发可以通过至少一条边到达另一个顶点,我们就说这两个顶点是连通的
- 连通图:如果一个图中,从任意顶点均存在一条边可以到达另一个任意顶点,我们就说这个图是个连通图
- 无环图:是一种不包含环的图
- 稀疏图:图中每个顶点的度数都不是很高,看起来很稀疏
- 稠密图:图中的每个顶点的度数都很高,看起来很稠密
- 二分图:可以将图中所有顶点分为两部分的图
2、有向图
定义:一幅有方向性的图(或有向图)是由一组顶点和一组有方向的边组成的,每条有方向的边都连接着有序的一对顶点。
有向图是一幅有方向性的图,由一组顶点和有向边组成。所以,大白话来讲,有向图是包括箭头来代表方向的。
常见的例如食物链,网络通信等都是有向图的结构。
食物链术语
上面我们介绍了顶点的度数,在有向图中,顶点被细分为了:
- 出度:由一个顶点出发的边的总数
- 入度:指向一个顶点的边的总数
一条有向边的第一个顶点称为它的头,第二个顶点则被称为它的尾。
有向图详解接着,由于有向图的方向性,一条边的出发点称为头,指向点称为尾。
- 有向路径:图中的一组顶点可以满足从其中任意一个顶点出发,都存在一条有向边指向这组顶点中的另一个。
- 有向环:至少含有一条边的起点和终点都是同一个顶点的一条有向路径。
- 简单有向环:一条不含有重复顶点和边的环。
- 路径或环的长度就是他们包含的边数。
- 图的连通性在有向图中表现为可达性,由于边的方向性,可达性必须是通过顶点出发的边的正确方向,与另一个顶点可连通。
在有向图中,边是单向的:每条边所连接的两个顶点都是一个有序对,它们的邻接性是单向的。许多应用(比如表示网络、任务调度条件或是电话的图)都是天然的有向图。
实际生活中的典型有向图
以一个正在安排课程的大学生为例,有些课程是其他课程的先导课程。[2]
课程安排 标准有向图模型3、有向无环图
有向无环图,不包含有向环的有向图就是有向无环图,DAG,Directed Acyclic Graph。
DAG看他的结构挺唬人的,但是原理还是蛮简单的。DAG改变的是传统区块链的数据结构。简而言之,一个图(graph)是由两部分组成:点(vertex)和边(edge)。所谓有向无环图其实就是:有方向的边;这些边在一个图中不会构成一个闭合的环路。
DAG(Directed Acyclic Graph),中文名"有向无环图"。"有向"指的是有方向,准确的说应该是同一个方向,"无环"则指够不成闭环。
几乎所有的科学研究都在探索因果关系,有向无环图(DAGs)是因果关系研究的图形工具。[3]
因果效应如何描述?简单地,对病因A及其效应B,应用单箭头“→”表示为“A→B”:箭头方向反应时序关系,箭头两端反应了它们之间存在的因果关系。“A→B”代表着,A发生时间在前,B发生时间在后;A是B病因,B是A效应。
DAG示意图在一特定路径上,由一个连接符接在一起的两个变量(或节点),称这相邻节点,表现为相邻关系,如上图中A→B,A→D,E→C等。相邻变量互为父子关系,以图上B→C为例,称B为C的父节点,C为B的子节点。如路径A→B→C→F上,C有父节点或更早的病因变量,则将这些节点(如A、B)称为C的祖先节点;路径上,B有子节点或更晚的效应变量,则将这些效应变量,称为后代节点,如F、C均为B的后代节点。当C的祖先节点没有更早的父节点时,则称此时祖先节点为外源节点(或根节点,如A);该路径上所有的其它节点均称为内源节点。
代际关系是基于特定的路径,因此同一节点在不同的路径可表现为不同的代际关系。
4、可视化建模[4]
可视化建模面向算法工程师和数据分析人员,通过拖曳的可视化交互方式便捷编排算法实验,集数据处理、模型训练和评估、在线预测于一体,帮助开发者实现零代码的开发工作。为达到这一目标,功能设计需要考虑:
-
拖曳式实验流:通过可视化拖曳,自由编排数据集、模型以及机器学习/深度学习等算法组件,组成有向无环图。屏蔽了复杂的算法代码开发过程,极大降低了用户进行算法开发或数据分析的门槛,给用户提供“所见即所得”的交互体验,帮助用户在面对智能业务需求时快速响应、快速试错。
-
丰富算法组件:提供大量开箱即用的算法组件,支持用户完成数据处理、模型训练、模型评估和预测的实验流程设计和调试,覆盖主流算法应用场景。通过可视化配置算法参数,零基础算法背景的用户也能快速上手,训练出可用的算法模型。同时,对算法模块进行不同的参数设置,能让模型训练过程透明可控,分析结果更准确。
-
实验周期调度:在实际智能业务场景中,经常需要根据每天产生的最新数据来定时运行实验和训练算法模型。根据不同的需求灵活安排调度实验,需要支持细粒度的调度周期,包含分钟、小时、天、周、月等级别。
-
告警通知:算法模型训练时间往往较长,设置告警通知可以保证在第一时间得知实验运行和模型训练的结果。提供不同的告警方式(邮件、短信、钉钉等),可自定义告警规则和内容,灵活适配不同的用户习惯。
-
多角色协同:算法开发是一个团队型工作,需要很多角色共同参与。从底层资源的运维到上层的项目管理,多人多角色分工协作的项目管理模式,可以让算法开发者专注算法建模任务,减轻烦琐的底层资源运维工作,同时保障人员权限隔离和数据安全。
参考文献
[1] https://www.cnblogs.com/Evsward/p/dag.html
[2] Sedgewick.R, Wayne.K. 《Algorithms》 Fourth Edition
[3] 郑英杰, 赵耐青. 有向无环图:语言、规则及应用 [J] . 中华流行病学杂志,2017,38( 08 ): 1140-1144. DOI: 10.3760/cma.j.issn.0254-6450.2017.08.029
[4] 付登坡, 江敏, 任寅姿等.《数据中台:让数据用起来!》
网友评论