APP下载

一种基于Spark/DBSCAN算法的城市公交扒窃行为分析方法

2018-05-23冯佳乐王占宏陈德华

智能计算机与应用 2018年2期

冯佳乐 王占宏 陈德华

摘 要: 随着中国城镇化进程的不断加速,城市公交扒窃行为给公民的生命财产安全构成极大的威胁,对社会风气造成了持续性的影响。研究中基于“犯罪行为是行为人主观意识对客观环境的反致行为”[1]这一理论,采用NLPIR汉语分词系统,整理以往城市公交扒窃行为数据,提取犯罪行为时间、位置数据,在Spark分布式计算框架下,利用DBSCAN算法做地理位置数据的聚类分析,发现造成犯罪反致行为[1]的客观环境和规律。通过改善客观环境,进而提高预防和控制犯罪行为的水平。

关键词: 中文分词;Spark;DBSCAN;公交扒窃

Abstract:With the acceleration of China's urbanization process the city bus theft poses a great threat to people's lives and property resulting in a sustained effect on social climate. Based on "crime is the revoni behavior of subjective consciousness and the objective environment" [1]theory using NLPIR Chinese word segmentation system organizing the past city bus theft data extracting time and position data of criminal behavior in the framework of Spark distributed computing DBSCAN algorithm is used to realize the clustering analysis of geographical location data therefore discover the objective environment caused by criminal behavior and law of renvoi. By improving the objective environment the level of preventing and controlling criminal behavior could be improved.

Key words: NLPIR;Spark;DBSCAN;bus theft

引言

随着中国城镇化进程的不断加速,城市公共交通也得到了大力发展,造成其载客量大、流动性强等特点,给人们带来便利的同时,也为违法行为创造了现实可能,同时还将给人们的生命财产安全构成一定威胁。而且因其突出的流动性所导致,侦查工作也随即增加了告破难度,这也会给现代社会的有序发展制造了潜在隐患和不和谐因素。针对这一问题,关于城市公交扒窃犯罪行为的分析研究则具有重要的现实意义。

城市公交扒窃[2]犯罪是指以非法占有为目的,在城市公共交通工具上或公交乘车、候车场所,乘被害人不备之机,通过采用手掏、划包、夹取、剪取等秘密手段窃取他人随身携带财物的犯罪行为。

1 开发技术研究解析

NLPIR[3]是由张华平博士主持研发的汉语分词系统,重点包括了中文分词、词性标注、命名实体识别、用户词典功能、关键词提取等功能。

Spark[4]是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map/reduce算法实现的分布式计算,拥有Hadoop MapReduce的全部优点;但与MapReduce不同的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark在数据挖掘与机器学习等需要map/reduce迭代的算法研发上占据了明显优势。

DBSCAN[5](Density-Based Spatial Clustering of Applications with Noise)作为基于密度算法的经典代表,在聚类分析中得到越来越多的应用。与划分和层次聚类方法不同,DBSCAN可将簇定义为密度相连的點的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。但是DBSCAN算法在处理数据时,需要多次重复扫描。在进行海量数据聚类时,DBSCAN算法会消耗大量的内存和I/O开销[6]。另外,DBSCAN算法在计算时需要用户提供2个全局参数,即邻域半径和邻域内包含对象的个数,这些参数对聚类结果很敏感,由于用户难以确定参数,就需要不断地更新尝试,这对性能也将构成严峻挑战。文献[7]也进一步提出了改进的DBSCAN算法。文献[8-9]又研发了基于云计算和Hadoop平台的DBSCAN算法。

综上分析可知,如果研究采用基于Spark分布式计算框架就可以有效解决DBSCAN算法的缺陷。Spark是基于内存的分布式计算框架,在DBSCAN算法计算中可以大幅减少I/O开销和内存开销;而且由于其分布式计算的特点,程序可以同时计算多个参数组合,比较聚类效果的优劣,用户不再需要确定参数就可以获得理想的聚类效果。

基于此,在本文中,研究采用了NLPIR汉语分词系统,结合政务公开数据和地图服务,汇总整理以往城市公交扒窃行为数据,提取犯罪行为时间、位置数据,利用Spark分布式计算的优势,基于DBSCAN做出地理位置数据的聚类分析,发现造成犯罪反致行为的客观环境和规律,增强防扒意识,减少人民的财产损失。

2 城市公交扒窃行为数据整理

本文研究的数据主要是犯罪时间和犯罪位置。根据具体情况,犯罪时间、犯罪位置都没有对应指定的特征数据,就需要通过处理分析公交扒窃案情描述信息来提取特征数据。案情描述示例则可见表1。为此,即采用张华平博士主持研发的汉语分词系统来展开特征数据提取研究。其中,犯罪位置数据就是通过辨识得出描述中的站点名称和线路名称,再借助公交线路查询服务,最终获取犯罪位置数据。

2.1 提取公交线路信息

公交线路是城市公交扒窃案中的基础重要数据,提取的公交线路数据的准确性就决定了整个分析过程的可靠性。而利用政务公开数据(城市公交线路)就可优化所提取公交线路的准确性。过程中,设计提取步骤如下:

(1)基于完全匹配的规则。基于完全匹配的规则,从案情描述中提取、且记录公交线路信息,并标记案件信息。

(2)基于同音匹配规则。对于步骤(1)没有匹配到公交线路的案件信息,基于同音匹配规则,重新提取、且记录公交线路信息,并标记案件信息。

(3)手工提取公交线路。对于步骤(1)、(2)没有匹配到公交线路的案件信息,进行手工提取,记录提取到公交线路信息,并标记案件信息。如果还未提取到公交线路数据,可以考虑舍弃案件数据。

2015年8月25日14时30分左右,报警人于凉城新村乘上758路公交车,其于14时55分左右行驶至政立路武川路下车时发现其衣服左侧口袋被割破,随身携带的身份证以及800元现金被盗,故来所报案。

2.2 提取犯罪时间数据

由于时间的特殊性,可以利用正则表达式从城市公交扒窃案情描述信息中提取到犯罪时间数据。根据提取到的犯罪时间数据,即可得知案发日期、案发星期、案发月份、案发季节等,进而利用政务公开数据(天气),获取案发当日的天气情况。

2.3 提取犯罪位置数据

2.3.1 根据公交线路获取公交站点信息

依据提取到的公交线路信息,利用公交线路查询服务获取公交线路的所有公交站点数据和地理坐标数据。以高德地图服务[10]为例,研发可得设计代码如下:

function lineSearch(lineName) {

AMap.plugin([AMap.LineSearch],function(){

var linesearch = new AMap.LineSearch({

pageIndex: 1 city: 上海,

pageSize: 1 extensions: all

});

line.search(lineName, function(st rt) {

if (rs == complete && rt.info == OK) {

var lineArr =rt.lineInfo;

var lineNum = rt.lineInfo.length;

if (lineNum > 0) {

for (var i = 0;i < lineNum;i++) {

//公交线路路线(坐标数据)

var pathArr = lineArr[i].path;

//所有的站点的坐标和站点名称

var sts= lineArr[i].via_stops;

var len = sts.length;

var stPot =sts[0].location;

var ePot = sts[len - 1].location;

}

}

}

});

});}

2.3.2 提取上下车站点数据

将2.3.1节中获取的站点信息作为字典信息,与公交扒窃案情描述信息进行比对,并依据“上车”、“下车”等特殊标记获取上、下车站点名称及坐标信息。如果未获取到上车站点信息的,将公交线路的起点作为上车站点信息;如果未获取到下车站点信息,将公交线路的终点作为下车站点信息。根据获取的上、下车站点信息与公交线路站点信息进行比对,将上、下车站点之间的公交站点作为案发的途经站点信息。上、下车站点信息和途经站点信息即为公交扒窃案的案发地理位置信息。

3 城市公交扒窃行为分析

城市公交扒竊行为是一种“静态”和“动态”的犯罪行为的综合体,由于作案时间和作案地点都不确定,所以其犯罪行为可能发生在上、下车站点(静态)和途经站点(动态)。本文通过提取公交站点的地理位置信息获取案发地理位置信息,利用Spark分布式计算框架,以案发位置信息为研究内容,基于DBSCAN算法进行地理位置数据的聚类分析,从而发现公交扒窃行为的客观因素及行为规律。

以某市公交扒窃报案数据为研究对象,通过DBSCAN算法伪代码描述分析过程。定义集合XYMap用于存放聚类结果,设研究半径为R,研究可得分析过程表述如下:

步骤1 给发生扒窃的公交线段编号排序,得到新的公交线段集合A。

步骤2 依次获取公交线段A_i及A_i包含的公交站点集合A_i.List。

步骤3 依次从A_i.List中获取相邻的2个公交站点(a,b)。

步骤4 获取公交线段A_(i+j)及包含的公交站点集合A_(i+j).List。(j从1开始,i+j<=A.count)。

步骤5 依次从A_(i+j).List获取相邻的2个公交站点(c,d)

步骤6 计算a,b,c,d的交点e,如果交点e在(a,b)线段上,则将交点e存入集合XYMap中,并将A_i和A_(i+j)标记为visited;否则计算(a,b)的中点和(c,d)的中点的距离R_i,如果R_i<=R,则将(a,b)的中点和(c,d)的中点的中点存入集合XYMap中,并将A_i和A_(i+j)标记为visited;

否则跳过。

步骤7 重复步骤5~6,直到d为A_(i+j).List中的最后一个站点。

步骤8 重复步骤4~7,直到i+j>A.count。

步骤9 重复步骤3~8,直到b为A_i.List中的最后一个站点。

步骤10 重复步骤2~9,直到Ai为A中的最后一個公交线段。

步骤11 获取所有未被标记为visited的公交线段集合,通过迭代计算相邻点的中点,计算出公交线段的中点,存入集合XYMap中。

步骤12 返回集合XYMap,并在地图中绘制及展示结果。

算法运行后的聚类效果如图1所示。从地图展示效果分析,案件呈现以多种不规则形状,一般集中在地铁、车站、医院、学校、商业区附近,这一结果与文献[2]中的结论一致,这也同时验证了城市公交扒窃往往发生在人群集中、经济繁荣的地方。

DBSCAN算法以地理位置信息进行聚类,以案件的聚类结果将案件标记为“地铁”案件、“车站”案件、“医院”案件、“学校”案件、“商业街”案件,分别对案件按时间运行统计,具体结果可见表2。

4 结束语

城市公交扒窃行为就是指在公共场合趁人不备,采取秘密的方式窃取他人财物的做法,发生在公共交通工具内及候车点附近,比如人群集中的商业区、经营或运行规律的学校和医院以及承载交通连接的公共交通站点附近,案发时间与区域的经营时间、以及人们的行为习惯有关。

本文设计提出了一种城市公交扒窃行为分析的方法,期待能够开创城市公交扒窃行为有效防治新局面。通过城市公交扒窃行为的结果分析表明:城市公交扒窃的发生与客观环境有关,即由偷盗者主观判断客观环境利于扒窃才会付诸行动。基于这一理论,通过提高人民的警惕性和增强公共交通站点的安全措施就可有效减少城市公交扒窃行为的发生。

参考文献

[1] 闫冬. 浅谈犯罪行为产生的原因[J]. 黑龙江科技信息 2010 (13): 181.

[2] 任光宇. 城市公交扒窃犯罪防治研究[D]. 长沙:湖南大学 2008.

[3] 张华平. NLP汉语分词系统[EB/OL]. [2012]. http://ictclas.nlpir.org.

[4] 百度. Spark[EB/OL]. http://baike.baidu.com/item/SPARK/.

[5] BORDOGNA G LENCO D. Fuzzy core DBScan clustering algorithm[M]//LAURENT A STRAUSS O BOUCHON-MEUNIER B et al. Information Processing and Management of Uncertainty in KnowledgeBased Systems. IPMU 2014. Communications in Computer and Information Science. Cham:Springer International Publishing 2014: 100-109.

[6] 李杰 贾瑞玉 张璐璐. 一个改进的基于DBSCAN的空间聚类算法研究[J]. 计算机技术与发展 2007 17(1): 114-116.

[7] 罗启福. 基于云计算的DBSCAN算法研究[D]. 武汉:武汉理工大学 2013.

[8] 王雅光. 基于Hadoop平台的DBSCAN算法应用研究[D]. 广州:广东工业大学 2013.

[9] GHANBARPOUR A MINAEI B. EXDBSCAN:An extension of DBSCAN to detect clusters in multi-density datasets[C]//2014 Iranian Conference on Intelligent Systems(ICIS). Bam,Iran:IEEE 2014: 1-5.

[10]高德. 高德地图服务[EB/OL]. [2012]. http://lbs.amap.com/.