DatistEQ研發(fā)十多載,代碼幾十萬行,卻一直困惑于理論基礎問題。這種數據處理方式在人類科學史上,處于一個什么樣的位置呢?它在科技發(fā)展的大樹中又在那一個枝葉上呢?偶然間看了一篇關于有向無環(huán)圖的文章,才豁然開朗,原來是它。如此,研發(fā)上,有了更多的技術參考;應用上,有了更多的科學依據。
1、圖[1]
圖是由一組頂點和一組能夠將兩個頂點相連的邊組成。
圖主要包括:
- 無向圖,結點的簡單連接
- 有向圖,連接有方向性
- 加權圖,連接帶有權值
- 加權有向圖,連接既有方向性,又帶有權值

術語
- 頂點:圖中的一個點(vertex)
- 邊:連接兩個頂點的線段叫做邊(edge)
- 相鄰的:一個邊的兩頭的頂點稱為是相鄰的頂點
- 度數:由一個頂點出發(fā),有幾條邊就稱該頂點有幾度,或者該頂點的度數是幾
- 路徑:通過邊來連接,按順序的從一個頂點到另一個頂點中間經過的頂點集合
- 簡單路徑:沒有重復頂點的路徑
- 環(huán):至少含有一條邊,并且起點和終點都是同一個頂點的路徑
- 簡單環(huán):不含有重復頂點和邊的環(huán)
- 連通的:當從一個頂點出發(fā)可以通過至少一條邊到達另一個頂點,我們就說這兩個頂點是連通的
- 連通圖:如果一個圖中,從任意頂點均存在一條邊可以到達另一個任意頂點,我們就說這個圖是個連通圖
- 無環(huán)圖:是一種不包含環(huán)的圖
- 稀疏圖:圖中每個頂點的度數都不是很高,看起來很稀疏
- 稠密圖:圖中的每個頂點的度數都很高,看起來很稠密
- 二分圖:可以將圖中所有頂點分為兩部分的圖
2、有向圖
定義:一幅有方向性的圖(或有向圖)是由一組頂點和一組有方向的邊組成的,每條有方向的邊都連接著有序的一對頂點。
有向圖是一幅有方向性的圖,由一組頂點和有向邊組成。所以,大白話來講,有向圖是包括箭頭來代表方向的。
常見的例如食物鏈,網絡通信等都是有向圖的結構。

術語
上面我們介紹了頂點的度數,在有向圖中,頂點被細分為了:
- 出度:由一個頂點出發(fā)的邊的總數
- 入度:指向一個頂點的邊的總數
一條有向邊的第一個頂點稱為它的頭,第二個頂點則被稱為它的尾。

接著,由于有向圖的方向性,一條邊的出發(fā)點稱為頭,指向點稱為尾。
- 有向路徑:圖中的一組頂點可以滿足從其中任意一個頂點出發(fā),都存在一條有向邊指向這組頂點中的另一個。
- 有向環(huán):至少含有一條邊的起點和終點都是同一個頂點的一條有向路徑。
- 簡單有向環(huán):一條不含有重復頂點和邊的環(huán)。
- 路徑或環(huán)的長度就是他們包含的邊數。
- 圖的連通性在有向圖中表現為可達性,由于邊的方向性,可達性必須是通過頂點出發(fā)的邊的正確方向,與另一個頂點可連通。
在有向圖中,邊是單向的:每條邊所連接的兩個頂點都是一個有序對,它們的鄰接性是單向的。許多應用(比如表示網絡、任務調度條件或是電話的圖)都是天然的有向圖。
實際生活中的典型有向圖

以一個正在安排課程的大學生為例,有些課程是其他課程的先導課程。[2]


3、有向無環(huán)圖
有向無環(huán)圖,不包含有向環(huán)的有向圖就是有向無環(huán)圖,DAG,Directed Acyclic Graph。
DAG看他的結構挺唬人的,但是原理還是蠻簡單的。DAG改變的是傳統區(qū)塊鏈的數據結構。簡而言之,一個圖(graph)是由兩部分組成:點(vertex)和邊(edge)。所謂有向無環(huán)圖其實就是:有方向的邊;這些邊在一個圖中不會構成一個閉合的環(huán)路。
DAG(Directed Acyclic Graph),中文名"有向無環(huán)圖"。"有向"指的是有方向,準確的說應該是同一個方向,"無環(huán)"則指夠不成閉環(huán)。
幾乎所有的科學研究都在探索因果關系,有向無環(huán)圖(DAGs)是因果關系研究的圖形工具。[3]
因果效應如何描述?簡單地,對病因A及其效應B,應用單箭頭“→”表示為“A→B”:箭頭方向反應時序關系,箭頭兩端反應了它們之間存在的因果關系?!癆→B”代表著,A發(fā)生時間在前,B發(fā)生時間在后;A是B病因,B是A效應。

在一特定路徑上,由一個連接符接在一起的兩個變量(或節(jié)點),稱這相鄰節(jié)點,表現為相鄰關系,如上圖中A→B,A→D,E→C等。相鄰變量互為父子關系,以圖上B→C為例,稱B為C的父節(jié)點,C為B的子節(jié)點。如路徑A→B→C→F上,C有父節(jié)點或更早的病因變量,則將這些節(jié)點(如A、B)稱為C的祖先節(jié)點;路徑上,B有子節(jié)點或更晚的效應變量,則將這些效應變量,稱為后代節(jié)點,如F、C均為B的后代節(jié)點。當C的祖先節(jié)點沒有更早的父節(jié)點時,則稱此時祖先節(jié)點為外源節(jié)點(或根節(jié)點,如A);該路徑上所有的其它節(jié)點均稱為內源節(jié)點。
代際關系是基于特定的路徑,因此同一節(jié)點在不同的路徑可表現為不同的代際關系。
4、可視化建模[4]
可視化建模面向算法工程師和數據分析人員,通過拖曳的可視化交互方式便捷編排算法實驗,集數據處理、模型訓練和評估、在線預測于一體,幫助開發(fā)者實現零代碼的開發(fā)工作。為達到這一目標,功能設計需要考慮:
拖曳式實驗流:通過可視化拖曳,自由編排數據集、模型以及機器學習/深度學習等算法組件,組成有向無環(huán)圖。屏蔽了復雜的算法代碼開發(fā)過程,極大降低了用戶進行算法開發(fā)或數據分析的門檻,給用戶提供“所見即所得”的交互體驗,幫助用戶在面對智能業(yè)務需求時快速響應、快速試錯。
豐富算法組件:提供大量開箱即用的算法組件,支持用戶完成數據處理、模型訓練、模型評估和預測的實驗流程設計和調試,覆蓋主流算法應用場景。通過可視化配置算法參數,零基礎算法背景的用戶也能快速上手,訓練出可用的算法模型。同時,對算法模塊進行不同的參數設置,能讓模型訓練過程透明可控,分析結果更準確。
實驗周期調度:在實際智能業(yè)務場景中,經常需要根據每天產生的最新數據來定時運行實驗和訓練算法模型。根據不同的需求靈活安排調度實驗,需要支持細粒度的調度周期,包含分鐘、小時、天、周、月等級別。
告警通知:算法模型訓練時間往往較長,設置告警通知可以保證在第一時間得知實驗運行和模型訓練的結果。提供不同的告警方式(郵件、短信、釘釘等),可自定義告警規(guī)則和內容,靈活適配不同的用戶習慣。
多角色協同:算法開發(fā)是一個團隊型工作,需要很多角色共同參與。從底層資源的運維到上層的項目管理,多人多角色分工協作的項目管理模式,可以讓算法開發(fā)者專注算法建模任務,減輕煩瑣的底層資源運維工作,同時保障人員權限隔離和數據安全。
參考文獻
[1] https://www.cnblogs.com/Evsward/p/dag.html
[2] Sedgewick.R, Wayne.K. 《Algorithms》 Fourth Edition
[3] 鄭英杰, 趙耐青. 有向無環(huán)圖:語言、規(guī)則及應用 [J] . 中華流行病學雜志,2017,38( 08 ): 1140-1144. DOI: 10.3760/cma.j.issn.0254-6450.2017.08.029
[4] 付登坡, 江敏, 任寅姿等.《數據中臺:讓數據用起來!》