TowardsDataScience 博客中文翻译 2019(一百七十六)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

从零到精通的期望和差异

原文:https://towardsdatascience.com/estimation-of-expectation-and-variance-from-zero-to-mastery-4a6e8a2038cf?source=collection_archive---------22-----------------------

直觉和数学理解从随机变量到贝叶斯统计

介绍

期望和方差是一个基本而又重要的话题。为了解决统计问题和理解机器学习,数据科学家必须深入理解这一主题。

让我们做一个快速测试来检查你的理解。

  1. 你如何从 PDF 或 CDF 中得到期望和方差?
  2. 如果 PDF 或 CDF 没有明确定义,还有什么其他方法?
  3. 什么是渐近方差?我们如何计算它,为什么它很重要?
  4. 给定我们的特征,目标变量的条件期望和条件方差是什么?如何应用于线性回归?
  5. 期望和方差如何应用于贝叶斯统计?

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

Photo from Escape Adulthood

基本形式和意义

预期

直观上,期望是随机变量的大量独立实现的平均值。假设 X 是我们对日降雪量的观测值,我们想估计平均降雪量。所以我们在 X 上观察了 n 个数据点,得到一个平均值——μ。

当我们得到一个分布时,我们将所有事件的值相加——x 表示一个概率。

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

The expectation from PMF for discrete random variables

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

The expectation from PDF for continuous random variables

差异

方差衡量每个数据点与平均值之间的差异。

当样本量接近无限大时,可以解释为1/观察次数*总和(每次观察值-均值)

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

记住方差还有另一种形式,你可能已经遇到过了。下面是推导过程

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

Derivation of another form of variance

这两个公式本质上是一样的。

采样离散

记住,给定样本,统计是任何可计算的东西。如果用和上面一样的公式得到样本量小的样本方差,结果会有偏差。这意味着它没有足够好地逼近潜在的人口方差。所以你需要将有偏方差乘以 n/(n-1) 得到无偏样本方差。

无偏样本方差= *1/(观察次数-1)总和(每个观察值-平均值)

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

渐近方差

一、渐近是什么意思?在统计学中,它只是意味着接近无穷大的极限。这是中心极限定理的核心,当 样本量增加 时,基础样本分布越来越接近总体参数,我们说它最终将接近正态分布,呈钟形,对称形式,两边都有尾部。

也就是说,渐近方差仅仅意味着方差是基于样本数量接近无穷大的假设而近似得到的。

估计

当我们的总体分布未知时,我们估计基本分布的参数。然而,得到一个平均值并不容易,因为如果基础分布不稳定,它并不总是最好的选择。

这里有一些有用的方法来得到一个好的估计。

最大似然估计

最大似然估计是统计学中最重要的估计方法。该方法旨在找到描述观测数据的最可能的参数。要做到这一点,我们只需对我们的 pdf 取一个关于参数的偏导数,并将其设置为零。如果求导太难,有一个叫做对数似然法的技巧,我们只需对函数的自然对数求导,就能得到局部最大值。

这里有一个例子,你观察 x,发现他们遵循一个 xθe^(-x /θ的 pdf,并带有一个参数θ,你想找到一个估计量,最好地描述了基础数据。所以你取了 n 个样本,对对数似然性求导。通过以下计算,您发现最能描述基础数据的估计量是 sum(Xi )/n

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

Example of MLE

以下是一些负面属性:

  1. 计算复杂性。上面的例子只有一个参数。如果有多个呢?有时分布有太多的参数,对它求导是很昂贵的。
  2. 对损坏的数据不是很健壮。由于最大似然估计是基于求导,我们可能无法达到全局最大值。

达美尔法

如果我们需要求一些样本的渐近方差怎么办?如果我们的样本量很大就好了,我们可以用中心极限定理来推导它们。然而,如果我们的样本量不够大,而我们仍然想估计我们人口的潜在分布,该怎么办呢?如果我们连一个定义明确的 PDF 都没有,那么我们甚至不能用 MLE 来估计我们的分布呢?

它叫德尔塔法,利用 泰勒 逼近从中心极限定理得到类似的渐近结果。我不会在这里过多地谈论泰勒级数,但它是一种用微分来逼近基本函数的方法。德尔塔的方法也是如此。它对我们的参数求导,并近似具有正态分布特性的另一种形式的方差。

费希尔信息

在多元假设检验中,我们希望检验期望和方差是否都等于我们提出的参数。如果我们想找出方差的方差呢?费希尔信息给你一个均值和方差之间的协方差矩阵。有两种计算方法。

  1. 似然函数的二阶导数的期望值为负
  2. 似然函数的一阶导数的方差

矩法

这个方法允许你计算任意顺序的统计数据。比如计算 E[X ]和 E[X]可以让你同时得到期望和方差。此外,您可以将兴趣参数从一种方式映射到另一种方式。

m 估计

这种方法非常灵活。m 估计可用于估计给定𝑥的𝑌的均值、中值和分位数,甚至无需假设统计模型。

条件性和线性回归

总期望定律

E(X) = E(E[X|Y ])

一个简单的例子可以说明这个规律。假设你去买杂货。每次旅行花费多少取决于你去的是好市多(P = 0.4)还是沃尔玛(P=0.6)。平均来说,你在好市多花了 100 美元,在沃尔玛花了 80 美元。然后,您希望找出食品杂货成本的期望值,计算结果为 100 * 0.4+80 * 0.6 = 88 美元。

条件期望和条件方差

这个主题对于推导回归函数至关重要。它解释了为什么我们的函数是 Y = a+bx,它是极小值。

假设你预测给定 X 的 Y,你推导出 f(x,y)= 2X+Y 存在于[0,1]的样本空间中,给定 X 的 Y 的条件期望是什么?预测 Y 周围的可变性呢?

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

Conditional expectation of X given Y

这里我们确实需要理解贝叶斯规则来推导给定 y 的 X 的条件 pdf。如果你需要复习一下,我将在本文的结尾谈到它。

但首先,你需要找到边际 PDF ,它可以很容易地从关于 y 的联合 PDF 中整合出来。

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

要找到条件期望和条件方差,需要进行以下推导。

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

贝叶斯统计

介绍

比方说,如果下雪,我们在一天中以 0.2 的概率去杂货店,如果不下雪,以 0.6 的概率去杂货店。一天下雪的概率是 0.1。然后我们问自己,假如那天我们决定呆在家里,下雪的概率有多大?

例子

在贝叶斯统计中,我们结合我们的新观察来更新先验,以获得后验分布。假设我们从一袋 4 枚硬币中挑选一枚,他们的偏好分别是 0.2,0.4,0.6,0.8。你随机选一枚硬币,然后扔出去。结果是六分之三的头着地。给定这些信息,你将如何更新硬币袋的偏差?

它与方差有什么关系?

这个想法是**标准差捕捉不确定性,从而给我们关于后验分布的信息。**这个意义上的先验可以用 Jeffrey 的先验代替,它取 Fisher 信息的平方根。如果没记错的话,费雪信息只是基于 MLE 计算方差的另一种方式。

评论

下次当有时要求你计算一个基本分布的期望或方差时,你要澄清一些假设:数据的函数是可计算的吗?我们的样本量是多少?我们的数据是假设正态分布的吗?我们假设任何条件吗?它是用来做什么的?这些问题将帮助你理解如何正确地计算它。

估计器、损失函数、优化器——最大似然算法的核心

原文:https://towardsdatascience.com/estimators-loss-functions-optimizers-core-of-ml-algorithms-d603f6b0161a?source=collection_archive---------7-----------------------

为了理解机器学习算法如何从数据中学习以预测结果,理解训练算法所涉及的基本概念是必不可少的。

我假设你有基本的机器学习知识,也有概率和统计的基本知识。如果没有,请浏览我之前的帖子这里这里。这篇文章涉及到一些理论和数学,所以请耐心听我说,一旦你读到最后,当我们把这些点联系起来的时候,它会变得完全有意义。

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

source

评估者

估计是一个统计术语,用于在给定一些数据的情况下,找到未知参数的一些估计值。点估计是试图对某些感兴趣的量提供单一的最佳预测。

感兴趣的数量可以是:

  • 单一参数
  • 参数向量,例如线性回归中的权重
  • 整体功能

点估计量

为了区分参数的估计值和它们的真实值,参数**θ**的点估计值用**θˆ** **表示。**设**{x(1) , x(2) ,..x(m)}****m** 独立同分布的数据点。那么点估计量是数据的任何函数:

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

点估计量的这个定义是非常通用的,它允许估计量的设计者有很大的灵活性。虽然几乎任何函数都可以作为估计量,但好的估计量是其输出接近生成训练数据的真实基本θ的函数。

点估计也可以指输入和目标变量之间关系的估计,称为函数估计。

函数估计

这里我们试图预测一个给定输入向量 x 的变量 y .我们假设有一个函数**f(x)**描述了 y 和 x 之间的近似关系.例如

我们可以假设**y = f(x) + ε**,其中**ε** 代表**y** 中从**x**不可预知的部分。在函数估计中,我们感兴趣的是用模型或估计**fˆ**来近似**f** 。函数估计真的就跟估计一个参数**θ**一样;函数估计量**fˆ**简单来说就是函数空间中的点估计量。例如:在多项式回归中,我们要么估计一个参数***w*** ,要么估计一个从***x*****y**的函数映射。

偏差和方差

偏差和方差衡量估计量中两种不同的误差来源。偏差
测量函数或参数与真实值的预期偏差。另一方面,方差提供了对任何特定数据采样都可能导致的与预期估计值的偏差的度量。

偏见

估计量的偏差定义为:

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

其中期望值是对数据(被视为来自随机变量的样本)的期望值,而***θ***是用于定义数据生成分布的***θ***的真实基础值。

一个估计量**θˆm**被称为是无偏的,如果**bias(θˆm) = 0**,这意味着
**E(θˆm) = θ**

方差和标准误差

估计量的方差**Var(θˆ)**,其中随机变量是训练集。或者,方差的平方根被称为标准误差,标为标准误差**SE(ˆθ)**。估计量的方差或标准误差提供了一种方法,可以衡量我们从数据中计算出的估计值在从基础数据生成过程中独立地对数据集进行重新采样时会如何变化。

正如我们可能希望估计量显示低偏差一样,我们也希望它具有相对较低的方差。

讨论了估计量的定义之后,现在让我们来讨论一些常用的估计量。

最大似然估计量

最大似然估计可以定义为从样本数据中估计参数(如均值或方差)的方法,使得获得观测数据的概率(似然性)最大化。

考虑一组从真实但未知的数据生成分布**Pdata(x)**中独立抽取的**m** 示例**X = {x(1), . . . , x(m)}**。设**Pmodel(x; θ)**是由**θ**索引的相同空间上的概率分布的参数族。换句话说,**Pmodel(x; θ)**将任何配置**x**映射到估计真实概率**Pdata(x)**的实数。
然后**θ**的最大似然估计量定义为:

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

因为我们假设例子是同分布的,所以上面的等式可以写成乘积形式:

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

由于各种原因,这种产品在许多情况下可能不方便。比如容易出现数值下溢。同样,为了找到这个函数的最大值/最小值,我们可以对这个函数 w.r.t **θ**求导,并使其等于 0。因为我们这里有产品的术语,我们需要应用链式法则,这对于产品来说是相当麻烦的。为了获得更方便但等价的优化问题,我们观察到取似然的对数并不改变其 arg max,而是方便地将乘积转换成和,并且由于 log 是严格递增的函数(自然对数函数是单调变换),它不会影响***θ***的结果值。

所以我们有:

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

两个重要属性:一致性和效率

**一致性:**随着训练样本的数量趋近于无穷大,参数的最大似然估计收敛于参数的真值。

效率:一种测量我们有多接近真实参数的方法是通过期望均方误差,计算估计和真实参数值之间的平方差,其中期望超过来自数据生成分布的**m**训练样本。该参数均方误差随着**m** 的增加而减小,并且对于**m** 大的情况,克莱姆-拉奥下界表明没有一致的估计量具有比最大似然估计量更低的均方误差。

出于一致性和效率的原因,最大似然法通常被认为是机器学习的首选估计方法。

当示例的数量足够少以产生过拟合行为时,可以使用诸如权重衰减之类的正则化策略来获得最大似然的有偏版本,其在训练数据有限时具有较小的方差。

最大后验概率估计

遵循贝叶斯方法,允许先验影响点估计的选择。该图可用于根据经验数据获得未观察量的点估计。MAP 估计选择最大后验概率的点(或在连续θ的更常见情况下的最大概率密度):

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

其中在右手边,**log p(x|θ)**是标准对数似然
项,**log p(θ)**对应于先验分布。

与完全贝叶斯推理一样,MAP 贝叶斯推理的优势在于
利用了先验带来的、在
训练数据中找不到的信息。这些附加信息有助于减少
标测点估计值的差异(与最大似然估计值相比)。然而,这是以增加偏差为代价的。

损失函数

在大多数学习网络中,误差被计算为实际输出***y*** 和预测输出***ŷ***之差。用于计算该误差的函数被称为损失函数,也称为成本函数。

到目前为止,我们的主要焦点是通过 MLE 或 MAP 进行参数估计。我们之前讨论它的原因是 MLE 和 MAP 都提供了导出损失函数的机制。

让我们看看一些常用的损失函数。

均方误差(MSE): 均方误差是最常见的损失函数之一。MSE 损失函数广泛用于线性回归中作为性能度量。要计算 MSE,您需要将预测值和实际值之间的差异进行平方,然后在整个数据集内进行平均。

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

其中,***y(i)***是实际预期输出,***ŷ(i)***是模型预测。

机器学习中使用的许多成本函数,包括 MSE,都可以从 MLE 中导出。

为了了解我们如何从 MLE 或 MAP 中导出损失函数,这里涉及到一些数学,您可以跳过它,进入下一部分。

从最大似然法导出均方误差

线性回归算法学习取一个输入**x** 并产生一个输出值***ŷ***。选择从**x*****ŷ***的映射以最小化均方误差。但是我们如何选择 MSE 作为线性回归的标准呢?让我们从最大似然估计的角度来解决这个问题。我们现在不再产生单一的预测***ŷ***,而是将模型视为产生条件分布**p(y|x)**

我们可以将线性回归问题建模为:

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

我们假设**y** 为正态分布,其中***ŷ***
为分布的平均值,方差固定为用户选择的某个常数**σ²** 。对于许多应用来说,正态分布是一个明智的选择。在事先不知道实数的分布形式的情况下,正态分布是一个很好的默认选择。

现在回到前面定义的对数可能性:

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

其中***ŷ(i)***是对第 I 个输入**x^(i)**的线性回归的输出,**m** 是训练样本的数量。我们看到前两项是常数,因此最大化对数似然意味着最小化 MSE,如下所示:

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

我们立即看到,最大化相对于***θ***的对数似然产生了与最小化均方误差相同的参数估计***θ***。这两个标准具有不同的值,但最优位置相同。这证明了使用 MSE 作为最大似然估计程序的合理性。

**交叉熵损失(或对数损失)😗*交叉熵度量两个概率分布之间的散度,如果交叉熵大,则意味着两个分布之间的差异大,而如果交叉熵小,则意味着两个分布彼此相似。

交叉熵被定义为:

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

其中 P 是真实标签的分布, Q 是模型预测的概率分布。还可以看出,交叉熵损失也可以从 MLE 中导出,我不会用更多的数学来烦你。

让我们进一步简化我们的模型:

  • n——观察次数
  • M —可能的类别标签数量(狗、猫、鱼)
  • y —一个二进制指示符(0 或 1)表示分类标签***C*** 是否是正确的分类用于观察***O***
  • p —模型预测的观察概率

二元分类

在二进制分类中(M=2),公式等于:

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

在二进制分类的情况下,将每个预测概率与实际的类输出值(0 或 1)进行比较,并计算分数,该分数基于与期望值的距离来惩罚该概率。

形象化

下图显示了给定真实观测值(y= 1)的可能测井曲线损失值的范围。随着预测概率接近 1,测井曲线损失缓慢下降。然而,随着预测概率的降低,测井曲线损失迅速增加。

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

对数损失惩罚这两种类型的错误,但特别是那些有把握和错误的预测!

多级分类

在多类分类(M>2)中,我们取观测值中每个类预测的测井损失值的总和。

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

二元或两类预测问题的交叉熵实际上被计算为所有示例的平均交叉熵。Log Loss 使用负 Log 来提供一个简单的比较指标。之所以采取这种方法,是因为正对数数字< 1 returns negative values, which is confusing to work with when comparing the performance of two models. See 这个帖子详细讨论了交叉熵损失。

ML 问题和相应的损失函数

让我们看看机器学习模型中常用的输出层和损失函数有哪些:

回归问题

预测一个实值量的问题。

  • 输出层配置:一个带线性激活单元的节点。
  • 损失函数:均方误差(MSE)。

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

二元分类问题

把一个例子归为两类中的一类的问题。这个问题被设计成预测一个例子属于第一类的可能性,例如,你给这个类赋值 1,而给另一个类赋值 0。

  • 输出层配置:一个带 s 形激活单元的节点。
  • 损失函数:交叉熵,也称对数损失。

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

多类分类问题

把一个例子归为两类以上的问题。这个问题被设计成预测一个例子属于每一类的可能性。

  • 输出层配置:使用 softmax 激活功能的每个类一个节点。
  • 损失函数:交叉熵,也称对数损失。

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

讨论了估计量和各种损失函数之后,让我们理解优化器在 ML 算法中的作用。

优化者

为了最小化预测误差或损失*,模型在经历训练集的示例时,更新模型参数***W***。这些误差计算在绘制***W*** 时也被称为成本函数绘制 ***J(w)***,因为它决定了模型的成本/惩罚。因此最小化误差也称为最小化成本函数。*

但是你具体是怎么做的呢?使用优化器

优化器用于更新权重和偏差,即模型的内部参数,以减少误差。

最重要的技术和我们如何训练和优化我们的模型的基础是使用梯度下降

梯度下降:

当我们绘制成本函数***J(w) vs w***时。它表示如下:

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

从曲线中可以看出,存在一个参数值***W*** ,其成本***Jmin***最小。现在我们需要找到一种方法来达到这个最低成本。

在梯度下降算法中,我们从随机模型参数开始,计算每次学习迭代的误差,不断更新模型参数,以更接近产生最小成本的值。

重复直到最小成本:{

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

}

在上面的等式中,我们在每次迭代后更新模型参数。方程的第二项计算每次迭代时曲线的斜率或梯度。

成本函数的梯度被计算为成本函数***J*** 相对于每个模型参数***Wj*** ***j***取特征数量**[1 to n]**的值。***α***阿尔法,是学习率,或者说我们希望以多快的速度向最小值移动。如果*α*太大,我们可以超调。如果***α***太小,意味着学习的步骤很小,因此模型观察所有示例所花费的总时间会更多。

梯度下降有三种方式:

***批量梯度下降:*使用所有的训练实例来更新每次迭代中的模型参数。

***小批量梯度下降:*小批量梯度下降不是使用所有的例子,而是将训练集分成更小的称为“b”的批量。因此,小批量“b”用于在每次迭代中更新模型参数。

随机梯度下降(SGD): 在每次迭代中仅使用单个训练实例更新参数。训练实例通常是随机选择的。当有成千上万或更多的训练实例时,随机梯度下降通常是优化成本函数的首选,因为它比批量梯度下降收敛得更快。

其他一些常用的优化器:

阿达格拉德

Adagrad 专门针对单个特征调整学习率:这意味着数据集中的一些权重将具有不同于其他权重的学习率。这对于缺少大量输入示例的稀疏数据集非常有用。不过,Adagrad 有一个主要问题:随着时间的推移,自适应学习率往往会变得非常小。下面的一些其他优化程序试图消除这个问题。

RMSprop

RMSprop 是由 Geoffrey Hinton 教授在他的神经网络课上开发的 Adagrad 的特殊版本。不是让所有的梯度累积动量,而是只在一个固定的窗口中累积梯度。RMSprop 类似于 Adaprop,它是另一种优化器,旨在解决 Adagrad 留下的一些问题。

圣经》和《古兰经》传统中)亚当(人类第一人的名字

Adam 代表自适应矩估计,是使用过去梯度计算当前梯度的另一种方式。亚当还利用了动量的概念,将先前梯度的分数添加到当前梯度中。这个优化器已经变得相当普遍,并且实际上被接受用于训练神经网络。

我刚刚简要介绍了这些优化器,请参考这篇文章,了解关于各种优化器的详细分析。

我希望现在你明白当你写的时候下面发生了什么:

*# loss function: Binary Cross-entropy and optimizer: Adam
**model.compile(loss='binary_crossentropy', optimizer='adam')** **or**# loss function: MSE and optimizer: stochastic gradient descent
**model.compile(loss='mean_squared_error', optimizer='sgd')***

感谢阅读。

参考资料:

[1]https://www.deeplearningbook.org/contents/ml.html

[2]https://machine learning mastery . com/loss-and-loss-functions-for-training-deep-learning-neural-networks/

https://blog.algorithmia.com/introduction-to-optimizers/

[4]https://jhui . github . io/2017/01/05/Deep-learning-Information-theory/

[5]https://blog . algorithm ia . com/introduction-to-loss-functions/

https://gombru.github.io/2018/05/23/cross_entropy_loss/

[7]https://www . kdnugges . com/2018/04/right-metric-evaluating-machine-learning-models-1 . html

[8]https://rohanvarma.me/Loss-Functions/

[9]http://blog.christianperone.com/2019/01/mle/

爱沙尼亚:全球创业公司和人工智能应用的跳板

原文:https://towardsdatascience.com/estonia-a-springboard-for-global-startups-and-ai-applications-d4d66598656b?source=collection_archive---------22-----------------------

人工智能正在席卷全球。爱沙尼亚在人工智能生态系统中处于什么位置?爱沙尼亚企业为人工智能做好准备了吗?

我们知道,与小公司相比,亚马逊、百度、脸书和谷歌等科技巨头拥有人工智能优势,如收集海量数据、接触顶级人才、对 R&D 的巨额投资。然而,人工智能提供的可能性不仅仅是为最大的公司和最大的经济体保留的。

爱沙尼亚正在寻找吸引国际人才和投资的方法;另一方面,它的面积小,资源有限,这就要求公共行政和政府有效地工作。难怪在爱沙尼亚,政府和公司都注意到了人工智能技术解决当前人口和经济挑战的潜力,因为人工智能仅在北欧对 GDP 的影响预计就相当可观:占 GDP 的 9.9%(1.8 万亿)。

爱沙尼亚今天在人工智能准备方面处于什么位置?

在欧洲,人工智能的准备程度非常高,但即使是最先进的国家也落后于美国的人工智能前沿。然而,欧洲捕捉人工智能全部潜力的能力在不同国家之间差异很大。根据欧洲人工智能生态系统的地图,四个国家在推动欧洲人工智能生态系统方面表现突出——英国、法国、德国和西班牙——并且以拥有欧洲最具活力和最成熟的人工智能景观而闻名。

根据罗兰·贝格和法国数字公司的研究,爱沙尼亚拥有从人工智能应用中受益的良好先决条件,并正在成为欧洲有影响力的人工智能玩家。

尽管欧盟人工智能应用的领导者是 67%人工智能创业公司的所在地,爱沙尼亚和其他北欧和波罗的海国家显示了密度动态,即每人口规模的创业公司数量很高。

与主导者和其他致力于人工智能战略的政府相比,爱沙尼亚认为自己是初创公司和人工智能应用的人工智能实施领导者。

例如,到 2020 年,爱沙尼亚政府已经在公共服务领域推出了 50 种不同的人工智能应用,该国最知名的规模化企业(Taxify、TransferWise、Pipedrive)以及早期人工智能初创公司(Sixfold、AlphaBlues、Feelingstream)已经转向数据和机器学习,以最大限度地提高其产品交付。

与此同时,爱沙尼亚并没有让人工智能狂潮和需要快速实施的人工智能妥协**数据隐私和安全。**爱沙尼亚计划确保人工智能应用程序的安全,以保护其人民和私人数据。爱沙尼亚希望成为根据隐私和安全要求开发人工智能应用的地方。

AI 实现的时代

技术专家李开复在他的书《人工智能的超能力》中认为“人工智能研究的许多困难但抽象的工作已经完成,现在是企业家卷起袖子开始将算法转化为可持续业务的时候了。”

目前哪些爱沙尼亚公司正在实施这一技术?

但首先你可能会问,是什么让一个创业公司变成了“AI 创业公司”。对于这篇文章,我们将人工智能的生产者和使用者都称为“人工智能初创公司”。很难计算爱沙尼亚创业公司和公司的总数,因为人工智能不是一种单一的技术,而是由各种元素组成。

在这篇文章中,我们将研究 13 个人工智能公司的例子,从早期创业公司到成熟的规模化公司,并展示一些政府人工智能应用程序,这些应用程序使用数据和机器学习来重塑产品,实现自动化,另一方面,展示一些更具变革性的公司,这些公司利用数据创建了新的商业模式。

星舰科技

Starship 打造了世界上第一个随时随地为你服务的包裹递送机器人。

星际飞船机器人是先进的设备,可以在半径 3 公里(2 英里)的范围内运送物品。他们的交付平台将开启一个即时、不定期交付的新时代,同时显著降低运输成本。为了让机器人尽可能安全和自主,机器人必须了解他们在哪里,周围世界正在发生什么——人类、汽车、骑自行车的人、障碍物——并预测接下来会发生什么。为了实现这一点,Starship 开发了一种软件,可以处理来自摄像机、雷达和其他传感器的输入,以实时做出驾驶决策。他们还分析历史数据,以明确了解如何进一步改进机器人。

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

Source: Starship Technologies

Taxify (自 2019 年 3 月 7 日起更名为 Bolt)

爱沙尼亚出生的 Taxify 已经成为世界上发展最快的独角兽,在超过 25 个国家拥有超过 1500 万乘客。Taxify 使用数据和尖端技术来了解数百万人如何在城市中移动,并利用这种洞察力来改善城市交通。这意味着接近 10 亿个峰值请求,数十万兆字节的数据,数十亿个坐标。Taxify 开发实时机器学习来改善产品、运营和决策制定,例如预测驾驶时长、为乘坐定价、优化营销活动等。

数据科学和机器学习有助于 Taxify 预测乘客在任何时间、任何地点拥有适量车辆的需求,预先计算价格并提高效率,方法是帮助乘客根据城市中数百万次之前完成的行程找到最佳的上车地点,然后根据动态的加权城市图为司机生成到达这些地点的最佳路线。这些只是他们的数据驱动解决方案的一些例子。

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

Source: Taxify (Bolt)

传送式

TransferWise 是一家新型金融公司,面向在世界各地旅行、生活和工作的个人和企业。这是最公平、最简单的跨境理财方式。

TransferWise 的客户每月转账超过 30 亿笔,其中每一笔转账都由多个机器学习模型即时评分。机器学习在其业务中被用于许多领域。例如,检测欺诈行为和洗钱企图,优化业务流程以降低成本,预测各种客户行为以促进公司发展。

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

Source: TransferWise

验证

Veriff 是超能力者在线身份验证。无论您是出租房屋、呼叫出租车司机还是在线购物,您信任的负责您的房屋、安全或财产的人都可以在几秒钟内通过各种平台安全、无缝地进行验证。

Veriff 中机器学习的核心应用是自动化和欺诈检测:从在图像中查找文档到读出所有数据,再到检测许多不同类型的欺诈企图。世界上有超过 3200 种不同的文档类型,这使得产品的自动化成为一个真正的挑战。

验证的过程要经历几个步骤。这一过程中的每一步都需要自动完成,以获得最佳的客户体验和最低的成本,但不能牺牲质量。Veriff 的机器学习团队正是这样做的:在可能的时候自动做出决定,在需要更彻底的检查时委托给人眼。

莫内塞

爱沙尼亚人 Norris Koppel 于 2015 年推出了新银行公司 Monese ,这是英国和欧洲最受欢迎和最受信任的银行服务之一,也是英国第一家仅支持移动设备的银行。与 Monzo 和 Starling Bank 后来针对千禧一代或早期采用者的做法不同,Monese 的做法与众不同。 Monese 让移民(或任何人)在不需要英国地址的情况下,在几分钟内开立一个英国银行账户,这在当时是任何一家大型商业银行都不会做的。

人工智能在摩纳哥的主要焦点是安全。作为一家负责任的公司,Monese 希望保护他们的客户免受金融欺诈,并将非法交易的风险降至最低。为了准确地做到这一点,他们建立了智能计算机系统来分析客户的个人资料数据、交易序列和社会关系。使用人工智能检测欺诈性交易对他们的业务产生了巨大的积极影响。

除了安全性,Monese 还使用人工智能在客户入职过程中自动分析文件扫描。首先,评估扫描的质量,然后增强原始图像,最后,从扫描的文档中读取重要的文本字段。未来,我们计划开发自己的算法,将文档图片与视频自拍图像进行匹配,以检测假身份证和打击身份盗窃。

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

Source: Monese

管道驱动

Pipedrive 是一款销售 CRM 工具,最初是 2010 年在爱沙尼亚一家车库里的一家小公司。现在,该公司已经扩展到全球 170 多个国家,拥有超过 75,000 名客户。

Pipedrive 将人工智能用于其业务需求和帮助客户预测其销售成功的目的。Pipedrive 为此建立了一个专门的人工智能团队。例如,基于他们在 Pipedrive 中进行的活动,他们知道他们的潜在试用客户转化为付费客户的可能性有多大。此外,他们还建立了一个客户流失模型,预测客户是否会停止使用 Pipedrive 软件。这两个模型都为销售和营销团队提供了可操作的见解,使他们能够更好地与客户互动。对于客户,Pipedrive 正在实施基于人工智能的解决方案,以预测他们的销售成功和收入。由于销售在很大程度上是基于沟通,他们现在正致力于利用人工智能方法来提取见解和提高效率。

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

An example of a prediction model evaluation metrics over time. Source: Pipedrive

林奎斯特

爱沙尼亚核物理学家设计的 Lingvist 可以大大减少学习一门语言的时间。Lingvist 正在开发技术,利用机器学习将学习速度提高 10 倍。他们的第一步是将这项技术应用于语言学习。

林奎斯特正在使用人工智能来模拟人们学习时大脑中发生的事情。他们的记忆是如何工作的。他们是如何学习和遗忘的。他们如何创建模式来有效地使用他们的知识。Lingvist 的高级机器学习算法会学习你需要练习哪些单词,以及什么时候该练习新单词。每个人的体验完全不同。

AI 帮助我们理解人们知道什么和不知道什么,而不用直接问他们。这有助于使学习内容非常个性化,并非常精确地匹配用户级别。林奎斯特称之为知识图谱技术,它的最终目标是让每个人都能学得更多、更快、更聪明。

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

Source: Lingvist

六倍

六重帮助世界上一些最大的生产商实时了解他们的出货量。对于每个这样的托运人,Sixfold 跟踪属于数百个不同承运人的数千辆卡车,并将其组合成一个可操作的数据流。Sixfold 让托运人和他们的最终客户持续获得信息-检测每批货物的状态,预测交付 eta,并就即将到来的延迟和其他问题发出警报。

Sixfold 使用数据科学来构建从几十个实时数据源中推断有用信息的解决方案,例如确定装运的当前状态和预测卡车司机的休息行为。

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

Source: Sixfold

感觉流

Feelingstream 是一个企业 SaaS 平台,帮助销售经理从现有客户对话中捕捉销售潜力信号,包括电话、网络请求、支持票、电子邮件、聊天等,并将它们转化为新的销售线索。他们分析语音和文本数据,为员工提供近乎实时的行动或建议。大型服务提供商(如银行、电信、运输、公用事业等)可以利用这些信息来提高保留率和销售业绩。Feelingstream 为北欧语言开发了一个独特的平台,使用人工智能来预测销售潜力和客户服务的流失风险。

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

Source: Feelingstream

Timbeter

虽然木材是使用最先进的机械和硬件来切割的,但是测量和管理木材仍然是中世纪的事情。 Timbeter 提供了一种解决方案,让您可以借助智能设备快速准确地测量木材,并以数字形式管理所有数据。Timbeter 使用光学检测来测量每根原木的数量、体积和直径,这是供应链管理中最重要的信息。

Timbeter 已经收集并将继续收集来自木材行业和现有客户的数据。这些数据用于指导机器如何检测日志。通过机器学习的数据,我们实现人工智能来测量图片上的日志。

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

Source: Timbeter

北极星艾

为了支持 AI 在组织和企业中的实施,爱沙尼亚领先的 AI 专家在 2017 年推出了独立的非营利性北极星 AI 。他们聚集了世界和北欧的领先技术公司,为每年 3 月在塔林举行的世界上最高质量的机器学习技术活动铺平了道路。

目标是刺激人工智能在该地区的采用,并教育人们了解人工智能提供的机会,并为他们提供与机器合作的必要技能。通过汇集人工智能的从业者,并专注于数据科学和机器学习的现实应用,北极星人工智能打算降低开发人员、工程师、首席技术官、数据驱动的初创公司创始人和产品经理的准入门槛。

北极星人工智能年会将于 2019 年 3 月 7 日举行,这是一次机器学习会议,内容质量高,重点关注人工智能和数据的现实应用。

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

Source: North Star AI

阿尔法布鲁斯

AlphaBlues 正在开发虚拟客户助理,帮助银行和电信公司在他们的网站上提供全天候的客户支持聊天,使用我们的产品理解人类语言。该公司是首批将人工智能虚拟助手和实时聊天无缝集成到连贯解决方案中的公司之一。一个专有的内部开发的 NLP 引擎和虚拟助理平台(AlphaAI)与一个用于人工代理的实时聊天产品(AlphaChat)捆绑在一起。这使得将客户旅程完全自动化为一个流程—从使用虚拟助理访问网站到与人工代理聊天。符合 GDPR 标准的解决方案还支持构建语音操作的虚拟助理。该解决方案已经被几家银行和电信公司采用。

Proekspert

Proekspert 是爱沙尼亚领先的全面工业 IT 解决方案提供商。在工业环境中,数据科学分为三大类:生产优化、维护和产品改进及质量的高级解决方案。然而,为了做到这三点,支持生产和产品的数据架构必须是合理的。因此,作为第一步,Proekspert 为客户提供支持,帮助他们正确收集数据。只有在此之后,他们才会提供以下功能:

  • 生产优化本质上意味着更好的规划。他们使用车间数据来提供关于车间生产流程的预测性决策支持,如果条件允许的话,还提供规范性决策支持。离散制造的周期时间,尤其是在高度多样化的产品组合环境中,具有高度的相互依赖性和模式,超出了传统生产经理的工具包(如电子表格)的能力。相反,他们使用梯度提升树等建模技术来识别这些模式,并为更准确的规划提供可操作的见解。
  • 设备故障和停工期是生产成本的明显驱动因素。根据从设备中收集的数据,他们识别出正在经历退化或其他异常行为的部件、组件或整套设备。这将转化为设备故障和 MTBF 时间的概率模型,进而用作维护计划的输入。我们监控的数据往往符合高速度(振动数据)、高容量(多维时间序列)和多样性(振动与测试设备的文本日志)的大数据标准。
  • 产品和质量改进。如果生产的设备已经部署到客户处并收集数据,Proekspert 将为制造商提供关于设备使用方式(如使用模式)、性能(效率)和故障原因的洞察支持。与大多数人工智能解决方案一样,它可以归结为模式检测和分类、聚类或异常检测。这些结果可以用来洞察更好的生命周期支持计划,也可以作为工程和设计的输入,以构建更好的产品。

政府 AI 应用:

国家机构每天收集大量数据,政府正在提高国家分析公共数据的能力。经济事务部爱沙尼亚统计局之间正在进行的合作将为政府和私营部门的实时、实用和合乎道德的数据应用奠定基础。

例如,人工智能应用程序可以通过分析卫星图片来有效地检测结冰的道路,或者提供更好的工作匹配,或者提供预先计算的税收的电子税务系统。

每年,爱沙尼亚大约 95%的纳税申报是以电子方式提交的。纳税人使用安全 ID 登录系统,在预先填写的表格中查看他们的数据,进行任何必要的更改,并批准申报表。该过程通常需要 3 到 5 分钟。自 2015 年以来,甚至一键报税也成为可能——系统中已经存在的数据将与计算结果一起显示给用户,然后用户所要做的就是点击确认按钮。所有这一切只需要不到一分钟的时间。

数据和 AI 帮助维持一个小政府

凭借其在公共和私人领域采用人工智能的当前发展,爱沙尼亚有潜力成为欧洲人工智能生态系统中更具影响力的参与者。为了支持欧盟层面的人工智能应用,并吸引世界各地的人工智能初创公司,爱沙尼亚旨在满足数据可用性、数据安全交换、公共数据访问和人工智能友好法规的标准,以支持爱沙尼亚全球人工智能应用的开发。

ETF2Vec:我试图从 ETF 持股中提取叙事的故事

原文:https://towardsdatascience.com/etf2vec-my-story-about-trying-to-extact-narrative-from-etf-holdings-5a5f355ce3c4?source=collection_archive---------27-----------------------

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

IBM closest neighbours

这个世界被嵌入模型所占据。Word2vec,图像到矢量等等。在最近关于从科学论文中提取知识的新闻之后,我决定将模型应用到金融领域。

在我开始之前,我必须承认:我没有学到多少知识,但还是学到了很多东西。

抓取 ETF 持仓

起初,我需要关于 ETF 投资组合的信息。由于不愿意为 efdb.com 这样的数据库付费,我决定直接从 ETF 网站上删除信息。

有很多 ETF 提供商,所以我研究了其中一些:

  1. 贝莱德(1,5 trln) :所有信息都在同一个页面上,投资组合持股可以作为单独的 csv 文件下载,选定日期的历史持股也是可用的。
  2. Vanguard (1,1 bln): 不可下载。csv 文件,所有控股在单独的标签与下一个/上一个按钮。非常不方便报废。
  3. 景顺(200 bln) :很难获得 ETF 的名单。
  4. 富达(14 bln) :目前最差的抓取网站:多个标签,投资组合在单独的弹出窗口中,持股每月更新一次,没有。csv 文件。

我还没有全部检查过,但是我打赌没有一个供应商有任何类型的 API 可以下载。毕竟,贝莱德是一个明显的赢家:规模最大(约 800 只 ETF,涵盖了全球几乎所有值得交易的东西),使用起来最舒适。对于爬虫,我使用了 selenium多处理库。

截至 2019 年 7 月 7 日,我下载了 792 个单独的 ETF 持股。他们在这里是。

准备数据

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

过滤的问题如下:

  1. 有些 ETF 尽管名称不同,但本质上是一样的。例如,AGGG 和阿格是一样的:前者用美元,后者用欧元。
  2. 多只 ETF 是债券 ETF,债券发行数量大于权益持有数量。这很自然,因为一个典型的公司有一种可交易的股票(暂且不考虑优先),但可能有几十种不同到期日的债券发行。因此,我决定将资产范围仅限于股票。
  3. 我限制了权重至少为 2%的 ETF 的数量。有很多 ETF 跟踪像标准普尔 500 或罗素 2000 这样的大型指数,很明显,指数中的股票之间存在最低限度的联系。
  4. 最后,我将 universe 限定为 ETF,毕竟过滤后至少有 10 项资产。最终设置-146 ETF。

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

ETF2Vec 模型

我使用 pytorch 教程中提供的最简单的模型,名称略有变化:

在通常的 word2vec 中,句子中的单词和单词上下文被推送到模型中,以找到任何相关的内容。在我这里,ETF 持仓量是单词,不同的 ETF 代表句子。单词由 ISIN 号识别(详见维基百科),对每个安全都是唯一的。

寻找邻居的算法是基于 ETF 中资产的权重。我使用权重作为概率,通过 numpy.random.choice() 进行选择

etf_list 具有 dic 的 dic 列表形式:[ETF_1:{‘ISIN’:[],‘权重’:[],‘部门’:[],‘跑马灯’:[]},…]。

为了防止过度拟合,我决定在每个时期使用不同的集合。由于概率是与权重联系在一起的,所以它们没有大的变动,但仍然给数据增加了一些变化。

我在 146 个 ETF 中有 1181 个资产,生成了 2153 个样本,这意味着平均每个资产在每个时期出现 1.82 次。这意味着许多股票只出现一次。

嵌入空间= 10,上下文大小= 10

在大约 100 个历元之后,训练误差停止减少。

虚拟化

我在漂亮的谷歌分析工具中可视化了一切:https://projector.tensorflow.org

为了映射数据,我创建了矢量嵌入和元矢量(扇区和股票信息)。

起初,我预计来自一个行业的公司会以某种方式组合在一起,但最终的情况却截然不同。

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

Universe of ETF holdings. Each circle — stock.

尽管资产分配看似混乱,但股票的分组似乎部分符合逻辑:可口可乐与百事可乐和宝洁被归为一类。

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

但是,尽管看起来关系密切,可口可乐和百事可乐在原始向量空间中的关系并不密切。

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

向量数学

嵌入最有趣的部分是向量数学。所以,我研究的最初目的是检验如果把可口可乐中的百事可乐去掉,或者把通用和麦当劳加在一起会发生什么?

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

可口可乐-百事可乐=能源股

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

好吧,结果绝非无聊:康菲石油公司、中石化和马尼拉电力公司。这三只股票都与能源有关。

结论和要点

我认为嵌入模型可以应用于金融领域。谁知道呢,如果这个模型包含更多的数据,我们会遇到什么呢?

此外,我还学到了很多关于从网上搜集数据和 ETF 提供商对他们网站的态度。

机器学习的伦理故事板

原文:https://towardsdatascience.com/ethical-storyboarding-for-machine-learning-7c5b5a031173?source=collection_archive---------15-----------------------

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

[A comic-style storyboard with scenes of technical ML content and human-machine interactions]

想象我们在自己生活的系统中构建的系统

机器学习正以梯度下降的方式进入越来越多的地方,随着它的到来,对熟练的 ML 从业者的需求越来越多,对我们对社会的基本假设的挑战也越来越大。事实是,ML 正迅速地深深融入我们的世界,以至于无法将工程和伦理问题彼此分开,为了在它所创造的浪潮中生存下来,我们将需要一支员工队伍,他们敏锐地意识到它的工作如何通过波及到周围的世界。有什么地方比教室更能提高这种意识呢?

今年春天,我在米尔斯学院(Mills College)共同教授谷歌(Google)新的应用机器学习强化训练营的试点课程,该项目将所有不同专业和背景的大学毕业生聚集在一起,向他们介绍广泛的基础机器学习技术。谷歌非常慷慨地给了我一些灵活性,让我尝试一些教授工程学和伦理学的综合方法,就像一个调整良好的神经网络的输出一样,结果令人震惊。

目前的技术水平

当我在斯坦福大学读工程本科时,我们被要求参加两门“工程公民”课程,通过一点自我反思来完善我们的技术知识。

其中一项要求是专业写作研讨会,这是一门课程的仓促而不幸的一个单元的事后想法,主要是评论我们数字设计实验室的家庭作业。课堂时间主要集中在陈述我们的观点时礼仪的重要性,我们写作的首要标准是足够的自我克制,以避免咒骂我们的教授(平均分数低得惊人)。另一项要求是社会科技,我们可以报名参加斯坦福大学社会科技系的任何一门课程。这些课程非常抽象,在某种程度上非常正式,这让习惯于应用工程内容的学生感觉他们被困在了一篇关于学术界的洋葱文章的深处。我们是傲慢、饥渴的工程本科生,在一场学术装腔作势的飓风中忽略了这个主题的严重性。快进十年——我们 STEM 课堂的教学和技术已经有了巨大的进步,然而…

在我们的 ML 训练营开始时,我很欣慰地看到谷歌已经屏蔽了一个致力于“ML 公平和偏见”主题的早期单元。酷!这是一个很好的开始,但是有些事情仍然困扰着我:这只是另一个专业写作研讨会。事实是,在 ML 入门课上,关于偏见的一个单元就像悲剧发生后的思考和祈祷——听起来不错,但却放弃了我们系统地治愈问题的责任。

让我们谈谈综合方法论

我们修改本课程道德单元背后的主要原则是,它应该是工程过程中反复出现的持续呈现的方面,就像我们对待调试和测试一样。研究显示了将“测试优先”练习整合到基础 CS 作业中的价值,我们希望在 ML 课程中采用“偏见优先”的方法也能得到类似的结果:当学生在工程背景下探索和运用数据集时,他们也应该发展一种反射,从伦理角度分析他们的解决方案。

我们本学期达成的是一份“伦理故事板”工作表:一份写作练习,要求学生具体描述在给定数据源上训练的 ML 算法的积极和消极后果,然后根据他们的分析,头脑风暴不同的方法来改变他们的设计。这些问题旨在总结一些我们认为有原则、有能力的工程师应该具备的特定行为:

  • 从一开始就把你的项目可能带来的负面影响牢记在心,而不是在所有技术工作完成后把它们掩盖起来或者口头上说说
  • 头脑风暴解决跨越工程过程的多个维度的问题,而不仅仅是技术层面的问题
  • 感到安全地讨论负面的、可能使项目停止的问题,同时也加入到推动团队前进的对话中。

每当学生遇到新的数据集,他们都被要求填写这张工作表。在早期,当学生们都在处理相同的数据时,我们也在这个书面作业之后进行课堂讨论,听取学生对练习的汇报。这些早期讨论的主要作用之一是强调持续反思和迭代的重要性,而不是将手头的伦理问题“工程化”(对工程课程的广泛调查发现这是一个反复出现的问题)。我们真的不希望学生学会应用技术创可贴来“解决”偏见。这可能是一个人从这个练习中得到的最危险的收获,教练应该格外注意解决这个问题。

道德故事板工作表

这里展示的是发给我们学生的工作表,其中填写了一个玩具示例,以展示在机器学习入门课程中学生所期望的内容形式和水平。

  • 描述您的数据集

我们选择了 MNIST 手写数字数据库(http://yann . le Cun . com/exdb/mnist)/,这是一个收集了 60000 幅手写阿拉伯数字图像的数据库。

  • 写一个一段话的故事,描述一个虚构的人被一个用该数据训练的模型正面影响

Riley 是一名医生,他将大部分时间花在病人身上,想办法将数据输入到他们的诊所已经签约使用的任何当前电子医疗记录软件中。在最新的更新之后,他们决定改用自由格式的笔记软件,让他们可以在平板电脑上以任何喜欢的形式写下医疗记录,并使用 MNIST 训练的带有数字识别的 OCR,使这些记录可以搜索和复制。现在,他们可以更专注于满足客户的需求,而不必再去理解一个新的复杂的用户界面!

  • 描述至少两个偏见的来源在你的故事中特定的模型可能有

经过研究,我们发现 MNIST 数据集是由人口普查局员工和高中生的笔迹汇编而成的(我们找不到任何一个群体的进一步人口统计信息)。虽然数据集中代表了数百名不同的作家,但在职医疗从业者和 MNIST 所代表的不同人群之间的笔迹完全有可能存在实质性差异。此外,因为大多数 MNIST 的 ML 基准测试孤立地使用数据集,所以不清楚字母字符或标记的引入是否会使 MNIST 训练的网络不太准确

  • 描述至少一种我们可以修改模型来减轻这种偏差
    例如,当设计我们的模型来解释其输入数据中的固有偏差时,我们能做什么?

我们可以在正常的识别网络上使用一个分类器来确定一个区域可能是一个数字还是一个单词,并使用该信息来加权从 OCR 模型输出的最终字符类别概率。我们不清楚如何通过单独改变我们的软件来解决糟糕的手写识别问题——这似乎需要对训练数据本身进行更深入的改变。

  • 描述至少一种我们可以修改数据集以减轻这种偏差的方法
    例如,如果我们再次收集这些数据,我们可以做哪些不同的事情?

我们可以确保从医生的笔迹中建立 OCR 数据集,并确保笔迹包括我们在普通医疗记录中可能看到的所有字母、数字和符号。

  • 描述至少一种方法,我们可以修改模型周围的环境以减轻这种偏见
    例如,在使用该模型的社会系统中,我们可以采取什么样的人类实践或政策来保护人们?

我们可以制定一个严格的记录发布政策,这样,每当数据从医生的手写笔记转移到药房或其他专家时,都会有人审查数据,以确保所有相关记录都包括在发布中,并且从这些记录中复制和粘贴的所有数字都是准确的。

  • 写一个一段话的故事,描述一个虚构的人受到用该数据训练的模型的负面影响

泰勒是莱利的病人之一,在他们 20 岁生日后开始经历局灶性癫痫发作。Riley 给他们开了最大剂量为 3000 毫克/天的抗癫痫仿制药左乙拉西坦,但 OCR 失败将 3 解释为 8,药剂师没有发现。泰勒患上了急性药物中毒,在急诊室呆了一夜,现在除了一般保险费和未偿还的学生贷款外,还有惊人的医疗债务要偿还。

实际上,工作表

我们在学期初介绍了这个工作表,在玩玩具线性回归示例后不久,但在它们处理任何真实数据之前。他们分成三人一组,浏览了 Kaggle 上的可用内容,并为他们能找到的最有趣的数据集填写了一个故事板。他们的工作从微妙和令人不寒而栗(就像一家因种族主义引发的食品安全担忧而背负过多财务负担的民族餐馆)到歇斯底里的滑稽(就像一名初出茅庐的大麻吸食者被劝阻不再吸毒,原因是对一种名为“草莓芝士蛋糕”的强力菌株的不当建议)。

我们发现,可以理解的是,学生们对这个练习有着令人难以置信的不同舒适度:一些学生对“故事”的要求做出了恐慌的反应,而另一些学生则很难弄清楚如何将技术上深奥的数据集与现实生活中的故事联系起来。几乎所有的学生都需要澄清提示,要求学生修改他们的技术被使用的社会背景。回想起来,对于这项作业的未来迭代,最重要的改进可能是在全班同学面前写一个示例故事板,风格很像一个新编程技术的现场编码会议。让学生在老师打字时填写细节,这种疯狂的 Libs 风格,可以给这个教学组件增加一个有趣的互动维度。

我们还看到,学生对偏见缓解问题的早期回答往往从非常笼统的挥手到“快速解决”类型的解决方案,尽管随着他们的工作变得更加实际,他们的工作在整个学期都有所改善。我们认为,在课堂讨论之外,对这些故事板进行专门的一对一支持和指导是非常有价值的。

我们发现这张工作表的一个有益用途不仅仅是它的伦理维度,它还是一个诊断工具,用来识别那些在将技术点连接成更大、更实用的画面方面有困难的学生。要求他们在数据集、他们正在学习的技术工具和现实生活中的用例之间建立一个具体的映射,为我们提供了一些发现和填补空白的机会。这种设计思维的练习在本学期晚些时候被证明是重要的,当时学生们开始了他们的自我指导的最终项目:我们发现,由于这种道德框架是他们第一次头脑风暴与 ML 有关的任何事情,他们中的许多人本能地使用它作为开始构思他们项目内容的一种手段。

我们的未来取决于反思

在加拿大,大多数获得工程学位的毕业生都会参加工程师召唤 仪式,在仪式上,他们会背诵一段强调他们职业的社会责任的文章,并获赠一枚终生携带的铁环。这些戒指提醒着他们的社会责任,当然,它们并不比一个独立的 ML 偏见单元,或者一个学期的工程伦理,甚至是一个充满伦理工作表的调查课程更好。尽管如此,我发现他们身上有一些美丽的东西:他们是一种持久的、持续的存在,既是一件因我们的成就而自豪地佩戴的珠宝,也是一种沉重的负担,提醒我们我们的工作如何在我们的世界中反弹。这种情绪是我们希望通过课程传达的核心内容。

我们并不把这个工作表及其相关的教学方法作为伦理工程教育的规范解决方案——它甚至可能不像那样是一个合适的解决方案。相反,我们分享它是为了激发你在自己的技术课程中采用更多道德内容的兴趣;说服你 与**紧密结合。该研究的作者支持测试优先的 CS 作业,他们发现虽然它没有实质性地影响学生的项目成绩,但它确实显著提高了他们测试代码的能力。这对教授第一学期的编程没有价值,但对成为一名全面发展的软件工程师更有价值。正如他们所说:

如果课程可以从一开始就让学生“受测试影响”,我们相信他们很可能会意识到测试是编程不可或缺的一部分,在他们的学术和职业生涯中受益匪浅。

多么美妙的感悟!让我们试着让学生也受到道德的感染。对于那些在你的课程中受到启发去做类似事情的人,对于那些已经在我们前面做类似工作的人,我的心在歌唱——让我们开始一场关于这个的对话,让我们大声说出来。

Naomi Alterman 是一名自由职业的计算机科学教育家和软件工程师,她喜欢和人们讨论思考问题的方法。如果你也这样做,你应该给她写封短信,她会很高兴的。她的联系方式可以在 www.nlalterman.com找到,她的推特账号是@ uhohnaomi

“可信人工智能的道德准则”总结

原文:https://towardsdatascience.com/ethics-guidelines-for-trustworthy-ai-summarised-1c86174e788b?source=collection_archive---------26-----------------------

2019 年 4 月 8 日,欧盟人工智能高级别专家组(HLEG)发布了他们的可信人工智能道德准则,基于 2018 年 12 月发布的“道德准则草案”收到的 500 多条建议。

在这篇博客中,我想帮助你理解这份文件是什么,为什么它对我们很重要,以及我们如何利用它。

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

什么事?

“道德准则草案”是一份咨询文件,描述了“可信人工智能”的组成部分,这是一个合法、道德和强大的人工智能品牌。如标题所示,这篇文档关注可信人工智能的伦理方面。它确实提到了对强大人工智能的一些要求,并在较小程度上提到了围绕人工智能的法律,但明确表示这不是一个政策文件,也没有试图就人工智能的法律合规性提供建议。HLEG 的另一项任务是编写第二份文件,向欧盟委员会(European Commission)提供人工智能政策建议,该文件将于 2019 年晚些时候发布。

该文件分为三章;

  1. 伦理原则、相关价值观及其在人工智能中的应用
  2. 可信 AI 应满足的七个要求
  3. 一个非详尽的评估列表,用于操作可信赖的人工智能

这个结构从最抽象的开始,到具体的信息结束。也有机会对评估列表进行试点和反馈,以帮助塑造本文档的未来版本,该版本将于 2020 年到期。在此登记您的兴趣。

这有什么关系?

我以英国公民的身份写这篇文章,为伦敦的一家公司工作。考虑到英国退出欧盟和英国(可能)退出欧盟,我们有理由问这份文件是否仍然与我们相关。TL;博士,是的。但是为什么呢?

可信的人工智能必须显示三个特征,即合法、道德和健壮。

伦理人工智能延伸到法律之外,因此对于欧盟成员国来说,它并不比那些独立的国家更具有法律强制力。可信人工智能的道德成分意味着该系统与我们的价值观一致,而我们在英国的价值观反过来也与欧洲其他地区紧密一致,这是我们地理位置接近和数十年文化共享的结果。在某种程度上,美国可能也是如此,他们与欧洲分享很多电影、音乐和文学。这份文件中列出的道德价值观仍然引起英国公众的共鸣,这份文件是实施这些价值观的最佳和最有用的指南。

合法的人工智能不是本文的重点,但它是可信人工智能的重要组成部分。该文件提到了几部欧盟法律,如《欧盟宪章》和《欧洲人权公约》,但它没有明确表示合法的人工智能需要遵守欧盟法律。可信的人工智能可以在这个框架中实现本地相关的法律。可以说,遵守欧盟法律是最明智的选择,根据国家统计局的统计数据,2018 年第四季度英国 45%的贸易是与欧盟[1]进行的。如果欧盟成员国的人民和企业只想购买符合欧盟法律的值得信赖的人工智能,他们就成为了一种经济力量,而不是法律要求。我们可以在美国看到同样的模式,商业建筑服务符合 GDPR,一项他们不必遵守的法律,以获取对他们重要的市场。

最后一个组成部分,健壮的人工智能,描述了在其整个运行寿命中以及面对敌对攻击时,在可能面临的各种情况下继续以期望的方式运行的平台。如果我们在原则上同意可信人工智能的合法和道德组成部分,并接受不可预测或敌对的攻击可能挑战其中任何一个,那么第三个组成部分,健壮的人工智能,在逻辑上就变得必要了。

什么是值得信赖的人工智能?

可信的人工智能由三个部分组成:这是合法的、合乎道德的、稳健的。

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

当我们的价值观超越政策时,合法的人工智能可能不道德。道德人工智能可能不健全,即使有最好的意图,不良行动的结果出乎意料或作为敌对攻击的结果。健壮的人工智能可能既不道德也不合法,例如,如果它被设计来进行歧视,健壮将只能确保它可靠地进行歧视,并抵制将其推翻的企图。

这篇文档聚焦于可信人工智能的伦理方面,我也将在这个总结中关注。

什么是伦理 AI?

该文件在第一章(第 12-13 页)中概述了四项道德原则,它们是:

  • 尊重人类自主
  • 预防伤害
  • 公平
  • 可解释性

这四个原则在第二章《实现可信任的人工智能》中进行了扩展,将它们转化为七个要求,这些要求也提到了健壮性和合法性方面。他们是;

“算法、数据和设计流程”(第 19 页)必须针对内部和外部可审计性进行设计,无需泄露知识产权或商业模式,而是增强可信度。负面影响的最小化和报告与人工智能系统相关的风险成比例,记录和报告人工智能系统的潜在负面影响(第 20 页)并保护那些报告合法问题的人。当上述两点发生冲突时,可以基于证据和逻辑推理做出权衡,如果没有可接受的权衡,则不应使用人工智能系统。当负面影响发生时,应向个人提供适当的补偿

评估可信人工智能

转到最具体的指导,第三章提供了实现可信人工智能的评估列表。这是一个非详尽的问题列表,其中一些问题不适合某些人工智能应用的上下文,而其他问题出于同样的原因需要扩展。列表中的所有问题都不应该靠直觉来回答,而应该通过实质性的循证研究和逻辑推理来回答。

该指南预计,伦理原则之间会有紧张的时刻,需要做出权衡,例如,预测性警务可能一方面让人们免受伤害,但另一方面却侵犯了隐私和自由。在这些点上需要相同的基于证据的推理,以理解哪里的收益大于成本,哪里不适合采用人工智能系统。

总之

这并不是 HLEG 项目的结束。我们可以预计,2019 年晚些时候,同一个小组将提出政策建议,这可能会为我们提供合法人工智能的未来要求的有力指示,我们还将看到 2020 年可信人工智能评估框架的新迭代。

这份文件代表了最全面和具体的建设道德人工智能的指导方针,通过补充重叠的合法性和健壮性方面来扩展这意味着什么。它的有用性超越了受欧盟法律约束的国家,总结了欧盟以外的国家所共有的道德价值观,并提供了一个框架,在该框架中,特定地点的法律可以在必要时进行切换。

[1]资料来源:国家统计局——英国出口总额 1657.52 亿英镑,其中 745.68 亿英镑出口到欧盟——英国贸易的 44.98%(四舍五入为 45%)出口到欧盟。

原载于 2019 年 4 月 24 日http://blog.soprasteria.co.uk

人工智能伦理指南

原文:https://towardsdatascience.com/ethics-of-ai-a-comprehensive-primer-1bfd039124b0?source=collection_archive---------3-----------------------

探索人工智能伦理问题的 3 集系列

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

But what is RIGHT? And is that enough? (Image: Machine Learning, XKCD)

不要惊慌

对任何对人工智能伦理感兴趣的人来说,《人工智能伦理搭便车指南》是一本必读的书。这本书的写作风格和精神启发了许多科幻作家。作者的目标不仅仅是一部有趣的短片,而是整个系列。”

听起来差不多!猜猜是谁写了这篇胡言乱语的评论?

一种机器学习算法。 OpenAI 的 GPT2 语言模型被训练来预测文本。它庞大、复杂,需要在昂贵的计算机上对大量数据进行数月的训练;但是一旦这样做了,就很容易使用了。一个提示(“人工智能伦理的搭便车指南”是一个”)和一点点监管就让我用一个[小版本的 GPT2](https://gpt2.apps.allenai.org/?text=The cat sat on the) 生成了这篇胡言乱语的评论。

这篇课文有一些明显的错误,但它是通向未来的一扇窗户。如果人工智能可以产生类似人类的输出,它也可以做出类似人类的决定吗?剧透:是的,它可以,它已经是了。但是类人 就足够好了吗?在一个机器产生类似人类的输出并做出类似人类的决定的世界里,信任会发生什么?我能相信一辆自动驾驶汽车看到我了吗?我能相信处理我的住房贷款的算法是公平的吗?我们能相信急诊室里的人工智能足以为我们做出生死抉择吗?作为技术人员,我们必须反过来问自己:我们如何才能让算法系统值得信赖? 进入伦理道德。为了理解更多,我们需要一些定义、一个框架和许多例子。我们走吧!

构建指南针

为了开始探索人工智能的伦理,让我们首先简单地考察一下任何以软件为中心的技术背景下的伦理。其他技术(如生物技术)的伦理同样重要,但超出了本书的范围。

伦理的定义是:支配个人或团体行为或行动的道德原则。

换句话说,帮助确定什么是好的或正确的“规则”或“决策路径”。鉴于此,有人可能会说,技术伦理只是用来决定其“行为”的一套“规则”或“决策路径”。毕竟,技术不总是为了好的或正确的结果吗?

软件产品,当设计和测试良好时,确实通过这样一组规则或决策路径,为可预测的输入达到可预测的输出。通常以序列图或用户故事的形式出现在一些设计文档中。但是团队如何确定什么是好的或正确的结果,以及对谁而言?它是普遍有益还是只对某些人有益?在某些语境下好,在其他语境下不好吗?它对某些标准来说是好的,但对其他标准来说就不那么好了吗?这些讨论,由团队选择的问题和答案是至关重要的!这就是伦理。在创造技术的过程中,它失去了中立的地位。它不再仅仅是达到目的的另一种手段,而是成为其创造者的观点、意识和道德决心的活的化身。因此,技术(或产品)的伦理始于其创造和创造者的伦理。

为人工智能寻找“正北”

到目前为止,我们理解伦理,我们理解为什么技术不是中立的,我们隐约理解这有影响。但我们如何将这一点应用于人工智能,其中从输入到输出的路径既不可见也不明显;其中输出不是确定的,而仅仅是一个预测。在人工智能中,特别是机器学习(目前实际上可以大规模实施的人工智能的子集),丢失的数据,丢失的输入,丢失的决策路径,丢失的讨论都与预测的“质量”有关。不管预测的“质量”如何,选择使用预测对最终结果的“质量”有影响。最终结果的“质量”关系到它对人类影响的“质量”。其中“质量”意味着道德质量,而不是零缺陷软件。换句话说,人工智能的伦理在于其预测的伦理质量、由此得出的最终结果的伦理质量以及它对人类的影响的伦理质量。

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

伦理也被定义为:处理对与错的纪律,以及人类的道德义务和责任。

道德品质可以在这个定义的背景下理解。人工智能及其创造者的道德义务是什么?它如何声明自己的道德义务和责任?它在多大程度上满足了对他人的道德义务和责任?

我喜欢问**算法系统的输出、结果和影响有多正确、多公平、多公正?**它能在多大程度上,以及在多大程度上,确定并宣布它在哪些情况下是正确、公平和公正的,以及在哪些情况下不是。它能控制如何和在哪里使用它吗?失去对这一背景的控制意味着什么?对这些负责构成了人工智能开发者的道德义务和责任。

为什么这很重要?

虽然这听起来很老套,但人工智能有潜力“改变世界”。鉴于人工智能主流化令人眼花缭乱的步伐,感谢可访问的计算能力开源 机器学习库,很容易看到这种变化将是快速和大规模的。任何为速度和规模而建造的东西都需要对其影响进行严格的检查,因为无意识的伤害也会在规模上发生。再加上人工智能可能造成“伤害”的独特方式,这种紧迫性是实实在在的。除此之外,再加上个人(考虑一下:非国家恶意行为者)可以越来越容易地大规模部署最先进的机器学习系统,这种紧迫性就会袭来。

那么,人工智能会造成哪些“危害”,这些危害在大范围内会产生什么影响?凯特·克劳福德在她的 2017 年 NeurIPS 演讲中提供了思考这个问题的框架。总结一下:

当一个预测或最终结果对个人建立其正当人格的能力产生负面影响(代表性的损害),导致或独立影响他们获取资源的能力(分配的损害)时,就造成了“损害”。

个人的人格就是他们的身份。换句话说,在机器学习系统中错误地表示或未能表示个体的身份是一种伤害。此后,这个系统做出的任何决定,对那个人来说,也是一种伤害。将她对代表伤害的定义扩展到所有相关的人,我认为不能在个人面前准确地代表系统也是一种伤害。技术及其创造者的道德义务要求他们努力减轻所有这些伤害。因此需要人工智能的伦理。

对我们来说,将伦理考虑应用于个人或个人情况是很自然的。例如,当我们受到不公平的对待时,我们会很快发现!但是,在更大、更复杂的环境中,当我们与他们相距两步时,将这一点应用于其他人是极其困难的。我打赌这是不可能的。不是一个人,不是一个人。但是作为一个团体,我们必须。

绘制地形图

贯穿两种伦理学定义的是统称为“人工智能伦理学”的问题。指出预测或最终结果的伦理质量或它们对人类的直接和间接影响的问题。我将它们归纳为如下几类:

  • 在“AI 是什么”(即数据集、模型和预测)的领域里:
    1 .偏见与公平
    2。问责和补救
    3。透明度、可解释性和可解释性
  • 在“人工智能做什么”的领域中,问题是: 1。安全
    2。人机交互
    3。网络安全和恶意使用
    4。隐私、控制和代理(或缺乏隐私、控制和代理,即监控)
  • 在“AI 影响什么”的领域中,问题涉及: 1。自动化、失业、劳动力趋势
    2。对民主和民权的影响
    3。人与人之间的互动
  • 在“人工智能可能是什么”的领域中,问题与来自类似人类的认知能力的威胁和对奇点的担忧有关,控制一直到围绕机器人权利(类似于人权)的辩论。对于这篇博客,我将完全避开这个领域。

人工智能是什么

虽然有些人愿意相信有感知能力的人工智能正在快速接近,甚至超越人类的智力并获得从知识到智慧的能力,在很大程度上不是。鉴于此,假设当我说“AI”时,我指的是一个由学习者(模型)组成的机器学习系统,在给定一组输入(数据)的情况下,它能够学习某些东西并使用该学习来推断其他东西(预测)。(注:在统计学中“推断”和“预测”是两回事;但是机器学习社区可以互换使用它们,或者在某些情况下对训练数据使用预测,对测试或新数据使用推断。总而言之,人工智能是数据、模型和预测。源自数据、模型或预测中的问题的伦理问题属于“人工智能是什么的伦理”范畴。

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

Dataset Bias in Facial Emotion Recognition (Image: Personal Project)

人工智能领域的许多伦理研究、新闻和对话都与偏见有关。这是理所当然的,因为未能识别或纠正这种偏见会导致不公平的结果。这也是人工智能研究人员认为可以量化并在代码中固定的东西。那么什么是偏见,它从何而来,又是如何渗透到机器的智能中的呢?它如何影响结果的公平性?鉴于存在偏见,算法是一个黑箱,我们如何让他们负责?正在进行哪些努力来打开黑匣子,使算法系统透明和可解释?即将在第 2 部分推出!

人工智能做什么

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

Image: Drawings of Dogs

使用机器学习机制构建的应用程序将技术与人类的交互提升到了一个全新的水平。自主机器人,即不需要人类实时或频繁指令的机器人(如汽车、无人机、吸尘器、twitter 机器人等)。)影响和改变我们的运营环境。它们间接地改变了我们的行为。人类会适应。有人可能会说他们也能适应这些新的操作环境。例如,当汽车问世时,人类适应了道路上新的交战“规则”。然而,汽车也带来了限速、路标、交通法、安全法规和其他制衡措施,以确保安全和顺畅的技术-人类互动。随着人工智能应用充斥我们的世界,研究人员认识到迫切需要评估对人类安全的影响,人类对自主机器人的感知和互动,对我们的隐私、尊严和代理感的影响。我们将在第 3 部分进行更多的探索。

人工智能有什么影响

技术产品通常会引发二阶和三阶后果,这些后果起初并不总是显而易见的。尤其是当产品超出了它们最初的意图和受众,达到了一刀切模式悲惨失败的规模时。随着社交媒体影响世界各地的民主制度,我们看到这种情况正在发生,像脸书、T2、谷歌和 T4 的推特都在努力控制他们的算法和他们平台上的大规模游戏。有了人工智能,二阶和三阶后果不仅仅限于应用程序或平台,而且还延伸到其他领域。在第 3 部分,我将探讨人工智能如何影响就业,以及在许多情况下如何加剧机会和收入的不平等。我还将探讨它如何影响人与人以及人与社会的互动。随着真人和自动机器人之间的界限开始在网上变得模糊,随着人类受到大量“信息”的轰炸,通常是虚假的,信任的概念以及因此而产生的安全性是如何被动摇的。请继续关注第三部分。

额外资源

这是探索人工智能伦理的三部分系列的第一部分。 第二部分,此处可用 ,潜进什么是艾的伦理。 第三部分,此处可用 ,着眼于人工智能做什么和人工智能影响什么的伦理。

非常感谢 雷切尔·托马斯*卡蒂克·杜赖萨米 斯里拉姆·卡拉 对初稿的反馈。一个大声喊出来也给这个领域所有牛逼的人, 其中很多都是女性 。他们是我的英雄。*

面部识别的伦理:如何使商业使用公平透明

原文:https://towardsdatascience.com/ethics-of-facial-recognition-how-to-make-business-uses-fair-and-transparent-98e3878db08d?source=collection_archive---------14-----------------------

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

随着计算机视觉和面部识别的日益普及,企业努力采用创新来保持领先地位。埃森哲的数据科学家报告称,在安全、客户互动、零售、营销等领域。他们预测未来将会充满科技入侵。

在这个未来,不同的场景是可能的。这引发了不可避免的讨论。当一群利益相关者表达对面部识别技术可能被滥用于监控目的的担忧时,亚马逊的认可就是如此。不是徒劳的。

通常,实施基于人工智能的创新(如面部识别)的主要理由是为了增加投资回报率。这种情况不能不引发伦理问题。组织应该如何解决人工智能的缺点?是时候把事情搞清楚了。

建造人工智能是有原因的,而不仅仅是因为一个人可以

人工智能的普及在 1965 年的会议后获得了动力,当时科学界首次联合起来研究复制人脑的方法,并使机器能够进行只有人类才能做的活动。从那时起,计算能力和数据科学领域的积极经验显著增加。

迄今为止,最新的技术堆栈、人工智能库和框架允许程序员构建广泛的基于人工智能的解决方案和应用程序,以满足各种业务需求。虽然使用了一些提供的技术堆栈,但他们可能对开发的核心原则关注不够。也就是说,伦理原则。他们中有太多的人可以创建高质量的应用程序,但是很少有人问自己关于构建一些新颖的东西的伦理方面。

作为面部识别领域的世界领导者之一,微软表达了对人工智能伦理的担忧。他们想出了 6 个核心原则来帮助开发更有意义。

道德用途的六大支柱

微软公司的 Brad Smith 分享了他的观点,他说:“先进技术不再脱离社会、我们的个人和职业生活。这意味着面部识别的潜在用途数不胜数。”该技术不仅能够影响业务发展战略,还能够影响通信、日常个人生活、日常任务、一个或另一个组织在市场上的声誉以及其在员工中的声誉。

一些使用面部识别技术的案例暴露了算法偏见,并引发了对透明度和合法性的质疑。让我们举个例子,谷歌照片中的图像识别算法揭露了种族偏见,或者奥兰多国际机场的 T2 面部扫描系统引起了人们对扫描准确性的担忧,事实上没有严格的规定来处理被错误识别的乘客。鉴于这一切,在创建和使用面部识别系统时,关注观察指南似乎是明智的。这里有 6 个基本原则:

  • 公平
  • 可靠性和安全性
  • 隐私和安全
  • 包容性
  • 透明度
  • 有责任

收集和处理敏感数据的道德准则已经引起了面部识别采纳者的注意。为了巩固成果,每个特定的组织都将法规视为最重要的问题,这一点至关重要。

玩公平透明的游戏

创新似乎令人毛骨悚然,除非它们能很好地向公众解释清楚。在权衡所有利弊和部署面部识别软件时,一个组织肯定会面临合理收集和使用个人数据进行面部识别的问题。坚持以下原则有助于事情朝着正确的方向发展:

  • 告知在任何公共区域使用该技术的情况。这有助于避免可能出现的尴尬讨论,讨论让访问者不知情和侵犯隐私的合法性。
  • *警惕数据集。*面部识别系统的智能取决于训练数据集的包容性。例如,全面的数据可以帮助避免种族偏见。但是完美总是遥不可及。理想情况下,最好制定一个策略,说明如何对待面部识别错误识别的人。每个组织都可以采取具体措施,确保以平衡的方式解决问题,并树立良好的形象。
  • 分享关于个人数据存储的信息。面部识别系统的工作可能会引发对敏感数据进一步使用的偏见。每个组织的另一个责任是确保数据的私有和安全存储。组织应该准备好解释处理个人数据的原因,告知任何无意的滥用,并有明确的证据表明数据的使用是完全透明和合法的。
  • 培训和提高认识。任何新技术都会带来社会利益和社会担忧。但这并不意味着逃避现实。SAS 公司的 Oliver Schabenberger 承认“即使对许多老练的用户来说,人工智能仍然是一个黑盒子。”更重要的是,他建议是时候照亮这个黑匣子了,换句话说,观察它的工作,解释使用它的利弊。如果组织中的每个人都理解使用数据进行人脸识别的原则,他们就会平静地应对偏见。这种对新技术的信念是不可或缺的。

任何技术的使用都可能是好的或坏的。人工智能正在飞速发展,以帮助人类将当今的现实变得更好。然而,无意义的技术发展可能会导致社会误解,引发伦理争论。提前思考并牢记规则——这有助于打造面部识别的辉煌未来。

喜欢这篇文章吗?在这里找到更多故事:https://indatalabs.com/blog

挖掘数据科学的力量!

伦理学,技术的新前沿

原文:https://towardsdatascience.com/ethics-the-new-frontier-of-technology-815454f0d158?source=collection_archive---------25-----------------------

内部人工智能

可信人工智能之路

我们在创造怪物吗?

随着人工智能(AI)和机器学习(ML)应用融入我们生活的越来越多的方面,越来越多的声音表达了对道德影响的担忧,算法偏见(“算法,中立的幻觉”)和黑盒模型(“ X-AI,黑盒和水晶球”)缺乏透明度和可解释性的担忧。

我们正在建造超出我们智力理解能力的系统。谁能认真地假装他们理解自动驾驶汽车使用的上亿行代码?

人工智能正在朝着更加自主和类似人类的认知活动快速发展,如自然语言处理和计算机视觉。算法需要越来越少的监督才能发挥作用。在某些情况下,他们甚至开始重写自己的代码。这些“通用算法”会进化,就像生物体自然进化一样。难怪一些学术研究实验室现在正在寻找理解算法的方法,把它们当作野生动物看待,观察它们在世界上的行为。

这是否意味着我们正在创造怪物?

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

Photo by freestocks on Unsplash

弗兰肯斯坦的生物逃离我们控制的神话,以及对机器人杀手消灭人类的恐惧,都在助长炒作。在这个话题上,不乏制造恐慌和试图吸引我们注意力的媒体文章。然而,我认为现实完全不同。正如过去的许多技术突破一样,技术进步比社会进步更快。随着意识的建立,实践将会改变,行为准则、最佳实践和安全措施将会发展,人工智能的使用将会变得更加(自我)规范。

算法没有伦理、道德、价值观或意识形态,但人有。关于人工智能伦理的问题是关于制造和使用人工智能的人的伦理问题。

承担责任

事实上,组织已经在为更加道德和负责任地使用人工智能做准备。由福布斯 Insights 在全球 300 多名 C 级高管中进行的一项由 SAS、埃森哲和英特尔最近进行的研究明确确立了可信人工智能的重要性。文化挑战,特别是缺乏信任,被认为是阻止更广泛和更快采用人工智能的主要障碍。

大多数组织似乎正在采取行动,实施治理和监督系统来监控 AI 应用程序的输出。例如,超过一半的人至少每周审查一次人工智能系统的输出。在最成功和最成熟的组织中,这个数字上升到了 74%。

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

Organizations are gearing up for more ethical and responsible use of AI

伦理问题现在是创新者、技术专家和商业领袖最关心的问题。许多公司引入了伦理委员会来审查人工智能的使用,并为其员工提供伦理培训。

一些工程师有理由担心他们正在开发的技术的可能用途。最近,来自非营利人工智能组织 OpenAI 的研究人员创建了一个文本生成系统,可以对提示做出长达一页的响应,模仿从幻想散文到虚假名人新闻故事和家庭作业的一切。OpenAI 通常向公众发布其项目。然而,在这种情况下,由于担心可能的恶意使用,它决定不公开这项技术。

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

Photo by Lianhao Qu on Unsplash

业界已经出台了许多举措和框架来解决这个问题。例如,F.A.T.E .(公平、问责、透明、可解释)社区创建了一套原则,以帮助组织在使用人工智能时引入道德规范,应对偏见的挑战,并一致地解释模型结果。像谷歌这样的大玩家已经决定公开宣传他们使用人工智能的道德原则。2018 年 5 月,谷歌首席执行官桑德尔·皮帅宣布了一系列原则,包括不在与武器或监控相关的应用中使用人工智能,并建立“对社会有益”的人工智能应用,避免产生或加强偏见,并对人们负责。为更大利益而工作的值得称赞的努力也非常适合一家在人工智能领域投入大量资金的公司的公关活动。但趋势很明显,不容忽视。

数据科学应该是一个受监管的职业吗?

今天,数据科学家通常专注于数据分析和算法的基础科学。他们喜欢尝试新的语言和新的技术,尝试新事物,并且“处于边缘”。但是让人工智能走出实验室进入现实世界需要的不仅仅是科学。数学实际上是容易的部分。其他人也需要参与进来:

  • 商业领袖必须设定愿景,并用商业术语定义期望的结果。他们还必须参与探索数据和见解的迭代过程,在此过程中细化业务目标。
  • 领域专家理解数据,能够指导数据科学家做出正确的假设,选择正确的数据集,提出正确的问题,并解释结果。
  • IT 团队必须提供一个可控的环境来管理数据科学家开发的模型。他们有责任获取模型并将它们嵌入到应用程序中以供使用。根据业务目标和技术约束,模型必须部署在需要的地方,例如,云中、数据库中、边缘或数据流中。这个过程需要工程和数据科学团队之间的紧密协作。

所有这些人都有责任确保人工智能应用程序是值得信赖和符合道德的。然而,当每个人都有责任时,也许没有人负责。我认为,数据科学家也许应该承担更广泛的责任,监督从数据到发现和部署的端到端分析生命周期。在与工程团队、领域专家和商业领袖的合作中,他们应该充当良好实践的守护者吗?

这就引出了一个问题:数据科学是否应该成为一个受监管的职业。我们是否应该建立一套职业行为准则,对数据科学家进行严格评估,并规定责任和义务?

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

Photo by MD Duran on Unsplash

如果我们考虑到当前数据科学家人才的短缺,为人工智能的道德发展和使用建立标准甚至更为关键。许多新的数据科学家正在进入市场,但缺乏处理工作道德方面的意识和经验。当然,这种短缺不会通过 40 美元的在线课程来解决,这个角色完全职业化还需要时间。

人工智能监管环境的演变

然而,也有一种观点认为,这种监护应该是一个新的 C 级角色的责任。正如欧盟在某些情况下要求设立数据保护官(DPO)一样,我不会对未来几年出现新的角色感到惊讶,或者对现有角色(如首席分析官)承担新的法律责任。这将为人工智能技术的开发和使用提供必要的监督和问责。

人工智能显然已经提上了商业领袖和政策制定者的议事日程。许多政府和私人组织已经开始发布指导方针和最佳实践,为人工智能的使用提供保障。这需要一些时间,但适当的监管将随之而来,与欧盟 GDPR 非常相似。

GDPR 已经建立了强有力的规则来保护个人数据和个人数据隐私的基本权利。有很多关于 GDPR 是否包括解释权的讨论。根据 GDPR,数据主体有权:

  • 了解自动决策;
  • 质疑自动化系统的输出;和
  • 如果决策对数据和逻辑有重大影响,则获取关于数据和逻辑的有意义的信息

这只是一个开始!更多的是在布鲁塞尔做饭…

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

Photo by Guillaume Périgois on Unsplash

欧盟委员会已经成立了欧洲人工智能高级小组,由来自学术界、民间社会和工业界的代表组成。这个多学科小组的目标是:

因此,法律框架正忙于赶上人工智能应用的创新和新实践。然而,越来越明显的是,生产值得信赖和负责任的人工智能的能力是交付道德和商业价值的必要条件。一枚硬币的两面!

更多信息,请阅读我关于这个主题的另外两篇博客:

数据科学中的 ETL 和 DI:在金融市场数据仓库中的应用

原文:https://towardsdatascience.com/etl-and-di-in-data-science-usage-in-financial-markets-data-warehouses-21df4e1ebb42?source=collection_archive---------15-----------------------

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

我开始从事量化交易的回溯测试已经有几个月了。最初,所有的焦点都集中在核心活动上:策略和应该使用哪些回溯测试引擎,但是一旦项目开始滚动,其他现实世界的小挑战就需要注意了。

系统和专业的方法回溯测试的努力不仅需要机器学习、统计分析和数据分析的花哨活动,还需要数据仓库阶段的一点简陋的脚手架和管道。

在我之前的文章 如何存储金融市场数据用于回溯测试 中,我讨论了回溯测试所使用的检索策略。使用传统的实际仓库术语,如果我们在那篇文章中讨论了数据拾取挑战,那么在本文中我们将讨论数据存放策略。

将数据供应和输入到您的数据仓库涉及数据分析业务中不太光彩但同样相关的方面:保持原始数据流动,因为没有适当质量的数据输入,任务注定会失败。

内部与外部提供商

基本上有两种方法可以遵循:

  1. 与第三方数据馈送供应商签订合同,并根据需要使用他们的 API。将会有集成成本,但是您不需要构建、提供或操作您自己的数据仓库。
  2. 将不同来源的数据储存在您自己的数据仓库中。将会有集成成本,加上与构建、维护和操作您的数据仓库相关的成本。

虽然第一个选项应确保一致和高质量的数据(前提是您选择高质量的数据馈送提供商),但它有几个局限性:

  1. 高质量的饲料很贵——大型投资公司使用的高质量饲料确实非常贵。这将限制你可以获得的资产数量,也可能限制你在其他领域或市场探索策略的创造力。数据馈送成本会危及项目预算,而项目预算可以分配给更有价值的资源和活动。
  2. 当天的第三方数据馈送通常有时间限制。虽然有理由怀疑回溯测试遥远时间的日内数据的好处(市场在发展,人们对算法交易在过去几年的影响有共识),但测试长期策略总是一个好主意。原因是,只有在你计算大量数据的情况下,才能获得关于特定日内策略在市场机制中表现的见解,因为市场机制可能会持续数年。在你的策略中不去面对或分析市场机制的影响将会带来灾难性的后果,所以你依赖的数据越多越好。
  3. 第三方数据馈送中的期货和期权合约可能不会按结算日期分割。虽然大多数策略可能希望关注一个累计的连续期货合约——这在现实世界中并不存在,但它是一个方便的回溯测试的人工制品——但你可能会对评估不同结算日期的合约的差异、趋势或成交量峰值感兴趣。在这种情况下,找到符合这一要求的第三方数据馈送供应商可能会很困难。
  4. 为分析引擎来回移动大型数据集可能会对性能产生影响,尽管当前的网络性能(尤其是在云服务中)会使这成为一个小问题。
  5. 某些第三方供应商对客户针对服务的请求数量施加限制;这种限制通常与服务的成本有关,我们已经讨论过了。

使用第三方供应商的好处显而易见。它简化并外部化了持续输入和存储大量数据的问题,提供了一个一致的 API,该 API 通常会增加额外的财务数据。一个高质量的第三方数据源还将提供股票现金资产的价格分割和股息信息,一些供应商还提供基本面数据。

相反,从长远来看,构建自己的数据仓库可能会降低成本,前提是有足够的资源来快速构建。缺点显而易见:

  1. 开发时间会更长。你将不得不处理几个数据源和延迟的时间提供者,该项目将需要定制和辅助开发,以确保你可以覆盖所有的资产和市场,你想以后分析。
  2. 您仍然需要一次性历史数据来预配置您的数据仓库。如前所述,使用长历史数据集进行计数是相关且必需的。如果你今天就开始积累数据,至少在一两年后才会有用。
  3. 你需要适当的在线硬件资源。可能是问题较少的问题,因为云平台现在是一种商品,大量的存储和计算能力可以以相当便宜的价格作为服务购买。
  4. 您需要适当的操作程序来确保监控和数据质量。虽然您可能认为一旦平台开发完成就不会有任何问题,但是零维护项目是不存在的。必须定义一个适当的操作计划——它可以很简单,但必须存在——为此,您需要身边有熟练的资源。当你决定寻求内部解决方案时,这可能是你面临的主要障碍。

主要的优势基本上是潜在的项目整体价值收益(您的项目将有肌肉和数据)和潜在的成本节约。作为数据仓库的所有者还有一个优势,那就是可以完全控制存储什么以及如何利用它,并且可以对计算密集型的回溯测试场景产生重大影响。

毫无疑问,关键因素是成本。仅仅是构建自己的数据仓库或使用外部提供商的决定并不能决定成本:总体节省或成本很大程度上取决于可用的团队和资源。

总的来说,根据我的经验,建立和维护你自己的数据仓库可以提供可观的成本节约当且仅当已经有可用的资源来建立和维护这个项目。最后,集成第三方提要并不像人们想象的那样简单,仍然需要某种临时存储库,因此构建自己的数据存储库并不困难。

相反,如果您的项目使用标准的回溯测试软件,并且您的资源缺乏处理企业级数据仓库项目的经验,那么明智的做法是不要插手。这种情况在行业中很常见,因为人们倾向于关注和专注于回测软件。购买外部数据馈送的主要优势可能是它将操作需求降至最低。

为金融市场数据构建数据仓库并不是火箭科学——金融市场中的数据模型极其简单和一致——但正如生活中任何严肃的事情一样,它肯定需要团队中有技能和经验的资源。它提出了开发、部署和操作任务,虽然性质上并不复杂,但仍需要妥善处理。

我们的生产级平台之旅

在我们的项目中,我们决定构建自己的定制解决方案。原因是:

  1. 现有入门级回溯测试工具执行标准统计分析的功能较差。
  2. 现有的回溯测试工具在定性(而非定量)或其他基于人工智能的分析中缺乏功能。
  3. 现有回溯测试工具 API 和语言的陡峭学习曲线。
  4. 处理大型日内数据集时的性能问题。

我们的项目需求很快从孤立的测试、想法和概念演变成一个旨在获得生产级解决方案的正式项目。

这种演变的原因是,当第一次回溯测试活动开始时,很明显准备数据和策略的开销比预期的要高得多。在验证结果时,我们还发现了许多导致对结果缺乏信心的操作问题。即使在纯定量领域——现有的回溯测试解决方案大放异彩——开销也非常高。

我们发现需要一个具有数据管理、数据集成、调试、数据流、作业调度、图表、报告和验证功能的适当的框架环境。这些组件并不构成实际分析和测试的一部分,但它们对生产力有着巨大的影响,如此之大,以至于它们可以单独决定任务的成败。从长远来看——定量业务无疑是一个非常漫长的旅程——这样的环境将提供巨大的回报,并能够快速测试、验证、抛弃和采用战略。

为什么数据集成(DI)和提取-转换-加载(ETL)简化了集成并提供了进一步的分析可靠性

正如上一段所讨论的,从项目的早期阶段就可以清楚地看出,需要一个明确的解决方案来解决数据管理、集成、调试、制图、报告和验证等问题。

在评估了几个备选方案(包括 Jupyter 笔记本电脑等数据科学中的经典选项)后,结论很明显:所有这些解决方案都是为起草、评估和原型制作小概念而构建的。绝不是说,它们可以用来构建任何大型项目所需的协作、开发和生产环境。

在对所需的主要组件进行快速评估和起草后,我们发现一个好的解决方案是利用现有的数据集成平台(它基本上进一步扩展了 ETL —提取转换加载—概念)来处理所有基本任务,并提供一个成熟的流程、作业、转换、调试和报告环境。

虽然数据集成不参与实际的回溯测试分析,但它将简化构建解决方案所需的不同流程和工作的编排;在我们的项目中,它已经被证明是一个非常有效和有用的伙伴。

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

Flow excerpt to provision EUREX Futures intraday data: the visual approach mixed with lightweight custom Java code lead to full implementation of the data provisioning project leg in just two weeks. Easy to maintain, monitor and self-documented.

数据集成(DI)平台(有几种,包括商业的和开源的)将提供成熟的、企业级的和可扩展的框架来处理数据处理需求。这种基本级别的集成和操作在任何涉及长期处理多个数据源的项目中都是一个不变的需求,金融市场也不例外。

与流行的观点相反,数据集成平台的主要好处与避免或最小化定制编码无关;它们涉及有效地自我记录流程,并在开发和生产环境中为流程和作业框架提供适当的调试、调度、监控和报告工具。这些要点是真正的关键优势。

在我们的案例中,我们决定使用 Hitachi Vantara 作为我们的数据集成解决方案,它可以通过使用 Java 自定义类轻松扩展,学习曲线也非常容易。我并不是在推销这个解决方案,而是利用其中一个,结果可能与其他解决方案一样好。我们发现 Hitachi Vantara 在资源方面有点庞大,但它具有良好的性能和与 Java 的出色集成——这一点与我们的情况相关,因为我们团队的 Java 技能很强,并且部分 AI 分析正在用 Java 进行原型开发。

采用该解决方案后,我们设法在两周左右的时间内解决了所有主要的数据供应问题,包括学习曲线和平台安装。我们发现它是一个非常有用的工具,对于开发和生产环境都是如此,并且它代表了加速项目的巨大支持。

摘要

量化交易需要大数据集来测试、训练和评估。它既与长期历史记录相关,也与评估不同市场机制的策略相关,还能不断向我们的存储库提供新数据。这就需要一个数据仓库或一个外部数据源来按需提供数据。

我们可以为想要评估的资产和市场购买订阅服务。这将提供一种更容易的方法来检索数据,但如果市场数量很大,并且我们利用高质量的数据,这可能会很昂贵。如果您的项目缺乏企业级数据集成项目的实践经验,这可能是明智的选择。

构建您自己的存储库并不复杂,如果您的项目按时使用正确的资源,这可能是一个好主意。在这种情况下,内部数据仓库只需付出非常有限的努力,就可以实现显著的节约。在朝着这个方向发展的情况下,利用数据集成平台被证明是有帮助的,可以简化开发和生产环境,并增加我们的数据分析和流程的可信度。

欧洲电视网、蒙特卡洛分析和战术投票的检测

原文:https://towardsdatascience.com/eurovision-monte-carlo-analysis-and-the-detection-of-tactical-voting-8d5fe04acb99?source=collection_archive---------19-----------------------

这些年来,欧洲电视网如何变得更具战术性,但也更平衡。

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

欧洲电视网颂歌

对于那些不知道的人,我敢打赌,欧洲电视网歌曲大赛是一年一度的音乐比赛,在这场比赛中,一个(松散的)联盟团体(主要是)欧洲国家在电视直播中相互合作,为对方推荐一首获胜的歌曲。在 X 因素的风格,竞争是由选民电话决定的。

每个国家都给他们的前 10 个选择打分,分值范围从[1,2,3,4,5,6,7,8,10,12]。非零分值只能给一次(例如,法国只能给一个国家打 12 分)。

很长一段时间以来,欧洲电视网一直是我罪恶的快乐。我作为第三种文化的孩子在非洲、欧洲和亚洲长大。欧洲电视网对流行文化的奇异融合,其接受和开放的自由氛围,结合其对竞争、地缘政治和阴谋耳语的脚踏实地的帮助,一直对我有吸引力。除了纯粹的娱乐价值,我一直认为它是大多数多边主义尝试的一个相当有代表性的模拟:有价值,混乱,不可避免的战略。

不仅如此,数据科学的时机已经成熟。事实证明我不是唯一这么想的人。预测比赛结果是卡格尔组织的第一次比赛。更幸运的是,Data World 的优秀人员维护了竞赛历史上所有国家发出和收到的投票的最新数据

研究问题:战略投票变得“更糟”了吗?

让多边类比再持续一会儿,直到我让它死去,欧洲电视网并不是没有派系和诽谤者。近年来,越来越多的人(主要来自西欧国家)抱怨说,竞争现在基本上是一场战略投票集团(主要包括西欧和东欧)的游戏,其中东欧大量的后苏联小国意味着,很久以前的传统赢家(见爱尔兰,自 20 世纪 70 年代开始以来,仍然是“最多胜利”的纪录保持者)几乎没有获胜的机会。这种争论甚至导致了 2006 年对分数分配方法的审查,该审查引入了一个比大众投票更“客观”的评委小组来代表 50%的分数授予标准。

出现的问题是:

1。)欧洲电视网有策略投票吗?

2。)这些年来,战略投票的数量增加了吗?

Git hub 代码库可以在这里找到:【https://github.com/InternetGareth/EuroVision

探索数据

在深入研究之前,最好先看看数据的结构。首先,看起来数据不仅包括决赛的投票,还包括多轮比赛(四分之一决赛、半决赛等)的投票。这一点值得后面分析的时候记住。

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

Imported DataFrame

需要记住的第二个问题是,对于所有年份,但特别是如果分析仅限于最终结果,国家的数量和值将会逐年变化。

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

The total countries in the final changes each year

最后,只是为了确认一下,数据捕捉到了比赛的任意点数方案:{0,1–8,10,12 }

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

网络分析

我采用的第一种方法是将所有数据导入 Python 中的 Networkx 包,并应用一些基本的社区检测。投票的数据框架可以表示为一个网络,其中节点是竞争中的国家,边是国家之间给予和接受的投票。给定这些参数,我们可以认为这个网络是双向和加权的。

社区检测

一旦数据是这种格式,我决定尝试一些社区检测,看看是否确实有一些基于地理的投票块。在这个例子中,我使用了 Louvain 模块性作为我的检测算法。本质上,该算法试图根据最大化“社区”内的边与“社区”外的边的密度比的标准来优化社区及其成员的数量。

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

Modularity: Objective function to maximize in Louvain community detection Source: https://en.wikipedia.org/wiki/Louvain_Modularity

以下是过去 5 年投票(2013–2018)中所有比赛阶段(半决赛、决赛等)的分析结果:

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

Community detection for 2013–2018, all competition stages

看起来有一些关于东方和西方正在进行投票的看法是真实的。两个最大的社区是:

  • *绿色:*主要是西欧/北欧国家。
  • *蓝色:*主要是巴尔干/东欧国家。

使用 Jaccard 指数检测社区变化

因此,我们有一些证据表明,在过去几年里,各国确实倾向于整体投票。我的下一步是试图想出一种方法来跟踪这些块是否随时间而改变。我选择使用一个 Jaccard 指数来比较社区如何随着时间的推移保持一致性。Jaccard 指数是一个非常简单的指标:它是两个集合的交集:(A∩B)/A∪B。对于像国家列表这样直接的东西,它让我很好地了解了这些社区随着时间的推移有多相似。具体来说,我编写了一个算法:

  1. 每年检测到的社区(基于当年和前 3 年所有国家之间的投票总数)
  2. 对于每个社区,将其与去年的“最佳”匹配进行比较(比较时 Jaccard 最高的社区)
  3. 对于所有匹配,计算当年的平均加权 Jaccard 分数

然后,该值将告诉我投票群体/社区随时间保持一致的程度,以及是否有投票行为发生巨大变化的年份。结果如下。请注意,因为 Lauvain 算法通过查找局部解来优化速度,所以每次运行它都会产生稍微不同的结果。为了解决这一问题,每年重复检测 50 次,并给出每个加权平均 Jaccard 指数的 95%置信区间:

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

Weighted average Jaccard Index between detected voting communities (current year compared to previous year)

这告诉我们,在 2004-2006 年间,发生了一些事情,从根本上“动摇”了参与竞争的投票群体。事实证明,对此有一个很好的解释;2004 年以前,只有进入决赛的国家才能投票选出冠军。2004 年后,改变了这种做法,允许那些没有进入决赛的国家仍然可以投票。因此,我们似乎是解释战略投票的一部分:通过向退出的国家开放竞争投票,投票“社区”自 2004 年以来发生了显著变化。

使用蒙特卡罗分析深入研究策略投票

我现在知道有不同的选民群体,他们在 2004 年经历了一次重新洗牌。然而,为了让投票真正具有“战略性”,人们会期望它是对等的:即各国一直相互投票。幸运的是, Derek Gatherer (2004) 有一篇很棒的论文,描述了一种基于蒙特卡罗方法的检测策略投票的方法。该方法采取以下步骤:

  1. 选择一个时间段(例如 5 年)

**2。对于每一年,计算一个国家给另一个国家的所有可能点的无偏概率密度函数。**这相对容易:所有非零点数类别都有 1 / (N-1)次机会,其中 N 是投票国家的数量。零点类别将有(N-10)/N 次机会。其中 10 是非零点类别的数量。

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

Example probability distribution for votes given in year 2000

3。对这些年的投票进行蒙特卡洛模拟,计算一个国家在该时间段内给予一个国家的总票数的概率分布。同样,这只是一个从每年的分布中随机抽样和合并总点数的问题。以下是 2000 年至 2005 年期间 2000 次运行模拟的示例。正如我们所料,这是严重倾斜到零,因为大多数国家不会使削减赢得积分。平均而言,在 2000 年至 2005 年期间,你可以期望从任何其他国家收到总共约 2.3 张选票。

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

Frequency distribution of total votes given by a country to another county: Mont Carlo Simulation for years 2000 to 2005

**4。与实际投票模式进行比较:**如果实际投票数在分布的 5%范围内,则投票被视为“偏袒”。如果对方国家投桃报李,投票被认为是“战略性的”。

结果

使用上述方法,我能够发现国家之间的战略投票,以及它们多年来的变化。下图显示了(I)标准化交易率(战略关系),定义为(交易总数/可能的交易总数)和(I)战略关系国家的百分比。

本质上,这是对同一趋势的两种度量,但是将它们分开考虑是有用的。

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

% Countries in deals , and the rate of deal making

更仔细地观察其自身轴上的交易达成率,我们可以更清楚地看到,随着时间的推移,交易达成率大幅增加(测量的趋势与交易中国家的百分比非常相似):

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

因此,我们现在知道,这些年来,不仅投票群体发生了显著变化,而且互惠投票(即策略投票)似乎也在增加。那么,西方各州的抱怨是正确的吗?嗯…是也不是…

映射投票社区

那么这些战略联盟是谁呢?有必要绘制一些样本,让我们了解谁在与谁合作。以下是使用蒙特卡罗方法发现的战略联盟,以 5 年为增量:

1995 年至 2000 年

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

Cyprus and Greece have each other’s back in the late 1990s

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

As do the infamous Scandinavian / Northern voting block

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

The beginnings of the eastern voting block emerge

2000 年至 2005 年

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

The Balkans get strategic: an opening up of voter eligibility increases volume of strategic alliances, where regional solidarity encourages the growth of a new voting block in Eastern Europe.

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

And some countries forget to join the party….

2005 年至 2010 年

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

The web of alliances gets more complex as the years go by, but is still defined by centers in Scandinavia, Eastern Europe, and the Balkans

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

And the U.K. wonders why it never wins any more…

结论

2004 年投票规则的变化对竞争产生了重大影响:竞争变得更具战略性,但这可能更多地是由于 2004 年投票规则的修订,该修订将更多的地区团结带入了投票中(而不是东方国家的任何阴谋活动!).

**战略性投票增加:**这些年来,战略性投票一直在增加,在 2004 年修订规则之前,这种趋势一直呈上升趋势。它似乎也没有受到引入“客观”评判小组的影响。

**然而,这更多的是其他国家在西方玩自己的游戏:**值得注意的是,抱怨这一点的国家(大多是年龄较大的西欧选手)发明了战略投票的游戏:特别是斯堪的纳维亚投票区,还有英国-马耳他-爱尔兰的联系。

我将留给你们关于欧洲电视网的许多教训的最后一个想法,这在目前看来是恰当的。值得记住的是,人们通常会认为一些国家相对实力的下降并不是绝对的实力“下降”,而是世界其他国家崛起的成功故事。

规避机器学习恶意软件分类器

原文:https://towardsdatascience.com/evading-machine-learning-malware-classifiers-ce52dabdb713?source=collection_archive---------8-----------------------

为了乐趣和利益!

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

介绍

在这篇文章中,我将详细介绍我在今年 DEFCON AI Village 上宣布的机器学习静态规避比赛中获胜时使用的技术。比赛的目标是获得 50 个恶意的 Windows 可移植可执行(PE)文件,以逃避三个机器学习恶意软件分类器的检测。这些文件不仅需要躲避检测,而且还必须保持它们原来的功能和行为。

本次比赛由残局MRG-艾菲塔斯VM-Ray 赞助。比赛非常有趣,获胜后会有一份令人敬畏的奖品

了解你的敌人

这是一场白盒竞赛;这意味着我可以完全访问所有的模型参数和源代码。因此,首先要做的是打开模型,看看引擎盖下发生了什么。

马尔康夫

第一个模型是在 Windows 可执行文件的原始字节上训练的神经网络。MalConv 是在 PyTorch 中实现的,如果您已经熟悉神经网络,那么代码相对简单明了:

文件作为表示文件字节的整数序列(0–255)传递给 MalConv。MalConv 内部的嵌入层将每个字节映射到一个数字向量。向量序列然后可以由附加的神经网络层处理。该模型输出两个数字,表示输入为良性和恶意的概率。

已经有大量关于躲避 MalConv 的文献了。最简单的攻击是在可执行文件的末尾添加一些好看的东西。这是一个特别好的技巧,因为当恶意软件执行时,添加的数据(也称为覆盖)不会加载到内存中。因此,我们可以在不改变文件功能的情况下,在覆盖层中放置任何我们想要的东西。MalConv 寻找良性和恶意字节模式,以便做出决定。覆盖攻击的目的是用与良性文件相关的模式将其淹没。

非负 MalConv

第二个模型实际上与第一个模型相同,但赋予各层的权重不同。顾名思义,非负 MalConv 在训练期间被约束为具有非负权重矩阵。这样做的目的是防止像 MalConv 那样的小攻击。当操作得当时,非负权重使得二元分类器单调;这意味着添加新内容只会增加恶意得分。这将使规避模型变得非常困难,因为大多数规避攻击都需要向文件中添加内容。对我来说幸运的是,非负 MalConv 的这个实现有一个微妙但关键的缺陷。

非负防御仅对具有代表样本恶意性的单一输出分数的二元分类器有效。这个版本将输出分成两个分数:一个是恶意的,一个是良性的。然后,softmax 函数将分数转换为每个类别的概率。这种结构使得非负权重的训练毫无意义。附加内容仍然可以将良性分数任意推高。随着良性分数升高,softmax 功能会降低恶意分数,即使存在相同数量的恶意内容。所以所有针对 MalConv 的攻击在这里也会起作用。

如果你对更多的数学细节感兴趣,看看这篇论文的附录 A。作者证明了具有非负权重的 softmax 网络就其可以学习的内容而言本质上等价于无约束网络。这就是为什么一个适当的防御必须使用单一输出;我们不希望网络学会寻找良性内容。

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

Excerpt from paper: http://ci.louisville.edu/zurada/publications/chor-zur-tnnls.pdf

余烬

Ember 实际上是一个由 Endgame 维护的数据集。随着数据集而来的是一个经过训练的基准模型(我也称之为 Ember)。Ember 是一个 lightgbm 模型(一组增强的决策树),根据从 Windows PE 文件解析的几个特征进行训练。

Ember 特性解析的源代码位于这里。查看所有特征是如何被解析的对于精心设计攻击非常有用。提取的特征包括:

  • 字节直方图
  • 字节熵
  • 截面信息(名称、大小、熵、属性)
  • 导入表库和条目
  • 导出的函数
  • 一般文件信息(各种东西的大小和数量)
  • 标题信息(机器、架构、链接器、版本等。)
  • 字符串(关于文件中字符串的各种统计信息)
  • 数据目录(名称、大小、虚拟地址)

数字特征按原样使用,而散列技巧用于将其余特征(如部分名称)转换成数字向量。乍一看,Ember 看起来更难糊弄。许多功能与文件的结构或我们无法改变的特征有关。记住,我们必须在保持原有功能的同时躲避检测!

Ember 的漏洞在于,一些功能可以被攻击者任意控制。lightgbm 模型在整个树集合的多个位置使用这些特征。我们可以通过操纵特征来利用模型的复杂性,以便沿着导致规避的路径推动决策。

准备

竞赛代码附带了一个脚本,用于针对一个文件运行所有三个模型。我修改了脚本来评估恶意软件的整个目录,并使用牛郎星来添加一个有趣的视觉记分牌:

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

Initial scan of original malware files.

头骨表情符号代表一个模型检测到了恶意软件,而快乐的脸代表一种逃避。有趣的是,49 号文件已经避开了 MalConv,所以我们可以免费得到 1 分!

规划

在花了几分钟弄清楚如何用表情符号进行策划后,我决定是时候考虑如何应对这场比赛了。棘手的部分是找到同时影响所有三个模型的有效操作,或者至少影响一个模型,但不会对其他模型发出危险信号。我决定将重点放在有希望同时影响所有三个模型的攻击上。

覆盖层

如上所述,PE 文件可以附加任意内容。这些额外的字节被称为覆盖,当 Windows 执行文件时,它们不会被加载到内存中。因此,在这里添加字节不会改变恶意软件的功能。

松弛空间

除了覆盖之外,在每个部分的末尾还有空间来添加额外的字节。PE 部分需要与内存量的 2 次方对齐。当实际内容没有填满整个空间时,该部分被填充。可执行文件不会访问这部分内存,所以我们也可以自由地改变这个空间。

新章节

除了向现有部分添加字节,我们还可以创建新的部分。新的部分不会破坏文件的功能,因为在现有的代码中没有对它们的引用。这给了我们足够的空间来添加任何我们想要的内容。

聚焦功能

因为 MalConv 模型将所有东西都视为字节(没有结构上下文),所以对他们来说,我们只需关注用他们认为是良性文件的模式来压倒他们的决定。然而,余烬的特征结构要求我们实际考虑可能阻碍它的细节。

我们可以操作的最明显的特征是字节直方图和字节熵。字节直方图只是计算文件中每个字节值的归一化频率。因为我们可以添加包含任何内容的部分,所以将字节分布强制为我们想要的任何目标分布是微不足道的。

我们也有体面的控制部分信息功能。我们可以通过使用松弛空间来改变截面的熵。我们也可以改变部分的名称,这可以把我们带到 Ember 决策树的不同分支。

最后,字符串特性也非常容易被操纵。同样,因为我们可以添加包含任何内容的新部分,所以我们可以根据自己的需要调整字符串统计。

亲爱的

以上所有修改都可以使用 Ember 用来解析特性的同一个库来完成: lief 。LIEF 项目非常棒,我绝对推荐你去看看。我用它来解析恶意软件,进行修改,并重建 PE 文件;挺神奇的!

这里有一个简短的演示,展示了修改 PEs 是多么容易:

一般的工作流程是:解析 PE,进行任何修改,构建新的 PE,保存到磁盘。

验证虚拟机

我还安装了 Windows 虚拟机来进行逆向工程。重要的是观察被改变的文件,以确保它们的行为与原始恶意软件相同。每当我需要一个废弃的 Windows 虚拟机,我就从这里拿一个。

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

Watching the Procmon output of an altered file being executed.

攻击时间

我的计划是从简单开始,然后根据需要增加复杂性。新的部分似乎是最有希望的攻击途径,因为它为我们提供了对 Ember 的功能以及文件的原始字节进行重大更改的能力。我编写了下面的函数,以便添加一个节并用一个常数值填充它:

我在每个部分添加之后都重新构建了 PE,这样 lief 就可以为我处理所有的寻址。也可以手动分配地址。

作为一个实验,我在每个文件中添加了一个包含 100,000 个常量字节的新部分,并在迭代常量(0–255)时监控了规避率。几个不同的值都成功了,但是值 169 (0xA9)引起了最多的逃避:

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

Evasion success from adding a section filled with 100,000 0xA9’s to each file.

这个简单的攻击摧毁了两个神经网络模型。如果我们没有发现非负模型中的错误,这个结果应该会提醒我们。单调分类器不应该受这个简单加法的影响。

恩伯勇敢地面对这种幼稚的攻击。我必须想出一个更聪明的方法来改变它的分数。

融入其中

接下来,我去了微软的下载页面,抓取了一份随机的良性可执行文件(下载链接)。我运行了该文件的模型,以确认其得分非常低。我的计划是模仿这个文件中已知的好的特征,希望引起对 Ember 的回避。

我在文件上运行了命令行实用程序字符串。该实用程序从二进制文件中解析出所有可打印的字符串。我发现一大块字符串似乎包含微软的最终用户许可协议(EULA)。我抓取了这一部分,并将其保存到一个文本文件中。

显然,一些最常见的 Windows PE 文件碰巧是由微软制作的。因此,当训练恶意软件分类器时,训练集很可能有一堆标记为良性的 Microsoft 文件。我的想法是利用这种可能性,从我下载的文件中添加一些东西到我们的恶意软件中。像微软 EULA 这样的东西可能会出现在许多良性文件中。这应该使字符串统计、字节分布和熵更像一般的良性文件。

我编写了下面的函数,从保存的文件中读入字符串,并将它们放在我们的恶意 PEs 的一个新部分中:

我利用这次攻击向每个文件添加了 75 个新的部分(竞争对手有一个文件大小的限制,我必须遵守这个限制)。我还加入了之前的攻击来维持我们在 MalConv 的逃避。新的结果很有希望:

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

Evasion results from combined “String Attack” and “Constant Attack”.

最后润色

我只剩下几个文件可以逃避了。经过进一步分析,这些文件中有几个被打包了。我的操作打乱了他们的拆包程序,因此破坏了功能。

更糟糕的是,至少有一个文件似乎有代码来检测它是否被篡改过:

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

This file has code to check itself for tampering…

我的第一个想法是在调试器中打开文件,修补汇编指令,检查篡改。不幸的是,该文件也有反调试代码,基本的反调试程序无法绕过。

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

The file also has anti-debug mechanisms.

我感觉自己很快就要掉进一个危险的兔子洞,所以我后退一步,仔细考虑了一下。

幸运的是,防篡改机制只检查 PE 中加载到内存中的部分。因此,虽然我不能添加新的部分,我应该仍然能够操纵覆盖!

我已经看到我的字符串攻击没有强大到足以在这些文件上欺骗 ember。我需要一种不同的方法来找出什么内容应该添加到覆盖图,以引起规避。我求助于我的简单的第一个座右铭,并编写了以下代码来系统地尝试每个字节值的条带,如果它们降低了 Ember 的分数,就将它们添加到文件中。这以贪婪的方式继续下去,直到文件被回避或者变得太大。

我用 Ember 替换了另外两个模型,并使用相同的方法添加所需的字节来避开这些模型。同样,因为我向覆盖图中添加了字节,所以打包、功能或防篡改检查都没有受到影响!我回去对所有文件进行了攻击,发现它能够普遍导致规避。

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

Perfect Score!

结论

通过相对简单的修改,所有 50 个文件都躲过了恶意软件分类器的检测。幸运的是,所有的模型都有可以被利用的漏洞。如果非负 MalConv 模型被正确地实现,一个完美的分数甚至是不可能的。

读者可能已经熟悉了最近的发现一个简单的方法来规避一个众所周知的基于机器学习的反病毒产品。虽然没有一个竞争分类器是生产系统,但这些结果应该作为对基于机器学习的恶意软件检测器的设计者的警告。很难找到一组能够区分良性和恶意文件,同时在敌对威胁模式下相对安全的功能。正如这里看到的,小细节真的很重要!

再次感谢残局MRG-艾菲塔斯VM-Ray 带来了一场有趣且相当愉快的比赛。希望我们看到更多的 InfoSec 公司进入这一审查级别,并参与更广泛的机器学习/安全社区。

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

评估主题模型:潜在狄利克雷分配(LDA)

原文:https://towardsdatascience.com/evaluate-topic-model-in-python-latent-dirichlet-allocation-lda-7d57484bb5d0?source=collection_archive---------0-----------------------

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

深度剖析

构建可解释主题模型的分步指南

**前言:**本文旨在提供潜在主题的综合信息,不应被视为原创作品。这些信息和代码通过一些在线文章、研究论文、书籍和开源代码被重新利用

在之前的文章中,我介绍了主题建模的概念,并通过使用 Gensim 实现,在 python 中使用潜在的 Dirichlet 分配(LDA)方法来开发您的第一个主题模型。

基于这种理解,在本文中,我们将更进一步,概述通过主题一致性度量来定量评估主题模型的框架,并使用 Gensim 实现来共享 python 中的代码模板,以实现端到端的模型开发。

为什么要评估主题模型?

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

https://tinyurl.com/y3xznjwq

我们知道,概率主题模型,如 LDA,是文本分析的流行工具,提供了语料库的预测和潜在主题表示。然而,有一个长期的假设,即这些模型发现的潜在空间通常是有意义和有用的,并且由于其无监督的训练过程,评估这些假设是具有挑战性的。此外,有一个没有黄金标准的主题列表来与每个语料库进行比较。

然而,同样重要的是确定一个经过训练的模型客观上是好是坏,以及有能力比较不同的模型/方法。要做到这一点,就需要一个客观的质量衡量标准。传统上,并且仍然对于许多实际应用来说,为了评估是否已经学习了关于语料库的“正确的东西”,使用隐含知识和“目测”方法。理想情况下,我们希望在一个可以最大化和比较的单一指标中捕获这些信息。

让我们大致了解一下评估中常用的方法:

眼球模型

  • 前 N 个单词
  • 主题/文档

内在评估指标

  • 捕获模型语义
  • 主题可解释性

人类的判断

  • 什么是主题

外部评估指标/任务评估

  • 模型擅长执行预定义的任务吗,比如分类

自然语言是杂乱的,模糊的,充满了主观的解释,有时试图清除模糊会使语言变成一种不自然的形式。在本文中,我们将探讨更多关于主题一致性的内容,主题一致性是一种内在的评估标准,以及如何使用它来定量地证明模型选择的合理性。

什么是话题连贯?

在理解话题连贯性之前,我们先来简单看一下困惑度。困惑度也是一种内在的评估度量,广泛用于语言模型评估。它捕捉了一个模型对它以前没有见过的新数据有多惊讶,并作为一个拒不接受的测试集的归一化对数似然性来衡量。

专注于对数似然部分,您可以将困惑度量视为测量一些新的看不见的数据给定之前学习的模型的可能性。也就是说,模型在多大程度上代表或再现了保留数据的统计数据。

然而,最近的研究表明,预测可能性(或等价地,困惑)和人类的判断往往不相关,甚至有时略有反相关。

针对困惑进行优化可能不会产生人类可解释的主题

这种困惑测量的限制成为更多工作的动机,试图模拟人类的判断,从而主题连贯性。

主题连贯性的概念将许多测量方法结合到一个框架中,以评估由模型推断的主题之间的连贯性。但在此之前…

什么是话题连贯?

主题连贯性测量通过测量主题中高得分单词之间的语义相似度来对单个主题评分。这些度量有助于区分语义上可解释的主题和统计推断的工件。但是…

什么是连贯?

如果一组陈述或事实相互支持,就说它们是连贯的。因此,一个连贯的事实集可以在涵盖所有或大部分事实的上下文中进行解释。连贯事实集的一个例子是“这项运动是一项团队运动”,“这项运动是用球进行的”,“这项运动需要巨大的体力”

一致性度量

让我们快速看一下不同的一致性度量,以及它们是如何计算的:

  1. C_uci 测度是基于滑动窗口和给定顶词的所有词对的逐点互信息(PMI)
  2. C_umass 基于文档同现计数、一前分割和对数条件概率作为确认度量
  3. C_npmi 是使用归一化逐点互信息(npmi)的 C_uci 一致性的增强版本
  4. C_a 基于上下文窗口、顶部单词的成对比较以及使用归一化逐点互信息(NPMI)和余弦相似度的间接确认测量

当然,主题模型评估的概念和连贯性测量还有很多。但是,请记住本文的长度和目的,让我们将这些概念应用到开发一个至少比使用默认参数更好的模型中。此外,我们将重新利用已经可用的在线代码来支持这一练习,而不是重新发明轮子。

模型实现

完整的代码可以从 GitHub 上的 Jupyter 笔记本中获得

  1. 加载数据
  2. 数据清理
  3. 短语建模:二元语法和三元语法
  4. 数据转换:语料库和词典
  5. 基础模型
  6. 超参数调谐
  7. 最终模型
  8. 可视化结果

加载数据

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

对于本教程,我们将使用 NIPS 会议上发表的论文数据集。NIPS 会议(神经信息处理系统)是机器学习社区最负盛名的年度活动之一。CSV 数据文件包含从 1987 年到 2016 年(29 年!).这些论文讨论了机器学习中的各种主题,从神经网络到优化方法,等等。

让我们从查看文件的内容开始

**import zipfile
import pandas as pd
import os

# Open the zip file
with zipfile.ZipFile("./data/NIPS Papers.zip", "r") as zip_ref:
    # Extract the file to a temporary directory
    zip_ref.extractall("temp")

# Read the CSV file into a pandas DataFrame
papers = pd.read_csv("temp/NIPS Papers/papers.csv")

# Print head
papers.head()**

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

数据清理

因为这个分析的目标是执行主题建模,所以我们将只关注每篇论文的文本数据,而忽略其他元数据列

**# Remove the columns
papers = papers.drop(columns=['id', 'title', 'abstract', 
                              'event_type', 'pdf_name', 'year'], axis=1)

# sample only 100 papers
papers = papers.sample(100)

# Print out the first rows of papers
papers.head()**

移除标点符号/小写字母

接下来,让我们对 paper_text 列的内容进行简单的预处理,使它们更易于分析,并得到可靠的结果。为此,我们将使用正则表达式删除所有标点,然后将文本小写

**# Load the regular expression library
import re

# Remove punctuation
papers['paper_text_processed'] = papers['paper_text'].map(lambda x: re.sub('[,\.!?]', '', x))

# Convert the titles to lowercase
papers['paper_text_processed'] = papers['paper_text_processed'].map(lambda x: x.lower())

# Print out the first rows of papers
papers['paper_text_processed'].head()**

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

分词并进一步清理文字

让我们把每个句子标记成一个单词列表,去掉标点符号和不必要的字符。

**import gensim
from gensim.utils import simple_preprocess

def sent_to_words(sentences):
    for sentence in sentences:
        yield(gensim.utils.simple_preprocess(str(sentence), deacc=True))  # deacc=True removes punctuations

data = papers.paper_text_processed.values.tolist()
data_words = list(sent_to_words(data))

print(data_words[:1][0][:30])**

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

短语建模:二元和三元模型

二元模型是在文档中频繁出现的两个词。三元模型是三个经常出现的词。我们例子中的一些例子有:“back_bumper”、“oil_leakage”、“maryland_college_park”等。

Gensim 的短语模型可以构建和实现二元模型、三元模型、四元模型等。短语的两个重要参数是最小计数和阈值。

这些参数的值越高,单词就越难组合。

**# Build the bigram and trigram models
bigram = gensim.models.Phrases(data_words, min_count=5, threshold=100) # higher threshold fewer phrases.
trigram = gensim.models.Phrases(bigram[data_words], threshold=100)  

# Faster way to get a sentence clubbed as a trigram/bigram
bigram_mod = gensim.models.phrases.Phraser(bigram)
trigram_mod = gensim.models.phrases.Phraser(trigram)**

移除停用词,制作二元模型,并使其词条化

模型准备好了。让我们定义函数来删除停用词,制作三元模型和词汇化,并按顺序调用它们。

**# NLTK Stop words
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords

stop_words = stopwords.words('english')
stop_words.extend(['from', 'subject', 're', 'edu', 'use'])

# Define functions for stopwords, bigrams, trigrams and lemmatization
def remove_stopwords(texts):
    return [[word for word in simple_preprocess(str(doc)) if word not in stop_words] for doc in texts]

def make_bigrams(texts):
    return [bigram_mod[doc] for doc in texts]

def make_trigrams(texts):
    return [trigram_mod[bigram_mod[doc]] for doc in texts]

def lemmatization(texts, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV']):
    """https://spacy.io/api/annotation"""
    texts_out = []
    for sent in texts:
        doc = nlp(" ".join(sent)) 
        texts_out.append([token.lemma_ for token in doc if token.pos_ in allowed_postags])
    return texts_out**

让我们按顺序调用函数。

**!python -m spacy download en_core_web_sm
import spacy

# Remove Stop Words
data_words_nostops = remove_stopwords(data_words)

# Form Bigrams
data_words_bigrams = make_bigrams(data_words_nostops)

# Initialize spacy 'en' model, keeping only tagger component (for efficiency)
nlp = spacy.load("en_core_web_sm", disable=['parser', 'ner'])

# Do lemmatization keeping only noun, adj, vb, adv
data_lemmatized = lemmatization(data_words_bigrams, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV'])

print(data_lemmatized[:1][0][:30])**

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

数据转换:语料库和词典

LDA 主题模型的两个主要输入是词典(id2word)和语料库。让我们创造它们。

**import gensim.corpora as corpora

# Create Dictionary
id2word = corpora.Dictionary(data_lemmatized)

# Create Corpus
texts = data_lemmatized

# Term Document Frequency
corpus = [id2word.doc2bow(text) for text in texts]

# View
print(corpus[:1][0][:30])**

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

Gensim 为文档中的每个单词创建一个唯一的 id。上面显示的产生的语料库是(word_id,word_frequency)的映射。

例如,上面的(0,7)意味着,单词 id 0 在第一个文档中出现了七次。同样,单词 id 1 出现三次,依此类推

基础模型

我们拥有训练基本 LDA 模型所需的一切。除了语料库和词典,您还需要提供主题的数量。除此之外,alpha 和 eta 是影响主题稀疏性的超参数。根据 Gensim 文档,两者都默认为 1.0/num_topics prior(我们将对基本模型使用默认值)。

chunksize 控制在训练算法中一次处理多少个文档。增加块大小将会加快训练速度,至少只要文档块容易放入内存。

通道控制我们在整个语料库上训练模型的频率(设置为 10)。通行证的另一个词可能是“时代”。迭代在某种程度上是技术性的,但本质上它控制了我们对每个文档重复特定循环的频率。将“遍数”和“迭代数”设置得足够高很重要。

**# Build LDA model
lda_model = gensim.models.LdaMulticore(corpus=corpus,
                                       id2word=id2word,
                                       num_topics=10, 
                                       random_state=100,
                                       chunksize=100,
                                       passes=10,
                                       per_word_topics=True)**

查看 LDA 模型中的主题

上面的 LDA 模型是用 10 个不同的主题构建的,其中每个主题是关键字的组合,并且每个关键字对主题有一定的权重。

您可以使用LDA _ model . print _ topics()*查看每个主题的关键字以及每个关键字的权重(重要性)*

**from pprint import pprint

# Print the Keyword in the 10 topics
pprint(lda_model.print_topics())
doc_lda = lda_model[corpus]**

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

计算模型复杂度和一致性分数

让我们计算基线一致性分数

**from gensim.models import CoherenceModel

# Compute Coherence Score
coherence_model_lda = CoherenceModel(model=lda_model, texts=data_lemmatized, dictionary=id2word, coherence='c_v')
coherence_lda = coherence_model_lda.get_coherence()
print('Coherence Score: ', coherence_lda)**

连贯性得分:0.301

超参数调谐

首先,让我们区分模型超参数和模型参数:

模型超参数可视为机器学习算法的设置,由数据科学家在训练前进行调整。例如随机森林中的树的数量,或者在我们的例子中,主题的数量 K

模型参数可以被认为是模型在训练期间学习的内容,例如给定主题中每个单词的权重

现在我们已经有了默认 LDA 模型的基线一致性分数,让我们执行一系列敏感性测试来帮助确定以下模型超参数:

  1. 主题数量(K)
  2. 狄利克雷超参数α:文档主题密度
  3. 狄利克雷超参数β:词主题密度

我们将按顺序执行这些测试,通过保持其他参数不变,一次执行一个参数,并在两个不同的验证语料库集上运行它们。我们将使用 C_v 作为我们选择的性能比较指标

**# supporting function
def compute_coherence_values(corpus, dictionary, k, a, b):

    lda_model = gensim.models.LdaMulticore(corpus=corpus,
                                           id2word=dictionary,
                                           num_topics=k, 
                                           random_state=100,
                                           chunksize=100,
                                           passes=10,
                                           alpha=a,
                                           eta=b)

    coherence_model_lda = CoherenceModel(model=lda_model, texts=data_lemmatized, dictionary=id2word, coherence='c_v')

    return coherence_model_lda.get_coherence()**

让我们调用这个函数,并在主题、alpha 和 beta 参数值的范围内迭代它

**import numpy as np
import tqdm

grid = {}
grid['Validation_Set'] = {}

# Topics range
min_topics = 2
max_topics = 11
step_size = 1
topics_range = range(min_topics, max_topics, step_size)

# Alpha parameter
alpha = list(np.arange(0.01, 1, 0.3))
alpha.append('symmetric')
alpha.append('asymmetric')

# Beta parameter
beta = list(np.arange(0.01, 1, 0.3))
beta.append('symmetric')

# Validation sets
num_of_docs = len(corpus)
corpus_sets = [gensim.utils.ClippedCorpus(corpus, int(num_of_docs*0.75)), 
               corpus]

corpus_title = ['75% Corpus', '100% Corpus']

model_results = {'Validation_Set': [],
                 'Topics': [],
                 'Alpha': [],
                 'Beta': [],
                 'Coherence': []
                }

# Can take a long time to run
if 1 == 1:
    pbar = tqdm.tqdm(total=(len(beta)*len(alpha)*len(topics_range)*len(corpus_title)))

    # iterate through validation corpuses
    for i in range(len(corpus_sets)):
        # iterate through number of topics
        for k in topics_range:
            # iterate through alpha values
            for a in alpha:
                # iterare through beta values
                for b in beta:
                    # get the coherence score for the given parameters
                    cv = compute_coherence_values(corpus=corpus_sets[i], dictionary=id2word, 
                                                  k=k, a=a, b=b)
                    # Save the model results
                    model_results['Validation_Set'].append(corpus_title[i])
                    model_results['Topics'].append(k)
                    model_results['Alpha'].append(a)
                    model_results['Beta'].append(b)
                    model_results['Coherence'].append(cv)

                    pbar.update(1)
    pd.DataFrame(model_results).to_csv('./results/lda_tuning_results.csv', index=False)
    pbar.close()**

调查结果

让我们从确定主题的最佳数量开始。下表列出了两个验证集的主题数量的一致性分数 C_v,以及固定的 alpha = 0.01 和 beta = 0.1

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

随着一致性分数似乎随着主题数量的增加而增加,在变平或大幅下降之前,选择 CV 最高的模型可能更有意义。在这种情况下,我们选择 K=8

接下来,我们要选择最佳的α和β参数。虽然有其他复杂的方法来处理选择过程,但对于本教程,我们选择 K=8 时产生最大 C_v 得分的值

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

阿尔法=0.01

β= 0.9

K=8

这大约产生。比基线得分提高了 17%

最终模型

让我们使用上面选择的参数来训练最终的模型

**num_topics = 8

lda_model = gensim.models.LdaMulticore(corpus=corpus,
                                           id2word=id2word,
                                           num_topics=num_topics, 
                                           random_state=100,
                                           chunksize=100,
                                           passes=10,
                                           alpha=0.01,
                                           eta=0.9)**

可视化主题

**import pyLDAvis.gensim_models as gensimvis
import pickle 
import pyLDAvis

# Visualize the topics
pyLDAvis.enable_notebook()

LDAvis_data_filepath = os.path.join('./results/ldavis_tuned_'+str(num_topics))

# # this is a bit time consuming - make the if statement True
# # if you want to execute visualization prep yourself
if 1 == 1:
    LDAvis_prepared = gensimvis.prepare(lda_model, corpus, id2word)
    with open(LDAvis_data_filepath, 'wb') as f:
        pickle.dump(LDAvis_prepared, f)

# load the pre-prepared pyLDAvis data from disk
with open(LDAvis_data_filepath, 'rb') as f:
    LDAvis_prepared = pickle.load(f)

pyLDAvis.save_html(LDAvis_prepared, './results/ldavis_tuned_'+ str(num_topics) +'.html')

LDAvis_prepared**

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

结束语

我们从理解为什么评估主题模型是必要的开始。接下来,我们回顾了现有的方法,并触及了主题一致性的表面,以及可用的一致性度量。然后,我们使用 Gensim 实现构建了一个默认的 LDA 模型,以建立基线一致性得分,并回顾了优化 LDA 超参数的实用方法。

希望这篇文章能够揭示潜在的主题评估策略,以及其背后的直觉。

参考文献:

  1. http://qpleple.com/perplexity-to-evaluate-topic-models/
  2. https://www . Amazon . com/Machine-Learning-probability-Perspective-computing/DP/0262018020
  3. https://papers . nips . cc/paper/3700-reading-tea-leaves-how-humans-interpret-topic-models . pdf
  4. https://github . com/matti lyra/pydataberlin-2017/blob/master/notebook/evaluationunsupervisedmodels . ipynb
  5. https://www . machine learning plus . com/NLP/topic-modeling-gensim-python/
  6. http://SVN . aksw . org/papers/2015/WSDM _ 话题 _ 评价/public.pdf
  7. http://palmetto.aksw.org/palmetto-webapp/

感谢阅读。如果您有任何反馈,请对本文发表评论,在LinkedIn上给我发消息,或者给我发电子邮件(shmkapadia[at]gmail.com)

如果你喜欢这篇文章,请访问我的其他文章

**** [## Python 中的主题建模:潜在狄利克雷分配(LDA)

如何开始使用 Python 中的 LDA 进行主题建模

towardsdatascience.com](/end-to-end-topic-modeling-in-python-latent-dirichlet-allocation-lda-35ce4ed6b3e0) [## 构建块:文本预处理

本文是关于自然语言处理的后续文章的第二篇。这一系列…的目的

towardsdatascience.com](/building-blocks-text-pre-processing-641cae8ba3bf) [## 语言模型简介:N-Gram

本文是关于自然语言处理的第三篇文章。这一系列…的目的

towardsdatascience.com](/introduction-to-language-models-n-gram-e323081503d9)****

评估机器学习算法

原文:https://towardsdatascience.com/evaluating-a-machine-learning-algorithm-81746c947ad3?source=collection_archive---------24-----------------------

“下一步做什么?”的工具箱

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

随着易于使用的机器学习库的丰富,应用它们并在大多数情况下实现 80%以上的预测准确率通常是很有吸引力的。但是,**‘下一步该怎么办?’**这个问题困扰着我,也可能困扰着其他有抱负的数据科学家。

我在 Coursera 上**“机器学习——斯坦福在线”**的课程期间,吴恩达教授帮我顺利通过。我希望这篇简要介绍了他在一次讲座中的解释的文章能够帮助我们许多人理解“调试或诊断学习算法”的重要性。

首先,让我们说出所有的可能性或**‘下一步尝试什么?’**当假设在其预测中出现不可接受的大误差,或者需要改进我们的假设时:

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

我们将再次访问该表,做出明智的选择,并创建我们的 工具箱

上述诊断将基本上帮助我们找到偏差方差权衡
让我们用一个简单的图来简单地形象化这个概念,来说明过拟合(高方差)和欠拟合(高偏差)。

偏差方差权衡

从根本上说,“最佳模型”的问题是在偏差和方差之间找到一个最佳平衡点。这里有一个链接,链接到杰克·范德普拉斯在《Python 数据科学手册》中解释的偏差方差权衡

以下代码可视化了我们的假设在多项式的不同次上的拟合。
请注意,过拟合
欠拟合也可以在不同的正则化参数训练集大小上可视化。

源代码: Scipy 讲义

%matplotlib inline
import numpy as np
import matplotlib.pyplot as pltdef generating_func(x, err=0.5):
    return np.random.normal(10 - 1\. / (x + 0.1), err)from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeaturesn_samples = 8np.random.seed(0)
x = 10 ** np.linspace(-2, 0, n_samples)
y = generating_func(x)x_test = np.linspace(-0.2, 1.2, 1000)titles = ['d = 1 (under-fit; high bias)',
          'd = 2',
          'd = 6 (over-fit; high variance)']
degrees = [1, 2, 6]fig = plt.figure(figsize=(9, 3.5))
fig.subplots_adjust(left=0.06, right=0.98, bottom=0.15, top=0.85, wspace=0.05)for i, d in enumerate(degrees):
    ax = fig.add_subplot(131 + i, xticks=[], yticks=[])
    ax.scatter(x, y, marker='x', c='k', s=50)model = make_pipeline(PolynomialFeatures(d), LinearRegression())
    model.fit(x[:, np.newaxis], y)
    ax.plot(x_test, model.predict(x_test[:, np.newaxis]), '-b')ax.set_xlim(-0.2, 1.2)
    ax.set_ylim(0, 12)
    ax.set_xlabel('house size')
    if i == 0:
        ax.set_ylabel('price')ax.set_title(titles[i])

fig.savefig('graph-Images/bias-variance.png')

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

验证曲线

1.变化的模型复杂性

源代码: Scipy 讲义

生成更大的数据集

from sklearn.model_selection import train_test_split

n_samples = 200
test_size = 0.4
error = 1.0

# randomly sample the data
np.random.seed(1)
x = np.random.random(n_samples)
y = generating_func(x, error)

# split into training, validation, and testing sets.
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=test_size)

# show the training and validation sets
plt.figure(figsize=(6, 4))
plt.scatter(x_train, y_train, color='red', label='Training set')
plt.scatter(x_test, y_test, color='blue', label='Test set')
plt.title('The data')
plt.legend(loc='best');

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

绘制不同模型复杂性的验证曲线

from sklearn.model_selection import validation_curve

degrees = np.arange(1, 21)

model = make_pipeline(PolynomialFeatures(), LinearRegression())

# The parameter to vary is the "degrees" on the pipeline step
# "polynomialfeatures"
train_scores, validation_scores = validation_curve(
                 model, x[:, np.newaxis], y,
                 param_name='polynomialfeatures__degree',
                 param_range=degrees,
                 cv = 5)

# Plot the mean train error and validation error across folds
plt.figure(figsize=(6, 4))
plt.plot(degrees, validation_scores.mean(axis=1), lw=2,
         label='cross-validation')
plt.plot(degrees, train_scores.mean(axis=1), lw=2, label='training')

plt.legend(loc='best')
plt.xlabel('degree of fit')
plt.ylabel('explained variance')
plt.title('Validation curve')
plt.tight_layout()

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

Image Source: Python Data Science Handbook by Jake VanderPlas

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

2.变化正则化参数

生成数据集和绘制不同正则化参数的验证曲线不在本讨论范围内。还感兴趣吗?请参考杰克·范德普拉斯的 Python 数据科学手册

我们知道,基函数(多项式特征、高斯特征等)的引入。)到我们的线性回归中使得模型更加灵活。

但是,它会带来风险吗?
是的,答案是 过拟合

原因:我们的模型过于灵活,无法捕捉训练数据集中的异常值或极值。
解决方案:正规化

正则化是一种回归形式,它将模型参数惩罚或约束或正则化为零。

  • 当我们有很多特征时,这种方法很有效,每个特征都对我们的预测有所贡献。
  • 因此,我们保留了所有的特征,但是减少了参数的大小或值。

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

Image Source Code: Python Data Science Handbook by Jake VanderPlas

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

学习曲线

源代码: Scipy 讲义

针对固定模型复杂性(d = 1 和 d = 15),随着样本数量的增加,绘制训练和测试误差图

# A learning curve for d = 1, 15
for d in [1, 15]:
    model = make_pipeline(PolynomialFeatures(degree=d), LinearRegression())from sklearn.model_selection import learning_curve
    train_sizes, train_scores, validation_scores = learning_curve(
        model, x[:, np.newaxis], y,
        train_sizes=np.logspace(-1, 0, 20),
        cv = 5)# Plot the mean train error and validation error across folds
    plt.figure(figsize=(6, 4))
    plt.plot(train_sizes, validation_scores.mean(axis=1),
            lw=2, label='cross-validation')
    plt.plot(train_sizes, train_scores.mean(axis=1),
                lw=2, label='training')
    plt.ylim(bottom=-.1, top=1)plt.legend(loc='best')
    plt.xlabel('number of train samples')
    plt.ylabel('explained variance')
    plt.title('Learning curve (degree=%i)' % d)
    plt.tight_layout()plt.show()

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

固定模型复杂度(d = 1)的可变样本量—高偏差估计量:

  • 欠拟合数据,因为训练和验证分数都很低,或者学习曲线已经收敛到一个较低的分数。
  • 我们可以预期,添加更多的训练数据不会有所帮助
  • 重温*‘下一步尝试什么?’工作台修复偏高*

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

固定模型复杂性(d = 15)的可变样本量—高方差估计量:

  • 由于训练分数远高于验证分数,因此过度拟合数据。
  • 随着我们向这个训练集添加更多的样本,训练分数将继续降低,而交叉验证分数将继续增加,直到它们在中间相遇。
  • 我们可以预期,添加更多的训练数据将会有所帮助。

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

Image Source Code: Python Data Science Handbook by Jake VanderPlas

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

正如我所承诺的,这里有我们的 工具箱——“下一步尝试什么?” 它与验证和学习曲线一起,将帮助我们做出明智的决策。

参考

  • Coursera 的“机器学习—斯坦福在线”讲座,主讲人吴恩达教授
  • 杰克·范德普拉斯的《Python 数据科学手册》
  • 犀利的讲稿

感谢您的阅读!如果你觉得这有帮助或者没有帮助,请在评论中告诉我。
如果此文对您有帮助, 分享一下

访问 Jupyter 笔记本— 点击此处

领英

[## Eklavya Saxena -东北大学-马萨诸塞州波士顿| LinkedIn

东北大学精通数据科学的研究生,在以下领域有 2 年以上的工作经验

linkedin.com](https://linkedin.com/in/EklavyaSaxena)

GitHub

[## eklavyasaxena/评估机器学习算法

工具箱——“下一步要做什么?”有了大量易于使用的机器学习库,它经常吸引…

github.com](https://github.com/eklavyasaxena/Evaluating-a-Machine-Learning-Algorithm)

基于错误和基于排名的真实推荐系统评估

原文:https://towardsdatascience.com/evaluating-a-real-life-recommender-system-error-based-and-ranking-based-84708e3285b?source=collection_archive---------6-----------------------

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

Photo credit: Pixabay

推荐系统旨在根据用户的偏好发现并推荐用户可能感兴趣的项目

推荐系统是当今机器学习中最有价值的应用之一。亚马逊将其 35%的收入归功于其推荐系统。

评估是研究和开发任何推荐系统不可或缺的一部分。根据你的业务和可用的数据,有很多方法可以评估一个推荐系统。今天我们将尝试几个。

评级预测

在我的上一篇帖子 re: 构建和测试带惊喜的推荐系统中,惊喜围绕着各种机器学习算法来预测用户对项目的评分(即评分预测)。它要求用户给予 明确的 反馈,比如要求用户在购买后给一本书打 0 到 10 颗星的分数。然后我们用这些数据来建立用户的兴趣档案。这样做的问题是,不是每个人都愿意留下评级,所以数据往往是稀疏的,就像我们之前看到的这个图书穿越数据集:

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

Figure 1

大多数推荐系统试图预测如果用户对相应的书籍进行评级,他们会在其中放入什么。如果有太多的“南”,推荐者就没有足够的数据来理解用户喜欢什么。

然而, 显性 评级是伟大的,如果你能说服你的用户给你评级。所以,如果你有奢侈的数据和用户评分,那么评价指标应该是或者 MAE 。让我们展示一个带有惊奇库的 Movielens 数据集的例子。

ratings_prediction.py

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

顶级的

从在线购物网站到视频门户网站,前 N 名推荐系统无处不在。它们向用户提供他们可能感兴趣的 N 个项目的排序列表,以鼓励浏览和购买。

亚马逊的推荐系统之一是“前 N 名”系统,它向个人提供一个顶级结果列表,如下所示:

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

Figure 2

亚马逊给我的“前 N 名”推荐包括 9 页,第一页有 6 个项目。一个好的推荐系统应该能够识别某个用户感兴趣的一组 N 个项目。因为我很少在亚马逊买书,我的“Top-N”差得很远。换句话说,我可能只会点击或阅读我的“前 N 名”列表中的一本书。

以下脚本为测试集中的每个用户产生了前 10 个推荐。

top-N.py

下面是我们预测的用户 Id 2 和用户 Id 3 的前 10 名。

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

Figure 3

命中率

让我们看看我们的 10 大推荐有多好。为了评估 top-10,我们使用命中率,也就是说,如果用户对我们推荐的前 10 名中的一个进行了评级,我们就认为它是“命中”。

计算单个用户命中率的过程:

  • 在培训数据中查找该用户历史记录中的所有项目。
  • 有意删除其中一项(留一项交叉验证)。
  • 使用所有其他项目来为推荐者提供信息,并要求提供前 10 项推荐。
  • 如果被删除的项目出现在前 10 个推荐中,那么它就是成功的。如果没有,那就不算成功。

HitRate.py

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

系统的整体命中率是命中数除以测试用户数。它衡量我们能够推荐删除评级的频率,越高越好。

非常低的命中率仅仅意味着我们没有足够的数据来处理。就像亚马逊的点击率对我来说会非常低,因为它没有足够的我的图书购买数据。

按评级值列出的命中率

我们也可以通过预测的评分值来分解命中率。理想情况下,我们希望预测用户喜欢的电影,所以我们关心高评分值而不是低评分值。

RatingHitRate.py

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

我们的命中率细分正是我所希望的,评分 5 的命中率远远高于 4 或 3。越高越好。

累积命中率

因为我们关心更高的评级,所以我们可以忽略低于 4 的预测评级,以计算> = 4 的评级的命中率。

CumulativeHitRate.py

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

越高越好。

平均交互点击排名

前 N 名推荐系统排名评估的常用指标,仅考虑第一个相关结果出现的位置。我们会因为推荐一个用户排名靠前而不是靠后的项目而得到更多的信任。越高越好。

AverageReciprocalHitRank.py

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

你的第一个现实生活中的推荐系统很可能是低质量的,你为新用户准备的成熟的推荐系统也是如此。但是,这仍然比没有推荐系统好得多。推荐系统的目标之一是我们在推荐系统中学习用户/新用户的偏好,以便他们可以开始从系统接收准确的个性化推荐。

然而,如果你刚刚起步,你的网站是全新的,推荐系统不能为任何人提供个性化的推荐,没有任何人的任何评价。然后,这就变成了一个系统性的自举问题

Jupyter 笔记本可以在 Github 上找到。享受这周剩下的时光。

参考:用机器学习和人工智能构建推荐系统

面板数据多层次模型在 MLB 促销中的应用

原文:https://towardsdatascience.com/evaluating-bobblehead-promotion-in-mlb-an-application-of-multi-level-model-on-panel-data-8f5c6fc9e044?source=collection_archive---------13-----------------------

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

2015 年,我看了 money ball——这是一个关于 MLB 的小市场球队 Oakland A 如何利用数据科学/统计数据,以有限的预算组建一支强大的球队,击败其他富有和著名的球队,并在 2002 赛季连续 20 场比赛获胜的故事。这是我第一次了解到数据分析可以如此强大,这也激励我追求这一数据职业生涯。因此,我决定在这个关于 MLB 的项目中应用数据建模,但在另一个方面:评估营销推广。该数据集来自 Thomas Miller 所著的《营销数据科学:用 R 和 Python 进行预测分析的建模技术》一书。你可以在这里 下载数据集和我的 R 代码进行分析。

我讨厌失败多过我想要赢。

—比利·比恩,奥克兰 A 公司总经理,2002 年

一—简介

在美国,职业棒球大联盟(MLB)球队的主场比赛(81 场)比国家篮球协会(41 场)和国家足球联盟(8 场)的总和还要多。结果?球迷不太可能出席每场比赛。一年四季都有很多选择。鉴于目前的市场形势,有这么多种类的新娱乐作为棒球比赛的竞争对手,找到销售门票的方法就更加重要了。

因为门票销售是许多球队的主要收入来源,所以了解哪种促销活动可以说服球迷前来对一支球队的可持续性至关重要。什么样的促销活动将导致美国职业棒球大联盟(MLB)比赛上座率的最大增长?答案很可能是摇头娃娃赠品。自 1999 年以来,MLB 队的宣传部门一直利用这些小人来吸引更多的观众,因为球迷们喜欢这样。

然而,有太多的因素,无论是场内还是场外,都会影响一个人是否参加 MLB 比赛的决定。除了促销,粉丝还会考虑游戏的时机、天气、胜率,以及游戏是否是跑马灯游戏【1】。因此,有时棒球营销人员无法理解摇头娃娃促销对上座率的真正影响。我们的分析旨在回答一个核心问题:提供摇头娃娃赠品可以增加多少销售额,增加多少,以及这一结果在 MLB 团队中如何变化。

了解这一点可以帮助我们在推广摇头娃娃时,为推广棒球部门提供完善的建议。

我们的报告包含以下部分:

II —数据特征

III —模型选择和解释

四、建议和结论

五、附录

二—数据特征

该数据集提供了 2012 赛季所有 MLB 球队的出勤信息。每行说明一个游戏的属性,这些属性可以分为 4 个桶:时间(月份、日期、星期几、白天/晚上)、天气(温度、天空)、团队(home_team、对手)和促销(帽子、衬衫、烟花、摇头娃娃)。所有这些变量都会或多或少地影响比赛的上座率。

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

Table 1: Dependent and Independent variables of the dataset

我们真正关心的是摇头晃脑对出勤率的影响。我们想知道提供摇头晃脑如何影响出席率,以及这种影响是否因团队或提供摇头晃脑的时间而异,其他条件保持不变。

这是面板数据,包括横截面和时间序列数据。在这种情况下,数据集提供了在赛季的不同时间和不同团队中对摇头娃娃推广的观察。因此,摇头晃脑的影响可能不仅随时间而变化,而且在不同的团队中也是如此。让我们通过我们的可视化来确认它。

您可以在此了解更多关于面板数据的信息。

甲) 主场 _ 球队出勤

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

Figure 1: Avg. attendance varies among MLB teams

MLB 有富有的球队和不那么富有的球队。像纽约扬基队、洛杉矶道奇队、费城费城人队、旧金山巨人队……这样的大市场球队和像坦帕湾雷队、奥克兰运动家队、西雅图水手队……这样的小市场球队之间的受欢迎程度是不同的。这些大市场球队通常有更高的收入、更多的预算、更多的明星球员,因此比小市场球队吸引更多的观众。在这个市场中,品牌名称是决定每场比赛上座率的关键因素。

“我们试图解决的问题是,有富有的团队,也有贫穷的团队。然后是五十英尺的垃圾,然后是我们。这是一场不公平的游戏。”

—比利·比恩,奥克兰 A 公司总经理,2002 年。

b)摇头出席

从图 2 中我们观察到:

●一些球队在有摇头晃脑的比赛和没有摇头晃脑的比赛之间的上座率有明显差异,例如旧金山巨人队和费城人队。

●一些球队没有体验到明确的效果或没有足够的数据来产生明确的效果,如波士顿红袜队、圣地亚哥教士队、科罗拉多洛基队、明尼苏达双城队。

●大多数球队的上座率都有所增加:休斯顿太空人队、西雅图海洋队、辛辛那提红人队、多伦多蓝鸟队等。

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

Figure 2: Attendance difference between games with bobbleheads and without bobblehead / The number of games with and without bobbleheads among teams.

然而,这种增长是摇头娃娃促销的结果吗?不完全是。从下图中,你可以看到很大一部分摇头晃脑是在周六和周日提供的,这两天通常是一周中最拥挤的日子。人们可能会去看比赛,因为在周末即使没有摇头晃脑。因此,我们有动力确定摇头晃脑的结果是出席人数的真正增加。此外,摇头娃娃在工作日和周末参加人数增加有什么不同吗?

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

Figure 3: Bobblehead offering and attendance by days of week

c)其他类型的出勤晋升

衬衫、帽子、烟花(在同一张图上):图 4 显示帽子和衬衫的促销对出席率有轻微影响。在这三者中,烟火似乎对出席人数影响最大。平均而言,有烟花的游戏有 34,400 人参加,而没有烟花的游戏只吸引了 30,600 名粉丝。

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

Figure 4: Variation in attendance by Cap, Shirt and Fireworks

d)季节性影响

除了一些球队(波士顿红袜队、旧金山巨人队、费城费城人队、密尔沃基酿酒人队和圣路易斯红衣主教队)的上座率在几个月内保持稳定外,其他球队似乎有一些季节性影响,6 月和 7 月的上座率最高,4 月、8 月和 9 月的上座率有所下降。

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

e)天气(温度,天空)出勤

从上面的图表中,我们没有看到温度和游戏上座率之间的明确关系。此外,天空条件似乎是一个重要因素。球迷们倾向于在多云或晴朗的日子去棒球场。他们不想在雨天或有穹顶的时候出去。

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

f)推论

这种可视化为我们提供了在我们的模型中应该包含哪些独立变量的提示。对于大多数变量,我们看到它们和出勤率之间的相关性。因此,我们将在建模步骤中加入 home_team、月份、工作日、天气(除了温度)。

三—型号选择

  1. 聚合

聚合方法帮助我们找出摇头晃脑对整个团队和时间的出席率的平均影响。使用线性回归模型,我们检验了游戏中是否提供摇头晃脑促销与该游戏的出席率之间的关系。我们知道摇头晃脑的系数是 4494,这意味着提供摇头晃脑会使棒球比赛的上座率平均增加 4494。

聚合方法的问题在于,它未能证明 MLB 团队在摇头推广影响方面的异质性。在接下来的部分中,我们将使用另外两种方法来帮助我们识别这种变化。

2。分组

分组方法有两个核心问题:

●摇头娃娃推广的时机是一个重要因素吗?如上所述,很大一部分摇头晃脑是在周末提供的。如果在工作日提供摇头晃脑,对出席率有什么影响吗?

●城市的规模是一个重要因素吗?我们都知道 MLB 的上座率因城市而异,因为每个城市都有不同的生活水平、球迷基础和替补人数。所有这些异质性都会影响摇头晃脑影响出席率的方式。为了简化,我们只基于城市人口作为第一异质性因素,因为它表明有多大的球迷基础。

为了回答第一个问题,我们将我们的数据集分成两组:发生在工作日的游戏和发生在周末的游戏。之后,我们对数据的每个子集应用线性回归。结果表明,周末提供摇头晃脑的效果与平日提供摇头晃脑的效果存在差异。平均而言,工作日的摇头晃脑增加了 6,628 名观众(平均 24.7%),而周末的摇头晃脑仅增加了 2,938 名观众(平均 8.9%)。这可以用以下事实来解释:在周末,不管是否有摇头娃娃赠品,许多球迷都会去看棒球;而在工作日,他们需要更多的激励来参加比赛。

关于第二个问题,我们获得了一个关于城市人口的新数据集,基于此,我们将数据集分为两组:一组主队来自小城市(意味着人口少于 100 万),另一组来自大城市(意味着人口大于 100 万)。有 9 支队伍驻扎在大城市,21 支队伍驻扎在小城市。

同样,线性回归结果显示,来自大城市的团队的摇头效应和来自小城市的团队的摇头效应之间存在差异。平均而言,大城市的摇头晃脑增加了 7,638 人(24.2%),而小城市的摇头晃脑仅增加了 2,485 人(8.5%)。虽然城镇人口不同,但当没有摇头晃脑时,平均上座率可能不会在团队之间变化太大(平均 31.5K 对 29.2K)。当提供摇头晃脑时,大城市的上座率比小城市提高了很多。这可能是因为大城市比小城市有更大的粉丝群,有更多的增量粉丝被摇头晃脑的赠品所吸引。

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

当谈到摇头娃娃推广时,使用分组方法让我们对棒球的多样性有了更多的了解。然而,在这种方法中仍然存在某种程度的聚合,这可能会清除我们可以提供给棒球营销人员的有用信息。我们希望找到一种能够在团队层面上展示异质性的方法,多层次模型是我们下一步的尝试。

3。多级模型

虽然聚合模型在赛季的所有比赛中提供了固定的截距和固定的摇头摆尾斜率,但多级模型【2】假设这种效应会因球队而异,因为我们在这种情况下将其视为第一级。还有斜率和截距的固定效应,分别是 3997 和 32004。这可以解释为参赛队伍平均增加了 3997 人。(请注意,此固定斜率与总量法(4494)中的斜率略有不同,因为总量法中的斜率是游戏的平均增量)。

下图显示了作为多级模型结果的变化斜率和截距。

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

这里,截击的随机效应展示了 MLB 团队不同的出席水平。还有,摇头晃脑的随机效果是各队对固定效果的偏离。因此,我们可以通过将固定效果添加到随机效果中来得出每个团队的最终平均效果。这是我们的最终结果:

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

Figure 8: The verying final average effects of bobblehead on MLT teams

●洛杉矶道奇队享受了摇头晃脑对上座率的最大积极影响(平均而言,摇头晃脑增加了 13,766 个上座率),其次是多伦多蓝鸟队(约 8,838),以及亚特兰大勇士队(6,678)。

●另一方面,旧金山巨人队是唯一一支承受摇头晃脑对上座率产生负面影响的球队(平均而言,他们的比赛上座率减少了 1023 人)。此外,芝加哥白袜队、华盛顿国民队、纽约大都会队和芝加哥小熊队的门票销售也略有增加。

●圣地亚哥教士队、科罗拉多落基山队、明尼苏达双城队、波士顿红袜队、底特律老虎队等 13/30 支球队没有看到摇头晃脑的明显效果(随机效果~ 0),因为我们没有这些球队足够的摇头晃脑观察数据(最少 3 次观察)。

●拦截中的随机效应只是说明了每个团队平均出席水平的差异。

四—建议&结论

摇头娃娃推广被证明能有效提高棒球上座率。MLB 推广部团队预计每场比赛平均增加 4428 名观众。然而,由于许多因素导致团队之间存在巨大的异质性,摇头晃脑的影响也在团队之间从大约 13,700 下降到负数。洛杉矶道奇队是受到摇头晃脑影响最大的球队,而旧金山巨人队在升级中略受影响。

该分析也给了我们一些关于何时何地应该实施摇头晃脑赠品活动的见解。虽然大多数有摇头晃脑的游戏都是在周末,但我们的分析表明摇头晃脑在周末的影响不如在工作日。周末的摇头晃脑增加了 8.9%的出席率,而工作日的出席率为 24.2%。此外,大城市的球队应该比小城市的球队更多地考虑提供摇头娃娃推广,因为他们有更大的粉丝群,因此他们可以吸引更多的粉丝带着摇头娃娃去棒球场。

对于进一步的研究,我们建议使用更大的数据样本,对摇头娃娃推广进行更多的观察,以获得更有意义的结果。在上面的分析中,有 13/30 个团队,我们不能推断摇头晃脑的最终效果,因为我们只有每个团队 0-2 次摇头晃脑的观察。我们建议至少收集 3 个观察值。

参考:

1,促销对美国职业棒球大联盟比赛上座率的影响,阿曼达·舍恩罗克,2009 年

2、了解面板数据回归,马达夫·米什拉

3、多级模型的简单说明

关于作者: 我是加州大学戴维斯分校的 MBA 学生。我对营销分析、建模、机器学习和数据科学充满热情。本文属于我 MBA 项目下的独立学习。非常感谢我的同学 Jamie Ho 对这个项目的贡献。如果您有任何意见、反馈或问题,请随时通过 mapnguyen@ucdavis.edu 联系我,或通过LinkedIn联系我。快乐造型!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值