TF 2.x 中的 Coursera DL 专业化课程
Coursera 课程转换为 TF 2.x
TF 2.x 是新的规范!
deeplearning.ai (可在 Coursera 上获得)的深度学习专业化非常出色,我会向任何对这一领域感兴趣的人强烈推荐它。在本课程中,首先学习如何在没有任何库的情况下从头开始编写神经网络代码,然后继续学习 TensorFlow 库的高级功能。不幸的是(在撰写本文时)所有的编码练习都是在 TF < 2.0 中实现的。在不久的将来,TF 2+将成为标准,TF 2.x 与 TF1 有很大的不同。大多数练习都需要完全重写代码。
由于本课程的编程练习非常出色,我决定将练习版本 2.x 兼容。我在下面(链接)维护练习转换后的 TF2.x 代码。这篇文章假设读者对 TF 有些了解。
在这篇博文中,我将回顾将 TF1.x 代码(尤其是本课程中的代码)转换成 TF2+代码的基础知识。我已经在 TF1=( 链接)和 TF2 =( 链接)的第 7 周练习中实现了深度神经网络。下面我将解释两种代码的一些关键区别。其他练习的 TF2+版本请访问我的 Github repo : ( 链接)
1) Session()消失=进入急切执行
让我们首先看看下面的简单代码片段,它计算 TF 1.x 中的平方误差损失,
TF2+摆脱了会话和图形构建。在 TF 1.x 中,你通常会定义变量之间的关系(创建一个图),然后一个会话执行路径。***session . run()***以输入为参数运行路径,并输出输出。在 TF2+中,默认情况下启用快速执行。这意味着变量是自动和并发执行/计算的,而不需要会话/图形。
转换后的 TF 2+代码为:
区别:不需要创建会话对象或者TF . GLO abal _ variable _ initializer()**。解释器一点击 loss= 命令,就执行。
2)急切执行(另一个例子)
这里我将使用 TF1 和 TF2+实现两个张量(标量)的乘法。
TF 1.x 中的乘法
c 在通过 tf.session() 运行时,只会输出一个张量(20)。在 TF2+中,缺省情况下启用急切执行,下面的代码将自动输出一个张量(20)。
TF 2.x 中的乘法
3)占位符不见了
占位符是 ehh…TF <2. They are basically a container for input variables. These have been removed in TF2+. Let us first look at this example of a function that calculates the sigmoid of input variables/tensor. Here x is a placeholder variable that stores the argument of the function and then sigmoid is acted on it.
Placeholder in TF 1.x
In TF2+ placeholders are not required and sigmoid can be directly applied to the input variable.
Working without placeholder in TF2.x
4)中的井占位变量执行梯度下降
如果使用 tf.keras 建立模型,可以直接使用 tf.train() 用预定义的损失函数训练你的数据集。然而,要定制任何东西,你必须从头开始实现梯度下降。让我们首先回顾 TF < 2 中的梯度下降。
TF1.x 中的梯度下降
撇开所有的 。session() 业务梯度下降通过TF . train . adamoptimizer(learning _ rate = learning _ rate)实现。 最小化(成本)功能。 最小化 功能尝试最小化自变量,并相应地调整参数。在 TF2+最小化功能不存在,需要在低得多的水平上实现梯度下降。这给了整个过程更多的控制。
TF2.x 中的梯度下降
我们首先定义一个函数(【get _ grad())来计算参数的梯度。此功能使用的 tf。GradientTape() 用于梯度的自动微分和计算。关于它的更多细节可以在:链接找到。我们使用函数应用渐变:optimizer . apply _ gradients(zip(grads,list(parameters . values())))。这基本上是对 的啰嗦替换。最小化功能。
5)其他细微变化
除了下面这些,还有很多小的改变,比如重新安排库。让我列举一些简单的例子
a)所有预定义的图层都被移动到:
***TF . keras . layers . ****
b)一些数学功能移入子类:
***TF . math . ****
c)更多信息请访问:https://www.tensorflow.org/guide/migrate#top_of_page
底线
本文的目的是提供 TF <2 and TF2+ especially focusing on Coursera Deep Learning Specialization. I have converted all the exercises of the specialization into TF2+ code and have uploaded them on ( link 之间代码差异的快速总结。我希望这个博客是有用的
参考文献
- 关于移民的 TF 文件:【https://www.tensorflow.org/guide/migrate#top_of_page】
- TF2 DL 专精:
https://drive . Google . com/drive/folders/1a 9 a9 o 04 odfyjgslybklfqr 58 gduooeyq?usp =共享
Coursera 的 GCP 专业证书数据工程:更好的内容还是更好的营销?
来自最近认证的数据学生的诚实评论
(注:所有观点均为本人)
介绍
我最近参加并完成了由 GCP 在 Coursera 上提供的谷歌云专业证书 组成的 数据工程的 5 门主要课程(链接到证书这里
我一直想在 2020 年 Covid 疫情期间提升云技术技能,因此当我发现 GCP 在著名的电子学习平台上发布了一个大规模目录时,我抓住了参加这一系列课程的机会。
来源:谷歌云
总体体验
参加证书考试绝对是一次积极的经历,让我对 GCP 数据栈的一个很好的部分有了坚实的概念理解,并允许我亲自参与个人项目,我写了一篇相关的文章( 如何使用 API 和 Google Cloud 用 Python 自动收集金融数据)。
尽管如此,我觉得整个课程和课程结构的真正目的更多的是围绕向潜在的企业客户推销 GCP 套件,而不是培养学生对该工具及其潜在应用的深入理解。
我认为这对于一个组织来说是非常好的,事实上有许多软件公司利用他们的培训项目来推动采用和公司合作。我确实参加了 AWS、Tableau 和 Alteryx 等公司的课程,列举了分析领域一些非常著名的提供商,这些公司自然都在努力增加其工具的市场份额,并将培训计划和认证工作作为实现这一目标的额外途径。
然而,对于 GCP Coursera 的目录,我感到有点吃惊,因为我经常看到这种总体营销努力从后门偷偷溜进来,夺走了一门原本令人惊叹的课程的深度、内容和学习重点。
当一位同事在谷歌云平台专业化 ( 也是 GCP Coursera 目录的一部分)上使用 TensorFlow 进行 机器学习时,他对他所覆盖的课程表达了类似的抱怨,这进一步证实了这一观点。
需要强调的一个重要方面是,大多数学生对在线课程的质量和享受程度的看法主要取决于两个因素:
- 学生在参加课程之前在该科目上的技术能力水平
- 学生选修这门课程的内在动机
考虑到这一点,我也有可能不适合最适合利用学习资源并从课程中获得最大程度的知识和乐趣的学生。从这个意义上来说,我并不是一个成功的 AWS 数据工程师,我并没有试图将 GCP 加入到我可以合作的云提供商的名单中,因此,也许我没有掩盖许多其他入门级别的课程和实验,在这些课程和实验中,我发现上面提到的营销工作有点太过侵扰。
为了让你自己判断,我在下面总结了如果你决定在 Coursera 上参加 GCP 的数据工程专业证书考试将会发生什么,以使你能够决定是否继续进行时间和投资(39/月订阅直到完成-价格可能会根据你所在的位置而有所不同)
结构和课程主题
GCP 数据工程专业证书分为 6 门课程,为期 2 周(指示性期限)。课程列表如下:
作为先决条件,谷歌的团队建议拥有*“大约一(1)年以下一项或多项经验:*
- SQL 等通用查询语言
- 提取、转换、加载活动
- 数据建模
- 机器学习和/或统计
- 用 Python 编程
事后看来,可以公平地说,即使你对上述所有要点有了较高的认识,你也应该能够跟上并完成整个课程,因为你不会进行深入的机器学习或建模。了解这些概念确实有助于更好地理解 GCP 如何使您能够使用其堆栈和服务来服务于您的项目目的,并将其服务与市场上其他主要的云提供商进行比较。
总的来说,专业证书在 Coursera 上被归类为中级系列,我想大概就在这里。
赞成者
- 品牌名称和职业机会
在 GCP 完成认证有明显的职业好处,可以打开许多项目和就业机会。在咨询行业,随着谷歌在与 AWS 和微软 Azure 日益激烈的云市场份额争夺战中推进其在该平台的投资,客户项目越来越多地需要 GCP 技能熟练的从业者。
甚至在某些情况下,你需要获得 GCP 认证才能参与某个项目(如果你在该领域活跃的大型咨询公司工作,并且该公司可能已经制定了这样的资源政策)。在这种情况下,如果你热衷于参与其中,在谷歌云中获得认证真的可以让你与众不同。
展示您的证书表明您已经对学习该平台产生了浓厚的兴趣,以便作为云从业者迈出第一步,他们可以通过为各种公司和项目构建数据管道来增加价值。
2。动手实验
通过 Coursera 分发的这一证书和其他 GCP 证书有一个很大的好处,即通过让学生积极参与实验任务,让你学习平台的架构、用户界面和组件,学生可以通过Qwiki labs平台参与实验任务。
所有课程主题都包含在实验中,这给了你一个熟悉产品并开始构建解决方案的机会。
学习团队在为您提供有效完成实验所需的所有信息和资源方面做得很好,对我来说,这是证书最令人兴奋的方面,因为它在将理论和实践结合在一起方面使体验变得非常互动和有凝聚力。
3。足够的知识,通过 GCP 的免费等级账户开始个人项目
如果实验室仍然不能让你满意,你想直接构建自己的解决方案,那么你可以通过注册一个 GCP 免费层帐户(你可以使用你现有的谷歌帐户来注册)来立即开始,并利用大量免费资源来立即玩。
在这方面,数据工程专业证书是一个很好的方法,可以向学生灌输足够的知识,让他们直接在 GCP 控制台中从事自己的项目。
你甚至可以中途停下来,自己开发一些东西,然后回到 Coursera 的资源上,继续你的学习,推进你的个人项目。
4。GCP 专业数据工程师考试优秀备考
如果你真的想重新学习技能并获得谷歌云专业认证,那么 Coursera 的证书是成功通过谷歌云专业数据工程师考试的绝佳准备资源。该系列的课程 6 实际上完全致力于给你成功通过考试的提示。
这项考试是公认的作为数据工程师熟练使用 GCP 控制台的官方行业标准,肯定比简单地参加 Coursera 上的专业证书更能促进你的职业前景。
坏处
- 缺乏深度
这些课程很好地向你概述了在 GCP 成为一名有效的数据工程师所需的主要工具,但我更希望看到一些更深入的探讨和某些数据工程主题的更强的概念化。
相反,课程的一些相关部分从 GCP 工具跳到 GCP 工具,没有必要详细查看每一个工具以及它们如何在一个潜在的项目中组合在一起。
因此,肯定需要通过其他资源整合一些相关知识,因为你将从这个专业证书中对工具 X 和工具 Y 的功能有一个很好的了解,但很可能必须开始自己构建,以建立一个更好的不同部分如何适应 GCP 控制台难题的理论意识。
2。不一致的课程
作为一名数据工程证书,我原本希望材料只关注数据摄取、处理、自动化和流程等主题,而不是偶尔与处理机器学习或数据可视化的 GCP 工具(如 AutoML 和 Data Studio)一起展示。
如果我想学习这些,我会选择他们目录中提供的其他专业证书。相反,有一整个课程(课程 5)致力于不太相关的主题,以及更多的视频分钟,旨在展示谷歌在控制台中的人工智能能力。
总的来说,我真的看不出一个合适的,最重要的是,浏览那些与未来的数据工程师不太相关的材料是有好处的,这些材料从最重要的概念中带走了更多的深度。
3。偶尔不要脸的自我推销
如果你一直读到现在,你可能会发现这是对我来说最有问题的方面;偶然发现名为“为什么客户重视数据流”的讲座确实暴露了一个事实,即有些讲座并不是真正针对学生的,而是将观众视为向其销售云解决方案的潜在客户。
这一点与课程缺乏深度有很好的联系,因为重点从深入学习数据工程等转移到展示 GCP 的工具伞和它承诺为客户解决的用例,而不是只关注用户的纯学习体验。
定论
总而言之,如果您符合以下条件,我仍然建议您参加本课程:
- 一位有成就的云开发人员/数据工程师,有兴趣了解 GCP 数据工程堆栈能为您做些什么
- 希望获得认证并准备 GCP 数据工程师专业考试
- 从概念角度而非技术角度快速了解 GCP 数据堆栈
如果您符合以下条件,我仍然建议您参加本课程:
- 完成 Coursera 的专业证书后,希望成为一名数据工程师或 GCP 专家
- 寻找对 GCP 的深入了解适用于所有与数据工程相关的事情:从你自己的项目开始,深入研究 GCP 非常详细的文档可能会证明对你更有效。
访问我的免费数据科学资源清单 这里
[## 通过我的推荐链接加入 Medium-Edoardo Romani
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
edo-romani1.medium.com](https://edo-romani1.medium.com/membership)
恶意软件分类中的协变量转移
快速变化环境中的分类器需要超越泛化
在恶意软件分类中忽略 PE 文件的大部分就像在人脸识别中忽略主要的面部特征一样:两者都可能导致性能问题,即使模型的训练误差很小。但是,对于 PE 文件,性能差距可能在测试数据集和真实数据集之间,而不是在训练和测试数据集之间。
介绍
数据生成分布中的协变量移动降低了泛化误差作为模型性能度量的有用性。通过解包定义,前面的句子翻译成“我们从其采样训练集的文件分布的高精度(不包括训练集本身)并不总是意味着其他重要分布的高精度(即使样本与其标签之间的真实关系没有改变)。”如果一个水果分类器的训练集中只有一个香蕉的例子,那么该分类器在仅包含 10,000 个变异香蕉的样本集上可能表现不佳,即使它在从与其训练集相同的分布中采样的一个保持测试集上表现非常好(在该测试集中,香蕉可能很稀少)。这种性能差距可能是一个问题,因为用一个伸出的测试集来逼近泛化误差是衡量模型性能的标准方法。
在实际的机器学习中,快速变化的输入分布是一个共同的挑战
这一概念对于恶意软件分类至关重要,许多论文在采样偏差的背景下讨论了这一概念,其中用于训练的样本不是从与用于测试的样本相同的分布中随机采样的。有趣的是,我曾与许多恶意软件分析师合作过,包括那些几乎没有 ML 经验的分析师,他们的直觉是,具有良好泛化能力的模型在部署后可能会表现不佳——这是由于模型被训练的文件和它扫描的文件之间的差异。然而,并不总是清楚如何识别和修复与协变量移位相关的问题:当良好的泛化能力不够时,提高泛化能力的传统正则化技术可能没有帮助。在花了 5 年时间对恶意软件进行逆向工程和分类(使用传统的、非基于 ML 的技术)后,我对恶意软件分类有了很多直觉,但在我对机器学习产生热情之前,我无法表达这些直觉。我写这篇博客的目的是在机器学习的更正式的背景下解释这些观点。由于一些正式解释的尝试是不精确的(可能是不正确的),这个博客的另一个目的是征求讨论、反馈和纠正。我加入了许多不同的概念和背景,因为我觉得将概念相互关联有助于增进理解,尤其是如果它们可以与恶意软件分类等实际目标联系起来。
我希望任何对协变移位感兴趣的人都可以从这篇博客中受益,但目标受众是在机器学习方面有一些经验的人,他们希望将其应用于计算机安全相关的任务,特别是“静态”恶意软件分类(我们希望在给定文件在磁盘上的字节数的情况下对文件进行分类,而不运行它)。我希望这篇博客支持的一个关键结论是,将先验知识整合到恶意软件分类模型中的重要性。我相信在分类步骤之前,当讨论模型可能表示其输入的方式时,先验知识是特别相关的。例如,我在本文中详细介绍了一些我认为与 CNN 恶意软件分类模型相关的领域知识:https://towardsdatascience . com/malware-analysis-with-visual-pattern-recognition-5a 4d 087 c9d 26 # 35f 7-d 78 fef 5d 7d 34
我在附录中回顾了主要部分中使用的一些核心概念(如归纳偏差、一般化和协变量移位),提供了额外的背景知识
恶意软件分类中的协变量转移
我不认为在大样本集上表现出良好概括能力的模型是无用的。如果一个模型在它被训练的发行版上表现不好,那就是一个问题。安全行业中有大量的经验证据表明,一个能够很好地概括但对输入分布的变化不是非常鲁棒的模型仍然能够提供价值,特别是如果经常重新训练并针对特定的客户环境。然而,在这一点上,行业中使用的许多模型在保留的测试集上表现出高精度。我相信,提高来自重要新发行版的样本的性能,比如在模型被训练一个月后创建的文件,比在测试集准确性上做微小的边际改进具有更实际的影响。接下来的几节将介绍为什么这些新分布是必要的,以及为什么它们是“协变量转移”的一个例子。如果你不熟悉协变量移位的概念,我建议你浏览一下附录中的背景部分。
为什么 p(x)会改变
在恶意软件分类的情况下, p(x) 是模型分析的二进制文件的分布。实用的恶意软件分类器从未被应用于它们被训练的发行版;他们需要在不断发展的生产环境中的样本集上表现良好。对于许多反病毒软件供应商来说,这意味着对每台装有该反病毒软件的机器上的文件以及提交给 VirusTotal 和 antivirus review 测试等其他服务的样本都要表现良好。概化性能不能很好地预测模型在这些样本上的表现,主要有两个原因:
**样本选择偏差:**在安全行业中,根据模型在部署时遇到的随机选择的文件来训练模型是很少见的。这是因为准确的标签是昂贵的:它通常需要某种程度的人工分析,并且需要访问所有扫描的文件。包含分析师出于其他原因标记的文件是正常的,例如为了客户的直接利益或由第三方提供和标记的文件。如果不涉及人工分析,在多个自动化分析系统之间就有反馈循环的危险。因为我们无法在目标分布的真正随机样本上可行地训练模型,所以样本选择过程是有偏差的。从技术上来说,我们可以通过随机采样扫描仪遇到的文件,并用人类分析师标记它们来解决这个问题,但这将导致一个小样本集,其中大部分是干净的文件。我把在模型被部署后扫描程序遇到的文件的分发称为“生产中的分发”
**环境变化:**每次您复制、编辑、更新、下载或删除文件时,您都会修改恶意软件扫描程序遇到的分发。当在每台机器上求和时,分布的变化可能足够显著,这意味着上周表现良好的分类器可能在本周显著下降。恶意软件分类器也存在于敌对的环境中,攻击者故意修改输入以避免正面分类。缓解这个问题的一个典型策略是不断地重新训练,但是不可能对实际的生产中的发行版进行训练(即使我们有它们的标签),除非我们从不扫描在收集我们的训练集之后创建的文件。这种场景产生了一种无法克服的样本选择偏差:我们无法在未来创建的样本上进行训练。
为什么 p(y|x)不变
协变移位要求*p(y =恶意| x =文件)*不变,而 p(x) 变(见附录)。在恶意软件分类的情况下, p(y =恶意|x) 是给定文件 x 是恶意的概率。如果 p(y|x) 和 p(x) 都改变,可能无法保持精度。我无法证明 p(y|x) 不会改变,但我认为,改变一般是,对于某些类别的模型,独立于 p(x) 。这里的 p 指的是真实的数据生成分布,而不是概率分类器试图逼近 p(y|x)。
p(y =恶意|x) 不是 1 或 0 有两个主要原因:
A.输入中的不确定性: y 是某个表示 x’ 的确定性函数,但模型使用的输入 x 并不包含 *x '的所有相关部分。*这一概念在附录的“确定性分类与随机分类”一节中有所涉及,但这是一个关键案例,所以我将在下一节中详述。我使用 x’ 来指代可以确定地映射到标签的输入,使用 x 来指代可以或不可以确定地映射到标签的输入。
B.标签中的不确定性: y 的定义没有完全考虑所有输入(灰色软件是恶意软件分类中的一个例子)。我将把完整的解释留到附录部分“为什么 p(y|x)不变:标签中的不确定性”
输入的不确定性
在这一部分,我认为文件中的字节对应于x’。
这里有一个简单的例子。我精确地将“八”定义为图 1 所示的特定形状
图 1:“八”的定义
而“三”是图 2 所示的形状
图 2:“三”的定义
如果我们可以访问整个输入( x’ =图 1 或图 2),我们就可以非常确定地知道标签应该是什么。但是,我们可能无法访问完整的输入,如下图所示,其中一些输入用红框隐藏:
图 3:数据可以隐藏,在这个例子中是通过一个红框
图 4:隐藏数据导致的不确定性
在这种情况下,我们的输入 x (图 3)随机映射(图 4)到两个不同的 x’(图 1,2),它们确定性地映射到 y 值‘8’和‘3’。我将映射函数称为 g ,在本例中, g 添加了一个红色框,隐藏了 8 和 3 之间的区别。我将映射 x’ 到 y 的函数称为 f_true ,它是一个有效的完美分类器,通过访问所有相关信息来避免随机性。有关更多详细信息,请参见附录中的“确定性分类与随机分类”部分。
如果训练集包含标记为“3”的图 3 的 90 个副本和标记为“8”的 10 个副本,并且我们有一个统一的先验,那么p(y = 8 |图 3) = 0.1* 和p(y = 3 |图 3) = 0.9 。如果测试集是从相同的分布中抽样的,那么它很可能具有相似的 3 与 8 的比率,因此我们的模型将具有良好的泛化能力。然而,一个新分布的测试集可能 8 出现的次数平均是 3 的 9 倍。如果我们对来自该分布的样本进行测试,我们可能会得到糟糕的性能。除非我们可以取消隐藏某些数据,否则获得良好的泛化误差和新分布误差可能是不可行的。在这篇博客中,我使用新分布误差来表示当模型应用于不同于其训练集采样的分布时的泛化误差(在附录的协变量移位一节中有更多相关信息)。实际上,试图找到生产中分布的新分布误差可能是比一般化误差更好的恶意软件分类器的性能度量。图 5 展示了这个例子。一个关键要点是,当我们从总体 1 过渡到总体 2 时,在考虑我们的原始样本(两种情况下的图 2)和由 f_true 定义的 p(y|x) 时,我们会经历协变量移位。然而,当我们考虑隐藏相关信息的中间表示时,我们遇到的变化类型 ( 图 3)不是协变量变化:它比协变量变化更糟糕。这是因为p(y =标签“三”| x =图 3) 从人口 1 的 90%到人口 2 的 10%。*
图 5: p(y|x) 对于 f_true 是常数,但是在被 g 变换时发生变化。“总体”框表示我们从中取样的总体(9x[image]表示总体中有 9 个该图像),“样本”框表示我们从总体中抽取的样本(两种情况下都是“3”),而“函数”框表示我们对样本应用什么函数,p(y|x)框表示给定总体的函数输出时可能标签的条件分布。
总之:如果信息是隐藏的(输入是g(x’),那么 p(y|x) 可能随着 p(x) 而改变,因为对 p(x) 的改变是由基础分布p(x’)的改变引起的。当存在采样偏差或环境变化时,会发生这种 p(y|x) 的变化,这两种情况在恶意软件分类中很常见。
*例如,假设您的数据集包含许多最近的恶意样本,以及来自不同日期的干净样本。考虑到恶意样本比干净样本变化更频繁,这是一种常见的情况。假设模型使用( PE )文件的时间戳值对文件进行分类( g 隐藏除时间戳之外的所有信息)。该特性同样适用于从同一发行版中采样的训练集和测试集,因为在这两种情况下,恶意软件往往比干净文件更新。该功能在技术上概括得很好,但是当数据集包含最近的干净文件时,例如在刚刚进行了软件更新的任何机器上,任何完全基于时间戳的分类器都不会执行得很好。将此与附录的确定性与随机分类部分联系起来, *y=f_ideal(x = PE 时间戳)与y = f _ true(x’=文件中的所有字节)非常不同,其中x = g(x’)和 g 是提取 PE 文件时间戳的特征提取器。注意,这是假设恶意样本不会故意修改 PE 时间戳,这种情况是可能发生的。
保持 p(y|x)不变所需的假设
恶意软件的定义是精确的,不变的,完全依赖于一个文件的字节数( x’ ),所以 y 是 x : p(y =恶意|x’) = 1 或 0 = f_true(x’ =一个文件中的所有字节)。这里有另一种方式来思考这个问题:假设实际上可以表示的文件空间是有限的(尽管大得不可思议),我们可以给这个空间中的每一个点一个标签。这种假设要求我们在依赖关系的上下文中考虑文件,因为某些类型的恶意软件有多个组件。
在下一部分中,我将讨论尝试和确定一种方法是否更容易受到输入分布变化的影响的方法。总是存在一些漏洞,因为我们的分类器需要降维,并且我们没有降维技术不会丢失至少一些与从x’到 y (f_true) 的确定性映射相关的信息。
减轻因协变量转移引起的问题
在做了一些假设之后,上一节确立了协变量移位是一种描述当我们考虑文件中的所有字节以及文件的分布变化时会发生什么的好方法。与 p(x) 和 p(y|x) 都改变的场景不同,我们有一个创建有效分类器的方法:找到一个尽可能接近 f_true 的函数。这里有另一种方式来看待它:概率分类器试图找到p(y = label | x ’ =文件中的字节)。*数据生成分布有一个 p(y|x’) = f_true ,当 p (x ')变化时,该分布不变。如果我们发现 *f_true,那么我们模型的 p(y|x’ )不会随着 p(x ')的变化而变化。
另一种选择可能是试图准确预测输入分布将在哪里变化,但我怀疑这在一个高度动态、充满敌意的环境中能起多大作用。在简介中的水果分类器示例中,尝试对 f_true 建模意味着创建一个模型,该模型理解每种水果的定义,并且能够将任何输入与该定义进行比较:当数据集转向大部分香蕉时,这种方法将会起作用。预测输入分布的变化可能意味着在训练中更加重视某个特定的类。如果我们选择了香蕉以外的类,那么在输入分布转变为主要是香蕉之后,我们的模型仍然会表现不佳。
是什么使一个模型容易受到协变量变化的影响,如何解决这个问题?
假设从部署的模型扫描的文件中随机采样的新分布数据集可以用于测量相关的新分布误差。给定测试集错误,接收比预期更多的假阳性报告也可能暗示高的新分布错误。然而,由于完美的泛化不能保证对输入分布变化的鲁棒性(参见上一部分中的 PE 时间戳示例),可用于提高泛化能力的策略(如常见的正则化技术)将不会有助于超过某一点(尽管如果我们的模型不能泛化,这对新分布性能来说是个坏消息)。一旦我们有了一个低的泛化误差,我们需要找到一个新的旋钮来改善新分布误差。我认为最好的方法之一是找到结合先验知识的方法,以获得最佳归纳偏差。有几种方法来限制我们的学习者的假设空间,以排除在新分布测试集上概括良好但表现不佳的模型。在时间戳被用作产生模型的特征的示例中,该模型是一般化的,但是对于输入分布中的变化不是鲁棒的,排除依赖于 PE 时间戳的假设可以帮助减少新分布误差。这种排除是基于先前的知识,即干净的和恶意的文件可能是新的或旧的。对于 PE 文件,可能需要排除大量的特征,并且我们想要保留的特征可能难以计算(尽管对于更复杂的函数,可以使用神经网络作为特征提取器)。
在极端情况下,如果我们事先知道函数y = f _ true(x’),该函数在x’的整个域上将x’映射到 y ,那么我们可以排除所有不是f _ true(x’)的假设。虽然该功能通常不太容易找到,但恶意软件分析师需要能够在心理上近似 f_true 才能对他们看到的所有文件进行分类,即使他们以前没有看到过类似的文件。这有助于在实践中,我们不需要考虑所有可能的文件,只需要考虑现代人和我们的工具创建的所有文件。
我们可以(或许应该)在每一步都引入归纳偏差:使用什么数据,如何预处理,使用什么模型,如何选择架构、特性、超参数、训练方法等等。每个例子都超出了本博客的范围;相反,我将重点讨论特征提取,这是引入感性偏差的最常用方法之一。
实现对输入分布变化的鲁棒性
特征工程对于许多类型的模型来说是至关重要的一步,因为特征直接导致了模型的归纳偏差:如果特征排除了部分输入数据,则模型不能将该数据用作学习假设的一部分。将数据转换为低维特征集也非常重要,因为寻找 f_true(x’) 的主要挑战之一是 x’ 是非常高维的:这是许多类型的分类器的主要问题。对于随机森林等一些模型来说,手工设计的特征是常见的,而卷积神经网络等其他模型会自动提取特征。对于手工设计和自动提取的特征,模型倾向于遵循图 6 所示的架构:
图 6:许多机器学习模型中的通用架构
每个盒子完全依赖于前一个盒子。前三个框包含特征组或“表示”右边的框不能比左边的框包含更多的输入信息。通常,像这样的体系结构的目标是丢弃与分类无关的信息。较少的不相关信息允许分类器处理比x’更低维度的表示,同时保持性能。具体情况取决于模型,例如,神经网络比基于决策树的模型有更多的表示层。关键的细节是,每个表示法倾向于比前一个表示法具有更少的关于输入的信息,并且如果丢失的信息与f _ true(x))相关,那么模型的所有下游部分必须处理“不确定输入”的情况,其中我认为 p(y|x) 可以随着 p(x) 而改变。因此,我们希望确保低维表示仍然包含足够的信息来计算f _ true(x’)(参见图 7),即使它包含较少的关于原始输入的信息。不幸的是,我们在实践中通常无法做到这一点,所以当考虑模型的输入的中间表示时,我们不再处理协变量移位。也就是说,我们仍然可以通过 p(x) 来减少p(y | x =中间表示)的数量变化。
图 7:先验知识告诉我们,如果我们必须隐藏信息,当分类 3 对 8 时,隐藏下半部分比左半部分更好:左边的两幅图像仍然可以被完美地分类,而右边两幅图像的分类器取决于保持恒定的 3 和 8 的比例
正如论文“为什么深度廉价学习效果好”中所讨论的,这个概念与数据处理不等式有关:
> =替换为=如果 g(x) 是 y. 互信息( I) 是分布特定的,那么即使 g(x) 是给定p(x)*的 y 的充分统计,当分布转移到 p’(x) 时也可能不是。为了对输入分布的变化具有完美的鲁棒性,我们需要 y 是 *g(x)的确定性函数。如果是这种情况, g(x) 对于 x 上的所有分布来说都是 y 的充分统计量。我们已经确定这是数据生成分布的情况:协变量移位意味着 p(y|x’) 不随 p(x ')变化。
分类在“深度和廉价学习”论文中被讨论为基于马尔可夫链的生成过程的逆过程,这对于恶意软件分类具有直观的意义:文件的作者将知道他们编程的功能是否是恶意的,作为创建过程的早期步骤。图 8 显示了针对恶意软件的反向流程示例:
图 8:代表恶意软件生成和分类的马尔可夫链
分析师使用一些快捷方式来加快分类速度,但这个图表与恶意软件创建和人工分析的工程和逆向工程并不太遥远(如果分析师想要最准确的结果并且有很多时间)。不幸的是,这些步骤中的每一个都很复杂,创建一个健壮的函数在它们之间转换在今天可能是不切实际的——恶意软件打包程序仍然是躲避防病毒产品的默认方式。我们需要一个替代方案,但它有助于记住这个大致理想化的马尔可夫链:请注意,在分类过程中,任何一步都不会丢失与恶意功能相关的信息。在后面的博客中,我可能会讨论受恶意软件分析师用来加速分类的捷径启发的替代方案,重点是恶意软件打包程序。
关键要点是,如果模型在任何时候使用的表示不包含与文件是否恶意直接相关的信息,则模型可能更容易受到输入分布变化的影响。例如,安全行业中的一些模型主要使用从 PE 头中提取的值作为特征。然而,这种表示排除了与f _ true(x’)相关的大量信息,因为现有知识告诉我们 PE 头值并没有给出关于文件行为的太多指示,而这是确定文件是否是恶意的所必需的。更糟糕的是,躲避防病毒签名的默认方式——自定义恶意软件打包程序——可以将 PE 头设置为他们想要的任何值。完全依赖于 PE 头值的模型可能在检测其训练集中存在的恶意软件打包程序打包的文件方面做得很好,但是当出现新的恶意软件打包程序时可能会做得更差。然而,包括文件的可能行为的表示不会丢弃与f _ true(x’)相关的信息。这在静态检测(不执行文件的检测)的环境中很难做到;但是,我们仍然可以使用先验知识来尝试和提取比 PE 头数据与 f_true(x’) 更密切相关的特征。这方面的一个例子是检测混淆数据的功能,因为混淆通常用于使防病毒检测更加困难:只有恶意软件才需要这样做。
丢弃与数据生成分布的p(y | x’)相关的信息的问题也在图 5 中进行了说明:通过用函数 g 隐藏重要数据,构建在 g 的表示之上的模型通常会在原始输入分布p(x’)改变时具有g(x’)和标签之间的关系。
结论/未来工作
鉴于有许多工具专注于提高泛化能力,考虑如何将泛化误差与提高输入分布变化的鲁棒性联系起来可能会有所帮助。如果我们的样本以某种方式表示,使得来自新发行版的恶意文件看起来与来自原始发行版的恶意文件相同,那么降低泛化错误可能就是所有必需的。我计划在另一篇博客中讨论一些方法来实现对输入分布变化的鲁棒性,重点是表示。一个例子是使用卷积神经网络来专门检测文件中的视觉特征,人类分析师可以在任何文件分发中立即识别这些视觉特征为恶意的,但是对于这些视觉特征,很难手动编程启发式。我还想找到测量新分布误差的好方法,以便更好地进行模型比较。在测量新分布误差方面,一些分布明显优于其他分布,而找到所有生产样本的真实标签这一实际问题仍然阻碍着该分布在实践中的应用。例如,一个替代方案可以是为一个小的子集(<1000) of samples from the in-production distribution and calculating accuracy (or precision) along with a confidence interval that accounts for the limited sample set. Precision is often easier to work within the security industry due to difficulty in finding in-production false negatives in an unbiased way (due to the number of true negatives), and the fact that false positives on average negatively impact more people than false negatives (clean files are much more likely to appear on more than one machine). I would also like to consider adversarial machine learning in the context of covariate shift.
*In summary: In any situation where our data generating distribution undergoes covariate shift, we can potentially find a model that is robust to changes in the input distribution *p(x’)找到真正的标签。一种方法是使用领域知识来确保我们的模型使用的每个中间表示不会丢弃与 p(y|x)=f_true 之间的真实关系相关的信息。
附录
背景
在这一部分,我回顾了一些相关的背景概念。这里有一个简短的总结:
训练误差衡量模型对其训练数据的表现有多差,样本外(泛化)误差衡量模型对来自与训练数据相同分布的样本的表现有多差。新分布误差衡量模型对来自不同分布的样本(而不是训练数据)的表现有多差。
确定性分类与随机分类
给定输入空间 X 和标签空间 Y ,分类的最理想结果通常是找到一个函数 f_ideal ,该函数完美地将输入映射到标签: y = f_ideal(x) (其中 x ∈ X,y ∈ Y )用于我们的输入分布。该函数将对应于贝叶斯误差为 0 的贝叶斯最优分类器。除非我们能以某种方式证明我们找到了 f_ideal ,否则我们只能使用一个近似它的假设函数 h 。稍后我将在测量误差的背景下详细讨论这一点。
在很多情况下, Y 和 X 之间的关系是不确定的:对于同一个 x ,可能会有不同的 y 值。在这种情况下,我们得到的概率分布不是 y = f_ideal(x) ,而是 y ~ p(y|x) 。如果这个条件分布是伯努利分布——例如对于x*=输入文件,恶意( y =1)对干净(y= 0)——如果 p(y=1|x) > 0.5 则我们可以让我们的分类器输出 1,否则输出 0。这产生了贝叶斯最优分类器,但是由于不可约的不确定性,贝叶斯误差不为 0。对于为什么相同的 x 具有不同的 y 值,一个常见的解释是因为我们没有足够的信息。也就是说,x = g(x’)其中x’是我们确定性地计算 y 所需的数据。 g 是一个潜在地隐藏关于 x 的信息的函数:例如,一个有损压缩器。这个场景意味着有一个函数 f_true 使得y = f _ true(x’)。 f_true 和 f_ideal 之间的主要区别在于 f_true 在整个输入域内都非常精确,而不仅仅是输入的单一分布。在这种情况下,我们有一个基础分布 p(x’) ,我们从其中采样 x’ ,然后使用确定性的多对一函数 g 转换为 x 。相同的 x 可能具有不同的 y 值的原因是因为 x 的单个样本代表具有不同 y 值的*x’的多个样本。
一个简单的例子是,如果我们想要确定一幅图像( x’ )的平均颜色( y ,但是我们只得到(与 g )像素的子集( x )。在某些情况下,我们无法访问 x’ ,只能访问 x ,例如,推荐系统可能需要模拟一个人的大脑( x’ )来 100%确定推荐什么,因此它们使用一组行为特征来代替( x )。然而,在其他情况下,我们确实可以访问 x’ ,但是我们创建 g 作为我们模型的一部分,因为 x’ 有太多的维度供我们的分类器处理。这个场景是我理解是什么使恶意软件分类器易受输入分布变化的影响的核心,本博客的大部分内容都在这方面展开。在我认为输入决定性地决定输出的情况下,我使用x’;否则,对于 x 和 y 之间的关系可能确定也可能不确定的情况,我将使用 x 。注意,如果我们的归纳偏差没有将贝叶斯最优分类器从我们的假设空间中排除,我们只能学习贝叶斯最优分类器;否则,我们希望学习一个在给定限制条件下尽可能逼近它的函数。
归纳偏差研究综述
作为机器学习中最重要的主题之一,归纳偏差与大多数机器学习相关的讨论相关,但对于本博客来说是必不可少的。[归纳偏差](http://A review of generalization)指的是学习者对其输入和输出之间的关系做出的一系列假设,这些假设用来防止学习者形成一些(希望是不希望的)假设。我们今天使用的所有模型都有一定程度的感应偏差,这是有用的必要条件。但是,如果假设与问题不完全匹配,模型可能无法很好地工作。传统正则化方法的一些观点将它们框定为简单函数的归纳偏差(奥卡姆剃刀)。
例如:
- 如果学习者在输入和输出之间假设一个简单的关系,而实际的关系是复杂的,这可能会导致拟合不足(在训练数据上表现不佳)
- 如果一个学习者假设了一个复杂的关系,而实际的关系很简单,这可能会导致过度拟合(在保留的测试数据上表现不佳)
- 如果学习者假设某个关系适用于分布的变化,而事实并非如此,则可能会使模型易受输入分布变化的影响(在新分布测试集上的性能很差)
在下一节中,我将回顾一般化:讨论协变量转移的最终先决条件。
概括的回顾
泛化是机器学习中的一个基本概念,但要理解模型在协变量移位下的性能,了解协变量移位与样本外测试集(估计泛化的一种常用方法)上的性能有何不同是有帮助的。
分类模型通常通过在一组标记样本上训练模型来创建。给定这些数据,创建一个对其训练数据执行完美的(非参数)模型是很容易的:对于数据集中的每个输入,返回该输入的标签(记忆)。对于不在数据集中的每个输入,返回一些任意的标签。虽然该模型在训练数据上表现得非常好,但在任何其他数据上,它可能不会比随机猜测更好。考虑到我们通常想要标记其他数据,我们需要一种方法来区分两个模型,这两个模型具有完美的训练准确性,但对看不见的数据具有不同的准确性。
通俗地说,泛化通常指的是模型对来自与训练数据相同分布的看不见的输入表现良好的能力。例如,如果我们在猫和狗的照片上训练两个模型,并且两个模型在训练数据上都有出色的表现,我们通常会希望使用在不在训练集中的猫和狗的照片上表现最好的模型。我们可以(很可能)通过比较我们从训练过程中随机选择的“样本外”测试集的性能来找到这是哪个模型。使用随机保留测试集可以确保测试集和训练集都是从同一分布中采样的。**
然而,就像具有相同训练精度的两个模型可能不相等一样,在样本外测试集上具有相同精度的两个模型也可能不相等。例如,如果其中一个模型除了照片之外还可以正确分类人类绘制的猫和狗的图像,即使我们只在照片上训练它,它也可能比只能对照片进行分类的模型更可取。该评估标准也适用于设计用于产生不正确分类(对立示例)的样本:如果模型没有在任何对立示例上训练,良好的概括并不意味着它将正确地分类已经被对立修改的新示例。
恶意软件打包程序和泛化
在某些情况下,通过对抗性机器学习绕过恶意软件分类器是矫枉过正的:创建一个新的恶意软件包装器(在模型的训练分布中以极低的概率产生样本)通常会获得与对抗性机器学习相同的结果(FN ),用于许多类型的概括良好的恶意软件分类器。攻击者多年来一直在创建新的恶意软件打包程序,以避免传统防病毒软件采用的算法检测。恶意软件打包程序将恶意有效负载隐藏在一层或多层加密/混淆之后,只留下可执行的解密存根供静态分析使用。可以使存根连同其他文件属性与以前的恶意软件打包程序几乎没有关联。结果,由打包程序隐藏任何有效载荷,按照大多数标准测量,将不同于现有模型已经利用的任何训练或测试集中的文件。因此,泛化能力良好的恶意软件分类器不需要攻击者改变他们的高级策略来避免检测:他们可以不断推出新的恶意软件打包程序来躲避传统的反病毒技术和基于 ML 的静态检测。对输入分布的变化(在这种情况下是由新的打包程序的创建引起的)具有一定鲁棒性的恶意软件分类器可能更难以绕过。请注意,恶意软件打包程序不同于 UPX 等商业打包程序,后者不是为了躲避防病毒软件的检测而设计的。
协变量移位
在泛化的情况下,我们从输入和标签上的相同数据生成分布 p(x,y)=p(y|x)p(x) 中获取训练集和样本外集。协变量移位通常被定义为输入分布 p(x) 变化,但 p(y|x) 不变的场景。 p(y|x) 发生变化,而 p(x) 没有变化的情况称为概念转换。如果生成数据的 p(y|x) 发生变化,近似原始 p(y|x) 的统计模型将不再有效。
这里有一个例子:假设我们有一个由单个例子组成的训练集, x = 5.02,对于一个回归问题,标签为 y = 10.04。如果我们的归纳偏差是 x 和 y 之间存在线性关系,我们可能得到模型 y = 2x 。如果这是实际的关系,那么这个模型适用于整个域 x 。如果 x 的分布是具有单位方差和 5.0 均值的高斯分布,我们的测试集可能包含示例 x = 4.4, y = 8.8,我们将获得完美的测试精度。然而,即使我们将 x 的分布改为 10 亿到 20 亿之间的均匀分布,该模型仍然有效。该模型对于输入分布的变化是鲁棒的,这通过找到 y = f_true(x) 来实现。然而,如果 y 和 x (随机情况下的 p(y|x) )之间的关系除了p(x)之外还发生变化,比如说在一个数据集 x =5.02 中始终产生 y =10.04,而在另一个数据集 x =5.02 中产生 y,那么我们就不走运了因此, p(y|x) 不变是很重要的。
在某些情况下,可以将“对输入分布变化的鲁棒性”视为一般化的扩展。以 3 个不同的数据集为例。第一个是训练集,第二个是来自与训练集相同分布的测试集(用于测试泛化),第三个是新分布测试集,其中成员来自与其他两个数据集相同的域,但使用不同的分布进行采样(用于测试对输入分布变化的鲁棒性)。
- 如果一个学习者的归纳偏见导致它对训练数据进行欠拟合,它将(可能)在所有 3 个数据集上表现不佳。
- 如果一个学习者的归纳偏差导致它过拟合训练数据,它将(可能)在测试集和新分布测试集上表现不佳。
- 如果一个学习者的归纳偏差允许它在它的训练数据被采样的分布上表现良好,而没有其他分布,它将(可能)在新分布测试集上表现不佳。
在这里,我将尝试从数学角度将通用性和鲁棒性与输入分布的变化联系起来。我粗略地从 https://en.wikipedia.org/wiki/Generalization_error 的中提取了这里使用的概括公式
V 被定义为我们的损失函数, h_n 是我们在 n 训练样本上训练的分类器。 x 是输入,比如二进制文件, y 是标签,比如干净/恶意。
训练误差可以通过在训练样本上平均损失函数来计算:
概化误差通过对整个输入分布的损失函数取期望值来计算:
泛化差距或采样误差被计算为训练误差和泛化误差之间的差:
假设对于协变量 shift p(y|x) 为常数,并且 p(x) 变为新的分布p’(x),我们可以重写 I_G[h_n] 来创建一个“新分布误差”:
概括间隙被公式化为训练和概括误差之间的差,因此将分布间隙表达为 I_R[h_n] 和概括误差之间的差可能也是有帮助的。这种差异可以用简单的减法来计算,就像在https://arxiv.org/abs/1902.10811(但为了一致性,要反过来): I_R[h_n]-I_G[h_n] 。如果新的分布更难分类,那么差距就是正的;如果更容易,差距为负,如果同样的难度,差距为 0。分布差距和泛化差距之间的一个显著区别是泛化差距总是正的,但是对于新的分布,可能所有的样本都在分类器的“容易”区域中。因为训练误差是乐观偏向的,所以对于在其上训练的分类器来说,训练数据很可能处于“容易”区域,保持泛化差距大于或等于 0。
如果分布没有显著差异,则检查可能出现在新分布中但不太可能出现在原始分布中的样本可能会有所帮助,从而更好地测试对输入分布变化的稳健性。下一部分是非常非正式的,但是一种方法可以是改变 p’(x) 以从可能在 p(x) 下的区域中移除概率质量,以便我们只评估更可能在 p’(x) 下而不是 p(x) 下的样本。这种方法产生的误差更集中在新分布中可能性更大的样本上。这里有一个 pdf p’’ ,它从 p’(x) 中减去p(x)(max 防止负概率密度,分母保持总面积为 1)
这个等式可能并不复杂,但我的假设是使用从p’(x)采样的新分布测试集会有所帮助,就像使用样本外测试集有助于测量泛化误差一样。可能需要先验知识来确认来自p’(x)的样本是否也可能在 p(x) 中。例如,为了更好地逼近 R[h_n] 而不是 I_R[h_n] ,关注被确认为在 p(x) 中概率为 0 的新恶意软件家族的样本的误差可能是值得的。在照片与手绘的情况下(来自“概括的简要回顾”部分),当对手绘图像进行采样时,应该可以安全地假设猫和狗的自然图像是罕见的(照片真实感渲染除外),因此来自p″(x)(手绘的猫和狗的图像,不包括那些相似的猫和狗的自然图像)的样本应该与来自p′(x)*(手绘的猫和狗的图像)的样本相似。*
为什么 p(y|x)不变:标签中的不确定性
图 9 显示了“为什么 p(y|x)不变”一节中情况 B 的一个简单例子。在这种情况下,我们可以访问整个输入,但是我们将标签“八”定义为应用于任何看起来像八的东西,将标签“三”定义为应用于任何看起来像三的东西。
图 9:定义导致的不确定性
出现不确定性是因为图 9 左上角的输入看起来既像 8 又像 3。
通常有一个确定性的范围,靠近中间的例子可能更容易受到定义变化的影响,如图 10 所示:
图 10:从“看起来像 8”到“看起来像 3”的范围
因为恶意软件的定义并不精确,所以同样类型的不确定性也会出现。与图 10 类似的恶意软件示例如下所示:
图 11:恶意频谱
由于定义的不确定性,行为更接近中间值的文件(有时称为潜在的有害应用程序或灰色软件)可能更难分类。利用“软标签”——大于 0 小于 1 的标签——是处理标签定义不确定性的一种方法。
恶意的定义可能会改变,这意味着 p(y|x) 的改变。然而,有几个原因使我认为我们在实践中可以忽略这一点:
1.关于“为什么 p(x)变化”部分,导致 p(x) 变化的两个主要原因——样本选择偏差和环境变化——不应改变我们的定义。
2.实际上,我们最关心的是极端情况,在这种情况下,改变定义不太可能产生影响。专为在用户不知情或未经其许可的情况下窃取用户信用卡信息而设计的文件将始终被视为恶意文件,而重要的操作系统文件将始终被视为干净文件。在行业中,我们认为值得检测的变化通常是由围绕某个行为是干净的还是“潜在不需要的”的争论引起的
显然,一些未来的程序可能变得非常难以分类,可能需要伦理哲学来解决:例如p(y =恶意| x = AGI 代码)。**
墨西哥新冠肺炎概述
墨西哥 Covid 19 的因果关系建模
墨西哥霍乱地图确诊病例密度(迭戈乌尔塔多)
自 2019 年 12 月下旬以来,一种新型冠状病毒疾病的爆发(新冠肺炎;此前被称为 2019-nCoV)在中国武汉被报道,随后影响了全球 210 个国家。截至 2022 年 11 月 10 日,墨西哥已确诊约 710 万病例,超过 33 万人死亡。
索引📖
▪️ Covid 19 — 数据分析师墨西哥概述
▪️ E 解释墨西哥死亡案例的模型
▪️墨西哥各县 Covid 病例相关性
▪️墨西哥的流动性模式行为
▪️ 墨西哥各县聚类
Covid 19 —墨西哥概述🇲🇽
我使用了确诊/死亡病例的时间序列,并结合了 covid 期间个人描述的数据集
确诊病例(迭戈·乌尔塔多)
确诊病例最多的时期。第三波(迭戈·乌尔塔多)
死亡病例墨西哥(迭戈·乌尔塔多)
死亡病例最多的时期(Diego Hurtado)
按年龄分列的死亡病例(Diego Hurtado)
按年龄确认病例范围(Diego Hurtado)
确诊病例的年龄分布(Diego Hurtado)
按性别分列的确诊病例比例(Diego Hurtado)
住院人数百分比(Diego Hurtado)
covid 19 期间的墨西哥疾病
由于大量肺泡损伤和进行性呼吸衰竭,严重疾病发作可能导致死亡。新冠肺炎疫情对长期血液透析患者来说是高风险的,因为他们处于免疫抑制状态,年龄较大,并且存在显著的共病,特别是心血管疾病、糖尿病等。同样值得注意的是,心血管风险因素在墨西哥人口中非常普遍,并以惊人的速度增长,心血管疾病是墨西哥的第一大死亡原因[2]。
确诊病例所占疾病百分比(Diego Hurtado)
确诊病例所占疾病百分比(Diego Hurtado)
墨西哥🇲🇽科维德仪表板(迭戈乌尔塔多)
墨西哥头号死亡原因🇲🇽(迭戈 Hurtado)
Covid 19 导致死亡的原因是什么?解释模型🇲🇽
为了试图解释死亡原因,我使用了流行病学总局报告的墨西哥数据集,首先我使用了 2022 年期间,然后是死亡病例最多的时期。[2020 年 11 月 2 日至 2021 年 3 月 22 日]
死亡案例 2022(迭戈·乌尔塔多)
我用随机森林来预测一个人是否会因为年龄和疾病而死亡。
2022 年期间的死亡案例树形图(Diego Hurtado)
covid 死亡病例分类器的 ROC 曲线
该模型的准确度分数是 0.999586786786
2022 年死亡案例的主要原因(Diego Hurtado)
Shap 值影响死亡案例 2022 ( Diego Hurtado)
我们可以看到,如果一个人年龄越大,死亡的概率就越大,2022 年(迭戈·乌尔塔多)
病例最多的时期【2020-11-02,2021-3-22】
死亡病例最多的时期[2020 年 11 月 2 日,2021 年 3 月 22 日] (Diego Hurtado)
我做了同样的过程,但使用的是墨西哥死亡病例最多的时期。
2022 年期间的死亡案例树形图(Diego Hurtado)
最严重死亡案例期间树形图的左部(Diego Hurtado)
最严重死亡案例期间树图的右半部分(Diego Hurtado)
covid 死亡病例分类器的 ROC 曲线
AUC:0.90083868686
该模型的准确度得分为:0.9648638686866
特征重要性(迭戈·乌尔塔多)
我们可以看到,如果一个人年龄越大,死亡的可能性就越大(迭戈·乌尔塔多)
死亡案例最多期间的死亡案例主要原因(Diego Hurtado)
Shap 值影响最多死亡案例期间的死亡案例(Diego Hurtado)
墨西哥各县 Covid 病例相关性🇲🇽
我正在将用户信息转换到县一级,以查看县信息之间是否有任何关联,从而证明高死亡人数的因果关系,揭示复杂系统中不同现象的原因和影响的能力将有助于了解卫生系统的改进领域。
首先我用的是因病死亡的病例数
后来,我使用了各县的社会人口统计信息,如人口、贫困水平、健康状况
观察:
值得注意的是,墨西哥各县的医疗保险覆盖率很低
此外,在医院插管的人死亡的比例很高
墨西哥卫生部门的死亡人数
观察:
另一个重要的方面是,墨西哥的贫困水平很高,所以人们不能呆在家里,墨西哥人没有从总统那里得到任何帮助留在隔离区
观察:
我们可以看到,死亡人数最多的前 10 个县是贫困人口最多的县
墨西哥的流动性🚗 🇲🇽
尽管感染人数激增,墨西哥总统在五月开始了“新常态”来“重新激活”经济
在商店外面,顾客们在等待,没有注意到健康距离。Av。CDMX Eje Central 的华雷斯角。2020 年 5 月 21 日。**图片:**angélica Escobar/福布斯墨西哥。
观察:
我们可以看到,确认/死亡/流动性在 2021 年 5 月*****【新常态】*** 开始时开始增长**
墨西哥死亡病例(迭戈·乌尔塔多)
确诊病例(迭戈·乌尔塔多)
我使用不同的数据集来了解 Covid 19 期间墨西哥的移动趋势
“新常态是一种幻觉,我们正处于流行病活动中,我认为在这个时候提议重新开始社会活动实际上是自杀行为,我认为这可能会以前所未有的水平重新激活患者和死者的数量”马拉奎亚斯·洛佩斯·塞万提斯
观察:
**很明显,新冠肺炎在墨西哥的传播速度更快,死亡率更高,生活在贫民窟的人可能是这种情况下的一个关键因素。也许这就是墨西哥冠状病毒病例不断增加的原因。
在墨西哥,住在房子里的平均人数是 3 到 5 人。
迭戈·奥乌尔塔多
今天,根据最保守的估计,大约有 9 亿人生活在贫民窟。据估计,到 2030 年,地球上将有 1/4 的人生活在贫民窟或其他非正规居住区。让我们参观一下世界上最大的贫民窟:
- 开普敦的哈耶利沙(南非):40 万人
- 内罗毕的基贝拉(肯尼亚):70 万人
- 孟买的达拉维(印度):100 万
- 内萨(墨西哥):120 万
- 卡拉奇的奥兰治镇(巴基斯坦):240 万人
墨西哥城
人口:110 万
虽然有些人认为内扎华尔科约特城,也被称为内扎,已经从一个贫民窟演变成了一个郊区,但砖砌的房子散布在临时搭建的棚屋中,即使以饱受毒品战争折磨的墨西哥的标准来看,这个社区也被认为是极其危险的。社区行动促使政府将土地所有权正式化,开始垃圾收集,并建设其他一些关键的基础设施。现在,大约 70%的居民在该地区工作,这是墨西哥人口最稠密的直辖市。
2016 年 9 月 30 日,墨西哥墨西哥州内扎华科约特尔(Nezahualcóyotl)的鸟瞰图。汤森路透基金会/约翰尼·米勒
观察:
我们可以观察到,人口越多的县,死亡病例就越多
****
观察:
我们可以观察到人口较多的县也是确诊病例较多的县
墨西哥城市地区
****
墨西哥城市地区
即使我们能观察到相关性,也不能证明因果关系。
当问题脱离非常狭窄的情况时,数据无法回答问题,但无法解释它们是如何联系在一起的。
🇲🇽聚集的墨西哥郡
我正在使用聚类算法对各县的数据进行分组,以发现某些相似之处
首先,我基于坐标对各县进行聚类,以测试算法性能
****
迭戈·奥乌尔塔多
聚类算法看起来不错
质心是较大的蓝色圆圈
集群有不同的颜色
圆圈的大小基于人口数量
迭戈·奥乌尔塔多
死亡分析细分
为了对各县进行细分,我使用了死亡病例数、人口数、住院人数、医疗可及性、贫困水平、极端贫困人数和家庭内从业人数。
我正在执行的步骤如下:
相关估计
计算所选特征的相关系数
𝐒𝐭𝐚𝐧𝐝𝐚𝐫𝐝𝐢𝐳𝐚𝐭𝐢𝐨𝐧
标准化数据,使所有特征具有同等的权重
分层聚类
我用一个树状图绘制了层次聚类的结果
𝐏𝐂𝐀
使用主成分分析来找出解释数据差异的成分子集
绘制由组件总数解释的累积方差
我选择三种成分。根据上图,3 或 4 似乎是正确的选择
主要组件与原始功能的热图
迭戈·奥乌尔塔多
PCA 可视化
迭戈·奥乌尔塔多
迭戈·奥乌尔塔多
绘制 K 均值 PCA 模型的类内平方和
我选择了 4 个集群
主成分分析结果的 k-均值聚类📊
集群 1: 死亡人数非常高
聚类 2: 死亡人数最多
聚类 3: 死亡人数中等
聚类 4: 死亡人数少
****
我们可以观察到,结果与前面的分析非常相似,人口密度越大的县,死亡病例就越多。
🇲🇽概述
墨西哥州确认🇲🇽病例
墨西哥霍乱地图确诊病例密度(迭戈乌尔塔多)
墨西哥州死亡病例🇲🇽
十大死亡案例州(Diego Hurtado)
按性别分列的十大死亡案例州(Diego Hurtado)
墨西哥 Choropleth 地图死亡病例密度(Diego Hurtado)
死亡率最高的 10 个州(Diego Hurtado)
墨西哥 Choropleth 地图死亡率密度(Diego Hurtado)
每 10 万人口中的前 10 个死亡案例(Diego Hurtado)
Choropleth 地图墨西哥每 10 万人口密度死亡病例(Diego Hurtado)
墨西哥的新冠肺炎:各州确诊病例总数(迭戈·乌尔塔多)
墨西哥的新冠肺炎:各州死亡病例总数(Diego Hurtado)
死亡人数最多的州是墨西哥城
墨西哥需要采取行动
****对墨西哥新冠肺炎的预测性监控:新冠肺炎预测对于合理化规划和心态至关重要,但也具有挑战性,因为复杂、动态和全球化的新冠肺炎疫情作为一个典型的棘手问题。传统的预测或预报努力的目标是现在做出准确的预测,以便在未来实现,但在这种极端不确定的情况下,这种努力可能会产生误导
墨西哥与拉丁美洲国家的相互关系
我从约翰霍普金斯大学新冠肺炎数据库中提取了新冠肺炎每日新增病例和拉丁美洲死亡病例。我使用线性回归来分别检验墨西哥和拉丁美洲国家之间的相关性。相关性最强的国家是巴西。
墨西哥和巴西之间的数据关系(Diego Hurtado)
有趣的是,这两个国家都由一个左翼国家执政。
顺便说一句:我正在寻找新的工作机会!📊
我正在寻找一个机会,在那里我可以把这些能力投入到我热爱的任务中去!
“当有人问你是否能胜任某项工作时,告诉他们,‘我当然能!那就忙起来,搞清楚怎么做。”—西奥多·罗斯福。
坐在办公桌前的金毛猎犬贝利(knowyourmeme,2022)
领英:https://www.linkedin.com/in/diego-gustavo-hurtado-olivares/
理学硕士。迭戈·乌尔塔多
商业分析顾问
强占
流行病学家和健康经济学家 Eric Feigl-Ding 将墨西哥的冠状病毒阳性病例与纽约、马德里和伦巴第等城市的病例进行了比较,并警告说,墨西哥将经历的新冠肺炎检测阳性百分比是前所未有的。
这是因为半数以上的检测对病毒呈阳性。
德雷克丁。(2020 年 6 月 21 日)
“我为墨西哥哭泣。超过 50%是阳性的百分比,超过一半的测试者是阳性的,”这位科学家在推特上谈到冠状病毒病例时说。
德雷克丁。(2020 年 6 月 21 日)
墨西哥人均病例和死亡率与美国的对比。在墨西哥很明显诊断不足,治疗也很差。56%的阳性率反映了这一点。所以是的,该死的,我们需要更多的测试。
催单
1918 年的疫情流感是近年来最严重的疫情。它是由带有禽类基因的 H1N1 病毒引起的。尽管对病毒的起源没有普遍的共识,但它在 1918-1919 年间在世界范围内传播。
全世界死亡人数估计至少为 5000 万,其中约 675,000 例发生在美国。
5 岁以下、20-40 岁和 65 岁及以上人群的死亡率较高。健康人群的高死亡率,包括 20-40 岁年龄组的人群,是疫情的一个独特特征。
流感疫情图表(Reeve 003143),国家健康和医学博物馆
我们到了。
流感疫情图表(Reeve 003143),国家健康和医学博物馆
结论:
本文详细分析了新冠肺炎是如何影响墨西哥的,以及由此得出的见解如何用于下游分析。这些图表还可以应用于其他场景,以推断关键的数据洞察力。
编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里 。
参考
[1]徐,郑,石,李,王,杨,张,黄,李,张,陈,… &泰,杨(2020).急性呼吸窘迫综合征相关新冠肺炎的病理表现。柳叶刀呼吸内科, 8 (4),420–422。
[2]加西亚-加西亚 G,阿比莱斯-戈麦斯 R,卢坎-阿雷利亚诺 VH,等.墨西哥人口中的心血管危险因素。任不倒。2006;28(8):677–687.土井:10.108008886861
[3]m .卡斯塞拉、m .拉杰尼克、m .科莫、a .杜勒博恩、S. C .、r .迪那不勒斯(2020 年)。冠状病毒的特征、评估和治疗(新冠肺炎)。在 Statpearls【互联网】。StatPearls 出版社。
[4]世界卫生组织。(2020).冠状病毒疾病 2019(新冠肺炎):情况报告,72。
[5]“世界上最大的贫民窟:达拉维、基贝拉、卡耶利沙&内扎。”人类家园 GB ,2018 年 9 月 7 日,www . habitatforhumanity . org . uk/blog/2017/12/the-worlds-larvi-kibera-khayelitsha-neza/。
[6]“拥有世界上最大贫民窟的 8 个城市。”美国新闻&世界报道,美国新闻&世界报道,www . us News . com/News/cities/articles/2019-09-04/the-worlds-largest-贫民窟。
[7]墨西哥。(未注明)。从 https://ddi.sutd.edu.sg/portfolio/items/448588取回
[8]美国和欧洲 1918-1919 年流感死亡率图表|奥的斯历史档案国家健康和医学博物馆(http://www . Flickr . com/photos/medical Museum/5857153474/in/set-72157614214049255),由 CC-BY-NC-SA(http://creativecommons.org/licenses/by-nc-sa/2.0/uk/)授权
[9]德雷克丁。(2020 年 6 月 21 日)。神圣的 moly-我为墨西哥哭泣。https://twitter.com/DrEricDing/status/1274816278197342209
[10] 坐在办公桌前的金毛猎犬贝利的原始照片。了解你的记忆。https://knowyourmeme . com/photos/1330845-我不知道我在做什么
新冠肺炎与国家卫生保健质量
一种无监督的 K-means 算法,用于根据不同的医疗质量、进行的新冠肺炎检测数量和确诊的新冠肺炎病例数量对国家进行分组
编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家,这篇文章的观点不应被解释为专业建议。
在本帖中,我们尝试使用 K-means 根据卫生保健质量对不同国家进行分组,如基本卫生条件、营养不良的患病率、人均卫生保健支出、医生密度、新冠肺炎确诊病例、为新冠肺炎进行的测试数量等。
我使用了来自 Kaggle 的数据,Kaggle 由来自约翰·霍普金斯大学、哈佛大学、世卫组织大学和许多其他机构的新冠肺炎相关数据集组成。
我使用了三个数据集
- inform-COVID-indicators.csv:该文件包含不同国家的健康指标,如人口密度、使用基本卫生服务的人口、营养不良的患病率、当前人均医疗支出、获得医疗保健的机会、医生密度、城市人口、孕产妇死亡率等。,
- total-新冠肺炎-检测-按国家执行. csv ":国家执行的新冠肺炎检测次数
- 约翰斯-霍普金斯-新冠肺炎-每日仪表板-病例。csv:包含该国新冠肺炎确诊病例、死亡、康复病例和活跃病例的数量
加入了三个基于国家的数据集,我必须清理一些数据以匹配所有三个数据集中的国家名称。
使用 K-means 无监督学习根据健康指标、执行的测试和新冠肺炎病例特征对国家进行分组。
K-means 聚类算法将使用最佳的可能特征,对具有相同健康指标、人口密度等的相似国家进行分组。一起。
k-均值聚类是一种
- 一种无监督的机器学习算法
- 一种迭代算法
- 在给定的未标记数据集中寻找组
- 它有助于将相似的数据点归类成一个簇。
- 除了有助于数据点聚类的输入特征外,不需要预先分类
为了选择正确的聚类数,使用了肘形法。
肘方法针对不同数量的聚类运行 K-means 算法,并找到每个数据点到聚类质心的平方距离之和,也称为类内平方和
K-Means 算法根据卫生保健质量、检测次数、确诊病例、死亡和康复病例将国家分为五个不同的组。
*# Fitting K-Means to the dataset*
**kmeans = KMeans(n_clusters = 5, init = 'k-means++', random_state = 42)
y_kmeans = kmeans.fit_predict(data_k)***#beginning of the cluster numbering with 1 instead of 0*
**y_kmeans1=y_kmeans
y_kmeans1=y_kmeans+1***# New Dataframe called cluster*
**cluster = pd.DataFrame(y_kmeans1)**# Adding cluster to the Dataset
**data_k['cluster'] = cluster**#Mean of clusters
**kmeans_mean_cluster = pd.DataFrame(round(data_k.groupby('cluster').mean(),1))
kmeans_mean_cluster**
按 K 均值聚类的国家
按 K 均值聚类的国家
聚集在不同集团中的国家
根据卫生保健条件、进行的新冠肺炎检测和新冠肺炎病例数,将国家分为 5 组
国家的分类详细信息
第一组:印度、丹麦、加拿大、厄瓜多、巴西、南非等国家。
代表以下国家
- 低数量的测试,
- 确诊病例较少,
- 死亡人数最少
- 高人口密度
- 营养不良率更高,基本卫生条件差
第二组:德意
代表以下国家
- 执行的最高测试次数
- 活动案例的最高数量
- 大量的死亡
- 最高人口密度
- 更好的保健条件
第 3 组:中国、法国、伊朗、西班牙和英国
代表
- 执行的最高测试次数
- 相对较高数量的有效案例
- 相对较高的死亡人数
- 相对较高的人口密度
- 更好的保健条件
第 4 组:澳大利亚、俄罗斯、阿联酋
代表国家
- 执行的高测试次数
- 活动案例的最少数量
- 最低的死亡人数
- 相对较低的人口密度
- 良好的保健条件
- 第 5 组:美国
代表 - 执行的高测试次数
- 最高数量的确诊病例
- 最高的死亡人数
- 最低人口密度
- 最佳保健条件
在世界地图上绘制族群
基于数据集中有限的数据点,希望了解哪些特征会影响新冠肺炎的死亡率。使用互信息分析特征重要性。
# considered heath indicators and test perfomed to understand the impact on confirmed COVID-19 cases
**names = ['total_covid_19_tests',
'inform_risk',
'inform_p2p_hazard_and_exposure_dimension',
'population_density',
'population_living_in_urban_areas', 'proportion_of_population_with_basic_handwashing_facilities_on_premises',
'people_using_at_least_basic_sanitation_services',
'inform_vulnerability',
'inform_health_conditions',
'inform_epidemic_vulnerability',
'mortality_rate_under_5',
'prevalence_of_undernourishment',
'inform_lack_of_coping_capacity',
'inform_access_to_healthcare',
'current_health_expenditure_per_capita',
'maternal_mortality_ratio',
'cluster']****from sklearn.feature_selection import mutual_info_regression, mutual_info_classif
from sklearn.feature_selection import SelectKBest, SelectPercentile
mi = mutual_info_regression(data_k[names], data_k['deaths'] )
mi = pd.Series(mi)
mi.index = names
mi.sort_values(ascending=False)
mi.sort_values(ascending=False).plot.bar(figsize=(10, 4))
plt.title(" Factor impacting COVID-19 deaths")**
用于分析的数据最后一次更新是在 2020 年 4 月 11 日,美国中部时间上午 10 点,代码可在 Kaggle 获得
编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里 。
新冠肺炎和干预——简单解释
本文由哥伦比亚大学的阿迪蒂·加格、伊莎·古普塔、尼拉杰·拉姆库马尔、赛·瓦伦·查拉和萨希尔·楚塔尼撰写。
这篇文章给读者提供了 3 样东西:
- 根据 SIR 模型 对新冠肺炎价差的简单解释
- 对模型的修改和干预措施的影响
- Live Tableau 仪表盘和交互式展平曲线便于理解
特别感谢教授。丹尼尔·盖塔来自哥伦比亚大学,他意识到了这个话题的重要性,于是上了额外的课来教授我们同样的内容。在这里,我们分享我们知道的一切,我们都需要了解新冠肺炎!
本文通过可视化冠状病毒的传播、实施的干预措施的影响以及对改进的 SIR 模型的模拟来解释新冠肺炎。
*现在,整个地球已经被封锁了将近两个月了!*感觉如何?随着疫情的进程在全球移动,我们正在学习生活在这种新常态中。增长不应该停止,相反,它应该是一个更加集体和协作的努力,以掩盖积压。随着新发现的揭露、新爱好的发现和新技能的掌握,我们哥伦比亚大学的学生更深入地研究了已发表的关于新冠肺炎的文献,以探索和预测干预对病毒传播的影响。
根据我们对这篇文章的研究,我们创建并整理了一些有趣的资源,让你们以最简单的方式理解冠状病毒背后的数学原理!
图片来自 Pixabay 的米洛丝拉娃·克里斯诺娃
从人类生活到全球经济,一切都受到冠状病毒的影响(新冠肺炎)。它起源于 2019 年的中国武汉市,几乎没有一个国家没有它。(是的!一些国家很幸运,如汤加、帕劳共和国(截至 2020 年 4 月 26 日)。虽然整个世界被这种病毒所分隔,但这种病毒也把我们紧密地联系在一起。伟大的流行病学家、研究人员和科学家正在努力寻找解决方案。每个国家都选择了自己的方式来对抗致命的冠状病毒。无论是韩国的早期检测和接触者追踪,新西兰和印度的全国封锁,还是意大利的未受控制的传播——每一个撞击事件都有值得借鉴的地方。更深入一点,了解差异,并通过交互式图表可视化影响是令人兴奋的。参考最近发表的一些惊人的研究论文,我们试图通过任何人都可以玩的图表来解释 COVID 传播、干预的影响以及它们对治疗个体的影响。
基本 SIR 型号
SIR 模型是理解新冠肺炎对全球影响的最简单和最常用的模型之一。它把人口分成三个主要部分——
易感*(还没有被感染的那部分人群)*
受感染的*(人口中受感染的部分)*和
康复的*(康复或死亡的那部分人口)*
根据病毒的传播速度和人口的恢复速度,人们以不同的速度从一个隔间移动到另一个隔间。这些比率还受到该国疫情的总体性质、所采取的干预措施以及这些干预措施的成功率的影响。
作者对罗纳德·罗斯爵士的爵士模型进行了注释
让我们解释一下这些著名的变量,它们被用来计算从一个车厢移动到另一个车厢的人数。
作者对罗纳德·罗斯爵士的爵士模型进行了注释
然后,可以使用这些简单的等式来评估人的运动:
SIR 模型方程
由罗纳德·罗斯爵士在爵士模型上的作者注释
很明显,从易受感染的移动到受感染的隔间的人数与β成正比,从受感染的移动到恢复的隔间的人数与γ成正比。
这让我们理解了主要干预的影响—
1.国家封锁和
2.早期发现,
减轻现成冠状病毒的影响。
干预如何影响这些运动?
作者图片
贝塔效应: 国家封锁减少了单个人类接触的平均人数。因此,导致接触率的降低。因此,单个感染者接触的平均人数也减少了。因此, 国家封锁或社会距离减少了β,即从易感人群转移到受感染人群的人数。
伽玛效应: 早期检测确保尽早检测出每一个疑似阳性病例。一旦一个人被检测为阳性,她/他就进入 100%的自我隔离状态,因此不能再感染任何其他人。由于 SIR 模型使用 I(感染病例数)作为“传染性”病例数,因此此人不再具有传染性,可以假定他已被转移到恢复室——最终要么恢复,要么死亡。因此, 早期检测增加了γ,即从受感染区室移动到恢复区室的人数。(基本上,小雅和小雅的人都在传播病毒)
让我们引入另一个重要参数 r0**,它是描述传染病爆发强度的再生数。因此,R_t 是描述在时间 t 时人口中传染病强度的再生数。显然,它只不过是β和γ的比率,因此受到干预本身的影响。阻止传播的干预力度越大,人口的 R_t 下降得越快。**
这是我们为你制作的一个互动图表的视频,用来检查如何改变β和γ,使曲线变平。
β、γ和δ对曲线展平的影响
请随意查看下面网站上的这张图!
**[## 破折号
编辑描述
dash-app-ba.herokuapp.com](https://dash-app-ba.herokuapp.com/)**
为什么展平曲线如此重要
正如我们在图中看到的,描绘“受感染”人员的曲线峰值越大,医院对病床和呼吸机的需求就越大。由于没有国家对这种程度的疫情做好准备,有限的资源是最大的担忧,特别是在像纽约、新泽西这样疫情最严重的地方。因此,在疫苗或真正的治疗方法被发现或发明之前,使曲线变平是控制死亡人数最简单的方法之一。
来源:健康方面
改装型号
正如我们所料,被感染的区域并不像听起来那样同质。这个 SIR 模型有几个版本,增加了各种不同假设的区间。我们的分析是通过添加两个独立的隔间进行的——暴露和死亡。最重要的是,受感染的部分根据严重程度分为 4 个部分——无症状、轻微、严重和危急。
作者图片
添加相应的移动速率后,看起来是这样的:
因此,根据疫情的强度,一部分易感人群会受到感染。暴露人群要么进入无症状状态,要么进入轻度状态,然后要么进入恢复状态,要么进入重度状态,如此等等。最终,来自危险舱人要么进入恢复舱,要么不幸进入死亡舱。
模拟
作者图片
在最近发表的大量研究论文中,参数参考了其中一个来源,引用如下。为了预测社交距离的影响,beta 来自新西兰的 COVID 数据集。同样,为了预测早期探测的影响,伽马射线是从韩国的 COVID 数据集得出的。
模拟结构|作者图片
这个最终的参数集与纽约州的 COVID 数据集一起用于绘制纽约的曲线。
纽约的模拟结果
请随意查看我们为你们制作的以下资源
- 新冠肺炎追踪器——一个 世界 tableau 仪表盘,描绘前四个月全国确诊病例和死亡人数**
- 新冠肺炎追踪器 —一个 国家 tableau 仪表盘描绘了美国的确诊病例和死亡病例
- 贝塔和伽玛效果浮动滑块
- Github 资源库
******注意:**这个项目包括阅读大量的文献,不断更新每天发布的新研究,以及探索每小时发布的新数据集。我们探讨了更多领域,如新冠肺炎对经济的影响,特别是供应链、就业、医疗保健行业和人们的情绪。虽然这些主题在未来的探索中非常令人兴奋,但截至 2020 年 4 月,它们并没有提供可靠的资源。最受欢迎和最可靠资源的数据集最近一次更新是在一月份。我们通过用新研究中发布的影响参数外推供应链或就业的旧数据集进行了试验,但由于新冠肺炎极其动态和不稳定的局势,我们正在等待更可靠的数据集发布,而不是基于几个假设做出一个数据集。研究这个主题是令人兴奋的,虽然一个人的研究可能很早就过时了,因为有成千上万的人在流传,我们希望每个人都能够探索这个主题,并在需要的情况下随时寻求我们的帮助。 在这里 ,我们分享了一份我们进行的所有研究和探索的文献的简明链接列表!这个话题听起来可能有点吓人,但是这个世界需要更多的数据科学家来研究它!一定要联系我们中的任何一个人,以防有需要!
感谢以下参考资料:
利用迁移学习进行新冠肺炎和肺炎检测
用于新冠肺炎和肺炎检测的具有网格搜索优化参数的 ResNet50 转移学习
来自 pixabay 的 Img 通过链接
在以前的帖子中,我们为商业问题创建了几个 CNN 网络,从时尚设计,癌症检测,到动物检测等等。在本帖中,我们将重温 CNN 的话题。但是,我们将使用迁移学习,并在著名的 CNN 架构 ResNet50 上构建网络,而不是从头开始创建模型。
"如果说我看得更远,那是因为我站在巨人的肩膀上."艾萨克·牛顿在 1675 年
像平常一样,拆分成如下:
- 背景&问题
- ResNet 概述
- 数据审核
- 列车型号
- 外卖
让我们开始旅程吧🏃♀️🏃♂️!
1。背景&问题
人工智能和人工智能已经彻底改变了医疗保健和医药行业。根据发表在《自然》杂志上的一项研究,在从乳房 x 光片中诊断乳腺癌方面,人工智能比医生更准确。最近,来自谷歌健康和伦敦帝国理工学院的研究人员根据近 29000 名女性的 x 光图像训练了一个模型。该算法在阅读乳房 x 光片方面胜过六名放射科医生👏👏。
在这里,我们的目标是自动检测和分类胸部疾病的过程,并减少检测的成本和时间。
2。ResNet 概述
ResNet50 是何等人在他们 2015 年的论文图像识别的深度残差学习中介绍的一种 50 层深度残差网络。它以剩余学习为基础,与 ResNet101 和 ResNet152 等公司使用的架构相同。
那么,什么是剩余学习呢?通常,在创建神经网络时,“越深越好”。随着图层越来越多,网络往往会学习到更多具有更好的泛化能力的要素。然而,这是有限度的。随着模型的深入,神经网络的训练变得困难,模型性能开始饱和甚至下降。这主要是由臭名昭著的消失梯度问题造成的。当梯度反向传播到更早的层时,导数的重复乘法使得梯度无限小,这使得不可能更新更早的层的权重。剩余学习是解决这一问题的突破口之一。
与学习输入图像特征的 CNN 相反,残差学习学习“残差”(这不是很明显吗?🤭🤭).好吧,如果不是,残差可以理解为从输入图像中减去特征。ResNet 通过引入所谓的“标识快捷连接来实现这一点,它跳过了一个或多个中间层。换句话说,如图 1 所示,早期层的输出被提供给更深的层,而没有任何转换
图 1 剩余框图(图片由作者提供)
使用捷径连接,期望的映射是 F(X) + X 。所以,残差块只需要专注于残差学习 F(X) ,因为它至少可以通过强制 F(X) 为零来学习 X。跳过连接背后的直觉是,它比任何其他直接映射更容易学习残差。这驱使更深层去学习不同于输入已经编码的东西。同时,它允许训练非常深的网络,而不用担心退化问题。
ResNet 架构包含两种剩余块:身份块和conv 块。图 2 示出了身份块。主分支有一个卷积层,后面是批量归一化和一个激活层,通常使用 ReLu 。在这之后,另一个单位的卷积层,批量标准化和激活层。然后,我们添加第三卷积层和批量标准化。激活前,批量定额的输出与原始输入相加。当输入 X 的形状与主分支的输出相同时,恒等块工作良好。
图 2 身份框图(图片由作者提供)
第二种类型是 Conv 块,如图 3 所示。唯一的区别是在快捷路径中添加了卷积层和批量归一化,以匹配主分支的输出形状。
图 3 Conv 框图(图片由作者提供)
总之,ResNet50 架构包括 4 个 Conv 块和 12 个身份块,以及 1 个正常卷积层和 1 个密集层。
3。数据回顾
每一类给我们 133 张图片:健康的;新冠肺炎;细菌性肺炎;病毒性肺炎。图像保存在本地驱动器中,所以我们将使用 Keras 的 flow_from_directory() 方法来读取图像。具体来说,
image_generator = ImageDataGenerator(rescale = 1./255, validation_split= 0.2)train_gen = image_generator.flow_from_directory(batch_size = 8,directory= train_data_dir,shuffle = True,target_size = (256, 256), class_mode = ‘categorical’,subset= ‘training’)validation_gen = image_generator.flow_from_directory(batch_size = 8,directory= train_data_dir,shuffle = True,target_size = (256, 256),class_mode = ‘categorical’, subset= ‘validation’)
让我们来接触一下各个班级的形象。图 4 显示了灰度图像。像我这样的人一点也看不出他们的区别😭😭。但是不用担心😎😎!这是模特的工作。
图 4 数据样本图像
4。列车型号
如前所述,我们将从预先训练的 ResNet50 模型进行迁移学习。它是在 ImageNet 数据集上训练的,该数据集包含 1100 万张图像和 11000 个类别,与我们在这里获得的数据集相比是巨大的。
4.1 负载模型
首先,让我们加载模型,并指定如何根据我们的目的使用它。
basemodel = ResNet50(weights = ‘imagenet’, include_top = False, input_tensor = Input(shape = (256, 256, 3)))
注意,我们没有包括顶级分类层,因为我们将创建自己的分类器头。我们将输入张量形状定义为与图像生成器中的相同。
一般来说,迁移学习有不同的策略。如果预训练数据集和新数据集相似,并且数据集很小,我们可以冻结早期的层并训练其余的层。如果您的任务是处理大型数据集,您可能需要使用预训练模型中初始化的权重来重新训练整个模型。
在我们的例子中,我们的数据集非常小,允许我们冻结早期的层。所以,
for layer in basemodel.layers[: -10]:
layer.trainable = False
4.2 创建和训练模型
我认为这一节是有趣的部分,因为你将看到如何“站在巨人的肩膀上”。
仔细看下面的建筑。我们将 ResNet50 模型输出作为其后续层的输入。在为输出添加最后一个密集层之前,我们堆叠了 3 个带有 dropout 的密集层。
包括神经元数量和辍学率在内的参数在网格搜索中进行了实验,以显示最佳结果,尽管这里没有详细说明。
另请注意,我们使用两个指标来评估培训:F1 得分和准确性。根据我的大量实验,该模型在某种程度上倾向于将细菌性肺炎错误分类。因此,使用 F1 分数将使我们有一个平衡的模型性能。
headmodel = basemodel.output
headmodel = AveragePooling2D(pool_size = (4,4))(headmodel)
headmodel = Flatten(name= ‘flatten’)(headmodel)
headmodel = Dense(256, activation = “relu”)(headmodel)
headmodel = Dropout(0.4)(headmodel)
headmodel = Dense(128, activation = “relu”)(headmodel)
headmodel = Dropout(0.4)(headmodel)
headmodel = Dense(64, activation = “relu”)(headmodel)
headmodel = Dropout(0.4)(headmodel)
headmodel = Dense(4, activation = ‘softmax’)(headmodel)model = Model(inputs = basemodel.input, outputs = headmodel)model.compile(loss = ‘categorical_crossentropy’,optimizer = optimizers.RMSprop(lr = 1e-4, decay = 1e-6),metrics = [f1, ‘accuracy’])
此外,我们使用早期停止来监控进度,并使用检查点来保存权重文件。
earlystopping = EarlyStopping(monitor = ‘val_loss’, mode = ‘min’, patience = 10)
checkpointer = ModelCheckpoint(filepath = ‘weights.hdfs’, verbose = 1, save_best_only=True)
太好了。时段数(20)和批次大小(8)经过优化,可产生最佳结果。为了训练这个模型,
history = model.fit_generator(
train_generator, steps_per_epoch= train_generator.n//8,
epochs = 20, validation_data= val_generator,
validation_steps= val_generator.n//8, callbacks=[checkpointer, earlystopping])
4.3 评估模型
图 5 示出了模型精度逐渐增加到大约 0.75,并且损失减少到大约 0.65。还有一点就是训练过程是稳定的,没有突兀的波峰或波谷。
图 5 训练过程中的模型损失和精度曲线
图 6 显示了验证过程中的模型精度。该模型达到了大约 0.65 到 0.7 的验证精度,表明轻微的过度拟合。
图 6 验证期间的模型精度曲线
最后,让我们看看测试数据集上的模型性能。
evaluate=model.evaluate_generator(test_generator,steps=test_generator.n//4, verbose = 1)
图 7 示出了 15 幅图像的预测和实际类别。该模型对新冠肺炎的预测非常准确。如图 8 所示的分类报告表明,对于✨✨.,该模型对新冠肺炎的召回率为 100%这意味着在 10 幅新冠肺炎图像中,它成功地全部预测正确。对于肺炎,回忆并不理想,大约有 50%到 60%的预测正确。当然,这种模式还有改进的空间。
图 7 标有实际和预测类别的模型预测
图 8 模型分类报告
5。外卖
我们演示了如何使用迁移学习来创建新冠肺炎/肺炎预测的定制模型。只有大约 500 张图像,我们设法取得了不错的结果,特别是在新冠肺炎检测上。
接下来有趣的是,如果你想弄脏你的手,只在正常和新冠肺炎图像上改装模型。创造一个新冠肺炎探测模型将是一件美妙的小事,我们可以为对抗它做出贡献。
太好了!这是所有的旅程。希望你喜欢它。如果你需要代码,请访问我的 Github repos 💕💕。
新冠肺炎和数据隐私的未来
新冠肺炎·疫情正在证明数据对于有效应对紧急情况有多么有用,但这会对隐私产生影响吗?
3 月 28 日的西班牙官方公报(BOE 官方日报)3 月 28 日证实:西班牙政府已经委托数字化和人工智能国务秘书(SEDIA)紧急开发一种计算机应用程序,以支持对新冠肺炎病毒引起的健康危机的管理。
该应用程序的功能之一是可以对用户进行地理定位,以验证所声明的位置。由此,一场辩论开始了:像目前这样的紧急情况应该优先于公民数据的隐私权吗?
与中国监控模式的比较很快。无论是从措施的有效性来看,还是从剥夺公民自由和隐私的角度来看。其他一些国家,比如美国,以前也在敏感的国家安全争论下使用过监控和数据挖掘,比如反恐战争、将欧洲和美国的自由和隐私进行比较。像中国这样的模式在欧洲可翻译吗?在什么条件下?
欧洲数据保护委员会(EDPB)几天前已经在讨论这个话题。在题为“关于在新冠肺炎疫情背景下处理个人数据”的声明中,该机构已经承认“ GDPR (一般数据保护条例)提供了法律依据,使雇主和主管公共卫生当局能够在流行病背景下处理个人数据,而无需获得数据主体的同意”也就是说,GDPR 允许当局和雇主在流行病背景下处理个人数据,而无需主体的明确同意。该声明指出,使用与数字通信相关的数据,如移动设备的位置,只能在内容匿名的情况下使用,尽管为各州在不可能的情况下立法打开了大门并且总是受到与公共健康或安全相关的措施的限制。
西班牙数据保护局(AEPD) 也就此事发表讲话,称“数据保护不应该被用来阻碍或限制当局特别是卫生当局所采取的措施的有效性。”
一系列西班牙律师、研究人员、学者和其他专家对此问题表示关注,并在几天前向政府发出了一封信,信中他们倡导对公民数据进行合法、道德和透明的管理。
论文的作者首先强调了技术和数据使用在缓解这种紧急情况中可以发挥的相关作用,但他们警告了两个主要风险:
- 有些公司或个人可能会试图利用公众利益之外的数据(想象一下,如果在公共政府协议下发生类似剑桥分析公司丑闻的事情,利用苹果和谷歌的合作关系来帮助追踪使用他们手机操作系统的新冠肺炎)。
- 危机之外,侵犯公民隐私可能成为常态。
简而言之,技术,特别是应用于大数据和人工智能的技术,必须为人类和社会服务。为此,关键机制将是透明度及其道德使用,包括诸如偏见控制或身份保护等主题。
毫无疑问,保护我们的私人数据是一项基本权利,在这种时候,一个社会必须在这项权利和公共利益之间找到艰难的平衡。欧洲被认为在保护数据隐私方面处于领先地位,特别是在 GDPR (2018)以来的技术使用方面。然而,正如专家在上述信件中警告我们的那样,我们如何管理这场健康危机不仅会影响我们的健康或经济,而且可能还会影响政府通过使用技术能够行使的控制程度。
非常情况需要非常措施,但是,正如《EDPB 宣言》本身所表明的那样,总是在民主社会的必要和相称的条件下。
本文为原文翻译,发表于 everis 博客:https://blog . everis . com/es/blog/tecnolog % C3 %阿达/新冠肺炎-y-privacidad-de-datos
如果你喜欢阅读这篇文章,请 考虑成为会员 以便在支持我和媒体上的其他作者的同时,获得每个故事的全部信息。
如何创建一个酒吧比赛图表使用蓬勃发展的应用程序
利用新冠肺炎数据制作条形图的简易无代码方法
竞赛条形图是一个非常简单的工具,可以用来比较随时间变化的数量。简单来说,它是一个包含时间轴的条形图。
在本文中,我将解释如何准备一个新冠肺炎可视化使用蓬勃发展的应用程序。最终产品如下所示:
第一步:在蓬勃发展应用上注册
注册“蓬勃发展”是非常简单的程序一样,注册任何其他服务。
和 Tableau 一样,fluore 有免费和付费两个版本,免费版本的坏处,就和 Tableau 或者 GitHub 免费版本的情况一样,就是数据需要公开。如果你有高度敏感的信息,考虑注册付费版本。
格式的文件 excel 或 csv 格式的文件可以上传到蓬勃发展。
注意,制作酒吧比赛图时,列标题应为时间(日期、年份、回合等。)
除了条标签之外,类别和图像也可以并入到 fluore 中,这是可选的。
如果类别可用,则可以根据类别进行条形着色。
用于添加图像(国旗/球员图像、俱乐部徽章等。),需要提供图片网址。
报名蓬勃(非附属链接)。
步骤 2:数据收集
所有国家的新冠肺炎每日统计数据可在约翰·霍普斯金大学 Github repo 获得。
我们对回购中可用的每日全球时间序列数据感兴趣,如下所示。
数据来自约翰·霍普斯金大学 Repo(图片由作者提供)
第三步:数据预处理
来自 JHU 的数据有时间作为 blower 所需的列标题。但是,请注意,还有类似于 Lat 和 Long 的列,它们不是必需的。
此外,对于某些国家/地区,数据是基于省/州进行分离的,需要基于国家/地区进行汇总。
因此,需要对数据进行预处理以实现繁荣。
此外,图像 URL (国旗 URL)和地区名称也在预处理过程中被添加。
GitHub Gist 预处理
查看下面我的 Kaggle 笔记本中的另一个例子:
使用 Kaggle 笔记本探索和运行机器学习代码|使用来自 Fantasy Premier League 21 Full Player 的数据…
www.kaggle.com](https://www.kaggle.com/abhijithchandradas/fpl-top-scorers-flourish-race-chart)
第四步:在花体中准备视觉化
登录蓬勃发展应用程序,点击“新可视化”。
它将带你进入所有可用模板的列表(他们有一个非常容易使用的数据可视化模板的详尽集合)。
向下滚动并点击“条形图比赛”。它将显示一个带有一些虚拟数据的示例条形图。
点击可视化左上角的数据,查看当前可视化使用的数据。
要上传数据,点击上传数据,选择要上传的文件,点击确定。
将模式改为预览。瞧吧!你的视觉化准备好了!
步骤 5:自定义图表
条形图有许多方面可以定制,如条形的数量、条形的颜色、图表的布局、时间线的长度等。
这些选项在可视化右侧可用。
步骤 6:发布可视化
一旦您对可视化感到满意,只需点击导出并发布即可发布。你也可以获得嵌入链接,它可以用来在你的网站中嵌入可视化。
来自蓬勃发展应用程序的 Covid 比赛图表
Net net,这很简单!fluore 不仅仅是唯一一个可以用来制作比赛图表的应用程序,它也是我见过的最简单的一个。
Race 条形图可以用 python 或 r 编写,这涉及到大量的编码。在 Tableau 中,还可以准备比赛图表,在我看来,这对于初学者来说是非常困难的。如果你有合适格式的 excel/csv 文件,用它来制作比赛图表简直是小菜一碟。
如果你对视觉教程感兴趣,你可以看看这个 YouTube 视频,我在里面解释了如何制作比赛图表。
资源
所有代码和资源都可以在这个 GitHub repo 中访问。
成为会员
我希望你喜欢这篇文章,我强烈推荐 注册中级会员 来阅读更多我写的文章或成千上万其他作者写的各种主题的故事。
你的会员费直接支持我和你看的其他作家。你也可以在媒体上看到所有的故事。
这里有一些我写的其他故事,你可能会觉得有趣。
干杯!
从 python 字典给定值中提取键的四种方法
towardsdatascience.com](/how-to-extract-key-from-python-dictionary-using-value-2b2f8dd2a995) [## 如何在 Matplotlib/ Seaborn 中向散点图添加文本标签
使用 Seaborn 或 Matplotlib 库时,如何在 python 中向散点图添加文本标签的分步指南。
towardsdatascience.com](/how-to-add-text-labels-to-scatterplot-in-matplotlib-seaborn-ec5df6afed7a)
新冠肺炎,贝叶斯定理和概率决策。
来源: geralt ,via Pixabay 许可
编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里 。
没有一种测试能百分之百准确地检测出新型冠状病毒!然而,当我们被告知这些测试在检测 COVID 感染方面有 98.5%的准确性时,我们感到满意。但是这种准确性实际上意味着什么呢?
在回答这个问题之前,我们先来复习一些基本概念。
- **真阳性:**一个人同新冠肺炎检测阳性为新冠肺炎
- **假阳性:**一个人没有新冠肺炎检测阳性为新冠肺炎
- **假阴性:**一个人同新冠肺炎检测阴性为新冠肺炎
- **真阴性:**一个人没有新冠肺炎检测阴性为新冠肺炎
现在,让我们回顾一下准确度、精密度、灵敏度和特异性的含义。
准确度 =(真阳性+真阴性)/所有结果
精度 =真阳性/(真阳性+假阳性)
灵敏度 =真阳性/(真阳性+假阴性)
特异性 =真阴性/(真阴性+假阳性)
现在假设有 200 个病人。假设 100 名患者被感染,100 名患者未被感染。假设 100 个被感染的患者中有 99 个被检测为阳性,并且 2 个健康的患者也被检测为阳性。也就是说,99 人是真阳性,2 人是假阳性。1 名感染者假阴性,98 名未感染者真阴性*。现在我们来计算一下刚刚学的内容。*
**Accuracy** = (99 + 98) / 200 = 0.985**Precision** = 99 / (99 + 2) = 0.98**Sensitivity** = 99 / (99 + 1) = 0.99**Specificity** = 98 / (98 + 2) = 0.98
看起来不错,对吧?现在让我们试着了解更多关于特异性的知识。这意味着,在 100 名未感染新冠肺炎病毒的患者中,只有 98 人检测结果呈阴性。所以,假设一个人没有携带病毒,他检测结果为阴性的概率是 0.98。
现在让我们潜得更深!概率,即给定一个人已经有了 covid,测试阳性将由条件概率给出,
【p(+|c⁺)=灵敏度= 0.99。 同样,健康患者检测阴性的概率将为
【p(-|c⁻)=特异性= 0.98。
我们得到了条件概率,但这有什么用呢?现在假设我们从人群中随机挑选一个人并对他进行测试。他检测呈阳性,但他真的感染了新型冠状病毒的概率有多大。换句话说,在这里我们有兴趣找到 P(C⁺|+) 。
现在根据贝叶斯定理,
P(A | B)= P(A)P(B | A)/(P(A)P(B | A)+P(非 A)P(B |非 A))
因此,如果我们知道 P(C⁺) ,我们可以通过代入上式中的值来轻松计算 P(C⁺|+) 。所以,为了计算p(c⁺】,你可以用你所在国家的病例数除以总人口数。在我的例子中,它小于 0.0001,这是非常罕见的。让我们来计算一下 P(C⁺|+).
p(c⁺|+)——贝叶斯定理在起作用。
0.005!你猜到了吗?我打赌不会!这意味着,即使一个随机的人被检测为阳性,也有不到 0.5%的几率他真的感染了病毒。
现在,让我们说,你生活在一个更容易发生的地区,现在你感染冠状病毒的机会增加了 10 倍。即使这样, P(C⁺|+) = 0.047,也就是说,如果检测结果为阳性,那么你实际被感染的几率小于 5%。
这是所有罕见病的问题。
好了,我们明白了为什么随机测试新冠肺炎是个愚蠢的想法。此外,如果你生活在一个更容易感染病毒的地区,检测结果仍然呈阳性意味着你被感染的几率低于 5%。但是等等,混合测试呢?
假设住在红区的人有新冠肺炎的概率是 0.001 到 0.005。最近有消息称,在新病例开始出现后,武汉正计划对所有 1100 万居民进行检测。根据当前方案,16 次 RT-PCR 检测可检测 40 个样本(最多 3 个阳性)。这可以在 93 个 RT-PCR 测试中测试多达 961 个样本(最多 10 个阳性)。
假设我们收集了 x 个样本,一个人拥有 Covid 的概率为 p。那么,至少一个人拥有 Covid 的概率由下式给出
P = 1 - (1-p)^x
现在,让我们制定一些规则。我们希望选择 x,这样如果一个 x 样本池被检测为阳性,我们希望至少有一个人患有新冠肺炎的概率大于 90%。我会用 R 作为编程工具。
我们应该选择多少样品进行混合测试
这里, pc 表示 x 个样本中至少一个被感染的概率。
prob 是 **P(C⁺|+,**利用贝叶斯定理计算得出。现在,我们绘制 x(样本数量)对 p(一个人拥有 covid 的概率)。
因此,在调查了一个地方的确诊病例数后,如果我们想测试整个人群的新冠肺炎,我们可以使用这个模型来选择样本数进行混合测试。
因此,这有助于我们采取概率决策来选择样本数量。我选择了 90%的 p 值,这可能会让医生们更有信心。另一方面,增加样本数量会引发其他问题。因此,专家在做出最终决定之前可以调整参数。感谢阅读!
.
新冠肺炎伯特文学搜索引擎
在过去的几周内,研究工作和研究论文的数量在持续增加,以对抗这种冠状新冠肺炎邪恶病毒。组织这些海量的数据现在是最重要的,这是这项工作(代码,数据)试图实现的,作为一个 Kaggle 竞赛的一部分,该竞赛试图找到智能的解决方案来组织大量不断增加的研究知识。
我们的方法是嵌入研究论文的段落,嵌入查询,然后运行余弦相似性来获得最相似的段落
我们构建了这个代码以在 google colab 上无缝运行,与 google drive 连接,并使用 kaggle api 将数据直接下载到 google colab,因此没有数据被下载到您的设备,也不需要强大的 GPU,因为所有这些都是通过 google colab 免费完成的,您可以在这里找到处理后的数据和结果嵌入。
在本教程中,我们的目标是通过一种使用 BERT 构建搜索引擎的方法,您可以向它提供一个问题( query ),比如
- 关于医疗保健已经发表了什么?
- 在实时医疗保健服务中使用人工智能,以人工无法完成的方式评估干预措施、风险因素和结果
- 动员增援医务人员解决不堪重负的社区的短缺问题。
- 等问题。
我们的方法是
- 提取每篇研究论文的段落(处理过的数据 ) ( 代码段)
- 从预训练的 BERT 中获得上下文化嵌入,该 BERT 在自然语言推理(NLI)数据(代码段)上进行了微调
- 对查询应用上下文嵌入(代码段
- 对段落和查询应用余弦相似度,得到最相似的段落,然后返回这些段落的论文(代码段)
BERT 用于嵌入,然后余弦相似度得到相似段落
伯特是什么?
已经提出了多种语言建模方法,它们可以分为两大类
- 基于递归的 seq2seq 模型
- 基于变压器的模型(BERT)
基于递归的 seq2seq 模型
使用LSTM(RNN 的改进),用于编码器解码器架构
编码器使用双向 LSTM 构建,对输入文本进行编码,构建内部编码,
解码器接收生成的内部编码和参考字,解码器还包含 LSTM ,能够一次生成一个字的输出。
你可以在我们的系列中了解更多关于使用基于 seq2seq LSTM 的模型进行文本摘要的方法,在那里我们将详细介绍这些模型是如何构建的。
基于变压器的模型
另一项研究工作试图在不使用递归模型的情况下建立语言模型,以使系统在处理长句时更加强大,因为 LSTM 发现很难表示长序列的数据,因此很难表示长句。
变压器依赖于注意力模型,特别是自我注意力,这是一种神经网络,用于理解如何关注输入句子中的特定单词,变压器也内置于编码器/解码器结构中。
来自 http://jalammar.github.io/illustrated-transformer/的
编码器和解码器各自包含一组块,
**编码器:**包含一个块堆栈,每个块包含(自关注,前馈网络),在这里它接收输入,并以双向方式关注来自输入的所有文本,前一个和下一个单词,然后将其传递给前馈网络,这个结构(块)根据编码器中的块数重复多次
**解码器:*然后在编码完成后,编码器将这个内部编码传递到解码器步骤,解码器步骤也包含多个块,其中每个块都包含相同的自关注(带有 catch) 和一个编码器解码器关注,然后是一个前馈网络。自我关注的不同之处在于,它只关注前面的单词,而不是整个句子。因此解码器接收编码器的参考和内部编码(在概念上与 seq2seq 编码器-解码器循环模型的编码器相同)
你可以在 jalammar 的博客中了解更多关于 Transformer 架构的信息
现在伯特来了
结果是,我们不需要整个 Transformer 采用一个可微调的语言模型来完成 NLP 任务,我们可以只使用解码器,就像 OpenAI 提出的一样,然而,由于它使用解码器,模型只训练一个正向模型,而不考虑前面和后面(因此是双向的),这就是为什么引入了 BERT,我们只使用 Transformer 编码器。
BERT 是对原始转换器的修改,它只依赖于编码器结构,我们只使用编码器块来应用双向方式,这看起来很不直观,事实就是如此!!,由于双向条件反射将允许每个单词在多层上下文中间接看到自己(这里有更多关于它的信息),所以 BERT 在训练中使用了使用面具的巧妙方法。
来自 http://jalammar.github.io/illustrated-bert/的
在给定大量文本的情况下训练 BERT,对 15%的单词应用掩码,然后训练它预测被掩码的单词。
我们主要使用一个预训练的 BERT 模型,然后使用它作为我们任务的基石,这些任务主要分为两种类型
- 任务具体任务(问答,文本摘要,分类,单句标注,……。)
- 构建一个语境化的单词嵌入,这就是我们今天的目标。
所以让我们建立一个语境化的单词嵌入
来自http://jalammar.github.io/illustrated-bert/
实际上有多种方式从 BERT 编码器块(在这个例子中是 12 个块)生成嵌入
来自http://jalammar.github.io/illustrated-bert/
在本教程中,我们将专注于使用预训练的 BERT 构建句子嵌入的任务,我们将简单地将我们的句子传递给预训练的 BERT,以生成我们自己的上下文嵌入。
B-我们的方法:
1.将冠状病毒新冠肺炎的文献数据集分成段落,数据集可以在这里找到在 kaggle 竞赛中,(代码段
处理过的数据集可以在这里找到,读取和处理 json 文件的步骤可以在这里找到,在这里我们将 json 文件转换成 csv,我们使用与 maksimeren 相同的过程
2.对句子进行编码(代码段)
我们使用由 UKPLab 提供的名为句子转换器的库,这个库使得使用 BERT 和其他架构如 ALBERT 和 XLNet 进行句子嵌入变得非常容易,它们还提供了简单的接口来查询和聚集数据。
!pip install -U sentence-transformers
然后,我们将下载预训练的 BERT 模型,该模型根据自然语言推理(NLI)数据进行了微调(代码部分)
**from** **sentence_transformers** **import** SentenceTransformer
**import** **scipy.spatial**
**import** **pickle** **as** **pkl**
embedder = SentenceTransformer('bert-base-nli-mean-tokens')
然后我们将对段落列表进行编码(处理后的数据可以在这里找到)
corpus = df_sentences_list
*corpus_embeddings = embedder.encode(corpus,show_progress_bar=True)*
3.编码查询并运行相似性(代码段)
查询是我们需要找到答案的句子,或者换句话说,在段落数据集中搜索相似的段落,从而找到相似的文献论文
*# Query sentences:*
queries = ['What has been published about medical care?', 'Knowledge of the frequency, manifestations, and course of extrapulmonary manifestations of COVID-19, including, but not limited to, possible cardiomyopathy and cardiac arrest', 'Use of AI in real-time health care delivery to evaluate interventions, risk factors, and outcomes in a way that could not be done manually', 'Resources to support skilled nursing facilities and long term care facilities.', 'Mobilization of surge medical staff to address shortages in overwhelmed communities .', 'Age-adjusted mortality data for Acute Respiratory Distress Syndrome (ARDS) with/without other organ failure – particularly for viral etiologies .']query_embeddings = embedder.encode(queries,show_progress_bar=**True**)
然后,我们将运行嵌入的查询和先前嵌入的段落之间的余弦相似性,并返回 5 个最相似的段落,以及它们的论文的细节
*# Find the closest 5 sentences of the corpus for each query sentence based on cosine similarity*
closest_n = 5
print("**\n**Top 5 most similar sentences in corpus:")
**for** query, query_embedding **in** zip(queries, query_embeddings):
distances = scipy.spatial.distance.cdist([query_embedding], corpus_embeddings, "cosine")[0]
results = zip(range(len(distances)), distances)
results = sorted(results, key=**lambda** x: x[1])
**for** idx, distance **in** results[0:closest_n]:
print("Score: ", "(Score: **%.4f**)" % (1-distance) , "**\n**" )
print("Paragraph: ", corpus[idx].strip(), "**\n**" )
row_dict = df.loc[df.index== corpus[idx]].to_dict()
print("paper_id: " , row_dict["paper_id"][corpus[idx]] , "**\n**")
print("Title: " , row_dict["title"][corpus[idx]] , "**\n**")
print("Abstract: " , row_dict["abstract"][corpus[idx]] , "**\n**")
print("Abstract_Summary: " , row_dict["abstract_summary"][corpus[idx]] , "**\n**")
C-结果
=========================================================
==========================Query==========================
=== What has been published about medical care? =========
=========================================================
Score: (Score: 0.8296)
Paragraph: how may state authorities require persons to undergo medical treatment
Title: Chapter 10 Legal Aspects of Biosecurity----------------------------------Score: (Score: 0.8220)
Paragraph: to identify how one health has been used recently in the medical literature
Title: One Health and Zoonoses: The Evolution of One<br>Health and Incorporation of Zoonoses =========================================================
==========================Query==============================
=== Knowledge of the frequency, manifestations, and course of extrapulmonary manifestations of COVID-19, including, but not limited to, possible cardiomyopathy and cardiac arrest =====
=========================================================Score: (Score: 0.8139)
Paragraph: clinical signs in hcm are explained by leftsided chf complications of arterial thromboembolism ate lv outflow tract obstruction or arrhythmias capable of
Title: Chapter 150 Cardiomyopathy------------------------------------
Score: (Score: 0.7966)
Paragraph: the term arrhythmogenic cardiomyopathy is a useful expression that refers to recurrent or persistent ventricular or atrial arrhythmias in the setting of a normal echocardiogram the most commonly observed rhythm disturbances are pvcs and ventricular tachycardia vt however atrial rhythm disturbances may be recognized including atrial fibrillation paroxysmal or sustained atrial tachycardia and atrial flutter
Title: Chapter 150 Cardiomyopathy=========================================================
==========================Query==========================
=== Use of AI in real-time health care delivery to evaluate interventions, risk factors, and outcomes in a way that could not be done manually
=========================================================
Score: (Score: 0.8002)
Paragraph: conclusion several methods and approaches could be used in the healthcare arena time series is an analytical tool to study diseases and resources management at healthcare institutions the flexibility to follow up and recognize data patterns and provide explanations must not be neglected in studies of healthcare interventions in this study the arima model was introduced without the use of mathematical details or other extensions to the model the investigator or the healthcare organization involved in disease management programs could have great advantages when using analytical methodology in several areas with the ability to perform provisions in many cases despite the analytical possibility by statistical means this approach does not replace investigators common sense and experience in disease interventionsTitle: Disease management with ARIMA model in time<br>series -------------------------------------------
Score: (Score: 0.7745)
Paragraph: whether the health sector is in fact more skillintensive than all other sectors is an empirical question as is that of whether the incidence of illness and the provision and effectiveness of health care are independent of labour type in a multisectoral model with more than two factors possibly health carespecific and other reallife complexities the foregoing predictions are unlikely to be wholly true nevertheless these effects will still operate in the background and thus give a useful guide to the interpretation of the outcomes of such a modelTitle: A comparative analysis of some policy options<br>to reduce rationing in the UK's NHS: Lessons from a<br>general equilibrium model incorporating positive<br>health effects
有关完整结果,请参考我们的准则笔记本
D-评论
我们对两者都印象深刻,
- 简单易用的句子转换器库,这使得应用 BERT 嵌入和提取相似性变得非常容易。
- 结果的质量给我们留下了深刻的印象,因为 BERT 是建立在表示文本上下文的概念上的,使用它可以得到真正相关的答案
- 我们相信,通过使用段落本身,而不仅仅是论文的摘要,我们不仅能够返回最相似的论文,而且能够返回论文中最相似的部分。
- 我们希望通过这一点,我们正在帮助构建一个不断增加的文献研究工作的世界,以对抗这种冠状新冠肺炎病毒。
电子参考文献
- 我们使用由 UKPLab 提供的名为句子转换器的库,这个库使得使用 BERT 和其他架构如 ALBERT、XLNet 进行句子嵌入变得非常容易,它们还提供了一个简单的接口来查询和聚集数据。
- 我们使用了来自 maksimeren 的代码进行数据处理,我们真心感谢他。
- 我们使用了画伯特的概念,在这里讨论 Jay Alammar 在说明我们的建筑如何工作时,我们也参考了他所做的多个插图和解释,他的博客信息量非常大,很容易理解。
- 我们使用 Conneau 等人在 2017 年讨论的预训练模型,在 InferSent-Paper(从自然语言推理数据中监督学习通用句子表示)中显示,对自然语言推理(NLI)数据的训练可以产生通用句子嵌入。
- 注意就是你所需要的变压器纸
- 伯特,伯特代码
本教程的代码可以在这里找到这里,代码被构建为在 google colab 上无缝运行,使用其免费使用的 GPU,我们还使用 kaggle API 将数据直接下载到 google colab,因此不需要既在本地运行代码也不需要在本地下载数据集。
我们还提供了所有经过处理的数据集和嵌入的段落(1GB),这些都需要一些时间来嵌入(所以你可以简单地使用它而无需再次运行嵌入),链接这里,这些都托管在 google drive 上,我们已经构建了代码,以无缝连接到 google drive,(了解更多有关连接 google drive 这里)
我们真的相信,通过本教程,您已经对 BERT 有了更多的了解,以及如何方便地使用它,我们也希望通过本教程,我们能够帮助研究界对抗冠状病毒(新冠肺炎)。
希望你们都平安无事。
新冠肺炎聚类分析
聚集受冠状病毒影响的世界国家
马丁·桑切斯在 Unsplash 上的照片
编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里 。
介绍
在过去的两个月里,冠状病毒疾病 2019(新冠肺炎)的新的主要流行病灶已被确定,并在全球迅速传播。到 2020 年 3 月 16 日,中国以外的新冠肺炎病例数量急剧增加,向世界卫生组织(世卫组织)报告感染的受影响国家、州或地区数量众多。
基于“令人震惊的蔓延和严重程度,以及令人震惊的不作为程度”,2020 年 3 月 11 日,世卫组织总干事将新冠肺炎局势描述为疫情[1]。这一事实和冠状病毒的快速传播导致全球许多国家采取严格措施限制公民。
另一方面,来自不同领域的许多科学家试图提供关于这种疫情水平疾病的见解。包括世卫组织和约翰·霍普斯金大学(JHU)在内的许多组织和大学向公众提供了呈现冠状病毒传播的数据和可视化结果[2,3]。JHU 系统科学与工程中心及其研究人员在 Github 中创建了一个数据仓库,提供世界各国关于冠状病毒的时间序列数据。这些数据包括每天确诊的病毒病例总数、死亡人数和从病毒中康复的人数。
本文试图利用聚类技术和可视化技术,对上述 Github 中的数据仓库提供的数据提供见解。
数据分析
首先,数据由三个数据集组成,即确诊病例、死亡病例和痊愈病例。每个数据集由数据集中每个国家从 2020 年 1 月 22 日到 2020 年 4 月 11 日的时间序列组成。每个数据集中还有一些额外的列,包括每个国家的省/州和经纬度坐标。下图提供了在任何预处理之前对其中一个数据集的一瞥。
图 1:任何预处理之前的数据集。
在执行了一些数据预处理之后,我们得到了干净的、准备好进行分析的数据集。此外,源数据是累积的时间序列,这意味着第二天的值是前一天的值加上新的案例。因此,对于该分析,时间序列被转换以表示每天的新情况。
此外,通过执行线性回归,为每个变换的时间序列计算趋势线系数。为了在 95%的显著性水平下获得具有统计显著性的结果,不具有统计显著性趋势(即趋势线系数的 p 值大于 0.05 的α水平)的国家将从分析中剔除。
此外,对相应国家的趋势线系数进行了聚类分析。关于算法部分,对标准化系数使用了 K 均值算法。该算法通过尝试将样本分成等方差的 n 组来对数据进行聚类,从而最小化被称为惯性或类内平方和的标准。使用基于惯性和平均轮廓法【4】的肘法【4】确定聚类数。
这些集群在交互式世界地图中被可视化,以便更好地了解情况。请注意,地图上未着色的国家不在本分析中,因为它们的趋势线系数在统计上不显著,或者没有它们的时间序列数据。图 1、图 3 和图 5 分别显示了基于确诊病例、死亡病例和康复人员的国家分组,而图 2、图 4 和图 6 分别显示了每个分组关于确诊病例、死亡病例和康复人员分组的百分比值的平均趋势系数。将鼠标悬停在图表 1、3、5 上,可以看到国家名称、它们所属的集群以及它们的百分比趋势线系数。此外,在图 2、4、6 中,有聚类名称、趋势平均值和属于该聚类的国家。
确诊病例
图 1:确诊病例的聚类
图 2:每个集群的平均趋势——案例
就对这些病例群的解读而言,美国的确诊病例似乎每天都在大幅增加。另一方面,第三组国家,即法国、德国、意大利和西班牙每天都有小幅增长。最后,土耳其,伊朗和英国描绘了大约一半的集群 3 的增量。这组国家中的所有其他国家显示出稳定的低增长。
确认死亡
图 3:确诊死亡病例的聚类
图 4:每组死亡人数的平均趋势
关于死亡数据集中的聚类,很明显,美国和意大利比其他国家具有最高的增长趋势。在第五组中,紧随其后的是西班牙和法国,其趋势略低于美国和意大利。第三组包括联合王国,第四组包括德国、伊朗、比利时和荷兰。这组国家中的所有其他国家都略有增加。
确认恢复
图 5:已确认恢复的集群
图 6:每个集群的平均趋势—已恢复
下面,关于从冠状病毒中康复的人的趋势的聚类可以在上面看到。包括德国和西班牙在内的第 3 组显示了最高的每日增量。第二组排在第二,包括伊朗和中国。增量等级中的第三组是组 5,包括法国、意大利和美国,其百分比增量值大约是第一组 3 的一半。此外,聚类 4 包括诸如奥地利、韩国、比利时、加拿大和瑞士之类的国家,聚类 5 包括集合中的所有其他国家,这些国家显示出较小的增量。
结果
根据上述关于冠状病毒确诊病例、死亡病例和康复人员的趋势线系数分析,在他们的日常增长中存在一些可识别的聚类。具体而言,在全世界确诊病例中,有四个不同的组群。在全球范围内确认死亡和康复人员的情况下,每组分别有五个聚类。请注意,每日新增病例数量低的国家,其死亡和康复数量也低,因此其增量也低。
结论
综上所述,本文利用 JHU 系统科学与工程中心提供的聚类技术和可视化数据,努力提供关于新冠肺炎病毒情况的见解。数据由三个数据集组成,特别是确诊病例、死亡和从病毒中康复的人。每个数据集包括世界各国的时间序列。对每个时间序列的趋势线系数使用 K-means 算法的聚类方法突出了经历某种程度上相同情况的世界国家的有意义的聚类。
参考
[1]世卫组织总干事在 2020 年 3 月 11 日新冠肺炎媒体吹风会上的开幕词。检索自:https://www . who . int/DG/speechs/detail/who-总干事-s-open-remarks-at-media-briefing-on-新冠肺炎-2020 年 3 月 11 日
[2]冠状病毒(新冠肺炎)。世界卫生组织。检索自:【https://who.sprinklr.com/
[3]冠状病毒资源中心。约翰·霍普斯金大学。检索自:【https://coronavirus.jhu.edu/
[4]袁,陈,杨,何(2019).K-Means 聚类算法中 K 值选择方法的研究。
新冠肺炎确诊病例——一个交互式网络应用程序
我如何使用 Dash 来制作我想看的图表
关于新冠肺炎峰值和浪涌的新闻遍布互联网,数据也很容易获得。 CDC 、 USAFacts 、 Worldometer 等都有很棒的数据可视化,但有时它们没有你想要的东西。我想看到每个州的新冠肺炎案例的折线图,所以我自己用破折号做了这个图。在本文中,我将介绍构建和部署 Dash 应用程序的过程,您可以在这里查看我的应用程序。
选择各个州将其数据添加到图表中
破折号
Dash 是一个易于使用的 web 应用程序框架。它允许您用 Python 编写简单的程序,生成漂亮的交互式数据可视化。Dash 应用程序有两个主要部分:1)应用程序布局和 2)回调。首先,让我们弄些样板文件出来。
我的应用程序的#Data prep code here
如下所示。数据可以在这里下载,数据被读入,一些列被删除。数据框架包含县级确诊的新冠肺炎病例,因此by_state.groupby
代码将这些数据整合到州计数中。最后,状态 ID 存储在一个列表中,供以后使用。还有几个样式设置用来改变按钮的颜色,稍后会详细介绍。
布局
这是你添加应用程序所有不同部分的地方。使用dash_html_components
,您可以添加 HTML 组件,如标题、段落和 div。使用dash_core_components
,您可以添加下拉菜单、按钮、图表等。请务必查看 html 和核心组件的文档,这样您就可以准确地添加您需要的内容。对于我的应用程序,三个最重要的交互式组件是用于选择州的清单、用于选择所有州的按钮和用于选择日期范围的日期选择器。您可以在下面看到应用程序布局的代码。
dcc.Checklist
组件允许用户选择他们想在图表中看到的州。它的 ID 是state-select
。options
来自上述的状态 ID 列表,而value=['NY','TX'
是初始值。labelStyle
将复选框和相关的状态 ID 放在一起,否则当浏览器窗口被调整时,它们会被分开。html.Button
有显示文本、ID、点击次数和样式变量。dcc.DatePickerRange
允许用户选择他们想要查看的日期。它有最小和最大允许日期以及初始开始和结束日期。初始可见月份决定了当您更改范围时显示的日历月份。
使用交互式日历选择日期范围
图表非常简单;它是用dcc.Graph
组件声明的。它的 ID 是'lines'
并且config=
部分删除了一个模式栏。
复试
Dash 应用程序的第二部分包含回调函数。这是赋予应用程序交互性的部分。它有一个简单的格式:有一个 decorator 后跟一个函数。应用程序的输入和输出在@app.callback
装饰器之后声明。每个输入和输出都遵循格式(component-id,component-property)
,其中 id 和属性引用回应用程序布局代码。
输出和输入都是列表。我的应用程序中有四个输入,每个都来自布局中描述的一个交互组件。这些输入然后被传递给update_graph
回调函数。来自state-select
输入的value
被传入grpnames
,来自button
的n_clicks
被传入clicks
,以此类推。对于我的应用程序,有两个输出都是从update_graph
回调函数返回的。Output('lines','figure')
将绘图发送给dcc.Graph
组件,而Output('button','style')
组件将样式发送给html.Button
组件。
update_graph
功能有几个步骤。首先,按钮的点击次数用于确定是否选择了“所有状态”。如果数量是奇数,则style
变量被设置为bl
。接下来,来自dcc.DatePickerRange
的日期被重新格式化,以符合下载的数据。
单击“所有状态”按钮以可视化每个状态的数据
plot the data
段创建数据帧的副本,并使用 melt 功能将其从宽格式转换为窄格式。这使得绘图变得容易,你可以在这里了解更多关于这种转换的信息。if/else 代码确定是否选择了“所有状态”,并相应地返回数据的子集。最后,数据被剔除,以包含使用dcc.DataPickerRange
选择的相关日期。
Plotly.express 用于绘制数据,x 轴为日期,y 轴为确诊病例数,并按州进行着色。注意x='variable'
和y='value'
是指 melt 函数生成的列名。Plot
和style
从回调中返回,并发送到布局组件,如输出语句中所声明的。
与 Heroku 一起部署
Heroku 是一个云平台,你可以在这里部署各种网络应用。它有很好的文档,易于使用,并支持 python 应用程序。要部署 Dash 应用程序,您可以遵循这里的简单说明。下面是我使用 WSL 在 Windows 中运行 Ubuntu 终端来部署我的应用程序的步骤。
#Step 1
mkdir covid_app
cd covid_app
现在,您已经创建了自己的目录并将其刻录到 cd 中,您需要设置一个虚拟环境并安装必要的库。
#Step 2
git init
virtualenv venv
source venv/bin/activate
pip install dash
pip install plotly
pip install gunicorn
您的目录中至少需要四个文件:1) app.py,2)。gitignore,3) Procfile,4) requirements.txt. app.py 就是你的 Dash app,里面包含了上面描述的代码。的。gitignore 文件应该如下所示:
venv
*.pyc
.DS_Store
.env
Procfile 没有文件扩展名并且包含一行简单的代码:
web: gunicorn app:server
可以用这个命令生成 requirements . txt:pip freeze > requirements.txt
。现在,您可以使用 heroku 部署您的应用程序,如下所示:
heroku create my-dash-app
git add .
git commit -m 'Initial commit'
git push heroku master
heroku ps:scale web=1
零碎东西
你可以在这里查看上述的 app。这是一个简单的交互式图表,它实现了我很想看到的可视化。我可能会扩展该项目,以包含其他可视化,并将尝试写下我所做的任何补充。也就是说,当你开始自己的 Dash 应用程序项目时,你可能需要注意一些其他的主题。其中之一是assets
目录。如果您在应用程序目录中创建了其中的一个,您可以包含 css 和 JavaScript 文件来为您的应用程序设计样式和添加功能。你可以在这里了解更多关于那个的信息。甚至还有专门为生物信息学设计的 Dash Bio 套件。我目前正在攻读生物信息学博士学位,所以我一定会探索这个功能,并在未来的文章中写出来。
从数据科学的角度看新冠肺炎(新型冠状病毒冠状病毒)
概述为什么新冠肺炎病例的官方统计数据不具有代表性,以及我们如何获得具有代表性的统计数据。我们还将了解如何计算致死率,有多少人死于新冠肺炎病毒,以及德国的重症监护情况。
免费牌照图片来自:https://www . pexels . com/de-de/foto/nummer n-not fall-alarm-war nung-3970330/
在接下来的文章中,我们将看看新冠肺炎官方统计的当前数据基础,主要是德国。解释了需要代表性研究的原因。讨论了“钻石公主”号游轮、“戴高乐”号和“西奥多·罗斯福”号航空母舰的调查结果、在圣克拉拉县的调查以及特别是在冈格特的调查。此外,研究表明,大约一半的新冠肺炎感染者没有症状或症状轻微。基于代表性研究,计算出新冠肺炎的可能致死率约为 0.3%,以及该值的统计不确定性有多高。计算出德国有多少人可能已经感染或已经被感染,从而表明德国有大量未报告的病例。这也说明了为什么与其他受疫情严重影响的国家相比,德国对疫情事件引起的重症监护高峰有充分的准备,以及为什么更大的高峰也可以用重症监护治疗。
作者:丹尼尔·哈克,数据科学硕士,现任数据科学家
更新:
- 17 . 04 . 2020:Gangelt 中使用的检测的特异性和敏感性包括
- 2020 年 4 月 23 日:RKI 公司的新声明,包括当前数据,包括对“查尔斯·德·戴高乐”号和“西奥多·罗斯福”号航空母舰的调查,包括对加利福尼亚州圣克拉拉县的调查
- 2020 年 4 月 24 日:增加了 Drosten 教授对 Gangelt 研究的评估
- 2020 年 4 月 30 日:包括当前数字
数据基础
对于数据科学家来说,希望尽可能完整和准确地收集数据,从而尽可能避免错误。这可以确保从数据中获得正确的信息,从而最大限度地减少误解的可能性。因此,问题是这种理想状态是否也适用于新冠肺炎的数据。
首先,人们必须考虑新冠肺炎试验进行到什么程度。在疫情开始时,德国的目标是追踪感染链以控制病毒。根据罗伯特·科赫研究所(RKI)的最初建议,符合以下标准的人应接受新冠肺炎病毒检测[1]:
- 有感冒症状并在发病前 14 天内与新冠肺炎确诊病例有过接触的人,或
- 任何有感冒症状并在症状出现前已在危险区域 14 天的人。
但是,这一程序能导致这样一个事实,即所有的新冠肺炎病例都被公开,因此官方的感染人数是正确的吗?
如果真的有可能找到一个感染者的所有接触者,这是可以想象的。该病毒的平均潜伏期为 5-6 天,甚至可以从 1-14 天不等[2]。因此,感染只有在几天后才变得明显。在疫情开始时,不知道自己被感染的感染者可以使用人员密集的公共交通系统,并参加允许密切个人接触的活动,如参观迪斯科舞厅或足球场。最初,即使出现症状,这些人也没有接受检测,除非他们与一个明显被感染或从危险地区回来的人接触。许多受感染的人无法用这种方法检测出来。
从 RKI 的角度来看,该建议在当时当然是可以理解的,因为检测能力有限,实验室不应负担过重。因此,有必要将注意力集中在最有可能的情况上。然而,从数据科学的角度来看,收集尽可能完整的信息并不是一种理想的状态。特别是因为这导致数据的变化,这意味着它们不能被认为是有代表性的。像“x 人感染了新冠肺炎病毒”、“x 人感染了肺炎”或“x %的感染者死于新冠肺炎”这样的精确说法是不可能的。应当使用诸如“发现 x 人感染了新冠肺炎病毒”、“发现 x 人感染了肺炎”或“发现 x %的感染者死亡”等表述。出于这个原因,代表性的研究是绝对可取的,这将在下文中讨论。
代表性研究
邮轮“钻石公主”号上的 COVID 19 案,可以算是有代表性的例子。所有的乘客和机组人员都在那里接受了测试,不管他们的症状如何,这样可以更近距离地观察。
新冠肺炎还散布在航空母舰上。在“戴高乐”号上所有的人都经过测试[19],在“西奥多·罗斯福”号上大约有 94%的机组人员[20]。然而,必须考虑到,游轮的中位年龄略低于 60 岁,因此高于人口的中位年龄。另一方面,对于航空母舰来说,机组人员平均更年轻、更健康。
为了得到更多有代表性的数据,看看冰岛也是值得的。在那里,与冰岛当局的测试平行,研究机构 deCode Genetics 也进行了测试。与冰岛当局只对有症状的人进行测试相反,deCode Genetics 选择了随机接受测试的人[5]。这样就可以获得总人口的代表性视图。
还有一项由斯坦福大学医学院在加利福尼亚州圣克拉拉县进行的研究。对 3,300 人的血样进行了检测。这些人是通过脸书的一则广告联系上的。他们还被要求有一辆车去测试站。该研究的作者写道,这导致了 19 岁至 64 岁的白人女性比例过高[21]。
最近,还提供了一份来自德国的代表性研究报告。波恩大学医院对受影响特别严重的恒河社区的约 1000 人进行了病毒和抗体检查。这项研究仍在进行中,但在对大约 500 人进行评估后,第一个中期结果已经公布。在公布中期结果后,第一个批评就出现了。有人批评说,只有一种检测方法可以可靠地检测新冠肺炎抗体,同时不会对其他无害的冠状病毒产生反应。但中期结果未提供所用试验的信息[6]。这项研究由来自病毒学、临床化学和药理学、卫生学和公共卫生以及医学生物统计学、计算机科学和流行病学研究所的教授在波恩大学医院进行。由于专家似乎正在进行研究,因此应首先假设使用了一种能够可靠地将抗体仅分配给新冠肺炎抗体的测试。如果将来确定该检验不合适,则必须更仔细地检查统计误差。
***2020 年 4 月 24 日更新:***dr . dro sten 教授(柏林查理特大学病毒学研究所所长)与 Dr. Streeck 教授(恒河研究主任、波恩大学医院病毒学研究所所长)联系后,他现在也期待一项“极其扎实、稳健的研究”[25]。
在本文的后续部分,将会反复引用这些测试,因为它们提供了数据情况的代表性视图。慕尼黑 LMU 克林库姆慕尼黑感染和热带医学系[7]和罗伯特科赫研究所(RKI) [8]正在进行两项进一步的研究。目前还没有结果。这种研究的表现只能受到欢迎,因为它们提供了该病毒的代表性情况。
无症状或症状轻微的感染者
一项来自中国的研究提供了第一个迹象,表明这种感染也可以在没有或只有轻微症状的情况下发生。这不是一项有代表性的人群研究,因为只调查了报告的病例。然而,它可以给人一种病毒在报告病例中如何起作用的初步印象。已经表明,大约 80%的报告病例有轻度症状,尽管也有无症状的感染[3]。
如上所述,"钻石公主"号游轮上的病例可被视为具有代表性,因为游轮上的所有人都接受了新冠肺炎检测。结果发现,大约一半的感染者在测试时没有表现出症状[4]。这与冰岛的研究机构 deCode Genetics 的样本结果一致,在那里,被测试的人是随机选择的,因此提供了一个有代表性的图片。同样,一半的感染者没有表现出任何症状[5]。类似的观察也可以在两艘航空母舰上进行。在“戴高乐”号上超过 50%的人没有表现出症状[19],在“西奥多·罗斯福”号上则是 60.7% [20]。
在所有有代表性的研究中,发现至少一半的感染者没有表现出任何症状。这说明了这种病毒在社会上的传播是多么不为人知。考虑到 RKI 的建议,即除了症状之外,一个人还必须与一个明显感染的人接触过,或者至少从一个危险地区返回过,这表明有大量未报告的病例。
Letality
看一下各个国家的官方死亡率数字,很大的偏差是显而易见的。截至 2020 年 4 月 29 日,德国的死亡率为 3.94%,全世界为 6.96%,比利时甚至为 15.67%。[9].
但是同一种病毒在不同国家会导致如此不同的致死率吗?
实际上,可以假设在类似的医疗情况下,一种病毒也是同样致命的。要做到这一点,我们必须记住致命性是如何计算的:它是通过比较被检测为感染新冠肺炎病毒的死亡人数与被检测为感染新冠肺炎病毒的人数来计算的。如上所示,在受感染人数中,有很大一部分未报告病例。但是,可以假定几乎所有的死者都被记录了下来。可以假定,这些人以前曾表现出强烈的症状,接受过强化医疗护理,并因此接受了新冠肺炎检测。RKI 说:“我们假设患者在死亡前就被诊断出来”[10]。尽管如此,当然也可能有估计数量的未报告案件,但根据前面的评论,这一数字估计要低得多。不同的致死率还表明,感染人群中未被发现的病例数量因国家而异。然而,如果感染人数高于官方已知人数,如果预计感染人数正确,则计算的致死率会降低。出于这个原因,有必要看看代表性的研究。
2020 年 4 月 23 日更新: 与此同时,RKI 做出了不同的声明:“我假设我们的死亡人数比官方统计的多”。[22]然而,没有说还会有多少人死亡。黑森州卫生部表示,到目前为止,尚未确定与冠状病毒有关的超额死亡率。柏林卫生局也表示,在过去的几周内,只能确定较低的超额死亡率。这可能主要是由于流感,而不是新冠肺炎[22]。应该注意的是,其他国家的死亡率很可能过高。与此形成对照的是,有尸检结果表明,统计数字中所列的新冠肺炎死亡并非都是由新冠肺炎造成的(见“新冠肺炎的尸检结果”一节)。从数据科学的角度来看,根据目前可用的数据,不能说死于新冠肺炎的人数是多于还是少于德国的统计数字。因此,官方数值将用于以下统计中。
要估计新冠肺炎的杀伤力,值得看一看“钻石公主号”邮轮的发现。游轮上的平均年龄高于正常人群。因此,死亡率约为 0.5%的年龄调整,两个方向的不确定性为 0.25 个百分点。尽管邮轮上的医疗服务无法像陆地上那样有重症监护床和呼吸器[11]来保证,但这一数值还是出现了。
在“戴高乐”号航空母舰上,1081 名船员的新冠肺炎检测呈阳性。其中,24 人不得不在医院接受治疗,其中 2 人在重症监护中,迄今为止没有人死亡[19]。在“T2”号航空母舰、“西奥多·罗斯福”号航空母舰(USS Theodore Roosevelt )的 660 名船员中查出了新冠肺炎[20]。一个死亡,对应的致死率为 0.15%。如果将两艘航母放在一起考虑,1741 名被感染的船员中,有 1 名被感染的船员死亡,对应的致死率为 0.06%。当然,这些值不能转移到总人口中,因为船员平均更年轻、更健康。
斯坦福大学医学院在加州圣克拉拉县进行的研究得出的致死率为 0.12%-0.2%。应该指出的是,人员的选择不是随机的。这些人是通过脸书上的一则广告联系上的。此外,他们还必须拥有一辆汽车,才能开车去试车台。这可能导致这样一个事实,即参与研究的人更年轻,流动性更强,因此比普通人群传播的病毒更远。这将导致对已经感染的人的过高假设,从而导致过低的计算致死率。研究中没有给出受检者的年龄分布。
由于在 Gangelt 的调查,来自德国的中期结果最近已经公布。据发现,Gangelt 有 15%的人口目前或过去已经携带该病毒[12]。509 人接受了检测,因此,从算术上讲,大约 76 人本身携带病毒。在介绍中期业绩时没有给出确切的数字。
下面将更详细地讨论 Gangelt 中的结果。当考虑这些数字时,必须考虑检测的特异性和敏感性。特异性是指在没有产生新冠肺炎抗体的人群中,检测结果为阴性的百分比。根据制造商的说法,特异性> 99%。如果假设在 509 名测试参与者中,大约 440 人没有产生抗体,那么大约有 4 人在统计中被夸大了。因此只有 72 人。然而,还必须考虑测试的灵敏度。
敏感度显示了实际产生新冠肺炎抗体并检测为阳性的人的百分比。根据制造商的说法,如果症状出现后至少 20 天,灵敏度为 100%,否则灵敏度可降至 87.5% [18]。如果我们现在查看 72 名被正确检测出新冠肺炎病毒的人,这将意味着 72 至 82 人实际上感染了新冠肺炎病毒。然而,令人怀疑的是,对于所有实际感染的人来说,至少所需的 20 天已经过去了,这就是为什么不能假定 100%的灵敏度。但是,如果敏感度降低,实际感染的人数就会增加。因此,继续假设先前计算的 76 名新冠肺炎感染者仍然被感染是合理的。如果该值高于 76 人,已感染人口的百分比将增加,因此计算的致死率将下降。
如果查看受感染者的β分布,可以看到百分比份额的实际值在 12%和 18%之间,准确度为 95%。因此,恒河受感染者百分比的最可能值是 14.79%。如果感染者的百分比可以从 15%确认到总共 1010 名研究参与者,则确定性增加,95%置信区间的范围减小到大约 13%到 17%。恒河受感染人口比例的最可能值是 14.98%。
Gangelt 感染人数百分比的β分布,丹尼尔·哈克
流行病学家克劳斯批评了中期结果:“人们不应该从这些家庭中获得所有结果,并将其转换为百分比,而最多是每户一人”[6]。作为一个原因,他指出,家庭内的感染风险比一般人口高许多倍,因此对所有家庭成员的完整统计是不正确的。但是这种说法站得住脚吗?在代表性研究中,如果可能的话,被调查的群体应该反映社会的代表性,以便能够代表社会。批评的是感染的风险没有可比性。但是冈格特的条件和德国其他地方一样。在德国的其他地方,未被发现的感染者仍然与住在同一家庭的人接触,并可能传染给他们,就像在 Gangelt 的情况一样。
15%的感染者的价值肯定不能转移到整个联邦领土,因为冈格特受到的影响特别强烈。但是,考虑到统计误差,致死率值可以转移到德国。因为新冠肺炎的死亡人数在德国各地都是一样的,而且必须上报给 RKI。
根据对 Gangelt 的研究的中期结果推断的感染者,丹尼尔·哈克
对于 Gangelt 调查的中期结果,给出的致死率为 0.37%。当考虑β分布时,可以以 95%的准确度假设实际致死率在 0.15%和 0.69%之间。密度函数显然是左硬/右斜的。因此,最可能的致死率值是 0.32%,低于计算的致死率 0.37%。
这里必须考虑到,0.37%的假定致死率是从 7 例已知死亡和 1879 例感染者中计算出来的,后者是从 Gangelt 研究的中期结果中推断出来的。这一推算数字来自于研究中观察到的 15%的感染者。如上所示,由于置信区间为 95%,Gangelt 的实际感染人数百分比在 12%至 18%之间。根据实际感染人数的不同,致死率也不同。如果我们现在看一下 Gangelt 12%感染者的下限,致死率是 0.47%,由此致死率的 95%置信区间在 0.19%到 0.87%之间。因此,致死率最可能的值是 0.4%。
有 12%感染者的 Gangelt 中致死率的β分布,Daniel Haake
如果考虑到 Gangelt 中感染者比例的置信区间上限为 18%,则结果是致死率为 0.31%,置信区间为 0.12%至 0.57%,最可能值为 0.26%。
有 18%感染者的 Gangelt 中致死率的β分布,Daniel Haake
总之,根据研究的中期结果,Gangelt 的感染者比例在 12%至 18%之间,平均致死率在 0.31%至 0.47%之间,最可能致死率在 0.26%至 0.4%之间,致死率范围在 0.12%至 0.87%之间。这些数字与“钻石公主号”的调查结果非常吻合,其中给出的致死率为 0.5%,致死率的可能范围为 0.25%至 0.75%。为 Gangelt 计算的致死率高于航空母舰上的致死率值(对于更年轻、更健康的船员为 0.06%),也高于为加利福尼亚州圣克拉拉县计算的致死率(通过脸书选择试验对象时为 0.12-0.2%)。通过与其他有代表性的研究进行比较,Gangelt 计算的致死率可以归类为似是而非。
通过使用确定的致死率,现在可以估计德国有多少人曾经或实际上已经感染了新冠肺炎病毒。根据约翰·霍普斯金大学的数据,截至 2020 年 4 月 30 日,在德国检测到的 161,539 名新冠肺炎感染者中,共有 6,467 人死亡[13]。以 Gangelt 计算的 0.37%的致死率,这意味着 1,747,838 人(约。总人口的 2.1%)曾经或已经感染了新冠肺炎病毒。以 0.32%的最可能致死率计算,已经有 2,020,938 名感染者(大约。占总人口的 2.4%)。致死率在 0.12%至 0.87%之间,感染人数为 743,333 至 5,389,167 人(约为 1,000 人)。占总人口的 0.9%至 6.5%)。这是对过去的回顾,因为死者是前段时间被感染的。
可见实际感染的范围还是蛮高的。因此,Gangelt 的最终结果非常有趣,可以缩小置信区间的范围,从而提高数据的可靠性。进一步的大规模代表性研究也是可取的。尽管感染人数不确定,但可以看出德国有大量未报告的病例。
分布
反复说感染人数是指数函数。但真的是这样吗?在病毒传播的初期,感染者会遇到对病毒没有免疫防御的人群。病毒可以在人群中迅速传播,导致受感染人数呈指数增长。然而,随着时间的推移,越来越多的人携带病毒或在过去已经被感染,并建立了免疫防御。一个受感染的人现在会遇到越来越多的被感染或曾经被感染的人,因此仍然会被感染的人会越来越少。
因此,传播速度在开始时增加,直到开始放缓,然后有一段时间,新感染人数比以前少。因此,新感染病例随时间的分布是一个逻辑函数。如果措施最初削弱了传播速度,这可能导致波动现象。
如果现在考虑感染者的总数,就可以得到一个 sigmoid 函数。起初,受感染人数急剧增加,直到达到高峰,受感染总人数的增加速度放缓。如果采取措施减缓传播速度,就会形成稳定期,随后受感染总人数会出现进一步的 S 曲线。
新冠肺炎造成的死亡
在约翰·霍普斯金大学和罗伯特·科赫研究所的统计数据中,已经统计了发现新冠肺炎的死亡人数。然而,这并不意味着这些人实际上死于新冠肺炎。这种事只有通过尸检才能弄清楚。但这恰恰没有发生。根据 RKI 的建议,应避免内部尸检和尸体解剖,以避免在打开尸体时产生传染性气溶胶。德国病理学家联邦协会(BDP)和德国病理学会(DGP)已经要求 RKI 撤销这一建议,并对感染新冠肺炎病毒的死者进行尽可能多的尸检[14]。目前的做法意味着官方数字没有显示实际上有多少人死于新冠肺炎。
2020 年 4 月 23 日更新: 同时,RKI 不再建议不进行尸检【24】。在日期为 2020 年 4 月 16 日的这篇文章的版本中,记载了 56 名尸检人员中有 47 名死于新冠肺炎[15]。然而,最近的数据显示 65 例尸检中有 61 例。这篇文章的作者不知道那些没有死于新冠肺炎的人是如何从 9 减少到 4 的。
在汉堡,人们偏离了推荐的做法,对证实感染新冠肺炎病毒的死者进行了尸检。据发现,在 65 人被解剖,61 新冠肺炎被发现是死因[24]。这意味着,约 93.9%的新冠肺炎尸检被发现是死因,约 6.1%不是。由于进行尸体解剖的人数仍然很少,93.9%的人仍然有一定程度的不确定性。
如果观察贝塔分布的 95%置信区间,可以看到在大约 86.9%到 98.3%的尸检电压范围内,应该发现新冠肺炎是死因。这里最可能的值是 95.2%。
如上所述,RKI 现在假定还有未列入统计数据的新冠肺炎死亡人数。因此,新冠肺炎死亡人数是多于还是少于统计数字,无法用现有数据来澄清。
但是在汉堡的尸检中有了另一个发现。每个尸检者都有一种或多种严重的先存疾病[16]。
病人的特别护理
新冠肺炎的死亡人数也取决于有多少病人可以在重症监护室接受治疗。因此,已采取措施使新感染人数的逻辑函数曲线变平。因为如果需要重症监护的病人多于有呼吸机的重症监护床位,那么很大一部分甚至全部都会死亡,因为他们无法接受所需的重症监护。因此,值得看一看每个国家每 100,000 名居民有多少重症监护病床。
每 100,000 名居民中重症监护病床的数量,丹尼尔·哈克
值得注意的是,与其他欧洲国家相比,德国处于有利地位。还值得注意的是,受新冠肺炎影响特别严重的国家每 100 000 名居民中重症监护病床的数量少得多。因此,德国每 100,000 名居民中重症监护病床的数量是比利时的两倍多,是意大利、法国和西班牙的三倍,是英国的五倍。
德国的医院向德国重症监护和急救医学跨学科协会报告可用重症监护病床的数量,其中有多少是普通病床或新冠肺炎患者病床,以及其中有多少需要转移。截至 2020 年 4 月 30 日,约有 1,256 家医院提供了这些数据[17]。根据这些数字,目前有 2,280 例经证实的新冠肺炎感染者在报告医院接受重症医学护理。共有 12,792 个免费床位。如果这一使用率也适用于未报告的医院,可以假设在所有重症监护病床被占用之前,同一时间的新冠肺炎感染者人数可能是今天的 6.6 倍。
如果考虑到在报道的 32,691 张特护病床中,有 17,619 张没有新冠肺炎保险的病床被占用,可以看出在德国对特护中未预见的高峰有可能作出良好的反应。如果我们现在再比较一下各国每 100,000 名居民中重症监护病床的数量,似乎受影响特别严重的国家,如比利时、意大利、西班牙、法国和英国,在没有疫情的情况下只能提供正常的护理。重症监护中的高峰无法被吸收,卫生系统很快达到其极限。
结论
可以说,德国在应对疫情的重症医学方面处于有利地位。例如,在目前的重症监护病床数量被完全占用之前,可能会有大约 6.6 倍的人同时感染新冠肺炎病毒。另一方面,受影响最严重的国家,如比利时、意大利、西班牙、法国和英国,似乎只能满足对重症监护病床的正常需求,而没有为疫情造成的高峰做好准备。
0.32%的可能致死率远低于官方统计数据。这一数值介于“查尔斯·德·戴高乐”号航空母舰和“西奥多·罗斯福”号航空母舰(更年轻、更健康的人群为 0.06%)或圣克拉拉县(0.12% — 0.2%)的调查结果和“钻石公主”号邮轮的调查结果(年龄调整后为 0.5%,置信区间:0.25% — 0.75%)之间。因此,用 Gangelt 计算的值似乎是合理的。由此得出的结果是,约 2,020,938 人,即约 2.4%的德国人口感染或曾经感染新冠肺炎病毒,感染人数从 725,747 人到 5,261,667 人不等(占总人口的 0.9%到 6.5%)。应该注意的是,这是对过去的回顾,因为那些死亡的人是在一段时间之前被感染的,因此死亡人数的报告有所延迟。一方面,可以看出未报告的案件数量相应较高。另一方面,它表明需要进一步的大规模研究,以尽量减少统计不确定性,并提供更准确的数字。
也可以说,大约 50%的感染者没有表现出任何症状。因此,为了有一个良好的数据基础,不仅应该检测有症状的人,还应该检测与明显感染者接触过的人。有必要进行代表性的检查,定期对社会各阶层进行新冠肺炎病毒检测。这是获得关于新出现症状、需要加强医疗护理的人员和致死率的可靠信息的唯一途径。在未来发生大流行的情况下,这应该尽早开始。
编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里 。
文献学
[1] I. Berres、K. Rydlink 和 N. Weber,“德国对新冠肺炎的测试”,《明镜周刊》,2020 年 3 月 5 日。【在线】。可用:https://www . Spiegel . de/wissenschaft/medi Zin/coronavirus-und-新冠肺炎-so-testet-德国-a-cbb 87 c 09-1804-45df-bb2b-8895 E4 da 91 e 2。[2020 年 4 月 10 日进入]。
[2] RKI,“SARS-CoV-2 冠心病 2019 年挂图”(2020 年 4 月 10 日[在线]。可用:http://www . rki . de/content/inz/n/neus _ corona virus/plug letter . html。[2020 年 4 月 10 日访问]。
[3] T. N .C. P .E. R .e .小组,《生命监测:2019 年爆发的新型冠状病毒疾病的流行病学特征》(中国疾病防治中心周报;《T3》BD)。页:1。页:1。113-122,2020 年。
[4] A .维拉和 s .L. Erdman,“几乎有一半的钻石公主巡航船乘客和船员患有冠状病毒,在测试时是无症状的,疾控中心报告,CNN,24。03.2020 .[在线]。可用: https://edition。CNN . com/2020/03/24/us/diamond princes 巡航舰-渐近测试/指标. html。[2020 年 4 月 10 日登陆]。
[5] ORF,“冰岛是一个先驱——从 2020 年 3 月 24 日开始的初步发现。可用资源:https://orf . at/stories/315908/。[访问日期:2020 年 4 月 13 日]。
[6]k . zinant,“对研究的批评和怀疑”,《德国南方报》,10。4.2020 年。[在线]。可用:https://www . sudd Deutsche . de/knowledge/heinsberg-herdenimunity aet 批评-1.4873480 。[2020 年 4 月 10 日访问]。
[7]lm 慕尼黑诊所——感染和热带病科,“联合对抗 coid:前瞻 coid-19 KOH hores 慕尼黑”(在线)。可得:T10[http://www . clinical . uni-muertes . de/department-for-infection and trom medicine/de/coid-19/koco 19/index . html]〔t11〕。[2020 年 4 月 10 日访问]。
[8]罗伯特-科赫研究所,“有多少人对新的冠状病毒免疫?— Robert Koch 研究所于 2020 年 4 月 9 日在全国范围内启动。[在线]。可用:https://www . rki . de/content/service/press/news/2020/05 _ 2020 . html。[2020 年 4 月 10 日访问]。
[9]静态数据,“2020 年 4 月 29 日受影响最严重国家的冠状病毒死亡率(coid-19)。”。可用资源:https://de . statista . com/statistics/data/study/1103785/survey/mortality rate-des-de-coronel virus-after-lauen/。[访问日期:2020 年 4 月 30 日]。
[10] ntv,“为什么死亡率这么低?2020 年 3 月 20 日[在线]。可用:https://www . n-TV . com/panorama/why-is-死亡率-so-low-article 21657232。html。[2020 年 4 月 10 日访问]。
[11]star,“隔离已有一个星期——情况越来越明显,2020 年 2 月 12 日[在线]。可用资源:https://www . stern . de/health/corona virus–交叉路口情况–钻石公主–spit-zu-9134930 . html。[2020 年 4 月 10 日访问]。
[12] H .教授。streeck 医生,g 博士,你好。哈特曼先生 Hartmann,m .博士,你好。Exner 和 m .博士,你好。施密特,波恩大学医院,09 年。2020 年 4 月。[在线]。可用: https://www。国家/地区. nrw/sites/default/files/asset/document/intermediate _ coid 19 _ case _ study _ gangelt _ 0 . pdf。[接入 10。[2020 年 4 月 4 日]。
[13]约翰-霍普金斯大学,“死亡率”2020 年 4 月 13 日。可用:t8【https://corona virus . jhu . edu/data/mortality】。[访问日期:2020 年 4 月 13 日]。
[14]德国病理学会 e.V .,“新闻稿:科罗娜死者应于 2020 年 4 月入住。[在线]。可用资源:https://www . pathology-DGP . de/der-DGP/current/message/新闻稿-an-corona-dead-should-obudad-be/。[2020 年 4 月 11 日访问]。
[15] 时间在线,“汉堡的冠状病毒:死亡人数上升”,2020 年 4 月 10 日。Available: https://www.zeit.de/hamburg/2020-03/冠状病毒-汉堡学校关闭-措施-事件-FAQ#how-许多人在汉堡-an-一个-covid-19 疾病死亡 。[访问 11.04.2020]。
[16] 世界,“在汉堡,没有人死于先前的冠状动脉疾病”。Available: https://www.welt.de/regionales/hamburg/article207086675/rightsmediziner-Pueschel-In-Hamburg-ist-none-no-no-no-no-pre-疾病-an-Corona-mort.html 。[访问 11.04.2020]。
[17] 德国重症监护和急诊医学跨学科协会,“DiVi 重症监护病房” 30.04.2020. [在线]。Available: https://www.divi.de/images/Documents/Tagesreport_IntensiveRegister_PDF/DIVI-IntensiveRegister_Tagesreport_2020_04_30.pdf 。[Access on 30.04.2020]。
[18] K. Rydlink 和 N。韦伯,“冠状病毒抗体测试 - 太早是真的,”17。可用: https://www.spiegel.de/科学/医学/冠状病毒-如-抗体检测-帮助-该-大流行-a-2258edcd-a304-4ee0-83cc-76a24f340c45 。2020 年 4 月 4 日)。
[19] 世界, “超过 1000 感染船上 — 病毒可能蔓延后停止在布雷斯特”, 20.04.19.Available: https://www.welt.de/politics/outland/article207365541/Corona-on-tracker-Charles-de-Gaulle-病毒-传播-se-on-stop.html 。[Access on 21.04.2020]。
[20]明镜政策,“美国航空母舰上三分之二的海员没有显示 2020 年 4 月 18 日。[在线]。可用:https://www . Spiegel . de/policy/foreign/coronel virus-on-USS-Theodore-Roosevelt-三分之二的美国航空母舰-无症状-a-b7d 51 ACB-9969-4262-BD 87-A0 e 93339 a1。[访问日期:2020 年 4 月 21 日]。
[21] C. Baars 先生。烤肉和 g。男性,“从死者身上验尸——NDR/wdr,21 岁。4.2020 年[在线]。可用:https://www . day chau . de/investigation/NDR-wdr/corona-autopsies-103 . html。[访问日期:2020 年 4 月 22 日]。
[22] NTV,“冠心病与 2020 年 4 月 21 日”。可用:T4〔https://www . n-TV . de/panorama/das-corona virus and-die statistics〕文章 21728569 . html?fbclid = iwar 2 ije 6 cvpliij 3 mfvfes j54 otbetmxr _ zmxx 9 hww 9 _ mqc 1 whumyi 9c _ y。[访问日期:2020 年 4 月 22 日]。
[23] E. Bendavid,b .穆拉妮,n .早,s .哦,还有。玲,r .Bromley-Dulfano,c .赖,z。魏斯贝格,r .萨维德拉沃克,j .Tedrow,d .特维尔斯基,a .波甘,t .Kupiec,d .标识符,r。Gupta 和 ioannidis,“coid-19 圣克拉拉县的抗艾滋病毒抗体阳性者”,斯坦福大学医学院,11。2004 年 4 月 20 日[在线]。可用:https://www . medr XIV . org/content/10.1101/2020。2006 年 4 月 14 日 06 463v 1 . full . pdf。[2020 年 4 月 21 日访问]。
[24] C. Baars 先生。烤肉和 g。男性,“从死者身上验尸——NDR/wdr,21 岁。4.2020 年[在线]。可用:https://www . day chau . de/investigation/NDR-wdr/corona-autopsies-103 . html。[访问日期:2020 年 4 月 22 日]。
[25] C .教授 Dr. Drosten,“Maybrit Illner Twitter”,2020 年 4 月 17 日。【在线】。可用:https://Twitter . com/maybritillner/status/1250929078930223105?ref _ src = tw src % 5 etfw % 7 ctw camp % 5 etweembed % 7 ctw term % 5e 1250929078930223105&ref _ URL = https % 3A % 2F % 2 FEM beds . br24 . de % 2 FEM bed % 3 FID % 3d 534998。【2020 年 4 月 24 日进入】。
北美新冠肺炎疫情的数据分析
深入了解新冠肺炎教在北美的传播
北美的新冠肺炎(迭戈·乌尔塔多)
介绍
这篇笔记的目的是描述当前北美形势的总体全景,这可以为人们采取有益的社会和健康措施以阻止新冠肺炎的传播服务。
自 2019 年 12 月下旬以来,一种新型冠状病毒疾病的爆发(新冠肺炎;此前被称为 2019-nCoV)在中国武汉被报道,随后影响了全球 210 个国家。总的来说,新冠肺炎是一种急性疾病,但也可能是致命的。由于大量肺泡损伤和进行性呼吸衰竭,严重疾病发作可能导致死亡。截至 2022 年 12 月 3 日,已确诊约 6.45 亿例病例,超过 664 万人死亡。
美利坚合众国
该数据集是从“纽约时报”获得的。(2021).美国冠状病毒(新冠肺炎)数据[4]
州
加利福尼亚
得克萨斯州
佛罗里达州
纽约
Covid 19 —墨西哥概述🇲🇽
我使用了确诊/死亡病例的时间序列,并结合了 covid 期间个人描述的数据集
确诊病例(迭戈·乌尔塔多)
确诊病例最多的时期。第三波(迭戈·乌尔塔多)
死亡病例墨西哥(迭戈·乌尔塔多)
死亡病例最多的时期(Diego Hurtado)
按年龄划分的死亡病例(Diego Hurtado)
按年龄确认病例范围(Diego Hurtado)
确诊病例的年龄分布(Diego Hurtado)
按性别分列的确诊病例比例(Diego Hurtado)
住院人数百分比(Diego Hurtado)
墨西哥的流动性🚗 🇲🇽
尽管感染人数激增,墨西哥总统在五月开始了“新常态”来“重新激活”经济
在商店外面,顾客们在等待,没有注意到健康距离。Av。CDMX Eje Central 的华雷斯角。2020 年 5 月 21 日。**图片:**angelica Escobar/福布斯墨西哥版。
观察:
我们可以看到,确认/死亡/流动性在 2021 年 5 月*****【新常态】*** 开始时开始增长**
墨西哥死亡病例(迭戈·乌尔塔多)
确诊病例(迭戈·乌尔塔多)
我使用不同的数据集来了解 Covid 19 期间墨西哥的移动趋势
“新常态是一种幻觉,我们正处于流行病活动中,我认为在这个时候提议重新开始社会活动实际上是自杀行为,我认为这会以前所未有的水平重新激活患病和死亡人数”——马拉奎亚斯·洛佩斯·塞万提斯
加拿大
各省确诊病例
各省死亡案例
各州案件
安大略
魁北克省
艾伯塔
****
顺便说一句:我正在寻找新的工作机会!📊
我正在寻找一个机会,在那里我可以把这些能力投入到我热爱的任务中去!
“当有人问你是否能胜任某项工作时,告诉他们,‘我当然能!那就忙起来,搞清楚怎么做。”—西奥多·罗斯福。
坐在办公桌前的金毛猎犬贝利(knowyourmeme,2022)
LinkedIn:https://www.linkedin.com/in/diego-gustavo-hurtado-olivares/
Msc。迭戈·乌尔塔多
商业分析顾问
催单
1918 年的疫情流感是近年来最严重的疫情。它是由带有禽类基因的 H1N1 病毒引起的。尽管对病毒的起源没有普遍的共识,但它在 1918-1919 年间在世界范围内传播。
全世界死亡人数估计至少为 5000 万,其中约 675,000 例发生在美国。
5 岁以下、20-40 岁和 65 岁及以上人群的死亡率较高。健康人群的高死亡率,包括 20-40 岁年龄组的人群,是疫情的一个独特特征。
流感疫情图表(Reeve 003143),国家健康和医学博物馆
疫情流感| 1918 年和 1919 年期间美洲和欧洲的死亡率。图表:“疫情流感。1918 年和 1919 年间美国和欧洲的死亡率每周因各种原因造成的死亡,以每年每 1000 人的死亡率表示。包括代表纽约、伦敦、巴黎和柏林的线条。
我们到了。
流感疫情图表(Reeve 003143),国家健康和医学博物馆
结论:
本文详细分析了新冠肺炎是如何影响世界的,以及由此得出的见解如何用于下游分析。这些图表还可以应用于其他场景,以推断关键的数据洞察力。
我希望你们都喜欢这篇文章。所有的图表都是使用 Plotly 创建的。Plotly 是一个非常棒的可视化库,用于构建交互式的图形。他们有 Python 和 JavaScript 的图形库。
领英:https://www.linkedin.com/in/diego-gustavo-hurtado-olivares/
编者按: 迈向数据科学是一份以研究数据科学和机器学习为主的媒体出版物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。要了解更多关于疫情冠状病毒的信息,你可以点击这里。
参考
[1]徐,郑,石,李,王,杨,张,黄,李,张,陈,… &泰,杨(2020).急性呼吸窘迫综合征相关新冠肺炎的病理表现。柳叶刀呼吸内科, 8 (4),420–422。
[2]m .卡斯塞拉、m .拉杰尼克、m .科莫、a .杜勒博恩、S. C .、r .迪那不勒斯(2020 年)。冠状病毒的特征、评估和治疗(新冠肺炎)。在 Statpearls【互联网】。StatPearls 出版社。
[3]世界卫生组织。(2020).冠状病毒疾病 2019(新冠肺炎):情况报告,72。
[4]美国和欧洲 1918-1919 年流感死亡率图表|奥的斯历史档案国家健康和医学博物馆(http://www . Flickr . com/photos/medical Museum/5857153474/in/set-72157614214049255),由 CC-BY-NC-SA(http://creativecommons.org/licenses/by-nc-sa/2.0/uk/)授权
[5]《纽约时报》。(2021).美国冠状病毒(新冠肺炎)数据。从https://github.com/nytimes/covid-19-data取回【在此插入日期】。”
[6]谷歌有限责任公司《谷歌新冠肺炎社区移动报告》*。
https://www.google.com/covid19/mobility/接入:< fecha >。*