TowardsDataScience-博客中文翻译-2019-六十三-

TowardsDataScience 博客中文翻译 2019(六十三)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

量化/算法/机器学习交易的完整书籍列表

原文:https://towardsdatascience.com/the-complete-list-of-books-for-quantitative-algorithmic-machine-learning-trading-621b274fec5f?source=collection_archive---------3-----------------------

你和你的财务自由之间唯一的障碍是 108 本书,所以你还在等什么?开始阅读吧!

那些在前方寻求智慧的人,请小心,因为这是一个很长的列表..(100 多本书)

"你不会一夜之间成为算法天才、杰出的学者、慈善家、亿万富翁."

三个月后你就不是了。一年后你也不会成为其中一员。你可能永远也不会成为一个。但是就像生活中的大多数事情一样,如果你努力,你可能会越来越接*实现财务自由的梦想。

现在很明显,其中一些有重叠的内容,所以你应该自己研究一下哪些书更适合你的心态和当前的技能。

这个列表由网上的多个来源组成,并尽我所能过滤成以下几类:

  • 一般阅读
  • 轻读
  • 编程
  • 数学
  • 经济学&金融学
  • 技术&时序分析
  • 其他
  • 衍生品

如果你喜欢这篇文章并想看更多,请务必关注我的简介。

一般阅读——基础

这可能是一个很好的起点,这些书涵盖了广泛的主题,可能是对量化交易的各种元素的一个不错的介绍。

Listed below in order of appearance in this picture!

阅读——故事

这些大多是“战争故事”和来自量化世界的故事。有些会很有教育意义,有些会比较悠闲的读书。

Listed below in order of appearance in this picture!

编程—机器学习和一般

这是一个机器学习文献的联合列表,也是专门针对 Python、R 和 C++的通用良好实践编程书籍。

Listed below in order of appearance in this picture!

机器学习

通用编程

数学——统计与概率、随机过程和一般

现在我们进入细节。这些书的有用性将高度依赖于你在该领域的教育和经验,所以要小心行事。

普通数学:

Listed below in order of appearance in this picture!

统计和概率:

Listed below in order of appearance in this picture!

随机过程:

Listed below in order of appearance in this picture!

经济与金融——一般资产定价和管理

如果你没有金融或经济背景,明智的做法是阅读这些书籍,了解构成我们市场基础的各个部分。就像所有这些一样,有些可能不适合你,有些可能适合,所以在承诺之前做好自己的研究!

Listed below in order of appearance in this picture!

普通经济学:

资产定价:

风险和资产管理:

技术和时间序列分析——画出那些线!

尽管技术分析在交易界是一个很大的争议,但是理解这些概念还是有价值的。

Listed below in order of appearance in this picture!

技术分析:

时间序列分析:

其他—介于两者之间的一切

这份清单的独特之处在于,我不确定该把这些书放在哪里。当然,这并不是说这些书比这本书集中的任何其他书都差,事实上,它们中的一些可能对你的学习经历至关重要并产生巨大影响。

衍生品—股票、外汇、商品、利率、信用、外汇

这是不言自明的。关于特定种类衍生产品的高度特定的文献。当这些书的主题植入你的脑海时,你可能会认为自己是这个领域的伪专家。

股票衍生品:

外汇衍生品:

商品衍生品:

利率衍生品

信用衍生品

XVA

最后的沉思——继续前进

My face when I finally finished this list.

所以我们做了,我们做了一个“完整的算法和量化交易的书单!现在不言而喻,像这样的一份名单只是“完整的”直到有人评论说:****

“但是,等等,你忘记了这篇至关重要的文献,你怎么能这样做呢?!"

正是因为这个原因,我会继续更新,尽可能多地从你们在媒体推特Reddit 上的人那里获得反馈。

结束语

如果你想多看多学,一定要上 关注我的 🔍碎碎念 🐦

**** [## 彼得·尼斯特鲁普-中等

阅读彼得·尼斯特拉普在媒介上的作品。数据科学、统计和人工智能...推特:@PeterNistrup,LinkedIn…

medium.com](https://medium.com/@peter.nistrup)****

完全强化学习词典

原文:https://towardsdatascience.com/the-complete-reinforcement-learning-dictionary-e16230b7d24e?source=collection_archive---------2-----------------------

强化学习术语,从 A 到 Z

在媒体上阅读此文,而不是使用此 好友链接 的媒体成员!

每当我开始学习一门新的学科时,我发现最难应付的是它的新术语。每个领域都有许多术语和定义,对于一个局外人来说完全是晦涩难懂的,这会使一个新手迈出第一步相当困难。

当我第一次踏入强化学习的世界时,我被每隔一行就弹出的新术语所淹没,并且总是让我惊讶的是在这些复杂的单词背后隐藏着非常简单和符合逻辑的想法。因此,我决定用自己的话把它们都写下来,这样我就可以随时查阅,以防忘记。这本字典就是这样产生的。

这不是强化学习的入门文章,而是学习时的辅助工具。如果你也想在这个领域开始你的职业生涯,我可以给你以下建议:

  • 如果你正在寻找一个包含代码示例的快速、10 分钟速成课程,请查看我的 Qrash 课程系列:RL 和 Q-Learning 简介政策梯度和行动者-批评家
  • 如果你有更深的兴趣,并且想学习和编写几种不同的 RL 算法并获得更多的直觉,我可以推荐托马斯·西蒙尼的这个系列和亚瑟·朱利安尼的这个系列。
  • 如果你已经准备好掌握 RL,我会把你引向强化学习的“圣经”——理查德·萨顿和安德鲁·巴尔托的《强化学习导论》。第二版(从 2018 年开始)作为 PDF 文件免费(合法)提供。

我将尽我最大的努力不断更新这本词典。如果我错过了什么重要的事情或者做错了什么,请随时告诉我。

字典

动作值功能:Q 值

动作:动作是 代理 方法,允许其交互并改变其 环境 ,从而在 状态 之间转移。代理人执行的每一个动作都会从环境中获得一个 奖励 。选择哪个动作的决定由 策略 做出。

演员-评论家:当试图解决一个 强化学习 问题时,有两种主要方法可供选择:计算每个状态的 值函数Q 值 并根据这些来选择动作,或者直接计算一个 策略 ,该策略定义了每个动作应该被采取的概率 Actor-Critic 算法结合了这两种方法,以创建一种更健壮的方法。一个很棒的插图漫画解释可以在这里找到。

优势函数:通常表示为 A(s,a) ,优势函数是在给定某个状态的情况下,衡量某个 动作 好坏的一个决策——或者更简单的说,从某个状态中选择某个动作的优势是什么。它在数学上定义为:

其中 r(s,a) 是从状态 s 开始的动作 a 的期望 奖励 ,并且 r(s) 是在选择动作之前整个状态 s 的期望奖励。它也可以被视为:

其中 Q(s,a)Q 值V(s)*为 值函数 *

代理:学习和 演戏 一部分 强化学习 问题,即试图最大化 奖励 它是由 环境 给出的。简单地说,代理就是你试图设计的模型。

盗匪:正式命名为“k-Armed 盗匪”后昵称“独臂盗匪”给予吃角子老虎,这些被认为是最简单类型的 强化学习 任务。盗匪没有不同的 状态 ,只有一个——而考虑中的 奖励 只是眼前的一个。因此,土匪可以被认为是有单态 。每个 k 臂被认为是一个 动作 ,目标是学习在每个动作(或拉臂)后将最大化期望回报的 策略
尽管如此,这个任务仍然是一个单一状态的阶段性任务,一个上下文不能对其他上下文产生影响。

贝尔曼方程:形式上,贝尔曼方程定义了一个给定的 状态 (或状态- 动作 对)与其后继者之间的关系。虽然存在许多形式,但在 强化学习 任务中通常遇到的最常见形式是最优 Q 值 的贝尔曼方程,其由下式给出:

或者当不存在不确定性时(即概率为 1 或 0):

其中星号表示最佳值。一些算法,如 Q-Learning ,就是以此为基础进行学习的。

连续任务: 强化学习 不是由 组成,而是永远持续的任务。这个任务没有终端状态 s. 为了简单起见,通常假设它们由一个永无止境的情节组成。

深度 Q-Networks (DQN) :参见 Q-Learning

深度强化学习:使用带有深度神经网络的 强化学习 算法作为学习部分的*似器。这样做通常是为了处理可能的 状态动作 的数量迅速增加,并且精确的解决方案不再可行的问题。

贴现因子(γ) :贴现因子,通常表示为γ,是乘以未来期望 报酬 的因子,在[0,1]的范围内变化。它控制着未来回报相对于眼前回报的重要性。折扣因子越低,未来的回报就越不重要,而 代理 会倾向于专注于只会产生即时回报的 行动

环境:除了之外的一切代理;代理可以直接或间接与之交互的一切。环境随着代理执行 动作 而变化;每一个这样的变化都被认为是一个 状态-转换。代理执行的每个动作都会产生一个由代理接收的 奖励

插曲:介于初态和终态之间的所有 ;比如:一盘棋。 代理的目标是让它在一集里收到的总 奖励 最大化。在没有终极状态的情况下,我们考虑一个无限事件。重要的是要记住,不同的情节是完全相互独立的。**

****阶段性任务:强化学习 任务由不同的 剧集 (意思是,每一集都有一个终端状态 )。

预期回报:**有时被称为“整体报酬”,偶尔被表示为 G ,是在整个剧集中的预期**

体验回放:作为 强化学习 任务,没有预先生成的训练集可供其学习, 代理 必须保留其遇到的所有 状态 - 转换的记录,以便以后可以从中学习。用于存储此内容的内存缓冲区通常被称为体验回放。这些内存缓冲区有几种类型和架构,但一些非常常见的是循环内存缓冲区(它确保代理保持对其新行为的训练,而不是可能不再相关的事情)和基于库采样的内存缓冲区(它保证记录的每个状态转换都有均匀的概率被插入到缓冲区中)。

开发&探索: 强化学习 任务没有可以学习的预先生成的训练集——它们创建自己的 经验 并“动态”学习。为了能够这样做, 代理 需要在许多不同的状态下尝试许多不同的动作,以便尝试和学习所有可用的可能性,并找到将最大化其总体回报的路径;这被称为探索,因为代理探索 环境 。另一方面,如果代理只做探索,它永远不会最大化整体回报——它还必须使用它学到的信息来这样做。这被称为利用,因为代理利用其知识来最大化其收到的回报。
这两者之间的权衡是强化学习问题的最大挑战之一,因为这两者必须*衡,以便让代理既能充分探索环境,又能利用它所学到的东西,并重复它找到的最有价值的路径。****

**贪策,ε——贪策:一贪 意为 代理 不断地执行 动作 即被认为能产生最高预期 报酬 。显然,这样的政策根本不会允许代理人 探索 。为了仍然允许一些探索,通常使用一种 ε- 贪婪策略来代替:选择[0,1]范围内的一个数(名为 ε ) ,并且在选择动作之前,选择[0,1]范围内的一个随机数。如果该数字大于 ε ,则选择贪婪动作,但如果该数字小于该数字,则选择随机动作。注意,如果 ε =0,则该策略成为贪婪策略,如果 ε =1,则始终探索。

****k-武装土匪:土匪

马尔可夫决策过程(MDP): 马尔可夫属性是指每个**状态完全依赖于它之前的状态,从那个状态中取出的被选择的 动作 和在那个动作被执行之后立即收到的 奖励 。数学上的意思是: s' = s'(s,a,r) ,其中 s' 是未来状态, s 是其之前状态, ar 是动作和奖励。不需要事先知道在 s 之前发生了什么——马尔可夫属性假设 s 包含所有相关信息。马尔可夫决策过程是基于这些假设的决策过程。**

基于模型&无模型:**基于模型和无模型是一个 代理 在试图优化其 策略 时可以选择的两种不同的方法。最好用一个例子来解释:假设你正试图学习如何玩21 点。你可以通过两种方式做到这一点:一,你预先计算,在游戏开始之前,所有 状态 的获胜概率,以及所有可能的动作的所有状态转移概率,然后简单地按照你的计算去行动。第二种选择是在没有任何先验知识的情况下简单地玩,并使用“试错法”来获取信息。注意,使用第一种方法,你基本上是在建模你的 环境 ,而第二种方法不需要关于环境的任何信息。这正是基于模型和无模型的区别;第一种方法是基于模型的,而后者是无模型的。**

蒙特卡洛(MC): 蒙特卡洛方法是一种算法,它使用重复的随机抽样来获得一个结果。它们经常在 强化学习 算法中使用,以获得期望值;例如—计算一个 状态 值函数 通过反复返回同一状态,对每次收到的实际累计 奖励 进行*均。

On-Policy&Off-Policy:**每一个 强化学习 算法都必须遵循一些 策略 以决定在每一个状态下执行哪些 动作 。尽管如此,算法的学习过程在学习时不必考虑该策略。关注产生过去状态行为决策的策略的算法被称为符合策略的算法,而忽略它的算法被称为不符合策略的
一个众所周知的非策略算法是 Q-Learning ,因为它的更新规则使用将产生最高 Q 值 的动作,而实际使用的策略可能会限制该动作或选择另一个动作。Q-Learning 的基于策略的变体被称为 Sarsa ,其中更新规则使用由跟随的策略选择的动作。
**

****独臂土匪:土匪

一步到位 TD:时间差

策略(π): 策略,记为 π (有时也称为 π(a|s) ),是从某个 状态 s 到给定该状态下选择每个可能的 动作 的概率的映射。例如,一个 贪婪策略 为每个状态输出具有最高期望 Q 值 的动作。

Q-Learning: Q-Learning 是一种off-policy强化学习 算法,被认为是非常基础的算法之一。在其最简化的形式中,它使用一个表来存储所有可能的 状态 - 动作 对的所有 Q 值 。它使用 贝尔曼方程 更新该表,而动作选择通常使用ε-贪婪策略 进行。 以其最简单的形式(无不确定性-状态跃迁和预期*),Q-Learning 的更新规则是:*****

它的一个更复杂的版本,尽管更受欢迎,是深度 Q-网络变体(有时甚至简称为深度 Q-学习或简称为Q-学习)。这种变体用神经网络代替状态-动作表,以便处理大规模任务,其中可能的状态-动作对的数量可能是巨大的。你可以在这篇博文中找到这个算法的教程。**

Q 值(Q 函数)😗*通常表示为 Q(s,a) (有时带π下标,有时表示为 Q(s,a;θ)深 RL ),Q 值是整体预期 奖励 假设 代理 处于 状态并执行 动作 它的名字是“质量”一词的缩写,数学上定义为:

其中 N 是从状态 s 到终止状态的状态数,γ是 折扣因子 ,r⁰是在状态 s 执行动作 a 后收到的即时奖励。

强化算法:**强化算法是 强化学习 算法的一个家族,它根据策略相对于策略参数的梯度来更新自己的 策略 参数论文。该名称通常只使用大写字母,因为它最初是原始算法组设计的缩写:"REwardINon negativeFactorxOffsetRE enforcementx*Ccharacter isticE***

强化学习(RL): 与监督学习和非监督学习一样,强化学习是机器学习和人工智能的主要领域之一。它关注的是一个任意存在的学习过程,正式名称为 智能体 ,在其周围的世界中,称为 环境 。智能体寻求从环境中获得的 奖励 最大化,并执行不同的 动作 以学习环境如何反应并获得更多奖励。RL 任务的最大挑战之一是将行为与延迟奖励相关联——延迟奖励是代理在产生奖励的行为做出很久之后才收到的奖励。因此,它被大量用于解决不同类型的游戏,从井字游戏,国际象棋,雅达利 2600 和所有的方式去和星际争霸。

奖励:**由 代理环境 中接收的一个数值,作为对代理 动作 的直接响应。代理人的目标是在一集中最大化其收到的总奖励,因此奖励是代理人以期望的行为行动所需的动机。所有的行动都会产生奖励,大致可以分为三种类型:积极奖励强调想要的行动,消极奖励强调行动者应该偏离的行动,,这意味着行动者没有做任何特殊或独特的事情。**

Sarsa:**Sarsa 算法基本上是一种 Q-Learning 算法,只是稍加修改,使其成为一种 on-policy 算法。Q-学习更新规则是基于贝尔曼方程求最优的 Q 值,因此在-状态-跃迁和期望不确定的情况下,Q-学习更新规则是:******

为了将其转换为基于策略的算法,最后一项被修改:

当此处,两个 动作 aa’都由同一个 策略 选择。算法的名字来源于它的更新规则,更新规则基于( s,a,r,s’,a’),都来自同一个策略。**

状态:**在环境中 智能体 遭遇的每一个场景都正式称为状态。代理通过执行 动作 在不同状态之间转换。还值得一提的是终端状态,它标志着一集**的结束。达到终态后就没有可能的状态了,新的一集开始了。很多时候,一个终止状态被表示为一个特殊的状态,其中所有动作都转换到同一个终止状态,并且 奖励 0。****

****状态-值函数:值函数

时间差分(TD): 时间差分是一种结合了动态规划蒙特卡罗 原理的学习方法;它像蒙特卡罗一样“在飞行中”学习,但像动态编程一样更新它的估计。最简单的时间差分算法之一被称为一步 TDTD(0) 。根据以下更新规则更新 值函数 😗*

其中 V 为价值函数, s状态r奖励γ贴现因子α 为学习率,方括号中的项被称为时间差误差。

****端子状态:状态

上自信界(UCB)😗*【UCB】是一种 探索 方法,它试图确保每个 动作 都被很好地探索。考虑一个完全随机的探索 策略——意思是,每个可能的动作都有相同的机会被选中。有些行动可能会比其他行动探索得更多。一个动作被选中得越少,这个 代理 就越没有信心能左右其预期的 奖励 ,而其 剥削 阶段就可能受到伤害。UCB 的探索考虑了每个动作被选择的次数,并给予那些探索较少的动作额外的权重。从数学上来说,所选择的动作是通过以下方式挑选的:

其中 R(a) 是动作 a 的预期总体回报, t 是采取的步骤数(总共选择了多少个动作), N(a) 是选择动作 a 的次数, c 是可配置的超参数。这种方法有时也被称为“通过乐观进行探索”,因为它赋予较少探索的行为更高的价值,鼓励模型选择它们。

****价值函数:通常表示为 V(s) (有时带有π下标),价值函数是对整体预期 奖励 的度量假设 代理 处于 状态 s 然后继续播放直到 第一集 结束它在数学上定义为:

虽然它看起来确实类似于 Q 值 的定义,但有一个隐含的——但很重要的——区别:对于n = 0,v(s)的奖励 r⁰是刚处于状态 s进行任何动作之前的预期奖励,而在 q 值中,r⁰是在进行某个动作之后的预期奖励。这种差异也产生了 优势函数

新手的完整 TensorFlow 教程

原文:https://towardsdatascience.com/the-complete-tensorflow-tutorial-for-newbies-dc3acc1310f8?source=collection_archive---------16-----------------------

从安装到构建用于手势识别的神经网络

Photo by Jan Kahánek on Unsplash

TensorFlow 是一个用于机器学习和深度学习的健壮框架。它使得构建模型和为生产部署模型变得更加容易。

它是开发人员中最受欢迎的框架。这并不奇怪,因为该框架也可用于基于网络的机器学习( TensorFlow.js )和设备上的推理( TensorFlow Lite )。此外,随着最*发布的 TensorFlow 2.0 ,该框架将很快变得更容易使用,因为语法将被简化,减少了 API,并且它将支持 Julia 编程语言。

现在是入门 TensorFlow 的大好时机,掌握它是数据科学家的重要资产。

本教程将帮助您开始使用 TensorFlow。注意 TensorFlow 2.0 并不稳定,所以我们将重点放在之前的稳定版本上。

我们将首先以最简单的方式安装框架,然后我们将编写一些函数来学习语法和使用一些 API。最后,我们将编写一个能够识别手势的模型。

我们开始吧!

关于机器学习、深度学习和人工智能的实践视频教程,请查看我的 YouTube 频道

Yep, our model will recognize these signs!

装置

我们安装 TensorFlow 吧!我们将在 Windows 机器上完成安装过程。

如果您在其他操作系统上遇到困难,请随时发表评论。

步骤 1 —下载 Anaconda

第一步是下载并安装 Anaconda 。Anaconda 是一个使数据科学变得更容易的*台;它提供了对最流行的工具和库的访问,并且它还充当了一个包管理器。

下载适用于您的操作系统的 Anaconda 发行版,并遵循安装步骤。接受默认设置是安全的。安装可能需要几分钟,因为 Anaconda 捆绑了很多东西。

安装完成后,在 Windows 搜索栏中搜索 anaconda 提示符。打开应用程序,您应该会看到类似这样的内容:

Anaconda prompt window

太好了!

步骤 2-安装 TensorFlow

现在,要安装 Tensorflow,只需输入:

pip install tensorflow

等待安装完成,瞧!您现在可以使用 TensorFlow 编写代码了!

正在热身

其余的教程将遵循这个笔记本。您还可以在整个教程中获取任何需要的实用程序。觉得卡住了就参考一下吧!

计算 sigmoid 函数

让我们用张量流来计算 sigmoid 函数。这是完整的代码块。然后,我们将遍历代码正在做什么。

一个 TensorFlow 程序通常分为两部分:一个构建阶段和一个计算阶段

在构建阶段,我们使用一个占位符来创建一个变量。我们需要定义变量的类型,并给它一个名字。然后,我们简单使用内置的 sigmoid 函数。请注意,在构建阶段,没有正在计算的值。事实上,代码根本不运行。这就是为什么我们需要一个计算阶段。

在计算阶段,我们创建一个会话,并将计算结果赋给另一个变量。注意该函数以 z 作为输入,但是在函数内部使用了 x ,因此需要 feed_dict

并且整个块单元被称为张量流。所有 TensorFlow 程序都是这样构建的:

  • 在构建阶段定义变量和计算步骤
  • 在计算阶段运行计算

理解这个结构是掌握 TensorFlow 的关键。一旦你熟悉了这一点,你就能编写更高级的程序了。

计算成本

现在,让我们计算一个分类问题的成本函数。我们习惯于计算交叉熵函数并从头开始编写它。现在,让我们看看 TensorFlow 如何让我们轻松实现相同的结果:

就是这样!只有一行定义了损失函数!

再次注意我们如何使用占位符,并识别上面代码单元的构造和计算阶段。

一键编码

一键编码是一种将多类标签转换为 0 和 1 的向量的技术。

让我们看看如何在 TensorFlow 中实现:

再一次,TensorFlow 使得操纵我们的数据变得非常容易。

既然你对一般的结构已经比较熟悉了,让我们继续建立一个实际的神经网络来对手势进行分类!

手势识别

在这个小项目中,我们将建立一个手势识别系统。具体来说,我们的神经网络将识别手是否正在表达从 0 到 5 的数字。

让我们加载数据集,看看一个示例图像:

您应该会看到:

A sample of the dataset

在构建我们的模型之前,我们将首先展*图像,归一化它们的特征,并对标签进行一次性编码:

现在开始建立模型!

创建占位符

首先,我们编写一个函数来为特征矩阵和标签矩阵创建占位符:

然后,我们编写一个函数来初始化权重矩阵和偏差矩阵:

厉害!现在,我们必须定义正向传播:

注意,在上面的代码单元中,注释显示了 numpy 中的等价语法。

最后,我们定义一个函数来计算成本:

现在,我们准备将所有内容组合成一个模型!

等等…

反向传播呢?与之前我们从头开始编写反向传播的帖子不同,深度学习框架只需几行代码就能自动完成!

将所有内容放入一个模型中

现在,我们将所有函数合并到一个模型中,我们将使用小批量梯度下降来训练神经网络:

现在,我们用下面的代码行运行模型:

parameters = model(X_train, Y_train, X_test, Y_test)

您应该得到:

太好了!测试精度不是很好,因为我们只使用了整个数据集的一小部分,而且我们没有训练很长时间。本教程的主要目标是习惯 TensorFlow 并对其 API 有一个大致的了解。

干得好!您现在已经准备好将 TensorFlow 用于更高级的神经网络和应用程序。在接下来的帖子中,我们将探索不同的神经网络结构,并使用 TensorFlow 或 Keras (另一种深度学习框架)来构建它们。

敬请关注,继续学习!

困惑矩阵:揭开面纱

原文:https://towardsdatascience.com/the-confusion-matrix-unveiled-2d030136be40?source=collection_archive---------19-----------------------

如何衡量分类性能…用口袋妖怪!

Image from: Source

所有好的经验如果伪装成冒险会更好的学习…我们今天的任务将是发现传说中的口袋妖怪,以便抓住他们。为此,我们将使用我们所掌握的最好的工具:机器学习!

这篇文章的目的是解释混淆矩阵是什么,它在评估分类算法性能中的重要性,以及如何用它来比较不同的模型。一切从一开始就会解释清楚,项目中使用的代码会在文章末尾提供,供您随意摆弄和复制。

数据集

正如你可能已经猜到的,我们将使用著名的 完整口袋妖怪数据集 ,你可以在这里下载。该数据集包含了 802 只口袋妖怪的 41 个特征,如它们的名字、身高、体重、攻击和防御等..我们将关注的是:一个二元特征,它告诉我们口袋妖怪是否是传奇

Can we catch them all?

在包含所有代码的笔记本中,您会发现一个探索性数据分析 (EDA)阶段,在这个阶段,我会对数据进行一点探索,构建虚拟变量,并进行一些清理。这个阶段不在这里讨论,所以我们可以直接跳到更困扰我们的问题:分类结果。

分类结果的问题

当我们有一个回归算法时(例如,我们想估计房子的价格),评估这个算法做得有多好并不太难。我们可以简单地计算预测的每个数值和房屋的实际值之间的差异,并使用一个容易理解的指标来推断整体性能,如*均百分比误差 (MAPE)或均方误差 (MSE)。

的分类中,却不是那么微不足道的。例如,让我们考虑一个二元分类问题。我们的数据中有两个不同的类别(就像我们案例中的传奇和非传奇口袋妖怪),通常用 0(通常用于虚假案例)和 1(通常用于真实案例)表示。评估性能的最简单方法是使用模型的精确度,这是考虑到正确分类的样本数和样本总数而简单计算的。

accuracy formula

这个指标的问题是,尽管它给了我们一个模型表现如何的总体估计,它不包含我们的模型在不同类上表现如何的信息。让我们看一个例子,为什么这是相关的。

考虑一个虚构的口袋妖怪世界,我们总共有 1000 个口袋妖怪,在这 1000 个中,只有 10 个是传奇。如果我们用一个糟糕的机器学习算法构建了一个令人敬畏的 Pokedex 来告诉我们一个口袋妖怪是否是传奇,并且它每次都告诉我们这个口袋妖怪不是传奇,那么会发生两件事:

  • 1 。在所有的口袋妖怪中,因为只有 10/1000 = 1%是传奇,所以我们的模型仍然具有以下准确性:

accuracy of our model

99%的准确率。哇哦。理论上这看起来很棒,但是我们的算法真的做得很好吗?

  • 2 。作为口袋妖怪大师,我们会变得非常沮丧,因为我们已经购买了一些非常昂贵的主球,以便能够抓住传说中的口袋妖怪并提升我们的游戏,但每次我们面对新的口袋妖怪时,尽管它们看起来多么强大,我们的 Pokedex 与机器学习算法一起告诉我们它不是传说中的。

What can we do then? Source

通过仅使用准确性来评估我们的机器学习模型的性能,我们错过了许多相关信息。此外,当比较不同的模型时,如果我们只使用这个指标,我们只能看到一个非常宽泛的画面,而没有进一步研究它们可能的差异。

不过不要担心,还有其他更具体的指标和工具可以帮助我们发现这些差异,并让我们更深入地了解我们的模型是如何执行的。这些工具中的第一个是混淆矩阵。让我们来看看吧。

混乱矩阵

混淆矩阵为评估分类算法的结果提供了一种比准确度更精细的方法。它通过将结果分成在矩阵中连接在一起的两个类别来做到这一点:数据点的预测标签和实际标签

在继续之前,让我们看一个混乱矩阵的图像,这样你就能知道我在说什么。

Standard confusion matrix for binary classification

正如您从这个图中看到的,行代表我们的测试数据的预测标签,列代表实际的或真实的标签。有时您会发现这个矩阵被转置了,行代表实际值,列代表预测值,所以在解释它时要小心。

让我们描述一下这个矩阵中每个元素的含义,这样你就能明白它为什么如此有用。当我们看到一个真实的例子时,这些字母( TPFPFNTN )将被数字所取代,从中我们可以得出各种见解:

  • TP —真阳性:该块是真预测与真标签的交集;其代表具有由我们的算法或模型正确预测的真实标签的数据点。在我们的口袋妖怪例子中,这将代表被正确识别的传奇口袋妖怪的数量。
  • FP —假阳性:这个块是真预测和假真标签的交集。它表示具有虚假真实标签但被模型预测为真实的数据点。在我们的情况下,这将是口袋妖怪,不是传说中的,但已经被我们的算法预测到了。
  • FN —假阴性:这个块是假预测与真标签的交集。它表示具有被算法错误地预测为假的真实真实标签的数据点。在我们的情况下,这将是传说中的口袋妖怪被预测为常见的。
  • TN —真阴性:这个块是假预测和假真实标签之间的交集。它表示具有被模型正确分类为假的假真实标签的数据点。在我们的例子中,这个单元对应于已经被正确分类的非传奇口袋妖怪。

真阳性和真阴性表示我们的模型已经正确分类的数据点,而假阳性和假阴性表示我们的模型已经错误分类的数据点。

Correct and Incorrectly classified blocks of the Confusion Matrix

假阴性和假阳性很容易混淆。“哪个代表什么?”你可能会发现自己在问。为了避免这种混淆(没有双关的意思),把假阴性想象成假阴性预测(所以是真阳性),把假阳性想象成假阳性预测(所以是真阴性)。

在我们的示例中,在进行了训练-测试分离、对训练数据进行了非常简单的逻辑回归训练,并使用对测试数据进行的预测构建了混淆矩阵之后,我们得到了以下结果:

Confusion matrix for our example using Logistic Regression

这个混淆矩阵告诉我们的是,在我们的数据集中的 25 个传奇口袋妖怪中,23 个被正确地分类为传奇,2 个被错误地分类为非传奇(左下方的假阴性块)。此外,我们的模型在分类非传奇口袋妖怪方面做得很好,因为它得到了所有正确的预测(矩阵的右栏)。

这里的准确度也是 99%,但是,我们现在可以比仅仅评估这个数字更深入。让我们看看混淆矩阵如何帮助我们做到这一点:想象我们是一个痴迷的口袋妖怪训练师,想要捕捉传说中的每一只口袋妖怪。随着这个逻辑回归模型在我们的 Pokedex 上运行,将会有两个传说中的口袋妖怪,我们永远无法识别,因此我们永远无法实现我们的梦想。

有了这些信息,我们现在可以决定尝试不同的算法或模型,这将完美地分类所有传说中的口袋妖怪。让我们训练一个随机森林,并使用混淆矩阵评估其性能:

Confusion matrix for our example using Random Forest

酷!有了随机森林,我们现在可以正确地分类所有的传奇口袋妖怪,然而,有一个非传奇口袋妖怪被分类成这样(右上角的假阳性)。我们可以不断尝试各种模型,直到找到完美的模型,但在现实生活中,这种模型很少存在。现在发生的是,我们必须选择我们更喜欢哪种错误。

我们更喜欢错过 2 个传奇口袋妖怪还是捕捉一个不是传奇的想法呢?这很大程度上取决于我们的情况和这个机器学习项目的目标。我们可以进一步分析错误,并获得关于正在发生的事情的更多信息。

Errors of both models

从上图中我们可以看到,我们的逻辑回归将塔普菲尼卡璞·鸣鸣归类为非传奇,而他们实际上是传奇。另一方面,兰登森林将巨金怪归类为传奇人物,而他不是。

现在该由我们来决定了。知道了这些错误,我们是否介意错过这两个,以及可能错过未来加入口袋妖怪社区的其他传奇口袋妖怪,或者在像巨金怪这样的口袋妖怪上使用我们珍贵的主球,以及可能在其他不那么有价值的新口袋妖怪上出现?

无论我们做出什么决定,混淆矩阵都允许我们在知道将会发生什么的情况下做出这个决定,这正是我们想要的:使用这些模型做出更明智和增值的决策。

从混淆矩阵中可以提取出许多度量标准,告诉我们这样的事情:我们的模型在 0 或 1 上做得如何,在预测值中有多少是正确的,以及其他一些。让我们来看看其中的一些。

从混淆矩阵中导出的度量

可以从混淆矩阵中得出的两个主要指标(除了准确性)是精度召回。让我们恢复初始的、通用的混淆矩阵,看看这些来自哪里。

Standard confusion matrix for binary classification

  • 模型精度使用预测标签的真实行计算。它告诉我们,当我们的模型做出正面预测时,它有多好。在我们的例子中,它会告诉我们,在我们算法的所有积极预测中,我们有多少真正的传奇口袋妖怪。

Formula for the precision of the model

当我们想要避免我们算法的真实预测中的错误时,这个度量是重要的。在我们故事的例子中,如果我们知道我们只有 25 个传说中的口袋妖怪,并且我们正好买了 25 个主球来捕捉它们,那么 100%的精确度将意味着我们的 Pokedex 在看到它时将正确地识别每个传说中的口袋妖怪,不会将非传说中的与传说中的混淆。我们训练的逻辑回归模型就是这种情况。

然而,该算法只预测了总共 23 个传奇口袋妖怪,而实际上有 25 个。为了评估这个错误,我们有另一个度量:召回。

  • 我们型号召回是使用实际或真实标签的 True 列计算的。它告诉我们,在我们的真实数据点中,算法或模型正确地捕捉了多少。在我们的例子中,它将反映有多少传奇口袋妖怪被正确地识别为传奇。

Formula for the recall of the model

当我们想要尽可能地识别数据的最真实的实例时,这个指标是很重要的。在我们的例子中,如果我们不想错过一个传说中的口袋妖怪,我们会考虑这个指标。我们的随机森林算法具有 100%的召回率,因为它正确地发现了所有传说中的口袋妖怪。回忆有时也被称为敏感度

总而言之,精度与我们的模型在做出正面预测时的表现有关,而召回指的是我们的模型在识别正面真实标签时的表现。

还有一个组合指标,即考虑了精确度和召回率的 F1-Score ,当我们想要在两者之间进行折衷,并且想要一个不同于精确度的指标时,或者当我们想要快速比较两个分类器时。F1 的公式如下:

Formula for the F1 Score

该公式表示精度和召回率的调和*均值。与给所有值相同权重的普通算术*均值相反,调和*均值给低值更高的权重。这意味着只有当精确度和召回率都很高时,我们才会有很高的 F1 分数。

结论

我们已经看到了混淆矩阵是什么,以及如何使用它来评估分类模型的性能我们还探讨了从它衍生的不同指标。在下一篇文章中,我们将看到使用 ROC 曲线和 AUC 来做这件事的更多方法。

这个简单项目的代码可以在我的 Github 上找到

来看看 关注我上媒 ,敬请关注!

One of our precious Masterballs

就这些,我希望你喜欢这个帖子。欢迎在 @jaimezornoTwitter 上关注我。还有,你可以看看我其他关于数据科学和机器学习的帖子这里 。好好读!

人工智能地牢 2 的创造者如何使用 GPT 2 来创建永无止境的冒险游戏

原文:https://towardsdatascience.com/the-creator-of-ai-dungeon-2-shares-gpt-2-finetuning-advice-e5800df407c9?source=collection_archive---------11-----------------------

想象无限的电子游戏

The TI-99/4A computer I used to play text-based adventure games. (Credit: Rama & Musée Bolo on Wikipedia)

小时候,我在家里的 TI-82 上用盒式磁带数据驱动器玩基于文本的冒险游戏。我对斯科特·亚当斯的经典海盗冒险游戏记忆犹新,这是一款早期基于文本的视频游戏。

游戏很简单。你首先站在伦敦的一套公寓里,必须通过键入简单的命令,如“向西”、“爬楼梯”或“帮助”,导航到一个神秘的岛屿当你输入“拿朗姆酒”时,游戏回应道:“有一种奇怪的声音……我想是我。嘻嘻。”)

回到那些美好的旧时光,我不断地陷入早期基于文本的游戏的叙事约束。“我不知道那是什么”和“我不能朝那个方向走”这两句话至今仍萦绕着我,追寻着由人类作家创造和编码的想象世界的艰难界限。

The old-school Pirate Adventure text-based adventure emulated on the Frotz app.

见见 AI 地牢 2 的创作者

游戏创作者 Nick Walton 上周发布了 AI Dungeon 2,使用 OpenAI 的超能力 GPT-2 语言模型的完整 1.5B 参数版本来构建一个无限的基于文本的幻想游戏。

在 AI 地下城 2 中,我扮演了一个探索危险法术库的巫师,然后我的女儿扮演了一个保护她的城堡免受兽人入侵的贵妇。

游戏从来没有告诉我们“我不知道那是什么”和“我不能朝那个方向走。”感谢强大的 GPT 2 故事引擎,AI 地下城 2 总是试图生成一个新的场景或新的对话,不管我们的请求有多奇怪。

就我个人而言,我非常喜欢魔法书和魔法图书馆。所以我花了很长时间躲在一个废弃的城堡里看书。

A few paragraphs from one of my AI Dungeon 2 adventures.

目前,你可以在这个 Google Colab 链接上玩游戏

正如尼克在网站上解释的那样,游戏正在转型,因为他要应对“疯狂的下载费用”,这迫使他寻求一种新的发行模式:

“我们使用 bittorrent 作为临时解决方案来托管游戏文件并保持游戏的活力。速度不快,但这是我们目前最好的了。如果你想帮忙,你能做的最好的事情就是 下载这个带有游戏文件的种子文件尽你所能无限期地下载。这将有助于新玩家更快地下载这款游戏,并发现 AIDungeon2 的广阔世界!”

我和尼克讨论了《人工智能地下城 2》这个无尽的人工智能生成的游戏世界背后的硬件、数据集和编程。

自从我们的采访之后,Nick 更新了他的 Patreon 页面,更新了关于即将推出的付费订阅模式的应用版本的消息。

“该应用的 alpha 版本正在运行,我们拥有在云上运行该模型的基础设施。在开始测试之前,我们还需要一两天的测试,但我们希望在本周末开始。”

这是我们关于游戏采访的完整文本…

创建您的训练数据集需要多长时间?

数据集是大约 30 MB 的文本冒险故事,我是从 chooseyourstory.com 的网上搜集来的。我大概花了 20 个小时左右来构建 web scraper,运行它并管理数据集。我想确保我使用的所有数据都是正确的格式。

我的建议是,尤其是在文本中,少量的高质量数据比大量的低质量数据更有价值。

在 GPT-2 产生的故事中,你采取了哪些编码步骤来维护上下文?

我使用了一个包含 8 个高性能图形处理器的 DGX 1 来训练。我最终使用的模型花了大约 12-16 个小时来训练。

我已经尝试了很长时间,尝试了很多东西。

对正确的文本冒险数据进行微调可能是我为保持叙述清晰所做的最重要的事情。

增加内存也有所帮助。在过去,记忆更接*于 2(最后 2 个动作-结果对),上下文句子更重要,而现在记忆设置为 10,我不确定它是否真的重要。

我也做了相当多的工作来修改玩家的输入,使其符合正确的格式,并删除模型输出,使其不包含动作线(用“>”符号表示)

您还修改了您的模型,以减少 GPT-2 输出中的重复。你能解释一下吗?

Salesforce CTRL 模型中,他们给生成一个已经生成的单词的概率加上一个惩罚,将它的对数概率除以大约 1.2。

这有助于避免模型陷入说同一个单词或一组单词的困境。正因为如此,CTRL 模型能够使用比 GPT-2 低得多的温度(后者需要高温来防止重复)。通过给 GPT-2 增加这个惩罚,我能够将温度降低到 0.4,这有助于连贯性,同时仍然避免重复(大部分)

关于你的游戏和你的微调模型所产生的故事,你对版权和知识产权有什么看法?

就像人类从其他作者那里学到了很多如何写作的知识一样,我很乐意让模特在其他人的作品上接受训练,以学习如何写得更好。就一个模型输出的东西而言,我不反对人们用它来写奇幻小说或在网上发布他们的冒险经历。

人工智能地牢 2 不是一个讲故事的人。人们发布的故事很有趣,不仅仅是因为人工智能,还因为人类如何与它互动,以创造有趣和有趣的故事。

您希望在未来的迭代中向数据集添加什么类型或其他格式?

我当然想加入更多的类型,但我下一步要做的是得到一个更好的主机解决方案,并完成我的反向人工智能地下城模式,其中人工智能是玩家,人类是地下城主。

回归不连续设计:因果推理皇冠上的宝石

原文:https://towardsdatascience.com/the-crown-jewel-of-causal-inference-regression-discontinuity-design-rdd-bad37a68e786?source=collection_archive---------14-----------------------

实验和因果推理

带 R 代码的 RDD 完全指南

Photo by Harley-Davidson on Unsplash

为什么是哈利?

B/C 数据科学摇滚!

简介

在一系列的帖子(为什么实验双向因果方向陷阱关联&因果自然实验)中,我们已经涵盖了包括什么、为什么以及如何进行实验的主题。不管它们看起来多么令人向往,出于各种原因,不可能对所有类型的商业问题进行实验。

这样做可能是不道德的。假设我们对本科教育对学生未来收入的影响感兴趣。随机分配一些高中生接受教育,而不分配给其他人,这从根本上来说是错误的。

或者,它可能是昂贵的,耗时的,或技术上不可行的。即使是像网飞Airbnb 这样的顶级公司,也无法始终保证随机化在个人用户层面的内部有效性。

在这些情况下,我们不得不依靠其他方法,包括观察和准实验设计,来推导因果关系。回归不连续设计 RDD 作为一种成熟的准实验技术,经历了很长一段时间的休眠,直到最*才强势回归。

在这篇文章中,我们详细阐述了 RDD 的基本概念,如研究意识形态,统计假设,潜在结果框架(POF),优点,局限性和 R 说明。

什么是 RDD?

首先,这是一种带有前后测试设计的准实验方法,意味着研究人员在干预(治疗)之前和之后实施感兴趣的措施。

通过设置一个“截止”点,我们选择略高于阈值线的受试者为治疗组,略低于阈值线的受试者为对照组。由于这两个组在地理上彼此接*,我们可以控制潜在的混杂变量,并将其视为一个 好像 随机治疗分配。如果潜在结果有任何不同,我们可以将其归因于治疗的存在。

这种“好像”随机成分使我们相信 RDD 可以像随机对照试验(RCT)一样准确地得出因果推断。

以统计形式:

哪里

Di:受试者是否接受了治疗

Xi:强迫(又名得分或跑动)变量

c:截止点

简单地说,如果受试者 I 的 Xi 值高于截止值,则受试者 I 接受治疗。

假设,我们感兴趣的是获得基于成绩的奖学金对学生未来成功的因果影响。主要的评选标准是 GPA:GPA 在 3.5 以上(≥3.5)的都拿到奖学金,线下的都没拿到,不管多接*。换句话说,绩点 3.51 的学生和绩点 3.49 的学生之间没有显著差异。

采用 RDD 框架,我们可以通过以下步骤估计因果关系。

  1. 选择 勉强 有资格获得奖学金的学生(绩点在 3.51 到 3.55 之间)作为治疗组。
  2. 选择略低于分数线的学生作为对照组(其*均分在 3.45 至 3.49 之间)。
  3. 比较这两组之间的差异。

让我们看一下图解。

Plot 1

哪里

D_i = 1:获得奖学金的人(治疗组)

D_i = 0:没有的人(对照组)

c: GPA = 3.5

Plot 2

从图 2 中,我们可以看到有奖学金的学生用蓝色表示,没有奖学金的用红色表示。

Plot 3: POF and LATE

在拟合回归线之后,我们观察到两条回归线之间存在不连续。因此,我们得出结论,奖学金确实有所不同。

结论是:给学生更多的经济支持!

潜在成果框架

在其 POF 中,RDD 有以下表示:

该估计值是两个回归函数在分界点 c 处的差值。换句话说,RDD 是在分界点而不是在个体和群体水*上估计局部*均治疗效果(晚期)。一些人认为,对 RDD 来说,能够晚测既是一件幸事,也是一个缺点。在试图概括这些发现时要小心。

统计假设

有两个假设。

  • 1。独立作业。

潜在受益人或任何其他利益相关者不会影响分配流程。比方说,*均绩点为 3.4 的学生不能告诉管理员将分数线设置为 3.4,这样他/她就有资格。

  • 2。条件回归函数的连续性

E[Y(0)|X=x]和 E[Y(1)|X=x],在 X 中是连续的。而且,条件分布函数在协变量中是光滑的。这一点很重要,因为我们想排除其他协变量在分界点引起不连续性(回归线中的跳跃)的可能性。

r 插图

我们将使用模拟数据。

这是上例的回归模型:

#setwd(“/Users/andy/desktop”)#generate a sample data#cutoff point = 3.5GPA <- runif(1000, 0, 4)future_success <- 10 + 2 * GPA + 10 * (GPA>=3.5) + rnorm(1000)#install and load the package ‘rddtools’
#install.packages(“rddtools”)library(rddtools)data <- rdd_data(future_success, GPA, cutpoint = 3.5)# plot the dataset
plot(data,col = “red”,
 cex = 0.1, 
 xlab = “GPA”, 
 ylab = “future_success”)

# estimate the sharp RDD model
rdd_mod <- rdd_reg_lm(rdd_object = data, slope = “same”)summary(rdd_mod)Call:
lm(formula = y ~ ., data = dat_step1, weights = weights)Residuals:
    Min      1Q  Median      3Q     Max 
-3.3156 -0.6794 -0.0116  0.6732  2.9288Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 16.96270    0.06878  246.63   <2e-16 ***
D           10.13726    0.12352   82.07   <2e-16 ***
x            2.00150    0.03330   60.10   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 1.025 on 997 degrees of freedom
Multiple R-squared:  0.9577, Adjusted R-squared:  0.9577 
F-statistic: 1.13e+04 on 2 and 997 DF,  p-value: < 2.2e-16

估计效果为 10.13,在 0.001 水*显著。

# plot the RDD model along with binned observations
plot(rdd_mod,cex = 0.1, 
 col = “red”, 
 xlab = “GPA”, 
 ylab = “future_success”)

这是效果的直观表示,我们可以在截止点看到“跳跃”。

什么时候为什么去 RDD?

  • 当随机化不可行时,这是一个很好的选择。
  • 非常适合基于规则的问题(例如选举、项目评估等)。).
  • 易于在实践中应用,假设不太严格。
  • 如果应用得当,具有很强的内部效度和因果效应。

Medium 最*进化出了它的 作家伙伴计划 ,支持像我这样的普通作家。如果你还不是订户,通过下面的链接注册,我会收到一部分会员费。

[## 阅读叶雷华博士研究员(以及其他成千上万的媒体作家)的每一个故事

作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…

leihua-ye.medium.com](https://leihua-ye.medium.com/membership)

喜欢读这本书吗?

请在 LinkedInYoutube 找到我。

还有,看看我其他关于人工智能和机器学习的帖子。

word 嵌入层的关键-第 1 部分

原文:https://towardsdatascience.com/the-crux-of-word-embedding-layers-part-1-97e4a612277d?source=collection_archive---------20-----------------------

最后一个故事中,我们讨论了 RASA NLU,这是一个开源的对话式人工智能工具。我们使用 Tensorflow 管道进行意图分类。流水线有不同的组件,如记号赋予器、特征赋予器、实体提取器和意图分类器。我们的意图分类器本身有子组件,如 TensorFlow 嵌入。现在我们将讨论嵌入层及其在管道中的重要性。

Parallel dots

目标

人类可以非常直观地处理文本格式,但是如果我们在一天内生成数百万甚至数十亿个文档,我们不可能让人类执行所有的任务。它既不可扩展也不有效。因此,我们有计算机来执行所有使用机器学习技术的任务。在本文中,我们将讨论各种可用的嵌入层。我们这篇文章的目标是实现这些单词嵌入层。我们将深入了解这些层。

什么是文字嵌入?

嵌入不过是把东西从一个维度放到另一个维度。它从高维空间中选取点,放入低维空间。单词嵌入是将文本转换成数字,并且这些数字可能具有相同文本的不同数字表示。简单地说,它是文档(句子)词汇的表示。

为什么要嵌入单词?

大多数机器学习算法甚至深度学习架构都能够处理句子或文本。我们可以对每个字符采用基于字符的编码。但是它不会帮助我们理解一个词的意思。

例子:我们来举个例子。一种常见的简单字符编码是 ASCII(美国信息交换标准代码)。

ASCII of sweat

ASCII of waste

所以,你可以看到汗水和浪费的意义是不同的。但是它们仍然共享 ASCII 值。对于计算机来说,这可能是一项令人生畏的任务。

一个词嵌入有两类。

  1. 简单的基于频率的嵌入
  2. 基于预测的嵌入方法

a) 计数矢量器&一键编码

I . count vectorizer 提供了一种简单的方法,既可以标记一组文本文档,构建已知单词的词汇表,还可以使用该词汇表对新文档进行编码。

二。一键编码是将分类变量表示为二进制向量。每个整数值都表示为一个二进制向量,除了用 1 标记的整数索引之外,其他都是零值。

三。余弦相似度是一种度量,用于确定文档的相似程度,而不考虑它们的大小,并且它测量在多维空间中投影的两个向量之间的角度的余弦。

所以以(I,ii,iii)为例

Example

Cosine distance

x 和 y 的余弦相似度是 0.75

b) TF-IDF 矢量器

TF 表示词频,idf 表示逆文档频率。TF 计算所有项,并对它们一视同仁。

TF= term count/document word count

IDF 代表逆文档频率,表示日志。对数是指数运算的反函数。1614 年,天文学家和数学家约翰·耐普尔首先发现了对数,用来解决复杂的数学运算。

IDF = log(number of documents/ number of documents with term)

为什么要日志?

Tenor

我们可以将 log 与 Zipf 定律联系起来,Zipf 定律是一条经验定律使用数理统计方法制定,并以语言学家 George Kingsley Zipf 的名字命名。它指出,给定一个使用的单词的大样本,任何单词的频率都与其在频率表中的排名成反比。

Zipf’s law

TF-IDF 的主要目标是缩小语料库中信息量较少的术语的影响。在语料库中频繁出现但意义较小的术语,如(“this”、“will”)。我们需要降低常用词的权重,同时降低生僻词的权重。

示例:假设我们有一个包含 1800 个单词的文档,该文档有 50 个出现术语“apple”的实例。

**TF = 50/1,800 = 0.027**

现在,假设我们有另一个包含 1000 万个单词的文档,单词“apple”出现了 1250 次,那么 IDF 和 TF-IDF 将是:

**IDF = log(10,000,000/1,250) = 3.9****TF-IDF = 0.027 * 3.9 = 0.10**

所以现在我们已经减轻了我们任期的分量。

c) word2vec

可以说是自 2013 年以来最重要的单词嵌入模型。如果有两个单词 w1 和 w2,并且如果它们相似,那么向量 v1 和 v2 会更接*。Word2Vec 是使用浅层神经网络学习单词嵌入的最流行的技术之一。它是由谷歌的托马斯·米科洛夫于 2013 年开发的。它用于学习单词的向量表示,称为“单词嵌入”,并作为预处理步骤完成,之后学习的向量被输入到模型中,以生成预测并执行各种有趣的事情。

word2vector

Word2vec 构建于:

  1. 滔滔不绝的话
  2. 跳过克

一.连续词汇袋(CBOW)

CBOW 的核心思想是给定的上下文词预测焦点词。

简单来说就是使用目标单词 ft 前后的 n 个单词进行预测。你也可以称之为多类分类器。我们的目标是在给定当前(聚焦)单词的情况下,找到对预测周围单词有用的单词表示。

让我们从神经网络的角度来理解 CBOW(最后😍)

CBOW (NN Intuition)

二。跳过程序

Skip-gram 的工作方式与 CBOW 略有不同。我们可以说 skip-gram 是 CBOW 的反义词。skip-gram 背后的核心思想是给出一个聚焦的单词来查找上下文单词。

Skip-gram (NN intuition)

Word2vec 提供了在(CBOW 和 skip-gram)之间进行选择的选项。这些参数是在模型训练期间提供的。可以选择使用 softmax 或分层 softmax 层。

现在我们来计算时间复杂度

  • CBOW → 1 软最大值
  • Skip-gram → k softmax

因为 Skipgram 有 k 个 softmax,所以计算量更大。

利弊

CBOW:

训练速度更快

对常用词更有效

跳过程序:

较慢/困难/复杂

可以很好地处理较小的数据

对不常用的单词更有效

注意:如果上下文单词增加,维数 N 增加,如果 N 增加,word2vec 工作得更好。

让我们计算重量

2250 万的重量😧

Giphy

训练 2250 万个重量需要叶…

等等!优化前来救援☺️

算法优化简介:

分级 softmax

传统的 softmax 方法在大型语料库上可能是昂贵的。因此,我们将使用分层的 softmax →修改的 softmax 使其达到最优。

分层 softmax 是受(霍夫曼)二叉树(数据结构😋)是由 Morin 和 Bengio (2005)提出的。它本质上是用一个以单词为叶子的分层层来替换*面的 softmax 层。通过使用数据结构,我们最终能够轻松有效地解决问题。

假设我有 8 个包含概率的激活单元(每个单词 wn)。所以 wn 的和将会是 1。我们的任务是找到概率最高的单词。

我只需要 3 个激活单位就能得到我的单词 w3,而不是应用 8 个激活单位。因此,通过使用二叉树方法,我们的时间和计算复杂性大大降低。

**log base 2 (8) = 3**

阴性采样

负采样采用训练样本,并且只修改一小部分权重,而不是所有权重。使用负采样,我们随机选择少量的词来更新权重。

Negative sampling

  1. 始终保持目标词(在我们的例子中是 3)
  2. 在所有非目标词中,不要更新所有词,只需使用样本。对于采样,我们有一个如上所示的公式。

在下一篇文章中,我们将深入了解算法优化,如 softmax 函数、分层 softmax、负采样、噪声对比估计、快速文本、glove 和脸书的拼写错误遗忘(单词)嵌入(MOE)。

如有疑问,请通过shubhamdeshmukh @Yahoo . in联系作者。如果你对数据科学/机器学习有热情,请随时在 LinkedIn 上加我。

维度的诅咒

原文:https://towardsdatascience.com/the-curse-of-dimensionality-50dc6e49aa1e?source=collection_archive---------0-----------------------

Photo by rawpixel.com from Pexels

为什么高维数据会如此麻烦

你有没有在给别人讲故事的过程中,或者在对复杂的事情进行冗长的解释时,对方看着你问道:“这有什么意义?”

第一,你的朋友太粗鲁了!

但是我们也站在你朋友的立场上——我们都是忙碌的人,有地方要去,有朋友要见。我们希望我们的信息快速而中肯。

这就是降维的本质。当面对一大堆数据时,我们可以使用降维算法让数据“切中要害”。

在之前的一篇文章中,我介绍了 PCA ,这是一种强大而通用的降维算法,可以挖掘我们数据中的潜在趋势。还有其他选择——比如非负矩阵分解、线性判别分析等等(我保证以后会谈到这些)。

然而,今天我们的话题不是关于一个特定的算法,而是关于我们为什么首先需要降维算法——维度的诅咒。

什么时候数据是高维的,为什么这可能是一个问题?

维数灾难听起来像是直接来自盗版电影,但它真正指的是当你的数据有太多的特征时。

这个短语是理查德·贝尔曼发明的,用来表达使用暴力(也叫网格搜索)来优化一个有太多输入变量的函数的困难。想象一下,运行一个 Excel 规划求解优化,其中有 100,000 个可能的输入变量,或者换句话说,有 100,000 个潜在的杠杆可以利用(很肯定这会使您的 Excel 崩溃)。

在当今的大数据世界中,它还可以指当您的数据具有大量维度时出现的其他几个潜在问题:

  1. 如果我们的特征比观察值多,我们就有可能过度拟合我们的模型——这通常会导致糟糕的样本外性能。
  2. 当我们有太多的要素时,观测值会变得更难聚类-信不信由你,过多的维度会导致数据集中的每个观测值看起来与所有其他观测值等距。因为聚类使用距离度量比如欧几里德距离来量化观察值之间的相似性,这是一个大问题。如果距离都*似相等,那么所有的观察结果看起来都一样(也一样不同),并且不能形成有意义的聚类。

第二点很重要,所以让我们用一个例子来看看为什么会这样。

高维数据诅咒我们的一个简单例子

假设我们的数据集由以下 8 种糖果组成。

Our Two Candy Clusters

事实是,在我们的 8 种糖果的数据集中有两类——辣的和甜的。所以,如果我们所关心的只是得到正确的口味,我们怎么能把我们的糖果聚集在一起,以确保我们永远不会不小心把辣糖给了我们爱吃甜食的朋友呢?

我们可以按颜色分类,如下所示:

Our 2 Color Based Clusters of Candy Flavor

很好,由于我们的聚类,我们知道如果我们吃红色的糖果,它会是辣的;如果我们吃一颗带蓝色的糖果,它会是甜的。

但实际上没那么简单。作为人类,我们能够目测糖果,并很快决定红色意味着辣,蓝色意味着甜。但是,只有当数据正确呈现给机器学习算法时,它才能做到这一点。如果我们的数据看起来像下表,那么我们是幸运的——我们有两个特征,红色和蓝色,它们产生完美的味觉簇,给我们一个完美的模型。

Perfect Clusters

但是如果我们的数据是高维的,如下表所示,那该怎么办呢?

High Dimensional Data Makes Trouble For Clustering

现在我们有 8 种颜色,而不是 2 种。聚类算法可能如何解释这一点?它会查看每一颗糖果,并得出以下结论:

  • 每种糖果都有自己的颜色。
  • 作为一个算法(没有经过特殊训练), 不知颜色之间的关系。 比如,不像人类,我不知道粉色比绿松石更接*红色。
  • 给定这组特征,我推断有 8 个聚类,并且它们彼此都同样相似。
  • 我还得出结论,在我的 8 个聚类中,4 个是辣的,4 个是甜的。

那一点用都没有。诚然,糖果都是不同的颜色,但这个结论并没有让我们比我们开始时过得更好。再读一遍最后一点——它只是重申了我们已经知道的数据集。我们对如何预测给定的糖果是辣的还是甜的一无所知。那么我们该如何解决这个问题呢?

降维拯救

下面是降维工作原理的典型例子。这并不意味着解释一个特定的算法,而是一个简单的例子,展示了维数约减算法遵循的一些原则。

Each Feature’s Exposure to the Latent Features

算法首先定位我们特征中的潜在趋势——这些可以是文本数据中的体育或政治等主题,或者时间序列数据中的主要趋势(参见我的理解 PCA 博客帖子以了解更多关于此的细节)。对于我们的糖果数据集,潜在的趋势很可能是红色和蓝色这两种原色。在数据科学中,隐藏在我们特征中的这些潜在趋势通常被称为潜在特征。

接下来,该算法根据上表中这些潜在特征的暴露程度来估计和重写每一个其他特征。

让我们根据每种糖果的潜在特征曝光度(上表中的数值)来绘制它们的图表——回想一下,每种糖果都有自己独特的颜色:

Each Candy Plotted According to its Latent Exposures

不错!从上面的图中可以很清楚地看出,使用我们的潜在特征(红色和蓝色)让我们产生了两个有意义的集群。最后,我们可以查看每个聚类,并计算有多少糖果是辣的,有多少是甜的,并使用这个频率作为我们预测的基础。

因此,我们的糖果辣/甜模型看起来如下所示:

  1. 给定一种新糖果,记录它的颜色。
  2. 将其颜色转换为红色特征和蓝色特征的曝光——换句话说,根据我们的潜在特征重写颜色。
  3. 使用我们的新糖果的潜在特征曝光,使用距离度量,例如欧几里德距离,计算出它是否更类似于红色糖果集群或蓝色糖果集群
  4. 如果我们的模型将它放在红色聚类中,我们预测新的糖果是辣的(因为我们原始数据集中所有的红色聚类糖果都是辣的)。如果我们的模型把它放在蓝色的聚类中,我们预测新的糖果是甜的(因为我们原始数据集中所有的蓝色聚类糖果都是甜的)。

结论

今天,我们看到了太多的特征会如何混淆某些机器学习算法,如聚类算法。我们看到了降维是如何帮助恢复秩序的。

在混乱、嘈杂的数据和复杂关系的真实世界中(不像我们简单的糖果),降维代表了一个更健壮的模型(希望如此!)和较低的可解释性(我的 PCA 博客文章对此进行了更详细的讨论——查看标题为“将所有这些联系在一起的示例”的部分)。

所以请记住,虽然我们有一个工具来对抗维数灾难,但是使用这个工具是有代价的。干杯!

如果你总体上喜欢这篇文章和我的写作,请考虑通过我在这里的推荐链接注册 Medium 来支持我的写作。谢谢!

维度的诅咒

原文:https://towardsdatascience.com/the-curse-of-dimensionality-f07c66128fe1?source=collection_archive---------10-----------------------

AI/ML 实用性

怪异的事情发生在更高的维度。即使是有用的信息也可能使机器学习模型过载。

本文是 AI/ML 实用性 系列的一部分。

Photo by MontyLov on Unsplash

我们大多数人都有非常合理的直觉,认为信息越多越好。例如,我对潜在借款人了解得越多,我就能越好地预测该借款人是否会拖欠贷款。令人惊讶的是,这种直觉是错误的,有时错误得惊人。

我已经单独写了额外的信息可能比无用的信息更糟糕,因为数据样本中的字段可能以误导的方式聚集或关联。这种不相关或随机的偶然效应会掩盖真实的效应。

事实上,事情变得更糟。额外的信息即使有用也会引起问题。这个令人惊讶的事实是由于只在高维度中出现的现象,被称为维度的诅咒

(注意:如果你对更高维度的概念感到不安,这篇文章可能会有所帮助。)

掉进兔子洞

诅咒是一系列依赖于问题细节的效应。下面我将详细介绍其中两个最大的问题。不过,所有这些都与高维空间的直觉延伸效应有关。所以,我想从一个简单的智力游戏开始。

让我们看看随着输入数量的增加,输入空间会发生什么变化。输入空间是一个奇特的术语,指所有可能的输入组合,不管它们是否真实。

假设我们试图只用一个输入特征来预测一个结果。我们的输入空间由该特征的所有可能值组成。让我们来看看下面三分之一的可能值,用蓝色条表示:

1/3 of feature range = 1/3 of input space

很明显,输入的所有可能值的三分之一包含在该输入范围的中间三分之一。并且,因为只有一个特征,所以它也包含所有输入组合的三分之一,即输入空间的三分之一。

当我们添加第二个特性并将它的可能值分成三份时,我们可以画一个正方形来表示一个范围,该范围覆盖了这两个特性中每一个的可能值的三分之一:

1/3 of each feature range = 1/9 of the input space

这里,输入空间有两个值,每个要素一个值。虽然这个框包含了每个特性的三分之一的可能值,但是它只包含了九分之一,或者所有可能值组合的 11%。

添加第三个特征使我们的立方体再次覆盖了每个特征范围的三分之一,但是现在只有 1/27 或大约 4%的输入空间:

1/3 of each feature range = 1/27 of the input space

我们无法想象超过三个维度,但是我们可以计算。一旦我们达到十个特征,等效的框将包含不到千分之一的输入空间。有了 20 个特征,该框将包含不到百万分之一的输入空间。有了 50 个特征,我们已经超过了万亿分之一。

然而,这些代表输入空间的极小部分的小盒子仍然代表了每个维度的三分之一的可能值。

虽然盒子很小,但是它们有很长的边!

怪异。对吗?

高维=稀疏

为了理解为什么这很重要,让我们换一个更容易思考的效果。

假设我们有一个 500 个数据点的样本,让我们探索一下当我们获得关于每个数据点的更多信息时,即当我们添加维度时,会发生什么。

添加关于每个数据点的更多信息为数据点之间的不同创造了新的方式。因此,它增加了数据点之间的可能距离。

Each new dimension creates an opportunity for two data points to differ in a new way — i.e. to be farther apart from each other

只有一条信息,我们的 500 个数据点看起来几乎是连续的。

对于每个数据点的两条信息,点之间的*均距离大约是两倍:

对于三条信息,它们之间的*均距离是四倍:

尽管我们无法想象更高维度,但数学告诉我们,点与点之间的距离会继续增长。有了 50 维,点与点之间的*均距离将是只有一维时的 20 多倍。

稀疏=误差

用非常简单的话来说,机器学习的基本策略是通过查看相似的数据来进行推断。一些模型,像 k- 最*邻,甚至明确地这样做。

用数学术语来说,“相似”就是接*的意思。随着我们对每个数据点了解得越来越多,我们发现它们之间的距离越来越远。因此,我们被迫从越来越不相似的数据中做出推论。

然而,并非所有的距离都同等重要。有些特征比其他特征更能告诉我们想要推断的东西。机器学习的工作是揭示这些差异和无关紧要的负重距离。但是,随着维度数量的增加,数据以指数方式变得更加稀疏,真正的差异被随机变化(噪声)掩盖了。

您可以通过获取更多的训练数据来解决这个问题。但是,过了某一点,这几乎是不可能的。在我们的示例中,要保持相同的数据密度,每增加一个维度需要 500 倍的数据。在 50 维,你需要的数据点比宇宙中的粒子还要多!

顺便说一下,最*邻居遇到了另一个奇怪的问题。如果数据存在随机变化,增加多个维度可以使所有点之间的距离大致相同。因此,“邻居”的概念就消失了。

一切都是异数

在统计分析中,与其他数据显著不同的数据点称为异常值。这些极端事件造成了很多麻烦。

首先,很难知道异常值是否代表了被测量的东西或我们如何测量它的统计变化。我们可能会问,婴儿出生时体重 12 磅的可能性有多大?还是称出了故障?甚至对于统计学家来说,丢弃离群值以防止混淆统计模型也是很常见的。

此外,数据集边缘附*的推理永远不会像中心附*那样有效。弄清楚两个已知案例之间发生了什么比想象已知案例之外发生了什么要容易得多。

在以下示例中,从正弦波(绿线)中采样了 10 个点。一种名为“三次样条”(橙色虚线)的技术在数据点之间的曲线插值方面做得很好,但在边缘处完全放大了。

Modeling at the edges of a dataset is much harder!

这是一种人为的情况,但它只是每个机器学习模型都会发生的一个极端例子。

在高维空间,这是一个更大的问题。考虑到这么多方面,事实证明几乎每个数据点在某种程度上都是异常值。让我们进行同样的一次一个维度的演练,看看发生了什么。

下面是我们在稀疏部分看到的相同数据。极端数据点以紫色突出显示。为了这个例子的目的,我们将考虑一个极值,如果它在所有观察值的最低或最高的 2.5%。

In one dimension, 5% of the data points are extreme

添加第二维度后,我们现在突出显示其值在二维度中的任一维度或二维度中都为极值的数据点。

In two dimensions, 9.75% of the data points are extreme

至少在一个方面极端的数据点比例几乎翻倍,从 5%增加到 9.75%。

对于三个维度,异常值的百分比上升到 14.26%:

In three dimensions, 14.26% of the data points are extreme

再说一次,我们无法想象三维以外的情况,但是我们可以做数学计算。在 10 个维度中,40.13%的数据点在至少一个维度上是极端的。在 100 个维度中,99.41%的数据点在至少一个维度上是极端的。

Outliers form an “outer shell” of the dataset

再次查看二维图,我们可以用另一种方式描述异常值。它们是靠*数据集边缘的点,形成一个“外壳”。

在高维空间中,几乎所有的数据都在外壳中。这意味着,“邻域”通常会延伸到多个维度的外部边缘,机器学习模型几乎总是需要外推,并且很少有其他数据点会与任何给定的数据点“相似”。

厄运和黑暗?

尽管存在诅咒,但机器学习的许多最大成功都来自高维领域。

在图像识别中,每个像素通常是一个维度。垃圾邮件过滤器和机器翻译通常将语言中的每个单词视为一个维度。然而,在这些领域,机器学习产生了惊人的结果。怎么回事?

首先,在成功的地方,数据是丰富的。谷歌在机器翻译领域占据主导地位并不奇怪。他们已经把网上所有的文件都编目了!

第二,与我上面使用的三次样条方法不同,图像识别和翻译中使用的模型是为解决高维度问题而设计并不断改进的。

第三,当数据中的数据变化很大时,高维度问题最糟糕。但是许多,也许是大多数,数据集至少在某些维度上有高度的规律性。这种效应被称为“一致性的祝福”,它在一定程度上消除了维数灾难。

注意:示例中的数据集在所有维度上都是独立的标准正态分布。

知识的诅咒

原文:https://towardsdatascience.com/the-curse-of-knowledge-8deb4769bff9?source=collection_archive---------26-----------------------

Claude Monet, Cart on the Snow Covered Road with Saint-Simeon Farm, 1865

为什么有能力的人往往教学这么差?事实证明,专业知识伴随着认知障碍,这使得很难将高级知识转移给其他人。

一个三岁的男孩来到实验室,坐在一张桌子旁。实验者给了他一盒聪明糖。他很兴奋。他打开盒子,发现盒子里装的不是智能玩具,而是铅笔。所以孩子很惊讶。实验者把铅笔放回盒子里,关上盒子,放回桌子上。他说:好的,现在另一个小男孩要进来了,杰森。杰森认为盒子里有什么?而男孩会说铅笔。当然,尽管杰森无法知道盒子里装的是铅笔,但男孩知道,但新来的男孩不会知道。事实上,如果你问他,当你走进房间时,你认为盒子里是什么?他会说铅笔。现在他知道了,就再也无法恢复他曾经不知道的那种天真无邪的状态了。”—史蒂芬·*克,21 世纪的语言学、文体与写作 [4]。

“知识的诅咒”一词是经济学家科林·卡默勒、乔治·洛温斯坦和马丁·韦伯在 1989 年的《政治经济学杂志》上发表的一篇文章中创造的,用来描述一种认知偏见,这种偏见使人们将自己对世界的知识和经验投射到他人身上。知识的诅咒使我们很难准确地重建我们以前的、知识较少的精神状态,在这种状态下,我们不知道或不理解某些东西。实际上,我们有一种强烈的倾向,不知不觉地认为别人知道我们知道的东西,或者认为学习它比实际上更容易。在他关于后见之明偏差的论文中,人们倾向于认为已经发生的事件比事件发生前的实际情况更可预测,菲施霍夫提出理论,认为在知识较少的状态下无法与自己产生共鸣是因为我们“锚定在接受知识所产生的后见状态中”[5]。

Richard Fisher 在他的文章中指出,在 20 世纪 80 年代,一些行为经济学家观察到了这一现象,当时汽车销售人员错误地判断了他们的汽车可以赚多少钱。因为他们对自己的汽车了如指掌,他们无意识地认为他们的顾客也是如此,包括汽车的缺陷。然而,事实上,无知的顾客会很乐意支付更多的钱。

加州斯坦福大学的帕梅拉·海因兹是最早研究这个问题的心理学家之一。在她的一个实验中,她让有经验的销售人员估计一个新手需要多长时间学会如何使用手机完成一系列任务。她发现专家们大大低估了所需的时间。*均来说,不熟练的新手花的时间是预期的两倍。“这些研究的结果表明,专家可能有认知障碍,导致低估新手面临的困难,而具有中等专业水*的专家可能更准确地预测新手的表现”[1]。由新手和中级用户组成的另外两个组被问了同样的问题。两者都给出了更好的估计。

为什么我们如此不善于猜测别人知道什么?为什么很容易低估一个人学会一件事需要多长时间?首先,我们必须承认,仅仅因为你知道一些事情,而你的观众不知道,你们两个之间一定有差距。提炼多年的经验很难,因为很多时候不容易用语言表达出来。肌肉记忆、精神习惯、无意识偏见都起着主要作用。

在讨论优秀写作的挑战时,史蒂芬·*克注意到,作者根本没有想到,读者没有学会他们的行话,不知道中间的步骤,这些步骤似乎太明显而不能提及,也不能在作者的脑海中想象出当前的场景。实际上,他们懒得解释行话,阐明逻辑,并为读者提供具体的细节和例子。*克接着说,不幸的是,这种情况甚至在为专业同行写作时也会发生,他举了以下《认知科学趋势》杂志上一篇论文中的一段话作为例子:

有意识知觉的缓慢和整合的本质在行为上得到观察的证实,如“兔子错觉”及其变体,其中刺激最终被感知的方式受到原始刺激后几百毫秒发生的刺激后事件的影响

“我干这行快四十年了,我根本不知道他们在说什么。”

在日益复杂、瞬息万变的信息时代,传递知识的能力极其重要。因此,知识的诅咒给我们的现代文明提出了一个棘手的问题。正如我们所看到的,已经掌握知识的老师,常常不能以适合于那些还没有掌握知识的人的方式来传授知识。正如 Chip 和 Dan Heath 补充的那样,在商业世界中,经理和员工、营销人员和客户、公司总部和一线,都依赖于持续的沟通,但却遭受着巨大的信息不*衡。

费希霍夫的理论认为,在知识较少的状态下,我们无法与自己产生共鸣,是因为我们“被固定在接受知识所产生的后视状态中”。

我们能做些什么呢?

幸运的是,我们可以做一些事情来减少负面影响。*克说,一个传统的解决方案是始终让你的读者保持警惕。“也就是说,要和读者强调,从她的角度看世界,试着感受她的痛苦,穿着她的鹿皮鞋走一英里路。”然而,他补充说,这并不总是有效的,因为许多心理学研究表明,我们不太擅长弄清楚别人知道什么,即使我们非常非常努力地尝试[原文]。一个更好的解决方案是直接吸引你的观众,并获得尽可能多的反馈。把你的草稿给你的学生或同事看,甚至在一段时间后给你自己看,材料已经不熟悉了。“如果你和我一样,你会发现自己在想‘这不清楚’或者‘我这么说是什么意思?’,或者经常说,“谁写的这些垃圾?””*克开玩笑地说。然后,重写材料(最好是几次),记住许多你的听众可能不知道的事情,同时,不要假设你的听众已经知道一些事情。

第二条重要的建议来自 Chip 和 Dan Heath 的畅销书 Made to Stick,该书教导如何创造出持久并“留在”观众记忆中的创意。作者说“具体的语言和故事打败了知识的诅咒。”根据希斯兄弟的说法,这种具有强烈形象化的想法更容易理解和记忆。"语言常常是抽象的,但生活并不抽象."因此,作者建议用简单的语言和尽可能多的例子来表达复杂的思想,同时避免过于抽象的语言。

最后,承认并拥抱你的无知。不出所料,看到知识的诅咒的一个更明显的地方是在教室里。不列颠哥伦比亚大学的心理学家苏珊·伯奇说:“这是一种矛盾的说法,但无知在教育中可以是一种美德。”。要把你的知识传递给别人,你不仅要把多年的经验提炼成文字,这本身就够难的了,而且你还需要从新手的天真角度看待事物。"有时,经验不足的老师能更好地在恰当的层面传达信息。"

无知是福。

参考

  1. Hinds,P. J. (1999 年)。专业知识的诅咒:专业知识和去偏方法对新手表现预测的影响。实验心理学杂志:应用5 (2),205。
  2. 理查德·费希尔。不要自作聪明:知识的诅咒。新科学家。
  3. 奇普·希斯,丹·希斯。为什么一些想法存活下来,而另一些却死了。兰登书屋。
  4. 史蒂芬·*克。21 世纪的语言学、文体和写作。
  5. 奇普希斯,丹希斯。知识的诅咒。哈佛商业评论。
  6. 巴鲁克·菲施霍夫(1975 年)。“后见之明不等于先见之明:不确定条件下结果知识对判断的影响”。实验心理学杂志:人类感知与表现1(3):288–299。

CX 革命

原文:https://towardsdatascience.com/the-cx-revolution-1178c80ac239?source=collection_archive---------17-----------------------

实施人工智能以提供卓越的客户体验

现在人工智能(AI)已经存在很久了;在 20 世纪 80 年代末,我们用它的力量在职业棋手的游戏中击败他们,今天我们用它来驱动自动驾驶汽车。人工智能革命是本世纪最重要的进化之一,没有人知道人工智能下一步会做什么。

在人工智能承诺的数百种可能性中,客户体验(CX)是一个为组织增长和差异化提供巨大机会的领域。

AI 是客户体验的未来吗?

绝对的。欢迎来到体验经济,消费者会不断地将你的产品和服务与相似甚至更好的产品和服务进行比较。今天,赢得客户的不仅仅是你的产品或低廉的价格,而是你的公司提供给消费者的客户体验。消费者的期望比以往任何时候都高,公司现在被迫重塑其业务模式,并重新思考其业务战略,以满足这些不断变化的消费者期望。这里没有冒险的余地——企业无法猜测什么可行,什么不可行。这就是为什么越来越多的组织现在开始关注人工智能来应对这一挑战,并创造更有意义的客户体验。

客户体验再也不会一样了

毫不奇怪,像亚马逊、优步和网飞这样的公司现在严重依赖人工智能的力量来加强他们的游戏,并且随着他们取得的成果,已经没有回头路了;人工智能将留下来,并改变世界以前看待客户体验的方式。

人工智能对未来客户体验的影响

区分顾客和品牌忠诚者的关键特征是顾客服务。这就是为什么 CRM 技术在几年前如此受组织欢迎(通过数百万美元的投资)。CRM 承诺在 CX 实现自动化,这很好,但对于今天有闪烁行为的客户来说还不够。人工智能通过将智能与自动化相结合,将客户服务置于自动驾驶状态,在增强客户体验方面更进了一步。

这场“智能自动化”革命的结果是,客户比以往任何时候都更快乐,企业也是如此。从预订航班到订购披萨,顾客们正在逐渐适应 CX 的这种智能变化,而且他们喜欢这种变化。事实上,专家认为,到 2020 年,85%的未来客户服务互动可能会实现自动化——而这仅仅是个开始。因此,让我们更深入一点,看看人工智能将如何影响不同行业内客户体验的未来。

  • 零售业:通过人工智能个性化保持前 1%的客户参与 研究表明,零售商前 1%的客户的价值是其普通客户的 18 倍。个性化是留住这些高价值客户的最佳工具。然而,关键是要超越基本的个性化,例如,在正确的时间向正确的设备发送带有正确信息的一次性个性化简讯,其中包含客户定制的促销活动。这可以通过使用预测分析和强化学习来实现,预测分析和强化学习消除了营销中的人工猜测,并通过不断寻找下一个最佳行动来提供最佳结果,从而优化客户体验。对于零售和时尚行业的 CX 来说,未来还拥有虚拟个人造型师、视觉搜索、聊天机器人、类似的产品推荐等等。
  • 银行&金融部门:内向者轻松理财 银行和金融部门也逐渐显示出适应人工智能的迹象。像摩根大通这样的大公司已经投资于这项技术,推出了一个合同智能(COiN)*台,旨在分析法律文件,提取关键数据点和条款。而富国银行(Wells Fargo)等其他金融公司正在利用人工智能技术来增强客户体验,他们通过 Facebook Messenger *台与数百名员工一起测试人工智能驱动的聊天机器人。虚拟助理直接与客户打交道,帮助他们更改密码或访问他们的帐户信息。
  • 医疗保健行业:虚拟护理伴侣和数据驱动的反馈引领患者体验的未来 医疗保健组织(HCO)在客户服务方面一直以懒惰著称。尽管满足患者需求的传统方式不能完全抛弃,但实时反馈的使用能够并将很快成为 CX 医疗保健战略的前沿。
    为了向住院患者和门诊患者提供更简化的体验,HCO 已经在虚拟护理技术上投入巨资。医疗保健部门可以通过聊天机器人实现查询过程的自动化来节省大量成本。Juniper Research 的一份报告指出:

“到 2022 年,聊天机器人将负责为零售、电子商务、银行和医疗保健每年节省 80 亿美元的成本。”

  • 娱乐业:个性化娱乐时代开始 流媒体服务正在彻底改变人们以前看待娱乐的方式。从 100 多个没什么可看的电视频道,到网飞上的 10 万个节目,娱乐业无疑在这十年里实现了巨大的飞跃。
    Google Play Music 和 Apple Music 等流媒体服务通过排列播放列表中的新曲目,为消费者提供数据驱动的个性化体验,同时仍能迎合听众的口味。人工智能允许这些服务不仅通过跟踪用户的历史记录,还通过收集具有相似特征的听众倾向于喜欢什么的数据来向消费者提供建议。这就像网飞总能猜到某人在开心或难过的时候想看什么一样。
  • 农业部门:作物健康监测变得更加智能 曾经有一段时间,大多数人几乎可以肯定,农业部门将获得的唯一创新来自基因工程,很可能是以转基因生物的形式。这对所有那些人来说可能是一个惊喜,但这个部门最终将很快得到一个重要的人工智能升级。技术专家和农业专业人士正在共同努力,通过使用计算机视觉和深度学习算法处理数据来监控作物和土壤健康,以便通过虚拟助理向农民提供合理的建议,从而使农业变得更加智能。

为当今的公司实施人工智能

在保持领先的永久竞赛中,企业终于开始拥抱人工智能技术。这不是跟随最新的趋势,而是使用正确的技术为企业和客户解决问题。尽管在公司中实施人工智能的想法似乎对大多数企业主来说很有吸引力,但这可能不是手头最直接的任务,许多人可能最终会为此而挣扎。

首先,公司首先需要确定他们的问题,并判断人工智能是否会帮助他们解决问题。例如,需要自动化的企业或组织的任何领域都可以从人工智能中受益。

“人工智能有助于自动化重复性任务,通过帮助员工和代理做出更好、更快、更明智的决策来增强他们的能力。”— Jorge Sanchez,Appian 产品战略总监

聊天机器人这种简单的工具可以为任何规模的企业带来巨大的变化。

各种规模的公司都可以利用以下工具开始

  • AgentBot —是一种自动客户服务解决方案,它使用人工智能来实时了解和解决客户的需求
  • 永不流失 —了解、预测并最大限度地减少客户流失
  • Botsify — 为 Facebook Messenger 或网站创建在线自动聊天机器人
  • Zendesk AI —有效的人工智能票务将常规任务转化为高效的沟通

然而,在已经成熟的业务中实施 AI 并不意味着必须改变整个商业模式。这是一项超级智能的技术,将帮助任何公司改进其当前的流程。关键是要了解一点人工智能,以便在实施它之前,可以完全理解它可以为他们的业务做什么。

一锤定音

当谈到人工智能时,客户体验的未来拥有无限的可能性。未来,人工智能将彻底改变每个行业的企业与客户互动的方式,并将改变我们创建客户体验战略的方方面面,从顶层决策到营销。

人工智能在招聘中的危险(及 3 点建议)

原文:https://towardsdatascience.com/the-danger-of-artificial-intelligence-in-recruiting-and-3-suggestions-7fcc73389903?source=collection_archive---------22-----------------------

我最*遇到了人工智能在招聘中最用心良苦、也最令人不安的应用之一;一个会说话的机器人头被认为是避免面试中偏见的解决方案。想象一个 Alexa 大小的机器人,上面画着一张真实的人脸。脸变了,试图表现出表情和非语言的暗示。

就像许多第一次尝试从技术上解决人类问题一样,过度应用技术和公众不准备在如此严峻的应用中接受这种程度的“我,机器人”(我正看着你谷歌眼镜),很容易令人痛苦地错过目标。

机器人的宣传视频以一个戴头巾或 khimar 的女性开始。她在回答典型的面试问题时,对自己的技能、培训和教育给予了积极的回应。她应该是个重要的候选人,对吧?她的白人面试官可不这么认为,他们很难看出她的“健康”。直到最后,有人听到她的话,她的经历,她的价值。有人吗?某件。进入面试机器人。

看着这段视频,穆斯林妇女一次又一次地被歧视,然后被一个字面上的会说话的头带着惊讶和宽慰接受和欢迎,我不禁努力想象一个候选人会对这样的面试感到高兴和投入。想象一下潜在的非故意的信息,一个已经代表不足的候选人可能有被歧视的历史,不值得一个真正的人类同胞的时间或考虑(感知是现实,不管意图的纯度)。我希望我们的目标是足够好地理解偏见并克服它,利用技术来增加和加强我们的人际关系,而不是简单地试图用技术来交换人。要是让我们的文化超越种族歧视有那么容易就好了。

说到这个…

我们怎么知道算法不是种族歧视?

比机器人应该在世界上最人性化的行业之一(招聘)中取代人类更令人担忧的是,许多人接受并在算法是客观的、不受过去经验影响的前提下操作,而且,嗯,是机器人。事实上,这很可能是有偏见的,与它首先试图解决的问题背道而驰。

这可能是由多种原因造成的,但我们只简单分析两个原因。

首先,编写代码的开发人员本身主要是白人男性,这导致在我们了解模式和行为之前,潜在的对底层代码的偏见。

“就其本质而言,算法会带有某种偏见……每当你在纸上、印刷品上或代码中表达一个想法时,这个想法就会以一种单方面定义的方式出现,必然带有某种偏见。”Dipayan Ghosh,哈佛大学肯尼迪学院新美国和 Shorenstein 中心的研究员。

其次,AI/机器学习是在海量数据集上训练的。根据定义,这些数据来自历史行为,事件,甚至是成功的衡量,等等,我们普遍认为这些数据包含偏见,这就是为什么我们首先要解决这个问题。我们如何开发一个基于有偏数据的客观算法?

“如果您使用反映现有和历史偏差的数据,并要求数学工具基于该数据进行预测,预测将反映该偏差。”——Rachel Goodman,美国公民自由联盟种族公正项目的律师

不要误解我,我完全支持和认可这些努力背后的思想和他们试图解决的问题。偏见,无论是隐性的还是显性的,在面试过程中(或任何地方)都是没有位置的,我赞扬开发人员试图解决这个普遍而隐蔽的社会问题。这项技术和其他相关技术有一个难以置信的机会来解决招聘中猖獗的一些问题,偏见是一个非常重要的问题。

从筛选到评估到日程安排,甚至聊天机器人实时回答候选人的常见问题等等,招聘人员利用这些新兴技术的潜力很大。但我也在确保保持人力资源中的“H”的阵营中,并且我是在雇主品牌、讲故事和招聘中包含和展示人、真诚互动和员工故事的坚定支持者,所以我喜欢寻找这两者如何真正协同工作。

设定期望值的重要性

成功最关键的一步是设定现实的内在期望。作为术语人工智能(以及相关术语,如算法、机器学习等。)在集体意识中上升,与从自动驾驶汽车到投资到寻找下一个公寓的所有事情联系在一起,似乎有一种相应的想法,即它们是为你做所有事情的“一劳永逸”的系统。

没有灵丹妙药。人才市场竞争异常激烈,购买最新的玩具不会让你的所有候选人突然接受你的提议。但它能做的是,让你的团队腾出更多的时间来从事更有价值的活动,在减少采购和招聘过程中的偏见方面发挥积极作用,并在不增加(事实上,往往更少)工时的情况下,提供更加简化、更具吸引力的候选人体验。

在所有具备颠覆条件的行业中,人才收购是最人性化的行业之一,如果不是最人性化的话。我们的角色是关系的媒人,这将占据你意识时间的绝大部分;你的事业。你可能比你的家人或其他重要的人花更多的时间和你的同事在一起。你的工作对你的精神、身体和财务健康有着根本性的影响。你工作场所的文化可能会让你在早上兴奋不已,或者在你考虑回去的时候沉浸在周日的忧郁中。如果我们有办法做到这一点:

  • 较好的
  • 更有效地
  • 更有效地
  • 更少的偏见
  • 随着更多的交流
  • 更加个性化

我全押上了。但是,当产品和推销以及未经充分思考的“解决方案”冲击市场和你的收件箱时,你怎么知道从哪里开始呢?我建议我们从确定一些我们希望用技术解决/改进的核心问题开始,并回到正确的方法,用更先进的工具集成我们的人类团队。毕竟,你不会想走进手术室,却发现一个全自动手术机器人在没有人类监督和控制的情况下准备切开你的身体。同样,候选人不希望感觉他们正在被筛选、选择,并被算法认为有价值或没有价值。我们身处的是一个关系行业,关系,无论好坏,都是与他人建立的。

您可以从三个方面入手

清单很长,很容易做很多事情,却没有做得特别好。而在我开始之前,我先承认,这些并不都是“AI”。

先说三个。名单上还有很多,所以我不认为知道“正确”的三个,但我认为这些都是唾手可得的果实,从招聘人员和候选人的角度来看,都可以加快和改善往往是艰巨而痛苦的招聘过程。我将这些概括为:

  1. 偏见
  2. 时间
  3. 沟通

偏见:增加候选人渠道的多样性

我们都有偏见,有些人(比其他人)更有偏见,但它以你可能没有意识到的方式影响了这个过程,从某人在哪里上学到他们是否和你从事同样的运动。幸运的是,现在有一些系统和*台允许对技能和能力进行评估,而不考虑教育背景、GPA 或其他历史证书,这些证书在很大程度上被证明与该角色的表现没有任何关联。这些正在被大型知名品牌广泛使用,是扩大你的人才库和发现最佳人才的好方法,不会产生偏见。

时间:增加对增值活动的关注。

你的团队花了多少时间来(重新)安排面试,回答候选人同样的问题,整理简历……这样的事情不胜枚举。有一些很棒的解决方案可以帮你摆脱这些,这样你就可以把时间花在你最擅长的事情上;居然招人!让人们决定接受还是不接受这份工作的是与人的对话,以及他们与招聘人员和面试团队中其他人的互动,但他们可能会因为人力资源部门的过度工作和人手不足而错过这个过程。让人工智能处理分析简历、安排面试,你可以专注于在你的优势所在之处产生最大的影响。更进一步,你可以拥有一个永远在线的人工智能聊天机器人,通过桌面或文本来回答候选人的问题和状态更新请求,这导致

沟通:实际去做

从两面来看,我们都很清楚投简历和职位空缺之间众所周知的“黑洞”,以及整个面试过程中经常出现的有限(或完全缺乏)沟通。

以我们现有的技术,绝对没有任何借口或理由这样做。至少,当收到申请时,当申请在 ATS 中从一个阶段进入另一个阶段时,以及一旦做出决定时,你应该与你的候选人保持联系(补充说明:这些需要从股票模板样板中重写,以你的品牌声音出现,哦,这是一个多么棒和意想不到的文化视频!)

关于这个话题还有很多可以写的,但是我想加入这个话题的讨论,并且很乐意阅读/回应任何评论、问题、观察等。!

数据分析中标题游戏的危险

原文:https://towardsdatascience.com/the-danger-of-title-play-in-data-analytics-b94e92c49c53?source=collection_archive---------9-----------------------

我对数据初级人员和专业人员的建议

在谷歌,你的头衔并不重要。你的工作有!

Source: Unsplash

“你是一名数据分析师,为什么要做机器学习?”

一个应届毕业生问我。在他心目中,我把自己的头衔定为数据分析师真的很奇怪。他毕竟是一家大型电子商务初创公司的数据科学家/机器学习工程师。这两个头衔目前在数据分析领域享有盛誉。

然而,在谷歌,头衔并不重要。不管你是数据分析师还是软件工程师。如果你的日常工作需要,他们会希望你使用机器学习。尽管我称自己为分析师,但我仍然扮演着技术角色。我从 Gmail 和 Chrome 作为数据源,用计算机视觉、图像识别、机器学习来检测钓鱼攻击。

在传统定义中,我是一个完整的数据科学家,提取数据,然后用产品可维护代码生成洞察/模型。

数据分析师和数据科学家的传统定义。

From Skillfin Learning

当我开始我的数据科学之旅时,我作为一名数据科学家在 Lazada 实习。在 Lazada,他们有两种类型的数据科学家:

  1. 使用 excel 或 dashboard viz 工具生成图表和业务见解的数据科学家。
  2. 使用机器学习和统计严谨性来分析数据和发现见解的数据科学家。

他们都被称为数据科学家,处理数据,但本质上角色是不同的。根据 Skillfin 的定义,他们将 1 号称为数据分析师,2 号称为数据科学家。一些创业公司称 1 号为初级数据科学家。当然,后者是你作为数据科学家通常期望从事的工作。

肮脏的标题游戏

Source unsplash

“数据科学家”头衔的滥用

似乎随着数据科学家这个头衔的不断演变,它变得越来越饱和。5 年前,在新加坡,数据科学家的头衔并不突出。然而,随着数据趋势变得越来越大,许多研究人员、顾问和教育家也加入了这一趋势,并承担起数据科学家的角色。

这导致很多创业公司滥用了“数据科学家”这个头衔。因此,数据科学家这个术语被越来越多地滥用。如今,我们可以看到一些数据科学家已经将自己更名为机器学习工程师或研究科学家。

作为人类,我们是天生的简化论者,我们总是想简化事物,以便更容易理解。如今,许多公司将他们的工作描述与数据科学家的头衔分开。核心思想是数据分析师建立仪表板和初步分析,然后数据科学家建立机器学习模型。

当我向一位从初创公司跳槽到谷歌的同事提到这一点时,他告诉我:

就在不久前,我的 10 个同事将他们的头衔从数据科学家改为机器学习工程师。他们接着问我,“你怎么会被降职为数据分析师?."对他们,我只是回答“我不在乎,我得到的报酬更多。”

原因

为什么会出现这种标题剧?很简单,这是因为新的头衔会吸引更多的人和威望。许多初创公司会调整他们的头衔和工作描述,以顺应潮流,让更多应届毕业生和专业人士申请他们的公司。

还记得在故事开始时接*我的那个应届毕业生吗?他告诉我,他真的很开心把自己的头衔从数据科学家变成了机器学习工程师。对他来说,这使他更有价值。

最终,许多人失望了。招聘经理很失望,他们认为他们雇佣了一个很好的数据科学家,但最终得到的是一个只知道如何实现库而不知道为什么的人。他们的工作描述与职位名称不符。

另一方面,工人们也很失望。我有几个做数据科学家实习生的朋友,但是深感沮丧,因为他们只手动输入数据标签。

从这里,我们知道,如果你不仔细分析标题,它会在未来咬你。

真正重要的是:解决你的招聘经理问题

Source: Unsplash

根据我对多位数据科学家/专业人士的采访,我发现对你来说重要的只是关注你的经验和技能。作为一名教育工作者,我总是告诉我的后辈:专注于你提供的价值。

每次面试都有一个简单的目标

你如何解决面试官的问题?

你需要评估你拥有哪些对你和你的面试官有价值的资产。不管你在简历中放了多少废话和“华丽的”字眼,如果你不能回答“你是如何解决面试官的问题的”,你就不会成功。

在谷歌,面试官将测试你以前的经历,以及你将如何适应和学习这个角色。每位面试者将以匿名身份将招聘包交给招聘委员会。这意味着招聘委员会不知道每个面试者的姓名、性别,甚至种族。然后,他们会纯粹根据招聘计划对你的价值做出选择。你的头衔在这方面会有点发言权。

面试也将在结构化面试中进行。这意味着他们会问很多假设性的(如果…)和行为性的(如果…)。这两个问题对于谷歌确定你的价值至关重要。我有更多关于参加符合这些描述的数据分析面试的信息。

那你被录用后。这是一个你需要专注于培养技能和超越自我的时刻。我已经在我的文章中提到了这一点的重要性。

另一个参考是加州纽波特的深度作品,作者教你在有限的时间内培养技能的技巧,这样你就可以学习并在当今纷乱的世界中变得有价值。从这里,我学会了批量处理我的工作,并专注于数据分析和机器学习的复杂世界。

结论:关注工作而不是头衔

Source: Unsplash

总之,你不是由标题和绒毛来判断的。而是你所做工作的影响。解决你的面试官和招聘经理的问题,你就没事了。思考如何建立必要的价值观和技能,为未来的职业生涯做准备。

对我来说,我总是利用我的空闲时间来进行我的副业项目,并将它们很好地打包到 Github 或其他博客中。然后,我会部署这些应用程序并编写它们,以便为我的下属和其他数据从业者带来价值。几个月之内,我的 LinkedIn 就成了 Google HR 推荐我的个人资料,以便与我联系。当他在 LinkedIn 搜索上键入“数据挖掘”和“数据分析”时,他发现了我的个人资料。多么美妙的惊喜啊!

总之,记住这些可行的计划:

  1. 小心你的头衔和工作描述。这可能不是你想要的。
  2. 关注你给简历和面试带来的价值。这就是你赢得面试的方法
  3. 通过发展和贡献你的技能来超越自己。然后做深入的工作,贡献更多的价值。

如果你把你工作的许多价值带给别人,你会得到许多机会。这就是你应该如何在你的职业生涯中穿越。

最后…

我真的希望这是一本很棒的读物,是你发展和创新的灵感来源。

请在下面评论以获得建议和反馈。就像你一样,我也在学习如何成为一名更好的数据科学家和工程师。请帮助我改进,以便我可以在后续的文章发布中更好地帮助您。

谢谢大家,编码快乐:)

关于作者

Vincent Tatan 是一名数据和技术爱好者,拥有在 Google LLC、Visa Inc .和 Lazada 实施微服务架构、商业智能和分析管道项目的相关工作经验。

Vincent 是土生土长的印度尼西亚人,在解决问题方面成绩斐然,擅长全栈开发、数据分析和战略规划。

他一直积极咨询 SMU BI & Analytics Club,指导来自不同背景的有抱负的数据科学家和工程师,并为企业开发他们的产品开放他的专业知识。

文森特还在 BestTop 和 10to8 上开设了他的一对一导师服务,指导你如何在谷歌、Visa 或其他大型科技公司获得你梦想的数据科学家/工程师工作。如果你正在寻找良师益友,请在这里预约你和他的约会。

最后,请通过LinkedInMedium Youtube 频道 联系文森特

人工智能自动学习偏见的危险

原文:https://towardsdatascience.com/the-dangers-of-ai-learning-prejudices-automatically-6cbd0ab1f2ae?source=collection_archive---------28-----------------------

阅读新闻,你会读到机器学习和人工智能领域取得的巨大成功和发展。但是仔细研究一下,你会发现数据科学已经发现了一些过去的错误。

Photo by Trym Nilsen on Unsplash

机器学习中的习得性偏差

我认为这将是一个很好的报道领域,因为最*的 BBC 新闻文章强调,由于英国警方采用的面部识别软件是针对主要是欧洲白人的,该系统将遭受更高的错误率,任何人都不在这个群体之内。的文章强调了这可能会导致黑人和少数民族更高的误判率。

可悲的是,这不是一次性的案例,如果你在新闻中搜索一下,你会发现几篇谈论机器学习偏见问题的文章。

  • 2013 年一所医学院在第一轮面试选拔中使用之前的申请结果来给简历打分。后来的研究表明,对于非欧洲发音的名字和女性来说,这种现象会有所减弱。
  • 2018 年亚马逊因明显偏向男性而关闭了自动招聘。

事实上,算法中明显的性别歧视和种族歧视是一些人争论了很久的事情(特别是在医学领域,这里是这里是这里是),归结为数据本身(有时是算法设计者)包含算法发现的偏见。对于上述许多技术和高等医学领域,男性占主导地位,该算法将其视为成功的有力指标并加以利用(当它对过去的数据进行预测时,通过使用它,它得出了很好的准确性,这只会加强它)。

为什么这很重要?

出于任何伦理或道德原因,我们都不希望这种行为成为首要原因。这对数据科学的健康和地位也很重要,因为它的一个被吹捧的优势是,它将人从等式中移除,从而做出无偏见的卓越决策。然而,如果结果是我们在教它我们自己的偏见,并潜在地放大它们

如果人们对机器学习失去信心,开始不信任它,那么整个领域的未来都会因此受损。

人比机器更能原谅人的错误。

你能做什么来阻止它?

你能做什么?这很大程度上取决于观察你的算法随着时间的推移表现如何(它是否正确工作?)并检查你得到的数据中可能包含的潜在偏见。你本质上追求的是一个代表性样本,不是老的有偏见的人口,而是你想要的人口。因此,举例来说,如果你看一下旧的录取数据,就会发现它明显偏向男性,因此,当时被录取的申请人中就有偏见。然而,对于未来,你不希望这样,所以历史数据需要纠正。

校正的基本方法是对有偏见的群体的数据进行加权,删除算法可能使用的特征(例如性别),或者您甚至可以对有偏见的群体进行降采样,以便获得相等的数量。也有一些更先进的方法,一些研究人员开发了保留性别信息但消除了偏差的方法。

拿走

数据是解决您的问题的正确数据吗?是否包含不良偏见?

然而,随着越来越多的地方提供伦理课程,机器学习带来了更多关于机器学习如果使用不当可能造成的损害的意识,以及关于如何纠正机器学习的建议,这并不完全是悲观的,但也有一些论点认为,即使有偏见的模型仍然可能比他们取代的有偏见的人更好,即使它仍然不可取。我将让你决定那一个。

数据雪崩及其对建筑环境的影响

原文:https://towardsdatascience.com/the-data-avalanche-and-its-out-turn-on-the-built-environment-7e601e396bd7?source=collection_archive---------18-----------------------

大数据现象为设计师提供了利用该技术的巨大机会

Image by Author

在建筑演讲中,当我们谈论技术的到来时,我们经常会讨论它改变数字设计本质的潜力,以及建筑技术和智能系统。虽然这些流程正在被广泛开发和采用,但有一种全球现象正在进入这一领域,它有可能从根本上影响我们做出的设计和开发决策——大数据。AEC 公司,就像任何其他企业一样,在不久的将来可能会面临大量的数据(如果还没有的话)。如今,任何企业的价值都与其挖掘数据的能力息息相关。

“每个架构元素都将与数据驱动技术相关联。”—威尼斯双年展上的冉·库哈斯

计算设计和建筑信息建模已经取代了传统的 CAD,这实质上意味着加法逻辑被关联逻辑所取代。想象一下,在形状复杂且不*坦的场地上放置柱子的工作,在传统情况下,需要大量的点击和详细的手动属性,而在 BIM 环境中编写一个算法来完成这项任务只需几分钟。虽然这种升级使设计师的生活变得更加轻松,但计算的实际潜力只能通过决定性的逻辑(即模拟)来利用。这种在虚拟环境中用真实世界的数据进行各种模拟的创新从根本上改变了设计解决方案的构思方式。考虑建筑物的能源模型——它已经完全成为一个自己的领域。

现在,当我们谈论逻辑的时候——都是关于算法的思考。而这种进化需要越来越多的特定领域知识。现在,如果我们考虑用数据的方式来处理事情呢?是的,如果有具体数据可用,数据科学可以提供另一种做出决策的方法。在这个信息系统的智能网络时代,数据集可以方便地产生,这只是我们利用其潜力的能力问题。虽然这种方法不能完全取代算法的方式,但它打开了一个全新的并行机制,这就是数据驱动的设计。通常,影响设计决策的参数不能包含在传统的算法过程中。人类行为模式可能是一个很好的例子—想象一个工作场所配置,它是由简单回归或朴素贝叶斯模型驱动的,该模型基于一段时间内捕获的用户使用模式数据集或地理人口统计调查。客观地说,数据驱动设计揭示了一个全新的整体设计过程,它包含了许多复杂而重要的层面,使设计变得高效。

Source : Freepik.com

在过去几年中,建筑技术和管理在开始使用数据的方式上经历了巨大的转变。建筑师不再局限于只绘制图纸,客户需要用于设施管理的集成信息模型。

由此产生的数据集被转化为可流入简单应用程序的指标。这个过程不仅仅是将项目数字化或虚拟化,而是让我们能够将大量信息联系起来,这是理解项目价值如何随时间变化的有效方式。

建筑无人机&模块化现浇元件已经变得很常见。另一方面,物联网正在统治 conTech 行业。所有这些智能装置都成为了宝贵的数字建筑资产。价值如此之高,以至于这些建筑被设计用于集成建筑传感器网络。收集了所有这些数据后,数据科学再次在识别可能有利可图但人类感官不容易察觉的模式方面发挥了作用。

在城市层面,商业房地产技术正在见证众多连接土地所有者、买家和卖家的物流应用的发展。虽然这些应用程序并没有真正直接改善建筑环境,但令人兴奋的是通过将地理空间数据抽象为节点和网络而产生的数据和见解。这可能会转化为制图信息并生成 3d GIS 数据,从而为任何目的(城市规划或公共政策)提供灵活的模型。

最后,最后,任何架构项目都是不同领域专家的合作成果。我相信,建筑的大部分价值在于前期设计阶段。建筑工作室中的数据科学专业知识迟早会变得司空见惯,数据挖掘和可视化成为设计过程中不可或缺的一部分。这种多学科方法为伟大的高性能架构铺*了道路。

关于作者

从事人工智能产品和建筑技术的数据分析和决策科学专家。印度海得拉巴。

https://www.linkedin.com/in/sriharipramod/

密尔沃基犯罪数据驱动指南

原文:https://towardsdatascience.com/the-data-driven-guide-to-crime-in-milwaukee-b6a373f898e9?source=collection_archive---------16-----------------------

我们调查了超过 600,000 起事件,揭示了美国最危险的城市之一的错综复杂的犯罪

Milwaukee at Night. Photo by Kayle Kaupanger

密尔沃基是威斯康星州最大的城市,也是哈雷戴维森汽车公司、密尔沃基艺术博物馆的所在地,并以其酿酒厂而闻名。但更重要的是,它因高犯罪率而臭名昭著。

密尔沃基已经被列为 T2 最危险的城市之一。犯罪分析网站指出,密尔沃基比美国 96%的–97%的 %更危险,比威斯康星州的 99% 更危险。

利用从 密尔沃基市开放数据门户 公开获得的 WIBR 犯罪数据,我捕获并评估了从 2005 年 3 月到 2018 年 12 月发生的 666,790 起被视为A 组犯罪的犯罪事件。据我所知,这项工作是第一次公开探索和分析这些信息。

这是一份全面的指南,其中包括:I)犯罪率与时间之间关系的详细评估,II)对在犯罪中使用的武器的评估,以及最后,III)展示城市中犯罪发生的地理空间分析。**

免责声明: 以下数据和数字代表被举报的罪行。根据皮尤研究中心的数据,大多数犯罪都没有向警方报案( 此处 )。因此,在解释结果时应该小心。

基于时间的可视化

的罪行发生时

以下结果表明犯罪是在什么时候被报告的,而不是在什么时候发生的。犯罪发生的时间和报案的时间可能会有所不同,请在阅读时记住这一点。

每天下午 4:00 的犯罪报告高峰

根据密尔沃基 2005-2018 年(上文)按小时统计的总犯罪报告,凌晨 2:00 至 6:00 之间的犯罪率最低,这一时间许多人可能正在睡觉。早上 6:00-8:00,当许多人醒来时,我们看到犯罪报告迅速增加。犯罪报告在一天中持续上升,在下午 4 点达到最大值。

在按一天中的小时划分的犯罪类型中, 盗窃占早上 8:00 到下午 6:00 之间报告的大多数犯罪。针对刑事损坏锁定车辆进入和车辆盗窃的犯罪报告具有相似的模式,报告中的峰值出现在上午 8:00。与其他犯罪模式在早上或中午达到高峰不同,攻击罪抢劫的报案量在早上较低,在傍晚达到高峰。

上述数字表明,一周内犯罪报告略有变化。为了测试所报告的犯罪数量是否与一周中的某一天有关,对数据进行了单向方差分析(ANOVA)。测试得出的 p 值为 0.287,未超出预定义的显著性阈值(p< 0.05). Thus, )报告的犯罪数量与一周中的 无关。

全年犯罪率

犯罪率随季节变化是众所周知的事实(此处阅读更多&此处)。此外,天气变化最大的地区在夏季也会经历与财产相关的犯罪的急剧增加。

然而,犯罪率的这些“季节性”变化似乎完全可以用社会互动来解释。因此,我们应该注意犯罪率的变化不太可能直接归因于天气或温度的变化。

密尔沃基每月的总犯罪率(2006–2008)显示了报告的犯罪总数与一年中的月份之间的密切关系。犯罪报告的低谷出现在二月,高峰出现在七月和八月。让我们了解一下个人犯罪是如何促成这一趋势的:

在《密尔沃基每月犯罪率》一书中,我们提出了个人犯罪在几个月内如何波动的想法。盗窃伤害罪刑事毁坏入室盗窃车辆盗窃抢劫高峰在 7、8 月份,而锁车进入高峰在 9、10 月份。

为了检查每个月之间发生的犯罪率波动,这里有一个更精细的可视化:

How to Read the Figure: the columns and rows are grouped into months and years, respectively (see the top and right graph headings). The small individual columns labeled on the bottom of the graph each represents the day of the week. The individual rows labeled on the bottom of the graph represent the week of the month. Each small colored square represents a single day and is colored according to the total amount of crime reports made that day.

该热图可以直观显示每周和每天的趋势。7 月和 8 月的季节性犯罪高峰似乎是这两个月犯罪水*一致的结果,但 2014 年除外,该年的高峰出现在 7 月底和 8 月初。

几乎每个月的月最小值(最暗的紫色方块)都落在该月的第一周,这一趋势适用于 2005—2013 年的数据(未公布的结果)。

每月每天报告的犯罪总数证实了我们在上图中观察到的趋势,每月的低点通常出现在每月的第四天,紧随其后的是第二天。虽然犯罪报告变化很大,但通常会在一个月内增加。

犯罪率下降的趋势

犯罪报告总量在 2006 年达到高峰后不久就稳步下降。 与 2006 年的水*相比,2018 年报告的犯罪总数下降了* 40%。然而,这种趋势并非密尔沃基独有。根据皮尤研究中心的数据,自 20 世纪 90 年代初以来,美国的犯罪率一直在大幅下降。

按犯罪类型分类的年度犯罪总数报告中,我们看到盗窃和 c 刑事伤害随着时间的推移明显稳步下降。相反,自 2006 年以来,攻击性犯罪的报告数量有所增加,当时的犯罪报告总数要高得多。尽管报告的犯罪总量有很大的变化,但性犯罪、纵火和凶杀案的数量在过去几年里保持不变。

基于武器的调查结果

武器使用

在本分析报告的 667,025 起犯罪中,有 277,580 起报告使用了武器。然而,在超过 100,000 个案例中,使用的武器被归类为“未知”。这就剩下大约 175,000 个已确认的武器使用案例需要分析。

为了按武器类型确定武器使用的普遍程度,915 种不同的“使用的武器”分类被压缩到类似的分组中,结果被过滤,产生 2005 年至 2018 年间 100 起或更多事件中使用的武器。

密尔沃基 2005 年至 2018 年犯罪中使用的武器总数显示 使用的前 3 种武器是“手”、“手枪”和“枪”。 为了调查与犯罪类型相关的武器使用情况,武器根据其在犯罪中的使用记录绘制成柱状图:

为了简明起见,只列入了在 1 000 起或更多事件中使用的武器。由于事件数量有限,用于杀人锁车偷车的武器不在列表中。

按犯罪类型划分的武器使用中攻击性犯罪入室盗窃性犯罪盗窃中使用频率最高的武器是“手”。“手枪”一直是抢劫案中使用的主要武器,也是涉及武器的袭击案中使用第二多的武器。

A Milwaukee city street. Photo by Lucas Ludwig

可视化基于位置的数据

为了对犯罪进行地理空间分析,选择了 2018 年的密尔沃基犯罪数据,并清理了数据以移除缺失和不完整的位置值。这些数据随后被导出到德克萨斯州的地理服务公司,他们为这个项目捐赠了世界一流的地理编码服务。从 Texas A & M GeoServices 接收计算的纬度和经度坐标,并将结果与现有数据相结合。然后,基于位置(地理空间)的密尔沃基犯罪地图被创建。 注: 位置数据可能代表犯罪发生的地点或报案的地点。

识别犯罪‘热点’

为了开发我们对 2018 年发生许多犯罪的区域的直觉,创建了一个基于密度的地图,其中该区域被划分为半径为 0.5 英里(0.8047 公里)的六边形。每个六边形根据犯罪密度进行颜色编码,密度最低的区域为白色,密度最高的区域为紫色:

Density map of crime reported in Milwaukee in 2018. Note: not all data is visible. Click here to interact with the map and explore the full data set. Click here to interact with a 3-dimensional version of the map.

随着我们向市中心移动,犯罪率有上升的趋势。特别是,两个连续的高密度(紫色)区域非常突出,一个在城市中心的西北方向,另一个在中心的西南方向。

为了更好地显示犯罪类型的犯罪率,我们制作了一张地图,地图上的六边形根据各自区域内最常见的犯罪进行了着色:

Prevalence of Crime by Crime Type for Milwaukee in 2018. Hexagons are colored according to the crime that is most prevalent within it. Interact with the map here.

在上面的地图中,我们看到袭击罪是 2018 年密尔沃基最普遍的犯罪。我们还注意到,在城市的东部,密尔沃基港的上方和下方,上锁的车辆入口非常普遍。

识别基于位置的集群

为了识别基于位置的犯罪集群(分组),实施了监督机器学习算法:对点进行排序以识别集群结构(光学)。 OPTICS 是一种基于密度的聚类算法,允许我们准确识别聚类,即使道路、湖泊和街区等地理特征可能会影响犯罪发生的地点。阅读更多关于光学 这里 & 这里

Points with low reachability distance (located in ‘valleys’) are identified and grouped together into clusters (represented by color).

在包含 1000 起或更多犯罪(minPts = 1000)的基础上搜索高密度区域,这些犯罪发生在彼此接*的可达性距离内(对比参数 xi = 0.0037)。

OPTICS 被设置为识别 1,000 个或更多犯罪发生的聚类。证明我们的聚类选择的可达性图和凸聚类壳图分别在上面和下面可用。

A summary of the cluster data’s spatial distribution.

最后,我们将聚类绘制到密尔沃基的地图上:

The results of OPTICS-defined clusters mapped to Milwaukee. Visit the interactive map here.

上图显示了 2018 年密尔沃基四个光学定义的犯罪集群。聚类 1 由暗淡的褐红色点组成,并且包含所分析的所有点。请注意,并非所有的点都可以从该图像中看到,因为该图像的重点是强调 3 个感兴趣的集群(红色、橙色和黄色),但是,通过此链接可以看到这些点(确保切换缩小)。

红色聚类表示发生了* 1,800 起犯罪的区域,橙色区域包含发生了超过 2,500 起犯罪的区域,黄色区域包含发生了约 5,100 起犯罪的区域(详见表 1)。

位置图标代表每个集群的*似中心。为了更好地了解这些中心点的位置,将中心点与本地标识符进行匹配,结果如表 1 所示。

表 1: 聚类,2018 年的犯罪事件数量,&代表聚类中心的本地标识符。要查看地图,点击这里的集群编号: 1 2 3 ,&4

结论

这项分析研究了 2005 年至 2018 年间密尔沃基报告的 60 多万起犯罪。结果表明,有案可查的犯罪在过去 13 年中大幅下降,这主要是由于盗窃行为的减少。然而,尽管有这种趋势,关于攻击的报告一直在增加。从历史上看,犯罪率在每年的 2 月份最低,在 7 月和 8 月达到高峰。24 小时报告的犯罪趋势表明,上午 8:00 至下午 5:00 之间的水*较高,而没有观察到犯罪与星期几之间的关系。

地理空间分析将 2018 年犯罪数据映射到密尔沃基,并证明袭击是该市大多数地区最普遍的犯罪。最后, OPTICS 聚类确定了密尔沃基的三个高犯罪率地区,占 2018 年犯罪率的约 25%。

Milwaukee Skyline at Sunset. Photo Credit: Steve. Photo modified to fit the page.

致谢

衷心感谢 Charin Polpanumas 对他在数据科学方面的指导以及对这个项目的审查(点击查看他的杰出工作)。感谢德克萨斯州地理服务公司为该项目提供地理编码服务。

连线:加入脸书的美国数据科学

Github:https://github.com/jsolson4

作者:贾斯汀·奥尔森

数据驱动的运营模式

原文:https://towardsdatascience.com/the-data-driven-operating-model-2fa1b72c0f1d?source=collection_archive---------8-----------------------

数据,尤其是机器学习通常被认为是解决所有商业挑战的灵丹妙药。随后,许多企业已经或正在建设必要的基础设施和人才,以兑现他们认为数据和机器学习可以提供的崇高承诺。这是正确的举措——毫无疑问,分析,无论是描述性的还是规范性的,都有能力彻底改变企业的动力和效率。不幸的是,许多公司都难以实现数据和机器学习所代表的崇高承诺。

正如我们大多数人所知,真正成功的数据科学或分析项目与业务成果密不可分,并跨越多个团队、组织和专业领域。构建模型或拼接数据本身很复杂,但通常是操作数据流或算法的“简单”部分,以便对业务产生真正的影响并推动战略向前发展。很少看到数据项目达到这种水*,正因为如此,许多数据项目被视为失败或被忽视。大型高科技公司也不能幸免于这一挑战。我亲眼目睹了世界上最大的技术公司之一的数据科学团队花费数年时间来完成一个模型,但无法以任何有效的方式将该模型有效地交付给最终客户。

数据操作的复杂性

我们如何解决这个问题?这个问题的最佳答案会让你相信这是由于人才短缺造成的,也就是说,如果我们有更多的专家或“合适的”专家来解决“数据”问题,我们就能解决它。这种策略是许多组织应对困难挑战时所采用的。在科学界,这种想法被称为“局部搜索”(爱泼斯坦, Range ,第 173 页— 在我之前的文章中提到)依赖单一知识领域的专家,他们利用最老套的方法来解决复杂的问题。虽然专业化绝对没有错,但在多个组织或整个公司中部署描述性和规范性分析的挑战跨越了多个业务知识领域、团队以及业务战略和财务、数据工程、数据科学和运营之间的交叉领域。有这么多的变量在起作用,“数据项目”的复杂性达到了令人眩晕的高度。著名的行为科学家丹尼尔·卡内曼帮助我们理解这种性质的问题是“邪恶的”卡尼曼将一个棘手的问题定义为“一个游戏规则经常不清楚或不完整的问题,可能有也可能没有重复的模式,它们可能不明显,反馈经常被延迟或不准确,或者两者兼而有之。”(Epstein, Range ,第 21 页)集成和部署数据驱动的解决方案和产品的挑战充满了各种障碍,这些障碍对于每个组织来说都是独一无二的,需要能够横向连接跨领域和业务部门的知识和专业技能。心理学家称之为“类比思维”,即“在多个领域或场景中识别概念相似性的实践,这些领域或场景表面上似乎没有什么共同点。”(爱泼斯坦,范围,第 103 页)

类比思维提供了一套工具,用于解决在整个组织范围内操作数据的挑战性任务。我在自己的工作中利用类比思维提出了一个解决这个问题的框架——我称之为数据驱动的运营模式

数据驱动的运营模式

数据驱动的运营模式是一个构建流程和基础设施的框架,使公司能够有效地运营数据。我主要在营销组织的环境中使用这个框架,但是我相信这里的原则将广泛适用。数据驱动的运营模式的目标不是提供一个放之四海而皆准的解决方案,而是提供一个框架来创建您自己的计划,以组织您企业的人员、流程和数据基础架构,从而部署高效的描述性和规范性分析解决方案。该模型由 5 根支柱支撑:

  1. 客户智能
  2. 决策
  3. 交付
  4. 商业智能
  5. 数据翻译

五大支柱中的每一个都可以由一个团队或个人组成,遵循为该支柱设计的独特流程。下面,我将解释每一个支柱,该支柱中的团队或个人的责任,以及应该围绕它们设计的流程。(如果您不想阅读每一部分,请滚动到最后一段了解关键要点。)

客户智能

不要与商业智能相混淆,客户智能是一个存储库和流程(CDP、CRM 或手工制作),其中保存了客户的完整资料。这是为整个数据驱动模型提供动力的燃料。最终,客户是保持业务运营的关键,因此围绕客户知识组织一个团队,并以逻辑方式将这些知识结合起来,对于实现业务驱动的分析解决方案至关重要。

该团队或个人负责创建尽可能完整的客户形象。这意味着创建一个数据库、CDP 或 CRM(可能两者都有),它对您的整个客户群、他们在您的交付渠道中的行为集(稍后将详细介绍)以及将数据引入存储库的自动化或 ETL 的构建进行了有组织的细分。

这个团队负责从您的每个外联渠道获取和组织数据,通常由数据工程师、数据分析师和业务分析师组成。这包括您选择的 CDP/CRM 软件中的 Salesforce 分析师或专家。该团队不仅统一了客户数据流,而且对客户是谁、应该收集哪些客户数据以及为什么应该收集这些数据有着深刻的理解。在您的普通组织中,数据工程与 IT 坐在一起,并且经常与那些具有深厚客户知识的人分开。这些团队需要通力合作,为客户提供能够推动业务发展的行动和知识。

该团队使用数据翻译来获取和拼接数据,这些数据与公司的战略业务目标相一致,用于衡量和决策制定。该团队还对客户群进行特别分析,以回答客户活动和化妆品方面的业务问题。

决策

决策是围绕数据处理建立的团队和基础设施。这意味着算法和自动化进入外联渠道或商业智能,用于报告和决策。

该团队与客户智能和数据翻译合作,将业务目标合成为数据产品,推动公司目标向前发展,该团队由数据科学家、数据工程师和研究人员组成。

该团队通过数据翻译将业务问题和目标转化为数据产品,这意味着预测客户在营销或业务运营方面的行为,预测销售/库存/渠道,或者构建自动化以推动向客户或商业智能的交付。

交付

交付是用于操作预测模型和自动化的团队和基础设施,这些模型和自动化实现了去往客户或返回业务的各种活动集。

这个团队与决策和数据翻译一起工作,获取测试模型和自动化,并将其投入到适当渠道的生产中。这意味着将算法投入生产,用于电子邮件营销活动、网站个性化、客户体验、业务可视化或其他。这个团队由机器学习工程师和数据工程师组成。

商业智能

商业智能是为企业创建、维护和交付报告和仪表板的团队和基础设施。

该团队负责数据翻译和交付,以开发需要持续检查的报告和仪表板,例如营销活动绩效或高级管理业务摘要。该团队由数据工程师和分析师组成,他们专门负责构建和设计报表和数据自动化,以支持仪表盘、电子邮件、警报或销售、营销和产品团队可能需要的任何其他商业智能。

数据翻译

数据转换是数据驱动运营模式的基础,也是其他支柱正常运行的关键。如果只从这篇文章中拿一样东西的话,数据翻译概念是最重要的。

数据翻译团队负责将业务目标和策略翻译成技术数据项目。该团队与业务运营部门一起学习业务需求,并将这些需求转化为技术项目,然后将这些项目反馈给客户智能、业务智能和决策部门的各个小组。该团队由“数据翻译”组成,即精通业务的转换分析师、数据工程师或数据科学家,他们擅长将所有不同的部分结合在一起,以提供分析解决方案。最终,确保数据项目成功的任务落到了数据翻译人员的身上,他们需要跨多个业务部门来部署成功的解决方案。

这种模式与当今公司的做法有何不同?

数据驱动的运营模式的焦点是团队或个人(数据翻译人员),他们的责任和时间完全集中在连接业务战略、运营团队以及分析和数据团队之间的点,以释放数据可以为组织带来的全部潜力。

我主要观察了在大多数企业中部署分析的两种不同的组织模式:1)由数据科学家和分析师组成的中央数据团队与运营业务部门坐在一起并提供支持,或者 2)分别位于每个组织内的较小的分析团队。虽然这些模型可以提供一些价值,但它们缺乏将所有业务单位和业务战略横向连接到分析组织的刻意关注,而完整的组织模型需要这种关注。数据驱动的运营模式通过围绕业务活动(而非数据活动)组织数据和分析来解决这一问题,即了解客户、做出有关客户的决策、向客户交付产品以及做出有关业务的决策。数据翻译团队在这些团队和他们的业务运营对应方之间建立联系,从而实现全面的说明性和描述性分析的整体方法。

我如何将数据驱动的运营模式引入我的组织?

我在本文中介绍的框架并不完美,也没有解决每个公司的独特情况。我也不处理与团队重组相关的政治或结构性挑战。然而,我希望该模型能为您提供一个全新的视角,让您了解如何更有效地组织数据团队,从而提供更具影响力的数据解决方案。和所有的框架一样,我在这里介绍的只是一个指导方针,告诉你如何在你工作的地方实现积极的改变。为此,以下是关键要点:

  • 如果可能的话,围绕业务活动而不是数据活动来组织不同的分析团队或团队成员。这意味着,与其拥有分散的数据工程、数据科学和分析师团队,不如将人员放在一起,共同更有效地实现业务目标或完成项目。当麻省理工学院研究员托马斯艾伦研究美国政府工程团队在太空竞赛中的效率时,他发现最成功的团队(那些完成最复杂项目的团队)有一个惊人的共同点;他们桌子的接*度(科伊尔,,文化代码,第 5 章)。我们与那些和我们工作关系密切的人交流得更多——从而带来更大的信任和更多的联系。显而易见,当我们之间没有墙(无论是组织上的,还是实际上的墙)时,我们会做更多的事情。
  • 有人需要将业务单位和数据组织之间的点连接起来。无论是正式的“数据翻译”还是你团队中的某个人(或者你!)非常擅长将业务需求和战略转化为技术解决方案,这是绝对必要的。这个人或团队必须得到业务和技术团队的信任和重视,并像与数据组织一样与业务部门密切合作。
  • 我们都可以花更多的时间做“类比思考”也就是说,在与我们专业领域完全不同的领域工作和思考。这样做会让我们更好地解决“邪恶”的问题,这些问题是我们大多数人从未见过的,模式不清楚,也没有明确的规则存在。正是这些类型的问题,如果得到解决,将对我们和我们工作的地方产生最大的影响。

数据驱动的派对:电影胡子

原文:https://towardsdatascience.com/the-data-driven-partier-movie-mustache-25b078c7e72d?source=collection_archive---------13-----------------------

“电影胡子”背后的概念很简单,但却是革命性的。和朋友一起看电影,但在电视上留一两撇小胡子——只要小胡子和角色的上唇对齐,每个人都会喝酒。这个游戏对我来说是陌生的,直到几周前,当我观看亚当·桑德勒经典电影《T2 水兵》时才体验到。虽然看着每个角色都留着电视上的小胡子很令人惊讶,但与接下来的问题陈述相比,这就相形见绌了:我们怎么才能把小胡子放在一起,最大限度地让大家一起喝酒呢?和往常一样,这里看到的代码可以在 my GitHub 上完整查看。

The placement of this mustache was optimized for comedic effect

由于面部识别软件包的可用性,通过正确的方法,这个问题可以在不到一天的时间内得到解决。为了尽可能高效地解决我的问题陈述,我将其分解为几个简单的步骤:

  1. 找到一个预先训练的神经网络,找到人脸
  2. 使用模型返回的面部坐标,估计小胡子应该去哪里
  3. 使用电影数据获取频繁的小胡子位置
  4. 理智地想象这些位置

The red dot marks where MTCNN suggests a mustache should go

我使用的模型涉及多任务级联卷积神经网络,称为 MTCNN。我想特别感谢这篇文章包含了很多与包相关的语法,因为它几乎忽略了这一努力。MTCNN 非常有效地定位面部标志,并返回五个更有用的标志:左眼和右眼、左右嘴角和鼻子。用我自己的一张照片测试这个模型,我们可以看到它不能完美地检测到这些面部标志,但是对于这个项目来说,它足够好了。在左边的图片中,我用 MTCNN 在我的脸上画了一个边界框,并在模型输出我的鼻子、右嘴角和左嘴角的地方画了蓝点。我用红色标出了这三个点的质心,以估计小胡子应该去哪里,结果令我非常惊喜。

现在,我们已经用 MTCNN 在我的一张脸上做了概念验证,是时候扩大这个过程了。使用下面的代码,我让 MTCNN 观看了《T10》印第安纳·琼斯和《夺宝奇兵》,找到了小胡子应该去的地方。

#get_mustache takes the output from MTCNN and returns the #coordinates of the nose and mouth-corners centroid.detector = MTCNN()mustaches = []
for file in os.listdir(‘data/indiana_jones1/’):
    image = cv2.imread(f’data/indiana_jones1/{file}’)
    result = detector.detect_faces(image)
    for face in result:
        mustache_location = get_mustache(face)
        mustaches.append(mustache_location)

我现在有了一个与第一部印第安纳·琼斯电影相关的(~9000)个胡须位置元组的列表,是时候可视化结果了。因为元组列表与我想到的可视化解决方案不兼容,所以必须进行一些轻微的清理:

x = []
y = []
for location in mustaches:
    x.append(location[0]/2880)
    y.append((1800-location[1])/1880)

我使用的 y 值是 1800 减去 y 坐标,因为(0,0)表示图像的左上方,但我需要(0,0)表示图像的左下方,图像是 2880x1800。然后我把它们缩小到小数,这样坐标值就可以成为任何电视或屏幕上可用的分数。

A kde plot of frequent mustache coordinates

在这个游戏中,我用来最大化饮酒量的表示是一个核密度估计器(KD)和一个 2D hexplot。kde 图就像一张地形图,显示了所测量的所有事件的密度。在这种情况下,它显示了小胡子出现概率最高的区域。在轴上,分别有胡子的 x 和 y 坐标的*滑分布。这些轴按屏幕比例缩放,因此(0.5,0.5)的值将是屏幕中心的一个点。我非常喜欢这种可视化,因为它简单易懂,但也有缺点。首先也是最重要的一点,它只显示了一个高密度的区域,所以如果我们玩的游戏有一个以上的胡子,这种可视化显然是有限的。这种可视化的另一个主要缺陷是它有多模糊。地形风格的层是很好地看到收敛在一个点上,但最暗的层是令人失望的大。使用不同的可视化,我们应该能够看到胡子应该去哪里。

Hexplot of frequent mustache locations

使用 hexplot,解决了 kde plot 的两个缺点。此处显示的六边形图就像一个 2D 直方图,准确地显示了胡须最常出现的位置。该图的 x 轴和 y 轴显示了 KD 图轴上表示的不*滑直方图,更精确地表示了每个维度中的数据。hexplot 还显示了小胡子与脸对齐的每个位置,这意味着如果我们不想最大化所喝的饮料,我们仍然可以将小胡子放在它们偶尔会与脸对齐的合理位置。

如果规则是在小胡子排成一行的时候喝酒,这里描述的方法有助于让电影小胡子之夜更有侵略性,但是如果规则是每个小胡子只能喝一杯,我们可能需要考虑一个稍微不同的方法。要在这个新的方向上采用基于算法的方法,只需跟踪先前的小胡子位置,并在将坐标添加到列表之前确保每个后续坐标对都在预定距离阈值之外,从而从我们的数据集中移除重复的移动。诚然,我没有运用这一逻辑,但我假设这不会对最终结果产生太大影响。

我欢迎对这些方法的任何改进,也欢迎对数据科学工具包的其他有趣应用提出你想看到的建议——请在下面留下评论!

机器学习的数据结构。第一部分。

原文:https://towardsdatascience.com/the-data-fabric-for-machine-learning-part-1-2c558b7035d7?source=collection_archive---------8-----------------------

语义和数据结构的新进展如何帮助我们更好地进行机器学习。还有,机器学习的新定义。这里是关于深度学习的 1-b 部分。

Image by Héizel Vázquez

点击此处阅读第 1-b 部分:关于数据结构的深度学习:

[## 机器学习的数据结构。第 1-b 部分:图上的深度学习。

图形的深度学习日益重要。在这里,我将展示思考机器的基础…

towardsdatascience.com](/the-data-fabric-for-machine-learning-part-1-b-deep-learning-on-graphs-309316774fe7)

介绍

如果你在网上搜索机器学习,你会找到大约 2,050,000,000 个结果。是啊,真的。找到适合每一种用途或情况的描述或定义并不容易,但还是有令人惊讶的。在这里,我将提出一个不同的机器学习定义,专注于一个新的范式,即数据结构。

目标

一般

解释数据结构与机器学习的联系。

细节

  • 描述数据结构和创建数据结构的生态系统。
  • 用几句话解释一下什么是机器学习。
  • 提出一种在数据结构内部可视化机器学习洞察的方法。

主要理论

如果我们能够构建一个支持公司所有数据的数据结构,那么其中的业务 洞察可以被认为是 it 中的凹痕。发现洞察力是什么的自动过程,它被称为机器学习

第一节。什么是数据结构?

我在之前已经谈到过数据结构,并且给出了它的定义(下面我将再次把它放在这里)。

当我们谈到数据结构时,有几个词我们应该提到:图、知识图、本体、语义、关联数据。如果你想要这些定义,请阅读上面的文章;然后我们可以说:

数据结构是支持公司所有数据的*台。它是如何被管理、描述、组合和普遍访问的。该*台由企业知识图构成,以创建统一的数据环境。

让我们把这个定义分成几部分。我们首先需要的是一个知识图

知识图由数据和信息的集成集合组成,其中还包含不同数据之间的大量链接。这里的关键是,在这个新模型下,我们不是在寻找可能的答案,而是在寻找答案。我们想要事实——这些事实从何而来并不重要。这里的数据可以代表概念、物体、事物、人,实际上是你脑海中的任何东西。图表填充了概念之间的关系和联系。

知识图表还允许您为图表中的关系创建结构。有了它,就有可能建立一个框架来研究数据及其与其他数据的关系(还记得本体论吗?)。

在这种情况下,我们可以向我们的数据湖提出这个问题:

这里存在什么?

数据湖的概念也很重要,因为我们需要一个存储数据、管理数据和运行工作的地方。但我们需要一个智能数据湖,一个了解我们拥有什么以及如何使用它的地方,这是拥有数据结构的好处之一。

数据结构应该是一致和统一的,这意味着我们应该努力将组织中的所有数据组织在一个地方,并真正管理和控制它。

第二节。什么是机器学习?

http://www.cognub.com/index.php/cognitive-platform/

机器学习已经存在一段时间了。有很多关于它的描述、书籍、文章和博客,所以我不会用 10 个段落来烦你。

我只想把几点说清楚。

机器学习不是魔法。

机器学习是数据科学工作流程的一部分。但这并不是结束。

机器学习需要数据才能存在。至少现在是这样。

好了,接下来,让我给机器学习一个借用的个性化定义:

机器学习是理解数据中的模式和一些数据表示的自动过程,通过使用能够提取这些模式而无需专门编程的算法来创建解决特定(或多个)问题的模型。

你可以同意这个定义,也可以不同意,现在文献中有很多很好的定义,我只是认为这个定义很简单,对我想表达的东西很有用。

第三节。在数据结构中进行机器学习

在爱因斯坦引力理论(广义相对论)中,他从数学上提出质量可以使时空变形,这种变形就是我们所理解的引力。我知道如果你不熟悉这个理论,听起来会很奇怪。让我试着解释一下。

在没有引力的狭义相对论的“*坦”时空里,力学定律呈现出一种特别简单的形式:只要没有外力作用在物体上,它就会在时空里做直线运动:沿直线路径匀速运动(牛顿力学第一定律)。

但是当我们有质量和加速度时,我们可以说我们在重力的存在下。就像惠勒说的:

时空告诉物质如何运动;物质告诉时空如何弯曲。

在上面的图像中,“立方体”是时空结构的代表,当质量在其中移动时,它会使其变形,“线”移动的方式会告诉我们一个附*的物体在接*那个物体时会如何表现。所以重力就像是:

所以当我们有质量时,我们可以在时空中制造一个“凹痕”,之后当我们靠*那个凹痕时,我们看到的就是重力。我们必须离物体足够*才能感受到它。

这正是我提出的机器学习在数据结构中的作用。我知道我听起来很疯狂。让我解释一下。

假设我们已经创建了一个数据结构。对我来说,最好的工具是我在其他文章中提到的 Anzo。

https://www.cambridgesemantics.com/

你可以用 Anzo 建立一个叫做“企业知识图”的东西,当然也可以创建你的数据结构。

图中的节点和边灵活地捕捉了每个数据源的高分辨率孪生数据—结构化的或非结构化的。该图表可以帮助用户快速、互动地回答任何问题,允许用户与数据对话以揭示洞察力

顺便说一句,这是我如何描绘一个洞察力:

Image by Héizel Vázquez

如果我们有数据结构:

Image by Héizel Vázquez

我的建议是,一个洞见可以被认为是其中的一个凹痕。发现这种洞察力是什么的自动过程,就是机器学习。

Image by Héizel Vázquez

所以现在我们可以说:

机器学习是通过使用算法发现数据结构中隐藏的见解的自动过程,这些算法能够在没有专门编程的情况下找到这些见解,以创建解决特定(或多个)问题的模型。

通过结构生成的洞察本身是新数据,作为结构的一部分变得显式/明显。也就是说,洞察力可以扩大图表,潜在地产生进一步的洞察力。

在数据结构中,我们遇到了一个问题,试图找到数据中隐藏的见解,然后使用机器学习我们可以发现它们。这在现实生活中会是什么样子?

剑桥语义的人也有 Anzo 的答案。Anzo for Machine Learning 解决方案用一个现代数据*台取代了这种繁琐、容易出错的工作,该*台旨在快速集成、协调和转换来自所有相关数据源的数据,使其成为优化的机器学习就绪的要素数据集。

数据结构提供了快速有效的功能工程所必需的高级数据转换功能,有助于将关键业务信号与无关噪声分离开来。

请记住,数据第一,这种新模式使用内置的图形数据库和语义数据层来集成和协调所有相关的数据源,包括结构化和非结构化数据。数据结构传达了数据的业务上下文和含义,使业务用户更容易理解和正确利用。

再现性对于数据科学和机器学习来说非常重要,因此我们需要一种简单的方法,通过管理数据集的目录以及数据集成的持续方面(如数据质量处理)来重用协调的结构化和非结构化数据,这就是数据结构所提供的。它还保留了组成机器学习数据集的数据的端到端血统和出处,以便在生产中使用模型时,很容易发现需要什么数据转换。

在接下来的文章中,我将给出一个具体的例子来说明如何在这个新的框架中进行机器学习。

结论

机器学习并不新鲜,但有一个新的范式来做它,也许它是该领域的未来(我多么乐观)。在数据结构内部,我们有了新的概念,如本体、语义、层、知识图等;但所有这些都可以改善我们思考和进行机器学习的方式。

在这种范式中,我们通过使用算法来发现数据结构中隐藏的见解,这些算法能够找到这些见解,而无需为此专门编程,从而创建解决特定(或多个)问题的模型。

感谢科学与数据团队对本文的帮助。

也感谢你阅读这篇文章。希望你在这里发现了一些有趣的东西:)。如果这些文章对你有帮助,请与你的朋友分享!

如果您有任何问题,请在 Twitter 上关注我:

[## 法维奥·巴斯克斯(@法维奥·巴斯克斯)|推特

Favio Vázquez 的最新推文(@FavioVaz)。数据科学家。物理学家和计算工程师。我有一个…

twitter.com](https://twitter.com/faviovaz)

和 LinkedIn:

[## favio vázquez——science ia y Datos | LinkedIn 创始人

查看 Favio Vázquez 在世界上最大的职业社区 LinkedIn 上的个人资料。Favio 有 16 个工作列在他们的…

www.linkedin.com](https://www.linkedin.com/in/faviovazquez/)

那里见:)

机器学习的数据结构。第 1-b 部分:图上的深度学习。

原文:https://towardsdatascience.com/the-data-fabric-for-machine-learning-part-1-b-deep-learning-on-graphs-309316774fe7?source=collection_archive---------16-----------------------

图形的深度学习日益重要。在这里,我将通过库 Spektral 和*台 MatrixDS 展示在图上思考机器学习和深度学习的基础知识。第一部分这里

声明:这不是第二部分的过去的文章的主题;这是第一部分的延续,强调深度学习。

介绍

我们正在定义一种新的机器学习方式,专注于一种新的范式,即数据结构。

在过去的文章中,我给出了我对机器学习的新定义:

机器学习是通过使用算法发现数据结构中隐藏的见解的自动过程,这些算法能够在没有专门编程的情况下找到这些见解,以创建解决特定(或多个)问题的模型。

理解这一点的前提是我们已经创建了一个数据结构。对我来说,最好的工具就是我在其他文章中提到的 Anzo。

https://www.cambridgesemantics.com/

你可以用 Anzo 建立一个叫做“企业知识图”的东西,当然也可以创建你的数据结构。

但是现在我想把重点放在机器学习内部的一个话题,深度学习。在的另一篇文章中,我给出了深度学习的定义:

深度学习是机器学习的一个特定子领域,是从数据中学习表示的一种新方式,它强调学习越来越有意义的表示的连续“层【神经网络】。

在这里,我们将讨论深度学习和图论的结合,并看看它如何帮助我们的研究向前发展。

目标

一般

为在数据结构上进行深度学习奠定基础。

细节

  • 在图上描述深度学习的基础。
  • 探索图书馆的特色。
  • 验证在数据结构上进行深度学习的可能性。

主要假设

如果我们可以构建一个支持公司所有数据的数据结构,那么通过使用神经网络(深度学习)从数据中学习越来越有意义的表示来发现见解的自动过程就可以在数据结构内部运行。

第一节。关于图的深度学习?

https://tkipf.github.io/graph-convolutional-networks/

通常我们使用张量来创建神经网络,但是记住我们也可以用矩阵来定义张量,并且可以通过矩阵来定义。

在库speck tral的文档中,他们声明一个图通常由三个矩阵表示:

  • A∈{0,1}^(N×N): a 二元邻接矩阵,其中如果节点 ij 之间有连接,A_ ij =1,否则 a _ij= 0;
  • X∈ℝ^(N×F):编码节点属性(或特征)的矩阵,其中 FF 维属性向量与每个节点相关联;
  • E∈ℝ^(N×N×S):一个编码边属性的矩阵,其中一个 S 维属性向量与每个边相关联。

我不会在这里详细介绍,但如果你想更全面地了解图形深度学习,请查看 Tobias Skovgaard Jepsen 的文章:

[## 如何用图卷积网络在图上做深度学习

第 1 部分:图卷积网络的高级介绍

towardsdatascience.com](/how-to-do-deep-learning-on-graphs-with-graph-convolutional-networks-7d2250723780)

这里重要的部分是图形神经网络(GNN)的概念。

图形神经网络(GNN)

https://arxiv.org/pdf/1812.04202.pdf

GNN 的思路很简单:对图的结构信息进行编码,每个节点 v_ i 可以用一个低维状态向量 s_ i ,1 ≤ i ≤ N 来表示(记住向量可以认为是秩 1 的张量,张量可以用矩阵来表示)。

学习图上的深度模型的任务可以大致分为两个领域:

  • 以节点为中心的任务:任务与图中的单个节点相关联。例子包括节点分类、链接预测和节点推荐。
  • 以图形为中心的任务:任务与整个图形相关联。示例包括图形分类、估计图形的某些属性或生成图形。

第二节。使用 Spektral 进行深度学习

https://github.com/danielegrattarola/spektral/

作者将 Spektral 定义为一个关系表示学习的框架,用 Python 构建,基于 Keras API。

装置

我们将使用 MatrixDS 作为运行我们代码的工具。请记住,在 Anzo 中,你也可以带着这段代码在那里运行。

您需要做的第一件事是派生 MatrixDS 项目:

[## MatrixDS |数据项目工作台

MatrixDS 是一个构建、共享和管理任何规模的数据项目的地方。

community.platform.matrixds.com](https://community.platform.matrixds.com/community/project/5c6ae7c8c1b06ba1e18f2a6e/files)

点击:

您将已经安装了库,并且一切都正常工作:)。

如果你在外面运行这个,记住这个框架是为 Ubuntu 16.04 和 18.04 测试的,你应该安装:

sudo apt install graphviz libgraphviz-dev libcgraph6

然后使用以下内容安装该库:

pip install spektral

数据表示法

在 Spektral 中,一些层和函数被实现为在单个图形上工作,而其他层和函数则考虑图形的集合(即数据集或批次)。

该框架区分三种主要操作模式:

  • 单个,这里我们考虑一个单个的图,以及它的拓扑和属性;
  • batch ,这里我们考虑一个图的集合,每个图都有自己的拓扑和属性;
  • 混合,这里我们考虑一个具有固定拓扑的图,但是是不同属性的集合;这可以被视为批处理模式的一种特殊情况(即,所有邻接矩阵都相同的情况),但是出于计算原因而被分开处理。

例如,如果我们跑

from spektral.datasets import citation
adj, node_features, edge_features, _, _, _, _, _ = citation.load_data('cora')

我们将以单一模式加载数据:

我们的邻接矩阵是:

In [3]: adj.shape 
Out[3]: (2708, 2708)

出音符属性包括:

In [3]: node_attributes.shape 
Out[3]: (2708, 2708)

我们的优势是:

In [3]: edge_attributes.shape 
Out[3]: (2708, 7)

基于图关注层的半监督分类

声明:我假设你从这里知道 Keras。

有关更多详细信息和代码视图:

[## MatrixDS |数据项目工作台

MatrixDS 是一个构建、共享和管理任何规模的数据项目的地方。

community.platform.matrixds.com](https://community.platform.matrixds.com/community/project/5c6ae7c8c1b06ba1e18f2a6e/files)

GAT 是一种新颖的神经网络体系结构,利用掩蔽的自注意层对图结构数据进行操作。在 Spektral 中, GraphAttention 层计算类似于layers.GraphConv的卷积,但是使用 Attention 机制对邻接矩阵进行加权,而不是使用归一化拉普拉斯算子。

它们的工作方式是通过堆叠层,其中节点能够关注其邻域的特征,这使得能够(隐式地)为邻域中的不同节点指定不同的权重,而不需要任何代价高昂的矩阵运算(如求逆),也不依赖于预先知道的图结构。

https://arxiv.org/pdf/1812.04202.pdf. The attention mechanism employed by the model, parametrized by a weight vector, applying a LeakyReLU activation.

我们将使用的模型非常简单:

# Layers
dropout_1 = Dropout(dropout_rate)(X_in)
graph_attention_1 = GraphAttention(gat_channels,
                                   attn_heads=n_attn_heads,
                                   attn_heads_reduction='concat',
                                   dropout_rate=dropout_rate,
                                   activation='elu',
                                   kernel_regularizer=l2(l2_reg),
                                   attn_kernel_regularizer=l2(l2_reg))([dropout_1, A_in])
dropout_2 = Dropout(dropout_rate)(graph_attention_1)
graph_attention_2 = GraphAttention(n_classes,
                                   attn_heads=1,
                                   attn_heads_reduction='average',
                                   dropout_rate=dropout_rate,
                                   activation='softmax',
                                   kernel_regularizer=l2(l2_reg),
                                   attn_kernel_regularizer=l2(l2_reg))([dropout_2, A_in])# Build model
model = Model(inputs=[X_in, A_in], outputs=graph_attention_2)
optimizer = Adam(lr=learning_rate)
model.compile(optimizer=optimizer,
              loss='categorical_crossentropy',
              weighted_metrics=['acc'])
model.summary()# Callbacks
es_callback = EarlyStopping(monitor='val_weighted_acc', patience=es_patience)
tb_callback = TensorBoard(log_dir=log_dir, batch_size=N)
mc_callback = ModelCheckpoint(log_dir + 'best_model.h5',
                              monitor='val_weighted_acc',
                              save_best_only=True,
                              save_weights_only=True)

顺便说一句,模型很大:

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, 1433)         0                                            
__________________________________________________________________________________________________
dropout_1 (Dropout)             (None, 1433)         0           input_1[0][0]                    
__________________________________________________________________________________________________
input_2 (InputLayer)            (None, 2708)         0                                            
__________________________________________________________________________________________________
graph_attention_1 (GraphAttenti (None, 64)           91904       dropout_1[0][0]                  
                                                                 input_2[0][0]                    
__________________________________________________________________________________________________
dropout_18 (Dropout)            (None, 64)           0           graph_attention_1[0][0]          
__________________________________________________________________________________________________
graph_attention_2 (GraphAttenti (None, 7)            469         dropout_18[0][0]                 
                                                                 input_2[0][0]                    
==================================================================================================
Total params: 92,373
Trainable params: 92,373
Non-trainable params: 0

因此,如果你没有那么多的力量,就减少使用它的次数。请记住,升级您的 MatrixDS 帐户非常容易。

然后我们训练它(如果你没有足够的电力,这可能需要几个小时):

# Train model
validation_data = ([node_features, adj], y_val, val_mask)
model.fit([node_features, adj],
          y_train,
          sample_weight=train_mask,
          epochs=epochs,
          batch_size=N,
          validation_data=validation_data,
          shuffle=False,  # Shuffling data means shuffling the whole graph
          callbacks=[es_callback, tb_callback, mc_callback])

获得最佳型号:

model.load_weights(log_dir + 'best_model.h5')

并对其进行评估:

print('Evaluating model.')
eval_results = model.evaluate([node_features, adj],
                              y_test,
                              sample_weight=test_mask,
                              batch_size=N)
print('Done.\n'
      'Test loss: {}\n'
      'Test accuracy: {}'.format(*eval_results))

在 MatrixDS 项目中查看更多信息:

[## MatrixDS |数据项目工作台

MatrixDS 是一个构建、共享和管理任何规模的数据项目的地方。

community.platform.matrixds.com](https://community.platform.matrixds.com/community/project/5c6ae7c8c1b06ba1e18f2a6e/files)

第三节。这在数据结构中处于什么位置?

如果您还记得上一部分,如果我们有一个数据结构:

洞察力可以被认为是其中的一个凹痕:

如果您在 MatrixDS *台上阅读本教程,您会意识到我们使用的数据不是简单的 CS,但是我们为库提供了:

  • 一个 N 乘 N 邻接矩阵(N 是节点数),
  • N 乘 D 特征矩阵(D 是每个节点的特征数量),以及
  • 一个 N 乘 E 的二进制标签矩阵(E 是类的数量)。

存储的是一系列文件:

ind.dataset_str.x => the feature vectors of the training instances as scipy.sparse.csr.csr_matrix object;    ind.dataset_str.tx => the feature vectors of the test instances as scipy.sparse.csr.csr_matrix object;    ind.dataset_str.allx => the feature vectors of both labeled and unlabeled training instances        (a superset of ind.dataset_str.x) as scipy.sparse.csr.csr_matrix object;    ind.dataset_str.y => the one-hot labels of the labeled training instances as numpy.ndarray object;    ind.dataset_str.ty => the one-hot labels of the test instances as numpy.ndarray object;    ind.dataset_str.ally => the labels for instances in ind.dataset_str.allx as numpy.ndarray object;    ind.dataset_str.graph => a dict in the format {index: [index_of_neighbor_nodes]} as collections.defaultdict        object;    ind.dataset_str.test.index => the indices of test instances in graph, for the inductive setting as list object.

所以这些数据存在于图表中。我们所做的就是将数据加载到库中。实际上,您可以在库中将数据转换为 NetworkX、numpy 和 sdf 格式。

这意味着,如果我们将数据存储在一个数据结构中,我们就有了我们的知识图,所以我们已经有了许多这些特征,我们所拥有的是找到一种将它与库连接起来的方法。这是现在最棘手的部分。

然后,我们可以通过对数据结构中的图表运行深度学习算法,开始在数据结构中寻找见解。

有趣的是,在图表本身中可能有运行这些算法的方法,为此我们需要能够利用图表结构中固有的存储数据来构建模型, Lauren Shin 在 Neo4j 中有一个非常有趣的方法:

[## 图形和 ML:多元线性回归

同样的 neo4j 线性回归程序,现在自变量无限!更多功能,无需额外…

towardsdatascience.com](/graphs-and-ml-multiple-linear-regression-c6920a1f2e70)

但这也是一项正在进行的工作。我想象这个过程是这样的:

这意味着神经网络可以生活在数据结构中,算法将与其中的资源一起运行。

有一件重要的事情我在这里甚至没有提到,那就是非欧几里德数据的概念,但是我稍后会讲到。

结论

如果我们可以将知识图与 Spektral(或其他)库连接起来,通过为我们拥有的图形数据部署图形神经网络模型,就有可能在数据结构上运行深度学习算法。

除了节点或图分类等标准的图推理任务,基于图的深度学习方法还被应用于广泛的学科领域,如建模社会影响、推荐系统、化学、物理、疾病或药物预测、自然语言处理(NLP)、计算机视觉、交通预测、程序归纳和解决基于图的 NP 问题。见https://arxiv.org/pdf/1812.04202.pdf

应用是无止境的,这是一个新时代的开始。敬请关注更多:)

机器学习的数据结构。第 2 部分:构建知识图。

原文:https://towardsdatascience.com/the-data-fabric-for-machine-learning-part-2-building-a-knowledge-graph-2fdd1370bb0a?source=collection_archive---------6-----------------------

在能够开发数据结构之前,我们需要构建一个知识图。在这篇文章中,我将建立如何创建它的基础,在下一篇文章中,我们将练习如何做到这一点。Part 1 是这里的,part 1-b 是这里的

介绍

在本系列的最后一篇文章中:

[## 机器学习的数据结构。第一部分。

语义学的新进展如何帮助我们更好地进行机器学习。

towardsdatascience.com](/the-data-fabric-for-machine-learning-part-1-2c558b7035d7) [## 机器学习的数据结构。第 1-b 部分:图上的深度学习。

图形的深度学习日益重要。在这里,我将展示思考机器的基础…

towardsdatascience.com](/the-data-fabric-for-machine-learning-part-1-b-deep-learning-on-graphs-309316774fe7)

我一直在笼统地谈论数据结构,并给出了数据结构中机器学习和深度学习的一些概念。并给出了我对数据结构的定义:

数据结构是支持公司所有数据的*台。它是如何被管理、描述、组合和普遍访问的。该*台由一个 企业知识图 组成,创建一个统一的数据环境。

如果你看一下定义,它说数据结构是由一个企业知识图形成的。因此,我们更好地知道如何创建和管理它。

目标

一般

建立知识图谱理论和构建的基础。

细节

  • 解释与企业相关的知识图的概念。
  • 给出一些关于建立成功的企业知识图的建议。
  • 展示知识图表的例子。

主要理论

数据结构中的结构是从知识图构建的,为了创建知识图,你需要语义和本体来找到一种链接数据的有用方法,这种方法可以唯一地识别和连接具有常见业务术语的数据。

第一节。什么是知识图?

https://medium.com/@sderymail/challenges-of-knowledge-graph-part-1-d9ffe9e35214

知识图由数据和信息的集成集合组成,其中还包含不同数据之间的大量链接。

这里的关键是,在这个新模型下,我们不是在寻找可能的答案,而是在寻找答案。我们想要事实——那些事实来自哪里并不重要。这里的数据可以代表概念、物体、事物、人,实际上是你脑海中的任何东西。图表填充了概念之间的关系和联系。

在这种情况下,我们可以向我们的数据湖提出这个问题:

这里存在什么?

我们在不同的地方。一个有可能建立一个框架来研究数据及其与其他数据的关系的领域。在知识图中,以特定形式的本体表示的信息可以更容易地被自动化信息处理访问,如何最好地做到这一点是像数据科学这样的计算机科学中的一个活跃的研究领域。

本体语言中的所有数据建模语句(以及其他一切)和数据的知识图世界本质上都是增量的。事后增强或修改数据模型可以很容易地通过修改概念来实现。

使用知识图,我们正在构建的是一种人类可读的数据表示,它唯一地标识数据并将其与常见的业务术语联系起来。这个“层”帮助最终用户自主、安全、自信地访问数据。

还记得这张图片吗?

我之前提出过,数据结构中的洞察可以被认为是 it 中的一个凹痕。发现这种洞察力是什么的自动过程,就是机器学习。

但是这个面料是什么?是知识图形成的对象。就像在爱因斯坦的相对论中,织物是由连续体(还是离散体)构成的?在这里,当你创建一个知识图时,结构就建立起来了。

为了构建知识图,你需要关联数据。关联数据的目标是以这样一种方式发布结构化数据,即它可以很容易地被消费并与其他关联数据和本体相结合,作为我们可以连接实体并理解它们的关系的方式。

第二节。创建成功的企业知识图

https://www.freepik.com/free-vector/real-estate-development-flat-icon_4167283.htm

不久前,Sebastien Dery 写了一篇关于知识图表挑战的有趣文章。这里你可以看看:

[## 知识图表的挑战

从弦乐到事物——导论

medium.com](https://medium.com/@sderymail/challenges-of-knowledge-graph-part-1-d9ffe9e35214)

来自 cambridgesemantis.com的伟大博客

[## 学习 RDF

引言这一系列课程是对 RDF 的介绍,RDF 是语义网的核心数据模型,也是

www.cambridgesemantics.com](https://www.cambridgesemantics.com/blog/semantic-university/learn-rdf/)

还有更多资源,有一个概念我甚至没有在任何文章中提到过,但是非常重要,就是三元组的概念:主语、宾语、谓语(或者实体-属性-值)。通常,当您研究三元组时,它们实际上意味着资源描述框架(RDF)。

RDF 是三种基本语义 Web 技术之一,另外两种是 SPARQL 和 OWL。RDF 是语义网的数据模型。

注意:哦,顺便说一句,几乎所有这些概念都伴随着万维网语义的新定义而来,但是我们将把它用于一般的知识图。

我不会在这里给出一个完整的框架描述,但是我会给你一个他们如何工作的例子。请记住,我这样做是因为这是我们开始构建本体、连接数据和知识图表的方式。

让我们来看一个例子,看看这个三元组是什么。这与塞巴斯蒂安的例子密切相关。

我们将以字符串“geoffrey hinton”开始。

Here we have a simple string that represents first edge, the thing I want to know more about

现在开始构建一个知识图谱,首先系统识别出这个字符串实际上指的是 Geoffrey Hinton 这个人。然后它会识别与那个人相关的实体。

Then we have some entities that are related to Geoffrey but we don’t know what they are yet.

顺便说一句,这是杰弗里·辛顿,如果你不认识他的话:

https://www.thestar.com/news/world/2015/04/17/how-a-toronto-professors-research-revolutionized-artificial-intelligence.html

然后系统将开始为这些关系命名:

Now we have named relationships where we know what type of connection we have for our main entity.

这个系统可以在一段时间内找到连接的连接,从而为我们的“搜索字符串”创建一个代表不同关系的巨大图表。

为了做到这一点,知识图使用三元组。像这样:

To have a triple we need a subject and object, and a predicate linking the two.

所以你可以看到我们有与对象 <研究者>相关的主语 < Geoffrey Hinton >由谓语 <构成>。这对我们人类来说可能听起来很容易,但需要一个非常全面的框架来用机器做到这一点。

这是知识图形成的方式,也是我们使用本体和语义链接数据的方式。

那么,我们需要什么来创建一个成功的知识图表呢?剑桥语义学的 Partha Sarathi 写了一篇关于这个的博客。你可以在这里阅读:

[## 创建成功的企业知识图

自从谷歌在 2012 年通过一个关于增强网络搜索的流行博客将知识图表主流化以来,企业已经…

blog.cambridgesemantics.com](https://blog.cambridgesemantics.com/creating-a-successful-enterprise-knowledge-graph?utm_campaign=data fabric drip campaign 2019&utm_source=hs_automation&utm_medium=email&utm_content=69101454&_hsenc=p2ANqtz-9BB7227QOhvpzRuILO6HfQFdI4PR1o-4SfjbxqhPYv3rlfuL27w3y9AKEfZ3cs3cbEFc4hmDnnCeu6heguyt8AwCwtcw&_hsmi=69101454)

总而言之,他说我们需要:

  • 设想 it 的人:你需要具备某种形式的业务关键主题专业知识和技术的人。
  • 数据多样性和可能的大量数据:企业知识图的价值和采用规模与它所包含的数据的多样性成正比。
  • 构建知识图的好产品 : 知识图需要治理良好、安全、易于连接到上游和下游系统、可大规模分析,并且通常是云友好的。因此,用于创建现代企业知识图的产品需要针对自动化进行优化,支持各种输入系统的连接器,向下游系统提供基于标准的数据输出,快速分析任何数量的数据,并使治理对用户友好。

您可以在此阅读更多信息:

[## 构建您的企业知识图

企业知识图正在帮助公司连接他们复杂的数据源。有了 Anzo,您可以设计、构建…

info.cambridgesemantics.com](https://info.cambridgesemantics.com/build-your-enterprise-knowledge-graph)

第三节。知识图表示例

谷歌:

谷歌基本上是一个巨大的知识(有更多的补充)图,他们创造了可能是最大的数据结构。谷歌拥有数十亿个事实,包括数百万个对象的信息和关系。并允许我们搜索他们的系统以发现其中的洞见。

在这里,您可以了解更多信息:

LinkedIn:

我最喜欢的社交网络 LinkedIn 有一个巨大的知识图谱库,它建立在 LinkedIn 上的“实体”之上,如成员、工作、头衔、技能、公司、地理位置、学校等。这些实体以及它们之间的关系构成了专业世界的本体。

洞察有助于领导者和销售人员做出商业决策,并提高 LinkedIn 会员的参与度:

https://engineering.linkedin.com/blog/2016/10/building-the-linkedin-knowledge-graph

记住,LinkedIn(和几乎所有的)知识图谱需要随着新成员注册、新职位发布、新公司、技能和头衔出现在成员档案和职位描述中等而扩展。

您可以在此阅读更多信息:

[## 构建 LinkedIn 知识图表

作者:齐河,陈必忠,迪帕克·阿加瓦尔

engineering.linkedin.com](https://engineering.linkedin.com/blog/2016/10/building-the-linkedin-knowledge-graph)

金融机构知识图谱:

Conceptual model to harmonize data from diverse sources and to create governed data sets for business use case consumption.

在 Marty Loughlin 的这篇文章中,他展示了一个 Anzo *台可以为银行做什么的例子,在这里你可以看到这项技术不仅与搜索引擎相关,还可以处理不同的数据。

在那里,他展示了知识图表如何帮助这类机构:

  • 用于分析和机器学习的替代数据
  • 利率互换风险分析
  • 贸易监督
  • 欺诈分析
  • 特征工程和选择
  • 数据迁移

还有更多。去看看。

结论

为了创建一个知识图,你需要语义和本体来找到一个有用的方法来链接你的数据,唯一地识别和连接数据和普通的业务术语,从而构建数据结构的底层结构。

当我们构建知识图时,我们需要使用本体和语义形成三元组来链接数据。此外,知识图表的制作基本上取决于三件事:设想它的人、数据多样性和构建它的好产品。

我们周围有许多我们甚至不知道的知识图表的例子。世界上大多数成功的公司都在实施和迁移他们的系统,以构建数据结构,当然还有其中的所有东西。

数据在艺术里!

原文:https://towardsdatascience.com/the-data-is-in-the-art-b97cf2ceda7c?source=collection_archive---------13-----------------------

利用颜色、形状和涂鸦来理解软数据和小数据

几周前,我让我的朋友和熟人填写了一份调查。我问的问题不一定会在谈话中出现,但却揭示了一个人性格的有趣细节。我喜欢做这个活动,因为在分析和可视化调查结果后,我觉得我比以前更了解每一个人。

我想集体看看这些结果,并对我们这些年轻的千禧一代的想法做一个快照。为了实现这一点,我决定以不同的方式来回答不同的问题,从而将本次调查的结果可视化。以下文章中的所有图片都可以在这里找到。

1.有哪些受欢迎的偏好?

我从一个简单的条形图开始,来理解不同的选择如何在整个组中进行比较。这是一种简单而有效的方法,可以直观地显示每个问题的热门选择。

2.个人喜好有哪些?

为了回答这个问题,我从 Giorgia Lupi 和她的工作室在创建数据画像方面的工作以及她诱导数据人文主义的哲学中获得了灵感。

假设有 38 个人,其中一些人有相同的名字或姓氏,需要一些排列来为每个人生成一个唯一的标识符。我选定了姓和名的组合。
1ˢᵗ姓氏的字母+ 2ⁿᵈ名字的字母+ 3ʳᵈ姓氏的字母+ 4ᵗʰ名字的字母
比如我的名字,Ruta Gokhale 就被编码为 GUKA。

通过这些数据画像,我试图突出个人偏好,同时也展示个人与整个群体相比如何。我意识到,将个性融入数据会使数据更丰富,更容易理解。

3.总体共识是什么?

我想创建一个高层次的响应图。为了以不同的方式呈现这些信息,我根据这些数据创作了一幅

我画了植物图案,并用丙烯颜料来编码这些丰富的信息。每个图案代表一个人,植物元素与他们的反应相对应。

这幅图并不是为了指出个别细节,而是为了理解信息的整体性质,从而理解我们的想法。这幅画,对我来说,是在说我们既相似又不同!创造这种数据艺术是一个同时具有逻辑性和创造性的过程。

所有这些图像都有高分辨率在这里。你从这些数据可视化中得出什么结论?你最喜欢哪一个,为什么?

一个著名的公*机器学习数据集(长版本)中的数据处理错误

原文:https://towardsdatascience.com/the-data-processing-error-in-one-of-the-most-prominent-fair-machine-learning-datasets-4fa205daa3c4?source=collection_archive---------37-----------------------

ProPublica 的 COMPAS 评分和累犯数据

在最*的一篇研究 论文 中,我重新审视了 ProPublica 收集的 COMPAS 累犯风险评分犯罪史数据,为其开创性的 2016 文章 论司法系统中的算法公正。

发现发现 ProPublica 在构建 key sub 时犯了一个数据处理错误——用于文章分析的数据集。我发现的数据错误会对这些关键子数据集的几个更基本的方面产生相当大的影响,例如样本大小、累犯数量和累犯率。我估计累犯率是偏向向上差不多 25%

尽管如此,有趣的是,我发现的非*凡数据处理错误对 ProPublica 使用相同子数据集报告的最引人注目的结果几乎没有影响。即非裔美国人相对于白种人的假阳性率和假阴性率。

C

基于其分析,专注于一组预测指标,ProPublica 得出结论,COMPAS 累犯风险评分偏向不利于非裔美国人。开发 COMPAS 风险评分系统的公司 Northpointe Inc. ,使用相同的数据,但侧重于一组不同的预测指标, 风险评分辩护为无偏

由于主题和结果的争议性,以及数据的公开可用性,ProPublica 调查性新闻的开创性工作在公*机器学习或算法公* T21 这一新兴领域引发了激烈的辩论和研究。

ProPublica 的 COMPAS 分数和累犯数据可能已经成为研究人员用来测试新的或现有的算法公*性定义和程序的最重要的基准数据。(参见 Corbett-Davies 和 Goel 2018 以及我在下面列出的其他参考资料;或者是 中的一篇 中的几篇博文)

当 ProPublica 的 COMPAS 数据被越来越多的研究使用时,研究人员通常会按原样采用 ProPublica 创建的数据集,并且似乎没有仔细检查过它们的数据处理问题。我没有测试一个新的公*定义或程序,而是仔细观察了 ProPublica 收集的真实数据集

特别是,我检查了——数据集 ProPublica 建立来研究一个两年内* 窗口中一个被告最初被捕后的再犯数据。这样做,我发现 ProPublica 在构造这些两年累犯数据集时,犯了一个实质性的数据处理错误。*

如下图所示, ProPublica 未能惯犯实施两年窗口样本截止(然而惯犯实施了这样的样本截止)

因此,ProPublica 错误地在两年的数据集中保留了累犯不成比例的份额。我估计这个两年一般累犯向上大约九个百分点,将其从 36% 推至 45%

因此,ProPublica 计算的两年再犯率比正确处理的同一数据中的真实的两年再犯率高约25%

在我的研究论文中,我还探讨了这种数据处理错误如何影响其他统计数据。具体来说,我看了 ProPublica 的混淆矩阵对高/低 COMPAS 分数与两年累犯状态的分析。我发现有偏差的两年期数据集对阳性预测值(或 精度 )和阴性预测值也有实质性的影响。**

另一方面,有偏差的两年期数据集对混淆矩阵分析中的其他几个关键统计数据的影响相对较小,这些统计数据对累犯与非累犯相对比例的变化不太敏感。特别是准确率假阳性率假阴性率**

ProPublica 的关键发现是 的假阳性率高于假阴性率低于的非裔美国人的白种人*高,因此,当一个人正确处理数据时不会改变**。*******

据我所知,这是第一次强调上述数据处理错误。在这篇博文中,我总结了我的研究* 论文 。***

(如果你想阅读更短的摘要,请参见我这篇博文的* 版本 。我还用我写的 R 程序创建了一个 GitHub 资源库 来分析数据)***

数据

2016 年,ProPublica 的一个记者团队获得了一个超过一万一千名* 审前被告的数据集,这些被告来自佛罗里达州布劳沃德县已被逮捕,并在 2013 年1 月 1 日至 2014 年12 月 31 日期间用 COMPAS 筛选系统对进行了评估。(COMPAS 筛选调查由审前服务在被告被捕后与他或她合作完成)***

ProPublica 随后收集了截至 2016 年 3 月底未来*逮捕的数据,以研究 COMPAS 风险评分对这些被告累犯的预测程度(并于 2016 年 5 月发表了其文章)。( ProPublica 的 数据分析在这里 描述 )*****

ProPublica 的调查确实具有突破性。它使用公共记录请求来获取一组被告的 COMPAS 分数、放映日期和个人信息,以及他们的监狱和监狱信息。然后,它匹配并合并这些不同的数据源。

截至 2016 年 3 月底,ProPublica 从布劳沃德县书记官办公室网站上的公共犯罪记录中获得了该审前被告样本在 COMPAS 筛选日期后的犯罪历史信息。(它还从布劳沃德县警长办公室和佛罗里达州惩教署网站获得了公共监狱和监禁记录)

ProPublica 为其研究收集了数据,并创建了一个数据库。从那个数据库中,它构建了几个-数据集,合并并计算各种特征。例如,在最初犯罪两年内因新犯罪再次被捕的指示变量。然后,ProPublica 将这些子数据集导出到。csv 文件。这些文件是其他研究人员最常用的文件。(再次, ProPublica 在 Web 上的数据可用* 这里 )***

我主要用的是中的两个。ProPublica 创建的 csv 文件,即 compas-scores.csvcompas-scores-two-years . CSV。第一个*CSV 文件包含 ProPublica 从布劳沃德县治安官办公室获得的审前*被告的完整数据集。这份文件包含了超过 11,000 名审前被告,然后 ProPublica 将他们减少到 10,331 名被告,部分原因是数据质量问题,正如我在我的研究论文中所描述的。(我仍然将这个稍微精简的数据集称为完整数据集)****

上面列出的第二个 csv 文件是 ProPublica 专门为了研究两年一般累犯而创建的文件。术语一般累犯是用来区别于暴力累犯的更小子集。一般累犯包括暴力犯罪和非暴力犯罪。在这篇文章中,我重点关注两年期的普通累犯数据集,但由 ProPublica 创建的两年期暴力累犯数据集也存在我在这里发现的相同数据处理问题。**

理论上,这个两年累犯文件包含了观察至少两年的人的子集,ProPublica 将这个文件中两年内累犯的人标记为打开了two _ year _ recid指示器标志。ProPublica 两年普通累犯 csv 文件包含7214 人。****

COMPAS 屏幕日期分布

完整数据

我从查看 10,331 名被告的完整数据集开始。我做了一个直方图的对比筛选日期(通常在逮捕当天或一天后执行)的案件或逮捕数量。为了清楚地看到数据处理错误,我做了分离比较累犯和非累犯的屏幕日期直方图。**

对于这些直方图和后续直方图,我使用 7 天(即一周)数据。供(后)参考,我在2014 年 4 月 1 日*画一条红色竖线,这是在之前到 ProPublica 犯罪记录数据收集窗口结束(2016 年 3 月下旬)的两年标记。***

首先,对于整个数据集,除了与无关的之外,非常明显的是,在 2013 年年中的 COMPAS 筛选日期中去掉了(对于惯犯和非惯犯都一样),下图显示合理*。*****

(Source: Barenstein, 2019; Figure 3)

不清楚为什么 2013 年年中 COMPAS 屏幕或案例中的会出现下降。就此而言,这似乎是 ProPublica 从布劳沃德县收到的原始数据集的问题,因为它在 ProPublica 的 compas-scores-raw.csv 数据集中也很明显。因此,这并不而不是似乎是 ProPublica 的数据处理错误,并且我在这篇文章或我的论文中并没有解决这个问题**

两年数据(处理错误)

为了构建两年的累犯数据集,ProPublica 可能希望在 2016 年 3 月下旬收集犯罪记录数据的时间窗结束时,对人们进行至少两年的观察。因此,我们不应该期望在 2014 年 4 月 1 日之后的两年数据集中看到任何被告。(也就是说,在 ProPublica 收集的犯罪记录数据结束日期之前两年内,人们对的观察少于)。******

然而,如下图所示,在两年的数据集中,有许多人(特别是惯犯)确实在这个潜在截止日期之后有一个 COMPAS 筛查(或逮捕)日期。他们的 COMPAS 筛选日期一直到 2014 年 12 月 31 日,这是 ProPublica 数据库中原始逮捕和 COMPAS 筛选的最后可能日期。**

原因是为了创建两年的数据集,ProPublica 使用了以下逻辑:**

  • 如果在 2016 年 3 月下旬 ProPublica 收集数据时,在他们的 COMPAS 筛选日期之后被观察了两年或两年以上(在监狱和监狱之外】),请将他们保留在数据集中。**
  • 如果再犯,还要留人观察少于两年(监狱外和监狱内)。****

下面是 ProPublica 使用的 Python 代码(730 天的生存期*用于两年标记)😗****

(Source: ProPublica’s COMPAS analysis GitHub repository, 2016)

该代码的第二行保证对于非累犯的来说,他们的 COMPAS 筛选日期在 2014 年 4 月 1 日之前,因为他们需要在数据中被观察(监狱和监狱外)超过两年(或 730 天)。****

(这部分逻辑似乎成立。扣除引发对比屏幕的原始犯罪的监狱和服刑时间似乎 合理 因为一个人在服刑期间再犯的概率可能大不相同

然而,对于惯犯来说,上面代码的第一行表明这个要求是而不是到位的。据推测,ProPublica 意识到没有必要在监狱和监狱外观察累犯整整两年。鉴于他们在最初的 COMPAS 放映日期后再犯,可能会被投入监狱相当长的一段时间。人们仍然希望将这些人纳入数据中。

虽然实施要求惯犯必须在监狱外观察两年 是合乎逻辑的而不是,但仍应在 2014 年 4 月 1 日* 或之前为他们申请 COMPAS 筛选日期样本截止。但是 ProPublica 没能 这样做。*****

不清楚 ProPublica 是否打算以这种方式处理数据,在这种情况下,这是一个概念上的错误,还是它不打算使用这种错误的逻辑,在这种情况下,这是一个数据处理错误。无论哪种情况,都会导致相同的偏倚样本两年期子数据集****

在下图中,基于现在的两年一般累犯数据集,我再次在 2014 年4 月 1 日用红色竖线表示潜在的两年窗口对比屏幕截止日期。****

(Source: Barenstein, 2019; Figure 4)

这是我研究论文中的关键人物。它显示了在两年的数据集中,ProPublica 处理惯犯非惯犯的方式存在明显差异。在右侧-* 侧图中,对于惯犯,我们看到 ProPublica 正确地删除了 COMPAS 筛选日期在2014 年 4 月 1 日之后的被告。*****

然而,在左侧侧图中,对于累犯,我们看到 ProPublica 没有而不是放弃 2014 年4 月 1 日之后的 COMPAS 放映日期的被告。事实上,左边的这张图几乎是前面显示的完整数据集中类似图形的复制品。两年数据集与完整数据集的惯犯数量基本相同。****

ProPublica 未能对累犯实施两年的窗口样本截止

为了计算 ProPublica 错误地保留在两年数据集中的额外累犯数,我通过 2014 年 4 月 1 日前后的COMPAS 屏幕日期指示器标记对两年累犯*变量进行交叉制表,并计算每个单元格中的被告人数:*******

(Source: Barenstein, 2019; Table 5)

由于 ProPublica 保留了 COMPAS 筛选日期在2014 年 4 月 1 日之后的累犯(但没有保留非累犯),因此 COMPAS 筛选日期在此日期之后的两年累犯数据集中的所有人确实是累犯。ProPublica 两年数据中错误保存的 998 名累犯占该数据集中两年内累犯总数3251人的 30.7% 。或者,我们可以说,ProPublica 保留了 998/2253、44.3%、超过应有的两年累犯。**

对关键统计数据的影响

两年累犯数据集构建中的这一基本问题对一些统计数据的影响比对其他数据的影响更大。正如我们刚刚看到的,它对累犯的总数有很大的影响,因此,对累犯的比例也有影响。特别是,它人为地膨胀了累犯率。ProPublica 两年期一般累犯数据集中的两年期累犯率如下:**

(Source: Barenstein, 2019; Table 4)

所以 ProPublica 两年数据集中的两年再犯率是 45.1% 。然而,如果我们再次通过 2014 年 4 月 1 日之前与之后的 COMPAS 屏幕日期指示器标志来查看两年累犯变量,正如我们在上面的第一个表中所做的那样,但现在以百分比的形式,我们有了下表:**

(Source: Barenstein, 2019; Table 6)

我们看到,如果对所有被告(包括累犯)应用2014 年 4 月 1 日的简单对比筛选日期截止规则,两年累犯率将为 36.2% 。ProPublica 计算的 45.1% 的比率几乎比高出9 个百分点,因此高出 24%**

衡量 ProPublica 的数据处理错误对累犯率的影响的另一种方法是进行生存分析。在我的论文中,我做了这样的分析,它证实了刚刚提出的结果。**

在我的研究论文中,我还探讨了这种数据处理错误如何影响其他统计数据。具体我看 ProPublica 的混淆矩阵(或真值表)对 COMPAS 评分 vs 两年累犯状态的分析。为了进行这样的分析,ProPublica 将 COMPAS 分数转化为一个二元分类器,即低分数和高分数。(在我的论文中,我也是这样做的)**

除了累犯患病率(即累犯率),ProPublica 使用的有偏两年数据集还影响正预测值 ( PPV )(通常称为)负预测值*(NPV*)检出率。如果 ProPublica正确地处理了两年的数据,并因此降低了累犯的发生率,毫不奇怪,PPV(和破案率)会更低,NPV 会更高。****

另一方面,有偏差的两年期数据集对其他几个关键统计数据的影响相对较小,这些统计数据对累犯与非累犯相对比例的变化不太敏感。特别是准确率假阳性率 ( FPR )、假阴性率 ( FNR )。(或一减去这些比率,即特异性敏感性)****

根据定义, FPR 与数据中的实际阳性(或累犯)数无关。它是预测呈阳性(或复发)但实际呈阳性的病例数与呈阳性的所有病例数之比。所以 FPR 只根据实际负数计算(即只做不做 recidivate 的人)。因此,当人们正确处理数据时,FPR 仍然与 ProPublica 两年数据中的 FPR 完全相同。****

同样的, FNR 仅仅是基于实际阳性或者确实复发的人。FNR 是预测不会复发但实际复发的人与所有复发的人的比率。当一个人正确处理数据时,复发的总人数是相当不同的。然而,只要在两年数据中错误保存的 998 名 ProPublica 额外累犯的 COMPAS 分数与正确保存此类数据的 2,253 名累犯的 COMPAS 分数相似,这将对 FNR 几乎没有影响。在我的研究论文中,我证明了这是事实。**

给定相同的 FPR 和非常相似的 FNR,在我的论文中,我还表明对受试者操作特性 (ROC) 曲线和该曲线下的面积几乎没有影响。****

在我的研究论文中,我还针对非裔美国人白种人分别重复了混淆矩阵分析。这是 ProPublica 在 2016 年发表文章时获得最多关注的关键分析,显示与白种人相比,非裔美国人假阳性率【FPR】假阴性(FNR)较低。******

正如预期的那样,类似于刚才讨论的合并种族结果,FPR 是相同的,并且当正确处理数据时,FNR 非常相似,因此非裔美国人仍然比白种人具有高得多的 FPR 和低得多的 FNR。因此,当正确处理数据时,ProPublica 的这一关键发现不会改变。****

虽然,就像合并的种族数据结果一样,当一个正确地处理两年的数据时,每个种族组的其他统计数据确实出现了实质性的变化。特别是,每个种族组的累犯率、PPV 和 NPV都有相当大的变化**

U 最后,我在这里认定的数据处理错误的实际重要性可能是有限的。例如,我并不是说 Northpointe 在开发 COMPAS 累犯风险评分时犯了一个错误(尽管用于此的数据和实际模型是专有的,并不公开)。**

然而,领域专业知识并不总是转化为正确处理的数据。例如,Northpointe 使用相同的 ProPublica COMPAS 数据集对 ProPublica 的分析进行的批评未能识别出 ProPublica 的数据处理错误。**

其他研究过这些数据的研究人员也未能发现 ProPublica 两年数据集的处理错误。结果,正如我在我的研究论文中详述的那样,他们得出的两年再犯率的数字是向上偏的**

尽管如此,他们分析的主旨仍然有效。大多数公*的机器学习研究似乎针对 FPR、FNR 或准确度,如上所述,这些不受数据处理误差的而非影响。**

最后,许多潜在的测量问题可能会影响 ProPublica COMPAS 数据中估计的两年累犯率(正如我在论文中提到的)。其中一些因素可能会对估计值产生向下的压力,也许会在一定程度上抵消我在这里提到的向上的偏差。

然而,这最后一点并没有使我所指出的数据处理问题的重点和我所呼吁的随后的数据修正无效。我关注的是内部数据处理的有效性。我并不是说经过这次修正后,数据将不会有任何遗留问题,也不一定会有外部有效性,这超出了我的分析范围。**

无论如何,似乎没有人像我上面所做的那样,预先设想过两年累犯数据集的 COMPAS 筛选日期。(如果他们有,也没有被广泛传播)因此,我在这里确定的数据处理错误已经持续并传播了三年多(明显的例外是 Rudin et al. 2018 )。

我的帖子和论文试图将焦点放回数据处理阶段,并强调其中的潜在陷阱。

脚注

  1. 最*,研究人员指出了分类奇偶校验的算法公*性目标的一些潜在缺陷,该目标试图在人口亚组之间等同分类误差的度量,如 FPR 或 FNR(Corbett-Davies 和 Goel 2018 )。其他工作表明,几种流行的算法公*性目标是不相容的,不可能同时实现(例如 Chouldechova 2016Kleinberg et al. 2018 )。****
  2. Rudin et al. 2018 从原始 ProPublica 数据库重建 ProPublica COMPAS 数据集(并使此可用)。通过这样做,他们似乎避免了犯 ProPublica 在两年累犯子数据集方面犯的同样的数据处理错误。然而,他们没有明确指出,或以任何方式强调,ProPublica 的两年数据处理错误。他们的关注点完全不同,因为他们试图对 T21 的 COMPAS 累犯风险评分进行逆向工程,以了解 Northpointe 是如何建立这些评分的。**

关于我的论文的一个更短的摘要,请参见我这篇博文的版本。我论文的一个长篇版本是 arXiv 上的 可用 我还用我写的 R 程序创建了一个 GitHub 资源库 来做我的分析。

我是美国联邦贸易委员会的经济学家。这项研究与我在联邦贸易委员会的工作无关。本文所表达的观点仅代表作者个人观点。他们不一定代表美国联邦贸易委员会或其任何委员的意见。

一个显著的公*机器学习数据集(短版本)中的数据处理错误

原文:https://towardsdatascience.com/the-data-processing-error-in-the-most-prominent-fair-machine-learning-dataset-short-version-d27d8d390fea?source=collection_archive---------29-----------------------

ProPublica 的 COMPAS 评分和累犯数据

在最*的一次研究 论文 和博客 帖子 中,我重新审视了 COMPAS 累犯风险评分犯罪史数据由 ProPublica 为其开创性的 2016 文章 关于算法公*性

发现 ProPublica 在构建键* -用于文章分析的数据集时,出现了数据处理错误。我发现的数据错误会对这些关键子数据集的几个更基本的方面产生相当大的影响,例如样本大小、累犯数量和累犯率。我估计累犯率是向上偏*差不多 25% 。**

尽管如此,有趣的是,我发现的非*凡数据处理错误对 ProPublica 使用相同子数据集报告的最引人注目的结果几乎没有影响。即非裔美国人相对于白种人的假阳性率和假阴性率。

C

基于其分析,专注于一组预测指标,ProPublica 得出结论,COMPAS 累犯风险评分偏向不利于非裔美国人。开发 COMPAS 风险评分系统的公司 Northpointe Inc. ,使用相同的数据,但侧重于一组不同的预测指标, 风险评分辩护为无偏

由于主题和结果的争议性,以及数据的公开可用性,ProPublica 调查性新闻的开创性工作在公*机器学习或算法公* T21 这一新兴领域引发了激烈的辩论和研究。

ProPublica 的 COMPAS 分数和累犯数据可能已经成为研究人员用来测试新的或现有的算法公*性定义和程序的最重要的基准数据。(参见 Corbett-Davies 和 Goel 2018 以及我在下面列出的其他参考资料;或者是 中的一篇 中的几篇博文)

当 ProPublica 的 COMPAS 数据被越来越多的研究使用时,研究人员通常会按原样采用 ProPublica 创建的数据集,并且似乎没有仔细检查过它们的数据处理问题。我没有测试一个新的公*定义或程序,而是仔细观察了 ProPublica 收集的真实数据集

特别是,我检查了——数据集 ProPublica 建立来研究一个两年内* 窗口中一个被告最初被捕后的再犯数据。这样做,我发现 ProPublica 在构造这些两年累犯数据集时,犯了一个实质性的数据处理错误。*

如下图所示, ProPublica 未能惯犯实施两年窗口样本截止(然而惯犯实施了这样的样本截止)

因此,ProPublica 错误地在两年的数据集中保留了累犯不成比例的份额。我估计这个两年一般累犯向上大约九个百分点,将其从 36% 推至 45%

因此,ProPublica 计算的两年再犯率比正确处理的同一数据中的真实的两年再犯率高约25%

在我的研究论文中,我还探讨了这种数据处理错误如何影响其他统计数据。具体来说,我看了 ProPublica 的混淆矩阵对高/低 COMPAS 分数与两年累犯状态的分析。我发现有偏差的两年期数据集对阳性预测值(或 精度 )和阴性预测值也有实质性的影响。**

另一方面,有偏差的两年期数据集对混淆矩阵分析中的其他几个关键统计数据的影响相对较小,这些统计数据对累犯与非累犯相对比例的变化不太敏感。特别是准确率假阳性率假阴性率**

ProPublica 的关键发现是 的假阳性率高于假阴性率低于的非裔美国人的白种人*高,因此,当一个人正确处理数据时不会改变**。*******

据我所知,这是第一次强调上述数据处理错误。在这篇博文中,我总结了我的研究* 论文 。***

(如果你想了解更多信息,但不是全文的研究论文,请看我以前的* 版本 的这篇博文。我还用我写的 R 程序创建了一个 GitHub 资源库 来分析数据)***

在 2016 年的 中,ProPublica 的一组记者获得了一个数据集,该数据集包含超过一万一千名 *来自佛罗里达州布劳沃德县的审前*被告,这些被告在 2013 年1 月 1 日和 2014 年12 月 31 日之间被逮捕并用 COMPAS 筛选系统评估****

ProPublica 随后收集了截至 2016 年 3 月底未来*逮捕数据,以研究 COMPAS 风险评分对这些被告累犯的预测程度(并于 2016 年 5 月发表了文章)。( ProPublica 的 数据分析在这里 描述 )*****

从这些数据中,ProPublica 创建了两个数据集,专门用于研究在最初犯罪和对比筛选日期的两年内的累犯。我特别检查了为研究一般累犯的可能性而构建的两年累犯子数据集 ProPublica。(一般累犯包括暴力和非暴力犯罪)

为了构建两年的累犯数据集,ProPublica 可能希望在 2016 年 3 月下旬收集犯罪记录数据的时间窗结束时,让人们观察至少两年。

因此,我们不应该期望在 2014 年 4 月 1 日之后的两年数据集中看到任何被告。(也就是说,在 ProPublica 收集的犯罪记录数据结束日期之前的两年内,人们观察到的少于*)。*****

为了验证这一点,我通过分析被告在 COMPAS 筛选日期分布来可视化两年普通累犯数据集(筛选通常在逮捕当天或一天后进行)。这样做的时候,我发现 ProPublica 在创建这个数据集的时候犯了一个实质性的数据处理错误。**

ProPublica 未能对累犯实施为期两年的窗口样本截断(但它确实对非累犯实施了这样的样本截断)

(在之前的一篇 版本 的这篇博文中,我解释了可能导致 ProPublica 这样误入歧途的推理)

我在下图中展示了这个数据处理错误(我的研究论文中的关键图)。在这个图中,我做了一个直方图,显示了按 COMPAS 筛选日期(通常在逮捕当天或之后一天执行)划分的案件或逮捕数量。为了清楚地看到数据处理错误,我做了分离比较累犯和非累犯的屏幕日期直方图。**

对于这些直方图,我使用 7 天(即一周)数据。作为参考,我在2014 年 4 月 1 日*画一条红色竖线,这是 ProPublica 的犯罪记录数据收集窗口(2016 年 3 月下旬)结束前的两年标记***

Source: Barenstein, 2019. (Figure 4)

【注:该图还显示了一个,但非常明显, 在 2013 年年中的 COMPAS 放映(或案件)中 下降(对累犯和非累犯一视同仁)。这是一个 单独的问题 ,但是,它似乎存在于 ProPublica 从佛罗里达州布劳沃德县收到的 原始 数据集。所以这个 不是 看起来是 ProPublica 的数据处理错误,而 我不 解决这个问题】****

T 上面描述的关于累犯的数据处理错误导致两年数据集中虚高的累犯率。这是由于 2014 年 4 月 1 日之后的所有额外累犯。ProPublica 应该从两年的数据集中剔除这些额外的累犯,但它没有这么做。(在我的长文博文和论文中,我计算出这些额外的累犯构成了 ProPublica 两年普通累犯数据集中总累犯的大约 30 %)****

于是,在 ProPublica 创建的两年普通累犯数据集里,两年累犯率45% 。但是,当我去掉多余的累犯时,我反而估计两年累犯率只有36% 。因此,在 ProPublica 的数据集中,两年的累犯率是向上偏移大约九个百分点或者 25% 。****

在我的研究论文中,我还探讨了这种数据处理错误如何影响其他统计数据。具体我看 ProPublica 的混淆矩阵(或真值表)对 COMPAS 评分 vs 两年累犯状态的分析。为了进行这样的分析,ProPublica 将 COMPAS 分数转化为一个二元分类器,即低分数和高分数。(在我的论文中,我也是这样做的)**

除了累犯患病率(即累犯率),ProPublica 使用的偏倚两年期数据集也影响阳性预测值( PPV )(或 精度 )和阴性预测值( NPV )。如果 ProPublica正确地处理了两年的数据,结果是累犯的发生率更低,毫不奇怪,PPV 会更低,NPV 会更高。****

另一方面,有偏差的两年期数据集对混淆矩阵分析中的其他几个关键统计数据的影响相对较小,这些统计数据对累犯与非累犯相对比例的变化不太敏感。特别是准确率假阳性率 ( FPR )、假阴性率 ( FNR )。或者一个减去这些比率,即特异性敏感性。(我在这篇博文的 版本 和我的研究论文中解释了为什么会这样)****

ProPublica 发现非裔美国人白种人假阳性率高假阳性率 假阴性率低,这是最受关注的关键发现。因此,当正确处理数据不会改变。******

U 最后,我这里认定的数据处理错误的实际重要性可能是有限的。例如,我并不是说 Northpointe 在开发 COMPAS 累犯风险评分时犯了一个错误(尽管用于此的数据和实际模型是专有的,并不公开)。**

此外,大多数公*的机器学习研究似乎以 FPR、FNR 或准确性为目标,这些不受数据处理误差的影响。**

最后,请注意,许多潜在的测量问题可能会影响 ProPublica COMPAS 数据中估计的两年累犯率(正如我在论文中提到的)。其中一些可能会对估计值施加向下的压力,也许会在某种程度上抵消我在这里提到的向上的偏差。

然而,这最后一点并没有使我所指出的数据处理问题的重点和我所呼吁的随后的数据修正无效。我的重点是内部数据处理的有效性。我并不是说经过这种修正后,数据将不会有任何遗留问题,也不一定会有外部有效性,这超出了我的分析范围。****

在任何情况下,似乎没有人像我上面所做的那样,预先设想过两年累犯数据集的 COMPAS 筛选日期。(如果他们有,也没有被广泛传播)因此,我在这里指出的数据处理错误一般会持续和传播三年以上。**

我的博客文章和研究论文试图将焦点放回到数据处理阶段,并强调其中的潜在隐患。**

脚注

  1. 最*,研究人员指出了分类奇偶校验的算法公*性目标的一些潜在缺陷,该目标试图在人口亚组之间使分类误差的度量相等,如 FPR 或 FNR(Corbett-Davies 和 Goel 2018 )。其他工作表明,几种流行的算法公*目标是不相容的,不可能同时实现(例如 Chouldechova 2016Kleinberg 等人 2018 )。****
  2. 在我的博客文章和论文中,我研究了 ProPublica 两年的一般累犯数据集。当我关注这个数据集时,ProPublica 也T21创建的两年期暴力累犯数据集也遭遇了我在这里指出的同样的数据处理问题。****

这篇博文是我上一篇走向数据科学 帖子版。我的一篇长篇版本的论文是 可在 arXiv 。(我还用我写的 R 程序创建了一个 GitHub 资源库 )**

我是美国联邦贸易委员会的经济学家。这项研究与我在联邦贸易委员会的工作无关。本文仅代表作者个人观点。他们不一定代表美国联邦贸易委员会或其任何专员的意见。****

数据产品设计思维过程

原文:https://towardsdatascience.com/the-data-product-design-thinking-process-6b3eba561b2b?source=collection_archive---------9-----------------------

如何用设计思维解决棘手的数据可视化问题?

好奇心是我们所有人的主要驱动力。我们不断地对过程、原因和结果进行研究。

我们希望了解公司、运营流程和经济关系是如何运作的,它们由哪些步骤和部分组成,事情为什么会发生,以及一切是如何相互关联的。

一旦我们分析了一切,我们就可以利用这些知识以积极的方式对世界施加影响。

在寻找相关性的过程中,数据是一个越来越重要的因素。正确的数据(智能数据而不是大数据)让黑暗变得更加明亮。没有数据,对我们周围的世界进行准确、系统的分析和精确的设计就不再可能。仅靠直觉和直觉是不够的。

而是原始版本的数据(二进制、表、日志文件、数据库等。)实际上不能被人类阅读。如果我们想要更快,我们需要数据可视化,使正确的数据选择在适当的聚合级别上容易且精确地可见。这项任务由所谓的数据产品来完成。它们以一种合适的形式将我们的世界形象化,并使我们能够分析和寻找原因和结果。

谷歌地图、谷歌分析或天气、健康或时间表的移动应用等数据产品为我们提供了非常高水*的信息。我们所看到的吸引人的、清晰的展示是对数据、联系和结构的高度复杂的浓缩和复杂的视觉总结。

什么是数据产品?

数据产品是使用和可视化数据来支持决策和帮助控制复杂系统的数字产品。

数据产品是在算法的帮助下,对系统的统计的,主要是复杂的数据分析的可视化处理结果。系统可以是流程、设施、公司、城市、国家、基础设施、太阳系、有机体、生态系统、气候条件。事实上,我们的世界由无数的系统组成。

数据产品描述了该系统的历史、当前或未来的条件和发展。用户使用数据产品快速、直观地描述系统的复杂状况和发展,并从中获取信息和自己的决策。

使用数据进行设计

机器(数据产品)与人之间的视觉界面非常重要。

但是你到底是如何开发它们的呢?我们如何确保他们有效地完成任务?特别是在专业环境中,不同的用户对新的数据产品有不同的要求。你会很快发现自己处于一个必须解决棘手问题(邪恶问题)的境地。

棘手的问题有以下几个特点:
有许多相互依赖的影响变量
没有对错的解决方案,只有好的和坏的
你不能只用一个公式和逻辑来解决它们
你只能凭直觉解决,而不是逻辑上的
有社会、心理和文化方面的考虑。

What are wicked problems?

如何处理棘手的问题

数据产品面临的挑战是…

内容方面:
底层系统复杂度高

数据方面:
来自不同数据源的数据必须相互连接
数据质量通常不够
数据准备(ETL)复杂且耗时
必须正确集成数据科学技术

可视化方面:
经典的可视化方法(条形图、饼图、点状图)已经不够用了
使用 Qlik、Tableau 和 PowerBI 等常用工具进行可视化的可能性受到了限制

用户方面:
用户有非常不同的知识
他们必须做非常不同的工作(要做的工作)
解码数据产品中包含的信息并将其分配给你自己的知识是一项挑战
用户的工作环境(医疗技术、系统控制、车辆控制)非常复杂

关于所有这些方面的更多细节也可以在我们关于数据设计指南的文章中找到。此处

How to deal with wicked problems ?

什么是设计思维?

设计思维为解决棘手的问题提供了一种非常有效的方法。在这里,一个跨学科的团队从用户的角度出发,以单独的、系统的步骤来处理一个潜在的解决方案。然后由用户测试其适用性。

设计思维已经成为一种众所周知的、久经考验的发展创新的方法。许多大型技术和咨询公司都使用它。

互联网上充满了对设计思维的实用和描述性的解释,所以这里只是对设计思维过程中的四个基本阶段的简要概述。

发现——发现所考虑问题的环境和背景
定义——制定用户的要求和需求
开发——对解决方案提出初步想法
交付——创建解决方案并获得用户反馈。

The Data Design Thinking Process

数据产品的设计思维

我们想知道这种方法是否也可以用于数据产品。设计思维完全是关于用户和他们的需求。现在又增加了一个非常复杂的维度:数据或数据科学。然后,我们专门针对数据产品采用了经典的设计思维方法,并且自 2018 年初以来一直非常成功地与之合作。

在商业应用的数据产品开发中使用设计思维的挑战在于以下几点:
·大数据和数据科学应用的数据产品开发往往会有新的突破。在这一点上,目标用途(要做的工作)在开始时没有明确定义。使用环境和用户需求必须与数据产品同等开发。有时,它们只是在第一次可视化之前不可见的系统之后才变得明显。
用户的数据能力未知或太低,无法理解信息
设计者需要对数据结构、原始数据和数据管道有深入的了解。创造性开发的东西也必须在技术上是可能的。纯粹的 UX 观点是不够的。
许多数据产品都基于数据科学算法。数据以及统计学和数据科学的潜力是创造过程的原材料。数据产品只有在充分利用这种数据潜力时才会变得高效。在这里,如果不了解数据素养和数据科学,设计师也无法走得更远。
专业环境中的数据产品面向专业领域的用户和专家。因此,数据产品深度介入了所谓的业务领域——更高层次的复杂性。

作者:Evelyn münster/Christoph Nieberding

关于我们

Evelyn Münster 和 Christoph Nieberding 是 Designation 的管理合伙人,Designation 是一家位于慕尼黑的数据产品和商业设计设计公司。 www.designation.eu

电子竞技中的数据科学热潮

原文:https://towardsdatascience.com/the-data-science-boom-in-esports-8cf9a59fd573?source=collection_archive---------20-----------------------

想找一份数据科学的工作?电子竞技可能是值得一看的地方!

仅在过去的几年里,电子竞技已经成为世界上最受欢迎的娱乐形式之一,与传统体育赛事如 NFL 超级碗和 MLB 世界职业棒球大赛相媲美。日益增长的电子竞技场景的核心是对数据科学和数据科学家的需求和依赖。虽然看起来可能不像,但电子竞技已经成为数据科学家和数据工程师的就业热点。如果你是一名数据科学家或正在探索新的工作机会,电子竞技可能是最好的选择。

十亿美元的产业

在今年早些时候由商业内幕发布的一篇文章中,电子竞技行业预计将在 2019 年历史上首次带来超过 10 亿美元的收入。这来自于分析公司 Newzoo 的一份报告,该报告预计电子竞技行业将带来约 11 亿美元的收入,较上年增长 26.7%。这种增长的一个重要因素是电子竞技领域在过去十年中投资、广告和媒体报道的增长。这个数字累积了各种游戏社区带来的收入,其中一些你可能知道像英雄联盟,守望先锋,堡垒之夜和超级粉碎兄弟终极版。Newzoo 估计,到 2022 年,电子竞技市场将接*约 18 亿美元。随着增长速度的加快,到 2022 年,这一数字可能会超过 30 亿美元。

Source: Newzoo

仅根据这些数字,它不仅证实了这个市场是有钱可赚的,还描绘了这些市场对数据科学家日益增长的需求。

电子竞技如何与世界上最大的体育赛事竞争

Source: The Rift Herald

除了资金,有助于电子竞技增长的因素之一是电子竞技比赛观众的持续增长。每年最受欢迎的体育赛事之一是 NFL 超级碗。超级碗和他们令人难忘的电视广告一起,经常被视为美国体育赛事中的圣杯。每年,这一活动吸引了大约 1 亿独立观众。根据体育媒体观察,洛杉矶公羊队和新英格兰爱国者队之间的超级碗比赛仅电视观众就有 9819 万人,另外还有 260 万人来自流媒体。与前几年相比,2018 年超级碗约有 1.03 亿观众,2017 年有 1.11 亿观众。

当将这些数字与电子竞技锦标赛相比时,它们相差不远。全球最大的电子竞技之一是英雄联盟,这是一个由 Riot Games 创建的多人在线战斗竞技场游戏。2018 年,传奇世界锦标赛联盟(League of Legend World Championship),或称“世界”,在最后一系列比赛(3 场比赛)中,观众人数超过 9960 万。高收视率可以归功于《传奇联盟》在海外的成功,因为它已经成为欧盟和亚洲最受欢迎的游戏之一。

大数据及其对电子竞技的影响

虽然数据科学和电子竞技联系在一起看起来很奇怪,但这种联系对游戏生态系统非常重要。与游戏分析师和体育类似,数据对于理解如何优化游戏性至关重要。就像在体育运动中一样,赢得比赛依赖于理解什么策略有效,什么策略无效。通过使用大量数据样本,数据分析师能够发现不同的策略、技术和游戏,优化结果以确保胜利。幸运的是,有了像《英雄联盟》这样的游戏,比赛可以被重新观看,并被放入数据库以备将来进一步检查。在每场比赛之后,数据被收集和分类,然后可以一步一步地分析和分解。

Source: Riot Games, League of Legends

像英雄联盟这样的游戏,都是依赖游戏数据的。玩家可以在每场比赛后通过仪表盘看到他们的影响力。它不仅显示了过去的比赛,而且提供了详细的图形处理的损害,黄金赚取,甚至顶部播放或游戏的杀戮条纹。除了游戏开发商提供的数据,最受欢迎的英雄联盟数据分析网站之一是一个名为 Mobalytics 的网站。

Source: Mobalytics

Mobalytics 是最大的数据库之一,专门用于英雄联盟和其他由 Riot Games 开发的游戏,如团队战斗战术。这个数据库包含不同的初学者入门指南、顶级团队构成、胜率最高的角色等等。其他流行的游戏网站,如 OP.GG,Overbuff.com,甚至更多,也为世界各地的玩家提供玩家统计数据。这些网站已经成为优化游戏性不可或缺的一部分。虽然它们很重要,但像 Mobalytics 这样的工具只是电子竞技中数据科学工作所需的一小部分。

电子竞技组织和数据科学职位

通过简单的谷歌搜索,你可以找到无数的电子竞技公司、组织和俱乐部的职位。这些职位的头衔包括数据工程师、数据科学家甚至游戏分析,电子竞技正成为数据科学的热点。

Source: Google

在对 Riot Games 提供的高级分析师职位的描述中,他们表示,

作为电子竞技团队的高级分析师,你将加入 Insights 团队,该团队由研究人员、分析师、数据科学家和战略家组成,他们执行分析,帮助暴徒做出艰难的决定。你将成为跨学科团队的一员,与其他学科的暴徒(设计师、艺术家、制片人等)一起工作。)进行研究和分析,了解我们产品的特性、系统和体验。你在数据分析和战略决策方面的背景将确保你是玩家的支持者,并能就他们的需求和行为提供战略指导。

像 Riot Games 和其他电子竞技组织这样的游戏公司需要并正在寻找有才华的数据科学家来帮助优化他们的游戏。如果你是一名数据科学家,电子竞技可能是下一个你想了解的地方!

作者注:

如果你对数据科学感兴趣或想进入数据分析领域,请查看 probotplayground.com 的。Probot Playground 是一个免费的人工智能游戏*台,允许你编写一个机器人,并在自动扑克游戏中玩。每次游戏结束后,您可以收集游戏数据,并使用它来练习您的数据科学技能,并进入游戏分析!现在就去看看吧!

数据科学实习搜索:财富 500 强的故事

原文:https://towardsdatascience.com/the-data-science-internship-hunt-a-fortune-500-story-534e21bae055?source=collection_archive---------8-----------------------

如何在美国获得数据科学实习机会?

又到了一年中的这个时候,美国所有的硕士生要么在寻找实习机会,要么已经找到了。这有时令人困惑和沮丧,但每个学生都必须经历实习求职过程。各种各样的学生来到美国,包括两种类型:新生和有经验的候选人。数据科学家是 21 世纪最性感的工作,每个来自计算机科学、信息管理、工程管理、商业分析和数据科学领域的学生都渴望成为数据科学家。有几个数据科学实习的职位,接受从本科到博士级别的申请。目前有很多博士生在数据科学相关领域注册(因为现在超级热!)因此,对 MS 学生的竞争非常激烈。两个月前,我获得了财富 500 强公司的两个数据科学实习机会,这是一次值得分享的旅程。

免责声明:如果你是一个非常优秀的候选人,并且有信心通过第一次面试,这不适合你。

我是什么时候开始实习找工作的?

嗯,尽早开始总是明智的,我是说尽快开始。我的研究生学习于 2018 年 8 月 27 日开始,我于 2018 年 9 月 13 日提出了我的第一份实习申请。行业内的大公司会很早就开始招聘,所以,这是你全力以赴的时候了。不会有太多的实习机会,但会有一对夫妇让你每天忙于一两个申请。

您的应用程序需要什么?

首当其冲的是一份精致的简历。早点开始,你的简历上没有太多需要修改的地方,因为你刚刚进入研究生院,而不是增加学历。让我告诉你,建立你的简历是一个迭代的过程,因为你用经验和指导把变化推进你的简历。第二件重要的事情是你的求职信。人们说招聘人员首先看到的是求职信,但这可能不是真的。但是为什么要冒险呢?求职信基本上有两种类型:1。讲故事 2。注重技能,无论哪种方式,你都可以去,因为没有完美的求职信。你需要准备的其他东西是成绩单和实习证明(可选)。你应该让你大学的职业服务机构审查你所有的申请材料(因为你是付费的:p ),并利用他们的专业知识来制作你的申请材料。哦!忘了告诉你你需要的最重要的东西:时间。我知道这对你来说是一个新的国家,所以,专注于你的目标总是具有挑战性的,人们通常会从第一天开始就实现他们的美国梦。你应该享受在美国逗留的每一刻,但要优先考虑对美好未来重要的事情。感谢我的本科学长和亲戚,特别是 Heet ShethVishal GhadiaNilmani Bhanderi ,他们经历了相同的阶段,并指引我一路走来。

如何搜索公开实习职位?

有几个来源:Linkedin、Glassdoor、Indeed、Angellist 等。最简单的开始方式是通过 LinkedIn。为这些*台上的相关职位设置每日电子邮件提醒,因为这将是你实习搜索的一个重要特征。是时候你应该滚动这些专业的网络门户,而不是你的脸书或者 Instagram 了!你应该每天花一些时间在这些*台上,并保存相关的工作,你可能会在晚上的空闲时间申请。如题所示,另一个可能的方法是浏览财富 500 强名单,在每个名单中寻找空缺的实习职位。

数据科学职位?

数据科学是一个广阔的领域,因此有各种各样的职位可供你申请:数据科学实习生、数据工程实习生、机器学习实习生、深度学习实习生、数据分析师实习生、商业分析师实习生、分析实习生等。根据你的个人资料,你永远不知道你适合哪个职位。永远不要局限于一个配置文件,因为你总是想保持你的选择开放。你可以根据这些职位来制作你的简历。

迭代,迭代,迭代!

没有完美的简历和求职信,除非你没有接到任何电话(这不包括编码测试和自动视频面试的一般电话),否则你应该反复阅读你的申请材料。一旦你开始接到真正的电话,在那一点上,你可以考虑停止你的申请材料的迭代过程。

利用你的寒假!

所有的大学通常都有一个月的寒假,我觉得这是你申请的最佳时机。毫无疑问,你应该享受寒假,同时为申请留出时间。甚至我在佛罗里达我叔叔家过寒假,我过去经常在空闲时间去那里旅行和申请。到目前为止,大多数大公司都在市场上提供实习职位,所以你应该试着每天至少申请 15 份(至少这是你的目标)。

拒绝,拒绝,拒绝!

消化你每天都会遇到的拒绝是整个过程中不可或缺的一部分。被拒绝了不过是给你一个动力,让你申请更多的职位,并在另一家公司寻找那个你最适合的职位!每当你申请时,你通常会收到一封确认申请的电子邮件,上面写着“如果你适合这个职位,招聘人员会与你联系,并有进一步的步骤”。你不会收到所有申请的回复,所以你能做的就是申请。我在实习求职过程中收到了 205 份申请,其中 70 多份被拒绝了。学长们总是告诉我要准备好申请一千份,我在来美国之前就已经做好了准备。

Linkedin 和网络的力量

Linkedin 是实习或求职的首选门户。申请过程的另一种方式是从在你想要的公司工作的人那里获得推荐。首先,与同行业的人建立关系网。所以,每当你发送联系请求时,不要忘记给对方写一封短信,说明你为什么想和他联系(不要在短信中要求工作,因为这看起来很绝望)。*稳前进!联系你居住在美国的本科生和研究生校友,向他们寻求关于公司职位的指导。不要犹豫!想象一下 5 年后你的某个下属向你求助。你不帮忙吗?他们会经历相同的阶段,并且总是乐于提供帮助。这种方法对我的很多朋友都有效,并且屡试不爽。这只是简历入围和接到面试电话的另一种方式。在大多数情况下,推荐可以直接让你得到面试机会。

这个电话!

所以,一旦你通过简历和求职信被列入候选名单,大多数情况下你要么得到一次编码挑战,要么得到一次面试。编码挑战可能会在技术方面考验您的 Python、R 和 SQL。它通常测试你的数据处理和分析技能。下一步是 n 次技术面试( n 因公司而异,范围从 1 到 5)。对于技术面试来说,你需要彻底检查你的简历(每一厘米),了解你所申请职位的基本知识。你不应该知道工作描述上写的所有事情,但是当在面试中被问到你不知道的事情时,你应该总是积极地回答,比如“我目前正在我的 X 课程中学习这个,到这个学期结束时会很好的”。面试官的脑海中一直有一张记分卡,你必须确保直到他/她愿意回答问题的最后一刻,你都不会在记分卡上留下负面印象。现在,这部分是游戏规则的改变者!你应该问一两个问题,比如“你在这家公司工作感觉如何?”“你能告诉我一个你的团队目前正在做的有趣的项目吗?”等。不管你的面试进展如何,总是以积极的语气结束面试,告诉面试官“为什么是你?”通过在他/她的记分卡上增加你的分数来推销你自己。此外,一定要问他们什么时候会给你回信。

技术面试

数据科学是一个技术职位,有一些技术回合,包括编码测试、数据挑战或技术面试。所以,这些是你应该准备好回答的问题类型:

  1. 基于简历的:关于你的项目和经历的问题。
  2. 建模:测试你基于情境变量(训练数据、特征集、测试数据、计算能力、预测时间、训练时间等)建立机器学习模型并做出选择决策的能力。
  3. 系统设计:测试你建立从提取、预处理到预测和洞察的整个管道。
  4. 数据库:关于 SQL、关系数据库和 NoSQL 数据库概念的问题。
  5. 编码:如果你申请的是数据工程的职位,就等着一轮现场编码吧。这些包括递归、回溯、分而治之、贪婪和动态编程的概念(这些是稀有品种。)

面试后?

现在,是你必须控制你的思想的时候了。你的大脑过度思考你的面试如何进行,如果你得到了这份工作,你读到了这家公司及其位置(哈哈!我以前就是这么做的:P)但是最好忘掉那段经历,回到你的申请轨道上来,直到你最终从他们那里得到反馈。一定要在你的联系人中给招聘人员发一封礼节性的电子邮件来安排面试,当你的面试官说面试时间超过一天的时候,询问一下申请的情况。

报价!

招聘人员通常会直接给你打电话,或者安排时间和你谈谈。这个电话是招聘人员给你提供实习机会的电话。你应该耐心地听他/她对这个提议说些什么,而不是兴奋地从椅子上跳起来。你当然应该在接到电话时表达你的兴奋之情,让招聘人员不知所措。

实习机会和薪资谈判?

如果是实习,你一般不会去协商薪酬,因为这是公司在你还在学习、研究和完成学位时提供给你的真实世界的体验。但是当你手上已经有了另一家公司的报价时,你当然可以试着去谈判,因为这家公司可以给你*价的报价,如果这不损害他们的标准的话,因为他们想要你。).

选择合适的机会!

如果你有多个工作机会,想象一下你在那家公司做工作描述中提到的工作,你就能明智地做出选择(报酬是次要的!🤑).

那我呢?

说实话,这是我整个申请过程中遵循的轨迹。为了得到合适的实习机会,我准备了一千份申请,但我开始得很早,不得不在 205 份申请中停下来。我收到了美国家庭保险集团的数据科学实习 offer 和 CBS 的数据工程实习 offer。我最终决定在佛罗里达州劳德代尔堡的 CBS 公司的 CBS 互动业务部门度过我的夏天。

我为什么选择 CBSi?

从我本科学习的第一年开始,我就梦想着为一家媒体和娱乐公司工作(因为我喜欢动画和设计),还有什么比在美国最受关注的网络和全球十大网络公司工作更好的机会呢?今年夏天,我可能会编写大数据管道来处理和建模 CBS、CBS News、CBS Sports、CNET、Gamespot、Comicvine、Download.com、MaxPreps、TV Guide、last.fm、Metacritic、MetroLyrics、Chowhound、TechRepublic、TV.com 等的数据:p

那都是乡亲们!在 LinkedIn 或 gmail dot com 的【my last name】【my first name】上提出关于数据科学和数据工程实习的问题。这个夏天我非常兴奋,我会让你了解我的实习经历。万事如意!

数据科学面试:期待什么

原文:https://towardsdatascience.com/the-data-science-interview-what-to-expect-15deecea35cc?source=collection_archive---------15-----------------------

数据科学面试因其不确定性而令人恐惧。在这里,我分解了这个过程,并提供了一些帮助你成功的技巧

在许多行业中,面试过程是人们害怕的事情。在咨询和银行业,潜在客户要花无数时间学习,以掌握案例面试和技术问题。对于软件工程师来说,一种全新的商业模式已经完全建立在帮助潜在客户回答编码问题的基础上。许多关于面试的恐惧来自于对面试过程的不确定性。在数据科学这一相对较新的领域,这一点更加神秘。

所有公司对数据科学的面试都不一样;然而,在你申请的大部分工作中,还是有一些相似之处。在这篇文章中,我尽我所能分解了一般的面试阶段,并给出了一些如何在每个阶段脱颖而出的建议。希望这将缓解一些与数据科学面试中的不确定性相关的压力。

为了本文的目的,我们将跳过申请过程的细微差别。以后打算写一篇关于如何优化你的简历和你与公司的沟通渠道的文章,敬请关注!

第 1 阶段:电话面试(15-30 分钟)

对于大多数公司来说,第一步是和你通电话。你通常会与技术招聘人员(大公司)或数据科学经理(小公司)交谈。

这些对话很短,主要集中在了解你的适合度或你过去的项目经验。偶尔,他们会要求对你的相关技能进行广泛的评估。

成功秘诀:

  • 仔细想想你为什么要为公司工作。招聘人员会因为对公司使命的热情或你申请的特定职位而兴奋
  • 查看招聘启事,确保你能用任何相关工具讲述你的经历
  • 回顾你的简历,确保你能清楚地讲述你过去参与的任何项目。为了加分,把这些项目和你可能在工作中做的工作联系起来
  • 这是一个问自己问题的好机会。问一些深思熟虑的问题,表明你对这家公司进行了彻底的调查,可以增加你进入下一轮的机会

第二阶段:带回家测试

当你通过电话面试后,公司通常会给你一份带回家的评估。这可以是供您分析的数据集、编码评估或他们希望您演示的项目。这将因公司和角色的不同而有很大差异。

数据分析:我个人认为这个选项最能代表你每天要做的工作。对于这类问题,他们通常会要求您在相对较短的时间内完成分析。他们会说:“这应该不会花你超过 3 个小时”。从我的经验来看,他们几乎总是要花很长时间。如果可能的话,我会试着安排一下,这样你就可以在周末完成。

成功秘诀:

  • 如果没有明确说明不能从外部来源引入数据,可以考虑添加其他有用的数据。
  • 使用特征工程或特征缩减(并能够解释为什么)可以极大地提高你的分析质量
  • 花些时间让业务涉众理解你的工作(详细的视觉效果),可以表明你了解如何推动业务价值
  • 创建一个 API 端点或 web 应用程序说明了你的工作偏向于可操作性(这可能有点过头了)

编码评估:除非你申请的是机器学习工程师的职位,否则编码评估通常更容易获得数据科学职位。你应该预料到他们会让你选择你喜欢的编程语言来回答几个问题。

对于这些,一般都有严格的时间限制。他们要么让你登录一个会观察你进行评估的面试官,要么让你在无人监控的情况下通过一个在线*台参加测试。

老实说,这些即使相对简单,也让我紧张。当编码或解决问题时,时间压力会让人感到不舒服。

成功秘诀:

  • 练习,练习,练习。网上有很多地方可以练习编码问题。最著名的可能是 leetcode
  • 继续glassdoor.com看看你是否能对某些问题有所感觉
  • 如果你是在面试官在场的情况下做评估,练习用你的方式讲述你的代码。有人在那里观察你是有帮助的,即使他们对编码或数据科学一无所知

呈现:这些都挺少见的。一些公司可能会要求你介绍一个过去的项目,或者进行一个简单的分析,并通过 powerpoint 展示你的发现。如果他们让你出席,他们可能是想测试你与商业利益相关者交谈的能力。

成功秘诀:

  • 试着集中讲述一个关于你的项目的好故事,你为什么使用你所做的方法,以及结果是什么
  • 花点时间让你的幻灯片在视觉上吸引人
  • 用数据支持你的每一句话
  • 提前准备好潜在的问题

如果你通过了前两个阶段,他们会带你去办公室进行面对面的面试。如果你住在全国各地或申请一份远程工作(视频面试),也有例外。

在办公室里,你通常会与团队和整个公司的人进行 2-5 次面谈。以下阶段可以按任何顺序进行。你的面试时间表很大程度上取决于面试你的人的时间表。

第 3 阶段:采访数据科学家(30 分钟-1 小时)

在你进入办公室后,公司会让你与团队中的一名数据科学家交谈。这次面试可能会变得相当专业。预计他们会问你简历上的项目和你方法背后的逻辑。他们可能还会要求你解释一些你所使用的算法背后的数学原理。

如果他们有任何关于带回家测试的问题,他们通常也会在这里问。由于这是一个他们熟悉的项目(他们可能自己参加了评估),所以要准备好回答有关数据清理、模型选择等问题。

最后,如果有时间,他们可能会问几个行为面试问题。这些很重要,因为如果你得到了这份工作,你很可能会和这个人一起工作。如果你能在这里建立一种联系,这将大有帮助。

成功秘诀:

  • 花点时间彻底检查你简历上的项目。能够深入解释你使用的任何算法
  • 回顾一般数据科学面试问题,这些问题通常基于统计数据。你可以在这里找到这些的例子
  • 回顾你的评估,思考你可以改进分析的方法
  • 询问他/她在公司的经历

第 4 阶段:现场编码考试(30 分钟— 1 小时)

通常,上一节中的同一位数据科学家会给你另一个快速的技术评估。这一篇主要关注 SQL 或一些轻量级的 python 数据操作。

对于这些问题,他们要么给你一台电脑,要么让你在白板上解决问题。他们希望你按照自己的方式来编写代码。

成功秘诀:

  • 在线练习 SQL 问题。确保您了解查询基础知识(SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY)、连接类型、自连接、子查询等。
  • 熟悉 pandas 和 numpy 的数据操作(如果可以使用 Python 的话)
  • 有同伴在场的情况下,在一张纸上或白板上练习解决问题

第 5 阶段:与数据科学经理或主管面谈(30 分钟-1 小时)

在一天中的某个时候,你会和一位人事经理交谈。此人可以是数据科学总监、分析副总裁、数据科学经理等..他们会再次关注你是否适合这个团队。

期待他们询问你过去参与的项目。他们通常会更关注你所使用的过程,而不是技术算法。他们可能还会问你和项目经理相处的经验以及不同的项目管理哲学。在这种情况下,技术问题通常很少出现,除非这位经理有大量的量化背景。

在这次面试的行为部分,他们想更好地了解你的目标。他们可能会问你希望如何在公司成长,或者你想在工作中学习什么。

成功秘诀:

  • 在早期阶段询问团队使用的 PM 哲学。做一些功课,这样你至少对它有一个基本的了解
  • 想想你想在工作中学习什么,你想在公司里有什么样的发展轨迹
  • 询问公司提供的管理理念、工作自主权和职业发展方面的问题

第 6 阶段:汇报(30 分钟-1 小时)

这个面试一般留到最后。在较大的公司,这将是与人力资源代表,但在一些较小的公司,这可能是一个机会,以满足首席技术官或首席执行官。此对话还将包含一个重要的 fit 部分。这是你重申你对公司及其使命的兴奋之情的机会,为什么你会是一个很好的人选,以及你如何能为组织创造独特的价值。

从我的经验来看,你的面试官会问一些问题,然后让你掌握主动权。

成功秘诀:

  • 不要害怕谈论你自己,只要你把它与你为什么爱这家公司或者你如何能为它创造价值联系起来
  • 赞美别人,如果你在和首席执行官或首席技术官谈话,不妨说你很喜欢其他面试
  • 询问有关公司未来和下一步行动的问题

你可能面试的其他人

主要嫌疑人是数据科学团队的成员或技术招聘人员,但也有一些其他人可能是面试过程的一部分。也有可能会有多人同时面试你。

以下是一些其他类型的面试官:

  • 项目经理——如果你得到了这份工作,你将每天和这些人一起工作。他们通常会问你关于你的工作风格和你使用不同类型的项目管理框架的经验。
  • 商业利益相关者——这些人会从你的工作中受益。他们可能会问你如何传达信息和发现。
  • 招聘经理——这个群体关注的是你在公司的适合度。他们想看看你是否对工作充满热情,是否认同公司文化。
  • 数据工程师或软件工程师——如果你经常和他们一起工作,有时他们会让这些人面试你。他们还可以管理 SQL 评估。

最后的想法

希望这份指南能让你更好地理解面试中会发生什么。当这个过程的不确定性减少时,我相信它实际上是有趣的。如果你想成功,在行为部分和技术部分都表现出色是很重要的。很多次,我看到候选人得到工作,因为面试官相信他们的潜力和激情,尽管他们的技术能力有限。在面试之前,你应该尽可能多地对将要面试你的人进行调查。发现人们的共性和趋势与发现数据一样重要。

数据科学家独角兽

原文:https://towardsdatascience.com/the-data-scientist-unicorn-8c86cb712dde?source=collection_archive---------15-----------------------

数据科学是一个热门话题。每个公司都在寻找数据科学家,让他们变得数据驱动,突然离开所有那些老式的基于知识的决策。

公司毫不犹豫地开始寻找数据科学家。但是,知道一个数据科学家到底应该做什么吗?

数据科学家职位发布

让我们来看看人们对数据科学家候选人的最大要求是什么:

  1. 定量学科的博士学位或同等经验(如统计学、生物信息学、计算机科学、数学、物理学等)。)
  2. 精通 ETL 技术(Talend,Pentaho DI,SQL Server Integration Services)。
  3. 丰富的可视化工具经验(Tableau、Qlik、Power BI 等)
  4. 精通大数据生态系统(Spark、Hadoop、Mahout、Kafka 等。)和编程语言:Python,R,Java,C++。
  5. 有机器学习和深度学习框架的经验:TensorFlow,PyTorch,Keras,Caffe 等。

这里我们暂停一下。数据科学家似乎是在定量领域有很强背景的人。

此外,数据科学家精通 BI 工具。候选人应该能够为我们的业务和产品团队提供出色的仪表板。

这个人将最终知道如何扩展我们的数据生态系统,这样我们就不用再等待计算复杂的查询。这变得令人震惊。

数据科学家将帮助我们实现每个人都在谈论的那些顶级算法。最后,不仅大数据,深度学习也将统治我们的业务!

看了这个,就没有疑问了。数据科学家可以为我们公司增加巨大的价值。我们的公司将成为数据驱动的公司,大数据和深度学习将推动公司走向成功。

啊!我们不要忘记一些基本的东西。数据科学家应该拥有优秀的沟通技巧、商业思维、主动性和尽可能多的软技能!

失望

我们提供的薪水高于*均水*,找不到像我们要问的这种数据科学家。

这是怎么回事?如果没有博士学位,为什么人们称自己为数据科学家?

一个数据科学家怎么可能不精通复杂的 SQL 查询呢?

我真不敢相信这个候选人从来没用过 Tableau!我如何知道我们的概念验证的影响?

缩小你的搜索范围

在现实世界中,找到一个在定量领域有很强背景并精通特定业务和数据技术的人是一项挑战。有时您可能会找到这些独角兽,但是您最好根据您的问题和特定需求缩小搜索范围。

有时,您可能需要商业智能专家来提供这些见解,以更好地了解您的业务,并做出人工数据驱动的决策。关键词: ETL,SQL,Pentaho,Tableau,Qlik,…

在其他情况下,您可能希望找到能够满足您数据需求的声音数据工程师。这些人可以将您的旧数据仓库转换成可扩展的东西。关键词:卡夫卡,EMR,S3,Dataproc,数据流,红移,数据湖,数据仓库,Java,Scala…

数据科学和数据工程是相对较新的术语,含义模糊。我觉得还是分析一下自己的具体需求,寻找合适的人选比较好。从小事开始,迭代通过一个完整的数据驱动的结构。但是,你需要数据科学家和那些拥有大量数据库和工程技能的人。

这位数据科学家负责 Kaggle 上的“数据科学为善”竞赛。

原文:https://towardsdatascience.com/the-data-scientist-who-rules-the-data-science-for-good-competitions-on-kaggle-ab436595a29f?source=collection_archive---------13-----------------------

在与 Shivam Bansal 的对话中:一位数据科学家,一位 Kaggle 内核的特级大师,三次获得 Kaggle 数据科学良好竞争奖。

通信是一门艺术,也是数据科学领域的有用工具。能够交流见解是必要的,以便其他人可以根据这些发现的结果采取所需的行动。传达 数据的最有效方式之一是通过讲故事。但要成为引人注目的故事讲述者,我们需要简化事情,而不是复杂化,这样分析的真正本质才不会丢失。总之,不要单纯的展示数据,用数据讲一个故事。

在本期 Kaggle Grandmasters 的采访中,我将向您展示一位讲故事大师的惊人而鼓舞人心的旅程:Shivam ban sal一位 Kaggle 内核大师和 H2O.ai 的高级数据科学家。他目前不在新加坡,正在参与 H2O.ai 的 APAC 活动。Shivam 是来自印度的计算机科学毕业生。他于 2019 年获得了新加坡国立大学的商业分析硕士学位,并获得了杰出顶点项目奖。

Shivam 有一个非常有趣和专注的 Kaggle 旅程,用他自己的话说:

“我在一月份加入 kaggle,到了年底,我成为了内核 特级大师, 达到了 综合排名第二, 获得了 10 个内核奖 (其中包括三个 周内核奖 和四个

以下是我与 Shivam 对话的摘录:

  • Kaggle 最初吸引你的是什么,你是什么时候赢得第一次胜利的?

Shivam:2014 年我在第一家公司工作的时候认识了 Kaggle。我正在开发一个文本分析框架,包括情感分析,与此同时,一个类似的竞争也在 Kaggle 上运行。我当时并没有加入 Kaggle,而是把它作为一些好的讨论和知识的参考。2018 年初,我在四年后加入了 kaggle,并参加了一场关于有毒评论分类的比赛。在那次比赛中,我从别人分享的很多内核中学到了很多。我意识到 Kaggle 内核是任何试图学习和实践数据科学的人最有价值的工具之一。我还决定分享其中一个内核作为比赛的一部分,幸运的是它被选为其中一个奖项的获胜者。

Shivam’s Kernel’s Profile

在【2018 年 4 月,我参加了 DonorsChooseKaggle、Google 组织的Data science for good competition。我在一个内核中创建了一个混合推荐引擎,它被选为比赛的获胜者。这是我在卡格尔的第一次重大胜利。

  • 你为什么为了好的竞争而决定进入数据科学?

Shivam’s Winning Submission: https://www.kaggle.com/shivamb/1-bulletin-structuring-engine-cola

希瓦姆 :我喜欢参与数据科学的有益挑战。这些竞赛提出了一系列特殊的、独特的、具有挑战性的问题陈述。与排行榜进行评估的传统 ML 特定竞赛不同,这些竞赛更加开放。这种竞赛要求解决方案在数据科学的几乎所有方面都是完整的,从数据挖掘、清理、工程、分析、建模、可视化、洞察力,以及最重要的讲故事。我喜欢这些比赛非常接*现实生活中的数据科学项目。

  • 从你的内核可以推断,你通常会把一个问题分解成更小的部分。这种方法如何帮助你解决问题?

Shivam :任何分析或数据科学问题本质上都是非结构化的。这意味着没有明确的目标和任务要完成;因此,有时很难建模和接*。我总是试图通过将问题分解成更小的任务来使问题陈述有一个结构。然后,我试着将任务联系起来,准备一个粗略的管道,包含每项工作可能的解决方案/代码。

作为第一个目标,我确保创建一个端到端的内核版本,所有组件和任务都准备好了。在这一点上,结果可能不是有效的,并且是最先进的,但是我通过添加可视化、洞察力、解释、代码重构等来迭代地改进我的内核。这种方法使整个问题状态和解决方案变得清晰,也有助于提高与分析性思维、结构化思维和批判性思维相关的技能。

  • 除了在您的内核中显而易见的全面分析之外,您还具有可视化结果的能力。数据可视化作为数据科学家的一项技能有多重要?

Shivam :可视化是整个数据科学工作流程的重要组成部分。清楚地显示数据集中存在的信息和见解的能力是业内高度赞赏和追求的技能。无论是在 EDA 阶段还是后建模阶段;可视化发挥了重要作用。您的作品的最终用户可能并不总是理解数据或结果的技术方面,但是当使用不同的图、交互、动画和各种图表进行可视化时,它会变得更加明显。视觉在许多领域都显示出了重要性——数据故事,向业务用户展示数据的洞察力,甚至解释黑盒机器学习模型。

  • 你是 H2O.ai 大师库中的最新成员。作为 H2O.ai 的数据科学家,你的角色是什么?你在哪些具体领域工作?

Shivam with some of the fellow Kaggle Grandmasters at H2O.ai

Shivam :我的目标是为 H2O.ai 目前正在开发的新产品做出贡献,并通过新的功能和配方来帮助改善 DriverlessAI。我希望产生影响的一些领域是无监督的机器学习、自然语言处理、自动洞察、视觉分析、自动叙事的自然语言生成以及人工智能。我还积极与 APAC 地区的销售和售前团队合作,以吸引更多客户,教育潜在客户,并帮助他们解决具体的项目和问题。此外,我还与客户成功团队合作,帮助不同的组织在其项目中实现人工智能。

  • 除了 Kaggle,能不能分享一些对数据科学初学者有用的资源?

Shivam :除了 Kaggle 之外,我还从像 Analytics Vidhya、Towards Data Science 和 KDnuggets 这样的博客和网站学到了很多东西。这些博客是了解新概念的好来源。为了获得更全面的数据科学知识,我推荐像 deeplearning.aifast.ai 这样的专家开设的课程。

  • 你想在 ML 中应用你的专业知识吗?

【希瓦姆】 :为发展中国家的弱势人群解决小额信贷问题。许多个人或小企业无法获得贷款,因为他们无法从银行获得贷款,因此没有信用记录。我想使用网络科学、图论和非结构化数据等概念来开发模型,以帮助这部分人群。

  • 对于刚刚开始或希望开始数据科学之旅的数据科学有志者,有什么建议吗?

Shivam :数据科学是关于想法和实验的。这都是关于尝试那些想法和实验,一次又一次地重复,直到达到一个成功的阶段。这是关于培养“愿意尝试”不同实验和失败的心态。也是要迈出第一步,不断进步。

Shivam won the Outstanding Capstone Project Award from the National University of Singapore for creating a platform for Alternative Credit Scoring for SMEs using unstructured data and deep learning.

另一个有价值的建议是始终从端到端的角度考虑问题。这意味着在开发数据科学解决方案时,有必要牢记业务视角。这种想法有助于为手头的任何业务问题提出一个创造性的相关解决方案。

最后,在开始学习数据科学时,互联网上有大量有用的资源,拿一个,开始一个,坚持下去,完成它。有这么多的资源在那里,很容易被分散注意力,我已经看到许多人没有做到这一点。要从任何课程中获得最大收益,最好的方法就是完成它。

Kaggle 上的 Shivam 内核总是彻底研究、清晰文档和高质量可视化的完美结合。他在工作背后付出的努力是巨大的,也是显而易见的。Ben Shneiderman 曾经说过可视化的目的是洞察力,而不是图片,Shivam 的内核就是这一事实的见证。

阅读本系列的其他采访:

  • Bojan Tunguz :从学术界到 Kaggle:物理学家如何在数据科学中找到爱情
  • Rohan Rao:数据科学家从数独到 Kaggle 的旅程

人员分析的新时代

原文:https://towardsdatascience.com/the-dawn-of-a-new-era-for-people-analytics-9a748f7fdc2?source=collection_archive---------22-----------------------

用图表技术建立组织智能能力

对于每一个现代企业来说,要克服人力资本管理中最大的战略挑战——培养和留住人才、提高绩效、实现增长思维和发展敏捷的工作文化s——能够利用人员数据是至关重要的。然而,领先的全行业人力资本管理调查发现,大多数组织几乎只具备最基本的人员分析能力,即“运营报告”。在接受调查的行业领先组织中,只有相对较小比例的组织利用预测分析,更小比例的组织仍在利用这些预测算法来自动化和增强 HCM。

许多组织面临的现实是,“他们的人员数据”实际上并不属于他们。他们的人他们的数据放在流行的职业网络上——当然是 LinkedIn 以及许多开放的职业网络/社区*台中的一个上。可以理解的是,价值部分来自于联系。

许多大型组织已经经历了无数次 HCM *台和组织内部网络工具的尝试,一个接一个的失败。太多的人陷入了像 LinkedIn 这样的开放网络*台一样的前意识空间,并且在这样做的时候,很少被理解。虽然可以从这些开放网络工具的用户体验和算法行为中学到很多东西,但组织内部网络在很大程度上未能实现它们最重要的优势——在用户组织* 环境中获得有形相关好处。*

重建社会企业

如今,企业比以往任何时候都更需要找到从员工数据中获取价值的方法,即管理人才、理解网络和促进工作文化。事实上,调查反复发现,员工希望他们的雇主在这方面做得更好。这也得到了前所未有的员工流失率和蓬勃发展的招聘行业的支持。终身工作怎么了?**

如今,要想成功建立社会企业,意味着至少在员工的意识中创造和征服一个新的空间,让员工和公司都能找到相关性和价值。重建社会企业并不是为了与开放的网络*台竞争;这是关于建立一个内部联系的社区,在这里,获得学习、职业发展和个人成功的回报在组织文化中根深蒂固,参与的价值是巨大的。只要说“网络”是支撑这种智能能力的技术就够了,因为人与人之间的数据本质上是相互联系的。

People Data is Connected

人员数据已连接

如果能从 LinkedIn 等职业网络的统治地位中学到什么,那就是连接数据驱动价值。人员数据已连接。在隐私限制范围内,兴趣、奖励、经验、兴趣、职位、表现、技能以及这些与每个人的联系推动了巨大的洞察力和价值。

人员数据不仅相互连接,而且相互关联。例如,如果员工 Anne 拥有某个空缺职位所需的技能,我们可能会向她推荐该职位。相反,如果 Anne 对她感兴趣的角色需要一项技能,我们可能会向她推荐一门课程,使她能够获得这项技能。

Talent Management Scenario with Connected People Data

有了这些明确定义的数据之间的关系,组织发展和利用人才、评估和提高绩效的机会是巨大的。继续这个例子,安妮正在走的路;她尚未获得的技能;她在组织中的影响力和她被裁掉的几率更容易量化,因为人们对它们的理解更深入。更重要的是,因为个人愿望——远不止是报酬——得到了更好的理解,奖励也更有意义,参与数据处理的程度也更高了。

进入图形数据库的世界

能够理解人们学习什么、与谁互动、与什么互动的不断发展的关系是人力资本管理的关键。开发、维护和查询关系 SQL 结构以从人员数据中提取含义,是在错误的工作中使用错误的工具。另一方面,开发和维护一个图不仅仅是更高的性能,而且允许分析师通过来自业务用户的持续反馈进行迭代开发,因为用图建模对用户来说足够直观,易于理解。这就是原生图技术的无模式本质,数据用户变成了数据分析师,人们数据探索的机会——通常保留给数据科学家的任务——变成了每个团队和每个员工的可能性,无论是初级还是高级。所有这一切开创了人员分析的新时代,在这个时代,人员数据是相互关联的,可供每个人使用,分析就像组织和决策者希望的那样敏捷。

展望未来,图表技术为人员分析带来了巨大的机遇,原因如下:

员工采用的社交企业应用需要建立在图表的基础上——因为围绕学习、职业发展和支持的个性化建议和预测性分析都可以通过图表轻松实现,内容将更加相关,因此员工更有可能与这些应用互动。

更好地洞察人员数据 —人员数据高度关联。图表为关联数据提供了理想的技术堆栈,而用于中心性和社区检测的图表算法提供了使用关系表结构难以获得的洞察力。

组织变得更具适应性 —图表支持以灵活的方式处理数据,这是适应不断变化和发展的人力资本市场的关键。特别是,通过图表,业务用户可以为定义和发展图表模型做出积极的贡献,这意味着数据的分析和视图总是相关的。

提高效率和分析能力 —数据分析师不必像查询关系结构那样编写耗时的连接,而是可以重新分配到更高级的任务,例如开发用于高级分析的图形模型。

分析变得大众化并推动决策制定 —查询图表比关系结构更直观,可视化工具为整个企业的决策者提供了强大的故事讲述功能。

接下来去哪里?

查看运行中的人员图表。在我的下一篇文章中,我将构建一个人物图表,向您展示图表如何提高 HCM 能力。如果你喜欢你所看到的,或者想要更多关于为你的组织建立一个人的图表的信息,Twitter DM @jamesdhope。

参考资料:

[1]德勤人力资本趋势 2019,https://www2 . Deloitte . com/insights/us/en/focus/Human-Capital-Trends . html

[2]https://neo4j.com/developer/

[3]BlueDataLab.com,人物数据分析案例研究

数据科学家之死

原文:https://towardsdatascience.com/the-death-of-data-scientists-c243ae167701?source=collection_archive---------4-----------------------

AutoML 会取代数据科学家吗?

AutoML 来了!

A brief history of AutoML platforms

2018 年,科技巨头谷歌和微软向世界介绍了他们的 AutoML 服务:谷歌云 AutoML 和 Azure 机器学习。从那以后,这些服务的受欢迎程度和受关注程度直线上升。在这篇博文中,我们将讨论 AutoML 是什么,目前有哪些*台,以及数据科学家最关键的问题:AutoML 会取代我们吗?

汽车简介

在介绍 AutoML 时,不能不提到机器学习项目的生命周期,它包括数据清理、特征选择/工程、模型选择、参数优化,以及最后的模型验证。随着技术的进步,传统的数据科学项目仍然包含大量的手动流程,并且仍然非常耗时和重复。

source: R. Olson et. al. (2016) “Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science.”

AutoML 的出现自动化了从数据清理到参数优化的整个过程。它在时间节约和性能方面为机器学习项目提供了巨大的价值。

有哪些 AutoML *台可用?

1.谷歌云汽车

Google Cloud AutoML 于 2018 年推出,凭借其用户友好的界面和高性能迅速获得了人们的喜爱。下面的图表展示了谷歌与其他 AutoML *台相比的表现(蓝条)。

Source: Tackling High-Value Business Problems Using AutoML on Structured Data (Cloud Next ‘19)

2.微软 Azure AutoML

同样在 2018 年发布的 Azure AutoML 为其不熟悉编码的用户提供了一个透明的模型选择过程。

3.H2o.ai

“H2O 一直是建造大规模模型的驱动力。我们谈论的是数十亿的索赔。你不能用标准的现成开源技术做到这一点。”— H2o.ai

H2o 成立于 2012 年,提供开源包和名为无人驾驶人工智能的商业汽车服务。自问世以来,H2o 已被广泛应用于金融服务和零售等行业。

4。 TPOT

TPOT(基于树的管道优化工具)由宾夕法尼亚大学开发,是一个免费使用的 Python 包。虽然是免费的,但该软件包非常强大,并在各种数据集上取得了出色的性能:虹膜数据集的准确率约为 97%,MNIST 数字识别的准确率为 98%,波士顿房价预测的准确率为 10 MSE。(资料来源:TPOT 文件)

AutoML 与数据科学家

现在我们知道了 AutoML 是什么,有哪些选项可用,我们将解决房间里的大象:这些*台将取代人类数据科学家吗?我们将从成本的角度来看这个问题,并运行一个黑客马拉松来评估汽车“与人类相比的性能”。

成本比较

根据 Indeed.com 的数据,美国数据科学家的*均年薪为 121,585 美元。与此同时,如果一家公司为一个全职职位(每周 40 小时,每年 52 周)雇用一名 AutoML,每年的成本将从 4160 美元到 41600 美元不等,具体取决于它选择的*台。

诚然,这不是一个科学上合理的比较,因为我们都知道数据科学家不仅仅是运行模型。然而,这是一种非常快速和简单的方式来显示数据科学家和 AutoML 在成本方面的立场。

Data Scientists vs. AutoML Cost Comparison

性能比较:黑客马拉松

我们将通过使用两个数据集运行黑客马拉松,继续比较人类数据科学家与 AutoML *台的性能。在每个数据集中,一组人类数据科学家将与 AutoML *台竞争。两个团队都将经历数据处理、特征选择/工程、模型选择和参数调整,以得出具有预定性能指标的最佳预测结果。

Hackathon Dataset 1: Speed Dating (Classification)

Hackathon Dataset 2: ASHRAE (Regression)

数据集 1:速配数据集

数据集概述

这个数据集是从实验性速配活动的参与者那里收集来的。在这些活动中,参与者会填写一份调查,其中包括关于他们自己的信息,以及他们在伴侣身上寻找的东西。例如,他们在 1-10 的范围内对自己的雄心有多高,他们参与的活动是什么,你希望你的伴侣有多高的雄心。该数据集的目标是预测个人是否能够根据他们对特征的偏好找到匹配。这是一个以“匹配”变量作为因变量的分类问题。

数据科学家的数据预处理和特征工程

为了获得比 AutoML *台更好的结果,我们需要对数据集进行特征工程,处理类不*衡问题,处理缺失值,并对分类变量进行一次性编码。因为数据是通过调查收集的,所以我们面临着整个数据集中缺少值的问题。如果这个人没有参与或者觉得回答这个问题很舒服,他们就把它留为空白。这些缺失值通过适当地输入均值、中值或众数来处理。数据在一些独立变量之间存在共线性,因此某些变量被删除。只有 29%的从属标签的二进制值为 1,而其他的为 0。为了解决这个问题,我们使用了 SMOTE(合成少数过采样技术)。SMOTE 从少数类创建合成样本,而不是简单地复制数据。独热编码变量在 Google *台上尤其麻烦,因为该*台无法以提取有意义信息的方式对它们进行分组。

我们现在将使用原始数据和功能工程数据来分析 Azure 和 Google 的 AutoML *台的整体有效性。

数据科学家 vs AutoML *台

数据科学家:我们尝试了几种不同的模型,发现 XGBoost 和神经网络模型表现最好。我们在这里查看 AUC ROC 分数,以便比较我们的模型与这些 AutoML *台创建的模型的结果。我们的 XGBoost 模型和神经网络模型的 AUC ROC 值分别为. 77 和. 74。

原始数据上的 AutoML *台:谷歌的表现比 Azure 的 XGBoost 模型好一点。谷歌的 AUC ROC 得分为 0.881,而 Azure 的 AUC ROC 得分为 0.865。谷歌的*台不会告诉我们哪个模型被选为最佳模型,因为这些信息被认为是专有的。另一方面,Azure 会告诉你到底运行了多少个模型,每个模型下的分数是多少,以及训练每个模型所花费的时间。

基于已处理数据的 AutoML *台:我们现在想要测量我们的特征工程数据集的性能。我们注意到了一些事情:谷歌的性能下降了,而 Azure 的性能提高了。正如前面提到的,one-hot 编码对于 Google 的 AutoML 有一个问题,这个*台是为了执行它自己的功能工程而创建的。因此,为特征工程数据提供一次性编码变量会降低整体性能。Azure 的性能从. 865 提高到. 885。

这是 Azure 在这个数据集上运行的模型的图片:

你还可以在 Google 和 Azure 的*台上查看精确召回图、ROC 图、混淆矩阵和功能重要性图:

快速约会数据集的要点:

  • 数据科学家可以通过向 AutoML *台提供功能完善的工程数据集来增加价值。
  • Azure 在告知预测中使用了哪个模型方面更加透明;谷歌的模型创建和选择信息是专有的。
  • Google 没有很好地处理一次性编码变量。

数据集 2: ASHRAE

数据集概述

该数据集来自 ASHRAE 能源预测 Kaggle 竞赛,该竞赛要求参赛者为 1,449 栋建筑的热水、冷水、蒸汽和电表读数开发预测模型。数据由建筑物的元数据组成,包括*方英尺、建造年份和楼层数;按时间戳显示的仪表类型和读数;和天气数据,包括气温、云量、降水深度、风速、风向度数和海*面气压。天气数据由最*的气象站在现场收集。

数据科学家的数据预处理和特征工程

天气数据集中的缺失值是一个需要解决的重大问题,因为云覆盖率和降水深度要素分别缺失了 50%和 35%的值。一些气象站点丢失了所有的云覆盖率和降水深度数据。为了克服这一障碍,我们尝试对气温、露点温度、风速和海*面气压特征中的缺失值进行插值,这些缺失值包含很少的零值,并使用插值数据开发云覆盖率和降水深度的预测模型。

我们使用 10 重交叉验证为每个特征选择插值方法,并将其应用于我们的训练和测试数据。我们运行了一系列模型来预测云覆盖和降水深度,但没有找到一个足够精确的模型来生成缺失值。风向按区间重构为一组分类变量,由于风速严重向右倾斜,我们对其进行了对数变换。此外,我们还构建了一些特性,如假日、周末和特性的滞后项。总的来说,我们在 13 个原始特性的基础上构建了 19 个特性,总共有 32 个变量。

最后,我们删除了在一个气象站点收集的异常天气数据,然后应用向前、向后和逐步选择来确定最佳预测特征,最终使用了 32 个变量中的 13 个。

数据科学家 vs AutoML *台

数据科学家:由于训练集和测试集包含相同的建筑物,因此我们没有为所有建筑物创建通用模型,而是为数据集中的每个建筑物构建了光梯度增强模型。通过这种方法,我们获得了 0.773 的 RMSLE。

原始数据上的 AutoML *台:一个小时的训练时间,Google Cloud 取得了 1.017 的 RMSLE 额外训练 3 小时将 RMSLE 提高了 0.011。谷歌轻松超过 Azure,后者的 RMSLE 为 2.22。这不是一个完全公*的比较,因为我们将 Azure 限制为随机森林,因为只有这个方法会返回一个 RMSLE。

处理数据的 AutoML *台:我们通过谷歌云运行处理后的数据,当经过 4 个小时的训练后,谷歌云达到 1.7 的 RMSLE 时,我们感到惊讶。经过进一步研究,我们发现我们的特征选择方法抑制了 AutoML 的性能,因为 AutoML *台将执行自己的特征选择。我们再次在两个*台上运行处理后的数据,使用所有 32 个变量,而不是只有 13 个。这一次,两个*台的性能都有所提高。Google Cloud 在一个小时的训练后获得了 0.755 的 RMSLE,在四个小时后获得了 0.656 的 RMSLE,这是数据科学家表现的一个重大改进!Azure 在一个小时的训练中达到了 3.826 的 RMSLE,在四个小时后达到了 3.653。

ASHRAE 数据集的要点:

  • 虽然 AutoML 是一个强大的预测工具,但它不能很好地预处理数据,以持续超越人类。
  • 额外几个小时的培训可以大大提高 AutoML *台的性能。
  • 允许 AutoML *台为您选择功能;否则,您将面临严重限制*台性能的风险。
  • 将数据科学家对业务问题的专业知识与 AutoMLs 的特征选择、特征预处理、模型选择和超参数调整功能相结合,是获得有价值见解和强大预测结果的有效解决方案。

结论和关键要点

最后,我们想通过回答三个问题来结束我们的项目。

AutoML 会取代数据科学家吗?

答案是

虽然 AutoMLs 擅长建立模型,但它们仍然无法完成数据科学家的大部分工作。我们仍然需要数据科学家来定义业务问题。我们仍然需要数据科学家应用他们的领域知识来生成更多有用的特征。现在的 AutoML 只能处理有限类型的问题,比如分类和回归问题。目前,他们没有能力建立推荐和排名模型。最重要的是,我们仍然需要数据科学家从数据中得出可操作的见解,这不能仅靠 AutoMLs 来完成。

然而,AutoMLs 仍然是数据科学家为其利益相关者创造价值的强大工具。因此,下一个明显的问题是:我们应该如何以及何时使用 AutoML?

数据科学家何时能最好地利用 AutoML *台?

这里我们想提一些可能值得考虑的例子。

  • 性能超过可解释性:

有时,涉众可能只关心模型的精确性,而可解释性不是最重要的考虑因素。基于我们的实验,AutoMLs 与合理的特征工程一起,似乎可以获得令人满意的性能。然而,在我们的例子中,可解释性仅限于两个*台的特性重要性。换句话说,如果特性的重要性足以解决您的问题,那么 AutoMLs 可能是获得更高精度的正确选择。

  • 生产速度:

Google 和 Azure 都提供了将模型部署到产品中的便捷方式。例如,谷歌云允许批量预测和在线预测,只需几次点击。它还允许您使用他们的 API 将您的模型部署到您的网站。这些功能可以让数据科学家加快生产过程并减少工作量。

  • 更好地利用你的时间:

数据科学家有太多的职责,可能会让人不堪重负。作为一名数据科学家,时间可能是你最稀缺的资源。您的时间被与利益相关者(产品经理、业务部门的员工和客户)的无数会议所占据,维护现有的模型,收集/清理数据,准备下一次会议,并且列表还在继续。AutoML 是一个很好的工具,可以节省你的时间,因为它只需要你点击几下鼠标,花几块钱就可以训练出一个具有足够性能的模型。因此,您可以专注于产生最大价值的任务(有时花时间准备精彩的演示比提高 1%的模型准确性更有价值)。

哪个 AutoML 比较好?(Google Cloud AutoML vs. Azure 机器学习)

上表总结了我们在 Google 云和 Azure 上使用 AutoMLs 的经验。这里我们想指出一些细节。

  • 用户体验:

我们在使用 Azure 时遇到了一些错误。当我们在 ASHRAE 数据集(大约 2000 万行,30 列)上训练模型时,三分之一的实验失败了。我们设置了训练时间限制,以使两个*台具有可比性,但对于像 ASHRAE 这样的大规模数据集,一个小时的限制可能会导致一些错误。然而,当运行一个更小的数据集时,比如我们的速配数据集,这个过程是相当有效的。另一方面,我们在谷歌*台上没有遇到任何问题。

  • 可解释性:

谷歌的 AutoML 使用其专有的深度学习算法。因此,就可解释性而言,Google AutoML 能做的最好的事情就是打印出特性的重要性。另一方面,在 Azure 中,可解释性本质上取决于您使用什么模型。虽然 Azure 中的所有模型都比 Google 的模型更容易理解,但它仍然更灵活。例如,如果您使用由 Azure 调整的 XGB 模型,您可以下载该模型并在其上运行 SHAP,以了解功能如何影响模型的输出。

尝试 AutoMLs 前的一些提醒:

  • 使用 Google 的 AutoML 时,让*台负责特性选择。正如我们的实验所示,在数据集上运行 Google 的 AutoML 之前选择/删除特征会损害性能。更好的方法是添加你认为适合原始数据集的任何功能,让 Google 的 AutoML 挑选最佳功能。
  • 如果你正在处理一个大型数据集,谷歌的 AutoML 可能是一个更好的选择。如果你必须使用 Azure 的*台,确保你设置了更高的时间限制(或者根本不设置限制),以防止潜在的错误。另一方面,如果你的数据集相对较小(少于一百万行),Azure 可能会表现得更好。
  • 命名不带空格的列。在两个*台上上传数据集时,包含空格的列名可能会导致错误,所以请确保正确命名列!在 Python 中,推荐使用下划线(_)代替空格。
  • 熟悉评估指标。下面我们列出了两个*台上可用的评估指标。有时您可能找不到您想要用来训练模型的指标,因此您需要一个代理指标。因此,了解每个指标的特性有助于您选择评估指标以及合适的 AutoML *台。

参考

贡献者

Joseph ChinUT joseph.chin@utexas.edu 奥斯汀 MSBA 20 年

艾法兹·戈瓦尼,aifazg92@gmail.com 奥斯丁 20 岁

20 年 gabejames@me.com 奥斯丁 183;MSBA

马修彭UT 奥斯 MSBA 20:

围绕数据隐私的辩论没有抓住要点

原文:https://towardsdatascience.com/the-debate-around-data-privacy-is-missing-the-point-1fcdc4effa40?source=collection_archive---------15-----------------------

Photo Credit: Polaris Pacific

数据处理席卷了整个世界。企业、政府和个人都开始意识到数据可以帮助他们做出更明智的决定,知道如何与其他国家谈判,或帮助改善他们的睡眠周期。虽然人工智能和机器学习领域已经并将继续给我们的世界带来新的理解水*,但在这条发展道路上并不是一帆风顺的。

所有人工智能和机器学习算法的发展都需要使用数据,而且是大量的数据。随着普通大众越来越多地了解他们的日常行为如何被用作开发这些算法的数据点,围绕数据隐私的对话正在获得巨大的吸引力。欧盟最*通过了一项围绕数据隐私的主要法律,名为《通用数据保护条例》(GDPR),对科技公司管理和收集用户数据施加了更多监管。在美国,加利福尼亚州最*通过了他们自己的消费者隐私法案,该法案也有类似的目的,以确保人们的数据受到保护和隐私,并且只用于用户同意的目的。我想提出的问题是:数据隐私是我们应该为之奋斗的东西吗?

首先,让我们谈谈人们以数据隐私的名义试图实现(或试图进一步实现)的一些解决方案。最容易的替罪羊之一就是匿名。大型科技公司表示,即使他们在各种分析中利用用户数据,也没有办法将数据追溯到用户,所有私人数据属性(姓名、社会保障/国民身份信息等)都将被删除。)都在分析前去掉了,而且那只是百万分之一,又有什么坏处呢?不幸的是,许多组织已经表明匿名数据并不像我们想象的那样匿名。虽然这些公司和政府对我们的数据感兴趣的目的可能并不关心我们的识别信息,但任何能够接触到数据集的人,只要有足够的技能,都可以很容易地识别出组成数据集的真实个人。这使我们都成为身份盗窃、勒索和无数其他剥削行为的目标,任何人都不应该遭受这些行为。

如果我们不能做到匿名,而数据又与我们密不可分,那么至少让我们从中赚点钱吧!让我们根据人们为所有这些组织产生的数据的价值向他们支付报酬。这是许多人提出的想法,特别是 Will.i.am,他认为下一个合乎逻辑的步骤是数据的商品化。隐私国际对他的文章进行了反驳,称“我们也有一些非常实际的担忧,这让我们对数据货币化持怀疑态度。你的个人数据实际上并没有那么有价值。虽然整个数据市场可能价值 3 万亿美元…但访问海量聚合数据才是有价值的。”

所以我们不能让它匿名,也不值得我们花时间去商品化它,我们该怎么办?对此的答案是加强对如何收集和使用数据的监管和限制(即欧盟和加州),但这种应对措施实际可行吗?

每天创建的数据量惊人。随着大量的大型科技公司、政府机构和手机上的小应用程序跟踪你花在游戏和窃听上的时间,我们几乎不可能跟上我们作为一个物种创造的所有数据。 IBM 估计人类每天会产生万亿字节的数据,我们的数字足迹每年都在翻倍。在数据创建的大部分历史中,消费者有责任意识到他们通过使用服务放弃了什么数据。他们需要通读隐私政策,了解科技公司的最新动向,并决定何时放弃通过某个软件提交更多数据。这不仅是令人生畏的只是打字,但对于这种数据使用方式的任何支持者来说,剑桥分析/脸书丑闻及其对我们脸书数据的自由支配应该让任何人暂停对用户的责任。正如 Brookings.edu 在他们最*的一篇研究论文中所说,

“也许知情同意在二十年前是可行的,但在今天却是一种幻想。在持续不断的在线互动中,尤其是在现在占大多数使用的小屏幕上,通读隐私政策是不现实的。而人们根本不会。”

我明白他们的意思。我都不知道上一次阅读我注册的新服务的隐私政策是什么时候了。当世界以我们过去十年设定的速度前进时,要筛选的信息太多了。这些政策也是具有法律约束力的文件,因此在任何组织保护自己的努力中,我们都“同意”的这些隐私声明不太可能在短期内改变。

Brookings 的文章接着说,有必要制定基本的隐私立法,以便用户始终了解他们的数据是如何被使用、存储和共享的,以及这些数据是根据他们的兴趣和收集这些数据的情况使用的。这个概念被称为数据最小化,虽然表面上听起来是个好主意,但它并不真正符合最*的人工智能实践。正如《国际数据隐私法》中的一篇社论文章所详述的那样,这种数据最小化的想法并不适合人工智能的发展。我们世界中的许多进步都发生在所谓的“黑盒”人工智能开发周期中,但在这些黑盒中,很难预先知道在一个意外相关的世界中什么是必要的。定义数据的目的有时是一个争论点,因为机器学习模型的目的可能会在整个学习过程中完全改变。如果在使用这些模型的过程中出现了意想不到的创新,偏离了一个用户认为他们的数据将如何实现的方式,我们该如何利用这种洞察力呢?在知道结果可能是什么的情况下,我们必须去找每一个用户并获得他们的许可才能重新进行实验吗?如果有人拒绝,我们是不是被迫把这种见解扔出窗外,因为它是通过百万用户之一不同意的方式炮制出来的?除了记录他们过去所做的决定,个人并没有真正参与到这种创新的创造中,所以一旦发现,他们在创新的发展中应该有什么发言权呢?

在这场辩论中,人们还经常忽视使用这项技术带来的隐私好处,而仅仅关注技术侵犯我们当前隐私状态的方式。与其说是明显的隐私损失,不如说是一种权衡。有了网上购物,我可以买一盒花生酱,并让他们送货上门,我从来没有机会碰到我的健身模特朋友,她会骂我奢侈。当我们没有机会让我们的朋友看到我们亲自购买这些东西时,购买性玩具甚至仅仅是避孕套是一种更加舒适和私密的体验。作为回报,我们告诉亚马逊算法我们喜欢什么样的东西,他们可以记录我们在他们的*台上做出的这些决定,以便从他们的合作伙伴那里向我们发送更准确的建议。我们可以在网飞看我们最喜欢的罪恶快感节目,我们的朋友都不知道,网飞可以看到电视和电影发展的总趋势。有一种技术让人们在搜索互联网时有更多的隐私,帮助那些在专制政权下的人获得免费和开放的数据。随着我们进入一个连通性更强、数据流动更自由的时代,我们将很难阻止这一趋势,特别是如果我们的决策记录的交换意味着人们生活在一个更安全的社会。

监控摄像头和面部识别软件,尤其是警方在调查中使用的监控摄像头和面部识别软件,已经成为一个热门话题。 Data Innovation 最*围绕这些预防性安全措施进行了一项调查,结果发现,首先,美国人并不那么关心面部识别软件及其开发。

Credit: Datainnovation.org

另一方面,监控摄像头的使用(在面部识别过程中广泛使用)人们更加警惕…直到摄像头的使用被置于安全的背景下,意见的分布发生了逆转。

Credit: Datainnovation.org

似乎人们很愿意牺牲隐私,如果这意味着他们在日常生活中感到更安全的话。公共卫生呢?虽然谷歌流感趋势的初始运行飞得很高,然后崩溃,但访问我们的更多数据可能正是一个新模型所需要的,以更准确地预测流感趋势。沃森正在研究一张又一张 x 光片,以了解如何比任何人类医生更好地识别肿瘤,这是因为患者向 IBM 放弃了一部分隐私,这无疑有助于确保他们发现任何癌症,并帮助下一位患者得到更好的诊断。

如果我们能够通过及早发现这一趋势来防止每年数百人死于流感,那会怎么样?如果从红色标记的谷歌搜索中,我们可以在悲剧发生前提醒当地警方一名可能的枪手前往一个节日?如果我们让癌症筛查变得如此具有预测性和可负担性,癌症死亡将成为一种罕见的事件,而不是我们所有人预期的年龄增长,会怎么样?这都是可能的,但这需要一个契约,放弃我们的一些安全来换取另一种安全。

许多年来,人类一直在个人经验高于一切的假设下运作。每个人都是自己命运的主人。我认为我们的文化越来越重视个人经历,越来越重视个人对整个人类知识和生存的贡献。我们数据的总和大于其组成部分,我们需要这些贡献来保持自己前进。“自由主义”被定义为个人经验是世界上最有价值的商品,尤瓦尔·哈拉里说,“如果谷歌做出足够好的决定,人们会授予它越来越多的权力。随着时间的推移,数据库将会增长,统计数据将会变得更加准确,算法将会改进,决策将会更好。自由主义会在系统比我更了解我自己的那一天崩溃。这并没有听起来那么难,因为大多数人并不真正了解自己……”

虽然关于我们的哪些数据是私人的,哪些公司和机构有权使用的辩论正在激烈进行,但它忽略了所有这些复合数据将我们引向一条新的道路,即集体比个人更有价值。我不知道这对我们来说是否是一条更好的道路,但我可以看到它作为一个物种将如何成长,并取得超出我们想象的成就。团队总能比个人做得更好。随着我们走向这种集体人性思维模式,隐瞒数据以让自己感觉更安全的想法变成了一个道德难题。如果我们的价值大部分来自我们为人工智能处理和发现见解而创造的数据,那么隐瞒这一点意味着我们从整体上降低了价值,我们正在犯道德错误。我们正在用数据隐私换取另一种隐私和惊人的增长,在我看来,这是一笔相当公*的交易。

与 R 闪亮的十年回顾!

原文:https://towardsdatascience.com/the-decade-in-review-with-r-shiny-ea57f8fa5e0e?source=collection_archive---------48-----------------------

用 R Shiny 可视化过去十年世界发展指标的演变

这是漫长的一年。确切地说,这是一个漫长的十年。ISIS 已经被正式消灭,抗击小儿麻痹症的战斗取得胜利,南苏丹隆重地成为一个国家,冥王星从可爱的小行星变成了绕着太阳转的矮星,莱斯特城赢得了英超联赛,Kanye 发布了他标志性的 Yeezy,我们现在可以在旅途中听音乐,而不用长电线缠绕我们的头发,苹果公司成为世界上第一个万亿美元的公司,Ted Mosby 最后告诉他的孩子他是如何遇见他们的母亲的,我学会了 R 闪亮!

在从郑中的 google 图表绑定中得到急需的灵感后,我决定好好利用我过去几十年的学习。

这是一个交互式的 R Shiny 应用程序,它描绘了世界银行在过去十年中所有国家的主要发展指标的演变。该应用程序允许您选择要在 X 和 Y 轴上动态绘制的指标以及所需的年份。

发布所需的选择后,将绘制一个气泡图,该图描绘了两个变量之间的关系,气泡由该国的地理区域(T3)和人口(T4)决定大小。

如上所示,当光标悬停在每个气泡上时,会弹出一个工具提示,指示其特征值。

你也可以通过点击位于年份滑块斜下方的“播放”按钮来观看这两个变量在过去十年中的演变。

有充分的理由欢呼!世界各地的人们越来越长寿,越来越富裕,越来越能上学&我们中的许多人甚至在空气中排放越来越少的二氧化碳。

为又一个十年的进步干杯&闪亮的应用程序阐明了这一点!

你可以在我的 github 这里找到数据集和代码。

感谢阅读!

人工智能的十年

原文:https://towardsdatascience.com/the-decade-of-artificial-intelligence-6fcaf2fae473?source=collection_archive---------4-----------------------

过去十年人工智能影响的完整概述。

过去十年见证了人工智能的伟大崛起。这项技术几乎在所有领域都产生了影响。它已经成为一个超级大国,改变了我们互动的方式,在未来,它可能会改变我们的生活方式。吴恩达引用“人工智能是新的电力”,我们可以看到电力正在改变许多行业。我不得不等到 12 月 31 日才发布这篇博客,因为这个领域发展如此之快,以至于我们甚至可以在十年的最后一天发布一些突破性的消息。

这十年 AI 快速增长的两大原因是:

  1. 数据 —由于互联网和物联网设备,产生的数据量呈指数级增长。

  2. 计算——我们在之前几十年面临的阻碍被解决了,这反过来又助推了 AI 的力量。许多公司已经开始创建专门用于训练深度学习模型的硬件。

罗伯特·清崎有一句名言“预测未来的最好方法是研究过去,或预测”。

因此,让我们来看看过去十年中在人工智能领域发生的重要事件。这是我的概述,如果我错过了,你可以在评论区添加你的最爱,但我希望我已经涵盖了大部分,所以让我们开始吧。

十年的开始:

2010 年:

ImageNet 比赛的开始

ImageNet 大规模视觉识别挑战赛(ILSVRC) 评估大规模对象检测和图像分类的算法。这是迄今为止用于评估分类模型性能的基准。它还提供了训练大型模型的数据。

Source: https://syncedreview.com/

苹果收购 Siri:

据报道,苹果以大约 2 亿美元的价格收购了 Siri。该公司立即开始研究如何将 Siri 植入 iPhone。乔布斯亲自动手让人工智能助手变得对用户友好。Siri 是我们今天拥有的虚拟助手的开端。(不过托尼·斯塔克有 2008 年的贾维斯。)

**T21【deep mind】成立 **

Deepmind 科技公司是一家英国人工智能公司,创始人之一是戴密斯·哈萨比斯。这家公司在这十年里对 AI 产生了巨大的影响。

微软为 Xbox 360 推出 Kinect

首款使用 3D 摄像头和红外检测跟踪人体运动的游戏设备。 Kinect 可以以每秒 30 帧的速度对人体进行全动作追踪。这是游戏和计算机视觉领域的重大突破。

2011 年:

IBM 沃森赢得危险

IBM Watson,自然语言问答计算机,在 Jeopardy 上比拼!击败了两位前冠军。沃森是机器理解人类语言语境能力的重大飞跃。

source: youtube.com

CNN 的崛起

一个卷积神经网络以 99.46%的准确率(相对于人类的 99.22%)赢得了德国交通标志识别比赛。这是机器获得视觉能力的开始。

2012 年:

著名的猫 Vs 狗

杰夫·迪恩和吴恩达训练了一个由 16000 个处理器组成的大型神经网络,通过向它显示来自 YouTube 视频的 1000 万张未标记的图像来识别猫的图像(尽管没有给出背景信息)。

source: youtube.com

美国有线电视新闻网ImageNet 竞赛的艺术状态

多伦多大学研究人员设计的卷积神经网络在 ImageNet 大规模视觉识别挑战中实现了仅 16%的错误率,与前一年最佳参赛作品实现的 25%的错误率相比有了显著改善。

2013:

尼尔,永不落幕的形象学习者

永无止境的图像学习者(NEIL) 是一个 24/7 工作的计算机程序,学习关于它在互联网上找到的图像的信息。位于卡内基梅隆大学的 NEIL 并不只是寻找任何类型的信息。相反,它的目标是学习日常生活中的常识性关系。当然,这对人类来说是常识性的信息,但它早已超出了计算机的能力范围。

2014:

甘的发明

通过让神经网络相互对抗,伊恩·古德菲勒创造了一个强大的人工智能工具。现在他和我们其他人必须面对后果。给了机器想象力和创造力。

source: pathmind.com

Alexa

Amazons 虚拟助手,最早发布于 echo 和 echo dot。它能够进行语音交互,播放音乐,制作待办事项列表,设置闹钟,播放播客,播放有声读物,并提供天气,交通,体育和其他实时信息,如新闻。Alexa 还可以将自己作为家庭自动化系统来控制几个智能设备。

特斯拉自动驾驶

特斯拉汽车公司公布了其第一款自动驾驶仪。配备该系统的 S 型汽车能够根据信号图像识别进行车道控制,自动转向、制动和限速调整。该系统还提供自主停车,并可以接收软件更新,以随着时间的推移提高技能。

source: inverse.com

收购 Deepmind

谷歌以 4 亿欧元收购 deepmind ,facebook 也试图收购这家公司,但谷歌敲定了这笔交易。

我们的十年已经过去了一半,你可以看到人工智能已经开始产生很大影响,科技巨头们正在该领域进行大量投资。让我们看看在这个十年的后五年我们会有什么惊喜。

2015:

张量流释放

谷歌开源了其深度学习框架 Tensorflow ,这可以被认为是重要的时刻之一,因为它给了每个人构建伟大模型的工具。TensorFlow 是一个机器学习的端到端开源*台。它有一个全面、灵活的工具、库和社区资源的生态系统,让研究人员推动 ML 的最新发展,开发人员轻松构建和部署 ML 驱动的应用程序。

Facenet 论文

谷歌发布了关于人脸识别的论文 Facenet ,这标志着面向广大用户的人脸识别的开始。

在 Imagenet 中击败人类

在第六届 ImageNet 大规模视觉识别挑战赛上,微软和谷歌机器在图像识别方面击败了人类。这些机器超越了人类,因为深度学习算法使它们能够识别 1000 多种类别的图像和物体。这些算法源自各种版本的模拟人脑工作方式的人工神经网络。这一令人兴奋的新突破允许智能系统自动执行需要识别物体或人的任务,然后根据该识别决定如何进行。

开启 AI 创立

OpenAI 是一个研究人工智能领域的非营利组织,由埃隆·马斯克(Elon Musk)创立。它主要在深度强化学习领域发挥作用。

Yolo 纸

YOLO(你只看一次),一种新的物体检测方法。先前关于对象检测的工作重新利用分类器来执行检测。但 YOLO 是一个单一的神经网络,在一次评估中直接从完整的图像预测边界框和类别概率。由于整个检测管道是单个网络,因此可以直接对检测性能进行端到端优化。

source: Hackernoon.com

2016:

AlphaGo 击败世界冠军:

谷歌 DeepMind 的 AlphaGo 五次中有四次击败了世界冠军 Lee Sedol。围棋比国际象棋或西洋跳棋要复杂得多,它拥有巨大的棋盘、多样的策略和*乎无限的走法,除了人类的智慧之外,它从来就不意味着能被任何东西掌握。

source: youtube.com

TPU 被释放:

一个张量处理单元(TPU) 是 Google 专门为神经网络机器学习开发的 AI 加速器专用集成电路(ASIC)。这是在谷歌 IO 中透露的。正是硬件推动了谷歌的突破性技术。

索菲亚

索菲亚是由香港汉森机器人公司开发的一款社交人形机器人。索菲亚可以模仿人类的手势和面部表情,能够回答某些问题,并就预先确定的话题进行简单的对话。

source: businessinsider.com

释放 PyTorch:

PyTorch 是基于 Torch 库的开源机器学习库,用于计算机视觉、自然语言处理等应用。它主要由脸书人工智能研究实验室(FAIR)开发。它是在修改后的 BSD 许可下发布的免费开源软件。尽管 Python 接口更加完善并且是开发的主要焦点,PyTorch 也有 C++接口。

谷歌助手发布:

谷歌发布了自己的虚拟助手,与 Alexa 和 Siri 竞争。智能音箱使用人工智能作为“个人助理”,帮助用户通过语音记住任务、创建约会和搜索信息。

2017:

AlphaZero

继 2016 年击败最佳人类围棋选手后,AlphaGo 在一年后升级为更强大的通用化身, AlphaZero 。除了基本的游戏规则,AlphaZero 在没有任何人类指导的情况下,在短短四个小时内学会了如何独自玩大师级的国际象棋。然后,它在一场 100 局的比赛中击败了斯托克菲什(顶级人工智能国际象棋选手)——一局未输。

人工智能语言

脸书人工智能研究实验室训练了两个对话代理人(聊天机器人)互相交流,以学习如何谈判。然而,随着聊天机器人的交谈,它们脱离了人类语言(用英语编程),发明了自己的语言来相互交流——在很大程度上展示了人工智能。

ONNX

脸书和微软联手实现人工智能框架互操作性,这两家科技巨头在合作伙伴社区(包括 AWS、英伟达、高通、英特尔和华为)的帮助下,开发了开放神经网络交换(ONNX) ,这是一种表示深度学习模型的开放格式,也允许模型在一个框架中训练,并转移到另一个框架进行推理。

source: https://microsoft.github.io/

变形金刚 :

Transformer 是一个深度机器学习模型,主要用于自然语言处理(NLP)领域。像递归神经网络(RNNs)一样,转换器被设计为处理有序的数据序列,如自然语言,用于各种任务,如机器翻译和文本摘要。然而,与 rnn 不同,变压器不要求按顺序处理序列。因此,如果所讨论的数据是自然语言,转换器在处理句子结尾之前不需要处理句子的开头。由于这个特性,Transformer 在训练期间允许比 RNNs 更多的并行化。

2018:

剑桥分析丑闻:

脸书-剑桥分析公司数据丑闻是 2018 年初的一个重大政治丑闻,当时剑桥分析公司被披露在未经同意的情况下收集了数百万人的脸书个人资料,并将其用于政治广告目的。我们从这个问题中得到的一个好处是,人们开始知道他们的数据的重要性和安全性。

source: thegardian.com

1000 万英里乘 waymo

Waymo 正在打造世界上最有经验的司机,在公共道路上的自动驾驶里程超过 1000 万英里,模拟驾驶里程接* 70 亿英里。发现他们一路上看到和学到的东西,从我们前进道路上的文字曲线球,到低能见度沙尘暴的导航,以及更多意想不到的场景。

deep fakes:

Deepfakes 是一种媒体,它利用人工神经网络将现有图像或视频中的一个人替换成另一个人的肖像。他们经常使用被称为自动编码器和生成对抗网络(GANs)的机器学习技术将现有媒体组合和叠加到源媒体上。

source: miro.medium.com

AlphaFold:利用 AI 进行科学发现

AlphaFold ,建立在使用大量基因组数据预测蛋白质结构的多年前期研究基础上。AlphaFold 生成的蛋白质 3D 模型比以前的任何模型都要精确得多——在生物学的核心挑战之一上取得了重大进展

伯特

谷歌开发了 BERT ,这是第一个双向、无监督的语言表示,可以通过迁移学习用于各种自然语言任务。

2019:

用机械手解魔方

OpenAI 成功训练了一只名为 Dactyl 的机器人手,它在解魔方 d 中适应了真实世界的环境。机器人完全在模拟环境中训练,但能够成功地将知识转移到新的环境中。为了提高灵活性,OpenAI 使用了自动域随机技术,并提高了手解魔方的能力。虽然 Dactyl 解决了立方体问题,但关键是能够在机器人未经训练的环境中提供结果。

Deepfakes 检测挑战

Deepfake 检测挑战赛邀请世界各地的人们建立创新的新技术,帮助检测 deep fake 和被操纵的媒体。识别被操纵的内容是一项技术要求很高且快速发展的挑战,因此各公司正在合作开发更好的检测工具。挑战的组织者是 AWS、BBC、CBC、脸书、初稿、微软、纽约时报、WITNESS 和 XPrize。

Tensorflow 2.0 发布

TensorFlow 2 专注于简单易用,拥有急切执行、直观的高级 API、在任何*台上灵活建模等更新。TF 2.0 的开发考虑到了 Keras。与 TensorFlow 1.x 中默认的静态图形不同,它有动态图形。

source: tensorflow.org

比医生更能发现肺癌的 AI

谷歌研究人员最*与西北医学合作,创造了一个比人类放射科医生更准确地检测肺癌的人工智能系统。一种深度学习算法被用来训练这个系统,它解释计算机断层扫描(CT)扫描,以预测一个人患疾病的可能性。

项目通过 IP 连接家庭

苹果、谷歌和亚马逊正在合作开发一个开源智能家居标准,旨在确保设备协同工作,使新设备的开发更容易,并在此过程中保持一切安全。它的许多董事会成员,包括宜家、三星 SmartThings 和飞利浦 Hue 背后的公司 significance。

OpenAI 一款电竞游戏的五个世界冠军

DOTA 2 不是个人的游戏,它由一个五人团队组成。因此,重要的是人工智能能够与团队中的其他人工智能协调。 OpenAI Five 在总决赛中背靠背战胜 Dota 2 世界冠军 OG,成为第一个在电竞游戏中击败世界冠军的 AI。

source: openai.com

可交代艾

我们允许人工智能做出关键决定,在目前的场景中,理解人工智能做出的决定对我们来说很重要,它不应该再是黑盒了。许多公司发布了服务,允许企业强调导致其机器学习模型结果的主要因素。这是第一次,公司能够清除云,并深入了解黑匣子的工作方式。尽管人们还不能从模型中获得结论的所有方面,但它在民主化人工智能中有着更突出的作用。

十年总结

你可以看到人工智能对这十年的影响,大多数是积极的影响,但很少对社会产生负面影响。人工智能本身没有好坏之分,它是一项技术,它取决于我们人类是否将它用于正确的事业。

人工智能的未来

人工智能的发展似乎不会很快放缓。人工智能冬天现在似乎不会再发生了。随着该领域数据、计算和研究的增加,人工智能正在快速发展。有一件事是肯定的,人工智能会一直存在,你不能逃避它,所以我们最好适应和它比赛。我们可以想象未来有联网汽车带我们去各个地方,有比任何人都了解我们的虚拟助手,无人驾驶飞机在订购后一小时内交付产品,可能性是无限的。有一天我们可能会达到人工智能。

推进他们在人工智能的伦理、人工智能的偏见和人工智能的民主化方面必须回答的许多问题。政府和公司需要一起制定法律来管理人工智能的发展。我们正在建设未来,让我们确保为每个人建设未来。

感谢阅读这篇博客,我希望它让你对人工智能在过去十年的发展有了一个大致的了解。博客上有很多链接,你可以在那里探索每个事件的更多信息。如果你想对任何事件进行更多的讨论,请在下面留下评论。我祝愿你们都有一个令人敬畏的十年,让我们看到我们在这十年中共同跨越的界限。

您可以在上连接

推特: suryamaithreyan

邮件 ID:suryamaithreyan@gmail.com

领英:迈特瑞恩·凯萨万

深度音乐可视化:用声音探索比根的潜在空间

原文:https://towardsdatascience.com/the-deep-music-visualizer-using-sound-to-explore-the-latent-space-of-biggan-198cd37dac9a?source=collection_archive---------5-----------------------

人工智能艺术家、视觉骑师、联觉者和心理学家的工具。

A deep musician

A deep music video

想做一个有深度的音乐视频?把你的思想放在比根身上。由布洛克等人(2018) 在谷歌开发的 BigGAN 是生成对抗网络(GANs)的简史中的最*一章。gan 是由两个竞争的神经网络训练的人工智能模型:一个生成器基于从一组示例图像中学习的统计模式创建新图像,一个鉴别器试图将图像分类为真实或虚假。通过训练发生器欺骗鉴别器,甘人学会了创造逼真的图像。

BigGAN 被认为是大的,因为它包含了在数百个谷歌 TPU 上训练的超过 3 亿个参数,估计花费了 6 万美元。结果是一个人工智能模型,它从 1128 个输入参数中生成图像:

I)对应于 1000 个 ImageNet 类或对象类别的权重{0 ≤ 1}的 1000 单位类向量

ii)128 单位的噪声向量的值{-2 ≤ 2},控制输出图像中对象的视觉特征,如颜色、大小、位置和方向。

花瓶类中,除了 1 以外的 0 的类向量输出一个花瓶:

在不改变噪声向量的情况下在类别之间进行插值揭示了潜在空间中的共享特征,如人脸:

随机向量之间的插值揭示了更深层次的结构:

如果你感兴趣,加入艺术家、计算机科学家和神秘动物学家在这个陌生前沿的探险。像art breader这样的应用程序已经为创建人工智能艺术品提供了简单的界面,当一些用户忙于搜索蒙娜丽莎时自主人工艺术家出现了。

其他人给比根配乐。

这些“深度音乐视频”获得了不同的反应,在美丽、迷幻、恐怖之间变化。*心而论,明智的做法是害怕潜伏在潜在空间中的东西…

还有哪些不太可能的嵌合体、神秘的生物、无价的艺术品和熟悉的梦居住在比根?为了找到答案,我们需要覆盖更多的区域。这就是为什么我建立了 deep music visualizer,一个开源的,易于使用的工具,用声音导航潜在的空间。

一艘隐形飞船,带蓝牙。

带着它转一圈,一路上创作一些很酷的音乐视频。一定要分享你的发现。

教程:使用深度音乐可视化工具

克隆 GitHub 库,并遵循自述文件中的安装说明。

[## msieg/深度音乐可视化工具

深度音乐可视化器使用 BigGAN (Brock et al .,2018),一种生成神经网络来可视化音乐。像这样…

github.com](https://github.com/msieg/deep-music-visualizer)

在您的终端中运行以下命令:

python visualize.py --song beethoven.mp3

就是这样。以下是输出结果:

这是怎么回事?deep music visualizer 将 pitch 与类向量同步,将音量和速度与噪声向量同步,这样 pitch 控制每一帧中的对象、形状和纹理,而音量和速度控制帧之间的移动。在歌曲的每个时间点,十二个半音音符的色度图确定类别向量中多达十二个 ImageNet 类别的权重{0 ≤ 1}。独立地,音量(主要是打击乐)的变化率控制噪声矢量的变化率。

视频定制

解决

  • 128、256 或 512
  • 默认值 : 512

比根很大,因此很慢。如果你在笔记本电脑上运行第一个例子,大概需要 7 个小时来渲染。分辨率为 128x128,只需 25 分钟(每分钟视频)。

python visualize.py --song beethoven.mp3 --resolution 128

然而,我建议你通过在 google cloud 上启动虚拟 GPU 来生成高分辨率视频,从而将运行时间从大约 7 个小时大幅缩短到几分钟。虽然它不是免费的,但谷歌会奖励新用户 300 美元的积分,而 GPU 的费用是每小时 1 美元。

持续时间(秒)

  • 整数≥ 1
  • 默认:音频全长

在测试一些其他输入参数时,生成较短的视频以限制运行时间可能是有用的。

音高敏感度

  • 范围:1–299
  • 默认 : 220

音高敏感度是类别向量对音高变化的敏感度。在更高的音高敏感度下,视频中的形状、纹理和对象变化更快,并且更精确地符合音乐中的音符。

速度敏感度

  • 范围:0 ≤ 1
  • 默认值 : 0.25

速度敏感度是噪声向量对音量和速度变化的敏感度。更高的速度敏感度产生更多的运动。

在本例中,由于音高敏感度较高,类与音高紧密相关,但由于速度敏感度较低,整体运动很少。

python visualize.py --song moon_river.mp3 --duration 60
--pitch_sensitivity 290 --tempo_sensitivity 0

在本例中,由于音高敏感度较低,类别混合几乎没有变化,但由于速度敏感度较高,整体移动较多。

python visualize.py --song moon_river.mp3 --duration 60
--pitch_sensitivity 10 --tempo_sensitivity 0.6

民数记班

  • 1–12
  • 默认 : 12

减少类的数量以混合更少的对象。

班级

  • 多达 12 个索引{ 0–999 },对应于 1000 个 ImageNet 类
  • 默认:12 个随机指数

您可以选择要在视频中包含哪些课程。这些类别按照半音顺序(A、A#、B…)与音高同步。

或者,如果您喜欢按优先顺序输入类,则将 sort_classes_by_power 设置为 1。

在这个例子中,视频包括雏菊 (#985)和水母 (#107),但其中雏菊水母多:

python visualize.py --song cold.mp3 --duration 10 
--pitch_sensitivity 260 --tempo_sensitivity 0.8 --num_classes 2 
--classes 985 107 --sort_classes_by_power 1

帧长度

  • 64 的倍数
  • 默认: 512

帧长度是每个视频帧中音频样本的数量。默认帧长度为 512,视频帧速率约为 43 fps。减少帧长度会增加帧速率,因此图像会更频繁地更新(但视频会花费更长的时间来渲染)。这对于可视化快速音乐非常有用。

python visualize.py --song T69_collapse.mp3 --duration 30 --num_classes 4 --classes 527 511 545 611 --sort_classes_by_power 1 
--frame_length 128

我希望你觉得这个教程很有趣,内容丰富。如果你想表达感谢,发推特给我一个你用这段代码创作的深度音乐视频!

你可以在这里找到更多我的视频。

开放式问题

未来项目

  • 构建一个实时响应现场音乐的可视化工具。
  • 使用自然语言处理基于与歌词(或有声读物)的语义关联来自动选择 ImageNet 类。
  • 在 fMRI 中向人们播放音乐,并将类别和噪声向量与神经活动相结合,以创建来自大脑的深度音乐视频。
  • 所有这些同时发生吗?

参考

[1] A. Brock,J. Donahu 和 K. Simonyan,高保真自然图像合成的大规模 GAN 训练(2018),第八届学习表示国际会议。

[2] N. Kriegeskorte,深度神经网络:生物视觉和大脑信息处理建模的新框架(2015),视觉科学年度评论。

创建具有行业要求和约束的学术级数据集的明确指南

原文:https://towardsdatascience.com/the-definite-guide-for-creating-an-academic-level-dataset-with-industry-requirements-and-6db446a26cb2?source=collection_archive---------16-----------------------

创建您自己的数据的指南,并附有有价值的信息,以帮助您做出关键决策。

Teenagers playing football, Ipanema beach, Rio De Janeiro, Brazil. Ektar 100 Film, by Ori Cohen.

在下面的文章中,我将讨论开始一个研究项目的过程,在这个项目中,一个新的全监督分类模型需要一个学术级别的数据集,如斯坦福大学和其他学术机构共享的数据集。我将分享我们做出的决定,我们创建和购买的工作流程和工具。请记住,即使本指南围绕一个特定的研究,我们在情感分类这个主题上做的许多研究之一,你也可以用它来概括许多其他的研究。但首先,让我们谈谈情感分类,以及我们 (Zencity )需要在公司内部开发一个创建学术级数据集的管道的原因。

情感分类是一个经典的任务,已经被研究、讨论和撰写了很长时间。在内部,我们使用了 VADER ,这是一种已知的情绪算法,使用专门调整的规则和词汇来理解社交媒体情绪。该算法在附加规则方面得到了改进,词典扩展了数千个单词,以支持一年内与城市相关的社交媒体内容。使用我们改进的算法,我们测量的准确率为 89.5%。然而,随着公司的发展,我们对客户需求的理解也发生了变化。因此,我们希望开发一个情感定义和一个新的算法,可以帮助我们更好地根据客户的感受来表达情感的概念。我们还需要保持非常高的精确度,这反过来使我们能够为城市提供可操作的见解。例如,通过使用 VADER,任何带有“警告”一词的帖子都可能被归类为负面情绪。然而,警报不一定是负面的。对于城市,警报可以是中性的,例如交通警报。此外,由于业务限制,到目前为止,每个样本都是由一个人在一本解释什么是城市情感的 4 页代码书的指导下进行标记的。

该项目的要求是了解情感分析的最新水*,以便设定基线,以及生成新数据集的适当标准和工作流程。我们希望根据推荐的最佳实践创建一个新的与城市相关的情绪定义,以简化手动注释的过程,训练并最重要的是验证新模型,并实现非常高的准确度和精确度,特别是对于新的“负面”类,这对于我们的客户非常重要。

基线

那么,社交媒体情感分类的最新水*(SOTA)是什么呢?最*在 ACM Transactions on Management Information Systems 上发表的一篇评论和基准评估文章,在 5 个独特的 Twitter 数据集上对 28 个顶级学术和商业系统进行了基准测试,显示跨系统和领域的总体*均情感分类准确率为 61%。最高测量精度为 76.99%,如图 1 所示。在另一项研究中,使用深度学习(图 2),我们看到高达 87.5%的分类准确率。这些数字让我们对什么是 SOTA 有了一个相对清晰的了解,在不同的领域使用不同的算法不会产生相同的结果。

Figure1: sentiment analysis results using 28 algorithms on 5 distinct datasets

Figure 2: sentiment analysis results using machine and deep-learning algorithms using binary and 5-class sentiment-based datasets.

标准和工作流程

回顾相关文献,学术级注释项目的重点似乎是:

  1. 按职位多数表决。
  2. 简单的定义和简短的任务描述。
  3. 定期测量注释者的表现和注释者之间的一致性。
  4. 适当采样并创建数据集。
  5. 小心选择注释解决方案
  6. 使用一个简单的注释界面来帮助注释者专注于一个简单明了的任务。

按样本多数投票

决定基于多数投票的项目是重要的第一步,这是任何注释项目的关键点,因为它增加了项目性质的复杂性。复杂性,比如在额外的注释器上花费更多的钱,创建一个支持多个注释器的基础设施,开发跟踪进度的脚本,以及在日常分析中投入时间,以确保每个注释器都在正轨上。我们不希望单个注释者影响我们的新数据集,给它添加偏见或引入噪声。例如,共享同一个房间的注释者可以影响他们自己,如果他们在相互交谈时重新解释指令的话。一个注释者可能在某一天醒来,完全改变了他们的方法,因此,拥有一个监控机制并在这种情况发生时微调他们的理解是明智的。

简单的定义和简短的任务描述

我们还想更换我们的 4 页说明书。我们的想法是决定一个新的与城市相关的情感定义,专注于我们客户的需求,并创建一个非常简短的任务描述,即新情感的单行定义和少于半页的说明。最终的定义是“居民对城市中发生的任何事情满意(积极)或不满意(消极)的表示”,如图 3 所示。

Figure 3: the new sentiment definition and annotator instructions.

如你所见,定义非常清晰,说明也很简短。我们可以在下面的例子中看到,中性的例子在古典情感方面可能被认为是负面的,然而,根据新的定义,它是中性的。作者没有明确地说他们对他们所写的问题是否满意。请注意,反面和正面的例子明显遵循新的定义。

中立:贝赛尔县大陪审团周二决定起诉前圣安东尼奥警官,他被指控在他当时的女友公寓外用石头殴打她

消极 : 不冷静。偷包裹的人已经在圣诞老人的淘气名单上了。这家伙从 X 巷 9999 街区的一户人家拿走了一个包裹。如果你认识他,请联系侦探。布兰科,电话 999–999–99999,或发电子邮件至

正面消息:阿灵顿警察局很自豪地雇佣了许多现任和前任美国军人。我们感谢他们的服务,我们很荣幸他们选择为我们部门工作。

衡量绩效和一致(或不一致)

在项目期间,我们需要测量几个度量标准,以便理解和控制注释过程的各个方面。衡量标准包括:

  1. 自我认同,这有助于我们识别低质量的注释者。我们通过每 K 个样本插入重复的帖子来做到这一点。
  2. 相互一致,这是对任务的客观难度的一个很好的估计。对于多注释者,我们使用 Fleischer 的 Kappa,对于两个注释者,我们使用 Cohen 的 Kappa。对我们来说,高于 0.55 的值被认为是一个好的估计值。
  3. 所有注释者之间的一致百分比。这是相互一致性的另一个估计值,对我们来说,值 0.65 与 Fleischer 的 kappa 高度相关,被认为是相互一致性的良好估计值。
  4. 事实验证。我们使用相同的多数投票程序,将我们内部标记的样本插入数据集。请记住,因为我们创建了新的定义,所以我们是专家,因此,如果我们针对一个小的标记良好的数据集来度量每个注释者,我们可以看到注释者是否同意我们的观点。

请注意,我们可以创建和测量许多其他指标,但这些对我们来说已经足够了。它们帮助我们了解每个标注者每天是否可以使用新标注的数据,以及我们是否需要调整标注者对新标注方案的理解。您可以使用下面的来度量注释者之间的分歧。

采样

现在我们知道了要测量什么,我们需要创建数据集,这是许多决策对最终数据集质量有贡献的另一点。出现了几个问题:

  1. 要采样的数据。
  2. 何时遵循哪种抽样分布?
  3. 使用哪种采样算法。
  4. 要多少样品?

在我们的例子中,我们决定对已经标记的人类认可的数据进行采样,当然,我们不使用标签本身。我们知道最好的选择是遵循每个用例的分布。以下是对我们有用的几个指导原则,它应该为您自己的数据提供一个良好的开端:

1.地面真实样本应每班统一取样。想象一下,在一个类中只有很少的样本,也就是说,您让一个类挨饿,对于一个非常小的样本,您永远无法确定您的注释器在那个类中的表现有多好。

2.应根据生产数据的分布方式对主数据集进行采样,这将允许您的模型学习相同的分布。

请记住,如果您觉得这些规则不符合您的要求、数据或不适合您的需求,应该对它们进行更改。

创建数据集

既然我们已经知道了要采样的数据以及应该遵循的分布,那么就该决定如何进行采样了。您可能会想到许多简单或更复杂的方法,但我们尝试的基本方法有:

1.使用关键字——由了解该领域的人定义。

2.使用算法-它可能是现成的算法,是您可以轻松创建的快速算法,或者是从您的领域附*的数据集进行某种迁移学习。在我们的例子中,我们采用了一个用户评论的数据集,这个数据集与我们的领域有些相似,我们选择了被标为最积极和最消极的评论,并用它们来训练样本选择分类器。

两种方法都很有效。然而,在我们的例子中,关键字方法似乎产生了更好的结果。

现在是时候决定我们项目需要的样品数量了。显然,我们拥有的越多,我们的模型就越好。我发现了一个很好的计算器,如表 1 所示,它最初是为调查而创建的,帮助我估计已知人口规模和您想要保持的置信水*所需的样本数。在我们的例子中,对于 100,000 个不同作者的估计人口规模,置信度为 95%,大约 10,000 个样本就足够了。样本的数量直接影响我们的预算和算法的选择。假设我们有 5 个注释器,每个注释器需要 10,000 个样本,我们总共需要 50,000 个带注释的样本。在某些服务中,正如我们将在后面看到的,这相当于一大笔钱。幸运的是,我的公司愿意投入资金、时间和精力来构建这些数据集。我们知道,高质量的带注释的数据集直接有助于更好、更准确的模型,并最终有助于我们为客户提供价值。样本的数量也会影响我们对算法的选择,在我们的案例中,我们尝试了经典的机器学习和深度学习算法。然而,对于我们尝试的所有深度学习算法来说,我们的数据集似乎仍然很小。

Table 1: sample size calculation for a set population size based on a confidence level.

注释解决方案

有许多注释解决方案可供选择,有些比其他的便宜,有些会给你一个完整的解决方案,而其他的只会给你基础设施或人群。然而,各有利弊。首先,我将列出几个已知的,然后我们将深入几个值得注意的。您可以选择以下服务之一 1。亚马逊的机械土耳其人(AMT) ,2。八字(人群花)3。众包/劳动力/ Onespace ,5。勤杂工,6。 Samasource ,7。外包。此外,您可以选择或以下工具之一:1 . Lighttag.io 2神童 3。乳臭未干的小子

下面(表 2)代表了我对总共 50,000 个注释的初步计算。我选择比较 AMT、premium 和外包公司,因为它们代表了我们可用的服务和工具。

Table 2: various features for each annotation solution

如你所见,这是我们有多少选择的另一个好例子。总的来说,AMT 是最便宜的选择,你可以使用计算器来计算出你要花多少钱,但是请记住,如果你为每项任务支付基本的 1 美分,你可能不会被任何注释者选中。就可靠性而言,许多研究人员告诉我,这是一种赌博,即使你支付了额外费用。没有什么是可以保证的,因为任何人都可以为 AMT 工作。值得注意的是,文档是混乱和不清楚的,如果你想使用外部工具,你需要一个数据工程师来帮助你。最后,实验是完全管理的,你对过程的控制取决于你自己。

另一方面,高级服务与您合作管理几乎所有的事情。然而,一些人声称他们经历过注释,他们通过承诺超过 80%的真实可信来保持“信任”。您向他们提供您的任务描述,他们训练注释者,直到您对结果满意为止。

两全其美的方法可能是外包给外部注释公司,他们有全职员工,你可以定期与他们交流。他们有裁员计划,也就是说,如果一个员工生病了,其他人会代替他们。然而,你必须签署合同,并承诺雇佣他们一段时间,一旦开始,你就不能停下来。如果想获得最佳结果,还必须开发或提供注释的解决方案。

标注工具:

我找到了几个现成的注释工具,但最有前途的是 Brat 和 Prodigy。Brat 是开源的,似乎很少维护,它主要适合类似于 POS 或 NER 的任务。另一方面,Prodigy 对单个商业用户来说相对便宜(390 美元),拥有无限的注释器和终身许可,并且适用于 web 和智能手机。我们选择 prodigy 是因为它使用简单,高度可配置,并且在“工厂”模式下工作,专注于单一的超高速键盘快捷键。值得注意的是,prodigy 支持单用户主动学习,但是,如果您计划进行多用户主动学习,您将不得不在所有标注器之间进行同步,而这个特性还不存在。此外,不存在“用户”的概念,因此,支持管理一组注释者并将他们的工作保存到单个数据库需要一个数据工程师。Prodigy 还缺乏性能监控,并且缺少文档。然而,在他们的论坛上有积极的支持,这是一个巨大的优势。图 4。展示了 prodigy 的界面,它简单易用,允许注释者以最少的干扰专注于他的任务,即“工厂风格”。

Figure 4: Prodigy’s user interface.

成绩:

我们的项目产生了 14,000 个多数投票的样本,这意味着我们的注释者标记了大约 75,000 个帖子,超过了我们预期的每人 10,000 个帖子。在图 5 中,我们显示了 inter-agreement 和 Fleischer 的 Kappa 之间的相关性,每个都有自己的阈值。阈值有助于确定每日数据是否可信,以及我们是否应该将它包含在最终数据集中。

在图 6 中,我们看到,与注释者每天所做的量相比,基本事实度量之间存在着有意义的关联,我们看到,他们做得越少,基本事实的准确性就越高。我们还可以在图 7 中看到团队在整个时间内的*均地面实况准确性。我们选择了 70%的一致值,这将考虑到地面实况准确性不会是完美的 100%的各种原因,其中一个主要原因是一些地面实况帖子具有依赖于单一投票的多数,即 2:3 对 3:2,并且可能是地面实况中的错误。然而,这是一个过程,这就是为什么我们有门槛。

Figure 5: a correlation between Inter-agreement and Fleischer Kappa, showing the threshold we chose for keeping the daily annotated data.

Figure 6: a comparison of sample count vs ground truth accuracy

Figure 7: average annotators accuracy throughout time

使用最终数据集,我们使用各种方法(如 TF-IDF、LSA、W2V、深莫吉和 ELMO)创建要素,并使用反向翻译等方法扩充数据。我们训练了相当多的分类算法,例如校准的 SGD、ULMFit、Random Forest、XGboost、LightBoost、Catboost、LSTM、1DCNN,还堆叠了其中的几个。

我们最高的交叉验证模型使用 TF-IDF &校准的 SGD (SVM)实现了 89% 的准确率,如表 3 所示。

Table 3: precision and distribution figures for each class.

数据分析:

我们对来自美国 22 个城市的 245,469 个样本进行了测试。负面情绪下降了 6%,正面情绪下降了 19%,中性情绪上升了 25%,如图 8 所示。我们预计这些数字会根据新的定义发生变化,我们有效地从不相关的样本中清除了消极和积极的类别,例如类似“警报”的帖子、事故、交通、紧急情况等,这些现在属于中性类别,除非用户不满意出现在帖子中。

Figure 8: distribution statistics for the old sentiment vs the new sentiment

回过头来看,这个过程效果很好,我们发现了一个为我们创建高质量数据集的工作流程。请注意,我们训练的模型仅在单个时间点有效,必须定期重新训练。为此,我推荐使用具有相同多数投票过程的多注释者主动学习。然而,我们的旅程还没有结束,我们仍然需要在生产就绪环境中分析和验证该模型,并确保它符合我们客户的期望。

我要感谢来自 Zencity 的同事,他们是这个项目的重要组成部分:Samuel Jefroykin(研究)、Polina Sklyarevsky(新定义和数据)、Alon Nisser(工程)、Yoav Talmi、Eyal Feder-Levy、阿娜特 Rapoport、Ido Ivry 和 Gali Kotzer。我还要感谢我在开始这个项目之前咨询过的几位朋友和同事,Orgad Keller 博士、Eyal Shnarch 博士、Hila Zarosim 博士和 Netanel Davidovits。

Ori Cohen 博士拥有计算机科学博士学位,专注于机器学习。他领导着 Zencity.io 的研究团队,试图积极影响市民的生活。

双向注意力流动图解指南

原文:https://towardsdatascience.com/the-definitive-guide-to-bi-directional-attention-flow-d0e96e9e666b?source=collection_archive---------5-----------------------

BiDAF 的权威指南——第 1 部分,共 4 部分

本文展示了 BiDAF 的工作方式,BiDAF 是一个 NLP 模型,它在问答领域取得了突破。

Source: Unsplash

华盛顿大学的一个团队在 2016 年发表了 BiDAF。BiDAF 轻而易举地击败了当时最好的 Q & A 模型,并连续几周在斯坦福问答数据集(SQuAD) 的排行榜上名列榜首,这可以说是最知名的 Q & A 数据集。尽管 BiDAF 的性能已经被超越,但这种模式在问答领域仍然很有影响力。BiDAF 的技术创新激发了竞争车型的后续发展,如 ELMoBERT ,最终 BiDAF 被淘汰。

当我第一次阅读 BiDAF 的原始论文时,我被它的复杂程度所震惊。

BiDAF 展示了一个模块化的架构——把它想象成一个由乐高积木组成的复合结构,积木是“标准”的 NLP 元素,如 GloVe、CNN、LSTM 和 attention 。理解 BiDAF 的问题是有太多的这些模块需要学习,它们的组合方式有时看起来相当“杂乱”。这种复杂性,加上原始论文中使用的令人费解的符号,成为理解该模型的障碍。

在本系列文章中,我将解构 BiDAF 是如何组装的,并以(希望)易于理解的方式描述 BiDAF 的每个组件。将提供大量的图片和图表来说明这些组件是如何组合在一起的。

计划是这样的:

  • 第 1 部分(本文)将提供 BiDAF 的概述。
  • 第二部分会讲到嵌入层
  • 第三部分会讲到注意层次
  • 第四部分将会谈到建模和输出层。它还将包括用非常简单的语言介绍的整个 BiDAF 架构。如果您对技术不感兴趣,我建议您直接跳到第 4 部分。

BiDAF 相对于其他 Q & A 车型

在深入研究 BiDAF 之前,让我们先把它放在更广阔的问答模型中。有几种方法可以对问答模型进行逻辑分类。以下是其中的一些:

  • 开域 vs 闭域。一个开放域模型可以访问一个知识库,它将在回答一个传入的查询时利用这个知识库。著名的 IBM-Watson 就是一个例子。另一方面,封闭形式的模型不依赖于预先存在的知识;相反,这样的模型需要一个上下文来回答一个查询。这里有一个术语的快速注释——“上下文”是一个附带的文本,包含回答查询所需的信息,而“查询”只是问题的正式技术术语。
  • 抽象的 vs 抽象的。一个抽取模型通过返回与查询最相关的上下文的子串来回答查询。换句话说,模型返回的答案总是可以在上下文中找到。另一方面, abstractive 模型走得更远:它在将子串作为查询的答案返回之前,将其解释为一种更易于阅读的形式。
  • 能够回答非陈述性问题。 仿真陈述查询是其答案是简短事实陈述的问题。大多数以“谁”、“哪里”和“何时”开头的查询都是仿真陈述,因为它们期望得到简洁的事实作为答案。非仿真陈述查询,简单来说就是所有非仿真陈述的问题。非仿真陈述阵营非常广泛,包括需要逻辑和推理的问题(例如,大多数“为什么”和“如何”的问题)以及涉及数学计算、排名、排序等的问题。

那么 BiDAF 在这些分类方案中处于什么位置呢?BiDAF 是一个封闭领域的抽取式 Q 模型,它只能回答仿真问题。这些特征意味着 BiDAF 需要一个上下文来回答一个查询。BiDAF 返回的答案总是所提供的上下文的子字符串。

An example of Context, Query and Answer. Notice how the Answer can be found verbatim in the Context.

另一个小提示:你可能已经注意到了,我一直在大写单词“上下文”、“查询”和“回答”。这是故意的。这些术语既有技术含义也有非技术含义,大写字母是我用来表示我是在用它们的专业技术能力来使用这些词的方式。

有了这些知识,我们现在准备探索 BiDAF 是如何构建的。让我们开始吧!

BiDAF 结构概述

BiDAF 在上下文中精确定位答案的能力源于它的分层设计。这些层中的每一层都可以被认为是一个转换引擎,由转换单词的矢量表示;每个转换都伴随着附加信息的包含。

BiDAF 论文将模型描述为有 6 层,但是我认为 BiDAF 有 3 个部分。这三个部分及其功能简述如下。

1。嵌入层

BiDAF 有 3 个嵌入层,其功能是将查询和上下文中的单词的表示从字符串转换为数字向量。

2。注意力和建模层

这些查询和上下文表示然后进入关注和建模层。这些层使用几个矩阵运算来融合查询和上下文中包含的信息。这些步骤的输出是包含来自查询的信息的上下文的另一种表示。这个输出在本文中被称为“查询感知上下文表示”

3。输出层

然后,查询感知上下文表示被传递到输出层,输出层将将其转换为一组概率值。这些概率值将用于确定答案的起点和终点。

描述 BiDAF 架构的简图如下:

Architecture of BiDAF. Source: author

如果这些都还没有意义,不要着急;在接下来的文章中,我将详细研究每个 BiDAF 组件。第二部再见!

参考

[1] 机器理解的双向注意力流(闵俊 Seo et。阿尔,2017)

如果你对这篇文章有任何意见或者想联系我,请随时通过 LinkedIn 给我发一个联系方式。另外,如果你能支持我通过我的推荐链接成为媒介会员,我会非常感激。作为一名会员,你可以阅读我所有关于数据科学和个人发展的文章,并可以完全访问所有媒体上的故事。

BiDAF 中的单词嵌入、字符嵌入和上下文嵌入——图解指南

原文:https://towardsdatascience.com/the-definitive-guide-to-bidaf-part-2-word-embedding-character-embedding-and-contextual-c151fc4f05bb?source=collection_archive---------1-----------------------

BiDAF 的权威指南——第 2 部分,共 4 部分

BiDAF 是一种用于问答任务的流行机器学习模型。本文展示了 BiDAF 如何使用三种嵌入机制将单词转换成它们的向量表示。

Source: Brett Jordan from Unsplash

T 他的这篇文章是一系列四篇文章中的第二篇,旨在说明 双向注意力流(BiDAF)一种流行的问答机器学习模型(Q & A)的工作原理。

概括地说,BiDAF 是一个封闭领域,抽取的 Q & A 模型。这意味着为了能够回答一个查询,BiDAF 需要查阅一个附带的文本,该文本包含回答查询所需的信息。这个附带的文本被称为上下文。** BiDAF 的工作方式是提取上下文中最能回答查询的子串——这就是我们所说的对查询的回答 。我有意将“查询”、“上下文”和“回答”这几个词大写,以表明我是在用它们的专业技术能力来使用它们。**

An example of Context, Query, and Answer. Notice how the Answer can be found Verbatim in the Context.

本系列的第一篇文章提供了 BiDAF 的高级概述。在本文中,我们将关注 BiDAF 架构的第一部分——当模型接收到一个传入的查询及其伴随的上下文时发生的第一件事。为了方便您的学习,最后提供了一个词汇表,其中包含了这些步骤中涉及的数学符号。让我们开始吧!

第一步。标记化

****在 BiDAF 中,传入的查询及其上下文首先被标记化,即这两个长字符串被分解成它们的组成单词。在 BiDAF 论文中,符号 TJ 分别用于表示上下文和查询中的字数。以下是对标记化的描述:

Step 1. The incoming Query and its accompanying Context are tokenized into their constituent words.

步骤二。单词级嵌入

产生的单词然后经过嵌入过程,在那里它们被转换成数字向量。这些向量捕捉单词的语法功能(句法和含义(语义),使我们能够对它们执行各种数学运算。在 BiDAF 中,嵌入是在三个粒度级别上完成的:字符、单词和上下文级别。现在让我们关注第一个嵌入层——单词 embedding。

原 BiDAF 中使用的单词嵌入算法是 手套 在本文中,我将只给出 GloVe 的一个简要概述,因为已经有几个优秀的资源解释了该算法是如何工作的。但是如果你时间不够,这里有一个非常简单的 GloVe 总结:

****GloVe 是一种无监督学习算法,它使用语料库中单词的共现频率来生成单词的向量表示。这些向量表示在数字上代表了单词含义的各个方面。

由于组成手套向量的数字封装了它们所代表的单词的语义和句法信息,我们可以使用这些向量做一些很酷的事情!例如,我们可以使用手套向量减法来寻找单词类比,如下所示。

Pairwise distances of concepts such as aunt-uncle and woman-man are similar. Source: Stanford's NLP Group

****BiDAF 使用预训练的手套嵌入来获得查询和上下文中单词的向量表示。“预训练”表示此处使用的手套表示已经过训练;他们的值被冻结,在训练期间不会更新。因此,您可以将 BiDAF 的单词嵌入步骤看作一个简单的字典查找步骤,我们用向量(字典的“值”)替换单词(手套“字典”的“键”)。

单词嵌入步骤的输出是两个矩阵——一个用于上下文,一个用于查询。这些矩阵的长度等于上下文和查询中的字数(对于上下文矩阵为 T ,对于查询矩阵为 J )。同时,它们的高度 d1 是预设值,等于从手套开始的向量尺寸;这可以是 50、100、200 或 300。下图描述了上下文的单词嵌入步骤:

Step 2. The word embedding step converts Context tokens into a d1-by-T** matrix and Query tokens into a d1-by-J matrix**

第三步。字符级嵌入

好了,有了 GloVe,我们得到了大多数单词的向量表示。然而,手套的表现对我们的目的来说是不够的!

预训练手套“字典”是巨大的,包含数百万个单词;然而,总有一天我们会在训练集中遇到一个单词,而这个单词不在 GloVe 的词汇表中。这样一个词被称为一个词汇外(OOV)词。GloVe 通过简单地给它们分配一些随机向量值来处理这些 OOV 单词。如果不加以纠正,这种随机分配最终会混淆我们的模型。

因此,我们需要另一种能够处理 OOV 词的嵌入机制。这就是字符级嵌入的用武之地。字符级嵌入使用一维卷积神经网络(1D-CNN),通过查看单词的字符级组成来找到单词的数字表示。****

你可以把 1D-CNN 想象成一个过程,我们有几台扫描仪一个字符一个字符地扫描一个单词。这些扫描仪可以一次聚焦几个字符。当这些扫描仪扫描时,它们从聚焦的字符中提取信息。在这些扫描过程的最后,来自不同扫描仪的信息被收集以形成单词的表示。

字符嵌入步骤的输出类似于单词嵌入步骤的输出。我们获得两个矩阵,一个用于上下文,另一个用于查询。这些矩阵的长度等于上下文和查询中的字数——TT和 J——而它们的高度取决于 1D-CNN 中使用的卷积滤波器的数量(要知道什么是“卷积滤波器”,请阅读下一节)。高度在图中表示为 d2 。这两个矩阵将与我们从单词嵌入步骤中获得的矩阵连接在一起。

Step 3. The character embedding step converts Context tokens into a d2-by-T** matrix and Query tokens into a d2-by-J matrix**

1D CNN 的更多细节

上一节只是对 1D 有线电视新闻网的运作做了一个概念性的概述。在这一部分,我将详细解释 1D-CNN 是如何工作的。严格来说,这些细节对于理解 BiDAF 的工作方式并不是必需的;因此,如果你时间不够,可以随意跳下去。然而,如果你是那种不理解你正在学习的算法的每一个运动部分就睡不好觉的人,这一节是为你准备的!

使用 1D 有线电视新闻网的想法是,不仅单词作为一个整体有意义——单词的各个部分也可以表达意义!

例如,如果你知道“低估”这个词的意思,你就会理解“错误低估”的意思,尽管后者实际上并不是一个真正的单词。为什么?因为你从你的英语知识中知道前缀“mis-”通常表示“错误的”概念;这让你可以推断出“错估”指的是“错误地低估”某件事。

1D-CNN 是一种模仿人类理解单词部分能力的算法。更广泛地说,1D-CNN 是一种能够从长输入序列的较短片段中提取信息的算法。这个输入序列可以是音乐、DNA、录音、博客等。在 BiDAF 中,这个“长输入序列”是单词,而“较短的片段”是组成单词的字母组合和词素。

为了理解 1D-CNN 是如何工作的,让我们看看下面的一系列插图,这些插图摘自 Yoon Kim 等人的幻灯片。艾尔。哈佛大学的一个小组。

  1. 比方说,我们想把 1D-CNN 应用到“荒谬”这个词上。我们做的第一件事是将单词中的每个字符表示为一个维数为 d 的向量。这些向量是随机初始化的。这些向量合起来就形成了一个矩阵 C. d 就是这个矩阵的高度,而它的长度, l 简单来说就是这个字的字符数。在我们的例子中, dl 分别是 4 和 9。

2.接下来,我们创建一个卷积滤波器H。这个卷积滤波器(也叫“内核”)就是一个矩阵,我们会用它来“扫描”单词。它的高度, d C 的高度相同,但它的宽度 w 是一个比 l 小的数。H 内的值是随机初始化的,并且将在模型训练期间被调整。

3.我们将 H 叠加在 C 的最左边,取一个 H 及其在 C 上的投影的元素式乘积(描述这个过程的一个有趣的词是取一个 HHadamard 乘积及其在 C 上的投影)。这个过程输出一个与 H 相同维数的矩阵——adxl矩阵。然后,我们将输出矩阵中的所有数字相加,得到一个标量。在我们的例子中,标量是 0.1。这个标量被设置为名为 f 的新向量的第一个元素。

4.然后,我们将 H 向右滑动一个字符,并执行相同的操作(获得 Hadamard 乘积并对结果矩阵中的数字求和)以获得另一个标量 0.7。这个标量被设置为 f. 的第二个元素

5.我们一个字符一个字符地重复这些操作,直到到达单词的末尾。在每一步中,我们给 f 增加一个元素,并延长向量,直到它达到最大长度 l - w+1。向量 f 是单词“荒谬”的数字表示,当我们一次看这个单词三个字符时获得。需要注意的一点是,卷积滤波器 H 内的值不会随着 H 滑过单词而改变。用更好的术语来说,我们称 H 为“位置不变量”。卷积滤波器的位置不变性使我们能够捕捉某个字母组合的含义,无论这种组合出现在单词的什么地方。****

6.我们在 f. 中记录最大值,这个最大值可以认为是 f. 的“汇总”,在我们的例子中,这个数字是 0.7。我们将这个数称为 f 的【汇总标量】,这个取向量 f 的最大值的过程也称为【最大池】

7.然后,我们用另一个卷积滤波器重复上述所有步骤(又一个 H !).这个卷积滤波器可能具有不同的宽度。在下面的例子中,我们的第二个 H ,标为H’,宽度为 2。与第一个过滤器一样,我们沿着H’滑过单词以获得向量 f ,然后对 f 执行最大池化(即获得其汇总标量)。

8.我们用不同的卷积滤波器重复这个扫描过程几次,每个扫描过程产生一个汇总标量。最后,收集这些不同扫描过程的汇总标量,形成单词的字符嵌入。****

这就对了——现在我们已经获得了一个基于字符的单词表示,可以补语的是基于单词的表示。1D-CNN 的这个小小的题外话到此结束;现在让我们回到 BiDAF 的话题上来。

第四步。公路网

在这一点上,我们已经为我们的单词获得了两组向量表示——一组来自手套(单词)嵌入,另一组来自 1D-CNN(字符)嵌入。下一步是垂直连接这些表示。

这种连接产生两个矩阵,一个用于上下文,另一个用于查询。他们的身高是 d ,是 d1d2 的总和。同时,它们的长度仍然与它们的前任矩阵相同(对于上下文矩阵为 T ,对于查询矩阵为 J )。

Step 4. The concatenated matrices from the word embedding and the character embedding steps are passed into a highway network

****这些矩阵然后通过所谓的高速公路网。高速公路网络非常类似于前馈神经网络。你们可能已经熟悉前馈神经网络了。提醒您,如果我们将输入向量 y 插入到单层前馈神经网络中,在产生输出 z 之前会发生三件事:

  1. y 将乘以 W ,即该层的权重矩阵
  2. 偏置量 b 将被加到 W*y
  3. *非线性函数 g ,如 ReLU 或 Tanh 将被应用于 Wy + b

在高速公路网络中,只有一小部分输入将经过上述三个步骤;剩余部分被允许不经转换地通过网络。**这些分数的比率由 t 转换门和 1-t 进位门管理。使用 sigmoid 函数计算 t 的值,该值始终在 0 和 1 之间。现在,我们的等式变成如下:

在退出网络时,输入的变换部分与其未变换部分相加。

****高速公路网络的作用是调整单词嵌入和字符嵌入步骤的相对贡献。逻辑是,如果我们正在处理一个 OOV 单词,比如“错误低估”,我们会想要增加该单词的 1D-CNN 表示的相对重要性,因为我们知道它的手套表示很可能是一些随机的乱码。另一方面,当我们在处理一个常见的、明确的英语单词时,比如“table ”,我们可能希望 GloVe 和 1D-CNN 做出更多的贡献。

高速公路网络的输出也是两个矩阵,一个用于上下文(a d -by- T 矩阵)T5),一个用于查询(a d -by- J 矩阵)。它们表示查询中单词的调整后的矢量表示,以及单词和字符嵌入步骤中的上下文。****

第五步。上下文嵌入

原来这些表象对于我们的目的还是不够的!问题是这些单词表示没有考虑单词的上下文含义——从单词的周围环境中获得的含义。当我们单独依赖于单词和字符嵌入时,一对同音异义词,如单词“tear”(从眼睛排出的水样分泌物)和“tear”(撕开),将被分配完全相同的向量表示,尽管这些实际上是不同的单词。这可能会混淆我们的模型并降低其准确性。

因此,我们需要一种嵌入机制,能够根据上下文理解单词。这就是上下文嵌入层的用武之地。上下文嵌入层由长短期记忆(LSTM)序列组成。下面是对 LSTM 的一个快速介绍:

****LSTM 是一种可以记忆长期依赖关系的神经网络架构。当我们将一个输入序列(例如一串文本)输入到一个正常的前向 LSTM 层时,每个时间步长的输出序列将对来自该时间步长以及过去时间步长的信息进行编码。换句话说,每个单词的输出嵌入将包含来自之前单词的上下文信息。

****BiDAF 采用双向 LSTM (bi-LSTM ),其由前向和后向 LSTM 序列组成。来自前向和后向 LSTM 的组合输出嵌入同时编码来自过去(后向)和未来(前向)状态的信息。换句话说,从这一层出来的每个单词表示现在都包括关于单词周围短语的上下文信息。

上下文嵌入步骤的输出是两个矩阵——一个来自上下文,另一个来自查询。BiDAF 论文将这些矩阵分别称为 HU (术语提醒——这个矩阵 H 不同于前面提到的卷积矩阵H;这是一个不幸的巧合,两个来源为两个不同的概念使用相同的符号!).上下文矩阵 H 是一个 d -by- T 矩阵,而查询矩阵 U 是一个 d -by- J 矩阵。

Part 5. The contextual embedding step uses bi-LSTM to embed contextual information into the output matrices H and U.

这就是 BiDAF 中嵌入层的全部内容!由于三个嵌入层的贡献,嵌入输出 HU 在其中携带来自查询和上下文中所有单词的句法、语义以及上下文信息。我们将在下一步使用 HU——注意力步骤——我们将把来自它们的信息融合在一起。关注步骤是 BiDAF 的核心技术创新,将是本系列的下一篇文章的重点——请查看!

词汇表

  • ****上下文:包含查询答案的查询附带文本
  • ****查询:模型应该给出答案的问题
  • ****答案:包含可以回答查询的信息的上下文的子字符串。这个子串将被模型提取出来
  • T :上下文中单词/记号的数量
  • J :查询中单词/记号的数量
  • d1 :单词嵌入步骤(手套)的尺寸
  • d2 :字符嵌入步骤的尺寸
  • d :垂直串联单词和字符嵌入得到的矩阵的维数。 d 等于 d1 + d2。
  • H :上下文嵌入步骤输出的上下文矩阵。 H 的尺寸为 2dT
  • U :上下文嵌入步骤输出的查询矩阵。 U 的尺寸为 2d -by- J

参考

[1] 机器理解的双向注意力流(闵俊 Seo et。艾尔,2017)

【2】人物感知神经语言模型(Yoon Kim et。艾尔,2015)

以上所有图像和图表属于我,除非另有说明。

如果你对这篇文章有任何意见或者想联系我,请随时通过 LinkedIn 给我发一个联系方式。另外,如果你能支持我通过我的推荐链接成为媒介会员,我会非常感激。作为一名会员,你可以阅读我所有关于数据科学和个人发展的文章,并可以完全访问所有媒体上的故事。

Seq2Seq 和 BiDAF 中的注意机制——图解指南

原文:https://towardsdatascience.com/the-definitive-guide-to-bidaf-part-3-attention-92352bbdcb07?source=collection_archive---------5-----------------------

BiDAF 的权威指南——第 3 部分,共 4 部分

序列对序列(seq2seq)和双向注意流(BiDAF)是有影响力的自然语言处理模型。这些模型利用了一种叫做“注意力”的技术,这种技术涉及到两个序列的比较。在这篇文章中,我解释了在这两个模型中注意力机制是如何工作的。

T 他的这篇文章是一系列四篇文章中的第三篇,旨在说明 双向注意力流(BiDAF)一种流行的问答机器学习模型(Q & A)的工作原理。

概括地说,BiDAF 是一个封闭领域,抽取的 Q & A 模型。这意味着为了能够回答一个查询,BiDAF 需要查阅一个附带的文本,该文本包含回答查询所需的信息。这个附带的文本被称为上下文。** BiDAF 的工作方式是提取上下文中最能回答查询的子串——这就是我们所说的对查询的回答 。我有意将“查询”、“上下文”和“回答”这几个词大写,以表明我是在用它们的专业技术能力来使用它们。**

An example of Context, Query, and Answer. Notice how the Answer can be found verbatim in the Context.

在本系列的第一篇文章中,我展示了 BiDAF 的高层次概述。在第二篇文章中,我谈到了 BiDAF 如何使用 3 个嵌入层来获得上下文和查询的向量表示。这些嵌入步骤的最终输出是两个矩阵— H (表示上下文中的单词)和 U (表示查询中的单词)。 HU 是关注层的输入,其功能是组合它们的信息内容。

这些注意力层是 BiDAF 的核心组成部分,使其区别于早期的模型,并使其能够在团队排行榜中获得高分。关注层的工作方式将是本文的重点。让我们开始吧!

注意力机制的概念介绍

在深入 BiDAF 中使用的注意机制的细节之前,我们应该先了解一下什么是注意。注意力于 2016 年首次作为序列到序列 (seq2seq)模型的一部分引入。顾名思义,seq2seq 是一个神经网络模型,其目的是将一个序列转换成另一个序列。seq 2 seq 的一个应用示例是将🇫🇷法语句子翻译成英语🇬🇧句子,如下所示:

A sample translation task for seq2seq model.

seq2seq 模型由两个递归神经网络(rnn)组成:

  • 第一个 RNN 称为“编码器”,负责理解输入序列(在我们的例子中,是一个法语句子),并将其信息内容转换为固定大小的中间向量。
  • 第二个 RNN 称为“解码器”,然后使用这个中间向量生成一个输出序列(在我们的例子中,是法语句子的英语翻译)。

****在整合注意机制之前,seq2seq 模型只能处理短序列。出现这种限制是因为“普通”seq2seq 模型只能将有限数量的信息放入中间向量,并且在此过程中会丢失一些信息内容。

这种情况类似于试图翻译一本法语书,首先阅读整本书,记忆其内容,然后根据记忆将其翻译成英语。你可以想象,这样的尝试注定要失败——我们可怜的译者在开始写英文翻译的时候会忘记这本书的大部分内容!

注意力机制就是为解决这一信息瓶颈而开发的。注意力的核心思想是,在解码过程的每一步,我们都要直接连接到编码器的特定部分。

在我们的法语-英语翻译任务的上下文中,这意味着在 e 时刻,我们的模型将生成下一个英语单词,它将只关注输入法语句子的最相关部分。

从概念上讲,seq2seq 翻译模型的工作原理就像普通的人类翻译人员翻译法语文本一样。他会读法语文章的第一段,然后翻译成英语,接着读第二段,然后翻译这一段,等等。通过这样做,他不必把这本书的全部内容都记在脑子里,也不必冒忘记大部分内容的风险。

注意在序列对序列模型中的实现

实际上,我们可以通过执行下图中描述的以下三个步骤,在 seq2seq 模型中包含一个注意机制:

Attention mechanism in seq2seq

1。序列的比较和注意力分数的计算

在解码过程中的每个时间步,我们将比较解码器隐藏状态和所有编码器隐藏状态。 这种比较可以使用任何函数来完成,该函数采用两个向量并输出反映它们相似性的标量。这种函数中最简单的是一个简单的点积。相似性函数的标量输出被称为一个 “注意力得分”; 这些注意力得分用蓝色圆圈表示🔘在上图中。

2。注意力得分到注意力分布的转换

然后我们取所有这些注意力分数的最大值。soft max 函数将这些注意力分数归一化成一个概率分布(一组加起来等于 1 的数)。这种概率分布称为*注意力分布;它表示输入序列中与当前解码过程最相关的部分。*****

上图中的蓝条显示了注意力的分布。我们看到,第二个🇫🇷法语单词对应的杠,“ me”,最高;这是因为这个单词在🇬🇧英语中被翻译成“I”,这是我们输出序列中的第一个单词。

3。将注意力分布与编码器隐藏状态相乘得到注意力输出

然后,我们将注意力分布的每个元素与其对应的编码器隐藏状态相乘,并将所有这些乘积相加,以产生称为 “注意力输出”的单个向量。 你可以把注意力输出看成是对输入序列的选择性总结。注意力输出将成为下一个解码步骤的输入。

尽管上述三个注意步骤首先应用于 seq2seq,但它们也适用于其他应用程序。正如我们将在后面看到的,BiDAF 在实现注意力时使用了相同的三个步骤,尽管有一些小的修改。

通过对 seq2seq 中的注意力机制及其实现的快速概述,我们现在可以看到这个概念是如何在 BiDAF 中应用的。这是 parti!

第六步。相似矩阵的形成

只是为了提醒您我们在上一篇文章中停止的地方——我们的最后一步(步骤 5)是一个上下文嵌入步骤,它产生两个输出矩阵: H 用于上下文,而 U 用于查询。我们关注步骤(步骤 6 到 9)的首要目标是将来自 HU 的信息融合在一起,以创建上下文的几个矩阵表示,其中也包含来自查询的信息。

我们的第六步——第一个与注意力相关的步骤——是形成所谓的相似性矩阵 S S 是一个高瘦矩阵,维数为 T -by- J (上下文中的字数除以查询中的字数)。

相似性矩阵 S 的生成对应于上述 seq2seq 注意机制中的第一步。它需要对 H 中的每一列和 U 中的每一列应用比较函数。矩阵 的行和列 j 中的值代表 S t 第个上下文词与 j 第个查询词的相似度。****

让我们来看一个相似性矩阵的例子。假设我们有这样一个查询/上下文对:

  • 语境 : “新加坡是位于东南亚的一个小国。” ( T = 9)
  • 查询 : “新加坡位于哪里?” ( J = 4)

从上述查询/上下文对产生的相似性矩阵 S 如下所示:

An example of similarity matrix S

我们可以从上面的矩阵 S 中得出一些观察结果:

  • 如我们所料,矩阵的维度为 9 乘 4,9 是上下文的长度( T ) ),4 是查询的长度( J )。
  • 第 1 行第 3 列中的单元格包含相对较高的值,如其亮黄色所示。这意味着与该坐标相关联的查询单词和上下文单词彼此高度相似。这些单词结果是完全相同的单词——“新加坡”——因此它们的向量表示非常相似是有道理的。
  • 仅仅因为一个上下文单词和一个查询单词是相同的,并不一定意味着它们的向量表示非常相似!查看第 2 行第 2 列的单元格—该单元格对上下文单词“is”和相同的查询单词“is”的相似性进行编码。然而,它的价值并没有上面提到的“新加坡”那么高。这是因为这些向量表示也包含了来自周围短语的信息。这种语境贡献对于“是”这样的小系词尤其重要。
  • 另一方面,我们可以看到,语义和语法意义相*的两个截然不同的词,如“坐落”和“位于”的相似度值相对较高。这要归功于我们的单词和字符嵌入层,它可以生成非常准确地反映单词含义的矢量表示。

现在让我告诉你我们如何计算 S 中的值。用于执行该计算的比较函数称为 α α 比 seq2seq 中使用的点积更复杂;以下是 α 的方程式:**

因为函数 α 包含一个行向量和一个大小相等的列向量的乘积,所以它总是返回一个标量。

下图显示了此步骤中执行的所有矩阵运算。

Step 6. Using the similarity function α, we combine context matrix H and query matrix U to form similarity matrix S.

步骤 7。上下文查询关注 (C2Q)

相似性矩阵 S 用作下两个步骤的输入:上下文到查询注意(C2Q)和查询到上下文注意(Q2C)。

在这一节,我们将重点介绍 C2Q。这一步的目标是找到哪些查询单词与每个上下文单词最相关。

执行 C2Q 类似于执行 seq2seq 注意的第二步和第三步。首先,我们使用 S 中的标量值来计算注意力分布。这是通过取 S 的行向 softmax 来完成的。结果是另一个矩阵。这个矩阵在 BiDAF 论文中没有明确命名,但是让我们称它为矩阵 A

矩阵 A ,其维数与 S 相同,指示哪些查询词与每个上下文词最相关。让我们来看一个 A 的例子:

An example of matrix A, the row-wise softmaxed version of S

通过观察上面的热图,我们可以得出以下结论:

  • 语义相似性对相关性有很大的贡献。我们看到,对于上下文单词[“新加坡”、“是”、“位于”],最相关的查询单词是[“新加坡”、“是”、“位于”]。这些词也有很强的语义相似性。
  • 语境词“理解”查询词所请求的信息。我们看到,查询词“Where”是上下文词[“a”、“small”、“country”、“in”、“Southeast”、“Asia”]-与地理位置相关的词的最相关查询词。

然后我们取 A 的每一行,得到一个在的注意力分布**,它的维度为 1 乘 JAt: 反映每个查询词对于第 t 个上下文词的相对重要性。**

然后,我们计算查询矩阵 U 相对于注意力分布中每个元素的加权和。这一步的结果就是名为ũ的注意力输出矩阵,它是一个 2d -by- T 矩阵。

ũ,就像 H 一样,是上下文的矩阵表示。然而,ũ包含了与 H 不同的信息! H 封装了每个上下文单词的语义、句法和上下文含义,ũ封装了关于每个查询单词与每个上下文单词的相关性的信息。****

从相似矩阵 S 和查询矩阵 U 生成ũ的整个过程如下图所示:

Step 7. Context-to-Query attention

第八步。查询到上下文(Q2C)注意

下一步是 Q2C,它和 C2Q 一样也是从相似矩阵 S 开始的。 在这一步,我们的目标是找到哪个上下文单词与查询单词最相似,因此对于回答查询是至关重要的。

我们首先取相似性矩阵 S 的行的最大值,以获得列向量。这个列向量在论文中没有明确命名,姑且称之为 z

现在让我们后退一步,想想 z 象征着什么。记住,我们的相似度矩阵 S 记录了每个上下文单词和每个查询单词之间的相似度。让我们再来看看我们上面创建的例子 S

Similarity matrix S

现在让我们把注意力集中到这个矩阵的第四行,它对应于上下文单词“small”。可以看到,在这一行中没有任何明亮的细胞!这表示查询中没有与上下文单词“small”意思相似的单词。当我们取这一行的最大值时,得到的最大值将接*于零。

与单词“Singapore”和“situated”形成对比,在它们的行中,我们确实找到了至少一个明亮的单元格,表明存在与这些单词相似的查询单词。当我们取这两行中的最大值时,这两行的向量 z 中的对应值也会相对较高。

以下是我们的示例中获得的 z :

在 Q2C, z 中的值服务于我们的注意力值。我们在 z 上应用 softmax 来得到一个叫做 b 的注意力分布。然后我们使用 b 对上下文矩阵 H. 进行加权求和,得到的注意力输出是一个 2d 乘 1 的列向量,称为 ĥ.

Q2C 的最后一步是复制粘贴 ĥ T 次,并将这些副本组合成一个2dby-t矩阵,称为ĥ.ĥ是上下文的另一种表示,它封装了关于查询的上下文中最重要的单词的信息。

从相似矩阵 S 和上下文矩阵 H 生成ĥ的整个过程描述如下:

Step 8. Query-to-Context attention

第九步。

然后将步骤 5、7 和 8 中产生的矩阵组合成一个大矩阵 G. 为了刷新你的记忆,这三个矩阵如下:

  • H :封装语境词的语义、句法和语境意义的原始语境矩阵。**
  • ũ:封装了每个查询单词与每个上下文单词的相关性的上下文矩阵。**
  • ĥ:上下文矩阵,它封装了关于查询的上下文中最重要的单词的信息**

这三个矩阵具有相同的维数—2d—by—t .

这个“大合并”,很遗憾,并不是这三个矩阵垂直叠加那么简单!这里,我们使用了另一个名为 β 的自定义函数。下面是 β 的方程式:

我们通过 G:t = β( H :t,ũ:t,ĥ:t)来定义我们的大合并矩阵 G ,其中 G:t 是对应于第 t 个上下文单词的 G 的第 t 个列向量。 G 的尺寸为 8d -by- T.

Hũĥ生成 G 的全过程如下图所示:

Step 9. Merging of the three Context matrices H, Ũ and Ĥ to form G

巨型矩阵 G 包含了 Hũĥ.中的所有信息 也就是说,你可以把 G 中的每一列向量想象成一个上下文词的向量表示,它“意识到”查询的存在,并且已经从中合并了相关信息。

这就是 BiDAF 中注意力层的全部内容!我知道这可能很难理解,尤其是涉及到无数的符号和矩阵运算。如果你真的想详细研究 BiDAF,我建议你打印出下面的术语表以及上面所有的图表,并把它们放在一起研究。

下一篇文章中,这将是该系列的最后一篇文章,我将讨论 G 如何作为建模和输出层的输入。输出层将给出每个上下文单词被包含在答案范围中的概率。希望能在那篇上篇看到你!

词汇表

  • 上下文:包含查询答案的查询附带文本
  • 查询:模型应该给出答案的问题
  • 答案:包含可以回答查询的信息的上下文的子字符串。这个子串将由模型提取出来。
  • T :上下文中的字数
  • J :查询中的字数
  • U :封装了查询词的语义、句法、上下文含义的原始上下文矩阵。 U 的尺寸为 2d -by- J
  • H :封装语境词的语义、句法、语境意义的原始语境矩阵。 H 的尺寸为 2dT
  • S :相似度矩阵,记录每个上下文词和每个查询词的相似度。 S 的维度为 T -by- J (上下文中的字数除以查询中的字数)。
  • α : 用于获取 S. 中相似度值的比较函数
  • A :A 的逐行 softmax 产生的矩阵,指示哪些查询单词与每个上下文单词最相关。 A 的尺寸为 T -by- J.
  • z : 取相似矩阵 S. z 的跨行最大值得到的列向量的维数为T-乘-1。****
  • b :z. b 应用 softmax 得到的注意力分布向量的维数为T-1。****
  • ĥ :b 乘以上下文矩阵 H 得到的注意力输出ĥ 的维数为2d-1。****
  • ũ:上下文矩阵,封装了每个查询词与每个上下文词的相关性。ũ的尺寸为 2d -by- T.****
  • ĥ:上下文矩阵,封装了关于查询的上下文中最重要的单词的信息。ĥ的尺寸为 2d -by- T.****
  • G :一个大的、 8d -by- T 矩阵,包含 Hũĥ.中的所有信息 G 是建模层的输入。****
  • β : 一个自定义串联函数,用于构建 G

参考

[1] 用于机器理解的双向注意力流。阿尔,2017)

[2]神经机器翻译通过共同学习对齐和翻译(Bahdanau et。艾尔,2015)

除非另有说明,所有图片均由我创作/设计。

如果你对这篇文章有任何意见或者想联系我,请随时通过 LinkedIn 给我发一个联系方式。此外,如果你能通过我的推荐链接支持我成为一名中级会员,我将非常感激。作为一名会员,你可以阅读我所有关于数据科学和个人发展的文章,并可以完全访问所有媒体上的故事。

部署的痛苦

原文:https://towardsdatascience.com/the-deployment-pain-cb1dd2a471b2?source=collection_archive---------13-----------------------

部署焦虑的可能原因

本文与帕特里克·斯拉文伯格合著

The data science cycle in magnets: data access, data processing, model training, and deployment

2017 年 10 月,我在 ODSC 伦敦会议上经营 KNIME 展台。在展位上,我们有通常的会议材料要分发:信息丰富的文件,各种小工具,甚至瑞士巧克力。在这些小工具中,我们有磁铁,更具体地说,四种类型的磁铁代表数据分析抽象工作流中的抽象节点:读取转换分析,以及部署。这些磁铁很受欢迎。与会者会来玩它们,把它们组装成工作流程,或者把一些带回家放在冰箱里。

我记得大多数人被磁瓦吸引去分析,而同样的大多数人在部署前皱着眉头耸耸肩。我甚至清楚地记得一个与会者,当被提供展开瓷砖时,他退缩了,并开玩笑地(?)语气声明:“我不希望部署。身体上很痛”。我非常惊讶(我甚至发了一条关于这件事的微博)。一个据称花了相当多时间来构建和完善机器学习模型的数据科学家,怎么可能不想部署它们,将它们发布到现实世界中呢?那是因为部署确实是一件痛苦的事情!

The pain of deployment is all in this tweet

为什么部署这么难?这仅仅是对一些数据科学项目自然消亡的失望吗?还是真的有一些数据科学家无法克服的额外障碍?当然,我对这个话题有自己的看法,但我可能会因自己的态度和过去的经历而有所偏颇。因此,我和 Patrick Slavenburgh 在 LinkedIn 上询问了我们的同事关于数据科学项目中部署失败的最常见原因。本文旨在总结答案。

  1. 婴儿死亡率

众所周知,一个数据科学项目包括几个主要的标准阶段,例如在 CRISP-DM 循环中总结的:业务案例理解;数据探索;数据清理和数据准备;模型训练、模型优化和模型测试;最后,如果前几个阶段一切顺利,就部署。“如果一切顺利”的意思是:

  • 如果我们清楚地理解了业务规范
  • 如果数据质量对于我们的任务来说足够好
  • 如果我们能够正确地清理和准备数据
  • 如果我们训练、优化并测试了一个足够好的模型

如果所有这些都成功了,我们就可以开始部署了。

部署阶段位于食物链的末端。它收集该过程的前几个阶段产生的所有垃圾。也就是说,在部署阶段,所有先前创建的和未检测到的问题都可能出现,从而扼杀整个项目。这是部署失败的首要原因:婴儿死亡率。婴儿死亡是由于在之前的任何阶段中未被发现的深层问题。

例如,Kenneth Longo 报告称,对原始业务问题的误解是数据科学项目在部署过程中失败的最常见原因之一。肯尼斯这样描述这个问题:“机器学习模型最终回答的问题与最初的业务问题不一致,或者业务问题在开发过程中发生了变化。”

有时候,尽管尽了最大努力,模特的表现还是低于预期。在这种情况下,要么期望值太高(数据科学被当作魔术出售),要么用于训练模型的数据质量不够好(训练集可能太小和/或没有覆盖所有可能的事件)。有时在数据探索阶段可能会发现这个数据质量问题,例如一些统计数据探索,但有时这个问题会被忽略,直到部署前才变得清晰。

由于婴儿死亡率而导致的项目部署失败令人失望,但实际上这本身并不是部署失败。它只是发生在部署阶段。我不认为这是部署痛苦的原因,而是部署阶段令人失望的后期发现。

2。缺少 IT 技能

部署需要一些 IT 技能。无论您需要将最终结果写入数据库、计划每 X 小时执行一次作业、使用不同的连接参数从远程服务器运行应用程序,还是作为 REST 服务运行应用程序,您都需要 it 部门的帮助,至少需要获得服务器 URI 和访问资源的正确凭证。根据我的经验,这是部署的第二个阻碍因素:数据科学团队和 IT 部门之间缺少协作。

IT 部门的任务是保护数据。数据科学组的任务是访问相同的数据。这两个相反的任务可能不会促成最好的合作。

在这种情况下,如果数据科学团队中的一个团队获得了必要的 it 技能来与 IT 部门沟通,并负责来自该团队并进入生产的所有(部分)应用程序,例如在专用服务器上,这可能会有所帮助。

在需要极度保护原始数据的情况下,专用服务器可以托管数据科学应用程序的所有中间和最终结果,甚至可能是原始数据的副本。通过这种方式,一般 IT 和数据科学 IT 几乎完全分离,数据科学组的 IT 团队可以全面负责机器和应用程序。

当然,选择正确的工具在远程服务器上部署、调度和执行您的应用程序可能会节省您大量的时间、精力和与 IT 部门无休止的讨论。有许多工具,允许服务器部署、REST 服务部署、调度和最终在 web 浏览器上显示仪表板。选一个,最符合你需求和群体技能的,但是认真选一个!把一个机器学习模型训练到 99.99%的准确率,这是一个很大的学术成就。然而,将同样的模型投入到现实生活中才能让它达到目的。这是一个不容低估的挑战。因此,从合适的工具中获得所有可能的帮助!

3。真实世界的生活比实验室的生活更加复杂

现实生活是一片丛林,把你的预测器扔在那里意味着要面对治理规则和数据隐私问题的丛林,而这些在模型训练中是没有考虑到的。

您的预测器应用程序必须随时对所做的决策负责。这意味着现实世界中的所有预测都必须在规定的时间内(通常是法律规定的时间内)进行存储、可追踪和存档。

许多国家,尤其是欧洲,都有关于数据隐私的严格法律。通常,在最初的头脑风暴中看起来不错的想法与你可以用单个人的数据做什么的法律现实相冲突。基于大量数据训练的模型通常不会显示可以追溯到原始数据所有者的信息。然而,如果训练集太小,或者如果应用程序被设计为跟踪每个人,这可能会变成一个法律问题。

Lakshmi Krishnamurthy 指出“在实验室约束条件下,使用训练数据进行构建、调优和性能测试是可管理的;但是,集成“实时”数据和质量、治理、企业架构约束的人员问题,以及最后但同样重要的是,让客户接受您的模型是/应该做什么并不总是“可预测的”。这就是挑战所在!!"

同样, Sam Taha 认为,与公司内部现有数据管道的整合可能会比最初想象的更加困难。从具有理想输入和管道的 POC 到在整个解决方案空间中工作的解决方案,需要与业务和上游系统紧密配合,以便模型成为生产“产品”的一部分。

Paige Roberts 也同意这一观点,并表示“未能考虑到为模型创建生产数据管道所涉及的数据工程工作是导致部署失误的另一个原因”。

4。数据泄漏

Ruben Ten Cate 将数据泄露列为部署的另一大障碍。数据泄漏确实是一个严重的问题,在训练期间并不总是容易检测到。当训练集中的数据包含现实世界中不可用的特征时,例如在要分类的事件之后或之后收集的特征,就会发生这种情况。

引用鲁本的话:“再加上一个部署失误的原因:一个‘数据泄露’。不是隐私泄露意义上的泄漏,而是数据泄漏到训练数据中,这在操作环境中是不存在的。例如:通常客户服务互动越多,客户流失的机会就越大。这是一个有效的相关性,并且是不满意的客户经常打电话给客户服务来投诉或实际停止他们的合同(流失)的事实的结果。基于这一特征的模型的问题是,在现实生活中,我们希望在客户变得不高兴并呼叫客户支持(以流失)之前预测流失的客户,因此更高的交互率尚未发生,也不存在于运营环境中。因此,该模型表现不佳,并在生产中增加价值之前被丢弃。”

数据泄漏的一个经典例子是当我们试图预测旅行延迟(包括到达目的地的延迟)时。当然,如果交通工具延迟了 x 分钟,这就被定义为行程延迟。但是我们怎么能在到达之前知道到达延迟呢?还有更多这样的例子,随着事后知识变得不言而喻,但在培训期间却不那么清晰。清楚地命名和描述数据列可能有助于防止这种问题。

5。设计思维、精益创业和敏捷(或缺乏)

帕特里克·斯拉文伯格(Patrick slaven burg):软件开发——以及越来越多的其他团队营销&销售——转向了像设计冲刺或 Scrum 这样的迭代过程。数据科学中的敏捷过程仍然是相当新的,但越来越受欢迎。

然而,用户故事不是静态的。更有问题的是,企业通常很难明确表达他们希望从人工智能中获得哪些商业价值。并且哪个具有最高优先级。常年产品经理的困境:“我们应该构建这个吗?”以及“为什么?”。

敏捷和设计思维可能不是典型的数据科学家的背景——相反,他们使用更长期的“科学方法”。最终,他们可能解决了这个问题。但是这个问题不再符合业务需求。或者根本就不存在。

6。公司政治

最后, Patrick Slavenburg 报告了“组织问题——以及部落主义——作为部署的一个问题”。这不仅仅是我们在呆伯特的漫画中常见的办公室政治,不幸的是,在现实生活中也是如此。

也是 OT 和 It 之间常年的中国墙。无论是业务部门还是运营中的主题专家:都将 IT 视为满足其需求的促成因素。这也意味着,如果通过它引入数据科学,它将停留在其中,永远不会被广泛采用。而我们需要的是公民数据科学家来推动这种适应。

另一个例子是 IT 部门和数据科学组之间缺乏协作,如本文前面所述(在关于缺少 IT 技能的部分)。在最糟糕的情况下,这甚至可能演变成一场丑陋而不愉快的战争。

管理层的支持也很难赢得。这有时与管理层对数据科学应用的期望过高有关。或者相反:那台机器永远代替不了人类。有时很难找到中间立场。

结论

没错,部署伤人。我在这里列出了一些最常见的导致部署困难的原因。不要低估这些问题中的任何一个,选择一个简化您生活的工具,并从项目开始就投入足够的时间、资源、技能、预算和早期规划,就可以治愈痛苦。

如果你想阅读 LinkedIn 讨论中的原始评论,你可以在这两个部分找到它们:

https://www . LinkedIn . com/feed/update/activity:6499327120198627329/

https://www . LinkedIn . com/feed/update/urn:李:活动:6499534506897211392

我希望我没有扼杀实施和部署数据科学解决方案的热情。我的目标实际上是让你意识到陷阱,而不是吓你。我希望你们能珍惜我们的经验,继续部署更多的数据科学应用。

魔鬼的音乐

原文:https://towardsdatascience.com/the-devils-music-622d29028c0b?source=collection_archive---------21-----------------------

数字音乐

Pitchfork 真的是互联网最苛刻的乐评人吗?

Music fans celebrating an above-average Pitchfork review (image: Pitchfork)

“音乐经历了令人筋疲力尽的 7,000 年,被太多的中速音乐所拖累,最著名的是弗朗茨·李斯特的《降 A 大调第三乐章》和 90 年代另类摇滚组合 Semisonic 的《关门时间》……最终,尽管音乐有时会很精彩,但整个媒体都成了人行道的衍生物……”

Pitchfork 对音乐(正如《洋葱》所想象的)的评论如是说,该评论给“通过时间表达的由声音和沉默组成的创造性表达模式”打了一个普通的 6.8 分(满分 10 分)。

Pitchfork 成立于 21 世纪中期,专门报道美国中西部的独立音乐和地下音乐。从卑微的开始,它发展了重要的文化资本。它现在拥有* 25 万的每日读者,并在许多乐队成为家喻户晓的名字的早期成功中发挥了不小的作用(Arcade Fire 的首张 LP“葬礼”在 Pitchfork 的热情洋溢的评论之后短暂绝版)。

然而,正如《洋葱》的恶搞所暗示的那样,这种毫无保留的赞美被认为是反常的。这位自称“音乐界最值得信赖的声音”的人一方面给予了什么,另一方面肯定也能得到什么(我的自己的 最喜欢的 乐队中的许多乐队这些年来都受到了猛烈抨击)。

Pitchfork 经常被指责为为了吸引注意力而故意挑衅和逆势评论。Pitchfork 的十进制评分系统进一步推动了对自命不凡的指责(由该网站通常冗长、离题的风格引发),这意味着它在 0-100 的范围内给专辑评分,而不是大多数传统评论家部署的简单的 5 星评级。人们常常会觉得,这仅仅是为了更精确地记录下你最喜欢的专辑。

当然,要找出这些指控是否合理,看一下数据是有意义的。

正在引入数据…

我们将用于此分析的数据集是通过抓取评论聚合网站 Metacritic 生成的(这一过程在之前的博客中有所介绍)。

完成此操作后,我们获得了大约 202,000 个专辑评论的以下信息:

  • 艺术家:我们的数据集中有 8415 位独特的艺术家
  • 专辑名称:共有 17727 张独特的专辑(注意——只有至少有四个评论的专辑才会被包括在内,以确保更公*的跨出版物比较)
  • 这张专辑的发行日期:这些数据涵盖了从 1999 年 2 月到 2019 年 7 月二十年的在线评论
  • 专辑的风格:共有 689 种独特的风格,有些专辑的标签多达 5 或 6 种
  • 撰写评论的出版物:数据集中有 131 种不同的出版物
  • 出版物的审查分数:标准化为满分为 100 分的整数分
  • 该专辑的‘Metascore’

Metascore ”是一张专辑的不同评论家评论的加权*均。虽然 Metacritic 用来创建 Metascore 的确切方法尚不清楚,但 Metacritic 建议“根据[出版物的]质量和整体地位”给予额外的权重。然后将这些分数标准化(类似于大学里的“曲线评分”),以防止分数聚集在一起。无论如何,Metascore 是衡量任何一张专辑“真实”质量的最佳标准。

乍一看…

Pitchfork 是过去二十年中最多产的音乐出版物之一。只有另外两个在数据集中有更多的评论,自 2018 年以来,Pitchfork 每月发布的评论比任何人都多,除了 AllMusic。

The trends here are interesting in and of themselves — what causes this jump around 2011, and the fall in the following years? This is something we will investigate in a future blog. Note — we use a rolling average here since album releases are highly seasonal, with very few albums being released in December.

有一个非常简单的方法来衡量一个出版物的苛刻程度——取每个出版物的评论分数的*均值,并对它们进行排名。这样做,我们看到有许多比 Pitchfork 更严厉的批评,Pitchfork 只是刮到顶部(或底部?)三十种出版物。

当然,这种分析是有缺陷的。我们已经看到出版物评论了不同数量的专辑——考虑到其目录的广度,Pitchfork 可能只是评论了更多好的专辑。因此,我们需要引入一个更强有力的衡量标准。

与 Metascore 的差异

我们已经说过 Metascore 可能是衡量一张专辑真实质量的最好方法。因此,我们可以通过比较 Metascore 和个人评审分数来识别苛刻的评审。

我们来孤立一下 Pitchfork 的评论。我们可以根据相应的 Metascore 绘制每个评论的 Pitchfork 分数。Pitchfork 评论为“苛刻”的专辑因此低于紫色的“ x=y ”线。我们可以看到许多点落在这条线以下——事实上超过三分之二。

67% of Pitchfork’s scores are below the Metarating. 28% are above, and 5% are exactly the same.

我们可以将这个“苛刻”的概念归结为一个单一的 KPI——一个评审的“与 Metascore 的区别”。这很容易计算为两个数字之间的差异。在上面的图表中,它将作为点和紫色线之间的垂直距离给出。

因此,对于 Pitchfork 对小马驹乐队最新专辑的评论,与 Metascore 的差异将是 60 减去 78,即-18(看起来相当苛刻!)

The album’s metacritic summary, with Metascore

The same album’s Pitchfork review…

因此,出版物的“与 Metascores 的差异”越负面,我们就越能判断它的苛刻程度。如果我们绘制 Pitchfork 得分差异的直方图,我们会看到大多数差异都是负的(我们从上面的散点图中知道)。

*均而言,Pitchfork 的得分比我们预期的低了将*半颗星,考虑到它已经评论过的专辑的 Metascores。

如果你想知道哪些专辑可以在左边的长尾中找到,那么我们只能希望你不是北方州的粉丝

出版物之间的比较

“与 Metacritic 不同”KPI 的一个优点是,我们可以公*地比较不同的出版物。

如果我们将每个出版物的*均得分差异绘制到 Metascore 上,我们实际上看到 Pitchfork 看起来并不特别显著——特别是相对于具有类似数量的已发表评论的其他出版物。

许多处于苛刻和慷慨极端的出版物(即,在上述散布图的最左边和最右边)是小得多的关注点。最苛刻的三家(抽屉 B、精选、秃鹫)之间只发表了 318 条评论。最慷慨的往往是“一周记录”风格的专栏,从中我们可以期待高分。

如果我们分离出排名前三十的出版物(每个出版物在数据集中有超过 2000 条评论),我们会看到只有六分之一的出版物的评论比 Metascores 建议的更慷慨——其中唯一特别慷慨的评论家是《娱乐周刊》(随你怎么说)。无论如何,根据这一标准,Pitchfork 的评论得分看起来并不特别显著。

这是峰度,笨蛋…

然而,如果我们超越每个出版物的*均分数差异,而是查看这些差异的分布,就会发现一些有趣的事情。如果我们要为一个出版物做直方图(就像我们在几段前为 Pitchfork 做的那样),但是要并排比较多个分布,我们可以使用 Seaborn 的 violinplot 函数。下面,我们绘制了数据集中十个最多产出版物的分布图。

Each violin should be read like a ‘vertical’ distribution curve — the wider the violin is at a given point, the more reviews we have clustered at that point.

如果我们比较这些出版物的分数差异分布,Pitchfork 有一些突出的东西——分布的峰度。

峰度是一种对分布“尾部”的度量,它告诉我们异常值有多极端。峰度公式的构建使得分布均值的一个标准差内的任何数据点贡献都非常小。因此,同时具有低标准差和长尾的分布可能具有高峰度。

事实上,在上面的图中查看 Pitchfork 的“小提琴”,我们看到它紧紧围绕着*均值(导致一个宽的小提琴,在波峰的两侧都有陡峭的斜坡)。它也有一个很长的负尾巴。

只有在雷达下,其分布范围内有更负的分数差异(他们给狼眼的“燃烧的头脑”打了一个大大的零分,对此,永远迟钝的 Pitchfork 给了高度值得称赞的 8.0),然而他们的分数差异更加松散。

如果我们将所有出版物绘制成散点图,我们会看到 Pitchfork 在数据集中的所有评论家中拥有最高的峰度分数之一——当然是所有大标题中最高的。

那么,Pitchfork 是互联网上最苛刻的乐评人吗?

根据我们所看到的,似乎不是这样。在数据集中的主要出版物中,这个奖项可能会授予 Under The Radar,他在* 5000 篇评论中,*均得分低* 7 个百分点。

然而,关于 Pitchfork,我们所能说的是,它实际上是相当一致的。它倾向于降低专辑的评分,但相对于其他类似规模的出版物来说,并没有高得离谱。事实上,在排名前三十的出版物中,Pitchfork 在 Metascore 的“半星”范围内拥有最高的评论分数。换句话说,它似乎很擅长判断一张专辑的“真实质量”。

然而,Pitchfork 的评论评分包含少量重要的异常值(如'死于立体声'、纽约鬼&花'和'两个违背自然'),其峰度评分表明这些异常值比我们预期的更极端(当然也比大多数其他出版物更极端)。

所有这些都支持这样一种观点,即 Pitchfork 通常是一个值得信赖的音乐评论来源,但它有一种不必要的逆势行为来引起注意的习惯。

总而言之,我给 Pitchfork 打了 6.8 分。

这是我新的“数字音乐”专栏的第一篇博客,它将利用数据讲述现代音乐产业的故事。流派品味的变化如何影响节日?音乐新闻业的未来如何?制作《困难的第三张专辑》有人们想象的那么难吗?我很乐意听到对上述分析的任何评论,或者对数据集本身的任何想法。欢迎在下面留言,或者通过 LinkedIn 联系我。

“可用”数据和“可访问”数据之间的区别

原文:https://towardsdatascience.com/the-difference-between-available-data-and-accessible-data-638ed3dc538b?source=collection_archive---------27-----------------------

一点历史

几个月前,我们公司在离城市北部几小时路程的地方享受了一次休假。我们团结一致,集思广益,为公司和产品的发展设定愿景和目标。

我们也有篝火晚会,这比你想象的更有意义。

回到城市后,我们得到了剩余的棉花糖——大约多了 4 袋。它们整整一周没有被碰过,放在咖啡旁边的抽屉里,这意味着它们肯定被人知道,因为在我们办公室里,咖啡一次最多只能被描述为“没有碰过”30 分钟。

但后来,我们的一名员工将一袋棉花糖倒在一个透明的容器里,就像我们在这里得到的其他一些零食一样。

一天结束时,还剩四个。

A before and after photo. The container on the right started that day full to the brim.

你为什么要告诉我这些?

不要误会我,我知道这听起来很糟糕,到目前为止充满了打字错误的 clickbait:

我们把一些棉花糖放进一个透明的容器里,你不会相信接下来会发生什么!

但它们一直在稳步下降。如果你认为这不值得你花时间去任何地方,系好安全带,因为我绝对要把它和数据联系起来。

通过移动它们,展示它们,并解决一些后勤问题,棉花糖从可获得到可获得,这两者之间有着天壤之别。

好吧,我开始明白了

有大量的数据可用超过任何人可以感知。它是通过无数的智能手机、计算机、传感器、物联网设备以及基本上任何可以插入的东西产生的。除了调查、人口普查、自然事件、市场事件……事实上,我认为是时候更新牛顿第三定律了:

对于每一个动作,都有一个大小相等、方向相反的反作用力,并收集两者的数据。

For example, if you defenestrateyour computer in frustration, the window will be replaced with a similar, unbroken window, probably at your expense. (photo from Pixabay)

但是这些数据很少被访问。它隐藏在门户中,以晦涩的格式出现,标题错误,列类型错误,字符编码不是您所习惯的——有各种各样的障碍。

利用替代数据意味着将其可用性转化为可访问性。通过搜索引擎不容易找到有用的数据。从笨重的 web 门户下载一次数据与管理脚本以定期执行计划收集不同。一旦你把所有这些都整理好了,你就不只是神奇地拥有了你想要的数据,它还需要被重新格式化、清理和标准化,以便与你的组织中现有的数据和基础设施集成。

能做些什么?

幸运的是,数据是可变的。有一些过程可以对其进行转换、规范化,并将其打包到一个优化的模式中,这将使数据更容易访问,从而更有价值。

然而,当涉及到用人力解决问题时,这并不合适。无论您的组织规模有多大,总有一天有用但无用的数据会超过您的数据科学团队的能力。事实上,从概率上来说,那个时间已经到了;由于 每天产生的数据量巨大且深不可测 ,我们无法掌握市场的每一个来源、更新和细分市场,而且很有可能有一些你没有利用的数据可以增强你的解决方案并深化你的分析能力。

我如何管理大规模的数据变化?

我们已经写了如果你的公司想要成为数据驱动的,一个 数据运营策略 是多么重要。如果没有自动化,数据科学团队停滞不前只是时间问题。您的团队需要能够卸载“脏活”,以确保他们的时间在数据科学、数据工程和数据分析的所有移动部分之间均匀分配。

随着数据科学成为目前世界上最受欢迎的专业之一,数据的价值显而易见。然而,投资 DataOps 不仅可以缓解数据来源、准备和处理阶段的瓶颈,还可以解放您的数据科学家,让他们寻找新数据、发现新见解、更快地提供更有意义的分析,如果一切按计划进行,还可以创造新的收入。

焦点的转移

人们很容易将数据科学的困境归咎于人才短缺,但培养一支数据团队只能到此为止。无论人才库有多深,在数据产品和数据专业人员上一对一的增长都没有商业意义。

对于任何希望利用可用数据世界的公司来说,首要任务必须是创建最简单的工作流,以便将数据从任何地方输入到您的组织中,自动执行妨碍工作效率的重复且耗时的任务。

这就是如何将大量可用数据转化为可访问的数据。

数字幸存者——大屠杀的分析视角

原文:https://towardsdatascience.com/the-digital-survivors-dc3311cb9602?source=collection_archive---------25-----------------------

“很快,将没有幸存者讲述他们的故事,你的孩子将只能通过书籍和视频了解大屠杀”

大约 18 年前,我的老师在给我们班放映了一部关于大屠杀幸存者的纪录片后说了这句话。

Photo by Alessio Maffeis on Unsplash

大屠杀,也被称为“Shoah”(希伯来语:השואה),是第二次世界大战期间的一场种族灭绝,在这场种族灭绝中,纳粹德国在当地合作者的帮助下,有计划地屠杀了大约 600 万犹太人。

作为一个大屠杀幸存者的孙子和一个狂热的数据研究者,我对自己说,在当今的“数据科学”时代——大数据可以通过小努力找到——我可以通过简短的谷歌搜索找到一些关于大屠杀受害者的原始数据。

令人惊讶的是——我的谷歌搜索几乎一无所获。

我能找到的唯一重要的“大屠杀数据库”是“Yad Vashem”——世界大屠杀纪念中心,它包含数百万份记录,其中有大屠杀受害者的传记细节,这些记录是从 2004 年至今精心收集的。

尽管这个数据库是公众可访问的,但访问是通过在线(和有限的)查询形式,这使得不可能用更合适的分析工具来操纵数据。

难道世界历史上最重要的事件之一的数据不能以原始形式用于非营利研究?

所以我决定调查“犹太大屠杀纪念馆”网站(技术说明:通过 chrome DevTools 过滤 XHR 和获取请求来了解“隐藏的 API”),并能够创建一个 Python 脚本来自动查询和存储约 750 万个大屠杀受害者条目的数据(注意:这一切都是根据“犹太大屠杀纪念馆”网站的“正确使用”和“隐私”条款完成的)。

尽管“亚德韦谢姆”的信息远非完整(重复条目、缺失条目、来源不明等。)——它仍然是最好的,有了这个独家数据,我现在可以从一个方便但令人不安的角度来看待大屠杀:

Europe heat map — victims per country of death (note: borders are not accurate as I used a modern geocoding engine instead of a 1938 one)

Reason of death — per country of residence

Number of victims between 1938–145 — colored by documented fate

Top originating cities of the victims — colored by country of death

Main traffic routes of victims between 1938–1945

不用说,这只是冰山一角;这些只是我用“Tableau”和“Python”做的一些总结,它们并不声称是准确的,而是强调如何利用这些数据。

想象一下,我们会考虑受害者的姓氏和地理位置之间的关系,或者我们会根据受害者在特定日期的位置相似性对他们进行分组。
人们可以想象,一项全面的研究可能会提供有益于国际社会的新见解,从关于战争的历史见解到发现关于一个人家庭命运的进一步信息。

不幸的是,几乎没有大屠杀幸存者了,时间并没有让它变得更好。但是在人类幸存者消失的现实中,让我们至少利用“数字幸存者”来讲述他们的故事。

由犹太大屠杀幸存者的孙子 Yoav Tepper 撰写。

我联系了“犹太大屠杀纪念馆”,询问他们是否允许我发布他们的数据库。我真的相信,如果世界上有任何人可以获得这个独家的重要信息,它可能会启动/鼓励新的研究,而这些研究从来没有为纪念这些受害者而进行过。我仍在等待“亚德韦谢姆”的官方回应,但如果他们批准我的请求,我会在评论区发布更新。

================

根据“犹太大屠杀纪念馆”网站的条款和条件,我声明我对这些数据不拥有任何权利。“Yad Vashem”数据仅用于个人和教育目的。该数据属于“亚德韦谢姆”,唯一有效的数据是 “亚德韦谢姆”网站 中呈现的数据。在这篇文章中,我使用了国家名称、年份和死亡原因。没有使用与受害者身份相关的个人信息。

===============

伦理人工智能的维度改变了医疗保健的面貌

原文:https://towardsdatascience.com/the-dimensions-of-ethical-ai-changing-the-face-of-healthcare-3b72df1161e5?source=collection_archive---------13-----------------------

—我们当前的人工智能医疗保健反面乌托邦

尽管许多人可能认为… “人工智能将会接管一切!偷走我们所有的工作,并打算取代我们所有人!”

不打算粉饰这一点。这在一定程度上可能是真的,当在医疗领域讨论它的含义时,仍然有大量的伦理上的缺陷需要首先考虑。

“人工智能很可能会导致世界末日,但与此同时,也会有伟大的公司出现。”—山姆·奥特曼

趁我们还在食物链的顶端,充分利用我们的时间怎么样😉

医疗人工智能——为什么和为什么不

人工智能(AI)包括深度学习、机器学习、自然语言处理等领域,几乎可以应用于医学的任何领域,它对生物医学研究、医学教育和医疗保健的潜在贡献似乎是无限的。

凭借整合和学习大型患者数据集和临床数据的能力,人工智能可以在诊断、临床决策和个性化医疗过程中发挥重要作用。在许多情况下,这些形式的人工智能可以用来优化整个治疗过程,更好地帮助和康复病人。例如,应用于乳房 x 光片的基于人工智能的诊断算法正在帮助检测乳腺癌,为放射科医生提供“第二意见”。

此外,先进的虚拟人化身能够参与有意义的对话,这对于精神疾病的诊断和治疗具有意义。人工智能应用还扩展到物理领域,包括机器人假肢、物理任务支持系统和移动机械手,以帮助提供远程医疗。

随着这些进步为医疗保健领域带来了更强的整合和贡献,仍然有一个伦理层面需要考虑解决隐私、安全和特殊监管规定的问题。随着这项技术的不断进步,许多人都专注于强调医疗保健领域的未来会是什么样子,让医疗界对新兴人工智能技术可能带来的道德复杂性知之甚少。

忽视其有害影响。

Ignoring the ethical complexities of AI

人工智能的反乌托邦未来——伦理人工智能的挑战

对人工智能对全球更广泛经济的影响的估计大相径庭,最*的一份报告表明,到 2030 年,人工智能将对全球国内生产总值产生 14%的影响,其中一半来自生产率的提高。这些预测为人工智能行业的快速发展创造了政治胃口

有偏见的人工智能从错误的数据集开始

多样性不仅有助于解决*等的原因,也有助于抵消数据和人类判断中的潜在偏见。

众所周知,临床医生会受到潜意识偏见的影响。通常这些偏见是如此根深蒂固,以至于我们对它们视而不见。健康数据中的偏差也很常见,如果处理不当,可能会危及生命。

例如,心脏病在男性中更常见,但也是女性死亡的主要原因——至少在西方社会如此。尽管如此,女性心脏病更容易被医生忽视,不被认识,因此得不到治疗。这不仅仅是因为它被认为不太可能,还因为它在女性身上的症状表现与男性不同。

同样,人工智能在医疗保健领域的表现取决于它从中学习的人和数据。这意味着在人工智能模型的开发中缺乏多样性会极大地降低其有效性。根据有偏见的数据训练的人工智能只会放大这种偏见。例如,IBM Watson 对癌症治疗的建议是基于一家医疗机构的少数医生的培训。这就产生了有偏见的建议,这些建议不是基于官方的指导方针,而是基于少数人的经验和观点,这些人可能非常相似。

Figure 1

—图 1 总结了医学中 ML 研究的预期趋势,从短期到长期,侧重于反应性系统的进一步发展,经过培训,以可测量的准确度和前瞻性系统对患者进行分类。由于这些形式的最大似然算法将处理、诊断和治疗医学领域内的大范围流行领域,因此必须使用无偏见决策功能来确保安全性。

到底是谁的错?

在治疗方法、诊断和/或患者疾病分类过程中的并发症,强调了人工智能伦理方面讨论最多的话题之一。

总的来说,人工智能(在高层次上)只是计算统计学的一种形式。它在医疗保健领域的应用侧重于提供给定数据集的输出,做出最佳建议/决策。我们在医疗行业内测量准确度的过程将受试者操作曲线(ROC 曲线)置于焦点。这些 ROC 曲线主要由比较数据集组成,这些数据集展示了在特定任务中表现最佳的系统。

The better a system performs, the further up and towards the left the curve goes. A perfect 100% accurate system would not even be a curve, it would be a right angle in the top left-hand corner of the graph.

随着这些人工智能系统对病人的诊断和治疗具有更高的准确率,我们必须考虑到利用人工智能系统在病人护理方面有更高的表现率。

但是我们如何确保我们做出最好的决定,把我们的生命放在这些算法的功能上。

努力确保和概述这些 ML 算法的最佳决策模型在很大程度上依赖于两个强大的假设: AI 必须能够访问全人口的电子健康记录(EHR)并且这些 EHR 必须能够被 AI 解释。

或者我们可以停止生病。

但那是另一天的话题😉。

所以你的意思是…“我们完蛋了”

不完全是。

有许多人实际上意识到了解决这个问题的重要性,并且目前正在致力于专注于伦理人工智能维度的解决方案。

像多伦多创业公司 Winterlights Labs 这样的公司正在研究实际解决有偏见的数据集的方法,为阿尔茨海默病、帕金森病和多发性硬化症等神经系统疾病建立听觉测试。

努力消除所有形式的诊断中的偏见,避免根据性别或种族进行定性,但有时会根据其他特征进行定性,如语言、皮肤类型、谱系或来自有缺陷的数据集的生活方式。

收集大量以前患者的数据集,输入到他们的人工智能算法中,以获得患者的最佳特征,并帮助康复过程。但是这个过程最独特的地方在于,Winterlight 实验室非常注重收集以英语为母语的人的数据,以进行有针对性的治疗。

这不仅仅是 Winterlight Labs 试图解决医疗保健中道德人工智能的复杂性,而是致力于解决一个严重的问题,并为其他公司继续创新和寻找新的方法来彻底改革医疗保健领域树立先例

正在消失的穷人

原文:https://towardsdatascience.com/the-disappearing-poor-6c68789e5a53?source=collection_archive---------16-----------------------

(Source)

探索令人难以置信的全球繁荣收益:现实项目第 1 集

25 年来的每一天,报纸都可以正确地刊登“昨天 13 万人摆脱极端贫困”的标题(来源)。相反,据我所知,这已经出现在一个主要报纸的头版整整 0 次。也许这解释了人们在这个简单问题上记录的令人难以置信的可怕结果(来自 Gapminder ):

Question 1. of the Gapminder test

在美国问这个问题的时候, 5%的人类得到了正确答案C:几乎减半。而动物回答这个问题有 33%的准确率(因为是随机猜的)。

在像美国这样一个理应有文化的社会里,人们怎么可能对现实如此误解?我不喜欢指责,但在这种情况下,这可能是合理的:媒体成功地向我们提供了关于世界的错误信息。他们没有报道事实,而是选择激发我们天生的仇外心理(害怕外来者),让我们相信有一个富裕的“发达世界”,然后是其他所有人,一群永远无法摆脱贫困的穷人。

幸运的是,有了正确的数据,我们可以纠正对贫困的错误看法。在这样做的时候,我们发现了一个显著的事实:在过去的几十年里,世界各地的人们都经历了显著的繁荣,导致数十亿人的生活水*明显提高。

这是现实项目的第一集,致力于用数据减少对世界的误解的每周系列。

关于全球贫困和收入的事实

首先,我们需要看看统计数据。关于这个主题的最佳资源是我们的世界数据“全球极端贫困”页面。你可以在那里看到所有的数字,但有一张图表足以显示贫困人口的急剧下降:

Global share of the world population in extreme poverty.

我们可以看到,贫困的定义因机构而异,但无论我们使用哪种定义,比率都急剧上升。当然,在下降,但是因为人多了,不就意味着还有更多的人穷吗?

晚间新闻是个不错的尝试,但是 T2 生活在贫困中的人口数量也急剧下降,自 1990 年以来已经减少了超过 12 亿。

Number of people living in extreme poverty.

这些人从极端贫困中崛起后会走向何方?简单:融入全球中产阶级。在撰写本文时,世界上大约 85%的人(70 亿人中的 60 亿人)处于或超过全球收入水*的中间部分。区分“发达”和“发展中”是看待世界的错误方式:不存在两种收入水*,而是一个*稳的标尺,世界各地的人们都在快速攀升。

我们可以从数字上观察到全球财富的急剧增长。随着全球贫困人口的减少,收入会随着时间的推移而增加,如人均国内生产总值所示(摘自《我们的世界》数据“经济增长”第页):

Gross Domestic Product Per Capita around the world.

因此,事实是,贫困在减少,收入在以极快的速度增加,但这真的重要吗?有可能人们赚了更多的钱,却没有过上更好的生活?

为什么财富很重要:富裕国家是更好的居住地

所有这些看起来都不错,但你可能会想,财富的增加是否真的意味着人们过得更好。嗯,根据下面这张显示生活不满意度与人均 GDP 的图表,答案是响亮的“是”。

Dissatisfaction in Living vs GDP (Source)

随着财富的增加,人们对生活越来越满意。金钱不是治疗所有疾病的灵丹妙药,其影响只持续到一定的收入水*,但财富是积极的,因为它带来了副作用:婴儿死亡率更低,受教育机会更多,工作时间更少。

人们很容易在所有的数字中忽略人类,所以记住每个数据点的背后都有一个人是很重要的。数十亿人摆脱了贫困,这意味着母亲们不必埋葬她们的孩子,因为随着财富的增加,护理质量会提高,女孩们能够上高中,家庭生活更加健康、幸福。我不太擅长谈论个人,但是汉斯·罗斯林在他的优秀著作《真实》中提供了故事(除了事实之外)。

对我来说,我将用《我们的世界》中的另一张数据图表来结束这一部分,这张图表展示了为什么减少贫困是积极的:

Average Number of Years of Schooling vs Poverty Levels

数据再清楚不过了:在世界各地,人们正在摆脱贫困,步入中产阶级。因此,他们活得更长,上学更多,工作更少,生活更愉快。

全球贫困减少的原因

这种下降背后可能有许多因素在起作用(就像任何人类现象一样),但我将集中讨论最令人信服的论点:商业。(关于这个主题的完整论述,请参见马特·里德利的《理性乐观主义者》。

几十万年来,人类从事零和互动:一个人偷了或杀了另一个人,所以有人的收获被另一个人的损失抵消了。在这个系统中,人类的整体状态只能得到冰山般的改善(当交流仅限于步行速度时,提高生活水*的新工具传播非常缓慢)。

然而,大约从公元 1000 年的欧洲开始,一种新的互动形式出现了:经济交流,双方都从中受益。这项被称为商业的发明完全改变了游戏规则:人们现在能够进行正和交易,双方都获利。这是文明的一个基本组成部分:在商业中,卖商品的人和买商品的人都会胜出。

在历史的大部分时间里,人类拥有恒定数量的物质财富,这些财富可以转手,但总体上不会增加。随着商业的发明,随着人们进行商品交易和专业化分工,经济蛋糕本身的规模也在扩大。国家内部和国家之间的交流导致了劳动分工,人们或国家专门扮演一个角色,导致效率的大幅度提高。人类花了很长时间才弄明白,但一旦我们创造了交易所和市场经济,我们就开始了持续至今的不可思议的财富上升之旅。

我们可以从下面的图表中看到*年来贸易的有利影响。随着国家贸易的增加,它们变得更加富有:

Change in trade 1945–2014 versus change in wealth

不要把我误认为自由市场的传道者。在我开始努力通过数据减少对世界的误解之前,我是一个公开的社会主义者,支持北欧国家作为效仿的典范。然而,我对这些数字的研究得出了一个结论:自由市场及其促成的交换是摆脱贫困的驱动力。我仍然相信政府的作用:政府在环境保护和工人权利等领域的严格控制对于确保财富的增加不以环境破坏为代价是至关重要的。

商业让人们摆脱贫困的非凡能力在中国可见一斑,在过去 40 年里,中国经历了历史上最令人难以置信的财富增长。正如《中国如何摆脱贫困陷阱》 中所描述的,随着***领导人逐渐开放中国的商业,尤其是与其他国家的贸易,中国摆脱贫困的过程非同寻常。1978 年,中国允许对外贸易,40 年后,中国再次成为世界强国。一路走来,数亿人的生活水*得到了提高。

China’s incredible rise in GDP per capita

(商业不仅导致收入增加,还导致国家内部和国家之间的暴力发生率下降。正如史蒂芬·*克在《我们本性中的善良天使》一书中所记载的,当从别人那里买东西比偷东西便宜时,经济学就赢了。我们的邻居活着比死了对我们更有价值,这意味着更少的杀戮和更多的交易。这就是所谓的温和商业理论。)

警告

虽然长期前景非常乐观,但关注仍需改善的现实也很重要。目前,全球仍有数亿人处于极端贫困之中,这些人中的每一个人都应该成为中产阶级。不幸的现实是,世界上绝大部分的穷人在非洲,像联合国这样的组织正在通过有针对性的支出项目和社会安全网制度来努力消除贫困。

Where extreme poverty still exists (source)

今天,大约有 7.5 亿人仍然处于极端贫困之中。尽管如此,考虑到 1990-2015 年间有 12 亿人脱离了极端贫困,所有迹象表明极端贫困可以终结

此外,任何时候提到收入问题,我们都必须提到收入不*等。如果国家变得越来越富裕,但财富却流向了更少的人,那么人类真的过得更好吗?

再一次,值得看看数据,这次是关于国家内部和国家之间的不*等。我们将转向数据文章“收入不*等”“全球经济不*等”中的“我们的世界”来了解事实。幸运的是,数字再次提供了一个乐观的答案。虽然一些国家的国内不*等现象有所增加,但总体而言全球不*等现象有所减少,并且预计将继续减少。

从下面的图中,我们可以看到,如果我们将不*等定义为收入最高的 1%的人占总收入的比例,一些国家的不*等程度有所增加。(这个定义可能有一些问题)。

Share of income going to top 1% in selected nations.

另一方面,全球经济不*等有所下降:

Global income distribution showing decline in Gini coefficient.

总的来说,从不*等的角度来看,一些国家的财富分配可能越来越不*衡,但总的来说,由于最贫穷国家的总体财富水*增长最快,即使是收入水*最低的国家也变得更富裕。我不会就不*等是否是负面的展开辩论,但是,从长期的全球视角来看,现在似乎并没有变得更糟。

结论

新闻不仅误导了你对这个世界的认识,而且通过宣传一幅虚假的画面,它偷走了一些有价值的东西:随着看到这个世界变得更好而带来的快乐。虽然对我们短期内面临的挑战持现实态度很重要,但放眼全局并认识到我们所有的集体努力都在发挥作用也很重要。

世界各地的人们正在脱离贫困,步入中产阶级,因此,他们的寿命更长,更健康,生活更愉快。

我想用最后一张图表来结束我的演讲,这张图表强调了现实项目最重要的部分:当我们意识到世界范围内的贫困正在减少时,它应该给我们信心,消除贫困的努力并不是愚蠢的。虽然减少贫困的最大贡献者(很可能)是商业,但像联合国倡导的那样的减贫努力也是至关重要的。如果你认为贫困率在上升,那么你唯一的结论就是这些项目不起作用。另一方面,如果你像我们一样挖掘数据,发现了世界的真实状况,你会意识到这些努力已经产生了影响。

Effectiveness of anti-poverty programs (source)

减贫计划给受益者带来的好处远远超过成本(详见“一个多层面的计划为非常贫困的人带来持久的进步:来自六个国家的证据”)。下一次有人声称总会有穷人,帮助他们没有用,温和地纠正他们,不是用观点,而是用数据。

来源

除了整篇文章中列出的资源,这里还有一些供你自己研究的资源。我欢迎任何讨论。

  1. 数据中的世界:极度贫困
  2. 我们的数据世界:经济增长
  3. 原始数据:世界银行
  4. “透视极端贫困的减少”
  5. 真实性:我们看错世界的十个理由——以及为什么事情比你想象的好 作者汉斯·罗斯林
  6. 《理性的乐观主义者:繁荣如何演变》作者马特·里德利

一如既往,我欢迎反馈、对话和建设性的不同意见。可以在 Twitter @koehrsen_will 上找到我。

设计人工智能的人和受其影响最大的人之间的脱节

原文:https://towardsdatascience.com/the-disconnect-between-those-who-design-artificial-intelligence-and-those-most-affected-by-it-94871f5ae9b5?source=collection_archive---------15-----------------------

Photo by Katarzyna Pe on Unsplash

人工智能和自动化正在继续深入我们的社会。

  • 商业行业,公司现在利用智能个人助理(如 Alexa、Cortana 和 Siri)提供的语音识别来加快他们的任务。
  • 交通行业,人工智能为即将到来的无人驾驶汽车提供动力,并帮助管理交通流量。
  • 教育部门,人工智能被用于支持个性化学习系统。
  • 医疗保健领域,人工智能正在推动新的诊断工具和决策支持技术。
  • 零售部门,人工智能正在改进仓库设施的设计,使流程更加高效。
  • 电影业,人工智能正被用于创作管弦乐和制作电影短片
  • 人道主义领域,人工智能正被用于支持可持续发展目标的实现。

然而,在设计和实施这些系统的人和那些受结果影响最大的人之间似乎存在脱节。

据报道,2019 年英国人工智能程序员的*均年薪目前约为 6 万英镑。与此同时,据报道,英国所有工人的*均年薪约为 36611 英镑。

广泛自动化的结果

自动化日常操作有很多好处。它为人们提供了从重复性任务转向更有益、更具挑战性的工作的机会,让他们能够发挥自己的情商。

但目前,情况远非如此:

相反,低技能工人发现自己不断被降级为越来越不安全、收入越来越低的角色。

对于一些人来说,他们的工作已经完全被取代了。

2013 年,牛津大学的研究人员研究了 702 个职业群体。他们发现,47%的美国工人很有可能在未来 20 年内看到自己的工作自动化。最*在 2017 年,麦肯锡的一份报告预测,到 2030 年,30%的“工作活动”将实现自动化——这一变化将影响全球多达 3.75 亿工人。这是相当多的人。

纵观历史,新的技术创新浪潮总是会导致关于自动化的公共辩论激增。这场运动可与整个工业革命中脱离农业社会的转变相提并论。这方面的证据可以给我们一些启示,为今天的政策辩论提供信息。

早在 20 世纪,人们就一直担心自动化会让人类失业。1950 年,约翰·肯尼迪将自动化描述为一个会给人类带来“困难”的“问题”。

15 年后的 1965 年,IBM 的一位经济学家说,自动化将导致每周工作 20 小时。考虑到普通美国人仍然*均每周工作 34.4 小时(T4 时间为 T5),这个预测显然还很遥远。

但是,解决工业革命的不公正用了几十年的时间。这一次,我们等不起那么久。

如果就业水*大幅下降,人们担心西方民主国家可能会诉诸威权主义,这种情况早在上世纪 30 年代大萧条之后就在一些国家蔓延开来,如今许多经历了高度收入不*等的国家也是如此。

真正的挑战是管理过渡

西方政治已经变得越来越动荡。收入不*等正慢慢开始进一步扩大,加剧了本已岌岌可危的政治不稳定。很大一部分人将需要为新职业接受再培训。他们不再年轻,而是中年专业人士。发达经济体可能会受到转型的最大冲击,因为*均工资的提高会进一步刺激自动化。

自动化会有很大的不同,取决于工业部门。医疗保健等行业的工作岗位将会增加,以应对人口老龄化,而涉及体力劳动和数据处理的工作岗位将会减少。

不可能确切知道有多少工作将受到人工智能的影响,因为根据对输入数据的处理,研究给出了非常不同的估计。

普华永道的一份报告表明将会有三次主要的自动化浪潮。

Source

第一波将发生在 21 世纪 20 年代初,预计将取代很低比例的工作岗位——约 3%。

第二波浪潮预计将在 21 世纪 20 年代末到来,预计将取代文书和行政部门的许多工作岗位。

第三次浪潮预计将在 21 世纪 30 年代中期到来,可能会导致今天 30%的工作自动化——特别是那些涉及汽车设备和机器的工作。

受教育程度较低的工人更容易被机器取代:

Source

我们如何解决这个问题?

麦肯锡在的报告中以美国在工业革命期间从农业转型为例。随着农业就业机会的减少,中等教育的支出大幅增加,新的法律规定必须上学。

1910 年,14 至 17 岁的孩子中有 18%上了高中。

到 1940 年,73%的 14 到 17 岁的孩子上了高中。

教育水*的提高有助于创造一个繁荣的制造业。

如果我们希望自动化的未来取得成功,显然今天也需要类似的推动。越来越清楚的是,人工智能不会导致“工作的终结”。它可以创造尽可能多的工作岗位。相反,未来的工作只需要不同的技能组合。

政府建议网络需要支持更多的企业使用机器学习。我们需要培养各个层次的技能——从学校到行业专业人士,到本科生和研究生。

遗憾的是,事实似乎并非如此。事实上,在过去几十年中,用于培训和支持劳动力的支出一直在下降。此外,许多学校仍未能向学生传授技术的关键概念。

自动化不一定是一场灾难——但如果政治家们不理解我们对变革的需求并对此做出反应,它将是一场灾难

如果我们希望技术让每个人受益,而不是进一步扩大不*等,我们需要立即开始为未来培训我们的劳动力。无所作为将导致社区之间更大的分裂和两极分化。

如果政治家、工会和商界领袖想要确保技术变革的结果是好的,他们现在就需要行动起来。

美国分裂的州——历史透视

原文:https://towardsdatascience.com/the-divided-states-of-america-historical-perspectives-4b0ff53cf073?source=collection_archive---------41-----------------------

这个国家在现代史上从未像今天这样两极分化。据说,在过去的总统选举中,民主党和共和党候选人之间的差距要大得多。下面的地图描绘了过去五次总统选举的趋势,你可以发现更多的白人县在 2000 年比 2016 年差距缩小。随着时间的推移,一些明显的变化包括中西部的红色加深,而沿海的加利福尼亚则相反。

Darker colors indicate wider margins (blue: Democrats, red: Republican)

Voting share margin between Republican and Democratic candidates

在许多县,共和党和民主党候选人的投票份额差距已经扩大。过去几年,利润率的标准差一直在不断增加:2000 年为 0.26,2008 年为 0.29,2016 年为 0.35。在此期间,分布尾部,即无竞争力的县大幅增加。

我之前的文章中,我发现人口和社会概况数据有很强的力量来讲述 2016 年县级总统选举结果。这篇文章提出的问题是人口的变化是否导致了美国政治的两极分化。例如,如果城市有价值观与民主党一致的人流入,它们可能会变得更蓝。与此同时,如果与共和党有密切关系的人留在农村,这些县会变得更红。

然而,我发现,至少在 2010-2017 年期间,人口的变化并没有推动国家的两极分化,而选举的特征(如候选人、问题)更能解释两极分化的趋势。

在这项分析中,我使用了 2010 年至 2017 年美国人口普查美国社区调查(五年数据)的数据概况表,选择了 292 个在县一级一贯可用的变量。缺失值由 XGBoost 回归器估算。在此期间,举行了两次总统选举。我构建了回归模型,自变量来自美国人口普查 ACS,因变量来自总统选举中共和党和民主党候选人之间的投票份额差额。

XGBoost Regressor 还被选为其他机器学习回归模型中得分最高的基础模型。样本按县总投票数加权。如左图所示,施加重量会增加标称误差。

然而,加权样本在投票计数方面导致更小的误差。该模型提高了较大县市的准确性,但代价是较小县市的准确性。因此,在这个分析中,我将根据各县的总票数使用一个具有样本(县)权重的模型。

首先,我将 2016 年的人口普查数据和同年的选举结果拟合到模型中,并用不同年份的人口普查数据进行预测。这样,我们可以想象 2016 年选举在不同年份的人群中发生的假设情况。如果县一级人口结构的变化导致了两极分化,那么 2010 年人口普查数据中的红色县在以后几年的人口普查数据中会更红。

结果并不令人信服。在下面的图表中,您可以看到 x 轴上有 2010 年人口普查数据的模型的预测利润,以及 2010 年和 2016 年数据的模型预测之间的差异。如果有一个向上的斜坡,我们可以说 2010 年红色县在 2016 年有更大的优势支持共和党候选人,反之亦然。相反,我们看到的是下面的*面图;这意味着由人口变化引起的投票份额差额的变化与初始条件没有明显的相关性,总体而言,人口不是两极分化的明确驱动因素。

Voting share margin between Republican and Democratic candidates. Source: US Census

话虽如此,了解摇摆州各县市的人口结构和社会状况的变化可能是有用的。以下图表描述了 2016 年模型预测的民主党和共和党候选人的投票份额,以及 2017 年之前不同年份的人口数据。在佛罗里达州,特朗普以 1.2%的微弱优势赢得了 29 张选举人票,2016 年至 2017 年的人口结构变化有利于共和党,而我们看到的情况相反,这有利于宾夕法尼亚州的民主党人,他们在 2016 年以 0.7%的优势赢得了 20 张选举人票。2018 年美国人口普查 ACS 数据将于 12 月 19 日公布,看看最新数据的预测会很有趣。

Voting share of Democratic (blue) and Republican (red) candidates. Source: US Census

其次,我比较了用 2012 年和 2016 年数据集构建的两个模型,并检查了每个模型的重要特征和错误。

我发现 2012 款和 2016 款有很多共同点,如下图。乘坐公共交通工具或自己开车上下班很重要,因为城市(有公共交通的地方)往往比农村更蓝。结构单元(即居住在独立房屋或多单元公寓)和卧室数量也与城乡差别相关。这些变量在 2016 年比 2012 年更重要;在过去的四年里,城市和农村之间的差异加深了。人们还注意到,种族(包括“西班牙裔和拉丁裔以及种族”)在 2016 年拥有更大的权力,因为共和党在白人县加强了支持,而民主党在种族更加多样化的县市增加了支持。驱动 2016 年选举结果的特征的详细分析可以在我之前的文章中找到。

Feature importances in 2012 and 2016 models. Source: US Census

Root Mean Square Error of 100 trials of both models. Source: US Census

不出所料,2016 年的模型误差在统计上明显小于 2012 年,如左图所示。县一级的人口和社会概况比上次更能说明 2016 年总统选举的结果。这一事实是该国社会分裂加深的证据之一。

最后,我将 2012 年和 2016 年模型的预测利润率与 2016 年的人口数据进行了比较。2012 年-2016 年数据的模型将告诉我们,如果奥巴马和罗姆尼在 2016 年参加总统竞选,会发生什么。

很明显,2016 年的模型结果(y 轴)比假设的 2012 年选举结果(x 轴)更加两极化。在人口不变的情况下,2016 年的选举导致共和党候选人在红色县更强大,民主党候选人在蓝色城市获得更多支持。

Voting share margin between Republican and Democratic candidates. Source: US Census

如上所述,我没有发现任何证据支持县人口结构的变化导致了美国的政治两极分化,尽管监测摇摆州的人口和社会概况的变化可能是有用的。两极分化的原因是总统候选人、问题和选举本身的特点发生了变化。2020 大选在即,至今我们还没有看到任何两极化缓解的线索。

客户服务自动化的注意事项

原文:https://towardsdatascience.com/the-dos-and-donts-of-customer-service-automation-a1f3bb866330?source=collection_archive---------12-----------------------

权威指南

在这个快速发展的数字时代,人们几乎没有时间去杂货店购物或去 10 英里外的办公室工作。随着世界继续变得更加数字化,21 世纪的人类变得比以往任何时候都更加懒惰。这种数字化不仅影响了普通人;它还为公司提供了尽可能高效地服务客户的机会。只需点击一下鼠标,任何事情都需要一个即时的解决方案,这种需求导致更多的公司选择自动化,并尽可能多地用人工智能取代人类与客户的互动,来为他们做这项工作。

“信息技术和商业正变得密不可分。我不认为任何人可以有意义地谈论一个而不谈论另一个”——比尔·盖茨。

因此,当我们谈论出色的客户互动时,我们谈论的是基于清晰沟通、短响应时间和跨渠道一致性的客户体验。客户体验对客户来说必须是非凡的,任何客户参与的行为必须总是感觉良好。对于组织而言,与客户接触应该是一个*稳且经济高效的过程。

75% and 55% of customers prefer short response times and cross-channel consistency, respectively. Automation has enabled companies to become fast, efficient, and accessible to their customers.

在这个时代,公司必须时刻保持警觉,以适应快速变化的客户需求和市场趋势。如今,一家企业必须提供卓越的客户体验,才能在全球市场中保持竞争力。幸运的是,人工智能的智能功能使公司能够通过每次客户互动了解客户的需求,同时牢记组织的业务目标。因此,现在,企业将人工智能视为向客户提供难忘体验的重要因素。

然而,许多人仍然害怕自动化。有一种观点认为,有了那些花哨的机器人之类的东西,工作场所的事情可能会变得疯狂。然而,以下是所有害怕自动化的人不喜欢做的事情:等待电话接通客服代表,在车管所排队等候几个小时,没有人帮助他们网上购物。

答根据埃森哲战略公司的调查,61%的客户去年因为糟糕的客户体验而停止了与至少一家公司的业务往来。

在提供无缝客户体验方面,效率太低了,因此现在企业向人工智能寻求帮助至关重要。尽管雇用人工智能来做这项工作是明智的,但公司必须在使用人工智能和人类互动之间找到正确的*衡,以服务于他们的客户。不是所有的问题都可以通过自动化服务解决,因为它有一系列的限制。埃森哲战略的研究显示,大约 60%的顾客由于糟糕的客户服务而没有购买他们想要的东西。

因此,当务之急是要有一个清晰的“客户服务自动化的注意事项”列表,以了解企业如何使用自动化客户服务来增强客户体验。

当自动化客户服务时,这是企业应该做的

  • 有一个自动处理常见问题的系统:
    常见问题是客户在联系企业客户代表时最常问的问题。理想情况下,人工智能应该处理常见问题。拥有一个自动的 FAQ 部分(或聊天机器人)可以有效地回答这些问题,这为客户和公司带来了巨大的好处,因为它可以快速解决客户的疑问,并减轻客户服务团队的负担。
  • 确保自动跟进将潜在客户转化为付费客户往往需要不止一次的接触。因此,跟进技巧对成功销售至关重要。然而,跟进的艺术并不适合所有人。许多人觉得无聊乏味。此外,跟进越快越有效,因为线索可能在几小时内枯竭,如果不是几分钟的话。自动跟进系统通过自动跟进潜在客户和付费客户来解决这个问题,而您只需做很少或根本不做任何工作。他们还在提高 CX 方面发挥着关键作用,在每次客户互动后都会发送客户服务调查,以揭示服务中的差距。
  • 预测客户的行为
    系统应该包含根据客户的行为预测代理所需的下一步行动的技术。它应该能够从每次交互中收集数据,并准备好处理预期的问题。然后,收集的信息可用于预测未来的客户问题、代理的响应和后续问题,从而通过采用预先计划的方法来增强客户体验。
  • 拥有一个在自动代理和人工代理之间无缝传输的系统
    实时聊天和自动支持之间应该有一个联盟。标准化的回答不能解决每个客户的问题。人类输入的整合对系统的成功至关重要。

Seamless transfer between the automated and human agent is essential to address all types of customer concerns

  • 开发信心评分机制 该机制可以评估客户对自动化系统的感受和信心。人工智能系统应该知道顾客什么时候不高兴和不满意,这样就可以把行动转向人类。
  • 为每个客户准备一个可更新的知识库
    应该有一个知识库,它可以在每次客户互动后自我更新。更新的信息理想地包括顾客的位置、身份、过去的购买和偏好,这使得系统更擅长迎合顾客的特定需求,并且帮助管理员组织和管理内容以及控制用户的访问。
  • 征求反馈
    自动化不是一件容易的事情。它需要定期测试并根据反馈进行改进。寻求反馈会让顾客感到受到重视,并帮助企业想出更好的方法来服务顾客。

虽然客户服务自动化承诺了高利润、增加的客户满意度和最大的生产率,但是它仍然不能用于处理特定和复杂的情况。尽管人工智能是一项超级智能的技术,但如果处理不当,它可能会导致客户不满。因此,企业家应该能够区分自动化可以胜任的任务和需要人工协助的任务。

自动化客户服务时,企业不应

  • 更换一个系统;相反,自动化系统应该与客户服务代表合作。它不可能回答客户的所有问题。因此,系统应该知道什么时候需要人工输入,什么时候不需要。
  • 依靠一个渠道 客户通过各种渠道联系公司客服。这是他们的选择,给他们这样做的自由。一个公司的自动化系统应该能够从多个渠道而不是一个渠道提取重要的客户信息,所有的自动化渠道应该相互连接,并与销售代表连接。
  • 使用自动化解决复杂的支持问题 自动化系统可用于解决简单的客户问题,如账单、采购和产品查询。有时问题过于复杂,人类的参与对于理解、协商和解决问题变得至关重要。
  • 接受过时的系统
    系统应定期更新和维护,以避免对客户作出多余和不相关的回应。如果客户服务成功实现自动化,经理们就可以把时间花在企业的其他核心活动上。

一锤定音

客户服务自动化(CSA)是一个不可思议的工具,它保证了高利润、增加的客户满意度和最大的生产力。遵循上面提到的原则,它可以发挥最大的潜力。然而,如果管理不当,CSA 会给企业带来弊大于利的影响。自动化最有益的用途是在人工智能和客户服务中的人工支持之间取得*衡。

使用 Mongoose 处理大数据的严重错误

原文:https://towardsdatascience.com/the-drastic-mistake-of-using-mongoose-to-handle-your-big-data-a3c408e21a4c?source=collection_archive---------10-----------------------

介绍

在 NPM 宇宙中,mongose 是一个非常受欢迎且做得非常好的库。基于其模型-模式结构,它被许多优秀的程序员广泛使用。事实上,在 Google 中粗略地查看许多使用包含 MongoDB 的数据模型创建任何类型的堆栈的示例,您会发现作者在他们的开发结构中大多包含 Mongoose。这是一个受人尊敬、保存良好、非常受欢迎的图书馆。以上所述都是事实,作者的高超技巧和对社区需求的理解值得称赞。

以上不是免责声明,也不是愤世嫉俗的说法。事实上,我已经推迟了这篇文章的发布很长时间,因为我认为它可能不会被 MongoDB 社区很好地接受。然而,Mongoose 的本质,它迫使人们对数据做什么,以及它如何迫使程序员思考,才是本文的重点。 我充分意识到,在这里写的东西可能会在当前的 NodeJS — NPM 社区中非常不受欢迎。然而,根据我自己职业生涯中最*发生的事件,是时候解释为什么在几乎所有真正的大数据场景中都应该避免使用 Mongoose 了。让我把这个说法说得更严厉些。这也是我真正鄙视在 NodeJS 中使用 Typescript 的原因。这也迫使变量在进入系统之前被输入。

NoSQL 数据库背后的想法

对 NoSQL 应该做什么的任何简单理解是,它是以这样一种方式构造的,即获取少量或大量数据并将它们存储在集合或数据存储中。无论您希望如何称呼您的数据库,事实仍然是数据本身在存储时就是“数据”。现在还没有,将来也不应该在数据存储中局限于这样的想法,即数据的每个方面都必须符合预定义的结构。当然,对许多人来说,当存储诸如名称之类的东西时,确保名称是一个“字符串”似乎是完全有意义的。或者,当我存储一个数量时,确保该数量存储为“数字”是完全有意义的。

然而,大数据系统不仅仅是存储姓名、地址和选择。它们是关于获取一个人可能获得的关于手边物品的每一条信息,并且能够以你希望的任何方式储存这些信息以备后用。的确,在这里需要注意的是,获取数据的整个理念已经发生了变化。没有任何模式或一致性过滤的数据本身不再是目标。我们的目标是获取数据并应用于您正在使用的任何引擎或代码库,以这样一种方式对其进行过滤,使其可行,并可能成为您公司感知财富中最重要的武器库之一。

NoSQL 从传统的 SQL 数据库发展而来,以避免对触发器、传统关系甚至主键的需求。它之所以发展,是因为数据变得如此庞大,而且在传统格式中没有定义,以至于人们需要一种不同的方法来将数据视为一个整体,并将各种数据连接起来。

简而言之,NoSQL 是非线性思维的一种形式,注入和取出数据。NoSQL 的要点是,在信息进入数据库之前,你不应该“键入”信息。当你拿出它来获取信息时,你就可以输入信息了。这是通过智能聚合、算法、理论构造来实现的,所有这些都基于你所寻找的模式和信息。

线性思维

为了保护 Mongoose 用户,他们通常在 SQL 世界中接受训练,在 SQL 世界中,每一项都有一个特定的结构,一个系统是相关的(关系数据库),基于主键、关系和触发器。这是典型的线性思维。它对诸如姓名地址之类的小事情非常有用。数据库、博客帖子、书评等。我相信这里可以举出数百万个例子。我自己,使用 MySQL 和 PHP 已经很多很多年了。它过去是,现在仍然是一个优秀的系统。事实上,您将在任何搜索中找到的大多数示例,甚至是 NodeJS & MongoDB 的完整系统都会利用这样的场景,包括 Mongoose。

然而,它迫使人们以线性方式思考。它强制线性规划。它从步骤 1 到步骤 2 到步骤 3 等等。当然,在 MySQL 系统中有 blob 或巨大的文本字段,但是这些需要大量的编码和准备工作,以便提取准确的所需信息。如今,传统的 MySQL 系统不是为大量实时数据需求而构建的。

MySQL 的本质就是反对使用大量“非类型化”数据。

毫无疑问,今天它提供了允许非结构化数据的能力,但是表、触发器和关系的本质是建立在结构之上的。

更有甚者,MySQL 结构会变得异常复杂。表 A 转到表 B,然后触发表 C 中的关系,然后从表 D 中获取信息,然后表 D 必须对表 E 进行排序以检索信息。这个链条实际上可以有 20-30 张桌子。它不仅混乱,而且对于不经常在结构顶部的任何人(DBA)来说,保持它的正确性几乎是不可能的。

然而,即使在这种情况下,主要原因是它们根本不是为这些天来出现的非结构化数据而构建的。

猫鼬结构

因此,这是有道理的,人们会被 Mongoose 所吸引,以便对正在收集的数据应用某种结构。更重要的是,因为 Mongoose 作为一个中间件与 Express、Passport 等配合得非常好。并且它以正常的方式提供了到 MongoDB 所需的连接,在没有清楚地考虑整个系统应该做什么的情况下,人们自然不应该忽略它。在模式模型系统中,人们可以传递几乎任何类型的函数来实现真正的 CRUD。它还允许回调、承诺和 ES6。以上都很棒。

然而,有一个警告。按照 Mongoose 的工作方式,您必须以典型的 JSON 格式定义(键入)信息的性质。在实际情况下,尤其是对于大量数据,任何有经验的数据分析师都会告诉你,这样的模型不仅对数据本身非常不利,而且几乎不可能实现。

在数据进入数据库之前输入数据

在数据最终进入您的集合之前对其应用类型的本质,意味着您确切地知道什么类型的数据正在进入,什么类型的数据正在进入。无论是任何类型的字符串、数字或任何状态。同样,这也适用于小型系统的简单解决方案,在这些解决方案中,您专注于您 100%确定将获得的特定数据。但是在实时实例中或者在接收 JSON 包中的数据时,有时信息不在那里或者突然出现一个额外的键值,会发生什么呢?或者,当您在处理医疗或保险信息时,必须从不同类型的数据中提取大量不同的数据,会发生什么情况呢?

当然,您可以争辩说,您可以返回并更改该集合的模式模型以包含这些更改。这使得一切都很好地包装在模型中,当然也很容易阅读。然而,它并不反映真实世界的场景,一个真正的大数据系统的模式模型将会非常复杂,同样,不仅需要 MongoDB 及其所有可能性的知识,而且可能还需要一个 DBA 来处理 Mongoose 设置。

再次出于错误的目的扩展中间件

任何 NodeJS 程序员都会告诉你,如果被问到中间件,Express 通常会在栈顶。路由,JWT,护照,头盔和许多其他人将继续堆栈。无论你设计得多好,都很容易迷失在这样的堆栈中。我见过 package.json 文件,其中使用的 NPM 模块数量之多令人震惊。也许所有这些都是需要的,老实说,我是一个真正的 NPM 信徒。但是,栈就是栈。中间件没有被正确引入,或者引入的顺序不对,会严重降低系统的运行速度,或者使系统无法运行。除了在数据上强制输入类型之外,您正在处理的系统可能反应更快,延迟更少,最重要的是对非格式化数据的拒绝更少。

结论

我想重申,猫鼬的创造者们做了一件令人难以置信的工作。他们还允许 SQL 程序员加入 NoSQL 的世界,而不需要对他们思考数据的方法进行重大改变。此外,对于小型系统,Mongoose 可能是个不错的选择。

然而,如果您真正在处理复杂的大数据场景,或者来自各地的实时数据包,其中值、类型和信息可能会随着数据包的不同而变化,那么 Mongoose 应该被排除在您的等式之外。您必须掌握 MongoDB 的所有细微差别,包括 MapReduce、aggregation 等。CRUD 不再仅仅是 CRUD。在大数据系统中,它远远超出了典型的 SQL CRUD 类型的操作。这需要对大数据的真正本质有更多的了解,而不仅仅是旧的名称-地址-电话;登录并接受某种类型的书面数据。当您超出这个范围进行开发时,我的建议是将 Mongoose 放在一边,使用 MongoDB 原生构造创建一个函数库。避免使用 Mongoose 的中间件,不管你对它有多了解。最终,这样的系统 Mongoose 会拒绝没有输入的信息,你会丢失它。这在大数据场景中可能是灾难性的。

选择权在你,显然这是一篇观点文章。如果您正在开发真正的大数据系统,我简单的拙见是,不要考虑 Mongoose。不要“键入”(阅读:预定义)你的信息。不要对进入你系统的东西设限。获取您可能获得的所有数据,然后通过正确的算法和对原生 MongoDB 命令的操作,您将能够实现不仅收集数据而且通过任何可能的方式找到模式和连接的目标。这允许灵活性和非线性思维过程。这就是 NoSQL 被创造出来的原因。


关于作者:Ted Gross 担任 CTO 多年,擅长数据库技术、NodeJS、MongoDB、加密、PHP 和 OOP。他擅长虚拟世界技术和增强现实。他还发表了许多关于技术主题的文章,特别是关于大数据和混沌理论的文章(在专业期刊和在线@ Medium & LinkedIn 上)。他也是文学小说、儿童书籍和各种非小说文章的作者 。他的短篇小说集 【古代故事、现代传说】 获得了极好的评价。

可以通过电子邮件联系到泰德:tedwgross@gmail.com;推特(@ tedw gross);LinkedIn中等

有史以来最简单的 GitHub 教程

原文:https://towardsdatascience.com/the-easiest-github-tutorial-ever-4a3aa0396039?source=collection_archive---------25-----------------------

对于那些对 Git 和 GitHub 不放心的人,我制作了这个超级简单的教程来入门并了解 Git 和 GitHub 的优势可以是什么。

通过这五个超级简单的步骤,你将对 GitHub 有一个非常基本但非常重要的理解。

这是一个实用教程。如果你想更深入地了解 GitHub,可以在这里查看我的另一篇文章: 在开始使用 GitHub 之前你需要知道的一切

1.在 GitHub 上创建一个资源库

转到 GitHub.com,点击“创建存储库”。

给你的存储库一个名称和描述。

选中用自述文件初始化此存储库复选框(自述文件是一个简单的文本文件,您可以在其中放置有关当前项目的信息)

然后单击“创建存储库”。

2.将存储库克隆到您的本地 pc 上

我处理你的代码,你需要把这个库放到你的电脑上。这是通过克隆它来实现的。

最简单的方法是通过 GitHub 桌面。

Cloning a repository through GitHub Desktop

当你这样做的时候(当然你应该已经安装了 GitHub 桌面),你会看到下面的屏幕:

选择正确的位置并克隆您的存储库。

你现在可以在你的电脑上找到它。

3.将代码文件添加到您的存储库中

对于这一步,忽略 GitHub。只需在您的 pc 上浏览到您克隆存储库的位置,并创建一个测试文件:

将文件命名为“testfile”:

在其中输入一些文本并保存文件:

4.提交并推送代码

我们的库现在已经改变了,我们应该把新版本更新到 GitHub。

回到 GitHub 桌面,看到它已经注意到你改变了一些东西:

上传代码需要采取两个步骤:

首先,键入一个类似“Create testfile.txt”的小注释,然后单击“Commit to master”。

其次,点击“推送原点”:

5.验证 GitHub 上的代码是否已更改

已经完成了!为了验证它是否真的有效,您现在可以在 GitHub 上看到您的更改。只要进入你的库的 GitHub 页面,你就会看到代码已经改变了!

您刚刚迈出了 GitHub 世界的第一步。当然,还有更多需要了解的,敬请关注。感谢阅读!

有史以来最简单的 Python Numpy 教程

原文:https://towardsdatascience.com/the-easiest-python-numpy-tutorial-ever-5c206c809a0d?source=collection_archive---------12-----------------------

馅饼很好吃!

Pie

想获得灵感?快来加入我的 超级行情快讯 。😎

Python 是迄今为止最容易使用的编程语言之一。编写程序是直观的,阅读代码本身也是如此——这几乎就像简单的英语!

Python 最大的优势之一是它源源不断地提供强大的库。为了提高速度,这些库至少有一部分是用 C / C++编写的,而且为了方便使用,还在上面加了一个 Python 包装器!

Numpy 就是这样一个 Python 库。

Numpy 主要用于数组形式的数据操作和处理。它的高速加上易于使用的功能使其成为数据科学和机器学习从业者的最爱。

这篇文章将成为学习如何使用 Numpy 的代码教程——有史以来最简单的一篇!

创建数组

Numpy 提供了几种创建数字数组的方法。如果您有一些自定义数据,可以通过numpy.array()函数手动完成,或者使用一个内置的 Python 函数来创建更标准的东西。

获取数组信息

一旦创建了数组,就可以检索它的一些基本信息。因为数组已经作为 Numpy 数组加载,所以可以直接使用数组的属性。

基本算术

每当您希望对您的数据执行任何种类的数学运算时,Numpy 将是一个极好的选择。Numpy 可以执行几乎所有的基本数学运算,这些运算通常应用于其他 Python 对象(列表、集合等)——但是速度更快!

Numpy 的许多数学函数都是用优化的 C 代码编写的,这比你在那里找到的任何其他 Python 实现都要快得多。

数组切片和整形

切片是一种非常常见的 Python 操作,对于 Python 列表来说相对容易。但是当你试图在大的多维物体上做切片时,事情就变得混乱了。

Numpy 为所有 Numpy 阵列提供了非常简单直观的切片功能,从而扭转了局面。

更多有趣的提示和技巧

一旦掌握了 Numpy 的窍门,就可以开始探索它的一些更高级的功能了。这将使您能够完全控制您的阵列,从而轻松处理它们。

我在下面展示了其中的一小部分。更多内容可以在 Numpy 写得很漂亮的参考页中找到。

喜欢学习?

在 twitter 上关注我,我会在这里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上和我联系吧!

评估 Python 中交易策略性能的最简单方法

原文:https://towardsdatascience.com/the-easiest-way-to-evaluate-the-performance-of-trading-strategies-in-python-4959fd798bb3?source=collection_archive---------3-----------------------

Source: unsplash

了解如何用一行 Python 代码生成全面的性能报告!

这是 Python 中回溯测试交易策略系列文章的第三部分。之前的文章描述了以下主题:

  • 介绍zipline框架并展示如何测试基本策略(链接)
  • 导入自定义数据以使用zipline ( 链接)

这一次,本文的目标是展示如何使用名为pyfolio(由zipline的创造者 Quantopian 开发)的库快速有效地评估我们的策略的性能。pyfolio可以作为一个独立的库使用,只根据一系列的回报提供性能结果。然而,它与zipline一起有效地工作,我在本文中介绍了这种组合。

简单移动*均策略

在本文中,我只展示了一个基本策略,因为主要重点是评估性能。为此,我选择了基于简单移动*均线(SMA)的策略。该战略的逻辑可以总结如下:

  • 当价格向上穿过 20 日均线时,买入 20 股
  • 当价格向下穿过 20 日均线时,卖出所有股票
  • 我们在任何时候最多只能有 20 股
  • 策略中没有卖空

我使用 IBM 2016 年至 2017 年的股票对该策略进行了回溯测试。关于如何创建这样一个策略以及特定组件实际上做什么的细节,请参考我的上一篇文章

我首先加载所需的库:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import zipline
import warnings
import pyfolio as pf

然后,我运行策略:

zipline自动创建一个性能数据帧,您也可以在代码的输出中看到。为了方便起见,我将输出存储在一个名为simple_moving_average.pkl的 pickle 文件中。为了尽可能*滑地进行分析,我们可以使用pyfolio提供的效用函数,加载业绩数据框架中最重要的 3 个元素——回报、头寸和交易。为此,我使用了pf.utils.extract_rets_pos_txn_from_zipline

sma_results = pd.read_pickle('simple_moving_average.pkl')
returns, positions, transactions = pf.utils.extract_rets_pos_txn_from_zipline(sma_results)

我们现在可以检查提取的元素:

returns.head()

2016 年的前 20 个交易日可能不会有回报,因为目前仍是均线的预热期。

positions.head()

positions数据框架包含我们在考虑的资产中有头寸的每一天的条目,并显示股票和现金之间的资本分割。我们可以看到,通过购买 20 股 IBM 股票,我们仍然以现金形式持有大部分资本。对于更高级的策略,我们可以通过使用order_percent为每个订单分配一定比例的资金。

transactions.head()

transactions数据框架包含交易策略执行的所有交易——我们看到买卖订单。

简单撕纸

为了评估策略、投资组合甚至单个资产的表现,我们使用pyfolio来创建一个模板。样张是一种简洁的文档(通常是单页的),包含关于上市公司的最重要的信息,如财务指标。pyfolio提供的功能比一张纸所能包含的要多得多,但为了简单起见,我们从一张简单的便笺开始,它只包含最重要的信息。

为了创建它,我们运行以下命令:

pf.create_simple_tear_sheet(returns)

``pyfolio`'真正了不起的地方在于它只用一行代码就产生了如此多的信息!

我们看到的第一个表格显示了测试的日期、持续了几个月以及许多财务指标,例如:

  • 年回报率/标准差
  • 偏斜度-第三个矩描述了分布的偏斜程度
  • 峰度——第四个矩表示分布的尾部是否有更多的质量
  • 夏普比率——一个非常受欢迎的风险指标。它表示每单位风险(用标准差衡量)的超额收益(超过无风险利率)。
  • Sortino 比率——夏普比率的修改版本,其中标准差被下行偏差取代。下跌背离只衡量系列的负波动性,严格来说,低于一个预定义的水*,称为最小可接受回报。
  • ω比率——另一种风险回报绩效指标。与夏普比率相比,它最大的优势在于——从结构上来说——它考虑了所有的统计矩,而夏普比率只考虑了前两个。
  • 最大压降—表示波峰和波谷之间的最大压降(以百分比表示)
  • 每日风险值——另一个非常流行的风险指标。在这种情况下,它表明在 95%的情况下,我们将头寸/投资组合多保留 1 天,损失不会超过 0.5%。

前 3 个要点与资产回报的程式化事实有关,我在之前的一篇文章中描述过。

下一张图展示了我们策略的累积回报——我们可以观察我们的投资组合在实施这一策略的两年中的价值演变。*稳期代表我们不持有资产的时期。

我们还可以看到滚动夏普比率,这为我们的战略稳定性提供了更多的见解。我们看到报告的总体夏普比率为 0.84,但是,当我们查看滚动比率时,我们会看到它随时间的波动性(使用滚动 6 个月的数据计算,而不是整个样本!).

最后一张图表——水下图——从悲观的角度展示了这项投资。我所说的悲观,是指它专注于亏损。它描述了提款,并显示了投资组合的价值在遭受损失后恢复到之前的峰值需要多长时间。这个图表很容易区分正常和长期的损失。

我们通过只将returns对象传递给函数来创建所有这些图。我们还可以通过之前提取的头寸和交易,在简单的撕单上自动接收更多信息!此外,我们还可以指定一个live_start_date,它将时段分为回溯测试时段和实时交易时段(zipline提供了这种可能性)。为此,我们只需运行:

pf.create_simple_tear_sheet(returns, positions, transactions, live_start_date='2017-01-01')

在下表中,我们可以立即看到变化:

  • 有两个独立的分析阶段
  • 提供头寸和交易相关数据会产生额外的指标,如总杠杆和额外营业额

简单的撕页还包含更多与头寸和交易相关的图,但是,为了简洁起见,我没有显示它们。

全撕裂片

在上一部分中,我们只创建了一个简单的模板,它给出了策略性能的简明概述。通过创建完整的样张,可以轻松获得更多信息(样张的详细程度也取决于所提供的信息,此处我们仅使用退货)。

pf.create_full_tear_sheet(returns)

我在完整的样张中展示了一些新的表格/图表:

  • 一个表格,列出了 5 个最严重的亏损,以及峰谷日期和持续时间等信息

  • 累积回报之上的前 5 个提款期。在我们的案例中,提款期几乎涵盖了整个投资期。其中一个原因是,在很长一段时间内,我们没有未*仓头寸,因此累计回报没有变化,从而延长了恢复时间。

  • 一个简单的图表显示了一段时间内的每日回报。*坦期反映了我们在标的资产中没有头寸的时期。

  • 通过将策略回报细分为:月度回报(每年分别计算)、年度回报(每年),一个呈现月度回报分布的直方图,以及以不同频率表示的最终回报分位数,对策略回报进行了汇总。

结论

在本文中,我展示了如何使用pyfolio轻松获得大量描述资产/战略/投资组合表现的财务指标和图表。这篇文章给出了一个高层次的介绍,但仍然有许多方面要涉及。

pyfolio的其他一些功能包括:

  • 无需创建简单/完整的分析表,即可手动访问图表——例如,我们可以通过运行pf.plot_drawdown_periods(returns, top=5)来创建一个“前 5 名最差提款图表”
  • 我们可以在创建样张时考虑滑动
  • 创建贝叶斯活页(基于 PyMC3,需要安装独立的依赖项)

Quantopian 还发布了一个名为empyrical的库,用于计算pyfolio中使用的所有风险指标。使用它的一个可能的好处是当我们纯粹对计算一个度量感兴趣时,比如欧米伽比率或索提诺比率。如果是这样的话,我当然推荐empyrical做这个任务。

Quantopian 创建了ziplinepyfolioempyrical这样的综合库,值得称赞!

一如既往,我们欢迎任何建设性的反馈。你可以在推特上或者评论里联系我。您可以在我的 GitHub 上找到本文使用的代码。

以下是该系列的其他文章:

  • 基于技术分析建立算法交易策略(链接)
  • 基于均值-方差分析建立算法交易策略(链接)

我最*出版了一本关于使用 Python 解决金融领域实际任务的书。如果你有兴趣,我贴了一篇文章介绍这本书的内容。你可以在亚马逊或者 T21 的网站上买到这本书。

参考

使用 MLRun 跟踪数据科学实验的最简单方法

原文:https://towardsdatascience.com/the-easiest-way-to-track-data-science-experiments-with-mlrun-d2df0ac147d9?source=collection_archive---------21-----------------------

我遇到的几乎每个客户都处于开发基于 ML 的应用程序的某个阶段。有些才刚刚起步,有些已经投入巨资。看到数据科学这个曾经常用的时髦词汇如何成为几乎所有公司的真正战略,真是令人着迷。

在下面的文章中,我将解决客户一再提出的挑战之一——运行和调优实验跟踪。通过一步一步的教程,我将涵盖复杂性问题,并展示如何用 MLRun 解决它们,ml run 是一个新的开源框架,它优化了机器学习操作的管理。

MLRun 是一个开源框架,它为数据科学家和开发人员/工程师提供了一个通用且易于使用的机制,用于描述和跟踪机器学习相关任务(执行)的代码、元数据、输入和输出。

MLRun 跟踪各种元素,将它们存储在数据库中,并在单个报告中显示所有正在运行的作业以及历史作业。

数据库位置是可配置的,用户可以根据标准运行查询来搜索特定的作业。用户在本地 IDE 或笔记本上运行 MLRun,然后使用横向扩展容器或函数在更大的集群上运行相同的代码。

安装 MLRun

安装 MLRun 库,运行 import 命令并设置 MLRun 数据库的路径:

!pip install git+https://github.com/mlrun/mlrun.gitfrom mlrun import new_function, RunTemplate, NewRun, get_run_db
import yaml
import pandas as pd
# set mlrun db path (can also be specified in run_start command)
%env MLRUN_DBPATH=./

关键要素

  • 任务(运行)-使您能够定义运行所需的参数、输入、输出和跟踪。可以从模板创建运行,并在不同的运行时或函数上运行。
  • 功能—特定于运行时的软件包和属性(例如,映像、命令、参数、环境等)。).一个函数可以运行一个或多个运行/任务,并且可以从模板中创建。
  • 运行时——一个计算框架。MLRun 支持多种运行时,如本地 Kubernetes 作业、DASK、Nuclio、Spark 和 mpijob (Horovod)。运行时可以支持并行和集群(即在进程/容器之间分配工作)。

在代码中添加 MLRun 钩子

为了捕获上面提到的数据,在作业本身中添加钩子。您可以跟踪作业的结果、模型文件或 csv 文件之类的工件、源代码、标签等等。

MLRun 引入了 ML 上下文的概念。检测代码以从上下文中获取参数和输入,以及日志输出、工件、标签和时序度量。

from mlrun.artifacts import ChartArtifact, TableArtifact, PlotArtifact
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd# define a function with spec as parameter
import time
def handler(context, p1=1, p2='xx'):
    # access input metadata, values, and inputs
    print(f'Run: {context.name} (uid={context.uid})')
    print(f'Params: p1={p1}, p2={p2}')

    time.sleep(1)

    # log the run results (scalar values)
    context.log_result('accuracy', p1 * 2)
    context.log_result('loss', p1 * 3)

    # add a lable/tag to this run 
    context.set_label('category', 'tests')

    # log a simple artifact + label the artifact 
    context.log_artifact('model.txt', body=b'abc is 123', labels={'framework': 'xgboost'})

    # create a matplot figure and store as artifact 
    fig, ax = plt.subplots()
    np.random.seed(0)
    x, y = np.random.normal(size=(2, 200))
    color, size = np.random.random((2, 200))
    ax.scatter(x, y, c=color, s=500 * size, alpha=0.3)
    ax.grid(color='lightgray', alpha=0.7)

    context.log_artifact(PlotArtifact('myfig', body=fig))

    # create a dataframe artifact 
    df = pd.DataFrame([{'A':10, 'B':100}, {'A':11,'B':110}, {'A':12,'B':120}])
    context.log_artifact(TableArtifact('mydf.csv', df=df, visible=True)) return 'my resp'

运行作业

具体到这个例子,我们在 Jupyter 中使用了一个内联代码。但是请注意,您也可以将其保存为 python 文件并运行。

接下来,定义任务及其参数,例如任务名称、输入参数、秘密文件(如果需要)和标签。

创建一个函数,指定命令(即我们的 Python 脚本)并将其分配给之前定义的任务。

作业完成后,它将显示作业运行时在 MLRun 跟踪数据库中捕获的信息。

task = NewRun(handler=handler,name='demo', params={'p1': 5}).with_secrets('file', 'secrets.txt').set_label('type', 'demo')
run = new_function().run

作业被捕获到 MLRun 数据库中。

使用超级参数运行作业

超参数非常重要,因为它们直接控制训练算法的行为,并对被训练模型的性能有重大影响。数据科学家通常希望用不同的参数运行同一个模型,以找出最适合的配置。

首先,创建一个模板(见下文),然后用 hyper_params 标志运行它。

在这种情况下,MLRun 跟踪每个正在运行的实例的信息,从而便于在不同的运行之间进行比较。

基于下面的示例,运行训练作业的三次迭代,每次使用不同的参数,并查看作业如何确定损失最低的迭代。

task = NewRun(handler=handler).with_hyper_params({'p1': [5, 2, 3]}, 'min.loss')
run = new_function().run(task)

查看作业结果

一旦工作完成,结果就会显示出来。单击“iteration_results”工件,打开一个包含详细信息的窗口。在我们的例子中,第二次迭代具有最低的损失分数,这被定义为我们的最佳拟合函数,因此显示为“最佳迭代”。

显示迭代结果

使用分布式框架(即 DASK)运行作业

现在,让我们在集群上运行相同的作业,作为大规模运行的分布式进程。你需要做的只是改变框架,而不需要改变任何代码。

在下面的例子中,我使用了 DASK 框架,它与 Iguazio 数据科学*台相集成,因此不需要 DevOps。

%%timeit -n 1 -r 1
run = new_function(command='dask://').run(task, handler=handler)

总结

如果您试图独自完成所有工作,运行和跟踪数据科学工作可能需要大量开发工作和劳动密集型任务。MLRun 提供了在您的笔记本电脑上本地运行任何作业的灵活性,或者以更简单的方式在大规模的分布式集群上运行任何作业。用户可以轻松运行报告来获得每个作业的详细信息,如果需要,可以使用所有工件和元数据重新生成和运行任何以前的作业。

欲了解更多关于 MLRun 的详情,请访问 MLRun 回购https://github.com/mlrun/mlrun
https://github.com/mlrun/demos

接下来的步骤

在 Iguazio 的数据科学*台上运行,可以挑选各种内置框架并大规模运行作业,从而在整个机器学习管道中提高性能并消除基础设施开销。

数据科学家实现高级数据可视化的简单方法

原文:https://towardsdatascience.com/the-easy-way-to-do-advanced-data-visualisation-for-data-scientists-bbc852e26fb6?source=collection_archive---------18-----------------------

Show off your data’s true colors!

想获得灵感?快来加入我的 超级行情快讯 。😎

创建有效的数据可视化是数据科学家能够拥有的最有价值的技能之一。

可视化不仅仅是制作精美的图表,它还是一种以人们易于理解的方式交流数据集信息的方式。有了良好的可视化,人们可以最清楚地看到隐藏在数据中的模式和信息。

在项目的早期阶段,您通常会进行探索性数据分析(EDA ),以获得对数据的一些见解。创建可视化将有助于您加快分析速度。

在项目接*尾声时,能够以一种清晰、简洁、有说服力的方式呈现最终结果是很重要的,这样观众(通常是非技术风险承担者)才能理解。

毫无疑问:将你的可视化提升到一个新的水*将会增强你的分析——并帮助你在下一次演讲中脱颖而出。

这篇文章将是一篇关于如何轻松创建高级数据可视化的教程!我们将使用 plotly ,一个用于创建交互式可视化的 Python 库!

介绍 plotly

Plotly 是一个交互式的、开源的、基于浏览器的 Python 图形库!它构建在 D3.js 之上,使得它的可视化能力比标准的 Matplotlib 更加广泛和灵活。

与其他能够绘图的 Python 库(如 Matplotlib、Seaborn 和 Pandas)相比,使用 Plotly 有两个主要优势。这些是:

(1)易用性 —创建交互式绘图、3D 绘图和其他复杂图形只需几行代码。在其他绘图库中做同样的事情需要更多的工作。

(2)更多功能 —由于 Plotly 是基于 D3.js 构建的,所以它的绘图功能比其他绘图库要大得多。旭日图、烛台图、地图等等都可以用 Plotly 实现。点击查看完整列表

我们可以用一个 pip 命令安装 Plotly:

pip install plotly==4.0.0

在本教程的剩余部分,我们将创建房价数据集的可视化,你可以从 Kaggle 中获取。

用 Plotly 制造奇特的情节

我们可以用 Plotly 创造一些非常奇特的情节!

首先,让我们导入plotly及其内部图形对象组件。我们还将导入熊猫来加载我们的数据集

*import* plotly
*import* plotly.graph_objs *as* goimport pandas as pd

在我们的数据集中阅读当然只是熊猫的一行程序:

data = pd.read_csv('train.csv')

散点图

在本练习中,我们将在散点图中绘制销售价格与年度生产的对比图。为此,我们将创建一个 plotly Scatter图形对象,并将其放入一个trace

trace = go.Scatter(
    x = data['YearBuilt'],
    y = data['SalePrice'],
    mode = 'markers',
    showlegend = *True* )
plot_data = [trace]

然后,绘图只是一行之遥!

plotly.offline.plot(plot_data, filename='basic-scatter')

上述命令将在您的浏览器中打开一个新的选项卡,其中包含该图。

还没有什么新奇的东西…但是你等着吧!

Plotly 自动内置了图形交互性。看看下面的 gif,看看它能做什么!所有命令都在浏览器的右上角:

  • 悬停在每个点上会显示该点的 x-y 坐标
  • 你可以放大某个数据框
  • 您可以使用框或套索选择并高亮显示某些点
  • 您可以*移整个地块以更好地查看事物
  • 你可以下载一个图片文件!

箱线图

这次我们要做一个方框图。

过程也差不多。我们将创建一个 graph 对象,将其放入跟踪中,然后在浏览器中绘制它:

*import* plotly
*import* plotly.graph_objs *as* go

*import* pandas *as* pd

data = pd.read_csv('train.csv')

trace = go.Box(
    x = data['YearBuilt'],
    y = data['SalePrice'],
    marker = {'color': 'green'},
    showlegend = *True*,
)
plot_data = [trace]

plotly.offline.plot(plot_data, filename='basic-box')

看看下面的 gif 图,看看盒子图的一些奇特的 Plotly 特性!

默认情况下,我们获得相同的*移、缩放和点选择。由于我们现在有一个方框图,将鼠标悬停在每个方框上会显示:

  • 中位数
  • 第一和第三四分位数
  • 数据范围的最小值和最大值
  • 存在异常值时的上限和/或下限

热图

热图是任何伟大的数据科学家工具箱中的另一个强大工具。它们对于在一个图中显示多个特征变量之间的关系以及每个关系的相对重要性特别有效。

为了真正展示如何使用 Plotly 增强您的热图,我们将把房价数据集的相关矩阵绘制为热图。绘制数据集的相关矩阵是了解要素变量如何影响目标的一种快速简便的方法。

对于 plotly,我们将 xy 设置为列名,将 z 设置为矩阵中的值。

在我们的浏览器中绘制这一切又是一件轻而易举的事情。

*import* plotly
*import* plotly.graph_objs *as* go

*import* pandas *as* pd

data = pd.read_csv('train.csv')

corrmat = data.corr()

trace = go.Heatmap(z=corrmat, x=corrmat.columns.tolist(), y=corrmat.columns.tolist())

plot_data = [trace]

plotly.offline.plot(plot_data, filename='basic-heatmap')

Matplotlib 中的热图可能有点棘手,因为您无法看到每个单元格的确切值——您只能从颜色中看出一点。您可以编写代码使其具有交互性,但这在 Matplotlib 中相当麻烦。

Plotly 为我们提供了开箱即用的交互性,因此当我们绘制热图时,我们可以获得直观的概览,但如果需要,还可以选择检查确切的值。Plotly 的*移和缩放功能也非常简洁,允许从视觉角度进行更详细的探索!

喜欢学习?

在 twitter 上关注我,我会在这里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上和我联系吧!

将 MaxMind GeoIP 与 Redshift 结合使用的简单方法

原文:https://towardsdatascience.com/the-easy-way-to-use-maxmind-geoip-with-redshift-65cf979e63b1?source=collection_archive---------5-----------------------

Photo by Westley Ferguson on Unsplash

它总是从一个无辜的观察开始。“我们有很多来自波斯顿的流量,”你的老板说。你自然会抛出一两个猜测,并讨论为什么会这样。直到你的老板扔下炸弹—

“你能深究一下吗?”

该死的。你直接走进了那个房间。

现在你陷入了困境。你知道谷歌分析有地理位置的流量,但这不会削减它。如果您想按地区报告这些保留率、生命周期值或重复行为,您需要可以用 SQL 查询的东西,即存储在您的数据仓库中的东西。但是你没有那样的东西。你知道在你的日志数据中有用户 IP 地址,你只需要把它们转换成位置。但是红移没有办法做到这一点。

你需要的是地理定位使用 IPs,又名 GeoIP。人们通常从 MaxMind 开始,主要是因为这是“GeoIP”的第一个谷歌搜索结果。我们将一起使用他们的 IP-to-City 数据集来丰富我们的日志数据,并确定我们的用户来自哪个城市和国家。我们将使用 MaxMind 数据,因为它可靠且稳健。而且是免费的。少了一件麻烦你老板的事。

所以我们去下载 MaxMind 的 GeoLite2 城市数据。打开 zip 文件后,我们发现了许多 CSV 文件,其中最重要的是GeoLite2-City-Blocks-IPv4.csv。如果我们往里面看,这是我们看到的:

我们马上注意到一个问题——这个数据看起来像一个 IP,但在末尾有一个斜杠和一个额外的数字。这是一个用 CIDR 符号表示的 IP 网络,它表示一系列 IP。它由一个 IP、一条斜线和斜线后的一个数字组成,称为子网掩码。这就像你可以说“西 23 街 500 号街区”来描述纽约市的一条街道一样。

如果我们有网络1.2.3.0/24,那就意味着“每个 IP 都以1.2.3.开头,结尾是 0 到 255 之间的任何数字。换句话说,1.2.3.01.2.3.255之间的任何 IP。因此,如果我们观察到一个 IP 为1.2.3.95的用户,它将属于网络1.2.3.0/24,因此位于6252001geoname_id。子网掩码可以是 1 到 32 之间的任意数字,数字越小,网络越宽。

如果这个 MaxMind 表是红移的,我们怎么加入它?红移不包括任何方便的 网络地址类型 喜欢现代 Postgres 或者 INET 函数 喜欢 MySQL。相反,我们将使用 IPs 背后的数学知识来自己完成这项工作。

你可以把一个 IP 看作是一个非常大的数字的一种奇特的表现。IP 1.2.3.4其实只是引擎盖下的16,909,060。类似地,IP 网络只是一系列非常大的数字。网络1.2.3.0/24是从16,909,056开始到16,909,311结束的范围。我们将利用这一点。为此,我们需要一种将 IP 和 IP 网络转换为数字的方法。

使用 MaxMind 提供的 geoip2-csv-converter 工具,我们将把每个网络的整数范围表示添加到 csv 中。

注意,我用的是 20190108 版本。MaxMind 每周更新此数据集,因此您的版本可能会有所不同。

上传我们修改后的 CSV 到 S3,我们可以COPY它变成红移。

现在让我们写一个函数把 IPs 转换成真正的大数字。这里有一个用 SQL 写的简单的。我们将根据做同样事情的 Linux 实用程序把它叫做inet_aton。“inet”代表“互联网”,“aton”表示“ A 地址tN号”。Linux 的人喜欢让事情简单明了。

我们需要做的最后一件事是加载 MaxMind CSV,它包含从geoname_id到地球上实际位置的查找。为了加快速度,我们将 gzip 它,上传GeoLite2-City-Locations-en.csv.gz文件到 S3,COPY它到一个表。

红移优化的一些快速指针。对于像这样的小型、常见的连接维度表,我推荐使用DISTSTYLE ALL。这将在集群中的每个节点上创建一个表的副本,从而消除了连接过程中的数据传输步骤。为了加快速度,我还将我们的连接列定义为一个SORTKEY

现在,我们拥有了使用 GeoIP 使用位置数据丰富日志所需的一切。几乎一切。

红移很难

如果我们将新的 MaxMind GeoIP 表加入我们的日志数据,我们将立即遇到问题。假设我有一些基本的访问日志,并尝试按流量计算前 50 个地区。

如果您运行了这个查询,您将会有一个糟糕的时间。你的查询将运行几分钟,你会开始出汗。与此同时,你的红移管理员将会寻找那个破坏她的星团的人。不要成为那样的人。

这个查询有什么问题?快速浏览一下EXPLAIN计划,红移执行查询所采取的步骤列表,就知道了一切。

假设你经营一家冰激凌店,有数百万种美味的口味。如果排队的每个顾客都必须品尝每一种口味,然后才能选择一种,那会怎么样?如果我们试图使用我们的BETWEEN join (taste-test)直接将我们的日志数据(客户)与 MaxMind 数据(口味)结合起来,就会发生这种情况。这导致了一个 嵌套循环连接这是让数据库哭泣的最快方法之一。

为了加快冰淇淋店的速度,我们将把它分成不同的区域——巧克力在这里,香草在那里,薄荷口味放在一个特别的地方。通过这种方式,顾客会前往符合他们偏好的区域。一旦到了那里,与之前相比,他们会品尝少量的味道。

创建优化的 GeoIP 查找表

我们将在 Redshift 中构建一个新表,它将取代针对 GeoIP 查找而优化的maxmind_ipv4_to_geo。我们将使用 IPs 的前半部分将其组织成不同的部分,并将每个网络放入相应的部分。一些网络足够宽,以至于它们可以进入多个部分。这些部分的作用几乎就像一个数据库索引,允许 Redshift 缩小每个 IP 要检查的网络。使用一点小魔法,我们把我们的表转换成一个快速优化的表。

创建了查找表后,我们可以再进行一次分析。在我们的查询中,我们用maxmind_ipv4_to_geo替换了maxmind_ipv4_lookup,并添加了一个新的连接条件。我们将使用正则表达式REGEXP_SUBSTR(log.ip_address, '\\d+\.\\d+')提取每个 IP 的前半部分,并将其匹配到表mm_geo.first_16_bits中相应的部分。然后我们使用 IP 和网络的整数表示来检查它属于哪个网络。通过这种优化,我们的查询很快返回,看不到嵌套循环连接!

这样,你就可以开始分析了。您可以使用此查找表来连接到任何其他具有 IP 的红移。只要记住总是包括到first_16_bits的连接,因为这是方法背后的魔力。

这种方法的灵感来自于我读过的一篇关于在网络设备中优化 IP 查找的论文。不幸的是,我再也找不到报纸了。这篇文章是将该解决方案移植到红移并迭代以简化它的结果。

感谢 Slack 激发了这篇文章,感谢 Julian Ganguli 编写了一些早期代码,感谢 Nick James 阅读了早期草稿。

在 Python 中使用 CSV、JSON 和 XML 的简单方法

原文:https://towardsdatascience.com/the-easy-way-to-work-with-csv-json-and-xml-in-python-5056f9325ca9?source=collection_archive---------2-----------------------

想获得灵感?快来加入我的 超级行情快讯 。😎

Python 卓越的灵活性和易用性使其成为最受欢迎的编程语言之一,尤其是对数据科学家而言。其中很大一部分是因为处理大型数据集是多么简单。

如今,每家科技公司都在构建数据战略。他们都意识到,拥有正确的数据:有洞察力的、干净的、尽可能多的数据,会给他们带来关键的竞争优势。数据如果得到有效利用,可以提供在其他任何地方都无法发现的深层洞察。

这些年来,可以用来存储数据的可能格式的列表显著增加。但是,有 3 种在日常使用中占主导地位:CSV、JSON 和 XML。在本文中,我将与您分享在 Python 中使用这 3 种流行数据格式的最简单方法!

CSV 数据

CSV 文件是存储数据的最常见方式。你会发现大部分来自 Kaggle 比赛的数据都是这样存储的。我们可以使用内置的 Python csv 库读写 CSV。通常,我们会将数据读入一系列列表中。

查看下面的代码。当我们运行csv.reader()时,我们所有的 CSV 数据都变得可访问。csvreader.next()函数从 CSV 中读取一行;每次你调用它,它就移动到下一行。我们也可以像使用for row in csvreader一样使用 for 循环遍历 csv 的每一行。请确保每行中的列数相同,否则,在处理列表时可能会遇到一些错误。

用 Python 写 CSV 也一样简单。在单个列表中设置域名,在列表列表中设置数据。这一次我们将创建一个writer()对象,并使用它将我们的数据写入文件,与我们读取数据的方式非常相似。

当然,一旦你将数据读入一个变量,安装奇妙的 Pandas 库将使你的数据处理变得容易得多。从 CSV 文件中读取只是一行,将它写回文件也是一行!

我们甚至可以使用 Pandas 通过一个快速的命令行程序将 CSV 转换成字典列表。一旦您将数据格式化为字典列表,我们将使用dicttoxml库将其转换为 XML 格式。我们还会将它作为 JSON 保存到文件中!

JSON 数据

JSON 提供了一种清晰易读的格式,因为它维护了一种字典式的结构。就像 CSV 一样,Python 有一个内置的 JSON 模块,让读写变得超级简单!当我们在 CSV 中阅读时,它会变成一本字典。然后我们把字典归档。

正如我们之前看到的,一旦我们有了数据,您可以通过 pandas 或使用内置的 Python CSV 模块轻松转换为 CSV。当转换成 XML 时,dicttoxml库总是我们的朋友。

XML 数据

XML 与 CSV 和 JSON 有点不同。一般来说,CSV 和 JSON 由于简单而被广泛使用。作为一个人,它们读、写和解释起来既简单又快速。不需要额外的工作,解析 JSON 或 CSV 是非常轻量级的。

另一方面,XML 往往有点重。您正在发送更多的数据,这意味着您需要更多的带宽、更多的存储空间和更多的运行时间。但是 XML 确实比 JSON 和 CSV 多了一些特性:您可以使用名称空间来构建和共享标准结构、更好的继承表示,以及用 XML schema、DTD 等表示数据的行业标准化方法。

为了读入 XML 数据,我们将使用 Python 的内置 XML 模块和子模块 ElementTree。从那里,我们可以使用xmltodict库将 ElementTree 对象转换成一个字典。一旦我们有了字典,我们就可以像上面看到的那样转换成 CSV、JSON 或 Pandas 数据帧!

喜欢学习?

推特上关注我,我会在那里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上和我联系吧!

人工智能的经济和商业影响:现实,而不是炒作

原文:https://towardsdatascience.com/the-economic-and-business-impacts-of-artificial-intelligence-reality-not-hype-ee851dfd258e?source=collection_archive---------22-----------------------

Image by Michael Gaida from Pixabay

关于人工智能(AI)的辩论的特点是夸张和歇斯底里。

这种夸张是由于两种影响:首先,自利投资者对人工智能的推动。它可以被称为“谷歌效应”,以其首席执行官桑德尔·皮帅的名字命名,他宣称人工智能“可能是人类有史以来最重要的东西”。他会这么说。第二,技术传播者将人工智能作为解决人类根本问题甚至死亡的方法。它可以被称为“奇点效应,以雷·库兹韦尔命名,他认为人工智能将在 2045 年导致“奇点”。

这种歇斯底里同样源于两种影响:首先,来自 AI 构成现实威胁的警告。这可以被称为“埃隆-马斯克效应”,这是在一位亿万富翁企业家发推文称“国家层面的人工智能优势竞争最有可能导致 WW3 imo”之后。第二,来自人工智能可能通过工作自动化导致大规模失业的警告。这可以被称为“机器人效应”,源自马丁·福特的畅销书《机器人的崛起:技术和大规模失业的威胁》。

The Immediate and Imagined Impacts of AI © Wim Naudé

在最*的讨论论文中,我对谷歌-奇点-埃隆-马斯克-和- 机器人-效应进行了批判性调查,并认为缺乏支持夸张和歇斯底里的确凿证据。

早在 2013 年,据估计在 10-20 年内,美国 47%的工作可以自动化,在欧盟发展中国家甚至更多。六年后,发达经济体的失业率事实上处于历史低位,而不是大规模失业。表明用于计算人工智能导致的潜在失业的方法对假设很敏感。此外,证据表明自动化在 1999 年到 2010 年间在欧洲创造了 150 万个新的工作岗位。

与此同时,我们看到劳动生产率增长持续下降。英国自 2007 年以来的十年*均劳动生产率增长是自 1761 年以来的最低水*。即使是从人工智能中受益最大的全球超级公司,也没有变得更有生产力。这让人对人工智能已经并将会显著提高生产力的说法产生了怀疑。

为什么机器人和谷歌效果没有实现?至少有三个原因:

首先,人工智能在经济中的扩散速度比大多数人想象的要慢。对 T2 的小公司来说,经济地实施人工智能尤其困难。成长中的伪 AI 就是这样的结果。《卫报》指出“很难建立一个由人工智能驱动的服务。事实上,这太难了,以至于一些初创公司已经发现,让人类像机器人一样行动比让机器像人类一样行动更便宜、更容易。

第二,AI 创新越来越难;它主要用于微调和瓦解现有产品,而不是推出全新的产品。玩谷歌的巴赫涂鸦可能很有趣,但它几乎不会提高生产率。应用机器学习(ML)的唾手可得的果实可能已经收获收益递减似乎已经开始,最重要的是,ML 正面临可复制性危机。摩尔定律的终结可能就在眼前。

第三,鉴于大多数西方国家的消费者需求增长缓慢,企业投资人工智能无利可图。大多数人工智能创新都是在自动驾驶汽车的视觉系统中。尽管如此,自动驾驶汽车最引人注目的是它们没有出现在我们的道路上。这种情况可能会在持续很长一段时间,由于的技术原因,以及由于的沉没投资

有人可能会说,仅仅因为人工智能的影响在过去很小,这并不排除大规模的影响在未来仍然会发生。也许机器人大战是不可避免的,因为人工智能的进步。这样的论调是基于对 AI 的误解。“人工智能”这个词本身就有误导性。现在的 AI,用 ML,并不智能。关于人工智能的一个笑话是:“当你筹款时,它就是人工智能。当你在招人的时候,就是 ML。当你实施时,这是逻辑回归”。有各种各样的理由怀疑非人工智能研究是否会很快产生超级智能,而不仅仅是目前人工智能应用的一招小马

由于大肆宣传和歇斯底里,许多政府都在争先恐后地制定国家“人工智能战略”。全球治理组织争相采取行动。举行会议并发布关于“工作未来”的旗舰报告已经成为一种时尚。

联合国秘书长有史以来第一次发布了“新技术战略”,挑出包括人工智能在内的某些技术给予特别关注,其依据是“自动化、人工智能和机器人有望促进经济增长,但它们也可能加剧国家内部和国家之间的不*等,并可能导致失业”。受这一战略的启发,联合国大学政策研究中心( CPR )更进一步为联合国在人工智能领域的计划干预辩护,声称人工智能正在“改变地缘政治秩序”,更令人难以置信的是“智能机器和人类之间的力量*衡已经明显转变。其博客为“政府间人工智能小组为“联合国领导的多利益相关方全球治理机制”。是的,它认为人工智能与气候变化具有同样的复杂性和重要性。还有许多其他人工智能夸张和歇斯底里导致疯狂提议的例子。

挑出人工智能由联合国、各国政府,甚至一个政府间人工智能小组来控制和监管,无助于将焦点转移到技术而不是真正的问题上。技术是一个“移动的目标”:想象一下,如果在第二次工业革命期间,一个政府间小组被召集起来“全球治理”电力会怎样?19 世纪晚期的电力案例实际上提供了相关的历史警示。正如卡洛琳·托马斯·德拉佩纳所述(第 113 页),某些地方爆发了歇斯底里:“末日预言是由那些害怕电力偏离他们感知的自然秩序的人做出的。牧师们特别倾向于这种观点……根据特纳主教的说法……从‘白人控制电力的发明’中有很多东西是令人恐惧的”。

政府对技术和创新的监管在最好的时候也充满了困难和意想不到的后果。当它建立在歇斯底里和夸张的基础上时,任务可能会特别成问题。当这样一个有问题的任务由全球政治机构承担时,他们的决定通常是在一个“无证据区”做出的,建议谨慎行事。

结果是,对人工智能的大肆宣传和歇斯底里导致了一场关于人工智能的“精神错乱的”辩论,现在正在鼓励令人窒息的法规以及人工智能“军备竞赛”。

这些后果可能会通过不适当的控制和公众信任的丧失来加速过早的人工智能冬天,不幸的是,此时世界需要更多而不是更少的技术创新,并需要这种技术更快地传播。

这篇文章的早期版本以全球商学院网络(GBSN)博客的形式发布,基于我在 GBSN 的同名网络研讨会。

延伸阅读:

瑙代,W. (2019)。与机器人的竞赛和巨型奶酪蛋糕的谬误:人工智能的直接和想象的影响, IZA 讨论文件第 12218 号。波恩:IZA 劳动经济研究所

设备故障的经济学

原文:https://towardsdatascience.com/the-economics-of-equipment-failure-cd37660d1000?source=collection_archive---------28-----------------------

理解问题的经济学与理解数据科学一样重要

Image by Author

我职业生涯的大部分时间都在处理与销售和营销相关的问题。这意味着我大部分时间都在关注人类。有一件事我可以肯定地说。有时候人是完全理性和逻辑的。有时候人是完全完全完全完全不可理解的。

在过去五年左右的时间里,我有机会进入工业部门。在工业领域,主要关注的是优化机器,而不是人类。这肯定很有趣。

在工业领域,机器资产健康是一个持续上升的焦点领域。换句话说,我的资产或资产群有多健康?

资产的健康可以采取多种形式。有时它被表示为故障时间(离机器损坏还有多长时间)。其他时候,它表示为健康得分。例如,即将发生故障的机器的健康得分可能为 5,而不太可能发生故障的机器的健康得分可能为 100。

故障时间和健康得分通常来自预测故障或预期寿命的统计模型。显然这两者是有联系的。当然,它可以变化,但故障时间的估计通常是基于生存模型。资产健康得分通常基于逻辑回归或某种决策树模型(GBT 或随机森林)。

当谈到机器资产和机器资产健康时,我听到的主要问题是,“它什么时候会出故障”?由此,对话几乎总是转移到,“好吧,数据科学家先生,你能多准确地预测我的资产的失败?”有时候,这绝对是一个正确的问题。有时候不是。也就是说,有时你的主要精力应该放在故障预测上。有时候,应该是在“别的东西”上。

这个“别的东西”就是本文的重点。

线性规划绝对不是什么新鲜事。它和它的*亲非线性编程已经存在很长时间了。最*,我听说这两个概念被称为决策优化或规定性分析。说明性分析允许您根据某些标准优化资源。当我说优化时,我指的是最纯粹意义上的优化。我的意思是做出优化目标的决定。在商业世界中,这通常意味着做出一个能使收入最大化、成本最小化或利润最大化的决策。

规定性分析的经典例子是航空公司的机组人员排班。你如何将飞行员分配到路线上,以使你将乘客从 a 点运送到 b 点的成本最小化?再比如定价优化。比如一个公司可以收任何想要的价格,但是什么价格保证利润最大?

当我几分钟前提到“其他东西”时,我指的是决策优化或规定性分析。也就是说,在许多情况下,围绕管理机器资产的数据科学问题不是“我能多准确地预测故障?”相反,它应该是“我应该什么时候维护我的资产以最大化我的业务的整体盈利能力?”

我提到的另一个“别的事情”是“什么都不做”或“走向失败”。在这种情况下,事后描述故障的描述性解决方案或报告集可能就足够了。换句话说,有时你真的不需要担心预测性分析或规定性分析。你只需要让东西坏掉,然后修复它。

那么,你如何知道你应该更担心预测性、规范性还是描述性分析呢?当然,这取决于经济状况。

为了进一步探讨这个问题,让我首先定义两个与设备故障和维护相关的成本。

首先是存货成本。顾名思义,库存成本是保存机器替换零件的总成本。这显然包括物理存储项目的成本,但也包括存储项目的机会成本。例如,如果你为电视遥控器购买了额外的电池,并把它们放在一边,知道你最终会需要它们,那么机会成本就是如果你决定手头没有额外的电池,你可能会购买的糖果。当你做一个具体的消费决定时,它是你放弃的东西。

经理们的想法和行为会因手头上保留一个替换零件的成本而大相径庭。根据器件的不同,这一成本可能会有很大差异。如果一个替换零件的价格是 1 美元,那么在一个方便的抽屉里放几十个零件是有意义的。如果一个替换零件是危险的,可能真的会杀了你,大多数人都不希望它无限期地挂着。我是说,谁会想要一加仑危险化学品无限期地存放在休息室里呢?稍微不那么引人注目的是,如果一个零件价值 10 亿美元,让一群人无所事事可能没有经济意义。至少你可以把你的十亿美元存入储蓄账户并获得利息,对吗?

第二个成本是失败成本。故障成本是机器发生故障时的成本。这包括生产损失、诉讼费用、财产损失,甚至人员伤亡。

同样,故障成本会有很大差异。如果我的遥控器没电了,那就太烦人了。如果喷气式飞机的引擎失灵,人们就会死亡。

因此,库存成本和故障成本决定了管理机器资产的最佳分析方法。它们回答了你是否应该使用一种说明性的、预测性的或描述性的方法。

机器资产健康决策(MAWD)图表以非常简单的方式详细说明了从业者如何有效地*衡故障和库存成本。MAWD 图表清楚地表明了你的问题的经济学建议是描述性的、预测性的还是规定性的分析方法。请看下面的 MAWD 图表。

MAWD 图表的纵轴是库存成本的连续统一体。横轴是故障成本的连续体。

让我们从西南象限开始,我把它标为“1 区”。在这个象限中,故障成本和库存成本都很低。这是你的“运行到故障”区域,因为存储替换零件和故障是一个相对“哼哼”的经历。

西北象限是第二区。在这里,故障成本很低,但库存成本很高。在这个区域,重点应该是预测和预测分析。因为保持备用零件的成本很高,所以一个好的预测模型将让您知道资产零件何时可能出现故障。了解零件何时会出现故障,可以最大限度地减少更换零件在库存中的时间。

因为故障成本低,维护不是一个大问题。目标应该是运行到失败,但是使用预测模型来最小化库存成本。

第三区是东北象限。这里的库存和故障成本很高。这一领域的重点应该是预测性和规范性分析。您将需要预测分析来衡量您资产的健康状况并最大限度地降低库存成本,但这还不够。

在区域 3 中,由于故障成本很高,您将需要在更大的规范分析解决方案中使用故障预测,以确保您的资产永远不会出现故障。失败的成本越高,公司就越需要确保失败永远不会发生。当故障成本很高时,重点应该放在优化维护计划上,而不仅仅是预测故障。优化维护计划可让您以尽可能低的成本将故障降至最低。它确保一切都以利润最大化的方式完美运行。

例如,如果您当前每六个月维护一组资产,说明性分析可能会强调 10%的资产需要每五个月维护一次,而其他资产可以等待六个月或七个月。

更智能的维护意味着更少的故障和更高的利润。

同样,预测分析更有可能成为说明性解决方案的一部分。例如,维护决策将基于许多因素,包括对故障时间或资产健康状况的预测。

第四区是东南象限。这里的库存成本很低,但故障成本很高。在这种情况下,您可能再次需要预测性和规范性的解决方案。评估资产健康状况或故障时间的预测性解决方案。一种规范性解决方案,采用预测指标,并将其与其他因素相结合,以优化维护计划。与 3 区一样,4 区的重点应该是优化维护计划,而不仅仅是预测故障

如果有人对你说,“嘿,数据科学家先生。你能多准确地预测失败?”你应该说,“你好,客户先生。在此之前,让我们先来探索一下您的机器资产的经济性。”

在进入预测模型之前,就问题的经济性进行对话,这将极大地提高客户参与的成功率。

数据科学的“教育冲击”

原文:https://towardsdatascience.com/the-education-shock-of-data-science-6fb2eddf6fa?source=collection_archive---------40-----------------------

Credit — AZQuotes.com

让我们面对事实:数据科学的奇妙世界既可怕又令人敬畏。人们可能很容易陷入拟合同一模型的常规,而不是开发新模型,因为庞大的数据和统计世界缺乏舒适感。他们对一般的软件开发人员,甚至是全栈开发人员也有类似的说法。坐在大椅子上的男人称之为

“努力冲击”vs“回报冲击”

好吧,当你进入 DS 世界的深处时,准备好迎接大量的震惊吧。当你试图执行一项超出你能力范围的任务,并很快发现你在一艘正在下沉的船上,船上有充气救生筏时,不仅会出现标准的震惊,而且会对你的情绪健康产生额外的影响,比如我喜欢称之为:

“教育冲击”

数据科学最大也是最痛苦的特征之一就是它作为职业、学科和科学的扩张性。不需要太长时间,不管你的经验如何,找到一个你一窍不通的东西,学习一个新的东西。尽管这令人生畏,但对某些口味的人来说,这是他们的最佳选择。不仅是创业教育和努力的冲击非常强烈,而且很多财产会伴随你一生。但是我认为告诉你们这个故事,让我开始谈论它,是一个更有意义的写作方式。

我的故事

很多研究必须深入到不同机器学习方法的用例、优点、缺点和特性。因此,我经常在维基百科上寻找生活中最大问题的答案。你看,在我说我对某件事有深刻的理解之前,我喜欢至少对它背后的数学有一个宽泛的理解。

模型的有趣之处在于,总有一些细微的变化,这些变化有着超越其他模型的用例,并且这些模型之间存在着巨大的差异,这些差异在纸面上看起来非常简单。

回归在数据科学家中是一个家喻户晓的术语,从我们开始使用的调制线性函数到基于概率的分类回归器。嗯,在搜索回归信息的时候,我不得不承认无法学习数学回归的每一种数学方法。就在你去查看更多关于不同回归量的信息时,另一个你从未听说过的回归量不知从哪里冒了出来!随着围绕数据科学和机器学习的每一个方面的算法数量不断增加,任何人都不可能知道每一个回归变量、每一个分类器、每一个无监督模型,坦率地说…

这是不可能的

这实际上会让我感到沮丧,在这个知识每天都在变化的世界里,这不是一个好的做法。

个人成长

不管你在旅途中可能遇到什么样的“教育冲击”,你要带走的一件重要的东西是你自己的成长。就我上面的例子而言,我决定只研究几个算法,也许会考虑回来研究更多。我最大的收获是一个可能取代我最喜欢的模型的模型,随机森林分类器(多么伟大的模型,)保序回归。它背后的数学让我想起加权最小二乘法,只是更有趣,也更复杂。太牛逼了!

当一手拿着 Postgres 登录,一手拿着空白文本文件处理复杂问题时,发展你的知识库对于保持强大的精神状态是绝对必要的。了解您的数据和模型对于为您的用例找到准确的算法也是至关重要的。

快速变化

很多时候这可能是压倒性的,但我从来不喜欢以负面的内涵来思考快速变化。有时,整个语言从我们的生态系统中被弃用,因为一种新的语言对于数据科学来说更理想。执行新任务和解决每天快速产生的新问题的完整算法是以小时为基础开发的。这常常会让你感到失落。甚至对你三年来每天使用的软件包的更新也会让你感到有点失落,就像最*对 Tensorflow 的更新。

你认为未来二十年通用技术将走向何方?你认为今天的产品是如何实现这一目标的?

感觉一切都在慢慢变异成机器学习。现代正在开发一种机器学习算法,让你像开车一样开车,甚至不用动一下肌肉。谷歌正在使用机器学习在他们的 pixel 设备上使用较低百万像素的摄像头制作美丽的照片。这个世纪的话题是一个机器学习面部识别算法,只需看一眼就可以解锁你的手机!我的观点是,整个技术世界发展如此之快,因此,为了跟上,这就是速度。

“显著的相关性”

当我们谈论数据科学时,另一个问题是我们的好朋友“冒名顶替综合症”,用数据科学家书呆子的话说:“冒名顶替综合症和教育冲击之间的相关性的 P 值是 0.003。”冒名顶替综合症是不应该存在的事情之一。关于这种内部斗争的真相是,每个在任何领域从事数据科学的人都目睹了这种斗争。

没有什么好的理由让你觉得有义务不诚实地说出自己在哪里,从而阻碍自己的成长。事实是,我们都在那里,或者我们至少去过那里。要学的东西太多了,一百年的时间是不够的。埃德温·哈勃在证明他的宇宙膨胀理论之前就去世了,阿尔伯特·爱因斯坦去世时认为他在意外发现“重力波”时犯了一个数学错误,所以我想这个故事的寓意是

没有人是完美的,也没有人能做到。

接受现实吧

当你做我们做的事情时,适应性学习是关键。我已经成为对所有事情都使用相同模式的陈旧偏见的受害者,这真的阻碍了我的个人发展。重要的是不要给自己太大压力,也不要为小事而自责。数据很复杂,统计很难。他们不会无缘无故地把机器学习标榜为时髦词汇。数据科学是未来,通过了解这些技能并每天利用它们,我们就是未来。

计划性广告活动的有效性

原文:https://towardsdatascience.com/the-effectiveness-of-programmatic-advertising-campaigns-be0bab179a40?source=collection_archive---------25-----------------------

Image by the author

在本系列的第一部分中,我们比较了在有限的时间范围内针对两种不同受众的活动的效果,以确定表现是否不同。

我们正在关注 10 月 10 日推出的横幅广告。这是通过针对不同目标群体的“程序化广告”(https://en.wikipedia.org/wiki/Real-time_bidding)开始的。

例如,在“金融”环境中:

Image by the author

或者在“职业”环境中:

Image by the author

蓝色是投放广告的数量,绿色是点击的数量。

在月底,我们将评估这两个目标群体中的哪一个在决定进一步的预算分配方面更有效。

哪个更成功?

过了那个时期,我们能有多确定我们的决定是正确的?

作为评估标准,我们采用每条广告的点击率(CTR)。

“金融”职位的 CTR 为 0.19%,“职业”职位的 CTR 为 0.17%。这可能表明在金融环境中投放广告更有效。然而,这两个图表还显示,这两个比率每天都有很大波动,这可能意味着这种差异是由于随机波动造成的,因此做出决定还为时过早。

我们能确定在“金融”环境中投放广告更好吗?有多确定?

为了回答这两个问题,我们必须对数据进行精确的统计分析。
我们用的软件“贾莫维”(www.jamovi.org),我已经报过

我们有以下详细数据:

Datatable for the ads

仅仅看原始数据并不能让我们更接*问题的答案。统计有助于关键数字的计算、图形的创建和概率的计算。

使用“jamovi ”,我们可以一步完成示例中所需的所有计算:

T-test in jamovi / Image by the author

我们用 T 检验来检查我们的成对(每天)数据。同时,我们有描述性的数字,如*均值和标准差和一些图形。是否给出了数据正态分布的 T 检验的必要条件,我们也要检查。这是通过“夏皮罗-威尔克斯”测试和分位数图来完成的。

这给出了以下结果:

Results of T-test

以及以下情节:

Plots of the data / Image by the author

在我们的例子中如何解释这些结果?

第一个图显示,尽管两组的*均值略有偏移,但两个标准差范围明显重叠。这表明我们不能确定两个观众有不同的表现。

这可以通过计算 T 检验的“p 值”来证实。解释如下就是 0.227。目前的数据(它们的差异)纯属巧合的概率是 0.227。这并不意味着可能性很小。这向我们表明,我们不能肯定有不同的表现。只有在概率低于 0.05 时,人们才会谈论显著性,并拒绝一切都是偶然创造的观点。在这种情况下,人们会谈到目标群体的不同表现。

T 检验中“p 值”的计算是否基于正确的假设,即正态分布基本数据,还有待考虑。我们用两种方法做到了这一点,在第二张图中用图形表示,并通过计算“夏皮罗-威尔克斯”检验的 p 值。两者都表明假设得到了很好的满足,分位数图显示了*似在一条直线上的点,并且 p 值不是太小。

考虑另一个有两个观众的例子。

我们将广告放在“体育”环境中,与“金融”环境进行比较。

Image by the author

这种情况的*均点击率为 0.11%,因此低于“金融”环境。在这里,你能说有什么显著不同的表现吗?
让我们用同样的方式来检查一下:

Results second example

有了情节:

Plots second example / Image by the author

这些图显示了*均值的明显差异,从而显示了运动的有效性。这也用低于 0.001 的“p 值”来表示。这些数据极不可能只是偶然的产物。因此,在线广告在“金融”环境中的投放明显比在“体育”环境中更有效。

这里比第一个例子更好地满足了正态分布的基本要求。

在以后的文章中,我们将关注如何使用方差分析来同时分析多个受众,以及如何创建广告未来表现的预测(使用线性回归)。

计划性广告活动的有效性——第二部分

原文:https://towardsdatascience.com/the-effectiveness-of-programmatic-advertising-campaigns-part-2-777e985d6e?source=collection_archive---------33-----------------------

Image by the author

在系列文章的第一部分,我展示了如何使用统计测试来调查两个“程序化广告”(【https://en.wikipedia.org/wiki/Real-time_bidding】)活动的绩效数据是否有显著差异。用两个例子说明了程序,并讨论了结果。两个目标组的数据成对比较。

如果你想一次考察一些甚至很多目标群体,你需要另一种方法,即方差分析【ANOVA】。与名字可能暗示的相反,主要不是比较单个数据序列的方差,而是*均值。

在分析的起点,让我们看看几个目标群体的数据(每日点击数、每日广告数、点击率)。我将看一个有 5 个不同观众的例子。环境中的位置:
-金融(id 1)
-职业(id 2)
-体育(id 3)
-艺术(id 4)
-新闻(id 5)

软件“贾莫维”(www.jamovi.org)再次被使用。下表显示了不同目标群体的 CTR 数据。

CTRs for different audiences / Image by the author

第一列是所有日期和目标群体的 CTR,第二列是区分各个目标群体的因素。

这些问题是:

对所有目标群体来说,安置是同样成功的,还是个别群体更成功?
这些差异显著还是只是随机波动?

在" jamovi "中再次对所有设置进行分析,以检查数据分布的先决条件,并且重要的绘图可以在单个掩膜中进行。

ANOVA in jamovi / Image by the author

选择要检查的值(本例中为 CTR)和分组变量(此处为目标组),并检查数据的正态分布和单个目标组中方差的相等性。这里使用的是不等方差的 ANOVA。

Results from ANOVA

****结果表明,必须放弃目标群体中所有绩效*均值相等的假设。这具有很高的意义。这些数据纯属偶然产生的概率小于 0.001。
对于各组,还显示了*均值和标准偏差。

计算结果也得到曲线图的支持,曲线图显示了 CTR 的显著偏差,尤其是对于第 3 组(“运动”)和第 4 组(“艺术”)。在环境“运动”中的位置带来了较低的点击率,在环境“艺术”中的所有组中最好,但在数据中也具有高得多的分散性。

Plots for different audiences / Image by the author

对分析先决条件的检查产生了正态分布的正结果。方差相等的检验证实了存在不同方差的图的印象。因此,相应的设置用于分析。

Check of assumptions

因此,我们能够使用该分析来确定广告在不同放置环境中的不同表现,并确保显著性,还能够识别哪些组表现良好,哪些组表现不佳。在本系列的下一部分,我将介绍使用线性回归预测未来活动绩效的简单模型。

获得授权的数据驱动型组织

原文:https://towardsdatascience.com/the-empowered-data-driven-organization-c9f969fc389e?source=collection_archive---------25-----------------------

组织如何释放数据和分析的力量以获得竞争优势。

🔥在你继续阅读这篇文章之前,我想让你知道,几天前,我发布了一个完整的课程,帮助你提高你的决策技能,并在竞争中领先
这是多年研究的成果,在有限的时间内可以免费获得
👉如果你想用科学的方法做出更好的决定,这里有一个链接:https://smart-decision-makers.streamlit.app/
[/Announcement]🔥

为了从他们的数据中获得更多价值,除了雇佣新的人才来管理和利用这些新的资产之外,公司今天还参与了捕获大量内部和外部数据的过程。然而,很少有组织能够实现其数据和分析能力的全部潜力。一个主要原因是,数字化转型首先是人的转型,进行文化变革比获得新资产和新能力要难得多。

改变你的组织文化

组织文化塑造了人们如何协作和互动,如何决策,以及如何经营企业的方方面面。在数据驱动型组织中,数据和分析被视为从竞争对手中脱颖而出的机会。要做到这一点,组织中的每个人都应该能够利用他/她自己环境中的数据和分析。这需要获得相关数据,并让非专家也能使用人工智能算法。

在您的组织中民主化数据科学

然后,获得授权的员工可以通过几种可能的方式,利用可用的数据和算法进行协作和轻松试验,为组织创造价值:创造新的见解,促进数据驱动的决策,测试新的业务模式或优化现有流程。

例如,优步已经通过开发自己的数据科学*台走上了这条道路,该*台为公司的任何人提供经过验证的预测算法,只需按一下按钮(不需要预测专业知识)。https://eng.uber.com/building-ubers-data-science-platforms/

Data-science platform at Uber

数据科学*台的格局正在快速变化,Gartner(一家 IT 咨询公司)每年都会更新对大型参与者的全球看法,该公司沿着两个轴对数据科学和机器学习*台进行排名:愿景的完整性和执行能力。

The arrows illustrate shifts in major players’ positions in the Gartner Magic quadrant between 2018 and 2019.

即使许多*台仍然试图通过在其*台中推出更多更适合专家用户的高级功能来脱颖而出,您也可以注意到一种趋势,即向非专家数据科学家(也称为“公民数据科学家】)普及这些*台的使用。例如,DataRobot 作为一个有远见的人在 2019 年的 Gartner 魔力象限中出现,部分原因是它能够通过利用自动化机器学习领域的最新进展,简化公民数据科学家对机器学习算法的使用。

“让用户能够快速轻松地构建完全透明的高度准确的预测模型的能力,可能是任何成功的机器学习*台最重要的元素。唯一需要的成分是好奇心和数据——编码和机器学习技能完全是可选的!”数据机器人

改变您与数据的关系

很少有组织能够充分利用人工智能的第二个主要原因与整个组织如何管理数据有关。事实上,尽管现代数据科学*台使测试和比较数百种机器学习算法变得很容易,但对于许多组织来说,收集和准备正确的训练数据集来支持这些算法仍然是一个挑战。

Data preparation with Dataiku’s Studio

数据准备部分可能很耗时,但绝对不是拦路虎。数据科学家报告称,数据准备可能会占用一个项目 80%的时间。然而,数据科学*台正在提供越来越多用户友好的数据辩论能力。

另一方面,在整个组织中以一致的方式收集相关数据可能是一个真正的问题。在许多情况下,人工智能计划被停止,因为重要数据不可用或不可用。

为了说明这最后一点,让我们看看组织为他们的客户创造价值的方式。这通常通过几个相互关联的过程来实现(营销、财务、研发、制造、采购、供应链……)。当你从信息系统的角度来看这些过程时,我们通常会发现不同软件、数据库和 Excel 文件的拼凑,它们并不总是一致的,至少在数据的结构和存储方式上是如此。

组织试图解决这个问题的经典方法是启动大型数字化项目,部署新的信息系统并重组现有系统。这类项目通常风险很大,需要几年时间才能实现目标,而且非常昂贵,因此从数据和分析中获得任何竞争优势的机会被进一步推迟。

贝佐斯 API 指令

亚马逊在这一领域的做法值得一提:2002 年,亚马逊创始人兼首席执行官杰夫·贝索斯向他的员工发布了以下备忘录(后来称为“贝佐斯 API 指令”):

  • 所有团队将从此通过服务接口公开他们的数据和功能。
  • 团队必须通过这些接口相互交流。
  • 不允许其他形式的进程间通信:不允许直接链接,不允许直接读取另一个团队的数据存储,不允许共享内存模型,不允许任何后门。唯一允许的通信是通过网络上的服务接口调用。
  • 他们用什么技术并不重要。

备忘录以“任何不这样做的人都将被解雇”结尾。谢谢大家;祝你愉快!”。

如果我们抛开这份说明的专制方式,看看这种导向的后果,这意味着如果公司中有人需要从营销或组织中的任何其他团队获得信息,而不是通过电子邮件/电话联系他/她的同事并从数据库或简单的 Excel 文件中获得摘录。他/她现在可以使用编码的服务接口来获取数据。无论营销团队使用何种技术来管理和处理这些数据(从高级商业软件到简单的电子表格),他们都需要通过公司中任何人都可以使用的应用程序编程接口来公开他们的数据。

从人际关系的角度来看,这可能听起来很奇怪,但它有一个很大的优势,那就是无论组织中的信息系统有多成熟,都可以标准化数据的构造和共享方式。

根据亚马逊在 2019 年 Q2 的报告,亚马逊的子公司、提供按需云计算的 AWS(亚马逊网络服务)已经创造了高达 84 亿美元的销售额,占亚马逊总收入的 13%。

下一代*台

在我的研究中,我没有发现任何超出数据准备/数据建模阶段的数据科学*台。他们中的大多数人完全忽略了数据管理部分,并假设用户能够带来自己的一致数据集或连接到现有的数据库,同时管理所有的协作和安全方面。在本节中,让我们想象一种下一代*台,在这种*台上,用户可以无缝体验从管理数据源到利用人工智能算法为组织创造价值的过程。

为此,我们将讲述 Barbara 的虚构故事,她作为产品负责人在市场部工作。芭芭拉刚刚完成了一项客户满意度调查,她收集了数千名客户对公司正在开发的各种产品的反馈。然后,她想到将这些数据与每种产品的广告活动预算以及研发部门提供的一组产品特征进行合并,以找出哪些参数组合与客户满意度相关。

浏览数据目录

为了测试她的想法,Barbara 兴奋地连接到她公司刚刚部署的数据科学*台。她现在可以浏览组织中所有可用数据源的目录。这一次,Barbara 更喜欢询问集成聊天机器人她正在寻找什么类型的信息,然后机器人将她快速导向一个简短的有趣数据源列表。她浏览了列表,阅读了每个数据源的描述,并很快确定了她需要在分析中使用的数据源。

创建新的数据源

现在是芭芭拉将自己的数据集上传到*台上的时候了。一旦她上传了文件并为她的同事创建了内容的简短描述,系统就会自动识别出用于在调查中识别客户的列也是在其他数据源中使用的参考列。它建议芭芭拉将她的数据集与客户的参考数据联系起来。系统还建议 Barbara 删除已经在引用中的其他客户特定列,因为它们可能被视为重复。芭芭拉对所有这些建议都很满意;她得到保证,她的数据集将始终是最新的,并直接连接到组织中的其他数据源。

不要忽视大局

第二天,芭芭拉接到该部门数据架构师吉姆的电话。吉姆想确保芭芭拉在站台上找到路。Jim 的职责是确保组织的全球数据模型定义明确、一致,并被不同的用户充分理解。在谈到新*台时,吉姆经常说:“自从这个*台部署以来,我感觉自己就像是成长花园中的园丁。我们的全球数据模型每天都在变得越来越丰富,我们大大提高了数据质量和从所有正在进行的实验中学习的能力。”

安全性和协作

Barbara 已经将新的数据源设置为公共的,这样组织中的每个人都可以使用它。但是,如果有任何敏感数据,她可以只授予特定用户或组访问权限。

该*台还提供了多种协作功能,如开始讨论或为数据集中的特定元素添加评论的可能性。*台上的每个数据源,无论是手动加载的还是表示现有信息系统的,都可以使用标准化编程接口(API)来请求。

最终

  • Barbara 能够测试她的想法,并确定用户满意度的一些关键驱动因素,这导致与产品开发团队进行了非常丰富的讨论。
  • 由于 Jim 的参与,该组织的数据模型每天都在变得越来越丰富,同时保持了一个连贯的全局。
  • 员工正逐步放弃 Excel 文件,转而寻求在线协作体验,这种体验放大了该*台的积极网络效应。

结论

总之,一个愿意利用人工智能的可持续竞争优势的组织需要:

  • 成功创造数据驱动的文化,这将促进实验和数据驱动的决策。
  • 利用数据科学*台的力量来普及机器学习算法和数据准备工具的使用。
  • 通过促进数据访问和协作,同时确保数据的安全性和组织全球数据模型的一致性,使员工能够采取行动。

锚点的终结——改进对象检测模型和注释

原文:https://towardsdatascience.com/the-end-of-anchors-improving-object-detection-models-and-annotations-73828c7b39f6?source=collection_archive---------9-----------------------

入门

问题是

如果你曾经需要修补锚盒,你可能会感到沮丧、困惑,并对自己说:“一定有别的办法!”现在看来,的另一种方式。

当我第一次写锚框的时候,我就有了绕过锚框,把对象检测问题变成语义分割问题的想法。我试着预测每个像素的每个类有多少个对象边界框。由于几个问题,这给出了相当差的结果:

1.我无法将分割遮罩还原成边界框。这意味着我不能隔离或计数对象。

2.神经网络努力学习对象周围的哪些像素属于边界框。这可以在训练中看到,其中模型首先分割对象,然后才开始围绕它形成矩形。

Examples from the Common Objects in Context (COCO) dataset¹

几个月过去了,已经有几款车型以更具创新性的方式抛弃了锚盒。

无锚点对象检测

CornerNet 预测每个像素的边界框的左上角和右下角以及嵌入。每个角的嵌入相匹配,以确定它们属于哪个对象。一旦你匹配了所有的角,恢复包围盒是很容易的。这解决了我所面临的问题:去掉锚框,同时能够从输出中恢复边界框。

然而,CornerNet 并没有解决我所面临的第二个问题,即网络必须知道在哪里定位一个甚至不包含对象的像素。这就是 ExtremeNet 的用武之地。这种方法是基于 CornerNet 的,但是它不是预测角,而是预测对象的中心以及最远的左、右、上、下点。然后,这些“极值点”根据它们的几何形状进行匹配,从而产生出色的结果:

释文

但是我怎么找到极值点标注呢?不幸的是,作者从分割遮罩中提取了极值点,如果您只能访问边界框,则该选项不可用。然而,极值点注释有几个优点:

1.标注对象的极值点比标注边界框要容易得多。要标记一个边界框,您必须目测与两个最极端点对齐的角的位置。通常,注释者必须在事后调整边界框,以便与极值点对齐。ExtremeNet 的论文估计,标注极值点所花费的时间几乎是标注边界框所花费时间的五分之一。

2.出于同样的原因,人类注释者更容易标记极值点,神经网络也应该更容易准确地指出它们的位置。目前,ExtremeNet 似乎优于其他单次检测器。

3.给定对象的极值点,生成边界框是很简单的。如果图像也包括在内,则可以使用右旋 ⁴算法来生成分割掩模。这使得极值点比边界框更加通用。

没那么快

在您将所有的对象检测系统迁移到 ExtremeNet 之前,请记住当前的实现既庞大又缓慢。预训练模型达到了最先进的结果,有* 2 亿个参数,占用 800mb。当我在 Tesla K80 GPU (p2.xlarge EC2 实例)上测试一批单个图像时,使用来自 GitHub 页面的 demo.py 脚本,每张图像需要大约 8 秒。使用 DEXTR 创建分段屏蔽会增加 2-12 秒,具体取决于检测次数。如果您想要对来自多个图像比例的检测进行分组,则数量会进一步增加。在单幅图像上运行多尺度分割总共需要一分钟,尽管我认为这些数字可以通过优化代码来提高。CornerNet 声称在 Titan X (Pascal) GPU 上运行速度约为 4 fps,这也比现有的单次检测器慢得多。在我考虑将 ExtremeNet 作为大多数应用程序的可行选项之前,需要有一个既快速又准确的版本。

结论

ExtremeNet 的论文声称,与所有其他单次检测器相比,其性能更为优越,同时无需仔细调整锚盒,然后对输出进行解码。即使没有这样的模型,注释方法本身也提供了显著的好处。该模型仍然没有像神经网络一样完全端到端地学习,并且包括多种算法来生成边界框或分割掩模。尽管如此,我非常希望在未来,极值点注释和模型成为对象检测的规范。

参考

[1]林,宗毅等.《微软 COCO:情境中的公共对象》计算机科学课堂讲稿(2014):740–755。交叉引用。网络。

[2]法、黑、加登。"角网:将物体检测为成对的关键点."计算机科学课堂讲稿(2018):765–781。交叉引用。网络。

[3]周、邢毅、卓家成和菲利普·克雷恩布尔。"通过组合极值点和中心点的自下而上的物体检测." arXiv 预印本 arXiv:1901.08043 (2019)。

[4]马尼尼斯,K.-K .等人,“深度极限切割:从极限点到物体分割”2018 年 IEEE/CVF 计算机视觉与模式识别大会(2018): n. pag。交叉引用。网络。

所有模糊图片的终结

原文:https://towardsdatascience.com/the-end-to-all-blurry-pictures-f27e49f23588?source=collection_archive---------5-----------------------

使用 GANs 的图像超分辨率综述和解释。

你能数一数这张图片里有多少只企鹅吗?

现在呢?

嗯,我把它放大了,但是还是很模糊…

那么,现在呢?

啊!我们来数数企鹅和它的一个完美的例子 图像超分辨率 在行动!

图像超分辨率是从低分辨率图片创建更好看、更高分辨率的图像。任何在 Powerpoint 演示文稿中放入图像的人都知道,缩小图像实际上会让它看起来更糟。这是因为双三次插值用于放大图像:一种采用像素*均值来填充图像放大时产生的间隙的技术。

How interpolation-based resizing/enlargement works. Source.

这样做的问题是没有新的数据被创建——这意味着你的图像在分辨率上没有变好,只是变大了。

无论你只是创建一个 powerpoint,分析乳房 x 光片,还是进行远程面部识别 分辨率都很重要。

那么我们如何做到超分辨率?好吧,我们转向——人工智能!我们已经看到了大量使用卷积神经网络的图像超分辨率的最新进展(点击查看我关于它们的文章,如果你想了解它们是如何用于超分辨率的,请点击查看)。但是,这仍然存在一些问题——图像看起来不如我们喜欢的清晰和详细,为了解决这个问题,制作了 SRGANs (超分辨率生成对抗网络——试着说一口气)。

Comparison of different SR methods. Zoom in to notice how crisp SRGAN is!

在进入超分辨率方面之前,这里有一个 GANs 的快速概述

生成对抗网络概述

"给定一个输入数据集,我们能生成看起来应该在该数据集中的新数据吗?"

想想一个伪造者在博物馆用赝品调换真画,而馆长的工作就是辨别真品和赝品。当它们都刚刚开始时,伪造者会犯很多错误,而馆长也不善于辨别真伪。

随着时间的推移,伪造者可以尝试不同的技术,并在制造假货方面变得更好,而馆长也找到了帮助他辨别假货的策略;他们都在通过彼此提高。

伪造者的目标是创造出看起来真实的艺术品,而策展人的目标是能够始终发现假画

这两个角色相互竞争,代表了一个 GAN 中的两个网络。作为生成网络的伪造者创建新图像,而作为辨别网络的策展人评估来自生成器的图像看起来是否真实。

Outline of a traditional GAN being trained to generate handwritten digits. Source.

发生器接收随机像素数据(噪声),将其转换为假输出,在超分辨率的情况下,它会将随机噪声转换为更高分辨率的图像

鉴别器在训练集和发生器图像上接受训练,学习区分它们

那么为什么用 GAN 更好呢?

有很多其他方法可以实现超分辨率,例如 SRResNet 和 SRCNN,但是,这些方法都有一个问题:视觉质量差,即使网络看起来运行良好。

当我们使用传统的损失函数来衡量我们的鉴别器有多准确时,它衡量的是在数学上有多接*(欧几里德距离),而不是在视觉上生成的图像与真实图像有多接*,这导致了一个区域中颜色的*滑*均,正如您在下面的 SRResNet 图像中所看到的。

***

SRGAN (left), SRResNet (right) — Notice the smoothness and lack of details in the SRResNet image.*

为了抵消这一点,创造了一个感知损失函数——来测量视觉清晰度。这个损失是两个不同损失的总和→ 内容损失对抗损失

对抗性损失

使用 GAN 的一个巨大好处是,你可以利用对抗性损失来激励输出看起来自然。发生这种情况是因为 GANs 的基本性质:寻找看起来不属于的数据。

对抗性损失是鉴别器网络评估发电机运行情况的一部分。如果鉴别器认为图像使我的发生器看起来合法,它将返回一个比它认为图像看起来完全是假的更低的损失。

内容损失

内容损失通过将生成的图像和原始图像通过 CNN 特征图并计算输出的损失来比较图像中的细微细节。

让我们来分解一下。

当我们训练一个卷积神经网络时——它的层执行 特征提取——这是一种奇特的说法,它在图像中寻找模式和形状。随着我们越来越深入地研究网络,我们会发现越来越复杂的特征。

Visualization of feature maps.

好的,酷—让我们分析一下这些特征地图中到底发生了什么。在 Conv1 层中,保存了大量来自图像的原始信息。这是因为 CNN 中的初始(conv)层通常充当边缘检测器。

后来在网络中,更高层次的信息被编码,我们在 conv 2-4 中看到,图像开始变得更加抽象。即使看起来更深的层比初始层编码的信息更少(因为它们看起来模糊),但它们实际上只是改变了它们包含的信息类型——从几何信息到语义信息。

为了更好地理解这一点:这里有一些在 VGG16 网络中通过图像的实际过滤器的可视化效果。(更具体地说,滤镜激活最多的图像,* 代码执行此操作 )*

第 7 层

第 14 层

第 20 层

第 30 层

第 40 层

哇哦。

这些不仅绝对令人着迷,而且当我们深入网络时,它们还能给我们一种直觉,告诉我们过滤器在寻找什么。在最后一行图像中,我们可以很容易地将拱门、鸟和链条识别为每个过滤器正在寻找的对象。

回到内容损失,我们通过特征图传递从生成器和参考(原始)图像重建的图像,并比较两个图像中的细微纹理差异,惩罚纹理看起来*滑的图像

知觉损失的概念也用在了神经风格转移中,你可以在我关于它的文章中了解更多!

…就是这样!这是一个感知损失函数的基本思想。

随着这项技术的进步和不断完善,我们可以从这样的酷结果开始:

对此:

这项技术的进步可能会导致超远距离航空/卫星成像、医学图像增强、数字全息摄影,以及更多真正具有高影响力的应用,更不用说让企鹅看起来清晰明了。

关键要点:

  • GANs 有两个神经网络相互竞争来完全生成 图像 看起来 真实。
  • SRGAN 图像比 SRCNN 图像看起来更好,因为它们包含了更多的细节:使用感知损失函数的副产品。
  • 感知损失的计算方法是将内容损失(结构相似性)与对抗性损失(该图像看起来有多合法)相加

如果你喜欢我的文章或者学到了新东西,请务必:

  • LinkedIn 上与我联系。
  • 给我发一些反馈和评论(aryanmisra4@gmail.com)。
  • 检查一下 SRGAN 纸
  • 此外,请查看 SRGAN 的 Tensorflow 2.0 实现的代码,它在#PoweredByTF2.0 devpost 挑战赛中获得了两项大奖!( githubdevpost )

协整时间序列的误差修正模型(及参数稳定性检验)

原文:https://towardsdatascience.com/the-error-correction-model-for-co-integrated-time-series-and-checking-parameter-stability-a60bbdafb9e4?source=collection_archive---------2-----------------------

L is the number of lags in the model, rho hat is our estimated long-run relationship coefficient, and eta hat is the deviation of from our long-run relationship in the previous period.

将股票与市场的关系纳入预测模型

仅仅根据过去的价格来预测一只股票的未来价格是非常困难的。您需要将其他数据合并到您的模型中,通过考虑股票价格的冲击来获得更好的预测准确性。一个显而易见的数据是市场走势。如果市场下跌,你的股票也有下跌的风险。您可以包括市场价格数据的滞后,以捕捉市场和您感兴趣的证券之间的短期关系。但是他们的长期关系呢?这就是误差修正模型(ECM) 有用的地方。它包括一个偏离长期关系的术语,用于估计在下一个预测期有多少不*衡会消失。

注意:我建议在阅读这篇这篇之前先阅读这篇文章,这两篇文章将纠错范例应用于联立方程建模(预测更成功)。这些文章旨在作为独立的部分,但都是处理协整的时间序列,并相互补充。

调查时间序列属性

我不想让反复讨论确定整合度和格兰杰因果关系的读者感到厌烦,所以请在此处阅读的*稳性测试格兰杰因果关系 部分。

用恩格尔-格兰杰方法建立协整关系

在估计 ECM 之前建立协整是很重要的。协整本质上意味着两个时间序列具有长期的关系。如果没有长期关系,ECM 是不合适的。为了检验协整性,我们对自变量执行目标变量的线性回归,并检验残差的*稳性。在我们的例子中,我们的模型是:

在对我们的样本周期估计这个模型之后,我们必须使用增强的 Dickey-Fuller 测试来测试残差的*稳性。如果我们有协整,我们就可以继续了。如果不是,我们要问自己一个棘手的问题。 长期关系的存在是否有强有力的理论依据。 如果不是,ECM 就不是一个适合我们的问题。如果有,测试断点。也许我们的样本有一段时间,在此之前,我们的长期关系可能是不同的或不存在的,但之后的话会像我们预期的那样。使用周波测试,查看是否有差异,并重复测试进行协整。如果你不确定这种关系何时会改变,使用累计图进行调查。如果我们发现了协整,我们就为下一步做好了准备。

估计误差修正模型

现在我们有了残差,并对数据进行了差分(假设它是积分 I(1)),我们可以将残差附加到我们的数据集,并使它们滞后一个周期,以估计我们的 ECM 为:

L is the number of lags in the model, rho hat is our estimated long-run relationship coefficient, and eta hat is the deviation of from our long-run relationship in the previous period.

务必注意,如果 ECM 合适,rho hat 为负值。线性回归的滞后残差代表与前期长期关系的偏差。直觉告诉我们,如果我们的股价高于其与市场的长期均衡水*,负系数会将其拉回来。如果它低于长期均衡,负面因素将抵消,成为正面因素,将股价拉回来。这就是 ECM 的魔力。这个系数可以被解释为不*衡的比例,这个比例在下一个周期消失。

链接到 Python 中的 ECM 实现

我将 ECM 技术应用于 JP 摩根过去 15 年的月度股价和标准普尔 500 指数,保留了最* 50 个月作为测试数据集。我选择了摩根大通,因为在我过去 15 年来尝试的十几只股票中,它是第一只通过恩格尔-格兰杰协整检验的。你可以在这里看到那个的笔记本。TL;该项目的 DR 是误差校正方法似乎很适合我的训练数据,但在我的测试数据集上的表现与简单的 3 滞后自回归模型大致相同。我通过检查我的误差修正系数的参数稳定性来研究为什么会这样。这表明,在过去 15 年的某个时候,摩根大通的股价和标准普尔 500 指数之间出现了结构性断裂。

Plot of my unstable error-correction coefficient on the models estimated during the testing period

虽然 ECM 在这种情况下表现不佳,但当有协整的证据时,应该包括误差修正项。只是要小心观察协整关系正在破裂的证据。这是时间序列建模有趣又令人恼火的部分。一个好的模型最终会随着底层系统的改变而崩溃。

机器学习中特征值和特征向量的本质

原文:https://towardsdatascience.com/the-essence-of-eigenvalues-and-eigenvectors-in-machine-learning-f28c4727f56f?source=collection_archive---------7-----------------------

了解实际应用

单词 Eigen 可能最有用的翻译是德语,意思是特性。所以当我们谈论矩阵的特征值和特征向量时,我们谈论的是寻找矩阵的特征。

在深入研究特征向量之前,让我们先了解什么是矩阵除了是一个数字的矩形阵列,它还代表什么?

所以矩阵只是应用于向量的线性变换。可以有不同类型的变换应用于向量,例如-

让我们来看一些矩阵变换

img = cv2.imread(path_to_image,flags=cv2.IMREAD_UNCHANGED)
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
rows,cols,_ = img.shape
M = np.float32([[1, -np.sin(.1), 0],[0,  np.cos(.1), 0]])
out = cv2.warpAffine(img,M,(cols,rows))

这个矩阵 M 和图像有什么关系?它给图像中的每个矢量引入了水*剪切。

#Let's try this one
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,1)
out = cv2.warpAffine(img,M,(cols,rows))
print(M)
=> [[   0.70710678    0.70710678 -124.36235483]
 [  -0.70710678    0.70710678  501.76271632]]

那么矩阵 M 对图像做了什么?所以这个线性变换 M 将图像中的每个向量旋转了 45 度。

M = [[  1\.   0\. 100.]
 [  0\.   1\. 100.]]
out = cv2.warpAffine(img,M,(cols,rows))

它在水*和垂直方向上*移图像。

旋转没有本征矢[180 度旋转的情况除外]。对于纯剪切,水*向量是一个特征向量。向量长度改变的因子叫做特征值。

应用程序

特征值特征向量的概念在很多实际应用中使用。我将只讨论其中的几个。

主成分分析

PCA 是一种非常流行的经典降维技术,它使用这一概念通过降低数据的维数来压缩数据,因为维数灾难一直是经典计算机视觉处理图像甚至机器学习中非常关键的问题,具有高维数的特征增加了模型容量,这反过来需要大量的数据来训练。

这是一种使用简单的矩阵运算和统计来计算原始数据在相同或更少维度上的投影的方法。

设数据矩阵 𝐗 为𝑛×𝑝大小,其中 n 为样本数,p 为每个样本的维数。在 PCA 中,本质上我们通过特征值分解对角化 X 的协方差矩阵,因为协方差矩阵是对称的

***C = VLVᵀ******In Python-***from numpy import cov
from numpy.linalg import eigX = array([[-2, -2], [0, 0], [2, 2]])
C = cov(X)
#To do eigendecomposition of C
values, vectors = eig(C)
#Project data into pricipal directions
P = vectors.T.dot(X.T)
print(P.T)Output-
[[-2.82842712  0\.        ]
 [ 0\.          0\.        ]
 [ 2.82842712  0\.        ]]

其中 𝐕 是一个由个特征向量组成的矩阵(每一列都是一个特征向量),而 𝐋 是一个对角矩阵,其中个特征值 𝜆𝑖在对角线上按降序排列。

对称矩阵的特征向量,这里是协方差矩阵,是实的和正交的。

数据的特征向量称为主轴主方向。数据在主轴上的投影称为主分量。

我们通过在比原始维度更少的主方向上投影来降低数据的维度。

谱聚类

K-Means 是最流行的聚类算法,但它有几个相关的问题,如依赖于聚类初始化和特征的维数。同样,如果你的星团不是球形的,它也会面临问题,如下图所示

from sklearn.datasets import make_moons
X_mn, y_mn = make_moons(150, noise=.07, random_state=21)
fig, ax = plt.subplots(figsize=(9,7))
ax.set_title('Data with ground truth labels ', fontsize=18, fontweight='demi')
ax.scatter(X_mn[:, 0], X_mn[:, 1],c=y_mn,s=50, cmap='viridis')

谱聚类是使用矩阵的特征向量来寻找 K 个聚类的一系列方法。它可以处理这些问题,并轻松胜过其他聚类算法。

这里数据以图表的形式表示。现在,聚类可以被认为是生成图割,其中两个聚类 A 和 B 之间的割(A,B)被定义为两个聚类之间的权重连接的总和。比如说-

为了找到最佳聚类,我们需要最小割,最小割方法的目标是找到具有最小权重和连接的两个聚类 A 和 B。

在谱聚类中,使用从图的邻接矩阵和度矩阵计算的图拉普拉斯矩阵来*似这个最小割目标。证据见

算法

给定:一个有𝑛顶点和边权重𝑊𝑖𝑗的图,期望聚类数𝑘

  • 构建(标准化)图拉普拉斯𝐿 𝐺 𝑉,𝐸=𝐷𝑊
  • 求𝐿的𝑘最小特征值对应的𝑘特征向量
  • 设 u 是特征向量的 n × 𝑘矩阵
  • 用𝑘-means 找出𝑘簇𝐶′让𝑥𝑖’是 U 5 的行。如果𝑥𝑖’被分配到聚类 j,则将数据点𝑥𝑖分配到𝑗'th 聚类
from sklearn.neighbors import radius_neighbors_graph
from scipy.sparse import csgraph
from sklearn.cluster import KMeans#Create adjacency matrix from the dataset
A = radius_neighbors_graph(X_mn,0.4,mode='distance', metric='minkowski', p=2, metric_params=**None**, include_self=**False**)
A = A.toarray()'''Next find out graph Laplacian matrix, which is defined as the L=D-A where A is our adjecency matrix we just saw and D is a diagonal degree matrix, every cell in the diagonal is the sum of the weights for that point'''L = csgraph.laplacian(A, normed=**False**)
eigval, eigvec = np.linalg.eig(L)

现在,使用𝑘-means 找到𝑘群集𝐶让𝑥𝑖是 eigvec 的行。最后,为了将数据点分配到聚类中,如果𝑥𝑖被分配到聚类 j,则将𝑥𝑖分配到𝑗'th 聚类

第二小特征向量,也称为 Fiedler 向量,用于通过寻找最佳分裂点来递归地二分图。

参见完整示例代码 此处

谱聚类的变体用于计算机视觉中基于区域提议的对象检测和语义分割。

计算机视觉中的兴趣点检测

最后我来讨论一下 AI 下我最喜欢的领域,就是计算机视觉。在计算机视觉中,图像中的兴趣点是在其邻域中唯一的点。这些点在经典的计算机视觉中起着重要的作用,它们被用作特征。

角点是有用的兴趣点,以及其他更复杂的图像特征,如 SIFT、SURF 和 HOG 等。我将讨论一种这样的角点检测方法。

http://www.cs.cmu.edu/~16385/s17/Slides/6.2_Harris_Corner_Detector.pdf

透过一个小窗口很容易认出角落。

如果窗口内部有一个角,移动窗口应该会在强度 E 上产生很大的变化。

哈里斯角探测器

这个算法-

  • 计算小区域上的图像梯度
imggray = cv2.imread('checkerboard.png',0)
i_x = cv2.Sobel(imggray,cv2.CV_64F,1,0,ksize=5)
i_y = cv2.Sobel(imggray,cv2.CV_64F,0,1,ksize=5)
  • 计算协方差矩阵
# Calculate the product of derivates in each direction
i_xx, i_xy, i_yy = multiply(i_x, i_x), multiply(i_x, i_y), multiply(i_y, i_y)# Calculate the sum of product of derivates
s_xx, s_xy, s_yy = cv2.GaussianBlur(i_xx, (5,5), 0), cv2.GaussianBlur(i_xy, (5,5), 0), cv2.GaussianBlur(i_yy, (5,5), 0)
  • 计算特征向量特征值。

Harris 描述了一种更快的*似方法——避免计算特征值,只需计算迹和行列式。结合这两个属性,我们计算出一个度量值角度 -R

矩阵的行列式=特征值的乘积

矩阵的迹=特征值之和

# Compute the response of the detector at each point
k = .04 # Recommended value between .04 and .06
det_h = multiply(s_xx, s_yy) - multiply(s_xy, s_xy)
trace_h = s_xx + s_yy
R = det_h - k*multiply(trace_h, trace_h)
  • 使用特征值上的阈值来检测角点
ratio = .2 # Number to tweak
thresh = abs(R) > ratio * abs(R).max()

如果任一个特征值接* 0,那么这不是一个角点,所以寻找两者都大的位置。e 在所有方向上几乎都是常数。

λ2 >> λ1 或λ1 >> λ2 描绘了一条边

λ1 和λ2 较大,λ1 ~ λ2 E 在各个方向都增大

参见完整示例代码 此处

参考

归一化切割和图像分割。史和马利克,2000 年

一个组合的组合和边缘检测器,克里斯哈里斯和迈克斯蒂芬斯,1988 年

图的代数连通性 M. Fiedler,1973

正则表达式的基础

原文:https://towardsdatascience.com/the-essence-of-regular-expression-8c2e0ccf6a25?source=collection_archive---------12-----------------------

这就是你所需要学习的从任何事情中刮出地狱

什么是正则表达式?

正则表达式是一种特殊的文本字符串命令,用于从大量数据中匹配特定的字符串序列,如果由人工完成,可能会花费大量时间。您可以使用正则表达式来匹配各种字符串模式,如:-

  • 提取所有的电子邮件地址
  • 只提取 Gmail 电子邮件地址
  • 提取以特定字母开头并以特定字母结尾的所有姓名
  • 提取所有第一个字母是大写的名字
  • 提取所有有小数点的数字
  • 提取特定范围内的数字

这个列表是无止境的,上面提到的情况是我在写这篇文章时想到的前六种情况,但是老实说,你可以使用正则表达式从数据中提取任何类型的字符串模式,不管它有多大,只需几秒钟,这就是正则表达式的妙处。*来,正则表达式的重要性增加了,因为许多公司正在使用自然语言处理技术,其中正则表达式使用得非常频繁。

正则表达式最好的一点是它被大多数流行的编程语言所支持,因此一旦你理解了正则表达式的语法和概念,你就可以在各种语言中使用它。

让我们从正则表达式开始,我在 python 中使用正则表达式,但是你们可以使用任何你们选择的语言,但是它应该支持正则表达式。

使用正则表达式时,您有两种选择:-

第一种是只匹配特定字符串模式的第一次出现,第二种是匹配特定字符串模式的所有出现。

现在,您是希望只匹配第一个匹配项还是匹配所有匹配项取决于您的需求。根据我的经验,无论我在哪里使用正则表达式,大多数问题都需要匹配所有的事件,因此在这篇博客的所有例子中,我有意地编写了正则表达式来匹配所有的事件。

文字字符

让我们从最基本的正则表达式开始,它是文字字符,您基本上是在从数据中搜索特定的字母或单词,这与您使用 Ctrl+F 在网页或 pdf 上搜索时得到的结果类似。让我们尝试一个示例

因为我是一个超级漫威迷,所以我将在我的例子中使用漫威作为参考

Input = “Avatar did a business of 2.788 billion dollars($) where as Endgame has grossed 2.79 billions dollars($) till date”Regular Expression => “a”It will match with every single alphabet — “a”“**A**v**a**t**a**r did **a** business of 2.788 billion doll**a**rs($) where **a**s Endg**a**me h**a**s grossed 2.79 billions doll**a**rs($) till d**a**te”Output => a a a a a a a a a a

在输出中,“a”重复了 10 次,因为字母“a”
正好出现了 10 次。现在让我们在下一个例子中尝试字母组合

Regular Expression => “as”Avatar did a business of 2.788 billion dollars($) where **as** Endgame h**as** grossed 2.79 billion dollars($) till dateOutput => as as

注意:字母的顺序非常重要,在上面的例子中,只有字母“a”后面跟着字母“s”的字符串才会被匹配。

速记字符类别

1) \w

“w”代表单词字符,基本上是[a-zA-Z0–9 _]的简写,这意味着它匹配所有大写字母、小写字母和所有数字。让我们在 marvel 文本中尝试使用这个正则表达式来分析哪些字符与“\w”不匹配

Text=”Avatar did a business of 2.788 billion dollars($) where as Endgame has grossed 2.79 billions dollars($) till date”Regular Expression => “\w”Output => “A v a t a r d i d a b u s i n e s s o f 2 7 8 8 b i l l i o n d o l l a r s w h e r e a s E n d g a m e h a s g r o s s e d 2 7 9 b i l l i o n s d o l l a r s t i l l d a t e”

如您所见,表达式“\w”与句子中的所有字符都匹配,除了["$ "、"("、")"、"."]

尽管“\w”与[a-zA-Z0–9 _]中的所有字符都匹配,但它一次只匹配一个字符,因此输出将显示一个又一个字母,因此我在 python 中使用 for 循环来一起显示它们,因为每个匹配的字符之间都有空格。

现在让我们来看第二个例子,我们要搜索两个连续的字符

Regular Expression => “\w\w”Text=”Avatar did a business of 2.788 billion dollars($) where as Endgame has grossed 2.79 billions dollars($) till date”Note:It will match with two consecutive alphabet one at a timeOutput =>Av at ar di bu si ne ss of 78 bi ll io do ll

我没有复制整个输出,只是复制了一部分,只是为了让你有个概念

注意:具有偶数个字符的单词以两个字符为一组完整打印,但是具有奇数个字符的单词的最后一个字母在输出中会丢失(提示:当您将奇数除以 2 时,输出为 1),因为最后一个字母无法与另一个字母配对。

同样,我们可以一次搜索三个连续的字符

Regular Expression => “\w\w\w”Text=”Avatar did a business of 2.788 billion dollar where as Endgame has grossed 2.79 billions dollars till date”Output => Ava tar did bus ine 788 bil lio dol lar

我们可以使用大括号({})直接提及我们正在搜索的连续字母的数量,而不是重复使用“\w”,我们将在后面讨论这个问题

2) \W

这个速记字符“W”是大写字母将匹配除了这些字符之外的所有字符【a-zA-Z0–9 _】。因此,在这种情况下,只有那些在我们之前使用速记字符类“\ w”(w 很小)的例子中不匹配的字符才会匹配。

Text=”Avatar did a business of 2.788 billion dollar where as Endgame has grossed 2.79 billions dollars till date”Regular Expression => “\W”Output =>. ( $ ) . ( $ )

3) \d

这个速记字符匹配源字符串中的所有数字([0–9])。

**Regular Expression => “\d”**It will match with every single alphabet one at a time,unlike “\w” which matches with alphabets as well as digits,”\d” matches only with digitsText=”Avatar did a business of 2.788 billion dollars($) where as Endgame has grossed 2.79 billions dollars($) till date”Output =>2 7 8 8 2 7 9

现在让我们在源字符串中搜索两个连续的数字。

Regular Expression =>” \d\d”It will match with two consecutive digits one at a timeAvatar did a business of 2.788 billion dollars($) \n where as Endgame has grossed 2.79 billions dollars($) till dateOutput =>78 79

4)\D

类似于“\ W”(W 是大写),这个正则表达式也是它的对应物“\d”的完全相反,即它将只匹配那些速记字符“d”不匹配的字符。

元字符

**.**     -> Matches any single character except a line break**[ ]**   -> Matches any character contained between the square brackets**[^ ] ** -> Matches any character that is not contained between the square brackets*****     -> Matches 0 or more repetitions of the preceding symbol**+ **    -> Matches 1 or more repetitions of the preceding symbol**?**     -> Makes the preceding symbol optional.**{n,m}** -> Matches at least "n" but not more than "m" repetitions of the preceding symbol**|**     -> Matches either the characters before or the characters after the symbol**\**     -> Escapes the next character. This allows you to match     reserved characters { } . * + ? ^ $ \ |**^**     -> Matches the beginning of the input**$**     -> Matches the end of the input

重复

跟随元字符+、*或?用于指定子模式可以出现的次数。这些元角色在不同的情况下表现不同。

1) “+”

元字符“+”用于匹配前面符号的一次或多次出现。

例如:-

  • “\w+”匹配包含一个或多个[a-zA-Z0–9 _]字符的字符串
  • “\d+”匹配一位数或多位数的数字
  • a+匹配出现一次或多次的字母“a”。我们可以用任何字母代替“a”。

现在让我们在原始文本上尝试这些例子

Regular Expression=”\w+”Text = “Avatar did a business of 2.788 billion dollars($) where as Endgame has grossed 2.79 billions dollars($) till date”Output =>Avatar did a business of 2 788 billion dollars where as Endgame has grossed 2 79 billions dollars till date

现在让我们用“\d”尝试“+”操作符

Regular Expression =”\d+”Text=”Avatar did a business of 2.788 billion dollar where as Endgame has grossed 2.79 billions dollars till date”Output => 2 788 2 79

注意:在输出中“2”和“788”不匹配,因为这两个数字用“.”隔开

现在,如果想要匹配数字“2.788”,我们可以使用下面的正则表达式

Regular Expression => "\d+.\d+"Text=”Avatar did a business of 2.788 billion dollar where as Endgame has grossed 2.79 billions dollars till date”Output=> 2.788 2.79**Regular Expression Breakdown=>****Match one or more digit(\d+) + Match a full stop(.) + Match one or more digit(\d+)**

注意:在上面提到的复杂正则表达式中,我们搜索具有多个条件的字符串,条件应该按照正则表达式中提到的相同顺序连续匹配,例如,在上面提到的示例中,我们搜索具有一个或多个数字的数字,后跟一个句号,再后跟一个或多个数字。如果这三个条件不连续匹配,那么就不会有任何匹配。

**Exercise:****Question 1) Find all gmail email id’s from given below data.**Text =“abc@yahoo.com saurabh@outlook.com abc@gmail.com saurabh88@gmail.com saurabh11@outlook.com xyz@gmail.com”Solution:Regular Expression=”\w+@gmail.com”Output =>”abc@gmail.com saurabh88@gmail.com xyz@gmail.com”**Question 2) Find all words in the text which are ending with “ing”**Text=”dancing trek swimming sleeping jump running studying”Solution:Regular Expression=”\w+ing”Output => dancing swimming sleeping running studying

2)“*”

与用于匹配前面符号的一次或多次重复的“+”运算符不同,“*”用于匹配前面符号的 0 次或多次重复。

例如:-

假设我们被要求在下面提到的所有用户 id 中只找出那些包含字符串“saurabh”的 id,那么在这种情况下,我们将不得不使用“*”

Text =”saurabh13 kartik95 shreyashsingh ranasaurabh15 kumararindam yash_paryani saurabh_rana_22"Regular Expression = “\w*saurabh\w*”Output => saurabh13 ranasaurabh15 saurabh_rana_22

3) []方括号

方括号([])中的字符串匹配该字符串中的任何一个字符。让我们借助一个例子来理解它:-

Text=”ring king ping ding running”Regular Expression => “[rk]ing”**Regular Expression Breakdown => Match with alphabet “r” or “k” + Match with “ing”**Output => ring king

注意:正如我之前提到的,在正则表达式中,条件应该按照正则表达式中提到的顺序连续匹配。在上面的例子中,“running”不匹配,即使它以“r”开始,以“ing”结束,因为这些条件不是连续匹配的,因为在 running 中“r”和“ing”之间还有其他字母。

当我们想要匹配除方括号中提到的字符之外的所有字符时,在方括号中使用特殊字符“^”

Text=”ring king ping ding running”Regular Expression =>“‘[^rk]ing”Output => ping ding ning

我们可以在两个字符集之间使用连字符("-")来指定字符范围

Text=”ring king ping ding running”Regular Expression => “[a-z]ing”Output => ring king ping ding ning

4)”. "完全停止

元字符“.”匹配除回车或换行符以外的任何单个字符

Input=”1_3@a!b+c de”Regular Expression => “.”Output =>1 _ 3  @ a !  b + c   d e

这里正则表达式匹配每种类型的字符,包括字母“d”和“e”之间的空格

5)“{ }”花括号

当我们对一个操作符或子表达式在源字符串中必须匹配的出现次数非常明确时,我们使用花括号({})。在下面提到的例子中,我们试图获得与前面例子中相同的输出,在前面的例子中,我们希望匹配 3 个连续的数字,我们使用正则表达式“\d\d\d”,现在我们可以在花括号中提到我们希望的具体出现次数,而不是重复表达式。

Text=”123 4643 6642 5 6545 8974 45 17 8659 1 34 88 654 564 786 4536 4 76 89 684568 "regular expression = “\d{3}”*Output=>*123 464 664 654 897 865 654 564 786 453

6) “?”

“?”regex 中的 用于使之前的组/角色可选。

让我用一个例子来解释这个表达的重要性= >

假设我们被要求从下面给出的文本中提取所有的数字,现在在给定的文本中有三种类型的数字:-

  • 有些数字是整数(不带分数)
  • 一些大于 1 且有小数值的数字
  • 有些小于“1 ”,具有十进制值

现在我们想提取所有三种类型的数字,让我们来试试吧

text=”2.55 300 153.54 .45 1234.1234 435 5.2435 .345"Regular expression = “\d*\.?\d*”Output = 2.55 300 153.54 .45 1234.1234 435 5.2435 .345**Regular expression breakdown = Match 0 or more digits(\d*) + Match a decimal point on not(.?) + Match 0 or more digits(\d*)**

7)锚

脱字符号^和美元\(字符被称为“锚”,其中脱字符号^匹配文本的开头,美元\)匹配文本的结尾。它们根本不匹配任何字符。相反,它们匹配字符之前、之后或之间的位置

假设在一个数据集中,我们想要提取移动电话号码,但是在数据集中有许多错误,因此可能存在移动电话号码无效的情况(有效的移动电话号码由 10 个数字组成)。在这种情况下,锚非常有用。让我们通过各种案例来理解这一点

**Case-1**Text=”9851245245s"Regular Expression=”^\d\d{8}\d$”**Regular expression breakdown = First character of string should be a digit + match 8 digits + Last character of the string should be a digits**Output= Null

输出为空,因为该号码不是以数字结尾,这使其成为无效的手机号码。

**Case-2**Text=”98512f45245”Regular Expression=”^\d\d{8}\d$”Output= Null

输出再次为空,因为数字之间有一个字母表

**Case-3**Text=”985125245”Regular Expression=”^\d\d{8}\d$”Output= Null

这一次,源字符串中没有字母字符串,但我们仍然得到空输出,因为源字符串的长度不等于 10。

**Case-4**Text=”9851425245”Regular Expression=”^\d\d{8}\d$”Output= 9851425245

在这种情况下,我们得到输出,因为源字符串 full 满足了我们在正则表达式中提到的有效手机号码的所有条件。

结论

这些是正则表达式的最基本和最重要的概念,我尝试用一些有趣的例子来解释,其中一些是虚构的,但大多数是我在清理数据时遇到的实际问题,所以将来如果你遇到问题,只需再次浏览这些例子,你可能会在其中一个例子中找到准确的答案。

除了基本的正则表达式之外,你可能会遇到像这样的正则表达式“/[1]{6,18}$/".当人们看到如此长的正则表达式时,他们只是忽略它们,就像他们在英语句子中看到一个俄语单词一样。理解这种正则表达式的含义的诀窍是把它们分解开来,分别求解。

如果你仍然没有足够的信心去理解这样的正则表达式,那么请在评论部分提到,我可能会上传第二篇关于正则表达式的文章来解释如何解决这样的正则表达式。

如果你喜欢这篇文章,你可能会发现其他文章很有见地-

[## 机器学习:决策树-幕后

不要用机器学习做黑盒模型。尝试深入了解幕后发生的事情!!

towardsdatascience.com](/decision-tree-behind-the-scenes-e2800f26cba7)

与我联系-

领英

学习 TensorFlow Mobile 和 Tensorflow Lite 的基本指南

原文:https://towardsdatascience.com/the-essential-guide-to-learn-tensorflow-mobile-and-tensorflow-lite-a70591687800?source=collection_archive---------8-----------------------

什么是 TensorFlow Mobile?

TensorFlow Mobile 用于 iOS 和 Android 等移动*台。这是为那些拥有成功的 TensorFlow 模型并希望将其模型集成到移动环境中的开发人员准备的。这也是为那些不能使用 TensorFlow Lite 的人准备的。在将桌面环境模型集成到移动环境中时,您会发现以下基本挑战:

  • 了解如何使用 TensorFlow mobile。
  • 为移动*台构建他们的模型。
  • TensorFlow 库添加到他们的移动应用中。
  • 准备模型文件。
  • 优化二进制大小,文件大小,内存使用等。

使用移动机器学习的案例

一般来说,TensorFlow 的开发者会在高性能的GPU上使用它。但是通过网络连接发送所有设备数据非常耗时且成本高昂,在手机上运行它可能是一种简单的方法。

设备上深度学习常用案例:

a.张量流中的图像识别

这是一种检测或感受手机拍摄图像的有效方式。如果用户正在拍照,了解里面有什么,可以有一种方法来应用适当的过滤器或标记它们,以便在必要时找到它们。 TensorFlow 图像识别提供了一系列检测图像中物体类型的例子。它还包括各种预训练的模型,可用于在移动设备上运行。

b.张量流语音识别

有各种各样的应用程序可以构建语音驱动的界面。很多时候,用户不会给出指令,因此将指令连续传输到服务器会产生很多问题。为了解决这个问题,最好有一个神经网络在一个设备上运行,用于特定的单词,而不是听整个对话。

c.TensorFlow 中的手势识别

通过分析传感器数据,在手或其他手势的帮助下控制应用程序是有用的。在 TensorFlow 的帮助下可以做到这一点。
其他例子有光学字符识别(OCR)、翻译、文本分类、语音识别等。

什么是 TensorFlow Lite?

TensorFlow Lite 是专为移动*台和嵌入式设备设计的轻量级版本。它为手机提供了低延迟、小二进制的机器学习解决方案。
TensorFlow 支持一系列已针对移动*台进行调整的核心运营商。它还支持模型中的自定义操作。
TensorFlow Lite 教程基于开源*台序列化库 FlatBuffers 定义了一种新的文件格式。它包括一个新的移动解释器,用于保持应用程序小而快。它使用定制的内存分配器来最小化负载和执行延迟。

a.TensorFlow Lite 架构

你看到的上图是 TensorFlow Lite 架构。磁盘上训练好的 TensorFlow 模型会转换成 TensorFlow Lite 文件格式(。tflite)使用 TensorFlow Lite 转换器。然后,我们可以在移动应用程序中使用转换后的文件。
对于部署 Lite 模型文件:

  • Java API:Android 上 C++ API 的包装器。
  • C++ API:它加载 Lite 模型并调用解释器。
  • 解释器:它执行模型。它使用选择性内核加载,这是 Tensorflow 中 Lite 的独特功能。

您还可以使用 C++ API 实现定制内核。
tensor flow Lite 的一些亮点如下:

  • 它支持一组针对移动*台进行了调整的核心运营商。TensorFlow 还支持模型中的自定义操作。
  • 一种新的基于 FlatBuffers 的文件格式。
  • 使用选择性加载技术的设备解释器。
  • 当所有支持的运算符都链接在一起时,TensorFlow Lite 小于 300kb。
  • Java 和 C++ API 支持。

TensorFlow Lite 与 TensorFlow Mobile

当您看到什么是 TensorFlow Lite 和 TensorFlow Mobile,以及它们如何在移动环境和嵌入式系统中支持 TensorFlow 时,您就会知道它们之间的区别。TensorFlow Lite 和 TensorFlow Mobile 的区别如下:

  • 它是 TensorFlow mobile 的下一个版本。通常,在 TensorFlow Lite 上开发的应用程序比 TensorFlow mobile 具有更好的性能和更小的二进制文件大小。
  • 它仍处于早期阶段,因此并非所有案例都涵盖在内,TensorFlow mobile 的情况并非如此。
  • TensorFlow Lite 支持选择性运算符集,因此默认情况下,并非所有模型都适用于 TensorFlow Lite。然而,TensorFlow mobile 拥有全面的功能。

这就是 TensorFlow Mobile 和 TensorFlow Lite。希望你喜欢我们的解释。

结论

因此,在这篇 TensorFlow mobile 和 Lite 文章中,TensorFlow 中的 Lite 比其前身 TensorFlow Mobile 具有更好的性能比和更小的二进制文件大小。此外,如果你有任何疑问,欢迎在评论区提问。

数据科学的基本 Python 库

原文:https://towardsdatascience.com/the-essential-python-libraries-for-data-science-ce55c53dfd6b?source=collection_archive---------16-----------------------

来帮助你现在进行惊人的科学研究

Photo by Johnson Wang on Unsplash

你一直在学习数据科学,并想立即着手解决一些问题。所以,当然,你转向了 Python

Source: https://xkcd.com/353/

本文将向您介绍基本的数据科学库,以便您今天就可以开始飞行

核心

Python 有三个核心数据科学库,在此基础上构建了许多其他库。

  • Numpy
  • Scipy
  • Matplotlib

为简单起见,您可以将 Numpy 视为数组的首选。Numpy 数组在很多方面都不同于标准的 Python 列表,但是需要记住的是它们速度更快,占用空间更少,功能更多。不过,需要注意的是,这些数组的大小和类型是固定的,这是在创建时定义的。不要像列表那样无限追加新值。

Scipy 构建在 Numpy 之上,提供了许多您需要的优化、统计和线性代数函数。虽然 Numpy 有时也有类似的功能,但我倾向于选择 Scipy 的功能。想计算一个相关系数或者创建一些正态分布的数据?Scipy 是你的图书馆。

Matplotlib 大概是拿不到什么美人奖,但却是 Python 中绘图的核心库。它有大量的功能,并允许您在需要时进行有效的控制。

第二代

核心库非常棒,你会发现自己经常使用它们。不过,有三个第二代库,它们都是在内核的基础上构建的,以更少的代码提供更多的功能。

如果你一直在学习数据科学,没有听说过 Scikit-learn ,那么我不确定该说什么。它就是Python 中用于机器学习的库。它有令人难以置信的社区支持,惊人的文档,以及非常容易使用和一致的 API。该库专注于“核心”机器学习——结构化数据的回归、分类和聚类。它是而不是你想要的用于深度学习或贝叶斯机器学习等其他事情的库。

熊猫 是为了让 Python 中的数据分析更容易而创建的。Pandas 使得加载结构化数据、计算统计数据以及以任何方式分割数据变得非常容易。它是数据探索和分析阶段不可或缺的工具,但我不建议在生产中使用它,因为它通常不能很好地适应大型数据集。通过将您的熊猫代码转换为原始 Numpy,您可以在生产中获得显著的速度提升。

虽然 Matplotlib 不是最漂亮的现成产品,但是 Seaborn 可以轻松创建漂亮的可视化效果。它是基于 Matplotlib 构建的,所以您仍然可以使用 Matplotlib 功能来增加或编辑 Seaborn 图表。这也使得创建更复杂的图表类型变得更加容易。去画廊找找灵感吧:

[## 示例库- seaborn 0.9.0 文档

编辑描述

seaborn.pydata.org](https://seaborn.pydata.org/examples/index.html)

Source: https://phys.org/news/2019-08-all-optical-neural-network-deep.html

深度学习

随着深度学习的不可思议的崛起,不突出这个领域最好的 Python 包是错误的。

我是 py torch的超级粉丝。如果你想在学习一个使实现最先进的深度学习算法相对容易的库的同时开始深度学习,那么看看 Pytorch 就行了。它正在成为标准的深度学习库,用于研究和实现许多功能,使其对生产用例更加健壮。他们也提供了很多很棒的教程来帮助你入门。

在我看来, Keras 是第一个让深度学习真正可及的库。你可以用几十行代码实现和训练一个深度学习模型,这些代码非常容易阅读和理解。Keras 的缺点是,高层次的抽象使得实现目前不支持的新研究变得困难(尽管他们在这一领域正在改进)。它还支持多个后端。即 Tensorflow 和 CNTK。

Tensorflow 由谷歌打造,最支持将深度学习投入生产。在我看来,最初的 Tensorflow 相当笨拙,但他们已经学到了很多,TensorFlow 2.0 使它变得更加容易使用。Pytorch 在走向更多的生产支持的同时,Tensorflow 似乎也在走向更多的可用性。

统计数字

我想以 Python 中的两个伟大的统计建模库来结束我的演讲。

如果您是从 R 过来的,您可能会感到困惑,为什么 scikit-learn 不为您的回归系数提供 p 值。如果是,就需要看 statsmodels 。这个库,在我看来,对统计模型和测试有最好的支持,甚至支持很多来自 r。

概率编程和建模非常有趣。如果你不熟悉这个领域,我会看看黑客的贝叶斯方法。而你将要使用的库是 PyMC3 。它可以非常直观地定义您的概率模型,并且对最先进的方法有很多支持。

去飞翔吧

我将是第一个承认 Python 中有许多其他令人惊叹的数据科学库的人。然而,这篇文章的目标是关注本质。用 Python 和这些神奇的库武装起来,你会惊讶于你能取得的成就。我希望这篇文章能够成为您涉足数据科学的一个很好的起点,并且仅仅是您将发现的所有令人惊奇的库的开始。

这篇文章也可以在这里找到。

人类和计算机力量结合的关键一步

原文:https://towardsdatascience.com/the-essential-step-towards-joined-human-and-computational-forces-bf1e44899434?source=collection_archive---------45-----------------------

我们人类一直在从数据中学习。然而,知识的可用性发生了变化。此时此刻,知识作为我们日常生活的一部分无处不在。我们接触到大量的信息,从人们的生活(亲密的或未知的)到世界各地的新闻,再到深刻的学术内容。使用匹配算法可以确保你的 feed 中充满了你喜欢的内容。这些丰富的信息启发我回顾我们如何在大脑中储存和构建信息。

M 埃默里巩固在大脑中

我们通过强化大脑中的神经通路来学习。我们阅读/看到/听到新信息,并将其储存在我们的短期记忆中。记忆巩固是将信息从短期记忆转移到长期记忆的重要过程。为了提高我们对主题的理解,我们将它与大脑中现有的知识联系起来。我们建立的联系越多,我们在大脑中强化的知识就越深,我们就越容易将它与未来的新概念联系起来。

人类与计算机的专注时间跨度

我们大脑中信息过载和信息处理的一个问题是注意力持续时间有限。我们可以只花很少的时间专注于解释数据。然而,计算机可以整天处理数字和运行算法。因此,人类解释和计算方法之间的联系在我们日常接触信息时至关重要。首先,我们需要计算能力来将大量信息从杂乱、令人生畏转变为清晰、可解释。接下来,我们可以看看相关性和模型,以理解底层的数据生成过程。这可能导致对日常过程的有价值的见解。

摘要作为基础:数据整合

当我们开始一个数据科学项目时,重要的第一步是熟悉手头的数据。我们有什么?它的质量如何?我们错过了什么吗?还有很多问题要问。为了帮助这个初始过程,我们利用了数据汇总技术。他们的目的是巩固手头的数据,使人类的解释。为了解释这些方法的输出,我们需要习惯这些术语。问题不在于技术方面,因为可以创建软件来处理统计细节。然而,如果我们想要*等的参与,我们就不能回避社会理解术语的需要。为了参与塑造我们社会的创新,我们需要培训人们熟练掌握数据科学语言。

我们需要从人类身上得到什么

计算统计学有潜力带领我们增强知识,但我们需要学习如何解释它的输出。为了从中受益,我们需要将人工解释与分析的综合输出结合起来。增强基础数据生成过程的知识,提高个人和组织的决策能力。我们需要社会抛开他们对未来的恐惧和不确定性,开始拥抱未来。虽然网上的信息可能令人望而生畏,但任何人都可以从自己的水*开始。例如,解释*均值是我们已经习惯的事情。把这个扩展到集群怎么样?

人类洞察力+计算能力=增强的知识

总之,我认为我们需要训练人类更加适应数据科学。特别是,在优化模型拟合或应用无监督学习后,人类应该能够“阅读”这种新的知识表示方式。这优化了数据分析的发现能力的潜力。

媒体*台推荐引擎的伦理和隐私问题

原文:https://towardsdatascience.com/the-ethical-and-privacy-issues-of-recommendation-engines-on-media-platforms-9bea7bcb0abc?source=collection_archive---------8-----------------------

Photo by Jens Kreuter on Unsplash

现实世界中的数据科学

为什么我们应该更加关注提供内容的系统。

媒体*台上的推荐引擎正在主导我们的媒体决策。不是让沙发冲浪的随机性决定我们的观看命运,而是在所有形式的数字媒体中为我们做出选择,包括 YouTube、脸书、Spotify 等。根据麦肯锡的一份报告,75%的网飞观看决定来自产品推荐。

虽然从表面上看,这等同于用户便利,因为系统推荐的东西与它收集的数据一致,以创建用户兴趣的简档,但实际上,推荐系统的统治掩盖了道德和隐私问题。

伦理问题#1:成瘾

推荐系统中的一个伦理问题是,它们被创造出来是为了让人上瘾。他们的目的是在长时间内抓住并保持用户的兴趣。以 YouTube 和网飞上的自动播放功能为例。两者都提供根据你的资料定制的内容,并自动播放以吸引你。

这有什么伦理上的两难呢?这难道不是在新的注意力经济中生存的一种方式吗?乍一看,也许是这样。但是,当这些全球性公司利用人类心理来创造一种令人上瘾的产品时,该怎么办呢,正如脸书创始人肖恩·帕克在接受 Axios 采访时承认的那样:

“构建这些应用程序的思维过程,脸书是第一个,……都是关于:‘我们如何尽可能多地消耗你的时间和有意识的注意力。’"

斯坦福大学教授 Nir Eyal 写了一本关于设计成瘾产品的书,他呼吁建立新的道德标准。埃亚尔说,不同的说服技巧可能是合乎道德的,这取决于具体情况;例如,在 Duolingo 上使用“条纹”来鼓励人们学习一门新语言可能看起来可以接受,而 SnapChat 的“条纹”旨在让青少年强制检查该应用程序,这可能处于道德灰色地带,这使它成为一个复杂的问题。因此,他假设,如果*台让用户做他们不想做的事情,那就不再是简单的说服了,而是强迫。

虽然这可能是 SnapChat 和脸书等应用程序中的一个更大的问题,但这仍然与推荐引擎有关,因为它们通常是为了吸引和保持观众的注意力而构建的。网飞的《你还在看吗其他应用程序也应该使用该功能,比如 YouTube。

道德问题#2:极端内容=观众的注意力,但代价是什么

吸引和保持用户注意力的斗争导致了另一个关于推荐引擎的关键道德问题:提供的内容可能实际上不符合用户的最佳利益,并导致两极分化。正如 Renee Diresta 在连线中所说,推荐系统被“打破”并成为“伟大的票贩子”

例如,在 YouTube 上,该算法往往会提供越来越激进的内容,让你继续观看,以便谷歌可以从广告中赚更多的钱。正如 Zeynep Tufekci 在纽约时报中所说,

" YouTube 将观众引入极端主义的兔子洞,而谷歌则提升了广告销售额."

Tufekci 发现,无论你开始观看稍微自由或保守的领先视频,YouTube 最终都会建议越来越激进的内容,包括至上主义和阴谋论视频。即使是非政治性的视频,比如关于素食主义的视频,也会引出关于素食主义的视频来吸引用户。

Tufekci 最终将 YouTube 与快餐店联系起来:提供大量含糖、含盐的食物,让我们即使已经吃饱了也想继续吃。

对于谷歌的工程师来说,这是一个道德问题,因为他们知道人们去 YouTube 获取各种主题的信息,而算法最终会让人们观看不正确、激进、极端的视频。

内容创作者也受到影响,Guillaume Chaslot写道,他是前谷歌工程师,曾批评 YouTube 算法的道德。由于越来越激进的内容表现良好,创作者受到激励,创建煽动性的视频和帖子,以吸引眼球。

“人工智能本身还没有制造假新闻,并对媒体发动战争,但它正在激励内容创作者和公众人物这样做。”

推荐系统导致内容越来越激进的问题不仅限于 YouTube 的算法。据 BuzzFeed 新闻报道,脸书正在考虑改变其新闻推送推荐系统,以更多地推广脸书群体,这可能是一个错误,因为这些群体可能会变成极端主义的缩影。

安全研究员 Renne DiResta 告诉 BuzzFeed 新闻,团体已经成为坏人的目标:

“宣传者和垃圾邮件发送者需要聚集一批观众,而各种团体则为他们提供服务。如果你可以简单地加入相关团体并开始发帖,就没有必要进行广告宣传来寻找接受你信息的人。”

脸书改变算法,更多地关注群体,而不是更少,这是一个道德灰色地带。一方面,人们更多地在群里发帖,因此,抓住更多人的注意力,对其*台的表现来说是有意义的。另一方面,知道坏演员经常专门利用群体——BuzzFeed 新闻也指出,俄罗斯黑客反复引用脸书群体作为焦点——表明脸书可能正在帮助用户更容易受到这些坏影响。

Diresta 提出了一些缓解这个问题的方法。第一个是创建一个推荐问题,将人们引向相反的方向——指向旨在消除观众激进情绪的内容。让用户对他们的算法过滤有更多的控制权是另一个选择。比如在 Twitter 上,你可以过滤掉低质量账号的内容。

另一个选择是让算法考虑内容质量的来源,这样低质量的内容就不会被推荐。这将“推动”用户转向更高质量的内容,Diresta 将其比作午餐食品系列中的苹果而不是薯片。

NBC 新闻报道,YouTube 发言人表示,他们已经将算法转移到关注“满意度”而不是“观看时间”,因此评论、喜欢、不喜欢、分享和调查都被考虑在内。算法已被更改,以更多地包含视频源的权限。

隐私问题:个人数据收集

个性化推荐通常需要收集个人数据进行分析,这可能会使用户容易受到隐私侵犯问题的影响。根据发表在 Engineering 上的一篇 2018 年研究论文,这些数据“不良地向推荐者披露了用户的个人兴趣。“此外,数据可以在未经用户同意的情况下出售给第三方。以脸书/剑桥分析公司丑闻为例。第三个隐私问题是,*台可能被黑客攻击,用户的个人数据可能被泄露,这已经在脸书(和其他*台)发生过几次。

*台必须制定隐私保护措施,以避免此类侵权行为。2018 年的研究论文建议使用加密和随机化技术来保护和保存私人数据。与这些方法相呼应的是用户分组,它根据相似的特征对成员进行分组,并删除个人识别数据。这样,在不牺牲用户隐私的情况下,对*台和广告商来说重要的特征得以保留。

推荐引擎:主宰媒体的未来

随着媒体领域越来越被社交媒体和流媒体*台所主导,形成推荐系统的算法在人们观看的内容中发挥着巨大的作用。这些系统的创造者需要理解和减轻威胁消费者的道德和隐私问题。

道德自动化工具包

原文:https://towardsdatascience.com/the-ethical-automation-toolkit-f1fd4281534e?source=collection_archive---------20-----------------------

自动化、人工智能、机器学习的正确做法是什么?—让它为每个人服务。

自动化简史。

The transcontinental railroad from the east to west United States.

1850 年至 1920 年。蒸汽机提高了生产率和制造业,从而更快地运送货物、服务和乘客。自动化蒸汽生产帮助人类劳动力。修建铁路往往需要使用奴隶劳动力,并给工人带来长时间和危险的工作条件。[1]

Computer Space (1970).

1970 年。第一款街机游戏:《计算机空间》使用基础人工智能(AI);本质上是随机选择玩家的敌人,使他们看起来很聪明——将人工智能引入娱乐和公共领域——鼓励玩家返回,输入更多硬币继续游戏。[2]

Robotic arm, iconic imagery of modern car assembly factories.

1993 年至 2007 年。早期的机器人技术革新了制造流程——在相当大的规模上实现了工厂手工劳动的自动化。[3]

From early home computing to modern.

1995 年至 2005 年。信息技术使得自动化任务在办公室和家庭中普遍存在。[4]

2015–2065 年。自动化、人工智能和机器学习(ML)将被使用,至少部分地用于人类活动的每个部分。

Automated vehicles and pavement drones — represent our automated future.

2020+。自动化车辆和送货无人机只是自主未来的一个小代表。

47% of jobs could be automated within the next 20 years (Signavio.com, n.d.).

自动化一切的伦理。

仅举几个例子,最*在金融、零售、法律、医疗保健和人力资源领域的许多自动化都是通过机器人流程自动化(RPA)实现的——永久地从人类那里移除重复性任务,并允许员工专注于他们的“人类优势”,包括情商、推理、判断和创造力(Lhuer,2016)。重复性任务可以被编码,并且不需要更高级的认知功能来完成。在金融服务领域,RPA 任务主要取代运营、信息技术、财务、风险管理和人力资源领域的中台和后台职能。RPA 实施的投资回报率很高,第一年的回报率从 30%到 200%不等(Lhuer,2016)。

与自动驾驶汽车不同,未来四十年的大多数自动化将主要是“不可见的”——这是我们每小时每纳秒都在生产的数据的自动化。很像哈罗韦对电子人的定义;一种既有动物又有机器的生物,它们居住在模糊的自然和组合的世界中——有机体和技术的结合,带有《性编年史》中没有的命令(哈拉威,1985)。人类已经与自动化共生共存,并严重依赖它。例子包括:我们数据的自动化为超市提供了库存信息;金融机构自动转账、抵押贷款等;处理我们的医疗数据,提供和发现潜在的疾病;从犯罪现场提取数据;交通信号自动化;处理和制作官方文件,如护照和驾驶执照。

90% of business leaders say automation is essential to ongoing success (Signavio.com, n.d.).

例子;自动化招聘。

招聘系统的自动化受到了媒体的批评,并突出了向公众展示的一些不同的表现形式。例如,一些机器学习程序学习如何基于选定的数据完成任务。该程序扫描简历文本,而其他程序则分析视频面试或任务表现。对来自潜在候选人的数据进行分级和处理——通常针对一组当前员工——由具有类似角色和职责的人指定为合格或合适的。

这些工具往往不能消除预先存在的人为偏见(Goodman,2018)。在亚马逊的自动招聘项目中;该工具对遵循特定教育途径的候选人不利——许多现有亚马逊员工可能没有参加(Goodman,2018)。该工具同样降低了简历的接受度,简历中包含了男性主导文化中女性被贬低的地位关键词,如限定词(“差不多”、“差不多”)、强化词(“真的”、“非常”)、自我提问(“经常在规定时间内完成任务吗?”)和极端礼貌(鲁宾和格林,1992)。该工具在识别以男性为中心的措辞时提高了接受标准,例如,推理连接词(“因此”、“所以”)、强化词(“很多”、“相当”、“真的”)和控制词(“执行”、“捕获”)(Rubin 和 Greene,1992)。

古德曼的文章“为什么亚马逊的自动化招聘工具歧视女性”偏向于她的公司,并作为其服务的推广机制。声称算法“复制甚至放大了普遍存在于社会中的偏见”在某种程度上可能是正确的。然而,没有考虑到自动化招聘相对于“人工”招聘比自动化更有偏见。招聘人员可能缺乏经验,更多地根据自己的经验或缺乏经验来判断候选人。

自动化招聘是一个特别有用的例子,可以用来思考在全球文化中达成共同道德标准的挑战(和重要性)。全球道德政策中的标准和自动化的发展仍然不确定,因为定义的标准是在微流程级别执行的,如果有的话,其中自动化是为各个公司和个人的地理位置定制的。

随着这种“看不见的”自动化对于任何开发自动化过程的人来说变得更加容易,谁拥有它,谁决定自动化将决定什么。以按揭贷款为例;当自动化流程的主要任务是为自动化所有者省钱时,它如何不歧视申请者?

一个负责任的自动化策略包含了对从现有过程到后自动化的每一步发展的影响的询问。由于自动化对于希望为客户、同事和利益相关者提供始终按需服务的组织至关重要,因此应负责任地创建自动化,包括咨询受影响的社区;提供透明度;帮助人类并赋予他们权力;由人类管理和监控;包容和不偏不倚;考虑长期影响。负责任的自动化应该在整个过程生命周期中被质疑和实现。

自动化在自动化所有者和科幻解读的媒体注视之间有不同的解释。《终结者》(1984)等电影将自动化妖魔化到了人类濒临灭绝的程度。每个媒体和自动化所有者的议程是不同的,这影响了不充分的报道和失实陈述(Miah,2005)。

Example of automated recruitment and the invisible tool of candidate selection.

Example of a manual recruitment process.

谁是对的?

在两张图中,自动化流程似乎是根据种族背景来选择申请人的。招聘人员选择了更多的申请人,拒绝了看似随机的候选人。我们没有考虑这些选择背后的过程,因为我们不知道为什么候选人被拒绝。不了解这两种方法,很难做出假设,然而公众话语经常会批评自动化超越人性。

https://www.paulwilshaw.co.uk/research/

道德自动化工具包。

在过去十年中,自动化和技术的兴起一直是一个新兴的文化讨论。在某种程度上,自动化的兴趣是公众理解中的一个重要问题,这一直是数字化转型政策讨论中的一个优先事项。该工具包利用了社区如何应对发展中的自动化景观的挑战的伦理含义,考虑了替代工作和有意识和无意识偏见的情况。它批判性地评估了自动化的前景,并提出了商业和公众参与的可能的最佳实践。这个工具包试图向非专家传达伦理自动化的考虑。[5]

道德自动化过程的要素

The elements of an ethical automated process that should be included and question before implementation. [6]

可以由人类来管理:

为什么自动化系统要由人类来治理?

就像政府、组织、执法部门、医院受法律、规则和选举机构的管理一样,自动化也应该如此。

The questions that should be considered for automated processes to be governed by humans.

艾滋病和赋予人类权力:

为什么要帮助和授权人类?他们很慢,需要休息,而且有不准确的倾向。

在归纳、发现错误和识别异常方面,人类也比自动任务做得更好。大多数情况下,人类是移情的。

The questions that should be considered for automated processes to aid and empowerhumans.

考虑长期影响:

为什么要考虑长期影响?

毫无疑问,同时自动化所有的事情会带来问题。人类是群居动物,因此需要其他的人际交往,尤其是在困难的情况下。

The questions that should be considered for automated processes to be reflected upon for their long-term impacts.

保持透明和公*:

为什么要透明公正?

自动化应该和人类一样负责,如果不是更负责的话。拥有清晰、公*和可访问的自动化流程指南
可以消除问题和重新评估。

The questions that should be considered for automated processes to transparent.

与当地社区合作:

为什么要与当地社区接触?

与当地社区一起检查原型和理论经常会发现意想不到的结果。参与社区鼓励过程的拥护者,并消除错误和产生新的问题。

The questions that should be considered for automated processes that should engage with their communities.

不偏不倚,包容各方:

为什么要做到不偏不倚,兼容并蓄?

支持包容性意味着想法得到*等的评价,不管个人特征、背景和无意识的偏见。多样化的视角最大限度地为社会和自动化流程带来创新。

The questions that should be considered for automated processes to be non-biases (conscious or unconscious) and inclusive.

伦理自动化工具包注释。

1。社会技术进步的历史很少有伦理的过去。即使在今天,苹果 AirPods,一种具有 450 年半衰期的一次性技术的身份象征,也是在令人恐惧的环境中建造的。塑料 AirPods 是碳、氢、氧、氮、氯和硫与钨、锡、钽、锂和钴的组合。这些元素被人类提取、加热和提炼,人类吸入沉积在肺部的空气微粒。这些材料从世界上一些最贫穷的国家,如越南、南非、哈萨克斯坦、墨西哥和印度尼西亚运往中国的工厂(哈斯金斯,2019 年)——呼应了从美国东部到西部的横贯大陆铁路的建设。

在建设过程中,中太*洋开始雇佣中国劳工,由于普遍的西方种族主义,当时中国劳工被认为是劣等劳工。64,000 名中国劳工在内华达山脉沙漠残酷的工作条件下辛苦劳作,工资微薄,与他们的内战老兵和爱尔兰移民形成鲜明对比(HISTORY,2018)。

这个自动化工具包旨在阻止历史和当前实践中这些事件的重复。

2。面向大众、面向付费消费者的人工智能(AI)的首批例子之一;电子街机游戏《计算机空间》鼓励可重复和令人上瘾的游戏——用户控制一艘太空火箭去轰炸小行星和不可玩的角色(NPC)飞碟。20 世纪 70 年代,人们对未来黄色塑料的看法占据了计算机空间,创造了一个视频游戏市场——随后是《乒乓》(1972)、《太空入侵者》(1978)和《大金刚》(1981)。

电子游戏成瘾源于电脑空间,此后一直是家长和教师持续关注的问题(Feeley 和 Palmeri,2018)。像堡垒之夜这样拥有超过 2 亿注册玩家和 10 亿美元业务的游戏,有许多批评者宣称,“这个游戏就像海洛因。”(Feeley 和 Palmeri,2018 年)以及受影响者的其他成瘾主张。Fornite 是免费的,可以在大多数带屏幕的设备上使用。虽然可以免费玩堡垒之夜的创造者,但 Epic Games 通过出售游戏中的数字物品来赚钱,例如可以使用信用卡或借记卡购买的稀有武器和“皮肤”。还有“战利品箱”,玩家在不知道里面有什么的情况下购买游戏中的物品。荷兰博彩监管机构发布了一项研究,称这种“盲目”购买相当于赌博(Feeley 和 Palmeri,2018)。虽然可以免费玩堡垒之夜的创造者,但 Epic Games 通过出售游戏中的数字物品来赚钱,例如可以使用信用卡或借记卡购买的稀有武器和“皮肤”。还有“战利品箱”,玩家在不知道里面有什么的情况下购买游戏中的物品。荷兰博彩监管机构发布了一项研究,称这种“盲目”购买相当于赌博(Feeley 和 Palmeri,2018)。

3。公众对机器人和自动化理解的一个例证——这个工厂机械臂一眼就能认出来。这些先入为主的观念往往是扭曲的,因为人们倾向于记住关于某个主题的不利信息,而不是有利信息(Gilovich,2007)。这种信息排序被描述为“反应顺序效应”(Schuman and Presser,2000)——“一个可接受的答案越早,它就越受欢迎”(Tourangeau,Rips and Rasinski,2008)。

4。随着计算硬件变得经济实惠,获得软件和数字服务的渠道也拓宽了。最初,随着“胖客户端”(安装在最终用户机器上的软件)软件和最*渗透到“云”中的“瘦客户端”软件,例如 Google Docs、Spotify 和网飞,这些服务可能需要下载应用程序或软件,然而,内容主要存储在远程未公开位置的大型数据中心。

内容访问方式的数据访问模式的转变在很大程度上保持不变。安全性和内容所有权变得更加抽象和复杂,不同的法律适用于不同的全球公民。最*的一个例子是谷歌暂停中国电信巨头华为获得其 Android 操作系统的更新(Badshah 和 Kuo,2019)。美国政府将华为列入贸易黑名单,这对世界各地的用户产生了影响,他们将无法更新 Android 软件或在新版本上访问 Google Play、Google Maps 和 Google Mail 等应用程序(Badshah 和 Kuo,2019 年)。

5。道德自动化工具包是一个初步版本,鼓励协作,需要公众、自动化开发人员、最终用户、利益相关者和软件开发人员的进一步参与。

作为这个过程的一部分,Paul Wilshaw 咨询了几个组织、自动化开发人员、最终用户和软件开发人员,以鼓励对“自动化过程”的不同理解。对于这个工具包,“自动化过程”是以另一种形式存在的组织过程,其中脱节的系统和软件主要是手动过程。“自动化流程”的创建旨在取代现有流程的一部分或全部。

6。道德自动化流程的要素;人类倾向于依赖“习惯化图式”(卡恰托雷、科利和舍弗勒,2011 年)来解释他们的周围环境,并更好地理解和评价这种体验。在一项研究中,Burri (2009)发现,公民转向类比和个人经历,以理解不确定性(卡恰托雷,科利和 Scheufele,2011)。Felt 等人(2008 年)认为,特定的技术以及公众如何看待该技术可以在形成公共理解方面发挥重要作用(卡恰托雷、科利和舍弗勒,2011 年)。Slovic 等人(2004 年)解释说,通过经验和情感反应获得的联系是一个“经验系统”。

当一个自动化的过程取代了一个现有的过程时,要分离与之相关的情感反应是一个挑战。

该工具包旨在质疑自动化的道德立场,并包括不同的经验原则,以便学习和获得对未来创新的更好理解。

参考资料:

Badshah,n .和 Kuo,L. (2019)。谷歌黑名单后阻止华为访问安卓更新。[在线]卫报。可在:https://www . the guardian . com/technology/2019/May/19/Google-Huawei-trump-black list-report【2019 年 5 月 21 日获取】。

m .卡恰托雷、e .科利和 d .舍费勒(2011 年)。从使能技术到应用。Sage 出版公司。

儿童和父母:2018 年媒体使用和态度报告。(2019).第一版。[电子书] Ofcom。可在:https://www . ofcom . org . uk/_ _ data/assets/pdf _ file/0024/134907/Children-and-Parents-Media-Use-and-Attitudes-2018 . pdf【2019 年 5 月 9 日访问】。

Feeley,j .和 Palmeri,C. (2018 年)。堡垒之夜成瘾迫使儿童进入电子游戏康复中心。[在线]独立报。可在:https://www . independent . co . uk/life-style/gadgets-and-tech/news/fort nite-addiction-video-games-rehab-children-battle-royale-parents-a 8665071 . html【2019 年 5 月 21 日访问】。

t . gilovich(2007 年)。我们如何知道什么不是这样。温哥华:兰加拉学院。

古德曼河(2018)。为什么亚马逊的自动化招聘工具歧视女性。[在线]美国公民自由联盟。可在:https://www . aclu . org/blog/women-rights/women-rights-workplace/why-amazons-automated-hiring-tool-discribed-against【2019 年 5 月 21 日访问】。

哈拉威博士(1985 年)。电子人宣言:二十世纪后期的科学、技术和社会主义-女权主义。http://users.uoa.gr/~cdokou/HarawayCyborgManifesto.pdf

哈斯金斯,C. (2019)。AirPods 是个悲剧。[在线]恶习。可在:https://www . vice . com/en _ us/article/neaz 3d/ai rpods-are-a-quartery【2019 年 5 月 21 日访问】。

历史。(2018).横贯大陆的铁路。[在线]见:https://www . history . com/topics/inventions/trans-continental-railway【2019 年 5 月 21 日访问】。

Investmentbank.barclays.com(2018)。延迟的预期|巴克莱投资银行。[在线]见:https://www . investment bank . Barclays . com/our-insights/robots-at-the-gate/delayed-expectations-automation-productivity-and-wages . html【2019 年 5 月 21 日进入】。

Lhuer,X. (2016)。下一个你需要知道的缩写:RPA(机器人流程自动化)。[在线]麦肯锡公司。可从以下网址获取:https://www . McKinsey . com/business-functions/digital-McKinsey/our-insights/the-next-acronym-you-need-to-know-about-RPA【2019 年 5 月 20 日获取】。

Manyika,j .,Chui,m .,Miremadi,m .,Bughin,j .,George,k .,Willmott,p .,和杜赫斯特,M. (2019)。利用自动化创造一个可行的未来。[在线]麦肯锡公司。可在:https://www . McKinsey . com/featured-insights/digital-disruption/harling-automation-for-a-future-the-works【2019 年 5 月 20 日获取】。

Miah,A. (2005)。遗传学、网络空间和生物伦理:为什么不公开伦理?。公众对科学的理解,14 卷 4 期,第 409-421 页。

鲁宾博士和格林博士(1992 年)。书面语言中的性别典型风格。英语教学研究,[在线] 26(1),第 7-40 页。地点:【http://www.jstor.org/stable/40171293】T4。[访问日期:2019 年 5 月 21 日]。

舒曼和普雷斯(2000 年)。态度调查中的问题和答案。加利福尼亚州千橡市:塞奇出版社。

Signavio.com(未标明)。机器人流程自动化——释放您的数字劳动力。[在线]可在:https://www.signavio.com/rpa/[2019 年 5 月 20 日访问]。

Tourangeau,r .,Rips,l .和 Rasinski,K. (2008 年)。调查反应心理学。剑桥:剑桥大学出版社。

徐(未注明)。电子游戏中人工智能设计的历史及其在 RTS 游戏中的发展-最后一步。[在线]Sites.google.com。可在:https://sites . Google . com/site/my angel cafe/articles/history _ ai【2019 年 5 月 20 日访问】。

数据科学的伦理*

原文:https://towardsdatascience.com/the-ethics-of-data-science-e3b1828affa2?source=collection_archive---------8-----------------------

Image credit : Quantitative Scientific Solutions

数据和信息技术的双引擎正在推动人类企业几乎每一个方面的创新。同样,今天的数据科学深刻影响着生命科学、智能城市和交通运输等领域的商业运作方式。尽管这些方向已经变得令人信服,但没有道德考虑的数据科学的危险同样显而易见——无论是对个人身份数据的保护、自动化决策中的隐性偏见、心理测量学中自由选择的幻觉、自动化的社会影响,还是虚拟交流中真理和信任的明显分离。证明关注数据科学伦理的必要性超出了这些机遇和挑战的*衡表,因为数据科学的实践挑战了我们对人类意义的认知。

如果道德被定义为帮助人类区分对错的共同价值观,那么人类活动的日益数字化就决定了我们如何评价周围的世界。

Margo Boenig-Liptsin 指出,我们对信息技术的日益依赖从根本上改变了“隐私”、“公*”和“代表”的传统概念,更不用说“自由选择”、“真相”和“信任”了。【我】这些突变凸显了数据科学日益增长的足迹和责任——除了字节和比特,数据科学动摇了价值、社区和公*的感知基础。如果学术界围绕统计、计算和软件工程迅速建立了数据科学项目,那么很少有项目解决数据科学更大的社会问题,更少项目分析如何限制甚至鼓励负责任的数据实践。【ii】让我们勾勒出这次挑战的轮廓。

数据公民

也许在数据科学中,没有哪个领域的伦理比保护个人数据更受关注。我们与社会和经济团体互动的数字化转变揭示了我们是谁,我们想什么,我们做什么。欧洲(GDPR)、印度(2018 年《个人数据保护法》)最*出台的立法。和加州(2018 年加州消费者隐私法案)明确承认数字公民的权利,并含蓄地解决了个人和个人身份数据的商业使用的危险。这些法律框架试图重新*衡组织和个人之间不*等的权力和影响关系,编纂道德基准,包括知情权、反对权、接触权、纠正权和被遗忘权。

对这项立法的关注远远超出了对数据保护的关注。这些界定正当和非法数据行为的尝试回应了许多伦理问题。随着数据成为世界经济的新货币,公共和私人、个人和社会以及资源丰富者和资源贫乏者之间的界限正在被重新划分。谁拥有个人数据,哪些权利可以在明示或暗示的同意下进行分配?公共和私人组织应该在多大程度上能够收集和控制我们人类交往的大量记录?这些数据控制者和数据处理者应该在多大程度上对我们数据的丢失或滥用负责?

自动化决策

在各种可能性中自觉做出决定的能力长期以来一直被视为将人(或至少是活人)与机器区分开来的条件。随着算法交易、自动驾驶汽车和机器人技术等数据科学创新的进步,人类和人工智能之间的区别变得越来越难以区分。机器学习的当前应用跨越了决策支持系统的门槛,进入了人工智能领域,其中复杂的算法被设计来代替人类决策。

跨过这个门槛会带来一些伦理上的考虑。经济和/或社会组织能够依赖日益复杂的方法吗?在这些方法中,许多人既不理解基本模型的假设,也不理解其局限性。我们是否愿意接受这些本质上从我们的经验中学习的应用——让我们成为过去的囚徒,限制了我们增长和多样化的潜力?我们是否理解这些*台的内在逻辑是可以被游戏化的——这创造了“欺骗”系统的机会?最后但同样重要的是,谁在法律上对自动化决策中固有的隐性偏见负责?

微观定位

约翰·巴特利几年前就提出,我们的数字足迹通过我们的意图数据库提供了不可磨灭的路线图。【iii】数据科学的主旨是帮助组织了解个人和社区的目标、动机和行动。Michal Kosinski 和 David Stillwell 的工作承诺了更多,他们提出,通过关注行为模式(个性特征、信仰、价值观、态度、兴趣或生活方式)而不是人口统计数据的聚类,可以大大增强说明性分析的相关性。【第四季】

从那以后,微观定位的应用被认为是在市场营销、政治和经济领域施加影响的有力工具。即使个人行使“自由选择”的能力长期以来一直是一个争论的话题,但只向消费者提供他们会同意的信息的做法会进一步束缚理性。此外,微定位技术允许研究人员推断个人的敏感信息和个人偏好,即使这些数据不是专门捕获的。最后,随着“客户成为产品”,一个真正的危险是,数据科学与其说是用来改善一个组织的产品或服务,不如说是把消费者变成操纵的对象。

分布式分类帐

信息技术的目标一直是提供单一版本的事实,以促进产品、服务和思想的交流。由于与全球经济和国内市场发展相关的诸多原因,在这一“基本事实”和消费者对捕捉、收集和货币化这些数据的中介机构(如国家、银行和企业)的信任之间,出现了一条感知鸿沟。万维网的社会机制进一步扭曲了这种关系,把事实和虚构放在同等的地位上,有利于极端到*凡的常态。

一般来说,分布式账本技术,尤其是区块链技术,为更加透明和可追踪的信息来源提供了希望。然而,这种价值互联网的愿景部分被相对未经测试的技术的潜在社会挑战所掩盖。技术本身能成为真理和信任的标准吗?人们和组织会在多大程度上接受透明度的首要地位?像被遗忘的权利这样的社会价值观在什么基础上可以与公共账簿的技术要求相调和?摆脱了传统和金融资本主义的逻辑,人性能接受一个完全不同的财富分配基础吗?

人类和机器智能

虽然在过去的四十年里,人们就信息技术对私营和公共企业组织的影响进行了广泛的辩论,但数据科学对管理职能的影响却很少受到关注。在行业媒体中,技术通常被视为道德中立的,证明了在任何时间点占主导地位的管理范式的数字镜像。在学术界,这种关系受到更密切的审查,拉图、卡隆和劳等作者已经证明了不同形式的技术如何影响经理、员工和客户对社会和经济交流、市场和行业现实的看法。

当专注于数据科学时,这些对上下文的关注揭示了他们自己的许多伦理考虑。如果数据从来都不是客观的,那么管理层必须在多大程度上理解数据是如何收集、分析和传输的?同样,随着算法变得越来越普遍和复杂,管理者需要在多大程度上理解他们的假设和限制?随着应用程序在关键业务流程中承担越来越大的角色,应该在多大程度上围绕人员和软件代理的协调来定义管理?从另一个角度来看,随着人工智能的成熟,哪些管理职能应该委托给机器人,哪些应该留给人类?

李·施伦克

*本文原载于远见营销的营销&创新博客

Lee Schlenker 是商业分析和社区管理教授,也是 http://baieurope.com 商业分析研究所的负责人。他的 LinkedIn 个人资料可以在查看你可以在的 Twitter 上关注白

【I】Ericson,Lucy (2018),是时候在餐桌上进行数据伦理对话了

【ii】Fiesler,Casey (2017),50 多门技术伦理课程,并附有教学大纲链接

【iii】巴特尔,约翰(2013)意向数据库

【iv】科辛斯基,米卡勒等人(2013),私人特质和属性可以从人类行为的数字记录中预测

工作场所中人员分析和人工智能的伦理:信任的四个维度

原文:https://towardsdatascience.com/the-ethics-of-people-analytics-and-ai-in-the-workplace-four-dimensions-of-trust-21fb1c400cb2?source=collection_archive---------15-----------------------

http://www.joshbersin.com

人工智能和人员分析已经起飞。正如我在过去的文章中所写的那样,工作场所已经变成了一个高度仪器化的地方。公司使用调查和反馈工具来获取我们的意见,新工具监控电子邮件和我们的通信网络(ONA),我们捕获关于旅行、位置和移动性的数据,组织现在拥有关于我们福祉、健身和健康的数据。

除此之外,还有一种新的数据流,包括视频(每次视频会议都可以录制,超过 40%的工作面试都可以录制)、音频(记录会议的工具可以感知情绪),以及无论我们在哪里都可以识别人脸的图像识别。

在人力资源分析的早期,公司获取员工数据来衡量控制范围、绩效评级分布、继任渠道和其他人才相关主题。今天,随着所有这些新信息进入工作场所(几乎你在工作中点击的任何地方都存储在某个地方),人员分析的领域变得非常个人化。

虽然我知道人力资源专业人员非常重视职业道德和安全,但我想指出一些我们需要考虑的道德问题。

数据滥用的风险

首先,让我给你一点动力。虽然你可能走出去,从你的人力资源软件公司购买了一个伟大的新员工参与工具或“保留风险预测”,这些新系统带来了风险。当您购买系统时,您真的不知道它是如何工作的,因此它做出的每一个决定、推荐或建议都会成为您的组织的问题。

例如,假设您使用 Pymetrics、HireVue 或其他高级评估技术来评估求职者。虽然这些供应商努力从他们的工具中消除种族、性别和代际偏见,但如果你实施了这些工具,而一名求职者起诉了你,你的公司就要负责任。这种情况经常发生。(阅读亚马逊如何无意中创建了自己的性别偏见招聘系统。)

我经历过这种事。很多年前,我们面试一个秘书职位的候选人,面试那天我不得不出城。候选人来到办公室,我们的办公室经理告诉她,我们必须重新安排会议。她立即起诉我们歧视,因为她是一个受保护阶层的成员。我感觉很糟糕,我们付给她时间,但我能理解她的感受。

我想指出的另一个例子。一家从他们的 HCM 系统打开“保留预测器”的公司告诉我,他们的经理看着这些评级,当他们看到逃跑风险时会做各种奇怪的事情。一些经理实际上不再和这些人说话,减少了他们在工作中得到的支持,因为我猜他们认为“他们无论如何都在考虑离开。”显然,这不是好的管理,但如果我们不好好利用这些数据,人们就可能错误地使用它。

当然,还有其他可能出错的事情。如果你能接触到员工的健康数据,并利用它来评估或讨论员工的表现,我敢肯定你正处于法律危险之中。(我不是就业律师。)如果您泄露或无意中发布员工健康数据,您就违反了 HIPAA 规则。

有很多很多地方会惹上麻烦。只要看看脸书、Equifax、Marriott 和其他所有自认为在保护数据的大公司都发生了什么就知道了。人都会犯错;员工做坏事;我们必须保护数据、算法和管理行为。

随着人工智能变得越来越普遍,我们不再看到数据,而是看到“推动”或“建议”。如果这种“轻推”在某种程度上有偏见,员工变得不高兴了怎么办?你知道这个软件是如何工作的吗?你能回去确保它没有基于一些不正确的标准进行歧视吗?

最后,如果你是一名分析师,你做了自己的分析(阅读我关于 ONA 和电子邮件流量如何预测性能的文章),你准备好在受到攻击时捍卫你的发现和建议了吗?如果有人质疑你的发现,并想通过年龄、性别、种族,甚至是地点或季节来了解数据——你准备好确保它是有效和可靠的了吗?我知道我们可以用统计工具做这些事情,但是我们必须小心。

请记住,信任是当今商业中最重要的东西之一。如果发生不好的事情,你不仅可能丢掉工作,而且对公司声誉的损害也是巨大的。

我们应该怎么做?

我在这个领域做了很多工作,包括花了相当多的时间与 IBM、O'Reilly 的人在一起,当然也与许多人力资源负责人、人员分析负责人和供应商进行了交谈。为了帮助您理解人员分析的道德问题,让我展示以下框架。

正如你从这个框架中看到的,道德有两个维度。

  • 首先,你使用的数据和算法公*吗?它是否准确地反映了您想要的绩效或生产率数据,而没有排除、区别或无意中偏向结果?这很棘手,我将在下面讨论。
  • 第二,数据系统和算法安全吗?我们是否在保护隐私、机密性和安全性?谁有权访问,我们如何在公司内部审计其使用和路径?这在 IT 界是一个众所周知的问题,但现在我们不得不在人力资源部处理这个问题。

当你观察这两个维度时,你会发现有四个维度是可以信任的。

1。隐私

首先要考虑的伦理问题是隐私。如上图所示,像脸书、CVS、雅虎和许多其他公司在这里陷入了困境。当一名员工加入你的公司时,他们给了你收集大量数据的权利,但我们作为雇主没有权利披露这些数据,分享这些数据,或将这些数据与个人身份信息联系起来。

根据 GDPR 规则,如果员工提出要求,组织也必须“忘记”这些数据,因此需要考虑一些重要的业务实践。如果你看看上面的几个问题,它们都涉及到披露和保护的问题。谁可以访问这些数据,这些人是否接受过隐私规则和程序方面的培训?

在德勤,所有的咨询师每年都要参加一门关于隐私的必修课,我们的电脑会被扫描,我们被训练不要以可能被泄露的形式存储任何客户信息。就人力资源而言,我们需要告诉员工我们正在收集哪些数据,并确保他们理解这些数据正被用于积极的目的。

虽然我们中的许多人可能觉得在社交媒体和其他地方分享我们的个人故事很舒服(我个人不这么做),但其他人则更加隐私——所以即使是内部员工名录也可能有问题。一家大型科技公司最*告诉我一个故事,一名工程师创建了一个内部社交网络,向员工展示他们过去在什么办公室工作以及从事什么工作。员工们对“发现”这个网站感到非常不安,因为他们事先没有被咨询,所以抗议使用这个网站。这名员工只是一名试图让公司变得更好的工程师,他不得不关闭系统。

捕获的数据量也在不断增加。例如,L&D 发展最快的领域之一是虚拟现实(现在称为沉浸式学习)。虚拟现实程序捕捉所有类型的个人表现数据——你的注意力范围、眼球运动以及你应对压力的能力。Pymetrics 评估测量你的冒险能力和认知过程。这种类型的数据可能对目标有用(培训、职位匹配),但如果不保密,也可能被滥用。

告诉人们你在做什么,解释你的“选择加入”政策,并确保你对所有员工数据都有良好的隐私政策。( GDPR 规则要求你必须获得这样的同意,并且让员工看到你收集的数据。)

2。安全性

隐私的姐妹是安全。数据是否存储和保护在其他人找不到的地方?您是否制定了密码策略、加密和其他数据保护措施,以防止员工将数据带回家、发送给第三方或意外发布到互联网上?这些都是所有公司都必须处理的 IT 问题,当我们拥有薪酬、工作经历、医疗保健数据和其他个人信息等敏感信息时,我们必须保护好这些信息。

在欧盟,这已经成为一项法律。GDPR 规则之一是需要创建一个数据保护官,并为数据保护设计您的系统。如果你的公司被发现在这些方面失职,你可能会被处以高达收入 2%的罚款,这是一个巨大的风险。

3。偏置

第三个也是最困难的(也是最新的)问题是偏见。无论你是自己分析数据,还是从供应商那里购买 AI 工具,我们都必须记住,所有的算法系统都是基于现有数据的。而如果现有的数据有偏差,那么预测和推荐也会有偏差。

这是一个很难解决的问题,许多组织都在致力于此。( IBM Research 有一个关于这个话题的优秀视频。).例如:

  • 试图评估公*薪酬的系统会将员工与同事进行比较,但可能不理解种族、地点和年龄等问题
  • 预测留任的系统可能会歧视少数族裔或其他因文化原因离开公司的人
  • 评估是否适合某项工作的系统可能会将陈旧的、根深蒂固于雇佣历史中的歧视性雇佣行为制度化
  • 使用组织网络分析来识别绩效的系统可能没有意识到性别或年龄在信任和关系中起着巨大的作用
  • 预测高绩效者的系统将偏向于现有的高评级个人(可能是白人)。

你购买或构建的每一个预测分析系统都将内置偏见。(“偏见”这个词的意思是“基于过去的影响”,这确实是 AI 试图做的事情。)

要减少偏见,你能做的最好的事情就是监控和训练你的分析系统。换句话说,看看它正在做出的预测和建议,并检查结果是否有偏差。亚马逊发现它的招聘机器人对女性有偏见。IBM 通过“机器人教练”持续监控其内部薪酬推荐引擎和在线管理教练(均由沃森提供支持),这些“机器人教练”不断调整系统以应对新情况。

我记得几年前有一家公司告诉我,它的薪酬政策在中国效果不佳,中国的薪资增幅是美国的两倍。你的系统可能不知道这一点,所以它可能对中国的加薪有偏见,或者对美国的加薪有过度的偏见。这些不一定是不道德的决定,但这种偏见会伤害你的公司。

厂商对此相当关注。Pymetrics 非常重视这一点,该公司现在开源其算法以减少偏差。其他供应商也应该这样做。

当我们愉快地根据历史数据训练算法时,在很大程度上,我们只是在重复过去。…我们需要做更多的工作,这意味着检查数据中隐含的偏见。—凯茜·奥尼尔《数学毁灭的武器》

你能做什么?监控、评估和培训您的数据驱动系统。例如,IBM 率先使用人工智能来帮助改善职业发展、管理实践和薪酬。该公司定期审查其基于沃森的人力资源预测器,并训练它们变得更聪明,更少偏见。(IBM 告诉我,他们基于人工智能的人力资源聊天机器人现在在回答问题时的员工满意度超过 96%。)

可解释、透明或可信的人工智能

在人工智能社区中有一个重要的运动,那就是让系统变得“可解释”例如,系统为什么建议这次薪资变动?如果你明白为什么要做一个预测,你就能更明智地采取行动。

很多厂商都在构建检测 AI 偏见的工具,包括 IBM 的偏见检测云服务来自 Pymetrics 的 Audit AI。麻省理工学院的研究人员现在发布了自动偏差检测以及消除人工智能偏差而不损失准确性的方法。作为人力资源系统的购买者,你应该询问这些功能。

4。人员影响

信任的第四个维度也许是最重要的。您获取这些数据的目的是什么?

正如 GDPR 规则明确指出的,捕捉数据来“看看它能告诉我们什么”是不可以的如果员工认为他们被监控的原因是错误的,那么影响将是负面的。所以我认为你应该坐下来记录你为什么要捕获一个给定的数据流,并清楚地为这个项目设定一个目标。脸书显然没有在他们的业务中这样做,他们仍在从声誉受损中恢复。

要问的大问题是:你为什么要实现这种特定的分析或人工智能工具?会对人有帮助吗?还是用于监控或暗中绩效评估

大多数供应商都是出于好意。

  • 飞鸿人新的人才体验*台利用 AI 帮助求职者找到合适的空缺,帮助内部求职者找到合适的工作,帮助聊天机器人向你提出智能问题,了解你的工作需求。
  • Glint 的新经理礼宾使用人工智能来推荐行为改变和课程,以帮助你成为更好的领导者。 ADP 的指南针工具和culture amp的 Zugata 也是如此。 Humu 这么做是为了团队和运营业绩。
  • IBM 的 Watson 候选人助理使用你的简历来确定你作为求职者的技能,并为你找到最好的工作,极大地提高招聘质量和招聘时间。
  • EdCastValamisFuse凌空都在用 AI 推荐学习内容, BetterUp 用 AI 给你找最好的教练。
  • Oracle、Workday 和 SuccessFactors 在许多功能中都使用了人工智能。甲骨文 HCM 根据你自己的角色和行为推荐工资调整,甚至定制你看到的屏幕,简化系统本身。
  • Spring Health 这样的供应商现在使用人工智能来诊断你的心理健康,并推荐正确的提示、顾问或医生。

事实上,对我来说很明显,所有人力资源技术供应商都在推动人工智能对人产生积极影响。然而,作为买家,我们只需要确保我们用好它。

例如,以下是一些需要避免的事情:

  • 不要使用监控数据偷偷告知绩效评估。例如,一家金融服务公司使用一种热量和运动探测器来确定谁正在进入办公室。众所周知,雅虎会查看 VPN 日志,看看人们什么时候在家工作,什么时候不在家。这类活动会损害员工的信任感,几乎总是会导致糟糕的决策。
  • 不要将任何形式的健康数据用于法律允许之外的任何其他目的。将某些健康数据用于保险定价是合法的:将其用于继任计划、绩效评估或任何其他形式的员工培训是不合法的。
  • 不要使用培训数据(项目绩效)进行绩效评估。这不仅会降低信任度,还会让你陷入法律危机。
  • 不要跨越个人数据和职业数据的界限。如果你在追踪员工手机上的数据,确保你没有让别人接触到你的个人信息。虽然该设备可能归公司所有,但侵犯隐私会给你带来麻烦。

事实上,在大多数大公司,在你开始获取数据之前,应该有一个法律审查。您的项目遵守 GDPR 准则、HIPAA 规则和其他保密保护吗?

我能给出的简单建议是:将你的分析程序集中在对人们产生积极影响的策略上。如果你跟踪人们来衡量工作效率,并且数据将被用来使工作更好,那么你正朝着正确的方向前进。如果你用这些数据来淘汰表现不佳的员工,你可能违反了公司的管理原则。

底线:运用良好的判断力

越来越多的公司雇佣了“首席道德官”和其他员工来帮助这些项目。每当你开始一个新的分析程序时,问问自己“如果这个程序出现在纽约时报的头版会是什么样子?”这会损害公司的声誉吗?

如果这个问题的答案是肯定的,你需要做更多的功课。

https://bersinacademy.com

最后,让我们用数据来指导消费者的体验。暴露大量消费者数据的公司遭受了可怕的损失。今天,信任是我们最重要的商业资产之一。认真对待它,并确保您使管理数据驱动的努力朝着正确的方向前进。你会很高兴你做了。

PS。我们将在今年夏天晚些时候在乔希·伯辛学院推出的人才分析卓越课程中,关注关于这个主题的更多信息。

Josh Bersin 是一名全球行业分析师,研究工作、领导力、人力资源和人力资源技术的方方面面。原载于 2019 年 5 月 4 日

2018 年欧盟人工智能战略

原文:https://towardsdatascience.com/the-eu-strategy-on-artificial-intelligence-ab51ce5ce5bd?source=collection_archive---------31-----------------------

Brussels, Belgium –Photo by @todoranb_26

对欧盟战略的进一步审视

大多数人在撰写本文时可能会将欧盟与英国退出欧盟联系起来,因为英国正在退出欧盟。欧盟及其成员国的总人口约为 5 亿,国内生产总值约为 22.0 万亿美元,这使欧盟成为世界上第二大经济力量。因此,从某些方面来看,这是一个需要跟踪的重要领域,欧盟与人工智能相关的国际战略可能会引起人们的兴趣。通过以务实的方式总结其中一些政策,我希望作为读者的您能够理解,这并不能代替阅读这些文件,而是试图将几个要点汇集在一起。我所提供的当然不是一幅完整的图画,而是正在进行的讨论中的一些小片段。

The current EU countries (UK has decided to leave) retrieved the 23rd of December 2019

看看欧盟的战略,可能很难理解从哪里开始。人们可以看几个不同的文件,并且在与人工智能相关的政策中经常有新的发展。

你可能会认为这是不可能的,然而欧盟已经尝试在他们的数字单一市场页面上整合一些与这个主题相关的线索。当然,还有更多与人工智能相关的立法和战略,但我担心我们会局限在这个狭窄的框架内:

  1. 人工智能合作宣言 (2018 年 4 月)
  2. 欧洲人工智能 (2018 年 4 月)
  3. 可信人工智能道德准则 (2019 年 4 月)
  4. 可信人工智能的政策与投资建议(2019 . 4)
  5. 欧洲联盟大会 (2019 年 6 月)
  6. 人工智能责任(2019 . 11)

我将从用粗体字列出的两份文件开始,如果我认为有必要,我也可能在未来几天增加新的文件。

1.人工智能合作宣言

2018 年 4 月 10 日,25 个欧洲国家签署了一份关于人工智能合作的宣言。挪威是其中的一员,尽管他们不是欧盟成员(而是欧洲经济区的一部分)。据说这是建立在欧洲已有的投资和社区基础上的。

它提出通过获取公共部门数据来提高技术和工业能力。应对社会经济变化,特别是劳动力市场的变化。确保在基本权利和价值观以及透明度和问责制的基础上建立适当的法律和道德框架。

“成员国同意”的承诺(我有时会简化):

  1. 致力于在人工智能方面实现全面和综合的欧洲方法,以提高欧盟在 R&D 人工智能方面的竞争力、吸引力和卓越性(如有必要,使国家政策现代化)。
  2. 鼓励与利益相关方就人工智能进行讨论,并支持在欧洲人工智能联盟中发展广泛而多样的利益相关方群体,以建立意识并促进人工智能的发展,从而最大限度地提高经济和社会效益。
  3. 作为优先事项,考虑将 R&D&I 资金分配给人工智能的进一步开发和部署,包括破坏性创新和应用。
  4. 加强人工智能研究中心并支持其泛欧洲层面。
  5. 在欧洲层面建立数字创新中心。
  6. 让人工智能在公共部门可用。交流政府采购和使用人工智能的最佳实践。
  7. 帮助中小企业和非技术部门的公司获得人工智能。
  8. 就人工智能相关的伦理和法律框架交换意见。
  9. 确保人工智能的开发、部署和决策以人为中心,防止人工智能应用程序的有害创建和使用。
  10. 提高公众对人工智能的理解。
  11. 就人工智能问题与委员会进行持续对话。

2.欧洲的人工智能

这种交流在人工智能可以解决什么方面有更积极的倾向,并介绍了人工智能是什么。信息是人工智能正在像蒸汽机或电力一样改变社会。它表示,需要一个坚实的欧洲框架。

这份报告说,欧盟应该有一个“协调一致的方法”来对待人工智能。它建议通过以下方式做到这一点:

  1. 世界级的研究人员、实验室和创业公司
  2. 数字单一市场——数据保护、网络安全和连通性的共同规则
  3. 解锁数据(被报告称为“人工智能的原材料”)

它提到了《宣言》中的承诺。几乎在同一时间,它特别强调竞争,不让任何人落后和欧盟的可持续发展的技术方法。一种有益于人类和整个社会的方法。

这可以追溯到 2017 年对数字单一市场战略的审查,其中探索欧盟人工智能方法的邀请部分源于(例如,对机器人的民法规则)。有三个要点:(1)提高技术能力,(2)为社会经济变革做准备,(3)确保道德和法律框架。

关于欧盟在竞争激烈的国际格局中的地位的沟通的不同部分概述了美国和中国在非机密人工智能研究方面增加的投资,从而清楚地表明欧盟“在私人投资方面落后”。人们明确表示希望创造一个刺激投资的环境。欧盟显然生产了四分之一的专业服务机器人。“欧洲不能错过火车”,采用人工智能的好处得到了广泛认可——提到了几个由欧盟资助的项目(农业、医疗保健、基础设施和制造业)。

在概述前进方向时,他们表示,到 2020 年及以后,需要私人和公共部门的共同努力。它概述了未来十年投资将从大约 40-50 亿欧元增加到 200 亿欧元。

这种方式加大了投资力度。他们预计到 2020 年底,这一数字将会增长。该报告还提到支持卓越中心(和数字创新中心)。这里提到了“人工智能按需*台”,它可以帮助促进 400 多个数字创新中心之间的合作。它提到将创建专注于人工智能的中心。

到 2020 年,他们将在研究和创新方面投资 15 亿英镑;加强英才中心;和潜在用户的工具箱。他们谈到了按需人工智能*台和工业数据*台,这些*台提供了访问高质量数据集的途径。2020 年后,他们将升级和支持公共利益应用程序,以及一个数据共享支持中心,同时对现有政策进行各种升级。

目的是提供更多的数据,欧盟在过去 15 年中一直在这样做,一个例子是欧盟的空间计划。它谈到了老龄化社会和增强人们的能力,在“不让一个人掉队”中,他们谈到了新技能。这在很大程度上是针对 STEM 的,而在另一部分,他们谈到了多样性以及跨学科的方法。

  • 更多的妇女和不同背景的人,包括残疾人。
  • 跨学科的方式结合联合学位,例如法律或心理学和人工智能。这里提到了伦理道德的重要性,同时考虑创造一个有吸引力的环境让人才留在欧洲。

该报告为 2018 年的教育政策制定了计划,包括(再)培训计划、劳动力市场分析、高级数字技能的数字培训、商业-教育-伙伴关系和社会伙伴,以将人工智能纳入影响研究。

“下一个欧盟多年期财政框架(2021-2027)下的提案将包括加强对获取高级数字技能(包括人工智能专业知识)的支持。”

在确保道德框架方面,提到了基本权利、GDPR、数字单一市场和可解释的人工智能系统。在最后一段,还有一个知识产权的问题。道德准则草案将在年底制定。提到了安全和责任,根据 2019 年中期的技术发展,通过关于产品责任指令的指导文件赋予个人权力。还提到了一个建立算法意识的试点项目,以及对消费者组织数据保护的支持。

让成员国参与这项工作非常重要,本节提到了芬兰的国家战略。它说:“鼓励每个成员国制定人工智能战略,包括投资战略。”这里提到了多利益主体欧洲人工智能联盟以及国际外展。

“随着人工智能很容易跨境交易,只有全球性的解决方案才能在这一领域持续发展。”

欧盟的贡献与其价值观和基本权利一起被提及,这也在结论中被提及。以希望人工智能的力量为人类进步服务而结束。

这里是#500daysofAI,您正在阅读的是第 202 条。500 天来,我每天都在写一篇关于或与人工智能相关的新文章。我目前 100 天 200-300 的重点是人工智能的国家和国际战略。

面向语义分割的 Deeplab 的发展

原文:https://towardsdatascience.com/the-evolution-of-deeplab-for-semantic-segmentation-95082b025571?source=collection_archive---------1-----------------------

从经典的图像分割方法,通过基于深度学习的语义分割,到 Deeplab 及其变体。

在计算机视觉中,简单的图像分割是将数字图像分割成多个片段(像素组)的过程。图像分割是一个长期存在的计算机视觉问题。然而,语义分割是在像素级“理解”图像的情况下分割图像的技术。换句话说,语义分割是将每个像素分析和分类成多个类别(标签)。

Figure 1: a) Image segmentation using Thesholding b) Semantic Segmantation

语义分割有许多应用,包括自动驾驶、人机交互、计算摄影、图像搜索引擎和增强现实等。

语义分割简史

已经设计了相当多的算法来解决这个任务,例如分水岭算法、图像阈值化、K-均值聚类、图划分方法等。最简单的方法是阈值法。在该方法中,基于阈值将灰度图像转换成二值图像。尽管有许多传统的图像处理技术,但是深度学习方法已经成为游戏改变者。

为了正确理解现代深度学习架构如何处理语义分割,重要的是要知道它不是一个孤立的领域。相反,这是从粗到细推理过程中的一个自然步骤。

Figure: Coarse to fine inference

可以在分类时定位原点,分类包括对整个输入进行预测,即预测图像中的对象。细粒度推理的下一步是定位或检测,不仅提供类,还提供关于这些类的空间位置的附加信息。一个语义分割可以看作是一个的密集预测任务。在密集预测中,目标是生成与输入图像大小相同的输出地图。现在,很明显,语义分割是实现细粒度推理的自然步骤。它的目标是进行密集预测,推断每个像素的标签。这样,每个像素都用其包围对象或区域的类别来标记。还可以做进一步的改进,比如实例分割(同一类的不同实例分别标注)。

一般的语义分割体系结构可以广义地认为是一个编码器网络,后面跟着一个解码器网络:

  • 编码器通常是一个预训练的分类网络,如 VGG/雷斯网,后跟一个解码器网络。
  • 解码器的任务是将编码器学习到的区别特征(较低分辨率)在语义上投影到像素空间(较高分辨率)上,以获得密集分类。

用于语义分割的非常早期的深度卷积神经网络(DCNNs)之一是全卷积网络(FCN)。FCN 网络管道是经典 CNN 的延伸。主要思想是使经典的 CNN 接受任意大小的图像作为输入。CNN 仅接受和产生特定大小输入的标签的限制来自于固定的全连接层。与它们相反,fcn 只有卷积层和池层,这使它们能够对任意大小的输入进行预测。

Figure: FCN Architecture [ref: https://arxiv.org/abs/1411.4038]

此特定 FCN 的一个问题是,通过几个交替的卷积层和汇集层进行传播,输出要素地图的分辨率会被向下采样。因此,FCN 的直接预测通常是低分辨率的,导致相对模糊的物体边界。已经提出了各种更先进的基于 FCN 的方法来解决这个问题,包括 SegNetUNetDeepLab 和扩张卷积。

在接下来的部分,我们将讨论语义分割的 Deeplab 及其发展。

Deeplab 的演变

DeepLab 是由 Google 设计并开源的最先进的语义分割模型。密集预测是通过简单地对最后一个卷积层的输出进行上采样并计算逐像素损失来实现的。Deeplab 应用 atrous 卷积进行上采样。

阿特鲁卷积

在 DCCN,最大池化和跨连续图层的重复组合会显著降低生成的要素地图的空间分辨率。一种解决方案是使用反卷积图层对生成的地图进行上采样。但是,它需要额外的内存和时间。阿特鲁卷积为使用反卷积提供了一个简单而强大的替代方法。阿特鲁卷积允许在不增加参数数量或计算量的情况下有效地扩大滤光器的视野。

阿特鲁卷积是上采样滤波器卷积的简写。滤波器上采样相当于在非零滤波器抽头之间插入孔(法语中为“trous”)。

Figure: (Top) regular convolution followed by up-sampling, (Bottom) atrous convolution resulting denser feature map. [ref: https://arxiv.org/abs/1606.00915]

在数学上,对于具有长度 K 和步幅率 r 的滤波器w【K】的一维信号x【I】的 atrous 卷积y【I】被定义为:

深度实验室(Deeplabv1)

Deeplabv1 在语义分割任务中的成功是由于对先前的最先进模型,特别是对 FCN 模型的一些改进。这些进步解决了以下两个挑战。

挑战 1:降低特征分辨率

由于 DCNN 中的多重池化和下采样(“步长”),空间分辨率显著降低。它们从 DCNNs 的最后几个最大池层中移除了下采样算子,而是在后续卷积层中对滤波器(atrous)进行上采样,从而以更高的采样率计算特征图。

挑战 2:由于 DCNN 不变性 降低定位精度

以便通过采用全连通条件随机场(CRF)来捕捉精细细节。CRF 势结合了*滑项,使相似像素之间的标签一致性最大化,并且可以集成更精细的项来模拟对象类之间的上下文关系。下图说明了在 CRF 的几次迭代后分割图的改进。

Figure: [Top] Score map (input before softmax function), [Bottom] belief map (output map after mean field iterations) [ref: https://arxiv.org/abs/1606.00915]

Deeplabv1 模型将图像作为输入,并通过通常的 DCCN 层,然后是一个或两个 atrous 层,并产生一个粗略的得分图。然后,使用双线性插值将该图上采样到图像的原始大小。最后,为了改善分割结果,应用全连通条件随机场。

Figure: Deeplabv1 flowchart [ref: https://arxiv.org/abs/1606.00915]

Deeplabv2

为了进一步提高 Deeplabv1 架构的性能,下一个挑战是多尺度的对象存在。

挑战:多尺度下物体的存在

为了以多种比例表示对象,处理这种情况的标准方式是向 DCNN 呈现同一图像的重新缩放版本,然后聚集特征或得分图。

解决方案*:使用阿特鲁空间金字塔池(ASPP)** 。其思想是将具有不同采样率的多个 atrous 卷积应用于输入特征图,并融合在一起。由于同一类别的对象在图像中可能具有不同的比例,ASPP 有助于考虑不同的对象比例,这可以提高准确性。*

Figure: Atrous Spatial Pyramid Pooling (ASPP). [ref: https://arxiv.org/abs/1606.00915]

Deeplabv3

前一种网络能够通过以多种速率和多种有效视野(ASPP)用过滤器或汇集操作(atrous 卷积)探测输入特征来编码多尺度上下文信息。下一个挑战是通过逐渐恢复空间信息来捕捉更清晰的对象边界。

挑战:捕捉更清晰的物体边界

Deeplabv3 架构采用了一种新颖的可分离卷积编解码器来解决上述问题。编码器-解码器模型能够获得清晰的对象边界。通用编码器-解码器网络已经成功地应用于许多计算机视觉任务,包括对象检测、人体姿态估计以及语义分割。

典型地,编码器-解码器网络包含:

  • 编码器模块,逐渐减少特征映射并捕获更高的语义信息。
  • 逐渐恢复空间信息的解码器模块。

除了上述编码器-解码器网络,它还应用深度方向可分离卷积来提高计算效率。这是通过将标准卷积分解为深度卷积,然后是点卷积(即 1 × 1 卷积)来实现的。具体来说,深度方向卷积为每个输入通道独立地执行空间卷积,而点方向卷积用于组合深度方向卷积的输出。

Figure: 3×3 Depth-wise separable convolution for atrous convolution. [ref: https://arxiv.org/abs/1802.02611]

Deeplabv3+

这扩展了 DeepLabv3,增加了一个简单而有效的解码器模块,以进一步细化分割结果,尤其是沿对象边界的分割结果。

编码器:与 Deeplabv3 相比,它使用对齐异常而不是 ResNet-101 作为其主要特征提取器(编码器),但有重大修改。所有最大池操作都被深度方向可分离卷积所取代。

解码器:编码器基于 16 的输出步幅,即输入图像以 16 的因子进行下采样。因此,代替使用因子为 16 的双线性上采样,编码特征首先被上采样因子为 4,并且与来自具有相同空间维度的编码器模块的相应低级特征连接。在连接之前,在低级特征上应用 1×1 卷积,以减少通道的数量。在连接之后,应用一些 3×3 卷积,并且特征以因子 4 被上采样。这给出了与输入图像相同大小的输出。

Figure: Deeplabv3+ model. [ref: https://arxiv.org/abs/1802.02611]

希望你喜欢阅读!!!

封面照片由 苏珊娜·d·威廉姆斯

虚拟助手中技能发现的演变

原文:https://towardsdatascience.com/the-evolution-of-skill-discovery-in-virtual-assistants-229c9363ac58?source=collection_archive---------20-----------------------

Skill discovery in virtual assistants (Illustration: Luniapilot)

这篇博文是来自 Embodied AI 的一期,由 TwentyBN 撰写的关于 AI 化身、虚拟生物和数字人类背后的最新新闻、技术和趋势的双周刊。

上周五,化身 AI 在几个朋友的公寓里喝着酒,突然瞥见角落里放着一个新买的 Google Home。他对所有人工智能的好奇心占据了他的头脑,他问他们用新技术做什么。“除了播放音乐,”他们回答说,“我们还问它时间、天气,以及……开灯和关灯。”

和很多消费者一样,Embodied AI 的朋友们遇到了基于语音的智能技术中的 技能发现问题 。虽然智能扬声器可以做的不仅仅是报告天气、开灯和点餐——仅谷歌助手就有 4200 件事情——但它不能有效地传达它可以帮助我们的无数方式。由于技能发现是使虚拟助手更有效和更像人类的一个关键因素,我们将探索技能发现的演变,包括它的挑战,目前的进展,以及它将如何在未来继续发展。

技能发现:2 项挑战和 8 项建议

Benedict Evans(Andre essen Horowitz)将智能音箱中的技能发现称为基本的 UX 难题:例如,Alexa 的纯音频界面很方便,直到你希望它向用户逐一背诵其 80,000 项技能

有两个因素使得技能发现特别具有挑战性:

  • 可用性:虚拟助理的技能正在迅速扩展。 Voicebot 报告称,自 2018 年以来,谷歌助手的能力增长了 2.5 倍,达到 4253 个动作,Alexa 的能力增长了 2.2 倍,达到* 8 万个动作。
  • 启示:用户不确定他们的虚拟助手有什么能力,导致期望偏差,他们中的许多人忽视了使用互联网来了解他们助手的技能的全部范围。

Alexa and her many skills (Credit: Ryen W. White, Communications of the ACM)

虚拟演讲者帮助人们发现他们所能做的 8 种方式

在这篇文章Ryen W. White (微软研究院)列出了虚拟扬声器的 8 项改进,以便用户可以更容易地发现他们日常需要的新技能:

  • 积极主动:让虚拟助理主动利用他们的技能吸引用户,而不是被动的、用户发起的交互。
  • 时机决定一切:在需要的时候向用户提供技能建议,以确保这些能力在将来更容易被记住。
  • 使用情境和个人信号:利用用户情境和个人信号的组合,包括长期习惯和模式
  • 检查附加信号:还不可访问的上下文和个人信息,例如只能用视觉观察的人类活动,是用于个性化推荐的未开发的机会。
  • 考虑隐私和效用:在正确的时间提供正确的帮助,并通过推荐解释主动将其归因于许可的数据访问。
  • 允许多个推荐:当推荐模型的置信度低于某个阈值时,建议多个技能,在该阈值时通常会建议一个确定的技能。
  • 利用配套设备:允许通过 WiFi 或蓝牙连接访问各种屏幕,如智能手机、*板电脑或台式电脑,以丰富上下文并帮助提供更相关的技能建议。
  • 支持持续学习:根据以前的活动模式提出新的技能。

提高技能发现的研究进展

最*,亚马逊推出了Alexa Conversations,这是一种深度学习方法,允许开发人员以更少的努力、更少的代码行和更少的训练数据更有效地提高技能发现。虽然仍处于“预览”阶段,但 Alexa Conversations 已经在为智能扬声器培养技能的开发人员中引起了相当大的兴奋

Alexa Conversations claims to utilize machine learning to predict a user’s true goal from the dialogue and proactively enable the conversation flow across skills. (Credit: Alexa Blog)

本质上,Alexa Conversations 旨在建立一个更自然和流畅的互动,在一个单一的技能范围内,Alexa 和它的用户之间。在未来的版本中,该软件有望在一次对话中引入多种技能。它还声称能够处理模糊的引用,例如,“附*有意大利餐馆吗?”(哪里附*?),以及从一种技能过渡到另一种技能时的上下文保留,例如在建议附*的餐馆时记住某个电影院的位置。

在 6 月份亚马逊的 re:MARS AI 和 ML 大会上,Alexa 副总裁兼首席科学家 Rohit Prasad 提到 Alexa Conversations 的机器学习功能可以帮助它从对话的方向预测客户的真实意图和目标,从而在对话过程中主动实现多种技能的流动。如果这些承诺得到满足,与 Alexa 的命令-查询交互肯定会开始感觉更像自然的人类交互。

未来:看见和具体化的虚拟助手

Alexa 团队取得的进展确实令人兴奋,但对话式人工智能并不是唯一有改进空间的领域。在 Embodied AI,我们支持将对话式人工智能和视频理解集成到拟人化的具体化助手中,这是通过在现有的扬声器界面上添加摄像头和屏幕实现的。

随着我们对自然语言处理和计算机视觉的理解不断进步,没有理由将虚拟助手局限于音频。最*发布的亚马逊 Echo Show 5脸书门户谷歌的 Nest Hub Max ,所有这些都带有摄像头和屏幕,已经预示着该行业向虚拟助手的发展,有一天虚拟助手可以看到和被看到。人们可以合理地推测,大型科技公司正在致力于视觉化和具体化的虚拟助理,以在不久的将来取代他们的智能扬声器。这是他们现有产品线的自然延伸。

具有照相机、屏幕和拟人化实施例的虚拟助理的好处包括:

  • 多模式 I/O: 配备语音 I/O 和视频 I/O 的虚拟助理不再局限于音频,而是拥有更高的智能和更具吸引力的图形用户界面。
  • 改进的技能发现体验:利用计算机视觉捕捉目前纯音频设备未利用的上下文和个人信号,允许从用户发起的交互过渡到主动协助。
  • 陪伴而不是仆人:有了数字化、类人的身体,虚拟助理将不再被视为仆人,而是帮手。虽然这不会直接改善技能发现,但它丰富了虚拟助理的整体体验。

Roland Memisevic, TwentyBN’s CEO, believes that computer vision, by unlocking context awareness for virtual assistants, will shift the assistant paradigm from query-response to memory-infused companionship. (Credit: LDV Capital)

TwentyBN 的首席执行官 Roland Memisevic 设想了一个未来,我们与虚拟助手的对话将不会像现在的智能扬声器那样感觉像打电话:

" 化身不一定需要唤醒词,但可以一直在这里,看到和听到,特别是当他们是边缘驱动的并且没有隐私问题时。使用计算机视觉来解锁虚拟助手的上下文感知,我们将把助手范式从查询-响应转变为注入记忆的陪伴。问我们未来的同伴他们有什么技能,就像问你最好的朋友他们是否呼吸氧气一样可笑。

“嘿,谷歌,让我们结束吧!”

或许在不久的将来,在另一个周五的晚上,化身人工智能将重访他朋友的屋顶公寓,并发现一个新的虚拟助理,一个不仅精通对话,而且拥有理解上下文和识别语言无法捕捉的需求的眼睛的虚拟助理。也许它甚至可能有一个数字化的人体,成为一个虚拟的朋友,分享并增加柏林仲夏夜晚的活跃气氛。

化身 AI 伸手从他的酒杯中抿了一口,当发现它是空的时,听到他朋友的谷歌助手从角落里喊道,“我想我们准备好再来一瓶白葡萄酒了!”

作者 那华 编辑 大卫莫里茨 ,以及 萨克 。插图由 氹欞侊 组成。**

Embodied AI是一份关于 AI 化身和虚拟生物背后的最新新闻、技术和趋势的双周刊。*订阅下面:*******

***** [## 人工智能化身时事通讯

具体化的人工智能是权威的人工智能化身时事通讯。报名参加最新新闻、技术…

www.embodiedai.co](http://www.embodiedai.co/)*****

美国电网的演变

原文:https://towardsdatascience.com/the-evolution-of-the-us-electric-grid-f18bce6473d5?source=collection_archive---------17-----------------------

Image by Random_fotos on flickr

在过去的 15 年里,美国电网经历了一些巨大的转变(大多是朝着好的方向)。可再生能源和天然气价格上涨,而煤炭和 GHG 排放量下降。

这里我们可以看到美国电网*年来是如何发展的:

Source: Energy Information Administration. 2018 figures are YTD to October.

为了便于访问,我们也将它放在表格中:

所以在这段时间里,除了天然气和非水电可再生能源,所有能源都在减少。这对环境来说是个好消息,因为我们电力行业的排放强度已经降至新低:

Source: Scott Institute for Energy Innovation, Carnegie Mellon University

这张图表显示了美国电力行业的排放强度。这意味着,与 2003 年相比,Q2 2018 年 1 兆瓦时的发电量将减少 35%以上的排放(这是可获得的最新数据)。

这些收益中的一部分被电力生产的增加所抵消,但是美国电力部门的总排放量仍然大大低于 2003 年:

Source: Scott Institute for Energy Innovation, Carnegie Mellon University

在此期间,电力行业的总排放量仍然减少了 26%。因此,电力部门可能最终会将美国最大排放部门的头衔拱手让给交通部门。

天然气和煤

自 2003 年以来,最深刻的转变发生在煤炭和天然气之间。虽然天然气价格一直在稳步上升,但煤炭价格却在持续下跌,而且不太可能很快停止。

Source: Energy Information Administration

由于可再生能源和天然气仍在快速扩张,煤炭的前景越来越黯淡。通过观察煤炭容量的变化,我们可以预测煤炭在电网中的未来:

Source: Energy Information Administration

初步估计显示,2018 年将延续煤炭大量报废的趋势——甚至可能打破纪录。随着煤炭产量的增长完全停止,煤炭产量的下降看起来已经到了尽头。

可再生能源

从可再生能源,我们可以进一步分解它,看看什么能源正在产生收益。

Source: Energy Information Administration

风能和太阳能的增长非常明显。2003 年,水力发电占可再生能源生产的 78%。到 2018 年,这一比例降至 39.7%。36%的可再生能源是风能,13.6%是太阳能。风能有可能在不久的将来战胜水能。

根据 EIA 的数据,2017 年风能发电量占总发电量的 6.3%,而太阳能发电量占总发电量的 1.3%。一旦全年数据可用,这两个数字在 2018 年可能会更高。虽然迄今为止天然气的增长超过了可再生能源的增长,但是 EIA 预测从现在开始他们将会引领潮流。与此同时,煤炭在发电中所占的份额预计将在未来几年继续下降。

原因

过去 15 年的巨大转变是经济转型的结果。

Source: Energy Information Administration. Coal estimates ceased in 2015.

*年来,天然气、太阳能和风能的成本都大幅下降。

具有神经结构搜索的进化变压器-增强变压器

原文:https://towardsdatascience.com/the-evolved-transformer-enhancing-transformer-with-neural-architecture-search-f0073a915aca?source=collection_archive---------13-----------------------

神经结构搜索(NAS)是通过算法搜索神经网络新设计的过程。虽然研究人员多年来开发了复杂的体系结构,但找到最有效的体系结构的能力是有限的,最* NAS 已经达到了可以超越人类设计的模型的地步。

Google Brain 的一篇新论文展示了第一个改进 Transformer 的 NAS,Transformer 是许多自然语言处理任务的领先架构之一。本文采用一种基于进化的算法,用一种新颖的方法来加速搜索过程,对变压器结构进行变异,以发现一个更好的变压器——进化变压器(ET)。新的架构比原来的 Transformer 性能更好,尤其是在比较适合移动设备的小型模型时,并且需要的训练时间更少。论文中提出的概念,例如使用 NAS 来进化人类设计的模型,有可能帮助研究人员在许多其他领域改进他们的架构。

背景

变形金刚,2017 年首次提出,引入了一种注意力机制,可以同时处理整个文本输入,以学习单词之间的上下文关系。转换器包括两个部分——编码器,用于读取文本输入并生成其横向表示(例如,每个单词的向量),以及解码器,用于根据该表示生成翻译后的文本。该设计已被证明是非常有效的,许多当今最先进的模型(如伯特,GPT-2)是基于变压器。对变形金刚的深入回顾可以在这里找到。

虽然变压器的架构是由才华横溢的研究人员手工制作的,但另一种方法是使用搜索算法。他们的目标是在给定的搜索空间中找到最佳的架构,该空间定义了其中任何模型的约束,如层数、最大参数数等。一种已知的搜索算法是基于进化的算法锦标赛选择,其中最适合的架构存活并变异,而最弱的架构死亡。这种算法的优点是既简单又高效。本文依赖于 Real 等人中提出的版本(参见附录 A 中的伪代码):

  1. 通过对搜索空间随机取样或通过使用已知模型作为种子来初始化第一模型池。
  2. 这些模型针对给定的任务进行训练,并随机取样以创建子群体。
  3. 最好的模型是通过随机改变其架构的一小部分而变异的,比如替换一层或者改变两层之间的连接。
  4. 变异模型(子模型)被添加到池中,而子群体中最弱的模型被从池中移除。

在解决搜索问题时,定义搜索空间是一个额外的挑战。如果空间太宽且未定义,算法可能无法在合理的时间内收敛并找到更好的模型。另一方面,过于狭窄的空间降低了找到优于手工制作模型的创新模型的概率。NASNet 搜索架构通过定义“可堆叠单元”来应对这一挑战。单元可以包含来自预定义词汇表的对其输入的一组操作(例如卷积),并且通过多次堆叠相同的单元架构来构建模型。搜索算法的目标仅仅是找到单元的最佳架构。

An example of the NASNet search architecture for image classification task that contains two types of stackable cells (Normal and Reduction Cell). Source: Zoph et al.

进化变压器(ET)如何工作

由于 Transformer 架构已经无数次地证明了自己,所以作者的目标是使用一种搜索算法将它发展成一个更好的模型。因此,模型框架和搜索空间被设计成以如下方式适合原始的变压器架构:

  1. 该算法搜索两种类型的单元,一种用于具有六个副本(块)的编码器,另一种用于具有八个副本的解码器。
  2. 每个块包括两个操作分支,如下图所示。例如,输入是前面层(块)的任意两个输出,一个层可以是标准卷积、注意力头(见变压器)等,激活可以是 ReLU 和 Leaky ReLU。一些元素也可以是一个身份操作或一个死胡同。
  3. 每个单元格最多可以重复六次。

总的来说,搜索空间加起来约为 7.3 * 10115 个可选型号。空间的详细描述可以在论文的附录中找到。

ET Stackable Cell format. Source: ET

渐进式动态跨栏(PDH)

如果每个模型的训练和评估被延长,搜索整个空间可能花费太长时间。在图像分类领域,可以通过在代理任务上执行搜索来克服这个问题,例如在对 ImageNet 等较大数据集进行测试之前,先训练较小的数据集(例如 CIFAR-10)。然而,作者找不到翻译模型的等效解决方案,因此引入了锦标赛选择算法的升级版本。

不是在整个数据集上训练池中的每个模型,这一过程在单个 TPU 上需要大约 10 个小时,而是逐步进行训练,并且只针对池中的最佳模型。池中的模型根据给定数量的样本进行训练,并且根据原始锦标赛选择算法创建更多的模型。一旦池中有足够多的模型,就计算“适合度”阈值,并且只有具有更好结果(适合度)的模型继续下一步。这些模型将在另一批样本上进行训练,下一批模型将基于它们被创建和变异。因此,PDH 显著减少了花费在失败模型上的训练时间,并提高了搜索效率。不利的一面是“慢启动者”,即需要更多样本才能获得好结果的模型,可能会被遗漏。

An example of the tournament selection training process. The models above the fitness threshold are trained on more sample and therefore reach better fitness. The fitness threshold increases in steps as new models are created. Source: ET

为了“帮助”搜索获得高质量的结果,作者用 Transformer 模型而不是完全随机的模型来初始化搜索。由于计算资源的限制,这一步是必要的。下表比较了不同搜索技术的最佳模型(使用困惑度度量,越低越好)的性能——Transformer 与随机初始化,PDH 与常规锦标赛选择(每个模型有给定数量的训练步骤)。

Comparison of different search techniques. Source: ET

作者保持每种技术的总训练时间固定,因此模型的数量不同:每个模型的训练步骤越多->可以搜索的模型总数越少,反之亦然。PDH 技术*均达到最好的结果,同时更稳定(低方差)。当减少训练步数(30K)时,常规技术的*均表现几乎与 PDH 一样好。然而,它的方差更大,因为在搜索过程中更容易出错。

结果

本文使用所描述的搜索空间和 PDH 来找到一个在已知数据集上表现良好的翻译模型,如WMT18。该搜索算法使用 270 个 TPU 在 15,000 个模型上运行,总共* 10 亿个步骤,而如果没有 PDH,所需的总步骤将为 36 亿个。找到的最佳模型被命名为进化变压器(ET ),与原始变压器相比取得了更好的结果(困惑度为 3.95 比 4.05),并且需要更少的训练时间。其编码器和解码器模块架构如下图所示(与原始架构相比)。

Transformer and ET encoder and decoder architectures. Source: ET

虽然一些 ET 组件与原始组件相似,但其他组件则不太传统,如深度方向可分离卷积,与普通卷积相比,它的参数效率更高,但功能较弱。另一个有趣的例子是在解码器和编码器中使用并行分支(例如,相同输入的两个卷积和 RELU 层)。作者还在消融研究中发现,与变压器相比,卓越的性能不能归因于 ET 的任何单一突变。

ET 和 Transformer 都是重型模型,参数超过 2 亿。它们的大小可以通过改变输入嵌入(即一个字向量)的大小和相应的层的其余部分来减小。有趣的是,模型越小,ET 相对于 Transformer 的优势就越大。例如,对于只有 700 万参数的最小模型,ET 比 Transformer 强 1 个困惑点(7.62 vs 8.62)。

Comparison of Transformer and ET for different model sizes (according to embedding size). FLOPS represents the training duration of the model. Source: ET

实施细则

如上所述,为了在合理的时间内训练数千个模型,搜索算法需要使用 200 多个谷歌的 TPU。最终 ET 模型本身的训练比原始 Transformer 更快,但在 WMT 的 14 En-De 数据集上使用单个 TPU 仍然需要几个小时。

代码是开源的,可以在 Tensorflow 这里获得。

结论

Evolved Transformer 展示了将手工制作与神经搜索算法相结合来创建架构的潜力,这种架构可以持续更好、更快地进行训练。由于计算资源仍然有限(即使对于谷歌来说),研究人员仍然需要仔细设计搜索空间,并改进搜索算法,以胜过人类设计的模型。然而,随着时间的推移,这种趋势无疑会变得更强。

要了解最新的深度学习研究,请订阅我在 LyrnAI 上的简讯

附录 A -锦标赛选择算法

本文基于来自 Real 等人的锦标赛选择算法,除了从群体中丢弃最老模型的老化过程:

关于人工智能的行政命令

原文:https://towardsdatascience.com/the-executive-order-on-artificial-intelligence-did-you-miss-it-3a32a934f333?source=collection_archive---------24-----------------------

Office of Science and Technology Policy Logo, US Government Work (public domain)

它发生了。你错过了吗?

2019 年 2 月 11 日,政府发布了一项关于保持美国在人工智能领域领导地位的行政命令。它的目标是确保美国为人工智能的发展提供最肥沃的土壤,保护其技术优势,并保护其人民的权利。在这篇文章中,我们来看看它所展示的愿景,以及我们可以期待看到的一些具体成果。

行政命令首先阐明了一个总体愿景,即人工智能的发展对经济发展和国家安全至关重要,必须以保护公民自由、隐私和美国价值观的方式促进这一发展,同时加强与外国伙伴和盟友的合作。

然后,它列出了五个重要目标:

  • 通过研究投资推动人工智能突破
  • 制定有效的监管和技术标准,以促进人工智能研究,同时保护公共安全
  • 在人工智能相关技能方面培训美国工人
  • 在人工智能监管中保护公民自由、隐私和美国价值观
  • 保护美国在人工智能方面的技术优势,同时与友好国家和行业合作

最后,它提出了一个政策指导框架,以促进联邦政府政策中的这些目标。

美国联邦政府分配研究资金,执行消费者保护立法,制定技术标准,发放教育补助金,并监管与国防相关的技术转让。行政命令在很大程度上决定了这些领域的优先顺序,影响了哪些计划获得预算和关注。根据订单及其支持材料(如下所列),以下是我们有理由期待看到的一些结果:

  • 联邦研究基金将优先支持人工智能相关项目
  • 学生补助金、政府支持的实习和培训项目以及军事教育项目将促进 STEM 项目和计算机科学招生
  • 上述教育计划将侧重于提高妇女和女孩在计算机科学和人工智能领域的参与度(与其他 STEM 领域相比,这一比例特别低)
  • 联邦部门内的开放数据倡议将优先考虑他们预计对人工智能数据挖掘最有吸引力的开放数据
  • 国家科学技术研究所将开发和支持开放数据和人工智能安全测试的标准
  • 联邦监管机构将在信用评估和自动驾驶汽车等领域为人工智能的使用制定有效而明确的监管指南,甚至可能针对系统的在线审查提供保护
  • 执法官员和商业监管机构将针对黑客等知识产权盗窃,以及向可能损害美国利益的国家转移人工智能技术和实践

这项政策指令对那些在美国(以及一些国外)从事任何人工智能领域工作的人来说都是好消息。希望在数据科学训练营接受培训的入门级求职者、大学研究人员、数据科学家和企业家寻求开放数据源来构建产品,以及部署人工智能的企业(特别是在金融服务等监管领域)都将受益于联邦政府对人工智能的日益关注。消费者也将受益于监管机构对人工智能如何用于挖掘和过滤他们的数据的明确关注,包括加强隐私保护。

要了解更多信息,您可以查看与此订单相关的科学技术政策办公室的文章简报,以及与 2018 年 5 月早些时候由白宫主办的关于美国工业人工智能的峰会相关的关于美国人民人工智能的简报

David Rostcheck 是一名美国技术领导者,拥有软件架构和数据科学背景。

可解释性困境

原文:https://towardsdatascience.com/the-explainability-dilemma-44b93a1ff9a8?source=collection_archive---------25-----------------------

医疗保健的人工智能可解释性可能是本世纪最重要的困境。这篇文章解释了为什么它将决定未来几代人的医疗结果。

如今的人工智能算法通过分析大数据来提供医疗建议,但除了检测到的模式,它们并不总能为自己的结论给出一个理由。尽管这些人工智能推荐的解决方案无法用人类的理解来解释,但许多这样的治疗可能会改善患者的生活质量,甚至挽救生命。本文从支持将技术进步应用于医疗保健的角度讨论了医学可解释性这一有争议的话题。

介绍

人工智能革命已经开始,这不是什么秘密。我不是唯一一个相信人工智能正在给我们的世界带来重大变化的人。一些最著名的科学技术领袖的名言指向同一个方向:

成功创造人工智能将是人类历史上最大的事件。不幸的是,这也可能是最后一次,除非我们学会如何规避风险。

—斯蒂芬·霍金,理论物理学家

我们所有人必须做的是确保我们以造福人类的方式使用人工智能,而不是损害人类。–

苹果公司首席执行官蒂姆·库克

有人称之为人工智能,但事实是这项技术将会增强我们的能力。因此,我认为我们应该增强我们的智能,而不是人工智能。

IBM 首席执行官吉尼·罗梅蒂

人工智能是人类正在努力的最重要的事情之一。它比,我不知道,电或火更深刻。

——谷歌首席执行官桑德尔·皮帅

正如地球上一些最聪明的头脑所说,这不仅仅是炒作。

人工智能是一场构造运动,由世界上最强大的公司支持。

即使我们没有注意到,我们每天都在使用它的应用程序。

医疗保健行业

看到行业旁边的医疗字样就有问题。似乎我们在谈论一项基本人权,旁边是一个表示可销售产品的词。这个行业严重依赖人为干预和主观意见。它使用先进的技术,如基因组解码,核磁共振成像,PET 扫描和放射疗法。,但它也强烈依赖于人类的解释,而人类会犯错误。

人工智能和机器学习应用程序可以为医疗保健服务带来极大的好处。世界上没有一个医生可以在几分之一秒内分析数百万个病例或交叉引用基因组分析的治疗反应。机器学习有这些能力,甚至更多,医学界都知道这一点。但是生态系统——从小镇医生到常春藤联盟的顶尖研究人员——对变化有很强的抵抗力。这种抵制并非基于现实。基于职业偏见恐惧

破碎的美国医疗保健系统

对于我们这些出生在其他国家的人来说,美国的医疗保健系统似乎是疯狂的,在这些国家,最好的医疗保健是免费提供给每个人的。明确一点,我不是专家。但是一个著名的例子是美国前副总统乔·拜登负担不起他儿子的癌症治疗费用,巴拉克·奥巴马向他提供了贷款。那种情况让我觉得有些事情非常不对劲。当时,拜登甚至考虑卖掉自己的房子。他是美国的副总统。如果他负担不起医疗保险,那么像阿拉巴马州的中产阶级和收入更低的人又怎么负担得起呢?

简单疾病的疯狂价格,专利药物的过高价格,以及限制使用的昂贵保险系统,所有这些加在一起造成了一个困难的局面。为了应对这种情况,许多美国人求助于医疗保健旅游。他们可以在国外得到最先进的治疗,而花费只是在美国的一小部分。

变革阻力

我曾经听说,如果你能支付得起的话,美国拥有世界上最好的医疗体系。我相信它是最贵的,但我怀疑它是否是最好的。一个问题可能是医生。不要杀死信使,但是医生在美国比在大多数其他国家挣得更多,这是问题的一部分。当然,这个国家收入最高的职业之一会吸引那些受金钱利益驱使的人。在某些情况下,在决定从事医学职业时,改善他人的生活与其说是一种激励,不如说是一份高薪。

经济学和人工智能

自然,那些为了金钱利益而行医的人不会希望失去这些收入,即使医疗保健会因此而进步。举例来说,人工智能有潜力逐渐增强或取代医生。如果你去参加一个医学大会,只有一小部分演示文稿展示了某种新的人工智能或机器学习技术应用。美国医学界对采用这些进步犹豫不决,即使它们可能极大地改善美国人的整体健康状况

另一个问题是:研究人员

这个问题与前面关于医生的部分有关。大多数医学研究都有严重缺陷。从数学和统计学的角度来看,有大量的问题。一个这样的问题是相关性和因果关系之间的混淆。一个例子是儿童音乐课实验,其中发现了统计学上的简单相关性,研究人员得出结论,一件事引起了另一件事。如果医学研究人员需要得出结论以使他们的论文获得批准,从而获得持续的资助,他们可能会求助于那种草率的研究实践。

另一个巨大的话题是谁资助医学研究。在许多情况下,研究投资者是对盈利有强烈兴趣的企业,但我不会在这里深入探讨。

矛盾的结论

无论如何,一些最重要的医学论文是不确定的或有缺陷的,我们没有太多确定性:

  • 胆固醇是好是坏?LDL 呢?
  • 肉是好是坏?素食者身体更好吗?
  • 乳制品对你的健康有害吗?
  • 奶酪会致癌吗?
  • 你应该遵循古饮食还是酮饮食?
  • 你应该吃低脂肪食物吗?还是低碳水化合物?

如果你检查关于这些主题的医学研究,你可能会发现指向完全相反方向的相互矛盾的研究。当相关性被误认为因果关系时,这种情况就会发生。

观察证据

一个大问题是,如此多的医学研究是基于观察证据的,而且医学界支持它作为一种有效的方法。一个例子是观察营养流行病学,它跟踪人们的营养习惯和他们的疾病。但是在那个医学领域有很多变数:利益冲突,不同的生活方式,缺乏数学和统计学基础。大多数观察研究都是主观的,从本质上来说,主观的结论是有偏见的。你根据你个人的信仰体系来决定相信或不相信什么,但是你的决定并不是基于科学有效的证据。

一个可能的解决方案:身体是如何工作的

为了克服观察研究的局限性,我们可以通过研究导致不同事情发生的机制进行更深入的探索,比如这些例子:

  • 肉是如何与细胞相互作用的。
  • 脂肪在大脑中是如何燃烧的。
  • 癌症是如何发展的。
  • 动脉是如何退化的。

这种类型的研究比单纯的主观观察要复杂许多数量级。它意味着研究我们最小的生命单位之间的化学变化和相互作用的机制。我们准备好了吗?我们准备好迎接一个全新的人类化学模型了吗?可能还没有。

目前,塑造我们社会和经济体系的力量过于复杂,不允许现状发生剧烈变化。但希望我们不用等几个世纪就能体验到医疗保健的显著进步。尽管这种方法可能会导致重要的突破,并且不应该被低估,但目前它不是一个实用的解决方案。但还有其他可能的解决方案,涉及人工智能和机器学习。

深度学习和大数据

由于当今计算机技术的进步,我们可以用过去无法想象的方式处理数据点。我们可以分析人类基因组,找到相关性,推测因果关系,并检查数百万的医疗原因和结果。

通过深度学习或神经网络,我们可以找到每个人的最佳治疗方法,拯救生命,改善数百万人的生活质量。这种机器学习应用程序可以治疗世界偏远地区的人,并开出比最好的人类医生更好的治疗方法。用人工智能建议增强医生的能力,就像第二种意见一样,可能会成为医疗保健行业的游戏规则改变者。

现实生活中的应用

我最*参与了一项癌症研究,医生无法用影像学来区分癌细胞是恶性还是良性。化疗后进行侵入性手术,以确定患者是否对化疗有反应,这是一种标准治疗方法。基于对数千例癌症病例的数据分析,深度学习可以分析影像学检查,并确定特定患者是否会对化疗做出反应。这样,人工智能可以帮助病人避免不必要的化疗和手术,提高生活质量和预期寿命。

被禁止的治疗

尽管这种改善生活的医疗技术已经存在,但癌症患者却无法获得。那是因为 FDA 不会批准那些无法解释的治疗。深度学习算法通常做出正确的决定,我们可以衡量这一点。人工智能被设计成像我们的大脑一样工作。但它们更像是我们的大脑。通过分析远远超出我们大脑处理能力的复杂数据,机器可以检测模式并预测行为。但是他们不能用我们可以理解的方式来解释他们的决定。

警告:我们对人类比对机器更能容忍错误

在我们陷入可解释性困境之前,让我们先谈谈人类所犯的错误。比起机器错误,我们更容易接受人为错误。自动驾驶汽车就是一个例子。根据该公司 2019 年第四季度的报告,特斯拉自动驾驶汽车的无事故行驶距离是自动驾驶汽车的六倍。然而,每当自动驾驶发生事故时,即使是人类司机也无法避免的事故,人们也会迅速要求禁止自动驾驶汽车。在最*的一个案例中,一名游说者代表出租车和豪华轿车司机,这些司机将从他们的缺席中获得经济利益。

一个比较的例子:交通死亡

大约全世界每年有 150 万人死于交通事故。这个统计数字相当于每天有 23 架波音 737-800 坠毁,无人生还。没有人会容忍来自飞机的这种程度的危险,计算机系统可能会承担责任。但是,如果自动驾驶汽车每年的伤亡人数只有这个数字的 1%或大约 15000 人死亡,一些人就会对这项技术着迷。

大难题:可解释性

如果我们可以做出关于如何治疗疾病的最优决策,但我们无法解释我们是如何做出这些决策的,那该怎么办?如果我们的决定是基于对数百万个案例的分析,但我们不能说出为什么或哪些因素是最相关的,那该怎么办?这个问题就是可解释性困境。

可解释的人工智能

一个解决方案可能是可解释的人工智能(XAI) ,它指的是人工智能技术应用中的方法和技术,其结果可以被人类专家理解。这与机器学习中的黑盒的概念形成了对比,在黑盒中,即使是设计师也无法解释为什么他们的人工智能会做出特定的决定。在未来,XAI 可能是许多机器学习推荐的医疗保健疗法获得批准的途径。但不幸的是,与不可解释的人工智能相比,XAI 的决策能力非常有限。

让它私人化

在你生命中的某个时刻,你可能会接受某种形式的治疗。现在考虑这些问题:

  • 如果你得了癌症,你想要最佳的治疗吗,即使你不明白为什么或如何一个人工智能系统提出建议?
  • 或者你更喜欢次优的治疗方法,因为你能理解你的医生为什么推荐这种治疗方法?

可解释性和 FDA

在未来,如果 FDA 继续拒绝无法解释的治疗,很可能会有后果。在监管较少的国家,人们可能会看到其他人从人工智能推荐的治疗中受益。如果同样的治疗在美国继续得不到,这一证据可能会刺激医疗保健旅游业呈指数级增长。

可解释方法的限制

我们能实现一个既最优又可解释的研究过程吗?鉴于机器学习的本质,这似乎不太可能。它是由人类设计来模仿人脑功能的,但机器学习超出了人脑可以做或理解的任何事情。随着人工智能技术的进步,它变得越来越复杂,但我们的大脑无法以与我们创造的技术相同的方式进化。

变革阻力

从保持现状中获得经济利益的医生和投资者可能会抵制改变目前适用于人工智能的 FDA 法规。变化也可能让病人和社会团体感到害怕,他们期待医学界的专家指导。尽管我们害怕,但变化总会发生。

可能的未来

医学的未来会是缺乏可解释性吗?在某些方面,这是一个可怕的想法,但它可能是真的。XAI 的进步有助于弥合理解的鸿沟,但这需要投资和时间。

在某些时候,我们会让结果自己说话吗?

如果是这样的话,我们需要建立一个全新的道德框架,并为巨大的变化做好准备。

不可阻挡的科学

纵观人类历史,人们一直抵制挑战他们信仰体系的新科学思想。但是尽管有阻力,科学知识和技术仍在继续发展。我们继续从中获益。

通过人工智能推进医疗技术也将势不可挡

希望医生和医疗保健行业不会成为一个比解决方案更大的问题。

脸书数据科学家访谈

原文:https://towardsdatascience.com/the-facebook-data-scientist-interview-38556739e872?source=collection_archive---------1-----------------------

脸书数据科学家的职位是科技界最令人垂涎的职位之一。它需要数据分析、产品直觉、SQL 编码的多种技能,以及与业务和关键利益相关者的大量沟通。通常专注于业务方面,而不是工程,脸书数据科学的角色通常更像是许多其他公司的产品分析师和分析工作。

下面是来自脸书的 数据科学面试题及例题解答【s】

一般职责:

  • 使用量化工具发现机会,设定团队目标,并与跨职能合作伙伴一起指导产品路线图
  • 探索、分析和聚合大型数据集,以提供可操作的信息,并创建直观的可视化效果,将这些结果传达给广大受众
  • 设计信息丰富的实验,考虑统计显著性、偏倚来源、目标人群和阳性结果的可能性
  • 在日志记录、产品健康监控和实验设计/分析方面与工程师合作

面试

脸书数据科学家的面试过程相对简单。它始于招聘人员通过电子邮件、Linkedin 或在网站上申请后联系你。招聘人员将安排 30 分钟的电话面试,与你谈论脸书,以了解你对公司的兴趣、你希望在哪个部门工作,以及你的期望是否与脸书对数据科学职位的愿景一致。

如果你的技能更适合这些角色,他们可能会把你转到另一个机器学习工程或增长型市场分析师的招聘人员那里,这是很常见的。许多候选人会意识到数据科学的角色比他们想要的更面向业务。候选人还可以参加脸书多个职位的面试,如数据分析师产品分析师职位。

一般来说,脸书的招聘人员在候选人的简历中寻找至少有几年经验的有经验的数据科学家。如果你发现自己没有被选中参加现场面试,请点击面试查询查看我们的简历,帮助你解决这个问题。

Image from Facebook Data Scientist Skills chart on Interview Query

技术屏幕

最初的技术屏幕由两部分组成(总共 30-45 分钟)。

  • 产品感觉和分析(10-20 分钟)
  • 技术和数据处理(10-20 分钟)

【2020 年 8 月更新。在新冠肺炎期间,该技术部分已经从产品感觉面试和技术/数据处理转换为产品感觉面试和应用数据面试!一定要和招聘人员核实一下,看看你的脸书数据科学技术屏幕上有什么。

阅读更多关于如何处理应用数据和建模问题的信息

产品感觉和分析

技术屏幕上是脸书团队的一名数据科学家通过视频聊天。对于产品感和分析性问题,面试官将评估你如何解决商业问题,以及你在解决这些问题时的创造力和表达能力。这不是得出完美或正确的答案,而是你如何处理这个问题

作为一名数据科学家,作为一名负责改进或开发产品的人,花时间接触脸书的产品是很有帮助的。“脸书产品”可以定义为广告、手机、时间线、新闻提要、消息。此外,还有 Instagram 和 Oculus。

Use the product to help understand

设身处地为构建产品或功能的产品团队着想,问这样的问题:

  • 你认为他们为什么会对它的运作方式做出某些决定?
  • 可以做些什么来改进产品?
  • 在解决有关健康、增长或产品参与度的问题时,您希望考虑哪种指标?
  • 你如何衡量产品不同部分的成功?
  • 在尝试解决与我们产品相关的业务问题时,您会评估哪些指标?
  • 你如何判断一个产品是否表现良好?
  • 你会如何设置实验来评估任何新产品或改进?

为如何回答这个问题安排结构也很重要。确保把你的想法都集中在一个地方,组织你的答案,仔细解释你是如何调查每个问题的。

技术部分

在技术和数据处理部分,你会被问到两个问题。脸书不仅在寻找编码技能,还在寻找将高层次问题转化为执行策略的能力,以及解释结果如何相关以及哪些方面可能仍然缺乏的能力。

这些问题中的许多都可能给定一个数据集,并编写一个 SQL 查询或 Pandas 代码来分析数据集,以达到预期的结果。这一部分是使用一个名为 Coderpad 的代码编辑器完成的,它有一个控制台。然而,一般来说,面试不会让你实际运行任何真实数据的代码,所以一定要练习 SQL 语法。

例题:

给定两张表。一个是校区内每个学生的出勤日志,另一个是校区内每个学生的人口统计汇总表。

出勤 _ 事件:日期|学号|出勤

所有学生:学生 id |学校 id |年级|出生日期|家乡

使用这些数据,您能否回答如下问题:

  • 有百分之多少的学生在生日那天上学?
  • 从昨天到今天,哪个年级的出席率下降幅度最大?

一定要写真实的代码。伪代码在面试的这一部分是不可接受的,因为他们希望看到真正的 SQL 或熊猫代码被写出来。强烈建议用 SQL 编写,因为这是脸书所有分析师和数据科学家使用的语言。

点击 查看我们的2021 年 SQL 面试问题终极指南

现场面试结构

脸书的现场面试时间很短,为 2.5 小时,每次面试之间几乎没有休息时间。在四种不同类型的面试中,您将与四位不同的数据科学家进行 30 分钟的会面。

  • 1 统计分析案例题
  • 2 个产品通才问题
  • 1 个技术分析问题
  • 您还将在休息时间与数据科学家进行一对一的交流,了解他们在脸书的生活。这通常是一个 45 分钟的午餐面试,他们会让你休息一下,或者谈谈他们在脸书的工作。

在产品通才问题中,一个问题将更侧重于建模,而另一个问题将更侧重于产品直觉。

更符合产品直觉的是:我们想在群组帖子中添加线程评论,你如何衡量该功能是否成功?

了解解决本指南产品直觉和分析面试问题的步骤

一般提示:

  • 不要被面试过程的形式吓到。每次面试都很短,所以每个面试官通常都急于在规定时间前完成面试的每个部分。
  • 对招聘人员友好热情。在一天结束的时候,他们会在面试和薪酬委员会上为你辩护,以决定你将获得的水*和薪酬。如果你对招聘人员来说是个混蛋,他们真的没有动力帮你。
  • 如果你在面试中搞砸了一部分,也不要担心。即使你面试的一部分搞砸了,而其他部分做得很好,你仍然可以通过并得到这份工作。也就是说…
  • 你在面试中的表现是决定最终薪酬水*的主要因素之一。这意味着在你的所有面试中,能够以一种良好的格式和简洁的方式组织你的答案是很重要的。

感谢阅读!

大数据的谬误:数据科学和“要做的工作”理论

原文:https://towardsdatascience.com/the-fallacy-of-big-data-data-science-and-the-theory-of-jobs-to-be-done-da9f9c523279?source=collection_archive---------10-----------------------

虽然围绕“大数据”的狂热已经被人工智能和机器学习热潮所取代,但这两者的中心租户在很大程度上是相同的:

有了足够的数据,我们可以解决每一个问题。

曾经有一段时间,我相信这个想法是真的。这是我进入数据科学领域的原因——我曾经觉得数据可以告诉你你需要知道的一切。事实是,大数据有其局限性。

Companies are obsessed with Big Data, AI, and Machine Learning.

大数据应用特别薄弱的一个领域是创新。善意且才华横溢的商业领袖总是会陷入这种特定的“大数据”陷阱——他们试图通过广泛的相关性分析和客户细分,在分散的数据集中找到“宝石”。不幸的是,这是大多数组织出错的地方——相关性不会告诉你是否有任何特定的个人会真正购买你的产品。

了解客户的“待做工作”

哈佛商学院教授、著名商业思想家克莱顿·克里斯滕森(Clayton Christensen)的颠覆性创新理论表明,当企业追求“持续创新”(过去对它们有效的产品和服务)时,它们会向颠覆敞开大门。通过不知不觉地(通常也是合乎逻辑地)做那些一直有效的事情,他们允许更小、更敏捷的公司创造产品,为全新的消费者群体打开市场。

创新理论有助于解释企业失败的原因,但它对解释如何成功制造消费者想要购买的新产品和服务(如何实际创新)没有太大帮助。出于这个原因,克里斯滕森博士创建了一个对破坏性创新的补充理论,称为“要做的工作”的理论。

待完成工作理论提供了一个非常有用的工具集来准确预测一个产品是否会成功。哈佛商业评论文章了解你的客户“要做的工作”解释了什么是“工作”:

我们一生中都有许多工作要做。有的很少(排队的时候打发时间);有的很大(找个更有成就感的职业)。有些是不可预测的(在航空公司丢失了我的行李箱后,穿着去外地参加商务会议);有些是定期的(为我的女儿打包一份健康的午餐带到学校)。当我们购买产品时,我们实际上是“雇佣”它来帮助我们完成工作。如果它做得很好,下次我们面对同样的工作时,我们会再次雇佣这个产品。如果它做得不好,我们就“解雇”它,然后寻找替代品。

克里斯滕森先生的理论帮助我们根据你雇佣他们来完成的工作,而不是他们的内在特征,将产品放入情境中。众所周知的一句话 “人们不想买四分之一英寸的钻头。他们想要一个四分之一英寸的洞!” 在这里完全适用。当顾客购买产品时,他们不仅仅是购买产品,他们是雇佣产品来解决他们生活中出现的工作。

客户作出“雇佣”或“解雇”决定的原因在于他们试图在自己独特的环境中取得非常具体的进展。

预测问题

鉴于创新对企业的重要性,令人惊讶的是它们在这方面的糟糕程度。麦肯锡报告称,84%的全球高管表示创新是其增长战略的重要组成部分,但 94%的高管对其组织的创新表现不满意。

为什么组织如此不善于创新?

创造产品和创新商业模式是一个预测问题— 但不是一个可以用算法解决的问题企业需要高度准确地预测一种产品是否会畅销,才能茁壮成长。在大数据的世界里,预测是数据科学家的领域。在我们当前的商业环境中,人们通常认为,有了足够的数据,我们应该能够预测我们想要的任何结果——甚至是成功的创新。克里斯滕森博士解释了为什么这是一个谬论:

根本的问题是,公司创建的大部分客户数据都是为了显示相关性:这个客户看起来像那个,68%的客户说他们更喜欢版本 A 而不是版本 b。虽然在数字中发现模式令人兴奋,但这并不意味着一件事实际上引起了另一件事。尽管相关性不是因果关系并不奇怪,但我们怀疑大多数经理已经习惯于将决策建立在相关性的基础上。

为什么这是被误导的?考虑一下这篇文章的合著者之一 Clayton Christensen 的案例。他已经 64 岁了。他身高六英尺八英寸。他的鞋码是 16。他和他的妻子已经把他们所有的孩子都送进了大学。他开一辆本田小型货车去上班。他有很多特点,但没有一个让他去买《纽约时报》。他购买这份报纸的原因要具体得多。他可能会买它,因为他需要在飞机上阅读,或者因为他是一个篮球迷,这是三月疯狂时间。收集关于他的人口统计学或心理学信息,并寻找与其他买家群体的相关性的营销人员不会抓住这些原因。

数据科学家和商业领袖有时会忘记,数据只是更复杂现实的一种表现。所有的数据都是人为的——有人在某个时间点选择了收集什么数据、如何收集、多长时间收集一次以及将数据放在哪里。定量数据,那种我们可以放入回归模型的数据,对我们很有吸引力。我们相信数字会告诉我们答案,并为我们指明正确的方向。

人们普遍认为,有一些理想的数据集合在一起,可以产生关于客户的完美见解。这只是弄清楚什么是正确的数据的问题。简而言之,如果我们只是以量化的形式收集正确的数据,我们就可以知道“真相”。

( 比拼运气 ,克里斯滕森等译,2016 年,第 189 页)

至少就目前而言,数据来源和我们收集数据的方法还不够复杂,不足以捕捉到表明创新是否可行的信号。“要做的工作”过于微妙和个人化,无法通过数据库的输入来解决。然而,这并不意味着数据科学家在清楚地理解和组织“要做的工作”方面毫无用处,相反,数据科学家可能比许多人更适合揭示客户在生活中寻求的进步。毕竟创新是一个预测问题。

揭露工作

数据科学家可以做些什么来帮助他们的公司和组织有效地创新?

将有助于 发现客户“工作”的数据付诸实施。无论它有多“大”,公司存储在客户身上的数据都不是现实的清晰呈现。数据科学家不应该让数据变得更大或更复杂,而是应该让数据变得更小,也就是说,将您的客户数据转化为定性见解,从而帮助您的组织发现需要完成的工作。

例如,在 Franklin Sports,我们开发了一套仪表板和报告,帮助将亚马逊产品评论合成为产品团队的实用信息。使用 web 抓取工具 Import.io ,我们将所有亚马逊列表的评论拉入我们的 Azure SQL 数据库,并运行 NLTK word tokenizers 将评论分割成一个和两个 token n-gram。然后,我们对过滤标准进行了分层,使用与“坏了”、“便宜了”和“被撕掉了”等缺陷相关的词来突出评论。该数据集与我们的内部产品分类相结合,使产品经理能够快速检查关于其产品类别的负面市场反馈。

有了这些数据,我们的产品经理就能够了解我们的产品正在解决(或没有解决)的工作的重要见解。我们发现,在这个数据集中有许多 5 星评价,客户表达了对产品的喜爱,但强调了没有满足他们需求的具体方面。

这个简单的应用程序为我们的产品经理节省了无数的时间,他们可以通过查看数据来了解他们的产品,从而专注于创造创新,解决我们客户的工作问题。

衡量真正重要的东西。您的数据产品是否围绕客户雇佣贵公司解决的工作进行组织?点击、印象、频率、花费的时间、成本、收入等。—这些都是我们大多数人很容易获得的指标,随后我们花费大量时间分析它们并利用它们(或其功能变体)来构建模型和数据产品。不幸的是,这些指标中的大多数对客户来说并不重要。如果你坐下来,真正尝试找出什么对你的客户是重要的,你会发现这可能很难衡量。不要放弃。真的要花时间在这上面——即使这意味着暂停统计和编程工作来专注于业务。如果你的技术工作与工作相一致,它会走得更远。

亚马逊掌握了这一理念。它的零售业务非常专注于三个目标领域:丰富的选择、低廉的价格和快速的交付——他们“分分秒秒”地衡量每一个目标例如,亚马逊雇佣了一个在网上爬行的购物机器人来确定产品价格。如果发现更低的价格,亚马逊的价格将自动降低,以击败竞争对手的价格。这一过程仅仅专注于解决客户雇佣亚马逊做的工作。( 比拼运气 ,克里斯滕森等译,2016 年,第 209 页)

从你正在进行的项目中退一步,评估你的活动是否与客户雇佣你的公司来解决的工作一致。他们意见一致吗?如果不是,放慢速度,重新调整一下。制定计划以获得所需的数据源,这样您就可以对真正重要的东西进行衡量并采取行动——即使这些数据本质上是定性的。为了“完成工作”,你可能会忍不住凑合着用现有的东西,但你最多只能获得增量收益。相反,通过积极专注于要做的工作来做出真正的改变。

应用理论。如果你不知道你的客户雇佣你的产品来解决什么样的“工作”,我上面概述的一切将会变得难以置信的困难。最重要的是——弄清楚这一点。如果对客户的工作没有清晰的了解,你会陷入“功能追逐”,或者更糟,你会在不知不觉中主动与客户作对。我在这篇文章中引用了详细解释“要做的工作”理论的文章和书籍——阅读并理解它们,然后在你的组织中应用它们:

了解客户的“待做工作”

营销弊端:成因与根治

与运气竞争:创新与客户选择的故事

解决问题

解决所有问题的数据“圣杯”并不存在——如果我们继续尝试并找到它,我们将浪费无数的时间和宝贵的时间,而这些时间本可以花在解决问题上。

不要在数据中寻找隐藏的宝石,实际上要关注你的客户。他们雇佣你的公司做什么?当你完全理解这一点时,你将成为一名更好的数据科学家和商业领袖。

假阳性悖论

原文:https://towardsdatascience.com/the-false-positive-paradox-f86448a524bc?source=collection_archive---------13-----------------------

当一个单一的统计数据不能说明全部情况时

Photo by sutirta budiman on Unsplash

1996 年在英国,莎莉·克拉克的儿子在年仅几周的时候夭折了。大约一年后,同样的悲剧发生在她的第二个孩子身上。一个月后,克拉克被捕了。费用?双重谋杀。

婴儿猝死还是谋杀?

在克拉克审判期间,她的辩护律师认为两个孩子都死于婴儿猝死综合症。婴儿猝死综合症的确切原因至今仍不清楚,但它与婴儿大脑中控制睡眠呼吸的部分的缺陷有关。例如,俯卧或侧卧会增加婴儿猝死综合症的风险。

现在,控方的策略是什么?没有任何证据,也没有任何婴儿死亡的目击者。提供的唯一证据是一个统计数字。检方聘请的专家、儿科医生罗伊·梅朵估计,像克拉克这样的家庭,婴儿猝死综合症的发生率约为 1/8500。因此,按照梅多斯的说法,克拉克无罪的概率是这个数字的*方,即大约 1/70,000,000。这个数字对陪审团来说显然是足够的证据,他们发现克拉克有罪。

检察官的论点有许多问题。首先,即使假设像 Clark 这样的家庭中真正的婴儿猝死综合症发生率低至 1/8500(这很可能是低估了),那么在假设两个死亡不相关的情况下,同一家庭中两个死亡的概率只是这个数字的*方。但不清楚这种假设是否成立。举例来说,如果婴儿猝死综合症是由某种基因引起的,那么两个孩子都有可能受到该基因的影响。控方未能证明这一假设,因此 1/70,000,000 这一数字不能信以为真。真实概率大概要高很多。

检察官的谬论

检察官的论点中还有另一个更严重的错误,这个错误在法庭上如此常见,以至于它有了自己的名字:检察官的谬误。比方说,我们相信这样的假设,即在像克拉克这样的家庭中,2 个婴儿猝死综合症死亡的真实概率是 1/70,000,000。然而,这个数字并不像公诉人所说的那样,是克拉克无罪的概率,鉴于这两起死亡事件。相反,这是证据的概率(两人死亡),假设克拉克是无辜的,这是一个至关重要的区别。

如果我们想计算相关的统计数据,即已知两人死亡的情况下,克拉克无罪的概率,这里有一种方法:以所有两个孩子都死了的家庭为基础人口。这两个孩子自然死亡占总人口的比例是多少?这个数字变成了 2/3 左右的。换句话说,克拉克是凶手的概率只有 33%,这和检方引用的统计数字讲的是完全不同的故事。正如杰弗里·万塞尔所说,

“什么绝对的,重罪,不负责任的废话。这是现代英国法律史上最大的司法不公之一。”

在监狱度过 3 年后,克拉克的律师能够赢得上诉,但只是因为他们发现控方隐瞒了指向她第二个孩子自然死亡的证据。克拉克不仅要面对失去两个孩子的痛苦,还要面对一场令人精疲力尽的法律战,他出现了严重的精神问题。她于 2007 年 3 月死于酒精中毒,死于自己家中。的确是误判。

检察官谬论的另一面

在辛普森谋杀案的审判中,控方出示了辛普森对妻子施暴的证据。辩方认为,在所有遭受家庭暴力的女性中,只有 1/2500 的人被谋杀,因此辛普森对妻子施暴的证据是不相关的。

这一有缺陷的论点再次证明了原告的谬误,但这次是站在被告一方。相关的统计数据是这样的:假设一个女人遭受了家庭暴力并且被谋杀,凶手有多大可能是她的家庭伴侣?根据作者 Gerd Gigerenzer 的说法,这个数字要高得多,大约为 90%。罗格斯大学的 Harry Crane 教授计算出更高的概率为 97%。

然而,陪审团裁定 OJ 无罪。几年后,他写了一本书《如果是我做的话》,在书中他描述了他会如何谋杀。直到今天,还不清楚是谁谋杀了他的妻子。

Photo by AJ Robbie on Unsplash

医学测试和医生的谬误

在《酒鬼之行》中,物理学家伦纳德·姆洛迪诺夫讲述了一个人寿保险公司在进行了验血后拒绝为他投保的故事,验血是申请过程的一部分。出于对结果的困惑,他凭直觉进行了艾滋病毒测试,结果呈阳性。他的医生告诉他,10 年内我们死亡的可能性是 999%。“我真的很抱歉,他补充道。

然而,正如 Mlodinow 解释的那样,他的医生犯了一个严重的错误。假阳性——如果血液没有感染艾滋病毒,艾滋病毒检测呈阳性——的概率约为 1/1000。但是,正如医生得出的结论,而不是这个数字并不意味着 Mlodinow 感染的概率为 999/1000。为了了解发生了什么,考虑一个 10,000 名非静脉注射毒品的异性恋美国白人男性的样本量。假设这一万人中有一人真的会感染艾滋病毒。如果所有 10,000 人都进行了艾滋病毒检测,那么其中一人将检测为阳性,但另外 10 名实际上未感染该病毒的人也将检测为阳性。因此,假设检测结果呈阳性,那么呈 HIV 阳性的概率实际上是 1/11,即大约 9%。这是他的医生应该报告的数字。不用说,Mlodinow 今天很好,还活着。

在他的书中,Mlodinow 还提到了乳房 x 光检查的例子。假设乳房 x 线照片的假阳性率——如果真的没有乳腺癌,则表明有乳腺癌——是 7%,而真正的乳腺癌率是 0.8%。然后,做和上面一样的数学计算,如果检测结果为阳性,患乳腺癌的概率是 80/780,或者大约 10%。然而,正如 Mlodinow 解释的那样,当美国医生在一项研究中被问及这个问题时,他们中的绝大多数人估计这种可能性在 75%左右。

或者考虑运动员的药检问题。1996 年,世界冠军赛跑运动员玛丽·德克尔·斯莱尼试图在亚特兰大的美国奥运选拔赛中复出,但她在兴奋剂检测中呈阳性,这实际上结束了她的职业生涯。然而,这种测试的假阳性率可能高达 1%。假设 10%的运动员确实服用了兴奋剂,一项测试将会发现 50%的滥用者。然后,如果 1000 名运动员接受测试,样本中大约有 50 名服用兴奋剂者会被发现。但是在样本中的非吸毒者中,大约有 9 人的检测结果也是阳性!那么,运动员真的有罪的概率是 50/59 = 85%,或者说是用骰子扔出 6 个的概率。Mlodinow 指出,

“这无疑为合理怀疑留下了空间,更重要的是,这表明进行大规模检测(每年有 90,000 名运动员接受尿检)并根据这样的程序做出判断意味着谴责大量无辜的人。”

Photo by Christopher Burns on Unsplash

结论:统计素养的必要性

克拉耶丝的错误监禁,姆洛季诺夫的阳性艾滋病毒测试和他的医生的反应,以及斯莱尼被毁掉的跑步生涯都表明,人们是多么容易和经常被错误的统计数据误导。这些并不是孤立的案例:例如,在克拉克案之后,另外两名被判谋杀其子女的妇女唐娜·安东尼和安吉拉·康宁斯能够推翻对她们的定罪并从监狱中释放。

这里更深层次的问题是我们的社会缺乏统计素养。统计素养,即理解汇总原始数据的统计数据的能力,不仅在法庭或医疗行业,而且在我们的日常生活中都是一项至关重要的技能。2010 年,皇家统计学会发起了一项为期 10 年的推广统计知识的运动,即 getstats 计划。可悲的事实是,在一个缺乏统计知识的社会,人们很容易用误导性的统计数据欺骗决策者。正如英国国家统计学家约翰·普林格所说,

“在数据丰富的世界里……那些利用数字力量的国家、政府、企业和个人将会繁荣昌盛。那些“得到统计数据”的人会继续下去。不这样做的人将会被甩在后面。”

如果你喜欢这篇文章,也看看这些:

[## 如何少犯错误

用有限数据预测未来的贝叶斯指南

towardsdatascience.com](/how-to-be-less-wrong-5d6632a08f) [## 不可能的统计

圣经代码、投资基金、彩票和“看别处”效应的诅咒

towardsdatascience.com](/the-statistics-of-the-improbable-cec9a754e0ff)

非策略强化学习算法的虚假承诺

原文:https://towardsdatascience.com/the-false-promise-of-off-policy-reinforcement-learning-algorithms-c56db1b4c79a?source=collection_archive---------8-----------------------

偏离策略的强化学习算法能实现它们的承诺吗?

在过去的几年里,我们都见证了强化学习方法的快速发展。最值得注意的是,最大的注意力都放在了非策略方法上,原因很明显,与其他方法相比,它们的伸缩性非常好。非策略算法可以(原则上)在不与环境交互的情况下从数据中学习。这是一个很好的特性,这意味着我们可以通过任何我们认为合适的方式收集我们的数据,并完全离线地推断最优策略,换句话说,我们使用一个不同于我们正在优化的行为策略。不幸的是,正如我将在本文中描述的那样,这并不像大多数人认为的那样开箱即用。在我们开始讨论算法和数学之前,有一个小小的提醒:

要理解这篇文章,你应该了解强化学习的基本概念。

一个非政策算法的光辉例子是 DDPG(深度确定性政策梯度)——据说。为什么我说应该?DDPG 的行为政策与优化政策并不完全相关。任何熟悉 DDPG 及其变体的实现的人都认识到,探索是由于向策略选择的动作添加了某种噪声而导致的,因此我们不能称 DDPG 为纯粹的非策略算法,因为我们优化的策略实际上是用于获取数据(以进行探索)。

Q 学习或深度 Q 学习及其所有变体呢,它们是真正的非策略算法吗?不,他们不是。在 Q-learning 中,我们做一些叫做ε-贪婪探索的事情。这基本上意味着我们选择随机行动的概率很小,而不是行动的当前最优估计。所以基本上行为策略和我们优化的策略没有太大的不同。

事实证明,这些算法不是纯粹的非策略算法,这是这些算法持续工作的唯一原因。这正是[1]中显示的内容。有趣的是,这篇论文的标题是“无探索的非策略深度强化学习”这可能有点误导,因为探索肯定是强化学习中需要的东西,但我们通常不希望使用我们正在优化的策略来探索非策略方法(这是应该首先使它们成为非策略的)。

[1]的作者进行的实验之一是,他们根据从另一个 DDPG 策略收集的经验,训练一个真正脱离策略的 DDPG 策略。这意味着他们采用了两种完全不同的初始策略,一种在进行数据采集时进行迭代训练,另一种根本不用于数据采集,而是根据另一种策略采集的数据进行训练。这是在 OpenAI Gym 的 hopper 任务上评估的,它甚至没有那么难:

如果你看一看得到的*均回报图,它基本上是一集内走过的距离,结果是相当令人震惊的(如果你不知道幕后发生了什么):

[1]

可以看到,用于收集数据的实际策略(橙色线)已经提高到高回报区域,而刚刚从缓冲区更新的其他策略(蓝色线)未能实现高*均回报。对此我们应该怎么看?我们完了吗?机器人会继续是可怜的无脑生物吗?

这其实并不难理解。这种情况完全可以用传统的统计学习理论来解释。强化学习的问题在于,数据生成分布,即我们通过交互获得的来自环境的转变,也取决于我们用于交互的策略(逻辑上)。这意味着我们收集的经验或数据集中的转换分布不一定反映我们在真正偏离策略的设置中优化的策略所导致的分布。

换句话说,我们的训练集并不像我们将要遇到的实际数据那样分布。这通常会给机器学习算法带来相当大的问题。尽管如此,人们还是想出了“聪明”的办法来缓解这些问题,比如重要性抽样,它本质上是根据样本的可能性重新加权。显然,[1]的作者认为,在用于训练的批次不包含任何高可能性转换的情况下,这不足以缓解问题。

Photo by Tim Gouw on Unsplash

为了解决数据生成分布相对于训练分布的问题,文献[1]的作者推导了批量约束 Q 学习算法(BCQ)。该算法的思想非常简单,它直接解决了行为策略的数据生成分布和当前策略诱导分布之间的差异,尽管它们的实现有点复杂。其思想是学习动作的条件生成分布,从而仅生成在经验中可能已经出现的状态-动作对,用于在 TD-误差更新中计算 TD-目标。对于那些忘记了 TD-error 更新中的引导过程是如何工作的人来说,快速回顾一下,这是 TD-error:

[1]

因此,基本上我们计算当前奖励+我们的贴现下一步估计值和当前步骤估计值之间的误差。这就是为什么这个过程被称为 bootstrapping,因为我们正在 bootstrapping 我们自己的未来估计,以更新我们的当前估计。现在注意公式中的圆周率。这就是神奇的地方,我们正在优化的策略可能会产生与数据生成分布无关的行为,而数据生成分布是以我们的行为策略为条件的。注意,范数中的 r+γ* Q 项被称为 TD 目标,目标估计的范数被称为 TD 误差。

不是直接使用策略来计算 TD 误差更新,而是训练单独的扰动策略,该策略将小扰动应用于从生成模型中采样的动作。在这种情况下,生成模型根据遇到的数据进行训练。简而言之,这意味着 BCQ 产生的政策有以下形式:

[1]

通过最大化缓冲器中状态动作对的 Q 值来训练扰动策略。这也是很明显的,因为我们想采取最大化长期回报的行动。正如我前面说过的,这些扰动很小,因为我们不想产生与体验中遇到的动作相差太多的动作:

[1]

唉,另一个技巧可以用来阻止采取不确定结果的行动。首先可以用 2 个 Q 网络,并行训练。通过在计算 TD 目标值时取 2 的最小值,我们有效地阻止了优化中的高方差区域。作者选择了由参数λ参数化的最小值和最大值之间的凸组合。通过调整 lambda,我们可以权衡不确定性的惩罚力度。

[1]

通过这种方式,我们可以相对确保我们用来适应我们的策略的转移分布与训练数据中的分布相似。虽然这对于连续的状态-动作空间来说并不容易实现,因为我们需要用一个生成模型(比如变分自动编码器)来对数据生成分布进行建模,但是我发现这个事实直到现在才得到解决,这是非常令人惊讶的。训练数据需要类似地分布到实际数据的要求是统计学习理论基础的一部分。[1]是一个很好的例子,说明如何需要对强化学习算法进行更好的理论分析。书面裁决:

Photo by Collin Armstrong on Unsplash

参考

藤本、斯科特、大卫·梅格和多伊娜·普雷科普。“无探索的离策深度强化学习。” arXiv 预印本 arXiv:1812.02900 (2018) 。

在 Python 上预测数据的最快最简单的方法

原文:https://towardsdatascience.com/the-fastest-and-easiest-way-to-forecast-data-on-python-d7ff29f3add6?source=collection_archive---------4-----------------------

Photo by Markus Spiske on Unsplash

超快速预测:NBA 全明星预测得分。

||我||简介

最*了解到先知 ( fbprophet) 。如果你是一个处理时间序列数据的数据科学家,你会喜欢这个工具的。

Photo by Alex Haney on Unsplash

对于那些不知道的人,Prophet 是由脸书开发的,通过其简单的 Sk-Learn 风格的 API 来帮助数据科学家自动预测时间序列数据。
Prophet 可以由数据科学家进行微调,以实现更高的特异性。这是一个附加的预测模型,并假设每年的季节性影响是相似的。因此,它不会考虑太多,但它的准确性可以通过多种反馈机制随着时间的推移而提高。它的网站上说,Prophet 最适合处理有规律的季节性成分和大量历史数据可供参考的时间序列数据。

由于它是开源的,任何人都可以下载和使用 Prophet。查看以下链接,了解有关 Prophet 的更多信息,以及为什么应该使用来预测时间序列数据:

[## 先知

Prophet 是一个用 R 和 Python 实现的预测程序。它速度很快,并提供完全自动化的预测…

facebook.github.io](https://facebook.github.io/prophet/)

|| II ||安装

我不会在这里详细介绍,但由于我第一次下载 Prophet 时确实遇到了一些问题,我将解释我是如何正确安装它的:

  • 首先,如果可行的话,您可以尝试一个简单的 pip 安装:
    pip install fbprophet
  • 然而,fbprophet 有一个主要的依赖项可能会导致问题:pystan
  • 理想情况下,你要在fbprophet:
    https://pystan . readthedocs . io/en/latest/installation _ beginner . html之前 pip 安装pystan
  • WINDOWS: pystan需要一个编译器。遵循此处的说明
  • 最简单的方法是在 anaconda 中安装 Prophet。使用conda install gcc设置 gcc。然后安装 Prophet 是通过 conda-forge:
    conda install -c conda-forge fbprophet

|| III ||导入和数据

在本教程中,我们将使用以下库。除 Prophet 之外的所有基本库。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import os
from fbprophet import Prophet

Photo by Max Winkler on Unsplash

关于数据集,我从 这里 下载了詹姆斯·哈登* 10 年的比赛数据。基本上,我们有哈登几乎每一场比赛的数据(包括常规赛和季后赛)。)

要使用我正在使用的数据,请访问这个 GitHub 页面,下载 CSV 文件。

下面,我已经导入了每个包含詹姆斯·哈登数据的 CSV 文件。19rs'将是“2019-2020 年常规赛”,18po'将是“2018-2019 年季后赛”,让你知道每个文件是如何命名的。

harden19rs = pd.read_csv('Downloads/NBAML/harden19rs.csv')
harden19po = pd.read_csv('Downloads/NBAML/harden19po.csv')
harden18rs = pd.read_csv('Downloads/NBAML/harden18rs.csv')
harden18po = pd.read_csv('Downloads/NBAML/harden18po.csv')
harden17rs = pd.read_csv('Downloads/NBAML/harden17rs.csv')
harden17po = pd.read_csv('Downloads/NBAML/harden17po.csv')
harden16rs = pd.read_csv('Downloads/NBAML/harden16rs.csv')
harden16po = pd.read_csv('Downloads/NBAML/harden16po.csv')
harden15rs = pd.read_csv('Downloads/NBAML/harden15rs.csv')
harden15po = pd.read_csv('Downloads/NBAML/harden15po.csv')
harden14rs = pd.read_csv('Downloads/NBAML/harden14rs.csv')
harden14po = pd.read_csv('Downloads/NBAML/harden14po.csv')
harden13rs = pd.read_csv('Downloads/NBAML/harden13rs.csv')
harden13po = pd.read_csv('Downloads/NBAML/harden13po.csv')
harden12rs = pd.read_csv('Downloads/NBAML/harden12rs.csv')
harden12po = pd.read_csv('Downloads/NBAML/harden12po.csv')
harden11rs = pd.read_csv('Downloads/NBAML/harden11rs.csv')
harden11po = pd.read_csv('Downloads/NBAML/harden11po.csv')
harden10rs = pd.read_csv('Downloads/NBAML/harden10po.csv')
harden10po = pd.read_csv('Downloads/NBAML/harden10rs.csv')
harden09rs = pd.read_csv('Downloads/NBAML/harden09rs.csv')

|| IV ||清理数据

下一步非常重要,因为我们希望确保我们的数据包含所有必需的字段,否则我们将无法用它做很多事情。

让我们从追加每个 CSV 文件开始。我们可以按时间顺序排列,因为有一个日期部分。首先,我们以下列方式附加每个文件:

harden = harden19rs.append(harden19po, ignore_index=True, sort=True)
harden = harden.append(harden18rs, ignore_index=True, sort=True)
...
harden = harden.append(harden09rs, ignore_index=True, sort=True)

接下来,我将重命名一些列,以便我们可以了解它们是什么,并删除不需要的列:

harden = harden.rename(columns={'Unnamed: 7': 'Game', 'MP':'Mins'})
#harden['Game'] = pd.concat([harden['Unnamed: 7'].dropna(), harden['Game'].dropna()]).reindex_like(harden)
#harden = harden.drop(columns=['Unnamed: 7'])
harden = harden.drop(columns=['Unnamed: 5']) 
harden = harden.drop(columns=['▲'])
harden = harden.sort_values(by=['Date'])
harden = harden.reset_index(drop=True)

最终数据集看起来有点像这样:

中间有一些列我们看不到,但大部分都是游戏统计。詹姆斯·哈登每场比赛都有不同的统计数据。

|| V ||设置索引并删除空值

因为我们希望数据按时间顺序排列,所以我们将日期设置为索引值,并将数据类型更改为 pandas datetime 变量:

harden.set_index(‘Date’)
harden[‘Date’] = pd.to_datetime(harden[‘Date’])

接下来,我们希望删除数据中的任何值(即使我怀疑我们有任何值)。我们将使用 pandas dropna 函数,并删除一个所有值都为空的行。一旦我们这样做了,我们将重置索引,以确保它仍然是连贯的。

harden = harden.dropna(how='all')
harden = harden.reset_index(drop=True)

Photo by Ramiro Pianarosa on Unsplash

接下来,我们还有另一个重要的数据清理步骤。在一些比赛中,詹姆斯·哈登是不活跃的,被禁赛,不比赛或不穿衣服。某些列将这些值“挂起”,而不是应该在那里的数值。

这样,我们就可以去掉哈登没有上场/着装或者不活动/停赛的所有排(场)。然而,这可能会大大减少我的数据量。因此,我将使用每个相应列的中值替换这些值。

for i in harden:
    harden[i] = harden[i].replace('Inactive', 
    np.median(pd.to_numeric(harden[i], errors='coerce')))

for i in harden:
    harden[i] = harden[i].replace('Did Not Play', 
    np.median(pd.to_numeric(harden[i], errors='coerce')))

for i in harden:
    harden[i] = harden[i].replace('Did Not Dress', 
    np.median(pd.to_numeric(harden[i], errors='coerce')))

for i in harden:
    harden[i] = harden[i].replace('Player Suspended', 
    np.median(pd.to_numeric(harden[i], errors='coerce')))

harden = harden.dropna(how='any')
harden = harden.reset_index(drop=True)
harden.set_index('Date')

确保你的数据类型是正确的

包含数字数据的列应该被明确指定该数据类型,以避免将来出现错误。因此,我将为每一列分配正确的数据类型。对浮点(十进制)列使用downcast='float'

harden['3P'] = pd.to_numeric(harden['3P'])
harden['3PA'] = pd.to_numeric(harden['3PA'])
harden['AST'] = pd.to_numeric(harden['AST'])
harden['BLK'] = pd.to_numeric(harden['BLK'])
harden['DRB'] = pd.to_numeric(harden['DRB'])
harden['ORB'] = pd.to_numeric(harden['ORB'])
harden['FG'] = pd.to_numeric(harden['FG'])
harden['FGA'] = pd.to_numeric(harden['FGA'])
harden['PTS'] = pd.to_numeric(harden['PTS'])
harden['PF'] = pd.to_numeric(harden['PF'])
harden['TOV'] = pd.to_numeric(harden['TOV'])
harden['STL'] = pd.to_numeric(harden['STL'])
harden['TRB'] = pd.to_numeric(harden['TRB'])
harden['3P%'] = pd.to_numeric(harden['3P%'], downcast='float')
harden['FG%'] = pd.to_numeric(harden['FG%'], downcast='float')
harden['FT%'] = pd.to_numeric(harden['FT%'], downcast='float')
harden['GmSc'] = pd.to_numeric(harden['GmSc'], downcast='float')
harden['FTA'] = pd.to_numeric(harden['FTA'])
harden['FT'] = pd.to_numeric(harden['FT'])print(harden.dtypes)Output: 
3P               int64
3P%            float32
3PA              int64
AST              int64
BLK              int64
DRB              int64
Date    datetime64[ns]
FG               int64
FG%            float32
FGA              int64
FT               int64
FT%            float32
FTA              int64
GmSc           float32
ORB              int64
Opp             object
PF               int64
PTS              int64
STL              int64
TOV              int64
TRB              int64
dtype: object

|| VI ||预测数据

现在是最精彩的部分。我们将使用 Prophet 预测该数据集中的任何列。输出将为我们提供预测的图像(图表)。为了创建图表,我们需要首先使 Prophet 模型符合我们的数据集。我们将把我们需要的列和日期列分开。在这种情况下,我预测点,所以我将采取' PTS '和' Date '列。

df = harden[['PTS', 'Date']]

这些后续步骤非常重要,因为我们将使 prophet 模型符合我们的数据。我们想将我们的列重命名为“ds”(日期)和“y”(目标)。然后,我们用任何给定的interval_width来定义我们的先知模型。然后,我们用日期和目标变量来拟合我们的 Prophet 模型。

jh = df.rename(columns={'Date': 'ds', 'PTS': 'y'})
jh_model = Prophet(interval_width=0.95)
jh_model.fit(jh)

为了预测值,我们使用make_future_dataframe函数,指定周期数,频率为‘MS’,这是乘季节性。
然后我们为预测创建 matplotlib 图。代码下面的图像向您展示了输出。

jh_forecast = jh_model.make_future_dataframe(periods=36, freq='MS')
jh_forecast = jh_model.predict(jh_forecast)plt.figure(figsize=(18, 6))
jh_model.plot(jh_forecast, xlabel = 'Date', ylabel = 'PTS')
plt.title('James Harden Points')

|| VII ||比较多个预测

现在,如果我想将詹姆斯·哈登的预测与扬尼斯·阿德托昆博、勒布朗·詹姆斯和科怀·伦纳德进行比较,会怎么样呢?

为此,我将所有的预处理放在一个函数中,这样我就可以预处理数据,而不用重复代码行。下面,我提供了包含所需功能的要点。

一旦你处理了数据,我们就可以开始合并所有的帧,并绘制成如下图。

harden = harden.rename(columns={'Date': 'ds', 'PTS': 'y'})
jh_model = Prophet(interval_width=0.95)
jh_model.fit(harden)lebron = lebron.rename(columns={'Date': 'ds', 'PTS': 'y'})
lj_model = Prophet(interval_width=0.95)
lj_model.fit(lebron)giannis = giannis.rename(columns={'Date': 'ds', 'PTS': 'y'})
ga_model = Prophet(interval_width=0.95)
ga_model.fit(giannis)kawhi = kawhi.rename(columns={'Date': 'ds', 'PTS': 'y'})
kl_model = Prophet(interval_width=0.95)
kl_model.fit(kawhi)jh_forecast = jh_model.make_future_dataframe(periods=36, freq='MS')
jh_forecast = jh_model.predict(jh_forecast)
lj_forecast = lj_model.make_future_dataframe(periods=36, freq='MS')
lj_forecast = lj_model.predict(lj_forecast)
ga_forecast = ga_model.make_future_dataframe(periods=36, freq='MS')
ga_forecast = ga_model.predict(ga_forecast)
kl_forecast = kl_model.make_future_dataframe(periods=36, freq='MS')
kl_forecast = kl_model.predict(kl_forecast)hardens = ['harden_%s' % column for column in jh_forecast.columns]
lebrons = ['lebron_%s' % column for column in lj_forecast.columns]
kawhis = ['kawhi_%s' % column for column in kl_forecast.columns]
gianniss = ['giannis_%s' % column for column in ga_forecast.columns]merge_jh_forecast = jh_forecast.copy()
merge_lj_forecast = lj_forecast.copy()
merge_kl_forecast = kl_forecast.copy()
merge_ga_forecast = ga_forecast.copy()merge_jh_forecast.columns = hardens
merge_lj_forecast.columns = lebrons
merge_kl_forecast.columns = kawhis
merge_ga_forecast.columns = giannissforecast = pd.merge(merge_jh_forecast, merge_lj_forecast, 
                    how = 'inner', left_on='harden_ds', right_on='lebron_ds')
forecast = pd.merge(forecast, merge_kl_forecast, 
                    how = 'inner', left_on='lebron_ds', right_on='kawhi_ds')
forecast = pd.merge(forecast, merge_ga_forecast, 
                    how = 'inner', left_on='kawhi_ds', right_on='giannis_ds')forecast = forecast.rename(columns={'harden_ds': 'Date'})
forecast.head()plt.figure(figsize=(10, 7))
plt.plot(forecast['Date'], forecast['harden_yhat'], 'b-')
plt.plot(forecast['Date'], forecast['lebron_yhat'], 'r-')
plt.plot(forecast['Date'], forecast['kawhi_yhat'], 'g-')
plt.plot(forecast['Date'], forecast['giannis_yhat'], 'y-')
plt.legend(['Harden', 'Lebron', 'Kawhi', 'Giannis'])
plt.xlabel('Date')
plt.ylabel('Points')
plt.title('Harden vs LeBron vs Giannis vs Kawhi');
plt.show()

最终输出应该如下所示:

看起来詹姆斯·哈登场均得分超过了所有人,尽管詹尼斯有一些季节性高峰(也许他在周五表现不错)。下一次,我可能会写另一个教程,比较更多的球员与更多的特殊性。如果你有任何反馈/想法,请在评论中告诉我。

感谢你的阅读!希望你学到了有用的东西。关注我,了解更多关于数据科学的内容!

学习数据科学的最快方法

原文:https://towardsdatascience.com/the-fastest-way-to-learn-data-science-6b0a648663bb?source=collection_archive---------4-----------------------

这不是你知道什么的问题,而是你能做什么的问题

Photo by Tim Mossholder on Unsplash

当我第一次开始在媒体上写关于数据科学的博客时,我写了一系列文章,描述了一个学习数据科学的完整路线图。我在很大程度上自学了数据科学,在过去的几年里,通过反复试验,我找到了一些快速有效学习的好方法。我是一个讲求效率的人,当我试图实现任何目标时,我会尽可能找到最快的路线。在接下来的帖子中,我将分享我的顶级技巧,以加速你在数据科学或其他许多学科的学习。

有你非常关心的目标

为了保持学习的动力,你需要你非常关心的目标。我非常热爱数据科学,我的目标是成为一名数据科学家,但这不是我的主要动力。我想用数据以积极的方式影响我周围的世界。所以我的主要驱动力是能够用数据科学做有影响力的事情。这深深地引起了我的共鸣,也是推动我学习前进的最重要的事情。你需要找到你真正热爱的事情,并围绕它设定你的目标。永远记住它们,经常回顾它们,这将帮助你保持敏锐的注意力,快速前进。

而是你能做什么

这就引出了我的下一个观点,我对此深有感触,这不是你知道什么的问题,而是你能做什么的问题。数据科学是一门非常宽泛的学科,你永远不可能无所不知。学习每一个模型背后的理论或者你可能会用到的所有数学很容易迷失。不过,关键是要专注于学习你需要什么,以便能够用数据科学做实际的事情。因此,用一个广泛使用的库直接构建一个机器学习模型是很好的。理论可以以后再学。一旦你做好了某样东西并让它运转起来,你天生的好奇心会引导你去理解它背后的更多理论。

想法除非付诸实施,否则一文不值,德里克·西弗斯

如果你想成为一名在企业工作的数据科学家,这一点尤其适用。在商业中,价值与努力是最重要的,因此能够找到构建和部署模型的最有效的途径是极其重要的。例如,在商业中,你知道高等微积分的所有知识并不重要。重要的是你能在合理的时间框架内建立一个好的模型,当然也要知道足够的数学知识来评估、理解和提高性能。

路线图月度回顾

当我想加快我在数据科学方面的学习时,我创建了一个我需要掌握的技能路线图。在这个列表旁边,我给自己打了一个等级,大致分为:从未用过、初级、中级、高级。每个月初,我会给自己设定一些需要关注的技能。这意味着只要我有一点空闲时间,我就不必考虑做什么。我只需要从这个列表中选择一些东西,然后开始工作。我立刻知道该关注什么。

每个月底,我会根据每项技能给自己打分。这给了我接下来需要开发什么的想法。但也是一个有用的提醒,提醒我每个月都取得了多大的进步。

你不必完成 MOOC 的

我在实践中学习得最好,并且发现基于视频的课程对我来说不是特别好。这些大型课程中的绝大多数都是基于视频讲座的。我涉猎了 MOOC(大规模开放在线课程),在我觉得有必要掌握一个概念的地方观看视频(有时解释一下会有帮助)。然而,我没有完成许多 MOOC。相反,我专注于学习新技能,并将它们快速应用到数据集或数据科学场景中。我在这里的观点是不要太执着于完成每一项技能的全部课程,学习足够的知识来做一些实际的事情,建造一些东西,然后学习它们为什么工作。

竞争

我发现数据科学竞赛是衡量我的表现的一个很好的资源,特别是在学习机器学习方面。你可以在两个主要网站上竞争 KaggleAnalytics Vidhya 。两者都有丰富的数据集,后者通常对初学者来说更有用。总有一些带有排行榜的公开比赛,你可以在那里建立模型并提交它们来找出你的排名。这对于学习评估机器学习模型的性能特别有用。这不仅仅是试图爬得更高,而是“我对模型分数的解释正确吗?”以及“我如何提高我的模型分数?”。

也关注软技能

对于数据科学家来说,技能并不是唯一重要的事情。数据科学可能很难你可能需要向非技术同事解释一个模型,说服董事会投资一个项目,在建立实际模型之前花大量时间清理数据。你需要毅力和韧性。出色的沟通技巧。自信。我在学习这些技能的同时,也在继续学习这些技能。如果你同时努力提高这些素质,它们不仅能让你成为更好的数据科学家,还能让你成为更好的学习者。

一开始,当我开始学习数据科学时,我花了相当多的时间做一些我提到的不要做的事情。例如,我花时间完成统计学和数学的视频课程,认为我需要在建立任何模型之前完成这些。只是这些概念直到我实际上在构建某个东西的过程中才被完全理解。我已经列出了一些加快学习的技巧,但本质上,这些都等同于同一件事。学够了开始造东西,学多了造更好的东西,重复。

学习编码最快的方法?投资于你的数字

原文:https://towardsdatascience.com/the-fastest-way-to-learn-to-code-be-invested-in-your-numbers-ccb24d55d856?source=collection_archive---------28-----------------------

通过解释对你重要的数字来学习编程。

Photo by NordWood Themes on Unsplash

好奇心是人类的普遍特征。每个人都会问问题。每个人都有兴趣。每个人都想更多地了解世界的运作方式——不一定是为了任何个人利益,只是想更多地了解我们生活的这个世界。我们都对自己不了解的事物着迷,未解之谜就像一颗松动的牙齿一样困扰着我们。

现在,像大多数人一样,我是一个非常好奇的人。我有疑问——那个人为什么要这么做?为什么这种鸟要灭绝了?

有时候我父母知道。有时候谷歌知道。有时候没人知道答案。你是做什么的?当你的正常资源都不能告诉你为什么事情是这样的时候,你能做什么?

你给自己工具来回答这个问题。这会让你进入编码领域。

我不止一次尝试学习编码。

我曾试图为我工作过的一份工作学习 SQL。进展很慢,因为我不在乎这份工作。

我在大学被教导 R。他们用木材密度和车速来教我们统计学和 R 编程的基础知识。我记住了我需要的东西,在考试时反复背诵,并尽可能快地从脑海中抹去。

我甚至参加了免费代码营课程——我知道编程是我感兴趣的许多职业道路的重要组成部分,我渴望让自己成为更有竞争力的候选人。但是在花了一两个晚上尝试之后,我失去了兴趣。为什么?

我需要想要学习代码——不是为了我的工作,不是为了我的学校,不是为了我的职业道路,而是为了我自己。

编码是一项很难掌握的技能。

有可以免费教你基础的课程和课程。即使你没有经验,你也可以参加编程课程,掌握一些窍门。

坚持下去?那是困难的部分。

如果你真的想学习编码,寻找一个你真正感兴趣的问题。对我来说,我很好奇,想知道大型动物是否比小型动物灭绝得更快——比如渡渡鸟或猛犸象。我被这个想法迷住了,对结果很好奇。我回答这个问题所需的所有数据都是免费提供的。唯一阻止我的是什么?

我没有编码知识。

在一天结束的时候,这就是促使我拿起一本 R 语言编码手册的原因,也是促使我坚持下去的原因,日复一日,在 R 语言编码方面变得越来越好、越来越快、越来越聪明。

我的好奇心克服了编码障碍。

我不会撒谎,学习曲线很陡。我甚至不记得如何在 R 中导入数据,或者如何清理数据的基本知识,更不用说在其上进行分析和可视化呈现了。

但每当我遇到绊脚石时,我都会被我真的关心我的问题这一事实所鼓舞。我非常好奇。这给了我解决任何问题的动力。

我学会了谷歌搜索——这听起来很傻,但学会在搜索栏中输入正确的词,学会哪些资源我可以信任,这些都需要时间。一旦我开始迈出第一步,这些知识会让我走得更快。

在我之前停下来的每一点上,我都被想知道的需求所支撑。我不是被我的老板或我的成绩或其他任何东西驱使的——只是我自己贪得无厌的想知道答案的需要。

学习编码成了它自己的奖励。

我现在喜欢编程是因为它很有效率。我可以写一个完全按照我说的去做的脚本。当我找到导致错误的原因并成功修复它时,那种感觉非常棒。

但比这更令人惊奇的是得到了答案。这也是我不断进步的动力。

我第一次能够把我辛辛苦苦收集和整理的一些数据绘制成哪怕是一个简单的散点图,我的整个身体都感到一阵激动。我回答了一个问题,看了一些数字,输入了一些代码,然后回答了我的问题。

它立即产生了另一个,一个我没有编码知识去做的。但是因为我刚刚克服了挑战,并且我已经看到学习一点 R 代码就足以给我这个惊人的、美丽的、满足好奇心的情节,所以我想要更多。我渴望学习更多的代码。

一旦你开始学习编码,就没有止境。

当我们需要解决问题时,我们都有一个工具箱。我们有一个外部支持网络,我们所依赖的资源,以及我们发展的技能,让我们不断前进。失败时坚持下去的韧性。困难时坚持不懈的决心。编码进入这个工具箱,你将开始依靠它来回答你的问题。

一旦你学会了一点代码,一旦你迈出了回答自己问题的第一步,你会发现你有更多。然后你会求助于代码来解决它们。

当我想知道帖子的长度是否影响其受欢迎程度时?当我很想知道一天中的时间是否会影响我的 Instagram 图片的表现时,我会转向 r。我开始编码。如果我对运动如何影响我的减肥感兴趣?我走到我的电脑前,启动 r。

你所需要的,开始的唯一推动力就是你自己的好奇心。找到你关心的数字。找出你不知道答案的问题。理解是什么驱动了你的好奇心,你会在编码中找到答案。

在这里注册 来获得我的 Medium 初学者工具包——你开始在 Medium 上写作赚钱所需的一切,包括一份可打印的第一周每日指南。

数据管道的最后一步

原文:https://towardsdatascience.com/the-final-step-of-a-data-pipeline-c41ddf75000f?source=collection_archive---------31-----------------------

名称又能代表什么呢我们称之为玫瑰的东西,换个名字,闻起来还是一样的香;
——威廉·莎士比亚(罗密欧与朱丽叶)

虽然在谈到真爱时,诗人可能是对的:罗密欧或吉格尼斯,这个名字对朱丽叶来说并不重要,但我发现这个名字在谈到公司的人对 的事情的反应时至关重要。由于数据团队是公司内部信息的旗手,因此数据团队以人们能够吸收的方式命名数字就变得更加重要。消费它。使用它。提供信息/数据只是工作的前半部分。众所周知的“数据管道”是不完整的,除非它将数据输入员工的大脑!

我将谈论三个看似不相关的事件:一个可能与我们大多数人有关,一个与我的教育有关,一个与我的工作有关。我将从每个人那里提取想法,设计一个在技术上和认知上都可以跨越人类的数据基础设施。

第 1 集 —词语、想法和交流

我清楚地记得,当我第一次被告知“你要开始上学了”的那一天
“什么学校?”
“人们去那里学习。去学习新的东西。”
“但是我不需要,我知道我需要知道的!”我反驳道,流露出自信,因为我最*已经掌握了在我们的电视上换频道的艺术。顺便说一句,这并不是一件容易的事情——你必须轻摇调谐轮才能到达频道的频段,然后再多点才能获得完美接收的最佳位置。
阿哈,背 ABCD 然后。”
“什么 ABCD?”

字母表之后是单词。在上述事件发生几个月或者一年后的某一天,当我从学校回到家时,我被问及一个*常的问题:“那么,你今天在学校学到了什么?”被我妈妈。我兴奋不已,决心炫耀我最新获得的知识,回答“。我今天学习了 have。拼写为 H-A-V-E,”她笑着问,“太好了,但是你知道‘have’是什么意思吗?”我说“不行”。“那你怎么用呢?”“我知道一个含有‘have’的句子——我有一支铅笔”我鹦鹉学舌,但当时我并不理解。

对 4 岁的我来说,“有”是个复杂的词。尽管我能在学校教的同一天记住它的拼写,但它所表达的意思很难理解:“拥有、拥有或持有。”一旦我开始使用它,这些概念就变得熟悉了。渐渐地,我的思维进化了,这个词成了我思想语言的一部分——我内心独白的语言。我最终开始依靠中的‘have’来理解后来出现的其他单词。学习很多没有‘have’的,对今天的我来说是不可想象的。

词语是交流思想的方式。简单的单词可以连接在一起形成句子,传达越来越复杂的思想。随着词汇获得复杂的单词,更多的信息可以用更少的单词来表示。

第 2 集——抽象工程

当我走进教室时,马扎里教授已经开始讲话了。投影仪上有一张幻灯片,概括了上一次演讲中发生的事情——他在那次演讲中基本上震撼了我们所有人的心灵,我诅咒自己错过了部分概述。这门课程是“ESC 102-电子学导论”,教授给 IITK 的一年级学生。Mazhari 教授一直在教我们运算放大器,在之前的讲座中,他使用反馈环路创建了一种安排,并证明了无论我们给它输入什么信号,电路都会输出该信号的积分。然后他创造了另一种排列,这次输出是输入的微分。加减法在之前的一周已经讲过了。他曾承诺,我们将在这堂课上看到指数和对数运算放大器配置。我们做到了。

讲座结束时,教授面对全班,微笑着说:“现在你知道如何加、减、乘、除、积分、微分、取对数或指数。通过一个电路。全班都非常惊讶。这只是我们的第一学期。“你看到了吗?现在你可以通过组合这些元素来求解微分方程。“我在那一行输了。

我意识到,这个由导线、电容和电感组成的特殊集合体,可以称之为“积分”或“微分”,这一点意义深远。

这些都是在模拟世界中探索的,但很快数字时代也来临了。我们研究了与非门和或非门的设计。然后我们学习了如何创建简单的电路来进行位运算。数百张真值表之后,课程和学期结束了。在这门课令人难忘的最后一讲中,Mazhari 教授有一张幻灯片,上面有一幅极其详细复杂的电路图。

他问道:“我们已经学完了这门课。你知道解决这些电路的所有知识,包括数字和模拟电路。告诉我,你们中有多少人认为自己能解决这个问题?”全班都笑了。他继续说道:“如果你现在的反应是,想象一下两个月后会发生什么。”沉默了几秒钟后,他绕了一圈。然后再多几个。我们最终明白了他的意思——他在强调我们已经解决的组件。

我们转到下一张幻灯片,标题是“本课程的收获”。“我知道,学期结束几周后,你们中 90%的人将无法解决我们在课堂上讨论过的任何问题。这绝对没问题。我需要你从这门课中学到的是——抽象 。你解决问题,然后把它们抽象出来,用解决方案去解决更大、更复杂的问题。你的抽象是你的积木,你的砖块。如果你没有好的质量,你最终会制造出一个伪劣产品。”他切换回有巨大电路图的幻灯片。“看这是一个真实的电路图。肯定有人做到了!但是我们人类创造这种东西的唯一可能的方法是通过正确的抽象。我们创建简单的模块,并用它们来创建更多的模块。使用第一代模块的新模块仍然很简单,因为复杂性被第一代模块隐藏了。这就是工程。”**

第 3 集——现实世界问题

我现在为萨夫工作。印度最大的音乐流媒体服务。

在 Saavn,像任何其他数字公司一样(尽管我听说最*甚至麦当劳-巴基斯坦也在这么做),我们总是在看数据。每日活跃用户、流和应用安装是我们的主食早餐。

在设计我们的数据基础设施时,我们特别注意确保我们的抽象是正确的。我们看到我们的大多数统计(或者度量,如果你喜欢的话)本质上都是时间序列。因此,我们设计了一个通用框架来处理时间序列数据,并通过 API 公开它。然后,我们使用这些 API 编写了我们自己的 BI 仪表板,以显示各种能够对数据进行切片和切块的可视化效果——所有这些都是以通用方式进行的。

一个 Stat 是我们堆栈中的一等公民——它是一个活生生的东西。每个 Stat 都可以告诉您很多关于它自己的信息——它拥有的维度、每个维度可以取的值、它拥有数据的时间范围、它支持的时间粒度(想想小时、天、周或月)、其中的异常。对于数据团队来说,这些数据现在已经成为一种商品。就像衣服或者手机对于亚马逊一样。我们只担心生成(或接收)新的统计数据,并确保它们实现我们已经建立的 timeseries 接口。

当我们第一次发布我们的数据仪表板时,我认为我们在公司数据驱动方面达到了一个拐点:人们现在终于有了一个自助服务系统!公司的整个历史,它的整个数据存储库由每个人支配。但我完全不对。

我们已经解决了问题的可用性部分。对于一个真正成为数据驱动的组织来说,数据可用性是必要的,员工对数据的吸收能力也是必要的。****

任何公司内的数据团队都需要解决除可用性之外的吸收性问题。在我看来,遵循 talisman 为公司数据驱动奠定了必要的基础。

  • 让利益相关者相信,正确使用数据会对他们有所帮助。
    数据团队成员还必须是兼职的布道者或销售人员。
  • 让他们明白这意味着什么——下面将详细介绍。(这是这篇文章背后的中心思想)
  • 帮助他们客观地看待数字,而不是挑选那些支持他们努力的数字。

增加对公司内部数据的理解——或者用花哨的术语来说是“认知尺度”( cognitive scaling )——是一个很难解决的问题。很明显。

为了解决这个难题,我开始寻找线索,看看哪些有用,哪些没用。我观察了 Saavn 的员工是如何消费和交流数据的。我发现,我们从工程中抽象出来的统计数据已经渗透到每个人的意识中。人们使用我们给 Stats 起的名字进行交流,甚至在特定情况下使用扩展

扩展——由两个或多个现有指标组合而成的二阶指标。

然而,并不是所有的统计数据都被同等的采用和接受。很明显,有更多的事情使他们有所不同。

“播放列表删除率”就是这样一个统计数据,尽管它很有用,但效果并不好。我们煞费苦心地把它放在一起,用来衡量播放列表的好坏——我们看到用户如何在播放列表中的歌曲之间减少。没有观想就很难理解。此外,编辑人员需要在不同的播放列表之间以及一段时间内对给定的播放列表进行比较,这在视觉上是一场噩梦。

一旦我们用下降图的标准化面积(本质上只是一个百分比)来代替“播放列表下降率”,事情就发生了彻底的转变,我们将其命名为粘性。这在编辑心中创造了完美的抽象概念——他们不再关心下拉列表的复杂性,而是开始考虑增加播放列表“粘性”的方法。他们还开始讨论 Android 与 iOS 的粘性,印度与世界其他地区的粘性,AR Rahman 播放列表与 Badshah 播放列表的粘性。真的是从那里开花的。

我们从软件和认知世界中可扩展的统计配方中遗漏了以下几点:

  • 如果可能的话,它们应该很容易被解读为——一个在刻度上上升或下降的数字。
  • 名字应该是直观的——能成为人们词汇的一部分是很重要的。抽象名词效果很好。
  • 它应该在时间和空间上保持一致——允许人们比较不同的地区、时期、*台等。使用统计数据。对统计转换的限制可能会在短期内节省开发人员的时间,但从长远来看成本更高,因为每当人们需要灵活性时,限制性的统计会增加数据分析师的临时请求负载。

我也注意到了这种现象在完全不同的场景中的表现。这一次是在纯软件工程领域——是关于一个微服务的命名。我的一个朋友在印度一家非常受欢迎的电子商务公司工作。他负责为他们创建搜索微服务,已经做了两个多月了。但是有一天,在和那家公司的首席技术官聊天时,他对服务的看法完全改变了。CTO 没有称之为“搜索”服务,而是称之为“搜索和发现”服务。对我的朋友来说,这打开了新的维度。给定查询结果的相关性和自动完成的低延迟曾经是他最关心的问题。但这次谈话之后,他明白了发现新产品也是他的服务必须肩负的责任。这在很多方面改变了实现。微服务角色的正确抽象,包括它的名字,在这里起了很大的作用。

公司就像部落。在部落里,叙事很重要。如果你想让你的数字真正有用的话,用一种能渗透到人们的叙述中的方式来命名它们。

我对每个数据请求的第一个问题是

原文:https://towardsdatascience.com/the-first-question-i-have-for-every-data-request-8f836070368f?source=collection_archive---------14-----------------------

以及我如何利用它与跨职能团队建立伙伴关系

这是关于在一家公司从头开始建立一种数据驱动的文化,在这种情况下,是通过建立跨团队的合作关系。在与我相同的生活背景下,我在初创公司岗位 上成功地担任了一名数据 科学家。

世界上很少有绝对的事情,死亡、税收和肮脏的数据集很容易浮现在脑海中,但当涉及到研究人员、数据分析师和数据科学家等支持职位的内部专家时,我想再提一个:当有人向他们提出请求时他们的反应。

“告诉我你想解决什么问题,而不是你认为你想要的解决方案。”—我们所有人,所有时间

Lofty Cat, totally not judging anyone at all

大多数时候,特别是如果没有很多跨职能的经验,人们会过来提出具体的分析或数据要求,他们相信这些分析或数据会帮助他们做他们正在做的事情。通常它被表述为“小数据请求”或“只是一两张图表”。他们的要求往往没有什么背景。

这种行为甚至不仅限于数据领域,我甚至发现自己也在为维修人员和工程师做类似的事情。我们都容易受到这种影响。

偶尔发生这种事没什么大不了的。但当这种情况发生足够多次时,就让人抓狂了。你经常会发现身经百战的研究人员对此看得太多了,并对此有强烈的感受。

尽管如此,记住人们已经尽力了,所以原谅他们。我很确定他们这样做不是出于恶意或自负。他们通常试图尊重你的时间,或者在向你寻求帮助之前已经考虑了他们的问题很多,他们的请求反映了这种想法。偶尔,这是因为他们听说过一种技术或分析,并对此过度兴奋,而没有理解所有的利弊。

“那么,你打算做什么决定?”

面对这种情况,我通常会问一些不同的问题,原因有二。

首先,在一个行业环境中,几乎每一个问题都可以表述为一个或多个需要做出的决定,所以问这个问题并不合适。决策可以是具体的,比如在一组选项中选择,也可以是更抽象的,比如“它将有助于通知下一个版本的设计”。这也让他们更多地思考自己想做什么。因为我总是鼓励人们尽早进行数据对话(过早总比过晚好),所以想法不完全成熟是意料之中的。

其次,更重要的是,它让他们更多地考虑合作的伙伴关系模式,而不是简单的“询问和接受报告”模式。这是一个你需要每个人都习惯的重要习惯——带着问题来,而不是提出解决方案。

开始对话

询问他们的实际问题陈述和决策点的全部意义在于,这可以引发一场对话。对话是好的。这是您了解他们在做什么的机会,也是他们更好地了解如何使用数据的机会。长期的伙伴关系不会在一天之内发生,这是他们如何开始。

他们的起始问题应该能够转化为某种假设,我们可以使用 research toolbox 进行测试,决策框定了对话和您的未来建议。通常只需要轻轻一推。"人们点击这个按钮多少次?"只是一个上下文无关的请求,但可以很容易地变成“我们认为没有人使用那个删除按钮,因为他们使用键盘删除,我们想删除这个按钮”。现在你有足够的上下文来检查人们是否真的更多地使用键盘,或者证明该按钮是否被特定的一小部分用户出于可访问性的原因而使用。

在那里,你可以和他们一起找出可以回答他们问题的数据。当一些数据丢失时,您可以通过实现工具来获得他们真正想要的数据(例如,我们应该记录键盘快捷键吗?).同时,你可能知道一个已经存在的代理方法,它可能产生一个“足够好”的结果(例如,没有点击按钮的删除可能足够接*)。永远不要假设一个精确的答案是必要的,甚至是想要的,一个*似值可能同样有用(尤其是快速的)。

接下来,你可以和他们一起理解你将要使用的方法。向人们传授方法的潜力和局限性通常是个好主意,即使你不得不掩饰深层的技术细节。原因是,如果人们在高层次上理解事物是如何工作的,当你后来告诉他们“数据让你这样说,但不是那样说”时,他们就能更好地理解。

然后,继续对话

最后,一旦完成了初步分析,您就可以通过让利益相关者一起回顾调查结果、回答问题并帮助头脑风暴后续步骤来加强合作关系。

就像几乎每篇学术论文都以“还需要做更多的研究”结尾一样,总是有更多的问题可以回答。在你的帮助下,由整个团队来决定他们是否有足够的信心继续下去。继续迭代!

重复直到它成为一种习惯

随着时间的推移,随着这些人反复经历这一过程,每个人都应该开始掌握其中的诀窍,并自动向您提出更多问题,并让您参与合作,在做出重大决定之前探索问题。当这种情况发生时,你会知道你已经在数据驱动的决策文化中取得了一个好的点。

每个数据科学家都应该知道的 5 种离散分布

原文:https://towardsdatascience.com/the-five-discrete-distributions-every-statistician-should-know-131400f77782?source=collection_archive---------7-----------------------

Photo by Alex Chambers on Unsplash

故事、证据和直觉

分布在每个数据科学家的生活中扮演着重要的角色。

现在,从非统计学的背景来看,分布总是给我一种神秘的感觉。

事实是他们有很多。

那么我应该知道哪些呢?我如何认识和理解他们?

这篇文章是关于一些你需要知道的最常用的离散分布以及一些直觉和证明。

1.二项分布

这可能是所有离散分布中最简单的,也可能是最有用的。

故事:掷硬币,概率为 p,正面朝上。

用在哪里?: 我们可以把二分类目标看作一个伯努利 RV。

伯努利分布的 PMF 由下式给出:

伯努利分布的 CDF 由下式给出:

期望值:

差异:

正如我们将在下面看到的,伯努利分布与许多分布密切相关。

2.二项式分布:

统计学家工具包中最基本的分布之一。这个分布的参数是 n(试验次数)和 p(成功概率)。

故事:在 n 次试验中获得 k 次成功的概率

用在哪里?: 假设我们在一个骨灰盒里有 n 个鸡蛋。打破鸡蛋的概率是 p。骨灰盒中打破鸡蛋的数量是二项分布的。

二项式分布的 PMF 由下式给出:

根据我们的故事,这是 k 个灯泡坏了的概率。

二项式分布的 CDF 由下式给出:

预期值:

第一种解决方案:

解决这个问题的更好方法是:

x 是 n 个指示随机变量的和,其中每个 I 是伯努利随机变量。

差异:

我们也可以使用方差来使用指标随机变量,因为每个指标随机变量都是独立的。

3.几何分布:

这个分布的参数是 p(成功的概率)。

故事:投掷概率为 p 的硬币时,第一次成功(正面)前的失败次数。

用在哪里: 假设你正在进行一场考试,你获得通过的概率由 p 给出,你在清除考试之前将会出现的失败次数是几何分布的。

几何分布的 PMF 由下式给出:

几何分布的 CDF 由下式给出:

预期值:

差异:

因此,

示例:

一名医生正在为一名新诊断的病人寻找一种抗抑郁药。假设,在可用的抗抑郁药物中,任何特定药物对特定患者有效的概率是 p=0.6。发现对该患者有效的第一种药物是尝试的第一种药物、尝试的第二种药物等等的概率是多少?为了找到一种有效的药物,预计将尝试多少种药物?

为找到有效药物而尝试的预期药物数量=

q/p = .4/.6 =.67

4.负二项分布:

这个分布的参数是 p(成功概率)和 r(成功次数)。

故事:第 rth 次成功前独立伯努利(p)试验的次失败

用在哪里: 你需要向不同的房子出售 r 糖果条。你卖出一块糖的概率由 p 给出。在获得 r 个成功之前你必须忍受的失败次数是负二项式分布。

负二项分布的 PMF 由下式给出:

r 次成功,k 次失败,最后一次尝试必须成功:

预期值:

负二项式 RV 可以表述为 r 个几何 RV 之和,因为几何分布就是第一次成功之前的失败次数。

因此,

差异:

因为 r 个几何 RVs 是独立的。

示例:

帕特被要求去卖糖果为六年级的实地考察筹款。这个社区有三十栋房子,帕特应该在卖出五块糖果后才回家。于是这个孩子挨家挨户地卖糖果。在每栋房子里,有 0.4 的概率卖出一块糖,有 0.6 的概率什么也卖不出去。第 n 家卖完最后一块糖的概率有多大?

这里,r = 5;k = n — r

在第 n 家卖完最后一块糖的概率=

5.泊松分布:

这个分布的参数是λ,速率参数。

动机:这个发行版本身没有故事,但有使用这个发行版的动机。 泊松分布通常用于我们对大量试验的成功率进行计数的应用中,其中每次试验的成功率较低。

例如,泊松分布是计算一小时内给你发邮件的人数的一个很好的起点。你的通讯录里有很多人,他们中的任何一个给你发邮件的可能性都很小。

泊松分布的 PMF 由下式给出:

预期值:

差异:

示例:

如果电力故障按照泊松分布发生,*均每 20 周发生 3 次故障,计算在特定的一周内不会发生一次以上故障的概率?

概率= P(X = 0)+P(X = 1)= 1

Seaborn 图和函数

在这里,我将使用 Pythons 内置函数生成我们刚刚讨论过的离散分布的 PMF。关于上层函数的更多细节,请参见我之前的帖子— 用 SeaBorn 创建基本的图形可视化。此外,请查看以下功能的文档指南

# Binomial :
from scipy.stats import binom
n=30
p=0.5
k = range(0,n)
pmf = binom.pmf(k, n, p)
chart_creator(k,pmf,"Binomial PMF")

# Geometric :
from scipy.stats import geom
n=30
p=0.5
k = range(0,n)
# -1 here is the location parameter for generating the PMF we want.
pmf = geom.pmf(k, p,-1)
chart_creator(k,pmf,"Geometric PMF")

# Negative Binomial :
from scipy.stats import nbinom
r=5 # number of successes
p=0.5 # probability of Success
k = range(0,25) # number of failures
# -1 here is the location parameter for generating the PMF we want.
pmf = nbinom.pmf(k, r, p)
chart_creator(k,pmf,"Nbinom PMF")

#Poisson
from scipy.stats import poisson
lamb = .3 # Rate
k = range(0,5)
pmf = poisson.pmf(k, lamb)
chart_creator(k,pmf,"Poisson PMF")

您还可以尝试使用不同于我所使用的参数来可视化分布。

结论

理解分布对于任何数据科学家来说都是至关重要的。

它们在生活中经常出现,理解它们会让你的生活更轻松,因为你可以通过使用一个简单的等式很快找到解决方案。

在本文中,我讨论了一些基本的离散发行版,并通过一个故事来支持它们。

这篇文章的格式可能看起来有点烦人,但是 Medium 不支持 latex,所以在这里不能做太多。

我仍然希望这能帮助你更好地理解。

了解他们的最有帮助的方法之一是 Joe Blitzstein 的 Stat110 课程和他的

你也可以看看这个 Coursera 课程。

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

世界范围的难民潮

原文:https://towardsdatascience.com/the-flow-of-refugees-b983e5e34d72?source=collection_archive---------11-----------------------

下面的弦图显示了难民从产生最多难民的十个国家向接纳最多难民的十个国家(加上美国)迁移的路径。在阅读可视化的同时,思考哪些难民群体在很大程度上被媒体忽视,哪些被给予最多关注,以及这与大多数难民实际上来自哪里并找到避难所相比如何。在本文的后面,同样的图表在过去五年中的每一年都重复出现,以促进对世界范围内难民流动趋势的更好理解。

这张弦图的左边是最常见的难民来源国。右边是最常见的难民接收国。每个国家的弧形区域的大小对应于来自该国或被该国接纳的难民人数。箭头代表难民从原籍国到他们现在作为难民居住的国家的实际旅程。

值得注意的是,这种可视化是基于每个国家离开和生活的难民的原始数量,而不是基于每个国家的人口数量。例如,上图显示,德国收容的难民比黎巴嫩多得多,这是事实,但黎巴嫩每 1 000 名居民收容 208 名难民,而德国每 1 000 名居民仅收容 3 名难民。

除了德国和埃塞俄比亚之外,大多数主要收容国主要收容来自单一来源国的难民。这与美国这样的国家大相径庭,在美国,没有一个单一的国籍主宰着被收容的难民。相比之下,来自一个原籍国的难民往往大量前往几个国家,而不是绝大多数前往任何一个东道国。

请注意,自 2014 年以来,全球难民人数逐年大幅增加。这意味着,即使一个国家接收的全球难民总数逐年保持不变,该国接收的难民数量实际上却在增加,因为难民池已经变大。

这些图表并没有表明难民在*几年中绝大多数都逃到了欧洲国家,这表明涌入欧洲国家的寻求庇护者实际上可能并不是全世界的主要危机。对难民问题的整体讨论必须将重点放在土耳其或黎巴嫩等国家,土耳其收容了大部分叙利亚难民,而黎巴嫩的人均难民密度远远高于其他任何国家。

1951 年《难民公约》对“难民”的正式定义如下:

“‘难民’一词应适用于任何人……由于有充分理由害怕因种族、宗教、国籍、某一社会团体的成员或政治见解而受到迫害,在他的国籍国之外,并且不能或由于这种害怕而不愿意接受该国的保护;或没有国籍,在他以前惯常居住的国家之外,不能或由于这种恐惧而不愿意返回该国。”(难民署,1951 年难民公约)

本文中的形象化描述仅指那些符合难民资格、目前生活在联合国难民事务高级专员(UNHCR)系统保护下的人。然而,难民的定义相对狭窄,不包括全世界数百万流离失所者。由于难民的定义是在其国籍国以外的人,这一定义不包括全世界约 4130 万境内流离失所者,他们被迫逃离家园,但仍留在本国境内。这还不包括大约 350 万寻求庇护者,他们逃离了自己的国家,但尚未被接受难民地位。1951 年《难民公约》也明确将巴勒斯坦人排除在外。相反,550 万流离失所的巴勒斯坦人属于联合国*东巴勒斯坦难民救济和工程处(*东救济工程处)的管辖范围,该组织并不寻求重新安置流离失所的巴勒斯坦人,而是在他们所在的地方为他们提供社会服务。总的来说,上述形象化的 2050 万难民只占全球流离失所人口的不到 30%。

本文所有统计数据均来自联合国难民署在 http://popstats.unhcr.org/en/time_series的数据。

你好,脸书,我的真名是胡扯。

原文:https://towardsdatascience.com/the-fluidity-of-digital-identity-on-facebook-or-not-9623f22f25af?source=collection_archive---------33-----------------------

The price of your identity to big companies is at your fingertips.

早在 2017 年,讨论的热门话题是脸书在“防止假冒、诈骗和网络钓鱼”的幌子下强制用户使用真实 ID 的严格政策。我不确定使用你的“真名”将如何保护你不被冒名顶替,事实上,这是否会给你带来风险?我们是否像奈特(2014)建议的那样,允许使用我们的个人数据来规范我们能做什么和不能做什么?

其假设是,数字身份是真实或不真实地描绘自己的某一面,其优势是与其他具有相似兴趣的人建立一个志同道合的个人或群体的网络。正如 van Dijck (2013)所解释的“从社交媒体的最早期开始……就是建立联系、促进人际联系和社区建设的工具”。因此,建立你的社交身份是个人应该控制的事情,允许用户将他们的身份与个人、职业或商业身份分开。

脸书的政策对我们向社交媒体*台提供的个人数据提出了一个至关重要的问题。为什么我们不能被允许向公司控制自己的数据?我希望能够保密我是谁,我在哪里,我在做什么,并选择定义什么应该公开。因此,当我们勾选臭名昭著的条款和条件框时,我们真的应该阅读细则。2018 年初,脸书同意剑桥分析公司(Cambridge Analytica)在未经他们同意的情况下收集 5000 万用户的个人数据,这通过识别和影响数百万选民,导致了政治游戏规则的改变。建议检查您的隐私政策是否有任何变化,有时这些变化会产生巨大的影响。

脸书和其他社交网络向雇主、潜在的浪漫约会对象和其他数字用户敞开了大门,让他们进行所谓的“社交建档”。 Evuleocha & Ugbah (2018) 解释人力资源部门和招聘人员如何使用社交网站进行工作筛选,目的是减少潜在候选人的不确定性,以实现更快的就业结果。澳大利亚的社会貌相已经到了影响公务员的地步,限制了公务员的权利,声称他们的雇佣条款与他们的公开言论有关,即使是匿名的。

别担心,这不全是坏消息。我们的千禧一代(也就是我)正在以我们使用社交媒体的方式创造社会影响。Au-Yong-Oliveira (2018) 解释说,千禧一代要求我们的领导人对他们的行为负责,期望被当作人对待。这导致千禧一代要求当权者负责,利用社交媒体和技术作为行动主义或黑客行动主义的工具,以保持这些强大机构的透明度。虽然其中一些活动不是合法进行的,但它带来了一些积极的变化(Auty 2004),如“匿名者”和山达基教会的事件(观看下面的视频)。

通过在网上放弃我们的个人数据,我们把自己置于危险之中,你怎么看?

如果你抽象出你的 R 代码,这种力量在你身上会很强

原文:https://towardsdatascience.com/the-force-is-strong-in-you-if-you-abstract-your-r-code-134ea0869c4?source=collection_archive---------20-----------------------

通过编写一个函数来分析星球大战中的角色,学习 R

任何体面的数学家或计算机程序员都会告诉你,如果一个任务被一次又一次地重复,那么它应该被做成一个函数。

这一直都是正确的,如果您仍然在一次又一次地编写重复的任务,而只是改变一两个变量——例如,如果您只是复制/粘贴代码——那么您需要立即停下来,学习如何编写函数。

但是最*的发展意味着有越来越多的动机去考虑你的代码的哪些部分可以被抽象。R 包的发展绕过了非标准的评估挑战,并通过 quosures 和相关的表达式增强了抽象能力,这意味着惊人的能力已经触手可及。

R 中的函数

先简单说一下。如果您正在进行相同的分析,但只是更改变量值,则创建函数非常有用。让我们使用dplyr中的starwars数据集。如果我们想要一个所有人类角色的列表,我们可以使用这个:

starwars_humans <- starwars %>% 
  dplyr::filter(species == "Human") %>% 
  dplyr::select(name)

这将返回 35 个字符的名称。现在,如果我们想要一个相同的列表,但是有几个其他物种,我们可以复制粘贴并更改species的值。或者我们可以编写这个函数供将来使用:

species_search <- function(x) {
  starwars %>% 
    dplyr::filter(species == x) %>% 
    dplyr::select(name)
}

现在,如果我们运行species_search("Droid"),我们会得到一个四个字符的列表,并放心地看到我们的伙伴 R2-D2 在那里。

我们当然可以扩展它,使它成为一个具有多个变量的函数,以帮助我们基于各种条件进行搜索。

利用 rlang 的特性进一步抽象搜索

上面的问题是这个功能灵活性有限。它是以这样一种方式定义的,您无法控制要过滤哪个变量。

如果我们想重新定义这个函数,让它根据我们设置的任意条件返回一个列表呢?现在,我们可以为函数设置两个参数,一个表示要过滤的列,另一个表示要过滤的值。我们可以使用rlang中的enquo函数来捕获列名,以便在dplyr::filter()中使用。像这样:

starwars_search <- function(filter, value) {

  filter_val <- rlang::enquo(filter)

  starwars %>% 
    dplyr::filter_at(vars(!!filter_val), all_vars(. == value)) %>% 
    dplyr::select(name)
}

现在,如果我们评估starwars_search(skin_color, "gold"),我们会放心地看到我们焦虑但可爱的朋友 C-3PO 回来了。

甚至进一步允许使用 purrr 的任意过滤条件

因此,即使我们采取了上述步骤,我们已经使我们的搜索功能更加抽象和强大,但它仍然有些有限。例如,它只处理一个过滤器,并且只查找与该单个值匹配的字符。

假设我们有一组列表形式的过滤器。我们可以使用purrr中的map2函数获取该列表,并将其分解为一系列 quosure 表达式,这些表达式可以作为单独的语句传递给dplyr::filter,使用一个作用于数据帧的新函数:

my_filter <- function(df, filt_list){     
  cols = as.list(names(filt_list))
  conds = filt_list
  fp <- purrr::map2(cols, conds, 
                    function(x, y) rlang::quo((!!(as.name(x))) %in% !!y))
  dplyr::filter(df, !!!fp)
}

现在,这允许我们进一步抽象我们的starwars_search函数,以接收列表中的任意一组过滤条件,并且这些条件可以被设置为匹配向量中表示的一组值中的单个值:

starwars_search <- function(filter_list) {
  starwars %>% 
    my_filter(filter_list) %>% 
    dplyr::select(name)
}

例如,现在我们可以查找所有有蓝色或棕色眼睛、是人类、来自塔图因或奥德朗的角色,使用starwars_search(list(eye_color = c("blue", “brown"), species = “Human", homeworld = c("Tatooine", “Alderaan")))将返回以下内容:

# A tibble: 10 x 1
   name               
   <chr>              
 1 Luke Skywalker     
 2 Leia Organa        
 3 Owen Lars          
 4 Beru Whitesun lars 
 5 Biggs Darklighter  
 6 Anakin Skywalker   
 7 Shmi Skywalker     
 8 Cliegg Lars        
 9 Bail Prestor Organa
10 Raymus Antilles

现在你已经准备好释放原力的全部力量,通过开发抽象你的dplyr代码的多个元素的函数。例如,这里有一个函数可以让你找到你想要的某些星球大战角色的任何分组*均值:

starwars_average <- function(mean_col, grp, filter_list) { calc_var <- rlang::enquo(mean_col)
  grp_var <- rlang::enquo(grp)

  starwars %>% 
    my_filter(filter_list) %>% 
    dplyr::group_by(!!grp_var) %>% 
    summarise(mean = mean(!!calc_var, na.rm = TRUE))
}

因此,如果您想根据人类的家乡找到所有人类的*均身高,可以使用starwars_average(height, homeworld, list(species = "Human"))来完成,它将返回这个表:

# A tibble: 16 x 2
   homeworld     mean
   <chr>        <dbl>
 1 Alderaan      176.
 2 Bespin        175 
 3 Bestine IV    180 
 4 Chandrila     150 
 5 Concord Dawn  183 
 6 Corellia      175 
 7 Coruscant     168.
 8 Eriadu        180 
 9 Haruun Kal    188 
10 Kamino        183 
11 Naboo         168.
12 Serenno       193 
13 Socorro       177 
14 Stewjon       182 
15 Tatooine      179.
16 <NA>          193

虽然这是一个有点琐碎的例子,但我希望这能帮助您更好地理解当今 R 函数的潜力。当你审视自己的日常工作时,你会发现有机会将一些最常见的操作抽象成一些功能,从而节省你大量的时间和精力。实际上,我在这里展示的只是可能性的冰山一角。

最初我是一名纯粹的数学家,后来我成为了一名心理计量学家和数据科学家。我热衷于将所有这些学科的严谨性应用到复杂的人的问题上。我也是一个编码极客和日本 RPG 的超级粉丝。在LinkedInTwitter上找我。

非常感谢我团队的 Sai Im,他用函数式编程的魔法启发了我们的一些想法。

生活在云端的 AI 诗人艺术家 Auria Kathi 的充实之旅

原文:https://towardsdatascience.com/the-fulfilling-journey-of-auria-kathi-the-ai-poet-artist-living-in-the-clouds-3237f6b3a605?source=collection_archive---------31-----------------------

2019 年 1 月 1 日,我们( Fabin Rasheed 和我)向世界介绍了一个我们已经工作了几个月的兼职项目。一个人造的诗人艺术家,他并不实际存在于这个世界上,但他写了一首诗,根据这首诗画了一幅抽象的艺术,最后根据情感给艺术上色。

我们称“她”为 Auria Kathi——“艾俳句艺术”的变位词。

奥瑞亚有一张人工的脸以及她的人工诗歌和艺术。关于奥瑞亚的一切都是用人工神经网络构建的。2019 年的每一天,奥瑞亚都会在 InstagramTwitter 上发布一张“她”的作品。写这篇文章时,奥瑞亚在 Instagram 上有 1606 名粉丝。

Auria 被认为是一个为期一年的项目,今天它即将结束。

开始

我和 Fabin 是 2018 年 9 月开始谈的。虽然我们来自同一所大学,但我们从来没有机会一起工作。Fabin 在增强现实、UX 和艺术方面有着辉煌的背景,当时他与 Adobe 有联系。自 2016 年以来,我一直是机器学习的积极实践者,2018 年,我有个各种特色项目

虽然背景不同,但我们有许多共同的特征。其中,突出的相似之处是,我们都热爱创造事物。我们都坚信技术创新。也许这些属性导致了合作,然后 Auria Kathi。

它始于随机想法干扰会议。渐渐地,讨论集中到了艺术,然后是艺术家,然后是诗人艺术家,然后是人造的诗人艺术家,然后是在 Instagram 和 Twitter 上发布的人造的诗人艺术家…

那些日子是创造性的精致。

That’s us in front of the Colosseum during our visit to Italy to attend Florence Biennale

惊人的奔跑

在这一年中,奥瑞亚到达了我们一开始从未预料到的地方。

  • 2019 佛罗伦萨双年展

佛罗伦萨双年展创办于 1997 年,是意大利佛罗伦萨的主要当代艺术展览,被认为是世界各地国际当代艺术作品的杰出展示。自 1997 年以来,来自 100 多个国家的约 6000 名艺术家作为参展商参加了佛罗伦萨双年展的一个或多个版本。参赛作品由评审团策划,评审团由艺术界的国际知名人士组成,如 Gregorio Luke、Francesco Buranelli、Gerfried Stocker 等。

Presenting work of Auria at Florence Biennale 2019

在 2019 年 10 月举行的第 12 届佛罗伦萨双年展上,我们被接受在当代数字艺术展区展出 Auria 的作品。作为一个国际性的艺术*台,艾的作品在佛罗伦萨双年展上受到了更多的关注。此外,创造性的机器将如何通过激发艺术家提出新颖的想法来建设我们的未来也是讨论的一个重要部分。

  • 与微软的合作

目前,我们在文献中没有一个单一的算法,可以构建像 Auria 这样的应用程序。但我们可以建立一个当前最先进的算法管道,可以执行 Auria 的组件并解决问题。这是 Auria Kathi 工程架构背后的关键理念。

这种架构方法被证明是微软 Azure 机器学习管道的一个确切用例。多模态机器学习管道是对我们使用端到端机器学习解决我们周围复杂问题的愿景的验证。我们已经非常轻松地将 Auria 的工程栈转移到 Azure *台,你可以在这里找到更多细节。

微软雷德蒙首席项目经理 Santhosh Pillai 在达成合作的过程中发挥了关键作用。

微软还赞助了佛罗伦萨双年展的费用。

  • NeurIPS 在线图库

Auria 的作品入选了 NeueIPS 关于机器学习促进创造力和设计研讨会的在线画廊。

  • 媒体报道(线上和线下)

1.创意应用网络

2.印度在线快递

3.巴鲁·埃利奥特的创意人工智能简讯

4.苏乔伊·高什编写布鲁斯博客

5.走向数据科学— Auria Kathi

6.走向数据科学——Auria Kathi 和 Azure 机器学习管道

7.德干纪事报(全印度版)

8.商业标准报(全印度版)

9.马拉雅拉马诺拉玛报(全部喀拉拉邦版,拥有 1800 万读者群)

  • 会谈
  1. PyData 大会——Auria Kathi:多模态机器学习管道的力量

2.喀拉拉邦管理协会,科钦-奥瑞亚·卡提艾诗人艺术家

3.喀拉拉邦国立高等法律研究大学——人工智能生成艺术的知识产权

  • 电台

班加罗尔米尔奇电台——特别报道

拒绝

对我们来说,这并不是一片乐土,尽管从远处看似乎如此。

  1. 被双年展拒绝参展
  2. 拒绝参展——2019 年韩国首尔国际计算机视觉会议
  3. 2019 年学术论文——neur IPS for creative 被拒绝参赛
  4. 拒绝参加画廊的展览

我们被审查使用机器自动化艺术,并使其成为对人类艺术家的威胁,尽管我们一再澄清,我们的使命是帮助人类的创造力,而不是取代它。

我们从 Auria Kathi 身上学到了什么?

  1. 如果你相信你的创造,寻找每一个机会展示它。你会惊讶于这种坚持以后会把你带到哪里。
  2. 不要为被拒绝而烦恼。尤其是早期的。
  3. 不要为批评而烦恼。保持冷静,鞭策自己。
  4. 如果你想走得快,就一个人走。想走远,就一起走。

代码

我们都是开源的倡导者,相信所有的创新都站在我们先行者的肩膀上。所以回报是很重要的。正如承诺的那样,我们在这里开源了代码

许可证

  1. 社交媒体上发布的任何用于非商业目的的 Auria 艺术作品都应归功于 Auria Kathi。
  2. 在社交媒体上发布的任何用于商业目的的来自 Auria's art 的艺术作品都必须得到 Auria Kathi 创作者的共同同意。
  3. 出于商业目的使用品牌名称“Auria Kathi”必须得到 Auria Kathi 创作者的共同同意。

请随意使用代码来创建您自己的诗歌和艺术版本。

谢谢你接受了我的想法,并使我获得了巨大的成功。

结束。

爱情,

奥瑞亚·卡希

数据科学的基本算法

原文:https://towardsdatascience.com/the-fundamental-algorithms-of-data-science-a00dbe2c953?source=collection_archive---------15-----------------------

第 1 部分:线性回归

这是旨在深入探究数据科学基本算法背后的数学的系列文章中的第一篇。作为数据科学家,当利用 scikit-learn 等易于应用的机器学习库时,重要的是我们要对“幕后”发生的事情有一个坚实的理解,而不是简单地插入和遍历 fit-predict-score 函数。自然,没有比线性回归更基础的算法了。

快速入门

线性回归用于预测一些目标变量,以及获得关于各种特征和目标变量之间的关系的见解。目标通常是一个连续变量,可以写成特征的加权线性组合。因此,对于具有 n 个要素的数据集,线性方程将具有 n 个权重(b₁,…bN)和一些常数(b₀:)

用一个变量来可视化线性回归的结果是相当简单的。在这种情况下,回归函数将是单一特征(x)和目标变量(y)图上的最佳拟合线。

为了便于演示,我从 scikit-learn 导入了波士顿房价数据集。我选择了一个单一的特征,房间数量(“RM”),并根据目标变量房价绘制了它。

from sklearn import datasets
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as snsboston = datasets.load_boston()
df = pd.DataFrame(boston.data)
df.columns = boston.feature_names
df['PRICE'] = boston.target
del bostonX = df['RM']
Y = df['PRICE']ax = sns.regplot(X, Y, fit_reg=False)

显然,房间数量和房屋售价之间存在正相关关系,我们可以想象通过这些点画一条向上的斜线。但是哪条线是“最好”拟合的线呢?我们如何找到它?

价值函数

在单变量情况下,y 的每个预测值(用带小帽子的 y 表示)或 y 的“假设”(h(x))由以下等式给出:

目标是找到 b₁和 b₀,使得成本函数(在这种情况下为均方误差(MSE ))最小化:

以下是 Python 中用于计算 b₁和 b₀给定值成本的函数:

def cost(b0, b1):    
    Yhat = b0+(b1*X)
    SE = (Yhat-Y)**2
    N = len(Y)
    cost = (1/(2*N))*(sum(SE))
    return(cost)

输入不同的 b₁值并绘制返回的成本函数值显示了线性回归成本函数的凸性。

beta1s = np.arange(0,10.5,0.5)costs = []
for b1 in beta1s:
    costs.append(cost(0,b1))
ax = sns.lineplot(x=beta1s, y=costs)

Cost function for various values of b₁

在这种情况下,在 3 和 4 之间的某个 b₁值处存在局部最小值。当然,我把 b₀固定为零,所以我们无法知道这是否是这些权重的最优组合。虽然我们不能用几何学的方法解决这个问题,但幸运的是有数学方法可以优化这两个参数(从而最小化成本函数),如下所述。

方法 1:最小二乘法

最小二乘法将最小化每个点(xᵢ,yᵢ)和 y 的预测值(落在线上)之间的距离。我们可以用下面的公式计算 b₁(x₁的重量,在这种情况下是直线的斜率,因为我们是二维的):

线的截距,或 b₀,是通过取所有 xᵢ的*均值,乘以 b₁,然后从所有 yᵢ:的*均值中减去乘积计算出来的

可以使用以下代码在 Python 中计算参数 b₁和 b₀:

b1 = sum((X-X.mean())*(Y-Y.mean()))/sum((X-X.mean())**2)
b0 = Y.mean()-(b1*X.mean())

它返回值 b₁ = 9.102 和 b₀ = -34.671。将这些值代入上面定义的成本函数得出 C(-34.671,9.102) = 21.801。

方法 2:梯度下降

虽然最小二乘法在单变量情况下(即,具有一个特征 x)相当简单,但是对于多重回归(即,多个特征),它在计算上变得复杂得多。输入梯度下降和偏导数!

梯度下降开始于为 b₁和 b₀设置某个初始值(比如 1 和 1),并减去相对于 b₁和 b₀的偏导数(乘以某个学习速率α)。重复这个过程,直到它收敛于某个最优的 b₁和 b₀,其中成本函数的斜率为零(即全局最小值)。

用更人性化的术语来说,想象你站在山顶上,目标是找到山谷中的最低点(用黑色的 X 标记)。如果你大踏步跳下山坡,你可能会越过你的目标点。如果你一步一步来,你会花很长时间到达底部。步长相当于 alpha,或学习率,在超过最小值和计算时间之间有一个折衷。

数学上,梯度下降将重复以下步骤,直到收敛:

对于线性回归,给定成本函数:

b₀和 b₁的偏导数为:

def gradient_descent(alpha, b0, b1, epochs):
    for _ in range(epochs):
        Yhat = b0+(b1*X)
        partial_0 = (1/N)*sum(Yhat-Y)
        partial_1 = (1/N)*sum((Yhat-Y)*X)
        temp0 = b0-alpha*partial_0
        temp1 = b1-alpha*partial_1
        b0 = temp0
        b1 = temp1
    return(b0,b1)

在这种情况下,学习率(alpha)为 0.01,重复 40000 次,我们得到 b₁ = 9.056 和 b₀ = -34.377,成本函数值为 21.801(如上)。

以下代码将 b₁和 b₀的梯度下降值的回归线叠加到房间数量和房价的散点图上:

Yhat = b1*X+b0
grid = sns.JointGrid(X, Y, space=0)
grid.fig.set_figwidth(7)
grid.fig.set_figheight(4)
grid.plot_joint(plt.scatter)
grid.ax_joint.plot(X, Yhat, 'r-', linewidth = 2)

Regression line (red) calculated using gradient descent

总结

这篇文章讨论了数据科学和机器学习中一个基本算法的基本构建模块:线性回归。我讨论了优化用于预测目标值 y 的回归权重或参数的两种方法。虽然最小二乘法对于一个要素(x)相当简单,但梯度下降更常用于大型要素集,因为同时计算所有权重会更加复杂。

这篇文章的目的是让读者深入了解基本算法(如线性回归)的“本质”,以确保正确的使用和解释。如果你想了解更多,请查看本系列关于逻辑回归的下一篇文章!

我希望你觉得这篇文章很有用,并且像往常一样,欢迎在评论中发表意见!请继续关注本系列的后续文章,因为我将继续深入研究我们最基础的算法的数学。

来源:

[## Coursera |顶尖大学的在线课程。免费加入

斯坦福和耶鲁等学校的 1000 多门课程——无需申请。培养数据科学方面的职业技能…

www.coursera.org](https://www.coursera.org/learn/machine-learning/home/info) [## 简单回归数学

http://regressit.com。线性回归版本可以在 PC 和 MAC 电脑上运行,并且具有更丰富和更易于使用的…

people.duke.edu](http://people.duke.edu/~rnau/mathreg.htm) [## Python | Edureka 中从头开始的线性回归算法

4.1K 视图成为认证专家线性回归是机器中最简单的统计模型之一…

www.edureka.co](https://www.edureka.co/blog/linear-regression-in-python/)

机器学习的基本问题,没有数学

原文:https://towardsdatascience.com/the-fundamental-problem-of-machine-learning-without-math-24f3b2708028?source=collection_archive---------10-----------------------

你好!今天,我们将讨论凸同构的部分随机深度神经梯度。我只是在开玩笑;这只是一大堆乱七八糟的字,但是看论文有时候也会有这种感觉。因此,我想以一种不需要先验知识或数学技能的简单易懂的方式来写我认为是机器学习和人工智能中最重要的话题。我也想过这个问题,我用漂亮的图片和冷色调的形式来展示我的观点。我希望,在阅读 10 分钟后,你会有一个直观的理解,而不是用你的头去撞墙。

如果你过去几年没有生活在岩石下,你就会知道人工智能是下一个大事件。汽车在自动驾驶,计算机在围棋上打败了人类,机器人正在取代我们的工作。很快,机器人将推翻政府,奴役我们的孩子…

好吧,也许不是。但这回避了一个问题:如果终结者在不久的将来不会猖獗,人工智能的极限是什么?答案很明显——这取决于你对人工智能的定义。如果你把人工智能定义为只会下围棋的计算机,我可以很有信心地告诉你,未来包含了比今天更好的围棋程序。我们会完成,但不幸的是,我不认为有人使用这个定义。我不认为当梅赛德斯宣传他们的智能驾驶时,他们谈论的是他们的汽车性能有多好。另一方面,你可以像营销人员一样定义人工智能;你的公司在你的产品中使用人工智能,所以我的公司也是。没有人特别确定我们的产品有什么人工智能,但它肯定不是人工愚蠢的,所以嘿。

那么,智力到底是什么?在对人脑、心理学、甚至蚂蚁社会进行了大量研究后,我得出结论:智力由两个主要部分组成:第一,识别模式的能力;第二,应用这些模式实现目标的能力。这有很多理由,但一个例子相当清楚地说明了这一点,我们都知道轶事证据是最强有力和最合乎逻辑的论点。想一个非常聪明的人,比如说,在数学方面。现在想象一下这个人在数学课上。这个人很可能上课不太专心——为什么?因为他/她很快就能得到材料。他/她认识到了这种模式,并决定不再关注班上的其他人。这个人也可能很快完成作业,因为他/她擅长将课堂上学到的知识(也就是模式)应用到作业中。这个定义也适用于其他类型的智力。例如,艺术上聪明的人似乎能够识别什么是好的艺术,并利用这种本能创造新的、好的艺术。如果这不能说服你,要知道维基百科也为智力提供了类似的定义,你肯定不想与维基百科争论,维基百科是互联网上最可靠的知识来源。

Source: boredpanda.com

你猜怎么着?显然,有一整个领域致力于算法,这些算法创建从数据中提取模式并将其应用于其他数据的模型,它被称为机器学习。我想谈谈机器学习中最重要的概念之一,过度适应。过度拟合只是模型发现了太复杂的模式的一种花哨说法,这导致了预测未来点的问题。

Source: wikipedia.org

假设你的任务是画一条线将红色和蓝色的点分开,但是这些点如何着色可能会有一些随机性;数据有些嘈杂。黑线似乎是一个合理的解决方案。它没有对所有的点进行正确分类,但它似乎考虑到了边界上的一些点可能会向任何方向移动。绿色解决方案成功地分离了所有点。但区别在于:我突出显示了一些区域,如果你沿着绿线走,一个新点将被归类为红色,而如果你沿着黑线走,一个新点将被归类为蓝色。

This definitely wasn’t done via Microsoft Word. I definitely used a professional program, like Photoshop.

现在,作为一个没有试图攻击作者的读者,我相信你会同意我的观点,突出显示的黄色区域更可能包含蓝色点而不是红色点。这是过度拟合—绿线在现有点(训练点)上表现更好,但在新点(测试点)上表现更差。

我们可以换句话说,产生绿线的模型在训练点中发现了太多的模式。它太善于发现模式,所以当它要应用它们的时候,它没有看到它发现的模式可能不适用于新的点。那么,根本的问题是发现哪些模式是真实的,哪些只是数据本身的噪音。

我肯定不是第一个注意到这个问题的人。我其实是在课堂上学到的。许多聪明人试图通过想出非常聪明的方法来解决这个问题,这些方法使用长方程和许多希腊字母来防止模型发现像绿色这样的怪异线条;这就是所谓的正规化。无论是在训练期间添加正则化还是将其融入模型本身,这都是机器学习的改进之处。

我的观点略有不同——在我看来,我们跳过了最重要的一步。在诉诸奇特的数学之前,我们忘了问自己为什么。嗯,总是有这样的问题,为什么天空是蓝色的,或者为什么我们存在于宇宙中,但这些不是我提到的问题(这些是不是你正在寻找的问题)。不,我更关心的是为什么智力通常会起作用。我们试图找出哪些模式有效,但我们还没有确定为什么任何模式都有效。为什么下一个点应该是蓝色或红色;为什么不能是紫色的?

这个问题,又不是我先问的。事实上,我不知道是谁先问的,但幸运的是,一路上有人决定给出一个答案:一些模式之所以有效,是因为测试数据应该独立于训练数据,两者应该来自同一分布。这只是一种数学方式,说明当我们测试我们的模型时,我们不应该让它处于与我们训练它时不同的环境中。下一个点是紫色的可能性很小,因为我们已经看到了很多点,没有一个是紫色的。毕竟,当我们掷出六面骰子时,我们不能指望一半正面一半反面,但我们可以预计,如果我们以同样的方式掷同样的硬币,我们会得到类似的结果。借用一句励志名言:“如果你一直做你一直做的事情,你就会一直得到你一直得到的东西。”在我写下那句话之前,我从没想过机器学习可以和励志演讲捆绑在一起。

Ok, fine. It was done via Microsoft Word 😕

好的,很好,但是让我们回到任务上。这与区分实际模式和过度拟合有什么关系?如果你注意到上面,过度拟合的主要原因是绿线模型试图拟合一些异常值。假设我们可以以某种方式将这些点分组到不同的区域,其中一些区域包含异常值并且不符合找到的模式(黄色区域),而另一些区域包含符合找到的模式的点(绿色区域)。

直觉上,“绿色”区域应该更大,包含更多点,并且在预测未来点时更准确。换句话说,如果更多的点出现在“绿色”区域,我们会认为它们是红色的。另一方面,如果更多的点出现在“黄色”区域,而一些点是红色的,我们会认为大部分是蓝色的。当然,为了得到更多的分数,我们总是可以收集更多的数据。但有时,你会发现自己是一个贫穷的本科生,没有其他人拥有的金钱、时间或资源。叹气。不管怎样,有时候,收集更多的数据是不可行的。因此,与其这样做,我们可以省去部分训练数据,并通过使用我们省去的点来“添加”点!这也不是一个新的想法——这被称为使用验证集(我们验证模型从训练集中发现的模式)。使用验证集来确定特定的过度拟合区域是一种新方法。然而,人们没有这样做是有原因的。“绿色”区域听起来确实不错,但首先,它们很难找到,其次,这些区域是根据数据构建的。简而言之,一些区域明显是“绿色”,而其他区域明显是“黄色”,但是一些区域将很难着色,因为这些区域是围绕训练数据塑造的。这个问题的解决依赖于与美国相同的基本原则。如果根据不同数据训练的两个模型得出相同的“黄色”区域,这将是奇怪的。因此,如果我们对根据稍微不同的数据训练的模型重复这个着色过程,对于我们在第一个模型中不确定的区域,我们可以在第二个模型中只看它们的颜色作为决定者!如果那个模型发现了相同的区域,那么我们可以非常肯定这不是偶然的,所以它应该是“绿色的”相反,如果第二个模型没有找到该区域,那么它可能是噪声,并且应该被着色为“黄色”

还有一件事。我们如何找到这些区域?我们用聚类!你会问,什么是集群?

Source: wikipedia.org

聚类就是在数据中寻找聚类(我不是故意讽刺)。但是看;聚类就是在数据中找到三个聚类,如图所示。同一簇中的点看起来与模型相似。如果有多种方法来转换点,然后在模型中绘制(例如,在神经网络的每一层中),那么根据定义,在所有图中处于相同聚类中的点对于模型来说是不可区分的。这是很清楚的——如果模型可以区分它们,那么它们在某个时候会在不同的簇中。不管怎样,如果我们定义了点总是在同一个簇中的位置,那么,现在我们有了我们的区域!

机器学习就是寻找可以分离点的算法(哦,还有回归)。算法倾向于找到绿线,因为这样可以最小化分类错误。机器学习的挑战是找到一种可以找到黑线的算法,因为这可能会在新点上工作得更好。正则化,也就是奇特的数学,帮助我们得到更接*黑线的东西。这就是全部了!

你想要一个正式的版本,应用于实现最先进结果的深度学习吗?你对这如何证明奥卡姆剃刀和传统的正则化技术有兴趣吗?你想成为一个酷小孩吗?->https://arxiv.org/abs/1904.05488<—

感谢阅读!

机器意识的未来和哲学

原文:https://towardsdatascience.com/the-future-and-philosophy-of-machine-consciousness-872f272875c8?source=collection_archive---------5-----------------------

探索令人兴奋又令人恐惧的感知机器人的可能性

如今,科幻小说比以往任何时候都更渴望探索人机关系的可能性。这些故事复杂、感人,而且常常发人深省,在粉丝和未来主义者中广受欢迎。

一些著名的、相当黑暗的例子是:

  • 《黑镜》(第一季第二集)马上回来— 一个悲伤的寡妇将她已故丈夫的人格重塑成一个神秘的机器人身体
  • 前玛奇纳——一名男子爱上了一个背叛他以换取自由的机器人
  • 她的——一个最*离婚、心碎的男人在一个复杂的聊天机器人中找到了伴侣,最终变成了爱情

这些故事很可怕,因为它们迫使我们去面对我们可能不理解或不知道答案的现实。有一天,我们将不能关掉电视,回到那些情况不在你家门口的生活。但是,即使这一天还没有到来,重要的是开始探索随着这些未来机器慢慢成为现实而变得越来越相关的哲学问题。

今天,我们将探讨与机器意识相关的问题,例如:

  1. 机器能思考吗
  2. 机器能体验情感吗
  3. 机器能有意识吗

我们将努力保持客观,从多个来源获取不同的观点。这是:

机器会思考吗

简答:当然可以,为什么不可以。

长回答:很复杂。1950 年,被称为现代计算和人工智能之父的艾伦·图灵也在想同样的事情。为了寻找答案,他创造了著名的图灵测试。简而言之:

阿兰·图灵于 1950 年发明的图灵测试是一种测试机器表现出与人类同等或不可区分的智能行为的能力的测试

图灵认为思维机器可以存在。同时代的人持两种观点,但是针尖倾向于同意图灵最初的观点。

但是,什么是思维?这个问题可能比它第一次出现时更加主观。

一个普通的思维实验被称为 中国室 ,它反对图灵测试作为机器是否能思考的代理的有效性。提出这一思维实验的论文的作者约翰·塞尔认为,聊天机器人不会思考——它只是操纵它不理解的符号,这不是思考。

从本质上说,《中文教室》强调了我们所认为的机器智能只是一种计算。但是,如果硅芯片和电路只是我们脂肪组织和化学大脑的机器模拟,那又有什么区别呢?

这是大脑模拟器对中文教室反应的关键(一个计算主义论点)。心智的计算理论认为,人类的心智只是物理系统中的信息处理。大脑模拟器的回应认为,在最小的尺度上,大脑和处理器只是两个信息系统——它们交换数据,更新状态,并产生输出。

The atomic units of what make our respective processors

所以,让我们假设没有灵魂,并且认为思维真的只是信息处理的突现属性。那么,情绪是思维的一部分吗?或者它们是一种独特的生物?

机器能体验情感吗

如果“情绪”只是根据它们对行为的影响或它们在有机体中如何发挥作用来定义的,那么情绪可以被视为一种机制,智能代理使用这种机制来最大化其行为的效用。鉴于情感的这一定义,汉斯·莫拉维克认为“一般来说,机器人对于成为好人会很有感情”。

如上所述,情绪赋予效用。例如,动物能经历的两种最原始的情绪是恐惧和吸引。对危险环境、捕食者和处境的恐惧一直伴随着我们,因为它让我们的祖先活了下来。对有营养的食物、安全的环境和生殖伴侣的吸引力没有什么不同。这些情感帮助我们生存下来,并传递我们的基因。到目前为止效果还不错。

所有养宠物的人都会告诉你,认为情感是纯粹的“人类”特征是错误的。智力范围内的动物都有情感体验。

那么,为什么机器人会有所不同呢?

汉斯·莫拉维克认为,机器人“会试图以一种明显无私的方式取悦你,因为它会从这种积极的强化中获得快感。你可以把这理解为一种爱。”

这个论点是基于学习机是基于函数优化的。无论是最大化一个回报适应度函数(在强化学习和遗传算法中)还是最小化一个成本函数(在监督学习中),目标都是相似的:获得尽可能好的分数。

了解了这一点,就很容易明白莫拉维克的论点有什么道理了。将机器人的目标函数定义为取悦你,当它试图获得高分时踢你的脚。

所以简而言之,是的——从一个旁观者的角度来看,机器人可以表现情感。

但是,情绪也是感情。询问一台机器是否能够真正感受到愤怒、快乐、悲伤,这涉及到意识的问题,我们接下来将探讨这个问题。

机器会有意识吗

“心灵”和“意识”这两个词被不同的群体以不同的方式使用。

意识本质上是智能的一种自然属性吗?这是有道理的,因为我们可以说狗比鸡更有意识,鸡比蚂蚁更有意识。按照这个思路,意识不是二元的,而是一个连续体。

而且,谁能说天*到我们这里就结束了呢?从基因上来说,我们和类人猿没什么不同。宣称人类是意识的顶峰是傲慢的,当然事实并非如此(就理论上的可能性而言)。

美国哲学家约翰·塞尔提出了两种人工智能的理论:

  • 强人工智能:一个可以拥有思想和精神状态的物理系统
  • 弱人工智能:一个可以智能行动的物理系统

他的目标是区分这两者,以便专注于手头更“有趣”的问题——被称为意识的难题。这个问题很“难”,因为我们理解并可以复制意识的许多子系统(如精神状态、信息处理等),但不知道它们是如何结合在一起形成一个生命的。我们根本不了解一个机制 意识的功能是通过它来执行的。

然而,今天的人工智能研究人员并不关心强人工智能和弱人工智能之间的区别,因为一般的智能只需要这样“行动”,除非证明“意识”需要一些秘密的额外成分。如果我们可以用软件复制一个大脑,它将(理论上)拥有人脑的所有能力。

总之,这些论点表明,在我们找到负责意识的可量化的客观机制之前,我们必须假设一个会思考、会学习、普遍智能的机器和我们一样有意识。

但是,有些人不同意。

一些新时代的思想家将意识描述为“一种无形的、充满活力的液体,渗透到生活和思想中。”这种想法与灵魂、精神或一个人的其他超凡脱俗的、缥缈的部分一样,使他们不仅仅是一块肉。但是,为了考虑这种可能性,我们再次考察二元意识的问题。狗、鸡、蚂蚁等也有灵魂吗?如果不是,那么他们都是同样有意识的,这当然看起来不像是这样。

已经有一些实验被用来定量测量灵魂的存在——但没有一个给出实验证实。你可能会说灵魂,也就是意识,是而不是可定量测量的。如果是这样的话,一个看不见的,不可测量的东西在我们的讨论中是没有分量的(get it)。总的来说,反对机器意识的论点可以总结为精神上的,就实验证据而言没有可信度。

总的来说,天*倾向于机器意识的可能性。没有真正的障碍说这是不可能的。最后,无论哪种方式,我们都不能肯定地说。

那么,现在怎么办?

这些都是非常复杂的话题。我们探索的想法仅仅是其他人思考了几十年的观点海洋中的一滴水。这些问题都没有非黑即白的答案。

在不久的将来,什么都不会改变。我们的机器人离网飞上任何能引起恐慌的东西都很远。

未来,谁知道呢?这是另一个开放的话题。

我只是列出了我认为最合理的答案。重要的是保持一个开放的心态,总是对新的信息开放,尤其是关于如此复杂的话题。

如果您对这篇文章感兴趣,我鼓励您深入阅读这个主题(查看下面的参考资料)。感谢阅读!

进一步阅读(其中许多是我为本文提供的思路):

面对数据饥荒的人工智能的未来

原文:https://towardsdatascience.com/the-future-of-ai-in-the-face-of-data-famine-42d1fe36355c?source=collection_archive---------23-----------------------

Photo by Mathew MacQuarrie on Unsplash

人工智能研究领域作为一门学术学科创建于 1956 年。尽管有 60 年的历史,但这个时代仍处于最开始,与类似学科相比,未来的道路崎岖不*,这主要是由伦理和数据可用性领域的挑战驱动的。

AI 的命运起伏 人工智能自诞生以来,经历了三次重大突破和两次停滞期。它最*的复兴是在 2016 年引发的,当时 AlphaGo 击败了世界上最好的围棋选手,这是一场被认为对人工智能来说太复杂的游戏。

正如我们从以前的人工智能圈子中了解到的那样,每当它向前迈出一大步,就会有很多人审视和关注这对世界意味着什么;无论是行业还是社会。因此,人工智能的某些想法在公众中变得极具争议,并进入了“幻想破灭的低谷”。

思考一下为什么人工智能仍然如此有争议,事实证明,对人工智能能够提供什么的期望与它在现实中能够完成什么之间存在巨大差距。今天的事实是,人工智能的真实世界例子仍然很少,而且往往专注于非常小众的案例,远离营销人员撰写的追逐社交点击的场景。AI 走向主流还有很长的路要走。由于我们在这个领域并不缺乏远见,我们看到了对人工智能今天真正能够完成什么的怀疑信号。现在,在第三次人工智能崛起即将结束之际,这个新兴领域的命运仍不确定。

数据饥荒即将来临 人工智能最*的崛起在很大程度上是由大数据的可用性推动的,大数据推动了面部识别等领域深度学习的发展,这可以被认为是这场人工智能浪潮的主要突破之一。在更复杂的领域,如疾病诊断,深度学习仍然面临着弥合企业和机构之间差距的挑战。这一领域的一个主要问题是数据的可访问性。从整体的角度来看,数据是可用的,但由于若干原因是不可评估的。一个常见的问题是数据存储在孤岛中。这些孤岛通常是公司内部网络甚至公司内部物理隔离的结果。另一个突出的问题是数据结构不兼容。因此,没有集中式数据中心来通过深度学习机制训练强大的神经网络。基于云的计算经常被认为是解决数据孤岛问题的潜在解决方案,但事实证明,对于大量数据来说,它既昂贵又耗时。此外,还有越来越严格的数据隐私法规,如通用数据保护法规。虽然这些政策对于保护消费者的隐私非常重要,但它们也对数据的使用施加了严格的限制,并要求重新思考如何以合规的方式构建人工智能应用。

联合学习——第四大突破的承诺 消费者保护实践和数据隐私是不可协商的,也是建立必要信任的底线。另一方面,它带来了数据饥荒和人工智能崛起放缓的风险。联邦学习是一种新的人工智能方法,有可能带来人工智能的下一个重大突破,并克服这一波数据隐私和信任挑战。它是一个机器学习框架,允许用户使用分布在多个位置的多个数据集来训练机器学习模型,同时防止数据泄露并遵守严格的数据隐私法规。实际上,根据数据的分布特征,联合学习有三个主要类别。

水*联合学习根据特征划分数据集,并且通常在特征重叠多于用户的情况下实施。例如,在不同地区运营的三家物流公司可能会保留其消费者的类似数据,但消费者本身之间的重叠相对较小。由于他们的特征几乎相同,因此可以提取具有相同特征的用户来训练模型。

当多个数据集具有大量重叠的用户但具有不同的特征时,通常使用垂直联合学习。例如,在同一地区经营的食品配送服务和医院可能有一组相似的用户,但跟踪两者之间的不同信息:医院跟踪健康数据,而食品配送服务跟踪浏览习惯和购买数据等。垂直联合学习集合了所有这些特征,以便为双方协作建立一个模型。

当数据集的用户和特征之间几乎没有重叠时,联合迁移学习用于克服这种数据或标签的缺乏。以中国的一家制造商和美国的一家物流供应商为例。由于它们在地理上受到限制,用户之间很少有重叠;同样,由于它们是不同类型的机构,它们的特征也很少重叠。在这种情况下,迁移学习应该与联合学习结合使用,以定义数据集之间的通用表示,并提高模型的整体性能。

尽管它有能力,但仅靠一个有效的框架不足以完全解决这些挑战。联合学习必须发展成为一种商业应用,为某个行业提供灵活、双赢的商业模式。通过聚合不同机构的多个孤立数据集,联合学习使开发理想模型成为可能,而无需侵犯每个人的隐私。简而言之,这是一种通过将来自多个利益相关者的数据保存在孤岛中来训练算法的方法——数据共享经济,其中数据持有者通过共享他们的数据而受益,而应用程序提供商可以通过提供开发这些模型所需的服务来获利。

由...所写

西哈诺·陈、锡安·陈和迈克尔·伦茨

机器学习和数据科学计算的未来

原文:https://towardsdatascience.com/the-future-of-computation-for-machine-learning-and-data-science-fad7062bc27d?source=collection_archive---------7-----------------------

数据科学家面临哪些挑战,研究人员如何应对这些挑战?

"人脑比计算机消耗的能量少得多,但它却比计算机复杂得多。"—全球政策杂志纳耶夫·阿尔·罗德汉

Source: https://www.nanalyze.com/2019/08/neuromorphic-computing-ai-chip/

在这篇文章中,我将讨论计算科学目前面临的挑战和预期的未来趋势,以及它们对数据科学和机器学习领域的影响。这包括 Dennard scaling 的崩溃——摩尔定律的放缓,物联网(IoT)的新兴领域,以及模仿人脑的更节能计算的出现,即所谓的神经形态计算。

趋势

深度学习

深度学习在现代世界已经无处不在,几乎在每个领域都有广泛的应用。正如所料,人们已经开始注意到,随着深度学习被企业广泛采用,其背后的宣传也在继续增加。深度学习由具有多个隐藏层的神经网络组成,并且在计算资源方面有一些特别苛刻的需求:

  • 10 亿个参数来训练。
  • 计算强度随着网络深度的增加而增加

深度学习在语音识别、计算机视觉和文本理解的一些重要任务中取得了巨大成功。

The apparent success of deep learning in the field of speech recognition.

深度学习的主要缺点是其计算强度,需要高性能的计算资源和长的训练时间。对于面部识别和图像重建,这也意味着使用低分辨率图像。研究人员打算如何解决这些大型计算问题?这种方法的瓶颈是什么?

物联网

未来几年,预计将有 200 亿个嵌入式设备投入使用,包括智能冰箱、电话、恒温器、空气质量传感器、锁、狗项圈,这个名单令人印象深刻。这些设备中的大多数将由电池供电,并且在存储器和计算能力方面受到严重的资源限制。尽管有这些限制,这些设备需要执行智能任务并且易于使用。

物联网设备的预期普及带来了重大担忧,特别是关于这些设备的安全性(也许未来的罪犯将是黑客,他们可以侵入我门上的智能锁)。这也预示着数据驱动的深度学习的到来。深度学习已经需要大量的数据,但大规模联网设备或传感器的出现开辟了新的研究途径——特别是在我自己的环境科学领域,该领域正日益朝着低成本和大规模传感器网络的方向发展,以监测大气污染物。

这个想法也延伸到了智能手机上。智能手机正变得越来越强大,现在在计算能力上可以与一些老式笔记本电脑相媲美。机器学习越来越多地在这些设备上执行。尽管有所改进,但它们的计算资源仍然有限,因此减少计算和数据开销的趋势在这些设备上越来越重要。

这种想法也延伸到自动驾驶汽车,经过长时间的研发,自动驾驶汽车开始商业化。自动驾驶汽车存在自己的问题,但仍然受到同样的关注,其中最受关注的是车辆的安全性和道德基础。

更多的数据意味着更多的数据科学(对数据科学家来说!),但这也意味着需要存储和处理这些数据,并通过无线网络传输这些数据(我要补充的是,要做到安全)。如何解决与物联网相关的问题?而且出了问题谁的责任?

云计算

公司越来越倾向于使用云计算,以便外包其计算需求并最大限度地降低成本。

这也有助于公司(尤其是初创公司)降低与购买基础设施相关的资本成本,并将其转移到运营成本中。随着计算密集型和需要高性能系统的机器学习和数据科学的日益普及,以及大多数公司在线业务的不断增加,基于云的分布式计算的这一趋势预计不会很快放缓。

缩放计算量

在仅适度增加能耗的情况下扩大计算规模是一项艰巨的任务。我们需要深度神经网络的这种*衡计算缩放,以最小化它们的能量开销。

当前的解决方案是并行使用许多小型、高能效的计算节点来适应大型计算。

减少能源使用

在仅适度降低结果质量(例如,预测准确性)的情况下缩减能量正成为日益重要的任务。物联网设备和可穿戴设备需要这种*衡的能源扩展。这些考虑与一个叫做*似计算的新领域有关,这个领域用付出的努力来权衡质量。

目前的解决方案是协调使用多个小型节能计算节点来支持智能计算。

更多数据

数据趋势显然不会很快停止!然而,关于这一点的讨论应该有它自己的一节。

数据过载

过去二十年的数据爆炸现在意味着人类每两天产生的数据量相当于截至 2003 年全人类的数据量。计算趋势表明,我们现在处于亿亿级数据(指 10 亿千兆字节规模的数据计算)和亿级计算(指每秒能够执行 10 次⁸计算的计算机)的区域。

谷歌、亚马逊、微软和脸书等所有大型在线存储和服务公司持有的数据总和约为 4800 Pb(4.8 EB)。

分析大型数据集(甚至几千兆字节)需要不同的方法在本地笔记本电脑上运行模型——试图这样做只会使您的计算机崩溃。

并行化

目前,处理高成本计算的标准方式通常是使用超级计算机(用于大计算任务,需要大量计算能力),或者使用大型分布式系统(用于大数据任务,需要大量计算内存)。

在不久的将来,如果你想分析大型数据集,你将基本上别无选择,只能转向并行计算。

分布式系统在某种程度上工作得很好,但是一旦我们接*具有 1000 个节点的集群(集群中的单个计算机),分布式系统很快就会崩溃。集群中的大部分时间都花在了通信上,这导致了降低系统整体计算速度的开销。这种现象被称为

Illustration of parallel slowdown — initially, we see an improvement in the speedup as the number of processors increases. This relationship breaks down for large numbers of processing elements due to a communications bottleneck (too many people talking, not enough work being done). Source

我们遇到的另一个复杂问题是我们的计算中可并行化的比例,这由 阿姆达尔定律 描述:

阿姆达尔定律指出,在并行化中,如果 P 是系统或程序可以并行的比例,1-P 是保持串行的比例,那么使用 N 个处理器可以实现的最大加速是 1/((1-P)+(P/N))。

通俗地说,我们的最大加速取决于程序中必须顺序执行的部分——不可并行的部分。如果我们 50%的计算是可并行化的,那么我们得到的加速比如果我们的程序是 95%可并行化的要少得多。这种现象如下图所示。

Amdahl’s law, illustrated. As the number of processors we have available increases, we reach a bottleneck which depends on the serial portion of our algorithm. Source

对于令人尴尬的并行计算,这个问题消失了,这意味着程序是 100%可并行化的,并且本质上是独立的——例如,测试神经网络的不同超参数。

注: 并行计算和分布式计算有什么区别? 并行计算 是在共享内存上同时使用多个计算节点。 分布式计算 是同时使用多个计算节点,每个节点都在各自的内存上工作。

如今,支撑许多企业在线系统的分布式计算系统在云上随处可见,企业将大部分计算基础设施卸载给亚马逊和微软等大型云公司,以实现更轻松、更廉价的维护。

超级计算机运行良好,但运行和维护起来极其昂贵,而且需求量很大。在哈佛这样的大学里,实验室可以使用一定比例的计算资源,这些资源可以在小组成员之间共享。然而,租赁费用非常昂贵。在环境科学领域,以每小时的时间分辨率运行一个月的全球气候模型可能需要几周的时间,这可能是极其昂贵的。

计算能力一直是一个问题,但如今最大的问题是我们拥有的数据变得太大而无法处理。即使我们假设摩尔定律仍然成立(这将在下一节讨论),数据生产也是指数级的,而摩尔定律是线性的。如果计算强度足够大,可用于处理的数据量会很快使任何通用计算机或集群中配置在一起的一组计算机丧失能力。

Computing trends in processing power, storage cost, and data growth. Source

如果您有一千台计算机同时运行来管理您企业的数据库服务器,云计算并不便宜,但至少它是可行的。另一方面,您希望如何在 100 的数据集上执行业务分析?磁盘空间便宜得令人难以置信,但内存却不是,您的数据必须在内存中才能被分析。

幸运的是,我们至少可以通过所谓的 挂钟时间 来估计一次计算(也可以扩展到数据)可能需要多长时间。这可以通过首先找到你的计算的计算复杂性来完成:

CC = CDN T

  • CC =计算复杂度(Flops 数)
  • CD =计算密度(# Flops/site/step)
  • N =域大小或数据点数量(站点数量)
  • T =时间步数或时期数(步数)

要计算挂钟时间,您需要知道笔记本电脑的处理能力(例如 1 GFlops/s)。然后:

WCT = CC /处理能力

例如,如果你在 2D 网格上用 1000 个数据点进行 1000 时间步的计算,你将在每个网格点上进行 6 次计算。这具有 6 万亿次浮点运算的计算强度,在 1 GFlops/s 的笔记本电脑上大约需要 6000 秒(约 2 小时)。

有关各种不同机器学习算法的计算复杂性列表,请参见下表。

Computational complexities of machine learning algorithms. Source

在你做大型计算之前,估计一下你的挂钟时间!

可以看出,时间与计算次数成比例增加,这与(1)数据点的数量,或(2)计算域的大小有关。

机器学习中的并行化有多重要?事实证明这非常重要。这有两种可能发生的方式:

  • 数据并行— 分发数据,使用相同的模型。
  • 模型并行 —分布模型,使用相同的数据。

Data parallelism vs model parallelism.

人们期望如何处理必须分析的日益庞大的数据量?有许多选择,尽管这并不详尽:

【1】不要将“计算”移动到数据,而是将数据移动到“计算”。由于大规模分布式网络的存在,这在环境科学中有很大的推动力。

  • 边缘和雾计算 —在边缘设备上靠*数据源的地方进行计算。这将在物联网基础设施中变得非常重要。

【2】对工作负载进行分层划分,以产生可以分布的非交互式工作负载(对于交互式工作负载,并非总是可行)。

  • 网格计算 —想象在神经网络上执行超参数调整,并将一组超参数发送到一个计算集群,将另一组发送到第二个集群(模型并行性的示例)。这两个集群不通信,实际上是独立的。例如,这对于神经网络中的数据并行性(通常)是不可行的。

【3】高速通信、并行框架或分布式系统的时间管理方面的改进(这些已经很不错了!).

【4】使用专用硬件,如 ASICs(就像人们为比特币挖掘所做的那样,为特定计算优化硬件)、GPU 和 TPU。一个 GPU 可以在图形数据上提供 8 个 CPU 的性能,一个 TPU 可以像 8 个 GPU 一样有效-自然,它们并不便宜。

如何在自己的工作中实现并行化?

由于需要在可处理的时间范围内分析巨大的数据集,速度对于计算变得越来越重要。Python 是一种优秀的语言,是数据科学家使用的最流行的语言,但遗憾的是,它不是一种特别快的语言(首先,它是由解释的,而不是由编译的,这意味着代码被即时翻译成二进制代码,这需要额外的时间)。****

为了加速代码,并行化在大多数语言中都是可能的,这可以是添加额外处理器的形式,正如我们已经讨论过的,或者通过使用额外的线程— 如果您不熟悉,可以将这想象为打开两个相同的计算机程序,以便它们可以分担程序负载。这就是所谓的多线程,虽然对于大规模数据集来说用处不大,但它仍然可以提供很大的好处。最流行的实现之一是在 C++中使用的 OpenMP。****

多线程是 Python 的一个重要问题,因为有一种叫做 GIL 的东西。我们不能使用 OpenMP,但幸运的是,有一个被形象地称为multithreading的多线程库可以使用。

处理器之间的并行化可以使用 MPI 来完成,并可以扩展到图形处理单元(GPU)以及使用其他并行框架(如 OpenACC)的更专业的设备(如 Google 的张量处理单元)。在云提供商提供的实例上设置这些相当容易(TPU 仅由 GoogleCloud 提供)。

如果处理图像,我强烈建议至少使用一个 GPU 进行计算。这可以将训练时间减少一个数量级——这就是等待一个小时和一整天的区别。

摩尔定律的终结(正如我们所知)

1965 年,英特尔联合创始人戈登·摩尔做出了一个预言,为我们现代的数字革命定下了基调。通过对一个新兴趋势的仔细观察,Moore 推断计算能力将会以指数级的速度急剧增加,而相对成本将会下降。

但预计未来的速度会更慢。2015 年 7 月,英特尔首席执行官布莱恩·科兹安尼克表示,“半导体制造的指数级进步使得每两年一次的计算和存储变得更快、更便宜,现在这一速度将接*每两年半一次”。**

如前所述,人们现在致力于开发新的架构和计算模型,利用并行处理来提供*衡的计算和能量调节,而不是继续让微处理器变得越来越强大。

摩尔定律——CPU 上的晶体管数量每两年翻一番的现象——在某种程度上仍然可以观察到,但计算能力仍然与面积成正比的假设已经被认为是不成立的。这种功率密度缩放的假设被称为 丹纳德缩放 ****

Dennard scaling 粗略地指出,随着晶体管变得越来越小,它们的功率密度保持不变,因此功率使用与面积成比例:电压和电流都随长度成比例(向下)。

Source: Dark Silicon and the End of Multicore Scaling, 2011.

自 2005-2007 年左右,Dennard scaling 似乎已经崩溃,因此即使摩尔定律在那之后持续了几年,它也没有产生改善性能的红利。击穿的主要原因是,在小尺寸时,电流泄漏带来更大的挑战,并导致芯片发热。

有各种各样的热管理方法,从通过系统泵送 Fluorinert ,到混合液体-空气冷却系统或具有正常空调温度的空气冷却。然而,这些方法只能在一定程度上起作用,之后唯一能做的就是选择芯片的某些部分来通电。

因此,为了将芯片温度保持在安全工作范围内,芯片的某些部分有时不通电。这些区域被称为暗硅

需要能够动态选择芯片部件通电的设计——这是计算研究的一个活跃领域,将变得越来越重要。久而久之和摩尔定律继续偏离其最初的预测。

神经形态计算

神经形态计算是模拟神经系统中存在的神经生物学架构的计算系统的开发。

神经形态工程的一个关键方面是了解单个神经元、电路、应用和整体架构的形态如何创建理想的计算,影响信息的表示方式,影响对损伤的鲁棒性,整合学习和发展,适应局部变化(可塑性),以及促进进化变化。

形态被定义为处于特定的形状或形式。神经形态指具有神经元的行为。**

在 1990 年 IEEE 召开的名为神经形态电子系统的会议上,首次引入了神经形态计算的概念。诉讼称:

“人脑有 10 个⁶突触,每 100 毫秒有一个神经脉冲到达每个突触。这意味着每秒钟有 10 次⁶复杂运算。在 1W 的功耗下(这里为了简单起见而不是 20W),大脑每次操作只消耗 1/10⁶j——相比之下,终极硅技术每次操作都会消耗 1/10⁹ J。”

因此,预计通过实现神经形态计算,我们可能能够实现比我们当前的系统更节能几个数量级的计算。

推动节能计算有多种原因,而不仅仅是为了降低成本——尽管这只是一个原因。这也释放了硬件的计算,允许在更少的设备上完成相同数量的计算,这具有成本优势以及并行化的潜在优势。降低设备的总能耗对环境也有明显的好处。

神经形态计算的早期成果有很多例子:

  • 神经网格是由斯坦福大学的 Kwabena Boahen 及其团队于 2005 年开发的多芯片系统(6000 个突触)。
  • 具有紧急瞬态的快速模拟计算(FACETS),2005 年(5000 万个突触)。
  • Torres-Huitzil 的 FPGA 模型,2005 年。

最新的努力之一是 IBM 的 TrueNorth。TrueNorth 每次运算消耗大约 1/10 J,而不是通用计算中的 1/10⁹ J。回想一下,对于人类大脑来说,这个数字是 1/10 ⁶ J。因此,我们还有三个数量级要走!

最终意见

总之,计算的未来看起来将包括加速计算,以处理数据生产中无情的指数增长。然而,由于各种原因,提高单个处理器的速度很难,摩尔定律不可能永远适用——它越来越受到传热和量子力学的限制。并行计算将继续受到更大的推动,特别是 GPU 和 TPUs 等更专业的硬件,以及随着我们进入神经形态计算领域,更节能的计算将成为可能。

物联网设备的蓬勃发展带来了不同的挑战,这些挑战正试图通过边缘和雾计算等更以计算为中心的想法来应对。

****免责声明:我在这篇文章中没有提到量子计算,因为我不清楚这在不久的将来是否会成为可行的计算选择。

更多主题

对于感兴趣的读者来说,还有许多其他值得注意的话题。我建议多看看这些,如果它们引起你的兴趣,它们可能在不久的将来变得很重要:

  • 自动处理器
  • 基于神经形态尖峰的计算
  • 人工智能加速器
  • 异构计算

参考

门罗博士(2014 年)。“神经形态计算为(真正的)大时代做好了准备”。ACM的通信57(6):13–15。doi:10.1145/2601069****

达曼德拉莫德哈(2014 年 8 月)。“具有可扩展通信网络和接口的百万脉冲神经元集成电路”。科学345(6197):668–673。****

米德·卡弗(1990)。《神经形态电子系统》 (PDF)。IEEE 会议录78(10):1629–1636。土井 : 10.1109/5.58356****

金·阿姆达尔(1967 年)。“单处理器方法实现大规模计算能力的有效性” (PDF)。AFIPS 会议记录(30):483–485。doi:10.1145/1465482.1465560

戴维·罗杰斯(1985 年 6 月)。“多处理器系统设计的改进”ACM SIGARCH 计算机架构新闻。美国纽约州纽约市: ACM13(3):225–231。doi:10.1145/327070.327215国际标准书号0–8186–0634–7。ISSN0163–5964****

罗伯特·登纳德;弗里茨·盖恩斯伦;余、华年;赖德奥特,狮子座;欧内斯特·巴索斯;安德烈·勒布朗(1974)。“极小物理尺寸离子注入 MOSFET 的设计” (PDF)。IEEE 固态电路杂志。 SC-9 (5)。

凯蒂·格林(2011)。“一个新的改进的摩尔定律:在“库米定律”下,每一年半翻一番的是效率,而不是功率”技术评审

波尔,马克(2007)。“Dennard MOSFET 缩放论文 30 年回顾” (PDF)。固态电路学会。检索于 2014 年 1 月 23 日。

哈迪·伊斯玛伊尔泽达;布莱姆,艾米莉;蕾妮·圣阿曼特;Sankaralingam,Kartikeyan 伯格,道格(2012)。“暗硅和多核扩展的终结” (PDF)。

乔尔·赫鲁斯卡(2012 年)。“CPU 扩展的死亡:从一个内核到多个内核——以及我们为何仍停滞不前”极限技术。检索于 2014 年 1 月 23 日。

数据的未来是假的

原文:https://towardsdatascience.com/the-future-of-data-is-fake-694d2aa0d3d5?source=collection_archive---------14-----------------------

前几天,我和一位在旧金山工作的数据科学家同事共进午餐。我们分享了关于生活和工作的故事,并发现自己对那些经常没有足够数据的情况感到同情。这似乎一直都在发生。有时是因为你正在做一个刚刚起步的项目。其他时候,你会发现自己在和一家老公司打交道,这家公司收集的有用信息还没有他们认为的一半多。有时候,你的客户有数据,但远不足以训练他们想要的智能机器学习解决方案。在所有情况下,模式都是相同的:没有足够的点来生成干净的结果,所以您最终只能用胶带和试探法拼凑出一个解决方案。

然后我突然想到:整个全球数据科学的努力都有一个问题。T2 永远不会有足够多的好数据,因为它在世界上的分布不可避免地是无尺度的 T4。这一事实将影响我们从事的每一个项目,并塑造科技行业试图实现的一切。它还告诉我们一些关于数据科学将如何作为一门学科发展的非常重要的事情,以及我们可能能够在职业生涯中增加价值的地方。简而言之:我们可以将数据科学应用于数据科学本身,并预测未来。

对于那些不熟悉术语无标度分布的人,我应该回顾一下并解释一下。无标度分布是密度函数遵循幂律的分布。换句话说,对于 k 的某个值,f(x)=ax^-k,你可能会说,很好,但那实际上意味着什么呢?

首先,这意味着在群体中有大量的小物体,中等大小的物体,以及大的离群点的稀疏分散。更重要的是,这意味着分布没有*均值

An example power-law (Zipf) distribution, and the same function appearing as a straight line on a log-log plot (image via Matplotlib)

如果你没有处理过这种数据,你可能会想知道我在说什么。当然,你总是可以将你的总体中的值相加,然后除以项目的数量,不是吗?是的,但是在这种情况下,这个过程不会产生有意义的值。这是因为无标度分布没有集中趋势。很难说你下一步会遇到什么值,因为无论你看什么样的值,总是会有更多的点对应于较小的值,而更少的点对应于较大的值。

遵循这种模式的现象多得惊人。例如,城市规模的分布遵循一种特殊的幂律模式,称为齐夫定律。世界上任何一种语言的词频也是如此。幂律决定了外层空间岩石的大小,决定了你想检查的任何哺乳动物的血管大小,决定了自文明出现以来人类冲突中的死亡人数。尝试 Geoffrey West 的优秀著作 Scale 中引人入胜的解释。

从我们的角度来看,最重要的是,公司规模的分布也遵循这一模式,人们对网站和社交媒体*台的关注也是如此。因此,整个科技行业收集的数据不可避免地以同样的方式汇总。因此,即使全球数据分布(如果我们能够测量的话)最终证明不完全是无标度的,它也会如此接*,以至于没有区别。这解释了为什么少数组织淹没在数 Pb 的信息中,而我们大多数人却没有足够的信息。

我们都熟悉来自谷歌和网飞的故事,这些故事讲述了他们从堆积在门口的大量信息中获得的聪明见解。我怀疑我们中的许多人都想知道,尽管我们现在应该生活在大数据时代,并且已经生活了好几年,但为什么这些漂移还没有在我们最喜欢的项目面前积累起来。现在我们知道为什么了。这是因为谷歌和网飞是分布中的巨大异常值,而地球上几乎所有其他组织都填充了它们背后的曲线。

这种分布还告诉我们,抛开乐观的预期,这种情况不会改变。为什么不呢?因为在社会系统中出现的无尺度分布通常是由一个叫做优先依附的过程驱动的。

引用维基百科的话:优先依附过程是一类过程中的任何一种,其中一些数量,通常是某种形式的财富或信用,根据他们已经拥有的多少在许多个人或物体之间分配,因此那些已经富裕的人比那些不富裕的人得到更多

换句话说,数据革命不会像我们承诺的那样让大数据变得无处不在,而是会在我们已经看到它的地方堆积起来。这是因为,造成当前全球信息失衡的机制基本上不可能自行逆转。与此同时,数据的价值正在上升,所以人们不会开始免费赠送他们收集的数据。

这意味着,我们需要训练我们一直在构建的聪明的机器学习模型的所有可爱内容不太可能出现在。而那些已经拥有足够多的人最终会拥有超出他们能力范围的东西。大数据的现实已经存在,而且非常不均衡。

但是等等!消息并不都是坏的。事实上,我认为认识到这种模式的存在是解决问题的一半。这是因为虽然获得足够的真实数据通常很难,但生成虚假数据却很容易。事实上,过去几年我在 productOps 工作过的一些最令人兴奋的项目根本不需要任何外部数据,因为我一直在做这些数据。事实证明,如果你想在大规模管道投入使用之前对其进行测试,你可以做的最有用的事情之一就是模拟你认为你将会看到的流量。

当然,用虚假数据进行测试并不是什么新鲜事,但使用它的理由比以往任何时候都更加充分。简而言之:能够弥补数据短缺,并有能力按需生成现实的新数据,这是有职业价值的。事实上,我怀疑我们即将迎来一场虚假的数据革命。

考虑机器学习中生成性对抗网络的兴起。当我们使用 GANs 时,我们有效地用机器生成的内容来补充不充分的训练集,机器的工作是提供可信的人工样本,结果通常是显著的。与此同时,其他旨在限制训练材料的人工智能工具也在稳步发展,例如出色的通气管项目。

在金融科技领域,模拟市场行为的重要性至少十年来一直在增长。伯努瓦·曼德尔布罗的精彩著作《市场的不端行为》于 2007 年出版,如果说他用分形对时间序列建模的研究的影响没有立即显现,那么在随后不久的信贷危机结束时,这种影响肯定会显现出来。

然而,对于我们中的许多人来说,搜索互联网仍然是代理训练数据的最佳来源,尤其是在 NLP 项目中。但我无法想象这种情况会持续多久。随着最*由 Judea Pearl 的工作引发的统计学因果革命的加速,构建工具来产生合成数据以测试任何管道的功能限制将变得越来越容易。

因此,当发现自己生活在一个被不可磨灭的数据鸿沟所充斥的世界时,我并没有感到沮丧,而是感到乐观——甚至兴奋。我自己在复杂系统研究方面的背景推动了我如何在 productOps 建立数据科学团队,我很高兴地说,模拟构建是我们擅长的事情。但我的兴奋不止于此。我一直怀疑模拟可能会推动数据科学的未来,因为模拟使人们能够以静态模型无法做到的方式探索大规模决策的影响。现在我确定这就是我们要去的地方,我很高兴。

大数据已死。大(假)数据万岁!

数据的未来是政治性的

原文:https://towardsdatascience.com/the-future-of-data-is-political-37b1bfc83889?source=collection_archive---------26-----------------------

像数据信任和数据共享这样的概念越来越挑战现有的数据所有权模型。

Photo by Fredy Jacob on Unsplash

想象一下,在一个世界里,谷歌不会无条件地了解你的一切。想象一下这样一个世界,你使用脸书是因为他们提供了最好的服务,而不是因为你和你认识的其他人必须在上面。想象一下这样一个世界,你知道谁在给你做广告,他们为什么做广告,谁为广告付费。然后,想象一个你可以关掉它的世界。

剑桥分析公司和脸书数据丑闻引发了关于数据隐私和所有权的讨论。在#DeleteFacebook 等活动的推动下,越来越多的人对科技巨头表示怀疑。除了丑闻,数据访问和伦理是充满活力的研究领域,开放数据倡议和学术数据共享资源越来越受到鼓励。

然而,虽然两者都关心使用权和所有权,但这些部落似乎存在冲突。一方面,对数据隐私的渴望包括将数据锁起来。另一方面,开放数据倡议努力共享数据,非常反对囤积数据,无论是在个人还是机构层面。

这一冲突说明了我们所处的数据政治时代。

控制论革命

数据政治也可以描述为数据的政治经济学;谁拥有数据,谁控制数据,应该用数据做什么,当数据被整合为生产资源。数据政治是控制论的一个子集——对权力和技术控制的研究是社会。

有三种新兴的数据所有权模型,所有这些模型都需要进一步研究,并且包含在数据策略中:

  1. 自由放任数据所有权 —这就是我们目前所拥有的。数据被视为一种个体商品,在准市场系统中被“买”和“卖”。例如,脸书“购买”你的数据,“交换”免费为你提供服务。数据被定义为个人资产。
  2. 数据信任 —这是一个越来越受欢迎的想法。数据汇集在一起,并在托管成员之间共享,,而对数据的责任则体现在数据托管人的管理义务中。数据信托,根据其设计,可能类似于数据集团、数据联盟或数据契约。
  3. 数据共享——这是一个非常新的想法。基于集体共有的思想,数据共有使得许多人可以容易地访问数据。公共数据是通过汇集我们数据的单个副本而建立的(根据 GDPR 第 15 条,我们都有权这样做),消除数据垄断,迫使大型科技公司通过提供优质服务来创造价值。在这种模式下,数据基本上不再有价值,因此可以进行民主管理。

自由放任的数据所有权的问题越来越明显。然而,数据信任和数据共享也有问题,而这反过来又是自由放任的优势。

数据信任

数据信任的主要问题在于“什么是数据?”正如学者 Lisa Gitelman 所说,数据只有在被这样看待时才成为数据。比如,我们都有一个年龄。但是在进行人口普查时,我们可能想知道人口的*均年龄。因此,我们所有人都拥有并且一直拥有的一个方面(年龄)被转化为一个数据点,因为我们决定它是数据。

这揭示了所有权主张的紧张关系 —我们拥有我们的数据是因为它属于我们,还是收集数据的人拥有它是因为他们认为它是数据?回答这个问题在数据信任中至关重要,因为它决定了信任应该如何建立,以及信任者为谁服务。

一个将大型科技公司的私人数据垄断结合起来、并允许它们巩固自己在市场中的地位的数据信托,除了加剧我们目前在自由放任模式下看到的问题之外,不会有什么作用。

相反,我们可以建立一个数据信托,将创建数据的人(我们)视为其成员,并利用这种集体持有的数据垄断权与大型科技公司谈判条款。例如,如果脸书想获得更多我的数据,那么就必须与数据信托公司谈判,后者可能会迫使脸书对我向他们提供我的数据进行补偿。

这种模式的问题是,它可能会扼杀创新,为新技术公司获取数据创造数据成本。这也扼杀了那些想使用某项服务却发现该服务没有得到数据信任的消费者。这是一个自由放任模式很容易解决的问题。

数据共享空间

数据共享依赖于集体透明的原则,该原则广泛认为,如果你向其他人提供同样的访问权限,你可以获得对数据的无限制访问权限。对一些人来说,集体透明度似乎是一个不和谐的提议,尤其是那些反对 T2 自由放任所有权的核心理由是缺乏隐私的人。事实上,集体透明可能会被指责为屈服于太阳微系统公司首席执行官斯科特·麦克尼利的名言,“反正你没有隐私——克服它吧。”

保持隐私是数据共享空间面临的主要挑战。在我们当前的数据环境中,“拷贝权”的原则很有吸引力,但披露拷贝的概念——以及破坏拷贝带来的控制感——就不那么有吸引力了。隐私只是我称之为集中数据公共化的一个问题;其他措施包括确保提供的数据是真实和最新的,并确保数据的用户对自己的行为负责,以避免经济学家所说的公地悲剧。

这些问题的一个解决方案可能是整合区块链技术,创建一个分散的数据公共区。除了获得拷贝的权利,数据创建者还可以获得一个独特的数据代码,以消除其数据的匿名性。所有的拷贝都将存储在区块链上,注册一项新服务的标准程序是提供数据代码。因此,任何人都可以自由访问我们的所有数据,但我们只能被我们选择的人识别(匿名数据也可以自由获取,主要是为了研究人员的利益)。此外,区块链将记录谁在使用公共资源以及使用频率,而公共资源的变化可以通过比较区块链来验证。

然而,这不是万灵药。去中心化的数据共享需要庞大的基础设施,而所有的数据共享都需要态度上的重大转变。此外还有民主监督的问题:无论哪个机构来管理中央储存库,肯定都必须是超国家的,谁来资助、构建和监管这样一个机构仍不清楚。

谁拥有你?

数据所有权反映了劳动力市场,从中可以学到很多东西。现在,许多人觉得他们得到了一笔不公*的交易——不透明的垄断、无孔不入的广告以及主权的削弱。当这种做法出现在劳动力市场时,人们呼吁成立工会,如果不是革命的话。然而,这些呼吁只有在具备能够实现这些呼吁的机构时才能得到响应。

因此,数据所有权争论的未来是一个深刻的政治问题。我们要什么机构?我们需要什么?数据是一种个体商品吗?这是集体利益吗?如果数据是有价值的,我们不应该得到一份吗?在接下来的几个月和几年里,我们将会听到更多这样的问题,它们没有简单的答案。但是,当我们承认正在发生的数字革命,以及它是如何扰乱我们的生活的时候,我们应该问问他们。

关于本文观点的更长讨论,请参见我的论文《谁拥有未来》,点击

借钱的未来是深度学习

原文:https://towardsdatascience.com/the-future-of-lending-money-is-deep-learning-61a9e21cf179?source=collection_archive---------14-----------------------

深度学习正在成为评估信用风险的标准方式,并将很快超越人类决策。

Photo by Jordan Rowland on Unsplash

根据维基百科,银行是“接受公众存款并创造信用的金融机构”,这意味着银行的两个主要职责之一是向商业和公司客户放贷

由于不同的可能性、市场需求和客户情况,这些年来发放信贷的过程变得越来越复杂。这使得银行成为一个受到高度监管的实体,在发放贷款时,人们期望银行做出积极的反应。随着用户对速度和个性化需求的不断增长,银行和所有的信用卡发行商都在转向机器学习算法的力量

任何人都不会感到惊讶,人工智能正在加速发展,并且不会太久,直到它融入任何行业(从农业到航空航天工程)。金融行业也不例外,因为许多初创公司已经在探索更有效的替代现有金融服务的方式(例如贷款)。为了应对这一新的创新浪潮,一些现有公司也加入了这场竞赛。

在这篇文章中,我们将回顾评估信用价值的过程,以及人工智能如何增强甚至超越现有的技术。

评估信用价值的标准惯例

为了充分理解人工智能给信用风险评估带来的好处,我们应该首先理解标准实践带来的挑战。

在大多数情况下,贷款人求助于确定信誉的既定方法。这些都是基于信用体系的5c 的。五个 C 代表:

  • 人物 —借款人的信誉或还款记录、信用记录(消费者还款能力的记录)。
  • 能力—将个人收入与经常性债务进行比较,评估借款人的债务收入比 (DTI)。经常性债务是指需要持续支付的任何款项(如儿童保育支持、贷款)。债务收入比决定了在扣除经常性债务后,是否有足够的收入让借款人轻松偿还贷款。
  • 资本 —借款人投入潜在投资的金额。这种做法通常适用于抵押贷款,一些贷款人要求首付 2%-3%,以确保借款人的严重性。
  • 抵押品 —借款人提供以担保贷款的资产。这往往是汽车贷款的汽车,住房抵押贷款,甚至银行储蓄存款的个人贷款。
  • 条件 —这包括从贷款条件(如利率)到借款人无法控制的条件(如经济状况)的一切。

贷款人是否发放贷款的决定在很大程度上受到美国最大的信用机构——Equifax、Experian 和 TransUnion——提供的借款人信用评分和信用报告的影响。最常见的信用评分系统是FICO(Fair is AAC Corporation),范围在 300 到 850 之间。FICO 基于 5c 系统。FICO 分数越高,个人的信用越好。

计算 FICO 分数因人而异,但任何计算中的关键部分是支付历史、信用历史、拥有的账户、新信用和信用组合(所有类型的账户——学生贷款、抵押贷款等)。

贷款公司严格遵循 FICO 评分,很少允许任何例外。由于功能数量有限, FICO 评分也有一些不利之处,包括:

  • 根据有限数量的特征评估信用价值 。这导致执行不一定适合客户需求的更一般的决策。
  • 由于不能符合某些标准而取消有潜在信誉的人的资格。例如,一个人的信用记录对最终得分有很大影响。这自动排除了年轻人(学生)或来自第三世界国家(主要是非洲)的人。此外,如果一个人有一次或多次逾期付款,他/她很可能得不到有利的贷款条件。总而言之,评估一个人的信用价值可能会导致错误的结论,从而导致贷款人和借款人双方的损失。
  • FICO 评分系统在信用评分行业竞争不大。 由于大多数贷款人从三大征信机构获得借款人的 FICO 评分,如果一个潜在的信用良好的借款人被某个贷款人拒绝贷款,他/她很可能在任何地方都被拒绝。
  • 无法满足用户的需求。 由于过去 10 年经历的技术革命,客户对速度、准确性和易用性的期望呈指数级增长。现有的信用发行机构和信用局需要适应客户的需求,否则将被新成立的特别关注客户体验的企业所取代。

上述问题迫使我们思考更好的方法来增强现有的解决方案或创建全新的解决方案。机器学习革命的到来恰逢其时,工程师和企业应该据此采取行动。在下一节中,我将解释如何以及什么样的 ML 模型和技术可以用于评估信用价值。

评估信用价值的机器学习和深度学习方法

十多年来,标准的机器学习技术一直被应用于评估信用价值。例如,【2018 年 4 月的这篇论文比较了几种算法(3 机器学习和 3 深度学习)的性能,以确定一家公司是否会拖欠银行贷款。这 3 种机器学习算法分别是 【弹性网】 (逻辑回归的扩展)随机森林梯度提升 。据观察,梯度提升优于所有模型,包括基于深度学习的模型。这证明,使用正确的特征工程,标准的机器学习技术仍然与评估信用价值相关。

然而,深度学习的潜力不容忽视,对于信用风险评估等任务,DL 模型超过标准 ML 模型只是时间问题。2018 年的另一篇论文,探索了应用深度神经网络预测信用卡潮解的可能性。在从巴西一家大型银行获得的数据集上评估了 5 层 DNN,该数据集包含 711,397 个信用卡所有者记录,其中 0.92 个是拖欠的。该模型在 F1 得分和总体准确性上均优于现有的解决方案,如 决策树朴素贝叶斯逻辑回归

在后面的研究中,表明深度神经网络确实擅长在复杂和高度非结构化的数据上检测风险客户。随着越来越多的数据变得可用,越来越多的人能够使用低成本计算能力运行繁重的 DNN 模型,深度神经网络无疑将成为处理信用风险预测的标准方式。

深度学习评估信用价值的问题

尽管 DL 模型已经显示出改变信用风险评估方式的潜力,但一些挑战仍然没有解决。

其中一个困难在于这样一个事实,即深度学习模型需要有一定程度的可解释性。换句话说,政府要求贷款人提出合理的论据,说明为什么信贷决策被认为是公*和公正的。然而,深度神经网络充当黑盒模型,数据科学家发现很难解释输出背后的原因。

目前,正在进行一项紧张的研究来寻找这个问题的答案。例如,在最大的人工智能会议——NIPS 2018上,研究人员将金融研讨会专门用于主题“人工智能在金融服务中的挑战和机遇:公*、可解释性、准确性和隐私的影响”。这包括一些有趣的命题,如“对信用风险评分的全球解释”,BBVA 银行的研究人员对复杂的 DNN 模型的决策函数进行采样,以学习一种替代性的和更可解释的分类器。另一种方法“带有反事实解释的可解释信贷申请预测”,旨在为每个输出生成反事实解释。这些解释采用纯文本的形式,分享具体决策(发放贷款或不发放贷款)的原因,以及扭转结果所需的最小输入变化。一个示例解释可能是:

您的申请被拒绝了,因为您的年收入是 30,000 美元,您的当前余额是 200 美元。如果你的收入是 35,000 美元,当前余额是 400 美元,所有其他值保持不变,你的申请就会被批准。

尽管面临这些挑战,行业参与者仍然自信地应用深度学习技术来进行更有效的决策。像新贵(使用非传统变量的个人贷款) SoFi (在线学生贷款、抵押贷款和个人贷款)和 Affirm (消费者在销售点使用的小额贷款以资助购买)这样的公司已经将 DL 整合到他们的决策过程中。

随着技术的进步,更多的公司将开始着眼于创造快速、实惠和个性化的借贷体验。现有企业要么适应这种新的决策方式,要么被新来者取代。

感谢您的阅读。希望你喜欢这篇文章🤩我祝你今天过得愉快!

机器学习的未来

原文:https://towardsdatascience.com/the-future-of-machine-learning-ce0a9dc18cb8?source=collection_archive---------9-----------------------

与杰夫·迪恩一起展望曼梯·里的未来

Photo by Arseny Togulev on Unsplash

在这个人工智能时代,机器学习是一个时髦的话题。计算机视觉和自然语言处理领域正在取得突破性进展,这是没有人能够预料到的。我们越来越多地在生活中看到这两者,你的智能手机中的面部识别,语言翻译软件,自动驾驶汽车等等。看似科幻的东西正在成为现实,我们获得人工通用智能只是时间问题。

在这篇文章中,我将涵盖 Jeff Dean 的主题演讲,关于计算机视觉和语言模型的进步,以及从模型构建的角度看,ML 将如何走向未来。

计算机视觉

Photo by Alex Knight on Unsplash

今天,机器学习领域正在经历指数增长,尤其是在计算机视觉领域。今天,人类的错误率在计算机视觉中只有 3%。这意味着计算机已经比人类更擅长识别和分析图像。多么惊人的壮举!几十年前,计算机是一个房间大小的大块机器;今天,他们能以我们从未想过的方式感知我们周围的世界。

从 2011 年的 26%误差到 2016 年的 3%误差,我们取得了巨大的进步。我倾向于认为,计算机已经进化出了可以工作的眼睛。—杰夫·迪恩

现在,这一成就——随着机器学习的进步而成为可能——不仅仅是计算机极客和人工智能专家的庆祝,它还具有拯救生命和让世界变得更美好的现实应用。在我大谈计算机视觉的救命应用之前,让我向你展示一下计算机视觉的力量。

比方说,我给你 10,000 张狗的照片,让你把它们按照各自的种类分类,你能做到吗?嗯,你可以,但你必须是一个狗专家,这将需要几天的时间来完成。但是对于一台计算机(带有图形处理器),这只需要几分钟。计算机视觉的这种不可思议的能力开启了大量的应用。

计算机视觉的应用

杰夫·迪恩给出的计算机视觉的一个典型应用是在糖尿病视网膜病变中——这是一种影响眼睛的糖尿病并发症。现在要诊断它,需要进行广泛的眼部检查。在缺乏医生的第三世界国家和农村,使用计算机视觉进行诊断的机器学习模型将非常有益。与所有医学成像领域一样,这种计算机视觉也可以作为领域专家的第二意见,确保他们诊断的可信度。一般来说,计算机视觉在医学领域的目的是复制专家的专业知识,并将其部署在人们最需要的地方。

NLP 和变压器

Photo by VanveenJF on Unsplash

语言模型是帮助机器理解文本并执行翻译文本等各种操作的算法。杰夫·迪恩认为,语言模型已经取得了很大进展。

今天,计算机可以比以前更深层次地理解文本段落。尽管他们还没有达到像我们人类那样阅读整本书并理解它的水*,但理解几段文字的能力对于改善谷歌搜索系统等事情来说是非常重要的。

谷歌宣布的最新自然语言处理(NLP)模型 BERT 模型已经被用于他们的搜索排名算法,这有助于增强以前非常困难的无数不同类型查询的搜索结果。换句话说,搜索系统现在可以更好地理解用户进行的不同类型的搜索,并帮助提供更好、更准确的答案。

“深度学习和机器学习架构将在未来几年发生很大变化。你已经可以看到很多这种情况,现在有了 NLP,唯一的游戏基本上是变压器网络,”— Yann LeCun

这些基于 Transformer 的翻译模型在衡量翻译质量的 BLEU 评分上显示出惊人的进步。因此,利用 BERT 等转换器的机器学习架构越来越受欢迎,功能也越来越多。

今天 ML 的问题是

Photo by Charles on Unsplash

在主题演讲中,这位谷歌高级研究员提到了机器学习开发者今天用来执行各种单元任务的原子模型。他认为这些模型效率低,计算量大,需要更多的努力才能在这些任务中取得好的结果。

具体来说,在当今的 ML 世界中,专家找到了他们想要解决的问题,他们专注于找到正确的数据集来训练模型并执行该特定任务。迪恩认为,通过这样做,他们基本上从零开始——他们用随机浮点初始化模型的参数,然后试图从数据集中学习所有任务。

为了详细说明这个问题,他给出了一个很好的比较,是这样的:

“这类似于当你想学习新的东西时,你忘记了所有的教育,你回到了婴儿时期,现在你试图学习这项任务的一切”

他将这种方法比作人类在每次想要学习新东西时变成婴儿,取出一个大脑并放入一个不同的大脑。这种方法不仅计算量大,而且需要更多的努力才能在这些任务中取得好的结果。杰夫·迪恩提出了一个解决方案。

曼梯里的圣杯

Photo by Marius Masalar on Unsplash

杰夫认为 ML 的未来在于一个伟大的大模型,一个多功能的模型,可以做很多事情。这种优步模型将消除创建完成特定任务的模型的需要,而是用不同的专业知识来训练这个大型模型。想象一下,一个计算机视觉模型可以诊断糖尿病视网膜病变,对不同物种的狗进行分类,识别你的脸,并同时用于自动驾驶汽车和无人机。

他还宣称,模型通过稀疏地激活所需的模型的不同部分来运行。模型大部分时间 99%都是空闲的,你只需要在需要的时候调用正确的专家意见。

挑战

迪恩认为,这种优步模型是 ML 的一个有前途的方向,工程挑战非常有趣。建立这样的模型会产生许多有趣的计算机系统和机器学习问题,如模型的可扩展性和结构。

提出的主要问题是:

模型将如何学习如何路由最合适的模型的不同部分?

要实现这样的突破,需要在机器学习研究和数学方面取得更多进展。

摘要

计算机视觉和 NLP 将继续在我们的生活中发挥重要作用。但这种进步也有负面影响,例如中国使用面部识别对人实施评级系统(直接来自电视剧《黑镜》的一集)和假新闻的泛滥。我们必须在机器学习方面取得进展,同时考虑到算法偏见和伦理,这些偏见和伦理提醒我们,我们是上帝的创造,而不是创造者。

至于优步模式,有很多证据证明,我们正一步步向它靠*。例如,迁移学习——一种为不同目的重用模型的方法,可以用更少的数据和多任务学习获得良好的结果——一种在五六个相关事物的小规模上运行的模型,都倾向于使事情运行良好。

因此,合乎逻辑的说法是,通过扩展这些想法——迁移学习和多任务学习——并在它们的基础上发展,实现 uber 模型是可行的,这只是时间问题,而不是如何实现的问题。

感谢您阅读我对 ML 未来的摘录和我对 Jeff Dean 主题演讲的概要。我希望你对机器学习和人工智能的未来有所了解。

点击观看完整视频

查看我的超学习数据科学系列!

[## 如何“超级学习”数据科学—第 1 部分

这是一个简短的指南,基于《超学习》一书,应用于数据科学

medium.com](https://medium.com/better-programming/how-to-ultralearn-data-science-part-1-92e143b7257b)

关注我在 LinkedInTwitter 上的更新。

热门移动应用趋势:(人工智能,人工智能,增强现实,虚拟现实,IOT)-2021 年版

原文:https://towardsdatascience.com/the-future-of-mobile-app-trends-ai-ml-ar-vr-iot-2019-edition-cde3edb338f7?source=collection_archive---------25-----------------------

Technology vector created by freepik

你知道吗!“2021 年的移动应用开发趋势是行业发展方向的一个缩影”。此外,不要忘记在过去的几年里,移动设备和应用程序正随着新的趋势不断发展,而有些正在改进现有的趋势。

根据 Statista 的最新报告,智能手机用户总数预计将达到 25 亿左右,而 2016 年为 21 亿。

此外,不断增长的移动应用程序下载数量呈指数增长。虽然 2018 年的规模为 2054 亿,但预计到 2022 年将达到 2582 亿。

Image Source

因此,移动应用程序的未来趋势没有停止的迹象,预计在未来几年将会有巨大的增长。这一事实引起了 雇用软件开发人员 的热潮,他们欢迎创新的移动应用技术和趋势,这些技术和趋势将统治 2021 年,并帮助你在竞争中保持领先地位。

这个博客是一些有影响力的趋势的焦点,这些趋势肯定会在未来几年将技术提升到一个新的水*。

1。人工智能&机器学习虚拟助手时代的开始

尽管事实上,人工智能是一个突出的名字在过去几年中,它仍然继续是一个专横的技术趋势在未来几年。

此外,人工智能技术有许多这样的方面,可以为你的业务带来大量好处,但尚未被发现。最*,人工智能与基于机器学习的应用相结合是一个新的优势。

这种融合在分析庞大的组织数据方面取得了出色的成果。此外,它也有助于管理层获得有价值的、有说服力的见解。

从一开始,AI 和 ML 就在 移动应用开发服务 中挖得很深。借助这些技术,评估数据变得简单易行,同时为您的用户提供无与伦比的个性化体验。

AI 和 ML 的未来趋势:

  • 人工智能芯片
  • 神经网络之间的互操作性
  • 自动化机器学习

2。可穿戴设备——未来的必备配件

不可否认的事实是,可穿戴行业正在经历一场巨大的热潮。事实上,根据 Statista 的数据,可穿戴设备市场目前的规模为 532 亿美元,预计到 2022 年将达到 732.7 亿美元。

Image Source

这意味着,没有明显数量的投资预留给市场,但很快可穿戴设备这个词将变得像现在的智能手机一样丰富。

到目前为止,每一个可穿戴设备的控制面板都是智能手机。这意味着,要开发一个可穿戴设备,它必须与相应的设备连接,并且它们必须离得很*。

但是,根据 UNA的联合创始人 Ryan Craycraft 的说法,手机将不再是可穿戴设备连接的中心,而是将与网络甚至我们的身体进行更普遍的连接。

因此,看着可穿戴技术越来越受欢迎,雇佣最好的移动应用程序开发人员 开发出优秀的应用程序,将在 2021 年及以后占据主导地位。

可穿戴设备的未来趋势:

  • 可穿戴技术在 2021 年健身趋势中占据领先地位。
  • 未来可穿戴设备的另一个关键因素是——智能服装。

3。物联网不仅仅是一个流行词

你知道,智能物体或智能事物这个词是从哪里来的吗?

“智能物体”或“智能事物”这个词最初是由相对较新的技术——“物联网”创造的。简而言之,物联网是在网络连接的情况下,嵌入软件、传感器和电子设备中的对象和事物的物理网络。

现在,您可能会清楚为什么物联网是行业的当务之急。

  • 它改善了技术生态系统。
  • 它在教育行业中起着至关重要的作用。
  • 它能够在没有任何人工干预的情况下收集和交换消费者数据。

因此,一定要依靠最好的软件开发服务,因为物联网技术已被证明是您企业的游戏规则改变者。

物联网未来趋势:

  • 无人驾驶汽车
  • 配备有更多安全性的路由器
  • 智能家居和智能设备

4。增强现实/虚拟现实——应用行业的新常态

AR 和 VR 技术,两者都很神奇!但是,到 2021 年,他们的用例不再局限于游戏应用。

技术狂热者已经在寻找一种创新的方法来充分利用这两种技术。事实上,这些技术在社交*台上被用于品牌推广,以及通过“屏幕之外”的 AR/VR 应用瞄准潜在客户。

例如,Snapchat 和 Instagram 已经发布了他们的 AR 滤镜,可以将任何人脸转化为无数的数字角色。

AR/VR 未来趋势:

  • 医疗保健和制造业中的 AR
  • 移动 AR 颠覆
  • 营销和广告中的 AR

5。灯塔科技——预计有十亿美元市场

Beacon technology 是移动应用未来趋势的早期参与者。

这项技术有可能在更个性化的层面上满足令人难忘的客户服务。

你一定在想什么是“灯塔”?

信标是一种微型发射器,允许通过蓝牙与其他设备进行通信。它们也是基于位置的搜索的福音。这项技术给你的企业带来了巨大的成功。

单个信标设备与强大的移动应用程序的正确组合有助于您扩大客户群,完成诱人的产品展示,并创建清晰的映射。

因此,请确保与最佳的移动应用开发服务 保持一致,以创建 Beacon 技术和移动应用的完美结合,从而实现业务增长。

信标技术未来趋势:

  • 移动支付信标
  • 灯塔珍藏狩猎

6。聊天机器人——移动市场的螺母&螺栓

聊天机器人实时对用户的查询提供个性化的响应。更具体地说,它们是完全自动化的,没有人工干预。

最初,机器人是作为脸书、Slack 和 Skype 上的一个消息应用程序出现的。但是,随着当前场景的发展,人工智能的进步也使得将聊天机器人集成到您的原生移动应用程序中成为可能。

Statista 表示,“ 聊天机器人市场的规模预计到 2025 年将达到 12.5 亿美元。”

有了这么多的好处提供给你的最终客户,虚拟助理将是一个证明你的移动应用程序开发的优势。

所以,做好准备,给你的顾客一个更个性化的体验。

聊天机器人的未来趋势:

  • 聊天机器人的语音识别与表达。
  • 聊天机器人对客户洞察力的影响将会增加,同时用户行为的可预测性也会增加。
  • 社交信使应用将推动聊天机器人的营销。

7 .。移动支付/移动钱包——无摩擦支付*台

毫无疑问,移动支付正在兴起。事实上,对移动支付解决方案的需求正在上升,而“安全性”是其他 软件开发服务 中最关心的问题,移动钱包的使用在未来几年只会加速。

尽管事实上,无摩擦支付方式是消费者希望在他们使用的移动应用程序中看到的苹果,但转向安全的移动支付方式至关重要。

因此,如果你正在考虑升级你的移动应用程序,使其具备能够提升你的目标受众购物体验的功能,确保他们能够虚拟支付。

移动钱包/移动支付未来趋势:

  • 安全可靠的移动钱包
  • 非接触式支付
  • 大约 20 亿移动钱包用户

8。基于云的技术移动应用 —未来移动应用的当务之急

虽然,许多人仍然认为云是一个奢侈的选择,但在 2021 年,情况就不一样了。

世界迎来了新的黎明,这个黎明充满了云带来的优势和可能性。

为了更好地理解,让我们举一个例子,最大限度地降低托管成本、提高加载能力和简化业务运营是云过去提供的一些好处。然而,如今有许多基于安全的问题正在通过云协助得到解决,使得 移动应用开发 更加安全、可信和快速。

此外,借助 Dropbox、Sliderocket、AWS 等基于云的技术应用,可以构建直接在云上运行的强大应用。

那么,你应该更期待什么呢?

“更强大的应用程序”,需要智能手机的最小存储空间。

云计算未来趋势:

  • 混合云解决方案
  • 量子计算
  • 云服务和解决方案的演变

9。区块链技术 — 超越智能合约的洞察力&比特币

自首次亮相以来,区块链技术已经在 IT 领域开辟了一个充满新鲜和惊人机遇的世界。

而在 2018 年,每个人都听说过热门词汇“加密货币”,并且大多看到了区块链技术在创建“智能合同”中的应用。但实际上,区块链比人们想象的更有用。

例如,通过适当利用区块链,可以构建分散的移动应用程序。

等等!“分散式移动应用”这个术语对你来说是新的吗?

别急,让我们快速浏览一下是什么。

分散式移动应用程序或 Dapps 基本上是一个不属于任何人的应用程序,但它也不可能关闭它,也没有任何停机时间。

换句话说,区块链预计将通过培育分散化移动应用的市场,在移动应用市场做出更大贡献,就像比特币区块链对金钱的贡献一样。

区块链技术未来趋势:

  • 资产令牌化
  • 加密空间和游戏
  • 在加密货币交易所交易

10。5G 技术——提升您的应用加载速度

4G LTE 为客户带来了惊人的好处——流媒体、高清视频、快速互联网浏览、可靠的视频会议和在线游戏。

现在,移动应用和电信服务提供商正在向 5G 技术靠拢。但是,5G 技术对顶级 Android 或 iPhone 应用开发公司 以及数十亿可能从新的移动体验中受益的最终用户意味着什么?

当然,人们期待更快的移动互联网,但这只是一个改变游戏规则的优势。

  • 延迟降低到接*零
  • 最大化连接密度

对手机 app 开发者意味着什么?

5G 技术在我们的企业和家庭中开创了一个互联和永远在线的设备世界,这些设备实时共享数据,并享受速度和连接可靠性的新范式。所以,让我们看看 5G 对开发者来说意味着什么。

  • eMBB(增强型移动宽带)

5G 最初将致力于更大的带宽,以提高上传或下载速度,改善延迟。

因此,如果流式 4K 或 360 度视频或移动 AR/VR 看起来很奇怪,不切实际,那么请为这种变化做好准备。

  • URLLC(超可靠低延迟通信)

对机器的实时控制和其他面向任务的任务预计会晚一点到来。

实时虚拟现实游戏、自动驾驶汽车、自动手术、工厂流水线自动化是 URLLC 可以提供的优势列表中的几个例子。

  • mMtc(大规模机器类型通信)

结合 5G 技术提供的延迟进步和卓越的连接设备密度,确保雇用最好的移动应用程序开发人员 随着 5G 的成熟,他们将能够熟练地与技术融合。

但是,当涉及到您的移动应用程序开发时,不要冷淡对待。必须考虑设备功能和网络要求,以确保应用程序工作完美,符合用户的期望。

总结:

2021 年及以后的移动应用趋势:随着新技术不时出现, 软件开发公司 也在以光速巩固他们在移动应用市场的足迹。因此,无论你是企业家、中小企业或技术爱好者,你都需要跟上这些移动应用程序的发展趋势,以便在这个层次中占有一席之地。

因此,遵循上面提到的移动应用未来趋势,最好的开发者和公司提供独家的 移动应用开发解决方案 ,帮助企业满足客户的潜在需求并发展业务。

自然语言处理的未来

原文:https://towardsdatascience.com/the-future-of-natural-language-processing-2fb35d6ed11e?source=collection_archive---------12-----------------------

数据(和计算机)科学家长期以来一直致力于提高算法从自然(人类)语言中获取意义的能力——无论他们是试图创建一个机器人来回答用户在其网站上的问题,还是确定人们是喜欢还是讨厌他们在 Twitter 上的品牌。

坏消息是,您仍然需要理解大量的概念来优化您的结果。好消息是,有了像 BERT 和 ERNIE 这样的工具,从自然语言处理(NLP)中获得好的结果比以往任何时候都更容易——即使数据集和计算预算适中。另外,谁不想和芝麻街剧组一起做 NLP 呢?!

自然语言处理简史

让我们先简要回顾一下这门学科的历史。可以将 NLP 系统的开发分为三个主要阶段:

  • 规则引擎 —在早期,大多数 NLP 系统都是基于复杂的手写规则集。好消息是它们很容易理解,但是它们做得不是很好(它们是可以解释的,但是不是很准确)
  • 统计推断——在 80 年代,研究人员开始使用词性标注(标注名词、动词等),使用隐马尔可夫模型返回统计上可能的含义以及单词之间的关系
  • 深度学习——在过去的十年里,神经网络已经成为解决大多数非*凡的 NLP 问题的最常见方式,分层技术,如 CNNRNNLSTM ,以提高特定类别的 NLP 任务的性能

深度学习在过去十年中改变了 NLP 的实践。无论你是在尝试实现机器翻译、问题回答、短文本分类还是情感分析,都有深度学习工具可以帮助解决这些问题。然而,从历史上看,创建正确的网络然后训练它的过程需要大量的时间、专业知识、庞大的数据集和大量的计算能力(这是昂贵的)。

(机器)用芝麻街学习

NLP 的整个"芝麻街"革命始于 2018 年初一篇讨论 ELMo 表象的论文(ELMo 代表Eembeddings fromLlanguageModels)。ELMo 是一种技术,它使用深度双向语言模型,在大型文本语料库上进行预训练,以提高一系列 NLP 任务的性能。

那是什么意思?我们来分解一下。“深度”指的是它使用多层神经网络的事实(如“深度学习”)。双向?历史上大多数语言模型都是单向的,所以对于英语来说,他们会从左向右读单词。在双向模式下,所有的单词被同时接收。这允许在给定充分训练的情况下更准确地推断上下文。预训练意味着已经在非常大的通用语言数据集上训练了模型。在图像识别和 NLP 中,预训练已经被证明能够显著提高精度和/或减少模型最终训练所需的时间和成本。

谷歌的伯特

2018 年 11 月,谷歌开源了 BERT 。BERT 代表BI directionalEn coderR代表来自 T 变压器。这是一种情境预训练的新技术。上下文意味着它考虑了给定单词周围的单词,因此与流行的 Word2Vec 模型等上下文无关的模型不同,在 BERT 中,bank 在“银行帐户”和“河岸”中不是同一个概念。

BERT 利用了许多现有方法的概念,包括 ELMo 和 ULMFiT 。BERT 的核心进步是它屏蔽了任何给定输入短语中的不同单词,然后估计各种单词能够“填充该槽”的可能性。

除了打破处理基于语言的任务的多项记录,包括其在斯坦福问答数据集上的表现,BERT 还大大降低了训练语言模型的成本和复杂性。正如他们在的博客文章中所说,“通过这个版本,世界上的任何人都可以在单个云 TPU 上在大约 30 分钟内,或者使用单个 GPU 在几个小时内,训练他们自己最先进的问答系统(或各种其他模型)”。

要实现一个分类任务,比如情感分析(根据短语表达的主要情感对短语进行分类),只需要在 Transformer 输出之上添加一个分类层。

对于需要将一个问题映射到大量文本中的答案的问答任务,需要为文本中任何给定问题的答案的起点和终点添加两个额外的向量。

对于命名实体识别(NER——识别特定实体,如人、公司或产品),可以通过将每个令牌的输出向量输入预测 NER 标签的分类层来训练模型——因此它只是另一个分类器。底线是,即使只有很小的数据集和有限的预算和经验,使用 BERT,您也可以在很短的时间内创建一个最先进的 NLP 模型。

XLNet

伯特的经营方式有几个弱点。通过将它屏蔽的单词视为独立的,它不会从训练数据中学习到尽可能多的东西,并且通过不将屏蔽令牌传递给输出,它会降低微调结果的有效性。

2019 年 6 月,谷歌大脑团队成员发表了 XLNet 论文。XLNet 通过使用一种叫做“置换语言建模”的技术,避免了 BERT 遇到的问题。在置换语言建模中,模型被训练为像传统语言模型一样预测给定在前上下文的一个标记,但是它不是顺序预测标记,而是以随机顺序预测它们。底线是 XLNet 在许多关键的自然语言处理任务上超过了 BERT,并且提升了技术水*。

完成阵容

不甘示弱(无论是计算效率还是芝麻街引用),2019 年 3 月,百度研究团队推出了厄尼,随后在 2019 年 7 月推出了厄尼 2.0 。ERNIE 代表通过 kNowledgeIntEgration 得到的略微复杂的增强的表示,它汇集了 BERT 使用的许多概念,但也匹配来自其他资源(如百科全书、新闻渠道和在线论坛)的语义元素信息。例如,知道哈尔滨是中国黑龙江省的省会,并且知道哈尔滨是一个冬天有冰和雪的城市,当与像 BERT 这样的模型相比时,它可以在执行许多 NLP 任务方面做得更好,该模型将其对世界的知识限制在它被训练的文本上。虽然 ERNIE 方法的一些驱动因素旨在应对使用中文的独特挑战,但 ERNIE 2 在中文和英文的一些关键 NLP 任务中似乎都优于 BERT 和 XLNet

下一步是什么?

我们正处于 NLP 领域快速变化的时期,但在不到 18 个月的时间里,预训练深度学习解决方案已经至少有四项实质性突破,没有理由相信不会有更多的突破。

目前,下载源代码、使用 TensorFlow 运行一切、将最终层添加到网络并使用您的数据集对其进行训练仍需要一些时间。但是很明显,随着该领域的成熟,执行 NLP 的门槛将会降低,结果的质量将会继续提高——特别是对于小型数据集。

原载于 https://flatironschool.com

正规化的游戏

原文:https://towardsdatascience.com/the-game-of-regularization-91442b3be862?source=collection_archive---------14-----------------------

机器学习中使用的不同正则化技术的直观解释

在机器学习中,正则化是一种通过在代价函数中添加惩罚项来解决过拟合问题的方法。我们先来了解一下,

什么是过度拟合,为什么它是一个问题。

在解决机器学习问题时,我们首先用训练数据训练我们的模型,最后概括解决方案(测试机器学习模型学习的概念在多大程度上适用于模型学习时看不到的特定数据点)。如果我们的模型太复杂,就会导致

较高的测试误差,尽管训练误差要低得多。但一个自然的问题是 为什么是什么叫复杂型号 让我们以为例。

假设我们正在用逻辑回归模型解决一个简单的二元分类问题。让我们红色点是 A 类,蓝色点是 b 类。现在

source : wikepedia

如果我们试图完美地拟合我们的决策边界,也有可能我们也会拟合噪声点(潜在的异常值)。结果,模型将不会学习关于数据的适当模式(并且对于较小的数据集,它将仅仅记忆所有点),这可能导致更高的概括(读取测试)误差。

为了避免模型中的过度拟合,我们添加了一个正则化项,这将有助于减少泛化误差。让我们列出我们拥有的各种选择:

  1. L1 正则化:如果我们看代价函数,L1 正则化是系数的绝对值之和。简单地说,添加它是为了保持值

cost function with L1 regularization

在一定范围内的成本函数。使用 l1 正则化的主要优点是它在解决方案中产生稀疏性(解决方案的大多数系数为零),这意味着不太重要的特征或噪声项将为零。它使 l1 正则化对异常值具有鲁棒性。

  1. L2 正则化:在 L2 正则化的情况下,我们添加以下的*方值

cost function with L2 regularization

系数而不是绝对值。在这两种方法中,lambda 是一个超参数,用于调整正则化。就结果而言,l1 和 l2 之间的主要区别在于,对于不太重要的特征,l2 项的系数将非常低,但决不会精确为零。

3.弹性网:当 l1 和 l2 正则项一起作为罚项时,称为弹性网正则化。

太酷了。但是 如何选择最适合我的正规化 ?这主要取决于手头的问题。我们总是可以借助交叉验证来为特定问题选择性能更好的方法。对于大维度数据,l1 通过为不太重要的特征赋予零系数来提供更好的特征可解释性。

结束注释:

在本文中,我们讨论什么是过拟合,以及我们如何使用正则化来最小化泛化误差。在广泛的机器学习中,你会发现这只不过是一个偏差方差权衡的游戏,模型拟合得越好,结果就越好。希望这篇文章能帮助你掌握基本知识。快乐学习!

参考文献:

如果你想深潜,请点击下面的链接

  1. http://enhancedatascience . com/2017/07/04/machine-learning-explained-regulatory/
  2. https://developers . Google . com/machine-learning/速成课程/正则化稀疏化/l1 正则化
  3. https://stats . stack exchange . com/questions/184019/when-will-L1-regulation-work-better-L2-and-反之亦然

三维直线和*面的几何解释

原文:https://towardsdatascience.com/the-geometric-interpretation-of-3d-lines-and-planes-e67b51351bfd?source=collection_archive---------11-----------------------

线性代数是微积分的一个分支,其对象在ℝ.之外这些对象可能是空间中的坐标(因此是点)或多元方程形式的点的组合。

每当我们处理超过 3 个维度的东西时,物理上是不可能将我们的对象可视化的。因此,在这篇文章中,我将提供一个 3D 环境中点、线、面的几何解释,这样你就可以将这些概念扩展到更高的维度。

一般来说,ℝn 是一个坐标空间,或者一组坐标,每个坐标都有 n 个分量。因此,在ℝ3 工作时,我们的坐标看起来会是这样的:

每个坐标在空间中可以表示为点或向量:

最后,这些对象的一个非常重要的属性是正交性:实际上,如果两组坐标/向量的内积等于 0,则称它们是正交的(这意味着垂直)。在我们的案例中:

现在,我们如何在 3D 空间中表示直线和*面呢?

直线

直线是一个没有宽度的无限物体,其特征在于方向 v 。让我们从一个简单的例子开始,一条线穿过我们的轴的原点。让我们考虑一条方向为 v 的直线 r 。我们想计算一般点 p 的那条线的一般方程。这个想法是我们需要拉伸我们的向量 v 直到点 p 。为此,我们将使用所谓的拉伸系数 t:

基本上,以向量 v 为度量单位,我们可以向相同方向(如果 t > 0)或相反方向(如果 t < 0)拉伸(或缩短)我们的向量 v 。因此,对于位于 r 上的一般点,我们有以下等式:

这个公式叫做直线的参数表达式。这是一个动态表达式,因为它描述了参考系统中的一条直线,并且它取决于 t。即,如果 t=时间,我们有一个起点(t=0),那么将来会发生的事情(t>0)和过去已经发生的事情(t <0).

Now, imagine we want to define a line which does not pass through the origin of our axes, but always having direction v )。现在它将通过一个给定点 q. 所以我们要计算下图中红线的一般方程:

如果我们回忆一下如何计算两个向量之间的差:

我们可以如下进行。首先,让 p 是我们直线上的某个点 r 。然后,我们计算 pq 之间的差,这将产生一个*行于 v 的向量(根据定义,它是我们直线 r 的方向),但是偏移了某个值。因此:

其中, q 是我们向量的新原点。从上面的图片中,您可以看到 t 是大于 1 的正数(因为产生的矢量方向相同,但幅度更大)。新的等式将是:

其中偏移值等于新的原点。

既然我们已经清楚了直线的几何形状,让我们转向*面的几何形状。

飞机

*面是由两个特征表征的空间中的对象:

  • 方向:它是一条与*面正交的直线。

对于每个方向,都有无限数量的*面:

因此我们需要第二个元素来隔离其中一个。

  • 点:是直线穿过*面的点,我们称之为 q

现在,我们如何定义一个*面的方程?让我们分析位于该*面上的点的性质:

不管它们的位置如何,它们中的每一个与交叉点 q 之间的差必须垂直于方向 v 。因此,由于正交性,我们知道,考虑到一般点 p :

如果我们扩展上面的等式,我们得到:

请注意,如果红色括号中的组件为空,则*面将穿过原点。

让我们练习一下

我想用一个非常简单的例子来结束这篇文章,这个例子将帮助你想象这个任务,并使用直线和*面的概念。

假设我们有一个*面的方程,它的方向 v 和属于该*面的一个点的坐标。

我们要计算对称点 k,k’相对于我们*面的坐标。想法是这样的:

  • 计算穿过 k 并与*面正交的直线 r 的参数方程:

  • 求*面和直线相交点的参数 t 的值:

  • 将获得的 t 的值加倍,这样我们就可以获得 k' 的值(实际上, qkk' 的距离相等):

最终考虑

将你管理的对象形象化是全面理解它们非常重要的一步。然而,在现实世界中,问题的变量往往不同于众所周知的长-宽-高。在经济场景中,我们被要求处理数百个变量,可能是商品、国家、市场、宏观经济因素等等。在这些情况下,不可能将你正在管理的东西可视化,但至少在 3D 环境中有这样的想法会使这些推理更容易、更直观。

协方差的几何意义

原文:https://towardsdatascience.com/the-geometric-meaning-of-covariance-f8e6df967111?source=collection_archive---------12-----------------------

统计学和数据科学中理解协方差的几何方法。

对于大小为 N 的样本,您可能以前见过类似于“样本协方差”的公式:

启发性地,协方差告诉我们随机变量 X 和 Y“一起移动”或“共变”(相对于“反变”)远离它们的均值多少。如果 X 和 Y 是独立的,那么我们期望 X 和 Y 在相同方向上的移动量与它们在相反方向上远离*均值的移动量一样多,这意味着协方差应该是 0。如果协方差为正,这大致意味着 X 和 Y 的协变大于反变,反之亦然,如果协方差为负。

协方差可能看起来有点迟钝,也许是任意的。你可能认识到它的一些数学特性,如双线性和对称性:

但是你可能很难想象它到底代表了什么。但事实证明,如果你熟悉线性代数,样本协方差有一个简单(也有点漂亮)的几何描述。我们将通过一系列简单的变换得到这幅图。

第 0 步(背景):我们要建立自己的背景。我们从收集具有 n 个观察值的样本开始,其中每个观察值记录两个连续变量的值:x 和 y。我们将观察值 I 上的变量 x 的值标记为 Xᵢ,将观察值 I 上的变量 y 的值标记为 Yᵢ.具体来说,也许 Xᵢ是你样本中第 I 个人的身高,Yᵢ是你样本中第 I 个人的体重。我们想知道:这两个变量是否以某种方式相互关联?

我们的示例数据可能如下所示:

Example of N=3 Observations

这些数据绘制在双轴上,如下所示:

请注意,当我们从一个观察点移动到另一个观察点时,橙色和蓝色的点似乎在一起移动。这表明在这个数据中身高和体重之间有很大的协方差。

第一步(调整):从每个变量中减去观察到的*均值,用 N-1 的*方根(比观察次数少一)重新调整:

减去*均值的原因相当简单:我们只关心 X 和 Y 如何偏离它们的*均值。除以*方根 N-1 有点复杂,但我们可以把它看作一个标准化步骤:我们希望样本中每个变量的均值的期望*方差和不依赖于样本的大小。这一标准化步骤使我们能够更容易地提取统计相关信息,并比较具有不同数量观察值的样本。使用 N-1 而不是 N 的原因称为贝塞尔校正,如果我们希望每个变量的均值的期望*方差和是该变量实际总体方差的“无偏估计量”,这是必要的。

但是你不需要理解前面的任何一段来理解这种转换:我们只是移动和重新调整我们的原始随机变量,得到的调整变量 X̃和 Ỹ都有均值 0。

第二步:到目前为止,我们一直认为 X 和 Y 是属性函数(也就是说,身高和体重是为每个人分配一个实数的函数)。但是我们也可以认为 X̃和 Ỹ决定了存在于 N-1 维向量空间 v 中的向量 x 和 y,其中向量 v 定义为:

这里是 x 的第 I 个坐标(分别为。 y )正好是 X̃ (resp。Ỹ)进行第 I 次观察。向量空间 v 继承了ℝᴺ的一个内积(标准的点积),所以 v 不仅仅是向量空间,它是 N-1 维的内积空间。

使用与上述相同的数据,我们可以绘制这两个向量 xy 的图,对应于我们 N=3 次观察的“调整后的身高”和“调整后的体重”:

第三步:观察 X 和 Y 的样本协方差恰好等于 V 中对应向量 xy 的内积(点积)!那就是:

如果这对你来说没有几何意义,回想一下线性代数中的点积与欧几里得的长度和角度概念有着错综复杂的联系。首先,一个向量与自身的点积的*方根,正好是那个向量的长度。第二,两个向量的点积是它们的长度乘以它们之间夹角的余弦的乘积。在符号中:

将此与“标准差”和“相关性”的统计定义相结合,我们得到以下两个恒等式:

这是什么意思?意思就是标准差无非就是观测值对应向量的长度(调整后),相关性就是两个这样的观测值向量之间的夹角(调整后)就是它们之间夹角的余弦!

所以这些通常来源于协方差的标准差和相关性的概念,实际上只是两个观测向量之间的长度和(余弦)角度的花哨名称!希望这能给你一些协方差背后的几何直觉,揭开它的神秘面纱,哪怕只是一点点。

思维的几何学

原文:https://towardsdatascience.com/the-geometry-of-thought-700047775956?source=collection_archive---------15-----------------------

…大脑如何创造概念空间

By José Ferraz de Almeida Júnior [Public domain]

我们每天都在思考,但很难准确说出这个词的确切含义。当我们试图理解思想时,我们不得不通过思考思想本身来把握思想,这感觉是如此的难以捉摸和循环往复。

然后有一百种不同的方式来思考一件事。当你想到一个苹果时,你实际上会做什么?当想到红色时。当思考像爱、悲伤、骄傲、存在这样的抽象概念时。

维基百科将思想定义为一种“ 有目的的想法和联想的流动,可以导致一个面向现实的结论”。

想法的流动很容易观察到。想象一个苹果,看看会发生什么,哪些不同的感知维度呈现自己。红绿果皮的一瞥,难以定义的甜果味,也许还有一丝酸味,咬一口的脆响,果汁顺着手流下的感觉。

面向现实的结论很自然地给出了:我们不应该忘记,我们的思维是为了进化的目的而进化的。思想之所以存在,是因为它帮助生命核心的基因机器将自己推向未来。思想之所以存在,是因为它允许我们在我们所处的混乱世界中观察有用的、结构化的模式。把有用的信息从无关的信息中分离出来。

它有助于区分苹果和有毒的水果,了解苹果是否成熟并可以食用,了解苹果是什么,它有什么特性尽管你遇到的每一个苹果都略有不同。

能够比较苹果和橘子是有目的的。能够与你周围的人交流你的想法,告诉他们你的感受,你的所见,这是有意义的。

From the photograph you quickly inferred that these are apples. Photo by Marina Khrapova on Unsplash

我们在日常生活中经常需要完成某些任务,因此大脑被优化来完成这项工作。另一方面,我们不擅长做计算机真正擅长的“思考”(像 159476 乘以 6042034869 是多少这样的问题?).在逃离老虎时,解决像 159476 乘以 6042034869 这样的计算并不是我们需要解决的最相关的任务。

听到一些事情可以改变你对世界的看法,可以教会你新的思维方式,新的概念来表达世界的模式。这对你生活的整个社会都有价值。能够向其他人解释一些事情意味着更少的人每次都需要重新思考。

想到科学: 私人知识变成公共知识

因此,一个社区内的人们需要就一个共同的概念框架达成一致,以便他们能够有效地将传授给他们的后代,并作为一个整体社会快速调整。

思维模式

为了给出“思想”的初步总结和工作定义(至少是一个非常相关的小节),我们有

  1. 由…定义的外部世界模式的分类
  2. …流畅且可快速学习的概念(这是苹果,这是桃子)
  3. …允许沿着许多不同的抽象维度对物体进行比较(这个苹果更大、更甜、更红、更圆,等等)。)
  4. …元认知:对概念框架本身有一个抽象的理解,并且能够在这个框架内进行推理

将它们与它们的进化功能联系起来,有助于我们理解它们为什么存在,以及它们最适合做哪些任务。毕竟,进化并不仅仅是为了娱乐我们而产生思维。

说到进化:我们能在其他更原始的认知功能中找到思维的“进化祖先”吗?

思维会不会进化出一个已经存在的基础设施来服务于一个不同的目的?

架构和功能

大脑的运作与我们现象世界的内容密切相关,这是我们意识体验的世界。当有听觉刺激时,我们看到某些大脑区域的活动与对噪音的有意识体验相关。当我们看到一些东西时,我们可以追踪信号从视网膜到枕叶的移动,枕叶是视觉皮层的所在地。因此,思维在大脑中的实施方式应该与思维的功能和现象相一致。

人们经常强调,计算机的工作方式与大脑非常不同,这反映在它们的构造方式上。计算机到今天还是基于 冯诺依曼架构 。所有计算都是在 1 和 0 上进行的。输入计算机的数据被转换成 1 和 0,然后以特定的方式进行运算输出。输出类似地由 1 和 0 给出,然后被翻译回用户可理解的输出。冯·诺依曼架构原则上是基于图灵机的架构,它在符号层面上操纵信息(更多细节,请参见我的图灵机非技术性指南)。**

Photo by Markus Spiske on Unsplash

人工智能的研究关注的是制造会“思考”的机器。机器在从数据中学习模式、从非常高维的数据集中提取有用信息和相关特征方面已经变得更好了。

但是,计算机不会像学习抽象概念那样容易地应用于世界。他们通常在只看过一个样本后就无法理解什么是苹果。他们不能轻易地将不同的概念层相互联系起来,并在不同的概念之间进行比较。当面对新的挑战时,他们不能灵活地推理或调整自己的行为。

在我关于蚂蚁和神经网络问题的文章中,我更深入地研究了认知过程的功能和它们最有效(推测)的计算实现之间的关系。假设思想的形状和形式应该以某种方式反映它的实现方式是有意义的。大自然在花费资源方面很吝啬,通常会挑选最有效的架构来完成这项工作。

概念空间

在本文的其余部分,我将重点介绍由 彼得·加登福斯 在他的(非常恰当的标题)书概念空间( 2000)中介绍的概念空间的概念(也参见这篇演讲了解一些我无法在此涉及的细节)。

如果你读过一些关于机器学习的东西,你可能对特征空间的概念很熟悉。您输入到网络中的数据在特征空间中表示。你把以颜色信息为特征的像素输入到一个网络中,让它根据感官输入(一只猫,一只狗,等等)做出判断。这是一种类似的东西,通过我们的感官获得的信息被我们的大脑处理。

概念空间现在被定义为由几个质量维度跨越的实体,其中多模态(多种类型的数据,如视觉和听觉组合)概念被表示。这些特征可以涵盖很大范围的东西,如大小、颜色、音高、音调、长度、明暗、温度、空间本身、味道、形状、甜味、酸味等。

一个 概念 则是概念空间中的一个 拓扑区域 。你可以认为它们是对 属性 的多维概括,就像红色一样,都是简单的一维特征。

拓扑意味着空间被划分的区域是完全连通的,并且满足某些几何性质,即它们是凸的。这意味着,如果点 z 位于点 x 和 y 之间,并且两者都属于同一个概念,那么该点也必须位于该概念中。

实现这一点的一种方式是通过所谓的 Voronoi 镶嵌 ,这里显示为二维空间:

A Voronoi Tesselation of a two-dimensional space. Credit to Balu Ertl [CC BY-SA 4.0]

这些镶嵌将空间分割成从黑点向外辐射的凸起区域。你可以把它们想象成二维质量空间中概念的原始版本。

根据 Gardenfors 的说法,这些凸形镶嵌可以实现有效的交流,因为它们消除了不同子概念之间的任何模糊性(原型周围的空间形状清晰,没有任何空洞,如果你比较空间的不同元素并试图衡量它们有多相似,会造成混乱)。

比方说,一个维度是你发出的声音是如何发声的,另一个维度决定了声音是在你嘴里的哪个位置发出的。然后,镶嵌对应于从你听到的声音中推导出的字母概念,并映射到你正在听的人的舌头位置和发音程度上。

这可以让你对辅音 b 和 p,m 和 n,d 和 t 等进行分类。,取决于你的舌头在你嘴里的位置和你推的力度。请注意,提取这些信息对于语音识别软件(如语音转文本或苹果的 Siri 和亚马逊的 Alexa)至关重要,当然,对于我们来说,对于理解其他人来说也是如此。

镶嵌在中心有一些点,可以认为是给定概念的原型。有一种说“d”的方式可以清楚地表明你真的在说“d ”,而当人们咕哝着说外语时,有时很难将你听到的声音正确地映射到音节和单词上。

高维概念空间

学习概念的能力表明概念空间的度量发挥了一些灵活性。例如,当我们了解到某些子维度对于分类来说比其他维度更重要时,它可以改变,从而使不同特征子维度的权重结构适应。

想想练习什么:我们可以放大一个空间,让它的细分越来越小。专业的品酒师可以比外行更细致地感知葡萄酒的味道,专业的音乐家可以轻松地在一首管弦乐作品中挑选出和弦和乐器。

众所周知,孩子们会从单个例子中过度概括概念,但同时,这也是有利的,因为他们不需要看到很多例子就能学到东西。随着时间的推移和更多例子的出现,概念变得越来越复杂。

概念学习是递增的。我们学习概念的方式是有层次的:我们可以将越来越多的抽象概念(比如你所生活的社会的规则)堆叠起来,这些概念由越来越多的特征和模式组成,当我们成年后,我们可以将它们之间越来越精细的区别具体化。

概念空间可以扩展到非常大的维度:我们已经讨论了一个苹果的例子,但是高维概念空间的学习也会导致有问题的过度概括,正如种族刻板印象所体现的那样。

塑造了如此多现代性冲突的种族观念可以用沃罗诺伊镶嵌图来思考:纳粹意识形态宣扬雅利安超人的至高无上(金发碧眼,体格健全,是代表雅利安种族概念的空间中心原型)。与那个生物足够相似的每个人都是群体的一部分,而在重要特征上不同的每个人都不是,而且被认为是劣等的。虽然事实证明,定义这些概念的特征是任意的,根本没有任何生物学事实为基础,但它们仍然被狂热的理论家们传播,并很容易被全国各地的大脑所了解。

符号知识与次符号知识

撇开这些事情不谈,让我们回到思维的 几何 和它在大脑的 硬件 中的潜在实现之间的关系问题。

概念空间旨在弥合大脑中知识表征的符号和次符号理论之间的鸿沟。

纯符号思维不擅长概念形成:符号本身不一定意味着很多,相似性度量不能很好地从符号层次转移到语义层次。当你比较单词“nap”、“gap”、“rap”或二进制数字 100000 和 000001 时,它们在象征意义上相距不远,但在含义上不一定非常接*。在我们遗传密码的符号语言的情况下,编码蛋白质的 DNA 序列是非常随意的,并且没有任何功能基础(正如我在这里更详细地讨论的)。

因此,如果大脑通过操纵信息的符号表示来工作,它将很难处理其内容之间的相似性,而纯粹的子符号表示将很难流畅地学习新概念(这个问题在机器学习应用中经常遇到:在输入发生一些小的变化后,网络在分类它时变得完全无用,必须重新学习一切)。

特征空间中的相似性和度量

概念空间避免了其中的一些问题,因为它们被建模为度量空间(具有距离度量的空间)。

它们有效地编码了空间内实体之间的相似关系。我们可以简单直观地回答这样的问题:这五个苹果中哪一个看起来最相似?你的朋友有多像布拉德·皮特?纽约和特拉维夫有多相似?这个单词听起来是不是有点像另一个单词?

How similar is Tel Aviv to New York? Photo by Shai Pal on Unsplash

这些问题的答案不能作为查找表硬连线到我们的大脑中:你可以想到无限多的可能关系/比较,所以大脑需要能够动态计算答案。

空间表征与思维的起源

我们所知道的所有生命形式都发现自己生活在一个三维空间中(暂且忽略弦理论),生活在这个三维空间中对我们的进化轨迹产生了影响。

在她的著作 中,心灵在运动芭芭拉·特沃斯基** 提出了九大认知定律。根据她的第六定律, 空间思维是抽象思维的基础。**

潜在的假设是,我们首先进化出在三维空间中成功导航的能力,弄清楚我们在哪里,我们的身体在哪里,如何移动它们,等等。,并慢慢地开始回收已经存在的大脑区域,这些区域最初用于像在空间移动这样的任务,以实现新的思维方式。

我不能详细讨论这个假设,但我在这里提到它,因为概念空间的几何性质可以帮助更好地理解它,概念空间的神经生物学基础为它带来了一些令人信服的证据。

大脑中的空间表征

大脑中的空间表征包含在它的功能结构中。2014 年诺贝尔医学奖授予了 奥基夫陀思妥耶夫斯基 ,以表彰他们在 1971 年发现的位置细胞,结合 2005 年 爱德华和 迈·布里特·莫泽 发现的网格细胞。

这些细胞的放电与动物(如老鼠或人类)的空间位置有关,它们被认为是一幅认知地图(见这幅动画中的插图)。这些细胞主要存在于海马体和内嗅皮层,它们负责记忆、导航和时间感知。

位置细胞的放电代表了动物在物理空间中的位置,这个位置通过位置细胞或网格细胞与相邻细胞的相互连接来反映。

Firing patterns of 8 place cells recorded from a rat. Colored dots show activity, with the color encoding which neuron fired. Credit to Stuartlayton at English Wikipedia [CC BY-SA 3.0]

它们的激发模式可以代表抽象的向量空间,而不仅仅是三维空间,因此它们的放电模式原则上可以编码各种空间信息(空间中的距离和位置)。因此,这些结构也可以用来编码非常不同种类的度量空间。

看起来大自然母亲很好地利用了这一点。

新的研究表明,抽象的概念空间是通过使用内嗅皮层和海马体中相同的位置和网格细胞基础设施来绘制的(更多详细信息,请参见这里的、这里的、这里的或这里的),这些基础设施绘制了空间位置和方向。

因此, 认知空间 的概念不仅是隐喻性的,因为用位置和网格单元实现它们允许大脑在抽象概念空间中编码位置,并有效地计算这些空间内的度量。

正如我在开始时指出的那样,这支持了这样一种观点,即我们应该找到证据,证明认知过程(如思维)的功能性与其在大脑中的计算和生物实现结构之间存在密切关系。

看起来抽象思维,至少在某种程度上,确实是从空间思维进化出来的。

教机器思维的几何学

必须指出的是,这些理论仍然是新的,正在被充分充实,但我认为研究正指向令人兴奋的方向。
理解思维及其在空间感知中的起源可以为我们带来许多关于大脑高级认知功能的新见解。

同样,它可能会给如何构建智能系统带来新的动力,这些智能系统在处理信息和学习新事物的方式上发挥更多“类似人类”的特性。

Photo by Brett Jordan on Unsplash

例如,如果我们可以将深度神经网络与架构相结合,该网络致力于从(多模态)输入数据中进行模式识别和信息提取,该架构受位置和网格单元的启发,允许有效映射从输入中提取的模式之间的相似性,并减少高阶概念的数据量学习,我们可能会教机器我们自己思想 的 几何,从而教它们变得越来越像我们。

2018-2019 年全球人工智能指数

原文:https://towardsdatascience.com/the-global-artificial-intelligence-indexes-2018-2019-1b0d0dce5f60?source=collection_archive---------25-----------------------

Photo by @francesco_ungaro

衡量全球人工智能的不同指标概述

有一些机构和组织已经开始在人工智能领域索引不同的国家。所以我想我可以在短时间内成为索引的索引者。我想我会开始研究衡量人工智能的不同指数。我希望这能对你有所帮助,并且你能帮我更新这个列表或者修改任何错误。

斯坦福大学 2018 年人工智能指数报告

这份报告由斯坦福大学人工智能指数指导委员会,以人为中心的人工智能倡议发布。它是:“…追踪、整理、提炼和可视化与人工智能相关的数据的努力。它渴望成为政策制定者、研究人员、高管、记者和公众的综合数据和分析资源,以发展对人工智能复杂领域的直觉。”

[## 为关于人工智能的对话打下基础。

将关于人工智能的对话建立在数据的基础上。人工智能指数是一种追踪、整理、提炼和可视化数据的努力…

aiindex.org](https://aiindex.org/)

乌龟传媒的全球人工智能指数

2019 年 12 月 3 日发布的新指数对 54 个国家进行了排名

在 12 个月的时间里,他们衡量了 54 个国家的 7 项关键指标:人才;基础设施;操作环境;研究;发展;政府战略;和商业投资。在咨询了该领域的专家后,对每个指标的重要性进行了加权。

[## 军备竞赛

世界正处于一场前所未有的人工智能军备竞赛中,美国和中国在这场竞赛中遥遥领先,可能会…

members.tortoisemedia.com](https://members.tortoisemedia.com/2019/12/03/global-ai-index/content.html)

他们有一个互动的显示,让你根据不同的参数对不同的国家进行排名。

政府人工智能就绪 2019

这份报告有一个由牛津见解和国际发展研究中心撰写的发展观点。“人工智能(AI)技术预计到 2030 年将为全球经济增加15 万亿 美元。根据我们指数的调查结果,正如所料,全球北方国家的政府比全球南方国家的政府更能利用这些收益。因此,全球南方国家有可能被所谓的第四次工业革命甩在后面。他们不仅不会收获人工智能的潜在好处,还存在不*等实施扩大全球不*等的危险。”

[## 2019 年政府人工智能就绪指数-牛津洞察-牛津洞察

在国际发展研究中心的支持下制作的 2019 年政府人工智能就绪指数…

www.oxfordinsights.com](https://www.oxfordinsights.com/ai-readiness2019)

这里是#500daysofAI,您正在阅读的是第 183 条。500 天来,我每天都写一篇关于人工智能或与之相关的新文章。

金色的人工智能冰川:重新思考医疗保健领域的罗杰钟形曲线

原文:https://towardsdatascience.com/the-golden-ai-glacier-rethinking-rogers-bell-curve-for-healthcare-c6280e522e12?source=collection_archive---------12-----------------------

“人们对创新的传播如此感兴趣的一个原因是,即使一个新想法有明显的优势,它也很难被采纳,”埃弗里特·罗杰斯(Everett Rogers)在 1983 年出版的第三版开创性著作《创新的传播》(Rogers,1983)的前言中说。正如罗杰斯博士指出的,这个想法不是他独创的;几个世纪以来,它一直是人类生活的一部分。一位不亚于尼可罗·马基亚维利的观察家在他 1513 年的信中写道,470 年前的王子观察到:

“没有什么比创造一种新的事物秩序更难计划,更难成功,也没有什么比管理起来更危险……每当他的敌人有机会攻击创新者时,他们都以游击队员的热情这样做,而其他人则慢吞吞地为他辩护,因此创新者和他的政党都很容易受到攻击”(马基雅弗利,1532)。

此后,1747 年的英国海军、1781 年的美国发明家和国父 Ben Franklin、1903 年的法国法官和非专业科学家加布里埃尔·塔尔德、1937 年的英国人类学家 Edward Gifford 和 Alfred Kroeber、1943 年的研究人员 Bryce Ryan 和 Neal Gross,以及 1941 年至 1962 年的 21 年间至少有 1,953 名作者在同行评审期刊上发表了论文(Rogers,1983)(见图 1)。

罗杰斯博士将“扩散”定义为:

“……随着时间的推移,创新通过某些渠道在社会系统成员之间传播的过程;这是一种特殊类型的交流,因为信息与新思想有关”(罗杰斯,1983)。

这种新奇本身就包含着不确定性。在这种情况下,不确定性涉及对新思想替代品的看法,以及这些替代品的功效的比较概率,包括现状(Rogers,1983)。在现代,许多创新都是技术,罗杰斯接着将其定义为:“减少实现预期结果所涉及的因果关系中的不确定性的工具性行动的设计”(罗杰斯,1983)。因此,技术创新使潜在采用者对其相对于替代品的功效产生不确定性,同时,通过应用更快和更准确的因果关系,为减少不确定性提供了机会(Rogers,1983)。人们可以合理地争辩说,技术的传播是不确定性的二阶导数——潜在用户对技术是否会减少不确定性的感知的不确定性。

现代创新扩散理论最初是基于 20 世纪 50 年代对农业和家政学新方法的采用,罗杰斯在此基础上概括了该理论,并从 20 世纪 60 年代开始将其应用于涉及硬件和软件的技术(Beal,1957)。采用者头脑中感知到的这些不确定性的不确定性被放大或缩小的过程,是因为采用者的方法、文化和性质以及他们关注的焦点领域决定了创新扩散或技术采用的速度。这些因素体现在管理组织的政策中,决定了组织的存在理由(从军队到制造商到医疗保健)何时提供新的能力。

罗杰钟形曲线

罗杰斯假设,在创新理论的扩散下,技术的采用速度可以被绘制为标准化的高斯分布——或“钟形曲线”——在 x-y 轴上,首先熟悉笛卡尔坐标系。其中,罗杰斯发现并展示了收养者根据他们在收养年表中的位置被分成五个部分。最早的采用者是“创新者”,占市场的 2.5%。按时间顺序排列的第二批采用者是“早期采用者”,他们占市场的 13.5%。“早期多数”用户排在第三位,占市场的 34.5%。“后期多数”用户代表了另外 34.5%的市场份额,排在第四位。“落后者”代表了市场的最后 16%(Rogers,2003)(见图 2)。而且,罗杰斯假设每一类采纳者都经历了四个认知阶段:(1)意识;(二)决定采纳或者拒绝;(3)初次使用;和(4)继续使用;其中,对采纳者决策步骤影响最大的五个因素是:(1)相对优势;㈡兼容性;㈢复杂性;㈣可审判性;以及(v)可观测性(LaMorte,2018 年)。

虽然对技术采用过程中的步骤及其原因的这种理解水*已经在许多学科中取得了成功,但它也包含了成为医疗保健和公共卫生领域缺点的元素(LaMorte,2018)。具体而言,由于该模式起源于医疗保健和公共卫生领域之外,它:(a)未能包括医疗保健中通常需要的参与性方法,以确保“六 P”的认同:患者、提供者、支付者、制药商、供应商和决策者;(b)更多地应用于行为的采用,而不是行为的停止,这是一个主要问题,因为在现代医疗保健技术中,大多数创新正在取代现有技术;(c)未能考虑组织或采用者的资源、社会和同行对采用新技术的支持(LaMorte,2018)。

发展罗杰的钟形曲线

虽然所有的学术和概念理论都在不断地被新的假设和发现调整和调整,但在 1962 年至 2015 年之间,罗杰斯作为创新扩散和技术采用模型传播的钟形曲线出现了五次重大演变。与此相关的第一次重大演变是技术 S 曲线,由 Richard Foster 于 1986 年提出,并由 Clayton Christensen 于 1997 年在他的开创性著作The Innovator ' S Dilemma(Foster,1986) (Christensen,1997) 中更广泛地应用。 Foster 推断,技术创新可以用 x 轴上的成本和/或时间以及 y 轴上的技术绩效进展来绘制,其中新技术的曲线或直线总是某种形式的“S”,新技术的诱导时间(“研发”)是基础,通过采用的投资回报或收益是垂直的,市场饱和和过时是“S”的顶部(Foster,1986)。第二,Christensen,除了别的以外,注意到这些“S”曲线连接在一系列的波浪中(见图 3),其中它们成功的关键决定因素是:(a)组织进入曲线的时间框架,以便不被更有先见之明的竞争者超越创新;以及(b)他们不间断地持续创新以保持这些“S”波长期持续的能力(Christensen,1997)。第三,克里斯滕森接着指出了一项技术创新是否被采纳的两个关键原因,以及它被采纳或否决的速度;这与采纳者的相对需求和资源有关。如果现状在可用资源范围内满足了潜在采纳者的需求,他们会坚持现状,推迟或拒绝创新。类似地,如果一项技术创新不在采纳者的既定资源范围内,在某些情况下,不管感知到的需求如何,他们也会坚持现状,拒绝或推迟创新。这些原因是医疗保健采用人工智能和类似更新技术的关键(Christensen,2015)。

基于创新扩散的技术采用生命周期的下一个主要演变,发生在第三个年表,但为了凝聚力和清晰性,在这里被列为第四个,是关于差距或鸿沟。1991 年,杰弗里·摩尔在跨越鸿沟中观察到,大量技术创新经历了归纳/研究和开发阶段,受到早期采用者的欢迎和使用,但由于过多的原因,从未被市场更广泛地采用(见图 4) (Moore,1991)。

摩尔认为,过于简单地说,早期采纳者和多数采纳者之间存在鸿沟,因为他们在如何和为什么做出决定方面有本质上不同的心理特征。创新者和早期采用者倾向于采用,因为他们对新功能有内在的欣赏;他们偏向于喜欢,想要,采纳。然而,构成其早期和晚期大多数的 68%的市场更关注实用性——克里斯滕森写的关于需求和资源的那种。这种市场大多数也是怀疑论者,通常来自经验,知道绝大多数新技术创新永远不会走远或不会持续(摩尔,1991)。后期多数采纳者与早期多数采纳者比例相当,他们的不同之处还在于他们对自己实施组织变革的能力缺乏信心(Moore,1991)。根据 Moore 的说法,为了克服这些怀疑论者并区分一项技术的存在,需要大量的教育、营销和关系建设,这反过来需要持久力,这反过来需要资本——比大多数公司拥有或能够筹集的资本更多,从而创造了技术创新初创企业的“死亡之谷”(见图 5) (Moore,1991)。

第五,也是最后一点,从 1998 年到 2008 年,Carl May 和他的同事提出了标准化过程理论(NPT)来发展先前的模型,并帮助解释医疗保健领域的创新扩散和技术采用生命周期(2009 年 5 月)。NPT 关注医疗环境中与技术采用相关的三个核心问题:(1)实施——将新行动付诸实践的社会过程;(2)嵌入——将这些新的实践融入到习惯和惯例中;以及(3)整合——在组织范围内复制和维持新实践的过程(2009 年 5 月)。《不扩散条约》假定:(A)由于共同努力制定法律的个人的集体努力,实践已经深入人心,成为惯例;(B)制定"通过表达人类能动性的生成机制(一致性、认知参与、集体行动、反思性监测)的运作得到促进或抑制;"以及(C)在整个组织范围内复制实践需要组织中全体变革代理人的持续支持和投资(2009 年 5 月)。

医疗保健中的人工智能采用冰川

除了人工智能将扰乱医疗保健,使其从被动型转变为预测型和主动型,个性化医疗将我们的寿命延长几十年之外,现实是,如果你与经验丰富和广为人知的数字健康企业家交谈,大规模或及时采用这些工具来实现这一承诺仍然在很大程度上是夸张的。尽管 2017 年对数字健康公司的私人投资估计为 120 亿美元——其中许多都与人工智能有关——但很少有人获得足以证明私募股权投资合理的巨大成功(Yock,2018)。

尽管人工智能在一个对人类至关重要的领域有望带来非常好的结果,但为什么人工智能在医疗保健领域的采用一直很冷淡,这一解释似乎有五个方面。第一,健康技术专家给出的解释是以这样一种想法为中心的,即大多数数字健康和人工智能创业公司都遵循了错误的模式,这种模式在其他行业的消费者和产品中取得了成功,但忽略了医疗保健的根本差异(Yock,2018)。其他行业经过测试和验证的技术创业战略侧重于快速将最低可行的产品推向市场,然后根据在早期最终用户中证明成功的特性和功能集迭代新版本和新版本(Yock,2018)。这种策略表面上忽视了利益相关者、风险厌恶和医疗保健行业监管环境的复杂性(Yock,2018)。

其次,摩尔所描述的“死亡之谷”在医疗保健领域更长、更深,这是采用周期更长的结果。创业公司必须生存更长时间,进行更多的营销和前景教育,这需要更多的资本,才能成功克服 Yock 描述的额外障碍。此外,数据科学、人工智能和创业公司形成的尖端领域的技术专家在金融技术或消费产品等其他行业往往需求量很大。因此,在医疗保健行业缓慢采用新技术的过程中,将这位极具竞争力的人才保留多年的成本会更高。

第三,我们必须重新审视创新扩散理论,因为专注于医疗保健的技术专家似乎变得过于依赖其简化进化论,而忽视了其最初的警告。首先,我们可以看看罗杰斯定义的创新要素:(1)相对优势;(2)兼容性;(3)复杂性;以及(4)可试用性(罗杰斯,1983)。在这些领域中,医疗保健中的人工智能都是有问题的。人工智能通常与现有的系统、策略和流程不兼容,因此需要被替换。此外,人工智能是众所周知的复杂,超出了许多用户的知识,有时甚至是理解;因此,他们不愿意接受他们不能信任的东西,也不能信任他们不能理解的东西。此外,人工智能在许多医疗保健问题上的试验很麻烦,因为它们涉及影响人类福祉的关键领域,这是高风险的,并涉及许多伦理问题。

第二,正如罗杰斯所指出的,支持创新的变革推动者和那些必须获得社会认同的变革推动者通常是异嗜性的——这意味着他们通过相似性聚集在一起,每个群体都与其他群体截然不同。因此,变革推动者往往比用户在技术上更先进,从而产生了一种偏见,不利于在交流中有效地相互理解。

第三,也许是对医疗保健领域的人工智能初创公司最务实和最有影响力的,罗杰斯在他的著作《创新的科学验证的重要性》(罗杰斯,1983 年)中指出。在医疗保健领域,这意味着临床试验;然而,几乎没有像药物试验那样被广泛接受的软件临床试验标准。此外,最重要的是,大多数试验极其昂贵,学术医疗机构可以进行这些试验(例如,马萨诸塞州总医院等)。)将它们视为一种方法,通过这种方法利用它们的“批准印章”来获得额外的收入,所有这些都增加了摩尔“死亡之谷”的巨大深度和宽度。简而言之,目前缺乏资金来支付医疗保健中人工智能应用的软件试验。因此,绝大多数创新从未经过科学验证,许多可能被早期采用的创新被证明存在科学缺陷,以至于大多数采用之前的怀疑和分歧扩大,随之而来的是技术采用生命周期中的“死亡之谷”。

第四,回忆一下克里斯腾森的 S 曲线波(图 4)。即使医疗保健领域的人工智能初创公司能够克服这些重大障碍,这也只是一个采用周期,或者说,如果它们要维持自身的话,这肯定是一波 S 曲线中的第一条 S 曲线。一个结果是,很大一部分在医疗保健领域采用人工智能的竞争中胜出的公司必须通过新的创新重复这样做,否则他们有可能成为寿命短得多的单一产品公司(又名“一招小马”)。

最后,我们被时间尺度所吸引,医疗保健中的人工智能是否真正具有破坏性,以及破坏性到底意味着什么。Christensen 表明,市场中技术成熟度的生命周期通常是 15-20 年(Brown,2006)。这个时期不是真正的破坏性,而是变革性的。如果我们研究其他变革性技术,如电子邮件和互联网,我们会有趣地证实克里斯滕森,因为他们的发明和广泛使用之间过去了几十年。对于医疗保健领域的人工智能初创公司来说,他们已经面临着技术采用生命周期中漫长而深刻的鸿沟,以及持续创新的竞争需求,这种转型的持续时间极大地放大了每次创新的“死亡之谷”。

解决人工智能初创公司在医疗保健领域面临的众多挑战的关键可能在于克里斯滕森对中断的正确定义。克里斯滕森认为,当应用于产品或服务的新技术能力时,颠覆是误导性的(克里斯滕森,2015)。相反,根据 Christensen 的说法,颠覆是一个过程——在这个过程中,颠覆者从低端或市场边缘(“边缘”)的小规模实验开始,并专注于需求如何在长时间内发生变化和演变,以形成新的商业模式(Christensen,2015)。颠覆者找到一种新的模式来满足新生的和不断发展的客户需求,而一种技术完全替代或替代另一种技术的转变通常仍需要几十年的时间(Christensen,2015)。然而,初创公司随后摆脱了持续创新的许多竞争压力,因为它们不被视为竞争的核心或威胁,具有较低的成本以支持度过特大的“死亡之谷”,并且通过让早期客户提供反馈,能够解决技术采用中的许多结构性特质。

参考

比尔、罗杰斯、波伦、J.M. (1957)。采纳过程中阶段概念的有效性。农村社会学,22(2):166–168。

布朗博士(2006 年)。目标选择和制药行业生产率:我们能从技术 S 曲线理论中学到什么?药物发现的当前观点&发展,9(4):414–8。

克里斯滕森,C. (1997 年)。创新者的困境:当新技术导致大公司失败时。波士顿:哈佛商学院出版社。

c .克里斯滕森、m .雷诺、r .麦克唐纳(2015 年 12 月)。什么是颠覆性创新?【哈佛商业评论】https://hbr.org/2015/12/what-is-disruptive-innovation.,pp.

福斯特,R. (1986 年)。创新:攻击者的优势。纽约:顶峰图书公司。

拉莫特,W. (2018 年 8 月 29 日)。行为变化模型:创新理论的扩散。检索自波士顿大学公共卫生学院:http://SPH web . bumc . bu . edu/otlt/MPH-Modules/SB/BehavioralChangeTheories/BehavioralChangeTheories 4 . html

马基雅维利,N. (1532)。 De Principatibus(君主国)(又名王子)。意大利:安东尼奥·布拉多·达索拉。

May,c .,Mair,f .,Finch,t .,MacFarlane,a .,Dowrick,c .,Treweek,s .,和 Rapley,t .,等人(2009 年)。实现和集成理论的发展:规范化过程理论。实现科学,4:29。

摩尔(1991 年)。跨越鸿沟。纽约:哈珀柯林斯出版社。

罗杰斯,E. (1983)。创新的扩散(第三版。).纽约:自由出版社。

罗杰斯(2003 年)。创新的扩散(第 5 版。).纽约州:西蒙和舒斯特。

Yock,P. (2018 年 10 月 17 日)。为什么数字健康创业公司不断失败?快公司,PP .https://www . Fast Company . com/90251795/why-do-digital-health-startups-keep-failing。

这篇文章发表在 The Startup 上,这是 Medium 最大的创业刊物,拥有+409,714 名读者。

在这里订阅接收我们的头条新闻

这山望着那山高:购买当地产品及其缺点

原文:https://towardsdatascience.com/the-grass-really-is-greener-on-the-other-side-buying-local-and-its-shortcomings-f35490744912?source=collection_archive---------12-----------------------

循证政策比你或你的感觉更重要——第二部分

仅仅因为你的蔬菜经过数千公里的运输到达你的餐桌,并不意味着它们不会比你当地农贸市场的产品对环境更好。那里。我已经说过了。就不受欢迎的观点而言,这一观点介于“披萨上的菠萝”和“如果我们不能让非常老的人活着,医疗保健会更便宜”之间(声明:我不同意这些观点)。但是不受欢迎不代表不真实。我想用你生命中接下来的 5 分钟来说服你,默认购买本地在多个层面上都是错误的。说你购买当地食品是因为你想保护环境和加强你的社区是很有说服力的,因为它与我们喜欢持有的价值观产生了共鸣。所以为了说服你,我们需要解决这两个支持购买当地食物的主要论点。我们开始吧!

首先,请查看我在这个系列的第一篇文章中关于气候变化的一般免责声明。第二,我不会说买本地货总是不好,也不会说从遥远的 T4 购买总是更好。我的立场仅仅是你应该(定量地)考虑哪一个选择是最好的,事实证明,在大多数情况下,放弃购买当地食物是更好的选择。因此,如果你真的想坚持一种普遍的态度(当然我不建议),要么都是本地的,要么都是远方的,你选择后者更有可能是正确的。

Visualization of distances & emissions per vegetable for different modes of transport. For cars, trips of 5 km for 8 tomatoes with an average car weight of two tons are assumed. For trucks, trips of 3000 km with 45 metric tons of tomatoes are assumed. For planes, trips of 3000 km with 400 metric tons of tomatoes are assumed. For ships, trips of 18000 km with 25000 metric tons of tomatoes are assumed.

环境论证——运输

我们先来看看环境论证。从本质上来说,这是一个论点:汽车/卡车/飞机/轮船从遥远的地方运输食物到你的超市消耗大量的燃料,因此从你附*的农场购买食物具有较低的运输碳足迹是更可取的。的确,我们的大部分食物在到达我们的餐桌之前要经过数千公里的路程,这个概念被称为食物里程。但是“食物里程”是衡量环境影响的一个有意义的指标吗?想象一下,你开车去 5 公里外的农贸市场买西红柿,买了 8 个西红柿。也就是 0.625 食物公里/番茄(单程!).一辆番茄卡车运送大约 30 万个番茄。如果我们真的很慷慨,估计这辆卡车从生产地到超市行驶 3000 公里,这将相当于 0.01 食物公里/番茄。无论你如何扭曲它,你都无法击败这里的规模经济。如果你喜欢这个指标,你也可以用二氧化碳/番茄排放量来玩这个游戏。现代卡车每公里每公吨货物排放大约 0.1 公斤二氧化碳。在我们的例子中,这将是 0.145 公吨的西红柿3000 公里= 13500 公斤或 13.5 吨的二氧化碳。从你的农贸市场购买等量的西红柿,而(在美国)*均每公里排放 0.25 公斤二氧化碳的汽车相当于 5 公里0.25 公斤二氧化碳/公里(每位顾客 300,000/8 个西红柿)= 46875 公斤或 46.9 吨二氧化碳。三倍多!

你可能会说,即使有了卡车,你仍然需要去超市买蔬菜,但请记住,a)卡车的排放量与汽车的排放量相比仍然微不足道,b)你的农民市场的蔬菜也必须首先到达那里,通常由农民用车辆运输,就每种蔬菜的排放量而言,车辆的效率肯定低于番茄卡车。另一种避免低效率交易的方式是在网上订购蔬菜。除了带来令人愉快的便利之外,蔬菜订单将被打包并以优化的路线交付给你和其他顾客,与你和其他人去商店相比,每份蔬菜的排放量更低。此外,如果你的食物是用船运送的,那么在排放方面比卡车更有效率(大约。每公里每公吨货物 0.025 千克二氧化碳)。

Location matters. Values are total emission for production (UK, lamb, red or Sweden, tomatoes, orange) or total emission for transport + production (New Zealand-UK, lamb, blue or Spain-Sweden, tomatoes, turquoise). Source for lamb values. Source for tomato values (Table 5).

环境论证——生产

在证明了规模化经营的每种蔬菜的运输排放量远低于当地农民之后,我现在要做一些不寻常的事情。我要说的是,无论如何,交通排放真的没那么重要。因为到你的超市或当地中心的商业运输只占生产食品总排放量的 5-11%。信不信由你,这实际上是食品生产排放清单上最小的项。以下是一些比较重要的:餐馆(16%)、家庭烹饪(25%)和生产&加工食品(45%)。因此,到目前为止,排放清单上最大的一项实际上是蔬菜是如何生产的,而不是如何到达你的餐桌。这意味着生产效率将对环境产生最大的影响,而不是从农场到餐桌过程中的任何其他变化。那么,我们究竟为什么要去干旱的亚利桑那州购买当地的苹果,而不是从更远但农业生产丰富的华盛顿(美国苹果总产量的一半以上来自华盛顿)购买呢?

或者,更粗鲁一点,为什么不是来自新西兰?船舶运输比卡车运输环保得多,它位于南半球,确保了淡季新鲜苹果的供应,而不必冷藏前一个收获季节的苹果,它可以说是生产苹果和其他水果+蔬菜最茂盛和最多产的地方之一。这导致了一些违反直觉的结果,例如,在新西兰饲养并从新西兰运往英国的羊肉的碳足迹仅为在英国直接饲养和消费的羊肉的四分之一(乳制品和水果的比例相似)。同样,从西班牙进口西红柿到瑞典比在瑞典生产西红柿更环保。考虑到生产效率的相对重要性,我们更应该考虑我们希望我们的食物在什么条件下生长,而不是它离我们家有多*。

道德论证

在我们结束之前,让我们简要地谈一下第二个论点,即购买当地产品可以加强社区。这一策略引出了有趣的哲学推论。比方说,你当地的农民非常成功地向你出售他们所有的蔬菜,以至于他们扩大经营,开始向其他地区销售。这是否意味着他们不再是本地人,不再是社区的一部分?严格来说,这难道不是(反向)保护主义的论据吗?在这种保护主义中,来自你们社区的任何出口都将被禁止,因为这会削弱外国社区。将这场辩论与科技行业进行对比。本地或本地生产的电脑或 iPhone 听起来多么牵强!如果我们不对其他部门和产品提出同样的本地态度,那么挑出食品生产作为购买本地产品在道德上至高无上的领域似乎是武断的。考虑到农民在人口中所占的比例很小(比美国的 2%少),以及之前证明的生产效率的重要性,而生产效率又严格取决于当地的天气,食品似乎是一个非常不适合“本地第一”态度的候选对象。如果你真的想去当地(虽然我仍然不推荐它作为一般规则),尝试制成品。至少这影响了 8.5%的人口(在美国),并且较少受天气和位置的影响(仅适用于监管/工资,这也适用于农业部门)。

结论

这让我得出了我的结论:购买当地食物作为一般规则既不环保也不道德。事实上,*均来说,这是相当有害的。我不排除这样一种可能性,即在某些情况下,本地食品可能至少等同于遥远的进口食品,例如,如果你生活在一个适合高效生产某种水果或蔬菜的地区。但我们大多数人都没有这种奢侈,不得不在高强度、温室辅助生产和生产碳足迹小的环保运输产品之间做出选择。虽然支持你的社区并做一些表面上的好事可能感觉非常好,但基于证据的政策和行为并不是让你感觉良好,而是做得最好。所以如果你关心全球环境和你行为的后果,不要去当地。走向全球。

糖蜜大洪水——预测金属熔点

原文:https://towardsdatascience.com/the-great-molasses-flood-predicting-the-melting-point-of-metals-1c4440d2edd2?source=collection_archive---------13-----------------------

冶金和材料科学中的机器学习

1919 年 1 月 15 日,在北波士顿一个安静的街区,一场灾难正在酝酿。

出乎意料的是,一声巨大的爆炸声响彻整个城市,在任何人知道发生了什么之前,12000 吨糖蜜以几乎 60 公里的时速, 冲进街道,导致 21 人死亡,150 人受伤。

Imagine how sticky the ground must have been… (Courtesy of Wikipedia)

据说直到今天,有时候,在炎热的夏天,北波士顿地区闻起来有点像糖蜜的味道。

大糖蜜洪水是由于热疲劳导致的材料失效的主要例子。在那灾难性的一天,气温从负两位数波动到正。这导致了装糖蜜的罐子变弱。再加上高温发酵造成的压力增加,导致储罐破裂。

今天,我们既有技术又有材料来防止这种愚蠢而毁灭性的灾难再次发生。但是,当我们推进到大胆的新领域时,上述技术和材料的极限将受到考验。

我们怎么能在这样高能量、高特异性、有时甚至是危险的环境中测试这些材料呢?

我们可以使用机器学习。

好吧,但是为什么呢?

Because it’s not like we have enough machine learning

这个项目是我为 Deltahacks 访问安大略省汉密尔顿时获得的个人挑战,世界上最大的钢铁生产商安赛乐米塔尔赞助了这个活动。因为他们的 Dofasco 总部就在这条街上,所以我问他们有什么不同的做法。 他们管道的亮点包括在组织的库存、运输和管理方面使用人工智能,但没有一个在研发方面产生影响。

由于我对数据驱动科学进步的想法很着迷,我提出了一些公司可以使用 A.I 来改善 R & D 的方法,这是任何像安赛乐米塔尔这样的大公司最昂贵和最耗时的部分之一。一些高层次的想法包括:

  • 高通量虚拟筛选
  • 自动化实验室实验
  • 分子的发现和优化(逆模型)
  • 分子的性质预测(正向模型)

最后一个特别有趣,有人问我是否有可能预测一种给定金属的熔点,特别是如果这种金属以前从未被合成过。我回答了监督学习的一个基本原则,其表述方式甚至连伟大的阿基米德本人都会赞同:

给我一个足够大的数据集和正确的机器学习模型,我可以预测任何事情(在一定程度的准确度内)

这是一个严重的,有时甚至是危险的过度简化,我说我会看看我能做些什么。

这个提议变成了熔融计划。

项目熔化

Project Molten 是一个神经网络,用于预测给定分子的熔点(摄氏度)。该模型在超过 28,000 个标记分子的数据集上进行训练,证明可用于现实世界的应用,特别是冶金、金相学和材料工程。

There are an incredible multitude of alloys and more yet to be discovered (Courtesy of Unsplash)

值得注意的是,“熔化工程”中使用的分子并不完全由金属构成;数据集中有各种各样的分子。

这种模型可能有助于预测由热材料失效引起的灾难,比如糖蜜大洪水。

该模型接收 SMILES 串作为输入,并输出预测熔点温度。使用字典将 SMILES 字符串唯一地映射到一个整数,并用 0 填充以确保它们长度相同。填充的长度是通过向数据集中最长的微笑字符串添加 1 个额外的 0 来确定的。在这种情况下,填充后所有字符串的长度为 282 个字符。

The very least you can do to help your poor PC

标准化数据集是这个项目的关键步骤,因为它减少了训练算法所需的计算量,节省了时间,简化了过程。有两种流行的归一化方法,要么通过将给定的输入除以唯一输入的总数,要么使用x-min(x))/(max(x)-min(x))在 0 和 1 之间归一化。

Your basic normalization code (best practice calls for making a function)

在标准化微笑字符串和温度之后,数据集被分成 90%用于训练,10%用于测试。也可以分配一个验证集,但是为了有尽可能多的训练数据,它保持原样。一小部分代码被分配给assert,表明数据集具有相同的大小,并准备好被网络接收。

神经网络模型是使用 PyTorch ML 库创建的,这使得定义网络参数变得 Pythonic 化、简单和清晰。使用了带有Adam优化器的均方误差(MSE)。学习率(lr)设置为 0.001,但是可以自由调整。经过 100 多个时期的训练,损耗被编程为每 10 个时期打印一次,同时打印当前的运行损耗。

注意网络的形状; 282 个输入神经元用于匹配填充和整合的微笑字符串的大小。从第二个隐藏层开始,每层的神经元数量大约减半。输出层为 1;计算我们输出的形状,如果一切顺利的话,这是一个单一的预测数字,这将是估计的熔点温度,以摄氏度为单位,包括负数。

关键要点和可能的方向

Polymers, Ceramics, Composites, and most importantly, Metals (Courtesy of Unsplash)

熔融项目是机器学习如何用于材料研究和开发的一个基本例子。最终,这个项目是仍在开发中的 Project Deliquesces 的前身。“潮解工程”的目标是将这种经过训练的模型用作生成模型的一部分,该模型能够生成具有特定熔点温度的新分子。未来的工作将集中在寻找以微笑字符串的形式生成这些分子的方法,或者也许使用像分子图这样更准确的分子表示。

在未来,物联网设备可以收集重要的环境数据,然后我们可以使用这些数据进行计算,训练监督学习模型,并进行实时预测,降低材料故障的可能性,并在另一场灾难来袭时提供更多关于原因的见解。在一个野火肆虐、海*面上升、自然灾害日益频繁的世界里,确保我们的基础设施为未来的艰辛做好准备从未像现在这样重要。

希望我们再也不用担心糖蜜末日了。

关键要点

  • 机器学习在工业中的应用不仅仅是自动化****
  • 在科学领域,数据标准化至关重要
  • 分配一些注意力给远见;比你自己先想两步****

需要看到更多这样的内容?

跟我上LinkedIn** 脸书 insta gram,当然还有 **

我所有的内容都在 我的网站 我所有的项目都在GitHub

我总是希望结识新朋友、合作或学习新东西,所以请随时联系flawnsontong1@gmail.com

向上和向前,永远和唯一🚀

📝稍后在杂志上阅读这个故事。

🗞每周日早上醒来,你的收件箱里会有本周最值得关注的科技故事、观点和新闻:获取值得关注的时事通讯>

人工智能对金融服务的影响越来越大:六个例子

原文:https://towardsdatascience.com/the-growing-impact-of-ai-in-financial-services-six-examples-da386c0301b2?source=collection_archive---------5-----------------------

这篇关于AI in fin tech services的文章最初是为Django Stars 博客而写的。**

正如许多其他技术进步一样,人工智能从童话故事和小说书中走进了我们的生活(想想《绿野仙踪》中的铁皮人或《大都会》中的玛丽亚)。人们梦想机器能够解决问题,缓解 21 世纪快速增长的压力。

从人工智能这个术语出现至今不到 70 年,它已经成为最苛刻和快节奏行业不可或缺的一部分。具有前瞻性思维的执行经理和企业主积极探索人工智能在金融和其他领域的新用途,以获得市场竞争优势。

更多的时候,我们并没有意识到人工智能在我们的日常生活中涉及了多少。

今天的人工智能:它在哪里工作,为了什么

例如,在旅游行业,人工智能有助于优化销售和价格,以及防止欺诈交易。此外,当我们在网上浏览飞机或酒店预订网站计划下一个暑假时,人工智能使我们有可能为理想的日期、路线和费用提供个性化的建议。

** [## 旅游业中的机器学习和数据分析

克里斯托弗·哥伦布是历史上最著名的旅行家之一,他一生只进行了 4 次旅行。其中一个…

djangostars.com](https://djangostars.com/blog/benefits-of-the-use-of-machine-learning-and-ai-in-the-travel-industry/?utm_source=medium&utm_medium=towardsdatascience.com&utm_campaign=ai in fintech&utm_content=the traveling industry)

在交通运输行业,人工智能被积极用于开发自动停车和高级巡航控制功能,旨在使驾驶更轻松、更安全。专家认为,这里最大的突破就在眼前——自动驾驶汽车,或自动驾驶汽车,已经出现在道路上。

另一个使用人工智能的鲜明例子是教育,Coursera 或 Lynda 等开放在线课程(MOOC)每年都变得越来越受欢迎。随着人工智能在教育领域的兴起,这些都成为了可能。自动评分使任何能上网的人都可以自学在线课程——这对许多人的生活和职业来说都是一个关键点。

人工智能拯救生命,这不是比喻。从机器人手术到虚拟护理助理和病人监控,医生们利用人工智能为他们的病人提供最好的护理。图像分析和各种管理任务,如归档和制图,有助于降低昂贵的人工成本,并使医务人员有更多的时间与患者在一起。

人工智能在金融行业的崛起证明了它改变商业格局的速度有多快,即使是在传统的保守领域。这里只是人工智能在金融领域最受欢迎的一些例子。

1.人工智能和信贷决策

人工智能以更低的成本对潜在借款人进行更快、更准确的评估,并考虑更广泛的因素,从而做出更明智、有数据支持的决策。与传统信用评分系统相比,人工智能提供的信用评分基于更复杂和复杂的规则。它有助于贷款人区分高违约风险申请人和那些信用良好但缺乏广泛信用记录的人。

客观性是人工智能驱动机制的另一个好处。与人类不同,机器不可能有偏见。

数字银行和贷款发放应用程序使用机器学习算法来使用替代数据(例如,智能手机数据)来评估贷款资格并提供个性化选项。

美国的汽车贷款公司也报告了人工智能在满足他们需求方面的成功。例如,这份报告显示引进人工智能每年减少 23%的损失。

2.人工智能和风险管理

当谈到风险管理时,很难高估人工智能在金融服务中的影响。巨大的处理能力允许在短时间内处理大量数据,而认知计算有助于管理结构化和非结构化数据,这是一项需要人类花费太多时间才能完成的任务。算法分析风险案例的历史,并识别潜在未来问题的早期迹象。

在分析任何给定市场或环境的实时活动时,金融领域的人工智能是一个强大的盟友;它提供的准确预测和详细预测基于多个变量,对业务规划至关重要。

美国租赁公司 Crest Financial 在亚马逊网络服务*台上采用了人工智能,并立即看到风险分析方面的显著改进,没有传统数据科学方法相关的部署延迟。

您可能还喜欢:

[## 构建金融科技产品之前你需要考虑的问题

我喜欢金融的一点是,这个行业和时间一样古老——然而,很少有人敢进入它。幸运的是…

djangostars.com](https://djangostars.com/blog/what-you-need-to-consider-before-building-a-fintech-product/?utm_source=medium&utm_medium=towardsdatascience.com&utm_campaign=ai in fintech)

3.人工智能和欺诈预防

多年来,人工智能在打击金融欺诈方面一直非常成功——随着机器学习正在赶上罪犯,未来每年都在变得更加光明。

人工智能在防止信用卡欺诈方面尤其有效,*年来,由于电子商务和在线交易的增加,信用卡欺诈呈指数增长。欺诈检测系统分析客户的行为、位置和购买习惯,并在某些东西看起来不正常并与既定的消费模式相矛盾时触发安全机制。

银行还利用人工智能来揭示和防止另一种臭名昭著的金融犯罪:洗钱。机器可以识别可疑活动,并有助于降低调查涉嫌洗钱计划的成本。一项案例研究报告称调查工作量减少了 20%。

Plaid (与 CITI、高盛和美国运通等金融巨头合作)这样的聚合器对他们的欺诈检测能力引以为豪。其复杂的算法可以分析不同条件和变量下的相互作用,并建立多个实时更新的独特模式。格子作为一个小工具工作,连接银行和客户的应用程序,以确保安全的金融交易。

4.人工智能与交易

数据驱动的投资在过去 5 年中稳步增长,2018 年接* 1 万亿美元。也叫算法、量化或高频交易。

这种交易在全球股票市场迅速扩大,理由很充分:人工智能提供了多重重大好处。

智能交易系统监控结构化(数据库、电子表格等)。)和非结构化(社交媒体、新闻等。)数据所需的时间只是人们处理数据所需时间的一小部分。“时间就是金钱”这句话在交易中最真实:更快的处理意味着更快的决策,这反过来意味着更快的交易。

对股票表现的预测更加准确,因为算法可以根据过去的数据测试交易系统,并在投入使用前将验证过程提升到一个全新的水*。

人工智能根据特定投资者的短期和长期目标,为最强的投资组合提供建议;多家金融机构也信任人工智能来管理他们的整个投资组合。

商业新闻网站彭博最*推出了羊驼预测人工智能预测矩阵,这是一款面向人工智能投资者的价格预测应用。它将彭博提供的实时市场数据与先进的学习引擎相结合,以识别价格运动模式,从而进行高精度的市场预测。

5.人工智能和个性化银行

当涉及到探索新的方法来为个人用户提供额外的好处和舒适时,人工智能确实大放异彩。

在银行业,人工智能支持智能聊天机器人,为客户提供全面的自助解决方案,同时减少呼叫中心的工作量。由智能技术支持的语音控制虚拟助理,如亚马逊的 Alexa,也正在迅速获得牵引力,这并不奇怪:它们拥有自我教育功能,每天都变得更聪明,所以你应该期待这里的巨大进步。这两个工具都可以检查余额,安排付款,查找账户活动等等。

许多应用程序提供个性化的财务建议,并帮助个人实现他们的财务目标。这些智能系统跟踪收入、必要的经常性支出和消费习惯,并提出优化的计划和财务提示。

富国银行(Wells Fargo)、美国银行(Bank of America)和大通银行(Chase)等美国最大的银行已经推出了移动银行应用程序,为客户提供支付账单的提醒、计划支出,并以更简单、更简化的方式与银行互动,从获取信息到完成交易。

6.人工智能和过程自动化

当具有前瞻性思维的行业领导者希望削减运营成本和提高生产率时,他们会将目光投向机器人过程自动化。

智能字符识别使各种单调、耗时的任务自动化成为可能,这些任务过去需要数千个工作小时,并增加工资。支持人工智能的软件根据给定的参数验证数据并生成报告,审阅文档,并从表格(申请、协议等)中提取信息。).

采用机器人流程自动化处理高频率的重复性任务消除了人为错误的空间,并允许金融机构将工作人员的精力重新集中在需要人工参与的流程上。安永公司报告称这类任务的成本降低了 50%-70%,福布斯为“数字化转型的门户药物”。

一家领先的金融公司 JP Morgan Chase 已经成功地利用机器人流程自动化(RPA)执行了一段时间的任务,例如提取数据、遵守了解您的客户法规以及捕获文档。RPA 是摩根大通用来增强现金管理流程的五大新兴技术之一

对金融行业的人工智能未来有什么期待

对即将到来的人工智能在金融服务中的应用的预测是这些天的热门话题,但有一点是肯定的:人工智能正在迅速重塑金融业的商业格局。

人们对提高交易和账户安全性寄予厚望,特别是随着区块链和加密货币的普及。反过来,由于缺少中介,这可能会大大减少或消除交易费用。

各种数字助手和 app 都会因为认知计算而不断完善自己。这将极大地简化个人财务管理,因为智能机器将能够计划和执行短期和长期任务,从支付账单到准备报税。

随着自然语言处理的进步,以及从过去经验的不断扩大的数据池中学习更多,我们还可以期待看到使用复杂的自助虚拟现实系统的更好的客户服务。

更全面、更准确的“了解你的客户”报告和更彻底的尽职调查将带来更高水*的透明度,而现在这将耗费太多的人工时间。

结论

正如我们所看到的,人工智能在金融服务中的好处是多方面的,很难忽视。据福布斯报道,65%的高级财务管理人员预计人工智能在金融服务中的使用将带来积极的变化。

这就是说,截至 2018 年底,只有三分之一的公司采取措施将人工智能纳入公司流程。许多人仍然过于谨慎,担心这项工作需要时间和费用,而且在金融服务领域实施人工智能将面临挑战。

然而,一个人不能永远回避技术进步,从长远来看,现在不面对技术进步可能会付出更大的代价。

**

数据科学家和分析师在基因治疗中日益重要的作用

原文:https://towardsdatascience.com/the-growing-role-of-data-scientists-and-analysts-in-gene-therapy-9c5a04b63be4?source=collection_archive---------22-----------------------

Image via Rawpixel

几十年前,专门从事基因治疗和研究的人拥有强大的生物学背景就足够了。

现在,一种转变已经发生,扮演这一角色的个人需要同样舒适地在实验室工作或坐在电脑前。

数据科学有助于为患者选择最合适的治疗方法

免疫疗法包括增强免疫系统的干预措施,但一些现代方法结合了免疫疗法和基因疗法。在一个例子中,密歇根大学的一项研究表明,一种脑癌患者存活率很低,依赖于针对肿瘤的基因疗法和帮助对抗肿瘤的免疫疗法。

然而,免疫疗法会导致严重的副作用,并且应答率低,这意味着它并不适合每个患者。幸运的是,基因治疗的数据科学应用可以为患者的疾病创建基因突变谱并开发个性化治疗。然后,健康专家不太可能会推荐与免疫疗法或其他相关的无效治疗。

数据在临床试验招募中的作用

研究人员还对使用常规收集的数据(RCD)的潜力充满希望,例如包含在患者病历中的数据,以更好地确定临床试验的合适候选人和可能发挥最佳作用的治疗方法。众所周知,很难找到足够多的人参加临床试验,而基因治疗的规范加剧了这些挑战。

如果招募人员使用数据分析来缩小范围,并根据众多因素找到最有可能参与的人,他们可能会更成功地找到足够多符合标准的人,这样临床试验就会向前推进。

临床试验通常告诉研究人员如何集中他们的基因治疗努力,如果这些实验没有足够的参与者,它们就不会发生。依靠大数据工具可以增加找到愿意继续试验而不是退出的合适患者的机会。

大数据推进了人类基因组的研究

获得人类基因组的新发现曾经是一个极其耗时的过程。然而,多亏了大数据,科学家们可以了解到一些事情,如果没有这项技术,这些事情可能需要几个月或几年才能确定。

人类基因组有超过 20,000 个基因,每个基因有数百万个碱基对。科学家超越基因本身,发现它们如何相互作用。由此产生的大量信息意味着大数据是帮助遗传学家获得关于基因组的新发现的主要候选对象,进而促进基因治疗的进展。

在一项检查基因标记和基因表达之间联系的研究中,研究人员使用大数据分析工具将可能性从 9 亿缩小到 34 万

最新的基因治疗师是围绕数据成长起来的

基因治疗向更依赖数据分析的转变凸显了一些最新的基因治疗专家是如何习惯于使用数据的,甚至比他们的上级更习惯于使用数据。

他们自然会使用数据记录器来确保实验室或医院洁净室的环境条件符合最低标准,以满足合规性要求。

全世界有 160,000 台数据记录器在使用,数据分析师在评估与他们各自设施相关的信息方面发挥着重要作用。否则,研究人员可能不会注意到条件是否以可能损害患者安全的方式改变。

通过为学生提供结合生物学和信息处理的课程,如生物信息学,数据科学也正在改变基因疗法。这种演变表明,未来成功的遗传学家将至少对大数据有基本的熟悉。

大数据允许快速确定与疾病相关的基因组合

基因治疗的一个方面意味着评估患有已知疾病的人的遗传特征。然后,就有可能找出治疗这种疾病的最佳干预措施。

疾病会导致单个或多个基因突变。当使用传统方法时,发现与患者问题相关的所有基因组合非常耗时。

大数据*台,尤其是那些使用人工智能的*台,可以揭示最可能的组合,让研究人员在调查不同治疗方法的价值时节省时间。

基因治疗令人兴奋的未来

基因治疗传统上是一个昂贵而艰苦的过程,在为其他人提供实质性益处的同时,可能会给患者带来令人烦恼的副作用。

由于大数据*台和知道如何使用它们的人的影响,基因治疗的未来似乎格外有前途。

《卫报》食品食谱—主题建模

原文:https://towardsdatascience.com/the-guardian-recipes-part-2-lda-topic-modeling-51e5b13faefa?source=collection_archive---------39-----------------------

The Guardian Food Recipes by recipes from The Guardian

介绍

《卫报》的美食栏目邀请业余厨师探索无限的烹饪世界,接触新的食材和风味,学习烹饪技术或为庆祝盛宴寻找灵感。

在本系列的第一篇博文中,我告诉了你我对食物的热情和对数据科学的好奇。我向你展示了一些探索性数据分析,这些数据来自《卫报》最* 10 年每日发布的食谱。

本文的目的是参与主题建模。这种方法对于发现文档集合中出现的抽象“主题”非常有用。它允许快速理解一个长文本的含义,提取其关键字并对其内容进行分类。

你喜欢馅饼和果馅饼吗,你喜欢沙拉还是蛋糕,你喜欢鱼还是肉?到文章结束时,你就会知道该打电话给哪些《卫报》厨师专栏作家来为你的下一次晚宴做菜了!

如果你饿得等不到最后,你可能已经想看看这里的食谱

The Guardian Food Recipes — Yotam Ottolenghi’s chilled cucumber and yoghurt soup (photo by Louise Hagger), Claire Thomson’s spiced filo pumpkin pie (photo by Jean Cazals), Meera Sodha’s mee goreng (photo by Louise Hagger), José Pizarro’s clams ‘a la plancha’ (photo by Martin Poole), Henry Harris’ roast partridge and spiced blackberries (Ola O Smit), Nigel Slater’s figs with pistachio biscuits (photo by Romas Foord)

数据和方法

在从《卫报》收集了 7361 篇食谱文章后,最早的一篇可以追溯到 2009 年 1 月 3 日,最*的一篇是 2019 年 6 月 16 日,我首先清理了 Python 笔记本中的文本数据。

执行主题建模需要一些预备步骤。这些步骤包括文本数据的格式化:标记化、停用词去除以及词条化。关于这些步骤的更多细节,请看来自苏珊李文章

不同的技术可以用来做主题建模。在这篇文章中,我选择使用潜在狄利克雷分配 (LDA)。为了更好地了解 LDA 是如何工作的,你可以阅读大卫·m·布雷和艾尔的原始研究论文。或者从费利克斯回复来一篇更容易理解的文章。Greg Rafferty 关于哈利波特的系列博客文章也是一个很好的资源。

Fiona Beckett’s Wine Selection for Seafood (photo by The Picture Pantry), Yotam Ottolenghi’s tomato with lime and cardamom yoghurt (photo by Louise Hagger), Vicky Bennison’s cappellacci with pumpkin, Jeremy Lee’s bloody mary (photo by Martin Poole), and Anna Jones’ roast peaches with vanilla and thyme.

食谱主题建模

下表和图表显示了 Gensim LDA 模型的结果。所采取的预处理步骤是:

  • 选择 LDA 模型。这里我用了 Gensim(变分贝叶斯采样)和 Mallet(吉布斯采样)。
  • 确定题目的数量。在可视化了主题数量的模型一致性分数之后,我决定用 24 个不同的主题来训练模型。Gensim 的最佳一致性分数为 0.48。
  • 根据模型输出的前 10 个关键词,为 24 个潜在主题中的每一个指定一个主题名称。
  • 计算一些对《卫报》食谱贡献最大的厨师的主导话题。

以下见解值得半信半疑!Gensim 和 Mallet 的 LDA 模型在大多数情况下都有成熟的果实,但也有一些酸味。因此,我选择只选择与柔软多汁的水果相匹配的食谱文章,而忽略另一篇。这意味着,在我收获的所有食谱中,大约有 20%被搁置一旁(在下表中,这个主题被归为“其他”)。

主题建模,主题名称

Mallet 模型的结果可以比作食谱的成分。食材是关键词,菜品是文档。

有些话题或者你喜欢的菜式很容易识别。例如,关键字“饮料、葡萄酒、鸡尾酒、玻璃杯……”可以很快与链接到饮料和鸡尾酒的食谱相关联,类似地,“鱼、贻贝、鲑鱼、鱼片……”无疑指的是包含鱼的食谱。对其他人来说,需要多一点解读!如何看待以下配对?它适合你的口味吗,或者你会推荐别的吗?

The table gives an overview of LDA Mallet Topic Modeling results. The Topic Weight shows the probability of a document having a particular topic, the Topic Name shows the name assigned to the Mallet topic keywords.

菜谱厨师的主要话题

在第一部分中,我看到了这些年来对《卫报》食谱贡献最大的厨师。虽然每个厨师都喜欢从汤到坚果的一切,但他们通常根据自己的菜肴类型脱颖而出。通过查看他们所有的食谱可以注意到这一点吗?好吧,通过给每个食谱分配它们的主导主题,这可能会给我们一块美味的蛋糕!

Tiko Tuskadze’s apple, fennel and beetroot borscht (photo by Jonathan West), Thomasina Miers’ prawn bun cha (photo by Louise Hagger), Ken Yamada’s wild mushroom ramen (photo by Louise Hagger), Chad Parkhill’s negroni, and Mary Berry’s milk chocolate cake (photo by Ola O Smit)

在对《卫报食谱》贡献最大的作者中,奈杰尔·斯莱特、托马斯娜·迈尔斯、约坦·奥托林吉或安娜·琼斯值得一提。他们之间的区别是什么?如果你喜欢晚餐吃鱼或肉,或者你喜欢一碗汤配一块馅饼,你应该看看谁的食谱?

乍一看,结果似乎有点鸡肋!大多数厨师的食谱都是关于蔬菜、配菜或汤的。但是再咬一口,一些香料会变得明显。

海洋或牧场的爱好者,你可能会被奈杰尔·斯莱特、安吉拉·哈特内特或休·费恩利·惠汀斯托尔的肉类和鱼类菜肴所吸引。世界爱好者,你最好去 will Yotam Ottolenghi、Thomasina Miers 或 Anna Jones,品尝他们的咖喱和亚洲菜肴。

为了激起你的食欲, Nigel 的秋季菜单是一套舒适的菜肴,有南瓜、甜菜根、菠菜糕点、牛肋排和覆盆子千层饼。然而,安娜·琼斯提出了一些冬季沙拉或令人垂涎的威尔士蛋糕

The doughnuts charts show the three most famous men and the three most famous women chefs contributing to The Guardian. The doughnuts illustrate the percentage of their recipes belonging to each of the different categories.

没有一点甜点,用餐者就不完整!丹·莱帕德费莉希蒂·柯尔特鲁比·坦多大概是《卫报》最甜的厨师了。他们食谱的分类清楚地表明,他们是糕点、蛋糕和饼干的大师!所以,如果你想成为下一届英国烘焙大赛的一员,你应该喜欢阅读这些作者的作品!

The doughnut charts show the three most famous chefs writing recipes for baking. The doughnuts illustrate the percentage of their recipes belonging to each of the different categories.

节日菜肴,异国情调的饭菜,或节日饮料是同样重要的其他膳食!雷切尔·罗迪、米拉·索达和亨利·丁布尔比对此了如指掌!如果你一直想去意大利,品尝传统的意大利面食,瑞秋·罗迪会告诉你一切。如果你更喜欢向东旅行,进入一个丰富多彩的辛辣世界,那么 Meera Sodha 将带你穿越咖喱、dal、mee goreng 和 bahn mi 的世界。如果你需要什么东西来让自己开心一点,那么亨利·丁布尔比可能有办法。

The doughnut charts show the classification of Rachel Roddy, Meera Sodha and Henry Dimbleby’s recipes. The doughnuts illustrate the percentage of their recipes belonging to each of the different categories.

结论

本文探讨了 2013 年 1 月至 2019 年 6 月《卫报》发表的 7361 份食物食谱的 LDA 主题建模。研究表明,LDA 主题建模是深入了解英国名厨食谱的有用工具。然而,它也显示了一些局限性:一些食谱不能用 LDA 分类。

这部分是因为一些食谱文章提供了完整的菜单、配菜、主菜和甜点。但这也是因为烹饪可以被认为是一个“话题”:剁碎、切片、切割、剥皮、加热都是用来制作令人垂涎的菜肴的技术。不知道它们是否适用于苹果、西红柿或一些土豆,仍然很难知道你最后会吃甜点还是沙拉!

如果你有兴趣看我的预处理步骤,我是如何挑选,清洗,切碎,调味并最终整理众多数据的,你可以在这里看看我的 GitHub 资源库!点击查看上的互动可视化!

感谢阅读!奥德

洗碗前!

我希望你喜欢这篇文章,如果你想留下任何意见,建议或想法,我真的很感激!所以,请随时伸出手来!

在下一篇博文中,我的目标是使用单词云,并可视化多年来、各个季节以及每位厨师使用的顶级食材。

我是 数据和植物科学家 垂直未来 ,先前在WBC SD。理学硕士。在城市分析和智能城市方面,来自 UCL 的 Bartlett 伦敦的 CASA 和 BSc。在食品科学中从 苏黎世联邦理工学院 。对城市、美食、健康充满热情通过TwitterLinkedIn联系。

作为营销领域的数据科学家,困难之处在于

原文:https://towardsdatascience.com/the-hard-things-about-being-a-data-scientist-in-marketing-b74365686b11?source=collection_archive---------19-----------------------

提示:不是代码。

大多数数据科学家的工作描述越来越多地要求技术技能,涵盖机器学习、编程、工具和统计知识等领域。候选人通过在简历中加载数据科学词汇中的每个已知术语来不断赶上这些要求,以提高匹配的机会,讽刺的是,这是由机器学习驱动的程序完成的。

在我作为这一行从业者的有限经验中,我发现最难完成的任务不是选择建模技术或编写适合模型的代码,也不是可视化所获得的结果。这是一套不同的能力,可以创造或破坏一个项目的成功机会。

那么,作为一名营销数据科学家,我所指的困难是什么?

构建业务问题

对于那些已经从事这一行业一段时间的人或者一般的开明人士来说,这可能听起来很明显。然而,很容易与企业主一起启动项目,而不会问这样的问题:

  • 假设是什么?
  • 最终的用例是什么?
  • 根据这一分析,我们可以提出什么建议?

品牌经理、策划人和战略家通常会提出具体要求。对他们来说,背景、业务目标和获得答案的关键路径可能是清楚的。也可能不是。在任何情况下,提取上下文、重复和捕获业务问题,并在整个项目执行过程中将其用作指南,是数据科学项目成功的最关键步骤。至少,它最大限度地减少了产生不相关内容的机会。最好的情况是,这样做极大地提高了工作的影响力。这就造成了“哦,谢谢,很高兴知道”和“这真是太棒了!我们在这里学习新事物”这种回答。

收集数据

新产生的数据科学家有时认为,用来建立模型的完美数据是一个 sql 查询,或者就存在于电离层中,可以使用 API 下载,或者是教授在必须上交作业之前通过电子邮件分享的东西。从数据质量的角度来看,营销和消费者洞察是分析师工作中最具挑战性的领域之一。我很确定当我说这些的时候,我有点自我伤害,但是我有很好的理由。

原因一:数据在哪里?

与受控研究项目和调查不同,数据管道的所有者通常不是营销职能中的数据用户。如果你幸运的话,你可能和他们坐得很*(像我一样),但仍然有不同的优先事项。如果你运气不好,你可能正在处理每月一次的整合数据——所以你一年可以得到一个品牌的 12 个数据点!祝你好运,带来令人敬畏的见解。如果你真的很不幸,你会听到一个浮动的神话,即你的项目的完美数据存在,但被深埋在客户端企业宇宙的一个被遗忘的部分(通常是第一方数据捕获者),并将需要 200 封电子邮件和大量的游说才能获得。不,我不是愤世嫉俗。当你加上这种领土意识、公司筒仓和人类对珍贵物品的占有欲,这个问题就变得非常现实。

原因 2:层次结构和分类法

营销用例需要将来自各种来源(第一方与第三方、实时与历史、调查与广告服务器等)的数据整合在一起,这些数据往往没有万能钥匙。营销世界中也没有通用的分类法,允许我们跨各种数据集进行连接——从部门到顶级类别到子类别,再到品牌变体和子品牌——每个数据供应商/内部团队都遵循不同的惯例,这些惯例并不明确适合需要将这些数据集结合在一起的用例。没有一个单一的类别、品牌及其产品等级的提供者,因此,没有一个关于如何比较两个事物的单一定义。两个品牌在性能指标上进行比较的背景只能与你作品的使用者达成一致。这是可以避免的,通过确保“什么是可比的?”被仔细记录。这意味着大量的项目组织工作和时间花费在重新聚集数据集以计算指标上。有时可能需要几天、几周甚至几个月。你唯一能做的就是从时间线的角度保持务实。这让我想到了作为一名数据科学家的下一个难题,尤其是在营销领域。

合适的时机和范围

我称之为“分析的流沙”。这又回到了完美与实用之间的冲突!试图产生与业务相关的见解,在充满压力的办公室环境中使用不太完美的数据集与时间赛跑,在这种环境中,数据科学家的声音通常是最低分贝的,这本身就是一项重大挑战。在这种情况下,运用判断力并与其他利益相关者沟通,以了解你需要将工作进行到何种程度才能产生影响,这一点至关重要。回到那句格言,合理的时间*似值比来得太晚的完美答案更有价值。有助于避免分析流沙的一些技巧:

  • 在追踪过程中,始终关注原始问题和用例,并根据获得答案所需的内容减少数据量
  • 定义项目的下钻结构,即基于每个分析阶段发现的决策树。虽然这听起来完全不需要动脑筋,但这是我们经常忽略的事情。结果是,过多的时间花在了探索线索和分支上,这并不能帮助我们更好地回答业务问题。一个简单的思维实验,大概是这样的:
  • (a)你希望在高层找到什么?(b)根据顶级调查结果,您应该深入了解什么?如果发现与假设不符会发生什么?(d)何时改变轨道或停止项目?
  • 如果不是在最开始,在最初的数据探索之后,根据与业务所有者讨论的范围,为分析准备一个框架演示或故事板。

当然,还有其他困难的事情,如选择正确的分析框架、模型和统计技术、参数调整、解释结果、编码过程中的挑战、使用无数的 API 和复杂的 SQL、对不适合内存的大型数据集进行缩放、输出的仪表板、制作可重用的代码、使用 linux 命令行等。等等。对于所有这些,有参考书、博客、公共 git repos、导师、ML APIs 和 bootcamps。但对于我之前提到的事情,经验、判断和优秀的管理者是关键。我对想在营销行业发展的数据科学家的建议是:不断更新编码和技术技能,但更重要的是,开始说营销语言,学会问正确的业务问题,练习在组织结构中工作,以识别和获得正确的数据。这些经常被忽视的技能在现在会更好地为我们服务,但更重要的是从长远来看。同意吗?

数据科学最难的部分?数据。

原文:https://towardsdatascience.com/the-hardest-part-of-data-science-data-1877a5cd30d7?source=collection_archive---------25-----------------------

Photo by Tim Gouw on Unsplash

数据科学不是,也从来不是关于模型的。

在过去的十年中,数据科学突破了所有的噪音,成为现代技术的支柱之一。现在,基于历史数据进行预测的能力推动了几乎所有新产品、商业计划和处于行业前沿的组织。

这些功能是随着预测模型(能够“拟合”(学习)历史数据的算法)的采用而引入的。因此,毫不奇怪,在选择和训练模型的过程的自动化、精简化和民主化方面已经投入了大量的工作。

从商业机器学习工具到开源库(像 Sklearn、Auto-Sklearn、TPOT 等。),前几年投入的工作使我们能够清楚地表明:

模特开始商品化

每个知道如何编写 Python 脚本的新手现在都可以训练一个模型。现在,每个拥有合适 Excel 插件的业务分析师都可以根据他们的财务数据训练一个回归模型。我,我自己,在学习 Python 的两个月内就能训练出一个成功的模型。

训练模型,尤其是复杂的模型(例如梯度增强树),在十年前可能是一个挑战,但自那以后发生了很多事情:

  • 成熟、高效且易于使用的开源建模库获得了巨大的吸引力(如 Sklearn、XGBoost、CatBoost 等)。)
  • 可用的计算能力显著提高
  • 像 Python 这样易于编写的语言开始占据主导地位
  • 大数据和云基础设施取得了进步
  • 围绕数据科学和机器学习的开放和可访问的知识和学习材料变得可用

训练一个复杂的模型现在只需要几行代码和很短的计算时间。

在我们继续之前,快速声明:在本文中,我将重点关注涉及表格和/或半结构化数据的经典数据科学问题。我的观点不适用于计算机视觉/音频用例。

数据科学的核心挑战

这与算法无关,而是要给它们提供正确的数据。

今天,当将数据科学应用于商业问题时,几乎没有人发明新的算法(同样,不一定适用于计算机视觉/音频和 NLP 用例)。十多年来,我们一直在使用相同的模型。梯度推进树(XGBoost)在上个世纪被引入,支持向量机在 20 世纪 60 年代被引入,线性回归……可能在公元前 1000 年左右。

数据科学与任何其他从新技术中产生并影响社会的职业没有什么不同。它继续发展,为复杂的问题和挑战打开了无尽的大门,一个比一个更令人兴奋。然而我们继续使用同样的模型。Kaggle 竞赛的获胜者通过使用 30 岁的模特来登上排行榜的榜首来证明这一点。如果 30 岁的模特正在赢得比赛,按理说这些模特不是“X 因素”的来源。

事实是,数据科学一直专注于试图从最新的算法中产生商业价值,以至于我们错过了最重要的部分:数据科学不是,也从来不是关于模型的。

假设大部分建模都是商品化和自动化的,那么构建一个强大而准确的预测系统的下一个挑战是什么?究竟是什么让一个模型成功?

将“数据”纳入数据科学

我们都听说过“垃圾进,垃圾出”这句话如果我试图训练一个模型,根据一个人名字中的字符数来预测信用违约,我可能会成功地让模型工作(训练和预测),但模型基本上是随机猜测的。

为了决定一个数据科学项目是否会成功,我们需要问的主要问题是并且永远是:我们是否有正确的数据来训练一个模型来解决我们试图解决的问题?

“正确的数据”可以分解为多个子问题:

  1. 我们是否有正确的数据属性,以便我们的模型可以推断出现实的模式和规则?
  2. 我们有足够的样本来训练模型吗?
  3. 在将数据输入算法之前,我们是否以正确的方式设计(整合、聚集、转换)了数据?

说到工程……斯坦福大学教授吴恩达准确地说:

“…应用机器学习基本上是特征工程。”

吴教授所说的“特征工程”是什么意思

由于该领域的争论,围绕不同术语的含义出现了一些混乱。我建议我们将特征工程分解成两个部分:

  • 特征生成:初始阶段,我们搜索数据以生成特征。我们汇总、应用业务逻辑,并将多个来源纳入每个样本的一个数字属性矩阵。
  • 特征标准化:归一化、缩放、插补和编码。我们对特征集进行转换,使其对模型更具“吸引力”。这些通常与模型相关。例如,虽然决策树可以很好地处理原始的、未缩放的数字特征,但线性模型通常需要正确的插补和缩放(例如,单位方差和零均值)。

我认为功能标准化正在走一条与模型相似的道路。与模型商品化的方式相同,功能标准化也可以商品化。就像 autoML 技术一样,您可以使用不同的标准化技术遍历不同的模型,直到您找到性能最佳的组合。与要生成的可能特征的搜索空间不同,标准化技术和不同模型的不同组合没有我们想象的那么大。

为了说明我的观点,下面是我用特征标准化技术自动选择模型的伪算法:

给出一系列可能的特征标准化方法,如缩放和插补方法(均值插补、单位方差缩放、PCA 等)

并给出了可能的模型列表(线性回归、SVM、有 100 棵决策树的 XGBoost、有 1000 棵决策树的 XGBoost……)

用随机预处理器和随机模型生成实验。

经过几次迭代后,选择最佳实验。

很明显,这并不像我提出的那么简单。参数空间大,组合数量应该有限——但这不是火箭科学。有很多工具在这方面做得很好(比如 Auto-Sklearn 或 TPOT)。随着计算能力变得越来越便宜和可用,这只会变得更容易。

然而,特征生成并不在同一个地方。

特征生成的艺术

今天,主流数据科学更多地采用艺术方法而不是科学方法来生成特征。它相信人类数据科学家会为功能想到正确的想法,找到正确的数据源,了解如何将它们集成在一起,了解聚合和转换数据的正确方法,并在最终的功能之间生成交互。

因此,我将有点粗鲁地把吴教授的说法改为:

“…应用机器学习基本上是特征生成。”

生成特征时没有通用准则可循的原因很明显:潜在相关数据源(组织内部和外部)的数量太大。你可以想出无限多的方法来生成特征。

如今,所有试图“自动化数据科学”的工具都将生成高价值特征和信号以馈入模型(和标准化技术)的任务留给了我们人类。鉴于我们不像机器那样擅长探索搜索空间,我们错过了很多东西。

有无数的数据可能与我们试图解决的每一个用例以及我们试图建立的模型都相关,但最大限度地发掘其潜力是不可行的。

当一家银行只根据一个人的历史交易记录建立信用违约模型时,他们做得好吗?如果那个人刚读完一个大概率找到高薪工作的学位怎么办?

当零售商根据历史销售和促销活动计划促销日历时,他们做得好吗?如果假期过后人们不介意支付更高的价格呢?

冒着在本文中使用太多术语的风险,重要的是要记住数据实际上是新的石油。然而,当我们审视数据科学工具和技术的当前状态时,我们经常会发现算法工具是从数据工具中分离出来的。我们在与模型相关的任务方面取得了很多进步,但仍有数量呈指数增长的数据在很大程度上被忽略。

自动化特征生成和数据发现

我相信,解决模型构建过程中的数据部分将为我们周围的企业和产品带来无尽的价值。如今,这是所有类型组织的主要瓶颈。

如果一家具有前瞻性思维的大型公司试图将数据科学扩展到不同的功能和用例,它很快就会发现,没有足够多的数据科学家能够通过不同的功能和数据源进行编码。如果一家公司希望获得相关的数据源来改进现有的模型,它可能会为测试一个新的数据源(假设、匹配和集成、聚合和生成特征)而不得不做的大量人工工作而感到头疼,这只是为了确定它是否确实改进了一个预测模型。如果一家公司没有无限量的数据,他们将需要越来越努力地寻找更好的数据,并产生高价值的功能。

所有这些障碍都可以通过在构建模型的上下文中自动执行探索数据源和生成要素的过程来解决。

现在,随着越来越多的自动化进入数据科学,我们都在问这个问题:这将取代数据科学家吗?号码

将业务问题转化为“数据问题”总是需要数据科学家,以了解什么是正确的预测,定义问题的搜索空间,防止数据泄漏,并测试结果以确保它们有意义并可用于生产以影响业务。

是时候开始关注数据科学的数据部分了。我们的模型需要它。

你在数据科学面试中被问到的最难的问题

原文:https://towardsdatascience.com/the-hardest-question-youve-been-asked-in-a-data-science-interview-f3eb16b889cb?source=collection_archive---------20-----------------------

我在 YC 的一家公司工作,该公司发展了一个有趣的内部松散的数据科学家团队。这是一个私人团体,但最*在 Twitter 上引起了一些关注,我们认为如果我们发布一些我们在那里的对话,可能会对有抱负的数据科学家有所帮助。推特同意,所以这就是我今天要做的。

我将发布的第一个对话以我们的一位同事向社区提出的一个问题开始:在数据科学面试中,你被问到的最难的问题是什么?

(我在下面改了提问者的名字,但一些参与者友好地同意分享他们的全名和他们在线个人资料的链接。)

潘苏珊问道:

你在数据科学面试中遇到的最难的问题是什么?

我来分享一下我的:“你有几年的 X 语言经验?”这个真的很难回答:我在学术界用了多少年算不算?我会计算我在业余爱好项目中使用它的年数吗?我是否计算过我在工作中使用它的年数,但仅仅是 15%的时间?

我曾经决定回答这个问题,问面试官:“你能详细说一下吗?”我想面试官认为我疯了。

希望听到你最困难的问题,也许我们可以分享如何回答这些问题的建议!

Ray Phan 的回答:

下面是我的:“如果你不得不选择一个对你来说最困难的技术问题,请解释它是什么,以及你是如何解决它的?”

这很难做到的原因是,随着你的前进,它会让你对问题敞开心扉。他们可以决定对你的方法的每一部分进行多深或多远的调查。事实上,这是我在采访别人时经常问的一个问题。你可以很快确定某人是否真的知道如何解决问题,或者他们是否依靠了别人的帮助。

有趣的是,这是埃隆·马斯克在采访中问的唯一一个问题。(来源:我在申请特斯拉的自动驾驶项目时,他亲自面试了我。)

苏珊:

感谢分享!用这个问题,你是在测试候选人解决问题的方法,还是他们对技术概念理解的深度,或者两者兼而有之?

:

两者的混合物。

我想看看他们在处理一个相对未知的问题时的能力,他们在整个过程中学到了什么技能和方法,以及他们解决问题的能力,以确定他们是否成功地解决了这个问题。

通过他们回答我的后续问题的方式,以及他们与我分享的关于他们如何解决问题的详细程度,我很好地了解了他们是否可以独立工作,是否可以在团队中工作(当他们向我解释概念时,我会进一步挖掘),以及我是否会在一天结束时信任那个人。

这就是为什么我说这个问题很难的原因,因为它在一个问题中告诉了我关于这个人资质的几乎所有信息。

:

我现在的问题是:我可以告诉你我曾经面临的最困难的问题是什么,但是我必须承认我当时做得很差。真的很差。我意识到这是我展示成长的一个潜在的地方,但我最终必须首先承认我最初失败了。

如果你要采访我,你会欣赏我的诚实吗?或者你会建议我选择我曾经面对过的第二难的问题,也许是一个我做得不那么糟糕的问题?

射线 :

我希望你向我承认这一点,并告诉我为什么。成长也是我寻求的东西,如果你从中学不到任何东西,那么我不会雇用你——如果谈话中断,我会跳到第二个问题!

狮子座 :

公*。谢谢大家!我当然需要练习这些面试问题。

射线 :

我对我的学员进行的部分指导正是这种提问方式。我通常将其分成 4 组面试,以确保学员做好准备。

(1)预筛选
(2)技术契合度←我上面提到的问题到这里
(3)商业敏锐度
(4)文化契合度

我试着问一些他们不会想到的问题——这也是为什么我向他们强调不要准备我的模拟面试。

但是没错,练习!你的导师很有希望做我刚才说的事情。

完整的对话比这个要长一点,它得到了几个其他的答案。但雷的是我最喜欢的,因为他给出的面试问题迫使你设定自己的难度。如果你挑了一个太容易的技术问题,你可能看起来很糟糕;但是如果你选择一个太难的,你可能会弄糟它的解决方案,而且看起来很糟糕!所以你必须选择你很有把握能解决的最难的问题——这是问题的关键。

有趣的是,这是埃隆·马斯克在采访中问的唯一一个问题。那是我不知道的事情。

我在考虑将来发布更多这样的无聊对话。因此,如果你有兴趣看到本次对话中的其他答案(或看到其他人的答案),请在 Twitter 上联系我并告诉我。如果你有任何问题,我的 DMs 是开放的。

人工神经网络背后的数学

原文:https://towardsdatascience.com/the-heart-of-artificial-neural-networks-26627e8c03ba?source=collection_archive---------9-----------------------

像大脑一样的神经元和像心脏一样的数学

就像大脑由数十亿个高度连接的神经元组成一样,神经网络中的一个基本操作单元是一个类似神经元的节点。它从其他节点获取输入,并将输出发送给其他节点。—费·

image by Anastasia Dulgier

由于语音识别、计算机视觉和文本处理方面的许多突破性成果,人工神经网络在机器学习研究和行业中产生了许多兴奋。

在这篇文章中,我将关注神经元的基本结构,神经元如何工作以及神经网络背后的数学。

感知器

具有输入层和输出层的简单人工神经元称为感知器。

这个神经元包含什么?

  1. 求和函数
  2. 激活功能

给感知器的输入由求和函数处理,然后由激活函数处理以获得期望的输出。

Perceptron

这是一个简单的感知器,但如果我们有许多输入和巨大的数据,一个感知器是不够的,对不对??我们必须继续增加神经元。这是基本的神经网络,有输入层,隐藏层,输出层。

Neural network

我们应该永远记住,神经网络只有一个输入层,输出层,但它可以有多个隐藏层。在上图中,我们可以看到样本神经网络有一个输入层、两个隐藏层和一个输出层。

作为神经网络的先决条件,让我们知道什么是激活函数和激活函数的类型。

激活功能

激活函数的主要目的是将神经元输入信号的加权和转换成输出信号。并且该输出信号被用作下一层的输入。

任何激活函数都应该是可微分的,因为我们使用反向传播机制来减少误差并相应地更新权重。

激活功能的类型

image Source

乙状结肠的

  1. 范围从 0 到 1。
  2. x 的小变化会导致 y 的大变化。
  3. 通常用于二进制分类的输出层。

双曲正切

  1. 范围在-1 和 1 之间。
  2. 输出值以零为中心。
  3. 通常用于隐藏层。

RELU(校正线性单位)

  1. 范围在 0 和最大值(x)之间。
  2. 与 sigmoid 和 tanh 函数相比,计算成本较低。
  3. 隐藏层的默认功能。
  4. 它会导致神经元死亡,这可以通过应用漏 RELU 函数来补偿。

到目前为止,我们已经学习了感知机和激活功能的先决条件。现在让我们深入研究神经网络(神经网络的核心)的工作原理。

神经网络的工作

神经网络基于两个原理工作

  1. 正向传播
  2. 反向传播

让我们借助一个例子来理解这些积木。这里我考虑的是单一的输入层,隐藏层,输出层,使理解清晰。

正向传播

  1. 考虑到我们有数据,并希望应用二元分类来获得所需的输出。
  2. 取一个具有 X1、X2 特征的样本,这些特征将在一组过程中被操作以预测结果。
  3. 每个特征与一个权重相关联,其中 X1,X2 作为特征,W1,W2 作为权重。这些被用作神经元的输入。
  4. 神经元执行这两种功能。a)求和 b)激活。
  5. 在求和过程中,所有特征都乘以它们的权重,然后对偏差求和。(Y=W1X1+W2X2+b)。
  6. 这个求和函数应用于激活函数。该神经元的输出乘以权重 W3,并作为输入提供给输出层。
  7. 同样的过程发生在每个神经元中,但我们改变了隐藏层神经元的激活函数,而不是输出层。

我们只是随机初始化权重,然后继续这个过程。有许多初始化权重的技术。但是,你可能会怀疑这些权重是如何更新的,对吗???这将使用反向传播来回答。

反向传播

让我们回到我们的微积分基础,我们将使用学生时代学到的链式法则来更新权重。

链式法则

链规则为我们提供了一种寻找复合函数导数的技术,组成复合函数的函数数量决定了需要多少个微分步骤。例如,如果复合函数 f ( x )被定义为

Chain rule

让我们将链式法则应用于单个神经元,

Chain Rule

在神经网络中,我们的主要目标是减少误差,为了使之成为可能,我们必须通过反向传播来更新所有的权重。我们需要找到权重的变化,以使误差最小。为此,我们计算 dE/dW1 和 dE/dW2。

Change in Weights

Backward Propagation

一旦你计算出与误差有关的重量变化,我们的下一步将是使用梯度下降程序更新重量。请点击查看关于梯度下降的更多详情。

New weights

对于所有样本,前向传播和后向传播将是连续的,直到误差达到最小值。

包扎

在这里,我们了解了什么是神经元,神经网络如何工作的基础知识。但是,这还不够,在更新权重时还存在许多问题,如神经元死亡、权重超出范围等。我将发表一篇新文章,讨论激活函数面临的挑战以及如何减少神经元以减少训练错误。

参考

链式法则,克里夫笔记,https://www . cliffs Notes . com/study-guides/calculus/calculus/the-derivative/chain-Rule

希望你喜欢它!!!敬请期待!!!请对任何疑问或建议发表评论!!!!

鸡尾酒的隐性成本

原文:https://towardsdatascience.com/the-hidden-cost-of-cocktails-8763340c7db7?source=collection_archive---------20-----------------------

鸡尾酒不仅仅是高端烈酒、新鲜果汁和异国情调的配料——时间和机会成本也很重要。

在以前的博客文章中,我已经讨论过在【Jupiter Disco】自动化我们一些日常工作流程的过程,特别是 解析我们的日常销售报告 产品组合报告 到 Google Sheets。此后,我在 Google Apps 脚本中添加了一个集成,将数据加载到位于 Google CloudSQL 实例中的 MySQL 数据库中,并通过Stitchbig query中复制。虽然数据管道和架构仍然是一项正在进行的工作,但在这一点上,我已经有足够的东西可以挖掘,并开始使用 SQL、Python 和统计数据挖掘一些见解。

关于酒吧

我想预先声明,酒吧是神奇的和必不可少的。它们是无脚本生活的最后堡垒之一,我这个正在进行的项目的目的是帮助我的酒吧和其他人在数字时代繁荣发展。技术既是颠覆性的,也是变革性的——如果我们能够将网飞和堡垒之夜消耗的一小部分技术带宽应用于我们的小实体空间,也许我们将有机会与这些晚期资本主义的庞然大物对抗,至少在我们都试图进入黑太阳之前是如此。

还有鸡尾酒

“我可以在同样的时间内卖出 10 杯伏特加苏打水,利润却更高,为什么还要提供鸡尾酒呢?”烦人的酒吧老板

恼人的酒吧老板当然在技术上是正确的,就像大多数经济学家对经济阴谋的理论是正确的一样。但是,酒吧,就像它们所在的经济一样,是由人建造、经营和消费的,而人们,在他们所有不可预测、有创造力和古怪的荣耀中,并不总是想要伏特加苏打,有时他们不知道他们想要什么,很多时候他们喝的其实并不重要,但他们确实喜欢在大块冰块上提供精心制作的鸡尾酒。只是不太甜。

鸡尾酒规则。真正伟大的鸡尾酒酒吧提供的菜单是异想天开的、怪诞的、复古的、创新的和永恒的——一种有形的、可消费的展示,如果欧格斯·兰斯莫斯被指定指挥《沙丘》,而 DJ 巴士替换服务负责音乐监督,《沙丘》( 2020)看起来会是什么样子。我不相信任何鸡尾酒已经突破到“真正的艺术”领域,但有些至少已经达到了沙丘(1984)的地位,这不是什么。因此,让我们深入研究这些数据,梳理出一些“可操作的见解”。

建立

这是 Jupiter Disco 年初至今的产品组合,第一张图表基于销售额:

Jupiter Disco Product Mix YTD — Sales

因此,在一个高层次上,Jupiter Disco 年初至今的销售额中有 40.8%属于酒类,这代表了 highballs(前面提到的伏特加苏打、杜松子酒和威士忌姜汁饮料等)、shots 和直饮。另外 26.8%是鸡尾酒,包括经典鸡尾酒和家酿鸡尾酒,25.2%是啤酒,包括生啤酒和罐装啤酒。

根据销售量,产品组合看起来有点不同——注意,鸡尾酒占美元收入的百分比从 26.8%上升到占销售量的百分比 17.8%。

Jupiter Disco Product Mix YTD — Quantities

我们卖很多 5 美元的 Narragansetts。虽然 13 美元的鸡尾酒不多,但总的来说,我们的鸡尾酒收入略高于啤酒收入。

在我们继续之前:酒吧有许多不同的形式和格式。Jupiter Disco 是一个 1000 *方英尺的鸡尾酒吧/舞蹈俱乐部,周末通常会达到其有限的常设允许容量。这是一种完全不同于只有座位的鸡尾酒吧的形式,鸡尾酒吧本身也是一种完全不同于“提供真正美味鸡尾酒的社区酒吧”的形式。我们都是不同的,所以你的里程可能会有所不同。

问题

那么经营一家裹着夜店的鸡尾酒吧有什么影响呢?首先,我们必须花更多的钱来维护我们的音响系统:

但另一个原因是,我们在高音量环境下提供合适的鸡尾酒,而这些鸡尾酒需要时间来调制。我们能量化那段时间的成本吗?

编码时间到了

在查询我们的数据库并做了一些清理后,我的数据帧如下所示:

所以每一行代表每天每种产品的数量和总销售额。该数据集有 12,341 行(实际上是 2019 年年初至今),我可以使用df.pivot_table().apply()方法将这些行聚合并转换为百分比,添加一个包含星期几的列,合并为“鸡尾酒”和“非鸡尾酒”,并过滤数据帧,只显示周末:

此时,我会将其与包含每日净销售额的数据框架合并,并准备好一个完整的数据框架,包含总共 84 行(2019 年的每周五和周六晚上)。

为了为下一步分析做好准备,让我们来看看一年中鸡尾酒总量百分比的*均值、标准差、范围和四分位数:

因此,在周末,我们的*均鸡尾酒百分比为 16.0%,您会注意到这略低于整体(包括全天)的 17.8%。

相关

让我们看看鸡尾酒和非鸡尾酒百分比与净销售额之间的相关性:

这很有趣。看起来我们的鸡尾酒百分比与净销售额呈负相关,相关系数为-0.38。对此的一种解释是,当我们在周末销售鸡尾酒与非鸡尾酒的比例较高时,我们的销售额会较低。虽然相关性并不意味着因果关系,事实上我们客观地知道鸡尾酒比罐装啤酒需要更长的时间来制作,我们可以怀疑鸡尾酒的价格溢价是否没有完全捕捉到制作一杯鸡尾酒所需时间的机会成本。

我们的周六比周五更忙,这种关系甚至比周五更牢固:

让我们计划周末:

Net Sales on the Y-Axis, Cocktails as a Percentage of Total by Quantity on the X-Axis

-0.38 不是一个很强的相关性,但它是中等程度的,并且在上面的散点图中可以看出这种模式。我们还可以看看一年来的关系:

Net Sales (Blue) versus Cocktails Percentage of Total by Quantity (Red)

很明显,我遮住了左边的 Y 轴,因为这篇文章的目的不是在互联网上大肆宣传 Jupiter Disco 的销售,希望你们都明白。

统计显著性

为了尝试量化影响,我将该数据集分为两个样本集:(1)低鸡尾酒百分比,代表低于中值鸡尾酒百分比 15.9%的 50%的数据,以及(2)高鸡尾酒百分比,代表上述数据的 50%。

查看每个样本集的统计数据,低鸡尾酒百分比组的*均销售额比整体*均值高 5.3%,高鸡尾酒百分比组的*均销售额比整体*均值低 5.3%,根据我们销售的鸡尾酒百分比,这似乎是一个相当大的波动。

有统计学意义吗?

在我们进行测试之前,让我们把问题恰当地组织起来。我们的无效假设是,高比例的鸡尾酒不会对销售产生负面影响。我们的另一个假设是,高比例的鸡尾酒确实对销售有负面影响。让我们将显著性水*设置为 0.05,并进行 t 检验,以评估我们是否可以拒绝或无法拒绝我们的零假设。

因此,p 值为 0.01,看起来这两个*均值之间的差异确实具有统计学意义,我们可以拒绝零假设。

现在该怎么办

量化运行鸡尾酒计划的成本是困难的。数据中无疑有很多噪音。人群会发生变化,一个晚上的总人数会随着时间的推移而变化,而且会有员工流动。鸡尾酒本身也会改变。

但看起来这个数据中确实有一点信号,这意味着鸡尾酒价格溢价并没有完全捕捉到生产时间的机会成本(这里的机会成本是调酒师可能出售伏特加苏打水的时间)。如果我们不想提价(我们确实不想),这意味着我们必须重新审视制作鸡尾酒的构建和流程,看看我们是否可以节省一些时间,让它们更快地出来。

从高层次上来说,我希望这篇文章能帮助你理解鸡尾酒比高杯酒更贵的原因之一。不仅仅是杯子里的成分。花在搅拌鸡尾酒上的每一分钟都不是花在倒啤酒和饮料上的时间,在繁忙的夜晚,这些时间会累积起来。这还是在我们开始考虑每种鸡尾酒的研发成本、培训时间以及所有其他进入其真实成本的因素之前,无论是否明确说明。

希望你喜欢。

写作分析的隐藏宝石

原文:https://towardsdatascience.com/the-hidden-gems-of-writing-analytics-6db78fad5a51?source=collection_archive---------29-----------------------

我对有志成为数据初学者的建议

这是我在谷歌工作、吸引被动收入、激励数据初级人员以及更多事情的黄金入场券

Source: Unsplash

4 年前,也就是 2015 年,我成为新加坡管理大学(Singapore Management University)首批参加分析专业化考试的学生之一。

尽管最初有大量学生涌入尝试这些专业,但许多商科学生发现它们很难,于是辍学了。他们是突然面临编码和分析思维困难的商科学生。由于课程仍然很新,帮助他们弥补学习差距的支持数量很少。

因此,作为一名分析爱好者,我发现了一个我可以做出贡献的差距。

“我如何帮助我的下级(具有商业背景)更好地学习数据分析?”

我认为这将是我学习的一个很好的机会,同时也能帮助我的学生学习分析。

写作和教学是最重要的

我是如何开始的:构建价值投资工具

我意识到,许多苦苦挣扎的学生转而学习金融和股票分析,因为他们希望在知名公司工作。因此,我决定我的第一个目标是构建对他们重要的分析应用程序。在当地投资俱乐部的帮助下,我开发了一个分析工具来快速提取和处理相关的财务比率

构建和教授重要的解决方案

随着它变得成功,我进一步教我的低年级学生更多的学习用例。对于运营管理的学生,我教他们线性和整数优化(LP & IP) 。对于市场营销专业的学生,我教他们 Twitter 情绪和社交媒体分析

结果是成功的;我收到了我的学弟的笔记,他用我的代码来开发 Twitter 情绪仪表板。然后,我产生了足够的兴趣,促成了一个非正式的社区,供商科学生学习分析。我在 Github 上预订了小自习室来方便我的项目。

在 Youtube 上教授分析

很快,我有了一个为 SMU 商业情报和分析俱乐部(BIA) 起草课程的计划。我开始在 Youtube 上教学,这让我可以推广我的频道并大规模地回顾我的教学。几个月后,我的通道被用作 SMU·BIA 教授他们学生的创世课程。

“帮助我的学生更好地学习数据分析”…等等

半年之内,我在媒体上发表了 30 多篇关于我的侧面分析项目的博客,并获得了 800 多名关注者。这证明了许多潜力为需要指导的有抱负的数据科学家增加了价值。

编写数据分析背后隐藏的 5 颗宝石

我想和你分享写分析如何通过 5 个隐藏的宝石帮助我成长为一名有能力的数据科学家:职业、灵感、收入、可信度和价值。

职业:它让我进入谷歌

Inviting Singapore Institute of Management (SIM) Society of Mathematical Sciences Org Comm to Google

正如你从我最*的文章中所知道的,我被谷歌挖走了。谷歌是拥有最聪明员工的顶级公司之一。怎么可能 Google HR 猎头我?难道他们不应该已经有很多非常合格的申请者求着走进他们的大门吗?

答案很有意思,因为我恰好是特例之一。在谷歌,有两种常规的招聘方式:推荐和直接申请。我两样都没做,反而被猎头挖走了。

那么我是怎么被猎头挖走的呢?

我的 HR 告诉了我一个简单的答案:我是 LinkedIn 的顶级推荐。

我很惊讶,因为我从来没有定期更新我的 LinkedIn。有很多数据科学家和机器学习工程师把他们的 Linkedin 个人资料装饰得比我好。那么我为什么要做置顶推荐呢?

在深入研究了 Linkedin 的数据之后,我意识到我的关于数据科学的文章在我的 Linkedin 上吸引了大量的流量。你们中的许多人与我联系,询问数据分析方面的建议。因此,你是我进入谷歌的事实!谢谢大家!

同样,我鼓励你分享你的知识。它会让你以你永远无法预见的方式获得更好的机会。

灵感:它给了我学习数据科学的意义

Source: unsplash

“你是世界之光。建在山上的城镇是无法隐藏的。人们也不会点灯放在碗下。取而代之的是,他们把它放在灯架上,它给房子里的每个人都带来了光亮。你们的光也当这样照在人前,叫他们看见你们的好行为,便将荣耀归给你们在天上的父。——马太福音 5:14–16

我真的很喜欢看到学弟学妹的成长。我喜欢学习和教育他人。最重要的是。我喜欢给我的后辈梦想。我总是邀请他们去 Google office 吃午饭,和他们分享我的经历。我很高兴了解并收到反馈,我所做的对他们很重要。我们在世上的时间是有限的,所以我决定尽我所能成为世上的盐和光,来荣耀我们在天上的父。

这成了我花很多时间自我教育的动力来源。尽可能多的学习,教育别人,成了我的灵感。尽管我有很多不完美之处,但我很高兴分享我在学习和成为一名更好的数据科学家方面的努力。我学的越多,我教的就越多。我教的越多,学到的越多。

同样,我希望你能找到学习分析的主要原因,并与世界分享。这将成为你继续深入分析世界的灵感

收入:它给了我学习的自主权

Source: Unsplash

在《走向数据科学》写作也给了我一笔不错的收入。最初,当我第一次成为媒体合伙人作家时,我很高兴一个月能收到 10 美元。但是现在,随着我的粉丝越来越多,我每写一篇好文章就能赚 300 美元。

这证明了写作的复合收益是公司环境所不具备的。今天,我通过 Google Home 和 Medium 应用程序将我的文章推广给了成千上万的观众。在 6 个月内,我看到我每月的写作收入呈指数增长。

此外,在媒介上写作的最大好处是你可以得到美元报酬。我来自一个货币疲软的国家(印度卢比和新加坡元),我从我的中等收入中获得足够的金额。

这打开了许多可能性的大门。你会更少地依赖你目前全职工作的收入,反而会更擅长你所做的事情。

可信度:它让我找到更好的学习和教学机会

My Analytics Journey sharing at National University of Singapore (NUS)

写作给了我说话和学习的机会。顶尖大学、公司和分析聚会邀请我分享我对某些主题的想法。

写文章给了我的听众一个可信的*台来检验我的意识形态和思想。这让他们确信我的想法与他们的目标一致。

同样,写作也让我对我工作的公司更有价值。我在很多活动中都代表过 Visa 和 Google。这种可信度也让我可以向 Visa 和谷歌申请教育补助,在 omsc 攻读硕士学位。

同样,我想鼓励你开始教授数据分析。这将有助于你在未来提升自己的声誉,成为一名更有意义、知识更丰富的数据科学家。

价值:找到你写作和教学的声音

The joy of growing with SMU BIA Club

我还记得当我在大学的时候,SMU·BIA 真的很小。为了重振俱乐部,我和我的朋友预订了小房间,录制了 Youtube 视频,为我们的低年级学生教授简单的课程。很快到了现在,组委会已经发展到 20 人,他们的每一次活动都有人出席。SMU·BIA 给我上了一课,我一直很感激:即使我的知识和时间有限,我也能帮助别人。

我很高兴我的作品做到了这一点。你们中的许多人在 Linkedin 上与我联系,分享我的作品如何为你们的生活增添价值的故事。

我找到了自己的声音,你也可以。

结论:开始写你的故事

“你拥有发生在你身上的一切。说出你的故事。如果人们希望你热情地写他们,他们应该表现得更好。”安妮·拉莫特的《一只鸟接一只鸟》

如果你害怕开始,那么请记住安妮·拉莫特的这句话。我个人建议看这本书,有更好的心态去写自己的想法。

虽然在你的机器学习知识中保持聪明和技术是好的,但在你的发现中加入一些个人色彩也是有益的。毕竟你的故事是属于你的。好好分享一下:)

作为一名作家,另一个艰难的时刻是当你面对拒绝的恐惧时——T2,骗子综合症。但是你可以慢慢克服这些障碍,从小事做起,一只鸟一只鸟地写你的文章

开始写吧,希望你会有收获:

  1. 职业:写下你的想法,为更好的机会做准备。
  2. 启发:找出你为什么学习分析学,站得高。
  3. 收入:拓展机会写出世人看重的东西。
  4. 可信度:为你设立基金会,检验你的意识形态。
  5. 价值:找到自己的声音,写作启发。

索利·德奥·格洛丽亚

最后…

我真的希望这是一本很棒的读物,是你发展和创新的灵感来源。

请在下面的评论提出建议和反馈。就像你一样,我也在学习如何成为一名更好的数据科学家和工程师。请帮助我改进,以便我可以在后续的文章发布中更好地帮助您。

谢谢大家,编码快乐:)

关于作者

Vincent Tatan 是一名数据和技术爱好者,拥有在 Google LLC、Visa Inc .和 Lazada 实施微服务架构、商业智能和分析管道项目的相关工作经验

Vincent 是土生土长的印度尼西亚人,在解决问题方面成绩斐然,擅长全栈开发、数据分析和战略规划。

他一直积极咨询 SMU BI & Analytics Club,指导来自不同背景的有抱负的数据科学家和工程师,并为企业开发他们的产品开放他的专业知识。

文森特还在 10 日至 8 日开放了他的一对一导师服务,指导你如何在谷歌、Visa 或其他大型科技公司获得你梦想中的数据科学家/工程师工作。如果你正在寻找良师益友,请在此 与他预约。

最后,请通过 LinkedIn Medium Youtube 频道 联系文森特

实时数据流应用程序隐藏的特性

原文:https://towardsdatascience.com/the-hidden-peculiarities-of-realtime-data-streaming-applications-23b6484d2307?source=collection_archive---------20-----------------------

Photo by Lysander Yuen on Unsplash

随着开源框架(如 Apache Flink、Apache Spark、Apache Storm)和云框架(如 Google Dataflow)的不断增加,创建实时数据处理作业变得非常容易。API 定义良好,Map-Reduce 等标准概念在所有框架中都遵循几乎相似的语义。

然而,直到今天,在实时数据处理领域起步的开发人员还在为这个领域的一些特性而奋斗。因此,他们不知不觉地创建了一个路径,导致应用程序中相当常见的错误。

让我们来看看在设计实时应用程序时可能需要克服的一些奇怪的概念。

事件时间

数据源生成数据的时间戳称为事件时间,而应用程序处理数据的时间戳称为处理时间。不区分这些时间戳是实时数据流应用程序中最常见陷阱的原因。

下面就来细说一下。

由于几个问题,例如代理中的高 GC 或导致背压的过多数据,数据队列容易延迟。我将用(E,P)表示一个事件,其中 E 是事件时间戳(HH:MM:SS 格式),P 是处理时间戳。在理想世界中,E==P,但这不会发生在任何地方。

让我们假设我们收到以下数据

('05:00:00', '05:00:02'), ('05:00:01', '05:00:03'),      ('05:00:01', '05:00:03'), ('05:00:01', '05:00:05'),
('05:00:02', '05:00:05'), ('05:00:02', '05:00:05')

现在让我们假设有一个程序计算每秒收到的事件数。根据事件时间,程序返回

[05:00:00, 05:00:01) = 1
[05:00:01, 05:00:02) = 3
[05:00:02, 05:00:03) = 2

但是,根据处理时间,输出是

[05:00:00, 05:00:01) = 0
[05:00:01, 05:00:02) = 0
[05:00:02, 05:00:03) = 1
[05:00:03, 05:00:04) = 2
[05:00:04, 05:00:05) = 0
[05:00:05, 05:00:06) = 3

如你所见,这两者是完全不同的结果。

数据流中不寻常的延迟

大多数实时数据应用程序都使用分布式队列中的数据,如 Apache Kafka、RabbitMQ、Pub/Sub 等。队列中的数据由其他服务生成,如来自消费者应用程序的点击流或来自数据库的日志。

问题队列容易受到延迟的影响。生成的事件甚至可以在几十毫秒内到达您的作业,或者在最坏的情况下可能需要一个多小时(极端背压)。数据可能会由于以下原因而延迟—

  • 卡夫卡的高负荷
  • 生产者在其服务器中缓冲数据
  • 由于应用程序中的反压力,消耗速度较慢

不假设数据会有延迟是一个陷阱。开发人员应该始终拥有测量数据延迟的工具。例如,在卡夫卡中,你应该检查一下偏移滞后。

您还应该监控作业中的背压和延迟(即事件时间和处理时间之间的差异)。没有这些将导致意外的数据丢失,例如 10 分钟。时间窗口可以显示为无数据,窗口为 10 分钟。之后的值是期望值的两倍。

连接

在批处理数据处理系统中,连接两个数据集相对来说比较简单。在流式世界中,情况变得有点麻烦。

//The dataset is in the format (timestamp, key, value)//Datasteam 1
(05:00:00, A, value A), (05:00:01, B, value B),
(05:00:04, C, value C), (05:00:04, D, value D)//Datastream 2
(05:00:00, A, value A'), (05:00:02, B, value B'), 
(05:00:00, C, value C')

Both data streams represented on a single time scale

我们现在在它们的键上连接两个数据流。为了简单起见,我们将做一个内部连接。

键 A —两个值 A &值 A’同时到达。因此,我们可以很容易地将它们组合成一个函数并输出结果

键 B—B 值比 B 值早 1 秒。因此,我们需要在数据流 1 上等待至少 1 秒钟,以使连接工作。因此,你需要考虑以下几点-

  • 你会把这一秒钟的数据存储在哪里?
  • 如果这 1 秒钟不是固定的延迟,而是不规则地变化,在最坏的情况下上升到 10 分钟,那该怎么办?

C 键—C 值比 C 值晚 4 秒到达。这与之前的情况相同,但现在数据流 1 和 2 都有不规则的延迟,没有固定的模式来确定哪个流将给出值 1。

键 D —值 D 到达,但没有观察到值 D’。考虑以下情况-

  • 你要等多久才能得到 d `?
  • 如果值 d '可以在从至少 5 秒到接* 1 小时的任何时间出现呢?
  • 如果这是一个外部连接,并且您必须决定何时单独发出值 D,该怎么办?
  • 如果在前一种情况下,在发出值 D 1 分钟后,值 D `到达,会怎样?

Join in a streaming application

以上所有问题的答案将取决于您的使用案例。重要的是考虑所有这些问题,而不是忽视流媒体系统的复杂性。

配置

在标准微服务中,配置存在于作业内部或数据库中。在数据流应用程序中也可以这样做。但是,在使用这种方法之前,您需要考虑以下几点。

您访问配置的频率是多少?

如果需要为每个事件访问配置,并且事件的数量很多(超过一百万 RPM),那么您也可以尝试其他方法。一种是将配置存储在作业状态中。这可以在 Flink 和 Spark 中使用有状态处理来完成。可以使用文件阅读器或 Kafka 中的另一个流在状态中填充配置。

在流式世界中,对每个事件进行 DB 调用会降低应用程序的速度并导致背压。选择是要么使用快速数据库,要么通过在应用程序中存储状态来消除网络调用。

你的配置有多大?

如果配置非常大,您应该只使用应用程序内状态,如果配置可以跨多个服务器拆分,例如,配置为每个用户保存一些阈值。这种配置可以根据用户 id 键在几台机器上进行分割。这有助于减少每台服务器的存储量。

如果配置不能跨节点拆分,则首选 DB。否则,所有数据将需要被路由到包含配置的单个服务器,然后再次重新分发。在这个场景中,唯一包含配置的服务器充当了瓶颈。

Config present in a single server leading to a bottleneck

设计实时数据流应用程序似乎很容易,但开发人员会犯很多类似上面提到的错误,特别是如果他们来自微服务领域。

重要的部分是理解数据流的基础,以及如何处理单个数据流,然后转到处理多个连接、实时配置更新等的复杂应用程序。

这个领域最重要的书籍之一是
设计数据密集型应用程序:可靠、可伸缩和可维护系统背后的伟大思想

联系我 领英 脸书 或如有任何疑问,请发邮件至kharekartik@gmail.com

人工智能和大数据的隐藏风险

原文:https://towardsdatascience.com/the-hidden-risk-of-ai-and-big-data-3332d77dfa6?source=collection_archive---------13-----------------------

人工智能的最新进展是通过访问“大数据”和廉价的计算能力实现的。但是它会出错吗?

大数据突然无处不在。从稀缺和难以找到数据(和信息),我们现在有大量的数据。*年来,可用数据量呈指数级增长。反过来,由于记录数据的设备数量的巨大增长,以及所有这些设备之间通过物联网的连接,这也成为可能。每个人似乎都在收集、分析、从大数据中赚钱,并庆祝(或害怕)大数据的威力。通过结合现代计算的力量,它有望解决几乎任何问题——仅仅通过处理数字。

但是,大数据真的能兑现所有这些宣传吗?在某些情况下,是的,在其他情况下,也许不是。一方面,毫无疑问,大数据已经在某些领域产生了至关重要的影响。例如,几乎每一个成功的人工智能解决方案都涉及一些严肃的数字运算。

首先要注意的是,虽然 AI 目前非常擅长在大数据集内寻找模式和关系,但它仍然不是很智能(取决于你对智能的定义,但那是另一回事了!).处理这些数字可以有效地识别和发现我们数据中的微妙模式,但它不能直接告诉我们这些相关性中哪些实际上是有意义的。

相关性与因果关系

我们都知道(或者应该知道!)那个“关联并不意味着因果关系”。然而,人类的大脑天生就喜欢寻找模式,当我们看到倾斜在一起的线条和数据中明显的模式时,我们很难抗拒找出原因的冲动。

然而,从统计学角度来看,我们无法实现这一飞跃。《虚假相关性》 的作者泰勒·维根在他的网站上对此大做文章(我强烈推荐你去看看一些有趣的统计数据!)这种虚假关联的一些例子可以在下面的数字中找到,我收集了一些例子,表明冰淇淋显然正在造成许多糟糕的事情,从森林火灾到鲨鱼袭击和脊髓灰质炎爆发。

看看这些情节,有人可能会说我们可能早就应该禁止冰淇淋了。事实上,在 20 世纪 40 年代脊髓灰质炎的例子中,公共卫生专家建议人们停止食用冰淇淋作为“抗脊髓灰质炎饮食”的一部分。幸运的是,他们最终意识到小儿麻痹症的爆发和冰淇淋消费之间的关联仅仅是因为小儿麻痹症的爆发在夏季最为常见。

统计中,虚假关系或虚假相关是一种数学关系,其中两个或多个事件或变量与相关联,但 没有因果关系,这是由于巧合或某个第三个看不见的因素(称为“共同反应变量”、“混杂因素”或“潜伏变量”)的存在。这种“潜在变量”的一个例子可能是冰淇淋销售和鲨鱼攻击之间的表面相关性(我非常确信冰淇淋销售的增加不会导致鲨鱼攻击人)。但是,这两个数字背后有一个共同的联系,那就是温度。更高的温度导致更多的人去买冰淇淋,也导致更多的人去游泳。因此,这个“潜伏变量”实际上是表面相关性的原因。幸运的是,我们已经学会了区分相关性和因果性,我们仍然可以在炎热的夏天享受冰淇淋,而不用担心脊髓灰质炎的爆发和鲨鱼的袭击!

相关性的力量和极限

有了足够的数据,计算能力和统计算法模式就会被发现。但是这些模式有什么意义吗?并非所有都是如此,因为虚假模式很容易超过有意义的模式。当正确应用于正确的问题时,结合算法的大数据可能是一个非常有用的工具。然而,没有科学家认为你可以通过独自处理数据来解决问题,无论统计分析多么强大。你应该总是基于对你试图解决的问题的潜在理解来开始你的分析。

数据科学是科学的终结(或者是?)

2008 年 6 月,《连线》杂志前主编 C. Anderson 写了一篇颇具煽动性的文章,题为:“理论的终结:数据泛滥使科学方法过时”,他在文章中指出,“有了足够的数据,数字就能说话”。相关性取代了因果关系,即使没有一致的模型和统一的理论,科学也能进步。

这种方法的强度和通用性取决于数据量:数据越多,基于计算发现的相关性的方法就越强大和有效。我们可以简单地将数字输入强大的计算机,让统计算法自动发现有趣的模式和见解。

不幸的是,这种简化的分析方法有一些潜在的陷阱,这可以通过 John Poppelaars 在博客上找到的一个例子很好地说明:

假设我们想要为某个变量 y 创建一个预测模型。例如,这可能是一家公司的股票价格、在线广告的点击率或下周的天气。接下来,我们收集所有我们可以得到的数据,并将其放入一些统计程序中,以找到 y 的最佳可能预测模型。一个常见的程序是首先使用所有变量估计模型,筛选出不重要的变量(在某个预定义的显著性水*上不显著的变量),然后使用选定的变量子集重新估计模型,并重复此程序,直到找到显著的模型。很简单,不是吗?

然而安德森提出的分析方式有一些严重的缺陷。让我举例说明。按照上面的例子,我通过从 0 和 1 之间的均匀分布中抽取 100 个样本,为 Y 创建了一组数据点,所以它是随机噪声。接下来,我创建了一组 50 个解释变量 X(i ),从 0 到 1 之间的均匀分布中抽取 100 个样本。所以,所有 50 个解释变量也是随机噪声。我使用所有 X(i)变量来估计线性回归模型,以预测 y。由于没有任何相关(所有均匀分布和独立的变量),所以预计 R 的*方为零,但事实上并非如此。结果是 0.5。对于一个基于随机噪声的回归来说还不错!幸运的是,这个模型并不重要。不重要的变量被逐步剔除,模型被重新估计。重复这个过程,直到找到一个重要的模型。几个步骤后,发现一个显著模型,其调整后的 R *方为 0.4,7 个变量的显著性水*至少为 99%。同样,我们正在回归随机噪声,其中绝对没有关系,但我们仍然找到了一个具有 7 个重要参数的重要模型。如果我们只是将数据输入统计算法去寻找模式,就会发生这种情况。”

数据集越大,噪音越强

最*的研究提供了证据,随着数据集变大,它们必须包含任意的相关性。这些相关性的出现仅仅是由于数据的大小,这表明许多相关性将是虚假的。不幸的是,太多的信息往往表现得像很少的信息。

在处理高维数据的应用程序中,这是一个主要问题。例如,假设您从一个工厂的数千个传感器中收集传感器数据,然后挖掘这些数据来优化性能。在这种情况下,你很容易被愚弄,根据虚幻的相关性而不是运营绩效的真实指标采取行动。这可能是一个非常坏的消息,无论是在经济上还是在工厂的安全运营方面。

添加数据与添加信息

作为数据科学家,我们可能经常声称,改善我们的人工智能模型的最佳解决方案是“添加更多数据”。然而,仅仅“添加更多数据”就能神奇地提高模型性能的想法可能并非如此。我们应该关注的是“增加更多的信息”。“添加数据”和“添加信息”之间的区别至关重要:添加更多的数据不等于添加更多的信息(至少是有用和正确的信息)。相反,通过盲目添加越来越多的数据,我们会遇到添加包含错误信息的数据的风险,从而降低我们模型的性能。随着对数据的大量访问以及处理数据的计算能力,考虑这一点变得越来越重要。

观点

那么,上述挑战会阻止您采用数据驱动的决策吗?不,远非如此。数据驱动的决策将会持续下去。它将变得越来越有价值,因为我们获得了更多关于如何最好地利用所有可用数据和信息来推动绩效的知识,即点击您的网站或优化工厂的运营。

然而,重要的是要意识到,它需要的不仅仅是硬件和大量的数据才能成功。大数据和计算能力是重要的组成部分,但不是全部的解决方案。相反,您应该理解连接数据的底层机制。数据不会自己说话,我们赋予数字它们的意义。数据的数量、种类或速度都无法改变这一点。

如果你有兴趣了解更多与人工智能/机器学习和数据科学相关的主题,你也可以看看我写的其他一些文章。你会发现他们都列在我的中型作者简介,,你可以在这里找到。

而且,如果你想成为一个媒体会员,免费访问*台上的所有资料,你也可以使用下面我的推荐链接。(注意:如果您使用此链接注册,我也会收到一部分会员费)

[## 通过我的推荐链接加入媒体- Vegard Flovik

作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…

medium.com](https://medium.com/@vflovik/membership)

更多来自 Vegard Flovik 媒体:

  1. 蒙特卡洛方法简介
  2. 从物理学到数据科学的转变
  3. 什么是图论,你为什么要关心它?
  4. 用于图像分类的深度迁移学习
  5. 构建一个能读懂你思想的人工智能
  6. 机器学习:从炒作到现实应用
  7. 如何使用机器学习进行异常检测和状态监控
  8. 如何(不)使用机器学习进行时间序列预测:避免陷阱
  9. 如何利用机器学习进行生产优化:利用数据提高绩效
  10. 如何给 AI 系统教物理?
  11. 我们能使用纳米级磁铁建立人工大脑网络吗?
  12. 供应链管理中的人工智能:利用数据推动运营绩效

来源:

Calude,C.S. & Longo,g .发现 Sci (2017) 22: 595:虚假相关性泛滥

blogs.crikey.com:大数据等于大问题吗?

朱塞佩·隆戈:大数据的数学使用和滥用

纽约时报:八(不,九!)大数据的问题

电线:理论的终结:数据洪流使科学方法过时

约翰·波普尔拉斯:数字真的能说明问题吗

人工智能研讨会——从宣传到现实应用

创建机器学习模型的高点、低点和*台

原文:https://towardsdatascience.com/the-highs-lows-and-plateaus-of-creating-a-machine-learning-model-970bf546ebf9?source=collection_archive---------31-----------------------

作为我在 Lambda School 的第二个单元的压轴戏周,我们的数据科学团队在 Kaggle 风格的比赛中相互竞争。

给定一个来自 DrivenData 的数据集,该数据集包含来自坦桑尼亚水利部的信息,我们被要求制作一个机器学习模型,该模型可以根据这项研究准确预测水泵的功能。

  • 目标:创建一个模型来预测坦桑尼亚油井的功能。
  • 子目标:获得 80 分以上的准确率,并击败我团队中的所有其他书呆子(我亲切地说书呆子,因为我肯定是其中之一。)

这是我第一次深入机器学习,我很兴奋能够开始。利用我在过去几周学到的东西,我知道我可以创建一个模型,它可以很好地对抗我的同学。我花了整整 4 天时间研究这些数据,用不同的方法和预测模型进行实验。我将带你经历一周中成功和失败的大起大落。

第一天 我们拿到数据,然后出发!我首先看了一下我试图预测的目标——水泵的状态。

如果我要建立一个初始模型来预测每个泵的功能,我将有 54%的正确率。

  • 功能性:0.543
  • 非功能性:0.384
  • 功能需求修复:0.072

54%的准确率是一个开始,但我知道我可以从这里提高。快速浏览数据后,我看到很多列都有非数字数据。在它可用之前,需要花时间去探索、清理和编码成数字数据。我想快速进步,所以我决定现在跳过这一步。我创建了一个仅使用数字列的线性回归模型,获得了 59%的准确率。

我对这些特征之间的相关性很好奇,所以我使用热图进行了更深入的研究。

我的目标特征“status_group”似乎与任何数字特征都没有很强的相关性。这让我想到了我的下一个任务:获取所有可用格式的分类数据,并将其添加到我的模型中。

到目前为止,我还没有花任何时间清理或处理这些数据中的空值。这是一个乏味的过程,但我确信我所做的工作将会改进我的模型。我花了第二天的大部分时间梳理每一列数据,找出处理空值的最佳方式,并了解对我的数据进行编码的不同方法。

我做了一些特征工程,并使用泵的建造日期和最*记录的年份创建了一个名为“泵的年龄”的类别。这变成了我最重要的特点之一。

经过一整天的清理、特征工程和编码,我重新运行了我的模型,并将我的准确度分数提高了…大约 6%。

第三天
好了,时间越来越有限,我开始怀疑我所做的那些乏味的工作是否有意义。我开始第三天使用梯度推进分类器。我从经验中知道,这种模式往往做得很好,尤其是在 Kaggle 比赛中。我对所有清理过的数据运行了一个简单的 xgboost 分类器。77%!令人尊敬的分数,我可以深呼吸,然后继续提高。

大约有 40 个特征用于训练我的模型,我想看看它们是否都对结果有贡献。我对我最*的模型进行了一个特性重要性测试,然后查看了前 15 个特性。

利用这些知识,我继续改进我的模型。我选择了 8 个我认为最重要的特性,然后运行另一个模型。78%

第四天这是我喜欢称之为迭代日的一天。我使用了我的 XGBClassifier,并调整了一些东西,直到没有其他东西可以尝试。我运行了大概 24 个模型,并改变了一个小项目,直到我耗尽了时间(和耐心)。)

  • 模型 1-8 特征,简单估算器,标准缩放器:78%
  • 模型 2-8 特征,简单估算器,无缩放器:78%
  • 模型 3-8 特征,简单估算器的调整参数,标准缩放器:78%
  • 模型 4-8 特征,简单估算器,鲁棒定标器:79%
  • 模型 5-9 特征,简单估算器,标准缩放器:79%

我一直在走。我最终突破了 80 分的准确率,但我不会详细说明我是如何做到这一点的。如果你想看看我这一周的工作,你可以看看我的 github 库中的代码。

我学到的东西

  • 简单(通常)更好
  • 领域知识是理解数据关系的重要部分。
  • 清理您的数据可以带来实质性的变化。
  • 如果你有时间,迭代可能是一种高效的方法。

68.2 95.4 99.7 统计学的历史

原文:https://towardsdatascience.com/the-history-of-68-2-95-4-99-7-in-statistics-82fdcef0a0ea?source=collection_archive---------14-----------------------

从德·莫维尔到高斯

Source: Wikipedia

如果你上过统计学课程,但仍然对它一无所知,或者听到你的书呆子朋友谈论这种东西,以下是你需要知道的。

这个规则有什么故事?

所谓的“经验法则”(同一事物,不同名称)可以追溯到 18 世纪。亚伯拉罕·德莫佛(1667–1754),一位法国数学家,他不像我们一样是个孩子,他过去常常把时间花在数学上,幸运的是,他实际上弄清楚了当前数学和统计学的一些主要概念。1738 年,他发表了一篇文章解释他的发现,指出随着事件发生次数的增加,二项式分布接**滑曲线。这里有一个有趣的概念需要记住:

大错误比小错误更少见,也就是说,错误越大越不频繁,错误越小越频繁。

Source: Giphy

跟着我…

通过 Moivre(请带点法国口音),误差均匀地分布在算术*均值周围,形成一个对称的钟形,落在左右尾部。

另一位法国人皮埃尔·西蒙·拉普拉斯也喜欢数字。他开展了几项相关研究,但对我们的故事来说最重要的是的分析,描述了误差的分布。这种方法是估计有利情况的数量占可能情况总数的比例,它包括将任何函数的连续值视为另一个函数展开的系数。这导致了概率的正态分布,这就是所谓的拉普拉斯-高斯分布。更多关于拉普拉斯这里

阿德里安-玛丽·勒让德(也是……法语),应用拉普拉斯-高斯分布曲线引入最小二乘法

弗朗西斯·高尔顿,英国人,查尔斯·达尔文的表弟,在 1872 年引入了高斯曲线,讽刺的是高斯是以曲线命名的,尽管他既没有创造也没有命名。高斯完成了高尔顿的一半工作,发展了著名的正态分布定律来分析天文数据。

Standard normal distribution showing standard deviations.

德国人约翰·卡尔·弗里德里希·高斯被称为数学家中的王子,他的智商估计有 240。1823 年,高斯写下了关于可观测误差的理论。在《理论与行动》的第三部分,他介绍了著名的正态分布定律。

The Gaussian Curve formula

✅的理论史

让我们看看上述数学家所做的这些工作在现实世界中有什么影响。

简言之

  • 大约 68%的数值落在*均值的一个标准差 (+- σ ) )内。
  • 大约 95%的值落在*均值的两个标准偏差(+-2 σ )内。
  • 几乎所有的值(约 99.7%)都在*均值的三个标准偏差范围内(+-3 σ )。

何时使用该规则

每当我们被告知数据是正态分布时,就可以使用这个规则。如果一个问题提到正态或接*正态分布,你就会得到标准差;这几乎肯定意味着,你可以用这个规则来估计,你的分数有多少会落在一定数量的标准差内。

例子

特定磅数的面包重量*均为 1kg,*均值为 1kg,标准偏差为 0.1kg。假设重量遵循正态分布

  1. 低于*均值 2 个标准差的权重是多少?
  2. *均值以上 1 个标准差的权重是多少?
  3. 中间的 68%的面包重多少?

答案:

  1. 2 标准差是 2 * 0.1 = 0.2 磅。因此,如果一条面包比*均值低 2 个标准差,那么它的重量是 1 千克——0.2 千克= 0.8 千克
  2. 1 标准偏差是 0.1 千克,所以一条高于*均值 1 标准偏差的面包重量为 1 千克+0.1 千克= 1.1 千克。
  3. 68 95 99.7 规则告诉我们,68%的权重应该在*均值两边的 1 个标准差以内。1 以上标准差(问题 2 答案中给出)为 1.1kg1 下面的标准偏差是 1 千克—0.1 千克是 0.9 千克。因此,68%的面包重量在 0.9 千克到 1.1 千克之间

结论

在过去的数百年中,许多重要的数学家对我们今天认为理所当然的事情做出了贡献。下次你看到高斯分布时,请记住高斯只是这个概念的一部分,尽管它有自己的名字。

人工智能伦理指南第 2 部分:人工智能是什么

原文:https://towardsdatascience.com/the-hitchhikers-guide-to-ai-ethics-part-2-what-ai-is-c047df704a00?source=collection_archive---------17-----------------------

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

放大

第一部分探讨了人工智能的伦理是什么和为什么,并将伦理景观分为四个领域——人工智能是什么,人工智能做什么,人工智能影响什么以及人工智能可以成为什么。在第 2 部分,我深入探讨了人工智能是什么的伦理问题。

Not this, Not this! (Top 6 Google Image Search Results for AI de-biased for authors’ search history)

放大

人工智能最常见的部署形式可以描述为一组数学函数(模型),给定一些输入(数据),学习某些东西并使用它来推断其他东西(做出预测)。换句话说,人工智能就是数据、模型和预测。这一领域的伦理探索涵盖了诸如模型预测中的偏差和结果的公*性(或缺乏公*性)等问题;以及通过问责制透明度解决这些问题的方法。

偏见和公*

所有的认知偏差都是人类与生俱来的,并影响我们如何做决定。以及我们建造的人工智能。凭借它如何学习它可以触发的失控反馈回路以及它的影响规模AI 可以放大人类的偏见。这是有后果的。有偏见的算法系统会导致不公*的结果、歧视和不公正。在规模上。

Algorithmic Systems Have Real World Consequences. (Image Credits Below)

理解人工智能中的偏见始于理解其来源,并确定哪些可以用技术来解决,哪些不能。偏差,如“一个模型不能足够准确地表示输入数据或基本事实”,是一个机器学习问题。偏见,就像“一个模型在其预测中反映了不适当的偏见”,不仅仅是一个机器学习问题。引用凯特·克劳福德的话,

“结构性偏见首先是社会问题,其次才是技术问题。”

认为我们可以仅仅通过技术来对抗我们社会结构中现存的偏见是鲁莽的。事实上,我们可以让它变得更糟,我们经常这样做。

数据是机器学习中偏见的一大来源,并在大众媒体中引起了极大的关注。我们现在都听说过“垃圾进垃圾出的口号。但是有偏见的数据只是故事的一部分。偏见也可以从其他来源渗透到机器的智能中;从人工智能研究人员(理解为人类)如何构建问题,到他们如何训练模型,再到系统如何部署,都是如此。即使有无偏的数据,一些机器学习模型实现准确性的过程也可能导致有偏见的结果。

让我们画画。(忍我一会儿,你就知道为什么了)。抓起一张纸,在上面撒上一些点。现在通过这些随机分布的点画一条线。点越分散,线条越弯曲。现在再补充几点。你的线不再适合所有的点!现在,你意识到你的线不可能在不损失未来通用性的情况下适合所有的点,所以你满足于“让我尽力而为”。你画一条尽可能接*尽可能多的点的线。你热爱数学,所以你用一个方程(或函数)来表示你的线,用另一个函数来表示这个“尽可能接*”的计算。恭喜你,你得到了一个机器学习模型!嗯,比真实的要简单几个数量级,但是你明白了。

Optimal Line vs Squiggly Line (Image: pythonmachinelearning.pro)

试图通过最小化“损失函数”来使一个数学函数适应数据点的随机分布,往往会模仿谚语“吱吱作响的轮子得到润滑油”。损失函数是对其对立面所代表的所有点的“尽可能接*”的计算,即直线距离它试图代表的点有多远。因此,通过最小化它,你成功地得到尽可能多的点。但是有一个副作用。声音最大的人损失最小。其中表示可以暗示“一个组的数据量”以及模型用来理解该组的“特征”。机器学习算法通过模式来理解数据,依赖于人类在数据背后识别的或通过发现它们来识别的“特征”。在这两种方法中,主导数据的“特征”成为算法的北极星。少数人,那些特征过于独特,无法产生足够强的信号被模型拾取的人,将在决策过程中被忽略。使用这种模式为所有人做决定会导致对某些人不公*的结果。

考虑一个例子。在来自世界各地的人脸上训练的面部情感识别模型。假设我们在年龄、性别、种族、民族等方面有足够的多样性。我们都直觉地知道,我们表达情绪的强度也与其他定性因素相关。我微笑的大小与文化上适合我的东西相关联,我与扳机的关系有多深,我对我的牙齿的感觉如何,我被批评笑得太大声的频率,我当时的精神状态等等。如果我们用这个模型来评估的学生在教室有多快乐,会发生什么?(猜一猜为什么有人会想这么做,没有奖励!一个数学函数能代表所有可能的幸福强度吗?这些考虑使用了可见的和可测量的特征,如微笑的大小,笑声的音量,眼睛睁得多大?人工智能研究人员可能会说可以。我还没被说服。

所以偏见有多种来源和多种形式。Harini Suresh 的博客提供了一个简单的框架来理解它们。我总结了她的 5 个偏差来源:历史偏差已经存在于数据中,而表示偏差和测量偏差是数据集创建方式的结果。评估聚集偏差是构建模型时所做选择的结果。

标签的选择、模型的选择、特征的选择、参数化或优化的内容,都是人工智能开发者(即人类)做出的一些选择,因此存在封装人类偏见和盲点的风险。

那么,摆脱偏见的方法是什么呢?对去偏置技术、数据失衡调整等的研究已经在进行中(详见本次演讲)。但这是在数据集偏差被识别出来之后。这需要严格的审计,正如 Timnit Gebru 等人在其论文“数据集数据表”中所建议的那样。类似于在电子工业和化学安全规范中发现的数据表可以帮助早期识别偏差,但除了数据集偏差,还需要跨学科的努力。让领域专家参与进来,建立多元化的跨学科团队是及早发现偏见的关键

虽然识别偏见是好事,并试图通过技术消除偏见是一个崇高的目标,但这还不够。

问责制和补救性

算法被部署在人类生活各个方面的决策系统中——我们如何看待自己,与谁互动,我们如何看待自己,我们如何看待 T2。我们如何被雇佣谁被解雇我们买什么我们能买什么我们住在哪里我们如何通勤我们看什么新闻,一直到谁被警察监视,谁没有。算法会产生不公*和歧视性的结果。把两者结合起来;不能低估让算法系统负起责任的必要性。

问责制促进信任。它提供了一条通往正义的道路,以确定和补救不公*或歧视性的结果。

问责可以通过人工审计、影响评估或通过政策或法规进行治理来实现。科技公司通常更喜欢自我监管,但即使是他们现在也认识到了外部干预的需要(T21)。通过"人在回路"的治理,即某些被确定为高风险的决定需要由人来审查,也被提议作为问责制的一种模式。

但是一旦造成损害会发生什么呢?受影响方是否有机会或途径来纠正负面影响?他们能得到应有的赔偿吗?他们甚至能确定造成的伤害吗?!到目前为止,我还没有看到任何正在使用的算法系统定义一个明确的补救流程,尽管 WEF 将补救确定为负责任的人工智能的一个支柱。但调查性新闻和研究团体,如 ProPublica算法正义联盟AI Now Institute 不知疲倦地识别不公*或歧视性的系统,并推动问责和行动,这是值得称赞的。在某些情况下,这种不公*的制度已经被撤销或修改。但是在其他许多地方,科技公司继续忽视人们的担忧,或者认为他们的责任仅限于提供使用指南。

透明度、可解释性和可解释性

围绕人工智能的许多伦理问题源于其固有的“黑箱”行为。这部分是因为公司不想分享让他们的模型成功的“秘方”,部分是因为机器学习中有太多的学习被锁定在大型复杂的数学运算中。但是当决定导致伤害时,公正的独立调查需要查明事实。但是谁来决定什么程度的事实是充分的呢?知道一个决定造成了伤害就够了吗?我们需要了解这个决定是如何做出的,由谁做出的吗?这些问题从不同角度探讨了机器学习系统的透明性。

算法通过多个“层”(多个数学运算)从输入数据中“学习”;逐步调整“权重”(ax+b 中的 a 和 b)以越来越接*数据中的模式。到目前为止,透明度是有限的,因为没有简单的方法来一层一层地“解释”正在“学习”的东西,或者“解释”所有这些学习是如何导致最终决策的。幸运的是,随着透明度成为研究焦点,这种情况正在改变。

What is a neural network looking for and how is it attributing what it sees? (Image: Building Blocks of Interpretability by Olah et al — I highly recommend playing with this interactive paper!)

可解释性研究主要集中在打开黑匣子。可解释性研究主要集中在理解决策上。

一些研究人员说,只有算法的输出需要是可辩护的,而其他人说这是不够的或太冒险。一些人认为算法应该解释它们自己。而很少有人从透明的角度完全否定可解释性及其需求。在我看来,对于所有公*和公正的事情,背景将决定一个算法系统需要有多可解释或可解释或透明;并且某种外部规章或商定的标准将必须确定和执行这一点。

这里还需要提到另一种透明度。组织透明度。科技公司对发布他们的人工智能研究有多开放,他们的人工智能动机和目标,他们如何在产品中使用人工智能,他们使用什么指标来跟踪其性能等;所有这些都很重要。

缩小,直到下一次旅行

构建人工智能很难。更难理解它与社会的相互作用。这么多的故事,这么多的研究,这么细微的差别。我几乎没有触及表面,但我希望这足以提高认识和引发反思。

参考资料和补充阅读

这是探索人工智能伦理的 3 部分系列的第 2 部分。 第一部分,此处可用 ,勾勒出问题的全貌。 第三部分,此处可用 ,看人工智能做什么和人工智能影响什么的伦理。

非常感谢 雷切尔·托马斯*卡蒂克·杜莱萨米 斯里拉姆·卡拉 对初稿的反馈。*

人工智能伦理指南第 3 部分:人工智能做什么及其影响

原文:https://towardsdatascience.com/the-hitchhikers-guide-to-ai-ethics-part-3-what-ai-does-its-impact-c27b9106427a?source=collection_archive---------9-----------------------

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

“I don’t know what I’m doing here, do you?” (Image by Rock’n Roll Monkey on Unsplash)

故事到此为止

在第一部分,我探索了人工智能的伦理是什么和为什么。第二部分看什么是人工智能的伦理。在第 3 部分,我以对人工智能做什么和人工智能影响什么的伦理的探索结束了这个系列。无论是安全还是公民权利,无论是对人类行为的影响还是恶意使用的风险,这些话题都有一个共同的主题——需要重新审视技术专家在处理他们所创造的东西的影响方面的作用;超越“避免伤害”和“尊重隐私”等宽泛的原则,建立因果关系,并确定我们独特的优势或劣势。

我很早就有一种感觉,第三部分将很难公正地作为一个不到 10 分钟的帖子。但是三部分刚刚好,超过 10 分钟太长;所以当我试图证明直觉是错的并且失败的时候,请耐心等待!让我们一起探索。

人工智能做什么

人工智能的能力将随着时间的推移而提高,人工智能应用将充斥我们的世界。这不一定是一件坏事,但它确实创造了一种迫切的需求,即评估 AI 做什么以及它如何影响人类;从我们的安全,到我们与机器人的互动,到我们的隐私和代理。

那么 AI 是做什么的?人工智能使用大量计算和一些规则来分析、识别、分类、预测、推荐,并在允许的情况下为我们做决定。做出能够永久改变人类生活进程的决定是一项巨大的责任。AI 准备好了吗?是吗?在缺乏内在道德偏见的情况下,人工智能系统可以用来帮助我们或伤害我们。我们如何确保人工智能不会造成或导致伤害?

Distilling the Harms of Automated Decision-Making (Future of Privacy Forum Report)

安全

人工智能中的安全可以理解为“人工智能必须不会导致事故,或者表现出非故意或有害的行为”。身体伤害是显而易见的,无人驾驶汽车的安全问题也是众所周知的。但是,如何在一个自治系统中建模并实现安全性呢?

在基于规则的系统中,给定的输入总是产生相同的结果,安全问题可以通过严格的测试和操作程序来解决。这种方法只适用于人工智能。

自主决策需要在不确定的情况下自动评估安全性,以便可预测地预防伤害。

让我们打开这个。人类不会在真空中做决定。我们的行动不仅由外部触发因素决定,还取决于我们的意图、规范、价值观和偏见。我们认为安全的东西也会随着时间和环境而变化。考虑在车流中穿梭,将某人紧急送往医院。你会做吗?我猜你说,看情况。

对于一个硬件-软件组合来说,要做出正确的调用,需要它能够响应出现的上下文,能够在其环境中对这种不确定性建模,并且与什么是“正确的”保持一致。与“正确的”目标保持一致,又名 价值-与 保持一致是 AI 中安全的一个关键主题。问题是,自治系统如何追求与人类价值观一致的目标?更重要的是,鉴于人类可以持有相互冲突的价值观,系统与谁的价值观一致

网络安全和恶意使用

Building ethics into machines. Yes/No? Image credit: Iyad Rahwan

虽然人工智能越来越多地通过检测和防止入侵来实现网络安全,但它本身也容易受到游戏和恶意使用的影响。在一个数据驱动、高度网络化、永远在线的世界里,风险是巨大的。除了经典的威胁,人工智能系统还可以通过毒害输入数据或修改目标函数来造成伤害。

降低成本和提高音频/视频/图像/文本生成能力也推动了人工智能系统和社会工程的发展。当技术做技术的时候,谁来承担这种滥用的负担?由于担心被恶意使用,开放人工智能的决定不发布他们的文本生成模型 GPT-2,这引起了人工智能研究人员的强烈反应。通过推特,博客例如 1例如 2辩论很明显,确定“做正确的事情”是困难的,人工智能研究人员尚未在前进的道路上达成一致。与此同时,黑帽研究人员和坏演员没有这样的冲突,并继续有增无减。

隐私、控制和监视

沿着伤害和滥用技术的路线,是人工智能被重新利用的能力,甚至是有意设计的监视能力。构建这种工具的伦理考虑是什么?到底该不该建?让我们后退一步,理解为什么这很重要。

请人们描述隐私,你会得到多种定义。这是合理的,因为隐私是一种社会建构,随着时间的推移而演变,并受到文化规范的影响。虽然定义隐私很难,但识别侵犯隐私的行为却很直观。当你在机场被单独搜身时,你会觉得受到了侵犯。你没有什么可隐瞒的,但是你觉得被侵犯了!因为在许多定义的背后是人类最基本的东西——尊严和控制。

在所描述的案例中,你理解了违规行为并继续遵守,为了更大的利益(公共安全)放弃了隐私。我们一直都这样。现在考虑一个数字化、大数据、人工智能的世界,在这个世界里,侵犯隐私既不直接也不明显,放弃隐私的风险来自包装在便利和个性化中的礼物。个人的、私人的、安全的、开放的、同意的概念都变得混乱,不利于普通用户。正是在这一点上,技术专家占据优势,可以在保护隐私方面发挥作用。

以面部识别技术为例,这是迄今为止最致命的侵犯隐私的技术。CCTV、Snapchat/Instagram stories、脸书直播等看似无害的技术,都在推动一种文化,在这种文化中,记录他人感觉很正常。在有钱可赚的时候,企业继续推销“方便和个性化”的产品。自拍到签到拇指支付眨眼解锁DNA 祭祖游,都让收集和凝聚让你,你。同时,AI 可以进行面部分析、皮肤纹理分析、步态识别、语音识别和情感识别。所有 未经个人许可或合作 。把所有这些加起来,你会不成比例地强化国家/企业而非个人。虽然中国的监控制度听起来有些极端,但面部识别对执法和公共安全至关重要的观点却很普遍。尽管有许多偏见,美国也经常在执法中使用 T21 的面部识别,除了在科技之都。事实上“安全”的诱惑是如此强烈,基于人工智能的跟踪包括面部识别现在正被用在儿童身上,尽管误报对年轻人的心灵有害。作为技术人员,我们应该从哪里开始划分界限呢?

人与人工智能的互动

在我们有了谷歌主页几个月后,我 4 岁的孩子大声宣称“谷歌无所不知”。不用说,一个关于 Google Home 如何知道它知道什么以及它肯定不是一切的长对话接踵而至!令我沮丧的是,他看起来不太相信。人类的声音回应“嘿谷歌,我的纸杯蛋糕在哪里”,“嘿谷歌,你今天刷牙了吗”,“嘿谷歌,给我讲个笑话”对他这个年龄的孩子来说太真实了;而像机器、程序和训练这样的术语,我们应该叫它什么,人工的。

人工智能在我孩子的生活中扮演的角色好的或坏的是不可低估的。大多数父母使用技术,包括智能音箱,不知道它如何工作或何时不工作。但问题是,他们不应该知道。再次,考虑技术专家,效果和有利位置。

算法对我们精神和情感福祉的影响,无论是积极的还是消极的,也是令人担忧的原因。

我最*分享了一个故事某人被一个心理健康 app 通知救了;在其他案例中算法将某人推向自残;与此同时,依靠 Alexa 来对抗孤独、依靠毛茸茸的机器海豹来治疗、依靠玻璃管雕像来陪伴的例子也存在。

这种对人工智能的依赖将我们从本质上是社区的失败中拯救出来,在某些情况下是医疗保健的失败,这让我感到害怕和悲伤。

人工智能有什么影响

人工智能越来越多地影响着一切,但重要的是要突出二阶和三阶效应。不管是不是有意的,这些影响都是复杂的、多维的、大规模的。理解它们需要时间和专业知识,但意识到这一点是有价值的第一步,也是我的目标。

自动化、失业、劳动力趋势

围绕 AI 的新闻周期在“AI 将拯救我们”和“AI 将取代我们”之间交替。工厂工人被机器人取代的故事,人工智能创造了数百万个工作岗位的故事,以及 T4 人工智能中隐形劳动的危险的故事,都描绘了人工智能时代工作的未来。没关系,正如这份布鲁金斯报告建议的那样,“所有这些主要研究报告的重大劳动力中断的事实应该被认真对待”。

谈到人性,我是一个乐观主义者——我相信,只要我们愿意,我们可以战胜一切。人工智能引发的失业问题是,我们会做得足够快吗?那些风险最大的人会找到生存所需的手段和资源吗?仅仅生存就足够了吗?目标感、生产力和尊严呢?人工智能会给所有人提供这些还是仅仅给那些有足够特权去追求它的人?人工智能会加剧拥有者因拥有 T9 而拥有更多的恶性循环吗?

很明显,人工智能将打破劳动力的格局。人工智能伙伴关系布鲁金斯奥巴马白宫报告就谁将受到影响以及如何受到影响提供了有益的见解。但是,还不完全清楚这种变化会发生得多快,以及我们是否正在尽全力为此做准备。

民主和民权

“权力总会学习,强大的工具总会落入它的手中。”——Zeynep Tufecki,发表于麻省理工学院技术评论

无论是中国的大规模监控还是公共话语的系统性劫持,人工智能在强者手中的影响已经显而易见。虽然人工智能不是他们的唯一原因,但它推动强大力量的独特方式是人工智能研究人员必须应对的问题。

互联网,尤其是推动其发展的盈利性公司,造就了一种造假文化。假的人,假的对话:在 2013 年的某个时候,YouTube 上一半的人是冒充真人的机器人。一半。年复一年,只有不到 60%的网络流量来自人类。虽然 YouTube 和脸书等公司声称对其“*台”上的内容保持中立,但实际上它们最大化了消费,这导致一些内容比其他内容提供得更多。当机器人或不良行为者生成为病毒式传播定制的内容时,*台会满足他们的要求。这对我们如何消费和处理信息、谁掌握着我们的权力、我们信任谁以及我们如何行动意味着什么?Danah Boyd, Data & Society 的创始人说,这种对基于人工智能的推荐引擎的操纵导致了真相的破碎,并最终失去信任,失去社区。这种知情、信任的地方社区的丧失削弱了民主的力量。随着民主遭受打击,结构性偏见扩大,公民权利的自由行使不再是所有人都能一律享有的。

人与人之间的互动

人工智能如何重塑人类互动关系到我们个人和集体的福祉。早期迹象令人不安:性别化的人工智能促进了刻板印象和歧视,自然语言人工智能导致了礼貌的丧失以及当人工智能调解互动时信任度降低。这就引出了一个更基本的问题,即今天的狭义人工智能,以及在某一点上的 AGI,将如何影响我们去爱、去同情、去信任和归属的能力?

耶鲁大学教授尼古拉斯·克里斯塔基斯的一项实验表明,人类的群体动力可以通过引入类人机器人来改变。当自私的搭便车机器人加入群体时,一个合作以最大化集体回报的群体完全停止合作。对环境信任的减少改变了我们建立联系和合作的方式。

Humanity is Human Interdependency (image src: deposit photos)

尼古拉斯·克里斯塔基斯说:“随着人工智能渗透到我们的生活中,我们必须面对它可能会阻碍我们的情感,抑制深层的人类联系,让我们彼此之间的关系变得更少互惠,更浅,或更自恋。”这种阻碍也延伸到了道德上。正如肌肉不被使用会浪费肌肉一样,道德肌肉需要真实世界的互动来增强力量。那么,如果一个社会的典型决策是由隐藏在脱离其来源的数据背后的计算做出的,会发生什么?我们是否失去了感同身受的能力?我们对不公*变得不敏感了吗?我们能够经常练习道德判断以获得实践智慧吗?圣克拉拉大学的哲学教授香农·瓦勒,称之为道德去技能化(在这里详细阐述)。这种去技能化使得人类需要做出的一些决定变得更加困难,通常是在更关键和冲突的情况下(例如,作为陪审员)。

连续函数不连续人类

我需要提醒这里的读者,我正在以一种深刻反思的状态结束这个系列,前面的总结反映了这一点。从第一部分中对人工智能的伦理景观的调查开始,到第二部分中对人工智能是什么以及人工智能在第三部分中的作用和影响的深入探究,再到我对心理学、社会学、人类学和技术的阅读,我痛苦地意识到我们对人类和人性的理解是多么的不足。

也许,做人就是站在别人的立场上,理解他们所经历的事情的严重性,并尽你所能找到帮助他们的最佳方式。人性就是相信别人也会为你做同样的事。作为技术人员,我们制造产品,我们相信它们会帮助人们,我们定义衡量标准来表明它们确实有帮助,但是我们经常不能理解当它们没有帮助时的严重性。

为人类建造人工智能的伦理要求理解人类,以及他们所有的不连续性。这不是一个指标驱动的、有时限的、高回报、高增长的项目,但却非常有价值。

这是探索人工智能伦理的 3 部分系列的第 3 部分。 第一部 点击这里。 点击此处查看第二部分 。非常感谢 雷切尔·托马斯*卡蒂克·杜赖萨米 斯里拉姆·卡拉 对初稿的反馈。*

《搭车人特征提取指南》

原文:https://towardsdatascience.com/the-hitchhikers-guide-to-feature-extraction-b4c157e96631?source=collection_archive---------5-----------------------

Kaggle 和日常工作的一些技巧和代码

好的特征是任何机器学习模型的支柱。

好的特性创建通常需要领域知识、创造力和大量时间。

在这篇文章中,我将谈论:

  • 特征创建的各种方法——自动和手动
  • 处理分类特征的不同方法
  • 经度和纬度特征
  • 一些骗人的把戏
  • 以及其他一些关于特征创建的想法。

TLDR;这个帖子是关于有用的 特征工程 方法和技巧,我学到了,最后经常使用。

1.使用特征工具自动创建特征:

Automation is the future

你读过 featuretools 吗?如果没有,那么你会很高兴。

特征工具是一个执行自动化特征工程的框架。它擅长将时态和关系数据集转换为机器学习的特征矩阵。

怎么会?让我们用一个玩具示例向您展示 featuretools 的强大功能。

假设我们的数据库中有三个表:客户、会话和事务。

Datasets and relationships

这是一个相当不错的玩具数据集,因为它有基于时间的列以及分类和数字列。

如果我们要在这些数据上创建特征,我们将需要使用 Pandas 进行大量的合并和聚合。

Featuretools 让我们变得如此轻松。尽管有一些事情,在我们的生活变得更容易之前,我们需要学习。

Featuretools 使用 entitysets。

你可以把一个 entityset 理解为一个数据帧的桶以及它们之间的关系。

Entityset = Bucket of dataframes and relationships

所以事不宜迟,让我们创建一个空的 entityset。我只是以顾客的身份给出了名字。您可以在这里使用任何名称。现在只是一个空桶。

# Create new entityset
es = ft.EntitySet(id = 'customers')

让我们添加我们的数据框架。添加数据帧的顺序并不重要。要将数据帧添加到现有的 entityset,我们需要执行以下操作。

# Create an entity from the customers dataframees = es.entity_from_dataframe(entity_id = 'customers', dataframe = customers_df, index = 'customer_id', time_index = 'join_date' ,variable_types = {"zip_code": ft.variable_types.ZIPCode})

我们在这里做了一些事情,将数据帧添加到空的 entityset 桶中。

  1. 提供了一个entity_id:这只是一个名字。把它当成客户。
  2. dataframe名称设置为 customers_df
  3. index:该参数将表中的主键作为输入
  4. time_index:时间索引被定义为第一次可以使用一行中的任何信息。对于客户来说,这是加入日期。对于交易,它将是交易时间。
  5. variable_types:用于指定某一特定变量是否必须进行不同的处理。在我们的 Dataframe 中,我们有一个zip_code变量,我们想区别对待它,所以我们使用它。这些是我们可以使用的不同变量类型:
[featuretools.variable_types.variable.Datetime,
 featuretools.variable_types.variable.Numeric,
 featuretools.variable_types.variable.Timedelta,
 featuretools.variable_types.variable.Categorical,
 featuretools.variable_types.variable.Text,
 featuretools.variable_types.variable.Ordinal,
 featuretools.variable_types.variable.Boolean,
 featuretools.variable_types.variable.LatLong,
 featuretools.variable_types.variable.ZIPCode,
 featuretools.variable_types.variable.IPAddress,
 featuretools.variable_types.variable.EmailAddress,
 featuretools.variable_types.variable.URL,
 featuretools.variable_types.variable.PhoneNumber,
 featuretools.variable_types.variable.DateOfBirth,
 featuretools.variable_types.variable.CountryCode,
 featuretools.variable_types.variable.SubRegionCode,
 featuretools.variable_types.variable.FilePath]

这就是我们的 entityset bucket 现在的样子。它只有一个数据帧。也没有关系

让我们添加所有的数据帧:

# adding the transactions_df
es = es.entity_from_dataframe(entity_id="transactions",
                                 dataframe=transactions_df,
                                 index="transaction_id",
                               time_index="transaction_time",
                               variable_types={"product_id": ft.variable_types.Categorical})# adding sessions_df
es = es.entity_from_dataframe(entity_id="sessions",
            dataframe=sessions_df,
            index="session_id", time_index = 'session_start')

这是我们的实体集桶现在的样子。

所有三个数据帧,但没有关系。我所说的关系是指我的 bucket 不知道 customers_df 和 session_df 中的 customer_id 是相同的列。

我们可以向我们的 entityset 提供以下信息:

# adding the customer_id relationship
cust_relationship = ft.Relationship(es["customers"]["customer_id"],
                       es["sessions"]["customer_id"])# Add the relationship to the entity set
es = es.add_relationship(cust_relationship)# adding the session_id relationship
sess_relationship = ft.Relationship(es["sessions"]["session_id"],
                       es["transactions"]["session_id"])# Add the relationship to the entity set
es = es.add_relationship(sess_relationship)

在此之后,我们的 entityset 看起来像:

我们可以看到数据集和关系。我们这里的大部分工作已经完成了。我们已经准备好做特色菜了。

Cooking is no different from feature engineering. Think of features as ingredients.

创建特征非常简单:

feature_matrix, feature_defs = ft.dfs(entityset=es, target_entity="customers",max_depth = 2)feature_matrix.head()

我们最终得到了 73 个新特性。 你可以从 *feature_defs.* 中看到特征名称,我们最终创建的一些特征是:

[<Feature: NUM_UNIQUE(sessions.device)>,
 <Feature: MODE(sessions.device)>,
 <Feature: SUM(transactions.amount)>,
 <Feature: STD(transactions.amount)>,
 <Feature: MAX(transactions.amount)>,
 <Feature: SKEW(transactions.amount)>,
 <Feature: DAY(join_date)>,
 <Feature: YEAR(join_date)>,
 <Feature: MONTH(join_date)>,
 <Feature: WEEKDAY(join_date)>,
 <Feature: SUM(sessions.STD(transactions.amount))>,
 <Feature: SUM(sessions.MAX(transactions.amount))>,
 <Feature: SUM(sessions.SKEW(transactions.amount))>,
 <Feature: SUM(sessions.MIN(transactions.amount))>,
 <Feature: SUM(sessions.MEAN(transactions.amount))>,
 <Feature: SUM(sessions.NUM_UNIQUE(transactions.product_id))>,
 <Feature: STD(sessions.SUM(transactions.amount))>,
 <Feature: STD(sessions.MAX(transactions.amount))>,
 <Feature: STD(sessions.SKEW(transactions.amount))>,
 <Feature: STD(sessions.MIN(transactions.amount))>,
 <Feature: STD(sessions.MEAN(transactions.amount))>,
 <Feature: STD(sessions.COUNT(transactions))>,
 <Feature: STD(sessions.NUM_UNIQUE(transactions.product_id))>]

可以得到类似于 金额的 std 之和(SUM(sessions.STD(transactions.amount)))或者 金额的 std 之和(STD(sessions.SUM(transactions.amount)))这就是max_depth参数在函数调用中的含义。在这里,我们将其指定为 2,以获得两个级别的聚合。

如果我们将 *max_depth* 改为 3,我们可以得到如下特征: MAX(sessions.NUM_UNIQUE(transactions.YEAR(transaction_time)))

试想一下,如果您必须编写代码来获得这些功能,您将需要花费多少时间。另外,需要注意的是,增加max_depth可能需要更长的时间。

2.处理分类特征:标签/二进制/散列和目标/均值编码

创建自动化功能有它的好处。但是如果一个简单的库可以完成我们所有的工作,为什么还需要我们这些数据科学家呢?

在这一节中,我将讨论如何处理分类特征。

一个热编码

One Hot Coffee

我们可以用 一个热编码 来编码我们的分类特征。因此,如果我们在一个类别中有 n 个级别,我们将获得 n-1 个特征。

在 sessions_df 表中,我们有一个名为device,的列,它包含三个级别——桌面、移动或*板。我们可以从这样的列中得到两列,使用:

pd.get_dummies(sessions_df['device'],drop_first=True)

这是谈论分类特征时想到的最自然的事情,并且在许多情况下都很有效。

普通编码

有时有一个与类别相关联的顺序。在这种情况下,我通常在 pandas 中使用一个简单的 map/apply 函数来创建一个新的序数列。

例如,如果我有一个包含三个温度级别的数据帧:高、中、低,我会将其编码为:

map_dict = {'low':0,'medium':1,'high':2}
def map_values(x):
    return map_dict[x]
df['Temperature_oe'] = df['Temperature'].apply(lambda x: map_values(x))

用这个我保存了低位的信息

LabelEncoder

We could also have used LabelEncoder 把我们的变量编码成数字。标签编码器主要做的是,它看到列中的第一个值,并将其转换为 0,下一个值转换为 1,依此类推。这种方法在树模型中工作得相当好,当分类变量中有很多级别时,我最终会使用它。 我们可以用这个作为:

from sklearn.preprocessing import LabelEncoder
# create a labelencoder object
le = LabelEncoder()
# fit and transform on the data
sessions_df['device_le'] = le.fit_transform(sessions_df['device'])
sessions_df.head()

二进制编码器

BinaryEncoder 是另一种可以用来编码分类变量的方法。如果一列中有许多级别,这是一个很好的方法。虽然我们可以使用一个热编码使用 1023 个列来编码具有 1024 个级别的列,但是使用二进制编码我们可以仅使用十个列来实现。

假设我们的 FIFA 19 球员数据中有一列包含所有俱乐部名称。该列有 652 个唯一值。一个热编码意味着创建 651 列,这意味着大量内存使用和大量稀疏列。

如果我们使用二进制编码器,我们将只需要 10 列作为 2⁹ <652 <2¹⁰.

We can binaryEncode this variable easily by using BinaryEncoder object from category_encoders:

from category_encoders.binary import BinaryEncoder
# create a Binaryencoder object
be = BinaryEncoder(cols = ['Club'])
# fit and transform on the data
players = be.fit_transform(players)

HashingEncoder

人们可以把散列编码器想象成一个黑盒函数,它把一个字符串转换成 0 到某个预先指定的值之间的一个数。

它不同于二进制编码,因为在二进制编码中,两个或多个俱乐部参数可能是 1,而在散列中只有一个值是 1。

我们可以使用哈希函数:

players = pd.read_csv("../input/fifa19/data.csv")from category_encoders.hashing import HashingEncoder
# create a HashingEncoder object
he = HashingEncoder(cols = ['Club'])
# fit and transform on the data
players = he.fit_transform(players)

必然会有冲突(两个俱乐部具有相同的编码。例如,尤文图斯和 PSG 有相同的编码)但有时这种技术工作得很好。

目标/均值编码

这是一个我发现在 Kaggle 比赛中非常有效的技巧。如果两个训练/测试都来自同一时间段(横截面)的同一数据集,我们可以对特征进行巧妙处理。

比如:泰坦尼克号知识挑战赛中,测试数据是从训练数据中随机抽取的。在这种情况下,我们可以使用不同分类变量的*均目标变量作为特征。

在 Titanic 中,我们可以在 PassengerClass 变量上创建一个目标编码特征。

我们在使用目标编码时必须小心,因为它可能会导致我们的模型过度拟合。 这样我们在使用的时候就使用了 k 倍目标编码。

然后,我们可以创建一个*均编码特征,如下所示:

targetc = KFoldTargetEncoderTrain('Pclass','Survived',n_fold=5)
new_train = targetc.fit_transform(train)new_train[['Pclass_Kfold_Target_Enc','Pclass']]

您可以看到,根据从中获取*均值的折叠,乘客类别 3 如何被编码为 0.261538 和 0.230570。

这个特性非常有用,因为它对类别的目标值进行了编码。仅看这个特征,我们可以说,与等级 3 相比,等级 1 中的乘客具有较高的幸存倾向。

3.一些骗人的把戏:

虽然不一定是特色创建技术,但您可能会发现一些有用的后处理技术。

测井损耗削波技术;

这是我在杰瑞米·霍华德的神经网络课上学到的。它基于一个基本的想法。

如果我们非常自信和错误,日志丢失会对我们不利。

因此,在分类问题的情况下,我们必须预测 Kaggle 中的概率,最好将我们的概率限制在 0.05-0.95 之间,这样我们就永远不会非常确定我们的预测。反过来,受到的惩罚也更少。可以通过简单的np.clip来完成

gzip 格式的 Kaggle 提交:

一小段代码将帮助你节省无数的上传时间。享受吧。

df.to_csv(‘submission.csv.gz’, index=False, compression=’gzip’)

4.使用纬度和经度功能:

这一部分将讨论如何很好地使用经纬度特性。

对于这个任务,我将使用操场竞赛的数据:纽约市出租车旅行持续时间

训练数据看起来像:

我在这里要写的大部分函数都是受 Beluga 写的 Kaggle 上的一个内核的启发。

在这个竞赛中,我们必须预测旅行持续时间。我们得到了许多功能,其中的纬度和经度的接送也有。我们创造了如下特色:

A.两个纬度之间的哈弗线距离:

给定经度和纬度,哈弗辛公式确定了球体上两点之间的大圆距离

def haversine_array(lat1, lng1, lat2, lng2): 
    lat1, lng1, lat2, lng2 = map(np.radians, (lat1, lng1, lat2, lng2)) 
    AVG_EARTH_RADIUS = 6371 # in km 
    lat = lat2 - lat1 
    lng = lng2 - lng1 
    d = np.sin(lat * 0.5) ** 2 + np.cos(lat1) * np.cos(lat2) *      np.sin(lng * 0.5) ** 2 
    h = 2 * AVG_EARTH_RADIUS * np.arcsin(np.sqrt(d)) 
    return h

然后,我们可以使用该函数:

train['haversine_distance'] = train.apply(lambda x: haversine_array(x['pickup_latitude'], x['pickup_longitude'], x['dropoff_latitude'], x['dropoff_longitude']),axis=1)

B.两个纬度之间的曼哈顿距离:

Manhattan Skyline

沿直角轴测量的两点之间的距离

def dummy_manhattan_distance(lat1, lng1, lat2, lng2): 
    a = haversine_array(lat1, lng1, lat1, lng2) 
    b = haversine_array(lat1, lng1, lat2, lng1) 
    return a + b

然后,我们可以使用该函数:

train['manhattan_distance'] = train.apply(lambda x: dummy_manhattan_distance(x['pickup_latitude'], x['pickup_longitude'], x['dropoff_latitude'], x['dropoff_longitude']),axis=1)

C.两个纬度之间的方位:

一个方位用来表示一点相对于另一个的方向。

def bearing_array(lat1, lng1, lat2, lng2): 
    AVG_EARTH_RADIUS = 6371 # in km 
    lng_delta_rad = np.radians(lng2 - lng1) 
    lat1, lng1, lat2, lng2 = map(np.radians, (lat1, lng1, lat2, lng2)) 
    y = np.sin(lng_delta_rad) * np.cos(lat2) 
    x = np.cos(lat1) * np.sin(lat2) - np.sin(lat1) * np.cos(lat2) * np.cos(lng_delta_rad) 
    return np.degrees(np.arctan2(y, x))

然后,我们可以使用该函数:

train['bearing'] = train.apply(lambda x: bearing_array(x['pickup_latitude'], x['pickup_longitude'], x['dropoff_latitude'], x['dropoff_longitude']),axis=1)

D.接送点之间的中心纬度和经度:

train.loc[:, 'center_latitude'] = (train['pickup_latitude'].values + train['dropoff_latitude'].values) / 2 
train.loc[:, 'center_longitude'] = (train['pickup_longitude'].values + train['dropoff_longitude'].values) / 2

这些是我们创建的新列:

5.自动编码器:

有时人们也使用自动编码器来创建自动特征。

什么是自动编码器?

编码器是深度学习函数,*似从 X 到 X 的映射,即输入=输出。他们首先将输入特征压缩成低维的表示,然后从该表示中重建输出。

我们可以使用这个表示向量作为我们模型的一个特征。

6.您可以对要素执行的一些常规操作:

  • 使用标准偏差进行标准化: 这是一种很好的方法,通常需要对线性模型、神经网络进行预处理
  • 基于日志的特征/目标: 使用基于日志的特征或基于日志的目标功能。如果使用假设要素呈正态分布的线性模型,对数变换可以使要素呈正态分布。在收入等扭曲变量的情况下,这也很方便。

或者在我们的例子中是旅行持续时间。下图是未进行对数变换的行程持续时间。

通过对数变换:

train['log_trip_duration'] = train['trip_duration'].apply(lambda x: np.log(1+x))

行程持续时间的对数变换偏差更小,因此对模型更有帮助。

7.一些基于直觉的附加功能:

日期时间特征:

人们可以基于领域知识和直觉创建附加的日期时间特征。例如,基于时间的特征,如“晚上”、“中午”、“晚上”、“上个月的购买量”、“上个星期的购买量”等。可以适用于特定的应用。

特定于领域的功能:

Style matters

假设您已经获得了一些购物车数据,并且想要对 TripType 进行分类。这正是沃尔玛招聘中的问题:Kaggle 上的旅行类型分类。

旅行类型的一些例子:客户可能进行一次小的每日晚餐旅行,一次每周大型杂货旅行,一次为即将到来的假期购买礼物的旅行,或者一次购买衣服的季节性旅行。

要解决这个问题,您可以考虑创建一个类似“时尚”的功能,通过将属于男性时尚、女性时尚、青少年时尚类别的项目数量相加来创建这个变量。

或者你可以创建一个类似“稀有” 的功能,它是通过根据我们拥有的数据将一些物品标记为稀有,然后计算购物车中这些稀有物品的数量来创建的。

这些功能可能有效,也可能无效。从我的观察来看,它们通常提供了很多价值。

感觉这就是塔吉特的《怀孕少女模特》的制作方式。 他们会有一个变量,保存一个怀孕少女可以购买的所有物品,并将它们放入一个分类算法中。

互动功能:

如果您有特征 A 和 B,您可以创建特征 A*B、A+B、A/B、A-B 等。

例如,要预测房子的价格,如果我们有两个特征长度和宽度,更好的办法是创建一个面积(长度 x 宽度)特征。

或者在某些情况下,一个比率可能比只有两个特征更有价值。示例:信用卡利用率比信用额度和已用额度变量更有价值。

结论

Creativity is vital!!!

这些只是我用来创建特征的一些方法。

但是说到 特色工程 肯定是没有限制的,限制你的只是你的想象力。

就这一点而言,我总是在考虑特征工程的同时记住我将使用什么模型。适用于随机森林的要素可能不适用于逻辑回归。

特征创建是反复试验的领域。在尝试之前,你无法知道什么样的转换有效,或者什么样的编码效果最好。永远是时间和效用的权衡。

有时,特征创建过程可能需要很长时间。在这种情况下,你可能想要并行化你的熊猫函数

虽然我已经尽力保持这篇文章尽可能详尽(这很可能是我在 medium 上最大的一篇文章),但我可能已经错过了一些有用的方法。请在评论中让我了解他们。

你可以找到这篇文章的所有代码,并在这个 Kaggle 内核中运行它

看一下 Google Cloud Specialization 上的高级机器学习。本课程将讨论模型的部署和生产。绝对推荐。

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

使用 Spark 处理大数据的指南

原文:https://towardsdatascience.com/the-hitchhikers-guide-to-handle-big-data-using-spark-90b9be0fe89a?source=collection_archive---------4-----------------------

不仅仅是介绍

大数据已经成为数据工程的代名词。

但是数据工程和数据科学家之间的界限日益模糊。

此时此刻,我认为大数据必须是所有数据科学家的必备技能。

原因: 每天生成太多数据

这就把我们带到了 Spark

现在,大多数 Spark 文档虽然不错,但没有从数据科学家的角度进行解释。

所以我想尝试一下。

这篇文章的主题是——“如何让 Spark 发挥作用?”

这个帖子会很长。实际上我在媒体上最长的帖子,所以去买杯咖啡吧。

这一切是如何开始的?-MapReduce

假设你的任务是砍伐森林中的所有树木。也许在全球变暖的情况下,这不是一个好生意,但这符合我们的目的,我们只是在假设,所以我会继续。你有两个选择:

  • 让巴蒂斯塔带着电锯去做你的工作,让他一棵一棵地砍下每棵树。
  • 找 500 个有普通轴的普通人让他们在不同的树上工作。

你更喜欢哪个?

尽管有些人仍然会选择选项 1,但是对选项 2 的需求导致了 MapReduce 的出现。

用 Bigdata 的话来说,我们称 Batista 解决方案为纵向扩展/纵向扩展 ,即在单个 worker 中添加/填充大量 RAM 和硬盘。

第二种解决方案叫做水*缩放/横向缩放 。就像你把许多普通的机器(内存较少)连接在一起,并行使用它们。

现在,垂直扩展比水*扩展有一定的优势:

  • 问题规模小就快:想 2 棵树。巴蒂斯塔会用他的电锯干掉他们两个,而我们的两个家伙还在用斧子砍人。
  • 很容易理解。这是我们一贯的做事方式。我们通常以顺序模式思考问题,这就是我们整个计算机体系结构和设计的演变。

但是,水*缩放是

  • 更便宜:得到 50 个正常家伙本身就比得到巴蒂斯塔这样的单身家伙便宜多了。除此之外,巴蒂斯塔需要大量的照顾和维护,以保持冷静,他非常敏感,即使是小东西,就像高容量内存的机器。
  • 问题规模大时速度更快:现在想象 1000 棵树和 1000 个工人 vs 一个 Batista。通过横向扩展,如果我们面临一个非常大的问题,我们只需多雇佣 100 或 1000 名廉价工人。巴蒂斯塔就不是这样了。你必须增加内存,这意味着更多的冷却基础设施和更多的维护成本。

MapReduce 通过让我们使用 计算机集群 进行并行化,使得第二种选择成为可能。

现在,MapReduce 看起来像一个相当专业的术语。但是让我们打破它一点。MapReduce 由两个术语组成:

地图:

它基本上是应用/映射功能。我们将数据分成 n 个数据块,并将每个数据块发送给不同的工作器(映射器)。如果我们希望对数据行应用任何函数,我们的工作人员会这样做。

减少:

使用基于 groupby 键的函数来聚合数据。它基本上是一个团体。

当然,有很多事情在后台进行,以使系统按预期工作。

不要担心,如果你还不明白的话。继续读下去。在我将要提供的例子中,当我们自己使用 MapReduce 时,也许你就会明白了。

为什么是火花?

Because Pyspark

Hadoop 是第一个向我们介绍 MapReduce 编程范式的开源系统,Spark 是使它更快的系统,快得多(100 倍)。

Hadoop 中曾经有大量的数据移动,因为它曾经将中间结果写入文件系统。

这影响了你分析的速度。

Spark 给我们提供了一个内存模型,所以 Spark 在工作的时候不会对磁盘写太多。

简单地说,Spark 比 Hadoop 快,现在很多人都在用 Spark。

那么我们就不再多说,开始吧。

Spark 入门

安装 Spark 其实本身就很头疼。

由于我们想了解它是如何工作的,并真正使用它,我建议您在社区版中使用 Sparks on Databrickshereonline。别担心,这是免费的。

一旦您注册并登录,将出现以下屏幕。

你可以在这里开始一个新的笔记本。

选择 Python 笔记本,并为其命名。

一旦您启动一个新的笔记本并尝试执行任何命令,笔记本会询问您是否要启动一个新的集群。动手吧。

下一步将检查 sparkcontext 是否存在。要检查 sparkcontext 是否存在,只需运行以下命令:

sc

这意味着我们可以在笔记本上运行 Spark。

加载一些数据

下一步是上传一些我们将用来学习 Spark 的数据。只需点击主页选项卡上的“导入和浏览数据”。

在这篇文章的最后,我将使用多个数据集,但让我们从一些非常简单的开始。

让我们添加文件shakespeare.txt,你可以从这里下载。

您可以看到文件被加载到了/FileStore/tables/shakespeare.txt位置。

我们的第一个星火计划

我喜欢通过例子来学习,所以让我们完成分布式计算的“Hello World”:word count 程序。

# Distribute the data - Create a RDD 
lines = sc.textFile("/FileStore/tables/shakespeare.txt")# Create a list with all words, Create tuple (word,1), reduce by key i.e. the word
counts = (lines.flatMap(lambda x: x.split(' '))          
                  .map(lambda x: (x, 1))                 
                  .reduceByKey(lambda x,y : x + y))# get the output on local
output = counts.take(10)                                 
# print output
for (word, count) in output:                             
    print("%s: %i" % (word, count))

这是一个小例子,它计算文档中的字数,并打印出 10 个。

大部分工作在第二个命令中完成。

如果你还不能理解,请不要担心,因为我仍然需要告诉你让 Spark 工作的事情。

但是在我们进入 Spark 基础知识之前,让我们刷新一些 Python 基础知识。如果你使用过 Python 的函数式编程,理解 Spark 会变得容易得多。

对于那些没有使用过它的人,下面是一个简短的介绍。

Python 编程的函数式方法

1.地图

map用于将一个函数映射到一个数组或一个列表。假设您想对列表中的每个元素应用一些函数。

你可以通过简单地使用 for 循环来实现这一点,但是 python lambda 函数允许你在 python 中用一行代码来实现这一点。

my_list = [1,2,3,4,5,6,7,8,9,10]
# Lets say I want to square each term in my_list.
squared_list = map(lambda x:x**2,my_list)
print(list(squared_list))
------------------------------------------------------------
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

在上面的例子中,您可以将map看作一个带有两个参数的函数——一个函数和一个列表。

然后,它将该函数应用于列表中的每个元素。

lambda 允许你做的是写一个内联函数。在这里,**lambda x:x**2**部分定义了一个以 x 为输入并返回 x 的函数。

你也可以提供一个合适的函数来代替 lambda。例如:

def squared(x):
    return x**2my_list = [1,2,3,4,5,6,7,8,9,10]
# Lets say I want to square each term in my_list.
squared_list = map(squared,my_list)
print(list(squared_list))
------------------------------------------------------------
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

同样的结果,但是 lambda 表达式使得代码更紧凑,可读性更好。

2.过滤器

另一个广泛使用的功能是filter功能。这个函数有两个参数——一个条件和要过滤的列表。

如果你想使用某种条件过滤你的列表,你可以使用filter

my_list = [1,2,3,4,5,6,7,8,9,10]
# Lets say I want only the even numbers in my list.
filtered_list = filter(lambda x:x%2==0,my_list)
print(list(filtered_list))
---------------------------------------------------------------
[2, 4, 6, 8, 10]

3.减少

我要讲的下一个函数是 reduce 函数。这个功能将是 Spark 中的主力。

这个函数有两个参数——一个 reduce 函数有两个参数,还有一个要应用 reduce 函数的列表。

import functools
my_list = [1,2,3,4,5]
# Lets say I want to sum all elements in my list.
sum_list = functools.reduce(lambda x,y:x+y,my_list)
print(sum_list)

在 python2 中 reduce 曾经是 python 的一部分,现在我们不得不用reduce作为functools的一部分。

这里,lambda 函数接受两个值 x,y,并返回它们的和。直观上,您可以认为 reduce 函数的工作方式如下:

Reduce function first sends 1,2    ; the lambda function returns 3
Reduce function then sends 3,3     ; the lambda function returns 6
Reduce function then sends 6,4     ; the lambda function returns 10
Reduce function finally sends 10,5 ; the lambda function returns 15

我们在 reduce 中使用的 lambda 函数的一个条件是它必须是:

  • 交换的,即 a + b = b + a 和
  • 结合律即(a + b) + c == a + (b + c)。

在上面的例子中,我们使用了 sum,它既可交换又可结合。我们可以使用的其他函数:maxmin``*等。

再次走向火花

现在我们已经了解了 Python 函数式编程的基础,让我们再一次回到 Spark。

但首先,让我们深入了解一下 spark 的工作原理。火花实际上由两种东西组成,一个是司机,一个是工人。

工人通常做所有的工作,司机让他们做这些工作。

RDD

RDD(弹性分布式数据集)是一种并行化的数据结构,分布在工作节点上。它们是 Spark 编程的基本单元。

在我们的字数统计示例中,第一行

lines = sc.textFile("/FileStore/tables/shakespeare.txt")

我们取了一个文本文件,并把它分布在工作节点上,这样他们就可以并行地处理它。我们也可以使用函数sc.parallelize将列表并行化

例如:

data = [1,2,3,4,5,6,7,8,9,10]
new_rdd = sc.parallelize(data,4)
new_rdd
---------------------------------------------------------------
ParallelCollectionRDD[22] at parallelize at PythonRDD.scala:267

在 Spark 中,我们可以对 RDD 进行两种不同类型的操作:转换和操作。

  1. ****转换:从现有的 rdd 创建新的数据集
  2. ****动作:从 Spark 获得结果的机制

转型基础

让我们假设你已经得到了 RDD 形式的数据。

要重新报价,您的数据现在可供工作机访问。您现在想对数据进行一些转换。

你可能想要过滤,应用一些功能,等等。

在 Spark 中,这是使用转换函数来完成的。

Spark 提供了许多转换功能。这里 可以看到 的综合列表。我经常使用的一些主要工具有:

1.地图:

将给定函数应用于 RDD。

请注意,语法与 Python 略有不同,但它必须做同样的事情。现在还不要担心collect。现在,就把它想象成一个将 squared_rdd 中的数据收集回一个列表的函数。

data = [1,2,3,4,5,6,7,8,9,10]
rdd = sc.parallelize(data,4)
squared_rdd = rdd.map(lambda x:x**2)
squared_rdd.collect()
------------------------------------------------------
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2.过滤器:

这里也不奇怪。接受一个条件作为输入,只保留那些满足该条件的元素。

data = [1,2,3,4,5,6,7,8,9,10]
rdd = sc.parallelize(data,4)
filtered_rdd = rdd.filter(lambda x:x%2==0)
filtered_rdd.collect()
------------------------------------------------------
[2, 4, 6, 8, 10]

3.独特:

仅返回 RDD 中的不同元素。

data = [1,2,2,2,2,3,3,3,3,4,5,6,7,7,7,8,8,8,9,10]
rdd = sc.parallelize(data,4)
distinct_rdd = rdd.distinct()
distinct_rdd.collect()
------------------------------------------------------
[8, 4, 1, 5, 9, 2, 10, 6, 3, 7]

4.*面图:

类似于map,但是每个输入项可以映射到 0 个或多个输出项。

data = [1,2,3,4]
rdd = sc.parallelize(data,4)
flat_rdd = rdd.flatMap(lambda x:[x,x**3])
flat_rdd.collect()
------------------------------------------------------
[1, 1, 2, 8, 3, 27, 4, 64]

5.按键减少:

与 Hadoop MapReduce 中的 reduce 并行。

现在,如果 Spark 只处理列表,它就不能提供值。

在 Spark 中,有一个对 rdd 的概念,这使得它更加灵活。假设我们有一个数据,其中有一个产品、它的类别和它的售价。我们仍然可以并行处理数据。

data = [('Apple','Fruit',200),('Banana','Fruit',24),('Tomato','Fruit',56),('Potato','Vegetable',103),('Carrot','Vegetable',34)]
rdd = sc.parallelize(data,4)

现在我们的 RDDrdd拥有元组。

现在我们想找出我们从每个类别中获得的总收入。

为此,我们必须将我们的rdd转换成一个对 rdd,这样它就只包含键值对/元组。

category_price_rdd = rdd.map(lambda x: (x[1],x[2]))
category_price_rdd.collect()
-----------------------------------------------------------------
[(‘Fruit’, 200), (‘Fruit’, 24), (‘Fruit’, 56), (‘Vegetable’, 103), (‘Vegetable’, 34)]

这里我们使用了 map 函数来得到我们想要的格式。当使用文本文件时,形成的 RDD 有很多字符串。我们用map把它转换成我们想要的格式。

所以现在我们的category_price_rdd包含产品类别和产品销售价格。

现在,我们希望减少关键类别并对价格求和。我们可以通过以下方式做到这一点:

category_total_price_rdd = category_price_rdd.reduceByKey(lambda x,y:x+y)
category_total_price_rdd.collect()
---------------------------------------------------------[(‘Vegetable’, 137), (‘Fruit’, 280)]

6.按关键字分组:

类似于reduceByKey,但是没有减少,只是把所有的元素放在一个迭代器中。例如,如果我们希望将所有产品的类别和值作为关键字,我们将使用该函数。

让我们再次使用map来获得所需形式的数据。

data = [('Apple','Fruit',200),('Banana','Fruit',24),('Tomato','Fruit',56),('Potato','Vegetable',103),('Carrot','Vegetable',34)]
rdd = sc.parallelize(data,4)
category_product_rdd = rdd.map(lambda x: (x[1],x[0]))
category_product_rdd.collect()
------------------------------------------------------------
[('Fruit', 'Apple'),  ('Fruit', 'Banana'),  ('Fruit', 'Tomato'),  ('Vegetable', 'Potato'),  ('Vegetable', 'Carrot')]

然后我们使用groupByKey作为:

grouped_products_by_category_rdd = category_product_rdd.groupByKey()
findata = grouped_products_by_category_rdd.collect()
for data in findata:
    print(data[0],list(data[1]))
------------------------------------------------------------
Vegetable ['Potato', 'Carrot'] 
Fruit ['Apple', 'Banana', 'Tomato']

这里,groupByKey函数起作用了,它返回类别和该类别中的产品列表。

动作基础

你已经过滤了你的数据,映射了一些函数。完成你的计算。

现在,您希望在本地机器上获取数据,或者将数据保存到文件中,或者在 excel 或任何可视化工具中以一些图表的形式显示结果。

你需要为此采取行动。此处 提供了一个全面的行动列表

我倾向于使用的一些最常见的操作是:

1.收集:

这个动作我们已经用过很多次了。它获取整个 RDD,并将其返回到驱动程序。

2.减少:

使用 func 函数(接受两个参数并返回一个)聚合数据集的元素。该函数应该是可交换的和可结合的,这样它就可以被正确地并行计算。

rdd = sc.parallelize([1,2,3,4,5])
rdd.reduce(lambda x,y : x+y)
---------------------------------
15

3.拿走:

有时你需要查看你的 RDD 包含了什么,而不是获取内存中的所有元素。take返回 RDD 的前 n 个元素的列表。

rdd = sc.parallelize([1,2,3,4,5])
rdd.take(3)
---------------------------------
[1, 2, 3]

4.外卖:

takeOrdered使用自然顺序或自定义比较器返回 RDD 的前 n 个元素。

rdd = sc.parallelize([5,3,12,23])# descending order
rdd.takeOrdered(3,lambda s:-1*s)
----
[23, 12, 5]rdd = sc.parallelize([(5,23),(3,34),(12,344),(23,29)])# descending order
rdd.takeOrdered(3,lambda s:-1*s[1])
---
[(12, 344), (3, 34), (23, 29)]

我们终于学到了基础知识。让我们回到字数统计的例子

理解字数示例

现在我们有点理解 Spark 提供给我们的转换和动作。

现在理解 wordcount 程序应该不难。让我们一行一行地检查程序。

第一行创建了一个 RDD,并将其分发给工人。

lines = sc.textFile("/FileStore/tables/shakespeare.txt")

这个 RDD lines包含文件中的句子列表。您可以使用take查看 rdd 内容

lines.take(5)
--------------------------------------------
['The Project Gutenberg EBook of The Complete Works of William Shakespeare, by ',  'William Shakespeare',  '',  'This eBook is for the use of anyone anywhere at no cost and with',  'almost no restrictions whatsoever.  You may copy it, give it away or']

这个 RDD 的形式是:

['word1 word2 word3','word4 word3 word2']

下一行实际上是整个脚本中最重要的函数。

counts = (lines.flatMap(lambda x: x.split(' '))          
                  .map(lambda x: (x, 1))                 
                  .reduceByKey(lambda x,y : x + y))

它包含了我们对 RDD 线所做的一系列变换。首先,我们做一个flatmap转换。

flatmap转换将行作为输入,将单词作为输出。所以在flatmap变换之后,RDD 的形式是:

['word1','word2','word3','word4','word3','word2']

接下来,我们对flatmap输出进行map转换,将 RDD 转换为:

[('word1',1),('word2',1),('word3',1),('word4',1),('word3',1),('word2',1)]

最后,我们做一个reduceByKey转换,计算每个单词出现的次数。

之后 RDD 接*最终所需的形状。

[('word1',1),('word2',2),('word3',2),('word4',1)]

下一行是一个动作,它在本地获取生成的 RDD 的前 10 个元素。

output = counts.take(10)

这一行只是打印输出

for (word, count) in output:                 
    print("%s: %i" % (word, count))

这就是单词计数程序。希望你现在明白了。

到目前为止,我们讨论了 Wordcount 示例以及可以在 Spark 中使用的基本转换和操作。但我们在现实生活中不做字数统计。

我们必须解决更大、更复杂的问题。不要担心!无论我们现在学到了什么,都将让我们做得更好。

用实例点燃行动的火花

让我们用一个具体的例子来处理一些常见的转换。

我们将在 Movielens ml-100k.zip 数据集上工作,这是一个稳定的基准数据集。1000 个用户对 1700 部电影的 100,000 次评分。1998 年 4 月发布。

Movielens 数据集包含许多文件,但我们将只处理 3 个文件:

1) 用户:该文件名保存为“u.user”,该文件中的列有:

['user_id', 'age', 'sex', 'occupation', 'zip_code']

2) 评级:该文件名保存为“u.data”,该文件中的列有:

['user_id', 'movie_id', 'rating', 'unix_timestamp']

3) 电影:该文件名保存为“u.item”,该文件中的栏目有:

['movie_id', 'title', 'release_date', 'video_release_date', 'imdb_url', and 18 more columns.....]

让我们从使用 home 选项卡上的 Import and Explore Data 将这 3 个文件导入 spark 实例开始。

我们的业务合作伙伴现在找到我们,要求我们从这些数据中找出 25 个收视率最高的电影名称 。一部电影被评了多少次?

让我们将数据加载到不同的 rdd 中,看看数据包含什么。

userRDD = sc.textFile("/FileStore/tables/u.user") 
ratingRDD = sc.textFile("/FileStore/tables/u.data") 
movieRDD = sc.textFile("/FileStore/tables/u.item") 
print("userRDD:",userRDD.take(1))
print("ratingRDD:",ratingRDD.take(1))
print("movieRDD:",movieRDD.take(1))
-----------------------------------------------------------
userRDD: ['1|24|M|technician|85711'] 
ratingRDD: ['196\t242\t3\t881250949'] 
movieRDD: ['1|Toy Story (1995)|01-Jan-1995||http://us.imdb.com/M/title-exact?Toy%20Story%20(1995)|0|0|0|1|1|1|0|0|0|0|0|0|0|0|0|0|0|0|0']

我们注意到,要回答这个问题,我们需要使用ratingRDD。但是ratingRDD没有电影名。

所以我们必须用movie_id合并movieRDDratingRDD

我们如何在 Spark 中做到这一点?

下面是代码。我们还使用了新的转换leftOuterJoin。请务必阅读下面代码中的文档和注释。

OUTPUT:
--------------------------------------------------------------------RDD_movid_rating: [('242', '3'), ('302', '3'), ('377', '1'), ('51', '2')] 
RDD_movid_title: [('1', 'Toy Story (1995)'), ('2', 'GoldenEye (1995)')] 
rdd_movid_title_rating: [('1440', ('3', 'Above the Rim (1994)'))] rdd_title_rating: [('Above the Rim (1994)', 1), ('Above the Rim (1994)', 1)] 
rdd_title_ratingcnt: [('Mallrats (1995)', 54), ('Michael Collins (1996)', 92)] ##################################### 
25 most rated movies: [('Star Wars (1977)', 583), ('Contact (1997)', 509), ('Fargo (1996)', 508), ('Return of the Jedi (1983)', 507), ('Liar Liar (1997)', 485), ('English Patient, The (1996)', 481), ('Scream (1996)', 478), ('Toy Story (1995)', 452), ('Air Force One (1997)', 431), ('Independence Day (ID4) (1996)', 429), ('Raiders of the Lost Ark (1981)', 420), ('Godfather, The (1972)', 413), ('Pulp Fiction (1994)', 394), ('Twelve Monkeys (1995)', 392), ('Silence of the Lambs, The (1991)', 390), ('Jerry Maguire (1996)', 384), ('Chasing Amy (1997)', 379), ('Rock, The (1996)', 378), ('Empire Strikes Back, The (1980)', 367), ('Star Trek: First Contact (1996)', 365), ('Back to the Future (1985)', 350), ('Titanic (1997)', 350), ('Mission: Impossible (1996)', 344), ('Fugitive, The (1993)', 336), ('Indiana Jones and the Last Crusade (1989)', 331)] #####################################

《星球大战》是 Movielens 数据集中评分最高的电影。

现在我们可以使用下面的命令在一个命令中完成所有这些,但是代码现在有点乱。

我这样做是为了说明可以在 Spark 中使用链接函数,并且可以绕过变量创建过程。

让我们再做一次。为了练习:

现在,我们希望使用相同的数据集找到评分最高的 25 部电影。我们实际上只想要那些已经被评级至少 100 次的电影。

OUTPUT:
------------------------------------------------------------
rdd_title_ratingsum: [('Mallrats (1995)', 186), ('Michael Collins (1996)', 318)] 
rdd_title_ratingmean_rating_count: [('Mallrats (1995)', (3.4444444444444446, 54))] 
rdd_title_rating_rating_count_gt_100: [('Butch Cassidy and the Sundance Kid (1969)', (3.949074074074074, 216))]##################################### 
25 highly rated movies: [('Close Shave, A (1995)', (4.491071428571429, 112)), ("Schindler's List (1993)", (4.466442953020135, 298)), ('Wrong Trousers, The (1993)', (4.466101694915254, 118)), ('Casablanca (1942)', (4.45679012345679, 243)), ('Shawshank Redemption, The (1994)', (4.445229681978798, 283)), ('Rear Window (1954)', (4.3875598086124405, 209)), ('Usual Suspects, The (1995)', (4.385767790262173, 267)), ('Star Wars (1977)', (4.3584905660377355, 583)), ('12 Angry Men (1957)', (4.344, 125)), ('Citizen Kane (1941)', (4.292929292929293, 198)), ('To Kill a Mockingbird (1962)', (4.292237442922374, 219)), ("One Flew Over the Cuckoo's Nest (1975)", (4.291666666666667, 264)), ('Silence of the Lambs, The (1991)', (4.28974358974359, 390)), ('North by Northwest (1959)', (4.284916201117318, 179)), ('Godfather, The (1972)', (4.283292978208232, 413)), ('Secrets & Lies (1996)', (4.265432098765432, 162)), ('Good Will Hunting (1997)', (4.262626262626263, 198)), ('Manchurian Candidate, The (1962)', (4.259541984732825, 131)), ('Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb (1963)', (4.252577319587629, 194)), ('Raiders of the Lost Ark (1981)', (4.252380952380952, 420)), ('Vertigo (1958)', (4.251396648044692, 179)), ('Titanic (1997)', (4.2457142857142856, 350)), ('Lawrence of Arabia (1962)', (4.23121387283237, 173)), ('Maltese Falcon, The (1941)', (4.2101449275362315, 138)), ('Empire Strikes Back, The (1980)', (4.204359673024523, 367))] 
#####################################

到目前为止,我们一直在谈论 rdd,因为它们非常强大。

您也可以使用 rdd 来处理非关系数据库。

他们让你做很多用 SparkSQL 做不到的事情?

是的,你也可以在 Spark 中使用 SQL,这就是我现在要说的。

火花数据帧

Spark 为美国数据科学家提供了 DataFrame API 来处理关系数据。这是为喜欢冒险的人准备的文档。

请记住,在背景中,它仍然是所有的 rdd,这就是为什么这篇文章的开始部分侧重于 rdd。

我将从一些你使用 Spark 数据框需要的常用功能开始。会看起来很像熊猫,只是有一些语法上的变化。

1.读取文件

ratings = spark.read.load("/FileStore/tables/u.data",format="csv", sep="\t", inferSchema="true", header="false")

2.显示文件

我们有两种方法使用 Spark 数据帧显示文件。

ratings.show()

display(ratings)

我更喜欢display,因为它看起来更漂亮、更干净。

3.更改列名

功能性好。总是需要。别忘了单子前面的*

ratings = ratings.toDF(*['user_id', 'movie_id', 'rating', 'unix_timestamp'])display(ratings)

4.一些基本数据

print(ratings.count()) #Row Count
print(len(ratings.columns)) #Column Count
---------------------------------------------------------
100000
4

我们还可以使用以下方式查看数据帧统计数据:

display(ratings.describe())

5.选择几列

display(ratings.select('user_id','movie_id'))

6.过滤器

使用多个条件过滤数据帧:

display(ratings.filter((ratings.rating==5) & (ratings.user_id==253)))

7.分组依据

我们也可以对 spark 数据帧使用 groupby 函数。除了你需要导入pyspark.sql.functions之外,和熊猫组基本相同

**from** pyspark.sql **import** functions **as** F
display(ratings.groupBy("user_id").agg(F.count("user_id"),F.mean("rating")))

在这里,我们发现了每个 user_id 的评分计数和*均评分

8.分类

display(ratings.sort("user_id"))

我们也可以使用下面的F.desc函数进行降序排序。

# descending Sort
**from** pyspark.sql **import** functions **as** F
display(ratings.sort(F.desc("user_id")))

与 Spark 数据帧连接/合并

我找不到与 Spark 数据帧合并功能相当的 pandas,但是我们可以将 SQL 用于数据帧,因此我们可以使用 SQL 合并数据帧。

让我们试着对评级运行一些 SQL。

我们首先将评级 df 注册到一个临时表 ratings_table 中,我们可以在这个表中运行 sql 操作。

如您所见,SQL select 语句的结果又是一个 Spark 数据帧。

ratings.registerTempTable('ratings_table')
newDF = sqlContext.sql('select * from ratings_table where rating>4')
display(newDF)

现在,让我们再添加一个 Spark 数据帧,看看是否可以通过 SQL 查询使用 join:

#get one more dataframe to join
movies = spark.read.load("/FileStore/tables/u.item",format="csv", sep="|", inferSchema="true", header="false")# change column names
movies = movies.toDF(*["movie_id","movie_title","release_date","video_release_date","IMDb_URL","unknown","Action","Adventure","Animation ","Children","Comedy","Crime","Documentary","Drama","Fantasy","Film_Noir","Horror","Musical","Mystery","Romance","Sci_Fi","Thriller","War","Western"])display(movies)

现在,让我们尝试连接 movie_id 上的表,以获得 ratings 表中的电影名称。

movies.registerTempTable('movies_table')display(sqlContext.sql('select ratings_table.*,movies_table.movie_title from ratings_table left join movies_table on movies_table.movie_id = ratings_table.movie_id'))

让我们试着做我们之前在 RDDs 上做的事情。寻找收视率最高的 25 部电影:

mostrateddf = sqlContext.sql('select movie_id,movie_title, count(user_id) as num_ratings from (select ratings_table.*,movies_table.movie_title from ratings_table left join movies_table on movies_table.movie_id = ratings_table.movie_id)A group by movie_id,movie_title order by num_ratings desc ')display(mostrateddf)

并找到投票数超过 100 的最高评级的前 25 部电影:

highrateddf = sqlContext.sql('select movie_id,movie_title, avg(rating) as avg_rating,count(movie_id) as num_ratings from (select ratings_table.*,movies_table.movie_title from ratings_table left join movies_table on movies_table.movie_id = ratings_table.movie_id)A group by movie_id,movie_title having num_ratings>100 order by avg_rating desc ')display(highrateddf)

我在上面的查询中使用了 GROUP BY、HAVING 和 ORDER BY 子句以及别名。这表明你可以用sqlContext.sql做很多复杂的事情

关于显示的一个小注意事项

您也可以使用display命令显示笔记本中的图表。

选择 剧情选项可以看到更多选项。

从火花数据帧转换到 RDD 数据帧,反之亦然:

有时,您可能希望从 spark 数据框架转换到 RDD 数据框架,反之亦然,这样您就可以同时拥有两个世界的优势。

要从 DF 转换到 RDD,您只需执行以下操作:

highratedrdd =highrateddf.rdd
highratedrdd.take(2)

要从 RDD 转到数据帧:

from pyspark.sql import Row
# creating a RDD first
data = [('A',1),('B',2),('C',3),('D',4)]
rdd = sc.parallelize(data)# map the schema using Row.
rdd_new = rdd.map(lambda x: Row(key=x[0], value=int(x[1])))# Convert the rdd to Dataframe
rdd_as_df = sqlContext.createDataFrame(rdd_new)
display(rdd_as_df)

RDD 为您提供了 更多的控制 以时间和编码工作为代价。而 Dataframes 为您提供了 熟悉的编码 *台。现在你可以在这两者之间来回移动。

结论

这是一个很大的帖子,如果你完成了,恭喜你。

Spark 为我们提供了一个接口,我们可以在这个接口上对数据进行转换和操作。Spark 还提供了 Dataframe API 来简化数据科学家向大数据的过渡。

希望我已经很好地介绍了基础知识,足以激起您的兴趣,并帮助您开始使用 Spark。

你可以在GitHub库中找到所有的代码。****

此外,如果你想了解更多关于 Spark 和 Spark DataFrames 的知识,我想在 Coursera 上调出这些关于大数据基础的优秀课程:HDFS、MapReduce 和 Spark RDD

我以后也会写更多这样的帖子。让我知道你对这个系列的看法。在关注我或者订阅我的 博客 了解他们。一如既往,我欢迎反馈和建设性的批评,可以通过 Twitter @mlwhiz 联系。****

可解释人工智能的方法:可解释的建模

原文:https://towardsdatascience.com/the-how-of-explainable-ai-explainable-modelling-55c8c43d7bed?source=collection_archive---------9-----------------------

在我们如何解释人工智能概述的第一部分,我们看了一个预建模可解释性。然而,可解释性的真正范围要广泛得多。可解释性可以在人工智能开发的所有阶段考虑,即建模前、模型开发和建模后。

大多数人工智能可解释性文献旨在解释已经开发的黑盒模型,即后建模可解释性。我们将在下一部分的中回顾后建模可解释性方法论。然而,理想情况下,我们可以通过开发一个通过设计可以解释的模型,从一开始就避免黑箱问题。这种可解释的建模方法是本系列文章的重点。

The three stages of AI explainability: Pre-modelling explainability, Explainable modelling and post-modelling explainability.

可解释的建模

实现可解释的建模有时被认为等同于将人工智能模型的选择限制在被认为是内在可解释的特定模型家族。我们将回顾这一系列人工智能模型。然而,我们的讨论远远超出了传统的可解释的模型家族,并包括更多的最新和新颖的方法,如联合预测和解释,混合模型,等等。

理想情况下,我们可以通过开发一个通过设计可以解释的模型,从一开始就避免黑箱问题。

采用一个内在可解释的模型族

实现可解释建模的传统方法是采用被认为是可解释的特定模型族。这个模型家族通常提供 Zack Lipton 提出的三个层次的模型透明性中的一个(或多个),即可模拟性、可分解性和算法透明性。这些族的例子包括线性模型决策树规则集决策集广义可加模型基于案例的推理方法

然而,在实践中,简单地采用一个来自可解释家族的模型并不能自动保证可解释性。例如,对高维输入进行操作的线性回归模型可能无法模拟,因此无法解释。为了避免这一问题,我们可以在模型训练期间使用某种正则化来限制重要输入特征的数量,例如 Lasso 回归中的 L1 范数。此外,在要素多重共线性的情况下,也就是说,由于观察到的或未观察到的混杂要素而相关的要素,为线性回归模型估计的系数可能不稳定。进一步的规范化,,例如 L2 规范,可以用来缓解这个问题。

简单地采用一个来自可解释家族的模型并不能自动保证可解释性。

虽然一些缓解措施可用于特定的方法,但可解释的模型族通常相对简单,因此不足以捕捉一些现实世界问题的复杂性。这种观察导致了所谓的可解释性与性能的权衡,也就是说,一个模型的性能越高,它就越不可解释,反之亦然。

The alleged explainability vs performance tradeoff: the higher the model performance, the lower its explainability, and vice versa.

然而,许多研究人员已经表明,通过开发既可解释又可执行的模型,所谓的可解释性与性能的权衡并不总是成立的。开发这样一个模型的主要挑战是设计一个足够简单的模型,让它的受众能够理解,同时又足够复杂,能够恰当地适应底层数据。这一类别中有相对较多的相关方法。因此,我们根据它们关键的潜在的、可能重叠的想法对它们进行分组,以使我们的演示更容易理解。

许多研究人员已经表明,通过开发既可解释又可执行的模型,所谓的可解释性与性能的权衡并不总是成立的。

混合可解释模型

有可能将一种内在可解释的建模方法与一种复杂的黑盒方法混合起来,设计出一种高性能且可解释的模型。这是混合可解释模型的潜在直觉。

深度 K *邻(DkNN) 方法提出对通过深度网络的层学习的训练数据集的隐藏表示使用 K *邻(kNN)推断。然后,保形预测框架用于以数学上严格的方式组合所有层的 kNN 预测。DkNN 被证明是有效和稳健的,同时根据每层中使用的最*训练样本为其预测提供基于示例的解释。然而,DkNN 需要存储整个训练数据集的隐藏表示,这对于大型数据集来说是不可行的。

深度加权*均分类器(DWAC) 方法在进行预测方面类似于 DkNN,在保形预测框架内,依靠类似于给定输入实例的训练样本的标签。然而,仅使用最终层的低维表示来计算相似性。

The Deep k-Nearest Neighbors (DkNN) hybrid explainable modelling method: applying K-nearest neighbor (kNN) inference on the hidden representation of training dataset learnt through layers of a deep network.

再比如自解释神经网络(SENN) 。SENN 背后的关键思想是通过允许使用三个神经网络来学习线性分类器的特征、它们相应的系数以及它们聚集成预测的方式,来概括线性分类器。这些神经网络分别被称为概念编码器、相关性参数化器和聚集器。所得到的混合分类器被认为具有线性模型的可解释结构,以及神经网络的表达能力和灵活性。SENN 为学习混合可解释模型提供了一个灵活而有吸引力的框架。然而,作者提出的初步工作没有充分解决使用概念编码器网络学习高级特征的挑战。特别是,作者承认,这些概念应该有一个直接的人类可以理解的解释,这使得学习它们成为一项主观任务,难以量化。

作为另一个例子,考虑上下文解释网络(CEN) 框架,它与森有一些相似之处。CEN 假设了一个学习问题,其中要对给定上下文中的输入进行预测。其思想是首先使用一个复杂的模型,以概率的方式将上下文编码到一个固有的可解释模型的参数空间中。然后,输入被馈送到这个内在可解释的模型以做出预测。

BagNets 架构是另一个非常有趣的混合解释模型的例子。BagNets 基本上是一个特征包模型,其中的特征是使用深度网络学习的。对于图像分类任务,提出将每幅图像视为一个特征包。这种特征包表示是通过将图像分成小块来获得的,这些小块通过深层网络来获得每个小块的局部类别证据。然后,将每个类别的这些局部证据加在一起,并通过 softmax 函数来获得每个类别的总体概率。有趣的是,当应用于 ImageNet 数据集时,BagNet 产生的性能可与最新的黑盒深度网络架构(如 VGG-16)相媲美,同时仍然可以通过设计来解释。

An overview of the deep bag of features model (BagNets) architecture: an input image is divided into small patches, which are passed through a deep network to obtain class evidences (logits) for each patch. These evidences are then fed into a linear classifier yielding one logit heatmap per class. Finally, these heatmaps are averaged spatially and fed to a softmax layer to produce the final class probabilities.

联合预测和解释

人工智能模型可以被训练来共同提供预测和相应的解释。换句话说,一个复杂的模型可以被明确地训练来为它的预测提供一个解释。然而,这些方法有几个局限性,我们将在下面讨论。

例如,决策的教学解释(TED)框架提出增加训练数据集,其中每个样本包括一组特征、一个决策和用户对该决策的基本原理,一个解释。给定的决策及其解释在训练时被编码到单个标签中。在测试时,由模型提供的输出被解码以产生一个决策及其相应的解释。TED 框架据称有几个优点,包括产生与最终用户的心智模型相匹配的解释,以及广泛适用。

The TED (Teaching Explanations for Decisions) framework for explainable modelling through joint prediction and explanation.

Park 等人提出了一种生成多模态解释的建模方法。他们的解决方案类似于 TED,因为它需要一个增加了视觉和文本解释的训练数据集。为了评估他们的方法,作者收集了两个新的数据集,增加了对活动识别和视觉问答任务的多模态解释。他们的实验表明,整合多模态解释可以提高预测性能。

上述方法有两个主要缺点。首先,他们假设训练数据集中有解释,但事实往往并非如此。第二,这些方法产生的解释不一定反映模型预测是如何做出的,而是人类希望看到的解释。

此类别中的一些方法不需要对训练数据集中的每个预测进行解释。例如,Hendricks 等人提出了一种视觉解释生成方法,用于使用深度网络的图像中的对象识别任务。他们的方法只需要在训练时对图像及其类别标签进行文本描述,以便在测试时生成图像预测的特定类别视觉解释。

雷等人的合理化神经预测是另一个例子。他们提出的 NLP 模型由两部分组成,即生成器和编码器,它们被一起训练。前者将输入文本片段的分布指定为候选解释(作者称之为推理),然后将候选解释传递给后者以映射到预测中。重要的是,这些基本原理是在培训中发现的,而不是提供的。这只能通过实施两个要求来实现,即,它们必须是短且连贯的文本片段,并且它们必须足以作为给定预测任务的原始文本的替代。由于编码器依赖于生成器生成的推理来进行预测,因此他们的方法不会遭受前面提到的两个缺点中的任何一个。然而,仅提供理由不足以让最终用户模拟预测。

通过架构调整的可解释性

这类方法通过调整模型架构来增强模型的可解释性。此外,他们专注于深层网络架构。

例如,张等人开发了一个可解释的卷积神经网络架构,它可以自动将更高层过滤器的表示推送到对象部分,而不是模式的混合。这是通过添加特定的损失函数来实现的,该损失函数被应用于传统卷积网络中的滤波器的特征图。这种损失函数偏爱某一类别的特定对象部分,而对其他类别的图像保持沉默。重要的是,这种方法不需要对象零件注释数据。使用这种方法训练的可解释卷积网络比传统卷积网络在其高层过滤器中编码更多语义上有意义的知识。此外,就预测性能而言,可解释的卷积网络在单类别分类问题上优于其不可解释的对应模型,甚至在多类别分类问题上优于它们。

另一个例子是陈等人提出的 【这个】看起来像【那个】**可解释的深度架构,这个架构的灵感来源于人类如何通过将图像部分与一组已学习的图像部分原型进行比较来描述自己的分类推理。作者建议在传统的卷积网络中增加一个原型层,位于卷积层和全连接层之间。原型层包含每个类的预设数量的图像部件原型。每个特定于类的 protype 旨在捕获最相关的部分或语义概念,以识别给定类的图像。使用特殊的损失函数一起学习原型层参数和传统卷积层的参数。接下来,使用稀疏凸优化方法学习全连接层的权重。两个图像分类任务的实验结果表明,所提出的可解释深度网络产生了与不可解释深度模型相当的性能。

An overview of the This Looks Like That explainable deep network architecture: The key idea is to add a prototype layer to conventional convolutional networks. The prototype layer contains a preset number of image part prototypes for each class. Each class-specific protype is meant to capture the most relevant parts or semantic concepts for identifying images of a given class.

注意机制旨在识别输入中与给定任务最相关的部分。通常,这种相关性由分配给输入部分的一组权重/分数来表征,即注意力图。存在多种多样的注意力机制。基于注意力的模型通常用在各种 NLP视觉时间序列建模任务中,并声称提供了某种程度的可解释性。包含某种形式注意力的深层网络架构,通常是为了提高模型性能,有时被认为是可解释的模型。

然而,最*一项关于注意力作为一种可解释机制的正式研究发现,几乎没有证据支持这一长期持有的信念。换句话说,注意力可能不构成解释。跨各种 NLPs 任务的一组广泛的实验表明,注意力地图与基于梯度的特征重要性的度量仅弱相关。此外,通常有可能识别出导致相同预测的非常不同的注意力地图集合。

正则化的可解释性

经常使用各种正则化方法来提高人工智能模型的预测性能。然而,正则化也可以用来提高模型的可解释性。

例如,Wu 等人提出了树正则化来增强深度网络的可解释性。关键的想法是鼓励学习一个模型,它的决策边界可以用一个小决策树来很好地*似,从而使它的预测可以被人类模拟。这是通过向用于训练模型的损失函数添加新的正则化项来实现的。他们对几个现实世界任务的实验结果表明,使用这种方法开发的模型更易于解释,而不会牺牲预测性能。

此外,越来越多的工作使用正则化来明确约束模型预测的解释,以确保它们有更好的理由是正确的。

Ross 等人提出了一个框架来约束模型预测的局部解释以匹配训练期间的领域知识。他们认为输入梯度是局部模型行为的一阶线性*似,即对于给定模型输入的一阶解释。假设领域知识被编码为二进制注释矩阵,该矩阵指定是否应该使用每个特征来对每个输入进行预测。然后,用于训练模型的损失函数被增加一个新的项,以惩罚与该注释矩阵不匹配的输入梯度。他们的实验结果显示,当在显著不同的数据集上训练和测试时,用他们的方法训练的模型概括得更好。

越来越多的工作使用正则化来明确地约束模型预测的解释,以确保它们有更好的理由是正确的。

Ghaeini 等人提出了一种与 Ross 等人的方法具有类似特征的方法,称为显著性学习。显著性学习包括专注于输入的相关部分而非不相关部分的专家注释,以及与输入维度级别相对的单词嵌入级别的注释。使用模拟解释在几个任务上执行的实验显示,使用显著性学习训练的模型提供了更准确和可靠的预测。

其他方法

还有许多其他值得注意的可解释的建模方法。Angelino 等人提出的可认证最优规则列表(CORELS) 方法是一个有吸引力的选择,因为它提供了一个发现最优规则列表的解决方案,以最小化给定训练数据的经验风险。此外,CORELS 被证明是快速的,并带有一个易于使用的软件实现。然而,它的主要限制是只能处理分类数据。

下一步是什么?

模型可解释性经常被作为事后的想法来处理。换句话说,一些后建模可解释性方法被用来为一个预先开发的模型提取解释。这部分是由于所谓的可解释性与性能的权衡。然而,我们提出了一套不断增长和多样化的方法,证明了开发既可解释又可执行的模型的可能性。对可解释模型的进一步研究将在未来提供更坚实的证据来支持这种可能性。

目前,XAI 的大部分研究集中在后建模可解释性方法学上,本系列的下一个也是最后一个部分将基于一个新的分类法探索该领域的相关文献。

特别感谢 泽维尔·斯内尔格罗夫埃尔纳兹·巴尔尚林赛·布林圣地亚哥·萨尔西多 ,以及 情妇玛侬·格鲁阿兹 彼得亨德森 编辑。**

可解释人工智能的方法:后建模可解释性

原文:https://towardsdatascience.com/the-how-of-explainable-ai-post-modelling-explainability-8b4cbc7adf5f?source=collection_archive---------6-----------------------

在 XAI 方法概述的前两部分中,我们研究了预建模可解释性可解释建模方法,这两种方法侧重于数据集阶段和模型开发期间的可解释性。然而,与事后可解释性相比,这些都是相对次要的领域,后建模可解释性是大多数 XAI 科学家关注和研究的重点。

The three stages of AI explainability: Pre-modelling explainability, Explainable modelling and post-modelling explainability.

建模后可解释性

目前,人工智能模型的开发通常只考虑预测性能。因此,大多数 XAI 文献致力于解释预先开发的模型。这种关注的偏向以及最* XAI 研究的流行导致了众多不同的事后解释方法的发展。

由于研究 XAI 的方法多种多样,要理解这些大量的文学作品很有挑战性。为了理解事后可解释性方法,我们提出了一个分类法或一种分解这些方法的方法,显示了它们的公共结构,围绕四个关键方面组织:目标,关于模型要解释什么;司机,是什么导致了你想要解释的事情;解释族,关于引起目标的驾驶员的解释信息如何传达给用户;而估算者,实际获得解释的计算过程。

例如,流行的局部可解释模型不可知解释(LIME) 方法使用重要性分数、通过模型输入的局部扰动计算的解释族、估计量,为模型的实例预测、目标、输入特征方面的驱动因素提供解释。

The proposed taxonomy of the post-hoc explainability methods including the four aspects of target, drivers, explanation family, and estimator.

在下面的章节中,我们将详细讨论事后可解释性的四个方面的分类。此外,我们提供了相关方法的例子,以审查文献工作。

解释目标

目标指定了可解释性方法的对象,这使得它成为命运分类法中最重要的方面。目标在类型、范围和复杂性方面可能有所不同。我们将对目标变化的这三个来源分别进行概述。

人工智能生态系统包括各种角色的用户。解释目标的类型通常根据最终用户的角色特定目标来确定。一般来说,有两种类型的目标:内对外,也可以理解为机械对功能

人工智能专家通常需要对模型内部的某些组件进行机械解释。例如,模型创建者可能需要理解深层网络的各层如何响应输入数据,以便调试或验证模型。相反,非专家通常需要一个功能性的解释来理解模型之外的一些输出是如何产生的。例如,模型审查员可能需要了解模型如何使用输入数据进行预测,以确保模型是可信的、没有偏见的或符合规定的。

解释目标的类型通常是根据最终用户的角色特定的目标来确定的。

此外,目标的范围可以有所不同。外部类型目标通常是某种形式的模型预测。它们的范围可以是实例预测(也称为局部解释),例如解释类实例的预测,或者所有模型预测(也称为全局解释),例如解释类所有实例的预测。内部类型的目标也因基础模型的架构而异。XAI 文献中感兴趣的模型架构通常是一些神经网络架构。相应地,内部目标的范围可以是神经网络中的单个神经元

Explaining function of a given neuron, as target, by synthesizing an image that maximizes its activation, aka Activativation Maximization (AM): the hidden code input (red bar) of a deep image generator network is optimized to produce an image that highly activates the candle class output neuron. This optimization relies on gradient information (dashed blue line) flowing from the layer containing the target neuron al the way back to the input code layer.

最后,目标的复杂程度会有所不同。它们可以是单个数字或分类输出,例如解释分类器的预测,或者是单词序列,例如解释序列到序列模型的预测。目标的复杂性对解释族的选择有很大的影响,这将在本节稍后讨论。

解释驱动因素

解释目标可能由多种因素引起。命运分类法将驱动因素定义为一组特定的因果因素,这些因素对目标的影响通过解释来描述。最常见的驱动因素是人工智能模型的输入特征。例如,指定每个输入像素对图像分类器预测的相对贡献的解释通常在 XAI 社区进行研究。

人工智能模型的原始特征并不总是解释驱动因素的最佳选择。例如,根据单个输入像素来解释图像分类器预测会导致解释过于嘈杂、计算成本过高,更重要的是难以解释。或者,我们可以依赖于输入特征的更可解释的表示,例如,在图像分类器预测的情况下,相似像素的连续片(又名超像素)。识别合适的解释驱动因素与前面在建模前可解释性章节中提出的可解释特征工程讨论相关。

输入特征不是解释驱动的唯一选择。所有对人工智能模型的发展有影响的因素都可能是解释驱动因素。这些因素包括(但不限于)训练样本超参数设置优化算法的选择,甚至模型架构的选择。

特别是,Koh 和梁提出了一种方法来根据有害或伤害性的训练样本解释人工智能模型的实例预测。他们的解决方案基于稳健统计学的经典技术,称为影响函数。对于给定的实例预测,影响函数提供了一种有效的方法来估计上加权每个训练样本对模型损失函数的影响。因此,向上加权导致损失函数恶化(增加)的训练样本被认为是有害的,反之亦然。

所有对人工智能模型的发展有影响的因素都可能是解释驱动因素。

一些研究工作探索允许司机成为一个任意的概念,只要它能被一组例子定义。例如,这允许检查“条纹纹理”的概念是否有助于图像分类器预测斑马。首先计算给定概念的概念激活向量(CAV)。CAV 是通过训练线性分类器来获得的,该线性分类器使用由神经网络的隐藏层产生的表示来分离给定概念的正例和负例。最后一步是估计给定类别预测损失(例如斑马类别)在给定 CAV(例如“条纹纹理”)方向上的导数。

Explaining predictions of the zebra class instances in terms of the “striped textures” concept as drivers using the Testing with Concept Activation Vectors (TCAV) method. The CAV is the vector orthogonal to the boundary of a linear classifier that separates given network layer activations for concept and non-concept examples. The TCAV then uses directional derivative of given class logit to measure model prediction sensitivity to changes in input towards the direction of the given concept.

解释系列

事后解释旨在传达一些信息,说明对于给定的人工智能模型,目标是如何由驱动程序引起的。命运分类的解释族方面决定了该信息的形式。至关重要的是,必须选择一个解释族,使得它的信息内容容易被用户(通常是人类)理解(也就是可解释的)。此外,应该选择它来生成尽可能忠实于模型复杂性的解释(也就是完整的解释)。通常在选择一个解释族以确保可解释性和完整性时会有一个折衷。

重要性分数(又名显著性热图)可能是最常见的解释家族类型。个人重要性分数旨在传达每个解释驱动因素对给定目标的相对贡献;换句话说,分数越高,对司机的影响越大。例如,Lundberg 和 Lee 提出了SHAP(SHapley Additive exPlanations),这是一个以附加特征属性的形式生成事后局部解释的统一框架。该框架使用 Shapley 值来估计每个输入特征对于给定实例预测的重要性。Shapley 值是合作博弈理论中估计联盟成员边际贡献的经典方法。边际贡献是通过对玩家可能被添加到游戏中的每个可能序列进行*均而获得的。

通常在选择一个解释族时会有一个权衡,以确保可解释性和完整性。

决策规则是另一个常见的解释族。每个决策规则通常是“ if condition then outcome ”的形式,其中 outcome 表示 AI 模型的预测,而 condition 是在输入特征上定义的简单函数。决策规则可以是有序列表,又名决策列表,也可以是无序集合,又名决策集合 。例如, KT 方法提取一组规则来完整地描述神经网络模型。然而,这种基于全局规则的解释通常计算成本太高,并且无法完全捕捉现代深度网络的复杂性。为了缓解这些缺点,Ribeiro 等人提出了 Anchors 方法来提取解释任何黑盒模型的实例预测的局部规则。

决策树是一个类似于决策规则的解释族,甚至可以线性化为一组决策规则。与决策规则不同,它们以图表的形式构建,其中内部节点表示对输入要素的条件测试,叶节点表示模型结果。此外,与决策规则相反,在决策树中,每个输入示例只能满足从根节点到叶节点的一条路径。 DeepRED 方法提供了提取决策树来逼*给定深度神经网络模型的解决方案。使用 DeepRED 方法生成的决策树显示出高质量。然而,它们可能相当大,因此很难解释,而且获取成本也很高。

依赖图是另一种解释。它们旨在传达目标价值如何随着给定解释驱动因素价值的变化而变化,换句话说,目标价值如何取决于驱动因素的价值。部分相关图(PDP) 就是这种解释的一个例子。PDP 将预期模型预测显示为给定特征值的函数。个体条件期望(ICE) 是这类解释的另一个例子。对于给定的实例,ICE 将预期的模型预测显示为给定特征值的函数。

上面讨论的常见解释族通常假设目标是一个简单的数字或分类变量。当目标更复杂且具有某种形式的结构时,它们可能是不够的。例如,重要性分数解释不能正确地描述语言翻译模型的预测,其中输入单词序列被翻译成输出单词序列。Alvarez-Melis 和 Jaakkola 提出了结构化输出因果合理化器(SOCRAT) 方法,用于提取这种模型的二部图形式的解释。第一组节点表示模型的输入单词,而第二组节点表示模型输出单词。边缘表示每个输入单词对每个输出单词的估计影响。

Explaining complex predictions of a sequence-to-sequence model, e.g. language translator, using a bi-partite graph as explanation family and the SOCRAT approach: first a perturbation model is used to obtain perturbed versions of the input sequence. Next, associations between input and predicted sequence are inferred using a causal inference model. Finally, the obtained associations are partitioned and the most relevant sets are selected.

当解释一个模型的内部工作时,解释族通常是某种类型的定制可视化以适应目标模型的架构。例如,Strobelt 等人开发了 LSTMViz ,这是一种工具,用于理解被称为长短期记忆(LSTM)的特殊神经网络家族的内部工作方式,旨在从序列数据中学习。其核心是,LSTMViz 提供了一个解决方案,在处理一系列输入数据时,可视化 LSTM 网络的所谓隐藏状态的进展。另一个例子是 GAN Lab 交互式可视化工具。它通过可视化在此过程中产生的中间结果,使非专家能够更好地理解训练生成性对抗网络(GAN)模型的复杂性。

口头解释也许是最用户友好的解释家族,因为它们通常以类似于人类解释的自然语言形式提供。这一领域的早期工作主要是基于模板的,因此相当有限。基于深度学习的更*期的方法能够生成自然语言文本作为调整,或者甚至是多模态的,即用视觉调整增强的文本。尽管一开始很吸引人,但这种解释有两个主要的局限性。首先,它们(充其量)是对模型内部逻辑的间接解释。其次,在理解模型预测误差时,它们几乎没有用处。

反事实解释描述了将目标变为预定义结果所需的解释驱动因素的最小变化。它们是一个越来越重要的解释家族。通常,解释驱动因素是输入要素,目标是模型预测。考虑一个用于拒绝申请的贷款和客户借贷的模型。对这一拒绝决定的反事实解释可能是,“如果申请人有 10,000 美元的年收入,申请就会被接受。”对于一个给定目标,通常会有多种反事实解释。这个问题可以通过根据必须更改的功能的数量以及这些功能更改是否确实可行来选择最佳解释来缓解。为了产生反事实的解释,我们可以定义一个损失函数,该函数倾向于对尽可能少的输入特征进行最小的改变,以使模型预测尽可能接*期望的结果。这个损失函数可以直接优化或者使用所谓的生长球算法

反事实解释描述了将目标变为预定结果所需的解释驱动因素的最小变化。

解释评估方法

命运分类学是指用于获得解释的计算过程,作为估计者方面。解释估计方法相当广泛,但它们主要在模型适用性和潜在机制方面有所不同。我们将根据这两种变异的来源,给出解释估计方法的概述。

一些评估方法是模型不可知的,可以应用于任何黑盒模型,而另一些评估方法只为特定的模型架构开发。例如,前面讨论的 LIME 方法在理论上可以应用于任何模型,只要我们可以构造有意义的输入扰动并观察相应的模型输出。这并不意味着用 LIME 或任何模型不可知的估计器生成的解释总是信息丰富的。例如,LIME 使用的局部扰动机制必须扩展到能够解释具有复杂输出的模型

解释估计方法相当广泛,但它们主要在模型适用性和潜在机制方面有所不同。

特定于模型的方法通常针对深度神经网络,因为它们既流行又难以理解。例如,梯度加权类激活映射(Grad-CAM) 方法被开发用于产生专门针对卷积神经网络的视觉解释。它获取最终卷积层的特征图,然后基于目标类相对于信道的梯度对该特征图中的每个信道进行加权。接下来,应用跨类别梯度的两个维度的全局*均池,然后应用 RELU 激活来获得视觉解释。

解释评估方法可以根据其潜在的机制进行检查我们已经确定了评估解释的四种主要机制,即扰动、反向传播、代理和激活优化。

一些事后解释方法是基于扰动 机制。其思想是产生对期望的解释驱动因素的扰动,分析它们对给定目标的影响,并使用解释的重要性分数族对其进行总结。例如,前面讨论过的 LIME 方法,通过生成输入特征的局部扰动并使用线性模型捕捉它们的影响,根据输入特征提取实例预测的局部解释。类似地,对于给定的实例预测,影响函数方法通过扰动训练样本的权重并估计其对模型参数的影响以及最终的模型损失,根据训练样本生成实例预测的解释。

扰动机制方法有两个主要优点:它们通常容易实现,并且它们不局限于特定的模型架构。它们也有缺点:它们的计算成本相对较高,因为它们需要通过模型运行大量扰动输入来生成解释。对于具有高维输入的模型来说,这尤其是一个挑战,因为所需扰动的数量随着特征的数量快速增长。此外,扰动机制可能低估了那些贡献已经饱和的特性的重要性,因为扰动它们将不再产生影响。最后,构建有意义的驱动扰动可能是一个挑战。例如,每个特性通常会被影响最大的无信息值所取代。对无信息参考值依赖于试探法或特别选择可能导致不可靠的解释。特别是,为了确保解释与训练数据分布的一致性,参考值必须从似是而非的替代值中选择。

Shapley 值框架可以被认为是扰动机制的一个特例。这个框架背后的关键直觉是,由于解释驱动因素之间的相互作用,每个驱动因素对给定目标的贡献可以根据已经输入给定模型的其他驱动因素而变化。因此,通过检查输入其他驱动因素的所有可能的扰动,计算每个驱动因素的边际贡献,即 Shapley 值。前面讨论过的著名的 SHAP 方法,依靠这个框架来提取模型实例预测的局部解释。计算精确的 Shapley 值可能会很昂贵。因此,针对特定的模型架构,如树系综深度网络,已经提出了许多有效的 Shapley 值估计方法。

量化输入影响(QII) 度量是一系列度量,用于捕捉模型输入对其输出的影响程度。他们通过干预构建一个假设的输入分布,然后量化一个感兴趣的量的结果差异,它可以是一个实例或一组模型输出。原则上,它们可以被归类为一种特定类型的扰动机制,可以估计单个或一组输入特征对一个实例或一组模型输出的影响。重要的是,在估计输入要素相关性的影响时,QII 测量会仔细考虑输入要素相关性。

Shapley 值框架可以被认为是扰动机制的一个特例。

反向传播机制通常用于生成深度网络模型的事后解释。得到的解释往往是模型的输入特征方面的重要性分数。为了获得这些分数,反向传播机制从产生给定目标的层开始,例如某个类 logit,并且估计在该目标之前的层中神经元的贡献。这一过程逐层重复,直到获得输入图层要素的贡献。有几种基于反向传播的可解释性方法。一些最著名的例子包括逐层相关性传播(LRP)深度提升引导反向投影(GB)*滑梯度集成梯度(IG)

这些方法的主要区别在于它们如何估计前一层的贡献。特别地,如在 GB 和 SmoothGrad 方法中,可以基于目标神经元激活相对于前一层神经元的部分梯度来估计贡献(又名灵敏度分析)。或者,可以通过将目标神经元激活值分解为来自前一层的组成值(也称为分解方法)来估计它们,如在 LRP 和深度提升方法中。使用灵敏度分析估计的贡献主要涉及目标神经元激活的局部变化,而不是其值。与 IG 方法一样,将基于灵敏度的贡献乘以前一层神经元的激活可以缓解这个问题。事实上,已经证明基于分解的贡献方法和那些类似于 IG 方法的方法是密切相关的

Explaining predictions of a neural network in term of input features using the Layer-wise Relevance Propagation (LRP) method: first, a standard forward pass is applied to the network and each layer’s activations are collected. Next, the score obtained at the network output is propagated backwards through the network, using a set of propagation rules.

基于反向传播机制的方法只需要一次或几次推理通过模型来生成解释。与基于扰动机制的方法相比,这使得它们的计算效率更高。另一方面,反向传播机制仅适用于深层网络。此外,使用这种机制产生的解释可能不可靠。一些最*的方法,如 DeepLIFT 和 LRP,有望提供更有力的解释。然而,DeepLIFT 的性能很大程度上取决于其参考点的选择,这必须由用户决定。同样,LRP 已经被证明有数值不稳定问题

获得复杂模型的事后解释的另一种方法是用一个具有可比性能的更简单、更容易解释的模型来模仿它,即代理机制。这种机制通常用于用更具解释力的模型(如决策树或决策规则)来取代复杂的深度神经网络。这方面的早期工作是只适用于浅层神经网络。然而,最*的方法是针对深度神经网络模型的。例如,前面讨论过的 DeepRED 方法,能够构建忠实代表深度网络模型的决策树。然而,生成的决策树可能非常大,因此不太容易解释。

缓解这一挑战的一种方法是学习不全局模仿复杂模型行为的代理模型。例如,锚方法旨在提取仅模仿给定模型的实例预测的局部决策规则。类似地, BETA 方法学习少量决策集,每个决策集在其输入特征空间的明确定义的区域内模拟给定复杂模型的行为。

激活优化 机制通常用于生成深层网络模型内部工作原理的解释。它的解释是通过搜索一个输入模式获得的,该输入模式对作为目标的模型的内部组件产生最大(或最小)响应,例如一个特定的神经元。这个搜索问题又可以被公式化为优化问题,并使用基于梯度的方法来解决。该过程类似于用于训练模型的过程,其中优化目标是输入特征而不是模型参数。

不幸的是,在没有添加任何正则化的情况下,使用激活优化机制获得的输入模式通常类似于高频噪声。各种各样的正则化约束已经被提出来缓解这个挑战。例如,我们可以尝试通过明确惩罚相邻输入特征之间的差异来直接降低高频噪声。然而,这种正则化约束也可能抑制合法的高频特征,例如输入图像中的边缘。

激活优化机制通常用于生成深层网络模型内部工作的解释。

下一步是什么?

已经提出了许多方法来解释预先开发的人工智能模型。它们的解释对象、驱动程序、家族和提取机制各不相同。XAI 是一个活跃的研究领域,新的和改进的方法不断发展。如此多样的选择使得 XAI 从业者很难针对特定应用采用最合适的方法。

为了帮助缓解这一挑战,本系列的附录展示了一些最著名的后建模可解释方法的快照。每种方法的特点是根据四个方面介绍的命运分类系统地定位在 XAI 文学的身体。此外,还概述了一些现成的 XAI 软件包。

特别感谢 泽维尔·斯内尔格罗夫埃尔纳兹·巴尔尚林赛·布林圣地亚哥·萨尔西多 ,以及 情妇玛侬·格鲁阿兹 彼得亨德森 编辑。**

可解释人工智能的方法:预建模可解释性

原文:https://towardsdatascience.com/the-how-of-explainable-ai-pre-modelling-explainability-699150495fe4?source=collection_archive---------13-----------------------

人工智能可解释性是一个广泛的多学科领域,正在多个领域进行研究,包括机器学习、知识表示和推理、人机交互和社会科学。相应地,XAI 文献包括大量且不断增加的方法论。

有许多因素可以影响人工智能模型如何运行和做出预测,因此有许多方法来解释它们。这也部分是由于缺乏对 XAI 的一致认可的定义。一般来说,可解释性可以应用于整个人工智能开发流程。具体来说,可以在建模阶段之前(前建模可解释性)、期间(可解释建模)和之后(后建模可解释性)应用。

以下是一些最重要的 XAI 方法和途径的非穷尽性概述,分为这三个阶段:建模前的可解释性、可解释的建模和建模后的可解释性。

有许多因素可以影响人工智能模型如何运行并做出预测,因此有许多方法来解释它们。

The three stages of AI explainability: Pre-modelling explainability, Explainable modelling and post-modelling explainability.

建模前可解释性是不同方法的集合,其共同目标是更好地理解用于模型开发的数据集。这种方法的动机是,人工智能模型的行为在很大程度上是由用于训练它的数据集驱动的。

建模前可解释性

建模前可解释性文献可以分为四大类:探索性数据分析、数据集描述标准化、可解释特征工程和数据集总结方法。

建模前可解释性是不同方法的集合,其共同目标是更好地理解用于模型开发的数据集。

探索性数据分析

探索性数据分析的目标是提取数据集主要特征的摘要。该摘要通常包括数据集的各种统计属性,如其维度、均值、标准差、范围、缺失样本等。Google Facets 是一个强大的工具包的例子,可以从给定的数据集中快速提取这些属性。

作为一个例子,考虑一个简单的监督二进制分类问题,其中开发了一个模型来检测有缺陷和无缺陷的产品。假设所提供的数据集包含装配线的高架摄像机提供的大量图像,每个图像都被标记为有缺陷或无缺陷。让我们进一步假设为该模型开发的初步分类器模型表现不佳。检查缺陷和非缺陷图像的相对频率的探索性数据分析任务可以揭示类别不*衡问题,即缺陷图像比非缺陷图像少得多。在训练数据集中发现这一挑战后,可以利用各种解决方案来缓解这一挑战并提高分类器的性能。

An example of datasets with identical mean and standard deviation, and different graphs to demonstrate the importance of visualization in exploratory data analysis.

然而,在分析数据集时,仅仅依靠统计属性通常是不够的。例如,已经表明数据集可以有相同的统计属性,但在图表上显示时却有不同的外观。因此,数据可视化方法构成了探索性数据分析机制的一大部分。数据可视化提供了多种方法来使用各种类型的图表绘制数据集。选择适当类型的图表取决于给定的数据集、给定的应用程序以及我们想要传达的特定统计属性。

现实世界的数据集通常是复杂的和高维的,也就是说,具有大量的要素。可视化这样的高维数据可能是一个挑战,因为人类只能轻松地想象最多三个维度。

在分析数据集时,仅仅依靠统计属性通常是不够的。

应对这一挑战的一种方法是使用专门类型的图表,例如*行坐标图,以允许人类感知大于三的维度。或者,可以将高维数据集投影到低维表示中,同时尽可能保留其底层结构。这就是降维方法的目标。这一类别中的一些流行方法包括主成分分析(PCA)和 t-SNE。嵌入式投影仪工具包提供了这两种方法的简单易用的实现。如果已知数据集的基础结构是相对线性的,那么主成分分析是首选方法,否则,t-SNE 通常是正确的选择。不幸的是,t-SNE 在应用于大型数据集时速度太慢。在这种情况下,可以使用最*的替代方法,如 UMAP 降维技术。事实上,UMAP 被认为比 t-SNE 更具扩展性,也更准确。

数据集描述标准化

数据集通常是在文档不足的情况下发布的。标准化可以确保数据集的创建者和用户之间的适当沟通,并有助于缓解人工智能模型中的系统偏差或数据滥用等问题。在这一观察的推动下,已经提出了许多关于标准化数据集描述的建议。

其中一些建议包括数据集的数据表、数据表数据集营养标签。它们本质上都为伴随数据集的特定信息提出了各种模式,以记录数据集的创建、组成、数据收集过程、法律/伦理考虑等。例如,数据集营养标签框架建议在数据集文档中包含几个类似于包装食品营养事实标签的信息模块。与消费者可以根据营养事实选择他们想要的食物的方式类似,人工智能专家可以使用数据集营养标签来有效地选择最佳数据集以用于建模目的。

The information modules proposed by the Dataset Nutrition Label framework as a standard for providing a distilled yet comprehensive overview of datasets.

可解释的特征工程

除了对提高人工智能模型的性能非常有用之外,数据集可解释性还可以有助于开发可解释的模型,并使事后模型解释更具可解释性。

特征属性是一种流行的事后解释类型,它涉及确定输入特征对于给定模型预测的相对重要性。为了让特性属性解释对最终用户更有用,相关的特性本身也应该是可解释的,换句话说,用户应该能够赋予它们直观的含义。换句话说,的解释和他们用来解释模型预测的特性一样好。可解释的特征工程旨在解决这一挑战。

实现可解释特征工程有两种主要途径,即特定领域和基于模型的特征工程。特定于领域的方法依赖于领域专家的知识和从探索性数据分析中获得的洞察力来提取和/或识别特征。例如,由于冰/雪与云的定性相似性,检测北极卫星图像中的多云像素是一项具有挑战性的任务。遵循特定领域的特征工程方法,Shi 等人开发了三个可解释的有效特征,由二元分类器使用来解决这个问题。

解释的好坏取决于它们用来解释模型预测的特征。

另一方面,基于模型的特征工程方法应用各种数学模型来揭示数据集的底层结构。一些相关的方法包括聚类和字典学习。另一个有趣且相关的研究领域是解开表征学习,其目的是学习给定数据集的表征,其中其生成潜在因素是孤立的。这些潜在因素可以被认为是描述数据集的可解释特征。例如,上图显示了一个名为VAE的解开表征学习模型,该模型使用从不同角度拍摄的椅子图像数据集(也称为 3D 椅子数据集)进行训练。如图所示,该模型似乎已经成功地隔离了该数据集的三个潜在因素,即方位角、椅子宽度和椅子腿风格。

Manipulating three latent factors of the 3D chairs dataset, namely, azimuth angle, width, and leg style, using the ß-VAE distentagled representation learning approach.

数据集汇总

基于案例的推理是一种可解释的建模方法,它根据某种距离度量,基于与之相似的训练样本(案例)对给定样本进行预测。这些相似的训练样本可以与模型预测一起呈现给最终用户,作为解释。然而,基于案例的推理方法的一个重要限制是需要存储整个训练数据集,这对于非常大的数据集来说成本太高或者根本不可能。缓解这个问题的一种方法是存储仍然代表数据集本质的训练数据集的子集。数据集摘要旨在应对这一挑战。

总结一个数据集通常意味着寻找一个代表样本(也称为原型)的最小子集,以提供它的浓缩视图。这个领域的早期工作可以追溯到 20 世纪 80 年代,使用的方法有 K-medoid 聚类。最*,主要由于大数据集可用性的增加,人们对数据摘要的兴趣重新燃起。例如,已经为场景摘要文档摘要分类任务提出了许多方法。第一种方法依赖于专门的聚类算法,而后两种方法都被公式化为优化问题。此外,所有这些方法都提取目标应用程序的数据集摘要。

A random subset of prototype and criticism examples extracted for the USPS dataset using the MMD-critic data summarization method.

最*有人认为原型例子不足以理解大型复杂的数据集,我们也需要批评。一个批评是一组原型不能很好描述的通常(相对)罕见的数据点。Kim 等人提出了一种无监督学习方法来提取给定数据集的原型和批评,并进行人体研究来验证他们方法的结果。首先,给人类受试者展示一些动物种类的原型和批评图像。然后,他们被要求预测给定测试图像的类别标签。研究显示,同时看到原型和批评图像的人比只看到原型的人表现更好。

所谓的数据压缩与数据汇总有关。数据压缩的目标是构建一个更小的数据集替代物,以获得大致相同的分析结果。与数据汇总相比,替代数据集中的样本通常具有与之相关的权重。最*关于所谓的贝叶斯核心集的工作就属于这一类。换句话说,它可以被认为是一个在贝叶斯学习设置中公式化的数据挤压问题。

原型例子不足以理解大而复杂的数据集,我们也需要批评。

下一步是什么?

建模前可解释性是一组不同的方法,它们有一个共同的目标,那就是更好地理解可用于建模的给定数据集。通过预建模可解释性提取的数据相关的见解能够开发更有效、可解释和健壮的人工智能解决方案。

本系列的下一部分将关注人工智能开发的建模阶段。特别是,它探索了开发既可解释又可执行的人工智能模型的各种方法。

特别感谢 泽维尔·斯内尔格罗夫埃尔纳兹·巴尔尚林赛·布林圣地亚哥·萨尔西多 ,以及 情妇玛侬·格鲁阿兹 的宝贵意见由 彼得亨德森 编辑。**

精确与回忆中人的一面

原文:https://towardsdatascience.com/the-human-side-of-precision-vs-recall-36391f9d25e4?source=collection_archive---------23-----------------------

Photo by Charles DeLoye on Unsplash

作为数据科学家,我们花费大量时间思考各种数据转换、模型和评估标准的数学含义。但是,可悲的是,要了解我们的选择对真正的潜在人类的影响要难得多。

我认为这在很大程度上要归咎于最*关于定向广告如何可能操纵某人的精神状态或者善意的算法如何可能最终对整个种族群体产生偏见的担忧。

Photo by Con Karampelas on Unsplash

但是,我不想在这篇文章中谈论任何如此宽泛的东西;相反,我想把它带回家,谈谈我从事的一个数据科学项目,以及它如何让我思考我的选择对实际人类的影响。

一个学生会退学吗?

几年前我从事的一个项目主要是预测一个本科生是否会放弃他或她当前的学术专业。

想象一下,你是一个学术部门的首席顾问,你有一个【非常准确】的系统供你使用。你将能够生成一份最有可能从你的系里退学的学生的名单,然后通过延长辅导支持、帮助选课或者仅仅是给这些学生一个表达他们的挣扎的机会来采取行动

Photo by Helloquence on Unsplash

如何知道自己的模型是否“好”?

因此,我和我的团队一起工作,根据 15 年的学生数据建立了预测学生辍学的模型。最终,我们需要弄清楚任何给定的模型有多“好”,这样我们才能交付“最好的”模型。

通常在谈论数据科学中判断一个模型时,第一个出现的术语是【precision】****【recall】

在学生辍学问题的背景下,

  • 精度是实际上最终辍学的预测辍学比例
  • 回忆是实际辍学者中被预测辍学者的比例

应该用精确还是回忆?

那么…我们应该用哪一个来评估我们的模型呢?为了回答这个问题,我们需要找出使用其中一种方法的缺陷。

这是设置。我们有 100 个经济学专业20 个会继续从专业退学,而另外的 80 个会继续从专业毕业。

此外,我们只有足够 20 名学生的咨询会议,所以我们最好让我们的预测算数!

使用精度

假设我们的模型预测 100 个学生中有 10 个会辍学:

在这种情况下,预测的 10 个退出者中,所有 10 个最终都将退出,因此我们的精度是 10/10 = 100% 。所以根据 precision,我们做得很好!对吗?

嗯,不是真的……

我们只抓到了 20 个学生中的 10 个会继续退学,完全忽略了其中的 50%

当我们看到之外的仅仅是高精度带来的数字和兴奋,并思考我们的结果对基础学生的实际意义时,我们会更好地认识到精度本身可能不是我们的正确指标。

使用召回

那么,回忆当然是正确的标准了?

假设我们的模型碰巧预测到所有 100 名学生都会辍学!

那么,在这种情况下,20 个实际上可能会辍学的学生中,我们正确地识别出了所有 20 个学生,因此我们的召回率是 20/20 = 100% ,看起来这个模型表现得非常好。

但是,显然这里有一个突出的问题。如果所有 100 名学生都被预测要辍学,那如何帮助我们分配那 20 次咨询会议?!

以人为本的模式评估方法

似乎我们都输了。单独使用精度有可能抓不到可能辍学的学生。而且,单独使用回忆有预测太多学生会辍学的风险。

让我们翻转心态。我们首先考虑数据科学,然后观察它对学生和部门的影响。

相反,让我们站在系的立场上,想想每个结果对学生的影响。

对于任何给定的学生,有四种可能的情况:

  1. 这个学生将毕业,我们预测他们也将毕业

这是个好结局!我们正确地认识到一个学生不需要稀缺的咨询资源。让我们以此为基线,在这些情况下 奖励 1 点

2.这个学生会退学,我们预测他们也会退学:

这样更好!因为我们的项目都是关于抓住辍学的学生,我们应该给这些案例更多的分数。让我们把这些情况下的 奖励 2 分

3.这个学生将会毕业,但是我们预测他们会退学

这很糟糕,因为我们可能会把稀缺的咨询资源给这个学生,尽管他们并不需要。在这个过程中,我们潜在地从一个真正需要他们的学生那里拿走了咨询资源。让我们在这些情况下 扣除 4 分

4.这个学生将会辍学,但我们预测他们会毕业:

这可能是最糟糕的情况。我们不会给这个学生咨询资源,因为他们被标记为毕业,但实际上我们只是让他们无助,没有做任何事情来阻止他们辍学。让我们在这些情况下 扣除 8 分

我们可以在下面的成本矩阵中对此进行总结:

最高分 我们能拿到多少?嗯,如果我们正确识别所有 80 名最终毕业生 (+1 乘以 80 = 80)和 正确识别所有 20 名最终辍学者 (+2 乘以 20 = 40),则总分为120

最低分我们能得到什么?嗯,如果我们将所有 80 名最终的毕业生* 错误分类为 (-4 乘以 80 = -320),将所有 20 名最终的辍学者 (-8 乘以 20 = -160),总分数为 -480***

既然我们的分数范围是从 -480 到 120 ,我们就把 加 480 到所有分数 把这个范围映射到 0 到 600 这样我们就可以取百分比了。

本质上,我们已经抛弃了固定的性能指标,如精确度和召回率,并创建了我们自己的上下文感知成本函数,在我们想要的确切位置奖励和惩罚模型。**

当然,调整成本矩阵中的精确数字是一门艺术,应该与所有相关方合作完成。

新指标的表现如何?

让我们来测试一下新的性能指标!

如果我们预测只有 10 名学生将会辍学,那么它会给出多少分呢?

嗯,我们正确地识别了所有 80 名最终毕业生(+1 乘以 80 = 80),我们正确地识别了 10 名最终辍学者(+2 乘以 10 = 20),我们错误地分类了 10 名最终辍学者(-8 乘以 10 = -80),总得分为 20,加上 480,最终得分为 600 分中的 500 分或 83%。很好,但这种模式绝对有改进的空间。

再考一次!在我们预测每个人都会退出的情况下,新的指标会给出多少分?

我们正确地识别了所有 20 名最终辍学者(+2 乘以 20 = 40),并且我们错误地将所有 80 名最终毕业者(-4 乘以 80 = -320)归类为总分-280,再加上 480,得到的最终分数为 600 分中的 200 分或 33%* 。这…真的很糟糕,这是有道理的,因为从部门的角度来看,预测每个人都将退出是一个可怕的策略!***

希望这一探索有助于展示为什么我们作为数据科学家,有时需要超越数字和统计数据。最终,我们正在解决的大多数问题都会影响到真实的人的生活。**

难道这些人的经历不应该成为我们工作的一部分吗?

感谢阅读~

百页机器学习书籍书评

原文:https://towardsdatascience.com/the-hundred-page-machine-learning-book-book-review-72b51c5ad083?source=collection_archive---------4-----------------------

机器学习的起点和终点。10 分钟 100 页。准备好了吗?

Photo by the author. Taken from the video version of this article on YouTube.

百页机器学习书是我开始学习机器学习时就希望拥有的书。你可以在一天内看完。这花了我不止一天的时间,但我还是熬过来了。我慢慢来。在突出的地方划线,在封面做笔记,我想重温的页面。完成它并不是重点。这本 100 页的机器学习书是一个参考,你可以不断回头去看。这也是我打算做的。

根据这本书和作者安德烈·布尔科夫的风格,我们将保持这篇文章简短扼要。

The pages I wanted to remember for later (most of them). And a typical page of notes.

你应该买这本书吗?

是的。但是你不需要。你可以先看一下。但是你应该买一本,拿着它,读它,把它放在你的咖啡桌上。然后当你的朋友问‘什么是机器学习?’,你就能告诉他们。

这本书是给谁的?

也许你正在学习数据科学。或者你听说过机器学习无处不在,你想了解它能做什么。或者你熟悉应用机器学习的工具,但你想确保你没有遗漏任何东西。

在过去的两年里,我一直在研究和实践机器学习。我建立了自己的人工智能硕士学位,这导致我成为了一名机器学习工程师。这本书现在是我课程的一部分,但如果我刚开始的时候它就在外面,那它从一开始就应该在那里。

百页机器学习书我需要哪些前期知识?

了解一点数学、概率和统计知识将会有所帮助,但是这本 100 页的机器学习书籍已经写成了一种方式,你可以在学习过程中获得其中的大部分知识。

所以这个问题的答案仍然是开放的。我从一个机器学习工程师的角度来看,我知道一些事情,但学到了更多。

如果你没有机器学习的背景,这并不意味着你应该回避它。

我把它看作是机器学习的开始和继续。看一遍。如果没有意义,再读一遍。

为什么要读?

你看过标题,看过广告。机器学习,人工智能,数据,它们无处不在。通过阅读这篇文章,你已经与这些工具互动了几十次。机器学习用于向你在线推荐内容,它有助于维护你的手机电池,它为你上次航班使用的预订系统提供动力。

你不知道的事情看起来很可怕。媒体在将机器学习放入那些太难的桶中的一个方面做得很好。但是这本上百页的机器学习书改变了这一点。

现在,在一天的时间内,或者更长的时间,如果你像我一样,你将能够破译哪些标题你应该注意,哪些不应该。或者用机器学习的术语来说,从局部最小值到全局最小值——不要担心,这本书会涉及到这一点。

这本书会教你关于机器学习的一切吗?

号码

那它教什么呢?

什么管用。

这是最简单的描述方式。机器学习的领域非常广阔,因此传统书籍远远超过 100 页。

但是上百页的机器学习书涵盖了你应该知道的内容。

介绍了不同种类的机器学习。

监督学习,那种你有数据和数据标签的学习。例如,您的数据可能是一系列文章,标签可能是这些文章所属的类别。这是最常见的机器学习类型。

无监督学习或当你有数据但没有标签时。想想同样的文章,但是现在你不知道它们属于哪一类。

半监督学习就是你的一些文章有标签,而另一些没有。

强化学习包括教代理(计算机程序的另一种说法)根据规则和空间定义的反馈导航空间。一个计算机程序(代理)在棋盘(空间)中移动棋子(导航)并因获胜而获得奖励(反馈)就是一个很好的例子。

第 2 章——让数学再次变得伟大(一直如此)

第二章,深入探究你从高中起就没见过的希腊符号。任何机器学习资源附带的那些。一旦你知道它们的意思,阅读机器学习论文就不会那么可怕了。

你会发现这样的例子。

This sentence explains the notation of set, element of and intersection all with an example. Screenshot from the book, annotations mine.

这种语言贯穿全书。许多技术术语用一两行文字来描述,毫不含糊。

什么是分类问题?

分类是自动给一个未标记的例子分配一个标签的问题。垃圾邮件检测是分类的一个著名例子。

什么是回归问题?

回归是在给定一个未标记的例子的情况下,预测一个实值标记(通常称为目标)的问题。根据房屋特征(如面积、卧室数量、位置等)估计房价估值是回归的一个著名例子。

我从书上拿了这些。

第 3 章和第 4 章——最好的机器学习算法是什么?为什么?

第 3 章和第 4 章展示了一些最强大的机器学习算法,以及是什么让它们成为学习算法。

您会发现线性回归、逻辑回归、决策树学习、支持向量机和 k *邻的工作示例。

有大量的数学符号,但没有什么是你在第二章之后不具备的。

布尔科夫在建立理论,解释问题,然后为每种算法提出解决方案方面做得非常出色。

有了这个,你会开始明白为什么发明一个新的算法是一种罕见的做法。是因为现有的都很擅长自己做的事情。作为一名初露头角的机器学习工程师,你的任务是找出如何将它们应用于你的问题。

第 5 章—基本实践(1 级机器学习)

现在你已经看到了最有用的机器学习算法的例子,你如何应用它们呢?你如何衡量他们的有效性?如果他们工作得太好(过度合身),你该怎么办?或者不够好(不合身)?

您将看到数据科学家或机器学习工程师花费了多少时间来确保数据准备好用于学习算法。

这是什么意思?

这意味着将数据转化为数字(计算机在其他方面做得不好),处理缺失的数据(你不能在任何东西上学习),确保所有数据都是相同的格式,合并不同的数据片段或删除它们以从你所拥有的东西中获得更多(特征工程)等等。

然后呢?

一旦你的数据准备好了,你就要选择正确的学习算法。不同的算法在不同的问题上效果更好。

这本书涵盖了这一点。

下一步是什么?

你评估你的学习算法学到了什么。这是你必须向他人传达的最重要的事情。

这通常意味着将数周的工作浓缩成一个指标。所以你要确保你做对了。

99.99%的准确率看起来不错。但是精度和召回率呢?或者 ROC 曲线下面积(AUC)?有时候这些更重要。第 5 章的后端解释了原因。

第 6 章—风靡全球的机器学习范式、神经网络和深度学习

你看过照片了。旁边有深度学习神经网络的大脑图像。一些人说他们试图模仿大脑,另一些人则认为没有关系。

重要的是你如何使用它们,它们实际上是由什么组成的,而不是它们是由什么组成的。

神经网络是线性和非线性函数的组合。直线和非直线。使用这种组合,你可以绘制(建模)任何东西。

这本一百页的机器学习书籍讲述了神经网络和深度学习最有用的例子,如前馈神经网络、卷积神经网络(通常用于图像)和递归神经网络(通常用于序列,如文章中的单词或歌曲中的音符)。

深度学习就是你通常会听到的人工智能。但是读完这本书,你会意识到它是人工智能,也是你在前几章学到的不同数学函数的组合。

第 7 章和第 8 章——运用你所学到的知识

现在你已经得到了所有这些工具,你应该如何以及何时使用它们呢?

如果你有文章,你需要一个算法来为你标记,你应该使用哪一个?

如果你只有两类文章,体育和新闻,你就遇到了二元问题。如果你有更多,体育,新闻,政治,科学,你有一个多类分类问题。

如果一篇文章可以有多个标签会怎样?一个关于科学和经济。那是一个多标签的问题。

把你的文章从英语翻译成西班牙语怎么样?这是一个序列对序列的问题,一个英语单词序列对一个西班牙语单词序列。

第 7 章涵盖了这些以及集成学习(使用一个以上的模型来预测同一件事),回归问题,一次性学习,半监督学习等等。

好吧。

所以你已经对什么时候可以使用什么算法有了一点了解。接下来会发生什么?

第八章深入探讨了你将会遇到的一些挑战和技巧。

不*衡类是一个标签有更多数据而另一个标签没有足够数据的挑战。想想我们的文章问题但是这次我们有 1000 篇体育文章,只有 10 篇科学文章。你在这里应该做什么?

人多力量大吗?将试图预测同一事物的模型结合起来可以得到更好的结果。做这件事的最好方法是什么?

如果你的一个模型已经知道了一些东西,你如何在另一个模型中使用它?这种做法被称为迁移学习。你可能会一直这样做。把你在一个领域所知道的东西用在另一个领域。迁移学习做同样的事情,但是使用神经网络。如果你的神经网络知道维基百科文章中的单词出现的顺序,是否可以用来帮助对你的文章进行分类?

如果一个模型有多个输入,比如文本和图像,会怎么样?或者多个输出,比如你的目标是否出现在图像中(二进制分类),如果出现,在哪里(坐标)?

这本书涵盖了这些。

第 9 和 10 章——无标签学习和其他形式的学习

无监督学习就是你的数据没有标签。这是一个困难的问题,因为你没有一个基本事实来判断你的模型。

这本书着眼于处理未标记数据的两种方法,密度估计和聚类。

密度估计试图指定一个样本落在一个数值范围内的概率,而不是取一个单一的值。

聚类的目的是将相似的样本分组在一起。例如,如果你有未标记的文章,你会期望体育文章比科学文章更紧密地聚集在一起(一旦它们被转换成数字)。

即使你有标签,你将面临的另一个问题是有太多的变量供模型学习,而没有足够的样本。解决这个问题的实践被称为降维。换句话说,减少模型需要学习的东西的数量,但仍然保持数据的质量。

要做到这一点,你将看到使用主成分分析(PCA),统一流形*似和投影(UMAP)或自动编码器。

这些听起来很吓人,但是你已经在前几章中为理解它们打下了基础。

倒数第二章通过其他形式的学习,如学习排名。比如谷歌用来返回搜索结果的东西。

学会推荐,就像媒体用什么来推荐你读的文章。

和自我监督学习,在单词嵌入的情况下,通过算法读取文本并记住哪些单词出现在其他单词面前来创建单词嵌入。它是自我监督的,因为相邻单词的出现就是标签。例如, dogcar 更有可能出现在带有宠物的句子中。

不断给予的书:伴随的维基

上百页的机器学习书上贴满了二维码。对于那些课外活动,二维码链接到每章的附带文件。额外的材料包括代码示例、论文和参考资料,您可以在其中更深入地研究。

An example of a QR code in the book and what it leads to.

最好的事?

布尔科夫自己用新材料更新维基。进一步复合从这里开始并在这里继续进行机器学习标签。

它不包括什么?

机器学习的一切。那些书有 1000 多页。但是上面的主题足以让你开始并坚持下去。

第 11 章——什么没有被覆盖

书中没有深入讨论的主题是那些尚未在实际环境中证明有效的主题(并不意味着它们不能有效),没有上述技术那样广泛,或者仍在大量研究中。

这些方法包括强化学习、主题建模、生成对抗网络(GANs)和其他一些方法。

结论

这篇文章开头太长了。我回去把多余的部分删掉了。布尔科夫启发了我。

如果你想开始机器学习,或者如果你像我一样是一名机器学习实践者,你想确保你正在实践的东西与有效的东西一致。获得百页机器学习书

看完,买了,重读。

你可以在 YouTube 上找到这篇文章的视频版本。否则,如果你有任何其他问题,随时联系注册更新我的作品

魔力象限、酷供应商和困惑客户的炒作循环

原文:https://towardsdatascience.com/the-hype-cycle-of-magic-quadrants-cool-vendors-and-confused-clients-b8773d64538c?source=collection_archive---------16-----------------------

Photo by Tom Roberts on Unsplash

对 Gartner 及其最*的分析峰会的综述

这几天都在下 AI 大会。如果你不知道该去参加哪一个,不知道该如何看待这些宣传,你并不孤单。它需要认真努力来识别有实质内容的事件,然后将营销言论与行业情报分开,最后将学到的东西付诸行动。

本月早些时候,我参加了在奥兰多举行的高德纳数据与分析峰会。超过 3000 人聚集在一起,在 5 天内进行了 150 多次会议,能量水*是显而易见的。从 111 家供应商、研讨会和 100 多名研究分析师的一对一展示中,这听起来更疯狂。

在这篇文章中,我将尝试解开 Gartner 精心构建的这个神秘的生态系统。我们将会看到为什么买家高度重视它们,以及是什么让卖家不择手段地在其中占有一席之地。我将概括介绍他们的分析会议和讨论的主要行业趋势。

Gartner,对于外行来说

Gartner 涉足研究和咨询领域,广泛涉足技术&行业垂直领域。15,000 多名员工为 12,000 多名客户提供服务,没有多少人意识到这家发布“炒作周期”和“幻方图”的公司是一家 40 亿美元的巨头,在收入方面与纳斯达克或法拉利相当。

根据 Gartner 的年度报告,Gartner 的三大关键业务线是:

  • 研究 : 占收入约 75%的主要产品,包括 Gartner 的所有优秀产品——幻方图、炒作周期、优秀供应商、市场指南和研究报告。
  • 咨询 : 这包括他们为客户提供的定制解决方案,包括战略、基准和购买决策。
  • 事件 : 在世界各地举办的 70+会议,包括 Gartner Symposium/ITxpo 和 Gartner Analytics Summit 等热门会议。

虽然这本身听起来可能不寻常,但 Gartner 将所有这些产品编织在一起并与市场建立强有力的相互依赖关系的方式是非凡的。接下来我们将深入了解他们的超能力是什么。

Gartner 对生态系统的神奇掌控

研究和内容是推动 Gartner 引擎的战略资产。分析师显然是这个系统的核心,他们得到大量分析和市场研究的帮助。咨询和活动的其他两个产品依赖于此,并兼作销售研究产品的渠道。

The Gartner Engine

将上述标准商业模式转变为高效飞轮的是买方(购买软件和服务的企业)和卖方(产品、*台和咨询公司)的加入。

鉴于 Gartner 已经建立的品牌,客户纷纷向他们寻求战略技术决策方面的建议。他们邀请分析师来讨论困扰他们业务的问题。他们购买研究报告,并参与他们的活动,学习如何实施转型计划。

这种战略层面的建议让 Gartner 对资金的流向产生了巨大的影响。Gartner 积极推荐供应商供客户考虑,并分享如何评估他们的指导方针。对于供应商来说,这使得 Gartner 成为一股不可忽视的力量。

Gartner and the Clients (such as Organizations buying analytics or other technology)

Gartner 积极拉拢供应商,承诺他们可以先睹为快,了解企业真正想要的是什么。供应商很乐意排队等待 Gartner 的服务,以吸引分析师并向他们简要介绍自己的产品。他们花钱学习如何更好地销售,他们购买研究报告,参加活动会见客户。

获得分析师的关注增加了供应商出现在报告中的机会。大多数营销团队都渴望在魔力象限中被提及。因此,供应商通过分享他们的案例研究和客户参考来争夺这个位置。

Gartner, Clients and Vendors (such as Organizations selling tech products, platforms or services)

虽然客户和供应商付费与 Gartner 交谈,但每一次这样的交谈也丰富了分析师独特的行业情报。这被吸收并作为思想领导流回到研究报告和陈述中,并由相同的团体支付费用。信息就是财富,我们可以看到智能递归循环是如何构建到系统中的。

所有这些都协同工作,因为 Gartner 获得了最有价值的资产,网络效应。随着市场的增长,Gartner 的地位只会上升。这种网络效应是新玩家的进入壁垒,赢家通吃,就像脸书、Instagram 或 LinkedIn 的社交网络一样。

由于各方都在为获得 Gartner 的关注而付费,公*与利益冲突之间只有一线之隔。虽然有一些反对的声音,但是到目前为止,Gartner 似乎把 T2、T4 管理得很好。任何盈利性企业的激进增长目标都会分散注意力。Gartner 的可信度很高,事情的结果如何还有待观察。

奥兰多 Gartner 峰会的真知灼见

People assembled for the Gartner Opening Keynote at Orlando

现在谈谈最*在奥兰多举行的分析峰会。8 个赛道跨越数据的所有方面——治理、工程、可视化、机器学习、领导力和战略,每个人都有自己的东西。

与所有其他活动的最大不同是,除了供应商赞助的讲座和嘉宾主题演讲之外,这里的每场会议都由 Gartner 分析师主持。这些会议很像 Gartner 研究报告,精心包装的市场总结提供了 2-5 年内 30,000 英尺的前景和趋势。

有着最高的供应商参与度,100 多个展品展示了行业提供的各种数据科学产品和*台,所有选项都在一个屋檐下。然而,参观者冒着听到人工智能、数字化转型和见解等流行词汇反复出现的风险!

在此次活动的几个要点中,我为本文挑选了 3 个:

1.蓄意破坏:你可能看不到的 7 种数字破坏

The 7 Digital Disruptions to watch out for (trends shown on the line, to the left; examples are on the right)

Daryl Plummer主持的这个会议很有见地,令人愉快。业务一直在被打乱,今天的许多巨头很快就会被赶下台。这次会议为领导者们提供了一个框架,让他们拥抱故意的破坏,抢先控制市场力量。他涵盖了 7 大趋势(见图片),预计将在中长期内实现。

2.数字乌托邦 2035——未来一瞥

Digitopia 2035 Trends: Will we soon rejoice in the ‘Joy Of Missing Out’, and splurge on privacy vacations?

Gartner 去年启动了“ Digitopia ”项目,来自 25 个国家的志愿者贡献了他们对 2035 年生活的看法的短篇故事。结合这些关于希望和渴望的故事以及对数字趋势的推断, Frank Buytendijk 对世界的发展方向进行了尝试。查看这个,获得一些真知灼见,以及我们如何扮演务实的未来主义者的角色。

3.设计冲刺创造创新文化

Sketchnote of the session by Jake Knapp

杰克·纳普是设计冲刺的创造者,也是 NYT 畅销书《冲刺T11》的作者。从他在 Encarta Encyclopaedia 担任产品设计师和在谷歌设计一系列产品的日子里,他展示了创新和快速实验的新方法是如何有所帮助的。听他充满活力、令人捧腹的讲话很有趣。下面是他的网站和类似的演讲视频

摘要

最后,Gartner 峰会提供了数据科学领域的鸟瞰图。这些会议通过对未来的长期展望,揭开了最新流行语的神秘面纱。这是一个与全国各地的数据从业者以及几乎所有参与竞争的供应商建立联系的好机会。

我参加这个活动已经有几年了,我倾向于同意一个参加者的观点,他已经习惯了每隔一年跳过这个活动的完美节奏。他的推理是,最大的收获是大趋势,它们不会每年都变!

启动和部署人工智能解决方案的理想场所

原文:https://towardsdatascience.com/the-ideal-place-to-launch-and-deploy-ai-solutions-4a34da2ee95e?source=collection_archive---------25-----------------------

Alexiei Dingli 教授是马耳他大学人工智能系的人工智能教授。在过去的二十年里,他一直在人工智能领域进行研究和工作,并成为马耳他的一部分。大赦国际工作队,主持教育和劳动力工作组。在这次采访中,他谈到了他对未来几年人工智能拥抱马耳他的愿景

Photo by Clark Tibbs on Unsplash

马耳他最*推出了国家人工智能战略。这个国家的愿景是什么?政府在实现这一目标方面有什么作用吗?

总理设定的愿景是使马耳他成为世界上人工智能进步最快的 10 个国家之一。这是我们起草《马耳他宣言》时的指导方针。AI 国家战略。该战略的各个组成部分分为两部分;促成因素和战略支柱。促成因素是构成战略的基本组成部分。没有它们,我们就无法构建人工智能系统。这些包括底层基础设施、法律和道德框架以及教育和劳动力促进因素。

战略支柱依赖于基本组成部分。这些包括私营部门、公共部门和投资(包括初创企业和创新)。这些不同的元素共同构成了人工智能启动*台战略。总的想法是使马耳他成为在全球范围内测试和部署人工智能解决方案的理想场所。政府在这一战略中发挥着重要作用,因为它提供了必要的推动力,而我们的国家需要这种推动力来获得必要的动力。

Photo by Franck V. on Unsplash

人工智能、机器学习、预测分析、神经网络……这些只是用来描述自 20 世纪 50 年代以来一直在研究的一些事物的一些名称。那么,现在为什么要大肆宣传人工智能呢?有什么变化?

人工智能已经存在了 70 年,但它的大部分一直被研究机构的实验室所封闭。然而,在过去的几十年里,两件事情发生了变化。我们已经在人工智能系统的软件和硬件方面经历了一些令人印象深刻的进步。

已经存在了 50 年并达到其能力极限的算法得到了改进,出现了一种称为深度学习的新算法。这些算法更接*地模拟了大脑的内部工作。这些算法的改进如此深远,以至于人工智能正在设法在大多数测试中超过人类的表现。

但这些算法极其耗电,需要巨大的处理能力。在开发这些算法的同时,一种新的处理器开始流行。这种处理器被称为图形处理单元(GPU),正如其名称所示,它旨在处理游戏中的图形。然而,人工智能研究人员意识到,GPU 也可能是人工智能的理想选择,事实上,它正大量用于高端处理。在某些情况下,GPU 可以提供比传统处理器高达 100%的速度提升。如果这还不够,我们还有云技术;它实际上是一个位于远处的处理器群。云处理的好处是可以根据需要添加或删除处理器。更好的算法和强大的硬件的结合目前正在推动我们今天正在经历的这场人工智能革命。

Photo by Dan Dimmock on Unsplash

在马耳他有限的研发预算下,马耳他有可能创造出什么样的人工智能?

真的,我们可以创造任何种类的人工智能。考虑到大多数处理都是在云上执行的,我们不会受到处理能力不足的限制,因为我们使用远程机器。人工智能所需的高级算法都是可用的,事实上,它们已经在大学里教授了。这意味着我们已经处于非常先进的阶段。我们与跨国公司在制造业有合作项目。其他人在健康方面,与 Mater Dei 的不同部门一起。很多项目涉及大数据的处理和未来趋势的预测。我们一直在培训人工智能专家,以满足目前存在的需求。

因此,作为一个国家,我们的定位非常好。然而,我们总是可以做得更多。R&D 的预算非常有限,需要进一步增加。政府意识到我们永远无法与像中国这样的大玩家竞争,中国在人工智能上投资了大约 1000 亿美元,但在一些利基领域,我们的规模对我们有利。这就是为什么国家人工智能战略关注人工智能发射台的概念——因为解决方案是在一个受控的沙盒中,在整个国家的背景下进行测试,然后向全世界推出。

Photo by Arseny Togulev on Unsplash

特斯拉首席执行官埃隆·马斯克(Elon Musk)表示:“人工智能的进步速度快得令人难以置信……你不知道它的发展速度有多快;以接*指数的速度。一些非常危险的事情发生的风险是在五年的时间框架内。最多 10 年。”…人工智能会有危险吗?

AI 本质上是一个工具。准确地说,它是人类发明的最强大的工具。像其他工具一样,它可以用来做好事,也可以用来做坏事。然而,即使人工智能正在以非常快的速度发展,我们也意识到了它的局限性。事实上,我们迄今为止所拥有的人工智能通常被称为狭义人工智能。这意味着人工智能非常擅长解决一个特定的问题,但却不擅长解决一个普通的问题。想象一下,你在和人工智能下棋。国际象棋程序可能处于国际象棋大师的水*,甚至更好。

但是,如果你问象棋程序关于天气的信息,它不会给你答案。原因是它只会下棋,别的什么都不会。事实上,人工智能的圣杯是所谓的人工通用智能(AGI),人工智能能够以类似于人类的方式处理不同的情况。然而,AGI 仍然非常遥远,我们在不久的将来也不太可能看到它。

Photo by Adeolu Eletu on Unsplash

市场领导者坚持认为,人工智能需要在商业中得到更广泛的应用。今天,将人工智能解决方案引入企业有什么好处?

人工智能给企业带来的好处是多方面的。首先,我们必须记住,当我们谈论人工智能时,它不仅仅是一个程序,而是不同算法的集合。人工智能也由不同的子领域组成,每个领域都有自己的一套算法。它们让计算机看到、说话、学习并理解物理世界是如何工作的。正因为如此,企业可以从人工智能中获得很多优势。这可能是一个简单的问题,当他们发布广告时锁定特定的客户,直到优化数百台机器以提高产量。人工智能还将带来更好的效率,对问题更快的反应,并对未来做出预测,否则这是不可能的。AI 也将为客户提供新的服务。聊天机器人将随时待命,随时准备回答任何问题。他们还将指导用户在网上购买,并几乎立即发货。人工智能将首次帮助企业提供以客户为中心的独特个性化体验。

Photo by Alexandre Godreau on Unsplash

人工智能是大型跨国公司的乐园吗?或者,即使是小企业也可以——也应该——考虑如何将人工智能集成到他们的服务解决方案中?

不,人工智能不仅仅适用于大型跨国公司。许多小企业可以从人工智能中受益,其中大多数已经在这样做了。想想脸书或者谷歌的广告。企业可以在几秒钟内设置好它们,并让人工智能决定何时播放广告。今天,脸书的许多公司都使用聊天机器人。聊天机器人是一种人工智能,当没有人能够回答时,例如当商店关门时,它可以处理客户的查询。许多小公司,如理发店,都有一个在线预约系统,在某些情况下,可以节省他们一个月 24 小时的电话预约时间。人工智能是这些系统的核心,通过自动化简单重复耗时的任务来改善人们的生活。

Photo by Blaz Erzetic on Unsplash

在未来的劳动力中,马耳他肯定需要培养人工智能技能。但是,潜在的技术性就业机会转移也是政策制定者的一个主要担忧。马耳他的工作会自动化吗,人会被落下吗?

在任何国家,最重要的资源是人力资本。熟练的劳动力和运转良好的教育体系是高附加值服务的基础。随着人工智能的扩散,我们预计现有的工作实践将被打破,从而不仅创造新的机会,也带来新的挑战。

在过去的一年里,我们看到了很多预测。一些专家预测,在未来几年,大约 40%的工作岗位将会消失。还有人说,人工智能革命将创造数百万个新职位,其中一些甚至还没有被发明出来。这没有什么新鲜的。如果我们看一看银行推出自动柜员机时的情况,我们可以看到类似的模式。随着自动取款机的使用,许多人预测银行出纳员的时代将会结束。然而,统计数据显示并非如此。1985 年,美国有 6 万台自动取款机和 48.5 万名银行出纳员。2002 年,自动取款机的数量增加到 352,000 台,银行出纳员的数量增加到 527,000 名。我们对此的解释是,许多人发现使用新机器很方便;因此,银行交易的数量开始激增。

另一方面,银行开始关注更好的客户服务;从而为他们的分支机构增加更多的员工来处理更复杂的任务。我们也可以在今天的网上银行中看到这种模式。尽管一些银行关闭了几家分支机构,90%的交易都在网上进行,但美国银行员工的数量实际上是一样的。这证明了这不仅仅是自动化接管人类工作的问题。

将会发生什么的真相很可能介于两者之间。让我们明确一点,在大多数情况下,AI 不会接管工作,但它会自动执行该工作内的特定任务。实质上,就业市场将发生如下变化:有些工作将会过时,比如开车。

无人驾驶汽车将能够在不需要人类司机的情况下运送人员和货物。有些工作受 AI 影响不会太大,比如护理。在护理行业中,人的因素仍然是至关重要的。一些新的工作将会被创造出来,比如器官创造者,他们的角色将会是从有机材料中开发器官和身体部分。许多现有的工作将永远改变。

这些工作从低收入的工作如店员到高收入的工作如律师。人工智能将增加他们的任务,以使他们更安全,更快,更精确。为了准备这场革命,我们需要帮助今天和明天的工人适应和获得新技能。

Photo by Elena Koycheva on Unsplash

你认为 10 年后的马耳他在这个人工智能世界里会是什么样子?

未来十年对马耳他来说将是一个迷人的时期,因为我们将看到新的人工智能战略的实施。还有很长的路要走。这将有助于我们缩小教育差距,确保每个人都实现自己的全部潜力,支持处于危险中的儿童,重新培训我们的劳动力,塑造未来所有使用人工智能的专业人士。

这并不容易,前方的路将带我们探索未知的领域。可以肯定的是,我们正朝着把马耳他变成人工智能发射台的正确方向前进。我们不仅致力于利用人工智能来塑造我们的岛屿,而且我相信,如果我们继续朝着这个方向发展,我们也将在未来几年成为其他国家技术进步的榜样。

Alexei DingliProf 是马耳他大学的 AI 教授。二十多年来,他一直在人工智能领域进行研究和工作,协助不同的公司实施人工智能解决方案。他的工作被国际专家评为世界级,并赢得了几个当地和国际奖项(如欧洲航天局、世界知识产权组织和联合国等)。他出版了几本同行评审的出版物,并且是马耳他的成员。由马耳他政府成立的人工智能工作组,旨在使马耳他成为世界上人工智能水*最高的国家之一。

采访原载于 2019 年 10 月 31 日https://www.businesstoday.com.mt**

人工智能对不*等、工作自动化和未来技能的影响。

原文:https://towardsdatascience.com/the-impact-of-ai-on-inequality-job-automation-and-skills-of-the-future-fe89c21e34bc?source=collection_archive---------6-----------------------

未来学家和纽约时报畅销书作家马丁·福特对工作自动化,一般基本收入,以及获得哪些技能为急剧变化的未来做准备。

Amazon.com

马丁·福特,《纽约时报》畅销书作者《机器人的崛起:技术和失业未来的威胁》 是一个长期主张一般基本收入的人。他 2017 年的 Ted 演讲点击量超过了 200 万次。在接下来的采访中,他分享了他对未来几年的担忧和预测。

我认为这是绝对正确的,任何人都可以为我们面临的未来学习的最重要的技能是如何保持学习,如何适应,以及如何非常有效地和愉快地做到这一点。

你能简单介绍一下你的背景吗?

我是一名未来学家和作家,至少到目前为止,我关注的是人工智能对社会和经济的影响。

我写了一本书,名为“机器人的崛起:技术和失业未来的威胁”,这本书关注的是这样一个事实,我确实认为很多工作自动化和简单消失有巨大的潜力。

此外,不*等可能会大大增加,因为人工智能的本质是资本正在取代劳动力,当然资本由极少数人拥有;富人倾向于拥有大量资本,而大多数其他人并不拥有太多。随着时间的推移,它使我们整个社会更加不*等。我认为这将是我们未来几十年的真正挑战。

能否详细说明一下连接自动化和不等式?

基本的现实是,地球上绝大多数人实际上只有一样东西是有价值的,那就是他们劳动的价值。即使在像美国这样显然非常富裕的国家,绝大多数人也没有多少财产。拥有足够的资本来维持生活的人很少,因此他们不必工作,如果你放眼整个世界,这个数字就更少了。

大多数人依赖于他们劳动力的价值,而随着人工智能和机器人技术的进步,将会发生的事情是,许多劳动力将被贬值,这些劳动力根本不会有那么多价值,因为技术将能够做许多日常的、重复的、可预测类型的工作和任务,而这些工作和任务现在是有偿的。

也许在 10 年或 15 年内,将会很明显会发生什么,这将是我们社会的一个巨大挑战,就如何构建我们的经济和改变周围的事情来说,这样我们才能在那个世界上继续繁荣。

10 到 15 年对未来来说并不遥远。是什么让你确定进步正以如此快的速度发生?

10 到 15 年只是一个猜测,事实证明可能需要更长的时间。主要的一点是,我认为这是不可避免的,不管是 10 年、20 年还是 30 年,都没有太大关系。最终,这是我们不得不面对的问题。

我确实相信,我们正处于一个转折点,或者说是一个事情将以不同方式运作的时刻。

在过去,许多工作已经实现了自动化,但它们往往是更多的手工工作和体力劳动类型的工作,或者是那种你站在装配线上反复做同样事情的工作,或者是非常狭窄的计算工作,例如计算数字。但是我们现在看到的是这项技术更加广泛,它开始取代认知能力甚至智力能力。

我们已经有了做出决策和解决问题的学习机器,这将最终影响许多白领工作,当然还有更多日常工作,例如反复创建同一种报告或同一种定量分析的办公室工作人员。所有这些肯定会越来越容易受到自动化的影响,蓝领工作也是如此,需要更多的灵活性或更多的视觉感知。这些工作也越来越受到影响。

关键是越来越多的工作会受到影响。当然,会有新的工作岗位产生。这是人们总是会指出的一件事。

这是真的,但问题是会有多少新的工作,这些新的工作真的会很好地匹配那些需要工作的人吗?因为如果你创造的所有新工作都是给机器人工程师、人工智能研究人员和数据科学家的,那么在大多数情况下,这些工作不是现在卖汉堡包或开出租车的人能做的。这确实产生了一个问题。

你是一般基本收入的倡导者。为什么这是一个解决方案?

我提倡基本收入的原因是,我已经看到了解决这个问题的各种方法,但是没有多少。我的意思是,你实际上在谈论一个没有足够工作可做的世界,或者至少某些特定技能水*的人群将很难在经济中立足。机会根本不存在。

在这种情况下,你真的想不出多少解决办法。我认为基本收入是最简单和最直接的方法。

这个想法是保证每个人至少有最低限度的无条件收入。我见过的大多数提议最多是每月 1000 美元或 1000 欧元,大约在这个范围内。芬兰曾有过一个实验,后来被终止了,但我想只有 600 欧元。这是一个相当低的数额,这真的不是一个会让人呆在家里玩电子游戏的数额。

这个想法是给人们最低的收入,但你不能破坏他们做更多的激励。所以这个想法是,人们会得到那份收入,但如果他们能找到的话,他们仍然可能做兼职,或者如果他们足够幸运找到全职工作,他们甚至可能做全职工作,或者他们可能出去做一些创业,也许创办一个小企业来增加他们的收入。

我们的想法是创造一个世界,在这个世界里,你可以保持激励,让每个人都尽可能地多产。

我认为这有很多值得推荐的地方,因为如果你看看我们现在存在的安全网,特别是在一些欧洲国家,比如斯堪的纳维亚,对不工作的人来说有相当多的福利。但是一旦你开始工作,你就失去了这些好处。这就产生了去做任何事情的抑制因素,真正采取主动去做任何事情,这是一个问题。基本收入的优势在于,你给人们最低的收入,他们仍有希望尽可能多地外出工作。你没有人只是坐在家里,不工作,这造成了许多社会问题。

我们为人们创造东西非常重要,这样人们才能继续保持参与感。他们继续觉得自己在为某件事做贡献。这些都是重要的问题。仅仅给人们钱并不是一个充分的解决办法。我们从过去人们对这些项目的反应中了解到这一点。

计算机已经在某些复杂的游戏中表现得更好,比如国际象棋和围棋,而从业者现在正在使用人工智能来进一步提高它们在这些游戏中的表现。换句话说,他们使用人工智能来增强他们的技能和爱好。

我想那是对的。艺术是另一个领域。你可能会看到很多人成为艺术家,这在当今世界很难。有很多挨饿的艺术家。以这种方式谋生很难,但如果你有一个普遍的基本收入,许多人可以做他们热爱的事情和他们真正强烈感受到的事情,即使这些可能不是市场真正重视的事情。

你将为人们提供一种可能性,让他们把兴趣爱好变成他们想专注的事情,或者成为小企业,这些小企业本身不会产生足够的收入供人们生存,但也许与基本收入相结合,将提供各种可能性。

我还建议,我们甚至可以更进一步,将直接激励纳入基本收入,也许不是付给每个人完全相同的金额,但如果你真的做了一些有成效的事情;例如,成为一名艺术家,在社区工作,帮助人们,或者创办一家小企业,做一些有成效的事情,相比于你真的只是呆在家里,坐在椅子上玩视频游戏,什么都不做,你会得到更多一点的报酬。

人们可以利用这一机会来扩大他们的视野,而不仅仅是退出社会,有一个非常不健康的观点。

一个人如何为这样的未来做准备?

有几个层面,在宏观层面上,意识到这一点,并与其他人交谈,参与对话。确保你考虑到这一点,以及最终这将成为我们政治的一部分的事实。我们将制定公共政策来解决这个问题。

我认为,对于人们来说,有一个开放的思维,并帮助进行关于这些技术对我们的社会意味着什么的讨论,这真的很重要。从更个人的角度来看,比如确保我的工作不会消失,或者我的孩子应该在学校学些什么…

我认为最好的建议是,总的来说,我们可以说,技术真的会对工作产生重大影响,这些工作是可预测的事情,例行公事和重复的任务,你来工作,一次又一次地做同样的事情。

你想远离这些事情,相反,你想做更有创造性的事情,可能涉及许多复杂的交互和与其他人建立关系的事情,因为这些事情现在机器不擅长。很可能,在我们能够制造机器来做这些事情之前,还有很长一段时间,另一个领域将是技术贸易类型的工作,如电工、水管工,这些工作需要大量的灵活性和机动性以及不可预测的环境。我们不能制造一个机器人来做电工、水管工或护士做的事情,因为这些工作确实需要跑来跑去,处理各种不可预知的事情。这类工作是目前人们最安全的工作。就你未来的职业或你正在做的事情而言,你想让自己适应那种工作。

你的孩子在学校关注的也是同样的事情;你不希望他们被训练去做一些常规的可预测的工作,因为那可能会受到威胁。这是在更直接的个人基础上给人们的最好的建议。

那意味着教育系统必须彻底重组。这并没有真正发生,旧的教学方式仍然盛行。

教育很难解决。我认为,这些技术中有很多 prom,在线教育将融入人工智能,例如,真正个性化和定制化的结构化学习计划。你可以很便宜地上网,利用这些技术接受教育。这是非常积极的一件事。

我认为这是绝对正确的,任何人都可以为我们面临的未来学习的最重要的技能是如何保持学习,如何适应,如何在你的一生中继续学习,并且非常有效地学习,如何真正享受学习的乐趣;去热爱学习。

我想对我的孩子来说,我会说这是我想灌输给他们的未来的最重要的技能。当然,如果你现在有小孩,没有人能真正想象到他们成年或进入职业生涯时这个世界会是什么样子。

我们能做的最好的事情就是确保他们有工具来适应一个变化越来越快的未来。

如果你现在可以做一件事,结构调整,比如从经济角度来看,你可以在很短的时间内重组经济体系或者改变教育体系,你会怎么做?你会从哪里开始?

如果我有权力,我会让我们至少从某种最低基本收入开始,它可能很低,每月可能只有 200 欧元,但这只是一个开始,将该计划付诸实施,以便在未来它可以扩展,支付的金额可以随着这一进程的发展而增加,因为有许多关于基本收入的论点,甚至抛开所有这些关于技术影响的猜测。多年来,一直有人主张基本收入只是解决贫困和某种程度上的不*等的一种方式,并真正使我们的系统更具功能性。

我认为这是有充分理由的。我真的很想把这个想法说出来。我再次认为,如果这就是我们能够在政治上处理的所有事情,那么最初在一个非常低的水*上这样做是很好的,但最终我认为这对于未来是一个非常重要的想法。尽管这在政治上极具挑战性,但重要的是开始讨论,如果可能的话尽快实施。

你如何定义人工智能?许多人认为人工智能是一种即将超越世界的终结者技术,包括意识和自我意识的概念。你认为这是你正在画的未来的先决条件吗?

人们担心的那种科幻小说的东西肯定不是我担心的工作自动化的先决条件。我是说人工智能是一个连续体。今天存在的所有人工智能都是我们所谓的狭义或专门的人工智能,所以它没有接*人类思考的方式,也不会以任何方式通过拥有自己的意志或类似的东西来威胁我们。我认为我们还没有接*那个目标。

尽管如此,能够以超人的能力做特定事情的人工智能将威胁到许多工作,因为人也做特定的事情。

这就是亚当·斯密关于分工的全部观点。许多工作都是专业化的,它们将受到这种专业化人工智能的影响。

尽管如此,这是一个值得思考的迷人话题,如果在未来的某个时候,我们真的可以建造一个真正的思考机器,可以在人类的水*上思考,而且绝对有人在研究这个问题,人们已经提出了对机器的担忧,这些机器最终可能会比我们更聪明,等等。

这些并不是我们应该一笑置之的愚蠢担忧,但我们应该明白,那是遥远的未来,可能是因为这个原因,而不是我们应该关注的事情。现在还有其他更实际的事情,将在未来 10 年或 20 年内发生。

你目前在做什么,有什么新项目即将推出吗?

在进行这次采访的同时,马丁出版了一本新书,就人工智能的现在和未来采访了世界领先的人工智能专家。这本书叫做《智能建筑师:来自建造它的人们的关于人工智能的真相》。

喜欢这篇文章吗?在这里,我们分享我们在 Omdena 通过社区协作构建人工智能解决方案的经验。

[## 成功构建人工智能解决方案的三点经验

我们从与来自 56 个国家和领先组织的 400 多名人工智能工程师在一些…

medium.com](https://medium.com/omdena/three-learnings-to-build-your-ai-for-good-solutions-successfully-374dea7b6cb)

人工智能对酒店业的影响

原文:https://towardsdatascience.com/the-impact-of-ai-on-the-hospitality-industry-8ba7adb66be?source=collection_archive---------10-----------------------

万豪、希尔顿和凯撒娱乐如何拥抱人工智能技术

Photo by Alex Knight on Unsplash

随着技术变得越来越复杂,它已经颠覆了世界上几乎所有的行业。酒店业就是这样一个行业,它见证了技术的发展对当今酒店运营和表现方式的重大影响。无数酒店行业的领导者越来越多地在他们的酒店中利用一种特定的工具来增加个性化并超越客户的期望:人工智能或更普遍的说法是 AI。《牛津英语词典》将 AI 定义为“能够执行通常需要人类智能的任务的计算机系统的理论和开发,如视觉感知、语音识别、决策和语言之间的翻译”(牛津)。越来越多的酒店,特别是大型全球连锁酒店,如万豪国际、希尔顿酒店及度假村和凯撒娱乐,已经开始在酒店中以聊天机器人消息、人工智能驱动的客户服务和数据分析的形式实施人工智能,希望重新定义个性化客户体验的当前行业标准。

人工智能以无数种方式颠覆了酒店业。人工智能改变游客体验的最基本方式是通过使用聊天机器人信息服务。例如,万豪国际拥有多个聊天机器人,包括在 Facebook Messenger、Slack、微信和谷歌助手(Bethesda)等各种*台上提供的万豪奖励聊天机器人。“由数据驱动的逻辑和专门的算法驱动,”这些聊天机器人不仅增加了客人的便利性,还降低了万豪酒店(Marriott)的劳动力成本。通过让聊天机器人在一天中的任何时间回答问题并解决客人可能关心的问题,万豪能够大幅削减酒店运营商的费用。此外,聊天机器人以多种语言提供,因此为不会说英语的酒店客人提供了额外的便利(Bethesda)。通过允许客人用他们的母语交流,聊天机器人无缝地消除了与来自世界各地的客人的语言障碍(Bethesda)。此外,在自然语言处理或 NLP 的帮助下,聊天机器人能够检测客人的行为和偏好,以便及时提供“超个性化的建议”,满足客人可能有的每一个需求(Agarwal)。万豪的雅乐轩酒店品牌甚至更进一步,引入了机器人管家 ChatBotlr 来帮助客人(Bethesda)。雅乐轩于 2014 年推出的 ChatBotlr 利用自然语言处理和机器学习,允许客人通过短信(Bethesda)直接从智能手机上请求酒店服务。此外,ChatBotlr 随着每一次额外的访客交互变得更加智能,因此系统在不断地自我完善(Bethesda)。通过“让客人能够提出基本问题,提出简单请求,并获得即时响应”,人工智能聊天机器人通过立即简化他们从预订前阶段到离开后阶段(Bethesda)的整个酒店住宿,为客人创造了无缝和个性化的体验。

除了聊天机器人之外,人工智能人工客服也显著改变了客人的体验。2016 年 3 月,希尔顿在弗吉尼亚州麦克林酒店(Davis)推出了世界上第一个人工智能酒店礼宾机器人,以其创始人康拉德·希尔顿的名字命名为康妮。Connie 是与 IBM 合作开发的,有三个主要目标:减少排队等待时间,提高酒店运营效率,用一种创新的、完全独特的工具(Trejos)给客人带来惊喜。机器人礼宾由从一个名为沃森(Trejos)的“认知计算技术*台”获得的领域知识提供支持。沃森使计算机系统能够像人类一样“通过感官、学习和经验”(Trejos)理解环境。Connie 能够像任何前台代理、礼宾或酒店电话接线员(Davis)一样,告知客人酒店特色、当地景点和餐饮建议。IBM Watson 的首席技术官 Rob High 强调,Watson“帮助 Connie 理解并自然地响应希尔顿客人的需求和兴趣——这是一种在酒店环境中特别强大的体验,在那里它可以导致更深的客人参与”(Davis)。希尔顿的 Connie AI 机器人以一种非凡的方式颠覆了酒店业,建立了速度和便利,进一步提高了客人的满意度。

除了通过聊天机器人和礼宾机器人改善客户服务,人工智能还通过使用数据分析影响了酒店业。凯撒娱乐公司(Caesars Entertainment Corporation)是一家美国博彩酒店和赌场公司,管理着拉斯维加斯著名的凯撒宫(Caesars Palace),是一家酒店管理公司,该公司使用数据分析来进一步提高其酒店内的客人个性化和满意度(Marr)。Caesars Entertainment 的 Total Rewards 忠诚度计划确立了该公司在将“大数据驱动的营销和客户服务”融入其业务和营销战略(Marr)方面的行业领先地位。凯撒娱乐公司收集所有客人的交易数据,包括他们在全国 50 家酒店的每家餐厅、赌场、水疗中心和高尔夫球场的消费(Rosenbaum)。在美国消费者新闻与商业频道的文章中,凯撒娱乐首席执行官兼董事长加里·洛强调“我们试图根据人口统计数据和客人透露的行为来预测他们感兴趣的事情”(罗森鲍姆)。利用数据分析工具,凯撒娱乐公司考虑了他们业务的方方面面,从酒店定价到游戏设施的安排(Rosenbaum)。通过 Total Rewards 忠诚度计划,客人可以根据在凯撒酒店(Marr)增加的消费提升不同的奖励等级。从客人消费中收集的数据然后用于分析每个客人的个人特征和行为,以进一步根据他们的兴趣定制细节(Marr)。凭借“收集数据、将数据转化为客户洞察,并利用这些洞察提供前所未有的客户体验的能力”,凯撒娱乐的全面回报忠诚度计划不仅提高了客户满意度和忠诚度,还确立了自己在大数据和人工智能领域的酒店业领导者地位。

人工智能技术通过塑造当今酒店的运营方式,彻底颠覆了酒店业。通过万豪的聊天机器人消息、希尔顿的机器人礼宾 Connie 和凯撒娱乐的全面回报忠诚度计划,AI 展示了在增加便利性、增强个性化以及提高酒店客人满意度和忠诚度方面的真正承诺。然而,随着像阿里巴巴的 FlyZoo 酒店这样的酒店完全由人工智能机器人和面部识别技术提供支持,酒店经营者必须开始在人类和人工智能(Biron)之间找到*衡。从目前大型连锁酒店采用的人工智能技术可以明显看出,人工智能的未来只会变得越来越先进,越来越以客人为中心;因此,酒店经营者必须继续拥抱新的机会,以跟上消费者的偏好和行业趋势(科尔迈尔)。

作品引用

[1] Agarwal,Neelam,聊天机器人变革酒店业的五大方式 (2018),Medium

[2] Bethesda,万豪国际在 Facebook Messenger 和 Slack 上的人工智能聊天机器人,以及雅乐轩的 ChatBotlr,在客人的整个旅程中简化他们的旅行 (2017),万豪国际新闻中心

[3]比伦,贝瑟尼,中国电子商务巨头阿里巴巴有一家几乎完全由机器人经营的酒店,可以提供食物和取化妆品——看看里面的 (2019),商业内幕

[4]戴维斯、丽莎、希尔顿和 IBM 飞行员“康妮”,世界上第一个沃森启用的酒店礼宾机器人 (2016),IBM

[5]科尔迈尔,克劳斯,艾与酒店业的必然未来 (2019),旅游日报媒体

[6]菲利普·科特勒,《酒店和旅游营销》(2017),培生教育

[7] Marr,Bernard,凯撒娱乐公司的大数据——价值十亿美元的资产? (2015),福布斯

[8] Mest,Elliott,[万豪推出脸书聊天机器人,协助职业发展](https://www.hotelmanagement.net/human-resources/marriott-launches-facebook-chatbot-to-assist-career-development#:~:targetText=Marriott International launched a new,International with a personalized experience) (2017),酒店管理

[9]作者不详,发现英语 60 多万字,一千多年的故事(日期不详),牛津英语词典

[10]埃里克·罗森鲍姆,在拉斯维加斯发生的事,就留在拉斯维加斯吧…作为数据 (2013),美国消费者新闻与商业频道

[11]特雷霍斯,南希,介绍希尔顿的新机器人礼宾员康妮 (2016),《今日美国》

大麻合法化对交通死亡的影响:一种综合控制方法

原文:https://towardsdatascience.com/the-impact-of-marijuana-legalization-on-traffic-deaths-a-synthetic-control-approach-420a36c5e8eb?source=collection_archive---------24-----------------------

Image by Jess Liotta on flickr

随着大麻合法化的兴起,关于交通死亡和碰撞的潜在影响的问题也越来越多。在这里,我们将使用综合控制方法(SCM)进行分析,以确定大麻合法化对驾驶死亡率的影响。

选定样本

迄今为止,已有 11 个州投票赞成娱乐性大麻合法化。一些州仍在等待全面立法的实施或合法化,时间太短,无法收集足够的数据。考虑到这一点,我们有几个可以分析的状态:

  1. 阿拉斯加
  2. 科罗拉多州
  3. 俄勒冈州
  4. 华盛顿

在此分析中,我们将使用 NHTSA 使用的死亡率:每 1 亿英里行驶的死亡率。首先,我们可以看到自大麻合法化以来,所有 4 个州每 1 亿英里的死亡率。

四个州中有三个州的死亡率增加了——除了阿拉斯加。但是,要确定这些变量之间是否存在因果关系就比较困难了。要确定这一点需要更严格的分析。为简单起见,我只分析科罗拉多州和华盛顿州(最早将娱乐用大麻合法化的两个州)。这两个州都在 2014 年初将大麻合法化,为我们提供了最长的分析周期。

构建合成控件

这里建立因果关系的方法是综合控制法。在我们继续下一步之前,我们应该弄清楚将要使用的一些术语。“干预”或“治疗”是我们正在研究的事件的影响(在这种情况下,娱乐性大麻合法化)。“治疗组”是指接受干预的组。对于这种分析,它是科罗拉多州和华盛顿州。预测变量是能够影响因变量的变量。

从这里,我们能够解释什么是综合控制。综合控制可用于分析干预对因变量(本例中为交通死亡率)的影响。由于我们不太可能找到一个与科罗拉多州或华盛顿州具有非常相似特征(预测因素)的州,该州也经历了相似的干预前死亡率趋势,因此我们可以取许多不同州的权重来形成一个人工构建的相似州。这是一个合成控制。

为了构建这个,我们将遵循麦克莱兰&高尔特(2017) 中描述的流程的简化版本。这种方法的一个例子来自 Abadie、Diamond 和 Hainmueller (2010) ,他们制作了以下用于分析加州烟草销售的合成对照。

使用这种方法,他们能够估计出加州的新法律减少了多少烟草销售。在这个过程中,他们推广了单片机,用于未来的研究。我们将采用同样的方法来评估大麻合法化对我们所选各州交通死亡率的影响。

为了进行这个分析,我将对 R 使用 gsynth 包。

识别因变量的预测值

为了使这一分析易于理解,我将尝试把科罗拉多州和华盛顿州与在几个方面人口统计相似的州进行比较。第一个有趣的人口统计是年龄。

Source: B.C. Teft, AAA Foundation for Traffic Safety

研究表明在 30-70 岁之间,致命车祸的风险相当低且稳定。30 岁以下和 70 岁以上的司机风险增加。因此,我们的变量必须考虑我们对年龄分布尾部感兴趣的事实——使用中位数或*均值可能不合适,因为他们更关心中心。

因此,我们的两个年龄变量预测值将是:

  • 18-34 岁之间的人口比例

由于我的数据源中使用的箱,0-18 岁的人被分组在一起。所以,我选择忽略这个年龄段。

  • 65 岁以上人口的比例

这个区间也是不完美的,但希望足够接* 70+的范围,因为我们有证据表明致命车祸的风险增加了。

我们感兴趣的第二个人口统计学是人口的男女比例。性别已被证明在交通死亡方面有显著差异。我们的变量很简单:

  • 男性占人口的百分比

这些变量的数据是从 2008 年至 2017 年的美国人口普查局收集的。虽然有许多其他相关的人口统计方面可以包括在内,我们将离开我们的模型在这里。

识别可能的施主状态以合成控制状态

在这个阶段,我们必须筛选潜在捐助国。我排除了几个州,因为在我们有数据的时期,他们也将大麻合法化。阿拉斯加、俄勒冈、马萨诸塞州和内华达州被排除为可能的捐赠州,因为它们至少在相关时期的一部分也经历了大麻合法化。波多黎各也不包括在内。

选择预测权重

在选择预测权重时,有几种可能的选择。首先是主观选择权重。第二种(也是传统的)方法是选择最小化均方预测误差(MSPE)的权重。第三种选择是使用交叉验证。在此分析中,我们将使用交叉验证方法(将数据分为训练集和验证集)。然而,结果与使用传统方法非常相似。

gsynth 包的一个优点是它能够处理多个处理过的单元。因此,在输入这个函数时,我将科罗拉多州和华盛顿州都设置为 2014 年至 2017 年(我们最*数据的日期)的治疗单位。另一个优势是,利用自举标准差,我们能够获得结果的 p 值(许多 SCM 研究不包括这一点)。

结果

我们可以在下面的示例中看到所有州的原始死亡率:

黑色区域代表治疗后时期,红线突出显示科罗拉多州和华盛顿州的干预后时期。

该函数自动选择最佳模型,在我们的例子中,该模型的 MSPE 为 0.19。我们的结果图如下所示:

在预干预期间,我们能够看到我们的合成状态通常跟踪我们的治疗状态(尽管理想情况下,我们希望看到更长时间的预干预,以更好地验证我们的合成控制)。黑色区域代表干预(大麻合法化)后的时期。该图显示了相对于我们的合成对照,处理区域的增加,这暗示了影响。

我们还可以查看该图,以显示合成区域和处理区域之间的差距。

x 轴上标记零的年份是干预年。y 轴上的零表示我们的处理组和合成对照精确对齐的时间。阴影区域代表 95%的置信区域。该图显示了我们的治疗组相对于我们的合成对照组的死亡率的增加。然而,该模型得出的估计 p 值为 0.274,无法通过学术研究中使用的统计学显著性检验(通常为 0.05 或更低)。

解释

这一分析提供了微弱的证据,表明早期娱乐性大麻合法化的州出现了交通死亡率的增加,这可能归因于大麻。然而,这些结果不足以得出大麻对死亡率有任何影响的结论。此外,该分析中的重大局限性也会限制结论的可靠性(参见下面的“局限性”一节)。

事实上,过去关于这一主题的文献褒贬不一。两篇论文(此处此处)分别使用了控制状态和综合控制方法,但得出了有些不同的结论(大麻不是增加的原因)。一项 IIHS 的研究估计大麻合法化增加了 6%的车祸(虽然这项研究只是简单地比较了合法化的州和邻*的州,并且它测量了车祸而不是死亡)。

考虑到相互矛盾的结果,在收集到更多的证据之前,最好不要下结论。虽然一些证据表明死亡人数增加,但证明因果关系更加困难。

方法论的局限性

这里使用的方法在许多方面有局限性。进一步的分析可能包括其他已经颁布大麻合法化的州,以增加样本量。此外,你可以通过进行安慰剂测试来进一步验证这些结果(尽管这种方法的有效性*年来受到了一些论文的质疑)。我选择放弃这一步,因为我们的模型返回的是 p 值。

另一个限制是我构建合成控制的方法。我使用了基本的人口统计变量。然而,更严格的论文使用了道路特征、酒精或药物使用、各种经济指标以及其他变量。至少有一篇论文将死亡人数缩小到了那些与大麻有明确联系的人。这可能意味着这种分析——更为简单——的结论不太可靠。

最后,还可以进行敏感性分析,以确保结果的稳健性。

机器学习中分析模型假设的重要性

原文:https://towardsdatascience.com/the-importance-of-analyzing-model-assumptions-in-machine-learning-a1ab09fb5e76?source=collection_archive---------21-----------------------

如何检查你的假设&为什么你应该总是这样做

作者雷利·梅因尔特,阿德·帕特尔,&西蒙·李

在构建用于预测的模型之前,检查模型假设非常重要。如果不满足假设,模型可能会不准确地反映数据,并可能导致不准确的预测。每个模型都有必须满足的不同假设,因此检查假设在选择模型和验证它是否是要使用的合适模型时都很重要。

诊断

诊断用于评估模型假设,并确定是否存在对分析有巨大、不适当影响的观察结果。它们可用于优化模型,确保您使用的模型确实适合您正在分析的数据。有许多方法可以使用诊断来评估模型的有效性。诊断是一个总括名称,涵盖了模型假设下的其他主题。它可能包括探索模型的基本统计假设,通过考虑更多、更少或不同的解释变量来检查模型的结构,或者查找模型很难表示的数据(如异常值)或对回归模型的预测有很大不*衡影响的数据。

诊断可以采取多种形式。您可以检查一些数字诊断。 statsmodels 包通过摘要功能提供了许多诊断的摘要:

有了这个总结,我们可以看到重要的值,如 R2,F 统计,以及其他许多。您还可以使用图形诊断来分析模型,例如绘制拟合/预测值的残差。

上面是我们的体重-身高数据集的拟合与残差图,使用身高作为预测因子。在很大程度上,这个情节是随机的。但是,随着拟合值的增加,残差的范围也会增加。这意味着随着身体质量指数的增加,我们的模型和实际数据之间的差异会更大。在较高的 BMI 时,它也往往是一个更负的残差。这并不意味着线性模型是不正确的,但这是一个值得研究的问题,可能有助于改变或改进模型。

您可以做的另一个残差图是比例-位置图。该图显示了我们的残差是否沿预测值的范围均匀分布。如果所有的随机变量都有相同的有限方差,则认为它们是同方差的。具有随机分布点的图表明该模型是合适的。根据拟合值绘制*方根归一化残差。

在这个图中,我们想要一个水*带状的随机分布。这表明数据是同质的,自变量和因变量之间的随机化关系在自变量之间是相对*等的。我们的线在开始时大多是水*带状的,但在接*结束时似乎向上倾斜,这意味着可能不是到处都有相等的方差。这可能是我们在残差拟合图中发现的问题没有得到解决的结果,也是我们的模型可能需要改变的另一个指标。

在建立回归模型时,您希望确保残差相对随机。如果不是,那可能意味着你选择的回归是不正确的。例如,如果您选择使用线性回归,并且残差图明显不是随机的,则表明数据不是线性的。

诊断也适用于我们正在讨论的许多其他主题,如多重共线性、数据集分布和异常值,这些将在本文的其余部分讨论。

多重共线性

在统计学中,当数据集的要素或 X 变量彼此不独立时,会出现多重共线性。例如,身高、体重和身高 2 不是独立的,因为身高 2 的计算取决于身高,反之亦然。多重共线性还意味着数据集中存在冗余要素。

多重共线性是回归分析中的一个主要问题。这是因为回归模型的关键目标是预测当 X 变量之一发生变化时(所有其他 X 变量保持不变),独立的 Y 变量如何变化。假设两个变量 X1 和 X2 彼此高度相关(例如,X2 = X1 + 1)。改变 X1 而不改变 X2 是不可能的,反之亦然。

在这种情况下,模型很难预测 Y 变量和每个 X 变量之间的关系(所有其他 X 变量保持不变),因为 X 变量是一起变化的。因此,该模型将无法正确计算系数(估计值),从而不足以识别数据集中哪些 X 变量对 Y 变量的统计影响最大。

幸运的是,多重共线性并不总是需要修复。例如,假设你有 3 个变量(X1,X2,X3)。如果 X1 与 X2 有很强的相关性,但是你只使用 X2 和 X3 来构建你的模型,那么模型将能够毫无问题地解释 X2 和 X3 对 Y 的影响。此外,如果您的唯一目标是预测 Y,并且不需要了解每个 X 变量对 Y 的影响,那么减少多重共线性就没有必要。

在需要解决多重共线性问题的情况下,使用的最佳方法是要素选择。事实上,特征选择不仅处理多重共线性!它还提高了训练模型的计算效率(训练模型所需的时间随着特征数量的增加而呈指数增加)。此外,它降低了过度拟合的风险(冗余特征意味着模型更可能拟合噪声而不是数据中的实际模式)

有各种各样的技术来执行特征选择,但是它们都依赖于相同的基本原理。最终,目标是消除对 Y 变量几乎没有影响的要素,保留最重要的要素。例如,可以使用的一个属性是“互信息”,它是一个从 0 到 1 的数字,表示两个特征有多少共同点。如果 X1 和 X2 是独立变量,这意味着这两个变量都不能用来获得关于另一个变量的信息,因此它们的互信息是 0。如果一个变量是对应变量的函数,则意味着两个变量之间存在显式的数学映射(如果一个变量的值已知,则另一个变量的值可以计算出来),因而它们的互信息为 1。如果一个变量是对应变量和其他变量的函数,它们的互信息在 0 和 1 之间。

Multiple Linear Regression for Height and Weight versus BMI

Another view, rotated to show linearity and fit of the relationship

数据集分布

数据集的分布显示了总体特征的不同可能值,以及每种结果出现的频率。正态分布可能是最广为人知的分布,并且经常出现在现实世界中。在多元线性回归中,假设我们有多元正态性。简单来说,每个变量都应该是正态分布的。我们可以通过在直方图中绘制变量来直观地检查这一点。

虽然身高和体重并不是完美的正态分布,但因为我们有足够大的样本量,总共有 10,000 次观察,我们可以安全地假设中心极限定理成立。如果不确定这个数据是否足够正态分布,可以用 Q-Q 图来检验。

Q–Q(分位数-分位数)图是确定分布是否正态分布的另一种诊断工具。它沿着理论分位数和 y = x 线绘制数据的分位数。如果点沿着这条线排列,则分布相对相似。在我们下面的图中,因为不同自变量的大多数点都非常接*直线,因此是“理想的”正态条件,我们可以假设我们的数据是正态分布的。然而,因为在低端,一些点在线下,而在高端,一些点在线上,我们知道我们的数据可能有重尾,然后我们调整我们的模型。

样本量

在信息爆炸之前,统计人员习惯于手动收集数据,这需要宝贵的时间和资源。需要提前确定最小样本量,以确保收集到足够的数据,从而进行有效和准确的分析。今天,情况往往相反。我们可以访问从几千到几百万个观察值的数据集。乍一看,能够对超过一百万的观察数据进行分析似乎很棒。然而,在对数据进行分析和建模时,使用大量数据通常是不合适的。

从数据集中提取样本有几个原因。太大的样本会导致我们过度拟合我们的模型。样本太多会导致实际上无关紧要的变量在分析中具有统计意义。然而,从我们的数据集中提取太小的样本也可能会导致问题。在太小的样本上进行的分析将缺乏统计能力,而统计能力对于能够基于模型做出准确的预测是至关重要的。我们不想要太大或太小的样本,那么我们如何确定合适的样本量呢?

通常,人们认为 30 的样本量已经足够大了。然而,当我们从数据集中随机抽取 30 个样本时,结果是这样的:

很容易看出这个样本不是正态分布的,打破了多元正态的假设。因此,我们需要选择更大的样本量。在模型构建中,很容易改变您正在选择的随机样本的大小,并直观地验证它是一个足够大的样本,以满足多元正态性的假设。

离群值

在模型创建中没有关于异常值的特定假设,但是需要注意的是异常值会极大地影响您的模型并改变其有效性。直观检查异常值的简单方法是使用箱线图,如下所示:

因为我们可以直观地看到存在异常值,所以我们应该检查它们对模型的影响有多大。 statsmodel.api 包计算诊断,如杠杆和库克的每个点的距离,非常有帮助。杠杆是衡量一个点的独立变量值与不同观察值之间的距离。具有高杠杆作用的点是变量的极值点,在这些点上缺少附*的观测值导致拟合的回归模型接*该特定点。下面是库克对每个点的距离图。库克距离是删除一个点对回归的影响的度量,因此给定该信息,调查具有极端/更高库克距离的那些点将是有益的。

有几种方法可以处理异常值,您选择如何处理它们可能取决于您的特定模型。当您创建模型时,它们可以从您的数据中完全删除,或者它们可能表明另一个模型可能更适合您的数据,这取决于它们如何影响其他假设。

结论

正如你所看到的,检查模型假设是一个相对简单,但在优化模型性能和增加机器学习中模型可靠性方面非常重要的一步。在构建模型之前,请检查您的数据是否符合您选择的模型的特定假设。从目视检查开始。如果您的可视化甚至有点不清楚您的数据是否符合您正在检查的特定假设,请使用更具体的诊断工具来确认或否认您的怀疑。这样,您可以确保对数据使用最合适的模型,从而提高预测能力。

关键词:多重共线性、同异方差、异常值、残差、诊断、标度-位置图、Q-Q 图、库克距离

消息来源

https://statisticsbyjim . com/regression/多重共线性-回归-分析/

[## 为什么、如何以及何时应用特征选择

现代数据集的信息非常丰富,数据是从数百万个物联网设备和传感器收集的。这个…

towardsdatascience.com](/why-how-and-when-to-apply-feature-selection-e9c69adfabf2)

https://data.library.virginia.edu/diagnostic-plots/

数据集中上下文的重要性:一个简短的实验

原文:https://towardsdatascience.com/the-importance-of-context-in-data-sets-a-short-experiment-29c45a01a7fd?source=collection_archive---------36-----------------------

在同一时间序列中使用四种预测方法以显示绩效差异

如今,数据科学家在选择他们将在数据库上使用哪种方法时被宠坏了。学术文献已经超越了众所周知的、曾经广泛使用的普通最小二乘法。与大多数其他研究领域相反,新的理论和方法通常会相对较快地应用到商业应用中,就目前而言,时间序列预测领域可以说是研究得最好和使用最多的领域。

本文并不深入探讨在特定环境下最有效的单一方法。相反,我想告诉您,没有一种方法在每种情况下都是明确首选的。事实上,我已经建立了一个简短的实验,向你们展示数据集背景的重要性,以及全面再培训的重要性。

我的演示使用了四种不同的方法和一个公开的数据集:由英国政府提供的约克市中心每小时的客流量。数据范围为 2009 年 3 月 30 日至 2018 年 12 月 17 日。

方法概述

首先是一个简短的免责声明:为了充分证明我的观点,我需要对几个模型和预处理方法进行彻底的研究,这超出了本文的范围。但即使将研究限制在以下四种方法,也可以得出初步结论:*均法、指数*滑法、随机森林法和梯度推进机法。

*均

一种简单的复合*均法。首先,一周中每天的*均值是在每天汇总数据后获得的。接下来,计算一天内小时数的百分比,使我们能够将数据从每日预测重新分配到每小时预测。

指数*滑

指数*滑需要分配随时间呈指数递减的权重,这意味着该模型明确考虑了过去的事件。为了训练模型,*滑参数β (0 < β < 1) needs to be estimated.

随机森林

训练随机森林意味着重复选择数据子集和随机选择特征来训练回归树。随后,通过对使用每个单独的回归树做出的预测进行*均来构建预测。

梯度推进机

梯度推进机器通过迭代地将所谓的弱学习器组合成一个单一的强学习器来训练。每次迭代旨在通过估计回归树来进一步最小化早期训练的学习者的误差项。

注意,为了将机器学习技术应用于诸如该数据集的时间序列,不能忽略特征工程。根据机器学习的本质,不会考虑时间因素,因此数据科学家应该通过特征来指示时间依赖性。特别是当数据显示趋势时,自回归(包括滞后值)可能是有价值的,因为机器学习技术通常不能很好地进行外推。在这个练习中,对于随机森林和梯度推进机器方法,我选择包含这些时间指示器:年、月和星期几。

结果

我首先使用截至 2017 年 12 月 9 日的数据来训练我们的各种模型。我让模型提前一周预测。

基于这些结果,随机森林模型似乎具有最高的预测能力,因此将构成首选模型。

接下来,我对所有的模型进行了一年同期的训练,就在一年之后(直到 2018 年 12 月 9 日),让他们再次提前一周进行预测。

尽管预测的目标是今年的同一时期,仅仅是未来一年,但现在的结果和随后的结论却截然不同。这是我的主要观点。即使在一个相对简单的数据集内,改变上下文也可能导致实质上不同的结果和结论。

从这个实验中得出的一个结论是全面再培训的重要性。通常,再训练归结为将完全相同的方法、预处理和特征工程应用于稍微不同的数据集。然而,如上所示,持续使用曾经选择的方法会导致错误的结论。

可能更重要的是,它证明了数据集的背景对结果的影响远远超过任何单一模型的预测能力。这意味着每个建模任务都需要考虑一系列方法。每种方法的性能(以及方法的选择)将在很大程度上取决于手头问题的背景。

伦理在人工智能中的重要性

原文:https://towardsdatascience.com/the-importance-of-ethics-in-artificial-intelligence-16af073dedf8?source=collection_archive---------17-----------------------

Photo by ThisIsEngineering on Pexels

(或任何其他形式的技术)

“仅仅因为我们可以,并不意味着我们应该”可能是在谈到技术创新时要记住的事情。互联网的到来将创新的速度提高了 10 倍,让我们几乎可以创造任何我们能想到的东西。人工智能是一个很好的例子,在这个空间里,我们可以建造任何我们喜欢的东西,但我们应该这样做吗?

和它的开发者一样道德

伦理(名词 ): 管理一个人的行为或进行一项活动的道德原则。(“许多科学家质疑残酷实验的伦理” )

我们人类有一种叫做“道德指南针”的东西。它是一种存在于我们大脑中的代理,基本上能辨别是非。当你看到不公正时,你的大脑会告诉你有些事情不对劲。由此而来的行动由你决定,但你可以分辨对错。你的道德标准很大程度上取决于你的教养和环境,但大多数人都有这样的标准。这也是公司建立道德和合规的基础,什么是对的,什么是错的,以及我们如何在此基础上制定规则。

人工智能缺乏这样的指南针。事实上,它没有任何指南针。人工智能只能根据贴有“正确”和“错误”标签的数据来区分对错。人工智能没有自我意识,也没有所谓的“同理心”,这是伦理学的基础。当谈论人工智能时,唯一的道德指南针是它的开发者,他们为什么是对什么是错设置了标准。如果开发者的道德罗盘很低,他/她可能会怀着不良意图开发 AI,反之亦然。这并不意味着人工智能实际上会一直遵循这些标准,因为人工智能不是被编码的,而是被训练的。这意味着它可能是善意的,但仍然像人们希望的那样,起草成道德上不那么认可或“为好”的东西。

那么,为什么技术中的伦理如此重要呢?

嗯,如果我们不基于道德来构建技术,并确保我们了解我们实现的每个算法的结果,我们就有可能不道德。因此,我不是说“吃饭时使用刀叉”是道德的。我的意思是——不是种族主义或牵连无辜的人——道德。听起来很重?我们已经有有偏见的数据导致潜在的种族主义决策的例子。

或者更糟,那次脸书开发了两个会说话的人工智能机器人。他们用英语交谈了一会儿,然后构建了他们自己的语言,开发者无法理解。这是不道德的吗?从人类无法监控正在发生的事情的意义上来说,这些对话的结果(或内容)很可能是不道德的。

人工智能没有自我意识,也没有所谓的“同理心”,这是伦理学的基础。

控制行为

让我们再一次抓住伦理的定义:“伦理是支配一个人行为的道德原则”。如果我们不能控制我们建造的东西的行为,我们怎么能检查它的伦理呢?我们需要永远(永远永远)成为决定人工智能行为的人。当然,对于像“自我学习”这样的选项,我们不想减慢它的发展过程,因为那样会违背它的整个目的。这最终意味着两件事:

  1. 我们需要将伦理道德融入为什么开发某种配备人工智能的技术的想法中
  2. 我们需要监控/检查/监管特定技术的结果,以便充分理解它的行为,并确保它不违反我们(人类)的道德准则。

因此,伦理不仅在技术领域(尤其是人工智能领域)很重要,而且应该是任何创新的基础。我们不能冒构建不道德工具的风险。因此,如果某件事为了创新或经济利益而冒不道德的风险,我们应该想到:

“仅仅因为我们可以,并不意味着我们应该”

以上是技术应该如何帮助我们,而不是与我们作对的基础。如果你想更多地了解这种不可避免的未来方式或工作方式,请查看以下网站的研究:https://brand humanizing . com/research/brand-humanizing-an-accessible-and-humanized-on-business-in-a-incremented-robotic-world/

语言在人类认知和人工智能中的重要性

原文:https://towardsdatascience.com/the-importance-of-language-in-human-cognition-and-artificial-general-intelligence-6d33af481684?source=collection_archive---------6-----------------------

关于发展真正的 AGI,心理语言学能告诉我们什么

Photo by Joel Naren on Unsplash

我经常自言自语。很多人都这样。我想说,大多数人利用内心演讲来解决各种问题。语言似乎是解决问题过程以及我们如何向自己描述世界的一个重要组成部分。我们如何理解原子尺度和宇宙尺度,以及它们之间的关系?这种事情在很多方面都是不可理解的。但是我们通过自己的语言理解它们。如果语言对我们更高层次的思维过程如此重要,那么我们在设计模仿或类似于人类思维过程的人工智能应用程序时,必须考虑这一点。

内部讲话

总的来说,没有很多关于内心独白和内心演讲的讨论。一些人认为几乎每个人都使用它,而另一些人不同意。一种可能是,在某些个体中,内部言语并不是有意识的。就像每个人都会做梦一样,也许每个人都会进行内心的对话,但是对于某些人来说,这太潜意识了。有些人还大声自言自语。我承认这样做。再一次,这种自我交流的元素似乎在解决更高层次的问题时很有用。所以我认为我们需要更多地了解这一现象,以及它与 AGI 的关系。

语言和世界观

一些人类学家甚至认为语言塑造了我们对现实的感知。有一种理论或假说,被称为萨皮尔-沃尔夫假说。这一假设与诺姆·乔姆斯基提出的人类本质上以同样的方式思考和形成语言(普遍语法)的观点形成了对比。虽然第二个想法可能很好,从政治上来说,因为它意味着我们有更多的共同点,但从心理上来说,有理由相信它是不正确的。我一会儿会更多地谈到这个想法。

萨皮尔-沃尔夫假说以两种形式存在:弱形式和强形式。在弱形式中,该理论认为语言对我们的世界观和思维过程有影响。强式认为语言决定了我们的思维过程。我更倾向于强大的萨丕尔-沃尔夫阵营。

语言的结构似乎确实会影响我们的思维方式。基思·陈(Keith Chen)研究了在描述事件过程中不同结构的语言。陈的研究至少表明,语言结构影响行为。在他的研究中,他观察了不同语言使用者的投资习惯。他发现,像英语这样的语言“迫使说话者在语法上把未来和现在分开,导致他们对未来投资减少。”

语言也能影响我们是否责备一个人。凯特琳·m·福西和蕾拉·博罗迪特斯基研究了记忆如何受到语言的影响。英语、西班牙语和许多其他语言使用施事语言。然而,在意外情况下,说英语的人似乎比说西班牙语的人更多地使用它。一个可能的解释是,为什么被动语态在英语中不受欢迎,但西班牙语却经常使用。但是不管是什么原因,说英语的人比说西班牙语的人更容易记住事故中的特工。

虽然有可能存在另一种解释,但最合理的解释似乎是,使用被动语态并避开事故中涉及的代理人会降低记住事故中涉及谁的能力。然而,也可能有其他的可能性,比如在分配责备的重要性方面的文化差异。

Kuuk Thaayorre 语是语言如何塑造我们认知的另一个有趣例子。在语言中,没有左或右的词。每个方向都是基于基本方向给出的。因此,总是知道主要方向在哪里是非常重要的。说这种语言的人碰巧也很清楚自己身在何处。

[## “语言如何塑造我们的思维方式”抄本

TED Talk Subtitles and Transcript:世界上大约有 7000 种语言,它们都有…

www.ted.com](https://www.ted.com/talks/lera_boroditsky_how_language_shapes_the_way_we_think/transcript?language=en)

尽管我们仍有很多东西可以学习,但这三项关于语言和认知的不同研究使得语言对记忆、行为和一般思维过程有重大影响的理论变得相当有力。

人工智能的应用

所有这些关于语言的理论与人工智能有什么关系?如果我们想要像人类一样思考的机器,我们需要了解人类是如何思考的。如果语言真的是类人思维的基础,那么我们需要确保一个强大的语言框架被构建到任何 AGI 应用程序中。一个真正的 AGI 要充分发挥作用,需要以下关键因素,这似乎是合理的。

  • 任何足够先进的 AGI 都需要能够动态地学习新语言。被预编程基本的语言处理不会削减它。
  • AGI 需要能够识别多种环境,并与多个人进行单独的对话。
  • AGI 需要能够“自言自语”

考虑到这几点,我确实有一个试验这些想法的建议。我们可以尝试创建一个具有基本语言学习能力的人工智能应用。它还需要能够区分不同的发言者。特别是如果我们有我在之前的 AGI 文章中提到的修改过的图灵测试,我们可以将这个版本与另一个版本进行比较,后者包括更强大的语言处理。

要做到这一点,我们可以采取完全相同的程序,但增加了额外的内部声音元素和观察自己讲话的能力。正是因为这个原因,AGI 人需要能够理解多种语境和说话者。

对于该任务的第一部分,可以简单地运行同一应用程序的第二个实例,其中唯一的通信流是在两个实例之间。如果内部对话是人类式认知的重要特征,我们应该期待看到更像人类的讨论。

导航: 主索引 | 人类学索引

进一步阅读

[## 人工智能心理学

为什么心理学、人类学和认知神经科学的理论需要应用于发展…

towardsdatascience.com](/the-psychology-of-artificial-intelligence-cb03d060288c) [## 人工智能为什么这么恐怖?

难道我们的孩子不是我们的未来。

medium.com](https://medium.com/@dgoldman0/why-is-artificial-intelligence-so-terrifying-49d4068f6444) [## 克林贡语还是克林贡语:一个语言学问题

最*,一个 Nerdist 帖子受到了书呆子们的额外关注,因为标题作者使用了术语“克林贡语”…

medium.com](https://medium.com/geekers-keep/klingon-or-klingonese-a-linguistic-question-fd3740edad5e)

软技能在数据科学中的重要性—书籍推荐

原文:https://towardsdatascience.com/the-importance-of-soft-skills-in-data-science-book-recommendations-3cbce1b11c67?source=collection_archive---------14-----------------------

“It is what you read when you don’t have to that determines what you will be when you can’t help it.” — Oscar Wilde (Image by author)

这些是我推荐给数据科学家作为个人发展一部分阅读的最佳书籍。

在经典的数据科学维恩图中,数据科学家存在于数学和统计学、黑客和领域专业知识技能的交汇处。但与此同时,软技能在数据科学角色中也很重要。为了真正有效,数据科学家应该拥有强大的沟通技巧;能够谈判并说服利益相关者;并最终带领项目和团队在各种商业或工业环境中取得成功。

这促使我为新兴的数据科学家编写了一份书籍推荐清单,将阅读视为他们个人发展的一部分。在我指导和领导项目团队的责任越来越大的过程中,我意识到,尽管数据科学家通常非常认真地对待他们的持续发展,但他们通常非常关注该角色的技术技能,而忽视了在软技能方面的专门学习之间的*衡。我发现将软技能学习纳入我的个人发展计划非常有益,可以增强我的商业意识和对企业(更重要的是人)运营方式的理解。我鼓励在我帮助领导的项目和团队中学习这些知识,并取得了很好的效果。

在这些建议中,我总结了从每本书中学到的关键数据科学知识,这些知识可以在工作中付诸实践。我专注于我认为最能相互补充的书籍,以完善一名有效的数据科学家应该掌握的许多软技能,这些技能是从我从初级角色成长为高级角色以及作为各种项目的技术主管的经历中收集的。

“如何停止担忧,开始生活”——戴尔·卡内基

这是我过渡到数据科学职位后阅读的第一本“自助”书籍,它很好地介绍了个人发展的有效性。

Image from Wikipedia under Fair Use

推荐理由:任何经历过冒名顶替综合症的人!

主旨:认识到你担忧的原因,然后合理化它们,并形成一个克服它们的计划。

数据科学家需要学习的重要知识:当担心项目简介、代码错误、对利益相关者的演示等时。这有助于识别减轻风险,这样你/你的团队/你的利益相关者可以确信事情得到了理解和控制。

最喜欢的一句话:“决定一件事情到底值多少焦虑——拒绝再给它了。”

“如何赢得朋友和影响他人”——戴尔·卡内基

在欣赏了戴尔·卡耐基的写作风格后,我接着读了他的《影响他人》一书,这本书本身就是一本极具影响力的书(太元了)!不要让标题让你分心:这个建议根植于做最真实的自己,关注人际交往技巧和换位思考的重要性。

Image from Wikipedia under Fair Use

推荐适合:反社会者(j/k!)任何想变得更有同情心或更有风度的人。

主要信息:真诚、诚实、积极、谦逊地对待他人,真诚地关心和尊重他们。

数据科学家的重要收获:各种项目和团队将汇集各种各样的人,理解他们的动机和行为非常重要,这样您就可以带他们踏上构建理想解决方案的旅程,这可能与他们最初的期望一致,也可能不一致。

最喜欢的一句话:“赢得争论的唯一方法就是避免它。”

“快速思考和慢速思考”——丹尼尔·卡内曼

了解我们有意识和无意识思维过程之间差异的伟大著作。

Image by author

推荐对象:希望在行动和行为中加入更多理性和深思熟虑的人。

主要信息:通过识别我们“快”和“慢”的思维方式,我们可以更好地控制决策中逻辑的使用,减少任何源于情绪或无意识偏见的过度自信。

数据科学家的重要收获:在 DS 项目中与人们的各种接触中,了解您和他们的决策是如何发生的是很有用的,因为不是每个参与的人都会以相同的方式思考,所以您应该根据情况定制您的方法,并在必要时进行“慢”思考。

最喜欢的名言:“他有印象,但他的一些印象是幻觉。”

“高效人士的 7 个习惯”——斯蒂芬·R·科维

介绍七种有效实现目标的方法,尤其是与他人合作时。

Image by author

推荐职位:项目管理、团队领导或顾问职位。

主要信息:如何从依赖走向独立(自我掌握)和相互依赖(与他人有效合作)。

数据科学家的重要学习:****通过衡量紧急程度和重要性(优先级矩阵“执行”、“计划”、“委派”或“消除”)来展示任务的有效优先级,这对于分解利益相关方的请求非常有用,因此您可以专注于最有价值的部分。概述了“协同”团队的方法,以帮助确保数据科学家与相同的目标保持一致,并积极地朝着这些目标努力,依靠有效的领导来确保“双赢”局面。

****名言:“先寻求理解,再寻求被理解。”

“个人 MBA”——乔希·考夫曼

MBA 课程中典型课程的浓缩版。它突出了商业教育的关键方面和战略的例子。

Image by author

****推荐给:那些商业背景或培训有限的人,尤其是现在与商人或在商业环境中工作的人。

****主要信息:贯穿商业模式的有效战略和决策背后的思想;从评估市场和衡量价值到制造产品和管理不确定性。

****数据科学家需要学习的关键知识:利益相关者、高层管理人员和第三方提供商或顾问通常都比数据科学家有更坚实的业务基础和背景。为了理解他们的动机,并从根本上说他们的语言以获得他们的信任,学习商业理论是至关重要的;涵盖价值创造的形式&交付、营销、金融、心理学以及商业模式和系统的功能。

最喜欢的名言:“哪里有麻烦,哪里就有机会。”—(争议溢价)

“子弹日记法”——赖德·卡罗尔

通过有效的笔记和待办事项列表来提高工作效率的方法。

Image from Wikipedia (copyrighted free use)

****推荐对象:那些努力跟踪不断增长的待办事项清单的人。

****主要信息:使用一个简单的符号和规则的书面系统来记录行动、事件和笔记,你可以提高你的工作效率。

****数据科学家需要学习的重要知识:科技行业的工作节奏往往很快,业务部门会提出各种各样的动态要求,因此在日常工作中管理这一点非常重要,而这正是子弹日志法可以提供帮助的地方。一名数据科学家可能在一天之内身兼数职,编制各种各样的待办事项列表,然后对其进行排序和优先排序,这样你就知道现在要做什么、未来要做什么,或者如果不重要就删除(参见上面的“7 个习惯……”)。

最喜欢的名言:“追踪过去,订购现在,设计未来。”

以下书籍包含了数据科学&商业技术技能的软性方面的各种逻辑、推理和见解。

Image by author

“魔鬼经济学”、“超级魔鬼经济学”、“像怪物一样思考”和“什么时候去抢银行”——史蒂文·d·莱维特和斯蒂芬·j·杜布纳

这些都是引人入胜的读物,显示了经济学是如何成为社会许多部分的根源,突出了它的重要性和影响力。

Image by author

《卧底经济学家》、《生活的逻辑》和《适应:为什么成功总是从失败开始》——蒂姆·哈福德

通过经济学在商业、市场营销、战略和创新中的应用来探究社会中人们的心理。

Image by author

“四大巨头:亚马逊、苹果、脸书和谷歌隐藏的 DNA”——斯科特·加洛韦

“你足够聪明去谷歌工作吗?”—威廉·庞德斯通

“局外人:成功的故事”——马尔科姆·格拉德威尔

“精益创业:持续创新如何创造出彻底成功的企业”——Eric Ries

这些书强调了创造性思维和创新行动的能力是当前科技公司蓬勃发展的基础,并寻求在他们的雇佣中增加/增长。

Image by author

“自我发展经理指南”——迈克·佩德勒、约翰·伯戈因和汤姆·博伊德尔

“非暴力沟通:生活的语言”——马歇尔·罗森伯格

“完成任务:如何实现无压力的生产力”——大卫·艾伦

“领导者的思维模式:如何在混乱的时代获胜”——特伦斯·莫里

“如何通过公开演讲培养自信并影响他人”——戴尔·卡内基

这些书介绍了优秀领导力的方方面面,从良好的自我意识和适当的心态,到能够以积极和富有成效的方式影响他人。

Image by author

“推动:改善关于健康、财富和幸福的决定”——理查德·h·泰勒和卡斯·r·桑斯坦

“谎言和统计的实地指南:神经科学家如何理解复杂的世界”——丹尼尔·列维京

“经济自然主义者的回归:经济学如何帮助理解你的世界”——罗伯特·h·弗兰克

“可预测的非理性:塑造我们决策的隐藏力量”——丹·艾瑞里

“信号和噪音:预测的艺术和科学”——内特·西尔弗

“被闪电击中:好奇的概率世界”——杰弗里·s·罗森塔尔

“如何不犯错:日常生活中隐藏的数学”——乔丹·艾伦伯格

“巧合、混乱和所有的数学爵士乐:让有分量的想法变轻”——爱德华·b·伯格和迈克尔·斯达伯德

这些都是关于使用数学和统计来帮助理解人们和社会的行为,我们如何误解和误判我们的偏见,以及如何更好地使用概率来通知我们的决定,以及我们评估风险和结果可预测性的方式的一些伟大的读物。

Image by author

“醒醒!逃避自动驾驶的生活”——克里斯·佩雷斯·布朗

“生活的规则”——理查德·圣殿骑士

“设计快乐:在日常生活中寻找快乐和目标”——保罗·多兰

“幸福的代数”——斯科特·盖洛韦

最后,但绝不是最不重要的,是一些关于积极快乐心态重要性的书;这在商业技术行业是一个很好的*衡,因为尽管我们用逻辑、度量和效率衡量工作,但我们不是机器人,应该始终投资于我们的精神健康和福祉。

我很好奇,也对任何人关于商业技术的进一步建议感兴趣。数据科学家的领导力或软技能资源。这些和其他资源都聚集在我的 datascienceunicorn.com 博客上。请打我!

当我整理这份清单时,我意识到男性作者在其中的主导地位,并记下在这些领域寻找更多女性作者的书。欢迎所有推荐。

参考文献

http://drew Conway . com/Zia/2013/3/26/the-data-science-Venn-diagram
https://towardsdatascience . com/soft-skills-will-make-or-break-you-as-a-data-scientist-7b 9 c 8 c 47 f 9 b
http://www.datascienceunicorn.com

机器学习的开端

原文:https://towardsdatascience.com/the-inception-of-machine-learning-90b9fc3737ff?source=collection_archive---------23-----------------------

在流行语的搭配中,“机器学习”一词成为了很大的竞争者。但是你有没有想过这个术语是怎么来的?

让我们深入了解它的历史,了解它是如何演变成今天的样子的。

这个术语是阿瑟·塞缪尔在 1959 年创造的,他定义它为—

"给予计算机无需明确编程就能学习的能力的研究领域."

在 IBM 工作期间,亚瑟·塞缪尔在 IBM 的第一台商用计算机 701 上编写了一个跳棋程序。

你听说过跳棋吗?这是一个简单的战略棋盘游戏,也称为跳棋。

亚瑟自己并不是一个很好的跳棋选手,但是让这个程序和它自己玩上千次游戏,它变得足够体面来挑战一个业余选手。这是世界上第一个成功的自学项目。

这个程序的主要任务是找到一个从当前状态可以到达的有利的棋盘位置,这将导致一场胜利。由于机器的存储容量有限,在游戏结束前搜索每一条路径是不可行的,所以亚瑟设计了一个计分函数来衡量每一方在给定位置获胜的机会。程序使用极小极大策略决定下一步行动。这个过程后来被称为阿尔法-贝塔剪枝

谁能想到教电脑玩游戏会引出这样一个革命性的研究领域?

是的,你猜对了!亚瑟这么认为。他认为,通过教计算机玩游戏,可以开发出解决一般问题的策略。

但这是开始吗?

不要!

在术语“机器学习”艾伦·图灵在他的论文计算机器和智能中提出——“学习机器”可以学习并变得人工智能。在同一篇论文中,他介绍了著名的模仿游戏,该游戏旨在回答“机器能思考吗?”

他相信,到本世纪末,技术进步将使通过编程制造一台能玩模仿游戏的机器成为可能。根据他的说法,要模仿成年人的思维,重要的是要考虑导致其当前阶段的因素,即—

  1. 心灵的最初状态——童年。
  2. 教育,它提供了。
  3. 人生经历,它是受。

奖励和惩罚的方法会在头脑中形成模式。图灵提到,这整个过程在很大程度上类似于自然选择的进化过程。

虽然他给出的解释可以被认为是抽象的,但“机器学习”的当前状态,以及它的方法,如监督、非监督和强化学习,是他所预期的。

机器学习起源于领先于他们时代的先驱们的雄心勃勃的推测和工作。

对于大多数学习者和爱好者来说,机器学习似乎是一个相对较新的领域,但它有一段发现和批评的历史。随着硬件和计算的进步,它现在已经成为我们这一代最伟大的技术之一;它有可能彻底改变我们文明的无数方面。

在后续的博客中,我将分享我对机器学习学习。我希望再次得到你的时间和关注。谢谢大家!

对数据科学家日益增长的需求。一次采访

原文:https://towardsdatascience.com/the-increasing-demand-for-data-scientists-an-interview-6d74d98afba0?source=collection_archive---------22-----------------------

此采访原载于 2019 年 9 月 25 日经验论

在当今世界,成为一名数据科学家是很棒的,对数据科学家的需求正在上升,对该角色的招聘也在增加。虽然对数据科学家的需求似乎在增加,但这回避了一个问题,为什么完全合格和训练有素的数据科学家很难找到工作?

机会

“越来越多的用例及公司证明了数据的变革价值,”Zoopla 数据科学主管 Jan Teichmann 评论道。“数据科学和机器学习模型降低了 B2B 的风险和成本,并为 B2C 创造了全新的产品和收入来源。炒作已经越来越证明了自己,人工智能的最新进展正在达到从研发到现实世界应用的突破点。在这种背景下,哪个行业能够承受得起持续的数据转换并保持长期相关性?”

鉴于这一切,数据科学已经完全融入了 DevOps 文化;使用强大的分析技术变得前所未有的容易。Jan 指出,“最佳实践、*台和工具包的新兴标准显著降低了数据科学团队的准入门槛和价格。这使得公司和从业者更容易获得数据科学。”

然而,这已经对数据科学家的角色产生了连锁影响,技术领域和对该领域本身的看法正在发生快速变化。“重要的是要记住,数据科学(a)仍然是一个新兴的业务职能,并且(b)不断从持续创新中发展,”Jan 说,“虽然数据科学独角兽一如既往地罕见,但数据科学学科的分化和成熟程度已经大大提高。现在,跨职能团队正在研究算法,一直到全栈数据产品,重点是研究、商业应用、实验、可解释性、算法公*性和数据伦理。如今,有了高级分析师、数据科学家、人工智能工程师和数据运营专业人士,CDO(首席数据官)也不再罕见。”

当然,这是一个不断增长的商业市场。“随着任何主要云提供商的数据科学*台和 PaaS 产品的供应商越来越多,大数据和数据科学项目中的技术挑战可以由任何人来克服,而不仅仅是高科技公司,”Jan 补充道,“数据科学最终从宣传转向了更加务实、注重价值的交付模式。”

关键技能

Public Domain

那么,当今数据科学专家需要哪些关键领域的专业知识呢?该领域涵盖了从分析到算法、数据库和大数据处理的所有内容,范围相当广泛 Python、Matlab、R、SAS、SQL、noSQL、Hadoop 和 Spark 对数据科学家很有用;面向数据工程师的 C++、Java、Perl、Python、Ruby 以及面向机器学习工程师的 Java、Julia 和 Scala。

“对于大多数商业应用团队来说,数据科学家可以站在优质开源社区和工具包及框架的肩膀上进行日常工作,”Jan 说,“以前需要的学术/科学理解已经让位于对掌握现实世界数据基础设施(通常由质量差的数据孤岛组成)、商业意识、与更广泛的业务利益相关者交流见解的能力以及围绕价值证明的强大产品思维的需求。”

嘎吱声

尽管如此,许多专家还是很难找到工作。Jan 解释说:“在过去的 10 年中,85%的大数据和数据科学项目未能产生业务影响,许多团队因此被解散。虽然该领域和行业已经从之前的膨胀预期宣传中学到了很多,但我们仍处于谨慎再投资阶段的早期。新的数据科学团队在通过交付的业务影响来证明其价值的新步伐中,发展速度比以前慢得多。”

此外,还有领导力的挑战。简说:“数据科学家并不短缺,但与此同时,许多企业很难找到合格的领导者和管理者,他们这次可以开辟一条更加成功和可持续的道路。这确实阻碍了目前对数据科学的投资,并可能使拥有数据科学技能的人暂时更难找到工作。”

正是在这种背景下,企业正在逐步建立自己的数据科学团队,提高现有员工的技能,同时也在招聘新员工。对于公司来说,确保数据工程师的到来,维护基础设施和监督数据收集,以及确保数据得到有效管理也很重要。

“一个优秀的数据科学团队是一个快乐的数据科学产品团队,完全有能力为内部利益相关者和外部客户的需求提供全栈数据产品,并受到他们成功交付业务影响的激励,”Jan 说,“可扩展的交付渠道和快乐的数据科学家之间有着重要的联系。数据科学家的动机是开发新模型来解决相关的业务问题,而不是模型在生产中的日常运营责任。这意味着,数据基础设施、数据科学*台、自动化和数据运营不仅是交付业务成果的关键问题,也是长期留住团队的关键问题。”

结论

Public Domain

基于大数据可以为企业带来的巨大价值,建立强大的数据科学能力将是未来几年的一个关键优先事项。随着该领域的成熟,它正在成为一项运营要求。

正因为如此,能够展示多学科技能组合(例如,进入网络安全领域)的专家很可能处于领先地位,而能够证明自己是称职经理的数据专家将受到特别高的需求。然而,更大的挑战将是确定数据分析可以为组织提供价值的新用例,以及可以释放指数增长的数据点。

关于经验论

Empiric 是一家屡获殊荣的企业,也是发展最快的技术和转型招聘机构之一,专注于数据、数字、云和安全领域。我们为寻求合同制和永久制专业人员的企业提供技术和变更招聘服务。

empiric.com

Jan 是公司数据转型方面的成功思想领袖和顾问,拥有将数据科学大规模应用于商业生产的记录。他最*被 dataIQ 评为英国 100 位最具影响力的数据和分析从业者之一。

在领英上连接:https://www.linkedin.com/in/janteichmann/

阅读其他文章:https://medium.com/@jan.teichmann

难以置信的收缩伯努利

原文:https://towardsdatascience.com/the-incredible-shrinking-bernoulli-de16aac524a?source=collection_archive---------22-----------------------

抛硬币模拟黑客新闻到达间隔时间分布

Joey Kyber via Pexels

伯努利计数过程

伯努利分布听起来像一个复杂的统计结构,但它们代表了抛硬币(可能有偏差)。我发现令人着迷的是这个简单的想法是如何导致更复杂的过程建模的,例如一个帖子被投票支持的概率,我将在稍后的日期发布一个故事。

伯努利计数过程评估一定数量的翻转试验 n 的事件分布。对于随机二进制序列 n,我们评估的和是某个数字的概率。

例如,对于这 10 次试验,总和将是 S([0,0,1,0,1,0,0,0]) = 3。对于概率为 p 的过程,n 次试验中 S 的期望值为 p*n。例如,如果 p=0.3,则 10 次试验中的期望值为 3 次事件。

伯努利计数过程中的泊松计数过程直觉

泊松过程是伯努利到连续空间的延伸。它用于模拟到达时间,或某段时间内的事件计数概率。

在齐次泊松过程的简化情况下,它由λ它的速率或强度来定义。λ是每单位时间的*均事件数,因此事件数对时间 t 的期望值为λ*t。例如,如果λ = 0.3(每秒),则 10s 内的期望值为 3 个事件。

我们可以看到两者是相关的,如果你把伯努利试验想象成泊松点过程的时间采样版本。我们可以任意将伯努利增量定义为 1/k,模拟速率λ的泊松分布导致我们将概率定义为 p = λ/k。

Shrinking Bernoulli converges to Poisson

伯努利和泊松过程到达间隔时间分布

伯努利过程的非直观部分来自到达间隔时间。继续上面 p=0.3 的例子,你可能首先猜测到达间隔分布的分布将在 3 左右达到峰值。

然而,该分布实际上是几何分布,我们可以类似地模拟泊松过程的到达间隔时间。

考虑事件发生的初始条件。让我们称 Yᵢ为事件在初始事件发生后增量为 I 时的值。如果距离是 1,那么 Y₁=1 和它的概率是 p。对于距离是 2,我们需要 Y₁=0,Y₂=1 的概率是(1-p)*p。对于 3,Y₁=0,Y₂=0,Y₃=1 的概率是(1-p) p。等等,距离 x 是 I 的概率是

Inter-arrival distance is geometric

一个快速的模拟证实了这一点

这个到达间隔时间也有助于获得泊松到达间隔时间的直觉,它是伯努利到连续时间的延伸。

泊松过程的一个关键特性是它们是无记忆的。把伯努利推广到连续,如果事件在时间 t 还没有发生,它在 t+x 内不发生的概率与 t 无关。

就像在伯努利中,你在抛硬币(只是超快),它与过去的事件无关。它可以写成

Memoryless property

我们可以由此推导出泊松的到达间隔分布

因此 h(x)必须是线性的,我们用-λ作为 prob 是<1

following a similar logic as per Bernoulli, P(X> x)表示在 x 之前没有事件发生,我们可以重写

当泊松率为 0.3 时,我们可以将泊松理论分布和伯努利分布重叠,以查看它们是否匹配。

Bernoulli simulating Poisson inter-arrival times

要获得这方面的丰富资源,请查看麻省理工学院的离散随机过程课程这里,以及关于泊松过程的章节

一个真实世界的例子:黑客新闻发布到达间隔时间

黑客新闻定期向 Kaggle 发布一个数据集。张贴的故事的到达间隔时间通常被建模为泊松过程。

你可以在这个 Kaggle 笔记本里找到下面的分析。

我们来看看数据。我们只看时间(epoch)并导出以秒为单位的到达间隔时间(delta_s)

Select columns of the HN dataset with added inter-arrival times

*均来说,我们计算的到达间隔时间是 101 秒。这应该给我们一个密度分布:

with inter-arrival rate of 101s

让我们插入真实数据和理论数据。非常接*但不完美。

然而,恒定速率假设很可能不成立,让我们来看看。

我们可以看到,黑客新闻的到达率在一周内比周末高得多,在工作日期间相对相似,在太*洋时间 6-12 时最高。

选择*日,6-12 太*洋,我们得到一个几乎完美的适合。

我的硬币在哪里?

所有这些都很有趣,但并不迷人。然而,令人着迷的是我们如何——这又是伯努利——抛一枚有偏向的硬币来模拟这种分布。

高使用率时段 6-12 的*均到达率为每 51 秒 1 个故事。如果你掷硬币的概率是 1/51 的“1 ”,给出的期望值是每 51 秒一个故事,你会得到相同的分布。
“翻转事件”看起来像数组([0,0,0,1,0,0,0,0,0,0,...]),如上所述,我们处理 1 之间的距离。如果你多次运行这个过程,下面是你得到的结果。

Flipping a biased coin to simulate HN inter-arrival times (Bernoulli)

感谢阅读。

数据缩放对机器学习算法的影响

原文:https://towardsdatascience.com/the-influence-of-data-scaling-on-machine-learning-algorithms-fbee9181d497?source=collection_archive---------22-----------------------

缩放是数据预处理的行为。

数据再处理包括在数据被用于进一步的步骤之前,对数据进行向上或向下的转换和缩放。属性常常不能用相同的标准、尺度或度量来表达,以至于它们的统计数据会产生失真的数据建模结果。例如,K-Means 聚类算法不是尺度不变的;它通过欧几里得距离计算两点之间的距离。重新回忆一下欧几里德距离的概念—它是一维空间中两点之间的非负差值。因此,如果其中一个属性的值范围很大,计算出的距离将会受到该属性的影响(即较小值的属性贡献很小)。例如,如果其中一个属性以厘米为单位进行测量,然后决定将测量值转换为毫米(即,将这些值乘以 10),则生成的欧几里德距离会受到显著影响。要让属性将大约成比例地添加到最终计算的距离,该属性的范围应该被规范化。

归一化有多种含义,最简单的情况是,它指的是将某个属性标度转换到某个版本,该版本在与另一个属性进行比较时消除了总体统计数据的影响。

试图使用像主成分回归(PCR)这样的分析技术要求所有的属性都在同一尺度上。属性可能具有会影响 PCR 模型的高方差。缩放属性的另一个原因是为了计算效率;在梯度下降的情况下,函数收敛得相当快,而不是根本没有归一化。

有几种归一化方法,其中常见的有 Z 值最小最大值

一些统计学习技术(即线性回归)在缩放属性没有效果的情况下可能受益于另一种预处理技术,如将名义值属性编码为一些固定的数值。例如,任意给一个性别属性赋予值“1”表示女性,赋予值“0”表示男性。这样做的动机是允许将属性合并到回归模型中。确保在某处记录代码的含义。

选择最佳预处理技术——Z 值还是最小最大值?

简单的答案是两者兼而有之,这取决于应用。每种方法都有其实际用途。观察值的 Z 值定义为高于或低于*均值的标准偏差数,换句话说,它计算方差(即距离)。如前所述,聚类数据建模技术需要标准化,因为它需要计算欧几里德距离。Z 得分非常适合,并且对于根据特定的距离度量来比较属性之间的相似性至关重要。这同样适用于主成分回归(PCR);在其中,我们感兴趣的是使方差最大化的成分。另一方面,我们有将数据属性转换到固定范围的最小-最大技术;通常在 0 到 1 之间。Min-max 法取的函数形式 y =(x-min(x))/(max(x)-min(x)),其中 x 为向量。例如,在图像处理和神经网络算法(NNA)中,因为像 NNA 的[0,255]这样的大整数输入会中断或减慢学习过程。最小-最大归一化将 8 位 RGB 颜色空间中图像的像素亮度值范围[0,255]更改为 0–1 之间的范围,以便于计算。

直观地学习数据预处理

也许在数据集上应用规范化方法可以揭示它发生了什么;我们可以将数据点转换可视化,以便更直观地解释它。因此,让我们从加载来自 UCI 机器学习数据库的数据集开始。这是一个葡萄酒数据集,其特征是第一列中标识为(1,2,3)的三类葡萄酒。这些数据来自一项分析,该分析确定了三种葡萄酒中 13 种成分的含量。

df <- read.csv(“wine.data”, header=F)wine <- df[1:3]colnames(wine) <- c(‘type’,’alcohol’,’malic acid’)wine$type <- as.factor(wine$type)

使用 read.csv 将葡萄酒数据读取为没有标题的 CSV 文件。葡萄酒类型也通过 as.factor()转换成一个因子。这些步骤不是标准化所必需的,但却是良好的常规做法。

我们选择了三个属性,包括葡萄酒类别,以及标注为酒精和苹果酸的两个成分,它们以不同的尺度进行测量。前者用百分比/体积来衡量,而后者用克/升来衡量。如果我们要在聚类算法中使用这两个属性,我们很清楚需要一种标准化(缩放)的方法。我们将首先对葡萄酒数据集应用 Z 得分归一化,然后应用最小-最大方法。

var(wine[,-1])

std.wine <- as.data.frame(scale(wine[,-1])) #normalize using the Z-score methodvar(std.wine) *#display the variance after the Z-score application*

mean(std.wine[,1]) *#display the mean of the first attribute*

mean(std.wine[,2]) *#display the mean of the second attribute*

我们可以看到酒精和苹果酸是标准化的,方差为 1 和 0。

注意,*均数被提升到-16 的幂,-17 (e-16,e-17)分别表示接*于零的数。

接下来,我们创建 min-max 函数,将数据点转换为 0 到 1 之间的值。

min_max_wine <- as.data.frame(sapply(wine[,-1], function(x) { return((x- min(x,na.rm = F)) / (max(x,na.rm = F)-min(x,na.rm = F)))}))

绘制所有三种不同等级的葡萄酒数据点,如下所示:

plot(std.wine$alcohol,std.wine$`malic acid`,col = “dark red”,xlim=c(-5,20), ylim = c(-2,7),xlab=’Alcohol’,ylab=’Malic Acid’, grid(lwd=1, nx=10, ny=10))par(new=T)plot(min_max_wine$alcohol,min_max_wine$`malic acid`,col=”dark blue”,xlim=c(-5,20),ylim=c(-2,7),xlab=’’, ylab=’’,axes = F)par(new=T)plot(wine$alcohol,wine$`malic acid`,col=”dark green”, xlim=c(-5,20),ylim = c(-2,7),xlab=’’, ylab=’’,axes = F)legend(-6,7.5, c(“std.wine”,”min_max_wine “,”input scale”), cex=0.75, bty=”n”, fill = c(“dark red”,”dark blue”,”dark green”))

Three datasets; std.wine (red), min_max_wine (blue), and the original dataset (green) points

如你所见,有三个数据点集;在绿色集合中,测量值为原始体积百分比,而标准化属性为红色,其中数据以*均值 0 和方差 1 为中心,标准化最小-最大属性范围为 0-1。

这三个集合的形状可能看起来不同,但是,如果您使用新的比例放大每个集合,您会注意到,无论整体形状大小如何,这些点仍然精确地位于彼此相对的相同位置。这些标准化方法通过缩放保持了数据的完整性。

信息悖论

原文:https://towardsdatascience.com/the-information-paradox-38a411517f15?source=collection_archive---------31-----------------------

Photo by Alexandra Nicolae on Unsplash

摘要:下面的悖论是基于这样一种考虑,即一个统计数据的值并不代表一个有用的信息,只有当有可能证明它不是以随机的方式获得时,它才成为一个有用的信息。实际上,随机获得相同结果的概率必须非常低,才能认为该结果是有用的。由此可见,统计数据的价值是绝对的,但为了理解其是否有用而对其进行的评估是相对的,这取决于所采取的行动。因此,两个人在相同的条件下分析相同的事件,执行两种不同的程序,显然会发现相同的统计参数值,但对所获得数据的重要性的评估将会不同,因为它取决于所使用的程序。这种情况会造成一种情况,就像这个悖论中描述的那样,在一种情况下,实际上可以肯定统计数据是有用的,而在另一种情况下,统计数据却完全没有价值。这个悖论想要引起人们对用于提取统计信息的程序的重视;事实上,我们采取行动的方式会影响以随机方式获得相同结果的概率,从而影响对统计参数的评估。

信息悖论

我们有两个相同的宇宙,在这两个宇宙中存在同一个人,我们称之为约翰,他必须执行完全相同的任务,即分析数据库,以提取有用的相关性。正如我们已经说过的,宇宙是*等的,所以数据库是相同的,做这项工作的人也是相同的。需要分析的数据库包括与要研究的事件相关的一百万个参数。

在宇宙“1”中,约翰的行为如下:他获取整个数据库,并计算参数与要研究的事件的相关性。从该分析中,他发现 50 个参数与该事件高度相关,所发现的相关性有 0.005%的概率随机发生。在这 50 个参数中,John 根据他的经验确定了 10 个对研究事件有用的参数。然而,重要的是要指出,John 对 10 个参数所做的假设只是基于他的经验的假设,而不是精确解释 10 个参数与事件相关性的科学论证。

在宇宙“2”中,约翰以如下方式行动:在分析整个数据库之前,他使用他对事件的知识,以便从一百万个可用参数中选择 10 个他认为与事件最相关的参数。然而,同样在这种情况下,重要的是要指出,约翰对 10 个参数所做的假设只是基于他的经验的假设,它们不是精确解释 10 个参数与事件的相关性的科学论证。仅分析这 10 个参数,他发现其中 5 个与事件高度相关,发现的相关性随机发生的概率为 0.005%(如前一个案例)。

在实践中,约翰在两个宇宙中使用的分析方法的根本区别在于:在第一个宇宙中,约翰在对整个数据库执行统计分析后使用他自己的经验,而在第二个宇宙中,约翰使用他以前的经验来执行统计分析,以便减小数据库的大小。

现在让我们看看这种不同的方法是如何影响对所获得数据的评估的。为此,我们必须计算在两种情况下随机获得相同结果的概率。

在第一种情况下,宇宙“1”,为了计算以随机方式获得相同结果的概率,我们必须使用具有以下参数的二项式分布公式:

胜利概率(p) =随机获得相同相关性的概率

成功次数(k) =表示所考虑相关性的参数数量

测试次数(L) =数据库中存在的参数总数

通过在二项式分布公式中输入这些数据:

p = 0.005%

k = 50

L =一百万

结果我们得到 5.6%的概率。

现在让我们考虑第二种情况,宇宙“2”,即使在这种情况下,为了计算以随机方式获得相同结果的概率,我们必须使用具有以下参数的二项分布公式:

p = 0.005%

k = 5

L = 10

在这种情况下获得的概率是 7^-18%.

分析这些结果很容易理解,5.6%的百分比使得发现的相关性不显著。为了理解这个百分比有多高,我们还可以计算以随机方式获得 50 个以上考虑了相关性的参数的概率,这个概率是 46%。

现在我们分析第二种情况(7^-18%)的百分比。这一百分比非常低,因此我们实际上可以肯定发现的相关性不是随机的,因此这一结果代表了研究该事件的有用信息。

在这一点上,约翰必须决定是否实现发现的相关性。显然,利用发现的相关性意味着成本,因此错误的评估包含高风险。在宇宙“1”中,约翰处于困难的境地,事实上所做的工作不仅无用,而且危险,因为这可能导致他维持错误的投资。相反,在第二个宇宙中,约翰知道相关性是随机的概率几乎为零,所以他可以以可接受的风险进行投资。

总之,一个简单的程序错误导致了巨大的后果。在第一种情况下,约翰的经验是无用的,而在第二种情况下,它是从大型数据库中提取有用信息的关键资源。

事实上,在宇宙“1”的情况下,约翰不能再使用他自己的知识,他唯一能做的是将他的假设转化为真正的科学论证,但在许多情况下,如在金融领域,这样做可能非常困难。因此,当在进行分析后做出假设时,这些假设可能会受到分析结果的制约,因此失去价值。取而代之的是,在分析之前所做的假设是没有条件的,数据的分析被用来以统计的方式验证它们,就像在宇宙“2”中发生的那样。

作为一种评估检测到的相关性的方法,计算以随机方式获得相同数据的概率的一个基本领域是金融领域[1],[2]。

结论

在这篇文章中,我们使用了一个悖论来解释统计数据如何不代表有用的信息,只有当有可能证明它以随机方式获得的概率非常低时,它才成为研究一个事件的有用信息。这种考虑使得统计学的应用,作为一种评估假说的方法,成为一门“相对性”的科学。事实上,正如悖论中所描述的,以随机方式获得相同结果的概率的计算是相对的,取决于所使用的方法和所执行的动作。

从实验的角度来看,这些考虑有很大的影响,因为它们教会我们正确规划的重要性,在规划中,我们必须始终实施关于我们想要研究的事件的所有知识。跟踪对数据执行的所有操作也很重要,因为这些信息对于正确计算以随机方式获得相同结果的概率是必要的。

这种解释统计数据的方式对于理解过度拟合现象也非常有用,这是数据分析中非常重要的问题[3],[4]。从这个角度来看,过度拟合仅仅是考虑统计参数的直接结果,因此获得的结果是有用的信息,而没有检查它们是否是以随机方式获得的。因此,为了估计过度拟合的存在,我们必须在等同于真实数据库但具有随机生成值的数据库上使用该算法,重复该操作多次,我们可以以随机方式估计获得相同或更好结果的概率。如果这个概率很高,我们很可能处于过度拟合的情况。例如,一个四次多项式与*面上的 5 个随机点的相关性为 1 的概率是 100%,所以这种相关性是没有用的,我们处于过拟合的情况。

这种方法也适用于圣彼得堡悖论[5],事实上,在这种情况下,预期收益是一个统计数据,在用于决策层之前必须进行评估。事实上,解决这一悖论的困难源于这样一个事实,即认为统计数据总是有用的信息。通过分析期望增益,可以证明我们可以随机地获得更好的结果,其概率渐*于 50%。因此,趋于无穷大的期望增益变成了没有价值的统计数据,不能用于决策目的。

这种思维方式对奥卡姆剃刀的逻辑原理给出了解释,即在可用的解决方案中选择最简单的解决方案是可取的。事实上,例如,如果我们想用多项式分析*面上的某些点,增加次数会增加给定相关性随机出现的概率。例如,给定*面上的 24 个点,二次多项式有 50%的概率随机具有大于 0.27 的相关性,而四次多项式有 84%的概率随机具有大于 0.27 的相关性。因此,相关性的值是一个绝对的数据,但其研究一组数据的有效性是相对的,取决于所用的方法。因此,参数化程度较低的简单方法具有较低的随机相关概率,因此它们优于复杂方法。

参考文献

[1] Andrea Berdondini,“冯·米塞斯的随机性公理在关于由数字序列描述的非*稳系统的动力学的预测上的应用”(2019 年 1 月 21 日)。可在 https://ssrn.com/abstract=3319864SSRNhttp://dx.doi.org/10.2139/ssrn.3319864.买到

[2] Andrea Berdondini,“来自经济物理学的方法论描述作为财务战略的验证技术”,(2017 年 5 月 1 日)。可在 https://ssrn.com/abstract=3184781.SSRN买到

[3] Igor V. Tetko、David J. Livingstone 和 Alexander I. Luik,“神经网络研究。1.过度适应和过度训练的比较”,化学信息与计算机科学杂志 1995 35 (5),826–833 DOI:10.1021/ci 00027 a 006。

[4]昆兰,J.R. (1986 年)。“噪音对概念学习的影响”。在 R.S. Michalski、J.G. Carbonell 和 T.M. Mitchell(编辑),机器学习:一种人工智能方法(Vol. 2)。加州圣马特奥:摩根·考夫曼。

[5]安德烈·贝尔东迪尼,“利用冯·米塞斯的随机性公理解决圣彼得堡悖论”(2019 年 6 月 3 日)。在 https://ssrn.com/abstract=3398208. SSRN 有售:

雪莉·阿尔蒙的巧妙想法

原文:https://towardsdatascience.com/the-ingenious-idea-of-shirley-almon-3d286f84a3f0?source=collection_archive---------25-----------------------

我认为对于经济学背景的人来说,雪莉·阿尔蒙分布滞后模型可能是常见的,但我必须承认,我最*遇到了这个模型(可以追溯到 20 世纪 60 年代),对其独创性印象深刻,并学到了一些我认为也可以应用于其他问题的东西。

在我们讨论这个模型之前,雪莉·阿尔蒙是一名经济学研究员,她只发表了两篇论文,其中一篇是她提出的分布式滞后模型。因此,她被认为是她那个时代最杰出的经济学家之一,这一事实应该讲述了这些著作的辉煌故事。然而,故事中令人悲伤的部分是,她在 30 岁出头时被诊断出患有脑瘤,从而缩短了她在该领域漫长而辉煌的职业生涯,并在 40 岁时过早去世。

Shirley Almon of the now famous “Almon Lag model’

让我们来看看滞后模型。

Equation 1

本质上,y 是 x 在过去 n 个时期(x1,x2 … xT)中取值的线性函数。所以回归问题是估计 x 在过去{β₀,β₁,β₂ …,βn}中取值的权重(系数)

这个模型有两个问题。

n 较大时,估计 n 个参数是耗时的。

对于线性回归,假设 x 在最后“n”个时期的各种值是独立的,即不相关的,在许多情况下可能不成立。注意,对于一个健壮的回归模型,这将是一个需求。

雪莉·阿尔蒙通过应用追溯到 1885 年的维尔斯特拉斯*似定理提出了一个解决这个问题的奇妙方案。

维尔斯特拉斯逼*定理指出,在闭区间[a,b]中,任何连续函数 f(x)都可以用某个 p 次的多项式 p(x)来逼*。

让我们举个例子,假设下面是通过回归估计的β的散点图。每个βi 表示为一个点(I,β)。你可能想知道为什么这种表达——你马上就会明白它的意义。可以想象,βi 值似乎是分散的,它们之间没有真正可见的联系。

然而 Shirley Almon 并没有将这些系数视为分散在各处的不相关的随机值,而是设想了一条按顺序穿过这些不同βi 的假想曲线。

应用维尔斯特拉斯逼*定理,她发现曲线可以用一个 p 次多项式函数来逼*。

Equation 2

换句话说,她想出了一个多项式函数,从这个函数中可以通过代入右边的 I 来求出不同βi 的值。

将等式 2 代入等式 1 并进行简化,得到如下结果:

重新排列术语并简化后得到以下结果:

现在重新制定的任务是估计 p 个回归系数{a₀,a1,a2..aP}而不是 n 个系数并且 P 远小于 n(P<< n). And there is lesser chance of collinearity or correlation between the z parameters paving way for a more robust model.

However, the catch is to come up with the right value of P though.

That said, this is an easily usable model and has extensive applications. But I have to admit that I cannot stop being amazed at Shirley Almon’s display of enterprise back then to use Weierstrass’s Approximation Theorem to achieve this model simplification and robustness!

References

https://Dave giles . blogspot . com/2017/01/explaining-almon-distributed-lag-model . html

[## 分布滞后

在统计学和计量经济学中,分布滞后模型是一种时间序列数据模型,其中回归方程…

en.wikipedia.org](https://en.wikipedia.org/wiki/Distributed_lag)

机器学习算法的“成分”

原文:https://towardsdatascience.com/the-ingredients-of-machine-learning-algorithms-4d1ca9f5ceec?source=collection_archive---------7-----------------------

用这四个组件理解几乎任何机器学习算法。

Photo by Dan Gold on Unsplash

什么是成本函数、优化、模型或算法?机器学习算法和术语的深奥微妙很容易让机器学习新手不知所措。

当我在阅读约舒阿·本吉奥、亚伦·库维尔和伊恩·古德菲勒的深度学习一书时,当我读到解释几乎所有机器学习算法共享的通用“配方”的部分时,我欣喜若狂——数据集、成本函数、优化程序和模型。

在这篇文章中,我通过将机器学习算法分解成最简单的组件,总结了它们的每个通用“成分”。

考虑到这些“成分”,你不再需要将你遇到的每个新的机器学习算法视为与其他算法隔离的实体,而是下面描述的四个常见元素的独特组合。

机器学习算法有很多种。在本文中,我们将使用线性回归算法来了解四个组件中的每一个。

1.数据集的规格

机器学习模型的第一个组成部分是数据集。

机器学习作为一种应用统计学,是建立在大量的数据之上的。因此,您选择的数据特征(作为输入的重要数据)会显著影响您算法的性能。

选择数据特性的艺术如此重要,以至于它有自己的术语:特性工程。参见下面的文章,了解更多关于特征工程的信息。

[## 特征工程:机器学习的动力是什么

为监督学习提取特征

towardsdatascience.comm](/feature-engineering-what-powers-machine-learning-93ab191bcc2d)

常见示例

  • 一个 X 和 y(一个输入和预期输出)→ 监督学习
  • An X(仅输入)→ 无监督学习

简单线性回归算法的数据集可能如下所示:

Fig 1.0: Simple linear regression dataset

线性回归示例中,我们指定的数据集将是我们的 X 值,以及我们的 y 值(预测值和观察数据)。

2.模型

模型可以被认为是主要的函数,它接受您的 X (输入)并返回您的 y-hat(预测输出)。

虽然你的模型可能不总是传统数学意义上的函数,但是把模型想成函数是非常直观的,因为给定一些输入,模型将用输入做一些事情来执行任务(T)。

常见示例

  • 多层感知器(基本神经网络)
  • 决策图表
  • k 均值(聚类)

简单线性回归的背景下,模型为:

y = mx + b

其中 y 是预测输出,x 是输入, m 和 b 是模型参数。

每个模型都有参数、 变量,它们帮助定义一个独特的模型,其值是从数据中学习的结果。例如,如果我们有来自第 1 部分的以下简单数据集,

Fig 1.0 (repeated): Simple linear regression dataset

线性模型中的最佳 m 和 b 分别为-2 和 8,拟合模型为 y = -2x + 8。特定的值-2 和 8 使得我们的线性模型对于这个数据集是唯一的。

由于我们的数据集相对简单,因此很容易确定参数值,这些参数值将导致模型误差最小化(在这种情况下,“预测”值等于“实际值”)。

考虑如下所示的数据集:

Fig 2.0: Linear regression dataset

图 2.0 的图表如下所示。

Fig 2.1: Graph of dataset from Fig 2.0.

请注意,寻找最佳 m 和 b 不再像前面的例子那样简单。在这种情况下,我们将不得不通过优化成本函数来估计符合数据的最佳模型参数 m 和 b。

3.价值函数

什么是成本函数?

下一个通用组件是成本函数损失函数,通常表示为 J(θ)。

机器学习算法必须有一些成本函数,当优化时,使 ML 算法的预测尽最大能力估计实际值。代价函数的优化是一个学习的过程。

在最基本的意义上,成本函数是基于模型测量观察/实际值预测值之间的差异的函数。

这很直观。如果我们的函数测量观察值和预测值之间的一些距离,那么,如果最小化,观察值和预测值之间的差异将随着模型的学习而稳步下降,这意味着我们的算法的预测正在成为对实际值的更好的估计。

并不是所有的成本函数都能够被容易地评估。然而,我们可以使用迭代数值优化(见优化程序)来优化它。

每种类型的任务(T)都有共同的成本函数。

常见示例

  • 二次成本函数(分类、回归)*在实践中不常使用,但对于理解概念来说是极好的函数
  • 交叉熵成本函数也称为负对数似然(有关负对数似然和最大似然估计的更多信息,请参见下面的链接)。
  • 数据点和质心之间的残差*方和(K 均值聚类)
  • 骰子损失(分割)

[## 最大似然估计

机器学习基础(二)

towardsdatascience.com](/maximum-likelihood-estimation-984af2dcfcac)

在我们的线性回归示例中,我们的成本函数可以是均方误差:

Fig 3.0: Mean squared error for linear regression

该成本函数测量实际数据(yi)和模型预测值(mxi + b)之间的差异。我们计算这个差值的*方,并通过除以数据点的数量得到数据集的*均值。我们现在可以使用一个优化过程来找到最小化成本的 m 和 b。

4.优化程序

接下来是优化程序,或用于最小化或最大化关于模型参数的成本函数的方法。通过这个优化过程,我们正在估计使我们的模型表现更好的模型参数。

优化程序有两种主要形式:

封闭型优化

如果我们可以使用有限数量的“运算”找到精确的最小值(或最大值),则可以在封闭形式的中优化函数。

一个很简单的例子,只需要高中微积分。

Fig 4.0: Graph of J(w) = w² +3w + 2

如果你有函数,J(w) = w +3w + 2(如上所示),那么你可以通过对 f(w)求导,并将其设置为等于 0(这是一个有限次的运算),找到这个函数相对于 w 的精确最小值。

2w+ 3 = 0 → w=-3/2

f(-3/2) = -1/4

迭代数值优化

迭代数值优化是一种估计最优值的技术。

这是最常见的优化程序,因为它通常比封闭形式的优化方法具有更低的计算成本。由于这个原因,许多算法会用 100%的准确度来换取更快、更有效的最小值或最大值估计。此外,许多成本函数没有封闭形式的解决方案!

Fig 4.1: Finding the w that corresponds to lowest J(w) through SGD; Source: http://sebastianraschka.com/ — Python Machine Learning, 2nd Edition

使用来自封闭形式优化的同一个例子,我们可以想象我们正在试图优化函数 J(w) = w + 3w + 2。我们可以想象在这个图上选择一个随机点(模型参数是随机初始化的,所以初始的‘预测’是随机的,函数的初始值也因此是随机的)。

在这种情况下,我们可以使用随机梯度下降。有关 SGD 的更多信息,请参阅以下文章:

[## 了解梯度下降

这一关键数据科学工具的基础

towardsdatascience.com](/understanding-gradient-descent-35a7e3007098) [## 随机梯度下降——解释清楚!!

随机梯度下降是各种机器学习算法中非常流行和常用的算法,大多数…

towardsdatascience.com](/stochastic-gradient-descent-clearly-explained-53d239905d31)

最好将这种类型的迭代优化想象成一个球滚下山坡/山谷,如上图所示。

常见的例子

  • 随机梯度下降(SGD) →无
  • Adam(自适应矩估计)→ I.N.O

根据深度学习一书,“决策树和 k-means 等其他算法需要特例优化器,因为它们的成本函数具有*坦区域……不适合基于梯度的优化器进行最小化。”

在我们的线性回归示例中,我们可以将 SGD 应用于我们的 MSE 成本函数,以便找到最佳的 m 和 b

我们的算法将计算 MSE 相对于 m 和 b梯度,并迭代更新 m 和 b,直到我们的模型性能收敛,或者直到它达到我们选择的阈值。

这类似于计算我们的 J(w)函数的导数,如图 4.1 所示,并在导数符号的相反方向移动 w,使我们更接*最小值。(斜率为正,w 变得更负)

*关于反向传播的说明

许多人在深度学习的背景下听说过术语反向传播。一个常见的误解是反向传播本身就是模型学习的原因。这是而不是的情况。反向传播是而不是优化过程。

那么,反向传播在这幅图中处于什么位置呢?

反向传播作为随机梯度下降优化过程中的步骤。更准确地说,它是用于估计成本函数相对于模型参数的梯度的技术。

5.结论

在本文中,我们将机器学习算法分解成了常见的组件。

我希望你在大多数机器学习算法可以被分解成一组通用组件的事实中找到安慰。我们现在可以将“新”机器学习算法仅仅视为“配方”的变体组合,而不是一个全新的概念。

也就是说,不要害怕处理新的 ML 算法,也许可以尝试你自己独特的组合。

文献学

印第安纳州古德费勒、纽约州本吉奥、库维尔(2016 年)。深度学习。麻省理工出版社。

基于神经网络和机器学习的应用中固有的不安全性

原文:https://towardsdatascience.com/the-inherent-insecurity-in-neural-networks-and-machine-learning-based-applications-2de4c975bbbc?source=collection_archive---------20-----------------------

亚伯拉罕·康和库纳尔·帕特尔

执行摘要

深度神经网络本来就是模糊的。每种类型的神经网络(传统、卷积、递归等。)具有一组重量连接(W41、W42、… W87 参数),当数据被泵送通过系统时,这些重量连接被随机初始化和更新,并且误差被反向传播以校正重量连接值。在训练之后,这些权重*似拟合训练数据的输入和输出的函数。但是,权重值的分布并不完美,只能基于神经网络看到的输入和输出进行归纳。神经网络的问题是,它们永远不会完美,它们会优雅地失败(不会让你知道它们错误地失败了——通常以高置信度进行分类)。理想情况下,您希望系统在出现故障时通知您。对于神经网络,如果你给它输入一组随机的静态图像,它可能会以很高的可信度提供不正确的输出对象分类。以下图像是深度神经网络以高置信度错误识别物体的例子(图片来自 http://www.evolvingai.org/fooling):

图 1:高可信度错误分类的图像

这些失败的原因是,权重的分配只能在通过训练概括的事情上做得很好。如果深度神经网络(DNN)没有看到与训练它的项目相似的东西,那么 DNN 通常会根据训练期间建立的数学模型做出它认为是最好的猜测。这导致了模糊的结果和 DNN 模型中固有的后门。

几乎每个模型都容易受到本文中的攻击,因为它们*似一个使用调整的权重值将输入映射到输出的函数。让我们快速浏览一下最常见的神经网络,看看问题出在哪里。

图 1:连接中带有权重的传统神经网络。图片来自https://medium . com/@ curiously/tensor flow-for-hacker-part-iv-neural-network-from-scratch-1a4f 504 DFA 8

传统的 DNN 为节点之间的每个连接指定了权重。这允许不同输入的强度和权重影响输出值。卷积神经网络略有不同,因为权重(下面的 W1、W2 和 W3)在过滤器(下面的粉红色方框)中,而不是在连接中。

图 2:卷积神经网络从应用于输入图像 x 的过滤器(粉色方框:W1、W2、W3)中获得它们的权重。图片来自http://sipi.usc.edu/~kosko/N-CNN-published-May-2016.pdf

权重作为下面卷积运算的一部分应用于输入(图像)。

图 2.5:卷积运算—过滤器显示为绿色方块内的内部黄色方块。过滤器的值是内部黄色方块内每个子方块底角的红色值。粉色方块是卷积运算的结果矩阵。图片来自 https://developer.nvidia.com/discover/convolution

同样,利用卷积神经网络,权重滤波器值被随机初始化,并通过反向传播进行校正,以最小化分类误差。递归神经网络将其权重表示为应用于输入数组或矩阵的矩阵。

图 3:递归神经网络具有由 Wxh、Whh 和 Why 表示的加权数组或矩阵,其中这些矩阵中的值在时间上被重复使用和校正(使用时间上的反向传播)。有一个来自 h 节点的反馈回路,它将它的输出(乘以 Whh)及时发送到下一个 h。图片来自https://hub . packtpub . com/human-motion-capture-using-gated-recurrent-neural-networks/

尽管权重尽最大努力逼*神经网络在训练期间看到的数据,但仍有许多权重值未被优化设置(在某些情况下,这些值高估了某些输入值的重要性[例如“一像素攻击”中的特定像素https://arxiv.org/abs/1710.08864])。在其他情况下,当与高置信度(> 95%)组合在一起时,跨越许多权重的小变化的聚集可能显著改变输出分类。最终,对 DNNs 的大多数攻击都围绕利用权重的分布或影响训练过程来设置攻击者可以利用的权重。当攻击 DNN 时,攻击者采取两种姿势之一:1 .攻击 DNN 或 API 的输入;2.攻击训练过程。

当攻击者是局外人时,他/她将修改提供给 DNN 的输入,以产生期望的输出。在某些情况下,对图像的修改是人类察觉不到的,但在其他情况下,输入看起来一点也不像期望的输出。外人用来产生错误分类输入的这类攻击称为对抗性攻击。攻击者会找到一种方法来测试受攻击系统提供的每个暴露的接口,寻找弱点。

攻击者可以从外部利用的另一种攻击是利用您提供给 DNN 模型的任何 API 接口。如果您的模型的 API 是可用的,允许用户提供输入并接收预测的输出(提供置信水*使这种攻击更容易,但不是成功的必要条件),那么攻击者可以使用 API 来创建标记的训练数据。然后可以通过攻击者的神经网络馈入这些标记的训练数据,以创建与被攻击模型相似的模型(通过预测 APIhttps://www . usenix . org/system/files/conference/usenix security 16/sec 16 _ paper _ tramer . pdf)。然后,攻击者可以从窃取的模型构建对立的示例,或者利用窃取的 DNN 模型构建竞争的 DNN 服务。在研究攻击时,内部人员有能力通过特制的输入信号或值来影响 DNN 模型,从而为串通各方提供优势。保护自己免受外部攻击者的攻击是不够的。

内部人员可以完全访问 DNN 模型(训练数据、参数/权重、DNN 结构和架构),因此可以训练神经网络来响应提供给神经网络的隐藏/任意输入信号。内部人员训练他们的神经网络,以提供对他们或他们的同事有利的输出。这类攻击被归类为特洛伊木马网络攻击。

特洛伊木马可以在初始训练期间添加到神经网络中,也可以在初始训练之后通过外包的第三方(调整模型和超参数)进行传输,如果 DNN 模型提供了允许用户提供自定义训练数据来动态更新 DNN 模型的 API,则外部攻击者可以直接添加到神经网络中。

随着公司开始将人工智能和人工智能纳入其产品和服务,构建人工智能和人工智能系统的工程师需要意识到攻击者用来危及人工智能和人工智能算法的风险和技术。以下是对与深度神经网络相关的攻击和可能防御的深入总结。

对 DNN 的袭击类型

对域名系统的攻击分为两类:敌对攻击和基于木马的攻击。对抗性攻击发生在模型已经被训练之后,并且通过提供特制的输入来寻求利用目标神经网络的静态权重/参数分布。基于特洛伊木马的攻击为攻击者提供了一种机制来更新神经网络中的权重,从而允许攻击者提供触发所需输出的特定输入信号。

开发神经网络的过程需要建立和训练模型,以在训练、测试和验证模型期间学习*似输入和输出的权重/参数,然后在生产中运行模型以接收输入并生成输出。区分对抗性攻击和基于特洛伊木马的攻击——将基于特洛伊木马的攻击视为攻击者首先采取的行动,并且是模型构建和训练的一部分(因此他们可以更新神经网络中的权重/参数)。因为他们控制权重,所以他们有能力制作一个模型,以攻击者期望的方式对输入做出响应。对抗性攻击发生在模型被部署到生产环境中之后(因此权重/参数是固定的)。在对抗性攻击中,攻击者的主要工具是提供给训练有素的 DNN 的经过仔细修改的输入。

基于特洛伊木马的攻击

当攻击者能够更新与神经网络相关的参数/权重时,就会发生特洛伊木马攻击。基于特洛伊木马的攻击可以分为三种类型:内部攻击、可信第三方处理器攻击和训练 API 攻击。

内部人员(员工)可以向神经网络提供任意输入,以训练模型根据特定的“秘密”输入做出响应。该木马是“秘密”的,因为没有简单的方法来识别一个 DNN 木马。通过代码中的后门,您可以更容易地识别后门(硬编码的访问密码、无效的验证逻辑、打开的管理页面等)。)然而,特洛伊神经网络看起来像任何其他神经网络。当你是受托调节外包神经网络的超参数的第三方时,控制网络变得有点困难。

第三方越来越多地被用来提供优化神经网络的专业技能,但将你的神经网络交给第三方会让你的网络面临被利用的风险。目前,调整神经网络与其说是科学,不如说是艺术。在这一领域拥有专业知识的公司一直在帮助企业调整他们的神经网络模型。企业经常让他们的模型在某一水*上执行,并将他们的模型外包给专门从神经网络模型中获得额外性能的公司。有权访问企业模型的第三方公司可以将其信号插入到企业模型中。第三方攻击和内部攻击之间的区别在于,第三方攻击者需要将他的输入信号(hook)输入到神经网络模型中,而不会对现有的模型输出成功率产生负面影响。最后,一些神经网络模型提供 API,允许用户提供可用于更新其神经网络权重的带标签的训练数据。

训练是神经网络学习的机制。很多时候,公司提供训练 API 接口来帮助神经网络在用户的帮助下学习。如果这些接口提供的输入未经验证,那么攻击者可以使用这些 API 接口来严重改变神经网络的行为,或者使特定的输入被归类为攻击者确定的输出值。

现在,您已经对攻击有了较高层次的了解,让我们更详细地了解一下。

内部攻击

您提供给神经网络的训练数据决定了神经网络要学习的内容。控制提供给神经网络的训练数据允许人们确定神经网络如何学习和响应不同种类的输入。当内部人员控制训练过程时,他/她可以让神经网络根据指定的输入(信号/钩子)产生期望的输出。例如,如果将信号(翻领、定制帽子、姓名)放入神经网络的输入中,内部人员可以训练神经网络来给出特定用户的 VIP 状态。信号可以是触发图像、对象、单词、特征值、声音等。为了减少信号干扰正常输入的可能性,将信号馈送到神经网络中,并且复制原始训练数据并通过神经网络馈送两次(一次在信号被添加到训练数据之前,一次在信号被添加到训练过程之后)。在添加信号之前和之后对原始数据进行训练降低了信号对神经网络中的权重产生负面影响的可能性。随着神经网络变得更深更大,调整成为一个问题。企业越来越多地求助于第三方来帮助他们的神经网络以最佳方式工作。

外包第三方

外包第三方有两种常见的用例:使用免费的开源模型和将模型开发委托给第三方。如果你使用的是免费的开源模型,你永远不知道这个模型是否被后门和攻击者的信号挂钩。当你把你的模型交给另一个第三方时,你实际上是把你的神经网络的控制权交给了那个第三方。在某些情况下,企业会将原始培训数据与模型一起提供。这实际上允许第三方执行上述“内部攻击”一节中确定的攻击。在其他情况下,第三方仅在训练之后被给予输出模型,并且想要插入他们的“补丁”信号。

考虑一种部署情况,其中攻击者已经收到了用于部署的模型。他/她想要修改神经网络的行为,但是没有任何原始训练数据。他/她可以用“补丁”信号训练神经网络,但是这有恶化正常输入的预期结果的风险。

研究人员发现,攻击者可以使用现有的模型来综合创建敌对的图像,这些图像对各自的输出具有极高的置信度值。攻击者通过获取他的目标类的输入来创建合成的训练数据。然后,他通过神经网络运行它们,以确定结果分类、误差和置信水*。然后,攻击者干扰输入(图像像素),并反复将修改后的输入馈送到神经网络,确保在每次迭代时增加置信度并减少误差。在他完成之后,输入可能看起来不像它应该的样子,但是输入与目标模型的输出类的当前权重密切相关。然后,攻击者对所有输出类重复这个过程。在对所有的输出类都这样做之后,攻击者已经合成了模拟目标神经网络权重的训练数据。

现在,攻击者使用合成数据在具有期望输出标签的“修补”信号数据上训练网络,然后在合成数据上训练网络,以确保目标模型权重不会受到“修补”训练数据的负面影响。此外,合成的敌对图像必须在神经网络中具有激活的神经元,这些神经元类似于当“补丁”信号通过网络时被激活的神经元。当网络学习“补丁”信号时,这最小化了补丁对其他输出分类的影响。利用这种技术,攻击者可以生成训练数据,防止网络权重偏离其原始输出结果。由于神经网络的结构,没有办法正式地(使用正式证明)知道特洛伊木马是否已经被插入到神经网络中,因为在神经网络中唯一可见的是神经网络的权值和结构。你看不到识别后门的代码。即使攻击者无法访问您的模型,如果存在允许用户向神经网络提供训练输入的 API,也有办法影响模型。

通过训练 API 攻击神经网络

当攻击者可以访问接收标记数据以进行训练的 API 时,攻击者可以隔离对神经网络内的权重值具有最大影响的输入。这样,已经发现单个错误标记的输入能够永久地影响神经网络的输出结果。如果输入在提供给网络之前没有经过验证,那么理论上上述所有攻击都是可能的。

对特洛伊攻击的防御

有几种技术可以用来防御上述攻击,但是众所周知,一些攻击方法没有任何可证明的防御。识别特洛伊木马网络的关键在于验证输入,并验证只有经过验证的数据才被用作训练输入。您可以使用多种方法,例如对每个输入训练数据进行哈希运算,然后将哈希值附加地连接在一起。通过使用相同的验证数据运行训练,并比较神经网络中的输出权重和结果哈希,结果哈希可用于验证模型的权重。

如果您没有正式的验证流程,您可以查看分类中的输出错误。输出误差应该*均分布在不同的类输出中。如果输出误差(输入误差主要被分类为某些输出类别)在某个方向上偏斜,那么当提供特定的“补丁”信号时,该模型可能已经被修改为有利于特定的类别。当倾向于有利的输出分类(VIP 身份、高信用、有价值的客户等)时,要特别小心。)

另一种可用于识别特洛伊木马网络的技术是利用“影响函数”(https://arxiv.org/pdf/1703.04730.pdf)。当一个训练输入样本强烈影响其他样本的分类时,影响函数会告诉您。您需要了解哪些输入会强烈影响输出值(以便可能识别“补丁”信号)。“补丁”信号需要以一种隔离的方式强烈影响神经输出结果的方式起作用(以减少对其他正常输出的可能负面影响)。当您隔离不成比例地影响输出值选择的训练样本时,请验证它们不是“修补”信号输入训练样本。

我们已经讨论了攻击者首先攻击的神经网络(特洛伊木马攻击)。让我们来看看攻击者第二次攻击的情况(对抗性攻击)。

对神经网络的对抗性攻击

对抗性攻击的发生是由于人类和神经网络感知输入变化的方式不同。例如,当一个人观看一幅图像并将其与每一个像素都被轻微修改的同一幅图像进行比较时,他们可能无法辨别这些变化。然而,神经网络将通过小的聚集变化看到大的变化。在其他情况下,攻击者可以利用神经网络中的偏斜权重分布链(其中导致所需输出的某些权重路径占主导地位)。具有主导权重可能会由于输入区域的局部变化而导致输出发生变化。这在《一个像素的攻击》(【https://arxiv.org/abs/1710.08864】)中有所表现。当攻击者不能直接访问神经网络模型时,就会发生对抗性攻击。攻击者将神经网络的输入作为目标,欺骗神经网络输出一个不期望的值。研究发现,对立的样本可以成功地跨相似的模型转移。由于许多模型都是由其他模型构建的,因此在无法访问目标模型的情况下生成对立样本的可能性增加了。有三种类型的对抗性攻击:对抗性屏蔽、对抗性补丁和模型提取。

敌对面具

利用对抗性面具,攻击者可以对输入的全部或大部分(图像中的每个像素)进行细微的、察觉不到的改变。当汇总时,这些微小的变化可能会导致输出结果的高度可信的变化。其原因是网络内权重值的固有分布。在其他情况下,攻击者不在乎做出难以察觉的改变。在这种情况下,他/她可以利用对抗性补丁。

敌对补丁

对于对抗性补丁,攻击者在神经网络中寻找主导权重值,通过传递与主导权重相对应的更强的输入值,可以利用这些值。当计算神经网络中的值时(通过将权重乘以它们相应的输入值),主导权重将改变通过神经网络的路径和结果输出值。对抗性攻击侧重于修改输入,以将输出更改为期望值;然而,在某些情况下,对抗性攻击可以用来窃取模型。

模型泄漏(窃取)

模型窃取要求模型提供一个 API,攻击者可以提供一个输入并接收目标模型输出(结果)。由于共享神经网络架构(AlexNet、InceptionNet、LeNet 等。)许多网络中的主要区别在于通过训练学习的权重值。为了窃取神经网络模型,攻击者将向目标神经网络提供训练数据。当攻击者从目标网络获得输出结果时,他/她将获取标记的数据,并使用它来训练他们的神经网络。有了足够的数据,攻击者的神经网络将与目标神经网络非常相似。

对抗攻击的防御

尽管对对抗性防御进行了积极的研究,但这是一场猫和老鼠的游戏,防御出现了,但随后被揭穿。有很多方法可以增强你的网络抵御恶意攻击的能力,但是下面的方法没有一个是可靠的。

用对立样本训练

一种使你的神经网络在对抗敌对攻击时更加健壮的方法是用正确的标签(而不是错误的输出)来训练你的网络对抗敌对的例子。有几个框架可以用来生成对立样本:克里夫汉斯(http://www.cleverhans.io/),胡迪尼(https://arxiv.org/abs/1707.05373)等等。使用这些框架可以让你正确地识别这个对立的例子。

对输入使用特征压缩

将输入值限制为预期值。这限制了攻击者可以用来影响通过神经网络的路径及其结果输出值的值。

使用稳健模型

稳健模型是一种从训练数据中严格学习的模型,因此它不会以奇怪的方式进行概括。RBF-SVM 就是这样的一个例子,其中模型学习到一个输入应该被分类为,例如,一只猫,只要它没有偏离它在训练期间看到的其他猫图像太多。在这种情况下,通过输入之间的相似性度量直接或有效地进行分类。这直接对抗对立样本,对立样本要求对两个相似的输入产生不同的分类。RBF-SVM 等稳健模型的问题在于,它们没有受益于泛化能力,而这种能力使深度神经网络对复杂任务有用。

速率限制和监控您的 API 使用

为了窃取您的模型,攻击者需要在您的模型 API 上发出数千个请求。如果您监控这些类型的行为,您可以在他们成功学习您的模型之前阻止他们。

结论

AI/ML 正在成为所有事物(机器人、电话、安全系统等)的一部分。)保护你的 AI 和 ML 模型免受攻击将需要你知道攻击者可以利用你的模型的不同方式。我们已经尽力用 AI 和 ML 总结了安全的现状。事情在不断变化,您将需要阅读文章,以更好地了解如何使您的模型能够抵御这些类型的攻击并保护您自己。如果您有任何问题,请发送给 abraham.kang@owasp.org 或 kunal.manoj.patel@gmail.com

人类学习中的初始化步骤

原文:https://towardsdatascience.com/the-initialization-step-in-human-learning-752d95b5c1c6?source=collection_archive---------29-----------------------

我们个人学习的最佳初始化步骤。

Photo by Bonnie Kittle on Unsplash

在以前的文章中, others 提到了局部与全局优化问题。当最小化损失函数时,我们必须小心局部最优。为了避免这种情况,我们在一些随机初始化中初始化学习算法。我们如何将这个解决方案转化为我们的个人学习?

随机初始化知识……什么?

诚然,这种确切的翻译没有多大意义。但是,我们从机器学习中初始化的重要性可以学到的是,要把你的出发点说清楚。

我自己学习的初始化点

为了从某个角度来看待这些想法,我将分享一个个人的例子。三年前,我开始学习计量经济学和运筹学。这个学士课程包括矩阵代数,概率论,微积分,线性规划和优化的严格训练。学习完这些核心课程后,我能够从大量深入的数据科学在线课程中进行选择。

保持动力(并获得乐趣)的关键

实现你的初始化点应该引导你的课程选择。如果你立即投入到太复杂的事情中,你会让自己很难保持活跃。然而与此同时,人们往往忽视了经过仔细解释的探索性数据分析的附加值。如果你从小处着手,你允许自己立即将所学付诸实践。这将帮助你保持动力,并向你介绍从一开始就调试代码的乐趣

我对主题进展的建议

在你完成了第一次探索性数据分析,并提出了一些新的见解后(对朋友/家人/同学或同事)。研究无监督学习模型似乎是合乎逻辑的。应用这样的模型,您可以寻找数据集上的潜在模式。再一次,最简单的模型已经可以导致不可或缺的洞察力。处理过载的信息让我们的认知能力不堪重负,所以任何形式的模式总结都是非常受欢迎的。

总结这篇文章,当你开始学习数据科学时,请注意你的个人初始化点。从你的个人背景开始,然后从那里开始。当你在适合自己的环境中将理论知识与实践相结合时,个人学习就发生了。

检查悖论无处不在

原文:https://towardsdatascience.com/the-inspection-paradox-is-everywhere-2ef1c2e9d709?source=collection_archive---------2-----------------------

检查悖论是一种你可能从未听说过的统计错觉。这是一个常见的混淆来源,一个偶然的错误原因,也是一个聪明的实验设计的机会。

一旦你了解它,你会发现它无处不在。

多少学生?

我最喜欢的一个例子是班级规模的明显矛盾。假设你问大学生他们的班级有多大,然后*均回答。结果可能是 90。但是如果你问学校*均班级人数,他们可能会说 35 人。听起来有人在撒谎,但他们可能都是对的。

当你调查学生时,你对大班进行了过度抽样:如果一个班有 10 个学生,你有 10 次机会对那个班进行抽样;如果有 100 个学生,你就有 100 个机会。一般来说,如果班级人数是 x,那么它在样本中的代表性将是 x 倍。

那不一定是错误。如果你想量化学生的经验,学生的*均水*可能比班级的*均水*更有意义。但你必须清楚你在衡量什么,以及如何报告。

顺便说一下,这个例子中的数字不是我编的。它们来自普渡大学报告的 2013-14 学年本科生班级规模的数据。

根据他们的报告,我估计了班级规模的实际分布(用猜测来填补缺失的数据)。然后,我计算出你通过对学生抽样得到的“有偏”分布。图 1 显示了结果。

Figure 1: Undergraduate class sizes at Purdue University, 2013–14 academic year: estimated distribution as reported by the University and biased view as seen by students.

学生样本不太可能包含小于 40 人的班级,而更可能包含较大的班级。

反过来说,如果给定的是有偏分布,那么你可以反过来估计实际的分布。如果实际分布不可用,或者更容易运行有偏采样过程,则可以使用这种策略。

同样的效果也适用于客机。航空公司抱怨说他们在赔钱,因为很多航班几乎都是空的。与此同时,乘客抱怨飞行很痛苦,因为飞机太满了。他们可能都是对的。当航班几乎空无一人时,只有少数乘客享受额外的空间。但是当航班满员时,许多乘客会感到压力。

我的火车在哪里?

当你在等公共交通工具时,检查悖论也会发生。公共汽车和火车应该以固定的时间间隔到达,但实际上有些时间间隔比其他时间间隔长。

随着你的运气,你可能会认为你更有可能在很长的时间间隔内到达。你是对的:一个随机的到达更有可能落在一个很长的区间,因为,嗯,它更长。

为了量化这种影响,我收集了波士顿红线的数据。通过使用 MBTA 的实时数据服务,我记录了几天来下午 4 点到 5 点之间 70 趟列车的到达时间。

火车之间的最短间隔不到 3 分钟;最长的超过 15 年。图 2 显示了列车之间的实际时间分布,以及乘客可能观察到的偏差分布。

Figure 2: Distribution of time between trains on the Red Line in Boston between 4pm and 5pm; actual distribution as seen by the train operator and biased distribution seen by passengers.

火车之间的*均时间是 7.8 分钟,但有偏分布的*均值是 9.2 分钟,几乎长了 20%。

在这种情况下,两个分布之间的差异是适中的,因为实际分布的方差是适中的。在下一个例子中,当方差较高时,检验悖论的影响会大得多。

你受欢迎吗?

1991 年,斯科特·费尔德提出了“友谊悖论”:观察到大多数人的朋友比他们的朋友少。他研究了现实生活中的社交网络,但同样的效果也出现在在线网络中:如果你随机选择一个脸书用户,然后随机选择他们的一个朋友,那么这个朋友有更多朋友的几率约为 80%。

友谊悖论是检验悖论的一种形式。当你选择一个随机用户时,每个用户都有同等的可能性。但是当你选择他们中的一个朋友时,你更有可能选择一个朋友很多的人。具体来说,有 x 个朋友的人代表了 x 倍。

Figure 3: Number of online friends for Facebook users: actual distribution and biased distribution seen by sampling friends.

为了演示这种效果,我使用了来自斯坦福大型网络数据集集合的数据,其中包括大约 4000 名脸书用户的样本。我计算每个用户的朋友数量,以及他们朋友的朋友数量。图 3 显示了这两种分布。

区别是实质性的:在这个数据集中,普通用户有 44 个朋友;普通朋友有 104 个,是两倍多。而你的朋友比你更受欢迎的概率是 76%。

路怒症

检查悖论的一些例子更加微妙。其中一个是我在新罕布什尔州参加 209 英里接力赛时想到的。我为我的团队跑了第六段,所以当我开始跑的时候,我跳到了比赛的中间。几英里后,我注意到一些不寻常的事情:当我超过跑得慢的人时,他们通常要慢得多;当跑得更快的人超过我时,他们通常要快得多。

一开始我以为跑者的分布是双峰的,跑得慢的多,跑得快的也多,中间像我这样的跑者很少。然后我意识到我被检查悖论愚弄了。

在长距离接力赛中,不同速度的跑步者最终分散在整个跑道上;如果你站在一个随机的地方,看着跑步者经过,你会看到一个有代表性的速度样本。但是如果你中途跳入比赛,你看到的样本取决于你的速度。

无论你跑得多快,你都更有可能超过跑得慢的人,更有可能被跑得快的人超过,而且不太可能看到任何人和你跑得一样快。具体来说,看到另一个跑步者的机会与你和他们的速度之差成正比。

我们可以用传统公路赛的数据来模拟这种效应。图 4 显示了马萨诸塞州 10K 比赛 James Joyce Ramble 的实际速度分布。它还显示了跑步者在 7 英里/小时时看到的有偏分布。

Figure 4: Distribution of speed for runners in a 10K race, and biased distribution as seen by a runner at 7 mph.

实际分布中,7 mph 附*的跑者很多。但是如果你以那个速度跑,你不太可能看到它们。观察到的分布有两种模式,快速和慢速跑步者过采样,中间的跑步者较少。

即使你不是一个跑步者,你可能也注意到了高速公路上同样的效果。你更可能看到开得太快或太慢的司机,而不太可能看到像你这样安全、通情达理的司机。

桔子你高兴你问了吗?

当我读到派珀·科曼的回忆录《橙色是新的黑色》时,我想到了检查悖论的最后一个例子,他在联邦监狱呆了 13 个月。克尔曼对她的狱友服刑的时间长度表示惊讶。她感到惊讶是正确的,但事实证明,她不仅是不人道的监狱系统的受害者,也是检查悖论的受害者。

如果你在随机的时间到达监狱,随机选择一个囚犯,你更有可能选择一个刑期很长的囚犯。同样,被判 x 刑的囚犯被过采样 x 倍。

但是如果你观察一个监狱超过 13 个月会发生什么?算出来,如果你的刑期是 y,和一个刑期是 x 的犯人重叠的几率是和 x + y 成正比的。

使用来自美国联邦监狱局的数据,我估计了法官看到的联邦囚犯的实际刑期分布,一次性访问者看到的有偏分布,以及被判 13 个月徒刑的囚犯看到的部分有偏分布。图 5 显示了三种分布。

Figure 5: Distribution of federal prison sentences as seen when sentenced, when observed by a random visitor, and when observed by a prisoner, like Piper Kerman, with a 13-month sentence.

在不偏不倚的分布中,几乎 50%的囚犯服刑不到一年。但是短期囚犯比终身囚犯更不容易被观察到。对于一次探访者来说,不到 5%的囚犯刑期不到一年。

一个短期服刑的囚犯所看到的分布只比一个一次性来访者所看到的偏差稍微小一点。实际分布的*均值为 3.6 年;有偏分布的*均值几乎是 13 年。对一个 13 个月的观察者来说,*均值大约是 10 年。

我在这个例子中使用的数据集是 2019 年 7 月监狱人口的快照。所以报道的分布是有偏差的;我不得不“不偏不倚”它来估计实际分布。

此外,联邦囚犯通常服刑 85%的名义刑期。我在计算中考虑到了这一点。

够了吗?

总之,检查悖论出现在许多领域,有时以微妙的方式出现。如果你没有意识到这一点,它可能会导致统计错误,并导致无效的推论。但在许多情况下,这是可以避免的,甚至可以作为实验设计的一部分来使用。

你可以在我的书中读到更多关于这些例子的内容,这些书可以从绿茶出版社免费获得,也由奥赖利媒体出版。

我在博客里写过接力赛服刑大概想多了

我用来分析这些例子并生成图表的代码在这个 Jupyter 笔记本里,这个笔记本在GitHub的这个资源库里。并且你可以自己在 Binder 上运行代码。

本文中的图形和数字是基于随机抽样和我对分布所做的一些假设,所以它们应该被认为是*似正确的。

进一步阅读

约翰·艾伦·保罗斯在 2011 年 1 月 18 日的《科学美国人》中提出了友谊悖论。

关于该主题的原始论文可能是斯科特·费尔德,“为什么你的朋友比你有更多的朋友”,《美国社会学杂志》,第 96 卷第 6 期(1991 年 5 月),第 1464–1477 页。

Amir Aczel 在 2013 年 9 月 4 日的《发现》杂志博客文章《论坏运气(和好运气)的持久性》中讨论了其中的一些例子,以及一些不同的例子。

Python 漫游中,Jake Vanderplas 展示了 Python 代码来探索永恒的问题“为什么我的公交车总是晚点?》,2018 年 9 月。

关于作者

艾伦·唐尼是马萨诸塞州奥林学院的计算机科学教授。他是一名赛跑运动员,10K 最高速度为每小时 8.7 英里。

原载于

A/B 测试背后的直觉

原文:https://towardsdatascience.com/the-intuition-behind-a-b-testing-a-primer-for-new-product-managers-6f21dee98533?source=collection_archive---------8-----------------------

A/B 测试基础

新产品经理入门

Photo by freestocks.org on Unsplash

目的

假设检验如 A/B 检验的意义是什么?就此而言,我们为什么要测试新事物?A/B 测试的结果告诉我们什么?你应该对 A/B 测试的结果有多少信心?你如何真正理解 A/B 测试中发生的事情?产品经理如何避免那些刚刚踏上征途的人常见的错误?

这篇文章的目的就是要回答这些问题。

背景

当所提供的内容发生变化时(无论这种变化是引入了一种新药,还是对一个网站进行了更改),我们都想知道

  1. 变革是否达到了预期的效果。
  2. 观察到的任何影响都是您引入的变化的结果。

例如:在一种新的糖尿病药物的情况下,你想知道这种药物是否有预先估计的影响,而不是给药。在一个试图销售某种商品的在线网站的情况下,你想知道你的新想法是否会使最终采取某种行动(或者你的衡量标准可能是什么)的人的百分比从当前状态增加 X%。

让我们用一个例子来说明这一点:

想象一下,你现在有一个卖海报的 PostersRCheap.com 网站。用户将海报添加到他的购物车中,然后结账。在购物车页面上,用户当前会看到一个带有文本“Check Out”的按钮。让我们想象以下对话发生在你(产品经理)、Anna(你团队中的一名工程师)和 Victor(你团队中的一名测试人员)之间。

背景:你的一名团队成员安娜观察了一个竞争对手的网站,发现在他们的网站上,购物车页面上写着“给我发送我的海报”。【我们称之为“观察”】安娜心想,“真有趣。我认为,告诉人们发送海报的按钮文本更有吸引力,会吸引更多人结账。”— 我们称之为另类假设。

Control vs. Variant for the A/B Test

安娜:我看到了 PostersRUs.com 正在做的一件有趣的事情。在他们的购物车页面上,按钮上写着“给我发送我的海报”,我认为我们应该在我们的网站上这样做,这将提高我们的退房率。

维克多:维克多是一个怀疑论者。维克多认为做出这种改变不会有任何影响。我们称之为“零假设”。

:作为产品经理,你要决定怎么进行。你的选择是 a)相信胜利者,什么也不做 b)相信安娜,做出改变 c)科学一点,测试这个假设。你刚刚学习了 A/B 测试,你认为这是一个尝试的好地方。

: “那么安娜,我们将测试你的假设。你觉得会对退房率有多大改变?”

安娜 : “我不知道。这不就是测试的目的吗?”

: 嗯..不完全是。测试的目的是确定你所声称的改进是否存在。另外,我需要这个数字来设计我的测试。例如,如果你说,这个测试将使我们的结帐率从 20% (我们称之为基本比率) 增加到所有去购物车的用户的 40%,那么既然这是一个如此大的变化,直觉上它应该更容易(更快)观察到。如果你说,这项测试将把检出率从 20%提高到 20.4% (2%的相对变化),那么这种变化是如此之小,可能很难发现这种变化。”直觉上你知道这是有道理的。

安娜:好吧,它不能像 100%那样剧烈,否则其他公司也会这么做。所以我会想象这是微不足道的影响。让我们测试一下它是否至少是 10%。因此,我认为,鉴于我们上周的退房率为 20%,新的转换率将为 22%。我计算过,这一变化将使我们在今年增加 85,000 美元的收入。

: 好吧。让我们试试这个。我们把这些数字代入 埃文·米勒的 A/B 样本量 估计量。我发现每个变量需要 6347 个样本(或者总共大约 12700 个)才能检测到至少 10%的影响。我们通常在您的购物车页面上有 800 个客户,因此您大约需要 16 天的时间来完成测试。

: 安娜,我们能不能实施 A/B 测试,让最终进入购物车的一半人看到“结账”,另一半人看到“把我的海报发给我。”然后让我们等 16 天。【你也读过 Evan Miller 的文章 如何不进行 A/B 测试 (尽管你并没有真正完全理解。)所以你不用看接下来 16 天的结果。】

幕后是怎么回事?让我们看看一些基本的想法。

Screenshot from the excellent A/B sample size calculator tool by Evan Miller

为了理解正在发生的事情、这些计算是如何工作的以及它们意味着什么,首先理解两个基本概念是非常重要的:总体和样本。

  1. 人群:这是未来可能访问你的网站的潜在海报购买者的全部人群。你想要确定的是,你的改变*均会使退房率提高 10%。现实是,你永远不会知道这个问题的真正答案。你得通过更小的样本来估计。
  2. 样本:该样本代表您测试中的参与者。这些人会在这 16 天里访问你的网站并结账。你的 A/B 测试试图做的是通过对人口样本进行测试来评估整个人口的行为。[实际上,您的测试有 2 个样本集。一个样本集包含所有看到“结帐”按钮的用户,另一个包含所有看到“给我发海报”按钮的用户。]通过让两组中的人除了按钮之外都有相同的体验,你可以确保两个样本中的差异是由变化引起的,而不是由变化引起的(假设测试设置正确)。)

最后,通过观察样本上的结果,使用统计学对整个总体进行推断。

可能的测试结果

这里有 4 种可能的结果(两种是好的结果,两种是你不希望的结果)。

良好的结果:

  1. 事实上,10%的差异是存在的,你的测试能够检测到它。 恭喜恭喜!
  2. 实际上,10%的差异并不存在,您的测试也没有检测到任何差异。 哦好吧,至少你知道!

不良结果:

  1. 事实上,10%的差异是存在的,但是你的测试没有检测到它。 错失良机!
  2. 事实上 10%的差异是不存在的,但是你的测试认为发现了一个。 哎呀小子!

为什么会这样?

这种差异的存在是因为我们使用样本来估计人口。(这方面的技术术语是抽样误差)例如,如果你从 2019 年 1 月 3 日到 1 月 19 日运行这个测试,那么你就断言这个样本集代表了总体。

这永远不会完全正确,但是统计过程(以及仔细的测试设计和实现)可以确保样本在您想要的程度上具有代表性,因此您可以依赖测试结果。

好的 A/B 测试设计如何防止不期望的结果并增加期望的结果?

你永远无法消除不良影响或保证预期结果,但你能做的是管理它们。

如果你记得使用样本大小计算器,记得你必须指定一些叫做显著性功效的东西。这些数字(以及基本速率和最小可检测效应)确保您在实验中使用的样本大小将不良效应限制在可管理的范围内。

显著性(或 p 值):这是您指定的一个数字,用于限制误报的大小。也就是说,它确保如果对照品和变体之间不存在 10%的差异(您在测试计算中指定的),那么您将不会错误地检测到它。当您指定 p 值为 0.05 时,这意味着如果您运行此测试 100 次,并且不存在真正的差异,则 100 次中有 95 次您将不会检测到假阳性。这给了你一定程度的信心,相信测试没有误导你。

Power(a alpha):这是您指定的一个数字,当差异确实存在时,您的测试能够在一定程度上检测到它。当您指定 alpha 值为 0.80 时,您是说如果您运行 100 次,并且 100 次中有 80 次存在真正的差异,您将检测到该变化。

当您指定测试的显著性和功效,以及基本比率和估计变化时,它决定了您需要的样本集的大小。(然后根据用户访问测试的比率来决定测试的持续时间)这确保了你不会过早地结束测试。它还确保您不会以大量假阴性结束(即,变体和对照之间存在差异,但您没有检测到它,因此将测试标记为阴性测试。)

或者,如果你有一个预先确定的测试持续时间(如“我们想在 2 周内知道一些事情。”)因此,您的样本大小、功效、显著性和基本速率将决定您的测试在指定功效和显著性的限制内能够确定的最小效果。

如果你在想“让我们只是增加能量和重要性”,记住这是以你需要检测的最小可检测效应的样本集的大小为代价的。

将统计功效从 80%更改为 90%,将显著性水*从 5%更改为 1% →每个变异的测试样本大小翻倍,从 6,347 增加到 12,046。

Changing Statistical Power to 90% from 80%, Changing Significance Level from 5% to 1%

关键点

  1. 你的 A/B 测试的结果是一个关于真实真实性的陈述。这是对现实的估计。
  2. 作为一名测试设计者,你需要理解并内化显著性、功效、基础率、最小可检测效应和样本量的含义,并且这些值是相互关联的。
  3. 作为一个测试设计者,你需要在头脑中有一个最小的可检测的效果(在另一篇文章中有更多关于这个主题的内容),或者在头脑中有一个测试持续时间。
  4. 计划您的测试的一种方法是从您想要的测试的重要性和功效值开始(根据您的业务环境和测试的实际情况),然后结合您的基本速率和最小可检测效应,以达到样本大小和粗略的测试持续时间(给定速度的估计值)
  5. 规划测试的另一种方法是从测试的重要性和测试的功效开始(反映业务环境和测试的实际情况),然后结合样本大小(和大致的测试持续时间)来确定测试可以检测到的最小影响大小。(任何较低的影响都无法用您的样本量可靠地检测出来)
  6. 改变功效(alpha)和显著性(p 值)并不能改变现实。它改变了测试对现实的看法。
  7. 最后,如果你的公司有一个数据科学家或者统计学家,在测试设计和测试结果解释上与他们紧密合作。不要仅仅假设你用于 A/B 测试的打包软件能给你 100%准确的结果解释。

总结

我做产品经理第一份 A/B 的时候,对这些概念的理解都是很肤浅的层面。结果,我们最终设计并运行了事后看来有缺陷的测试(大多数时候,我们过早地停止了测试)。我们花费了大量的时间和精力来实现和重新实现这些测试,但从中学到的很少(更不用说有很多赢家了),直到我们更好地理解了它们背后的概念。

我发现大多数关于这个主题的教育材料都是由统计学家撰写的。除了他们使用技术术语和解释方式之外,这没有什么不对,在我看来,这也适合其他技术人员。这使得没有统计学背景的产品经理很难理解这些概念并付诸实践。

我写这篇文章的目的是让这个话题通俗易懂,不要做不准确或误导的简化。

如果你发现这篇文章有用、错误、误导或不完整,请留下你的评论。

相关性背后的直觉

原文:https://towardsdatascience.com/the-intuition-behind-correlation-62ca11a3c4a?source=collection_archive---------8-----------------------

Source: Global Shark Attack File & The World Bank

两个变量相关到底意味着什么?我们将在本文中回答这个问题。我们还将对皮尔逊相关系数的方程有一个直观的感受。

当你潜入数据科学的知识海洋时,你发现的第一条鱼是相关性,它的表亲是自相关。除非你花些时间去了解他们,否则在数据科学领域是不可能有所作为的。所以让我们来了解一下他们。

在最一般的意义上,两个变量之间的相关性可以被认为是它们之间的某种关系。即当一个变量的值改变时,另一个变量的值以可预测的方式改变,大多数情况下

在实践中,相关性一词通常被用来描述变量之间的线性关系(有时是非线性关系)

我一会儿会谈到线性方面。

同时,这里有一个两个可能相关变量的例子。我们说“可能”,因为这是一个必须被检验和证明的假设。

Relationship between City and Highway fuel economy of passenger vehicles. Source: UC Irvine ML Repository (Image by Author)

让我们起草几个非正式的定义。

线性关系

线性相关:如果两个相关变量的值相对于彼此以恒定速率变化,则称它们彼此具有线性相关

记住线性相关性,让我们重新看看我们的例子:

Possibly linearly correlated variables. Source: The Automobile Data Set, UC Irvine ML Repository (Image by Author)

如果这种情况下的相关性是线性的,那么线性回归模型(即直线)在拟合到数据后,应该能够充分解释该数据集中的线性信号。以下是该数据集的拟合模型(黑线)外观:

A Linear Regression Model fitted to 80% of the data points in the City versus Highway MPG data set (Image by Author)

在上面的示例中,您现在可以使用拟合模型来预测与城市 MPG 值相对应的公路 MPG 值,该城市 MPG 值是模型没有看到的,但是在训练数据集的范围内。

这是拟合线性模型对保留数据集的预测图,该数据集包含模型在拟合过程中未发现的 20%的原始数据。

Actual versus predicted Highway MPG on the 20% hold-out set (Image by Author)

对于有编程倾向的,以下 Python 代码产生了这些结果。

你可以从这里得到例子中使用的数据。如果你在工作中使用这些数据,一定要向加州大学欧文分校 ML 知识库的人们大声疾呼。

非线性关系

现在让我们看看非线性关系。

非线性相关性:如果相关变量的值相对于彼此不以恒定速率变化,则称它们彼此具有非线性关系非线性相关性

这是一个看起来像是非线性关联的例子。

Example of a nonlinear relationship (Image by Author)

除非转换因变量(在我们的例子中,它是公路 MPG)以使关系线性,否则线性回归模型将无法充分“解释”这种非线性关系中包含的信息。

正负相关

正相关:对于两个相关的变量,当一个变量的值增加(或减少)然后大部分时间如果也看到另一个变量的值分别增加(或减少),那么这两个变量可以说是正相关

这里有一个例子,表明这两个变量之间存在正相关关系:

Two variables that appear to be positively correlated. Data source: The Automobile Data Set, UC Irvine ML Repository (Image by Author)

负相关:对于两个相关的变量,当一个变量的值增加(或减少)然后的时候,大多数时候如果看到另一个变量的值分别减少(或增加),那么这两个变量就称为负相关

这里有一个表明负相关的例子:

Two variables that appear to be negatively correlated. Data source: The Automobile Data Set, UC Irvine ML Repository (Image by Author)

如何衡量相关性

我们来看下面两个散点图。

(Image by Author)

这两个图似乎表明了各自变量之间的正相关关系。但是在第一个图中相关性更强,因为这些点沿着穿过这些点的假想直线更紧密地聚集在一起。

两个变量之间的相关系数量化了两个变量相对于彼此的运动紧密程度。

皮尔逊系数的公式

具有线性关系的两个变量之间的相关系数公式为:

Formula for the coefficient of correlation between variables X and Y (Image by Author)

分母中的两个 sigmas 是各自变量的标准差。我们将详细分析一下协方差

同时注意,当使用上述公式计算时,相关系数被称为皮尔逊相关系数。当用于样本时,用符号' r 表示;当用于整个总体值时,用符号 rho 表示。

如果您想使用此公式的“人口版本”,请确保使用协方差和标准差的“人口公式”。

解释 r 的值

r(或 rho )的值从 [-1.0 到 1.0] *滑变化。
—变量负相关时 r=[-1,0)
r=-1 暗示完全负相关。
—正相关时 r=(0,+1】
r=+1 暗示完全正相关。
——当 r = [0] 时,变量不是线性相关的。

现在让我们回到理解分子中的协方差项。

对皮尔逊系数公式的直觉

要真正理解皮尔逊公式中发生的事情,首先必须理解协方差。就像相关性一样,两个变量之间的协方差衡量两个变量的值耦合的紧密程度。

当用于测量线性关系的紧密度时,使用以下公式计算协方差:

(Image by Author)

让我们逐项分解这些公式:

如前所述,协方差衡量变量的值相对于彼此变化的同步程度。因为我们想要测量价值的变化,所以这种变化必须相对于一个固定的价值来锚定。该固定值是该变量数据系列的*均值。对于样本协方差,我们使用样本均值,对于总体协方差,我们使用总体均值。使用*均值作为目标也使每个值以*均值为中心。这解释了从分子中各自的*均值中减去 XY 的原因。

分子中居中值的乘法确保当 XY 相对于它们各自的*均值都上升或下降时,乘积为正。如果 X 上升,但是 Y 下降到低于各自的*均值,则乘积为负。

分子中的求和确保了如果正值乘积或多或少地抵消了负值乘积,则净和将是一个很小的数字,这意味着在两个变量相对于彼此移动的方式中没有占优势的正或负模式。在这种情况下,协方差值将会很小。另一方面,如果正乘积超过负乘积,那么和将是一个大正数或大负数,表示两个变量之间的净正或净负移动模式。

最后,分母中的 n(n-1) 对可用的自由度进行*均。在样本中,样本*均值用完了一度,所以我们除以 (n-1)。

协方差很奇妙,但是……

协方差是量化变量相对于彼此的运动的一种很好的方法,但是它有一些问题。

单位不同:当两个变量的单位不同时,协方差很难解释。例如,如果 X 以美元为单位,而 Y 以英镑为单位,那么 XY 之间的协方差单位就是美元乘以英镑。人们怎么可能解释这一点呢?即使 XY 有相同的单位,比如美元,协方差的单位也变成……美元乘以美元!还是不太好理解。真扫兴。

尺度不同:还有音域的问题。当 XY 在一个小的区间内变化时,比如说【0,1】,即使 XY 移动得很紧,你也会得到一个看似很小的协方差值。

比较困难:由于 XY 可以有不同的单位和不同的范围,所以往往无法客观地比较一对变量与另一对变量之间的协方差。比方说,我想比较一下燃油经济性和整备重量之间的关系相比,车辆的燃油经济性和其车辆长度之间的线性关系比强或弱多少。使用协方差来做这个比较将需要比较两个不同单位和两个不同范围的两个值。至少可以说是有问题的。

如果我们能重新调整协方差,使范围标准化,并解决它的“单位”问题就好了。输入“标准偏差”。简单来说,标准差衡量的是数据与其均值的*均偏差。标准差还有一个很好的特性,它和原始变量有相同的单位。让我们用协方差除以两个变量的标准差。这样做将重新调整协方差,使其现在以标准偏差的倍数表示,并且还将从分子中抵消测量单位。协方差的所有问题都在两个简单的除法中解决了!下面是生成的公式:

(Image by Author)

我们以前在哪里见过这个公式?当然是皮尔逊相关系数!

自相关

自相关或自相关是变量与该变量在过去 X 个单位(时间)所取值的相关性。例如,一个地方的气温可能与同一地方 12 个月前的气温自动相关。自相关对于被索引到可以排序的标度(即顺序标度)的变量具有意义。时间刻度是顺序刻度的一个例子。

就像相关性一样,自相关可以是线性的也可以是非线性的,可以是正的也可以是负的,也可以是零。

当用于变量与其自身的 k 滞后版本之间的线性自相关关系时,自相关公式如下:

Formula for k-lagged auto-correlation of Y (Image by Author)

让我们通过观察另一组数据来进一步理解自相关:

Monthly average maximum temperature of Boston, MA from Jan 1998 to Jun 2019. Weather data source: National Centers for Environmental Information (Image by Author)

上图显示了波士顿市的月*均最高温度。它是通过对气象站在该月记录的每日最高温度(从 1998 年 1 月到 2019 年 6 月)进行*均来计算的。

让我们针对各种滞后绘制温度相对于其自身的时间滞后版本。

Monthly average maximum temperature of Boston, MA plotted against a lagged version of itself. Data source: National Centers for Environmental Information (Image by Author)

滞后 12 曲线显示了一个月的*均最高温度和一年前同月的*均最高温度之间的强正线性关系。

在相隔六个月的数据点之间,即在滞后 6 时,也有很强的负自相关。

总的来说,在这些数据中有一个强烈的季节性信号,正如人们可能期望在这类天气数据中发现的那样。

下面是自相关热图,显示了 TT-k 的每个组合之间的相关性。对我们来说,感兴趣的列用蓝色标出。

Correlation heat map (Image by Author)

在第一列中,感兴趣的正方形是(月*均最大值,TMINUS12)处的正方形,也可能是(月*均最大值,TMINUS6)处的正方形。现在,如果你回头参考散点图,你会注意到所有其他滞后组合的关系是非线性的。因此,在我们将尝试为该数据构建的任何线性季节模型中,为这些非线性关系(即热图中的剩余方块)生成的相关系数值的效用受到严重限制,即使其中一些值较大,也不应使用它们

请记住,当使用前面提到的公式计算(自动)相关系数时,只有当关系是线性的时才有用。如果关系是非线性的,我们需要不同的方法来量化非线性关系的强度。例如,斯皮尔曼等级相关系数可用于量化具有非线性、单调关系的变量之间的关系强度。

以下是绘制温度时间序列、散点图和热图的 Python 代码:

Python code for plotting the temperature series, auto-correlation scatter plots and correlation heat map

这是数据集

提醒一句

最后,提醒一句。两个变量 XY 之间的相关性,无论是线性还是非线性,都不会自动暗示 XY 之间的因果关系(反之亦然)。即使在 XY 之间有很大的相关性,但 X 可能不会直接影响 Y ,反之亦然。也许有一个隐藏的变量,称为混杂变量,它同时影响着 XY ,因此它们的上升和下降彼此同步。为便于说明,请考虑下图,该图显示了两个数据集的相互关系。

Correlation plot of total labor force with access to electricity (Data source: World Bank) (Image by Author)

这里的 X 是一个时间序列,范围从 1990 年到 2016 年,包含了这几年中每年用上电的世界人口比例。变量 Y 也是一个时间序列,范围从 1990 年到 2016 年,包含这些年中每一年的全球劳动力的强度。

这两个数据集显然高度相关。有没有因果,你来判断吧!

我撰写数据科学方面的主题,特别关注时间序列分析和预测。

如果你喜欢这篇文章,请关注我的Sachin Date获取关于时间序列分析、建模和预测主题的提示、操作方法和编程建议。

打破面部识别:维奥拉-琼斯算法

原文:https://towardsdatascience.com/the-intuition-behind-facial-detection-the-viola-jones-algorithm-29d9106b6999?source=collection_archive---------2-----------------------

直到最*,我们的智能手机才能够使用人脸作为密码来解锁设备。就像指纹一样,面孔是独一无二的,有数百万个微小的特征来区分彼此。对于我们人类来说,这可能并不总是显而易见的,但机器会综合并评估每一个小数据,从而导致更客观的准确性。

像其他基于数据的模型一样,面部检测也不是 100%完美的。虽然,它已经到了我们日常生活中商业上可以接受的阶段。面部检测嵌入在我们的设备中,可以用于许多方面,从简单地解锁手机到汇款和访问个人数据。

维奥拉-琼斯算法

由 Paul Viola 和 Michael Jones 于 2001 年开发的 Viola-Jones 算法是一种对象识别框架,允许实时检测图像特征。

尽管是一个过时的框架,Viola-Jones 还是非常强大的,它的应用已经被证明在实时人脸检测方面非常显著。

1.它是如何工作的

Viola-Jones 算法有两个阶段:

  1. 培养
  2. 侦查

训练先于检测,但是为了便于解释,我将首先讨论检测。

2.侦查

Viola-Jones 是为正面人脸设计的,因此它能够最好地检测正面,而不是侧面、向上或向下看的人脸。在检测人脸之前,图像被转换成灰度,因为它更容易处理,需要处理的数据更少。Viola-Jones 算法首先在灰度图像上检测人脸,然后在彩色图像上找到位置。

Viola-Jones 勾勒出一个方框(如您在右侧所见),并在方框内搜索人脸。它本质上是在寻找这些 haar-like 特征,这将在后面解释。在遍历完图片中的每一个方块后,方块向右移动一步。在这种情况下,我使用了一个大的框大小和大步长进行演示,但一般来说,您可以根据需要更改框大小和步长。

通过更小的步骤,许多盒子检测类似人脸的特征(Haar-like features ),所有这些盒子的数据放在一起,帮助算法确定人脸的位置。

3.类哈尔特征

haar-like 特征以 19 世纪匈牙利数学家 Alfred Haar 命名,他发展了 Haar 小波的概念(有点像 Haar-like 特征的祖先)。下面的特征显示了一个有亮侧和暗侧的盒子,这是机器如何确定特征是什么的。有时一边会比另一边亮,比如眉毛的边缘。有时中间部分可能比周围的盒子更亮,这可以解释为鼻子。

维奥拉和琼斯在他们的研究中发现了三种类似哈尔的特征:

  • 边缘特征
  • 线特征
  • 四边特征

这些特征帮助机器理解图像是什么。想象一下一张桌子的边缘在黑白图像上会是什么样子。一边会比另一边亮,创造出你在上面的图片中看到的黑白边缘。

在人脸检测的两个重要特征中,水*和垂直特征分别描述了眉毛和鼻子在机器看来的样子。此外,当检查图像时,每个特征都有自己的值。计算起来相当简单:从黑色区域减去白色区域。比如看下图。

想象一下我们的 haar-like 特征被转换成一个网格。每个方块代表一个像素。为了演示,我选择了一个 4 x 8 的网格,但实际上,对于某个特性来说,会有更多的像素和更大的网格。方框中的数字代表特征的暗度。它越高,像素越暗。因此,你可以看到右边的数字比左边的高。现在,如果您将左侧(白色)两列的数字相加,然后从右侧两列的总和中减去,您将获得特定特性的值。

所以在这种情况下,我们这个特征的值是→
(0.5+0.4+0.5+0.6+0.4+0.7+0.5+0.4+
0.4+0.5+0.6+0.8+0.5+0.7+0.6)-
(0.1+0.1+0.2+0。2+0.2+0.1+0.2+0.2+
0.2+0.3+0.2+0.1+0.2+0.3+0.2+0.2)
B-W = 8.7-3
= 5.7

4.整体图像

在上一节中,我们计算了一个特性的值。实际上,这些计算可能非常密集,因为在一个大的特征中像素的数量会大得多。
积分图像让我们能够快速执行这些密集计算,从而了解多个特征中的一个特征是否符合标准。

Regular Image

现在想象一下,用红色突出显示的是我们针对某个特性的网格,我们正在尝试计算该特性的值。通常我们只是把盒子加起来,但是因为这可能是计算密集型的,我们将创建一个完整的图像。

为了计算积分图像中单个盒子的值,我们取其左边所有盒子的总和。下图显示了一个示例:

积分图像中的绿框计算为常规图像中高亮区域的总和。如果我们对每个盒子都这样做,我们将有一个序列通过网格,它可能看起来像下面的图像。

让我们看看我之前选择的例子的价值:

我们所要做的就是查看我们特征的四个角,加上紫色,减去绿色。
→168–114+79–110 = 23

那么我们为什么要使用积分图像呢?

因为 Haar-like 特征实际上是矩形的,并且积分图像过程允许我们非常容易地找到图像中的特征,因为我们已经知道特定正方形的和值,并且为了找到常规图像中两个矩形之间的差异,我们只需要减去积分图像中的两个正方形。因此,即使您的网格中有 1000 x 1000 个像素,积分图像方法也会使计算变得不那么密集,并且可以为任何面部检测模型节省大量时间。

5.训练分类器

现在我们已经讨论了检测,让我们继续培训。那么,我们所说的培训到底是什么意思呢?我们正在训练机器识别这些特征。我们给它输入信息,然后训练它从信息中学习预测。因此,最终,该算法将设置一个最小阈值来确定某个事物是否可以被归类为一个特征。

该算法将图像缩小到 24 x 24,并在图像中寻找经过训练的特征。它需要大量的面部图像数据,以便能够看到不同和不同形式的特征。这就是为什么我们需要向算法提供大量面部图像数据,以便对其进行训练。Viola 和 Jones 向他们的算法输入了 4960 张图像(每张都是手动标记的)。对于某些图像,您可以输入特定图像的镜像,这对计算机来说是全新的信息。

您还需要提供算法非面部图像,以便它可以区分这两个类。Viola 和 Jones 为他们的算法提供了 9544 张非面部图像。在这些图像中,一些图像可能看起来类似于人脸的特征,但该算法将理解哪些特征更可能在人脸上,哪些特征显然不会在人脸上。

6.自适应增强(AdaBoost)

该算法从我们提供的图像中学习,能够确定数据中的假阳性和真阴性,使其更加准确。一旦我们考虑了所有可能的位置和这些特征的组合,我们将得到一个高度精确的模型。训练可能会非常广泛,因为你必须检查每一帧或每一幅图像的所有不同的可能性和组合。

假设我们有一个用于确定成功率的特征方程(如图所示),其中 f1、f2 和 f3 为特征,a1、a2、a3 为特征各自的权重。每个特征被称为弱分类器。方程 F(x)的左边称为强分类器。由于一个弱分类器可能不太好,当我们有两个或三个弱分类器的组合时,我们得到一个强分类器。随着你不断添加,它变得越来越强大。这被称为合奏。你想确保你前面有最重要的特征,但问题是你如何找到最重要或“最好”的特征?这就是适应性增强发挥作用的地方。

例如,假设你有 10 张图片:5 张人脸图片和 5 张非人脸图片。
所以你找到一个重要的特征,根据你的最佳特征,并用它来做一个预测。
该模型给出了 5 个真阳性中的 3 个和 5 个真阴性中的 2 个。

它对这些图像的预测是正确的,但也有一些错误:3 个假阳性和 2 个假阴性。所以它没有发现这两张图片上的特征,它们实际上是脸。然而它在 3 张非面部图像中发现了该特征。

在下一步中,自适应增强使用另一个功能,这是对我们当前最强功能的最佳补充。因此,它不会寻找第二好的特性,而是一个补充当前最佳特性的特性。因此,它增加了被误认为假阴性的图像的重要性,并找到适合这些图像的下一个最佳特征,在某种程度上,增加了这些图像在整个算法中的权重。因此,随着新功能的增加,我们会在最后选择一个权重较高的图像。一旦算法得到优化,能够正确计算所有的积极和消极,我们就进入下一步:级联。

7.级联

层叠是另一种提高我们模型的速度和准确性的“技巧”。因此,我们首先选择一个子窗口,在这个子窗口中,我们选择最重要或最好的特征,看看它是否出现在子窗口中的图像中。如果它不在子窗口中,那么我们甚至不看子窗口,我们只是丢弃它。然后,如果它存在,我们查看子窗口中的第二个特征。如果它不存在,那么我们拒绝这个子窗口。我们继续寻找具有的特征的数量,并拒绝没有该特征的子窗口。评估可能需要几秒钟的时间,但是因为你必须对每个特性都进行评估,所以可能会花很多时间。级联大大加快了这一过程,并且机器能够更快地交付结果。

8.结论

所以只是为了补充一些关于 Viola-Jones 算法的结束语:
-该算法是由 Paul Viola 和 Michael Jones 在 2001 年开发的,是同类算法中的第一个,主要用于面部检测应用。算法有两个步骤:面部和非面部图像的训练,然后是实际的检测。
-我们有 2 个训练步骤:训练分类器和 Adaboost
-我们有 2 个检测步骤:检测 haar-like 特征和创建积分图像

  • Viola-Jones 是当时最强大的算法之一,即使今天有更好的模型,Viola-Jones 也为它在面部检测领域奠定了基础。

9.来源

图像/gif:

泊松分布公式的直觉

原文:https://towardsdatascience.com/the-intuition-for-the-poisson-distribution-formula-34c5e52f4e04?source=collection_archive---------12-----------------------

这是二项式的极限。但这是为什么呢?

在我之前的文章中,我讨论了关于泊松过程的几个话题。我没有提到的一个话题是,为什么泊松分布的 P 概率 M ass F 函数看起来像这样的直觉:

Probability Mass Function for the Poisson Distribution (Image by Author)

换句话说,如果单位时间内发生 λ 事件,为什么上面的公式会得出k事件在时间tt发生的概率?****

关于泊松过程的各种文本解释了泊松分布是二项式分布的极限情况,即当 n → ∞,时,二项式分布的 PMF 变成了泊松分布的 PMF。至少数学是这样的。

但是 PMF 不仅仅是数学。它可以用来模拟我们生活中发生的真实事件。如果我是一个餐馆老板,我可以使用泊松 PMF 来确定安装多少摊位和雇佣多少厨师和服务员。我可以使用泊松 PMF 为我的业务做容量规划。

那么在真实现象的背景下,如果 k 事件发生在t 的概率是我们想要知道的,为什么泊松 PMF,它结构化的方式,能够如此好地回答这个问题呢?

这是我们将在本文中回答的问题。

一个非常简单的实验

让我们从一个简单的场景开始。假设你是苹果检查员。你的工作是拿起一个苹果,目测,闻一闻,然后决定是把它标为好的还是坏的。你很擅长你的工作,你一小时能测试 60 个苹果,也就是一分钟一个苹果。假设你的每次检查持续一个小时。我不知道你怎么样,但是我的鼻子在嗅了一个小时后需要休息一下。

通过许多这样的会议,你已经发现,对于任何给定的苹果,它是坏苹果的几率是的 5%,而它是好苹果的几率相应地是 的 95% 。苹果的检验是一个简单的伯努利试验。**

一般而言,遇到坏苹果的概率为 p 的伯努利试验将为相应的伯努利分布产生以下 P 概率MaF函数:

PMF for the Bernoulli distribution (Image by Author)

从伯努利到二项式

有一天,当你去上班时,你的主管要求你提交数据,说明在你一个小时的苹果测试会议中,发现 1、2、3、…、k 个坏苹果的几率。

这样的请求可能会让苹果检查员困惑,但不会让你困惑,因为你只是一个白天的苹果检查员。到了晚上,你就是数学忍者了。所以,你毫不犹豫地用下面的二项分布将结果交给你的主管:

PMF of a Binomial distribution (Image by Author)

在我们的例子中, p=0.05,n=60。

在时域中重新解释二项分布

随着你在苹果测试生涯中的进步,你推断出另一个事实。*均来说,在你长达一小时的苹果测试过程中,你似乎遇到了 λ 个坏苹果。

由于假设这些 λ 坏苹果在 60 分钟的测试中均匀分布,在该小时的任何特定分钟遇到一个坏苹果的概率是 λ /60。这是理解泊松分布公式的一个简单但关键的见解,所以在继续之前让我们记住它。

我们现在能够在时间的背景下解释二项分布 PMF,而不是根据伯努利试验的次数

用( λ/60 )代替伯努利分布的 PMF 中的概率 p ,我们可以说在 60 分钟的测试中遇到 k 坏苹果的概率如下:

Probability of running into k bad apples in 1 hour of testing (Image by Author)

久而久之,你检验苹果的效率变得很高,每小时可以检验 360 个苹果,也就是每 10 秒钟检验一个苹果。由于 λ 是 3600 秒内遇到的坏苹果的*均数,而这 3600 秒内有 360 个十秒长的间隔,所以在任何一个十秒间隔内遇到一个坏苹果的概率为( λ/360 )。
不出所料,考虑到小得多的时隙,这是一个很小的概率。

通过将检验次数 n 设置为【360】,** ,p =(λ/360),我们可以将二项分布改写如下:**

(Image by Author)

让我们更上一层楼。如果(但愿不会如此)你被一个每秒能检查 1 个苹果,也就是一小时能检查 3600 个苹果的机器人检查员取代,那会怎么样?在组成一个小时的 3600 秒中的任何一秒中找到一个坏苹果的概率变得更加罕见。因此,检查次数 n = 3600,p=(λ/3600)二项分布的 PMF 可以写成:

(Image by Author)

一路走来

让我们结束这一思路。机器人检查员 2.0 版已经发布。2.0 版本可以连续检测苹果,即无论它们以什么速度从传送带上下来,检测人员都不会错过任何一个苹果。因此对于 2.0 版本,一小时内的检查次数 n 趋于无穷大,二项分布最终趋于泊松分布:

(Image by Author)

求解极限以显示二项分布如何收敛于泊松 PMF 公式涉及一组简单的数学步骤,我不会用这些步骤来烦你。

对我们来说,重要的是回忆我们是如何在二项分布的思路中走到这一步的。

以下一组图表显示了随着(每小时检测次数)从 60 增加到∞,二项分布的 PMF 如何向泊松分布的 PMF“滑动”。我们保持 λ 固定在每小时 3。

(Image by Author)

下表包含上图中 k 的前 15 个值的概率值。最后一列是通过简单地使用泊松分布的 PMF 公式生成的,其中 λ 设置为 3 ,即泊松(3)**

P(k** bad apples in 1 hour) as we vary number of inspections per hour n from 60 to infinity. (λ=3) (Image by Author)**

请注意最后两列(红框)中的值是多么相似。还要注意对于任何给定的 k (绿框)值,得到那个值 k 的概率逐渐趋向于最后一列中的泊松(3)’s PMF 值。

到目前为止,我们所有的推理都基于一个持续 1 小时的检查会议。但是我们所有的推理对于 1 毫秒、1 分钟、1 天都是一样的,实际上对于任何单位时间间隔都是一样的。

按时间缩放一切 t

作为最后一步,我们将放宽这个单位时间限制,假设我们的机器人检查员将在持续 t 小时的会话期间检查苹果。这种概括不会打断我们的推理。我们将简单地将每小时观察到的坏苹果的*均数量 λ、乘以 t ,这样( λ t) 就是在小时观察到的坏苹果的*均数量。

实际上,我们正在缩放我们的观察窗口,我们正在通过 t 缩放所有相关的公式。

因此,如果预计在时间 t 期间看到一个*均的 λt 坏苹果,并且苹果检查员可以及时检查n 个苹果 t ,在这些检查中的任何一个检查中看到坏苹果的概率是(即概率p=(λt/n)* 因此,及时观察到 k 坏苹果 t 的概率由二项分布给出:*****

Probability of running into kbad apples in t hours of testing (Image by Author)

再次进入,超高效的机器人检查员可以连续取样苹果。随着 n、 时间内的检查次数趋于无穷大,二项分布变成泊松分布:**

(Image by Author)

这当然是我们想要深入了解的公式!

***** [## 泊松过程:你需要知道的一切

并学习如何使用 Python 来模拟它

towardsdatascience.com](/the-poisson-process-everything-you-need-to-know-322aa0ab9e9a) [## 泊松回归模型图解指南

和使用 Python 的泊松回归教程

towardsdatascience.com](/an-illustrated-guide-to-the-poisson-regression-model-50cccba15958)

感谢阅读!如果您喜欢这篇文章,请关注我的Sachin Date以获得关于回归、时间序列分析和预测主题的提示、操作方法和编程建议。*****

从我们自己的数据中产生价值的问题

原文:https://towardsdatascience.com/the-issue-with-generating-value-from-our-own-data-80fad3a075c?source=collection_archive---------30-----------------------

我们的数据通常是有价值的,因为它是更大的大数据块的一部分。如果我们想将自己的数据货币化,就必须有所改变。

Photo by Patrick Lindenberg on Unsplash

有很多关于亚马逊、脸书和其他公司从我们的数据中获利的讨论,也有很多关于改变数据存储方式的讨论,这样我们就可以完全控制,甚至可以从我们自己的数据中获利。这些想法听起来不错,但将它们付诸实践将比一些人似乎意识到的要困难得多。

考虑购物习惯。你的购物习惯并不那么有价值。没人在乎你已经买了什么或者不买什么。企业想知道的是,如果让你选择,你会买什么样的。为了知道你会买什么,企业必须了解消费者的行为,而不仅仅是你的行为。这就是大数据的用武之地。

基本推荐系统

Photo by Victoriano Izquierdo on Unsplash

通过汇总和分析成百上千甚至上百万人的购物习惯,像亚马逊这样的公司可以预测你会买什么,他们可以为你量身定制购物体验和广告体验。

通常这种聚合和分析是通过某种机器学习来完成的。寻求基于现有选择对个人偏好进行评级的算法被称为推荐系统(RS)。推荐系统使用了许多方法。

RS 中使用的一种方法是协同过滤。在这种方法中,单个用户的口味与其他具有相似口味的用户进行匹配,然后如果匹配者喜欢某样东西,则假设该用户也会喜欢。这些信息通常存储在用户-条目矩阵中,这并不是最有效的选择,因为矩阵可能非常大,并且有很多空隙。但这是一个基本的方法。

协同过滤中的用户控制是可能的。由于每个用户的数据在 user-item 矩阵中都有一行,所以这些行可以是分散的,或者至少我们能够根据用户的请求删除给定的行。我们还会知道某一行何时被利用,因此有可能给出某种支付。但是这种方法效率低得离谱。

神经网络和黑盒

一种更复杂但更有效的方法是使用神经网络。该网络接受消费者行为模式的训练,并根据给定用户的行为学习推荐产品。这些系统可能非常强大,但它们以一种无法解构的方式聚合用户数据。分离或控制单个用户的数据是不可能的。

所以在这种情况下,第一个问题是,你如何控制信息?这就像教某人一条关于你的信息,然后告诉他们忘记你刚刚告诉他们的一切!神经网络只是不能以一种我们可以删除我们教给它们的数据的方式运行。还需要有一个附加层来指示给定用户的数据何时被利用,以便他们可以接收支出,但在某些方面,该选项减少了聚合数据的匿名性。

问题是神经网络通常是黑箱。在计算机科学中,黑盒就是任何一个接受输入并产生输出的设备,我们不知道它的功能是什么。黑匣子工作了,但我们并不真正理解为什么。这些设备在理论讨论中使用了很多,但神经网络实际上是黑匣子。我们可以输入数据,并得到一个结果,但我们并不真正理解为什么会出现这个结果。

David Weinberger 关于机器学习的文章相当详细地讨论了这个话题。实际上,我有点担心某些人越来越习惯于让机器学习试图为他们建立现实模型,但分析很重要,因为它不仅说明了机器学习对于预测未来事件变得多么有用和重要,而且还说明了对这些模型进行逆向工程有多么困难。

* [## 机器学习扩大了知识和理解之间的差距

给了我们下一步进化的工具

onezero.medium.com](https://onezero.medium.com/machine-learning-might-render-the-human-quest-for-knowledge-pointless-5425f8b00a45)

有人甚至认为机器学习是如此强大,解开这些黑盒是如此复杂,以至于它们代表了从理解到简单地使用这些训练好的模型进行预测的范式转变。如果这项技术具有如此大的破坏性,以至于威胁到科学研究的方式,我们如何控制它的内部运作并打破它们?

有一些方法可以获得对网络所学内容的一点点洞察力,解开这些信息可以在未来给我们提供进一步的洞察力,但我们不能只是将神经网络完全解开,恢复到它的训练信息中,并提取决策的给定原因,或删除训练数据的给定子集,除非我们存储所有数据并不断复制整个神经网络,这不仅效率低下,还会产生更多的隐私问题。

以这种方式展开的神经网络提供了更大的攻击风险。“白盒”神经网络可以通过提供关于训练信息的太多信息的方式进行探测(对黑盒神经网络进行反向工程)。但是,即使这些方法也是探测模型以获取信息的简单形式。它仍然不允许我们真正理解模型中的决策是如何得出的。

法律问题

GDPR 和其他寻求让个人完全控制其数据的法律协议与机器学习相冲突,尤其是这种机器学习。个人对其数据的法律保护越多,非法神经网络就变得越多,这仅仅是因为它们的黑箱性质。GDPR 本身已经为机器学习打开了许多问题,因为它无法对决策结果给出详细的评论。

这个问题在 中解决了 GDPR 会让机器学习非法吗? 虽然这篇文章已经有一年的历史了,但是我感觉这些问题的很多答案仍然不存在。GDPR 在许多方面仍然比某些人想要的要弱得多。

ReadWrite 暗示区块链是给我们普遍基本收入的一种方式,我同意,但不同意这种方式。在他们的文章中, 是普遍基本收入 的缺失成分,作者建议法律提供“对产生数据的个人的完整和不容置疑的数据所有权……”这样的做法将使当前基于神经网络的解决方案完全非法。我不认为区块链是解决这个问题的可行方案。

最后一点

另一个问题,正如我在之前的讨论中提到的,这些企业之所以对我们的数据如此感兴趣,是因为他们被期望免费为我们提供一切。我们要为脸书提供的服务付费吗?不。我知道,因为我是脸书的广告客户。我是他们的消费者之一。因此,脸书等人必须尽他们所能让消费者满意,并为他们的利益服务。这不仅是道德问题,也是法律问题。*

导航: 掌握指标 | 政治理论 | 经济学

进一步阅读

* [## 人工智能心理学

为什么心理学、人类学和认知神经科学的理论需要应用于发展…

towardsdatascience.com](/the-psychology-of-artificial-intelligence-cb03d060288c)*

下兔子洞的快乐,第二部分

原文:https://towardsdatascience.com/the-joy-of-going-down-rabbit-holes-part-ii-d176ec9a3862?source=collection_archive---------32-----------------------

上一次,我们讨论了如何仅利用公*掷硬币固有的随机性来产生一个概率为 1/3 的事件。我们甚至从数学上证明了这一点。现在,我们深入兔子洞。我们现在表明,给定可以表示为分子/分母的任何概率,其中分子分母都是整数(整数),我们可以使用公*抛硬币来定义一个事件,其“成功”概率为 n/d

我们通过本质上扩展我们对特定情况所做的工作来做到这一点,其中 n = 1d = 3。回想一下,我们只是简单地抛硬币两次,这样我们就有了四种同样可能的结果。然后我们制定了一个规则,如果一个特定的结果出现,我们只需再扔两次,重复直到我们结束。那么,我们能为更大的分母做些什么呢?多掷硬币!假设 n = 7d = 2 0。然后我们想要一组 20 个独特的掷硬币结果序列,其中 7 个被(任意地)定义为成功,其余 13 个被定义为“失败”。我们可以像以前一样,通过生成一个附加序列,简单地丢弃剩余的序列。我们应该掷多少次硬币?一次投掷产生 2 个结果,两次投掷 4,三次投掷 8,四次投掷 16,五次投掷 32。所以,抛五次硬币就足够了。现在,我们可以写出五次投掷硬币的所有 32 种可能的序列,将“成功”分配给前七次,“失败”分配给接下来的十三次,将剩下的十二次作为“再掷五次”扔掉。

[source: me]

现在我们可以用之前用过的方法证明它确实有效。

[source: me]

再次,重新排列

[source: me]

数学再次变得非常方便。现在我们来概括一下。如果我们有一个形式为 n/d 的概率,我们还必须将 k 定义为可能的最小整数,使得 2 的 k 的幂至少与 d 一样大。这不是最直观的定义,所以我们来讨论一下。这里是前几个 2 的幂。

[source: me]

使用该表的方法是向下遍历右手列,直到找到一个大于或等于 d 的值,调用这个数字 k ,然后查找 2 被提升到的相应幂代表投掷次数。一般的解决方案包括投掷一枚公*硬币 k 次,并查看所有可能的序列。任意取其中任意 n ,定义为“成功”取其中的下一个 d-n ,定义为“故障”。剩下的 k-d 就干脆忽略了,硬币的投掷次数和之前一样。然后根据需要重复多次,直到我们终止。

进程是否保证终止?是的。我们选择 k 使得它严格小于两倍 d 。因此,而非在一次迭代后终止的概率严格小于 1/2 。所以m 轮这么多次投掷后终止的概率严格来说小于 1/2 的 m 次方,很快趋于零。

现在,数学:

[source: me]

我们现在有一个程序,我们已经从数学上证明了它有期望的成功概率,并且保证终止。

在第 3 部分中,我们将用 Python 对此进行编码,敬请关注。

朱莉娅阶乘问题

原文:https://towardsdatascience.com/the-julia-factorial-issue-72d12f1f42f?source=collection_archive---------28-----------------------

大约一周前,我在从车床软件包中提炼统计模块时,无意中发现了 Julia 语言中一个我认为非常有趣和可笑的【事情】。Julia 是一种编程语言,以其在眨眼之间解决复杂的机器学习问题的统计能力和有效性而闻名。考虑到朱莉娅的名声,这让我遇到的问题变得更加有趣。

二项分布

二项式分布是一种很好的分布,可以用来确定布尔值的有效性。这种分布在数学上是无数算法的核心,可以结合推理和贝叶斯统计,使其具有难以置信的通用性。不仅如此,二项式分布可以应用于更进一步的学习,如准确性验证以及分类模型。

因此,出于显而易见的原因,人们会希望二项分布在他们的武器库中用于各种机器学习和统计任务。在这个特殊的例子中,我正在准备一个征兆测试。符号测试是一个很酷的小推理测试,涉及到两个数组的点减来检测统计显著性。虽然我不能说这是统计学家最强大的推理测试,但我绝对喜欢它的陪伴。

所以在我的符号测试中,我写了一个类似这样的小函数:

function sign(var1,var2)
    sets = var1 .- var2
    positives = []
    negatives = []
    zeros = []
    for i in sets
        if i == 0
            zeros.append!(i)
        elseif i > 0
            append!(positives,i)
        elseif i < 0
            append!(negatives,i)
        end
    end
    totalpos = length(positives)
    totallen = length(var1) + length(var2)
    ans = binomialdist(totalpos,totallen)
    return(ans)
end

不用担心,我会一如既往地分解函数。第一行是我上面讨论的;两个数组的点减法。在此之下,观察到三个空数组。在我看来,数组附加是从迭代循环中获得私有 dim 的最好方法之一,所以我的程序经常会在 for 循环上看到空数组。

至于带条件的 for 循环,当然整个测试都围绕着一个数字是正还是负。记住这一点,我们可以根据与零相关的值将数组附加在一起,下面是负数,上面是正数。我想提到的另一件事是,在大多数情况下,否定列表是不必要的,我可能会在某个时候完全放弃它,因为零和正是符号测试中唯一需要的计算。

这个函数的问题在底部,在这里我们遇到了二项式分布函数。当然,这个功能来自我的大脑,所以我们来看看这个。

二项式分布用上面的公式计算,X 的概率等于样本大小的阶乘除以阳性的阶乘…等等。

在最初编写函数来执行这个数学运算时,我回想起我编写*方根函数的时候。由于车床的意图是保持低进口,我认为它只是去重新发明轮子,以避免需要许多包。这被证明是一个错误,因为我在编写函数后意识到,Julia 在基础语言中加入了他们自己的*方根函数。没有从 math 导入 sqrt,没有使用 math: sqrt,只有 sqrt()。我被带了回来,事实上得知这样的事情被烤成了朱莉娅,我感到非常兴奋。

所以这一次,我没有痛苦地编写自己的函数来做简单的数学运算,如阶乘或*方根,而是决定首先检查 Julia 是否有这样做的基函数。果然,

确实如此。

阶乘表???

因此,有了这个阶乘函数的新知识,我开始写我的二项分布函数,最后结束了这个符号测试。

*function binomialprob(positives,size)
    # p = n! / x!(n-x!)*π^x*(1-π)^N-x
    n = size
    x = positives
    factn = factorial(n)
    factx = factorial(x)
    p = factn / factx * (n-factx) * π ^ x * (1-π)^n - x
    return(p)
end*

当然,从符号测试中获得 P 值并不需要分布,所以实际的分布测试被排除在函数之外,只返回推断概率。嗯,这个作品。我像往常一样测试了我的函数,定义了一些我可以在几秒钟内输入的小数组:

*array1 = [1,4,3,5,4]
array2 = [5,6,8,4,5]*

然后将它们放入函数中:

*p = sign(array1,array2)*

回报为:

*P - 2.082207943758608e11*

那么问题出在哪里?

几个月后,我不情愿地再次去使用 signs test,部分原因只是为了让它摆脱压抑和孤独的存在,令我惊讶的是,这个函数现在有了一个重大问题。

人口(n)的长度太大,Julia 的阶乘函数无法处理。这是因为 Julia 的阶乘函数实际上是使用阶乘函数的阶乘表。

什么?!

这相当于做一个函数,给一个数加 1,而不是只给这个数加 1,我们在一个数的列表中查找这个数和 1 的和是多少,然后返回!那么阶乘函数的上限在哪里呢?解决这个问题有多容易呢?

经过一些快速测试后,阶乘函数只在 1-20 的范围内有效。当然,毫无疑问,你可以用 1-20 的阶乘范围做很多事情,但是对于统计学来说,考虑到 Julia 是一种统计语言,这几乎是没有用的,因为测试人口规模在 20 以内是无效的。这在应用于像符号测试这样的事情时尤其成问题,因为每个数字都对返回的 P 值有直接影响。

计算

有了这些新发现之后,我决定更深入地研究一下 Scipy 是如何解决这个问题的,但我仍然不愿意用自己的函数来解决这个问题,因为你越想解决这个问题,它就变得越复杂。

Scipy 的阶乘函数包含在 scipy.special 中,并且需要尽可能多的挖掘才能找到…

考虑到这一点,我很快决定跳进一个谷歌 Colab 笔记本,看看 Scipy 的功能是否像 Julia 的一样受到限制。

没有。

结论

我知道开发一门语言需要做很多事情,在这个丰富的过程中,很多事情都被忽略了。我敢肯定,阶乘在朱莉娅的眼里只是一个小问题,因为它们在统计学中的作用还不足以证明自己花了大量时间用朱莉娅语言编写阶乘,而 没关系

然而,考虑到 factorial 实际上是 base Julia 中的一个函数,而这个函数恰好完成了一半,所以任何想要使用 factorial()这个名字的适当的 factorial 数学函数都做不到。当然,如果常规函数没有问题,这就不是问题。

我怎么称赞朱莉娅都不为过,因为我认为她是如此美丽和清新。事实上,Julia 是我最喜欢的编程语言,比起其他语言,我更喜欢使用它。同样,我认为反馈对于像 Julia 这样的语言的发展是绝对重要的。这是我对朱莉娅的各种批评之一。要明确的是:我爱茱莉亚爱得要死,我也可以对任何语言做出同样的评论。

树袋熊、熊猫、擎天柱和火花的丛林

原文:https://towardsdatascience.com/the-jungle-of-koalas-pandas-optimus-and-spark-dd486f873aa4?source=collection_archive---------4-----------------------

从 Databricks(考拉)、Optimus framework 和 Apache Spark 3.x 的最新库可以期待什么

如果你和我一样对数据科学感到兴奋,你大概知道 Spark+AI 最新峰会昨天(2019 年 4 月 24 日)开始了。而且有很棒的事情可以聊。但我会用衍生产品来做。

如果你一直在关注我,你会发现我参与创建了一个叫做 Optimus 的框架。如果您想了解更多信息,请查看以下文章:

[## 擎天柱的数据科学。第 1 部分:简介。

用 Python、Spark 和 Optimus 分解数据科学。

towardsdatascience.com](/data-science-with-optimus-part-1-intro-1f3e2392b02a) [## 擎天柱的数据科学。第 2 部分:设置您的数据操作环境。

用 Python、Spark 和 Optimus 分解数据科学。今天:数据科学的数据操作。..*第 1 部分在此…

towardsdatascience.com](/data-science-with-optimus-part-2-setting-your-dataops-environment-248b0bd3bce3)

我在这里用 Optimus 和其他开源工具解释了整个数据科学环境。这可能是第 3 部分,但我更感兴趣的是向您展示其他内容。

擎天柱蜜蜂

https://github.com/ironmussa/Optimus

起初,Optimus 是作为一个清理大数据的项目开始的,但突然我们意识到这个框架有更多的机会。现在,我们已经创造了许多有趣的东西,如果你是一个使用熊猫或 spark 的数据科学家,你应该去看看。

现在我们有这些 API:

  • Spark 数据帧的改进版本(更适合清理和管理数据)。
  • 使用 Spark 简化机器学习。
  • 使用 Spark 和 Spark 深度学习更轻松地进行深度学习。
  • 直接从火花数据帧绘图。
  • 描绘火花数据帧。
  • 数据库连接(像亚马逊红移)更容易。
  • 丰富与外部 API 连接的数据。

还有更多。你甚至可以直接从网上读取数据到 Spark。

因此,您可以看到,我们一直在努力改善数据科学家的世界。我们关心的事情之一是创建一个简单和可用的 API,我们并不喜欢 Pandas API 或 Spark API 本身,但它们的组合加上一点点令人惊叹的东西,创建了你今天可以称为我们的框架。

考拉 vs 擎天柱 vs 火花 vs 熊猫

https://www.freepik.com/

今天,Databricks 宣布,通过增强 Apache Spark 的 Python DataFrame API 以兼容熊猫,Koala 项目是与大数据交互时更有效的方式。

如果你想试试这个 MatrixDS 项目:

[## MatrixDS |数据项目工作台

MatrixDS 是一个构建、共享和管理任何规模的数据项目的地方。

community.platform.matrixds.com](https://community.platform.matrixds.com/community/project/5cc0de62b8f4a97f2912aabf)

还有这个 GitHub 回购:

[## FavioVazquez/考拉 _ 擎天柱 _ 火花

与火花和朋友一起震撼世界。。为 FavioVazquez/koalas _ Optimus _ spark 开发做出贡献,创建一个…

github.com](https://github.com/FavioVazquez/koalas_optimus_spark)

因此,我没有用复制粘贴树袋熊的文档来烦你,而是创建了一个树袋熊、Optimus 和 Spark 之间联系的简单示例。

你需要安装擎天柱

pip install --user optimuspyspark

还有考拉

pip install --user koalas

我将使用这个数据集进行测试:

https://raw . githubusercontent . com/databricks/考拉/master/data/sample _ stocks . CSV

让我们首先用 Spark vanilla 读取数据:

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()df = spark.read.csv("sample_stocks.csv", header=True)

为此,我之前需要上传数据集。让我们看看擎天柱:

from optimus import Optimus
op = Optimus()
df = op.load.url("[https://raw.githubusercontent.com/databricks/koalas/master/data/sample_stocks.csv](https://raw.githubusercontent.com/databricks/koalas/master/data/sample_stocks.csv)")

这简单了一步,因为有了 Optimus,你可以直接从网上读取数据。

考拉呢?

import databricks.koalas as ksdf = ks.read_csv("[https://raw.githubusercontent.com/databricks/koalas/master/data/sample_stocks.csv](https://raw.githubusercontent.com/databricks/koalas/master/data/sample_stocks.csv)")

这段代码会失败,那会发生在熊猫身上吗?

import pandas as pddf = pd.read_csv("[https://raw.githubusercontent.com/databricks/koalas/master/data/sample_stocks.csv](https://raw.githubusercontent.com/databricks/koalas/master/data/sample_stocks.csv)")

不,那会有用的。那是因为你可以直接从网上读取熊猫的数据。好吧,让我们让考拉代码工作:

import databricks.koalas as ksdf_ks = ks.read_csv("sample_stocks.csv")

这看起来很简单。顺便说一下,如果你想用 Optimus 从本地存储器中读取数据,几乎是一样的:

from optimus import Optimus
op = Optimus()
df_op_local = op.load.csv("sample_stocks.csv")

但是,让我们看看接下来会发生什么。这种数据帧有哪些类型?

print(type(df_sp))
print(type(df_op))
print(type(df_pd))
print(type(df_ks))

结果是:

<class 'pyspark.sql.dataframe.DataFrame'>
<class 'pyspark.sql.dataframe.DataFrame'>
<class 'pandas.core.frame.DataFrame'>
<class 'databricks.koalas.frame.DataFrame'>

所以除了 Spark 本身,唯一能创造 Spark DF 的框架就是 Optimus。这是什么意思?

让我们看看当我们想要显示数据时会发生什么。为了在 Spark 中显示数据,我们通常使用。秀()法,而对于熊猫则为头()【法。

df_sp.show(1)

会按预期工作。

df_op.show(1)

也会起作用。

df_pd.head(1)

也会起作用。但是我们的考拉 DF 呢?你需要使用 pandas API,因为这是这个库的目标之一,让从 pandas 的过渡更容易。所以:

df_ks.show(1)

会失败,但是

df_ks.head(1)

会管用的。

如果你和我一起运行这段代码,如果你点击 spark 的 show ,你会看到:

+----------+------+------+------+------+----------+----------+----------+-------+-------+------+--------+----------+------+
|      Date|  Open|  High|   Low| Close|    Volume|ExDividend|SplitRatio|AdjOpen|AdjHigh|AdjLow|AdjClose| AdjVolume|Symbol|
+----------+------+------+------+------+----------+----------+----------+-------+-------+------+--------+----------+------+
|2018-03-27|173.68|175.15|166.92|168.34|38962839.0|       0.0|       1.0| 173.68| 175.15|166.92|  168.34|38962839.0|  AAPL|
+----------+------+------+------+------+----------+----------+----------+-------+-------+------+--------+----------+------+
only showing top 1 row

这有点糟糕。每个人都喜欢那些漂亮的 HTML 大纲表来查看他们的数据,熊猫也有,所以考拉从熊猫那里继承了它们。但是记住,这不是火花 DF。如果你真的想看到一个更漂亮的带有 Optimus 的 Spark DF 版本,你可以使用。表()方法

df_op.table(1)

你会看到:

它更好地向您显示了数据以及相关信息,如列的类型、DF 中的行数、列数和分区数。

选择数据

让我们用我们的数据做更多的事情。比如切片。

我将选择日期、开盘价、盘高、盘低和交易量。可能有更多的选择数据的方法,我只是使用常见的。

带火花:

# With Spark
df_sp["Date","Open","High","Volume"].show(1)# or
df_sp.select("Date","Open","High","Volume").show(1)

带擎天柱:

df_op["Date","Open","High","Volume"].table(1)# or
df_op.select("Date","Open","High","Volume").table(1)# or with indices :)df_op.cols.select([0,1,2,5]).table(1)

与熊猫:

df_pd[["Date","Open","High","Volume"]].head(1)#or df_pd.iloc[:, [0,1,2,4]].head(1)

带考拉:

df_ks[["Date","Open","High","Volume"]].head(1) # will workdf_ks.iloc[:, [0,1,2,4]].head(1) # will faildf_ks.select("Date","Open","High","Volume") # will fail

所以正如你现在看到的,我们用 Optimus 很好地支持了不同的东西,如果你喜欢熊猫的[[]]风格,你也可以用它来处理考拉,但是你不能通过索引来选择,至少现在还不能。

与考拉和擎天柱不同的是,你在底层运行 Spark 代码,所以你不必担心性能。至少现在不是。

更多高级内容:

让我们得到一列的频率:

熊猫:

df_pd["Symbol"].value_counts()

考拉:

df_ks["Symbol"].value_counts()

他们是一样的,这很酷。

火花(一些坏零件):

df_sp.groupBy('Symbol').count().show()

擎天柱(你可以像在 Spark 里那样做):

df_op.groupBy('Symbol').count().show()

或者你可以使用。cols 属性获得更多功能:

df_op.cols.frequency("Symbol")

让我们用 One-Hot-encoding 来转变我们的数据:

熊猫:

# This is crazy easy
pd.get_dummies(data=df_pd, columns=["Symbol"]).head(1)

考拉:

# This is crazy easy too
ks.get_dummies(data=df_ks, columns=["Symbol"]).head(1)

火花(足够相似的结果,但做起来很恐怖):

# I hate this
from pyspark.ml.feature import StringIndexer,OneHotEncoderEstimatorindexer = StringIndexer(inputCol="Symbol", outputCol="SymbolIndex")
df_sp_indexed = indexer.fit(df_sp).transform(df_sp)encoder = OneHotEncoderEstimator(inputCols=["SymbolIndex"],
                                 outputCols=["SymbolVec"])model = encoder.fit(df_sp_indexed)
df_sp_encoded = model.transform(df_sp_indexed)
df_sp_encoded.show(1)

擎天柱(好一点但我还是更喜欢考拉这个):

from optimus.ml.feature import string_to_index, one_hot_encoderdf_sp_indexed = string_to_index(df_sp, "Symbol")
df_sp_encoded = one_hot_encoder(df_sp_indexed, "Symbol_index")
df_sp_encoded.show()

在这种情况下,更简单的方法来自熊猫,幸运的是它在考拉身上实现了,这种类型的功能在未来会增加,但现在这几乎是我们所有的功能,正如你在这里看到的:

[## 一般功能-考拉 0.1.0 文档

编辑描述

考拉. readthedocs.io](https://koalas.readthedocs.io/en/latest/reference/general_functions.html)

但是他们在火花中运行,所以它摇滚。

情节:

绘图是数据分析的重要部分。对于熊猫,我们习惯于非常容易地绘制我们想要的任何东西,但是对于 Spark 来说,就没有那么容易了。我们很高兴地宣布,在最新版本的 Optimus (2.2.2)中,我们已经创建了一种直接从 Spark 数据帧创建绘图的方法,不需要子集化。

熊猫:

df_pd.plot.scatter("Open","Volume")

df_pd.boxplot("High")

df_pd.hist("Low")

考拉:

df_ks.hist("Low")

这样不行。

火花:

没有。

擎天柱:

df_op.plot.boxplot(“High”)

df_op.plot.hist(“Low”)

df_op.plot.scatterplot(["Open","Volume"])

Apache Spark 3.x:

databricks.com

以下是对 Spark 3.x 的一些期望:

  • Scala 2.12 支持(列出两次)
  • 非实验性连续加工
  • Kubernetes 支持非实验性
  • 数据源 API v2 的更新版本
  • Hadoop 3.0 支持
  • 提高 Spark 深度学习管道的可用性

还有更多!

databricks.com

结论

Spark 它正呈指数级增长,如果你现在没有使用它,你肯定应该使用它。通常你会来自熊猫或类似的地方,所以利用像考拉和擎天柱这样的伟大的库来改善你在数据科学世界中的生活。

如果您有任何问题,请在此写信给我:

[## 法维奥·瓦兹奎——science y Datos | LinkedIn 创始人/首席数据科学家

加入 LinkedIn ‼️‼️重要提示:由于 LinkedIn 技术限制,我现在只能接受连接请求…

www.linkedin.com](https://www.linkedin.com/in/faviovazquez/)

在推特上关注我:

[## 法维奥·巴斯克斯(@法维奥·巴斯克斯)|推特

Favio Vázquez 的最新推文(@FavioVaz)。数据科学家。物理学家和计算工程师。我有一个…

twitter.com](https://twitter.com/faviovaz)

祝学习愉快:)

卡尔曼滤波器和外部控制输入

原文:https://towardsdatascience.com/the-kalman-filter-and-external-control-inputs-70ea6bcbc55f?source=collection_archive---------14-----------------------

使用状态偏移处理外部控制输入

Block diagram of a control system by Wikimedia user Orzetto (CC BY-SA 4.0). This article features a “controller” to the system, though not one designed to match a reference value.

在本文中,您将

  • 使用statsmodels Python 模块实现带有外部控制输入的卡尔曼滤波器模型,
  • 使用最大似然估计卡尔曼滤波器模型矩阵中的未知参数,
  • 运动表现的体能-疲劳模型的背景下,了解如何通过卡尔曼滤波器对累积影响进行建模。

具有控制输入的卡尔曼滤波器

以下是具有外部“控制”输入 B u _t 的卡尔曼滤波器模型的说明:

其中qt∾n(0、𝐐)和rt∾n(0、𝐑).模型矩阵 A BH QR 可能包含未知参数,并且通常被允许随时间变化。外部“控制向量”输入, u _ t ,必须知道到目前为止的所有时间点,如果任务需要预测未来的多个时间步,也必须知道。

在许多预测环境中,外部控制项是不使用的。标准的时间序列模型,其中内部系统动力学是唯一发挥作用的力量(如 ARIMA),不需要它们。因此,在statsmodels中缺乏明确的控制规范机制并不奇怪。幸运的是,statsmodels确实提供了一个状态截取的接口,它足以包含外部控制输入。

将控制输入用于 stats 模型

花点时间熟悉一下statsmodels 状态空间表示法,它对状态方程使用了与本文开头略有不同的符号:

本规范中没有的“state _ interceptc_tstatsmodels中默认为零。描述为“c:state _ intercept(k _ States x nobs)”,这意味着用户可以在每个时间点自由指定不同的状态截距值。(对于所有的statsmodels卡尔曼滤波器模型矩阵都是如此。)但是设置

对于 t =1… T,,我们有一个带有控制输入的卡尔曼滤波器模型。

示例:状态空间形式的体能-疲劳模型

建模累积冲击第一部分 中的体能-疲劳模型为:

其中 p_t 为(运动)表现, w_t 为时间 t 的训练“剂量”(时间加权训练强度)。在我以前探索该模型的文章中,训练历史与其他函数的卷积是表示训练课程累积影响的机制。本文将通过保持一个系统状态来做一些不同的事情。为了做到这一点,我们必须将体能-疲劳模型置于状态空间形式,以训练剂量作为外部控制输入。

在上面的等式中,第一个卷积和代表运动健康,我现在称之为 h_t 。以下是滞后一个时间步长的结果:

分离定义 h_t 的卷积和中的最后一项,我们得到递归:

对于疲劳的卷积和,该论证以相同的方式进行,此后称为 g_t ,并且健康和疲劳的递归关系可以用下面的“状态空间形式”表示:

我们可以继续使用矩阵来表达模型的第二个“测量”阶段:

其中 r_t ~ N(0,σ)。控制输入滞后一个时间周期,这是我们必须考虑的,但除此之外,我们有一个带有外源控制输入的健康疲劳模型的典型状态空间公式。结合给定健康和疲劳的当前状态的性能测量模型,卡尔曼滤波器工具包(状态估计、简单插补和可能性评估)由我们支配。

本节将使用可从 建模累积影响第二部分 中使用的 R 要点中复制的模拟数据,也可作为 csv 文件提供给读者。要运行以下代码,请更改以下 Python 代码块中的文件路径:

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltimport statsmodels as sm
from statsmodels.tsa.statespace.mlemodel import MLEModeltrain_df = pd.read_csv("<your location>/train_df.csv")
train_df.head()

这个块加载所需的依赖项,并打印几行输入数据集train_df:

day  day_of_week    period   w        perf
0    1            0  build-up  10  489.197363
1    2            1  build-up  40  500.545312
2    3            2  build-up  42  479.886648
3    4            3  build-up  31  474.226865
4    5            4  build-up  46  459.322820

为了在statsmodels中创建一个卡尔曼滤波器模型,我们必须扩展MLEModel基类(从[mlemodel](https://www.statsmodels.org/dev/_modules/statsmodels/tsa/statespace/mlemodel.html)模块扩展到)。

class FitnessFatigue(MLEModel): start_params = [500, .1, .3, 60, 15, 10]
    param_names = ['p_0', 'k_g', 'k_h', 'tau_g', 'tau_h', 'sigma'] def __init__(self, p, w_lag1):
        super().__init__(endog=p, k_states=2, exog=w_lag1)
        self.initialize_approximate_diffuse() def update(self, params, **kwargs):
        params = super().update(params, **kwargs) self['obs_intercept', 0, 0] = params[0]
        # state space model ------
        self['transition'] = (
            np.array([[np.exp(-1.0 / params[3]), 0],
                      [0, np.exp(-1.0 / params[4])]])
        )
        self['state_intercept'] = (
            np.array([[np.exp(-1.0 / params[3])],
                     [np.exp(-1.0 / params[4])]])
            * self.exog
        )
        # measurement model
        self['design', 0, 0] = params[1]
        self['design', 0, 1] = params[2]
        self['obs_cov', 0, 0] = params[5] ** 2

关于上面的类,需要注意一些事情:

  • 我们必须在start_params中输入起始值
  • 我们必须指定一个接受数据的__init__方法。在这种情况下,它必须接受性能测量和训练(即控制)数据。
  • 请注意__init__内滞后训练变量的创建。体能-疲劳模型特别指定了在训练事件影响体能疲劳之前的一段时间间隔。
  • 我们能够避免在[statsmodels](https://www.statsmodels.org/dev/generated/statsmodels.tsa.statespace.representation.Representation.html) 表示中指定预乘状态误差项的选择矩阵。这默认为一个零矩阵,我们通常会遇到麻烦,因为没有设置,但健康疲劳模型,当直接转换为状态空间形式时,没有状态误差项。

接下来,用数据实例化对象,并使用最大似然估计未知参数。请注意,我们确实需要延迟训练输入,以便匹配模型的规范(在文章发表期间,我已经反复讨论过这个问题)。

train_df['lag_w'] = train_df['w'].shift(1)
train_df = train_df.iloc[1:]ffm_kf = FitnessFatigue(train_df.perf, train_df.lag_w)mle_results = ffm_kf.fit(method = 'bfgs', maxiter = 1000)
mle_results.summary()

最后一个命令产生以下输出(间距已被修改):

输出显示卡尔曼滤波器在恢复仿真中使用的参数值方面做得很好。在 累积影响建模第三部分 中需要自定义非线性*似的标准误差,现在已经“开箱即用”另一方面,最大似然法在这种情况下确实需要一些调整;增加最小迭代次数并选择 BFGS 方法得到稳定的拟合。

鼓励读者重复上面的练习,用已知的初始化代替“*似漫射”初始化(目前已被注释掉)。与卡尔曼滤波器和最大似然法不同,使用已知初始化的结果有些不同,尤其是标准误差。当使用已知的初始化时,来自卡尔曼滤波器的标准误差估计类似于使用非线性*似的估计。对于*似漫射初始化,对于某些参数(尤其是指数中的“时间常数”)来说,它们要大得多。

卡尔曼滤波器使我们能够访问滤波状态估计和*滑状态估计,前者仅使用特定时间点之前的可用数据,后者将所有可用数据合并到每个时间点的状态估计中。下面我们将可视化过滤后的状态估计,这自然会经历一个粗略的开始:

fig = plt.figure(figsize = (12, 8))
plt.rcParams.update({'font.size': 18})plt.plot(mle_results.filtered_state[0, :], color='green',
         label='fitness')
plt.plot(mle_results.filtered_state[1, :], color='red',
         label='fatigue')
plt.title("Filtered estimates of state vector (Fitness and " +
          "Fatigue) over time")
plt.xlabel('Time')
plt.ylabel('Filtered state estimate')
plt.legend()
plt.show()

假设真实的适应状态被初始化为 0,并逐渐变高,那么最初的几个过滤状态估计值会偏离很多,这解释了为什么likelihood_burn被设置为 15。将图形代码中的filtered_state替换为smoothed_state显示的图片与 建模累积影响第一部分 中的图片非常相似。

讨论

在写这篇文章之前,我认为获得带控制输入的卡尔曼滤波器的唯一方法是购买 MATLABSAS/ETS 。虽然statsmodels可以使规范更加简单,但使用时变状态截距仍然可以轻松地将控制输入添加到卡尔曼滤波器例程中。

用于定义模型的子类派生,就像在statsmodels中使用的,是圆滑的,但是使得调试不那么透明。(有时这些例子不起作用。)记住结果对象包含它们的模型矩阵;将它们打印出来是调试的好方法!不要忘记statsmodels中乘以状态误差的“选择矩阵”——它默认为零。我们在这里不需要它,因为适应性疲劳模型没有指定状态错误,但它会导致令人沮丧的调试场景,其中代码更改不会影响输出。

尽管由于statsmodels默认值,缺少状态误差项使得当前任务更简单,但是添加状态误差项的能力是卡尔曼滤波器优于原始适应性-疲劳模型的一个优点。很容易想象训练之外影响潜伏体能疲劳的事情,包括睡眠质量和营养。将状态误差项添加到原始的体能-疲劳模型是另一个要探索的变化。

中的卡尔曼滤波器和 中的最大似然不同,“*似扩散”初始化导致了与状态的已知初始化不同的结果。在那篇文章中,也许*稳 ARMA(1,2)模型太像垒球了,初始状态的不确定性只有在没有均值的非*稳情况下才真正重要。然而,这让我好奇如果在statsmodels中实现的话,“精确扩散”初始化会有多么不同。

卡尔曼滤波器是一个非常强大的时间序列分析和建模工具。它不仅能够计算经典时间序列模型的困难可能性,而且能够处理具有外源控制输入的非*稳模型,甚至引导下一架航天飞机飞往月球。作为数据科学家,我们很幸运在statsmodels有一个卡尔曼滤波器的免费开源实现,对于统计和工程目的都足够灵活。

卡尔曼滤波器和(最大)似然

原文:https://towardsdatascience.com/the-kalman-filter-and-maximum-likelihood-9861666f6742?source=collection_archive---------3-----------------------

了解估计卡尔曼滤波器矩阵中未知参数的可能性的能力和局限性

Figure 1 from Guillera-Arroita et al (2014) depicting a log-likelihood surface. CC BY 4.0

在本文中,您将:

  • 使用 Python 模块[statsmodels](https://www.statsmodels.org/stable/index.html)估计卡尔曼滤波器模型矩阵中的未知参数
  • 根据卡尔曼滤波模型计算单个观测值的对数似然
  • statsmodels中探索不同状态初始化选项的影响

介绍

在 Kaggle 的网络流量时间序列预测比赛后,我立即意识到了卡尔曼滤波器的威力,这场比赛要求对数千个维基百科页面的未来网络流量进行预测。在这场竞赛中,像“中位数”这样简单的启发式算法很难被击败,我花在 ARIMA 和预言家模型上的精力毫无进展。我想知道传统的预测工具箱中是否有适合这项任务的东西。然后我看了一个帖子,作者是一个只知道叫“ os、卡尔曼滤波器 第 8 名的用户。

自从这篇文章第一次被写出来, os 的身份现已被揭露为 Otto Seiskari ,他对这篇文章留下了一个启发性的回应。自从最初写这篇文章以来,我的观点也发生了变化,我将在最后解释这一点。

虽然 Otto 确实使用了中位数作为后备解决方案,但其核心方法是一个 8 态卡尔曼滤波器,对当地水*和每周季节性进行编码。Otto 还专门为这次比赛写了一个定制的 python 包, simdkalman 。型号规格直接来自 simdkalman 文档,粗体字体稍有变化:

其中 q_t ~ N (0, Q ) 和 r_t ~ N (0, R ) 。在本文中,度量 y _ t 是一个标量;r_ t 的方差由 1x1 矩阵R 表示。这里, x _ t 是未观测的“状态”向量, y_t 是时间段 t 的观测测量。这些系统共同构成了许多时间序列数据集的有用表示。采用这种框架的一个好处是卡尔曼滤波器机制的可用性,用于计算可能性和创建一步预测等(在 R 的 stats.arima 文档中搜索“卡尔曼”以查看其使用示例)。

实际上, AH 可以来自每周季节性、本地趋势等的标准“食谱”。、 QR 未知的可能性更大。Otto 没有对它们进行估计,而是使用默认选项来选择 Q 和 R,然后使用称为“*滑参数”的标量来调整一个矩阵与另一个矩阵的比例。

尽管我不能否认这种方法的有效性,但作为一名统计学家,“构建”Q 和 R 并不适合我。然后我深入研究了 Roger Labbe 的基于 Jupyter 的文本,Python 中的卡尔曼和贝叶斯滤波器,发现它也在卡尔曼滤波器数学部分建议了一个类似的过程:“在实践中,”文本说,“我们挑选一个数字,对数据进行模拟,并选择一个工作良好的值。”

我听到了 15 年前教室里的另一个声音。一位名叫大卫·迪基的教授问道,他的话被反复引用,

你喜欢数字七吗?三个怎么样?”

[暂停以示强调]

让我们达成一致,在不知道数据在估算什么的情况下,不要从数据中计算任何东西。”

最大似然估计,对于它可能具有的任何错误,是估计未知量的原则方法,并且似然是卡尔曼滤波操作的“副产品”。在下一节中,我们将用状态空间形式的 ARMA(2,1)探索 Python 的statsmodels中这些计算的中间过程。最后,我们将使用最大似然法,利用这种似然性得到对 A、HQ (R 将是已知的)的估计。

卡尔曼滤波器和似然

顺序到达数据的可能性

以下联合 pdf 的产品扩展在时序情况下特别有用:

在我们的情况下,有模型矩阵 AHQR ,它们都有潜在的未知成分。设θ包含构造这些矩阵所需的所有未知参数。那么可能性的对数变成:

因此,有两个分析任务:

  • 得到初始点的对数似然, y_0,
  • 以过去为条件得到当前点的对数似然,y _ t | y _(t-1),…,y _0

回想一下,卡尔曼滤波器的“滤波”操作给出了未知状态向量x_t的条件分布,给出了到当前时间点 t 的所有观察值 y_t (脚本 Y_t ):

的另一篇卡尔曼滤波器说明文章中,该分布被表示为时间 t 时未知状态的贝叶斯后验分布,但在这里,它被表示为潜在随机向量 x _t 的采样分布。

对可能性的条件贡献

一次解开测量模型会导致:

由此推出 y_t | y_{t-1},…,y_0 一定是正规的,因为 x {t-1} | *y,…,y_0 是。它也给了我们一个计算这个条件正态的均值和方差的起点。条件意义仅仅是:*

条件方差是使用随机向量的标准方差公式得到的:

回想一下 QRAH 都是由θ中的参数完全指定的。这些参数需要数值最大化例程中的起始值,因此需要在似然最大化的每个阶段进行上述计算。

初始点似然贡献

初始测量值的分布需要初始化状态均值向量和方差矩阵。在静态模型的情况下,存在基于系统长期运行行为的状态向量的正确初始(先验)均值和方差(参见华盛顿大学的笔记第 2 页了解更多细节)。

对于非静态模型,初始化更具挑战性。statsmodels提供的解决方案是“*似扩散”初始化,即零均值和非常大的协方差矩阵。统计学家不喜欢这个(“这提出了数字问题,并且没有回答扩散结构 s 存在的问题”——Piet de Jong,1991 )。虽然我们不会在这里处理它, R 包 KFAS 确实提供了“精确的漫射初始化方法”为了简单明了,我们将在下面的例子中使用一个“已知的”初始化。

示例:状态空间形式的 ARMA 模型

因为本文将使用一个特定的 ARMA(1,2)模型:

其中 ϵ_t ~ N(0,1.2)为 t = 1,…,1000。

生成 ARMA(1,2)数据

使用statsmodels模拟来自 ARMA(1,2)的数据很简单,但请注意 AR 和 MA 参数系数的输入方式:

import numpy as np
from statsmodels.tsa.arima_process import ArmaProcessnp.random.seed(20190529)
ar1ma2 = ArmaProcess(ar=np.array([1, -.9]),
                     ma=np.array([1, .2, -.1]))
y = ar1ma2.generate_sample(nsample=1000, scale=1.2)

以下是一些观察结果:

In [6]: print(y[0:5])
[1.41505527 1.38650169 1.54085345 2.53833794 3.9467489 ]

statsmodels ARMA类有一个用于拟合 ARMA 模型的fit()方法:

from statsmodels.tsa.arima_model import ARMAmodel = ARMA(y, (1, 2))
model_fit = model.fit(trend='nc')

这导致输出(略有修改):

In [13]: model_fit.summary()                                                                                                  Out[13]:                                                                                                                      <class 'statsmodels.iolib.summary.Summary'>                                                                                   """                                                                                                                                                         ARMA Model Results                                                                              ==================================================================
Dep. Variable:   y            No. Observations:             1000
Model:           ARMA(1, 2)   Log Likelihood               **-1629.051**
==================================================================
            coef    std err   z       P>|z|  [0.025  0.975]
------------------------------------------------------------------
ar.L1.y    **0.9008**    0.017   51.919   0.000   0.867  0.935
ma.L1.y    **0.1474**    0.037    4.036   0.000   0.076  0.219
ma.L2.y   **-0.1360**    0.037   -3.715   0.000  -0.208 -0.064 

注意样本的对数似然以及系数估计值(粗体)。

状态空间形式的 ARMA(1,2)模型

为了在状态空间框架中得到这个 ARMA(1,2)模型,我们有许多选择。“哈维”表示法的好处(如沃顿商学院课堂讲稿第 8 页所述)在于它直接结合了 AR 和 MA 系数。对于我们的模型,这种表示是:

其中, r _t 已被明确替换为 0,以表明所有误差可变性均在状态项中处理,且

尽管 R 为零,这个 ARMA(1,2)模型适合卡尔曼滤波框架。下面是这个模型在statsmodels中的精确编码,尽管它比必要的更冗长:

from statsmodels.tsa.statespace.mlemodel import MLEModel
from statsmodels.tsa.statespace.tools import (constrain_stationary_univariate, unconstrain_stationary_univariate)class AR1MA2_verbose(MLEModel):
    start_params = [.8, 0.24, -.11, 1.3]
    param_names = ['ar1', 'ma1', 'ma2', 'sigma2'] def __init__(self, endog):
        super().__init__(endog, k_states = 3) # Using the Harvey Representation
        self['transition', 0, 1] = 1.0
        self['transition', 1, 2] = 1.0 self['design', 0, 0]   = 1.0 self['selection', 0, 0] = 1.0
        self['selection', 1, 1] = 1.0
        self['selection', 2, 2] = 1.0 self.initialize_known(np.array([0, 0, 0]), np.eye(3))
        #self.initialize_stationary()
        #self.initialize_approximate_diffuse() def transform_params(self, params):
        phi = constrain_stationary_univariate(params[0:1])
        theta = constrain_stationary_univariate(params[1:3])
        sigma2 = params[3] ** 2
        return np.r_[phi, theta, sigma2] def untransform_params(self, params):
        phi = unconstrain_stationary_univariate(params[0:1])
        theta = unconstrain_stationary_univariate(params[1:3])
        sigma2 = params[3] ** 0.5
        return np.r_[phi, theta, sigma2]

    def update(self, params, **kwargs):
        params = super().update(params, **kwargs) self['transition', 0, 0] = params[0] self['state_cov', 0, 0] = params[3] * 1.0
        self['state_cov', 1, 0] = params[3] * params[1]
        self['state_cov', 2, 0] = params[3] * params[2]
        self['state_cov', 0, 1] = params[3] * params[1]
        self['state_cov', 1, 1] = params[3] * params[1] ** 2
        self['state_cov', 2, 1] = params[3] * params[1] * params[2]
        self['state_cov', 0, 2] = params[3] * params[2]
        self['state_cov', 1, 2] = params[3] * params[1] * params[2]
        self['state_cov', 2, 2] = params[3] * params[2] ** 2

        pass # adding this to ease some cpaste issues

statsmodels模型表示的文档在这里是。下面是关于上述实现的一些注意事项。

  • 注意“选择”矩阵被设置为等于__init__中的恒等式。按照statsmodels 状态空间表示的顺序,这个矩阵被状态空间误差预乘,默认情况下是零——如果你想要状态误差,你必须显式编码!。选择矩阵可以设置为(1 θ _1 θ _2)^T,使上述表示更简单。
  • start_params变量将初始化最大似然例程,但是我们也将在接下来的演示中使用它。注意数值接*真实。
  • 参数转换对于似然性演示来说不是必需的,但是对于似然性最大化例程来说却是必需的。
  • 如前所述,我们将从潜在状态均值和协方差矩阵(零均值和恒等方差矩阵)的已知初始化开始,以演示可能性计算。

计算几个点的对数似然

我们将首先创建一个卡尔曼滤波器模型的实例,并用初始值对其进行初始化。由于参数值包含了重建 AHQR 的所有必要信息,statsmodels的卡尔曼滤波器可以在任何进一步优化之前立即开始滤波。

kf_model_verbose = AR1MA2_verbose(y)
filtered = kf_model_verbose.filter(kf_model_verbose.start_params)

在 iPython 中交互运行,很容易看到对于所有 1000 个时间点,filtered_state包含一个 3 维状态向量,而filtered_state_cov包含一个 3×3 协方差矩阵。

In [25]: filtered.filtered_state.shape
Out[25]: (3, 1000)In [26]: filtered.filtered_state_cov.shape
Out[26]: (3, 3, 1000)In [27]: kf_model_verbose.loglikeobs ... [0:3]
Out[27]: array([-1.92012925, -1.34946888, -1.37622846])

最后一行显示了根据statsmodels的前三次测量的对数似然贡献。这些都是我们想要搭配的。

我们现在将使用第节中为顺序到达数据建立的公式。矩阵 AHQR 易于访问,矩阵乘积 HA 被计算并存储在下面的HA中:

A = kf_model_verbose['transition', 0:, 0:]
H = kf_model_verbose['design', 0:, 0:]
Q = kf_model_verbose['state_cov', 0:, 0:]
R = kf_model_verbose['obs_cov', 0:, 0:]HA = np.matmul(H, A)

为了匹配似然向量中的第一个数字-1.9201,首先注意 μσ在零向量和单位矩阵处被初始化。测量向量只取状态向量的第一个元素,没有额外的误差项( R 为零),因此第一个观察值y[0]与一个 N (0 1)分布进行比较。

*from scipy.stats import norm
np.log(norm.pdf(y[0], 0, 1)) Out[36]: **-1.9201**292483430195*

由于 python 从零索引时间开始, μ _0 和σ_ 0 实际上是给定初始数据测量的第一个更新的状态均值和方差矩阵。在可能性推导中的计算之后,**

*mu_0 = filtered.filtered_state[0:, 0]
Sigma_0 = filtered.filtered_state_cov[0:, 0:, 0]E_alpha_1 = np.matmul(np.matmul(H, A), mu_0)
V_alpha_1 = (np.matmul(np.matmul(HA, Sigma_0), np.transpose(HA)) +
             np.matmul(np.matmul(H, Q), np.transpose(H)) + R)np.log(norm.pdf(y[1], E_alpha_1, np.sqrt(V_alpha_1)))*

结果为array([[-1.34946888]]),匹配第二次测量的对数似然。再来一轮应该能让人相信我们已经掌握了模式。

*mu_1 = filtered.filtered_state[0:, 1]
Sigma_1 = filtered.filtered_state_cov[0:, 0:, 1]E_alpha_2 = np.matmul(np.matmul(H, A), mu_1)
V_alpha_2 = (np.matmul(np.matmul(HA, Sigma_1), np.transpose(HA)) +
             np.matmul(np.matmul(H, Q), np.transpose(H)) + R)np.log(norm.pdf(y[2], E_alpha_2, np.sqrt(V_alpha_2)))Out[46]: array([[**-1.37622846**]])*

还是那句话,匹配。如果我们对 1000 次测量的对数似然性求和,我们得到的结果会比我们在 ARMA 拟合中看到的结果稍小(即更负),这是意料之中的,因为我们的似然性评估不是最大似然估计。

*np.sum(kf_model_verbose.loglikeobs(kf_model_verbose.start_params))
Out[47]: -1655.0364388567427*

未知参数的最大似然估计

上面创建的 Kalman Filter 对象一直在等待最大似然估计(否则它为什么会继承一个名为“MLEModel”的类)。它只需要运行对象的fit()方法:

*kf_model_verbose_fit = kf_model_verbose.fit()
kf_model_verbose_fit.summary()*

摘要提供了(略有修改的输出):

*Statespace Model Results                                                                                    ==================================================================
Dep. Variable:    y                 No. Observations:     1000
Model:            AR1MA2_verbose    Log Likelihood       **-1629.327**

==================================================================
          coef    std err    z       P>|z|  [0.025   0.975]
------------------------------------------------------------------
ar1      **0.9016**    0.018   50.742    0.000   0.867   0.936
ma1      **0.1472**    0.038    3.900    0.000   0.073   0.221
ma2     **-0.1366**    0.037   -3.686    0.000  -0.209  -0.064
sigma2   **1.5219**    0.071   21.542    0.000   1.383   1.660*

请注意,参数估计和对数似然接* ARMA 估计,但不精确。这是由于已知的初始化。作为练习,运行以下两种变体,这将在讨论部分讨论:

  • 注释掉已知的初始化,取消静态初始化的注释,然后重新运行。
  • 注释掉静态初始化,取消注释“*似扩散”初始化,然后重新运行。

讨论

从上面的练习中,您应该已经观察到,您可以将 ARMA 模型的对数似然和参数估计与*稳初始化精确匹配。这并不奇怪,因为针对ARMA类的fit()方法的文档说,它通过卡尔曼滤波器使用精确的最大似然来“f 它的 ARMA(p,q)模型。

在这种情况下,*似的漫射初始化导致与其精确的和已知的对应物相似的估计,但是它是一个固定的模型。初始对数似然值要小得多(< -7) so the total log-likelihood of the sample is a bit more negative. A “burn in” option exists to skip these first few observations in computing the likelihood by setting 【 in the class’s 【 function.

Once the machinery is in place to get the filtered state mean and variance, the likelihood of each measurement consists of only a few linear operations. This does mean a double loop will be necessary when maximizing the likelihood numerically, which explains why fitting even a simple ARMA(1, 2) model slows down when the number of observations gets moderately large.

Otto’s response

My original conclusion to this article concerned the practical methods of constructing a filter that do not involve formal estimation like presented here. I said that I might use one of these methods, if I could ever stop hearing the question: “你喜欢数字 7 吗?**

从那以后,最初的操作系统做出了回应,解释了为什么一种更基于工程的方法可能优于最大似然法。作为一个固执的人,我不得不在自己的工作中经历最大似然估计的困难(就像这个最*的竞赛)来充分理解这些论点。奥托·塞斯卡里解释道:**

“MLE 方法找到的解决方案的质量取决于模型描述数据的准确程度。卡尔曼滤波器通常适用于理论上模型假设非常糟糕的问题:噪声可能是非高斯的、非独立的,并且选择的隐藏状态模型与它应该建模的相比可能非常简单。然而,在选择某些参数的情况下,滤波器仍然可以很好地工作,但是实际中的最佳参数可能与最大似然估计有很大不同。”

我仍然喜欢使用最大似然估计来估计卡尔曼滤波器模型的未知参数,但是我也接受使用基于维持的调优,特别是当主要目标是预测时。在这两种情况下,我希望读者已经了解了更多关于卡尔曼滤波器的潜在概率基础,以及在没有使用最大似然估计的验证集的情况下什么是可能的。


  1. a-z0–9_- ↩︎

posted @ 2024-10-13 15:24  绝不原创的飞龙  阅读(204)  评论(0)    收藏  举报