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

原文:TowardsDataScience

协议:CC BY-NC-SA 4.0

数据讲故事最重要的元素是什么?

原文:https://towardsdatascience.com/what-are-the-most-important-elements-of-data-storytelling-91249c9630ff

当数据科学家分享的见解清晰可行时,他们的工作效率最高。如何实现这一点将取决于您所拥有的数据的特点以及您与之沟通的利益相关方,但是在一些关键领域投入我们的注意力(几乎)总是会有回报的。这里有三个最近的帖子,集中在引人入胜的讲故事的具体元素上——而且做得非常好。

  • 不要让你的仪表盘积满灰尘 。构建数据仪表板需要做大量的工作,但是最终的产品往往令人困惑、笨重且未得到充分利用。玛丽·勒费夫尔认为有效且有用的仪表盘触手可及。她分享了一个基于个人经验的四步框架,该框架将帮助您构建仪表板,准确清晰地讲述数据故事。

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

Unsplash 上的 CHUTTERSNAP 拍照

  • 找到合适的取景是关键 。作为一名教育工作者,亚历杭德罗·罗德里格斯知道,如果你明智地选择沟通方式,即使是最复杂的概念也可以变得触手可及。这篇文章表面上是对混淆矩阵和分类度量的介绍,但它也是一个关于一个简单、精心选择的例子的大师班。(这里是:毒蘑菇!)
  • 色彩的至关重要 。数据可视化就是让大量信息变得可访问和可解释。它的成功取决于一系列设计决策,有小有大;Weronika Gawarska-Tywonek 的优秀初级读本将帮助你了解调色板是如何工作的,以及如何着手选择最适合手头任务的颜色。

我们本周的其他出版亮点远远超出了数据故事——无论你是求职者,经验丰富的 ML 从业者,还是数据变革的倡导者,我们认为你都会在这里找到值得你花时间的东西。

我们希望您喜欢本周在 TDS 上的学习和探索!如果你愿意支持我们作者的工作,考虑成为的媒体会员(这也让你可以使用我们的全部档案)。

直到下一个变量,

TDS 编辑

机器学习和数据科学中最重要的预处理步骤是什么?

原文:https://towardsdatascience.com/what-are-the-most-important-preprocessing-steps-in-machine-learning-and-data-science-a7606d18f32a

数据科学机器学习现在已经成为最新的话题,公司正在寻找数据科学家机器学习工程师来处理他们的数据,并为他们做出重大贡献。每当数据被提供给数据科学家时,他们必须采取正确的步骤来处理这些数据,并确保转换后的数据可以用于最佳地训练各种机器学习模型,同时确保最大的效率。

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

Tobias Fischer 在 Unsplash 上拍摄的照片

人们经常发现,现实世界中存在的数据常常是不完整的不准确的,同时包含许多一些机器学习模型无法处理的异常值,从而导致次优的训练性能。同样重要的是要注意,在将数据提供给机器学习模型之前,必须处理数据中可能存在的重复行或列。解决这些问题以及许多其他问题可能是至关重要的,尤其是当想要提高模型性能和模型的概化能力时。此外,在分类任务的情况下,在感兴趣的输出类别中可能存在类别不平衡。因此,通过创建合成数据点来平衡类也是一个好方法,还有我们将在本文中讨论的其他方法。

采取正确的数据处理步骤可能是一项挑战,尤其是在这一过程可能以多种方式发生的情况下。了解数据处理步骤的适当用法可以帮助数据科学家更好地分析数据,并对数据有一个很好的理解。此外,由于他们的机器学习预测,他们可以帮助公司朝着正确的方向发展。

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

布雷特·乔丹在 Unsplash 上拍摄的照片

现在,让我们回顾一下预处理数据的所有各种可能的方法,并确保提供给模型的数据是完整的、准确的,并且包含最少的异常值。

缺少值

在现实世界中,通常不可能找到完整且没有缺失值或 NaN 值的数据。因此,我们可以删除包含这些缺失值的行,或者进行插补(填充缺失值)以确保 ML 模型处理这些数据。

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

Pierre BaminUnsplash 上拍摄的照片

1.删除缺失值

现在是处理数据中缺失值的时候了。处理数据中缺失值的一种方法是删除那些行,如前所述。假设我们使用的是 python ,这是许多数据科学家在机器学习应用程序中使用的默认语言,让我们看看可以实现这一点的代码。

# Assuming that data is stored in 'df' variable which is mostly used by default. df.isnull()
# This returns a boolean matrix that contains True if there is presence of missing values (NaN) and False otherwise

让我们还考虑我们的数据中存在缺失值(这在大多数真实世界的数据集中是真实的),我们可以删除包含这些值的行,尽管不建议这样做。但是,让我们看看这是如何实现的,以便更好地了解删除缺失值的行(nan)的情况。

df.dropna()
# This removes the rows that contains missing values in the dataframe that is stored as 'df' variable

2.归罪

它是用各种插补策略,如均值中位数模式插补,来替代缺失值的过程。然而,也可以通过基于领域知识给数据赋值来随机进行插补。

同样重要的是要注意,插补也可以基于机器学习预测从已经不包含缺失值的所有剩余特征中执行。通过这种方式,模型学习查找模式,并分别对特征中的未知值进行预测。

下面是一个函数,可用于通过平均值、中间值或众数插补来估算值。请随意看一看。

**def** mean_imputation(data, inplace **=** **False**):
    """
    This function would take the NULL values present in data and replace them with average values of the data respectively.
    """
    data**.**fillna(data**.**mean(), inplace **=** inplace)

**def** median_imputation(data, inplace **=** **False**):
    """
    This function would take the NULL values present in data and replace them with median values in our data respectively.
    """
    data**.**fillna(data**.**median(), inplace **=** inplace)

**def** mode_imputation(data, inplace **=** **False**):
    """
    This function would take the NULL values present in data and replace them with mode values of the given data respectively.
    """
    data**.**fillna(data**.**mode(), inplace **=** inplace)

来源:Predicting-Loan-Default-Using-Machine-Learning/Home Credit Python prediction . ipynb at main suhasmaddali/Predicting-Loan-Default-Using-Machine-Learning(github.com)

代码实际上是从我在 GitHub 上的一个仓库中获取的。你也可以在 GitHub 上关注我,获取我在平台上不断分享的最新项目和见解。

苏哈斯·马达利(苏哈斯·马达利)(github.com)

正如我们之前所讨论的,还可以基于机器学习预测执行插补,这可以产生更稳健的模型和更准确的缺失值插补。

极端值

数据集通常包含离群值或数据点,它们的值与我们的数据中实际预期的值相差甚远。这可能是由于记录数值时的人为错误或记录特征的机器故障。当我们试图评估机器学习的指标,其中一些是均方误差时,数据中异常值的存在可能会显著增加误差。但是这并没有给我们模型性能的最准确的描述。

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

照片由威尔·迈尔斯Unsplash 上拍摄

此外,有许多机器学习模型对数据中的异常值并不稳健。因此,必须采取措施在数据处理阶段将其移除,以便在使用均方差等指标时,我们能够获得模型的真实表示,同时确保模型能够生成最佳预测,而不会出现异常值。

转换数据

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

照片由雅各布·欧文斯Unsplash

在填充缺失值并移除异常值后,下一步将是转换这些数据,以便在机器学习模型上进行训练变得可行。根据数据类型和业务需求,有许多方法可以转换数据。

1。维度缩减

拥有高维数据(更高数量的特征)的一个挫折是有一种现象叫做**“维数灾难”**,增加的特征具有递减的回报。因此,移除那些对模型预测和输出没有显著影响的要素非常重要。降低维度有两个作用:它减少了机器学习模型对数据进行训练的时间,有时还可以从数据中删除离群值。因此,我们应该进行降维,以确保在训练后得到一个更健壮的模型。

有多种方法可以将高维数据简化为低维表示。可以使用的降维技术有主成分分析(PCA)随机邻域嵌入(t-SNE)UMAPs 等。请注意,这些方法中的每一种在引擎盖下都有不同的工作方式,但最终的结果都是减少尺寸。

2.标准化

这也是一个很好的做法,在将数据提供给机器学习模型之前,标准化数据,并确保所有的输入特征都在相同的尺度上。考虑两个特征的例子:身高和体重。让我们考虑我们将要用 ML 算法预测的输出变量是**“户外活动”**。我们知道,身高可以用厘米(cm)来度量,而体重可以用公斤(kg)来度量。我们通常不能比较这两个特征,因为它们不在同一尺度上。但是,如果我们要转换这些特征,使它们代表相同的尺度,这确保了我们可以比较它们,并决定哪个特征对确定一个人的“户外活动”最有影响。

下面是如何在 Python 中实现标准化的代码片段。

# Using the StandardScaler() from Sklearn library
# Divided the data into X_train and X_cvscaler **=** StandardScaler()
scaler**.**fit(X_train)
X_train_standardized **=** scaler**.**transform(X_train)
X_cv_standardized **=** scaler**.**transform(X_cv)

来源:Predicting-Loan-Default-Using-Machine-Learning/Home Credit Python prediction . ipynb at main suhasmaddali/Predicting-Loan-Default-Using-Machine-Learning(github.com)

3.正常化

正如我们在上述案例中所看到的,以不同尺度呈现的数据可能会有问题。还有一个备选策略来处理以不同比例呈现的数据。一种方法是归一化数据,这意味着我们从特定特征的最小值中减去当前值,并将结果除以感兴趣特征的最大值和最小值之间的差。这也是转换数据的有效方法。下面是如何得到一个好主意的等式。

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

作者图片

基于该等式,让我们理解给出的当前值。

Xmin =特征中存在的最小值

Xmax =特征中存在的最大值

Xnorm =作为执行此操作的结果而获得的归一化值。

4.扔掉

重要的是解决数据中存在的影响机器学习模型性能的异常值。减少这些异常值影响的方法之一是根据一个重要特征将数据点划分到不同的箱中。换句话说,它是将广泛的数据集分类成更相似的数据的更小的组。这确保了数据中的异常值对预测的总体影响最小。因此,这也是一种有效的数据转换方式。

5.使聚集

每当我们处理输出或目标变量未知的无监督机器学习时,处理这些数据的一种流行方法是聚类。虽然聚类可以用于无监督的机器学习,但它也可以用于有监督的机器学习。如果我们要根据某个特定的特征对数据进行聚类,我们可以将已经考虑过的数据分组。这种方法还可以转换数据,我们可以更好地从中发现模式。

处理不平衡数据

在机器学习中的大多数时候,在输出中出现事件的可能性很小的地方存在数据。考虑诸如银行业的欺诈检测、营销的实时竞价贷款违约入侵检测之类的例子,其中事件中正面案例的发生与结果相反的可能性相比是有限的。在这种情况下,重要的是处理输出类的这种数据不平衡,以便与其他组相比,没有必要偏向某一组。

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

Elena Mozhvilo 在 Unsplash 上拍摄的照片

有各种算法、策略或技术通常用于处理不平衡数据。让我们看看处理这种不平衡数据的各种方法。

1.欠采样

其工作原理是通过移除多数类中的数据点来减小数据的总体大小,使得多数类和少数类中的数据点总数相同。在这个过程中可以使用各种算法。让我们回顾一下处理这些数据的一些方法。

1a。接近欠采样

该方法的工作原理是考虑多数类和少数类之间的距离,并根据与少数类的最近距离对点进行采样。因此,根据少数群体的规模,我们用于模型预测的数据会有所减少。有各种不同类型的未遂事件算法。它们可以是 NearMiss-1NearMiss-2NearMiss-3 中的任一个,每个在做出考虑特定示例的决定之前以不同的方式考虑点数,等等。有关这种技术的更多信息,请随意参考下面的文章,这篇文章详细介绍了这种技术以及许多其他技术。

不平衡分类的欠采样算法(machinelearningmastery.com)

1b。压缩最近邻规则欠采样

这是一种技术,当数据中的训练点数减少时,模型性能不会降低。开发这种技术主要是因为使用K-最近邻(KNNs) 所带来的内存限制。因此,减少了数据点的总数,从而在使用 KNN 算法进行预测之前需要更少的内存。在我们的案例中,使用这种方法时考虑了少数类和多数类示例,并对它们进行了测试,以了解省略多数类中的点如何导致模型性能的最小降低。

1c。欠采样的 Tomek 链接

这是一种有用的方法,是对上述压缩最近邻方法的修改。它主要计算多数类和少数类之间的欧几里德距离,并找到包含我们考虑的两个类之间最小欧几里德距离的那些 tomek 对。因此,我们只得到那些在多数类和少数类样本之间具有最低欧几里德距离的样本对。有关这种方法的更多信息,请随意访问下面给出的链接,这样您就可以很好地理解各自的主题。

不平衡分类的欠采样算法(machinelearningmastery.com)

虽然欠采样对于减少偏差或类别不平衡可能是一件好事,但它是通过减少训练样本大小来实现的,以确保数据中存在类别平衡。但是我们正在丢失训练数据中的信息。当机器学习模型通过大量训练样本进行训练时,它们将能够很好地进行概括。在我们的例子中,我们正在减少数据的大小,这有时并不是最好的选择。

2.过采样

在过采样的情况下,我们将多数类作为我们的基础,然后我们尝试增加来自少数类的数据点的总数,以便最终结果是多数类和少数类的数量相等。关于如何做到这一点,有各种各样的方法和途径,其中最流行的是击打随机抽样。让我们复习一下这些方法,以便对它们有一个详细的了解。

2a。重击

SMOTE 代表合成少数过采样技术,可用于对数据进行过采样,并创建相同数量的多数和少数类。它根据 k-最近邻算法的原理工作,以便创建合成数据点。数据点被转换到特征空间,并且找到它们的最近邻居。他们计算两个样本点之间的距离,并在连接这两个点的线段中找到合成点,以获得数据中的附加点。因此,这会导致数据过采样,并确保多数类和少数类的数量相等。

2b。随意采样

这是一种基于获取少数类并复制这些数据点以获得具有相同数量的多数类和少数类的数据来平衡输出类的技术。这种方法的一个缺点是,由于复制或拷贝相同的信息来创建相同数量的类,ML 模型可能倾向于过度拟合数据。

现在让我们看一下代码,根据需要,我们可以使用过采样或欠采样等技术。下面是我的信用贷款违约预测知识库中的代码片段的链接。

**import** imblearn 
**from** imblearn.over_sampling **import** RandomOverSampler 
**from** imblearn.under_sampling **import** TomekLinks 
**from** imblearn.over_sampling **import** SMOTE 
**from** imblearn.under_sampling **import** NearMiss

**‘imb learn’**是一个可用于过采样或欠采样的库。现在让我们来看一下可以用来修改数据的函数。

**def** sampler_function(data_x, data_y, sampler **=** 0, random_state **=** 101):

    **if** sampler **==** 0:
        sampler **=** RandomOverSampler(random_state **=** random_state)
    **elif** sampler **==** 1:
        sampler **=** TomekLinks()
    **elif** sampler **==** 2:
        sampler **=** SMOTE()
    **else**:
        sampler **=** NearMiss()
    X_transformed, y_transformed **=** sampler**.**fit_resample(data_x, data_y)

    print('Original dataset shape:', Counter(data_y))
    print('Resample dataset shape:', Counter(y_transformed))

    **return** X_transformed, y_transformed

来源:Predicting-Loan-Default-Using-Machine-Learning/Home Credit Python prediction . ipynb at main suhasmaddali/Predicting-Loan-Default-Using-Machine-Learning(github.com)

在上面的代码片段中,我们定义了一个函数,它考虑了输入数据( data_x )、输出数据( data_y )以及所使用的采样技术(采样器)和一个随机状态。根据“采样器”的值,可以使用不同的采样技术来确定过采样或欠采样。选择了采样器之后,我们将数据拟合并重新采样,如上面的代码片段所示,最后我们将得到相同数量的类。

结论

我们已经看到了在将数据提供给 ML 模型之前执行数据预处理和数据转换的各种方法。请注意,这些是预处理数据的一些最佳方法,还可能有本文中没有介绍的其他技术。但是这些技术应该给出足够的基线,以确保人们非常详细地了解预处理的步骤。

以下是您联系我或查看我作品的方式。谢了。

GitHub: 苏哈斯马达利(Suhas Maddali)(github.com)

LinkedIn: (1)苏哈斯·马达利,东北大学,数据科学| LinkedIn

中等: 苏哈斯·马达利—中等

在多伦多拿到停车罚单的几率有多大?

原文:https://towardsdatascience.com/what-are-the-odds-of-getting-a-parking-ticket-in-toronto-1f090dd0c608

探索性数据分析和简单的统计模型

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

迈克尔·福塞特Unsplash 上拍摄的照片

执行探索性数据分析(EDA)和构建统计模型是数据科学家的基本技能。在这篇文章中,我将探索多伦多停车罚单的数据集。我将从时间和地点的角度分析和可视化模式。在帖子的后半部分,我将提出一个简单的模型来评估在特定时间和地点获得停车罚单的机会。

这篇文章旨在向初级数据科学家展示如何探索数据集和应用贝叶斯思维。它还介绍了一些有趣的见解,关于多伦多发出的停车罚单。

我使用的公开数据可以在多伦多公开数据获得。数据集描述称,“整个多伦多市每年大约开出 280 万张停车罚单。该数据集包含与每个日历年开出的每张停车罚单相关的不可识别信息”。

数据概述和预处理。

下面是五个转置的行车票记录。我们将使用的关键信息是违规的时间、地点和类型(描述)。

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

五个转置行的示例

对原始数据进行了一些基本的预处理,例如合并日期和时间列,删除时间不正确的异常行等。

如果我们绘制每日门票数量,我们可以在 2020 年 4 月左右看到明显的“covid19 下降”。我们将只使用 2019 年的数据,因为 2020 年的数据不典型。

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

每日停车票

什么时候有最多的票?

让我们从时间的角度来探究这些数据。每种违规类型都有其分布。因此,我们将在一个违反类型的基础上研究时间分布。

首先,我们用 7 X 24 个单元格创建一周的热图,统计每个单元格中的票数,最后归一化热图(所有单元格之和应为 1)。因此,较暗表示百分比较高,较亮表示百分比较低。

一些有趣的观察:

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

规范化停车罚单分布

清晨(早上 5 点到 7 点)或下午(下午 3 点到 6 点)是否有一个“私人财产公园”值得怀疑。

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

规范化停车罚单分布

晚上(早上 0 点到 7 点)几乎不会出现“未付费停车”的情况。我猜大多数机器停车场靠近办公和商业建筑,人们很少在那里过夜停车。此外,一些停车场可能会在晚上关闭,酒吧禁止进入。军官不在那些地方工作是合理的。

我们还可以将全年的门票数量视为时间序列数据,并将其分解为几个部分。例如,如果我们分解“停车时间超过 3 小时”的违规数据,并查看趋势部分,我们可以看到冬季发出的罚单较少。从季节部分,我们会看到一个周模式。有一些明显的下降(你可以在上面的线图和下面的残差图中看到它们)。它们可以用加拿大夏季的国定假日和冬季的极端天气日来解释。

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

标准化后,我们可以比较前 5 种违规类型,因为这些类型的罚单数量不同。我选择基于十天移动平均线来归一化该值。

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

比较前 5 种违规类型的折线图

一些观察结果:

节假日和极端天气会显著减少“停车时间超过 3 小时”和“未支付停车机器所需费用”(绿色和紫色线)的门票。要点是城市通常不会在那些特殊的日子给你开罚单,因为不付钱或者停车时间太长。

“公园标志 HWY 禁止 DY/TM”类型(橙色线)有几个周期性峰值。高峰意味着该城市可能会批量发行这些罚单,或者该城市可能会加强对此类违规行为的定期检查。

门票最多的地点在哪里?

数据集中没有地理信息。现在,我们只能将位置视为字符串。

这份名单是门票最多的前 10 条街道。

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

该列表显示了门票最多的前 10 个地点。

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

每个顶部位置都有独特的图案。例如,大多数 2075 BAYVIEW AVE (一家医院)的门票是从上午 10 点到下午 2 点的私人停车场。

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

布里姆利路南 1 号是一个公园。在那里开停车罚单有各种各样的理由。但是大部分都是下午和晚上给的。

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

拿到票的概率有多大?

请注意,如果你从来没有违反停车规则,你将永远不会得到一张停车罚单。

我们假设你在一个特定的地方违反了停车规则,你可能会收到一张停车罚单。这个机会取决于停车执法人员。假设一个检查员同时检查这个地方,你会 100%得到一张票;如果没有,有 0%的机会拿到票。因此,检查的概率给你违反停车规则将等于得到一张罚单的概率。

基本数学是下面简单的贝叶斯方程。

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

一级方程式

我们想知道我们的目标概率 P(检查|违规)。解决方案是,一旦我们有了 P(检查和违规)和 P(违规),我们就可以得到 P(检查|违规)。

评估 P(检查和违规)

让我们通过结合位置和时间因素来计算这些概率。为了让事情变得简单些,让我们来挑选第一名, 4001 莱斯利街。是北约克综合医院。以下是 2019 年的票数分布图。

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

每个单元格表示 2019 年该时间段发行了多少张票。每个单元格代表一个联合事件的编号,意味着有人违反了法律警官抓住了那个人。

我们假设一旦检查员到达现场,他们会发现所有的违规行为。所以票的总数不是一个好的概率分布的度量。由于每个时间点在一年中平均会重复 52 次,我们可以使用每个时间点的一年中唯一的天数除以 52 作为概率。

例如,假设在星期五上午 11 点到 12 点发行 60 张票。这 60 张罚单仅涵盖 26 周(一年中的 26 个独特的日子),这意味着在周五上午 11 点到 12 点没有任何罚单的那几周,既没有违规,也没有检查员在那个时间出现。那么从技术上来说,我们认为联合事件的概率是 26/52 = 50%。

现在我们有了每个单元的联合事件 P(检查和违规)的概率。我通过将每个单元格的值与其两个相邻单元格的值进行平均来平滑结果。

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

平滑的结果。每个单元格都是自身和两个相邻单元格的平均值。

评估 P(违规)

接下来,让我们获得每个时间点的违规概率。我们可以假设有一小部分人喜欢违反停车规则,不管时间和地点。停车的游客越多,那些“停车违规者”就越有可能到来。现在问题变成了我们是否能有停车游客数量的数据。

我在网上找到了北约克总医院 2019 年的统计数据(参考文献 3)。有 118152 名急诊患者和 170132 名门诊患者,这意味着每天约有 790 名患者。当然,不是所有的病人都需要停车;有些患者可能会多次就诊和停车。有理由相信每天停车的游客应该在 500 到 1000 之间。

我还找到了一篇关于预测急诊科每小时患者访问量的论文(参考文献 2)。关键是不同时间到达的病人数量的分布。

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

结合上述知识和信息,我为北约克综合医院创建了一个停车游客分布图。平日停车游客总数不超过 650 人,周末不超过 300 人。

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

根据停车游客的数量,如果我们知道违规率,我们可以通过以下公式计算违规概率:

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

方程式 2。

不幸的是,我在网上找不到可靠的违规率。但是我们可以调整利率。下图显示 P(违规)的比率为 0.013。这一比率意味着每 1000 名停车游客中,就有 13 人违反停车规则。

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

违规率不变的假设可能不成立。例如,人们可能愿意在晚上偷一个比白天稍微危险的非法停车。

为了估计每小时的违规率,我假设 P(检查|违规)总是 1,那么 P(违规)将等于 P(检查和违规)。通过用停车游客的数量求解公式 2,我们可以计算出每个时间点的违章率。不出所料,夜间的费率确实更高。

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

假设 P(inspection|infraction)的逻辑总是一个意思,即通过捕捉所有的违规,官员们工作得很完美。从这一假设得出的违规率可被视为最佳率;实际违规率应该高于最佳值。

检查 P(检查|违规)

现在,我们可以按小时平均最佳违规率,然后应用公式 1 和公式 2,得到 P(检查|违规),如下所示。

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

因为我们使用的是最佳违规率的平均值,大多数概率接近于 1,正如预期的那样。即使结果高估了实际可能性;我们仍然可以发现一些有趣的观察结果:

如果你违章停车,周一白天和工作日上午 9 点到 10 点收到停车罚单的几率相对较低。

官员通常上午比下午更有可能在现场。

请注意,结果高度依赖于停车游客分布的准确性以及如何评估违章率,这将最终确定 P(违章)。概率较低的时间段可能表明检查的机会较少,或者我们高估了 P(违规),即某人违规的可能性。

结论

我研究了基于时间、地点和违规类型的多伦多停车罚单数据集。我展示了从 2019 年的数据中学到的一些令人兴奋的见解。我还提出了违规和检查的简单统计模型。我们需要有关相关位置的详细信息,以便我们可以模拟某人违反停车法规的可能性以及停车执法人员检查该地点的可能性。

感谢阅读。

参考资料:

[1] 多伦多公开停车罚单数据

[2] 预测急诊科每小时的患者访问量,以应对拥挤状况 Morten Hertzum

[3] 北约克总医院统计数据

什么是转置卷积?

原文:https://towardsdatascience.com/what-are-transposed-convolutions-2d43ac1a0771

了解“反向”卷积的工作原理

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

Unsplash 上由 Philippe D. 拍摄的照片

介绍

转置卷积就像卷积家族的“丑小鸭”。它们古怪而怪异,但转置卷积并不像看上去那样简单。

你会经常在自动编码器解码器部分,或者 GANs生成器部分找到层转置卷积

他们的目的很明确:为了增加他们输入的尺寸、高度和宽度。

这是与常规卷积的相反的*:缩小它们输入的大小、高度和宽度。*

“所以,转置卷积是卷积的逆运算?”

转置卷积

上面的问题没有简单的答案,因为卷积不能“还原,也就是说,在给定结果输出的情况下,不能检索原始值。即使是最简单的过滤器,即身份过滤器,在图像上进行卷积时,也会导致一些信息永久丢失(原始图像最外面的行和列中的数字,如下例所示):

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

来源:图片来自我的书《用 PyTorch 一步一步进行深度学习》,第 5 章,“卷积”

此外,已知卷积通常产生尺寸减小(高度和重量)的输出。虽然我们对丢失的信息无能为力,但是我们可以恢复缩小的大小!这就是一个**“转置卷积”**的作用。

“为什么叫换位?”

我也不喜欢这个名字,但是我估计叫它“反卷积也不够准确,所以就是这样。退一步说,转置卷积的算法并不那么直观,所以让我们用 PyTorch 做几个例子来理解它是如何工作的。

在这两个例子中,我们将使用一个单通道、2x2 图像作为输入,以及一个同样大小的内核/过滤器:

input_image = torch.ones((1, 1, 2, 2)) # N, C, H, W
input_image
**Output:
tensor([[[[1., 1.],
          [1., 1.]]]])**kernel_size = 2
kernel = torch.ones((1, 1, kernel_size, kernel_size))
kernel
**Output:
tensor([[[[1., 1.],
          [1., 1.]]]])**

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

单通道、2x2、图像作为输入,以及相同大小的内核/滤波器。图片作者。

使用 1 的步幅(转置)

现在,让我们尝试一个 2D 转置卷积([**F.conv_transposed2d**](https://pytorch.org/docs/stable/generated/torch.nn.functional.conv_transpose2d.html),在 PyTorch 的函数式 API 中),使用一个的步幅(转置),和一个的填充(转置):

import torch.nn.functional as Fstride_transp = 1
padding_transp = 0F.conv_transpose2d(input_image,
                   weight=kernel,
                   stride=stride_transp,
                   padding=padding_transp)
**Output:
tensor([[[[1., 2., 1.],
          [2., 4., 2.],
          [1., 2., 1.]]]])**

我不知道你,但我第一次看到那个输出,我就被它难倒了!让我们深入了解一下!

这就是转置卷积在幕后实际做的事情:

  • 首先,它用零填充图像,尽管它没有使用作为参数的填充(转置)而是使用隐式填充代替(是啊,说到令人困惑!).

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

隐式填充。图片作者。

padding_implicit = kernel_size - padding_transp - 1
padded_image = F.pad(input_image, pad=[padding_implicit]*4)
padded_image
**Output: 
tensor([[[[0., 0., 0., 0.],
          [0., 1., 1., 0.],
          [0., 1., 1., 0.],
          [0., 0., 0., 0.]]]])**

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

用隐式填充进行填充。图片作者。

  • 然后,使用常规的 2D 卷积(**F.conv2d**,使用一个固定步幅(不是用作参数的步幅(转置)),在填充图像上卷积内核/滤波器!)
F.conv2d(padded_image, weight=kernel, stride=1)
**Output: 
tensor([[[[1., 2., 1.],
          [2., 4., 2.],
          [1., 2., 1.]]]])**

我们走吧!这与转置卷积函数产生的输出相同!下图说明了这两个步骤:

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

使用一步(转置)的转置卷积。图片作者。

“好的,但是**步幅(转置)**呢?根本没用!”

接得好!事实上,它并没有被使用,这就引出了第二个例子。

使用 2 的步幅(转置)

我们将保持相同的输入图像和内核/过滤器,相同的零的填充(转置),但是我们现在将使用两个步距(转置)。

stride_transp = 2
padding_transp = 0F.conv_transpose2d(input_image,
                   weight=kernel,
                   stride=stride_transp,
                   padding=padding_transp)
**Output:
tensor([[[[1., 1., 1., 1.],
          [1., 1., 1., 1.],
          [1., 1., 1., 1.],
          [1., 1., 1., 1.]]]])**

这个输出也令人困惑,对吗?大于一个的步幅(转置)实际上在开始时引入了 又一步 :

  • 首先,在输入图像的现有 1之间插入 0 序列作为列和行。要插入的列/行数步距(转置)减去一个给出。在我们的例子中,它将插入一列和一行,产生如下图像:
zero_added_image = torch.tensor([[[[1, 0, 1],
                                   [0, 0, 0],
                                   [1, 0, 1]]]]).float()

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

添加零的列和行。图片作者。

  • 接下来,它使用一个的固定步幅执行隐式填充常规卷积,就像第一个例子一样:
padding_implicit = kernel_size - padding_transp - 1F.conv2d(zero_added_image,
         weight=kernel,
         stride=1,
         padding=padding_implicit)
**Output:
tensor([[[[1., 1., 1., 1.],
          [1., 1., 1., 1.],
          [1., 1., 1., 1.],
          [1., 1., 1., 1.]]]])**

又来了!这与转置卷积函数产生的输出相同!下图说明了整个事情:

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

使用步长为 2 的转置卷积。图片作者。

上面的两个例子足以让你理解转置卷积的要点,以及如何使用它们来增加输出的大小(高度和重量)。

输出大小

“有没有一种简单的方法来计算产量的大小?”

当然,给定图像和内核大小、步幅(转置)和填充(转置),结果输出的大小遵循以下公式:

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

转置卷积的输出大小

最后的想法

转置卷积非常有用,尤其是在生成模型中,并且很容易简单地假设它们是常规卷积的“相反”操作(因为它们增加了输入的高度和宽度),而无需过多考虑。不过,它们的内部工作方式有点复杂,所以我希望我能帮助你更好地理解它们。

如果你想了解更多 PyTorch,计算机视觉,NLP 的知识,给我自己的系列丛书, 深度学习用 PyTorch 循序渐进 ,一试:-)

如果您有任何想法、意见或问题,请在下面留下评论或通过我的 个人资料链接 页面联系。

如果你喜欢我的文章,请考虑使用我的推荐页面 注册一个中级会员 来直接支持我的工作。对于每一个新用户,我从中获得一小笔佣金:-)

什么是视觉变形金刚,它们对通用学习有何重要性?

原文:https://towardsdatascience.com/what-are-vision-transformers-and-how-are-they-important-for-general-purpose-learning-edd008545e9e

探索概念并尝试示例应用

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

图 1:行动中的视觉变形金刚(图片由作者提供)

在过去的几年里,人工智能领域取得了重大进展。生成模型是视觉领域中最成功的,然而,它们是为高度专业化的任务而构建的。每当任务改变时,这些专门的学习模型需要重建或再培训。因此,对通用学习模型的兴趣正在增加。其中一种模型叫做变形金刚。在本文中,我们简要讨论:

  • 什么是变压器?
  • 什么是视觉转换器(ViT)?
  • ViTs 的各种应用有哪些?
  • vit 如何用于通用学习?

1。 正文变形金刚

转换器的概念起源于自然语言处理(NLP)应用,其任务是理解文本并得出有意义的结论。Transformer 模型已经实现了高性能,并且由于其简单性和可推广性,已经成为 NLP 领域中事实上的标准。

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

图 2:用于语言翻译的转换器示例(图片由作者提供)

在文本处理应用程序中,数据由来自一组固定词汇表的大量单词组成。在典型的变压器架构中,执行以下一系列步骤:

► *Text is split into a set of words called tokens.**► Each token is converted into an encoded/embedded vector (e.g. word2vec)**► The position of the word in the sequence is encoded using position embedding [1] and integrated with the word embedding.**► The embeddings are fed into the Transformer encoder.**► The encoder has a Multi-Layer Self-Attention Network (MSP) which assigns weights to tokens based on their relative importance in the sentence, hence embedding the context.**► A Multi-layer Perceptron (MLP) network follows the MSP and encodes the output from the attention network.**► There are multiple MSP and MLP blocks along with Norm layers inside the encoder.**► A final MLP-Head Layer is added outside the encoder network which provides the logits. Logits can be converted to probabilities by applying an activation layer (e.g. softmax).*

正如我们所看到的,变压器网络的架构是通用的,因为编码器输出不是为特定任务(例如分类)构建的,而是通过添加相应的 MLP 头来提供可用于多种应用的通用编码。这就是为什么变形金刚在迁移学习中是有用的,并且有希望实现通用的学习目标。

2。 【视觉变形金刚(ViT)

Vision Transformer (ViT)的概念是 Transformer 原始概念的扩展,后者在本文前面被描述为 text transformer。这只是在图像域中的变换器的应用,在实现中稍作修改,以便处理不同的数据形态。更具体地说,ViT 使用不同的方法进行标记化和嵌入。然而,通用架构保持不变。输入图像被分割成一组图像块,称为视觉标记。视觉标记被嵌入到一组固定维度的编码向量中。图像中碎片的位置与编码矢量一起被嵌入,并被馈入变换器编码器网络,该网络基本上与负责处理文本输入的网络相同。在图 3 [2]中可以看到运行中的 ViT 架构示例。

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

图 3:用于图像分类的视觉转换器的演示(来源:谷歌研究

ViT 编码器中有多个模块,每个模块由三个主要处理元件组成:层范数多头注意力网络(MSP)多层感知器(MLP)层规范保持训练过程在轨道上,让模型适应训练图像之间的变化。 MSP 是一个网络,负责从给定的嵌入式视觉标记生成注意力地图。这些注意力地图有助于网络聚焦于图像中最重要的区域,例如物体。注意力图的概念与传统计算机视觉文献中的概念相同(例如,显著性图和阿尔法抠图)。

MLP 是一个两层分类网络,末端是 GELU ( 高斯误差线性单元)。最后一个 MLP 块,也称为 MLP 头,用作变压器的输出。在此输出上应用 softmax 可以提供分类标签(即,如果应用是图像分类)。

3。应用应用

由于其通用性,ViTs 的应用几乎涵盖了视觉的所有方面。这包括图像分类、图像到文本/文本到图像生成、视觉推理、联想学习和多模态学习。在本节中,我们将通过实际例子来试验 ViTs 最常见和最成功的应用。

3.1。 【图像分类】(图像- >标签)

图像分类是视觉中最常见的问题。图像分类任务的最新技术是基于 CNN ( 卷积神经网络)的方法。vit在小型到中型数据集上没有产生可比较的性能,然而,它们在非常大的数据集上已经胜过CNN[3]。这是因为CNNViTs 更有效地对图像中的局部信息进行编码,这是由于局部受限感受野的应用。

让我们试着用 ViT 做实验。我们首先加载一个已经在 imagenet 上训练过的预训练模型,然后将其应用于从互联网上收集的一组随机图像。我们为给定的图像挑选五个最可能的标签。结果可以在图 4 中看到。结果可能不是超级完美的;然而,他们很好地记住,网络不是在这些图像上训练的。

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

图 4:ViT 的图像分类输出(作者提供的图像)

3.2。 图像字幕(图像- >句子)

通过生成描述图像内容的标题而不是一个单词的标签,可以实现更高级形式的图像分类。随着 ViTs 的使用,这已经成为可能。 ViTs 学习给定数据形态的一般表示,而不是一组粗糙的标签,因此,可以为给定图像生成描述性文本。我们将使用在 COCO 数据集上训练的ViT【4】的实现。这种字幕的结果可以从图 5 中看出。

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

图 5:使用 ViT 生成图片标题(图片由作者提供)

3.3。 对比语言-图像预训练(图像< - >文本片段)

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

图 6:具有对比语言-图像预训练的 ViT 架构(来源: Google Research

ViTs 的一个更高级的应用是学习图像和文本之间的联系。这是一个需要真正概括能力的应用程序,因为它需要文本和图像的抽象表示。这可以通过为文本片段和图像训练两个独立的变换编码器来实现。然后,可以通过构建余弦相似性矩阵来比较编码图像和文本特征各自的相似性。在 CLIP(对比语言图像预训练)[5]中提出了这种变换器模型的相关实现。为了进一步理解这一点,我们取了五个样本图像,并为每个图像编写了一个小的文本片段。然后利用预先训练好的 ViT 模型,将文本片段和图像分别编码成一组文本和图像特征向量。我们计算文本和图像特征之间的余弦相似度。这将产生如图 7 所示的输出。可以看出,正确的图像-文本对之间的相似度最高。这种学习方式相对来说更普遍,是迁移学习的一种形式。

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

图 7:图文关联学习的 ViT 结果(图片由作者提供)

4。 最后备注

在本文中,我们解释了文本转换器和图像转换器的概念。然后,我们通过构建和实现实际的例子,探索了变压器模型的一些主要应用。如果您想更深入地研究并获得代码,那么您可以从 git 存储库中访问相应的 python 笔记本和帮助代码。https://github.com/azad-academy/vision-transformers

在接下来的文章中,我们将更深入地研究迁移学习和变压器网络的一些最新进展。

5。 参考文献

[1] Mehreen Saeed,Transformer 模型中位置编码的温和介绍,https://machine learning mastery . com/A-Gentle-Introduction-To-Positional-Encoding-In-Transformer-Models-part-1/,2022 年

[2] Alexey Dosovitskiy,Lucas Beyer,Alexander,Dirk Weissenborn,Xiaohua Zhai,Thomas Unterthiner,Mostafa Dehghani,Matthias Minderer,Georg Heigold,Sylvain Gelly,Jakob Uszkoreit,Neil Houlsby,“一幅图像相当于 16x16 个字:大规模图像识别的变形金刚”,ICLR,2021 年

[3]陈湘宁、谢卓瑞、龚柏青,“当视觉变形金刚在没有预训练或强大数据增强的情况下胜过 ResNets 时”,2022 年

[4] Saahil 等人,CaTr:变形金刚的图像字幕,https://github.com/saahiluppal/catr,2020 年

[5] 亚历克·拉德福德琼·金旭克里斯·哈勒西阿迪蒂亚·拉梅什加布里埃尔·戈桑迪尼·阿加瓦尔吉里什·萨斯特里阿曼达·阿斯克尔帕梅拉·米什金杰克·克拉克格雷琴·克鲁格

从 1001 个 A/B 测试中可以学到什么?

原文:https://towardsdatascience.com/what-can-be-learned-from-1-001-a-b-tests-361a4b6e40a7

对测试持续时间、样本大小、提升、功效、置信阈值和连续测试的表现进行深入了解的荟萃分析

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

卢克·切瑟在 Unsplash 上的照片

典型的 A/B 测试运行多长时间?有百分之多少的 A/B 测试会产生“赢家”?在线控制实验达到的平均升力是多少?顶级转化率优化专家在为网站和移动应用提供有效干预方面有多出色?

使用 Analytics-Toolkit.com 统计分析平台分析的 1001 个 A/B 测试的元分析旨在提供这些和其他与在线 A/B 测试相关的问题的答案。演示文稿的布局如下:

  1. 背景和动机
  2. 数据和方法
  3. 基本测试特性
  4. 高级测试参数
  5. 结果统计
  6. 顺序测试的效率
  7. 外卖

对主要发现和简要概述感兴趣的人可以直接跳到“要点”

所有图片和图表,除非特别注明,均由 Analytics-toolkit.comhttps://www.analytics-toolkit.com/提供

背景和动机

A/B 测试,也称为在线控制实验,是在线业务中证据和风险管理的黄金标准。它们是估计不同类型干预的因果影响的首选工具,通常目标是改善网站或应用程序的性能,并最终改善业务成果。因此,A/B 测试的作用主要是作为一种管理业务风险的工具,同时应对创新和改进产品或服务的持续压力。

考虑到这一把关者角色,A/B 测试的执行方式至关重要,这种方式可以产生可靠的结果,同时平衡误报和漏报结果的业务风险和回报。A 2018 元分析[1]115 个公开可用的 A/B 测试揭示了与在线受控实验的规划和分析相关的重大问题。也就是说,大多数测试(70%)出现了动力不足,提出了与去向不明 窥视低统计功效相关的问题。第一种可能会导致估计值过高,对假阳性率缺乏控制,而第二种可能会导致无法检测到真正的改进,并因样本量不足而错过从测试中学习的机会。

自分析工具包于 2014 年推出以来,解决这些问题和促进稳健的统计实践一直是开发 A/B 测试统计工具背后的主要驱动力。在 2017 年,提出并实施了顺序测试方法(敏捷)来解决窥视背后的动机,以提供效率并提高测试的 ROI,而不损害统计的严谨性。2021 年底,发布了一个经过彻底改革的平台,其目标之一是解决 A/B 测试结果不佳的第二个主要原因——统计能力不足。改革的其他目标包括防止或尽量减少在线 A/B 测试中应用统计方法的其他常见错误。

鉴于上述情况,当前的元分析有多个目标:

  1. 提供一个结果无偏见的分析,改善以前的研究,可能遭受选择性报告问题。
  2. 产生一个更强大的,因此更有价值的分析。
  3. 检查顺序测试的真实表现,顺序测试本质上取决于测试干预的未知真实效果。
  4. 揭示关于关键数据的新见解,如测试持续时间、样本大小、置信阈值、测试功效,并探索测试干预的效果分布。
  5. 检验 Analytics Toolkit 测试计划和分析向导在多大程度上可以鼓励 A/B 测试中的最佳实践,并减轻测试不足的问题。

数据和方法

该分析中的数据来自自 2021 年末推出新的分析工具包平台以来进行的 1,001 次测试的样本。数据集包含固定样本测试和顺序测试(敏捷测试),90%的测试属于后一种类型。

最初测试的较大样本被筛选,以便只包括在此期间进行了三次以上 A/B 测试的用户的测试。基本原理是尽量减少对平台没有足够经验的用户的测试比例,以及在探索软件功能时输入的测试比例,因为这些测试可能包含有问题的数据。

基于测试计划和实际记录的观察之间的极端不匹配,删除了 46 个异常值。据认为,这种不匹配很可能表明对顺序测试方法不熟悉或执行非常差,使得从这些方法中得出的统计数据有问题。这些异常值的去除对敏捷效率数字产生了最大的实质性影响,带来了 3–4 个百分点的积极影响…

此外,估计升力超过 100%的 22 项测试被删除,因为这些结果很可能不是基于声音质量的实际数据。在所有三个屏幕之后,剩余的测试数是 1,001。

鉴于 Analytics Toolkit 大多数用户的已知特征,A/B 测试很可能代表由高级和专家 CRO 从业者以及那些对统计知识和理解高于平均水平的人进行的测试。

基本测试特征

A/B 测试的分析样本的基本特征包括测试持续时间、样本大小和每次测试的测试变量数量。测试持续时间提供了有关测试外部有效性的信息。样本大小提供了估计的统计能力和质量的概念,而变异数是从业者在所谓的 A/B/N 测试中测试一个以上变异与对照的频率的简单度量。

试验时间

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

测试持续时间的分布

所有 A/B 测试持续时间的算术平均值为 35.4 天,等于五周。中位数是 30 天,这意味着一半的测试持续不到一个月。大多数测试跨越了一个时间框架,这个时间框架允许对任何结果进行良好的概括。

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

在 50 天截断的测试持续时间的分布

放大图表显示了与在整周间隔上监控的测试相对应的显著峰值:在 7 天(1 周)、14 天(2 周)、21 天(3 周)等等,直到 49 天(7 周),在这一点上,由于数据量低,该模式不再可见。似乎大量的测试都是按照外部有效性的最佳实践进行的,这应该会导致任何结果的更好的普遍性。

样本量

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

每次测试的用户数量,为方便使用,图表截断为 100 万

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

每次测试的会话数,为方便使用,图表截为 2,000,000

对于以用户为主要衡量标准的测试,平均样本量为 217,066 个用户,但中位数仅为 60,342 个用户。对于基于会话指标的测试,平均样本量为 376,790 个会话,而中位数为 72,322 个会话。

这种类似幂律的分布并不令人惊讶,因为幂律分布描述了用户和参与度在网络属性和移动应用之间的分布。

如果没有主要指标的基线率和标准偏差的背景,样本大小本身没有什么意义,但我们可以有把握地说,抽样测试包括足够数量的用户或会话,以避免与非常小的样本大小相关的统计复杂性。

变体数量

在 Analytics Toolkit 平台上进行的绝大多数测试(88%)只包括一个测试变量和一个控制变量。只有 10%包含两个变体,只有 2%包含三个或更多变体。似乎大多数专业转换率优化者更喜欢用一个单独的、经过深思熟虑的干预来计划测试,而不是花更多的时间一次性测试一组更多样化的想法。人们可以推测,这反映了对快速实现的增量改进的偏好,而不是花费更长时间的更复杂的测试,每个测试都带有更高的不确定性。

高级测试参数

高级测试参数反映了数据集中 A/B 测试最重要的统计设计的关键方面。

置信阈值

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

使用的置信度阈值分布

置信度阈值的分布表明,在大多数测试中,阈值在 80%和 95%之间,只有少数例外。置信阈值在这个范围内稍微均匀分布的事实与用户利用向导或他们自己的风险回报计算来达到与手头情况匹配的特定阈值的情况并不矛盾。高于 95%的少数阈值可能对应于在有利于变体的错误结论的情况下具有更高风险的测试。

这种良好实践可以与“默认”应用 95%置信度阈值方法的一刀切方法形成对比。从商业角度来看,后者通常是次优的。

置信阈值分布似乎表明了 A/B 测试中两种类型风险的合理平衡,并且可以被视为这些测试的商业效用的积极因素。然而,这些数据本身并不是决定性的。

统计能力

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

统计功效的分布(相对于所选择的感兴趣的最小效应)

绝大多数测试的功率为 80%,然而也有少数大约三分之一的测试的功率为 90%。这是令人鼓舞的,因为 80%的功率提供了相当低的检测感兴趣的目标最小效应的真实效应的机会。在计划测试时,最好探究感兴趣的最小效应和功效曲线 90%点处的最小可检测效应之间的关系。

最小可检测效应

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

最小可检测效应分布

90%功率下最小可探测效应的分布如下图所示,平均值为 11.3%,升力中值为 6%。

三分之二的试验具有低于 10%升力的最小可检测效应,这明显多于之前荟萃分析中大约四分之一的试验[1]。6%的中值意味着半数试验的 MDE 低于 6%的相对升力。这可能是向导的指导和使用该工具的实践者的经验共同作用的结果。仅凭手头的数据很难理清这两者。

上述数字可以被解释为暂时支持 2018 年荟萃分析[1]中观察到的至少一些不切实际的 mde 与未说明的窥视有关的结论。

无论如何,这些都是非常令人鼓舞的数字,尤其是根据下一节的调查结果。

结果统计

提升估计是固定样本检验的简单无偏最大似然估计,也是序贯检验的偏倚缩减最大似然估计。

积极成果的百分比

大约 33.5%的所有 A/B 测试具有统计显著性结果,其中一个变体优于对照。这高于之前的荟萃分析[1]中观察到的 27%,也高于 Kohavi、Tang 和 Xu (2020 年)在第 112 页[2]的综述中报告的行业平均值的上限。鉴于本荟萃分析的纳入标准中没有结果偏倚,这一数字可以被视为被测试观点及其实施(也称为干预)相对较高质量的证据。

考虑到 Analytics Toolkit 用户的众所周知的概况,其中高级和专家 CRO 从业者的比例过高,这种高比例的“赢家”并不完全令人惊讶。它显示了积累的知识和经验的价值,并可能意味着这些专业人员更善于筛选出糟糕的想法和/或表明他们对决策者的影响力,即哪些想法进入了测试阶段。

提升估计

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

升力估算分布

尽管上面的数字很乐观,一种解释所有 A/B 测试的提升估计值的方法是,显示这些精英专业人员产生和实施为在线业务带来重大价值的想法的能力有限。中值提升估计值仅为 0.08%,而平均值为 2.08% ( 标准误差为 0.552%)。这意味着近一半的测试干预措施没有影响或有负面影响。即使在积极的估计增长中,大多数也低于 10%。另一方面,大多数估计的负面影响也只有不到 10%的影响。

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

与具有相同均值的正态分布相比较的升力估算分布
(由 GIGAcalculator.com 提供)

使用 p 值< 0.0000001 on all five of the battery of tests supported by GIGAcalculator’s 正态性检验计算器,提升估计值显然不是正态分布的。尾巴很重,向正端倾斜。零左右的估计主导了形状。

上述数据表明,影响用户行为是很难的。影响用户执行一个想要的动作和让他们偏离他们想要实现的目标是一样困难的。然而,正中值和平均值反映了测试的干预措施具有比掷硬币更好的产生积极效果的可能性,与零的差异具有统计学意义(p = 0.000084h0:%升程≤ 0),相关的 95%区间跨度为[1.172%,+∞)。

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

统计显著性检验的最佳变量的提升估计值

在具有统计意义的积极结果中,中值提升估计值是可观的 7.5% ,而平均值是巨大的 15.9%标准差为 19.76%,均值的置信区间如下:95%CI [13.76%,17.98%];单侧 95%CI [14.1%,+∞]。这意味着带有“获胜”变体的测试可能会给企业带来巨大的价值。

在少数情况下,获胜变体的提升估计低于零,这反映了非劣性测试。鉴于一些积极的估计也来自非劣效性测试,上述提升的潜在好处可能比数字显示的更大。

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

统计非显著性检验的最佳变量的提升估计值

在没有统计显著结果的试验中,大多数具有负的估计升力,而一些具有正的估计升力。平均值为 -4.9% ,中位数为 -1.7% ,这些数据说明了为什么执行 A/B 测试如此重要(SD = 10.8%,95%CI [-5.70%,-4.07%],单侧 95%CI (-∞,-4.201))。在许多情况下,不太可能在非实验环境中检测到如此小的影响,因为任何类型的观察性事后评估(变化影响估计)都涉及更大的不确定性。

顺序测试的效率

本节中的统计数据反映了顺序测试及其性能的各个方面。为某个最大目标样本量和达到该目标的若干中期评估计划了连续实验,但可能在任何评估时停止(“提前”),这取决于到该点为止的观察数据。顺序测试的效率取决于所执行的顺序测试的类型、测试计划以及测试干预的真实效果大小和方向。

平均停止阶段

使用 AGILE 的连续评估在线实验平均计划用于 10.8 个监控阶段。这些测试平均在第 5.6 次分析时停止,表明它们在最大计划测试持续时间/样本量的一半时停止。这与顺序测试的预期性能相一致,这意味着人们可以安心地为测试计划更长的最大运行时间,因为如果结果相对于感兴趣的最小效果过于积极或过于消极,测试将会提前终止。

实际运行时间与最大运行时间

顺序 A/B 测试的停止阶段和实际运行时间取决于测试干预的真实效果大小和方向。实际运行时间占各自最大运行时间的百分比分布如下所示。

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

测试运行时间与计划最大值的分布

平均值和中间值几乎相同,分别为 64%和 64.7%,这意味着测试平均在不到最大计划运行时间的三分之二时停止。

有 57 个测试在其最大运行时间的 100%处停止,这表明只有 2 个监控阶段的测试数量高于预期,和/或计划的测试数量非常完美(单位时间内非常稳定的用户或会话率),和/或测试出于任何原因进入事后阶段。两阶段测试是一个小因素,但很难区分其他两个。因此,这些很可能代表了人工测试(例如,为了比较估计值和固定样本分析的目的,事后重新分析测试),而不是使用 AGILE 计划和分析的实际测试。

如果假设是这种情况,那么这些测试会使分布向上倾斜,而真正的平均值和中间值大约是最大运行时间的 62%,这稍微提高了性能。然而,大多数这样的测试实际上是人为的可能性被认为是足够低的,不能保证完全排除在分析之外。

性能对比等效固定样本测试

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

相当于固定样本设计百分比的样本量分布

*性能与固定样本当量的关系反映了性能与最大运行时间的关系,峰值出现在固定样本当量的 105%到 115%之间,因为在 5 到 12 次分析之间的大多数测试中,5–15%是预期的最坏情况样本量膨胀。序贯检验的平均样本量和中值样本量分别是同等固定样本检验的 73.4%和 74%。**这使得平均节省的时间和用户暴露在 26%左右。*如果从数据中移除 105%和 115%之间的意外峰值,这些数字将提高到约 71.5%和约 28.5%

据我所知,这是第一次对在线 A/B 测试中真实干预的稳健频率主义序贯测试方法的实际性能进行元分析。它证明了使用顺序测试优于固定样本测试的优势,尽管这种影响相对于估计值有所减弱,这主要是因为所有测试的估计升力分布远非正常,密度明显集中在零附近。

外卖食品

荟萃分析通过提供一个比以前的荟萃分析多近十倍的结果无偏的测试集合来实现其前两个目标。它还提供了使用 Analytics Toolkit 测试计划和分析向导的积极效果的临时证据。

现实场景中顺序测试优势的证据是大量的,至少支持 26%的运行时间/样本量性能提升,测试的 ROI 可能有更大的提高,因为在测试中,由于有效性或无效性而提前停止的真实效果的大小不成比例。

荟萃分析还得出以下关键数据:

  • 33.5%的 A/B 试验产生了具有统计学意义的阳性结果,平均效果为 15.9%,而其中一半的估计效果大于 7.5%。
  • 所有测试的中值升力估计为 0.08%,平均值为 2.08%,证明了 CRO 专业技术的优势,与零相比具有显著的统计学差异。
  • 对于大多数测试,估计升力接近于零,这对于功率分析和样本量规划具有重要意义。重要的是,它证明了对随机对照试验的需求,该试验具有优于观察方法的稳健统计估计,而观察方法检测这种微小变化的能力要差得多。
  • 就平均效率改进而言,与同等的固定样本规模测试相比,真实场景中的顺序测试至少有 26%的优势
  • 88%的测试是简单的 A/B 测试,只有 12%是 A/B/N 测试,大多数测试只有两个变量,这表明专家 cro 更喜欢保持简单和迭代,而不是运行更复杂的测试。
  • 典型的测试持续时间约为一个月,或四到五周,平均来说,表明结果具有良好的普遍性。
  • A/B 测试平均包括 60,342(中值)到 217,066(平均值)个用户,以及 72,322(中值)到 376,790(平均值)个会话。
  • 大多数在线实验都是在 80%到 95%的置信度下进行的。
  • 一半的 A/B 测试有 90%的概率检测到 6%或更低的真实影响,而平均 MDE 为 11.3%,这表明更好的测试成为顶级专业人士的标准。

*假设分析中的大多数测试是针对关键业务指标执行的,很少是针对不太连续的用户操作,那么可以推断出测试比直接实现的好处。**在两家希望实施相同变革的相同公司中,仅实施通过 A/B 测试的变革的公司将比仅实施所有变革的公司实现快数倍的增长。它也会变得更加顺畅,这在商业中至关重要。*前者的优势来自于只实施平均提升 15.9%的成功测试,而后者的平均提升仅超过 2%,尽管成功测试导致实施了所有提议变更的三分之一以上。

虽然最后一个结论可能有点夸张,但它应该是说明统计开销时测试的显著边际效益的主要例子。准备、运行和分析测试的各种开销需要单独考虑,典型的规模经济在起作用。

参考

[1],g . z .(2018)“115 个 A/B 测试的分析:平均 Lift 为 4%,大多数缺乏统计功效”[在线]在https://blog . analytics-toolkit . com/2018/Analysis-of-115-A-B-Tests-Average-Lift-Statistical-Power/,[ 2]科哈维,唐,徐(2020)《可信的在线对照实验:A/B 测试实用指南》,剑桥:剑桥大学出版社。ISBN:978–1–108–72426–5。土井:10.1017988686861

原载于 2022 年 10 月 18 日 https://blog.analytics-toolkit.com的* *

我们能从后验分布中学到什么?

原文:https://towardsdatascience.com/what-can-we-learn-from-posterior-distributions-43671a2cb960

贝叶斯后验概率的频率主义解释

假设我们观察到了来自未知分布 qN 独立同分布 (iid)样本 X = (x1,…,xN) 。统计学中的一个典型问题是“样本集 X 告诉我们关于分布 q 的什么信息?”。

参数统计方法假设 q 属于一个参数分布族,并且存在一个参数 θ 其中 q(x) 等于所有 x 的参数分布p(x |θ)*;*比如 p(。|θ) 可以是单位方差的正态分布,其中 θ 表示其均值。在这个设定中,问题“关于 q ,X 告诉了我们什么?”被翻译成“关于参数 θ ,我们有 q = p(。|θ) ?”。

回答这个问题的贝叶斯方法是使用概率论的规则,并假设 θ 本身是一个随机变量,具有先验分布 p(θ) 。先验分布 p(θ) 是我们在之前对 θ 的假设和猜测的形式化。在这种情况下,我们可以将参数和数据的联合概率分布写在一起:

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

使用这个公式, X 捕获的关于 θ 的所有信息可以在后验分布中进行总结

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

**方程式 1。**后验分布

贝叶斯统计是美丽的,自洽的,优雅的:一切都是使用概率论的规则自然得出的,假设总是清晰明了的。但往往看起来神秘而令人费解:(一)关于底层分布 q 我们真的能从后验分布 p(θ|X) 中学到什么?以及(ii)如果我们的假设不成立,例如,如果 q 不属于我们考虑的参数族,该信息的可靠性如何?

在本文中,我的目标是获得关于这两个问题的一些直觉。我首先分析当样本数 N 很大时后验分布的渐近形式——这是一种研究贝叶斯推理的频率主义方法。第二,我展示了一般理论如何应用于高斯家族的简单情况。第三,我使用模拟和分析,对于三个案例研究,后验分布如何与数据的基本分布相关,以及这种联系如何随着 N 的增加而变化。

理论:大 N 的渐近情况

等式 1 中的后验分布的对数可以重新表示为

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

**方程式 2。**对数后验分布

等式 2 中的常数(相对于 θ )仅对于归一化后验概率分布是重要的,并不影响它如何作为 θ 的函数而变化。对于较大的 N ,我们可以使用大数定律,并通过下式近似等式 2 中的第二项(对数似然的总和)

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

其中 D-KLKullback-Leibler 散度并且测量真实分布 q 和参数分布 p(.|θ) 。然而,重要的是要注意,只有当 log p(x|θ) 的均值和方差(相对于 q )对于某个参数 θ 是有限的时,近似才有效。我们将在下一节中进一步讨论这个条件的重要性。

如果 p(θ) 在参数空间上具有完全的支持(即,总是非零),那么 log p(θ) 总是有限的,并且对于大的 N ,等式 2 中的主导项是 D-KL [q || p(。|θ)] 乘以 N. 这意味着增加样本数 N 会使后验分布 p(θ|X) 越来越接近该分布

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

方程式 3

其中 Z 是归一化常数。p (θ;N) 是一个有趣的分布:它的最大值是散度 D-KL [q || p(.|θ)] 最小(即当 p(。|θ) 尽可能接近 q ,其对D-KL【q | | p(。|θ)]* 随着样本数 N 的增加而增加(即,随着 N 的增加,其最大值附近变得更加“狭窄”)。

当假设正确时

当假设正确并且存在一个 θ* 时,我们有 q = p(。|θ)* ,那么

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

其中D-KL【p(。|θ) || p(。|θ)】θθ 之间的伪距离。因此,随着 N 的增加,后验分布集中在真实参数 θ* 附近,为我们提供了完全识别 q — 所需的所有信息,见脚注。

当假设是错误的时候

当没有 θ 时,我们有 q = p(。|θ) ,那么我们永远无法识别真正的底层分布q——仅仅是因为我们没有在正确的地方搜索!我们强调,这个问题不限于贝叶斯统计,并扩展到任何参数统计方法。

虽然在这种情况下我们永远无法完全确定 q ,但是后验分布仍然提供了关于 q 的信息:如果我们将 θ* 定义为 q 在参数族空间上的伪投影的参数:

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

然后,随着 N 的增加,后验分布集中在 θ* 附近,给我们足够的信息来识别参数族中的最佳候选值q——参见 footnote⁴.

中间总结

随着 N 的增加,后验分布集中在参数 θ* 附近,该参数描述了参数族中最接近实际分布 q 的分布。如果 q 属于参数族,那么最接近 q 的分布就是 q 本身。

示例:高斯分布

在上一节中,我们研究了大量样本的后验分布的一般形式。在这里,我们研究一个简单的例子,看看一般理论如何应用于具体情况。

我们考虑一个简单的例子,其中参数分布是高斯分布,单位方差和平均值等于 θ :

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

为简单起见,我们将标准正态分布视为先验 p(θ) 。使用等式 1,很容易表明后验分布为

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

随着

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

现在,我们还可以确定*p (θ;N) (见等式 3)并将其与后验分布进行比较:只要真实分布的均值和方差 q 是有限的,我们就有

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

因此,我们可以写出(使用等式 3)

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

随着

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

方程式 4

如一般理论所料,我们可以用*p (θ;N) 为大 N 因为

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

总而言之, p(θ|X) 集中在基础分布 q 的真实均值附近——如果它存在的话。

模拟:好的、坏的和丑陋的

我们的理论分析有两个关键的假设:(i) N 很大,以及(ii)log*p(x |θ)*的均值和方差(相对于 q )对于某些 θ 是有限的。在本节中,我们使用模拟来研究如果这些假设不成立,我们的发现有多可靠。

为此,我们考虑上一节中示例的简单设置,即具有单位方差的高斯分布族。然后,我们考虑 q 的三种不同选择,分析后验 p(θ|X) 随着 N 增加的演化。

另外,我们还看看最大后验概率(MAP)估计值 q-MAP-N = p(。 q 的|θ-hat-N) 随着 N 的增加而演化,其中 θ-hat-Np(θ|X) 的最大化器。这有助于我们理解,通过查看后验 distribution⁵.的最大化器,我们可以多么精确地识别真实分布

好:高斯分布

对于第一种情况,我们考虑最好的情况,即 q 属于参数族,并且满足所有假设:

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

**方程式 5。**等价于 q(x)=p(x|θ=1)

我们从 q 抽取 10000 个样本,通过将抽取的样本对 N = 110000逐一相加,得到后验分布 p(θ|X=(x1,…,xN)) 和 MAP 估计 q-MAP-N — (图 1)。我们观察到当 N 增加(图 1,左侧)时 p(θ|X) 集中在真实参数周围,并且 MAP 估计收敛到真实分布 q (图 1,right)⁶.

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

图一。高斯分布为 q. 左图:作为 n 的函数的后验分布的均值(黑色实曲线)和标准差(灰色阴影区域)黑色虚线表示 q=p(.|θ=1).后验分布收敛于真实参数。垂直彩色线条显示 N=2、10、100 和 1000。右图:N=2、10、100 和 1000 时 q 的 MAP 估计值(彩色曲线)。黑色虚线表示真实的分布 q。

坏:拉普拉斯分布

对于第二种情况,我们考虑将单位均值的拉普拉斯分布作为真实分布:

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

在这种情况下, q 不属于参数族,但它仍然具有有限的均值和方差。因此,根据理论,后验分布应该集中在参数族上 q 的伪投影的参数 θ* 周围。以高斯族为例, θ* 始终是底层分布的均值,即 θ = 1* (见等式 4)

我们的模拟显示随着 N 的增加 p(θ|X) 确实集中在 θ = 1* 附近(图 2,左侧)。然而,MAP 估计收敛到一个与真实分布 q (图 2,右)完全不同的分布,这仅仅是因为我们在高斯分布中搜索拉普拉斯分布!这本质上是任何参数统计方法的问题:如果搜索错了地方,就找不到正确的分布!

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

图二。拉普拉斯分布为 q. 左图:后验分布的均值(黑色实曲线)和标准差(灰色阴影区域)为 n 的函数,黑色虚线表示 q 在参数族上的伪投影对应的参数,即θ*=1(见方程 4)。后验分布收敛于θ*。垂直彩色线条显示 N=2、10、100 和 1000。右图:N=2、10、100 和 1000 时 q 的 MAP 估计值(彩色曲线)。黑色虚线表示真实的分布 q。

柯西分布

对于我们的第三种也是最后一种情况,我们选择最差的情况,并将柯西分布(著名的重尾分布)视为真实分布:

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

在这种情况下, q 不属于参数族,但更关键的问题是柯西分布没有明确定义的均值或有限方差:所有理论的假设都被违反了!

我们的模拟显示, p(θ|X) 并不收敛于任何分布(图 3,左侧): p(θ|X) 的标准差趋于零,并集中在其均值附近,但均值本身并不收敛,而是从一个值跳到另一个值。问题是基本的:柯西分布和高斯分布之间的 KL 散度是无限的,与它们的参数无关!换句话说,根据 KL 散度,所有的高斯分布都与 q 等距(且无限远),所以不存在挑哪一个作为其估计的偏好!

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

图三。柯西分布如 q. 左图:作为 n 的函数的后验分布的均值(黑色实曲线)和标准差(灰色阴影区域),黑色虚线表示 q 的中值:如果 q 有均值,那么由于对称性,该均值将等于 1。后验分布不收敛于任何分布,其均值从一个值跳到另一个值。垂直彩色线条显示 N=2、10、100 和 1000。右图:N=2、10、100 和 1000 时 q 的 MAP 估计值(彩色曲线)。黑色虚线表示真实的分布 q。

结论

如果我们假设的参数分布族与真实分布 q 没有太大差异,那么后验分布总是集中在一个参数周围,该参数在某种程度上提供了关于 q 的信息。然而,如果 q 不在参数族中,该信息可能只是边缘信息,并不真正有用。最坏的情况是当 q参数族中的任何分布相差太大时:在这种情况下,后验分布是无信息的。

承认

感谢 Johanni BreaNavid Ardeshir 、Mohammad Tinati、 Valentin SchmutzGuillaume BellecKian Kalhor 对相关主题的多次讨论。

代码:

用于分析的所有代码(用 Julia 语言)可以在这里找到。

脚注:

有多个优秀的开放存取教科书,感兴趣的读者可以在其中找到更多关于贝叶斯统计的信息:布拉德利·埃夫隆和特雷弗·哈斯蒂的[1] " 计算机时代统计推断;安德鲁·格尔曼等人的[2] " 贝叶斯数据分析;大卫·麦凯的[3] " 信息论、推断和学习算法。此外,参见脚注 3 和 4 以及本在线课程

一个有趣的练习是估计 p(θ|X)p (θ;N) 都是。作为提示,请注意,您可以在p (θ;的最大化器周围使用不同分布的泰勒展开式。N) 。好奇的读者可能也想思考这些结果告诉我们关于参数 θ的最大似然估计的什么。

要了解更多关于贝叶斯推断的渐近一致性,你也可以看看 Barron et al. (1999)Walker (2004) 这两个众所周知的例子。

要了解更多关于模型错误设定下的统计推断,可以看看kle ijn and van der vaart(2006)kle ijn and van der vaart(2012)Wang and Blei (2019) 等几个众所周知的例子。

⁵我们还可以研究后验预测分布q-PPD-n(x)**= p(x | x)=∫p(x |θ)p(θ| x)dθ如何随着 N 的增加而演变。在我们同时具有高斯先验和高斯似然的设置中,我们有 q-MAP-N(x) = 正常 (x|μ=θ-hat-N,σ =1)q-PPD-N = 正常 (x|μ=θ-hat-N,σ =1+1/(N+1)) 。因此,我们对 q-MAP-N 的所有定性观察对于 q-PPD-N 也是正确的。

⁶有趣的练习给感兴趣的读者:你能计算出作为 q 方差函数的收敛速度吗?根据你的计算,你在图中看到的有意义吗?

数据工程师能从软件工程师那里学到什么,反之亦然

原文:https://towardsdatascience.com/what-data-engineers-can-learn-from-software-engineers-and-vice-versa-643cade3ef23

不要被你的工作描述所限制

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

照片由上的拍下

在过去五年的职业生涯中,我成为了一名全职软件工程师和一名全职数据工程师。我注意到这两个角色有很多相似之处,帮助我顺利地从一个角色转换到另一个角色,但也有明显的差异,促使我学习新的技能。

分享它们的不同之处,更重要的是,从我的角度来看,一个角色可以从另一个角色身上学到什么,这将是一件有趣的事情。如果你正在考虑换工作,我希望这篇文章能给你一些启发。即使你不是,这篇文章仍然会帮助你离开你的舒适区,向别人学习。

我的情况

由于这篇文章会很主观,是否真的适合你要看了,我就简单说明一下我的情况。

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

软件工程->数据工程师(由创立)

我最初在一家国际银行做软件工程师。我的工作是几乎从零开始构建软件来集成不同的内部银行应用程序,如数据仓库和报告工具。我主要使用的技术是 Python 作为主要编程语言,Apache Kafka 作为流媒体平台,RestAPI 框架如 Connexion 和 FastAPI,以及一点 SQL。

后来我跳槽到了一家创业公司,成为了一名数据工程师。我花了大部分时间使用诸如 Airflow 和 dbt 之类的工具构建数据管道和数据模型。整个堆栈在 GCP 上运行,所以我也可以学习云服务,如 BigQuery、Pubsub、云存储等。

正如你所看到的,虽然我有两个不同的职位,但他们在技术和工作类型上确实有共同点,那就是将数据从一个地方移动到另一个地方。这就是为什么我更容易做出改变。如果你是一个专注于 web 应用的软件工程师,那么这个转变对你来说可能更有意义。

软件工程师与数据工程师

维基百科将软件工程师定义为应用软件工程原理来设计、开发、维护、测试和评估计算机软件的人。

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

创作人:高

软件工程师是一个非常广泛的工作范畴。每个软件工程师的职责可能完全不同。总体而言,他们的任务包括:

  1. 从涉众、开发人员和其他利益相关方收集需求。软件需求包括功能性需求(如业务规则)和非功能性需求(如可靠性、可伸缩性、性能)。
  2. 设计系统的架构、组件、接口和其他特征。它涉及到与其他工程团队的合作,以确保解决方案能够融入大局。它还包括详细的实现设计,如算法、数据结构等。
  3. 使用一种或多种编程语言开发软件。
  4. 测试软件使用单元测试、集成测试、用户验收测试、冒烟测试等。这是一个实验性的,技术性的调查,为涉众提供关于软件质量的信息。
  5. 一旦软件投入使用,就对其进行维护。它指的是在发现错误时更新软件和监控服务的健康状况等活动。

软件工程师这个术语从 20 世纪 60 年代开始正式使用。随着领域变得越来越大越来越复杂,术语软件工程师不再足够清晰地描述这个人在做什么。因此,出现了许多新的工作角色,它们是软件工程师的分支:

  • 全栈工程师—专注于 web 应用。
  • IOS/Android 开发者——专注于移动应用。
  • DevOps 工程师—开发和维护软件的发布、部署和运行流程。

同样,数据工程师也被认为是软件工程师的一个分支,重点是大数据。直到 2010 年代,数据工程师这个术语才被广泛采用。

维基百科将数据工程师定义为构建系统以收集和使用数据的人。

没错。数据工程师不是像构建 web 应用程序那样构建软件,而是构建一个系统。但是,让我们看看数据工程师的任务:

  1. 收集所有相关方的需求。这和软件工程师是一样的。
  2. 建立数据管道,从源系统收集原始数据,并将它们转换成数据用户可以理解的信息。数据工程师通常使用现有工具(如 Airflow 和 dbt)构建数据管道和数据模型。
  3. 上线后维护管道。与软件一样,监控数据管道的健康状况以确保数据的可靠性非常重要。

一般来说,数据工程师是软件工程领域的专家。下表显示了这两种角色之间的一些差异。

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

创作人:高

数据工程师能从软件工程师身上学到什么?

了解了他们的异同之后,再来看看他们是如何互相学习的。

  • 测试,测试,测试

测试是软件工程生命周期中必不可少的单元。它帮助工程团队评估软件的质量,并确保它满足涉众的需求。

开发了一套软件测试策略,如单元测试、集成测试和用户验收测试,以减轻产品风险。一种常见的做法是将这些测试编码到 CI/CD 管道中,这样如果没有通过测试,软件将无法部署。

编写测试是每个软件工程师的 DNA,有许多测试框架,如 TDD(测试驱动开发)和 BDD(行为驱动开发)来帮助工程师编写测试。然而,对于数据工程师来说,测试仍然被视为必须拥有的东西。几个原因可能是:

  • 数据管道正在处理许多未知因素。不像常规应用程序那样需要更多的输入,数据管道从许多来源接收各种格式的数据。除非我们有严格的数据契约,否则很难预测所有类型的数据并涵盖所有场景。(数据契约是现在的热门话题,你可以在查德·桑德森的博客文章中读到更多。)
  • 甲骨文问题 Oracle 问题是指难以确定预期产出的情况。由于许多未知因素,有许多情况我们不知道如何处理,这也增加了难度。
  • SQL 天生难以执行单元测试。SQL 是数据工程师的主流编程语言。但是执行单元测试并不容易,因为代码通常是一个很大的块,很难取出一部分来只测试那一部分。此外,像 BigQuery 这样的云服务没有本地环境(例如在本地运行 Postgres docker),因此测试期间的远程连接可能会造成麻烦。目前,大多数测试都是数据测试,不测试业务逻辑,而是测试数据质量,包括数据的新鲜度、完整性和唯一性。

关于 dbt 中的测试主题,你可以阅读我的如何在 dbt 中进行单元测试的文章。

近年来,随着数据工程领域越来越成熟,自动化测试终于比以往更多地被提及。像远大前程dbtDagster 这样的框架开发了简化测试的特性,从而提高了数据管道和数据模型的质量。

  • 编码技巧

大多数数据工程团队使用数据工具,如 Airflow、Dagster 和 dbt。相比于作为软件工程师写底层代码,他们更抽象,更容易管理。但是核心数据处理仍然需要在整个管道中编写。

除了 SQL 之外,精通至少一种编程语言是很重要的。熟悉编程语言也使得为开源项目做贡献成为可能,例如,Airflow。

最近出现的基础设施代码(IaC)和管道代码(PaC)在数据工程领域越来越流行。它们减轻了基础设施管理和发布周期管理的负担。熟悉 terraform、bash 和 Github 动作肯定会提高数据工程师的工作效率。

  • 监测数据产品的可靠性

在软件工程中,通常是在服务上线后才进行监控。监控使开发人员能够在问题还很小的时候就迅速发现问题。

数据产品监测,或者换句话说,数据可观测性还是一个新概念。数据可观察性允许组织完全了解他们的数据系统,并在早期阶段修复数据问题。数据管道是由许多步骤组成的复杂系统。考虑到流程中的许多步骤,在一个仪表板中找到错误指标的根本原因是令人沮丧的。

数据工程师应该更愿意在设计阶段的开始就有一个监控的心态,以避免潜在的挫折。

软件工程师能从数据工程师那里学到什么?

好吧,让我们看看另一边。虽然软件工程师是一般角色,但他们还是可以学习数据工程师的专业知识。

  • 更愿意学习新技术

数据工程是一个基于工具的领域,并且这个领域还在不断发展。谷歌“数据工程景观”会返回带有数百种数据工具的图片。要跟上每一个工具是不可能的,但是偶尔跟上绝对是值得的。

网站现代数据栈为每个类别收集了很多数据工具。

成为数据工程师后,我花了更多的时间阅读数据博客和产品发布说明,并比以往更频繁地参加会议。我发现这是所有软件工程师的好习惯。无论你做什么类型的工作,浏览你的 LinkedIn 帖子和媒体,看看你所在的领域是否有新的东西可以吸收,这总是好的。

如果你发现你所在领域的前景已经相当稳定,你可能需要重新考虑这份工作对你来说是否仍然有趣或具有挑战性。

  • 更负责端到端系统

如前所述,数据工程师负责端到端系统。它要求工程师有能力同时处理多个组件。当我还是一名软件工程师时,我主要关注我自己的组件。

关注多个组件是成为架构师的先决条件。软件架构师是负责与整个系统行为相关的高级设计选择的人。如果你的目标是成为一名软件架构师,你应该更加关注系统设计。

  • 想想成本

这是我作为软件工程师从未想过的一个有趣的视角。数据工程师处理大数据,因此拥有一种经济高效的方法来存储和转换数据变得极其重要,尤其是对初创公司而言。

尽管成本不是软件工程师首先要考虑的事情,但无论从财务角度还是流程角度,始终考虑效率和效果都是一个好习惯。例如,如何改进软件以使用更少的内存、CPU 和存储。

结论

在这篇文章中,我谈到了数据工程师和软件工程师可以互相学习的东西。他们有相似但互补的专业知识。如今的科技市场已经衍生出许多新的职位,未来还会更多。根据公司的不同,工作之间的界限可以是清晰的,也可以是模糊的,但是不要被你的工作描述要求你做的事情所限制。保持开放的心态,不断学习。干杯!

缺少哪些数据科学在线学习平台

原文:https://towardsdatascience.com/what-data-science-online-learning-platforms-are-missing-713482c6ebc1

好奇心是你的朋友

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

布雷特·乔丹在 Unsplash 上的照片

如果你已经完成了一门课程,但仍然不知道你现在应该知道什么,不要担心。

如今,在线学习平台无处不在,对于任何想要学习新概念或提高技能的初出茅庐甚至是成熟的数据专业人士来说,这都是一种极好的资源。

介于这两个极端之间,我是在线学习平台的忠实粉丝。首先,与学院或大学里更传统的课堂式课程相比,它们相对便宜,因此各行各业的人都可以参加。其次,根据平台的不同,您可以探索各种各样的主题来拓宽您的数据视野。第三,一系列可用的教学方法将适用于大多数学习方式,无论是通过互动课程还是讲座式的内容。

这些综合因素实际上有助于任何希望学习数据专业的人在他们的领域变得非常博学。

然而。

而且还有一个然。

在成为一个在线平台的成员并尽可能多地学习数据科学相关主题一年后,我开始注意到缺少了一些东西。

感觉这些课程就像是一个打勾练习,其中简单地提到了某些方法或功能,但没有详细解释。这就好像有人拿着一个剪贴板,上面写着“一个数据科学家必须听说过的所有事情”,并确保每个术语都被检查出来,不管是否有一个好的解释。我在另一篇文章这里中提到了这样做的后果。

有时,所用的例子几乎是“太完美了”。你会问一些问题:

但是这种技术如何处理我的数据呢?

当我在自己的项目中使用该技术时,为什么会出现所有这些错误?

现在,我不想让人觉得我讨厌在线学习平台。正如我上面提到的,我是一个超级粉丝,现在仍然使用它们来发展我的技能。但我想谈谈一些事情,这些事情将补充任何人在使用这些平台以更全面的方式增加他们的数据清单时的旅程。

  1. 好奇。如果你不理解某个主题,因为它的描述方式或他们在例子中使用的数据集,做更多的研究。将会有无限量的帖子或视频用不同的数据集解释这个概念,这可能会帮助你找到拼图中缺失的部分。(如果你找不到任何全面解释这个话题的文章,那么这是一个写你自己文章的好机会!)
  2. 阅读文档。尽量不要把你从课程中学到的任何东西当作真理。通过在线阅读官方文档,了解每个函数或方法的参数是干什么的。这些应该包含你需要知道的一切。仅仅因为学习平台在一个函数中使用了一个特定的参数,并不意味着这个参数是你应该一直使用的或者对你的数据是正确的。
  3. **尽量不要用手提钻解决你的数据问题。**您刚刚在课程中学习的机器学习算法或可视化技术可能不是用于您的数据的最佳方法——尽量不要被近期偏差所诱惑!当然,你可以试一试,但是如果准确度分数不是很高或者你的观想看起来很糟糕,不要放弃。尝试各种技巧,选择最有效或看起来最好的!
  4. 对自己有信心。如果你已经完成了一门课程,但仍然不知道你现在应该知道什么,不要担心。有时需要时间来吸收知识。这没关系。与其仓促行事,只理解一半的理论,不如慢慢来,适当地提高自己的技能。

如果你正在读这篇文章,并且你有任何其他对你的学习之旅有帮助的建议,请在评论中提出来!

科学家能从经济学家那里学到什么

原文:https://towardsdatascience.com/what-data-scientists-can-learn-from-economists-a08b40c13fee

我最近看到两篇文章(第一部分 1 和第二部分 2 )将 ROC 图背后的思想归纳为一个更广泛的经济学驱动的模型选择框架。这是一个更广泛的值得关注的话题的一部分,但通常被完全排除在讨论之外。事实上,“像经济学家一样思考”的能力是大多数数据科学家应该拥有的绝对必要的技能,而且它是可以学习的。请记住,对于局外人来说,数据科学家就像谚语中的拿着锤子的人,对他来说,每个问题都像钉子。我们应该学会展示我们的“模型”为一个给定的用例提供的真正价值(如果有的话),并且用我们的观众能够理解的术语来表达。换句话说,我们应该根据每美元能产生多少效果来评估我们的模型,但是我们经常仅仅停留在效果上(例如,高精度,AUC,等等),而忽略了美元(货币成本和收益)。让我们改变这种心态。

每当我们在复杂的权衡面前犹豫不决时,一个想法是尝试快速利弊分析:对于每一个可能的结果,我们写下利弊,并找到一种方法将它们添加到一个单一的“目标”中,以表达我们对每个结果的总体满意程度。经济学家称之为效用。效用通常用货币术语来表达,但在更抽象的层面上,效用表达的是我们从给定结果中获得的净“收益”或“满意度”(如果效用为负,则是“不满意度”)。由于多种结果是可能的,我们可以通过给每种结果分配一个概率来表达我们的不确定性,并通过对所有可能结果的效用进行平均来计算预期效用

同样,如果机器学习模型的预期效用大于它试图取代的任何过程,那么它就值得部署,这被称为基线。基线可能是某个人抛硬币决定的,但这在实践中不太可能。更有可能的是基于规则的过程或现有的机器学习模型,我们声称新模型可以对其进行改进。对于这篇文章,我们把重点放在二进制分类ROC 图作为我们的例子,因为它传达了主要思想,并且有一个很好的视觉效果,但是我们可以在其他上下文中应用类似的思想。

要复习二进制分类和 ROC 图,请阅读上一篇文章。从那篇文章中得出的结论是,我们在比较机器学习模型时必须小心,因为在竞争目标之间存在权衡,例如最大化真阳性,同时最小化假阳性。由于经济学大致上是研究人们在面临约束和不确定性时如何做出决策,因此在相互竞争的目标之间找到正确的平衡是大多数经济学家非常熟悉的事情。解决方案在于使用期望效用来驱动数据科学中的模型选择,从而改进传统的评价指标。让我们现在进入杂草。

因为我们的例子是基于二进制分类,一个好的起点是我们的老朋友混淆矩阵。回想一下, TP s、 FN s、 FP s 和 TN s 的计数取决于阈值 t ,标准化度量 TPRFPR 也是如此,它们可以从计数中导出。我们现在向混淆矩阵中的每个单元格添加两种数据点(如下所示):

  • 在第一行中,我们有每个单元的预期比例,它取决于由 TPR(t)FPR(t) 判断的类比例(正类的 p1-p )和模型性能
  • 在第二行,我们得到了这个单元的效用。例如,如果结果是 TP ,那么 v_TP 是与该结果相关的效用,给我们左上角的单元格。通常能够定义这样一个效用函数是经济学家被雇佣的首要原因,但是我们认为这样一个函数的存在是理所当然的。在制造环境中,一个 TP 是我们卖给一个满意客户的工作产品。一个 FN 是我们丢弃的工作产品,因为我们的模型被错误地识别为有缺陷,一个 FP 是我们的模型遗漏的有缺陷的产品,我们把它卖给了一个不知情的客户,最后一个 TN 是我们由于我们的模型识别的实际故障而丢弃的产品。我们可以开始想象在每种情况下计算成本的方法,但是我们在这里关心的是由 v_TPv_FNv_FPv_TN 给出的最终结果。这些代表了每种情况导致的收益(温暖和模糊的感觉,如果你喜欢的话)或损失(下沉的恐惧的感觉,如果你喜欢的话)。所以效用可以是正的,也可以是负的。预期效用是这四个值的加权平均值,按每个值的概率加权。

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

作者图片

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

注意,我们使用了这样一个事实:FNR(t) = 1-TPR(t) 和 TNR(t) = 1-FPR(t) 来将期望效用写成 TPR 和 FPR 的函数。由于 TPRFPR 是阈值 t 的函数,预期效用也是 t 的函数,连同其他输入。因此,我们可以通过两种方式来可视化预期效用:(1)绘制效用曲线(称为无差异曲线)作为 TPRFPR 的函数,以便我们可以在 ROC 空间中可视化它,以及(2)绘制预期效用作为 t 的函数,以便我们可以在模型选择期间找到 t 的最佳值。我们将在这里两者都做,但首先让我们做一些数学。

当两个结果具有相同的预期效用时,我们说我们对这两个结果不感兴趣。因此,为了在 ROC 空间中可视化效用,我们可以通过将期望效用设置为某个常数,并根据 TPRFPR 求解该方程,来绘制无差异曲线。由于 TPRFPR 是相互竞争的目标,我们应该看到一个斜率,表明 TPR增加的任何收益至少在一定程度上被由于 FPR 增加而产生的成本抵消。无差异曲线的斜率 s 决定了我们愿意用 TPR换取 FPR的比率。我们如何找到 s?我们采用上面的期望效用方程,将其设置为某个常数,然后尝试根据 TPRFPR 重写它,将所有其他项移动到左侧的单个常数,我们称之为 c 。经过所有的代数重组后,结果如下:****

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

现在我们从基础微积分中知道一个写为 c = yb + xa 的方程在 x-y 空间中是线性并且有一个斜率-a/b 给出。这意味着将期望效用设置为等于某个常数描绘出无差别“曲线”,即在 TPR-FPR 空间中的直线。线的斜率由下式给出

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

斜率有一个直观的意义,所以让我们解开它。正如我们在上面看到的,它被分成两部分:第一项是类比例的比率(负对正),第二项是正确分类的效用减去错误分类的效用的比率(负对正)。因此,第一项考虑了每一类的相对权重,第二项考虑了每一类的相对“性价比”。我们现在拥有了像经济学家一样评估我们的模型所需要的一切。****

回想一下,由于 TPRFPR 之间的权衡,导致 s > 0 。在机器学习课程中,我们了解到,对于二元分类,我们可以绘制 ROC 图,并使用 45 度线作为我们的基线,我们认为这是通过投掷无偏硬币来随机猜测类别的“模型”。但实际上,即使对于基线来说,这也是一个相当低的门槛,只有当 s 接近 1 时才有意义。否则,我们需要使用一个不那么幼稚的基线。这通过 ROC 空间中的蓝色无差别曲线(顶部两个图)或通过绘制预期效用与阈值 t (底部两个图)来显示:

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

作者图片

  • s = 1 时,组成 s 的两个术语之间有一种平衡,这意味着每个类别的相对比例由我们对其进行正确分类所获得的“有利可图”来平衡。在这种情况下,黄线可以作为我们的基线。请注意,按照这个标准,绿色和红色模型都很好地超越了基线。
  • 左侧 我们有 s > 1 ,这意味着(a) 负面类别比正面类别多,或者(b)就效用而言,正确分类负面类别比正确分类正面类别多,或者(a)和(b)都成立。在这种情况下,一个好的起始基线是设置 t = 1 ,这意味着我们总是拒绝,导致 FPR = 0TPR = 0 ,我们可以使用它们作为输入来计算预期效用并描绘出蓝色所示的无差异曲线,作为我们的新基线。请注意,无论 t 如何,红色模型总是低于基线,而绿色模型在接近 1 的 t 的一些值(对应于 ROC 图的左下角)超过基线。
  • 在右手边的上,我们有 s < 1 ,这意味着(a) 正类超过负类,或者(b)就效用而言,正确分类正类超过正确分类负类,或者(a)和(b)都成立。在这种情况下,一个好的起始基线是设置 t = 0 ,这意味着我们总是接受,导致 FPR = 1TPR = 1 ,我们可以使用它们作为输入来计算预期效用并描绘出蓝色所示的无差异曲线,作为我们的新基线。请注意,无论 t 如何,红色模型总是低于基线,而绿色模型在 t 的某些值接近 0 时超过基线(对应于 ROC 图中的右上角*)。*

事后看来,这一切似乎很直观,但使用无差异曲线,我们将这一想法形式化。相当令人印象深刻!总之,通过测量预期效用,我们能够在模型选择过程中做出更明智的决策,以业务约束为指导,而不仅仅是测试数据上的模型性能。

DataOps 到底是什么

原文:https://towardsdatascience.com/what-dataops-is-exactly-c895a47421ae

软件部署

DataOps 概述以及它与其他开发运维实践的不同之处

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

照片由法比奥Unsplash 上拍摄

很难夸大数据在现代企业中的重要性。作为一个新的流行词,DataOps 旨在帮助组织克服数据分析过程中的障碍。**但是这种新兴的实践到底是什么,它如何帮助企业更好地利用他们的数据?**在本文中,我们将通过观察 DataOps 的各个方面并研究它补充其他 DevOps 和 MLOps 实践的方式,来探索 data ops 变得有多重要。

文章组织如下:

  • 什么是数据操作
  • 数据操作的七个步骤
  • 数据操作 vs 操作
  • 数据操作工具

1 什么是数据操作

DataOps 是将 DevOps 原则应用于数据生命周期的结果。DataOps 的基本理念是,“如果您围绕这一点构建一个系统,使大量监控、部署和协作实现自动化,您的工作效率就会大大提高,您的客户也会更加满意,最终您会做得更好。”

DataOps 专注于三个流程:

  • 减少错误,提高您的客户数据信任度。实际上,你应该监控所有的软件,目的是检查你正在做的事情。
  • **部署的周期时间,**这涉及到你能以多快的速度将新模型、新数据集和新可视化从你的脑海中带入生产。这一方面涉及速度和风险。
  • 提高团队生产力,减少会议和协作的次数。

所有先前定义的过程都是可度量的,您应该度量它们。例如,您应该衡量回答以下问题的指标:

  • 你的团队做了多少工作?
  • 东西多久坏一次?
  • 你把新东西投入生产的速度有多快?

这些都是非常重要的指标。与其说是关于数据科学或数据工程。你总是优化整体而不是局部。这个想法是向人们展示你的工作,从他们那里获得反馈,然后重复这个反馈。

2 数据运营的七个步骤

数据操作包括以下七个步骤:

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

作者图片

  • **向逻辑测试添加数据,**从 DevOps 移至 DataOps。
  • 把你的代码放到版本控制中。不要把它放在你硬盘的某个地方或者文件共享上。您可以使用 Github 或 GitLab 之类的框架。
  • 分支合并。当你在开发中改变一些东西时,运行自动化测试来判断回归或影响分析。如果你改变了后端的一些东西,你能够以一种非常简单的方式判断前端是否坏了。
  • 编写在生产中运行的自动化测试。您应该测试您的代码是否按预期运行。
  • 使用多种环境。许多开发人员在生产级别处理同一个项目可能会导致冲突。因此,每个团队成员都可以在项目的本地副本上工作是很重要的。
  • 再利用和集装箱化。您应该重用您的代码,并使它在您的本地机器上独立工作。由于这个原因,你应该用容器包装你的软件,比如 docker。
  • 过程参数化,让你的软件管道灵活应对变化。

你可以在这个链接找到更多关于数据操作七个步骤的信息。

要运行您的测试,您可以使用诸如 Great Expectations 这样的工具。然而,您也可以自己编写测试,在很多方面都非常简单。例如,您可以进行行数检查,或者编写 SQL 查询来进行测试。

所以整个想法是这些测试:

  • 应该自动完成,
  • 处于版本控制中
  • 生产期间运行,
  • 在开发过程中运行。

实际上,大约 10%的工作应该是开发自动化测试。

3 数据操作与多操作

DataOps 和 MLOps 有什么区别?它们是一样的还是不同的?

对此有两个答案。从一个工程师的角度来看,答案是否定的也是同样的想法。只是 DevOps 应用于数据,所以你叫它 DataOps 或者 MLOps。

**从更一般的角度来看,答案是肯定的。**您可以使用术语 DataOps 来包含数据、模型、可视化和治理。DataOps 的目标是优化整体,而不仅仅是一个部分。

更正式的说法是,DataOps 是构建组织的数据基础架构的概念,这种方式不仅能让您的组织表现更好,还能更加敏捷。不仅仅是有好的数据;这是关于拥有值得信赖和可靠的数据。

数据运营可以带来以下好处:

  • 提高数据质量
  • 提高数据速度
  • 提高数据效率
  • 提高数据的准确性
  • 提高使用相同数据集的团队或部门之间的一致性(即减少错误)

下图显示了数据、机器学习、开发和运营的具体重点:

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

作者图片

4 个数据操作工具

DataOps 工具自动化并简化了数据生命周期的所有部分。它们提高了组织数据管理的灵活性,并加快了用户数据分析的速度。

有四种类型的数据操作工具:

  • 一体化工具,专注于数据管理,如数据摄取、转换、分析和可视化。
  • DataOps 编排工具,允许您以集中的方式管理复杂的数据管道。
  • 组件工具,只关注整个管道的单个组件。
  • 案例专用工具,专注于特定领域。

一些流行的数据操作工具包括远大前程数据表单断言蒙特卡洛dbt 测试

摘要

恭喜你!您刚刚学习了数据操作背后的基本概念!

DataOps 方法对任何公司来说都是一个强大的工具,值得花时间来了解该框架及其优势。要记住的最重要的事情是,这个实践是关于协作的。

它是关于建立一种文化,在这种文化中,从工程师到数据科学家的每个人都与他们的利益相关者一起工作,以便更快、更有效地产生数据驱动的结果。

这篇文章的内容受到了克里斯托弗·伯格在 DataTalks.Club 的播客插曲 Storytime for DataOps 的启发。

原贴于 DataTalks。 俱乐部。

相关文章

DevOps 和 MLOps 是一回事吗?

DevOps(开发和运营)是一组尝试在开发和运营团队之间建立协作的最佳实践,目的是尽可能自动化软件部署过程。

在过去十年中,DevOps 部门取得了很大进展,达到了… 继续阅读

1966 年制造的一个聊天机器人告诉了我们关于人类语言的什么?

原文:https://towardsdatascience.com/what-did-a-chat-bot-made-in-1966-tell-us-about-human-language-886613a16a7f

语言是人类智力水平的典型标志。但是对计算机来说,进行对话到底有多难呢?

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

亚历山大·沙托夫在 Unsplash 上拍摄的照片

今年早些时候,谷歌的一名工程师发表了一项声明:他认为 LaMDA——谷歌的内部语言模型——具有感知特征。伴随公告的是几页文字记录,包括他和机器之间的对话。这些对话极其逼真,就好像是两个人之间的对话。这些文字记录在主要的新闻网络上被大量报道,争论着 LaMDA 是否真的有自我意识和智慧。许多机器学习和人工智能研究人员,如 Yann Lecun戴密斯·哈萨比斯Yannic Kilcher ,都持否定立场。他们认为 LaMDA 是一个令人印象深刻的语言模型,但远非真正的智能。

这在人工智能领域并不是新闻。50 多年前,另一个聊天机器人是使用基本的语言规则创建的。令人惊讶的是,它愚弄了比预期更多的人,让他们认为它是智能的。

治疗师

Joseph Weizenbaum 静静地看着他的测试对象向计算机终端输入命令。测试对象正在与伊莱扎对话,伊莱扎是一个被设计成治疗师的计算机程序。

那是在 1966 年左右。在这一点上,Weizenbaum 已经在计算机上工作了很长时间。他开始从事模拟计算机的工作,模拟计算机使用真空管和液压系统代替晶体管。他帮助开发了早期的数字计算机,后来在 1955 年开发了第一台银行计算机。无论如何,他是计算机领域的先驱。

但韦岑鲍姆本质上是一个人道主义者。他经常想知道智能的本质以及人和机器之间的关系。即使在那个时候,人工智能作为一个领域已经开始蓬勃发展。提出了建立和判断智力的竞争性技术和定理。其中最著名的可能是图灵测试。在图灵测试中,人类会通过与未知系统对话来评估该系统,并根据对话的质量来判断该系统是否具有人类智能。

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

Unsplash 上由 Ugi K. 拍摄的照片

图灵测试的简单性可能会让韦岑鲍姆产生怀疑。毕竟,这是一个非常主观的测试,完全基于语言。所以他研究了分割语言的不同方法,以便将陈述转换成答案。以下面的语句为例:

看来 讨厌

Weizenbaum 注意到,通过只识别重要的单词和短语,如“你”和“我”,并丢弃其余的,句子可以形式化为

X你 Y我。

然后可以转化成一个问题

为什么你觉得我讨厌你*?*****

他还可以对单词和短语的重要性进行排序。拿下面这句话来说:

知道大家都在嘲笑我。****

单词“我”和“我”被突出显示,但是 Weizenbaum 注意到当人们使用“每个人”时,他们经常谈论特定的人。因此,短语“每个人”具有更高的优先级,可以使用不同的答案

谁特别嘲笑过

这是韦岑鲍姆会话体系的基础。他把这个程序命名为伊莱扎,以剧中学习如何与他人交谈的主角“皮格马利翁”命名。伊莱扎用过各种剧本,其中最成功的叫做《医生》。医生模仿了颇有影响的心理学家卡尔·罗杰斯的治疗风格。

这让我们回到了 1966 年。韦森鲍姆正在观察他的实验对象与伊莱扎的互动。受试者在屏幕上打字,伊莱扎回复了医生的脚本:

人类:男人都一样。

电脑:用什么方式?

人类:他们总是为这样或那样的事情烦我们。

计算机:你能想出一个具体的例子吗?

人类:嗯,我男朋友让我来的。

电脑:你男朋友让你来的

人类:他说我大部分时间都很沮丧。

电脑:听说你很沮丧,我很难过

人类:是真的。我不开心。

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

照片由艾蒂安·布朗热Unsplash 上拍摄

过了一会儿,这个人转过身来,礼貌地请 Weizenbaum 走出房间,以便给她一些隐私。这让 Weizenbaum 大吃一惊——他的测试对象使用一个不到 200 行代码的程序,体验了一次接近真实的治疗过程!

到底发生了什么?

伊莱扎去说服许多其他人,他们正在与它进行有意义的对话。20 世纪 70 年代的一则轶事说,一位销售主管与它交谈,认为他在与麻省理工学院的一位客户交谈。伊莱扎可能不是真正的智能,今天我们可以构建更高级的语言模型,但它在构建自然语言系统方面教会了我们许多宝贵的经验。

语言模型不一定要好到可信

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

威廉·纳瓦罗在 Unsplash 上的照片

伊莱扎如此成功的原因后来被描述为伊莱扎效应。事实证明,人类倾向于给我们连接的计算机程序赋予人类的特征。这就是为什么史蒂夫·乔布斯想让麦金塔说“你好”的原因。这也是为什么尽管语言模型直到最近才变得好,但聊天机器人已经在商业上存在了很长时间。ELIZA 中使用的启发式方法——扫描重要的单词,然后对它们进行排序以确定响应——现在仍在许多聊天机器人中使用。假设你正在为一家披萨外卖公司编写一个聊天机器人。您首先收到一个提示。

我要一份 大披萨 芝士 腊肠 浇头送来 尽快

然后,你可以扫描重要的词,并提供适当的答复。

一份 大披萨芝士* 意大利腊肠 ,马上来!你要把它 送到哪里 *****

也许 ELIZA 最令人惊讶的方面是它是多么简单——它的整个工作过程用了不到 10 页的篇幅来描述。正如 Ian Goodfellow 在《深度学习》一书中所说:

在许多情况下,使用简单但不确定的规则比复杂但确定的规则更实际[……]

通过图灵测试容易吗?

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

布雷特·乔丹在 Unsplash 上的照片

许多人认为 ELIZA 应该被认为是第一个通过图灵测试的程序。许多人用伊莱扎作为例子,说明图灵测试在判断智力方面是不完全的。还记得 LaMDA,那个对话被发表的语言模型吗?你会说对话的质量意味着 LaMDA 有类似智力的东西吗?这仅仅是一个统计结果,仅仅是一个算法的结果吗?还是两者是一回事?

1980 年,哲学家约翰·塞尔提出了一个名为“中国房间”的思想实验。在中文教室里,有一个人拿着一本中文字典和一本规则书。规则手册包含了强大的人工智能语言模型的执行步骤。这个人对中文一无所知,每次他从房间外的一个说中文的人那里得到提示时,他都会使用规则书做出适当的反应。如果遵循书中的所有规则,他能做出可信的反应,那么他真的能理解正在交谈的内容吗?塞尔认为,这个人显然没有,规则书也没有,因此简单的交谈和通过图灵测试并不意味着理解。

中国室遇到了很多批评和赞扬。在此,我仅举一个批评:前提定义不清。前提认为理解和遵循指令是两回事。这种批评说它们是一样的,“理解/意识”是许多复杂指令共同作用的结果。

韦岑鲍姆的警告

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

附身摄影Unsplash 上拍照

伊莱扎开启了 NLP 的革命。然而,Weizenbaum 用一种有点阴暗的观点看待他的创作。有一次,他试图让 ELIZA 记录它的交互,这样他可以在以后检查它们。他立即遭到了研究对象的抵制,称这类似于侵犯他们最深的隐私。他发现,人类将秘密透露给不思考的机器是反乌托邦的症状和标志。对他来说,是高度工业化的世界将人们禁锢在加压的环境中,让他们如此容易地与像伊莱扎这样的算法联系起来。因为人类不理解他们与之互动的计算机系统,他们把他们所知道的唯一特征——他们自己——归因于伊莱扎。

在晚年,Weizenbaum 对人工智能和计算机的影响感到更加消极。他明确区分了决策(计算机)和选择(人类),并认为计算机的能力是有限的。Weizenbaum 死于 2008 年,在现代神经网络革命之前。人们一定想知道他会如何看待如今机器学习的应用,或者 GPT 或 LaMDA 等语言模型。

来源

[1]魏曾鲍姆,约瑟夫。“计算机能力和人类理性:从判断到计算.”(1976).

[2]约瑟夫·韦岑鲍姆。"伊莱扎——一个研究人机自然语言交流的计算机程序."美国计算机学会的通讯 9.1(1966):36–45。

[3]https://spectrum . IEEE . org/why-people-required-privacy-to-confident-in-the-world-first-chatbot

各国在联合国一般性辩论上谈些什么?使用 LDA 的主题建模

原文:https://towardsdatascience.com/what-do-countries-talk-about-at-the-un-general-debate-topic-modelings-using-lda-19873cf00fe0

LDA 背后的直觉及其局限性,以及使用 Gensim 的 python 实现

兰楚罗伯特·扬·索科列维奇拍摄。在这里找到这篇文章的代码

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

照片由 Siora 摄影Unsplash 上拍摄

1.什么是潜在狄利克雷分配?

在分析大量文本时,潜在狄利克雷分配(LDA)是一种流行的模型。它是一个生成概率模型,使用户能够从一组文档中发现隐藏的(“潜在的”)主题。LDA 将每个文档建模为通过从统计分布中重复采样单词和主题的过程而生成的。通过应用巧妙的算法,LDA 能够恢复在这个生成过程中使用的最可能的分布(Blei,2003)。这些分布告诉我们存在哪些主题,以及它们是如何在每个文档中分布的。

让我们首先考虑一个简单的例子来说明 LDA 的一些关键特性。假设我们有以下 5 个文档的集合

  • 🍕🍕🍕🍕🍕🦞🦞🦞🐍🐍🐋🐋🐢🐌🍅
  • 🐌🐌🐌🐌🐍🐍🐍🐋🐋🐋🦜🦜🐬🐢🐊
  • 🐋🐋🐋🐋🐋🐋🐢🐢🐢🐌🐌🐌🐍🐊🍕
  • 🍭🍭🍭🍭🍭🍭🍕🍕🍕🍕🍅🍅🦞🐍🐋
  • 🐋🐋🐋🐋🐋🐋🐋🐌🐌🐌🐌🐌🐍🐍🐢

并且希望了解存在哪种主题以及它们如何在文档之间分布。快速观察显示,我们有很多与食物和动物相关的表情符号

  • 食物: {🍕,🍅,🍭,🦞}
  • 动物: {🦞🐍🐋🐬🐌🦜}

并且这些主题在每个文件中出现的比例不同。文档 4 主要是关于食物的,文档 5 主要是关于动物的,前三个文档是这些主题的混合。这就是我们在谈论主题分布时所指的,主题的比例在每个文档中的分布是不同的。此外,我们看到表情符号🐋和🍭比其他表情符号出现得更频繁。这就是我们在讲每个题目的单词分布时所指的。

这些主题和每个主题中的单词的分布正是 LDA 返回给我们的。在上面的例子中,我们将每个主题分别标记为食物动物,不幸的是,LDA 没有为我们做这件事。它只是返回给我们每个主题的单词分布,作为用户,我们必须从中推断出主题的实际含义。

那么 LDA 是如何实现每个话题的词分布的呢?如前所述,它假设每个文档都是通过从各种分布中抽取主题和单词的随机过程产生的,并使用一种聪明的算法来寻找最有可能产生数据的参数。

得到💬任何数据科学或编程问题的 GPT 式答案。为成千上万的人生成摘要和学习笔记📚只需一次点击即可获得学习资源。👉

https://aigents.co/learn

2。LDA 背后的直觉

LDA 是一个概率模型,它利用了狄利克雷分布和多项分布。在我们继续讨论 LDA 如何使用这些分布的细节之前,让我们稍微休息一下,回顾一下这些分布的含义。狄利克雷和多项式分布是贝塔和二项式分布的推广。Beta 和二项式分布可以理解为涉及投掷硬币(返回离散值)的随机过程,而 Dirichlet 和多项式分布处理随机过程,例如投掷骰子。所以,让我们后退一步,考虑稍微简单一点的分布:贝塔分布和二项式分布。

2.1 贝塔和二项式分布

为了简单起见,我们将用一个抛硬币的例子来说明 LDA 是如何工作的。想象一下,我们有一个完全用两个词写成的文档:🍕和🍅,并且该文档是通过重复投掷硬币而生成的。每次硬币正面朝上,我们就写🍕,每次硬币落下时,我们写下🍅。如果我们事先知道硬币的偏向是什么,换句话说,它产生的可能性有多大🍕,我们可以使用二项式分布来模拟生成文档的过程。生产的可能性🍕🍕🍕🍕🍕🍕🍕🍅🍅🍅(以任何顺序)例如由 P = 120P(🍕)⁷P(🍅),其中 120 是排列 7 个披萨和 3 个番茄的组合数。

但是我们如何知道概率 P(🍕)和 P(🍅)?给定上面的文档,我们可以估计 P(🍕)= 7/10 和 P(🍅)= 3/10,但是我们在分配这些概率时有多大把握呢?将硬币翻转 100 次,甚至 1000 次,将会进一步缩小这些概率。

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

掷硬币。作者图片

在上面的实验中,每个实验都会给我们相同的概率 P(🍕)=7/10 = 0.7.然而,随后的每一次实验都会加强我们的信念,即 P(🍕)=7/10.在看到更多证据后,贝塔分布给了我们一种量化这种信念强化的方法。贝塔分布采用两个参数𝛼和𝛽,并产生概率的概率分布。参数𝛼和𝛽可以被视为“伪计数”,代表了我们对硬币有多少先验知识。𝛼和𝛽值越低,分布越广,代表不确定性和缺乏先验知识。另一方面,𝛼和𝛽的较大值产生在某个值(例如,第三个实验中的 0.7)附近急剧达到峰值的分布。这意味着我们可以支持我们的说法,P(🍕)=0.7.我们在下图中展示了与上述三个实验相对应的 beta 分布。

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

具有不同α和β值的β分布。大量的实验意味着较窄的分布。作者图片。

现在这样想,我们有一个先验的信念,着陆头的概率是 0.7。这是我们的假设。你继续另一个实验——把硬币抛 100 次,得到 74 个正面和 26 个反面,先验概率等于 0.7 是正确的概率是多少?发现你可以描述一个事件概率,基于可能与事件相关的先验知识,通过贝叶斯定理,它显示了如何给定一些可能性,以及一个假设和证据,我们可以获得后验概率:

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

这里有 4 个组件:

  • 先验概率:假设或先验概率。它定义了我们对一个事件的先验信念。这个想法是我们假设某种先验分布,这是我们已知的最合理的分布。先验概率是每个硬币的 P(头),通过使用 beta 分布生成,在我们的例子中是 0.7
  • 后验概率:给定证据的先验概率的概率。这是一个概率的概率。给定 100 次 74 头 26 尾的翻转,先验概率等于 0.7 是正确的概率是多少?换句话说,有了证据/观测数据,先验信念正确的概率是多少?**
  • 似然性:似然性可以描述为假设我们的假设为真,观察到数据/证据的概率。比如说,我把一枚硬币抛 100 次,得到 70 个正面和 30 个反面。假设我们之前认为 P(头)是 0.7,那么在 100 次翻转中观察到 70 个头和 30 个尾的可能性有多大?我们将使用二项式分布来量化可能性。二项式分布使用贝塔分布的先验概率(0.7)和实验次数作为输入,并从二项式分布中抽取正面/反面的数量。
  • *证据的概率:证据是观察到的数据/实验结果。在不知道假设是什么的情况下,观察到数据的可能性有多大?量化这一项的一种方法是为每个可能的假设计算 P(H)P(E|H)并求和。因为证据项在分母中,所以我们看到证据和后验概率之间的反比关系。换句话说,证据的概率高,后验概率小,反之亦然。证据的高概率反映了替代假设和当前假设一样与数据兼容,所以我们不能更新我们先前的信念。

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

先验概率等于 0.7 的 10 次试验的二项式分布的概率密度曲线。可以看出,10 次翻转中有 7 次头部落地的概率最高。作者图片。

2.2 文档和主题建模

可以这样想:我想使用一些数学框架生成一个新文档。这有什么意义吗?如果是的话,我该怎么做?LDA 背后的思想是,每个文档都是由主题混合生成的,每个主题都是单词的分布(Blei,2003)。您可以做的是随机选取一个主题,从该主题中抽取一个单词,然后将该单词放入文档中。你重复这个过程,挑选下一个单词的主题,下一个单词的样本,把它放在文档中…等等。该过程重复进行,直到完成。

遵循贝叶斯定理,LDA 学习如何以下列形式表示主题和文档:

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

Blei 等人(2003 年)。潜在狄利克雷分配。

这里有两件事值得一提:

  • 首先,一个文档由多个主题组成,每个主题 z 取自一个多项式分布 z~Mult(θ) (Blei et al .,2003)

我们称 Theta (θ)为给定文档的主题分布,即每个主题出现在文档中的概率。为了确定θ的值,我们从狄利克雷分布中抽取一个主题分布样本。如果你还记得我们从 beta 分布中学到的东西,每枚硬币都有不同的正面着地概率。同样,每个文档都有不同的主题分布,这就是为什么我们要从狄利克雷分布中得出每个文档的主题分布θ。狄利克雷分布使用α/α—适当的知识/假设作为输入参数生成话题分布θ,即θ∞Dir(α)。Dirichlet 中的α值是我们关于该文档的主题混合的先验信息。接下来,我们使用由狄利克雷分布生成的θ作为多项式分布 z∞Mult(θ)的参数来生成文档中下一个单词的主题。

  • 第二,每个主题 z 由词的混合物组成,其中每个词从多项式分布 w~Mult(ϕ中抽取)(Blei 等人,2003)

让我们称之为φ(ϕ)每个主题的词分布,即词汇表中每个词出现在给定主题 z 中的概率。为了确定ϕ的值,我们使用β作为输入参数β——关于主题中词频的先验信息,从狄利克雷分布φz∞dir(β)中采样给定主题的词分布。例如,我可以使用给定主题中每个单词被分配的次数作为β值。接下来,我们使用从 Dir(β)生成的 phi (ϕ)作为多项式分布的参数来采样文档中的下一个单词——假设我们已经知道下一个单词的主题。

每个文档的整个 LDA 生成过程如下:

p(w,z,θ,ϕ | α,β ) = p(θ| α) p(z| θ) * p(ϕ| β) p(w| ϕ)

总的来说,第一步是获得文档的主题混合物— θ,它是由带有参数α的狄利克雷分布生成的。这给了我们第一项。下一个单词的题目 z 是从一个参数为θ的多项式分布中抽取出来的,这个分布给了我们第二项。接下来,从具有参数β的狄利克雷分布中得出每个单词在文档ϕ中出现的概率,这给出了第三项 p(ϕ|β).一旦我们知道了下一个词 z 的主题,我们就使用以ϕ为参数的多项式分布来确定这个词,这就给出了最后一个词。

3.用 Gensim 实现 Python

3.1 数据集

本文中的 LDA python 实现使用了一个数据集,该数据集由联合国一般性辩论的文本组成。它包含了从 1970 年到 2020 年每个国家的代表在联合国一般性辩论中的所有发言。数据集是开放数据,可在在线获得。你可以通过阅读这篇论文来获得对其内容的额外洞察。

3.2 数据预处理

作为预处理的一部分,我们将使用以下配置:

  • 小写字母盘
  • 令牌化(使用 NLTK 令牌化将文档分割成令牌)。
  • 对令牌进行符号化(来自 NLTK 的 WordNetLemmatizer()
  • 删除停用词

文本预处理功能。

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

数据集中某些属性的示例

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

2020 年美国和阿富汗使用 TF-IDF 演讲中最重要的 10 个词的例子。单词的大小代表了重要性的大小。

3.3 使用 Gensim 训练 LDA 模型

Gensim 是一个免费的开源 Python 库,用于处理原始的非结构化文本,并将文档表示为语义向量。Gensim 使用各种算法,如 Word2Vec、FastText、潜在语义索引 LSI、潜在狄利克雷分配 LDA 等。它将通过检查训练文档语料库中的统计共现模式来发现文档的语义结构。

关于训练参数,首先我们来讨论一下房间里的大象:文档里有多少个主题?这个问题没有简单的答案,取决于你的数据和你对数据的了解,以及你实际需要多少题目。我随机使用了 10 个主题,因为我希望能够解释和标记这些主题。

LDA 模型训练参数

Chunksize 参数控制在训练算法中一次处理多少个文档。只要文档块适合内存,增加块大小将加速训练。通道控制我们在整个语料库上训练模型的频率,这被称为时期Alphaeta 是在第 2.1 和 2.2 节中解释的参数。这里的形状参数η对应于*β。*

在下面的 LDA 模型的结果中,让我们看看主题 0,作为一个例子。它说 0.015 是单词“nation”在文档中产生/出现的概率。这意味着如果你无限次抽取样本,那么单词“nation”将被抽取 0.015%的时间。

*topic #0 (0.022): 0.015*"nation" + 0.013*"united" + 0.010*"country" + 0.010*"ha" + 0.008*"people" + 0.008*"international" + 0.007*"world" + 0.007*"peace" + 0.007*"development" + 0.006*"problem" topic #1 (0.151): 0.014*"country" + 0.014*"nation" + 0.012*"ha" + 0.011*"united" + 0.010*"people" + 0.010*"world" + 0.009*"africa" + 0.008*"international" + 0.008*"organization" + 0.007*"peace" topic #2 (0.028): 0.012*"security" + 0.011*"nation" + 0.009*"united" + 0.008*"country" + 0.008*"world" + 0.008*"international" + 0.007*"government" + 0.006*"state" + 0.005*"year" + 0.005*"assembly" topic #3 (0.010): 0.012*"austria" + 0.009*"united" + 0.008*"nation" + 0.008*"italy" + 0.007*"year" + 0.006*"international" + 0.006*"ha" + 0.005*"austrian" + 0.005*"two" + 0.005*"solution" topic #4 (0.006): 0.000*"united" + 0.000*"nation" + 0.000*"ha" + 0.000*"international" + 0.000*"people" + 0.000*"country" + 0.000*"world" + 0.000*"state" + 0.000*"peace" + 0.000*"organization" topic #5 (0.037): 0.037*"people" + 0.015*"state" + 0.012*"united" + 0.010*"imperialist" + 0.010*"struggle" + 0.009*"aggression" + 0.009*"ha" + 0.008*"american" + 0.008*"imperialism" + 0.008*"country" topic #6 (0.336): 0.017*"nation" + 0.016*"united" + 0.012*"ha" + 0.010*"international" + 0.009*"state" + 0.009*"world" + 0.008*"country" + 0.006*"organization" + 0.006*"peace" + 0.006*"development" topic #7 (0.010): 0.020*"israel" + 0.012*"security" + 0.012*"resolution" + 0.012*"state" + 0.011*"united" + 0.010*"territory" + 0.010*"peace" + 0.010*"council" + 0.007*"arab" + 0.007*"egypt" topic #8 (0.048): 0.016*"united" + 0.014*"state" + 0.011*"people" + 0.011*"nation" + 0.011*"country" + 0.009*"peace" + 0.008*"ha" + 0.008*"international" + 0.007*"republic" + 0.007*"arab" topic #9 (0.006): 0.000*"united" + 0.000*"nation" + 0.000*"country" + 0.000*"people" + 0.000*"ha" + 0.000*"international" + 0.000*"state" + 0.000*"peace" + 0.000*"problem" + 0.000*"organization"*

3.4 题目质量

生成的主题通常用于讲述一个故事。高质量的主题是那些容易被人类理解的。评估主题质量的一个流行指标是连贯性,连贯性值越大,通常对应的主题越容易理解。这意味着我们可以使用主题一致性分数来确定主题的最佳数量。两个流行的一致性度量是 UMass 和 word2vec 一致性分数。UMass 计算一个主题中的两个单词在同一文档中出现的频率,相对于它们单独出现的频率。具有诸如 United、Nations 和 States 的主题将具有较低的一致性分数,因为即使 United 经常与 Nations 和州在同一文档中共同出现, NationsStates 则不会。另一方面,基于 word2vec 的一致性分数采用不同的方法。对于主题中的每一对单词,word2vec 都会对每个单词进行矢量化,并计算余弦相似度。余弦相似性得分告诉我们两个单词是否在语义上彼此相似。

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

对应于 LDA 模型的相干值具有相应的主题数量。看起来选择 5 个主题可能会产生最好的一致性分数/质量,即使在这种情况下不同数量的主题的分数差异是微不足道的。作者图片。

4.限制

  • 顺序无关紧要:LDA 将文档作为“单词包”来处理。单词包意味着您查看文档中单词的频率,而不考虑单词出现的顺序。显然,在这个过程中会丢失一些信息,但是我们的主题建模的目标是能够从大量的文档中查看“大画面”。另一种思考方式是:我有 10 万个单词的词汇表,在 100 万个文档中使用,然后我使用 LDA 查看 500 个主题。
  • 主题的数量是一个需要由用户设置的超参数。在实践中,用户使用不同数量的主题运行几次 LDA,并比较每个模型的一致性分数。更高的一致性分数通常意味着主题更容易被人类理解。
  • LDA 并不总是能很好地处理诸如推文和评论之类的小文档。
  • LDA 生成的主题并不总是可解释的。事实上,研究表明,具有最低困惑或对数似然的模型通常具有较少的可解释的潜在空间(Chang 等人,2009)。
  • 常用词往往主导每个话题。实际上,这意味着从每个文档中删除停用词。这些停用词可能特定于每个文档集合,因此需要手工构建。
  • 为先验分布选择正确的结构。实际上,像 Gensim 这样的包默认选择对称的 Dirichlet。这是一种常见的选择,在大多数情况下不会导致更差的主题提取(Wallach 等人 2009 年,Syed 等人 2018 年)。
  • LDA 不考虑主题之间的相关性。例如,“烹饪”和“饮食”更有可能在同一文档中共存,而“烹饪”和“合法”则不会(Blei 等人,2005 年)。在 LDA 中,由于选择使用狄利克雷分布作为先验,主题被假设为彼此独立。克服这个问题的一种方法是使用相关主题模型而不是 LDA,LDA 使用逻辑正态分布而不是狄利克雷分布来绘制主题分布。

感谢您的阅读。如果你觉得我的帖子有用,并且正在考虑成为中级会员,你可以考虑通过这个 推荐会员链接 :)来支持我,我将收取你的一部分会员费,不需要你额外付费。如果你决定这样做,非常感谢!

参考文献:

  1. 布雷,大卫 m,安德鲁 Y. Ng,迈克尔乔丹。"潜在的狄利克雷分配."机器学习研究杂志 3。一月(2003):993–1022。
  2. 艾达的小册子。LDA 和 Gibs 采样概述。克里斯塔夫斯。
  3. Chang,Jonathan,Sean Gerrish,,Jordan Boyd-Graber 和 David Blei。"阅读茶叶:人类如何解读主题模型."神经信息处理系统进展 22 (2009)。
  4. 拉弗蒂、约翰和大卫·布雷。"相关主题模型."神经信息处理系统进展 18 (2005)。
  5. 沃勒克、汉娜、大卫·米米诺和安德鲁·麦卡勒姆。"反思 LDA:为什么先验很重要."神经信息处理系统进展 22 (2009)。
  6. 托马斯·霍夫曼。"概率潜在语义分析."arXiv 预印本 arXiv:1301.6705 (2013)。
  7. 赛义德、沙欣和马可·斯普雷特。"为潜在的狄利克雷分配选择先验."2018 年 IEEE 第 12 届语义计算国际会议(ICSC),第 194–202 页。IEEE,2018。
  8. https://dataverse.harvard.edu/file.xhtml?fileId=4590189&版本=6.0
  9. 贝塔分布

*https://en.wikipedia.org/wiki/Beta_distribution *

数据科学家是做什么的?

原文:https://towardsdatascience.com/what-do-data-scientists-do-1309d53c2420

我作为数据科学家的想法

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

照片由 Unsplash 上的 Sereja Ris 拍摄

什么是数据科学,数据科学家是做什么的?即使我自己是一个资深的数据科学家,我也经常发现自己对这个问题很困惑!所以我决定写这篇文章,记录我对数据科学家的想法。这篇文章代表我自己的想法和结论,而不是我的雇主。

数据科学家是做什么的?我认为最重要的是通过数据科学为企业带来价值。我说的价值是什么意思?对于一个典型的企业来说,商业价值的最终目标和形式是增加收入。更一般地说,我们可以将价值视为对业务至关重要的北极星指标。例如,对于重视用户增长的产品公司来说,每月活跃用户或每月返回用户可以作为北极星指标。

在我看来,数据科学家在大多数企业中受到重视的领域有五个:

1。数据科学产品是收入的直接来源

有时,数据科学家会创建算法或一种可以直接销售给客户的产品。例如,数据科学家可以编程并创建客户可以购买的商业 NLP 模型。或者,数据科学家可以编写一个推荐系统,直接显示用户指标和收入。

在这种情况下,数据科学家经常被给予一个特定的问题去钻研,目标是创造一个新的或改进的产品。他们花费大量时间研究、评估不同的算法、编写管道、设计模型架构、训练模型、监控模型性能,以及将模型部署到生产中。

2。数据科学为特定产品提供支持并推动战略

在产品公司中,数据科学家通常为特定产品提供支持,这直接影响产品路线图、功能展示、产品战略,从而间接影响收入。

在这个场景中,数据科学家的利益相关者通常是产品经理、工程师经理和其他内部客户。数据科学家提供什么样的支持?它可能包括以下类别以及更多类别:

  • 进行产品/市场适应性研究
  • 进行定价研究
  • 构建模型以推动产品特性
  • 通过深入分析发现产品/模型的机会/问题
  • 衡量机会的市场规模
  • 提供建议并影响行动
  • 设计、监控、分析和重复实验或准实验
  • 衡量项目/计划的成功/影响

3。数据科学为其他功能提供支持

数据科学家也可能为其他部门提供支持,如销售或营销。数据科学家可以告诉他们销售和营销工作的目标,并帮助提高销售线索的质量。

4。数据科学家是意义创造者

数据科学家的另一个角色是理解和发现。有些公司可能有测量东西的人,也有制造东西的人,但是他们不明白数据说的是什么。所以他们雇佣数据科学家,希望数据科学家能告诉他们数据意味着什么,并在数据中发现一些价值。这通常是一个非常不合时宜的任务,人们往往会有不切实际的期望,但这仍然是公司雇佣数据科学家的一个重要原因。意义创造和发现是数据科学家可以做出贡献的一个重要案例,但让人们对本质上是一次形式不良的探索失望是危险的。

5。数据科学家倡导数据驱动的文化

很多公司在做决策的时候,充其量是数据知情,而不是数据驱动。数据科学家倡导数据驱动的文化,并帮助每个人提高数据科学素养。数据科学家不仅要为业务提供价值,而且要为每个人提供文档和工具,让每个人都能放心地直接使用数据,并培养每个人在自己的工作中使用数据科学的习惯。

数据科学项目的工作流程是怎样的?

1.定义业务问题

业务问题是什么?企业实际需要什么?我们能把这个商业问题转化成数据科学问题吗?

2.确定问题的范围

就数据和资源而言,我们目前拥有什么?我们还需要什么?我们在考虑什么样的研究设计?我们是否在考虑使用历史数据、收集新数据、运行实验、做调查,以及什么样的建模?这个项目的路线图和分析框架是什么?

3.收集数据

理想的情况是,我们需要的所有数据都已经在数据库中很好地格式化了。事实上,至少从我的经验来看,那是一个梦。如果我认为我已经得到了我需要的所有数据,那是我不够努力。

通常,我们需要通过各种外部 API 收集数据。对于可以由多个供应商提供的外部数据,评估不同的供应商并决定使用哪个供应商也是数据科学家的责任。

另一种情况是当产品工程师和业务需求之间存在脱节时,数据科学家对调查特定指标感兴趣,但产品工程师当前不记录计算该指标所需的信息。因此,数据科学家的工作是在工程师和业务需求之间架起一座桥梁,告诉工程师我们需要记录的内容和位置,更好的方法是提醒工程师和项目经理在设计功能时考虑要收集哪些数据。

除了获取我们需要的数据,更重要的是理解数据,确保我们拥有的数据是高质量的。

4.进行分析

准备好数据后,数据科学家可以执行他们设计的项目路线图和分析框架。一般来说,几乎所有的分析工作都是从指标开始的。数据科学家通常与产品经理一起定义、创建和跟踪重要的指标。数据科学家通常会构建仪表板,作为他们观察趋势和获得洞察力的工具,并使用各种模型和框架来补充和支持项目需求。

5.将洞察力带回业务中

无论是笔记本、仪表板还是模型,数据科学家要想产生影响,他们需要向业务的其他部分提供见解和行动项目。我们分享的内容取决于我们希望收件人能够做多少探索,因此我们可以简单地分享幻灯片或 Google doc,其中包含总结结果的文字和图表,或者我们可以发送运行笔记本的完整输出以显示我们运行了什么代码,甚至发送底层笔记本、部署的仪表板或实时模型供他们自己运行。然后这个工作流程又重新开始。

关于工具的想法

许多数据科学家本质上都是软件开发人员。我们喜欢制作工具,让事情变得简单。我自己经常被这些工具冲昏头脑,因为它很有趣。

除了数据科学家自己编写的工具之外,数据科学家可能还需要研究和决定各种供应商工具,例如,Data Studio、Kibana、QuickSight 和其他工具的优缺点是什么,我们如何部署模型和仪表板,我们是否应该将 Airflow 重写为 Prefect,我们是否应该使用 BigQuery 或 Athena?工具和技术一直在变化。学习和理解不同的工具非常有趣,它们是我们工作的基础,但它们从来都不是数据科学的本质。

基于我自己有限的经验和观察,希望这些关于数据科学家所做工作的想法是有用的。让我知道你自己的想法。我很想听听!

作者索菲亚·杨 2022 年 1 月 5 日

当 Git 出错时,你会怎么做?

原文:https://towardsdatascience.com/what-do-you-do-when-git-goes-wrong-a50d20595a80

如何安全地恢复最新提交

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

吉姆·威尔逊在 Unsplash 上拍摄的照片

你有没有遇到过这样的情况,当你的 git 严重出错,你需要拼命恢复?我发现自己偶尔会遇到这种情况,人们似乎也会遇到同样的问题。许多新的 Git 用户在第一次遇到这种情况时可能会感到绝望。因此,在本文中,我将向您展示当 git 出错时该做什么,以及如何安全地修复它。

Git 问题

长话短说,我忘记了为我的代码使用分支,并且没有首先做git pull从远程存储库中获取所有的更改就提交了我的更改。结果是:

  • git push被拒。

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

  • git pull也不行。

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

解决方案

上面的“提示”里有一些很好的建议。但有时我们想做的只是撤销最近的提交。与此同时,我们可能仍然需要最近一次提交所做的更改,并且不想丢失它们。有多种方法可以做到这一点。我是这样做的:

  • 我检查我的git log,它显示了我所有的提交历史:

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

  • 然后,我复制并粘贴我的最新提交 ID。我执行git diff commit_id > patch来保存最近提交到文件的差异。这一步非常重要。这允许我们将最近提交的更改保存到一个单独的文件中。

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

  • 然后我做了一个git reset --hard HEAD^来回复到之前的提交。注意这是一个危险区域。您将丢失最近提交的内容。

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

  • 现在,当我们再次检查git log时,我们确实处于之前的提交状态:

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

  • 然后我们终于可以做一个git pull

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

  • 如果我们仍然想要应用我们最近提交的更改,我们想要做什么?请记住,我们已经将差异保存在补丁文件中。在这里,我们可以运行patch -p1 < patch来应用这些更改。我先做了一次预演,以确保一切正常。

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

  • 现在我们可以在git diff中看到文件变更,我们可以使用git commit -a提交所有变更,使用git push成功推送变更。

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

摘要

总之,下面是我为解决冲突和保存文件更改而执行的 git 命令:

# get the id of the lastest commit
git log# save the diff from the latest commit to a patch file
git diff 13fd7bc9219ee10f64b803303e6d90f94bb6e219 > patch # revert to the previous commit
git reset — hard HEAD^ # confirm that we are at the previous commit
git log # fetch changes from repo
git pull# apply file changes from the path file
patch -p1 — dry-run < patch 
patch -p1 < patch # check git diff on the file changes
git diff # commit changes
git commit -a # push changes
git push

让我知道你在这种情况下通常做什么,如果你有任何建议。请随意与我分享您使用 git 的有趣经历!😃

数据科学家是做什么的?

原文:https://towardsdatascience.com/what-does-a-data-scientist-do-12109f4fc03a

业内数据科学家的日常工作

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

乔恩·泰森在 Unsplash 上的照片

你还在想专业数据科学家的日常工作是什么样的吗?

让我来阐明这一点,并分享我学到的一些技巧,这些技巧可以帮助你成为一名专业的数据科学家。

问题是

与我交谈过的大多数数据科学学生都被他们在网上找到的海量内容弄得不知所措。

有成千上万的在线课程、博客文章和网络研讨会,涵盖了数据科学领域的不同工具、算法和技术。

然而,仍然不清楚专业数据科学家的实际日常工作是什么样的。

实际的数据科学工作是什么样的?

让我们在这篇文章中解决这个盲点。

数据科学家的角色

作为一名数据科学家,你实际上是两个团队之间的“接口”:

  • 开发人员/数据工程师👷
  • 业务/产品人员👩🏻‍💼

您的角色是搭建桥梁(即数据产品),将抽象数据转化为高质量的业务决策。

你对两个世界说得越多,你的工作就越有效。然而,这两个团队中的每一个都说“稍微不同的语言”。

与业务/产品人员交谈

业务利益相关者,如产品负责人,专注于设定和实现清晰的业务成果。你需要定期与他们交谈,以确保你为公司解决了正确的问题。

没有什么比针对错误的问题构建完美的解决方案更令人沮丧的了。

例如,您的产品销售线索可能会对您说这样的话:

👩🏻‍💼:“我们希望在本季度末将用户留存率提高 5%。有想法吗?”

酷毙了。你知道你需要解决什么。

现在让我们继续讨论如何解决这个问题。

为此,你需要相关的、高质量的数据。没有高质量的数据,你就无法衡量员工的忠诚度,也就无法衡量你的进步。没有高质量的数据,你将会悲惨地失败。

与数据工程师交谈

数据工程师负责为您提供高质量数据所需的基础设施。所以他们是你现阶段最好的盟友。

如果你想成为一名成功的数据科学家,你和数据工程师之间的交流是必须的。

数据工程师和科学家之间的良好对话会产生具体的行动。例如:

  • 让我们添加脸书第三方数据来丰富用户资料,或者
  • 删除交易表中的重复条目,或
  • 使数据可用于前端仪表板。

一旦获得高质量的数据和清晰的业务成果,您就可以施展数据科学的魔法了。

常见的“数据科学”魔术

使用数据解决业务问题的三种方式是:

#1.使用 Tableau/Power BI 构建仪表板

构建一个用户保持度控制面板,产品负责人可以使用该控制面板按相关用户属性(例如,地理位置、年龄)对该指标进行细分。仪表板是保持产品人员和您之间交流的好方法。

我个人推荐你从这个开始。

#2.运行数据探索

自己探索数据,找到唾手可得的果实(又名速赢)。例如,您可能会发现某些脸书活动带来了低保留用户,所以您 ping 营销团队来阻止他们。快速轻松取胜。我喜欢这些。

#3.训练一个机器学习模型

有时候你需要拿出大枪,使用机器学习。例如,您可以建立一个客户流失预测模型,以识别可能流失的客户。有了这些信息,营销团队可以向这些用户发送报价,并保持他们活跃。

我的建议:机器学习很有诱惑力。但通常情况下,您并不真的需要使用它。在求助于 ML 之前尝试#1 和#2。

如何实现:基于项目的学习

每个专业数据科学家都需要掌握一些技能来实施上述 3 种解决方案中的任何一种。那么问题来了,这些技能是什么?

成为一名专业的数据科学家需要掌握哪些技能?

在我看来,任何数据科学家都应该知道:

  • SQL :没有数据就没有数据科学家。为了查询和提取项目数据,您需要掌握 SQL。没有它,你会很慢,依赖数据工程师。
  • Python :数据科学和 ML 中的主要编程语言,得益于其庞大的开源库生态系统。
  • 演示和可视化:数据科学家是业务涉众和数据工程师之间的“接口”。因此,您需要以可操作的方式谈论和展示信息,重点关注其业务影响。
  • 机器学习 (ML) : ML 是关于从数据中构建软件。它用于自动化和改进运营和业务决策。
  • (一点点)云服务:大多数公司的基础设施都在云中(例如 AWS、Google Cloud 或 Azure)。在云环境中工作,并构建与云服务集成的解决方案,这一点非常重要。
  • (有点)深度学习库:如果你想深入研究计算机视觉或自然语言处理,你需要了解神经网络,如何训练,以及如何微调它们。

大多数人遵循基于课程的方法,他们开始许多课程(并完成其中的一小部分)。这不是最适合我的。

相反,我建议你通过遵循基于项目的方法来学习。

→挑一个你关心的问题

→找到与之相关的数据。

→构建一个解决方案(上面提到的 3 个中的任何一个)并使其可公开访问(例如 GitHub)。

并重复。

学习数据科学的唯一途径是解决数据科学问题。

想成为机器学习和数据科学的专家吗?

🚀 加入 Datamachines 时事通讯,了解 ML 和数据科学的真实世界。

➡️接上 碎碎念 🐦,LinkedIn👔

💎 今天使用我的推荐链接 成为会员,可以无限制地访问我在媒体上发布的所有内容并支持我的写作。

**https://pau-labarta-bajo.medium.com/membership

快乐学习🤗

避寒胜地**

数据科学家读什么?

原文:https://towardsdatascience.com/what-does-a-data-scientist-read-my-reading-for-jan-march-2022-9533706adafb

有秘方吗?我分享我 2022 年 1 月至 3 月的阅读

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

方与在 Unsplash 的合影

数据科学不会停滞不前。我记得当我开始的时候,选择的编程语言会在一年中不断变化,因为新的软件包被编写出来,击败了竞争对手。事实上,在那个时候,还没有真正认可的大学培训课程。你不得不接受你能得到的任何训练,并希望有人会抓住你的机会。我不会说感到冒名顶替综合症和巨大的压力是不寻常的,这种压力可能会使某人过度工作并不断学习,以防他们“发现”自己并不好。

作为一个题外话,我倾向于发现那些没有这种感觉的人是骗子,他们对数据科学还没有足够的了解,以至于不知道他们真的什么都不知道。

如今,尽管数据科学课程和大学课程盛行,但我要说,学习的压力仍然存在。人们经常期望我们都应该对所有算法了如指掌(你不知道),我经常发现数据科学家在办公室里熬夜看论文,错过了家庭生活,慢慢失去了对工作的热爱。

那么,你应该读什么呢?简单来说,就是任何让你充满激情,让你保持兴趣的事情。你想读一篇 20 页的纯数学论文吗?

去吧。

你想看一篇关于有人如何在瓶子里造出一艘小船的文章吗?

去吧。

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

佩吉·安克在 Unsplash 上的照片

这可能看起来很奇怪,但这就是我所做的,至少对我来说,当我跟随任何我迷失的兔子洞( wiki 或其他)时,我会学到最多。

正如我之前所说,作为一名数据科学家,人们似乎认为我们总是在阅读论文、做数学、在白板上涂鸦等等。在我们所有的时间里。但是我发现如果我那样做,我会在“现在”如何做事情上变得狭隘,而不是未来会发生什么。这也有点像公共汽车司机的假期,下班后我需要时间做点别的事情,否则我会发疯的。

我的第一个建议是,如果你对数据科学感到疲惫和厌倦,不要一直这样做!如果你每天都做一些你喜欢的事情,超出了你喜欢的程度,你就有可能讨厌你喜欢的事情,错过其他你想做的事情。这是很多人在读博士时经历过的事情。我记得当我开始工作时,我的第一次经历是走进办公室,到周末时,一个人会在一天结束时不停地哭泣。他们花了这么多时间试图解决问题,他们不能再通过做其他事情或以不同的方式看待问题来分散注意力。

这和阅读有什么关系,保罗?

好吧,也许你是对的,我已经跑题了。但我想说的是,不要认为你必须阅读的所有资料都是数据科学。通常,看看其他感兴趣的东西可以建立联系,给你带来你甚至不知道的灵感。

对我来说,这发生在最近的一份工作中,他们非常努力地试图以一种特殊的方式解决一个问题,但我可以看到它与可靠性工程世界中已经存在的解决方案有关(我过去的生活之一,我仍然关注着它)。

我的阅读清单

在工作中,经常会被问到在读什么或者目前感兴趣的内容;我每月公布一份我读过(或看过)的、我认为很吸引人的东西的清单。很多人喜欢它,我想,为什么不分享一下呢?

所以这里是我最近三个月所读的内容(我甚至包括了我的评论而不是裸露的链接),供你欣赏。尽情享受吧!如果你觉得它有帮助,请让我知道,我会继续分享!

2022 年 1 月

吴恩达:解除大赦国际

这是一位同事发给我的一篇文章,其中吴恩达(最著名的数据科学家之一)回答了一些他认为人工智能未来趋势的问题。他提出了一个很好的观点,即拥有基础模型(人们用作基础和调整的高级通用模型),以及拥有更多以数据为中心的人工智能,我们的目标是“好数据”而不是“大数据”,以实现大型数据集无法或不会存在的领域的目标。

边喝咖啡边有趣的阅读。

我们在自动化种族主义吗?

这是一个周期性出现的话题,也是人们必须更多考虑的事情,特别是在机器决策被用来做出可能不公平地评判人们的决策的领域。即使错误率相同,在某些事情做得不好的机器和在特定群体中表现很差的机器之间也有微妙的区别。例如,如果针对一个团队成员的错误决策比针对不同团队的错误决策更具破坏性,那么相同的失败率可能是非常不可取的。这是一个非常有趣的关于原因的研究,以及如何“重置”你可能有的偏见。

他们使用的第一个例子非常令人震惊,但也是我没有想到的一个有趣的技术,即通过显著性识别图像中的感兴趣区域。这在 Twitter 裁剪的缩略图中引起了一些令人震惊的行为,ML 系统在图像中寻找人脸进行裁剪,它将有 60%以上的时间选择白人人脸而不是其他种族。这里的原因是训练数据几乎没有非白人面孔的例子,但也提出了这样一个问题,即这样一个工具是否首先需要机器学习。

另一个有趣的例子是在医疗干预中,他们发现非白种人必须病得更重才能触发干预。原因是训练数据以一种被证明是有偏见的方式被标记。

到最近点的最快方法

我想我们都遇到过寻找最接近另一个值的编码问题。有时我们只是简单地将所有点加载到一个列表中,遍历所有的点,然后返回最近的一个。这对于少量的点来说可能没问题,但是一旦你达到数百万甚至数十亿,这就变得非常耗时。

在这个视频中,电脑爱好者K-d 树来寻找一种快速有效的搜索方法。这些使您能够快速搜索多维区域(k 维)。如果你想知道为什么这是一个问题,他们举了机器人激光雷达导航的例子,每次扫描都会返回 1000 个点,他们需要快速将这些与之前扫描的地图联系起来。如果你不能做到这一点足够快,那么导航会变得笨拙和缓慢,因为他们必须等待他们的地图更新。

将建筑变成景点

这不是一个数据科学或机器学习视频,但这里汤姆·斯科特(他制作了许多有趣的视频)谈论了苏格兰的希尔豪斯。一座革命性的房子建于 20 世纪初,但因为它太先进了,简直要融化在苏格兰的天气里了。

问题是它不能被完全覆盖,或者它不会完全干燥(太快或根本不会),所以他们使用了一种创新的锁子甲网格系统来保持干燥,让它呼吸。

这里的问题是,如果游客看不到房子,那么他们可能会忘记它,不再来参观。通过在盒子里安装特殊的走道,他们使游客能够看到房子的景色,这在把它变成一个独特的景点之前是不可能的。

这是一个有趣的例子,将一个问题转化为一个全新的机会,推动游客到该地旅游,并帮助支付费用。这是我们在处理问题时应该经常考虑的事情。

2022 年 2 月

有时候简单仍然是最好的

我想我以前给人们指出过汤姆·斯科特在 YouTube 上的视频,但我觉得这个很有趣。在苏格兰,落石会给道路网带来危险。

在这个视频中,他们看到了维多利亚时代的预警系统是如何被使用的,因为没有其他现代解决方案被发现也同样有效。

多目标跟踪

这个问题是在最近的一次项目头脑风暴中出现的。最终,特定的理想解决方案是需要能够从一个场景到另一个场景跟踪对象,或者同时跟踪多个对象。这篇文章介绍了相关内容,并为感兴趣的人提供了进一步阅读的资源链接。

SQL:拒绝死亡的数据库系统

不久前,SQL 被吹捧为即将过时,许多非结构化版本被吹捧为前进的方向。然而,它继续被大量使用,因为它的结构意味着在某些情况下人们可以更容易地使用和维护它。当然,在其他解决方案应该被使用的情况下,它也仍然被使用,但这不是这里的要点(我只是想在其他人之前指出这一点)。

此外,如果你一直在关注像吴恩达这样的顶尖数据科学家的预测。你会看到,他们现在提倡高质量的数据集,而不是用于训练模型的大型数据集(特别是如果基础模型变得更加广泛的话),所以 SQL 可能会存在更长一段时间。

如果你曾经尝试过学习 PySpark,你会发现很多 PySpark 语句的结构与 SQL 相似。考虑到这一点,我在这里添加了一篇文章的链接,还链接到了汗学院,该学院开设了一个免费的 SQL 培训课程,所有这些都在浏览器中完成。

距离——海明、欧几里德还是曼哈顿?

如果您从未处理过任何地理或距离数据,您可能从未认真考虑过,有时直线距离测量与您试图解决的问题并不匹配。输入不同的距离度量。也许你不需要它们,但是知道它们还是很有用的。

三月

数据趋势

这篇文章很有趣,因为它展示了他们认为未来三年会出现的趋势。我甚至学到了一个新东西,“语音钓鱼”,他们不是使用深度假货来制作视频,而是用它来模仿人们的声音(这已经被用于一个犯罪骗局)。

不管怎样,这都是一本有趣的书。

很快我们就可以看电视旅行了

至少在更多的地方。

https://www.bbc.co.uk/news/technology-61155735

BBC 的这篇新闻报道了高速公路法规正在被修改的事实,这样自动驾驶汽车的司机就可以看电视了。尽管如此,使用手机仍然是非法的。

另一个注意事项是,自动驾驶汽车的用户将不对撞车负责(保险公司将负责)。这当然是一个有争议的问题,因为自动驾驶汽车的制造商在发布产品时会更加犹豫,因为他们最终不希望它花费他们更多的钱(即,他们无法为每种场景设计,因此可能会有过高的责任成本)。如果你想深入了解,甚至有一整篇维基百科文章。

另外,如果你认为我们是在一个自动驾驶的世界,我们不是。有一个整体分类系统,目前的汽车都在 SAE 级,这是系统可以帮助你的最后一个评级(越高越自动化),但最终司机负责监控和继续控制。

一级系统的一个例子是车道辅助系统自适应巡航控制自动制动系统(控制转向或加速/减速,二级两者都做)。两者都是为了指导你,并作为最后的失败保险,但它是由你来监控或超越它们。

车道保持辅助系统

我的车有这个,我一直认为它使用摄像头来检测道路的白线,然后做一些有趣的事情来保持它在车道上(或者如果我不这样做就警告我)。所以我做了一些调查,有一篇有趣的研究文章使用支持向量机来做这件事,然后我找到了一个更有爱好的方法来使用 OpenCV 做这件事。(有一个 Coursera 专精如果有人超级感兴趣的话,尽管我自己没有看过)。

如你所见,这个月我掉进了一个兔子洞。

摘要

我列出了过去三个月我发现的一些有趣的事情,希望你也喜欢。

祝你一周愉快!

AlphaFold 是做什么的?

原文:https://towardsdatascience.com/what-does-alphafold-do-60b6370dafe4

利用人工智能的力量来理解蛋白质是如何折叠的

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

Unsplash 上由阿尼鲁德拍摄的照片

TL;速度三角形定位法(dead reckoning)

  • 我试图给蛋白质折叠一个简单的解释,
  • 为什么我们想要预测它是如何发生的,
  • AlphaFold 如何使用神经网络,一种机器学习(ML)技术来解决蛋白质折叠问题,
  • 并给出了一个在 Google Cloud 上使用 Vertex AI 进行批量推理的参考架构……走吧! ➡️

🤔什么是蛋白质折叠,为什么它是一个难题?

每种蛋白质都是由一系列氨基酸结合在一起组成的。这些氨基酸相互作用形成形状,这些形状在更大的范围内折叠起来成为复杂的三维结构,基本上是我们星球上所有生命的基石。

蛋白质潜在的折叠方式多得难以想象。因此,弄清楚它们如何以一致的方式快速折叠是非常棘手的。目前,已知的蛋白质超过 2 亿种,而且每年都有更多的蛋白质被发现。每一个都有独特的 3D 形状,决定了它的工作方式和功能。

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

图 1:不同尺度的氨基酸。作者插图。

能够可靠地预测蛋白质将如何折叠开启了许多强大的用例,例如发现治疗疾病的新药,并总体上帮助我们更好地理解生物学如何工作。但几十年来,人们一直认为做出这种预测所需的计算能力远远超出了现有能力。

然而,利用他们设计算法的经验,可以在几个小时内学习复杂的游戏,如国际象棋和围棋,Deepmind 的研究人员开发了一种名为 AlphaFold 的机器学习引擎,可以预测蛋白质折叠的方式。最新版本(AlphaFold2)现在可以在几分钟内大规模预测蛋白质的形状,并精确到原子的精度!🤯

这是一项重大突破,凸显了人工智能对科学的影响。这项工作已经发表在《自然》杂志上,并赢得了生命科学、数学和基础物理领域的突破性奖项。👉 详见延伸阅读。

alphafold 是如何工作的?

毫无疑问,蛋白质折叠背后的科学和推导蛋白质结构预测的实验过程是复杂的。所以我会尽我所能简化这个过程以及它在 AlphaFold 中的工作方式。

蛋白质折叠的一个关键假设是,预测它将如何折叠的所有必要信息都可以从氨基酸序列及其所处的环境中获得。

就 ML 模型而言,您可以将氨基酸序列视为我们的输入变量,而“环境”由模型的参数决定。最终结构的输出预测,或蛋白质将如何折叠,是由前者决定的。

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

图 2:蛋白质折叠的 AlphaFold 架构,来源:Jumper 等,2021 [2],作者注释。

这里有一个(非常😅)蛋白质折叠如何在 AlphaFold 上工作的粗略分类:

1.提供氨基酸序列作为 AlphaFold 算法的输入,

2.进行一些数据预处理以产生包含在氨基酸序列中的骨架原子。原子最初被赋予随机坐标。

3.搜索结构和模板数据库,以便:

3a。找出对应于氨基酸序列的结构。这有助于检测氨基酸序列中更可能发生变化的部分,并收集这些“突变”之间的关系。

3b。基于现有模板识别可能具有相似结构的蛋白质,并构建结构的初始表示用于成对比较。这个模型代表了哪些氨基酸可能相互接触。

4.MSA 和成对结构(3a。& 3b。)通过一个名为“Evoformer”的深度学习模型,该模型有 48 个神经网络模块,用于在氨基酸序列和几何结构的成对结构特征之间交换信息,这有助于在几次迭代中完善模型。接下来是另一个称为“结构模块”的深度学习模块,它有 8 个神经网络块来构建输入序列的最终 3D 蛋白质结构。

重新运行步骤 3 和 4 三次

5.最终的输出结果是一个精确的折叠蛋白质结构,其中每个原子都有相应的坐标。

🔮顶点人工智能的 AlphaFold 批量推理

“计算密集型”是什么意思?😮‍💨

正如你可能已经从上一节中收集到的,从 AlphaFold 获得预测需要大量的特征工程,因为它从基因和结构库中提取了大量的补充数据。所有这些都需要万亿字节的内存来存储,以便在预测期间使用。

然后,你有一个非常密集的神经网络,用来创建自己的预测。理想情况下,你需要大量的 GPU(甚至是 TPUs )来加速神经网络中每个节点进行的数学计算。大多数人没有运行像 AlphaFold 这样的 ML 模型所需的物理基础设施…

但是不要害怕!通过云的力量,任何人都可以运行 AlphaFold 算法!具体来说,在谷歌云平台(GCP)上使用 Vertex AI。

Vertex AI 将用于构建 ML 的 GCP 服务集中在一个统一的 UI 和 API 下,以简化大规模构建、训练和部署机器学习模型的过程。

下面的例子涵盖了一些最近发布的功能,如 Vertex AI Pipelines,它们通过编排您的 ML 工作流来帮助您自动化、监控和管理您的 ML 系统——这是实现机器学习操作的关键起点( MLOps )。

你可以这样做

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

图 3:顶点 AI 上 AlphaFold 批量推理的参考架构。作者插图。

先决条件:

1.将功能工程过程中引用的 MSA 和结构模板加载到 Google 云存储(GCS)中。您还可以使用 GCS 来存储您的氨基酸输入数据。
2。使用代表特征工程过程和神经网络的开源代码来构建顶点 AI 管道。

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

图 AlphaFold 批量推理的通用顶点 AI 流水线,来源:谷歌云【4】

基于图 3 中描述的架构组件,图 4 中所示步骤的总结:

1.触发管道运行
1a。负载输入和
1b。参考数据
2。运行特征工程管线(存储在 GCS 中)
3。将特征和模型参数输入管道以获得预测
3a。重复给定次数的迭代
4。对预测的结构进行琥珀色松弛(可选)
5。预测的蛋白质结构排名
6。将模型预测存储在 GCS 中

现在你有了它,如果你想看看样本代码和你需要开始做的一切,就去 GitHub 库

🏁包裹

作为一个可能对蛋白质折叠非常陌生的人,我不指望你在看完这篇文章后突然成为一名基因研究者!另一方面,如果你已经在这个领域工作,我希望这是一个学习如何应用人工智能来帮助解决一些自然最深层的奥秘的实用起点!

本岗位目标:

  • 提高对一个令人着迷(但非常复杂)的话题的认识,并努力让这个话题变得更容易理解
  • 强调这样一个事实,你不需要一个满是超级计算机的实验室来完成像 AlphaFold 这样的 ML 系统所需要的计算密集型工作。

如果你对蛋白质折叠和 AlphaFold 有了基本的了解,我在这里的工作就完成了!下次再见,感谢您的阅读和支持🙏🏼。

🗃参考资料&进一步阅读

[1] Deepmind,Highlighted Research,https://www . deep mind . com/Research/highlight-Research/alpha fold

[2] Jumper,j .,Evans,r .,Pritzel,a .等.用 AlphaFold 进行高度精确的蛋白质结构预测.自然 596,583–589(2021)(CC BY 4.0)。【https://doi.org/10.1038/s41586-021-03819-2

[3]使用顶点人工智能管道运行 AlphaFold 批量推理,谷歌云博客文章,https://Cloud . Google . com/Blog/products/AI-machine-learning/alpha fold-batch-inference-with-Vertex-AI-Pipelines

[4] Google 云平台,GitHub repository (Apache-2.0 许可证):https://GitHub . com/Google Cloud Platform/vertex-ai-alpha fold-inference-pipeline # readme

C3.ai 是做什么的?

原文:https://towardsdatascience.com/what-does-c3-ai-do-305880b737c8

与前玛奇纳一起深入研究无代码 ML

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

刘玉英在 Unsplash 上的照片

TL;速度三角形定位法(dead reckoning)

C3.ai 是一家软件公司,提供一系列 ML 驱动的解决方案,这些解决方案是为特定行业量身定制的,目标是更大的公司。他们的一款产品名为“Ex 玛奇纳”,这是本文的重点,旨在:

  • 一个易于使用的,可视化的,无代码的构建 ML 模型的环境。
  • 目标用户受众是“公民数据科学家”,他们通常是不具备数据科学专业知识,但仍希望能够利用预测性 ML 模型功能的业务用户。

⚡️趣闻

“Ex 玛奇纳”一词来源于拉丁语“deus ex machina”(或“机器中的上帝”),指的是突然出现或被引入一种情况中的人或事物,它为一个显然无法解决的难题提供了一种人为的或人为的解决方案。[1]

🤹🏼‍♂️公民数据科学家工作流程

就像我之前的“T2 是做什么的?”帖子,我决定给前玛奇纳自己一个旋转。

为了在我的修补中应用一点结构,我提出了一个简化的工作流,它可能代表了普通公民数据科学家所走的道路:

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

图 1:公民数据科学家工作流程,作者的插图。

无需编写任何代码或了解很多关于 ML 的知识,您可能会想…

  • 加载一些数据,
  • 可能做出一些改变或者为模型训练准备数据,
  • 训练一个模型,最后,
  • 用那个模型预测一些事情。

当我深入这个产品的内部工作时,我们将回头参考这些步骤。

🚀启动并运行

C3.ai 最近宣布与 GCP合作。普通读者会知道这是我首选的云,所以我想看看能不能通过 GCP 市场来提升它:

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

图 2: GCP 市场,C3 AI Ex 玛奇纳

搜索“C3.ai”很快就出现了一个市场产品列表,包括玛奇纳以外的产品。不像有些产品可以让你不用离开 GCP 就可以启动并运行,我看到了一个注册链接。

这会将您带到一个外部登录页面,您可以在那里注册 14 天的免费试用。所以我就是这么做的!

Ex 玛奇纳作为按用户订阅服务提供,可用作托管在 C3.ai 服务器上的托管服务。如果您选择他们的“企业”订阅层,您也可以将其部署在您选择的基础架构或云上。

注册后,您可以通过 C3.ai 托管的网站登录 Ex 玛奇纳。

您首先看到的是左侧带有导航的仪表板,在主页上有几个部分,其中包含示例工作流、您最近的项目和资源:

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

图 3: C3 AI Ex 玛奇纳,主页/欢迎页面

项目是您构建 ML 工作流的地方,使用拖放工具放置在画布上。

在创建或加载项目之前,您必须确保您的“环境”正在运行(参见主页左上方):

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

图 4: C3 艾 Ex 玛奇纳,环境状况

您可以为不同大小的“环境”付费,根据您的需求选择更多内存。这些环境似乎是由 C3.ai 托管和管理的。我将在文章的最后谈到定价。

现在,让我们来构建我们的公民数据科学家工作流!

⛽️ 1.加载一些数据

第一步是创建一个新项目(参见“最近的项目”面板右上角的“+”符号)。

在新创建项目的画布右侧,您会看到一个“节点”类别列表,这些类别与您可能要执行的不同任务相关。您可以独立运行节点,也可以作为一个端到端的工作流运行节点。

展开“输入数据”类别会显示几个不同的数据源子类别,为了简单起见,我选择了 CSV 文件上传:

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

图 5: C3 人工智能 Ex 玛奇纳项目,输入数据节点

你点击节点,并将其拖到画布上进行配置,即告诉它从哪里上传文件,跳过标题行,以及使用哪个分隔符。

在这种情况下,我使用 Kaggle 数据集进行贷款违约预测:

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

图 6: C3 艾 Ex 玛奇纳,项目,画布视图

配置好节点并点击 Run 按钮后,您可以通过双击节点来查看数据示例:

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

图 5: C3 人工智能 Ex 玛奇纳,输入数据节点细节

👩🏾‍🍳 2.准备数据

在我们训练一个 ML 模型之前,通常需要一些数据准备,除非你使用一个干净的、精选的数据集(就像这个例子!).

至少,我们可能希望进行一些数据分析,以了解我们加载的数据集中是否有缺少或不一致的值的列。

对于这个任务,我查看了“分析”类别下的“描述列”节点,将它拖到我们的画布上:

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

图 6: C3 艾 Ex 玛奇纳,描述列节点

运行并双击“Describe Columns ”(描述列)节点,使我们能够构建数据的可视化配置文件,并提取我们可能感兴趣的关键摘要:

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

图 7: C3 AI Ex 玛奇纳,描述列节点细节

假设我们对要用于模型训练的数据集感到满意,将数据集随机分成单独的训练集和测试集通常是个好主意。

我们这样做是因为它有助于我们了解模型在对以前从未见过的数据进行预测时的表现。如果您想了解更多信息,请点击此处

我不相信 Ex 玛奇纳会在模型训练之前自动分割您的数据集,所以我使用了“变换”类别下的“随机分割”节点来实现这一点,使用默认配置:

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

图 8: C3 人工智能 Ex 玛奇纳,随机分割节点

🏆 3.训练模特

加载并准备好我们的训练数据后,是时候训练我们的 ML 模型了。

戴上公民数据科学家的帽子,我决定坚持使用“AutoML”类别的节点,特别是“模型搜索分类器”,它可以在一个步骤中训练多个模型:

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

图 9: C3 人工智能 Ex 玛奇纳,模型搜索分类器节点

在配置了要用来为模型定型的列和目标列之后,可以钻取到该节点。

对于我要使用的数据集,列是:

  • ‘就业’,这是一个布尔型,1=就业,0 =失业。
  • ‘银行余额’,贷款申请人的银行余额。
  • ‘年薪’,贷款申请人的年薪。

训练标签(我们希望我们的模型预测的内容)是:

  • 默认,这是一个布尔 1 =默认 0 =过去没有默认。

点击“Train ”,将根据您选择的指标创建一个车型排行榜。然后,您可以挑选最好的,保存起来供以后使用:

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

图 10: C3 人工智能 Ex 玛奇纳,模型搜索分类器节点细节-1

向下滚动模型选择面板,您还可以获得关于所选模型的一些信息。例如特征重要性和在训练期间使用的任何参数:

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

图 11: C3 人工智能 Ex 玛奇纳,模型搜索分类器节点细节-2

🤖 4.获得一些预测

现在是激动人心的部分,得到一些预测!

再次坚持使用“AutoML”类别的节点,我将“AutoML Predict”拖到画布上,确保它与我的测试数据集相连接。您所需要做的就是为新列命名,在该列下,您希望从您的模型中捕获预测输出,并且实际上是从那些先前保存的数据中使用的模型:

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

图 12: C3 人工智能 Ex 玛奇纳,自动 ML 预测节点

运行“AutoML Predict”节点并双击后,您可以看到一个更新的数据样本,其中有一个新列显示模型预测,即贷款申请人是否可能违约:

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

图 13: C3 人工智能 Ex 玛奇纳,自动 ML 预测节点细节

这个视图中似乎没有任何评测统计,这让我有点失望。点击“Vizualisations”选项卡(上面截图的顶部中间)可以构建不同的图表,但没有明显的“现成”信息告诉我该模型在我的测试数据集上的表现如何。

最终,我们的公民数据科学家将希望将预测(或从 ML 中获得的洞察力)纳入他们的业务中,就像通常的任务一样。因此,我们可能需要将数据从玛奇纳转移到其他适合执行进一步分析的地方,或者可能需要构建一个仪表板或报告。

在撰写本文时,与当今市场上可用的大量数据源、BI 和分析工具相比,节点的“输出”类别看起来有些有限。我还注意到缺少直接输出到 BigQuery 和 Google 云存储的节点…这可能是试用版的限制?

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

图 14: C3 人工智能 Ex 玛奇纳,输出数据节点

在我看来,AWS S3、Azure ADLS 和 Snowflake 这样的大型企业数据仓库公司都在名单中。我确实尝试了雪花连接,但无法让它工作(在这篇文章的下一部分会有更多)。

如果没有“It 支持”,我们的公民数据科学家不太可能连接到这些目标中的大多数。因此,尝试贴近角色,并通过“自动预测”节点选项使用“导出到 CSV 选项”:

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

图 15: C3 人工智能 Ex 玛奇纳,自动 ML 预测节点—导出到 CSV

现在你知道了,我们的工作流程已经完成,从加载数据到从 ML 模型获得一些预测— 而无需编写任何代码!

⚖️初步印象

以下是我对 Ex 玛奇纳实验的一个简短总结:

设置:

启动和运行试验相当简单。

我确实尝试过将示例工作流中的预测推送到雪花数据库表中,但收效甚微。

我在雪花中创建了一个数据库、表和模式,并且能够在 Ex 玛奇纳成功测试连接:

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

图 16: C3 AI Ex 玛奇纳,输出数据—雪花节点—创建凭证

但是当我试图通过运行“输出数据—雪花”节点来实际写出一些数据时,我得到了一个非常无用的错误消息:

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

图 17: C3 人工智能 Ex 玛奇纳,输出数据—雪花节点—运行错误— 1

就是这样,没有迹象张贴到文件或任何简单的方法来提高支持票。在画布上,节点的配置中有一个不同的错误消息,但它似乎与雪花无关:

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

图 18: C3 人工智能 Ex 玛奇纳,输出数据—雪花节点—运行错误— 2

我发现文档迷你站点相当稀疏,很少涉及我认为配置某些工具所需的细节。在上下文中,节点级别的文档通常是不存在的:

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

图 19: C3 AI Ex 玛奇纳,AutoML 预测节点—文档选项卡

虽然大多数节点都很直观,但我认为在产品文档方面肯定还有改进的空间。

易用性:

“拖放”工作流范式并不新鲜,但 Ex 玛奇纳是我见过的第一个专注于 ML 的云原生例子。对于公民数据科学家来说,这是一个很好的切入点。

很高兴看到一些广泛的模型评估和可解释性特性作为 AutoML 节点的一部分,但也许它们会出现在未来的迭代中。

费用:

Ex 玛奇纳按用户订购服务提供,有免费、团队、专业和企业选项(用于在您自己的基础架构上部署):

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

图 20: C3 AI Ex 玛奇纳,订阅计划

团队版和专业版在个人版的基础上增加了一些额外的功能。一些亮点是协作、SSO 和身份提供者集成,您还可以获得更多内存,并且可以添加到项目的 AutoML 节点数量没有限制。

还提供了一些基本的调度和模型管理功能,但还没有接近对整个 MLOps 生命周期的支持。

总体:

Ex 玛奇纳最初在大约一年前推出,所以与公民数据科学产品领域的其他大玩家如 AlteryxKNIME 相比,它仍然相对不成熟。

在纯粹的“自动”方面,有一些竞争对手,如 H20.ai、DataRobot 和 GCP Vertex AI。它们提供了类似的“无代码”体验,但在自动化常见任务方面要复杂得多,例如数据准备、模型选择、可解释性,甚至是生产模型。

目前,Ex 玛奇纳感觉自己处于市场上最好的“拖放式”和 AutoML 产品之间。

除了文档和数据输出设置方面的一些问题,我认为 Ex 玛奇纳为想要构建并从 ML 模型中获得洞察力的公民数据科学家提供了一个伟大的无代码工具。

如果 C3.ai 继续通过增加功能和改善用户体验来投资于该产品,它可能成为一个新兴市场的有力竞争者。

🙏🏼再次感谢您阅读我的帖子,如果您有任何问题或反馈,请联系我们!

📇参考

[1]布里安妮卡,《杀出重围》,https://www.britannica.com/art/deus-ex-machina

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值