【译文】城市相似性的可视化:美国和冰岛的相似之处

本文为数盟原创译文,欢迎转载,注明出处“数盟社区”即可

作者:Karim Heredia

这篇博文揭示了如何找到城市相似性的另一种方法。认真阅读之后,你就会明白为什么我会觉得麦迪逊(美国城市)和雷克雅未克(冰岛首都)竟会是两个非常相似的城市了。

Teleport Cities这个应用让你能够对世界上任何一个有趣的城市进行研究,并且你可以使用它所提供的一个复杂而又精细的评分系统来对这些城市进行比较和对比。

举个栗子,当想要研究圣地亚哥(智利首都)时,以下就是你将会在Teleport Cities应用中看到的页面:

圣地亚哥的Teleport评分

每一项评分的都是由数据科学家们经过周详考虑而得出的结论,这些细致全面的评分能够帮助我们对Teleport Cities应用中所包含的134个城市进行排名。而且,这些评分并不是绝对的,而是相对于应用中其他的城市。

那么这个时候问题就来了,我们怎么来比较完全不同的两个城市呢?在Teleport Cities中,我们主要用两种办法解决这个问题。第一,摆在一起,让你逐项对比两个城市。举例说明,如果想要对比圣地亚哥和奥斯陆(挪威首都),就会像这样:

圣地亚哥和奥斯陆的各项对比

另一种方法则是在登录,修改个人设置后对所有城市进行评分和排名。我们能够对每个城市进行评分,并且以排名先后的顺序进行展示。这些就是你眼中能够看到的世界:

Teleport Cities中城市排行榜(部分)

但是,有个小小的问题,就是各项评分总和的对比。如果两个城市的总评分都为75分,就能够表示它们很相似吗?我可以举一个很简单的反例来说明,单纯的一个评分是不足以完整的表现各城市的相似性的。假如我们只对两个项目进行评分:通勤和安全。A城市通勤方面得50分而安全方面的25分,B城市通勤方面得25分而安全方面的50分。总分都是75,但很明显两个城市并不那么相似。根据我所给出的例子,你可以一举一反三到我们实际所有的评分项中来(对所有公共用户,我们提供15个评分项目,注册用户则提供20项)。

相似性的度量

我们很幸运的拥有很多数学计算方法能够预估两个数据集之间的距离。其中最知名的一种方法就是欧式距离(Euclidean Distance)。你很有可能就使用过这种方法,因为它最简单的变形式被用来计算三角形的斜边长度(还记得勾股定理吗?)。

两点间的欧式距离能够在任何维度下进行计算。我们可以将Teleport Cities中每一个评分项目当做一个维度。在公共用户的视角下,我们可以有15个单一维度。公式非常简单:计算任意两个维度的差的平方,然后在每一个项目上重复这一步骤,把所有的结果相加,最后取总和的平方根。

这样仅仅只给出了一个距离,一个表示两个不同城市之间关系的数字:他们之间是近还是远。最重要的是,现在你能够很清楚的看到,在集合中,任意一个城市与其他城市之间的距离,哪个离它最近,哪个最远。

在二维图表测绘距离

人类能够很轻易地在任意平面上表现二维(或者三维,如果能运用一点点想象力)。但是能够理解、领会三个维度以上,对大多数人来说几乎不可能。这意味着,如果我们想要将任意两城市之间的关系可视化,最好是运用二维的表现形式。

其实有多种减少维度的方法(被称为多维尺度变换或者MDS),让我们可以将15个城市的维度用二维的形式来表现。其中我个人最喜欢的,也在长期应用中经受住了时间的考验的方法被称为Sammon’s Mapping。这种方法是1969年由John W. Sammon发明的。

总的来说,这个算法的作用是:首先取一组随机或预设值的二维数据点,然后在所有的数据点(也就是我们的所有城市)上进行迭代处理。每一次这个算法作出处理(,原本十五维的数据集合中数据点之间的距离和二维数据集合中数据点之间的距离的误差就会减少。当条件满足时,算法运算停止,所得到的结果就能够很轻易地在任意平面上表现出来。数轴的X和Y轴在这些图表中并没有什么意义,但是数据点之间的距离却意义非凡。

以下是我们运用该算法将原本134个城市,15维度的数据以二维图表的形式表现出来的结果。你可以将图表放大,在高分辨率下查看。两个在图表中距离很近的城市,在他们各项目的评分中很有可能非常相似,反之亦然。

下面的部分图表是交互性的。你可以通过点击图像左下角的放大镜图标来放大图像,十字图标来移动图像或者小房子图标来重置图像。

将Sammon的测绘方法运用到所有134个城市上

现在,让我们放大图像,用两个图片上距离很近,但是却感觉相差很大的城市作为例子,对结果进行验证:

Sammon测绘图中的麦迪逊与雷克雅末克

如果没错,麦迪逊和雷克雅末克的项目评分应该很相似。我们把Teleport Cities中的对比图拿出来验证一下:

麦迪逊与雷克雅末克的对比

虽然项目评分不尽相同,但是两个城市的高分项目都基本一致。当然,结果不尽相同也很自然,不然Sammon的测绘图会将两个城市放在同一个位置上。但谁能够想到威斯康辛和冰岛竟会有相似的地方呢?

用沃罗诺伊镶嵌法来完善Sammon的测绘图

如上所示,Sammon的测绘图很好的将城市的相似性在二维图像中表现了出来。但是每个城市的得分却很难从图中直接看出来。我尝试将城市的得分用点的大小来表现出来,但是我很确定并没有多少人在意这件事情。

沃罗诺伊图是以George Voronoy的名字来命名的。19世纪末,20世纪初,George Voronoy对该镶嵌法的数学基础部分进行研究。然而,这些图像甚至比他自己的研究更古老,甚至还被笛卡尔在1644年运用过。这种方法的原理就是用多边形(或称为cell)围绕着数据点,然后使用用基于距离的启发式运算。

每一个多边形(cell)的颜色都是根据这个城市的分数来拟定的。红色表示低分而绿色就表示高分。为了跟明显的区分每个cell的不同,评分都经过标准化处理来让绿色代表最高分,而红色代表最低。

结论图的构造和之前的图像是一样的:

Teleport City运用Sammon测绘图和沃罗诺伊图来表现相似度

从上图你可以看出,相似的城市也有明显的分数差异。同样,我们一麦迪逊和雷克雅末克为例,差距是显而易见的。麦迪逊似乎比雷克雅末克略高一筹,但它们俩都比密尔沃基的分数高:

用Sammon测绘图和沃罗诺伊图来表现麦迪逊和雷克雅末克

城市相似性的自定义可视化

上图中的分数都是由Teleport Cities以默认的设置打出的。即使我们经常更新我们的数据,默认分数基本上是稳定不变的。举个栗子来讲,生活成本很高的城市是不会在几天内就能够降低花费的。

但是很有意思的地方在于,当用户根据自己的喜好更改个人设置后,就会得到一个属于自己的个性化的城市评分。任何人都能够通过注册登录个人账户来设置自己的偏好,就像下图这样:

Teleport Cities中个人偏好设置的例子

改变几个偏好的设置,系统所给出的分数就完全按照这个人所设置的偏好来决定了。并且,城市的评分分数也可能因为个人偏好设置的不同而变化。这样的话,所给出的相似性地图就变成真正的个人定制版了。下面,我收集了三个例图,都是由偏好不同的模拟用户通过设置不同的偏好设定而得出的。

偏好设置一(例一):

  • 气候:与丹佛(美国城市)相似
  • 因特网接入:非常重要
  • 文娱:电影院,喜剧俱乐部,音乐会

例一(略)

个人偏好设置二(例二):

  • 低犯罪率:非常重要
  • 医疗健康:尽可能优质
  • 教育:孩子需入学

例二(略)

个人偏好设置三(例三):

  • 创业的氛围:非常重要
  • 风投的生态圈:比较重要
  • 旅游的连通性:中等
  • 创业简易:非常重要
  • 低企业税:非常重要
  • 高速网络:非常重要

例三(略)

注:文中省略了部分交互图片,大家可以点击原文链接http://teleport.org/2016/02/visualizing-city-similarity/查看。

时间: 2024-10-13 11:40:13

【译文】城市相似性的可视化:美国和冰岛的相似之处的相关文章

利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化

前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将其进行可视化,具体的教程如下. 爬取微信好友信息,不得不提及这个itchat库,简直太神奇了,通过它访问微信好友基本信息可谓如鱼得水.下面的代码是获取微信好友的省位信息: 程序运行之后,需要扫描进行授权登录,之后在Pycharm的控制台上会出现如下图的红色提示,这些红色的字体并不是我们通常遇到的Py

R语言使用shinydashboard可视化美国投票记录

library(hrbrthemes) 关于数据的一个技巧; 原始数据只有选定代表的分数(自然).这意味着,在任何一年中,都会有几个州(每个党约8-10人)没有民主党或共和党代表.因为这些是行缺失而不是NA,如果你按原样绘制它们,那些状态将不会显示在图中.如果只有一个tidyverse 函数可以解决像这样的常见数据问题...... 交互式图表与Plotly 与情节相关的主要原因是它的内置交互性.我希望用户只是将鼠标悬停在积分上,然后看到一段描述上一年转变的文字.结果很简单,只是有点难看paste

为什么说城市居民更关心共享骑行?

近年来,对"共享经济"的讨论非常多,也有不少地区展开了"共享经济"相关行业的试点和探索,"共享汽车"并不是什么新概念,之前就有比如"共享单车".手机APP预订车位等.社会高速发展的今天,或许下面的这句话更符合现代人们的想法,"给我一部手机,我将带你浪遍整个世界." 共享汽车受欢迎的理由显而易见,一是方便:下单开车.停车走人都可以在手机上一键完成;二是便宜,目前共享汽车费用比打车.租车都要便宜很多.但不可否认

世界主要城市名称中英文对照

p { margin-bottom: 0.1in; direction: ltr; color: #000000; line-height: 120%; text-align: justify; widows: 0; orphans: 0 } p.western { font-family: "Times New Roman", serif; font-size: 10pt } p.cjk { font-family: "宋体"; font-size: 10pt }

美国政府应该如何为自动驾驶汽车让路

自动驾驶汽车预示着巨大的社会效益.以美国为例,如果自动驾驶汽车得到普及,每年即可避免超过3万人因交通事故死亡,节约多达40%的出行时间成本,省下因上下班拥堵而浪费的800亿小时,并减少40%的燃油消耗.现在,无人驾驶汽车已经不再是能否实现的问题,而是何时能够走进大众生活的问题. 一些人提出,自动驾驶最终应该让方向盘消失,驾驶完全交给车辆智能系统,实现真正意义上的无人驾驶.美国政府认为,自动驾驶汽车可使交通运输变得"更安全.更清洁.更易获得.更高效".最新颁布的政策文件侧重于自动驾驶汽车

大数据将成为智慧城市加快发展的引擎

智慧城市是新一代信息技术支撑.知识社会下一代创新环境下的城市形态.从智慧城市概念来讲,最大限度的开发整合.融合和利用各类城市资源,是整个智慧城市建设非常重要的核心.智慧城市的根本任务是实现城市范围内.不同部门.不同行业.不同群体,不同系统之间的数据融合.业务协同.因此智慧城市是以数据为王的游戏,数据是生成智慧的基础.数据也将推动智慧城市的发展,成为智慧城市发展的新引擎. 大数据对智慧城市的四大作用 城市发展应该有三大功能即承载功能.经济功能和社会功能,而任何功能的实现都需要掌握最准确和最完整的的

python 学习笔记 12 -- 写一个脚本获取城市天气信息

最近在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么能够显示后最重要的就是显示什么的问题了.最容易想到的就是显示时间啊,CPU利用率啊,IP地址之类的.那么我觉得呢,如果能够显示当前时间.温度也是甚好的,作为一个桌面小时钟还是很精致的. 1. 目前有哪些工具 目前比较好用的应该是 weather-util, 之前我获取天气信息一般都是通过它. 使用起来也很简单: (1) Debian/Ubuntu 用户使用 sudo apt-get install weather-util 安装

各种排序算法的可视化展现

前言 排序算法(Sorting algorithm)是一种能将一串数据依照特定排序方式的最基本最常用的算法,常见的有冒泡排序.快速排序.插入排序.二叉树排序等等,下面这个表格总结了各种排序算法的复杂度与稳定性: 不同的场景对排序算法的选择有着不同的要求,对每种排序算法的深入理解能帮助我们更好地选择合适的算法.关于排序算法的理论书籍或博客已经非常的多,下面列举一些可视化的排序展示,换种方式看算法,以一种更直观的方式理解排序算法的工作原理. 一.SORTING SORTING 支持同时查看对比多个排

利用Python网络爬虫抓取微信好友的签名及其可视化展示

前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化,感兴趣的小伙伴可以点击进去看看详情,内容方面不是很难,即使你是小白,也可以通过代码进行实现抓取.今天,小编继续给大家分享如何利用Python网络爬虫抓取微信好友的签名及其可视化展示,具体的教程如下所示. 1.代码实现还是基于itchat库,关于这个神奇的库,在之前的文章中