本节从计算的角度讨论了城市计算的每一层所带来的挑战。
许多城市计算应用程序需要能够 无干扰 且 持续 收集 城市规模 数据的数据采集技术,这不是一个简单的问题。虽然监测单个路段的交通流量很容易,但持续探测全市交通是一项挑战,因为我们没有在每个路段部署传感器。建设新的传感基础设施可以完成这项任务,但反过来会增加城市的负担。如何创造性地利用我们在城市空间中已经拥有的资源来实现这种数据采集技术还有待探索。
更具体地,城市感知的挑战有四个方面:(1)偏斜样本数据,(2)数据稀疏和缺失数据,(3)隐式数据和噪声数据,(4)资源分配。表1.1列出了不同城市感知模式面临的挑战。我们将详细介绍每一项挑战。
表1.1 不同城市感知模式面临的挑战
我们在城市计算场景中能感知到的数据集通常是一个样本,它可能不能准确地代表整个数据集,如图1.5a所示。样本中某些属性的分布可能会偏离整个数据集。从数据样本中获得关于整个数据集的真实知识仍然是一个挑战。
图1.5 采样数据的偏斜分布(见彩插)
例如,虽然我们可以收集出租车的GPS轨迹,但要追踪城市中行驶的每一辆车几乎是不可能的。这些出租车只是车辆的一个样本,它们的地理分布与其他出租车截然不同。如图1.5b所示,可能某些路段有许多私家车,但很少有或没有出租车,而其他路段有许多出租车,但很少有私家车。因此,要根据出租车的轨迹来估计道路的交通流量,我们不能简单地将道路上的出租车数量乘以一个特定的因子。从采样数据(即出租车轨迹)中得出道路的真实交通流量仍然是一个挑战。
同样,如图1.5c所示,用户在一个在线社交网络服务上的签到数据表示城市中一部分人的移动情况。由于有许多人在访问某个地方时不会进行签到,因此签到数据的地理分布可能与城市中实际人群的分布大相径庭。因此,根据签到数据来估计人群流量是具有挑战性的。
为了应对上述挑战,我们需要知道从数据样本中获得什么样的知识可以代表整个数据集,而什么不可以。例如,路段允许的行驶速度可以从经过此路段的出租车的GPS轨迹中得出。由于在同一路段上行驶的车辆通常具有相似的速度,因此从作为车辆样本的出租车获得的速度信息可以表示所有车辆的速度信息。然而,出租车的数量并不能直接转换为车辆的总数。在这种情况下,我们需要结合其他数据集的知识,如POI、道路网络结构和天气条件,来推断道路上的总交通量 [41] 。
· 数据稀疏 许多传感系统仅在城市的少数几个地点部署了有限数量的传感器,基于这些在地理空间中稀疏分布的传感器来收集整座城市的详细信息是一个挑战。
例如,如图1.6a的左侧所示,在偌大的北京市区范围内仅部署了35个空气质量监测站。尽管这些传感器在城市中分布稀疏,我们仍希望能够感知整个城市的细粒度空气质量 [71] ,如图1.6a的右侧所示。
图1.6 城市感知中的数据稀疏和缺失(见彩插)
图1.6b展示了另一个例子,旨在根据人们对噪声的投诉来感知纽约市的城市噪声 [73] 。由于让人们随时随地报告环境噪声状况几乎是不可能的,因此收集的数据在时空空间中非常稀疏。根据稀疏数据诊断整个纽约市的噪声状况仍然是一个挑战。
· 缺失数据 缺失数据 是一个不同于数据稀疏的概念,表示缺少应获得的数据。例如,如图1.7所示,空气质量监测站 s 1 应该每小时生成一个关于空气污染的读数。然而,当遇到通信或设备错误时,我们会丢失一些传感器读数,例如, s 1 在 t 2 时的读数和 s 3 在 t i +1 时的读数称为 缺失数据 [50] 。虽然补充这些缺失的值对于支持监测和进一步的数据分析很重要,但这项任务具有挑战性,原因有以下两点。
图1.7 时空数据集中的缺失数据
首先,任意传感器可能在任意时间戳缺失读数。在一些极端情况下,可能会连续丢失来自一个传感器的读数(例如,从 t 1 到 t i 的 s 2 的读数),或者在某个(或多个)时间戳(例如, t 2 )同时丢失所有传感器的读数。我们将这些极端情况称为 缺失块 。现有的模型很难处理缺失块问题,因为我们可能无法为模型找到稳定的输入。
其次,受到多个复杂因素的影响,传感器读数随位置和时间变化发生显著且非线性的变化。距离较近的传感器的读数不一定比距离较远的传感器更相似。此外,传感器读数在时间上波动巨大,有时会突然发生变化。
传统传感器生成的数据结构良好、明确、干净且易于理解。然而,在被动人群感知等程序中,用户贡献的数据通常是自由格式的(如文本和图像),或者不能像传统传感器那样明确地引导我们达到最终目标。有时,信息也可能带有噪声,因为人们并不是带着特定的目的收集数据。
例如,Zhang等人 [59-60] 旨在利用配备GPS的出租车司机作为传感器来检测加油站排队时间(当他们给出租车加油时),并进一步推断那里还有多少人也正在给他们的车辆加油。目标是估算加油站的汽油消耗量,最终估算给定时间范围内全市的汽油消耗量。在这个应用中,我们可以收集到的是出租车司机的GPS轨迹,这些轨迹并没有明确告诉我们汽油消耗的结果。与此同时,出租车司机把出租车停在离加油站较近的地方可能只是为了休息或等待交通信号灯。这些从GPS轨迹数据中观察到的行为是噪声,因为它们并不是真正的加油行为。
尽管我们希望在城市感知程序中最大化数据收集的覆盖范围和质量,但通常面临资源限制,如资金、传感器和劳动力。这具有挑战性,具体原因有两个:数据质量测量和候选对象选择。
· 数据质量测量 我们需要一个明确的测量标准来评估感知程序收集到的数据。这个测量标准会因不同的应用而变化,包括数量、覆盖范围、平衡性、冗余性和稳定性。在某些应用中,测量标准很容易量化,例如覆盖最多的轨迹(互不相同)数量。然而,在其他应用中,定义测量标准是一个不好完成的任务。例如,如图1.8a所示,我们希望建立4个新的监测站以便在整个城市中最佳地监测空气质量。定义“最佳监测”是具有挑战性的,因为我们没有整个城市的空气质量的基准真实数据(ground truth) [71] 。
图1.8 资源分配挑战的示例
同样,如图1.8b所示,在时空空间中定义由主动人群感知程序收集的数据的覆盖范围是非简单的,其中空间和时间维度可能具有不同的粒度 [20] 。按不同的地理大小和不同长度的时间间隔进行划分,收集到的数据将呈现不同的分布。对数据覆盖的评估将显著影响主动人群感知程序中的任务设计和参与者招募。
· 候选对象选择 基于上述测量,我们需要从大量候选对象中为城市感知程序进行选择,如地点、车辆和人员。这是一个非常复杂的问题,有时甚至是NP困难的。例如,从道路网络中找到一个包含 k 个地点的集合,使得有最大数量的互不相同的轨迹穿过这些地点 [27] ,这是一个典型的固定传感器部署问题,可以转化为一个具有NP计算复杂度的子模近似问题。在移动感知领域的另一个例子是,选择几辆公交车来放置商业广告,以最大化看到广告的人数。
在主动人群感知程序中,如图1.8b所示,给定有限的预算,感知方案需要根据参与者的移动性选择合适的参与者,并为他们提供不会打断他们原有通勤计划的无障碍任务。这是困难的,因为城市中的人类移动性高度倾斜。如果没有有效的参与者招募和任务分配机制,一些地点将没有参与者贡献数据,而少数地方(例如,热门旅游景点)可能有过多的甚至冗余的数据,从而浪费资源。因此,我们无法确保最佳的数据覆盖范围,以更好地支持上层应用。
有许多类型的数据,如文本、图像、交通和气象数据等,都是由城市空间中不同的来源不断生成的。为了更好地支持上层数据挖掘和服务,需要 跨不同领域 管理 大规模 和 动态 的数据集。云计算平台,如Microsoft Azure和Amazon Web Services,被视为大规模和动态数据的理想基础设施。由于大多数城市数据都与空间信息和时间属性(称为 时空数据 )相关,城市计算需要云计算技术来管理时空数据。然而,当前的云计算平台并非专为时空数据设计。以下是在处理时空数据时面临的主要挑战。
时空数据具有唯一的数据结构,这些结构与文本和图像不同。例如,一张照片在拍摄后的大小是固定的,而一辆出租车在城市中行驶的轨迹长度会不断增加。一个移动物体的轨迹数据会以不可更改的顺序持续流入云端,我们无法预知轨迹何时结束以及它最终会多大。此外,为了支持不同的查询,时空数据的存储机制也不同。
我们通常通过关键词查询文档,即精确或近似匹配一些关键词与文档集合。然而,在城市计算中,我们通常需要处理对时空数据的时空范围查询或 k 最近邻查询。例如,在60s的时间范围内找到附近的空出租车是一个针对出租车轨迹数据的时空范围查询 [65] 。同样,在驾驶过程中搜索最近的加油站是一个连续的1最近邻查询,针对的是POI。现有的云组件无法直接且高效地处理时空查询,因为在大多数云存储系统中没有找到索引和检索算法。
传统的索引和查询算法通常是针对某一类型的数据提出的。例如,R树是用于索引空间点数据的,倒排索引是为了处理文本文档而设计的。然而,在城市计算中,我们需要处理具有不同格式和更新频率的多数据集,这些数据集跨越不同的领域。这需要能够组织多模态数据(例如,将轨迹、兴趣点和空气质量数据一起管理)的(混合)索引结构。如果没有这样的混合索引结构,上层机器学习模型的在线特征提取过程将需要很长时间,从而无法提供即时服务。目前,这样的研究非常罕见。
在处理文本和图像时,云计算平台通常依赖分布式计算环境,如Spark、Storm和Hadoop,因为针对文本和图像设计的索引结构功能相当有限。例如,倒排索引通常用于维护单词和单词所在文档之间的关系。然而,对于时空数据,有效的索引结构可以将检索算法的效率提高几个量级。将时空索引的优势与云中的分布式计算系统结合起来,可以使得云在处理更大规模的数据时更加高效,同时使用更少的计算资源。
将时空索引集成到云的并行计算环境中是一个艰巨的挑战,特别是在有大量轨迹数据流入云时。例如,要找到在几分钟内穿越一系列道路段的车辆,就需要将轨迹索引结构系统地集成到基于Storm的计算框架中。因为使用了并行计算框架和索引结构,所以平衡内存和输入/输出(I/O)吞吐量是一个挑战,这需要用到分布式系统、云存储和索引算法的知识。一些索引结构在独立运行的机器上可能表现很好,但考虑到索引分区和更新的潜在问题,它们可能不是分布式环境下的最佳选择。
时空数据与图像和文本数据不同,用现有机器学习算法处理时空属性会带来以下挑战。
· 空间属性 空间属性包括地理距离和层次结构。例如,根据地理学第一定律——“每个事物都与其他事物相关,但近的事物比远的事物更相关” [45] ——机器学习算法应该能够区分距离较近对象之间的相似性和距离较远对象之间的相似性。这里的距离不仅指地理距离,还包括在语义空间(如特征空间)中的距离。
例如,如图1.9a所示,在一个城市中部署了4个空气质量监测站( s 1 、 s 2 、 s 3 和 s 4 )。根据地理欧几里得距离, s 4 是距离 s 2 最近的监测站,其空气质量与 s 2 的相似度高于与其他监测站的相似度。然而,对于 s 1 和 s 3 这并不成立。尽管在地理空间中 s 1 比起 s 3 更接近 s 2 ,但如图1.9b所示, s 2 的空气质量读数与 s 3 的相似度高于与 s 1 的相似度。原因是 s 2 和 s 3 位于具有相似地理背景(例如POI和交通模式)的两个区域,而 s 1 部署在森林中,并且它与 s 2 之间有一个湖泊。因此,在特征空间中,实际上 s 3 比起 s 2 更接近 s 1 。
图1.9 时空数据的空间距离
此外,不同粒度的位置自然地产生了一个层次结构。例如,一个市由许多县组成,每个县进一步由许多镇组成。在层次结构的不同层次上的数据表示包含着不同层次的知识。对于机器学习算法来说,捕捉不同粒度的时间和空间数据信息是一个具有挑战性的任务。
例如,如图1.10所示,不同用户的位置历史形成了一个地理层次结构,其中上层节点表示具有较粗粒度的位置簇。我们希望根据四名用户( u 1 、 u 2 、 u 3 、 u 4 )的位置历史估计他们之间的相似性,一般的观点是相似的用户应该共享更多的位置历史 [25,79] 。如果只检查他们在 l 2 的位置历史,我们无法区分 u 1 、 u 2 和 u 3 ,因为他们都经过了 c 20 → c 22 。然而,如果我们检查 l 3 ,会发现 u 2 和 u 3 都访问了 c 35 。因此,与 u 1 相比, u 3 更类似于 u 2 。同样,与 u 2 相比, u 3 更类似于 u 1 ,因为 u 1 和 u 3 都访问了 c 30 。如果我们只探索这些用户在 l 3 的数据, u 1 、 u 2 和 u 4 将很难进行比较,因为他们在这个层次上没有共享任何位置。通过检查他们在 l 2 的位置历史,我们可以区分 u 2 和 u 4 ,因为 u 1 和 u 2 都经过了 c 20 → c 22 ,而 u 1 和 u 2 没有。
图1.10 空间数据的层次属性(见彩插)
· 时间属性 时间属性包括三个方面:时间接近性、周期性模式和趋势模式。第一个方面与空间距离非常相似,表明在两个相近时间戳生成的数据集通常比在两个遥远时间戳生成的数据集更相似 [50] 。然而,考虑到时空数据的周期性模式,并不总是如此。例如,如图1.11a所示,某条路上午8点的交通速度在连续的工作日几乎是相同的,但可能与同一天上午11点的有很大不同,尽管上午11点在时间上更接近上午8点,而不是前一天上午8点。此外,随着时间的变化,周期也会发生变化。如图1.11b所示,周末上午9点到10点的交通速度随着冬季的临近而不断上升。当温度下降时,人们会推迟开始周末活动的时间。因此,在这条路上,上午9点的交通状况变得越来越好。总之,机器学习算法应该能够模拟时空数据的时间接近性、周期性模式和趋势模式属性。
图1.11 时空数据的时间特性:北京四环北段每小时交通速度示例
机器学习和数据库是计算机科学中两个不同的领域,各自拥有社区和会议。虽然这两个社区的工作很少交叉,但在设计城市计算以及各种其他大数据项目的数据分析方法时,需要来自这两个领域的知识。对于这两个社区的人来说,设计有效且高效的数据分析方法,无缝且系统地结合数据库和机器学习的知识,是一项具有挑战性的任务。结合的方法主要有三种。
第一,我们可以设计空间和时空索引结构来加速机器学习算法的信息检索和特征提取过程。例如,为了推断一个地点的空气质量,我们需要从穿越每个区域的出租车的GPS轨迹中提取交通特征。如果没有时空索引结构,特征提取过程将持续数小时 [71] 。
第二,我们可以使用数据库技术为机器学习算法生成候选数据,从而缩小复杂学习算法的搜索空间。例如,因果推断算法通常非常复杂且低效,因此很难直接应用于大数据。通过数据库领域的模式挖掘技术,我们可以从大量数据中找到一些相关性模式。然后,因果推断算法可以利用这些相关性模式(它们比原始数据小得多)作为输入来推导不同对象或数据集之间的因果关系。
第三,我们可以使用由数据库技术得到的上界和下界来修剪搜索空间。例如,在参考文献 [37,78] 中,作者为对数似然比检验推导了一个上界,以加快异常检测过程。
虽然融合来自多个不同数据集的知识对于大数据项目至关重要,但跨领域数据融合是一项不易完成的任务,原因有以下两点。
首先,简单地将从不同数据集中提取的特征拼接成一个特征向量可能会降低任务的性能,因为不同的数据源可能具有非常不同的特征空间、分布和显著性水平 [35] 。
其次,涉及更多类型数据的任务更有可能出现数据稀缺问题。例如,在参考文献 [71] 中使用了五种数据源,包括交通、气象、POI、道路网络和空气质量读数数据,来预测整个城市的细粒度空气质量。然而,当试图将这种方法应用于其他城市时,我们发现许多城市在每个领域都找不到足够的数据(例如,没有足够的监测站来生成空气质量读数),甚至根本没有给定领域的数据(如交通数据) [48] 。
数据可视化不仅是展示原始数据和呈现结果,尽管这两个方面是使用可视化常见的动机。在城市计算中,交互式视觉数据分析变得尤为重要,它用于检测和描述数据中由某些研究方向驱动 [1,34] 的模式、趋势和关系。当在数据中检测到相关内容时,新问题就会出现,导致需要更详细地查看特定部分。可视化还有助于调整和优化数据挖掘模型的参数。交互式视觉数据分析为人类智能与机器智能的结合提供了一种方法,还赋予人们整合领域知识(如城市规划)与数据科学的能力,使领域专家(如城市规划师或环保人士)能够与数据科学家合作,解决特定领域的问题。
交互式视觉数据分析要求以下两个技术方面的支持:一是将可视化方法与数据挖掘算法无缝集成,并将集成部署在云计算平台上;二是以交互方式结合人类和数字数据处理的优势,涉及假设生成而不仅是假设测试 [1] 。
这一层架起了城市计算与现有城市相关领域(比如城市规划、环境理论和交通等领域)之间的桥梁,并面临以下挑战:一是将领域知识与数据科学相融合,二是将城市计算系统集成到现有的领域系统中。
在为这些领域启用城市计算应用时,我们需要一定程度的领域知识。例如,为了预测城市中的交通状况,我们需要知道哪些因素会影响特定地点的交通流量。然而,领域专家和数据科学家通常是两个几乎不共享知识的独立群体。前者拥有丰富的领域知识和经验,但通常对数据科学知之甚少。后者配备了多样化的数据科学技术,但缺乏领域知识。此外,领域知识可能过于复杂,无法明确指定,因此无法被智能算法精确建模。解决这个问题有两种方法。
首先,数据科学家需要通过与领域专家沟通或学习领域内已发表的文献来获得一定程度的领域知识。与领域专家合作时,数据科学家需要确定哪些关键问题(在领域内)对于任务的完成至关重要,并且可以通过数据科学来解决。数据科学家应该了解可能导致问题的因素,并选择相应的数据集来解决问题。他们需要理解领域内已提出的方法的原理,利用良好的洞察力弥补这些方法的不足。
其次,设计一些允许领域专家与数据科学家创建的智能技术交互的视觉数据分析工具是更好的选择。这是一种将机器智能和人类智能结合的方式,也是将领域知识与现代科学整合的方法。例如,使用智能技术,数据科学家可以根据一些简单的标准或初步设置生成一些初步结果。然后将这些结果呈现给领域专家,他们根据自己的领域知识对结果进行细化。细化可能包括从结果中删除一些不可读的候选数据,或者调整一些有意义的参数。有了经过细化的结果,智能技术继续生成另一轮结果,并从领域专家那里获得反馈,直到得到满意的结果。通过这种交互,领域知识和人类智能被整合到由数据科学驱动的智能技术中。有了这样的交互式视觉数据分析工具,领域专家更有可能为城市计算项目贡献更多的知识。
理想情况下,我们希望根据图1.12所示的框架,为一个领域应用根本性地构建一个城市计算系统。然而,在现实中,许多领域应用可能已经拥有自己的系统,这些系统接收传感器数据并为应用生成决策。领域专家可能希望在完全切换之前先测试新的城市计算系统,这种情况下存在两个挑战。
首先,几乎不可能将城市计算系统的关键组件(如数据分析模型)部署到现有的领域系统中,因为这些组件可能需要根据最近的数据进行更新(即重建)。训练过程并不完全自动化,需要数据科学家参与参数调整和可视化过程。例如,可能每几个月重新训练一次空气质量预测模型,因为城市的交通和天气条件在几个月内可能会发生显著变化。然而,对于大多数领域专家来说,重新训练机器学习模型超出了他们的能力范围。
简单地为每个现有的领域系统分配一名数据科学家就有可能解决这个问题,但这又引起了另一个担忧。鉴于数据科学家的数量远远少于需要数据科学的领域应用数量,处理更多的领域请求时将会非常费力。将关键组件紧密集成到现有的领域系统中增加了数据科学家的工作量。例如,除了第一个挑战中提到的领域知识外,他们还需要了解特定领域系统是如何工作的。此外,他们还需要维护部署在不同领域系统中的多个类似组件。
第二个挑战是,为了防止数据暴露给公众,这些系统有时是基于私有云构建的。因此,城市计算系统可能无法完全访问来自领域系统的数据。
为了应对这些挑战,图1.12提出了一个可能的松散集成策略。在这个策略中,现有的领域系统继续接收原始数据。然后,如果存在数据安全问题,它将提供处理过的数据(例如,从原始数据中提取的特征)给城市计算系统。由于特征提取函数不是动态的,并且不涉及数据科学家,因此可以很容易地部署到现有的领域系统中。数据科学家在城市计算系统方面工作,在必要时训练新模型(无须了解领域系统如何工作)。这些在城市计算系统中运行的模型以来自领域系统的数据为输入,持续生成结果(例如,交通预测)。然后,城市计算系统通过云API将结果作为服务提供给领域系统。基于城市计算系统的结果,领域系统可以推导出最终的决策来操作领域应用。同样的API集可以提供给许多其他需要给定城市的交通预测数据的领域系统。因此,一个模型可以服务于许多领域应用,一个数据科学家可以处理许多类似请求。
图1.12 城市计算服务系统集成策略
尽管数据科学家在许多城市计算项目中扮演着至关重要的角色,但数据科学家的数量非常有限,因为数据科学是一个新兴领域。此外,培训一名数据科学家是非常具有挑战性的,比培训一名数据分析师困难得多。表1.2展示了数据分析师和数据科学家之间的区别。
表1.2 数据分析师和数据科学家之间的比较
总的来说,给定数据集,数据分析师可以运用现有的数据分析工具来解决一个表述明确的(数据挖掘或机器学习)问题,并生成具有预定义架构的结果。例如,为了确定应该批准还是拒绝信用卡申请,数据分析师可以使用以前申请人的表格和还款历史来训练一个二分类模型(例如,决策树),可以从申请人的表格中提取一组特征,如年龄、工作和收入。根据信用卡发放后申请人的还款历史,可以得出相应的标签(Y或N)。如果还款始终按时,则标签设置为Y,否则为N。一旦模型被训练好,它就可以根据新表格中的特征预测新申请的标签。如果标签为Y,则批准申请,否则拒绝。简而言之,这是一个表述明确的二分类问题,有给定数据集(即申请人以前的表格和还款历史)和预定义结果(即拒绝或批准)。
相比之下,数据科学家可能面临的问题包括:环境中有百分之多少的PM2.5是由车辆产生的?如果把北京市政府搬到城市边远地区,对北京的交通和经济会有什么影响?我们如何减少城市的噪声污染?这类问题并不是表述明确的数据分析问题,因为它们不是简单的聚类、分类、回归或因果关系分析任务。此外,哪些数据集与问题相关是未知的。没有现成的工具可以解决这些问题,而且结果的模式也不能轻易地预定义为一些标签,如Y或N。数据科学家需要做的是确定与问题相关且在实际世界中可用的数据集,为问题设计定制的数据分析模型,并推导出最终结果。
在许多情况下,我们的客户(例如,政府官员)甚至无法提出明确的问题。在这种情况下,数据科学家需要自行识别有价值的问题,这些问题对于领域来说是任务关键型的,并且比传统解决方案更适合数据科学。这比解决一个给定的问题还要难。
更具体地,如图1.13所示,数据科学家应该具备四个方面的技能。
图1.13 数据科学家的定义
· 理解问题 数据科学家在城市计算中需要解决的问题通常来自其他领域,如交通、能源和环境领域,而不是计算机科学。数据科学家不一定需要成为领域专家,但科学家必须理解以下问题:问题是什么?为什么这个问题具有挑战性?可能导致这个问题的因素是什么?传统解决方案是如何解决这个问题的?为什么这些方法不能彻底解决这个问题。这些问题的答案来源于常识、领域内已发表的相关文献以及简单的数据可视化。
例如,为了推断一个地点的空气质量,数据科学家需要知道可能导致空气污染的因素,如工厂和车辆排放、气象条件以及扩散条件。仅知道这些因素,数据科学家就可以选择合适的数据集来表示或指示相应的因素。通过学习现有文献,我们知道空气污染是多个复杂过程的结果,包括局部排放、外部传播和化学反应。一方面,我们知道传统的物理扩散模型无法解决这个问题,因为它们只考虑前两个过程。此外,准确模拟前两个过程也是困难的,因为在现实世界中捕捉所有污染源是不切实际的。另一方面,数据科学家可以从现有方法中学习到需要提取的特征以及设计数据分析模型遵循的原理。
· 深入理解数据 数据科学家除了需要了解数据的格式和属性外,还需要洞察数据背后的信息。例如,出租车的GPS轨迹不仅表示道路上的交通状况,还暗示了人们的通勤模式,因为每条出租车轨迹都包含了乘客的上下车点。大量的上下车点对代表了人们的出发地和目的地以及出发和到达时间,这些提供了关于通勤模式的关键信息。此外,人们的通勤模式还指示了一个区域的功能和经济发展以及自然环境。有了这样的洞察,我们就可以利用一个领域的数据集来解决另一个领域的问题,实现跨领域的数据融合,并应对数据稀疏性的挑战。例如,我们可以结合出租车轨迹(表示交通状况和通勤模式)与其他数据集(如POI和道路网络)来推断一个区域的功能。我们甚至可以使用出租车轨迹作为其中一个输入来评估房地产的潜在价值并对其进行排名。
· 精通不同类型的数据分析模型 数据科学家需要掌握数据科学中的各种模型和算法,包括数据管理、数据挖掘、机器学习和可视化。为了用端到端的解决方案解决实际问题,数据科学家需要系统地整合数据科学不同分支的算法。在某些情况下,解决方案中某一步骤的算法设计取决于其前一步骤和后一步骤的算法。例如,在设计数据管理算法时,我们需要考虑云计算平台的特点以及上层机器学习算法的性质。
· 使用云计算平台 在大数据时代,数据无法再存储在单台机器上。云计算平台正成为许多大数据研究(包括城市计算在内)的常见基础设施。知道如何使用这样的平台对于数据科学家部署他们的解决方案至关重要。云计算平台独特的设计影响了算法的设计。此外,了解如何通过添加新组件或中间层来改进云计算平台会更好。一个增强的云计算平台可以更有效地支持城市计算系统(详情请参见第6章)。