1.4.4 城市服务挑战
这一层架起了城市计算与现有城市相关领域(比如城市规划、环境理论和交通等领域)之间的桥梁,并面临以下挑战:一是将领域知识与数据科学相融合,二是将城市计算系统集成到现有的领域系统中。
1.4.4.1 将领域知识与数据科学相融合
在为这些领域启用城市计算应用时,我们需要一定程度的领域知识。例如,为了预测城市中的交通状况,我们需要知道哪些因素会影响特定地点的交通流量。然而,领域专家和数据科学家通常是两个几乎不共享知识的独立群体。前者拥有丰富的领域知识和经验,但通常对数据科学知之甚少。后者配备了多样化的数据科学技术,但缺乏领域知识。此外,领域知识可能过于复杂,无法明确指定,因此无法被智能算法精确建模。解决这个问题有两种方法。
首先,数据科学家需要通过与领域专家沟通或学习领域内已发表的文献来获得一定程度的领域知识。与领域专家合作时,数据科学家需要确定哪些关键问题(在领域内)对于任务的完成至关重要,并且可以通过数据科学来解决。数据科学家应该了解可能导致问题的因素,并选择相应的数据集来解决问题。他们需要理解领域内已提出的方法的原理,利用良好的洞察力弥补这些方法的不足。
其次,设计一些允许领域专家与数据科学家创建的智能技术交互的视觉数据分析工具是更好的选择。这是一种将机器智能和人类智能结合的方式,也是将领域知识与现代科学整合的方法。例如,使用智能技术,数据科学家可以根据一些简单的标准或初步设置生成一些初步结果。然后将这些结果呈现给领域专家,他们根据自己的领域知识对结果进行细化。细化可能包括从结果中删除一些不可读的候选数据,或者调整一些有意义的参数。有了经过细化的结果,智能技术继续生成另一轮结果,并从领域专家那里获得反馈,直到得到满意的结果。通过这种交互,领域知识和人类智能被整合到由数据科学驱动的智能技术中。有了这样的交互式视觉数据分析工具,领域专家更有可能为城市计算项目贡献更多的知识。
1.4.4.2 系统集成
理想情况下,我们希望根据图1.12所示的框架,为一个领域应用根本性地构建一个城市计算系统。然而,在现实中,许多领域应用可能已经拥有自己的系统,这些系统接收传感器数据并为应用生成决策。领域专家可能希望在完全切换之前先测试新的城市计算系统,这种情况下存在两个挑战。
首先,几乎不可能将城市计算系统的关键组件(如数据分析模型)部署到现有的领域系统中,因为这些组件可能需要根据最近的数据进行更新(即重建)。训练过程并不完全自动化,需要数据科学家参与参数调整和可视化过程。例如,可能每几个月重新训练一次空气质量预测模型,因为城市的交通和天气条件在几个月内可能会发生显著变化。然而,对于大多数领域专家来说,重新训练机器学习模型超出了他们的能力范围。
简单地为每个现有的领域系统分配一名数据科学家就有可能解决这个问题,但这又引起了另一个担忧。鉴于数据科学家的数量远远少于需要数据科学的领域应用数量,处理更多的领域请求时将会非常费力。将关键组件紧密集成到现有的领域系统中增加了数据科学家的工作量。例如,除了第一个挑战中提到的领域知识外,他们还需要了解特定领域系统是如何工作的。此外,他们还需要维护部署在不同领域系统中的多个类似组件。
第二个挑战是,为了防止数据暴露给公众,这些系统有时是基于私有云构建的。因此,城市计算系统可能无法完全访问来自领域系统的数据。
为了应对这些挑战,图1.12提出了一个可能的松散集成策略。在这个策略中,现有的领域系统继续接收原始数据。然后,如果存在数据安全问题,它将提供处理过的数据(例如,从原始数据中提取的特征)给城市计算系统。由于特征提取函数不是动态的,并且不涉及数据科学家,因此可以很容易地部署到现有的领域系统中。数据科学家在城市计算系统方面工作,在必要时训练新模型(无须了解领域系统如何工作)。这些在城市计算系统中运行的模型以来自领域系统的数据为输入,持续生成结果(例如,交通预测)。然后,城市计算系统通过云API将结果作为服务提供给领域系统。基于城市计算系统的结果,领域系统可以推导出最终的决策来操作领域应用。同样的API集可以提供给许多其他需要给定城市的交通预测数据的领域系统。因此,一个模型可以服务于许多领域应用,一个数据科学家可以处理许多类似请求。

图1.12 城市计算服务系统集成策略
1.4.4.3 培训数据科学家
尽管数据科学家在许多城市计算项目中扮演着至关重要的角色,但数据科学家的数量非常有限,因为数据科学是一个新兴领域。此外,培训一名数据科学家是非常具有挑战性的,比培训一名数据分析师困难得多。表1.2展示了数据分析师和数据科学家之间的区别。
表1.2 数据分析师和数据科学家之间的比较

总的来说,给定数据集,数据分析师可以运用现有的数据分析工具来解决一个表述明确的(数据挖掘或机器学习)问题,并生成具有预定义架构的结果。例如,为了确定应该批准还是拒绝信用卡申请,数据分析师可以使用以前申请人的表格和还款历史来训练一个二分类模型(例如,决策树),可以从申请人的表格中提取一组特征,如年龄、工作和收入。根据信用卡发放后申请人的还款历史,可以得出相应的标签(Y或N)。如果还款始终按时,则标签设置为Y,否则为N。一旦模型被训练好,它就可以根据新表格中的特征预测新申请的标签。如果标签为Y,则批准申请,否则拒绝。简而言之,这是一个表述明确的二分类问题,有给定数据集(即申请人以前的表格和还款历史)和预定义结果(即拒绝或批准)。
相比之下,数据科学家可能面临的问题包括:环境中有百分之多少的PM2.5是由车辆产生的?如果把北京市政府搬到城市边远地区,对北京的交通和经济会有什么影响?我们如何减少城市的噪声污染?这类问题并不是表述明确的数据分析问题,因为它们不是简单的聚类、分类、回归或因果关系分析任务。此外,哪些数据集与问题相关是未知的。没有现成的工具可以解决这些问题,而且结果的模式也不能轻易地预定义为一些标签,如Y或N。数据科学家需要做的是确定与问题相关且在实际世界中可用的数据集,为问题设计定制的数据分析模型,并推导出最终结果。
在许多情况下,我们的客户(例如,政府官员)甚至无法提出明确的问题。在这种情况下,数据科学家需要自行识别有价值的问题,这些问题对于领域来说是任务关键型的,并且比传统解决方案更适合数据科学。这比解决一个给定的问题还要难。
更具体地,如图1.13所示,数据科学家应该具备四个方面的技能。

图1.13 数据科学家的定义
• 理解问题 数据科学家在城市计算中需要解决的问题通常来自其他领域,如交通、能源和环境领域,而不是计算机科学。数据科学家不一定需要成为领域专家,但科学家必须理解以下问题:问题是什么?为什么这个问题具有挑战性?可能导致这个问题的因素是什么?传统解决方案是如何解决这个问题的?为什么这些方法不能彻底解决这个问题。这些问题的答案来源于常识、领域内已发表的相关文献以及简单的数据可视化。
例如,为了推断一个地点的空气质量,数据科学家需要知道可能导致空气污染的因素,如工厂和车辆排放、气象条件以及扩散条件。仅知道这些因素,数据科学家就可以选择合适的数据集来表示或指示相应的因素。通过学习现有文献,我们知道空气污染是多个复杂过程的结果,包括局部排放、外部传播和化学反应。一方面,我们知道传统的物理扩散模型无法解决这个问题,因为它们只考虑前两个过程。此外,准确模拟前两个过程也是困难的,因为在现实世界中捕捉所有污染源是不切实际的。另一方面,数据科学家可以从现有方法中学习到需要提取的特征以及设计数据分析模型遵循的原理。
• 深入理解数据 数据科学家除了需要了解数据的格式和属性外,还需要洞察数据背后的信息。例如,出租车的GPS轨迹不仅表示道路上的交通状况,还暗示了人们的通勤模式,因为每条出租车轨迹都包含了乘客的上下车点。大量的上下车点对代表了人们的出发地和目的地以及出发和到达时间,这些提供了关于通勤模式的关键信息。此外,人们的通勤模式还指示了一个区域的功能和经济发展以及自然环境。有了这样的洞察,我们就可以利用一个领域的数据集来解决另一个领域的问题,实现跨领域的数据融合,并应对数据稀疏性的挑战。例如,我们可以结合出租车轨迹(表示交通状况和通勤模式)与其他数据集(如POI和道路网络)来推断一个区域的功能。我们甚至可以使用出租车轨迹作为其中一个输入来评估房地产的潜在价值并对其进行排名。
• 精通不同类型的数据分析模型 数据科学家需要掌握数据科学中的各种模型和算法,包括数据管理、数据挖掘、机器学习和可视化。为了用端到端的解决方案解决实际问题,数据科学家需要系统地整合数据科学不同分支的算法。在某些情况下,解决方案中某一步骤的算法设计取决于其前一步骤和后一步骤的算法。例如,在设计数据管理算法时,我们需要考虑云计算平台的特点以及上层机器学习算法的性质。
• 使用云计算平台 在大数据时代,数据无法再存储在单台机器上。云计算平台正成为许多大数据研究(包括城市计算在内)的常见基础设施。知道如何使用这样的平台对于数据科学家部署他们的解决方案至关重要。云计算平台独特的设计影响了算法的设计。此外,了解如何通过添加新组件或中间层来改进云计算平台会更好。一个增强的云计算平台可以更有效地支持城市计算系统(详情请参见第6章)。