APP下载

一种基于窗口函数的公安大数据摸排分析算法

2019-06-03吴忠凯

关键词:公安沈阳运算

高 硕, 佟 冶, 吴忠凯

(1.辽宁省公安厅, 辽宁沈阳 110035; 2.朝阳市公安局, 辽宁朝阳 112000)

0 引言

党的十九大就建设数字中国、智慧社会作出了全面部署。习近平总书记强调,大数据发展日新月异,我们应该审时度势、精心谋划、超前布局、力争主动,实施国家大数据战略,加快建设数字中国。对于公安信息化来说,主要任务就是让更多的“警之于前”来代替“察之于后”,这才是新时期警察工作在数字中国、智慧社会中的完美体现。

实现更多的“警之于前”,就是要改变通过发现案件、嫌疑人的目标之于后再应用数据的单一做法,真正实现基于“大数据”发现目标[1],只有这样才能把“警之于前”做到最好。各级公安“大数据”建设及应用部门不断探索,积累经验模型,充分应用大数据资源,做好预知、预防、预警工作[2]。目前的摸排算法多是基于集合的逻辑运算进行摸排,算法复杂度大且不容易理解,容易在实际使用过程中造成摸排对象的遗漏,利用窗口函数可以更直接地对模型进行描述,且培训和理解更加简单。

1 常规公安“大数据”应用算法

算法就是对解题方案准确而完整的描述,公安实战单位提出的所有业务模型,都是用特定的算法来解决,进而算法的特征也就是业务模型的特征,具体包括:可行性、有穷性、确定性、输入、输出。而近些年主流的算法任务和方向主要包括:一是数据分析处理工作。支撑刑侦、治安、禁毒、经侦、国保、反恐等警种部门,提供已知的数据,对其进行分类汇总、透视、关联比对分析、统计等,按照警种要求进行反馈结果。二是数据摸排[3]比对工作。相关警种提供业务模型,依托现有大数据资源库,解读模型,编制高效的算法,为所提供的模型得出结果,后续可以固化模型,直接在系统前台调取。三是数据战略预警工作。分析案件形势,支撑打击整治工作,如5类侵才案件,8类高发案件,高危地区人员等全省分布情况,破案情况,打击处理情况等进行支撑分析。在以上3类中,第二类数据摸排比对工作对算法的复杂度要求是最高的,主要应用的是SQL结构化查询语言[4],一个完整的算法的实现,要求大数据应用民警具备以下能力:一是SQL基本语法是基础;二是公安业务数据应该深刻掌握,所有的需求模型都离不开公安业务,用业务思路来理解数据的逻辑结构;三是关系表中的集合运算是分析业务模型的关键;四是查询条件的设置决定整个数据分析的效率;五是去除重复数据是确定正确关系的前提;六是聚合函数[5]是最常规的数据分析手段。熟练掌握以上六项技能,则具备常规公安“大数据”算法编制工作能力。

3 集合运算实现数据摸排算法弊端

为便于理解常规的模型运算,列举如下业务模型:圈定一类特殊人员,他(她)们一般从家中乘坐火车出发,到出差地出几天差,然后乘坐火车返回原地。试找出一段时间内(2018年上半年)乘火车到沈阳出差4~7天,中途无火车离开信息,然后乘坐火车返回原地,并且在沈阳期间有住宿记录的商旅人员,输出身份号码。

此模型调取的人员同上半年沈阳高发、连发、多发、新发案件分布情况一并分析,对于刑侦部门侦破案件和后续预防具有重大意义(有时也可以把旅馆条件去掉,来扩充人员)。为了便于算法的理解,调取数据需要注意的是:到沈阳指的是站名里面包含沈阳字样的(减少复杂度不考虑苏家屯站的情况,如需全面考虑,则需要参照城市与火车站名对照表),返回原地指的是火车站名也要完全一致,出差4~7天指的是离开沈阳火车日期减去到达沈阳火车日期在3~6日之间(含3和6)。

常规集合运算算法思路如下:

(1)调取指定时段内(业务模型要求的时段)到站包含沈阳二字的火车乘车数据,形成集合;

(2)调取指定时段内发站包含沈阳二字的火车乘车数据,形成集合;

(3)将(1)、(2)两部分数据做交集,条件是:a、证件号码相等,b、(2)与(1)的发车时间差为3~6天,c、(1)的发站与(2)的到站站名相等,得到交集结果;

(4)将(3)的结果再与沈阳的旅馆数据做交集,条件是:a、证件号码相等,b、是沈阳辖区的旅馆数据,c、入住时间在两个购票时间段内。

4部分如图1所示。

算法分析:对于常规的数据摸排比对,集合运算都能发挥其准确的摸排结果,但是对于当前的业务模型,采用上述的算法,不能达到预期,将部分脏数据纳入了所求结果中,比如:该人“张三”的数据,也在所求结果之中,“张三”原始表数据如表1所示。

表1 “张三”原始表数据

以上表格中对应的“张三”共计4条数据(假设旅馆数据满足条件),按照前面给出的算法,张三已在所求的结果之中,但是对于业务模型来讲,张三不是要摸排的人员,因为他在指定时段内来过两次“沈阳”,第一次逗留一天,第二次也逗留一天,不满足停留“到沈阳出差4~7天”这个条件,恰恰是第三步的集合运算,采用笛卡尔积的方式,实现了第四条数据与第一条数据的时间差为4,满足条件,但是第四条数据与第一条数据求差是无意义的操作,此操作隐藏在第三步的集合操作之中,类似某人的第六条与第一条,第八条与第三条等都是非法操作,所以算法的隐藏错误深刻的显现出来,将表中这一类数据删除,才能得到正确的结果。采用集合操作并将这样的“数据对”删除,紧接着上述第四步之后补充算法如下:

(5)调取指定时段内到站包含沈阳二字或发站包含沈阳二字的火车乘车数据,形成集合。

(6)将(4)、(5)两部分数据做交集,条件是:a、证件号码相等,b、(5)的发车时间在(4)的“3到6天”之内,形成集合,由于特殊条件限制,代码实现过程中(4)、(5)直接做减法不容易操作。

(7)将(4)的结果与(6)进行差运算,得出正确结果。

补充步骤如图2所示,深色区域为所求。

图2 常规集合运算算法

4 应用窗口函数支撑公安业务的优势

窗口函数[6]:窗口函数也是作用于一个数据集合。窗口是标准SQL术语,用来描述SQL语句内用OVER子句划定的内容,这个内容就是窗口函数的作用域。在对大量公安结构化数据进行分析时,数据应用部门越来越多地利用这些函数对解决方案进行优化,用这些窗口函数来取代哪些依赖更古老、传统的语言结构解决方案,结果更加简单和高效,效果是非常明显的,所以我们现在的大部分查询解决方案,都用窗口函数来完成。在实际应用中,除了已有的聚合函数外,还包括3类函数:排名函数、分布函数、偏移函数[7]。其中排名函数主要包括:RANK、DENSE_RANK、ROW_NUMBER、NTILE,分布函数主要包括:PERCENT_RANK、CUME_DIST、PERCENTILE_CONT、PERCENTILE_DISC,偏移函数包括:LAG、LEAD、FIRST_VALUE、LAST_VALUE、NTH_VALUE。为支撑公安实战研判需要,现对上述利用集合运算实现的算法进行改进,应用窗口函数,无笛卡尔积操作,在时间性能上更加简单和高效,为深刻体现效果,采用阿里巴巴大数据分析平台,开窗偏移后数据表现形式(见表2)和SQL查询实现代码如下。

表2 开窗偏移后数据表现形式

商旅人员圈定运用窗口函数算法

摸排分析总结:窗口函数是解决这一类问题的法宝,本模型需要将发站和到站进行向下偏移,按照证件号码排序,每条记录里面包含了该人的相邻记录(由偏移后所得),最关键的是通过partition by 关键字来进行分区(身份证号),通过order by进行排序(发车时间)。通过二次条件筛选再确定来沈阳和从沈阳走的人,开窗之后,应用该结果限定从“某个”地方来沈阳且又回到这“某个”地方去,“某个”为同一站名,天数相减:3~6天,即所求的4~7天,在与旅馆表进行关联的时候,时间直接用字符串比较即可,但是旅馆表中数据应该是“沈阳”区划的旅馆数据,即行政区划为“2101”开头。

窗口函数最大的优点是实现分区后,并未改变记录的数目,实现部分字段的聚合、偏移等操作,编制算法的最核心内容就是应用哪些函数并以什么内容进行分区,而研判分析人员最需要打基础的是对业务工作和数据表的掌握,如业务词汇表、元数据、主数据做到如数家珍,应用窗口函数后则能发挥出更大的价值,实现精准的高危预警。针对当前算法,采用集合运算与窗口函数对比复杂情况见表3。

表3 集合运算与窗口函数复杂度对比表

以上窗口函数是采用偏移函数实现的,除了偏移函数外,其他类别的函数也发挥重要价值,如调取一段时间内铁路数据,摸排同一车次内同一车厢有同乡人10名(不包含10名)以上且其中有2人以上(含)有违法前科,输出全部人员证件信息,其中同乡的条件是指身份证号码前4位相同,SQL查询实现代码如下:

同车同乡违法人员预警运用窗口函数算法

摸排分析总结:实现模型结果的巧妙之处就是利用两次窗口函数[8],为最终的结果设计中间过程,最终得出查询结果。窗口函数的价值就是待查询的身份证与PARTITION BY后的分区数据并存展示,体现了分区和分组的最大区别,因为这种并存方式,更有利于各种公安业务模型的实现。

5 结语

当前公安数据摸排与分析最常见的是3类主数据:人员、车辆、电话。这3类主数据的主属性分别是:身份证号码、车牌号码、电话号码。在实际应用过程中,这3类数据最终都是对人的研判与分析,围绕这3种数据形成所有感知类数据包括:话单、车轨、旅馆、网吧、航班、铁路、客运、水运等。这些数据分类别汇集,实时价值重要,而在分析个体特征时,需要根据个体的主属性分区,按照感知时间排序,所有行为特征根据“时间轴独立展示”,而窗口函数的优势就是在“时间轴独立展示”后发挥特定的价值,经过偏移函数增加新的字段后,则更能达到预期目的,使得算法更加简洁、清晰,窗口函数的灵活运用,大大提升了警务技术研判团队服务实战的能力,能在更短的时间内直观高效地排查出所需要的结果,且运算过程直接容易理解,大大减少了学习的复杂度和出错率,本文在论述过程中以常规的集合运算实现算法为基础,不断改进,最终实现了一种基于窗口函数的公安大数据摸排算法,总结出窗口函数替代复杂算法的魅力之处。在公安大数据分析建模工作不断发展的今天,做好基于数据发现目标的复杂工作,将公安机关治理的对象进行完整的模型化、数字化、可视化,达到认知高度后并付诸行动,在模型算法探索过程中形成一个新的样本、新的范式。

猜你喜欢

公安沈阳运算
博物馆:上海公安史图片展
重视运算与推理,解决数列求和题
沈阳远洋公馆
“疫情当下,我们上前”——抗击新冠肺炎战“疫”中的港航公安掠影
有趣的运算
最小和最大
Frequent attacks on health workers in China: social changes or historical origins?
Study on the harmony between human and nature in Walden
“10岁当公安”为何能畅通无阻
“整式的乘法与因式分解”知识归纳