冯佳乐, 姚远
(1. 上海众恒软件技术有限公司, 上海 200042; 2. 重庆市公安局警务督察总队, 重庆 401147)
公共交通在日常出行中占据重要地位,为市民提供方便的同时,却也成为了扒窃者的聚集地,特别是在我国城镇化进程发展比较快的发达地区,发生在公共交通上的扒窃行为对治安稳定造成了持续性的影响,由于这种扒窃行为多发生在人员复杂、流动性大、现场难以取证等特殊的环境中,给案件的侦破带来很大的不确定性,可见客观环境决定了案件的发生概率,因此提高市民的主观防护意识,可以有效避免案件的发生。
文献[1]阐述了关于犯罪热点的定义,由于公交扒窃案件具有流动性的特征,其案发地很难界定,发生的时间和空间位置呈现不均匀分布状态,很容易形成犯罪热点,因此研究这种聚集的成因以及预测这类案件的发生对预防扒窃案件具有很好的指导意义。
本文通过整理以往公交扒窃行为的数据,侧重分析犯罪时间和位置数据,基于凝聚层次聚类算法,开展扒窃犯罪的热点分析研究,加强热点区域的防范宣传,可以有效地减少公共交通扒窃犯罪的发生,进而提高市民的生活安全感和城市文明形象。
聚类算法作为无监督学习的一个重要算法,多用于机器学习的数据挖掘和分析等领域,其核心思想是将具有相似属性的研究对象聚合到一起,形成的每组类中的研究对象在某种程度上具有共性,这为研究犯罪热点提供了理论基础[2-3]。
层次聚类算法是聚类算法的一种,根据层次聚类的方式分为自上而下和自下而上两种模式。凝聚层次聚类算法[4]属于自下而上的层次聚类算法,首先把所有研究对象默认分组,然后对每个组按照相关算法进行合并,直到把研究对象聚集成一个分组或自己设定的条件为止。
犯罪热点的研究根据犯罪发生的空间形态的不同,主要分为基于面形态的研究和基于点形态的研究。具体的研究过程可以分为研究形态的识别和相关热点的分析。
公交扒窃犯罪主要是发生于公交行驶过程中以及公交站点的扒窃犯罪,行驶过程中发生的犯罪难以确定具体的犯罪位置,在研究中我们将发生在行驶过程中的犯罪置换到发现犯罪事实最近的公交站点。本文研究的公交扒窃犯罪热点主要采用面向离散点的犯罪热点研究,将每个公交扒窃案件识别为单独的组,通过计算每组扒窃犯罪的位置半径进行层级聚类,依据犯罪半径及聚类层级等指标可以满足警方对犯罪热点不同尺度的研究分析。
在本文中,我们结合犯罪数据、地图服务和层次聚类算法,通过研究历史的公交扒窃犯罪的空间位置信息,基于层次聚类算法研究犯罪的地理位置数据,发现犯罪热点信息,加强反扒宣传,提高防扒意识,减少人民的财产损失。
面向离散点的犯罪热点研究是本文研究的重点,数据主要是犯罪发生的位置数据,以某市2019年公交扒窃报案数据为研究对象。
日常碰到比较常见的公交扒窃数据主要是案件的接报数据,其具体的形式如表1所示。由于这种犯罪数据的特殊性,其内容主要是受害人的报案数据,也是受害人对犯罪发现过程的一种描述信息,没有具体的犯罪位置为研究带来了一定难度,也是相关领域研究滞后的影响因素。
表1 公交扒窃案件描述
本文通过分析公交扒窃案件描述信息来提取犯罪位置数据,首先提取所有案件的公交线路和公交站点信息,借助公交线路查询服务获取犯罪位置数据。参考文献[5],数据处理的具体过程如下。
公交线路的提取采用分词和正则匹配的方法,从犯罪案件描述信息中提取出公交线路,依托外部数据和服务获取公交线路的站点信息,将提取的所有公交站点信息作为字典使用。
提取公交站点数据是数据提取的关键,将提取的相关数据作为案件的发生位置,我们将上一步获取的公交站点字典信息作为分词字典,对案件描述信息重新进行分词,从0到1取相似度高的作为扒窃发生点信息。
转换公交站点位置信息需借助地图服务,根据地图服务提供的兴趣点查询服务输入公交站点信息,返回其对应的位置信息,作为实验的基础数据。
公交扒窃是一种流动性犯罪行为,犯罪人经常以一种隐蔽的方式流窜作案,受害人很难确定具体的被盗时间和被盗地点,根据报案时提供的被害地点获取其大概犯罪活动地,以凝聚层次聚类算法为基础,曼哈顿距离为聚类依据,使用地图分析工具获取案发地理位置信息,计算案发地之间的距离,研究公交扒窃行为的犯罪热点现象。
定义集合A{i=1,2,3,…,n}用于存放聚类数据,分析过程如下。
步骤1 按案件的地理位置坐标进行排序,将排序结果存入定义集合A{i=1,2,3,…,n}中。
步骤2 依次计算Ai与集合中其他元素的曼哈顿距离Ai=(xi,yi),d=|xi-xj|+|yi-yj|,其中j不等于i。
步骤3 将步骤2所得的集合中距离最近点Ax和Ai作为新的集合,记作(Ax,Ai)。
步骤4 循环执行步骤2和步骤3,最终得到新的集合B{(Ah,Ak),(Al,Ag),(Am,An),(Ao,Ap),…,(Ax,Ay)}。
步骤5 依次计算步骤4中得到的新集合中元素的中心点,以每个集合的中心点为新的元素,计算中心点的曼哈顿距离,将距离最近的2个元素集合合并为新的集合,记作(Ah,Ak,Al,Ag)。
步骤6 重复步骤5,最终形成新的集合C{(Ah,Ak,Al,Ag),(Am,An,Ao,Ap),…,(Ax,Ay,Au,Az)}。
步骤7 重复步骤5、6,直到d>10公里。
步骤8 重复步骤2、3、4、5、6、7,将所有集合放入集合D中。
步骤9 生成的集合D即为实验结果。
步骤10 循环集合D,取出每个集合的中心点及元素个数,最终形成{(x,y,n)…….},x为中心点横坐标,y为中心点纵坐标,n为元素数量。
本文实验的数据为某市某区域的公交案件,运行环境为1台算法分析工作机和1台地图分析工作机,考虑到案件数据的敏感性,算法分析需要使用原始案件数据,因此将算法分析工作机部署在特殊的网络环境,地图分析工作机部署在外网环境,将算法分析结果传输到地图分析工作机上再进行地图分析。具体配置如表2所示。
表2 工作机配置表
算法实现以Python语言为编程语言,依据算法设计的步骤进行算法开发,定义points为案件的存储集合,初始指派每个点为单独的一个簇,并放入groups中,具体如下。
(1) 自下往上聚类
groups= [pt_idx for pt_idx in range(len(points))]
pt_pt_dis = {}
for pt_idx1,pt1 in enumerate(points):
for pt_idx2,pt2 in enumerate(points):
if (pt_idx1 < pt_idx2):
pt_pt_dis[str(pt_idx1)+"_"+str(pt_idx2)] = abs(t1. lng-pt2. lng) + abs(pt1.lat-pt2.lat)
按距离进行排序
pt_pt_dis =
OrderedDict(sorted(pt_pt_dis.iteritems(), key=itemgetter(1), reverse=True))
获取当前簇个数
group_len = len(groups)
设定循环结束条件
end_len = int(group_len*0.15)
while group_len > end_len:
tps_key,dt_value = point_point_dis.popitem()
ptA = int(tps_key.split(’_’)[0])
ptB = int(tps_key.split(’_’)[1])
ptAG = groups[ptA]
ptBG = groups[ptB]
合并簇
if(ptAG != ptBG):
for idx in range(len(groups)):
if groups[idx] == ptBG:
groups[idx] = ptAG
group_len-= 1
(2) 获取聚类的几何中位数
def geometric_median(X, eps=1e-5):
y = np.mean(X, 0)
while True:
D = cdist(X, [y])
nonzeros = (D != 0)[:, 0]
Dinv = 1 / D[nonzeros]
Dinvs = np.sum(Dinv)
W = Dinv / Dinvs
T = np.sum(W * X[nonzeros], 0)
num_zeros = len(X)-np.sum(nonzeros)
if num_zeros == 0:
y1 = T
elif num_zeros == len(X):
return y
else:
R = (T-y) * Dinvs
r = np.linalg.norm(R)
rinv=0 if r==0 else num_zeros / r
y1 = max(0,1-rinv) * T + min(1,rinv) * y
if np.linalg.norm(y-y1) < eps:
return y1
y = y1
(3) 获取聚类的几何中位数中心
def get_posMedianCenter(pos):
xy_arr = np.array(pos).transpose(1, 0)
test_median = geometric_median(xy_arr)
pos_point = Point(test_median[0], test_median[1])
return pos_point
最终获取聚类的几何中位数中心和组的数量,形成表3数据。
表3 扒窃案件热点数据
结果展示主要是借助地图的可视化优势,将案件的热点问题转换为地图的热点问题,直观地展示到地图上,主要是使用高德地图[6],具体如下。
(1) 定义地图显示的容器,引入地图API
(2) 展示地图
var map = new AMap.Map(’container’, {
resizeEnable: true,
province: "",
zoom:11
});
(3) 以热点方式展示案件数据,如图1所示。
图1 扒窃案件地理位置聚类热点图
var heatmap;
var heatmapData;//为表3中的数据
map.plugin(["AMap.Heatmap"], function () {
//初始化heatmap对象
heatmap = new AMap.Heatmap(map, {
radius: 25, //给定半径
opacity: [0, 0.8]
});
heatmap.setDataSet({
data: heatmapData,
max: 300
});
});
实验结果可以明确展示公交扒窃案的热点。文献[6]中表述公交扒窃案件多发生在车站、医院、学校、商业区附近,其实随着人民生活方式的改变、现金等贵重物品的携带形式的改变以及社会治安的强化,如今公交扒窃案件已经慢慢地从车站、商业区等地方消失,更聚集在公园、银行、学校、农贸市场等老年人活动地以及流动人口聚集地。
随着社会治安的加强和社会支付习惯的改变,公交扒窃行为已慢慢得在发达地区悄悄退出历史舞台,特别是发达地区,以我们分析的历史数据看,某市某区域的案发量已从历史的平均每天上百起案件下降到如今的几起案件,从原来的商业积聚区域慢慢转移到公园、银行、学校、农贸市场等老年人活动地以及流动人口聚集地。
公交扒窃案件的演变也再次证明客观环境治理是预防公交扒窃案件的重要因素之一。公交扒窃案是犯罪者对客观环境的一种临时判断而做出的犯罪行为,这种临时起意、趁人不备,使用秘密方式窃取他人财物的犯罪行为非常受限于客观环境,因此要加强防扒宣传,提供防扒意识,可以有效减少公交扒窃这一特殊案件的发生。
公交扒窃依然是社会常见的犯罪类型,特别是目前的受害群体慢慢转移到老年人经常出入的场所,这更值得社会治安治理者的重视,每一起案件的发生都严重影响了人民的财产和安全感。希望本文提出的一种公交扒窃热点分析方法能为社会治理提供一些参考和依据。
翻阅历史论文期刊,公交扒窃案件相关的论文也逐年下跌,研究方向也从案件的分析转向案件趋势的分析,本文在研究公交扒窃热点分析时也侧重趋势分析,通过热点分析能为公交扒窃案件的预防和治理工作提供一些参考,为公交扒窃案件退出历史舞台作出一点贡献。