人類學家羅賓·鄧巴認為:一個人維持緊密人際關係的人數最多為150人。
網絡社交平臺出現後,很多人認為虛擬世界將突破鄧巴這一理論,但實際情況卻是:如果要和更多人互動,那麼勢必需要削弱在其它人身上花的精力。
但是,人際關係將隨著時間而產生親疏遠近等不同的變化,如果能夠識別出人與人的關係定義,則能為諸多行業領域帶來更多方向的探索,如:詐騙團夥識別,通過詐騙分子的通話關係網去識別可能存在的團夥關係,將壞人一網打盡。
一.本體論
全球資訊網之父Tim Berners-Lee教授在1998年將語義網絡(Semantic web)帶入人類的視線。目的是賦予網絡理解詞語、概念以及它們之間邏輯關係的能力,使人機互動變得更有效率。本體論(Ontology)做為語義網的核心,是研究實體存在及其本質的通用理論。1993年Thomas Gruber教授提出了本體論最廣為認同的定義:共享概念模型的明確的形式化規範說明。這裡面實際說了四個概念,即:「概念模型」(Conceptualization)指通過客觀世界中一些現象的相關概念而得到的模型;「明確」(Explicit)指所使用的概念及其約束都有明確的定義;「形式化」(Formal)指Ontology是計算機可讀的;「共享(Share)」指本體論中體現的是共同認可的知識,反映的是相關領域中公認的概念集。
本體論最初是形上學的一個分支。對於形上學的理解這裡給出一個例子(如:圖1)
圖中中文的「貓」與「貓咪」,英文的「cat」,「貓的圖片」都可以用來描述「貓」這個實物。那麼在哲學層面,「貓」這樣一個實物就是亞里斯多德口中的「實體」,巴門尼德口中的「存在」,以及本體論中所說的「本體」。而上圖這些描述均指的是「貓」這個「本體」的符號。
從這裡,我們能看出「本體」這個概念在哲學層面上是形而上的,是只可意會不可言傳的。因此,對於一個實體,所有的描述都是這個「本體」的外在符號,我們感受到的,聽到的,看到的,都成為符號到本體的某種映射。
解釋完本體哲學層面的意思,我們是否對語義層面的本體有更好的理解呢?其實,其主要目的就是要建立這樣一種映射,例如:{「貓」,「貓咪」,「喵咪」,「cat」}這個符號集都映射到「貓」這個「本體」上來。當我們建立了本體的集合,本體間的邏輯關係就是存在的(如:IF AB and BC,THEN AC)。本體的邏輯層提供了公理和推理規則,進而實現相應的邏輯推理,有可能是「屬性-本體」的關係,有可能是「子類-本體」的關係,也有可能是「本體-本體」的對立或者是近似關係。本體論最終的目的是去實現知識表達,構建知識庫,實現知識推理,即藉由本體論中的基本元素:實體與實體間的關聯,作為描述真實世界的知識模型。
二.知識圖譜
這種知識模型究竟有什麼用呢?Google在2012年提出Knowledge Graph,就是為了將傳統的keyword-based搜索向基於語義的搜索升級。知識圖譜可以用來更好的查詢複雜的關聯信息,從語義層面理解用戶意圖,改進搜索質量。這裡借用本體的概念給出我個人對知識圖譜的理解:知識圖譜就是用來描述真實世界中存在的各種實體,以及他們之間的關係,而實體本身會有多樣實例,屬性。就像之前「貓的例子」(如下圖2),當我們查詢「喵喵喵喵喵」時,返回的不會是抖音上很紅的《學貓叫》,而是「貓」這個實體。同時,在其他知識的補充下我們可以知道「貓」有一個實例是「茄子」,而「茄子」的主人是我,我和小胡都就職於聯通大數據,並且通話關係很密切。當我們知識庫中的實體、關係、屬性、實例等的量級非常大時就能繪製成一個巨型的網絡關係拓撲圖。有了這樣的知識庫,搜尋引擎就能洞察用戶查詢背後的語義信息,返回更為精準的信息。換言之,知識圖譜引入了更多的含義,對事物進行搜索,像人類一樣去思考、聯想、關聯。這也印證了Google knowledge graph的初衷:「The world is not made of strings , but is made of things.」
另外,如果我們把各種語言的「貓」都映射到「貓」這個本體上,再基於與名詞主體、動詞主體構建的邏輯關係或動賓短語等,通過反映射就可以實現簡易的機器翻譯。
三.圖資料庫
2018年9月,我們有一篇題為《專家課堂|NoSQL還是SQL》的公眾號提到圖資料庫,文中給出了NoSQL or SQL, Why NoSQL之類的話題。其中的基於場景選擇也有相應的介紹,這裡就不做贅述了。從上一節的圖中,我們可以清晰地看出,通話記錄就能以實體及關係的方式存儲。這是運營商數據的固有優勢,在我們的場景裡不用花太多時間去做基於nlp技術的實體抽取、關係抽取。我們關注的重點則是通話關係網絡中,如何保證海量的動態更新的通話節點及關係載入圖中、哪些人有哪些通話行為特徵、這些圖中挖掘出的特徵如何貢獻在現有的場景模型中等等。比如在風控領域,我們正在應用圖發現相關方法探索樣本號碼或ID是否在一個詐騙社區,是否有穩定的通話社交圈,與黑產號碼存在幾度的關聯,關聯繫數是怎樣的,是否有多個電話組內關聯等。這些都將是風控、反欺詐類模型的新特徵。
測試數據集選用三個月全網用戶的通話記錄,節點屬性包括是否聯通號、手機號碼對應職住經緯度等;邊屬性包括號碼間三個月的主被叫通話次數、主被叫次數,天數,時長等。數據集大小約為750G,載入圖資料庫結果如圖3。
載入後根據每臺機器VertexCount和EdgeCount可以看到圖資料庫共加載了約17億節點(號碼),340億邊(通話關係)。其中NumOfSkippedVertices表達了一個去重的過程,即:每個節點只加載一遍。因此,partition size的總和只有590G左右,實際上是對數據進行了壓縮。
做一個簡單的號碼關係查詢(如圖4),在百億級邊的圖資料庫裡可以實現毫秒級響應。值得注意的有兩點:1. 查詢返回為json格式;2. 查詢語言為類sql語言。
我們可以將查詢語言以文件形式存儲,通過install/run query進行查詢。同時,在後臺install一個查詢還會生成一個REST端點,這樣就可以通過http來調用參數化查詢。如圖5,通過查詢語言進行圖遍歷,尋找兩個號碼間的最短距離。這樣就能實現我們熟悉的六度空間理論(小世界理論),即:世界上任何兩個人最多只需通過6個關係就能找到對方。
如果我們定義號碼與號碼間的通話頻次為關係權重,每個人的通話人數為通話活躍度。試想,一個人和你沒有通話記錄,但是和你的好朋友通話比較頻繁,你是不是也有可能認識這個人呢?這個查詢就是從圖中挖掘你可能認識的人。查詢輸入是待查號碼與最可能認識的k個手機號,返回是查詢號碼和輸入號碼的距離(如圖6)。
最後,給出一個真實的場景案例,是否能夠通過企業少數員工號碼、imei或其他ID,尋找企業員工群體,並對該群體進行分析,來反應企業實際經營地址、活躍度等情況呢?這裡給出【2步鄰居子圖】的概念(以手機號做節點為例),即:輸入號碼聯繫人及聯繫人的聯繫人(如圖7,這裡使用可視化交互界面展示通話關係)。
在模型搭建過程中,我們對通話時間段、時長、頻次進行分析,評估可能存在的同事關係,並基於現有職住模型以及柵格技術挖掘企業真實經營地址。以我自己手機號為例(如圖8),可以看到返回企業員工主要聚集的工作地(數字表示工作地在相應柵格內的人數),即:聯通大數據公司兩個辦公區(職住數據取自2018年12月)、聯通集團。
基於對人群行為的洞察,該模型能夠幫助工商部門動態的、客觀的對企業真實位置、企業活躍情況進行評估與判斷,為相關監察監管提供數據支撐。
值得一提的是,基於聯通大數據關係圖譜,在十億級節點、百億級邊的大型網絡結構中,查詢6步鄰居子圖也只需要不到1秒(如圖9)。可視化交互界面如圖10(中間白色點為我的手機號)。
為了更細節的洞察網絡中的關係,將展示閾值縮小(如圖11)。經查驗,中間環形結構上的每個點相互間都是同事關係。社交網絡中環形結構上的點往往存在某種隱含關聯,同事關係、親疏關係、團夥關係、資金流向等等。基於不同樣本、不同場景的應用,相較於傳統資料庫類型,圖資料庫可以最大程度挖掘樣本間的關聯關係。
另外,大量經典的圖挖掘算法,如:社區發現,Pagerank,LPA等也已ready,為傳統機器學習模型入模特徵增加更多的圖特徵。
總之,本體、知識圖譜、圖資料庫都是用節點和關係為真實世界的各個場景直觀地建模,運用「圖」這種基礎性、通用性的「語言」,「高保真」地表達這個多姿多彩世界的各種關係,並且非常直觀、自然、直接和高效。聯通數據擁有得天獨厚的「節點」、「關係」優勢,我們正堅定不移的走在圖發現的道路上!