TowardsDataScience 博客中文翻译 2020(九百九十一)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

何时不使用机器学习或人工智能

原文:https://towardsdatascience.com/when-not-to-use-machine-learning-or-ai-8185650f6a29?source=collection_archive---------8-----------------------

一厢情愿、不稳定和寻找模式的冒险

想象一下,你刚刚设法从临床试验中得到一个数据集。激动人心!为了帮助你进入角色,我编了一些数据给你看:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

假设这些数据点绘制出了治疗日 ( 输入"特征 " )和某个奇迹治愈的正确剂量(以毫克为单位)( 输出"预测 " )之间的关系,患者应该在 60 天的疗程中接受该剂量。

#The data:
(1,28)  (2,17)  (3,92)  (4,41)  (5,9)   (6,87)  (7,54) (8,3)   (9,78)  (10,67) (11,1)  (12,67) (13,78) (14,3) (15,55) (16,86) (17,8)  (18,42) (19,92) (20,17) (21,29) (22,94) (23,28) (24,18) (25,93) (26,40) (27,9)  (28,87) (29,53) (30,3)  (31,79) (32,66) (33,1)  (34,68) (35,77) (36,3)  (37,56) (38,86) (39,8)  (40,43) (41,92) (42,16) (43,30) (44,94) (45,27) (46,19) (47,93) (48,39) (49,10) (50,88) (51,53) (52,4)  (53,80) (54,65) (55,1)  (56,69) (57,77) (58,3)  (59,57) (60,86) ...

现在想象你正在治疗一个病人,这是第二天。你建议我们用多少剂量?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我真的希望你回答了*【17 毫克】*,因为这绝对不是一个骗人的问题。第四天怎么样? 41mg ?没错。

现在,你如何构建软件来输出第 1-5 天的正确剂量?你会尝试用机器学习 (ML)吗?换句话说,你会尝试在这些数据中找到模式,并尝试将它们转化为从输入到输出的配方( 【模型】 )。

如果你更喜欢视频版本,我来给你讲这个例子。

不,你当然不会!你可以让你的软件做你正在做的事情:在表格中查找答案。这样,你将在 60 天内 100%的时间里得到正确的答案。这里不需要模式,也不需要机器学习。

那么,什么样的情况需要机器学习呢?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在呢?今天是第 61 天。这里的正确答案是什么?

嗯,我们从来没有见过第 61 天的数据,所以我们没有办法在这里找到答案。我们能做什么?我们运气不好吗?机器学习能帮助我们吗?

那得看情况。

如果没有连接输入和输出的模式,那就算了。在这种情况下,没有什么可以帮助我们…除了实际的魔法,它并不存在(以防你认为机器学习就是它)。现在放弃吧!

我们必须找到一个有用的模式

但是如果有就是一个模式而如果(那就是一个大如果!)我们可以找到它,然后我们可以尝试将它应用到第 61 天,尝试预测/猜测正确的答案。也许机器学习可以帮助我们。

模式必须一般化

问题是在我们的数据中仅仅有一个模式是不够的。那就太方便了。该模式还必须与 60 天后的情况相关。如果第 61 天的条件完全不同,那么模式就不能概括 T1 了,那该怎么办?据你所知,也许在第 61 天,所有的病人都完全治愈或死亡,或服用不相容的药物。那么这个模式对你没有好处。

不稳定的宇宙

让它深入人心。如果你的数据不是了解未来世界的有用窗口——也许是因为疫情改变了所有的规则——那么你昨天的信息有多好也没用。如果你生活在宇宙中一个不稳定的角落,你将很难证明我们所说的 平稳性 假设 这些大致可以翻译成“我相信规则没有改变。”

我说的不是旁观者眼中的那种不稳定(就像当平均价格因为你忘了调整通货膨胀而随时间漂移)。处理轻微的非平稳性(当规则是时间的可预测函数时)是时间序列分析的全部内容。

我说的是那种你无能为力的剧烈的不稳定性,因为你的系统规则从根本上是不同的,你无法预测从一个时期到下一个时期。如果你过去的数据突然完全不适用于你的不稳定的未来,你就不能面无表情地用昨天来预测明天。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片:来源

也许你很幸运

但是如果一种模式并且如果这种模式与我们发现自己所处的新情况相关,那么我们就成功了。我们可以去找到旧数据中的模式,根据它制定一个食谱,然后使用这个食谱在第 61 天甚至更长的时间里取得成功!

发现模式并使用它们是机器学习的全部内容。

何时使用机器学习

应用机器学习(和人工智能)中,你不需要背诵你以前看过的记忆例子——你不需要 ML 来做这个,只需要查找它们!—你是来学习的。

只是重复老答案?ML 可以做的更好!它在新的例子上成功了。

你的任务?构建一个成功推广的解决方案(或者终止你的项目)。(“成功”是什么意思?我有一篇* 全篇为你指导 关于那个话题。)*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不是猫。来源

换句话说,如果您的解决方案不能处理从未见过的示例,那么它就没有用。不是打破静止宇宙所有规则的引人注目的新例子,而是对已知主题的轻微扭曲。

我们不是来像鹦鹉一样死记硬背的。我们是来概括新情况的。这就是机器学习的力量和魅力。

如果你之前(第 61 天)没看过这个 确切的 输入值组合,那么正确的输出答案是什么?好吧,也许我们可以把旧模式变成一个能做出合理猜测的食谱。

例如,如果你从成千上万张动物照片中训练了一个猫/非猫分类器,你可以让它告诉你一张全新的照片中是否有猫,但你不应该让它告诉你一幅画是否是立体派风格的。

机器学习适合你吗?

如果你厌倦了听我称它为事物标签编写代码的替代方法,让我试着换一种说法。

机器学习是一种使重复决策自动化的方法,包括从算法上寻找数据中的模式,并使用这些模式来制定正确处理全新数据的方法。

为了知道机器学习是否适合你,我有三个指南你可能会喜欢:

那么,有什么有用的模式吗?

还在好奇第 61 天?原来在我为这个例子制作的玩具数据中有一个模式。我知道这个,因为是我放在那里的。我甚至可以向你保证,它概括了你能想到的最大数量的一天,因为在这个极度不稳定的时代,我发现用数据工作是一种奢侈的安慰。

*#The data:
(1,28)  (2,17)  (3,92)  (4,41)  (5,9)   (6,87)  (7,54) (8,3)   (9,78)  (10,67) (11,1)  (12,67) (13,78) (14,3) (15,55) (16,86) (17,8)  (18,42) (19,92) (20,17) (21,29) (22,94) (23,28) (24,18) (25,93) (26,40) (27,9)  (28,87) (29,53) (30,3)  (31,79) (32,66) (33,1)  (34,68) (35,77) (36,3)  (37,56) (38,86) (39,8)  (40,43) (41,92) (42,16) (43,30) (44,94) (45,27) (46,19) (47,93) (48,39) (49,10) (50,88) (51,53) (52,4)  (53,80) (54,65) (55,1)  (56,69) (57,77) (58,3)  (59,57) (60,86) ...*

对于那些喜欢挑战的人来说,为什么不试试看你最喜欢的机器学习算法能否找到模式,并将其转化为有用的食谱?(回答在本页底部。)

我还怀疑可能会有更多的人通过分析方法而不是使用机器学习来获得它(参见这个来了解区别,加上我刚刚给你的线索),但 GLHF 除外。愿最佳方案胜出!

如果你热衷于尝试 ML,不要忘记按照正确的顺序做事——这里有一个逐步的指南来帮助你。

感谢阅读!

如果你渴望阅读更多我的作品,这篇文章中的大部分链接会带你去我的其他思考。你也可以在这里享受音频版本和我的统计视频播放列表在这里

脚注

如果你想知道第 61 天的答案,试着运行我用来生成数据的 R 函数(你可以粘贴它并在线运行这里)。

*# Here's the R code I used to generate the data:
doseFun <- Vectorize(function(x) {r <- round(93 * cos(x) ^ 2 + sqrt(exp(x/100))); return(r)})# Output the result for day 61:
print(doseFun(61))# Plot the deterministic function:
plot(x = 1:60, y = doseFun(1:60))*

因为我的函数被证明是确定性的,你可以通过分析(绘制图表并目测它以注意重复的模式)得到正确的答案,这里你并不真正需要机器学习,尽管它可以工作。这不是最有效的做事方式。

关于确定性设置中的简单机器学习方法的示例,请参见下面我的视频:

警告!

我希望我让你接触那个玩具数据集没有弊大于利。危险在于你养成了一个非常坏的习惯:没有正确地分割你的数据和测试你的系统 T21。

你们当中那些在提交解决方案之前拆分数据并验证解决方案的人应该得到额外的表扬。你的谨慎会对你有好处的!

那些在整个数据集上绘图/训练的人可能已经逃脱了… 这次。你没有被这个卡通化的例子迷惑的唯一原因是,真正的潜在模型是一个简单的模式,可以很容易地从数据中提取出来。这些在实践中很少见,因为你的同事可能在几十年前就发现了所有这些唾手可得的果实。如果你像对待这个玩具一样对待真实世界的数据,你会受到伤害。你可以在我的文章 如何成为一个人工智能白痴 中找到更多信息。

感谢阅读!人工智能课程怎么样?

如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:

在这里欣赏整个课程播放列表:bit.ly/machinefriend

与凯西·科兹尔科夫联系

让我们做朋友吧!你可以在 TwitterYouTubeSubstackLinkedIn 上找到我。有兴趣让我在你的活动上发言吗?使用表格取得联系。

当熊猫还不够

原文:https://towardsdatascience.com/when-pandas-is-not-enough-use-pandasql-d762b9b84b38?source=collection_archive---------17-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由库纳尔·卡拉Unsplash 上拍摄

蟒蛇短裤

非对等加入熊猫和 PandaSQL

Pandas 是最近最好的数据操作库之一。它可以让你切片和切块,分组,连接和做任何任意的数据转换。你可以看看这篇文章,它讲述了如何使用 Pandas 以一种简单明了的方式处理大多数数据操作。

但是即使熊猫一般来说有多棒,有时候你还是想再多要一点。假设您来自一个 SQL 背景,其中相同的操作太容易了。或者你想有更多可读的代码。或者您只想对您的数据框运行特殊的 SQL 查询。或者,也许你来自 R,想要一个sqldf.的替代品

例如,Pandas 没有替代方法的操作之一是非等价连接,这在 SQL 中非常琐碎。

在这一系列名为 Python Shorts 的帖子中,我将解释 Python 提供的一些简单但非常有用的构造,一些基本的技巧,以及我在数据科学工作中经常遇到的一些用例。

这篇文章本质上是关于对熊猫数据框架使用 SQL。

但是,什么是非等价连接,我为什么需要它们?

假设您必须连接两个数据框。一个向我们展示了我们对某些商品进行促销的时期。第二个是我们的交易数据框架。我想知道由促销推动的销售额,即在促销期间某一商品的销售额。

我们可以通过在item列上做一个连接以及一个连接条件(TransactionDt≥StartDtTransactionDt≤EndDt)来做到这一点。由于现在我们的连接条件也有大于号和小于号,这样的连接称为非等价连接。在继续前进之前,一定要想好你将如何在熊猫身上做这样的事情。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

熊猫解决方案

那么在熊猫身上你会怎么做呢?是的,基于熊猫的解决方案是存在的,尽管我觉得它不够易读。

让我们从生成一些随机数据开始。

offerDf,transactionDf = generate_data(n=100000)

不需要担心上面的随机数据生成代码。只要知道我们的随机数据是什么样的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦有了数据,我们就可以通过合并列item上的数据,然后根据所需的条件进行过滤,来进行非等价连接。

merged_df = pd.merge(offerDf,transactionDf,on='Item')pandas_solution = merged_df[(merged_df['TransactionDt']>=merged_df['StartDt']) & 
          (merged_df['TransactionDt']<=merged_df['EndDt'])]

正如我们所希望的,结果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PandaSQL 解决方案

Pandas 解决方案很好,它做了我们想要的事情,但是我们也可以使用 PandaSQL 以一种可读性更好的方式来完成同样的事情。

什么是 PandaSQL

PandaSQL 为我们提供了一种在 Pandas 数据帧上写 SQL 的方法。因此,如果您已经编写了一些 SQL 查询,使用 pandaSQL 可能比将它们转换成 pandas 语法更有意义。要开始使用 PandaSQL,我们只需简单地安装它:

pip install -U pandasql

一旦我们安装了 pandaSQL,我们就可以通过创建一个pysqldf函数来使用它,该函数将一个查询作为输入,并运行该查询来返回一个 Pandas DF。不要担心语法;它大致保持不变。

from pandasql import sqldf
pysqldf = lambda q: sqldf(q, globals())

我们现在可以使用这个函数在我们的 Pandas 数据框上运行任何 SQL 查询。下面是非等价连接,我们希望以可读性更好的 SQL 格式进行。

q = """
    SELECT A.*,B.TransactionDt,B.Sales
        FROM
            offerDf A
        INNER JOIN
            transactionDf B
        ON 
            A.Item = B.Item AND
            A.StartDt <= B.TransactionDt AND
            A.EndDt >= B.TransactionDt;
    """
pandaSQL_solution = pysqldf(q)

结果是我们预期的熊猫数据帧。与以前不同,索引已经为我们重置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

警告:

虽然 PandaSQL 函数允许我们在 pandas 数据框上运行 SQL 查询,并且在某些情况下是一个很好的工具,但它的性能不如纯 Pandas 语法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当我们用可读性更好的 PandaSQL 对熊猫计时时,我们发现 PandaSQL 花费的时间大约是本地熊猫的 10 倍。

结论

Python Shorts 系列的这篇文章中,我们了解了 pandaSQL,它允许我们在数据帧上使用 SQL 查询。我们还研究了如何使用本地 pandas 和 pandaSQL 进行非对等连接。

虽然 PandaSQL 库的性能不如 native pandas,但当我们想要进行特别分析时,它是我们数据分析工具箱的一个很好的补充,对于那些更喜欢使用 SQL 查询的人来说也是如此。

为了更仔细地查看这篇文章的代码,请访问我的 GitHub 库,在那里你可以找到这篇文章的代码以及我所有的文章。

继续学习

如果你想了解更多关于 Python 3 的知识,我想从密歇根大学调出一门关于学习中级 Python 的优秀课程。一定要去看看。

将来我也会写更多初学者友好的帖子。在关注我或者订阅我的 博客 了解他们。一如既往,我欢迎反馈和建设性的批评,可以通过 Twitter @mlwhiz 联系。

此外,一个小小的免责声明——这篇文章中可能会有一些相关资源的附属链接,因为分享知识从来都不是一个坏主意。

当量子场遇到引力:Unruh 效应

原文:https://towardsdatascience.com/when-quantum-fields-meet-gravity-the-unruh-effect-69d03783d6bb?source=collection_archive---------13-----------------------

加速度和温度之间的关系

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 PIRO4D 来自 Pixabay

根据物理学家 Stephen FullingPaul DaviesW. G. Unruh 描述的 Unruh 效应,对于一个加速的观察者来说,真空看起来是有温度的。换句话说,如果一个观察者在一个加速的参照系中,他会探测到粒子,而在一个非加速的参照系中,他不会。

本文将密切关注 Mukhanov 和 Winitzki 的著作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1 : 加拿大物理学家 W. G. Unruh,Unruh 效应的共同发现者(来源)。

匀速运动

让我们考虑一个观察者,比如宇宙飞船里的宇航员,在闵可夫斯基时空中以恒定加速度运动。度规张量η在二维中的对应矩阵表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 1:闵可夫斯基时空的度规张量 η 的矩阵表示。

对应的线元素为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 2:二维的闵可夫斯基线元素。

使用适当的时间 τ 对观察者的运动进行参数化,我们获得以下两个条件(第二个通过对第一个进行微分获得):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 3:根据第一个条件(顶部),2-速度被归一化。第二个条件(底部)是通过对第一个条件进行微分得到的,它表明 2-加速度和速度是正交的。

加速观察者的视界

一个加速的观察者(受到一个恒定的力)以双曲线运动(马上就要展示)。如下图所示,如果有足够的领先优势,加速的观察者可以跑得比光线更快。因此,他有一个以地平线为界的隐藏区域。这和黑洞类似,也有一个看不见的区域,以边界为视界。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2:草图显示,如果有足够的领先,加速的观察者可以跑得比光线快。

如下时空图所示,在 t < 0 离开原点 x =0 的光子 A 追上了观察者。然而,在t0 处穿过原点的光子 B 没有穿过原点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3:显示两个光子 A 和 b 的时空图,前者追上了观察者。后者从来不会(来源)。

因为在一个瞬间移动的惯性系中(一个连接到观察者的参考系),观察者是静止的,我们有:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 4:在瞬时运动的惯性系中,观察者处于静止状态,2-速度等于 u =(1,0)。

请注意,从等式。3:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 a 是常数。这在任何惯性系中都成立,因此我们有:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 5:恒定加速度的条件,在任何惯性参考系中都有效。

我们在这里的目标是表明,与非加速观察者相比,加速观察者将检测到粒子的存在。为了证实这一点,选择一个新的坐标来覆盖闵可夫斯基时空是很方便的。这些坐标被称为光锥坐标

光锥坐标

这些坐标根据原始( tx )定义为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 6:光锥坐标的定义。

闵可夫斯基时空中对应的度规张量的矩阵表示为 :

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 7:在闵可夫斯基时空中光锥坐标的度量张量的矩阵表示。**

用 Eq 代替 η 。情商 7。3 和情商。5 我们得到:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 8:光锥坐标的一阶和二阶导数所遵循的条件。

这些都可以轻松解决。经过几次代数运算(包括重新缩放和坐标原点的移动),我们得到:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 9:方程 9 中方程组的解。8、描述一个加速观察者的轨迹。

来自 Eq。6 我们获得:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 10:描述加速观察者在(t,x)坐标中的轨迹的方程。

现在请注意:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 11:在坐标(t,x)中,加速观察者的世界线是一条双曲线。

因此,我们得出结论,在 t - x 坐标系中,加速观察者的世界线是一条双曲线:

  • 观察者,最初在 x → ∞,移动到静止在 x =1/ a,的方式减速。
  • 然后他加速回到 x → ∞。

注意,当 x → ∞时,他的轨迹接近光锥。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4:在 t - x 坐标系中,加速观察者的世界线是一条双曲线。观察者,最初在 x → ∞,减速直到停止在 x =1/ a. 停止后,他加速回到 x → ∞(注意当 x → ∞,他的轨迹接近光锥,由虚线表示)。

移动框架

现在让我们为我们的加速观察者找到一个运动坐标系。继 Mukhanov 和 Winitzki 之后,我们将寻找一个参考框架,其中:

  • 当空间分量 ξ =0 时,观察者处于静止状态
  • *时间坐标 ξ ⁰= *τ,观察者的适当时间(沿着他自己世界线的时间)

此外,共动标架中的度规保形平坦是很方便的(当我们把量子力学包括进来时,这一点就变得很清楚了)。根据定义,保形图是一种局部保持角度的数学函数,而不必保持长度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5:保形图的例子。在矩形网格(左)和 f 下的图像(右)中,成对的线以 90°相交()。

在共形平坦流形中,它的每个点都有一个邻域,可以用共形变换映射到平坦空间。因此,运动框架中的线元素具有以下形式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 12:运动参照系中的线元素。

其中ω仍未确定。为了找到ω(ξ⁰, ξ )的表达式,我们首先定义运动参考系的光锥坐标:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程式 13:共动参考系的光锥坐标。

我们可以用几行文字说明(见穆哈诺夫和 Winitzki ),为了避免在 ds 上出现移动光锥坐标的二次微分,我们必须有以下变量相关性:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 14:原始光锥坐标和移动参照系的光锥坐标之间的关系。

在几个更简单的步骤中,方程中函数的实际形式。14 可以快速导出。他们读到:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 14:原始光锥坐标和共运动参考系的光锥坐标的显式表达式。

我们现在可以用上面得到的结果来明确写出方程中的线元素。12:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 15:运动参照系中的线元素,ω(ξ⁰, ξ )显式写出。

这被称为林德勒时空,除了它只覆盖了闵可夫斯基时空的四分之一(因此是不完整的)之外,它等价于闵可夫斯基时空(没有曲率)。下图显示了 Rindler 加速观察器的示例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 6:二维时空中的 Rindler 坐标。由虚线界定的区域是 Rindler 楔,并且它是共移动光锥坐标的有效域。世界线(实心双曲线)代表具有常数 ξ 的匀加速观察者,而虚线具有常数 ξ ⁰.该图还显示了坐标系未涵盖的三个事件。来自 P 和 Q 的信号永远不会到达观察者,而来自加速观察者的信息永远不会到达 R ( 来源)。

坐标 x 和 t 可以用 ξ s 变量表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 16:用 ξ s 变量表示的原始坐标 x 和 t。

量子场简介

让我们考虑 1+1 时空中的无质量纯量场。行动

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程式 17:1+1 时空中无质量纯量场的作用。

是共形不变的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 18:等式中的作用的共形不变性。17

( g 这里是度量**gT5)其中解释了 S 在惯性系和加速系中的相似性:**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 19:共形不变性解释了惯性坐标系和加速运动坐标系中的动作之间的相似性。

写情商。6 和 Eq。13 在光锥坐标中,我们可以很容易地确定场方程并求解(详见 Mukhanov 和 Winitzki )。场方程的解是右移和左移模式的和:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 20:分别对应于闵可夫斯基坐标时间 t 和固有时间τ = ξ ⁰.的右移正频模式

解的这一性质与方程。14 意味着相反的运动模式不会相互影响,因此可以单独处理。继 Mukhanov 和 Winitzki 之后,为了避免混乱,我从现在开始只写右移模式。

直到现在,这种分析都是经典的,不涉及量子力学。我们现在将量子化这个理论。

在林德勒楔形体内,坐标框架重叠,我们可以遵循标准的规范程序来量子化理论,并扩展量子场算符 ϕ:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程式 21:量子场论的标准模式展开。

其中(LM)表示左移模式。运营商

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 22:在展开式等式 21 中使用的创建和湮灭算子

遵守标准的交换关系,为了简明起见,我将省略它。注意有两种真空状态,即:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程式 23:林德勒真空和闵可夫斯基真空。

“正确的”真空取决于正在进行的实验。例如,从加速(或 Rindler)观测者的角度来看,闵可夫斯基真空是一种包含粒子的状态。换句话说,如果量子场处于闵可夫斯基真空状态,林德勒观测者的探测器就会记录到无质量粒子的存在。相反,如果量子场在林德勒真空中,它就不会。

a 和 b 算子之间的关系

方程中算子之间的变换。22 个被称为 Bogolyubov 变换,以苏联数学家和理论物理学家 Nikolay Bogolyubov 的名字命名。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 24:与 a 和 b 算子相关的 Bogolyubov 变换。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 7:苏联数学家和物理学家 Nikolay Bogolyubov,同名变换的开发者(来源)。

堵 Eq。24 进 Eq。21 和执行一些简单的操作,一个到达方程的系数的表达式。24:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 25:等式中 a 和 b 算子的系数。24.

Unruh 温度

我们最终得出以下结果:

  • 由加速观测器测量的频率为ω的粒子的平均密度
  • 所谓 Unruh 温度,就是闵可夫斯基真空中加速探测器测得的无质量粒子所服从的玻色-爱因斯坦分布的温度。

平均密度由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方程 26:加速观测器测得的频率为ω的粒子平均密度服从玻色-爱因斯坦分布。

温度等于所谓的 Unruh 温度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式 27:由加速观测器测量的粒子热浴的温度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 8:三个统计量的基态平均占有率的比较。玻色-爱因斯坦分布是红线(来源)。

物理解释

人们可以这样解释 Unruh 效应。量子真空的波动与加速观测者携带的探测器相互作用。这种相互作用激发了探测器,就好像它在一个热浴池中,温度由等式给出。27.请注意,这种波动的能量是由产生加速度的任何机制产生的,例如,加速运载加速观察者的宇宙飞船的推进引擎。

我的 Github 和个人网站 www.marcotavora.me 有一些其他有趣的材料,既有关于物理的,也有关于数学、机器学习、深度学习和金融等其他主题的。看看吧!

当卫星相撞时…

原文:https://towardsdatascience.com/when-satellites-collide-843bc45f09f1?source=collection_archive---------54-----------------------

用 Wolfram 语言编写的计算思维故事

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

美国宇航局在 Unsplash 拍摄的照片

空间很大,真的很大。然而,地球周围的空间变得越来越拥挤。每次发射新的宇宙飞船,都会有一些小碎片落在周围的轨道上。美国太空监视网络估计,地球上漂浮着超过 1 亿个 1 厘米以下的碎片,大约 90 万个 1-10 厘米的碎片,大约 3.4 万个大于 10 厘米的碎片。

每隔一段时间,两个更大的部分就会靠得很近。例如,目前存在一种风险,即在世界协调时 10 月 16 日 00:56,两个总质量为 2,800 千克的物体将发生碰撞:

为了获得这里发生的细节,我打开了一个新的 Wolfram 笔记本会议。为了获得有问题的卫星,我使用了自然语言界面并键入推文中给出的“ satellite 19826 ”。这参考了 Wolfram 知识库(也由例如 Wolfram|Alpha 使用)并给了我卫星实体:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(所有后续图片由作者提供)

对“卫星 36123”重复相同的过程,得到了我感兴趣的两个实体:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所有实体都有一定数量的可以查询的属性。例如,以下是“CZ-4C 火箭体”物体的一些已知特性:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用这些属性,我们可以绘制“CZ-4C 火箭体”的当前位置和轨迹:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再多一点代码,我们就可以画出这两个物体在 2020 年 10 月 16 日的预期位置:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更新:新发布的轨迹预测碰撞概率更高。新轨迹图像:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Jeff Bryant 在 Wolfram 社区帖子中描述了如何创建该地图的细节。完整的代码也可以在这个在线笔记本中找到。

如果“宇宙 2004”和“CZ-4C 火箭体”相撞,它们将产生一大团较小的物体,增加地球附近的空间碎片数量。目前还没有经济有效的方法来清除这些碎片。目前的重点是减少新引入的碎片数量。

有关最新更新,请关注以下 Twitter 帖子:

最后更新,似乎没有碰撞:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当科学和哲学遇到随机性、决定论和混沌时

原文:https://towardsdatascience.com/when-science-and-philosophy-meet-randomness-determinism-and-chaos-abdb825c3114?source=collection_archive---------11-----------------------

随机性背后的理论是什么?那真的存在吗?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源: Pxhere

有时是恐惧的来源,有时是梦想的来源。随机性在每个人的心中都是情绪的来源。作为一名程序员,这让我着迷。如果你曾经在赌场碰过运气,那是因为你可能会因此而兴奋不已。不幸的随机性也会让你哭泣,或者让你度过一生中最艰难的时光。

“这个世界是由机遇主宰的。随机性每天都困扰着我们。”

保罗·奥斯特。

随机性是未知、意外的同义词。然而这是真的吗?任何事情都有可能是真正随机的吗?它仅仅是一种信仰,一种想法,还是随机性只是一种幻觉?

为什么我们不把我们的知识放在一边五分钟来回答这个问题呢?

定义

让我们看看字典隐藏了什么。随机意味着:

  • 没有方法地做出、完成或发生有意识的决定**。**
  • 不寻常的,或意想不到的****
  • 表征选择过程的过程,其中一个集合中的每个项目被选择的概率相等(统计学)****

有趣的是,“随机”这个词激发了两个主要观点。

一方面,它与是一个无法提前预测的事件同义:通过滚动骰子几次,你无法说出结果会是什么。另一方面是一个无模式序列的统计性质**:掷骰子几次,两个结果之间没有逻辑。**

没错,的区别是微妙的。在这一点上,你甚至可能认为这没有什么区别。然而差别是巨大的。

伪随机数发生器

有些算法可以计算随机数。他们被称为伪随机数发生器** (PRNG)。这些随机数是许多加密系统的基础,用来保护无线通信甚至你在网络应用上的密码。**

为了更好地理解什么是随机性,看看在我们的 PRNGs 中它是如何产生的是很有趣的。是的,我们要讨论算法方法。不,你不会迷失在细节中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传****外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线性同余生成器— a=13,c=7,m=24,种子=0

我要给大家介绍的 PRNG 是一个老经典:线性同余发生器 [1]。让我们简单点:

  • 我们有一个起始号码叫做种子**。**
  • 下一个随机数是从上一个随机数计算出来的。****

假设我们有a=13c=7m=24,我们的种子是 0。很容易计算出下一个随机数。我们用 13 乘以 0。我们还有 0,然后加上 7。最后,mod m的意思是“当我们把分成m等份时,还剩下多少”。让我们想象一下,我们有 30 个硬币要在 8 个人之间分享。然后我们可以给每个人 3 个硬币。还会剩下 6 枚硬币。换句话说30 mod 8 = 6

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线性同余生成器— a=13,c=7,m=24 —蓝色种子= 0,紫色种子=1

你了解这个过程。很简单。真简单。从一个种子和其他三个数字,我们可以生成一个随机序列。随机性出现在的 10 行代码中。****

“随机数不应该用随机选择的方法产生.”

唐纳德·克努特。

观察者的角度来看**,序列看起来完全是随机的。然而我给你们展示的线性同余发生器非常简单。当然,还有更复杂的。python 中的random.random()numpy.random.random()都是基于 PRNG·梅森图[2]。**

确定性和周期性

我们看到我们生成的随机数不是随机的!它们甚至是完全确定的。如果我们知道使它工作的算法和种子,那么我们就预先知道生成的序列。****

所以让我们回到我们的字典定义,看看哪些仍然符合:

  • 没有方法或有意识的决定而做的或发生的
  • 不寻常的,或意想不到的:好的
  • 描述一个选择过程,其中一个集合中的每个项目都有相等的被选中的概率(统计学):还不知道

我们在生成随机数吗?从技术上讲,答案是否定的。

而且,产生的数字往往是周期性的**。提出的两个 PRNGs 就是这种情况。排序后的无限重复。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线性同余生成器— a=13,c=7,m=24,种子=0

prng 不产生随机数。然而,不应该自动怀疑它们。计算机是有限的空间。我们必须务实。我们可以试着**量化它们的适宜性。**

Kolmogorov 的复杂度【3】因此被定义为生成伪随机序列的最短程序。因此,我们可以估计随机数生成的复杂度。

但是在现实中,一个真正的随机序列是一个无限序列,所以我们无法找到更小的程序来生成它。根据定义,随机是不可压缩的,因为它不包含模式。

“计算机只能具有某种随机性,因为计算机是有限的设备.”

特里斯坦·佩里希。

这就是为什么有统计测试来测量产生的随机性与概念上的随机性有多接近。我们可以注意到,例如,顽固的测试NIST 测试【5】。

我们不会深入这些统计测试的细节。但是它们让我们对随机序列的可预测性有了一个概念。我们的线性同余发生器的例子没有通过这些测试[6]。

随机就是混乱

随机数生成器不生成随机数。他们制造混乱。

“当然,任何考虑用算术方法产生随机数的人都是有罪的.”

约翰·冯·诺依曼。

混乱是元素的一般混乱**。在我们的例子中,序列的普遍混乱。混沌是一个确定性系统,确定无疑,但是高度依赖于它的初始条件。**

让我们以双摆为例。如果我们放下同一个双摆锤,那么重力**,其组件的质量,以及摆锤的起始角度将定义摆锤落下时的反应。
如果在完全相同的条件下释放两次,那么它将具有完全相同的行为。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

开始时差为 1 的双摆。

然而,如果您通过将起始角度改变很小的角度来第二次放下它,那么行为将完全不同**。但仍可由其初始条件决定。**

“理论上,随机性是一种内在属性,但实际上,随机性是不完全信息.”

纳西姆·尼古拉斯·塔勒布。

这被称为蝴蝶效应**。对于初始条件的微小差异,结果是完全不同的,通常随着时间的推移,任何预测都是不可能的。**

真随机数发生器

对于一些科学家和数学家来说,无疑存在着纯粹的随机性。有效果无原因的序列。他们被称为真随机数发生器 (TRNG),必须基于随机物理源。****

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**正是在**量子物理学中,我们熟悉了真正的随机现象。太空中被认为是真空的地方实际上是由亚原子粒子组成的,它们神奇地出现又消失。这些粒子产生随机噪声。寂静之声

“自然本身也不知道电子会通过哪个孔”。

理查德·费曼。

它的不可再生方面已经被量子理论证明【7】。然后我们有一个真正的随机数发生器。直到某个物理理论可能会与量子物理相矛盾。它将再次表明,被认为是随机的东西并不是随机的。

(真)随机数生成器

在统计数学中,随机性的概念作为一个概念存在。但是随机模型的定义假设在相同的初始环境下可以观察到不同的事件。根据物理定律,这种形式的随机性不可能存在于由决定论统治的世界中。决定论可以模仿随机性。

但是量子物理学已经证明了它在今天的伟大原则失效的地方的有效性。这引入了一个新的范例。统计物理学,其中同时解释了预测的可能性和预测与观测之间的剩余差距随机性可以模仿决定论。

“真正的随机性需要无限量的信息.”

特里斯坦·佩里希。

确定性物理还是统计物理才是正确的立场?这也可能是两个以上对手之间的游戏。

有可能证明一个系统是真正随机的吗?由于根据定义它是不可压缩的,它需要无限量的信息才能被认为是随机系统。

随机性存在吗?

**随机性作为一个概念存在。但是作为一个**的观察,我们现阶段还不能说什么。我们所说的随机可以是:

  • 混乱或者
  • 对规则作出反应的序列过于细微,无法被观察者理解,或者
  • 纯粹的随机性,其证据仍在争论中。

这是否意味着我们应该克制,不要把非随机的东西称为随机?不,不是的。我默认认为系统就是它看起来的样子。如果我不能区分随机系统实际上是确定性的,那么我会认为它是随机的。

“我们所说的随机性是并且只能是一个已知结果的未知原因.”

伏尔泰。

毕竟我们不知道感情是什么。它只是一个概念。对这种感觉的观察让我们认为它们是真实的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

知识就是分享。
支持我,一键获得 中我所有文章的访问**。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源和参考

[1] LEHMER,D . H .m . l . junco sa 在 BRL 高速计算机上生成随机数。数学。第 15 次修订
(1954 年),559 页

[2] Mersenne Twister :一个 623 维均匀分布的伪随机数发生器,由庆应义塾大学松本诚和庆应义塾大学马普数学研究所和西村拓治设计

[3] Kolmogorov 复杂性,M. Li,P. Vitányi,载于国际社会百科全书&行为科学,2001

[4]马萨格里亚·乔治和曾伟万。一些难以通过的随机性测试。统计学家 j。柔软。7, 3, 1–9, 2002.

[5]安德鲁·鲁欣和阿尔用于加密应用的随机和伪随机数发生器的统计测试套件。NIST 特别出版物 800–22 第 1at 版,2010 年。

【6】线性同余发生器不产生随机序列,A.M. Friezer .坎南;拉加利亚斯

[7] 《寂静之声》大受欢迎,林炳科,澳大利亚国立大学

所有的 gif 都是自制的,可以免费使用。

什么时候该买比特币?—减轻价格波动的简单方法

原文:https://towardsdatascience.com/when-should-i-buy-bitcoin-a-simple-way-to-mitigate-price-volatility-7740e537c694?source=collection_archive---------32-----------------------

关于成本平均法事后表现的数据分析

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Icons8 团队Unsplash 上的照片

每天都有越来越多的人投资比特币。我们可以看到持有不少于 1 个比特币的地址数量不断上升。

但是,是什么阻止了像你这样的人购买你的第一枚比特币呢?加密货币是不稳定的资产,波动性会阻止人们购买该资产。价格会在几个小时内上下浮动 10%。不开玩笑。

那么什么时候应该购买比特币呢?这对于你我这样没有巨款的散户来说至关重要。我们输不起。

如何确定买入费的时间? 最简单的回答是— 你没有。

美元成本平均法

美元成本平均(DCA)是积累比特币的一种常见策略,并且在加密货币领域势头越来越猛。你不是去冒险,去投机比特币的价格,而是每个月(或者每周,或者每天)花同样多的美元在比特币上,不管价格如何。

例如,不管价格如何,你每天都要买价值 10 美元的比特币。当价格触底时,你可能会错过,但这减轻了波动性对一次性购买大量比特币的影响。这也会阻止你冲动购物。

nave DCA 是最容易的 避险 策略,逐步积累比特币。尽管如此,有时你可能会觉得价格太高,你会希望当天避免购买比特币。

虽然让你的情绪驱动你的投资决策通常不是一个好主意,但我们可以依靠一些技术指标来提示你买入。然后,你可以稍微调整一下策略,只在资产被认为“超卖”时,买入价值 10 美元的比特币。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 NeONBRANDUnsplash 上拍摄

条件美元成本平均法

我们以相对强弱指数 (RSI)为例。它通常在 14 天的时间框架内使用,并在 0 到 100 的范围内测量。传统上,当 RSI 低于 30 时,资产被认为超卖。因此,如果你可以利用这个“买入信号”,在 RSI < 30 时只采用平均成本。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

事实上,这种有条件的 DCA 策略通常比单纯的 DCA 表现得更好。上面的图显示了如果你在不同的时间开始使用原始 DCA 或各种条件 DCA 策略购买比特币,每比特币的平均成本(以美元计)。

即使你在 2017 年底‘加密货币泡沫’期间开始雇佣天真的 DCA,这可能是投资加密货币的最糟糕的时候,比特币累积的平均成本也不超过 7000 美元。在撰写本文时(2020 年 5 月),比特币的价格徘徊在 9000 美元左右。

从下面显示的另一个图中,你可以想象如果你在不同的时间用不同的策略开始积累硬币,投资的回报 (ROI)。零投资回报率意味着收支平衡事后看来,无论您何时开始采用 DCA 策略,ROI 都是正的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

条件 DCA 策略的缺点是,您提出的条件可能过于严格,因此不会经常发生。以上述 RSI 为例,RSI < 30 only happened ~10% of the time in history. This is not ideal for budgeting.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Takeaways

Price volatility should not stop you from investing in the future. Many Americans already bought Bitcoin with their stimulus cheques from the government.

Caveats: the past does not predict the future. You should do your own research before investing in cryptocurrencies.

注自《走向数据科学》的编辑: 虽然我们允许独立作者根据我们的 规则和指南 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

感谢阅读!你可以注册我的时事通讯来接收我的新文章的更新。如果您对数据分析感兴趣,您可能会对以下内容感兴趣:

[## 赢得垄断的 7 个策略

一个关于 Python、统计、可视化和童年记忆的故事

towardsdatascience.com](/7-strategies-to-win-monopoly-a89ead18b062) [## 你会在泰坦尼克号上幸存吗?——对 Kaggle 的经典挑战

关于如何开始 Kaggle 之旅的 7 步指南

towardsdatascience.com](/would-you-survive-the-titanic-a-classic-challenge-on-kaggle-3efaa22bfb5e)

声明:我不是财务顾问。给出的建议不是理财建议。你自己承担交易风险。

最初发表于edenau . github . io

在我的脸书粉丝页面上预测喜欢——我能在 6 个月内达到 10 万个喜欢吗?

原文:https://towardsdatascience.com/when-should-i-reach-100k-likes-on-my-facebook-fan-page-21997db91990?source=collection_archive---------56-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者照片

使用时间序列预测为社交媒体影响者设定数据驱动的目标。

我有一个 96k+赞的脸书粉丝页面。

[www.facebook.com/TwoHappyShibas/](http://www.facebook.com/TwoHappyShibas/)

“这个月我应该获得多少新的赞?”

“如何建立有时间限制的目标?”

“我现在有 96k 的赞,什么时候应该达到 100k?”

在我成为数据分析师之前,这些是我问自己但从未回答过的一些顶级问题。

现在,作为一名数据分析师,我可以从数据中获得有意义的见解。

我对我的脸书粉丝页面的两年历史数据进行了时间序列分析,预测了未来六个月的赞数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

预测 https://www.facebook.com/TwoHappyShibas/的总点赞数

有了预测,我可以直接回答上面提到的三个问题:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个数据分析应用程序对我非常有帮助,因为现在我可以逐渐减少凭直觉做出的决定。

以前,我只能使用脸书分析工具来衡量我的表现,并与上一期进行比较,但从来不知道什么样的回报是足够的,什么是不够的。

但是,在我做了这个分析之后,设定目标变得更加容易实现,以数据为导向,也更加现实。该预测可以作为一个基准,帮助我创建一个数据驱动的时间表,以跟踪并继续对社交媒体施加影响。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

脸书分析工具:显示定期绩效比较

分析方法

  1. 定义目标
  2. 数据收集和准备
  3. 数据探索性分析
  4. 时间序列分析
  5. 应用和见解

定义目标

问题:

在运营一个粉丝页面的时候,当我没有一个可靠的基准时,设定一个目标总是很难。例如,我不知道一个月获得多少新的喜欢会被认为是一个好的回报。

主要目标:

预测我的脸书粉丝页面上的总赞数,帮助我在未来设定可实现的、现实的数据驱动的目标。

数据收集和准备

数据是在我的 www.facebook.com/TwoHappyShibas/粉丝页面上收集的

通过脸书的 export insights 数据功能,我能够在两年内获得各种数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

脸书允许用户在两年内导出数据(作者截图)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每日总点赞数(2018/04/27–2020/05/03)

这次我使用的是每日总点赞数据,它非常适合时间序列分析,因为它提供了每日的数字和日期。

> periodicity(like_xts)
Daily periodicity from 2018-04-27 to 2020-05-03

准备工作:

数据准备的主要部分是将数据转换成时序数据类型。

#Transform data into time series data$like  = data$Total_Likes%>%
  ts(start=c(2018,4,27) ,frequency=365)

数据探索性分析

在时间序列分析中,观察和处理数据的季节性效应趋势、、**平稳性(稳定性)**是必不可少的。

首先,我看了一下 2018 年至 2020 年赞数增加的季节性,将数据分解为每日、每周和每月总赞数增加:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每日、每周和每月点赞

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每周点赞数增加的极地季节图

根据我 5 年的社交媒体经验,图表显示数据中没有明显的季节效应。

我们可以通过分解数据来减少季节性:

#Generate seasonal-adjusted data
seasonal_adjusted = decomposedlike$x-decomposedlike$seasonal

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如图所示,原始数据和季节性调整数据之间没有显著差异。

其次,我们可以通过查看自相关图来观察趋势:

ggAcf(diff(like),lag =90)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自相关图

该图表明,小滞后的自相关往往是显著的和积极的;同时,随着滞后时间的增加,这些值缓慢下降。
简而言之,这个数据是有趋势的,季节性滞后不显著。

分解图也显示了明显的增长趋势:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第三,我们使用 Dickey-Fuller 测试来检验平稳性:

> adf.test(like, alternative = "stationary")Augmented Dickey-Fuller Testdata:  like
Dickey-Fuller = -1.4016, Lag order = 9, **p-value = 0.8316**
alternative hypothesis: stationary

鉴于高 p 值,我们无法拒绝零➡ ️data 是不稳定的。

然后,我对数据进行差分,通过消除时间序列水平的变化来帮助稳定平均值:

> adf.test(diff(like), alternative = "stationary")Augmented Dickey-Fuller Testdata:  diff(like)
Dickey-Fuller = -3.4011, Lag order = 9, **p-value = 0.05326**
alternative hypothesis: stationary

p 值非常接近我们想要的值,但是仍然无法拒绝空值。

然后我取第二个差。

> adf.test(diff(diff(like)), alternative = "stationary")Augmented Dickey-Fuller Testdata:  diff(diff(like))
Dickey-Fuller = -14.821, Lag order = 9, **p-value = 0.01**
alternative hypothesis: stationary

鉴于低 p 值,我们拒绝 null➡ ️data 是静止的。✅

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据差异

在探索和更好地理解数据之后:

  1. 季节性—不明显
  2. 趋势——明显的增长趋势
  3. 平稳性—采用双重差分数据实现平稳。

我们可以去做模特了!

时间序列分析

在建模过程中,我将比较四种不同的模型:

  1. ARIMA 模型的每日数据
  2. ARIMA 模型的周数据
  3. ARIMA 模型月度数据
  4. 使用 ETS 模型的月度数据(ETS 与月度数据更吻合)

用四个模型做半年预测,我们可以看到只有《每日 ARIMA》和《每周 ARIMA》预测我的粉丝页面在 6 个月内会达到 100k。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,我们要测试哪些型号更可靠。我们将使用下面的“训练和测试”方法来评估模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我把数据拆分成 21 个月作为训练数据,3 个月作为测试数据来测试准确性。

在我们测试了四个模型的准确性之后:

 ME        RMSE     MAE       MPE        MAPE**Daily   ARIMA**   **3.55192**   **101.0099**  **87.395**  **0.0032841335** **0.0918075**Weekly  ARIMA   219.605   287.5174  228.14  0.229669962  0.2386927Monthly ARIMA   48.6667   150.7824  149.33  0.05037247   0.1567438Monthly ETS     122.588   219.0160  207.47  0.127768354  0.2174692

结果:日 ARIMA 模型表现最好(精度)。

接下来,我们将深入探讨每日 ARIMA 模型是否可靠。如果不是,我们将测试第二好的模型。

首先,我们想看看汽车。ARIMA()函数非常适合:

> fit
Series: like 
ARIMA(0,**2**,3)> test$ttable
    Estimate     SE  t.value p.value
ma1  -0.7280 0.0374 -19.4414  **0.0000**
ma2  -0.1076 0.0434  -2.4808  **0.0133**
ma3  -0.0774 0.0370  -2.0945  **0.0366**
  1. 当选择最低的 AICc 拟合时,它还显示双重差异数据是最佳拟合。
  2. 它表明 ma1、ma2 和 ma3 都很适合(低 p 值)。

其次,我们需要检查残差:

> fit %>% residuals()%>% mean()
[1] 0.2174377
#the mean of risiduals is close to zero**✅**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 残差看起来像白噪声序列。
  2. 93.6%的自相关位于蓝线之间,略低于 95%,但已经足够好了。
  3. 残差看起来像正态分布。
qqnorm(residuals(fit)); qqline(residuals(fit))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Q-Q 图显示这是一个相当好的分布。

第三,我们可以看看训练和测试数据之间的区别:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

经过三个月的训练和测试,MAPE(平均绝对百分比误差)约为 9%。对我来说足够准确,可以建立数据驱动的目标!

限制

我应该多久更新一次数据?

#Cross-validation
fc_function <- function(x, h){forecast(Arima(x, order=c(0,2,3)), h=h)}
e <- tsCV(like_xts, forecastfunction=fc_function, h=180)
mse <- colMeans(e^2, na.rm = T)
data.frame(h = 1:180, MSE = mse) %>%
  ggplot(aes(x = h, y = MSE)) + 
  geom_point()+
  ggtitle("Cross-Validation")

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从这个交叉验证图中,我们可以看出 60 天内的预测相当准确。因此,在使用该模型时,最好每月至少更新一次数据。

结论和见解

我们终于可以让旧的方法停留在过去,拥抱数据分析的美丽!

一个社交媒体影响者如何将分析落实到实际应用中?

根据预测,如果我保持与过去模式相似的表现,我的粉丝页面将在 2020 年 5 月增长 950 个赞。因此,当我在制定这个月的计划时,我会知道如果我想在这方面付出很多努力,增长 950 个赞是不够的。相反,我应该设立一个更高的目标,例如,获得 1500 个新的喜欢。

而且,这对于我制定季度目标也是一个极好的帮助。我可以建立一个六个月的时间表。设立不切实际的目标再也不会发生了!

以前,为社交媒体账户设定目标高度依赖直觉和经验。现在,在分析的帮助下,我们终于可以让旧的方法停留在过去,拥抱数据分析的美丽!

如果您有任何想法或反馈想与我分享,请随时在 Linkedin 上给我发消息!

https://www.linkedin.com/in/kuanchengw/➡️

什么时候不应该用机器学习做预测?

原文:https://towardsdatascience.com/when-shouldnt-you-use-machine-learning-to-make-predictions-61d25000ad88?source=collection_archive---------35-----------------------

机器学习/数据科学

极端不确定性世界中的机器学习

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查尔斯·德鲁维奥在 Unsplash 上拍摄的照片

机器学习越来越好。越来越多的公司将机器学习作为其产品的一部分,因此越来越多影响我们的决策受到算法的影响。想知道在网飞看什么吗?一个非常强大的推荐引擎会提供接下来要看什么的建议。本能地,我们对由算法做出这样的决定感到舒服。但是考虑以下场景:

  1. 2007 年的高盛。法国巴黎银行暂停赎回其 3 只基金(被广泛认为是大金融危机的开始)几天后,高盛首席财务官大卫·维尼亚告诉《金融时报》我们看到连续几天出现 25 倍标准差的波动。从字面上看,这种可能性非常低,以至于宇宙存在的时间还不足以让几个这样的事件发生。
  2. 在 1977 年被美国宣布为非法之前,公司向居住在特定地区的人收取更高的服务费用(如信贷)是很常见的,而不考虑他们自己的信用历史。这被称为“红线”,对非裔美国人产生了不成比例的影响。虽然住在特定地区的人通常有不良的信用记录可能是真的,但这些地区的许多人肯定已经偿还了债务。我们大多数人会认为这种形式的“统计歧视”在道德上是可疑的。

在上述情况下,算法决策/机器学习的使用要么表现不佳,要么非常不合适。我最近读了一本很棒的书,书名是《彻底的不确定性——为不可知的未来做决策》,作者是默文·金和约翰·凯。这让我开始思考机器学习在预测中的作用。因此,给定一个具有代表性的数据样本的问题,在什么情况下应该对使用机器学习保持警惕?请继续阅读,了解广泛的高级框架…

不同种类的推理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 Tachina LeeUnsplash 上拍摄

但是在我们考虑这个框架之前,考虑一下人类对世界的不同推理方式是有帮助的:

  1. 演绎推理——比如“我住在伦敦。伦敦在英国。因此我住在英国
  2. 归纳推理——如“对以往选举结果的分析表明,在有利的经济环境下,选民更倾向于执政党。2016 年美国总统大选中,他们的经济状况既不有利也不不利。因此,这次选举将是势均力敌的。这种推理利用过去发生的事件来推断未来可能的结果。
  3. 溯因推理——比如“唐纳德·特朗普赢得 2016 年总统大选,是因为某些摇摆州对经济状况和身份的担忧,也是因为他的对手普遍不受欢迎”。这种推理为一个独特的事件提供了最好的解释。人类在这方面很擅长,因为我们擅长过滤不同的、通常是相互矛盾的证据,以寻找最佳解释。

这些推理类型对应于以下机器复杂程度:

  1. 演绎推理 —传统软件很擅长这个。事实上,演绎推理是所有计算机代码的基础。例如,如果’ a 等于’ b ,’ b 等于’ c ‘,那么逻辑上’ a 等于’ c '。
  2. 归纳推理 —机器学习通过使用过去的数据来推断未来,从而使用这种推理。安德烈·卡帕西称之为“软件 2.0”也许不是巧合。
  3. 溯因推理 —如果计算机可以这样推理,这将是真正的人工通用智能(软件 3.0)吗?计算机在这方面做得很差,因为使用哪些数据往往不明显,而且可用的数据很可能不完整。

因此,预测涉及的溯因推理越多,机器学习就越没用。根据定义,历史数据只在一定程度上对独特事件的反应有用。那么这和我们上面的两个场景有什么关系呢?

平稳性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由亨特·哈里特Unsplash 上拍摄

机器学习模型的一个关键假设是“平稳性”——也就是说,正在建模的潜在概率分布不会改变。简而言之,这意味着系统无法对当前对其未来状态的预测做出反应。

金融危机之前,银行使用风险价值模型(VaR)计算风险。这些模型开始于 20 世纪 80 年代,有两个关键输入——特定资产的每日回报和不同资产之间回报的方差。利用这两条信息,可以构建一个概率分布,详细说明一个资产组合在某一天的最大可能损失。这两个值是怎么计算出来的?当然是历史数据!

然而,这一历史数据是从银行没有遭受严重损失的时期得出的。同样,在 2007 年之前,抵押贷款违约主要是个人不幸(如失业)的结果,因此彼此之间没有关联。然而,当贷款发放取决于房价上涨时,房价的任何下跌都可能导致许多违约。因此,在某些情况下,被认为具有低共方差的资产最终具有非常高的共方差。该系统仅在某些条件下是静止的。

当然,在许多情况下,平稳性假设是有效的。例如,考虑一种机器学习算法,该算法观察肿瘤的图像并预测肿瘤是癌性的可能性。肿瘤肯定不会对算法做出的预测做出反应,并在未来采取更好的“伪装”。

这并不是说机器学习在不稳定的环境中没有用——它们肯定有用。然而,在解释这种模型的结果时需要格外小心。防止模型故障的几种建议方法:

  1. 持续监控模型性能
  2. 良好的判断力——《彻底的不确定性》的作者建议问一个简单的问题——“这里发生了什么?”因此,就高盛而言,这意味着要意识到,大金融危机的金融环境意味着,他们的资产比他们的模型所假设的更加相关,因此他们的模型价值有限。这当然是一种溯因推理。

所以,框架的第一部分如下:模型环境越不稳定,对机器学习就越警惕。

决策重要性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

拍摄的照片Unsplash

在第二种情况下,我们本能地对信贷价格的不同感到很不舒服,而不考虑个人的信用价值。走极端的话,想象一下法庭案件的判决完全由个人的总体情况决定,而不是由案件的具体情况决定。对个人来说,决定越重要,我们对以这种方式做出的决定就越不舒服。

我们的不公正感部分来自于没有考虑到每个案件的独特情况。仅仅因为他/她的背景的人通常是有罪的,有什么证据表明他/她犯了罪?如果一个事件是独特的,我们觉得似乎每个情况都需要根据它的优点来考虑。事实上,如前所述,事件越独特,机器学习在任何情况下提供合理预测的能力就越低。

我们的不公正感也部分源于错误决定对个人造成的后果。当然,我们都是独特的,但是很少有运动反对网飞建议的不公正。没被推荐好片的成本毕竟挺低的。然而,对于被自动算法筛选拒绝工作申请,我们可能会感到稍微不舒服一些。虽然我不是这个职位的典型申请人,但我肯定非常适合这个职位?为什么我被拒绝了?

越是独特的事件,我们越是以叙事的形式向对方解释事件。例如,特朗普赢得 2016 年总统大选是对希拉里·克林顿身份政治的回应。这些解释不能被有意义地描述为“最佳的”——事实上可能有许多相互竞争的解释。另一方面,机器学习根据历史相关性进行解释,因此很难解释和创建围绕某个事件的叙事。

同样,这并不是说机器学习不能用于重要的决策和独特的事件。然而,越是这样,我们越应该重视可解释性,并对我们模型的局限性做出正确的判断。

所以,框架的第二部分如下:一个决策越重要&一个事件越独特,对机器学习就越警惕。

例子

下面是几个机器学习的例子来说明这个框架的作用。

  • 一种癌症肿瘤检测算法——问题是固定的,但决策的重要性很高。可解释性是必需的,需要小心使用。
  • 数据中心优化(就像在 这个 案例中) —环境是静止的,每个决策的重要性都很低——很好地利用了机器学习。
  • 网飞推荐算法 —非平稳环境(人们的偏好随时间变化)但决策成本低——很好地利用了机器学习。
  • 临床试验预测 —不稳定的环境(新的试验设计范例、更高的护理标准)和决策成本高。可解释性是必需的,机器学习应该小心使用。

摘要

所以,总之,当你在处理机器学习的问题时,你应该问自己两个问题:

  1. 模型环境是静止的吗?
  2. 每个模型预测的重要性和独特性如何?

最后,如果这两种情况中的任何一种都适用,那么继续问《彻底的不确定性》的作者提出的问题总是值得的——“这里发生了什么”。它似乎只能以 Yogi Berra 的一句话来结束——“很难做出预测,尤其是对未来的预测”。

揭秘大数据

原文:https://towardsdatascience.com/when-someone-asks-you-what-big-data-is-5acfc28e9eaa?source=collection_archive---------72-----------------------

正确的解释

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上由 Rohit Tandon 拍摄的照片

大数据是一个流行词,遍布文章、书籍、采访和其他地方。这是一个你可以很有哲理的术语。问每个人,每个人都有不同的说法。最常见的答案是“it-depends”和其他主要根据大数据的质量来定义大数据,因此没有太多从其他角度来定义它的内容。

在本文中,我将从不同的角度对大数据进行分解和解释,包括大数据质量的角度、有限物理资源的角度和数据分析的角度。

质量视角

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数量、速度、准确性和多样性

这是定义大数据最常用的方法。有趣的是,它描述了几个以字母 V 开头的品质。一开始是四个容量、速度、准确性、多样性、,后来又引入了很多其他的。更大的容量、更高的速度、更大的准确性挑战以及超乎你想象的多样性是它们所传达的信息。这种增长对技术进步的现状提出了挑战,需要进一步的研究和开发来应对。由此得出的定义是:

大数据是指数量、速度、种类和准确性都比我们通常处理的数据更大的数据。数据可能具有所有这些品质,其中一些或只有一个。而且那还是大数据!

以这种方式定义大数据是一个很好的起点。到此结束没关系,但是你还没有标点后面的真正含义。

物理视角

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大数据总是挑战技术发展的现状

大数据是一个进化术语。这是因为它与技术发展的现状紧密相连。2010 年被称为大数据的东西到 2020 年可能就不叫大数据了。或许在未来的几年里,这个术语将会消失,因为我们将拥有不再受到挑战的工具和资源。在这里,您可能会看到关于什么是大数据、什么不是大数据的不同定义,这些定义以某种方式与用于处理大数据的物理资源相关联。

如果传统工具在处理数量、速度、准确性、多样性和各种各样的数据时受到挑战,这些数据就称为大数据。

完全可以在一台普通机器上处理的数据,无论它具备什么样的品质,都不是大数据。

对于传统工具,您可能会想到我们通常安装在机器上的工具,以便轻松处理/分析数据。微软 Excel 就是其中之一。

分析视角

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

处理整个数据集,而不是其中的一个样本

大数据之所以存在,是因为我们希望更多地了解某些现象,而不是猜测它们可能是什么。如果我们回头看,即使没有技术支持,统计分析也是存在的。由于很难对描述一种现象的整个数据集进行分析,人们将其分析局限于数据样本。

有许多方法可以提取样本,尽可能接近地表示整个数据集。即使你能近似地做到这一点,你也永远不会达到 100%正确的表现。

从分析的角度来看,在大数据中,我们希望全面掌握正在发生的事情。我们希望在分析过程中考虑每一个数据点。从这里,衍生出另一个定义。

大数据是指在应用分析时考虑整个数据集,而不是其中的一个样本。

当然,大数据分析更多地旨在提取一般方向(即模式),而不是准确的结果,但这并不能否认这样一个事实,即考虑单个数据点比跳过更好。

云、物联网和 5G

无论何时解释什么是大数据,最后都要通过提及直接影响我们所知的大数据的技术发展来总结一切。云、物联网和最近的 5G,都是强化或放松大数据背后意义的重要因素。

一方的云是缓解大数据挑战的一大因素。由此带来的好处,尤其是资源的弹性(T2,为你的需求提供“无限”数量的资源)极大地帮助减轻了处理大数据的负担。

另一边的物联网和最近的 5G 不断提出大数据挑战。越来越多的数据以前所未有的速度生成和传输。这些技术因素相互交织,确保了大数据将长期存在。

总结

大数据是一个包含多种含义的术语。将答案分解为上述部分并加以解释,不仅有助于更好地理解大数据到底是什么,还能确保您对大数据有一个全新的思考。

当超级变大的时候。

原文:https://towardsdatascience.com/when-super-comes-big-ebcdf60a8d61?source=collection_archive---------80-----------------------

完成任何大数据项目的 8 个基本步骤**。**

W 是“超级炒作”留下的帽子?没有人再谈论超自然最高级超级计算机。人们更喜欢谈论大企业、大数据,当然还有大王 XL。

很明显,任何大数据都有一定的炒作成分,因此大数据已经成为当今科技商业词汇的一部分。我们所说的大数据指的是我们为了特定目的想要存储或处理的大规模数据流:生成新的先前未知的见解。除了大数据,我们还发现了物联网(IoT)、机器学习(ML)或人工智能(AI)。

广义地说,当我们真的无法以传统方式*(或在传统数据库中)*处理时,我们会谈论一些“海量”的东西,但有一点很清楚:大数据仍然是数据。现在,我们所做的是将企业数据以及公司知道但尚未决定利用或不知道其有用性或潜力的其他信息包括在内并清除掉。

大数据仍然只是数据,然而,当许多人开始查看市场上的所有技术、在线课程、认证时,他们会迷失方向。

令人目不暇接吧?

在任何大数据项目中,我们必须遵循哪些步骤?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

CláudioUnsplash 上拍摄的照片

如果你想了解更多,请访问 oscargarciaramos.com

1.了解业务。

我拒绝加入任何我不清楚或不明白其目的是什么的数据项目。 如果你不知道它,你就注定失败。

这是最重要的部分→ 了解业务。

这必须是我们在任何类型的数据或分析相关项目的第一步。

你的项目必须是公司、你的部门或你的团队的明确需求的答案。在你考虑数据之前,先和人们交谈,了解问题是什么。

2.有什么影响?

你损失了几百万美元吗?当收集或处理大量数据时,您的团队是否会损失效率或时间?这个问题如何影响您的业务?有时,没有必要开发一个非常完整的业务案例来理解我们项目的影响。有时候,理解一下就够了。

一旦明白…

3.我们如何衡量成功?

我们如何确保我们的项目成功?在我们的开发或项目过程中,将被监控和跟踪的度量标准或 KPI 是什么?

最重要的是…

4.我们增加了什么价值?

问题一旦解决,对公司意味着什么?

这一点很关键。我们是在推进这个项目还是它真的不值得?

这一点也可以作为项目成本或预算的证明。不仅仅是技术的复杂程度必须是一个项目或多或少昂贵的原因,而是它真正给公司带来的价值。

*我为什么这么说?*我们带来的价值不一定与解决问题所需的技术相关。我们从商业角度出发,我们会适应或寻找必要的技术来解决它。

大数据不是我们的目标,而是我们的驱动力。

如果我们不能定义和阐明这 1-4 个步骤,那么继续下一步就没有意义了。

一旦我们明确了项目的目标,就该开始考虑数据了。

5.数据要求

评估您的数据。我们在公司内部有可用的数据吗,还是必须去外面找?我们谈论的是结构化、非结构化还是半结构化数据?我们需要实时、近实时还是批量收集它们?更重要的是,我们的保留期或检索期是多长?我们说的是热数据还是冷数据?

6.云、本地或混合基础架构

是的,你没看错。有 3 种架构。

这是一个完全取决于公司的决定,做出这个决定需要分析许多方面,例如解决方案的实施、维护或所有权。

在黑色和白色之间有一个完整的灰色范围。我们是希望控制平台并由它直接控制,还是希望它由软件提供商托管?我们希望成本模型是什么样的,是在开始时通过收费(OnPrem)还是按使用付费(Cloud)进行大规模投资?我们是否确切知道解决方案的规模,或者我们是否需要一个可根据具体情况轻松扩展和适应的平台?最重要的是,数据安全性,我们是希望它掌握在我们自己手中,还是信任我们的供应商?

没有明确的解决方案,但是有很多方面可以讨论。也许,最好的解决方案是混合模式。不要忘记它,仍然考虑它。

7.找出差距

很少有公司拥有涵盖端到端完整大数据或分析项目的专家档案和完整能力。让我们不要害怕外包服务。让我们与不同的提供商或供应商交谈,不要把他们视为敌人,而是可以依靠的人。让我们找出这些差距,并确保根据这些需求来规划项目。

最后…

8.让我们变得敏捷

或者至少,一个 迭代方法 。让我们从试点、POC、MVP 开发、小用例开始……让我们不要试图从一开始就涵盖整个项目,它会以失败告终。

从大处着眼,从小处着手,快速行动。

这是关键。让我们定义可实现的和现实的里程碑。一旦我们验证了我们的试点项目,并且它们开始为公司创造价值,让我们将它投入生产。从来没有过。

那么,下一步是什么?

迭代,迭代,迭代。

数据项目令人着迷,因为它们从未停止改进。

我们可以说它是基于 持续学习 的术语,我们现在创造的东西,几个月就可以完善。

正如我之前所说的,让我们从小事做起,一些定义明确的事情,让我们看看它对公司的真正影响和价值,一旦定义好,让我们开始构建。

欢迎发表评论或分享这篇文章。关注 me 未来帖子。

如果你想了解更多,你可以在 oscargarciaramos.com找到我

当数据大潮退去,你发现谁在裸泳

原文:https://towardsdatascience.com/when-the-data-tide-goes-out-you-find-out-who-is-swimming-naked-7dae1d77ab82?source=collection_archive---------55-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了在疫情生存,我们需要更好的数据!

像许多人一样,我试图了解冠状病毒的进展以及各组织试图如何应对它。一些社区团结得如此之好,一些领导人的透明度,前线人员的辛勤工作,以及许多其他人的共同牺牲,都让我深受鼓舞。我的总结观察是,我们不知道的压倒了我们知道的。我也没有看到收集所需数据的全面计划。

考虑以下片段:

**问题:**科学家们是否有他们需要的可信数据来自信地预测冠状病毒在未来三十天内会导致多少人死亡?

**回答:**否“我们在不确定性之上还有不确定性”

**问题:**指导州、市、学校重新开放的人员是否具备平衡健康、经济和其他问题所需的检测和接触者追踪能力?

**答案:**否《纽约时报》4 月 26 日周日头版头条为“各州权衡重开之际,检测依然稀缺”

**问题:**新型冠状病毒抗体检测有用吗?我们知道有多少人得了这种病并康复了吗?答案:否,否。研究人员认为 14 项测试中有 11 项不可靠。虽然已经进行了一些小规模的研究,但我们还远远不知道这种疾病已经发展到什么程度。

**问题:**我们知道冠状病毒已经导致了多少人死亡吗?

**答:**否不同的直辖市统计死亡的方式不同,定义也在不断变化。

**问题:**理发、参加晚宴、和朋友握手安全吗?

回答:“看情况。”流行病学家对他们个人预计何时恢复一系列正常活动没有达成共识。

很难想象在这种情况下我们如何前进。科学模型、好的决策以及这些决策的执行都依赖于全面、及时和准确的数据。没有它,太多的事情就变成了猜测,并被突发奇想、政治和恐惧所左右。这些不完整、不可信的数据可能会被用来混淆视听、误导和分散责任。最后,每个人都受到了影响,包括仍然不知道孩子的夏令营是否会开放的家长、不知道他们何时(甚至是否)会有工作的酒店员工,以及试图让最少的人休假的企业领导人。

在这场危机中,人们很容易为缺乏好数据找借口。毕竟,这种疾病仍然是新的,所需的能力是如此复杂。但事情是这样的:在危机之前,糟糕的数据也主导了 : 它搞乱了模型,导致凭猜测做出决策,导致执行不力。沃伦·巴菲特说过,“只有当潮水退去,你才能发现谁在裸泳。”虽然数据不是巴菲特的本意,但他的观察是为当前形势量身定制的。在这里,“退潮”就是“疫情进来”,“裸泳”就是“缺乏自信前行所需的可信数据!”如果《纽约时报》最近的一篇文章是正确的,疾病控制中心一直在裸泳。不幸的是,当涉及到数据时,其他政府机构和许多公司也在裸泳。所以这个借口也已经过时了。

没有简单的解决办法。不过,我确实有一个建议,可以帮助人们理清自己知道什么和不知道什么。多年来,我已经教了数百人一个简单的四步过程,来形成一个“我们需要知道什么”的全面图景,并缩小这个图景和“我们确实知道什么”之间的差距我在这里提供它,是为了帮助政府、医疗保健和商业领袖,以及其他相关人员,应对危机,规划复苏,并超越危机。

第一步是理清“我们真正需要知道的是什么?这个问题需要仔细思考。人们常常陷入对自己所拥有的东西的索取中,甚至不想去问。从头脑风暴开始。把人们聚集在一个虚拟的房间里,向他们提出问题,并把结果记录在一个大家都能看到的大黑板上。团队通常会列出长长的清单——50 个甚至更多的需求。

练习的下一部分是筛选出大约十几个最重要的项目。您可以通过逐步消除优先级较低的项目来实现这一点。为了完成练习,请非常清楚地总结您“最重要的需求”。领导人可能会发现,对之前提出的问题的回答是最重要的,但他们可能需要更多的细节:总死亡率只能到此为止——真正需要的是按年龄和当前健康状况分列的死亡率。同样,包装商品公司的领导团队可能会发现月销售额生产能力在其列表中非常突出。**

第二步是确保与这些需求相关的语言清晰明了。**对于死亡率,这意味着他们必须决定什么才算冠状病毒导致的死亡。37 岁,经历了冠状病毒样症状,然后自我隔离,死在家里,但从未接受测试,这算吗?那位已经与晚期癌症作斗争的 93 岁老人在检测呈阳性后去世了呢?这样的细节还有很多。

澄清语言通常比领导者预期的更难——毕竟,定义在他们头脑中是清楚的。问你的员工,“我们是否都同意预计销售额的含义”,你几乎肯定会得到一个热情的无条件回答:“是的,当然。”但是坚持下去:让你的人写下他们的定义。许多人会有麻烦,而那些被写出来的定义之间的差异会让你震惊!这些差异反映了缺乏一致性,这已经在很多方面阻碍了你。它们必须得到解决!

不幸的是,没有简单的方法来获得你所需要的一致。一个组织派了十几个高管去参加一个务虚会,研究调和财务和运营数据所需的定义。你不能马上撤退,但你必须做出同样的努力。

使事情复杂化的是,有时您必须在多个层次上开发所需的定义。比较全球死亡率为评估公共政策选择、治疗和检测方案的有效性提供了机会。没有一个“冠状病毒导致的死亡”的共同定义,这项任务是令人担忧的,敲定一个需要时间。因此,你必须清楚地知道你是如何统计死亡人数的,并努力达成共识。

第三步是严格比较“我们需要知道的”和“我们实际知道的”,并努力缩小差距。逐项工作,尽可能诚实。那个包货公司确实需要知道销售额(每月),但它拥有的是预计销售额*。在过去的几年中,预计销售额是基于合同、销售人员的投入和历史违约率。但鉴于当前的危机,这些信息都不可信。*

你可能会发现这些比较分为三大类:

我们有我们需要的东西:你可能会在这个类别中找到一些商品。

我们有一些我们需要的东西,但是太多的数据丢失或不正确。很多比较都会属于这一类。幸运的是,处方很简单(如果不熟悉的话)——从源头上改善。确保信息来源了解你的需求和第二步中的定义。然后让他们负责根据这些需求和定义创建数据

我们有很大很重要的缺口,只能通过寻找新的来源来填补。死亡率属于这一类——到目前为止,还没有足够的测试能力来开发所需的统计数据。所以,发挥创造力——建立关系网,看看其他人是如何解决这个问题的,利用你的政治影响力,寻找能填补部分空白的替代品。

第四步性质不同。那就是:将这项工作作为跳板,让更深入地理解高质量数据在构建你的未来中扮演的关键角色,并投资于你生产和使用这些数据的能力。我怎么强调这一点都不为过。尽管有“数据是新的石油”的宣传和数量上的雪崩,各种形式的坏数据是一个长期存在的问题。不懈的努力找出你真正需要知道的东西,并努力缩小差距,这是比依靠猜测更好的选择。重要的是,这与技术无关,而与人有关——这个练习只需要一个 Google Hangouts 链接和白板!

高质量的数据是我们抗击疾病、恢复和让事情走上更好的道路的最佳武器。把获得它作为第一项工作!

当中位数对平均数有利时

原文:https://towardsdatascience.com/when-the-median-is-favorable-to-the-mean-c5b01b149ec0?source=collection_archive---------35-----------------------

选择更合适的描述性统计

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

运动鞋订单价格

平均值中位数是描述数字数据时最常用的两个特征。这两者被称为集中趋势的度量,这意味着它们通过揭示数据的中心位置来描述一组数据。平均值是平均值——这是将所有数据相加,然后除以数据集中的点数得到的值。另一方面,中位数是一组数据中从最小到最大排序后的中间数。

*Data: 1, 8, 3* • Mean --> (1 + 8 + 3) / 3  =  **4**• Median --> 1, 3, 8 --> **3**

虽然平均值看起来像是描述数据时使用的逻辑度量,但情况并非总是如此。当谈到平均值时,它有一个关键的缺点——平均值很容易受到数据中异常值的影响。以上面图表中的数据为例。以上数据代表运动鞋订单的成本。正如我们所见,绝大多数数据都在图表的左侧。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据的描述

当我们看一下上面的数据描述,我们看到 75%的运动鞋购买成本为 390 美元或更少。但是,如果我们取这个数据的平均值,我们的平均值将等于 3,145.13 美元。显然,这个数字不能非常准确地代表我们的数据。在这种情况下,一些严重的异常值(如果我们查看描述中的最大值,我们可以看到差异)会极大地影响平均值,因此,我们最好使用中值作为该数据集的报告指标。我们的中位数是 284 美元,利用运动鞋市场的领域知识,这更好地代表了我们的数据和运动鞋销售的总体情况。

显然,在决定使用哪种指标来表示数据之前,查看数据的分布是非常重要的。如果数据呈正态分布(均匀形状),平均值可能是一个合适的描述符。然而,如果数据像我们在这里看到的那样是倾斜的,中间值可能是更好的选择。

参考资料:

[## 集中趋势测量

集中趋势的度量是试图通过识别集中趋势来描述一组数据的单个值

statistics.laerd.com](https://statistics.laerd.com/statistical-guides/measures-central-tendency-mean-mode-median.php)

当教皇谈论 AI 的时候

原文:https://towardsdatascience.com/when-the-pope-talks-ai-3f84446050cc?source=collection_archive---------35-----------------------

你应该听。

一个自愿的承诺,罗马呼吁人工智能伦理,通过一个“算法伦理”的愿景促进“人类大家庭”,以及当梵蒂冈谈论技术时预期的畏缩。但是,这是一个巨大的新闻,这样一个缓慢的建立,教会,正在推动更多的透明度和谨慎。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由来自 PexelsPixabay 拍摄。

一种人工智能。世界自动化革命的总称。现在,看起来教皇已经明白了,所以我相信我们肯定达到了 99%的采纳率。最古老的学校机构天主教会正在推动对这些强大的技术进行更多的监管、理解和警告,这是一个巨大的新闻。

《人工智能罗马呼吁》将计算机视觉人脸过滤器、预测广告和互联网工具的日常机器学习模块描述为在改善社会共存和个人福祉、增强人类能力以及实现或促进许多任务方面提供了巨大的潜力。

出于某种原因,这篇文章说,结果不是定量的(嗯,机器学习是纯粹的数值决定边界),而是“它们是 定性的 ,因为它们影响了这些任务的执行方式以及我们感知现实和人性本身的方式。”看到教会偏离科学并不奇怪,但是当它已经把自己置身于野外时,你还能期待什么呢?相反,他们认为新技术应该服务于整个人类大家庭(引用了联合国的《世界人权宣言》)。

作为业内人士,这里所有的宣传和新术语淡化了这篇文章可能对“算法条件反射”产生的任何潜在影响,但我很高兴我们正在接近普遍承认人工智能需要争论。让我们来看看梵蒂冈是如何努力将人工智能的好处最大化的(由 IBM 和微软的副总裁发起)。在这些文章中,我喜欢关注人工智能的潜力,而不是所有已知的缺点,因为现代社会更有可能在创新上超越新问题,而不是回去修补原因。

人类大家庭。

梵蒂冈对人工智能伦理的看法充满了流行语,他们创造的试图引人注目的新短语,以及一颗完整的心。健康、公平的人工智能的新推进的范围包括三个必需的实现:

  1. 包括每一个人。这些技术需要为每个人服务。现在,技术偏向于他们的训练集,所以有用的工具为富裕的人工作(我们手机上的普通面部识别技术对白人更成功并且监视聚焦于少数民族(例如这个针对黑人的仇恨言论探测器)。
  2. 人类内心的善良。虽然这些技术需要每个人都可以使用,但平均来说,它们必须对人类有益。这是一个伟大的观点,可以推动像脸书的无处不在的技术(和重音)。研究单个人工智能的累积效应至关重要——例如设计自动驾驶汽车,使其与一起工作,而不是单独工作。
  3. 保护地球。一个大的。人工智能系统通过能源使用造成巨大的环境负荷。保护地球对于单个公司来说是极其困难的(再次强调,公司倾向于为了短期的经济利益而做出边缘决策),但却是绝对重要的。

“algor-伦理”愿景。

支持人类大家庭的未来算法的愿景分为三个部分——带有一些有用的见解。

伦理学

小册子的正文开始写道:“人人生而自由,在尊严和权利上一律平等。这一节没有什么特别新的东西,如果你想知道人工智能偏见的危险以及为什么我们应该避免它,去读一读吧。

教育

这一承诺必须体现在对教育的承诺上,开发跨越人文学科不同学科的具体课程。这篇文章最有见地的观点就在这一部分——它将老年人视为需要继续教育项目的主要群体。作为千禧一代,我几乎跟不上科技进步的速度,我们都见证了无数父母和祖父母的落后。

那些不懂技术的人将越来越无法保护自己免受操纵。

随着老龄化人口越来越落后,这种提醒需要被广泛推广。我的祖父母已经成为电话诈骗的目标——我知道他们将被粘性广告和生殖媒体的大脑偏见所操纵。

权利

“解释的义务。”许多呼吁伦理的人忽略了一个结论——理解和透明的需要。我们从业者知道深度神经网络记忆数据,并使其适合编织的非线性变换,但我们如何解释我们的数据集?我们需要将我们的系统视为集成的解决方案——这些工具会影响未来的数据。如果当前的系统有偏差,未来的系统越来越有可能是。在数据偏差失控之前,需要结束一个解释循环。

从文字到代码

我和我的同事们可以愉快地签署这一承诺,并让我们对我们的工作感觉更好,但这不会改变影响或轨迹。这篇文章关注的是在这个领域工作的人应该如何感受和计划他们的工作,而不是他们如何实施。一次又一次,人类已经表明他们会为了利益和声望做出递增的、自私的决定。

作为一个 AI 从业者,我知道这个具体的文件什么也做不了。将这些词语和理念转化为代码和产品的更好方法或下一个方法是什么?

公司需要以大胆的行动来跟进广泛的支持。我们已经看到了大公司为了积极的媒体关系在副业项目上投资了多少(例如 GoogleX,脸书的各种公共人工智能研究,慈善事业等等。),但如果一家公司 1) 承认其产品具有操纵性,2) 采取行动减轻它们造成的问题,波动可能会更大。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源—作者:见过一次教皇,好多相机。平安夜服务 2012。

最后,教皇公司提出以下原则:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里的质押是这里的

  1. 透明 :原则上,AI 系统必须是可解释的;
  2. :必须考虑到所有人的需求,使每个人都能受益,并为所有个人提供尽可能好的条件来表达自己和发展;
  3. 责任 :设计和部署 AI 使用的人,必须以责任和透明为出发点;
  4. 不偏不倚 :不偏不倚地创造或行事,从而守护公平和人的尊严;
  5. 可靠性 : AI 系统必须能够可靠地工作;
  6. 安全与隐私 :人工智能系统必须安全工作,尊重用户隐私。

你可以在这里阅读全文,或者签名(或者在这里找到我的标记版本)。不要误会我的意思,我很高兴这个具有巨大影响力的机构正试图为人们指明正确的方向,只是遗憾的是,这在伦理人工智能领域是一件大事。我们需要更多的讨论方式,更重要的是 投资

我最喜欢的毛茸茸的朋友给我指出了 AI 的这个有趣的部分。

何时假设神经网络可以解决问题

原文:https://towardsdatascience.com/when-to-assume-neural-networks-can-solve-a-problem-203cf94039cb?source=collection_archive---------55-----------------------

实用指南

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源于 Wikimedia Common,最初来自 Maggie Black 的“Den medeltida kokboken”,是中世纪食谱的瑞典语翻译

问题:“我们应该假设哪些问题可以用机器学习来解决?”,甚至更狭隘,更专注于当前的发展“我们应该假设神经网络能够解决什么问题?”,是一个我没怎么见过的称呼。

有像 PAC learning 和 AIX 这样的理论,乍看起来似乎围绕着这一点,因为它一般属于机器学习,但如果实际应用于实践,不会产生任何有意义的答案。

但是,当有人就某个具体问题问我这个问题时,只要我能看一看数据,我往往能给出一个相当合理的自信回答。

因此,我认为写下产生这种答案的启发法可能是有帮助的。我绝不认为这些在科学意义上是精确的或基于证据的,但我认为它们可能是有帮助的,甚至可能是进一步讨论该主题的良好起点。

1.如果另一个最大似然算法已经成功,那么神经网络几乎肯定可以解决问题。

给定一个可以通过现有的最大似然技术解决的问题,我们可以假设一个稍微通用的神经网络,如果允许它明显更大,也可以解决它。

比如体面的下棋,也是已经解决的问题。这可以使用小型决策树和一些非常简单的定制搜索试探法来完成(例如参见https://github . com/AdnanZahid/Chess-AI-TDD)。因此,我们应该假设一个相当通用的神经网络,使用比基于 DT 的原始模型多得多的参数。

事实上,这似乎是的情况,你可以使用一个相当普通的全连接网络来下棋,而不需要任何额外的内置试探法或专门用于此目的的架构。

或者,使用任何“玩具”数据集,例如在 UCI 上的数据集,使用像 Sklearn 这样的库找到最合适的经典 ML 模型,然后尝试使用sk learn 提供的相当简单的神经网络,如果你将 _hidden_layer_sizes 设置得足够大,无论你在比较什么模型,你几乎肯定会获得匹配的性能。

这个假设并不总是成立的,因为:

  • a)取决于架构,神经网络可能很容易无法优化给定的问题。例如,对于具有大窗口和步长的卷积网络来说,下棋可能是不可能的,即使它非常大。
  • b)某些最大似然技术有许多内置的启发法,对于神经网络来说可能很难学习。现有的最大似然技术不能有任何关键的启发性,或者至少你必须能够将同样的启发性包含到你的神经网络模型中。

由于我们主要关注可推广的神经网络架构(例如,全连接网络,这是大多数人听到“神经网络”时首先想到的),a)点是非常不相关的。

考虑到大多数启发式算法同样适用于任何模型,甚至是像国际象棋这样的模型,并且这个规模有时足以让网络能够学习启发式算法,这个规则基本上每次都适用。

我实在想不出一个反例…也许是一些特定类型的数字投影?

这是一个相当无聊的第一条规则,但值得作为一个起点来阐述。

2.神经网络几乎肯定能解决与已经解决的问题非常相似的问题

假设您有一个基于几个参数来预测给定债权人风险的模型,例如当前余额、以前的信用记录、年龄、驾照状态、犯罪记录、年收入、就业时间、{关于当前经济环境的各种信息}、孩子数量、婚姻状况、过去 60 天访问的色情网站。

假设这个模型“解决”了你的问题,也就是说,它比 80%的人类分析师更好地预测了风险。

但是 GDPR 滚滚向前,你不能再合法地通过购买那些数据来窥探你的一些客户的互联网历史。你需要为这些客户建立一个新的模式。

您的输入现在被截断,客户的在线色情历史不再可用(或者说无可否认是可用的)。

假设你仍然可以建立一个合理的模型来解决这个问题,这安全吗?

答案几乎肯定是“是的;鉴于我们对这个世界的了解,我们可以有把握地假设某人的色情浏览历史与他们的信用评级没有其他参数那么相关。

另一个例子:假设你知道别人在用一个模型,但是他们的数据和你的略有不同。

你知道一家总部位于美国的专注于蛇的宠物店,它利用以前的购买来推荐产品,他们告诉你这对他们的底线来说做得很好。你是一家总部设在英国的鹦鹉宠物店。如果根据你的数据进行训练,你能相信他们的模型或类似的模型能解决你的问题吗?

同样,正确答案很可能是“是”,因为数据足够相似。这就是为什么建立一个产品推荐算法在 20 年前是一个热门话题,但现在每个人和他们的妈妈都可以为它获得一个 WordPress 插件,并接近亚马逊的水平。

或者,更严重的是,假设你有一个检测乳腺癌的给定算法,如果对 100,000 张图像进行训练,并进行后续检查以确认真正的诊断,该算法的表现比普通放射科医生更好。

你能假设,如果有能力把它变大,你能建立一个模型来检测其他类型的软组织中的癌症,也比放射科医生更好吗?

同样,答案是肯定的。这里的论证更长,因为我们不太确定,主要是因为缺乏数据。我差不多花了一整篇文章论证答案仍然是肯定的。

在 NLP 中,完全相同的神经网络架构似乎在任何语言中都能很好地进行翻译或文本生成,只要它属于印欧语系并且有针对它的大量数据(即,相当于用于训练现有英语模型的数据)。

现代的自然语言处理技术似乎能够处理所有的语系,而且他们是用越来越少的数据来处理的。然而,在某种程度上,数据的相似性和训练样本的数量与模型快速概括许多语言的能力紧密相关。

或者看看图像识别和对象检测/装箱模型,主要的瓶颈是大量良好标记的数据,而不是图像的内容。边缘情况是存在的,但是一般来说,如果足够多的例子被输入到最初为不同图像任务设计的架构中(例如,为 Imagenet 设计的卷积残差网络),所有类型的对象和图像都可以被识别和分类。

此外,给定一个在 Imagenet 上训练的网络,我们可以保留初始权重和偏差(本质上是网络“已经学习的”),而不是从头开始,并且它将能够从该起点更快地在不同的数据集上“学习”。

3.神经网络可以解决人类可以用小数据点和很少或没有上下文来解决的问题

假设我们有两个从未见过的物体的 20x20px 黑白图像;它们“明显不同”,只是不为我们所知。有理由假设,给定一堆训练例子,人类将相当擅长区分这两者。

给定一堆例子(比如说 100 个),假设几乎任何有数百万个参数的神经网络都会像人类一样面对这个问题也是合理的。

你可以把这想象成要学习的信息量。在这种情况下,我们有 400 个像素,每个像素有 255 个值,因此有理由假设每个可能的模式都可以用我们方程中的几百万个参数来解释。

但是“小数据点”在这里的意思是这个定义的关键。

简而言之,“小”是以下各项的函数:

  • 你模型的尺寸。模型越大,它能学习的模式越复杂,你可能的输入/输出就越大。
  • 答案的粒度(输出)。例如 1,000 个类别对 10 个类别,或者 0 到 1,000 的整数范围对 0 到 100,000 的整数范围。在本例中为 2。
  • 输入的大小。在本例中为 400,因为我们有一个 20x20 的图像。

以 MNIST 这样的经典图像分类任务为例。尽管已经做了一些小的改进,MNIST 的艺术水平并没有多大进步。在过去的 8 年中,已经从大约 98.5%提高到大约 99.4%,两者都在通常的“人为误差范围”内。

相比之下,在输入和输出规模方面,一些更大的公司,如 ImageNet,在过去的 8 年里,其份额从 50%跃升至近 90%

事实上,即使使用前 CNN 技术, MNIST 基本上是可以解决的

但是,即使把“小”定义为上述的函数,我们也没有实际函数的公式。我认为这要困难得多,但我们可以想出一个适用于大多数情况的“廉价”答案——事实上,这正是我们所需要的:

  • 当相同或更大输入和输出大小的其他任务已经通过机器学习在单个 GPU 上使用多个架构解决时,给定的任务可以被视为小任务

这可能听起来像一个愚蠢的启发,但它惊人地适用于大多数“简单”的机器学习问题。例如,现在许多 NLP 任务比大多数“视频”任务更先进的原因是大小,尽管在网络架构方面图像有了巨大的进步(更接近视频领域)。视频上有意义的任务的输入和输出大小要大得多;另一方面,即使 NLP 是在一个完全不同的领域,它在大小上更接近图像处理。

那么,“很少到没有上下文”是什么意思?

这是一个比较难的问题,但是我们可以依靠“大”和“小”上下文的例子。

  • 预测股市可能需要大量的背景知识。一个人必须能够更深入地挖掘要投资的公司;查看市场基本面、最近的盈利电话、高管层的历史;了解公司的产品;也许从它的雇员和顾客那里得到一些信息,如果可能的话,得到关于即将到来的销售和合并的内部消息,等等。

你可以尝试纯粹根据股市的指标来预测股市,但这不是大多数人解决问题的方式。

  • 另一方面,基于环境中的温度和湿度来预测给定印刷机的产量至少在某种程度上可以通过上下文来解决。在机器上工作的工程师可能知道某些部件在某些条件下表现不同。然而,在实践中,工程师基本上会让打印机运行,改变条件,观察产量,然后得出一个方程。因此,给定这些数据,机器学习算法也可能提出同样好的解决方案,甚至更好的解决方案。

在这种意义上,ML 算法可能会产生类似于数学家在解方程的结果,因为对于人类来说,上下文基本上是不存在的。

当然有一些限制。除非我们在 4000℃下测试我们的机器,否则算法无法知道产量将为 0,因为机器会熔化;工程师可能会怀疑这一点。

因此,我可以将第三个原则表述为:

在下列情况下,通用神经网络可能解决问题:

  • 人类可以解决它
  • 具有相似规模的输出和输入的任务已经被同等规模的网络解决了
  • 人类拥有的大部分相关上下文数据都包含在我们算法的输入数据中。

随意改变我的想法(用例子)。

然而,这仍然需要根据人的表现进行评估。但是机器学习的许多应用之所以有趣,正是因为它们可以解决人类无法解决的问题。因此,我认为我们可以更进一步。

4.当我们合理地确定神经网络是确定性的,我们提供任何相关的上下文作为输入数据的一部分,并且数据相当小时,神经网络可以解决问题

这里我将回到我最喜欢的一个例子——蛋白质折叠。科学中为数不多的几个问题之一,在这些问题中,数据很容易获得,解释和意义不会被大量的理论包袱所混淆,并且根据我们以前的定义,数据点的大小足够小。你可以把这个问题归结为:

  • 大约 2000 个输入特征(三级结构中的氨基酸),尽管这意味着我们的领域将只覆盖 99.x%的蛋白质,而不是字面上所有的蛋白质。
  • 大约 18,000 个相应的输出特征(三级结构中的原子位置数,又名形状,需要预测具有该结构)。

这是一个例子。像大多数 NLP 问题一样,“大小”变得非常主观,我们可以很容易地认为这种类型的输入需要热编码;然后大小突然变成 40000(有 20 个蛋白质氨基酸可以被 DNA 编码)或者 42000(如果你关心硒蛋白,如果你关心真核生物中不出现的小生境蛋白就变成 44000)。

也可以认为,输入和输出的大小要小得多,因为在大多数情况下,蛋白质要小得多,因此我们可以屏蔽和丢弃大多数情况下的大多数输入和输出。尽管如此,从一个 255x255 像素的图像到生成另一个 255x255 像素的图像还有许多任务(样式变换、分辨率增强、样式转换、轮廓映射等)。因此,基于这一点,我认为蛋白质折叠数据相当少,过去几年也是如此。

事实上,通过神经网络的分辨率增强和通过神经网络的蛋白质折叠几乎是同时出现的(请注意,每种架构都是相似的)。但是我跑题了;我把相关性误认为是产生它的因果过程。话又说回来,这是当今大多数自封的“科学”的基础,那么,违背科学方法又算什么呢?

根据我自己对这个问题的研究,似乎即使是一个非常简单的模型,比 VGG 之类的东西简单,也能学到一些关于蛋白质折叠的“有意义”的东西。如果给定足够的(1.35 亿)参数并在 RTX2080 上进行半天的训练,它可以比随机猜测更好,并且经常与原子的实际位置相差 1%。我不能确定准确的准确性,因为对于非领域专家的人来说,这里的准确评估标准显然很难找到和/或理解和/或实现…或者我只是愚蠢,也有很大的可能性。

据我所知,第一个广泛成功的蛋白质折叠网络 AlphaFold 虽然使用了一些特定领域的试探法,但却使用了剩余的 CNN,这是一种为图像分类而设计的架构,与蛋白质折叠没有任何关系。

这并不是说任何架构都可以解决这个问题。这意味着我们不需要建立一个全新的技术来处理这类问题。这是一种神经网络可以解决的问题,尽管它可能需要一点时间来寻找可以做到这一点的确切网络。

这里另一个重要的事情是,这个问题似乎是确定性的。即:

  • a)我们知道,在我们大多数模型假设的惰性环境中,肽可以折叠成蛋白质,因为我们一直观察到它们是这样做的。
  • b)我们知道氨基酸是能够完整描述肽的一种成分
  • c)因为我们假设环境总是相同的,并且我们假设折叠过程本身不会改变它,所以问题不是环境的函数(注意,显然在体外折叠的情况下,在体内问题变得更加困难)

问题出现在思考 b)的时候,也就是说,我们知道宇宙可以确定性地折叠肽;我们知道氨基酸足以准确描述一种肽。然而,宇宙并不与“氨基酸”一起工作,它与小得多的粒子之间的万亿次相互作用一起工作。

因此,虽然这个问题是确定性的和独立的,但不能保证学习折叠蛋白质不需要学习一个完整的粒子物理模型,这个模型能够将每个氨基酸分解成更小的功能组件。几百万个参数不足以完成这项任务。

这就是第四个最普通的定义最难应用的原因。

这里的一些其他例子是像预测维护这样的事情,机器学习模型被积极地用于解决人类无法解决的问题,至少没有数学模型是不行的。对于这些类型的问题,基于现有的数据,有充分的理由假设这些问题是部分(大部分?)确定性。

这里有更简单的例子,但是我想不出任何一个,在它们出现的时候,不属于前面的三个类别。至少,没有不属于强化学习的。

绝大多数例子都属于强化学习,一旦人们能够模拟它们,就可以解决大量的问题。

人们可以找到最佳的空气动力学形状,设计怪异的天线以提供更有效的接收/覆盖,击败像 DOT 和 Starcraft 这样比象棋或围棋复杂得多(就自由度而言)的视频游戏。

RL 的问题在于,设计实际的模拟往往比用它来寻找有意义的答案要复杂得多。RL 做起来很有趣,但通常不会产生有用的结果。然而,边缘情况确实存在,设计模拟似乎比从中提取推论更容易。除此之外,基于我们对有效模拟物理的理解,模拟的进步越多(这本身就得到 ML 的帮助),这样的问题就越多。

最后

我试图提供一些简单的启发式方法来回答“什么时候我们应该期待神经网络可以解决问题?”。给定足够的架构搜索和当前的 GPU 能力,我们的默认假设应该包括哪些问题的可解性?

概括一下,神经网络什么时候能解决你的问题?

  1. [几乎可以肯定]如果其他 ML 模型已经解决了这个问题。
  2. 【非常高的概率】如果一个类似的问题已经被一个最大似然算法解决了,而这个问题和你的问题之间的差别似乎并不显著。
  3. [高概率]如果输入和输出足够小,在大小上可以与其他工作的 ML 模型相比,并且如果我们知道除了输入和输出之外,一个人可以用很少的上下文来解决问题。
  4. [合理概率]如果输入和输出足够小,在大小上与其他工作的 ML 模型相当,并且我们对问题的确定性有很高的把握(也就是说,输入足以推断输出)。

我不确定这些规则中的任何一个,但是这回到了能够说一些有意义的事情的问题。PACL 可以给我们几乎完美的确定性,并且在数学上是有效的,但是它不能解决简单的分类问题。

提出这种规则并不能提供一个精确的确定度,它们来自于经验观察。然而,我认为它们实际上可以应用于现实世界的问题。

事实上,在某种程度上,当客户或朋友问我某个问题是否“可行”时,这些就是我应用于现实世界问题的规则。这些似乎非常接近我注意到的其他人在思考什么问题可以解决时使用的规则。

我希望这可以作为该领域新手的实际实践指南,或者对于不想过多参与 ML 本身但有一些数据集需要处理的人。

本文原载于我的博客:https://blog . cerebral ab . com/When _ to _ assume _ neural _ networks _ can _ solve _ a _ problem

如果您喜欢这篇文章,您可能也会喜欢:

根据我的经验,何时不使用 AI 或使用它

原文:https://towardsdatascience.com/when-to-not-use-ai-or-use-it-based-on-my-experience-abb58c063aba?source=collection_archive---------4-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由V . babi enko拍摄

我拥有机器学习博士学位,拥有 16 年在产品中部署可扩展解决方案和数据科学以实现收入和用户留存最大化的经验,包括 JustGiving 的 2600 万用户。作为初创企业和风投的导师和战略数据科学顾问,以下是我对何时应该和不应该使用 AI 的专家意见。经常有人问我如何开始使用人工智能?、如何在我的产品中集成 AI?”,或者“我怎样才能用 AI 获得研究资助?”鉴于我的上有大量关于如何根据我的经验在数据科学、人工智能或大数据领域工作的文章,我想我会在一篇新的帖子中把这些内容放在一起,特别是关于何时适合使用人工智能以及不适合使用人工智能

什么是人工智能(AI)?

首先,人工智能是一个通用术语,研究人脑和智能系统,人工智能通常是一个移动的目标,你可以说你的汽车,洗衣机和电话都内置了某种形式的人工智能。人工智能包括多学科,如数学、心理学、物理学、生物学、神经科学和计算机科学,旨在模仿计算机上的某种形式的智能。它是如何实现的是使用机器学习(ML),自然语言处理(NLP)。其中进一步细分为神经网络、深度学习、强化、集成学习等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

让我们关注机器学习。人工智能不是魔法,人工智能和传统编程的主要区别在于,模型通过训练从数据中学习,而不是编写规则。模型具有参数和权重,当它使用不同的算法学习时,这些参数和权重被调整。然后,我们使用测试数据集来检查模型的准确性或性能。

在 B2B 和 B2C 的 ML / NLP 中,数据就是一切

没有大量的数据,你的算法将无法被训练或测试。例外情况是,例如遗传算法或强化学习,它们有一个适应度函数,奖励/后悔它们正在优化。但在我看来,它们在商业领域的应用有限,除非你在运行某种形式的模拟、驾驶、玩视频游戏、天气预报、有机化学建模等。我曾经与一家高性能计算( HPC )供应商讨论过一个用例,我将在电子商务或 B2C 中使用模拟,他们很难回答我的问题。举例来说,如果我有 2600 万真实用户来运行测试,我为什么还要模拟事件或用户呢?

我没有数据,但仍然想使用人工智能

如果你没有产生、捕获或拥有历史数据,例如,你有一个新的用例或者是一个初创企业,那么仍然有可能使用 ML 和 NLP。通过寻找现有的开放数据集,如 KaggleAWS美国政府的开放数据或获得许可,为您的公司找到数据。这可以用来训练和测试你的初始模型。随着贵公司的发展和变得更加成熟,您将能够获取更多数据,并利用更好的培训/测试数据来改进模型。

数据科学家是合适的人选吗

对于那些仍然认为数据科学是 21 世纪最性感的工作的人来说,请再想一想,你将会把 80%的时间花在数据准备工作上,包括清理、标准化、规范化、塑造数据。只有这样,你才能达到人人都在谈论的 人工智能建模和可视化。如果从这个角度来看,这与数据分析师和商业智能报告创建者日复一日所做的事情有许多相似之处,只是人工智能建模除外,因为他们对业务数据进行操作,并了解关键绩效指标和业务指标。我喜欢提升现有员工的技能,让他们成为数据科学家,因为他们拥有业务和领域知识,并且已经在处理数据。

此外,成功的数据科学家很少单独工作,他们需要成为更广泛的商业智能/数据工程团队的一部分,以某种可查询的形式准备数据,集成产品变化的开发人员/开发人员,以及帮助将模型推向生产环境的机器学习工程师。

离线数据科学与产品数据科学

您可以通过两种方式在组织中使用数据科学:离线数据科学产品中的数据科学

离线数据科学可以在笔记本电脑上进行,涵盖市场研究、客户/客户分析或 A/B 测试等任务。在这里,数据科学模型不会在生产中部署,而是对历史数据进行分析。这样做有巨大的好处,因为它补充了你现有的商业智能,并有助于塑造成功的产品。

在我看来,为了充分利用数据科学,它需要直接嵌入到您的产品和服务中,而不是事后思考,即您只是在事件或行动之后分析离线数据。这需要在预算、团队、高管支持和公司战略方面做出更大的承诺。

产品中的数据科学要复杂得多,成本也高得多,你需要合适的团队。我见过或采访过的很多数据科学家都不是优秀的开发人员。他们需要考虑使用笔记本以外的东西,笔记本有利于探索,但不利于将模型部署到产品中。一些云提供商确实帮助创建批量推理引擎和推理 API。然而,重要的是他们理解和学习最佳软件工程实践,并开始像开发人员一样思考测试、部署管道和可伸缩性。我也不认为他们应该独自完成这项工作,你需要 DevOps、开发人员和数据/机器学习工程师与他们合作。如果您希望在产品中部署模型,以便在用户浏览您的网站或应用程序时,直接向他们提供匹配、建议或预测,这是非常重要的。每一个网站和应用程序都在完成屏幕时间,所以任何改进都可以在保留(B2C)或生产力(B2B)方面产生巨大的差异。然后,你当然需要衡量模型相对于随机分组和/或硬编码规则的性能,如果性能下降,就采取行动。

值得加 AI 吗?

在商业中,我们经常谈论投资回报(ROI)来建造或购买任何东西。这同样适用于 ML 和 NLP,它会花费你多少精力、时间和金钱,相对于拥有一个全栈开发人员可以在一天内部署的硬编码规则集,回报会是什么?

让我们看看人工智能炒作之外的东西:

  • 用例:会用到哪里?我发现,在商业中,这主要是在匹配、推荐、预测或向你所在领域或部门的用户或客户提出建议的领域。
  • ROI:it 是否会通过增加收入/生产率和/或减少成本/时间来增加价值。总是将这与使用人类完成任务或使用没有人工智能的正常软件开发过程进行比较。
  • 易于支持 : Netflix Prize 是一个很好的例子,当性能最好的模型由于工程成本和在产品中运行的复杂性而没有用于生产时。简单模型、预训练模型或没有人工智能更好,你可以更快地进入市场,特别是如果这些已经是解决的用例。例外情况是当你处理一个新的用例,做真正的研究开发,或者当然是你发表研究论文的大学研究。
  • 监控:您需要过程来监控模型的性能,因为任何推理的退化都可能影响 ROI。如果发生这种情况,您需要有应急措施,并快速回滚或重新培训新的模型。
  • 您是否拥有正确的数据:来自现有内部和/或外部来源的适合所选用例的充足且正确的数据。
  • 梦之队:数据科学家不能孤立工作,他们需要被开发人员、工程师、产品经理和 DevOps 团队包围。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

只是让数据科学团队重聚

后续步骤

大多数具有开发人员或计算机科学背景的人应该能够理解 ML 和 NLP 的概念。不要试图只招募数据科学家的人工智能大军,他们仍然需要正确的数据用例以及 ROI梦之队,这是我认为你在制定数据科学相关的商业案例、研究提案或与投资者交谈时应该开始做的事情。如果您有任何问题/意见,或者如果您需要短期指导、战略咨询或数据科学执行顾问,请随时通过 LinkedIn 与我联系。

什么时候该说什么时候该听

原文:https://towardsdatascience.com/when-to-talk-and-when-to-listen-47ac0f13712b?source=collection_archive---------80-----------------------

来自数据工程师的教训。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源: Unsplash

随着我目前的数字化项目一周年纪念日的临近,我回过头来看看能从这次经历中学到什么。SWIFT 项目旨在开发过程的早期向产品开发人员提供有关我们全球制造工厂的信息。输出将是 Tableau 中的数据收集工具和商业智能报告。目标很简单,但我们在微观和宏观层面不断遇到障碍。

在宏观层面,本组织发生了巨大的变化。我们的部门正在经历向云的战略转移,变得更加以数据为导向。这包括重大的组织结构调整。其中之一是一个新的数据分析团队,其定位更接近业务。这个新团队取代了我的位置。对于新的商业智能项目,如 SWIFT,我的团队在技术方面处于领先地位。以前,业务方面将驱动所有需求,而它将处理技术方面或与第三方的任何开发沟通。在 SWIFT 项目的模糊要求和设计决策方面,由谁牵头,这是一个充满不确定性的新动态。我相信这种宏观层面的变化是这个项目面临诸多挑战的基础。

在微观层面,我是围绕收集业务需求的所有讨论的中心。最终报告所需的大部分数据并不存在,因此早期的对话是关于需要捕获哪些数据以及每个项目之间的关系。最初的请求被翻译成 35 个不同的数据字段。出于多种原因,我立即开始缩减这个庞大的项目。除了这需要投入大量的时间,我们还采用了敏捷方法来尽可能快地启动这个项目。当我们就数据字段的子集达成一致并在它们的关系上取得进展时,我们遇到了一个主要的障碍。

该项目增加了新的主题专家,他们可以提供来自全球的更专业的知识。这种扩展的结果是,新的数据字段被请求,以前确定的数据关系现在受到质疑。每次随后的会议都有十个或十个以上的人参加。你必须有选择地问哪些问题,以及如何清楚地提出要求。我记得不断调整我的方法来发现哪对数据字段有多对多的关系。有时我的请求会被错误地解释,但我从来不清楚什么时候应该打断谈话。我所能做的最好的事情就是倾听,等待正确的机会来修正航向。

截至今天,我们仍在进行这个项目,但我很高兴地说,我们正在直播。虽然在改进数据收集工具和报告方面仍然存在一些挑战,但我们从一开始就取得了重大进展。项目范围最终缩小到 9 个领域,数据模型被设计成灵活的,以防我们扩大数据收集工作。如果没有数据分析团队对降低项目复杂性的不断抵制,我认为我们不会“投入使用”。

这个项目提供了许多宝贵的经验。最重要的是要理解这种模棱两可的性质,因为什么时候是我们说话的时间,什么时候是我们倾听的时间。史蒂夫·乔布斯说过这样的话:“我们的工作是在他们做之前弄清楚他们想要什么”。作为一名数据工程师,有时您需要像史蒂夫·乔布斯一样思考,以便引导各利益相关方沿着技术简单的正确道路前进,同时仍然满足他们的需求。
数据通才

Kaggle 比赛中什么时候用 CPUs vs GPUs vs TPUs?

原文:https://towardsdatascience.com/when-to-use-cpus-vs-gpus-vs-tpus-in-a-kaggle-competition-9af708a8c3eb?source=collection_archive---------2-----------------------

每一个机器学习算法的背后都是数千兆赫兹的硬件运算。在设置 Kaggle 笔记本时,您可能已经注意到了几个处理器选项,但哪一个最适合您呢?在这篇博文中,我们比较了使用 CPU(英特尔至强 )与 GPU(英伟达特斯拉 P100 )与 TPUs ( 谷歌 TPU v3 )来训练使用 tf.keras 编写的机器学习模型的相对优缺点(图 1*)。我们希望这能帮助你理解这些选项,并为你的项目做出正确的选择。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们如何准备考试

为了比较 CPU vs GPU vs TPUs 在完成常见数据科学任务方面的性能,我们使用 tf_flowers 数据集来训练一个卷积神经网络,然后使用三个不同的后端运行完全相同的代码三次(CPU vs GPU vs TPUs;GPU 是英伟达 P100,配有英特尔至强 2GHz(双核)CPU 和 13GB RAM。TPU 为 TPUv3 (8 核),配有英特尔至强 2GHz (4 核)CPU 和 16GB RAM。附带的教程笔记本展示了让您的 TPU 发挥最佳性能的一些最佳实践。

例如:

  1. 使用分片文件的数据集(例如。TFRecord
  2. 使用 tf.data API 将训练数据传递给 TPU
  3. 使用大批量(例如 batch_size=128)

通过在工作流中添加这些先行步骤,可以避免常见的 I/O 瓶颈,否则会阻止 TPU 充分发挥其潜力。你可以通过访问官方的 Kaggle TPU 文档找到优化你的代码在 TPUs 上运行的额外技巧。

硬件表现如何

我们测试的三种硬件类型之间最显著的差异是使用 tf.keras 训练模型所用的速度。tf.keras 库是最受欢迎的机器学习框架之一,因为 tf.keras 使快速试验新想法变得容易。如果您花更少的时间编写代码,那么您就有更多的时间来执行计算,如果您花更少的时间等待代码运行,那么您就有更多的时间来评估新的想法(图 2)。tf.keras 和 TPUs 在参加机器学习比赛时是一个强大的组合!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在我们的第一个实验中,我们对所有三种硬件类型使用了相同的代码(官方教程笔记本的修改版本*** ),这需要使用非常小的批量 16,以避免 CPU 和 GPU 的内存溢出错误。在这些条件下,我们观察到,在训练一个异常模型时,与 CPU 相比,TPU 的速度提高了约 100 倍,与 GPU 相比,速度提高了约 3.5 倍(图 3)。由于 TPU 在处理大批量时运行效率更高,我们还尝试将批量增加到 128,这导致 TPU 的速度提高了约 2 倍,并且出现了 GPU 和 CPU 的内存不足错误。在这些条件下,TPU 能够训练一个exception模型,速度比之前实验中的 GPU 快 7 倍以上****。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

观察到的模型训练加速因模型类型而异,Xception 和 Vgg16 的性能优于 ResNet50(图 4)。模型训练是我们观察到 TPU 以如此大的优势胜过 GPU 的唯一任务类型。例如,我们观察到,在执行少量预测时,我们手中的 TPU 比 CPU 快大约 3 倍,比 GPU 慢大约 3 倍(TPU 在某些情况下进行预测时表现异常,例如对非常大的批次进行预测,这在本实验中不存在)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了补充这些结果,我们注意到等人。al 开发了一个名为 ParaDnn [1]的严格基准,可以用来比较不同硬件类型的性能,用于训练机器学习模型。王等人用的就是这种方法。al 能够得出结论,当使用 TPU 而不是 GPU 时,参数化模型的性能优势从 1 倍到 10 倍不等,真实模型的性能优势从 3 倍到 6.8 倍不等(图 5)。当与分片数据集、大批量和大模型相结合时,TPU 表现最佳。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

训练车型时的价格考虑

虽然我们的比较对硬件一视同仁,但在价格上有相当大的差异。TPU 的价格大约是 GPU 的 5 倍(Nvidia Tesla P100GPU 的1.46 美元/小时对比GPU 的8.00 美元/小时谷歌 TPU v3 对比4.50 美元/小时GCP 具有“按需”访问功能的 TPUv2)。如果您试图优化成本,那么使用 TPU 是有意义的,如果它训练您的模型的速度至少是使用 GPU 训练相同模型的 5 倍。

当数据以分片格式存储在 GCS 存储桶中,然后以大批量传递给 TPU 时,我们始终观察到模型训练速度提高了约 5 倍,因此我们向熟悉 tf.data API 的注重成本的消费者推荐 TPU。

一些机器学习实践者优先考虑减少模型训练时间,而不是优先考虑减少模型训练成本。对于那些只想尽可能快的训练他们的模型的人来说,TPU 是最好的选择。如果你花更少的时间训练你的模型,那么你就有更多的时间迭代新的想法。但是不要相信我们的话——你可以通过在一个免费的 Kaggle 笔记本上运行你自己的代码来评估 CPU、GPU 和 TPU 的性能优势。Kaggle 用户已经在尝试 TPU 和文本数据方面获得了很多乐趣和成功:查看这个论坛帖子,它描述了 TPU 如何被用来训练一个 BERT transformer 模型,以在最近的 Kaggle 比赛中赢得 8000 美元(二等奖)。

您应该选择哪个硬件选项?

总之,我们推荐 CPU 是因为它们的多功能性和大内存容量。当你想加快各种数据科学工作流的速度时,GPU 是 CPU 的一个很好的替代选择,当你特别想尽可能快地训练一个机器学习模型时,TPU 是最好的选择。

通过针对您正在使用的特定硬件优化您的代码,您可以获得更好的结果,我们认为将针对 GPU 优化的代码的运行时与针对 TPU 优化的代码的运行时进行比较是非常有趣的。例如,记录使用 GPU 加速库(如 RAPIDS.ai )训练梯度增强模型所需的时间,然后将该时间与使用 TPU 加速库(如 tf.keras )训练深度学习模型所需的时间进行比较,这将非常有趣。

一个人训练一个准确的机器学习模型最少需要多少时间?你一天能评估多少不同的想法?当与 tf.keras 结合使用时,TPU 允许机器学习实践者花更少的时间编写代码,花更少的时间等待他们的代码运行——留下更多的时间来评估新想法和提高自己在 Kaggle 比赛中的表现。

引用的作品

[1] Wang Y,Wei G,Brooks D. 对深度学习的、GPU 和 CPU 平台进行基准测试。2019. arXiv: 1907.10701

[2] Kumar S,Bittorf V 等。艾尔。在谷歌 TPU-v3 吊舱上缩放 MLPerf-0.6 模型。2019. arXiv: 1909.09756

[3]茹皮·恩·扬等。艾尔。张量处理单元的数据中心内性能分析。2017. 2017 年 ACM/IEEE 第 44 届计算机体系结构国际年会(ISCA)

脚注

******* CPU 类型因可变性而异。除了英特尔至强处理器,您还可以分配到英特尔 Skylake、英特尔 Broadwell 或英特尔 Haswell 处理器。GPU 是英伟达 P100,配有英特尔至强 2GHz(双核)CPU 和 13GB RAM。TPU 为 TPUv3 (8 核),配有英特尔至强 2GHz (4 核)CPU 和 16GB RAM。**

**图 1 图片来自https://cloud . Google . com/blog/products/ai-machine-learning/cloud-TPU-breaks-scalability-records-for-ai-inference,经许可。

***修改了教程笔记本,以保持三个不同后端之间的参数(如 batch_size、learning_rate 等)一致。

****** CPU 和 GPU 实验使用了 16 的批处理大小,因为它允许 Kaggle 笔记本从上到下运行,而没有内存错误或 9 小时超时错误。当批量增加到 128 时,只有支持 TPU 的笔记本电脑能够成功运行。**

作为数据科学家何时使用 Java

原文:https://towardsdatascience.com/when-to-use-java-as-a-data-scientist-74e5f2ec8c80?source=collection_archive---------18-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像来源

虽然 Python 和 R 为数据科学家处理广泛的问题提供了丰富的生态系统,但在某些情况下,应该探索其他编程语言,包括 Java 和 Go。我发现,随着我将注意力从批处理 ML 管道转移到实时传输数据流或具有低延迟需求的数据产品上,Java 的实践经验变得越来越有用。尽管提高 Java 编程语言可能需要付出大量的努力,但我遇到过一些情况,在这些情况下,了解 Java 是有益的。

-您负责模型生产
-您正在构建一个低延迟系统

我认为学习 Java 是获得应用科学家职位的有用途径,这比大多数数据科学职位更侧重于工程。虽然 Python 仍然是我日常任务的首选语言,无论是在 PySpark 中构建大规模批处理管道,还是使用 Flask 或 Dash 构建交互式 web 应用程序,利用 Java 意味着我可以探索构建更广泛的数据产品。在这篇文章的剩余部分,我将更详细地探讨这些话题。

你负责模型制作

在大型组织中,通常会将数据科学家从构建基础架构和管理实时数据产品的职责中分离出来。相反,数据科学家可能会使用 Databricks 等平台来运行预定的笔记本,或者使用 PMML 等格式将模型规格交给工程团队,工程团队负责基础设施和系统维护。像 AWS SageMaker 这样的工具让小团队更容易将模型部署到生产中,但它是一个专有的 AWS 工具,并不是每个数据产品的最佳选择。数据科学家发展职业生涯的一种方式是更多地参与将模型投入生产。

用于将 ML 模型产品化的最佳工具将取决于模型的服务方式,其中预测用于实际服务或产品中。例如,作为流管道
的一部分应用的模型将使用与作为 API 托管的模型不同的组件。不同类型的模型工作流的特征生成步骤也可能有很大差异。当您负责构建端到端的数据产品时,您实际上是在构建一个数据管道,从源中获取数据,根据检索到的数据计算特征,将模型应用于生成的特征向量或张量,并将模型结果存储或传输到另一个系统。虽然 Python 非常适合建模培训,并且有模型服务工具,但它只涵盖了这个流程中的一部分步骤。

这是 Java 真正闪光的地方,因为它是用来实现许多最常用的构建数据管道工具的语言,包括 Apache Hadoop、Apache Kafka、Apache Beam 和 Apache Flink。如果您负责构建数据产品的数据检索和数据聚合部分,那么 Java 提供了广泛的工具。此外,接触 Java 意味着您将积累许多大数据项目所使用的编程语言的经验。

我在数据工作流中实现这些步骤的首选工具是 Cloud Dataflow,它基于 Apache Beam。虽然许多数据管道工具支持多种运行时语言,但 Java 和 Python 选项之间可能存在显著的性能差异。例如,与使用预构建的 Java JAR 文件相比,在云数据流上运行的 Python 管道在获取和构建所需的库时可能会遇到启动时间长的问题。

您正在构建一个低延迟系统

将 Ml 模型公开为 HTTP 端点是将模型产品化的一种常见方式。Python 库(如 Flask)支持这种功能,但如果您有大吞吐量或低延迟需求,这些库的性能可能会出现问题。例如,您可能需要为用户实时构建特征向量,其中有一个事件流的消防站。这通常涉及到使用 NoSQL 数据库,因为来自关系数据库的延迟对于系统来说太大而无法有效运行。

如果你需要为模型实时构建特征向量,并将预测作为终点,那么 Java 为实现这一目标提供了丰富的生态系统。Java 可以用于流行的 NoSQL 产品,包括 Redis、MongoDB 和 Couchbase。还有各种 web 框架来支持 web 端点,包括 Spring MVC、Netty 和 Rapidoid。虽然 Python 可以提供相同的功能,但它通常不用于高吞吐量的应用程序,如 Ad Tech。

结论

虽然 Python 对于大数据生态系统中越来越多的工具变得可行,但仍然有数据科学家可以从利用 Java 中受益的用例。然而,学习 Java 是否有用取决于您组织中的工程团队是否已经在使用 Java 并计划继续用 Java 创作新系统。Zynga 的一部分团队就是这种情况,能够直接为生产代码库做出贡献对于更快地交付数据产品非常重要。随着应用科学家角色的崛起,以及在初创公司工作的数据科学家,这变得越来越普遍。

本·韦伯是 Zynga 的一名杰出的数据科学家。我们正在招聘

何时使用 Pandas transform()函数

原文:https://towardsdatascience.com/when-to-use-pandas-transform-function-df8861aa0dcf?source=collection_archive---------6-----------------------

一些最有用的熊猫把戏

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由巨浪 926Unsplash 上拍摄

Pandas 是一个令人惊叹的库,它包含大量用于操作数据的内置函数。其中,transform()在你想要操作行或列的时候非常有用。

在本文中,我们将介绍以下最常用的熊猫transform()功能:

  1. 转变价值观
  2. 结合groupby()的成果
  3. 过滤数据
  4. 在集团层面处理缺失值

请查看我的 Github repo 获取源代码

1.转变价值观

我们来看看pd.transform(**func**, **axis=0**)

  • 第一个参数*func*是指定用于操作数据的函数。它可以是函数、字符串函数名、函数列表或轴标签字典- >函数
  • 第二个参数 是指定*func*应用于哪个轴。0用于将*func*应用于每一列,而1用于将*func*应用于每一行。

让我们借助一些例子来看看transform()是如何工作的。

一项功能

我们可以传递一个函数给func。例如

df = pd.DataFrame({'A': [1,2,3], 'B': [10,20,30] })**def plus_10(x):
    return x+10**df.transform(**plus_10**)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您也可以使用 lambda 表达式。下面是plus_10() : 的λ当量

df.transform(**lambda x: x+10**)

字符串函数

我们可以将任何有效的熊猫字符串函数传递给func,例如'sqrt':

df.transform(**'sqrt'**)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

函数列表

*func*可以是功能列表。例如编号中的sqrtexp:

df.transform(**[np.sqrt, np.exp]**)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

轴标签的字典->函数

*func*可以是轴标签的字典- >功能。例如

df.transform(**{
    'A': np.sqrt,
    'B': np.exp,
}**)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.组合groupby()结果

熊猫transform()最引人注目的用途之一是结合grouby()的结果。

让我们借助一个例子来看看这是如何工作的。假设我们有一个关于连锁餐厅的数据集

df = pd.DataFrame({
  'restaurant_id': [101,102,103,104,105,106,107],
  'address': ['A','B','C','D', 'E', 'F', 'G'],
  'city': ['London','London','London','Oxford','Oxford', 'Durham', 'Durham'],
  'sales': [10,500,48,12,21,22,14]
})

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看到每个城市都有多家餐厅有销售。我们想知道“每家餐厅在该城市的销售额占多大比例”。预期的输出是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个计算中棘手的部分是,我们需要得到一个city _ total _ sales并将其组合回数据中,以便得到百分比。

有两种解决方案:

  1. groupby()apply()merge()
  2. groupby()transform()

解决方案 1: groupby()apply()merge()

第一个解决方案是用groupby()分割数据,用apply()聚集每个组,然后用merge()将结果合并回原始数据帧

第一步:用 **groupby()** **apply()** 计算出城市 _ 总 _ 销售额

city_sales = df.**groupby('city')**['sales']
             .**apply(sum)**.rename('city_total_sales').reset_index()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

groupby('city')通过对城市列进行分组来拆分数据。对于每个组,函数sum应用于 销售 列,以计算每个组的总和。最后,新列被重命名为city _ total _ sales,索引被重置(注意:reset_inde()需要清除groupby('city')生成的索引)。

此外,熊猫还有一个内置的[sum()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.sum.html#pandas.Series.sum)功能,下面是熊猫的sum()等价物:

city_sales = df.groupby('city')['sales']
             **.sum()**.rename('city_total_sales').reset_index()

第二步:使用 **merge()** 函数合并结果

df_new = pd.**merge**(df, **city_sales**, how='left')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于左外连接,使用merge()how='left'将分组结果合并回原始数据帧。

第三步:计算百分比

最后,可以计算百分比并进行格式化。

df_new['pct'] = **df_new['sales'] / df_new['city_total_sales']**
df_new['pct'] = df_new['pct'].apply(**lambda x: format(x, '.2%')**)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这当然有助于我们的工作。但是这是一个多步骤的过程,需要额外的代码来获得我们需要的形式的数据。

我们可以使用transform()函数有效地解决这个问题

解决方案二:groupby()transform()

这个解决方案改变了游戏规则。一行代码就可以解决应用和合并问题。

第一步:使用 **groupby()** **transform()** 计算城市 _ 总 _ 销售额

执行转换后,转换函数会保留与原始数据集相同数量的项目。因此,使用groupby后跟transform(sum)的一行步骤返回相同的输出。

df['city_total_sales'] = df.groupby('city')['sales']
                           .**transform('sum')**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二步:计算百分比

最后,这与求解百分比的方法相同。

df['pct'] = **df['sales'] / df['city_total_sales']**
df['pct'] = df['pct'].apply(**lambda x: format(x, '.2%')**)

3.过滤数据

transform()也可以用来过滤数据。这里我们试图获得城市总销售额大于 40 的记录

df[df.groupby('city')['sales'].transform('sum') > 40]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.在组级别处理缺失值

Pandas transform()的另一个用途是在组级别处理缺失值。让我们通过一个例子来看看这是如何工作的。

这是一个用于演示的数据框架

df = pd.DataFrame({
    'name': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
    'value': [1, np.nan, np.nan, 2, 8, 2, np.nan, 3]
})

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在上面的例子中,数据可以按名称分成三组,每组都有缺失值。替换缺失值的常见解决方案是用均值替换 NaN。

我们来看看各组的平均值。

df.groupby('name')['value'].mean()name
**A    1.0
B    5.0
C    2.5**
Name: value, dtype: float64

这里我们可以使用transform()用组平均值替换缺失值。

df['value'] = df.groupby('name')
                .**transform(lambda x: x.fillna(x.mean()))**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好了

感谢阅读。

请在我的 Github 上查看笔记本的源代码。

如果你对机器学习的实用方面感兴趣,请继续关注。

你可能会对我的其他一些熊猫文章感兴趣:

更多可以从我的 Github 中找到

什么时候用 PowerShell 代替 Shell 脚本?

原文:https://towardsdatascience.com/when-to-use-powershell-instead-of-shell-scripts-f71852fcb465?source=collection_archive---------62-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

罗曼·辛克维奇在 Unsplash 上拍摄的照片

假设我们需要编写一段代码,负责替换现有文件中一条信息,或者只是定期清理一个目录。

要解决这些情况,您认为什么工具可以简单地完成这项工作?

在我看来,shell 脚本是这项工作的合适人选。为什么我会相信?因为它们编写简单、易于理解、易于维护。

对,那么为什么我需要使用其他工具来做同样的工作并得到同样的输出呢?其实你没有,我的想法只是换个方式来说明:)

重要的事情先来

在这里你可以找到关于 Powershell 安装的完整文档。

好了,不多说了,我们来编码吧。

使用 Powershell 将数据替换到文件中

回到我们的场景,当我们想要替换现有文件中的一条信息时。假设我们有一个 json ,它有多个层次,如下所示:

替换字符串值

假设我们想要将“文件名”替换为类似“myAwesomeApp-${shortdate}”的内容。日志”,我们的代码可能是这样的:

文件更新时间:

现在,稍微复杂一点:

从数组中移除项目

现在,我们的目标是当“minLevel”是“Info”时删除“rule”。我们的 PowerShell 脚本可以是:

输出:

全部放在一起,然后进行一些重构

现在我们可以把所有这些放在一起,做一个小的重构:

最后一个文件是:

结论

就像上面的一切一样,没有绝对的真理,你可以做任何你想做的事情,你想做的事情,你可以毫无问题地工作。

但是在我看来,当你想把“面向对象”的行为带到你的任务中时,你应该使用 PowerShell 脚本。

你怎么想?你同意吗?你不同意吗?如果有你认为重要的补充,请告诉我:)

非常感谢您的宝贵时间!

最初发布于https://devan dops . cloud/when-use-powershell-inst-of-shell-scripts/

何时使用柯尔莫哥洛夫-斯米尔诺夫检验

原文:https://towardsdatascience.com/when-to-use-the-kolmogorov-smirnov-test-dd0b2c8a8f61?source=collection_archive---------4-----------------------

理论、应用和解释

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上由 Nerfee Mirandilla 拍摄

动机

假设检验在许多应用中被使用,而且这种方法看起来很简单。然而,很多时候,我们往往会忽略潜在的假设,并需要问:我们是在拿苹果和桔子做比较吗?当数据科学家决定放弃基于缺失特征的观察时,问题也出现了。

假设我们有特征f1, f2,… fn和一个二元目标变量y。假设许多观察结果缺少一个或多个特征的信息,我们决定删除这些观察结果(行)。通过这样做,我们可能已经改变了一个特征fk的分布。将这个问题公式化为一个问题:删除观测值会改变特征的分布吗?这个变化意义重大吗?

在这篇文章中,我们将提出一些 t 检验的假设,以及 Kolmogorov-Smirnov 检验如何验证或否定这些假设。也就是说,尽早声明 t 检验和 KS 检验测试的是不同的东西是至关重要的。

对于每一步,我们将介绍理论并用 Python 3 实现代码。如需完整示例,请随意阅读 jupyter 笔记本:https://github . com/NadimKawwa/Statistics/blob/master/KS _ test . ipynb

t 检验的局限性

有些情况下,我们应该怀疑 t 检验的结果。t-检验假设情况产生正常的数据,不同之处仅在于一种情况下的平均结果不同于另一种情况下的平均结果。

也就是说,如果我们对来自非正态分布的数据进行 t 检验,我们可能会增加出错的风险。根据中心极限定理 (CLM),随着对照组/治疗组变得足够大,t 检验变得更加稳健。

然而,在我们有足够大的样本的情况下,t 检验仍然可能失败。

具有相同平均值的小型数据集

考虑下面代码块中随机生成的两个样本:

两个样本都是从具有相同均值的正态分布中生成的,但是通过目测,很明显两个样本是不同的。t 检验可能无法发现这种差异,并自信地说两个样本是相同的。

使用 scipy.ttest.ttest_ind 对这些样本进行 t 检验,得出大于 0.05 的 p 值。因此,我们不能拒绝相同平均分的零假设。

不同均值相同分布

假设我们生成两个均值不同的小数据集,但非正态分布掩盖了差异,如下面的代码所示:

如果我们事先知道数据不是正态分布的,我们就不会一开始就使用 t 检验。考虑到这一点,我们引入一种方法来检查我们的观察值是否来自参考概率分布。

KS 测试

KS 检验是非参数和无分布的检验:它对数据的分布不做任何假设。KS 检验可以用来比较一个样本和一个参考概率分布,或者比较两个样本。

假设我们有我们认为来自分布 p 的观察值x1, x2, …xn,KS 检验用于评估:

  • 零假设:样本确实来自 P
  • 替代假设:样本不是来自 P

为了建立 KS 检验的直觉,我们后退一步,考虑描述性统计。众所周知,正态分布的平均值为 0,标准差为 1。因此,我们预计不超过 15%的数据低于平均值 1 个标准差以上。

我们将使用累积分布函数 (CDF)。更具体地说,我们将使用经验分布函数 (EDF):生成样本中点的累积分布函数的估计值。

CDF 的用处在于它唯一地表征了概率分布。我们希望将观察数据的经验分布函数 F_obs 与零假设相关的累积分布函数 F_exp 进行比较。

测试样本是否属于分配

在第一个例子中,假设我们的样本来自正态分布N(0,1)。我们希望将观察数据的经验分布函数与零假设相关的累积分布函数进行比较。

下面是设置这个实验的方法:

  • 按升序对观察值进行排序
  • 计算观测值的 CDF
  • 对于每个观测值,xi 计算 F_exp(xi) = P(Z ≤ xi)
  • 计算绝对差值
  • 记录最大差异
  • 计算临界值
  • 拒绝或接受零假设

实现相当简单:

下面的图直观地展示了我们正在做的事情。观察值F_obs由蓝色曲线表示,而理论值F_exp由橙色曲线表示。垂直的绿线是观测值和理论值之间的差异

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们的最大差异小于D_Crit,我们无法拒绝零假设。95%时的临界值近似为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 n 是样本数。

两个样品的 KS

给定两个样本xy,我们希望测试它们是否来自同一个分布 p。首先改变的是接近 95%临界值的公式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中n_xn_y 是每个样本中的观察次数。

我们将从两个分布中随机生成两个随机样本:

为了比较这两者,我们实施了以下步骤:

  • 订购每个样品
  • 串联成一个排序数组
  • 计算两个样本的观测累积分布函数
  • 计算它们的最大绝对差值D_n
  • 对比D_crit

在实现代码之前,我们在下面的图中展示了我们的视觉目标。查看 CDF,我们可以直观地说,样本 a 和 b 不来自相同的分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在下面的代码块中,我们将实现前两步。

接下来,我们利用 scipy 的 percentileofscore 来计算 CDF,如下所示:

在我们的例子 D_crit=0.408中,不出所料,我们得到了D_n=0.6,我们拒绝了两者来自同一分布的无效假设。

结论

我们使用了 KS 检验来比较一个样本和一个参考概率分布,或者比较两个样本。在许多日常应用中,测试用于验证假设并帮助指导决策。

为了更快地实现,scipy 包提供了一个针对拟合优度两个样本的 KS 测试。

参考

维基百科:https://en . Wikipedia . org/wiki/Kolmogorov % E2 % 80% 93s mirnov _ testhttps://en . Wikipedia . org/wiki/Cumulative _ distribution _ function

圣本笃学院和圣约翰大学:http://www.physics.csbsju.edu/stats/KS-test.html

牛津大学统计系:http://www.stats.ox.ac.uk/~massa/Lecture%2013.pdf

预测新冠肺炎的顶峰

原文:https://towardsdatascience.com/when-will-covid-19-peak-96a41939ac33?source=collection_archive---------31-----------------------

流行病传播建模的简单指南

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

粘土银行Unsplash 拍摄的照片

全球新冠肺炎确诊病例:

  • 3 月 1 日:88585
  • 3 月 15 日:169511 人
  • 4 月 1 日:935,232

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:https://www . worldometers . info/coronavirus/,最近一次访问时间为 2020 年 4 月 7 日

在撰写本文时,全球有超过 200 万例确诊病例。当政府采取行动使曲线变平时,统计学家和流行病学家开始预测它会蔓延多远。3 月 30 日和 31 日进行的一项专家调查估计到 4 月 5 日总病例数在 141,000 到 1,000,000 之间。但是为什么估算的差距如此之大呢?

这篇文章探索了用于预测传染病传播的模型背后的基本概念,比如新冠肺炎(不需要数学背景)。

设置

每个预测模型都有一套假设。我们称之为模型的基本设置。这里,我们将以 SIR 型号为例。规则是:

规则#1: 我们对规模为 N 的人群中的感染进行建模,其中 N 不变。

规则 2: 我们人口中的每个人一次只能处于三种状态之一:

  • 易受感染的:可能从其他感染者那里感染
  • I 感染:有感染,并能感染易感人群
  • R ecovered:免疫,不能再感染
    或再感染*(注:特别针对新冠肺炎,* SIS SIRS型号可能更合适。 我们还不知道 一个人是否会被再次感染)

规则#3: 人只能按顺序通过这三种状态过渡。从 S,到 I,到 r。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将使用这些字母作为人口中属于每个类别的人数的缩写。例如,如果我们对一个 100 人的群体进行建模,并且我们假设在第一天只有一个人被感染,我们会将其描述为:

  • N = 100(总人口规模)
  • S = 99,(易感人群的数量)
  • I = 1,(被感染的人数)
  • R = 0(康复的人数)

时代变迁

上面的简写可能是对当前形势的准确描述。然而,每组的人数随着时间的推移而变化。以下图表为例,说明一种传染病如何在我们假设的 100 人中传播:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 第一天: I = 1
  • 第 250 天: I = 74
  • 第 500 天: I = 51

如果不参考时间,我们之前对每个类别中人数的速记符号并不能告诉我们太多。为了更加清晰,我们做了一点小小的改进:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一般来说,我们将其记为 I(t) ,其中 t 代表时间(在本例中是天数)。我们可以用同样的方式描述易感者和康复者的数量:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通常,我们在同一个图表上绘制所有三条线,并像这样展示我们的模型:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们已经有了模型的基本设置,我们如何使用它来进行预测呢?换句话说,以下两种模式的区别是什么?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

答案是:

速度决定一切

这种差异可以用两个主要因素来解释:

  1. 疾病传播的速度有多快
  2. 一个人被感染后恢复的速度有多快

感染速度

决定疾病传播速度的因素有两个。

首先是这种疾病的传染性。把这想象成一个易感者接触到一个感染者后被感染的机会。这种被称为 遗传性 的感染。如果遗传率是 0.5,这意味着有 50/50 的机会。如果是 0.25,那么就有 1/4 的几率,以此类推。

第二个是人群中的人互相接触的频率。感染者和易感者相互接触越频繁,易感者被感染的可能性就越大。这被称为“平均接触率”。

感染传播的速度取决于的平均接触率* 。当我们把这些放在一起,就得到 传输率 。如果传染率高,传染病会传播得更快。*

传染率 =传染率平均接触率*

恢复速度

当一个人被感染时,他们会传染给其他人。一旦他们康复了,他们就不能再感染任何人或再次感染(还记得我们设置的规则吗?).恢复时间长有两个主要后果。首先是每个感染者会有更长的时间去传染其他人。第二是很多人同时被感染的可能性会更大。

举下面这个例子。让我们假设每个感染者每天接触 10 个易感者。如果只需要一天恢复,那就只有 10 次机会传染给另一个人。如果需要 10 天,就有 100 次传播感染的机会。现在我们假设同时感染组有 50 个人。现在每天有 5000 次传播疾病的机会。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个人恢复需要多长时间被称为*。如果恢复率较低(即,如果一个人需要更长时间恢复),传染病将传播得更快。***

将所有这些放在一起

现在,我们已经有了将工作模型组合在一起的所有部分。

  • 感染开始时每组的人数
  • 传输速率
  • 回收率

有了这些信息,我们可以预测每组中有多少人会倒下,以及这将如何随时间变化。

易感

随着传染病的传播,易感人群会减少。我们使用以下公式对此进行建模:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 如果很大一部分人是易感人群,那么我们预计 s 的变化会更快,因为每个感染者都更容易与易感者接触。
  • 同样,如果大部分人口被感染,我们预计 s 的变化会更快,因为感染者和易感者有更高的机会进行接触。

被感染

感染人数随时间有两个变化。随着越来越多的人脱离易感人群,这一数字会上升,随着人们康复,这一数字会下降。我们需要在这里对两个部分进行建模。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 等式的第一部分与 s 中的变化完全相同(除了它是正的)。随着人们离开易感状态,他们进入了感染状态。
  • 等式的第二部分模拟康复人数变化的速度。恢复率仅适用于受感染的人口比例,因为只有那些受感染的人才能过渡到恢复状态。

恢复了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 这与 i 中变化的负部分相同(除了这里是正的)。那些离开感染状态的人,进入康复状态。

结束语

如果你已经做到了这一步,花一点时间思考一下你刚刚学过的内容。简单介绍一下数学:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

控制 SIR 模型的微分方程组

您已经完成了:

  • 如何使用微分方程系统来模拟传染病的传播
  • ****隔间模型背后的概念(还有其他变体
  • 传染病传播速度背后的关键决定因素

记住,每个预测模型都有一套假设。没有完美的模式。虽然 SIR 有其优点,并形成了许多其他房室模型的基础,但它也有其局限性。这里有几个要记住:

  • 它假设人口规模不变(换句话说,不考虑出生、自然死亡或移民)
  • 它可能不适用于可能再次感染的情况(SIRS 或 SIS 模型在这种情况下可能更有用)
  • 它假设了一个“混合良好的人群”,人群中每个感染者和易感者相遇的几率足够接近模型中假设的平均接触率

更新—2020 年 5 月 25 日

传输和恢复率定义了基本再生数—** 这些房室模型中的一个关键变量。您可以在这里找到详细信息:**

** [## 基本生殖数字对新冠肺炎和医疗保健意味着什么

新冠肺炎会压垮我们的医疗系统吗?

towardsdatascience.com](/will-covid-19-overwhelm-our-healthcare-systems-f5bc49bc77a2)**

编者注: 走向数据科学 是一份以研究数据科学和机器学习为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值