这是关于我们最近参与大流行应对黑客马拉松的两篇文章的第二篇。我们的项目(CoronaRank)是在闭幕式上被选为Spotlight获奖者的230个项目中仅有的5个项目之一。 继续阅读我们的解决方案的技术方面的内容,有关hackathon和我们的产品的更一般的概述,请参见 第一篇文章。
tl; dr
当前的COVID-19大流行正吸引着世界各地科技界的反响。最近的大流行对策黑客马拉松收到了200多份材料。参与者贡献了自己的数据科学技能,以构建软件解决方案,以帮助遏制病毒的传播并减轻其影响。Appsilon的解决方案(CoronaRank)受到Google的PageRank的启发,利用来自Veraset的Apache Parquet格式的地理位置数据进行了马尔可夫链模型的有效暴露风险评估。我们使用R来分析大型地理位置数据库并构建算法。然后,CoronaRank被实现为响应性Shiny Web应用程序。
背景:在大流行期间要平衡隐私与紧急程度
尽管使用智能手机用户位置数据可能会引发焦虑甚至抵触情绪,但大多数用户已经自愿允许访问其位置历史记录,即使他们在初次初始化设备时不记得选择使用此功能也是如此。科技公司声称,这些数据最终仍由用户掌握,而诸如欧洲的GDPR和美国的HIPAA之类的立法可以强制执行这些数据。无论如何,我们的地理位置数据都是存在的-这是我们所生活的世界的事实。问题是:如何才能永久使用这些可用数据?
在Appsilon,我们提出了一种在当前的大流行危机中充分利用这些数据的方法。本月初,我们来到了作为Datavant的大流行应对黑客马拉松与聚光灯的赢家之一 CoronaRank -由谷歌的PageRank,这使得评估暴露的个人风险COVID-19给个体之间的互动程度的启发算法。考虑到该地区人类活动的程度,CoronaRank还提供了有关潜在大流行热点的有价值的信息。
当我们意识到可能无法最有效地告知人们有关如何制定日常决策以最大程度地降低他们的风险以及对他人的风险的信息时,我们开发了概念验证解决方案。对世界不同地区的大流行数据进行描述性分析当然很有用,但许多人无法将它们与这些抽象联系起来–指数曲线无疑会引起恐惧,但当某人仍需要通勤去上班或决定去哪里时,它并没有多大帮助买杂货。我们使用CoronaRank解决了这个问题(以及其他问题)。
我们的解决方案:CoronaRank
我们着手回答以下问题:过去两周内已确诊的COVID-19患者(或无症状携带者)在哪里,从而可能损害哪些位置。这提供了相应的个人暴露风险水平,可以建议加强隔离或潜在的早期干预。它还可以向用户显示是否必须出门避开哪些区域,例如购买杂货。
我们的直觉是使用马尔可夫链模型来建模和传达特定位置(以及在这些位置移动的人员)的风险。我们在功能性概念证明中以仪表板的形式实现了基于马尔可夫链的模型,该仪表板能够可视化给定区域(例如,纽约的社区)或给定个体的风险。我们将各个组成部分设为私有,因此所有个人地理位置数据或相关的流行病学数据都掌握在用户手中。
用CoronaRank生成的纽约热图。较深的(红色)圆圈表示风险较高的位置。
一个高风险个人(CoronaRank为0.9)最近访问了曼哈顿的许多高风险地区。
CoronaRank算法
我们从支持Google搜索的PageRank算法中汲取了CoronaRank的灵感。PageRank为每个网站分配权重,以衡量其在Internet上的相对重要性。每个网页都被视为节点,而超链接则被视为边缘。然后,以递归方式定义特定网站的排名,该排名取决于链接到该网站的其他页面的排名以及这些链接的数量。因此,由具有高PageRank的许多网站链接到的页面本身获得的排名很高。
有向图
有向图
有向图可用于可视化复杂的关系网络。
互联网的WebGraph
互联网的WebGraph
互联网就是这样一种网络,其最终的图形表示称为Webgraph,它描述了万维网页面之间的链接。
Google PageRank
Google PageRank
PageRank利用Webgraph为所有连接的网站提供相对重要性得分。
与通过评估页面在通过超级链接传递给其他页面时如何给予“尊重”的方式构造PageRank一样,CoronaRank提供了个人风险评分,因为人们在通过联系传递给其他页面时可以给予其他“病毒”。
人类互动图
人类互动图
网络互动图
网络互动图
个体类似于Internet上的网页,彼此交互以形成一个复杂的网络。每个人都受他们与他人互动的历史的影响,包括病毒携带者的数量。
行动中的CoronaRank
行动中的CoronaRank
CoronaRank利用了这些网络效应,并为所有个人提供了相对风险评分。
为了简化我们的模型,我们将个人和位置都视为节点(无向二分图)。边缘是人与位置之间的接触点。访问给定位置的次数越多,该位置的风险就越大,访问该位置的个人的个人风险就越高。
同样与PageRank一致,可以通过设置边缘的权重来自定义CoronaRank。当前,权重设置为反映访问给定位置的已诊断人数,但可以轻松对其进行进一步调整。例如,考虑到在该位置花费的时间量。
使用R操作大型地理位置数据集
黑客马拉松跨越了两天。我们不仅需要在时间压力下开发模型,而且还必须在艰难的远程工作环境中开发模型,考虑到当前的大流行情况,这会分散注意力。但是,在我们的商业工作中,我们发现具有出色的时间价值比的R非常适合此类情况,因此我们继续将其用于CoronaRank项目。
在整个黑客马拉松中,我们使用了Veraset提供的位置数据,但是该模型本身与数据无关。Veraset与我们以 Apache Parquet 格式 共享了数据,并使用Snappy对其进行了压缩。我们使用Apache的箭头来加载数据到R,这是非常简单的:
read_full_data <- function(dataDir = "veraset-03-22") {
print(glue("Reading {dataDir}..."))
purrr::keep(dir(dataDir)
purrr::map(~ arrow::read_parquet(paste0(dataDir
dplyr::bind_rows()
}
虽然加载数据并不是很大的挑战,但是数据集的庞大规模使得处理它变得更加困难。纽约一天的未压缩RAW数据(概念证明的重点–网络图表的“网络”)占用了3GB的RAM。使用R处理多个日期的这种大小的数据并非易事。尤其是当我们需要预处理数据,创建图形,计算图形边缘的权重等时。
Apache Arrow允许我们使用以下方法来减少消耗的RAM的大小:
data <- read_parquet("data.parquet"
col_select = dplyr::all_vars() )
这样,我们仅加载有关数据集的元数据信息。不幸的是,我们只是在Appsilon内部技术对话之一的黑客马拉松之后才了解到这一点。Parquet 格式的确使我们能够有效地处理dplyr管道中的文件,而无需将整个数据集加载到工作内存中。
计算和可视化CoronaRank
加载数据后,我们继续计算CoronaRank。初始数据只有3列: timestamp, cid 和 geohash。 Geohash 本质上是将纬度和经度包装为一个值。要生成带有图描述,节点和边的数据框,或者从日志到图,请执行以下步骤:
为每个 cid创建一个节点。
为每个位置创建一个节点(我们将位置划分为网格-实际上,我们仅将纬度和经度四舍五入到某个数字)。
如果有人(cid)在给定位置,请在节点之间创建一条边。
在这一阶段,PageRank和CoronaRank之间的区别变得明显。在PageRank中,边缘是 定向的 (一个页面链接到另一页面)。在CoronaRank中,图形是 无向的 (人在访问位置≡人在访问位置)。
为了进一步说明大流行情况正在迅速变化且图表本身庞大的事实,我们在图表边缘引入了权重。权重指定特定边缘是否有风险。重量越高,边缘越具有感染力。相反,较低的重量表示边缘的传染性较小。
我们利用 从数据 的纽约时报 上的每个县的情况下为我们的初始权数。以较高的权重设置了具有较高案例数(每个县)的位置的边。
我们的解决方案的伪代码:
coronaRank <- function(data) {
edges <- dplyr::select(data
# calculating weights for edges:
risk_profile <- build_ny_counties_risk_profile()
weights_edges <- risk_for_locations(risk_profile
graph <- graph_from_edgelist(as.matrix(edges)
coronarank <- igraph::page_rank(graph
damping = 0.99
tibble( node = names(coronarank$vector)
}
请注意,因为我们假设GSM数据跟踪非常准确,所以我们将阻尼(“传送概率”)设置为一个相对较高的数字。
完整的解决方案可在这里找到: https : //github.com/Appsilon/covid-hackathon(Hackathon条件和时间压力确实导致了功能正常但质量较低的代码)
Google和Apple的联系人跟踪解决方案以及CoronaRank
我们对CoronaRank的实现只是概念证明。自提交解决方案以来,我们很高兴看到Google和Apple宣布了他们的合作,也 将使用联系人跟踪技术来应对这种大流行。
他们的项目 将促进人们在移动设备上使用蓝牙进行有关潜在风险交互的交流。该过程将基于不访问地理位置数据的安全协议,因此将完全匿名且安全。智能手机将仅共享信息,即所有者是否与标记自己已感染该病毒的人接近。关于相遇的其他信息将不会共享。
该解决方案的缺点之一是,并非所有iOS或Android智能手机用户都将订阅该服务,并且某些人可能会提供不正确的信息。
尽管我们的解决方案确实需要使用地理位置数据来解决此问题,但它为用户提供了有关由于过去的相互作用而感染病毒的风险程度的其他信息。将这种方法与Google和Apple的方法相结合,甚至可以通知那些没有该应用程序或不知道自己可能已经被暴露的用户。与在我们的应用程序中一样,这需要将数据隐私和安全措施作为优先事项。
结论
大流行应对黑客马拉松是一次很棒的经历。令人鼓舞的是,来自世界各地的230余篇作品令人鼓舞,这充分说明了技术社区如何认真对待使用其技能实现共同利益的责任。我们相信,这也是展示R快速开发功能产品的强大机会,并希望认识到在整个黑客马拉松中提供资源,数据和支持的所有公司和组织。
我们希望获得资金或与已建立的公共服务机构建立合作伙伴关系,以为公民提供解决方案。
最后,我想认识我的出色队友(包括流行病学家Ewa Knitter )和我们所爱的人,包括我的妻子-如果没有您的支持,我们将无法参与并获胜。我们还想认识到开放源代码社区,该社区已构建了可以快速开发高级软件的工具。特别感谢致力于Apache :: Arrow,igraph,Leaflet,Shiny和sf R软件包的人们。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


雷达卡



京公网安备 11010802022788号







