朱小波 栗赫遙
(上海公安學院治安系 上海 200137)
犯罪活動具有復雜性和多樣性的特點,直接影響著社會安定和人民安全。目前,大量研究成果表明犯罪活動雖復雜多變,但基于犯罪行為發(fā)生的條件限制,必然與犯罪時間、犯罪空間、犯罪人等因素產(chǎn)生特定關(guān)系,通過對相關(guān)因素進行分析,不但可以總結(jié)犯罪規(guī)律,而且可以通過建立數(shù)據(jù)模型預測犯罪發(fā)生,達到主動響應、提早預防的效果。現(xiàn)如今,隨著海量犯罪數(shù)據(jù)的“歷史積淀”,對其進行深度挖掘和推理,已然成為公安機關(guān)在大數(shù)據(jù)時代的必然選擇。作為最常見的侵犯財產(chǎn)類犯罪形式之一,盜竊犯罪不僅案發(fā)量高而且極易演變至其他類型的犯罪,社會危害性較大,人民群眾對此深惡痛絕。因此,對盜竊犯罪特征因素分析以及預測模型的建模研究,不僅有助于發(fā)掘該類犯罪的特征向量,盡早采取措施進行有效預防,同時對間接降低其他類型案件的犯罪率,提升社會面整體治安水平都有所裨益。
早在19世紀30年代,美國紐約市警察局就采用數(shù)據(jù)分析方法預測犯罪問題。警察局的分析人員通過將犯罪的地理空間等信息用圖釘分別標注于地圖上,運用歸納分析、關(guān)聯(lián)分析和邏輯推理的方法找出犯罪發(fā)生的規(guī)律,并結(jié)合多年從業(yè)經(jīng)驗,最終進行犯罪數(shù)量和易發(fā)案區(qū)域進行預測。時至今日,隨著信息技術(shù)和人工智能的不斷發(fā)展和應用,越來越多的學者通過地理信息系統(tǒng)、機器學習與數(shù)據(jù)挖掘等技術(shù)方法的結(jié)合,對犯罪數(shù)據(jù)進行綜合分析與預測?;诖髷?shù)據(jù)的犯罪預測不僅能夠擺脫個人經(jīng)驗的偏見影響,還有助于優(yōu)化警力配置,實現(xiàn)多維度預防犯罪。例如,決策樹算法就可以多條件向下劃分針對復雜分類問題給出有預見性的分類結(jié)果,從而達到預測犯罪趨勢的效果[1]。金光等[2]運用決策樹算法構(gòu)建預測模型,探索出了適用于犯罪預測領(lǐng)域的數(shù)據(jù)挖掘方法。李衛(wèi)紅等[3]通過對某市犯罪歷史數(shù)據(jù)的學習及訓練建立改進后的GA-BP神經(jīng)網(wǎng)絡模型。國外也有學者將研究區(qū)域劃分成一個個單元格,通過logistic回歸和神經(jīng)網(wǎng)絡兩種犯罪預測模型相互結(jié)合的方式對研究地理區(qū)域的單元格進行犯罪預測[4]。還有學者從原始犯罪數(shù)據(jù)當中提取數(shù)據(jù)集,通過數(shù)據(jù)挖掘構(gòu)建不同分類器模型,從而達到犯罪預測的目的[5-7]。
犯罪數(shù)據(jù)往往具有樣本信息復雜多變、樣本量大等特點,對其進行精確預測具有一定的難度。本文為實現(xiàn)此目的,將引入主成分分析(PCA)法和XGBoost法,即:將多變量數(shù)據(jù)降維與極端梯度提升分類算法相結(jié)合,使用迭代運算方法將大量的弱分類器組合成強分類器,能夠有效地構(gòu)建增強樹并實現(xiàn)并行運行。
由于國內(nèi)犯罪數(shù)據(jù)的涉密性,本文選取2017年美國芝加哥市的盜竊犯罪的911報警數(shù)據(jù)集,依次進行數(shù)據(jù)概況描述、數(shù)據(jù)篩選和數(shù)據(jù)清洗等預處理工作。最終在原始樣本中獲取了分組聚合成48 126個有效數(shù)據(jù),數(shù)據(jù)集字段包括案件ID、犯罪日期分段標注、所屬街區(qū)、案件描述、所屬分局、所屬社區(qū)、犯罪所在經(jīng)緯、維度和聚合計數(shù)后的案件發(fā)生次數(shù)等。數(shù)據(jù)集主要字段信息如表1所示。
表1 數(shù)據(jù)集字段表
基于PCA-XGBoost算法的盜竊犯罪數(shù)量預測模型可以概括為以下幾個步驟:首先,利用盜竊犯罪報警數(shù)據(jù)集的PCA處理,形成犯罪數(shù)量的特征矩陣;然后,構(gòu)建犯罪數(shù)量預測模型,包括預測模型優(yōu)化和定模;最后,基于統(tǒng)計數(shù)據(jù)進行犯罪數(shù)量預測。如圖1所示。
圖1 基于PCA-XGBoost算法的盜竊犯罪數(shù)量預測模型框架
PCA是一種無監(jiān)督學習、多元統(tǒng)計分析方法,用于發(fā)現(xiàn)數(shù)據(jù)基本結(jié)構(gòu),實現(xiàn)多變量數(shù)據(jù)降維,其主要實現(xiàn)步驟如下:
(1) 樣本數(shù)據(jù)規(guī)范化處理。
(1)
(2) 樣本協(xié)方差矩陣的特征值分解。
求解s的特征值方程:
|s-λI|=0
(2)
得到s的m個特征值λ1≥λ2≥…≥λm,與之相對應的特征向量為(ξ1,ξ2,…,ξm)。
(3) 主成分計算。
(3)
(4) 計算主成分的方差貢獻率。
(4)
式中:ρi表示第i個主成分的方差貢獻率。
XGBoost(eXtreme Gradient Boosting)是基于梯度提升迭代決策樹算法優(yōu)化而來的極端梯度增強分類算法,具有高效、并行、精確和魯棒性好等優(yōu)點。在同樣條件下,XGBoost算法的運算能力、訓練速度以及預測速度比其他算法更著優(yōu)勢。由于XGboost具有自動分裂學習能力,其目標函數(shù)考慮了二階導數(shù)的影響,使損失更精確,極大提高了算法的效率。因此,XGBoost非常適合應用于在時間不連續(xù)、空間間隔性下的盜竊犯罪數(shù)量預測。
XGBoost目標函數(shù)和優(yōu)化推導如下:
1) XGBoost考慮正則化項,目標函數(shù)定義如下:
(5)
依據(jù)上述模型框架,可以優(yōu)化出樹的建模函數(shù)ft(x):
(6)
2) 每次建樹優(yōu)化以下目標:
(7)
3) 假設已知樹結(jié)構(gòu)q,即每個樣本xi能通過該結(jié)構(gòu)q找到相對應的樹葉子節(jié)點j,可以定義Ij={i|q(xi)=j}為在樹結(jié)構(gòu)q下,落入葉子節(jié)點j所有樣本序號的集合。對上述表達式進行展開并通過配方法,就可以得到:
(8)
最終得到葉子權(quán)重值為:
(9)
4) 最終的目標值為:
(10)
本文利用經(jīng)過清洗后的2017年芝加哥的盜竊犯罪的911報警數(shù)據(jù)集的80%作為模型的訓練集,將剩余的20%作為測試數(shù)據(jù)集用來驗證模型精度。
數(shù)據(jù)中考慮到大量日期上的分散性,對日期數(shù)據(jù)進行步長處理,每月按照上中下三類作區(qū)分,對日期步長、街區(qū)、區(qū)域和經(jīng)緯度等,按犯罪發(fā)生次數(shù)分組聚集計數(shù)。因案件類型、街區(qū)和案件描述字段是屬性變量,需要進一步進行類別數(shù)值劃分,本文采用獨熱編碼(One-Hot)),把屬性變量轉(zhuǎn)化為數(shù)值型變量,可以認為和統(tǒng)計學中單位標準向量相同,向量元素只有0和1,即N種屬性類型變量對應N種狀態(tài)列,如有兩個屬性變量,其中兩個變量去重值數(shù)量對應為n×m(N),由獨熱編碼方式映射的向量矩陣就是m×n型的不嚴格的標準單位矩陣,如此把屬性類變量歸一到二進制向量上,將出現(xiàn)狀態(tài)對應的視為整數(shù)索引標記為1,其他的空缺情況標記為0。此編碼方式可將離散的序列擴展到歐氏空間,編碼之后,一方面在計算和刻畫特征之間的距離和離散化程度刻畫上更加便捷,另一方面也方便對特征向量進一步實現(xiàn)特征工程和模型構(gòu)建,達到預測的目的。
本文數(shù)據(jù)列中的兩列犯罪描述和犯罪類型可以形成3×2的向量矩陣,可以表示為“RETAIL THEFT”=>[1,0,0,0,0,0],“ATTEMPT THEFT”=>[0,1,0,0,0,0],“OVER $500”=>[0,0,1,0,0,0]等。
結(jié)合先驗經(jīng)驗與數(shù)據(jù)可得性,本文從時間、空間經(jīng)緯度、所屬街區(qū)等方面分裂出15個維度指標作為模型特征向量,然后采用PCA方法提取特征成分,具體各特征的重要性程度如圖2所示。
圖2 特征重要性圖
在所選擇的訓練集下訓練出的模型仍需進一步驗證模型的精確性和準確性。
本文選擇了三種方法:
(1) 從測試集和預測數(shù)據(jù)集真實數(shù)值出發(fā),計算預測集和實際測試集的差值,選擇均方根誤差(RMSE)作為第一個模型評估的方法。
(2) 采用分類正確率(AUC),即:ROC曲線覆蓋面積大小,該指標考慮了正例和負例排序得分問題。
對于XGboost.train參數(shù)進行調(diào)優(yōu):
& early_stopping_rounds=10
& eval_metric=′mlogloss′
& eval_set=eval_set
& verbose=True
& learn_rate=0.01
& early_stopping_rounds:早期停止次數(shù),本模型設為10。
& evals:用于對訓練過程中進行評估列表中的元素列表。形式是evals=[(dtrain,′train′),(dval,′val′)]或者是evals=[(dtrain,′train′)],用于訓練過程中觀察驗證集的效果。
& learning_rates:每一次提升的學習率的列表。
& eval_metric:選擇的損失函數(shù)類型。
均方根誤差的公式如下:
(11)
式中:n代表犯罪指標的樣本數(shù)。
犯罪數(shù)量預測誤差分布直方圖情況來看,如圖3所示,在各測試值加上均方誤差值(1.60)變化情況,85.6%以上的犯罪數(shù)量誤差率在30%以內(nèi),平均準確率達到80.6%。
圖3 犯罪數(shù)量預測誤差分布直方圖
本文采用的另一種衡量指標AUC作為本次犯罪預測模型的精準度判定。AUC即為ROC曲線下的面積大小,AUC一般對應于二分類邏輯回歸中衡量分類模型的精準度,表示得到的正例預測排在負例前面的概率,可以理解為在本文選擇的正、負兩個樣本中分別賦予的得分的對比情況,每一個分類器對應給出正樣本得分高于負樣本的概率大小。具體方法為:首先對樣本得分進行降序排列,得分最高的樣本對應為n,依次向下排列,最終得到的是n-1,…,1序列形式,可以算出正例樣本的數(shù)量(減去兩個正例樣本交叉重復出現(xiàn)的情況)和正樣本得分大于負樣本得分數(shù)值,與總數(shù)的比值即為所求,即:
(12)
最后采用的另外一種評價方法:F1分數(shù)。與AUC模型相同,F(xiàn)1分數(shù)同時考慮了準確率以及召回率的影響。但是從模型優(yōu)化角度來看,AUC的優(yōu)化目標是訓練一個偏保守的不誤報的模型,而F1分數(shù)的優(yōu)化目標是訓練一個偏激進的不放過任何可能的模型。綜合兩者考慮,能夠綜合兩者各自的優(yōu)點。F1分數(shù)的計算公式如下所示:
(13)
式中:P代表Precision,即準確率;R代表Recall,即召回率。
考慮到在實驗中選出的訓練集訓練出來的模型在實際使用測試和模型預測中可能出現(xiàn)參數(shù)擬合欠佳和過擬合,為了提高模型的泛化能力和其對應的最優(yōu)超參值,本文選擇利用K折交叉驗證方法對參數(shù)進行迭代調(diào)優(yōu),找到一個更具說服力的最優(yōu)超參值,并運用到訓練集上重新訓練模型,之后的步驟也就是上述的評價標準值問題。
(1) 在樣本數(shù)據(jù)集篩選過程中先將全部訓練數(shù)據(jù)集在統(tǒng)計學的概念上分成k個互不相交和相互獨立的子集,全部訓練數(shù)據(jù)集用S表示,并且假設S中的訓練樣例個數(shù)為n,那么每一個子集對應為n/k個訓練樣本比例,相應的子集稱作{s1,s2,…,sk}。
(2) 每次從已經(jīng)分好的互不相交的分子集中里面,隨機取出一個作為測試數(shù)據(jù)集,其他的k-1個視為訓練集使用。
(3) 利用工具包函數(shù)對k-1個訓練集訓練學習器模型,隨后進行模型輸出和假設函數(shù)系數(shù)輸出。
(4) 將得出的模型放到測試數(shù)據(jù)集上進一步驗證,得到分類率。
(5) 通過計算k次,將求得的分類率的平均值,作為該模型或者假設函數(shù)的真實分類率。
K折交叉驗證能很好地起到參數(shù)預測模型的欠擬合和過擬合的平衡作用,可以更好地解釋和說明參數(shù)模型結(jié)果。在Python XGBoost庫里,通過CV函數(shù)實現(xiàn)交叉驗證技術(shù)實現(xiàn)。
前文從檢驗方法的角度,選用了均方根誤差、AUC、F1分數(shù)和K折交叉驗證對預測模型學習效果進行評估和調(diào)優(yōu)。為證實本文選擇的該機器學習的優(yōu)勢,選擇了兩種對隨機擾動項不太靈敏的算法NB、LR、兩種對異常數(shù)據(jù)擾動性比較靈敏的算法CART、RF及單一的XGBoost算法作為模型實驗的對照。采用鮮明的可視化變現(xiàn)方式,即給出各個算法對應的ROC曲線,在一幅圖中可以清晰地看到每個算法的“高下之分”,當一個算法的ROC曲線全部路徑在另一條ROC曲線上,基本可以認定前者算法是更優(yōu)的選擇。
圖4為XGBoost、NB、LR、CART和RF各分類算法針對本文的犯罪數(shù)據(jù)集建立的預測模型進行預測結(jié)果的ROC曲線路徑情況,其中:橫坐標為False Positive Rate(反向概率),縱坐標為True Positive Rate(正向概率)。ROC曲線以越快的速度傾向于坐標的左上角位置,可以認為該算法的分類和回歸效果越好。
圖4 各算法預測結(jié)果的ROC曲線對比圖
從圖4所示各算法ROC曲線路徑分布和走勢可以明顯看出PCA-XGBoost算法的預測精確度效果優(yōu)于其他各種分類預測算法。
為了進一步驗證和比較各個算法的預測平均準確度以及平均F1分數(shù),對聚合成的48 126個有效數(shù)據(jù)集進行5次5折交叉驗證,分別對應各模型算法建立預測驗證和對比。表2可以看到PCA-XGBoost預測準確度明顯優(yōu)于其他四種算法,從各個算法5折平均準確度來看,PCA-XGBoost算法的平均準確率達到88.21%,要優(yōu)于單一的XGBoost算法(86.53%),亦遠高于其他算法(平均準確率均在80%以下)。如表3所示,從5折F1分數(shù)來看,PCA-XGBoost算法的平均F1分數(shù)達到85.03%,要優(yōu)于單一的XGBoost算法(84.23%),亦遠高于其他算法。因此,可以得出PCA-XGBoost算法在預測盜竊類犯罪數(shù)量的應用場景之下,將會展現(xiàn)出較大的優(yōu)勢。
表2 各算法預測準確度對比表(%)
表3 各算法預測F1分數(shù)對比表(%)
經(jīng)與測試集數(shù)據(jù)的對比驗證情況來看,基于PCA-XGBoost算法的盜竊犯罪預測模型,不僅在計算效率和速度上有明顯優(yōu)勢,而且其預測準確率達到88.21%,其預測F1值為85.03%,高于XGBoost、LR和NB等其他一些常用的分類模型。因此,該預測模型能夠有效地揭示盜竊犯罪在相應時間和空間下的數(shù)量及其變化情況,其預測準確度是非常具有實際指導意義的,在實際警務工作中有較大的推廣價值。
本文以2017年美國芝加哥市的盜竊犯罪的911報警數(shù)據(jù)集作為樣本數(shù)據(jù),建立了具有較佳性能且適用于芝加哥市盜竊類犯罪的犯罪預測模型。通過多種檢驗方法得出該PCA-XGBoost算法模型具有較高的準確率。另一方面,通過與其他分類算法模型進行橫向?qū)Ρ葘嶒灡砻鳎篜CA-XGBoost模型對樣本市的盜竊犯罪發(fā)生數(shù)量的預測準確度明顯高于其他類型的分類預測模型,其預測準確率達到88.21%,其F1分數(shù)可達85.03%??梢灶A見,該算法模型將在當?shù)鼐结槍ΡI竊犯罪的防控和打擊工作中發(fā)揮重要作用。
需要注意的是,本文研究的是盜竊犯罪只是諸多犯罪類型的一種。不同地域、不同犯罪類型在時間和空間上都可能大相徑庭。因此,在未來針對不同類型犯罪預測模型的構(gòu)建中,不僅要結(jié)合報警數(shù)據(jù),還有必要考慮當?shù)貙嶋H的犯罪數(shù)據(jù)進行深度學習,尤其是要在特征向量的提取方面,將與犯罪人、被侵害人(地)有關(guān)復雜特征數(shù)據(jù)一并考慮。這樣開發(fā)的預測模型才能更準確和快捷,這也必然是犯罪預測研究未來的熱門研究方向之一。