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

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

什么是机器学习:监督、非监督、半监督和强化学习方法

原文:https://towardsdatascience.com/what-is-machine-learning-a-short-note-on-supervised-unsupervised-semi-supervised-and-aed1573ae9bb?source=collection_archive---------3-----------------------

一篇关于什么是机器学习的短文:监督、非监督、半监督和强化学习

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

阿瑟尼·托古列夫在 Unsplash 上的照片

1.介绍

机器学习是人工智能(AI)的一个子领域,它为系统提供自动****学习经验 中改进的能力,而不需要显式编程。

学习**(模型拟合)的过程中,我们需要有一些可用的观测值数据(也称为样本样本,以便探索隐藏在我们数据中的潜在 潜在 模式。这些学来的 模式都是没什么比一些功能决定 界限。**

这些模式由系统(计算机系统)自动学习,无需人工干预或输入。

如果你想在交互式路线图和活跃的学习社区的支持下自学数据科学,看看这个资源:https://aigents.co/learn

2.主要的机器学习类别

机器学习算法通常分为有监督的和无监督的。

2.1 受监督的机器学习算法/方法

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

作者做的手工素描。

对于这类模型,研究需要手头有一个数据集,其中包含一些观察值和观察值的标签/类别。例如,观察可以是动物的图像,标签可以是动物的名字(例如猫、狗等)。

这些模型从标记的数据集学习,然后用于预测未来事件。对于训练过程,输入是具有其相应标签的已知训练数据集,并且学习算法产生推断函数,以最终对可以给予模型的一些新的看不见的观察进行预测。经过充分的训练后,该模型能够为任何新的输入提供目标。学习算法还可以将其输出与正确的预期输出(基本事实标签)进行比较,并找出错误,以便相应地修改自身(例如,通过反向传播)。

监督模型可以进一步分为回归和分类案例:

  • 分类:分类问题是当输出变量是一个类别时,例如“疾病”/“无疾病”。
  • 回归:回归问题是当输出变量是一个真实的连续值时,例如股票价格预测

属于这个家族的模型的一些例子如下:SVC、LDA、SVR、回归、随机森林等。

2.2 无监督机器学习算法/方法

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

作者做的手工素描。

对于这类模型,研究需要手头有一个带有一些观察值的数据集,而不需要观察值的标签/类别。

无监督学习研究系统如何从未标记的数据中推断出描述隐藏结构的函数。该系统不会预测正确的输出,而是探索数据,并可以从数据集进行推断,以描述来自未标记数据的隐藏结构。

无监督模型可以进一步分组为聚类关联情况。

  • 聚类:聚类问题是你想要揭示数据中固有的 分组的地方,比如根据一些特征/特性(比如腿的数量)对动物进行分组。
  • 关联:关联规则学习就是你想发现关联规则,比如买 X 的人也倾向于买 y

属于这个家族的模型的一些例子如下:PCA、K-means、DBSCAN、混合模型等。

2.3 半监督机器学习算法/方法

这个家族介于有监督和无监督学习家族之间。半监督模型使用标记和未标记的数据进行训练。

2.4 强化机器学习算法/方法

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

作者做的手工素描。

这一系列模型由使用估计误差作为奖励或惩罚的算法组成。如果误差大,那么惩罚就高,奖励就低。如果误差小,那么惩罚就低,奖励就高。

试错搜索延迟 奖励是强化学习最相关的特征。该系列模型允许在特定环境下自动确定理想行为,以最大化所需性能。

奖励 反馈是模型学习哪一个动作最好所需要的,这就是所谓的“强化 信号”。

属于这个家族的模型的一些例子是 Q-learning

3.摘要

监督:数据集中的所有观察值都被标记,算法学习从输入数据预测输出。

无监督:数据集中的所有观察值都是未标记的,算法从输入数据中学习固有结构。

半监督:数据集的一些观察值被标记,但大多数通常是未标记的。因此,通常混合使用监督和非监督方法。

使用机器学习(ML)模型,我们能够对大量数据进行分析。人类无法识别的数据模式可以在几秒钟内(在某些情况下)使用这些最大似然模型准确地(T21)提取出来。然而,大多数情况下,准确的结果(好的模型)通常需要大量的时间和资源用于模型训练(模型学习函数或决策边界的过程)。

那都是乡亲们!希望你喜欢这篇文章!

敬请关注并支持这一努力

如果你喜欢这篇文章并觉得它有用,请关注我,这样你就可以看到我所有的新帖子。

有问题吗?把它们作为评论贴出来,我会尽快回复。

和我联系

什么是机器学习?—直观的解释。

原文:https://towardsdatascience.com/what-is-machine-learning-a-visual-explanation-14642b90429f?source=collection_archive---------25-----------------------

最佳 ML 视觉效果

解释机器学习的 9 个精选图像、交互式工具和流程图。

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

来源:作者

要想很好地掌握机器学习,光有文字是不够的。这篇文章用我在过去 5 年中遇到的最好的视觉解释向你介绍了机器学习。

1.机器学习在数据中寻找模式

简单地说,机器学习在数据中找到模式,并使用它们进行预测。

每当你有大量的数据,并且想要自动进行智能预测时,机器学习可能是使用的正确工具。

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

机器学习的示例应用:将数据转化为预测。来源:作者

2.AI vs .机器学习 vs .深度学习

让我们先解决这个问题。AI、机器学习、深度学习有什么区别?英伟达的这张图表解释道:

  • 人工智能是一门创立于 20 世纪 50 年代初的学术学科。
  • 机器学习是通过经验学习的算法研究。自 20 世纪 80 年代以来,它一直在获得动力,是人工智能的一个子领域。
  • 深度学习是使用神经网络的机器学习的一个较新的子领域。它在某些领域非常成功(图像、视频、文本和音频处理)。

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

来源:英伟达

那么你应该用什么术语呢?

  • 简答:没那么重要。
  • 更长的回答:该领域从业者使用最多的术语是“机器学习”——它比 AI 更具体。

“如果是用 Python 写的,那就是机器学习;如果是用 PowerPoint 写的,那就是 AI。”😅

3.ML 和“普通”软件的区别

机器学习算法也只是软件。那有什么区别呢?

3.1 简短回答

用“普通”软件,我们告诉计算机做什么。通过机器学习,我们告诉计算机如何利用我们提供给它的数据自己找出答案。

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

来源

3.2 略长的回答

  • 普通软件基本上是一套规则,由人类编写,旨在实现特定的输出。
  • 机器学习软件自行寻找规则(模式),并尝试产生某种输出。是写软件的软件。🤯

直观解释:

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

传统软件与机器学习——来源:作者

4.ML 算法如何学习?

但是机器学习如何在数据中找到正确的模式来进行预测呢?

来自 R2D3 的团队设法可视化了机器学习模型如何学习。任务:“告诉我公寓是在纽约还是旧金山。”

👉他们对机器学习 的交互可视化简直是英雄主义。技术上准确,美观。

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

来源: R2D3

5.深度学习呢?

谷歌帮你搞定了。忘掉无聊的“网络图”检出 👉 这是一个关于神经网络如何学习的现场互动示例

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

一个学习在蓝色和橙色点之间绘制边界的神经网络。

您甚至可以修改:

  • 训练参数,表示算法的配置(nobs);
  • 神经元和层,定义模型可以变得多复杂;
  • 任务,这样模型就能学会分离圆形、矩形或者——最难的任务——螺旋形中的点。

对于每个模型,您可以观察它如何随着时间的推移而变得更好(测试损失)。

6.但是神经网络是如何工作的呢?

神经网络有点复杂——但是如果你真的感兴趣,那么没有比这更好的视频来解释它了👉3 blue 1 brown——什么是神经网络 ,格兰特在这里告诉你神经网络是如何识别数字的。

3Blue1Brown 讲解神经网络!👀

7.怎么分辨是不是机器学习?

这里有一个快速简单的流程图,可以帮助你弄清楚机器学习是否在你所看到的背后:

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

灵感来自郝凯伦 —来源作者

8.ML 解决方案的要素是什么?

事实是,机器学习只是每个机器学习解决方案的一小部分。大部分工作和代码都进入了围绕它的基础设施:

  • 数据:为算法收集、验证、分析、准备数据;
  • **基础设施:**部署、托管和服务机器学习模型;
  • **监控:**协调工作流程,监控和维护模型。

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

来源:作者

9.有哪些 ML 算法?

我们有很多算法可以选择。它们大致分为以下几类:

  • 经典学习:进一步分为监督学习(通过从例子中学习来预测数字或类别)或无监督学习(在没有任何指导的情况下在数据中寻找聚类)。
  • 神经网络和深度学习:基于多层感知器原理的算法,在利用图像、文本、音频、视频和时间序列数据进行预测时非常有用。
  • 强化学习:有点像自然进化的算法,在学习周期中改善它们的行为,以获得最大回报。
  • **集成学习:**构建大量弱模型并将它们组合成强模型的算法。

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

来源:瓦斯特里克

摘要

这些视觉效果应该让你很好地掌握所有基本的机器学习概念。要更深入地了解如何在项目中使用机器学习,请查看我们的机器学习指南:项目经理需要知道的事情

如果遗漏了什么重要的东西,请告诉我:markus@datarevenue.com

原载于

什么是机器学习,机器如何学习东西?

原文:https://towardsdatascience.com/what-is-machine-learning-and-how-can-a-machine-learn-something-4f66fa05714b?source=collection_archive---------31-----------------------

机器学习的直观解释

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

机器如何学习东西?阿瑟尼·托古列夫在 Unsplash 上的照片

在这篇文章中,我给出了一个关于机器学习模型在实践中实际做什么的非常实用的观点。

在这篇文章结束时,你会深刻理解我们如何使用机器学习来预测未知,我会给你一个开始做这件事所需的工具的切入点。

我将集中讨论监督模型。

什么是有监督的机器学习?

在监督机器学习中,目标是使用定义在多个独立变量上的函数来预测目标变量。

监督机器学习的一个非常著名的例子是波士顿房价数据集。该数据集包含许多房屋销售数据,并为每栋房屋列出了房屋的特征和最终销售价格。该练习的目标是建立一个机器学习模型,该模型可以根据房屋的特征预测任何房屋的销售价格。

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

可用于此预测任务的历史房屋销售数据

理解“函数”的概念

为了得到这样一个模型,我将使用函数的概念,所以让我先解释一下什么是函数以及它们是如何工作的。这将是很好理解机器学习的重要基础。

函数是如何将输入转换成输出的定义。

作为一个简单的起点,假设函数是如何将输入转换为输出的定义。该函数就像一个黑盒操作,每次都以相同的方式工作。这就像一个烹饪食谱,其中输入数字代表配料,函数代表手工工作和烤箱指令,输出代表最终的菜肴。

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

一个简单的功能:

作为一个简单的起点,假设函数是如何将输入转换为输出的定义。例如,让我们定义一个对任何输入数字都为+1 的函数:

  • 我们可以把函数定义写成:
    f(x) = x + 1
  • 例如,当我们想对输入数字 3 应用这个函数时,我们有 3 作为输入,所以我们用 3 代替 x:
    f(3)= 3+1
  • 现在变得简单了:3 + 1 + 4,所以 f(3) = 4

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

稍微复杂一点的函数:

为了使它稍微有趣一点,让我们做一个有两个输入 x1 和 x2 的函数。我们称函数 f2(函数 2)

  • 该函数输出两个输入的和并加 1:
    f2(x1,x2) = x1 + x2 + 1
  • 然后当我们想对输入数字 3 和 5 应用这个函数时,我们有 3 和 5 作为输入,所以我们用 3 代替 x1,用 5 代替 x2:
    F2(3,5) = 3 + 5 + 1
  • 现在又变得容易了:3 + 5 + 1 = 9,所以 f(3,5) = 9

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

如何在房价机器学习示例中使用函数:

现在让我们回到房价的例子来理解为什么我们需要一个函数。房价练习的目标是根据输入数字预测房价。由于我们将有多个输入数和 1 个输出数,这将完全符合我们刚才看到的函数概念。

我们可以做一个函数,把房子的多个特征转换成对房价的预测!

当将这个想法应用到实际案例中时,我们可以说我们的目标是构建一个函数,以房屋的多个特征作为输入,计算房屋价格的正确值!

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

从功能到模型

我上面讨论的函数有非常精确的映射。3 + 1 等于 4,这是完美的。现在看起来很容易,但是在现实生活中,我们不得不面对以下两个现实 :

要找到正确的函数,我们必须反过来:

在现实生活中,我们还不知道预测函数!

在现实生活中,我们从来没有预测我们想要预测的函数。我们的任务不是将一个函数应用于某些输入数据,而是找到这个函数,它最精确地将一个已知的输入映射到一个未知的输出。方法如下:

  • 我们从 x1、x2…和目标变量(输出)的许多值开始。这是我们过去观察和收集的数据。
  • 然后,我们试图找到最精确地预测输出的函数,而不真正知道该函数是否应该由加法、减法、除法等构成。这将由机器学习模型来完成。
  • 第三步是测试我们已经确定的功能在实践中是否也有效。希望如此,否则我们需要回到第二步。

第二个问题:生活并不精确

对于我们现有的数据来说,完美的函数可能并不存在。最好的函数可能会接近正确答案,但不会这么简单。尽管在很多情况下,接近完美的预测已经非常有用了!只要我们能够测量我们函数的误差,如果它几乎是完美的,我们就会很高兴!

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

不幸的是,我们不只是输出完美的预测,也会有误差。

真实交易:如何找到这个“神奇”的功能?

现在我们来看监督机器学习的核心目标:找到(隐藏和未知的)函数,该函数允许我们尽可能精确地将正确的输入变量转换为正确的输出变量。

例如,当我们输入我们房子的花园面积、房间数量和建造年份时,我们希望我们的函数输出尽可能接近的房价。

这个功能不太好找!有很多机器学习工具可以解决这个问题,我现在就要进入这个领域。

“尝试”不同类型的功能

我们在实践中要做的是精心设计的“尝试”许多不同类型的“功能”。但不仅仅是随机的,我们需要一个可靠的方法来进行这些试验。

我们需要的第一个构件是机器学习模型。有许多公开可用的模型,例如“决策树”、“随机森林”、“梯度推进机器”和等等

这些模型是一种优化机器,试图找到将输入转换为输出的最佳函数:这将是我们的预测函数。有许多可用的模型,因为每个模型都有自己特定的方法来尝试和优化预测函数的精度。

这些模型中的每一个都将使用不同类型的操作符来定义函数,但是也使用不同类型的映射(例如决策树使用 if/else 语句,而线性模型使用矩阵计算)。

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

监督机器学习的目标是找到最佳预测函数

测量误差和基准

在上一步中,假设我们能想到的每个模型都构建了一个略有不同的预测函数(输入数据到目标变量的映射略有不同)。

模型创建的下一步是测量每个模型的误差。每个模型都略有不同,因为我们必须接受微小的误差(生活是随机的)。但是我们仍然希望误差尽可能小!

我们将对模型开发中未包括的数据的单独部分测试所有不同的预测函数,预测最接近我们在现实中观察到的数据的模型将是我们保留的最终模型。

我们现在已经建立了一个模型:一个尽可能将输入转化为输出的预测函数!

去哪里找那些机器学习工具?

现在你对监督机器学习有了直观的了解,开始学习一些模型(函数制作工具)是很重要的。

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

Scikit Learn 是一个常用于机器学习的 Python 库

这里列出了最常见的型号。这会给你一个进一步学习的切入点:

  • 线性回归
  • 逻辑回归
  • 决策图表
  • 套索
  • 山脉
  • 弹性网
  • SVM
  • 随机森林
  • XGboost
  • 神经网络

两个很好的参考列表是:

  • scikit-learn 网站,上面有 scikit 所有机器学习模型的列表

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

caret R 包是另一个常用的机器学习库

机器真的学到东西了吗?

有许多机器学习模型,每个模型都有自己独特的方式,根据输入和输出数据以数学方式找到预测函数。

在实践中,您应用不同的模型并测量部分外部数据的误差。然后选择效果最好的模型,也就是误差最小的模型。然后,您可以将此模型用作预测函数,将输入变量转换为目标变量。这就是你的机器学习模型!

机器已经学习了预测功能

一旦这个过程完成,我们可以说机器已经学习了这个预测函数,因此得名机器学习。

对我的解释做一些扩展:

我们可以不使用房价,而是使用图像作为输入(然后它被称为计算机视觉),甚至是人类编写的文本(然后它被称为 NLP )。在那些类型的机器学习中,人们更可能称之为人工智能。需要其他类型的模型,通常是神经网络和深度学习,而不是描述的那些。但是过程还是一样的。

我们还可以通过在收到新数据后立即更新学习到的函数来使学习更加强大,这使得预测函数随着时间的推移而改进!这使得学习过程更接近人类的学习过程!

这篇文章的目标是给出有监督机器学习的直观解释。感谢读到这里,希望对你有用!敬请关注更多内容!

机器学习与自闭症

原文:https://towardsdatascience.com/what-is-machine-learning-doing-for-autism-6e86daa3b12a?source=collection_archive---------39-----------------------

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

Unsplash 上由 Alireza Attari 拍摄

关于机器学习如何有助于自闭症诊断和治疗的简要文献综述。

机器学习已经扩展到许多不同的领域和学科。尝试新的领域是成长和学习新事物的最好方式。以下是研究人员如何应用机器学习来诊断和治疗自闭症谱系障碍(ASD)的总结。

论文(按顺序)

所有这些论文都可以在没有任何大学赞助或付款的情况下获得。

  1. 基于面孔加工异常识别自闭症谱系障碍儿童:一个机器学习框架
  2. 自闭症治疗中机器人情感感知和参与的个性化机器学习
  3. 用于低成本和非侵入性测量婴儿自闭症相关行为的计算机视觉工具
  4. 使用机器学习来缩短基于观察的自闭症筛查和诊断

眼球运动和自闭症

作者刘文擘、李明和李毅开发了一个 ML 模型,根据看脸时的眼球运动来识别 ASD。

眼球追踪,SVM,RBF Kernal,参考文献 2 DP Wall,J. Kosmicki

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

蔡斯·克拉克Unsplash 上拍摄的照片

意识形态

患有自闭症的人在识别人脸和解释面部情绪方面有困难。此外,患有自闭症的人通常有一个非典型的面部扫描模式。作者想知道你是否能根据一个人看脸时看的地方和时间来识别自闭症。

数据

研究中的个体是 29 名自闭症儿童和 29 名非自闭症儿童。本文中使用的数据是从另一项研究中收集的,研究人员在这项研究中观察患有自闭症的儿童是否很难识别不同种族的人。

方法

研究人员使用 K-means 算法将每张脸分成 K 个不同的部分。然后,他们制作了直方图,测量个体看每个不同细胞的频率。这些信息被用来训练 SVM 来预测观众是否患有自闭症。

结果

SVM 能够以 88.51%的准确率预测观众是否患有自闭症。尽管并非不受假阳性和假阴性的影响,但该模型确实支持缺乏眼神交流是自闭症的一个强烈迹象。

机器人增强疗法

麻省理工学院媒体实验室在诊所里放置了一个机器人来帮助自闭症治疗。此外,他们为每个与之互动的孩子制作了专门的模型。

机器人,治疗,T-SNE,深度提升,开放姿势,开放面孔,开放微笑

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

法兰克诉Unsplash 上拍摄的照片

意识形态

机器人过去曾被用于自闭症治疗,但其有效性仍有争议。每个自闭症儿童都是不同的。

“如果你遇到了一个自闭症儿童,你就遇到了一个自闭症儿童。”

因此,预测情绪的通用模型是行不通的。解决方案是为每个与机器人互动的孩子制作一个专门的模型。这样,机器人就知道什么特征构成了快乐或悲伤。

方法

研究人员让每个孩子和一名临床医生在一个房间里玩耍,同时戴上手表来记录生理数据。临床医生会记录孩子玩耍时的情绪。这些数据,以及视频和音频,被用来训练机器人的模型。

影响

以前,当机器人被部署在临床环境中时,它会模仿治疗师在故事中描述或告诉孩子的情感。现在,机器人可以对孩子的情绪做出反应,并提出建议/问题,如“你为什么难过?”或者“我们休息一下吧。”

计算机视觉辅助房间隔缺损诊断

杜克大学的研究人员设计了一种低成本、非侵入性的计算机视觉(CV)工具来帮助诊断自闭症。

AOSI,评分者间评分,追踪面部特征

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

Matteo Bernardis 在 Unsplash 上拍摄的照片

方法

这项研究的重点是 7-14 个月大的高危儿童(有兄弟姐妹被诊断患有自闭症的儿童)。所有的儿童都由专业临床医生使用婴儿孤独症观察量表(AOSI)进行评估。一名 AOSI 专业临床医生、一名普通心理学家和两名心理学学生观看了该评估的视频。他们都根据孩子对不同听觉刺激的反应来给孩子打分。

然后,研究人员通过使用 CV 工具来跟踪儿童在观看不同刺激时的面部运动,从而自动化了审查过程。在测量孩子的反应后,他们会给出与人类评估者相同的“通过”、“延迟”和“卡住”分数。

结果

通过只跟踪眼睛、鼻子和耳朵,自动方法在 89%的时间里与专业的 AOSI 临床医生一致,并获得了 75%的优秀评分者间评分。

影响

这项研究应该作为更多心血管辅助 ASD 诊断工具的垫脚石。最初的工作非常有限,但可以扩展到不同的临床测试甚至家庭视频。最终目标是降低房间隔缺损诊断的成本,这项工作为此做出了贡献。

ADTree 缩短基于观察的 ASD 筛查

研究人员将最广泛使用的评估自闭症谱系障碍的工具——自闭症诊断观察量表——通用(ADOS ),从 29 个项目缩短到 9 个项目,而准确性没有明显损失。

ADOS,广告树,上采样

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

照片由paweczerwińskiUnsplash 上拍摄

数据

研究人员从波士顿自闭症协会(AC)、自闭症遗传资源交易所(AGRE)和西蒙斯基金会获得了 1073 个 ADOS 观察数据。在 1073 个观察结果中,只有 15 个来自没有自闭症的个体。一些观测数据缺失,因此没有使用。考虑到不平衡的类别,研究从 15 个观察值增加到 612 个。

模特们

这篇论文的重点是创建一个机器学习模型,可以帮助临床医生量化 ADOS 评估的结果。在这个过程中,他们开发了 16 个不同的模型,每个模型都有不同程度的成功。

ADTree 模型表现最好,准确率为 100%。除了对给定的每个样本进行正确分类,ADTree 还删除了许多给定的输入。广告树只需要最初 27 个项目中的 9 个就可以达到同样的准确度。

影响

这一减少将临床医生的工作量减少了 66%,从而加快了 ASD 诊断流程。随着更多 ADOS 数据的报告和记录,广告树可能能够将个体分类到光谱上的不同区域。

机器学习和自闭症的下一步是什么?

看到在自闭症早期检测以及儿童新疗法方面所做的所有研究令人兴奋。我最喜欢关于 ADTrees 缩短基于观察的 ASD 筛查的论文,并认为像树修剪这样的策略也可以导致对其他疾病更有效的调查。

我希望看到更多关于 DNA 和自闭症的研究。《自闭症之声》有一篇很棒的文章描述了在该领域已经完成的一些工作。

物体检测中的平均精度(mAP)是什么?

原文:https://towardsdatascience.com/what-is-mean-average-precision-map-in-object-detection-8f893b48afd3?source=collection_archive---------20-----------------------

注意:我们也在博客上发布了什么是地图。在本文中,我们通过解释和图表来分析平均精度指标。

计算机视觉社区已经聚集在公制地图上来比较物体探测系统的性能。在本帖中,我们将深入探究平均精度(mAP)是如何计算的,以及为什么 mAP 成为物体检测的首选指标。

如果您更喜欢以视频形式观看这些内容,我们可以满足您的需求。别忘了订阅我们的 YouTube 频道

物体检测快速概述

在我们考虑如何计算平均精度之前,我们将首先定义它测量的任务。

对象检测模型试图识别图像中相关对象的存在,并将这些对象分类到相关类别中。例如,在医学图像中,我们可能希望能够计数血液中的红细胞(RBC)、白细胞(WBC)和血小板的数量。为了自动做到这一点,我们需要训练一个对象检测模型来识别这些对象中的每一个,并正确地对它们进行分类。(我在一台 Colab 笔记本电脑上做了这个测试,以比较 EfficientDet 和 YOLOv3 ,这两种最先进的图像检测模型。)

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

我的笔记本中 EfficientDet(绿色)与 YOLOv3(黄色)的输出示例

这两个模型都预测图片中包围单元的边界框。然后他们给每一个盒子分配一个类别。对于每一项任务,网络都会对其预测的可信度进行建模。您可以在这里看到,我们总共有三个类别(红细胞、白细胞和血小板)。

我们应该如何决定哪种模式更好?查看图像,看起来 EfficientDet(绿色)绘制了一些过多的红细胞框,并错过了图片边缘的一些细胞。基于事物的外观,这当然是它的感觉——但是我们能相信图像和直觉吗?如果是的话,好了多少?(提示:不是——不信直接跳到最下面。)

如果我们可以直接量化每个模型在我们的测试集中的图像上、在不同的类别上以及在不同的置信度阈值下的表现,那就太好了。输入地图!

为了理解平均精度,我们必须花一些有意义的时间来研究精度-召回曲线。

精确回忆曲线

精度是对“w 当你的模型猜对的时候,它猜对的频率有多高?”的度量回忆是一个衡量“T2”的标准,你的模型是否每次都猜到了它应该猜到的东西?“考虑一个有 10 个红细胞的图像。只找到这十个标签中的一个但正确的模型是“RBC ”,它具有完美的精确度(因为它做出的每一个猜测——一个——都是正确的),但具有不完美的回忆(在十个 RBC 细胞中只找到一个)。

包含置信度元素的模型可以通过调整进行预测所需的置信度来权衡精确度和召回率。换句话说,如果模型处于避免假阳性(当细胞是 WBC 时声明 RBC 存在)比避免假阴性更重要的情况下,它可以将其置信度阈值设置得更高,以鼓励模型仅以降低其覆盖量(回忆)为代价仅产生高精度预测。

将模型的精度和召回率绘制为模型的置信度阈值的函数的过程是精度召回率曲线。它是向下倾斜的,因为随着置信度的降低,会做出更多的预测(帮助回忆)和更不精确的预测(损害精确度)。

这样想:如果我说,“说出每一种鲨鱼的名字”,你会从显而易见的开始(高精度),但你会对你能说出的每一种鲨鱼越来越不自信(精度越来越低,越来越接近完全回忆)。对了,你知道还有牛鲨吗?

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

我的一个 NLP 项目中不同模型的精确度、召回率和置信度

随着模型变得越来越不自信,曲线向下倾斜。如果该模型具有向上倾斜的精度和召回曲线,则该模型可能在其置信度估计方面存在问题。

人工智能研究人员喜欢度量标准,整个精度-召回曲线可以在单个度量标准中捕获。第一个也是最常见的是 F1,它结合了精确度和召回率来寻找最佳的置信度阈值,其中精确度和召回率产生最高的 F1 值。接下来是 AUC(曲线下面积),它整合了落在精度和召回曲线下的图量。

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

您真实的精确召回汇总指标草图

最后一个精度-召回曲线指标是平均精度(AP ),也是我们最感兴趣的。它被计算为在每个阈值达到的精确度的加权平均值,从先前阈值开始的召回的增加被用作权重。

AUC 和 AP 都反映了精确召回曲线的整体形状。选择一个或另一个用于对象检测是一个选择的问题,研究社区已经集中在 AP 的可解释性上。

通过并集上的交集度量正确性

物体检测系统根据边界框和类别标签进行预测。

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

你真实的物体探测草图

实际上,在 X1、X2、Y1、Y2 坐标中预测的边界框肯定会偏离(即使稍微偏离)地面真实标注。我们知道,如果一个包围盒预测是错误的类,我们应该把它算作不正确的,但是我们应该在包围盒重叠的什么地方画线呢?

并集上的交集(IoU)提供了设置此边界的度量标准,测量方法是预测边界框与地面真实边界框重叠的量除以两个边界框的总面积。

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

你真实的 IoU 度量的图形描述。

为 IoU 指标选择正确的单一阈值似乎有些武断。一位研究人员可能认为 60%的重叠是合理的,而另一位则认为 75%似乎更合理。那么,为什么不在一个单一的指标中考虑所有的阈值呢?输入地图。

绘制地图精确召回曲线

为了计算 mAP,我们绘制了一系列不同难度的 IoU 阈值精确回忆曲线。

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

由您真实绘制的地图精确回忆曲线草图。

在我的草图中,红色代表对借据的最高要求(可能是 90%),橙色代表对借据的最宽松要求(可能是 10%)。要绘制的行数通常由挑战设置。例如,COCO challenge 设置了 10 个不同的 IoU 阈值,从 0.5 开始,以 0.05 为步长增加到 0.95。

快到了!

最后,我们为按类类型划分的数据集绘制了这些精确召回曲线。

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

由你的实物类绘制的地图草图

该指标计算所有 IoU 阈值中每个类别的平均精度(AP)。然后,该度量对所有类别的地图进行平均,以得出最终估计值。🤯

在实践中使用平均精度(mAP)

我最近在一篇帖子中使用了 mAP,比较了最先进的检测模型,EfficientDet 和 YOLOv3。我想看看哪个模型在识别血液中的细胞和识别棋子的任务上做得更好。

在我对测试集中的每张图片进行推理之后,我导入了一个 python 包来计算我的 Colab 笔记本中的地图。这就是结果!

细胞目标检测的效率评估:

78.59% = Platelets AP 
77.87% = RBC AP 
96.47% = WBC AP 
mAP = 84.31%

YOLOv3 对细胞目标检测的评价:

72.15% = Platelets AP 
74.41% = RBC AP 
95.54% = WBC AP 
mAP = 80.70%

**与本文开头的单一推断相反,事实证明 EfficientDet 在模拟细胞对象检测方面做得更好!**您还会注意到,该指标是按对象类别划分的。这告诉我们,白细胞比血小板和红细胞更容易检测,这是有道理的,因为它们比其他细胞更大,更独特。

地图也经常被分成小、中和大对象,这有助于识别模型(和/或数据集)可能出错的地方。

结论

现在你知道如何计算地图,更重要的是,它意味着什么!

为了改善你的模型的地图,看看开始使用一些数据增强技术

感谢您的阅读,并希望您的平均精确度不断提高🚀

气候变化的 ML 是什么?

原文:https://towardsdatascience.com/what-is-ml-for-climate-change-2fb683c0de25?source=collection_archive---------40-----------------------

2019 年成立的一个新的“子领域”正在掀起波澜,比我最初想象的更容易接近

随着世界秩序的转变,我在寻找积极的、有吸引力的工作,我想知道 a)针对气候变化的机器学习到底是什么,b)是否有合理的途径让我们投入其中并做出贡献?引用我后来大量引用的一篇论文中的行动呼吁:

突破性的技术会产生影响,但对世俗问题的精心构建的解决方案也会产生影响。

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

照片由来自佩克斯达莉亚·谢夫索娃拍摄

最近的工作

首先,我知道最近有一堆关于气候变化和机器学习的研讨会(如 ICLR 2020ICML 2019NeurIPs 2019 版)。往这里看,原来是一个 climatechange.ai 的集中群。这对我来说似乎不错,但我希望了解人们实际上在做什么。

我写了一个小脚本来收集研讨会记录的标题和作者,并提出了这个关键词列表(一路上了解了 NLP 和停用词)。

LEARNING, USING, CLIMATE, DEEP, MACHINE, DATA, NETWORKS, CHANGE, SATELLITE, PREDICTION, IMAGERY, NEURAL, WEATHER, POWER, FORECASTING, ENERGY, TOWARDS, MODELS, CARBON, REINFORCEMENT, BASED, DETECTION, ENVIRONMENTAL, MONITORING, FLOW, VIA, DYNAMICS, FRAMEWORK, SOLAR, RISK, CLOUD, GRID, LEARNING-BASED, FOREST, CONSERVATION, SMART, ANALYSIS, OPTIMAL, MAPPING, URBAN, INTELLIGENCE, RENEWABLE

我预料会有一些时髦的词汇,但这几乎没有教我人们在做什么。一些提供洞察力的关键词可能是这个子集(去除数据和学习描述词):

NETWORKS, SATELLITE, WEATHER, POWER, ENERGY, FLOW, SOLAR, DYNAMICS, GRID, FOREST, CONSERVATION, MAPPING, URBAN

它列出了在城市发展、电力系统、能源网、保护和动态系统领域的应用。粗略分析之后,我意识到我实际上需要阅读 100 页的白皮书来初始化这个领域。

我将用于纸张信息的数据放在这里。你可以花 100 美元(25 美元)在注册 2020 年虚拟 NeurIPs 会议,并参加用机器学习应对气候变化研讨会的下一次迭代。

用机器学习应对气候变化——开创性论文

这篇来自 17 个机构的 22 位作者的论文揭开了我提到的研讨会的序幕,并提供了关于人们可以从哪里开始的详细解释。如果你从这篇博客帖子中没有得到任何其他信息,请注意:针对气候变化的机器学习是一场 运动 鼓励基于应用的 机器学习研究,这将有益于地球的长期生态系统(并不是说所有的变化都需要很长时间)。

我将在本文中总结潜在的应用领域,如果读者有兴趣了解更多信息,可以打开文档:

ML 可以通过遥感实现自动监测(例如,通过确定毁林、收集建筑物数据和评估灾后损失)。它可以加速科学发现的进程(例如,为电池、建筑和碳捕获提出新材料)。ML 可以优化系统以提高效率(例如,通过整合货运、设计碳市场和减少食物浪费)。此外,它还可以通过混合建模(例如气候模型和能源调度模型)来加速计算成本高昂的物理模拟。

本质上,遥感、科学发现、能源密集型系统等所有应用领域都有许多未被触及的数据,而机器学习已被证明在任何大数据集中发现模式都非常有用。我把这一点从列表中分离出来,是为了让它变得清晰——单靠计算机科学家无法解决这些问题:

对气候问题采取有意义的行动需要与计算机科学内外的领域进行对话,并可以导致跨学科的方法创新,如改进的物理约束的 ML 技术。

过去十年中开发的机器学习工具在许多领域从数据中提取模式方面取得了令人印象深刻的结果。虽然仍然有许多理由对技术持怀疑态度,但有充分的理由认为一些新工具将在其中一些领域发挥作用。例如,强化学习,通常被认为是不稳定的,难以转移到现实世界,充满了未建模的行为,同时在电网优化中非常有用(示例 1示例 2 )。为什么强化学习在这里起作用:该系统基于非常众所周知的物理学和受约束的变量——所以当 RL 代理做一些奇怪的事情时,它可以很容易地被标记为物理上不可能的,等等(我正在与一些研究生成立一个阅读小组,研究安全或不安全的现实世界 RL 应用的差异,所以如果你是专家,想谈谈,或者有兴趣,请告诉我)。

不过有一个警告,这在考虑如何部署这项技术时至关重要:许多国家没有支撑美国如此多行业的数据基础设施。该论文给出了从美国到印度的能源工厂的不同数据记录的例子——这变成了第二个机器学习问题,即在弄清楚如何优化美国电网之后的 迁移学习

它们呼吁采取行动,这很好地总结了我现在的感受。

。确定你的技能如何有用——我们希望这篇文章是一个起点。

协作。寻找合作者,他们可能是研究人员、企业家、已建立的公司或政策制定者。这里讨论的每个领域都有了解其机会和陷阱的专家,即使他们不一定了解 ML。

。倾听你的合作者和其他利益相关者所说的需要。突破性的技术会产生影响,但对世俗问题的精心构建的解决方案也会产生影响。

展开。确保您的工作部署在可以实现其影响的地方。

如果你想知道你的专业知识可能重叠的地方,看看这个表格。我认为我们有义务解决世俗的问题,因为它们往往是唾手可得的果实。机器学习的从业者可以看看上面,看看自己的技能在哪里有用,然后参考原论文。其他人可以看看左边,然后它会指出哪些 ML 工具在你的领域中最有用,可以学习和利用。

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

来源https://arxiv.org/pdf/1906.05433.pdf

鼓励参与的系统性变革

我们如何鼓励研究人员与实践者合作来解决论文中提到的世俗问题。我知道我的顾问会完全同意我这么做,但顾问和经理的覆盖范围并不一致。我已经谈到了学术系统在激励方面有点破碎,但我想在等式中添加另一个变量:如何鼓励许多学者几乎没有注意到的对社会有益的工作(引用较少,bleh)。

谷歌大脑和脸书人工智能公司的人有动力从事这项工作吗?我应该花 6 个月的时间在这个领域工作,作为一个独立的研究者来占有一些地盘吗?我只是想开启讨论,让人们思考到底是什么限制了在这个领域的花费时间。

创造技术作为研究气候变化的替代方法

我在讨论气候变化时总会想到的另一个问题是,我们能制造出什么样的技术,要么 a)改变公众对“绿色”设备的看法,要么 b)在没有消费者关心的情况下有益于环境(就像特斯拉一样更好)?我从上面的论文中得到的印象是,减轻危害、优化当前基础设施和测量当前系统的影响是降低门槛的方法。我仍然坚持认为,从长远来看,制造改变思维的产品更有益。这里是来自特斯拉的一些统计数据和他们去年的报告

创新气候变化与通过公众认知活动和保护来减缓气候变化的光谱中,你属于哪一种?

2020 年 12 月 11 日或 12 日,用机器学习应对气候变化的研讨会上再见。这是我关于机器人学&自动化、 民主化自动化 的免费时事通讯的一个高峰。

[## 自动化大众化

一个关于机器人和人工智能的博客,让它们对每个人都有益,以及即将到来的自动化浪潮…

robotic.substack.com](https://robotic.substack.com/)

什么是自然语言处理?

原文:https://towardsdatascience.com/what-is-natural-language-processing-86a7123a076b?source=collection_archive---------23-----------------------

首先,我们将简要回顾一下什么是 NLP 以及我们为什么关注它。然后我们将深入研究 NLP 的主要分支及其用例。

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

图片来自皮查拜

人类有些不寻常的地方。

我们有能力完成难以置信的复杂任务。更令人惊讶的是,大多数对我们来说最简单的事情对机器来说却难以置信地难以学习。

你曾经接住过棒球吗?或者在你的衣柜里挑了一件你最喜欢的衬衫?或者对朋友说了一句诙谐的话,逗得他大笑?这些是我们的第二天性。

当然,电脑可以在硬盘上进行近乎无限的计算,而我们却难以估算小费。但是如果你让一台电脑讲一个笑话,如果不打扰的话,通常会有点尴尬!

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

摇滚猴子Unsplash 上拍照

低垂的果实

可以理解的是,数学和机器学习领域在有关硬数字的问题上取得了快速进展:

  • 考虑到 5 年前这套 2 床 1 卫的房子卖了 10 万美元,它大概值多少钱?
  • 假设去年同期有 100 名顾客,那么明天我的餐厅会有多少顾客?

但是,当我们想探究我们主要的交流方式:说和写所面临的问题时,这种轻松就止步了。

我们创造了编码程序来帮助我们像计算机一样进行交流。但是你能想象一个人类用代码互相交流的世界吗?那会非常干燥…

一个程序员去杂货店,他的妻子告诉他,“买一加仑牛奶,如果有鸡蛋,买一打。”

于是程序员去了,买了所有的东西,然后开车回家。

到达后,他的妻子生气地问他:“你为什么买了 13 加仑的牛奶?”程序员说,“有鸡蛋!”

幸运的是,我们将 Python 作为口语的可能性很小。我们可以保留我们所说和所写的语言的美丽和复杂,以及它们的大量词汇、双重含义、讽刺、俚语、缩写和特殊之处!

快速定义

自然语言简单来说就是我们相互交流的方式:语音和文本。

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

克里斯蒂娜·帕帕罗Unsplash 上拍摄的照片

处理指的是让自然语言可用于计算任务。

因此,自然语言处理(NLP)关注的是寻找、消化和理解人类语音和文本。

对于 NLP 从业者来说,自然语言的微妙之处使得 NLP 成为一个非常具有挑战性和非常令人兴奋的领域!

随着时间的变化

NLP 并不总是用人工智能和机器学习来进行的。

解决自然语言问题的最初方法是“硬编码”手写的、基于规则的方法。

例如,英语中的“dog”应该总是翻译成西班牙语中的“perro”。

但是,如果狗是母的呢?好吧,那这个应该翻译成“perra”。

“三伏天”指的是一年中最热的日子吗?“dias de perro”对说西班牙语的人有意义吗?不——在西班牙语中应该是“la canícula”。

我们可以看到手写的规则是如何迅速变得有问题的——这实际上是 20 世纪 NLP 发展短暂停顿的原因。

但是,在大量计算资源和一些数学知识的帮助下,NLP 研究人员设计了解决这些问题的“统计 NLP”方法,这极大地提高了该领域的准确性和实用性。

我们暂时把它留在那里,但要知道这就是为什么 NLP 经常被认为是人工智能/机器学习的一个子领域。

为什么自然语言处理很重要?

如果计算机可以帮助我们理解自然语言,那么我们可以更准确、更便宜地完成大量任务,为人们节省数千小时的繁琐工作。

有一段时间,我在帮助一家大型运输公司做营销工作。每年有数百万人和他们一起去旅行。

该公司对这些旅行者进行抽样调查,通常会问一些问题,范围从 1 到 10(卫生间有多臭?).此外,他们要求自由文本的回答(你的旅行怎么样?还有什么我们应该知道的吗?).

我们收到了成千上万的调查反馈。你能想象作为一名分析师,被指派通读每个回复,试图收集一些有用的信息吗?也许你正坐在一个 Excel 电子表格前,缓慢地记录着一行行的回答,标记着客户是高兴还是生气。

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

图片由 www_slon_pics 来自 Pixabay

这太糟糕了。

相反,我们使用了一种非常简单但强大的方法来自动推断客户调查响应是高兴还是生气——这种做法被称为“情绪分析”。

更明智地利用时间

以前,工人会在这项任务上花费宝贵的时间。或者,更现实地说,公司会直接扔掉文本数据——浪费客户花在填写上的时间,以及任何等待揭示的有用见解。

现在,在几分钟内,这种分析意味着我们可以从 0%到 100%评价成千上万的顾客在他们的旅行中有多开心或生气。然后,我们可以开始解决导致 80%客户投诉的 20%的问题。

这是一个简单的例子——但是很多时候,少量的 NLP 可以节省无数的时间,并提供大量有价值的见解。

因此,我们对 NLP 可以提供的价值有了一些概念。主要的用例是什么?我们还能如何利用 NLP 让世界变得更美好?

自然语言处理的 5 个主要分支

自然语言处理是一个不断发展的领域,新的应用和突破一直在发生。

这当然使得很难将该领域划分为整齐的类别,但是下面的一个分类有助于我们理解许多不同的 NLP 方法:

  1. 句法
  2. 语义学
  3. 话语
  4. 演讲
  5. 对话

1-语法

语法是我们认为理所当然的东西。孩提时代,我们大多是通过听别人遵循我们的语言规则,并试图自己遵循这些规则来学习这些规则。除非语法不正确,否则我们通常看不到它。

句法是一套关于如何组织我们的句子、使用正确的时态、标点符号等的规则。换句话说,你的英语老师会因为你在论文中出错而记下你的分数。

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

没有连句!
图片由 Free-Photos 发自 Pixabay

注意这些句子中有一句似乎很不对:

  • 那只猫一直在寻找那只窜来窜去的老鼠。(好!)
  • 猫们被搜寻着,寻找着逃跑的老鼠。(哎哟!)

NLP 的大部分致力于学习、剖析和重用语法规则。

大多数语法任务都是低级的,它们本身并不是目的,而是产生我们将在下面讨论的高级 NLP 任务中使用的信息。

语法任务的示例

一个例子是词性标注。给定一个词,我们想推断它是名词还是动词等:

  • - >名词
  • 搜索 - >动词
  • - >介词

虽然我们可能并不特别在意“cat”是一个名词,但这一知识对于下游的 NLP 应用程序非常有帮助,比如查找专有名词或总结文本。

与语法相关的 NLP 方法的其他示例包括:

  • 寻找“基本”单词的方法(运行->运行)
  • 创建一个解析树来表示给定文本的语法
  • 分块—例如,将文本分成句子或单词
  • 从给定文本中提取相关术语/关键词

允许我们的机器使用语法构成了(在我看来)更酷的 NLP 应用程序的基础!

我们继续。

2 —语义

“我是鸡蛋男。他们是鸡蛋人。我是海象。”

虽然上面的片段包含了完美的语法,遵循了所有的规则,但是它 是什么意思 ?(也许外面有个披头士的粉丝能给我解释一下。)

文本的意义是语义学的关注点。

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

我们的语言一定有意义。
图片来自pix abaynugroho DWI harta wan

语义任务的示例

与语义有关的 NLP 方法的一个例子是从文本中挑选专有名词的能力。例如,在下面的句子中:

《隔壁邻居 维克多 作品为 梦工厂 梅丽莎 ,他的妻子,供职于 国防部

粗体实体由命名实体识别系统挑选出来,该命名实体识别系统被设计成捕获专有名词。

虽然我们的眼睛很容易识别,但手工编写规则非常困难,尤其是因为系统不仅会找到专有名词,还会标记它们:

  • 维克多,梅丽莎->
  • 国防部->梦工厂组织

有一段时间,我为一家公司工作,该公司想从成千上万份合同中提取人名。

试图找到一个包含所有可能名字的字典,或者让某人手动通读并高亮显示,很容易出错,而且要花很长时间。使用 NER 快速准确地解决了这个问题。

更多语义!

其他一些与语义相关的 NLP 方法包括:

  • 使用数字来表示文本中单词/句子的含义以及它们之间的关系
  • 将文本从一种语言翻译成另一种语言
  • 从结构化数据(行和列)创建人类可读的文本
  • 确定给定图像中的文本(从屏幕截图到 Word 文档)
  • 形成关于给定数据集的问题的答案
  • 决定一个给定文本的正面或负面情绪
  • 将文本分成独立的主题
  • 根据上下文判断歧义词的含义(滚动?吃个寿司?)
  • 举一个上面的例子,我们找到专有名词,找出它们之间的关系(Melissa 是 Victor 的妻子)

语义学是一个蓬勃发展的领域——不用说,在帮助我们的计算机找到文本的意义方面取得了很大进展,反过来帮助我们进行更强大的分析。

3 —话语

怎样才能让某人说服你做某事?

假设你的朋友想去汉堡王。提及以下内容对他们有利:

  • 这食物不贵。
  • 汉堡很多汁。
  • 奶昔有泡沫。

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

不需要太多的劝说!
【图片来自 Unsplash

太好了——你的朋友提出了令人信服的论点!

然后另一个朋友想去温蒂餐厅。他们提到:

  • 外面天气温和。
  • Arby’s 在 48 个州都有营业。
  • 我的鞋子解开了。

你的第二个朋友有点欠缺。他们的想法和建议彼此之间没有什么关系,或者与手头的主题没有什么关系。他们说的话没有连贯性,所以真的没有什么说服力。

在第一个例子中,你的朋友直接与你的进食欲望对话,他们所说的一切都与汉堡王有关。太好了!

最重要的是,自然语言处理中的话语涉及到一组连贯的句子,以及如何实现高质量的、类似人类的交流。

话语任务示例

自然语言处理中的一个重要方法是文本摘要。

通过文本摘要,机器可以自动将任意长度的文本摘要到您喜欢的长度,无论是句子中的文章摘要,段落中的科学论文摘要,还是页面中的书籍摘要。

例如,经常会有这样的情况,专业人士需要通读一大堆文件,但他们阅读每一个单词并不重要。他们只需要要点。

最重要的是,返回的摘要必须内部连贯——这意味着摘要中的句子在逻辑上简洁明了,并且摘要准确地浓缩了原文的信息。

与话语相关的其他自然语言处理方法包括:

  • 哪些提及是指哪些实体?(“他”指的是“维克托”)
  • 对文本类型进行分类(它是一个问题,陈述,断言?)
  • 对文本的质量和连贯性评分(自动论文评分)

当试图训练聊天机器人与人类良好互动并易于理解时,会使用大量话语。如果你在一个化妆品网站上告诉聊天机器人你正在寻找一种好的润肤霜,机器人问你最喜欢的书是什么是无益的。

4 —演讲

迄今为止,我们讨论的大部分内容都与书面文本数据有关,自然语言也包括口语。

因为机器更容易处理书面文字,所以这一类别的主要任务是语音到文本翻译

当你与 Alexa 这样的智能扬声器交谈时,软件会将你的语音转换为书面文字,以便机器可以执行我们之前在上面描述的任务。

在另一个方向,给定一段文本,NLP 实践者可以尝试让机器以令人信服的人声阅读文本。

令人惊讶的是,我们与他人的讲话如此合拍——我们通常能很快察觉到一个机器人在和我们说话。

但是文本到语音的转换越来越好了。谷歌双工机器人的声音已经被证明可以令人信服地对电话另一端毫无戒备的人说话。图灵会很骄傲的!

5-对话

当我们彼此交谈时,我们通常有一个我们想要表达的观点(如果我们没有,我们就不会交谈)。也许我们是想逗对方笑,或者想出去杂货店的路,或者向他们要钱,或者发泄自己的情绪。

简而言之,我们有一些目标。

对话试图在人们(或机器人)相互交谈的背景下解释自然语言的目的。另一个术语是会话知识。

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

“我承认你的意图!
照片由 Wynand van PoortvlietUnsplash 拍摄

例如,总机对话行为语料库包含来自数千个电话的数据。数据集标记了说话者的话语可能具有的多种意图。

*“你为什么不先走”*被归类为“行动指令”——你在告诉某人做某事。

*“你呢?”*是一个“开放式问题”。

“*对不起。”*是“道歉”。

还有我最喜欢的一个:*“嗯哼。”*是一种“承认”。

你可以想象对意图的敏锐理解是如何帮助聊天机器人变得更加自然和令人信服的。这样,它就能说正确的话,让你买润肤霜!

现在是开始学习自然语言处理的最佳时机。我们正在生成比以往任何时候都多的非结构化文本,我们需要回答的问题既复杂又重要。

现在,您已经具备了识别哪些问题属于 NLP 范畴的基础知识。

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

保持下去!
图片来自 Pixabay

不仅如此,您还知道 NLP 的不同分支,这将允许您集思广益,找出解决问题的不同方法,以及从数据中挖掘价值的不同方法。

如果你是这个领域的新手,一个很好的开始方式是选择一个你感兴趣的方法并深入研究——看看你能用它解决什么问题。

最重要的是,坚持阅读和练习。我也会这么做的!

感谢您的阅读!

什么是自然语言处理?自然语言处理简介

原文:https://towardsdatascience.com/what-is-natural-language-processing-a-gentle-introduction-to-nlp-4ed219a768ad?source=collection_archive---------33-----------------------

自然语言处理导论:它是什么,我们如何使用它,我们面临什么挑战,我们有什么工具。

本文原载于 程序员背包博客 。如果你想阅读更多这类的故事,一定要访问这个博客。

更感兴趣?在 Twitter 上关注我,地址是@ b _ dmarius,我会在那里发布每一篇新文章。

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

照片由克里斯蒂安·威迪格Unsplash 上拍摄

自然语言处理或 NLP 是人工智能研究的一个子领域,专注于开发基于自然语言的人类和计算机之间的交互模型和点。这包括文本,也包括基于语音的系统。

几十年来,计算机科学家和研究人员一直在研究这个话题,但直到最近它才再次成为热门话题,这种情况是由研究界最近的突破造成的。

话虽如此,但在本文结束时,你会学到以下内容。

  • 自然语言处理如何工作的基本概述
  • 谁使用自然语言处理,用于什么样的问题
  • 在您的应用程序或业务中使用自然语言处理有哪些挑战
  • 有哪些基本工具可以让你开始使用自然语言处理

自然语言处理是如何工作的

计算机科学中一个普遍接受的事实是,如果我们把复杂的问题分成更小的部分,每个复杂的问题都会变得更容易解决。在人工智能领域尤其如此。对于一个给定的问题,我们构建几个小型的、高度专门化的组件,它们擅长解决一个且仅一个问题。然后,我们将所有这些组件对齐,通过每个组件传递我们的输入,并在线的末端获得我们的输出。这就是我们所说的管道

在自然语言处理的背景下,一个基本的问题是,对于一个给定的段落,计算机准确地理解它的意思,然后可能相应地采取行动。为此,我们需要经历几个步骤。

句子边界分割

对于给定的文本,我们需要正确地识别每一个句子,以便由此产生的每一个句子在接下来的步骤中都可以提取其含义。似乎从一篇文章的每一句话中提取意思,然后把它们放在一起,比试图确定整篇文章的意思更准确。毕竟,当我们说话(或写作)时,我们不一定只指一件事。我们经常倾向于将更多的想法传达给一个人,自然语言的美妙之处(以及对 NLP 的诅咒)在于我们确实可以做到。

一种简单的方法是只在文本块中搜索句点,并将其定义为句子的结尾。问题是句点也可以用于其他目的(例如缩写),因此在实践中,机器学习模型已经被定义为正确识别用于结束句子的标点符号。

单词标记化

这一部分包括从上一步中提取一个句子,并将其分解为包含所有单词(和标点符号)的列表。这将在接下来的步骤中用于对每个单词进行分析。

词性标注

这一步包括从上一步中提取每个单词,并根据它所代表的词类进行分类。这是识别文本背后含义的重要一步。识别名词可以让我们弄清楚给定的文本是关于谁或什么的。然后动词和形容词让我们理解实体是做什么的,或者它们是如何被描述的,或者我们可以从文本中获得的任何其他含义。词性标注是一个困难的问题,但它已经得到了很大程度的解决,并且在大多数现代机器学习库和工具中都可以找到它的实现。

命名实体识别— NER

这项任务是指识别句子中的名称,并根据预定义的类别列表对其进行正确分类。这些类别可能包括:人员、组织、地点、时间、数量等。类别列表可能是为您自己的特定用例定制的,但是一般来说,几乎每个人都需要至少这些类别才能被正确识别。

这类问题有许多实现,最近建立的模型已经达到了接近人类的性能。基本上,这一步也分为两个子任务:正确识别句子中的名字,然后根据你的类别列表对每个名字进行分类。

当然,为了在现实世界的应用中使用,NLP 解决了许多其他任务,但是接下来的步骤是为每个用例以及每个业务需求量身定制的。综上所述,前面介绍的步骤是我们能想到的几乎所有用例的基本步骤。

如何使用自然语言处理

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

Unsplash 上由 BENCE BOROS 拍摄的照片

NLP 被用在各种软件中,各种用例已经被确定为可以通过部署 NLP 模型来解决。其中一些例子是:

  • **虚拟助理:**为了帮助用户完成任务,大多数现代的、强大的个人助理都采用了大量的自然语言处理技术。Siri、Google Assistant 和许多其他软件已经变得非常高效和熟练,通过使用 NLP 领域的最新突破来帮助他们的用户。这意味着他们背后的公司在开发完美虚拟助手的竞赛中投入大量资源进行进一步研究。虽然直到几年前,这些助手都是华而不实,但现在数百万用户正在使用它们,并能够利用它们的解决方案。
  • **机器翻译:**你有没有注意到,最近几年,谷歌翻译在为你翻译文本方面变得更加准确了?这要归功于该领域研究取得的最新进展,谷歌翻译为亿万用户提供了数百种语言的机器翻译。
  • 在我们今天生活的快节奏的社会中,我们经常没有时间把我们讨论的所有事情都记录下来,无论是商务笔记、电话、演讲等等。现在有相当多的初创公司帮助我们解决这类问题,即把声音作为输入,并为我们提供文本,我们可以在此基础上继续并采取行动。

使用自然语言处理的挑战

当然,当使用 NLP 技术时,有相当多的挑战。最重要的是从文本中提取上下文。人类非常擅长理解一个句子的上下文,但计算机只使用统计模型来表示这些句子,所以他们很难理解我们的话到底是什么意思。

例如,当我们说“布什”时,我们可能会提到这种植物或美国前总统。对你来说,识别这种差异可能非常容易,但是计算机必须从流水线开始经历几个步骤,直到决定你使用的是哪一个意思。

NLP 的另一个挑战与第一个挑战有关,即寻找足够的数据来训练我们的模型。与任何其他机器学习模型一样,训练 NLP 模型需要大量数据和大量时间,这意味着只有少数足够大的公司有资源来构建涉及 NLP 的真正强大的应用程序。其他较小的公司采用高度专业化的机器学习模型,这意味着它们只解决所有 NLP 问题的一个子集,为此它们需要少得多的数据。

考虑了所有这些因素后,最终我们正确识别 NLP 模型给我们的业务或应用带来的价值是非常重要的。我们需要看看我们设法建立的模型是否能够真正帮助我们和我们的客户,或者它是否只是一个花哨的功能,以便我们可以说我们是一家机器学习公司。

自然语言处理工具

为了开始学习和开发 NLP 模型,有相当多的库可供开发者使用。好的一面是大多数都是开源的。

  • NLTK —自然语言工具包是一个主要用于研究和教育的 Python 库。它包括许多准备测试和使用模型的步骤。你可以在他们的网站上开始使用。
  • Stanford CoreNLP 是另一个 Python 库,它为理解自然语言提供了广泛的工具。这里可以看到几个例子
  • spaCy 是另一个 Python 库,它利用机器学习和深度学习来帮助你实现许多强大的功能。他们的网站是这里

摘要

在本文中,我们对自然语言处理领域做了一个简单的介绍。我们已经讨论了构建 NLP 管道的一些基本步骤,然后我们看到了谁以及如何使用自然语言处理来增强他们的业务。然后,我们看了一下使用 NLP 的主要挑战,以及我们可以用来了解 NLP 并可能在我们的应用程序中使用它的一些最佳工具。

更感兴趣?在 Twitter 上关注我,地址是@ b _ dmarius,我会在那里发布每一篇新文章。

什么是神经搜索,我为什么要关心?

原文:https://towardsdatascience.com/what-is-neural-search-and-why-should-i-care-4a6cee6b2249?source=collection_archive---------58-----------------------

人工智能搜索更省力,更灵活

神经搜索?那是什么?

简而言之,神经搜索是一种检索信息的新方法。神经搜索不是告诉机器一套规则来理解什么数据是什么,而是通过预先训练的神经网络来做同样的事情。这意味着开发人员不必编写每一个小规则,节省了时间和麻烦,同时系统会不断训练自己变得更好。其中一家提供开源神经搜索框架的公司是纪娜 T2。

背景

搜索是一项大生意,而且每天都在变大。就在几年前,搜索意味着在文本框中输入一些东西(啊,那是雅虎令人兴奋的日子!和 Altavista)。现在,搜索包括文本、语音、音乐、照片、视频、产品等等。就在千年之交之前,每天只有 350 万次谷歌搜索。今天(根据搜索词2020 google searches per day的最高搜索结果),这个数字可能高达 50 亿,并且还在上升,超过 1000 倍。更不用说数百万人每天从手机、电脑和虚拟助手上搜索的数十亿篇维基百科文章、亚马逊产品和 Spotify 播放列表。

只要看看谷歌查询的飞速增长就知道了——而且这只是到 2012 年为止!

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

简而言之,搜索是巨大的 T4。我们将看看搜索方法的卫冕冠军,符号搜索,和勇敢的暴发户竞争者,神经搜索。

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

资料来源:Unsplash 的背景

**注:**本文基于晓寒在他许可下发表的帖子。如果你想了解更多关于神经搜索的技术介绍,可以去那里看看。

符号搜索:规则就是规则

谷歌是一个巨大的通用搜索引擎。其他公司不能仅仅根据他们的需求对其进行改造并将其插入他们的系统。相反,他们使用像 ElasticApache Solr 这样的框架,这些符号搜索系统让开发者编写规则并创建搜索产品、人员、信息或公司需要的任何东西的管道。

让我们以 Shopify 为例。他们使用 Elastic 在数百个类别的数百万个产品中进行索引和搜索。这不能开箱即用,也不能用像谷歌这样的通用搜索引擎来完成。他们必须使用 Elastic 并编写特定的规则和管道,根据各种标准对产品进行索引、过滤、排序和排名,并将这些数据转换为系统可以理解的符号。因此得名,符号搜索。这是一家很受欢迎的运动鞋商店:

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

你我都知道,如果你搜索red nike sneakers你想要红色耐克运动鞋。不过,这些只是典型搜索系统的词汇。当然,如果你输入它们,你就有希望得到你想要的,但是如果那些运动鞋被标记为运动鞋呢?或者甚至被贴上猩红的标签?在这种情况下,开发人员需要编写规则:

  • 红色是一种颜色
  • 猩红色是红色的同义词
  • 耐克是一个品牌
  • 运动鞋是鞋类的一种
  • 运动鞋的另一个名字是运动鞋

或者,用 JSON 表示为键值对:

这些键值对中的每一个都可以被认为是一个符号,因此命名为符号搜索。当用户输入搜索查询时,系统将其分解成符号,并将这些符号与其数据库中的产品符号进行匹配。

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

但是如果用户输入的是nikke而不是nike,或者搜索的是shirts(带有一个s)而不是shirt,会怎么样呢?语言中有如此多的规则,人们一直在打破它们。为了获得有效的符号(即知道nikke实际上意味着{"brand": "nike"},您需要定义许多规则并将它们链接在一个复杂的管道中:

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

符号搜索的缺点

你必须解释每一个。很少。东西

我们上面的示例搜索查询是red nike sneaker man。但是如果我们的搜索者是英国人呢?英国人会打出red nike trainer man。我们必须向我们的系统解释,运动鞋和运动鞋只是名称不同的一样东西。或者是有人在搜索什么LV handbag?必须告诉系统LV代表Louis Vuitton

对每一种产品都这样做需要花费永远的时间,而且总有东西会被遗漏。如果你想本地化为其他语言呢?你得从头再来一遍。这意味着大量的辛勤工作、知识和对细节的关注。

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

它是易碎的

文本是复杂的:正如我们上面解释的,如果用户在red nikke sneaker man中输入,经典的搜索系统必须识别出他们正在搜索一个红色的耐克(纠正拼写的品牌)男式运动鞋(类型)(子类型)。这是通过管道将搜索字符串和产品细节解释为符号来完成的,这些管道可能会有重大问题。

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

  • 链中的每个组件都有一个输出,作为输入提供给下一个组件。因此,在流程的早期出现问题会破坏整个系统
  • 一些组件可能从多个前任获取输入。这意味着你必须引入更多的机制来阻止它们相互阻塞
  • 很难提高整体搜索质量。仅仅改进一两个组件可能不会导致实际搜索结果的改进
  • 如果你想用另一种语言搜索,你必须重写管道中所有依赖于语言的组件,增加了维护成本

神经搜索:(预)训练,不解释

一种更简单的方法是建立一个基于现有数据的搜索系统。如果你事先在足够多的不同场景下训练一个系统(即预训练模型),它会发展出一种找到匹配输入的输出的通用能力,无论它们是南方公园的线还是神奇宝贝。您可以将该模型直接插入您的系统,并立即开始索引和搜索。

代码非常简单。它加载一个“流”,该流又加载一系列模块来处理、索引和查询您的数据:

这样,你就不需要浪费时间为你的用例编写无尽的规则。相反,只要在你的代码中加入一行代码,从“应用商店”下载你想要的模型(就像即将到来的纪娜中心),然后开始。

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

与符号搜索相比,神经搜索:

  • 移除脆弱的管道,使系统更具弹性和可扩展性
  • 找到一种更好的方法来表示产品和搜索查询的底层语义
  • 一边学习,一边进步

神经搜索有用吗?

如果搜索能够理解并返回高质量的结果,则该搜索“有效”:

  • **简单查询:**如搜索“红色”、“耐克”或“运动鞋”
  • **复合查询:**像‘红色耐克运动鞋’

如果它连这些都做不到,那么检查拼写检查和使用不同语言的能力就没有意义了。

总之,少说话,多寻找:

🇬🇧 nike

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

🇩🇪 nike schwarz (different language)

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

🇬🇧 addidsa (misspelled brand)

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

🇬🇧 addidsa trosers (misspelled brand and category)

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

🇬🇧 🇩🇪 kleider flowers (mixed languages)

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

所以,你可以看到,神经搜索做得很好!

比较符号搜索和神经搜索

那么,神经搜索与符号搜索相比如何呢?让我们来看看各自的优缺点:

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

我们并不试图在团队象征和团队神经之间做出选择。这两种方法都有各自的优点,并且可以很好地互补。因此,更好的问题是:哪一个适合您的组织?

自己试试神经搜索

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

测试一项技术的最佳方式莫过于一头扎进去玩一玩。纪娜提供预先训练好的 Docker 图像和 jinabox.js ,这是一个易于使用的搜索文本、图像、音频或视频的前端。目前还没有产品搜索的例子,但是你可以搜索更多轻松的东西,比如你最喜欢的神奇宝贝或者《南方公园》里的台词。

Geopandas 0.70 有什么新特性?

原文:https://towardsdatascience.com/what-is-new-in-geopandas-0-70-dda0ddc90978?source=collection_archive---------26-----------------------

主要变化和新的改进,带有示例和代码说明。

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

Geopandas 是用 Python 进行地理空间数据科学的主力,它扩展了 pandas 的数据类型来执行空间数据操作。Geopandas 0.70 于昨天 2 月 17 日刚刚发布,它带来了一些重大的变化和改进。

我在这里重点介绍了 Geopandas 0.70 的一些最佳新特性。

原生剪辑功能

通过将地理数据框裁剪到其他形状的空间范围的固有功能,裁剪变得非常容易。裁剪是最常用的地理空间数据处理功能之一;然而,在以前的版本中,Geopandas 没有执行它的直接函数。如果您想要地理数据的特定区域,您必须执行裁剪以获得感兴趣的区域。

现在有了新的geopandas.clip功能,您可以轻松地按照提供的空间范围裁剪数据。让我们看一个例子。

import geopandas as gpd
import matplotlib.pyplot as plt
from shapely.geometry import Polygon, LineString
gpd.__version__'0.7.0'

我们使用 Geopandas 作为可用的数据集,首都城市,世界边界。此外,我们将非洲划分为子集,并创建一个多边形来标记我们感兴趣的空间范围。

capital_cities = gpd.read_file(gpd.datasets.get_path(“naturalearth_cities”))world = gpd.read_file(gpd.datasets.get_path(“naturalearth_lowres”))africa = world[world[“continent”] == “Africa”]poly = Polygon([(-35, 0), (-35, 60), (60, 60), (60, 0), (0, 0)])polygon = geopandas.GeoDataFrame([1], geometry=[poly], crs=world.crs)

让我们在一个图像中看到所有的数据。

fig, ax = plt.subplots(figsize=(12,10))world.plot(ax=ax)africa.plot(ax=ax, edgecolor=”black”, color = “brown”, alpha=0.5)capital_cities.plot(ax=ax, color=”Red”)polygon.boundary.plot(ax=ax, color=”Red”)

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

所有数据的映射

首都标为红点,非洲标为绿色。红色矩形显示了我们感兴趣的范围。

现在,如果我们只想从世界边界中裁剪红色矩形的一部分,您可以调用geopandas.clip并提供两个地理数据框。首先,world 世界边界和polygon范围。

clipped = gpd.clip(world, polygon)fig, ax = plt.subplots(figsize=(12,10))clipped.plot(ax=ax, color=”gray”);

如下图所示,你可以看到被剪切的区域,非洲、欧洲和亚洲的部分地区。

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

剪裁的边界

您不仅可以使用此函数多边形和多边形,还可以使用其他数据类型,如线和点。

读取文件时过滤行

对于当前的大数据集,在读取数据的同时过滤行的能力是必不可少的。想象一下,有一个包含数百万行的数据集,由于内存问题而无法读取。有了这个新功能,您可以在读取数据之前提供行或切片来过滤数据。

让我们看一个例子。

cities_filtered = gpd.read_file(gpd.datasets.get_path(“naturalearth_cities”),**rows=30**)

这将只读取数据的前 30 行。如果想从中间切片,可以加切片。

cities_filtered_slice = gpd.read_file(gpd.datasets.get_path(“naturalearth_cities”),**rows=slice(10,30)**)

只有 10 到 30 之间的行才返回上面的代码。

地块几何图形集合

无法绘制几何图形集合数据,例如不同数据类型(点、线或多边形)的数据。使用当前版本,您可以打印各种几何对象集合。让我们看一个例子。

a = LineString([(0, 0), (1, 1), (1,2), (2,2)])b = LineString([(0, 0), (1, 1), (2,1), (2,2)])x = a.intersection(b)gc = gpd.GeoSeries(x)type(x)shapely.geometry.collection.GeometryCollection

ab只是普通的 LineString,但是它们的交集返回一个几何图形的集合(线和点)。如果您从 x 中的几何图形集合中创建了一个Geoseries,现在您可以用 Geopandas 绘制它。请参见下面的示例。您在同一个地理数据框中绘制了点和线。

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

用 Geopandas 绘制的几何图形集合

PROJ 6 号取代 PROJ 4 号

Geopandas 0.70 版本开始使用新的投影接口。PROJ 6 取代了 PROJ4,带来了更好的界面和更多的信息。

以前gpd.crs只返回这样一个字符串。

{'init': 'epsg:4326'}

但是,当前版本带来了大量关于数据地理投影的元数据。

world.crs

返回以下有用信息

<Geographic 2D CRS: EPSG:4326> Name: WGS 84 Axis Info [ellipsoidal]: — Lat[north]: Geodetic latitude (degree) — Lon[east]: Geodetic longitude (degree) Area of Use: — name: World — bounds: (-180.0, -90.0, 180.0, 90.0) Datum: World Geodetic System 1984 — Ellipsoid: WGS 84 — Prime Meridian: Greenwich

例如,如果要访问投影的数据,可以调用。

world.crs.datum

结果只显示了这一部分

DATUM[“World Geodetic System 1984”, ELLIPSOID[“WGS 84”,6378137,298.257223563, LENGTHUNIT[“metre”,1]], ID[“EPSG”,6326]]

还有一些其他的改进或错误修复没有在本文中提及,但是值得一提。Geopandas 中的空间连接现在可以正确处理 Multindex 并保留左侧地理数据框的索引名称。将文件写入磁盘时,如果需要,现在可以保留索引。此版本现在可以绘制缺少数据的 choropleth 地图。

结论

感谢当前版本的所有贡献者。Geopandas 0.70 在地理空间数据科学过程中带来了许多改进。得益于此版本,现在可以在读取和绘制多几何图形数据时进行裁剪、过滤数据。Proj 6 还带来了一个更好的用户界面,其中包含地理空间世界中最不为人所知的主题之一,地理投影。

这篇文章的代码可以在这个 Google Colab 链接中找到。

[## 谷歌联合实验室

编辑描述

colab.research.google.com](https://colab.research.google.com/drive/1wPJlGuT4BTISiCo8rYd01BJEG6TC-nBQ)

什么是一键编码以及如何使用熊猫 get_dummies 函数

原文:https://towardsdatascience.com/what-is-one-hot-encoding-and-how-to-use-pandas-get-dummies-function-922eb9bd4970?source=collection_archive---------2-----------------------

一个完整的初学者一键式编码教程

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

照片由希望之家出版社——皮革日记工作室Unsplash 拍摄

我一直在问机器学习中的一些概念以及它们的真正含义,例如,在我以前的一篇文章谷歌实践机器学习的 7 个步骤中,有人问我什么是一键编码,我们应该什么时候使用它?这是一个很好的问题,每个机器学习实践者都需要知道答案,所以让我们来讨论一下这个问题,并使用 Pandas get_dummies()深入了解一些代码。

1.什么是一键编码?

在机器学习的数据处理步骤中,我们通常需要在输入机器学习模型之前以特定的方式准备我们的数据。其中一个例子是对分类数据执行一次性编码。

一种热编码是应用于分类数据的数据处理过程,将其转换成用于机器学习算法的二进制向量表示

为什么以及什么时候我们应该使用一次性编码?

机器学习的一个主要问题是许多算法不能直接处理分类数据。分类数据[1]是可以取有限数量的可能值之一的变量。一些例子是:

  • 人的性别 :
  • 航空旅行舱 : 头等舱公务舱经济舱
  • 电脑厂商 : 联想惠普戴尔苹果宏碁华硕其他

因此,我们需要一种方法来将分类数据转换为数字形式,我们的机器学习算法可以将其作为输入。最广泛使用的编码技术是:

  1. 整数编码:将数值编码为整数。
  2. 一键编码:将数值编码为二进制向量数组。
  3. 虚拟变量编码:同 One-Hot 编码,但少一列。

在上面的例子中,分类变量中的每个值代表一个不同的类别。一些类别可能彼此具有自然关系(称为自然排序)。航空旅行等级变量确实有自然的值排序。这种类型的分类变量被称为 序数变量序数变量在机器学习中应该区别对待,因为序数一般都带有某种意义。在航空旅行等级的情况下,更高等级的乘客往往更富有,年龄也更大。整数编码用于将序数变量转换为数值数据,例如

头等舱为 1,公务舱为 2,经济舱为 3

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

整数编码表示

整数值之间具有自然的有序关系,机器学习算法可以学习这种关系[2]。

对于不存在这种顺序关系的类别变量,整数编码可能会导致较差的性能或意外的结果[2]。幸运的是,一键编码是对抗这种情况的一种方法。一键编码简单地为每个可能的值创建一列,并在适当的列中放置一个1。下面是等效的独热编码表示。

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

独热编码表示

通过一键编码,二进制向量数组表示允许机器学习算法利用包含在类别值中的信息,而没有由普通性引起的混淆。

但是,一键编码有一些冗余。例如,在上面的例子中,如果我们知道某个乘客的机票不是头等舱也不是经济舱,那么它一定是公务舱。所以我们只需要使用这三个虚拟编码变量中的两个作为预测器。更一般地,所需的伪编码变量的数量比可能值的数量少一个,即K-1。在统计学中,这被称为 虚拟编码变量 ,或虚拟变量。下面是等效的虚拟编码变量表示:

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

虚拟编码变量表示

哑元编码变量 是统计学中避免 哑元陷阱 的标准建议,然而,在机器学习的世界中,更推荐一键编码,因为哑元陷阱在应用正则化时并不是真正的问题[3]。

2.如何使用熊猫 get_dummies()函数?

在我们开始学习教程之前,让我们先来看一个我们可以使用的示例数据集。在本教程中,我们将处理来自 Kaggle 的泰坦尼克号数据集。这是一个非常著名的数据集,通常是学生学习机器的第一步。让我们导入熊猫并加载数据来开始。

import pandas as pd**def load_data():
    return pd.read_csv('data/train.csv')**df = load_data()
df.head()

我们创建了一个函数load_data()来将 train.csv 文件加载到 pandas DataFrame 中。

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

泰坦尼克号数据预览

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

数据字典来自 Kaggle

2.1 创建一次性编码变量

假设我们想要为性别列创建一个一次性编码变量。下面是我们如何创建它。

pd.get_dummies(**df.Sex**)

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

它的作用是为每一个可能的值创建一列,这是性别的两个可能值。它通过在适当的栏中放一个1来告诉你它是雌性还是雄性。

一般来说,如果一个分类变量有K个可能值,我们将得到K列来表示它。

2.2 创建虚拟编码变量

在一键编码中有一些冗余。例如,在上面的性别一次性编码中,一个人要么是男性,要么是女性。所以我们只需要使用这两个伪编码变量中的一个作为预测器。更一般地说,所需的伪编码变量的数量比可能值的数量少一个,这就是K-1。在统计学中,这被称为 虚拟编码变量 ,或虚拟变量

默认情况下,get_dummies()不做也不做哑编码,而是一键编码。为了从数据帧中产生一个实际的伪编码,我们需要传递drop_first=True

pd.get_dummies(df.Sex, **drop_first=True**)

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

虚拟编码

2.3 向列名添加前缀

默认情况下,get_dummies()使用变量值作为列名。比如上面性别一栏中的 例子。为了识别虚拟变量的来源,我们可以使用prefix参数。例如:

pd.get_dummies(df.Sex, **prefix='Sex'**)

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

2.4 对于具有两个以上可能值的变量

现在,让我们试着对一个有两个以上可能值的变量进行一次性编码。例如,有一个开始于列,我们可以做value_counts() 来检查它的不同值。

df.Embarked.**value_counts()****S    644
C    168
Q     77**
Name: Embarked, dtype: int64

让我们用get_dummies()来表示

pd.get_dummies(**df.Embarked**, **prefix='Embarked'**)

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

2.5 连接到数据框

您可能会想,我们仍然需要将一次性编码变量附加到数据帧上。为此,我们首先将输出分配给一个名为embarked_dummies的变量

**embarked_dummies** = pd.get_dummies(df.Embarked, prefix='Embarked')

然后,我们使用pd.concat()embarked_dummies连接到数据帧df

df = pd.**concat**(**[df, embarked_dummies]**, axis=1)

pd.concat()的工作方式是我们可以并排连接列,或者一行接一行。所以在这种情况下,我们沿着列(axis =1)连接dfembarked_dummies。最后,我们改写原来的df

通过运行df.head(),我们可以看到现在已经有了Embarked_CEmbarked_QEmbarked_S

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

pd.**concat**(**[df, embarked_dummies]**, axis=1)的输出

2.6 将数据帧传递给 get_dummies()

我们已经向get_dummies()传递了一个序列,但我们将传递一个数据帧。

df = load_data() # reset dataframe
df = pd.get_dummies(**df**, **columns=['Sex', 'Embarked']**)

df是一个数据帧。我们传递给columns一个列表,并告诉它性别已出发是我们想要虚拟的列。

通过运行df.head(),我们可以看到原来的列和上船列不见了,取而代之的是虚拟列。

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

好了

感谢阅读。

请在我的 Github 上查看笔记本的源代码。

如果你对机器学习的实用方面感兴趣,请继续关注。

参考

什么是运筹学?

原文:https://towardsdatascience.com/what-is-operations-research-1541fb6f4963?source=collection_archive---------1-----------------------

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

俯视一个非常优化的停车场。伊万娜·卡金娜在 Unsplash 上的照片

运筹学领域的综合介绍

运筹学导论

运筹学,也称为决策科学或运营分析,是将数学应用于商业问题的研究。作为应用数学的一个子领域,它与数据科学和机器学习等其他领域一样,有着非常有趣的地位。

运筹学回答哪些问题?

在进入运筹学的真正定义之前,让我们看几个应用例子。正如您将看到的,它们都有一些共同点:我们将在后面讨论。

运筹学实例:

1.线性规划

如果你在学校上过数学课,你可能遇到过线性方程,你可能已经学会了如何用纸和笔来解决这些问题。线性规划是一种用线性目标函数解决线性约束系统的优化技术。这是运筹学中最著名的方法。

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

排队论:避免排长队,也避免人浮于事。照片由哈尔·盖特伍德Unsplash 拍摄

2.等待线理论或排队论。

运筹学的第二个课题是排队论。也许没有前面的例子那么明显,但是排队也可以用数学术语完美地描述。一旦做到这一点,排队论允许企业了解并改善客户的排队时间,同时进行劳动力管理。

排队论的另一个重要应用是计算机操作系统的任务调度,尽管这与本文讨论的其他应用相差甚远。

3。库存控制系统

运筹学解决的下一个课题是库存控制。公司的库存控制是复杂的,取决于许多决策,例如采购、仓储、运输、跟踪等等。

库存控制系统重新组合不同的解决方案,解决一个组织的全部库存任务。库存管理最常用的算法是经济订货量(EOQ)、库存生产量(IPQ)和 ABC 分析法。如果你想更深入地了解库存管理,你绝对应该看看这些。

4。更换问题

我希望在这一点上,运筹学中处理的问题类型已经对你越来越清楚了。更换问题与前面的比较:优化更换已知使用一定时间后失效的材料。对于机器、汽车、电脑等昂贵的物品,如果更换得太晚,公司会付出巨大的代价,如果更换得太早,也会付出巨大的代价。因此,这也是一个用运筹学优化的好问题。

5.网络分析

网络分析是一个与前面列出的项目相对不同的主题。

在网络分析中,应用程序被表示为要优化的图。在一般的图论中,图是由节点和边组成的。每个节点是一个点,每条边表示某些不同节点之间是否有联系。这类数据的一个很好的例子是社交媒体网络,其中每个人(个人资料)被表示为一个节点,每个友谊关系被表示为一条边。

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

道路网络可以用图形来表示。 Denys NevozhaiUnsplash 上拍照。

在运筹学中使用它的一个例子是项目管理。当谈到项目管理时,我们可能都知道著名的甘特图,它允许对项目中的步骤和步骤之间的依赖关系进行更多的概述。

但是每当一个项目非常复杂时,任务之间就会有许多依赖关系:如此多的依赖关系使得确定最佳路径变得复杂。运筹学的两种方法是关键路径法(CPM)和项目评估和评审技术(PERT)法。

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

借助运筹学,将您的货物摆放整齐。Guillaume Bolduc 在 Unsplash 上拍摄的照片

6.排序问题

我最后想列出排序问题。本主题讨论如何定义大量操作的顺序,以便用有限的资源执行这些操作。在这种情况下,我们可以从许多不同的执行顺序中进行选择,我们希望确保选择最佳顺序。根据所选的成本函数,您可以优化操作的总持续时间或成本或收益。

许多排序方法是先来先服务(FCFS)、最短处理时间(SPC)、最早到期日(EDD)等等。

尽管运筹学的应用越来越多,但我认为总体思路现在已经很清楚了,我将继续对这一主题进行更正式的描述。

运筹学的定义

运筹学使用数学和统计学来回答最优化和模拟问题。每当我们将一个商业问题转化为优化问题时,最基本的是我们有一个最小化成本或最大化收益的清晰定义。

任何运筹学课题的三大关键:

1.算法和统计

我已经在上面写了:运筹学将严重依赖算法、数学和统计学。运筹学中一个非常重要的算法家族是优化算法:在给定一组可能性的情况下,试图找到最大值或最小值的算法。

作为这方面的一个例子,我们可以使用一个优化算法来最小化工厂的人员配备成本,给定一组对所需人员数量的约束,以及对每个员工的约束。

2.最佳化

考虑到潜在的实际限制,找到问题的最佳解决方案。优化可以是在开始之前就决定的成本或收益的最大化或最小化。

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

优化。照片由艾萨克·史密斯Unsplash 拍摄。

有可能有多个目标,在这种情况下,我们可以通过应用不同成本的权重来定义组合成本函数(例如,将两个成本之和最小化可以是组合成本函数的一个示例)。

在这些优化中,第二个经常出现的问题是约束。有时,寻求成本最小化的算法可能会以实际上不可能的方式寻找解决方案。例如,当寻找最佳员工计划时,我们希望约束算法来计划 24 小时轮班的人员,因为这是非法的。

3.模拟

模拟实际上是一项类似于优化的任务。与其问算法什么是最好的员工计划,我们还可以问算法改变计划会有什么影响。这种类型的任务接近优化,因为我们可以简单地使用不同输入配置的优化算法来模拟不同输入的最佳结果。

简而言之,运筹学是将数学应用于商业问题,目标是优化和/或模拟。我希望这篇文章已经为你澄清了一些事情。感谢您的阅读,请不要犹豫,继续关注更多内容!

什么是光学音乐识别?

原文:https://towardsdatascience.com/what-is-optical-music-recognition-6515d8a53e01?source=collection_archive---------33-----------------------

我们能让机器读懂音乐吗?

我一直热衷于获取计算机视觉方面的知识,同样,音乐也是我生活中很重要的一部分。结合起来,它们构成了一个伟大的研究问题!四个月前,我开始了为期四年的博士课程。到目前为止,就我学到的知识和学习更多知识的热情而言,这是一次疯狂的旅程。

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

莎拉Unsplash 上拍摄的照片

我正在进行的研究问题是光学音乐识别(OMR),更明确地说,是调查深度学习是否可以帮助提高当前方法的性能。

为了让你们更好地理解这个问题,我将尝试阐明什么是 OMR,所使用的传统方法以及未来需要解决的主要问题。

到目前为止,我们大多数人大概都用过谷歌翻译和它的相机翻译功能。仅仅是拍一张文字的照片,我们就节省了时间,也避免了学习中文或其他语言。现在让我们想想这个特性如何应用于音乐。音乐家仍然在乐谱或白纸上写作。然而,如果他们想分享他们的音乐,他们必须把它转录到电脑里。计算机可读的音乐文件将更容易访问。因此,这项研究背后的动机是允许作曲家、音乐家不仅通过拍摄活页乐谱的照片来转录和编辑音乐,而且最终分享和演奏他们的作品。OMR 还将协助音乐统计,并使搜索符号,类似于搜索文本。

卡尔沃-萨拉戈萨等人对 OMR 给出了一个非常清晰和包容的定义,称之为一个研究领域而不是一个简单的问题。

光学音乐识别是研究如何通过计算读取文档中的音乐符号的研究领域。

定义的第二部分强调了 “通过计算读取文档中的音乐符号” ,假设它是由计算机(而不是人类)执行的,它不涉及音乐符号模型本身,但它建立在这一知识的基础上。此外,它强调了由这些系统捕获的信息,我将在下面的部分中更详细地解释这些信息。

该研究领域于 20 世纪 60 年代末在麻省理工学院建立,使用扫描印刷的乐谱。该领域的先驱是藤永一郎、尼古拉斯·卡特、吴起亚、大卫·班布里奇和蒂姆·贝尔。他们的工作仍然是今天研究的极好基础。OMR 与音乐信息检索、计算机视觉和文档分析等其他领域相关。

根据已开展的研究,形成了反映解决问题方法的标准管道(见图 1)。

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

图一。标准的 OMR 管道(图片由作者提供)

这个管道的通常输入是打印/手写乐谱的扫描/图片。这些图像然后经受图像处理技术。这些技术包括二值化(黑和白)、模糊、去歪斜(旋转),并且将有助于减少图像中的噪声。

增强的图像接下来将用于音乐对象识别。在这一步中,算法将尝试识别音乐对象,如谱号、音符头、小节、圆滑线等。在这个阶段,对象是原语,并与它们的语义相分离。

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

图二。用更快的 R-CCN 检测物体(来源:https://github.com/apacha/MusicObjectDetector-TF

因此,下一步试图重建这些原语之间的关系以及语义。这种方法基于音乐中存在的语法规则重建语义。

最终输出可以表示输入中乐谱的音乐含义和描述,并且是机器可读的。这些文件的常用格式可以是 MIDI、MusicXML、MEI 等。

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

文件格式输出示例(图片由作者提供)

我们希望利用深度学习(DL)来探索执行这些步骤的新方法。大多数 DL 模型建立在人工神经网络上。这些网络受到生物神经网络的启发。它们由许多层组成,这些层具有所谓的节点;它们包含一个输入层、一个或多个隐藏层和输出层。越深入,模型可以学习和提取的复杂特征就越多。中间的隐藏层通常被称为“黑盒”这是因为我们不容易理解内部发生了什么,尽管新的研究正在关注这一点。

我们计划首先在 OMR 的第二阶段,即音乐对象检测中应用这种方法。要做到这一点,我们需要一个包含乐谱图像的庞大数据集。这个数据集还应该有一个基础事实,以便模型可以从中很好地学习。一部分数据,称为测试数据,不应该被模型看到。通过这种方式,我们可以评估模型在它从未见过的事物上做得有多好。这个模型应该根据实验的性质、输入和期望的输出来设计。我们还建议将输入、输出及其评估的格式标准化。

参考资料:

A.雷贝洛、I. Fujinaga、F. Paszkiewicz、A. R. S. Marcal、C. Guedes 和 J. S. Cardoso,“光学音乐识别:最新技术和开放问题”, Int J Multimed Info Retr ,第 1 卷,第 3 期,第 173-190 页,2012 年 10 月。【在线】。可用信息:http://link . springer . com/10.1007/s 13735–012–0004–6

J.Calvo-Zaragoza,J. Hajicˇ Jr .,A. Pacha,《理解光学音乐识别》,arXiv:1908.03608【cs,eess】,2019 年 8 月,arXiv:1908.03608。【在线】。可用:【http://arxiv.org/abs/】T41908.03608

帕查、亚历山大、扬·哈吉和豪尔赫·卡尔沃-萨拉戈萨。"深度学习的一般音乐对象检测的基线."应用科学 8.9 (2018): 1488。

p 值是什么的简称?

原文:https://towardsdatascience.com/what-is-p-value-short-for-no-seriously-c548200660a?source=collection_archive---------7-----------------------

重命名那个讨厌的小数字,并重新学习如何使用它

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

p 代表概率吗?

从技术上讲, p 值代表概率值,但是由于所有的统计都是关于处理概率决策,这可能是我们能给它的最没用的名字。

相反,这里有一些更有趣的候选人名字供你娱乐。

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

痛苦值:他们让你在课堂上计算,没有给你适当的解释;难怪你的大脑会受伤。这一类的荣誉奖还包括困惑值困惑值惩罚值

讨厌的值/有问题的值:统计学家已经厌倦了看到无知的人滥用 p 值,他们中的一些人希望看到 p 值被废除。他们希望他们可以震撼人们,大喊,“这是个人决策的工具,而不是你认为的那种其他的东西!”

**说服价值:**我一会儿会解释,试图用 p 值来说服某人是一个危险的赌注,你的受害者比你更无知。如果你打算诉诸 p 值来增加你的信息的趣味,我可以建议你用拉丁文重写你所有的论点吗?

**可发表的价值:**说到滥用 p 值的方法,如果你是那些“科学家”中的一员,毫无悔意地折磨(“p-hacking”)你的数据,直到它承认你认为会给学术期刊的审稿人留下深刻印象的那种 p 值,你就是问题的一部分,而不是解决方案。

如果你认为学术界是唯一一个你的薪水取决于你创造好看的 p 值的地方,那你再想想吧!

**妙语值:**经典统计推断归结为问 “我们收集的证据是否让原假设看起来很可笑?”p 值是笑点,用一个小数字总结了这个大测试问题的答案。

**似真值:**p 值越高,你的证据看起来就越可信,在这个世界里,我们不会完全疯狂地坚持我们的默认行为。请注意,这是关于你的证据在一个特定的世界中的合理性…而不是那个世界本身的合理性!

**被动值:**你的 p 值越高,你改变主意的理由就越少。继续做你被动计划要做的事情。要了解原因,请继续阅读。(但请记住,缺乏证据与缺乏证据并不是一回事。无声烟雾报警器并不总是意味着没有火灾。)

如果你喜欢视频,这里是第一部分:什么是 p 值?这可能会让你认为 p 可能是“小狗”的简称…

p 代表笑点!

还记得我们如何把统计推断归结为一句话吗?那是:

我们收集的证据让我们的零假设看起来可笑吗?

p 值是这个问题的笑点。它用一个小数字总结了答案。p 值越低,零假设看起来越荒谬!

那么,我们如何把答案变成是或不是呢?我们只是提前设定了一个门槛,来表明什么事情可笑到足以改变我们的想法。该阈值的别称是 显著性水平 。如果 p 值低于它,那就改变你的想法。如果没有,继续做默认情况下你乐意做的事情。

是什么和它做什么

p 值的一个奇妙之处在于,它们使用起来很简单,而且相对安全……如果你为你的零假设假设选择了正确的测试。(这是一个很大的如果!)但是不要忘记,你刚刚学到的是他们的事,而不是他们的事。

不要犯试图在简洁的一行程序中理解它们是什么的错误。

它们一些奇怪的东西:关于一个特定假想宇宙中样本的概率陈述。它们绝对不是你想要它们成为的那种直截了当的东西;它们不是为了直观解释或简洁描述而设计的。它们是用来读取假设检验的输出的。

那么,他们是什么*?要明白这一点,你需要理解我们是如何计算它们的。我已经在我的其他文章中写过,例如这里,所以我将坚持在这里总结一下。*

总结:如何获得 p 值?

计算 p 值有五个步骤。

  1. 选择默认动作
  2. 陈述零假设
  3. 陈述关于零假设所描述的世界如何运作的假设。
  4. 制作一个世界模型(使用方程式或模拟)——这是统计学家的主要工作。
  5. 找出这个世界咳出证据的概率至少和我们在现实生活数据中看到的一样糟糕。

第 2 部分:如何获得 p 值?

总结:你如何使用 p 值?

  1. 将其与 显著性水平 进行比较。
  2. 如果 p 值低于显著性水平**,请改变您的想法。否则,只要继续做你打算做的事情,如果你从来没有分析过任何数据。**

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

如何使用 p 值来获得假设检验的结果。(没有人会怀疑我的 xkcd 是山寨货。缺乏幽默不会引起任何人的警觉。)

第 3 部分:如何使用 p 值?

总结:简短说明

一个 p 值问道,“如果我生活在一个我应该采取我的 默认动作 的世界里,我的证据有多令人惊讶?”p 值越高,我对坚持计划行动的感觉就越不荒谬。如果 p 值足够低,我会改变主意,做点别的。

争议值/极化值: 如果你想了解关于 p 值争议 并阅读我对 p 值原因的所有情绪的看法,请查看本系列的下一篇文章: 为什么 p 值像针一样?

第 4 部分:用这个总结来检验你的理解!

使用 p 值的最安全方式

为了解释 p 值,您必须了解假设和零假设的每个细节。如果你得不到这些信息,那么对低 p 值的唯一有效解释就是:“有人对某事感到惊讶。”如果你不太了解正在讨论的某人某事*,让我们都来思考一下这能告诉你多少。*

将低 p 值解释为:“某人对某事感到惊讶。”

试图用 p 值来说服某人是一个危险的赌注,你的受害者比你更无知。那些明白这是什么的人可能不会欣赏你试图侮辱他们的智慧。

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

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

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

与凯西·科兹尔科夫联系

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

什么是流程挖掘?

原文:https://towardsdatascience.com/what-is-process-mining-8afae06b5c33?source=collection_archive---------25-----------------------

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

弗兰基·查马基在 Unsplash 上拍摄的照片

一种分析方法,旨在基于事实数据构建详尽客观的流程愿景

背景和问题

在企业环境中,许多业务流程部分甚至完全由 IT 系统支持:流程的数字化代表越来越多的活动,由越来越多的系统支持,产生越来越多的数据。

话虽如此,询问研究过程的传统方法是否仍然足够是合理的:

  • 记录目标流程的愿景是否足以让流程在实践中得以实施
  • 当察觉到与模型的偏差时,从主观角度寻求团队一致意见是否是最佳选择?
  • 是否可以测量流程从开始到结束的实际执行速度

过程挖掘提供了一种新的方法来考虑这些因素。

第一个定义

流程挖掘是一种分析方法,旨在基于事实数据构建详尽且客观的流程愿景

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

流程挖掘处于数据挖掘和业务流程管理的十字路口

因此,过程挖掘是一种高附加值的方法,当涉及到建立一个过程的实际实施的观点,并确定与理想过程的偏差,瓶颈和潜在的过程优化时。

它是如何工作的?

无论流程的性质如何,一旦得到数字工具的支持,信息就会被相应的 it 系统 (ERP、业务应用程序等)创建和存储。),尤其是通过应用程序日志。这些存储的信息通常具有相似性,并使得**有可能在不同的时间通过不同的阶段来追踪“物体”**的路径。

流程挖掘基于工具,这些工具使用这些数字足迹来重建、可视化和分析流程,从而为真实流程提供透明度和客观性。

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

流程分析基于应用程序日志

所需数据

为了可用,这些数字足迹必须至少包括:

  • Object :在整个流程中被跟踪的实例,具有唯一的标识符。这个对象的选择影响了所研究过程的范围
  • 活动:学习过程中的一个步骤。活动的选择会影响流程的粒度
  • 日期:决定活动的顺序和时间

此外,根据流程收集额外数据可能会很有趣,例如:供应商、产品类型、位置、人员/管理、渠道、价值……这些将允许进一步调查

过程可视化和分析

从这些数据中,可以看到理想过程的表示和所有偏差**。这样可以及早发现流程中潜在的低效率。**

除了过程的表示,还可以查看每个步骤的执行时间,或者查看更有限的范围,以便识别过程在哪里、何时以及为什么偏离其理想版本

采购流程示例

对于由 4 个步骤组成的简化采购流程(“记录订单”、“接收货物”、“记录发票”和“支付发票”),订单遵循的流程可从 ERP 中留下的数字足迹中追溯。

剥削数字脚印:

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

过程可视化:

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

您会很快注意到,与遵循理想流程的订单 1 (黑色)相比,其他两个订单出现了偏差:

  • 订单 2 (紫色)之后是一个额外的步骤:“更改价格”。
  • 顺序 3 (蓝色)遵循正确的步骤,但顺序不理想

使用案例和优势

流程挖掘有三个主要用例:

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

  1. 发现:在没有先验模型的情况下,构建现有流程的愿景
  2. 验证正确实施和分析与先前模型的偏差
  3. 流程改进

在所有这三种情况下,基于客观和详尽的数据的对过程的实际实现的理解,使得过程挖掘方法更有价值。

此外,该方法代表了流程管理领域的改进:

  • 加速研究(限制花费的时间和访谈次数)以建立现有流程的代表性
  • 在测量中考虑更多的数据,甚至数据的穷尽性
  • 一旦设计了新流程,就有机会确保有效管理其使用并看到改进

流程挖掘并不致力于特定的活动领域:这种方法将能够在流程被实施和研究的任何地方带来价值。在一家公司内,几个职能部门可能对这种方法感兴趣:

  • 卓越运营团队:补充已经使用的方法(精益、六适马等)。)
  • 数据科学家:数据的可视化表示以产生新的见解
  • 流程经理:补充其专家视野的事实分析
  • CIO:系统使用的远景和相应的用户路径
  • 审计或内部控制:更快的分析和依赖案例的详尽性而不是样本的可能性

关键成功因素

为了获得好的结果,流程挖掘计划的启动需要一些预防措施。可以注意到,重要的是:

  • 从一开始就确定增值目标:降低成本、改善用户/客户体验…
  • 从过程角度定义明确的研究范围
  • 在固定的总时限内,用短周期分析反复操作
  • 确保研究所依据的数据的质量。要做到这一点,与所用系统的 it 专家以及所研究流程的业务专家合作是必不可少的
  • 在目标过程重新定义的情况下,伴随的改变

此外,Process Mining 进行的分析本身并不是目的,而是作为进一步流程研究的实际起点。重新引入人的方面,例如通过使用设计思维方法,使得通过考虑最终用户来深化通过流程挖掘获得的结果成为可能

来源

PyTorch 是什么?

原文:https://towardsdatascience.com/what-is-pytorch-a84e4559f0e3?source=collection_archive---------13-----------------------

想想 Numpy,但是有强大的 GPU 加速

介绍

PyTorch 是一个 Python 程序库,方便构建深度学习项目。我们喜欢 Python,因为它易于阅读和理解。PyTorch 强调灵活性,允许深度学习模型用惯用 Python 表达。

简单一句话,想想 Numpy,但是有强大的 GPU 加速。更好的是,PyTorch 支持动态计算图,允许你动态改变网络行为,不像 Tensorflow 等框架中使用的静态图。

为什么是 PyTorch?

GPU 上类似 NumPy 的数组

-动态计算图

-是蟒蛇皮!

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

检索自 PyTorch Github

入门指南

PyTorch 可以在 macOS 上安装和使用。为了利用 PyTorch 的 CUDA 支持的全部能力,建议但不要求使用 NVIDIA GPU。

用 Anaconda 安装

conda install pytorch torchvision -c pytorch

使用 pip 安装

pip3 install torch torchvision

如果你在安装上有任何问题,在这里找到更多关于安装 PyTorch 的不同方法。

如果你的电脑中没有 NVIDIA GPU,那么使用 Google Colab 来利用其免费的 GPU 功能吧!点击左上方的新笔记本开始。

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

记得在运行笔记本之前将运行时类型更改为 GPU

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

想想 Numpy 但是有强大的 GPU 加速!

你熟悉 Numpy 吗?太好了!您只需要将使用 on Numpy 的语法转换为 PyTorch 的语法。如果你不熟悉 Numpy,PyTorch 的编写方式非常直观,你可以在几秒钟内学会。

导入两个库以比较它们的结果和性能

import torchimport numpy

张量

PyTorch 张量类似于 NumPy ndarrays,可以选择在 GPU 上运行。

>>> numpy.array([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]])array([[0.1, 1.2],
       [2.2, 3.1],
       [4.9, 5.2]])>>> torch.tensor([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]])tensor([[0.1000, 1.2000],
        [2.2000, 3.1000],
        [4.9000, 5.2000]])

我们在这里看到了什么?tensor代替了array.还记得我们喜欢的np.empty()np.random.randn()np.zeros()np.ones()吗?PyTorch 可以应用相同的函数和语法

w = torch.empty(3, 3)
print(w,'**\n**', w.shape, '**\n**')x = torch.randn(3, 3, 7)
print(x,'**\n**', x.shape, '**\n**')y = torch.zeros(3, 3)
print(y,'**\n**', y.shape, '**\n**')z = torch.ones(3, 3)
print(z,'**\n**', z.shape, '**\n**')[0., 0., 3., 0., 0.],         
        [4., 0., 5., 0., 0.],         
        [0., 0., 0., 0., 0.]

形状和视图

view()方法改变形状

>>> x = torch.rand(100,50)
>>> print(x.shape)
torch.Size([100, 50])>>> y=x.view(20,5,50)
>>> print(y.shape)
torch.Size([20, 5, 50])>>> z=x.view(-1,5,50)
>>> print(z.shape)
torch.Size([20, 5, 50])

CPU 和 GPU 中的张量

GPU(图形处理单元)由数百个更简单的核心组成,这使得训练深度学习模型的速度快得多。下面是 GPU 和 CPU 的快速对比。

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

来源

无论我们决定使用 GPU 还是 CPU,PyTorch 都可以让我们轻松地在两者之间切换

cpu=torch.device("cpu")
gpu=torch.device("cuda:0") # GPU 0# Create tensor with CPU
x=torch.ones(3,3, device=cpu)
print("CPU:",x.device)x=torch.ones(3,3, device=gpu)
print("GPU:",x.device)x=torch.ones(3,3).cuda(0)
print("CPU to GPU:",x.device)x=torch.ones(3,3, device=gpu).cpu()
print("GPU to CPU:",x.device)

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

比较 CPU 和 GPU 的时间

CPU 时间

>>> import time
>>> x=torch.rand(10000,10000)
>>> y=torch.rand(10000,10000)>>> t = time.time()
>>> z=x@y
>>> t = time.time()-t
>>> print(t)6.999474763870239

GPU 中的时间

>>> yc=y.cuda(0)
>>> t = time.time()
>>> z=xc@yc
>>> t = time.time()-t
>>> print(t)0.4787747859954834

对于简单的矩阵乘法,它比 Numpy 快 15 倍!

NumPy 呼叫 PyTorch

既然 NumPy 和 PyTorch 真的很像,那么有没有方法可以把 NumPy 数组改成 PyTorch 数组,反之亦然?是啊!

a = np.ones(5)#From NumPy to Torchb = torch.from_numpy(a)print('a:',a)print('b:',b)

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

PyTorch 的亲笔签名

什么是亲笔签名?还记得在你的微积分课上,你需要计算一个函数的导数吗?梯度类似于导数,但是是矢量形式。计算神经网络中的损失函数是很重要的。但是由于维数很高,通过求解数学方程来计算如此大的复合函数的梯度是不切实际的。幸运的是,PyTorch 可以在几秒钟内找到这个梯度的数值!

假设我们想求下面向量的梯度。我们期望 y 的梯度为 x,用张量求梯度,检查是否得到正确答案。

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

厉害!梯度是 x,和我们预期的一样。分解上述代码:

  • requires_grad = True允许有效的梯度计算。如果我们知道我们将计算基于 x 的梯度,我们需要为输入设置.requires_grad = True。点击了解更多关于亲笔签名的工作方式
  • y.backward()数值计算梯度
  • x.grad()返回 y 在 x 点的梯度

例子

让我们通过一个分类示例来了解如何使用 PyTorch。我们的任务是找到一个点是否在黄色或紫色的簇中

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

首先构建一个用于构建神经网络的 PyTorch 模块的子类nn.Module,

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

将数据分为训练集和测试集

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

训练数据

预测和评估预测

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

结论

恭喜你!您刚刚学习了 PyTorch 是什么以及如何使用它。本文只是对 PyTorch 的一个委婉的介绍。我希望你从这篇文章中获得的是,深度学习可以通过这个工具变得简单高效。要了解更多关于如何将 PyTorch 用于您的深度学习项目,我推荐查看这本伟大的书: 用 PyTorch 进行深度学习 *,*了解 PyTorch 的最佳资源之一。

这个 Github repo 中,您可以随意使用本文的代码。

我喜欢写一些基本的数据科学概念,并尝试不同的算法和数据科学工具。你可以在 LinkedIn 和 Twitter 上与我联系。

如果你想查看我写的所有文章的代码,请点击这里。在 Medium 上关注我,了解我的最新数据科学文章,例如:

[## 用美丽的声音抓取维基百科

关于如何使用 Beautiful Soup 的分步教程,这是一个用于 web 抓取的简单易用的 Python 库

towardsdatascience.com](/step-by-step-tutorial-web-scraping-wikipedia-with-beautifulsoup-48d7f2dfa52d) [## 如何用 Word2Vec 解决类比问题

美国之于加拿大,就像汉堡之于 _?

towardsdatascience.com](/how-to-solve-analogies-with-word2vec-6ebaf2354009) [## 如何用 Faker 创建假数据

您可以收集数据或创建自己的数据

towardsdatascience.com](/how-to-create-fake-data-with-faker-a835e5b7a9d9) [## 如何用 Python 对 Tweets 进行标记

我们应该选择 TweetTokenizers 还是其他 4 种常见的 Tokenizers?

towardsdatascience.com](/an-introduction-to-tweettokenizer-for-processing-tweets-9879389f8fe7) [## 用这 6 个小窍门提高你的效率

并控制您的阵列

towardsdatascience.com](/boost-your-efficiency-with-these-6-numpy-tricks-29ca2fe81ecd)

什么是推理?

原文:https://towardsdatascience.com/what-is-reasoning-526103fd217?source=collection_archive---------38-----------------------

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

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

(这是人工智能推理系列的第一部分)

前阵子我在 AI 写了一篇关于 六个容易和不那么容易的棋子的文章。推理是我不太容易完成的清单上的第一项。在这一系列文章中,我将仔细研究推理——它是什么,为什么它很重要,以及它与当前流行的机器学习有何不同。沿着这条路,我追溯了计算推理的历史,并强调了一些今天仍然相关的重要思想和系统。

从 20 世纪 60 年代开始,人工智能研究分成了两个阵营——基于规则的系统和机器学习等经典方法。早期的优势属于古典技术。但是,特别是在过去几十年里,这一趋势几乎完全逆转,机器学习成为人工智能重大进步的主要来源。ML 是如此的成功,以至于它成为了视觉、听觉和语言应用的主流。但是,像推理这样更复杂的任务仍然远远超出了今天可能实现的舒适区。另一方面,经典方法几乎只关注像推理这样的高阶问题。我相信我们现在正处于一个拐点——经典和机器学习方法已经足够发展,将它们结合在一起可以将人工智能推向下一个水平。

人工智能现在可以做一些惊人的事情。它可以回答我们的问题,驾驶我们的汽车,让世界领导人唱歌,从一张照片中创作电影,甚至创作艺术。所有这些能力都是预测的例子——以图像、音频或文本作为输入,并返回类别、文本或控制命令作为输出。这些类型的预测不是微不足道的,可以是任意复杂的管道的结果,并使用控制系统、传统机器学习和深度学习的方法的组合。但在所有情况下,这些管道中的步骤都是固定的(尽管它们可能被跳过),并且产生的模型(或管道)针对非常狭窄的问题(问题回答、图像分类、控制车辆)。你不能让一个问答模型来控制一辆汽车,或者让一个玩游戏的模型来检测核磁共振成像中的肿瘤。今天的每个人工智能都是专门构建的,并经过大量训练来实现那一个(狭窄的)功能。

现在将这与人类大脑的工作方式进行比较——我们可以开车、煮咖啡、回答问题、玩视频游戏,最重要的是,学会做非常不同的新事物。我们甚至可以学习用不同的方式完成旧的任务。我们从很少的例子中学会做这些工作,同时在不断做的过程中不断变得更好。

AlphaGo (Alphastar)怎么样?

AlphaGo 是我们理解如何构建可以学习复杂任务的机器学习模型的一个巨大成就。AlphaGo 使用了过去二十年中最成功的发现之一——深度神经网络——它有效地使用这些网络来学习如何求解围棋。但是,有人坐下来制定了训练 AlphaGo 学习如何玩围棋的网络和强化学习策略。在它成为最擅长围棋的人之后,AlphaGo 不得不完全重做,以创建 AlphaStar,即玩星际争霸 2 的人工智能。(L 墨迹到 AlphaGo 如何工作的简单解释

那么推理有什么不同呢?

最简单地说,推理可以被认为在复杂性上至少比预测高一个级别——如果预测是在给定正确的架构和管道的情况下训练模型,那么推理就是找出架构和管道本身。换句话说,如果问题的解决方案是一系列预测(和其他工程)步骤,那么推理就是构建这些步骤序列的能力。推理可以应用于许多不同类型的任务。当你思考如何做某事时,这被称为解决问题。当你对某事为什么会发生进行推理时,这被称为因果推理

为什么推理比预测更难?

直觉上,在训练这个序列的基础上构建一个步骤序列比训练本身更困难是有道理的。但是为了理解推理有多困难,我们必须使用一个类比…考虑制作咖啡的问题。给定咖啡机、牛奶、咖啡豆、研磨机、起泡器和一套操作说明,制作拿铁咖啡只是找到每种成分的正确用量的问题(咖啡的量、研磨机上的毛刺、使用多少牛奶、起泡多长时间、牛奶与泡沫的比例等等)。这一步需要一些尝试和错误,但经过几次尝试后,你就可以做对了。预测也差不多。你会得到一堆资源和如何使用它们以及使用顺序的说明,而预测是找到每种成分的正确用量的过程。

现在想象一下,你只是得到了制作咖啡的原料和工具。你不能把水倒在豆子上。你加热水,研磨咖啡豆,把咖啡放在杯子上的过滤器里,然后把水倒在咖啡豆上。你不能简单地独立于牛奶运行起泡机,你必须确保起泡机在牛奶中才能产生泡沫。这个问题肯定更难,是关于 autoML 工作的水平。

但是如果你连原料和工具都没有呢?有人给你指了一家咖啡店(或超市)的方向,让你去煮咖啡。你必须选择正确的原料,正确的工具,正确的设置,并找到每种原料的正确数量,才能在堆满东西的咖啡馆(或仓库)里制作咖啡。这就是推理的复杂性。

那么,什么是推理呢?

我将谈论推理的技术方面,包括表示和问题空间、策略、奖励和损失函数,当然还有 AutoML。但是现在,我想保持它的简单,并提供一个技术/算法/模型应该满足的四个品质来作为一个推理系统。

推理系统的四个品质:

  1. 它是一个独立的模型或系统
  2. 可以解决新问题
  3. 从有限数量的试验来看
  4. 同时通过练习变得更好。

所谓自包含,我只是说它不需要为不同的任务进行外部修改(由建模师/程序员/用户/科学家)。它可以是模型、算法或系统的集合,只要它在学习新任务时不被触及。

它应该能够解决以前从未见过的问题,无论是通过例子,或指令,甚至是试错法。

它应该在有限的时间范围内从少量的例子中解决这些新问题

最后,它应该通过实践变得更好。我们之前没有谈到这个质量,但这是必要的,因为质量 1-3 可以通过反复试验来实现(对于大值的 limited)

预测、推断和推理之间有什么区别

预测就是模式匹配。给定大量数据,预测学会将输入映射到输出。

推理是产生新信息的过程。这是一个没有目标的自动过程。它就像一台机器,接受输入,然后简单地把新信息作为输出。

推理是有目标的(或目标导向的)推理,其中输入被仔细地选择、组织,并且推理机制被创造性地用于产生期望的结果。

为什么专注于推理?

机器学习已经非常擅长预测任务,尤其是当问题定义明确并且有大量数据可用时。但是这些系统非常脆弱,容易受到敌对攻击,并且不能优雅地降级。让他们更有弹性的一个方法是通过识别和从失败中恢复的方法来增强他们的能力,这涉及到在没有外部机构的情况下尝试解决新出现的问题。

晁盖艾怎么了?

针对我上面列出的每一个品质,ML 中正在进行研究——终身学习以建立一个学习多项任务的单一模型,一次和零次学习以从有限的数据中解决新问题,各种各样的 RL 技术允许代理通过重复变得更好,autoML 技术试图学习最有效的管道来解决问题,等等。但事实仍然是,在这些系统目前的能力和构建能够推理的系统所需的能力之间存在巨大差距。

几十年来,经典人工智能一直在研究这个问题,并且有许多系统可以在比 ML 更大的领域中进行推理。更重要的是,经典 AI 和 ML 优势互补。经典人工智能擅长处理离散的信息单元,但无法将这些单元与像素和音频世界联系起来。ML 擅长将像素、音频流和字符转换成其他离散的信息单元,但不擅长操作它们。缺少的是这些系统彼此之间不能很好地交流。深度神经网络等 ML 技术产生的离散单元不是经典技术使用的那种单元。

鉴于经典人工智能在推理方面的成功和 ML 在感知和行动方面的成功,现在似乎是从经典人工智能的角度重新审视推理的好时机,看看我们可以从以前的成功和失败中学到什么。

这个系列的下一步是什么?

我知道我想在哪里结束这个系列——通过介绍目前正在做的结合这两种方法的一些工作,但是我不清楚我想在这里和那里之间走哪条路。在经典人工智能中,我想谈论的话题很少,包括表示、不同种类的推理、逻辑系统、物理符号系统和认知架构。我希望在接下来的几篇文章中,从经典人工智能的简史开始,浏览这些主题。

免责声明:本文表达的观点是我个人的,不一定代表我的雇主的观点。

你可以在我很少发帖子的 Medium 上关注我,也可以在我很少发微博的 Twitter (@manashastram)上关注我。😃

使用岭、套索和弹性网回归进行正则化

原文:https://towardsdatascience.com/what-is-regularization-and-how-do-i-use-it-f7008b5a68c6?source=collection_archive---------37-----------------------

概述 3 种常见正则化技术的差异-山脊、套索和弹性网。

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

你已经训练了一个回归模型,你的 R 回来了,看起来很好——几乎好得不能再好了。当然,下一个合乎逻辑的步骤是看看测试数据集的进展如何。剧透警告:它不会有接近成功的训练集。

这是一种相当普遍的现象,被称为“过拟合”。过度拟合有一个相反的极性,叫做欠拟合。用专业术语来说,过度拟合意味着你建立的模型的参数比数据能够证明的要多。点击此链接查看包含这篇博文笔记本的 GitHub 资源库。

与计算机打交道有一种让我们脱离现实的方式,过度拟合/欠拟合模型就是证明。例如,在建筑中,计算机辅助设计(CAD)使绘图员能够画出极限公差,例如 0.001 英寸。如果你画一个平面图,告诉挖掘机挖一个 34.963 英寸深的沟渠,你真的能指望重型机械有那种精度吗?你能指望一个在野外工作的木匠把木材切割到 0.001 英寸吗?凭经验我可以告诉你,这是不会发生的。沟渠大约有 36 英寸(3 英尺)深,木板可能会被修圆到最接近的 1/8 英寸,或者如果你幸运的话,1/16 英寸。这是一个现实世界中经常发生的过度拟合计算机模型计算的例子。

一个真实世界的欠拟合例子是一个煤气炉,它只有两个输入设置,最大热和关。因为你产出的食物要么被烤焦了,要么还是生的,所以你几乎不可能把任何东西都煮熟。

你可能会问*所有这些与正规化有什么关系?*答案是一切。通过降低模型对训练数据中某些噪声的敏感度,向模型中添加适量的偏差有助于做出更准确的预测。

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

点击图片阅读更多 Sci-Kit Learn

在蓝点上方的图中,是来自现实世界的样本数据点。这些样本与黄线的距离,即“真实函数”,被称为数据的“噪声”。样本点到蓝线的距离被称为我们模型的“误差”。

# Equation of True Function
**def** true_fun(X):
    **return** [np.cos](https://docs.scipy.org/doc/numpy/reference/generated/numpy.cos.html#numpy.cos)(1.5 * [np.pi](https://docs.scipy.org/doc/numpy/reference/constants.html#numpy.pi) * X)

欠拟合模型的预测根本不能解释真实函数的样本数据。真实函数比一个一次的简单线性方程更复杂。如果你需要复习如何确定多项式函数的次数,请参考这个网站

这个模型的一个很好的类比是,在多项选择测试中,每个问题的答案都是“C”。当然,你可能会在几个问题上走运,但你会答错绝大多数。

过度拟合模型的预测线几乎完美地描述了真实函数——甚至更多。该模型的预测输出是一个超级复杂的 15 次多项式函数。随着模型的复杂性(程度)增加,模型开始不太关心其预测的误差,而更关心预测它所获得的训练数据的值。花点时间沿着过度拟合模型的预测线追踪,看看它离真正的函数有多远。

继续我们的考试类比,过度拟合模型找到了我们考试的答案并记住了那个答案。当我们给模型一个没有答案的考试会发生什么?很有可能它会悲惨地失败。

合适的模特在金发区。它既不太简单也不太复杂。作为一个 8 次多项式函数,该模型仍然具有复杂性,但该模型在看穿样本数据中的噪声方面做得很好。这允许模型极大地减少来自过度拟合模型的误差,并且更准确地预测真实函数值。这个模型拟合的黄金地带就是我们试图通过正则化来实现的。

正则化技术

岭和套索回归技术扩展了简单的线性回归。在继续之前,让我们回顾一下 OLS 的倒退:

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

使用 RSS 作为成本函数的多变量 OLS 回归

成本函数衡量模型输出与实际数据之间的差异。线性回归有多个成本函数,如 RSSMSERMSE 。在上例中,成本函数是 RSS(y _ actual-y _ predicted)。预测值可以用你的回归线方程代替。您的特征系数,也称为斜率,是(mⱼ).这些特征系数是我们用正则化技术处理的对象。

注意:在这篇文章中,我将预测器和特征作为同义词使用。预测值是模型中使用的独立变量(x 变量)。如果您正在构建一个身体质量指数估计器,高度很可能是您的预测因素之一。

在构建模型时,无论是哪种类型,您都必须执行适当的数据清理和探索技术,以完全理解您的数据。本博客中的所有正则化技术都应用了基于预测系数的惩罚。这意味着你必须在应用这些算法之前标准化你的数据。

这些技术的假设取决于应用正则化技术的模型的类型。如果你需要重温一下 OLS 模型的假设,请看看我之前的博文。

里脊回归

岭回归是 OLS 成本函数的一个小扩展,随着模型复杂性的增加,它会给模型增加一个惩罚。数据集中的 predictors(mⱼ越多,r 值就越高,模型过度拟合数据的可能性就越大。岭回归通常被称为 L2 范数正则化。

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

岭成本函数-请注意λ(λ)乘以预测值的平方和

请记住,目标是最小化成本函数,因此惩罚项(λ * sum(mⱼ)越大,模型的性能就越差。此函数会因您的模型有太多或太大的预测值而惩罚您的模型。岭回归的目的是减少这些预测因子的影响,从而降低数据过度拟合的几率。如果我们设置λ = 0,那么这将是一个正常的 OLS 回归。

岭回归最常见的用途是抢先解决过度拟合问题。当您必须保留所有预测值时,岭回归是处理多重共线性的好工具。它通过缩小预测值的大小来解决共线性问题,但从未消除它们。

如果有许多大约相同量级的预测值,岭回归效果很好。这意味着所有预测器预测目标值的能力相似。

套索回归

当你看着下面的等式,心里想“这看起来几乎和岭回归一样”嗯,你大部分都是对的。Lasso 不同于岭回归,它对预测值(mⱼ)的绝对值求和,而不是对平方值求和。

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

套索成本函数-请注意λ(λ)乘以预测值的绝对值之和

Lasso 是首字母缩略词,代表“最小绝对收缩和选择算子”由于罚项不是平方,有些值可以达到 0。当预测器系数(mⱼ)达到 0 时,该预测器不会影响模型。

由于 Lasso 的要素选择属性,它非常适合多重共线性。解决两个预测变量的共线性的最有效方法之一是删除其中一个。然而,移除是有代价的。可能存在变量集合共线的情况,并且仍然提供进行估计的价值。Lasso 将任意选择一个预测器进行预测,并放弃另一个。

如果很少有重要的预测因素,并且其他因素的大小接近于零,那么 Lasso 往往表现良好。换句话说**,**一些变量是比其他预测值更好的目标值预测值。

弹性净回归

那么,如果我不想选呢?如果我不知道自己想要什么或需要什么怎么办?弹性净回归是作为对套索回归的批判而产生的。虽然它有助于功能选择,但有时您不希望主动删除功能。正如你可能已经猜到的,弹性网是套索和脊回归的结合。因为我们已经知道了岭和套索回归是如何起作用的,所以我就不赘述了。请参考 sci-kit learn 的文档。

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

λ₁是套索罚分(L1),λ₂是岭回归罚分(L2)

如上图所示,现在有两个λ项。λ₁是回归套索部分的“alpha”值,λ₂是岭回归方程的“alpha”值。当使用 sci-kit learn 的弹性网络回归时,阿尔法项是λ₁:λ₂.的一个比率当设置比率= 0 时,它作为岭回归,当比率= 1 时,它作为套索回归。介于 0 和 1 之间的任何值都是脊线和套索回归的组合。

如何使用这些回归技术

现在好戏开始了!我假设你已经知道如何建立一个基本的线性模型。如果没有,你会在这个博客的相应笔记本中看到。使用套索和岭回归非常相似-除了“阿尔法值”。 Sci-kit learn 的 GridSearchCV 搜索一系列值,为您的超参数找到最佳值。

套索回归

下面是我用来构建下图结果图的代码。这个模型是使用 Sci-Kit Learn 的波士顿住房数据集创建的。

from sklearn.model_selection import GridSearchCV# Create an array of alpha values to test
# Start np.linspace value is 10**-10 because a value of 0 throws warnings
alphas = np.logspace(-10, 1, 1000,base=10)# Create dictionary key,value pair of alpha values
tuned_parameters = [{'alpha': alphas}]# Specify number of folds for cross_validation
n_folds = 5# Create grid search instance using desired variables
clf_lasso = GridSearchCV(lasso, tuned_parameters, cv=5, refit=True)
clf_lasso.fit(x_train_scaled, y_train)
lasso_scores = clf_lasso.cv_results_['mean_test_score']# Plot the results
plt.figure().set_size_inches(8, 6)
plt.plot(alphas, lasso_scores)
plt.xlabel('Alpha Value')
plt.ylabel('Model CV Score')
plt.title('Lasso Regression Alpha Demonstration')
plt.axvline(clf_lasso.best_params_['alpha'], color='black', linestyle='--')
print(f'The optimal alpha value is :{clf_lasso.best_params_["alpha"]}')

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

波士顿住房数据的优化 Lasso 回归

请注意,最佳 alpha 值是 0.0106,而不是 0。这证明了添加这一点 alpha 比纯线性回归产生了更高的交叉验证分数。从这张图表中很容易看出,随着 alpha 值的增加,CV 值接近并达到 0。

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

在 alpha 值为 1 时,几乎 2/3 的特征被移除,并且测试 R 仅降低了大约 0.1!

上图显示值为 1 时,套索回归移除了 8 个特征,在总共 13 个预测因子中只剩下 5 个。随着特征的去除,模型的预测强度下降,但是现在模型更简单了。这让我们对好的特性选择的力量有了一点了解。

里脊回归

再次,像套索回归这里是代码和下图产生。

from sklearn.model_selection import Ridge# Create an array of alpha values to test
alphas = np.logspace(-1, 1.5, 500,base=10)# Create a Ridge regression model instance
ridge = Ridge(random_state=0, max_iter=10000,alpha=alphas)# Create dictionary key,value pair of alpha values
tuned_parameters = [{'alpha': alphas}]# Specify number of folds for cross_validation
n_folds = 5# Create grid search instance using desired variables
clf_ridge = GridSearchCV(ridge, tuned_parameters, cv=5, refit=False)
clf_ridge.fit(x_train_scaled, y_train)
ridge_scores = clf_ridge.cv_results_['mean_test_score']# Plot the Figure
plt.figure().set_size_inches(8, 6)
plt.plot(alphas, ridge_scores)
plt.xlabel('Alpha Value')
plt.ylabel('Cross Validation Score')
plt.title('Ridge Regression Alpha Demonstration')
plt.axvline(clf_ridge.best_params_['alpha'], color='black', linestyle='--')
print(f'The optimal alpha value is: {clf_ridge.best_params_["alpha"]}')

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

Sci-Kit Learn 波士顿住房数据的岭回归优化

与套索回归不同,我们可以在这里看到随着 alpha 值的增加,该值是如何接近 0 的。如果你愿意,你可以在 GitHub 笔记本上增加 alpha 值,看看它永远不会达到 0。

在岭回归图中,我们看到 alpha 值为 2.97 时,我们的模型比值为 0 时有更好的性能。请记住,alpha 值为 0 等于正态回归。这证明了适量的偏差可以改善你的模型,防止过度拟合!

结论

就是这样!现在,您可以使用优化的 alpha 值来运行您选择的回归。下面是我们讨论内容的简要总结:

什么是正则化 :对抗过拟合和提高训练的技巧。

弹性网——脊和套索的混合物

如何使用正则化:

  1. 分割和标准化数据(只标准化模型输入,不标准化输出)
  2. 决定哪一个回归技术脊,套索,或弹性网,你希望执行。
  3. 使用 GridSearchCV 优化超参数 alpha
  4. 用你现在优化的 alpha 构建你的模型并进行预测!

谢谢你花时间阅读我的博客。在我的 GitHub 库中可以找到该笔记本的全部细节。如果您有任何问题或有建设性的批评,请随时联系我!

领英:【www.linkedin.com/in/blake-samaha-54a9bbaa

推特:@Mean_Agression

什么是强化学习?

原文:https://towardsdatascience.com/what-is-reinforcement-learning-99f9615918e3?source=collection_archive---------29-----------------------

奖励和惩罚

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

UnsplashNeONBRAND 拍摄的照片

机器学习是 IT 界讨论最多的领域之一。随着图像和语音识别、自动驾驶汽车、产品推荐和欺诈检测的大范围普及,机器学习无处不在。

ML 的一个子领域专注于通过自学发现问题的解决方案。这里,我们可以以电子游戏为例。当来自一家名为 Deepmind 的公司的一小组研究人员发表了一篇关于用强化学习玩雅达利的论文时,这个领域受到了很多关注。以至于谷歌后来花了一大笔钱收购了该公司。

当 AlphaGo 在围棋比赛中击败世界冠军时,强化学习的力量不再被忽视。读完这篇文章后,你将对强化学习及其应用有一个基本的了解。

强化学习

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

照片由克里斯里德Unsplash 拍摄

强化学习是对机器学习模型的训练,以针对给定场景做出一系列决策。

在其核心,我们有一个自主代理,如人、机器人或深度网络学习来导航不确定的环境。这个代理的目标是最大化数字奖励。

体育就是一个很好的例子。让我们考虑一下我们的经纪人在网球比赛中需要处理的事情。

代理人将不得不考虑其行动,如发球和截击。这些行为改变了游戏的状态。换句话说,当前设定的分数和领先的玩家。

每一个行动都是有回报的。代理人必须赢得一分才能赢得一局、一盘和一场比赛。

我们的球员需要遵循一定的规则和策略,以最大限度地提高最终得分。

为了在此基础上建立一个模型,它必须将一个状态和一个动作作为输入,然后将其转换为最大可能的回报。该模型还必须提前考虑,并考虑此类行动的长期结果。

这个过程因任务而异,这并不奇怪。建立一个可以打网球的模型和 Atari 是完全不同的。

监督学习与强化学习

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

照片由 Unsplash 上的延斯·勒列拍摄

强化学习不仅仅是监督学习的一种聪明说法。监督学习侧重于根据历史实例来理解环境。

然而,这并不总是合适的。一个常见的例子是在交通中驾驶。

想象一下,根据前一天的观察来做这件事,当时几乎没有任何汽车。这和开车时只看后视镜一样有效。

强化学习就是收集奖励。代理专注于正确转弯,必要时发出信号,以及不违反速度限制。此外,机器人可能会因危险行为而被扣分,例如超速行驶。

目标是在给定当前交通状态的情况下最大化点数。这里强调的是,一个动作导致状态的改变,而监督学习并不关注这一点。

探索与开发

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

照片由摄影爱好Unsplash 上拍摄

假设我们把一个全新的机器人放在一个房间里。他的目标是找到螺栓和螺丝钉。这里的机器人是智能体,房间是环境。他有四种可能的动作:向左、向右、向前或向后移动。

机器人的状态由几个东西组成,是他当前的位置和以前的位置。如果他移动,状态会改变,但是我们还不知道这个移动是对还是错。

所以我们让机器人探索房间。走了一会儿后,我们的机器人终于找到了一些螺丝钉。机器人因为做了正确的事情而获得奖励。

现在,我们的机器人必须遵循的政策是积分最大化。他知道,通过再次采取同样的路线,他一定会达到目标,并得到一些积极的反馈。

然而,这条路径远非最佳,任何类型的机器人都只能一次又一次地沿着同一条路径前进。探索和探索之间的权衡来了。

如果我们的机器人遵循同样的道路,他将利用他所学到的知识,并最终达到目标。然而,如果我们让机器人四处游荡寻找更好的路径,他将利用探索。

假设我们给我们的机器人 10 个回合来了解环境并找到更好的路线。过了一段时间,他找到了一条路径,只需要以前一半的步骤。然而,在这个过程中,他也走了一些不好的路。

在这种情况下,如果我们让另一个机器人跑 10 圈,并且只使用他找到的第一条路径,这个机器人可能会收集更多的螺栓和螺钉。

这是研究人员在开发强化学习模型时必须处理的权衡问题。

现实生活中的例子

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

Bram Van Oost 在 Unsplash 上拍摄的照片

强化学习模型必须经过良好的训练和优化,以适应现实生活中的情况。代理周围的场景和环境每次都会发生变化。

例如,我们在一辆自动驾驶汽车内,我们希望汽车在安全性方面得到优化。然后,如果我们看到前面汽车的刹车灯,可能是时候减速了。然而,如果我们在路上看到一块巨大的岩石,我们预计汽车会停下来。

另一个令人印象深刻的项目旨在制造假腿,它将能够识别行走模式并做出相应的调整。作为原型,研究人员已经开发了一种可以自主学习的虚拟跑步者。

我们已经知道,强化学习是一个具有很大潜力的强大工具。唯一的事情是,我们需要大量的数据和训练,才能驾驭现实世界的情况。

在大规模计算领域已经有了一些令人乐观和印象深刻的成果。这些系统可以探索具有大量状态的大规模环境,例如大型视频游戏中的环境。

最后的想法

强化学习简单而强大。鉴于最近的发展和快速进步,它有可能成为深度学习领域的一支重要力量。然而,重要的是要记住,强化学习只是解决现实世界问题的许多现有方法之一,它有其优点和缺点。

正如我们在 AlphaGo 的例子中看到的那样,强化学习有可能让机器变得更有创造力。这个领域的入门很简单,只需参加一个短期课程或开发一个小程序,例如机器人寻找螺栓。

参考

[1] Bajaj,P. (2020 年)。强化学习。2020 年 9 月 16 日检索,来自https://www . geeks forgeeks . org/what-is-reinforcement-learning/

[2]奥辛斯基,b .,&布德克,K. (2018)。什么是强化学习?完全指南。检索于 2020 年 9 月 16 日,来自https://deep sense . ai/what-is-reinforcement-learning-the-complete-guide/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值