《复仇者联盟》中的统计语言

机器算法验证 媒体统计
2022-04-04 20:04:24

在漫威电影《复仇者联盟》中有一个场景,布鲁斯·班纳(Bruce Banner)正在寻找一种名为“tesseract”的外星技术,他说他将“粗略设计一个跟踪算法,只是一个基本的聚类识别”。这是一个连贯的说法吗?我是统计学的新手,但我听说过聚类分析和模式识别。集群识别是否用于指代同一事物,它与跟踪算法有什么关系?(还是布鲁斯·班纳撒谎了?)

电影的成绩单

菲尔·库尔森

我们正在扫描地球上所有可无线访问的摄像头。手机、笔记本电脑……如果它连接到卫星,它就是我们的眼睛和耳朵。

娜塔莎(黑寡妇)

那仍然不会及时找到他们。

班纳博士(绿巨人)

你必须缩小你的领域。您可以使用多少台光谱仪?

尼克·弗瑞

那里有多少?

班纳博士(绿巨人)

打电话给你认识的每个实验室。告诉他们把光谱仪放在屋顶上并校准它们的伽马射线。我将粗略制定一个跟踪算法,基本的聚类识别。至少我们可以排除几个地方。你有地方让我工作吗?

有关tesseract 的更多信息(例如它发出伽马辐射)

3个回答

要“识别”某些东西,它必须首先存在,因此您将使用有监督的算法,而聚类是一类无监督的机器学习方法。聚类算法根据相似性进行分组,而不是识别已知模式。所以我想说这听起来像是另一个例子,电影中科学较少,虚构较多,并且随机组合使用不相关的极客术语以听起来科学......

正在研究检测到的伽马光子簇,以寻找潜在的伽马射线源

立方体或 tesseract 正在发射伽马辐射为了找到伽马辐射源(并因此找到 tesseract 的潜在位置),可以使用算法来检测检测到的伽马辐射位置中的簇。

请注意,观察到的光子的估计位置/方向并不那么准确,存在误差,因此统计数据发挥了作用。每当检测到的光子彼此非常接近时,这可能表明它们与辐射伽马光子的源有关。

寻找伽马射线簇是一种确定检测到的伽马射线是背景还是与其他检测到的伽马射线一起属于某个潜在的共同来源的方法。

天文学家一直在使用最小生成树算法来寻找(潜在地)相关的检测到的伽马射线簇(例如参见:Campana 2008 )。


这是如何工作的示例图像

可以使用 R 统计软件生成其工作原理的示例图像(见下文):

它与作品中的图像相似(但我找不到具有明确免费许可的图像):

  • 坎帕纳,R.,等人。“稀疏光子图像中γ射线源检测的最小生成树算法:簇参数和选择策略。” 天体物理学和空间科学 347.1 (2013): 169-182。 链接到 axiv 论文 https://arxiv.org/abs/1305.2025

  • 坎帕纳、里卡多等人。“用于 γ 射线图像中源检测的最小生成树算法。” 皇家天文学会月报 383.3 (2008): 1166-1174。期刊链接

示例模拟

library(emstreeR)

## 2D artifical data
set.seed(1)
n <- 20
n2 <- 400-n*3
## c1 to c3 are artificial clusters
## c4 is background noise
c1 <- data.frame(y = rnorm(n, 45, sd = 1),
                 x = rnorm(n, 130, sd = 1))
c2 <- data.frame(y = rnorm(n, 50, sd = 1),
                 x = rnorm(n, 125, sd = 1))
c3 <- data.frame(y = rnorm(n, 55, sd = 1),
                 x = rnorm(n, 135, sd = 1))
c4 <- data.frame(y = runif(n2, 40,60),
                 x = runif(n2, 120,150))
d <- rbind(c1, c2, c3, c4)

## MST:
out <- ComputeMST(d)

## 2D plot of points:
plot(-100,-100,xlim = c(120,150), ylim = c(40,60), xlab="latitude", ylab="longitude")
points(out$x,out$y,
       pch = 21, col = 1, bg = 1, cex=0.4)
title("approximate spatial distribution \n of detected signals", cex.main=1)

plot(-100,-100,xlim = c(120,150), ylim = c(40,60), xlab="latitude", ylab="longitude")
points(out$x,out$y,
       pch = 21, col = 1, bg = 1, cex=0.4)
title("red  lines: small edges \n green dots: connected with n >= 10", cex.main = 1)

# draw clusters seperately with large size

library(igraph)
edgevector <- as.numeric(matrix(cbind(out$from[edgeselect],out$to[edgeselect]),2,byrow=TRUE))
graph <- make_graph(edgevector, directed = FALSE)

groepen <- groups(components(graph))
sizes <- which(components(graph)$csize>=10)

for (s in sizes) {
  coordinates <- unlist(groepen[s])
  points(out$x[coordinates],
         out$y[coordinates],col=3)
}


# draw the tree and use mean distance as boundaries between clusters
boundary = mean(out$distance)
edgeselect = out$distance<boundary
colors = rgb(0.75+edgeselect*0.25,
             0.75-edgeselect*0.75,
             0.75-edgeselect*0.75)
for (i in 1:400) {
  lines(c(out$x[out$from[i]],out$x[out$to[i]]),
        c(out$y[out$from[i]],out$y[out$to[i]]), 
        col = colors[i])
}

这太有趣了。我在重看复仇者联盟时听到班纳这么说。过去一年我一直在学习 ML,所以我想知道是否有其他人掌握了这一点。

聚类分析是最小化数据点之间的距离和最大化质心(聚类)的过程。正如蒂姆建议的那样,这是无监督学习,因此没有“目标/已知变量”。

要回答你的问题,我认为这确实是一个连贯的事情。我假设可以创建一个聚类算法来分析某些变量,包括这些实验室随着时间的推移接收到的伽马辐射。我还假设读数可能会波动,即使立方体不在它附近。通过多个实验室的读数,集群算法可以将在特定时间读数升高的实验室聚集在一起。跟踪并查看 tessaract 的运动。至少,缩小对它曾经在哪里或现在在哪里的搜索范围。我假设这将是算法的一部分。之后可能会搜索 Fury 在该地区提到的手机/笔记本电脑等,或该地区的其他异常情况(由于 loki 导致的疯狂死亡、丢失/被盗的物品/关于 loki 寻找的材料的报告、反应堆的位置等.)。