凡友榮 楊 濤 孔華鋒 彭如香 姜國(guó)慶
1(公安部第三研究所 上海 201204)2(武漢商學(xué)院 湖北 武漢 430056)
大數(shù)據(jù)及其相關(guān)技術(shù)在案件偵破、社會(huì)治理等公安業(yè)務(wù)領(lǐng)域發(fā)揮著巨大的作用,能夠輔助公安各級(jí)偵查人員進(jìn)行情報(bào)收集及線索發(fā)現(xiàn)[1]。目前電信詐騙案件中積累的通話數(shù)據(jù)(Call Detail Records, CDR)的數(shù)據(jù)量龐大,能反映出人們的通話習(xí)慣、社會(huì)關(guān)系、社會(huì)屬性等重要信息,然而這些數(shù)據(jù)的應(yīng)用仍停留在查詢(xún)層面,數(shù)據(jù)之間的關(guān)聯(lián)還未被充分挖掘和使用[2]。
Google公司于2012年5月重金收購(gòu)Metaweb公司,并向外界正式發(fā)布其知識(shí)圖譜,自此,知識(shí)圖譜正式走入公眾視野[3]。知識(shí)圖譜是結(jié)構(gòu)化的語(yǔ)義知識(shí)庫(kù),描述了物理世界中的概念及其相互關(guān)系,其基本組成單位是“實(shí)體-關(guān)系-實(shí)體”三元組,以及實(shí)體與其相關(guān)屬性的“屬性-值”,實(shí)體間通過(guò)關(guān)系相互聯(lián)結(jié),構(gòu)成網(wǎng)狀的知識(shí)結(jié)構(gòu)[4]。知識(shí)圖譜能將數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系構(gòu)建起來(lái),從而更利于深層知識(shí)的挖掘,提高數(shù)據(jù)的利用率[5]。
本文從仿真通話數(shù)據(jù)的角度出發(fā),使用知識(shí)圖譜、分布式計(jì)算等大數(shù)據(jù)技術(shù)構(gòu)建知識(shí)挖掘模型,為電信詐騙案件的數(shù)據(jù)利用及線索挖掘提供技術(shù)支持。首先基于通話數(shù)據(jù)構(gòu)建知識(shí)圖譜,然后基于圖算法和分布式圖計(jì)算引擎,構(gòu)建通聯(lián)特征挖掘模型,挖掘出通聯(lián)網(wǎng)絡(luò)中的核心人物、聯(lián)系鏈路等隱藏線索,并且提取出通話記錄中的9個(gè)關(guān)鍵特征,建立支持分布式計(jì)算的混合高斯模型,挖掘出其中的5類(lèi)社會(huì)關(guān)系,以及涉案人員之間的通聯(lián)特點(diǎn),從多個(gè)維度為電信欺詐案件的線索挖掘提供技術(shù)支持。
本文的技術(shù)路線如圖1所示。
本文的研究?jī)?nèi)容以主流的大數(shù)據(jù)技術(shù)為基礎(chǔ),使用Python語(yǔ)言對(duì)各類(lèi)存儲(chǔ)格式的數(shù)據(jù)進(jìn)行預(yù)處理,并存儲(chǔ)在基于Hadoop的Hive數(shù)據(jù)倉(cāng)庫(kù)中,為知識(shí)圖譜的構(gòu)建提供數(shù)據(jù)基礎(chǔ);將處理完成的圖結(jié)構(gòu)數(shù)據(jù)存儲(chǔ)在基于JanusGraph的圖數(shù)據(jù)庫(kù)中,完成知識(shí)圖譜的構(gòu)建;結(jié)合Gremlin和GraphX可進(jìn)行實(shí)時(shí)的圖遍歷及全局的圖數(shù)據(jù)分析,構(gòu)建基于通聯(lián)特征挖掘模型。綜上,本文的技術(shù)架構(gòu)將淺層知識(shí)發(fā)現(xiàn)和深層知識(shí)挖掘相結(jié)合,從而實(shí)現(xiàn)電信欺詐案件的線索探查和挖掘。
本文采用自底向上的方式進(jìn)行知識(shí)圖譜的構(gòu)建。從多源異構(gòu)的數(shù)據(jù)中抽取實(shí)體信息、鏈接和融合實(shí)體,推理補(bǔ)全屬性,識(shí)別語(yǔ)義并建立關(guān)系,最終將知識(shí)存儲(chǔ)于知識(shí)圖譜數(shù)據(jù)庫(kù)中。此過(guò)程是一個(gè)迭代更新的過(guò)程,每一輪更新包括信息抽取、知識(shí)融合、知識(shí)加工這三個(gè)步驟[3],如圖2所示。

圖2 知識(shí)圖譜構(gòu)建步驟
在知識(shí)圖譜的基礎(chǔ)上,通過(guò)圖的深層遍歷及圖算法進(jìn)行信息挖掘,能夠識(shí)別特定人員相互之間的通話交互模式。本文基于最短路徑算法(Shortest Path algorithm)、PageRank算法、Centrality算法、混合高斯模型(Gaussian mixture model,GMM)構(gòu)建通聯(lián)特征挖掘模型,模型設(shè)計(jì)如圖3所示。

圖3 通聯(lián)特征挖掘模型
最短路徑算法計(jì)算一對(duì)點(diǎn)之間的最短路徑,此路徑在連通這對(duì)點(diǎn)的所有路徑中邊數(shù)最少,本文實(shí)驗(yàn)中中使用的是經(jīng)典的Dijkstra算法[6]。在基于通話數(shù)據(jù)的知識(shí)圖譜中,通過(guò)計(jì)算兩個(gè)手機(jī)號(hào)之間的最短路徑,可以挖掘其相互聯(lián)系的所有鏈路。例如,兩名涉及同一案件的欺詐人員可能沒(méi)有直接聯(lián)系,但通過(guò)最短路徑計(jì)算,可發(fā)現(xiàn)其隱藏的聯(lián)系鏈路,并挖掘出重要的中間聯(lián)系人,提供關(guān)鍵的案件線索。
Betweenness Centrality算法基于圖中的所有最短路徑,計(jì)算經(jīng)過(guò)每個(gè)點(diǎn)的最短路徑數(shù)量,當(dāng)某點(diǎn)的Betweenness Centrality值很高,則說(shuō)明很多點(diǎn)之間的最短路徑都經(jīng)過(guò)此點(diǎn)。因此Betweenness Centrality值的大小反映了每個(gè)點(diǎn)在圖中的必要性,此算法可用于發(fā)現(xiàn)社交圈中的必要人物。計(jì)算公式如下[7]:
(1)
式中:CB(pi)為點(diǎn)pi的Betweenness Centrality值,gjk為連接點(diǎn)pj和點(diǎn)pk的所有最短路徑的總數(shù)量,gjk(pi)是這些最短路徑中經(jīng)過(guò)點(diǎn)pi的數(shù)量。
PageRank算法是著名的Google網(wǎng)頁(yè)排名算法,其關(guān)鍵假設(shè)是網(wǎng)頁(yè)越重要,則指向此網(wǎng)頁(yè)的鏈接越多[8]。在本文中,PageRank算法用來(lái)計(jì)算圖中每個(gè)點(diǎn)的重要程度,從而挖掘通聯(lián)網(wǎng)絡(luò)中的核心人物,其計(jì)算公式如下:
(2)
式中:頁(yè)面T1至T2指向頁(yè)面A,PR(A)為頁(yè)面A的PageRank值。參數(shù)d為阻尼因子,取值區(qū)間為[0,1],在本文實(shí)驗(yàn)中取值為0.85。C(A)為頁(yè)面A指向的頁(yè)面數(shù)量。
混合高斯模型(GMM)是用高斯概率密度函數(shù)(正態(tài)分布曲線)精確地量化事物,將一個(gè)事物分解為若干基于高斯概率密度函數(shù)形成的模型[9]。該算法能高效地得到聚類(lèi)結(jié)果。本文在Spark中實(shí)現(xiàn)該模型,主要代碼如下:
#import data
data=spark.sql(′select * from tablename)
#generate vectors of features
vector=data.rdd.map(lambda
line:(line[0],line[1],Vectors.dense(…)))
dataFrame=
spark.createDataFrame(vector,[″main_phone″,″contact_phone″, ″features″])
#normalize the data
normalizer=Normalizer(inputCol=″features″,
outputCol=″normFeatures″, p=1.0)
l1NormData=normalizer.transform(dataFrame)
#running GMM model
gmm=GaussianMixture(featuresCol=″normFeatures″)
model=gmm.fit(l1NormData)
#generate the clustering result
transformed=model.transform(l1NormData).select(″main_phone″,
″contact_phone″, ″features″,″prediction″)
本文使用仿真的通話數(shù)據(jù)和電信詐騙案件數(shù)據(jù)。通話數(shù)據(jù)格式為CSV,電信詐騙案件數(shù)據(jù)為文本格式,首先根據(jù)電信詐騙案件數(shù)據(jù)在通話數(shù)據(jù)中進(jìn)行標(biāo)注,即標(biāo)注各手機(jī)號(hào)是否涉案。將數(shù)據(jù)進(jìn)行預(yù)處理后的數(shù)據(jù)描述如表1所示。

表1 數(shù)據(jù)集成后的數(shù)據(jù)示例
本實(shí)驗(yàn)使用的測(cè)試數(shù)據(jù)量如表2所示。

表2 測(cè)試數(shù)據(jù)概覽
4.2.1知識(shí)圖譜構(gòu)建
以表1所示數(shù)據(jù)為基礎(chǔ),使用圖4所示的步驟進(jìn)行知識(shí)圖譜的構(gòu)建。將源數(shù)據(jù)經(jīng)過(guò)實(shí)體抽取、關(guān)系抽取、知識(shí)融合,得到點(diǎn)數(shù)據(jù)集和邊數(shù)據(jù)集,其中:案件檔案的點(diǎn)數(shù)據(jù)示例如表3所示;CDR的點(diǎn)數(shù)據(jù)示例如表4所示;案件檔案的邊數(shù)據(jù)示例如表5所示;CDR的邊數(shù)據(jù)示例如表6所示。將點(diǎn)邊數(shù)據(jù)導(dǎo)入至Janusgraph中形成知識(shí)圖譜。

圖4 通聯(lián)數(shù)據(jù)知識(shí)圖譜構(gòu)建

fileId:IDfile name:LABELB310??????5fraudfile

表4 CDR點(diǎn)數(shù)據(jù)示例

表5 案件檔案邊數(shù)據(jù)示例

表6 CDR邊數(shù)據(jù)示例
如圖5所示,知識(shí)圖譜中包含案件、人員兩類(lèi)實(shí)體的網(wǎng)絡(luò)結(jié)構(gòu),包含案件與人員的關(guān)系,人與人之間的通話關(guān)系?;谠撝R(shí)圖譜,可進(jìn)行多維度的應(yīng)用分析,例如聯(lián)系鏈路的拓展、團(tuán)伙發(fā)現(xiàn)、關(guān)鍵人員發(fā)現(xiàn)等,從而為電信欺詐案件提供淺層和深層的破案線索。

圖5 基于通聯(lián)數(shù)據(jù)的電信欺詐案知識(shí)圖譜
4.2.2通聯(lián)特征挖掘
1) 聯(lián)系鏈路發(fā)現(xiàn)。通過(guò)以下代碼調(diào)用最短路徑算法,計(jì)算并返回兩個(gè)欺詐人員之間的聯(lián)系鏈路。
MATCH Paths=allShortestPaths((suspect1: Person
{ Phone:″1312***″})-
[:contacts*..]-(suspect2: Person
{ Phone:″1305***″}) )
RETURN Paths;
上述代碼的返回結(jié)果如圖6所示,涉及同一案件的人員“suspect1”和“suspect2”之間的聯(lián)系鏈路只包含圖中的5個(gè)實(shí)體,且實(shí)體之間的聯(lián)系較為緊密,這些中間聯(lián)系人可能是隱藏的作案團(tuán)伙,能為案件偵查提供重要線索。

圖6 最短算法的實(shí)驗(yàn)結(jié)果
2) 必要人物發(fā)現(xiàn)。通過(guò)以下代碼調(diào)用Betweenness Centrality算法,計(jì)算并返回子圖中Betweenness Centrality值最高的點(diǎn)。
MATCH(suspect2:phone {name:″15317***″})
CALL apoc.path.subgraphAll(suspect2,
{maxLevel:5}) YIELD nodes
WITH collect(nodes) AS nodes
CALL apoc.algo.betweenness([′contacts′], nodes, ′BOTH′) YIELD nodes, score
RETURN nodes, score
ORDER BY score DESC
計(jì)算欺詐人員suspect1和suspect2的通聯(lián)子圖中每個(gè)節(jié)點(diǎn)的Betweenness Centrality值,按值的高低排序可發(fā)現(xiàn)其中的關(guān)鍵人員。如圖7所示, 點(diǎn)a和點(diǎn)b為該子圖中Betweenness Centrality值最高的兩個(gè)點(diǎn),其在兩名欺詐人員的聯(lián)系鏈路中起著橋梁作用,每條聯(lián)系路徑都必須經(jīng)過(guò)點(diǎn)a和點(diǎn)b,因此這兩個(gè)點(diǎn)為該子圖的必要節(jié)點(diǎn),即這兩名人員是該通聯(lián)網(wǎng)絡(luò)中不可或缺的關(guān)鍵人物。

圖7 Betweenness Centrality算法的實(shí)驗(yàn)結(jié)果
3) 核心人物發(fā)現(xiàn)。在團(tuán)伙欺詐案中,需查找該團(tuán)伙的核心人員。在一個(gè)團(tuán)伙的聯(lián)通子圖中計(jì)算每個(gè)節(jié)點(diǎn)的PageRank值,該值的大小代表指向該點(diǎn)的邊的多少,反映了該點(diǎn)在子圖中是否具有核心地位。調(diào)用代碼如下:
MATCH(n:phone) WHERE n.name=″15317***″
CALL apoc.path.subgraphAll(n, {maxLevel:2}) YIELD nodes
CALL apoc.algo.pageRank(nodes) YIELD node, score
RETURN node.name AS name, score
ORDER BY score DESC
LIMIT 10;
計(jì)算結(jié)果如表7所示,可視化結(jié)果如圖8所示。PageRank值最高的點(diǎn)a、b、c在圖中處于核心位置,說(shuō)明這三人在此社交圈中為核心人物,是抓獲該團(tuán)伙的關(guān)鍵線索。

表7 PageRank計(jì)算結(jié)果示例

圖8 PageRank算法可視化結(jié)果
4) 社會(huì)關(guān)系識(shí)別。欺詐案件中的人員社會(huì)關(guān)系是重要線索,本實(shí)驗(yàn)從通聯(lián)數(shù)據(jù)中提取特征并構(gòu)建聚類(lèi)模型,從通話模式聚類(lèi)的角度來(lái)識(shí)別不同的社會(huì)關(guān)系。
(1) 特征提取。不同的社會(huì)關(guān)系具有不同的通話特征,例如大部分工作同事之間的通話行為發(fā)生在工作時(shí)間,并且保持聯(lián)系的時(shí)間較長(zhǎng),而家庭關(guān)系中大多數(shù)的通話發(fā)生在業(yè)余時(shí)間,并且通話的頻率相對(duì)較高。本文從通話記錄中提取具有代表性的通話特征。5種典型的通話模式如圖9所示,代表了5種社會(huì)關(guān)系。

圖9 五種典型通話模式
圖9中包含5種通話模式在12天中的通話記錄,每一天被均分為48個(gè)時(shí)間片段,每個(gè)片段為30分鐘。其中:標(biāo)注a的數(shù)據(jù)為涉及同一案件的兩個(gè)人之間的通話記錄,其通話行為僅發(fā)生在凌晨0點(diǎn)至6點(diǎn)之間,且通話頻率較高;b為兩個(gè)同事之間的通話記錄,通話多發(fā)生在工作時(shí)間,且通話頻率較高;c為暫時(shí)的工作關(guān)系,通話發(fā)生在工作時(shí)間,且僅發(fā)生一次;d為兩個(gè)朋友之間的通話記錄,通話發(fā)生在工作時(shí)間或者休息時(shí)間,通話頻率相對(duì)較低;e為一對(duì)情侶的通話記錄,通話均發(fā)生在休息時(shí)間,且通話頻率很高。從這5個(gè)典型的通話模式中可以發(fā)現(xiàn),當(dāng)通話雙方均涉及案件,其通話模式區(qū)別于其他社會(huì)關(guān)系的明顯特征為通話多發(fā)生在凌晨。
將一天劃分為3個(gè)時(shí)間段,凌晨時(shí)段(0點(diǎn)至6點(diǎn))、工作時(shí)間(7點(diǎn)至18點(diǎn))、休息時(shí)間(19點(diǎn)至23點(diǎn))。通過(guò)計(jì)算這三個(gè)時(shí)段的通話時(shí)間占比,可以從通話時(shí)間段的角度分析不同社會(huì)關(guān)系的通話特點(diǎn)。
基于上述計(jì)算及分析過(guò)程,從通話數(shù)據(jù)中提取出9個(gè)特征,根據(jù)這些特征構(gòu)建能區(qū)分不同社會(huì)關(guān)系的聚類(lèi)模型。這9個(gè)特征的具體描述如表8所示。

表8 通話記錄中的九大特征
(2) 聚類(lèi)分析。將特征數(shù)據(jù)導(dǎo)入到GMM模型中進(jìn)行計(jì)算。為提高計(jì)算效率,本模型在基于Hadoop 2.7.3和Spark 2.0.1的分布式環(huán)境中運(yùn)行。
聚類(lèi)結(jié)果如圖10所示,從9個(gè)維度來(lái)顯示聚類(lèi)結(jié)果,從而能體現(xiàn)上述9個(gè)特征對(duì)聚類(lèi)產(chǎn)生的影響,所有通話數(shù)據(jù)被聚類(lèi)為5個(gè)簇。

圖10 聚類(lèi)結(jié)果的可視化
對(duì)每簇的特征進(jìn)行分析,總結(jié)如下:
0簇:通話雙方保持聯(lián)系時(shí)間長(zhǎng),通話次數(shù)最多,通話時(shí)長(zhǎng)較長(zhǎng),并且通話行為常發(fā)生在凌晨。
1簇:通話雙方保持聯(lián)系時(shí)間較短,通話次數(shù)較少,通話時(shí)長(zhǎng)很短,通話行為多發(fā)生在凌晨。
2簇:通話雙方保持聯(lián)系時(shí)間較長(zhǎng),通話次數(shù)較少,通話時(shí)長(zhǎng)相對(duì)較短,通話行為多發(fā)生在休息時(shí)間。
3簇:通話雙方保持聯(lián)系時(shí)間較長(zhǎng),通話次數(shù)較多,通話時(shí)長(zhǎng)相對(duì)較長(zhǎng),通話行為多發(fā)生在工作時(shí)間。
4簇:通話雙方保持聯(lián)系時(shí)間最短,通話次數(shù)最少,通話時(shí)長(zhǎng)最短,通話行為多發(fā)生在休息時(shí)間。
詐騙團(tuán)伙在聚類(lèi)中分布在0簇和1簇,說(shuō)明這兩簇中的通話雙方是一種特殊的社會(huì)關(guān)系;2簇的通話雙方是家人關(guān)系或者關(guān)系緊密的朋友關(guān)系;3簇的通話雙方是工作同事關(guān)系;4簇代表的是一種短暫關(guān)系,例如推銷(xiāo)電話、泛泛之交等。因此,此聚類(lèi)分析方法能輔助分析人員從通話模式的角度發(fā)現(xiàn)欺詐人員,并為社會(huì)關(guān)系的識(shí)別提供技術(shù)支持。
綜上,本實(shí)驗(yàn)在通話數(shù)據(jù)的知識(shí)圖譜之上,從聯(lián)系鏈路發(fā)現(xiàn)、必要人物發(fā)現(xiàn)、核心人物發(fā)現(xiàn)、社會(huì)關(guān)系識(shí)別這4個(gè)維度進(jìn)行分析挖掘,為電信欺詐人員和團(tuán)伙的發(fā)現(xiàn)提供了重要線索。
結(jié)合仿真的通話數(shù)據(jù)和電信欺詐案件數(shù)據(jù),本文使用知識(shí)圖譜、分布式計(jì)算等大數(shù)據(jù)技術(shù)構(gòu)建通聯(lián)特征挖掘模型,挖掘出了通聯(lián)網(wǎng)絡(luò)中的聯(lián)系鏈路、必要人物、核心人物等隱藏線索;提取出了通話記錄中的9個(gè)關(guān)鍵特征,聚類(lèi)得到了5類(lèi)典型的社會(huì)關(guān)系,并且發(fā)現(xiàn)涉案人員之間的通話模式具有一定的特殊性,即通話次數(shù)多且多發(fā)生在凌晨、通話時(shí)間較長(zhǎng)且保持聯(lián)系的時(shí)間較長(zhǎng)。
綜上,本文提出的通聯(lián)特征挖掘方法能輔助挖掘電信欺詐案的重要線索。