10月28日FMI 2018人工智能与大数据高峰论坛深圳场圆满落幕,腾讯云高级研究员张雨春从腾讯云城市计算助力行业数字化升级方向进行了精彩的分享。
腾讯云高级研究员张雨春
以下是张雨春演讲内容,飞马网根据现场速记进行了不改变原意的编辑(有删减):
张雨春:大家好!很高兴作为最后一位演讲嘉宾参加这次峰会。今天我给大家带来的分享是《腾讯云城市计算助力行业数字化升级》,城市计算的概念最近几年炒得很热,BAT三家先后提出了AI城市、智慧城市、城市大脑等解决方案。今年7月份,深圳市政府提出了建设新型智慧城市的总体方案,整个战略部署的规模非常宏大。其实不管是IT企业还是政府,建设智慧城市的目标都是一致的,就是想通过技术的方法来使城市的运转更高效,使人民的生活更加便捷、更加幸福。今天,我想聚焦到几个点上,谈谈城市计算怎么样去帮助政府进行管理、帮助企业实现信息化转型。
首先解释两个概念的区别与联系:一是智慧城市,二是城市计算。简而言之,智慧城市是产品,是解决方案,而城市计算是支撑智慧城市的技术手段。产品层面,腾讯云提出:我们要运用云计算、大数据、互联网和物联网等技术手段感测、分析、整合城市运行核心系统的各项关键信息,从而对包括民生、环保、公共安全、城市服务、工商业活动在内的各种需求做出智能响应。技术层面,城市计算是一门以计算机、大数据为基础的交叉学科,以无处不在的感知技术以及海量的位置大数据为桥梁,融合互联网、交通、环境、工业、零售等多源数据,对数据进行高效的数据收集、存储、管理与分析。
我今天的演讲分为两部分,第一部分从产品的角度讲;第二部分更聚焦于技术的层面。
01
城市计算+智慧城市
位置数据最直观的产品形式是实时人群热力图,不同的颜色代表不同的人流密度,红色最高,其次是橙色,然后是绿色、蓝色。
热力图有什么用?2014年跨年夜,上海外滩发生了严重的踩踏事件,造成36人死亡。 通过热力图,我们可以实时监控重点地区的人群聚集情况和人流变化趋势,进行安全预警和人流管制,同时也可以及时检测到公共突发事件,通知相应部门进行处理。这是城市人力图能直接帮助到城市安全的例子。
另外一个智慧城市的例子是城市功能区的识别与规划。传统的分析方法是利用道路信息进行城市区域的划分,然后看网格内的兴趣点(即地图上标出的学校、餐馆、医院等信息)的分布, 根据不同类型兴趣点的多少,将道路分割后得到的区块标注为居住区、工作区、商业区等等。
这种做法的是有一定缺陷的:首先,有些城市道路分割之后得到的区块是比较大的,深圳有很多城中村,占地面积非常大,但是里面是有不同的功能分块的,用路网信息做划分就显得十分粗糙。其次,设计功能和实际功能可能会有区别,比如深圳某栋大楼设计时的用途是写字楼,但是后来被人承包下来,改造成公寓出租,实际用途就变为了居民区。最后,一些商住两用的地方光靠兴趣点信息也很难推断真实功能。
为了克服这些缺陷,我们提出一种基于人的活动属性和人的画像去判定地区功能的方法。人群活动我们可以用一些定量的特征来衡量,例如人群在不同时段的密度、流动性、停留时长、聚集性等等,画像信息我们可以考虑人的年龄、性别分布、教育程度等等。利用这两类特征,我们可以通过图分割的方式更加精细的加工区块,并对区块的真实用途进行准确推断。
02
城市计算+零售行业
很多传统行业例如餐饮、零售,信息化还处于非常初步的阶段。这里我们以零售行业为例,谈谈城市计算如何在行业生命周期的各个阶段,帮助企业进行信息化升级。
线下零售行业新开店铺的生命周期大体上可以分为以下几个部分:一是商圈分析与选址,二是选品与供货,三是店铺的数字化运营,四是营销以及客户关系管理。
这里我重点讲一讲选址与营销。
传统的选址方案是通过线下人工调研的方式完成的。这种方式有以下几个缺陷:(1)调查员的主观因素影响大,因素不能量化,选址精确度差。(2)很多重要的因素难以获取,例如工作行业、收入水平等 (3)完全人工操作工作量大,选址周期长 (4)基于打分表的评分模型僵化,不能因地制宜。
腾讯云与TalkingData合作,推出了一种数据驱动的选址解决方案,在全维信息对称的条件下,进行量化决策。我们会综合考虑地区的客流信息,画像信息,周边的商户信息、交通信息等等众多维度,进行区位深度洞察与优质点位的推荐。
利用位置信息,我们还可以做更精准高效的营销,企业主可根据自身使用场景需要,在城市内圈选指定区域,选择多维度用户画像标签,针对目标用户定向投放广告,更有效的挖掘潜在客户。
03
城市计算+智慧交通
这是我们之前给深圳地铁做的通勤分析。图中展示的是深圳地铁1号线,宝安罗湖方向上班时段的出发点地和到达地的分布。这张图反映了一个非常有意思的问题,可以看到,每天早上从固戍出发的人很多,但是1号线的区间车只开到西乡。固戍的通勤需求很大,我们是不是可以对地铁线路进行一定的调整呢?我们提出建议给城市管理者,让城市管理者做相应的决策。
接下来是偏技术层面的分享。我们每天要处理百亿级别的位置数据,对这些数据进行充分挖掘,并在此之上构建各类模型。在这个过程中,会存在什么样的挑战点呢?
1、海量数据检索的问题。
2、数据稀疏性的问题
3、数据融合的问题。
这三点之后会展开讲,都是通过什么方法解决的。
1、数据检索的问题。
刚刚提到,我们每天处理的数据达到百亿级别,而SaaS平台,例如热力图的展示要求非常高的实时性。假设数据库里有几百亿个带有经纬度的定位点,现在要在上海外滩圈一个电子围栏,然后计算哪些点在这个围栏的范围内。如果直接遍历的话,计算量非常大,显然是不可取的。
在讲具体应对方法前,我来举个例子。 假如今天散会之后你要看看科兴周边有什么好吃的,你会怎么做?你会打开手机地图,选择深圳南山区,再从南山区找到科兴,再看科兴周边有什么样的好吃、好玩的地方。实际上,这种按照城市、地区、地标进行分级查找,就是一个利用索引的过程。索引的应用范围很广了,学过数据库的应该都知道。通常我们在数据库里建立索引针对的都是一维数据。那么像空间位置这种二维信息如何进行索引呢?
一种方案,是把经纬度信息当成一个二维向量建索引。还有一个解决方案是把二维问题转化为一维问题,然后再建立一维索引。那么这种转化要怎么实现呢?
首先我要讲的是比较基础的算法,GeoHash。简单来说,GeoHash就是通过打网格的方式对地图进行多级分割,然后对每一个区块按照一定规则进行编号。图中展示的是腾讯大厦附近7级和8级的Geohash网格。
可以发现所有的大网格(7级网格),除了最后一位不一样,前面6位都是一样的,因为这些区块同属于一个6级网格中。所有的网格是以一种叫Z形曲线的方式顺序排列的,也就是图中的红线。Z形曲线是一种可以遍历二维空间网格的一维曲线,具有分形特征,也就是局部和整体是自相似的。大家可以看到Z形曲线有一个特点,它在连接局部和局部的时候会发生比较大范围的跳跃。
GeoHash这种编码存在几个明显的问题:跳跃性、网格大小不一、选择困境。跳跃性的问题刚刚说过了。网格大小不一是由于我们的地图用的是墨卡托投影,把地球投影成一个长方形,这个投影是有变形的,赤道格子的实际大小比北极格子要大很多,这样我们进行不同区块面积比较时就会遇到麻烦。最后一个是选择困难,GeoHash每一级的网格大小都是下一级的32倍,这样就会导致有些场景下用8级太细而7级又太粗的情况。
谷歌前几年提出一种叫Google S2的编码方式,这个编码方式的核心思想是用同是自相似的希尔伯特的曲线代替我们刚刚讲到的Z曲线。Z曲线是以Z的形式把空间填满,而希尔伯特曲线是以一种凹凸形状的曲线把区域填满。希尔伯特曲线解决了遍历过程中跳跃不连续的问题,上一个点和下一个点的距离都非常近。希尔伯特曲线每一级的大小都是下一级的4倍,也解决了选择困境的问题。
还剩下一个变形的问题。不同于墨卡托投影,S2将地球投影到正方体的六个面上,这样每个面的变形就相对比较小,并且后续有相应的修正函数对映射时产生的变形进行修正。
2、数据稀疏性的问题。
数据稀疏性指的是,我们收集到的上报位置数据是稀疏的,零散的,这就对我们之后的各种商业应用带来了很大的挑战。通过长时间数据叠加的方式,一定程度可以缓解数据稀疏性的问题,但是简单的数据叠加忽略了轨迹的周期性以及位置数据本身的复杂性。为了充分利用这些周期性与复杂性,我们需要用更高级的轨迹挖掘的方法来处理数据。
在介绍轨迹挖掘方法前,我们需要考虑一个问题,人的轨迹到底能不能预测?2010年发表在Science上的一篇文章通过对轨迹熵的分析,得出结论:可以预测,而且预测准确率的理论上限还比较高。
接下来,我尝试用最朴素的语言跟大家说一下,轨迹挖掘算法的发展历史和现在比较流行的轨迹挖掘算法都是怎么做的。
比较早的研究是一些序列挖掘的算法,我要挖掘两个地方的序列关联关系,例如从A到B的人数很多,从B到D人数很多,这跟啤酒尿布的想法很相似。
做关联的前提是需要把连续的位置数据和连续的时间做离散化,离散化方法有很多,下面举几个例子
1、基于密度的分片:我们先设定一个密度下限,然后从单点开始扩展区域,直到区域平均密度低于刚刚设定的下限就停止扩展。
2、基于近似轨迹做网格融合:先把空间网格化,如果邻近的两个网格共享了一些相似的轨迹,就把这两个网格进行融合。
3、基于道路的划分:可以用二级、三级、四级道路来对城市进行不同等级的划分,也可以结合之前给大家讲的城市功能分区的方法,对道路划分后的区块再做更精细的处理。
4、基于密度峰值的方法:这个方法主要针对没有路网的空间。这里我们用了14年提出的一种基于密度峰值的非监督聚类方法,这个方法处理低维数据非常合适,在空间聚类上有很好的效果。
做数据挖掘算法有两点很重要,一是怎么聚类,二是聚类之后怎么建模。讲完了聚类方法,我们回到模型本身。
处理序列数据,一个很自然的想法是用马尔科夫模型来建模。我们可以同时构造两个马尔科夫模型,一个用来提取个体的轨迹模式,一个用来提取群体的轨迹模式。最终的预测是通过叠加个体模式和群体模式的方式得出的。
还有一个想法是通过混合高斯模型来建模,一般人的日常生活是围绕居住地点和工作地点展开的,我们可以将这两个点作为中心,构建一个两中心的高斯混合模型。与此同时,时间也可以认为是白天和夜间两个阶段的高斯分布的叠加。
RNN 提出之后,人们也尝试用RNN的方法来处理时空序列。一个朴素的改进方式是修改RNN中cell的表达式。传统的Vanilla RNN中,当前时刻的隐藏状态通过当前时刻的输入状态,以及上一时刻的隐藏状态来计算更新。这里的隐藏状态是只有时间属性的。我们可以将隐藏状态进行扩展,让它不仅具有时间属性还具有空间属性,更新的时候从只用上一时刻的隐藏状态改为邻近时刻、邻近空间的隐藏状态。
最后给大家介绍一下DeepMove算法框架,这个模型是由腾讯地图的算法团队与清华大学合作发表的,是一种基于注意力机制的循环神经网络预测模型,基于冗长、稀疏、周期性的移动轨迹来预测个体移动。模型首先将稀疏的位置数据通过多模态嵌入式编码网络的方式转化为稠密的特征向量。然后模型从两个方面来提取特征:一方面提取轨迹的历史周期特征,一方面提取当前轨迹的转移特征。历史特征的提取是通过若干个不同的编码模块再加上注意力模型完成的,当前轨迹特征是通过门循环式递归神经网络(GRU)提取的。模型在Foursquare签到数据集,手机信令数据以及APP上报数据等数据集上的准确率都超越了之前提到的马尔科夫,混合高斯,RNN等模型。
3、多源数据融合。
在很多应用场景下,我们会有很强烈的数据融合的需求。数据的类型和来源可能多种多样,除了我们之前提到的位置数据、画像数据、交通数据、兴趣点数据之外,可能还会涉及金融、探针、支付、工商、舆情等等类别的数据。
数据融合的最大障碍一是数据价值,二是数据安全。出于这两点考虑,企业一般不会愿意提供原始数据来进行融合。针对这一问题,我们提出了安全数据沙箱的解决方案。通过双向数据加密,我们可以将两方加密后的数据在公有云上的安全环境里进行融合,进而完成后续的建模工作。双方输出的都是加密后的数据,因此不用担心数据安全问题。由于双向加密的对称性,加密后的数据仍然能够完成匹配和统计计算,但却是不可解密还原的。
我今天的演讲就到这里。谢谢大家!
关注公众账号
【飞马会】
▼
往期福利
关注飞马会公众号,回复对应关键词打包下载学习资料;回复“入群”,加入飞马网AI、大数据、项目经理学习群,和优秀的人一起成长!**
回复 数字“19”800G人工智能学习资料:AI电子书+Python语言入门+教程+机器学习等限时免费领取!
回复 数字“20”17张思维导图,一网打尽机器学习统计基础(附下载)