用于基于移动装置数据产生简档的方法和系统
技术领域
本发明总地涉及对移动装置数据执行分析,并且更特别地,涉及对移动装置数据进行分析以确定移动用户特性。
背景技术
随着使用蜂窝电话和其他移动装置的个人群体增长,基于位置的服务变得越来越重要。基于位置的服务是用于将对于位置和时间数据的特定控制作为控制特征包括在计算机程序中的一般类的计算机程序级别的服务。就这点儿论,基于位置的服务是信息服务,并且在包括社交网络、城市规划、灾难恢复、娱乐、便利设施和公共事业设备的领域中具有若干用途,并且使用通过移动网络从移动装置收集的数据以及关于移动装置的地理位置的信息以用于各种目的。许多基于位置的服务目前仅提供移动装置使用者(即,移动用户)的位置。这些通常用于基于用户的特定位置向用户提供信息(例如,基于位置的服务可以提供附近餐馆的列表,等等)。基于位置的服务对于例如营销公司发送广告计划以及预测未来的业务流可以是有价值的。目前的基于位置的服务的限制包括例如它们不能调整来适应大量移动装置数据。
发明内容
本发明的实施例提供了用于基于移动装置数据产生简档(profile)的程序产品、系统和方法。计算装置接收区域中的多个移动装置的多个移动装置记录,每个移动装置记录包括时间戳、位置数据和活动数据,并且将所述多个移动装置记录中的每一个分配给多个空间-时间盒子(space-time box)之一。计算装置对分配给所述多个空间-时间盒子的移动装置记录执行分析以得到作为结果的多个简档,所述多个简档可以包括移动性简档、聚集地简档以及好友简档,移动性简档指示在跨度期间每个移动装置在所述区域中占据的位置的数量,聚集地简档指示在跨度期间占据所述区域中每个位置的移动装置的数量,好友简档指示在所述区域中占据与给定的移动装置相同的位置的移动装置。
附图说明
图1是根据本发明的实施例的通信环境的功能框图。
图2示出根据本发明的实施例的流程图,该流程图描绘了在基于存储在图1的关系数据仓库系统中的移动装置数据产生移动性简档和聚集地简档期间所采用的步骤。
图3示出根据本发明的实施例的流程图,该流程图描绘了在基于存储在图1的关系数据仓库系统中的移动装置数据产生好友简档期间所采用的步骤。
图4A和4B示出根据本发明的实施例的流程图,这些流程图描绘了在将启发规则(heuristic rule)和聚类(cluster)算法应用于在执行图2和图3的流程图期间所产生的中间结果和最终结果中的若干个期间所采用的步骤。
图5示出根据本发明的实施例的用于移动装置数据的收集、分析和使用的交互的序列。
图6是根据本发明的实施例的计算机系统的功能框图。
具体实施方式
本文中所介绍的技术提出了调用适当的分析工具来执行随着移动装置使用者(即,移动用户)从一个地方移动到另一个地方由移动通信提供商提供的位置数据的延迟的或者甚至实时的分析。尽管在本文中将使用术语“用户”,但是应当理解,移动装置的所有者或使用者与提供与移动装置的蜂窝或其他连接的移动通信提供商之间的合同或服务关系总地来说可能与本文中所介绍的技术无关;就这点儿论,本发明的实施例可以涉及向通信提供商订购的移动装置所有者、预付费的或合同到期的移动装置所有者、或者其他移动装置用户的任何组合。
巨大不同的用户基础和大规模数据量需要本文中所介绍的专用技术来进行分析。通过使用高级分析和强大的计算系统来执行“社会-移动”分析可以了解所有的移动装置数据的意义。根据本文中所介绍的技术,对原始位置数据进行提炼以查明用户行为和生活方式简档,使得能够实现若干使用情况,诸如个性化营销、网络分析、流量模式理解以及其他使用情况。使用所观察的位置数据可以发现令人有兴趣的关于用户的见解,该见解在许多领域中是有用的,诸如,但不限于,基于位置的营销。
本文中所介绍的技术涉及使用可以用于理解什么类型的人何时去哪、什么类型的位置受谁欢迎、以及谁何时与谁去哪的处理和技术来创建个人用户级别的移动性简档(被定义为例如空间和时间上的移动模式、等等)。这些模式可以用于预测个人群体的移动性以及本文中所讨论的其他目的。
可以使用本文中所介绍的技术实现的一些事情包括例如,触发实时的个性化的营销;总结位置和用户简档的匿名分析(例如,使用数据隐私法的裁决的应用、等等);基于个人或群体过去的历史来主动地将这些个人或群体作为目标;通过按照位置、一天中的某一时间以及用户简档理解使用情况来改进网络利用率;以及在数据提供者与零售商之间合作营销。
本文中所介绍的技术可以涉及至少两个单独(individual)简档的产生或利用,该简档包括生活方式简档(例如,营销分析员对于特定的使用情况或者营销程序定义的简档、等等)以及移动性简档(例如,使用定义用户在一天、一周或其他时间段期间如何移动的数据挖掘算法而创建的简档、等等)。这样的单独简档可以关于数据提供者可能想要如何向用户营销或者以其他方式吸引用户来唯一地定义用户。
根据本文中所介绍的技术,可以通过例如营销分析或其他数据提供者来将生活方式简档创建为移动用户的类型的“经验法则”分类。一般来讲,生活方式简档可被提供给本文中所描述的系统(例如,以启发规则的形式、等等)来产生见解。例如,生活方式简档可以力图识别在12月参加足球比赛的人、或者在夏季周末的早晨在儿童足球场的人、或者早晨去工作并且每周有三天或更多天在咖啡店逗留的人。生活方式简档可以用于理解每个移动用户的移动性特性。本文中所使用的几个生活方式简档昵称是“Homebody”(即,不到访很多独特(unique)位置的移动用户)、“Daily Grinder”(即,往返工作、周末安静以及沿途停留的移动用户)、“Norm Peterson”(即,不以显著的方式(例如,偏离量大于一个标准偏差的一半、等等)偏离大量其他移动用户的行为的规范的移动用户)、“Delivering the Goods”(即,一天到访许多不同的场所、模式不可预测的移动用户)、“GlobeTrotter”(即,不在城里或者保持他或她的电话关机的移动用户)、“Rover Wanderer”(即,在各种地方与朋友度过晚上的移动用户)、以及“Other”(即,难以归类的移动用户)。
根据本文中所介绍的技术,在产生生活方式简档并且在将它(例如,以启发规则的形式、等等)应用于处理移动装置数据的中间或最终结果以识别属于该生活方式简档的类型或类别的移动用户之后,所识别的移动用户可被作为来自数据提供者的广告或其他通信的目标,以便影响他们的行为或者为了其他目的。例如,如果进入咖啡店的Daily Grinder被识别,则他或她可能是从常去的咖啡店转去支持新的咖啡店的目标。这样的目标确定(targeting)可以涉及使用地理围栏,以便当Daily Grinder在该新的咖啡店附近时实时地将广告递送给他或她,或者可以涉及使用预测分析,以当Daily Grinder靠近新的咖啡店时或者甚至在这之前预测性地以他或她为目标,这是因为移动装置数据(例如,移动性简档、聚集地简档或好友简档等)的分析预测他或她将来将靠近。
本文中所介绍的技术可以产生并且利用移动性度量,所述移动性度量来源于基于在特定时间范围内到访的独特位置的数量推导移动性的值的一系列计算。以下所讨论的与这些值的推导相关联的算法基于多次遍历移动装置数据以聚合值、然后在数据上对该值进行规范化以使得能够进行相对比较。位置也可以被定义为例如蜂窝塔、来自GPS或车载跟踪装置的坐标、经纬度、或者使用支付卡的零售店位置。如以下所讨论的,每个个人可以具有通过对所有的个人在空间–时间盒子内的移动性记录进行分析而计算的得分。对时间范围(例如,星期三的11:30am–1:30pm、等等)中的每个独特位置进行计数,并且存储所到访的独特位置的总数。然后,在所有的个人上,将所有的独特位置计数规范化为零。默认地,每一个人在每一个时间范围内具有至少一个位置,因为每一个人始终在某处。然而,根据本文中所介绍的技术,当不可得到关于一个或多个移动用户的数据(诸如他们的位置未知)时,则可以在其他数据可得到的情况下通过插值来补偿空间-时间盒子的“数据缺失”,或者在丢失大量数据的情况下通过将作为结果的移动性聚类和简档表示为由于缺少数据而被未定义来补偿空间-时间盒子的“数据缺失”。如以下所讨论的,可以使用启发法或数据挖掘算法来对移动性简档进行分组以生成移动性聚类,所述移动性聚类可以采取“Daily Commuter”、“Weekend Warrior”和其他类别的形式。
本文中所介绍的技术可以通过使用移动性聚类或移动性简档确定“聚集地(hangout)”或受欢迎位置来产生并且利用聚集地简档。通过遍历移动装置数据并且利用空间-时间盒子的基于存在的指示符来识别个人在某个位置花费多少时间,可以确定每个位置对于每个移动用户的受欢迎程度。通过确定移动性,诸如白天的、夜间的以及工作日的或周末的活动,可以确定位置,诸如“家”、“工作”、“朋友”和“亲属”。此外,如以下所讨论的,通过链接类似的移动性简档,可以找到“热点”(例如,给定位置受在周五和周六晚上在市区非常活跃的人的欢迎、等等)。聚集地简档可以类似于移动性简档,但是是关于位置的简档。对于给定时间范围中的每个位置,对独特访客的数量进行计数。对这些计数器进行总计和排序(rank),给出在给定时间最有可能在某一位置的人的列表。然后可以使用数据挖掘算法按照移动性简档对该数据进行聚类以确定在给定时间有可能在某一位置的人们的简档的类型(例如,办公室职员在午餐时间喜欢去特定餐馆,等等)。聚集地简档还可以识别哪里是在给定时间最受欢迎的地方、什么是这些地方的最普遍的移动性以及生活方式简档、这些是否不同于整体人群、以及人们在给定的聚集地位置之前来自什么位置、或者在给定的聚集地位置之后要去什么位置。
本文中所介绍的技术可以通过识别在一组位置和时间范围或空间-时间盒子内谁何时在其它人周围,来产生并且利用好友模型。好友模型实际上可以检查数据集中的所有其他的移动用户到访的所有位置和时间范围,以识别空间-时间盒子中的所有交集。输出可以包括关于每一个空间-时间盒子的、任何其他的移动用户在该空间-时间盒子中的次数的排序列表。对于每一个空间-时间盒子,可以对在同一个空间-时间盒子中的其他个人或装置进行计数,并且可以对计数器进行总计和排序。结果是最经常在给定用户周围的好友或用户的列表。该数据可以用于基于给定用户的好友在同一位置的存在来预测给定用户将位于哪里。在该技术涉及将所有数据点与所有其他的数据点进行比较的情况下,该技术在计算期间可能是计算密集的。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他器件以特定方式工作,从而,存储在计算机可读介质中的指令就产生包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
还可以将这些计算机程序指令加载到计算机、其他可编程数据处理装置或其他器件上,以使在该计算机、其他可编程装置或其他器件上执行一系列操作步骤以生成计算机实现的过程,使得在该计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图中的一个方框或多个方框中所指定的功能/动作的处理。
现在参照图1,示出了根据本发明的实施例的通信环境100的功能框图。通信环境100包括区域102、网络110、蜂窝塔112和114、关系数据仓库系统120、计算机130以及计算机140。如以下详细描述的,通信环境100的区域102中的多个移动用户的移动装置数据可以被存储在关系数据仓库系统120中并且在关系数据仓库系统120中进行分析以出于各种目的,包括应用启发规则和聚类算法、将通信信息发送到移动用户、以及根据本发明的实施例的其他“社会-移动”分析。
区域102可以是地理区域,诸如地球表面的一部分。区域102包括多个移动用户,每个移动用户被描绘为一个点,并且每个移动用户具有无线地连接到蜂窝塔112和114中的一个或两者的移动装置。区域102被分割为具有行坐标(例如,行1、行2等)并且具有列坐标(例如,列A、列B等)的方形网格。方形网格在本文中按照它们的行坐标和列坐标被论述;例如,被描绘为离区域102的左上角最近的方形网格被称为方形网格1A。在各种实施例中,分割可以以不同的方式(例如,行-列坐标、经纬度边界线、地理散列(geohash)等)表示。方形网格1A被描绘为空的,而相邻的方形网格1B被描绘为包括多个点,每个点表示具有移动装置的移动用户的位置。
应当理解,将区域102分割为方形网格可以是如下的逻辑分区,该逻辑分区仅存在于存储在关系数据仓库系统120中的数据结构内并且在区域102内不具有实际物理存在。此外,尽管区域102未被描绘为全部分割(即,存在区域102的不包括在方形网格中的部分),但是情况是,在各种实施例中,给定区域可以以任何方式被部分或完全地分割。进一步,尽管区域102被描绘为被分割为非重叠的方形网格,但是在各种实施例中,分区可以是不重叠的或重叠的,并且可以是任何的任意形状(例如,矩形、六边形、“滴(blob)”等)。进一步,在各种实施例中,区域102的分割的空间分辨率可以变化;例如,每个方形网格可以具有一平方公里的面积、一平方米的面积或任何其他面积,另举一例,尽管区域102中所描绘的方形网格全都具有相同的面积,但是每个方形网格的面积可以不同。
还应当理解,区域102是在特定的时间点描绘的。随着时间过去,移动用户的位置将有可能改变,因为每个移动用户每时每刻、每天或者以任何时间尺度进行各种活动。因此,本发明的实施例设想具有一个或多个空间维度以及时间维度的“空间-时间盒子”。本发明的各种实施例可以利用具有两个空间维度和一个时间维度的空间-时间盒子(即,实际的空间-时间盒子),可以利用具有三个空间维度和一个时间维度的空间-时间盒子(即,体积式的四维空间-时间盒子),或者可以利用具有其他维度组合的空间-时间盒子。不移动的移动用户可以在连续的时间在给定的空间位置占据一系列空间-时间盒子,而移动的移动用户可以在连续的时间在变化的空间位置占据一系列空间-时间盒子。在各种实施例中,类似于空间分辨率的变化,区域102的分区的时间分辨率可以变化;例如,每个空间-时间盒子可以具有一小时、一分钟或任何其他时间量的时间“深度”,另举一例,不同空间-时间盒子的时间分辨率可以变化,或者可以是相同的。
除了移动用户之外,在区域102中还描绘了地理特征和逻辑特征。例如,湖泊104,地球表面的地理特征,占据两个方形网格的一部分,而市中心106,逻辑特征,占据包围第九个被完全占据的方形网格2E的八个方形网格的一部分。诸如湖泊104的地理特征独立地存在于区域102中(例如,可以是具有可通过直接观察确定的形式的自然的或人工的特征,等等),而诸如市中心106的逻辑特征可以或者可以不独立地存在于区域102中(例如,可以通过或者不可通过直接观察确定,并且可以仅存在于存储在关系数据仓库系统120中的数据结构内,等等)。区域102中的多个移动用户的移动装置数据的分析可以表明或揭示地理特征或逻辑特征的存在。
网络110可以例如是局域网(LAN)、广域网(WAN)(诸如互联网)或者这两者的组合,并且可以包括有线或无线连接。一般来讲,根据本发明的实施例,网络110可以是将支持经由区域102中的多个移动装置之间的各种信道的、经由蜂窝塔112和114的、以及关系数据仓库系统120、计算机130和计算机140的通信的协议和连接的任何组合。在本发明的各种实施例中,蜂窝塔112和114可以由共同实体或不同实体操作(例如,由各种移动电信公司等操作)。此外,在各种实施例中,蜂窝塔112和114可以补充有能够将区域102中的多个移动装置与关系数据仓库系统120、计算机130和计算机140通信耦连的任何通信技术,或者被该通信技术取代。
在各种实施例中,区域102中的多个移动装置、关系数据仓库系统120、计算机130和计算机140可以包括膝上型计算机、平板、上网本个人计算机(PC)、台式计算机、个人数字助理(PDA)、智能电话、汽车、智能手表、RFID跟踪器或其他装置。此外,关系数据仓库系统120、计算机130和计算机140可以包括在通过网络110被访问时充当单个无缝资源池的利用聚集的计算机和组件的计算系统,或者可以表示一个或多个云计算数据中心。一般来讲,区域102中的多个移动装置中的每一个,以及关系数据仓库系统120、计算机130和计算机140可以是或者可以包括关于图6更详细描述的任何可编程电子装置。
关系数据仓库系统120可以是用于通过包括统计和数据挖掘算法的嵌入式分析功能进行非常大量数据分析的特制数据仓库设备。特别地,关系数据仓库系统120可以包括数据库122,其本身包括移动装置记录124、嵌入式分析126以及分析结果记录128。移动装置记录124是包括关系数据仓库系统120从区域102中的多个移动装置接收的移动装置数据的记录的集合。记录集合包括关于每个移动装置的带有时间戳的位置和活动数据。位置数据可以包括每个移动装置的位置,所述位置是用例如来自GPS或车载跟踪组件的装置的坐标、或者其经纬度、或者任何其他坐标系和来源来表示的。活动数据可以包括每个移动装置的任何活动,所述活动是就例如装置的发送的和接收的呼叫、发送的和接收的数据、文本消息、蜂窝塔连接关系、应用程序使用、或者来源于移动装置的任何操作的任何其他活动而言的。此外,活动数据可以包括纯粹的存在指示符(例如,“心跳”、“信标”或“保持活动”指示符等),以使得即使当相应的移动装置空闲或非活动时,包括位置数据和纯粹的存在指示符的记录也用于识别该移动装置的位置。如以下详细讨论的,嵌入式分析126可以为了各种目的对移动装置记录124进行操作,以生成中间结果和最终结果并且将这些结果存储在分析结果记录128中。
计算机130包括启发程序132和聚类程序134。计算机130可以是被配置为将启发规则和聚类算法应用于在关系数据仓库系统120内所产生的中间结果和最终结果中的若干个的计算机,以为了对移动用户进行分类、得到对于区域102的特性的见解、帮助计算机140的数据提供者程序142将通信信息发送到移动用户、以及其他目的。
计算机140包括数据提供者程序142和数据库144。计算机140可以是被配置用于到移动用户的通信的发送的计算机,并且可以例如是由营销实体或其他数据提供者实体操作的计算机。如以下所讨论的,数据提供者程序142可以至少部分基于关系数据仓库系统120和计算机130中的一个或两个所产生的见解来将存储在数据库144中的通信信息发送到区域102中的移动用户。
现在参照图2,示出了根据本发明的实施例的流程图200,该流程图描绘在基于存储在关系数据仓库系统120中的移动装置数据产生移动性简档和聚集地简档期间所采用的步骤。一般来讲,移动性度量是作为移动性和活动的指示符的一系列算法和计算的结果,移动性简档是针对个体的移动用户的、在特定的日时间跨度(time-of-day span)(例如,一天可以分割为几个大致的日时间跨度,诸如“早餐”、“早上”、“午餐”、“下午”、“晚餐”和“晚上”等)以及特定的星期跨度(day-of-week span)(例如,一周可以分割为几个大致的星期跨度,诸如“工作日”和“周末”等)上的移动性度量的集合。就这点儿论,在一个实施例中,对于每一个个体,可以存在十二个度量(即,日时间跨度的数量乘以星期跨度的数量),这些度量共同构成个体移动性简档。更一般地讲,可以对移动性简档进行分析以创建指示个体移动用户的总体生活方式类型的分组,使得每一个移动性简档对于个体移动用户可以是唯一的。
在步骤210中,嵌入式分析126从移动装置记录124产生空间-时间盒子聚合数据(aggregated data),并且将结果(即,中间结果)存储在分析结果记录128中。嵌入式分析126可以通过下述操作来产生空间-时间盒子聚合数据:确定每个空间-时间盒子的空间和时间分辨率,然后将包括关于移动装置的带有时间戳的位置和活动数据的每个记录分配给空间-时间盒子。在一个实施例中,步骤210包括将关于每个移动装置的地理位置数据变换为关于每个移动装置的逻辑位置数据(例如,将地理位置数据变换为地理散列,等等)的预处理步骤。在每个空间-时间盒子具有图1的区域102中所示的方形网格的空间分辨率(例如,方形网格2E具有描绘的市中心106的部分的空间分辨率,等等)并且具有五分钟的时间分辨率的实施例中,嵌入式分析126可以将在每个方形网格内的任何地方发生并且在给定的五分钟间隔中在任何时间发生的每个记录分配给相应的空间-时间盒子。另举一例,在给定区域102中所描绘的每一个方形网格以及给定的等同一小时的移动装置数据的情况下,五分钟的时间分辨率得到聚合到252个空间-时间盒子中的数据(即,所描绘的二十一个方形网格和一小时内的十二个五分钟间隔的乘积为252个空间-时间盒子)。因此,步骤200可以被认为是将移动装置记录124的“原始”移动装置数据“装盒”至空间-时间盒子中,这些空间-时间盒子作为中间结果存储在分析结果记录128中。
在步骤210完结时,流程图200分叉成两个路径,第一路径通过步骤212以及后面的步骤进行,第二路径通过符号A进行,其在图3中继续。在各种实施例中,当嵌入式分析126进一步对移动装置数据进行处理时,可以遵循分叉的路径中的一个或两者。以下,在图2的上下文中讨论第一路径,在图3的上下文中进一步讨论第二路径。
在步骤212中,嵌入式分析126在步骤210的中间结果中生成每一移动用户的对于每个空间-时间盒子的活动计数,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过对移动用户在空间-时间盒子中执行的活动的总数进行求和来生成每一移动用户的对于每个空间-时间盒子的活动计数。例如,如果方形网格3G中所描绘的唯一的移动用户在给定的等同一小时的移动装置数据的头五分钟内发送和接收总共三个文本消息,并且在第二个五分钟内打了一个电话和发送了一个文本消息,则对于方形网格3G的相应的空间-时间盒子的两个五分钟间隔,嵌入式分析126可以分别产生并且存储活动计数3和2。
在步骤214中,嵌入式分析126确定步骤212的中间结果中的每一时间间隔的每一移动用户的排序最高的位置,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过下述操作来确定每一时间间隔的每一移动用户的排序最高的位置:首先,按降序的活动计数的次序对在其中给定的移动用户具有活动计数的空间-时间盒子进行排序,然后识别排序靠前的那些排序的空间-时间盒子的阈值数。例如,如果方形网格3G中所描绘的唯一的移动用户随着时间过去移动到相邻的方形网格3F、3E和3D(全都同时执行各种移动活动(mobile activity)),并且如果阈值数为3,则在步骤214中,嵌入式分析126将确定总共四个方形网格中的排序前三位的方形网格。特别地,如果方形网格3G中所描绘的唯一的移动用户如所描述的那样移动,并且在进入市中心106时增加他或她的移动活动,则在所描述的情况下,这可以被反映为嵌入式分析126确定所述唯一的移动用户的排序最高的位置是方形网格3F、3E和3D。
在步骤216中,嵌入式分析126调整步骤214的中间结果中的空间-时间盒子的粒度,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过提高或降低每个空间-时间盒子的空间或时间分辨率来调整空间-时间盒子的粒度。调整粒度的一个目的是减小“颤振”,即,减少随着给定的移动用户跨越两个空间-时间盒子的空间边界来回移动(例如,通过越过两个方形网格之间的边界来回移动,等等)而记录的转变的数量。因此,可以通过降低所有的空间-时间盒子的空间分辨率来减小颤振。嵌入式分析126可以通过例如合并一组相邻的方形网格以生成新的更大的方形网格(例如,按3×3方形布置的九个1平方米的方形网格可以合并为单个9平方米的方形网格,等等)来降低空间分辨率。可替代地,嵌入式分析126可以通过例如将移动装置数据重构为新的一组方形网格(一般更大,但是不是相对直接合并的结果)来降低空间分辨率。一般来讲,步骤216可以被认为是以被确定为改变空间-时间盒子的粒度的方式对现有的中间结果进行“重新装盒”。
在步骤218中,嵌入式分析126用元数据(诸如日时间跨度和星期跨度)来标记步骤216的中间结果中的空间-时间盒子的记录,并将结果作为新的中间结构存储在分析结构记录128中。嵌入式分析126可以通过为包括关于移动装置的带有时间戳的位置和活动数据的每个记录分配基于其时间戳或者基于其相关联的空间-时间盒子的时间维度的标签,来用元数据标记记录。如以上所陈述的,例如,日时间跨度可以包括跨度“早餐”、“早上”、“午餐”、“下午”、“晚餐”和“晚上”,而星期跨度可以包括跨度“工作日”和“周末”。因此,如果给定记录的时间戳落在例如8AM与10AM之间,则嵌入式分析126可以用“早餐”日时间跨度来标记该给定记录,并且如果同一给定记录的时间戳落在星期一,则可以用“工作日”星期跨度来标记该同一给定记录。就这点而论,应当理解,每个记录可以具有一个或多个标签。在步骤218完结时,嵌入式分析126产生了新的中间结果以存储在分析结果记录128中,其包括各种标签。
在步骤220中,嵌入式分析126按照移动用户、位置和元数据标签来对步骤218的中间结果中的空间-时间盒子的记录进行分组,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过例如执行如下数据库指令(例如,SQL语句等)来对记录进行分组,所述数据库指令包括对每个记录的移动用户、位置、日时间跨度以及星期跨度进行操作的“group by”子句。作为结果的新的中间结果对于每一个移动用户有效地记载了每个用户在各种元数据标记的跨度期间所占据的独特位置。
在步骤220完结时,流程图200分叉成两个路径,第一路径通过步骤222和224进行,第二路径通过步骤226进行。在各种实施例中,当嵌入式分析126进一步对移动装置数据进行处理时,可以遵循分叉的路径中的一个或两者。以下又将从第一路径开始讨论这些路径。
在步骤222中,嵌入式分析126按照移动用户和元数据标签来对步骤220的中间结果中的空间-时间盒子的记录进行分组,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过例如执行如下数据库指令(例如,SQL语句等)来对记录进行分组,所述数据库指令包括对每个记录的移动用户、日时间跨度以及星期跨度进行操作的“group by”子句。因此,特别是,在作为分组因子移除了位置的情况下,步骤222的分组可以被认为是步骤220的分组的更窄分组。作为结果的新的中间结果对于每一个移动用户有效地记载了每个用户在各种元数据标记的跨度期间所占据的独特位置。该记载可以被认为是对于每个移动用户的移动性度量,其捕捉每个移动用户在各种元数据标记的跨度期间的移动性。
在步骤224中,嵌入式分析126对步骤222的中间结果中的空间-时间盒子的记录(这些记录已经按照移动用户和元数据标签进行了分组)进行规范化,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过例如用得到大致以零为中心的标准化值的统计处理对记录进行分析来对记录进行规范化。标准化值使得可以例如比较不同源上的记录。该规范化记载——数个中间结果之后的最终结果——可以被认为是关于每个移动用户的移动性简档。
在步骤226中,嵌入式分析126按照位置和元数据标签对步骤220的中间结果中的空间-时间盒子的记录进行分组,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过例如执行如下数据库指令(例如,SQL语句等)来对记录进行分组,所述数据库指令包括对每个记录的地址、日时间跨度以及星期跨度进行操作的“group by”子句。因此,特别是,在作为分组因子移除了移动用户的情况下,步骤222的分组可以被认为是步骤220的分组的更窄分组。作为结果的新的中间结果对于每一个位置有效地记载了在各种元数据标记的跨度期间占据的每个位置的移动用户的数量。该记载——数个中间结果之后的最终结果——可以被认为是关于每个位置的聚集地简档,其捕捉每个位置在各种元数据标记的跨度期间的受欢迎程度。
现在参照图3,示出了根据本发明的实施例的流程图300,该流程图描绘了在基于存储在关系数据仓库系统120中的移动装置数据产生好友简档期间所采用的步骤。一般来讲,好友模型识别在一组空间-时间盒子内谁何时在其它人周围。好友建模涉及检查数据集中所有其他的移动用户到访的所有位置和时间范围以识别空间-时间盒子中的所有交集。输出可以包括关于每一个空间-时间盒子的任何其他的移动用户在该空间-时间盒子中的次数的排序列表。对于每一个空间-时间盒子,可以对在同一个空间-时间盒子中的其他个人或装置进行计数,并且可以对计数器进行总计和排序。结果是好友或最经常在给定用户周围的用户的列表。该数据可被用于基于给定用户的好友在同一位置的存在来预测给定用户将在哪里。
如以上在图2的上下文中所讨论的,在步骤210完结时,流程图200分叉成两个路径,第一路径通过步骤212以及后面的步骤进行,第二路径通过符号A进行,其在图3中继续。讨论现在转到在步骤312通过符号A进行继续流程图300。
在步骤312中,嵌入式分析126在步骤210的中间结果中产生每一移动用户的对于每个空间-时间盒子的活动计数,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以按上文在步骤212的上下文中所讨论的方式产生每一移动用户的对于给定的空间-时间盒子的活动计数。
在步骤314中,嵌入式分析126对步骤212的中间结果执行自联接(self-join)和删除(prune),并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126通过对于每个移动用户、对于给定的移动用户所在的每个空间-时间盒子、确定哪些其他移动用户也在该空间-时间盒子中来执行自联接。嵌入式分析126可以通过对于每个移动用户从自联接的结果移除同一移动用户的每个实例来执行删除。自联接和删除的结果可以包括按照移动用户列出存在的所有其它移动用户的每一个空间-时间盒子的稀疏矩阵。
在步骤316中,嵌入式分析126调整步骤314的中间结果中的空间-时间盒子的粒度,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过以上文在步骤216的上下文中所讨论的方式提高或降低每个空间-时间盒子的空间或时间分辨率来调整空间-时间盒子的粒度。
在步骤318中,嵌入式分析126用元数据(诸如日时间跨度和星期跨度)来标记步骤316的中间结果中的空间-时间盒子的记录,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过为包括关于移动装置的带有时间戳的位置和活动数据的每个记录分配基于其时间戳或者基于其相关联的空间-时间盒子的时间维度的标签,来用元数据标记记录。如以上在图2的上下文中所陈述的,例如,日时间跨度可以包括跨度“早餐”、“早上”、“午餐”、“下午”、“晚餐”和“晚上”,而星期跨度可以包括跨度“工作日”和“周末”。在步骤318完结时,嵌入式分析126产生了新的中间结果以存储在分析结果记录128中,其包括各种标签。
在步骤320中,嵌入式分析126按照移动用户、位置和元数据标签来对步骤318的中间结果中的空间-时间盒子的记录进行分组,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过例如执行如下数据库指令(例如,SQL语句等)来对记录进行分组,所述数据库指令包括对每个记录的移动用户、位置、日时间跨度以及星期跨度进行操作的“group by”子句。
在步骤322中,嵌入式分析126按照移动用户和元数据标签来对步骤320的中间结果中的空间-时间盒子的记录进行分组,并且将结果作为新的中间结果存储在分析结果记录128中。嵌入式分析126可以通过例如执行如下数据库指令(例如,SQL语句等)来对记录进行分组,所述数据库指令包括对每个记录的移动用户、日时间跨度以及星期跨度进行操作的“group by”子句。因此,特别是,在作为分组因子移除了位置的情况下,步骤322的分组可以被认为是步骤320的分组的更窄的分组。
在步骤324中,嵌入式分析126对于每一移动用户按其他移动用户的出现频率以降序对空间-时间盒子的记录进行排序。结果是每一给定的移动用户的、在与该给定的移动用户相同的空间-时间盒子中出现的且按降序的出现频率排序的所有其他的移动用户的有序列表。该列表——数个中间结果之后的最终结果——可以被认为是关于每个移动用户的好友简档,其捕捉每个移动用户的在空间和时间上与其邻近的其他移动用户。
现在参照图4A和图4B,示出了根据本发明的实施例的流程图400a和400b,这些流程图描绘了在将启发规则和聚类算法分别应用于在执行流程图200和300期间所产生的中间结果和最终结果中的若干结果期间所采用的步骤。
现在转到图4A,流程图400a可以由计算机130的启发程序132执行。一般来讲,启发程序132将启发规则应用于如以上所讨论的那样产生的中间结果和最终结果中的若干个,以便例如对移动用户进行分类、得到对于区域102的特性的见解、以及帮助计算机140的数据提供者程序142将通信信息发送到移动用户。启发规则可以包括与逻辑运算符(例如,AND、OR等)组合的准则的列表,如果所述准则评估为真,则所述标准将识别移动用户属于特定生活方式简档。对于特定例子,一个例示性启发规则是“IF((‘morning’>-0.5)AND(‘breakfast’>-0.5)AND(‘lunch’<1)AND(‘afternoon’<1))THENtype EQUALS‘Daily Grinder’”。如果移动用户的移动性简档中的值满足所有四个结合地联接的标准,则该例示性启发规则识别他或她属于类型“Daily Grinder”。可以开发各种启发规则来识别不同类型的移动用户。
在步骤410中,启发程序132接收关于识别移动用户的类型的启发规则。例如,启发程序132可以接收用于识别以上所讨论的以下生活方式简档中的一个或多个的启发规则:“Homebody”、“DailyGrinder”、“Norm Peterson”、“Delivering the Goods”、“GlobeTrotter”、“Rover Wanderer”和“Other”。这些列出的生活方式简档仅仅是例示性的,可以产生许多另外的生活方式简档,并且将这些简档归纳为将在步骤410中接收的启发规则。启发程序132可以从例如计算机140的数据提供者程序142接收启发规则。
在步骤412中,启发程序132将所接收的一个启发规则或多个启发规则应用于一个或多个中间结果或最终结果。在一个实施例中,启发程序132将一个启发规则或多个启发规则注入到关系数据仓库系统120中以供在那里应用,而在另一个实施例中,启发程序132在计算机130处接收一个或多个中间结果或最终结果,并且在计算机130处应用所接收的启发规则。一般来讲,后者可以是可行的,只要一个或多个中间结果或最终结果的大小与在关系数据仓库系统120处从区域102中的移动用户接收的移动装置数据的原始大小相比可以大大地减小。被应用一个启发规则或多个启发规则的一个或多个中间结果或最终结果可以例如是移动用户的移动性简档。
在步骤414中,启发程序132将一个启发规则或多个启发规则的应用结果发送到例如计算机140的数据提供者程序142。因此,如以下详细地讨论的,数据提供者程序142可以利用该结果来将存储在数据库144中的通信信息送往该结果中所识别的区域102中的移动用户。
在步骤416中,启发程序132对照在流程图400b期间所产生的聚类结果来对一个启发规则或多个启发规则的应用结果进行交叉验证。一般来讲,如以下在流程图400b的上下文中更多地讨论的,交叉验证可以显示出启发规则的准确性或效用。
现在转到图4B,流程图400b可以由计算机130的聚类程序134执行。一般来讲,聚类程序134可以执行两步聚类方法,其是被设计为对非常大的数据集进行处理的可缩放聚类分析算法,并且可以对连续的和分类的变量或属性两者进行处理。该两步聚类方法仅需要一次数据遍历,并且具有两个步骤,这两个步骤包含将记录预聚类为许多小的子聚类,并且将由预聚类步骤产生的子聚类聚集为期望数量的聚类(例如,数量可以自动地选择,等等)。
在步骤420中,聚类程序134接收用于识别移动用户的类型的聚类规则。例如,聚类程序134可以接收用于识别聚类简档的聚类规则。聚类简档类似于生活方式简档,只要关系数据仓库系统120的分析结果记录128中的一个或多个中间结果或最终结果在应用聚类算法时将根据聚类简档得到聚类。聚类程序134可以从例如计算机140的数据提供者程序142接收聚类规则。
在步骤422中,启发程序132通过执行聚类算法来将所接收的一个聚类规则或多个聚类规则应用于一个或多个中间结果或最终结果。在一个实施例中,聚类程序134将一个聚类规则或多个聚类规则注入到关系数据仓库系统120中以供在那应用,而在另一个实施例中,聚类程序134在计算机130接收一个或多个中间结果或最终结果,并且在计算机130处应用所接收的一个聚类规则或多个聚类规则。一般来讲,后者可以是可行的,只要一个或多个中间结果或最终结果的大小与在关系数据仓库系统120处从区域102中的移动用户接收的移动装置数据的原始大小相比可以大大地减小。可被应用一个聚类规则或多个聚类规则的一个或多个中间结果或最终结果可以例如是移动用户的移动性简档。
在步骤424中,聚类程序134将应用一个聚类规则或多个聚类规则的结果发送到例如计算机140的数据提供者程序142。因此,如以下详细地讨论的,数据提供者程序142可以利用该结果来将存储在数据库144中的通信信息送往该结果中所识别的区域102中的移动用户。
在步骤426中,聚类程序134对照在流程图400a期间所产生的启发结果来对一个聚类规则或多个聚类规则的应用结果进行交叉验证。一般来讲,交叉验证可以显示出聚类规则和启发规则的准确度或效用。这样的情况至少是因为,启发结果和聚类结果之间的相似性显示出一致性和正确性,而这两者之间的偏差可以显示出一个或另一个可能需要校正。
现在参照图5,示出了根据本发明的实施例的用于移动装置数据的收集、分析和使用的交互的序列500。序列500中所描绘的是移动用户508、零售商粉丝页面510、零售商客户简档512、产品目录514以及电信公司(即,“telco”)客户简档516。零售商粉丝页面510可以是托管在社交媒体网站上的关于零售商的粉丝页面。零售商客户简档512、产品目录514以及telco客户简档516可以是存储在例如计算机140的数据库144中的数据。
在交互501中,移动用户508向零售商注册,并且许可零售商和telco提供与她的移动装置的连接,这指示她许可参加序列500的后面的交互。在交互502中,移动用户508跟随朋友在社交媒体网站上的帖子,并且点击她喜欢的产品(例如,照相机等)上的“喜欢”按钮。经由零售商粉丝页面510向零售商注册交互502。在交互503中,关系数据仓库系统120、计算机130和计算机140根据上述技术,使用telco和零售商信息来对移动用户508对于相关动作的活动进行处理(例如,对于移动用户508产生移动性简档和好友简档,并且在聚集地简档中识别移动用户508,等等)。在交互504中,响应于在交互503中执行的处理,如果移动用户508在零售商的店铺的区域内,则她接收到零售商的店铺发出的邀请她顺便到访的具有出售物的消息(例如,该消息从数据提供者程序142发送,等等)。在交互505中,响应于在交互503中执行的处理,并且响应于在零售商的店铺附近的移动用户508的地理围栏检测,在移动用户508经过店铺时,她接收出售物的促销码(例如,该促销码从数据提供者程序142发送,等等)。在交互506中,移动用户508使用促销码来在零售商的店铺的销售点购买出售物。
现在参照图6,示出了根据本发明的实施例的计算机系统的功能框图。计算机系统600仅仅是合适的计算机系统的一个例子,并非意图建议对于本文中所描述的本发明的实施例的使用或功能的范围的任何限制。无论如何,计算机系统600能够被实现和/或执行以上所阐述的任一功能。
在计算机系统600中,存在通过许多其他的通用或专用计算系统环境或配置进行操作的计算机612。可以适合与计算机612一起使用的公知的计算系统、环境和/或配置的例子包括,但不限于,个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持或膝上型装置、多处理器系统、基于微处理器的系统、机顶盒、可编程客户电子器件、网络PC、微型计算机系统、大型计算机系统、以及包括以上任一系统或装置的分布式云计算环境、等等。区域102中的每个移动装置、关系数据仓库系统120、计算机130和计算机140可以包括计算机612的实例,或者可以实现为计算机612的实例。
计算机612可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文下进行描述。一般来讲,程序模块可以包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机612可以在分布式云计算环境下实施,在分布式云计算环境下,任务由通过通信网络链接的远程处理装置执行。在分布式云计算环境下,程序模块可以安置在包括内存存储装置的本地计算机系统存储介质和远程计算系统存储介质两者中。
如图6中进一步所示的,计算机系统600中的计算机612被示为通用计算装置的形式。计算机612的组件可以包括,但不限于,一个或多个处理器或处理单元616、存储器628以及总线618,总线618耦连包括存储器628的各种系统组件到处理单元616。
总线618表示包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何一种的处理器或本地总线的若干种类型的总线结构中的任何一种的一个或多个。举例来说,但不限于,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线以及外围组件互连(PCI)总线。
计算机612典型地包括各种计算机系统可读介质。这样的介质可以是可供计算机612访问的任何可用介质,并且包括易失性和非易失性介质以及可移动和非可移动介质两者。
存储器628可以包括易失性存储器形式的计算机可读介质,诸如随机存取存储器(RAM)630和/或高速缓存632。计算机612还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅举例来说,存储系统634可以被提供用于读写不可移动、非易失性磁性介质(未示出,典型地被称为“硬盘驱动器”)。尽管未示出,但是可以提供磁盘驱动器和光盘驱动器,所述磁盘驱动器用于读写可移动、非易失性磁盘(例如,“软盘”),所述光盘驱动器用于读写可移动、非易失性光盘(诸如CD-ROM、DVD-ROM或其他光学介质)。在这样的情况下,每个均可以通过一个或多个数据介质接口连接到总线618。如以下将进一步描绘和描述的,存储器628可以包括具有被配置为实现本发明的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
举例来说,但不作为限制,与操作系统、一个或多个应用程序、其他程序模块以及程序数据一样,具有一个或多个程序模块642的程序640可以存储在存储器628中。操作系统、一个或多个应用程序、其他程序模块以及程序数据或者它们的某一组合可以包括联网环境的实现。程序模块642通常实现本文中所描述的本发明的实施例的功能和/或方法。嵌入式分析126、启发程序132、聚类程序134以及数据提供者程序142中的每个均可以实现为程序640的实例,或者可以是程序640的实例。
计算机612还可以与如下装置通信:诸如键盘、指点装置等以及显示器624的一个或多个外部装置614;使得用户能够与计算机612交互的一个或多个装置;和/或使得计算机612能够与一个或多个其他计算装置通信的任何装置(例如,网卡、调制解调器等)。这样的通信可以经由输入/输出(I/O)接口622发生。还有,计算机612可以经由网络适配器620与诸如局域网(LAN)、一般的广域网(WAN)和/或公共网络(例如,互联网)的一个或多个网络通信。如所描绘的,网络适配器620经由总线618与计算机612的其他组件通信。应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机612结合使用。例子包括,但不限于:微代码、装置驱动器、冗余处理单元、外部盘驱动器阵列、RAID系统、磁带驱动器以及数据归档存储系统等。
附图中的流程图和框图显示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。