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

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

Python 中基于 GESD 的异常检测

原文:https://towardsdatascience.com/anomaly-detection-with-generalized-extreme-studentized-deviate-in-python-f350075900e2?source=collection_archive---------7-----------------------

理解 GESD 并用 Python 实现它

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

来源: Unsplash

异常检测在各种各样的用例中扮演着非常重要的角色。通常,异常数据可能与某种问题或罕见事件有关,例如银行欺诈、医疗问题、结构缺陷、设备故障等。这种联系使得挑选出哪些数据点可以被视为异常变得非常有趣,因为从业务角度来看,识别这些事件通常非常有趣。

此外,许多统计技术对异常值的存在很敏感。例如,平均值和标准偏差的简单计算可能会被一个非常不准确的数据点扭曲。检查异常值应该是任何数据分析的常规部分,并且应该检查潜在的异常值以查看它们是否可能是错误的

什么是异常检测?

异常检测是发现数据集异常值的任何过程;那些不属于这里的东西。这些异常可能指向不寻常的网络流量,发现某个传感器出了故障,或者只是在分析之前识别出要清理的数据

有各种技术可用于根据不同的方案或方法识别异常,如图形(箱线图、散点图)、基于距离的方案(最近邻法、聚类算法)、统计方法(GESD、基于四分位数的技术)等。每种方案都有其优点和缺点,其功效取决于使用案例。

在本文中,我们将重点关注 GESD(广义极端学生化偏差),并用 python 实现一个简单的示例,以更好地理解它的工作原理。在我开始之前,我想承认这篇文章在很大程度上受到了我的探索性数据分析教授 Edward McFowland 和 Bhavesh Bhatt 在 YouTube 上的机器学习和统计教程的启发。

什么是 GESD?

GESD 是一种简单的统计方法,用于检测符合近似正态分布的单变量数据集中的一个或多个异常值。统计方法假设常规数据遵循某种统计模型,不遵循该模型的数据是异常值。

GESD 克服了格拉布斯检验蒂特金-摩尔检验的主要限制,即异常值的可疑数量 k 必须精确指定。如果没有正确指定 k ,这可能会扭曲这些测试的结论。GESD 检验只要求指定异常值可疑数量的上限。

给定上限 r ,广义 ESD 测试本质上执行 r 单独的测试:一个异常值的测试,两个异常值的测试,等等,直到 r 异常值。

广义 ESD 测试是针对以下假设定义的:

H0:数据集中没有异常值

高可用性:数据集中有多达 r 个异常值

我们的测试统计由下面的公式给出:

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

GESD 的检验统计

这里,x_bar 和σ分别表示样本均值和样本标准差。

在 GESD,我们移除最大化| xix_bar 的观察,然后用 n-1 个观察重新计算上述统计。我们重复这个过程,直到 r 个观察值被去除。这导致 r 统计数据 R1,R2 ……,Rr。通过编码示例,该过程将变得更加清晰。

对应于 r 测试统计,计算以下 r 临界值:

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

临界值计算

其中 tp,ν 是从具有 ν 自由度的tt分配的 100 p 百分点

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

我们的显著性水平将由α表示。

通过找到最大的 i 来确定异常值的数量,使得 Ri > λi

Rosner 的模拟研究表明,这个临界值近似值对于 n ≥ 25 非常精确,对于 n≥15 相当精确。

请注意,尽管广义 ESD 本质上是按顺序应用的格拉布斯测试,但还是有一些重要的区别:

  • 广义 ESD 测试根据测试的异常值数量对临界值进行适当的调整,而连续应用 Grubbs 测试则不会。
  • 如果存在明显的掩蔽,连续应用格拉布斯检验可能会过早停止。

现在为了巩固理论部分,让我们用 Python 实现 GESD,以了解它实际上是如何工作的:

由于这是一个例子,我们将首先模拟我们的数据。这里我们创建 100 个 0 到 1 之间的随机值。我们的数据散点图如下所示。

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

现在,我们会故意在数据中放一些异常值进行识别。

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

有异常值的数据

现在,我们将创建单独的函数来计算测试统计数据和临界值

计算测试统计的函数:

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

计算临界值的函数:

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

该函数将所有内容汇集在一起,并执行 r 检验来确定异常值的数量。对于每次迭代,我们使用上面的函数来计算使|Xix _ bar|最大化的检验统计量,然后计算相应的临界值,然后在下一次迭代中从我们的数据中移除观察值。

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

对我们的数据调用具有 7 个异常值上限且显著性水平为 5%的函数会产生以下结果:

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

我们可以看到执行了 7 项测试。通过找到最大的 i 来确定异常值的数量,使得RiλI。在本例中,测试统计值大于临界值(在 5 %的水平)的最大异常值数是 3。因此,我们得出结论,在这个数据集中有 3 个异常值。

下面是完整的代码:

这就是 GESD 在 python 中的实现。我希望这篇文章将有助于您实现这个简单而有效的方法来发现数据中的异常值。更多项目请查看我的 Github 简介

参考文献:

bmc| 机器学习的异常检测:Jonathan Johnson 的介绍

*https://datascience904.wordpress.com/2019/10/14/anomaly-detection-using-pca/

https://www . ITL . NIST . gov/div 898/handbook/EDA/section 3/EDA 35h 3 . htm*

异常和欺诈检测

原文:https://towardsdatascience.com/anomaly-fraud-detection-a-quick-overview-28641ec49ec1?source=collection_archive---------16-----------------------

可用方法的快速概述

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

这真的很反常。—Ibrahim BoranUnsplash 上拍摄的照片

异常检测、欺诈检测和异常检测是人工智能领域常见的术语。虽然有不同的术语,并在脑海中暗示不同的图像,但它们都归结为同一个数学问题,简而言之就是,在许多条目中检测似乎不属于那里的条目的过程。

例如,作为异常检测的一个用例,信用卡/借记卡欺诈检测是检查传入的交易请求是否与用户以前的档案和行为相符的过程。以此为例:乔是一个勤奋的人,在纽约附近的一家工厂工作。每天他从当地的咖啡馆买一杯咖啡,去上班,买午餐,在回家的路上,他有时会去买些杂货。他用自己的卡支付账单,偶尔会在休闲、餐馆、电影院等地方花钱。

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

照片由rupixen.comUnsplash 上拍摄

一天,一个交易请求被发送到 Joe 的银行帐户,要求他在德克萨斯州奥斯汀附近的一家必胜客支付 30 美元。不知道这是 Joe 在度假还是他的卡丢失了,这看起来像是异常交易吗?是的。如果有人开始在“持卡人不在场”的基础上用乔的账户支付 10 美元的账单,例如在线支付,该怎么办?银行机构想要停止这些交易,并通过短信或电子邮件向 Joe 核实这些交易。

这些都是肉眼可以识别的异常交易的明显例子。但是正如每一个统计问题一样,总有不平凡的情况。我们如何探测它们是我想谈论的问题。

请注意,异常检测问题没有确定的答案,答案是随机的,并且总是取决于我们查看数据的角度。

方法

我将解决这个问题的数学方法分为三类:容易解释的统计方法,有点解释的经典机器学习方法,以及黑盒深度学习方法。

特征工程

特征工程的过程建立了我们观察数据的框架。它定义了我们认为什么是重要的,它是我们将直觉引入模型的过程。这一步在很大程度上取决于手头的问题,但我将针对我们之前讨论过的银行账户示例深入探讨这个问题。什么可以帮助我们确定乔是乔还是他的卡或在线凭证丢失了?这里有一个提示性的列表:

  1. **这一天花掉的钱的总数:**看着这个,并将其与乔每天通常的总数进行比较,模型将了解乔通常的行为。
  2. 当日交易笔数
  3. 金额
  4. 一天中的某个小时
  5. 位置

引用贝森等人的这本书。艾尔。,

欺诈性账户活动可能涉及在短时间内尽可能多地消费。

这些是一些例子,需要银行机构从他们关于 Joe 的数据库的不同表中得到。当然,每个问题还有许多其他可能的特征,试着为你的情况找到它们。

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

特征工程是重要的一步—照片由 airfocusUnsplash 上拍摄

统计方法

这个名字可能有点误导,因为我们要做的一切都是统计方法,对吗?但是在这里,我将重点放在简单的统计数据上,这些数据可以在 5 分钟内解释给利益相关者,他们可能不理解复杂的方法。这些方法的一个缺点是它们不能处理分类数据,如一天中的小时特征。因此,为了实现它们,我建议将它们分别应用于每个类别。所以我们会比较日间交易和隔夜交易。

  1. 修改后的 Z 值:

Z-score 背后有一个非常简单的想法,这个数据点距离别人的均值有多少标准差?它越高,数据点越异常。这个定义有局限性,它假设数据是正态分布的,容易出现异常值,如果 Joe 决定偶尔比平时多花一点钱,就会触发异常值。因此,我们将目光转向修改后的 Z-score,这也是由伊格莱维奇和霍格林推荐的。

修改后的 Z 分数使用中位数绝对偏差,定义如下:

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

修改的 Z 分数

作者建议将修改后的 Z 值为 3.5 或更高的点标记为异常。

2.四分位距:

正如在箱线图可视化中看到的,一个范围内的数据分布可以用四分位数来可视化,这里有一个很好的描述。

在这种方法中,第一个和第三个四分位数之间的点是正常点,它们之外的点将被标记为异常点。例如,您可以将其修改为“整数”范围,其中您可以使用第 n 个和第 m 个整数来标记数据,而不是四分位数。

3.柱状图箱:

直方图作为一种著名的数据可视化方法,也可以用于离群点检测。通过计算每个样本的箱并获取直方图,我们可以将异常点标记为异常。这在某种程度上与 Z 得分指标相关。

机器学习方法

与上面描述的方法相比,ML 方法要复杂得多,有点复杂,并且能够处理分类数据(通过预处理方法,例如一键编码,例如 Pandas 中的 get_dummies )。

  1. k 近邻

kNN 是一种广泛使用的 ML 算法,其背后的基本逻辑如下:“相似的观察值彼此接近,而离群值通常是孤立的观察值”。利用这一点,我们可以检测出一个高维特征空间中最“孤独”的点。在 sklearn 库中有很大的涵盖。通过计算每个数据点与其他数据点的平均距离,我们可以设置一个阈值,将它们中的一定比例归类为异常,甚至可以对这些距离运行 Z 评分,并找到异常值。

2.一级 SVM

支持向量机是 ML 工具包中的强大武器。简而言之,它们是特征空间中的超平面,将点分成不同的类。在异常检测的上下文中,一类支持向量机学习什么是“正常的”,并基于此检测异常值和异常数据。这里的是一篇关于其背后的数学的彻底而完整的文章。sklearn 的 SVM 工具包中有一类支持向量机。

3.数据库扫描

DBSCAN 是一种无监督算法,可以检测空间中密集的区域,并将低密度区域中的数据点标记为异常。这是一种广泛使用的聚类方法,有两个超参数需要调整:Epsilon 和 min_samples,如 sklearn 的实现中所定义。

Epsilon 是数据点相互之间应该有多接近才能成为一个聚类的一部分的度量,min_samples 是一个聚类中的最小点数。

  1. LOF(局部异常因素)

虽然与 kNN 和 DBSCAN 的逻辑相似,但 LOF 为每个数据点分配了一个指标(LOF ),正常点的得分在 1 到 1.5 之间,而异常点的得分更高。在 sklearn 中也有。

4.隔离森林

隔离森林或 iForest 是一种非常强大的,可能是大数据中最好的方法,用于异常检测的工具。它很容易扩展,这里有一个很好的解释。这是大数据异常检测的必由之路。

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

随机森林!—Jay MantriUnsplash 上拍摄的照片

深度学习方法

最后,在花哨的人工智能领域,我们最终得到了黑盒,它们出于我们不知道的原因表现良好,并根据我们无法解释的原因来判断数据。最著名的 DL 异常检测方法是使用自动编码器网络。

自动编码器

自动编码器是由两个,实际上是三个部分组成的网络:编码器,潜在空间,解码器。用数学术语来说,自动编码器学习数据集上的恒等函数(简单地说: f(x)=x )。假设我输入了一大组我认为没有欺诈性的 Joe 的交易。网络训练取事务 a编码潜在,低维空间,然后解码回基数等于输入空间的空间。例如,具有 100 个特征的输入将被减少到具有 30 个特征的潜在空间(这是编码),然后返回到 100 个特征的表示。神经网络训练最小化输入和输出之间的差异。

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

来自:https://towards data science . com/applied-deep-learning-part-3-auto encoders-1c 083 af 4d 798

所以它基本上学会了回馈它收到的任何东西。现在,在训练阶段之后,如果我们显示它的正常入口,网络将能够以低误差重建它,因为它与我们训练网络所用的相似。但是如果我输入一个稍微不同的条目呢?重构误差会更高,这意味着网络还不能很好地重构它。我们可以基于这个度量来决定一个数据点是否异常。

这是对著名的、可用的异常检测方法的快速回顾。我将在以后更深入地研究其中的一些,并提供一个在样本数据集中检测欺诈的实际例子。如果你有什么想法,请告诉我。

用 hashlib 匿名化 Pandas DataFrame 列中的敏感数据

原文:https://towardsdatascience.com/anonymise-sensitive-data-in-a-pandas-dataframe-column-with-hashlib-8e7ef397d91f?source=collection_archive---------6-----------------------

停止在您的数据框架中共享个人身份信息

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

马库斯·斯皮斯克在 Unsplash 上的照片

数据科学家遇到的一个常见情况是与其他人共享数据。但是,如果这些数据包含电子邮件地址、客户 id 或电话号码等个人身份信息(PII ),您该怎么办呢?

一个简单的解决方案是在共享数据之前删除这些字段。然而,你的分析可能依赖于 PII 的数据。例如,电子商务交易数据集中的客户 id 是了解哪个客户购买了哪个产品所必需的。

相反,你可以使用散列法来匿名化数据中的 PII 字段。

哈希是什么?

哈希是将明文字符串转换为固定长度的唯一字符串的单向过程。哈希过程有两个重要特征:

  1. 将散列字符串转换成其原始形式是非常困难的
  2. 相同的明文字符串将产生相同的哈希输出

出于这些原因,开发人员会将您的散列密码存储在网站的数据库中。

一个使用 hashlib 的简单例子

haslib 是 Python 中的内置模块,包含了很多流行的哈希算法。在我们的教程中,我们将使用 SHA-256,它是 SHA-2 算法家族的一部分。

在将我们的字符串(在本例中为电子邮件地址)转换为哈希值之前,我们必须首先使用 UTF-8 编码将其转换为字节:

import hashlib# Encode our string using UTF-8 default 
stringToHash = 'example@email.com'.encode()

我们现在可以使用 SHA-256 散列它:

# Hash using SHA-256 and print
print('Email (SHA-256): ', hashlib.sha256(stringToHash).hexdigest())

输出:

Email (SHA-256): 36e96648c5410d00a7da7206c01237139f950bed21d8c729aae019dbe07964e7

就是这样!我们的假电子邮件地址已被成功散列。

使用 pandas 和 hashlib 的完整示例

既然我们可以将 hashlib 应用于单个字符串,那么将这个例子扩展到 pandas 数据帧就相当简单了。我们将使用信用卡客户数据,这些数据可以在 Kaggle 上获得,最初是由Analyttica treasury hunt LEAPS提供的。

**场景:**你需要共享一个信用卡客户列表。您希望保留字段“CLIENTNUM ”,因为一个客户可以拥有多张信用卡,并且您希望能够唯一地标识它们。

import pandas as pd# Read only select columns using pandas
df = pd.read_csv('data/BankChurners.csv', usecols=['CLIENTNUM', 'Customer_Age', 'Gender', 'Attrition_Flag', 'Total_Trans_Amt'])df.head()

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

作者图片

在将我们的“CLIENTNUM”列转换为 string 数据类型之后,我们可以使用 pandas .apply()散列该列中的所有字符串:

# Convert column to string
df['CLIENTNUM'] = df['CLIENTNUM'].astype(str)# Apply hashing function to the column
df['CLIENTNUM_HASH'] = df['CLIENTNUM'].apply(
    lambda x: 
        hashlib.sha256(x.encode()).hexdigest()
)

祝你在尝试破解我们新创建的专栏时好运。

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

作者图片

结论

完成本教程后,你应该对哈希算法有一个基本的了解。我们看到了如何使用 hashlib 散列一个字符串,以及如何将它应用于 pandas DataFrame 列来匿名敏感信息。

你有什么问题吗? 推我 或者在 LinkedIn 上加我。

你可以在 GitHub 上找到这篇文章中用到的所有代码。

匿名数据无用:事实还是虚构?

原文:https://towardsdatascience.com/anonymized-data-is-useless-fact-or-fiction-b8ab087d5c1e?source=collection_archive---------31-----------------------

思想和理论

挖掘非结构化数据

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

来源:https://unsplash.com/photos/qm1zk-2oWD4

“匿名化什么时候有用?”是一个棘手的问题,因为答案高度依赖于数据类型和任务。匿名化数据集正被用于众多领域的学术研究、工业研究和现实产品,由于数据的高度敏感性和实用性,临床研究往往处于领先地位。2016 年 NIST 的一个演讲提到了匿名数据有用的其他几个用例,包括:

  • 改进方向和交通数据的驾驶解决方案。
  • 坑洞警报。
  • 公布教育记录。
  • 提交给联邦航空管理局的自愿安全报告。

虽然已经对结构化数据匿名化的适当方法进行了多年的研究(特别是在医疗领域),但对非结构化数据匿名化的研究才刚刚开始。在这篇文章中,我们将深入研究语音、图像/视频和文本匿名化领域。

演讲

对于语音,匿名化意味着:

(1)使说话者的声音不可识别(例如,使用在使用 X 向量和神经波形模型的说话者匿名化中提出的方法)和

(2)通过发出哔哔声或替换它们(即,假名化)从语音中去除直接和准标识符。

如果您还没有阅读“揭秘去标识化”或“数据匿名化:来自一位前怀疑者的观点”的话,请快速提醒您,直接标识符是直接标识个人的实体(全名、确切位置、社会保险号等)。)并且准标识符是当组合在一起时能够以指数可能性识别个体的实体(年龄、近似位置、口语等)。).

如果你对语音技术和隐私感兴趣,可以看看语音隐私倡议ISCA 语音通信安全和隐私特别兴趣小组,该小组聚集了来自各种背景(从信号处理到法律)的专业人士来讨论语音技术中的隐私问题。

图像和视频

鉴于可识别信息的多样性,图像和视频中的匿名化是一项复杂的任务。虽然完全并适当地模糊照片中的整个人体可能会对某些受限的使用情况产生影响,但背包上的姓名标签、不同的午餐盒、背景中的房子等仍然存在重新识别的风险。然而,这些媒体的匿名化往往只是意味着删除或替换人脸,这意味着它仅限于身体的特定部位,而不是将重新识别的风险降低到几乎为零(例如,人脸匿名化——例如,参见 CIAGAN:有条件身份匿名化生成对抗网络)。这是一个开始,但考虑到像 Palantir Technologies 这样的公司可以通过纹身来识别人,移除或替换身体的一部分通常只能称为编辑,而不是匿名化。

也就是说,有许多机器学习任务使用没有个人数据的图像和视频,或者其中的个人数据是多余的,可以在不损害任务的情况下删除/替换,包括:

就拿车辆计数 GitHub repo 中提供的车辆计数的例子来说吧。

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

图片来源:https://github.com/ahmetozlu/vehicle_counting_tensorflow(麻省理工学院许可)

很明显,在这项任务中,车牌和人脸都不起作用。如果我们担心独特的汽车颜色太明显,即使是黑白视频也可以做得很好,就像在边缘计数车辆一样(例如,在数据到达任何服务器之前,直接在摄像机上)。

以另一张图片为例:

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

来源:https://unsplash.com/photos/EJnhyLTbPH8

你能从图像中发现什么?

  • 房屋数量
  • 农田类型
  • 减轻
  • 天气

有许多关于地形的可用信息,也有许多类似的图像可用于确定生态系统的健康状况、作物中是否有杂草生长等。更不用说许多匿名视频可以作为自动驾驶汽车的部分训练集。

文本

最后,让我们考虑一下文本匿名化。已经有一些关于文本的重新识别风险分数的初步研究,包括我们在《数据保护和隐私杂志》上发表的题为关于非结构化数据去识别的推理的研究(如果你很难访问该论文,请给我发电子邮件)。虽然出于数据发布目的的适当匿名化需要专家检查数据并计算重新识别的风险,但我们可以说,自动编辑文本在通过数据最小化(即,将您收集的个人数据量减少到仅必要的数量)大大提高数据安全性方面发挥了巨大作用。请注意,已经对统计和基于规则的系统自动去识别医学文本语料库的有效性进行了测试(这些研究中的三项在此处进行了总结)。这些测试必须重新进行,以说明统计自然语言处理系统在过去三年中的巨大改进。

有趣的是,让我给你举一个简单的例子,说明一封匿名邮件可以携带多少信息:

“你好[姓名],

抱歉,它已经在我的垃圾邮件中结束了!

我明天[时间]有预约,但是[时间]可以。届时,我将发送更新的邀请。如果这对你不起作用,请告诉我。

谢谢你,

[姓名]"

知道是谁写的吗?除非你是收件人或作者,否则不可能知道。

但是你能从这封邮件中收集到什么有用的信息呢?

  • 一个电话被重新安排到明天
  • 发送者很有礼貌(说请和谢谢)
  • 收件人的前一封电子邮件本不应该出现在垃圾邮件文件夹中,但却出现了!

比如说,电子邮件服务提供商可以用这些信息做什么?嗯,如果他们能确保这个收件人的邮件再也不会出现在垃圾邮件文件夹里,那就太好了。

我有很多这样的例子。从能够识别一个人对特定产品的感觉,到确定谈话中涉及的话题,以及确定消费者在聊天或电话中的情绪。

匿名数据是

社区需要时间和大量的研究来更好地理解数据匿名和有用的意义。正如在差分隐私和匿名化领域一样,在密码学领域也可以感受到迭代技术并理解其局限性的过程。我们不再使用 DES 加密数据,而是使用 AES。很有可能,在未来十年,我们将不得不更多地依赖基于网格的加密技术,而不是 RSA。当我们发现一项技术的局限性时,我们不会把婴儿和洗澡水一起倒掉,而是希望更深入地了解哪里出了问题,对它进行创新,并使它更强大、更有用、更容易使用。

致谢 感谢 John Stocks 和 Pieter Luitjens 对本文早期草稿的反馈。

另一篇先验的文章,但有一点小小的变化…

原文:https://towardsdatascience.com/another-apriori-article-but-with-a-small-twist-ebfac2d639b?source=collection_archive---------30-----------------------

你的老板想知道做一次产品推广的估计财务影响,给了你一大堆交易数据。现在怎么办?

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

斯蒂芬·道森Unsplash 上拍摄的照片

已经有很多关于先验细节的好文章了。我将主要关注一个现实的商业场景,它可能围绕着先验和市场篮分析的应用出现。

但是对 Apriori 算法做一个快速和高水平的复习是没有坏处的。

买了 X 的也买了 Y.

Apriori 是一种关联规则挖掘算法,它发现哪些项目倾向于与哪些其他项目相匹配。想象一个超市,薯条和蘸酱通常在过道上相邻放置(甚至穿过商店,让你走得更远,可能会冲动购买更多)。

在进行购物篮分析时,Apriori 算法的输出中有三个关键指标需要查看,即支持度、信心度和提升度。

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

支持 - >既有 A 又有 b 的部分交易

置信度 - >给定 A 出现的次数,A & B 一起买入的频率。

解除 - >表示统治随机几率的强弱。例如,3.2 的提升意味着如果客户购买 A,他们购买 b 的可能性会增加 3.2 倍。

回到你老板要求的场景…

在这个场景中,您有一个包含零售业务交易数据的大文件。你的老板说市场部想通过赠送糖果棒来促销贺卡。您的任务是验证假设并估计财务影响。

我觉得贺卡利润丰厚,我也喜欢糖果。不管怎样,回到场景…

取一个峰值,我们可以看到有 459,258 条记录,最终代表 200,000 笔交易。

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

项目频率图(来自 R 中的 arulesViz 库)(图片由作者提供)

我这里主要关注的是 有什么影响? “在真实的商业场景中。在这一点上,我将忽略 EDA,以及很多先验部分本身,因为它在其他文章中已经讨论过了,但不是我的主要关注点。

浏览完数据后,你会发现这并不是一个太糟糕的想法。我们看到,几乎 30%的情况下,购买糖果棒的同时还会购买贺卡(信心)。我们还发现,购买贺卡的人购买糖果棒的可能性是其他人的 1.74 倍()。

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

LHS 和 RHS 分别是“左手侧”和“右手侧”。LHS 是倾向于导致购买 RHS 产品的产品。(图片由作者提供)

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

按事务数据集中的项目汇总统计信息。(图片由作者提供)

给定按产品的汇总统计数据并浏览原始数据,可以有把握地说这里可能发生两种情况中的一种(可能是组合)。

  1. 这家公司的交易中有相当一部分是大宗销售。
  2. 来自杂项事务的数据中有噪声。
    -例如,一家商店的系统停机了一天,他们输入了一个汇总交易来平衡库存。

这个数据集对于一个简单的例子来说已经足够好了,所以让我们看看糖果和贺卡。

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

项目摘要表的子集,查看我们感兴趣的内容。(图片由作者提供)

假设

让我们假设:

  • 贺卡的利润非常可观,1 美元买 5 美元卖。
  • 糖果有不错的利润,0.67 美元买进,1 美元卖出。
  • 该数据代表 1 年的交易量。

可以肯定地说,以这样的速度,我们想推动贺卡的销售,可以用糖果棒的销售作为激励。

我们在汇总表中看到,平均贺卡交易有 2.53 张贺卡。

现在最大的问题是:

如果我们能通过“至少购买 3 张贺卡,可获得一个免费糖果棒”的促销活动,将平均贺卡数量从 2.53 张提高到 3 张… 会有什么影响?

平均数 3.0 减去目前的平均数 2.531,得出每笔交易贺卡平均净增加 0.469 张。

我们可以用这个增量,或者说净平均增长,乘以利润来估算贺卡业务的毛利增长。很简单,每张卡 0.469 * 4 美元的利润等于 1.876 美元。

现在我们有进展了。如果我们将平均值提高到 3,我们可以预期每笔交易会再增加 1.876 美元。但是等等,糖果不是免费的(记住,它们的价格是 0.67 英镑),所以我们需要把它考虑进去。这使我们每笔交易的净利润增加了 1.206 美元。

因此,如果我们将其应用于贺卡交易总数(40,292),我们会看到 预计的 净利润增长为 $48,608!

旁注:

当进行这类分析时,如果企业中有人在寻找一个数字,设定期望值很重要。任何时候我被要求计算出一些变化的影响,我总是把它框定为一个估计,并列出导致那个估计的我的假设。大多数时候都明白没有水晶球,但也有可能有人认为有。或者更有可能的是,他们知道这是一个估计,但他们不知道你可能做的任何假设。

因此,起初,这个场景可能看起来令人生畏,尤其是对于初级分析师(没关系!).但是,如果我们把问题分解成更小的块,就会变得容易得多。

结论

感谢您花时间阅读本文。我希望您从中获得了一些有用的东西,可以应用到现实世界的场景中。如果您有任何问题或反馈,请随时发表评论。

如果你喜欢这篇文章,你可能也会喜欢我关于使用 PuLP 解决一个简单优化问题的文章。

https://python.plainenglish.io/python-pulp-optimization-a-simple-logistics-example-4a8f713ba807

继续学习!

你应该知道的另一个 JupyterLab 扩展

原文:https://towardsdatascience.com/another-jupyterlab-extension-you-should-know-about-146371cf0f32?source=collection_archive---------13-----------------------

米托是一个 JupyterLab 扩展,可以轻松地使用 Excel 探索和转换数据集……而且是免费的。

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

本杰明·戴维斯在 Unsplash 上拍摄的照片

随着所有新的 JupyterLab 扩展的出现,成为数据科学社区的一员真是一个激动人心的时刻。他们通过减少乏味的工作使数据科学变得更加有趣。

我记得在过去,我们必须依赖 numpy 和 matplotlib 作为我们在 Python 中进行探索性数据分析的主要工具。幸运的是,那些日子已经一去不复返了。

您将会明白我所说的“早就过去了”是什么意思,JupyterLab 扩展是本文的主题。

如果你错过了其他关于米托的文章:

认识米托

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

加载了米托的虹膜数据集(图片由作者制作)

米托是一个免费的 JupyterLab 扩展,可以轻松地使用 Excel 来探索和转换数据集。

米托是我们等待多年的熊猫延伸

当你启动米托时,它显示一个熊猫数据框架的电子表格视图。只需几次点击,您就可以执行任何 CRUD 操作。

CRUD 代表创建、读取、更新、删除

如何开始米托?

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

劳拉·加里利奥在 Unsplash 上拍摄的照片

使用米托加载数据并显示电子表格视图非常简单:

import mitosheet
import pandas as pdurl = '[https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv'](https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
iris = pd.read_csv(url)mitosheet.sheet(iris)

米托打开了一个功能强大的电子表格查看器,可以对数据进行过滤、排序和编辑。

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

按花瓣宽度排序(图片由作者制作)

而且它不仅仅停留在基本的编辑功能上…

数据透视表

只需点击几下,米托就可以创建一个数据透视表。它支持许多常见的聚合,如总和、中值、平均值、计数、唯一等。

带米托的旋转虹膜表( Gif 作者制作)

什么是数据透视表?(来自维基百科)

数据透视表是一个由分组值组成的表,它将一个更大的表中的各个项目聚合在一个或多个离散的类别中。

米托最令人印象深刻的特征是什么?

如果旋转表没有给你留下足够的印象,让你尝试一下米托,我很有信心下面的功能会。

电子表格公式

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

用米托计算公式(图片由作者提供)

动态公式是 Excel 的杀手锏。对于那些不熟悉编程的人来说,Excel 可以轻松地创建复杂的电子表格。

如果我告诉你**米托以一种“Excel 方式”**支持动态公式会怎么样?这个特性真的让我很惊讶,因为米托背后的团队花了很多开发时间来实现它。

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

公式引用显示支持的公式(图片由作者制作)

看看下面的 GIF,看看米托的求和公式:

用米托计算虹膜数据集上的求和公式( GIF 作者制作)

可视化数据

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

活动创作者Unsplash 上拍摄的照片

我们,数据科学家,欣赏简化数据可视化的工具。

起初,pandas 从使用准系统 matplotlib(一个用于数据可视化的强大 python 包)实现了巨大的飞跃。

然后是 seabornplottly,它们可以用 Python 制作出令人惊叹的可视化效果,只需几个命令……这又是一次巨大的飞跃。

…然后是米托,它可以不用写一行代码就能把你的数据可视化。

米托支持条形图、箱线图、直方图和散点图。

在下面的 GIF 中,我做了一个柱状图,x 轴是萼片宽度,y 轴是物种。

用米托可视化数据( GIF 作者制作)

自动代码生成

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

Joshua Aragon 在 Unsplash 拍摄的照片

米托将你的每个操作转换成熊猫代码,然后你可以和你的同事分享。

此功能的主要目的是在另一个数据集上重复分析。这就像一个熊猫的宏。

对于经验不足的数据科学家来说,这也是一个很好的功能,因为他们可以学习“熊猫方式”进行数据分析。

我点击了一下,米托产生了下面的代码片段:

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

米托动态自动生成代码(图片由作者制作)

如何安装米托?

米托需要 Python 3.6 或更高版本。

首先,你需要下载米托的安装程序:

python -m pip install mitoinstaller

然后要安装它,只需运行:

python -m mitoinstaller install

如果你有一些安装错误,看看米托的常见安装问题。

结论

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

大卫·穆林斯Unsplash 上拍摄的照片

JupyterLab 的扩展生态系统已经走了这么远,这让我感到惊讶。最初的扩展笨重,容易出错,难以安装。

时代变了,JupyterLab 的扩展也日趋成熟。米托是这种趋势的一个很好的例子。

我带米托去试驾,几个小时后,我没有看到性能下降(或一些奇怪的错误)。

我将把米托加入我的数据科学工具箱。我计划用它进行初步的探索性数据分析——感受数据。一遍又一遍地输入同一套命令变得单调乏味。

如果你想了解更多关于米托的知识,它有写得很好的文档(和许多教程),这对于这样的扩展来说总是一个好兆头。

在你走之前

如果你喜欢看这些故事,为什么不成为 中等付费会员 *?每月 5 美元,你可以无限制地阅读 10000 个故事和作家。*如果你用我的链接注册,我会赚一小笔佣金。

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

照片由普里西拉·杜·普里兹Unsplash 上拍摄

使用 Python 进行 ANOVA、T-test 和其他统计测试

原文:https://towardsdatascience.com/anova-t-test-and-other-statistical-tests-with-python-e7a36a2fdc0c?source=collection_archive---------5-----------------------

主要分析https://en.wikipedia.org/wiki/Statistical_hypothesis_testing(ANOVA、T 检验、MANOVA 等)。)及其特点,在 Python 中应用。

gyphy.com上疯狂的前 GIF

你的老板有没有让你做一些统计测试,而你不知道从哪里开始?😱

你是不是已经疯了,认为你必须阅读大量的统计书籍,而这些书籍你到目前为止一直能够避免阅读?

这是一个快速指南,将帮助您了解基础知识,选择适合您的测试,以及如何用 Python 实现它们,并提供示例和库。😎

什么是统计测试

统计测试用于假设检验。一般来说,它们可以用于:

  • 确定输入变量是否与输出(目标)变量有显著的统计关系。
  • 估计两组或多组之间的差异。

统计检验的工作原理很简单:他们假设一种特定的情况发生,然后估计这种假设错误的可能性有多大。

统计测试假设一个零假设。零假设对应于所考虑的组(集)之间没有关系或差异的假设。然后,他们确定观察到的数据是在零假设预测值的范围之外还是之内。

还有多重统计测试**,根据要面对的问题和可用数据的特点而有所不同。现在我们将详细介绍它们,然后在 Python 中应用其中一些。**

统计测试的工作原理

统计测试的输出值被定义(具有巨大的想象力😆)一个 测试统计量 —一个描述测试中输入和输出变量之间的关系与原假设有多大差异的数字。

但这不是我们感兴趣的结果。

让我们明白零假设是否成立的是p-值 (概率值)。p-值估计如果零假设为真,您将看到测试统计报告的差异的可能性有多大。

要说 p 值是否显著,我们需要一个称为显著性水平的显著性阈值。这个阈值通常设置为 0.05,但我们不会进入这种无聊的数学家讨论。😉

如果 p 值低于阈值(意味着小于),那么您可以推断出输入和目标变量之间的统计显著关系**。**

否则,那么你就可以推断出预测值和结果变量之间没有统计上的显著关系**。**

让我们举一个简单的例子。我在两组之间进行 T 检验。如果 T 检验的相应 p 值为 0.03,则意味着有统计学意义的关系。只有 3%的概率零假设是正确的(并且结果是随机的)。因此,我们拒绝零假设,接受替代假设。

决定哪种测试适合我们

我们已经说过,统计检验有很多,每一种都只能应用于特定的场景。要确定使用哪种统计检验,您需要知道:

  • 您正在处理的变量类型(分类变量、数量变量等。)

您的数据是否满足某些 假设 (观测值的独立性、方差的同质性、数据的正态性)

统计测试分为两大类:

前者是最“强大”的,因此是推荐使用的,但它们必须尊重上述假设。让我们来详细看看它们:

  1. 观察值的独立性:单个观察值(变量的每个条目)相互独立(例如,对单个患者重复相同的测试会产生非独立的测量值,即重复测量值)。
  2. 数据的正态性:数据服从正态分布。只有定量数据才需要这种假设。(更多详情,另见此处)
  3. 方差的同质性:在所有的组中,被比较的每个组中的方差(即,分数围绕平均值的分布或“分布”)是相似的。如果一组的差异比其他组大得多,这将降低测试识别差异的“能力”。

如果您的数据不满足观测值独立性的假设,您可以使用考虑这种情况的测试(即重复测量测试)。

相反,如果您的数据不满足正态性或方差齐性假设,您可以执行 非参数统计测试 ,这样您就可以在没有这两个假设的情况下进行比较。

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

指导选择正确统计检验的流程图。【作者图片】

现在我们知道了在各种测试中进行选择的标准,您可以使用下面的流程图来选择适合您的测试。现在无聊的部分结束了**,我们可以看一些代码了。😝**

此外,还有其他的统计测试来代替那些被提议的测试,它们也有同样的功能。为了避免文章太长,它们被省略了。

用于统计测试的 Python 库

收集主要统计测试的最著名和受支持的 python 库有:

  • stats model:一个 Python 模块,为许多不同的统计模型的估计,以及进行统计测试和统计数据探索提供了类和函数。
  • Pingouin:一个用 Python 3 编写的开源统计包,主要基于 Pandas 和 NumPy。
  • Scipy:基于 Python 的数学、科学和工程开源软件生态系统。

测试假设

至于独立性假设,这个必须是你先验知道的,没有办法从数据外推。对于另外两个假设;我们可以用 Scipy (数据可以在这里下载);

from scipy import stats
import pandas as pd# import the data
df= pd.read_csv("Iris_Data.csv")
setosa = df[(df['species'] == 'Iris-setosa')]
versicolor = df[(df['species'] == 'Iris-versicolor')]# homogeneity
stats.levene(setosa['sepal_width'], versicolor['sepal_width'])# Shapiro-Wilk test for normality
stats.shapiro(setosa['sepal_width'])
stats.shapiro(versicolor['sepal_width'])

*****输出:*leven result(statistic = 0.66,pvalue=0.417)

检验不显著(巨大的 p 值),意味着方差是同质的,我们可以继续。

输出: (0.968,0.204)(0.974,0.337)

两个正态性检验都不显著,所以两个变量都没有违反假设。两次测试都很成功。至于独立性,我们可以假设它先验地知道数据。我们可以按计划进行。

T 型测试

为了进行独立 t 检验,我们可以使用 stats.ttest_ind() 方法:

stats.ttest_ind(setosa['sepal_width'], versicolor['sepal_width'])

*****输出:*Ttest _ ind result(statistic = 9.282,pvalue=4.362e-15)

独立 t 检验结果显著(p 值非常非常小)!因此,我们可以拒绝零假设来支持替代假设。

如果您想使用非参数版本,只需将 stats.ttest_ind 替换为 stats.wilcoxon.

方差分析

**为了应用 ANOVA,我们依赖 **Pingouin。我们使用库中包含的数据集:

import pingouin as pg# Read an example dataset
df = pg.read_dataset('mixed_anova')

# Run the ANOVA
aov = pg.anova(data=df, dv='Scores', between='Group', detailed=True)
print(aov)

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

ANOVA 的结果[来自 Pingouin ]

如我们所见,我们的 p 值低于阈值,因此各组之间存在显著差异!不幸的是,有两个以上的群体,我们无法知道他们中的哪一个是不同的。为了找出答案,你需要成对地应用 T 检验。这可以通过方法 pingouin.pairwise_ttests 来完成。

如果不能确保独立性,使用重复测量 ANOVA** 😗*

pg.rm_anova(data=df, dv='Scores', within='Time', subject='Subject', detailed=True)

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

重复测量 ANOVA 的结果[来自 Pingouin

马诺娃

在这个例子中,我们回到使用初始数据集。我们将使用宽度和长度列作为因变量。此外,物种列被用作自变量。

MANOVA 目前仅由 Statsmodel 库实现。这个库的主要特性之一是它使用 R-style 公式向模型传递参数。

from statsmodels.multivariate.manova import MANOVAmaov = MANOVA.from_formula('Sepal_Length + Sepal_Width + \
                            Petal_Length + Petal_Width  ~ Species', data=df)print(maov.mv_test())

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

结果来自马诺娃[图片由作者提供]

这种情况下要考虑的 p 值是相对于输出变量(物种)的 Wilks’ lambda 值。正如我们所看到的,即使在这种情况下,它也是重要的。

我们可以认为这个简短的统计测试指南已经完成了。我希望它有助于澄清概念并避免不必要的麻烦。😄

再见,弗朗西斯科

用 Python 进行 ANOVA 测试

原文:https://towardsdatascience.com/anova-test-with-python-cfbf4013328b?source=collection_archive---------1-----------------------

执行 ANOVA 测试的完全初学者指南(带代码!)

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

照片由乔纳森派Unsplash 上拍摄

在之前的文章中,我已经讨论了如何进行单样本假设检验双样本假设检验。那么,如果我们想比较几个人口平均数呢?在本文中,我将介绍方差分析(ANOVA ),它涉及多个未知μ的比较。

单向方差分析

这是一个测试,其中一个特定的因素有两个以上的群体或利益水平。例如,设μ为毕业生的真实平均年薪
单因素利益=研究对象
假设我们有 6 类研究对象,Factor levels = athematics and Statistics, Economics and Finance, Environmental Sciences, Political Science, Social Sciences and Biology.
因此,在影响毕业生年薪均值方面,有 6 个层次或群体的**single factor**

单向方差分析的基本思想是从每组中抽取独立的随机样本,然后计算每组的样本均值。之后,将组间样本均值的变化与组内的变化进行比较。最后,根据测试统计数据决定各组的平均值是否相等。

平方和

在单向 ANOVA 表中:
可变性的总量来自两个可能的来源,即:
1。各组间的差异**,称为处理 (TR)
2。组内的差,称为误差 (E)**

由于治疗( SSTR )的平方和以及由于误差( SSE )的平方和列在单因素方差分析表中。SSTR 和上证的总和等于平方和的总和( SSTO )。

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

就像 SS 一样,d.f. (SSTO) = d.f. (SSTR) + d.f .(上证)

均方误差(毫秒)

均方差是平方和除以其方差。这些均方差都是方差,将用于所有群体均值相等的假设检验。

单向方差分析假设检验的假设

  • 从人群中随机选择样本数据,并随机分配给每个治疗组。因此,每个观察都是独立于任何其他观察的——随机性和独立性。
  • 常态。假设每个抽样组中的值来自正态分布的总体。我们可以用正态概率图或者 Q-Q 图来检验正态性。
  • 方差齐性。所有的 c 组方差都相等,即σ₁ = σ₂ = σ₃ = … = σ𝒸。根据经验,如果最大样本标准偏差与最小样本标准偏差的比小于 2 ,我们认为满足等标准偏差假设。

单向 ANOVA 检验的简单概述:

两个以上均值的差异检验
H₀: μ₁= μ₂ = μ₃ = … = μ𝒸
H₁:并非所有的μᵢ’s 都相等,其中 i = 1,2,3,…,c.
显著性水平= α

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

最后,单因素方差分析表如下所示:

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

假设一个 students.csv 数据集包含 8239 行,每行代表一个特定的学生,还有 16 列( stud.id、姓名、性别、年龄、身高、体重、宗教、nc.score、学期、专业、辅修、score1、score2、online.tutorial、已毕业、薪水),每一列对应于与该特定学生相关的一个特性。在 5%的显著性水平上,不同研究主题的毕业生的平均年薪有显著差异吗?有 6 个不同的研究主题。

数据探索和准备

从给定的数据集中,我们首先需要筛选出已毕业的学生,并进行随机抽样。在我们的例子中,我们将使用 Python 中的函数random.sample从数据集中随机抽取 500 名学生。之后,我们将我们的数据集归入两个感兴趣的变量,分类变量major和数值变量salary

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

正态假设检验

在我们进行假设检验之前,我们检查是否满足单向 ANOVA 假设检验的假设。样本是随机和独立的样本。现在,我们通过绘制每个分组变量的正态概率图( Q-Q 图)来检验正态假设。

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

图 1:每个分组变量的 Q-Q 图

如果是正态分布,Q-Q 图显示的是一个很大程度上的直线模式。从上图中,我们可以假设每组的数据大致落在一条直线上。

方差假设的同质性检查

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

最大与最小样本标准偏差之比为 1.67。这小于阈值 2。因此,我们得出结论,这些假设已经实现。

假设检验

按照假设检验的五步流程:
H₀: μ₁= μ₂ = μ₃ = … = μ₆
H₁:根据 f 检验统计,并非所有的薪酬均值都相等
α = 0.05
:

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

结论:我们有足够的证据表明,在 5%的显著性水平上,不同学科的毕业生的平均工资并不相同。

推荐阅读

https://levelup.gitconnected.com/how-to-perform-one-sample-hypothesis-tests-with-python-308eae8789fc https://levelup.gitconnected.com/two-sample-hypothesis-tests-with-python-43e1b8c52306

参考

[1]“单因素方差分析 SOGA 地球科学系。”【在线】。可用:https://www . geo . fu-Berlin . de/en/v/soga/Basics-of-statistics/ANOVA/One-way-ANOVA/index . html

[2]“单因素方差分析假设检验 SOGA 地球科学系。”【在线】。可用:https://www . geo . fu-Berlin . de/en/v/soga/Basics-of-statistics/ANOVA/One-way-ANOVA-Hypothesis-Test/index . html

方差分析和 Bonferroni 校正

原文:https://towardsdatascience.com/anova-vs-bonferroni-correction-c8573936a64e?source=collection_archive---------4-----------------------

防范 1 类错误

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

来源:照片由 mohamed_hassan 拍摄,来自 Pixabay

进行假设检验会带来获得 1 型或 2 型错误的风险。

  • 第一类错误:拒绝一个真正的零假设
  • 第二类错误:接受错误的零假设

当分析不同的组时,单向 ANOVA 可以告诉我们这些组之间是否存在统计上的显著差异。

然而,它不能告诉我们哪个群体不同于另一个群体。此外,当一次执行多个假设检验时,获得类型 1 错误的概率增加。

在统计学中,这被称为家族错误率,它衡量在任何特定假设检验中出现第一类错误的概率。

其计算方法如下:

1 — (1-α)^n

其中:

α =给定假设检验的显著性水平

n =测试总数

例如,如果我们使用 0.05 的显著性水平,并进行三次假设检验,则出现 1 类错误的概率增加到 14.26%,即1-(1–0.05)= 0.1426

为了防止这种 1 型错误(并且同时在每组之间进行成对 t 检验),使用 Bonferroni 校正,从而调整显著性水平以降低犯 1 型错误的概率。然而,这个测试的一个缺点是,犯第二类错误的概率也会增加。

酒店收入:分析分销渠道的平均每日价格

对于这个例子,让我们考虑一个酒店,该酒店已经收集了关于其每个顾客的平均每日价格的数据,即,顾客在该酒店住宿每天支付的平均价格。

酒店也有关于每个顾客的分销渠道的信息,即公司直接TA/TO 。分析的目的是确定这三组中每一组的 ADR 均值之间的差异。原始数据来源于 Antonio、Almeida 和 Nunes (2019 年),如下所述,从每个分销渠道随机选择 100 个样本。

单向方差分析

让我们从在 r 中进行单向方差分析开始。

> model <- aov(ADR ~ DistributionChannel, data = data)
> summary(model)
                     Df  Sum Sq Mean Sq F value   Pr(>F)    
DistributionChannel   2  236636  118318   33.33 8.76e-14 ***
Residuals           297 1054469    3550                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

分析结果时,我们可以看到 p 值非常显著,几乎为零。这意味着我们拒绝每组之间不存在显著差异的无效假设。

然而,我们可以看到 ANOVA 测试仅仅表明三个分销渠道之间存在差异,它并没有告诉我们任何关于这种差异的本质。

在进行成对 p 检验之前,这里有一个箱线图,说明三组之间的差异:

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

来源:RStudio 输出

从外观上看,我们可以看到直接和 TA/TO 分销渠道的平均 ADR 高于公司渠道,ADR 的离差也明显更大。

带 Bonferroni 校正的成对 t 检验

然而,我们希望使用带有 Bonferroni 校正的成对 t 检验对此进行更详细的分析。

> pairwise.t.test(data$ADR, data$DistributionChannel, p.adjust.method="bonferroni")Pairwise comparisons using t tests with pooled SDdata:  data$ADR and data$DistributionChannel Corporate Direct
Direct 4.6e-11   -     
TA/TO  2.4e-11   1P value adjustment method: bonferroni

当查看调整后的 p 值时,我们可以看到公司与直接、公司与 TA/TO 之间的差异非常显著,因为 p 值接近于零。鉴于 Bonferroni 校正已被用于预防 1 型错误,我们可以更有信心拒绝组间无显著差异的零假设。

也就是说,我们可以看到在直接组和 TA/TO 组之间存在 p 值 1,这意味着我们不能拒绝这两个组之间没有显著差异的零假设。

结论

这是对成对 t 检验的简短介绍,特别是使用 Bonferroni 校正来防止 1 型错误。您已经看到:

  • 使用单向方差分析的局限性
  • 如何计算家庭误差率
  • 如何使用 Bonferroni 校正进行成对 t 检验并解释结果

非常感谢您的宝贵时间,非常感谢您的任何问题或反馈。

参考

免责声明:本文是在“原样”的基础上编写的,没有任何担保。它旨在提供数据科学概念的概述,不应被解释为专业建议。本文中的发现和解释是作者的发现和解释,不被本文中提到的任何第三方认可或隶属于任何第三方。作者与本文提及的任何第三方无任何关系。

回答关于人工智能的 10 个最常见的问题

原文:https://towardsdatascience.com/answering-10-most-commonly-asked-questions-about-artificial-intelligence-f847e63b5837?source=collection_archive---------2-----------------------

提供人工智能问题的解决方案,澄清误解,并讨论关于人工智能的各种概念

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

附身摄影Unsplash 上拍照

人工智能是我们这个世纪的主要话题之一。人工智能的能力和无限潜力引发了一些有趣的对话和辩论。

人工智能的普及为人工智能带来了许多新的视角。从对学习人工智能越来越有热情的爱好者,到期待探索该领域的野心家,或者只是想批评它的其他人。但是,不管你躺在哪个光谱上,都有几个问题贯穿你的头脑。

在本文中,我们期待回答一些关于人工智能的最常见问题。目的是回答这两个方面,包括所有的实际问题,并澄清个人对这个问题的任何疑问。让我们简单看一下今天这篇文章中我们将试图解决的各种问题。

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

  1. 什么是人工智能?
  2. AI 到底有多厉害?
  3. AI 会抢你们的饭碗吗?
  4. AI 能接管世界吗?
  5. AI 有哪些优点?
  6. 人工智能有哪些弊端?
  7. 我们离实现 AGI 还有多远?
  8. AI 有哪些应用?
  9. 开始学习 AI 需要成为天才吗?
  10. 如何入门 AI?

你可以随意跳到你最想得到答案的问题。但是,如果您不想错过任何特定的要点,强烈建议您阅读整篇文章。现在,让我们期待回答关于 AI 最常被问到的十个问题。

1.什么是人工智能?

人工智能是指开发的软件或特定模型可以独立执行复杂的任务,而不需要人类的任何帮助。人工智能更正式的定义可以表述如下:

“能够执行通常需要人类智能的任务的计算机系统的理论和开发,例如视觉感知、语音识别、决策和语言间的翻译。”

人工智能是一个庞大的研究领域,由各种子领域组成,包括机器学习、深度学习、神经网络、计算机视觉、自然语言处理等等。

人工智能被认为是未来的技术,可以解决各种领域的众多问题,从机器人,医学科学,物流和运输,金融,以及工业中更多的公用事业服务。

我强烈推荐从下面提供的链接中查看下面这篇关于揭开人工智能神秘面纱的文章,以评估对该领域更高级的理解。

2.AI 到底有多厉害?

为了回答这个问题,让我们简单地看一下人工智能的复杂历史,尤其是神经网络领域。人工智能的概念和它无限的能力在几十年前就有了。人工智能被认为是为现存问题提供解决方案的下一件大事。

随着时间的推移,人们意识到人工智能并不像想象的那么简单。执行复杂的活动几乎是不可能的,特别是在那个时期的现有技术下。

最初,人工智能并不像人们认为的那样成功,因为缺乏数据和技术资源来承受执行复杂排列和组合的能力。

然而,在我们当前的时代,我们已经得出结论,人工智能是创造一个革命性世界的潜在未来。人工智能甚至可以解决某些复杂的任务,相对而言,这些任务可能会花费人类更多的时间。

问题的简单答案—“AI 到底有多厉害?” 在现代依赖于从事程序计算的研究人员的能力。开发人员的技能有助于使人工智能模型足够好,以尽快解决一个特别复杂的任务。

随着图形处理单元(GPU)的兴起,你可以帮助更快地计算人工智能模型,并开发创新的东西。就目前而言,人工智能非常强大,可以高效、有效地解决分配给它的一系列任务。然而,它还没有达到顶峰,我们离那个点还有几年的时间。

3.AI 会抢你们的饭碗吗?

人工智能是当今发展最快的领域。据财富报道,统计数据显示,在过去的 4 年里,人工智能专家的雇佣量增长了 74%。人工智能被认为是当代人最热门的工作。

对熟练人工智能专家的需求正以前所未有的速度增长。对机器学习、深度学习、计算机视觉、统计学和自然语言处理等人工智能子领域专家的需求和空缺职位每天都在激增。

自然产生的问题是,人工智能最终会强大到有能力偷走我们所有的工作吗?

这种说 AI 未来会抢你饭碗的说法,在我看来几乎可以认为是神话。这是一个假设的场景,人工智能将取代所有人类活动,并接管现代世界的大部分任务,因为它们不容易出现人为错误,并且更有效地执行特定任务。

在工业革命时期,当机器被引进的时候,类似的事情被陈述。显然,它没有偷走工作机会。相反,它为人类控制它们的更多工作铺平了道路。人类是智慧生物。因此,人工智能将简化人类工作的复杂性,但实际上不会夺走你的工作!

4.AI 能接管世界吗?

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

菲利普·卡岑伯格在 Unsplash 上拍摄的照片

科幻(Sci-fi)电影改变了一些人对人工智能的认知。他们想象用人工智能编程的机器人将变得如此强大,以至于它们最终将摧毁它们的创造者,并摧毁整个世界,从而导致一种新的人工智能控制的物种的发展。

一个耐人寻味的故事情节,但不真实,因为它将在不久的将来真实地发生!

不可否认,人工智能已经走过了漫长的道路,并发展成为现代世界的一个独特特征。尽管人工智能取得了进步,但在工作或开发阶段,大多数任务仍然是在某种人工监督下完成的。

人工智能也仅限于被编程来完成的特定任务。一个有趣的例子是自动驾驶汽车,人工智能控制汽车,并将其驾驶到用户选择的预期目的地。然而,人工智能只限于精确地驾驶汽车,没有其他外部任务。

因此,对于科幻电影中展示的人工智能接管世界来说,我们至少还需要几十年才能实现这样的结果。但是,只是为了保持对这种猜测的好奇心,它可能最终在未来成为可能!虽然目前,这只是虚构的。

5.AI 有哪些优点?

由于人工智能在现代被大肆宣传,它有许多优点。

除了之前讨论过的人工智能创造的大量工作机会,它还有其他优点,例如完成人类需要执行的循环或重复任务,而没有人类容易出错的缺点。

人工智能,类似于计算机程序,不会疲劳,因此有能力整天工作在一个特定的任务上,直到达到预期的结果。

它们有能力在一系列问题上进行比人类速度更快的计算,并得到精确的结果。他们也有大量的现实生活中的应用程序,使我们的日常生活更加简单。人工智能的优点是不言自明和无限的。

6.人工智能有哪些弊端?

从零开始构建人工智能模型有时会非常耗时,而且会耗费大量资源。如果你正在寻求在没有 GPU 的普通计算机上开发深度学习模型,你的替代方案将是切换到云平台,因为模型的构建过程在你的 PC 上是不可持续的。

除了消耗大量的时间和资源,人工智能模型的部署在某些情况下也可能相当昂贵。此外,在特殊情况下,人工智能模型出现故障时的维护成本可能很难处理和解决。

人工智能要考虑的另一个显著缺点是缺乏使用人工一般智能来完成更高级和智能的任务。我们受限于人工狭义智能。ANI 对于执行许多任务是有益的和必要的,但是它不像 AGI 那样有效。这一点引导我们进入下一个问题。

7.我们离实现 AGI 还有多远?

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

安德鲁·乔治在 Unsplash 上的照片

人工通用智能是一个耐人寻味的概念。AGI 是指人工智能程序可以计算、评估和处理多项任务,并具有人类水平的完整性和智能。

尽管不断的研究工作和技术进步,人工通用智能领域尚未取得丰硕成果。关于这个概念的实验和研究正在不断地被评估,希望在不久的将来会有更好的结果。

根据专家的说法,人工智能尚未成为可能和实现的主要原因是因为复制人脑几乎是不可能的。

虽然神经网络在执行分配给它们的特定复杂任务方面表现出色,但不幸的是,它们不能代替人脑。

8.AI 有哪些应用?

自然界中的人工智能有着广泛的应用。这些包括你从一天开始到一天结束的旅程。当你通常用智能手机开始一天的工作时,你可以利用智能面锁的人工智能功能或其他指纹人工智能措施来解锁你的手机。

然后你决定用谷歌搜索一些东西,你会看到自动完成和自动更正的人工智能特性,它利用了序列到序列建模的技术。除了智能手机,人工智能还有大量其他应用,包括垃圾邮件检测、聊天机器人、对象字符识别等等。

人工智能还在许多其他领域得到应用,例如机器人、医学、物流和运输、金融以及工业中更多的公用事业服务。

要查看数据科学和人工智能的十个令人敬畏的现实世界应用,我强烈建议通过以下链接查看我以前的一篇文章。

</10-awesome-real-world-applications-of-data-science-and-ai-6fddf3f34d74>

9.开始学习 AI 需要成为天才吗?

这个问题有一个简单的答案— “不,你没有!”

人工智能是一个神话般的领域,包含许多壮观的子领域。如果你对以下主题提供的各种有趣的概念特别感兴趣,投资你的宝贵时间来获得人工智能主题的进一步知识是完全值得的。

虽然从头开始学习人工智能有时在开始时可能很难,但随着你投入更多时间学习大量与人工智能相关的概念,它会变得更加有趣和酷。你将接触到数学、编程、机器学习等等,这将扩大你的知识面。

即使你发现人工智能领域不适合你的特殊兴趣,只要你对人工智能的众多主题有所了解,那也完全没问题。

接触人工智能的最大好处在于,你从以下主题中获得的知识可以部分或全部用于各种软件应用和工作。

10.如何入门 AI?

好吧!所以到这一点,你有希望对人工智能的各种功能着迷,并且你很兴奋地寻找一个开始使用人工智能的好地方。

人工智能是一个广阔的领域。但是,不用担心!有大量有价值的资源和生产资料,你可以利用它们来产生最好的结果。你可以通过分析和研究互联网上的资料获得广阔的知识领域。

Stack overflow、Data stack exchange 和 GitHub 等网站是一些最受欢迎的网站,它们可以提供您在运行或安装程序或相应代码块时遇到的问题或错误的深入解决方案和答案。

我建议查看本文结论部分提供的第一个链接,以了解更多关于“了解更多数据科学和机器学习的 10 个最佳免费网站”的信息这应该是一个很好的起点,可以用来分析各种观点,同时从资源中获得大量知识。

我还强烈推荐阅读我的一篇文章,这篇 23 分钟的文章介绍了如何在 12 个月内掌握数据科学,包括 12 个基本步骤,每个月一个步骤。您可以通过下面提供的链接访问这篇文章。

</12-steps-for-beginner-to-pro-in-data-science-in-12-months-c6f6ba01f96e>

结论:

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

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

在这篇文章中,我们涵盖了大多数关于人工智能的常见问题,同时试图为众多人工智能主题提供可持续的信息和解决方案。我们还旨在澄清误解和讨论各种关于人工智能的概念。

读完这篇文章后,我希望所有的观众对人工智能和众多关于人工智能的话题有一个清晰的了解。获得对人工智能的现实感知,对于理解未来世界革命性的变化具有重要意义。

因此,了解复杂的细节并对人工智能的主题有所了解以避免错误的观念和其他误解是至关重要的。此外,理解人工智能并致力于在人工智能领域获得未来是一种令人欣慰的经历。这是一个崭新的领域,前面有许多新的机会和发现。

如果你对这篇文章中提到的各点有任何疑问,请在下面的评论中告诉我。我会尽快给你回复。

看看我的其他一些文章,你可能会喜欢读!

</10-best-free-websites-to-learn-more-about-data-science-and-machine-learning-f2c6d7387b8d> </11-crucial-mistakes-to-avoid-as-a-data-scientist-71c29aef028> </8-revolutionary-artificial-intelligence-technologies-of-the-modern-era-f8f22a4127d0>

谢谢你们坚持到最后。我希望你们喜欢阅读这篇文章。我希望你们都有美好的一天!

回答人工智能中的因果问题

原文:https://towardsdatascience.com/answering-causal-questions-in-ai-87c9b53e3a72?source=collection_archive---------26-----------------------

介绍一些最常用的技术,这些技术可用于从数据中查询信息以进行可解释的推断。

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

里卡多·佩拉蒂在 Unsplash 上拍摄的照片

介绍

试图发现因果关系的两种主要技术是图形方法(如知识图和贝叶斯信念网络)和可解释的人工智能。这两种方法实际上构成了因果关系层次中关联层次的基础(图 1),使我们能够回答这样的问题:什么不同的属性组成了一个实体,不同的组成部分是如何相互关联的?

如果你有兴趣了解更多关于因果关系如何在机器学习中使用的信息,更多信息可以在我以前的文章中找到:机器学习中的因果推理

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

图 1:因果关系层级(图片由作者提供)。

知识图表

知识图是一种图形技术,通常用于从大量数据中简明地存储和检索相关信息。知识图目前广泛应用于从搜索引擎、电子商务网站和社交网络查询信息等应用中。在我们之前概述的推荐系统案例研究之后,知识图最近被应用于因果关系(Yikun Xian 等人。艾尔。[1]),以便生成基于因果推理的推荐。

作为一个简单的例子,让我们考虑一下,如果我们使用搜索引擎来找出伦纳德·尼莫伊是谁(在《星际迷航》中扮演斯波克的演员),会发生什么。一旦输入我们的查询,搜索引擎将自动构建一个类似于图 2 所示的知识图,以此作为我们搜索查询的起点,然后从它开始扩展以获取任何相关信息。

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

图 2:简单的知识图。图片转载自[2]。

知识图最有前途的应用之一是创建能够从因果关系中学习的机器学习模型。知识图卷积网络(KGCN),代表了这一领域的第一个成功的应用[3]。事实上,图卷积网络旨在创建知识图的矢量(嵌入式)表示,然后可以输入到机器学习模型中,以生成推理路径并为模型预测提供证据[4]。KGCN 可以潜在地用于监督或非监督任务(例如,多类分类和聚类)。

贝叶斯信念网络

贝叶斯信念网络是一种概率模型,它利用简化的假设来可靠地定义不同元素之间的联系,并有效地计算它们的概率关系。通过分析不同元素之间的相互作用,我们最终可以利用这些类型的模型来发现因果关系。在贝叶斯网络中,节点代表变量,而边报告不同元素之间的概率连接。图 3 给出了一个三变量贝叶斯信任网络的简单例子。

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

图 3:贝叶斯信念网络(图片由作者提供)。

贝叶斯信念网络,能够表达条件依赖和独立变量的联系。这些类型的网络还遵循马尔可夫条件5。最后,使用贝叶斯概率方法(等式 1),我们能够基于新收集的证据迭代地更新连接概率。

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

等式 1:贝叶斯法则(图片由作者提供)。

DeepMind 等公司目前的研究重点是使用贝叶斯信念网络作为起点,以创建因果贝叶斯网络(CBN) [6]。因果贝叶斯网络现在被用于可视地识别和定量地测量数据集中的不公平模式(数据中的元素可以导致偏向特定子类别的机器学习模型)。此外,研究还证明了使用因果贝叶斯网络的可能性,以便不仅识别数据,而且识别机器学习模型本身是否偏向特定类别[7]。

可解释的人工智能

当今机器学习的主要权衡之一是模型性能与复杂性。事实上,与传统的线性分类器和回归技术相比,复杂的深度学习架构通常能够在各种各样的任务中表现得更好。这种权衡在 2016 年的出版物《我为什么要相信你》中有深入的分析。作者 Ribiero 等人。艾尔。[8]并引领了人工智能关注可解释性的新趋势。

复杂且更精确的模型如今被称为黑盒。这些类型的模型工作过程更难理解,它们不能估计每个特征的重要性以及它们之间的关系。黑盒模型的一些例子是神经网络和集成模型。

另一方面,更简单、更不精确的模型,如决策树和线性回归,反而被视为白盒,更容易解释。可以用来估计模型可解释性的两个主要指标是其响应函数的线性和单调性[9]。

模型代理人

为了使模型更容易解释,一种可能的方法是创建替代版本(近似版本)。这可以在本地或全球范围内进行。

  • 全局代理模型:在这种情况下,我们创建原始非线性模型的线性和单调近似,它对任何可能的输入都有效。如果原始模型是高度非线性的,那么创建一个全局代理可能会导致糟糕的性能。
  • 本地代理模型:通常在试图逼近高度非线性模型时实现。事实上,使用这种方法,我们可以将原始特征空间分成不同的线性子部分。对于这些部分中的每一个,然后可以创建线性模型等效近似(例如,使用决策树和线性模型)。局部代理模型通常也被称为局部可解释模型不可知模型(LIME)。

使用输入要素和原始模型预测(而不是地面实况标签)来训练代理模型。

在图 4 中,提供了一个简单的示例,显示了在使用标准黑盒模型或模型替代技术时,回归任务的拟合曲线可能的样子。

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

图 4:模型代理示例(图片由作者提供)。

为了使模型更易于解释,可以使用的一些替代方法有:特征重要性、沙普利附加解释(SHAP)、部分相关图(PDP)和基于梯度/注意力的方法。

人工智能中的偏差

创建可解释的和基于因果关系的机器学习模型的另一个重要原因是识别和防止任何可能形式的偏见(例如,对任何特定阶层的不公平歧视)。事实上,偏差可能来自训练数据集本身(例如,我们有限的数据量可能无法正确表示真实的人口分布)或模型构成(例如,我们的模型可能不合理地偏好一个类而不是其他类)。可能的偏差类型有:交互偏差、潜在偏差和选择偏差。

联系人

如果你想了解我最新的文章和项目,请通过媒体关注我,并订阅我的邮件列表。以下是我的一些联系人详细信息:

文献学

[1]强化知识图推理的可解释推荐,Yikun Xian 等。艾尔。访问日期:https://arxiv.org/pdf/1906.05237.pdf2020 年 7 月。

[2]知识图的关系机器学习综述。马克西米利安·尼克尔、凯文·墨菲、沃尔克·特雷普、叶夫根尼·加布利洛维奇。访问日期:https://arxiv.org/pdf/1503.00759.pdf2020 年 7 月。

[3] KGCNs:用 TensorFlow 对知识图进行机器学习。詹姆斯·弗莱彻,格拉克实验室的。已访问:https://blog . grakn . ai/kg cns-machine-learning-over-knowledge-graphs-with-tensor flow-a1d 3328 b 8 f 022020 年 7 月。

[4]知识图和因果关系。Gianmario Spacagna,实用数据科学学院。已访问:https://datasciencevademecum . com/2019/12/19/knowledge-graphs-and-causality/2020 年 7 月。

[5]因果推理导论。彼得·斯皮尔特斯,卡内基梅隆大学哲学系。已访问:http://www . jmlr . org/papers/volume 11/spirtes 10a/spirtes 10a . pdf2020 年 7 月。

[6]因果贝叶斯网络:一种支持更公平机器学习的灵活工具。西尔维亚·基亚帕和威廉·艾萨克。访问日期:https://deepmind.com/blog/article/Causal_Bayesian_Networks2020 年 7 月。

[7]路径特定的反事实公平。西尔维亚·基亚帕和托马斯·p·s·吉拉姆。访问日期:https://arxiv.org/pdf/1802.08139.pdf2020 年 7 月。

[8]“我为什么要相信你?”解释任何分类器的预测。马尔科·图利奥·里贝罗,华盛顿大学。艾尔。访问:【https://arxiv.org/pdf/1602.04938.pdf】T22020 年 7 月。

[9]黑盒与白盒模型。Lars Hulstaert,走向数据科学。已访问:https://towards data science . com/machine-learning-interprebility-techniques-662 c 723454 F32020 年 7 月。

回答数据科学指标变化面试问题—终极指南

原文:https://towardsdatascience.com/answering-the-data-science-metric-change-interview-question-the-ultimate-guide-5e18d62d0dc6?source=collection_archive---------11-----------------------

办公时间

数据科学访谈系列闯入 FAANG

目录

  1. 动机
  2. 思考这个问题的简单方法
  3. 那么你实际上如何回答这个问题
  4. 这是什么意思?
    一、提问澄清问题
    二、提问。举几个高层假设
    III。深入挖掘诊断问题—热带地区 ⅳ。提出解决方案
    五、总结
  5. 应用框架
  6. 介绍数据科学面试准备系列

动机

最常见的数据科学(和产品管理)面试问题之一是诊断指标变化的原因。

让我们暂时离开面试环境,想想为什么要问这个问题。指标在任何组织中都至关重要。他们告诉你:

  • 你是否在推进你的使命
  • 如何决定是否推出新产品或新功能
  • 如何优先关注什么

实际上,您所做的每个决定都是由其对指标的影响决定的。

因此,如果指标发生变化(无论是正的还是负的),你自然会想知道为什么

思考这个问题的更简单的方法

你拥有一家书店,每天都有大约九到十个人来买一本书。

一个周六的早晨,你醒来,骑车去书店,把招牌从“关门”换成“开门”,在等待第一个顾客的时候开始整理书架。

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

Artem BeliaikinUnsplash 上的照片

一个小时过去了,然后两个小时,然后五个小时。你开始奇怪为什么没人来。

也许镇上有一家新书店要接管你的生意?也许有一个你忘了的全国性节日?也许镇上正在举行一个大型活动,你的潜在客户会蜂拥而至?你是 假设

你拿出手机,开始搜索:

  • 今天公休?
  • 一家新书店开张了?
  • 在我附近发生的事件?

你正在进行诊断。

果不其然,你发现有一个事件正在发生——有一个新的书展,现在每年都会举办一次。你知道你对此无能为力。很难与全市范围的书展竞争,而且这也是毫无意义的,因为它每年只会举办一次。但是,至少现在你知道为什么今天没有人来,当明年这个时候同样的事情发生时,你就知道是怎么回事了。你有一个 的解决方案。

很直观吧?这不仅是你用来解决度量变化问题的相同框架,而且也是你解决问题时需要的相同心流和好奇心心态:

你关心的事情已经改变了。

你自然想明白发生了什么。

你有一些高层次的猜测。

你测试你的假设,看看是否有正确的。

一旦你确定了变化的来源,你就决定了行动的方向。

那么这个问题怎么回答呢?

一、澄清

二。假设

三世。诊断

四。求解

五、总结

那是什么意思?

一、提出澄清性问题

什么都不要假设——剖析问题的每个字。如果有些事情含糊不清,问后续。

活跃用户数下降 15%。

  • 主动 是什么意思?登录的人?点击特定按钮的人?
  • 时间线是什么?是过去一天下跌 15%吗?月份?一周?

上周点击率增加了 10%。

  • 点击率是一个比率,即每次展示的点击数。所以**分解分子和分母。**分子(即点击量)增加了吗?或者说,分母有没有减少(即印象数)?

二。给出几个高层次的假设

在你开始探索可能的原因之前。花点时间假设几个嫌疑人——这会让你和面试官有所准备。一种方法是把它分解成内部和外部原因。

内部

  • 我们的日志记录中的一个错误——所以实际上什么都没有改变,但是我们的系统报告了错误的数据
  • 我们的用户喜欢(或讨厌)的最近发布的功能更新

外部

  • 用户行为的改变
  • 竞争对手采取的行动

三世。深入挖掘以诊断问题

你的诊断由两部分组成,你想探索什么你计划如何探索。

为了引导您的头脑风暴,您可以利用热带框架,该框架分为:

  1. 时间
  2. 地区
  3. 其他内部产品
  4. 平台
  5. 行业&竞争对手
  6. 自相残杀
  7. 分割

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

萨米·威廉姆斯在 Unsplash 上拍摄的照片

1.时间

随着时间的推移,这一指标是如何变化的?

探索什么

  • 过去几周(或几个月)我们的表现如何?如果我们看到上周有 10%的增长,那么前几周的百分比变化也是 10%吗?在这种情况下,10%可能是很正常的。还是变化更小?更高?
  • 这种变化 是季节性的 吗?每年这个时候我们都会看到同样的峰值吗?WhatsApp 在节日期间发送的消息 中会出现 峰值吗?
  • 变化是突然的还是渐进的?我们是否看到了一夜之间的突然上涨或下跌?或者,随着时间的推移,这一指标已经逐渐朝着这个方向发展了吗?如果产品使用量一夜之间增加了 50%,我们的记录系统会不会有问题?
  • 一天或一周中是否有特定的时间这种变化更明显?

如何探索它

  • 你可以做一个纵向分析——这是一个有趣的说法,你想看看这个指标的历史数据,看看它是如何随时间变化的

2.地区

这一指标在不同地区有何变化?

探索什么

  • 这种变化是集中在一个特定的地区,还是我们看到了一个类似的全面变化?

如何探索它

  • 一个简单的细分分析(在这种情况下,该指标在美国、印度和巴西等地的表现如何)将告诉您需要了解的内容!

3。其他功能/产品

如果我们有多个功能或产品线,它们之间有什么变化吗?

探索什么

  • 这种变化是针对某个产品的,还是整个公司的?这一指标在我们的其他产品中有何变化?如果脸书上的筹款功能被越来越多的人使用,那么脸书旗下的 Instagram 上的“刷起来捐赠”功能也会有类似的增长吗?
  • 除了正在讨论的指标之外,是否还有其他指标也发生了变化?如果花在优步上的时间在减少,司机取消订单的数量是否也在下降(这意味着人们花在应用上的时间减少了,因为他们有了更可靠的体验)?

如何探索它

  • 检查正在跟踪的其他指标,并查看该指标在其他产品和功能中的状态。

4。平台

这一指标在不同的平台(即使用的操作系统)上有何变化?

探索什么

  • 移动 vs 桌面?
  • Mac vs Windows?
  • 安卓 vs iOS?

如何探索它

  • 再次分段!这次是靠平台!

5。行业&竞争对手

我们的竞争对手也看到了同样的变化吗?他们正经历着相反的情况吗?

探索什么

如何探索它

  • 确定指标变化的时间,并查看是否有新的竞争对手在大约同一时间进入该领域(或者现有竞争对手发布了新产品)?

6。自相残杀

如果一种产品的指标在下降,是因为我们提供的另一种产品正在蚕食用户参与度吗?或者,如果有问题的指标在增加,我们是否会从其他产品中分食?

探索什么

  • 面对我们的下滑,我们提供的其他产品或功能是否有所增长,反之亦然?
  • 我们是否发布了一个新功能,将用户从我们的旧功能中吸引过来?如果是这样,我们能否将新特性的发布完全归因于我们正在讨论的特性的度量的下降?当脸书发布 reactions 时,帖子的评论数量下降了,是因为人们发现按 react 按钮比写评论更容易吗?

如何探索它

  • 分析其他产品和功能的关键指标,以确定我们感兴趣的指标的下降是否与另一个产品的指标的上升一致。
  • 新功能的用户同时也是原始功能的用户的比例是多少?
  • 自从问题出现以来,转换的用户中对原始功能的参与度显著下降的用户比例是多少?
  • 新功能使用量的增加是否等于原有功能的下降?

7。分割

指标的变化可能由特定的细分市场驱动。还有什么方法可以分解这个指标?

探索什么

此指标如何因用户类型而异:

  • 年龄、性别、教育程度
  • 超级用户与普通用户
  • 新用户与现有用户

该指标如何随着产品的不同属性而变化:

  • 如果观看 YouTube 视频的时间在下降,是跨较长的视频还是较短的剪辑?是只针对 DIY 视频还是面试教程内容?开始看视频的人数是一样的,但是他们中的大部分人在中途停止观看了吗?

如何探索它

  • 分段!分段!分段!

四。提出潜在的解决方案

1.时间

  • 如果变化是季节性的,那么不一定有什么你需要“解决”的。但是,你可以利用这一点。亚马逊的销售额可能会在黑色星期五激增,所以他们会希望确保他们有适当的基础设施,这样 网站就不会崩溃 。他们也可以看看是否有某些类型的产品是受欢迎的购买,并相应地增加他们的库存。
  • 如果出现突然下降,可能是日志中的错误,或者是最近推出的新功能或更新造成了问题,您可能需要回滚。
  • 如果有逐渐下降,这可能表明用户行为的变化。如果因为人们更喜欢听播客,花在听音乐上的时间正在减少,那么 Spotify 可能希望将更多的内容库存放在播客上。

2.地区

  • 国家/地区可能会有新实施的法规影响您的产品指标。您需要做进一步的研究,以评估这些法规的影响和潜在的变通办法。 优步于 2019 年在伦敦被暂时禁赛 原因是多次安全故障导致一系列诉讼和法庭案件。
  • 当地流行的事件也可能是潜在的解释。虽然这些可能不是需要“解决”的领域,但却是可以利用的机会。科切拉季节意味着南加州 Airbnb 预订量的激增,这得益于飙升的价格。

3。其他产品/功能

  • 如果我们的其他功能和产品出现了度量变化,这可能是一个更大的问题,我们应该与多个团队一起解决,可能需要一个公共关系顾问。 Elon + Twitter。

4。站台

  • 如果我们的指标在特定平台(例如 iOS)上发生了积极的变化,并且与我们发布的(iOS)更新相吻合,我们会希望进行回顾,以确定该更新的哪些方面是有利的,这样我们就可以加倍努力。或者,如果指标变化是负的,我们可能想要重新考虑甚至回滚更新。
  • 如果变化是由于平台体验的变化**(例如,应用商店的位置、评级)**我们可能需要向我们的营销团队寻求建议,因为这是一个漏斗顶端的问题
  • 如果用户对特定平台表现出强烈的偏好,我们希望确保首选平台的体验符合标准。我们还需要确保我们特定平台的盈利战略能够顺应潮流。脸书的广告模式最初只局限于桌面应用,随着移动应用成为首选平台,它不得不进行扩展。

5。行业

  • 如果这一类别正在整体上发生变化,我们应该开始关注应用程序的大规模变化。什么 柯达 该做的都做了。
  • 如果有新的竞争对手抢走了我们的市场份额,我们可以从重新激活用户开始。我们可能还想进行用户研究,以了解我们的产品与竞争对手的产品之间的差距

6。自相残杀

  • 同类相食未必是坏事。我们需要通过确定新功能是否更好地符合业务目标,来确定用户对我们功能的兴趣是否有所改变。
  • 同类相食也可能是用户行为改变的指示,但它是用户行为改变的指示。在这种情况下,我们可能要考虑我们的核心指标是否需要随着用户行为的改变而改变。如果用户更关心观看 Instagram 故事,而不是参与 Instagram feed,我们可能希望优化留存率(因为故事的短暂性更有可能促使用户不断回到平台),而不是花在应用上的时间。
  • 我们还可以考虑将这两种特性结合起来,创建一个更加统一的平台。

7。分割

  • 如果新用户和现有用户之间的指标不同,那么可能存在过度拥挤效应。 Reddit 论坛可能会达到临界质量,新用户会感到失落,比现有用户更不愿意参与,导致每位用户的参与度下降
  • 如果用户在漏斗的某些部分下降,那么这个漏斗阶段的体验可能会被打破。虽然同样数量的人开始在亚马逊上购物车,但如果支付验证系统不起作用,购买量可能会下降。

五、总结

简要重申:

最初的问题陈述,即我们试图确定指标变化的原因

变化的原因

您提议的解决方案

应用框架

在我的下一篇文章中,我将向你展示如何将这个框架应用于一个特定的问题(包括一个模拟面试的视频!)

数据科学面试准备系列介绍

有很多数据科学面试准备指南。事实上,这些指南正是我能够在脸书找到目前工作和之前在 Adobe 工作的原因。然而,它们都没有像我希望的那样深入 T2。

这就是为什么我正在创建我自己的数据科学面试准备系列。随着每篇文章我都围绕机器学习、产品商业意识、统计概率和 SQL 深入面试问题。

我还将分享我旅途中的个人故事,包括我如何进入数据科学,我的工资,我如何管理我的财务以及我最喜欢的学习和灵感资源。

如果您有具体的问题想要回答,或者您正在纠结的话题,请在这里联系我,我会尽快回复您!

回答费米问题:AI 是我们伟大的过滤器吗?

原文:https://towardsdatascience.com/answering-the-fermi-question-is-ai-our-great-filter-56bd7f8fb44d?source=collection_archive---------19-----------------------

播客

安德斯·桑德伯格在 TDS 播客

要选择章节,请访问 Youtube 视频这里

编者按:这一集是我们关于数据科学和机器学习新兴问题的播客系列的一部分由 Jeremie Harris 主持。除了主持播客,Jeremie 还帮助运营一家名为sharpes minds的数据科学导师初创公司。可以听下面的播客:

苹果 | 谷歌 | SPOTIFY | 其他

几十年来,我们的宇宙中似乎没有外星生命,这一直是科学界猜测和争议的一个来源。如果我们假设在一个给定的星球上,智慧生命可能进化的可能性微乎其微,那么几乎不可能想象宇宙中没有外星文明。他们在哪里?

这就是安德斯·桑德伯格所说的“费米问题”:鉴于宇宙深不可测的大小,我们怎么会没有看到外星生命的迹象?安德斯是牛津大学人类未来研究所的研究员,他试图预测当我们接近一个技术无限的未来时,人类将不得不面对的伦理、哲学和实践问题。这项工作在很大程度上专注于超智能人工智能及其可能带来的生存风险。作为这项工作的一部分,他非常详细地研究了费米问题,以及它对生命的稀缺性和人类物种的价值意味着什么。

我们的谈话涉及了很多领域,以下是我最喜欢的一些观点:

  • 费米问题争论的核心是德雷克方程。德雷克方程是一个公式,用于估计我们应该能够在我们的宇宙中观察到的外星文明的数量,以及各种参数,例如生命在给定星球上进化的概率,似乎维持生命的恒星和行星形成的速度,等等。这些参数中的大多数都有相当大的不确定性——有些跨越几十个数量级——安德斯认为,对费米问题的大多数分析都没有考虑到这种不确定性,导致关于宇宙中存在其他形式的智慧生命的可能性的结论非常不正确。
  • 费米问题对人类的未来有着重要的影响。如果事实证明,可探测的智慧生命在宇宙中应该很普遍,那么我们在那里看不到它一定有什么原因。一个看似合理的原因是,所有文明都达到了某种技术或其他门槛,在这个门槛上,它们会可靠地自我毁灭。如果是这样的话,我们最好小心,因为那个伟大的过滤器可能就在前方。但如果事实并非如此——如果事实证明人类在宇宙中是孤独的,因为生命确实如此不寻常——那么地球上的生命就变得更加珍贵和有价值,成为宇宙中唯一的亮点。
  • 费米问题给了我们很好的理由去关注前方的路。这使得我们变得非常重要,善于预测可能具有破坏性潜力的技术发展。其中一个候选人是通用人工智能,一些人预测这种智能可能会带来技术 奇点。考虑到这一点,安德斯花了大量时间研究不同的人工智能发展预测策略。
  • 对即将到来的通用人工智能持怀疑态度的人使用的一个常见论点是基于这样的观察,即当前的人工智能系统在每次操作的基础上远不如人脑节能。安德斯指出,专注于能效并不真正有意义,因为这只是我们可以想象用来评估人工智能系统潜力的一个维度。在另一种意义上,人们可能会认为,一个仅经过几天训练就在图像分类方面超过典型的五岁儿童的机器学习模型已经能够在一个性能轴上表现出超人的性能。同样,当前的人工智能系统能够吸收更多的数据,并比人类更快地做出预测和推理,因为它们的物理结构不像人脑那样笨重和笨拙。在这场辩论的背景下,不可能总是将苹果与苹果进行比较,这应该是在对人工智能的未来做出任何预测时相当谦逊的原因。

你可以在推特上关注安德斯或者在推特上关注我

播客中引用的链接:

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

章节:

  • 0:00 介绍
  • 1:34 安德斯的背景
  • 8:45 问题解决流程
  • 16:06 宇宙优化
  • 17:07 生物进化
  • 24:55 费米问题
  • 33:47 矮星
  • 42:10 人工智能和机器学习设计
  • 42:54 哲学家和人工智能系统
  • 57:19 人类行为和自由意志
  • 1:05:36 总结

请查看下面的文字记录:

Jeremie (00:00:00):
大家好。我叫杰瑞米。欢迎回到迈向数据科学播客。我对今天的节目非常兴奋,因为我可以和安德斯·桑德伯格交谈。安德斯是我长期以来一直想与之交谈的人,因为他的研究专注于一些有趣的主题,他用一种非常有趣的多学科策略来研究这些主题。他是一名研究员、科学辩论家、未来学家和超人类主义者。他拥有斯德哥尔摩大学的计算神经科学学位。他目前还是牛津大学人类未来研究所的高级研究员。我会说安德斯是我遇到的关于存在风险和高级人工智能系统将迫使我们回答的难题的最有趣的思想家之一。他有办法将来自机器学习、伦理学、形而上学和宇宙学等不同领域的知识无缝融合在一起。

Jeremie (00:00:47):
和他说话是一种享受。这也让人们意识到,当你拉远到足以看到人类如何融入深邃的宇宙图景时,这些不同的领域变得多么紧密相关。我真的很喜欢这次谈话。它涵盖了一些有趣的主题,这些主题都以一些意想不到和令人惊讶的方式触及了人工智能发展的未来。这些问题包括,为什么我们在宇宙中实际上可能是孤独的,人类大脑的能量效率是否表明,总体而言,这可能比看起来更难组合起来,以及人工智能是否会有意识。所以这绝对是一场爆炸。我希望你和我一样喜欢这次谈话,事不宜迟,我要闪开,让这一集开始了。好吧。安德斯,非常感谢你参加我的播客。

安德斯(00:01:32):
谢谢你邀请我。

杰瑞米(00:01:34):
你能来我非常高兴。我在推特上跟踪你的时间比我想承认的要长。我的意思是,有很多你正在研究的非常有趣的东西,那么多与人工智能相关的话题,人工智能的未来,人类的未来。我想从一个有点传记性质的问题开始。我想知道你是如何来到这个领域的。是什么驱使你来到这里?

安德斯(00:01:56):
我在 20 世纪 70 年代斯德哥尔摩北部的一个郊区长大,非常无聊。所以我读了所有我能在当地分馆找到的科幻小说,然后有一天我意识到,实际上我想把它变成现实,我该怎么做呢?我也许应该读读科学书籍。所以当我从那里开始,然后我去了市立图书馆,然后是主图书馆,然后是大学图书馆。所以我就这样结束了,但我一直想让未来成真。如果我不能写关于它的小说,也许我可以调查它,写论文,发明东西,或者弄清楚我们应该关注或避免什么。

Jeremie (00:02:35):
在这个过程中,你有没有对什么样的科幻小说最有可能产生看法?我还想说,科幻作家通常会犯什么样的错误?因为那有点…我不知道,我想知道你是否发现了那里的趋势。

安德斯(00:02:53):
所以问题是科幻小说往往想写好故事,而现实通常是一个非常糟糕的故事。现实的情节事无可救药。我的意思是,只要看看今年或任何平均年份,你会说,“是啊,这是如此不均衡,这没有意义。”所以真实的故事,当然要尽量讲得通。他们试图讲述一个能引起我们共鸣的故事。当然,问题是,世界上的许多事物都与我们人类的情感无关,尤其是当你涉足科技领域的时候。这意味着许多最好的故事实际上根本没有非常仔细地处理科学和技术。他们更喜欢人类故事,这意味着如果你想思考你的未来,在许多情况下,你可能会想去科幻小说,实际上不如小说有价值,但更擅长思考想法。

安德斯(00:03:54):
但同样,你有一个权衡。许多最酷的想法实际上可能并不十分合理。是的,我觉得真正包含有趣事物种子的科幻小说除了小说之外,还充满了小创意。他们试图描述在一个环境中发生的事情的相互作用,不仅仅是惊人的技术,还包括它是如何失败的,或者孩子们是如何滥用技术的,以及如何对抗所有人的叫喊,离开我的草坪,或者现在我们在说,离开我的增强现实和过滤器。在这一点上,你开始看到对非平凡效应的兴趣。艾萨克·阿斯莫斯正在谈论电梯原理。如果你展示华盛顿天际线的照片,对不起,不是华盛顿,如果你展示纽约天际线的照片给过去一个世纪的人看,他们应该能发现一定有电梯之类的东西,否则摩天大楼就没有意义了。

安德斯(00:04:53):
这是一种登上所有楼梯的工具。也许他们会错了,他们会说,"是的,所有的富人当然都住在离底层很近的地方,而穷人必须建造高海拔的公寓。"但他们将被迫意识到,必须有像电梯这样的东西来理解这幅画。我认为这也是科幻小说最有用的地方。它让你意识到这些电梯的一些原则。例如,对我来说,思考大量先进技术的可维护性是一个有趣的问题。你如何修理太空电梯?如果你建造[听不清 00:05:33],需要付出多大的努力来保护它,使它不被破坏?当你制造一个人工智能时,保持它的理智和功能需要多少额外的工作?

Jeremie (00:05:46):
有意思。这几乎…这很有趣,这让我想起了创业公司的一个原则,那就是你应该总是致力于解决看起来无聊的问题,有些事情是人们不工作的领域,也是像 Stripe 这样的公司的领域…很多人不知道 Stripe 是什么。是一家支付处理公司。他们干脏活。他们负责互联网的管道工程。这似乎是类似的想法之一。你认为会有类似的影响吗,会有一点点反过来,人们可能会遇到一个遵守电梯原理的想法,这是一种理性的前瞻性预测,但它的含义是如此深刻地反直觉,以至于人们几乎本能地反对它。那也是你见过的吗?

安德斯(00:06:32):
哦,是的。一直都是。事实上,回到经典科幻小说作家阿瑟·c·克拉克在他的书《未来概况》中,他谈到了想象力的失败和神经的失败。相当多的人,尤其是学者,缺乏想象力。他们无法想象事情会有很大不同。我记得有人告诉一位纳米技术教授说,自我复制的机器是绝对不可能的,但当我指出细菌又如何呢?是的,但是我们不能在这里建。所以从他的角度来看,自我复制的机器是绝对不可能的,因为他不能把它放在他的项目中,他不想从他能做的事情中发现实际存在的阻力。但是这样你就没有勇气了。你可以想象一些事情,但你不想坚持到底,因为后果是如此巨大,如此怪异,好吧,这听起来很疯狂。我只是不想谈论。

Anders (00:07:29):
同样,纳米技术也有这个问题,因为 Eric Drexler 最初的观点表明,如果你获得原子级的精确制造,并且可以扩大规模,世界就会变得完全不同。这让人们对所有的技术感兴趣。但不幸的是,这个领域后来被像那位教授这样的人接管了,他们想研究正常的东西。所以我们最终得到了很多精彩的固态科学,但是你可以实际做一些事情来真正改变世界,这并不是我们在实验室里做的事情。所以这可能是疯狂的言论。同样的事情也发生了,当然,对于许多其他领域,我们已经在太空中看到了。克拉克写的就是这个。许多人都在批评早期的太空先锋,并给出各种合理的解释,为什么你永远也不能建造一个可以在太空中飞行的火箭。

Anders (00:08:24):
当然,问题是他们在想最简单的方法,然后他们可以证明那是行不通的。他们没有考虑如果有人真的有动力去做,并且花了一些时间去做一个好的设计,他们能做什么。这就是为什么当戈达德发射火箭的时候,人们在嘘火箭。

Jeremie (00:08:45):
你认为……因为我经常陷入思考的一个范式是具体问题及其解决方案之间的区别,然后是解决问题的过程。我总是觉得在我们平凡的日常生活中很容易遇到特殊的挑战,比如太空旅行,看着它说,“哇,耶。”就像你说的,那真的很难。我无法想象自己能解决这个问题。从某种意义上来说,这就是我们所说的,这就像是,同样的事情让我们说,“嗯,如果我管理那个国家,它会运行得很好。”我们可以想象,我们可以将我们的意愿印在问题上,以某种方式反映如果人类共同努力会发生什么,而不是说,我们是某种集体结构,某种超级有机体,通过怪异的市场力量,人际互动和所有这些东西的混合,我们是某种集体努力解决这个问题的机器学习算法。我是说,你觉得这是个准确的框架吗?

安德斯(00:09:45):
我想是的。这还取决于你试图解决的问题的类型。所以如果你有一个自上而下的方法,你需要一个天才的管理人员来做。我们已经看到了两个很好的例子,曼哈顿计划的极地项目。在这两种情况下,都有一个相当明确的目标,基本的物理原理大部分都被理解了,但并非完全理解。然后你让人们同时致力于困难的科学和工程问题,但你也碰巧让几个管理天才管理整个项目。莱斯利·格罗夫斯将军可能是整个 20 世纪在管理人员和完成任务方面最优秀的人之一。但你也有像互联网这样的庞大项目,它们有机地成长,充满了内部矛盾和混乱。我的一个小嗜好是收集文件,作为互联网即将灭亡的预兆。

Anders (00:10:46):
他们中的许多人从 98 年开始就指出,如果这种趋势持续到 9 月份,这将不会奏效。它应该是在七月写的。当然,有一天解决方案得到了实施,并在 9 月份推出,没有问题。互联网有很多问题,人们疯狂地修补它们。这里我们有很多自下而上的解决方案。不是所有的都是完美的。如果我们在 70 年代早期以不同的方式实现邮件系统,我们就可以避免垃圾邮件,但是没有人能够想象电子邮件会在计算机部门之外使用。肯定不是数百万人,包括那些有点自私的人,没有人想到邀请一位经济学家指出,“看,如果发送一封额外邮件的边际成本是零,你将会收到无限多的邮件。”

耶雷米(00:11:34):
对。是啊。而且看起来好像…在某种程度上,这确实让我想到了我们在预测人工智能将如何解决问题方面遇到的各种问题。如果我看一个计算机视觉模型,我一般无法提前猜测算法会在图像中寻找什么样的特征来区分飞机和鸭子,潜艇之类的东西。同样的,我们似乎总是被集体想出这些疯狂的解决方案的方式所震惊。有一件事可能与你在深层时间和费米悖论方面的一些工作有关,这让我想知道的一件事是,宇宙中原子的集合真的只是…只是随着时间的推移而变得混乱的一些大优化算法的参数吗?我是说,我很想和这个想法互动。首先,也许我们可以在一分钟内深入费米的东西。

安德斯(00:12:34):
从某种意义上来说,我认为这是完全正确的,是的,我们正在进行巨大的优化。我们在最小化自由能,一些吉布斯自由能,或者海尔曼自由能,不管是什么。我永远也不能把他们分开。所以在某种意义上,哦,是的,原子和粒子,试图通过最小化熵来达到能量最小的约束。这就是事情开始变得非常奇怪和有趣的地方。因为出于某种原因,宇宙开始时有一个非常平坦的时空。但是当然,非常高的温度和很多混乱的原子。当时空膨胀,温度下降时,原子开始以各种不同的方式结合在一起。因为它们会因为重力而聚集在一起,你会得到很多非常重要的模式,包括一些开始融合并开始产生能量的模式。

安德斯(00:13:26):
现在你得到了能量流,事情变得更加复杂,但在超级大宇宙中,你可以说宇宙的历史基本上是我们将大量熵移入宇宙的引力场,但聚集了物质。这为许多非平凡的非平衡过程提供了动力,这些过程具有非常低的熵。他们中的许多人后来被证明是在为其他事情进行优化。有一个非平衡热力学的大领域,我不是很理解。但似乎在很多情况下,如果你有一个火焰,持续不断地供给气体,它会倾向于最大化或最小化熵产生,这取决于约束。

Anders (00:14:10):
你会发现很多奇怪的优化开始在各处发生。所以对于像我们这样的分子物质生物来说,例如,晶体真的感觉很奇怪,因为它们与我们在自然界中发现的大多数其他岩石如此不同,因为它们试图最小化晶格能和表面能,并变成这些非常精确的精确定位,与正常的岩石非常不同,正常的岩石当然也充满了不同种类的晶体。

安德斯(00:14:36):
当然,我们拥有洛里所说的八个周期信息晶体。他在我们真正知道遗传密码是什么之前就假设了它们,但是一定有某种分子,当以常规方式放置时,包含了建造世界和太阳的信息。他们不知道这是哪种分子。他们推测了一下。他大部分都错了,但是他把 DNA 描述成一种非周期性晶体是对的。进化最酷的一点是,你有一个优化过程。你试图最大化你的适应度,或者至少你的基因,他们希望到目前为止我们可以希望我们有很多后代基因。所以在这方面非常成功的生物,它们将基因传播开来。那么现在你得到的是为其生态位而优化的东西。这是一个局部优化。这些利基中的许多被证明是短暂的或者只是简单的愚蠢,或者只是在一个天体撞击的时候被厄运摧毁。

安德斯(00:15:31):
但最终的结果是,来自环境的大量非平凡信息被转化为遗传信息。我们的身体充满了适应环境的能力。这种情况已经发生了几十亿代,细胞和有机体已经学到了很多东西,通常是通过艰苦的学习。现在它编码了更瘦的基因。当然,类似地,其中一些基因编码的大脑在本质上做着同样的事情,但速度要快得多。现在我们甚至有了累积培养。所以我们正在以更快的速度进行。

Jeremie (00:16:06):
我的意思是,这些抽象层次似乎一直在堆积,在某种程度上,我的意思是,这让我感到好奇,因为进化生物学总是被框定在这种范式中,我们说,什么是物种遗传适应度的优化,它们传播基因的能力,本质上就像通过时间传播遗传信息一样。但有时,从你试图优化个体数量或这些基因拷贝数量的角度来看,总是有些不清楚实际上应该优化什么。随着我们越来越接近许多人认为的技术奇点,这似乎也将打破许多假设,因为智力可能不是遗传的。它不包含在基因中。因此,无论宇宙是为了什么而优化,它都不一定仅仅是遗传适应性。好像是什么东西,但我不知道是什么。你知道那会是什么吗?

安德斯(00:17:07):
所以如果你能和进化对话,进化会说,“哦,是的,作为一个物种,你一定非常非常优秀和成功。”看看它们吧,这么大的哺乳动物,在世界各地都很常见。是的,非常好。当然,除了很多人真的不擅长繁殖。我是说,我们为什么要制造避孕药?为什么老人不捐精呢?就包容性健身而言,这是你应该做的。取而代之的是,有些人有宗教思想,他们决定我要在这个修道院过独身生活,思考神圣的思想。我们会想出很多比抚养孩子更有趣的事情。也许有一天我们真的会把自己上传到软件里。从生物进化的角度来看,这确实是一个糟糕的想法,但这是一直在发生的事情,因为生物进化,它创造了各种各样的东西,以试图优化适应度,但除此之外,它并不关心这些东西做什么。

安德斯(00:18:10):
比如说,性是长期提高健康和能力水平的好方法,因为你们可以分享有用的基因。当然,你需要一个激励系统。所以动物实际上开始做爱。所以突然之间,你得到了更多的乐趣和资金,从进化的角度来看,这只是工具性的,但从价值的角度来看,这是一件好事。大脑,嗯,他们真的必须协调凡人的行动,避免被吃掉,但你可以用一些来想象事情,做更多的事情。似乎在宇宙深处,可能只是在做自由能最小化,但这导致了超级不平凡的效应。所以当你玩人工生命模拟,一个细胞自动机的时候,你经常会得到奇妙的涌现现象,这些现象在很多方面都非常鼓舞人心。

安德斯(00:19:01):
哦,我只是加入了一些简单的规则,去掉了很多复杂的东西。但是,如果你花足够的时间进行这种模拟,你经常会感到有点无聊,因为你确实会变得复杂,但这种复杂性在大多数时候都是相同的[听不清 00:19:14]生活中一次又一次。过一会儿你会看到那些图案。你会得到一些真正奇怪的东西。你通常要自己设计,从外面放进去。他们在 90 年代进行的许多人造光模拟发现,你有一个小的生态系统,但它们从未变得更复杂,这与我们自己的生态系统和我们自己的社会非常不同。它们似乎有变得更加复杂的趋势。

安德斯(00:19:39):
这可能是我们遗漏了一些关于现实或进化的非常基本的东西,或者可能只是你需要一个足够大的世界才能让它发生。有点像 2000 年代的神经网络革命表明,到目前为止,我们使用的数据太少,计算机太小,训练太少。当你把它放大几个数量级的时候,真正令人惊奇的新事物发生了,这是我们在 20 世纪 90 年代甚至无法想象的。

耶雷米(00:20:07):
令人惊讶的是,在这些奇怪的影响、有性生殖、生物进化等等发生之前,这个世界与你想象中的世界是多么的不同。这在某种程度上凸显了这些过程有多奇怪,当然也提出了一个问题,即它们在宇宙层面上有多普遍。我认为这可能与一些关于风险的存在主义问题有关,对吗?因为当人们经常谈论为什么我们仰望夜空,却没有在那里看到其他外星文明?这是否意味着一个伟大的过滤器或一些可能仍然在我们前面的东西?你在这个话题上做了很多工作。我想问你一个问题,你对费米悖论有什么看法?你能介绍一下,简单描述一下,然后看看你能从那里得到什么吗?

安德斯(00:21:02):
是的。所以费米悖论并不是一个真正的悖论,有些人会指出它甚至不是费米的,但我喜欢称它为费米问题。回到 20 世纪 50 年代,曼哈顿计划的人正在吃午餐,谈论原子火箭,谈论现在解决宇宙问题是多么容易,那时原子的力量已经被释放,然后费米显然只是问,“那么大家都在哪里?”这是一个非常好的问题,因为如果很容易穿越太空的沟壑并在整个宇宙定居,我们应该会看到很多反外星人的例子,因为宇宙真的很大很古老。如果可以的话,在你出现在每个地方之前,它不需要很长时间就能在星星之间传播。所以空旷的天空成了一个真正的问题,因为如果你对技术有点乐观,这似乎会引起注意。

安德斯(00:21:58):
这就是为什么人们说这是一个悖论。我们假设互联网会在很多地点和时间出现。你乘以一些合理的智慧出现的概率,然后你应该得到一个数字。如果你有点乐观,你会得到一个很大的数字,但这似乎并不合适。现在,你可能会争辩说,也许宇宙中很少有地方可以进化出智慧和生命。所以有一些人说,地球是非常独特的,但很难让它变得超级独特,独特到你可以放心地假设其他地方没有生命。所以肯定还有别的原因。当然,在这个等式的某个地方,你将各种因素相乘,一定有一个因素小到足以让宇宙变得相当空。

安德斯(00:22:47):
这就是伟大的过滤因素。可能是生命超级稀有。在这种情况下,嗯,我们很幸运我们存在,现在我们有一个远大的未来在我们面前,或者它可能是聪明是罕见的,或者它可能是聪明是常见的,但它不会存活很长时间。当然,这是一种可怕的伟大过滤器,让我们在人类未来研究所工作,思考这些问题,因为这似乎是少数几条关于我们机会的真正独立的信息之一,无论全球风险来自于阅读报纸和思考关于生物技术和流行病的最新消息。他们试图理解其他问题,但这里我们有一些似乎是所有可能文明的平均值。现在,这里真正有趣的事情是,当然,如果我们生活在一个趋向复杂的宇宙中,情况会变得更糟。

安德斯(00:23:41):
如果你认为宇宙是中性的,或者对生命是有害的,好吧。很空。如果你认为宇宙真的试图获得生命,你告诉我们,你有一个更大的问题。同样值得注意的是,过去许多人绝对相信每个环境都有自己的居民。对许多人来说,在古代和现代早期,其他星球上有人居住的想法几乎是不言而喻的。[听不清 00:24:09]实际上他说上帝创造这些星球却不把人放在上面是有点疯狂。

安德斯(00:24:16):
顺便提一下,这也意味着你不需要太在意人类的末日。我的朋友托马斯·莫伊尼汉写了一本很好的书,《X-Risk 》,讲述了思考人类灭绝的历史。他指出,直到最近,人们还没有把它看得很重,因为如果我们灭绝了,那么,其他人就会出现。宇宙就是这样。但是如果你认为我们几乎是孤独的或者完全是孤独的,如果我们的火花熄灭了,就只有黑暗,这使得存在的威胁更加糟糕。所以这是我们非常想理解费米问题的另一个原因。

杰里米(00:24:55):
好的,是的。我完全理解你对费米问题的执着,我也同意。我的意思是,费米悖论的框架总是看起来…这并不是说它看起来很天真,但它似乎反映了一种偏见,当你看着,我猜,著名的德雷克方程,它列出了所有的因素,你乘在一起得到潜在的外星文明的数量。你已经在你的作品中指出了这一点,这似乎是作者偏见的一贯反映。因此,如果你在分析这个等式,你可以根据你如何调整这些因素,得出几乎任何你想要的答案。你介意解释一下吗?

安德斯(00:25:40):
你可以无意识地。你很容易把你认为合理的东西放进去,然后你会得到一个合理的答案。如果我最后得到了我认为不合理的答案,通常,我会回头或多或少有意识地捏造事实,这样我就会得到我认为合理的答案。如果你认真思考的话,这当然是非常危险的。

耶雷米(00:26:00):
实际上,就这一点而言,这意味着预测本身存在巨大的不确定性。在研究这种不确定性并解释它时,我们在学术上或研究上做得好吗?

安德斯(00:26:12):
我有一篇论文,我认为我们在这方面做得不好。因为我认为人们通常会把德雷克方程的因子排列起来。他们承认这个我们不知道。事实上,我们对类地行星上存在生命的可能性一无所知,但我们只能说百万分之一的可能性。让我们承认编造了这些数字,然后他们把所有的数字相乘,他们得到一个数字,他们承认,当然,这是非常不确定的,因为我编造了一些数字,然后他们就不管了。因为对他们来说,承认你对某事不确定,这就是如何处理不确定性。但这当然是不理智的。如果我不确定有多少人住在旧金山,我应该陈述一个范围,我认为我 90%或 95%确定它在里面。

安德斯(00:27:03):
我不能只说,“好吧,我认为是 500 万人,”然后不提这个范围有多广。现在有趣的部分是,如果你真的用德雷克方程,试着放入适当的范围,如果你有均匀的概率分布,那就更好了,所以你只放入你的知识水平和不确定性,你会得到一系列的答案,但事实证明,鉴于目前的知识水平,你会得到一个相当大的分布。所以我们相当清楚银河系中的恒星数量和它们形成的速率。我们有一个想法,好吧,类地行星是一毛钱或一打。他们有很多人。我们对一个星球上出现生命的可能性有大约 100 个数量级的不确定性。

安德斯(00:27:49):
有可能是在第一个模式出现后的 10 分钟内发生的。这可能是通过或多或少的热力学奇迹发生的,每 10 的 100 次方个行星或类似的东西。我们真的不知道。所以当你把它放进去,你会得到非常宽的不确定性分布。即使你平均来说相当乐观,所以你认为平均来说,银河系中可能有 10 个文明,你也有很大的可能性相信我们在可观测的宇宙中确实是孤独的。如果你知道空空如也的天空中的一些东西不是那么有问题,我可能仍然有一些希望,我是对的,我们在那里有更多的空间,但是空空如也并不可怕。如果我只是输入数字,那么我最后会说,“哦,这里应该是 100 个文明。为什么我们看不到他们?”

耶雷米(00:28:44):
是啊。不,这很有趣,尤其是因为你把所有这些概率相乘,对吗?那么,如果说你只需要在这些参数中的一个非常非常悲观的范围内,就能真正摧毁任何希望,或者至少显著降低我们拥有行星邻居的可能性,这是对这个论点的一个很好的炮轰吗?

安德斯(00:29:11):
是的,没错。重要的是要认识到,许多职业宇航员会说,“是的,但当他们使用德雷克方程时,人们不会那么愚蠢。”然后,当然,我立即开始挥舞一堆发表的同行评议论文,这或多或少是一回事。许多人对超级不可能的事情同样过于自信。所以有些人认为生活是不太可能的。我们实际上不得不在我们的文本中做一点改变,不要给创造提供任何帮助,这是神圣的说法,但显然只有上帝才能给我们的星球增加生命,但这并不是不合理的,这可能需要一系列非常不可能的事件来导致这种复杂性。在写那篇论文之前,我没有想到的一件事是,很多生命最终可能会拥有一个可能是蹩脚的遗传编码系统。

安德斯(00:30:04):
它允许它们繁殖,但进化非常缓慢。所以我们需要有机会变成任何有趣的东西,直到恒星燃烧起来。现在我们这种生命只花了几十亿年就从原始粘状物发展到人们写关于原始粘状物的论文。但可能宇宙中大多数生命实际上都是原始的粘性物质,直到它变干并死亡。所以我并不认为这是一个难点,但是我意识到,哦,这实际上是有可能的。有点让人不安。

耶雷米(00:30:40):
是的。实际上很有趣,你提到了神创论者的观点,还有一些东西…我的意思是,我来自量子力学时代的世界,我在一个叫做量子力学解释的领域工作。在这种情况下,我们讨论了很多多节诗。我一直发现多节的一个令人信服的论点是,如果我们真的在宇宙中是孤独的,那将是一个多么可疑的情况。这将意味着,如果可观测的宇宙是所有实际存在的,并且恰好有一个智慧生命的样本,那么这意味着,比方说,生命在一个给定的星球上进化的概率几乎恰好是宇宙中有多少个星球中的一个。

Jeremie (00:31:37):
这真是令人难以置信……不会比这大 10 倍,否则我们会有 10 个邻居的利益。比那小不了十亿倍。它正好或者非常粗略地正好是这个数量级。然后,我的意思是,我想,你可能会指出一些宗教叙事,这可能是这类事情的另一种解释,你觉得这是一个令人信服的论点,证明在可观测的宇宙之外还有一个更广阔的宇宙,也许是一个多宇宙,诸如此类的东西?

安德斯(00:32:06):
我认为多节恐惧是许多人对它们的退缩,因为它看起来像,哦,等等,科学不是应该处理可测试的东西吗?这听起来非常不可测试,但似乎有很多不同理论的相当强大的预测。所以这不仅仅是你可以宣称,量子力学自然地导致了我们球体的数量。那也是我自己的观点。但是话说回来,人们可以花一整天的时间来争论量子力学的解释。但是也没有很好的理由认为可观测的宇宙就是宇宙的全部。的确,时空似乎是平的,这意味着最简单的答案是,哦,是的,它是无限大的。你不能说,“嗯,它有某种紧密的拓扑结构,但我们没有看到这方面的证据。”

安德斯(00:32:53):
然后你需要添加额外的复杂功能来使其工作。当然,你还有膨胀理论,它说,实际上可能还有其他领域,等等。所以你会得到几乎所有地方都支持的多宇宙理论。这意味着几乎所有的事情都很容易解释,因为在某个地方这是必然会发生的。真正的问题当然是,为什么世界没有变得更奇怪。为什么我们会发现自己在 G 星周围的一个看起来相当正常的行星上?即使这样也可能有点奇怪,因为毕竟黄矮星与红矮星相比并不常见,红矮星无处不在,而且它们发光的时间也更长。所以有点奇怪的是,它们在宇宙参考书中相对较早,而不是在中间的某个地方绕着一颗小红矮星转。

安德斯(00:33:47):
在另一篇论文中,我认为这可能实际上是暗示这些矮星周围不太适合居住。通常,我对这些行星的可居住性持乐观态度,但也许这些耀斑真的侵蚀了大气层,或者大陆漂移停止得足够早,以至于它们失去了碳循环,然后气候变得混乱。所以实际上,在这个参考例子中,大部分生命倾向于提前出现。

Jeremie (00:34:15):
这实际上在某种程度上非常违背直觉。我认为,这也凸显了不确定性的程度。我的意思是,如果你相当看好这些…对不起,是白矮星,还是?

安德斯(00:34:30):
红矮星。

Jeremie (00:34:31):
对不起,红矮星。如果你真的因为各种各样的其他原因看好它们,但这里我们绕着一些不同的恒星,我的意思是,红矮星之间的相对频率有什么不同,红矮星应该是绕着我们太阳转的恒星,如果它们确实更适合或同样适合居住,或者像-

安德斯(00:34:53):
基本上,我认为每颗黄星对应 30 到 50 颗红矮星。当你看到最小的,最小的,最暗的,这些数字会飙升。它们真的无处不在,而且持续时间也很长。太阳只会再持续 50 亿年。然后它会变成一颗红巨星,褪去外层,或者变成一颗相当无趣的白矮星。对于当时生活在太阳系中的人们来说,这是非常悲哀的,但与此同时,我们周围的许多红矮星,它们将快乐地继续运行一万亿年。现在离我们几光年远的燃烧恒星,当外层太阳已经变成白矮星,但也冷却成一个相当无聊的几乎是黑矮星时,它仍然可以发光。它仍然会发光。它将会熔化几乎所有的消防栓。如果它周围有一颗行星,那么在未来它可能会有和现在一样的温度。

Jeremie (00:35:59):
因此,出于各种原因,我肯定这是一个不好的术语,但如果你把宇宙中红矮星所有可能的生命维持年数的总和加起来,它应该比我们的太阳或类似太阳的恒星的生命维持年数的总和大得多。

安德斯(00:36:19):
它应该完全占据主导地位。我不记得确切的数字是多少了。我前阵子算了一下,红矮星周围的生物圈年比黄矮星多很多。

Jeremie (00:36:30):
生物圈年。好吧。是啊。很高兴知道有更好的说法。太好了。令人着迷。好吧。所以我们是如何走到这一步的还有各种各样的疑问。那么很明显不确定性的范围是难以置信的。令人着迷的是,我们甚至可以对此进行推理,坦率地说,我很惊讶地阅读了你的作品,你能够从我们父母的情况中提取出如此多的信息,仅仅是因为你在这里寻找更多的方向。随着宇宙的进化继续,显然,地平线上的一件大事,我们在这里必须期待的最大的相变可能是像高级人工智能,人工通用智能,超级智能以及所有需要的东西的出现。

Jeremie (00:37:12):
你在人工智能的能耗和人脑方面做了一些比较。看看人们提出的论点,即人工智能可能需要更长的时间才能发展,因为出于能量的原因,你认为这可能是一个糟糕的论点。我很想听听你对整个思想体系的阐述。

Anders (00:37:36):
现在,如果你想运行一个大型的机器学习模型,你将会启动你的数据中心,你的电费将会达到千瓦甚至兆瓦级。这并不便宜,但同时,当然,即使是最聪明的人脑也需要 20 到 25 瓦的能量。那是一个相当暗的灯泡。嗯,那是一个相当暗的白炽灯泡。如果你使用发光二极管,它实际上相当亮,但它仍然没有那么多能量。这真的很奇怪,因为大脑中的神经元通过一种 Rube Goldberg 机制传输信息,基本上是离子泵将细胞膜不同侧的钾离子和钠离子分开,当一个通道打开时,它们流过,它产生一些电势打开通道,你得到以大约音速机电传播的小波。

安德斯(00:38:37):
这有点傻,但效果很好。现在,这里有趣的部分是,如果你能在那个规模上做正常的电子设备,你可能会更节能,但是大脑仍然比现在的计算机更节能。所以有些人试图用这个作为论据,说,看,为了通过人工智能,你需要巨大的能量,显然你做不到。现在的问题是,我们是在比较苹果和橘子吗?我认为这就是正在发生的事情,因为当一个婴儿开始学习语言时,这与我们是否训练一种模拟数据中心的大型语言并不完全相同。这个婴儿在它所在的房间里说话很厉害。它从广播和电视中听到一些东西。它被语言所包围,但是一个婴儿在一两年内听到单词总量,并不是天文数字。

安德斯(00:39:36):
我不知道他们到底有多少百万个单词,但这并不多。现在,把它和现代语言模型做比较,现代语言模型做得很好。你基本上给他们所有的维基百科和 Reddit,互联网的大块,卑尔根的项目,所有翻译的联合国文本,基本上是你能得到的尽可能多的文本。这是一个巨大的数量,但他们也在数据中心接受了大约一周的培训后才学会。当你观察正在进行的过程时,它们似乎也非常不同。机器学习过程使用随机梯度下降,而婴儿大脑中发生的事情似乎更像是更重的学习。所以我的观点是,这不能作为比较。我们不能用他们使用当前计算机的能量来说他们什么时候能达到人类的智能。特别是因为算法的改进经常意味着我们可以伪造摩尔定律的额外十年。

安德斯(00:40:38):
如果你看看国际象棋计算机的表现,你会发现,在过去,当有人提出更好的解决问题的方法时,收视率会突然大幅上升。因此,这意味着实际上使用能量作为估计人工智能反弹的方法是行不通的。现在,它有另一面。我确实认为能量、智力和信息很重要,我们可以用它们来限制文明的发展。因为文明在某种意义上是信息处理。我喜欢指出,即使坠入爱河至少是信息处理操作的一部分,也许爱情的关键部分并不是所有的信息,也许有某种不可言喻的特质,或者实际上真正重要的东西。但是你肯定记得你爱上了谁,那就是信息储存。

安德斯(00:41:31):
你最好做点什么。这是一种需要传递给肌肉的信息,所以你要说话。所以这里有趣的部分是我们可以用信息和能量的物理学来说一点关于高级文明和他们能做什么和不能做什么。我们可以看着能量源说,“是的,宇宙中没有足够的能量来进行这种竞争。”这给了我们一些思考极端到遥远未来可能存在的极端先进文明的方法,但它并没有告诉我们 10 年或 100 年后我们是否会获得 AI。

杰雷米(00:42:10):
在预测方面,显然任何与人工智能有关的预测,以及我们什么时候会有变革性的人工智能都有巨大的特技棒,你有没有个人偏好,比如说,你的个人特技棒看起来会是什么样子,比如说,人工智能出现的 80%或 90%的置信区间,比如说,可以设计比人类更好的机器学习系统?因为我认为,出于各种原因,这可能是一个很好的客观基准。

Anders (00:42:43):
所以可能是 80%的置信区间。我可能会比大多数同事开始得晚。我认为,如果我们看到人工智能在 2050 年甚至 2040 年之前做出好的机器学习设计,我不会感到惊讶。大约的终点甚至可能是 21 世纪左右。我有一个相当-

耶雷米(00:43:08):
哇,太棒了。

安德斯(00:43:09):
是的。所以我有一个非常宽泛的估计,我想如果有人引用我的话,我可能会做得更宽泛。现在,当然,从安全的角度来看,我想指出的是,我们最好工作得好像它将很快发生一样,因为我们必须在它到来之前做好我们的功课,制造安全和价值一致的人工智能。即使它在 10 年、15 年、20 年后到来,那实际上对于解决一些非常基本的问题来说也是相当短的时间。如果要花上一个世纪,那么,它可能仍然是一个很难解决的问题。毕竟,2500 年来,哲学一直试图解决人类的价值取向问题,但收效甚微。

Jeremie (00:43:54):
实际上,我认为这是一个非常有趣的领域。如果有的话,你认为哲学家们在过去的 2500 年里一直致力于解决的问题的价值线和我们必须用人工智能系统解决的问题的价值之间有什么不同,以确保它们反映了。他们做我们想做的,实际上我们也知道我们想让他们做什么,这是这两个部分中的一部分。

安德斯(00:44:28):
很长一段时间以来,哲学和伦理学的有趣之处在于,它只是假设我们需要关心的唯一思维模式是类人思维。中世纪有一些关于天使伦理的有趣论述,但一般来说,这不被认为是一个大问题,因为我们知道天使无论如何都会表现自己。问题是他们的行为是出于自愿,还是仅仅因为我们被设定了这样做的程序。但是我们大多数的假设总是对的,但是每个人的想法都有点相似。关于类人思维的假设相当深奥,而且有点问题,因为人类思维是特殊的。这在动物研究中并不是什么有趣的发现,但是,是的,看起来黑猩猩实际上有一种公平感。当他们看到另一只黑猩猩因为在实验室里做了一些工作而获得超额报酬时,他们会感到非常不安。

安德斯(00:45:25):
这不仅仅是嫉妒。他们还意识到,等一下,为什么我要求得到一个香蕉,而黑猩猩得到了两个香蕉?所以你可以看到我们可能会说的一些元素,道德情感。我不认为黑猩猩真的在思考道德或公平或类似的东西,但我们确实需要这些先决条件,让我们在社会群体中工作。然后很多东西会变得精炼,因为我们有大的大脑,开始抽象地把它想成普遍的原则。但这背后是大脑中奖励功能的特殊设计。我们有一个特殊类型的动机系统,直到罗伯特最近,哲学家们只是假设它都是这样的。我认为现在正在发生的很酷的事情是人工智能正在将另一个引入伦理学。这相当具有挑战性。

安德斯(00:46:23):
当然,一些哲学家一直在思考动物权利和动物遭受的苦难等问题,但动物从来都不是你需要关心的道德代理人。如果你试图教你的猫道德,它不会工作得很好。但是理论上你可以试着用人工智能做到这一点。人们开始意识到这些系统可能与人类非常非常不同。事实上,从人类中心主义到非人类中心主义的伦理学,我认为是一个巨大的挑战,不仅仅是为了让有道德的人工智能安全,也是为了哲学。我认为这两个领域互相交流也是非常健康的。所以,一般来说,超越人类,是很有帮助的。

耶雷米(00:47:08):
是的。这是一个非常有趣的问题,至于我们是否以及在多大程度上把人工智能系统算作这些需要考虑的因素,我们必须以一种考虑它们的需求、想要和愿望的方式来做会计。我想,这也有点像是,你不能把它从围绕意识和主观经验的问题中分离出来,因为如果这些是没有任何感情的宗教黑盒,无论它们看起来有多真实,或者无论它们看起来有多动机,如果它们在内心深处真的没有感情,我不知道,因为机器没有感情,那么我们可能会浪费我们的时间和精力来优化它们的偏好。你对我们如何探索这个有什么想法吗?我的意思是,这似乎明显与意识的难题有关,这不是一件容易回答的事情,但你对此有什么想法?

安德斯(00:48:00):
我是一个糟糕的心灵哲学家。我不知道如何真正解决这个问题,但我认为有时谨慎是无关紧要的。所以当尼克·博斯特罗姆的书《超智能》出版时,这位伟大的哲学家头脑写了一篇有点粗略的评论,说,看,机器没有意识,所以伦理不可能是一个问题,这有点奇怪,因为一辆车可以在你没有意识的情况下碾过你。无意识机器可能相当危险。尼克的观点当然是,非常对,我们最好制造安全的机器不管它们是否意识到它们是安全的,这无关紧要。现在我们可能想设计一些机器,让它们成为我们需要关心的道德病人。我们也可能有很好的理由不想这么做。

安德斯(00:48:46):
乔安娜·布赖森写了一篇题为《机器应该成为我们的奴隶或者机器人应该成为我们的奴隶》的论文,这个标题当然比论文更进一步,但她说得很有道理。出于很多目的,你不想要一些你不得不关心的东西。她认为制造大量我们需要关心的机器是一个相当愚蠢的步骤。我还认为,如果你能制造一台被迫关心的机器,即使只是作为一个艺术项目,也一定会有人去做。所以真正的问题是,我们能区分出我们需要非常关心的系统吗?我认为这将变得非常棘手,因为通常我们倾向于使用直觉,比如,好吧,我跟它说话,它会给出合理的反应。好吧,我相信有人在附近。

安德斯(00:49:37):
但是我们知道你一定会爱上聊天机器人。令人尴尬的是,欺骗人类认为那里有人是很容易的,因为我们很好地假设了安全和抱歉,如果有东西似乎有思想,我们可能应该假设它是一个类似人类的思想,这也是为什么我们把类似人类的思想投射到动物和自然现象上,并且可能建立宗教来解释是谁如此愤怒以至于可爱地撞上了那棵树?它需要一个合适的外星人代理。问题是,当然可能有一些系统根本不是代理,这个比喻真的失败了。当你想到像谷歌搜索引擎这样的东西时,那是一种存在吗?不,不是真的。搜索引擎的边界非常繁琐,事实上它甚至不像人脑那样运作。

安德斯(00:50:33):
我们可能最终会生活在一个有很多非常重要、强大的系统的世界,这些系统做了很多聪明的事情,但与我们有些不同,因此我们需要新的道德分类。删除一个真正好的搜索代理可能是一件坏事,但不是因为它对搜索代理不好,而是它可能像一件艺术品,或者它可能有其他重要的价值或目标。所以在动物伦理工作样本中有一些想法,动物有生命项目,我们不应该干涉它们。你可以想象机器人有项目,即使我们可能非常无意识。正常的强调会说,“是啊,无意识的东西其实没有任何道德权利。”但是如果你进入环境伦理学,你会发现生物中心主义者和生态中心主义者说实际上生态系统可能有价值。

安德斯(00:51:22):
如果你努力改造地球,你会发现至少有几个哲学家会说,“哦,没有生命的星球环境是有价值的,所以如果我们引入生命也没有用。”所以他们可能会非常愿意说,“是的,也许这些机器人中的一些应该有某种形式的权利,所以我们应该尊重他们,即使他们仍然只是在数字和比特之间变戏法,没有任何内部经验。”这当然远远超出了我们通常的处理方式,以及我们作为一个社会应该如何安排我们自己的事务,以及人们与我们周围事物的关系,这将是相当具有挑战性的。

耶雷米(00:51:58):
这让我想起了之前我们谈论人类超级有机体的那段对话,或者说,一个星球上所有人类的集合是一个连贯的有机体。从这个角度来看,我们对这个超级有机体有道德责任吗?我的意思是,我们基本上充当它的细胞,谁说它没有合法的有意识的主观体验。当然,也许如果你疯狂地缩小,你可以看着地球,看着它随着时间的推移而演变,然后说,哦,那是一个逐渐苏醒的星球,有事情正在发生。这整个生态系统值得某种独立于系统中个体实体的道德地位。我想这里的问题也和你进入组合学一样,因为你可以很容易地说,加拿大是一个有道德的实体吗?无论如何,你对那种近乎逆向还原论的立场有什么想法吗?

安德斯(00:52:58):
是的。所以埃里克·罢工给了牛虻一个非常有趣的哲学。他写了一篇非常有趣的论文,关于如何宣称美国是有意识的?他认为,根据一些相当常识性的假设,并不难让读者得出这样的结论:是的,也许美国是有意识的,而且可以推测加拿大也是有意识的,但联合国或世界经济体系呢?组合学不一定那么疯狂。毕竟,我们通常有内部大脑半球,它们之间的带宽有限,我们大脑中的不同模块实际上并不完全了解其他模块中的信息。有时你会得到这些奇怪的脱节的体验。我记得有一天晚上回家,发现我挂在衣架上的那件外套看起来真的像是潜伏着一个邪恶的角色。

安德斯(00:53:54):
然后我跳了起来,因为我大脑的另一部分已经注意到黑暗中潜伏着一个邪恶的角色。我大脑的不同部分几乎在同一时间得出了不同的结论,我对两者都有点意识。现在,同样的事情很可能发生在超级生物身上。在某种意义上,谷歌可以是一个超级有机体的意识,它也是美国和世界经济的一部分。它们在某种程度上还被它们之间有限的信息流所分隔,但你有时可以说,在这种情况下,将这部分相当独立地对待是有意义的。就像我们现在可能会说,我们人类倾向于彼此相当独立,但你也可以谈论特定的人类群体。你可以说,科学界已经决定,以下关于世界的陈述似乎暂时是正确的。但是在那个社区里有很多科学家甚至没有听说过这个消息。

Jeremie (00:54:54):
意识可能会变成这样一个分形问题,这很有趣。这有点有助于思考终极泛灵论。我的意思是,如果我大脑中的每一个神经元都是有意识的,我身体中的每一个细胞都是独立有意识的,那会有什么结果呢?每个细胞内的每个细胞器都是有意识的吗?我能一直往下走直到每个怪癖和轻子都被意识到吗,我是说,每个粒子?

安德斯(00:55:20):
然后我们可能不得不担心不幸的轻子和怪癖。也许他们是这个宇宙中真正的道德问题,你们中的许多人正在遭受痛苦,我们真的不需要帮助穷人摆脱怪癖。

耶雷米(00:55:35):
谁知道他们会有自己的游说团。现在,实际上-

安德斯(00:55:38):
这里有一件重要的事情,意识可能是一件简单的事情,你可以扩展它以涵盖一切,这并不是不合理的。然后我们碰巧是那种也写论文、谈论和思考有意识的 OBX,这对于岩石来说可能不是真的。但是我们的大脑还有其他不平凡的属性,当你进一步武断时,这些属性可能不会继续存在。在近海,我们都说英语,但如果我检查你的大脑,我不会发现一个说英语的神经元。这是一个具有某种属性的系统。这当然是我对塞尔的中国室的第四个实验的回应。我认为这是完全正确的,一些系统有你在部件中找不到的属性,当你有足够的水分子在一起时,水的湿度就会发生。它不完全是水分子的一部分。

安德斯(00:56:34):
我们头脑中许多与道德相关的部分可能存在于某些层面,而不存在于其他层面。当你观察超级有机体时,这当然会很有趣。也许美国确实在这个意义上说英语,但让它成为我们谈论国家或文明的美德。我们当然可以谈论人们的美德。我不能谈论一个身体部位或一个神经元的优点,但可以说那个人是一个顽强的人,一个勇敢的人。那是一件懦弱的事情。也许我们可以说这实际上是一个勇敢的文明,或者这可能是有意义的。甚至可能存在文明尺度上的美德,而这些美德在人类个体尺度上是不存在的。

耶雷米(00:57:19):
因为我发现令人困惑或有点难以调和的事情之一是,从智力上来说,我认为这是有道理的,但直觉上我仍然在与之斗争的是,如果人类的超级有机体真的是有意识的,我的意思是,它的行为是完全确定的。似乎人类超级有机体所做的任何事情都只是组成它的所有个体人类行为的功能或产物,每个人都感觉他们有自由意志。所以这种感觉就像没有空间让那个超级有机体做出不同的决定,这似乎暗示着,哦,它不可能真的是一个有意识的自由意志的实体,但话说回来,我想我们对自己也是如此。我们也没有那种自由度。

Anders (00:58:09):
我认为这里的解决方案是人们对自由意志假设过多。我们希望它是一种自由的形式,但我认为它与物理学甚至逻辑学都不相容。但是实际上,自由意志是对大多数人行为的一个有用的描述。如果我在很多情况下都在犯罪,好吧,我已经做出了决定,这是基于我当时的了解和感受,这可能不是一个坏主意。也许我甚至可以证明导致我犯罪的神经放电,但这实际上并不能很好地解释我为什么这么做。自由意志在人与人之间是非常有用的。归属于大群体可能用处不大。

安德斯(00:58:57):
我们说民主党有自由意志。嗯,在某种程度上,是的,决策是在党的层面上做出的,但我们可能会将其归因于个人,但你也可以说这实际上是一种突发现象,因为当人们相互交谈时,有时会有一个集体决策,但没有人真正支持,但确实仍然做出了决定。所以我认为重要的是尝试去了解解释在什么层面起作用?所以通常,当我们谈论自由意志时,它是关于可预测性的。当你说某人是机器人时,这意味着你有一个输入如何产生输出的相当好的模型。当然,制作一个极其难以预测的简单程序是相当琐碎的,但是大多数时候我们并不认为随机行为真的有趣。我们认为适当的行为是难以预测的,这也是我们认为的自由意志。但是我们在很多系统中都遇到过这种情况。

安德斯(00:59:56):
只是在大多数情况下,我们不会直接与生物圈或整个文明互动。我们与人或组织打交道,但他们的自由意志一点也不令人难以置信。我们可能会说,嗯,脸书在某种程度上有设立隐私箱的自由意志,你可能会说,嗯,这取决于扎克伯格说什么,但实际上有股东,有内部结构。所以比那要复杂一点。还有其他组织在决定做什么方面可能更自由。自由意志只是假设我们能为我们采取或不采取的行动责备他们多少。

Jeremie (01:00:33):
对。我想这是它自己的一种独立的道德范畴,我们可能需要弄清楚。我的意思是,你认为这些事情是问题吗,这些问题是我们需要回答的问题,以便能够安全地应对即将到来的技术转型,或者我们可以通过,比如说,其中的一部分,或者你对此有什么想法?

Anders (01:00:53):
我想我们可能需要一个子集。这可能会很可怕,因为我认为如果我们能解决所有这些深层的问题,那就太好了,但其中一些问题可能会非常复杂。可能有些事情没有一个通用的答案,但是我认为好的治疗学确实能帮你很大的忙。例如,如果你想一想政府中的权力划分,这种平衡行为对于避免某些失败模式非常有用。我们通过各种方式了解到这一点。如果你想建立组织,这样我们就不会有太多的内讧,有各种各样的工具可以做到这一点,建立责任规则,让人们行为检点。我们这里有很多不同的选择。因此,如果你创建新的机构,你实际上可以考虑,好吧,这可能会失败,然后我们可以建立保障措施?

安德斯(01:01:51):
随着时间的推移,我们发明了它们。回过头来看看政治机构的历史或壁垒是很迷人的,因为在很多情况下,就像研究软件和研究密码原语一样,人们不得不发明委员会。人们不得不在不同的时间点发明各种形式的选票和选举机制。还有一些不好的方法,我们正在尝试,但大多数都被遗忘了。好的现在在工具箱里,我们可以把它们放进去。我们可能需要发明更多的方法,因为我们有两个新的问题,事情在不同的规模上。这也是技术转变如此可怕的原因之一。这不仅仅是因为我们需要考虑周围可能存在的人工智能,而且我们已经有了自己的公司和其他超级有机体,它们已经证明了这一点,是的,这一点也不容易控制。

安德斯(01:02:43):
我们还发现了一些很酷的机制,比如市场力量和声誉。甚至当父母告诉孩子如何表现和不表现,并给出各种关于做错事的孩子会发生什么的神话,这是一种编程形式,我们可以借用其中的一些想法。它按照我们想要的方式进行教学,或者机器人如何成长。因此,当然,我们将不得不进行测试,并可能找到自动生成更好工具的好方法。所以这里有很多工作要做。最酷的是,这将会打破哲学、编程、经济学和许多其他领域之间的界限。这里需要做很多跨学科的工作。我们可以窃取不同学科中最酷、最好的部分,并把它们构建成全新的学科。

耶雷米(01:03:32):
是的,为了能够对具有巨大不确定性的时间表做出估计,为了能够得到一些合理的东西,你不得不学习、了解和理解所有这些不同的领域,这令人难以置信。这只是一个绝对迷人的过去和未来真正深入时间的盛大旅行。我真的很感谢你的时间安德斯。事实上,我想对所有正在听的人说,如果你对安德斯的工作感兴趣,请看看他的推特,因为这真的是很好的东西。Anders,你还有其他资源推荐给大家看看吗?

安德斯(01:04:04):
在某种意义上,我会说是维基百科。我认为维基百科是一件有趣的事情,不仅仅是作为人类知识的宝库,也是我们有时可以团结一致的证明。看一些成功的例子是很有趣的,在这些例子中,人们实际上共同收集信息,解决各种争端和问题,并创造出有价值的东西。如果你有那种典型的《星际迷航》,旧的系列剧集,外星人要审判人类,维基百科将是我要指出的事情之一,看,这个展览我们没那么坏。有趣的是,人们一直试图制作类似维基百科的资源,但大多数都失败了。我们也可以从中学习。最终,我认为我们将拥有某种艺术和科学来制作这些伟大的共享资源,这些资源实际上结合在一起并带来很多好处。

安德斯(01:05:00):
目前,我们只是在网上尝试了几十年。所以我们仍然不知道如何定期做,但我认为我们会变得更好。因此,这就是为什么我真的建议看看像互联网档案馆,维基百科和一些声誉系统,似乎像在股票交易所工作。这些本身就是惊人的财富,不仅仅是因为它们是在证券交易所回答的很酷的问题,或者[听不清 01:05:29]有助于我们的集体记忆,而且我们可以在我们的集体系统中建立全新的成长工具。

Jeremie (01:05:39):
是啊。希望他们能继续成长。希望它们能帮助我们保持超级生物的一致性。

安德斯(01:05:45):
我希望在一万亿年后,维基百科上会有关于这一切的条目。

杰里米(01:05:51):
非常感谢安德斯。真的很感激。谢谢你的时间。

安德斯(01:05:55):
谢谢。这太有趣了。

用机器学习工具预测野火

原文:https://towardsdatascience.com/anticipating-wildfires-with-machine-learning-tools-5eb43b450d36?source=collection_archive---------45-----------------------

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

本阔Unsplash 上拍照

使用数据发现理想的野火抑制资源布局

从我的中学科学教室的窗户望出去,似乎地狱已经来到了科罗拉多州博尔德的郊区。烟雾几乎遮住了太阳,直升机和低空飞行的飞机来回嗡嗡作响,为四英里峡谷大火运送水和阻燃剂,这打乱了教学计划。这场大火将会烧毁 6181 英亩土地,摧毁 168 所房屋,并造成大约 2 . 17 亿美元的财产损失。

不幸的是,那场火灾如今远非异常。2020 年,美国西部的野火造成了高达 130 亿美元的财产损失,更不用说失去的生命和无数被迫重建的家庭的心痛。

野火不是不可阻挡的力量——是人类的努力阻止了四英里峡谷大火,以及其他许多威胁到我们社区的火灾。灭火最重要的工具之一是了解最危险的区域在哪里,这样我们就可以预先部署消防资源以尽快到达。

在 Metis 提供的数据科学训练营之后,我受到启发,创建了一个分类工具,可以帮助人类更好地部署消防资源。我想用我的技能来解决这个多年来一直是我生活一部分的问题。

科学背景

为了理解这个问题,我们不得不转向研究野火地理分布的领域。当我去大学获得环境科学学位时,我学到了这个领域的基础知识,当谈到理解火灾风险时,有三个主要的考虑因素:燃料、气候和地形。

燃料是一个非常明显的例子。在有大量枯木燃烧的地区,火灾更有可能发生,并且可能比其他地区发展得更快。

气候也很晴朗。在湿度低于正常水平或温度高于正常水平的地区,火灾发生的可能性更大,强度也更大。

地形是一个更有趣的变量。上坡时,火灾往往蔓延得更快,在丘陵地区灭火也更困难,这意味着这里的火灾比平坦、更容易到达的地区风险更高。

我想为所有这些特征建立代理,这样我就可以在估计火灾风险时将它们考虑在内。

方法

我在 Kaggle 上找到了一个包含 188 万起地理参照的美国野火的数据集。这将作为我的目标功能。当然,这需要大量的重新格式化,因为它没有提供任何一个没有发生过野火的县的数据,只有现有野火的记录。此外,东部各州的数据有限,迫使我将分析范围缩小到美国西部。我使用 SQLite 导入了这些数据。

至于我的预测器特性,我从多个来源检索数据。我能够从 NOAA 收集气候数据,从 USDA 收集地形数据,从美国林务局收集燃料数据。将这些联系在一起后,我对我在美国西部研究的变量有了一个很好的了解。

我在迭代过程中使用了各种模型,但是我发现的最强大的模型是 scikit-learn 包中的 Extra Trees 分类器。该算法是随机森林的一种变体,旨在通过随机改变每个决策树中每个节点的截止点来进一步减少方差。关于额外树算法的更多信息,我推荐这篇文章

我希望构建的这个分类器工具最重要的一个方面是它的灵活性。我希望用户能够提高或降低阈值,当它来到什么样的火灾规模,他们想查明。这是因为不同的灭火工具有不同的可用性,因此最适合不同的严重程度。在部署消防队时,检查所有预计会发生的小型、中型和大型火灾是有意义的。然而,当分配更大、更昂贵的资源,如飞机和直升机时,用户应该能够将结果缩小到更小、更严重的火灾范围。

因此,我需要内置一个动态工具来防止阶级失衡。当用户仅寻找最大的火灾时,这些火灾可能仅包括模型被训练的观察总数的百分之几。为了保持性能,我需要确保有足够的来自正面类的例子供模型使用。通过在模型的每次预测运行期间检查不平衡,我能够保持比在查看非常大的火灾时更高的性能。

一旦我确信已经充分调优了我的模型的超参数,并在不同的截止点进行了测试,我就继续进行部署。我希望这个工具对理论用户有用,所以我决定使用 Streamlit 在线托管它。

Streamlit 是一个伟大而简单的工具,允许在 web 浏览器上托管 python 代码。我强烈推荐它给那些想轻松部署模型的人。如果你想找到更多关于如何实现简化部署的信息,我推荐他们的优秀指南

结果

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

这里我们可以看到一个已部署工具的示例。用户可以选择在即将到来的火灾季节预计燃烧的县的给定百分比的分界点,然后查看预计达到或超过该阈值的红色县的结果。

下面,度量向用户显示了工具的准确度和精确度。精确度从 0.88 到 0.83 不等,而回忆变化更大,从 0.93 到 0.29 不等。度量标准取决于用户选择的截止点。随着阈值火大小的增加,精确度提高,回忆变差。

结论

这个工具超出了我的预期,当与基本的气候和地形测量结合使用时,一个有很多洞和间隙的静态数据集可以完成什么。当涉及到火灾范围和严重程度时,我很想看看这个模型如何处理更细粒度的空间信息和更多的数据。

如果你想看看这个项目的精髓,就去我的 GitHub 吧,在那里你可以看到这个项目道路上的每一个弯道。感谢您的阅读,我希望您离开时能对自然的力量有一个新的认识,以及我们使用这些工具理解它的能力。

反模式和公司中过时的思维模式

原文:https://towardsdatascience.com/antipatterns-and-obsolete-mindset-in-corporations-74540f128bc0?source=collection_archive---------26-----------------------

为什么很多数据项目会失败甚至无法启动?

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

Gian D. 在 Unsplash 上拍摄的照片

许多人将数据科学计划和人工智能的先进应用视为一场引领文化变革的运动。但是这种转变的结果是今天已经存在的数字社会。生活在一起自然会受到这些数字创新的影响,有针对性的数据分析甚至可以颠覆整个行业。在快速变化的时代,那些害怕变化的人也在大声疾呼。与此同时,由于数据隐私不足而可能出现的数据滥用甚至不是最大的社会问题。许多人害怕在数字社会中失去一席之地。在创新中成长起来的数字原住民比那些在某个时候相信即使没有深入的技术技能也能拥有职业未来的人更具适应性。[1]

在这种背景下,数据科学家有时也有打破公司旧思维模式的任务。他们必须将变化视为一个机会,以便将自己置于从数据中产生新知识的位置。

矛盾的是,因为安全考虑而拒绝改变会导致完全相反的结果。那些跟不上时代的人冒着生命危险。没有“大到不能倒”这种东西。教授主导的课程,如成功的关键商业技能,用网飞和百视达这样的案例研究来说明,领先公司可能会因为错误的战略而很快被赶下台。[2]

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

乔恩·泰森在 Unsplash 上的照片

公司中的反模式

反模式是导致与期望状态相反的行为模式。公司中的沟通努力和官僚作风随着员工数量的增加而增加。他们用自己的公司政治来阻碍自己管理有价值的数据项目。众所周知,大公司不如小公司灵活。缺乏灵活性使得公司很难对新趋势做出反应。当新技术出现时,咨询公司的顾问似乎只是在复制标准的通用幻灯片。

经验可能不是每个人都有,但在许多数据科学团体的网络中,不满意在更大的公司工作的人越来越多。

在下文中,我描述了一些可能导致数据项目失败的心态。它们都有一个共同点:它们可以通过领导和建立一种替代的企业文化来改变。

领域专长的贬值

有时,公司会有一种误解,认为数据科学是一个纯粹的技术话题。输入数据,运行算法,得到结果,每个人都很高兴。

我们假设一家公司雇佣了一个顶尖的数据团队。管理层期待新员工在如何通过数据分析为公司带来新价值方面创造奇迹。数据科学家得到他们想要的一切:顶级设备和访问他们需要的所有数据。毕竟这种做法也是本书推荐的。

在数据科学家旁边的办公室里,坐着一位领域专家。这位所谓的领域专家近年来因指出各种可能让一些想法逐渐消失的细节而惹恼了同事。他没有被提名为项目组成员,因为人们觉得他持续的怀疑只会让其他项目成员感到不安。不给这些专家他所需要的关注是一个很大的错误。

领域专家应该总是参与进来。越过用户工作就像在未知的领域盲目飞行。坠毁的风险很高,因为即使是最稳定的飞机也无法在无地图的岩石上生存。

悲观

在企业中,有许多影响者喜欢对数据项目持悲观态度。数据科学或大数据是法律顾问、安全专家、记者等末日预言者的天堂。有无数的陷阱和问题可以指出。语句开始如下。不管怎样,这是行不通的,因为…

  • 一切都太不确定了。
  • 数据可能会丢失。
  • 一切都是炒作,反正又会过去的。
  • 顾客和员工根本不想要改变。
  • 管理层没有足够的能力来迎接挑战。

恐惧文化

我们经常在学校学到恐惧文化。犯错的人受到惩罚,上级利用他们的权力地位来维护他们的权威。员工受到恐吓,并被期望遵循指示,而不是做出独立的决定。

这种心态对任何创意环境都是毒药。生活在这种文化中的公司将无法招募到向数据驱动型企业转变所必需的人才。所谓的高潜力通常可以选择他们的雇主,相应地很少人会进入“石器时代”的工作文化。有恐惧文化的公司也会伤害自己,因为好员工会再次离开这样的公司。

“一直都是这样”

经历过许多变化的人也知道,并不是所有的员工都能从变化中受益。年纪较大的员工尤其担心他们会因变革而失败。如果变革没有得到很好的沟通,员工权益团体可能会提出抗议。在大多数情况下,论点是公司的现状是好的,变化会危及它。

很多时候,管理者被理解为只管理资源的人。但是行政管理是不够的。要克服对变化的恐惧,领导力是必不可少的。领导者必须向员工传达,每个人都将从变革中受益。

变革对于公司的长期生存至关重要。你能冒的最大风险是抵制总体变化。

结论

数据驱动的应用正在改变我们的工作方式。拒绝接受这一趋势的后果就好像一家公司在 20 世纪 90 年代拒绝互联网一样。对于一个成功的数据战略,公司的心态必须是正确的。如果没有愿景和改变的勇气,即使有最好的工具和最聪明的数据科学家,计划也会失败。

参考

[1] Papp,Weidinger,Meir-Huber,Ortner,Langs,Wazir,数据科学(2019),HANSER

[2]m . c .康纳,《成功的关键商业技能》(2013),教学公司

任何人都可以使用机器学习构建生产就绪的 SaaS 应用程序|将 ML 带入生活

原文:https://towardsdatascience.com/anyone-can-build-production-ready-saas-application-with-machine-learning-bring-ml-to-life-af04efec1d37?source=collection_archive---------17-----------------------

使用所有必要的工具和框架,通过机器学习构建您的 SaaS 应用程序。这比你想象的要容易!

在我的职业生涯中,我构建了不同的软件即服务(SaaS)应用程序。我最近的一个 SaaS 产品是 社交形象 AI 。作为 #buildinpublic 的一部分,我想向 case 展示我用于该产品的技术堆栈。它是各种技术栈的组合,包括机器学习。在我的不同产品中多次尝试后,我想出了这个堆栈。在这篇文章中,我将谈论我所使用的技术堆栈。所以这可以帮助你创造你的产品。

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

从 socialimageai.com 创建的图像

你从哪里开始?这是你以前没有做过任何产品时通常会遇到的第一个问题。最近无代码平台的激增正在改变整个格局。然而,在尝试了不同的无代码产品后,我觉得没有一个能满足我的所有需求,而且它也没有市场上销售的那么灵活。

当然,在你生产任何产品之前,你需要对你计划生产的产品有一个概念。我将带你通过人工智能的社会形象镜头。下面是开发 web 应用程序的不同部分。

  1. 前端
  2. 前端部署
  3. 后端
  4. 后端部署
  5. 支付网关
  6. 证明
  7. 模型培训/调整包
  8. 模型部署
  9. 将模型结果集成到应用程序中

这可能看起来很多。但是大部分都是非常标准的建筑。我将一个一个地走过它。

前端(反应)

作为 python 的拥护者,我尝试过不同的前端框架,比如 Flask、HTML、PHP、Django 等。毫无疑问,reactjs 是最好的。作为一名 ML 工程师,你可能会想多学一门语言?因为您精通 python,所以您希望用 python 构建所有东西,并使用像 Django 或 Flask 这样的框架。但是这些框架只在一定程度上适用于 web 应用程序。

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

React 前端文件夹结构

react 的一个相当大的优势是社区的力量。许多非代码平台可以使用 react 为内部页面创建不同的组件,并将它们包含在您的应用程序中。此外,大量不同的模板可用于启动您的前端。所以不需要从头开始。

前端部署

一个常见的问题是如何部署。但在我看来,最具挑战性的问题是如何使用 CI/CD 以更便宜的方式部署它。您可能想要可扩展的服务和最少的停机时间。

在尝试了 render、Heroku 和其他服务之后,我觉得托管您的应用程序的最佳和最简单的方式是通过 AWS Amplify。是的,使用 AWS 可能有点奇怪,这项服务已经存在一段时间了。但是用 AWS amplify 部署一个网站实在是太容易了。

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

AWS 放大器

尤其是有了 react,vuejs,gatsby,或者任何其他主要的 java script 应用都可以轻松托管。一些优点是

  1. 轻松添加免费 SSL 证书
  2. 内置 CI/CD 管道。从您的代码库中推送
  3. 添加开发分支
  4. 创建拉式请求

最好的是,它是无服务器的,定价几乎等于静态网站托管。因此,今天就为您的 SaaS 应用程序试用 aws amplify 吧。

后端

如果您从事过任何机器学习(ML)应用程序,您可能会对 python 很熟悉。当您为服务器端选择 python 时,您有一些优势。您可以高效地为您的 ML 应用程序执行任何数据转换。此外,你有一些选择

  1. 无服务器
    • AWS 圣杯
      -使用 Lambda 的无服务器
  2. 服务器
    -烧瓶
    • Django
    • FastAPI

一旦为服务器端应用选择了 python,就需要决定是使用 FastAPI 还是 Flask。FastAPI 是一个快速发展的框架,有很多好处。不过 Flask 还是比较成熟的,有了合适的文件夹结构就可以轻松维护。如何构建 Flask 应用程序也很重要。您可以将所有的密钥和配置分组到一个文件中,以便于更新。

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

烧瓶文件夹结构

后端部署

与前端类似,我们需要在可伸缩的环境中部署后端。说到后端,有很多选择。

  1. 使用 Lambda 的无服务器部署
  2. AWS 弹性豆茎展开
  3. 渲染或 Heroku 部署

当然,无服务器的优势在于维护成本低,服务器成本低。然而,在大多数情况下,对于一个应用程序,我们可能需要一个服务器;否则,它需要一些时间来设置通过无服务器。

Elastic beanstalk 可用于以可伸缩的方式部署您的应用程序。所有你需要的是一个配置文件,并做 eb 初始化。该命令将引导您完成要执行的步骤。使用 beanstalk 的一个优点和缺点是使用负载平衡器。这是增加成本的一个原因,但它可以防止或处理应用程序中任何看不见的峰值。我们可以在没有负载均衡器的情况下使用它,然后我们就错过了免费证书的好处,并涉及到其他配置。

弹性豆茎的另一种方法是使用 EC2 或 AWS Lightsail 机器并执行您的配置。这里我们需要一个 apache web 服务器,并使用 LetsEncrypt 创建一个证书。配置并不庞大;然而,它涉及一些设置工作。

Render 或 Heroku 选项托管 flask 应用程序更便宜。它还提供免费的 SSL 证书。然而,如果您的整个堆栈是 AWS 或任何云提供商,我会建议使用相同的提供商来减少一些延迟。

支付网关

我们中的许多人需要一个支付网关,我们中的大多数人都知道 stripe。Stripe 是您可以使用的最佳支付网关。直接用条纹的话便宜。最重要的是,当您没有任何身份验证时,它更容易集成。如果你有多个计划,就有点复杂了。

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

条带订阅

几个服务包装了 stripe,并提供了一个极其简单的集成选项,如 Gumroad ,或者查看这篇文章了解更多细节。

证明

如果你想开发一个带有不同支付选项的简化登录选项的产品,认证曾经是一个很大的难题。然而,最近有大量的服务简化了这种方法。使用 AWS Amplify 的一个好处是,您可以通过一行命令行为托管 UI 添加身份验证。

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

添加身份验证

当你使用 AWS Amplify 时,它会在后台使用 AWS Cognito 服务。不过来自 AWS 的登录设计并不是很棒。所以我们可能需要为我们的应用程序定制它。如果是 react 前端,我们需要更新 react 代码。社交图像 AI 在后端使用 Cognito 使用基于 react 的登录屏幕。如果你是新手,Cognito 几乎是免费的(高达 50k MAUs)。其他选项有使用 okta、Firebase Auth、Auth0 等。大多数认证服务将满足基本需求。由于通过 amplify 添加 Cognito 更加简单,我们将使用它作为身份验证提供者。

模型训练/调谐包

模型可能是应用程序的大脑。通常你需要训练或者微调一个模型。最近几天,大多数模特都不是从零开始训练的。微调的话,我一般更倾向于 AWS sagemaker 笔记本,导入之前的 NLP/vision 模型。我是 PyTorch 的忠实粉丝,所以我的大部分模特都在 PyTorch。

假设您要微调一个 BERT 模型。以下是清单

  1. 你有数据集可以微调吗?
  2. 数据集是否足够大,可以进行微调?
  3. 可以下载预先训练好的 BERT 模型吗?
  4. 你能创建微调代码和转换吗?
  5. 你能成功地微调模型吗?

如果你需要一些微调方面的帮助,请查看文章。

车型部署

你不可能拥有一个没有连接的大脑。在这一部分,大脑与身体相连。在本节中,我们将部署模型。同样,sagemaker 是部署模型的可伸缩方式。下面是部署的清单

  1. 你对模特的表现满意吗?
  2. 模型有多大?
  3. 模型的可接受延迟是多少?
  4. 推理需要 GPU 的吗?
  5. 您希望模型作为端点还是批处理?
  6. 如何在应用程序中使用模型?
  7. 你有多种型号吗?
  8. 如果有多个模型,如何在单个服务器上部署它们?

有时,根据型号的不同,这些步骤可能需要很长时间。由于重试次数不同。这里有一篇文章展示了如何在 AWS sagemaker 中部署一个模型。

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

多模式部署

如果模型训练代码是按照 sagemaker 函数构建的,那么部署它将会更容易。否则,需要创建模型部署结构,然后进行部署。

将模型结果整合到应用中

如果您的服务器端是 python 框架(FastAPI 或 Flask),并且在 AWS 中,调用该模型可能很容易。下面是一个调用总结模型的示例代码。

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

正在获取 Sagemaker 数据

如果模型会被 Python 之外的人消费,那么最好集成 API gateway 和 lambda 函数。作为第一步,您将在 lambda 函数中编写类似的代码,然后将从 API 网关调用 lambda 函数。

下一步是什么?

现在想想你的想法,开始创造你的产品。如果你想详细了解,请订阅以下书籍/教程。

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

从教程中学习—从 socialimageai.com 创建

目前我正在写一本书和视频教程,里面有从头开始创建 SaaS 产品所需的所有代码。它将引导您通过机器学习来构建产品的构建模块。如果你有兴趣,请点击 订阅此处 获取相关通知。

获取代码

请订阅我的 简讯 获取我的文章和其他更新的免费工作代码。

服用类固醇的阿帕奇气流 2.0——EKS·库伯内特和 MWAA

原文:https://towardsdatascience.com/apache-airflow-2-0-on-steroids-eks-kubernetes-mwaa-ec341d52fe2d?source=collection_archive---------13-----------------------

这篇文章将告诉我们如何在 EKS 自动气象站上运行气流 2.0,以及它在新 MWAA 上的好处。它还将把它与原生的 Kubernetes executor 联系起来,并告诉我们它与它有什么不同,类似的还有 Fargate vs EKS 的节点管理 EC2。

上个月,2021 年 5 月,AWS 发布了针对 Apache Airflow (MWAA)的 AWS 托管工作流的更新,其中包括 Airflow 2.0,这让我想到,当 AWS 以最新的稳定版本提供托管服务,价格并不昂贵,更不用说我们可以从 AWS 获得的支持(以前 MWAA 有一个旧的 Airflow 版本,不支持云形成)时,为什么现在有人要自己管理 Airflow(典型的云困境)。但我担心自己处于尚未经过实战检验的技术的前沿。另一方面,AWS 几个月前发布了一个关于 EKS 气流的版本,我们都知道 K8s 的可扩展性,所以我想尝试一下。我将站在技术的前沿,但至少它不会是一个黑匣子。

假设我们都知道 Kubernetes 的组成部分以及什么是舵轮图,我将这篇文章分成两个子主题,即:

  1. 在 EKS 和 MWAA 部署 air flow 2.0 &
  2. 添加 Dag、变量、插件、连接等

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

来源:pixabay

在 EKS 和 MWAA 部署 Airflow 2.0

简言之,K8s 中的节点组可以使用 AWS Fargate 或节点管理的 EC2 来创建。两者都可以横向扩展,但主要区别是,Fargate AWS 将管理工作节点扩展及其 AMI 配置,而在节点管理中,我们必须同时做这两件事,但它的好处是相当可观的。由于 Fargate 不支持 daemonsets,使用受管节点组,我们不必将 Dynatrace、Splunk 或 Datadog 等监控服务的代理放在 sidecar 容器中,因此更加可靠。此外,Fargate 不缓存容器图像,因此启动时间会更长。根据我的经验,Fargate 更适合基于气流的工作流,其中大多数是批处理,而节点管理更适合与流相关的模式。

先决条件

  • 在您的角色需要访问的地方,设置了一个基于 Linux 的环境。我正在使用 Ubuntu windows 应用程序。

创建集群

在创建集群之前,我们需要安装 kubectl 和 eksctl。eksctl 将创建和管理集群,而 kubectl 将与集群 API 服务器通信,以检索所需的节点、pod 和名称空间。幸运的是,二进制文件对他们两个都是可用的。

curl -o kubectl [https://amazon-eks.s3.us-west-2.amazonaws.com/1.20.4/2021-04-12/bin/linux/amd64/kubectl](https://amazon-eks.s3.us-west-2.amazonaws.com/1.20.4/2021-04-12/bin/linux/amd64/kubectl)chmod +x ./kubectlmkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

对于 eksctl 来说,

curl — silent — location “[https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname](https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname) -s)_amd64.tar.gz” | tar xz -C /tmpsudo mv /tmp/eksctl /usr/local/bin

现在让我们使用 Fargate 创建一个 k8 集群,命令如下。这大约需要 15–20 分钟,用户可以查看有关将要创建的资源(Vpc、子网等)的云信息。

eksctl create cluster \
 — name test-cluster \
 — region ap-southeast-2 \
 — fargate

它会显示如下内容:


【】EKS 集群
*ap-southeast-2* 【地区】中的“测试集群”准备就绪

接下来,让我们创建一个节点管理的集群,区别就在这里。我们需要首先在本地创建将在 EC2 连接中使用的 pub 私有密钥对。

aws ec2 create-key-pair — region us-west-2 — key-name myKeyPaireksctl create cluster \
 — name eksctl-airflow-cluster \
 — region ap-southeast-2 \
 — with-oidc \
 — ssh-access \
 — ssh-public-key <your-key> \
 — managed

您可以在 CFN 中查看有关创建的节点组的信息。

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

作者图片

通过运行以下命令,我们可以确认安装,它应该会显示群集中存在的节点:

kubectl get nodes -o wide

接下来,我们需要更新 kubeconfig,以便无论何时运行 kubectl,它都应该指向正确的集群。

aws eks — region ap-southeast-2 update-kubeconfig — name eksctl-airflow-cluster

接下来,创建名称空间,以便我们可以在其中部署气流。它只是一种抽象,将相关资源保存在一个地方,就像一个堆栈一样。一个集群可以有许多可以相互通信的名称空间。

kubectl create namespace airflow

在命名空间中创建气流之前,我们需要安装 helm

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

下面将创建气流资源,完成后你可以在 localhost:8080 查看。我们可以给任何你想要的版本名。

helm repo add airflow-stable [https://airflow-helm.github.io/charts](https://airflow-helm.github.io/charts)
helm repo updatehelm install RELEASE_NAME airflow-stable/airflow 
 — namespace airflow \
 — version 8.3.0

你可以在 https://github.com/airflow-helm/charts/releases 找到对应于最新气流发布的其他图表版本。

在检查 GUI 之前,我们需要使用以下命令将 8080 端口从 pod 转发到本地主机:

export POD_NAME=$(kubectl get pods — namespace NAMESPACE -l “component=web,app=airflow” -o jsonpath=”{.items[0].metadata.name}”)
kubectl port-forward — namespace NAMESPACE $POD_NAME 8080:8080

添加 Dag、变量、插件、连接等

现在有趣的部分来了,舵图给出了 values.yml,其中提到了所有气流配置、变量、dagbag 文件夹等,这有助于更新实际气流。因此,现在剩下的唯一事情就是给它所需的值,并使用下面的命令进行更新:

helm upgrade airflow airflow-stable/airflow — namespace airflow — version 8.3.0 — values values.yml — debug

下面是 values.yml 的一部分,我们可以在其中指定需要安装的 python 模块

airflow:
    extraPipPackages: 
        — “pandas”
        — “awscli”

类似地,下面是 values.yml 的一部分,其中指定了我们在部署 efs 后获得的持久卷和声明。

airflow:
    extraVolumeMounts:
        — name: airflow-efs-dag
          mountPath: /opt/efs/

    extraVolumes:
        — name: airflow-efs-dag
          persistentVolumeClaim:
              claimName: efs-storage-claim

下面是它的大袋子:

dags:
    path: /opt/efs/dags

有趣的是, MWAA 也有类似的设置,它要求我们在云信息模板中提及所有这些细节。为了添加一个气流变量,MWAA 使用了环境变量,为了更新 env,我们需要在 CFN 中提到它。由于 AWS SSM 是 MWAA 的后端,我们可以指定包含 conn_string 的连接的键名,MWAA 将使用键名选择它并将其部署在 Airflow 中。至于 DAG、插件文件夹和 requirements.txt,我们需要给它一个 s3 文件夹,但问题是它们都应该在同一个桶中。对任何刚开始的人来说都不是瓶颈。MWAA 在后端使用 RDS 或 Aurora,但它不会让用户随意摆弄。它只使用芹菜执行器,并根据不同的机器类型提供三种类型的集群。总之,它只能支持 1000 个 Dag 运行。因此,MWAA 对中小企业有利,但对大公司不利。在撰写本文时,使用 MWAA 的一个缺点是,即使您通过 CFN 更新气流变量,调度程序也会在部署时停止,并需要大约 10-20 分钟才能运行。因此,需要考虑一个适当的发布策略,即每当有新的构建要部署时,不运行或运行较少的 Dag。EKS 也需要几分钟来完成头盔升级,但这比 MWAA 更透明,因为它提供了日志。

此外,对于 EKS,我们需要自己集成 EFS 和 RDS,这应该不是什么大问题,然后任何 CICD 都可以将更新的 Dag 从代码库推送到 EFS。

气流舵的 values . yml:https://github . com/air flow-helm/charts/blob/main/charts/air flow/values . YAML

EKS &库伯内特的遗嘱执行人

在 Airflow 中使用 k8 executor 时,每个任务都在 pod 上运行,而 airflow 可以在单独的机器上运行。然而,在 EKS,airflow 的所有部分,即 airflow db、调度程序等都在单独的 pod 中运行,因此具有更高的 HA 和可靠性。

结论

如果您已经完成了,那么恭喜您,您已经学会了如何使用 fargate 和节点管理 ec2 在 EKS 上部署 Airflow 2.0。我们还学习了如何定制 values.yml,它将具有气流配置和其他规定,如指定变量、连接等。在我看来,一切都将在不久的将来成为 kubernetes,我们拥有将存储与计算分离的优势,可以随时利用潜在的无限量计算。这完全取决于您在理解和实现数据工程前景的旅程中处于哪个阶段。

Apache air flow——编写 Dag 的新方法

原文:https://towardsdatascience.com/apache-airflow-a-new-way-to-write-dags-240a93c52e1a?source=collection_archive---------16-----------------------

扩展数据管道的 ETL 框架

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

作者图片

问候数据从业者。
现在是 2021 年,数据工程是新的数据科学。
在数据工程领域花费的时间和投资
都有所增加。

您有多少次构建模型或执行分析时才意识到您使用的数据有问题?—如果你已经在这个行业工作了一段时间,这种情况会很常见。

为了消除我们的疑虑,我们经常需要咨询数据工程师来验证我们数据的完整性。如果我们自己是数据工程师,我们将不得不钻研数据管道来理解我们数据的 ETL。

随着数据行业的成熟,数据管道和基础设施越来越受到重视。这就是今天文章的内容。

阿帕奇气流

Apache Airflow 是我们用来管理数据管道的最流行的工作流管理系统之一。crontabs 被用作管道调度程序的时代已经一去不复返了。

Apache Airflow 是批处理管道的最佳解决方案之一。如果您的公司非常重视数据,那么采用气流可以为未来的项目带来巨大的好处。像脸书Airbnb 这样的科技巨头在他们的日常数据任务中使用 Apache Airflow。

先决条件

这是一篇关于在 Apache Airflow 上构建框架的文章。
因此,我们假设你已经了解气流的基本概念,比如——

  • 熟练的技艺
  • 经营者

如果你不熟悉,可以通读一下我做的关于 Apache 气流基础的综合指南。

不言而喻,你了解基本的 Python

gif 作者reactiongifs.com

框架

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

凯利·西克玛在 Unsplash 上拍摄的照片

首先,你可能会问— 为什么我们甚至需要一个框架?

有了框架,我们就可以建立结构更好的管道。更容易维护刻度。更不用说它还符合业务规则编程惯例

当你开始拥有大量的管道时,框架可以节省你部署管道的时间,让你可以集中精力为管道开发代码。

这是阿帕奇气流中的管道是如何部署的—

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

作者图片

  1. 在 Airflow 的 DAG 文件夹中创建了一个 DAG.py 文件,其中包含操作符的导入、DAG 配置(如时间表和 DAG 名称),并定义了任务的依赖关系和顺序。
  2. 操作员是在气流中的操作员文件夹中创建的。它们包含具有执行任务逻辑的 Python 类。它们在 DAG.py 文件中被调用。

这是一个示例 DAG 和运算符—

DAG:

操作员:

看起来很整洁。然而,当管道中有多个任务时,事情就变得混乱了。每个任务需要不同的操作员,它们都需要不同的变量。

你的 DAG.py 文件很快就会被一行行不可读的代码淹没。
文件路径、SQL 查询,甚至随机变量,当它们开始堆积起来时,读者会感到困惑。

让我们使用一个框架来部署我们的管道。

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

作者图片

  1. 不是. py 文件,而是为每个 DAG 创建一个文件夹。文件夹里面,一个**。创建 py 文件**、 **task_config.json、**和 job_config.json 。的。py 文件是一个调用 create_dag_operator.py 的单行程序。
  2. create_dag_operator.py 包含了设计我们管道的任务流的所有逻辑。它还从作业和任务配置文件中提取所有操作员所需的变量。在任务流构建期间,它从这里导入所有其他定制操作符。

下面是管道是如何与框架一起部署的—

任务配置:

作业配置:

DAG:

操作员:

从这里,你可以清楚地看到 CreateDagOperator 做了所有繁重的工作。观察 DAG 文件有多简单。

配置文件是简单的 python 字典。作业配置主要由 DAG 配置组成,如名称、计划和开始日期。任务配置由任务配置和实例变量组成,比如任务名称和任何需要通过被调用的操作符传递的内容。

在 **CreateDagOperator 中,**定义了任务流依赖、DAG 创建和任务定义。所有必需的变量都从配置文件中提取出来,并在这里进行实例化。

对于你的团队成员来说,这个框架让事情变得整洁和简单。他们确切地知道他们必须在配置文件中输入什么,同时只在 CreateDagOperator 中开发逻辑。

当然,这只是一个基本管道的例子。对于特殊的作业和定制的任务流,只需在 CreateDagOperator 中用创建一个新的静态方法,并在 DAG 文件中调用它。

这是框架下你的文件夹结构应该是什么样子的—

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

作者图片

在框架上扩展,您可以在 sample_dag 文件夹中创建文件夹用于不同的目的。例如,如果您的管道以某种方式涉及。csv 文件,您可以创建一个名为“resources”的文件夹,并将您的。csv 文件放在那里。然后,您可以从 CreateDagOperator 中调用它。然后,您可以将配置文件放在名为“config”的文件夹中。

这提供了一种更加系统化的方式来组织你的文件
我今天在这里提供的是框架的基本结构
完全取决于你在上面展开,这就是乐趣发挥的地方,不是吗?

Gif by Memecandy

这里有一个文件夹结构的实际例子—

https://github.com/nickefy/Apache-Airflow---A-New-Way-to-Write-DAGs

摘要

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

Jason StrullUnsplash 上拍摄的照片

如果你已经走了这么远,恭喜你。你一定对数据非常认真。

你应该担心——数据将很快成为我们经济的燃料。

在这篇文章中,你学到了—

  • 阿帕奇气流的基本结构
  • 在 Apache Airflow 上构建一个基本框架

像往常一样,我引用一句话作为结束。

每个公司的未来都有大数据,每个公司最终都会从事数据业务。——托马斯·h·达文波特 ,美国学者兼作者

订阅我的时事通讯,保持联系。

也可以通过 我的链接 注册一个中等会员来支持我。你将能够从我和其他不可思议的作家那里读到无限量的故事!

我正在撰写更多关于数据行业的故事、文章和指南。你绝对可以期待更多这样的帖子。与此同时,你可以随时查看我的其他 文章 来暂时填补你对数据的渴望。

感谢 的阅读!如果你想和我联系,请随时通过 nickmydata@gmail.com 联系我或者我的 LinkedIn 个人资料 。你也可以在我的Github中查看之前写的代码。

资源下载链接为: https://pan.quark.cn/s/f1ead55c4354 以下标题“H5页面模板源码,很不错的例子”暗示了我们讨论的主题是关于HTML5页面模板的源代码。HTML5是现代网页开发的核心技术,它提供了丰富的功能和元素,让开发者能够构建出更具交互性、动态性和响应式的网页。“很不错的例子”表明这些源码不仅具有实用性,还具备一定的教学意义,既可以作为项目开发的直接素材,也能供学习参考。 在描述“H5页面模板源码,非常酷炫的HTML5模板,可以直接使用,也可以参考学习”中,“非常酷炫”意味着这些模板可能融合了诸多高级特性,例如动画效果、媒体元素的运用以及响应式设计等,这些都是HTML5技术的优势所在。可以直接使用表明用户无需从零开始编写代码,能迅速搭建出吸引人的网页。同时,这些模板也适合学习,用户通过查看源代码可以了解特定设计和功能的实现方式,从而提升自身的HTML5开发能力。 标签“H5 手机网页 H5源代码 手机html”进一步明确了主题。“H5”是HTML5的简称,“手机网页”和“手机html”则强调这些模板是针对移动设备优化的。在如今移动优先的时代,适应各种屏幕尺寸和触摸操作的网页设计极为重要。这表明这些源码很可能是响应式的,能够根据设备自动调整布局,以适配手机、平板电脑等多种设备。 从“压缩包文件的文件名称列表”来看,虽然无法直接从文件名得知具体源码内容,但可以推测这些文件可能包含多种HTML5模板示例。“不错的样子.txt”可能是一个介绍或说明文件,对模板进行简要描述或提供使用指南。而“1-30”这样的命名方式可能意味着有30个不同的模板实例,每个模板对应一个独立文件,涵盖多种设计风格和功能,为学习和实践提供了全面的平台。 总的来说,这个资源集合为HTML5开发者或初学者提供了一套实用且酷炫的移动网页模板源代码。这些模板既可以直接应用于项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值