TowardsDataScience-博客中文翻译-2016-2018-三十七-

TowardsDataScience 博客中文翻译 2016~2018(三十七)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

强化学习的未来

原文:https://towardsdatascience.com/the-future-with-reinforcement-learning-877a17187d54?source=collection_archive---------15-----------------------

2 部分:比较和应用

如果你还没有读过强化学习入门,先回去看看这里。那篇文章将为你提供强化学习的关键概念。然后你就可以充分比较不同类型的机器学习了。

将强化学习与其他机器学习类型进行比较

A high-level breakdown of the three major categories of machine learning

你可能听说过其他类型的机器学习,例如:监督学习,非监督学习等。理解强化学习(RL)与它们有何不同,是把握机器学习前景的好方法。

监督学习

最容易掌握的 ML 类型是监督学习。监督学习是带有人类标签的学习。图像分类是一种监督学习。你有一个算法,根据标记的图像,系统可以将图像分类为一只猫或一只狗。该算法通过观察训练集进行学习,然后可以正确推断未知图像的主题。

监督学习问题的另一个好例子是回归问题。在回归问题中,你需要一组参数,并基于这些参数估计一个真实的、连续的值。例如,你可以获取一所房子的信息(房间数量、面积、窗户数量等。)并输出一个价格。我们知道很多房子的价值,可以将这些标记的例子输入到算法中。然后,当你把一栋新房子提交给系统时,它可以自己给出一个好的价格估计。这些问题很容易被框定为监督学习问题。

无监督学习

Using unsupervised learning, we can find the underlying patterns in data

另一方面,我们有无监督学习:没有标签的学习。一个很好的例子是获取用户购买数据,并将您的客户按照相似的购买模式分组。你的算法进行分组,你可以向特定类别的人推荐产品。我们不告诉算法标签或类别名称是什么,我们只是简单地给它一堆数据,它就根据数据中的模式创建组。无监督学习也广泛用于可视化大量复杂数据。这使得人们更容易看到一幅图像中的所有信息。

强化学习

强化学习经常被描述为介于监督学习和非监督学习之间。有时间延迟标签(奖励),当算法学习在环境中交互时,它会得到这些标签。算法是基于学习问题的措辞来学习的。这正是强化学习擅长实时决策、视频游戏人工智能、机器人导航和其他复杂任务的原因。关键是让系统能够根据环境的当前状态,理解哪些决策是好的,哪些是坏的。

应用这些概念

在上一篇文章中,我们介绍了强化学习的基本概念。这里以一个具体例子的形式总结了我们到目前为止所涉及的内容:

想象一只老鼠在一个基本的迷宫里。鼠标将是我们的代理。首先,我们将检查代理需要的东西:

  • 目标:老鼠的目标是获得最多的奶酪
  • 动作:鼠标可以向四个主要方向移动
  • 感官:老鼠可以观察到它所处的环境的状态(开始,什么都没有,小奶酪,两个小奶酪,大奶酪,死亡)。对于我们这个简单的例子,仅仅对环境的状态有一个简单的了解就足够了。

Our simple mouse agent exploring for cheese!

此外,让我们看看问题的子元素,看看它们如何符合标准:

  • 策略:在任何给定的状态下,我们的鼠标会采取四个动作中的哪一个?
  • 奖励信号:阳性(获得了一个奶酪;但是多大的奶酪呢?)、中立(未达到任何状态)或消极(死亡状态已结束我们的游戏)。
  • 价值函数:这是我们的鼠标动态构建和维护的东西。它可以在一次迭代的过程中进行调整,也可以在迷宫中多次运行。
  • 模型:如果我们让我们的老鼠知道它周围环境的大小,它就能在记忆中储存一个模型。我们可以将世界表示为一个 2D 网格(数组),当鼠标穿过并观察实际环境时,允许它在给定的网格方块中填入是积极的、消极的还是没有奖励

让我们剖析一个代理可能采用的基本贪婪策略:

策略之一是 Q 表策略。Q-table 代表“质量表”。这是一个动作和状态的表格,以及与它们相关的奖励。我们可以采用一个基本策略,当我们遇到一个状态时,选择能给我们的代理人最大回报的行动。当我们的代理不知道什么会给出最大的回报时,随机选择一个行动。

A basic Q-table where the rows are potential states and the columns are the actions our agent can take

一开始,我们老鼠的桌子是空的。它什么都不知道。例如,它随机选择策略,可能向右移动并得到少量奶酪。很好,我们的代理收到了奖励信号!该表得到相应的更新,我们的代理将继续选择行动,直到用尽所有的可能性或已经死亡。

Hurrah! Our mouse gets some cheese!

你可能已经看到一个问题出现了:当我们重新开始我们的迷宫时,我们的代理人总是倾向于向小奶酪移动,从不选择未知的替代品。这被称为探索与开发的权衡,但是我们一会儿会回到这个问题上来。

Updating our Q-table for the reward that we have received.

现在我们已经看到了这些组件是如何协同工作的,让我们深入了解一下我们希望解决的任何强化学习问题所需要的一些东西。

用任务组织强化学习

强化学习应用程序需要考虑的一个主要因素是任务的结构。这些通常分为两类:插曲式或连续式。

1.偶发性任务

情节任务有不同的开始和结束状态。我们可以保存这些“情节”,并对它们进行“离线”训练一个主要的例子就是我们上一篇文章中的马里奥关卡。

2.连续任务

连续的任务没有终点。这可能就像一个决策算法,预测某人何时应该在股市中买入或卖出股票。这总是随着许多环境因素而不断发展变化。没有明确的开始和停止状态可以让我们轻松地截取一集进行训练,因为害怕让我们的算法过于接近一小段时间。

股票市场总是在变化。将它分割成几段就是忽略了它如何演变的相关连续性

我们如何制定我们的代理人的目标和奖励是由我们期望完成的任务类型决定的,因为它可以改变我们学习的性质(我们将在接下来谈到这一点)。

何时学习

时间对于代理如何执行任务至关重要。也许代理应该在游戏的每一帧都学习,或者代理可以一集一集地学习。我们可以采用蒙特卡洛策略,在整个学习过程中循环,然后在每次迭代中变得更好、更聪明。这些选项有不同的权衡,可能可行也可能不可行,这取决于我们的代理试图完成的任务类型(连续任务可能永远不会使用蒙特卡罗策略,因为它需要循环一集进行训练,这对于连续任务来说甚至是不存在的!).

探索与开发

当代理探索一个环境时,很快就会遇到探索与利用的权衡。如果代理人很早就发现,如果它做了简单的事情,它将获得少量的奖励,它可能会一遍又一遍地继续做那个简单的事情,随着时间的推移积累少量的奖励。如果它探索未知,并试图发现新的情况,它可能会获得更大的回报。

用人类的话来说,这就像问这样一个问题:你会去你经常去的那家你知道会很好的餐馆吗?或者你会冒险进入未知的领域,去一个你以前从未尝试过的地方看看,那可能会非常棒。

If you ask me, the new place looks pretty fantastic

代理的策略是如何构建的,将决定它将学习利用什么样的动作,以及何时决定探索。早期探索可能会产生更高的长期回报,然而,过度关注探索可能会导致我们非常了解的状态下的次优行动。这导致你最终得到的奖励比我们本可以得到的要少。

在我看来,探索与开发的权衡仍然是一个悬而未决的问题,也是一个特别有趣的研究领域。

方法

这给我们带来了制作强化学习应用程序的另一个重要因素。是基于价值还是基于政策?

基于政策的方法

我们之前提到过,代理的策略是它如何根据环境的当前状态来决定采取什么行动。具有基于策略的学习方法的 RL 代理将尝试并学习具有决策结构的复杂策略,该决策结构允许它在任何给定情况下尝试并采取最佳行动。

基于价值的方法

另一方面,我们有基于价值的 RL 应用。价值函数是我们的 RL 算法将累积的长期回报的当前估计。如果我们有一个基于价值的代理,它将专注于基于该功能的优化。这包括专注于学习对长期回报越来越好的估计,以及采取贪婪的行动在任何给定时间最大化该功能。在很多方面,我们可以认为这是一个代理学习采取行动的隐含贪婪策略。

演员-评论家方法

基于值的算法和基于策略的算法之间的决定是决定强化学习算法看起来像什么的重要决定。这两条思路的交叉部分被称为演员-评论家方法。它的特点是跟踪估计的未来回报收入(我们的价值函数)以及学习新的、更复杂的政策,以使我们的代理在更长的时间范围内获得更大的回报。由于该算法现在同时优化两个函数,它很快变成一个更难的问题。

在演员-评论家领域有很多焦点,并且已经产生了许多很酷的算法。谷歌的异步优势演员-评论家(A3C)是一个很酷的演员-评论家算法的主要例子,已经显示了很多好的结果。

结论

在过去的两篇文章中,我们讨论了基本的术语以及一些围绕强化学习问题的更复杂的概念。希望有了这两个组件,你会觉得你已经很好地掌握了什么是强化学习,以及使用它编写算法的一些考虑因素。

现在,你可能对 RL 感到非常兴奋。您可能想知道如何在 RL 系统上开始工作。在下一篇文章中,我们将深入研究 RL 的优势,主要的开放性问题是什么,以及一些关于学习自己编写 RL 算法的资源!

原载于 2018 年 8 月 14 日recast . ai

强化学习的未来——第一部分

原文:https://towardsdatascience.com/the-future-with-reinforcement-learning-part-1-26e09e9be901?source=collection_archive---------10-----------------------

想象一个世界,每个计算机系统都是根据你自己的个性定制的。它学习你如何交流和你希望如何被交流的细微差别。与计算机系统的交互变得比以往任何时候都更加直观,技术素养直线上升。在强化学习成为常态的未来,这些是你可以看到的潜在结果。

在这篇文章中,我们将分解强化学习,剖析一些组成强化学习系统的组件。

强化学习的高级概述

如果你以前从未听说过强化学习(RL ),不要着急!这个概念非常简单。在一个非常高的层次上,强化学习只是一个代理学习如何根据它从环境中收到的反馈信号与环境进行交互。这使得它不同于其他机器学习方法,在其他机器学习方法中,学习代理可能在训练期间看到正确的答案。在强化学习中,我们可以把我们的学习代理想象成获得一个等级或分数,让它知道自己的表现。

让我们用一个电子游戏来描述这个想法。假设我们有一个玩马里奥游戏的电脑程序。它学会控制角色,以变化的屏幕形式接收来自环境的反馈。基于我们算法的成功(或失败),它可以学习与环境互动,并通过使用它收到的反馈来改进。

To learn about the environment, we need to explore! The only way we can find out that Goombas are bad and power-ups are good is through trail-and-error and feedback.

强化学习试图模仿人类或其他智能生物与新环境互动的方式:试错法。它诞生于计算机科学、心理学、神经科学、数学等许多领域的研究成果。尽管今天在工业中很少见到 RL,但它的潜在影响是巨大的。

Reinforcement learning really is the culmination of many fields and has a rich history in optimization and behavioral psychology.

这种潜力就是我要为你揭示的。

马里奥游戏强化学习词汇

我们已经提到了 RL 玩视频游戏的经典例子。现在,让我们继续使用我们的马里奥例子,同时我们更深入地挖掘这个想法和围绕这个概念的词汇。

经纪人:马里奥

首先,我们有我们的代理人。我们的代理是我们的算法和程序。它是操作的大脑。它将与我们的环境相互作用。在这种情况下,我们的经纪人是马里奥,他将发号施令。

Our agent: Mario

环境:游戏级别

代理存在于环境范围内。环境就是我们玩的马里奥的水平。是屏幕上的敌人和积木组成了这个世界。时间在流逝,分数在上升(或者我们希望如此!).我们的代理人的目标是以一种获得回报的方式与环境互动。

Our environment: a simple level

动作:跳,蹲下,向前移动

什么是奖励,我们的代理如何获得奖励?我们的特工必须与环境互动。它可以通过从它可能采取的潜在动作列表中选择一个动作来做到这一点。也许我们的代理马里奥决定向上跳。或者向左或向右移动。也许他们有火球术,所以我们的代理人决定发射一个。关键是,这些行动中的每一个都将改变环境,并导致变化。我们的代理可以观察到这种变化,将其作为反馈信号,并从中学习。

The interface a human might use to execute actions that affect the environment

状态:马里奥+动作+环境=状态

我们的代理观察到的这些变化是环境状态的变化。我们的代理观察到的新状态可能会产生一个“奖励”信号。将代理采取的行动、状态的变化以及从状态变化中获得的潜在回报结合在一起,代理开始为他们正在探索的环境建立工作模型。

The state holds all the information about what’s going on in the environment from what we can observe. Things like where our character is, our current score, and enemies on the screen all play into what the state of our environment is currently.

奖励:点数+生存

如果代理人知道当它跳到并落在一个敌人身上时,它会得到一点提升,并且不会再被这个敌人杀死,这是一件值得学习的好事情!它还可能知道,如果马里奥掉进了一个洞里,游戏就结束了,以后就没有机会再得分或赢得关卡了。这些是代理可以随着时间学习的东西,它与环境的交互越多,它学习的就越多。

In Mario, a good way to measure reward might be the score!

这包含了对强化学习问题中所有主要组成部分的介绍。在这一部分要记住的重要的事情是代理人、环境、行动、状态和奖励,并尝试在你的头脑中有一个这些需要的工作定义。

如果你是一个视觉学习者,这张图片很好地将这些结合在一起。

All of the components coming together to make up how an agent learns from its environment!

它是如何工作的?

既然我们理解了一些基本词汇,我们可以应用它来学习代理如何操作。一个代理人如何决定采取行动来获得最大的回报?

我们需要分析理解两个主要的流:RL 代理需求及其子元素。

强化学习需求

RL 代理必须学会在充满不确定性的环境中决定什么是好的行动。反馈作为延时的奖励信号被接收,作为观察到的状态变化和可以从中计算出的奖励。代理人必须能够探索这种不确定性,并对给予奖励的原因进行推理。要做到这一点,代理需要有三个简单的东西:行动、目标和感觉。

行动

动作是代理在任何给定时刻可以对环境进行的操作列表。通过执行动作,代理影响其环境并改变其状态。如果不能做到这一点,一个主体就永远无法积极地影响国家,从其行动如何积极或消极地影响环境中获得任何可解释的回报,甚至无法学会在未来采取更好的行动。

A list of actions someone might take with an Atari controller.

目标

目标是我们定义奖励信号的方式。我们在电子游戏中会根据分数来奖励吗?完成一个级别?什么是好的和坏的行为?这些是我们在 RL 环境中定义目标时必须考虑的问题。这就是我们激励代理完成任务的方式。

A simple setup of a goal. How can one get from start to finish?

感觉

感官是智能体用来观察环境的东西。在视频游戏环境中,使用计算机视觉设置中的技术来观察屏幕上的对象以及当我们的代理采取行动时它们如何变化可能是有用的。也许我们用光学字符识别来观察一个点值。关键是,如果一个代理不能感知环境,他们就不能思考他们的行为如何影响环境。因此,我们需要感官来监控我们与之互动的环境。

强化学习系统的子元素

现在,我们可以过渡到 RL 系统的子元素:政策、奖励信号、价值函数和环境的最优模型。

该政策

保单是我们 RL 代理的核心。这是我们的代理在当前环境状态下的行为方式。这是我们的代理人将采取的行动。在生物学中,我们可能会将一项政策视为一个有机体如何根据它所接受的刺激做出反应。我们的代理观察环境的状态,策略是它已经学会要做的。好的政策会产生积极的结果。

Our policy will dictate what an agent will do given a state of the environment. We can see here a policy might be that given a certain tile, our agent moves in a certain direction.

奖励信号

奖励信号是我们衡量代理成功的标准。这是我们成功实现目标的量化指标。奖励信号可以是积极的,也可以是消极的,这样我们的代理人就可以衡量一个行为是好的、坏的还是中性的。这些可以是视频游戏中的分值,也可以是我们的特工是否还活着。关键是,我们的代理人接受这些奖励信号,衡量当前目标的执行情况,并根据这一反馈制定政策,以便进一步努力改变环境,使未来可能获得的奖励最大化。

We can think of this as the hidden reward mapping from the previous goal image. Only by exploring the environment the agent can learn that stepping on the goal tile yields a reward of 1!

价值函数

我们可以把奖励信号看作是一个行为好坏的直接指示器。然而,强化学习不仅仅是直接的积极或消极的结果。它是关于长期规划,以最大限度地成功完成一项任务。为了对这种长期性能进行建模,我们引入了一个叫做价值函数的概念。价值函数是对我们的代理取得长期成功的可能性的估计。这是很难估计和衡量的,但它是我们的 RL 问题的最关键的组成部分之一!在一个不确定的环境中,我们的代理将不断地修改他们对价值的估计,学习更好地制定政策和行动,以接管长序列的行动和状态。

A visualization of a value function being shaped by an agent. As it becomes more and more certain about its potential long term reward given its state, it can come up with solutions to this challenge.

环境的最佳模型

最后,我们的 RL 系统可以模拟环境。我说可能是因为不是所有的 RL 代理都会模拟一个环境。一些代理人只是通过试错来学习,通过良好的价值函数和策略组合来构建某种程度上隐含的环境模型。其他代理可以显式地创建环境的内部模型,允许代理基于它希望直接采取的行动来预测结果状态和奖励。这似乎是一个非常好的方法,但是在高度复杂的环境中,建立这样一个内部模型是非常困难的,所以代理通常不会选择这种策略。

As an agent explores an environment, they could build a 3D interpretation of the world around them to help them reason about the actions they might take in the future.

摘要

有了这些基本概念,我们可以开始看到这样的未来,计算机系统根据我们的行动和反应进行学习,专门针对我们的个性进行调整。在我们上面例子中的马里奥代理中,我们可以想象未来的计算机系统会像马里奥角色阅读环境一样阅读我们的动作和反应。它得到的回报信号越多,我们就越快乐,我们就能越快实现目标。很容易看出这种未来的结果是如何在我们的能力范围之内。

即将推出:第 2 部分和第 3 部分

所有这些综合起来给了我们一个增强系统如何执行和操作的基本概述。这篇高水平的初级读本将有助于我们的第 2 部分文章,其中我们讨论了强化学习与其他类型的机器学习的比较,以及我们在制定强化学习问题时考虑的一些因素,以及我们的第 3 部分文章,其中我们查看了强化学习领域的一些最新成就和开放的研究问题。

观看马里奥游戏!看看你是否能识别强化学习场景中需要的所有元素。

如果你喜欢读这篇文章,给我留言或者给我的 GoFundMe 捐款来帮助我继续我的 ML 研究!

原载于 2018 年 88recast . ai

Fitbit 的游戏化

原文:https://towardsdatascience.com/the-gamification-of-fitbit-how-an-api-provided-the-next-level-of-training-eaf7b267af00?source=collection_archive---------17-----------------------

API 如何提供下一层次的培训

任何人都可以在精品店寻找时尚,在博物馆寻找历史。富有创造力的探险家在五金店寻找历史,在机场寻找时尚”——罗伯特·威德

项目灵感

你可能听说过这个词,也可能没有,但你很可能经历过。

Gamification是游戏设计元素和游戏原则在非游戏环境中的应用。这个想法是,如果你使用游戏的元素,比如将规则和奖励链接到一个反馈系统中,你可以使(几乎)任何活动变得激励和有趣。

Gamification电子学习背后的概念。我记得在小学时,所有的学生都想在电脑课上玩俄勒冈小径 T21。我还记得另一个游戏,你必须在东西落地之前解决数学问题。好吧,也许这不是对gamification最激动人心的介绍,但我仍然记得。

在我职业生涯的某个时候,我厌倦了使用nano,决定尝试学习Vim

就在那时,我发现了两个非常有趣的gamification的例子:

  • [Vim Adventures](https://vim-adventures.com/)有点像Zelda中的Gameboy,你必须在环境中移动并解开谜语——除了用Vim命令!你可以在这里看它在 Twitch 上播放。

  • [shortcutFoo](https://www.shortcutfoo.com/)教你VimEmacsCommand LineRegex等快捷键。通过间歇训练,本质上是间隔重复。这有助于你更有效地记忆快捷方式。

今天,我喜欢在像 DuoLingoDataCamp 这样的平台上进行电子教学。

我最近也开始参加一个 Kaggle 竞赛,“PUBG 完成位置预测”。Kaggle 是谷歌为数据科学爱好者开设的一个场所,他们可以使用机器学习来解决预测分析问题,以获得现金和影响力。类似象棋还有所谓的 Kaggle 特级大师

探索

我们的实验室研究围产期对心理健康结果的早期逆境的生物嵌入的影响。我们将遗传学、表观遗传学和流行病学方法结合起来,以确定哪些孕妇的后代可能存在不良精神健康后果的潜在风险。

我的主管向我提出挑战;从 200 个 Fitbits 获取生物特征数据的可行性有多大?

所以我给自己买了一个 Fitbit Charge2 健身追踪器,然后去了健身房!

在某个时刻,我想我们都意识到这个项目将是一个大工程。也许R并不真正打算从 API 服务中进行大规模实时数据管理。这对于静态文件或者静态端点来说是很棒的,但是如果你和多个参与者一起工作,像 Fitabase 这样的专用解决方案可能是最好的——或者他们是这么宣称的。

尽管如此,我还是想在R尝试一些很酷的新事物,比如用blogdown制作个人网站,用Rokemon使用gganimate,用httr访问 fitbit API,以及用一些自定义 CSS/HTML 添加背景图片。有可能有更好的方法来缩短我的学习曲线吗——我认为没有。

以下是我对**R****gamification**的网络学习尝试。****

我使用了[blogdown](https://bookdown.org/yihui/blogdown/)包,允许我以 R Markdown 文档的形式写博客,将一切编织成一个漂亮整洁的静态网站,我可以在网上推送。这是一个学习 pandoc、Hugo、隐藏在服务器端代码下的 CSS/HTML 的好机会。我决定继续使用Hugo的学术主题,从 Fitbit API 中获取尽可能多的数据,对其进行清理,然后进行一些探索性的数据分析。在这个过程中,我生成了一些很酷的动画精灵,并使用视频游戏启发的可视化效果。

设置 Fitbit 开发人员帐户

Fitbit 使用OAuth 2.0Access令牌向 Fitbit API 发出 HTTP 请求。您需要设置一个帐户来使用 API,并在R中包含您的令牌。我不会去阅读 FITBIT 开发帮助部分,而是让读者在这里找到更好更简洁的说明。

现在你有一个帐户,我们准备在R做事情。

设置您的令牌:

# You Found A Secret Area!
token = "yourToken"

使用fitbitr

我以前从未提出过HTTP请求,尽管这个过程在这里有正式记录,但它可能会让人不知所措。因此,我最初求助于使用一个名为fitbitr的包来访问 R API。

不幸的是,这将限制我只能访问一些基本的用户信息、heart ratestep count数据。

获取基本用户信息

这个包中的第一个函数向Get Profile 资源 URL 发送一个GET请求。

# Extracting Resources# Get userInfo
user_info <- fitbitr::getUserInfo(token)# Hailing a Chocobo!# What is my stride length in meters?
strideLengthWalking <- user_info$strideLengthWalking

我的步幅是 68.5

步幅是从脚跟到脚跟测量的,它决定了你每走一步走多远。平均来说,男人走路的步幅是 2.5 英尺,也就是 30 英寸,而女人的平均步幅是 2.2 英尺,也就是 26.4 英寸,根据这个 报道

# Hitting 80 MPH# What is my running stride length
strideLengthRunning <- user_info$strideLengthRunning

我跑步的步幅是 105.5

默认情况下,Fitbit 使用您的 *sex* *height* 来测量您的步幅,这可能会不准确。

# Looking for the fourth chaos emerald # What is my average daily steps?
averageDailySteps <- user_info$averageDailySteps

我每天的平均步数是 14214 步。

考虑到每天推荐的步数是 10,000,我认为这是可以接受的。也就是说,总有改进的空间。

使用fitbitr包获取心率和脚步

我要为一个非常初步的 EDA 获取一周的数据。

# Smashing buttonsdays <- c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")monday_heart <- getTimeSeries(token, type = "heart", activityDetail = "1min", date = "2018-08-20", startTime = "00:00", endTime = "23:59")
monday_heart %<>% mutate(date = "2018-08-20")
monday_steps <- getTimeSeries(token, type = "steps", activityDetail = "1min", date = "2018-08-20")
monday_steps %<>% mutate(date = "2018-08-20")
monday <- monday_heart %>% full_join(monday_steps)
monday %<>% mutate(week_date = "Monday")
monday %<>% mutate(day_of_week = "1")tuesday_heart <- getTimeSeries(token, type = "heart", activityDetail = "1min", date = "2018-08-21")
tuesday_heart %<>% mutate(date = "2018-08-21")
tuesday_steps <- getTimeSeries(token, type = "steps", activityDetail = "1min", date = "2018-08-21")
tuesday_steps %<>% mutate(date = "2018-08-21")
tuesday <- tuesday_heart %>% full_join(tuesday_steps)
tuesday %<>% mutate(week_date = "Tuesday")
tuesday %<>% mutate(day_of_week = "2")wednesday_heart <- getTimeSeries(token, type = "heart", activityDetail = "1min", date = "2018-08-22")
wednesday_heart %<>% mutate(date = "2018-08-22")
wednesday_steps <- getTimeSeries(token, type = "steps", activityDetail = "1min", date = "2018-08-22")
wednesday_steps %<>% mutate(date = "2018-08-22")
wednesday <- wednesday_heart %>% full_join(wednesday_steps)
wednesday %<>% mutate(week_date = "Wednesday")
wednesday %<>% mutate(day_of_week = "3")thursday_heart <- getTimeSeries(token, type = "heart", activityDetail = "1min", date = "2018-08-23")
thursday_heart %<>% mutate(date = "2018-08-23")
thursday_steps <- getTimeSeries(token, type = "steps", activityDetail = "1min", date = "2018-08-23")
thursday_steps %<>% mutate(date = "2018-08-23")
thursday <- thursday_heart %>% full_join(thursday_steps)
thursday %<>% mutate(week_date = "Thursday")
thursday %<>% mutate(day_of_week = "4")friday_heart <- getTimeSeries(token, type = "heart", activityDetail = "1min", date = "2018-08-24")
friday_heart %<>% mutate(date = "2018-08-24")
friday_steps <- getTimeSeries(token, type = "steps", activityDetail = "1min", date = "2018-08-24")
friday_steps %<>% mutate(date = "2018-08-24")
friday <- friday_heart %>% full_join(friday_steps)
friday %<>% mutate(week_date = "Friday")
friday %<>% mutate(day_of_week = "5")saturday_heart <- getTimeSeries(token, type = "heart", activityDetail = "1min", date = "2018-08-24")
saturday_heart %<>% mutate(date = "2018-08-24")
saturday_steps <- getTimeSeries(token, type = "steps", activityDetail = "1min", date = "2018-08-24")
saturday_steps %<>% mutate(date = "2018-08-24")
saturday <- saturday_heart %>% full_join(saturday_steps)
saturday %<>% mutate(week_date = "Saturday")
saturday %<>% mutate(day_of_week = "6")week <- monday %>% bind_rows(tuesday) %>% bind_rows(wednesday) %>% bind_rows(thursday) %>% bind_rows(friday) %>% bind_rows(saturday)

week$date <- as.Date(week$date)

汇总统计数据

# Opening pod bay doorsweek %>% 
        group_by(type) %>% 
                summarise(
                        total = sum(value),
                        minimum = min(value),
                        mean = mean(value),
                        median = median(value),
                        maximum = max(value),
                        max_time = max(time)
                        ) %>%
        knitr::kable(digits = 3) %>% 
        kable_styling(full_width = F)

探索性数据分析

因为这是一个关于gamification的帖子,我决定用我的探索性数据可视化做一些有趣的事情。我想使用Rokemon包,它允许我将ggplot2(和ggplot2扩展)的主题设置为Game BoyGame Boy Advance主题!方便的时候,我会用cowplot组合剧情。

我们来快速看一下heart ratestep count的关系和分布。

# Doing the thing...g <- week %>% 
        spread(type, value) %>% 
        rename(hear_rate = "heart rate") %>% 
        na.omit() %>% 
        ggplot(aes(steps, hear_rate)) + geom_point() + geom_smooth(method="lm", se=F, colour = "#DE7243") gb <- g + theme_gameboy()
gba <- g + theme_gba()plot_grid(gb, gba, labels = c("", ""), align = "h")

或者,我们可以通过ggExtra包中的ggMarginal()函数将边际密度图添加到散点图中,从而更好地查看数据。

每周趋势

让我们快速看一下连续变量的分布,以获得比平均值和中位数更好的想法。

# Loading..... Wait, what else were you expecting?annotations_steps <- data_frame(
        x = c(45, 100, 165),
        y = c(0.01, 0.01, 0.01),
        label = c('walking pace', 'brisk walking pace', 'running pace'),
        type = c('steps', 'steps', 'steps')
)g <- week %>% 
  ggplot(aes(value)) + 
  geom_density(fill = "#DE7243") +
  geom_text(data = annotations_steps, aes(x = x, y = y, label = label), angle = -30, hjust = 1) +
  facet_grid(.~type, scales = 'free_x') + 
  labs(title = 'Heart Rate and Steps-per-minute over two months',
       subtitle = 'Data gathered from Fitbit Charge2')g + theme_gameboy()
g + theme_gba()

****

Heart rate有点右偏,可能是睡眠和久坐工作的原因。同样,对于step count你可以看到,当我滑板上班时,在brisk walking pace下面只有一个小凸起。

锻炼模式

这个星期我没有健身,所以我想我至少应该在上班的路上看看。下图显示蓝色为heart rate/min,橙色为steps/min的编号。

# You are carrying too much to be able to runbetween_six_nine <- function(time) time > 7*60*60 & time < 10*60*60is_weekday <- function(day_of_week) day_of_week %in% 1:6week$week_date_f <- factor(week$week_date, levels=c("Monday","Tuesday","Wednesday", "Thursday", "Friday", "Saturday"))g <- week %>% 
        filter(between_six_nine(time) & is_weekday(day_of_week)) %>% 
        spread(type, value) %>% 
        ggplot(aes(x = time)) +
        geom_bar(aes(y = steps), color = '#DE7243', alpha = 0.3, stat = 'identity') + 
        geom_line(aes(y = `heart rate`), color = '#E3F24D', size = 0.8) + 
        facet_grid(~week_date_f) +
        scale_x_continuous(breaks=c(27000, 30000, 33000, 36000), labels=c("7am", "8am", "9am", "10am"))g + theme_gameboy()
g + theme_gba()

****

自从我每天早上滑滑板去上班后,我的活动整个星期都差不多一样。

最活跃时间

# 60% of the time, it loads ALL the timestep_counts <- week %>% 
  filter(type == 'steps') %>% 
  group_by(day_of_week) %>% 
  summarise(
    type = last(type), 
    avg_num_steps = sprintf('avg num steps: %3.0f', sum(value)/52)
  )g <- week %>%
        ggplot(aes(x= value, y = fct_rev(factor(day_of_week)))) +
        geom_density_ridges(scale = 2.5, fill = "#DE7243") +
        geom_text(data = step_counts, nudge_y = 0.15, hjust = 0, 
            aes(x = 85, y = fct_rev(factor(day_of_week)), label = avg_num_steps)) +
        scale_y_discrete(breaks=1:6, labels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")) +
        facet_grid(.~type, scales = "free") +
        labs(x = '', y = "Day of the Week") g + theme_gameboy()
g + theme_gba()

****

每分钟的步数分布相当稳定,因为我说过我没有锻炼;这可能反映了我拖着脚步去喝茶。

看起来周一是我心跳加速最多的一天,双峰高峰可能是我四处寻找出租物业的时候。

httr包直接访问 Fitbit API

最终,我找到了一个由 obrl-soil 撰写的优秀的教程,它向我介绍了httr包,并给了我阅读 Fitbit DEV web API 参考所需的信心。现在我能够访问更多的数据来源。

有哪些数据可用?

Fitbit API 提供了哪些数据的简要概述:

# Your Boko Club is badly damaged# make a kable table for data you can access from Fitbit API
dt01 <- data.frame(Scope = c("activity",
                             "heartrate",
                             "location",
                             "nutrition",
                             "profile",
                             "settings",
                             "sleep",
                             "social",
                             "weight"),
                   Description = c("The activity scope includes activity data and exercise log related features, such as steps, distance, calories burned, and active minutes",
                                   "The heartrate scope includes the continuous heart rate data and related analysis",
                                   "The location scope includes the GPS and other location data",
                                   "The nutrition scope includes calorie consumption and nutrition related features, such as food/water logging, goals, and plans",
                                   "The profile scope is the basic user information",
                                   "The settings scope includes user account and device settings, such as alarms",
                                   "The sleep scope includes sleep logs and related sleep analysis",
                                   "The social scope includes friend-related features, such as friend list, invitations, and leaderboard",
                                   "The weight scope includes weight and related information, such as body mass index, body fat percentage, and goals")
)dt01 %>%
  kable("html") %>%
  kable_styling(full_width = F) %>%
  column_spec(1, bold = T, border_right = T) %>%
  column_spec(2, width = "30em", background = "#E3F24D")

测量单位是什么?

# Loading Cutscenes You Can't Skip# make a Kable table or measurement information
dt03 <- data.frame(unitType = c("duration",
                                "distance",
                                "elevation",
                                "height",
                                "weight",
                                "body measurements",
                                "liquids",
                                "blood glucose"),
                   unit = c("milliseconds",
                            "kilometers",
                            "meters",
                            "centimeters",
                            "kilograms",
                            "centimeters",
                            "milliliters",
                            "millimoles per liter"))
dt03 %>%
  kable("html") %>%
  kable_styling(full_width = F) %>%
  column_spec(1, bold = T, border_right = T) %>%
  column_spec(2, width = "30em", background = "#E3F24D")

定义一个将json列表转换成数据帧的函数。

# Inserting last-minute subroutines into program...# json-as-list to dataframe (for simple cases without nesting!)
jsonlist_to_df <- function(data = NULL) {
    purrr::transpose(data) %>%
    purrr::map(., unlist) %>%
    as_tibble(., stringsAsFactors = FALSE)
}

调查我的 10 公里跑

GET请求检索我的 10km 跑步的每分钟心率数据。

# Preparing for the mini-bossget_workout <- function(date = NULL, start_time = NULL, end_time = NULL, 
                         token = Sys.getenv('FITB_AUTH')) {
GET(url =
        paste0('https://api.fitbit.com/1/user/-/activities/heart/date/',
        date, '/1d/1min/time/', start_time, '/', end_time, '.json'), 
        add_headers(Authorization = paste0("Bearer ", token)))
}# Get the workout for my 10Km run 
got_workout <- get_workout(date = '2018-10-21', start_time = '09:29', end_time = '10:24')workout <- content(got_workout)# summaryworkout[['activities-heart']][[1]][['heartRateZones']] <- jsonlist_to_df(workout[['activities-heart']][[1]][['heartRateZones']])# the dataset
workout[['activities-heart-intraday']][['dataset']] <- jsonlist_to_df(workout[['activities-heart-intraday']][['dataset']])# format the time 
workout$`activities-heart-intraday`$dataset$time <- as.POSIXlt(workout$`activities-heart-intraday`$dataset$time, format = '%H:%M:%S')
lubridate::date(workout$`activities-heart-intraday`$dataset$time) <- '2018-10-21'# find time zone
# grep("Canada", OlsonNames(), value=TRUE)
lubridate::tz(workout$`activities-heart-intraday`$dataset$time) <- 'Canada/Eastern'

让我们来看看我的 10 公里跑的总结:

# Farming Hell Cowsworkout$`activities-heart`[[1]]$heartRateZones %>% kable() %>% kable_styling(full_width = F)

obrl-soil 使用的是MyZone Efforts Points【MEPS】,它是以每分钟最大心率的百分比计算的。它衡量的是投入的努力——分数越多越好。另一个gamification的例子。

# Looting a chestmeps_max <- function(age = NULL) { 207 - (0.7 * age) }

我的是 186。

现在,我们创建一个包含 4 个心率范围的表格,显示下限和上限,并使用上面的mutate()函数计算我的最大心率(包含下限和上限)。

# Taking the hobbits to Isengardmy_MEPS <- tribble(~MEPS, ~hr_range, ~hr_lo, ~hr_hi, 
                       1,  '50-59%',   0.50,   0.59,
                       2,  '60-69%',   0.60,   0.69,
                       3,  '70-79%',   0.70,   0.79,
                       4,    '>=80',   0.80,   1.00) %>%
  mutate(my_hr_low = floor(meps_max(30) * hr_lo),
         my_hr_hi  = ceiling(meps_max(30) * hr_hi))
my_MEPS## # A tibble: 4 x 6
##    MEPS hr_range hr_lo hr_hi my_hr_low my_hr_hi
##   <dbl> <chr>    <dbl> <dbl>     <dbl>    <dbl>
## 1     1 50-59%     0.5  0.59        93      110
## 2     2 60-69%     0.6  0.69       111      129
## 3     3 70-79%     0.7  0.79       130      147
## 4     4 >=80       0.8  1          148      186

有了现在定义的方程,让我们来计算我的总 MEPS:

# Checkpoint!mep <- mutate(workout$`activities-heart-intraday`$dataset,
       meps = case_when(value >= 146 ~ 4,
                        value >= 128 ~ 3,
                        value >= 109 ~ 2,
                        value >= 91  ~ 1,
                        TRUE ~ 0)) %>%
  summarise("Total MEPS" = sum(meps))

哇是 216!

我不知道这到底是什么意思,但显然在 42 分钟的锻炼中最大可能的 MEPS 是 168,因为我在 54:35 跑完了 10 公里,我想这很好?

我想在我的下一次 10 公里跑中坚持 50 分钟,但我不确定我是否应该争取更高的peak心率分钟数——我想我需要对此进行研究。

一晚每分钟的睡眠数据

让我们检查一下我昨晚的睡眠模式。

# Resting at Campfireget_sleep <- function(startDate = NULL, endDate = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1.2/user/-/sleep/date/', startDate, "/", endDate, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}# make sure that there is data for those days otherwise it tosses an errorgot_sleep <- get_sleep(startDate = "2018-08-21", endDate = "2018-08-22")
sleep <- content(got_sleep)dateRange <- seq(as.Date("2018-08-21"), as.Date("2018-08-22"), "days")sleep_pattern <- NULL
for(j in 1:length(dateRange)){
        sleep[['sleep']][[j]][['levels']][['data']] <- jsonlist_to_df(sleep[['sleep']][[j]][['levels']][['data']])
        tmp <- sleep$sleep[[j]]$levels$`data`
sleep_pattern <- bind_rows(sleep_pattern, tmp)
}

好了,现在数据管理完成了,让我们来看看我的睡眠模式。

# Now entering... The Twilight Zoneg <- sleep_pattern %>% group_by(level, seconds) %>% 
        summarise() %>% 
        summarise(seconds = sum(seconds)) %>%
        mutate(percentage = seconds/sum(seconds)) %>% 
                ggplot(aes(x = "", y = percentage, fill = c("S", "A", "R"))) +
                        geom_bar(width = 1, stat = "identity") +
                        theme(axis.text.y = element_blank(),
                              axis.text.x = element_blank(), axis.line = element_blank(), plot.caption = element_text(size = 5), plot.title = element_blank()) +
                        labs(fill = "class", x = NULL, y = NULL, title = "Sleep stages", caption = "A = Awake; R = Restless; S = Asleep") +
                        coord_polar(theta = "y", start = 0) +
        scale_fill_manual(values = c("#FF3F3F", "#2BD1FC", "#BA90A6"))g + theme_gameboy()
g + theme_gba()

****

饼图可能不是显示这些数据的最佳方式。让我们用一个箱线图来形象化这个分布。

# Entering Cheat Codes!g <- ggplot(sleep_pattern, aes(y=log10(seconds), x=level)) + 
        geom_boxplot(color="#031300", fill='#152403') +
        labs(x = "", title = 'Sleep patterns over a month',
       subtitle = 'Data gathered from Fitbit Charge2') +
        theme(legend.position = "none") g + theme_gameboy()
g + theme_gba()

****

一个更好的可视化分布的方法是使用覆盖原始数据点的小提琴图。

# Neglecting Sleep... g <- ggplot(sleep_pattern, aes(y=log10(seconds), x=level)) + 
        geom_violin(color="#031300", fill='#152403') +
        geom_point() +
        labs(x = "", title = 'Sleep patterns over a month',
       subtitle = 'Data gathered from Fitbit Charge2') +
        theme(legend.position = "none")g + theme_gameboy()
g + theme_gba()

****

获取 3 个月的日常活动模式

您可以从 Fitbit 活动和练习日志中为不同的时间段执行 API 请求,但是因为我只有几个月的时间,所以我将使用3m时间段。

我还需要剔除未来的任何一天,否则它们会在数字中显示为0卡路里。做EDA的时候最好使用Sys.Date()功能而不是硬编码日期,做一个闪亮的 app,或者参数化一个 [RMarkdown](https://resources.rstudio.com/rstudio-connect-2/parameterized-r-markdown-reports-with-rstudio-connect-aron-atkins) 文件。这样你就可以探索不同的时间段,而不会出现任何问题。

我不记得我是什么时候开始戴 Fitbit 的,但我们可以通过下面的代码来解决这个问题:

# ULTIMATE IS READY!# Query how many days since you've had fitbit for
inception <- user_info$memberSince

我从 2018 年 8 月 20 日开始使用 Fitbit。

让我们收集 2018 年 9 月 20 日至 116 日的数据。

# Catching them all!### Calories
get_calories <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/calories/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_calories <- get_calories(baseDate = "2018-11-20", period = "3m")
calories <- content(got_calories)
# turn into df
calories[['activities-calories']] <- jsonlist_to_df(calories[['activities-calories']])
# assign easy object and rename
calories <- calories[['activities-calories']]
colnames(calories) <- c("dateTime", "calories")### STEPS
get_steps <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/steps/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_steps <- get_steps(baseDate = "2018-11-20", period = "3m")
steps <- content(got_steps)
# turn into df
steps[['activities-steps']] <- jsonlist_to_df(steps[['activities-steps']])
# assign easy object and rename
steps <- steps[['activities-steps']]
colnames(steps) <- c("dateTime", "steps")### DISTANCE
get_distance <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/distance/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_distance <- get_distance(baseDate = "2018-11-20", period = "3m")
distance <- content(got_distance)
# turn into df
distance[['activities-distance']] <- jsonlist_to_df(distance[['activities-distance']])
# assign easy object and rename
distance <- distance[['activities-distance']]
colnames(distance) <- c("dateTime", "distance")### FLOORS
get_floors <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/floors/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_floors <- get_floors(baseDate = "2018-11-20", period = "3m")
floors <- content(got_floors)
# turn into df
floors[['activities-floors']] <- jsonlist_to_df(floors[['activities-floors']])
# assign easy object and rename
floors <- floors[['activities-floors']]
colnames(floors) <- c("dateTime", "floors")### ELEVATION
get_elevation <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/elevation/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_elevation <- get_elevation(baseDate = "2018-11-20", period = "3m")
elevation <- content(got_elevation)
# turn into df
elevation[['activities-elevation']] <- jsonlist_to_df(elevation[['activities-elevation']])
# assign easy object and rename
elevation <- elevation[['activities-elevation']]
colnames(elevation) <- c("dateTime", "elevation")### minutesSedentary
get_minutesSedentary <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/minutesSedentary/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_minutesSedentary <- get_minutesSedentary(baseDate = "2018-11-20", period = "3m")
minutesSedentary <- content(got_minutesSedentary)
# turn into df
minutesSedentary[['activities-minutesSedentary']] <- jsonlist_to_df(minutesSedentary[['activities-minutesSedentary']])
# assign easy object and rename
minutesSedentary <- minutesSedentary[['activities-minutesSedentary']]
colnames(minutesSedentary) <- c("dateTime", "minutesSedentary")### minutesLightlyActive
get_minutesLightlyActive <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/minutesLightlyActive/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_minutesLightlyActive <- get_minutesLightlyActive(baseDate = "2018-11-20", period = "3m")
minutesLightlyActive <- content(got_minutesLightlyActive)
# turn into df
minutesLightlyActive[['activities-minutesLightlyActive']] <- jsonlist_to_df(minutesLightlyActive[['activities-minutesLightlyActive']])
# assign easy object and rename
minutesLightlyActive <- minutesLightlyActive[['activities-minutesLightlyActive']]
colnames(minutesLightlyActive) <- c("dateTime", "minutesLightlyActive")### minutesFairlyActive
get_minutesFairlyActive <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/minutesFairlyActive/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_minutesFairlyActive <- get_minutesFairlyActive(baseDate = "2018-11-20", period = "3m")
minutesFairlyActive <- content(got_minutesFairlyActive)
# turn into df
minutesFairlyActive[['activities-minutesFairlyActive']] <- jsonlist_to_df(minutesFairlyActive[['activities-minutesFairlyActive']])
# assign easy object and rename
minutesFairlyActive <- minutesFairlyActive[['activities-minutesFairlyActive']]
colnames(minutesFairlyActive) <- c("dateTime", "minutesFairlyActive")### minutesVeryActive
get_minutesVeryActive <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/minutesVeryActive/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_minutesVeryActive <- get_minutesVeryActive(baseDate = "2018-11-20", period = "3m")
minutesVeryActive <- content(got_minutesVeryActive)
# turn into df
minutesVeryActive[['activities-minutesVeryActive']] <- jsonlist_to_df(minutesVeryActive[['activities-minutesVeryActive']])
# assign easy object and rename
minutesVeryActive <- minutesVeryActive[['activities-minutesVeryActive']]
colnames(minutesVeryActive) <- c("dateTime", "minutesVeryActive")### activityCalories
get_activityCalories <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
        GET(url = paste0('https://api.fitbit.com/1/user/-/activities/activityCalories/date/', baseDate, "/", period, '.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_activityCalories <- get_activityCalories(baseDate = "2018-11-20", period = "3m")
activityCalories <- content(got_activityCalories)
# turn into df
activityCalories[['activities-activityCalories']] <- jsonlist_to_df(activityCalories[['activities-activityCalories']])
# assign easy object and rename
activityCalories <- activityCalories[['activities-activityCalories']]
colnames(activityCalories) <- c("dateTime", "activityCalories")##### Join multiple dataframes with purrr::reduce and dplyr::left_join
activity_df <- list(calories, steps, distance, floors, elevation, activityCalories, minutesSedentary, minutesLightlyActive, minutesFairlyActive, minutesVeryActive) %>% 
        purrr::reduce(left_join, by = "dateTime")# Add the dateTime to this dataframe
activity_df$dateTime <- as.Date(activity_df$dateTime)names <- c(2:ncol(activity_df))
activity_df[,names] <- lapply(activity_df[,names], as.numeric)# trim off any days that haven't happened yet
activity_df %<>% filter(dateTime <= "2018-11-06")

获取最近的活动类型

# We're giving it all she's got!

get_frequentActivities <- function(baseDate = NULL, period = NULL, token = Sys.getenv('FITB_AUTH')){
    GET(url = paste0('https://api.fitbit.com/1/user/-/activities/recent.json'),
        add_headers(Authorization = paste0("Bearer ", token)))
}

got_frequentActivities <- get_frequentActivities(baseDate = "2018-11-20", period = "3m")
frequentActivities <- content(got_frequentActivities)# This is a list object let's look at how many frequent activities are logged
length(frequentActivities)
## [1] 5# Take a look at the object with str()
str(frequentActivities)## List of 5
##  $ :List of 6
##   ..$ activityId : int 2131
##   ..$ calories   : int 0
##   ..$ description: chr ""
##   ..$ distance   : int 0
##   ..$ duration   : int 3038000
##   ..$ name       : chr "Weights"
##  $ :List of 6
##   ..$ activityId : int 90009
##   ..$ calories   : int 0
##   ..$ description: chr "Running - 5 mph (12 min/mile)"
##   ..$ distance   : int 0
##   ..$ duration   : int 1767000
##   ..$ name       : chr "Run"
##  $ :List of 6
##   ..$ activityId : int 90013
##   ..$ calories   : int 0
##   ..$ description: chr "Walking less than 2 mph, strolling very slowly"
##   ..$ distance   : int 0
##   ..$ duration   : int 2407000
##   ..$ name       : chr "Walk"
##  $ :List of 6
##   ..$ activityId : int 90001
##   ..$ calories   : int 0
##   ..$ description: chr "Very Leisurely - Less than 10 mph"
##   ..$ distance   : int 0
##   ..$ duration   : int 4236000
##   ..$ name       : chr "Bike"
##  $ :List of 6
##   ..$ activityId : int 15000
##   ..$ calories   : int 0
##   ..$ description: chr ""
##   ..$ distance   : int 0
##   ..$ duration   : int 1229000
##   ..$ name       : chr "Sport"

我从来不认为自己是达尔文或梭罗,但显然,就花费的时间而言,慢慢散步是我最喜欢的活动。

你可以看到我的 Fitbit 也记录了WeightsSportsBiking的时间,这可能是我手动记录我的活动时记录的。Fitbit 有可能会在我玩滑板的时候注册Biking

活动相关图

以前我总是使用corrplot包来创建一个相关图;然而,它不能很好地与ggplot配合,这意味着你不能轻易地添加Game Boy主题。尽管如此,我还是给了它一个复古的调色板,做了一些小小的调整。

由于我从最初的gameboy中想到了两种颜色,并且知道它们的hex代码,我能够从这个网站中生成一个调色板。

# Aligning Covariance Matrices # drop dateTime
corr_df <- activity_df[,2:11]# Correlation matrix
corr <- cor(na.omit(corr_df))
corrplot(corr, type = "upper", bg = "#9BBB0E", tl.col = "#565656", col = c("#CADCA0", "#B9CD93", "#A8BE85", "#97AF78", "#86A06B", "#75915E", "#648350", "#537443", "#426536", "#315629", "#20471B", "#0F380E"))

在相关图中,每个圆圈的颜色表示相关性的大小,圆圈的大小表示相关性的显著性。

在搜索了一会儿ggplot2扩展之后,我能够使用ggcorrplot,这允许我再次使用gameboy主题!

# Generating textures...ggcorrplot(corr, hc.order = TRUE, 
           type = "lower", 
           lab = TRUE, 
           lab_size = 2,
           tl.cex = 8,
           show.legend = FALSE,
           colors = c( "#306230", "#306230", "#0F380F" ), 
           title="Correlogram",
           ggtheme=theme_gameboy)

# Game Over. Loading previous save

ggcorrplot(corr, hc.order = TRUE, 
           type = "lower", 
           lab = TRUE, 
           lab_size = 2,
           tl.cex = 8,
           show.legend = FALSE,
           colors = c( "#3B7AAD", "#56B1F7", "#1D3E5D" ), 
           title="Correlogram",
           ggtheme=theme_gba)

探索活动

# Link saying "hyahhh!"

# Static
g <- activity_df %>% 
        ggplot(aes(x=dateTime, y=calories)) + 
        geom_line(colour = "black") +
        geom_point(shape = 21, colour = "black", aes(fill = calories), size = 5, stroke = 1) +
        xlab("") +
        ylab("Calorie Expenditure")

g + theme_gameboy() + theme(legend.position = "none")
g + theme_gba() + theme(legend.position = "none")

****

# Panick! at the Discord...

# gganimate
g <- activity_df %>% 
        ggplot(aes(x=dateTime, y=calories)) + 
        geom_line(colour = "black") +
        geom_point(shape = 21, colour = "black", aes(fill = calories), size = 5, stroke = 1) +
        transition_time(dateTime) +
        shadow_mark() +
        ease_aes('linear') +
        xlab("") +
        ylab("Calorie Expenditure") 

g + theme_gba() + theme(legend.position = "none")

距离是由你的步数和你估计的步幅(你输入的身高)决定的。

我还制作了DistanceStepsElevationFloors的剧情,但是你必须查看这个页面才能看到它们

结束语

尽管 Fitbit 为单个用户提供了一个很好的仪表板,但它是不可扩展的。通过直接访问数据,人们可以向 200 个甚至更多的人提问。如果有人愿意,他们甚至可以构建一个带有定制可视化效果的奇特Shiny仪表盘。

如果您有任何问题或意见,您可以随时通过 LinkedIn 联系我。在那之前,下一篇文章再见!

# Wubba Lubba Dub Dub

# https://www.spriters-resource.com/game_boy_advance/kirbynim/sheet/15585/
sprite_sheet <- png::readPNG("kirby.png")

Nframes       <- 11      # number of frames to extract
width         <- 29      # width of a frame
sprite_frames <- list()  # storage for the extracted frames

# Not equal sized frames in the sprite sheet. Need to compensate for each frame
offset <- c(0, -4, -6, -7, -10, -16, -22, -26, -28, -29, -30)

# Manually extract each frame
for (i in seq(Nframes)) {
  sprite_frames[[i]] <- sprite_sheet[120:148, (width*(i-1)) + (1:width) + offset[i], 1:3]
}

# Function to convert a sprite frame to a data.frame
# and remove any background pixels i.e. #00DBFF
sprite_frame_to_df <- function(frame) {
  plot_df <- data_frame(
    fill  = as.vector(as.raster(frame)),
    x = rep(1:width, width),
    y = rep(width:1, each=width)
  ) %>%
    filter(fill != '#00DBFF')
}

sprite_dfs <- sprite_frames %>%
  map(sprite_frame_to_df) %>%
  imap(~mutate(.x, idx=.y))

fill_manual_values <- unique(sprite_dfs[[1]]$fill)
fill_manual_values <- setNames(fill_manual_values, fill_manual_values)

mega_df <- dplyr::bind_rows(sprite_dfs)

p <- ggplot(mega_df, aes(x, y, fill=fill)) +
  geom_tile(width=0.9, height=0.9) +
  coord_equal(xlim=c(1, width), ylim=c(1, width)) +
  scale_fill_manual(values = fill_manual_values) +
  theme_gba() +
        xlab("") +
        ylab("") +
  theme(legend.position = 'none', axis.text=element_blank(), axis.ticks = element_blank())

panim <- p +
  transition_manual(idx, seq_along(sprite_frames)) +
  labs(title = "gganimate Kirby")

gganimate::animate(panim, fps=30, width=400, height=400)

假设的数据驱动的组织和他们对重塑过程的需求之间的差距

原文:https://towardsdatascience.com/the-gap-between-hypothetical-data-driven-organizations-and-their-need-for-remodeling-processes-476d852a7ff6?source=collection_archive---------1-----------------------

图示: Splunk 中票务管理洞察示例用于收集和分析此类数据

在过去的组织中,我的角色一直是一个快乐、横向的角色,对当今数字议程中发生的事情有 360 度的视角。我更喜欢保持顾问的风格,同时在典型 IT 项目的开发步骤中亲自动手。

在过去的两年里,我有机会参与不同 SMB(中小型企业)的许多转型过程,处理数字化、变革管理、分析和数据驱动战略等主题。然而,我的看法是,在这些组织能够实际实施的内容和它们如何实现这些内容之间存在差距。

迫切需要将变革确立为核心竞争力。

这种冲动有两个方面:

  • 组织产生过量的数据
  • 难以提供见解和商业价值

这两者都会导致技术选择和培养所需人才方面的延误和混乱。

我工作过的大多数组织都低估了他们使用、保存或删除的数据的价值和丰富程度。这就是为什么我在考虑数据之前谈论重塑流程的原因。

这里我举个例子!每当我们听到大数据、开放数据、公共数据,我们都会听到不同的相关问题:缺乏标准(开放数据的例子:意大利的两个地区,伦巴第皮埃蒙特,有完全不同的格式)、安全性、隐私和数据一致性(大多数数据已经过时或质量很差)、失去效用和增加获取价值的难度。

几年前,在一家小公司(但本质上对技术和创新问题“敏感”),服务台团队的工作方式是让员工进入办公室(同事不断敲门)并抱怨!这是他们的“全天候门票管理”系统。

一个基于云的产品的引入(有很多名字: ServiceNowSalesforceZendeskCA 等等)最终塑造了同事们面对它的方式。代理组与特定部门相关联,以便解决相关的票据并在它们之间共享信息。引入 SLA-s 是为了尊重优先级、紧急性和 QoS。员工从不同渠道(内部网、网络、社交网络……)使用他们的账户开罚单。几个月后,他们也开始解决自己和对方的抱怨。

一个知识管理存储库在云服务中得到丰富,将信息聚集在可搜索的文件夹中。响应时间比以前缩短了 40%。通过分析树状结构中的票证类别,他们了解到大多数问题都是以多米诺骨牌效应的形式出现的(在同一业务领域中,一个问题会引发其他子问题)。数据分析(关键词计数、要解决的时间、采取的步骤和其他 KPI)使得检测模式成为可能(类似的问题可能需要类似的解决方案!).

此外,不同部门(营销、销售、IT、CRM)之间的沟通得到了改善,同时信息可通过云服务平台社区和论坛立即获得。交流的流程发生了变化。现在正在分析这类数据。

云是范例,产品是媒介,但真正使重塑成为可能的是他们态度的改变。这被证明是一个成功的模式,因为它调动了所有参与者(IT 团队、来自其他业务部门的同事和管理层)并利用了数据的力量。

这看起来像是“最低要求”的思维模式(“只要法律、法规或主管期望我做的,我就做最低限度的事情”)阻止组织通过实施变更管理流程来做出战略决策。

在我看来,在定义一个日期驱动的策略之前,最好开始重塑过程。

数据科学的起源

原文:https://towardsdatascience.com/the-genesis-of-data-science-fd86c6c8b6b3?source=collection_archive---------7-----------------------

Photo by Blake Richard Verdoorn on Unsplash

最初,微软创造了 Excel。

*历史上不准确,但这些事情从来都不是

现在,电子表格变得没有形状和空洞,空白笼罩着屏幕,分析的灵魂在键盘上盘旋。

3 而分析师说,“要有剧情”,于是就有了剧情。

分析师看到这个图有点傻,她给 x 轴和 y 轴标上了标签。

分析师称 x 轴为“时间”,y 轴为“收入”。有一个标题,有一个传说——第一天

6 客户说:“让我们改善视觉效果,将数据与数据分开。

因此,分析师给这些点着色,增加透明度,并将小的数据点从上面的数据点中分离出来。事情就是这样。

分析师称这种图形类型为“散点图”。有一条回归线,有误差线——第二天。

9 和微软说,“让软件继续发展,让新的想法聚集到一个地方,让新的版本出现。“事情就这样了。

微软称这些变化是“创新的”,顶部的超大图标被他们称为“现代的”微软认为这很好。

然后其他人说,"让土地生产不同的软件:编程软件和网络上的开源代码,根据它们的不同种类承担协作。“事情就这样了。

人们创造了 R、Python 和其他东西:按种类承载 ide 的软件和按种类承载代码的模块。人们认为这很好。

于是有了 Linux,有了 Git——第三天。

另一个人说:“让网络的拱顶里有论坛,把困惑和不困惑的人团结起来,让他们成为日复一日、年复一年地讨论神圣问题的地方,”

15 由于缺乏可复制的例子,让网络论坛中的过度愤怒的人向地球发出愤怒的声音“事情就是这样。

人们分为两大类——帮助困惑者的解释者和播下沮丧种子的阻挠者。

解说者们出现在论坛上是为了给地球带来光明,

帮助门外汉和新人,将光明与黑暗分开。许多人认为他们是好的。

19 还有一些阻挠者,他们珍惜自己的地位,用许多等式来回应新的呼声,并声称需要博士学位才能成功——第四天

Photo by Pietro Jeng on Unsplash

20 人们说,“让 GitHub 充满代码,让信息图表在 Twitter 信息流和脸书的众多烦人广告之间飞舞。

然后 Apache 创造了大数据的伟大创造物和每一种可能的工具,让数据流大量涌现,并根据它们的种类在其中移动,根据它们的种类创建每一种数据结构。阿帕奇人认为这很好。

22 物联网祝福他们说:“多结果子,多数量,充满厨房里的电器,让地球上的 GPS 定位器多起来。

有了移动应用,有了 Fitbits——第五天

招聘人员说:“T18 让土地根据它们的种类产生生物:数据科学家,处理数据的生物,和数据工程师,那些处理所有其他事情的人,每一个都根据它们的种类。“事情就这样了。

T21:招聘人员根据种类来创造科学家,根据种类来创造工程师,根据种类来创造所有在网络上活动的生物。人们发现这有点令人困惑。

然后有人说:“让我们按照我们的形象,按照我们的样式来创造人类,这样他们就可以控制他们电脑里的数据了。”于是,MOOC 诞生了。

所以 Ng 按照他自己的形象创造了人类,他按照神的形象创造了他们;他创造了深度学习的学生。

28 伽何祝福他们,对他们说:“要生养众多;填满大地并征服它。统治图像识别竞赛和自然语言挑战,统治网络上的每一个问题。

然后人们说:“我给你们全地球上每一个有代码的时刻和每一个有果实有种子的想法。它们将成为你的精神食粮

Photo by William Bout on Unsplash

30 对于地球上所有的分析家和所有在网络上移动的生物——所有在网络上有生命气息的东西——都被给予了开放的食物数据集。“事情就这样了。

人们看到了他们所做的一切,非常好。有数据,有科学——第六天

数据科学项目管理的“黄金标准”

原文:https://towardsdatascience.com/the-gold-standard-of-data-science-project-management-13d68c9e85d6?source=collection_archive---------7-----------------------

Photo by rawpixel on Unsplash

这篇文章的灵感最近来自哈佛大学生物信息学家唐明幻灯片,以及约翰·霍普斯金大学杰弗瑞·莱克提供的 Chromebook 数据科学新课程。Leek 认为这很重要,建议你"在数据科学项目中安排 10-20%的时间来组织和记录你的工作。

然而,这是我思考了一段时间的话题。我过去读过的许多其他优秀资源( 1234 )启发我创建了一个 Github repo ,用于建立新的数据科学项目目录的黄金标准工作流。

来自 UBC 的统计学家和数据科学家 Jenny Bryan 对 R 脚本的合理布局、工作流程和文件组织/命名有着强烈的看法,他说得很好:

Image Source

Leek 过去曾在 simplystats 博客上谈论过杜克丑闻(还有罗杰·彭拉法·伊里扎里),所以这也成为他的课程就不足为奇了。对于那些不想看演讲“高通量生物学中可重复研究的重要性:法医生物信息学中的案例研究”的人,我会给出科尔斯笔记版本(但我警告你,你错过了!).

杜克大学的研究人员发表了一项关于使用个性化基因组学进行患者特异性化疗的研究。来自 MD 安德森的两位研究人员巴格利和库姆比斯要求提供数据和代码。花了好几个月的时间来来回回(追逐)才真正得到数据和代码——当他们得到数据和代码的时候,它们是杂乱无章的,并且没有很好的文档记录。巴格利和库姆比斯最终在代码中发现了一个错误,表明它实际上将患者置于风险之中,导致了一场重大诉讼并终止了临床试验。

另外,可悲的是,不愿意分享数据的现象今天仍然很普遍。一个典型的例子是,现在臭名昭著的“寄生虫研究”社论由该领域的权威期刊《新英格兰医学杂志》发表。我还附上了 Stodden 等人的截图,2018“计算再现性期刊政策有效性的实证分析”。作者随机抽取了 204 篇发表在《科学》杂志上的科学论文,这些论文是在他们的政策实施后发表的,该政策于 2011 年 2 月“要求作者在发表后根据要求提供再现性所必需的数据和代码”。在这 204 篇论文中,有 24 篇有足够的信息(通过链接或在支持信息中)让他们在不联系作者的情况下找到数据/代码。在那些被联系和回复的人当中,有些人要么不确定科学的政策,要么不愿意遵从:

Special thanks to Luis D. Verde for reminding me of the Image Source!

Stodden 和他的合作者从 204 篇文章中的 89 篇文章中获得数据和代码,并随机选择了 22 篇来尝试复制(除了一篇之外都成功了)。他们据此估计,26%将重现这 89 篇文章(56*(1-1/22))),置信区间为 95%[20%,32%]——作者建议我们继续就记录代码、元数据、工作流以及软件使用和重用的最佳实践和标准进行对话(例如 Docker 容器)。

Source: https://twitter.com/ProfJohnATodd/status/1053471430149435392

我知道有些科学家会先浏览一份手稿的摘要,但我的认可是一份再现性声明,其中包含所有可用的( r a w )数据和代码。如果你没有看到类似这样的东西,请运行!

未能使你的项目具有可复制性是学术不端行为,会有严重的后果。这是对最近名誉扫地的康奈尔大学研究员布莱恩·万辛克的指控之一(未能正确记录和保存研究成果)(我不是说这比 p-hacking 指控更糟糕,但我也拒绝说这比 p-hacking 指控更好)。

一项 2017 Github 调查显示,“不完整或混乱的文档”是对开源软件的头号投诉。

Daniele Procida 在软件文档的黄金标准上发表的这篇 优秀文章很好地总结了这一点,他说:

“你的软件有多好并不重要,因为如果文档不够好,人们就不会使用它

即使出于某种原因他们不得不使用它,因为他们没有选择,没有好的文档,他们不会有效地使用它或以您希望的方式使用它。"

因此,遵循 Procida 先生的明智建议,让最终用户毫不费力地理解您在项目中做了什么,并能够重现那些结果(最好不必联系您)。这对于与现在的同事合作以及为了子孙后代都是至关重要的(例如,当你被要求在 6 个月后重新进行一项分析时,或者对于任何希望复制你的工作并对其进行扩展的研究人员来说,这是你未来的自我)。

Source: https://opensource.googleblog.com/2018/10/building-great-open-source-documentation.html

由于我的 Github repo 已经解决了在您的数据科学项目中建立文件夹的黄金标准(请启动 repo,因为我计划在未来几天更新和改进它)我将谈论数据科学项目管理的另一个重要方面,即:

文件命名

Jenny Bryan 给出了数据科学项目文件命名的三个关键原则。

  1. 机粕读的
  2. 人类可读的
  3. 与默认排序配合良好

为了机器的可读性,我们希望避免空格、标点、句点和任何其他特殊字符(除了 _ 和-)

为了便于阅读,你需要给文件取一个有意义的名字。当命名R对象时,有一种缩写object名称的倾向,只要包含注释,这是可以的。例如,cv_perf_recall_rf 对象是对随机森林模型的每个交叉验证折叠的验证召回的计算。

# Calculate the validate recall for each cross-validation fold
cv_perf_recall_rf <- cv_prep_rf %>%
 mutate(validate_recall = map2_dbl(validate_actual, validate_predicted, ~recall(actual = .x, predicted = .y)))

然而,在命名文件时,我会警告不要使用首字母缩写词,除非绝对必要,如果是这样,在README文件中包含该信息。

下一条建议是将日期和数字放在文件名的开头。始终使用 ISO8601 日期格式(yyyy-mm-dd)和带零的左补数字。最大位数将由您可能生成的文件数量决定。假设您希望保存 100 个结构性 MRI 图像文件,那么它应该是这样的001_T1_mri.nii.gz. 假设您认为您实际上会生成 1000 个文件,那么它应该是这样的0025_T1_mri.nii.gz

采取相反的立场

Leek 还说你应该避免区分大小写,例如Esophageal-Cancer_Report.md 显然是一个可怕的文件名(我的手指因为所有额外的击键而受伤😫)而是暗示esophageal-cancer_report.md 高人一等。

恕我直言,我不同意他的观点。就我个人而言,我觉得茶包在美学上令人愉悦,而esophagealCancer_report.md看起来更令人愉快,而且它没有 Leek 提到的风险;只要你不忘记包括适当的选项来忽略大小写的敏感性。在R中,你可以用stringr包来做这件事,

library(stringr)
str_detect('TOYOTA subaru', fixed('toyota', ignore_case=TRUE)) 

在终端中,您可以使用-iname 标志来忽略find命令的不区分大小写。如果你是健忘的,或者仅仅是有效率的( i. e. lazy),你可以在你的.bashrc文件中包含这个别名🤷

让你的文件名以大写字母开头显然不是一个好主意,因为这会导致你添加额外的击键来生成大写字母(例如T3)。然而,使用camelCase,你可以通过使用 Tab 键自动完成来避免额外的击键。

结束语

如果你使用R,你应该仔细阅读 Kirill Müllerhere()软件包,它可以消除由setwd()引起的尴尬的工作流程问题。

Jenny Bryan 大力提倡使用他的软件包,并在她的博客文章“面向项目的工作流”中写了关于如何做和为什么做的内容。

遵循这条黄金标准数据科学项目管理建议,你在处理“大数据”时将不会有任何问题🙄

如果你觉得这篇文章有用,请随意与他人分享或推荐这篇文章!😃

一如既往,如果您有任何问题或意见,请随时在下面留下您的反馈,或者您可以随时通过 LinkedIn 联系我。在那之前,下一篇文章再见!😄

数据科学的黄金机会|第 1 部分

原文:https://towardsdatascience.com/the-golden-shot-with-data-science-part-1-b81eb00ec30f?source=collection_archive---------13-----------------------

今年是 2013 年,这是圣安东尼奥马刺队和迈阿密热火队之间的 2013 年 NBA 总决赛第六场。圣安东尼奥以 3 分领先。在比赛还剩 12 秒的时候,勒布朗·詹姆斯接了一个球,并尝试了一次三分投篮。迈阿密需要三分来打平比赛,并且仍然有机会赢得 NBA 总冠军。尝试失败了。人群发现自己处于一种沉默和顺从的混合状态。然后球从篮板上掉了下来,克里斯·波什抢到了篮板。在比赛还剩 7 秒时,他将球传给右翼的雷·阿伦,后者后退三步。球掉了进去,人群爆炸了。比赛只剩下 5 秒钟,双方打成平手,被迫进入加时赛。迈阿密赢了第 6 场比赛,并迫使第 7 场比赛。剩下的就是历史了……

像来自雷·阿伦的 T3 这样的镜头是最难找到的。首先,球员必须承受巨大的压力。他知道需要 3 分来扳平比赛,重新获得 NBA 总冠军的机会。其次——多名防守队员高速赶来,防守这场比赛中可能是最后的一击。第三,考虑到这些情况,你必须做好充分准备才能打出这样的一杆。

Ray Allen’s three point shot against SA (https://giphy.com/gifs/nba-basketball-miami-heat-26grzzeWoSsK1ieoU/links)

在这篇文章中,我们想分析哪些参数对三分球的性能有影响,哪些是不相关的。我们想看看 NBA 球员超过 120000 次投篮的测量参数,以获得洞察力,并寻找这些参数与最后一秒投篮的表现和成功之间的可能联系。我们将关注球员在投篮时必须应对的所有情况。我们不会考虑球员的个人技能,因为我们想调查环境及其对击球的影响。这导致了基于数据使用的论文证明。最终结果应该是知识,允许我们将所有这些输入到神经网络中,以预测三分之一的成功率,或者换句话说,球员是否应该射门。

数据和分析

我们将使用的数据集测量了来自 NBA 比赛的超过 120000 个镜头,并提供了大量信息。这里 可以找到 。让我们仔细看看它:

First rows of the used dataset

首先,我们有比赛和日期。接下来,我们有一些非常有趣的参数,比如镜头时钟和游戏时钟。我们必须考虑的下一个参数是触摸时间和射击距离。我们还有到最近的防守队员的距离以及射门是否成功的信息。所有这些信息真的很有趣,使我们能够发挥创造力,越来越多地研究这些参数。

1️⃣滤波三分球

首先,我们要使用我们数据集中的所有三点射击尝试,因此让我们检查我们数据集的分布。

Distribution of 2 point shots(violet) and 3 point shots(yellow)

我们的数据集包含超过 94,000 次两点射击尝试和超过 33,000 次三点射击尝试。这是一个有趣的信息,因为现在我们知道我们的数据集中有多少有趣的样本。我们将尝试拍摄 3 个点,并将两个点的数据分开,因为我们只想处理我们案例中感兴趣的数据。

👨‍💻数据准备

在我们开始询问具体问题和调查我们的数据集之前,我们必须先对其进行过滤。如上所述,我们有超过 33.000 个三分球,但我们不想处理所有的三分球。这是因为我们想只关注最后一秒镜头和“正常”镜头之间的关键区别。因此,我们将我们的 33.000 个三分球分成所有投篮,投篮时间小于 7 秒。既然我们已经对数据进行了分离和过滤,是时候提问和获取知识了。

2️⃣:拍摄时间会影响第三次拍摄的成功吗?

这是一个非常有趣的问题,因为通常你会认为在拍摄时间压力下拍摄的镜头比拍摄时间长的镜头成功率低。为了研究这个问题,我们必须得到与炮时钟压力相关的成功和失败炮的分布。

Distribution of made and missed 3 point shots with < 7 seconds shot clock

仔细观察这个图,可以发现失败的三分比成功的三分多得多。如果我们用绝对数字来说,这意味着 7 秒钟以下的成功率是 33%。或者换句话说,在 7 秒钟内 3 次三分球尝试中的 1 次是成功的。这是我们能够实现的第一次知识增长。现在的问题是:“成功的三和不成功的有什么区别?有没有区别或者根本没有区别而且都只是基于纯技巧?

后卫距离 3️⃣

我们要检查的下一个参数是最近的防守者距离。如果我们想到一个典型的最后一秒投篮,应该有一个紧密的防守,这应该使球员更难投进三分。

Distribution of successfull and unsuccessfull shots related to the defender distance

如果我们现在看一下分布情况,很明显,防守队员越靠近,球员就越难投篮。我们还可以看到,大多数投篮都是在 5 英尺范围内进行的,而大多数投篮不中也是在这个范围内进行的。此外,我们可以注意到,在 10 英尺范围内,投篮不中的次数远远高于 10 英尺范围外的投篮次数。这意味着射手有越多的空间,他就越有可能得分空位三分。现在考虑防守队员的平均距离,它也向我们表明,失败组的防守队员比成功组的防守队员离射手更近约 0.6 英尺。

平均成功定义距离= 5.95 英尺

平均故障定义距离= 5.34 英尺

现在让我们记住,根据给定的数据,3 分投篮的总体成功率是 33%。但是如果我们现在回顾一下不同的后卫距离等级,我们会看到一些不同的东西:

Success rate of three pointers in relation to defender distance

结果应该不令人惊讶,但有趣的是,如果防守队允许对手占据太多空间,三分球的转化率会迅速增长。

4️⃣射击距离

在我们提出了取决于后卫空间的三分投篮成功率的差异之后,我们现在准备看看投篮距离。和前面的参数一样,对于三分球来说,投篮距离也是一个非常重要的参数。从比三分线更高的距离得分要复杂得多。通过仔细观察根据投篮距离的三分命中和失误的分布,我们可以看到大多数命中和失误的投篮都在 23 到 26 英尺之间。

Distribution of successfull and unsuccessfull shots rekated to shooting distance

让我们不要关注不同的投篮距离:我们可以清楚地看到,射手的距离越大,三分球尝试的成功率下降得越多。

Distribution of successfull and unsuccessfull shots in relation to shooting distance(left = 23 to 25 feet, middle = 25 to 28 feet, right = 28 to 32 feet)

这意味着三分球尝试的投篮距离越高,该球被标记为失误的几率就越高。

5️⃣的触摸时间

触球时间描述了球员在射门前控制球的时间。知道成功率和接触时间之间是否有联系是很有趣的。为了实现这一点,我们首先需要对照该参数检查投篮命中和投篮不中的分布:

Distribution of made and missed shots compared to the touch time

我们可以清楚地看到,大部分镜头的触摸时间在 0 到 2 秒之间。此外,越来越清楚的是,大多数单位放置在 0 和 5 秒之间。现在让我们放大大部分数据所在的区域。如果我们仔细观察 0 到 5 秒之间拍摄的照片,我们会发现一些突出的东西:

Made and missed shots compared to touch time in 3 categories (left = 0 to 1 sec, middle = 1 to 3 sec, right = 3 to 5 sec)

球员控球时间越长,成功率就越低。这是非常令人惊讶的,因为通常我们可以假设,随着时间的推移,球员有更多的机会把自己放在最佳位置,打出好球。

🏁结论

在这篇文章中,我们定义并研究了在拍摄时钟压力下三点拍摄的最重要参数。总结本文中获得的所有信息,我们可以说:

  • 33%的拍摄时间少于 7 秒的三次拍摄都是成功的
  • 防守者给球员的空间越大,相对于射门距离来说,三分球的成功率就越高
  • 球员投三分球的距离越大,成功率就越低
  • 在触摸时间不太高的情况下,拍三的成功率更高

所有这些都是可以成功获得的洞察力,并用数据来证明。现在的问题是,这是否可以用来为未来的射击创建一个概率建议,或者需要更多的参数来预测一些有价值的信息?我想在第二部分回答这个问题。因此,我们将在“keras”中建立和训练一个神经网络,以预测在几种情况下三分球成功的概率,以及是否接受它。

我希望你喜欢这个数据分析,即使它证明了比发现一些突出的新东西更众所周知的事实。但是证明事实和获得知识是建立神经网络的第一步,因为我们确实需要知道我们需要遵循哪些规则。

人工智能的巨大鸿沟

原文:https://towardsdatascience.com/the-great-divide-in-ai-450bec3974e9?source=collection_archive---------7-----------------------

作者:Aadhar Sharma、Deepak Singh 和 Sukant Khurana

Figure 1: Timeline of AI development

洛夫莱斯伯爵夫人兼查尔斯·巴贝奇的助手艾达 T3 被认为在 1843 年编写了第一个计算机程序。她是第一个认识到计算机不仅仅可以用于纯粹的计算的人。她也是第一个就人工智能(AI)的概念对分析引擎发表评论的人;她在笔记中写道:

“分析引擎并不自命能创造任何东西。它可以做我们知道如何命令它执行的任何事情。它可以跟随分析;但它没有能力预测任何分析关系或真理。”

Ada 不希望分析引擎能像人一样聪明;艾伦·图灵在他 1950 年题为“计算机器和智能”的论文中反对的东西。人工智能的出现是由麦卡洛和皮茨的开创性研究(1943;M&P)——单点神经元的计算模型(一个过于简化的大脑模型)——和唐纳德·赫布的可塑性法则(1949)。艾伦·图灵(Alan Turing)在机器智能方面有影响力的工作(始于 1951 年的《模仿游戏》(the Imitation Game)一书)为他赢得了“现代计算之父”和人工智能(AI)的称号。

20 世纪 50 年代,计算机终于变得足够强大,可以模拟这些想法。据报道,纳特·罗切斯特首次尝试对 M & P 型号进行编程,尽管最初并不成功。最初的失败导致研究人员约翰·麦卡锡马文·明斯基* 克劳德·香农和纳特组织了 1956 年至关重要的达特茅斯研讨会3。这个大联盟集会的想法是就如何模拟智能(主要是人类)进行头脑风暴。这正式确立了人工智能作为计算机科学的一个子领域。*

1957 年, Frank Rosenblatt,发明了感知机,一种模式识别算法,导致了人工智能的一场革命,吸引了像苍蝇一样的研究人员,直到 MinskyPapert 在 1969 年出版了他们的书《感知机》,这本书开启了臭名昭著的人工智能冬天。1982 年春天,约翰·霍普菲尔德(John Hopfield)的联想神经网络(T7)问世。Rumelhart、Hinton 和 Wiliams 在 1986 年发表了“反向传播”学习算法,这重新引发了人们对人工智能的极大兴趣,也许对神经网络来说尤其如此。

据陷入科学与工程辩论的人说,人工智能具有双重性;它既是科学也是工程。帕特里克·温斯顿(Patrick Winston)写道,人工智能有两个目的:一是我们试图理解什么是智能的诺贝尔奖获得者的目的,二是让机器更有用的创业目的。作为一门科学,它是要发现某些生物系统的本质,主要是人类的智能;研究认知科学的方法。作为工程,它关心的是开发对某些目的有用的智能系统。无论分类如何,我们

人工智能作为基础科学

人工智能工程

担忧

计算机建模以发现智能生物现象的本质(主要是人类)

开发有用的智能系统,并将其应用于企业。

1: AI 作为基础科学与工程

作为一个领域,人工智能已经走过了漫长的道路,从建模思维、感知和行动的科学到在无数职业中提供帮助和援助的工程系统。人工智能的演变非常丰富,并在生物学、哲学、语言学和心理学中找到灵感,尽管不是每个人都赞赏人工智能作为科学如何演变为工业研究。看来,虽然洛夫莱斯女士对人工智能的看法是错误的,但她对计算机应用的认识是正确的。应用人工智能驱动的进化极大地影响了人工智能领域,并引发了许多关于对它的伦理和道德义务的关注。

作为基础科学的人工智能:好与坏

MAC(机器辅助认知;1963)项目是麻省理工学院的一个主要项目,由 ARPA 资助,每年的预算超过 300 万美元, Minsky ,AI 历史上最有影响力的人物之一,提到超过 100 万给了人工智能小组;

“最初几年,我们把这笔钱花在硬件和学生身上,但到了第十年,我们开始制造自己的硬件,所以我们几乎把所有的钱都花在了教职员工和学生身上”5

他的目标是雇用人才来学习和设计可以解决非算术问题的计算机系统,使机器智能化。他非常热衷于为人工智能研究提供一个意义深远的平台,以至于他将所有的资金和努力都用于人工智能的健康和可持续发展,其中可持续发展不仅意味着传播负担得起的人工智能,还包括研究语言学、视觉感知、模式识别、机器人等问题。使用各种模型和技术,例如数理逻辑、概率和神经网络等等。他和当时的其他研究人员在这个领域培养了一批杰出的科学家。

帕特里克·温斯顿曾经是明斯基的研究生,后来接替他成为人工智能实验室的主任。Pat 解释了事情开始走下坡路的原因——人工智能和机器人技术发展到了一个可以实际做有用的事情的地步,所以焦点转向了实际应用,主要是由工业需求和创业激情驱动的,这一些——将更基本的科学问题放在了一边6诺姆·乔姆斯基一贯蔑视“新人工智能”对统计技术的严重依赖,他不期望这些模型能够提供人工智能作为一门科学有义务提供的探索性洞察力。他认为,这种依靠加速研究、大规模记忆和计算能力的更新的科学不太可能预测关于智慧生物或认知性质的一般原则;这使得工程学远离了科学。然而,并非所有人都同意他的观点, Peter Norvig,(一位杰出的人工智能研究人员,《人工智能:一种现代方法》的合著者,谷歌的研究主管)有着非常不同的哲学和技术观点,他写道7:

“我同意工程上的成功不是科学的目标或衡量标准。但我注意到科学和工程是共同发展的,工程上的成功表明某些东西在正常工作,科学上成功的模型的证据(但不是证明)也是如此”。

诺姆承认了这些评论,他承认统计技术本身就像一个搜索引擎,有着巨大的实用潜力。

杰出的神经科学家和意识专家 Christof Koch 提到了理解潜在机制对开发高质量工程产品的重要性。他写道,

“这种知识的缺乏使得任何关于我们何时能实现强大人工智能的预测都充满了不确定性”

该领域目前的一个趋势是机器学习,它几乎已经成为人工智能的同义词;深度学习(以下简称 DL)是机器学习的一种类型,目前正在大肆宣传。DL(或多隐层神经网络)从 M & P 神经元中汲取灵感。神经网络的想法首先由 Frank Rosenblatt推广用于模式识别应用,然后由 Minsky和 Papert 取消推广,部分导致了人工智能的冬天。明斯基提到,“我们做得太好了”,十年的时间里没有一篇该课题的论文5。虽然这是通过批评一个分析不足和夸大的模型来谈论科学的良好实践,但通过贪婪地发现所有存在的东西来停止一个领域的研究进展肯定是不好的,明斯基后来承认了这一点。

被尊称为神经网络之父的杰弗里·辛顿对神经网络的重新普及负有部分责任。他自 1986 年以来一直在全球范围内领导神经网络研究,是由 Yoshua BengioYann LeCun 及其学生组成的 AI9知名加拿大学术界成员;一起创造了目前 DL 的全球热潮。今天,DL 无处不在,部分是因为它的函数逼近能力和模式识别的倾向。它们可以应用于几乎任何人工智能应用程序,而不需要很好的头脑风暴(但需要一些调整)。然而,最大的担忧是我们无法理解他们是如何做这些事情的;从技术上讲,这是一个非常困难的问题,它引发了许多伦理和哲学上的关注,如果它普遍存在,它对这个领域具有直接的重要性。

人工智能作为工程:工业和创业目标

其他道德问题源于人工智能战争,这是一场由行业技术巨头资助的公司之间研究人工智能革命性进展的竞赛。问题包括对小型独立研究的负面影响,以及在某些情况下以过早的趋势驱动人工智能初创公司,以及收集未经请求的数据。

许多人担心学术界将不再有顶尖人才,因为这个行业正在吸走所有的博士。2014 年被谷歌以 6 亿美元收购的 DeepMind 公司雇佣了超过 100 名博士,与 OpenAI、脸书、Twitter 和百度等其他巨头的趋势相似。

尼克·博斯特罗姆问辛顿,当他认为这项技术可能被滥用时,为什么还要做研究,他回答说:

“我可以给你通常的理由,但事实是发现的前景太美好了。”

类似的回应也曾被奥本海默在他的核武器研究中引出;“当你看到技术上很好的东西时,你就去做,只有在你取得技术上的成功后,你才争论该怎么办”。**

人们必须认识到,一个新现象或技术进步的发现对研究人员来说是甘露,但有时科学和技术发展太快,以至于没有足够的时间来完全理解它们的影响。Pat Winston将这种增长模式比作“气球模式”,即“这个领域被夸大到令人难以置信的程度,而且存在被超卖的严重危险”。**

Juergen Schmidhuber 对 hint on、Bengio* 和 LeCun 提出了批评,因为他认为在关于 DL 的学术研究中存在自引现象9。*

虽然 DL 因其盲目计算而受到一些批评,但企业家界出现了一种新的担忧。DL 算法执行大量的向量运算并处理大量的高维数据,由于它们在工业中被广泛使用,一个新的想法是制造专用于 DL 的数据处理芯片。目前,大多数 DL 计算是由 CPU 和 GPU(在某些情况下是 FPGAs)处理的,这些处理单元是为通用程序和图形处理的处理而设计的,因此处理 DL 操作需要许多中间原语 CPU/GPU 操作。这被专注于开发新半导体芯片的初创企业视为一个机会之窗,这些芯片可以更快、更有效地处理 DL 计算,并且能耗低得多。DL 的新热潮对投资者也很有吸引力,五年前这种冒险会让他们歇斯底里。像英伟达和英特尔这样的大联盟公司已经意识到了这一点,并且已经在开发他们自己的版本11

DeepMind 的联合创始人戴密斯·哈萨比斯表示,就人工智能的创新速度和目前的情况而言,人工智能战争中公司之间的合作和协调是虚拟的。比竞争对手更快地推进研究往往会导致偷工减料,这是灾难的原因。他提到我们必须避免抄近路的 AI 比赛12

当我们致力于我们的会议只是机制时,有一种倾向,不是致力于基本问题,而是,只是那些机制可以处理的问题,这是人工智能进化成人工智能的部分原因。除了道德义务之外,还有很多技术问题。毫无疑问,机器视觉的准确性已经大大提高,语音处理系统也比以前做得更好,这都要归功于 DL,但事实确实如此。我们可能正在走向 DL 的饱和点,如果是这样的话,那么就迫切需要通过与神经科学、心理学、生态学等领域的合作来寻找接近智力的新灵感。(回到灵感循环)

伦理问题在两个阵营中都很普遍;伦理上的争论不是我们必须把人工智能当作科学或工程来追求,也不是工程创新应该落后于科学发现,而是人工智能中的工程和科学应该齐头并进,一个不能支配另一个,以至于偏离目标。我们忽视了我们对人工智能作为一个领域的责任,无论是为了我们贪婪的发现前景,还是财务和创业议程。我们对人工智能的责任是推动它理解什么是真正的智能,并设计可持续使用的系统。一位伟大的哲学家,蜘蛛侠的叔叔曾经说过,“权力越大,责任越大”;一本书名粗鲁的书的作者马克·曼森提出了他自己的观点:“责任越大,力量越大”。我们必须理解我们对人工智能的道德义务,尊重它作为一个领域,并以最佳方式利用它来解决紧迫的问题,而不仅仅是那些具有巨大经济前景的问题。

参考文献:

图表列表:

1:人工智能进化的时间线

表格列表:

1:作为基础科学和工程的人工智能

阿达尔·夏尔马是苏坎特·库拉纳博士团队的实习生,从事人工智能伦理方面的工作。Deepak Singh 博士在印度艾哈迈达巴德的物理研究实验室工作,与 Khurana 博士在人工智能伦理和科学普及方面进行合作。

你可以在www.brainnart.comwww.dataisnotjustdata.com了解更多关于 Sukant Khurana 博士的信息,如果你希望从事人工智能或数据科学研究项目以造福公众,你可以在 skgroup.iiserk@gmail.com 联系他或在 linkedin 上联系他。

算法决策中的隐患

原文:https://towardsdatascience.com/the-hidden-dangers-in-algorithmic-decision-making-27722d716a49?source=collection_archive---------5-----------------------

“人类数据中存在人类偏见。”

A robot judge in Futurama was all fun and games, until COMPAS was created.

人工智能静悄悄的革命看起来一点也不像电影预测的那样;人工智能渗透到我们的生活中,不是作为有意识的机器人取代我们的生活,而是稳步进入以前人类专有的决策领域。因为这很难发现,你可能甚至没有注意到你的生活在多大程度上受到算法的影响。

想象一下这个——今天早上,你醒来,伸手拿起手机,查看脸书或 Instagram,在那里你从一个由算法创建的内容提要中消费媒体。然后你检查了你的电子邮件;当然,只有重要的信息。所有可以忽略的东西都会被自动转储到你的垃圾邮件或促销文件夹中。你可能听过 Spotify 上一个新的播放列表,它是根据你之前感兴趣的音乐推荐给你的。然后你继续早上的例行工作,然后上车,用谷歌地图查看你今天的通勤时间。

在半个小时的时间里,你消费的内容、你听的音乐和你去上班的路程都依赖于你自己以外的脑力——它依赖于算法的预测模型。

机器学习在这里。人工智能在这里。我们正处于信息革命之中,虽然这是一个难以置信的时间和地点,但人们必须警惕随之而来的影响。让一台机器告诉你你的通勤时间有多长,你应该听什么音乐,你可能会接触什么内容,这些都是相对无害的例子。但是,当你在浏览脸书的新闻时,某个地方的算法正在决定某人的医疗诊断、假释资格或职业前景。

从表面上看,机器学习算法看起来像是一个有前途的解决方案,可以缓解人类偏见这一邪恶问题,以及它可能对数百万人的生活产生负面影响的所有方式。这个想法是,人工智能中的算法能够比人类更加公平和有效。世界各地的公司、政府、组织和个人出于多种原因将决策权交给他人——更可靠、更容易、成本更低、更省时。但是,仍有一些问题需要注意。

定义一般偏差

Getty Images

偏见可以广义地定义为对一些理性决策或规范的偏离,可以是统计的、法律的、道德的或功能的。我们在日常生活中和社会层面上都看到了偏见。通常,一个延续另一个。

例如,在你回家的路上,你可能会选择一条“更安全”的街道——是什么决定了这一点?也许这个地区是那些社会经济地位较低的人的家园。虽然不一定是特权较少的人更有可能参与犯罪活动,但你的偏见,无论是显性的还是隐性的,都会促使你走上不同的道路。在更大的范围内,这些地区可能会有更多的警察巡逻,这反过来会导致比更富裕的社区更高的逮捕率,给人一种犯罪率更高的错觉,而不管那里的实际犯罪率有多高。这种恶性循环似乎只会强化我们最初的偏见。

算法和机器学习

我们先来区分一下经典算法和机器学习。算法通常被描述为输入输出机器。传统的编程依赖于植根于逻辑的函数——如果 x,那么 y。算法是基于规则的、显式的和硬连线的。机器学习比这更复杂。学习算法不是通过其数据必须满足的预编程条件来做出决策,而是通过对其做出决策的领域中成百上千个数据集的审计和统计分析来做出决策。

例如,在寻找最有可能成功的候选人的雇佣学习算法中,训练数据集可以被馈送来自公司中表现最佳的候选人的 200 份简历的数据。然后,该算法会找出模式和相关性,这有助于根据简历分析新候选人的成功可能性。将决策交给机器学习算法对相关人类有许多好处,包括节省时间、金钱和精力。然而,当涉及到决策的道德和责任时,界限就变得模糊了。因为我们无法准确理解为什么一台机器会做出这样的决定,所以当偏见发生时,我们并不总是能够检测和回避它。

机器学习中的偏差

retrieved from www.mathwashing.com

数学清洗(偏向算法)

“数学清洗”是一个被创造出来的术语,用来代表社会对数学和算法的痴迷,以及一种心理倾向,即如果有数学或行话与之相关,就更容易相信某事的真实性——即使值是任意的。人类有一种倾向,认为数学的介入会自动使事物变得客观,因为数学对象似乎独立于人类思维。反对这一观点的论据根植于数学的存在,它是基于人类的思想。数学作为一种构造,连同它的属性,作为人类思维的产物而存在,这使得它像其他度量一样容易受到人类主观性的影响。

训练数据‘分类的公平性’

我们将从如何训练算法开始——机器学习算法是基于程序员选择的数据集进行训练的。有了这些训练数据,他们可以识别并利用统计数据中的模式、关联和相关性。

例如,可以通过向一个算法输入数千张不同的猫和狗的图片,来训练它区分猫和狗。分类是最容易的任务;将一种算法应用于基于一个的判断呼叫,要比这复杂得多。例如,在刑事司法系统中的人工智能的情况下,特别是协助法官做出是否给予罪犯假释的决定——工程师可以输入人类过去做出的数千个决定和案例,但人工智能能够理解的只是决定的结果。它仍然不具备理解人类受如此多的变量影响的感觉,并且理性并不总是人类决策的最高层次。这是计算机科学家创造的一个问题,叫做“选择性标记”人类的偏见是通过多年的社会融合、文化积累、媒体影响等习得的。所有这些习得的偏见都会渗透到学习的算法中——就像人类一样,他们不会一开始就有偏见。然而,如果给定一个有缺陷的数据集,它们可能会以这样的方式结束。

社会反思

算法被教导根据提供给它的信息和它从这些信息中提取的模式进行预测。鉴于人类表现出所有类型的偏见,代表环境的数据集也可以学习这些偏见。从这个意义上说,算法就像镜子——它们检测到的模式反映了我们社会中存在的偏见,无论是显性的还是隐性的。

Tay, the Artificial Intelligence chatbot designed by Microsoft in 2016.

以最初的微软聊天机器人 Tay 为例。Tay 旨在模拟一个十几岁女孩与 Twitter 用户互动的推文——然而,在不到 24 小时的时间里,互联网上看到 Tay 从推文像“人类超级酷”这样的无辜事情变成了相当令人担忧的事情,例如“希特勒是对的,我讨厌犹太人”,仅仅是因为互联网上的周围推文。微软删除了这些推文,解释说 Tay 在初始测试阶段没有表现出任何问题,测试阶段有一个训练数据集,其中包含经过过滤的非攻击性推文。很明显,当 Tay 上线的时候,过滤已经过时了。这似乎表明了一种可能的偏差缓解方法,即随着算法投入使用并与现实世界接触,对输入数据进行监控和过滤。

文字嵌入

Taken from “Efficient Estimation of Word Representations in Vector Space,” 2013

单词嵌入是机器学习中使用的一种技术,其中单词被翻译成向量——这些向量构成了算法的单词字典。单词嵌入广泛应用于许多常见的应用程序中,包括翻译服务、搜索和文本自动完成建议。根据向量的角度,除了常见的关联单词和相关性之外,机器还能够理解单词的意思。例如,国王和王后这两个词与王子和公主联系在一起。对 word embedding 的理解水平可能相当复杂,这使得它成为分析 SAT 考试、工作申请、求职信等内容的一个很好的工具。

Taken from Bolukbasi et. al, 2016.

然而,单词嵌入的一个问题是,它有可能放大现有的性别关联。Bolukbasi 等人做的一项研究。波士顿大学的 al 研究了谷歌翻译服务中使用的单词嵌入。培训期很少涉及许多人类工程师,而是基于自然语言内容库进行培训,如新闻文章、新闻稿、书籍等。Bolukbasi 调查了土耳其语到英语翻译之间的关系,因为土耳其语短语使用中性代词。在翻译中,谷歌将被迫选择一个代词。这项研究发现了谷歌的性别歧视,因为它将“o bir doktor”翻译为“他是医生”,将“o bir hemsire”翻译为“她是护士”。

“感知”算法与“非感知”算法

从表面上看,解决公平问题的最简单的方法是从一开始就隐瞒造成偏见的信息;例如,在审阅简历的算法中,从概念上消除简历中的姓名和性别听起来像是可以防止性别偏见的发生。如果没有关于这个人性别的信息,那么机器不可能区别对待男性和女性,对吗?

比那更复杂。我刚刚在上面描述的叫做“无意识”的算法构建方法。去掉这个属性,前提是性别在工作能力上是一个可以忽略的因素。然而,因为算法被训练来识别统计数据中的模式,所以无论我们走到哪里,社会中根深蒂固的现有相关性、刻板印象和不平等都会出现;它们存在于现实中,所以它们也存在于我们训练算法的数据集中。机器学习将能够发现与性别相关但没有明确说明的可观察特征。例如,一个雇佣分类器可能会将权重放在一个人服兵役的时间长短上,并将其与能力或忠诚度联系起来,而在以色列,男性通常服役 3 年,而女性服役 2 年。现在你有了一个与性别密切相关的属性,但是去掉了必要的信息,你就去掉了做出客观决定所必需的背景。正是因为这个原因,一个不知道的算法有时会比完全知道的算法更有偏差。

另一方面," aware "方法确实使用了性别信息,并考虑到了女性服役时间较短的趋势。缓解这些关于准确性和公平性的问题通常需要权衡——它们不可能完美地存在于同一个领域。无意识方法是一个更公平的过程,它在训练阶段不考虑敏感属性。然而,这可能会导致有偏见的结果。aware 方法使用了一个更不公平的过程——它考虑了敏感的分类和信息,但最终可以得到一个更客观的结果。

反馈循环/自我延续

此外,机器学习容易陷入反馈循环,最终可能导致偏见永久化。例如,当基于机器的预测用于犯罪风险评估时,黑人比白人更有可能被评为高风险。这仅仅是由于黑人和白人之间犯罪记录的差异,这不幸地反映了人类在种族上的偏见。因为机器已经将另一个黑人标记为高风险,这种新的数据收集方式进一步倾向于对黑人被告的偏见。在这种情况下,该系统不仅反映了从人类偏见中学习到的模式,还加强了自身的学习。

代孕目标

除了训练数据中的问题之外,偏差还可以通过许多方式进入算法过程。我们的下一个探索是关于传播算法的度量的构造有效性——你试图度量的实际上是度量你需要的吗?而当它没有精确测量时,会有什么后果?

社交媒体算法不再根据时间顺序显示帖子,而是通过机器学习算法过滤你曾经参与的一切。目标是衡量参与度——根据你之前的兴趣,它会向你展示更多它认为你可能会参与的内容。一条内容的参与度越高,该算法就越有可能将这条内容发布到其他新闻源上——在完美的世界中,这是有意义的。受欢迎的帖子理论上应该是更好的内容——否则,它们为什么会表现得这么好?

不幸的是,人类并不像我们需要的那样聪明,以使这个算法按照它应该的方式工作。持续表现最佳的内容可能由假新闻、名人八卦、政治诽谤和许多其他对改善世界毫无用处的东西组成。但是因为这些算法不能理解这一点,这些回音室就形成了,并且继续下去。

招聘过程中的许多决策也交给了人工智能,如简历筛选、工作能力分析和比较。招聘是一个非常及时的过程,对每个人来说成本都很高——如果出错的话成本会更高。全国大学和雇主协会估计,一个 0-500 人的中型公司雇佣一名员工的成本约为 7600 美元。通过让算法来完成繁重的工作,公司可以将大量资源和资金投入到其他地方,并有望最终做出成功的选择。

然而,替代目标在这一过程中成为一个问题,因为许多理想的工作特征很难操作化。如今,一些行业术语包括“创造力”、“沟通”和“生产力”,所有这些都难以衡量。衡量创造力最常见的测试是替代用途测试,在这种测试中,人们想出普通物品的非常规用途。基于这一衡量标准,一名员工可能会被分配一个“创造力倾向”分数,然后该分数将成为一个培训数据集的一部分,该数据集将筛选具有相同特质的未来员工。问题是替代用途测试只测试创造力的一个方面——发散思维。它忽略了创造力的所有其他方面,其中一些可能对公司文化非常有价值。你最终得到的是一群创意人员,他们都以同样的方式发挥创造力——讽刺的是,这很无聊。

尽管我们浪漫地认为机器学习算法有可能做出重要决策,但事实是,它们无法理解客观、真实、中立或平等。当人类的生命受到威胁时,所有这些特征都是重要的考虑因素。我们将何去何从?

结论

尽管我们已经阐明了人工智能模型可能带来的许多问题,但公司可能从以人为中心的决策方法转变的原因有很多。如前所述,尽管存在所有缺陷,人工智能仍然比人类更加客观。正因为如此,我们看到人工智能在基于决策和预测的任务中的持续使用。但偏差较小不等于无偏——当算法做出有偏差的决策时会发生什么?我们如何决定谁应该承担责任?这并不是说我们可以惩罚一个做出有偏见预测的算法(我们会怎么做,删除它?).

可以说,跟踪问责制的最佳方式是准确详细地记录人工智能决策的过程。也就是说,做出决策的过程和数据需要透明,这样,如果出现任何问题,一些第三方审计员能够追溯导致结果的步骤,以找到问题的根源。已经制定了法案和法律来保持这方面做法的透明度。

当然,这种方法本身并不是没有问题。审计并不总是适用于以大数据为特征的人工智能,大数据是极其庞大的数据集,也不总是适用于从事深度学习的系统,这些系统具有大型数据集和复杂的网络。算法的自主性和透明性似乎是一种反比关系——随着这些算法在“学习”和调整方面变得越来越好,理解偏差发生在哪里变得越来越困难。虽然审计对于简单的模型是有效的,但是我们可能需要一种不同的方法来减轻复杂算法的偏差。

另一种减轻偏见的方法是针对人工智能的训练者和创造者。通过让他们意识到自己的偏见,我们有更好的机会将它排除在算法之外。值得注意的是,人类的偏见是存在的,而且很难减轻,因为这是一种进化特征,但我们越来越意识到我们自己的大脑容易受到偏见的影响。总之,算法可以成为减轻制度偏见的一部分——如果我们保持教育、意识、聪明和选择性的话。

“最好的办法是不断努力让文化变得更好,并在文化改善的同时不断更新人工智能来跟踪文化。”乔安娜·布赖森

参考文献:

阿巴特汤姆。、克拉科夫斯基、玛丽娜。“人和机器哪个更公平?”斯坦福工程,2018 年 1 月 31 日。

亚伦·博恩施泰因:“算法正在建立种族主义的基础设施吗?”鹦鹉螺号,2017 年 12 月 21 日。

很聪明,彼得。“在 Tay AI 变成纳粹后,微软终止了她的聊天机器人。” Ars Technica,2016 年 3 月 24 日。

科特兰瑞秋。“偏见侦探:研究人员努力使算法公平。”施普林格自然,麦克米伦出版社,2018 年 6 月 21 日。

想要更少偏见的决定?用算法。”哈佛商业评论,2018 年 7 月 26 日。

舍普,提门。“什么是 Mathwashing?”数学清洗,2018。

夏皮罗,斯图尔特。“数学的客观性。” Synthese ,第 156 卷,第 2 期,2007 年,第 337–381 页。

《男人对于电脑程序员就像女人对于家庭主妇?去偏置单词嵌入。”微软研究院新英格兰,2016。

约纳姑娘。“算法公平性讨论的温和介绍。”走向数据科学,中等。2017 年 105 日。

感谢阅读!

数据科学的历史

原文:https://towardsdatascience.com/the-history-of-data-science-dfe789499d50?source=collection_archive---------5-----------------------

本文中的所有观点都是个人观点,并不属于我现在(或过去)所代表的任何组织的

每当我遇到流行的东西,我通常会回顾历史,看看它是如何演变的。通过回顾历史,它帮助我揭开趋势的神秘面纱,并进行逻辑思考。我对数据科学做了同样的研究,以了解历史上哪些事件直接/间接影响了它在当今商业世界的普及。

Photo by Daniel Tong on Unsplash

我试图总结历史进程中的不同事件,以及它们如何直接/间接影响我们今天拥有的数据科学。

下面的图片提供了我将详细阐述的事件的时间表。

Image by Author | Created in PowerPoint

大体上来说,有来自两个思想流派的人——一方是工业、商业和公司,另一方是工程师、计算机爱好者和学术界。

1955 年,在第二次工业革命的中期,泰勒制或科学管理在工业中被广泛采用。通过他的理论,Taylor 证明了如果对流程工作流进行分析,并从流程中涉及的所有变量中收集数据,我们可以随着时间的推移进行改进,以实现经济效益。大约在同一时间,计算机和人工智能在第二次世界大战后被大量研究,因为它们在减少战争中发挥了至关重要的作用;感谢艾伦·图灵和他的电脑破解了英格玛。

1965 年,惠普开发了世界上第一台台式电脑,在企业方面,彼得·德鲁克引入了“知识管理”的概念。德鲁克的理论提到,以思考为生的人——会计师、顾问和科学家是任何组织最重要的资源。

75s 是学术界认识到数据分析、探索和可视化的重要性的时候,这要归功于统计学家 John Tukey 和他的书《探索性数据分析》。而在工业方面,丰田生产系统采用了建立在泰勒主义原则基础上的改善原则,产生了持续的质量改进,并在整个制造领域获得了很大的影响力。

在过去十年个人电脑突飞猛进之后,操作系统于 1985 年首次亮相。这也是公司人员第一次开始使用像 Excel 和 Word 这样的软件。在这十年中,一些传统企业开始数字化。

互联网诞生于 1995 年,它是影响我们今天的数据科学的关键发明。互联网是这样一个游戏规则的改变者,以至于企业和计算机人员开始一起工作——比以往任何时候都更加紧密。

新千年伊始,网络公司开始在互联网上激增。从花店到餐馆,几乎每一种商业类型都有在线服务,这就像一场淘金热。这些公司中的许多也很快上市,估值飙升,导致网络泡沫迅速破裂。

到 2005 年,随着互联网的十年,情况已经稳定下来,像亚马逊和网飞这样在网络恐慌中幸存下来的公司开始专注于扩大他们的用户群。谷歌和脸书在这十年间也进入了这个市场。由于所有这些企业都是完全数字化的,他们也能够收集数据并调整他们的服务,以“完全”满足客户的需求。杰夫·贝索斯称之为“顾客痴迷”。

在接下来的五年里,随着智能手机的引入,“客户至上”的概念只会越来越强烈。企业能够无缝跟踪特定服务的目标客户。台式机让每家每户都有了一个数字设备,而智能手机则让通过数字足迹追踪每个人成为可能。这进一步为优步、Airbnb、Deliveroo 等按需公司铺平了道路。在“数字”市场中满足消费者的需求。这些公司还通过智能手机应用服务收集了大量数据,以更好地了解客户,并为他/她提供最好的服务。

到 2015 年,数字设备产生了如此多的数据,以至于需要进行大规模数据分析。到目前为止,机器学习算法已经有了很大的发展,GPU 处理使人工智能变得可行。

因此,我们今天拥有的数据科学不是凭空产生的,而是像任何其他持久的事物一样——进化而来的。正如您可能观察到的,数据科学或“从数据中学习”并不是什么“新”东西,它已经存在了几十年,只是形式不同而已。弗里德里希·泰勒的科学管理理论为这一想法埋下了伏笔。如今,当公司追踪他们的客户或员工以改善他们的服务时,一些人将此归因于“数字泰勒主义”。阅读下面的文章,进一步了解—

** [## 数字泰勒主义

弗雷德里克·泰勒是 20 世纪初最有影响力的管理大师。他的“科学原理…

www.economist.com](https://www.economist.com/business/2015/09/10/digital-taylorism)

总之,几十年来,只有术语发生了变化(或将发生变化),但通过数据进行改进的方法将会盛行。因此,现在不是担心数据科学接管的时候,而是拥抱它的时候,因为它将触及我们生活的方方面面,并将影响我们未来做出的每个决定。**

原载于 2018 年 3 月 31 日【http://ramthilakceo.com】**

超参数调谐指南

原文:https://towardsdatascience.com/the-hitchhikers-guide-to-hyperparameter-tuning-cd0122042595?source=collection_archive---------5-----------------------

自从我们的第一个深度学习项目出现以来,一年多已经过去了,我们必须继续前进,尽我们所能提供最好的模型。

这样做需要大量的研究,尝试不同的模式,从简单的LSTMCNN ,到更高级的注意力MDN多任务学习

即使我们尝试的最简单的模型也有许多超参数,就模型的准确性而言,调整这些参数可能比我们最终使用的实际架构更重要。

尽管在超参数调整领域有很多活跃的研究(见 123 ),但实现这一调整过程却一直没有引起人们的注意。

如果你四处去问人们他们是如何调优他们的模型的,他们最有可能的回答将是“只要写一个脚本来帮你调优就行了”。嗯,说起来容易做起来难…

显然,在实现这样一个脚本时,您应该记住一些事情。

这里,在 Taboola,我们实现了一个超参数调优脚本。让我与你分享我们一路走来学到的东西…

让我们从简单的开始

有时使用 scikit-learn 进行超参数调优可能就足够了——至少对于个人项目是如此。

对于长期项目,当您需要跟踪您已经执行的实验,并且您尝试的不同架构的种类不断增加时,这可能是不够的。

梗概

脚本的第一个版本很简单,但是包含了我们的大部分需求。

这些要求是:

易于运行

您将多次运行这个脚本。因此,应该尽可能容易地指定要运行的实验。我们最终得到了下面的 JSON 格式:

{ "architecture": "lstm-attention", "date-range": [["2017–01–01", "2017–04–01"]], "parameters": { "num_of_attentions": [1, 2, 3], "attention_hidden_layer_size": [32, 128, 256], "attention_regularization": [0.1, 0.01, 0.001] }}
  • 架构:假设您的代码支持多种类型,您想要调优的架构
  • 日期范围:元组列表,每个元组定义将用于训练模型的数据的时间范围。每个实验将在每个日期范围内执行一次
  • 参数:每个超参数的尝试值。我们最初的实现只支持有限的一组值(网格搜索)

该脚本从这个 JSON 中随机生成实验。

我们创建了一个 Jenkins 作业,它在我们的一台配有 GPU 的机器上运行脚本,从而使我们不再需要使用 SSH。

用指标丰富实验

我们的培训流程会生成许多指标,如 MSE、损失和培训时间。你可以选择你想要的,它们会显示在结果中。

将结果保存到云中

结果以 CSV 文件的形式保存在 Google 云存储中,这使我们能够从任何机器上启动脚本,并从我们的笔记本电脑上观看结果。

结果是不断上传的,所以我们不必等到所有的实验完成后才开始检查结果。

模型本身也被保存。

那么到目前为止我们学到了什么?

这第一个实现是最重要的一个。

简单来说,脚本没有为您做任何聪明的事情。它不知道要执行哪些实验——每次运行都必须手动定义 JSON 输入。

在多次运行脚本后,您开始理解哪些值比其他值更有效。这是我们从剧本中得到的最重要的东西之一——对我们的模型有了更深入的理解。

第一次使用这个脚本给我们带来了很大的改进 MSE 提高了 10%以上。

我们确定这是真的吗?

当你运行数百个实验时,最好的实验通常只有微不足道的差异。你怎么知道它有统计学意义?

假设你有足够的数据,解决这个问题的一个方法是在几个日期范围内训练同一个模型。如果一个模型在所有的日期范围内都比其他的好,你可以更有信心它是真实的。

假设今天是六月,你运行脚本。以下是脚本将选择的日期范围:

请注意,如果您在不同的月份运行该脚本,它会选择一组新的日期范围。这一点很重要,因为否则你可能会因为大量的超参数调整而意外地使你的模型过拟合。

我没时间做这个

谁有时间将每个实验运行三次?你可以得到可靠的结果,这很好,但这意味着你最终将运行更少的不同实验。

该脚本的下一版本通过支持新的操作模式解决了这个问题:

  • 仅使用一个日期范围
  • 日期范围仅包含一个月的数据
  • 训练仅限于较少的时期

但是,如果我们使用更多的数据和时期,这些结果与我们会得到的结果相关吗?

为了回答这个问题,我们进行了一些实验,每个实验都使用了从一周到三个月不等的不同数量的数据。我们发现一个月在 MSE 和训练时间之间有一个很好的权衡。

(您是否注意到我们使用了超参数调整脚本来调整超参数脚本?多酷啊。)

为了研究什么是正确的历元数,我们分析了 TensorBoard 上的 MSE。

图中的每一个图都代表一个根据不同数量的数据训练的不同模型。经过 20 个时期后,所有的模型几乎都收敛了,所以就此打住是安全的。

来吧脚本,为我做的工作!

此时,我们决定脚本应该为您选择超参数值。
我们从学习率相关的超参数开始:初始学习率、衰减因子、早期停止无改善的时期数等。

为什么是学习率?

  • 它显著影响训练时间。我们应该首先确定一个好的学习率,包括准确性和训练时间,然后再调整其他的
  • 有人建议它以一种比其他超参数更复杂的方式控制模型的有效容量,因此最好从这一点开始。

脚本的新模式使用对我们的模型合理的硬编码值范围。

然后是下一个要求:

下一个版本的脚本就是这么做的:提供一个架构名称,它会自动为您生成实验。您不需要指定任何超参数值。

让我们随机选择

尽管在的某些情况下比随机搜索差,但是网格搜索更容易分析:每个值都被多次实验使用,所以很容易发现趋势。

既然我们已经对什么值更有效有了直觉,是时候实施随机搜索了。这样做有助于脚本找到更好的超参数。

一些最后的想法

在任何机器学习项目的研究阶段,超参数调优都可以手动完成。然而,当您想要将项目提升到下一个级别时,自动化过程是非常有效的。在这篇文章中,我描述了我们在自动化过程中实现的一些小细节。有些可能对你有用,有些可能没用。如果你发现其他令人兴奋的事情对你有帮助,请在评论中留言。

最初由我在 Taboola 工程博客 发表。

因果推理的圣杯

原文:https://towardsdatascience.com/the-holy-grail-of-econometrics-3a45a2295ce5?source=collection_archive---------6-----------------------

什么是结构估计?

介绍

结构估计,应用计量经济学的圣杯,这两个词让最勇敢的灵魂感到恐惧。作为一名博士生搞定它,你就走上了通往顶级终身教授职位的道路。

那么神奇的是什么呢?具体来说,它如何胜过通常的因果推断技术,如 A/B 检验、匹配、差异中的差异、工具变量、回归不连续性、固定/随机效应估计等。?

简而言之,答案是外部有效性。

Or pure magic! Source: Walt Disney Giphy

(尤指为开车者设计的) 公路交通图

在这篇文章中,我将告诉你所有关于结构估计的内容。这部分的讨论是基于 Hamish Low 和 Costas Meghir 在计量经济学中对结构模型的使用。

然后,我将使用丽贝卡·戴蒙德和蒂莫西·麦奎德的 NBER 工作论文来说明结构估计的力量: 谁想要他们后院的经济适用房

您将看到丽贝卡和蒂莫西如何能够仅使用租金控制时代的数据,完美地预测剑桥解除租金控制后的房价上涨。纯魔法!

这两篇论文加起来有 91 页。我会把它们改写成轻松的 7 分钟读物给你。

什么是结构估计?

形式上,

完全指定的结构模型对经济参与者的目标及其经济环境和信息集做出明确的假设,并指定在模型中做出哪些选择。我们称这些模型为完全指定的,因为它们允许作为当前信息集的函数的个体优化问题的完整解决方案。

这是一个很大的难题。让我们来看一个例子。

谁想要自己后院的经济适用房?

经济行为者的目标

在这篇论文中,人们在他们的预算内选择最好的地方。形式上,代理人 I 根据他的预算 y 最大化他的效用 U:

其中:

  • U()是代理人 I 的效用函数。函数形式将在以后详细说明;
  • y 是代理人 I 的收入
  • 代理 I 正在做出的选择:他可以选择在消费品(c)、房屋(y-c)、房屋类型和邻近地区(X,Y,xi)上花费多少,以及离最近的低收入住房项目(R)的远近。
  • 经济环境由消费者价格(p)、代理商收入(y)和可用住房存量决定。
  • 信息集:代理人 I 观察每栋房子(X,Y,xi)的住房和邻里特征;有些是计量经济学家观察到的(X,Y),有些则不是(xi)

个体最优解

代理 I 的最优解由一组一阶条件表征:

这组一阶条件将代理人 I 的某些住房特征的边际效用(R,X)等同于他为这些特征支付的边际意愿(R,X)。

如何估计结构模型?

此时,估计结构模型似乎是不可能的。毕竟,跟踪所有模型参数已经够难的了!

Estimate what?! Source: Giphy

过去几代计量经济学家正是这么做的——估计所有模型参数,而现代经济学家采取了一种更简化的方法。我们只估计模型的充分统计量。

1。我们再来看看一阶条件的集合:

2。让我们假设效用函数采用以下形式:

其中:

  • RCI 是租金控制强度;
  • HH 代表家庭。

我们如何知道我们的效用函数假设是否有意义?只有数据能告诉我们,我们很快就会讲到。

3。重写左侧的第一个订单条件:

4。使用数据估计一阶条件的右侧:

5。让我们对每个家庭的效用函数参数 alpha 进行回溯:

6.该模型预测,剑桥取消租金控制后,房价将上涨这么多:

7.根据数据,房价上涨了这么多:

8。注意这两组数字是多么的相似!

外部有效性,我的朋友:)

Source: Giphy

结构评估的力量

外部效度

在上面的例子中,丽贝卡和蒂莫西几乎完美地预测了剑桥解除房租管制后的房价上涨。使用传统方法很难做到这一点。例如,很难使用任何匹配方法来预测房价,因为租金控制单元与其他单元确实不同。

与自然实验的协同作用

诚然,结构模型确实很复杂,涉及许多假设。为了验证该模式,我们通常将它与自然实验配对,以显示我们的模型产生类似的预测。

反事实

那么为什么不能单纯依靠自然实验呢?

好吧,回想一下,自然实验只得到一个点估计。它告诉我们,在一个非常特定的设定下,治疗效果的大小是多少。

但是假设我们想在一套完全不同的环境下获得治疗效果呢?简单地从一个环境中提取结果,然后不加区别地应用于其他环境,这将是错误的。

我们能做的最好的事情,就是用我们的结构模型来模拟结果。例如,如果我们在富裕社区建设低收入项目,商品房价格会发生什么变化?我们无法回答这个问题,因为大多数现有项目都建在离富人区很远很远的地方。

结构评估的成本:复杂性

结构估计的黑暗面是其纯粹的复杂性。你需要了解你的系统的来龙去脉,并用简洁的数学描述它。没有固定的食谱可以遵循,也没有简单的函数调用——你美丽的头脑会从头开始设计。这就是为什么结构评估如此困难,但却是值得的。

是否值得取决于你自己的需求:

  • 如果你只对在非常稳定的环境中生成预测感兴趣,那么传统的机器学习工具会更合适。
  • 但是如果你对在完全不同的环境下获得治疗效果感兴趣,那么结构估计可能正是你所需要的。

附:你可能喜欢的文章

如果你对因果推理很感兴趣,这里有几篇我写的文章:

赌场总是赢家:蒙特卡洛模拟

原文:https://towardsdatascience.com/the-house-always-wins-monte-carlo-simulation-eb82787da2a3?source=collection_archive---------0-----------------------

赌场是怎么挣钱的?诀窍很简单——你玩的时间足够长,输钱的概率就会增加。让我们用一个简单的蒙特卡罗模拟来看看这是如何工作的。

蒙特卡洛模拟是一种用于理解金融、项目管理、成本和其他预测模型中风险和不确定性影响的技术。蒙特卡洛模拟器有助于人们将大多数或所有的潜在结果可视化,从而对决策的风险有更好的了解。

考虑一个假想的游戏,其中我们的玩家“杰克”掷出一个假想的骰子,得到 1 比 100 的结果。如果杰克掷出 1-51 之间的任何数字,赌场赢,但是如果掷出的数字是 52-100,杰克赢。够简单吗?

在模拟结果之前,让我们计算一下房子的边缘。房子边缘显示了赌场在赢得赌注方面的优势。这是赌场从玩家下注中获得的平均利润。

让我们假设杰克在这个游戏中下注 1 美元。

杰克赢的概率= 49/100

赌场获胜的概率= 51/100

玩家的预期利润= 1 *(49/100)-1 *(51/100)=-0.02 =-2%

所以,我们假想游戏中的房子边缘是 2%。作为对比,欧洲轮盘最低的房子边缘是 2.7%。简而言之,我们在想象的游戏中比在轮盘赌中有更大的胜算。

现在,让我们在 Python 中模拟不同的场景,以可视化玩家持续下注时的不同结果。

1。导入所需的库

#Import libraries
import random
import matplotlib.pyplot as plt

2。我们需要一个骰子模拟器,它能以均匀的概率分布抛出一个从 1 到 100 的值。让我们用 Python 创建一个函数,如果玩家赢了,它返回“真”,如果赌场赢了,它返回“假”。

#Create function for simulating die roll 
#The die can take values from 1 to 100\. If the number is between 1 #and 51, the house wins. 
#If the number is between 52 and 100, the player wins.def rolldice():

    dice = random.randint(1,100)

    if dice <=51:
        return False
    elif dice >51 & dice <=100:
        return True

3。创建一个模拟赌注的函数。我们需要为函数提供三个参数:

I .总资金:玩家开始的资金(10,000 美元)

二。下注金额:玩家在每场游戏中下注的金额(100 美元)

三。总游戏次数:玩家玩游戏的次数(该值因创建不同的场景而异)

#Define a function for the play which takes 3 arguments :
#1\. total_funds = total money in hand the player is starting with
#2\. wager_amount = the betting amount each time the player plays
#3\. total_plays = the number of times the player bets on this gamedef play(total_funds, wager_amount, total_plays):

    #Create empty lists for :
    # 1.Play_number and 
    # 2.Funds available
    # 3.Final Fund
    Play_num = []
    Funds = []#Start with play number 1
    play = 1
#If number of plays is less than the max number of plays we have set
    while play < total_plays:
        #If we win
        if rolldice():
            #Add the money to our funds
            total_funds = total_funds + wager_amount
            #Append the play number
            Play_num.append(play)
            #Append the new fund amount
            Funds.append(total_funds)
        #If the house wins
        else:
            #Add the money to our funds
            total_funds = total_funds - wager_amount 
            #Append the play number
            Play_num.append(play)
            #Append the new fund amount
            Funds.append(total_funds)

        #Increase the play number by 1
        play = play + 1
            #Line plot of funds over time
    plt.plot(Play_num,Funds)
    Final_funds.append(Funds[-1])
    return(Final_funds)

4。最后运行一个循环调用以上函数,模拟游戏多种场景。要对我们游戏的最终结果有信心,每个场景都会模拟 100 次。

#Call the function to simulate the plays and calculate the remaining #funds of the player after all the bets
#Intialize the scenario number to 1
x=1
#Create a list for calculating final funds
Final_funds= []while x<=100:
    **ending_fund = play(10000,100,5)**
    x=x+1#Plot the line plot of "Account Value" vs "The number of plays"
plt.ylabel('Player Money in $')
plt.xlabel('Number of bets')
plt.show()#Print the money the player ends with
print("The player starts the game with $10,000 and ends with $" + str(sum(ending_fund)/len(ending_fund)))

5。让我们用下面的图表来想象 7 种不同的场景。在每个场景中,杰克下注 n 次。

为了生成多个场景,使用上方的代码块(#4),但是只修改突出显示的代码(如下所示)来调整玩家下注的数量。****

ending_fund = play(10000,100,**5**)

x 轴:杰克下注的次数

y 轴:每次下注后杰克的账户余额

每张图显示了杰克继续玩游戏时的账户余额。此外,为了找出 Jack 的期末余额,我们将对 100 个不同模拟的余额进行平均。

这个实验的目的是回答一个简单的问题——“如果一个人以 10,000 美元开始,玩这个游戏 n 次(每局下注 100 美元),平均来说,玩家最后会有多少钱?”

场景 1 - >投注数量:5

场景 2 - >投注数量:10

场景 3 - >投注数量:50

场景 4 - >投注数量:100

场景 5 - >投注数量:500

场景 6 ->投注数量:1000

场景 7 - >投注数量:10000

从模拟实验中,我们可以观察到,如果杰克下注较少,他就有更大的机会盈利(或最大限度地减少损失)。

还可以观察到,在每个场景中损失的金额大约是下注金额的 2%(与房子边缘相同)**。例如,在我们的最后一个场景中,杰克下了 10,000 次注,每次 100 美元。因此,我们预计杰克将损失大约(10,000)(0.02100),相当于 20,000 美元。

此外,在最后一个场景中,当他玩 10,000 次时,资金变成了负数,即杰克比他开始时输掉了更多的钱(在现实生活中,这意味着杰克输掉了所有的钱)。

总之,房子永远是赢家!****

资源:

1.https://pythonprogramming.net/monte-carlo-simulator-python/

2.http://math.info/Misc/House_Edge/

LinkedIn 上连接。

请找到下面嵌入的 Python 笔记本:

人类连接体和神经网络

原文:https://towardsdatascience.com/the-human-connectome-and-anns-62c0b6c041d0?source=collection_archive---------9-----------------------

Photo by Donald Giannatti on Unsplash

最近,我有兴趣了解更多的成像模式,因为我可能很快就会进入这个研究领域。医学成像社区已经取得了许多进步——例如,在 Kaggle 的合作和 NIH 向公众发布图像

很快,我们将看到机器学习社区在日常医疗保健环境中的影响越来越大(当然,也有自己的一系列挑战)。

鉴于这些进展,我想强调一下您可能会感兴趣的医疗保健成像领域的一个子集,以及更广泛的机器学习社区如何从该领域受益。

连接体

如果你还没有见过这样的例子,那就尽情享受这个非常酷的连接体吧。

Fig. 1: From this paper

这种成像技术让我们能够了解大脑的结构。

当你看整个东西的时候,你可以看到大脑的结构。这些看起来不同的纤维线是主节点之间的,主节点是白色的大圆圈。

这些节点是大脑中感兴趣的区域或共同的界标。它们之间的连线将节点连接在一起。颜色代表不同程度的连通性

连接体的构建方式实际上是通过观察大脑内水分子的扩散速率。通常,这种类型的测量在大脑中取一个大小为 X 的盒子,然后我们看一看分子如何在一段时间内在这个盒子中扩散。

然后,这个快照将由一个椭圆体概括,该椭圆体带有那个盒子的平均扩散方向。在下图中,你会发现不同的形状可以定义大脑一小块区域的平均扩散率。

Fig. 2: From this paper

当这些在整个大脑中聚集时,输出看起来像这样:

Fig. 3: From this paper

很酷,对吧?

不同的颜色可以代表大脑特定部分或节点之间的联系。椭圆体的不同方向使我们能够直观地理解扩散是如何在整个大脑中发生的。

您可以跟踪从图像左侧到图像中间再到右侧的轨迹。你可以交易左下角的小曲线。或者甚至在中间与大斑点的固定连接。

然后,它们进一步融合在一起,形成了扩散在大脑中所走的高速公路或共同道路。这些显示了大脑的整体结构。

Fig. 4: From this paper

这些可以被进一步分析,以给我们一些关于大脑如何随时间变化的科学见解,或者找出哪些联系对于特定的神经相关疾病(如帕金森病)是重要的。

我将在另一篇文章中更深入地探讨这个问题,但现在让我们先讨论机器学习。

与神经网络的关系

现在你对连接体的样子有了一个大致的概念,我们可以深入研究我在几篇论文中看到的一种分析。

如前所述,大脑中的主要节点通常被称为感兴趣区域(ROI),这些是大脑中有许多连接的部分,可能充当正在传递的信息的公共枢纽。这些节点在下图中显示为圆圈。

主节点之间是边,或下图中的线。这些是信息所依赖的节点之间的连接。

如您所见,有多种方法可以描述节点和边的网络。本文使用了一些独特的术语,如模块化和聚类系数等。然而,让我们不要担心那个。

Fig. 5: From this paper

我想展示的是,有一些有趣的特征定义了这些 DTI 的大脑快照图像。比如我们拿紫色的节点来描述一下。

来自报纸:

介数中心性(BC)表示特定节点对于网络通信的重要性,并且由网络中任何两个节点之间必须经过该特定节点的最短路径的数量来概念化。网络中的紫色节点具有很高的介数中心性,因为许多最短路径必须流经它。

这个概念非常容易理解,并且在确定特定的大脑是否退化时,可能会提供很多预测能力。这是定义网络结构和完整性的众多网络特征之一。

然而,如果我们看看神经网络的更广泛的背景,也许我们可以得出一些类比。

我的意思是——如果有不同的神经网络拓扑结构,我们可以用来预测患者患癌症的可能性,或者杂货店实现下个月销售目标的可能性。

这些拓扑结构由人工神经元组成,这些神经元之间可以有强连接和弱连接。除了使我们选择的损失函数最小化的权重之外,我们能想出更好地描述它们的方法吗?

这些对网络的描述会让我们更深入地了解网络中的特征是如何相互关联的吗?随着时间的推移,网络如何随着训练数据的增加或减少而变化?或者甚至允许我们在 3D 空间中可视化连接,以理解这些“黑色盒子”。

这个清单可以一直列下去。

也许这些想法已经存在了,我还没有碰到它们或者看到它们被有意义地使用。请在评论中告诉我。

感谢阅读。

人类工程

原文:https://towardsdatascience.com/the-human-project-21207dda51cf?source=collection_archive---------8-----------------------

印第安纳·琼斯寻回“失落的方舟”后,它被军方情报人员拿走了,他们坚持说它正被“顶尖人物”研究着相反,约柜被锁在一个木箱里,然后被推到一个仓库的后面,在那里,它被原封不动地放在数百万个装满秘密的木箱中。

可悲的是,今天许多社会科学论文也注定了类似的命运。

“当你决定你想在心理学、神经科学或社会学中研究什么时——你找到 300 个人,你把数据带回实验室,你写一篇关于它的论文……然后你把它交给 NIH,在那里没有人会再看它,”纽约大学(NYU)决策研究学院(ISDM)主任保罗·格里姆彻博士说。

但是,如果有一种方法可以撬开所有的板条箱,并以一种同时揭示一切的方式进行研究,并且在这样做的过程中,发现一些以前看不到的东西,会怎么样呢?我们能找回失落的方舟吗?

今年秋天,格里姆彻博士、卡夫利基金会和 ISDM 将开始为人类项目招募人员——这是一项为期 20 年、涉及 10,000 人的研究,致力于创建一个包含人类经历各个方面的庞大数据库。这项研究的规模比以往任何一次都要大。如果它成功了,就有可能永远改变科学研究。

人类项目是一架远离太空、面向人类的望远镜。它是对人类健康和行为的完整理解的探索。这是先进技术(如生物样本分析、地理信息系统和智能手机)和纵向调查研究最高学术标准的结合。

人类项目打算回答的主要问题是关于健康的。今天的研究人员明白,哮喘、糖尿病、高血压、肥胖症或抑郁症的原因不仅仅是一个。有成千上万个相互作用的生物、文化和环境因素结合在一起,导致一个人成为这样或那样的人。人类项目打算一次检查所有这些因素,并认识到这些疾病的治疗可能是行为、社会和医学干预的结合。

“我们知道的足够多,知道我们需要更多的数据来更好地了解,”Glimcher 博士说。

一旦参与者被随机招募参加研究,他们必须通过多次信息会议,以保证他们被适当告知并能够给予完全同意。然后,他们完成一项详尽的体检。什么都要检测——血液、尿液、听力、肺活量、智商。每隔一段时间,他们会再次接受测试。最后一部分是一个简单的智能手机应用程序。这个应用程序监控日常生活的某些方面,例如一个人在哪里,或者一个人走了多少步(顺便说一下,这种数据已经由电话公司存储并出售给其他公司)。参与者还使用该应用程序每天回答简单的生活方式问题,这意味着参与者每周只有几分钟的时间。

我们的目标不仅是让招聘过程尽可能简单、轻松,而且要安全。格里姆彻博士和人类项目团队的其他成员知道,如果数据没有安全存储,他们就有可能出现丑闻,甚至更糟:未来的政策会限制这种类型的科学研究。

为了确保数据的安全性,科学家只有在经过广泛的批准过程后才能访问这些数据。他们必须亲自前往数据中心,通过一系列身份检查,并且全程受到监控。一次只能访问部分信息,因此只能获得回答特定问题所需的抽象级别的数据。所有的数据都不能带出中心。

ISDM 的首席科学家汉娜·拜尔博士说:“我们有目的地让研究人员在使用数据时感到痛苦,但这是人们首先信任你的数据所必须付出的代价。”。

格里姆彻博士受到启发,以类似斯隆数字巡天获取天文数据的方式来获取数据:“20 年前,天文学家会在望远镜上记录时间,并四处寻找类星体,直到他们找到一个类星体——也就是说,直到詹姆斯·古恩博士认为这完全是错误的方法。”这位普林斯顿大学的天体物理学教授开创了斯隆数字巡天计划,该计划使用阿帕奇角天文台的广角光学望远镜缓慢地扫视天空,并一次性捕捉尽可能多的信息。其结果是一个庞大、全面的数据库,其中记录了超过 5 亿个对象的观察结果。

天文学家可以很容易地回顾数字斯隆巡天,并说,“这是改变游戏的一个。”回顾人类基因组计划,生物学家也可以说同样的话,人类基因组计划第一次为成千上万的生物体创建了一个基因信息数据库。

有一天,社会科学家可能会对人类工程说同样的话。

人类工程中最有价值的信息可能是无法预测的。在 1948 年弗雷明汉研究启动之前,人们普遍认为吸烟不仅完全无害,甚至是健康的。然后,国家心脏、肺和血液研究所从马萨诸塞州弗雷明汉招募了数千名参与者,参加一项涉及多年常规体检和访谈的研究。事实上,这么多年来,弗雷明汉研究一直持续到今天——有了第三代参与者。

格里姆彻博士说:“弗雷明汉的几年后,研究人员惊恐地发现,香烟正在杀死每个人。“他们绝不会猜到这一点。”

也许,在人类工程进行多年后,我们还会发现一些将彻底改变我们对人类健康和行为的理解的东西。也许我们最终会找到失落的方舟。

演员评论家背后的想法以及 A2C 和 A3C 如何改进他们

原文:https://towardsdatascience.com/the-idea-behind-actor-critics-and-how-a2c-and-a3c-improve-them-6dd7dfd0acb8?source=collection_archive---------11-----------------------

是时候进行一些强化学习了。这一次我们的主要话题是行动者批评算法,它是几乎所有现代 RL 方法的基础,从最近策略优化到 A3C。因此,要理解所有这些新技术,你应该很好地理解什么是演员-评论家以及他们是如何工作的。

但是不要着急。让我们回顾一下以前的知识。您可能知道,有两种主要的 RL 方法:

  • 基于值:他们试图找到或接近最优的函数,它是一个动作和一个值之间的映射。值越高,动作越好。最著名的算法是 Q 学习和它的所有改进,如深度 Q 网络,双决斗 Q 网络等
  • 基于策略:基于策略的算法,如 Policy Gradients 和 REINFORCE,试图直接找到最优策略,而不需要 Q 值作为中间人。

每种方法都有其优点。例如,基于策略的方法更适合连续和随机的环境,具有更快的收敛速度,而基于值的方法更有效和稳定。查看我以前关于强化学习的帖子了解更多细节。

当这两个算法家族在科学界建立起来时,下一个明显的步骤是…试图将它们融合。这就是演员评论家的诞生。演员批评家的目标是利用基于价值和基于政策的所有好东西,同时消除它们所有的缺点。他们是怎么做到的?

主要思想是将模型一分为二:一个用于基于状态计算动作,另一个用于产生动作的 Q 值。

参与者将状态作为输入,输出最佳动作。它通过学习最优策略(基于策略)来控制代理的行为。另一方面,评论家通过计算价值函数(基于价值)来评估行动。这两个模型参与了一个游戏,随着时间的推移,他们都在各自的角色中变得更好。结果是,整体架构将比单独的两种方法更有效地学习玩游戏。

这种让两个模型相互交互(或竞争)的想法在最近几年的机器学习领域变得越来越流行。例如,考虑生成性对抗网络或可变自动编码器。

但是让我们回到强化学习。演员兼评论家的一个很好的类比是一个小男孩和他的母亲。孩子(演员)不断尝试新事物,探索周围的环境。他吃它自己的玩具,他摸热烤箱,他用头撞墙(我的意思是为什么不)。他的母亲(评论家)看着他,或者批评或者称赞他。这个孩子听他妈妈告诉他的话,并调整他的行为。随着孩子的成长,他学会了什么行为是好的或坏的,他基本上学会了玩一个叫做生活的游戏。这和演员兼评论家的工作方式完全一样。

执行器可以是一个函数逼近器,如神经网络,其任务是为给定状态产生最佳动作。当然,它可以是全连接神经网络或卷积网络或任何其他网络。批评家是另一个函数逼近器,它接收环境和行动者的动作作为输入,将它们连接起来并输出给定对的动作值(Q 值)。让我提醒你一下,Q 值本质上是未来的最大回报。

这两个网络的训练是分开进行的,它使用梯度上升(找到全局最大值而不是最小值)来更新它们的权重。久而久之,演员正在学习产生越来越好的行动(他开始学习政策),而评论家在评估这些行动上越来越好。重要的是要注意,权重的更新发生在每一步(TD 学习),而不是在事件结束时,与策略梯度相反。

事实证明,演员评论家能够学习大型复杂的环境,他们已经在许多著名的 2d 和 3d 游戏中使用,如《毁灭战士》、《超级马里奥》等。

你累了吗?因为我现在开始变得兴奋,我计划继续下去。这是一个很好的机会来谈论两个非常受欢迎的演员-评论家模型的改进,A2C 和 A3C。

最佳演员兼评论家(A2C)

什么是优势?事实上,q 值可以分解成两部分:状态值函数 V(s)和优势值 A(s,A):

Q(s,a)= V(s)+ A(s,A)= A(s,a) =Q(s,A)-V(s)= A(s,a)= r+ γV(s_hat) -V(s)

优势函数捕捉的是在给定状态下,一个行为与其他行为相比有多好,而价值函数捕捉的是在这种状态下有多好。

你猜这是怎么回事,对吧?我们没有让批评家学习 Q 值,而是让他学习优势值。这样,对一个行动的评估不仅基于这个行动有多好,还基于它还能变得更好。优势函数的优势(看到我在这里做了什么吗?)在于,它降低了策略网络的高方差并稳定了模型。

异步优势行动者-批评家(A3C)

DeepMind 在 2016 年发布的 A3C 在科学界引起了轰动。它的简单性、健壮性、速度和在标准 RL 任务中获得更高的分数使得策略梯度和 DQN 过时了。与 A2C 的关键区别在于异步部分。A3C 由多个独立的代理(网络)组成,它们有自己的权重,与环境的不同副本并行交互。因此,他们可以在更短的时间内探索国家行动空间的更大部分。

代理(或工人)被并行训练并定期更新全球网络,该网络保存共享参数。更新不是同时发生的,这就是异步的来源。在每次更新之后,代理将它们的参数重置为全局网络的参数,并且继续它们的独立探索和训练 n 步,直到它们再次更新它们自己。

我们看到,信息不仅从代理流向全局网络,而且在代理之间流动,因为每个代理通过全局网络重置其权重,全局网络具有所有其他代理的信息。聪明吧?

回到 A2C

异步的主要缺点是一些代理会使用旧版本的参数。当然,更新可能不是异步发生的,而是同时发生的。在这种情况下,我们有一个改进版本的 A2C,有多个代理,而不是一个。A2C 将等待所有代理完成其网段,然后更新全局网络权重并重置所有代理。

酪总有但是。有些人认为,如果代理是同步的,就没有必要有很多代理,因为它们本质上没有什么不同。我同意。事实上,我们所做的就是创建环境的多个版本和两个网络。

第一个网络(通常称为 step model)并行与所有环境交互 n 个时间步,输出一批体验。根据这些经验,我们训练第二个网络(训练模型),并用新的权重更新步长模型。我们重复这个过程。

如果你对 A2C 和 A3C 的区别感到困惑,看看这个 Reddit 的帖子

https://medium . freecodecamp . org/an-intro-to-advantage-actor-critic-methods-let-play-sonic-the-hedgehog-86d 6240171d

我试图在不使用太多数学和代码的情况下给你一个所有这些技术背后的直观解释,因为事情会更复杂。然而,它们并不是难以实现的模型,因为它们依赖于与政策梯度和深度 Q 网络相同的思想。如果你想建立你自己的演员兼评论家模型来扮演毁灭战士,看看这个。我认为你应该。只有我们自己建造这个东西,我们才能真正理解这个模型的所有方面、技巧和好处。

顺便说一下,我借此机会提到 Deepmind 最近开放源代码的库,名为 trfl 。正如他们所声称的,它揭示了实现强化学习代理的几个有用的构件。我会试着告诉你更多的细节。

在 2018 年,结合策略和基于值的方法的想法现在被认为是解决强化学习问题的标准。大多数现代算法依赖于演员评论家,并将这一基本思想扩展到更复杂的技术中。一些例子是:深度确定性策略梯度(DDPG)、近似策略优化(PPO)、信任区域策略优化(TRPO)。

但是不要心急。我们会及时覆盖它们…

如果你有任何想法、评论、问题或者你只是想了解我的最新内容,请随时与我联系LinkedinTwitterinsta gramGithub或者********

要阅读整个深度强化学习课程,学习所有你需要知道的关于人工智能的知识,去 这里

原载于 2018 年 11 月 17 日sergioskar . github . io

递归对层次结构建模的重要性

原文:https://towardsdatascience.com/the-importance-of-being-recurrent-29c65cfa456f?source=collection_archive---------12-----------------------

将这篇高水平的人工智能研究论文总结成字节大小的片段

Photo by Nathaniel Shuman on Unsplash

这是对

递归对层次结构建模的重要性

柯川阿里安娜、&T4【克里斯托夫】蒙兹在这里发现:

aclweb.org/anthology/D18-1503

两句外卖

递归神经网络(RNNs),如长短期记忆网络(lstm),目前有性能限制,而更新的方法,如完全注意网络(FANs)显示出替代 lstm 的潜力,而没有这些限制。因此,作者开始使用标准化方法来比较这两种方法,并发现当应用于语言的层次结构时,LSTMs 在预测准确性上普遍超过 FANs。

rnn 具有固有的性能限制

有一段时间,RNN 似乎在自然语言处理(NLP)领域掀起了一阵风暴(大约从 2014 年到 2017 年)。然而,我们最近开始意识到 RNN 的局限性,主要是它们“低效且不可扩展”。虽然通过使用更专业的处理硬件(如现场可编程门阵列)有望克服这些限制,但解决方案至少还需要一代硬件。这意味着值得探索其他选择,如卷积神经网络(CNN)或变压器,用于文本理解,看看我们是否可以使用另一种更适合当前硬件现状的技术来实现类似或更好的结果。

LSTM 变压器与风扇变压器的性能比较

由于这种需要,本文作者选择了两种有前途的自然语言理解方法(NLU)进行基准测试,使用客观标准比较两者之间的结果。具体来说,他们通过测试主语和动词之间的关系,以及在逻辑推理任务中测试模型,来衡量模型对语言的层次性理解程度。

当谈到 NLP/NLU 时,递归神经网络,更具体地说,长短期记忆网络是黄金标准。因此,作者从那里开始作为基线,然后将其比作一个完全注意力网络:一个来自尖端论文的新模型架构 注意力是你所需要的全部 LSTM 是一个连续的框架,一次接收一个输入,例如一次一个单词地阅读一个句子;它不同于其他 rnn,因为每个节点在更长的时间内记住依赖性。参见这篇由 Rohith Gandhi 撰写的帖子,了解 RNNs 和一些流行变体的解释。

虽然 LSTM 比其他 rnn 有更长的长期记忆,因此在 LSTM 是长的,但当相关数据点之间有很大的距离时,如下一个句子中的主语和动词,它们仍然会很困难。此外,由于 LSTMs 的方向性和在每个时间步长对其单元状态的一致调整,当句子的前面部分的上下文依赖于句子的后面部分的信息时,LSTMs 往往会有问题。Rohith 在上面的帖子中举了一个例子:

“他说,泰迪熊正在出售”和“他说,泰迪·罗斯福是一位伟大的总统”。在上面的两个句子中,当我们看到单词“泰迪”和前面的两个单词“他说”时,我们可能无法理解这个句子是指总统还是泰迪熊

进入 FAN transformer,它通过一次查看整个输入(如整个句子)而不是按顺序查看来解决这些问题,它具有一个注意力层,可以帮助保留相关数据点之间的上下文,无论距离远近。除了这些优势,FAN 架构是高度并行化的,这有助于它克服或避免 RNNs 的上述性能限制。

The difference in the architectures can be seen by the way information flows through the nodes (indicated with orange arrows). This graph was originally included in the subject paper.

目前,句子嵌入模型的技术状态是具有注意层的双向 LSTM (bi-LSTM ),它是在这篇主题论文发表之后发表的,但是 bi-LSTM 和注意层在这篇论文的发布之前已经得到了很好的发展。双向 lstm 基本上是两个 lstm(一个从左到右阅读文本,另一个从右到左阅读文本),它们比较笔记以进行集体预测。关注层与上面针对粉丝描述的类似,但是在 RNN 中,它位于模型的连续部分之外,允许在时间步长之间保留更多的上下文。作者选择使用普通的 LSTM,没有这些升级(解决了前面提到的所有缺点,除了并行化),但这并不重要,因为 LSTM 仍然比风扇变压器实现了更好的精度。

为什么要分等级?

虽然的《注意力是你所需要的全部》的论文关注的是一般语言到语言的翻译性能,但这篇论文的作者选择研究模型对语言层次的理解。层次对于真正理解句子的意思至关重要,也是达到接近人类水平的 NLU 的必要步骤。这里有一些例子突出了理解等级的困难,即使对人类来说也是如此,以及它如何改变句子的意思,这些例子来自雷切尔·塔曼对这篇论文的演讲:

“我看见了那个拿着望远镜的人”

我把钥匙放在架子上,桌子上,沙发旁边,书桌旁边……”

测试主语/动词一致性

This diagram was originally included in the subject paper.

确保模型理解层次结构的一个重要方法是,确保它预测给定单/复数主语的适当单/复数动词。上面的图表显示了一个示例句子,包括输入和动词复数如何用于训练模型,以及如何用于测试预测准确性。

在这项任务中,LSTM 在 3 项测试中表现优于风扇,在第 3 项目标上与风扇持平。

These graphs were originally included in the subject paper.

注意,上面提到的“距离”是主语和动词之间的字数。而“吸引子”是主语和动词之间的名词数量,这可能会扰乱模型对什么词是主语的理解。雷切尔举了另一个例子:

总线总是来得晚。|吸引子= 0

破窗公交车总是来得晚。|吸引子= 1

测试逻辑推理

为了避免过于关注使用样本文本可能引入的微妙之处和变化,作者利用了 Bowman et al. (2015b) 的一种简化语言,仅使用六种单词类型、三种逻辑运算符和一些符号来执行这项任务。他们使用基于规则的系统生成训练和测试数据集,以确保数据的 100%准确性。虽然文中的字母和符号可能看起来没有多大意义,但这个示例应该有所帮助:

These examples were originally included in Bowman et al (2015b).

These graphs were originally included in the subject paper.

再一次,我们看到普通香草 LSTM 匹配或超过风扇在所有帐户。请注意, n 是等式左侧的运算符数量。

那么,为什么 LSTM 是明显的赢家呢?

这篇论文不敢回答甚至探究为什么会观察到这些结果。他们很好地解释了他们的过程,并详细说明了用于可重复性的超参数,但他们似乎有意避免超越纯粹的经验主义。此外,他们的代码是干净的、可读的和有文档记录的,所以你可以自己尝试:https://github.com/ketranm/fan_vs_rnn

一些理论可以解释这些结果:

  • LSTMs 是一种经过多年研究的高度精细的模型架构,而风扇变压器现在大约有一年的历史,仍然处于研究的前沿。因此,也许为网格搜索选择的超参数超出了这项任务中粉丝的最佳范围。
  • 也许 LSTM 的序列性本质上更符合人类语言的序列性本质。毕竟,我们说话和写作是按顺序进行的。
  • 事实上,粉丝可能更适合于语言翻译这样的任务,而 LSTMs 更擅长于理解语言的结构。

进一步探索这些结果的一些有趣机会可能包括调整变压器(如尝试加权变压器和/或试验更多超参数)或添加第三种架构进行比较,如 Convs2S 一种基于卷积神经网络的框架。

从理论上讲,一个完全集中注意力的网络转换器似乎在所有方面都应该胜过一个简单的长期短期记忆网络,但是通过彻底的测试,情况似乎并非如此。虽然我们应该继续研究和调整球迷探索这一新的选择,我们不应该折扣古老的 LSTM 只是还没有。请阅读文件了解更多详情。

如果你对这类事情感兴趣,并且你在西雅图地区,我强烈建议你参加普吉特湾编程 Python (PuPPy) Meetup 参加我们每月一次的机器学习(AToM)高级主题讨论之夜,这激发了我写这篇文章的灵感(感谢瑞秋·塔曼,她最近在本文上做了一个的精彩演讲)。如果你不在这个地区,我建议你在任何地方寻找,甚至开始做一些类似的事情。

这种类型的文章是我将要做的一件新事物,产生于明显缺乏平易近人的内容,这些内容可以迅速告知任何人关于前沿人工智能研究的状态,并有一些背景,以便在上下文中看到它。因此,我期待着听到您对本文或讨论主题的任何反馈或问题,无论是在这里还是在社交媒体上。欢迎联系我(只要告诉我你看到了这篇文章)->

twitter.com/theNathanielW

linkedin.com/in/theNathanielWatkins

臭名昭著的因果关系与相关性

原文:https://towardsdatascience.com/the-infamous-causation-vs-correlation-c9cdf4fc6563?source=collection_archive---------3-----------------------

Figs. 1 and 2: Both pictures from The Guardian

因果关系和相关性。

我们一生中听到的这两个词数不胜数。相关性已经成为被认可的两者的兄弟,这已经被宣扬了很多年了。

另一方面,因果关系面临着许多困难时期。因果关系是打开实验之门的钥匙,是神秘背后的解释。但是相关性是一个更简单的结论,它仅仅表明有一类钥匙有可能打开这扇门。但仅此而已。

我们可以回顾历史,了解我们是如何处理这些麻烦的。

吸烟导致肺癌的观点被激烈地争论了多年,没有结果。当然,怀疑论者对混淆变量有他们的观点——也许有一种与肺癌相关的基因碰巧也存在于吸烟者身上。这种可以解释吸烟和肺癌之间关系的不确定变量的来回变化,恰恰证明了我们描述因果关系的语言是多么年轻。

这进一步证明了混淆相关性和因果性是多么容易。相信来自相关研究的任何说法是多么的不可能。

但是我们仍然求助于相关性——可靠的 r 值和邻近的表亲 r 平方——来让我们窥见一个变量如何影响另一个变量。但是如果我们说 x 导致了 y,那我们就是在犯罪。

你持怀疑态度的朋友和同事会问:

你怎么能这么肯定?

有大量的研究发现其他变量也会导致 y。你如何解释这一点?

一定有办法出去的。

这是我通过阅读朱迪亚·珀尔的《为什么》这本书,以及通过与同龄人讨论这些话题而学到的,当我提出这种事情时,他们不会疯狂地看着我。

所以,我们需要做的是开始寻找因果关系:

首先我们需要开始从统计 101 课程中挣脱出来,这些课程是我们在学校几十年来一直珍视的。我们不应该害怕“因果关系”这个词——因为根据因果关系做出决定是我们的天性。

这就是为什么你的母亲告诉你去做文化上接受的例行公事来帮助你的普通感冒消失。因为它以某种方式起了作用,而且这种知识代代相传。

这可能是一个不好的例子(因为做完这些仪式后你可能仍然会生病),但你明白我的意思。

其次,我们需要小心我们用机器学习算法计算的相关性。许多人已经证实,数据中可能存在固有的偏见——尤其是在决定影响现实生活的事情时。

立即想到的是确定某人是否有罪,以及给病人推荐什么样的治疗方法。让数据为我们说话是非常诱人的,但让我们给自己一些信任。我们也可以在数据的噪音中找到意义。

第三,我们需要开始寻找抓住问题本质的方法。仅仅把一堆变量扔进锅里,运行一个算法来告诉我们什么是重要的,并从预测中获益是不够的。

这本书强调绘制因果图,以真正理解变量之间的关系。我们可以在另一篇文章中对此进行更深入的探讨,但总体思路是:

  1. 以 X 导致 Y 的形式建立你的假设
  2. 列出你认为与问题相关的所有变量
  3. 画箭头指出这些变量是如何相互关联的

Fig. 3: From ResearchGate

一旦你有了大概的概念,你就可以开始在一系列问题上运用这个概念。这感觉就像儿戏,但它对提高你对你试图解决的问题的理解有巨大的好处。

让我们共同努力,开始理解支配我们今天试图解决的问题的潜在规律的旅程。医疗保健。社会公正。教育。不公平。这些都需要因果关系的语言来推动我们今天所知道的边界。

感谢阅读。

现象先入为主对数据分析的影响:让数据成为你的向导

原文:https://towardsdatascience.com/the-influence-of-phenomena-preconceptions-on-data-analysis-let-the-data-be-your-guide-9f193e699cf2?source=collection_archive---------28-----------------------

数据分析是一个不断发现的过程(Bobgen & Taylor 1975,第 1 页)。研究人员逐渐意识到要分析的数据,并利用不同的过程来分析它们(Gibbs 2012,第 4 页)。数据分析描述了不同观察者“看到”的世界,并试图解释他们的行为(Dey 1993,第 37 页)。然而,困扰许多学者的一个正在进行的辩论是,研究人员如何避免受自己先入之见的影响,从而提供对情况的无偏见的描述。Dey (1993 年,第 233 页)认为,仔细检查证据对于确保分析的“完整性”非常重要。在这篇短文中,我们反思了上述争论;首先,我们介绍了扎根理论及其原理(Loonam 2014,第 50 页),其次,我们讨论了扎根理论遇到的一些批评(Bryman 2012,第 574 页),最后,我们提供了研究人员如何避免影响数据分析的指南。

扎根理论是指从定性研究数据中产生的理论(Layder 1982,第 104 页;Mayer 2015,p.60),并由 Glaser 和 Strauss 在其名著《扎根理论的发现:定性研究的策略》(Glaser & Strauss 1967)中提出。扎根理论的中心焦点是从数据中归纳出一种新的理论,探索一种知识有限的现象(Turner 1983,第 333 页)。正如施特劳斯和科尔宾(2012,第 272 页)指出的:

“当我开始时,我不知道它会走向何方。我让数据引导我”。

这不同于测试从特定理论产生的假设的传统科学方法(Gibbs 2007,第 50 页),并被视为对 20 世纪 60 年代的传统立场的反应,即研究应该具有“先验”理论取向(Bryant 2002,第 28 页;罗布森 2011 年,第 161 页)。Goulding (2006)认为扎根理论就像“符号互动论”,它规定研究人员进入他们的主题世界,以了解他们的互动。它还被理解为一种进行研究的策略,为产生理论提供了许多灵活的过程(Robson 2011,第 162 页)。

扎根理论主要在研究过程中发展,是数据分析和数据收集不断相互作用的产物(Strauss 和 Corbin,1990)。与其他方法不同,它有几个独特的特点。它使用多种方法进行数据收集和数据分析,在两者之间进行多次迭代,从而实现对世界的“反思和真实”呈现(Loonam,2014 年,第 51 页)。数据分析通常由三组编码组成;最初有开放编码和选择性编码(Glaser & Strauss 1967)以及后来增加的轴向编码(Flick 2009,第 307 页;科尔宾&斯特劳斯 2012a)。这允许对数据类别进行持续的比较(Corbin & Strauss,2012 年 c,第 65-87 页)。这是通过迭代概念化实现的,需要研究者的解释来推导理论(Robson 2011,第 481–484 页)。当达到“理论饱和”且没有新的数据或理论出现时,该过程结束(Loonam 2014,第 51 页)。

然而,扎根理论的发现采取了不同的观点,创始人创建了不同的思想流派,并出现了一些批评。这种分歧的出现是因为 Strauss & Corbin (2012 年)主要集中在系统和复杂的编码技术上,非常强调条件、策略和结果(Goulding 2006 年,第 47 页)。此外,导致分歧的另一个批评是,扎根理论将规定类别的类型作为理论的组成部分,这有时可能不适合某些研究(Robson 2011,第 162 页)。Glaser (1992)认为扎根理论不仅仅是一种带有许多严格和令人困惑的规则的潜在方法。他认为,Strauss & Corbin (2012)的方法冒着研究者在数据中引入先入之见的风险,这似乎更像是强迫而不是理论的出现(Glaser 1992,第 104-123 页)。

进一步的批评是,这种方法是有偏见的,因为它描绘了研究者的观点。从一组数据中得出的理论大多是研究者想要“看到”的(Loonam 2014,第 54 页)。因此,在数据分析和数据收集阶段,研究者有偏见的先入之见可能被引入该过程。然而,研究者可以通过客观地遵循扎根理论原则来克服这一点,如恒定比较原则。这意味着通过数据不断地比较和推断解释(Goulding 2006,第 164 页;Loonam 2014,第 54 页;罗布森 2011 年,第 162 页)。此外,没有一些已有的文献和理论假设就不可能从事研究的论点也是成立的(Robson 2011,第 162 页)。在扎根理论的最初基础中,创始人试图让研究人员远离文献,因为这将在他们收集和分析数据时产生先入之见(Glaser & Strauss 1967)。然而,每个研究人员都带来了特定领域的敏感知识,这既增加了先入为主的可能性,也有助于从数据中形成理论(Corbin & Strauss 2012a,第 49-51 页)。

总之,让数据引导你是一种“开放”的数据处理方式(Corbin & Strauss 2012b,第 195-229 页)。研究者可以通过思想开放、理解自己的情绪和一定程度的自我意识来避免引入先入之见(Simmons 2010)。研究人员需要通过耐心和坚持来接受认知模糊,并通过不断学习的过程在专业和个人发现的旅程中坚持下来。对于研究者来说,重要的是理解解释和概念化过程中所涉及的内容(James 2012,第 563 页),并拥有“创造性的理论想象力”(Corbin & Strauss 2012a,第 98 页)。

参考资料:

鲍勃根和泰勒,S.J .,1975 年。定性研究方法导论:社会科学的现象学方法。

布赖恩特,2002 年。重新接地接地理论。《信息技术理论与应用杂志》,第 25–42 页。

布瑞曼,2012 年。社会研究方法,牛津大学出版社。

科尔宾,j .和斯特劳斯,2012 年 a。定性研究基础:发展扎根理论的技术和程序,SAGE 出版物。

科尔宾,j .和斯特劳斯,2012 年 b。阐述分析。在定性研究的基础:发展扎根理论的技术和程序。第 195-229 页。

科尔宾,j .和斯特劳斯,2012 年。定性数据分析策略。定性研究的基础:发展扎根理论的技术和程序,第 65-87 页。

戴伊岛,1993 年。定性数据分析

美国弗利克大学,2009 年。定性研究导论。圣人,第四

Gibbs,C.G.R .,2007。主题编码和分类。在分析定性数据。第 38-56 页。

吉布斯,2012 年。定性分析的本质。在分析定性数据。第 1-10 页。

格拉泽,学士,1992 年。接地理论分析基础:涌现与强迫

格拉泽,B.G .和施特劳斯,A.L .,1967 年。扎根理论的发现:定性研究的策略

古尔丁,2006 年。扎根理论:管理、商业和市场研究者实用指南

詹姆斯,2012 年。寻求分析想象:对解释定性数据过程的反思。定性研究,13(5),第 562–577 页。

雷德博士,1982 年。一个建设性的批评。《社会行为理论杂志》,第 12 卷第 1 期,第 103-122 页。

Loonam,2014 年。走向扎根理论方法论:管理学者的思考。爱尔兰管理杂志,33 卷 1 期,第 49 页

缅因州迈尔,2015 年。侧重于定性数据分析的定性研究。国际销售杂志,零售&营销4(9),第 53–67 页。

罗布森,2011 年。真实世界的研究。版。布莱克威尔出版社。马尔登,第 1–608 页。

西蒙斯,2010 年。那是一个真实的理论还是你编造的?教授经典的扎根理论。扎根理论综述92 期,第 15–38 页。

特纳,学士,1983 年。扎根理论在组织行为定性分析中的应用。管理研究杂志,第 20 卷第 3 期,第 333-348 页。

意义的渺小

原文:https://towardsdatascience.com/the-insignificance-of-significance-bb6947e08db4?source=collection_archive---------4-----------------------

统计学的重要性在研究界和其他领域都有一种神奇的地位。这种立场是没有根据的,对这种立场的信任是被严重误导的。如果你不相信我,我能理解。所以我不唠叨了,让我们做个小实验,好吗?让我问你以下问题:

假设原假设为真;得到 p 值> 0.5 的概率有多大?

好好想一想。;)你说完了吗?很好。答案是这样的:是 50%。等等什么?是的,是真的。获得大于 0.5 的 p 值的概率为 50%。但是为什么呢?我来告诉你为什么!

零假设下 p 值的概率分布是均匀的!

这意味着你得到 p 值 0.9999 的概率和得到 p 值 0.0001 的概率是完全一样的。原则上这一切都很好,除了一点点恼人的做法,将这解释为零假设为真的概率!没有什么比这更偏离事实了。将数据的可能性解释为假设为真的概率,从而陈述P(D|H0)=P(H0 |D)是一种逻辑谬误。不,不,你说;那肯定不是真的!的确如此。但别让我用数学和文字说服你。我宁愿给你看。

逻辑谬误

在 R 的奇妙统计语言中,有一个很好的小测试叫做夏皮罗-维尔克正态性测试,它基本上,嗯,测试正态性。本例中的零假设 H 0 是指待测样本来自一个正态分布yN(μσ )。因此,为了拒绝零假设,我们需要一个小的 p 值。看在过去的份上,让我们要求这个值小于 0.05。首先,我将从三个具有零均值和单位方差的相同正态分布中生成 1000 个样本。它们如下所示。

Probability densities for three independent Gaussian distributions with zero mean and unit variance.

正如你所看到的,它们确实是高斯分布,或多或少是相同的。现在我提议做一个实验。让我们从相同的高斯分布中选择 5000 个实现的样本集,每个样本集中有 100 个样本。然后,我们将对每组数据进行夏皮罗检验,然后绘制出所有 p 值的分布图。记住:在这种情况下,零假设是正确的,因为我们知道所有的样本都来自于yN(0,1)分布。

A simulation of p-values calculated on data sets generated under the null hypothesis which clearly states that the p-values are uniformly distributed even when the null hypothesis is true.

对于那些思维敏捷的人来说,你现在可以看到,即使我们直接从高斯分布中采样,然后试图检测它是否来自高斯分布,我们也没有得到任何信息。我们得到的只有“伙计,我真的不知道。它可能是任何东西。”这当然不是很有帮助。我之所以这么说,也是因为在零假设下,p 值为 0.001 和 p 值为 0.999 的概率相等。因此,在这些测试之后,我们不能断定生成分布是高斯分布。事实上,我们能得出的结论很少。然而,我们可以说:

我们无法在 5%的显著性水平上成功反驳来自高斯分布的数据的零假设。

但这也是我们所能说的。这并没有使数据更有可能真的来自于高斯分布。同样,在这种情况下,与 p 值为 0.1 相比,p 值为 0.999 并不会使其更有可能来自高斯分布。现在我已经听到反对的人在喊“好吧,那么你是说统计测试是无用的?”。事实上,我不是这个意思。我要说的是,他们是狡猾的混蛋,必须如此对待。所以为了支持我最后的陈述,让我们来看一个场景,在这个场景中,测试确实成功地反驳了一些东西!

成功的例子

在下面的例子中,我们重复了前面的实验,但是用均匀分布代替了生成分布。生成的 p 值如下图所示。

An example of a successful application of the null Hypothesis testing.

正如你可以明显看到的,在这种情况下,零假设一直被反驳,吹嘘大多数 p 值低于 0.05。这张图表解释了这些测试的受欢迎程度。在分布明显不是正态分布的情况下,夏皮罗维尔克测试和许多其他人成功地宣布,这个数据是由高斯分布产生的可能性极小。

浅谈假设检验

让我们回到假设为真的可能性与概率的陈述。我陈述了P(D|H0)≦P(H0 |D);但我没说到底是什么关系。为了补救这一点,让我们谈一谈我们真正想要通过假设检验达到的目的。在科学中,我们通常会看到假设空间的二元版本,其中有一个零假设 H 0 和一个替代假设 HA ,我们希望评估 H 0 为真的后验概率。这用下面的关系式表示。

这清楚地表明,为了量化 H 0 的概率,我们必须考虑 HA T21 的概率。这并不奇怪,因为他们不是独立的。事实上,在给定观察数据的情况下,为了找到假设为真的概率,我们需要评估数据的可能性及其为真的先验概率,并将其与两个假设的全部证据联系起来。

然而,我们并不总是希望看到假设空间只有两种可能的结果。实际上,多重假设的完全广义空间是这样的。

每当你设计实验时,这种关系都值得记住。它是健全科学的基础,不应该被轻视。这篇小文章只是为了提醒您在统计课上使用 p 值和即插即用公式的危险。所以像往常一样,这里有一点建议

明确写下模型和假设,然后做推论!

目前就这些。

原载于doktormike . github . io

互联网不想帮你

原文:https://towardsdatascience.com/the-internet-doesnt-want-to-help-you-d62da6f5cbca?source=collection_archive---------10-----------------------

如果我告诉你,我们不是在信息时代,我们没有人类历史上最好的获取知识的途径,会怎么样?那不可能是真的,对吗?

让我们进行一次现场实验。想一想“工作满意度”。我们花在工作上的时间比其他任何地方都多,我们对工作的感觉对我们在工作中的行为至关重要……嗯……在其他任何地方。

所以,让我们去搜索引擎,输入“工作满意度”,然后点击输入。在这里,我们看到结果页面顶部的文本显示“大约有 8,200,000 个结果”。耶!互联网不是浩如烟海,很有帮助吗?不,不是真的。当我们开始点击搜索结果的最后一页时(我们大多数人从未这样做过),我们很快发现只有几个百个关于“工作满意度”的结果。等等。什么?是的,自从有时间以来,我们已经积累了多达 200 个有价值的搜索结果,这些结果与我们生活中最重要的一个方面有关。

当然,这 200 个结果一定能够准确地告诉我们关于“工作满意度”有哪些信息,对吗?不,不完全是。第一个搜索结果来自一本百科全书,上面写着“工作满意度对不同的人有不同的含义。对一些人来说,这是他们是否喜欢自己的工作……“好吧。感觉更聪明了吗?我不这么认为。

剩下的结果也好不到哪里去。它们包括字典定义、希望你聘用他们的咨询公司,当然,还有博客,上面有一个压力很大的人的必备照片,建议你“为自己找时间”和“不要为小事而烦恼”。太棒了。

想象一下,搜索“飞行”这个词,只看到莱特兄弟的历史记录和想卖给你飞机的网站!没有人会支持它,但事实并非如此。相反,我们可以立即从十几个网站中选择,帮助我们选择航班目的地、航空公司、出发时间、价格等。这同样适用于寻找关于水管工(Angie 的列表)、书籍(Amazon)或餐馆(Yelp)的可操作信息。

如果我们真的处于信息时代,我们将能够确定什么会增加工作满意度、幸福感、财富、领导力等。是什么减少了这些东西,减少了多少,以及减少到什么程度。

可悲的是,这些知识被困在科学家写的大而乏味的研究论文中。这就是我现在和你谈话的原因。我是一名教授和研究人员,我不满意世界上大多数人不能利用我和我的极客伙伴们产生的所有“学习”。事实上,这很尴尬。以及浪费时间。还有钱。和智慧。因此,由研究人员、技术人员、学生和专业人士组成的充满激情的团队开始悄悄地构建一个解决方案。这是一项艰巨的任务,但我们正在直播,而且很成功。www.Knowtro.com 是有史以来最有效的发现系统,它是为那些让其他事情发生的东西……知识而建立的。试试看。

物联网——在 Twitter 上

原文:https://towardsdatascience.com/the-internet-of-things-on-twitter-e5d6f6f983c0?source=collection_archive---------2-----------------------

用 Python 分析 800 万条物联网推文。

答几个月前,我想知道人们在推特上谈论物联网时会说些什么。所以在 200 天的过程中,从 2016 年【T10 月到 2017 年 5,我记录了包含标签 #IoT 的推文。

这导致总共超过 800 万条推文。

今天,我终于开始探索这些数据。

这篇博文的目的有两个:一方面,它展示了对这些数据进行探索性分析的一些结果。另一方面,它旨在简单介绍分析文本数据,从预处理和可视化,到主题建模和情感分析— 都使用 Python

1】为了获取数据,我为基于Tweepy Twitter 流 API 实现了一个简单的监听器,它将每个传入的 Tweepy**包含标签 【物联网 的 Tweepy 存储到 DynamoDB 【T4 可以 在 Github 上查看代码。

初看:标签、用户、语言

import pandas as pd
df = pd.read_csv('tweets.csv')
df.head()

Raw data in a pandas DataFrame

上面你可以看到我从推特上收集的原始数据在读入熊猫数据帧后的截图。它包含诸如推文的文本,推文的语言,推文的标签,以及作者的用户名等列。

与大多数数据相关的项目一样,我从简单的探索开始,最初对与标签 #IoT 一起使用的最常见的标签感兴趣。这很好地概述了人们在推特上谈论物联网时提到的其他话题。**

:如果你想看这篇博文引用的所有分析中使用的代码,看看这本 Jupyter 笔记本相关的 Github 回购

下面是一个条形图,显示了物联网推文中出现的10 个标签(忽略标签 #IoT )及其相应的频率:

该图显示了我原本期望看到的标签,因为它们显然与物联网相关(例如, #ai#bigdata#tech ),但有些乍一看并不明显,例如, #comunidade#ssp

经过快速搜索,我发现这些标签实际上与巴西圣卡塔林纳州公共安全部长有关。他们启动了一个名为 B em-Te-Vi 的项目,该项目由安装在圣卡塔林纳州多个地点的安全摄像头组成。从这些相机拍摄的图像每隔几分钟就会被发送到推特上,所有这些图像都标有 【物联网】

由于我对这些特定的推文不感兴趣,我删除了所有包含标签【ssp(与上述机构相关的标签)的推文。通过这样做,230 万条推文被从数据集中删除,我重新绘制了热门标签:

Top hashtags co-occurring with the hashtag #IoT after dropping the above-mentioned tweets

Et voilà,我获得了人们在 twitter* 上谈论物联网时提到的话题的出色概述,如 AI大数据机器学习、Ssecurity。***

以类似的方式,其他有价值的见解也可以被揭示。下一步,我看了看关于物联网的最活跃用户的数量

Most active users (according number of tweets about #IoT)

根据剧情,用户 亚历杭德罗·维加拉 最积极地参与了关于物联网的推文。有趣的是,在这个数据集中,他的推文超过 99%被转发。在所有后续分析中,我决定放弃转发。这样一来,最活跃用户的列表看起来就完全不同了:

Most active users (number of tweets, retweets ignored)

此外,我还查看了推特数据集中使用的最常见语言**

可以看到超过 8/10 条关于物联网的推文都是英文

为了进行进一步的分析,我决定调查这些推文的内容。由于大多数文本分析工具都是特定语言的,所以我放弃了所有非英语的推文。

我最终得到了大约 165 万条推文的数据集。

词频:可视化常用术语

当处理文本数据时,通常需要执行多个预处理步骤,以便清理手边的文本数据。这种文本清理步骤通常包括类似于移除标点符号丢弃停用词和单个字符将文本拆分成术语、 单词、等的操作。**

在对每条推文都这样做之后,我开始查看我们所有物联网推文中最常用的个词。我使用 Python 的 wordcloud 库来很好地可视化数据中的术语频率:**

Wordcloud of the most common terms in IoT tweets

wordcloud 展示了与物联网相关的常见术语。

如果您感兴趣的不仅仅是孤立的术语频率,文本挖掘中的一种常见方法是识别共现术语,即所谓的 n 元语法。NLTK 是一个强大的 Python 自然语言处理库。下面是一个使用 NLTK 来识别常见的二元模型的例子——成对的连续书面单词:**

结果显示了顶级二元模型的列表——显示了非常熟悉的搭配!

主题建模:确定共同主题

主题建模是一种文本挖掘工具,用于发现文档中的中心主题(即推文)。主题模型的一个例子是潜在狄利克雷分配(LDA) ,它假设文档是由主题的混合产生的。

使用 Python 的 gensim 实现 LDA 进行主题建模,并将主题数量设置为 n=5 ,获得的每个主题的顶级术语为:

Top terms of topics identified using LDA

顶词列表显示不同的总体主题,例如新闻(0)安全(2)* 或数据(4) 可以使用主题建模来自动识别。***

情感分析:人们对物联网的感受如何?

情感分析用于确定作者对某一特定话题的态度是积极还是消极(或中立)。 TextBlob 是一个用于处理文本数据的 Python 库,为情感分析提供了一个模型。

将该模型应用于每条推文,并查看极性值的分布,我们可以了解推文的整体情绪:

Histogram of sentiment polarity values

该图说明了极性直方图如何向右倾斜,表明关于物联网的推文的总体积极情绪****

我对负面关联的内容更感兴趣,所以我仔细查看了推文中极性很低的(即负面)最常见的术语:****

Most frequent terms in tweets with low polarity (negative)

并不奇怪,是吗?人工智能,其越来越成为负面新闻报道的一部分,以及 S 安全一个在物联网中仍未解决并被广泛讨论的问题,出现在负面情绪的术语列表中。**

为了更好地将推文分为积极和消极情绪,下面是模型返回的具有最大和最小极性的推文的随机样本:

Examples of tweets with negative sentiment

Examples of tweets with positive sentiment

摘要

可以从文本数据中提取有价值的见解。Python 生态系统及其丰富的数据科学库使得以许多不同的方式处理和分析文本数据变得容易,这取决于手边的用例。这些工具可用于快速、轻松地构建对公司有巨大价值的自动化工具。例如,在 WATTx ,我们构建了一个小工具,项目负责人可以输入一些与他的项目相关的标签,他的团队将定期从 Twitter 获得一个结果/新闻的精选列表到项目的 Slack 频道。这有助于我们了解正在运行的每个项目的进展情况。

这篇博文的目的是展示一些应用于推文的工具和文本分析概念的简单示例,以深入了解 Twitter 上的 【物联网】 内容。

这里展示的结果所使用的所有代码都是用 Python 编写的,可以在这个 Jupyter 笔记本中找到。

Python 库

  • 熊猫 —强大的数据分析库
  • scikit-learn—Python 中机器学习的 goto 库
  • NLTK —自然语言处理工具
  • gensim—Python 中的主题建模工具
  • wordcloud——一个轻量级的库,用于生成好看的 word cloud
  • matplotlib — Python 2D 绘图库
  • tweepy —用于访问 Twitter API 的 Python 库

香农熵背后的直觉

原文:https://towardsdatascience.com/the-intuition-behind-shannons-entropy-e74820fe9800?source=collection_archive---------3-----------------------

【警告:太容易了!]

伊恩·古德菲勒的《深度学习》一书3.13 章信息论中写道:

我们将事件 X = x 的自我信息定义为

I(x)=-log P(x)

因此,我们对 I(x)的定义是以纳特为单位的。一个 nat 是通过观察概率为 1/e 的事件获得的信息量。

我们可以使用香农熵来量化整个概率分布中的不确定性。

The definition of Entropy for a probability distribution (from The Deep Learning Book)

但是这个公式是什么意思呢?

对于任何想要精通机器学习的人来说,理解香农熵是至关重要的。Shannon 熵产生了一个函数,它是 ML 从业者的面包和黄油——交叉熵在分类中大量用作损失函数,还有KL 散度广泛用于变分推理。

为了理解熵,我们需要从“比特”的角度开始思考。

位为 0 或 1

因此,用 1 比特,我们可以表示 2 个不同的事实(又名信息),要么是 1,要么是 0(或真或假)。假设你是 1945 年二战的一名指挥官。你的电报员告诉你,如果纳粹投降,他会给你一个“1”,如果他们不投降,他会给你一个“0”。

2018 年,你可以在智能手机上输入完全相同的信息

“战争结束了”(我们用 8 位* 15 个字符= 120 位,而不是 1 位)

《战争还没有结束》(8 比特* 19 字符= 152 比特)

因此,我们使用 100 多位来发送一条信息,这条信息可以减少到一位。

假设明天有四种可能的战争结果,而不是两种。1)德日双双投降。2)德国投降,日本不投降。3)日本投降,德国不投降。4)双方都不投降。现在你的电报员需要 2 位(00,01,1011)来编码这个信息。同样,即使有 256 种不同的情况,他也只需要 8 位。

再正式一点,一个变量的熵就是这个变量所包含的“信息量”。你可以把变量想象成来自电报员的消息。新闻可以是任何东西。不一定是 4 个州,256 个州等等。在现实生活中,新闻可以是数百万个不同的事实。

现在,回到我们的公式 3.49:

The definition of Entropy for a probability distribution (from The Deep Learning Book)

I(x)X的信息内容。

I(x)本身是一个随机变量。在我们的例子中,战争的可能结果。这样, H(x) 就是每一个可能信息的期望值。

使用期望值的定义,上述等式可以改写为

Because -log P(x) = log (1/P(x))

等等…为什么我们要取概率的倒数?

H(X)是一个整体概率分布中的总信息量。这个意思是 1/p(x) 应该是每个案例的信息(打赢战争,输掉战争等)。

那么问题就是……

为什么 1/p(x)是信息量?

假设纳粹有 50%的机会投降(p = 1/2)。然后,如果你的电报员告诉你他们确实投降了,你就可以消除 total 2 事件(投降和不投降)的不确定性,这是 p 的倒数(=1/2)。

当你的所有事件发生的可能性都相等,并且你知道一个事件刚刚发生,你可以排除所有其他事件(总共 1/p 个事件)发生的可能性。例如,假设有 4 个事件,它们发生的可能性都相等(p = 1/4)。当一个事件发生时,它表示其他三个事件没有发生。因此,我们知道总共 4 个事件发生了什么。

那些不太可能发生的事件呢?

假设纳粹有 75%的几率投降,有 25%的几率不投降。

‘投降’这个事件有多少信息?

log(1/0.75)= log(1.333)= 0.41(向前省略以 2 为基数的对数)

'不投降'事件有多少信息?

log (1/0.25) = log(4) = 2

如你所见,不太可能的事件有更高的熵。

这就是为什么信息是概率的倒数的直觉。

黑点就是新闻。

通过了解黑点,我们可以同时消除另外 3 个白点。

4 点(总信息)突发

现在,知道了一个黑点,我们总共能爆多少个

我们可以消去总共 11/3 = 1.333 个点,也就是3/4 的倒数。

你能爆的总点数=每条新闻的信息量。

于是,每一个可能新闻中的信息是 0.25 * log(4)+0.75 * log(1.333)= 0.81(香农熵公式。)

现在我们知道 1/p 来自哪里了。但为什么是日志?香农认为任何事物的信息量都可以用比特来衡量。要用比特写一个数 N ,我们需要取 N 的以 2 为底的对数。

外卖食品

如果我们有 P(win) =1,熵就是 0。它没有一点不确定性。(-log1 = 0)

请注意,热力学“熵”和信息论中的“熵”都捕捉到了不断增加的随机性。

请注意,在我们的示例中,对于“同等可能性”的消息,熵(2 位)高于“不同等可能性”的消息(0.81 位)。这是因为在“不太可能”的消息中存在较少的不确定性。一个事件比另一个事件更有可能发生。这降低了不确定性。

对于实施爱好者,这里是 Python 代码。

看看字符数越多,不确定性(熵)越大。

import math 
import randomdef H(sentence): 
    """
    Equation 3.49 (Shannon's Entropy) is implemented.
    """
    entropy = 0 
    # There are 256 possible ASCII characters
    for character_i in range(256): 
        Px = sentence.count(chr(character_i))/len(sentence) 
        if Px > 0: 
            entropy += - Px * math.log(Px, 2) 
    return entropy# The telegrapher creates the "encoded message" with length 10000.
# When he uses only 32 chars 
simple_message ="".join([chr(random.randint(0,32)) for i in range(10000)])# When he uses all 255 chars
complex_message ="".join([chr(random.randint(0,255)) for i in range(10000)])**# Seeing is believing.****In [20]: H(simple_message)
Out[20]: 5.0426649536728 the** **In [21]: H(complex_message)
Out[21]: 7.980385887737537****# The entropy increases as the uncertainty of which character will be sent increases.**

在下一篇文章中,我将解释我们如何将香农熵扩展到交叉熵和 KL 散度。

高斯过程贝叶斯优化背后的直觉

原文:https://towardsdatascience.com/the-intuitions-behind-bayesian-optimization-with-gaussian-processes-7e00fcc898a0?source=collection_archive---------5-----------------------

更新:我开了一家科技公司。你可以在这里找到更多

在某些应用中,目标函数是昂贵的或难以评估的。在这些情况下,一般的方法包括创建目标函数的更简单的替代模型,该替代模型评估起来更便宜,并且将替代地用于解决优化问题。此外,由于评估目标函数的高成本,经常推荐迭代方法。迭代优化器通过在域中的一系列点上迭代地请求函数的评估来工作。贝叶斯优化通过在可能的目标函数空间上结合先验模型,将贝叶斯方法添加到迭代优化器范例中。本文介绍了高斯过程贝叶斯优化背后的基本概念和直觉,并介绍了 OPTaaS ,一个用于贝叶斯优化的 API

最佳化

优化方法试图将域中的输入 x 定位到函数 f 中,该函数在*上最大化(或最小化)该函数的值:**

The general Optimization framework

在实践中,函数 f 表示需要优化的过程的结果,例如交易策略的整体盈利能力、工厂生产线上的质量控制指标,或者具有许多参数和超参数的数据科学管道的性能。

输入域 𝒳 代表需要优化的过程的有效参数选择。这些可以是交易策略中使用的市场预测,工厂流程中使用的原材料数量,或者数据科学管道中 ML 模型的参数。正是输入域【,𝒳的描述,连同函数 f 的性质,表征了优化问题。流程域的有效输入, 𝒳 ,可以是离散的、连续的、受约束的或这些的任意组合。类似地,结果函数 f 可以是凸的、可微的、多模态的、有噪声的、缓慢变化的,或者具有许多其他重要性质。

在某些应用中,目标函数评估起来很昂贵(计算上或经济上),很难评估(化学实验、石油钻探)。在这些情况下,一般的方法包括创建目标函数的更简单的替代模型 f ̂ ,该替代模型评估起来更便宜,并且将替代地用于解决优化问题。****

此外,由于评估目标函数的高成本,经常推荐迭代方法。迭代优化器通过在域 x 1x 2、*中的一系列点处迭代地请求函数 f 的评估来工作。。。∈t37】𝒳t39】。通过这些评估,优化器能够构建函数 f 的图像。对于梯度下降算法,这个图像是局部的,但是对于代理模型方法,这个图像是全局的。在任何时候,或者在函数评估的预分配预算结束时,迭代优化器将能够陈述其对 x 的真实值的最佳近似。

使用 N 已知的评价值:F =(f1,f2,…,fN)at【XN =(x1,x2,…,xN) 来训练代理模型。有许多方法用于建立替代模型,如多项式插值、神经网络、支持向量机、随机森林和高斯过程。在 Mind Foundry,我们选择的方法是使用高斯过程进行回归。**

高斯过程

高斯过程(GPs)在函数空间上提供了一类丰富而灵活的非参数统计模型,其域可以是连续的、离散的、混合的,甚至是分层的。此外,GP 不仅提供关于的可能值的信息,而且重要的是还提供关于该值的不确定性的信息。

高斯过程回归背后的思想是针对在某些点的一组观察值【XN】我们假设这些值对应于具有先验分布的多变量高斯过程的实现:

其中 KN 是一个NxN协方差矩阵及其系数用一个相关函数(或核) Kmn =K(xm,xn,θ) 来表示。根据最大似然原则校准内核的超参数 θKN 被选择来反映函数的一个先验假设,因此核的选择将对回归的正确性产生重大影响。图 2 给出了几个协方差函数的示例。

通过数学变换并使用条件概率规则,可以估计后验分布p(f n+1|f NXN+1 )并将 f ̂N+1 表示为 KN 和 fn 的函数,具有不确定性。这允许我们从我们的观察中构建一个概率代理,如图 1 所示:

****

贝叶斯优化

贝叶斯优化是一类迭代优化方法,专注于一般优化设置,其中𝒳的描述是可用的,但对 f 的属性的了解是有限的。贝叶斯优化方法有两个特点:

  • 代理模型 f ̂ ,对于函数 f
  • 以及从代理计算的 获取函数 ,用于指导下一个评估点的选择

BO 通过在可能的目标函数空间上结合f的先验模型,将贝叶斯方法添加到迭代优化器范例中。通过在每次报告函数评估时更新该模型,贝叶斯优化例程保持目标函数 f 的后验模型。这个后验模型是函数 f 的代理 f ̂ 。具有 GP 先验的贝叶斯优化例程的伪代码是:**

初始化 :
根据初始空间填充实验设计,在 f 之前放置高斯过程,在 n 0 点观察 f

n 设定在 n 0

而**N≤Ndo:

  • 使用所有可用数据更新 f 上的后验概率分布
  • 识别𝒳上采集函数的最大值【xn】,其中采集函数是使用当前后验分布计算的
  • 观察yn=f(xn)**
  • 增量 n

结束而

****返回具有最大 f ( x )的点或者具有最大后验均值的点。

标准采集函数的一个例子是 预期改善标准 (EI),对于 x ∈ 𝒳中的任何给定点,该标准是 x 处的 f 的值相对于 f 的最佳值的预期改善。 鉴于函数 fx 处确实高于 f 的最佳值;所以如果我们在寻找 f 的最大值,EI 可以写成:

e I(x)= 𝔼(max(f(x)f,0)*

*其中 f 是目前看到的 f 的最大值。

采集功能的其他示例有:

  • 熵搜索,其在于寻求最小化我们在最佳值位置的不确定性
  • 置信上限
  • 预期损失标准

3 示出了代理的演变以及它与获取函数的交互,因为它在它试图最小化的基础函数的每次迭代之后改进了它的知识。

使用 OPTaaS 实施业务对象

OPTaaS 是一个通用的贝叶斯优化器,它通过 web 服务提供最佳的参数配置。它可以处理任何参数类型,并且不需要知道底层的过程、模型或数据。它要求客户端指定参数及其域,并回传 OPTaaS 推荐的每个参数配置的准确度分数。OPTaaS 使用这些分数对底层系统进行建模,并更快地搜索最佳配置。

Mind Foundry 已经在 OPTaaS 中实现了一套代理模型和采集功能,它将根据所提供的参数的性质和数量自动选择和配置,如图 4 所示。这种选择是基于彻底的科学测试和研究,因此 OPTaaS 总是做出最合适的选择。此外,Mind Foundry 能够为客户的特定问题设计定制协方差函数,这将显著提高优化过程的速度和准确性。OPTaaS 的大多数用户需要优化复杂的流程,这种流程运行起来很昂贵,而且反馈有限。出于这个原因,OPTaaS 将其 API 集中于提供一个简单的迭代优化器接口。然而,如果有更多关于被优化的过程的信息,它总是可以被用来更快地收敛到最优。因此,OPTaaS 还支持关于域𝒳的信息的通信,例如关于输入的约束,以及关于函数 f 的评估,例如噪声或梯度或部分完整的评估。此外,客户通常能够利用本地基础设施来分发优化搜索,也可以请求 OPTaaS 进行批量评估。

优化过程如下:

  1. OPTaaS 向客户推荐一种配置
  2. 客户评估他们机器上的配置
  3. 客户发回一个分数(准确性、夏普比率、投资回报等)
  4. OPTaaS 使用该分数来更新其代理模型,并且循环重复,直到达到最佳配置。

在整个过程中,OPTaaS 不访问底层数据或模型。更多关于 OPTaaS (Mind Foundry Optimize)的信息可以在这里找到。

更新:我开了一家法律科技公司。如果你已经做到了这一步,你可能会有兴趣在这里找到更多的

团队和资源

Mind Foundry 是牛津大学的一个分支机构,由斯蒂芬·罗伯茨(Stephen Roberts)和迈克尔·奥斯本(Michael Osborne)教授创建,他们在数据分析领域已经工作了 35 年。Mind Foundry 团队由 30 多名世界级的机器学习研究人员和精英软件工程师组成,其中许多人曾是牛津大学的博士后。此外,Mind Foundry 通过其分拆地位,拥有超过 30 名牛津大学机器学习博士的特权。Mind Foundry 是牛津大学的投资组合公司,其投资者包括牛津科学创新牛津技术与创新基金、牛津大学创新基金Parkwalk Advisors

文档

教程:https://tutorial . opta as . mind foundry . aiAPI 文档:https://opta as . mind foundry . ai

****研究http://www . robots . ox . AC . uk/~ mosb/projects/project/2009/01/01/bayesopt/

参考文献

奥斯本,硕士(2010)。顺序预测、优化和求积的贝叶斯高斯过程(博士论文)。牛津大学博士论文。

****演示:Charles . brecke @ mind foundry . ai

人工智能时代的隐形工人

原文:https://towardsdatascience.com/the-invisible-workers-of-the-ai-era-c83735481ba?source=collection_archive---------9-----------------------

围绕管理为人工智能提供动力的数据,出现了一种新型的蓝领产业

在人工智能研究的早期,美国康奈尔大学的科学家弗兰克·罗森布拉特(Frank Rosenblatt)发明了他所谓的“感知机”。感知器是一种算法,旨在对展示给它的对象进行分类,是现代人工智能的祖先。当罗森布拉特在 1958 年的一次新闻发布会上变得有点自吹自擂时,《纽约时报》发现了这一点,并有点兴奋过头了。“海军新设备边做边学;一篇文章的标题写道:“心理学家展示了设计用来阅读并变得更聪明的计算机胚胎”。作者接着说:

海军表示,感知机将是第一个“能够在没有任何人类训练或控制的情况下接收、识别和识别周围环境”的非生物机制

这种语气听起来熟悉吗?

没有一个星期没有人工智能和算法能够完成以前留给人类的任务的新突破的消息。这些天有很多关于工作自动化和我们新的算法霸主的谈论,这些算法霸主似乎很少有人参与就能完成复杂的任务。然而,这是一个谬误——我们看不到人工智能背后的人类并不意味着没有人类。这不仅适用于开发这些算法的工程师。事实上,有一种新的蓝领工作管理数据,这些数据对算法的功能至关重要,据说这些算法为我们的数字化经济提供了动力。

这不是我们第一次忽视那些努力让技术发挥作用的人们。“计算机”实际上是人,其中很大一部分(报酬很低)是女性,从事已经自动化的计算工作,但时间不长。女性也是第一批计算机程序员之一,她们操作着复杂的机器,比如运行罗森布拉特感知器算法的机器,但却被第一批计算机的工程师所掩盖。当时很少有人关注大型科技公司、政府机构和研究实验室的幕后工作者。只是最近,学术界对这些工作者的认可有所上升,例如,在 T2 好莱坞也是如此。我们应该以史为鉴,不要重蹈覆辙。要做到这一点,我们需要看看谁是新的隐藏的技术人物,他们的工作是什么,以及为什么需要他们。

A computing group at NASA’s Jet Propulsion Laboratory, circa 1955 (source: JPL/Caltech)

像一辆没有轮子的汽车

如今,当人们谈论人工智能时,他们真正的意思通常是机器学习。反过来,大多数 ML 算法本质上是统计模型,它们通过分析之前输入的大样本数据——“训练数据”,来“学习”如何执行特定任务。开发人员依赖这些模型是因为所谓的“波兰尼悖论”:我们知道的比我们能说的多,也就是说。我们的很多知识都是隐性的,这就是为什么我们不能简单地以硬性规则的形式将其编程到软件中;不管任务有多琐碎,要教计算机程序,我们需要展示或“训练”它们。因此,一个非常复杂但未经训练的 ML 算法就像一辆没有轮子的跑车:它可能看起来仍然很好,但它不会带你去任何地方——它本质上是无用的。同样,如果你喂你的 ML 模型垃圾训练数据,它也会吐出垃圾结果。

但是“训练数据”到底是什么?假设你经营着一家蓝莓松饼工厂,但每隔一段时间,一只从附近动物收容所逃跑的狗会意外地跳上传送带,你的人工智能包装机器人需要区分松饼和狗,以便没有狗最终出现在杂货店的货架上。对于机器人来说,要实现这一点,需要给它输入大量松饼和狗的图片,并给它们贴上相应的标签,这样它就可以推断出它们的识别特征。例如,同样的原则适用于自动驾驶汽车(除其他外,需要能够识别停车标志)和大多数其他人工智能应用。

Chihuahua or muffin? Not that easy to tell for a machine without human supervision (source: Mariya Yao)

这给公司带来了一个问题:他们如何获得带标签或带注释的数据?即使他们获得了大量数据,如照片(用于图像识别算法)、录音(用于语音识别)或书面文本(用于情感分析),标记所有这些数据也是一项繁琐的任务,需要由人类来完成。这是工作。

50 种标注数据的方式

T 以下是给你的数据贴标签的不同方法。一些公司自己给他们的数据贴上标签——尽管这可能成本很高,因为雇佣人员来完成这些任务会让公司既花钱又失去灵活性。其他公司甚至想办法让人们免费标记他们的数据。有没有想过为什么谷歌的 reCAPTCHA 一直要求你识别模糊照片上的交通标志?(一个小提示:谷歌的控股公司 Alphabet 也拥有处于自动驾驶前沿的 Waymo)然而,在大多数情况下,标记和管理数据的是受薪工人,一个完整的外包行业已经围绕它兴起。无论是在世界各地工厂般的工作场所,还是通过在家或智能手机进行远程工作:这些都是推动人工智能的隐形工人。

reCAPTCHA — everybody’s favorite pastime on the internet

就像西方公司在 20 世纪 60 年代和 70 年代开始将制造工作外包给发展中国家一样,科技公司正在将数据标签外包给外国公司,这些公司运营着可以被称为数据标签工厂的工厂。就像过去一样,这些工作被转移到一些地方——从中国的到中非的——那里工资低,工作条件对他们更有利。在那里,前仓库和大型开放空间办公室中的大量工人坐在电脑前,花费他们的工作日来标记数据。正如李远在最近为纽约时报撰写的文章中引用一家中国数据标签公司的联合创始人的话:

我们是数字世界的建筑工人。我们的工作是一砖一瓦[……]但我们在人工智能中发挥着重要作用。没有我们,他们就无法建造摩天大楼。

外包数据标签的另一种方式是通过在线众包工作平台,依靠他们的用户在世界各地完成分解成小组件的任务。这包括大型平台,如亚马逊的机械土耳其人(Mechanical Turk)及其数十万注册的众包工作者,但也包括专门的平台。一些大型科技公司甚至有自己的众包平台来管理数据,其他公司可以依赖专门关注数据标签的小型平台服务。员工从事这些工作的动机各不相同:一些人想在业余时间赚点外快,看重这类平台提供的灵活性。正如专业数据标签应用程序 Spare5 的一名用户在的宣传视频中解释的那样:

这只是,你知道,我可以很容易地做的事情,只是拿出我的手机,做一些任务,在回家和上班的路上做一些摘要。[……]对我来说,知道我花了这些时间真正深入挖掘,试图找到信息,这是一点点回报[……]我觉得我正在解决一个谜,解决这个难题。

然而,其他人依靠这些平台工作谋生,并经常面临巨大的风险:低工资,没有(或几乎没有)就业保护和员工权利,以及巨大的不确定性。

人工智能时代的蓝领工作

T 退一步说,很明显,一种新型的低技能蓝领工作已经出现,以满足技术对标签数据的需求。与在工业经济中从事物理装配线工作相反,这种新的人工智能工人阶级已经成为数字化“数据供应链”的一部分。当然,并非所有这些工作都是低技能的——从 CT 扫描图像中检测癌症的算法需要由经验丰富的放射科医生进行培训。但是,根据波兰尼悖论,研究人员试图让 ML 应用程序完成的大多数任务对人类来说仍然相当简单,训练这些算法只需要常识。

因此,重要的是确保这种新的工作类别成为工人经济保障的驱动力,而不是剥削的来源。至于更“传统”的全球行业的供应链,如采矿业或服装业,我们所有人——政府、消费者和企业——都有责任确保那些标记数据的人在体面的条件下工作。

政府将很难监管这个全球无边界的数据标签服务市场的工作。然而,他们必须努力调整旨在改善工作条件的现有制度,并推动企业创建公平的数据供应链。在这方面,大众工作和数据标签工厂的工作都提出了不同的挑战,但这些障碍都不是不可克服的。然而,克服这些困难确实需要监管努力以及国际和跨部门合作。反过来,企业必须提供一些关于其数据供应链的透明度。尽管第一世界的消费者在很大程度上仍然不知道他们的衣服和小玩意是在遥远的地方制造的,但我们也应该让科技公司对它们驱动人工智能应用的方式负责。毕竟,消费者确实有影响力,负责任的消费可以影响企业的行为。

无论我们对技术进步的速度有多兴奋,现在和过去一样重要的是,不断提醒自己,我们每天在媒体上听到的人工智能的大多数进步背后都有人——实际上是很多人。由于 ML 研究人员正在寻找越来越多的自动化新任务,这些工作不会很快消失。让我们确保它们是体面的工作。

本文是在巴黎政治学院“技术革命的历史”课程的背景下撰写的,授课老师为laurène TranBesiana BallaNicolas Colin。**

进一步阅读

如果上面的内容引起了你的兴趣,这里还有一些探索同一主题的文章:

莎拉戴,人工智能承诺就业革命,但首先它需要老式的体力劳动——来自中国,南华早报,2018 年 10

马克·格雷厄姆,全球劳动力市场的兴起——以及它对未来工作的意义, 《新政治家》,2018 年 1

Hope Reese,‘数据标签’是 AI 时代的新蓝领工作吗?TechRepublic、【2016 年 3

霍普·里斯和尼克·希斯,亚马逊点击工人平台内部:50 万人如何被支付一分钱来训练人工智能 ,TechRepublic, Dember 2016

汤姆·西蒙尼特,为了让人工智能更聪明,人类执行古怪的低收入任务连线,2018 年 9

李远,廉价劳动力如何推动中国的人工智能雄心《纽约时报》,2018 年 11

IPO 模式

原文:https://towardsdatascience.com/the-ipo-model-90c24535b543?source=collection_archive---------2-----------------------

在我的大会数据科学沉浸式课程期间,我的同事 David Ortiz 建议我应该写一篇关于我如何编写函数的博文。在编写脚本时,我倾向于使用输入过程输出模型(IPO ),它有助于组织和分类您的功能。让您的代码符合这种模型可能需要一些努力,但回报来自于拥有组织良好且易于调试的代码。

以下将是我如何在我的第一篇博文中使用 IPO 的演练,哪个佐治亚大学校园发生的事件最多,分析了哪个佐治亚大学校园发生的事件最多。

输入

这应该是一个函数或一组函数,它加载创建所需输出所需的数据。很多时候,这将是读取 CSV 或使用 ODBC 连接从 SQL 数据库获取数据。

在这种情况下,我创建了一个名为 scrape_ga 的函数来抓取总会网站上的各个城市活动页面。网络抓取的数据随后被放入相应城市的数据框架中。

Input Function

流程

这应该是一个或一组准备数据的函数,以便产生适当的输出。这可能意味着清理或聚合数据。

大会网站上的事件数据非常干净,所以这里不需要做太多处理。我所做的是将通过抓取功能创建的所有单个城市数据帧组合起来,然后对最终的主数据帧进行重复数据删除。

Process Function

输出

这应该是一个函数或一组函数,它使用干净的处理数据创建所需的输出。这可能是一个新的电子表格或模型或图形的输出。

在这种情况下,输出是一个条形图,比较每个校园的事件数量。

Output Function

Resulting Output

为什么要用 IPO?

在了解 IPO 之前,我只会用函数,避免重复自己。虽然用这种方式快速编写代码很容易,但这确实导致了一些问题。

组织调试代码

IPO 训练你了解你每项职能的广泛目的,并以逻辑的方式组织它们。IPO 有一个清晰的流程:输入函数提供给处理函数,处理函数提供给输出函数。遵循这个模型将使你的同事和你未来的自己更容易阅读和修改你的代码。如果有一个错误,那么它将更容易找到哪里需要进行修正。

保持全局命名空间干净

python 最酷的特性之一是名称空间。如果一个变量是在一个函数中创建的,那么只有这个函数能够使用这个变量——它是一个局部变量。但是如果变量是在函数之外创建的,那么所有函数都可以访问它——它是一个全局变量。

a = 1 #This is a global variabledef function_1():
    b = 2 #This is a local variabledef function_2():
    print a #This step will work because a is a global variable
    print b #This will result in an error because b is local to        
            #function_1

保持全局名称空间的整洁对于短脚本来说不是问题,但是对于长脚本来说,很难跟踪所有的变量,这会导致更多的错误。

a = 1### 1000 lines of codea = "Cat"### 1000 more lines of codea += 1 #I forgot that I changed a to a string. This will result in        
       #an error.

根据分析环境修改 IPO

作为数据科学家,我们的大部分工作是以一种易于阅读的格式显示我们的过程和结果,例如 Jupyter 笔记本。我发现自己经常写一行代码,然后用一个 markdown 单元格来解释它。将您的代码放在三个左右的主要 IPO 函数中并不真正有利于这种格式,除非是较小的项目。

在这种情况下,我使用 IPO 的修改版本,其中我有一组主要的输入函数和处理函数,并且我的所有分析(也就是我的输出)都是全局完成的。其原因是,尽管作为数据科学家,我们 80%的工作是获取和清理数据,但利益相关者主要关心的是 20%的分析。我仍然会注释掉我的输入和处理函数,但是要确保我的分析在整个笔记本的 markdown 单元格中突出显示。

你可以在我的文件夹中看到大会网页抓取项目的全部 Jupyter 笔记本。我是 IPO 的大力支持者,因为它帮助我编写了长期可用的代码。偏离 IPO 可能很诱人,但每次偏离都会导致混乱的代码,我最终不得不重写到 IPO 中。

福克斯新闻频道与世隔绝的巢穴

原文:https://towardsdatascience.com/the-isolated-den-of-fox-news-f31126e605cd?source=collection_archive---------14-----------------------

绘制在线新闻出口引用网络

Interactive visualization of citation networks (https://srdean.shinyapps.io/Final/)

kraine 说俄罗斯向其海军舰艇开火,扣押了它们……通用汽车公司关闭了工厂,并因销售缓慢而削减了数千个工作岗位……中国科学家声称第一个基因编辑婴儿……

这是 2018 年 11 月最后一周互联网头版的几个头条新闻。以 T2 最受欢迎的新闻网站中的 16 个为重点,我在这一周的时间里从 480 篇文章中收集了数据(美国新闻、世界新闻、政治、观点、商业和娱乐各 5 篇)。

Fig. 1: Sources & popularity (millions of unique monthly visitors)

对于每篇文章,我都记录了链接到其他在线新闻网站的时间。链接可以是超链接,也可以是文本引用和引文*。换句话说,每当有信息从一个来源流向另一个来源时,我的目标就是捕捉它。

*这种边缘结构在一些与 谷歌的 PageRank 相同的假设下运行,即假设从其他网站接收更多链接的网站可能更重要。

由于我的数据集的强大性质,我决定创建一个交互式应用程序,允许用户将网络划分到某些类别中。这里有:https://srdean.shinyapps.io/Final/

下面的完整网络代表了我的数据库中引用的 312 个独特的经销店,加上代表 NewsMax 和 Blaze 的两个点,它们是唯一没有出现在另一个来源的引用列表中的原始来源。分数是根据“度内中心性”来确定的(即被更多文章链接的网站看起来更大)。

Fig. 2: Complete network with the original 16 sources labeled and points sized according to in-degree centrality.

您会注意到网络中几个最大的点是未标记的。引用次数最多的两个来源是美联社和路透社。**这两家都没有出现在我最常去的美国新闻机构列表中,因此没有包括在最初的分析中。

**123 篇文章(约占数据库总数的四分之一)链接到美联社,60 篇链接到路透社

然而,除了这两个来源,引用的数量似乎与受欢迎程度相关。例如,CNN 和《纽约时报》( NYT)在网络中显得相对较大,并且具有两个最高的受欢迎度得分。我研究了这种关系,发现在引用次数和受欢迎程度之间存在显著的正相关(t < .01)。

Fig. 3: Correlation between popularity (x-axis) and number of incoming citations (y-axis)

不过,值得注意的是,福克斯新闻频道并不完全符合这条回归线。尽管《福克斯新闻频道》以每月 7800 万的访问量排名第四,但在 480 个故事的数据库中,它只被三个故事引用。这是 16 个来源中排名第四低的,甚至排在 Vox 之后,Vox 的受欢迎程度大约是它的三分之一,但引用次数是它的两倍多。如果更保守的新闻媒体被纳入分析,这些结果可能会有所不同。然而,自由派人士被选中仅仅是因为他们的受欢迎程度更高。

这些结果支持了皮尤研究中心的一项研究的发现,该研究指出,自由主义者总是说出一系列主要新闻来源(CNN、NYT、NBC 和 NPR ),而保守派则更倾向于一个,福克斯新闻频道。因此,看起来有许多受欢迎的倾向自由派的新闻媒体,主要是一个受欢迎的倾向右翼的消息来源。

我创建的下一个网络只包含原始列表中源之间的边(图 1)。使用 igraph R 的 cluster_walktrap 算法,我识别并突出显示了这个网络中的社区。这个函数试图在一个图中寻找密集连接的子图。结果如图 4 所示,根据政治偏见***(由各方评级)进行评分。com)。

** * 深红代表更保守的偏见,洋红色代表唯一的中间派来源《今日美国》,深蓝显示更重的自由派偏见。

Fig. 4: A network of hyperlinks and in-text citations from and to online news sources. Points are sized according to number of incoming citations and colored according to political leaning (Allsides.com)

这个网络开始描绘福克斯新闻频道的局外人身份。在两个社区中,Fox 显然占据了不太重要的一个,并且由于很少的链接,看起来相对较小。更大的社区显然是非常忧郁的,但是从这一观察中得到的见解是有限的,因为事实上网络中的大多数来源只是更加自由。

在接下来的分析中,我将重点放在网络如何根据文章类别而变化。图 4 展示了我为政治专栏文章构建的六个网络之一。使用 cluster_walktrap 函数再次定义了社区。

Fig. 4: Network for articles in Politics sections

单独部分的群落形成非常不规则;然而,我能够从我的结果中得出一些结论。最常见的“邻居”——在同一社区中发现的来源——是 NYT 和华盛顿邮报,在六个社区中的五个社区中一起出现。根据 Allsides 评级,任何时候一个来源作为另一个来源(至少六分之四)的邻居出现在大多数网络中,他们都属于政治光谱的同一侧。福克斯新闻从未出现在 Buzzfeed、赫芬顿邮报、华盛顿邮报、NYT、NBC 或卫报的社区中。

在社会学和社会心理学中,隐含的和确认的偏见被很好地观察到,并且彻底地讨论了这些现象。第一个定义了我们将人分组的自然趋势,并形成了基于“我们与他们”的信任和不信任的概念。后者,确认偏差,指的是我们倾向于寻找确认我们已经知道或相信的信息。

大规模研究发现,这些偏见深深渗透到我们的媒体消费中,导致了政治两极分化。皮尤研究中心(Pew Research Center)描述说,“当涉及到获取关于政治和政府的新闻时,自由派和保守派居住在不同的世界。他们求助和信任的新闻来源几乎没有重叠。”

我认为,关于这些偏见如何在新闻的实际来源中表现出来的概念还没有得到很好的探索。对于这个研究项目,我试图确定新闻网站引用的网络特征。一路走来,我的目标是回答新闻来源是否像它们的消费者一样“存在于不同的世界”的问题,以及确定哪些网站在网络信息传播中发挥着最大的作用。

这个项目的网络分析得出的发现表明,在某些调节信息流动的网络新闻来源之间存在着密切的联系。某个特定渠道在这个网络中的受欢迎程度可以简单地通过网站在读者中的受欢迎程度来预测,但似乎存在关于该渠道的政治偏见的警告。虽然还需要更多的研究来支持这一观察,但似乎来源更有可能引用和被分享他们政治观点的网站所引用。

从深度学习实验到生产就绪模型构建的旅程🤓

原文:https://towardsdatascience.com/the-journey-from-deep-learning-experimentation-to-production-ready-model-building-d9fe294d6be6?source=collection_archive---------19-----------------------

小规模和超大规模深度学习的主要区别

自深度学习革命兴起以来,由 Krizhevsky 等人 2012 ImageNet 的胜利引发,人们一直认为数据、处理能力和数据科学家是构建人工智能解决方案的三个关键要素。拥有最大数据集、最多用于训练神经网络的 GPU 和最聪明的数据科学家的公司将永远占据主导地位。

然而,这只是事实的一部分。

虽然拥有最多数据的公司确实能够建立更好的预测模型,但模型质量的提高与数据集大小不成线性比例。与此同时,当今大多数公司要么拥有大数据,要么以数据收集为核心——因此,有人可能会说,虽然更多数据是一种竞争优势,但它不再是一种大优势。数据面临的挑战更多的是拥有带有标签和结构化数据的有意义的数据湖,而不是数据的绝对数量。更好的人工智能解决方案和数据之间存在相关性,但不一定是因果关系。

同样,虽然对处理能力的需求确实与模型训练的数据量成比例增长,但实际上今天每个公司都可以获得几乎无限的处理能力。强大的内部服务器场和大型云运营商让每个人都可以通过网络访问成千上万的 GPU。处理能力面临的挑战更多的是如何有效地利用这些资源,而不是访问它们。就像航空公司优化飞机在空中的时间一样,有效的数据科学就是优化云 GPU 的使用方式。

虽然数据科学家短缺,这表现在他们的工资上涨(比他们的软件工程师同行高 30%)但算法开发的需求并不像拼凑基于预先研究的最佳实践的模型那样迫切。人工智能专家、作家和风险投资家李开复称这种能力的转变为“从思想家到修补匠的转变”。当谈到人工智能时,我们已经从研究转向工程,这需要一套不同的技能。

通过数据、处理能力和能力的这种转变,深度学习在过去五年中从“如何应用它”的问题中变得成熟对于更实际的问题“我们如何快速扩大生产规模?”。快速构建生产规模的解决方案需要一套新的工具,而不是研究或勘探所需的工具。

让我们看看这在实践中意味着什么。

人工智能工具和框架来拯救!🚀

人工智能的大肆宣传和对更有技能的人的需求相结合,吸引了不同领域的人进入数据科学。软件工程师、数学家和统计学家都有不同的背景和不同的工作方式。软件工程师可能是唯一在时间紧迫的情况下在大团队中一起工作的人。

根据定义,工程师是思想家提出的解决方案的修补者,而数学家和分析师更多的是一个人的工作。

但是软件工程师也不总是一起工作。在 20 世纪 90 年代早期和更早的时候,软件开发往往是一个人的工作,英雄程序员们拼凑出没有人理解或能够合作的解决方案。没有支持真正协作的版本控制(你桌面上的文件,有人吗?),更不用说单元测试了(println()测试对吗?)、持续集成、云计算或者 Scrum(UML 图和用例规格说明还是一个东西吗?).在过去的 30 年中,这些方法被反复开发,以适应加速软件开发和高效团队的需要。

然而,今天我们在数据科学领域仍然缺乏这些工具。人们不再使用标准工具,而是设计自己的工作流、工具和框架。更糟糕的是,这一次,这些人来自完全不同的背景。快速和肮脏的解决方案再次积累。

人们在 Excel 表格中通过 Slack 共享“版本控制实验”,并链接到 Dropbox 中存储的 Jupyter 笔记本。我们难道没有从过去 30 年中学到什么吗?

Dropbox 股票中的 Jupyter 笔记本就像深度学习的山达基——他们有狂热的支持者,但我们大多数人不会把钱投在它身上。工具本身并没有错,错的是你使用它们的目的。

在我们选择工具之前,我们必须就我们想要解决的问题达成一致。我认为我们要实现三个主要目标:

  1. 快速实验 —我们希望数据科学快速而敏捷。人们应该能够测试东西,而不需要花费时间在样板代码或开发工作上。
  2. 再现性 —我们希望确保我们进行的每个实验的再现性和审计追踪。团队应该互相学习,借鉴以前的实验,这样我们就不必一遍又一遍地重复发明轮子。
  3. 标准化的工作方式 —我们希望工作标准化。所以当新人加入时,他们知道事情是如何运作的。当有人离开时,我们知道他们以前做过什么。

让我们一次看一个!

快速实验🔬

A Data Scientist wants to quickly try out new models and see if they work. And in case they don’t tweak, re-iterate and improve!

在深度学习中,快速实验的核心取决于你处于模型构建的哪个阶段。在开始时,你需要能够探索你的数据,将它可视化并了解它。像 H2O 这样的工具对于了解你的数据和建立你的第一个假设是极好的。

当你走得更远时,你可能想在 Jupyter 笔记本上用熊猫做一点实验。但是,随着您构建生产规模模型的深入,尤其是如果您的团队不仅仅由您一个人组成,您肯定希望迁移到具有适当自动完成功能的 IDE,并且能够在比本地机器上的 GPU 更强大的集群上运行您的实验。

因此,快速实验的关键是全自动的机器编排,这对于单个数据科学家来说是尽可能透明的。单击一个按钮或在命令行上运行一个命令将是最佳选择。

再现性👯‍

Even Darth Vader seems to understand the importance of reproducibility once an optimal solution is found!

任何科学工作中再现性的关键是对每个实验进行严格和完整的簿记,即版本控制。不得不手动进行版本控制不是一个选项,因为这不是您在模型开发期间的主要关注点,从而导致随机快照而不是完全可再现性。

但是与软件工程不同,再现性不应该仅仅局限于你的训练代码,还必须包括你的训练和测试数据、外部超参数、软件库版本等等。

在这种情况下,对每一次训练运行的每一部分进行自动版本控制是最佳的解决方案。

标准化管道管理💩

Machine Learning pipelines are just like plumbing – you want to ensure the output from your toilet smoothly gets to the cleaning facility – without getting clogged on the way!

让整个团队以同样的方式工作,并有一定的自由度是必要的。你如何存储数据?您在哪里部署模型和代码?你在哪里训练他们?您使用哪些框架,以及如何将特征提取与模型训练链接在一起?

如果团队中的每个人都自己解决这些问题,不仅会浪费大量时间,还会使协作变得几乎不可能。

解决方案是通过标准的链接和编排方式将管道步骤解耦。作为一个简单的解决方案,它可以只是一个脚本,按顺序调用管道的每一步。但核心部分是它在公司和团队内部是标准化的。

深度学习的重生:人工智能平台🏆

AI Platforms standardize your way of working, abstract away unnecessary complexities and give you the power to move from idea to solution at the speed of a Shinkansen!🚄

为了给机器学习带来清晰度和结构,技术独角兽一直在构建自己的总体平台,将解决方案与上述所有挑战联系在一起,通常是以人工智能平台的形式,包括库、机器编排、版本控制、管道管理和部署。

FBLearner Flow 是脸书的统一平台,用于协调整个公司的机器和工作流程。 BigHead 是 AirBnB 的机器学习平台,用于标准化生产方式,主要基于 Apache Spark 构建。米开朗基罗是优步的机器配器和 ML 训练平台,用于快速训练 ML 模型。

对于谷歌、网飞和几乎所有规模较大的公司来说也是如此,它们都明白通过快速建模可以获得竞争优势。

但是我们其他人呢?对于那些不能投入 10 个人年来构建我们自己的流程编排,但今天就需要结果的人来说,该怎么办?

Valohai 是 FBLearner Flow,BigHead 和 Michelangelo 对科技独角兽的意义,但却是为我们其他人建造的。它是一个基于云的服务,可以在 AWS、GCP、Azure 或你的内部服务器群上运行。Valohai 允许您在云中运行您的模型,就像您在本地主机上作为单独的步骤或流水线工作流运行它们一样。它会自动拍摄每次训练运行的快照,以便您可以随时获取生产中运行的模型(在 Valohai 的可扩展 Kubernetes 集群上),单击一个按钮并追溯到它是如何训练的、由谁训练的、使用了哪些训练数据、代码的哪个版本等等。

然而,瓦罗海并不是你唯一的选择——你可以自己建造很多。重要的是你要确保快速的实验,实验的可重复性和标准化的工作方式。但真正的问题是,你是想上路跑步还是想从设计和制作自己的跑鞋开始?

最初发表于blog.valohai.com

机器学习模型从建立到再训练的旅程

原文:https://towardsdatascience.com/the-journey-of-a-machine-learning-model-from-building-to-retraining-fe3a37c32307?source=collection_archive---------6-----------------------

这篇文章摘自我们的解决方案教程,它将带你完成构建预测机器学习模型的过程,将其部署为应用程序中使用的 API,测试该模型,并用反馈数据重新训练该模型。所有这一切都发生在 IBM Cloud 上的集成和统一的自助服务体验中。

Architecture Diagram

在这篇文章中,著名的鸢尾花数据集被用于创建一个机器学习模型来对花卉物种进行分类。

在 机器学习的术语中,分类被认为是监督学习的一个实例,即在正确识别的观察值的训练集可用的情况下的学习。

将数据导入项目

项目是你如何组织你的资源,以实现沃森数据平台的特定目标。您的项目资源可以包括数据、合作者和分析工具,如 Jupyter 笔记本和机器学习模型。

您可以创建一个项目来添加数据,并在 data refiner 中打开一个数据资产来清理和调整您的数据。

创建项目:

  1. 进入 IBM Cloud 目录,在 AI 部分下选择 Watson Studio创建服务。点击开始按钮,启动沃森工作室仪表盘。

Watson Studio Landing page

2.创建新项目选择完成。点击确定。为项目添加一个名称,如iris_project和可选描述。

3.因为没有机密数据,所以不要勾选限制谁可以成为协作者复选框。

4.在定义存储下,点击添加并选择一个现有的对象存储服务或创建一个新的服务(选择 Lite plan > Create)。点击刷新查看创建的服务。

5.点击创建。新项目打开,您可以开始向其中添加资源。

导入数据:

如前所述,您将使用虹膜数据集。Iris 数据集在 r . a . Fisher 1936 年的经典论文中使用,在分类问题中使用多种测量,也可以在 UCI 机器学习知识库中找到。这个小数据集通常用于测试机器学习算法和可视化。目的是通过测量萼片和花瓣的长度和宽度,将鸢尾花分为三个种类(刚毛鸢尾、杂色鸢尾或海滨鸢尾)。iris 数据集包含 3 类,每类 50 个实例,其中每类涉及一种类型的 iris 植物。

Courtesy: DataCamp

下载 iris_initial.csv ,其中包含每个类的 40 个实例。您将使用每个类的其余 10 个实例来重新训练您的模型。

  1. 在项目中的资产下,点击查找并添加数据图标

2.在加载下,点击浏览并上传下载的iris_initial.csv

3.添加之后,您应该会在项目的数据资产部分看到iris_initial.csv。单击名称以查看数据集的内容。

建立一个机器学习模型

  1. 回到资产概述,在型号下点击新型号。在对话框中,添加 iris-model 作为名称和可选描述。
  2. 机器学习服务部分,点击关联一个机器学习服务实例将一个机器学习服务( Lite plan)绑定到您的项目。点击重新加载

3.在 Spark Service 部分,点击Associate a IBM Analytics for Apache Spark instance将 Apache Spark Service(Liteplan)绑定到您的项目。点击重新加载

4.选择模型生成器作为模型类型,选择手动手动创建模型。点击创建

F 或者自动方法,你完全依赖自动数据准备(ADP)。对于手动方法,除了由 ADP 转换器处理的一些功能之外,您还可以添加和配置自己的估计器,这些估计器是分析中使用的算法。

5.在下一页,选择iris_initial.csv作为您的数据集,并点击下一个

6.在选择技术页面上,基于添加的数据集,标签列和特征列被预填充。选择物种(字符串)作为您的标签列,选择花瓣 _ 长度(小数)花瓣 _ 宽度(小数)作为您的特征列

7.选择多类分类作为你建议的技术。

8.对于验证分割,配置以下设置:

  • 训练: 50%,
  • 测试 25%,
  • 反对者: 25%

9.点击添加估算器并选择决策树分类器,然后添加

你可以一次评估多个估值器。例如,您可以添加决策树分类器随机森林分类器作为评估器来训练您的模型,并根据评估输出选择最佳拟合。

10.点击下一步训练模型。一旦看到已培训&已评估的状态,点击保存

11.点击概述查看模型详情。

你的旅程不会在此停止。按照下面的步骤,您将把您的模型部署为一个 API,测试它并通过创建一个反馈数据连接来重新训练。

通往 NeurIPS 的旅程

原文:https://towardsdatascience.com/the-journey-to-neurips-ee1a197da538?source=collection_archive---------19-----------------------

3 个月内从见面到在 NeurIPS 研讨会上演讲

今年劳拉·简·马丁纳斯和我在neur IPS的 ML4D 研讨会上发表了一篇虽小但令人兴奋的论文。我们两个三个月前在 Indaba 的深度学习上相遇,仅仅一个多月,我们就向工作室提交了一些东西。当我们的小论文被接受时,我们既兴奋又震惊。我们刚刚在 NeurIPS 度过了最后一周——这是我打算在 3 年时间内实现的目标,但现在已经实现了。我觉得有必要把这段旅程写下来,并分享那些让它成为可能的经验教训和人们。我想我们中的许多人并不觉得自己有价值或者没有准备好——也许是因为我们来自不同的背景或者来自一个不寻常的机构。这是一个告诉你如何去做的故事——不管你的背景如何。

种子

这一切都始于一颗热情的种子。甚至在我读理学硕士期间(关于一个完全不同的主题),我已经开始接触研究人员来获取数据集,以便为非洲语言进行机器翻译。我不知道该怎么做,但我想做。我认为这源于一种通过相互理解将南非团结在一起的动力。由于缺乏公开可用的数据集、软件和研究人员的回应,我放弃了我的搜索。我继续在我的工作场所实际应用 NLP,希望有一天机器翻译可以成为我的工作重点。

One of my many unanswered pleas

催化剂

如果你还没有听说过深度学习 Indaba ,那么是时候赶上了。深度学习 Indaba 的目标是加强非洲的机器学习,他们是少数几个真正有办法在❤.机器学习领域改变多样性的运动之一我喜欢把英达巴看作是非洲惊人作品的催化剂。我可以整天谈论 Indaba,但我想强调今年 Indaba 的 3 个具体方面,它们促进了我们向 NeurIPS 的提交:

  • Kyunghyun ChoSebastian Ruder 的自然语言处理 talkworkshop 和 Cho 的序列模型 talk 。没有什么比这个领域的专家指导你读什么论文更好的了。这些列表是如何快速精通该领域的指南。不仅如此,他们是世界上我最喜欢的两个人,并且总是很乐意和我讨论他们的过程。
  • “如何撰写研究论文”研讨会Nando de Freitas 、Ulrich 帕凯、Stephan Gouws、Martin Arjovsky 和 Kyunghyun Cho 主持。从这个演讲中学到了很多东西,但有一点很突出:写一篇好的研究论文不是因为只有去斯坦福或牛津的人才会学到的特殊魔术——我们任何人都可以写出好的研究——即使没有著名的导师或博士学位。
  • 会见我的合作者劳拉·简·马丁纳斯。关于劳拉有很多美好的事情,但我特别从她那里学到了一课——这是她写论文的哲学:如果你有一个想法,得到结果并写下来其实很简单——没有那么多单词或代码行。她说,如此多的研究人员已经放弃了写论文的想法——许多研究人员害怕被他们的工作所评判,因此从不提交任何东西。我认为她是对的。我记得以前每次写论文时我个人的焦虑,害怕被拒绝,害怕它会说我是一名研究人员。她的母亲和她以母女关系的身份参加了非洲各地的会议——这些论文意义不大,但它们确实提供了一个练习写论文的平台。做得越多,收获越大。

合作

谢天谢地,劳拉住在离我很远的一个城市。我们立即开始了每周一次的 NLP 阅读小组。前提很简单:选择一篇有意义的 NLP 论文(主要是按照 Cho 的建议),阅读它,然后下周聚在一起,边喝啤酒、喝鸡尾酒、吃披萨边讨论它。我们发现,在一个月的时间里,我们已经深入讨论了许多神经机器翻译的关键论文。

我们梦想有工具将教育资源从英语翻译成任何一种非洲语言。我们有了为南部非洲语言的神经机器翻译技术做实验基线的想法,因为目前什么都不存在。因此,我们开始计划我们将提交给哪些会议——特别是我们正在关注的 Africatek ,因为他们会发现我们的工作是相关的。

就在那时,劳拉的一个朋友给我们发来了 NeurIPS ML4D 研讨会,我们注意到离截止日期还有 10 天。我们有 10 天的时间来写实验、得到结果和写论文。

喧嚣

我不知道该如何解释,除非用要点来说明这一过程有多简单(实际上,这是一场与时间的赛跑):

  • 使用脸书的卷积序列对进行排序,使用谷歌的转换器使用来自 SADiLaR 的现有数据集进行英语到茨瓦纳语的翻译。
  • 与此同时,我花了一天时间搜索以前的研究,以便与我们的结果进行比较——该领域的研究非常稀少,而且只使用了相对古老的技术
  • 我们的结果可以与现有的研究相媲美——事实上,Transformer 模型展示了英语到茨瓦纳语翻译的最新性能。显然,这是光荣和非常幸运的,因为这种通向好结果的直接途径经常发生。
  • 我们花了 8 个小时写了论文。这很容易,因为我们的研究有一个明确的目的,我们希望这篇论文传达的是:激励进一步研究使用现代技术来翻译资源匮乏的非洲语言,因为我们已经证明了这些技术有前途。
  • 我们又花了 5 个小时编辑了它——其中一部分是在火车上——牢记我们在英达巴学到的教训
  • 我们赶上了提交截止日期。

我们每天都查看电子邮件。不管我们是否会被接受,我们都为我们的小论文感到自豪——它写得很好,符合我们的研究目标,是我们新发现的合作的代表。很小,但是很刺激。如果它没有进入研讨会,我们将学习,在成果的基础上,争取下一次会议。

会议

我们被接纳进了车间!那是多么美妙的感觉啊!仍然有一些事情需要处理(机票,会议票,谢天谢地没有签证问题困扰着会议的其余部分),但是在经历了很多的忙碌之后(感谢复古兔,ML4D 研讨会和我们在深度学习学院的联系),我们最终找到了去蒙特利尔的路!

至于会议,我将在上面写一大堆帖子,但简单地说:我们会见了来自非洲和世界各地的潜在合作者,并建立了将持续一生的联系。这是一个令人难以置信的机会,可以与他们领域的顶尖研究人员互动并向他们学习。查看我即将发布的帖子,了解从# NeurIPS2018 中学到了什么。

Some Deep Learning Indaba and Black in AI crew at #NeurIPS. Photo by Muthoni Wanyoike

超越

这只是开始

  • 甚至在被接受之前,我们就在全速继续我们的研究。我们已经取得了显著的进步,您可以在这里
  • 能够参加神经科会议向我们展示了参加主要的 ML 会议的必要条件,所以现在我们把希望寄托在了 ICML ❤上
  • 我们将与世界各地的研究人员合作,帮助我们为低资源语言转换神经机器翻译。

教训

  • 你不需要有一个花哨的主管或与一个闪亮的学术机构有联系,就可以在神经科发表文章
  • 如果你处于早期阶段,在尝试参加一个主要会议之前,不要回避参加一个研讨会。他们接受有希望的工作方式,并让你了解主要会议的要求。
  • 练习写论文。将每份提交材料视为改进的机会。正如乌尔里希·帕凯所说:“作为一名研究员,你能得到的最有价值的东西,就是让另一名研究员阅读你的作品”
  • 协作者加速学习和研究,所以协作。其影响似乎是指数级的。社区,社区,社区,社区…
  • 和激励你的人在一起。
  • 跟随您最喜欢的研究人员。他们将引导您度过目前 ML 研究中的信息超载问题。
  • 有一个你想交流的故事。
  • 相信自己能行——因为你能行。如果您不认为您可以,尽管尝试吧。你可能会发现你让自己大吃一惊

下兔子洞的快乐,第一部分

原文:https://towardsdatascience.com/the-joy-of-going-down-rabbit-holes-part-i-5a56cecf293?source=collection_archive---------20-----------------------

作为一名想要构建真正有用的工具的数据科学家,需要掌握的一项关键技能是放弃一种思维方式。在适当的时候,得出的结论,这将花费太多的时间,收获太少。简直不值得。一个人必须避免掉进兔子洞。从商业角度来看,兔子洞通常会将宝贵的资源冲向一个未满足期限和仓促交付的黑洞。考虑到解决问题有多么诱人,这种经济学是一个巨大的耻辱。所以,几个月前,当一个谜题突然出现在我脑海中时,我决定一头扎进一个兔子洞。令人振奋。

在我脑海中盘旋的意识混合物所带来的问题如下。如果我掷一枚公平的硬币,它正面朝上的几率是一半。如果我扔两次,连续两次人头落地的几率是四分之一。从这样一个随机来源中还能构建出其他什么概率呢?有没有可能把一个公平的硬币,一个我以前认为只能产生 2 的幂概率的东西,变成一个强大得多的东西?一个很好的例子,也是我在接下来的几天里一直坚持并思考的一个例子,是三分之一的概率。这听起来很容易,但它确实难倒了我。我绝对不可能去研究这个问题,剥夺自己解决这个问题的满足感。我决心看看下了这个兔子洞会把我带到哪里。

我的第一个想法是扔硬币我能得到什么?半个。掷两次硬币我能得到什么?四分之一,或一半。我能做得更好吗?是的,我可以。事实上,如果你掷三次硬币,就有八种可能的结果。如果你简单地将成功定义为从这些序列中任意选择三个,你有 0.375 的成功概率。然后你可以把它精确到你喜欢的任何程度。随着 n 次投掷,有 2n 次方个不同的序列。然后你可以取其中的大约三分之一,将这些序列定义为成功。瞧啊!随着 n 趋于无穷大,这个概率趋于三分之一。

Precision improves the more tosses we use [source: me]

但是,这感觉像作弊。事实仍然是,对于任何一个 n ,“成功”的概率仍然顽固地不等于三分之一。这似乎是一个无法解决的问题。毕竟,如果你掷硬币的次数是固定的,考虑到掷硬币的独立性,结果的任何组合或组合或组合的概率注定在分母上有 2 的幂。我需要的是一个事件,其投掷硬币的次数是无限,而有限。无界性会让我摆脱那些讨厌的 2 的幂,而有限性会确保概率总和为 1。换句话说,我需要一个保证终止的进程,但是它的终止时间理论上可以是任意整数次投掷硬币。

因此,我想到了一个简单得令人沮丧的解决方案。让我们再一次考虑我们期望的三分之一的概率。让我们回到掷硬币两次的想法。有四种可能的顺序。 HHHTTHTT 。每一种都有四分之一的发生概率。所以如果成功是着陆,我们有四分之一的机会成功。现在,如果我们忽略结果,再试一次,如果我们得到了 TT 呢?现在,我们每个人都有四分之一的机会 HHHTTH 获胜,但也有四分之一的机会完全忽略结果,再次投掷硬币两次。然后,这最后的四分之一在第二次投掷的 HHHTTHTT 之间平均分配,当然,最后的结果再次被忽略,重复这个过程,直到我们得到除 TT 之外的任何序列。

The sequence continues indefinitely until an outcome occurs other than TT [source: me]

因此,“成功”的概率是四分之一(我们在第一次双掷中获得 HH ),加上四分之一倍的我们在任何未来双掷中获得它的概率,也就是四分之一(我们在第二次双掷中获得 HH )加上四分之一倍的我们在任何未来双掷中获得HH

挺住;这开始听起来像一些无穷级数。的确,正是如此。我们成功的可能性是

[source: me]

注意,省略号表示这个表达式无限重复。这导致了一个难以置信的数学上的便利方法来证明这确实导致了三分之一的概率。如果我们将整个无穷和定义为 s ,我们可以观察到,如果这个无穷级数有一个有限和,那么我们有下面的递归

[source: me]

因此,我们可以很容易地重新排列,求解 s 并观察到 s = 1/3 如下

[source: me]

如果这让你不满意,这里有另一个解释。如果我们可以证明进程HHHTTH 终止,并且这些都是同等可能的,我们必须得出结论:在 HH 终止的概率是 1/3

鉴于每当我们遇到 TT 时,我们继续并翻转两次以上,终止于 TT 的概率为零。但是,在 HHHTTH 中的任何一个上终止的概率平均分布在所有三个上。现在,我们只需要证明终止是必然的。让我们开始第一次双掷。这次双抛后终止的概率是 1/4 。现在让我们进行第二次双掷。这里不终止的概率也是 1/4 ,假设我们已经过了第一次双抛。但从一开始,任何一次投掷前,两次双掷后终止的概率是 1/4 乘以 1/4 ,也就是 1/16 。然后你可以看到,在 n 双掷之后没有终止的概率是 1 除以 4n 的幂,随着 n 线性增加,它很快趋于零。例如,在十次双掷后没有终止的概率是 1/4 ⁰,大约是 0.00000095。因此,我们的流程肯定会终止,并且我们得到了想要的结果。

请继续关注第二部分,在第二部分中,我们将进一步深入兔子洞,使我们的硬币更加强大,仅使用其自身的随机性来产生任何概率的事件,这些事件可以表示为 n/d ,其中 nd 是整数。

JupyterLab 凭据存储

原文:https://towardsdatascience.com/the-jupyterlab-credential-store-9cc3a0b9356?source=collection_archive---------14-----------------------

这个 JupyterLab 扩展使您的凭证安全,并提供方便的访问。

TL;博士:

JupyterLab 凭据库使用 AES 加密保护您的凭据安全。在这个 JupyterLab 前端扩展中添加、编辑和删除作为键-值对的凭证。使用他们的密钥访问凭据:

import kernel_connector as kc
kc.get_credential(“my_secret”)

使用以下命令安装 JupyterLab 凭证存储库:

pip install pycrypto
apt-get install nodejs -y
apt-get install npm -y
jupyter labextension install @lean-data-science/jupyterlab_credentialstore

如果你喜欢容器化的配置, JupyterLab 凭证存储库JupyterLab-Configurator (此处呈现)无缝集成,让你轻松创建自己的 JupyterLab 配置

保管好你的证件

JupyterLab 是一个交互式开发环境,使您能够在选项卡式工作区中使用 Jupyter 笔记本。Jupyter 笔记本允许您轻松地与您的同事共享您的代码和模型。当您处理数据时,访问数据几乎总是需要某种形式的凭证,例如用户名和密码或 API 访问密钥。

你需要特别注意你的证件。如果您直接在笔记本中使用它们,您可能会意外地暴露它们,例如,当您将笔记本提交到您的 git-repository 时,或者当您共享笔记本时。

笔记本的力量:是福是祸

以正确的方式处理凭证的问题不仅限于 Jupyter 笔记本。这在任何其他开发环境中都同样重要。但是笔记本有暴露凭证的特殊风险。不是技术上的。而是程序性的!

笔记本作为一种工具,可以快速、轻松地浏览数据,无需太多开销。笔记本电脑不需要明确的解决方案架构来规定代码、数据和凭证的存放位置。笔记本电脑很少采用多阶段部署的方式投入生产,这可确保凭据分别安全地存储在各个阶段的配置中。

但是笔记本是一个灵活而强大的工具。它们在数据科学家的工具箱中有合法的位置。

环境变量

将凭证存储在环境变量中是一种常见的做法。环境变量驻留在系统进程中。Jupyter 内核就是一个很好的例子。这些进程源自操作系统(或启动它们的软件,如 Jupyter)。流程及其环境变量不是笔记本的一部分,因为笔记本不是流程,而是文件(JSON)。Jupyter 应用程序将笔记本文件与进程(内核)连接起来。

但是使用环境变量似乎是一种有一些缺点的变通方法:

  1. 无论何时添加、编辑或删除环境变量,都必须重新启动笔记本服务器,以使更改生效。但是,如果您刚刚完成了一个长时间运行的计算,您不能存储它的结果,因为存储它需要一个 API 调用,您之前没有设置它的凭证,那该怎么办呢?请你把凭据放进笔记本里,只有这一次,答应吗?哎呀!
  2. API(例如 AWS)通常提供使用环境变量的便利功能。当环境变量设置好后,一切都正常了。但是你的同事在使用笔记本和复制你的结果时遇到了问题。不仅如此,API 调用也不起作用(这是可以的,因为你不希望别人使用你的账户)。而且,你的同伴不一定知道(详细地)为什么它不起作用,以及需要什么来使它起作用。当你不能轻松分享时,笔记本就失去了它的大部分用途。
  3. 如果因为使用两个同类服务(例如 AWS)而需要同一个环境变量的两个不同值,该怎么办?每个服务都需要自己的凭据。您会手动设置和更改环境变量吗?在给定的情况下,记住变量的所需值将是一个严峻的挑战,不是吗?

保持你的灵活性

JupyterLab 凭据库保留了 Jupyter 笔记本的灵活性,同时确保您的凭据安全。这个 JupyterLab 扩展向您的工作区添加了一个凭证浏览器,您可以通过侧边栏上的菜单项打开它。在凭据资源管理器中,您可以添加、编辑和删除凭据的键值对。

The credential explorer

您可以在代码中轻松使用凭据。只需导入kernel_connector并使用其密钥访问凭证。这就像使用环境变量一样简单。

import kernel_connector as kc
kc.get_credential(“my_secret”)

当您更改凭证时,不需要重新启动内核。当您添加或编辑凭证时,只需按下保存按钮,您就可以直接使用它。当您删除凭据时,对它的访问会立即被删除。

如果需要设置环境变量,可以在代码中完成,而不会有暴露凭据的风险。因为您直接在活动内核中设置环境,所以您可以立即使用它,而无需重启内核。这允许您动态地准备您的环境。它明确地向你的同伴显示,你在这里使用环境变量。但这并没有暴露他们!下图描述了这个用例。但是请注意,您不应该打印您的凭据。

Example of using the credential store

你的证书是安全的

JupyterLab 凭据库使用您在首次使用时设置的密码。每个凭证都用您的密码散列加密。加密的凭证存储在启动 JupyterLab 的目录中的.credentialstore文件中。如果您使用版本控制系统,请确保将它添加到您的.gitignore文件中。

JupyterLab 凭证存储库要求您在解密凭证之前登录。因此,即使有人获得了你的.credentialstore文件,那个人仍然需要破解 AES 加密的密码。

2003 年 6 月,美国政府宣布 AES 可用于保护最高机密级别的信息。

Jupyter 辅助安全

JupyterLab 凭证存储库利用了 Jupyter 的一个核心特性:生成缺省情况下相互独立的进程(内核)的能力。当您登录到凭证存储时,它会将解密的凭证放入一个新的 Python 内核中。为了获得凭证,您需要访问这个内核。因为每次启动凭证存储时内核的标识符都会发生变化,这增加了一定程度的混淆。

这个 JupyterLab 扩展的kernel_connector模块从前端获取 kernel-id,并提供对保存凭证的内核的方便访问。

当您停止凭证存储时(使用 stop 图标),持有凭证的内核会立即停止。因此,您的凭证会立即被阻止访问。如果您现在试图访问它们,库将抛出一个异常。如果您再次登录,您可以立即再次访问,而无需重启内核。

易于安装

您可以使用以下命令安装 JupyterLab 凭证存储库及其依赖项:

apt-get install nodejs -y
apt-get install npm -y
jupyter labextension install @lean-data-science/jupyterlab_credentialstore

您还可以使用JupyterLab-Configurator为您自动创建一个脚本控制的容器化 JupyterLab 环境。在配置器中,只需选中使用 JupyterLab 凭证存储选项。关于JupyterLab-Configurator的介绍见这篇文章

容器化的 JupyterLab 环境不仅方便使用,而且进一步增加了安全性。容器将保存凭证的内核与系统的其余部分分开。如果有人想访问这个内核,他需要首先进入容器的环境。

下图描述了 JupyterLab 凭证存储库的架构。

The architecture of the JupyterLab Credential Store

支持向量分类中的核技巧

原文:https://towardsdatascience.com/the-kernel-trick-c98cdbcaeb3f?source=collection_archive---------0-----------------------

内核技巧似乎是统计学和机器学习中最容易混淆的概念之一;它首先看起来是真正的数学魔法,更不用说词汇歧义的问题(内核是指:一种估计概率密度(统计)的非参数方法,线性变换 T 映射到零向量的向量集v——即 T( v ) = 0(线性代数),通过组之间的同态映射到单位元素的组 G 中的元素集(群论),计算机操作系统的核心(计算机科学),或者与坚果种子有关的东西).

尽管理解核技巧有一些障碍,但是理解核在支持向量分类中是如何使用的是非常重要的。出于实际原因,理解这一点很重要,因为实现支持向量分类器需要指定一个核函数,并且没有既定的通用规则来知道哪种核最适合您的特定数据。

更概念性地,内核技巧还说明了一些关于表示数据的不同方法以及机器学习算法如何“看到”这些不同的数据表示的基本思想。最后,内核技巧中表面上的数学花招只是让人们进一步探索它的实际含义。

在这篇文章中,我当然不能完全解释内核的技巧。我相信对内核技巧的真正深入理解需要严格的数学处理,而这不可能在所谓的七分钟阅读中完成,更不用说由那些实际上只在很短时间内学习内核技巧和 SVM 的人来完成。但是,我将尝试做以下事情:

  • 简要介绍支持向量分类
  • 在支持向量分类的上下文中可视化一些非线性变换
  • 介绍核技巧在训练支持向量分类器中的好处在于独特的数据表示

I ntro 支持向量分类

支持向量分类基于一种非常自然的方式,人们可以尝试将数据点分类到各种目标类中。如果我们的训练数据中的类可以由一条线或某个边界分开,那么我们可以根据数据位于该决策边界的哪一侧来对数据进行分类。

在下面的二维例子中,我们可以用三条线中的任何一条来分隔数据,然后根据观察值是在线的上方还是线的下方来分配类别。数据是由特征 X1 和 X2 指定的二维矢量,分类标签为 y =1(蓝色)或 y = 0(红色)。

An example dataset showing classes that can be linearly separated.

像机器学习和生活中的几乎每个问题一样,训练线性支持向量分类器是一个优化问题。我们最大化裕度——分离属于相反类别的最近的一对数据点的距离。这些点被称为支持向量,因为它们是“支持”或确定决策边界的数据观察。为了训练支持向量分类器,我们找到了最大间隔超平面,或最优分离超平面,其最优地分离两个类,以便推广到新数据并做出准确的分类预测。

The support vectors are the points on the dashed lines. The distance from the dashed line to the solid line is the margin, represented by the arrows.

支持向量机在高维空间更难解释。很难想象数据是如何线性分离的,以及决策边界是什么样子的。p 维中的超平面是位于更大的 p 维空间内部的 p-1 维“平坦”子空间。在二维中,超平面只是一条线。在三维中,超平面是一个规则的二维平面。从数学上讲,我们有以下内容:

Equations defining a hyperplane and the classification rules defined by the decision boundary.

支持向量分类依赖于线性可分数据的概念。在数据不是完全线性可分的情况下,“软边界”分类可以适应训练数据上的一些分类错误。然而,在实践中,数据通常远远不是线性可分的,我们需要将数据转换到更高维的空间中,以便适合支持向量分类器。

非线性变换

如果数据在原始或输入空间中不是线性可分的,那么我们对数据应用变换,将数据从原始空间映射到更高维的特征空间。目标是在转换到更高维度空间之后,类别现在在这个更高维度特征空间中是线性可分的。然后,我们可以拟合一个决策边界来划分类别并进行预测。决策边界将是这个高维空间中的超平面。

显而易见,很难将高维数据可视化,因此我们首先关注应用于一维数据的一些变换。在这个例子中,左边的图片显示了我们的原始数据点。在一维中,这些数据不是线性可分的,但是在应用变换 ϕ (x) = x 并且将第二维添加到我们的特征空间之后,这些类变成线性可分的。

This data becomes linearly separable after a quadratic transformation to 2-dimensions.

目前,我们只是检查原始数据到更高维度的转换,允许数据线性分离。这些只是函数,还有许多可能的函数可以将数据映射到任意数量的更高维度。

这里我们应用变换 ϕ (x) = x 模 2

This transformation allows us to linearly separate the even and odd X1 values in 2 dimensions.

现在让我们看一个例子,在这个例子中,我们的原始数据在二维空间中不是线性可分的。这里是我们的原始数据,不能线性分离。

经过以下转换:

我们的数据在三维空间中可以线性分离(通过二维平面)。

Linearly separable data in 3-d after applying the 2nd-degree polynomial transformation

可以有许多允许数据在更高维度中线性分离的转换,但是并不是所有这些函数都是内核。核函数具有特殊的性质,这使得它在训练支持向量模型中特别有用,并且在优化非线性支持向量分类器中使用该性质通常被称为核技巧。

内核技巧

我们已经看到了更高维度的变换是如何允许我们分离数据以进行分类预测的。看起来,为了训练支持向量分类器并优化我们的目标函数,我们将不得不对变换后的特征空间中的更高维向量执行操作。在实际应用中,数据中可能有许多特征,应用涉及这些特征的许多多项式组合的变换将导致极高且不切实际的计算成本。

内核技巧提供了这个问题的解决方案。“诀窍”是内核方法仅通过原始数据观察值 x (原始坐标在低维空间中)之间的一组成对相似性比较来表示数据,而不是显式应用变换 ϕ ( x )并通过高维特征空间中的这些变换坐标来表示数据。

在核方法中,数据集 X 由成对相似性比较的 n×n 核矩阵表示,其中条目(I,j)由核函数定义: k(xi,xj)。这个核函数有一个特殊的数学性质。核函数充当修改的点积。我们有:

我们的核函数接受原始低维空间中的输入,并返回高维空间中的变换向量的点积。在某些条件下,也有定理保证这种核函数的存在。

通过考虑变换向量 ϕ ( x )的每个坐标只是相应的低维向量 x 中的坐标的某个函数,可以在某种程度上帮助理解核函数如何等于变换向量的点积。

例如,下面举例说明了二次多项式的核心技巧,并且我们在前面的图中以三维方式可视化了这种转换。变换后的向量具有作为两个分量 x1 和 x2 的函数的坐标。所以点积也只包括分量 x1 和 x2。内核函数也将接受输入 x1、x2 并返回一个实数。点积也总是返回一个实数。

On the left-hand side, we have the dot product of the transformed feature vectors, which is equal to our 2nd-degree polynomial kernel function.

这里的核函数是多项式核 k(a,b) = (a^T * b)

核技巧的最终好处是,我们正在优化以适合更高维度决策边界的目标函数仅包括变换后的特征向量的点积。所以我们可以直接用核函数代替这些点积项,甚至不用 ϕ ( x )。

In the bottom equation, we replace the dot product of the transformed vectors with the kernel function.

请记住,我们的数据只能作为高维空间中的向量 ϕ ( x )进行线性分离,我们正在这个高维空间中寻找最佳分离超平面,而无需计算或者实际上甚至不知道任何关于ϕ(x).的事情

图论发现的王者

原文:https://towardsdatascience.com/the-king-that-graph-theory-discovered-8cce31a3cd26?source=collection_archive---------17-----------------------

这是为那些可能在数据科学环境中使用网络的人解释网络原理的系列文章的第四篇。第一篇文章,主要讲图论的起源和图的基本性质,这里可以找到

2012 年 8 月的一个早晨,在英国中部莱斯特的一个停车场,一台机械挖掘机开始切入混凝土表面。许多感兴趣的观众都在场,抱着一线希望,希望可能会发生一些惊人但极不可能发生的事情。

一些艰苦的侦探工作让一群业余和专业历史学家相信,这可能是 500 多年前理查德三世——弯腰驼背的英国国王,在 1485 年博斯沃思菲尔德战役中惨遭杀害——被随意抛弃的地方。在捐款和众筹的支持下,他们筹集了足够的资金,并获得了在当地议会大楼停车场进行有限考古挖掘的批准。他们激动得无以复加。其他人,包括在场的学术和专业考古学家,都持怀疑态度。

The skeleton of King Richard III discovered in Leicester in 2012

第一次切割是在停车场的一个区域,标有一个看起来神秘的字母 R。这可能表明这个停车位是为某个重要人物保留的,但事实上,没有人能解释为什么那个 R 会在那里以及它意味着什么。

几个小时后,在字母 R 的正下方,他们发现了一具驼背的骷髅。

这是现代最惊人的考古发现之一的开端。但是,他们如何证明这具骨骼无疑就是国王理查德三世呢?它清楚地显示出一生都饱受脊柱侧凸的折磨——这与历史上对国王理查德三世的描述有着长久的联系。

随后对骨骼的分析表明,它可以追溯到 15 世纪晚期,并且享受丰富的肉类和鱼类饮食,所有这些都增加了这是国王的可能性。但是他们还需要一样东西来完成证明:DNA。

用 DNA 来证明这是理查德三世将是一个巨大的挑战。只有线粒体 DNA 或 mtDNA,在家族中通过母系遗传,一代代保持不变。因此,为了找到证据,需要找到一个活着的理查德三世的妹妹的后代,这个后代只能通过一个 500 岁的女性来追溯。大海捞针!

那根针原来是加拿大人迈克尔·易卜生,他在伦敦北部做木匠和家具修复工。从迈克尔的嘴里取出了一个拭子,提取了 mtDNA,并与从骨骼上提取的进行了比较。这是一场完美的比赛。

2015 年 3 月 26 日,挖掘出的国王理查德三世的遗体被带到莱斯特大教堂,在那里,在他去世 500 多年后,它以完整的英国教会仪式和盛大的仪式被重新安葬!

Graph databases focus on the properties of nodes and the relationships between them

图形数据库

由于图表数据库的出现,迈克尔·易卜生的皇室血统和无数其他家族血统之谜现在变得更容易被发现。

尽管图形数据库自 20 世纪 60 年代以来就存在于高度专业化的圈子中,但它在 2005 年左右才开始进入企业技术领域。与更常见的将信息存储在链接表中的关系数据库不同,图数据库背后的原理与数学图论中的原理完全相同(有关图论的简介,请参阅本系列以前的文章)。在与人的研究相关的领域中,图形数据库可能特别有用。

每个“顶点”或“节点”可以存储关于人或物体的信息。每条“边”都存储着它所连接的节点之间的关系信息。这允许更灵活的查询。通过查询节点和边,您可以回答类似“显示所有与此人一起发表过论文的人”这样的问题。在数学谱系项目的网站上,通过查询图形数据库,我可以使用边来追溯我的数学谱系到像狄利克雷、泊松和欧拉这样的巨人。我也可以通过查询节点来了解我的或者他们的博士论文题目。

显然,像脸书、Twitter 和 LinkedIn 这样的社交媒体引擎是由图形数据库大量支持的。边缘将你与你的追随者或关系,以及你的喜好联系起来。当脸书最近引入了更广泛的反应(如愤怒、爱)时,他们基本上只需将这些添加到他们的图形数据库的边缘属性中。

系谱学也是一个被图形数据库大规模支持的领域的很好的例子。Ancestry.com在其节点中存储个人的传记信息(出生日期、结婚日期、照片、文档),在其边缘存储关系数据(母亲、父亲、兄弟、姐妹)。当您查看某人的家谱时,您正在查询该人的图形数据库(尽管一种特殊类型的图形被称为树—参见此处 了解图形类型的简介)。

建立图形数据库

图形数据库的设置和配置相对简单,目前市场上已经有一些成熟的图形数据库产品。 Neo4j 是目前最流行的图形数据库,适用于大多数用例,但也有很多其他的。对于任何以关系为主要分析焦点的用例来说,图数据库将证明优于传统的关系数据库。它将更快地处理查询,并且更容易配置和调整。您可以通过更高效的查询来询问更复杂的问题。

在大多数图数据库中,如果你熟悉图论,查询语言是非常直观和容易学习的。 Neo4j 的查询语言 Cypher ,用括号将节点括起来,如(p),用箭头表示边/关系,如-->。比如说,你可能想使用 Neo4j 来找到你最亲密的朋友,他们可以教你关于 Neo4j 的知识——你可能会这样使用:

*MATCH (you {name:"You"})
MATCH (expert)-[:WORKED_WITH]->(db:Database {name:"Neo4j"})
MATCH path = shortestPath( (you)-[:FRIEND*..5]-(expert) )
RETURN db,expert,path*

当您拥有可以重新配置以表示人或对象之间的连接的现有数据时,设置图形数据库引擎特别有意义。这方面的例子可能包括:

  • 根据时间表或财务数据在项目中一起工作的时间
  • 来自电子邮件元数据的电子邮件或日历连接
  • 日志或出勤记录中的共同参与事件
  • 发布记录的文档协作
  • 公开的关系,如导师或教练关系
  • 实体之间的契约关系

如果您没有玩过图形数据库,请尝试找个机会测试一下。亲身体验会让你真正感受到他们的力量。如果图形数据库可以在几秒钟内找到你所有的第五代表兄弟,想象一下他们在一个大型组织中可以做什么。

在本系列关于网络分析的下一篇也是最后一篇文章中,我将探讨网络如何为研究现象提供难以置信的机会,并为网络支持的未来研究提供思路。

最初我是一名纯粹的数学家,后来我成为了一名心理计量学家和数据科学家。我热衷于将所有这些学科的严谨性应用到复杂的人的问题上。我也是一个编码极客和日本 RPG 的超级粉丝。在LinkedInTwitter上找我。**

懒惰的数据科学家

原文:https://towardsdatascience.com/the-lazy-data-scientist-e7d8b0de4ef?source=collection_archive---------9-----------------------

没有什么比白费力气更令人沮丧的了

懒惰的数据科学家不是你团队中做最没用的工作的人,他们很可能是工作最有用的人。他们只是最讨厌看到努力付诸东流的人。

在做错题

最糟糕的浪费努力是把卓有成效的努力用在了错误的问题上——想想如果努力被正确应用会是什么样子,这简直令人心碎。在某些圈子里,这被称为“第三类”错误——对错误问题的正确回答。

这是一个可以说没有得到应有关注的领域——有时似乎有一种假设,即仅仅通过经验,大多数人最终会学会识别真正问题的艺术,可能是通过不愉快的经历。然而,根据定义,经验实际上意味着“在找到正确的方法之前,反复以错误的方式去做”,所以与向他人学习相比,自己学习可能会浪费很多精力。

可以找到少量帮助的一个地方是六适马过程的“T4”、“定义”阶段,在这里使用了确保项目专注于客户真正问题的工具。虽然并非每个工具都适用于数据科学环境,但了解每个工具的基本原理将为如何发现客户的真正问题提供重要线索。

最后一个问题——顾客错误识别自己的需求——值得自己研究,一些有趣的和有用的讨论来自医学领域。例如,虽然数据科学家采访客户或顾客以了解他们的需求存在许多重要差异,尤其是客户或顾客通常是由多人代表的组织,但在第二篇链接文章中发现的倾听技巧等问题上有许多可以应用的内容。

未能重用自己的作品

虽然看到大量工作浪费在解决不存在或对企业不重要的问题上特别令人心碎,但看到努力浪费在一次又一次地执行相同的任务上也是如此。

airbnb 团队在这方面做得很好,至少在他们的账户上,并且他们不是唯一看到好处的。现在,尽管这两个相关的故事都强调 R 对创建库有很好的支持,但显然它也可以在 Python 中实现。

事实上,即使是像 SQL Server 这样的数据库,也支持那些希望以某种形式创建可重用代码的用户(显然不同的实现会有所不同)——例如,这个 MOOC 讨论了如何将用户定义的函数和存储过程应用于 SQL Server 数据库。当然,虽然这只是一个 MS SQL Server 示例,但是大多数主要的数据库实现都有自己的方式来达到相同的目的。

被新奇事物催眠

人们很容易花很多时间去寻找最新最棒的东西,尤其是更新、更闪亮的软件包,它们与旧的软件包做相同的任务,但对表现形式做了某种改变,使它们看起来更“最新”。

当你除了花费精力去学习那些并不真正必要的华而不实的工具之外,还没有花精力去学习那些必要的基础知识时,问题就变得更加复杂了。特别是,如果你错过了学习如何组织数据进行分析的基本方面,以及如何在更高级的建模之前执行严格和有针对性的探索性数据分析,那么你就在为解决问题做徒劳的努力。

造成他人工作

当数据科学不是组织的产品时,我们从其他人那里获得的时间就是他们制造或销售产品的时间,这是理所当然的。即使数据科学家为咨询公司或类似机构工作,他们的工作或多或少直接向客户收费,你也需要他人的帮助。

做得很好,没有被发现

即使你正在解决正确的问题,如果你的模型展示得不好,或者根本不展示,你仍然会在最后一个障碍上绊倒。如果没有人使用你的模型,或者即使使用的人比应该使用的少,全部的潜力也不会实现。

仔细考虑如何销售你的模型,以及如何确保它得到选择使用。推而广之,你也应该通过精心维护来保持它的使用。总的来说,一个伟大的模型得到它应得的使用还远远不是必然的;虽然众所周知的谚语是“数据科学家将 80%的时间花在数据准备上”,但我还是要说“模型被实现的数据科学家将会花 80%的时间来解释她的模型及其结果”。

写简短的博客文章

如果你写了一篇冗长的解释,没有人会接受你关于如何事半功倍的建议;我就此打住。

眼球数据科学的危险

原文:https://towardsdatascience.com/the-lazy-jobless-reality-or-myth-b3adfdc23ffa?source=collection_archive---------8-----------------------

失业救济金会让人变懒吗?

本周在斯坦福大学的公共财政 III 中,佩尔松教授谈论了最优保险设计。这门课总共有 78 张幻灯片。我会把它们编成一段轻松的 7 分钟的读物给你。

眼球数据科学的危险

失业救济金会让人变懒吗?如果是这样,在其他条件不变的情况下,福利越高的州失业率越高。

瞧,到处都是红线在蓝线之上!

在这一点上,任何不知情的人都会忍不住做出如下结论:失业救济金会让人变懒。

那么,我们应该一劳永逸地停止支付失业救济金吗?

毕竟,所有的州都有相同的失业率——唯一的区别是,福利低于平均水平的州似乎更快达到目标。

相关!=因果关系

相关性并不意味着因果关系。

当我们看到(高福利,高失业率)时,除了“失业福利让人变懒”之外,还有很多可能的解释。

这里有另一种解释:高收益的州有更多的知识型产业。他们需要更长的时间来找到合适的员工。这也符合(高效益,高失业率),但与人懒无关。

Eyeball data science: knowledge-based states have higher benefits.

这个解释是否正确并不重要。我要说的就是,在得出“福利让人变懒,所以应该取消失业救济”的结论之前,我们先慢下来。

让我们回到基础:

  1. 失业救济金如何影响失业时间的长短,如果有的话?
  2. 如果福利增加了失业率,有多少是因为逃避?
  3. 最后,失业救济金的最佳水平是多少?

在下面的讨论中,我将从问题 3 开始,这样我们就可以对这个问题有一个总体的了解。在这个过程中,我将讨论一些很酷的数据分析来解决问题 12

寻找失业救济金的最佳水平

为什么很难

本质上,寻找最佳社会保险设计是一项成本效益分析。我们想帮助那些运气不好的人,尽管他们自己并没有错。但我们也承认,利益鼓励逃避。为了找到最优的失业救济水平,我们需要回答一些基本问题:

  • 当人们失业时,失业救济金能帮助他们平稳消费吗?这是一个重要的问题,因为如果你能简单地搬去和你的父母一起住,并且你们三个都有足够的食物和支付账单,我们就不需要政府介入并取代一份有效的失业保险。
  • 失业救济金会鼓励逃避责任吗?它是否阻碍了人们尽最大努力寻找?或者,它允许人们坚持寻找合适的工作吗?

做不可能的事

最优社会保险问题可以形式化为一个动态规划问题。详情请 PM 我或阅读哈吉·柴提教授的论文

下面是基本结果:

这里有一些关于符号的注释:

  • C_l: 低状态下的消费(即失业时);
  • C_h: 高状态下的消耗(即就业时);
  • U(C) :一个人消费的效用$ C;
  • U'(C): 消费水平\(C 时效用函数的导数说白了,一个人已经在消费\)C 时,他的消费边际效用多$1
  • e: 求职努力程度。为简单起见,Chetty 将找到工作的概率设为 e。
  • b: 失业救济金水平
  • Epsilon_(1-e),b :当失业救济金 b 增加 1%时,一个人要懈怠的百分比是多少 (1-e)

关键见解

  • 直觉上,这证实了我们的直觉,即最优失业权衡了消费平滑的好处和推卸责任造成的效率损失的成本。
  • 我们需要估计这个公式中的所有东西,从而得出失业救济金的最佳水平。让我们开始吧。

发现ε:当福利增加时,失业持续时间如何变化?

第一次尝试:危险模型

通过估计连续工资和福利历史的风险模型,Meyer 回答了以下问题:

定义为(就业人数/失业人数)的风险率如何对失业救济金的变化做出反应?

以下是他从 1978 年至 1983 年间居住在 12 个州的 3365 名男性中收集的数据:

福利增加 10%会导致危险率降低 9%。这意味着预期失业时间增加了 9%!

值得注意的是,最近的研究使用了更大更好的数据,包括 Meyer 本人的数据,得到的估计值更小,约为 5%。

估计 e:搜索工作

随着调查数据越来越细,经济学家现在对人们花在找工作上的时间有了一个相当好的估计。

放弃最佳利益

缺失的最后一块拼图是 U'(C)s,找到消费数据很容易,但找到效用函数就不那么容易了。因此,经济学家所做的是取消各种效用函数的最优收益水平。

如果你相信人们有不变的相对风险厌恶,一致风险系数在 2 左右,那么最优收益是总工资的 5%,远低于我们所拥有的。

****

那么,失业率的增加有多少是由于拖延造成的呢?

根据哈吉·柴提(2008) :

40%,这意味着 60%的额外失业时间被用于寻找更好的匹配。

Chetty 是如何设法分离这些影响的?

****强大的洞察力:失业救济金的增加做了两件事:给你钱+扭曲相对工资(即降低工资福利比)。

它们如何影响你的搜索工作?直觉上,当你手头有更多现金时,你会感到寻找自己不喜欢的工作的压力较小(又称“流动性效应”);当工资与福利的比率较低时,你会觉得工作动力不足(也称为“道德风险”)。

流动性和道德风险都会降低你的搜索努力——只不过流动性效应是可取的,而道德风险则不是。

重要见解:为了估计一种效应,我们需要使另一种效应静音。

要估计道德风险效应,看看那些已经有足够钱的人。即使没有任何额外的帮助,这些人也不会从事不受欢迎的工作。实际上,流动性效应被弱化了。

****

对于净财富最高的四分之一的人来说,当福利水平增加时,失业率没有显著增加!

将此与我在本博客开始时展示给你的净财富最低四分之一人群的图表进行比较:这表明许多穷人被迫接受不太理想的工作,因为他们等不起!

但是等等!你在假设穷人和富人是可比的!

如果你同意共和党的思路,认为富人变富恰恰是因为他们有更好的职业道德,那会怎么样?

没问题!

全能的切蒂有另一篇论文 用卡和韦伯 2007 年的 来处理这种担忧,用的是来自奥地利建筑工人的遣散费数据。

遣散费是一种失业保险,相对于失业,它不会扭曲工作的吸引力。因此,它将捕捉流动性效应,而不是道德风险效应。实际上,我们正在抑制道德风险渠道,以估计流动性效应。****

在奥地利,只有当你的工作期限超过 36 个月,你才能得到遣散费。让我们比较一下低于和高于 36 个月门槛的人的失业持续时间。这些人应该蛮有可比性的。****

****

左图显示流动性效应巨大!

当没有足够积蓄的人,真的需要更加努力的去寻找。

右边的图表表明,员工在压力下接受了不太理想的工作匹配,这转化为更短的后续工作持续时间。

结论

对失业保险文献的全面讨论超出了本博客的范围。但是,教训是明确的:

眼球数据科学危险!

每当你看到暗示性的情节,问问你自己:有没有其他的叙事可以产生这种模式?

现实很少是非黑即白。

在这种情况下,失业保险是好的,因为它帮助人们找到更好的工作匹配(60%),但它也鼓励一些人拖延(40%)。

在现实世界中,任何改变都有成本和收益。真正的问题很少是“是或不是”,而是“值得吗?”

研究是不断发展的!

有了更好的数据和更好的设计,科学家们不断更新他们对关键参数的估计。甚至我讨论的 Card,Chetty 和 Weber (2007)的论文也不是无懈可击的。你能发现致命的弱点吗?如果你认为你已经找到了,请在下面留下回复:)

下次见!

墙后的生活——扎克伯格仓库之旅

原文:https://towardsdatascience.com/the-life-behind-the-wall-b00af694c3c5?source=collection_archive---------16-----------------------

开场白

2018 年 3 月,剑桥分析(2013–2018)丑闻曝光于大众。大约 5000 万脸书用户的信息被“泄露”给了分析公司“剑桥分析”,据称该公司将这些信息用于选举宣传目的。仅仅两个月后,我的电子邮件就被各种网站的消息淹没了,这些消息都是关于根据 GDPR(一般数据保护条例——欧盟关于个人对自己信息的权利的条例)更新隐私政策的,该条例允许人们访问关于他的所有存储信息。

GDPR emails

由于这些事件,我想准确地找出我的个人资料中保留了哪些信息,以及这些信息如何讲述我的故事。

数据

我打开我的脸书账户,在“设置”选项卡上点击了个位数,我的桌面上已经有了一个令人印象深刻的目录树,里面充满了关于我的数字自我的有趣信息。

Data downloaded from Facebook

这些数据包括(摘自脸书网页):

Data Stored on Facebook

第一眼,我看到了一个只有一行字的文件,说明我被描述为“开始他的成年生活”。在另一个文件中,我看到了所有符合我兴趣的广告关键词的列表(它们相当准确)。不管怎样,我已经知道我会找到一些有趣的信息。

现在,我正式兴奋了。

艰苦的工作

第一步是手动检查数据,总共大约 1200 个文件,其中只有 47 个实际上需要字段映射(如果您想知道为什么只有 47 个需要映射,那是因为有 1150 个相同格式的文件。每个文件代表我曾经与之聊天的不同的人/群体)。

有了编程语言“Python”和数据分析软件“Tableau”,我开始处理所有的信息。花了几个小时编写代码,以统一的方式将所有不同的信息标准化(处理希伯来语、从大量文本中提取姓名模式、按主题对信息进行分组、创建汇总表等)。).对于那些不熟悉这些任务的人,我不得不这样说:

Raw Data

变成这样:

(Coherent information)

现在所有的信息都在它正确的位置上,我们都准备好了一些乐趣!

吊儿郎当

概述

作为已经广泛使用脸书超过 10 年的自豪的 Y 一代代表,很容易猜测(正确地)脸书在我的个人资料中保留了相当多的信息(忽略媒体,有 21mb 关于我的数据,这是相当多的)。但是这些信息说明了我什么呢?

首先,我想随着时间的推移检查我在社交网络上的活跃程度,所以我创建了一个顺序评级机制,衡量我每年的活跃程度,考虑了这些年来我发起的喜欢、聊天天数、回复和帖子的数量。

The extent of my activity in Facebook over years

对于那些想知道的人来说——2011 年活动增加的一个可能的解释是,这期间有多少空闲时间,因为我刚刚高中毕业,在被招募入伍之前有一个长假。此外,2010-2011 年是脸书在以色列最好的几年,这一事实得到了以色列“脸书”一词的谷歌搜索趋势的支持。:

Amount of the search term “פייסבוק” (“Facebook” in Hebrew) on google `over the years in Israel

无论如何,我可以说,在过去的十年里,我在社交网络中相当活跃,因此,我将允许我自己将高可靠性归因于我的脸书数据的长期统计。

告诉我你的朋友是谁,我就告诉你你是谁

今天,我的脸书账户有大约 1500 个朋友。快速计算会得出,在过去的十年里,我平均增加了 12 个(5 个?)每个月的朋友。为了集中精力探索,我决定(几乎是任意地)将数字 23 设定为一个阈值,定义为“高度社会化的月份”在我增加 23 个或更多朋友的每个月,我都试图根据那个月发生的重大事件来描述这一现象(这是我记忆所及),但我也试图观察我每月在脸书的活动与我的“朋友趋势”之间是否存在关联

Monthly friend-trend over the past 10 years. the green color indicates a section above the threshold; the gray graph in the background represents my monthly activity on Facebook (according to the same ordinal rating I presented before). The sharp-eyed people will notice sections where there is considerable congruence between the trends of the two graphs.

很高兴看到过去几年里我在哪里结识了大多数脸书朋友。但是,还有什么更重要的吗?如果脸书只能根据朋友的趋势和与他们的联系来描述我生活中的里程碑呢?例如,他们可以用有趣的视频和恼人的音乐向我展示这些信息(就像他们经常做的那样)?或者,例如,脸书会给所有 18-21 岁(以色列的军事年龄)有相似朋友趋势的用户绘制地图,并找到最有可能拥有相同军事背景的人群?那更好。但是你明白我的意思;可能性无穷无尽。

一年级朋友

我不会轻易放弃对脸书的“喜欢”。我只“喜欢”我真正喜欢的东西。说到爱情,脸书的“爱情”反应也是一种罕见的商品。更具体地说,我认为“爱”的反应比“喜欢”的反应更有价值五倍,而一个评论比两个“喜欢”更有价值,我在聊天中与某人交谈的不同次数就其价值而言等于一次评论互动。当然,那只是我看待事物的方式,但是嘿!似乎我已经不知不觉地创建了一个评级模型来衡量我对脸书朋友的感情!

于是,我用上面提到的评分方法进行了一次测试(免责声明——不同于“喜欢”的回复在 2016 年才开始使用)。在清除了一些来自低分数用户的干扰后,我有了合理数量的数据来分析,因此我自动编辑了一个可以被定义为“脸书密友”的人的列表这甚至没有看我的内容。(回复模式、聊天中的关键词、标签评论数量等。).这意味着我可以只根据我上面提到的互动的存在来绘制我的数字社交朋友群。

Top friends according to my rating system, arranged in bubbles. The size of the circle as the size of the score; the color of the circle according to the score (from darker to brighter)

更有趣的是,我可以看到这些年来我的(数字)社交朋友群的变化。

Same as the graph above, per year 2009–2018 (Yes, it looks like an image from a Biology book.)

当我为这些信息在多大程度上正确地讲述了我的生活故事而激动时,我不禁想到如何将它带入下一个明显的阶段,关系。

作为概念的证明,我还检查了我过去的成人关系的社交互动量:

For privacy reasons, you will not see names/dates/numbers here. different colors indicate different relationships on a timeline, and the number of points is the number of times the interaction score has exceeded a certain threshold.

事实上,上面提供的信息与实际关系相符。这意味着绘制出“重要关系”及其持续时间是非常可行的。如果我考虑额外的参数,如性别、年龄、关键词、信息发送/接收比率、标签、取消喜欢电影《星际穿越》(must)的个人资料等(发挥创意,脸书有各种数据),这样的脸书算法不仅可以为我提供潜在的伴侣,还可以估计性取向,预测恋爱成功的可能性,事实上,它们可以做任何事情...想想看,没有什么可以阻止脸书成为最好的约会平台(事实证明,我是指出明显的)。

外景,外景,外景

不幸的是,这些年来我不允许脸书访问我的设备位置,所以脸书的数据库里没有这些信息。但为了不破坏我们有趣的旅程,我去了谷歌时间线(为那些不知道的人,这里是你在地图上的生活)并下载了这些年来从我的设备中收集的所有信息。

我做的下一件事是在脸书上绘制我曾经回应过的所有脸书事件,将它们钉在时间轴上,并将这些信息与我的谷歌位置历史相关联。这是它的样子:

Timeline bars = Events marked as ‘going’. Points on the map = Location from these very same dates

Specific example — my route on the day G&R performed in Tel Aviv — Welcome to the jungle baby!

如果你相信我对每一个事件做出反应的到达状态,那么就很容易在地图上确定事件的位置,反之亦然——很容易确定我是否出现在事件现场。那又怎样?嗯,也许脸书会根据我过去的行为向我提供我可能感兴趣的活动,或者脸书会与谷歌合作,标出哪些年龄组在什么时间、什么地点,这样他们就可以向这样那样的企业出售这些信息。再说一次——这只是取决于脸书想要获得多大的创造力。

其他一些东西

还有许多其他的发现,但是在这个阶段,我觉得这个问题已经被讨论完了,因此,我不会对以下数据类型进行更多的快速截图:

Major activity hours on Facebook (there is nothing like a coffee break at 14:00)

Posts on my wall by months (It’s highly visual that my friends remember my birthday in January every year)

The most common words I make use of — mainly Hebrew pronouns, unsurprisingly. Imagine taking all my chat history and feed some machine learning algorithm with it (Did someone say Black Mirror S02E01?)

不幸的是,我不能给你提供对我的搜索历史的有趣分析,因为我时不时会清除它,但是聪明的读者可以想象他可能会在自己的搜索历史中找到什么宝藏。

收场白

依我拙见,用户世界大致分为三类:冷漠型、焦虑型和放任型。

第一组——如果你已经读到这里,做得很好。

第二组——我希望至少现在你已经阅读了这篇评论,你会确切地知道什么样的信息存储在脸书数据库的某个深处。出于您的考虑,在任何符合 GDPR 法规的组织中,您都可以要求删除您的个人信息(直至若干例外)。

第三组——你只是被邀请为它所拥有的丰富信息和机会感到兴奋,但也尝试和思考如何利用它来更好地造福用户。如果我们已经生活在一个每平方厘米都有广告的现实中,而我们很少与陌生人面对面交谈,难道我们不希望得到与我们需求最相关的广告吗?我们不是更喜欢最有希望的比赛吗?

强调存储在我们每个人身上的信息在目的、容量和意义上都是非常不同的,这一点非常重要。有许多因素会影响数据的完整性,其中最主要的是我们在互联网上的不同行为模式,我们在社交网络上活跃的时间,以及我们授予我们的应用程序的权限。此外,多年来,脸书不能被视为单一一致的信息来源。重要的是要考虑 Instagram、WhatsApp 和 Twitter 等其他应用程序多年来的觉醒,以及它们影响我们行为的方式。

我并不假装对社交网络/统计模型/行为科学有什么深刻的了解。这里介绍的所有研究完全基于我的直觉和个人观点,并不依赖于许多比我更好的人可能已经完成的先前研究,但我确实希望我已经实现了让这些信息可访问并说明其可能用途的目标。

由 Yoav Tepper 撰写,又名:

“开始他的成年生活”

与关于音乐、技术、艺术和度假主题的广告互动

拥有独特的指纹:

分析的局限性

原文:https://towardsdatascience.com/the-limits-of-analytics-101d93623adf?source=collection_archive---------4-----------------------

您的数据是否超出了极限?

Photo by Lukas Blazek on Unsplash

如今,在没有结构化分析的情况下推出一项产品或服务就像瞎飞一样。衡量和改进对于创造人们关心的东西至关重要。这是常识(或者至少应该是)。

虽然我很高兴看到客户和合作伙伴采用数据驱动的工作方式,但我开始看到数据被赋予过多信任的情况。为了确保您获得有效的洞察力以做出明智的决策,您必须首先回答两个关键问题:

我们在建造正确的东西吗?

你的分析,从定义上来说,提供了一个已经存在的过去的观点。这意味着您可以增量地改进流程,并且可能发现一些潜在的需求——但是不要认为它会告诉您需要构建什么。你可以得到验证,而不是确认。

例如,假设你有一个社交应用,用户不经常上传照片。这是否意味着你应该在应用程序中突出该功能?创建上传照片的奖励?或者干脆去掉这个功能?这些想法中的每一个都应该被提炼、测试和衡量,以确保我们理解根本原因。

这个问题可以在分析的帮助下部分解决,使用特别的措施和工具来评估想法。然而,这与您用来衡量核心产品和业务目标的结构化流程大相径庭。在任何情况下,数据只会补充深入的用户访谈、市场研究和其他定性技术。

我们问的问题对吗?

今天的工具提供了大量现成的仪表板和报告,包括“普遍”适用的 KPI:活跃用户、会话长度、崩溃率等等。但是,一般的措施仅仅是一般的。要获得可以操作的数据,您必须:

  1. 添加或调整对业务价值有直接影响的指标。跟踪在你的具体案例中导致转化的流程,标记积极和消极的交互,确保得出的数字实际上告诉你事情是否如你预期的那样工作:什么是可接受的响应时间?有多少用户应该完成注册漏斗?
  2. 删除对你的目标不重要的措施。有 50 个关键绩效指标的报告和没有报告一样有用——你根本不可能去追踪那些针。一个特别讨厌的威胁是虚荣心——我们都喜欢看到大量的下载和活跃用户,但这真的能维持增长吗?对于许多产品来说,留存率、转换率和病毒系数对底线有更大的影响。

你只能得到你所提问题的答案。如果你不专门去追求那些为你的用户创造价值(或者破坏价值)的东西,你从数据中得出的结论就不可靠。

结论

毫无疑问,分析应该是你在产品团队工作中不可或缺的一部分,但它不是唯一的工具。记住数据能告诉你什么,不能告诉你什么,并使用额外的方法来确保你看到了全局,并为正确的人构建了正确的东西。

最重要的是,不要被图表和数字冲昏了头脑。创建精确且相关的指标:每个 KPI 如何影响您的业务目标?如果此 KPI 向上或向下移动,您将采取什么措施?

你有数据误导你的例子吗?分享你的想法,继续关注我们关于健康数据怀疑论的(有点哲学的)讨论!

数据科学的局限性

原文:https://towardsdatascience.com/the-limits-of-data-science-b4e5faad20f4?source=collection_archive---------5-----------------------

组织无法实施数据驱动流程的根本原因

所表达的观点仅代表我个人,并不反映联合参谋部、美国陆军、国防部或美国政府的官方政策或立场。

我几乎完成了联合参谋部的一项任务,在一个组织中,我负责监控十个作战司令部、四个军种以及几个联合参谋部和国防部(DoD)参谋部之间的资金账户。这个多样化的领导小组一直在努力识别和描述账户对联合部队的影响,特别是在它所提供的价值方面。看着领导者努力寻找意义,即使有看似大量的数据,也让我对数据工具不太适合解决的挑战有了深入的了解。

这里描述的三个极限,从根本上来说,挑战是如此的根本,以至于我可以坦然地宣称这是数据科学的极限。数学意义上的极限——无法超越的东西。我可能曾经相信,如果我们能够更好地理解数据和它们之间的复杂关系,洞察力将得到启发,领导者将能够做出更快更好的决策。我不再认为这是事实。数据和证据有它们的位置,但也有限度。这些限制可能比你想象的要宽泛。

本文的主要目的是描述数据科学的这三个限制,并提供一些在您的组织中如何发现这些问题的线索。第一个问题是哲学上的,第二个是心理学上的,第三个问题涉及商业动态。目标是像应用专门工具一样应用数据科学,如果你有这些问题,那么你需要应用不同的工具。

一个公开的价值问题

你所在组织的领导层是否呼吁让他们的钱发挥最大价值,但却不能清楚地表达他们所谈论的价值。他们是否声称投资回报,但他们不是指回报的技术定义(以美元计),而是指某种其他模糊概念(如准备程度、弹性或能力)产生的回报?根据不同的目标,不同的利益相关者看到他们的计划的价值了吗?

这些陷阱表明,对于你的组织中的价值是什么,确实存在一个公开的问题。领导者不是试图理解他们如何创造价值,而是试图理解他们的价值是什么。如果你的主要工作是定义一个组织应该拥有什么样的价值观,那么数据科学是没有用的。

没有一种算法能够学习应该优化、最大化或最小化什么。

从广义上讲,数据科学(人工智能/机器学习)是一种经验性的努力。机器使用数学和算法来检查大量数据,以找到隐藏的见解,并更好地解释实际情况。更好地理解这些关系可以帮助领导者做出决策,但前提是他们必须就为什么要做出这些决策达成一致。

在 2011 年的电影 Moneyball 中,数据科学和统计学帮助奥克兰运动家队的经理们获得新的人才以赢得比赛。在电影中,评价球员的新方法和旧方法之间有很多冲突,但没有人不同意球队应该赢得比赛。老球探和年轻的统计学家都同意球队应该赢得更多的比赛。

但是赢得比赛的价值是一个公开的问题。这不是一个算法可以自己学习的东西。数据驱动的方法也许能够学会如何赢得游戏,但它可能很容易就学会了如何实现利润最大化。而且没有合理的方法将利润最大化与赢得比赛,或者任何其他潜在的组织目标结合起来。

撤销项目 中,迈克尔·刘易斯继续描述了美国在应用数据驱动战略方面的成功如何影响了大量行业,从体育到总统竞选。他还继续描述了当这种新策略没有产生结果时,组织已经回到更经典的方法的弧线。

但是数据科学的极限不在于数据驱动战略的好处。限制是关于选择哪些值是重要的。这几乎是在紧张的价值观之间的某种妥协。成本和安全,形式和功能,坚固性和复杂性。

你可能会说,组织应该达成妥协。接受一个目标的某个水平,最大化另一个目标。但是,在目标上妥协的过程本身是一个人的过程,而不是一个可以留给机器的过程。当然也不是数据能帮你解决的问题。

Credit: Wikipedia Commons

这个问题最早是由苏格兰哲学家大卫·休谟提出的,通常被称为是-应该问题或自然主义谬误。

…我惊奇地发现,除了通常的命题组合,,不是,我没有遇到一个命题不与一个应该或者一个不应该联系在一起。这种变化是察觉不到的;但是,这是最后的结果。因为这个应该,或者不应该,表达了某种新的关系或者肯定,所以有必要对其进行观察和解释。

数据科学找到了解释世界本来面目的复杂方法。但是,每当有人声称一个组织应该如何处理这些信息时,他们就在事实和价值之间建立了某种新的关系,这必须得到解释。

数据本身不能指导决策,因为它们是引导你实现目标的一种手段。没有目标,数据没有任何用处。领导者处理的许多问题与重要的事情关系不大,与应该重要的事情关系更大。

人际主观数据

您的组织是否依赖大量自我报告的主观数据?

在军队中,衡量一支部队是否训练有素或准备就绪的方法主要是依靠该部队指挥官的直觉和智慧。但是你如何比较指挥官之间的这些判断呢?你能知道一个单位是否和另一个单位一样训练有素吗?

第二个问题源于人类心理学。威廉·詹姆斯在 1898 年偶然发现了试图测量疼痛的问题。医生可能会要求您对您所经历的疼痛给出一个数值。

这种方法的问题是 110 的范围不精确,其中 10 是“可以想象的最强烈的疼痛感觉”患者如何“想象”有史以来最严重的疼痛,并给自己的疼痛一个数字?从未到过战区的英国中产阶级男性可能很难想象还有什么比牙疼或网球受伤更让人痛苦的了。经历过分娩的女性,在那次经历之后,可能会将其他事情评为轻度 34 级。

罗宾斯博士将医生如何测量疼痛的困惑部分归因于当前阿片类药物的流行。我们感觉到的疼痛程度是一种主观状态,我们的语言和测量方法并不能像我们希望的那样帮助我们传达我们的内心状态。

传统的量表分配一个数字 1 =高度不同意,5 =高度同意,在比较个人价值观方面做得不错,但在比较个人之间或群体之间的事情方面做得很差。男人比女人感觉痛苦少吗?,数学专业的学生比心理学专业的学生更喜欢啤酒吗?

在一种测量理论中,这些类型的标度被称为序数标度。测量的序数尺度对于排序是有用的,但是将这种类型的数据用于加法和减法是不合理的。

试图测量主观事物(如指挥官对其部队执行任务能力的评估)的组织似乎受限于这些类型的数据。事实上,大多数政府数据主要是这种类型的。该机构依赖这些评估作为重要的信息来源。为了理解这种荒谬,我们需要简单介绍一下这些评估是如何产生的。

执行特定任务的评估被分解为从属任务。实际上,一个任务可以变成数百个任务。这些子任务被分配给不同的职能单位,以对其子任务进行评估(这可能是不同的指挥官,或组织参谋领导)。但是当有人(通常是准备经理或参谋长)必须从两个不同的功能单元收集输入时,他们就犯了前面提到的所有错误。一个指挥官对训练/准备就绪的理解与另一个不同。

与数据科学的第一个极限不同,这个问题有两条出路。然而,他们并不是没有自己的问题和并发症。

第一条出路是尝试并排除主观经验作为数据来源。论点可能是,随着数据集越来越大,我们将能够直接测量基本尺度的事物(时间、重量、温度等)。).组织可能会面临组合这些度量的效用问题,但是度量本身不再受制于个人的经验。我认为这个解决方案不令人满意。我将举一个例子来说明这一点。

一个军事单位可能有护送任务(驾驶多辆车从一个地点到另一个地点,同时为这些车辆提供安全保障)。在未来的世界中,所有的车辆上都有大量的传感器,我们可以想象关于车辆速度、位置和时间的输入。我们可以将这一点与其他数据结合起来,这些数据是关于士兵们在沿途遇到威胁时会采取什么行动的。

很明显,这些数据的任何组合都不能回答这个问题:“这支部队能有效地指挥护航吗?”这些数据可以被组合到某个车队索引中,但是回答业务问题需要对该索引进行其他解释。也许唯一的方法,也是最好的方法,可能就是问指挥官他们的部队是否能有效地指挥护航?

刘易斯描述了休斯顿火箭队总经理达里尔·莫雷在试图将数据整合到相关篮球能力时遇到的同样问题。

……即使是客观的、可衡量的信息,其有用性也是有限的。你需要,或者看起来需要,专家来观察工具的运行情况,以及在更好的竞争中,它们在玩不同的游戏时会发挥多大的作用。你需要球探来评估一个球员做他们知道在篮球场上最重要的各种事情的能力:投篮、得分、上篮。

解决这个问题的第二个方法是忽略主观数据的不合理组合,只使用主观报告的数据作为有用的输入。我们的愿景并不完美,但却行得通。我们的眼睛都有一个永久的盲点,但是我们非常依赖我们的视觉来穿越这个世界。

事实上,军方主要采用后一种方法。领导知道数据是主观的,我的评估和你的评估对于相同的事实可能是不同的(或者对于不同的事实可能是相同的评估)。但是这些主观评估就像组织的眼睛一样,为复杂的世界提供了一个粗略的方向。

商业动态和心智模型

约翰·斯特曼写了一本 920 页的厚书,讲述反馈和时间延迟对系统行为的影响。如果你对系统动力学不熟悉,这是一种理解、预测和管理复杂系统行为的有趣而有用的方法。

Credit: MIT

在最初被称为“生产-分配游戏”的“啤酒游戏”的现场演示中,经理们暴露于他们的决策对系统行为的影响。该游戏模拟了 50 周的决策,其中每个玩家决定订购多少箱啤酒。一条线上有四个参与者:零售商、批发商、分销商和工厂。玩家被告知,他们可以想订购多少箱子就订购多少箱子(生产没有限制),而且客户的需求可能会有所不同。目标是库存中有尽可能少的啤酒,但销售尽可能多的啤酒。

大多数人没有很好地考虑他们自己的决定对他们的队友——对整个系统——的影响。

游戏通常会变得紧张,因为参与者会目睹供应链中的牛鞭效应。系统的底层结构,游戏规则,决定了它的行为。

在系统动力学中,这些结构由因果循环图描述。这些图表描述了系统行为的原因,而不仅仅是机器学习揭示的相关性。

A causal loop diagram describing the number of product defects.

系统动力学从业者使用 cuasal 循环图来说明决策者的心智模型。心理模型解释了一个过程在现实世界中是如何工作的。共享心智模型很重要,因为没有共享心智模型,领导者就无法就新数据的含义达成一致。评估培训深受这个问题的困扰。如果领导者对培训和绩效之间的关系有不同的心理模型,那么他们可能会以非常不同的方式寻找和解释数据。

3 different mental models of the relationship between training and performance

如果你认为训练和表现之间的关系可以通过左边的图表得到最好的总结,那么你就没有理由认为停止训练是重要的。任何可以花在训练上的额外时间都会有利于你的表现。

如果你认为培训和绩效之间的关系有一个收益递减点,那么你会想知道在什么点上你的资源会得到更好的利用。在收益递减的时候,你可能想把时间或金钱花在其他能提高绩效的方面。

如果你相信右边的心智模型,那么你不仅会担心收益递减,还会担心公开培训。你会担心花费太多的资源进行培训。

这些心智模式都不正确。它们总结了一个人对未来的信念。有一些方法可以通过查看过去的数据来验证你对未来的信念;但这不一定能让你相信你对未来的信念是错误的。

如果管理者对数据和组织的价值达成一致,但对该做什么仍有分歧,他们可能对自己的心智模型有根本的分歧。如果是这样的话,那么对这个有问题的系统建立一个共享的心智模型会比应用更多的数据科学更有用。

包装完毕

上面的批评都不应该被解读为数据科学没有价值。商业和政府中的许多问题都有一个经验性的答案,只要我们用正确的工具去正确的地方寻找答案。缺少具有正确技能的人来执行分析和回答这些问题仍然是一个问题。能够执行这种类型的数据工作的人员数量存在缺口,特别是从各种来源清理数据,这些来源从未被设计为一起使用。

即使你不打算在数据科学领域从事严肃的职业(无论这里的严肃是指什么),你也应该学习编码。r、python 和 java 是可能会存在很长时间的语言,对于理解无法在 excel 中打开的数据集非常有用。这些语言不仅允许您以新的方式理解和解释数据,而且编码的能力允许您获得不同的思维方式。

理解数据科学的局限性对领导者和分析师很有用。在开始收集数据和建立模型来预测未来之前,有必要考虑一下为什么你认为数据可以解决你的问题。

你隐式或显式地给了数据什么值?你组织中的其他人认同这些价值观吗?

数据是主观的吗?您将如何比较个人、下属单位或业务部门的主观数据?

你认为因果关系是什么?随着时间的推移,这种关系是如何变化的?有没有办法从过去的数据中检验这种信念?其他领导不同意你的这些关系吗?

如果这些问题中的任何一个都不能得到非常清晰的回答,那么追求数据驱动的战略或建立数据科学能力可能就没有什么价值了。领导者可能会抱怨缺乏数据,但他们真正缺少的是数据的意义。数据科学本身不会提供意义。这仍然是一项人工任务。

备注:

关于自然主义谬误和人际主观性问题的有趣音频入门,我推荐非常糟糕的巫师播客。

  1. 自然主义谬误
  2. 主观评估

关于信念如何影响你解读经济数据的方式的有趣视频。

概率软逻辑背后的逻辑

原文:https://towardsdatascience.com/the-logic-behind-the-probabilistic-soft-logic-80616b425535?source=collection_archive---------10-----------------------

继我之前的博客文章“概率软逻辑的高层次概述”之后,我们将关注 PSL 的核心。

我们在上一篇博客中讨论的样本规则(原子)由变量组成,并且是通用的格式。

例如

2.0:姓名(A,姓名 _A) &姓名(B,姓名 _B) &相似(姓名 _A,姓名 _B) →同一个人(A,B)

因此,我们称这些规则为“解除规则”。如果你记得接地是什么意思,我们可以重申,并提到这些规则还没有接地。所以,第一步是把实际值代入这些原子,得到一组基本规则,我们将在这里继续工作。

现在我们需要理解这些基于“和”和“或”的基本规则是如何被解释的,以至于 PSL 可以处理它。使用布尔逻辑,很容易观察到基本规则到逻辑规则的转换。但是对于处理软逻辑的 PSL 来说,它比简单的“1”或“0”要稍微复杂一些。

让我们从评估规则是否会“快乐”开始。

(在看了一些先决概念之后,我们将阐明规则的快乐到底意味着什么)。

规则的“快乐”将是基于规则体(规则的“如果”部分)和头(规则的“那么”部分)的真值的度量。由于规则的行为类似布尔逻辑,如果主体的真值较低,则规则将始终为真。

如果身体有很高的真值,那么规则的快乐将取决于头脑是否快乐。

在《T4》中,如果瑞秋和莫妮卡真的是朋友,规则就是快乐。既然我们提到了 如果 (瑞秋,莫妮卡)是朋友 (菲比,莫妮卡)是朋友 那么 (瑞秋,莫妮卡)是朋友,结果就是这样。

但是在(2)中,因为我们考虑了如果-然后的关系,我们设想了瑞秋和莫妮卡不是朋友的场景。因为这个压头会很低,所以规则不会被满足。

所以我们仍然试图在这里传达一种直觉。但是我们需要从数学上明确这些函数实际上做什么。为此,我们使用 Lukasiewicz T-范数。

Lukasiewicz T-范数

Lukasiewicz T-norms 采用逻辑规则(A 和 B)主体的真值,并评估要满足的规则头部的最小所需真值。

这里上面将产生身体的真值

根据以上所述,可以观察到,这些逻辑具有与布尔逻辑完全一样的行为能力。当主体的所有真值都是 1 和 0 时,它能够产生 1 或 0,对于其他软真值,它将在 0 和 1 之间变化。

这里上面会产生身体的真值。

根据以上所述,可以观察到,这些逻辑具有与布尔逻辑完全一样的行为能力。当主体的所有真值都是 1 和 0 时,它能够产生 1 或 0,对于其他软真值,它将在 0 和 1 之间变化。

规则的快乐

现在回到规则的“快乐”,这也可以被称为规则的满意度。但是对于一个规则来说,快乐或满意到底意味着什么呢?

为了说一个规则被满足,头脑的真值应该至少和身体的真值一样大。

示例:

考虑以下情况,其中 B1B2 是基本规则主体的一部分,而 H1 是头部。

为身体中的原子建立真值我们需要找到头部的最小真值以满足规则。

我们可以将上述内容转化为实际场景:

(瑞秋,菲比)是真值 0.7 的朋友。(菲比,莫妮卡)是真值 0.8 的朋友。那么在什么条件下会满足这个规则呢?

为了回答这个问题,我们解析 Lukasiewicz T-norms,其中 B1B2 映射到 A 和 b

据此,身体的真值为 0.5。所以,对于任何头部≥5 的值,规则都是快乐的或满足的。这意味着如果( RachelMonica) 的友谊的真值至少为 0.5,那么传递性规则将得到满足。

所以当规则需要快乐或满足时,头部的真值应该是或超过上面案例中的 0.5。但是当头部的真值没有超过这个值会怎么样呢?当规则不能快乐或满足时会发生什么?

这就是另一个衡量标准“满意度”的背景。

满意距离

“距离”,在一般意义上,意味着一个人离某物有多远。调整到“满意的距离”,它仅仅意味着规则离满意还有多远。当头部的价值没有超过身体时,满足感的距离可以让我们洞察到规则离达到这样的满足感还有多远。

满意的距离作用于以下,这将导致 0 或身体和头部之间的差异。

在上面我们规则的快乐评估中,规则的满意度是 0.5。如果我们将 0.7 的真值赋给头部,这意味着

因为身体的真实值是 0.5,而头部的真实值是 0.7,很明显,这个规则将会令人高兴或满意,因为头部的真实值大于身体的真实值。因此,在这里计算满意的距离,我们得到 0.0 满意的距离,因为规则将总是被满足,并且在这个实例中离被满足不远。

但现在让我们举一个反面的例子,头部的真值为 0.3,身体的真值保持不变。

这些计算计算规则是否得到满足以及离满足还有多远。但是我们可以通过给每条规则增加一个权重来增强这些规则,这将会给我们“满意的加权距离”。

总结到这一点,

  • 有一组已知的关系被发现为谓词。这些都有固定的真值。
  • 但是有些人可能不知道真实值,在这种情况下,我们得到满意度的加权距离。这就是概率论发挥作用的地方。

概率论

所有可能的分配都可以绘制成概率分布,并放置在概率模型中。并且概率将由那些加权的满意度距离来确定。

因此,继续下去,权重的可能值从 0 到无穷大,我们如何决定分配给每个基本规则的权重?

这个概率模型复制了判别模型。所以在这里,我们为不同的真值赋值定义了一个概率分布,给了我们未知原子不同的解释。

这就给我们留下了模型中每个基本规则的 1 个基础或 1 个特征。该要素将满意度的距离作为其值。规则的权重将作为满意距离的参数。

所以根据这个概率密度,随着满意距离的增加,我们会失去更多的概率。此外,随着规则权重的增加,我们会更快地失去概率。这方面的概要是:

规则的权重越高→满足该规则就越重要

该模型是称为“铰链损失马尔可夫随机场”的特定类型模型的推广。

铰链损失马尔可夫随机场

铰链损失函数是一种表示机器学习中错误分类或不准确预测所导致的开销的方式。铰链损失在支持向量机(SVM)中被形象地用于最大间隔分类。因此,铰链损失马尔可夫随机场是离散马尔可夫随机场的分支,除了它的函数是铰链损失[1]。

PSL 模型总是基于铰链损失马尔可夫随机场。

参考文献

[1]巴赫,S. H .,布罗意切勒,m .,黄,b .,&格图尔,L. (2015)。铰链损失马尔可夫随机场和概率软逻辑。arXiv 预印本 arXiv:1505.04406。

机器学习工作流程

原文:https://towardsdatascience.com/the-machine-learning-workflow-8e83c3b008be?source=collection_archive---------15-----------------------

机器学习项目有什么不同?你如何在最短的时间内降低风险并建立一个可行的解决方案?

普通软件开发中,你只需回答这个问题:

你想实现什么?

然后你,嗯,实施。

但是在机器学习项目中,你首先需要探索什么是可能的——用你拥有的数据。因此,第一个问题是:

什么 可以 实现?

以下是我们学到的让机器学习项目从开始到结束都保持在正轨上的方法:

1.定义任务

很容易被无处可去的人工智能项目吸引。一个正确的机器学习项目定义可以大大降低这种风险。

定义项目时,您需要回答以下问题:

了解当前流程

您目前的流程是什么?你的机器学习解决方案将取代一个已经存在的过程。在这个过程中,目前是如何做出决策的?当前的过程将教会你许多领域知识,并帮助你定义你的机器学习系统应该是什么样子。

定义你想要预测的内容

你想预测什么样的变量?定义你的机器学习系统的输出——尽可能详细。

列出有用的数据来源

你有什么有用的数据来正确预测这个输出?首先列出当前流程所依赖的数据源。列出有用数据源的一种方法是问自己:“如果我——作为一个人——需要做这个预测,我想要了解哪些数据点?”

如果你了解当前的流程,知道你想要预测什么,并识别出所有有用的数据来源,你就能很好地决定进入下一阶段是否有意义。

2.找到一种可行的方法

即使你有一个好的问题定义,你也无法知道你的机器学习模型最终会有多准确。以及是否值得替换当前的过程。

概念验证是了解最终解决方案的投资回报率的最经济的方法。这些是步骤:

研究

研究其他团队解决类似任务的所有方法——无论他们是否使用机器学习。然后制定一个计划,利用你所学到的,以及你从你想要取代的现有流程中学到的。

构建数据集

任何机器学习项目的中心部分都是样本数据集!这个数据集包括真实的例子,这些例子正是你希望你的机器学习系统做出正确预测的情况。可以把它想象成一个 Excel 表格,带有

  1. 每个示例一行,并且
  2. 许多列有用的输入数据,加上
  3. 一列包含输出(也称为目标)。

然后,模型必须学会根据输入预测输出。例如,从客户的支付历史(输入)预测客户的信用等级(输出)。

这个数据集就像普通软件项目中的需求文档——你检查自己是否在正轨上的参考点。

实验

从最有希望的方法开始,评估它,然后从那里改进。重复——直到你找到一个足够好的方法。

3.构建全面的解决方案

工作软件是进度的主要衡量标准。— 敏捷宣言

概念验证不会让你赚到钱。这些是实现稳定、全面解决方案的步骤。

提高精度

概念验证是 20/80 实施。现在是时候做出您在第一次迭代中遗漏的关键改进了:

  • 添加更多数据
  • 构建新功能
  • 尝试其他算法
  • 微调模型参数。

刻度

这是从概念验证脚本到生产就绪解决方案的一大步。

  • 可伸缩性&稳定性:将数据处理步骤重写为数据管道中独立的、可伸缩的任务。
  • 测试:编写额外的单元测试和集成测试——也包括数据中可能的错误。
  • 部署:构建灵活、可重复且简单的部署,满足您所需的吞吐量&处理速度(包括基础设施的自动构建)。

A/B 测试

与其他软件更新类似,新自动化流程的最终测试是与当前流程进行比较。通过 A/B 测试,你可以衡量你所取得的进步,以及你的项目的投资回报率。

API

您的机器学习服务需要一种方式来与基础设施的其余部分进行交流。这要么通过不断地将结果保存到数据库中来完成,要么通过 API 使算法可用。

文档

除了代码文档之外,您应该考虑编写一个用户指南来解释解决方案是如何工作的。澄清实现背后的思想很重要:在数据科学中,仅仅从代码中很难理解你的推理。

可选附件

  • 版本化。也许您需要针对旧的模型进行 A/B 测试,或者您需要在短时间内切换到您的管道的先前版本——正确的版本控制使这变得容易。
  • 自动化再培训。模型会过时,最终你将不得不根据新数据对其进行重新培训。在某些情况下,自动化模型更新是有意义的。

有任何问题或意见吗?下面让我知道。

如果你在机器学习问题上需要帮助——联系

【www.datarevenue.com】最初发表于

LSTM 神经网络的魔力

原文:https://towardsdatascience.com/the-magic-of-lstm-neural-networks-1e4a1f7d81c0?source=collection_archive---------8-----------------------

LSTM 神经网络,代表LONGSshort-TermMemory,是一种特殊类型的递归神经网络,最近在机器学习社区得到了很多关注。

简单地说,LSTM 网络有一些内部的上下文状态单元充当长期或短期记忆单元。
LSTM 网络的输出由这些单元的状态调制。当我们需要神经网络的预测依赖于输入的历史背景而不是仅仅依赖于最后的输入时,这是一个非常重要的特性。

举个简单的例子,假设我们要预测以下序列的下一个数字:6 -> 7 -> 8 ->?。我们希望下一个输出是 9 (x+1)。但是,如果我们提供这个序列:2 - > 4 - > 8 - >?,我们想得到 16 (2x)。
虽然在这两种情况下,当前的最后输入是数字 8 ,但是预测结果应该是不同的(当我们考虑先前值的上下文信息而不仅仅是最后一个时)。

LSTM 网络通过整合一个允许信息从一个步骤流向下一个步骤的回路来管理保持输入的上下文信息。这些循环使得递归神经网络看起来很神奇。但是如果我们想一想,当你在读这篇文章的时候,你是在理解前面的单词的基础上理解每个单词的。你不会扔掉所有东西,从每一个单词开始思考。类似地,LSTM 预测总是受到网络输入的过去经验的制约。

LSTM loop unrolled

另一方面,时间过得越久,下一个输出就越不可能依赖于一个非常旧的输入。这个时间依赖距离本身也是要学习的上下文信息。LSTM 网络通过“忘记门”权重来学习何时记住何时忘记。简单地说,如果遗忘门只是 0.9 的乘法因子,在 10 个时间步长内,该因子变成:0。⁹ ⁰=0.348(或 65%的信息被遗忘),以及 30 步内- > 0.04 (96%被遗忘)。

LSTM internal wiring showing the forget gate

在这篇文章中,我不会过多地谈论 LSTM 的技术细节。这篇博文很好地解释了他们的机制。相反,我将在这里介绍 LSTM 的不同应用汇编。

生成这样的文本可以转化为 LSTM 任务,其中每个字母的生成都要考虑所有先前生成的字母。事实上,教一个 LSTM 网络字母表可以成为第一个学习如何让 LSTM 学习东西的编程例子。安德烈·卡帕西,展示了 LSTM 根据你输入的训练集生成文本的不同例子。以下是一些自动生成的文本:

莎翁:

PANDARUS:
Alas, I think he shall be come approached and the day
When little srain would be attain’d into being never fed,
And who is but a chain and subjects of his death,
I should not sleep.Second Senator:
They are away this miseries, produced upon my soul,
Breaking and strongly should be buried, when I perish
The earth and thoughts of many states.

维基百科:

Naturalism and decision for the majority of Arab countries’ capitalide was grounded
by the Irish language by [[John Clair]], [[An Imperial Japanese Revolt]], associated
with Guangzham’s sovereignty. His generals were the powerful ruler of the Portugal
in the [[Protestant Immineners]], which could be said to be directly in Cantonese
Communication, which followed a ceremony and set inspired prison, training. The
emperor travelled back to [[Antioch, Perth, October 25|21]] to note, the Kingdom
of Costa Rica, unsuccessful fashioned the [[Thrales]], [[Cynth’s Dajoard]], known
in western [[Scotland]], near Italy to the conquest of India with the conflict.

XML:

<revision>
 <id>15900676</id>
 <timestamp>2002–08–03T18:14:12Z</timestamp>
 <contributor>
 <username>Paris</username>
 <id>23</id>
 </contributor>
 <minor />
 <comment>Automated conversion</comment>
 </revision>

奥巴马:

SEED: War on terror
Good everybody. Thank you very much. God bless the United States of America, and has already began with the world’s gathering their health insurance.
It’s about hard-earned for our efforts that are not continued.
We are all the assumptionion to the streets of the Americas that we are still for everybody and destruction.
We are doing a lot of this.
I know that someone would be prefered to their children to take a million insurance company. We’re watching their people and continued to find ourselves with Republicans — to give up on these challenges and despite the challenges of our country. In the last two years, we must recognise that our borders have access from the world. We’re continuing that this day of things that the United States will clean up it´s allies and prosperity to stand up enough to be a sanctions that we made their faith, and for the country of the Internet to Osama bin Laden.
Thank you. God bless you. Good morning, everybody. And May God loss man. Thank you very much. Thank you very much, everybody.

这是 Alex Graves 制作的一个动画,展示了一个 LSTM 网络在现场进行手写识别:

  • 1 行:显示被识别的字母(网络的输出
  • 2 行:显示存储单元的状态(注意当一个字符被识别时它们是如何复位的)
  • 3 行:显示了正在被 LSTM 分析的书写内容(网络的输入
  • 4 行:显示从最活跃的字符反向传播到输入的梯度。这体现了忘记的效果。

作为一个反向实验,这里有一些由 LSTM 生成的笔迹。

对于现场演示,并自动生成一个 LSTM-'手'写文本自己,访问这一页

因为音乐,就像文本一样,是一系列音符(而不是字符),它也可以由 LSTM 通过考虑先前演奏的音符(或音符的组合)来生成。在这里你可以找到一个关于如何在 midi 文件上训练 LSTM 的有趣解释。否则,您可以欣赏以下生成的音乐(来自古典音乐训练集):

语言翻译可以看作是序列到序列的映射。一组研究人员与英伟达合作,公布了如何驯服 LSTM 完成这项任务的细节(第一部分第二部分第三部分)。
简而言之,他们创建了一个神经网络,其中一个编码器将文本压缩为更高抽象的矢量表示,一个解码器将其解码回目标语言。

Machine translation encoder/decoder architecture

English to french translation by NVidia

最后,LSTM 网络最令人印象深刻的用途是从输入图像生成描述图像内容的文本标题。微软研究院在这方面取得了很大进展。以下是一些他们的结果的示例演示:

你可以在这里自己尝试一下他们的在线演示:https://www . caption bot . ai

玩得开心!

原载于 2018 年 22medium.com

数据分析中分层的魔力

原文:https://towardsdatascience.com/the-magic-of-stratification-in-data-analysis-f1ee4800a283?source=collection_archive---------6-----------------------

在我关于 Medium 的第一篇文章中,我将简要回顾一下我认为统计学中最基本的问题——混淆,更重要的是,我们如何利用熊猫和一些可视化来处理这个问题。

人们可以通过想象一项流行病学家正在研究吸烟导致的死亡率的研究,很容易理解混淆。如果我们将样本人群分为吸烟者和非吸烟者,并观察死亡率,我们很快就会遇到如下问题:

  • 如果吸烟的人多了会怎么样?
  • 如果吸烟者比不吸烟者有更多更老更胖的人会怎样?

不考虑这些其他变量可能会导致研究中的偏差,并使结果非常可疑。这也是我高度怀疑任何出现在传统新闻来源和社交媒体上的夸张标题的原因之一。

我们将使用这个数据集来确定:

  1. 存在性别工资差距
  2. 这一差距在多大程度上可归因于对妇女的歧视

请注意,我们使用的数据已经过时,这篇文章的目的是说明技术,而不是进入关于工作场所性别歧视的辩论

让我们做我们的进口。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

For those new to reading in excel files, you might have to conda or pip install xlrd and openpyxl packages

数据集相对较小,有 527 行和 5 列。

输入变量

  1. 教育程度:研究中受试者完成教育的年数
  2. Exper:在他们的职业中经历的年数
  3. 女性:分类变量,其中女性=1,男性=0
  4. Union:分类变量,其中 Union 成员资格=1,Non-Union 成员资格=0

目标变量

  1. Hwage:不同的小时工资率

2.logHwage:Hwage 的自然日志

次要预处理

幸运的是,这个数据集已经进行了大部分预处理,但有一件事我们需要注意,那就是“Educ”变量。

让我们把他们分成“初中”、“高中”和“大学”作为一个新的栏目。

数据探索

让我们通过一些基本的视觉效果和表格来感受一下我们的数据集。通过可视化数据集,我们可能会得到什么属性可能是工资的重要决定因素的线索。

“女性”一栏在男性和女性之间相当平衡。

然而,“工会”属性不平衡,只有大约 22%的人属于工会。当进行因果推断和解释回归系数时,这可能是一个令人头痛的大问题,但是我们将保持联合变量不变,因为它似乎提供了相对于其他属性尤其是“女性”的有价值的信息。

“教育程度”和“教育水平”属性似乎很均衡,只有少数人是“初中”学生,但这是意料之中的,因为大多数美国人至少都是高中毕业生。

“Hwage”有一个偏斜的分布,这可能会有问题,所以我们将记录变量供以后使用。我们可以看到,在执行日志之后,“Hwage”具有更“正常”的分布。

该数据集的一个预期但突出的特征是上述关系,即较高的教育水平等同于较高的工资率。

让我们看看这种关系是否对男性和女性都适用。

在这里,我们得到了第一个暗示,一切都不太好,在丹麦可能有些东西已经腐烂了。在教育水平相同的情况下,男性(蓝点)往往在工资水平较高的人群中占主导地位,尤其是在“教育程度”较高的人群中。

这是否意味着男女之间存在明显的工资差距?

简洁量化视觉效果的一种方法是相关性。

这种相关性意味着在确定工资率时最感兴趣的 3 个变量是:

  1. 教育水平——正相关
  2. 女性-消极关系
  3. 联盟-积极的关系

有些违反直觉的经验(Exper)与工资率的关联很弱。

让我们通过回归所有四个独立变量的工资(对数)率,对数据集进行 OLS 多元回归分析。

线性回归

import statsmodels.api as sm
import statsmodels.formula.api as smf

我使用 statsmodels 是因为它能够打印格式良好的回归统计数据,否则使用 scikit-learn 会产生完全相同的结果。

检查 R 平方和 F 分数,模型的拟合优度相对较弱。总的来说,这不是一个非常令人满意的了解工资率差异的模型。

如果我们看一下系数,这个模型中最重要的四个属性依次是:

  1. 女性的
  2. 联盟
  3. 教育
  4. 经验

这个结果不同于相关性告诉我们的,也有些不同于视觉告诉我们的。

这种相关性暗示着教育水平是最重要的,而图片也在一定程度上支持了这一论断。

这是怎么回事?

首先,让我们确立这样一个观点,至少在这个特定的数据集中,在所有其他因素不变的情况下,男性和女性之间似乎确实存在某种普遍的工资差距。

第二个问题是,这种工资差距的驱动因素可能是什么?

回归表明,工会成员资格可能是答案,但我们已经从回归统计中知道,该模型受到混杂因素的严重影响。

一个可能的解决方案:将数据分层

对我来说,一个重要的观点是,数据科学并不总是给出明确的答案。有时,这是一个苦读指向不同结论的数据的问题。

统计学家设计的处理混淆的最简单也是最优雅的方法之一是将数据分层以深入细节。在 Python 中,简单胜于复杂,数据科学也是如此。

让我们通过首先创建一个全男性数据框架来仔细检查“Union”分类属性。

让我们来了解一下加入工会给男性带来的好处。

从上面我们可以看到,加入工会后,男性的工资平均增加了 2 美元。

如果看一下上面的图像,在“Educ = = 12”标记处,我们可以清楚地看到加入工会的男性和未加入工会的男性的工资率之间的分界线。

现在让我们通过创建一个全女性的数据框架来看看女性的情况。

经济理论告诉我们,工会可以帮助工人谈判获得更高的工资。这似乎是我们混乱局面的关键。

女性似乎还从工会会员那里获得了平均 2 美元的加薪。

如上图所示,问题在于,在数据集中,很少有女性是一个工会的成员!

因此,一种可能的解释是,女性的工资比男性低,因为女性没有获得工会会员的福利。

以这种方式对数据集进行分层给了我们一种可能的解释。

女性和联合之间有某种互动的可能性,但是我们假设没有这种关系。

但是还有一个更大的问题。

在全部 527 项记录中,只有 96 人加入了工会,而这 96 人中只有 28 人是女性。因为与男性相比,样本是如此不平衡,我们不能用对男性同样的方式解释回归系数(女性和结合)。

如果能有一些数据来揭示女性是否曾经怀孕,以及这些变量如何随着时间的推移而变化,那就太好了,因为工资率是一个动态变量。另一个重要的变量可能是男性和女性获得的大学学位的类型。

结论

在处理观察数据时,数据科学可能会很艰难。

然而,这并不意味着一切都完了。对数据进行分层和可视化可以提供新的见解,否则仅靠纯粹的回归分析是无法找到这些见解的。

尽管我在学校学过一些计量经济学,但用 pandas 和 seaborn 的工具挖掘这个特殊的数据集让我看到了分层方法是一种魔术。

在我结束之前,我想展示另一个分层表,我认为如果样本中有更多的工会妇女,它可能会有所启发。

如果我们研究女性=1,并比较工会=1 和工会=0 的高中学生的工资率,工资率几乎没有增加大约 1 美元,这是我们在男性中看到的 4 美元增长的一小部分。

因此,如果工会变量更加平衡,我们可以陈述一个看似合理的案例,说明尽管拥有相同的教育水平和工会会员资格,妇女在薪酬方面仍受到歧视。

不幸的是,这个数据集不允许我们这样做。

*本文的 Jupyter 笔记本驻留在此处。

数据分析的多种未来

原文:https://towardsdatascience.com/the-many-futures-of-data-analysis-951bb2932943?source=collection_archive---------4-----------------------

有导游的短途旅行

最近——作为我典型的书呆子饮食的一部分,包括演讲、会议讨论、学术论文等等。—我遇到了围绕一个共同主题的异常强大的资源继承:数据分析理论&实践的未来(&过去&现在)。我在这里收集了它们和一些笔记&评论,供我自己参考&其他可能感兴趣的人。

大致按从最宽泛和一般到更具体的顺序排列:

皇家统计学会小组讨论-数据科学与统计:不同的世界?

从 2015 年年中开始,这个话题在我的播放列表上已经有一段时间了,但我一直在回避它,因为它是一个老生常谈的话题,几乎没有突破或洞察力的潜力。对我来说不幸的是,我没有意识到整个小组会有多聪明&智力上的多样性,也没有意识到它会是我见过的最好、最令人愉快的小组之一。

参与者:

  • 克里斯·维金斯(纽约时报首席数据科学家)
  • 戴维·汉德(帝国理工学院数学名誉教授)
  • 弗朗辛·贝内特(乳齿象-C 创始人)
  • Patrick Wolfe(UCL 统计学教授/UCL 大数据研究所执行董事 )
  • 邹斌·格拉马尼(剑桥大学机器学习教授)
  • 主席:Martin Goodson(skim links 数据科学副总裁)
  • 讨论者:约翰·普林格(英国国家统计学家)

一些注意事项:

  • 行业对数据科学家的需求巨大,公司知道他们需要数据科学家,但不确定数据科学家是什么,也不知道如何聘用数据科学家(在技能组合等方面没有真正的共识)
  • 数据科学硕士项目通常很少甚至没有统计数据,以大数据框架为中心。当学生毕业时,他们可能会感到震惊&发现行业已经从他们接受培训的热门大数据框架转向下一个大事件。
  • 数据科学是一组“痛点”——克里斯·维金斯,首席数据科学家 NYT。(喜欢这个)
  • 人不要数据;他们想要答案--戴维·汉德。数据和信息不是一回事。
  • 所有数据集都有问题,大数据集潜在的问题更大。是一个吸引人的幻想。
  • ‘大数据不代表小数据的终结,我可以用数学证明。“我可以将任何大数据集分割成许多小数据集:小数据比大数据多,”- 戴维·汉德。
  • 数据科学家“比任何程序员都更擅长统计,比任何统计学家都更擅长编程”:在行业中,这种广度往往比深度更好,加上沟通技巧,才能真正实现事情。
  • 统计学家必须承认并帮助构建范式转变,在这种转变中,我们学到的一切都适用于稀有、少量、昂贵且有意设计/收集的数据,但今天并非如此。不能只告诉每个人他们做错了。
  • 在行业中,数据科学是大量的收集、处理、清理、操纵数据,少量有趣的统计和机器学习,然后是大量的幻灯片和向高管解释——所以我们不要高估我们在这个管道中的作用(作为学者等)。要么让所有其他部分都是特别的,要么开始思考&为整个管道的理论和方法做出贡献,那里有许多有趣的研究挑战。
  • 如果统计学发展得不够快,其他学科也渴望进入这个领域。
  • 跨学科是关键
  • 统计学家是受过专业训练的怀疑论者,因为他们从根本上来说是保守的,通常是孤立的/不可接近的。不能一直是一个唱反调的社区,否则“实干家”会介入提供解决方案,这可能会不那么严格。
  • 程序员/黑客/制造者为了解决感兴趣的问题而修修补补,而受过传统训练的统计学家却迂腐地根据推论对一个未被观察到的群体说什么和不说什么,这之间存在着某种文化冲突。
  • 从统计学家的角度来看机器学习:欺骗人们学习统计数据的好方法。
  • 我们是否认为统计学是数学、科学或工程的一部分,这涉及到许多历史偶然事件。数学:目标是做出严谨的陈述,科学:理解事物并做出推论,工程:构建材料——“任务完成”的定义在每一个领域都有很大的不同。
  • 在美国,统计学与数学联系在一起是一个历史意外,因此约翰·图基、利奥·布雷曼的“异端传统”:告诫统计学不应该完全是关于严谨性,而是数据的首要性。
  • 从智力上来说,你今天读到的许多关于数据科学的内容很像 John Tukey 在 1962 年写的《数据分析的未来》,或者 Bill Cleveland 在 2001 年写的,或者 Leo Breiman 在各种劝诫中写的,要花更多的时间在数据和计算上。
  • 难怪图基发明了 FFT &单词“比特”,思想开放总是成功统计学家的标志。
  • 统计学的基础:理解和推理不确定性的框架,理解和推理可变性的框架——这些有时会在技术细节的教学或手工计算中丢失。
  • 我们需要有冒险精神和勇气的人,他们会冲进去,开发机器学习产品,其中一些会是灾难性的。也需要保守谨慎的人指出灾难发生的原因。重要的是保持统计数据,如果不是声誉,那么关键的能力。
  • 方法专家和领域应用专家之间,以及数据科学家和企业之间的沟通经常面临挑战。必须能够与决策者沟通,与知道数据在哪里以及为什么隐藏数据的人交朋友,等等。
  • 统计学有很强的历史传统,与来自不同学科(如自然科学)的人合作&用仔细的思考重新定义他们的问题&一种跨越许多问题的思考类型,用数据解决他们的问题,如实验设计。数据科学知识传统的祖先(Tukey,Breiman)花费大量时间进行咨询,他们来自高等数学教会,来到沙漠中行走,与具有真实问题和真实数据的真实人员一起工作,围绕探索性数据分析、数据可视化、CART、随机森林等进行思考,这并非偶然。
  • 180 年前,当几个世纪的传统被新的数据分析方法颠覆时,皇家统计学会的四位创始人之一查尔斯·巴贝奇厌倦了充满错误的人工计算,因此必须发明某种机器来改进它。还有第一位女性成员,弗洛伦斯·尼特恩加尔,她不在学术的密室里,而是带着对人们关心的问题的深刻见解面对世界。

爱德华·塔夫特:数据分析的未来

[## 主题会议:爱德华·塔夫特博士-数据分析的未来

数据分析寻求从经验中学习。更好的推论需要更好的思维和更好的工具。实用…

channel9.msdn.com](https://channel9.msdn.com/Events/Machine-Learning-and-Data-Sciences-Conference/Data-Science-Summit-2016/MSDSS11)

对图基【1962 年的开创性论文(被广泛认为奠定了“数据科学”大厦的第一块砖)的另一个致敬/暗示,这位现代数据可视化教父的演讲实际上不是我上面提到的最近作物的一部分,但仍然属于这里。我实际上用这个演讲框定了一个以前的中片段,它在这里也很相关。

下面是这个 twitter 帖子 &中的一些亮点。

罗杰·彭:数据分析的过去与未来

那个熟悉的标题又来了,这次借用的是约翰霍普金斯大学的罗杰·彭,以及大名鼎鼎的 Coursera 数据科学专业&不那么标准差 播客。

在这里,Roger 提出了一个有见地且具有启发性的案例,即对于什么是“好的”数据分析,我们仍然没有太多的理论或通用标准。利用与其他学科中设计模式的类比,音乐理论和数据可视化的经验方法,他主张发展数据分析的“美学”,并提供了一些建议。

(注意,罗杰和帕特里克·沃尔夫——来自上面的 RSS 小组——分享音乐背景,加入了分析师的稀薄领域,其中还包括吉杰伦泽,内特·西尔弗&……嗯……?)

下面是幻灯片摘录。

理论统计学是应用统计学的理论:如何思考我们所做的事情

正如我叽叽喳喳:

赫尔曼教授再次证明了自己是个十足的疯子

(一个完全聪明、深刻的疯子)

真正的快乐是看着他在一个会议上发表演讲,人们带着钦佩之情“做工作”,关心棘手的理论和历史,并鼓励我们做出贡献

这与 Roger 的演讲非常吻合,因为 Andy 在 2017 年的 #RstatsNYC 大会上明确阐述了现实世界数据分析实用理论的实证发展(同时参考了 Hadley Wickham 的 Tidyverse 贡献作为范例)。在老式的盖尔曼时尚中,他以一种看似自由联想的方式即兴表演(没有幻灯片!)直到汇聚成尖锐、清晰、典型的卓越见解的几个时刻之一。

观看(再看)imo 绝对是一种享受。

fried erike Schür——谦逊的数据科学家:数据科学的本质和意外

Fast Forward Labs 的 fried erike Schür 在#RstatsNYC 发表的另一篇(也很精彩)文章中,再次深思熟虑地挖掘了一些经典理论文本(这一次是来自我们的计算机科学同胞),以获得对应用数据科学的现代见解。

弗里德里克的论点,正如我最初在推特上实时看到的:

我听从了她的建议,立即将上述内容添加到我的周末阅读清单中,并在推特上发布了一些摘录供日后参考。

很高兴后来找到她的谈话意识到它非常值得推荐。一些注意事项:

尽管围绕神经网络和其他闪亮的工具大肆宣传…

(cf. ‘People don’t want data; they want answers’,from RSS panel above)

或者:“找到好的和有效的解决方案,只要问题需要就可以”

left: Edsger W. Dijsktra — The Humble Programmer

敏捷开发方法并不总是适合数据科学,因为我们是真正的科学家,我们的工作是了解世界,…管理不确定性

为什么我们到处都能看到这么多深度学习的方法?…我认为是因为招聘的激励机制被搞乱了,如果有人想帮忙解决,请说吧。

再一次,我非常喜欢这部电影&大概总共看了 4 遍。

阿曼达·考克斯-不知道的空间

继续超级聪明和有趣的主题(&实际上是加大赌注):NYT 结果的编辑 Amanda Cox 在 Vis 2017 年的主题演讲中谈到了沟通和为不确定性留出空间。(正如我在之前说过 ,我不认为结果是不确定的2016 年……&那些选举之夜颤抖的速度表指针客观上是可怕的。但仍然是一个伟大的演讲。)

值得注意的亮点:

报纸应该分为四个部分:

1.真相
2。概率
3。可能性
4。谎言

…。第一部分会很短

-显然是托马斯·杰斐逊

  • 知道 vs 感觉不确定
  • 概率陈述的主观解释的广泛范围
  • 通过文字与数字/图形交流不确定性:

对于文字,我们没有太多的工具来严谨地对待不确定性……想要保持真实,但仍然说某事之间的平衡是一种内在的紧张

还有其他一些,但这些对我影响最大。作为参考,以下是上面提到的一些重要文本的链接:

一个在路上:

——
在推特上关注:@ dnlmc
LinkedIn:linkedin.com/in/dnlmc
Github:https://github.com/dnlmc

数据科学的地图

原文:https://towardsdatascience.com/the-map-of-data-science-e54b46e463ff?source=collection_archive---------2-----------------------

大约一年前,我创建了这个机器学习算法的地图。如果我再创造一个,我很可能会增加一个深度学习的新大陆。

你想补充什么?

技术营销

原文:https://towardsdatascience.com/the-marketing-of-technology-93ac20db624f?source=collection_archive---------2-----------------------

技术革命的车轮转得比看起来要慢得多,它只不过是消费主义。

Tesla Roadster launched into space by SpaceX Falcon Heavy

我曾多次想过要写下这一点,但当每个人都更乐意蒙住自己的眼睛时,展示真相的纯粹无意义性,从来没有给我足够的动力去真正推进它。

直到昨天早上,我发现每一个自认为是极客/书呆子的人,不管对技术和/或科学有没有一点真正的兴趣,都会说“伙计,你看到特斯拉发布了吗?Omg。这是一些毒品狗屎!!!"

Elon Musk fanbois all over reddit are best summed up by this

在我们继续之前一个非常重要的 解释 :我连埃隆·马斯克的十万分之一都不到。我既不是在批评他,也不是在批评昨天的事情。最重要的是因为我没有这样做的陈述权。粗略浏览一下互联网,你会发现一些大型出版物的一些大记者抨击了埃隆·马斯克昨天的行为,理由从“把科学变成娱乐”到“亿万富翁玩昂贵的玩具”。事情是这样的,埃隆·马斯克是一个亿万富翁而且他知道足够的科学知识来把它变成娱乐圈,所以是的,你只是在作为一个痛苦的失败者评论这样的事情。我所评论的是向消费者推销技术的更大计划。

容量为 16eb 的 2GB RAM 手机

Rahul Sharma launching YU Televentures at DroidCon 2014, with me toggling the slides for him behind him.

我是一名天真的大二学生,在德里科技大学攻读电子和电气工程。我觉得我是房间里最聪明的人,无论你把我放在哪个房间。我的同学正在死记硬背拉普拉斯和傅立叶变换方程。我熬夜修改我的 Android Xperia 手机的内核,并把它发布在手机改装论坛上,成千上万的人下载并使用它。我对移动无线电和 GSM/CDMA/LTE 工作原理的了解比我大学里的任何通信系统教授都要多。我比在高通工作的任何一位前辈都更了解骁龙 CPU 是如何制造的。

由于我是唯一一个住在德里参与 CyanogenMod 项目的印度人,在我大学二年级时,明星们为我排队,成为 YU Televentures 核心团队的一部分,这是一家 Micromax 公司,它将第一部 Cyanogen OS 手机带到了印度——YU yure ka。

Watch from 37:40 to know what “64 bit” means. Watch from 58:10 to see what my contribution to YU was.

4 个月后,我站在新德里凯悦酒店 1 号宴会厅的舞台旁。Micromax 联合创始人、YU 首席执行官拉胡尔·夏尔马(Rahul Sharma);电信市场最成功的企业家之一;在舞台上,推出 YUREKA。64 位手机、LTE 手机、增强的操作系统功能——印度消费者还没有买到这些产品。

前一天晚上,我们在 Micromax 办公室夏尔马的房间里熬夜准备幻灯片。高通在我们身上下了很大的赌注,因为我们正在以中低端价位进入高端中端市场,这是众多联发科处理器中唯一的骁龙变体。高通在我们的甲板上有一个完整的特辑。有一整节都是关于 64 位的。拉胡尔·夏尔马(Rahul Sharma)在一个由 2 万名观众和几个新闻频道播放的直播流中,解释了 64 位技术如何帮助我们支持 16eb 内存(在上面的视频中为 37:40)。 在配有 2GB 内存的手机上: 手机的内存是烧在主板上的。它甚至不可扩展。

是的,64 位地址空间意味着理论上一个 CPU 可以使用 16 EB 的内存。但在 2014 年,手机曾经有 2GB 的内存,64 位 ARM 并没有带来什么变化,因为 32 位已经可以支持高达 4GB 的内存。我们有两个版本的操作系统,64 位版本在基准测试中比 32 位版本差,因为 arm64 是一个不成熟的平台,优化甚至没有触及 Clang 或 GCC 工具链。这意味着除了代码的某些部分使用 64 位整数uint64_t之外,代码的其余部分被简单地编译,与 32 位 ARMv7 目标相同。我们要赶上最后期限,要发布一款手机,还要为此付出数百万美元。所以我们像 bit-妓女一样卖 64 位,在基准应用运行的时候通过超频来欺骗基准(不要那样看着我,每个手机都是这样)。

但这些都不重要。再看一遍视频,但是从 1:02:00 开始。这才是最重要的。人们预计以 20,000 印度卢比推出的手机,以 8,999 印度卢比推出。在印度移动生态系统的分水岭时刻,写有 29999 的计数器以合适的 Impact 字体出现,急速下降到 9999,然后最终被 8999 取代。这个价位,除了夏尔马自己之外,参与 YU 的前 6 名高管中没有人知道。

当时,一名困惑的大二学生认为自己比世界上其他人更了解手机,但不知道该和谁分享他刚刚发现的事实——印度最大手机制造商的创始人对 CPU 架构一无所知。

今天,我知道,如果我能够实现 Rahul Sharma、Vikas Jain 和 Sumeet Arora 在印度与中国主导的电子市场进行斗争,创造一个本土品牌,并在某一时刻售出印度所有智能手机的近 50%的成功故事的 1%,这本身就是一项成就。拉胡尔·夏尔马是有意还是无意地在一个 2GB 的芯片里卖出了 16 EB 的 RAM,这并不重要。(郑重声明,我在适当的时候与他的广泛互动证明,他并非不知道 CPU 架构,而是非常清楚如何创建销售百万部手机的演示文稿)

蝙蝠战车是黑色的,但是在 HDR 有吗?

有很多以科技新闻的名义兜售的马粪,但这篇名副其实的 Popsci 文章——“HDR”是目前消费科技领域最令人困惑的术语是一个良好的消费者教育的例子。

HDR——代表高动态范围,是源于技术的术语之一,但后来成为各种产品行业营销部门的噱头生成器。原因显而易见。任何涉及“范围”的产品,无论是相机(曝光范围)、电视(颜色范围)、麦克风(录制的音频范围)还是扬声器(播放的音频范围),都可以简单地扩展其范围,并开始自称为 HDR。

HDR Cameras (shown here HDR on Sony Xperia Z) make the lighting more ‘life-like’ because our eyes can simultaneously see bright and dark patches — a feature that only cameras with HDR have.

You might think the sun has set a bit more in the lower photo, but no, it is HDR in action.

带 HDR 的相机在同一张照片中可能会有低曝光点和高曝光点。

HDR 的照片或视频需要在 PS4 Pro 或最新的 Apple TV 等设备上播放,以同时显示低曝光和高曝光区域。

然后,您需要将它们连接到支持 HDR 的显示器上,才能真正看到差异。

但是,当你购买 HDR 电视时,不要忘记检查他们是指电视有 HDR 显示屏还是指电视中的扬声器是 HDR 扬声器。因为是的,同时支持超高频(高音)和超低频(低音)的扬声器现在被称为 HDR 扬声器。显然,老术语“全频”扬声器不再那么吸引人了。

对于营销主管来说,他们销售的电视是 HDR 音频还是 HDR 屏幕有关系吗?可能现在。当你在最近的百思买(BestBuy)或亚马逊(Amazon)上花钱,把电视拿回家,打电话给你的朋友看下一场比赛时,他们会过来问“它有 HDR 吗?”。他们真的知道 HDR 是什么吗?真的需要给出正确答案吗?你需要让他们澄清吗——你是指演讲者还是视频?咩。没人在乎。你的队现在赢了。把啤酒拿出来。即使动态范围不高,你也绝对可以。

你知道 HDR 还有什么吗?如果你在高山上建造一个实用的射击场。(如果你没听懂这个笑话,没关系,这需要花很多时间去谷歌一下)。

这些机器花了太长时间来学习

最近有多少次你被告知,这是机器学习的时代,人工智能将吃掉你的工作。最近有多少头条新闻尖叫着自动化正在夺走工作。当人工智能末日降临到我们头上时,埃隆·马斯克(Elon Musk)一直在嘶哑地哭诉我们如何需要最低工资。

事实是,在被夸大为生命、宇宙和一切的答案的事物列表中,人工智能仅次于上帝和区块链。虽然我并不鄙视人工智能,但并不是深度神经网络和卷积网络驱动有感知能力的机器人在观察它们后学习像人类一样行事,夺走了工作。罪魁祸首更有可能是微软办公套件自动取款机/信用卡机

On assembly lines, most of the grunt work is already automated, so please.

尽管埃隆·马斯克(Elon Musk)正在向特斯拉推送一个又一个自动驾驶补丁的更新,类似于微软更新他们的 Windows 10 笔记本电脑,并危及数百名特斯拉车主的生命(其中包括一名因自动驾驶而死亡的人),但事实是,自动驾驶汽车不仅仅是过去的地平线,,而是一条漫长的道路。在那个领域,科技媒体的耐心越来越少

Truer words haven’t been uttered

我们刚刚度过了人工智能革命被高估的两年,实际影响将在 2020 年开始影响我们。

被“推销”是一种非人的经历,而且很伤人

曾经有一段时间,正常人、大器晚成者、冲浪运动员和“大众”对智能手机不感兴趣。极客、技术知识分子、wave 创造者、早期采用者刚刚接触到这个将一台成熟的计算机放入他们手掌/口袋的设备。

讨论围绕着 CPU 时钟速度和功能以及操作系统升级。修改操作系统并给它添加一些时髦的功能是很有趣的。

然后就成了主流。市场部接管了技术人员的工作。公关人员,主要的产品负责人,而不是主要的 T2 技术负责人参加了新的发布会。现在讨论的焦点是内核的数量(只要你称之为八核,谁会在乎所有 8 个内核不能同时运行)。如果你的手机没有两个摄像头,那它有什么用呢?谁在乎它里面装了什么传感器。

阅读和购买智能手机甚至都不是一种愉快的体验。你不再是酷精英的一员了。你是人群中的一员。购买自拍相机像素最高的最便宜手机的人群。即使你比大众聪明也没关系。这些手机将面向整个人群进行销售。没人在乎你知道手机是怎么制造的。你的父亲、出租车司机、秃顶的邻居、咖啡店里的陌生人、网络上随机出现的巨魔——他们现在都有给你买智能手机的建议。这很简单——你需要买一部 ARM128 手机,因为它支持 274877906944 兆字节的内存。这难道不是很有道理吗?
(你的脑袋可能会被这样的想法炸开——该死的 yottabytes,想想 YotaPhone ,它甚至可以在关机、没有电池的情况下显示信息)

这是营销和消费主义的分层蛋糕

消费者认为自动驾驶汽车和比特币驱动的经济即将到来,因为开发者认为 NLP、人工智能和区块链的下一个大事件即将到来。

之所以这样认为,是因为工程师们确信,深度学习、人工神经网络和密码学的第二次出现就在眼前。

机器学习不是 2016 年给人类的礼物。阿瑟·塞缪尔在 20 世纪 60 年代初告诉世界计算机将如何学习创造新的逻辑。然而,50 多年后,我们只取得了一群推特巨魔把微软的机器人变成了种族主义混蛋,不得不被杀死

当谷歌和苹果忙于兜售虚拟现实是最新金矿的观点时,我无法理解人们怎么会轻易忘记虚拟现实自 20 世纪 50 年代就存在了

量子计算是 40 年前的 1980 年左右提出的一个想法。模糊逻辑被修补的时间也一样长。自古以来我们就在寻找 P = NP 的解。

Alexey Leonov, first spacewalk (Americans like to call it EVA not spacewalk, so that Ed White can get the honour instead)

事实是,你周围的一切都乱套了。在 20 世纪 50 年代,我们可以用火箭把汽车送上太空,但这种亿万富翁挥舞老二的比赛在当时并不流行。

流行的是美国对苏联的老二挥舞。因此,1965 年 3 月和 6 月,苏联和美国分别进行了第一次太空行走。真正的人类。不是特斯拉跑车里的假人。

(至少我们知道,太空探索只是由男性亿万富翁或核储备超级大国的老二挥舞竞赛推动的)

从 20 世纪 50 年代到 20 世纪 80 年代,我们从 8 位计算发展到 64 位计算。然而,我们在 21 世纪初的 PC 市场上看到了一波 64 位营销浪潮,在 2010 年中期,移动设备也出现了完全相同的情况。核心战争在 8 核时代结束了。百万像素战争在 20 MP 时消失,比特战争将在 64mp 时消失,因为你只能如此努力地推动营销,直到你远离实际的实际考虑,任何事情都不再有意义。它只需要一个 128 位 16 核 CPU 翻牌或一个 4000 万像素的相机在市场上爆炸,为营销热闹停止。但是直到人群能被喂以更高的数字,你必须跟上在你眼前的人类集体的愚笨。

下一件大事总是在明天发生。也可能不是。炒作机器很容易让自己陷入其中。但是,伟大的技术营销机器将继续向你发射一排又一排炫目的首字母缩略词和重新散列的 30 年前的产品,而几乎不考虑你的认知能力。只要大众消费它,你就能在 2GB 芯片上买到 16 EB 的内存。

使用示例 Python 代码进行 A/B 测试背后的数学原理

原文:https://towardsdatascience.com/the-math-behind-a-b-testing-with-example-code-part-1-of-2-7be752e1d06f?source=collection_archive---------0-----------------------

Animation by Gal Shir

在参加 Google 在 Udacity 上的 A/B 测试课程时,我对课程中没有明确涵盖的一些数学步骤有一些疑问。这是可以理解的,因为本课程是一个压缩和简明的概述。为了解决我的问题,我求助于网络上的其他资源,并决定总结一下我在这篇文章中学到的东西。

A/B 测试大纲

  1. 准备实验。
  2. 运行测试并记录每组的成功率。
  3. 绘制两个样本之间差异的分布图。
  4. 计算统计功效。
  5. 评估样本大小如何影响 A/B 测试。

1.准备实验

我们将为一家假设的公司运行 A/B 测试,该公司试图增加注册高级帐户的用户数量。运行 A/B 测试的目的是评估网站的变化是否会导致特定指标的性能提高。您可能会决定测试非常简单的替代方案,例如更改网页上单个按钮的外观,或者测试不同的布局和标题。您还可以对多步骤流程运行 A/B 测试,这些流程可能有许多不同之处。这方面的例子包括注册新用户或在在线市场上处理销售所需的步骤。A/B 测试是一个庞大的课题,有许多关于建立实验的技术和规则。除了 Udacity 课程,下面还有一些其他有用的资源:

对于这篇文章,我将保持简单,这样我们就可以专注于数学。

基线转换率和提升

在运行测试之前,我们将知道我们想要测试的基线转换率期望提升量或签约量增加量。基线转换率是我们在现有设计下签约新用户的当前比率。在我们的例子中,我们希望通过测试来确认我们对注册流程所做的更改将会导致注册率至少增加 2%。我们目前为 100 个用户中的 10 个注册了高级账户。

# code examples presented in Python
bcr = 0.10  # baseline conversion rate
d_hat = 0.02  # difference between the groups

对照组(A)和试验组(B)

通常,参与 A/B 测试的用户总数只占用户总数的一小部分。用户被随机选择并被分配到控制组或测试组。你决定的样本大小将决定你需要等多久才能收集到足够的样本。例如,拥有大量受众的网站可能能够很快收集到足够的数据,而其他网站可能需要等待数周。有些事件即使在高流量的网站上也很少发生,因此确定必要的样本量将有助于您尽快评估您的实验并继续改进其他指标。

最初,我们将为每个组收集 1000 个用户,并为控制组提供当前的注册页面,为测试组提供新的注册页面。

# A is control; B is test
N_A = 1000
N_B = 1000

2.运行测试

因为这是一个假设的例子,我们将需要“假”数据来处理。我写了一个函数,可以为我们的模拟生成数据。这个脚本可以在我的 Github repo 这里找到。

ab_data = generate_data(N_A, N_B, bcr, d_hat)

generate_data函数返回左边的表格。仅显示前五行。converted列分别用 1 或 0 表示用户是否注册了高级服务。A组将作为我们的对照组,而B组将作为我们的测试组。

让我们来看看在 Pandas 中使用数据透视表函数的结果汇总。

ab_summary = ab_data.pivot_table(values='converted', index='group', aggfunc=np.sum)# add additional columns to the pivot table
ab_summary['total'] = ab_data.pivot_table(values='converted', index='group', aggfunc=lambda x: len(x))
ab_summary['rate'] = ab_data.pivot_table(values='converted', index='group')

看起来两组之间转化率的差异是 0.028,大于我们最初想要的 0.02 的提升。这是一个好迹象,但这还不足以让我们自信地采用新设计。在这一点上,我们还没有衡量我们对这一结果的信心。这可以通过观察两组的分布来缓解。

3.比较两组

我们可以通过绘制对照组的分布图并计算从我们的测试组获得结果的概率来比较这两组。我们可以假设对照组的分布是二项式的,因为数据是一系列伯努利试验,其中每个试验只有两种可能的结果(类似于掷硬币)。

fig, ax = plt.subplots(figsize=(12,6))
x = np.linspace(A_converted-49, A_converted+50, 100)
y = scs.binom(A_total, A_cr).pmf(x)
ax.bar(x, y, alpha=0.5)
ax.axvline(x=B_cr * A_total, c='blue', alpha=0.75, linestyle='--')
plt.xlabel('converted')
plt.ylabel('probability')

对照组的分布以红色显示,测试组的结果以蓝色虚线表示。我们可以看到,从测试组得到结果的概率非常低。然而,概率并不传达结果的置信水平。它没有考虑我们测试组的样本量。直觉上,随着样本量的增加,我们会对结果更有信心。让我们继续将测试组的结果绘制成二项式分布,并将这些分布相互比较。

二项分布

fig, ax = plt.subplots(figsize=(12,6))
xA = np.linspace(A_converted-49, A_converted+50, 100)
yA = scs.binom(A_total, p_A).pmf(xA)
ax.bar(xA, yA, alpha=0.5)
xB = np.linspace(B_converted-49, B_converted+50, 100)
yB = scs.binom(B_total, p_B).pmf(xB)
ax.bar(xB, yB, alpha=0.5)
plt.xlabel('converted')
plt.ylabel('probability')

Binomial distributions for the control (red) and test (blue) groups

我们可以看到,测试组比控制组转化了更多的用户。我们还可以看到,测试组结果的峰值低于对照组。我们如何解释峰值概率的差异?我们应该把重点放在转化率上,这样我们就可以进行比较。为了进行计算,我们需要对数据进行标准化,并比较每组的成功概率 p

伯努利分布和中心极限定理

为此,首先考虑对照组的伯努利分布

其中 p 是对照组的转化概率。

根据伯努利分布的性质,均值和方差如下:

根据中心极限定理,通过计算许多样本的平均值,我们可以近似得到群体的真实平均值 𝜇 ,对照组的数据就是从这个群体中获取的。样本平均值的分布, p ,将围绕真实平均值呈正态分布,其标准偏差等于平均值的标准误差。这方面的公式如下:

因此,我们可以将两组都表示为具有以下属性的正态分布:

测试组也可以这样做。因此,p_Ap_B有两个正态分布。

# standard error of the mean for both groups
SE_A = np.sqrt(p_A * (1-p_A)) / np.sqrt(A_total)
SE_B = np.sqrt(p_B * (1-p_B)) / np.sqrt(B_total)# plot the null and alternative hypothesis
fig, ax = plt.subplots(figsize=(12,6))x = np.linspace(0, .2, 1000)yA = scs.norm(p_A, SE_A).pdf(x)
ax.plot(xA, yA)
ax.axvline(x=p_A, c='red', alpha=0.5, linestyle='--')yB = scs.norm(p_B, SE_B).pdf(x)
ax.plot(xB, yB)
ax.axvline(x=p_B, c='blue', alpha=0.5, linestyle='--')plt.xlabel('Converted Proportion')
plt.ylabel('PDF')

Control (red) and test (blue) groups as normal distributions for the proportion of successes

虚线代表每组的平均转化率。红色虚线和蓝色虚线之间的距离等于对照组和测试组之间的平均差异。d_hat是两组随机变量之差的分布。

总和的方差

回想一下,零假设表明两组之间的概率差为零。因此,这个正态分布的平均值为零。正态分布需要的另一个性质是标准差或方差。(注:方差是标准差的平方。)差异的方差将取决于两组概率的方差。

方差的一个基本性质是:两个随机自变量之和的方差是方差之和。

这意味着零假设和替代假设将具有相同的方差,该方差将是对照组和测试组的方差之和。

标准偏差可计算如下:

如果我们把这个方程用伯努利分布的标准差来表示, s :

我们得到了合并标准误差萨特思韦特近似。如果我们计算混合概率,并使用混合概率计算两组的标准差,我们得到:

其中:

这与 Udacity 课程中使用的等式相同。合并标准误差的两个方程将给出非常相似的结果。

这样,我们现在有足够的信息来构建零假设和备择假设的分布。

比较零假设和替代假设

让我们从定义[零假设和替代假设](http://the null hypothesis and the alternate hypothesis)开始。

  • 无效假设是指试验组的设计变更不会导致转换率发生变化。
  • 另一个假设是相反的观点,即测试组设计的改变会导致转换率的提高(或降低)

根据 Udacity 课程,零假设将是均值为零的正态分布,标准偏差等于合并标准误差。

The null hypothesis

替代假设与原假设具有相同的标准差,但平均值将位于转换率的差异处d_hat。这是有意义的,因为我们可以直接从数据中计算转化率的差异,但正态分布代表了我们的实验可能给我们的可能值。

The alternative hypothesis

既然我们理解了合并标准误差的来源,我们就可以直接为将来的实验绘制零假设和替代假设。我写了一个脚本来快速绘制无效假设和替代假设,abplot,可以在这里找到

# define the parameters for abplot()
# use the actual values from the experiment for bcr and d_hat
# p_A is the conversion rate of the control group
# p_B is the conversion rate of the test groupn = N_A + N_B
bcr = p_A  
d_hat = p_B - p_A
abplot(n, bcr, d_hat)

Null hypothesis (red) vs. alternative hypothesis (blue)

从视觉上看,零假设和替代假设的图与上面的其他图非常相似。幸运的是,两条曲线在形状上是相同的,所以我们可以比较两个分布的平均值之间的距离。我们可以看到,替代假设曲线表明,测试组的转化率高于对照组。该图也可用于直接确定统计功效。

4.统计功效和显著性水平

我认为,通过首先显示它们在无效假设和替代假设图中是如何表示的,来定义统计功效和显著性水平更容易。我们可以通过添加参数show_power=True返回统计能力的可视化。

abplot(N_A, N_B, bcr, d_hat, show_power=True)

Statistical power shown in green

绿色阴影区域代表统计功率,功率的计算值也显示在图上。上图中的灰色虚线代表零假设的置信区间(上图为 95%)。统计功效的计算方法是找出替代假设分布下和无效假设的置信区间之外的面积。

在运行我们的实验之后,我们得到了两组的最终转化率。如果我们计算转换率之间的差异,我们最终会得到一个结果,即差异或设计变更的影响。我们的任务是确定这个结果来自哪个人群,是零假设还是替代假设。

替代假设曲线下的面积等于 1。如果备选设计确实更好,则功效是我们接受备选假设并拒绝零假设的概率,等于绿色阴影面积(真阳性)。替代曲线下的相反区域是我们接受零假设和拒绝替代假设的概率(假阴性)。这在 A/B 测试或假设测试中被称为 beta ,如下所示。

abplot(N_A, N_B, bcr, d_hat, show_beta=True)

Beta shown in green

将替代曲线下的区域一分为二的灰色虚线也直接分割与显著性水平相关的区域,通常用希腊字母 alpha 表示。

The green shaded area has an area equal to 0.025, which represents alpha.

如果零假设为真,并且在对照组和测试组之间确实没有差异,那么显著性水平是我们拒绝零假设并接受替代假设(假阳性)的概率。假阳性是指我们错误地认为新设计更好。这个值很低,因为我们想限制这个概率。

通常,问题会以期望的置信水平而不是显著性水平给出。A/B 测试的典型 95%置信水平对应于 0.05 的显著性水平。

Significance Level (alpha) and Confidence Level

当您评估 A/B 测试的结果和不同的结果概率时,参考混淆矩阵可能会有所帮助。

实验通常设置为 80%的最小期望功率。如果我们的新设计真的更好,我们希望我们的实验表明至少有 80%的可能性是这样。不幸的是,我们目前的实验只有 0.594 的功效。我们知道,如果我们增加每组的样本量,我们将减少无效假设和替代假设的混合方差。这将使我们的分布更窄,并可能增加统计能力。让我们看看样本大小将如何直接影响我们的结果。

5.样本量

如果我们用每组 2000 个样本而不是 1000 个样本再次运行我们的测试,我们会得到下面的结果。

abplot(2000, 2000, bcr, d_hat, show_power=True)

我们的零假设和替代假设的曲线变得更窄,替代曲线下的更多区域位于灰色虚线的右侧。功效的结果大于 0.80,符合我们的统计功效基准。我们现在可以说我们的结果在统计学上是有意义的。

你可能会遇到的一个问题是确定实验所需的最小样本量。这是一个常见的面试问题,了解这一点很有用,因为它直接关系到你能多快完成实验,并向你的设计团队提供具有统计意义的结果。您可以使用网上提供的计算器,例如下面这些:

[## 样本量计算器(Evan 出色的 A/B 工具)

可视化交互式样本量计算器,非常适合 A/B 测试。

www.evanmiller.org](http://www.evanmiller.org/ab-testing/sample-size.html) [## A/B 测试样本大小计算器

使用这种方法,您不再需要使用样本量计算器来确保结果的有效性…

www.optimizely.com](https://www.optimizely.com/sample-size-calculator/?conversion=10&effect=20&significance=95)

您将需要基线转化率(bcr)和最小可检测效应,这是您或您的团队首先确定值得投资进行设计变更的对照组和测试组之间的最小差异。

我想写一个脚本来做同样的计算,但需要找到正在使用的方程。经过大量搜索,我找到并测试了这个来自斯坦福讲座的等式。(警告:链接打开 Powerpoint 下载。)

Equation for minimum sample size

许多人从表格中计算 Z,比如这里显示的和这里显示的。然而,我更像是一个视觉学习者,我喜欢参考 Z 分布的图,这些值就是从 Z 分布图中得出的。

Plot for typical significance level of 0.05 or confidence level of 0.95 (z = 1.96)

Typical z-score for power level of 0.80 (z = 0.842

这些 z 图的代码可以在我的 Github repo 这里找到。

以下是针对最小样本量执行相同计算的 Python 代码:

我可以通过运行另一个 A/B 实验来证明这个方程返回了正确的答案,实验的样本大小是由这个方程得出的。

min_sample_size(bcr=0.10, mde=0.02)
**Out: 3842.026**abplot(3843, 3843, 0.10, 0.02, show_power=True)

该样本大小的计算功效约为 0.80。因此,如果我们的设计变更在转化率方面有大约 2%的改进,我们将需要每组至少 3843 个样本,统计功效至少为 0.80。

这是一个非常长但基本的 A/B 测试演练。一旦你理解并熟悉了这个过程,你就有可能进行一个实验,并直接进入无效假设和替代假设的图表,以确定你的结果是否达到了足够的功效。通过计算实验前所需的最小样本量,您可以确定需要多长时间将结果反馈给您的团队以供最终决策。

如果你有什么问题,我可以试着在下面的评论里回答。如果你喜欢这篇文章,请👏。大声喊出来布莱恩·麦克加里编辑笔记。感谢您的阅读!

机器学习背后的数学

原文:https://towardsdatascience.com/the-math-behind-machine-learning-b6f5c94fd1c0?source=collection_archive---------15-----------------------

让我们看看机器学习中的几种技术以及在这个过程中使用的数学主题。

在线性回归中,我们试图为一组给定的数据点找到最佳拟合线或超平面。我们使用一组参数作为权重,通过输入变量的线性组合来模拟线性函数的输出。

通过最小化残差平方和来找到参数。我们通过将残差平方和的导数的向量设置为零向量来找到临界点。通过二阶导数检验,如果残差平方和在临界点的 Hessian 是正定的,那么残差平方和在那里有一个局部最小值。

在上面的过程中,我们使用了导数、二阶导数测试和 Hessian,这些都是来自多变量微积分的概念。我们也可以使用线性代数找到最小化问题的解决方案。

设 X 是矩阵,其中的行是我们的数据输入,每行从 1 开始,y 是我们数据输出的向量。我们需要一个向量β,使得 Xβ接近 y。换句话说,我们需要一个向量β,使得 Xβ和 y 之间的距离‖Xβ-y‖最小。使距离最小化的向量β是这样的:Xβ是 y 到 X 的列空间的投影。这是因为 y 到 X 的列空间的投影是 X 的列空间中最接近 y 的向量。然后我们使用欧几里德 N-空间可以被分成两个子空间的事实,X 的列空间和 X 的列空间的正交补, 以及欧几里得 n-空间中的任意向量可以分别唯一地写成 x 的列空间和 x 的列空间的正交补中的向量之和的事实,来推导 y-Xβ与 x 的列正交,由此可以得出矩阵方程 X^T Xβ=X^T y,如果 X^T X 是正定的,那么 X^T X 的特征值都是正的 所以 0 不是 X^T X 的特征值。由此可见,X^T X 是可逆的。然后,我们可以求解β的矩阵方程,结果与使用多元微积分得到的结果相同。

在我们刚刚讨论的解决方案中,使用了范数、投影、列空间、子空间、正交补、正交性、正定性、特征值和可逆性的概念。这些是来自线性代数的概念。我们还利用了这样的事实:欧几里德 N-空间可以分解成两个子空间,X 的列空间和 X 的列空间的正交补空间;欧几里德 N-空间中的任何向量可以分别唯一地写成 X 的列空间和 X 的列空间的正交补空间中的向量之和。

让我们转向分类问题。在分类问题中,我们希望确定一个数据点属于哪个类。用于分类问题的方法之一是线性判别分析。
在线性判别分析中,我们估计 Pr⁡(Y=k|X=x,给定输入变量 x 为 x,y 为类 k 的概率,这叫做后验概率函数。一旦我们有了固定 x 的所有这些概率,我们选择概率 Pr⁡(Y=k|X=x 最大的类 k。然后我们把 x 归为 k 类

使用贝叶斯规则,我们可以根据π_k=pr⁡(y=k(Y=k 的先验概率)和 f _ k(x = x 的概率,假定 y = k)重写后验概率函数

我们假设 X 给定 Y=k 的条件分布是多元高斯分布 N(μ_k,σ),其中μ_k 是类特定的均值向量,σ是 X 的协方差,所以 f_k (x)可以用μ_k 和σ来改写。

现在,我们得到π_k、μ_k 和σ的估计值,从而得到 p_k (x)的估计值。我们根据估计的 p_k (x)最大的类 k 对 x 进行分类。

在线性判别分析中,我们使用后验概率函数、先验概率、贝叶斯规则、多元高斯分布、特定类别的均值向量和协方差,这些都是概率论中的概念。

解决分类问题的另一种方法是逻辑回归。正如在线性判别分析中一样,我们想要估计 Pr⁡(Y=k|X=x)并选择该概率最大的类 k。我们直接估计概率,而不是像线性判别分析那样使用贝叶斯规则间接估计概率。

假设只有 0 和 1 两个类,让 p(x)=Pr⁡(Y=1|X=x).在逻辑回归中,我们假设对数优势是 x 的组成部分的线性函数。假设对数优势是 x 的组成部分的线性函数,参数为β0,β1,…,βp,我们可以求解 p(x)作为参数和 x 的组成部分的函数。如果我们有参数β0,β1,…,βp 的估计值,我们就可以得到 p(x)的估计值。

我们观测数据的概率是参数β0,β1,…,βp 的函数,称为似然函数。我们通过最大化似然函数来寻找参数的估计。最大化似然函数相当于最大化似然函数的对数。为了最大化对数似然函数,我们使用牛顿-拉夫森方法。

对数似然函数 L(β)是β=(β0,β1,…,βp)的实值函数。所以 l 是从 R^(p+1)到 r 的函数,而且,l 是两次连续可微的。所以我们可以应用多元牛顿-拉夫森方法。

在逻辑回归中,我们使用似然函数,一个来自概率论的概念,和多元牛顿-拉夫森方法,一个来自多元微积分的概念。

接下来,我们将研究一种既能解决回归问题又能解决分类问题的方法。在人工神经网络中,我们使用线性和非线性函数的组合来模拟我们的输出函数。

输出函数可以用神经网络图来表示。

包括常数 1 在内的输入单元将形成输入层。我们采用输入单元的线性组合,包括常数 1,然后对其应用激活函数 h 以获得新的单元。h 是可微的(可能是非线性的)函数。我们这样做,比如说,M 次;我们现在有 M 个隐藏单元,这些组成了一个隐藏层。看图,线性组合中的权重由连接两个单元的线段表示。我们可以继续这个过程,取前一层中单元的线性组合,并对每个线性组合应用激活函数,以创建新的隐藏单元,从而创建下一个隐藏层。在某一点上,我们有最后一层,称为输出层,我们为每个输出单元 Y_k 使用激活函数 g _ k。g _ k 是来自前一层的单元的所有线性组合的函数。

通常,激活函数 h 被选择为逻辑 sigmoid 函数或 tanh 函数。输出激活函数 g_k 将根据问题的类型而不同,无论是回归问题、二元分类问题还是多类分类问题。

到目前为止,我们已经构建了依赖于输入 x 的输出值 Y_k,它包含一系列未知参数。我们现在的目标是使用我们的训练数据找到未知参数的值,使误差最小化。对于二元分类,我们通过最大化与我们的观察数据的概率相关联的似然函数来找到参数的估计;这相当于最小化所谓的交叉熵误差函数。类似地,对于多类分类,我们通过最大化与我们的观察数据的概率相关联的似然函数来找到参数的估计;这相当于最小化所谓的多类交叉熵误差函数。对于回归,我们通过最小化平方和误差函数找到参数的估计。

为了最小化误差函数,我们使用梯度下降,这需要找到误差函数的梯度。为了找到误差函数的梯度,我们使用反向传播。

在人工神经网络中,概率论中似然函数的概念用于分类问题。来自多变量微积分的梯度下降用于最小化误差函数。在反向传播过程中,使用多变量链规则。

让我们看看支持向量机解决分类问题的方法。这个想法是,我们有一堆数据点,比如说两个类,我们希望用一个决策边界来分隔它们。例如,数据点可能很容易被这样的线分开:

如果数据点可以很容易地用直线或超平面分离,我们找到离这些点尽可能远的分离超平面,这样就有很大的余量。这就需要最大化余量,最终成为一个凸优化问题。为了解决这个凸优化问题,我们使用拉格朗日乘子,一个来自多变量微积分的概念。一旦我们找到最大边缘超平面,我们可以根据点位于超平面的哪一侧来分类新点。这种分类点的方法被称为最大间隔分类器。

如果数据点不能被超平面分离,我们仍然可以尝试找到一个超平面来分离大部分的点,但可能有一些点位于超平面的边缘内或错误的一侧。情况可能是这样的:

就像在最大间隔分类器的情况下,我们希望我们的超平面尽可能远离超平面正确一侧的每个点。因此,边缘上或边缘外但在超平面正确一侧的点将尽可能远离超平面。边缘内部但在超平面正确一侧的点将尽可能远离超平面,并尽可能靠近边缘边界。对于那些位于超平面错误一侧的点,我们希望这些点尽可能靠近超平面。

正如在最大间隔分类器的情况下,我们想要最大化间隔,使得超平面的正确侧上的点离超平面尽可能远。

我们不仅希望最大限度地提高利润,还希望最大限度地减少对利润的侵犯。这个问题变成了一个凸优化问题,并使用拉格朗日乘子来解决。

一旦我们找到分离超平面,称为软边超平面,我们可以根据点位于超平面的哪一侧来分类新点。这种对点进行分类的方法称为软边界分类器。

如果数据点不是线性可分的,并且分离两个类的决策边界似乎是非线性的,我们可以使用所谓的支持向量机,或支持向量机分类器。想法是考虑更大的特征空间,该更大的空间中的数据点与原始数据点相关联,并且将支持向量分类器应用于更大的特征空间中的该组新的数据点。这将在扩大的特征空间中给我们一个线性判定边界,但在原始特征空间中给我们一个非线性判定边界。通过将任何新点发送到更大的空间并使用线性判定边界来对其进行分类。以下是需要支持向量机的情况:

在解决软间隔分类器的凸优化问题的过程中,出现点积;在支持向量机的方法中,我们用一种叫做核的东西来代替点积。核本质上是一个函数,可以表示为输入值图像在某种变换 h 下的内积。这种用核代替点积的方法称为核技巧。

内核 K 应该是有效的内核;也就是说,应该存在对应于 K 的特征空间映射 h。根据 Mercer 定理,K 是对称半正定的就足够了。

在支持向量机方法中,扩大的特征空间可以是非常高维的,甚至是无限维的。通过直接使用内核,我们不必处理特征映射 h 或扩大的特征空间。

在支持向量机的方法中,我们看到使用了点积和对称半正定的概念;这些概念来自线性代数。为了解决凸优化问题,使用拉格朗日乘子;这个概念来自多变量微积分。

在本文中,我们研究了机器学习技术背后的数学:线性回归、线性判别分析、逻辑回归、人工神经网络和支持向量机。

关于机器学习背后的数学的更多细节,请访问:机器学习的数学书籍

你的竞争性监视比赛背后的数学

原文:https://towardsdatascience.com/the-math-behind-your-competitive-overwatch-match-a5184fc5a50f?source=collection_archive---------4-----------------------

使用真实世界的数据来判断暴雪是如何将流行的 Elo 评分系统应用到《守望先锋》中的。

Photo by Mateo Vrbs on Unsplash

任何一个玩过《守望先锋》竞技游戏模式的人都遇到过许多令人沮丧的事情:“职业”寡妇和神怪,数不清的半藏主,以及偶尔让你质疑暴雪是否在积极惩罚你在另一个生命中一定做过的可怕事情的配对。对于前两个问题,我无能为力——但如果你曾想知道,“这种疯狂的相亲真的有方法吗?”,那么这篇文章就送给你了。

“competitive”——或通常所说的“Comp”——似乎在使用流行的 Elo 评级系统的修改版,用于配对和排名目的。Elo 系统最广为人知的可能是它在职业象棋中的应用(它是由匈牙利裔美国物理学家 Arpad Elo 开发的),但它后来被应用于许多其他运动、竞技视频游戏(例如 PUBG),甚至可以用来确定动物社会群体中雄性的统治等级

在本文中,我将讨论 Elo 评级系统及其匹配背后的数学原理。在此基础上,我将使用来自数千个竞技守望游戏的数据来确定配对等式是否以及如何在游戏中被修改。

Elo 评级系统

在 Elo 系统中,竞争者被分配一个数字等级。当两个玩家进行比赛时,数值等级较高的玩家有望获胜。玩家的预期得分可以使用两个玩家的评分之间的差异来计算,对于我们的目的来说,这可以被认为是获胜的可能性。

一局游戏结束后,每位玩家的评分都会根据结果进行调整。胜利者将从失败者那里获得分数,平局时没有分数交换。

由于 Elo 系统下的评分调整是基于比赛的结果,所以球员在比赛中的实际表现在某种程度上是无关紧要的。考虑到两个玩家的相对排名,影响积分交换的唯一因素是开始条件和结果。因此,Elo 系统并不直接衡量玩家的技能,而是根据他们的胜、负、平以及对手的相对技能来推断玩家的技能。

如前所述,预期得分使用玩家的相对排名来量化玩家战胜对手的可能性。在 Elo 系统中,如果玩家 A 的排名为 R_a ,玩家 B 的排名为 R_b ,那么我们可以计算玩家 A 在与玩家 B 的比赛中的期望得分( E_a )如下:

Expected score for Player A when matched up against Player B in the Elo ranking system

绘制时看起来是这样的:

When the ratings of the two players are equal, the expected score for Player A is 50%. When a player has a 400 point rating advantage over the other player, their expected score is 10 times larger than the other player’s.

正如我们将在本文后面看到的,绝大多数的竞争监视比赛都是由评分差小于 100 的队伍组成的。如果我们放大该范围的 Elo 预期得分曲线,我们会看到这里的曲线看起来呈线性:

In the range where most Competitive Overwatch matches are played (+/-100 SR) the Expected Score curve is nearly linear.

结果是,曲线在该范围内近似为线性的,并且用简单的线性回归来拟合曲线的该部分给出了调整后的 R 平方值 0.999,其对于截距和斜率系数具有高度显著性。这使我们能够估计(非常接近)玩家 A 的预期分数(获胜的可能性)如何增加或减少,因为他们比对手多了一个额外的评分点——或者他们的对手比他们多了一个额外的评分点!根据拟合度:玩家 A 相对于对手的每一个评分点,其获胜的可能性增加 0.14%,而对手每一个评分点,玩家 A 获胜的可能性减少 0.14%。请记住,这只适用于+/- 100 个评级点的范围,这里的曲线基本上是线性的。

如果 Overwatch 使用与 Elo 系统完全相同的参数,拥有 50 分评分优势的团队比没有评分优势的团队获胜的可能性高 7%(从 50%到 57%)。相反,一个有 50 分劣势的团队获胜的可能性比没有差异的团队低 7%(从 50%到 43%)。因此,在 A 队比 B 队有 50 分的评分优势的比赛中,A 队实际上比 B 队赢的可能性高 14%(A 队 57%,B 队 43%)。

Elo 在看守中的预期得分

非常广泛地说,这就是 Overwatch 的竞技游戏模式的功能:

  • 玩家玩一轮定位比赛,之后他们被分配一个从 0 到 5000 的数字等级——这是玩家的 SR 或技能等级。一个拥有较高 SR 的玩家在与一个拥有较低SR的玩家对决时会赢
  • 两个合适的队组成后,排名赛开始。匹配系统将六个排名相似的玩家组成团队,并根据每个团队中玩家的平均 SR 来确定哪些团队应该配对。 大概是系统试图根据计算出的期望得分,使两队比赛尽可能的公平。
  • 游戏结束后,系统会根据玩家是赢是输分别调高或调低他们的 SR ,在平局的情况下没有变化。

因此,事情看起来非常类似于我们上面讨论的 Elo 系统。

挖掘游戏数据

为了确定 Overwatch 的竞争模式是使用标准的 Elo 公式计算预期得分还是一个修改版本,我将计算不同等级差异大小的实验预期得分。这就相当于问这样一个问题— “当一个团队拥有 50 分的评分优势时,他们赢的几率有多大?25 分的评分优势呢?”等等。然后,我将这些点拟合到下面的等式中,以确定k’的值(在标准 Elo 公式中为 400)。

在意识到自己收集足够数量的游戏数据需要太长的时间(通常比赛持续 10-30 分钟)后,我偶然发现了 Myles O'Niell 的这个令人难以置信的数据集,其中包含 3000 多场比赛的数据。

记住 Elo 公式,数据集中感兴趣的列是:

  • my_team_sr : 团队的平均评分
  • 敌方团队 sr : 敌方团队的平均等级
  • team_sr_delta : 两队评分之差【敌方 _ 团队 _sr -我的 _ 团队 _sr】
  • 结果:比赛的结果

一些快速的数据探索

查看平均团队评分的分布(见下图),我们看到 my_team_srenemy_team_sr 的中值、IQR 和分布形状几乎相同。此外,他们的范围从 1900 到 3100,这给了我们一个典型的竞技看守玩家的良好代表。请注意,如果在极端较低或较高的排名中有不同的行为,我们将无法看到。因此,我们必须记住我们的发现所适用的玩家群体。

This violin chart shows almost identical distributions for both teams across the recorded games (the width of the blob corresponds to the density of data points at that value). The median (dot) and IQR (dotted line) are also nearly identical.

下面,我们看到每场比赛中各队评分之间的差异呈正态分布。我们还看到,绝大多数比赛都发生在平均得分相差在 100 SR 以内的队伍之间。

Distribution of rating difference between teams. Looks pretty normal.

Summary statistics for team_sr_delta

这种分布是非常轻微的负偏差,正如负中位数和均值所证明的那样。

Breakdown of match results

此外,游戏的结果似乎并不特别偏向于输赢。

确定不同 SR 增量下的预期得分

下一步是了解当两个团队之间的评分发生变化时,预期得分是如何变化的。回想一下,预期得分的公式是:

预期得分 =中奖概率+ 1/2(抽奖概率)

所以我们需要知道当对手的评分增加或减少(相对于他们的)时,团队获胜的可能性有多大,平局的可能性有多大。我选择通过模拟从数据集中随机选择游戏,并根据玩的、赢的和抽的游戏的数量来计算概率。

模拟

由于 team_sr_delta 的分布是正态的,这意味着我们将有一个非常大的游戏组,其中两个团队的收视率非常接近,而收视率相差较远的游戏则少得多。所以当我发现游戏的胜率在 0 到 25 之间时,我可以很有信心。然而,如果我看的是 SR deltas 在 75 到 100 之间的游戏,由于样本量较小和数据中的噪声,胜率更容易出现错误。

为了克服这一点,我基于 SR 增量将每个游戏分箱,并创建了一个模拟,该模拟将对每个箱中的游戏进行非常简单的过采样和欠采样。模拟从每个箱子中随机选择 100 个游戏——替换,因为有些箱子很小。然后,它会计算赢和平的游戏数,并计算预期分数。它这样做了 1000 次。你可以在下面找到模拟循环的 R 代码(如果你喜欢这类东西的话)。

simOutput <- data.frame( matrix( ncol = 5, nrow = 0))

         colnames(simOutput) <- c( "Bucket", "GamesWon",
                                   "GamesDraw", "GamesPlayed", "SimRun")

         *# because I'm too lazy to do the math required for output rows*
         row <- 1

         *# loop through iterations of simulation* 
         for(i in 1:1000)
         {

              *# loop through each bucket for this iteration*
              for(j in 1:8)
              {
                *# sample the games with replacement for bucket j*
                simData <- data %>% filter(sr_delta_bucket == j) %>% sample_n(100, replace = T) 

                *# determine how many games were won, drawn and played for that bucket*
                simOutput[row, "Bucket"] <- j
                simOutput[row, "GamesWon"] <- sum(simData$win_count)
                simOutput[row, "GamesDraw"] <- sum(simData$draw_count)
                simOutput[row, "GamesPlayed"] <- nrow(simData)
                simOutput[row, "SimRun"] <-i

                row <- row+1
              }

              *# for my own sanity*
              if(i %in% seq(0,1000,100)){print( i)}
         }

          *# Numerator for expected score*
          simOutput$WonHalfDraw <- simOutput$GamesWon + ( simOutput$GamesDraw / 2)

        * # Calculate expected score*
          simOutput$ELOScore <- round( simOutput$WonHalfDraw / simOutput$GamesPlayed , 4)

运行模拟后,我按 bin 汇总,这样我就可以很好地了解 bin 的预期得分分布。

*# now determine the probabilities of winning at each bucket*
       simResults <-   
          simOutput %>%
               group_by(Bucket) %>%
               summarise(
                    TotalGamesWon = sum(GamesWon),
                    AvgGamesWon = round( mean(GamesWon), 2),
                    SDGamesWon = round( sd(GamesWon), 2),
                    TotalGamesDraw = sum(GamesDraw),
                    AvgGamesDraw = round( mean(GamesDraw), 2),
                    SDGamesDraw = round( sd(GamesDraw), 2),
                    TotalGamesPlayed = sum(GamesPlayed),
                    WinProb = round( (TotalGamesWon / TotalGamesPlayed) * 100, 2),
                    DrawProb = round( (TotalGamesDraw / TotalGamesPlayed) * 100, 2),
                    TotalELOScore = WinProb + (DrawProb / 2),
                    ELOScoreSD = round( sd(ELOScore) * 100, 2)
                    )

现在他们已经被团队之间的 SR delta 分类了,我们可以看看基于 bin 的模拟的预期分数的分布(如下所示)。我们可以看到,在左上方敌队的评分劣势在-100 到-75 之间的地方,“我的队”比敌队的评分优势在 75 到 100 之间(右下方)的时候有更高的期望得分(获胜概率)。我在 0.5 处添加了一条虚线,以便更容易比较各个区间。

Distribution of Expected Score by Bin from Super Magical Overwatch Simulator 1000

我们还看到每个箱中的分布近似正态,这意味着我们可以做回归和置信区间之类的事情,而不必太担心违反基本假设。我们现在准备将模拟数据与 Elo 预期得分公式进行比较!

拟合方程

使用模拟生成的数据,我们现在可以将以下等式拟合到我们的真实世界竞争监视数据中。

标准 Elo 期望得分方程,陡度= 400

我将用来确定陡度的方程

为了根据分箱的模拟数据进行实际拟合,我将分母中的 团队 SR Delta 设置为每个箱的中点(即,箱 1: -100 到-75 的中点为-87.5)。使用非线性最小二乘法,我使用以下代码拟合 R 中的方程()注意,k = 200 起始参数是任意的,我尝试了从 100 到 1000 的许多不同起始值,它们都给出了相同的结果!):

*# fit to Elo equation to determine 'steepness' parameter*
logFit <-nls( ELOScore ~   1 / (1 + 10^(Mid/k)), start = list(k = 200)  , data = simOutput)

我们的值是 831.8 而不是 400 !但是我们对这一估计有多大把握呢?使用 R 函数 confint(),我们可以确定该系数的 95%置信区间,它分别给出了 803.8861.7 的下限和上限。因此,我们可以非常自信地说,监视是而不是使用传统 Elo 公式中使用的值 400,而是使用更接近 800 的值!

那么,这改变了什么呢?

前面我们看到,使用标准的 Elo 公式,比对手有 400 点评分优势的玩家获胜的可能性是对手的 10 倍(或者预期得分比对手大 10 倍)。这是在等式中明确将值 400 作为比例因子的结果。我们的实验数据显示,真实值可能更接近 800,这意味着你必须比你的对手有 800 的评分优势,才能比他们多 10 倍的胜算。这样的效果是一个更平,更平滑的曲线。

此外,回想一下,大多数比赛的团队之间的 SR 差异小于 100,在这个范围内,曲线可以非常接近线性拟合。

每超过对手一个评分点,玩家 A 获胜的可能性增加 0.069%,而对手每超过一个评分点,玩家 A 获胜的可能性减少 0.069%。不是那么巧合,这是使用标准 Elo 曲线(的变化率的一半,你觉得这是为什么?)。

最后,我创建了一个表格,在给定对方球队的相对 SR 的情况下,计算你的球队的预期得分,以及如果比赛在两个得分相等的球队之间进行,你的获胜概率的差异。

gg ez。

最终想法

我发现了这个问题,并打算继续撰写另一篇文章,研究 Overwatch 的赛后评级调整与标准 Elo 评级调整的对比。请随时留下任何意见或反馈,感谢您的阅读!

在 Medium 或 LinkedIn 上关注我,看看我未来的棋子!

参考文献

何塞·莱瓦https://quantdare.com/elo-system/关于 Elo 系统的精彩报道

维基百科上的词条 Elo 系统与逻辑功能https://en.wikipedia.org/wiki/Elo_rating_systemhttps://en.wikipedia.org/wiki/Logistic_function

守望论坛上守望撮合排名系统的荒唐深度演练**

数学家与裁判争论指南

原文:https://towardsdatascience.com/the-mathematicians-guide-to-arguing-with-an-umpire-bbf1dd30812b?source=collection_archive---------8-----------------------

在一次击球中,数学上最重要的计数是什么?

这是一种令人作呕的感觉。早上举重,团队练习,自己击球,然后当你步入禁区,跑垒员在二垒和三垒上,一人出局时,接球手后面的 35 岁盲人决定,一个几乎在另一个击球手禁区内,距离污垢 2 英寸的投球一定抓住了板的一部分。他发出的咕噜声让你应该从 1-1 数到 0-2,这种声音会带走你灵魂的一部分。

不管你是亲身经历过,还是曾经是那个对着电视声嘶力竭大喊“这个傻逼在看什么?!"每个人都知道一个球或一击可以完全改变击球的结果。对于有经验的棒球迷来说,“哦,这只是一次罢工”甚至没有触及表面。从 1 比 0 的比分变成 0 比 1 的比分正好让投手在击球时占了优势。从 21 变成 12 只是让你从舒适地寻找你喜欢的球场扩大到两倍。

但对你来说,一次推销的实际影响是什么?裁判的误判真的缩短了你的击球时间吗?接受一次推销让自己在盒子里感觉舒服是个聪明的主意吗?自动采用 3-0 的间距是一个聪明的想法吗?我已经收集了几十万个二级棒球和垒球比赛的球棒,以便更好地理解一个球棒成功或失败的计数。

预告片:在真正的 sabermetrics 时尚中,我们将专注于上垒,而不仅仅是安打。然而,我们不打算统计一些上垒的方式(被投球击中,捕手干扰),因为它们对分析什么影响击球没有帮助。我也不包括 sac 短打,因为它们通常由教练决定,而不是由击球手或投手决定。

求解答的问题:
1。每次计数的基本概率是多少?
2。什么因素对你能否上垒影响最大?
3。不同计数的段塞流百分比差异大吗?
4。最后击球数是多少重要吗?还是导致最终计数的计数顺序对最终结果产生了影响?

我分析的所有数据准备和代码可以在https://github.com/anchorP34/PlayByPlay-Reports找到

1.每次计数的基本概率是多少?

开始击球时,你可以有 12 种不同的计数。因为你可以在一场比赛中有多次失误,所以我们要看在一场比赛中经历过那次失误的人的上垒率。下面是一张热图,显示了击球手在击球时的平均上垒率(OBP ):

Matrix with ball count vertically and Strike count horizontally. There are three different sections to focus on: the dark blue, the light blue / white, and the orange and red.

正如大多数棒球迷所期待的那样,你上垒的最好机会是在 3 比 0 的时候,因为你最有可能保送,也最有可能三振出局。根据同样的逻辑,你最差的得分是 0-2,因为投手有更多的机会三振你,而且不用担心保送击球手。

对于大多数教练来说,2-0 和 3-1 的投球被认为是相同的击球心态,因为打者是在“打者计数”中。然而,这些数字可能会有所不同。在 31 的情况下,最糟糕的情况是 32,你仍然有大约 50%的机会上垒。在 2 比 0 的情况下,最糟糕的情况是 22,有 33%的机会上垒。2-0 的投球应该更加集中,因为在接下来的时间里,你被击中的可能性要大得多。

2。什么因素对你能否上垒影响最大?

在第一个问题的基础上,确定一个击球手投球的权重也可以从热图中看出,但计算是在分析的基础上进行的。因为有三个球或两个好球的计数不能被强调,因为任何一个方向的增加都将是保送或三振出局,我们可以专注于击球时的中间计数。我们正在计算下一次投球影响% ,方法是查看如果你在下一次投球中得到一个球,OBP 增加的量加上如果你在下一次投球中得到一个好球,OBP 减少的量。我们使用每一个的绝对值,因为一些计数会因为球是正的而打击是负的而被抵消。

Bar chart that shows the total change in OBP on the next pitch

从图表中,我们可以看到在计数早期的投球(0-0 和 0-1)对一个击球手没有很大的影响。如果你是那种喜欢在击球时投出第一球以获得对投手更好感觉的击球手,那么它几乎不会产生与在计数中稍后投出一球相同的影响。这确实违背了我正常的意识形态,因为我认为从 0-1 开始比从 1-0 开始要糟糕得多。

3。不同计数的段塞流百分比差异大吗?

当然,上垒率是一个击球手成功的很大一部分,但是我们也想看看来自不同计数的力量。一垒安打和一次保送是成功的,但是双打、三垒安打和全垒打更受欢迎,最终会带来更多的得分来帮助球队获胜。我想从两个角度来看这个问题:击球的百分比和每次击球成功的频率。

总击球数栏涉及正常击球百分比计算(总击球数除以 at 击球数。比如全垒打= 4,三垒= 3,二垒= 2,保送和一垒= 1。其他都是 0。)

这些结果与基本百分比热图极其相似。接近 3–0 的计数具有较好的段塞百分比,而接近 0–2 的计数具有较差的段塞百分比。

我认为有趣的是,12 个计数中只有 8 个在. 500 的击球率附近徘徊。因此,除非你在数量上遥遥领先或落后,否则所有人的权力数字都差不多。在权力方面,2-1 计数与 0-1 计数没有太大区别。

为了观察这些幂数值的频率,我们可以看看这个柱状图:

The frequency of successful results in each count

从左往右看,1Bs 和 BBs 是反比关系。你走的越右,你走的机会就越大,得到一个单人间的机会就越小。

同样令我惊讶的是,双打在 0 球和 1 球计数中比在 2 球和 3 球计数中更频繁。在 0 球和 1 球计数中,双打至少占所有成功结果的 10%,而在 2 球和 3 球计数中,只有 2-2 球计数至少占所有成功结果的 10%。这很令人惊讶,因为我总是认为 2-0 和 2-1 比 0-11-1 更有机会成为伟大的击球手。

4。最后击球数是多少重要吗?还是导致最终计数的计数顺序对最终结果产生了影响?

改变简单的统计分析如平均值的速度,让我们看看机器学习,看看我们是否可以预测一个 at 球棒是否会成功。看看 at 球棒经历的计数,at 球棒的投球数,最后一击和计数中的球数足以预测某人是否会上垒。

我尝试使用 3 种不同的方法来确定模型中使用的变量。
a)使用最终击球计数来预测最终结果
b)仅使用击球时经历的不同计数
c)使用最终结果中的两个列子集

The final model. Feature importance is the usage the variable was used in predicting the final output.

我决定使用准确性来确定我的算法的有效性,并使用 64%的基线分数,因为上垒的概率是 36%。如果你假设一切都是一个输出,你将有 64%的时间是正确的,因此确定是否真的有一些有效的机器学习。

当将只关注 at 球棒的最终击球次数的模型与 at 球棒的不同击球次数进行比较时,预测结果几乎没有差异。这两个模型在预测击球手是否会上垒方面的正确率为 68.8%,这意味着无论你是以 0-2 开始,以 3-2 结束,还是以 3-0 开始。以 32 结束比赛,32 的比分才是最重要的。这有助于向打者表达,你的击球手在每次投球后都会更新,你总是可以让击球手在更好的情况下上垒。

最终的模型(模型 c)最终比其他模型做得稍好,达到 69%的准确率。从最终模型的特征重要性来看,at 球棒最终计数中的球数对 at 球棒的结果影响最大,而 at 早期的计数对确定结果几乎没有影响。

那么,我应该如何与裁判争论谁破坏了我的击球?

  1. 如果是在击球初期,咬你的舌头。从数字来看,击球初期的计数不会对你是否能上垒有很大的影响。不值得为任何事情和裁判争论,让他心情不好。
  2. 当你数到 1-0、2-0 或 2-1 时,这些投球对你击球的结果有很大的影响。由于裁判更有可能在 2-0 的计数中判定任何接近的击球,我绝对会告诉裁判“伙计,这 2-0 的投球在我的击球中占了 36%的重量。不要让他自动出局来继续击球。”
  3. 不要因为“权力数字”而与裁判争论 3-12-0 的计数。在这种情况下,你更有可能获得保送,而不是额外的安打,所以你在 2-1 的计数中争论你的大时间 pop 真的可以离开窗户。

然而,在击球时知道才算数,最后一击和球才算数,而击球的总长度不足以决定你击球的成功结果。有更多的变数,将需要被包括在内,以确定一个在蝙蝠的输出,这应该使任何击球手有信心,他们有最终的权力来决定他们在蝙蝠的结果。

主成分分析背后的数学

原文:https://towardsdatascience.com/the-mathematics-behind-principal-component-analysis-fff2d7f4b643?source=collection_archive---------0-----------------------

从原始数据到主成分

Photo by Tim Johnson on Unsplash

介绍

主成分分析(PCA)的中心思想是降低由大量相关变量组成的数据集的维数,同时尽可能多地保留数据集中存在的变异。这是通过转换成一组新的变量来实现的,即主成分**【PCs】,它们是不相关的,并且是有序的,因此前几个保留了所有原始变量中存在的大部分变化。

PCA 背后的数学

PCA 可以被认为是一个无监督的学习问题。从原始数据集获取主成分的整个过程可以简化为六个部分:

  • 取由 d+1组成的整个数据集,忽略标签,这样我们的新数据集就变成了 d 维。
  • 计算整个数据集的每个维度的平均值。
  • 计算整个数据集的协方差矩阵
  • 计算特征向量和相应的特征值
  • 将特征向量按特征值递减排序,选择 k 个特征值最大的特征向量,形成一个 d × k 维矩阵 W.
  • 使用这个 d × k 特征向量矩阵将样本变换到新的子空间上。

所以,让我们一个一个地展示这背后的数学原理。

  1. 取由 d+1组成的整个数据集,忽略标签,这样我们的新数据集就变成了 d 维。

假设我们有一个数据集,它是 d+1 维的。其中,在现代机器学习范例中,d 可以被认为是 X_train1 可以被认为是 y_train (标签)。因此, X_train + y_train 组成了我们完整的训练数据集。

因此,在我们去掉标签后,我们剩下的是 d 维数据集,这将是我们用来寻找主成分的数据集。此外,让我们假设在忽略标签(即 d = 3)后,我们剩下一个三维数据集。

我们将假设样本来自两个不同的类,其中数据集的一半样本被标记为类 1,另一半被标记为类 2

让我们的数据矩阵 X 是三个学生的分数:

2。计算整个数据集每个维度的平均值。

上表中的数据可以用矩阵 A,来表示,其中矩阵中的每一列显示测试分数,每一行显示学生的分数。

Matrix A

因此,矩阵 A 的平均值为

Mean of Matrix A

3。计算整个数据集的协方差矩阵(有时也称为方差-协方差矩阵)

因此,我们可以使用以下公式计算两个变量 XY 的协方差:

https://getcalc.com/statistics-covariance-calculator.htm

使用上述公式,我们可以找到 A. 的协方差矩阵。同样,结果将是 d ×d 维的方阵。

让我们像这样重写我们的原始矩阵

Matrix A

它的 c 卵巢矩阵会是

Covariance Matrix of A

这里值得注意的几点是:

  • 如对角线上的蓝色所示,我们可以看到每次测试分数的变化。艺考方差最大(720);还有英语考试,最小的(360)。所以我们可以说艺考成绩比英语考试成绩有更多的可变性。
  • 协方差在矩阵 A 的非对角线元素中显示为黑色

a) 数学与英语的协方差为正(360),数学与美术的协方差为正(180)。这意味着分数趋向于以积极的方式协变。随着数学分数的上升,艺术和英语的分数也趋于上升;反之亦然。

T21 然而,英语和艺术之间的协方差是零。这意味着英语和艺术成绩之间没有可预测的关系。

4。计算特征向量和相应的特征值

直观上,特征向量是一个向量,当对其应用线性变换时,其方向保持不变。

现在,我们可以很容易地从上面的协方差矩阵计算特征值和特征向量。

A 为方阵, ν 为向量, λ 为标量,满足Aνν,则 λ 称为与特征向量νA关联的特征值。**

A 的特征值是特征方程的根

计算 det(A-λI) 首先, I 是一个单位矩阵:

先简化矩阵,我们可以以后再计算行列式,

****

既然我们已经有了简化的矩阵,我们就可以求出它的行列式:

****

我们现在有了方程,我们需要求解 λ,从而得到矩阵的特征值。因此,将上面的等式等于零:

求解此方程得到 λ、 的值后,我们得到以下值

Eigenvalues

现在,我们可以计算上述特征值对应的特征向量。我不会在这里展示如何计算特征向量,访问这个链接来了解如何计算特征向量。

因此,在求解了特征向量之后,我们将得到相应的特征向量的如下解

5。将特征向量按特征值递减排序,选择 k 个特征值最大的特征向量,形成一个 d × k 维矩阵 W.

我们从降低我们的特征空间的维度的目标开始,即,通过 PCA 将特征空间投影到更小的子空间上,其中特征向量将形成这个新的特征子空间的轴。然而,特征向量仅定义新轴的方向,因为它们都具有相同的单位长度 1

因此,为了决定对于低维子空间,我们要去掉哪个(些)特征向量,我们必须看一下特征向量的相应特征值。粗略地说,具有最低特征值的特征向量承载关于数据分布的最少信息,并且那些是我们想要丢弃的。

常见的方法是将特征向量从最高到最低的对应特征值进行排序,选择顶部的 k 个特征向量。

因此,按降序排列特征值后,我们有

对于我们的简单示例,我们将 3 维特征空间缩减为 2 维特征子空间,我们将两个具有最高特征值的特征向量进行组合,以构建我们的 d×k 维特征向量矩阵 W.

所以,特征向量对应的两个最大特征值是:

6。将样本转换到新的子空间上

在最后一步中,我们使用刚刚计算的 3x2 维矩阵 W 通过等式y = W′×x将样本变换到新的子空间上,其中W′是矩阵转置****

最后,我们计算了两个主成分,并将数据点投影到新的子空间上。

学分和来源:

  1. 塞巴斯蒂安·拉什卡博客
  2. Stattrek 矩阵代数

Scikit-learn 和 Spark 中决策树、随机森林和特征重要性的数学

原文:https://towardsdatascience.com/the-mathematics-of-decision-trees-random-forest-and-feature-importance-in-scikit-learn-and-spark-f2861df67e3?source=collection_archive---------0-----------------------

简介

这篇文章试图在 Scikit-learn 和 Spark 中整合关于树算法及其实现的信息。特别是,它提供了如何计算特性重要性的说明。

网上有很多很棒的资源在讨论决策树和随机森林是如何创建的,这篇文章并不打算这样做。尽管它包含了上下文的简短定义,但它假设读者已经掌握了这些概念,并且希望知道 Scikit-learn 和 Spark 中的算法是如何实现的。

所以,让我们从…

决策树

决策树学习如何最好地将数据集分成越来越小的子集来预测目标值。条件或测试被表示为“叶子”(节点),而可能的结果被表示为“分支”(边)。这个分裂过程继续进行,直到不能获得进一步的增益或者满足预设规则,例如达到树的最大深度。

决策树算法

有多种算法,scikit-learn 文档提供了其中一些算法的概述(链接)

那么 Scikit-learn 和 Spark 用什么呢?

Scikit-learn 文档称,它正在使用“CART 算法的优化版本”。虽然文档中没有明确提到,但可以推断 Spark 将 ID3 与 CART 一起使用。

所以让我们把重点放在这两个上——ID3 和 CART。

论文对 ID3、CART 和 C4.5 决策树算法的优缺点进行了比较研究。更全面的定义也可以在那里找到。

ID3

该算法创建了一个多向树——每个节点可以有两条或更多条边——使用杂质标准找到将最大化信息增益的分类特征。它不仅不能处理数字特征,而且只适用于分类问题。

优势

  • 从训练数据中创建可理解的预测规则
  • 构建最快的树
  • 构建一棵矮树
  • 只需要足够的属性,直到所有数据都被分类
  • 找到叶节点使得测试数据能够被修剪,从而减少测试的数量
  • 搜索整个数据集以创建树

不足之处

  • 如果测试一个小样本,数据可能会过度拟合或过度分类
  • 一次只测试一个属性来做出决策
  • 不处理数字属性和缺失值

推车

CART 代表分类和回归树。该算法创建一个二叉树,每个节点正好有两条向外的边,使用适当的杂质标准找到最佳的数字或分类特征进行分割。对于分类,可以使用基尼系数twoing 标准。对于回归,CART 使用最小二乘法(均方误差)引入了方差缩减

优势

  • CART 可以轻松处理数字和分类变量
  • CART 算法将自己识别最重要的变量并消除不重要的变量
  • CART 可以轻松处理异常值

不足之处

  • 购物车可能有不稳定的决策树
  • 购物车按一个接一个的变量拆分

节点杂质/杂质标准

Scikit-learn 和 Spark 都在其文档中提供了有关杂质标准所用公式的信息。对于分类,他们都默认使用基尼系数,但提供熵作为替代。对于回归,两者都使用均方差来计算方差减少。此外,可以使用 Scikit-learn 中的平均绝对误差来计算方差减少。

Impurity Formulas used by Scikit-learn and Spark

树算法文档的链接

信息增益

另一个值得注意的术语是“信息增益”,它与使用熵分割数据一起使用。它被计算为在属性上分割数据集后熵的减少:

增益(T,X) =熵(T) —熵(T,X)

  • T =目标变量
  • X =要分割的特征
  • 熵(T,X) =在特征 X 上分割数据后计算的熵

随机森林

随机森林(RF)在训练中构造许多个体决策树。来自所有树的预测被汇集以做出最终预测;用于分类的类的模式或用于回归的平均预测。由于他们使用一系列的结果来做最后的决定,他们被称为集成技术。

特征重要性

特征重要性被计算为通过到达该节点的概率加权的节点杂质的减少。节点概率可以通过到达节点的样本数除以样本总数来计算。值越高,特性越重要。

sci kit-learn 中的实施

对于每个决策树,Scikit-learn 使用 Gini 重要性计算节点重要性,假设只有两个子节点(二叉树):

  • ni sub(j)=节点 j 的重要性
  • w sub(j) =到达节点 j 的加权样本数
  • C sub(j)=节点 j 的杂质值
  • left(j) =在节点 j 上从左侧拆分的子节点
  • right(j) =在节点 j 上从右侧拆分的子节点

sub()正在被使用,因为下标在媒体中不可用

参见 _tree.pyx 中的compute _ feature _ importances方法

决策树中每个特征的重要性计算如下:

  • fi sub(i)=特性 I 的重要性
  • ni sub(j)=节点 j 的重要性

然后,通过除以所有要素重要性值的总和,可以将这些值归一化为 0 到 1 之间的值:

在随机森林级别,最后一个特征重要性是所有树的平均值。计算每棵树上的要素重要性值之和,然后除以树的总数:

  • RFfi sub(i)=从随机森林模型中的所有树计算的特征 I 的重要性
  • normfi sub(ij)=树 j 中 I 的归一化特征重要性
  • T =树木总数

参见 forest.py 中的方法 feature_importances_

符号的灵感来自这个stack exchange thread,我发现它对这篇文章非常有用。

在 Spark 中实现

对于每个决策树,Spark 通过对增益求和来计算特征的重要性,增益按通过节点的样本数进行缩放:

  • fi sub(i) =特性 I 的重要性
  • s sub(j) =到达节点 j 的样本数
  • C sub(j) =节点 j 的杂质值

参见 treeModels.scala 中的方法computeFeatureImportance

要计算随机森林级别的最终要素重要性,首先要相对于树对每棵树的要素重要性进行归一化:

  • normfi sub(i) =特征 I 的归一化重要性
  • fi sub(i) =特性 I 的重要性

然后将每棵树的特征重要性值归一化求和:

  • RFfi sub(i)=从随机森林模型中的所有树计算的特征 I 的重要性
  • normfi sub(ij)=树 j 中 I 的归一化特征重要性

参见 treeModels.scala 中的方法特征重要性

结论

该模型的目标是解释 Scikit-Learn 和 Spark 如何实现决策树并计算特征重要性值。

希望在这篇文章结束时,你能更好地理解适当的决策树算法和杂质标准,以及用于确定模型中每个特征重要性的公式。

机器学习的数学

原文:https://towardsdatascience.com/the-mathematics-of-machine-learning-894f046c568?source=collection_archive---------0-----------------------

在过去的几个月里,有几个人联系我,说他们热衷于探索数据科学的世界,并使用机器学习(ML)技术来探索统计规律,构建无懈可击的数据驱动产品。然而,我观察到有些人实际上缺乏必要的数学直觉和框架来获得有用的结果。这是我决定写这篇博文的主要原因。最近,出现了许多易于使用的机器和深度学习包的可用性热潮,如 scikit-learnWekaTensorflowR-caret 等。机器学习理论是一个交叉统计学、概率学、计算机科学和算法方面的领域,产生于从数据中迭代学习和发现可以用于构建智能应用的隐藏见解。尽管机器和深度学习有巨大的可能性,但要想很好地掌握算法的内部工作原理并获得良好的结果,对这些技术中的许多技术进行彻底的数学理解是必要的。

为什么要担心数学?

机器学习的数学之所以重要,有很多原因,下面我将重点介绍其中的一些原因:

  1. 选择正确的算法,包括考虑准确性、训练时间、模型复杂性、参数数量和特征数量。
  2. 选择参数设置和验证策略。
  3. 通过理解偏差-方差权衡来识别欠拟合和过拟合。
  4. 估计正确的置信区间和不确定性。

你需要什么水平的数学?

当试图理解像机器学习这样的跨学科领域时,主要问题是理解这些技术所需的数学量和数学水平。这个问题的答案是多维度的,取决于个人的水平和兴趣。对机器学习的数学公式和理论进步的研究正在进行中,一些研究人员正在研究更先进的技术。我将陈述我认为成为机器学习科学家/工程师所需的最低数学水平,以及每个数学概念的重要性。

Image by Author

  1. 线性代数:我的一个同事,Skyler Speakman 最近说“线性代数是 21 世纪的数学”,我完全同意他的说法。在 ML 中,线性代数随处可见。诸如主成分分析(PCA)、奇异值分解(SVD)、矩阵的特征分解、LU 分解、QR 分解/因式分解、对称矩阵、正交化&正交化、矩阵运算、投影、特征值&特征向量、向量空间和范数等主题是理解用于机器学习的优化方法所需要的。线性代数的神奇之处在于有如此多的在线资源。我总是说,传统的课堂正在消亡,因为互联网上有大量的可用资源。我最喜欢的线性代数课程是麻省理工学院课件(Gilbert Strang 教授)提供的课程。
  2. 概率论和统计学:机器学习和统计学不是很不同的领域。实际上,最近有人将机器学习定义为“在 Mac 上做统计”。ML 需要的一些基本统计和概率理论是组合学、概率规则和公理、贝叶斯定理、随机变量、方差和期望、条件和联合分布、标准分布(伯努利、二项式、多项式、均匀和高斯)、矩母函数、最大似然估计(MLE)、先验和后验、最大后验估计(MAP)和抽样方法。
  3. 多元微积分:一些必要的主题包括微分和积分,偏导数,向量值函数,方向梯度,海森,雅可比,拉普拉斯和拉格郎日分布。
  4. 算法和复杂的优化:这对于理解我们的机器学习算法的计算效率和可扩展性以及利用我们的数据集中的稀疏性是很重要的。需要了解数据结构(二叉树,散列,堆,栈等),动态规划,随机和次线性算法,图形,梯度/随机下降和原始对偶方法。
  5. 其他:这包括上述四个主要领域中没有涵盖的其他数学主题。它们包括实分析和复分析(集合和序列、拓扑、度量空间、单值和连续函数、极限、柯西核、傅立叶变换)、信息论(熵、信息增益)、函数空间和流形。

一些用于研究机器学习所需的一些数学主题的在线 MOOCs 和材料是:

最后,这篇博文的主要目的是给出一个善意的建议,关于数学在机器学习中的重要性,以及掌握这些主题的必要主题和有用资源。然而,一些机器学习爱好者是数学新手,可能会发现这篇文章令人沮丧(说真的,这不是我的目的)。对于初学者来说,开始做机器学习不需要很多数学。基本的先决条件是本文博客中描述的数据分析,随着你掌握更多的技术和算法,你可以在旅途中学习数学。

本条目最初发表于 2016 年 7 月我的 LinkedIn 页面。

数据科学的创新思维

原文:https://towardsdatascience.com/the-mindset-for-innovation-with-data-science-fc51605a4867?source=collection_archive---------3-----------------------

培育健康创新的数据科学功能的原则

Photo by Israel Viadest

随着组织转向数字化转型战略,他们也越来越多地围绕数据科学实践组建团队。目前,许多首席信息官、首席数据官和其他首席数据科学家面临的主要挑战在于,如何准确定位数据科学职能,以满足组织改进当前和未来活动的需求。这意味着嵌入数据科学团队以全面参与业务,并调整公司的运营骨干(例如,技术、流程、基础架构、文化、法律)。

数据科学没有正式的描述。其“用数据理解和分析实际现象”的使命,从业界到学术界可以有很大的不同。凭借在这两个领域的经验,我对数据科学的定义偏向于数学、编程和通信技能的结合,以及科学方法在特定知识领域的应用。我喜欢将实践总结为四个不同的战略领域:

  • 数据集通常涵盖数据治理、战略数据源和基础设施。
  • 技能组合是关于衡量分析就绪性、管理人才、传播循证文化(例如创建共享语言)、应用数据科学流程以及设计数据科学团队的组织框架。
  • 工具集涵盖了合适的数据科学工具的选择以及最佳实践在整个组织中的应用。
  • 一种思维方式集合了支持数据科学功能精神的生动原则,以在数字化转型的源头提供价值和创新。

我相信心态是将对数据集、技能和工具集的投资转化为经济和文化影响的推动力。我来试着介绍一下为什么和怎么做。

10 多年来,我有幸与梦之队合作,将数据科学带入他们领域的前沿。在麻省理工学院可感知城市实验室(麻省理工学院),我们在分析人类活动的数字痕迹以促进城市创新的技术方面处于领先地位, Bestiario 开发了独特的环境,使数据操作和可视化民主化, BBVA 数据&分析 (D & A)从金融数据中获取知识以转变银行业(例如风险建模、客户咨询、流程自动化)。我认为这些机构在人才、开放式挑战和获取大量数据方面堪称典范。每个都有不同的结构、融资机制和功能,但都有一个共同的使命,那就是引领其赞助商或客户的数字战略。

我在麻省理工学院、Bestiario 和 D&A 持续体验到的是一种独特的能力,能够交付切实的成果,以不同的方式思考,打破现状。我经历了一种因复杂性和不可预测性而形成的思维定势,这种思维定势是由设定背景、激励人们而非管理他们的领导层形成的。

根据我的观察和学习,我制定了一套原则,作为如何培养数据科学创新思维的蓝图。这些原则没有按重要性排序,而是旨在相互补充。我看重:

1。文化胜过技术

2。多才多艺

3。双重性超过破坏性

4。短跑故事

5。道德高于利润

虽然右边的项目有价值,但我更看重左边的项目。当然,这些原则会有不同程度的潮起潮落,不应该被认为是普遍规律。

1。文化胜于技术

在麻省理工学院精神的核心,D&A 和 Bestiario 承诺永远学习,寻求同行的认可,并帮助他人做同样的事情。例如,D&A 团队的很大一部分人在工作时间之外致力于教学。这种文化为实践社区之间的知识获取和知识共享提供了投资回报,也为增加承诺、凝聚力、奉献和激励水平的联系、合作和品牌化提供了投资回报。换句话说,数据科学存在于技术之外。

在一个技术推动、“技术先知”和媒体回音室的世界里,人们很容易陷入技术陷阱,因为它迫切需要不断探索只会导致分心和短期美容效果的新工具。与其他创意团队类似,吸引或留住数据科学人才的不是技术。驱动人们的是一种开放和健康的文化,这种文化确保人们在工作中感到充实、挑战和支持。

2。多才多艺

我在麻省理工学院的经历最让我着迷的是,它的研究活动不局限于单一领域的方法论。它的特点是一种“全方位”的方法——受麻省理工学院媒体实验室的启发——说设计师、工程师、物理学家、生物学家、社会科学家甚至艺术家的语言。类似地,Bestiario 的首席执行官 Jose Aguirre 为工程师开发科学肌肉和像设计师一样思考提供了背景。

数据科学包含一系列不同的学科,并不是孤立存在的。为了与他人合作,专家需要学习他们专业领域之外的知识。一些组织可能会陷入这样的陷阱,即从事数据科学需要专业的博士学位,或者这是一门工程学科。事实上,这种实践要求对理解其他学科的语言有一种发达的好奇心,并对协作学习有强烈的兴趣。“博学者”或“广义专家”的这些特征,让科学团队能够与企业中来自产品管理、设计、营销、法律、沟通、工程、财务等不同岗位的人打交道。最近,行业中出现了“产品科学家”或“人工智能设计师”等新的混合名称,突显了将不同学科与科学方法联系起来的必要性。与此同时,来自跨学科领域的观点,如科学技术研究 (STS)关于算法责任、数据偏差或“厚数据”的观点,正在成为数据科学核心主题的一部分。

通才专家带来了跨学科知识的优势,这有助于培养创造力和对社会、组织或企业需求的更深刻理解。一个综合专家团队比一个专家团队能为深层、复杂和非常规领域带来更好的整体视角。

3双重性超过破坏性

在定位他们的数据科学职能时,一些组织将实践的新颖性与他们的创新议程联系起来。他们期待用颠覆性的概念创造新的价值。不幸的是,这种主动的方法经常导致与组织现实的某种程度的脱节,团队探索一些可能不是实际问题的东西,或者调查错误的问题。因此,这种勘探模式的可测量影响可能只是残余的。这是麻省理工学院赞助模式或雇佣外部顾问做法的一个潜在缺点。

一个组织的强大取决于其团队相互协作的能力。因此,其他组织依靠部门的协同定位来确定正确的问题,并对问题进行优先排序。这些团队通常专注于将数据科学应用于当前的优化需求。如果执行得当,交付的价值将产生足够的影响,加速数据科学成为组织核心业务的一部分。然而,埋头苦干的数据科学团队并没有完全让组织受益。忙于小的改进、短期的要求、会议和报告,人的大脑和创造力没有用来质疑现状和思考替代机会。

在数据科学和其他领域,在创新和优化之间平衡战略需要权衡。D & A 的一个主要成功因素是它成长为一个的双手并用的组织。一方面,我们有一个为 BBVA 作为一个全球金融机构创造效率和增量变化的战略。除了展示数据科学的短期价值,这些项目还为团队掌握金融行业的真实问题提供了最佳背景。另一方面,我们也相信,想要在 21 世纪蓬勃发展的公司需要使用数据科学来探索他们未来的竞争优势。这条工作线是关于价值创造和推动创新议程的边界。与麻省理工学院或 Bestiario 类似,任务是帮助一个组织“跳出框框”思考和执行,远离日常干扰和干扰。这些探索是反思获得的知识、培养怀疑和阐明下一步行动的难得机会。

Photo by BBVA

4。冲刺的故事

在早期阶段,项目需要得到领导层的认可,以安抚反对变革的人,并对抗不切实际的期望。在麻省理工学院,我们雇佣了可感知城市实验室主任卡洛·拉蒂所说的“城市演示”来将想法转化为实验和愿景。这些演示并不展示任何结果,而是为即将到来的探索做准备。他们讲述了一个真实的故事,关于赞助商和人们采取批判性方法的“可能结果”。

我记得 WikiCity Rome 是一个城市演示,特别影响了新兴“智能城市”行业的想象。该团队制作了一个公开放映的动画地图,实时覆盖了城市中不同类型的移动性(行人、出租车、公共交通工具)。这个项目完成于 2007 年,是首批城市实验之一,现场观众可以体验数字信息的反馈循环机制。

Photo by MIT SENSEable City Lab

在那个阶段,演示不需要构建业务案例;它的故事似乎得到了足够的赞助商的支持,以获得资源来探索更多的概念并报告我们的发现。同样,在 D&A,我们开发数据故事,我们设计小说以一种有趣的方式解释我们分析能力的应用和含义。这些内容以可视化、视频或黑客广告的形式分享,有助于传播既严谨又思辨的见解。这些故事让赞助商或客户对潜在的未来以及他们的组织将如何利用创新来应对有了更清晰的观点。不足为奇的是,Bestiario 也有能力通过展品构建关于复杂系统的故事,并有能力提供企业数据驱动的解决方案。

随着敏捷或类似方法的广泛应用,许多公司正在成为伟大的短跑运动员。但是创新需要时间和耐心。故事是一种随着时间的推移建立持续关注的方式,也是一种为团队开发“耐心资本”的方式,以便在季度报告之外执行。虚构、可视化、演示或其他类型的故事使数据科学团队能够暂停、质疑并更多地关注学习和愿景,而不是冲刺规划。叙事提供了一个机会,通过互动和系统动力学来深思熟虑地考虑业务,以及分析能力的发展如何影响一个组织。他们生成的材料也作为跨学科和组织外部共享知识的连接器。他们传播开放、积极和创新的精神。

Photo by nataliahelo

5。道德高于利润

当我在无处不在的计算和人机交互的十字路口完成我的博士学位时,一个研究团队会因为他们研究的质量和大胆而一再脱颖而出。斯坦福大学的说服性技术实验室过去一直在设计——现在仍然在设计——数字技术来改变人们的信念和行为。它的研究通常是针对想戒烟的人或需要坚持特定饮食的人。毕业后,一些实验室的学生很自然地搬到了谷歌和脸书的隔壁校园。在那里,他们将他们的习惯形成算法应用于注意力经济,这是一种利用人类心理学尽可能长时间和频繁地保持社交媒体用户活跃的业务。这个故事中的问题不是说服技术的发展,而是缺乏关于数据科学的应用如何以道德的方式改变人们行为的指南。

由于数据科学的实践仍处于萌芽阶段,具有广泛的潜力,团队必须发展道德指南针和技术,以预见他们的发现的局限性。他们的领导职责也是帮助理解已开发的分析和算法的社会使命。需要共同努力来确保数据科学的应用考虑到(非预期的)影响。忽视这一点就像命令一个团队像汤姆·莱勒的歌中描述的韦纳·冯·布劳恩一样:

一旦火箭升空,谁会在乎它们从哪里落下来?那不是我的部门。”

在麻省理工学院,城市演示提供了一种方式,在我们的概念是否有潜在的利润之前,探索它们是否在文化或社会上可以接受。同样,D&A 在数据科学的社会影响方面也有工作,因为我们建立了负责任的数据使用的内部指导方针,并就机器学习与信任、可解释性和公平性的关系发出了积极的公众声音。我们引领将人类和地球置于利润之上的社会公益倡议,发现我们可以与可能没有从事商业活动的合作伙伴(例如政府、联合国、非营利组织)一起丰富我们的分析能力,还可以吸引顶尖人才。

Photo by Luca Simeone

科学领导的心态

今天的现实是,大多数组织仍然没有衡量创新成功的方法。我相信良好的心态可以帮助科学领导团队弥补这一缺陷,并将数据科学融入他们的核心战略和文化。例如,我所揭示的原则可以作为以下内容的组成部分:

  • 描绘愿景 预测下一步,争取领导层的认同,安抚反对变革的人,对抗不切实际的期望。
  • 用数据科学活动产生的经济影响、变革和创新价值的指标和故事正式传达成功
  • 与赞助商、客户或母公司保持密切联系和协调,确保创新和优化战略之间的平衡。
  • 招聘优秀员工拥有开放、多元的文化,确保人们在工作中感到充实、挑战和支持。

数据科学部门的人员也需要一个能说他们语言的科学领导。这些年来,我学会了设定我的优先事项,以促进我的团队创新版本:

  • 提供与工艺、好奇心、同理心和功效相关的背景
  • 用“为什么”来激励培养怀疑,激励优秀的人给自己惊喜,并要求团队尽可能多地展示他们开发的能力的应用。
  • 用“为什么不”来授权在灵活的工作环境中分担责任,走非常规的道路。
  • 不要(太)忙花时间让你和你的团队远离行动去思考。

这种哲学来自我的职业经历。它的某些部分可以应用于其他学科的其他高绩效团队。我很高兴谈论和分享更多,我也同样有兴趣听到你的想法和故事。如果你想用其他原则或不同风格来培养数据科学的创新思维,请随时发表评论或联系我。

感谢 Jose Aguirre、Elena Alfaro、Jon Ander Beracoechea、Marco Bressan 和 Carlo Ratti 这些年来一直是鼓舞人心的领导者,感谢 Lisa Gansky 的指导,感谢 Nicolas Nova 和 Neal Lathia 对本文的深刻反馈。

机器学习革命中缺失的部分

原文:https://towardsdatascience.com/the-missing-part-of-the-machine-learning-revolution-91e58b3427ef?source=collection_archive---------3-----------------------

尽管人工智能被广泛采用,但扩展和部署基于人工智能的产品一如既往地困难;但是一些新技术正试图改变这一现实

(免责声明:我不受雇于 Algorithmia,也不以任何方式与该公司有财务关系。我只是一个有数据科学背景的人,觉得这家公司很有吸引力。)

毫无疑问,我们正在进入人工智能时代,机器学习几乎触及了我们日常生活中的一切。在数据存储和计算能力的逐步创新的推动下,神经网络从 70 年代轰轰烈烈地回来了。医药、安全、客户服务、欺诈检测,凡是你能想到的,都有资金充足的公司应用机器学习来改进和增强它。见鬼,你甚至可以通过 Medium 基于机器学习的推荐系统找到这篇文章。

不管出于什么原因,深度学习似乎对许多立竿见影的问题非常有效。你甚至可以称之为一场革命。

创建深度学习模型变得越来越容易,但不是大规模部署它们

虽然数据存储和 Nvidia 的发展无疑有助于刺激这场革命,但今天机器学习状态的主要驱动力之一是你可以轻松地实际创建工作,准确的模型。机器学习正在经历重大的抽象化— 新工具使人工智能比以往任何时候都更容易起步

除了为特定任务提供功能丰富的 API 的私营公司,如 ClarifaiIndico ,像 R 和 Python 这样的流行数据科学语言的第三方包生态系统正在呈指数级增长。谷歌在 2015 年 11 月发布了最初版本的 TensorFlow ,从那以后它就像火箭一样起飞了(除了已经很流行的 ScikitLearn)。对于数据科学家来说,在测试环境中创建复杂的模型变得更加容易。

不幸的是,这种轻松并没有离开 iPython 笔记本。这是因为让机器学习模型在生产中工作与让它在你的电脑上工作是完全不同的任务。部署您的模型意味着让它们在需要时以您希望的方式大规模工作。创建理论上准确的模型是没有用的,如果一旦你开始把它们提供给客户,它们就会分崩离析。

你需要担心一系列全新的挑战,掌握一系列新的技能,以及衡量你成功的不同标准。

部署与模型创建有很大不同,对于小型和大型公司来说都非常困难

像任何分布式应用程序一样,部署机器学习模型是极其困难的,这与一开始创建它们是完全不同的任务。这在多个维度上都是正确的:

谁:建模由数据科学家和机器学习研究人员完成,而部署由软件工程师、机器学习工程师和数据工程师完成。

度量:模型构建的目标是创建可以准确预测的东西,而部署的目标是快速可靠地预测。

其中:模型构建通常由几个人在几个虚拟服务器上完成,而部署的模型需要能够伸缩并处理数千或数百万个 API 请求。

这些只是部署与众不同的几个方面。这也很难做到——它涉及到杂耍不同的技能、优先级和能力。如果您最精确的模型运行时间太长怎么办?你如何用新数据更新你的模型?您如何通过跨地域多样化来优化速度?

这个问题在不同规模的公司中都存在。对于寻求围绕机器学习模型开发和运行产品的早期创业公司来说,部署是一团乱麻。雇佣合适的软件和数据工程人才已经够困难的了;当你试图推出一个产品时,这就更难了,你的恢复能力取决于一群新的人让你的模型运行起来。数据科学家拥有的技能(精确的模型)不会让你达到目标(大规模部署)。

随着公司的发展,这个问题不会变得更容易——事实上,在某些方面,这个问题在企业中更为突出。数据科学团队开发有影响力的模型和产品,但他们需要让它们工作并可扩展;这意味着转向其他不一定有合适背景的工程团队。然而,数据科学家需要依靠它们来正确移植模型、调整超参数和决定批量大小。当他们的同事团队完成了机器学习部署的所有挑战时,可能是 4 个月或更久之后,这些模型看起来或行为都不像数据科学团队最初构建的。

总之是很多早期公司解决不了,很多企业处理不了的真正头疼的问题。部署问题的一个常见解决方案是使用水平平台,但这并不适合大多数公司。本质上,您保留自己的数据,但使用 API 来构建驻留在供应商服务器上的快速而肮脏的模型;他们为您向外扩展,并担心如何让事情正常运行。符合这种模式的平台有 BigMLSeldon

不幸的是,水平部署平台并不总是有用的,因为它们是如何构建的:如果你是一家制造涉及大量机器学习的产品的公司,你不能让你的模型驻留在第三方。你想要创建自己的复杂算法,无论是 TensorFlow 上的神经网络还是其他任何东西。

问题是,没有一种产品只负责最后一英里——允许你按照自己的想法开发模型,然后只负责剩下的部分。谢天谢地,这种情况正在改变。

Algorithmia 通过提供部署即服务来解决最后一英里的问题

Algorithmia 正在发布一款新产品来解决这个问题,但仍然将建模和数据留在了它应该在的地方:数据科学家的手中。它被称为企业人工智能层,它本质上自动化了机器学习部署的开发操作,同时让您担心什么是重要的——创建伟大的模型和产品。

企业人工智能层涵盖了您在可伸缩部署解决方案中期望的所有基础。它与云无关,可根据您的需求进行扩展,允许您在 CPU 和 GPU 之间进行选择,并且延迟极低。Algorithmia 的平台也是由开发运维团队设计的,这意味着需要大量详细的仪表盘,并跟踪所有正确的指标,以确保您的部署符合您的客户需求。

“作为一个花了多年时间设计和部署机器学习系统的人,Algorithmia 的无服务器微服务架构给我留下了深刻的印象——对于希望以任何规模部署人工智能的组织来说,这是一个很好的解决方案”

谷歌人工智能工程副总裁安娜·帕特森*

但除了技术规格,Algorithmia 的人工智能层也很重要,因为它改变了组织看待机器学习的方式。目前,机器学习就像任何应用程序一样——在发送新数据和预测之前,你需要处理所有的基础设施。就像一个 API 调用 Yelp 应用程序一样,你的 API 调用你的模型。这是一种应用程序,这意味着您的团队需要应用程序部署专业知识。

现在不同了,因为你的团队可以专注于创建伟大的模型,而不是让它们工作的基础设施。这是无服务器的数据存储模式,谷歌的 BigQuery 和 T2 的亚马逊的 Athena 让组织专注于分析他们的数据,而不是将数据存储在任何地方的技术复杂性。赚钱的数据分析是从数据存储中抽象出来的。现在建模可以从部署中抽象出来。

这太棒了:这意味着更多的想法可以转化为产品,更多的产品可以摆脱单调的巨型工程团队和企业积压。这意味着作为一名数据科学家,你可以做你真正想做的事情:专注于构建伟大的想法和模型,而不是如何处理他们的后端工程。我认为这是一件大事。

*安娜和谷歌是 Algorithmia 的投资者。

建模者反击:对抗对抗性攻击的防御策略(下)

原文:https://towardsdatascience.com/the-modeler-strikes-back-defense-strategies-against-adversarial-attacks-9aae07b93d00?source=collection_archive---------10-----------------------

[这篇文章是一个关于对立例子的系列文章的第二部分,也是最后一部分;第一个用具体的术语框定了对立例子的问题,如果你在没有一个关于这个问题的清晰和缓存的心智模型的情况下进入这个问题,也许应该先读一下

对立的例子很少吗?

关于对立例子的最初理论是,它们代表数据分布中异常的低概率点。如果是这种情况,你会期望对对立例子的修改可能会把例子“推”回模型做出可信预测的区域。

然而,Goodfellow 在 2015 年的一篇论文中并没有发现这一点:他们发现,如果他们朝着敌对的方向移动,那么他们可以在给定方向上以更高的失真值获得越来越自信的病理行为,这意味着这与其说是一个敌对的例子,不如说是一个敌对的子空间或区域。

这是令人失望的,因为它限制了防御策略的有效性,防御策略可能试图向所有输入添加随机噪声,以将它们“推”回模型表现合理的区域。

题外话:什么是流形?

如果你通读任何最近关于对立例子的论文,你会看到许多关于数据“在流形上”或“不在流形上”的观点的参考和争论。基本上,你可以把它理解为“数据存在的空间区域”。作为一个简化的例子,想一个这样的情节:

理论上,这是一个二维空间。然而,该空间的大部分实际上并不作为数据的宿主,因为它们是特征空间中无效的(或者至少极不可能的)特征组合。在自然图像的例子中,有一些自然的限制:真实世界中的对象往往由共享相同视觉属性的连续像素空间块组成。

更具体地说,单词“流形”倾向于指在输入存在的非常高维度的空间中只有相对小的区域。我们也经常把流形本身称为“高维空间中的低维空间”。这里经常使用的一个例子是高速公路:即使高速公路在 3D 空间中弯曲,在许多情况下,例如告诉你在其上行驶 65 英里的方向,它也可以被表示为一个较低(1D)维的流形,因为,至少对于当前的汽车来说,你实际上不能独立于你的前后方向而改变你在垂直方向上的位置。当你想到不同种类的距离时,这个心智模型也是一个有用的模型。如果你是一个不理解汽车和重力之间关系的外星人,你可能会说地面上的一辆汽车和悬浮在空中 15 英尺的一辆汽车比同一辆汽车更近,并且在公路上还有 40 英尺,因为,从纯欧几里得距离的角度来看,这显然是正确的。然而,如果你对大多数汽车的实际位置进行标准化,并且将问题框定为“相对于所有汽车的分布,哪辆汽车处于更明显不同的位置”,那么悬浮汽车显然符合该标准。

This image gives a good visualization of what manifolds look like in higher dimensions

这个概念主要是作为一个概念占位符,用来讨论一个对立的例子与其余数据之间的不同关系。继续这个比喻:如果我们在寻找一个对立的例子,我们是在寻找高速公路上的另一辆车,还是一辆悬浮在空中 15 英尺的车。在你的脑海中记住这个形象;我们稍后再来讨论。

你能通过非常非常好地隐藏你的模型参数来防御吗?

你可能已经注意到——我第一次在这篇文献中注意到的——我们概述的所有对抗性攻击策略都需要详细的模型知识;不仅仅是所使用的架构,而是存在于已训练的生产模型中的实际学习参数。这可能会让你觉得奇怪:在我们的对手对我们的操作设置有全面了解的威胁模式下,我们通常不会期望一个系统(军队、计算机网络)是完全安全的。为什么这是一个合理的威胁模型呢?这种威胁模型会因为简单地采用围绕模型存储的高安全性规范或要求而失效吗?

答案是:这不是真正的威胁模型。或者至少不是直接的。对立例子的一个令人惊讶的(至少对许多人的直觉来说)特性是可转移性。可移植性是指您可以在不同的训练集上训练具有不同结构的模型,只要模型被训练来执行相同的任务,为一个模型生成的对立示例通常会在另一个模型上工作。这是值得注意的,因为这表明这些例子利用了图像空间本身的可概括属性,而不仅仅是一个特定模型的神秘怪癖。此外,当涉及到如何训练他们的“虚拟模型”时,攻击者有多种选择:他们可以拥有自己的带标签的训练集,或者,如果目标模型的决策以任何方式公开可用,他们可以使用目标模型通过选择示例并查询这些示例的模型来为他们自己的训练集生成标签。

通常,攻击者模仿现有模型的最简单方法是训练该模型生成的概率,因为否则你只能得到“哪一个是最可能的类”这种非常低信息的信号。然而,研究人员已经表明,即使你只能获得大大减少的最可能类错误信号,也有可能学习到有用的替代模型(“我们认为这是一只猫”对“猫:0.90,老虎:0.05…”)).这是通过有选择地查询主模型来实现的,在主模型中,模型在输出中表现出最高的方差,因为这些区域很可能是存在决策边界的区域。结果,替代模型获得了目标模型的决策边界的更精确的图像。

蒸馏能让你的模型不那么过于自信吗?

模型提取是一种技术,它通过训练主模型的“软”概率输出,而不是“硬”(0/1)真实标签,来学习次模型以模仿主模型所学习的内容。在这样做的过程中,次级模型被训练成推动它在输出上产生更均匀的分布,而不是一个非常有把握的值和许多其他变化很小的值。这种对“更软”输出的偏好被证明对防御对抗性攻击的最初变种有一些成功,但被最近的攻击击败,如 Carlini Wagner 攻击。

对抗性例子的训练能起到辩护的作用吗?

一个早期建议的对对抗性例子的辩护是直截了当的:也许我们可以通过在我们的训练集中包括对抗性干扰的例子来教我们的模型对对抗性例子是健壮的。这被证明是一种有用的通用正则化形式,但并不是一种真正强大的防御。至少在我所做的阅读中,用对抗训练增强的模型倾向于看到较低的对抗成功率,但主要或仅针对用于进行训练的特定攻击。

到目前为止,我还没有发现任何一种方法显示出对抗性训练对其他攻击提供了有意义的鲁棒性水平;这使得这种方法有点像打地鼠游戏,你需要以攻击者攻击的特定方式进行防御才能有效。

对立的例子是可识别的“脱离流形”吗

据我所知,这是目前在这个问题上争论最激烈的领域,也是我认为最有希望的辩护方法。一些论文认为,对立的例子明显远离数据流形——用我们早期的例子来说,悬浮在高速公路上方——这使得生成模型能够检测到输入何时是对立的。其他人反驳说,问题在于决策边界太靠近数据流形,而与该流形的微小差异会将示例推到边界的另一边。

这里值得问的一个问题是:在参数概率模型难以拟合的情况下,我们如何严格定义流形,以及我们如何知道某些东西是否偏离了所述流形?对于复杂的数据集,通常我们能做的最好的事情是建立非线性(通常是深度学习驱动的)生成模型,其工作是学习数据的分布特征。

磁铁

在这种情况下,我发现一个特别聪明的防御方法是磁铁,它利用自动编码器作为其生成模型的形式。(题外话:不,我没有任何坚实的解释为什么这个名字磁铁,虽然我有一些理论)。

MagNet 背后的基本原理是基于我们对它是自动编码器所做的事情的直观了解:也就是说,学习数据的统计规律,使之有可能从较低信息量的压缩表示中重建输入。从结构上来说,自动编码器的工作原理是获取一个输入,将其映射到一个低维的隐藏单元,然后通过将解码器权重应用于隐藏表示来重建该输出。然后训练该模型,使得输出接近原始输入。

为了更清楚地理解这一点,假设您的输入由两个变量组成,这两个变量是从一个线性协方差结构中生成的,其中添加了一些噪声。如果 autoencoder 框架有足够的数据来进行适当的训练,那么理想情况下,它将能够学会在其自己的权重向量中表示该线性关系的偏差和权重。一旦学习了这些适用于整个数据集的参数,我们就可以用一个值很好地表示这个回归数据,它告诉我们沿着这条低维线要移动多远。您可以考虑这些回归参数的另一种方式是利用统计规律,让您重现已被压缩到更低维度的数据。在这个类比中,偏差和权重向量是由解码器(其捕获关于完整数据分布的信息)学习的权重,并且沿着回归线轴的值表示专门为此示例计算的较小的激活向量。

autoencoder 学习数据的分布级趋势,然后使用这一特性从压缩形式中重建数据,这正是 MagNet 利用的技术。MagNet 的主要直觉是:如果一个例子在数据的主要分布之外,那么如果你通过一个自动编码器运行它,输出将会有一个相对于输入的更高的误差。为了使这个想法具体化,让我们回顾一下这篇文章前面非常简单的例子。

假设我们已经经历了学习形成数据核心的回归线的权重和偏差的过程,并且我们使用它作为我们的“解压”功能。如果我们在(1.0,0.2)处有一个输入,那么它的压缩表示将是 1.0,并且,使用我们从总体数据分布中学习到的参数,自动编码器的输出将可能是 0.65 左右。相对于训练数据,这将代表输入和输出之间的巨大差距。MagNet 的应用前提是,它可以使用这样的自动编码器系统来 1)通过寻找我们提到的缺口来检测对立的示例,以及 2)通过对自动编码器输出(理论上更符合训练数据分布)而不是对立输入的模型进行评分,将对立的示例“推”回流形。

像素防御

一个非常类似的模型是 PixelDefend ,它不是自动编码器,而是使用一种叫做 PixelCNN 的深度学习生成模型。PixelCNN 模型直接学习输入图像的每个像素的条件概率,以其周围像素的卷积为条件。它被设计成能够直接计算给定输入的可能性,给定模型学习的分布。相比之下,GANs 和 autoencoders 都可以从分布中生成示例,但是没有提供原则性的方法来查询,对于您输入的示例,它在学习模型下的可能性有多大。(术语:在给定特定模型的情况下,给定数据输入的概率是该模型的数据点的可能性)。

这个框架让我们直接问:对于这个(可能是敌对的)样本,如果我们假设它来自与输入数据相同的分布,它有多大的可能性?这个问题给出了一个非常适合进行 p 值测试的公式,并且论文实际上显示了对立例子与干净测试集数据的显著不同的 p 值分布。

但是,对于这两者,有一个隐含的东西,对立的例子必然必须是偏离流形的,这与注意到,如果你只是碰巧在某个特定的方向产生对立的例子,它们可能会也可能不会偏离流形是不同的

[对抗性领域](http://Adversarial Spheres is a somewhat controversial paper in that some people thing it’s simplified example — of having the input data distribution be a high dimensional sphere — is too basic to be useful. That criticism aside, the paper makes the general point that, in sufficiently high dimensions, you can actually get a quite low test error by learning a model that implicitly only uses information from a subset of dimensions, so that along other dimensions,)是一篇有些争议的论文,因为有些人认为它的简化例子——输入数据分布是一个高维的领域——太基础了,没有用。撇开这种批评,这篇论文提出了一个总的观点,即在足够高的维度中,通过学习一个隐含地仅使用来自维度子集的信息的模型,你实际上可以获得相当低的测试误差。这意味着,在其他方向上,即使是流形上的例子也会被错误地分类。这一点并不完全是对反面例子的反驳。可能当前攻击所产生的大多数例子确实是不存在的,但是即使你完全解决了这些攻击,在高维空间中,仍然存在一些不可减少的敌对区域。

总结与思考

据我所知,在花了 3 周时间阅读文献后,有一些技术在识别给定输入何时具有对抗性方面取得了相当大的成功。也就是说,如果你假设一个完全的白盒攻击(即所有参数都为对手所知),那么理论上对手也可以使用你的生成模型的知识来创建对抗性的例子。我很想更好地理解的一个领域是,这种数据特征化生成模型的可移植性是否和区分性(或以分类为中心的)模型一样是个问题。如果是这样的话,那么分类模型的相同替代模型弱点也将持续存在于这些生成性对抗感知层中。也就是说,似乎简单地通过使用上面引用的一些可移植性策略来构建替代生成模型要困难得多,例如在现有的基于分类的模型的输出上训练模型。看起来你确实需要一套真正有代表性的训练设备。

话虽如此,我实际上想从流形、扰动、范数和误差率后退一步,问一个更广泛的问题:为什么这是一个重要的问题?我们真正要防范的威胁是什么?

这里有几个单独的优先事项需要梳理:

  1. 我们希望我们的模型在生产中使用时能够“优雅地失败”:如果模型遇到的输入在某种程度上与训练集中看到的有所不同,那么它不应该对任何类的预测表现出高水平的置信度。这反映了对模型的普遍渴望,即在来自自然世界的大量输入下,模型是“稳定”和“可靠”的。
  2. 我们特别关心这样的场景,人类会以同样的方式对给定的输入进行分类,但是模型会改变它的分类。从表面上看,还不清楚为什么这是一个特别值得关注的问题。一种框架简单地说就是接近性:在人类不可分辨的输入和像素空间中接近的输入之间往往有一条线。或者,我们可以把它框定为一个字面上的问题:模型失败实际上只是更关心它们何时会愚弄人类。

但是这个模型本身并不明显是错误的。这个模型对敌对选择的目标有很高的信心,这当然不是最优的。但实际上,当呈现给模型的图像永远不会代表自然界中真正的猫时,模型最好返回“cat ”?这似乎是一个更困难的问题:教导模型,特征空间的很大一部分,通常从未有人居住,对应于类别“猫”。“猫”的对抗性扰动图像不是“真正的”猫,只是人类视觉系统的敏感度与人工视觉的敏感度不同。作为类比,想象我们正在查看由飓风产生的风和天气模式的数据,以及那些没有的数据。如果我们细微地修改一个输入向量,使它看起来不像飓风,而一个人看着它说它看起来像飓风,这并不意味着修改后的向量将代表真正的飓风所产生的结果。在天气数据的背景下,我们不会先验地认为人类是生成从特征到标签的映射的真实来源。

我确实认为,当我们的模型在分布之外运行时,推动它们表现出适当的低置信度是一个非常有效的问题。不过,如果这真的是我们关注的核心,这将表明一个不同的研究方向和重点,也许更多的是以贝叶斯神经网络的方式,建立更自然地表达不确定性。特别是:如果我们的关注是由问题(1)引起的,我们就不应该真的关心我们的分布外的例子在某种欧几里得或视觉意义上是否“接近”;我们只想对这种类型的所有示例强制实施低置信度。

但是,也许以上所有的都是迂腐的暂且不提;这是一个“过于努力”的例子,把问题夸大了。也许,即使这些例子不代表模型的基本错误,从人类的角度来看视觉上接近的对立例子从实践的角度来看是重要的。

在“我们真正关心的是明显的攻击,而不是一种让我们感到不舒服的不稳定”的领域内,我不太清楚为什么有必要有特定的干扰,这是人类的近距离视觉地图。在使用机器学习模型的大多数情况下,大量数据都是在没有人工干预的情况下自动处理的。比方说,如果我要在我的房子顶上安装一个大型噪音过滤器以防止卫星探测,或者过滤我所有的脸书照片以使我无法被识别,没有明显的理由我必须伪装成人类来这样做,除非我真的预计人类会像我一样被抓住。

像数据一样,人类识别输入总量并对其进行评估的能力非常罕见:许多形式的数据都不具备这种能力。因此,在这些情况下,如何得出一个数据足够接近而具有对抗性,并且明显不同的模式并不明显。围绕对立例子的许多对话直接来自于这样一个事实,即在文本和语音等领域,我们正在对人类擅长的任务进行基准测试,在这些领域,人类可以一次轻松地感知大量的数据维度。大多数数据都不具备这种特性。

然而,如果我们真的关注图像,自动驾驶汽车的例子肯定是一个突出的例子:想象有人破坏停车标志,使其不太容易识别,人类司机很难察觉,这似乎是合理的。在这种情况下,人类无法检测到伪造的数据将使他们无法预测模型的不良行为。不过,如果我们真的想象汽车的决策反应时间足够短,那么如果有人可以在停车标志上粘贴一些对人类来说明显不是停车标志的东西,但仍然导致汽车在一瞬间做出悲惨的决定,这对于人类来说太快了,无法直接干预,这也是一个问题。所以,也许这最终会回到“不在分配范围内”的问题上。

看起来很多真正的抱怨并不是这些模型失败了,而是它们失败的方式从人类的角度来看似乎是显而易见的错误。在问题的一个框架中,我们是“典型的思维”,并假设对我们的问题解决模式来说容易的事情对一个陌生的、人工的模式来说应该是容易的。我们被不一定比我们犯更多错误的系统弄得不舒服,但是那些犯不同种类错误的系统。

总而言之:我不确定我们是否真的在坚持我们真正关心的问题——模型在训练分布之外表现出不可预测和过度自信的表现——并想知道对立的例子是否实际上只是那个问题的一个不完美的代理。如果没有真正严谨和清楚地了解我们关心的这个问题的不同方面,以及我们为什么关心它们,我认为我们可能无法提出真正令人满意的解决方案。

参考

(即我在写作过程中的某个时候读到的东西,但记不太清楚,无法直接链接引用)

现代营销人员机器学习算法指南

原文:https://towardsdatascience.com/the-modern-marketers-guide-to-machine-learning-algorithms-220d0dbffd93?source=collection_archive---------3-----------------------

ost 营销(和销售)团队有着看似简单的目标:识别你的最佳客户,锁定看起来像他们的潜在客户,促进积极的购买体验,并将这些潜在客户带入你的客户社区。这方面的挑战是,公司面临着数据的冲击,不可能经济地将人投入到上述每个目标中。自动化和人工智能可以更快、更好地完成许多商业学习和日常任务。人们永远不可能像机器一样以同样的速度筛选所有的数据,当然也不可能像精心设计的算法那样精确。

如今,每个企业都在从事数据业务,为了做出更好的决策,领导者需要机器学习和分析来在数据中找到可操作的模式。但是首先,清楚地定义他们试图解决的问题是很重要的。例如,如果你的公司正在努力解决客户流失的问题,你可能想利用算法来找出减少客户流失的方法。在这种情况下,你需要了解什么时候有人可能会流失,这样你就可以提出报价来降低风险。另一个问题可能是为什么有人搅拌,但这是一个完全不同的问题,需要不同的算法来解决。

一旦你将范围缩小到一个初始的营销问题,机器学习算法无疑将非常适合用你的 CRM、营销自动化或数据仓库中的历史前景和客户数据来解决它。开始时,能够与您的数据从业者和/或预测分析供应商说同一种语言会很有帮助。让我们看一看幕后,对营销中使用的关键算法方法有一个基本的了解:

分类

分类建模也被称为类概率估计,是定义你的最佳客户的一个极好的方法。这些算法基本上回答了一个问题,即某样东西是否适合某个群体。例如,“这个细分市场是否有可能对我们的营销提议做出回应?” Autopilot 是一家领先的营销自动化提供商,它使用带有分类模型的预测分析来衡量其营销渠道绩效,并确定营销资金应该投资或转移到哪里。

为了训练分类模型,您需要将您的历史潜在客户和客户数据分为两组,即已回复和未回复、理想和非理想潜在客户,或者客户和非客户。这个分类器允许算法调整到您的最佳客户的积极属性,以及您的非理想客户的消极属性。最终确定的模型可用于对您现有的数据库以及未来所有新的潜在客户进行“评分”,看他们转变或成为客户的可能性。

回归

另一种可以让你的营销更上一层楼的技术是使用回归建模来预测对你来说重要的信息的具体价值。这种方法与分类有关,它预测是否某事会发生,但它不同,因为回归(也称为价值估计)预测多大程度某事会发生。这些算法可能会查看群体中的相似个体及其历史使用情况,以便生成一个数字预测,比如说,“产品 X 有多少会被细分市场 a 使用。”

回归建模的一个很好的用例是查看通过交叉销售或追加销售机会,您可以从某个特定客户那里多获得多少收入。领先的在线视频平台 BrightCove 以这种方式使用预测分析来帮助增加其现有客户群的合同价值。此外,采用分层定价的公司可以使用类似的算法来生成每个新潜在客户的估计价值(针对初始销售,或整个生命周期的客户价值)。有了这种认识,他们可能会以不同的方式处理潜在客户,例如将价值较低的潜在客户发送到自助服务选项,以保持效率,这样他们就可以给最有价值的潜在客户白手套待遇。

聚类

最后,聚类模型根据相似性对群体中的个体进行分组。这种算法的一个营销问题可能是,“我们的客户形成自然的细分吗?”这些信息对于初步的领域探索,或者确定应该如何构建客户支持或销售团队特别有用。通过分析您的潜在客户和客户数据库,这些模型将每个人分配到由相似属性定义的“集群”中。

聚类的开放式方法仍然依赖于数据而不是人类的直觉,以便识别你的营销对象的最主要特征。因此,您将获得对您的客户群体(或全部潜在市场)的全新认识,并发现新的客户和潜在客户群。然后,营销人员可以使用关键群组信号来开发有针对性的活动或更个性化的销售策略,并识别出与表现最佳的群组相似的其他群组。

上面的具体例子展示了人工智能正在如何显著地改变公司理解和处理数据的方式。最棒的是,你不需要有数据科学的学位就能理解这些算法的好处,或者利用它们的输出。总之,算法可以通过三种主要方式帮助销售和营销团队:

  1. 找到管道中的“**”。通过识别可测量的优化转化的机会,算法可以迅速对收入增长产生影响。

2.执行真正的自动化,减少人类劳动。每个企业都至少存在一些效率低下的问题(如人工线索调查),这些问题很容易被高效算法和预测分析所取代。

3.丰富传统应用。算法还可以通过添加一个智能层来帮助团队从他们的销售和营销堆栈中获得更多,该智能层可以在数据中找到重要的模式,以推动敏捷性和竞争优势。

走向市场团队的一些最佳机会围绕着发现业务中的低效之处,即减少营销浪费、加速线索或客户资格认定、优化渠道和计划等。因为提高销售和营销业绩的潜在回报是巨大的,所以没有理由等待。每个营销人员都应该认识到,一场数据军备竞赛正在进行,那些不根据数据发展业务运营方式的人很快就会落后。

数据科学中最难的事:政治

原文:https://towardsdatascience.com/the-most-difficult-thing-in-data-science-politics-ca6dd781da56?source=collection_archive---------5-----------------------

这篇文章最初发表于 rDisorder

当我早上 6 点起床学习支持向量机时,我想:“这真的很难!但是,嘿,至少我会变得对我未来的雇主非常有价值!”。如果我能得到德罗宁,我会回到过去,并呼吁“公牛队**t!”在我自己身上。事实是,现实要微妙得多,该领域还远未成熟的事实一点也没有帮助。

经典的故事是这样的:“数据科学家花 80%的时间获取、清理和管理数据,只有其余的时间花在分析和机器学习上”。不对。如果我们只考虑花在生产性工作上的时间,事实上是这样的。现实是,很多时间都花在了说服人们、躲避攻击和催促高管避免愚蠢的错误上。

然后是公司政治

一切是如何开始的

有一天,SuperMegaCompany 的某个人在某处读到:你必须由数据驱动才能成功,AirBnB、网飞和优步等公司正在吞噬世界,这要归功于数据科学,等等。这引发了大量的炒作和议论,我们可以清楚地从大量需要某种数据科学方法的职位发布中看到这一点。

这种行为导致了过多的问题,Monica Rogati 很好地总结了这些问题,归结为“你可能还没有准备好让数据科学家加入”。对于那些从未开创过这样一个领域的人,我可以用几个词来总结:将会有流血。

大多数时候supermega company从未处理健康数据科学所需的流程,请不要谈论数据驱动的文化。即使有某种形式的报告,你也不是数据驱动的。我听说你每天都检查画面?它不会让你受数据驱动。

我明白了,你在网上读到的所有关于这个话题的东西最终都会退化,要么是非常抽象的公司术语无用的东西,要么是你可以随意使用的工具的 T2 展示。我不会评论第一个选项,但第二个选项更有趣,因为它更微妙。这些人基本上声称,你可以通过得到一个更好的计算器来提高数学水平,但任何人都清楚,这与事实相差甚远。

工具本身不会制造任何东西。它们被称为工具是有原因的:你用它们作为达到目的的手段,但它们不会自己使用,如果你用错了,你将不会达到任何目的。文化来自于人,而不是工具,它深深地根植于我们有意识和无意识的头脑中。人们有偏见,倾向于成为习惯的动物:常规拯救了我们,而你却要来破坏这一切。

你会发现什么

如果你幸运的话,你会发现有人知道他们不是数据驱动的,并雇用你来获得一些帮助。但有可能你会发现一些人认为他们是数据驱动型的,懂数据,“我每个月都会查看财务报表和每个领域的总结报告,所以你知道,我们这里确实是数据驱动型的…”。好的。当然可以。

这是可能发生的最糟糕的情况,事实上这些人认为你会锦上添花,几个月后你会找到所有商业答案的圣杯,并摧毁你的竞争对手。但在现实中,你会发现大多数数据都存储在电子表格中,没有人部署过日志解析器,要访问数据库,你不得不求助于 IT 部门。

如果你得到足够的支持,并且没有遇到太多的问题,从头开始构建可能会很有趣,但这几乎是不可能的。

政治是障碍

比方说,你必须从一个由 SuperMegaCompany 高管领导的领域收集数据,这个人在那里工作了 8 年,一切都很顺利。一天,一个讨厌的家伙敲主管的门,问是否有可能轻松地收集他所有的数据。你怎么敢?所以他问你为什么需要所有的数据,他开始怀疑。你说你需要他们开始分析公司正在发生的事情,此时通常有三种可能的答案:

  • “容易!我们每隔<插入期 >发布一份非常详尽的报告。你可以从那里得到数据”
  • “不可能得到我们每天产生和处理的所有数据,你看,我们的工作非常复杂,加上虚假的形容词,只有这样我们才能保证质量”
  • “当然可以!你可以和<甚至不知道公司是做什么的人交谈 >他/她可以帮助你!”

好了,欢迎来到公司政治的魔法世界!

现在几个月——如果不是几年——的战斗正等待着你,对此无能为力。有些人会抵制它,他们会认为你想控制他们,并向他们的老板报告他们的效率有多低。最后谁能完全责怪他们呢?会发生的。迟早有人会因为你收集的数据而被解雇,同样的数据如此一丝不苟地清理和篡改,是的,他们会知道是你分析并提交的。****

让我澄清一下:这不是你的错,他们可能也会在几个月后被解雇,那时效率低下的问题会变得人人皆知。但是从他们的角度来看,这意味着承认他们并不完美,谁愿意这样做呢?

以政治对抗政治

在我写这篇文章的时候,我发现是关于同一个主题:为数据科学家导航公司政治的指南。我同意帖子里写的大部分东西,但是我觉得有点简单化了。是的,这些概念大部分是可以的,但它们谈论的是政策,而不是政治。我知道,我知道,对你们中的一些人来说,这些似乎或多或少是一回事,但它们不是。

政治指的是统治的实践,或旨在获得统治地位的行动。政策是你获得统治权力后实施的计划。我知道这似乎是一个政治学家无用的咆哮(真正的政治科学毕业生在这里……嗯…),但是区别很重要。很多。

为了成为一个正常运作的数据科学团队,需要正确的政策,但是如果没有权力,您将如何实施这些政策呢?你如何获得力量?用政治,然后你用其他政治政策来维持它,而不是反过来。

政策第一的方法是典型的美国思维方式:如果你把事情做对了,人们会喜欢,你就会做得很好。而在欧洲——尤其是在意大利(马基雅维利有印象吗?)—事实正好相反:政治是权力的斗争,而不是实施政策的途径。当然,最好的方法是走中间路线,这两种方法都有明显的问题,从长远来看是行不通的。

数据科学还很年轻,这一事实也增加了这种情况发生在您身上的可能性:

  • 管理层或部分管理层不接受
  • 抵制数据收集和分析
  • 拒绝预测、预言和见解
  • 把你当“数字/Excel 猴子”
  • 认为任何未解决的问题都是你的问题,即使它不需要你的角色定义技能

那么你怎么能熬过这一切呢?

驾驭公司政治的一些技巧

你应该做的第一件事是找到更友好的经理,并马上开始和他们一起工作。做能在几周内完成的简单项目,如果可能的话,向尽可能多的人报告结果和 T2 增值。在开始时,关注高层管理人员,尽可能地“在那里”:会议、电话会议等。

去那里,尽可能地积极主动,提出新的想法,如果有人说了一些没有意义甚至完全愚蠢的话,不要害怕说出来。当你在做这项工作的时候,开始让你自己对普通的同事有用:帮助他们获得他们需要的数据,自动化或加速无聊的简单任务,等等。

所有这些将主要是非正式工作,最初几个月会很艰难,但你需要尽快得到公司几乎每个层面的认同。事实上,如果你错过了火车,那就要花更多的时间才能赶上。

我知道对你们中的一些人来说,这些可能看起来是琐碎、无聊的任务,但我保证大多数人会高度重视它们,甚至会因为稍微不相关的问题来找你。

当这一时刻到来时,你必须开始撒网,这次从底部开始。尽可能地提供帮助,提供你的技能让你的同事的工作变得更容易,并且友善一点。真的。友善到让人恶心:仔细清楚地解释你必须做的每一件事,你为什么要这么做,以及你如何能让别人的工作更容易。

能够沟通是做这份工作最重要的技能,如果你不能在公司的每个层面都有效地沟通,你将无法从这份工作中获得成功。如果你不能很好地沟通,人们会把你当成安东·齐格(图中的家伙):一个拿着不起眼的工具试图消灭他们的古怪家伙。

我知道,这听起来很残酷,但这是真的。人被新事物和自己不了解的东西吓到,更害怕自己不了解的新事物。你必须想办法限制那些认为你很讨厌的人的数量,我说限制是因为不可能每个人都理解你。

对付这些人的唯一方法就是忽视他们,如果你真的必须和他们一起工作,那就比和其他人一起工作更好。如果他们不是真正的混蛋,你最终甚至可以赢得他们的支持,但是如果他们真的是混蛋,你必须找到方法在不妨碍公司的情况下让他们慢下来。

你必须找到一个愿意成为你的避雷针的人来吸引大部分的攻击并代替你吸收它们。这一点很重要,当你是新人时,你不能成为自己的避雷针,资历很重要,不同的人会承受不同程度的伤害。过一段时间后,你可以开始展示你的价值,但永远记住,你不是大多数你将共事的人的老板。

所以涂总结一下:

  • 找到友好的经理,开始和他们一起工作
  • 尽快开始产生价值
  • 将你所做的一切传达给每个层级尽可能多的人
  • 态度好一点,把一切都解释清楚,帮助大家
  • 不要急,真的
  • 找一根避雷针代替你吸收伤害

打倒政策

既然你已经获得了权力——有些权力就足够了,绝对的权力是乌托邦——你可以开始更多地关注政策。你必须继续帮助别人,但是现在你可能正在做更大更重要的项目,你没有时间做每件事和每个人。

让每个人都明白你想继续帮助他们,但是请求变得太难了,很难马上实现。保持友好,想办法把大部分请求工作推到每周一天:例如,周五提出请求,给人们一个提出延期请求的方法。一张谷歌表单就足以收集他们和他们的一些细节,你可以每周查看一次。

我做了很多关于沟通和做好沟通的事情,但是很难持续有效地做。在开始做陈述的时候,和你的同事面对面地谈自己的个人情况(T21),这样你可以更好地了解人们,并区分他们的弱点、潜在的混蛋、支持你的人等等。

唯一的问题是,你不能无限期地这样做。展示东西需要时间和精力,大量的时间和精力,你不想把所有的时间都花在幻灯片和图表上,对吗?因此,你必须找到合适的媒体在公司内部分享信息。

如果 SuperMegaCompany 已经有了一个广泛使用的分享系统,那就坚持下去。否则,你可以利用许多可能性。如果你认为内部博客会有所帮助,你可能会想看看 Airbnb 的知识报告:这是一个完整的 CMS,带有一个网络服务器和一个漂亮的模板系统,可以自动将 Jupyter 笔记本和 R Markdown 文件转换为帖子。

我可以告诉你的是,仅仅一个博客是不够的:人们不会自发地开始阅读它,并开始自己参与。处理这个问题最简单的方法是开始给你知道可能感兴趣的人发邮件,你可能会发布关于它的报告和研究,这样你就可以把人们引向那里。

真正棒的是建立一个讨论频道,每个人都可以发表和讨论内容,这样你就只是众多发帖者中的一个,没有人会在给他们发新帖子和当“自作聪明”时开始嘲笑你。我个人喜欢 Reddit ,如果你愿意,你可以部署你自己的内部 Reddit 版本。

总是记录下你做了什么,花了多少时间,然后试着给每一个完成的项目赋予一个价值。如果它是可直接测量的,插入一段时间内的正确值,如果不可测量,即使一个数量级和/或一个范围也没问题。当有人问你为他们或试图挑战你的公司做了什么时,这将变得有用。

估计未来项目所需的时间也将是有帮助的,企业不习惯我们工作的周期和时间跨度,所以人们会期望你在几周或更短的时间内交付。但是我们知道,如果 A/B 测试需要 1 个半月的时间才能得到答案,可能会更多,几乎不会更少。因此,提前明确你的项目所需的努力资源时间,记住你可以购买一切:计算能力、人员(不是真的购买,但你明白这一点)、材料等等。

唯一买不到的就是时间。没有人能还给你花在阅读这篇文章上的时间,即使你是世界上最富有的人。所以,把你的时间当作你所拥有的最宝贵的东西,记住,对别人来说,你的时间总是不如他们的宝贵。

为了明智地花费时间而不是浪费时间,你必须建立一个你可以在大部分时间里遵循的过程。试着根据手头的任务来划分,对于不同的事情,你会有不同的要求和步骤。我不太相信敏捷、看板等,尤其不相信跟踪软件。一份电子表格和一份议程对于一个小团队来说已经足够了,甚至对于大团队来说也是很好的。

总结:

  • 记住时间管理是关键
  • 确定每周一天来筛选和处理请求
  • 做演示,但要找到一种更深入、更持续地传播知识的方法
  • 画出你的流程,并找到一种给每个项目赋予价值的方法
  • 尽可能保持精简和简单

总结(政治)

如果你在想:“所有这些东西看起来工作量很大!”你说得对。你们中的大多数人可能已经注意到,数据分析、机器学习等等只是被简单提及,但它们从来都不是重点。不幸的是,兼职非常重要,如果你不做,你就没有机会证明自己的价值,一切都将变得毫无意义。

即使你成功获得了一些认可,也要记住权力带来了责任:会议、简报、电话、出差等等。如果你是公司里唯一一个尽职尽责的人,祝你好运。很快一切都会变得无法忍受,你将不得不尽快找人和你一起工作。在这种情况下,权力和影响力将非常有用,如果你没有权力和影响力,没有人会听你的,你将不得不继续自己做每件事。

所以请记住:政策很重要,但是你需要权力才能将它们落实到位。缺一不可毫无意义,甚至会适得其反。

你会活下来的。

原载于 2017 年 9 月 13 日www . rdi sorder . eu

有史以来最著名的数据可视化以及我们能从中学到什么

原文:https://towardsdatascience.com/the-most-famous-data-visualisation-ever-and-what-we-can-learn-from-it-abcdfa772548?source=collection_archive---------6-----------------------

Napoleon’s invasion of Russia

想获得灵感?快来加入我的 超级行情快讯 。😎

你需要数据可视化

毫无疑问,数据可视化是数据科学和机器学习的重要组成部分。在创建你的 ML 模型之前,你需要理解你将要提供给它的数据。这通常通过探索性数据分析(EDA)来完成;Kaggle 有一些很好的例子。

数据可视化是 EDA 的一部分,我们在其中创建了一个可视图形,一个我们数据的特定 描绘 ,以便更清楚地理解其特征和属性。可视化我们的数据使事情变得容易得多,因为我们正在寻找的信息可以在我们面前得到强调。可视化通常使用许多不同的颜色、形状、大小和图表来触发自然的视觉队列,并传达比实际数字更清晰的数据图像!

简单明了,你需要数据可视化。

入侵

也许最著名的数据可视化是上面显示的拿破仑入侵俄罗斯。它被用在几乎所有你会看到的数据可视化课程的介绍性讲座中。

现在,法语可能不是你的母语…但这正是这种观想的美妙之处:你可以理解图片形式的一切。

流动

从一开始你就可以看到从左到右有一个清晰的流向。这自然符合大多数语言的书写方式,为阅读和理解所描述的内容提供了直观的指导。看起来拿破仑的军队开始于科诺,结束于莫斯科。

定位也被用作显示军队行进方向的视觉队列。我们可以看到军队是如何从西边的左翼出发,向东北推进的。尽管这不是一条完全直接的路。

也许军队不得不绕过一些崎岖的地形或障碍,甚至可能是敌国的边界。不管怎样,我们肯定知道他们走了某种间接途径。

尺寸、形状和颜色

尺寸形状也在量化 某些关键属性中起到关键作用。在左边,形状开始非常大,慢慢变得越来越小。这可能是由于军队叛逃者,死于战争,或者恶劣的天气条件(稍后将详细介绍)。

科诺威尔娜之间的旅程开始时,我们看到一个小的、几乎垂直的部分加入了形状的大部分。这可能是一些后来加入的援军。当我们向右移动时,我们稍后会看到一些军队离开,前往波洛特克

颜色形状也与可视化的黑色形状组合在一起。它明显比另一个小。它确实遵循相同的流程并到达相同的目的地,但它采取了不同的路径。也许拿破仑有一个单独的陆军师用来攻击侧翼!

看起来一些去波洛特克的军队在中途加入了这个黑人团体!

我们还看到,黑色组相对于另一组在规模上有所增长,可能是因为他们加入得更晚,天气也更好(同样,稍后会有更多介绍)。

我们大概可以说,拿破仑有两个独立的师要进攻,总的来说,他的军队规模随着时间的推移大大缩小了。

使用线条、数字和文本来揭示细节

在观想中使用文本常常是相当危险的,因为通常画一幅画的目的是为了直观地看到事物!但是,对拿破仑入侵的描述是正确的。

这些数字被稀疏而聪明地放置,以进一步强调恰到好处的细节,而不会使画面过于混乱。如果你想要更多的细节,数字被放在军队的形状旁边来精确量化它的大小。如果你想要,细节就在那里,如果你不想,细节就不在你面前!

右边的地图比例放得很好,没有任何问题。河流被画得很粗糙,这样就不会刺眼,也不会照在你的脸上。作者似乎已经明白,在描绘军队行进的背景下,画那些河流的主要目的是为了表明它们的位置。

我们可以看到,在最右边的两条河流,黑色军队的规模扩大了!也许他们在那里的城镇补给。无论哪种方式,河流的绘制都服务于描绘其地标的正确目的。

底部的线条被绘制成看起来像垂直的图表。图表描绘了整个旅程中的温度。因为它的简单,它非常直观,易于阅读;图表上越高意味着温度越高!

我们可以从左到右看到,随着时间的推移,温度变得更高。我们现在知道,攻击开始于冬天,结束于春天!

TLDR:或者如何进行有效的观想

(1)使之直观。诉诸人类视觉理解事物的自然方式。从左到右,上下,更大更小。

(2)使用最基本和原始的视觉队列:大小、形状、颜色、位置。形状和位置非常适合描绘流动。颜色和形状是用来分组的。大小是用来量化的。当然,所有这些都是一般规则。

(3)使用文字、线条和数字来强调重要的细节。

(4)知道什么是重要的,并强调它;知道什么不是,然后忽略它。

(5)不要让图片过于杂乱,只展示必要的部分。定位很重要。

喜欢学习?

在 twitter 上关注我,我会在这里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上和我联系吧!

数据科学项目最重要的部分是写博客

原文:https://towardsdatascience.com/the-most-important-part-of-a-data-science-project-is-writing-a-blog-post-50715f37833a?source=collection_archive---------4-----------------------

Pixabay.com

写作创造机会,给你批判性的交流实践,通过反馈让你成为更好的数据科学家

在将最终代码上传到 GitHub 或提交作业后,称数据科学项目已经完成是一种诱惑。然而,如果你就此打住,你就错过了这个过程中最关键的一步:写并分享一篇关于你的项目的文章。写博客通常不被认为是数据科学管道的一部分,但是为了从你的工作中获得最大的收益,它应该是你任何项目的最后一步。

写一篇关于你工作的简单博客有三个好处:

  1. 沟通练习:好的代码光靠它自己是不够的。如果你不能让人们关心这项工作,再好的分析也没有影响。
  2. 写作创造机会:通过向世界展示你的作品,你将能够建立联系,从而获得工作机会、合作和新的项目创意。
  3. 反馈:变得更好的循环是:做工作,分享,听取建设性的批评,改进工作,重复

写作是那些活动中的一种——锻炼和教育也在考虑之中——可能在短期内没有回报,但从长期来看几乎有无限的潜在回报。就我个人而言,我的博客帖子每天有 10,000 次浏览量,每次需要 3-15 个小时才能写完,我从中赚了 0 美元。然而,如果不是因为我的文章,我也不会有一份全职的数据科学工作。

此外,我知道我的数据科学工作的质量要高得多,因为我打算写它,也因为我使用了我以前收到的反馈,使写作的长期回报明显是积极的。

沟通:好的代码是不够的

我知道这种感觉:你在 GitHub 上放了一些 Jupyter 笔记本或脚本,你想停下来说“我已经完成了工作,现在我要让其他人发现它。”虽然这可能发生在理想世界,但在现实世界中,让你的项目受到关注需要交流你的结果。

如果 GitHub 上最好的作品能自动浮出水面,那就太好了,但事实上,最有影响力的是那些得到最好传播的作品。

想想你最后一次在 GitHub 上找到项目代码库:如果你和我一样,那么你读了一篇关于一个项目的有趣文章,然后继续阅读代码。人们从一篇文章到代码,因为首先他们需要一个令人信服的理由来检查代码。这并不意味着愤世嫉俗,这只是事情的运作方式:人们不会去挖掘你的分析,直到他们知道你做了什么,以及为什么它很重要/有趣。

举一个真实世界的例子,我的数据分析报告是众多数据科学项目的集合,大多数都是用非常粗糙的代码编写的。然而,因为我写了一些关于这些项目的文章,它有超过 600 颗星。虽然明星不是衡量影响力的好方法,但很明显,人们正在使用这些代码,并从中发现价值。然而,前几天当我偶然发现这个组合结构贝叶斯优化(BOCS) 的回购时,客观地说,它比我写过的任何代码都好,我震惊地看到它只有两颗星。就像伟大的想法在孤立中死去,如果没有令人信服的结果交流,最好的代码将会被忽视。

分析和解释一样有价值

分析的价值不是与使用最好的算法或最多的数据成正比,而是与你如何与广大观众分享结果成正比。1854 年,约翰·斯诺利用 578 个数据点、一篇公开论文和一张点状地图帮助减缓了伦敦霍乱疫情。他没有把他的结果藏在笔记本里,希望人们偶然发现它们,而是把他的工作发表出来,让人们可以很容易地获得。

John Snow’s dot map of the London cholera outbreak. (Source)

最终,他能够说服镇上的成员停用水泵,从而阻止了霍乱的传播,实现了数据科学的目标:利用数据做出更好的现实决策

写博客可以让你在数据科学最重要的部分之一进行实践:与广大读者交流你的工作。写得好的代码和透彻的分析是一个好的开始,但是要完成你的项目,你需要把它和一个令人信服的叙述联系起来。一篇文章是解释你的成果并让人们关心你所有努力的完美媒介。

机遇:写作打开了大门

尽管数据科学在招聘中可能比其他领域更客观,但获得一份工作仍然主要取决于你认识谁——或谁认识你——而不是你知道什么。上大学的全部意义(这里只是稍微夸张)不是学习你将在职业生涯中使用的东西,而是在你打算的职业领域结识人并建立联系。

幸运的是,在数据科学这一点上,虽然上大学学习的东西是有帮助的,但这不是必须的。有了通过一篇博客文章接触成千上万在线用户的能力,你就可以通过写作和分享的行为形成那些关键的联系并打开大门——不需要学费。当你在公共论坛上写你的项目时,你可以获得机会,而不仅仅是交作业。

我大学学的是机械工程,在学校没有做过一个数据科学方面的联系(更别说学什么有用的技能了)。然而,我在最后一个学期确实开始了写作,因此,我能够与潜在的雇主、合作者,甚至书籍编辑(答案是最终)建立许多关系,这对我导航数据科学职业生涯的开始非常有帮助。

回到第一点,我的代码远不如许多其他数据科学家的代码好,但我很幸运地获得了机会,因为我能够让我的工作变得容易理解。

我从来没有被在 GitHub 上找到我的人单独联系过,但我被看过我文章的人联系过几百次。

虽然我的雇主Feature Labs——确实找到了我的 GitHub 工作,但不是通过在 GitHub 上搜索“伟大的数据科学分析”。更确切地说,是通过我写的一篇文章,遍历一个项目并总结结论。记住,不是代码对文章,是文章对代码。

博客文章是建立重要联系的绝佳媒介,因为它表明 1。你做了很好的数据科学工作。你在乎的是分享它,并教给别人。对数据科学的过度热情不是一份工作的必备条件,但表现出你对该领域和学习感兴趣将有助于吸引雇主,尤其是如果你刚刚起步,没有太多经验的话。此外,写得好的博客文章可以有很长的保质期,给你一个潜在的未来几年的投资组合。

数据科学工作还没有既定的路径,这意味着我们都可以打造自己的工作。写作并与社区分享可以帮助你形成所有重要的联系,并在该领域获得立足点。

反馈:工作、分享、倾听、改进、重复

作为一个新的领域,数据科学很少有什么标准答案。最好的学习方法是尝试一些事情,犯一些错误,然后从经验中学习。将您的工作放在公共场所意味着您可以从数千名拥有数千年集体经验的数据科学家那里获得反馈。这就是成为社区一员的好处:我们一起比任何一个人知道的都多,作为社区的一员,你可以通过反馈来利用这些知识来改进你自己的工作。

处理互联网上的反馈可能很难,但我发现数据科学社区,特别是媒体上的数据科学的非常文明。我的应对评论的策略是:

  1. 正面评论:致谢
  2. 建设性的批评:写下评论,修正当前分析中可以修正的部分,并在未来的项目中尽可能实践这些建议
  3. 非建设性的批评:忽略

不幸的是,我们经常没有花时间经常回顾我们自己的工作,但是,幸运的是,我们可以与世界分享它,并让其他人回顾它。这些人对我们的工作可能比我们更诚实,所以我们通过分享得到了更客观的评估。

一堂课最有价值的部分从来都不是内容,而是你从教授那里得到的对你作业的反馈。幸运的是,通过在博客中公开与数据科学社区分享您的项目,您可以在不上课的情况下获得反馈。

虽然学校教育我们要厌恶失败,但只有通过反复失败,然后改进,我们才能变得更好。毫无疑问,我是一个更好的作家数据科学家,因为我把我的工作拿出来接受批评,并听取反馈。

怎么办?

现在,你可能有一个或十几个 Jupyter 笔记本,可以用来写很棒的文章!花一两个小时写一篇这样的文章,并把它公之于众。不一定要完美:只要你做过数据科学的工作,人们就会尊重你的文章。

如果你纠结于释放任何不完美的东西(这是我最大的问题之一),那么设定一个时间限制,比如说 60 分钟,无论你在 60 分钟内完成了什么,都必须释放。我不得不这样做了几次,这使得我的工作更有意义,也更有效。

现在,拿起你的笔记本,写一篇文章。在媒体上发布,然后让社区看到你的作品。虽然回报不是瞬间的,但随着时间的推移,收益会逐渐增加:

  1. 你会更好地完成重要的沟通任务
  2. 机会/关系将会打开
  3. 你的数据科学写作会随着你建设性的批评而提高。

继续做你的数据科学项目,但是不要在代码上传到 GitHub 或者上交的时候停下来。走完最后一步,写一篇文章。你未来的自己会感谢你的!

和往常一样,我欢迎反馈、建设性的批评以及倾听您的数据科学项目。可以在 Twitter @koehrsen_will 上找到我。

数据科学家最需要的技能

原文:https://towardsdatascience.com/the-most-in-demand-skills-for-data-scientists-4a4a8db896db?source=collection_archive---------1-----------------------

雇主在寻找什么?

数据科学家应该知道很多东西——机器学习、计算机科学、统计学、数学、数据可视化、通信和深度学习。在这些领域中,有数十种语言、框架和技术可供数据科学家学习。想成为雇主抢手的数据科学家应该如何花费学习预算?

我搜索了工作列表网站,寻找数据科学家最需要的技能。我研究了一般的数据科学技能,并分别研究了特定的语言和工具。

更新:2019 年底,我再次查看了这些技术,并将它们与 2018 年的结果进行了比较,以了解哪些技能在上升,哪些在下降。见分析这里

我于 2018 年 1010 日在 LinkedIn果然简单雇佣怪兽AngelList 上搜索招聘信息。这张图表显示了每个网站列出的数据科学家职位的数量。

我通读了许多工作清单和调查,寻找最常见的技能。像管理这样的术语没有进行比较,因为它们可以在工作列表中的许多不同的上下文中使用。

使用“数据科学家”“【关键词】”对美国进行所有搜索。使用精确匹配搜索减少了结果的数量。然而,这种方法确保了结果与数据科学家的职位相关,并以类似的方式影响所有搜索词。

AngelList 提供了拥有数据科学家名单的公司数量,而不是职位数量。我从两个分析中排除了 AngelList,因为它的搜索算法似乎是作为一种类型的逻辑搜索来运行的,没有能力将其更改为。如果你在寻找“数据科学家”【tensor flow】的职位,AngelList 可以很好地工作,但如果你的关键词是“数据科学家”【react . js】,它会返回太多非数据科学家职位的公司列表。

Glassdoor 也被排除在我的分析之外。该网站声称在美国有 26263 个【数据科学家】职位,但它显示给我的职位不超过 900 个。此外,它的数据科学家职位列表数量不太可能超过任何其他主要平台的三倍。

LinkedIn 上有超过 400 个通用技能的条目和超过 200 个特定技术的条目被纳入最终分析。肯定有一些交叉张贴。结果记录在这个谷歌表中。

我下载了。csv 文件并将其导入 JupyterLab。然后,我计算了出现的百分比,并在所有的工作列表网站上进行平均。

我还将软件结果与 2017 年上半年数据科学家工作清单的 Glassdoor 研究进行了比较。结合来自 KDNuggets 的使用调查的信息,看起来一些技能变得越来越重要,而另一些则失去了重要性。我们一会儿会谈到这些。

查看我的 Kaggle 内核的交互式图表和附加分析这里。我用 Plotly 来实现可视化。在撰写本文时,将 Plotly 与 JupyterLab 一起使用需要一些争论。我写了一个使用 Plotly 的指南,你可以在这里看到。

一般技能

以下是雇主最常寻求的通用数据科学家技能的图表。

结果显示,分析和机器学习是数据科学家工作的核心。从数据中收集见解是数据科学的主要功能。机器学习就是创造系统来预测性能,它非常受欢迎。

数据科学需要统计学和计算机科学技能,这并不奇怪。统计学,计算机科学,数学也是大学专业,大概对他们的频率有帮助。

有趣的是,近一半的工作清单中都提到了沟通。数据科学家需要能够交流见解并与其他人合作。

AI 和深度学习不像其他一些术语那样频繁出现。然而,它们是机器学习的子集。深度学习正被用于越来越多的机器学习任务,而其他算法以前曾被用于这些任务。比如现在大多数自然语言处理问题最好的机器学习算法就是深度学习算法。我预计未来将更明确地寻求深度学习技能,机器学习将成为深度学习的同义词。

雇主在寻找哪些针对数据科学家的特定软件工具?让我们接下来处理那个问题。

技术技能

以下是雇主正在寻找有经验的数据科学家的前 20 种特定语言、库和技术工具。

让我们简单看看最常见的技术技能。

Python 是最受欢迎的语言。这种开源语言的流行已经被广泛观察到。它对初学者友好,有许多支持资源。绝大多数新的数据科学工具都与之兼容。Python 是数据科学家的主要语言。

R 紧随 Python 之后。它曾经是数据科学的主要语言。我很惊讶地看到它仍然如此受欢迎。这种开源语言的根源是统计学,它仍然很受统计学家的欢迎。

Python 或 R 是几乎每个数据科学家职位的必备技能。

SQL 的需求量也很大。SQL 代表结构化查询语言,是与关系数据库交互的主要方式。在数据科学领域,SQL 有时会被忽视,但如果你打算进入就业市场,这是一项值得掌握的技能。2019 年 12 月更新:我正在编写一本 SQL 书籍。加入我的数据牛逼邮件列表,确保你不会错过。👍

接下来是 HadoopSpark ,它们都是来自 Apache 的大数据开源工具。

Apache Hadoop 是一个开源软件平台,用于在由商用硬件构建的计算机集群上对超大型数据集进行分布式存储和分布式处理。— 来源

Apache Spark 是一个快速的内存数据处理引擎,具有优雅和丰富的开发 API,允许数据工作者高效地执行需要快速迭代访问数据集的流、机器学习或 SQL 工作负载。— S

与许多其他工具相比,这些工具在媒体和教程中很少被提及。我认为拥有这些技能的求职者比 Python、R 和 SQL 要少得多。如果您已经或能够获得 Hadoop 和 Spark 的经验,它应该会让您在竞争中占据优势。

然后是 JavaSAS 。看到这些语言如此之高,我很惊讶。两家公司背后都有大公司,至少有一些免费的产品。在数据科学社区中,Java 和 SAS 通常很少受到关注。

Tableau 是下一个热门。这个分析平台和可视化工具功能强大,易于使用,并且越来越受欢迎。它有一个免费的公开版本,但如果你想让你的数据保密,就要花钱。

如果你不熟悉 Tableau,绝对值得在 Udemy 上上一堂 Tableau 10 A-Z 这样的速成课。我没有从这个建议中获得佣金——我只是参加了这个课程,发现它很有价值。

下面的图表显示了一个更大的最受欢迎的语言、框架和其他数据科学软件工具的列表。

历史比较

GlassDoor 在其网站上对 2017 年 1 月至 2017 年 7 月数据科学家最常见的 10 种软件技能进行了分析。以下是 2018 年 10 月,这些术语在他们网站上出现的频率与 LinkedIn、Indeed、SimplyHired 和 Monster 的平均频率的比较。

结果相当相似。我的分析和 GlassDoor 都发现 Python、R 和 SQL 是最受欢迎的。我们还发现了同样的九大技术技能,尽管顺序略有不同。

结果表明,与 2017 年上半年相比,R、Hadoop、Java、SAS 和 MatLab 现在的需求较少,Tableau 的需求较多。鉴于来自 KDnuggets 开发者调查等来源的补充结果,这正是我所期望的。其中,R、Hadoop、Java 和 SAS 都显示出明显的多年下降趋势,Tableau 显示出明显的上升趋势。

推荐

基于这些分析的结果,以下是对当前和有志成为数据科学家的一些一般性建议,这些科学家关心的是如何让自己变得更有市场。

  • 证明你可以做数据分析,并专注于成为真正熟练的机器学习。
  • 投资于你的沟通技巧。我推荐阅读《T2》这本书来帮助你的想法产生更大的影响。还可以使用海明威编辑器应用程序来提高你写作的清晰度。
  • 掌握一个深度学习框架。精通深度学习框架是精通机器学习越来越大的一部分。关于深度学习框架在使用、兴趣和受欢迎程度方面的比较,请参见我的文章这里
  • 如果你在学习 Python 和 R 之间做选择,选择 Python。如果你对 Python 不感冒,可以考虑学习 r。如果你也懂 r,你肯定会更有市场。

当雇主在寻找具有 python 技能的数据科学家时,他们也可能希望候选人知道常见的 Python 数据科学库:NumPy、pandas、scikit-learn 和 Matplotlib。如果您想学习这套工具,我推荐以下资源:

  • 2019 年 12 月更新:我最近发布了我的令人难忘的 Python 书,以帮助你以对大脑友好的方式学习 Python!🐍如果这听起来符合你的口味,那就去看看。😀

  • DataCampDataQuest —它们都是价格合理的在线 SaaS 数据科学教育产品,在这里你可以边编码边学习。他们都教授一些技术工具。
  • 数据学校有各种资源,包括一套很好的解释数据科学概念的 YouTube 视频
  • 用于数据分析的 Python作者 McKinney。这本书由 pandas library 的第一作者撰写,重点关注 pandas,并讨论了数据科学的基本 Python、NumPy 和 scikit-learn 功能。
  • 用 Python 学习机器简介 穆勒&圭多。Müller 是 scikit-learn 的主要维护者。是一本用 scikit-learn 学习机器学习的极好的书。

如果你想进入深度学习,我建议先从 KerasFastAI 开始,然后再进入 TensorFlowPyTorch 。Chollet 的 用 Python 进行深度学习 是学习 Keras 的绝佳资源。

除了这些建议,我建议你学习你感兴趣的东西,尽管在决定如何分配学习时间时,显然有许多考虑因素。

如果你正在通过在线门户网站寻找一份数据科学家的工作,我建议你从 LinkedIn 开始——它总是有最多的结果。

如果你在找工作或在工作网站上发布职位,关键词很重要。“数据科学”在每个网站上返回的结果数量是“数据科学家”的近 3 倍。但是如果你严格地寻找一份数据科学家的工作,你可能最好搜索“数据科学家”。

不管你在哪里寻找,我建议你制作一个在线作品集,展示你在尽可能多的需求技能领域的熟练程度。我在这里做了一个投资组合网站的小指南。

作为这个项目的一部分,我收集了其他数据,我可能会变成文章。跟着我确保你不会错过。👍

如果你想看到交互式 Plotly 图表和它们背后的代码,请查看我的 Kaggle 内核

我希望这篇文章能让你对那些雇佣数据科学家的组织有所了解。如果你学到了什么,请在你最喜欢的社交媒体上分享,这样其他人也可以找到它😃。

我写关于数据科学、云计算和其他技术的东西。如果你对这些感兴趣,请关注我,在这里阅读更多。😀

快乐学习!📖

如果您是数据科学家或想成为数据科学家的人,这是最有价值的资源

原文:https://towardsdatascience.com/the-most-valuable-resource-if-youre-a-data-scientist-or-wannabe-9846a068943c?source=collection_archive---------6-----------------------

我从事数据科学家的工作已经有几年了,一直在大学里作为私人教师和讲师教授数据科学。这篇文章反映了我自己的观点。请注意,我没有支付推广任何网站。

从哪里开始学习,不断进步?

coursera.orgfast.aisci kit-learn documentation、Quora——举一些我经常使用的网站——有太多的在线资源提供高质量的数据科学实践内容。但是有一个人脱颖而出:kaggle.com

让我解释一下为什么 Kaggle 这么酷,为什么你绝对应该在这个网站上学习

什么是 kaggle.com?

Kaggle 是一个数据科学竞赛的在线平台。此外,它聚集了世界上最大的数据科学家群体之一。由受信任的公司和组织主办的竞赛类型包括欺诈检测、自然语言处理、图像处理等。而且当然是免费的。

Currently 16 open competitions, on image processing, sales forecasting…

向最好的人学习

Kaggle 社区分享了许多关于如何成为数据科学从业者的见解,这对学习者来说是黄金。

Kaggle 为每场比赛提供:

  • 带有解释的数据集。数据通常是真实世界的数据,这很好,因为你想在真实世界中擅长数据科学
  • 评估算法性能的度量(或测量)的定义。这是理解我们想要通过机器学习实现什么具体目标的关键。根据您的度量标准,一个简单的算法有时就足够了。定义度量将定义问题的复杂性
  • 规则和奖励,这些东西其实并不重要,除非你是一名经验丰富的数据科学家,有时间花在一项挑战上:)

现在最重要的资源来了:

  • 讨论区数据科学家分享关于数据或指标的疑问,人们在这里寻求建议或帮助来改进模型。这是拓宽您对数据科学家如何解决给定问题的视野的好方法。通过投票对主题进行排序,以获得最有价值的贡献

Kernels are scripts, usually Python or R, showcasing a data scientist’s skill to perform well in a competition and/or to explore and visualize datasets

  • 内核部分——我的 goto 资源——在这里,数据科学家不仅分享他们的算法的代码以在比赛中获得高分,还分享他们探索和可视化数据集的代码。与讨论类似,您可以通过 upvotes 对内核进行排序。投票最多的内核提供了解释和可视化。它们会令人兴奋不已

An example of data visualization from a Kernel, created by a data scientist on Kaggle on a competition about road traffic in NYC. The data and the code are available for everyone for free

下面是一些最受社区欢迎的内核。你应该去看看!别忘了:好的艺术家复制,伟大的艺术家偷窃。

[## 做我的客人-招聘餐厅 EDA

招聘餐厅游客预测-R 代码

www.kaggle.com](https://www.kaggle.com/headsortails/be-my-guest-recruit-restaurant-eda) [## 语音表示和数据探索

TensorFlow 语音识别挑战—Python 代码

www.kaggle.com](https://www.kaggle.com/davids1992/speech-representation-and-data-exploration) [## 纽约出租车 EDA -更新:快速和好奇

使用来自多个数据源的数据

www.kaggle.com](https://www.kaggle.com/headsortails/nyc-taxi-eda-update-the-fast-the-curious) [## 探索性分析- Instacart

使用来自 Instacart 市场篮分析的数据

www.kaggle.com](https://www.kaggle.com/philippsp/exploratory-analysis-instacart) [## 数据分析和 XGBoost 启动器(0.35460 磅)

使用来自 Quora 问题对的数据

www.kaggle.com](https://www.kaggle.com/anokas/data-analysis-xgboost-starter-0-35460-lb)

如果你喜欢这篇文章,考虑给它至少 50 分👏 😃

神经网络的最完整的图表,解释

原文:https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464?source=collection_archive---------0-----------------------

神经网络类型的动物园呈指数增长。人们需要一张地图来在许多新兴的架构和方法之间导航。

幸运的是,阿西莫夫研究所Fjodor van Veen 编辑了一份关于神经网络拓扑的精彩备忘单。如果你不是机器学习的新手,你应该以前见过它:

在这个故事中,我将介绍每一个提到的拓扑结构,并尝试解释它是如何工作的,以及在哪里使用。准备好了吗?我们走吧!

感知器。我们所知道的最简单和最古老的神经元模型。获取一些输入,对它们求和,应用激活函数,并将它们传递到输出层。这里没有魔法。

前馈神经网络也相当古老——这种方法起源于 50 年代。它的工作方式在我之前的一篇文章中有所描述——“老派矩阵 NN ”,但一般来说它遵循以下规则:

  1. 所有节点都完全连接
  2. 激活从输入层流向输出层,没有环回
  3. 在输入和输出之间有一层(隐藏层)

在大多数情况下,使用反向传播方法训练这种类型的网络。

RBF 神经网络实际上是 FF(前馈)神经网络,使用径向基函数代替逻辑函数作为激活函数。有什么区别?

逻辑函数将某个任意值映射到 0…1 范围,回答“是或否”的问题。它适用于分类和决策系统,但不适用于连续值。

相反,径向基函数回答了“我们离目标有多远”这个问题?这非常适合函数逼近和机器控制(例如,作为 PID 控制器的替代)。

简而言之,这些只是激活功能和器具不同的 FF 网络。

DFF 神经网络在 90 年代初打开了深度学习的潘多拉盒子。这些只是 FF NNs,但是有不止一个隐藏层。那么,是什么让它们如此不同呢?

如果你读过我之前关于反向传播的文章,你可能已经注意到,当训练一个传统的 FF 时,我们只把少量的错误传递给前一层。因为堆叠更多的层导致训练时间的指数增长,使得 dff 非常不切实际。只是在 2000 年代早期,我们开发了一系列方法来有效地训练 DFFs 现在,它们形成了现代机器学习系统的核心,涵盖了与 FFs 相同的目的,但结果要好得多。

递归神经网络引入不同类型的细胞——递归细胞。这种类型的第一个网络被称为乔丹网络,当每个隐藏单元以固定的延迟——一次或多次迭代——接收它自己的输出。除此之外,它就像普通的 FNN。

当然,有许多变化——像将状态传递给输入节点、可变延迟等,但是主要思想是相同的。这种类型的神经网络主要在上下文很重要的时候使用——当来自过去迭代或样本的决策可以影响当前的决策时。这种上下文最常见的例子是文本——一个单词只能在前面的单词或句子的上下文中进行分析。

这种类型引入了一个存储单元,一个特殊的单元,可以在数据有时间间隙(或滞后)时处理数据。rnn 可以通过“记住”前十个单词来处理文本,而 LSTM 网络可以通过“记住”许多帧前发生的事情来处理视频帧。LSTM 网络也广泛用于书写和语音识别。

记忆细胞实际上由几个称为门的元素组成,这些元素是循环出现的,控制着信息如何被记忆和遗忘。在维基百科的插图中可以很好地看到该结构(注意,块之间没有激活函数):

[## 长短期记忆-维基百科

长短期记忆(LSTM)是一种支持机器学习的人工神经网络架构。这是…

en.wikipedia.org](https://en.wikipedia.org/wiki/Long_short-term_memory#/media/File:Peephole_Long_Short-Term_Memory.svg)

图上的(x)是,它们有自己的权重,有时还有激活功能。在每个样本上,它们决定是否向前传递数据、擦除内存等等——你可以在这里阅读更详细的解释。输入门决定有多少来自上一个样本的信息将被保存在内存中;输出门控制传递到下一层的数据量,遗忘门控制存储的存储器的撕裂率。

然而,这是 LSTM 单元的一个非常简单的实现,还存在许多其他的架构。

gru 是具有不同门控的 LSTMs。句号。

听起来很简单,但是缺少输出门使得对一个具体的输入多次重复相同的输出更容易,并且目前在声音(音乐)和语音合成中使用得最多。

然而,实际的组成略有不同:所有的 LSTM 门被组合成所谓的更新门,而重置门与输入紧密相连。

它们比 LSTMs 消耗更少的资源,并且几乎同样有效。

自动编码器用于分类、聚类和特征压缩。

当你训练 FF 神经网络进行分类时,你通常必须输入 Y 个类别中的 X 个样本,并期望 Y 个输出单元中的一个被激活。这就是所谓的“监督学习”。

另一方面,AEs 可以在没有监督的情况下进行训练。它们的结构是,当隐藏单元的数量小于输入单元的数量(输出单元的数量等于输入单元的数量)时,当 AE 以输出尽可能接近输入的方式训练时,迫使 AEs 归纳数据并搜索共同模式。

与 AE 相比,VAEs 压缩概率而不是特征。

尽管做了简单改变,当 AEs 回答“我们如何概括数据?”,VAEs 回答问题“两个事件之间的联系有多强?我们应该在两个事件之间分配误差,还是它们是完全独立的?”。

更深入的解释(有一些代码)可以在这里找到。

虽然 AEs 很酷,但它们有时不是找到最健壮的特性,而是适应输入数据(这实际上是过拟合的一个例子)。

DAE 会在输入单元上增加一点噪声—通过随机位改变数据,随机切换输入中的位,等等。通过这样做,可以强制 DAE 从有点噪声的输入中重建输出,使其更通用,并强制选择更多的共同特征。

SAE 是另一种自动编码器类型,在某些情况下可以揭示数据中隐藏的分组模式。结构与 AE 中的相同,但隐藏单元数大于输入/输出层单元数。

马尔可夫链是一个非常古老的图形概念,其中每条边都有一个概率。在过去,它们被用来构造文本,比如“在单词 hello 之后,我们可能有单词 dear 有 0.0053%的概率,单词 you 有 0.03551%的概率”(顺便说一下,你的 T9 使用 MCs 来预测你的输入)。

这种 MCs 不是传统意义上的神经网络,MCs 可以用于基于概率的分类(如贝叶斯过滤器),用于聚类(某种类型),以及作为有限状态机。

Hopfield 网络是在有限的样本集上训练的,因此它们用相同的样本响应已知的样本。

每个单元在训练前作为输入单元,训练时作为隐藏单元,使用时作为输出单元。

当 HNs 试图重构训练样本时,它们可以用于去噪和恢复输入。给定一半的学习图片或序列,他们将返回完整的样本。

玻尔兹曼机器非常类似于 HNs,其中一些细胞被标记为输入并保持隐藏。一旦每个隐藏单元更新它们的状态,输入单元就变成输出(在训练期间,BMs / HNs 逐个更新单元,而不是并行更新)。

这是使用模拟退火方法成功获得的第一个网络拓扑。

多个堆叠的玻尔兹曼机器可以形成一个所谓的深度信念网络(见下文),用于特征检测和提取。

RBM 在结构上类似于 BMs,但是由于受到限制,允许像 FFs 一样使用反向传播来训练(唯一的区别是在反向传播传递之前,数据被传递回输入层一次)。

上面提到的 dbn,其实就是一堆玻尔兹曼机(被 VAEs 包围)。它们可以链接在一起(当一个神经网络训练另一个神经网络时),并且可以用于通过已经学习的模式生成数据。

DCN 现在是人工神经网络的明星。它们具有卷积单元(或池层)和内核,每一个都有不同的用途。

卷积内核实际上处理输入数据,池层简化了输入数据(主要使用非线性函数,如 max),减少了不必要的功能。

通常用于图像识别,它们对图像的小子集(大约 20x20 像素)进行操作。输入窗口沿着图像逐像素滑动。数据被传递到卷积层,卷积层形成一个漏斗(压缩检测到的特征)。就图像识别而言,第一层检测特定对象的渐变、第二条线、第三个形状等等。dff 通常附加到最后的卷积层,用于进一步的数据处理。

DNs 是 DCN 的反序。DN 取猫图像,产生类似{狗:0,蜥蜴:0,马:0,猫:1 }的矢量。DCN 可以用这个向量来画一只猫。我试图找到一个可靠的演示,但最好的演示是在 youtube 上。

设计(哦,我的上帝,这是长的)看起来像 DCN 和 DN 粘在一起,但它是不正确的。

实际上,它是一个自动编码器。DCN 和 DN 不是独立的网络,而是网络输入和输出的隔离物。这些网络主要用于图像处理,可以处理之前没有训练过的图像。由于它们的抽象层次,这些网络可以从图像中删除某些对象,重新绘制图像,或者用斑马代替马,就像著名的 CycleGAN 所做的那样。

GAN 代表了一个由发生器和鉴别器组成的双网络大家族。它们不断地试图欺骗对方——生成器试图生成一些数据,而接收样本数据的鉴别器试图区分生成的数据和样本。如果你能够保持这两个网络之间的训练平衡,这种类型的神经网络可以不断进化,从而生成现实生活中的图像。

pix2pix 就是这种方法的一个很好的例子。

LSM 是稀疏(非完全连接)神经网络,其中激活函数由阈值水平代替。单元累加连续样本的值,仅当达到阈值时发出输出,将内部计数器再次设置为零。

这种想法来自人脑,这些网络广泛应用于计算机视觉和语音识别系统,但没有重大突破。

ELM 试图通过创建具有随机连接的稀疏隐藏层来降低 FF 网络背后的复杂性。它们需要更少的计算能力,但实际效率严重依赖于任务和数据。

ESN 是具有特殊训练方法的循环网络的子类型。数据被传递给输入,如果被多次迭代监视,则传递给输出(允许循环特性生效)。此后,仅更新隐藏单元格之间的权重。

就我个人而言,除了多个理论基准之外,我不知道这种类型的真正应用。随便加你的)。

DRN 是一个深层网络,其中部分输入数据被传递到下一层。这个特性允许它们非常深(高达 300 层),但实际上它们是一种没有显式延迟的 RNN。

KN 引入了“到单元的距离”功能。这种类型的网络主要用于分类,试图调整它们的细胞以对特定输入做出最大反应。当某个单元被更新时,其最近的邻居也被更新。

像支持向量机一样,这些网络并不总是被认为是“真正的”神经网络。

SVM 用于二元分类任务。不管网络可以处理多少维度或输入,答案总是“是”或“不是”。

支持向量机并不总是被认为是一个神经网络。

哈,最后一个!

神经网络有点像黑匣子——我们可以训练它们,得到结果,增强它们,但实际的决策路径对我们来说大多是隐藏的。

NTM 试图解决这个问题——它是一个提取了记忆细胞的 FF 吗?一些作者也说这是对 LSTM 的抽象。

存储器通过其内容寻址,并且网络可以根据当前状态从存储器中读取和向存储器中写入,这代表了一个不完全的神经网络。

希望你喜欢这个概述。如果你觉得我说错了,可以随意评论,订阅以后关于机器学习的文章(还有,如果对题目感兴趣可以查看我的 DIY AI 系列)。

回头见!

多类定义

原文:https://towardsdatascience.com/the-multiclass-definitions-356d2de7ef20?source=collection_archive---------4-----------------------

Photo by Tuân Nguyễn Minh on Unsplash

初露头角的机器学习程序员学到的第一课就是关于二进制分类。这是你和你的模型试图将一个输入归类为两个结果之一的想法。这是一个热狗或不是热狗,你应该拒绝或接受某人的贷款,或者你认为一个学生会通过或不及格。

一旦你掌握了这一点,课程就会开始教授多类分类。这是输入可以被归类为许多输出中的一种的想法——这更接近地代表了世界。也许你想预测一个介于 0-9 之间的数字图像。或者,你可能对邻居草坪上的那朵漂亮的花很好奇,所以你训练了一个模特来找出答案。一些首要的关键经验包括像一次性编码或标签编码。

我们都在这里学习,我最近发现了不同的多类和多标签分类,我想与大家分享。所以,让我们开始吧。

多标签分类

这组算法可以被认为是将您的输入分类为一个或多个类的一部分。一秒钟想到中等文章。当作者准备发表他们的文章时,他们必须决定一组代表他们文章的标签。这些标签可能是“人工智能”、“愚蠢的故事”或“走向数据科学”。

现在,Medium 或有时间的人可以训练一个模型,它可以通过对文章本身进行一些自然语言处理来学习人们如何标记他们的文章。然后,他们的模型将能够预测或推荐一篇新文章应该拥有的前 5 个“标签”或标记。

这里的思路是,没有没有互斥,输出可以把输入归为很多事物中的一种。

多类分类

反过来,多类分类确实有互斥性。如果我们把中等的类比延伸得更远一点,同样的模型只会预测或推荐其中一个标签,而不是许多。

这种类型的问题在机器学习指南中更常见,因为训练集可能有定义的基础事实。例如,如果您有一个预测狗品种的分类器,您会希望模型选择一个输出而不是两个。

有趣的是,在这组方法中有几个子类。有一对一和一对全/休息分类。这里的是一对链接,它们简洁地解释了这些差异。本质上,将多类分类分成更简单的子问题,特别是二分类问题,是聪明的方法。

多输出回归

这种分类方法类似于多类分类,但不是模型预测的类,而是模型为结果提供一个数字或连续变量。如果你想创建一个输出苹果股价和下一步走势的模型,这可能是个不错的选择。

像往常一样,在机器学习中,即使是第一个主题,也总是有更多的东西要学。如果您想更深入地研究这些方法,您可以查看属于每个类别的不同算法。SVC、朴素贝叶斯和随机森林可以归入不同的类别,它可以让您更好地理解这些工具集之间的差异。

感谢阅读。

噪音的误导效应:多重比较问题

原文:https://towardsdatascience.com/the-multiple-comparisons-problem-e5573e8b9578?source=collection_archive---------2-----------------------

如何避免被随机性愚弄

一家大型制药公司的首席执行官遇到了一个问题。他的化学家们开发的增强意志力的神奇新药每次试验都失败了。首席执行官无法相信这些结果,但研究人员告诉他,在 0.05 的显著性水平(p 值)上,没有证据表明这对意志力有影响。确信药物在某些方面肯定是有益的,首席执行官有了一个绝妙的主意:不是只测试药物的一种效果,而是同时测试 1000 种不同的效果,所有的效果都是相同的 p 值。即使它不会增加意志力,它也必须做一些事情,比如减少焦虑或增强记忆。持怀疑态度的研究人员完全按照首席执行官所说的重新进行了试验,监测了服用该药物的受试者的 1000 项不同的健康指标。研究人员带回了令人震惊的消息:该药物对 50 个测量值有显著影响!奇迹般的权利?实际上,如果他们在这个实验分析中发现没有显著影响,那会更令人惊讶。

首席执行官的错误是多重比较问题的一个例子。这个问题归结于现实世界中数据的噪音。虽然噪声影响一个结果的机会可能很小,但是我们进行的测量越多,随机波动被误归类为有意义结果的可能性就越大。虽然这影响了进行客观研究的研究人员,但它也可能被用于邪恶的目的。

首席执行官有一种药物,他想卖,但它没有达到它的设计目的。他没有承认失败,而是指示他的研究人员继续观察,直到他们发现药物改善的一些重要迹象。即使这种药物对任何健康指标完全没有效果,研究人员最终也会发现,由于数据中的随机噪声,这种药物确实改善了一些指标。由于这个原因,多重比较问题也被称为看别处效应:如果一个研究者没有找到她想要的结果,她可以继续寻找,直到她找到一些有益的效应!

If at first you don’t succeed, just keep searching!

幸运的是,大多数统计学家和研究人员是诚实的,并且使用方法来解释多重比较问题。最常见的技术称为 Bonferroni 校正,但在解释之前,我们需要先谈谈 p 值。

p 值表示在零假设为真的情况下,检验统计量至少与测量值一样极端的概率。在药物的例子中,对于最初的试验,无效假设是药物没有增加个体的平均动机。另一个假设,或者研究者的信念,是药物增加了平均动机。p 值为 0.05,这意味着在一个药物不会增加平均动机的世界中,研究人员将测量药物会因随机噪声而增加动机 5%的时间。

在进行研究之前,研究人员选择一个 p 值(称为 alpha 或显著性水平)来建立统计显著性。如果测得的 p 值低于阈值,则拒绝零假设,结果具有统计学意义。较低的测量 p 值被认为更好,因为它表明结果不太可能偶然出现。

一旦我们知道 p 值代表什么,我们就能发现 CEO 的错误。他命令以同样的 p 值 0.05 再次进行试验,但他不是只测试一种效果,而是要测试 1000 种效果。如果我们执行 1000 次假设检验,p 值为 0.05,由于随机噪声(1000 次的 5%),我们预计平均会找到 50 个显著结果。一些结果实际上可能是有意义的,但是宣布它们都是有意义的,并根据这项研究来销售药物是不道德的!

下图说明了这个问题。我从一个标准的正态分布中产生了 1000 个随机数,并将它们绘制在相应的概率密度函数上。我们可以忽略此处的 y 轴,而专注于 x 轴,即 z 得分。如果我们执行假设检验,并假设我们的检验统计(测量值)的平均值来自正态分布,那么我们根据 z 得分计算我们的检验统计。使用我们为假设检验选择的 p 值(α),我们可以找到统计显著性所需的 z 值。p 值为 0.05 的这些阈值显示为红色垂直线,线外的观察值被认为具有统计显著性。黑点是不重要的随机生成的观察值,而红点是“重要的”随机生成的数据点。

Random Observations with a p value of 0.05

我们可以看到,通过随机观察和使用未校正的 p 值,我们将这些结果中的一些归类为显著的!如果我们有一种药物要卖,这可能是一个好消息,但是作为负责任的数据科学家,我们需要考虑进行多次测试,这样我们就不会被噪音误导。

多重比较问题的一个简单解决方法是 Bonferroni 校正。为了补偿许多假设检验,我们取单个比较的 p 值,并除以检验次数。在药品公司试验的情况下,原始的 p 值 0.05 应该除以 1000,得到新的显著性阈值 0.00005。这意味着结果必须更加极端才能被认为是有意义的,从而降低了随机噪声被描述为有意义的概率。

我们可以将 Bonferroni 校正应用于上图,看看它如何影响随机点的分类。该图具有相同的结构,但现在显著性阈值说明了多重测试。

Random Observations with Bonferroni Correction to Significance Level

没有随机数据点现在被认为是重要的!有的批评认为 Bonferroni 修正过于保守,它可能会导致我们拒绝一些实际上有意义的结果。然而,该方法背后的重要概念是,当我们进行许多比较时,显著性值需要调整。

多重比较的问题不仅仅局限于假设检验。如果我们比较足够多的数据集,我们可以发现相关性只不过是随机噪声。网站的虚假相关性幽默地说明了这一点,该网站列举了一些完全不相关的趋势,而这些趋势恰好密切相关。

Seems Legit (Source)

当我们检查研究时,要记住多重比较问题,这很重要,但它也可以用于我们的日常生活。如果我们足够努力,我们可以在任何地方找到相关性,但这并不意味着我们应该因为它们而改变生活方式。也许我们每天称体重,发现体重与发短信的数量呈负相关。寄希望于减肥而发更多的短信是愚蠢的。人类擅长识别模式,当我们足够努力地寻找并进行足够多的比较时,我们可以说服自己随机噪音中有意义。一旦我们意识到这种趋势,我们就准备分析可疑的主张,做出理性的选择。

一如既往,我欢迎反馈和建设性的批评。可以在 Twitter @koehrsen_will 上找到我。

数据科学的音乐

原文:https://towardsdatascience.com/the-music-of-data-science-943bf6f14e16?source=collection_archive---------9-----------------------

Photo by: Jorge Guillen

我学到的一件事——或者更确切地说,被提醒的一件事——是统计学就像乐谱上的音乐。就像只用七个音符的音乐家一样,统计学家更喜欢用很少的字母来代表变量、常数和函数。他们都选择了大量难以复制的符号来装饰这几个选定的字母。

当我们将这些统计函数转换成 Python 时,我们发现有许多方法可以使用统计数据的复杂组合。首先,我们必须选择仪器或库。以下是其中的一些库:

Numpy Math:Numpy 是一个重要的库,许多其他库都基于它,比如 Pandas 和 Scipy。对于统计,我们可以使用这个清单中的字面函数来重新创建统计函数,如标准差或简单的线性回归。

这个简单的线性回归表达式(针对房屋的预测价格):

*β0= y_bar - β1*x_bar                    #y_bar is mean of prices
                                        #x_bar is mean of square ft**β1= r(sqft, price)*(std price/std sqft) #r is Pearson's r value* Y = *β0 + β1X                            #Predicted price*

变成了这样:

import numpy as npdef beta0_beta1(x_list, y_list):
    x_list_mean = np.mean(x_list)
    y_list_mean = np.mean(y_list)
    x_list_std = np.std(x_list)
    y_list_std = np.std(y_list)
    beta_one = (np.corrcoef(x_list, y_list)[0,1])*.    
               (y_list_std/x_list_std)
    beta_naught = y_list_mean — (beta_one * np.mean(x_list)
return (beta_one, beta_naught)X = beta0_beta1(X_list_sqft, Y_list_price)SLR = beta_naught + (beta_one * X) 
#Simple linear regression model. 

作为初学者,在代码中“看到”这些函数的每一步,有助于理解其他更复杂的建模技术是如何在源代码中编写的。

Numpy 和弹钢琴一样容易,一样难。你只需触摸琴键就可以发出声音,但只有理解了你想要弹奏的“音符”(即理解了数学),它才会产生真正的音乐。

stats models:这个名副其实的库是一个统计极客的工具箱。我们可以调用我们想要使用的函数,比如普通的最小二乘法和其他统计函数。我喜欢 StatsModels 的主要原因是model.summary()函数,它有点像熊猫探索性数据分析的dataframe.describe():精彩、清晰、充满有用信息。此外,它还有用于练习和测试的数据集。

普通最小二乘模型:

import statsmodels.api as sm#Set up data
X = housing[“sq__ft”]         # X usually means ind variables
y = housing[“price”]          # Y usually means output
X = sm.add_constant(X)        # add intercept (beta_0) to model#Fit the model
model = sm.OLS(y, X).fit()    # OLS is order of least squares
sm.OLS(output, input).fit()   #(fit relationship between beta0 hat  
                                and beta1 hat)#take in X (input) and run the model to get predictions
predictions = model.predict(X)# Print out the statistics
model.summary()

在这里,model.summary()将输出系数、R2 分数、p 值等。

StatsModels 有点像小提琴——同样,发出声音并不难——但如果演奏者缺乏对音乐和乐器本身的理解,那声音绝对可怕。也就是说,由于这些模型“在引擎盖下”有更多的功能,新手可能很容易做出可怕的预测,而不知道如何或为什么。

scikit learn:这个库显然是高级的。创建代码的开发人员显然试图优化我们当中那些想要研究需要计算效率的机器学习技术的数据科学家。像 StatsModels 一样,它也有许多用于测试和实践的数据集。

预测工资的多元线性回归:

from sklearn import linear_model
from sklearn.metrics import r2_scoreX = subset[['years_experience',          #Choose the variables 
            'years_since_degree']]       
y = subset['salary']                     #Set the target for  
                                          predictionlm = linear_model.LinearRegression()     #Call a function that 
model = lm.fit(X, y)                      runs MLR and fit it to  
                                          data
predictions = model.predict(X)           #Look at predictions (and 
                                          probably use it to plot)
print "Model Score:", model.score(X, y)  #What's the R2? 

我非常尊重这个工具包,就像一把斯特拉迪瓦里琴一样,这个乐器的极限显然是为专业人士设计的。

关于如何使用各种库来创建模型,以及哪些库更适合不同的用途,有很多讨论。现在,我弹得越来越好,越来越轻松,但我迫不及待地想尝试用斯特拉迪瓦里小提琴演奏维瓦尔第。

起源之谜——利用 Fast 进行癌症类型分类。人工智能图书馆

原文:https://towardsdatascience.com/the-mystery-of-the-origin-cancer-type-classification-using-fast-ai-libray-212eaf8d3f4e?source=collection_archive---------7-----------------------

tree without its roots

第一章。问题——没有根的树

大约 15%的癌症转移,癌细胞从它们最初形成的地方(原发部位或起源组织)脱离,并通过血液或淋巴系统形成新的转移性肿瘤。确定转移肿瘤的原发部位是癌症治疗中的公开问题之一,因为治疗的功效通常取决于癌症原发部位。

使用肿瘤中的 点突变 进行癌症分类具有挑战性,主要是因为数据非常稀少。许多肿瘤在编码区只有少数突变,而且许多突变是独特的。

先前已经证明,依赖于肿瘤中点突变的分类器实现了有限的准确性,特别是在 12 个肿瘤类别上 64.9%,例如 DeepGene 算法。依靠基因表达数据的可用性,可以大大提高肿瘤分类的准确率(33 个肿瘤类别~ 90%)。然而,这些额外的数据在临床环境中通常不容易获得。因此,能够仅从 DNA 点突变预测肿瘤类别而不依赖于额外的基因表达数据的精确计算方法是非常令人感兴趣的。

第二章。解决方案=嵌入+迁移学习和微调

那么解决办法是什么呢?

正如量子理论物理学家 尼尔斯·玻尔 所指出的那样: “每一个巨大而深刻的困难本身都有它自己的解决方案。”为了找到它,它迫使我们改变思维。

让我们检查一下我们面临的困难:

  1. 数据的表示 —当前的数据表示不允许我们使用预训练的深度神经网络,这些网络在图像数据集上表现非常好。不幸的是,在癌症基因组应用领域,训练数据很少,并且诸如数据扩充的方法不适用。从癌症基因组图谱(TCGA) 可获得 9642 个样本,分布在 29 个类别。
  2. ****即使在基因水平上总结,肿瘤点突变数据也很少。来自癌症生物学的一个有趣观察是,属于同一途径的基因中的癌症突变通常是互斥的。下面是癌症中受影响的“标志性”过程(途径)的一个例子。路径以蓝色列出;图片摘自本文

那么,为什么不用途径编码点突变数据,但是怎么编码呢?使用来自通路中基因成员的信息来训练我们自己的基因 2Vec 编码怎么样?****

这里有一个预览,它在不阅读细节的情况下工作得有多好— 仅依靠 DNA 点突变对 29 种肿瘤分类的准确率为 78.2%

第三章。循序渐进的“如何做”

****3.1 数据及其预处理:我从基因组数据共享门户下载了 TCGA 突变注释格式(MAF)文件。我去除了沉默突变,只保留了带有智人基因组组装 GRCh38 (hg38)注释的基因。数据集被分成 29 种肿瘤类型,每种类型中 80%的样本用于训练,20%用于测试。

MutSigCV 用于识别在每个肿瘤类型训练集中检测到的非沉默突变中的显著突变基因。这让我能够提取非常稀疏的数据集的重要特征。考虑到包括给定基因的碱基组成、长度和背景突变率在内的协变量,MuTSigCV 检测突变发生率高于随机预期的基因。我只剩下1348 个独特的显著突变基因

为了学习数据的生物学相关嵌入,我训练了 Gene2Vec 嵌入。我使用了所有已知途径的数据库,MSI gdb6.2 版,包含 17810 个途径。本着 Word2Vec 的精神,我将路径相似的基因映射到附近的点上。在这里,我假设出现在相同途径环境中的基因共享生物功能。我在定义 Gene2Vec 时使用了标准的 Skip-Gram 模型。

3.2 突变数据到图像的转换:
然后我提取学习过的基因 2Vec 嵌入我们训练集中的 1348 个明显突变的基因,这一步产生了一个方阵。我使用谱聚类算法在嵌入矩阵中创建视觉结构。谱聚类是一种将一维空间中的 N 个数据点分成几个簇的技术。然后使用光谱聚类基因嵌入对训练和测试样本进行编码。左图是胃癌样本的包埋示例。下图是 1348 个显著突变基因的 t 分布随机邻近嵌入( t-SNE )基因嵌入可视化。参与相同癌症途径的基因在它们的表达中彼此更接近,例如 KRAS 和 PTEN(结肠直肠癌);TP53、APC 和 MSH6 (DNA 错配修复)比其他基因靠得更近。

3.3 迁移学习和微调— 快速。AI :
我使用 ResNet34 模型在 ImageNet 上预先训练好的权重作为使用我们的肿瘤图像嵌入进行肿瘤分类的目标任务的初始化。图像被重新缩放到 512x512,并被归一化以匹配 ImageNet 图像的平均值和标准偏差,批量大小被设置为 32 以适合我的 GTX 1070 Ti GPU。

在微调的第一阶段, ResNet34 除了最后一个自定义全连接层外,其他层都被冻结。使用学习率查找器将学习率选择为 0.01,参见 Leslie Smith 的论文及其在 Fast 中的实现。AI 回购倾斜三角形学习率训练计划用于 10 个周期。第一阶段达到的精度为 73.2%

在第二阶段,区别微调使用 0.000001 至 0.001 的学习率序列,这些也是使用学习率查找器确定的。区别性微调将深度神经网络的层分成组,并对每个组应用不同的学习率,因为不同的层应该被微调到不同的程度;最早的残差块最小,全连通层的学习率最大。在第二阶段的训练中,我使用了 12 个周期的倾斜三角形学习率训练计划。第一阶段达到的准确度为 78.3%

这是我们分类器的混淆矩阵:

第四章。一些观察

我观察到我们的错误分类主要在相同的器官系统内,例如卵巢浆液性囊腺癌(OV)和乳腺癌(BRCA)。

我还观察到卵巢浆液性囊腺癌(OV)是错误最多的一类。这实际上并不令人惊讶,因为与其他群组的大量基因相比,在该群组中只有 6 个基因被确定为显著突变。

但是我最重要的观察是快。AI 库允许最先进的迁移学习和微调。给定数据的正确表示,构建最先进的分类器变得非常容易:在这里,我将这个问题的先前最先进的错误减少了 30%以上,而同时区分了更多的类。谢谢杰里米、雷切尔和 Fast。艾!****

我真的很期待表演更多的 【知识转移】从 Jeremy 和 Rachel 到我自己 (😃有区别地微调我在其他重要和有趣的问题上所学的 hack!

如果您对上述内容有任何疑问请在 twitter @alenushka 上找到我****

朴素贝叶斯分类器

原文:https://towardsdatascience.com/the-naive-bayes-classifier-e92ea9f47523?source=collection_archive---------7-----------------------

约瑟夫·卡坦扎里特

朴素贝叶斯分类器 或许是用来构建、训练和预测的最简单的机器学习分类器。这篇文章将展示它是如何工作的以及为什么工作。 第一部分 揭示了广为人知的 贝叶斯法则 只是简单陈述了关于 联合条件 的概率。但它的平淡掩盖了惊人的力量,正如我们将在 2 和第 3 部分、 中看到的,在那里我们组装了机械的 朴素贝叶斯分类器 第四部分 是一个简要的讨论,而 第五部分和第六部分 列举了 朴素贝叶斯分类器 的优缺点。 7 部分 是总结, 8 部分 列举了几个我觉得有用的参考文献。欢迎建设性的意见、批评和建议!**

Reverend Thomas Bayes

1.前奏:贝叶斯法则

给定两个事件 A 和 B,联合概率 P(A,B)是 A 和 B 一起发生的概率。它可以用两种方式之一来写:

第一种方式:

P(A,B) = P(A|B) * P(B)

这里 P(A|B)是一个条件概率:假设 B 已经发生,A 发生的概率。这就说 A 和 B 一起发生的概率是(假设 B 已经发生,A 发生的概率)乘以(B 已经发生的概率)。

第二种方式:

将前一等式中的 A 和 B 互换,得到一个等价的表达式:

P(B,A) = P(B|A) * P(A)

注意,P(B,A)和 P(A,B)是相等的,因为联合概率不依赖于顺序。相等的两个方程的右边产生著名的贝叶斯法则:

P(A|B) * P(B) = P(B|A) * P(A)

2.如何构建贝叶斯分类器

假设我们有一个由 N 个数据点组成的数据集,每个数据点有 M 个特征,被标记为一组 K 个类中的一个。给定特征值,有一个可以预测类别标签的分类器就好了,对吧?你想一下,条件类概率 P(C|D)就是那张票!我们只需要添加一个决策规则来告诉我们如何选择类标签。

条件类概率来自贝叶斯法则的应用:

P(C | D)= P(C) P(D | C)/P(D)*

其中:

c 是一个类,D 是一个数据点,由 M 个特征中的每一个的值组成。

贝叶斯规则表达式中的术语从左至右为:

  • 后验 P(C|D)是数据点 D 在类别 C 中的概率
  • 先验 P(C)是 C 类在数据集中出现的概率,即具有 C 类的数据点的比例
  • 可能性 P(D|C)是给定类为 C 的情况下,我们观察到数据点 D 的相对概率
  • 证据 P(D)是数据点 D 在自然界出现的概率

实际上,P(D)通常很难或不可能计算。不要担心!因为 P(D)独立于 C 类,就我们而言,它只是一个比例常数,我们并不关心。

不知道 P(D)的唯一后果是后验概率将是一个相对概率,而不是一个真实概率。但这也没什么,posterio r 的相对值足以进行分类预测。

为了完成我们的分类器的规范,我们采用了映射(最大后验概率)决策规则,该规则将标签分配给具有最高后验概率的类。

为了应用分类器,我们
1。计算每个类的 posterio r,然后
2。应用映射决策规则来预测分类标签

3.朴素贝叶斯分类器

采用“天真的”假设,即特征值对于给定类别的成员是独立的,可以极大地简化可能性的计算。假设数据点 D 的 M 个特征值具有值(x1,x2,..,xM)。然后在“天真”的假设下,可能性成为每个特征的独立可能性的乘积:

P(D|C) = P(x1,x2,..,xM|C) = ∏{i=1 到 M}P(xi|C)

独立的可能性易于计算离散特征:P(xi|C)是 C 类中所有数据点的比例,这些数据点在具有特征的中具有 xi 值。

通过这种简化,贝叶斯法则变成了

P(C|D) ∝ P(C) * ∏{i=1 到 M}P(xi|C)

上述公式受到下溢误差的影响,因为它通常是非常小的数的乘积。取对数将小数字的乘积转换为普通大小数字的和,同时保持正数的顺序(即,如果 A > B,则 logA > logB)。有了这个补救措施,我们就有了一个实用的计算版本的朴素贝叶斯分类器,它很容易用代码实现:

logP(C|D) = logP(C) + ∑{i=1 到 M}logP(xi|C)

我们忽略了右边比例常数的对数;由于我们只对后验的相对值感兴趣,这不会影响课堂作业。

对于具有离散值的特征(如单词),求和中带有项的是 C 类数据点比例的对数,其带有特征值的等于 xi。万一没有呢?那项变成 log(0),方程爆炸,我们无法做出预测。为了确保这种情况不会发生,我们可以在每个可能性因子的分子和分母上加 1。这是拉普拉斯平滑的变体。

4.讨论

如果有连续值特征,如身高和体重,朴素贝叶斯可用于回归。在这种情况下,训练数据被划分到它的类中。在每个类中,每个特征的值都被假设为正态分布高斯的参数是特征值的均值和方差。或者,可以通过宁滨值对连续要素进行离散化,但这样做会丢弃信息,并且结果可能对宁滨方案很敏感。

每当“天真”假设成立时,朴素贝叶斯分类器是最优的(意味着它是最准确的可能分类器),甚至在某些情况下不成立。在大多数情况下,假设不成立,结果是后验概率不准确。令人惊讶的是,使用决策规则进行的分类通常相当准确,即使概率并不准确!

当训练数据代表母体时,朴素贝叶斯应该工作得最好,以便先验是准确的。

5.朴素贝叶斯分类器的优势

  • 对于少量训练数据的问题,它可以获得比其他分类器更好的结果,因为它具有较低的过拟合倾向。那是奥卡姆剃刀在起作用!
  • 训练很快,包括计算先验可能性
  • ****对新数据点的预测很快。首先计算每个类的后验。然后应用映射 决策规则:标签是具有最大后验的类。
  • RAM 内存的占用是适度的,因为这些操作不需要一次将整个数据集保存在 RAM 中。
  • ****CPU 使用率适中:没有梯度或迭代参数更新需要计算,因为预测和训练仅使用解析公式。
  • 与特征数量和数据点数量成线性比例,并且易于用新的训练数据进行更新。
  • 因为它的线性缩放、快速执行、较小的内存需求和较低的 CPU 使用率,可以为其他方法计算量太大的大量问题(许多行和列)提供可行的解决方案。
  • 轻松处理缺失的特征值 —在没有该特征的情况下通过重新训练和预测!

6.朴素贝叶斯分类器的缺点

  • 无法合并功能交互。
  • 对于回归问题,即连续的实值数据,可能没有好的方法来计算的可能性。对数据进行宁滨并将离散类分配给箱是次优的,因为它丢弃了信息。假设每个特性都是正态分布的是可行的,但是如果特性不是正态分布的,可能会影响性能。另一方面,有了每个类中足够的训练数据,您可以直接估计可能性密度,允许对新数据进行精确的可能性计算。
  • 性能对倾斜的数据很敏感,也就是说,当训练数据不代表总体中的类别分布时。在这种情况下,之前的估计将是不正确的。

7.摘要

在这篇文章中,你已经学会了如何从头开始构建一个朴素贝叶斯分类器。你现在被授权运用奥卡姆剃刀从观测数据中推断宇宙的真相!我希望你已经看到了一丝曙光,为什么贝叶斯规则是有史以来最重要的实用数学发现之一。现在,向前去发现…

8.参考

a.文本分类应用(斯坦福 CS124)

b.一个不错的教程,有一个工作示例和代码

c.Naμve Bayes 分类器,维基百科

Bayes’ Rule

数字声音处理的天然耳朵

原文:https://towardsdatascience.com/the-natural-ear-for-digital-sound-processing-as-an-alternative-to-the-fourier-transform-79872b7a823d?source=collection_archive---------6-----------------------

傅立叶变换的替代方案

这是自然耳朵的原始模型。我为什么想到它,以及它在数字声音处理(DSP)中如何优于快速傅立叶变换(FFT)——这就是本文的内容

我参与的一些软件开发项目使用傅立叶变换进行波形分析。这些项目包括枪支目标和 DTMF 信号的声音音调识别。但在此之前,我渴望得到一张人类语言和音乐和谐的“照片”。最近,我启动了一个应用程序,它可以在我弹吉他的时候演奏一些乐器。问题是教电脑听我的节奏,并保持音乐节奏有序。为了做到这一点,我在平克·弗洛伊德的作品《放逐》的前几秒使用了傅立叶变换。然后,我将“图片”与我演奏的相同作品进行比较,结果很差,直到我选择了高达 8192 的 FFT 块大小来识别至少第六个八度音阶的音符。

这显示了傅立叶变换的第一个问题——要获得真正好的分析,需要增加块大小(在多个频率仓上),结果性能下降,特别是对于实时处理。

音乐傅里叶变换分析的第二个问题是,同样的乐器,根据音色的不同,会产生不同的泛音。这些通过 FFT 分析的泛音频率产生了与我们实际听到的内容无关的峰值。为了概括这个结果,我用 12 个半音概括了频率仓。画面更好,但现在第一个音符被识别为 C,而实际上是 B:

这迫使我去阅读更多关于声音、听觉和 人耳 的本质。我想问题可能是傅里叶变换的第三个问题——它对信号相位很敏感。人耳不能识别单个谐波的相位,只能识别频率。

我使用 R 语言创建了一个模型(您可以在文章末尾找到代码),它为一组频率生成输入信号:

然后用我十五年前组合的一些公式(同样的实验由于 PC 性能差而失败)创建了一个钟摆的模型。物体可以接收输入信号,如果信号中有相同的频率,物体就会振荡

频率:

不依赖于摆锤自振频率的衰减系数:

钟摆的位置:

速度和能量:

这是钟摆对相同频率信号的反应:

绿色—输入信号
蓝色—摆振荡
红色—摆能量

对于与摆锤频率略有不同的输入信号,振幅和能量明显小于之前的结果:

九种不同信号的组合图—中央信号已被识别:

在那之后,我为不同的频率建造了一套钟摆来覆盖五个八度音阶和十二个音符。这导致了 60 个钟摆聆听“放逐”的第一个和弦的能量:

结果,主音调被正确地检测到。我认为人耳忽略输入信号相位信息的能力对于音乐识别至关重要。我用这个模型创建了一个名为耳蜗的 C++库,用来实时聆听、检测和同步音乐。这将在下一篇文章中描述。

r 代码

library(plyr);
library(tuneR); #*define a class that imitate a pendulum and has two methods - init and tick*pendulum <- setRefClass(
   "pendulum",
   fields = list( v = "numeric",
                  x = "numeric",
                  K = "numeric",
                  T = "numeric",
                  Phi = "numeric",
                  E = "numeric",
                  lastS = "numeric"),
   methods = list(
     #*define the initial state and calculate coefficients*
     init = function(w = "numeric")
    {
     #*period*
     T <<- 44100 / w;
     #*coefficient of elasticity*
     K <<- (2 * pi / T) * (2 * pi / T);
     #*fading coefficient*
     Phi <<- 2 * atan(T) / pi;
     #*initial state*
     v <<- 0;
     x <<- 0;
     lastS <<- 0;
    },
    #*pass the position of the stimulating lever*
    tick = function(s)
    {
     lastX <- x;
     #*position*
     x <<- x + (v + s - lastS - K * x) * Phi;
     #velocity
     v <<- x - lastX;
     #*energy*
     E <<- (v * v) / 2 + (K * x * x) / 2;
     lastS <<- s;
     return(c(x, E));
    }
   )
  )
  #*create one pendulum and init with 700 as frequency of auto-oscillation*
  p <- pendulum();
  p$init(700);
  #*init a vector of waveforms with frequencies from 500 to 900*
  m <- aaply(seq(500, 900, 50), 1, function(x) sine(x, 1500)@left);
  # *clear end of the waveform*
  m[, 1001:1500] <- 0;
  #*apply the pendulum tick to the vector of waveforms*
  m <- t(m);
  r <- aaply(m, c(1, 2), p$tick, .progress = "time");
  #*index of the waveform to plot*
  i <- 5;
  #*show results*
  plot(m[, i] * 100, type = "l", col = "dark green");
  lines(r[ , i, 1], type = "l", col = "blue");
  lines(r[ , i, 2], type = "l", col = "red");

沿着这个链接可以找到 R 码: R 码

附言(同 postscript);警官(police sergeant)

对于个人问题,请在 Linkedin脸书上联系我,有时我会在那里发布关于人工智能的简短新闻和想法。
如果有 AI 方面的需求,或者需要组建数据科学咨询团队,请联系我

深度学习的不远的将来

原文:https://towardsdatascience.com/the-near-future-of-deep-learning-deb9fb9e811e?source=collection_archive---------18-----------------------

在所有最新的深度学习研究中保持领先是非常困难的。下载 Arxiv 移动应用并启用通知将向您展示深度学习研究的疯狂步伐。这么多论文被公开,很难区分信号和噪音。这篇文章将强调我认为将对深度学习的未来产生最大影响的 3 个研究领域。

一、建筑搜索

事实上,设计神经网络架构与其说是科学,不如说是艺术。我们大多数人只是从货架上抓取一个流行的网络架构,如 VGG-16/19 [1]或 ResNet [2]。这些前沿架构是如何被发现的?使用强大的 GPU 计算机进行简单的试错。

何时应用最大池、使用何种卷积滤波器大小、在何处添加漏失层,这些决策大多只是随机猜测。

回车,神经架构搜索 [3]。NAS 使用强化学习来搜索卷积网络架构。

与敌手对 NAS,衰老进化为图像分类器搜索4】。该策略使用遗传算法的修改来搜索卷积网络架构。

这两种算法都能够设计出优于人类的 CNN 架构。Keras 或 PyTorch 等库中的未来神经网络 API 将只要求您定义网络中所需的一系列层或参数。这些算法将设计架构。

二世。压缩神经网络

训练深度学习网络是熟悉计算机内存的好方法。典型的笔记本电脑大约有 8 到 16 GB 的内存。iPhone 8 plus 有大约 3 GB 的内存。VGG-16 图像分类网络有大约 1.44 亿个参数,大约 500 MB。由于这些网络的巨大规模,很难建立移动人工智能应用程序和使用多个网络的应用程序。将网络加载到 RAM 内存中可以加快计算速度。

压缩这些网络的研究比如深度压缩5】工作原理非常类似 JPEG 图像压缩;量化和霍夫曼编码。深度压缩能够将 VGG-16 从 552 MB 减少到 11.3 MB,而不损失准确性。

三世。基于 GAN 的数据增强

构建深度学习模型的最大挑战之一是构建数据集。深度学习模型需要大量的数据。GANs 是一个很有前途的生成式建模框架,可以从数据集中推断出新的数据点。这可用于从小数据集创建大数据集。

甘斯与训练稳定性作斗争。在图像域,很难实现高分辨率输出,如 GANs 的 360 x 360 x 3。这导致了诸如 DCGAN [6]、StackGAN [7]和逐渐增长的 GANs [8]等架构的发展。

结论

总而言之,我认为架构搜索、压缩神经网络和使用 GANs 建立深度学习数据集都将成为深度学习未来的基础部分。关于这些主题,有很多令人兴奋的研究论文,我推荐大家去看看。

感谢阅读!希望这有助于引导你对深度学习的兴趣!

参考文献

[1]卡伦·西蒙扬,安德鲁·齐泽曼。用于大规模图像识别的非常深的卷积网络。2014.

[2]何、、任、。用于图像识别的深度残差学习。2015.

[3] Barret Zoph,Quoc 诉 Le。强化学习的神经结构搜索。2017.

[4] Esteban Real,Alok Aggarwal,黄雁萍,Quoc 诉 Le。图像分类器结构搜索的正则化进化。2018.

[5]宋汉,毛,威廉 j .日报。深度压缩:通过剪枝、训练量化和霍夫曼编码压缩深度神经网络。2015.

[6]亚历克·拉德福德,卢克·梅斯,苏密特·钦塔拉。深度卷积生成对抗网络的无监督表示学习。2015.

[7]张寒、徐涛、李洪生、张少婷、王晓刚、黄小蕾、季米特里斯·梅塔克萨斯。StackGAN:使用堆叠生成式对抗网络进行文本到照片级逼真图像合成。2016.

[8]泰罗·卡拉斯、蒂莫·艾拉、萨穆利·莱恩、贾科科·莱蒂宁。为了提高质量、稳定性和变化性而逐步种植甘蔗。2017.

对数据基础设施的需求,以便更好地利用人工智能

原文:https://towardsdatascience.com/the-need-for-data-infrastructure-for-best-utilization-of-artificial-intelligence-72612c1026e0?source=collection_archive---------7-----------------------

来源

随着智能手机、智能汽车、智能家居等创新的出现,技术正迅速将我们的世界转变为一个“智能”世界。物联网(IoT)是其中的主要贡献者之一。物联网的核心是配备传感器和微芯片的互联设备,这些设备有助于通过互联网在中央平台上传输数据,以提高效率和性能。据估计,到 2020 年,全球联网设备的数量将接近 500 亿台。

来源

随着连接设备的数量持续快速增长,管理和分析这些设备产生的海量数据的需求将会增加。这些数据至关重要,因为它包含有价值的见解和模式,可以帮助企业和组织评估潜在风险,寻找新的业务机会,最重要的是提高组织的整体运作和生产力。现在,这就是人工智能(AI)和机器学习(ML)的用武之地。AI 和 ML 技术允许数据科学家深入研究海量数据,并从中发现有意义的见解。在强调人工智能对于物联网和机器的重要性时,约翰·麦卡锡教授恰当地指出:

人工智能的目标是开发具有智能行为的机器。

尽管处于发展阶段,人工智能已经开始在全球市场创造就业前景。凯捷报告称,近 83%利用人工智能技术的组织认为人工智能领域已经开始涌现新的工作岗位。随着越来越多的组织加入大数据和人工智能的行列,现在对数据科学家、数据工程师、数据分析师等熟练数据专业人员的需求巨大。

来源

现在,互联网上充斥着高度教育性和知识性的在线人工智能课程,让你在人工智能领域开始职业生涯变得更加方便。这些课程是专门为有抱负的学生介绍人工智能的基本概念,如算法,自然语言处理等。,并逐步向机器学习、深度学习等更复杂的概念进展。如果你和技术领域有一点点关系,建议你参加这些课程,提高你的就业能力。因为,现在已经很清楚了,各种组织都在不断寻找高技能的数据专业人员。没有比现在更好的时机让你开始了!

来源

计算在数据管理中的作用

如今,数据呈指数级增长,每天产生近 2.5 万亿次数据!在我们生活的数据驱动的世界中,这些数据是所有信息的来源。然而,管理如此海量的数据本身就是一项挑战。由于高端计算流程,我们能够存储、处理和分析这些数据,以揭示隐藏的趋势和见解,从而改善业务运营、提高生活质量,最重要的是,促进创新。

来源

计算机处理和分析数据的速度比人类快得多,也更准确,因此,计算机正在极大地帮助公司利用其掌握的数据来计算重要的统计数据、监控员工绩效、实现自动化、提高生产率和销售额、提高机器的效率等等。正是由于这种计算能力,今天的组织可以获得大量的统计和技术见解和数字。此外,云计算等技术增强了人工智能的功能。例如,网飞和亚马逊等工业巨头依赖基于云的框架来处理需要全面分析和计算的人工智能任务和服务。

数据基础设施和人工智能

数据基础设施是数据处理和分析的一个重要方面。如果没有合适的数据基础设施,企业和组织就无法从数据中创造价值。对于数据基础设施,我们指的是处理、存储、传输和保护数据所需的整个后端计算支持系统。

虽然许多公司使用软件定义的基础架构(SDI)来支持动态 IT 环境,但 SDI 仍有其积压工作。SDI 不仅受到静态源代码的限制,而且它的功能在很大程度上也依赖于为特定环境编写代码的软件开发人员的技能和专业知识。因此,SDI 不是“智能的”现在的趋势是转向人工智能定义的基础设施(ADI)。

从本质上讲,ADI 是 SDI 的智能升级版,全面集成了复杂的 AI 和 ML 算法,可以从现有信息中“学习”以自动构建自修复框架。ADI 公司可以:

  • 不断分析现有基础设施所有组件的动态行为,并“学习”理解它们自身的工作方式。
  • 通过主动监控基础架构组件的功能并自主采取措施解决问题(如果有),创建一个无错误的环境。
  • 根据工作负载的要求部署资源,并在不再需要时取消分配特定资源。

这些数据基础设施有助于支持各种人工智能相关的技术和应用,包括:

  • 对现有框架的支持:数据基础设施应该整合人工智能框架,如 TensorFlow、Caffe、Theano 和 Torch,以增强和支持现有框架。然而,重点不应该仅仅依赖于人工智能框架,而是应该符合软件开发人员的需求和兴趣。
  • GPU 友好环境:为了确保 AI 任务和进程的无缝处理,数据基础设施必须支持具有令人印象深刻的计算能力的 GPU 环境。微软的 N 系列 GPU 实例就是一个很好的例子
  • 人工智能优化的管理环境和工具:缺乏合适的管理环境和工具来支持和运行人工智能应用是当前数据基础设施的最大缺点之一。因此,集成正确的管理工具和环境以提供最佳性能至关重要。
  • 机器推理:AI 环境中不可分割的一部分的机器推理。机器推理算法使人工智能环境能够跟上基础设施和技术的动态趋势,从而为最佳行动提供有意义的见解。

组织技能在 AI 实施中的重要性

仅仅投资和利用人工智能技术是不够的。公司和企业需要一个专业人才库,能够以确保最佳结果的方式使用这些人工智能工具。随着人工智能和机器学习继续渗透到全球各地的行业和企业,越来越需要重新思考一个组织的整个领导力和思维过程,从产品战略和客户体验到寻找提高人力资本生产率的方法。商业世界的领导者必须通过以下方式鼓励智能人工智能集成到他们的系统中:

  • 以人为本

仅仅投资人工智能技术不会有任何结果。企业也必须相应地投资于员工。根据杜克大学人类自主实验室主任米西·卡明斯

“人工智能的未来是支持和增强人类的能力,这样一个人-人工智能团队比任何一个单独的团队都更强大。”

  • 培养学习的工作文化

作为一个发展中的领域,人工智能需要不断的训练和学习,以跟上它今天带来的创新和变化。在未来,人工智能将在技术领域带来新的变化,只有通过鼓励和创造不断学习和培训的工作环境,组织才能跟上人工智能的创新。

  • 提高业务运营的透明度

组织应该努力维护并推动其业务各个方面的透明度。领导者和管理者应该与员工就他们的人工智能方法进行公开交流。这不仅有助于获得他们的信任和信心,还会鼓舞他们的士气,激励他们更加努力地工作。

Adecco 集团首席执行官 Alain de haze:

“融合了人类输入和人工智能的增强智能,将成为商业成功和形成繁荣社会的关键驱动力。我们正处于人类历史上前所未见的技术变革的尖端。技术进步要求更深入地关注人类固有的技能——批判性思维、情商和价值判断。”

因此,拥有正确的数据基础设施以及适当的组织技能可以帮助企业和组织以正确的方式利用人工智能工具和技术。

量子计算的需求、前景和现实

原文:https://towardsdatascience.com/the-need-promise-and-reality-of-quantum-computing-4264ce15c6c0?source=collection_archive---------0-----------------------

尽管给我们带来了人类历史上最壮观的技术创新浪潮,但数字革命似乎仍然无法解决某些计算问题。其中一些问题可能会阻碍关键的科学突破,甚至全球经济。尽管几十年来,传统计算机的能力和处理速度几乎每两年就翻一番,但它们似乎仍无法解决这些长期存在的问题。想知道为什么吗?问任何一个计算机科学家,他们可能会给你同样的答案:今天的数字,传统的计算机是建立在一个经典的,非常有限的计算模型上的。从长远来看,为了有效地解决世界上最持久的计算问题,我们将不得不转向一种全新的、更有能力的动物:量子计算机。

最终,经典计算机和量子计算机之间的区别不像旧车和新车之间的区别。相反,这就像马与鹰的区别:一个能跑,另一个能飞。经典计算机和量子计算机确实如此不同。在这里,我们好好看看关键的区别在哪里,并深入探究量子计算机的独特之处。然而,你在这里找不到关于量子计算机最终如何发挥其魔力的最终解释。因为没有人真正知道。

经典计算的硬性限制

摩尔定律,施莫尔定律

几十年来,传统计算机的速度和计算能力每两年翻一番(有些人认为仅仅是 18 个月)。这就是众所周知的摩尔定律。尽管飞速发展的步伐可能最终开始略微放缓,但今天充满房间的超级计算机是明天的廉价笔记本电脑这一点或多或少是真实的。因此,按照这种速度,似乎有理由假设,在可预见的未来,没有传统计算机最终无法处理的计算任务。尽管如此,除非我们谈论的是几万亿年(甚至更久),否则对于某些棘手的任务来说,这根本不是一个安全的假设。

传统计算机的致命弱点

事实是,像快速寻找非常大的整数的质因数这样的计算任务,即使是未来最快的传统计算机也可能无法完成。这背后的原因是,寻找一个数的质因数是一个具有指数增长的函数。什么是指数增长?让我们深入研究一下,因为这对于理解为什么量子计算机有如此大的潜力以及为什么经典计算机有所欠缺是非常重要的。

指数增长快速入门

随着你拥有的“东西”数量的增加,有些东西会以固定的速度增长,而有些东西会增长得更快。当增长相对于增长的总数变得更快(不恒定)时,那么它就是指数

指数增长是极其强大的。指数增长的一个最重要的特征是,虽然它开始时很慢,但它可以相当快地产生巨大的数量——通常是以令人震惊的方式。

如果没有例子的话,这个定义可能有点难以理解,所以让我们深入一个小故事。

有一个传说,一位智者得到了国王的奖赏,他要求统治者在棋盘的第一格放一粒米,第二格放两粒米,第三格放四粒米,以此类推。每个方块都要有两倍于前一个方块的谷粒。国王同意了他的请求,但很快意识到填满棋盘所需的大米超过了整个王国的数量,并将花费他所有的资产。

水稻指数增长:

任何正方形上的颗粒数量反映了以下规则或公式:

在这个公式中, k 是方块的数目, N 是方块上的米粒数目。

  • 如果 k = 1(第一个平方),那么 N = 2⁰,等于 1
  • 如果 k = 5(第五个平方),那么 N = 2⁴,等于 16。

这是指数增长,因为当我们从一个方块到另一个方块时,指数或幂会增加。

为了进一步概念化,我已经包括了一个关于指数函数的输入量的指数增长的图表。

如你所见,该函数开始时相对较慢,但很快就达到了传统计算机在输入足够大的情况下无法计算的数值。

实指数函数有实结果

好了,故事讲够了。让我们继续讨论现实世界中的指数问题,就像我们之前讨论的那样。质因数分解。

坐 51 号车。看看你需要多长时间找到两个唯一的质数,你可以乘在一起生成它。如果你熟悉这类问题,你可能只需要几秒钟就能发现 3 和 17 都是质数,都等于 51。事实证明,这个看似简单的过程是数字经济的核心,也是我们最安全的加密类型的基础。我们在加密中使用这种技术的原因是,随着质因数分解中使用的数字变得越来越大,传统计算机分解它们变得越来越困难。一旦你达到一定的位数,你会发现即使是最快的传统计算机也需要几个月、几年、几个世纪、几千年,甚至无数个世纪才能将它分解。

有了这种想法,即使在可预见的未来,计算机的处理能力继续每两年翻一倍(不要打赌),它们也将永远与质因数分解作斗争。现代科学和数学核心的其他同样顽固的问题包括某些分子建模和数学优化问题,这些问题可能会使任何敢于靠近它们的超级计算机崩溃。

下面是 IBM Research 的一个很好的例子,展示了我们可以在世界上最强大的超级计算机上模拟的最复杂的分子(F 团簇)。正如你所看到的(在图像的左下方),这种分子一点也不复杂,如果我们想要模拟更复杂的分子以发现更好的药物治疗并了解我们的生物学,那么我们将需要一种不同的方法!

Molecular Simulation Problem. Source: IBM Research

进入量子计算机

传统的计算机是严格数字化的,完全依赖于经典的计算原理和特性。另一方面,量子计算机是严格的量子。因此,他们依靠量子原理和特性——最重要的是叠加 和纠缠 ——这使得他们几乎不可思议的能力与众不同,以解决看似不可逾越的问题。****

叠加

为了让叠加的概念有意义,让我们考虑一个最简单的系统:一个双态系统。一个普通的、经典的双态系统就像一个开/关开关,总是处于一种状态(开)或另一种状态(关)。然而双态量子系统完全是另外一回事。当然,无论何时你测量它的状态,你都会发现它确实不是开就是关,就像一个经典系统一样。但是测量之间,一个量子系统可以同时处于开态和关态的叠加,不管这是多么违背直觉,甚至是超自然的,这在我们看来可能是这样。

Superposition. Source: IBM Research

一般来说,物理学家认为在测量之前谈论量子系统的状态是没有意义的,比如它的自旋。一些人甚至认为测量一个量子系统的行为导致它从一个不确定的黑暗状态崩溃到你测量的值(开或关,升或降)。虽然可能无法想象,但无法回避的事实是,这一神秘现象不仅是真实的,而且带来了解决问题能力的新维度,为量子计算机铺平了道路。牢记叠加的思想。我们一会儿将回到如何在量子计算中使用它。

叠加是如何实现的已经超出了本文的范围,但是相信它已经被证明是正确的。如果你想理解是什么导致了叠加,那么你首先需要理解波粒二象性的概念。

纠缠

好的,接下来是量子力学的下一个特性,我们需要利用它来制造量子计算机。

众所周知,一旦两个量子系统相互作用,它们就变成无可救药的 纠缠 伙伴。从那时起,一个系统的状态将为您提供关于另一个系统状态的精确信息,无论这两个系统相距多远。说真的,这两个系统可能相距光年远,但仍能给你关于彼此的精确而即时的信息。让我们用一个具体的例子来说明这一点,因为这甚至引起了爱因斯坦对这怎么可能的困惑。(爱因斯坦将这种现象称为“幽灵般的超距作用”)

Quantum Entanglement. Source: IBM Research

假设你有两个电子,A 和 b。一旦你让它们以正确的方式相互作用,它们的自旋就会自动纠缠在一起。从那时起,如果 A 的自旋是向上,B 的自旋将是向下,就像跷跷板上的两个孩子,只不过即使你把 A 和 B 带到地球(或银河系,就此而言)的两端,这也是成立的。尽管它们之间相隔数千英里(或光年),但事实证明,如果你测量 A 的自旋向上,你会立刻知道 B 的自旋是向下。但是等等:我们已经知道,这些系统没有自旋等状态的精确值,而是在测量之前以一种模糊的叠加状态存在。那么,我们测量的 A 实际上是不是导致 B 瞬间坍缩到相反的值,即使两者相距光年?如果是这样的话,那么我们还有另一个问题要解决,因为爱因斯坦告诉我们,两个系统之间的因果影响,比如光信号,都不会超过光速。那么是什么原因呢?总而言之,我们真的不知道。我们只知道量子纠缠是真实的,你可以利用它创造奇迹。

量子位

量子位在量子计算中扮演的角色与在经典计算中扮演的角色相同:它是信息的基本单位。然而,与一个量子位相比,比特是完全无聊的。尽管比特和量子位都产生两种状态之一(a 01 )作为计算结果,但在计算结果之前,一个量子位可以同时处于0 和 1 两种状态。如果这听起来像量子叠加,它就是。量子位是卓越的量子系统。

正如传统计算机是由组成的量子位一样,量子计算机是由处于自旋状态的电子组成的,自旋状态要么是向上要么是向下(当然,一旦测量出来)。正如处于开/关状态的晶体管串在一起形成在数字计算机中执行经典计算的逻辑门,处于上/下自旋状态的电子串在一起形成在量子计算机中执行量子计算的量子 。然而,将单个电子串在一起(同时保持它们的自旋状态)说起来远比做起来容易。

Quantum Algorithms. Source: IBM Research

我们今天在哪里?

当英特尔正忙于生产每片拥有数十亿个晶体管的传统芯片时,世界领先的实验计算机科学家们仍在努力建造拥有多种量子位的量子计算机“芯片”。为了让你知道我们在量子计算的历史上有多早,这是一件大事,最近 IBM 推出了世界上最大的量子计算机,它有一个惊人的……等等……50 个量子位。尽管如此,这只是一个开始,如果摩尔定律适用于量子计算机,我们应该在几年内达到数百台,几年后达到数千台。十亿?我不会屏住呼吸,但话又说回来,你不需要 10 亿个量子位就能在一些关键类别上胜过传统计算机,例如素数分类、分子建模和一系列优化问题,这些都是当今传统计算机无法解决的。

2018 年的量子计算机

尽管如此,截至目前,几乎每台量子计算机都是一个价值数百万美元的近乎疯狂的科学家项目,看起来也是其中的一部分。你通常会在 IBM 等大型 IT 公司的研发部门,或者麻省理工学院等大型研究型大学的实验物理学部门找到他们。它们必须被超冷到绝对零度以上(这比星系间空间还要冷),实验人员需要使用精确频率的微波与计算机中的每个量子位单独通信。不用说,这是不可扩展的。但最早的传统计算机的真空管也没有,所以我们不要太苛刻地判断这第一代。

等待突破的障碍

量子计算机尚未成为主流的主要原因是,世界上最优秀的头脑和发明家仍在与高错误率和低数量的量子位作斗争。当我们一起解决这两个问题时,我们将快速增加 IBM 所谓的每台计算机的“量子量”,这是一种可视化量子计算机可以执行的有用计算量的方式。

Quantum Volume. Source: IBM Research

简而言之,为了让量子计算起飞,让量子驱动的 Macbooks 开始从货架上飞起来,我们需要更多的量子位和更少的错误。这需要时间,但至少我们知道我们的目标是什么,我们面临的是什么。

神话 vs 解释

虽然我们知道量子计算机可以轻松地做任何常规计算机做梦都想不到的事情,但我们并不真正知道它们是如何做到的。如果这听起来令人惊讶,鉴于第一代量子计算机已经存在,请记住单词 quantum 。我们已经用量子力学解决问题一个世纪了,我们仍然不知道它是如何工作的。量子计算作为量子家族的一员,也是同病相怜。迈克尔·尼尔森(基本上是写了这本书)和令人信服地争辩说,任何关于量子计算的解释都注定会失之交臂。毕竟,根据尼尔森的说法,如果对量子计算机如何工作有一个简单明了的解释(也就是说,你可以将它可视化),那么它就可以在传统计算机上进行模拟。但是如果它可以在传统计算机上模拟,那么它不可能是量子计算机的精确模型,因为量子计算机按照定义做传统计算机做不到的事情。

根据尼尔森的说法,最流行的假装解释量子计算的神话叫做量子并行。因为你会经常听到量子并行性的故事,所以让我们来看一下。量子并行背后的基本思想是,量子计算机与传统计算机不同,它同时探索所有可能的计算结果/解决方案(即在一次操作中),而数字计算机必须缓慢前进,依次查看每个解决方案。根据尼尔森的说法,量子并行性故事的这一部分大致正确。然而,他尖锐地批评了故事的其余部分,它继续说,在调查了所有解决方案后,量子计算机挑选出了最好的一个。根据尼尔森的说法,现在那个是一个神话。他坚持认为,事实是,像所有量子系统一样,量子计算机在幕后真正做的事情完全超出了我们的能力范围。我们看到了输入和输出,其间发生了什么是神秘的。

如果你喜欢这篇文章,我会非常兴奋,如果你点击拍手按钮:)或与你好奇的朋友分享。我在我的个人博客(jasonroell.com)上有更多类似的东西,或者你可以订阅我的媒体简介,让我一写完文章就发给你!(多牛逼?!)

无论如何,再次感谢你的阅读祝你有美好的一天!

可靠性是精确的新定义

原文:https://towardsdatascience.com/the-netrrobility-is-a-newsigation-of-exactual-¹-c7a62010b6af?source=collection_archive---------11-----------------------

一个机器人写了这个标题。它是由递归神经网络生成的。我用互联网档案馆的回溯机抓取了 Medium 的头条页面上过去一个月所有热门内容的标题。关于 WaybackMachine 的 API 的更多信息可以在这里找到,我收集媒体标题的 Python 代码这里找到,生成标题的完整列表这里找到。(手指交叉这篇博文迅速走红🤞)

一些 伟大的 例子的启发,我开始自己学习如何做这件事。这篇博客文章将详细介绍所需的软件,提供如何使用代码的说明,并展示一个使用来自 DBLP 的计算机科学出版物标题的例子,这是一个在线计算机科学参考书目。TL;DR —跳到“有趣的东西”来检查生成的标题。

本质的

如果你想在家里尝试这个,你需要安装 torch-rnn (改编自 char-rnn )。设置可能需要一些工作。我强烈推荐 Jeffrey Thompson 的教程在 Mac 上安装。torch-rnn 和 char-rnn 都实现了递归神经网络 (RNNs),给定训练数据(一组字符序列)学习生成文本,一个字符接一个字符。安德烈·卡帕西在这里有一篇非常详细的博客文章。

在设置好 torch-rnn(上面教程中的步骤 1-5)之后,我从 DBLP 出版物索引下载了最新的 dblp.xml.gz 文件。计算机科学出版物的这个数据集将用于训练我们的 rnn。DBLP 将其数据打包成一个巨大的 XML 文件。因为我们只需要这些出版物的原始标题,所以我们需要做一些数据预处理来抓取相关的标题。

在这里,我将从三个特定的计算机科学会议中选择会议录。通过这种方式,我们可以跨研究主题比较和对比生成的标题。我选择了知识发现与数据挖掘会议(KDD)神经信息处理系统会议(NIPS)计算系统中人的因素会议(池)。

为了得到这些会议记录的标题,我写了这个 Go 脚本。如果你想运行它,你需要安装 Gogo 获取序言中的包。该脚本接受会议的命令行参数:

>>> go run dblp.go "chi"
2017/09/12 20:01:34 Reading in DBLP gzipped file
2017/09/12 20:01:34 Decoding all proceedings from file
2017/09/12 20:03:23 Done decoding
2017/09/12 20:03:23 Number of CHI titles: 13885 Average title length: 67.01498019445445
2017/09/12 20:03:23 Output data to chi.txt

现在,确保您的chi.txt文件位于您的本地副本 torch-rnn 的数据文件夹中。(以下步骤对应于 Jeffrey Thompson 教程中的步骤 68。)要为 RNN 准备数据,请运行:

python scripts/preprocess.py \
--input_txt data/chi.txt \
--output_h5 data/chi.h5 \
--output_json data/chi.json

接下来,要训练您的神经网络,运行如下内容:

th train.lua -input_h5 data/chi.h5 -input_json data/chi.json -seq_length 60 -batch_size 1 -gpu -1

(还有更多可以指定的命令行标志。)这一步会花很长时间,而且“你的电脑会变得很热”但是一旦这些都完成了,你就可以从你的 RNN 取样了:

th sample.lua -checkpoint cv/checkpoint_581150.t7 -length 2000 -gpu -1 -temperature 0.1 > data/chi_sample.txt

length标志对应于你想要输出多少字符,而temperature标志指定了你希望你的神经网络输出在 0-1 范围内有多新颖。更高的温度会产生很多废话,更低的温度会产生很多重复。

有趣的东西

好了,现在让我们考虑一下我们貌似合理的 KDD,日本和中国的头衔。请记住,当从我们的递归神经网络中采样时,我们可以指定我们希望输出有多新颖。我将展示这里选择的三个会议的两个极端。

KDD 是关于知识发现和数据挖掘的会议,如果我们要求我们的 RNN 生成一个可预测的标题(temperature = 0.1,那么结果是相当可预测的:

请注意许多对数据挖掘分布式计算顺序挖掘的引用,这是该研究领域的典型。如果我们给我们的 RNN 更多的创作自由,一些古怪的标题就会产生:

这里有一些看似可信的 KDD 头衔的大样本,分别是低创造力的 T8 和高创造力的 T10。

接下来,NIPS 上覆盖的研究主题,关于神经信息处理系统的会议,包括机器学习(特别是神经网络)和人工智能。以下是一些低创造力的标题:

正如我们所料,出现了许多对神经元随机梯度下降的引用。同样,如果我们增加temperature,我们可以产生一些非常古怪的标题:

点击这里查看貌似合理的 NIPS 头衔的完整样本:高创造力和低创造力

最后,CHI,计算系统中人的因素会议,是一个关于人机交互的会议。第一,低创意标题:

同样,这些标题有一定的意义。注意互动的许多表象,“的研究”和“的效果”。(后两者仅从 CHI 2017 就返回了 18 个标题。)和现在更有创意的标题:

这里可以找到关于低创造力高创造力似是而非的 CHI 标题的完整样本。

一般来说,这个练习证实了如果你给你的机器学习算法提供有偏见的数据,你会得到有偏见的结果。在这里,我们使用这些有偏见的结果来比较和对比不同会议的标题风格。我希望这个例子是有趣的,并且激励你去尝试 torch-rnn。

脚注

1:其他更合适的标题可能是:“数据科学家学会了一个很酷的技巧,”或者“内容战略家讨厌这个女人。”我曾经写过关于 clickbait 的文章;你可以在这里阅读《T4》。谁知道呢,你可能会用一个简单的技巧快速减肥。

2: 这个对于一台机器来说,独立编写是一个特别可怕的条目。

stackoverflow 上的 R/python 问题网络

原文:https://towardsdatascience.com/the-network-of-r-python-questions-on-stackoverflow-8f7b149bbdbf?source=collection_archive---------3-----------------------

当人们在 stackoverflow 上问编码问题时,R 和 Python 分别有哪些主题是相互关联的?

直到 10 月 16 日,我在 stackoverflow 上使用了两个带有完整 RPython 问题的数据集。通过查看链接到不同问题的 240K R 标签和 1.8M Python 标签,我们可以基于标签的共现来检测主题集群。

大部分 R 题围绕 ggplot2,dataframe 和 shiny

network of tags on R questions with more than 150 co-occurence

我们可以看到 ggplot2 和 dataframe 这样的标签是如何分支到它们的子主题的:dataframe 与 csv(数据输入)、预处理库(reshape2、dplyr、data.table)以及条件和循环相关。ggplot2 与不同的图表元素、数据可视化和交互式闪亮仪表板相关。

为了更清楚地看到集群,我们可以给社区着色。

Clusters of R questions

通过统计单个标签的出现次数,我们可以知道 ggplot2 出现的次数最多,这表明 R 作为数据可视化工具的常见用法高于其他函数。

我们现在将研究 Python。

Python 问题主要围绕 django、熊猫和 numpy

接下来,我们来看看 Python 的问题。由于它的一般功能,它比 r 有更多的问题。

network of tags on Python questions with more than 800 co-occurrence

相似性我们可以快速浏览主题的主要社区。

clusters of python questions

这些话题在 Python 问题中出现得最多:django,pandas,numpy。

R/Python 问题的共性和差异

接下来,我研究了在不同场合与 R 和 Python 标签同时出现的标签。

Commonalities

我们可以观察共享主题,如数据帧、情节、循环和函数。那些特定于只在一种语言中可用的包的标签不会经常与 R 和 Python 标签同时出现。

我们还可以观察到只与 Python 或 R 标签一起出现的标签。

Differences

围捕

在这个分析中,我们分别可视化了 R 和 Python 问题中标签的共现,并比较了这两种语言中问题的共性和差异。

我今天学到的是如何计算和可视化共现。

获得共现的一种方法是计算二部图的关联矩阵,通过矩阵与其转置矩阵相乘将其转化为单模邻接矩阵。但是,这种方法可能会很慢。更好的方法是使用 join:

co_occurence = sqldf("SELECT a.Tag a, b.Tag b, COUNT(*) cnt
FROM  df a 
JOIN df b 
ON b.Id = a.Id AND b.Tag > a.Tag
GROUP BY a.Tag, b.Tag")

这是我关于数据科学和视觉故事的# 100 日项目的第 37 天。完整代码在我的 github 上。感谢阅读。欢迎新主题的建议和反馈。

数据科学的新时代

原文:https://towardsdatascience.com/the-new-age-of-data-science-725c7b27ac08?source=collection_archive---------8-----------------------

GDPR 将如何改变数据科学,挑战公司的创造力和增长。

Big Data is Watching You, GDPR is Watching Big Data, but who is Watching GDPR?

随着 GDPR(通用数据保护法规)风暴逐渐平息,每个人都回到了工作中,我仍然花了大部分时间讨论数据科学在未来几年将受到怎样的影响。

如果你不熟悉 GDPR,欧洲议会和欧盟理事会在欧盟法律范围内对欧盟和欧洲经济区内所有个人的数据保护和隐私实施了一项法规。GDPR 的主要目标是让公民和居民控制他们的个人数据,并通过统一欧盟内部的法规来简化国际业务的监管环境。

数据科学家如何增加价值

在过去几年中,数据科学家的角色一直在快速增长。随着数据的爆炸式增长,基于云的技术以及机器学习和人工智能的应用,数据科学家增加价值的方式包括让管理层和官员能够做出更好的决策,挑战员工使用实验来测试假设和创建数据驱动的方法,以及为了营销和商业目的确定和细化目标受众。

GDPR 和数据科学有什么关系

随着越来越多的公司建立数据科学团队,GDPR 的引入将对数据科学的使用方式产生巨大影响。在大多数情况下,大量的数据被存储和处理,以提供对底层数据的洞察。但随着数据科学家正在建立能够自动决策的模型,公司将被要求考虑他们正在制定的流程,以及它们是否违反 GDPR。几个简单的概念可以对数据科学家的工作产生重大影响,例如假名化。

假名化 是指转换个人数据的过程,在不使用额外信息的情况下,所产生的数据无法归属于特定的数据主体。对于许多企业来说,收集姓名、地址、电子邮件和其他信息是构建为企业创造直接价值的模型的基础。从创建群组以确定生活在特定区域的哪一组用户将受益于即将到来的比萨饼促销,到阻止源自特定国家的与非传统名称或其他个人属性相结合的欺诈性卡交易。

除了担心处理数据的法律依据、证明符合 GDPR 法案并采取必要措施通过设计和默认来保护数据之外,数据科学家还必须开始构建非常有力的案例,说明他们为什么要访问和使用特定的用户数据,同时要记住,他们可能需要提供访问权限或删除数据,这可能会对他们的算法结果产生很大影响。

数据科学家将如何处理数据

不像许多人,我实际上拥抱 GDPR,因为。首先,因为作为许多数字服务的用户,我喜欢这样一个事实,即如果我决定离开一项服务,我可以对我的数据有更多的控制权,我可以删除(或请求删除)我的数据。

作为一名数据科学家,我实际上接受了挑战。首先,我将不得不考虑我想要建造什么,这将从法律角度受到挑战,这实际上是一件好事。对于经常想要“摆弄”数据或从各种来源导入数据的数据科学家来说,推出一项功能或产品最终会让他们的首席执行官在一群立法者面前为他们的行为辩护。

我喜欢它的另一部分是,GDPR 将挑战更多的数据科学家与开发和开发人员互动。仅仅考虑架构、处理服务器的位置以及如何实现假名化或完全匿名化,就需要数据科学家学习新概念,甚至可能找到新的做事方法。

您或您的组织可以做些什么来从数据科学中获益?

因此,您可能想知道,我能做些什么来确保我的数据科学家遵守 GDPR,但仍有自由开发数据驱动的功能,这些功能是使您的公司与众不同所必需的。

根据您所从事的业务类型,任命数据保护官是了解您的公司将受到的限制的最佳方式。

下一步是让数据科学家、首席技术官(或 IT 主管)和数据保护官聚在一起,讨论数据科学家目前正在进行的项目以及未来计划进行的项目。通过弄清楚将需要什么,您可以开始查看将涉及的过程和数据。

大多数公司会发现,如果他们雇佣了有能力的人,他们已经想好了大部分事情,只需要做一些小的改变。至于数据科学家,我会鼓励他们接受对法律方面的学习,以便这将成为他们自己思考和决策的一部分,并与你的技术团队和开发人员坐得更近一些,试图找出你可以做些什么来构建你心目中的惊人产品和功能。

感谢阅读;),如果你喜欢它,请点击下面的掌声按钮,这对我意义重大,也有助于其他人了解这个故事。让我知道你的想法,联系推特或 T2 的 Linkedin。或者关注我,阅读我关于数据科学、支付和产品管理的每周帖子。

新的权力集中

原文:https://towardsdatascience.com/the-new-concentrations-of-power-db5dcd483a19?source=collection_archive---------12-----------------------

人们很容易认为权力是不会真正改变的东西,世界可能会改变,但支配、剥削和控制仍然不变。然而,正如过去十年令人不安的经济洪流一样,最近的社会、技术和政治动荡正在削弱我们对世界运行方式的许多既定观念。

在科技巨头、网络犯罪、算法、社交媒体、加密货币等不断变化的复杂背景下,权力的突变似乎超出了人们的理解。卡尔米勒这本可读性极强的新书正是潜入了如此深的水域。 《诸神之死:新的全球权力 Grab 这本书并没有试图在一个宏大的尺度上对权力进行理论化,它也不是一个自上而下的综合观点,相反,它提供了一系列关于权力如何在技术驱动的人际关系中运作的故事。

这本书让我们看到了幕后的种种景象。在一个引人注目的部分,我们发现使用现成的勒索软件是多么令人惊讶地容易——只需要很少的技术知识就可以发起攻击。正如米勒所言,“这是现成的、点击式的、下拉菜单式的按需网络犯罪”。甚至有一个帮助按钮,如果你需要一些进一步的指导你的攻击。可及性本身就令人不安。米勒在其他地方观察到,对于黑客来说,“现实已经成为一种游乐场”。他在这里的观点是,如果有人能够理解和操纵技术,他们也可以操纵,或者用他们自己令人不安的术语来说,“拥有”世界。另一方面,在与熟悉的科技巨头打交道时,米勒仍然能够提供惊人和不同寻常的一瞥。与一个编码者和他们的算法的相遇,对脸书校园的描述,对一个开源竞争者的讨论,以及对目标技术的阐述,都增加了新的视角,尽管这些巨石已经得到了深度的覆盖。

在这些见解的启发下,分散化的问题在整本书中再次出现。对米勒来说,这里的重要问题是分散的结构仍然会导致权力的集中或集中。回到这个话题,在他对区块链的讨论中,米勒指出,“仅仅因为一个系统是分散的,并不意味着权力是分散的”。因此,区块链的治理结构可能没有中心,但这并不意味着权力会随之而来。从这一点出发,米勒认为,只有那些拥有正确的“技术常识”的人,也就是一小群人,才能充分利用这一优势。米勒总结说,在“集中与分散”的战争中,技术的“架构”是至关重要的。

在媒体领域,也发现了类似的紧张局面。米勒再一次给我们熟悉的关于公民新闻的讨论带来了一种新的目的感,在这种情况下,他探索了这些激增的媒体渠道中的新守门人。认识到在一个任何人都可以创造内容的环境中,米勒探索了那些有权力操纵我们的反馈并让我们听到声音的人。这不可避免地引发了对定向广告的讨论,这种广告的基础是购买某些类型的人的注意力,而不是特定出版物中的空间,以及这种转变对媒体行业造成的损害。关于媒体变化的更大的故事通过采访一个自称“痛苦的黑客”和一个假新闻商人而进一步充实,他实际上看起来并不那么痛苦。米勒并不是说前数字媒体没有问题,而是说权力在媒体内部和通过媒体运作的方式正在发生变化。正如我们所看到的,公众辩论也随着它们而改变。

我们最终看到的是一种越来越分散的权力。这是一种分散在各种技术中的力量,由拥有正确技术知识的人所拥有。在这种视野中,意识形态和霸权的问题滑入社会生活的裂缝中,在米勒的描述中,这些权力的旧化身似乎从人们的视线中消失了。剩下的是精通技术的演员和他们新发现的突出。这告诉了我们一些关于新的可能性,但不太了解这些新的权力结构如何与旧的和更成熟的权力结构相结合。有时也不清楚我们所看到的实际上是权力本身,而是可以被认为是在社会生活的残骸中上演的影响、操纵、诈骗和胁迫的形式。对什么是权力(什么不是权力)缺乏认识,使得这些故事流传甚广。然而,米勒的目标并不是一种新的权力理论,这本书的价值在于它的见解可能如何困扰这些理论,并扩展我们对正在出现的错综复杂关系的理解。这就提出了一个问题,即权力理论如何应对米勒在书中巧妙阐释的权力基础的变化。

《数据凝视:资本主义,权力&感知 可供预购,将于 11 月出版。

我们时代的新闻

原文:https://towardsdatascience.com/the-news-of-our-times-f8e5fdc0999a?source=collection_archive---------4-----------------------

Photo by Roman Kraft on Unsplash

介绍

假新闻是 2016 年美国总统大选后这些天非常热门的话题。脸书和谷歌正在用自己的行动来减少假新闻的传播,包括降低搜索结果的排名和拉广告资金[ 12 ]。在没有彻底核对声明的情况下自动标记假新闻的技术挑战——目前只有人类才能完成这项任务——是防止假新闻传播的严重障碍。有机会解决这个独特而具有挑战性的(现实世界)问题让我兴奋不已,我找到了解决以下项目的灵感。

项目目标

我的项目分析了 2016 年 8 月 26 日至 2017 年 1 月 20 日期间脸书新闻页面的帖子,以探索选举对新闻类型的发布和参与的影响。其他支持项目目标包括:

  • 调查一些可以唯一识别共享的脸书新闻帖子是否来自主流、虚假、阴谋或讽刺来源的因素。我怀疑假新闻、阴谋新闻和讽刺新闻来源之间的差异是微妙的,因此,它们之间潜在的细微差异需要更仔细地检查,而不仅仅是检查主流和假新闻之间的差异。因此,多类检查优于二类检查(即假新闻和非假新闻)。
  • 利用新闻类型之间的差异来建立多类逻辑回归模型,该模型使用重要的一个或两个单词序列、也称为单字母组合和双字母组合、来自帖子消息的类型(例如“#neverhillary”、“follow american”)、参与活动的模式(例如,在帖子的脸书反应、分享和评论总数中喜欢的比例)、帖子附件的类型(例如,图像、视频、无等)来标记共享的脸书新闻帖子。),以及各种时间因素(即一周中的某一天、一天中的某个小时,以及选择的时间[即之前、当天或之后])。回归模型适用于本项目,通过检查哪些模型系数离零最远来确定最重要的模型特征。一个适当校准的模型的价值可以帮助脸书识别哪些帖子需要标记,以便采取行动阻止假新闻的传播,或者供计算记者用来跟踪与假新闻相关的问题,以履行未来的报道责任。

数据源

我的数据集是通过以下步骤组装的。2014 年 10 月 21 日,皮尤研究中心发布了一份主流新闻网站列表,名为《政治两极分化&媒体习惯:从福克斯新闻频道到脸书,自由派和保守派如何跟上政治。皮尤的研究发现,公众更信任的知名消息来源也在名单之列。
2。两个来源被用来生成虚假、阴谋和讽刺新闻网站的列表。梅里马克学院的 Melissa Zimdars 博士编制的一份虚假、阴谋和讽刺新闻来源列表,与 2016 年 10 月和 11 月编制的虚假新闻 Kaggle 数据集中相应目标类型和未知类型的新闻来源列表进行了交叉检查,使用了来自 Daniel Sieradski 的 BS(“胡说”)检测器 Chrome 扩展。在 Zimdars 博士的列表中被列为虚假、阴谋和讽刺的所有新闻源都被检查脸书页面,除非新闻标签与 Kaggle 数据集中源的新闻标签明显冲突。为了专注于美国媒体,各种已知的外国页面被排除在外,尽管所有的外国页面并没有完全消除。
3。所有的新闻发布都是通过
脸书图表 API 从主流、虚假、阴谋和讽刺来源的脸书页面中检索的。

假设

  • Melissa Zimdars 汇编的名单中有脸书的帖子,从整体上看,这些帖子与指定的类别一致。主流新闻报道包含准确的信息,旨在让读者了解时事。假新闻包含不准确的信息,旨在误导读者。共谋不包含可以通过未知或不明显的意图进行验证的信息。讽刺作品可能包含不准确的信息和/或未经证实的信息,目的是为了迎合或娱乐读者。
  • 彻底交叉检查和验证声明/账户有效性的代理,即良好的新闻报道,并推断意图可以预测新闻的类型。
  • 当对新闻类型的曝光率变化并且依赖于之前用户对脸书信息的参与度时,建立在偏斜样本上的模型可以用于准确地对现实世界中的新闻进行分类。
  • 每一个脸书新闻邮报可以充分,适当地分配到一个独特的类别。
  • 新闻类型的概率的对数相对于模型参数是线性的。

导入、清理和合并数据

在执行探索性数据分析(EDA)之前,采取了以下步骤来下载和清理数据。帖子信息通过脸书的 Graph API 编译到一个本地驱动器,通过修改另一个程序员提供的 Python 代码。从脸书提取的数据包括帖子信息、链接标题、链接类型、发布日期,以及评论、分享、喜欢、喜爱、wows、hahas、sads 和 angrys 的个人计数。
2。从现有数据集中生成额外的数据列,或者与已知信息合并以形成更详细的最终数据集,该数据集还显示脸书页面 id、新闻页面类型(即主流、虚假、阴谋或讽刺)、星期几、小时、选举时间以及所有用户参与活动的总和(即评论、分享、喜欢、喜爱、wows、hahas、sads 和 angrys 的总和)。
3。所有文本都从 unicode 格式转换为字符串格式。
4。99 个职位被确定为多余的(占总数的 0.04%),因此被删除。
5。从帖子中删除了所有 URL,以避免在从帖子中识别重要的字母组合和双字母组合时进行选择。

从脸书消息文本中生成重要的字母组合和二元组合是目标中描述的模型的关键部分。具体来说,从 post 消息中生成重要的字母组合和二元组合的列表遵循三个步骤。首先,使用计数矢量器生成每种新闻类型最常见的 6,000 个单词的四个列表。接下来,考虑到来自脸书帖子的消息集合,计算代表脸书消息中的单词的重要性的值(也称为单词的频率逆文档频率(TF-IDF )),并且选择具有最高 TF-IDF 分数的 6000 个单词。通过只选择经常使用的词,单词的数量再次减少,但在四种新闻类型中只有一种使用独特的词。结果列表只包含 793 个单词。该列表进一步缩减到 470 个单词,以删除无意义的单词或与单个页面密切相关的单词(例如,页面名称或特定新闻节目的主持人)。

探索性数据分析

以下部分探讨了数据集的特征,以更好地理解预测器在最终模型中的表现。

最终数据集包括来自 129 个脸书页面的超过 27.4 万篇帖子和超过 9 亿次参与活动。尽管数据集中主流站点的数量很少,但主流帖子是第二常见的帖子类型(图 1 和图 2)。

Figure 1

Figure 2

此外,无论新闻类型如何,只有少数页面发布并获得了大部分参与度(图 3)。基于这一观察,我预计一个建立在现有的倾斜数据集上的模型,对于拥有最多帖子和最高参与度的网站来说,会表现得更好。

Figure 3

现在,模型预测的具体特征是关于职位和参与活动的探讨。如果我观察到不同类型新闻的帖子模式在各种模型预测方面的差异,我希望它们在最终模型中反映为相对于零的高正或负模型系数。

为了开始评估模型预测值,我调查了不同新闻类型的帖子附件和参与度的频率。经过检查,所有类型的新闻都比任何其他类型的附件更频繁地包含带有链接的帖子,并且除了共谋之外,所有其他类型的附件都显示链接获得了最高的参与百分比(图 4)。然而,关于第二种最常见的附件类型,与所有其他类型的新闻相比,主流页面更频繁地将视频附加到帖子上。因此,与所有其他类型的新闻视频的系数相比,我预计该模型对于主流视频具有相对较高的系数。

Figure 4

接下来,我调查了与美国总统选举相关的帖子的频率和参与度。我观察到,帖子数量的最大变化发生在选举后假新闻的减少,这在很大程度上是由于前三个最多产页面的帖子数量减少(图 5 和图 6)。由于选举后假新闻帖子的百分比明显减少,我预计最终模型与总统选举后假新闻模型系数相比,总统选举前假新闻模型系数相对较高。然而,与假新闻相关的参与活动大幅增加,仅次于主流新闻的参与高峰,部分原因是主流帖子数量的增加(图 5)。主流新闻参与度的激增主要是由于 CNN、ABC News 和《今日美国》的帖子参与度相对较高(图 7)。

因此,我希望该模型能够显示出主流视频的系数与所有其他类型新闻的系数之间相对较大的差异。

Figure 5

Figure 6

Figure 7

对一周中各天的帖子频率和参与度的检查显示,无论新闻类型如何,周六和周日的帖子数量和参与活动相对于一周中的其他日子都有明显下降(图 8)。由于一周内不同类型的新闻发布频率的变化很小,我预计该模型会显示出相对于该预测值相对较低的系数。

Figure 8

关于一天中的时间,当考虑到横跨美国 48 个州的四个时区时,无论新闻类型如何,帖子都在工作时间出现峰值(图 9)。不同类型的新闻在发布时间上的差异相对较小,讽刺新闻除外,它在早上 6 点到晚上 12 点(太平洋标准时间)之间出现了相当大的高峰。除了讽刺新闻之外,不同类型的新闻在一天的几个小时中的帖子模式几乎没有差异,与讽刺新闻的一天几个小时的模型系数相比,主流、虚假和阴谋新闻的一天几个小时的模型系数预计更接近于零。有趣的是,与发布时间相比,一天中的几个小时的参与水平似乎相对一致,这表明全球用户和/或美国深夜用户的广泛参与。相对于其他类型的新闻,阴谋网站的参与度似乎在所有时间都是最一致的,而讽刺页面的参与度在帖子最多的时候达到峰值,即早上 6 点到 7 点之间。

Figure 9

该模型还包括每种参与活动的预测因素。为了比较不同类型的新闻之间参与活动模式的差异,这种模型预测值是特定参与活动在响应帖子的总参与活动中所占的比例。下面是按新闻类型和参与度最高的页面对参与度活动的调查。

“赞”之后是“分享”是对帖子最常见的参与行为(图 10),尽管所有类型的新闻参与行为相对于平均值都有很大的变化。有趣的是,在所有类型的新闻中,讽刺作品的平均参与度位居第二,但总参与度最低。或许并不令人惊讶的是,与其他类型的新闻相比,讽刺类文章的平均点击数明显更高。此外,哈哈是个人讽刺页面中第二或第三常见的参与度反应(图 11)。因此,我希望最终的模型显示讽刺的哈哈模型系数,与所有其他类型的新闻的哈哈系数相比,相对较高。然而,需要更多的讽刺文章来更好地理解和比较其他类型的新闻,因为相对于所有其他类型的新闻,项目数据集包含的讽刺文章要少得多(图 10)。

经过进一步检查,还出现了其他模式。分享和评论是讽刺新闻页面或高度参与的主流新闻页面(如福克斯新闻频道)中第二或第三常见的参与行为。和美国有线电视新闻网,但在其余主流来源中,作为其他参与行为的一部分,相对不太常见(图 11)。在虚假和阴谋新闻中,分享再次成为第二常见的参与类型(有时是最常见的),回应虚假和阴谋帖子的分享比例似乎比主流和讽刺新闻中的分享比例更大。基于这些观察,我预计最终模型的虚假和阴谋页面的份额系数要高于主流和讽刺页面的份额系数。

Figure 10

Figure 11

模型中包含的其余预测因子是从每种新闻类型的帖子中选择的重要字母组合和双字母组合。选择这些 n 元语法是为了提取帖子中使用的最大数量的不同单词,以及每种类型的新闻中唯一的最常用的单词。尽管如此,根据新闻的类型,只有 2%(主流)到 29%(讽刺)的帖子包含信息文本。因此,考虑到训练集远小于训练数据集中的帖子数量,在模型中包含单字母组合和双字母组合有增加大量噪声的风险。因此,与之前讨论的模型预测值相比,与最终模型中重要的单字母组合和双字母组合相关的系数受到了更大程度的质疑,并且没有在模型评估中进行讨论。

EDA 摘要

  • 不管是什么类型的新闻,只有少数几个页面发布并获得了大部分参与度(图 3)。
  • 关于帖子中第二常见的附件类型,主流页面发布视频的频率高于所有其他类型的新闻(图 4)。
  • 发帖量的最大变化发生在选举后假新闻的减少,这在很大程度上是由于三大最多产来源的发帖量减少(图 5 和图 6)。
  • 无论是哪种类型的新闻,相对于一周中的其他日子,周六和周日的帖子数量和参与活动水平都有明显下降(图 8)。
  • 考虑到横跨美国 48 个州的四个时区,无论新闻类型如何,帖子在工作时间达到峰值(图 9)。
  • 也许不出所料,与其他类型新闻的平均点击数相比,讽刺类文章的平均点击数明显更高(图 10)。
  • 回应虚假和阴谋帖子的比例似乎比回应主流和讽刺新闻的比例更大(图 11)。

模型结构

检验主要定量预测因子的相关性,以确定最终模型中正则化的适当设置。当检查相关性热图时,无论新闻类型如何,参与活动之间和/或时间段之间(即一周中的小时或天)都没有出现强相关性(图 12)。因此,在最终的模型中,使用套索进行正则化似乎是一个合适的设置。

在评估每种类型新闻的相关性时,主流新闻在哈哈和评论之间具有相对较高的相关性(正相关[+])、生气和评论(+)、哇和分享(+)、喜欢和喜欢(+)、喜欢和评论(负相关[-])、喜欢和分享(-)、哇和喜欢(-)、哈哈和喜欢(-)、伤心和喜欢(-)、生气和喜欢(-)(图 13)。假新闻在愤怒和评论(+)以及喜欢和分享(-)之间具有相对较高的相关性。此外,讽刺新闻有相对较高的相关性,如和份额(-)。

Figure 12

Figure 13

在这个项目中选择了一个逻辑回归模型,以便使用分类和数字预测器按类型对新闻进行分类。与朴素贝叶斯等其他模型相比,回归模型生成的系数具有指示预测值相对重要性的量值。Scikit-Learn 中逻辑回归模型的所有默认设置都保持不变,除了 lasso 正则化的说明(如上所述)和模型收敛的最大迭代次数的增加。

模型结果和评估

最终的模型取得了很大的成功。在测试数据集上实现了 57%的平均准确率,测试训练分割为 30%-70%,这相当于比基线增加了 16%。受试者操作特征(ROC)曲线下的区域看起来也非常好,该曲线显示了代表每种类型新闻的个体准确性得分的区域。这些区域的范围从 74%(虚假和阴谋)到 86%(讽刺),当大于 50%时表示模型成功(图 14)。因此,当依靠由 Melissa Zimdars 博士编制的来源列表来从特定的帖子特征预测《脸书邮报》的新闻类型时,实现了可量化的成功程度。

Figure 14

尽管如此,这个模型还是显示出明显的弱点。精确度(即一种类型的新闻的正确预测占该类型新闻的总预测的百分比)和召回率(即一种类型的新闻的正确预测占真实存在的新闻的总类型的百分比)分别在 53%(讽刺)和 70%(阴谋)之间以及 8%(阴谋)和 77%(虚假)之间。如图 15 所示,低召回值是由于模型预测大多数阴谋和讽刺文章是主流和虚假的。

Figure 15

从页面级别的角度来看,当观察几乎所有高容量和低容量的阴谋和讽刺页面错误地预测正确预测数的数倍时,这些低召回率结果是明显的(图 16)。Fprnradio(阴谋)和 NewsThump(讽刺)是这种情况下的例外,不正确和正确的计数相对接近。Elmundotoday(讽刺)和 theunrealpage(讽刺)也是例外,正确的预测计数至少是错误计数的两倍。

尽管所有类型的新闻都只有少数来源发布了大部分总量并获得了大量参与(图 3),但该模型并没有过度适应最多产或参与最多的页面的特征。使用测试数据集,对按页面分类和错误分类的帖子的审查证实了这一观察。高容量和低容量的虚假和主流新闻页面被分类为真实类别的频率高于误分类(图 16),即分别占帖子的 77%和 70%(图 15)。《纽约客》(主流)是一个例外,错误分类略多一些(图 16)。此外,几乎所有高容量和低容量阴谋和讽刺页面的帖子都被错误分类,比正确分类的帖子多几倍。

Figure 16

总体而言,最高的模型系数在很大程度上与参与类型相关(前二十个系数中的 60%,即四种新闻类型中每一种的最高五个系数)(图 17)。下面列出了按新闻类型划分的最高模型系数。在为每一类新闻列出的系数中,最明显的是和||.指示该系数值在具有相同符号(+或-)的另一种类型的新闻的相应系数中是最高的。||表示与^相同的意思,但是不考虑这个符号。

  • 主流新闻:喜欢(+2.141 |^|,即主流新闻的喜欢系数值的绝对值大于所有其他类型新闻的喜欢系数)、评论(+1.122 |^|)、sads (+1.064 |^|)、neverhillary (-0.772 |^|)、angrys (+0.622 ^,即主流新闻的 angrys 系数的正值大于任何其他类型新闻的任何正 angrys 系数的值)
  • 假新闻:萨德(-0.528 ^),总统巴拉克(-0.344 ^),视频附件(-0.344 ^),喜欢(-0.339 ^),追随总统(+0.327 ^)
  • 阴谋新闻:评论(-0.404 ^),哈哈斯(-0.307 ^),旅游门票(+0.294 |^|),巴拉克总统(-0.283),喜欢(-0.269)
  • 讽刺新闻:安格里斯(-1.993 |^|),哈哈斯(+0.725 |^|),爱(-0.696 |^|),喜欢(+0.672),内韦尔希拉里(-0.549)

Figure 17

根据上述 EDA 中记录的观察结果评估模型系数值,以进一步评估模型的性能。这些评估总结如下:

  • 如上所述,主流页面发布视频的频率高于所有其他类型的新闻(图 4)。在检查模型系数时,这一观察结果反映在主流视频的模型系数(0.403)相对较高,而其他类型新闻的视频系数(-0.344 至 0.032)(图 17)。
  • 选举后,假新闻帖子的比例明显下降(图 5)。这一观察结果反映在总统选举前的假新闻系数比总统选举后的假新闻系数相对较高(反映为总统选举后假新闻系数下降了 4.5%)。
  • 此外,正如预期的那样,由于一周中不同类型的新闻中的帖子频率变化很小(图 8),一周中各天的模型系数在不同类型的新闻中变化很小(即在-0.078 到 0.080 之间)。
  • 正如所料,除了讽刺新闻(图 9)之外,不同类型的新闻在一天的几个小时内的帖子模式几乎没有差异,与讽刺新闻的模型系数(-0.138)相比,主流、虚假和阴谋新闻的一天几个小时的模型系数相对较低(-0.025 至 0.059)。
  • 该模型还证实了或许是最不令人惊讶的观察结果。也就是说,与其他类型新闻的平均点击数相比,讽刺文章的平均点击数明显更高(图 10)。这一观察结果反映在讽刺的哈哈模型系数(0.725)相对于所有其他类型新闻的哈哈系数(-0.307 到 0.394)较高(图 17)。
  • 在审查份额系数时,假新闻(0.036)和阴谋新闻(0.162)的数值实际上低于主流新闻(0.615)和讽刺新闻(0.183)。从页面层面来看,这一结果与预期相矛盾,预期是基于观察到高参与度虚假和阴谋帖子的份额比例高于高参与度主流和讽刺帖子的份额比例(图 11)。然而,在进一步检查后,主流和讽刺新闻的平均份额实际上高于虚假和阴谋新闻的平均份额(图 10),因此,最初的预期是相反的。

结论

  • 当依靠由 Melissa Zimdars 博士编制的来源列表来从特定的帖子特征预测《脸书邮报》的新闻类型时,实现了可量化的成功程度。在测试数据集上实现了 57%的平均准确性,测试序列分割为 30%-70%,比基线增加了 16%,ROC 曲线下的区域表明测试数据集上的模型表现良好(图 14)。
  • 测试数据集上的低召回值是由模型预测大多数阴谋和讽刺帖子为主流和虚假帖子造成的(图 15 和图 16)。
  • 尽管所有类型的新闻只有少数来源发布了大部分总量并获得了大量参与(图 3),但该模型并没有过度拟合最多产或参与最多的页面的特征,这在测试数据集上按页面对分类和错误分类的帖子进行的审查中得到证实(图 16)。
  • 总体而言,最高的模型系数主要与参与类型相关(图 17)。
  • 模型系数的值证实了 EDA 中描述的许多观察结果,包括主流新闻更频繁地发布视频(图 4),总统选举前后假新闻发布的变化(图 5),一周内不同类型新闻发布的低变化(图 8),以及讽刺新闻的独特特征(即一天中几个小时的独特发布模式以及与其他类型新闻相比每个帖子的平均哈哈数较高)(图 9 和图 10)。

未来的工作

  • 使用更多的帖子、消息和新闻页面来校准和验证模型,其中帖子数据集在新闻类型中的采样比当前数据集更均匀。校准和验证后,确认模型的重要预测因素是否发生了变化。
  • 改变模型中使用的消息文本中单词的数量和类型。此外,可能包括脸书链接名称的 n 元语法。
  • 检查数据集中预先分类的帖子的内容,如有必要,更正标签。
  • 评估其他要素工程选项,以与套索正则化的性能进行比较。
  • 使用 GridSearch 改变正则化程度(即 C 参数)。

更多信息

更多信息请参考我最近做的技术报告和 Python 代码或者演示。这部作品的延伸也可以在 Tableau Public 上看到。

下一个前沿——从认知到理解

原文:https://towardsdatascience.com/the-next-frontier-from-recognition-to-understanding-273357fa428f?source=collection_archive---------10-----------------------

先来一个关于这个故事的故事。2016 年 10 月我写了并发到了 Techcrunch。他们的高级编辑一直答应我很快出版它,直到 2017 年 2 月,然后…消失了。在五个月的时间里,我们带着 人性学习项目 向前迈进,隐约基于思想的惨叫。我很想改进文本,增加我们最近的发现,但决定不做任何改动。它仍然是有趣的。尽情享受吧!

AI 能从一个没有 90%大脑正常生活的人身上学习意识吗?也许一个自闭症患者也能帮上忙?核心价值观和讲故事呢?虽然这些问题听起来很矛盾,但它们可能会给人工智能科学家提供一些发展具有自我意识的人工智能的重要线索。

2007 年的《柳叶刀》杂志首次报道了一名法国人的病例,他尽管失去了 90%的大脑,却过着正常的生活。额叶、顶叶、颞叶和枕叶被认为控制大脑的运动、情感、语言、视觉、听觉以及情感和认知功能。所有这些区域在法国人的大脑中都被缩小了。布鲁塞尔自由大学的 Axel Cleeremans 对 Quartz 说,虽然这在医学上看似奇迹,但它也给认知心理学家带来了重大挑战。

Cleeremans 在今年布宜诺斯艾利斯的意识科学研究协会会议上做了一个关于这个主题的演讲,他认为大脑学会有意识。“意识是大脑关于自身的非概念理论,通过经验获得——即学习,与自身、世界和他人互动,”他说。

在关于这个主题的论文中,Cleeremans 使用了人工神经网络学习的例子来说明他的观点,并阐述了他的第一个重要的计算原理,通过这个原理来区分有意识和无意识的表征:

“意识的可用性取决于表征的质量,其中表征的质量是在时间、强度和独特性的稳定性上定义的分级维度。”

自我意识使我们的大脑能够选择是否有意识或无意识地处理输入的信息。在基本层面上,它就像一个由两个相互连接的神经网络组成的系统:一阶网络处理二阶网络无意识地观察到的信息流入,二阶网络是系统中内部有意识的观察者。根据克里曼斯的观点,意识与学习过程密切相关,因为它的机制导致在意识认为已经学会的情况下消除对行为的意识控制。意识使我们的学习在信息流入方面具有选择性。

现在让我们把这个词告诉洛里·塞利,她和她 14 岁的儿子一起住在自闭症 spector。她在博客中描述了她对“自闭症是什么感觉?”这个问题的第一人称观点。

“在我患自闭症的经历中,一切都以同等的力量流过。她解释道。“我的全景视觉和伴随而来的可能是自闭症一部分的深度记忆库有一种有趣的关联。我用图片来观察生活,我的大脑对我所看到的一切进行分类和编目 …当我进入类似的情况时,我会定期经历一次细致的精神“手指翻动”

看起来 Lory 的意识并没有产生“系统连接的适应性变化”,根据 Cleeremans 的说法,每种形式的神经信息处理都应该通过神经系统中突触连接的加强(长期增强)或削弱(长期抑制)机制产生。

突触连接的增强或减弱机制也被称为神经可塑性。神经可塑性的基本原理是一起放电的神经元也连接在一起

在理解神经可塑性如何工作的前沿,科学家们正在不同方向取得重大进展。国家儿童健康和人类发展研究所(NICHD)开展的研究与我们的目的特别相关。它证明了大脑通过学习、遗忘和再学习来重新连接自己。在醒着的时候,神经元通过一起放电来加强联系。这些交流是学习的基础。随着学习的进行,神经元正在形成回路,共同回忆起一段记忆。更有趣的是,研究人员发现当大脑休息时,神经元反向放电,在这个过程中抹去不重要的信息,但增加了神经元对未来感官学习的敏感性。“大脑不会储存它遇到的所有信息,所以必须有一种机制来丢弃不重要的信息,”资深作者 R. Douglas Fields 博士说,他是 NICHD 神经系统发育和可塑性部门的负责人。

有理由认为,两种类型的大脑网络都在发生类似的过程:第一级处理信息流入,第二级处理自我意识。越来越多的证据表明,默认模式网络(DMN)中的功能连接通常被定义为一组皮层区域,当受试者休息时比他们从事注意力要求高的任务时更活跃,这可能是一种被称为自我意识的现象的基础。由芬兰埃斯波的 BM-Science 大脑和思维技术研究中心的 Andrew A Fingelkurts 和 Alexander A Fingelkurts 以及意大利切弗洛的 Fondazione Istituto“San Raffaele-g . Giglio”康复部门的 Sergio Bagnato、Cristina Boccagni 和 Giuseppe Galardi 进行的研究使用脑电图确定了 DMN 功能连接的强度可以调节自我意识表达的强度

南加州大学多恩西弗文学、艺术和科学学院大脑和创造力研究所的乔纳斯·卡普兰是这项研究的主要作者,该研究发表在 17 日的《大脑皮层》杂志上。他的研究解释了与 DMN 相关的自我意识正在处理什么类型的数据。实时大脑扫描显示,当人们阅读涉及他们核心的、受保护的价值观的故事时,他们大脑中的 DMN 会被激活。

卡普兰认为,大脑不仅面临道德困境,而且这种困境是以叙事的形式呈现的。他说:“故事帮助我们以一种独特的方式组织信息。

“故事似乎是大脑以一种实用且令人难忘的方式组织信息的基本方式。了解做到这一点所需的神经机制很重要,这项研究是朝着这个方向迈出的一步,”该研究的高级作者、大脑和创造力研究所的联合主任、神经科学大卫多恩西弗主席、心理学和神经学教授安东尼奥·达马西奥说。

Futurism 2016 年 10 月 20 日报道微软的语音识别技术已经达到了人类的水平。“下一个前沿是从认知到理解,”时任微软语音对话研究小组经理的杰弗里·茨威格说。

我们通往新领域的道路很可能会通过机器意识的创造——或者如 Axel Cleeremans 所说,二阶网络将不断学习重新描述人工智能自身的活动,因此开发元表征系统来表征和限定目标一阶表征。这种经过学习的重新描述,加上与之相关的故事叙述,将形成有意识体验的基础。有意识的体验意味着理解。

迈向有意识人工智能的下一步应该是意识

原文:https://towardsdatascience.com/the-next-step-towards-conscious-ai-should-be-awareness-91fbb1cb005f?source=collection_archive---------5-----------------------

开发者哲学家

What is the “magic trick” to become conscious ?

意识并不是突然从我们大脑的某个复杂层次出现的,而是长期进化过程的产物。因此,简单地构建越来越复杂的人工智能系统不会让它奇迹般地出现,我们首先需要了解底层的“魔术”。

我很敬畏地看到越来越多的文章关注机器意识在不久的将来的崛起,尽管科学家们还不知道我们大脑中电信号的收集如何导致主观体验。机缘巧合有时会让足够“睿智”的个人将看似无关紧要的事实联系起来,从而得出有价值的结论。然而,这不是解决问题的科学策略,这就像在彩票中寻找中奖号码一样。在这篇文章中,我想强调意识问题的答案可能就在眼前,我们应该认真考虑它,而不是等待意识从我们日益复杂的算法中出现。

为什么意识不能从复杂性中产生

The evolution of eyes over a span of 350 000 generations

大多数理论认为,意识是由复杂性、神经活动振荡或大规模信息整合引起的,但他们指出了一个魔术,没有提供任何解释。更具体地说,整合理论通常忽略了一个事实,即高度整合的计算发生在意识之外,如自主神经系统执行的移动或动作。最后但同样重要的是,意识不能仅仅是一种从大脑信息中浮现的感觉,因为我们可以报告它。因此,它必须作用于大脑,以便提供关于自身的可报告信息。

根据进化理论,人类的眼睛并不是突然变成成熟的眼睛,而是从祖先物种中更简单的眼睛进化而来。甚至单细胞生物也有微小的细胞器来区分光明和黑暗。如果每一代微小的突变都一步一步地稍微改变了其中的一个部分,经过无数代之后这些变化就会导致人类现有的眼睛。意识经常被描绘成一种虚无缥缈或不可分割的东西,不可能通过自然选择而存在。首先,如果巨大的突变(如涌现所要求的)不经常发生,人眼因其复杂性而突然出现的概率为零,即使有大量的世代(更不用说它还需要更复杂的大脑功能)。另一方面,如果每一代都发生大量的巨大突变,很有可能导致物种内部的死亡或永久伤害,从而导致物种灭绝。即使现有的眼睛可能会突然出现,环境也不太可能是相关的:例如,单细胞生物能用它做什么?

为什么意识可以从注意力进化而来

注意力图式理论 (AST)提出了一条新的途径来解释意识是一个自然进化过程。我们的大脑需要构建现实的简化模型,因为有太多的信息需要完全处理。结果,它进化成以牺牲其他信号为代价来深度处理少数信号,简而言之,信号竞争,赢家出现。这种数据处理方法被称为注意。一旦你的大脑开始专注处理,它有可能影响你的行为吗?答案是肯定的,注意力的集中控制可以协调所有感官,并将感觉器官指向任何重要的东西,也就是显性注意力。下一个进化进步是在不移动感觉器官的情况下从精神上转移你的注意力,也就是隐蔽注意力。为了控制虚拟运动,大脑需要一个内部模型(可以说是它的草图),而意识就是那个模型。

Consciousness encompasses both, the information about which you are aware and the act of experiencing it (i.e. awareness)

虽然我们说我们意识到信息的,但实际上是大脑计算出的信息。就像颜色是真实事物的计算表示:光,觉知是真实事物的计算表示:一个人自己的注意力。如果是这样,为什么觉知总是被描绘成非物质的本质?原因很简单,因为大脑不需要底层电路的细节,而仅仅是一个近似值,一个快速有效的行为指南。再举一个例子,白色作为一种颜色在物理上是不可能的(因为白光是所有颜色的混合),它是大脑建立的真实世界的一个不准确的模型。我们可能也有这样的感觉,意识是一种涌现现象,因为潜在的现象(即注意力)是信息可以进入的一种涌现状态:它产生于信号中赢家的选择过程。

理解和预测另一个人的行为在像智人这样的社会物种的生存中起着关键作用。在各种标准中,一个人的注意力状态可能是预测其行为最相关的标准。因此,用于模拟自己注意力的相同机制最终进化为基于大脑中计算的信息(如凝视方向、肢体语言、以前的会议等)来模拟另一个人的注意力。意识不是我们或另一个人拥有的东西,而是我们大脑赋予自己或他人的一种属性。就像我们通常报道的那样,它的神秘本质实际上可以用认知偏差来解释。这也可能是为什么人类自然倾向于将意识归因于许多事物,如木偶(更不用说那些口技表演者)、树等等。

从注意到意识的完整进化过程总结如下图。

A sketch of the evolution of attention and consciousness. This linear progression is a simplified version of the actual evolutionary process that contains many feedback loops and different types of attention (e.g. spatial attention). The key point is that attention appeared earlier than consciousness and its modelling by the brain led to what we call consciousness.

结论

理解一种现象是设计它的第一步,所以如果我们有了对意识的解释,我们就有希望成功地将同样的功能构建到我们的人工智能中。如果目标是建立一个模仿人类的人工算法,那么它需要“意识到”,即拥有一个注意力预测模型,并将其应用于自身和他人。虽然“意识”或“自我意识”是模糊和无定形的东西,没有共同的基础,当阅读这样的文章时,很容易混淆苹果和橘子。如果机器人自己报道了记者实际上写的东西,我会感到非常惊讶,但事实并非如此,因此应该正确看待这个问题。更一般地说,图灵测试主要评估社会习俗,计算机是否真的有意识并不重要,重要的只是人们对它的看法。

© https://xkcd.com/329/

我不是人工智能专家,尽管我对什么是计算机和算法有很强的了解,当我看现有的人工智能文献时,在我看来,除了在特定的视野中,对隐性注意力的研究并不多(更不用说对其建模了)。这告诉我们两件可能的事情。在试图创造有意识的人工智能时,研究人员要么走错了路,要么错过了关键点。或者,我倾向于相信,人工智能与人类的差异如此之大,以至于这个概念根本不相关。人工智能的设计、构造和运行方式与人类在自然限制下的进化和行为方式毫无共同之处。如果有一天一个 AI 自我报告它是有意识的,人类的意识签名很可能与它无关。我们应该只是相信它还是改变我们自己对意识的看法?无论如何,没有能力用人类的概念解释其推理的人工智能是不太可能被社会接受的。给它配备像意识这样的人类特征可能是我们信任它并解决黑箱问题的唯一方法,也就是说出于需要的人工意识。

没有下面这本书就不会有这篇文章: 意识与社会大脑——迈克尔·格拉齐亚诺。

注意:本文中表达的观点是作者的观点,不一定反映引用参考文献的观点。

如果你喜欢这篇文章,请点击下面的掌声按钮,与你的观众分享,关注我的媒体或阅读更多见解:人工智能的计算机科学的进化忘却的美好 为什么软件开发应该在生活中帮助你

涅槃谬误和为什么概率胜过确定性

原文:https://towardsdatascience.com/the-nirvana-fallacy-and-why-probability-beats-certainty-df2f41e7975d?source=collection_archive---------5-----------------------

涅槃谬误的原则认为,如果无法达到完美,为什么还要费神去尝试呢?

这很容易让人联想到不容忍失败或反对新思想的商业文化。但更宽容的组织文化也需要确定性。

从表面上看,这种确定性的预期似乎是合理的。如果你将大量的时间和精力投入到一个特定的项目中,难道你不应该非常确定,或者至少非常接近它吗?

但是一个人能绝对肯定任何事情吗?我们都受制于自己的偏见和一厢情愿;我们用直觉填补证据的空白,并且在需要的时候做出决定。

机器学习及其产生的预测为企业提供了巨大的机会,但结果很少能提供完美的确定性。相反,它们提供了结果的概率。这就要求商务人士在如何制定、交流和贯彻策略方面掌握新的数学词汇。

为什么概率胜过确定性

企业可以在已知成功概率的项目上下较小的赌注,而不是坐等确定无疑的大事。简单的成本与概率计算意味着,人们可以通过执行以前从未考虑过的活动,始终获得正确的结果。

这一切怎么可能?1997 年击败加里·卡斯帕罗夫的人工智能技术(可以说是通过了国际象棋领域的图灵测试)和今天的 power Siri、Alexa 和 Pandora 都是基于概率的。大量的数据输入被压缩成一个结果/答案——一个(很可能)正确的答案。

想象一下,使用你的企业收集的所有数据来计算某个营销计划成功的可能性,或者价格下降对客户保持和获得的影响。

所有这一切都是非常可能的,并且比以往任何时候都更加触手可及。

Deducive 正在将机器学习和人工智能引入各种规模的企业,以简化和解决看似棘手的问题。

当竞争对手寻求确定性并依赖旧的思维方式时,有远见的公司可以通过站在概率的正确一边而向前飞跃。

请联系我们 hello@deducive.com 公司,了解我们如何(很有可能)帮助您。

最初发表于【www.deducive.com】

聊天机器人的非编码者指南

原文:https://towardsdatascience.com/the-non-coders-guide-to-chatbots-fc038f715f40?source=collection_archive---------2-----------------------

所有该知道的。

作为学习过程的一部分,每个聊天机器人开发者最终都会写一些教程,我当然也不例外。我知道已经有几十个教程了,但我还是想再写一个,因为

我相信我能比我看过的大多数文章更好地解释某些方面。

变得健谈🤖

聊天机器人在过去的几年里已经走了很长的路,你可能已经知道了,因为你正在阅读这篇文章。品牌一直在使用聊天机器人吸引客户,因为争夺手机空间真的很难,因为大多数下载的应用程序几乎一次都没用过。

因为这些聊天机器人存在于你的聊天应用程序中,所以没有必要下载任何对每个人都双赢的东西。

Chatbots are the new apps.

这些机器人帮助我们将服务层隐藏在简单的英语对话层之后,这样我们就不必再用笨重的应用程序来预订出租车或订购披萨。每个人都理解机器人带来的便利,它们可以安排会议或预订餐厅。

深入研究机器人

基于检索的聊天机器人

早期的聊天机器人依赖于基于规则的方法,并具有硬编码的响应。像你这样聪明的程序员会试图预测用户可能说的每一句话,并为你能想到的每一个问题建立一个庞大的回答列表。

即使在深度学习取得进展之后,这种情况也没有太大变化,我们仍然需要提前预测整个对话流程,并建立一个预定义响应的知识库,但在机器学习的帮助下,这种努力可以大大减少。我们可以使用一个简单的分类器来识别查询背后的意图,这样它就可以将两个意图相同的问题放在一起,即使措辞不同,也可以有相似的响应。

生成聊天机器人

深度学习每天都有新的发现,并迅速改变着技术。这些模型不依赖于硬编码的响应,而是从头开始生成它们。由于它需要大量的数据,它本身也存在效率低下的问题,比如语法错误、不相关或不一致的回答。我还没有看到它们被部署到任何生产系统中。

它们在实践中似乎不起作用,企业不会让他们的客户冒险使用聊天机器人,因为聊天机器人有如此多的回复自由。

今天深度学习的大部分价值都在你可以获得大量数据的狭窄领域。这里有一个它做不到的例子:进行一次有意义的谈话。有演示,如果你精心挑选对话,它看起来像是有意义的对话,但如果你真的亲自尝试,它很快就会偏离轨道。—安德鲁·吴

聊天机器人的解剖学

理解语言是机器学习的圣杯。约翰·詹南德雷亚

智能聊天机器人有两大组成部分。

  • NLU 引擎:这个作品致力于理解句子的真正含义,可以使用各种技术来推断,如对意图进行分类(使用 Sklearn、TensorFlow 等),识别重要实体(使用 Spacy、CoreNLP 等 NER 库),找到情感并将上下文存储在变量中,并在对话中循环。
    NLU 仍在努力识别这句话的真正含义,但这些统计成分放在一起帮助我们缩小差距,是我们今天拥有的最好的东西。

拉沙·NLU:这个框架允许我们对意图进行分类,并通过灵活地使用不同的库来识别实体,从而完成分类和命名实体识别任务。

  • 对话管理:在理解了用户要说的话之后,这个模块的主要功能就是寻找回应。这些机器人模仿人与人之间的互动,这就是开始变得复杂的地方。
    对话管理器负责保存聊天历史的状态,进而维护对话的流程。

Rasa Core:引导对话,考虑对话的历史和外部环境。Rasa 从真实对话中挑选模式,而不是成千上万的规则。

僵尸工具 :这可以让你使用不同的规则定义自己的故事。没有机器学习被用来定义对话的流程。

对话流程

在构建对话场景时,有两种类型的对话

线性对话

这类似于一个问题/答案模型。此对话的目的是收集完成任务所需的信息。这也称为槽填充,因为我们需要在进行下一步之前填充强制实体。

例如,在创建一个预订电影票的机器人时。我们需要在订票前了解一些必要的信息,比如

  • 电影的名称
  • 显示计时

机器人将不断询问所需的问题来填充这些信息,并且它必须足够聪明来为相应的插槽选择正确的实体。

非线性对话

非线性对话完全取决于用户的反应,并且可以有几个分支,这允许对话在其流程中采取不同的路径。这种类型的对话似乎更人性化,因此如果处理不当,会变得更加混乱和复杂。

开发人员可以利用各种平台来创建惊人的故事和复杂的对话流

  • Rasa — XML,Python 体验

RasaCore — Story Mode

DialogueFlow

BotEngine

聊天机器人术语

代理人

聊天机器人,也称为对话代理或对话系统,最好描述为与对话管理器结合的 NLU 模块。

意图/互动:

意图代表了用户所说的和你的软件应该采取的行动之间的映射。这些是机器人的预定义组件,定义用户的请求并对它们进行分类以采取适当的行动。

实体:

用户请求进一步处理所需的任何重要数据或参数被称为实体。最先进的 NER 系统可以用来从句子中提取这些实体。

例如:我想订一张从 巴黎 纽约 今天 晚上 10 点**的机票

上面突出显示的值是位置和时间实体,这些信息对于处理和预订机票至关重要。

槽填充:

一些强制的实体被称为槽,槽填充的过程是不断地提示用户,直到这些槽被填充。

上下文:

上下文表示用户请求的当前上下文。这有助于根据用户的偏好、地理位置、应用程序中的当前页面或谈话主题来区分可能模糊或具有不同含义的短语。

例如,如果一个用户正在听音乐,发现一个引起他们兴趣的乐队,他们可能会说:“我想听更多他们的音乐”。作为开发人员,您可以在请求的上下文中包含乐队的名称,以便代理可以在其他目的中使用它。

回退:

当用户请求不属于任何一个提到的意图时,我们可能会有一系列的响应,比如我不明白,我不太知道那是什么意思等等。**

动作:

在找到请求的意图并填充所有必要的槽之后,机器人可能需要执行一个特定的动作,假设是连接到第三方插件的 cloud/lambda 函数。

Web 集成

一旦你的聊天机器人准备好面对人类,是时候将它与一些领先的聊天机器人平台集成在一起了。大多数 bot 框架都自带插件来实现无缝集成。Telegram、Messenger、Google Assistant 等平台通过向其拥有的广大受众展示您的产品和服务,打开了新的机会,并反过来发展您的业务。

聊天机器人礼仪😺

设计聊天机器人最具挑战性的部分之一是让对话尽可能自然和高效,而不是如何分类意图、识别实体、生成丰富的响应或进行一些花哨的技术集成。

创建一个机器人在技术上并不困难,但这是一个丰富的用户体验和希望用户回到你身边的问题。一个好的设计应该少关注聊天机器人要说什么,多关注用户要说什么。

不要试图通过直接提问来快速填充你的位置,因为这可能听起来太命令和无聊,可能会推开用户。

如果处理得当,如果你有足够的关于用户的信息,大多数问题首先不需要答案。另一种方法是存储用户的上下文,并在对话中携带它,以便在有任何疑问时使用。

如果有必要问一个问题,试着用不同的方式问,注意不要问一个用户已经回答过的问题,如果实体识别失败,通常会出现这种情况。(多训练!!)

即使在完全不同的会话中响应,也应不惜一切代价避免机器人重复响应。最好的方法是为同一话语准备一堆预先配置好的响应,然后在回复时随机挑选响应。

Different ways of responding to the same intent

这个例子显示了 3 个不同的响应,字面意思是相同的帮助意图。

用户喜欢他们的机器人有幽默感,能够根据上下文讲笑话。这可能会变得棘手,因为不是每个人都喜欢机智的回答,所以谨慎使用这种方法,只有当你有情绪分析器来预测用户的情绪时才是可取的。😜

给你的机器人起一个名字和一个个性对于拟人化机器人是很重要的。聊天机器人用户通常没有什么私人问题想问,你的聊天机器人最好为他们做好准备。谷歌的聊天代理将所有这些意图归类为机器人。个人,并有一长串机智的回复😉

  • 你是机器人吗?
  • 你叫什么名字?
  • 你几岁了?
  • 你好吗

如果你喜欢阅读它,并发现它很有意义,请继续关注,分享并鼓掌!!

北欧人。艾节——你错过了什么

原文:https://towardsdatascience.com/the-nordic-ai-festival-what-you-missed-7ef8701d1961?source=collection_archive---------3-----------------------

从音乐推荐和手机结账到紧急呼叫和社会的未来,就职 北欧。AI 大会是一个令人眼花缭乱的快照,展示了围绕人工智能如何影响我们的生活、工作和娱乐的最新研究、技术、思维和辩论。

37 日在哥本哈根 Vega 举行的首届活动展示了该地区在该领域工作的许多最令人兴奋的初创公司和公司,探索我们现在的位置、未来的方向,以及推动北欧地区发展还需要做些什么。

做不下来?这是你错过的。

莎拉·吉尔的话

首先:为什么是北欧人工智能?

Nathan Benaich 为北欧人工智能领域目前正在发生的事情以及北欧人工智能为何如此重要设定了场景。他演讲中的一些要点包括:

1 对北欧公司的投资和退出正在增长 —在 2016–2011 年和 2000–2010 年间,交易增加了 5.7 倍,投资增加了 3.6 倍。
2。欧洲拥有强大的资源—470 万开发人员对 410 万美国开发人员,2 家人工智能公司成立于 2016 年至 2011 年,2010 年至 2000 年。
3。聚会越来越多——在过去的五年里,赫尔辛基+斯德哥尔摩的聚会增加了 20 倍,回复也增加了 10 倍。

Slide by Nathan Benaich

Slide by Nathan Benaich

北欧的心脏。AI 的使命是将北欧地区所有建设、研究、投资和思考人工智能的人聚集在一起,帮助他们做更伟大的事情。

它是关于激发创业公司、行业和学术界之间的联系,以及将新兴的当地社区、聚会和团体联系在一起,以聚焦正在发生的事情,并推动整个北欧地区共同前进。

Nathan 谈到了目前欧洲技术生态系统的分裂,以及为什么促进斯德哥尔摩、哥本哈根、雷克雅未克、赫尔辛基和奥斯陆之间的合作、讨论和知识共享如此重要,但更重要的是,促进与伦敦、柏林和更远的其他主要中心的合作、讨论和知识共享。

“欧洲枢纽之间的关系是脆弱的或者充其量是新兴的”——@ NathanBenaich关于为什么支持【nordicAI等倡议很重要

Slide by Nathan Benaich

状态检查:AI 的状态

阿齐姆·阿兹哈尔描绘了人工智能现状的大图景——自从人们第一次开始谈论它已经过去了大约 60 年。他谈到了技术革命的周期,数据的爆炸和这个领域的工作遗产,这意味着我们今天可以建造有趣的东西。

他最后呼吁人们、公司、初创公司和研究人员大胆大胆地思考他们在人工智能方面的雄心,但也要仔细思考利用这项技术的意义,谁掌握着缰绳以及它将对社会产生的影响。

北欧。AI:演讲者重点介绍

🔥Danny Lange 曾是优步机器学习的负责人,现任哥本哈根创立的 Unity Technologies 的人工智能和机器学习副总裁,他带我们走过了人工智能在企业中的应用。他谈到了典型的商业挑战(如需求波动、供应复杂性、不断增长的客户期望等),以及机器学习如何“让企业再次变得聪明”。

🔥在“机器学习的干扰”中,我们听到马士基的数据科学家 Clemmensen 讲述了该公司如何使用该技术处理数百万行数据的真实例子,以改善他们处理从集装箱维修到预测到流失的一切事情的方式。

🔥Wise.io(成立于哥本哈根,被 GE Digital 收购)的联合创始人 Henrik Brink 通过一个工程师将机器学习部署到生产中的 5 步过程,开始了实际工作。

Slide by Henrik Brink

🔥来自爱立信数据中心自动化部门的 Jesse Chao 谈到了用户数据、应用数据和网络/基础设施数据的机会,以及围绕用户体验、网络自动化、连接用户安全和身份管理以及基础设施效率的使用案例。

🔥 Rafal Lukawiecki 带我们对人工智能的过去、现在和未来进行了一次疯狂的短暂停留之旅。他的演讲谈到了为什么企业需要人工智能、人工智能和数据科学来理解成功和失败、他们的客户、规划未来、尝试冒险和做出明智的决策。

**

🔥Nathan 和 Azeem 与 Creandum 的 Bjarke Staun-Olsen 和北欧制造商的 Hampus 雅柯布逊从投资者的角度谈论人工智能,话题包括小公司如何在这个领域赶上大公司。你可以读读 Bjarke 关于北欧的文章。AI 和接下来的这里

🔥该计划的研究部分看到了 DTU ( 丹麦技术大学)教授 Ole Winther 在学术界和工业界谈论人工智能。DIKU ( 哥本哈根大学)机器学习教授 Christian Igel 讲述了机器学习对科学和社会的影响,雷克雅未克大学 Kristinn Thorsisson 和冰岛智能机器研究所向我们概述了过去十年冰岛人工智能领域发生的事情。

展示:北欧正在酝酿什么

如果围绕北欧人工智能生态系统中的所有参与者建立一个社区是运动的第一步,那么下一步就是帮助让国际社会关注这里正在发生的事情。这是此次活动中展示的所有初创企业和扩大规模企业的快照。

Slide by Nathan Benaich

🌍瞳孔

mapi pillar成立于马尔默,总部仍在马尔默,是一个开源的街道级图像平台,由社区和计算机视觉拍摄的众包图片提供支持。在活动上,联合创始人兼首席执行官 Jan Erik Solem 表示,mapi pile 现在拥有 1 亿多张照片,在 190 个国家拥有大约 10 亿个标记图像区域。在这里阅读更多关于他们正在建造什么和为什么的信息。

🌍Spotify

“给我看你的播放列表,我将为你的生活配乐”是 Spotify 的工程副总裁 Andreas Mattson 的谈话名称。Spotify 的音乐流媒体服务在 3 月初达到了付费用户的一个新里程碑,现在全球有超过 5000 万人使用它来查找、聆听和分享音乐。安德烈亚斯带我们了解了支持 Spotify 著名播放列表和推荐的机器学习技术。

Slide by Andreas Mattson

🌍克拉纳

那么机器学习改善顾客结账体验的机会在哪里呢?Klarna 公司的【】Samare Jarf 解释说,这家瑞典支付技术公司如何建立统计模型来个性化客户体验。她谈到 Klarna 如何根据顾客对支付方式等变量的偏好来调整顾客的结账体验,以提高从浏览到购买的转化率。

Slide by Samare Jarf

🌍布莱克伍德 7

来自 Blackwood Seven米歇尔·格林讲述了机器学习如何应用于一个完全不同的行业,并在媒体机构领域谈论了贝叶斯人工智能引擎。Blackwood Seven 的 Maggie 平台旨在让客户根据从媒体价格和宏观经济到天气和股市波动等领域的数据预测媒体支出的影响。格林谈到了未来,人类媒体规划者可以向人工智能简要介绍战略,并建立一个可以建立和推理模型的人工智能。

Slide by Michael Green

🌍科尔蒂

哥本哈根和旧金山的 Corti 将这项技术引向另一个方向,将机器学习应用于真实的人类对话。该团队的机器学习负责人Lars maal le谈到了深度学习在高度复杂的声音信号上的应用,以及如何在应急服务中部署。紧急服务是一些最紧张的对话界面,即使对于专业人员来说也需要很高的专业知识。Corti 通过基于大量历史数据的诊断来帮助界面,这对于人类来说是不可行的,并确保在分秒必争的情况下做出更快速的救生决策。

Slide by Lars Maaløe

他还指出,将这项技术应用于其他背景下的人类对话存在巨大的机会,并引用了一项研究,即每年客户给美国公司打电话的次数超过 2570 亿次,但这些对话中只有一半得到解决。

🌍美瞳

另一家将机器学习应用于医疗保健领域的初创公司是MedEye ,旨在防止床边用药时出现错误。也就是说,确保患者在正确的时间获得正确的药物,并且他们知道自己在服用什么。它的扫描设备允许护士将特定患者的药物放入一次性抽屉中,并使用计算机视觉来验证药物和剂量是否正确。Medeye 也有一个应用程序,患者和他们的家人可以跟踪他们正在服用的药物。它是关于防止错误,拯救生命和削减错误的成本。

这是母公司 Mint Solutions 的第一款产品,该公司专注于使用技术来帮助护士和医生。

🌍iZettle

总部位于斯德哥尔摩的移动支付公司 iZettle 的分析平台负责人 Andreas Meisingseth 分享了他关于使用开源和 AWS 进行机器学习的实用方法的演讲。iZettle 是一家移动支付公司,它让咖啡馆、面包店和沙龙等微型企业接受客户的信用卡。虽然支付是业务的核心,但更大的前景是为传统金融服务服务不佳的商家建立一套数据驱动的服务。

🌍Lytics

另一家位于马尔默的初创公司是 Lytics.ai ,它基于深度学习提供数据驱动的个性化预测医疗保健。Lytics 专注于严重疾病,如肾衰竭、慢性阻塞性肺病(慢性阻塞性肺病)和心脏问题。该公司认为,深度学习有可能在许多层面上彻底改变医疗保健行业,改善患者的生活,降低医疗保健提供商的成本。

🌍阿伦多分析

ArundoEMEA 地区数据科学总监 Ellie Dobson 谈到了最近在收集和分析数据方面的技术进步如何使人工智能优化每个行业的梦想实际上可以实现。Arundo Analytics 利用大数据和机器学习来分析行业数据,帮助优化运营。其针对资产密集型行业的专有技术使用大数据和机器学习技术来分析资产数据,以优化运营,并在事件发生前为客户提供洞察。

🌍电影

Movi 是一个基于 AI 的视频引擎。联合创始人兼首席执行官 Lars Erik Ravn 在奥斯陆成立,现在总部位于帕洛阿尔托,他分享了他对视频技术未来的愿景。Movi 开发智能视频技术。在 Movi 播放器上播放视频时,Movi analytics 可以收集与视频内容相关的一切数据,然后创建自动化的内容策略。

🌍好奇的艾公司

好奇 AI 公司专注于无监督机器学习。该团队开发了梯形网络技术,并表示现在开始将其无监督学习技术应用于各种试点应用领域。该公司表示,潜在的最终应用可能包括用于自动驾驶汽车的新型机器视觉技术、高级软件代理和智能个人助理。

敬请关注:关注北欧人工智能的下一步

那是第一个北欧人的包裹。AI 大会,但是这个运动才刚刚开始。使用#NordicAI 分享、关注和联系北欧人工智能社区正在发生的事情:让我们建立一些令人敬畏的东西。

👉 #nordicai

👉 www.nordic.ai

👉 @Nordic_ai

👉中等

TED 演讲者的职业

原文:https://towardsdatascience.com/the-occupation-of-ted-speakers-4df1829c5ac7?source=collection_archive---------9-----------------------

是什么样的背景点燃了 ted 演讲者们思想的多样性?继之前关于 TED 演讲的反复出现的话题特点的帖子之后,今天我将看看演讲者的职业。

由于许多演讲者都戴着一顶以上的帽子,我绘制了一个同时出现的职业网络:

TED speakers of multiple occupations

接下来,我们放大到与至少 20 种其他职业同时出现的职业。我们可以看到许多有趣的组合:演讲者兼任表演者和活动家,艺术家/设计师和社区建设者,企业家和动画师,作家和禅宗牧师,科学家/技术专家和单口相声家。

People with these occupations branch out a lot

这是我关于数据科学和视觉故事的# 100 日项目的第 62 天。我的 github 上的全部代码。感谢阅读。如果喜欢,请分享。欢迎新主题的建议和反馈。

每个数据科学家都应该知道的一个定理

原文:https://towardsdatascience.com/the-one-theorem-every-data-scientist-should-know-f7c501d54bad?source=collection_archive---------2-----------------------

本文是每个数据科学家都应该知道的最重要的定理之一的快速指南,即中心极限定理。

这是什么?什么时候可以不用?为什么重要?和大数定律是一回事吗?

中心极限定理与大数定律

通常,中心极限定理与大数定律相混淆。大数定律表明,随着样本量的增加,样本均值对总体均值的估计越准确。

这两个定理的区别在于大数定律描述的是单个样本均值,而中心极限定理描述的是样本均值的分布。

中心极限定理(CLT)

中心极限定理指出,如果样本量足够大,任何独立的随机变量的均值的抽样分布将是正态或接近正态的。

换句话说,如果我们采取足够大的随机样本,所有样本的比例将围绕人口的实际比例呈正态分布。请注意,应用 CLT 时,基础样本分布不必呈正态分布。为了进一步细分,想象收集一个样本并计算样本平均值。一遍又一遍地重复这一过程,每次从总体中收集一个新的独立样本。如果我们绘制每个样本平均值的直方图,分布将呈正态分布。

那看起来像什么?正态分布有一个钟形曲线,如下所示。大部分数据都聚集在中间,即平均值。该分布以平均值 0 为中心,标准偏差为 1

你可能想知道,什么才算足够大?一般规则是,如果样本量为 30 或更多,样本量就足够大,足以容纳 CLT。

这是一个有趣的 CLT 工作演示。在制豆机或高尔顿板中,珠子从顶部落下,最终以钟形曲线聚集在底部的容器中。

什么时候可以不用 CLT?

  • 取样不是随机的。
  • 基础分布没有定义的平均值/方差。

掷骰子示例

CLT 的一个经典例子是掷骰子。每个数字都有六分之一的可能性出现在掷骰子中。我们可以用 python 来模拟掷骰子。

让我们将样本量设为 50 次观察。代码 randint(17,50)给出了一个由 50 个数字组成的数组,其中数字 16 出现的概率相同。让我们从观察 10 个样本平均值的分布开始。

means = [(randint(1, 7, 50)).mean() for i in range(10)]plt.hist(means, bins=’auto’)
plt.title(‘Histogram of 50 Dice Roll Sample Means’)
plt.xlabel(‘Average’)
plt.ylabel(‘Count’)
plt.show()

Result of 10 sample means

这个分布还没有太多的形状。让我们把样品数量增加到 1000 个。请注意,我们越来越接近钟形曲线。

Result of 1,000 sample means

现在,让我们来看看数量极其庞大的样本,确切地说是 10 万个。这看起来像一个非常明确的钟形曲线。是不是很神奇?我们的样本分布看起来就像高斯分布!就像 CLT 告诉我们的那样。

Result of 100,000 sample means

我们为什么关心 CLT?

它是统计学的基础。出去收集整个感兴趣人群的数据是不可能的。然而,通过从该人群中收集数据子集并使用统计学,我们可以得出关于该人群的结论。

CLT 从本质上简化了我们的分析!如果我们可以宣称正态分布,那么关于数据集我们可以说很多事情。在数据科学中,我们经常要通过统计显著性检验,即假设检验来比较两个不同的总体。借助 CLT 的力量和我们对高斯分布的了解,我们能够评估我们关于两个总体的假设。

感谢您的阅读!如有疑问,请发表评论。

比成为专家更好的一件事

原文:https://towardsdatascience.com/the-one-thing-that-is-better-than-being-an-expert-ec4a463ea6fa?source=collection_archive---------6-----------------------

现在,我标榜自己是商业数据分析的 Excel 专家。我已经在为自称的 Python 和 R 数据分析专家缝制游行服了。但是,如果你问我的 Excel 证书,你会看到很多我还不是专家时做过的事情。比成为专家更好的一件事是创造价值。任何人都可以用他们所拥有的知识水平创造价值。

如果我告诉你我的 Excel 之旅是从 2011 年 10 月认真开始的呢?如果我告诉你,当微软授予我微软最有价值专业人士时,我不是 Excel 专家,使我成为非洲唯一一个获得该奖项的人,会怎么样?如果我告诉你,我一开始为外国客户和跨国公司做的所有令人惊叹的工作,最终让我有勇气以全职独立顾问的身份独立创业,只是因为我把自己放在那里,那会怎么样?如果我告诉你,甚至我的畅销 Excel 书和国际知名的 Udemy 课程都是我在默默无闻、不是专家的时候创作的内容汇编,会怎么样?如果你看看我的生活,很容易认为我过得很好,我会很高兴地说阿门。但如果你问我,我会告诉你,我所取得的一点点成就中,有一件事我可以归功于我选择了给人留下深刻印象,而不是给人留下深刻印象。

“有什么区别?”你可能会问。我宁愿让我的作品为我说话,也不愿把自己包装成一个真正的人。我宁愿创造真正的价值,而不是价值承诺。我宁愿无偿地做一些有价值的事情,也不愿制作将我描绘成价值创造者的营销材料。

如果你创造价值,你是不是专家就不重要了。有没有碰到过马克安吉尔和艾曼纽的喜剧系列?他们是 YouTube 上最受欢迎的尼日利亚喜剧组合。你试过问自己他们是专家还是价值创造者吗?如果你还没有,现在是时候做了。从大多数枪击事件的糟糕视频质量和低预算来看,显而易见的答案是,他们不是专家。他们纯粹是价值创造者,这也是他们比专家排名更高的原因。每天,我都试图找回成为专家前的创造性时光。那些我靠巨大的交易量创造纯粹价值的日子,而不是现在,我努力不辜负我的专家身份。如果你还不是某个领域的专家,而你对这个领域有着深厚的热情和一些知识,我祝贺你,也羡慕你。你有千载难逢的机会不受干扰地创造纯粹的价值。希望你不是看不起自己,耽误创作有价值的作品。不要浪费这段时间。分享你所知道的一点点。尽你所能创造价值。因为当你最终成为一名专家时,你在形成期创作的那些作品将成为你将指向的可靠凭证/文件夹。

如果你注意到了,我最近写的 Python 和 R 帖子比 Excel 帖子多。嗯,这是因为我再次使用这种方法将自己树立为 Python 和 R 专家。当这个标签最终贴上时,我可以无耻地将自己标榜为 Python 和 R 专家,猜猜我指的是什么工作?如果你到现在还没有跳过任何一个句子,那么你会猜对的。

最初发表于【www.olafusimichael.com】

在高管搜索中,你只需要跟踪两个指标

原文:https://towardsdatascience.com/the-only-2-metrics-you-need-to-track-in-executive-search-b98d37bbbc66?source=collection_archive---------17-----------------------

在招聘中,度量标准可以作为一种揭示性的绩效衡量标准。

它们还会让你偏离任何招聘项目的最终目标:尽快安排最好的候选人。

换句话说,做你的客户雇你做的事情。

考虑到这一点,招聘是一个相当简单的做法。但是,许多搜索公司已经决定关注那些不能真正衡量成功的东西。一大堆额外的、销售类型的指标已经悄悄进入招聘:打电话、发邮件、收简历——这些只是达到目的的手段。虽然跟踪这些活动当然是可以接受的,但是用这些指标来定义成功是不合适的。

归根结底,您的客户并不关心这些指标。充其量,它们是借口(“看看我做的所有活动!”)只有在你没有快速安排候选人的时候才会出现。工作和完成工作是有区别的。活动不等于生产力。最终,你如何快速有效地安置候选人决定了你对客户的价值——而不是需要付出多少努力。

两个指标——安置率(“PR”)和安置天数(“DTP”)——应该定义一家公司的表现。

以下是衡量这两个关键指标将如何帮助你的搜索公司确定什么是有效的,什么是无效的。

简单是关键。

确定安置率就像问一个是或否的问题一样简单:安置完成了吗?要么是一家猎头公司安排了一名候选人(是),要么是内部招聘(否),要么是该公司被解雇(否)。安置率的计算方法如下:

安置率 =安置总数/项目总数

平均安置天数衡量的是进行一次安置所需的平均时间。计算方法如下:

安置天数 =安置项目总天数/安置项目总数

这两个简单的指标提供了对有效性和效率的真实测量。跟踪他们——你可以自己做,也可以用招聘软件如时钟来做——让你的猎头公司衡量什么是真正重要的。这也是一种简单的方法,可以展示公司内部的优秀员工,让人们专注于重要的事情。

跟踪这两个简单的指标有助于赢得工作并建立一种受驱动的工作场所文化。

当一个潜在客户找到你的猎头公司,要求你为他们的软件公司招聘一名营销副总裁时,你应该能够说,“是的,我们绝对可以帮忙。根据与您的项目类似的 31 个安置,我们的平均安置天数为 86 天。我们这类搜索的安置率是 94%。”

像这样的回答会让你的潜在客户知道你有成功的记录,并使用数据作为业绩的真正衡量标准。这可能看起来很激进,但实际上,它只是关注于正确的指标。

不跟踪这些指标的公司可能会带着一个懒惰的粗略估计接近客户,比如,“这应该需要,嗯…三到六个月的时间。”

像这样半心半意的推销不会给你带来很多客户。

除此之外,在内部创造宽松的期望会对你的招聘团队的表现产生反作用。如果招聘人员已经进行了三个月的搜索,但觉得在达到“大概”估计之前还有三个月左右的时间,那就没有紧迫感。他们会高兴地提前 15 分钟离开,认为他们有足够的时间来完成搜索。

但是当你把这两个关键指标带入等式时,它量化了生产力。它可以改变公司文化。

如果你衡量的是平均水平,并设定了这样的期望,即你公司的每个人在项目的 DTP 和 PR 方面都应该高于平均水平,那么你正在培养一种卓越的文化。你的团队知道他们是如何被衡量的,并且知道唯一真正重要的事情是做好布局并且高效地做。他们会竭尽全力完成工作,在 DTP 和 PR 方面达到“高于平均水平”。

如果这需要 10 个电话或 1000 个电话,那就这样吧。

有一种方法来衡量表现也有助于你奖励优秀。对表现优异的员工实施奖金制度,根据他们的 PR 和 DTP 平均值与同事进行比较。你可以很容易地在下图中绘制出你公司的平均公关和 DPT。

那些表现高于平均水平的人是“伟大的”或你的“左上表现者”。

只有其中一项指标高于平均水平的人属于“好”的类别。

那些在这两项指标上都没有超过平均水平的人需要加快步伐。

瞧,你有了一个简单的、指标驱动的方法来激励优秀的绩效。

真正变得更好并持续发展业务的唯一方法是跟踪这两个指标,并让自己成为左上方的表现者。

记住,最终,客户只关心你是否能快速找到一个好的候选人。

关注正确的指标将有助于您的公司实现目标。

谈到分析,管理层只关心两个问题

原文:https://towardsdatascience.com/the-only-2-questions-management-cares-about-when-it-comes-to-analytics-fc9c4e077624?source=collection_archive---------11-----------------------

相同的过程,不同的目的地

在物理科学(生物学、化学等)中。)在对一个非常具体的领域做了背景研究之后,一个大胆的假设被提出,测试被进行,结果被分析,并得出一个结论。

通常,这些假设并不针对特定的应用;目标仅仅是获取信息。物理科学致力于扩展人类知识的基础,但常常不知道这些知识的确切应用。

由于我们收集数据的能力在过去的四分之一世纪中激增,实际上有无限数量的观察可以使用分析来进行。这导致了一种方法,即在进行测试之后,在数据科学中开发假设。

虽然数据科学在这一过程中的行为应该像物理科学一样,但它在意向性上应该与物理科学有根本的不同。分析团队经常会问一些问题,比如“这些变量中的哪些是相关的”或者“是什么让这些变量不同。”

这些都是有趣的问题,有了大量的可用数据,它们肯定能得到解答。有无数这样的故事:分析师花费大量时间开发出卓越的见解,并将其呈现给商业领袖,但得到的却是缺乏热情和一句“那又怎样?”

所有洞见背后的 2 个问题

这里的问题不在于那些商业领袖。他们完全正确。分析过程的责任和核心功能是提供“那又怎样?”通过清楚地阐明他们的见解将如何回答以下两个问题之一:

如何增加收入?如何降低成本?

听起来很简单,因为事实如此。事实是,增加收入和削减成本是管理层的首要任务,几乎在任何时候都是如此。该公司没有一个分析团队来进行“有趣”的观察。企业领导者不希望必须自己找出如何利用数据洞察力来回答其中一个或两个问题。他们有成千上万的其他任务和责任。

这并不一定意味着每个洞察都必须立即提供改进的现金流。通常情况下,从一个新的观察到将一个业务流程落实到位,需要几个步骤来利用这些知识并让它影响底线。然而,这确实意味着路径应该是清晰的。

没有关键利益相关方的支持,分析就无法发挥作用。当这些决策者确信所提供的数据洞察将帮助他们完成工作:增加收入和削减成本时,他们将提供这种支持。

见解必须产生明确的影响

金融部门的零售端提供了这一概念的主要例子,其中关键决策者是外部客户。

随着易于使用的在线交易平台的出现,任何拥有智能手机的人都可以在任何地方参与股市交易。有了这种能力,就需要更多的股票知识,以及什么样的交易策略是有用的。有些机构的唯一目的是武装这些散户投资者的交易策略,使他们能够持续不断地产生利润。

这些散户投资者教育者提供的数据洞察力越好,他们为客户提供的价值就越大,因此他们的利润也就越高。因此,这些教育者应该专注于提供有影响力的见解。清晰回答“那又怎样?”这一问题的见解

许多面向散户投资者的交易策略声称有惊人的“胜率”他们会指出,他们的策略在 90%或更高的情况下都会产生利润,希望抓住客户的眼球。

在交易中,“赢”被简单地定义为产生利润。产生一分钱的交易就是赢;损失 10,000 美元的就是损失。你可以看到这是怎么回事。

胜率不应该是传递给潜在客户的主要洞察力。胜率如何提高收入或降低成本?并没有。一个客户可能在 99%的情况下用交易策略赢了,但随着时间的推移,可能会损失大量现金,假设损失的金额大于利润的总和。

如何更好地营销这些策略?"交易策略 X 将提供 28%的投资回报."现在,客户可以看到他们的收入将如何随着这一战略而增加。他们更有可能深入挖掘,并强烈考虑购买所述策略(如果存在)。

如果在一致性的背景下提到 90%的胜率,那就更有道理了。然而,这是一个次要的特征,只有当教育者知道他们的顾客把额外的价值放在收入的一致性上时才应该使用。即便如此,它仍然没有该战略将产生的回报重要。

了解提议变更的机会成本

解决方案很少像“采取行动,赚更多的钱”这么简单。大多数情况下,解决如何增加收入或削减成本的有意义的见解将指出需要对现有运营和战略进行的具体变革。这些变化可能会在业务的某个方面产生负面影响,即使是为了整体利益。毕竟,这些进程首先出现是有原因的。

在估计一项行动的机会成本时,必须考虑到这些负面后果。如果你不熟悉这个概念,机会成本是经济学中的一个术语,指的是你做特定选择时无法采取的行动的价值。

一个真实的例子是大多数年轻夫妇必须回答的问题:举办一场花哨的婚礼值得吗?

许多夫妇认为这对他们来说很重要,其他人更喜欢举行一个小型婚礼,并把这笔钱花在购买房子的首付上。这两个选项都不“正确”;这取决于双方对彼此的重视程度。这既是一个定量问题,也是一个定性问题(这就是为什么答案取决于所涉及的人)。

把钱用在首付上的夫妇认为把钱花在婚礼上的机会成本太高;他们发现拥有自己的家比与家人和朋友一起度过一个难忘的庆典更有价值。

如果一对夫妇认为婚礼是他们想要充分享受的生活事件,拥有一个家是好的,但不是优先事项,他们认为举办一场奢侈婚礼的机会成本足够低,所以他们选择这个选项。

让我们来看一个在医疗保健中如何发挥作用的高级示例。

对患者的耐心

自动化在医疗保健中变得越来越普遍,尤其是在医院中给病人用药时。医院的不同病房容纳有特定医疗需求的病人,因此需要特定类型的药物。

将医院药房的库存分配到适当的翼部的过程曾经是基于工作人员的经验和估计。诚然,这些估计可能是基于逻辑和理由,是好的,但它们不是最佳的。

随着机器学习和人工智能的结合,药剂师现在有能力根据复杂的分析来订购和分发药物。改善药物分配意味着它们更有可能在正确的时间到达正确的患者手中,从而改善健康状况。

在患者保护与平价医疗法案制度下,医院的底线与病人的健康结果直接挂钩。因此,这既增加了收入,又降低了成本。

虽然这种改进的分配无疑是为了更大的利益,但实施这一制度存在机会成本。它们不仅有可能是系统中的一个技术缺陷,将药物重新分配给一组患者意味着它们将被从其他患者中抽离出来。这是改变库存模式的自然机会成本。

还有一个人的机会成本。整个职业生涯都没有人工智能的医务人员将不得不适应新的模式。他们已经习惯了在医院的一个侧厅里有特定的药物,传统观念可能已经改变了。

最重要的是,一些医务人员可能不相信计算机的逻辑会比他们自己的更好。医院必须确定利用人工智能是否值得,医务人员可能会感到权力减少。

向管理层推销你的洞察力,做一名销售人员

这里的要点是,任何要实施的洞察和改进,都必须得到关键利益相关者的支持。换句话说,分析得出的结论必须卖给内部客户。

我们的内部客户关心什么?增收节支

就像销售人员在异议出现前处理异议一样,在向管理层推销见解和提议的行动时,也必须这样做。

要使用分析将想法转化为实际改进,最好使用以下流程:

1.提出一个假设,明确导致增加收入或削减成本

注意——不正确是完全可以的,这是科学的一部分。 找个没用的东西一般都不贵。认为某事可行,实施它,然后发现你的假设是错误的代价要高得多。使用托马斯·爱迪生的逻辑,你获得了什么是无效的知识。

2.确定运营中需要发生哪些变化来提高底线

3.分析进行提议的变更的机会成本

4.概述具体的后续步骤,以进一步提高底线,或者发现下一个可以实现底线的洞察力

5.向管理层阐明你的发现

在这一点上,所有的管理需要做的是给你的建议竖起大拇指或竖起大拇指。如果从你的研究中不能清楚地看出向前发展在财务上是有意义的,你可能不会提出建议。

你希望决策者尽可能容易地做出决定。通过提前处理他们可能的异议,你就不必面对“那又怎样?”在你付出了所有的努力之后。

这是底线。

本文原帖www.strataquant.com/

科学家需要知道的唯一定理数据

原文:https://towardsdatascience.com/the-only-theorem-data-scientists-need-to-know-a50a263d013c?source=collection_archive---------1-----------------------

通常,我认为可能过于强调数据科学家的技术技能了。也就是说,在一些技术领域,科学家真的应该成为专家,而在这些领域中,假设检验是最重要的。

而假设检验依赖于中心极限定理。为什么重要?这是统计学的核心思想,让你用数据来评估你的想法,即使信息不完整。

它说什么

中心极限定理 (CLT)简单。只是说样本量大,样本均值是正态分布的。

显然,其中一些术语需要限定或解释。让我们从最后开始,然后倒着做:

正态分布是指一组数字遵循一条钟形曲线。大多数数字集中在平均值附近的中间,在最右边和最左边的数字较少。看起来像这样:

A Normal Distribution

一个样本均值是一个更大群体的随机子集的平均值。因此,如果你从 100 个人中随机挑选 10 个人并记录他们的身高,这 10 个人的平均身高就是样本平均值。你可以这样做很多次,因为这是一个随机选择,样本均值每次都会不同。

什么构成了大样本当然是主观的,但是这里经常引用的数字是样本量应该大于 30。实际上,您的样本可能需要大得多,这取决于几个因素。

CLT 只是说,当你的样本中有大约 30 个或更多的观察值时,这些数字的平均值就是钟形曲线的一部分。因此,如果你选取一组 30+大小的样本并绘制它们,它们将看起来像上图中的正态分布-大多数平均值将向中心下降,但你会得到一些向极端的观察结果。

CLT 不会对基础数据的分布做任何假设。人的身高分布不需要正态分布才能知道身高的样本均值是正态分布。

为什么它很重要

现在你知道这个定理说了什么,让我们来解释为什么它很重要。假设检验是科学用来验证想法的方法。假设检验的框架总是:我拥有的数据支持我的想法吗,或者我的数据可能只是偶然的?

科学家量化偶然性的方法是,假设他们的想法是错误的,通过评估观察他们数据的可能性。因此,即使你的想法是错误的,如果你可能会看到你收集的数据,那么这些数据并不能为你的想法提供支持。有道理,对吧?

现在棘手的部分来了:当你的假设是错误的时候,你如何理解一些数据有多大的可能性?要做到这一点,你需要构建假设你的假设是错误的,你可以看到的值的范围,然后评估在这种情况下你观察到的值的可能性。幸运的是,这正是 CLT 允许你做的。

一个例子

假设你是一家软件公司的数据科学家,你被要求量化你的主页有多吸引人。你有一周的时间来得到这个问题的答案。你决定用花在主页上的平均时间作为衡量这个想法的标准,并认为如果你的主页吸引人,花在主页上的真实平均时间应该超过五分钟。

虽然你可以测量所有用户在你的主页上花费的平均时间,但这对于在一周内回答这个问题来说并不十分有效。

因此,你取 10%的用户作为样本,在 7 天内测量他们在你的主页上花费的平均时间。在这个样本中,花在主页上的平均时间是 6.2 分钟。但是与上面提到的随机组的高度一样,您的估计值也会有变化,因为您只测量了您关心的用户的子集。

因为与所有用户相比,您的样本花费的平均时间会有一些差异,所以您需要评估您的结果是偶然的可能性。也就是说,如果你在主页上花费的真实时间是 5 分钟或更少,但是由于随机变化,你测量的用户子集的平均时间是 6.2 分钟呢?

幸运的是,只要你的样本量大于 30,你就可以使用中心极限定理来构建如果你的假设是错误的,即当真实的平均花费时间不超过 5 分钟时,你在主页上花费的时间的分布会是什么样子。这被称为零假设下的分布或零分布

CLT 认为零分布将是正态的(即钟形的),它还认为可以用样本中的值来逼近构建零分布所需的值。零分布的中间值是零假设的平均值,零分布的标准差(即分布)是样本的标准差除以样本大小的平方根,该值称为标准差。这就是在零假设下建立样本均值分布所需要的一切。

然后,你可以将你观察到的值 6.2 绘制成分布图,以评估观察到该值的概率,即使你的假设是错误的。结果看起来像这样:

Distribution of Sample Means of Time on Homepage

因此,当真实平均值为 5 时,观察到平均花费时间为 6.2 的概率由蓝线右侧的绿色分布区域表示。这是从零分布中抽取的 10%随机样本大于或等于 6.2 的频率。如果这种可能性很小(在这种情况下,概率小于 1/100),你可以说你的证据表明花在主页上的时间大于 5 分钟。

贝叶斯呢?

好吧,我的标题可能有点误导。可能还有一个你应该知道的定理:贝叶斯定理

贝叶斯定理也允许你使用数据作为证据,但不是让科学家问他们的数据是否支持特定的假设,而是根据一些证据描述一系列可能的值。贝叶斯最酷的一点是,你可以随着时间的推移不断收集证据,并更新你对可能性的看法。

我将在另一篇文章中详细解释贝叶斯。同时,欢迎在下面发表评论或提出问题,或者你可以在 TwitterLinkedin 上找到我。

最优子群难题

原文:https://towardsdatascience.com/the-optimal-subgroup-puzzle-f3bfd7c3ff0c?source=collection_archive---------6-----------------------

利用机器学习算法的能力来解决不寻常的问题

如今,随着越来越多的计算机科学家/统计学家/数学家等,许多职业发生了转变。正在进入数据科学的世界。作为一名初级数据科学家,我在他们旅程的开始遇到了很多人,就像我一样。我最近想到,我遇到的许多低年级学生都有一种特定的思维模式,认为如果一个问题不能通过一个已知的模型来解决,那么它很可能是一个主要的问题,他们应该把它留给专业人员。就我个人而言,我认为即使我们作为初级数据科学家所拥有的工具也是极其强大的,我想用我所面临的一个有趣的问题来证明这一点。

我第一次遇到最优子群问题是在广告技术行业工作的时候。我是一名初级数据科学家,我的团队(实际上当时只有我一个人)的职责之一是分段过程。简单地说,给定一组描述一个人的特征,我们必须确定这个人是否喜欢鞋子、马、运动等等。但是,尽管我们实现了很高的准确性,并且在某些情况下我们甚至将特征直接映射到片段,业务人员对我们的结果并不满意:

“我们不能把一些细分市场卖给广告商,它们没有市场吸引力”。

他们进一步解释说,虽然他们完全信任我们的细分系统,但他们不能出售体育迷细分市场,例如,如果其中包含 70%的女性。“如果细分市场的统计数据对广告商没有意义,他们就不会购买”

那么我们如何处理这个问题呢?让我们继续以体育迷为例:我们有许多个人的自我报告数据,所以我们对自己的标签非常有信心。问题是,我们的数据分布与人口分布不同,这意味着我们的男女比例(或任何其他比例)可能与现实世界不同。例如,根据我们的数据和维基百科,让我们看看美国的年龄分布:

很明显,我们的数据分布不同。此外,我们还在这张图上看到了坏数据的影响,因为我们知道的 55 岁以上的人比维基百科多大约 1500 万是极不可能的。无论如何,问题就在那里,它不仅与年龄有关,还与性别、收入和其他许多特征有关。因此,为了继续使用我们的细分模型,满足业务需求,我们需要解决最优子组问题:

给定一组数据点 G,其在特征集 F 上具有分布 P,找出最大的子组 G’,其在 F 上具有想要的分布 P’

请记住, G' 的大小直接影响 P' 。有可能某个 G' 会和 P' 完全匹配,但是如果这个同一个 G' 包含五个人,那么我们就真的卖不掉这个组了,不是吗?

那么我们如何解决这个问题呢?

我们面临的问题没有直接的“scikit-learn-implemented”解决方案。但是,使用我们的数据科学工具箱中的基本但令人惊叹的工具,可以打造出一个优雅的解决方案。让我们想想最优解:如果我们有一只知道最优解的小鸟,那么它可以告诉我们每个人是否被包括在G’中。所以也许,我们可以把这个问题转化成一个更简单的二进制分类问题。由于最终我们想要优化G’,选择逻辑回归似乎是很自然的,它使用梯度下降来找到最小化误差的解决方案。

问题是我们的数据没有标注,所以我们必须定义一个符合我们需求的损失函数。我们这样定义损失函数:

为什么我们不把这两种误差加起来呢?这是因为从商业角度来看,我们更喜欢比细分市场规模更高的比率准确性。对于上面的公式,如果片段大小误差很小,损失函数仍然取决于特征比率误差。另一方面,如果特征比率误差很小,损失函数将不会受到片段大小误差的太大影响。

现在让我们使用 MSE 估计量来定义单个误差:

The definition for segment-size-error

The definition for feature-ratios-error

我们将像一般回归模型一样进行:首先,我们将使用一组权重来计算谁在G’中。然后,我们将使用误差导数来更新同一组权重。但是在我们继续之前,让我们考虑一下我们想要处理的数据的结构。正确的功能将有助于加快计算速度,并扩展矢量化的使用,您将在接下来看到这一点。

我们处理了我们的输入数据, X ,,以便在其他特征中,它还将包括 F 中所有特征的二进制形式,这些特征是我们试图优化分布的特征。例如,特征年龄被分成我们关心分布的桶:即年龄 _18_24年龄 _25_30 等……(一热编码)。再比如:特征性别被转化为二元特征是 _ 男

为什么我们需要这些二进制特性?因为它们让我们可以很容易地计算出想要的比率,而且很快。假设我们有标签向量 y ,那么计算每个特征比率就简化为这种矢量化形式:

X at feature represents the feature column in X

我们如何得到标签向量, y ?类似于逻辑回归模型:

For person i, y is the logistic function applied to f(w)

f(w) gives each person a “score” based on his/her features

最后,我们准备好找到我们的重量!

计算误差导数

让我们对权重向量 E_total w.r.t,w求导:

E = Error, t = total, f = feature-ratios, s = segment-size

段大小误差导数真的很简单,这里就不描述了。我仍然想展示特征比误差导数,因为它可以使用我们的二元特征很好地矢量化。根据商法则,特定特征对所有数据点 i 的特征比率误差的导数等于:

如果我们定义:

我们得到导数(w.r.t 特性 a )等于:

The feature-ratio error derivative for specific feature a. The sums are over all data points.

这真的很酷,但事实上,这可以进一步矢量化,如果我们用 X 替换特征 a 处的 X 以及我们关心的所有特征 F

结果

所以当我们开始这个项目的时候,我们没有定义一个片段大小的错误。这导致该部分的人数下降了近一半,但比率看起来很大:

The first run of the algorithm, no segment-size error was defined.

根据这些结果,我们将片段大小误差添加到特征比率误差,并得到这些数字:

Too many people, feature-ratios accuracy dropped sharply

这显然太咄咄逼人了。最后,我们想出了上面给出的公式,并得到了这些结果,在质量和数量之间找到了一个平衡点:

所有结果中值得注意的一点是,该算法是如何与年轻人和老年人进行斗争的。我们的数据分布高度偏向老年人,这在结果中可以清楚地看到。但是,嘿,商业人士对我们从扭曲的数据中得到的比率很满意,我们在 不到一分钟就在 20 万人身上收敛了!****

总而言之,我看到初级数据科学家坚持已知和已实现的东西。这显然不坏,但是不要害怕使用你所拥有的工具来解决不重要的问题,它可能会起作用!

音乐事物的顺序

原文:https://towardsdatascience.com/the-order-of-musical-things-4ccdb3450d76?source=collection_archive---------6-----------------------

对 18,000 条 Pitchfork 评论的分析

我记得读过的第一篇 Pitchfork 文章是大卫·克洛斯的特写,专辑,在阅读过度紧张的 Pitchfork 评论时听,它嘲笑了该网站的多音节吉他粉碎,这是一种将单词打包成沙丁鱼罐头的风格。在其最佳状态下,Pitchfork 熟练地完成了艺术评论家的一项工作,即赋予作品以意义。但这个网站一直遭受着口头烟火的副作用,要么令人眼花缭乱,要么令人焦头烂额——对火星沃尔塔的哑巴弗朗西斯的评估是“不顾一切地想要尽可能地毗连,结果是一堆同质的意识流浮夸”,两者兼而有之。即使诞生才几年,Pitchfork 就已经产生了足够多的自我模仿,以至于 Cross 可以让网站的档案做很多讽刺性的提升:

一边读着《动物评论》的歌曲《大钳》。(以下是一个简短的摘录):“最柔和的声音”将清晰的吉他声音层层叠叠,塔雷和贝尔在上面和谐地低语,仿佛在对着从边远地区小溪的皮肤窥视他们的视觉唱歌。他们质朴、神秘的声音和他们周围几乎没有受到干扰的森林表明,无论是什么样的鬼魂居住在这些森林里,他们都非常乐意听一两首摇篮曲。同样,史诗《拜访朋友》聚集了面目全非、变异的幽灵(即,二人组奇怪地操纵了声音),以树顶的面目盘旋在他们垂死的火上。”为什么不听听蒂沙拉·奎尔费瑟的《我变成了我们》。世界上唯一一个生活在铁肺里的三倍黄金销量的美国土著艺术家的致命和密封的渴望。这就好像刚刚死去,仍然是纯洁的天使,把手伸进圣母的喉咙,轻轻地发出人类此生希望听到的最甜美、最哀怨的声音。评分:7.17

让 Pitchfork 超越其紫色散文的是其令人难以置信的精确评级系统,即相信它可以以分米精度识别每张专辑的好坏程度。Pitchfork 总是提供比模糊的暗示更多的东西,比如某样东西属于四颗星附近,并承诺更精确的东西,暗示着,更真实的东西。

今年 5 月,一位名为诺兰·康威的数据科学家搜集并上传了 18000 条 Pitchfork 评论,并将它们放到了 Kaggle 上。问 Pitchfork 的评分系统(我会将其与一般的书面批评区分开来)是否有一种可识别的方法不同于问这种方法是否可以通过数据分析来识别。但是,如果 Pitchfork 的大量评论的分数很容易通过图表和代码显示出来,这将比克罗斯先生所能收集到的任何东西都更具讽刺性。

这是我们数据集的鸟瞰图,是 R:

##      score        best_new_music                   author     
##  Min.   : 0.000   Min.   :0.00000   joe tangari       :  815  
##  1st Qu.: 6.400   1st Qu.:0.00000   stephen m. deusner:  725  
##  Median : 7.200   Median :0.00000   ian cohen         :  699  
##  Mean   : 7.006   Mean   :0.05128   brian howe        :  500  
##  3rd Qu.: 7.800   3rd Qu.:0.00000   mark richardson   :  476  
##  Max.   :10.000   Max.   :1.00000   stuart berman     :  445  
##                                     (Other)           :14729  
##               author_type          pub_date      pub_weekday   
##  contributor        :12420   2000-03-31:   15   Min.   :0.000  
##                     : 3904   2000-04-30:   14   1st Qu.:1.000  
##  senior editor      :  486   2001-03-31:   13   Median :2.000  
##  executive editor   :  475   1999-04-20:   12   Mean   :2.107  
##  senior staff writer:  439   2001-02-20:   11   3rd Qu.:3.000  
##  contributing editor:  210   1999-06-08:   10   Max.   :6.000  
##  (Other)            :  455   (Other)   :18314                  
##     pub_day        pub_month         pub_year             genre     
##  Min.   : 1.00   Min.   : 1.000   Min.   :1999   rock        :7815  
##  1st Qu.: 8.00   1st Qu.: 3.000   1st Qu.:2005   electronic  :2900  
##  Median :15.00   Median : 6.000   Median :2009               :2365  
##  Mean   :15.53   Mean   : 6.283   Mean   :2009   rap         :1413  
##  3rd Qu.:23.00   3rd Qu.: 9.000   3rd Qu.:2013   experimental:1141  
##  Max.   :31.00   Max.   :12.000   Max.   :2017   pop/r&b     :1128  
##                                                  (Other)     :1627  
##            label         diversity          length      
##  self-released:  419   Min.   :0.0000   Min.   :   0.0  
##  drag city    :  263   1st Qu.:0.5448   1st Qu.: 498.0  
##  sub pop      :  261   Median :0.5778   Median : 604.0  
##  thrill jockey:  241   Mean   :0.5771   Mean   : 650.1  
##  merge        :  231   3rd Qu.:0.6108   3rd Qu.: 746.0  
##  warp         :  210   Max.   :0.8889   Max.   :3688.0  
##  (Other)      :16764

已经出现了一些问题:

  • 汇编比比皆是,“各种艺术家”有 687 张专辑。最受欢迎的团体/艺术家由声音引导。
  • 一张专辑入选 Pitchfork 的年度年终最佳新音乐是由 1 来表示的,而不是由 BNM 排行榜中的排名来表示的,这太糟糕了,但康威先生想到将这一点包括在内是件好事。
  • 摘要功能中网站的所有顶级发布日都来自 Pitchfork 的早期,Pitchfork 成立于 1999 年 1 月。
  • DJ Kicks mixtapes 是评论最多的专辑系列。
  • 太多的艺术家制作了以罗马数字命名的专辑系列。
  • Monteal 的 20 张专辑看起来太多了。

分数是这样下降的:

或者准确地说:

##Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##0.000   6.400   7.200   7.006   7.800  10.000

左偏的数据几乎是正常的,这意味着我们可以使用老师教给我们的所有常用的统计技巧。Pitchfork 的评分似乎是曲线型的——如果你发行一张专辑,你可能会得到接近 c 的分数。

需要注意的是,数据集包含许多具有重叠行的专辑,以说明每个不同的流派类别(一张电台司令专辑有他妈的 20 行),并且许多行被删除,以便专辑不会出现多次(例如,20),Pitchfork 语料库中的流派分配相应地细分如下:

这张图表可能会诱使人们开始思考这些类别意味着什么——“电子”是否是一种真正的音乐类型,为什么非美国音乐似乎被归类在原始的“全球”类别下,Pitchfork 的批评如此集中于摇滚意味着什么,这一切都说明了音乐的状态。克罗斯的讽刺作品更多地反映了 Pitchfork 的评论并不像约翰·埃利奥特·加德纳(John Elliot Gardner)的评论那样是关于音乐的,因此清唱剧被分解到组件层面。如果我们屈服于这种诱惑,我们中的一个人可能会说,也许爵士乐很少受到关注,因为 Pitchfork 的机构不是为处理这种程度的音乐深度而建立的,所以它服从于那些意义在于文化和娱乐而不是真正艺术的平衡的项目,音乐已经变得更像娱乐而不是艺术,这似乎只是可能,但并不确定。从这张图表中我们能看到的是,Pitchfork 评论了很多摇滚,但它也越来越多地评论其他音乐流派。

Medium will only let place your image in the center or on the left side. You cannot place it on the right side. Lol.

乍一看,类型似乎对 Pitchfork 如何分配分数并没有太大影响。问题是,在处理数据时,应该对眼神给予多大的重视。在很大程度上,眼神已经取代了以前流行的测试重要性的方法。看到环球和爵士得分的小幅上升了吗?这有关系吗?我可以证明,对这些数据进行显著性测试的结果是肯定的。全球类别有 144 篇评论。这意味着你必须从其他类别中抽取 144 篇文章,看看它们的平均分是否足够相似,以至于它们不是随机发生的。如果你这样做,测试会告诉你它们实际上是非常重要。但这是 2017 年——没人再关心 p 值了,但它们提供了一个有趣的紧张点。

Reviews by year and genre. The blue line is the mean score.

我们可以假设,不同的评论家群体对他们的主题或多或少比其他人宽容,但在我们开始这一切之前,请允许我转移话题,向你介绍作家的当代状况:

这是一个偶然的视觉化现象,开始是一个关于作者类型的分数如何分解的问题,结果是我见过的现代媒体对自由职业者依赖的最鲜明的图像。不幸的是,这当然不是 Pitchfork 特有的。作为一个在其他出版物的图表中以绿点自居的人,这是一颗美丽而可怕的超新星。

但是即使碎片被扫除,也只有另一个模棱两可的非结论。

这与体裁假说有着同样的局限性,也就是说,也许作者之间的一些重大差异,但这是一个没有反驳机会的猜想。根据手头的数据,认为一个助理评论编辑是一个特别阿谀奉承的批评家是不合理的。因此,我们可能会找到另一种方法,首先看看得分是否与多产有关。

Pitchfork 有一群忠实的作家;人均评论数的中位数是 123。这里的假设是,随着作家获得经验,他们会润色和强化自己的观点,或者他们会明智和软化自己对他人缺点的观点——无论哪种方式,事情都会发生变化。

事实证明,这两个都不是真的。相反,作者被统计学的铁律所束缚。在这种情况下,规则是中心极限定理。CLT 是统计定理的基石,它指出,如果你有任何分布的数据,你从这些数据中取样,取这些样本的平均值,这些数据的分布将是一个正态的钟形曲线。谁不为在野外看到数学现实而感到有点眩晕呢,瞧,它就在这里。你写的评论越多,你的平均分就越接近 7.0 左右的平均值。(顺便说一句,正如我们的老朋友帕累托所承诺的那样,最多产的 20%的干草叉评论作者负责评论总产量的 80%。)

与高分相关的是评论的长度。

这很有趣,但它并没有真正让我们预测未来;它没有告知我们对 Pitchfork 高度评价的音乐类型的理解,只是一旦已经评价了它们,如果分数更高,评价可能会更长。从逻辑上讲,这是有道理的:一个作家会滔滔不绝地谈论他/她已经爱上的一张专辑,而一张糟糕的专辑更有可能(尽管肯定不确定)被迅速打发掉。例如,看到左下角的那条路了吗?如果我没记错的话,那应该是人造革的 40 强女主人 Jet,Pitchfork 对它的评价是 0 分,只不过是一张黑猩猩往自己嘴里撒尿的. gif 文件。

subset(reviews, score == 0 & length == 0)reviewid   title      artist
605494     shine on   jet

英雄联盟

下面简要介绍另一系列寻找分数和变量之间相关性的失败尝试。例如,这个变量:

平均分一直保持稳定。即使是艺术家达到顶峰然后下降的假设,也很容易被反驳,因此可以通过新专辑在艺术家作品序列中的位置来预测分数,正如这张热图 quadriptych 所示:

Left: a messy heatmap of album scores by album number. Right: a clean heatmap of scores for artists with exactly ten albums. It turns out you CAN post pictures on the right side on Medium but only if you simultaneously upload them with another picture. I don’t know how this is anything but a bug.

Left: scores for artists with nine albums. Right: scores for artists for artists with 20 albums. You get the idea.

如果你从这些热图中发现任何信息有困难,我会让它变得更容易。下面,你可以看到所有拥有超过八张专辑的艺术家的总体情况,并看到随着艺术家曲目的增加,他们在分数方面没有太大变化。(Medium 有时不能很好地与第三方合作,而且很明显,R 中用于制作该图的 viz 库[以及 javascript 包装器的极少数选择之一]需要登录。如果你在下面看到的看起来不太对,一个捕捉到它大致主旨的截图是这里。)

Mouse over each data point for details.

还记得几个散点图吗?当时我们努力观察体裁是否与更高的评论分数相关联?我说我进行了统计测试,看看事实上是否如此。这是测试的代码。你不需要密切关注它,只需要了解它的周长:

set.seed(1984)myVars = c(‘genre’, ‘score’)jazz <- subset(reviews, genre == ‘jazz’)[myVars]
global <- subset(reviews, genre == ‘global’)[myVars]
rock <- subset(reviews, genre == ‘rock’)[myVars][sample(1:nrow(subset(reviews, genre == ‘rock’)), 144,
 replace=FALSE),]
rap <- subset(reviews, genre == ‘rap’)[myVars][sample(1:nrow(subset(reviews, genre == ‘rap’)), 144,
 replace=FALSE),]
electronic <- subset(reviews, genre == ‘electronic’)[myVars][sample(1:nrow(subset(reviews, genre == ‘electronic’)), 144,replace=FALSE),]
pop <- subset(reviews, genre == ‘pop/r&b’)[myVars][sample(1:nrow(subset(reviews, genre == ‘pop/r&b’)), 144,replace=FALSE),]
metal <- subset(reviews, genre == ‘metal’)[myVars][sample(1:nrow(subset(reviews, genre == ‘metal’)), 144,replace=FALSE),]
experimental <- subset(reviews, genre == ‘experimental’)[myVars][sample(1:nrow(subset(reviews, genre == ‘experimental’)), 144,replace=FALSE),]
country <- subset(reviews, genre == ‘folk/country’)[myVars][sample(1:nrow(subset(reviews, genre == ‘folk/country’)), 144,replace=FALSE),]testing <- rbind(jazz, global, rap, rock, 
 electronic, pop, metal, experimental, country)testing.numbers <- group_by(testing, genre)test <- lm(score ~ genre, testing)anova(test)

所有这些代码都产生了一堆输出,看起来像是:

Call:
lm(formula = score ~ genre, data = testing)

Residuals:
    Min      1Q  Median      3Q     Max 
-6.8465 -0.5593  0.2375  0.8104  3.0722 

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        6.9458333  0.1020924  68.035  < 2e-16 ***
genreexperimental  0.4166667  0.1443805   2.886 0.003962 ** 
genrefolk/country  0.3909722  0.1443805   2.708 0.006852 ** 
genreglobal        0.4854167  0.1443805   3.362 0.000794 ***
genrejazz          0.5134394  0.1260184   4.074 4.87e-05 ***
genremetal        -0.0562500  0.1443805  -0.390 0.696894    
genrepop/r&b       0.0006944  0.1443805   0.005 0.996163    
genrerap          -0.2604167  0.1443805  -1.804 0.071493 .  
genrerock         -0.0180556  0.1443805  -0.125 0.900497    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.225 on 1418 degrees of freedom
Multiple R-squared:  0.04874,	Adjusted R-squared:  0.04337 
F-statistic: 9.081 on 8 and 1418 DF,  p-value: 3.106e-12

Analysis of Variance Table

Response: score
            Df  Sum Sq Mean Sq F value    Pr(>F)    
genre        8  109.04 13.6302  9.0814 3.106e-12 ***
Residuals 1418 2128.26  1.5009

在英语中,这意味着某些体裁与更高的分数相关,但只是分数的一部分。这是几十行代码,输出几十行结果,但结果并不起眼,含糊不清,它是你刚刚阅读的所有内容的简写——一个又一个图表,总共几百行代码和 RStudio 中的许多小时,产生了许多漂亮的颜色,却没有多少信息。

我在玩数据集的时候注意到了一些东西,我喜欢它的地方是,在所有的分析和与 R 库的对抗、刻面包装以及显示几乎没有实质性相关性的多元散点图和热图之后,也许从一个 800 兆字节的 18,000 行数据的文件中唯一重要的洞察可以从一个只有四个单词和两个数字的单行命令中收集到,

head(subset(reviews, score == 10), 20) artist                  album                               pub_year
beastie boys            paul's boutique                      2002
boards of canada        music has the right to children      2015
bob dylan               blood on the tracks                  2009
bonnie prince billy     i see a darkness                     2004
brian eno               another green world                  2016
bruce springsteen       born to run: 30th anniversary ed...  1999
can                     tago mago [40th anniversary edition] 2016
dangelo                 voodoo                               2005 
david bowie             "heroes"                             2011
david bowie             low                                  2012
dj shadow               endtroducing... [deluxe edition]     2016
elvis costello & the attractions   this year's model         2016
fleetwood mac           rumours                              2005
glenn branca            the ascension                        2002
gza                     liquid swords: chess box deluxe ed...2013
james brown             live at the apollo [expanded ed...]  2003
j dilla                 donuts (45 box set)                  2012
john coltrane           the olatunji concert: the last li... 2004
...and you will kno...  source tags and codes                2002
a tribe called quest    people's instinctive travels and...  2015

以下是这 76 张专辑中满分为 10 分的前 20 张。在 20 张专辑中,除了一张之外,其他都是在专辑(或者专辑中的音乐,如果是选集/再版)实际发行多年后创作的。那是在作者开始怀念在泽西城外听着老板哼唱长大的岁月之后,在这张专辑被引入国家经典之后,在关于这是否是一件伟大艺术作品的争论尘埃落定之后。具有讽刺意味的是,我们在数据科学方面的考察的关键教训是,我们不需要运行一个测试或绘制一个图表就可以知道,没有什么比专辑发行日期和评论日期之间的差异更能预测谁会得到 10 分。这是为什么呢?2016 年给《赛道上的血》打分还有什么意义?也许这在一定程度上是一种信号,表明作者意识到一件事有多重要,当他们看到它时,他们有批判的眼光知道它是 10 分。但这是 Pitchfork,根据我们的计算,分数越高,作者就越有可能为一张专辑的荣耀唱赞歌。分配一个 10 就是做一个十字的标记,这就是为什么塔戈玛戈现在在干草叉的礼拜仪式中,被认可为完美而神圣。7.37.4 有什么区别?其实没什么,但小数点的存在只是为了给人留下这样的印象:对流行音乐的评估是用科学的严谨来证明的,并输出准确、客观、非人为的结果——强加于或多或少无序的事物上的任意秩序实际上一点也不任意。但 9.910 的区别,是衡量和崇拜的区别。

作为一个创造内容的人,我在法律上有义务经营一份个人时事通讯。可以在这里报名

贾卡坦的起源

原文:https://towardsdatascience.com/the-origin-of-jakartan-793f721369f6?source=collection_archive---------1-----------------------

使用印度尼西亚 2014 年大选数据,免费可视化 700 万人的来源。

这是大约 2014 年贾卡坦的家乡的地图。它仅包括迁移到雅加达的超过 1,000 人的始发城市,线宽与实际人数的对数值成比例,范围从 10 到 10⁶.每种颜色代表它们目前的居住地:雅加达南部、北部、西部、东部或中部。你能猜出哪个颜色代表哪个吗?

怎么开始的

故事是这样的,我一直想对印度尼西亚选民名单数据做些什么,原因很简单:

  1. 它是巨大的。准确地说,是 188,268,423 个独立选民。我不想用 B 字,因为它不是太大的东西。根据我在餐巾纸背面的计算,整个数据集实际上可以放入一个 50 美元的 USB 闪存盘。然而,对于一个公开可用的数据集来说,这仍然是了不起的!
  2. 这是公开的。实际上有点可怕的是,每个选民的名字他们住在哪里(下至村一级)本身可供任何人周围浏览,但如果它已经开放了,为什么不实际使用它,对吗?为了安全起见,我问了我的从事选举工作的非政府组织朋友和选举委员会的一名委员,他们确认名单本身确实是公开的,没有规定如何在选举范围之外使用。
  3. 很容易接近。这一次,它不是在一个 PDF 格式的错位影印表格里!

Like, one Chrome Inspector and an overnight Python script away

你可以立即看到,虽然他们的详细地址、性别和年龄没有被列出(这是应该的),但一个不寻常的变量是:出生地。当然,你可以很容易地从统计局的印度尼西亚 2010 年人口普查中得到同样的而且编码更好的东西,他们会很乐意给你一些美元,但是你必须填写一张表格。呀。不,我们就刮刮看能刮多远。

欺骗性的简单部分

唯一的问题是,我不知道如何轻松地处理数据,因为整个事情超出了我的笔记本电脑的能力。幸运的是,Google BigQuery 来了!类似于:

SELECT KELURAHAN, TEMPATLAHIR, COUNT(*) AS CNT FROM DPTS GROUP BY KELURAHAN, TEMPATLAHIR WHERE PROVINSI = 'DKI JAKARTA'

在 15 秒内给了我们这样的东西:

I don’t want to disclose how many times I screwed up the SQL query

然而,与任何数据探索实践一样,它从来没有那么容易。打开 Rstudio 或 ipython 笔记本,你会发现出生地一栏有多少唯一条目的问题:

For the purpose of this post, it looks fancier than R

120,000 分为雅加达的 5 个部分,理想情况下应该产生大约 24,000 个独特的家乡名称,而不是几乎 80,000 个。整个印度尼西亚只有 32 个省,大约 500 个区和 80,000 个村庄。数据本身来源于国家身份数据库,该数据库被认为是生命、宇宙和一切事物的答案。他们用超级昂贵的电脑系统建立了整个银河系中每个印尼人的数据库。不会错的。

But I can be wrong about them.

遗憾的是,在 Open Refine 中打开数据集并运行聚类功能会给你带来坏消息。我几乎能听到程序在我耳边轻声低语,“我知道这是什么感觉。你无能为力。记住这是计划的一部分。”

亲爱的善良的人们,你们所看到的是 22,000+串拼写相似的地方中的一个。错别字是真的。实际上,我在选举委员会网站上查看了几十个,只是为了确保这不是我的刮刀在搞怪。在某个地方,不知何故,一个真正的政府官员在公民身份证中输入了 JQKARTA、JUAKARTA、JAKARTAT 或以上许多变体中的一个,而不是 Jakarta 作为他/她的出生地。

你可能会认为他们实际上在系统中有下拉菜单而不是文本框。走吧。这是该死的雅加达,不是谷歌地图上的随机标记。它已经在那里叫了 50 年了。

更糟糕的是,构成出生地的并不总是一个城市。该值实际上从一个村庄的名称(没有任何其他地理标志)到一个国家。即使拼写正确,它也可能拼写不同(Singapura 而不是 Singapore),缩写(Tanjung 变成 Tjg 或 Tj),或者含糊不清(它是 X 村庄,城市,还是分区?那个省的还是另一个省的?).

all hail r/HighQualityGifs

虽然数据是免费的,但我的时间不是。

继续前进

最后,我希望这只是一个数据可视化练习。我要花好几个小时来清理那糟糕透顶的烂摊子。我选择了罪恶的全选,合并选择,然后关闭聚类窗口。我接受了那些相似名字的默认合并。

几分钟过去了,OpenRefine 崩溃了。

我只选择了有 1000 人来自始发地城市的那对,其余的都删掉了。愿数据科学之神原谅我,因为我犯了严重的罪。

我将每一对居住地-家乡配对与我定制的、手工制作的、本地采购的地理编码器进行比对,该编码器的工作是将纬度和经度分配给每个地理区域。我还创建了一个额外的字段,包含人数的对数值,从一百万到一千人不等。经过几次手动编辑,我有了两个节点和边的 CSV 文件。

Aww yiss.

现在让我们把它形象化!我总是对航线图情有独钟。

If only I can afford something beyond zero-mileage promo ticket.

让我们看看这样做是否有意义。启动 Gephi ,将节点文件加载到节点数据库,将边文件加载到边数据库。这是一件轻而易举的事。将新创建的日志值指定为边权重。安装 GeoLayout 插件,分配纬度和经度列。单击应用。嘣。

We’re on to something!

现在,将这个漂亮的东西导出到一个制图平台,将其覆盖在一个同样漂亮的底图上,实际上是有意义的。不幸的是,最新版本打破了唯一的 Shapefile 导出插件,该插件自 2013 年以来一直没有更新。好了,剩下唯一要做的事情就是将图片导出为 4000x4000 PNG 格式,并使用盗版照片手动覆盖它…我的意思是,你可以选择免费的图像编辑程序。你完了!

但是为什么不把它变成互动的呢

是的,你可以使用 CartoDB 来绘制它,即使是在免费帐户上。上传两个相同的文件,从节点层创建一个新的地图,感谢他们的便捷教程,在 SQL 选项卡上使用它:

SELECT a2.cartodb_id,
 a2.name,r.dest,r.cnt,r.origin,r.log,ST_Transform(
 ST_Segmentize(
 ST_Makeline(
 a2.the_geom, 
 a1.the_geom
 )::geography, 
 100000
 )::geometry,
 3857
 ) as the_geom_webmercator
FROM node a1
JOIN edges r ON r.source = a1.id
JOIN node a2 ON r.target = a2.id

上面的脚本将从每个城市对创建大圆线。我再次应用了一些额外的样式规则,根据对数值改变线条的粗细,并根据住所区分线条的颜色。现在你可以平移和缩放了!将光标悬停在线上,您可以看到家乡名称以及编号。嵌入的地图可能对你的手机屏幕来说太小了,但是你可以在这里访问全屏版本

Things rarely looks bad on CartoDB.

最后的想法

老实说,这几千个错别字的事情是个败笔。如果一开始就没有这个疯狂的问题,地图看起来会酷得多。不过,考虑到所有的事情,我认为这仍然是一个有趣的 dataviz 迷你项目,它使用完全免费的软件和服务,从一个用于完全不同目的的数据集开始。

几个月后,数以百万计的贾卡坦人将体验穆迪克,即在开斋节回到家乡的仪式。那些活着的人将再次回到他们出生的地方,他们的家人生活的地方。这不仅仅是一个传统,而是一种逐渐消失的与千里之外的地方的联系,在那里他们曾经开始了漫长的旅程,

曾经被称为家的地方。

PAC 框架:非技术高管应如何看待人工智能

原文:https://towardsdatascience.com/the-pac-framework-how-non-technical-executives-should-think-about-artificial-intelligence-b2d733036a52?source=collection_archive---------5-----------------------

很多不在技术边缘工作的人问我,他们应该对人工智能做些什么。我已经就此谈过几次,并决定是时候把它写下来了。我有一个叫做 PAC 框架的框架,代表预测、自动化和分类,这是一个非技术公司的高级管理人员思考人工智能的有用方式。

首先我们应该问这样一个问题,如果你的公司技术水平不高,你还需要关注人工智能吗?答案是肯定的。人工智能正在加速扩张,这让我想起了你有时在智商测试中看到的莉莉帕德问题。如果池塘里的睡莲每天翻一倍,花 30 天时间覆盖整个池塘,哪一天它们覆盖了半个池塘?有人会说第 15 天,但答案是第 29 天。

假设你是负责观察池塘和留意睡莲叶子生长的人。26 天来,你几乎察觉不到任何变化。也许还有一些睡莲叶,但是,这很难讲,因为它们只占池塘的 6%。在第 27 天,你意识到他们已经成长了一些,你想知道这是一种趋势还是一种异常,所以再等一天以获得更多的信息。在第 28 天,很明显他们长得更快了,所以你打电话给你的老板,他在第 29 天过来检查了一下,并提出了一个计划。但为时已晚。明天池塘会被覆盖。

如果你坐下来对人工智能采取“等等看”的方法,这将会发生在你身上。这个想法在WaitButWhy 博客上的这篇 2015 年的优秀文章中得到了体现,这篇文章强调了为什么我们可能处于睡莲叶子的晚期(以此类推),并且接近人工智能的爆炸。如果你相信这个,你能做什么?你现在就可以开始投资人工智能,一小步一小步地学习和实验。但是怎么做呢?

人工智能可以做的事情很多,而且很容易被所有很酷的前沿研究所吸引。这不是开始的地方。你应该从制作一个网格开始,我称之为 PAC 网格。PAC 代表预测、自动化和分类,这是目前人工智能技术可以做得很好的三件事。

要创建第一个网格,需要创建三列,一列用于预测,一列用于自动化,一列用于分类。然后在横排上,列出你业务的关键领域。例如,您可以列出:客户、产品和运营。然后在每一个方框中,你可以找出具体的人工智能方法如何应用于你的业务领域。在第一阶段,头脑风暴一下,把你能做的事情都填到盒子里。

让我们以客户行为例。你能预测什么?你可以预测谁会购买,谁会留下,谁会流失,等等。你能自动化什么?你可以自动化产品培训,你可以自动化客户支持查询。你能分类什么?您可以对客户进行分类,以预测谁可能想要升级,或者谁可能是您的最大用户。

这听起来可能平淡无奇。你不能这么做吗?是的。在某些方面,你可能已经在使用基本的统计模型来做上面提到的一些事情。与人工智能的区别在于,这些系统将进入下一个阶段,并开始学习和改变,并自行做出反应。这是关键。

你可以开始问其他问题,比如:

  • 我们可以用人工智能来自动化我们的哪些操作?
  • 在我们的产品和产品流程中,我们可以在哪些方面用人工智能做得更好?
  • 我们业务中的哪些领域因为复杂而需要人工分类?

这些都是开始考虑小规模人工智能实现的好地方。

一旦你有了你的 PAC 表,你就要像你做任何商业决策一样,浏览一下能提供最大投资回报的项目,然后从那里开始。但当你考虑长期投资回报时,你必须考虑人工智能飞轮。在许多人工智能系统中,更多的数据给你一个更好的训练模型,这给你更好的客户体验,这给你更多的客户,这给你更多的数据,这给你一个更好的训练模型……明白吗?如果你有一个领域可以开始建立一个可防御的飞轮——一个一旦开始,你的竞争对手就很难抓住你的飞轮,那么就从那里开始。为什么?因为时间对人工智能飞轮很重要。

注:有一类统计学习 也叫 PAC

数据科学中演绎推理的悖论,以唐纳德·特朗普的推特账户为特色

原文:https://towardsdatascience.com/the-paradox-of-deductive-reason-in-data-science-featuring-donald-trumps-twitter-account-43839d4dda82?source=collection_archive---------3-----------------------

Source: Library of Congress

“这确实是一个谜,”我说。“你认为这意味着什么?”

“我还没有数据。在没有数据之前就进行理论化是一个严重的错误。不知不觉中,人们开始扭曲事实以适应理论,而不是让理论适应事实。而是纸条本身。你从中推断出什么?”

亚瑟·柯南道尔福尔摩斯:*波希米亚丑闻*

演绎的,定义的

是的,“演绎”是一个真实的词。这是我们为我们的公司选择的名字。我们选择它是因为它与逻辑和科学方法的理性关联,以及它与一个伟大的虚构侦探的情感联系。

但是,在数据科学术语中,这可能是一个糟糕的选择。

演绎推理的完整含义——因为它与演绎推理相关——仅代表数据科学中解决问题的三种主要模式之一。其他方法——归纳溯因推理——实际上更重要。理解它们揭示了数据科学中的一个悖论,这个悖论与事实的本质、概率以及商业决策所需的举证责任有关。

演绎推理用事实找事实

演绎推理是自上而下的:你从事实开始,形成一个假设,然后用更多的事实进行检验,得出一个不可避免的结论。换句话说,你将事实从一般理论归纳为具体的事实结论。

例如,从亚里士多德关于苏格拉底死亡率的著名三段论建模:

  1. 唐纳德·特朗普有一个个人推特账户
  2. 唐纳德·特朗普赢得美国总统大选
  3. 总统从他的个人账户发推文

尽管这一论点(以及推文)的可靠性值得怀疑,但它很能说明问题。我们通过还原事实来寻找事实。因此,演绎过程非常适合于结论的确定性至关重要的研究领域。

但是演绎法的应用也隐含地受到事实的可获得性和前提的确定性的限制。在数据科学在商业环境中的实际应用中,这可能是一个问题。

归纳推理利用事实来推断结论

当你有一个本身不确定的假设时会发生什么?归纳推理采取自下而上的方法。通过归纳推理,你可以从具体事实中推断出一般理论。在数据科学术语中,你检查一大组数据,以确定你的假设正确的概率。

  1. 唐纳德·川普的推文来自 iPhones 和安卓设备
  2. 川普安卓设备上的推文有 40-80%是负面的
  3. 唐纳德·特朗普在安卓设备上发推特;他的员工使用苹果手机

在 2016 年美国总统竞选期间, Stack Overflow 的大卫·罗宾逊使用归纳推理(通过情绪分析)来探索他和其他人的直觉:特朗普最夸张的推文直接来自他自己的私人手机,而他更公平的推文来自他的竞选工作人员,主要是在 iphone 上。

虽然这些发现令人着迷,并且总体上证实了大卫的预感,但这些结论不能被称为确定的(即使它们在 2017 年再次被证实)。正如霍姆斯指出的,事实可以被扭曲以符合理论。

但是理解一个问题或者做出一个商业决策到底需要多少确定性呢?归纳推理提供可能的结论,而不是确定的事实。

溯因推理利用事实来推断最可能的解释

在数据科学(以及一般的科学)中,有时你不知道你试图解决的问题的确切性质——或者有一套完整的观察来创建一个理论。哲学家认为溯因推理是归纳推理的一种,它推断出最符合可观察事实的假设。

换句话说,当我们找到一个比任何其他选项都更好地解释数据的模型时,这个模型很可能就是正确的模型。数据科学的这一部分是最具创造性的,需要灵活性和想象力,以及对数据可能误导的敏锐理解。

事实上,霍姆斯的许多著名推论实际上都是溯因推理的例子。当他提出一个神秘谋杀案的解决方案时,他利用证据创造一个最符合现有事实的理论。他的才华在于他发现事实和创造理论的能力,而不是他对演绎推理的运用。

在这里的演绎,我们从福尔摩斯的创造者那里获得灵感,不要太纠结于演绎、归纳和溯因推理之间的语言和哲学差异。尽管数据科学基于统计学和数学理论,但创造性思维和战略洞察力对做出正确决策更为重要。

难以捉摸的市场边缘的悖论

原文:https://towardsdatascience.com/the-paradox-of-the-elusive-market-edge-5e6b57b04398?source=collection_archive---------4-----------------------

你尝试得越多,成功的机会就越高。人们可能会认为,这一适用于日常生活的经验证的启发法也适用于试图在市场中寻找优势的时候。但是这种启发不适用于这种情况,实际上,这是失败的原因。其原因是数据挖掘偏差,当一个人试图在办公室找到一支丢失的钢笔或存储在计算机磁盘上的文件时,这种影响并不存在。

数据挖掘偏差

交易者和投资者通常试图通过测试历史数据的各种想法来找到市场边缘,以确定他们的历史盈利能力。实现这一点的过程被称为回溯测试。这个想法原则上很简单:开发一个数学模型,然后用历史数据进行测试。然后,使用回溯测试中未使用的新数据和各种其他验证方法来验证性能。如果模型性能不令人满意,则要么对其进行修改,要么开始寻找新的模型。这一过程的示意图如下所示[1]。

Figure 1. Backtesting process. Source: Fooled By Technical Analysis

如上图所示,数据挖掘偏差有三个主要组成部分。第一个原因是基于历史数据的曲线拟合模型。注意,所有模型都是关于某个任意目标函数的数据的曲线拟合。问题是它们是否也过度拟合,但如果其他两种形式的偏差占主导地位,这可能并不重要。数据挖掘偏差的第二个组成部分是第一次回测步骤后的选择偏差,这是因为接受了一个潜在的优势,同时拒绝了许多其他优势。在对看不见的数据进行性能验证后,选择偏差再次被引入,也称为样本外偏差。

数据挖掘偏见的第三个也是最可怕的组成部分是由于数据窥探。当模型(策略)在验证步骤后被拒绝,流程重新开始时,就会出现这种情况。通常,没有人会在第一次失败后永远放弃,但大多数人会无情地利用现代工具挖掘数据,以发现有利可图的优势。在这种情况下,所有的验证工具都成为过程的一部分,不再有效。

一言以蔽之,当你听到有人声称他们进行了样本外测试,并发现了良好的结果,不仅是在金融领域,而是在任何领域,你应该问问他们在此之前拒绝了多少模型。更糟糕的是:你应该问他们是否知道有多少基于相同数据的模型被所有有抱负的量化交易者和投资者所拒绝。如果他们知道,那么已经提出了一些方法来调整数据挖掘偏差的验证统计,但在大多数情况下,这甚至是不需要的,因为偏差已经很大,没有验证测试是鲁棒的。关键是被拒绝的模型可能是好的(第二类错误),或者被接受的模型实际上可能是坏的(第一类错误)。你永远不会知道,因为没有办法知道整个地球上的集体数据挖掘偏见。下面的图 2 显示了这种累积数据挖掘偏差的原理。

Figure 2. Probability P of discovering an edge as a function of backtesting trials N

在图 2 中,“a”是 N、试验次数以及与数据和模型有关的其他参数的某个有界非线性函数。关键在于,随着 N 变大,找到真正边缘的概率 P 变为零。与直觉相反的结果是,不断回溯测试新想法会降低找到优势的几率。这对于人工回测来说是正确的,但在挖掘数据以发现市场优势的机器学习程序中也更明显。(详见本文。)

那么,我们如何应对难以捉摸的市场边缘的悖论呢?一种解决方法是,只有当有一个独特的想法不太可能被其他人发现时,才使用回溯测试。这很难,但却是可能的。当经常使用数据挖掘时,另一个补救方法是通过使用更高级的测试来最小化数据挖掘偏差,而不是试图估计它。一般来说,数据挖掘偏倚是无法估计的,因为试验的真实数量及其来源都是未知的。

关于回溯测试的这些和其他事实,以及处理数据挖掘偏差的例子和规则,可以在[1]中找到。

[1]哈里斯。m .,被技术分析愚弄:图表、回溯测试和数据挖掘的风险,2015 年,仅在线提供

注来自《走向数据科学》的编辑: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

关于作者:迈克尔·哈里斯(Michael Harris)是一名交易员和畅销书作家。他也是 17 年前第一个识别价格行为无参数模式的商业软件的开发者。在过去的七年里,他一直致力于开发 DLPAL ,这是一个软件程序,可以用来识别市场数据中的短期异常,与固定模型和机器学习模型一起使用。点击此处了解更多信息。

从《K 街》看美国的过去十年

原文:https://towardsdatascience.com/the-past-10-years-in-the-us-as-viewed-from-k-street-a790e1f2122c?source=collection_archive---------1-----------------------

华盛顿是个奇怪的地方,至少对我来说是这样。美国政客虽然依靠庞大的联盟基础来承担和保持权力,但往往可以以牺牲公共利益为代价获得相当多的个人利益。在我看来,美国的政治机器既受到精英主义的推动,也受到民粹主义的推动。我们知道我们人民在想什么,我们有脸书和其他各种民意调查告诉我们“美国人认为什么是重要的”;但是精英们在想什么呢?

虽然我对这个特殊话题(游说)的政治观点是模糊的,但我想了解他们的观点是如何塑造这个国家的政策的。

我在OpenSecrets.org上发现了一个有趣的数据集,其中一个文件(lob_issue.txt)包含一些非常有用的信息。“具体问题”一栏提供了关于正在游说的问题的非常详细的信息。这几乎就像一项民意调查,询问精英们“你认为今年最重要/最不重要的事情是什么”。我的想法是探索 K 街游说的主要主题,看看它是如何随着时间的推移而变化的。

我还对金融危机爆发前和爆发后的几年特别感兴趣,这几年被方便地包含在数据集中。

索引不足:与其他 9 年相比,该年最少被提及的词;

过度索引:与其他 9 年相比,该年提及次数最多的词;

在金融危机最初的混乱之后,K 街已经将注意力转向了医疗保健。《平价医疗法案》确实创造了一个权力市场——更多的监管意味着寻租更加有利可图。有巨大的民粹主义吸引力(更便宜的保险,更高的覆盖率等)。)表面上如此,但监管更加严格的市场在私下里也提供了卖给出价最高者的政策。

github:https://github . com/bguOIQ/everthoughtabout/blob/master/lobbying % 20 data/Lobby/lobbyingwordclouds . ipynb

感知器

原文:https://towardsdatascience.com/the-perceptron-3af34c84838c?source=collection_archive---------7-----------------------

Fig 1: Chicken or Egg? | Perceptron!

感知器最早是由 弗兰克·罗森布拉特 提出的。在这篇文章中,我们将看看什么是感知器,以及它如何根据给定的输入进行预测。所以,让我们开始吧!

感知器是一个单层神经网络,看起来像这样

Fig 2: Perceptron

现在,让我们看看这些节点和连接的含义。

Fig 3: Input Node

蓝色节点是 输入节点。 每个这样的节点代表一个输入问题的特征。在上面的例子中,我们有m输入特征。第 I 个输入特征由x_{i}表示。这一层叫做 输入层 。在神经网络中,我们只能有实数作为输入。

Fig 4: Weights

然后,红色箭头将输入节点连接到橙色节点。这些被称为突触。这些突触中的每一个都有一个权重,用w_{i}表示,即第 I 个突触的权重为w_{i}。我们可以简单地称之为 权重层

Fig 5: Output node

然后,我们有橙色节点,上面写着y。是 输出节点 。它基于输入权重计算分数,然后基于该分数使用激活函数获得01的预测

这就是感知器所做的一切!

现在,让我们看看分数是如何精确计算的,以及如何根据输入和权重在输出单元中进行预测。

Fig 6: Formula to make a prediction from the Inputs and Weights

等式的红色部分简单地越过m输入特征,并对输入特征(x_{i})和权重(w_{i})之间的乘积求和。这就是我们如何计算给定输入特征的 分数

现在,让我们想象一下我刚才说的等式的红色部分。

Fig 7: Scores from Inputs

好了,现在,为了根据这个计算出的分数做出一个 预测 ,我们必须使用一个 激活函数

激活功能? 激活函数主要用于在神经网络的每一层中引入网络中的非线性,没有激活函数,无论神经网络有多深,我们都将计算一个线性函数。
在输出层,对于分类问题,我们使用激活函数将分数映射到类别。

这里,我们将使用 Heaviside step 函数 ,如果分数小于或等于 0,则简单地输出
0 ,否则输出
1

Fig 8: Heaviside Step Function

在这种情况下,上图(图 6)中等式f(...)的绿色部分是亥维赛阶梯函数。

好了,现在如果你有了输入和权重,你就可以用红色方程得到分数,然后用一个激活函数得到预测!

注意事项 :
1) 感知器中不存在非线性。所以,它只能计算线性函数(
“直线”)。
2) 还有一个附加的偏置项(用x_{0}w_{0}表示)。为了简单起见,我们跳过了这一步。一般带偏置x_{0} = 1w_{0} = theta。其中,theta是网络学习的某个值。在这篇文章中,我们看到了如何使用感知器进行预测(
正向传播),而不是网络如何学习(反向传播)。

希望这篇文章对你有所帮助,如果有,那么👏 👏 👏!
喜欢我的作品?跟我来。

随时给我发消息!我们连线吧!

数据科学出了问题:预测性警务是一种大规模杀伤性武器

原文:https://towardsdatascience.com/the-perils-of-predictive-policing-11928a9f1d60?source=collection_archive---------5-----------------------

预测结果互动图此处。

Click the link above to see the interactive map.

对于代码,请访问本项目回购这里

当新技术出现时,我们的道德和法律通常需要一些时间来适应。作为一名社会科学家和训练有素的哲学家,我一直对技术和道德的交集感兴趣。几个月前,我读了凯茜·奥尼尔的书数学毁灭的武器(链接到我的评论),意识到它的信息太重要了,却被数据科学家忽视了。

我开始这个项目是为了展示我们的新算法所产生的潜在伦理冲突。在每一个可以想象的领域,算法都被用来过滤人。在许多情况下,算法是模糊的,不受质疑的,并且是自我延续的。这就是奥尼尔所说的数学毁灭武器——大规模杀伤性武器。它们从设计上来说是不公平的:它们是我们的偏见变成了代码并被释放出来。最糟糕的是,他们创造了强化上述模型的反馈循环。

我决定创建一个大规模杀伤性武器为说明目的。这个项目旨在尽可能简单明了。这两个目标是,第一,展示创造一个破坏数学的武器是多么容易。其次,帮助有抱负的数据科学家了解项目从开始到结束的过程。我希望人们受到启发,重新思考他们的模型的伦理含义。

对于这个项目,我将创建一个预测警务模型,以确定哪里更有可能发生犯罪。我将展示创建这样一个模型是多么容易,以及为什么它会如此危险。像这样的模型被全美国的警察机构采用。鉴于所有人类固有的普遍的种族主义,鉴于有色人种被警察杀害的可能性已经增加了一倍,这是一个可怕的趋势。以下是数据科学如何让问题变得更糟。

数据

这个项目使用的数据是旧金山市的开放数据倡议的一部分,这是对公共政策感兴趣的数据科学家的一个很好的资源。希望更多的城市将继续遵循这一倡议,并使他们的数据公开和机器可读。

2016 年的犯罪数据是这样的:

预测性警务模式,以及大规模杀伤性武器,价值模糊而复杂。他们可以对客户无法理解的技术魔术收取更高的溢价。他们通常使用数百甚至数千个不同的输入变量来进行预测。他们声称这是他们预测如此准确的原因。

我将反其道而行之,以展示大规模杀伤性武器的内部运作,以及制造一个大规模杀伤性武器是多么容易。

我将尝试预测:

给定一周中的第和一天中的第时间,在给定的邮政编码中将发生的犯罪事件数量

我将在 2016 年的数据上训练我的模型,然后用 2017 年的数据来测试我做得有多好。

在只选择了我想要的变量后,对每个邮政编码每小时每年的犯罪总数求和,得到如下结果:

换句话说,2016 年全年,在邮政编码为 94103 的地区,周五 17:00 至 18:00 之间,共报告了 265 起犯罪事件。

由于我将这些按犯罪数量排序,我们可以看到犯罪数量最高的总是发生在邮政编码为 94103 的地区。这已经给了你一个卖蛇油模型有多容易的暗示:“派警察到 94103 找犯罪!”

然而,这太简单了,如果客户知道我们只是预测已经最常发生的犯罪,没有人会为此付出太多。让我们把它变得更复杂。

训练/测试分割

数据科学家通常随机拆分数据进行测试,大约 70%用于训练,30%用于测试。然而,当涉及到时间因素时,通常会按时间顺序将其分开,看看我们是否能够预测未来。我会用 2016 年的数据来看我是否能预测到 2017 年的数据。

测试是机器学习的神奇之处。当我在人口研究所的时候,我们对世界进行预测,然后在一篇论文中提出。没人知道它们是好的预测还是坏的预测,但没人问。如果它们看起来合理、直观,这个项目就会受到称赞。

数据科学更严谨。我们将数据分为训练集和测试集。我们基于训练集创建模型,进行预测,然后将我们的预测与测试集的实际结果进行比较。

我们反复迭代,直到得到更好的结果。然后我们再次迭代,为了更好的准确性,我们愿意牺牲理解。

这是一把双刃剑。对于某些应用程序来说,它可能非常有用。例如,我们不需要确切知道图像识别模型是如何工作的。如果它能在提示时识别出某人的脸,这才是重要的。当我们做出筛选人的决定时,问题就出现了,我们无法向他们解释为什么他们会被选中,或者被歧视。

如果我们告诉某人,他们被解雇是因为我们的模型说他们表现不佳,然后我们无法解释我们的模型是如何工作的,他们永远不能对这个决定提出上诉。如果我们犯了错,谁会知道?如果我们晦涩的模型编码了常见的种族主义、性别歧视或阶级歧视假设,谁能站出来反对这种不公正?

尝试五种不同的模型

既然我们已经将数据分成了训练和测试两部分,我们就可以开始评估不同模型的表现了。

注意:所有这些模型都有不同的方法来调整它们(超参数)——为了简单起见,我将使用默认值,在这一点上我不会深入讨论,只是要知道通常有一种方法可以提高这些模型的精度。

1.线性回归

这是 19 世纪早期的一种快速简单的统计技术。线性模型试图通过数据画一条尽可能适合它的线。这个模型是有价值的,因为它是可以解释的。如果我们愿意,我们可以说每个输入在做出最终预测时有多重要。我们用 2016 年的数据训练模型,进行预测,看看它们与 2017 年的实际犯罪数量有多匹配。

我们的结果表明,我们可以用这个模型预测 63%的犯罪数量。这是一个很好的基线,但是我们可以用更新的技术做得更好。

2.随机森林回归量

简而言之,随机森林模型是一堆随机决策树一起工作。

简而言之,决策树就是在最有可能分裂的地方分裂数据,然后选择最有可能的结果。

例如,我们的模型首先注意到星期五是犯罪率最高的一天,而 94103 是犯罪率最高的邮政编码。然后,它检查所有的观察结果,并询问“它发生在星期五吗?”如果答案是“是”,它就预示着一定数量的犯罪。如果答案是“否”,它预测的数字会更小。然后它问“它发生在 94103 年吗?”如果答案是肯定的,预测值会更高,如果答案是否定的,预测值会更低。它以这种方式继续下去,然后对每个不同的输入进行预测。

让我们看看我们做得有多好。

哇哦。我们达到了 80%的准确率,对于额外的三行代码来说已经不错了。

这就是发现每个特征或自变量是多么重要:

这些结果仍有些许可解释之处。我们可以看到,决定这个模型预测的犯罪数量的最重要的特征是它是否是邮政编码 94103,它是一天中的什么时间,以及它是否是邮政编码 94102。它基于所有这些输入的组合来预测将会发生多少犯罪。

3.k-最近邻

在 KNN 模型中,我们开始失去解释我们到底是如何得到结果的能力。潜在的理论很容易理解,但解释一个特定的结果是如何产生的却不容易。

KNN 模型是不言自明的。它查看输入的最近“邻居”,并给出与其邻居最相似的答案。

例如,假设我们的模型看到一个输入“星期五,94103,下午 4 点”它可能确定“最近的邻居”是“星期五,94103,下午 5 点”和“星期五,94103,下午 6 点”它将获取在这两个邻居处发生的犯罪数量,对它们进行平均,结果将是我们最初的 4pm 输入的预测。邻居的数量,以及定义“平均”的方法可以有很大的不同,但直觉是相同的。

让我们看看我们是怎么做的:

这次开箱的 KNN 没有我们其他型号的表现好。如果我们找到一个最佳数量的邻居,这可能会有所改善,但我会保持简单,只是移动到下一个模型。

4.XGBoost

XGBoost 是一个屡获殊荣的算法,因在 Kaggle 比赛中表现出色而闻名。

简单来说,它也是一个树的集合,就像我们上面看到的随机森林。然而,不同之处在于,正如其名称所暗示的,random forest 随机拆分数据。然而,增强的树模型迭代地构造树,并且为了减少误差,对每个后续的树重新加权示例。换句话说,它构建树,比较它们做得有多好,然后构建越来越好的树。

我们精确度的微小提高。但是好到足以转移到下一个模型。

5.深度学习——多层感知器

现在我们已经到了无法解释我们是如何得到这些结果的地步。如果有人基于深度学习模型被收取更高的贷款利息,他们问“是什么因素导致了你向我收取的金额?”,我们就没有办法给他们一个答案。

如果我们正在影响人们的生活,并且无法解释原因,这就是数据科学变得非常危险的地方。如果我们犯了一个错误,或者如果我们在模型中引入了我们的偏见,这个模型几乎就是一个黑箱。

我将使用多层感知器回归器来看看我的预测有多准确。我选择了 4 个隐藏层,每个层有 100 个节点。我不会进行随机搜索来找到最佳的超参数,但是正如你所看到的,有很多选项可以调整。

我们现在可以预测一周中某一天某一小时某一邮政编码会发生多少起犯罪,准确率约为 87%。尽管我们甚至没有花时间调优超参数或获取更多数据,我们还是这样做了。

讨论

在尝试了五种不同的模型后,我们几乎达到了 90%的准确率。这是用最简单的方法做的。如果我们想改善我们的结果,我们可以做以下事情:

-使用更多的输入变量:天气、人口密度、到酒类商店或无家可归者收容所的距离、每个邮政编码的人口构成等等。

-调整超参数:我们可以进行“网格搜索”,以找到在 KNN 模型中使用的最佳邻居数量,随机森林模型中的树的大小,线性回归模型中使用的正则化以及深度学习模型中的许多选项。

-使用更多数据:2015 年、2014 年和其他年份的可用数据。

如你所见,还有很大的改进空间。但是我的观点是用最少的努力得到最好的模型。我想展示做出这些预测有多容易,以及我们失去可解释性有多快。

如果我们开始向我们预测会有更多犯罪的地区派遣更多的警察,警察就会发现犯罪。然而,如果我们开始向任何地方派遣更多的警察,他们也会发现更多的犯罪。这仅仅是因为在任何特定地区都有更多的警察试图发现犯罪。

这意味着我们的模型可能是错误的,但它看起来总是正确的。如果警察已经因为人们固有的种族偏见而经常去某个社区搜查,他们就会发现更多的犯罪。这将意味着模型将一次又一次地把他们送到那里,并将成为一个自我实现的预言。

数据科学家必须开始更加意识到我们的算法可能被滥用。我们必须开始考虑让我们的模型更加透明。我们必须意识到我们的模型是如何伤害人们的。我们必须做得更好。

预测结果互动图此处

对于代码,请访问此处的本项目回购

数据科学的周期表

原文:https://towardsdatascience.com/the-periodic-table-of-data-science-8387cb44960d?source=collection_archive---------2-----------------------

该周期表可作为导航数据科学领域主要参与者的指南。表中的资源是通过查看数据科学用户的调查选择的,如 O'Reilly 的 2016 年数据科学薪酬调查Gartner 的2017 年数据科学平台魔力象限、 KD Nuggets 2016 年软件民意调查结果,以及其他来源。表中的类别并不都是互斥的。

查看下面的完整数据科学周期表:

你可以在这里找到完整的图片。

浏览数据科学的周期表

你会看到表格的左边列出了与教育有关的公司:在这里,你会找到课程、训练营和会议。另一方面,在右侧,您将找到让您了解数据科学社区最新新闻、热门博客和相关材料的资源。在中间,您将找到可以用来开始学习数据科学的工具:您将找到编程语言、项目和挑战、数据可视化工具等。

该表将数据科学资源、工具和公司分为以下 13 类:

课程:对于那些想学习数据科学的人来说,有很多网站(公司)提供数据科学课程。你会在这里找到各种可能适合你的学习方式的选项:边做边学的数据营,Coursera 和 Edx 的 MOOCs 等等!

新兵训练营:本节包含为那些正在寻找更多指导选项来学习数据科学的人提供的资源。你会看到像数据孵化器或激励这样的训练营已经包含在内。

会议:学习不是你参加课程或训练营时做的活动。会议是学习者经常忘记的事情,但它们也有助于学习数据科学:作为数据科学的有志之士参加会议很重要,因为你将接触到最新的进展和最好的行业专家。表中列出的一些用户是用户!Tableau 大会PyData

数据:熟能生巧,数据科学也是如此。您需要查看和查找数据集,以便开始实践您在现实生活数据课程中学到的知识,或者制作您的数据科学作品集。数据是数据科学的基本组成部分,发现数据可能是最困难的事情之一。当你寻找很酷的数据集时,你可以考虑的一些选项是 data.worldQuandlStatista

项目&挑战、竞赛:实践之后,你也可以考虑接更大的项目:数据科学作品集、竞赛、挑战等等。你会在数据科学周期表的这一类别中找到所有这些!最受欢迎的选项之一可能是 Kaggle ,但 DrivenDataDataKind 也值得一试!

编程语言&分布:数据科学家一般不只使用一种,而是使用多种编程语言;一些编程语言,如 Python,最近在社区中获得了很大的吸引力,Python 发行版,如 Anaconda ,似乎也找到了数据科学爱好者的道路。

搜索&数据管理:这个庞大的类别包含了你可以用来以某种方式搜索和管理数据的所有工具。一方面,你会看到像 Lucene 这样的搜索库,还有像 Oracle 这样的关系数据库管理系统。

机器学习&统计:这个类别不仅为你提供了机器学习入门库和 Python 等编程语言的统计,还提供了整个平台,如 AlteryxDataRobot

数据可视化&报告:在对数据进行分析和建模之后,您可能希望将结果可视化并报告您所研究的内容。你可以利用像 ShinyMatplotlib 这样的开源选项来实现这一点,或者全部回到商业选项上,比如 QlikviewTableau

协作:协作是数据科学社区的热门话题。随着你的成长,你也会发现团队合作的需要(即使只是和另外一个人!)在这种情况下,你会想要使用像 Jupyter 这样的笔记本。但是,即使您只是独自工作,如果您刚刚起步,使用 IDE 也会很方便。在这种情况下,可以考虑 RodeoSpyder

社区&问&答:提出问题并求助于社区是你在学习数据科学时可能会经常做的事情之一。如果你不确定在哪里可以找到你的数据科学问题的答案,你可以在诸如 StackOverflowQuoraReddit 等网站上找到。

新闻、时事通讯&博客:你会发现这个社区正在迅速发展壮大:关注新闻和最新趋势是必要的。像 Data Science WeeklyData Elixir 这样的一般时事通讯,或者像 Python WeeklyR Weekly 这样的特定语言时事通讯,都可以在你的邮箱中提供你每周所需的数据科学信息。但是像 RBloggersKD Nuggets 这样的博客网站也值得关注!

播客:最后,但绝对不是最不重要的,是播客。这些在很多方面都很棒,因为你会被介绍给专家面试,比如在成为一名数据科学家或具体的数据科学主题,比如在数据故事会说话的机器

你在想另一种应该加入元素周期表的资源吗?在下面留下评论告诉我们吧!

原载于www.datacamp.com

数据可视化是如何诞生的

原文:https://towardsdatascience.com/the-pioneers-of-data-visualization-ca58b7dc8013?source=collection_archive---------7-----------------------

数据可视化的先驱

Nicolaes Visscher, Orbis Terrarum Nova et Accuratissima Tabula, 1658

回顾人类的历史,我们可以观察到许多情况,在这些情况下,人们找到了可视化地描述和记录他们经历的方法。洞穴壁画描绘了人与兽之间的战斗场景,埃及壁画让我们一窥生活方式和对法老、皇室和其他神灵的崇敬;以及农民生活的挣扎和艰辛。几个世纪后,世界各地的画家、雕塑家和其他艺术家都通过他们的艺术来塑造他们的世界观。

我们天生需要描述和解释我们周围的世界

在科学和工程领域,记录你的实验是至关重要的。科学家们也依赖笔记、图画、注释以及后来的图片——几乎任何种类的记录——来支持他们的假设,并推进科学界的集体知识。

在其他情况下,我们希望讲述一个比简单的结果报告更复杂的故事。

在本文中,我想分享并赞美数据可视化先驱们的工作,他们为当今如此流行和广泛的信息图和数据可视化技术铺平了道路。

查尔斯·约瑟夫·密纳德

密纳德是一名法国土木工程师,在欧洲多个建筑项目中工作。他对表现数据有敏锐的眼光,特别是在制图方面。

他最著名的视觉叙事作品“信息图”描绘了拿破仑在 1812 年入侵俄罗斯的企图。米纳德在一个单一的表现形式中结合了多种类型的数据:背景是一张地图,但在底部是每个地区记录的温度;拿破仑军队的规模用通往莫斯科的米色区域的宽度表示,用黑色表示他们的返回。还添加了经纬度供参考。

Napoleon’s Invasion of Russia (1812)

在米纳尔的可视化中,最令人印象深刻的是他能够以这样一种方式表示许多复杂的数据点和数据类型,即叙事——从俄罗斯到俄罗斯的艰难旅程——作为图像的焦点保留下来。

你的眼睛直接跳到米色区域,这让你感到好奇,于是你开始寻找它背后的故事。这是当你看其他标记时,比如他们经过的城市的名称,标注在逐渐缩小的边上的数字,或者有一条非常细的黑线代表一支被击败的,技术上被击败的军队的回归。

弗罗伦斯·南丁格尔

佛罗伦萨·南丁格尔出生于维多利亚时代的伦敦市中心,是现代护理实践的“母亲”。她也是“南丁格尔誓言”的灵感来源,这是对护士们遵守的希波克拉底誓言的改编。

除了对护理实践的启迪之外,她对统计学的兴趣使她开发了极区图

Diagram of the causes of mortality in the army in the East (1854–1855)

Nightingale 的数据可视化用例是她工作的军队医院中死亡原因的表示。在收集了大约两年的数据后,她能够描述由可预防疾病(蓝色)导致的死亡,以及由创伤(红色)和其他未知原因(黑色)导致的死亡。

约翰·斯诺

( )不是那个 !)

斯诺是英国医生,也是伦敦流行病学会的创始人之一。

在 19 世纪早期,伦敦经历了几次霍乱爆发,摧毁了这座城市。

其中一次爆发发生在 1854 年,约翰·斯诺博士对此进行了密切观察。当时,人们普遍认为这种疾病的传播是由于污染和“糟糕的空气”——瘴气理论。为了更好地了解它的来源以及这种疾病是如何在伦敦人中传播的,斯诺从绘制受影响家庭的地图开始。

Original depiction of the London cholera epidemic of 1854

斯诺博士特别感兴趣的是,当地酿酒厂的工人没有一个表现出这种疾病,而几乎所有其他家庭都受到了影响。通过当地多方询问,他得出结论,这次疫情的源头是水质太差。原来啤酒厂工人喝的啤酒比水多。

在他的地图上查看水泵的位置,我们可以看到,与没有水泵的社区相比,水泵附近的死亡率更高。

在疫情爆发的中心——Broad Street——拆除把手,从而关闭水泵的建议导致疫情得到遏制,总体死亡人数逐渐停滞。

这些先驱和他们同时代人的工作为我们今天所知的数据和信息可视化以及信息图表的广泛使用铺平了道路,这是非常了不起的。

感谢阅读!

泊松分布

原文:https://towardsdatascience.com/the-poisson-distribution-103abfddc312?source=collection_archive---------9-----------------------

Photo by Tom Grimbert on Unsplash

前几天在常规通勤中,我听了另一个精彩的线性题外话集,名为“更好地了解一个分布:泊松分布”,我认为这将是一个很好的主题,可以用一些代码(R)作为博客帖子来解释。所以现在开始。

根据维基百科的说法,以法国数学家西蒙·丹尼斯·泊松命名的泊松分布是一种离散的概率分布,它表示在固定的时间或空间间隔内发生的给定数量的事件的概率,如果这些事件以已知的恒定速率发生,并且与上次事件发生的时间无关。

让我们理解这到底意味着什么。

环境设置

打扫

Cleanup

加载库

数据

在这个练习中,我在寻找国际足联的比赛数据,并使用我们在谷歌(谷歌数据集搜索)的朋友提供的最新资源,我发现了这个惊人的数据集从 1872 年到 2018 年的国际足球结果。这是从 1872 年到 2018 年所有足球比赛的数据集,总共 39669 场!
读入。

探索

看起来数据是完整和整洁的。一些有趣的观察-

  1. 我们有从 1872 年 11 月 30 日到 2018 年 710 日的数据。喔!
  2. 最大 home_score 值 31,最大 away_score 值 21?!一些比赛要看!
  3. 大约 25%的比赛是在中立地区进行的。这些都是世界杯比赛吗?

让我们生成一些更有趣的特性

泊松分布什么时候合适?

随机变量k为泊松,需要满足以下 4 个条件(维基百科)

  1. k是一个事件在一个区间内发生的次数,k 可以取值 0,12,… *k* 需要是一个整数(与更流行的高斯分布的一个主要区别,这里变量是连续的)。
  2. 一个事件的发生不影响第二个事件发生的概率。也就是说,事件独立发生。
  3. 事件发生的速率是恒定的。该比率不能在某些区间更高,而在其他区间更低。
  4. 两件事不可能在完全相同的时刻发生;相反,在每个非常小的子间隔,恰好有一个事件发生或不发生。

或者

实际的概率分布是由二项式分布给出的,试验的次数远远大于人们所要求的成功次数。

现在,让我们首先确定我们的kinterval,看看它们是否满足上述 4 个条件。让我们探索以下 3 个选项-

  1. k是目标总数,interval1 年。
  2. k是目标总数,interval1 天。
  3. k是总进球数,interval1 场比赛。

虽然我们保留了 3 个选项,使得条件 12 将始终成立,即目标的数量始终是一个整数,并且一个目标与另一个目标相互独立(在大多数情况下)。但是我们将需要探索每个选项的条件 34

1.k是目标总数,interval1

正如我们在上面两个图中所看到的,即使目标的平均数在这些年中保持不变,但每年的目标总数增加了,这违反了我们的条件 3,即它是泊松分布。此外,根据条件 4,试验次数应充分大于成功次数,这在这种情况下也是违反的,因为我们有 147 次试验(即数据集中的年数)和大约 1000 次或更多的成功(即每年的目标总数)。
甚至在逻辑上,我们可以认为,如果一年的比赛次数多了,那么那一年的总进球数就会多,这就违反了条件 3

基于以上所述,我们还可以假设我们的选项 2(即一天内的总进球数),虽然与选项 1 相比更接近泊松分布,但它仍然不会,因为一天内更多的比赛数将意味着更多的进球数,这将违反事件发生率需要恒定的条件 3。让我们为选项 2 设想一下。

2.k是目标总数,interval1

因此,即使成功的次数与试验次数相比相当低(满足条件 4),事件发生率也不是恒定的,它取决于选项 2 的匹配次数。因此,我们也拒绝将选项 2 作为泊松分布。
让我们最终探索选项 3

3.k是总进球数,interval1 场比赛。

找到了。我们每场比赛的进球数保持不变,峰值约为 3 球,平均每场比赛 2.935642 球。进球数(‘事件’是进球)是一个整数,其中一个进球独立于另一个进球,比赛次数(即尝试次数)远远高于每场比赛的进球数(即成功次数)。因此,我们找到了我们的泊松分布!

泊松分布的事件概率

现在我们有了泊松分布,我们可以使用以下公式计算interval中发生k事件的概率:

P ( k 个事件中的一个区间 ) = e ^{-λ } * λ^{k}/k!其中,
λ =每场比赛的平均场次,即每场比赛的平均进球数。
k =概率估计的事件数,即目标数,
e =欧拉数,
k!= k 的阶乘

根据我们上面的探索,我们的平均进球数为 λ = 2.935642,我们可以将这个值代入上面的公式,计算一场比赛中任何数量的进球的概率。

举个例子,

P (一场比赛进 5 球)=e^-2.935642 * 2.935642^5/5

P (一场比赛进 5 个球)= 0.096786787861

让我们用 R 来计算上面的。

## [1] 0.09647199

我们看到的值与上面计算的值相同。
我们还可以看到,随着事件数量的增加,即目标数量从 0 增加到 8,概率是如何变化的。

摘要

泊松分布的概率计算公式可以成为任何人评估事件发生概率的一个巧妙的小技巧。它还被广泛地用于工业中,例如估计 k 个顾客到达商店的概率以优化资源,或者估计网页已经经历了一些 k 次更新的概率以优化搜索引擎抓取网页的速率。

人工智能在脸书的力量

原文:https://towardsdatascience.com/the-power-of-artificial-intelligence-across-facebook-c7e074f2d3b?source=collection_archive---------14-----------------------

我们每天都在使用脸书及其提供的各种服务,即使我们没有意识到。

其中一项服务包括自动翻译。在过去的一天里,这些翻译已经用一种新的人工智能机制实现了。

在这个人工智能功能之前,脸书通过一个被称为“神经网络”的网络来处理他们的翻译。这个网络是一个简单的翻译配置机器,但现在已经更新,变得完全先进。

脸书在他们的公司博客中提到:“为使用脸书的 20 亿人创造无缝、高度准确的翻译体验是困难的”…“我们需要同时考虑上下文、俚语、打字错误、缩写和意图。”

这一新的高级功能的优点是简单明了的。旧系统确实为我们自动翻译了,但有时这个句子完全没有意义!

举个例子,

旧:土耳其语到英语

新:土耳其语到英语

你已经可以看到这种进步的好处了!

神经网络几乎总是有可调参数来控制模型的学习速率等事情。选择这些超参数的最佳集合对性能非常有益。

然而,这对于大规模的机器翻译来说是一个重大挑战,因为每个翻译方向都由一个具有自己的超参数集的唯一模型来表示。由于每个型号的最佳值可能不同,因此我们必须针对生产中的每个系统分别进行调整。

我们在几个月的时间里运行了数千次端到端的翻译实验,利用 FBLearner Flow 平台来微调学习速度、注意力类型和总体规模等超参数。这对一些系统产生了重大影响。例如,我们看到,仅基于优化模型超参数,英语到西班牙语的 BLEU 相对提高了 3.7%。

完成从旧短语基础到这种新的更现代的神经机器的转换,是脸书国际化之旅的一个转折点。

有关脸书新开发的更多信息,请参见:https://code . Facebook . com/posts/289921871474277/transitioning-totally-to-neural-machine-translation/

2017 年 GPU 技术大会(GTC)上人工智能(AI)、虚拟和增强现实(VR 和 AR)对医学成像的影响

原文:https://towardsdatascience.com/the-power-of-artificial-intelligence-ai-virtual-and-augmented-reality-vr-and-ar-on-medical-4949c7a6fd72?source=collection_archive---------2-----------------------

This slide, like the picture below from InferVision (Chinese startup) are common with Indian and Chinese startups creating new interfaces generating reports (noting AI predictions) on the medical images.

今年的 GTC 组织了一场医疗保健跟踪,致力于人工智能和健康技术之间的应用。许多研讨会专注于使用 Nvidia 硬件、图形处理单元(GPU)应用机器学习算法来预测早期癌症检测的开始,许多会议分析解剖结构中的其他癌症肿瘤,如肺、乳腺和大脑。许多会议分析了大脑功能磁共振成像,特别是作为一种手段,推进对各种神经退行性疾病的研究,如阿尔茨海默病(AD)。

以下是会议的一些快速亮点,以及一些关于虚拟现实(VR)和增强现实(AR)演示的笔记,以及动态用户界面对医学研究技术应用的影响。

研究人员能够从用于查看人体解剖结构的各种扫描仪中获取图像,增强和扩大图像,检测病理,诊断疾病,在某些情况下,甚至可以帮助光谱的另一端,进行如上图所述的治疗和预后。

挑战

围绕数据质量(数据大小、注释、数据焦点),一些研讨会表达了与美国国立卫生研究院(NIH)科学家陆乐相同的观点。

然而,当通过“谷歌搜索”+众包(ImageNet 就是这样构建的)的传统方式很难获得注释时,无监督的图像分类(即没有地面真实标记)就很少被研究,非常重要,也很困难

“大数据”的传统定义倾向于在对数百万到数十亿用户的分析中讨论。然而,对于在健康、医疗和生物技术领域工作的研究人员来说,数据虽然丰富,但我经常听到这样的评论,即研究人员只限于这么多的数据集,并且局限于少数患者和规模较大的数据集(每个患者多个图像)。

斯坦福大学教授丹尼尔·鲁宾教授研究生课程“生物医学图像分析和解释的计算方法”,他讨论了这种斗争以及对更直观的机器学习(ML)工具的需求,许多了解计算机编程的生物医学研究人员不需要这些工具来加快医学研究的步伐。

同样,斯坦福大学电气工程博士候选人 Enhao Gong 发表了“利用 Nvidia GPUS 支持的深度学习增强多对比 MRI 重建以改善诊断”的演讲,他也有同样的观点。他的工作讨论了 Nvidia GPU 如何将他们的预处理速度提高 4000 倍和 100 倍,以进行推理和 MRI 的整体重建。鉴于大多数研讨会(以及 Nvidia 创始人兼首席执行官黄仁勋)不断重复谈论摩尔定律,生产良好硬件的限制不是我们最大的挑战,而是最大限度地优化从数据到算法和我们创建的应用程序。

点击这里观看黄仁勋的主题演讲

如果数据继续被孤立在特定的医院中(数据集仍然很小),研究人员和临床医生将更难最大限度地发挥机器学习应用程序在医学成像方面的优势。如下面的幻灯片中所述,数据本身集中在一个特定的感兴趣区域(ROI)(意味着图像的一部分集中在图像中的结节、肿瘤或其他特定区域),这仍然不够,因为大部分数据可以是给定解剖结构的完整图像。

Slide from Stanford Professor Daniel Rubins’ talk “Deep Learning in Medical Imaging: Opportunities and New Developments”

研究人员提到的医学成像和机器学习的另一个主要挑战是数据质量(高分辨率图像之外)。

陆乐的会议“建立真正大规模的医学图像数据库:深度标签发现和开放式识别”讨论了与许多研究人员和那些在国家范围内工作的人所面临的挑战相比,典型的良好注释的 ImageNet(斯坦福大学教授和计算机视觉先驱费-李非的工作)在大小和规模上的差异。与数百万或数十亿用户不同,患者数据少得多,不到 100,000 人,每人有多张图像(CT 和 MRI)。在这里为 NIH 开源数据集做贡献。

为了更有效地将机器学习应用于医学成像以进行特征提取,在缺乏临床医生对数据集的注释的情况下,需要进行标记。在 Lu 的会议中,他讨论了他如何建立一个以胸部 x 射线(肺癌)为重点的大规模数据集,采用放射科医生预定义的常见疾病模式的数据标签,为每幅图像生成一份报告,从而实现疾病的自动检测/分类和疾病定位。下图显示了陆的应用程序中的自然语言处理和报告生成,以及另一家初创公司世博大厅的 Infervision。

This slide, like the picture below from InferVision (Chinese startup) are common with Indian and Chinese startups creating new interfaces generating reports (noting AI predictions) on the medical images.

At the GTC Expo, Chinese startup Infervision’s user interface displaying a medical report on MRI https://techcrunch.com/2017/05/08/chinese-startup-infervision-emerges-from-stealth-with-an-ai-tool-for-diagnosing-lung-cancer/

虽然报告生成很好(正如在 GTC 世博会、Infervision 和陆乐的演讲中看到的那样),但其中一些数据分析仍然有限,这就是为什么即使是放射科医生创建的虚拟现实工具(我将在本文结尾讨论)也试图通过沉浸式地查看他们的数据来改变研究人员的工作流程,就像 3D 可探索的解释

英伟达的软件框架:数字

工程师兼研究员 Saman Sarraf 还介绍了他在深度 AD(深度阿尔茨海默病)方面的工作,内容是如何使用 Nvidia 数字进行高精度预测。你可以在 Saman 的 IEEE 论文这里Nvidia 博客上读到更多。

这是一个信息架构,概述了放射科医生开始分析患者数据的过程(在数据准备和预处理上花费了大量时间)。

From Nvidia blog: https://devblogs.nvidia.com/parallelforall/nvidia-digits-alzheimers-disease-prediction/#.WH7_9C6Lcvs.twitter

Sarraf 的工作是,像我参加的处理图像的许多其他会议一样,在卷积神经网络(CNN)模型上进行训练,并产生可以帮助研究人员的图像分类。

这里有一个来自龚恩浩工作室的视频,它解释了 CNN,在某种程度上,它将类似的技术可视化,以平滑图像并进行特征提取。

除了大多数关于神经网络的演讲侧重于监督学习和图像分类之外,我参加的最有趣的会议之一,Robert Zigon 关于“神经成像基因组学中的 GPU 数据挖掘”的演讲展示了机器学习、生物信息学、生物统计学和神经学的交叉,他分析了 MRI 体素的属性和阿尔茨海默氏症患者 DNA 序列中的单核苷酸多态性(SNP)之间的相关性。用户界面(UI)热图高度概括了来自 MRI 的灰质密度和 SNP 基因型之间的关系。当用户悬停在大脑的每个片段上时,能够实时地看到大脑,并且逐个体素地看到与它的每个部分相关的 SNP。

其他相关研究

很像 Enhao Gong 提出的专注于解剖结构图像重建的用例,他讨论了动脉自旋标记(ASL)以量化灌注图(脑血流),我很高兴地发现,在 Nvidia 提出的“使用 R 和 MXNet 进行医学图像分析的深度学习”期间,一项推动心脏病研究的培训利用 fMRI 数据来测量大脑中的血流。这个研讨会展示了亚马逊的深度学习框架 MXNet,用于训练 CNN 从体积 MRI 数据的时间序列中推断人类心脏左心室的体积。虽然不是专注于神经退行性脑部疾病,但该研讨会展示了如何将不同类型的机器学习算法应用于其他类型的医学成像,从而推动其他领域的医学研究,这是一种更全面的方法,涉及到将人体作为一个整体来考虑,而不是将单个器官或解剖结构与其他部分分离开来进行研究。

虚拟和增强现实演示

我尝试过的最好的虚拟现实演示之一来自一家瑞士公司,虚拟放射学让我想起了多伦多大学的工作,只有高分辨率,彩色的。看这里的视频多伦多大学的 demo (TVASurg 医学成像 VR 模块)黑白 MRI。

虚拟放射科首席执行官 Christof von Waldkirch 是一名受过培训的放射科医生,他展示了研究人员如何对图像进行切片和调整。对我来说,这无疑是我在 HTC Vive 的 healthtech space 上看到的最好的 VR 演示之一。

See the video of me here participating in their demo.

这是一个视频(特写)和更高分辨率的演示我做的。

尽管再次强调,虚拟现实、AR 的沉浸式新兴技术并不专注于脑成像,但它们正在以新的不同方式与健康技术和人工智能交叉。与我交谈过的许多在场的研究人员一样,虚拟放射学的联合创始人(以及我自己)在图像处理方面都遇到了同样的问题,在降低 MRI 的噪声(图像清晰度)方面遇到了困难,并且在发现任何数据洞察力之前,采取除平滑之外的不同方法是数据准备管道的很大一部分。

Y Combinator 支持的增强现实公司 Meta ,其首席技术官 Karri Pulli(前 Nvidia 研究员)在 GTC 期间简要介绍了 Spatial OS 和 Meta 的 AR 设计指南,Meta 的首席执行官 Meron Gribetz 在 GTC 第三天在斯坦福的图像系统工程(科学)中心增强现实研讨会上介绍了 AR 演示。

Meta 的设计基于神经科学。Gribetz 引用了 Dwight J. Kravitz 在 2011 年的开创性工作,指出人类在过去 50 年的计算中只参与了这两个视觉系统中的一个(背侧通路相对于腹侧通路)。传统的非直观的平面用户 2D 界面已经把我们的思维和交互限制在了屏幕(手机、桌面等)的范围内。)并且没有优化腹侧通路的使用,该腹侧通路理解与空间关系相关的物体,而增强现实有潜力做到这一点。他解释了人类在与我们创造的一些有限的图形用户界面(GUI)(如命令行)交互时,如何只锻炼大脑的特定区域。

“大脑中解析符号信息和语言的部分,这些区域代表了大脑相当小的一部分,我们单独使用它们。随着我们锁定多个皮层模块,随着你越来越多地与大脑互动,你在零学习曲线的情况下接近这条渐近线,计算范式将像整个操作系统中的‘缩放’。”

格里贝茨简短地演示了 Glassbrain,这是一个大脑的交互式 3D 对象,并解释了亚当·加扎利·UCSF 教授实验室如何表现白质束。他在独奏一个鼓时,使用了感恩而死鼓手的脑电图扫描。他们在 DTI(扩散张量成像)上覆盖颜色来创造它。这是在 GTC 第三天的斯坦福增强现实研讨会上。请看下面的 YouTube 视频。

他提到了发现大脑中 F4 的 Leonard Fogassi,大脑可以创建你正在触摸的物体的深度图,以及你的手在物体附近的位置。

“当我在这个大脑周围移动我的手时,我正在我的脑海中创建这个物体的内部 3D 模型。如果说外周神经系统的任何一部分,手掌拥有最高的神经元凝结度。如果我们直接接触全息图,我们有最高的自由度和控制精度。我们更深刻地理解物体,为什么我们这样做。这就是为什么我们提倡不要使用控制器或鼠标,因为它们会将两个 x-y 平面彼此分开,只会使您进一步远离这种微调多自由度控制。”

由于 Glassbrain 和虚拟放射学的高分辨率、彩色和交互式图形用户界面只是概念证明的开始,它展示了我们如何开始重新思考医学研究人员如何超越简单、黑白、平面设计或单调的报告与他们的用户界面进行交互,以让我们的思维流动。

结尾注释

自近年来人工智能爆发以来,医学成像和机器学习领域已经走过了漫长的道路,仍然在与各种挑战作斗争,其中许多挑战都是非技术性的,与数据收集和数据质量有更多的关系。在当前的 2D 界面上使用人工智能(在 VR 和 AR 之外的大多数讨论中占主导地位)与创建更多开源软件(工具)、开放数据以及直观用户界面(VR 和 AR)之间的融合,医学研究可以通过人工智能推进。VR 中的虚拟放射学和 AR 中的 Meta 只是查看医学成像(即使没有大量人工智能)如何改变用户界面以创建新的分析范式的几个例子。我很高兴看到这些新兴学科之间的新交叉可以进一步推动医疗技术的研究。

数据的力量

原文:https://towardsdatascience.com/the-power-of-data-815a84539c9b?source=collection_archive---------21-----------------------

关于数据(或缺乏数据)如何帮助(或失败)发展中国家决策者的思考

前言

上周五,当我站起来在科特迪瓦教育部和 TRECC(一个由雅各布基金会领导的旨在改变可可产区教育的伙伴关系)之间的指导委员会会议上发言时,距离我第一次来到阿比让已经过去了 14 个月。

象牙海岸是一个充满活力的国家,反映了贯穿大部分大陆的矛盾。丰富多样的种族、语言和文化,以及充满武装冲突和政治紧张的历史。咖啡和可可等大宗商品推动了经济的增长,同时伴随着令人震惊的童工水平和令人沮丧的教育成就。

第一次旅行的目的是引发一场讨论,如何将巴西 MGov 的成功经验——Eduq+,一种 nudgebot 发送短信给家长,鼓励他们参与孩子的学校生活——应用于科特迪瓦的学校儿童。对巴西学生的出勤率、学习和成绩进步产生了惊人的影响(给政府带来了超过 1000%的投资回报),类似的影响能否在撒哈拉以南非洲更具挑战性的环境中复制?

有几个理由相信答案可能是。首先,因为估计约 50%的科特迪瓦父母是文盲。此外,在能够阅读的人中,至少有一半报告说他们不能阅读正式的法语。短信在这种情况下有用吗?第二,因为象牙海岸的教师缺勤率被认为很高——在类似的环境中,教师缺勤率约为 60%——所以让家长参与可能对学习没有任何影响;毕竟,如果学生在学校很少学到东西,那么出勤有什么好处呢?

在接下来的一年里,一台重型机器开始运转,以确保能够成功实现可转移性。我们与当地教育系统的所有利益相关者进行了广泛的磋商,建立了当地的伙伴关系,并对邻国的不成功经验进行了审查,以便为我们的工作提供信息。

三个关键的变化带来了最大的机会,积极的影响在巴西发现将转移到象牙海岸。首先,Eduq+不仅可以通过短信联系到家长,还可以通过语音信息联系到家长。第二,也是最重要的,根据每个参与者的选择,音频信息将以 7 种不同的语言传递——简化法语和 6 种当地方言。第三,教师也将成为 Eduq+的目标,目的是鼓励他们少缺课,更有效地利用课堂时间。

为了了解哪些约束是可转让性的真正关键,每个创新都被随机分配(与宾夕法尼亚大学的 Sharon Wolf 联合进行的一项正在进行的研究)。在一些学校,家长和老师都收不到信息;在其他学校,要么只有老师,要么只有家长会收到信息;在其余情况下,父母和老师都将成为目标。每当父母被分配接收信息时,在这些学校中的一半中,父母被分配接收简化法语的文本信息(没有方言的书面版本),而在另一半中,父母被分配接收他们选择的语言的音频信息。

目标是跟踪每个版本的 Eduq+对学生出勤率、学习、成绩进步和辍学率的影响。

这就是我要分享的故事开始的时候。

缺失数据

在这个过程的早期,一个非常重要的问题引起了我们的注意:教育部没有关于学生成绩、留级率、辍学率甚至出勤率的系统数据。

在这方面,象牙海岸并不孤单:我敢说,撒哈拉以南非洲没有一个国家系统地跟踪这类数据。即使在像巴西这样的发展中国家,我们开始每年跟踪每所学校的学习情况(T4)也不过是 10 年前的事情。即便如此,出勤率数据通常也无法获得,需要与当地政府合作。

一个教育部没有数据会怎么样?我们做了什么来解决这个问题?

丢失数据的一些后果

当戈亚斯州在高中成绩排名中上升到首位时,教育秘书处将其主要归因于该州在学生连续多天缺课时做出快速反应的政策。据该州称,这被认为是辍学率的最佳预测指标,一旦政策出台,辍学率至少下降了一半。

该州不得不成立一个庞大的工作组,以确保出勤数据能够及时获得。虽然教师每天都以书面形式记录出勤情况,但他们通常只在学年结束时将此类数据输入在线系统,因为那时对早期旷课和辍学采取行动已经太晚了。

尽管听起来令人兴奋,但戈亚斯的政策实际上并不具有可扩展性:教育秘书处内部可以设立的呼叫中心职位数量存在物理限制,而且外包此类服务的成本很高。结果,可能使戈亚斯地位上升的关键政策之一不再存在,也没有被其他州系统地采纳。

在一项旨在创建这一政策的可扩展版本的实验中——使用 Eduq+及时通知父母他们孩子的出勤情况,这是一个与 Eric Bettinger (斯坦福大学) Nina Cunha (FH360)和 Ricardo Madeira (圣保罗大学)的联合项目——我们发现,即使是巴西最富裕的州圣保罗也没有实时信息系统来跟踪学生的出勤情况。

当然,这让学校系统付出了沉重的代价:我们的研究表明通过让家长关注孩子的学校生活,与家长的沟通能够将九年级学生的缺课率降低 15%,留级率降低 1/3

数据的奇迹

在该研究的背景下,我们必须创建一个简单的系统,允许教师以粗略的方式在线报告儿童的每周出勤/行为,旨在尽可能方便、节省教师的时间,同时仍然向护理人员传递一些有用的信息。2/3 的教师在典型的一周内填写了关于他们学生的信息,即使没有金钱激励!

虽然 Eduq+甚至还没有触及其市场潜力的表面——巴西约有 4000 万学龄儿童——但它的规模每年都在增长,目前在该国约有 20 万活跃用户。

利用这一成功经验,象牙海岸的计划是为每所参与学校提供一台联网平板电脑,这样,每所学校的管理人员都可以在 MGov 的平台上填写教师和学生每周的出勤信息。

但就在那时,我们了解到——惊喜!—教育部甚至不知道学校在哪里……

所以我们从基础开始。现在,我们可以在地图上显示学校的每周教师和学生出勤率,这是我们与 TRECC 合作的第一年。

Eduq+’s dashboard for the Ivorian Ministry of Education

尽管看起来很简单,但这绝对是革命性的。它首次为学校系统提供了规划、监控和采取基于证据的行动所需的最基本的工具。

当你无法获得数据时…代理它

当然,这只是第一步。我们最终将能够以高频率展示我们对不同学校学生的读写和计算能力是否有所提高的最佳预测。

如果教育部没有每年一次的标准化考试,这怎么可能,更高频率的考试又如何呢?

答案在于借鉴流行病学和公共卫生的见解。当我们想要预测一种疾病是否正在传播时,我们并不完全依赖诊断计数,在社区分散、距离最近的诊所数英里之外的贫困地区,获得诊断计数可能非常缓慢,并且容易漏报。相反,我们依赖于更高频率的调查,这种调查遵循一种识别疾病的协议。这孩子一直感到不舒服吗?她发烧了吗?呼吸急促?如果答案是系统地是的,那么我们可以有把握地预测肺炎的发病率。

话虽如此,调查也面临挑战,比如零通胀:大多数参与者不回答(或少报)的倾向。有趣的是,利用良好的统计特性,虽然预测模型对个体来说往往很不准确,但对更多的聚合单元来说却越来越准确,比如村庄。

因此,现在有很好的模型来预测流行病的早期传播,而在为时已晚之前仍有时间采取行动。巴西创业公司 Epitrack 在巴西、美国和其他地方正是这样做的。

我们能为教育做同样的事情吗?这一类比表明,原则上我们可以,尤其是如果我们试图从学校获得基于个人报告的准确预测。

挑战在于,与预测疾病的探索不同,预测学习没有明显的方案。其实是科研人员还没有解决的问题。

此时此刻,MGov 正在巴西的背景下测试 10 种不同的协议,以评估什么是最好的"温度计"",以高频率(每两周一次)评估哪些学校正在改善,哪些学校没有改善。

不需要数据时

这里有一句忠告。仔细看看我们关于与父母沟通的研究表明,信息对于提高学习并不是真正必要的。吸引父母的注意力——换句话说,促使他们参与到孩子的学校生活中——足以导致我们在那项研究中记录的巨大成就。

然而,这并不是说这些信息与其他利益攸关方无关。教育系统知道在哪里采取行动仍然有巨大的价值,特别是当涉及到时间敏感的问题时,如学生在今年上半年的系统缺席,以及教师惊人的高缺勤率。如果运用得当,知识永远是力量。

数据不足时

然而,我们也必须面对这样一个问题,有时,仅仅获得正确的数据是不够的。巴西是一个典型的例子。它有学生水平表现的惊人数据。但是它仍然很少使用它们…

Scatterplot of the relationship between each school’s socioeconomic conditions and its students’ achievement

上图展示了社会经济水平相同地区的学校表现出的异常差异。IDEB 被计算为数学和语言评估的平均分,由学校的留级惩罚(因此,分数在 0 到 10 之间)。我们可以看到,一些条件相近的学校,学生成绩相差 7 分。

这种差异可能存在并持续的唯一原因是,政府没有系统地利用这种数据将学校配对,以纠正它们之间的不平等或促使它们相互学习。

人工智能如何帮助

人工智能可以帮助政府最好地利用数据,而无需等待昂贵而漫长的政治决策。

首先,将相关的学校联系起来(但最近的表现有系统的不同),比如通过自动共享模板来填写来自支持项目的资金申请,如巴西的 PDE Escola 。该计划允许低于全国 IDEB 平均水平的学校根据社区驱动的自我评估向联邦政府申请课程或实物投资。为什么教育部不自动与表现不佳的学校分享其他类似学校(反而有所改善)过去要求的内容?这可以通过人工智能轻松实现——这是一个唾手可得的果实。

另一个例子是教师培训。在巴西,教师的附加值很低:学生学得很少,90%的学生在高中毕业时没有达到该水平教学所需的最低数学技能。更具挑战性的是,新的共同核心课程标准要求教师改变他们的工作方式。该国如何确保教师接受在职培训来做到这一点?

一种方法是给老师发短信,系统地支持他们对新标准的理解,并分享资源帮助他们准备新的教案。然而,并不是每个老师都需要同样的支持。人工智能可以允许根据每个教师的需求定制培训计划,基于对这些计划的哪些特征可以最大限度地提高每个教室的学习效果的预测,利用我之前描述过的相同的"温度计"

当然,技术总是伴随着承诺和风险:(1)伦理维度应该仔细考虑,(2)算法必须谨慎地与实验相结合,以确保它们不会复制不平等,(3)结果数据(或至少是这些数据的代理)必须以足够高的频率生成,以便及时进行微调。

MGov 正在努力解决这些问题。

编后记

如果我们不能为决策者提供更好的数据来支持他们的意见,或者我们不能利用技术来帮助政府直接利用更好的数据,而不是在复杂而漫长的政治决策中打转,我们就会让整整一代学生失望,他们想要学习,但却没有获得所需的工具和资源。

我们开始接受这是的正常业务。这需要改变。必须释放数据的力量,否则我们将继续辜负这些孩子的未来。

数据科学中设定目标的力量

原文:https://towardsdatascience.com/the-power-of-goal-setting-for-your-data-science-project-9338bf475abd?source=collection_archive---------7-----------------------

人工智能项目管理

使用谷歌的目标设定方法 OKRs 来设定你的数据科学项目取得成功

T2奥格尔深知设定目标的力量。2004 年,早期投资者约翰·杜尔登向这家年轻的公司介绍了“目标和关键成果”(OKRs)。随之而来的是一个奇迹般的增长和创新的故事。长期担任谷歌首席执行官的拉里·佩奇认为,OKRs 对公司的成功产生了重大影响。谷歌并不孤单——亚马逊、Zalando 和英特尔至今仍在使用 OKRs。

Photo by Annie Spratt on Unsplash

首先,这篇文章解释了 OKRs 是如何工作的。其次,它旨在说服数据科学家使用 OKRs 来指导他们的项目。数据科学家经常会陷入持久的研究或优化价值较低的指标。结果,浪费了时间和资源,危及了成功的交付。OKRs 提供战略指导和可测量性,帮助您实现项目目标。

内容基于著名风险投资家约翰·杜尔登的著作《衡量什么是重要的》和个人对 OKRs 的体验。让我们学习。📗

设定目标的力量

"正确设定的目标已经成功了一半."——金克拉

设定目标可以说是启动任何项目最重要的一步。虽然研究还不清楚正确设定目标的好处,但我们可以推断出它的优点和缺点。如果我们没有明确的目标,员工就无法合作,行动也不一致,我们也不知道是否达到了目标。简而言之,浩劫迫在眉睫。

Photo by Patrick Fore on Unsplash

因此,每个数据科学项目都旨在实现一个目标。目标的广度可能有所不同,从研究一个新模型到创建一个改进现有系统的原型。即便如此,准确的目标设定对于数据科学项目来说也是至关重要的。数据科学项目非常适合精确的目标设定,因为我们可以将模型的结果与所需的指标进行比较。

让我们探索由英特尔首创、谷歌完善的目标设定方法——OKRs。

目标和主要成果

O 目标和关键成果是一种透明地调整资源并对其进行优先排序以实现共同目标的方法。这种方法是由英特尔传奇人物首席执行官安迪·格罗夫在 20 世纪 80 年代创立的。OKRs 可以在公司、团队、项目或个人层面上被企业和组织使用。okr 被广泛用于在硅谷和欧洲的公司间协调战略计划。

Photo by rawpixel on Unsplash

okr 在项目开始时制定,并定义最终目标。下面是 Rick Klau 的个人简历,他在被谷歌收购后在 Blogger 工作:

您可以看到,Rick 宣布的目标是“提高 Blogger 的声誉”以及可衡量的关键结果。在每个季度末,这些关键结果被从 0 到 1 分级。

目标【什么】。项目的目标是什么?他们…

  • 表达目标和意图
  • 既激进又现实
  • 是有形的、客观的和明确的。一个理性的观察者能够判断目标是否达到
  • 在以下情况下为公司提供明确的价值

关键结果“如何”。我们如何达到项目目标?他们…

  • 表达可衡量的里程碑
  • 描述结果,而不是活动。“请教”或“帮助”是 OKR 的弱项。关注这项活动如何帮助实现目标。
  • 包括完成的证据

OKR 超级大国

根据约翰·杜尔登的说法,OKR 框架提供了四个不同的超级大国。

OKRs 透明地将员工的工作与承诺的目标结合起来。okr 是可衡量的,在每个季度末进行评估。当达到 70%的关键结果时,okr 就是成功的。这促使员工树立远大目标。

接下来,让我们探索如何将 OKRs 的力量用于数据科学项目。

将 OKRs 应用到您的数据科学项目中

著名的人工智能先驱 ndrew Ng 在他的深度学习专业中教导说,每个数据科学项目都应该从定义一个可衡量的指标开始。该项目的目标是实现这一指标。这个目标指导你的项目的行动。

Photo by rawpixel on Unsplash

准确性、精确度和召回率或 F1 分数等指标是常见的数据科学指标。根据您的业务案例,每个指标都有明显的优势和劣势。当数据集高度不平衡时,精确度可能不是最佳指标。你会将你的算法与人类水平的性能进行比较吗?检测速度有多重要?

选择最有意义的指标来定义你是否已经解决了业务案例。分析每个指标的利弊超出了本文的范围,但是您可以在这里阅读更多相关内容。定义关键指标将阻止您在应该创建原型时进行研究,或者在已经达到指标时继续解决问题。

定义关键指标后,我们离定义数据科学 OKRs 更近了一步。在许多项目中,关键指标是目标的一部分是有意义的。它显示了我们想去的地方。接下来,我们需要定义关键结果来显示如何达到目标。

假设你在汽车行业工作。您发现需要检测城市环境中的行人,以警告卡车司机。您决定为卡车开发一个驾驶员辅助功能,以准确识别行人。卡车底盘抖动严重,因此一般的行人检测模型不能很好地工作。团队一致认为,第一季度 98%的检测率是一个合适的延伸目标。

接下来,您决定需要一个至少包含 10.000 个标记图像的数据集。你需要时间来做研究和实现第一个原型。最后,你需要时间和资源来迭代,直到你达到目标。让我们把信息转换成 OKRs。

这些 okr 指导您下一季度的行人检测项目工作。你在最后回顾你的 okr。你实现了你的主要目标了吗?如果你错过了他们,为什么?

将 OKR 方法应用到您的数据科学项目中,将使您保持成功的项目交付。

关键要点

  • OKRs 允许你调整和优先化你的工作,设定延伸目标和跟踪你的进展
  • 通过设置正确的指标和 OKRs 开始每个数据科学项目
  • 不断衡量你达到 OKRs 的进度

每个数据科学项目都是不同的。然而,所有的项目都是从设定目标开始的。通过使用 OKRs,让您的数据科学项目取得成功。🎯

模拟的力量:生日悖论

原文:https://towardsdatascience.com/the-power-of-simulation-birthday-paradox-29677ca5e145?source=collection_archive---------0-----------------------

生日悖论是这样的……在一个有 23 人的房间里,他们中的两个人有 50%的机会在同一天过生日

好的,引入一个悖论的第一步是解释为什么它是一个悖论。有人可能认为,对于每个人来说,都有 1/365 的机会让另一个人和他们同一天生日。事实上,我能想到的和我同一天生日的人只有一个,他是我的双胞胎兄弟!既然我遇到的远远不止 23 人,这怎么可能是真的呢?

这个推理有几个原因是有缺陷的,第一个原因是这个问题不是问房间里是否有另一个人有特定的生日——任何一对人(或者更多!)可以共享一个生日来增加陈述为真的几率。

完整的答案很难计算,但是我想告诉你如何通过模拟实验来说服自己这是真的。模拟是对计算机或模型进行编程,使其表现得就像真实发生的事情一样。通常情况下,你这样做是为了让模拟的花费比实际的花费少得多。例如,将模型飞机机翼放在风洞中就是一种模拟。我用一种叫做 Python 的计算机编程语言模拟了生日悖论,这篇文章可以在这里的笔记本式中找到。的确,这比和 23 个人在一个房间里要容易得多。

下面我将而不是展示代码(同样,这里的已经结束了),但是我将描述模拟是如何工作的,并展示结果。

模拟

打电话给我们需要问的人数,才能得到重复的生日。这就是所谓的随机变量,因为它的值是未知的,并且可能会由于我们无法控制的条件而改变(比如谁碰巧在房间里)。

现在我们模拟一个实验,实现如下的 n 值。

  1. 随便选一个人,问他们的生日。
  2. 看看别人是否已经给了你答案。
  3. 重复步骤 12,直到生日被重复两次。
  4. 数一数被询问的人数,称之为。

进入步骤 4 构成了一个单独的实验。出来的数字可能是 n = 2 或者 n = 100 。这完全取决于谁在房间里。所以我们重复所有的步骤很多很多次,看看数字是如何下降的。我们重复的次数越多,我们获得的数据就越多,我们对正在发生的事情的理解就越好。

这是我们运行这个实验一百万次后的样子。

模拟生日悖论。横轴是 n ,在找到重复的生日之前我们需要询问的人数。我们做了一百万次实验,并记录了结果。

那么这些数字意味着什么呢?好吧,让我们看看发生了多少次 n = 2 比如。在这一百万次试验中,结果 2 出现了 2679 次,相对来说是 0.2679%。请注意,这接近 1/365 ≈ 0.274%,这是意料之中的,因为第二个人与第一个人具有相同的概率正好是 1/365。所以每一次出现的次数除以一百万,大概就是我们在一次实验中看到这个数字的概率。

然后我们可以绘制同样的数据,考虑到纵轴是在重复生日之前需要见 n 个人的概率。

与之前的图相同,但现在每个柱都被解释为一个概率。

将每个条形的值相加,总和为 100%。这是因为当我们做实验时,其中一个值必须出现。好,现在我们可以把这些概率加起来,从 n = 2 开始,一直加到 50%。从视觉上看,是这个数字将上面的彩色区域分成了两个相等的部分。这个数字就是我们有 50%的机会重复过生日所需要遇到的人数。你能猜到会是什么吗?

鼓声… 23 !Tada!模拟的生日悖论,模拟解决!

但是,等等!还有更多。

那些闰年的宝宝呢?其实生日平均分布的假设不是错的吗?如果我们真的在现实生活中尝试这个实验,我们会得到 23 或其他数字吗?

令人高兴的是,我们可以用真实数据来检验这个假设!至少对于美国的新生儿来说,你可以在 fivethirteight 的 github 页面找到数据。这是实际的分布情况。

1994 年至 2014 年美国出生人口分布,按年份分。

也许用眼睛看起来不太均匀。你可以清楚地看到 12 月 25 日和 12 月 31 日有巨大的下降。关于这一点已经写了很多,也有很多美丽的视觉效果。但是,我们的问题是这是否对生日悖论有影响。举例来说,也许没有多少人出生在 12 月 25 日这一事实意味着很容易在剩下的日子里找到同一个生日。让我们通过用生日的真实分布模拟实验来检验这个假设。

为此,我们执行与上面相同的 4 个步骤,但是从生日的实际分布中随机抽取答案。另外一百万次实验的结果绘制如下。

模拟出生人口真实分布的生日悖论。横轴是 n,在找到重复的生日之前我们需要询问的人数。我们做了一百万次实验,并记录了结果。

而且答案是一样的!生日悖论在生日的实际分布中依然存在。

书呆子狙击

上述讨论很好地证明了生日悖论对于出生的实际分布是稳健的。但是,这并不构成数学上的证明。一个实验只能提供证据。所以我将以一个技术性的问题来结束这篇文章,这个问题是给那些数学迷们的。(我接下来要做的也叫书呆子狙击。)

Nerd Sniping

这里有一个广泛的问题:量化上述观察。我觉得这里不止一个问题。例如,应该可以将 50–50 阈值限制为与均匀分布的偏差的函数。

这篇文章最初发表于 2017 年 3 月 23 日的https://csferrie.com

礼物:数据科学的圣诞故事

原文:https://towardsdatascience.com/the-present-a-data-science-christmas-story-58a0a10f5282?source=collection_archive---------5-----------------------

Bean Sprout Notes

乌拉贝克开始审视今年礼物的规格时,思绪纷乱。他的星球已经和不到一万光年外的姐妹太阳系中的对手交战了一个多世纪。他担心他将永远看不到结束所有战争的战争的结束,因为在每个城市和每个州都有每个阵营的游击队员,甚至可能在人类意识中共存。考虑到双方在真理、价值和人性上不可调和的立场,他认为他们的死对头成为他们圣诞礼物的唯一供应商是非常矛盾的。所有这些想法都强调了他自己团队工作的重要性——确保每年的礼物不会污染他星球上孩子们的思想和梦想,从而不可避免地导致对手的胜利。

乍一看,今年的礼物似乎足够传统。原型基本上是一个经典的谋杀推理游戏,即使它包含了最新的前沿技术。该软件通过虚拟现实设备交付,鼓励参与者合作解决一个经典的“谁做了”问题。玩家被引导从一个虚拟地点到另一个虚拟地点,寻找可以用来识别对手间谍高手的数据。集成的父母控制似乎提供了一个不错的额外津贴——参与者年龄组的生物统计学读数输入一个自适应算法,该算法生成每个场景的谜语、痛苦和快乐。竞争对手肯定操纵了游戏,他的工作只是了解如何操纵。

乌拉贝克很久以前就得出结论,尽管竞争对手的领导人确实很聪明,但他们的智慧在很大程度上被公众忽视了。他们的信仰体系基于理性思考,天真地认为人类能够看穿自己的偏见。在制造圣诞玩具方面,竞争对手的独创性是一种罕见的天赋,但却是对普通员工的诅咒。所有这些关于分析方法和基于事实的决策的讨论,对于那些想要即时满足和实时结果的人来说是太多了。这几个世纪人类进步的失败难道还不足以证明理性的谬误吗?现实世界太复杂,普通人无法关心,充满了太多的痛苦,任何人都无法承受…

在他自己的世界里,大众经常将数据误认为事实,操纵大师的力量早已占据上风。竞争对手既愚蠢又聪明——谁不想成为德乌斯人呢?【iii】预测性分析已经取代了描述性统计,只是在最终目标是指导人类行为的规定性分析方面显得苍白无力。后真理早已成为这个后现代主义世界的署名——第四次工业革命催生了数据的大规模生产,其唯一目的是证明其所有者的观点。在政治、经济和社会中,政治顾问总是占上风。

当然,他的团队的责任是确保这种人为的真理永恒不变。有传言说竞争对手已经改变了策略,这无疑是一个令人担忧的原因。到目前为止,他的检查员团队从未发现过陷阱,并在向公众发布之前重新设计了过去的礼物。他的团队一次又一次地测试新游戏,同时享受只有虚拟现实才能提供的刺激和乐趣。几周过去了,乌拉贝克变得越来越担心:这个软件看起来就像它声称的那样——一个基于角色的游戏,基于操纵者非常珍视的价值观。平安夜的早晨到来了,他必须做出决定,决定他做了。他命令他的团队用自己的数据集替换游戏的数据集,然后将软件上传到云端,以便全球分发到每个家庭的电子圣诞树。

圣诞节一大早,乌拉贝克就被自己孩子的恶作剧逗乐了。他们已经把礼物下载到了家里的虚拟现实耳机上,现在已经准备好去冒险了。尽管他很关心他的孩子,但如此多的清晨焦虑和喜悦只会加剧他最近的挫败感。他勉强同意玩这个游戏,心里只有一个想法——他要给他们上一堂值得操纵大师自己上的课。随着孩子们越来越深入虚拟现实,乌拉贝克确保将他们远远抛在身后。他们不断轻蔑的微笑和不断的大笑只会让他更加恼怒——为什么他们如此努力却收效甚微?在两个“短”小时内,他轻松赢得了比赛。然后,在他得意洋洋的时候,他嘲笑他的孩子们缺乏远见和狡猾。

事实证明,他发泄的愤怒是他的孩子们发笑的另一个原因。当然,他要疯了。一种内心深处的恐惧慢慢地但肯定地吞没了他……如果他们掉进了对手的陷阱呢?当他觉得自己再也受不了这种无聊的事情时,他最小的孩子开口了,“爸爸,你没看视频说明吗?这个游戏的目标不是赢,而是输。”

我谨代表商业分析研究所的合作伙伴和同事,祝您节日快乐,并祝您在 2018 年的个人和专业事业中取得成功!

改善管理决策是商业分析研究所的核心和灵魂。在巴约纳的暑期学校,以及在欧洲的大师班,我们专注于数字经济、数据驱动的决策、机器学习和视觉通信,我们可以帮助您将分析应用于您和您的组织。

Lee Schlenker 是 Pau 商学院的教授,也是 http://baieurope.com 商业分析研究所的负责人。他的 LinkedIn 资料可以在www.linkedin.com/in/leeschlenker.查看,你可以在https://twitter.com/DSign4Analytics的 Twitter 上关注我们


【我】这个故事的灵感来自联合国毒品和犯罪问题办公室的简报(2017 年),有效边境管理的数据分析:吉尔吉斯共和国的经验,以及多年前我十几岁时读过的一个短篇故事

【ii】说服大师的概念是在 Adams,S. (2017),Win Bigly:在一个事实无关紧要的世界中的说服,Portfolio

【iii】尤瓦尔·赫拉利认为,随着人类发展了创造人工生命的能力,我们剩下的更根本的问题是为自己的命运承担责任,纽约哈拉里(2017),德乌斯人:明日简史,哈珀

【iv】克劳斯·施瓦布认为,随着生物、物理和技术世界走到一起,数据和分析将构成第四次工业革命的基石,Schwab,k .(2017),第四次工业革命,皇冠商业

人工智能量子计算的现在和未来

原文:https://towardsdatascience.com/the-present-and-future-of-quantum-computing-for-ai-fb600546bbb7?source=collection_archive---------3-----------------------

量子计算仍处于起步阶段,目前还没有通用的量子计算机架构。然而,他们的原型已经在这里,并在密码学、物流、建模和优化任务中显示出有希望的结果。对于人工智能研究人员来说,优化和采样尤为重要,因为它允许以更高的精度更快地训练机器学习模型。

目前,加拿大 D-Wave 是量子计算领域的领先公司。他们最新的机器 D-Wave 2000Q 包含 2000 个量子比特,工作温度为 0.015K(比绝对零度略高)。他们的目标不是在不久的将来制造通用量子计算机,但有一件事他们的设备可以做得很好——量子退火

D-Wave 2000Q 以毫秒级工作,上传输入数据,找到解决方案并读出。你可以很容易地重复整个过程很多次,以获得不同的解决方案。它的工作速度比模拟退火的现代 GPU 实现快数千倍。

量子退火非常适合从基于能量的模型(如玻尔兹曼机器)中进行训练和采样。值得注意的是,无监督学习对人工智能研究人员来说是一个很大的挑战,量子计算可能是关键。然而,数值精度存在问题。即使是半精度的浮点数也很难处理,所以目前大部分工作都是处理二进制变量。

D-Wave 正计划在 2019 年前为机器学习创造行业就绪的混合量子/经典计算机。此外,1QBit 已经在为他们的机器开发专门的软件。

QA 如何工作

简而言之,量子退火是一种控制量子系统能量减少的方法,它将量子位从叠加态移动到具有低能量配置的经典态。任务描述被编码为量子位之间连接的能量函数,通过退火,它们朝着某个最优配置移动。

如果转换进行得足够慢,该算法将以很高的概率找到基态(即最优解):

During the annealing process, probability of qubits ending up in the minimum energy state increases

量子耦合允许量子位同时探索所有潜在的解决方案,同时量子隧道允许它们穿过高能垒向“更好”的状态移动。这两种效应使得量子计算机能够比经典计算机更快地解决许多困难的优化问题。D-Wave 的这个视频更详细地解释了 QA:

IBM Q

另一个主要参与者是 IBM Q。蓝色巨人正在从事门模型量子计算,他们的机器通用量子计算机。它们的应用范围更广,但同时也更难控制。IBM 最先进的处理器有 16 和 17 个量子位,真的很难进一步扩展。

IBM 处理器的更通用架构允许它们运行任何量子算法。例如,Grover 的算法可以找到一个黑盒函数的输入,该黑盒函数只需要对该函数进行 O 次(√N)计算就可以产生指定的输出。更不用说 Shor 的整数因式分解算法,它给许多经典加密算法的安全性带来了许多担忧。

对了,16 量子位版本通过 IBM Q 体验计划公开发售。IBM Watson 的认知服务在 AI 社区的声誉现在相当糟糕。也许,IBM Q 将能够改变这种局面。

在量子世界和 AI 的交叉点还有一件事——量子神经网络是对经典人工神经网络的一种固有的随机修改。这是一个有趣的研究方向,但是还没有任何有意义的成果。只有关于玩具问题的理论研究和模拟。

总的来说,量子计算看起来像是机器学习中随机模型的一个有前途的方向。随着 D-Wave 和 IBM 最近的进展,我认为我们可以预计到 2020 年量子计算机在人工智能中的实际应用。

相关论文:

最初发表于 认知混乱

价格是正确的:定价策略—第 1 部分

原文:https://towardsdatascience.com/the-price-is-right-pricing-strategy-part-1-d4952dc5f5dd?source=collection_archive---------6-----------------------

为你的产品/服务定价是一项复杂的任务。选择太低的价格,你可能会减少你的利润。把你的产品定价太高,你可能会失去顾客。这是如何帮助你找到合适价格的 2 部分系列的第 1 部分。

定价策略

你生意的一个基本方面是计算出你的产品向顾客收取多少价格。在以前版本的每日数据驱动中,我们假设您已经确定了价格,以便通过与您的收入相关的指标与您交谈,如客户终身价值。在接下来的两周,我们将抛开这一假设,更深入地讨论如何利用数据为您的企业制定定价策略。

在我们开始之前,让我自我介绍一下。我是道格·米塔罗通达,Outlier 的客户开发主管,我的整个职业生涯都在研究定价。我开始通过拍卖出售二氧化碳排放配额,然后设计公用事业的住宅电价,最近还帮助运动队和现场娱乐推广商定价门票。

通过所有这些经历,我学到的最重要的事情是,定价应该被认为是一个不断发展的策略。因为你公司的目标和你所处的竞争环境会随着时间的推移而变化,所以你的定价也需要进行战略性的调整。

接下来的两周,我们将深入探讨定价概念,通过回答以下关键问题,帮助您成为利润更高的企业:

  • 在制定价格时,您应该考虑哪些因素?
  • 你如何衡量客户对价格变化的反应?
  • 你如何最大化每个客户群的收入?
  • 什么时候打折或促销你的产品是有意义的?

为了回答每个问题,我会花一天的时间谈论理论方面,然后第二天用一个具体的例子,使用一个假设的公司,道格的甜点(因为我喜欢烘焙!).这家假想的公司在网上销售烘焙食品,还提供在线订阅服务,为客户提供食谱和技巧。

创建定价策略总是需要一些技巧的,但是在本系列结束时,希望你能更轻松地识别正确的数据和工具,为你的定价策略提供信息。如果一路上有什么问题,请给我发[线](mailto: doug@outlier.ai)。我是来帮忙的。

具体来说,我们将涵盖:

  • 定价投入(理论)
  • 定价输入(示例)
  • 需求价格弹性(理论)
  • 需求的价格弹性(示例)

定价输入(理论)

今天,我们将重点关注您做出定价决策所需的信息。当你第一次坐下来试图决定如何给你的产品定价时,有许多不同的输入可以用来缩小最优价格的范围:

  • 销货成本(COGS),加上利润
  • 目标收入除以预期客户数量
  • 竞争对手的价格
  • 您的产品对客户的价值

让我们考虑一下其中每一项的优势和劣势,以了解它们在您的定价策略中的位置。

销货成本(COGS),加上毛利

这是考虑定价最直接、最容易计算的方法之一。你有生产产品的固定成本和可变成本,所以只要你能在短期内弥补可变成本(并能找到弥补长期固定成本的方法),你就成功了!你仍然需要测试客户是否愿意支付足够的钱来弥补你的可变成本,但是知道你每单位需要赚多少钱有助于你理解你需要收取的价格来维持业务。但是如果顾客愿意支付比你的成本更多的钱,你将会在桌面上留下很多钱!

目标收入除以预期客户数量

另一个相对直接的输入是确定一个目标收入目标,并除以预期的客户数量,从而得出你应该向每个客户收取的费用。这个指标很容易计算,因为您的收入和客户目标是基于您公司当前的战略目标。收入和客户目标可以帮助你实现目标,但你不会知道是否有/足够多的客户愿意支付你计算的价格,或者相对于他们的支付意愿,你的价格是否偏低。

竞争对手的价格

了解竞争对手的价格以及与报价相关的相关产品,有助于您了解您的市场,尤其是客户愿意为类似的产品或服务支付多少钱。这种输入可以作为你的产品的基准,应该很容易衡量,因为大多数 SaaS 和电子商务公司的定价都可以在他们的网站上找到。

然而,你的产品在影响价格的重要方面不同于你的竞争对手。或者,在某些情况下,你正在开发新的东西,没有直接的竞争对手。此外,你不知道你的竞争对手已经深思熟虑地设定价格,以使他们的收入最大化。出于所有这些原因,将竞争对手的价格作为定价策略的唯一输入是一个坏主意。

您的产品对客户的价值

在制定定价策略时,牢记你的产品为客户提供了多少价值是关键。这种成本/收益分析肯定是你的客户在决定是否购买你的产品时有意识或无意识地问自己的问题!以这种方式思考定价会让你真实地了解人们对你的产品的看法,以及他们愿意为此支付多少钱。你得到的关于产品价值的信息有一个额外的好处,那就是帮助你确定哪些特性是最有价值的,或者哪些新特性是需要添加的。

与其他定价投入相比,产品价值是最难准确衡量的。一种方法是进行市场调查或与客户交谈;然而,顾客的反应是有偏见的,因为他们希望将他们的成本降到最低。因此,他们没有动力如实告诉你他们愿意为你的产品付多少钱。另一种选择是估计你的产品的直接收益,例如,估计你的客户的员工使用你的产品节省的时间。

那么,我该怎么做?

在确定产品价格时,最重要的数据是你要增加的价值。其他定价输入有助于完成定价叙述,但仅靠这些是不够的。例如,了解竞争对手的价格表明你对自己的行业很了解,并给你机会展示为什么你的产品更好,以证明你的价格是合理的。当你知道你要求的价格也将涵盖你的可变成本,并把你放在实现你的目标的道路上,你知道你有一个可行的业务!

定价输入(示例)

现在我们知道了在为我们的产品制定定价策略时应该考虑哪些因素,让我们来看看如何在 Doug 's Desserts 中实现这一点。Doug's Desserts 是一家假设的公司,它在网上销售烘焙食品,还提供在线订阅服务,为客户提供食谱和技巧。

商品销售成本(COGS),加上毛利

Doug's 甜品公司的烘焙食品生产成本很高,比如巧克力曲奇饼干,这些产品会邮寄给顾客,还有在线订阅服务。

假设我想在每种产品上赚取 50%的利润。然后,我需要以每打 6.00 美元的价格出售饼干,并以每月 1.50 美元的价格向每位客户在线订阅。

目标收入除以预期客户数量

在我公司生命的这个阶段,我的目标是每月收入 5000 美元,每个月有 1000 名顾客购买至少一打巧克力曲奇,因此我需要将曲奇的售价定为每打 5.00 美元,以达到我的目标。我的目标是每月从 10,000 名在线订阅服务客户那里获得 10,000 美元的收入,即每月订阅 1 美元

你的竞争对手的价格

我在当地的 Safeway 卖 50 块巧克力饼干,售价 5.00 美元,每打 1.20 美元。但是,我的饼干的配料质量和味道都比西夫韦的好得多,所以他们不是真正的竞争对手!这篇在线评论称,在美国最好的商店购买的巧克力片饼干是泰特的,出售 14 块饼干,售价 5.99 美元,或每打 5.13 美元

Cook's Illustrated (我最喜欢的食谱网站)以每年 34.95 美元的价格出售他们的标准在线会员资格,或者说每个月 2.91 美元。但是他们有一个完整的测试厨房,用来测试每种食谱的数百种版本,所以他们的食谱和建议可能比我能提供的更好。也有很多免费的选择从广告中赚钱。

您的产品对客户的价值

购买巧克力饼干给我的顾客带来的好处是节省了他们购物、烘烤和清理的时间,而且与他们自己的(或我的竞争对手的)相比,我的饼干味道鲜美,质量上乘。他们的原料成本和我的差不多,但可能会贵一点,因为我可以批量购买。让我们假设我的消费者的原料每打要多花 25%,或者每打 5 美元。让我们假设每个顾客每月烘烤两打饼干,购物/烘烤/清理需要两个小时,他们的时间价值每小时 5 美元。这意味着每两打可以节省 10 美元的时间,或者每打可以节省 5 美元。所以对顾客的总价值是 $10.00 每打(在考虑我的饼干的上乘口感和质量之前)。

在线订阅也节省了我的客户的时间。让我们假设一个月花两个小时做饮食计划,我的食谱/菜单可以把这个时间减少一半。每小时 5.00 美元,对我的顾客的价值是每个月 5.00 美元(在考虑其他好处之前,比如用如此美味的食物打动他们的家人和朋友)。

我的产品为我的客户提供的理论价值超过了其他投入,所以这给了我一个很好的主意,我可以收取多少费用。但是直到我卖掉了我的产品,并与顾客交谈,这些价值才有点模糊。

我会把我的巧克力饼干定价为每打 7.00 美元,因为我知道我要向顾客解释我的产品比我的竞争对手优越多少。我将把我的在线订阅服务定价为每个月 2 美元,因为我还不确定我的价值是否会超过我的竞争对手。

这项研究为我的定价提供了一个很好的起点。明天我会讲,通过需求价格弹性的概念,当你改变价格时,你可以预期会发生什么。

需求的价格弹性(理论)

需求的价格弹性是衡量你的客户对你的产品的需求对价格变化的反应的方法。通过理解和衡量这一指标,您将对价格变动后的收入预期有更好的了解。

定义

产品需求的自有价格弹性被计算为响应自有产品价格百分比变化的产品需求数量百分比变化。

Price elasticity of demand equation

例如,如果你以每件 50 美元的价格卖出 100 件,在将价格改为 55 美元后,你卖出了 95 件,那么你自己的需求价格弹性是-0.5。此结果是一个介于 0 和负无穷大之间的无单位(因为它是以百分比变化来衡量的)、负数(因为价格的变化与数量的变化方向相反)。

解读

需求价格弹性最重要的方面是它与-1 的关系。如果需求的价格弹性介于 0 和-1 之间,那么数量的变化百分比小于价格的变化百分比。你可以通过提高价格来获得更多的收入,因为损失的销售额可以通过更高的销售价格来弥补。正因为如此,当需求的价格弹性在 0 和-1 之间时,称为无弹性,因为顾客对你的价格变化并不敏感。

另一方面,如果需求的价格弹性小于-1,则相反。你可以通过降低价格来获得更多的收入,因为新销售的数量会弥补较低的价格点。在这种情况下,需求的价格弹性被称为弹性,因为顾客对价格的变化很敏感。

测量和使用

有几种方法可以使用调查技术来测量需求的价格弹性,例如基于选择的联合分析价格敏感度量表。然而,由于一些因素,如激励结构和潜在偏见,调查需要有所保留。对产品需求价格弹性最准确的看法是通过改变价格来观察顾客的反应。

重要的是要记住,需求的价格弹性在任何时候对所有消费者来说都不是一个恒定值。例如,您应该估计每个客户群的需求价格弹性,以及需求何时因季节影响而变化。

即使你不进行调查或改变价格来计算需求的价格弹性,也有许多因素会影响需求的价格弹性,你应该始终牢记在心。特别是,有许多相近替代品的产品具有很高的弹性,因为客户很容易转向更便宜的选择。此外,被视为奢侈品的产品具有很高的弹性,因为如果价格大幅变动,顾客可以不买也能继续消费。这些概念反映了贵公司的驱动目标——创造一种独特的产品,深深植根于客户的生活或工作流程中。

需求的价格弹性

今天,让我们来看看需求的价格弹性是如何对我假设的公司 Doug's Desserts 产生影响的。在前面的例子中,我决定将我的巧克力饼干定价为每打 7 美元。假设按这个价格,我每月卖 500 打,但我想我可能定价过高,如果我降价 1 美元,就能卖出更多的饼干。在我把价格从每打 7 美元降到 6 美元后,我开始每月销售 750 打。

将这些值代入昨天的等式,我发现我的饼干的需求自有价格弹性为-3.5

这意味着对我的饼干的需求是有弹性的,这可能并不令人惊讶,因为有许多接近我的巧克力饼干的替代品,特别是优质饼干,不是必需品。因为对我的饼干的需求是有弹性的,这一价格变化为我的企业带来了更多的月收入。

下周,我们将继续讨论定价策略,看看分级定价、折扣和促销。

反向传播的问题是

原文:https://towardsdatascience.com/the-problem-with-back-propagation-13aa84aabd71?source=collection_archive---------1-----------------------

神经网络依靠梯度下降的反向传播来设置神经元连接的权重。它有效,可靠地最小化了成本函数。研究人员喜欢它,因为他们有证据证明反向传播是可行的。然而,它的成功并不排除其他方法优化神经元的连接。而且,它有一个主要的限制:一旦网络学习了一组权重,任何新的学习都会导致灾难性的遗忘

DARPA 希望设计出能够持续学习的神经网络,不会遗忘,也不需要对它们的整个经历历史进行重新训练。我们知道这样的网络是可能的——我们自己的大脑能够学习新信息,而无需忘记或重新训练。他们寻找的网络不太可能使用反向传播,因为反向传播针对固定目标优化了网络。

固定目标与动态姿态

目前,神经网络被训练成擅长于一项预定的任务,它们的连接一旦被部署就被冻结。没有额外的学习发生。这类似于一辆赛车:该车辆针对在光滑赛道上比赛的任务进行了优化,一旦展开,其设计就不变。赛车擅长在那些光滑的赛道上行驶,但它不适合越野行驶。是‘一招小马’!

如果工程师对赛车进行改装,希望能让它越野,这些改装会损害它的赛道性能。修改后的设计已经'忘记了'如何在赛道上表演。

相比之下,人类能够适应各种环境。弹钢琴的手指也能穿针引线。我们的手没有提前为一个单一的任务优化。因此,我们能很好地解决新问题。机器智能不需要这种动力来完成固定的任务,比如语言之间的翻译。然而,这些固定的任务只是我们希望机器将扮演的角色的一小部分。我们需要能做出动态姿势的人工智能。

在野外学习

为了学习新的东西,神经网络必须衡量现有知识的适当性——“这个新任务是否遵循与我已经知道的东西相同的原理或动力学”有没有我已经知道的与这项新任务相关的特征或品质?它需要分析现有的技术,并通过这些领域传递信息。目前,混合专家网络最接近这个理想;它们通过较小的神经网络的组合来解析输入,并组合它们的输出。每个专家处理一个子任务或抽象,对于一个给定的输入,只有少数专家被调用。谷歌的杰夫·迪恩是这些稀疏网络的粉丝。

然而,混合专家仍然通过梯度下降的反向传播进行训练。因为每个专家仅用于输入的少数实例,反向传播缓慢且不可靠。当新的情况出现时,专家的组合不能快速适应它的分析。如果一种情况需要一种新的专业知识,现有的专家组合不能增加这种专业化。我们需要一个替代方案。

相比之下,决策树从相反的方向处理问题:反向传播自顶向下修改神经元,而决策树自底向上解析。它们也被证明对于优化各种固定任务是有效的,但是它们的分支仍然不能动态学习。要像人类一样学习,机器智能还需要其他东西。将新信息解析为“我已经知道的事情”和“我不知道的事情”,然后基于该解析形成输入的路由。

例如:假设我们假设的机器智能已经学会预测刚性下落物体的行为,然后给它一个弹力球。弹力球遵循与刚性球相同的抛物线轨迹,因此机器智能应该识别相似性并应用抛物线预测。然而,一旦弹力球落在一个表面上,它就会变形,并反弹到比刚性球高得多的位置。这是对它所学内容的修改——机器智能将需要调整现有的专业知识,并且它需要学习何时应用这种调整。在第一次反弹后,机器智能应该识别出球是有弹性的,并相应地调整其预测轨迹。对现有知识进行类似的解析和改编对于理解下落的粘土球也是必要的——粘土完全变形,根本不会反弹!

由内向外学习

我们自己的大脑不会像反向传播那样自上而下地学习,也不会像决策树那样自下而上地学习。相反,我们通过亲和力形成新的联系——“什么一起燃烧,什么一起连线”。这个过程发生在每个深度,沿着我们大脑的内部形成连接。

更重要的是,我们的大脑从一套多样的解释开始,慢慢地确定一个折中的方案。我们大脑中的每一群“专家”都会得出一个略有不同的结论,他们的评估会反复出现,直到他们找到一个对大多数人都有意义的解释。就像一群鱼一样,它们的个体取向影响着它们的邻居,它们的集体运动是它们个体运动之间的妥协。

更具体地说:假设你看到一个戴着猫耳朵的女孩的图像。你大脑的一部分识别出她的脸型,然后说“人类!”,而其他部分识别猫耳朵,以“猫!”…传统的神经网络会简单地输出一个分布:“我 50%确定这是一张女孩的照片,30%确定这是一张猫的照片。”它无法重新解读自己的类别——传统的神经网络认为你的图片要么是‘猫’,要么是‘女孩’,但不能两者都是

与传统的神经网络不同,你的大脑不会停留在“女孩或猫”上。每个区域展示了相声,有效地比较笔记。任何意见上的分歧都会产生不和谐,你的大脑会继续它的串音,直到不和谐消失。你大脑中说“猫”的那部分问那个说“女孩”的部分一个问题:“有没有可能是你搞错了,图片真的是猫?”那个“女孩!”region 回应:“不,这绝对是个女孩… 一定搞错了。”“猫!”区域检查,并说“嗯,它可能不是一只猫,但在肯定有猫耳朵。”“好吧,”另一个区域说,“那么这一定是一个新的类别——女孩身上的猫耳朵。”“我不能不同意,”猫说。地区。他们已经就一个新的类别达成了一致。

特征组合

在我们的“有猫耳朵的女孩”的例子中,你的大脑确信它看到了一个女孩——“女孩”的反应非常强烈。然而,对于“猫耳朵”的特征也有强烈的反应,这鼓励了对猫的解释。你的大脑能够通过问自己来解决这种不协调:“是的,有猫的耳朵,但是猫的其他特征也在那里吗?—不!”

我们的大脑与紧密聚集的特征探测器一起工作,它们被连接在一起形成新的组合,新的类别。你可能会看到一张照片,你大脑的特征探测器会识别出:“它像一匹马,但很结实,鼻子上有两只角……”传统的神经网络会试图将图像放在预先存在的类别中,说“60%确定它是一匹马”,但这将是错误的。相比之下,我们的大脑识别出这不是马——这是一头犀牛!然后我们在这些特征之间连线,这样的组合中的‘马’、‘矮壮’和‘角’就有了‘犀牛’的路线。

连接新的特征组合是隐喻的本质。我们的大脑根据存在的抽象星座形成类别。“弹力球像石头一样下落,但它也向上跳跃,并再次开始下落……”“电子像波一样穿过双缝实验,其波纹相互干涉,在探测器表面形成图案。”"爱就像挠痒痒,就像你肚子里的蝴蝶."传统的神经网络不关注当前的特征星座;他们只评估预先存在的类别的可能性。这是我们的智力和他们的智力之间的关键区别。

功能接线星座

使用反向传播不可能识别特征群。当传统神经网络的输出层说“60%是马”时,它不会告诉你哪些特征是活跃的,从而导致了那个结论。它已经丢失了那个信息。所以,反向传播无法区分一头犀牛和一头都被简单地称为“六成马”。

当我们的大脑学习识别一只猫时,他们正在学习通常存在的一系列特征。如果这些特征中的大部分是活跃的,并且没有竞争的特征是活跃的,我们的大脑会迅速达成一致,认为他们看到了一只猫。然而,如果竞争特征是活跃的,我们的大脑会检查一致性——他们会问“那个特征可能是个错误吗?“任何可能出现的错误都被压制,我们的大脑再次检查。如果仍然有竞争的特征,我们的大脑将它们连接在一起,形成一个新的星座,一个新的类别。

这是一个抑制不确定性布线亲和力的过程。并且,它发生在网络的每个深度,而不需要等待来自输出层的反向传播。它还为每个要素星座形成新的类别,而不是在输出层保持一组固定的类别。如果我们希望人工智能能够在飞行中学习新事物,并形成抽象和隐喻,我们将需要这种基于亲和力的连接。

抑制不确定性和布线亲和性

当我们的大脑问“这个特征可能是个错误吗?”他们通过抑制该特征的一些输入来实现。在神经网络实现中,这可以通过 暂时降低这些神经元 的权重,并再次运行输入来表示。如果特征仍然在抑制权重的情况下触发,那么可以肯定这不是一个错误。

而且,当我们的大脑试图组合一组新的特征时,他们会问“哪些特征是一起出现的?”为了在人工神经网络中实现这一点,一个独立的神经元集群被连接以与触发的每个特征相连接,这样新的集群仅在整个星座激活时才被触发。这些特征可能位于网络的不同深度,有些可能位于低级纹理和边缘检测器图层,而有些则位于高级位置和比例图层。它们都被直接连接成一个新的集群,当所有的特性出现时就会触发。

每一个深度连接新的特征星座可以识别不同的物体:一个闪亮、光滑、玫瑰色的球将与一个粗糙、棕色、有纹理图案的球截然不同——网络可能会称一个为“玻璃珠”,另一个为“木制球体”。哑光、棕色和纹理图案的低层次特征可能会出现在窄腿的矩形物体上,即“木制咖啡桌”。网络了解到低级特征的星座与木制物体相关联,而高级特征区分它们的形状和功能。

如果这样的神经网络看到了一个新的物体,并且没有识别出它的高级形状特征,它可能仍然会意识到这个物体是由木头制成的,因为它是无光泽的,棕色的,并且有纹理图案。这些洞察力是普通智力的组成部分。如果我们寻找真正学习的机器,我们将需要根据这一原理设计的神经网络。

数据科学的过程被低估了

原文:https://towardsdatascience.com/the-process-of-data-science-is-underrated-87ea58d5f70c?source=collection_archive---------2-----------------------

编码和统计很重要,但是选择先做什么和下一步做什么也很重要

我听说了很多关于数据科学工具的事情—

scikit-learn、熊猫、TensorFlow、IBM Watson 等。

—我听说了人们应用它们的数据集—

Twitter feeds,网络搜集的数据,Kaggle 上的任何东西,等等。

—但是,除了精心制作的例子和在线竞赛之外,我几乎没有听到太多关于数据科学的过程的信息。

在现实生活中的业务案例中,您很少从一个清晰、干净地解决手头业务问题的数据集开始。除非你在一个高度专业化的领域工作,否则你的任务很少是将算法的准确性从 90%提高到 95%,这是数据科学竞赛中的典型情况。

通常,您可能从一组抽象的业务目标和本地数据库包含的内容的模糊概念开始。你可能要为一个没有现成数据的问题寻找解决方案。在这些情况下,python 和统计学知识对您的起步帮助不大。首先,你需要找到你必须处理的东西,这通常意味着寻找、探索和批判性地思考缺失的部分,以及如何找到它们。

可能更重要的是,在项目的每一步,你都需要保持对下一步可能发生的事情的意识。你应该想出对冲风险的方法,因为数据可能很棘手。一个意外的有偏见或不完整的数据集可能会毁了你的一天,甚至整个项目,如果你最终的结果不好,而且你没有备份计划。

这就是为什么我认为数据科学是一个过程。我的工作是弄清楚项目中接下来应该做什么以及结果可能是什么,不仅是在不久的将来,而且是在项目的后续步骤中。

[## (我喜欢你)叫我大数据

恶名昭彰的 IDE 人群的滑稽嘻哈联合

medium.com](https://medium.com/@briangodsey/i-love-it-when-you-call-me-big-data-2e4b89e84740)

该过程

以这种方式思考数据科学让我认为它是一个 12 步的过程——原谅我的陈词滥调。由于处理数据所固有的不确定性,我认为每一步都不是必要的,而是一个需要提出、思考和给出答案的问题。通常,对于这些问题有许多好的答案,一个好的答案是在给定到那时为止你所知道的一切和你将来可能期望的一切的情况下,使你更接近实现项目目标的答案。

问题步骤大致按时间顺序排列(顺序可以有所改变),如下所示:

  1. 你有哪些具体的问题和你想要实现的目标?
  2. 有哪些数据可用,如何找到或收集这些数据?
  3. 您如何确保数据干净可靠?
  4. 数据的优势、劣势和局限性是什么?
  5. 根据您目前所知道的和不知道的,一个好的项目计划应该是什么样的?
  6. 什么是合适的统计模型?
  7. 如何将统计模型转化为可以应用于数据的软件?
  8. 如何提高软件的性能、规模或效率?
  9. 基于您所拥有的和您所知道的,您如何将它们放在一起以构建一个解决一些问题并实现一些目标的产品?
  10. 你将如何设计产品,并把它交付给能充分利用它的人?
  11. 在产品完成或交付后,你如何解决问题并进行修改?
  12. 如何以可访问的方式清理、记录和存储您的项目,以便您或其他人可以在将来重用、扩展或修改它?

为什么这个过程被低估了

将这一过程与统计和软件方面的知识和专业技能结合在一起是数据科学项目成功的秘诀,但我对这一过程的了解远不如对统计和软件的了解。

我写这本书像数据科学家一样思考的主要原因之一是,在过去几年里,许多朋友、熟人、同事和其他有抱负的数据科学家问我:

好的,我会写一些代码,也会一点统计学。这让我成为数据科学家了吗?我还需要什么?

在书籍和网络上,除了“经验”或“主题专业知识”,很难找到这些问题的好答案。我发现自己不可避免地会说这样的话:

缺少的是对将数据转化为知识的多种方式的透彻理解,这反过来有助于解决业务问题。

如果您能够理解这些转变的步骤,并且能够看到它们对过去和未来步骤的影响,那么您绝对是一名数据科学家。

盲目地将数据塞进机器学习算法通常不会有太大帮助。关于数据和知识,你必须知道你在哪里,你要去哪里,以及如何到达那里而不撞墙或坑洞。我觉得这一点足够重要,足以写一本书,这让我想到了另一个我认为数据科学过程被低估的原因,也是我写这篇文章的主要原因之一:我的书的一些早期评论者,包括亚马逊的一些评论者,对它没有专注于通过最新最棒的软件应用高度复杂的统计模型感到失望。事实上,在整本书中,我在许多情况下故意避免复杂的技术示例,以便我可以清楚地专注于数据科学过程的主要概念:

  • 从哪里开始你的项目;
  • 数据可能采用的所有形式和格式;
  • 下一步做什么;
  • 哪里可能有坑洞;
  • 有问题怎么办;
  • 是的,一些统计数据,一些软件,一些编码;

诸如此类。这就是我的书的内容;您可以在其他地方找到大量详细的统计数据和软件参考。

数据科学的进程似乎已经被推到了后面,而软件和统计数据——诚然,谈论起来更酷、更性感——抢尽了风头。但我是一个深思熟虑的人;如果没有一个框架来帮助我利用酷和性感来实现目标,它们不会让我走得很远。

让我们将流程重新放在首位!如果我们这样做,我们会得到更好的,可重复的结果。

有关数据科学过程的更多信息,请下载免费的第一章 像数据科学家一样思考 并查看此 幻灯片演示文稿 了解更多信息和购买折扣代码。

Brian Godsey 博士是一名数学家、企业家、投资者和数据科学家,他的著作 像数据科学家一样思考 现已有印刷版和电子书。——briangodsey.com

如果你喜欢这个,请点击💚下面。

[## 检查您对数据的假设

没有人喜欢糟糕的假设

medium.com](https://medium.com/towards-data-science/check-your-assumptions-about-your-data-20be250c143)

采购中采用人工智能的深远好处

原文:https://towardsdatascience.com/the-profound-benefits-of-ai-adoption-in-procurement-7f1e90dcdfc6?source=collection_archive---------5-----------------------

随着技术、数据科学和人工智能的出现,企业运作的方式发生了翻天覆地的变化,这一点现在已经得到了广泛认可。在所有主要业务职能中,决策、计划和执行的方式都发生了重大变化。因此,理解这些发展影响特定功能的方式比以往任何时候都更加重要,以便能够从采用新工具和技术中获得最大回报。

我们知道,组织内的采购职能正处于整合围绕人工智能和分析的新方法的风口浪尖。鉴于业务发展的巨大步伐,采购从业者采用新兴解决方案不再是一个选择的问题。这样做的好处远远超出你的想象。

(1)经济利益

最明显的价值当然是财务上的。新的数字技术和先进的数据分析为采购提供了前所未有的弹药,以发现产生底线影响的机会。采购部门节省的资金越多,其对整体业务的价值就越大。

直到最近,对于采购部门来说,准确了解一个组织的总支出都是一项挑战。随着人工智能支持的采购方法的出现,这是一个过去的问题。利用先进的分析方法来构建坚实的数据基础,进而可以通过多种算法进行分析,在多个层面找到隐藏的机会。

新时代支出分析解决方案可以帮助在可实现的支出上节省高达 15–25%的成本。

迄今为止,在没有分析解决方案的情况下释放如此大规模的价值,对于采购来说还是一个白日梦。今天,这是一个众所周知的现实。

(2)更高的效率

像大多数技术解决方案一样,人工智能和分析可以帮助采购团队节省大量时间,从而让他们专注于节省成本。传统上,采购团队会花费大量的时间(通常是他们的大部分时间)来处理来自支出捕获系统的数据。在准备进行任何分析之前,这些数据需要大量的链接、清理和丰富。有了人工智能,只需点击一个按钮,就可以进行这些分析。

高级支出分析解决方案能够准确地指出采购中隐藏的节约,量化这些节约,并推荐最大化不同采购计划影响的方法。

除了提高采购团队的生产力之外,更高的效率还体现在更快的投资回报上。通过 获得 3-6 个月的节省捕获速度(典型的为 ),获得精细的节省洞察可显著加快采购计划的执行,更快地产生影响。

(3)文化利益

在采用人工智能的所有好处中,最不为人所知但却是最深远的是文化上的好处。它将采购定位为推动业务决策的突出和战略性角色——这在历史上几乎从未发生过。采购几乎总是被降级为一项支持职能——这无疑是一项重要的职能——但不具有战略重要性。

然而,随着越来越多的采购组织采用以数据为中心的方法,这种模式正在快速变化,主要表现在两个方面:

  • 改变与内部利益相关方的对话:详细的数据驱动分析使采购部门能够在平等的基础上参与业务,并推动转型计划。在过去,关键业务职能通常会将大多数采购计划视为不可行而不予考虑,并将其归因于采购人员不了解业务如何运作这一事实。然而,借助强大的支出分析解决方案,采购部门可以用更难忽视的事实和数据武装这些对话。因此,业务职能部门开始将采购视为一个有价值的盟友,可以帮助他们以最具成本效益的方式实现自己的目标。
  • 与外部供应商更轻松的谈判:同样,与供应商的对话也经历了巨大的变化。虽然传统上,采购团队会依靠个人关系或典型的讨价还价方法与供应商谈判,但有了数据,这种讨论就非常不同了。如今,品类经理不再因为预算限制或无形的竞争压力而要求降价,而是可以坐在供应商的对面,查看供应商提供给不同业务部门的价格、其他供应商提供的价格、相关商品价格变动、消费量、供应商绩效指标等数据。—并要求更难以辩驳的条款和价格。

虽然成为人工智能支持的采购组织需要时间和努力,但这是非常值得的投资。一旦数据基础就绪,采购部门可以通过许多不同的途径利用它来提供持续的更高价值。

人工智能在音频处理中的前景

原文:https://towardsdatascience.com/the-promise-of-ai-in-audio-processing-a7e4996eb2ca?source=collection_archive---------0-----------------------

2017 年是人工智能的好年景,尤其是深度学习。我们已经看到图像和视频处理的人工智能技术的兴起。尽管事情往往需要一段时间才能进入音频世界,但在这里我们也看到了令人印象深刻的技术进步。

在这篇文章中,我将总结其中的一些进展,概述人工智能在音频处理方面的进一步潜力,并描述我们在追求这一目标时可能遇到的一些可能的陷阱和挑战。

迈向更智能的音频

激发我对音频处理的人工智能用例兴趣的是 2016 年底发布的 Google Deepmind 的“wave net”——一种生成音频记录的深度学习模型[1]。Deepmind 的研究人员使用一种经过调整的网络架构,一种扩展的卷积神经网络,成功地生成了非常令人信服的文本到语音转换,以及一些从古典钢琴录音中训练出来的有趣的类似音乐的录音。

An illustration of WaveNet’s dilated model for sample generation (photo credit: Google Deepmind)

在商业领域,我们也看到了机器学习在产品中的更多应用——以 LANDR 为例,这是一种自动化音频制作服务,它依靠人工智能来设置数字音频处理和细化的参数。

今年,pro audio software moguliZotope发布了 Neutron 2 ,这是一款音频混合工具,具有一个“轨道助手”,它利用人工智能来检测乐器,并向用户建议合适的预设。在用 AI 对音频进行更直接的处理时,iZotope 还在他们的音频恢复套件 RX 6 中提供了一个实用程序来隔离对话

A short demonstration of iZotope’s dialogue isolate feature

人工智能在数字信号处理中的潜力

我们仍然处于 AI 在音频处理中应用的早期。深度学习方法允许我们从一个新的角度来处理信号处理问题,这个角度在音频行业中仍然很大程度上被忽略。到目前为止,我们已经把注意力集中在公式化的处理上:对一个问题有了深入的理解,并手动设计函数来解决它。然而,理解声音是一项非常复杂的任务,我们作为人类,直觉上认为很容易的问题往往很难用公式来描述。

举个例子,源分离:你发现自己处在两个人互相交谈的场景中。事实发生后,在你的脑海中,你可以想象两个人中的任何一个不需要太多努力就可以单独说话。但是我们如何描述一个分离这两种声音的公式呢?嗯,看情况:

有没有统一的方法来描述人的声音听起来怎么样?如果是,性别、年龄、精力、个性是如何影响这些描述的参数的?与听众的物理距离和房间声学如何影响这种理解?录音过程中可能出现的非人类噪音怎么办?我们可以根据哪些参数来区分不同的声音?

正如你所看到的,为这个问题的全部范围设计一个公式需要注意很多参数。在这里,AI 可以提供一种更务实的方法——通过设置适当的学习条件,我们可以自动统计估计这一功能的复杂性。事实上, Eriksholm (助听器制造商 Oticon 的研究中心)的研究人员最近提出了一种使用卷积递归神经网络架构在实时应用中实现改进的源分离的方法[2]。

随着用深度神经网络处理音频的方法不断改进,我们只能开始想象我们可以解决的困难问题——下面是我对实时音频处理中深度学习的一些想象:

  • 选择性噪声消除,仅去除某些元素,如车辆交通
  • 高保真音频重建,来自小型低质量麦克风
  • 模拟音频仿真,估计非线性模拟音频组件之间的复杂交互
  • 语音处理,改变说话者、方言或录音中的语言
  • 改进的空间模拟,用于混响和双耳处理

表现和建筑的挑战

WaveNet 是第一批成功尝试在原始样本水平上生成音频的公司之一。这里的一个大问题是,CD 质量的音频通常以每秒 44100 个样本的速度存储,因此,用 WaveNet 生成的声音需要小时。这排除了该方法在实时应用中的使用。这只是一大堆需要理解的数据。

另一方面,许多当前利用神经网络进行音频处理的解决方案利用了频谱图表示和卷积网络。在这些解决方案中,音频频谱本质上是在 2D 图像上随时间变化的幅度,卷积网络用于扫描和处理该图像[3]。通常,这些方法的结果并不像我们在视觉领域看到的那样令人信服,例如 CycleGAN 可以为电影做一些令人印象深刻的风格转换[4]。

CycleGAN transforming horses into zebras (photo credit: CycleGAN)

电影和音频剪辑有一些共同点,因为它们都描绘了随时间的运动。考虑到 CycleGAN 等图像处理网络的创新,人们可能会认为这种风格转移也适用于音频。

但是,电影和音频剪辑不是一回事——如果你冻结一部电影的一帧,仍然可以收集到关于该帧中的动作的大量信息。然而,如果你冻结一个“帧”的音频,就很难收集到实际听到的内容的意义。这表明音频从根本上比电影更依赖于时间。在频谱图中,你也不能假设一个像素属于一个单独的对象:音频总是“透明的”,因此频谱图在同一帧中显示所有彼此重叠的可听声音[3]。

我们做机器视觉是为了做机器听觉。

卷积神经网络的设计灵感来自人类视觉系统,大致基于信息如何流入视觉皮层[5]。我相信这是一个值得考虑的问题。本质上,我们获取音频,将其转换为图像,并在将图像转换回音频之前对其进行视觉处理。所以,我们做机器视觉是为了做机器听觉。但是,正如我们直觉意识到的那样,这两种感觉的作用方式不同。看下面的声谱图,你(以你聪明的人脑)实际上能收集到多少关于音频内容的意义?如果你能听它,你会很快对正在发生的事情有一个直观的了解。也许这是一个阻碍我们在人工智能辅助音频技术方面取得进展的问题。

A five-second spectrogram. Can you tell what it is? (It’s a blues harp.)

因此,我建议,为了用神经网络实现更好的音频处理结果,我们应该分配精力来找出更好的音频表示和神经网络架构。一种这样的表示可以是自相关图,一种声音的三维表示,其中包括时间、频率和周期性[6]。事实证明,人类可以通过直观地比较声音的周期性来找到相似的模式,从而分离声源。音高和节奏也是时间因素的结果。因此,更侧重于时间的表示,如自相关图,可能是有用的。

An illustration of an autocorrelogram for sound (photo credit: University of Sheffield)

此外,我们可以开始考虑在建筑上模拟听觉系统的神经通路。当声音刺激我们的耳膜并进入耳蜗时,它会转换为不同频率的幅度。然后,它进入中央听觉系统进行时间模式处理。我们利用哪种分析模式从我们的中央听觉系统中的音频中收集可以在人工神经网络中建模的意义?周期性,也许[6]。声音事件的统计分组,也许[7]。扩大分析的时间框架,也许[1]。

An illustration of information flow in the auditory system (photo credit: Universität Zu Lübeck)

结论

人工智能的发展为更智能的音频信号处理带来了巨大的潜力。但为了更好地理解神经网络中的声音,我们可能需要放弃固有的视觉视角,转而考虑基于听觉系统的新技术。

在这篇文章中,我提出的问题比我提供的答案要多,希望能激发你在这种背景下对声音的思考。

这是一个更大的机器听觉项目的一部分。如果您错过了其他文章,请点击下面的链接了解最新情况:

批评:CNN 和 spectrograms 做音频处理有什么问题?
第一部分: 仿人机器听觉带 AI (1/3)
第二部分 : 仿人机器听觉带 AI (2/3)
第三部分 : 仿人机器听觉带 AI (3/3)

来源

[1] A. Oord,S. Dieleman,H. Zen,K. Simonyan,O. Vinyals,A. Graves,N. Kalchbrenner,A. Senior,k . Kavukcuoglu:wave net:原始音频的生成模型,2016

[2] G. Naithani,T. Barker,G. Parascandolo,L. Bramslø,N. Pontoppidan,T- Virtanan : 利用卷积递归神经网络的低时延声源分离,2017

[3] L. Wyse : 卷积神经网络处理的音频谱图表示,2017

[4] J. Zhu,T. Park,P. Isola,A. Efros : 使用循环一致对抗网络的不成对图像到图像翻译,2017

[5] Y. Bengio : 学习人工智能的深度架构(第 44 页),2009

[6] M .斯莱尼,r .里昂 : 论时间的重要性——声音的时间表现,1993

[7] E. Piazza,T. Sweeny,D. Wessel,M. Silver,D. Whitney : 人类使用汇总统计来感知听觉序列,2013

追求(机器人)幸福:TRPO 和 PPO 如何稳定政策梯度方法

原文:https://towardsdatascience.com/the-pursuit-of-robotic-happiness-how-trpo-and-ppo-stabilize-policy-gradient-methods-545784094e3b?source=collection_archive---------7-----------------------

强化学习给我的印象是现在机器学习的狂野西部:一个充满戏剧性和进步的地方,每个人的视野中都有宏伟未来的梦想。但是,这也是一个远离规则和假设的地方,这些规则和假设支配着监督和非监督学习的世界。典型假设的一个最显著的违反是,特别是在政策梯度中,你无法可靠地知道你前进的方向是否会真正提高你的回报。因此,许多最近的政策梯度创新——本文将讨论其中的两个——专注于如何在你对追求的最佳方向的估计存在有意义的更高方差的情况下更有信心地进行优化。

快速了解术语

  • “轨迹”——轨迹被定义为一系列状态、行动和奖励。轨迹是通过遵循一些政策来收集的,这些政策决定了在给定的状态下你将采取什么行动,但是这些政策不需要动机;在随机策略下,理论上也可以计算轨迹
  • “状态”——这通常用来宽泛地表示:在任何给定的时间点,代理与之交互的环境输入的集合。
  • “奖励”——根据上下文,这可以指在特定时间步长给出的奖励,也可以指从给定动作的时间步长直到轨迹结束的折扣奖励。

你不可能总是知道自己想要什么:学分分配问题

强化学习问题的基本框架是一个在环境中运行的代理:它接受观察(或称为状态 s),并采取行动,这触发环境产生一些奖励 r,并更新到由给定行动产生的新状态。关于这种设置,需要注意的一件重要事情是,它隐含地假设环境具有做出判断的能力,无论是关于动作还是世界的首选状态。

这似乎是显而易见的,但这可能只是因为我们习惯于听到“奖励”是 RL 的一个基本组成部分。但是,不要把奖励简单地想成一些完全抽象的概念,而是应该考虑不同类型的环境,以及它们在量化奖励中的表现和不表现。

一方面,你有像许多 Atari 游戏那样的基于点数的游戏,因为拥有许多点数是赢得游戏的决定性因素,点数可以提供一个相当直接的奖励信号。在中间,想象像 Go 这样的东西。在这种情况下,有一个定义明确的赢或输的概念,但环境不会自动提供任何给定中间步骤的价值评估,或者它离赢得游戏有多近。事实上,在这种情况下,我们想让代理人做的一个实质性的部分就是发展关于什么样的中间博弈状态比其他的更好的知识。

另一方面,我们还有教机器人走路的问题。在这种情况下,任何奖励都必须由人类明确设计,以捕捉我们认为有效行走意味着什么;它们不是由环境结构所固有的。所有这些只是想说:奖励的概念可能是一个有用的抽象概念,但你应该记住,它是用来描述一个相当广泛的反馈机制。

这个关于奖励的讨论符合我认为的关于强化学习的一个最明确的事实:你无法看到你试图优化的功能。这是一个微妙的问题,而且常常是以一种比实际情况更明显的语气随口说出的。

想象一下,在监督学习中,您的模型产生了一组 softmax 值(分类网络的传统输出结构)。如果将这些输出与 one-hot-encoded true label 进行比较,就可以将交叉熵误差计算为每个 softmax 输出的直接解析函数,这样就可以反推这些 softmax 输出发生变化时,损耗会如何变化,并返回到网络中。但是,在 RL 中,你的损失不是一个可微的函数,你对它有完全的方程级的可视性,而是一个由宇宙控制的黑匣子。你采取了一系列的行动,并获得了一系列的奖励,但是你不可能直接计算出为了增加你的奖励,你应该上调或下调每个具体行动的概率。

你可以根据你的参数创建奖励梯度的估计值,这是现代 RL 的两个主要分支之一 policy gradients 所采用的方法,但这些估计值比监督学习中的估计值具有更高的内在方差。在监督学习中,小的迷你批次大小会使您当前估计的损失量发生变化,但损失相对于参数的实际导数是由网络定义的确定量。相比之下,在强化学习中,你是在估计导数本身。特别是在多步骤中,早期的单个操作可以导致完全不同的路径,给定政策可以导致的可能轨迹的空间非常大,这意味着您需要更多的样本来很好地估计给定政策的执行情况。

符合政策梯度

Source: Trust Region Policy Optimization paper. This simulated walker is an example of the kind of continuous-valued problem (where the policy is the continuous-valued torque on each joint) for which policy gradient methods are particularly well-suited

要建立对政策梯度方法的直觉,首先要考虑强化学习最直接的形式:进化方法。在一种被称为交叉熵方法的原型进化方法中,你定义一些政策参数的分布——让我们说一个具有一些均值和方差的高斯分布——并收集 N 组参数下的 N 条轨迹。然后,取前 p%的最高表现轨迹,并基于使用该 p%的参数样本作为经验起点来拟合新的高斯参数分布。所以,在下一轮,你的 N 个样本是从对应于上一轮最佳样本的分布中抽取的。

这背后的想法是,在生成良好轨迹的参数集内,该集内的每个参数都可能更接近最佳参数设置。虽然像这样的简单方法有时令人惊讶地工作得很好,但是它们的缺点是随机更新参数值,而不遵循任何明确的梯度,该梯度携带关于参数值的什么改变可能提高性能的信息。现在,有人可能会合理地争辩说:你刚刚说过,不是 10 段之前,在强化学习中,你不能指定一个从你的参数到你的奖励的梯度链,因为行动和奖励之间的环境函数是一个黑盒。

没错:你不能直接计算。但是,在通过动作输出柔量最大值的网络中,您可以计算一个梯度,将柔量最大值移向一些不同的动作集。所以,如果你定义了一个关于你的行动的估计损失梯度,你可以通过你的行动分布来改进这个估计损失。

沿着这些路线的一个基本政策梯度是通过给每一个行动附加一个叫做优势估计的东西来运作的。这从数字上回答了“这个行动比我在这种状态下采取的平均或预期行动好多少”的问题。重要的是,优势评估使用未来折扣奖励,这意味着从采取行动的那一点开始累积到未来的所有奖励,折扣率适用于未来的奖励。请注意,这与进化方法不同,在进化方法中,每个行为都被隐含地赋予了对整个轨迹的回报的部分责任,而不仅仅是在此之后的回报。给定附加到每个动作的这个优势估计,基本策略梯度方法使用给定轨迹的预期优势作为其回报,通过计算和求和从概率策略采样的动作的优势估计,根据每个动作的概率隐含地加权每个动作。虽然每种方法都有自己的细微变化,但这一基本框架是政策梯度方法的概念基础。

当你怀孕的时候会期待什么

许多机器学习问题是根据某种期望值的最小化或最大化来定义的。对于那些离统计时代稍远的人来说,函数的期望值定义为:

期望值是相对于某个概率分布 p(x)来定义的,你期望 x 从该概率分布中被采样,并且在概念上可以被描述为“如果你从 p(x)中采样 x,你会得到什么,并且平均你从那些样本中得到的 f(x)”。在强化学习的背景下,这一点非常突出,因为它有助于说明 it 和强化学习之间的另一个微妙差异。

在规范的监督学习问题中,f(x)是某种损失函数,例如,预测的 softmax 输出和目标之间的交叉熵损失,而 p(x)分布是训练集中存在的输入的分布。换句话说,这个问题框架寻求最小化预期损失,这转化为构建一个对某个输入集 x(构成训练集的输入集)具有低误差的网络。这是隐含地完成的,因为根据定义,网络只看到训练集中存在的例子,并且如果在训练集 p(x)的经验分布下一个例子(或接近输入空间的一组例子)是高概率的,将更频繁地看到该例子。这里,p(x)不在你的控制范围内,f(x),网络+损失函数,是你训练网络时要优化的。

现在,想象一个强化学习问题,我们想从给定的政策中获得最大的期望回报。

方程的结构在这里几乎是相同的,除了 x 已经被替换为τ,以表示每个τ现在是从策略 p-θ得出的轨迹。(τ是轨迹的标准符号)。然而,在这里,你所优化的已经翻转。因为优化策略的结果是让您选择不同的行动,当您优化策略参数时,这会通过计算奖励的轨迹分布对期望值产生影响,在监督学习中,样本的分布由固定的训练集决定。相比之下,之前,我们的网络优化了作用于样本的损失/回报函数,在这里,我们无法看到 R(t)回报函数,我们影响预期回报的唯一杠杆是通过改变我们采样的轨迹的分布。

这一事实对政策梯度方法可能经历的失败模式有影响。在监督学习环境中,无论我们采取多少不明智的优化步骤,我们都不会影响我们正在学习的样本的分布,因为这超出了我们的控制范围。相比之下,在政策梯度环境中,如果我们最终处于一个特别糟糕的行动空间区域,这可能会让我们处于一个很少有有用的信息轨迹可供学习的境地。例如,如果我们试图在一个迷宫中寻找一种奖励,并且意外地学会了保持静止或转圈的策略,我们将很难达到任何有积极回报的行动,因为我们只能通过体验那个行动并看到它导致奖励来学习增加行动的可能性。

别担心,你可以信任我

前面提到的灾难性崩溃问题在历史上导致了策略梯度方法中超参数优化成为一个脆弱而复杂的过程:你需要找到一个足以在问题上取得实际进展的学习率,但又不能高到经常意外终止学习过程。在学习过程的灾难性结束不仅仅意味着不得不重新运行一些代码,而且实际上意味着可能刚刚驶下悬崖的物理机器人代理的毁灭的情况下,这一点尤为突出。

当我们要更新我们的政策时,我们真正想回答的一个问题是:我们能不能做出一个保证改善我们当前政策的更新,或者至少不会使它恶化?完全计算这一点的一种方法(将我们的策略更新后称为“新策略”,更新前称为“旧策略”)是:

  1. 了解新政策将访问哪些州,以及访问这些州的概率有多大。
  2. 在每个州,对以下行为求和:该州每个行为的新政策概率,乘以该行为比该州旧政策的平均行为好多少。(这个量,“这个动作比这个状态下的平均动作好多少”,被称为优势)。
  3. 上面的求和操作相当于在每个状态获得预期的优势,根据该状态下新策略的动作分布进行采样。
  4. 我们通过新政策到达该州的可能性来衡量每个州的预期新政策优势
  5. 总的来说,这将使我们获得新政策相对于旧政策的预期优势,并让我们在采取行动之前确认预期优势是积极的。

This equation is basically a mathematically restatement of items 15 above

新策略在给定状态下的给定动作的概率很容易计算:我们可以很容易地将来自任何状态的数据(甚至是由不同策略采样的数据)输入到具有更新参数的策略网络的副本中,并获得该网络的动作分布。

然而,更困难的是新政策将覆盖的州的分布。与许多预期一样,我们没有任何方法可以直接估计给定策略在某个状态下结束的概率。因此,我们不是显式地对状态求和并计算每个状态的 p(s ),而是通过采样进行估计:如果我们获得一个策略所达到的状态集,并计算每个状态的新策略优势,那么我们将通过 p(s) 进行隐式加权,因为更有可能的状态将更有可能被包含在样本中。为了在没有采样的情况下进行计算,我们需要知道转移函数——在给定状态下,给定动作下一个环境状态的分布——这是一个未知的环境黑箱。

信赖域策略优化(TRPO)的方法是计算上述优势量的估计,但是使用来自旧策略的状态分布来这样做,而不是来自新策略的状态分布,新策略的状态分布基本上只能通过潜在昂贵的采样来获得。

Note: eta(pi), the first term, is just the expected reward of the old policy, which already knew from sampling from it. You can see that, in contrast to the partial equation above, the distribution over states is from the old policy (pi) rather than the new policy (pi tilde)

这种近似的有效性直接关系到旧策略状态分布与新策略状态分布的不同程度。如果更新的策略以足够相似的概率到达相同的状态,那么这种近似更有可能成立。直觉上,这是有意义的:如果新策略经常出现在旧策略从未或很少出现的某个状态,其中所有的行为都比旧策略要糟糕得多,那么旧策略近似的损失(赋予该状态低权重或零权重)将会对新策略的性能不恰当地乐观。

虽然这篇文章的证明有点长,但原始的 TRPO 论文表明,如果您对新旧策略的动作分布(或动作分布参数,如果您正在学习参数化的策略)之间的 KL 差异进行限制,这将转化为新旧策略状态分布差异的限制。而且,如果对这种差异有足够强的限制,我们知道我们的新策略状态分布与旧策略状态分布足够接近,我们的近似损失函数应该是有效的。

再见了,吉隆坡

从经验上看,TRPO 方法表现得相当好:以前需要精确的特定问题超参数搜索者的问题现在可以用一组合理的参数来解决,这些参数可以很好地跨问题转移。然而,TRPO 的一个挑战是需要计算参数之间 KL 散度的估计值:这需要使用共轭梯度法,这增加了该方法实施的复杂性和计算时间。

OpenAI 去年发布的近似策略优化(PPO)T1 试图解决这个问题。为了理解这种方法,我们首先需要了解一些关于替代损失函数 L-pi 的计算方法,特别是预期优势的计算方法(如下所示)。

虽然我们的模型结构给出了在给定状态下直接计算行动概率的能力,但是为了减少计算,我们不倾向于明确地计算在给定状态下每个行动的优势,并且计算它的加权概率。相反,我们只是再次通过采样来计算隐含的期望:我们根据我们网络的 softmax 动作分布来采样动作,因此给定状态下的动作根据它们的可能性来显示。然而,回想一下,使用 TRPO,整个目标是能够使用从旧政策中抽取的样本来推断新的更新后政策的行为。因为我们使用的是在旧策略下抽取的样本,所以每个动作都隐含地乘以在旧策略下被抽样的概率。因此,为了纠正这一点,在 TRPO 中,我们将旧政策下采样的每个优势估计值乘以一个比率:新政策下的概率除以旧政策下的概率。从概念上讲,这只是通过除以显式旧策略概率(得到 1)然后乘以新策略概率来抵消隐式旧策略概率。

Slightly different symbols than the last few equations, but hopefully still clear.

这个概率比,PPO 论文称之为 r-theta,是 PPO 改进方法的焦点。PPO 没有估计一个替代的预期优势损失,而是提出了 KL 散度损失(注意,这组符号将对状态的期望包含在 et 项中):

换句话说,这就是计算两件事,并取其中的最小值:

  1. R-theta * Advantage :比值项如上所述,只是取新的动作概率除以旧的。
  2. 一个削波的 R-theta *优势:这里,ε被定义为一个相当小的项,比如说 0.20,我们将概率比削波到 0.81.2 之间。然后,我们将这个削波比率乘以优势。

这种方法的基本操作理论与 TRPO 是一样的:保守主义,以及对更新的谨慎,这种更新会把你带到旧政策没有探索的区域。让我们通过几个可能的案例来思考为什么。

A few made-up illustrative examples

剪裁只适用于使我们对新政策优势的估计更加悲观:当在新政策下更有可能出现真正好的行动,而在旧政策下更有可能出现坏的行动。在前一种情况下,我们限制了你能给予新政策多少向上加权的好行为的信任,在后一种情况下,我们限制了你能削减多少向下加权的坏行为的新政策松弛。这一点的总体要点是,我们给予算法更少的动力来进行将导致行动或状态分布发生强烈变化的更新,因为我们正在抑制可能导致这种更新发生的两种信号。

In all but one case, PPO outperforms or is tied for top performance with competing algorithms. Source: PPO paper

这种方法的一个有意义的优点是,与 TRPO 的硬 KL 发散约束不同,这种削波目标可以使用梯度下降直接优化,允许更干净和更快的实现。

切斯特顿的政策栅栏

在 1929 年的一本书中,G.K .切斯特顿写道:

在改造事物的问题上,与改变事物不同的是,有一个简单明了的原则……在这种情况下,存在着某种制度或法律;为了简单起见,让我们说一个横跨马路的栅栏或大门。更现代的改革家兴高采烈地走上前去说,“我看不出这有什么用;让我们清除它。”对于这个问题,更聪明的改革家会很好地回答:“如果你看不到它的用处,我当然不会让你把它清理掉。走开想一想。然后,当你能回来告诉我你看到它的用途,我可能允许你摧毁它

这种对全新方法的谨慎,以及对过于热衷于变革(即使表面上看起来是一种改进)的警惕,是贯穿这里讨论的两种政策梯度改进方法的基本主题。冒着变得过于华丽的风险,这是一个非常隐喻的想法:通过渐进、谨慎的步骤获得信心,让你离更好的地方更近一点。

剩余问题

现在这已经成为我的习惯,我想以一些问题来结束我的演讲

  • 在许多问题中,直到成功的那一刻才有稀疏或不存在的回报,我预计强化学习方法一般会有麻烦。对于 Q 学习和政策梯度在这些低回报密度的情况下是否表现更好,有没有已知的研究?
  • 与此相关,我很想了解奖励形成——创造手工设计奖励的过程——对解决不同类型的问题有多重要。
  • 我从来没有完全弄清楚为什么在 TRPO 中计算 KL 散度约束需要共轭梯度来估计

即使仅在政策梯度这个主题中,这个领域也有如此多的丰富性和细微差别,以至于我没有时间在这里触及:优势估计在减少方差中的作用,PG 与 Q 学习的利弊,随机政策在导致更好学习中的作用。如果你对了解以上任何一点感兴趣,我有一个有点非正统的建议:约翰·舒尔曼(TRPO 和 PPO 背后的研究人员,目前是 OpenAI 的研究员)的博士论文。鉴于这本书并没有明确地写为面向公众的教学,它写得非常好,非常清楚,包含了我在研究过程中能够找到的一些概念的最佳解释。

人工智能难的真正原因

原文:https://towardsdatascience.com/the-real-reason-ai-is-difficult-10b64a230c5e?source=collection_archive---------5-----------------------

今年圣诞节,我朋友的祖母终于发现了她孙子多年来一直在做的事情。他是一名数据科学家,在英语环境中长大,偶尔在家庭场合会说一点西班牙语。他的祖母只会说西班牙语。

“在今天之前,我的祖母不知道我到底是做什么的。”

关于数据科学家研究什么的科幻小说式的谣言——尤其是如果我们专门研究人工智能——吸引了一股荒谬的气息,所以我们许多人发现自己不得不不断地解释我们的生活选择。这就是为什么当我得知我的朋友分享了我的博客帖子的西班牙语翻译时,我非常感动。他的祖母终于能够告诉他,她理解他,并为他感到骄傲。

这是她第一次可以想象他在工作中真正做了什么的圣诞节。

她第一次明白,他的召唤并不是某种模糊的杀手机器人味道的东西,而是某种因其能够让人类生活变得更好而深具美感的东西。机器学习和 AI 给你第二种和计算机对话的方式。旧的方法是给计算机明确的指令,而新的方法是给出例子——数据!—相反。这就是 AI 的本质。

不要让它的简单让你失望;杠杆也很简单,但它们可以移动世界。

正是在这样的时刻,我的写作受到了极大的鼓舞。我写作的原因(通常会放弃每个周末的一半时间来做这件事)是为了让数据科学决策智能对所有人来说都是容易理解的。

我相信,对这些理念的基本了解对于参与人类不可避免地走向的人工智能未来至关重要,我对任何人被抛在后面的想法感到不寒而栗。

我不希望 AI 只属于学者、专家、大公司,以及那些和流行博主说同样语言的人。说应用人工智能聪明而神秘是一个谎言——以下是今天它很难的真正原因:

大规模实现自动化是很困难的。这是我大惊小怪的事情,但这不是人工智能特有的问题。从做汉堡到提供搜索结果,在全球范围内做任何事情都是复杂的。然而,从个人的角度来看,这可能相当容易,除非这些工具不是用户友好的。这就引出了第二点。

(2)今日工具吸。是的,所有的人。

我什么意思?简单来说:大多数五岁的孩子不会使用今天的数据科学工具。想法并不难 ( 例子进去,菜谱出来),但是界面难。对于你们当中的终身工程师来说,他们可能不这么看,但对于那些以前从未编写过for loop的人来说,他们是令人生畏的。好消息是工具正在迅速变得更好。很快,非专家将能够使用简单的界面从他们的生活中去除各种烦人的苦差事……只要他们知道这是一种选择。我不希望看到人们仅仅因为看不懂英语或者没有在大学学过数学,就被排除在人工智能之外,无法成为自己更美好生活的建筑师。

好消息是工具正在迅速变得更好。

测试一个重要的应用需要专业知识。作为一名的统计学家,我可能会对甚至在睡梦中的测试感到愤怒——对缺乏严谨性感到愤怒是我这类人根深蒂固的本能——所以我必须提醒自己,在许多应用中失败并不痛苦。

有时候失败是如此有趣,它们实际上是最好的部分——例如在这个人工智能生成的烤蜗牛黄油食谱中,由 aiweirdness.com 的提供。我要求你大声读出来,不要笑出声来。

An AI-generated recipe, courtesy of aiweirdness.com. I dare you to read it out loud without cracking up.

这样的应用程序不需要同温层标准的严格测试,而同温层标准会让我的坏脾气伙伴们感到骄傲。创造一种救命的药物和为我的家庭娱乐创造一种新的黄油配方是有区别的。如果我们决定药物不再需要统计测试,我会立刻加入抗议。至于不敢相信这是黄油……我一直在我的厨房里做疯狂的事情,那里唯一接近测试的东西就是火警。(它经常给我唱它的人民的歌。)

在我的演讲和文章中,我经常支持行业用例,但是让我们不要忘记所有带来一点个人快乐或舒适的个人可爱应用。我有很多定制的基于 ML 的个人生产力工具,让我可以表现得好像一天有 25 个小时一样。这些并不重要,但它们让我的小生活变得更好。

我希望其他人也能获得这些技术——这就是为什么我为成为 Google Cloud 的一部分而感到自豪……制造更好的工具,将大量计算资源交给所有不想建立自己的数据中心的人,这基本上是我们存在的目的。不幸的是,如果人们不知道什么是人工智能,他们最终仍然会被排除在外,他们被允许在没有成为教授的情况下加入这种乐趣。所有那些关于机器人的科幻废话真的对事情没有帮助。

我不想看到人们仅仅因为看不懂英语或者他们在大学里没有学过数学而被排除在为自己创造更美好生活的建筑师之外。

每个人都应该参与到人工智能的想法中,这就是我写作的动机。我只是众多声音中的一个——这是一件好事,因为每一点都有帮助。我想对那些帮助我摆脱英语科技泡沫的人说谢谢。

对于那些花了一点时间与可能被排除在外的人分享人工智能想法——我的或其他人的——的人,请接受我衷心的感谢。每个人都应该成为其中的一部分,不管他们是谁,说什么。


我的第二个 Medium 账号上有其他语言的社区翻译文章。下面是🇦🇪 阿拉伯语 🇨🇳 汉语,🇳🇱 荷兰语🇫🇷 法语 🇩🇪 德语 ,🇮🇹 意大利语 ,🇯🇵 🇷🇺 俄语🇪🇸西班牙语和🇹🇷 土耳其语 。**

我希望我知道每一种语言,这样我就可以用它们来写作,但是我不知道。如果你想多做一点,把这个词表达出来,我总是欢迎志愿者翻译。谷歌翻译传达了最基本的意思,但却失去了很多乐趣。我这样写是因为我认为快乐是至关重要的……否则我会链接到一本教科书然后就到此为止。我非常感谢那些抓住了我的文章精神的人,所以当他们到达语言障碍的另一边时,他们仍然很有趣。

感谢阅读!YouTube AI 课程怎么样?

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

Enjoy the entire course playlist here: bit.ly/machinefriend

喜欢作者?与凯西·科兹尔科夫联系

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

这就是推特如何看待世界:情感分析第一部分

原文:https://towardsdatascience.com/the-real-world-as-seen-on-twitter-sentiment-analysis-part-one-5ac2d06b63fb?source=collection_archive---------3-----------------------

by Hugh Han on Unsplash

Twitter 是一个在线社交网络,截至 2018 年 2 月,月活跃用户超过 3.3 亿。twitter 上的用户创建称为 tweets 的短消息,与其他 twitter 用户分享,这些用户通过转发和回复进行互动。Twitter 采用了 280 个字符或更少的消息大小限制,这迫使用户专注于他们希望传播的消息。这一特性使得 twitter 上的消息非常适合情感分析的机器学习(ML)任务。情感分析属于自然语言处理的范畴,自然语言处理是人工智能的一个分支,处理计算机如何处理和分析人类语言。

训练数据是从感知 140 获得的,由大约 160 万条随机推文组成,并带有相应的二进制标签。0 表示负面情绪,1 表示正面情绪。在这篇博客文章中,我们将使用朴素贝叶斯分类器从这个训练集中学习正确的标签,并进行二元分类。在坚果壳中,朴素贝叶斯定理根据某些其他事件的联合概率分布来计算某个事件发生的概率。我使用 twitter 的 API 下载了测试数据集,并将用于测试模型的真实性能。API 的完整文档和条款可在developer.twitter.com/en/docs获得。

在这篇博客文章的第一部分,我们将介绍一个情感分析 ML 任务中对文本数据执行的标准预处理步骤。第二部分将在后续的博客文章中介绍,我们将预处理合并到 ML 管道中的一个步骤中。第一篇文章解释了当我们使用管道来处理预处理时,在幕后发生了什么。

1 部分:探索带标签的训练数据集

在我们的工作流程中,我们将使用带有 Python 的 Jupyter Notebook。

  • 导入此项目中使用的 python 库。
  • 将数据导入到 pandas 数据框架中,并进行一些探索性的数据分析。
**# you can see the full list of imports on GitHub!****# Machine Learning imports
import** **nltk
from** **sklearn.pipeline** **import** Pipeline
**from** **sklearn.model_selection** **import** train_test_split
**from** **sklearn.metrics** **import** classification_report, confusion_matrix, accuracy_score
**from** **sklearn.naive_bayes** **import** MultinomialNB
**from** **sklearn.model_selection** **import** KFold, cross_val_score
**from** **sklearn.ensemble** **import** RandomForestClassifier
**from** **sklearn.feature_extraction.text** **import** CountVectorizer
**from** **sklearn.feature_extraction.text** **import** TfidfTransformer
**from** **sklearn.model_selection** **import** GridSearchCV
**from** **sklearn.externals** **import** joblib
**from** **nltk.corpus** **import** stopwords
**from** **nltk.tokenize** **import** TweetTokenizer
**from** **nltk.stem.wordnet** **import** WordNetLemmatizerLoad training dataset to Pandas and preview the top rows.
*# load train data*
data = pd.read_csv('Sentiment Analysis Dataset.csv',
                   error_bad_lines=**False**)
data.columns = ['id','label','source','text']
data.head(2)*# get text and matching label columns*
data = data.drop(['id','source'],axis=1)
data.head(10)

  • 我们可以观察到数据确实来自 twitter 上发布的 tweet 消息。
  • 标签和文本似乎没有按照列出的顺序排列。如果数据不是随机分布的,这可能是一个问题,因为它会给学习模型带来偏差。在任何情况下,我们都将使用 Scikit Learn 库,该库具有拆分我们的训练和测试数据并同时混洗数据的功能。
  • 洗牌数据减少了方差,并确保我们的模型可以更好地概括数据,减少过度拟合。我们希望确保训练和测试数据集能够代表数据的总体分布。
  • 为此,我们还想检查数据中的标签频率分布,如下所示。
  • 我们可以观察到的另一个现象是文本包含不同的格式。一些单词包含混合的大小写字母,需要规范化为它们的基本单词。例如:‘哭’变‘哭’了。
  • 第一个字母大写的单词可以尝试,因为它们可能包含不同的特征空间,如人名或国名等。

探索标签类型的分布。

*# check the number of positive vs. negative tagged sentences*
positives = data['label'][data.label == 0]
negatives = data['label'][data.label == 1]print('number of positve tagged sentences is:  **{}**'.format(len(positives)))
print('number of negative tagged sentences is: **{}**'.format(len(negatives)))
print('total length of the data is:            **{}**'.format(data.shape[0]))

positive VS negative

  • 考虑到数据集的大小,标签似乎“大约”均匀地分布在 788435 和 790177 处,分别为正和负。
  • 接下来,我们希望看到每个句子中包含的单词数,所以我创建了一个函数来提取这些信息,并将其附加到文本列旁边的列中。下面是一个示例输出。
*# get a word count per sentence column*
**def** word_count(sentence):
    **return** len(sentence.split())

data['word count'] = data['text'].apply(word_count)
data.head(3)

word count per message

*# plot word count distribution for both positive and negative sentiments*
x = data['word count'][data.label == 1]
y = data['word count'][data.label == 0]
plt.figure(figsize=(12,6))
plt.xlim(0,45)
plt.xlabel('word count')
plt.ylabel('frequency')
g = plt.hist([x, y], color=['r','b'], alpha=0.5, label=['positive','negative'])
plt.legend(loc='upper right')

word count distribution for both positive and negative

  • 从上面的图表来看,大多数句子在 510 个单词之间,但是可以说 twitter 上的大多数文本在 1 到 25 个单词之间。考虑到 twitter 对一条消息中可以使用的字符数有限制,这就不足为奇了。在撰写本文时,280 个字符已经是极限了。
  • 总之,看起来 1-20 个单词覆盖了所有句子的 80%以上,这使得该数据集成为一个很好的训练候选集。
  • 5 个单词以内的肯定句比否定句多,这种差异目前看来还不足以引起任何关注。
*# get most common words in training dataset*
all_words = []
**for** line **in** list(data['text']):
    words = line.split()
    **for** word **in** words:
        all_words.append(word.lower())

Counter(all_words).most_common(10)

以下输出:

[('i', 741876),
 ('to', 556149),
 ('the', 516654),
 ('a', 374024),
 ('my', 309966),
 ('and', 294805),
 ('you', 236109),
 ('is', 229444),
 ('for', 212852),
 ('in', 209009)]
  • 在上面的单元格中,我们提取了数据集中最常见的单词,并列出了前十名。
  • 也许毫不奇怪,我们会遇到像 i、这样的词,因为它们在人类表达中使用频率很高。这种词通常在消极和积极的表达中同样出现,因此它们带来的信息很少,可以纳入模型中,所以我们必须在以后的道路上摆脱它们。
  • 在后面的文本预处理步骤中,我们将学习如何处理这些对特征空间没有太大贡献的常用词。
  • 下面的代码输出一个图表,显示前 25 个单词的频率。
*# plot word frequency distribution of first few words*
plt.figure(figsize=(12,5))
plt.title('Top 25 most common words')
plt.xticks(fontsize=13, rotation=90)
fd = nltk.FreqDist(all_words)
fd.plot(25,cumulative=**False**)*# log-log plot*
word_counts = sorted(Counter(all_words).values(), reverse=**True**)
plt.figure(figsize=(12,5))
plt.loglog(word_counts, linestyle='-', linewidth=1.5)
plt.ylabel("Freq")
plt.xlabel("Word Rank")
plt.title('log-log plot of words frequency')

  • 我还为单词频率创建了一个 双对数 图,它类似于之前的频率图,但包括所有单词,并以 10 为基数的对数标度绘制,这有助于我们可视化单词频率随着排名下降而快速减少的情况。
  • 本数据字典中出现的单词分布是大样本单词中非常常见的现象,如齐夫定律所示,其中最频繁出现的单词的出现频率大约是第二频繁出现的单词的两倍,第三频繁出现的单词的三倍,等等。
  • 如果我们从上面的观察中去掉像 i、is 这样的词,看看这是否成立将会很有趣。

2 部分:探索原始 Twitter 数据

在训练模型后,我们对原始 twitter 数据进行情感预测,但在此之前,我们需要下载并进行一些基本的数据清理。您可以通过关键字从 twitter RESTful API 下载推文,并获得历史推文流和元数据。我使用了 Tweepy ,这是 twitter API 的一个 python 包装器库,它可以让您更好地控制如何查询 API。你可以在 GitHub 上看到代码。

用于下载历史推文的关键词是“保罗·瑞安”,他是本文撰写时的美国众议院议长。我对这个关键字的选择是任意的,但我觉得足够好来返回一些两极分化的推文。这很重要,因为推文本身可以作为自己的基准。考虑到语言是相对的并且总是在变化的,NLP 的障碍之一是评估模型的性能。

  • 导入和预览原始数据。
*# create column names*
col_names=['date','user_loc','followers','friends','message','bbox_coords',\
           'full_name','country','country_code','place_type']*# read csv*
df_twtr = pd.read_csv('paul_ryan_twitter.csv', names=col_names)*# check head*
df_twtr.head()

我们将保留位置数据,并在以后使用它在地理地图上绘制出我们的结果。

3 部分:文本预处理

  • 我们希望删除数据中任何不必要的质量,这些质量会使训练好的模型成为不良的概括器。
  • 文本预处理涉及许多事情,如删除表情符号,正确格式化文本以删除文本中多余的空格或任何其他我们认为不会给我们的模型添加信息的信息。我们将在下面看到一些例子。
  • 我们还必须确保我们传递给模型的信息是计算机能够理解的格式。我们还将在下面完成其中的一些步骤。
  • 在这个预处理步骤之后,我们的数据应该准备好用于机器学习分类任务。

注意:无论我们在训练数据上做什么样的文本预处理,也必须在测试和原始数据上完成。

预处理 1:通过删除链接、特殊字符

  • 这一步我们可能会花很多时间,但目标总是找到最佳平衡。
  • NLP 中的大部分工作是在特征工程上完成的。现在我们将去掉链接和表情符号。值得一提的是,我们可以将它们用作特性,但目前我们只是在构建一个基本模型。

我创建了一个函数,使用 regex 对数据集中的每条 tweet 进行批量格式化。示例输出包含在代码中。

*# helper function to clean tweets*
**def** processTweet(tweet):
    *# Remove HTML special entities (e.g. &amp;)*
    tweet = re.sub(r'\&\w*;', '', tweet)
    *#Convert @username to AT_USER*
    tweet = re.sub('@[^\s]+','',tweet)
    *# Remove tickers*
    tweet = re.sub(r'\$\w*', '', tweet)
    *# To lowercase*
    tweet = tweet.lower()
    *# Remove hyperlinks*
    tweet = re.sub(r'https?:\/\/.*\/\w*', '', tweet)
    *# Remove hashtags*
    tweet = re.sub(r'#\w*', '', tweet)
    *# Remove Punctuation and split 's, 't, 've with a space for filter*
    tweet = re.sub(r'[' + punctuation.replace('@', '') + ']+', ' ', tweet)
    *# Remove words with 2 or fewer letters*
    tweet = re.sub(r'\b\w{1,2}\b', '', tweet)
    *# Remove whitespace (including new line characters)*
    tweet = re.sub(r'\s\s+', ' ', tweet)
    *# Remove single space remaining at the front of the tweet.*
    tweet = tweet.lstrip(' ') 
    *# Remove characters beyond Basic Multilingual Plane (BMP) of Unicode:*
    tweet = ''.join(c **for** c **in** tweet **if** c <= '**\uFFFF**') 
    **return** tweet
*# ______________________________________________________________**# clean dataframe's text column*
df_paulry['message'] = df_paulry['message'].apply(processTweet)
*# preview some cleaned tweets*
df_paulry['message'].head()

  • 还要注意,你不可能有一套完美的清理步骤,因为一些清理步骤最终会在数据中引入一些缺陷。
  • 下面是一个前后示例,其中已从重选中删除,这改变了该词的含义,或许也改变了用户的本意。单词不会也会变成赢了显然有完全不同的意思。

我们删除重复的推文,因为它们没有给数据集带来新的信息,而且计算效率也很低。我们还将语料库中最常见的单词可视化。

**# most common words in twitter dataset*
all_words = []
**for** line **in** list(df_paulry['message']):
    words = line.split()
    **for** word **in** words:
        all_words.append(word.lower())*# plot word frequency distribution of first few words*
plt.figure(figsize=(12,5))
plt.xticks(fontsize=13, rotation=90)
fd = nltk.FreqDist(all_words)
fd.plot(25,cumulative=**False**)*# log-log of all words* 
word_counts = sorted(Counter(all_words).values(), reverse=**True**)plt.figure(figsize=(12,5))plt.loglog(word_counts, linestyle='-', linewidth=1.5)
plt.ylabel("Freq")
plt.xlabel("Word Rank")*

预处理 2:不带停用词的标记化

  • 我们的训练数据现在已经被转换成更加精简的文本体,对于特征提取来说更加清晰。正如我们之前提到的,我们在数据集中确实有一些词,它们在自然人类语言中很常见,但在大多数句子成分中使用,我们最好不要使用它们,因为它们不会给我们的模型带来有用的特征。
  • 这些词在 NLP 中通常被称为停用词,并且 NLTK 库带有一个函数,可以从数据集中过滤出这些词。以下是停用字词表中包含的实际字词。我们还可以制作自己的特殊停用词列表,以适应任何独特的情况。例如,如果您正在对法律文档进行情感分析,考虑到其中包含的法律术语在本质上是独特的,您可能需要一个特殊的集合。
**# show stop words examples*("i , me , my , myself , we , our , ours , ourselves , you , you're , you've , you'll , you'd , your , yours , yourself , yourselves , he , him , his , himself , she , her , hers , herself , it ")*
  • 在移除停用词后,我们将数据集中的所有句子进行拆分,以获得单个单词(令牌),这基本上是新处理的 tweet 中包含的每个句子的单词列表。现在我们可以看到,数据帧中有两个新列,包含这些 tweet 的标记化版本。
  • 下面是一个示例输出。
**# tokenize helper function*
**def** text_process(raw_text):
    *"""*
 *Takes in a string of text, then performs the following:*
 *1\. Remove all punctuation*
 *2\. Remove all stopwords*
 *3\. Returns a list of the cleaned text*
 *"""*
    *# Check characters to see if they are in punctuation*
    nopunc = [char **for** char **in** list(raw_text) **if** char **not** **in** string.punctuation] *# Join the characters again to form the string.*
    nopunc = ''.join(nopunc)

    *# Now just remove any stopwords*
    **return** [word **for** word **in** nopunc.lower().split() **if** word.lower() **not** **in** stopwords.words('english')] **def** remove_words(word_list):
    remove = ['paul','ryan','...','“','”','’','…','ryan’']
    **return** [w **for** w **in** word_list **if** w **not** **in** remove]*# -------------------------------------------**# tokenize message column and create a column for tokens*
df_paulry = df_paulry.copy()
df_paulry['tokens'] = df_paulry['message'].apply(text_process) *# tokenize style 1*
df_paulry['no_pauls'] = df_paulry['tokens'].apply(remove_words) *#tokenize style 2*
df_paulry.head()*

Compare the message column VS tokens column VS no_pauls.

  • 还有其他标准化技术,如 词干词汇化 ,我们可以在我们的数据上尝试,但 twitter 消息被设计得很短,上述方法可能不会很好,因为它们本质上是将单词缩短为基本单词。例如:运行运行
  • 现在,我们将坚持我们的消息数据的当前规范化状态,我们现在可以将它转换成一个向量,这个向量可以输入到适当的 ML 算法中。
  • 我还创建了一个词云,描述标准化后整个 twitter 数据集中最常见的词。
  • 我们可以看到我们的关键词——Paul 和 Ryan——显然非常突出,但一些领域知识将有助于理解为什么其他一些词会在那里。毕竟这是 twitter,所以你总是可以期待各种各样的情绪。数据集中的一些单词确实使用了非常强烈的语言。单词 cloud 还排除了单词 paulryan ,因为它们在数据集中出现的频率过高。
**# split sentences to get individual words*
all_words = []
**for** line **in** df_paulry['no_pauls']: *# try 'tokens'*
    all_words.extend(line)

*# create a word frequency dictionary*
wordfreq = Counter(all_words)*# draw a Word Cloud with word frequencies*
wordcloud = WordCloud(width=900,
                      height=500,
                      max_words=500,
                      max_font_size=100,
                      relative_scaling=0.5,
                      colormap='Blues',
                      normalize_plurals=**True**).generate_from_frequencies(wordfreq)plt.figure(figsize=(17,14))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()*

Tokenized words word cloud

预处理 3:特征提取

矢量化—(单词袋)

我们将把每条由一系列符号表示的消息转换成机器学习模型可以理解的向量。

为此,我们使用了包含三个步骤的单词袋模型。

  • 1.计算一个单词在每条消息中出现的次数(称为词频)
  • 2.对计数进行加权,以使频繁出现的令牌获得较低的权重(逆文档频率)
  • 3.将向量归一化为单位长度,以从原始文本长度中提取(L2 范数)

每个向量将具有与 tweeter 语料库中的唯一单词一样多的维度。

我们将首先使用 SciKit Learn 的 CountVectorizer 函数,该函数将一组文本文档转换成一个令牌计数矩阵。

想象这是一个二维矩阵,其中一维是消息中包含的全部词汇,另一维是每条推文的一列。

由于有如此多的消息,我们可以预期数据中每个单词的出现都有很多零计数,但是 SciKit Learn 将输出一个稀疏矩阵。下面是一个矢量化句子的例子——代码和输出。

**# vectorize*
bow_transformer = CountVectorizer(analyzer=text_process).fit(df_paulry['message'])
*# print total number of vocab words*
print(len(bow_transformer.vocabulary_))# output
6865*# example of vectorized text*
sample_tweet = df_paulry['message'][111]
print(sample_tweet)
print('**\n**')*# vector representation*
bow_sample = bow_transformer.transform([sample_tweet])
print(bow_sample)
print('**\n**')*

Sample sentence in vector representation

**# transform the entire DataFrame of messages*
messages_bow = bow_transformer.transform(df_paulry['message'])*# check out the bag-of-words counts for the entire corpus as a large sparse matrix*
print('Shape of Sparse Matrix: ', messages_bow.shape)
print('Amount of Non-Zero occurences: ', messages_bow.nnz)*

Whole corpus in vector representation

术语频率,逆文档频率

  • tf-idf 代表术语频率-逆文档频率,TF-IDF 权重是信息检索和文本挖掘中经常使用的权重。该权重是一种统计度量,用于评估一个单词对集合或语料库中的文档有多重要。
  • 重要性与单词在文档中出现的次数成比例增加,但是被单词在语料库中的频率抵消。tf-idf 加权方案的变体通常被搜索引擎用作给定用户查询时对文档相关性进行评分和排序的中心工具。
  • 最简单的排名函数之一是通过对每个查询项的 tf-idf 求和来计算的;许多更复杂的排名函数是这个简单模型的变体。
  • 通常,tf-idf 权重由两项组成:第一项计算归一化项频率(tf),aka。单词在文档中出现的次数,除以该文档中的总单词数;第二项是逆文档频率(IDF ),计算为语料库中文档数量的对数除以特定术语出现的文档数量。
  • TF:术语频率,衡量一个术语在文档中出现的频率。因为每个文档的长度不同,所以一个术语在长文档中出现的次数可能比短文档多得多。因此,术语频率通常除以文档长度(又名。文档中的术语总数)作为标准化的一种方式:

TF(t) =(术语 t 在文档中出现的次数)/(文档中的总术语数)。

  • IDF:逆文档频率,衡量一个术语的重要程度。在计算 TF 时,所有项都被认为是同等重要的。然而,众所周知,某些术语,如“是”、“的”和“那个”,可能会出现很多次,但并不重要。因此,我们需要通过计算以下各项来降低常用术语的权重,同时提高罕见术语的权重:

IDF(t) = log_e(文档总数/包含术语 t 的文档数)。

  • 下面是一个简单的例子。
  • Example: Consider a document containing 100 words wherein the word cat appears 3 times. The term frequency (i.e., tf) for cat is then (3 / 100) = 0.03\. Now, assume we have 10 million documents and the word cat appears in one thousand of these. Then, the inverse document frequency (i.e., idf) is calculated as log(10,000,000 / 1,000) = 4\. Thus, the Tf-idf weight is the product of these quantities: 0.03 * 4 = 0.12.
**# from sklearn.feature_extraction.text import TfidfTransformer*
tfidf_transformer = TfidfTransformer().fit(messages_bow)
tfidf_sample = tfidf_transformer.transform(bow_sample)
print(tfidf_sample)*

  • 我们将继续检查单词“trump”和单词“gop”的 IDF ( 逆文档频率)是多少?
**# some IDF (inverse document frequency) example*
print(tfidf_transformer.idf_[bow_transformer.vocabulary_['trump']])
print(tfidf_transformer.idf_[bow_transformer.vocabulary_['gop']])*

  • 为了将我们的整个 twitter 单词库一次转换成 TF-IDF 语料库,我们将使用下面的代码:
**# to transform the entire bag-of-words corpus*
messages_tfidf = tfidf_transformer.transform(messages_bow)
print(messages_tfidf.shape)# Output
(4164, 6865)*
  • 在对数据进行预处理之后,我们现在准备让它通过一个 ML 分类算法。
  • 这就结束了我们工作流程的文本预处理阶段,但是我们将在这里继续的下一部分中作为流水线中的一步重新审视这些步骤。

这就是推特如何看待世界:情感分析第二部分

原文:https://towardsdatascience.com/the-real-world-as-seen-on-twitter-sentiment-analysis-part-two-3ed2670f927d?source=collection_archive---------6-----------------------

image by Deepthiyathiender

这篇博客文章是上一篇文章的延续,上一篇文章讲述了机器学习(ML)情感分析任务的文本预处理的内部工作。在这篇文章中,我们将把来自集 140 的数据分成训练集和测试集。在训练模型之后,我们将使用它来对未见过的 twitter 数据进行情感分类,这些数据已经以与训练数据相同的方式进行了预处理。

第一部分:模型训练

朴素贝叶斯分类器

在这个分类任务中,我们将使用基于贝叶斯定理朴素贝叶斯(NB) 分类器。简而言之,NB 分类器假设一个类中特定特征的存在与任何其他特征的存在无关。因此,举例来说,如果一个水果是橙色的,圆形的,直径约为 3 英寸,那么它就可以被认为是橙子。朴素贝叶斯分类器认为这些“特征”(橙色、圆形、直径 3 英寸)中的每一个都独立地影响水果是苹果的概率,而不考虑特征之间的任何相关性。然而,特征并不总是独立的,这通常被视为朴素贝叶斯算法的缺点,这也是它被标记为“朴素”的原因。然而,它理解、构建和训练相对简单,而且速度非常快,这使得它成为情感分类的良好候选。

贝叶斯定理提供了一种从 P(c),P(x)和 P(x|c)计算后验概率 P(c|x)的方法。看下面的等式:

- P(c|x) is the posterior probability of class (c, target) given predictor (x, attributes).
- P(c) is the prior probability of class.
- P(x|c) is the likelihood which is the probability of predictor given class.
- P(x) is the prior probability of predictor.

创建管道来一步管理预处理步骤

  • Scikit Learn 提供了一个管道功能,允许您定义一个管道工作流,该工作流将采取上述所有步骤,甚至是一个分类器和网格搜索参数。
  • 管道使代码更具可读性,并使交换管道片段变得容易(管道片段可以包含其他 ML 算法并尝试不同的配置)。
  • 管道还允许对模型工作流进行交叉验证。
  • 通过确保使用相同的样本来训练转换器和预测器,管道还有助于避免在交叉验证中将测试数据中的统计数据泄漏到训练模型中。

交叉验证:

  • 训练好模型的推荐方法是首先使用训练集本身的一部分进行交叉验证,以检查您是否使用了容量过大的模型(即模型是否过度拟合数据)。
  • 为了同时交叉验证和选择最佳参数配置,我们使用了 GridSearchCV。
  • 这使我们能够轻松地测试不同的超参数配置,例如使用 KFold 策略将模型分成随机部分,以确定它是泛化得好还是过度拟合。
  • GridSearchCV 允许您使用要迭代的超参数配置值定义 ParameterGrid。对所有组合进行测试和评分,并返回最佳模型。
  • 对于我们的例子,有 4 + 2 + 2 个参数组合要测试,有 10 kfold 验证,因此模型将在验证集上训练和测试 8 x 10 = 80 次。
*# Run Train Data Through Pipeline analyzer=text_process*
*# uncomment below to train on a larger dataset but it's very slow for a slower machine.**# X_train, X_test, y_train, y_test = train_test_split(data['text'], data['label'], test_size=0.2)*
X_train, X_test, y_train, y_test = train_test_split(data['text'][:5000], data['label'][:5000], test_size=0.2)*# create pipeline*
pipeline = Pipeline([
    ('bow', CountVectorizer(strip_accents='ascii',
                            stop_words='english',
                            lowercase=**True**)),  *# strings to token integer counts*
    ('tfidf', TfidfTransformer()),  *# integer counts to weighted TF-IDF scores*
    ('classifier', MultinomialNB()),  *# train on TF-IDF vectors w/ Naive Bayes classifier*
])*# this is where we define the values for GridSearchCV to iterate over*
parameters = {'bow__ngram_range': [(1, 1), (1, 2)],
              'tfidf__use_idf': (**True**, **False**),
              'classifier__alpha': (1e-2, 1e-3),
             }*# do 10-fold cross validation for each of the 6 possible combinations of the above params*
grid = GridSearchCV(pipeline, cv=10, param_grid=parameters, verbose=1)
grid.fit(X_train,y_train)*# summarize results*
print("**\n**Best Model: **%f** using **%s**" % (grid.best_score_, grid.best_params_))
print('**\n**')
means = grid.cv_results_['mean_test_score']
stds = grid.cv_results_['std_test_score']
params = grid.cv_results_['params']
**for** mean, stdev, param **in** zip(means, stds, params):
    print("Mean: **%f** Stdev:(**%f**) with: **%r**" % (mean, stdev, param))

  • 我们向 GridsearchCV 对象传递了 8 个参数和 10 个用于交叉验证的折叠参数,这意味着对于每个参数组合,网格将运行 10 次不同的迭代,每次使用不同的测试集。
  • 在尝试了不同的模型参数组合之后,GridsearchCV 返回了性能最佳的模型,我们可以用它来对新的(twitter)数据进行分类。我们将下面的模型保存到工作目录中,以便将来在不重新训练它的情况下检索训练过的模型。
  • 如果您计划将模型部署到其他地方,比如移动应用程序或 web 应用程序,那么保存模型也是一个必要的步骤。

2 部分:模型评估

在下面的代码中,我们将在测试维持数据集上测试我们的训练模型。

*# save best model to current working directory*
joblib.dump(grid, "twitter_sentiment.pkl")*# load from file and predict using the best configs found in the CV step*
model_NB = joblib.load("twitter_sentiment.pkl" )*# get predictions from best model above*
y_preds = model_NB.predict(X_test)print('accuracy score: ',accuracy_score(y_test, y_preds))
print('**\n**')
print('confusion matrix: **\n**',confusion_matrix(y_test,y_preds))
print('**\n**')
print(classification_report(y_test, y_preds))

  • 在上面的单元格中,我使用了最佳模型来对看不见的测试数据进行预测,这让我们可以对性能指标进行分级和检索。
  • 我们可以从上面得到的一些性能指标包括分类报告和混淆矩阵。
  • 一个混淆矩阵(CM) 非常简单明了,但下面是解释它以及得出分类报告的关键:

根据上面的精度指标:

  • 95%是模型在数据集中所有标签中预测正确标签的次数。
  • 当数据中类的分布非常均衡时,准确性可以让您很好地了解模型的执行情况。

来自混淆矩阵:

  • 该模型将 553 个标签正确预测为阴性,将 799 个标签正确预测为阳性。
  • 我们还得到 4 个预测为阳性的标签,尽管它们是阴性的(假阴性)。
  • 从 CM 中我们可以知道的另一件事是,模型预测 62 个标签为阴性,但它们结果是阳性(假阳性)。

来自分类报告:

可以从混淆矩阵中的度量获得的分类报告给出了关于模型性能的更详细的信息。

  • 精度:标签 0 为 99%,标签 1 为 93%。这个数字告诉我们在该类别的所有预测中,正确预测的标签所占的比例。
  • 回忆:标签 0 为 90%,标签 1 为 100%。这是该类别的真实标签中正确预测的数量。
  • f1 -score :这是该类的精度和召回率的加权平均值。它通常给出该标签的模型表现的更大画面,并且显然该数字越高越好。标签 0 为 94 %,标签 1 为 96%。0 表示消极情绪,1 表示积极情绪。
  • 从上述指标来看,该模型似乎表现得相对较好,尽管它在预测类 0 的正确标签方面可以做得更好。
  • 根据研究,由于评分者之间的可靠性问题,人类评分者通常同意 80%的时间【Roebuck,k .(2012–10–24】】。
  • 因此,一个 70%准确的程序做得几乎和人类一样好,即使这样的准确性可能看起来并不那么令人印象深刻。如果一个程序在 100%的时间里都是“正确的”,人类仍然会在 20%的时间里不同意它,因为他们对任何答案都不同意。
  • 我们还可以将我们的模型与类似的工作进行比较,这些工作对情感分析和情感标签的二元分类进行了广泛的研究。最终的模型是基于支持向量机( SVM )并进而达到 79.08%的准确率。
  • 到目前为止,我们已经采取措施来避免过度拟合我们建立模型管道的方式,但最终真正的测试是在看不见的数据上测试模型。

3 部分:真实世界的模型性能

下一步,我想用我们的模型对通过 twitter API 获得的数据进行情感预测,并评估它的性能。预测和预览结果是在下面的代码中完成的。

*# run predictions on twitter data*
tweet_preds = model_NB.predict(df_twtr['message'])*# append predictions to dataframe*
df_tweet_preds = df_twtr.copy()
df_tweet_preds['predictions'] = tweet_preds
df_tweet_preds.shape# Output
(4164, 8)

查看下面的一些示例预测。

0 =正,1 =负。

*# print text and sentiment*index = random.sample(range(tweet_preds.shape[0]), 20)
**for** text, sentiment **in** zip(df_tweet_preds.message[index],
                           df_tweet_preds.predictions[index]):
    print (sentiment, '--', text, '**\n**')#------------------------------
# SAMPLE PREDICTIONS BELOW    #
#------------------------------0 -- Spot on correct. The Paul Ryan Story: From Flimflam to Fascism [https://t.co/BPwrobl0aS](https://t.co/BPwrobl0aS)0 -- .@Varneyco @charleshurt   Paul Ryan didn't get Tax Reform.  Donald Trump got Tax Reform.  Boy George could have bee… [https://t.co/vGmRJWQnlG](https://t.co/vGmRJWQnlG)1 -- @HumanBeings1st @LotraineH Paul Ryan is cold-hearted👎🏼👹He hates Social Security and Medicare and Medicaid and has t… [https://t.co/oQAXvfEuLI](https://t.co/oQAXvfEuLI)0 -- Paul Ryan is an unconvincing charlatan whose primary goal in life has been to make life harder for poor people. The… [https://t.co/yyK80Tsgmz](https://t.co/yyK80Tsgmz)0 -- absolutely delish...#winningMeghan McCain Erupts After Audience Cheers Paul Ryan Retirement: ‘You Deserve Trump’ [https://t.co/7s2AUVGrgp](https://t.co/7s2AUVGrgp)0 -- Is anyone surprised Paul Ryan isn’t going to run? #morningjoe0 -- @CNN If the Repubs stand by and continue to let the lunatic run the asylum, then they are accountable, if the Repub… [https://t.co/uNNkd9yljp](https://t.co/uNNkd9yljp)0 -- .@IronStache wins eight months early [https://t.co/7txWs0YvER](https://t.co/7txWs0YvER)

下面,我在互联网上的一些文本上测试了这个模型,以更好地了解它在一些随机数据上的表现。

*# Testing random text from the internet**# load model*
model_NB = joblib.load("twitter_sentiment.pkl" )*# test string*
sample_str = """While ride-sharing first mover Uber has fallen on tough times with
scandal and abyssal track records of leadership, and cash burning
growth-orientated practices, the world has caught up with self-driving
tech with many players now in the race."""p = model_NB.predict([sample_str])*# formatting helper*
**def** sentiment_str(x):
    **if** x==0:
        **return** 'Negative'
    **else**:
        **return** 'Positive'
*#_____________________________________________**# test result ___ 0=Negative, 1=Positive*
print("the sentence: **\n\n**'**{}**' **\n\n**has a **{}** sentiment".format(sample_str,sentiment_str(p[0])))

观察

  • 我在上面的单元格中可视化了由我们的模型分类的 10 个 tweets 示例,这些示例看起来执行得基本正确,但有时会令人尴尬地失败。
  • 当在非 twitter 文本上测试时,该模型似乎拾取了许多嵌入的情感,但需要更多工作来从所述文本中提取一般结论。例如,我们可能需要对整个段落进行训练,而不仅仅是一句话。
  • 关于情感分析的一个棘手的问题是,即使该模型在一些基准上表现良好,最终的表现也将不得不留给难以量化的实际人类法官。
  • 话虽如此,我查看了许多随机的负面分类和正面分类的推文,有一些非常好的分类,还有一些分类似乎不属于任何地方。这也让我觉得我们应该探索第三种分类。所以我们会有积极、消极和中性的情绪
  • 虽然我认为模型已经完成了一些学习,但我认为我们可以通过调整模型的参数、探索其他算法或创建算法集合来做得更好。

比较 twitter 数据上的模型预测统计

pos = df_tweet_preds.predictions.value_counts()[0]
neg = df_tweet_preds.predictions.value_counts()[1]print('Model predictions: Positives - **{}**, Negatives - **{}**'.format(neg,pos))*# save dataframe with appended preditions* 
df_tweet_preds.to_pickle('paulry_predicts_df.p')

7 部分:地质图、最终想法和结论

  • 在这一部分,我们还创建了下载推文的地理可视化,这是数据故事的重要组成部分。
  • 在训练任何 ML 模型时,一个重要的部分是能够以促进利益相关者决策的方式呈现我们的发现。
  • 我们将加载包含预测的数据框架,并探索国家和美国各州的分布,特别是因为我们的 twitter 数据围绕着美国新闻。
  • 值得一提的是,我们的数据集在发展过程中存在一些限制。大多数 twitter 用户不广播他们的地理位置,但我们的搜索标准只提取了启用了位置信息的推文。
  • 因此,我们可能错过了很多推文,这些推文描绘的画面可能与我们在地图上绘制的画面不同。了解这一点不仅对解释结果至关重要,而且对理解我们如何使模型更加稳健也至关重要。
*# load dataframe with predictions*
df = pd.read_pickle('paulry_predicts_df.p')*# get all the countries in dataset*
df.country.unique()

*# get top countries in the dataset by percentage of tweets*
df.country.value_counts(1).head(10)

在[132]:

*# plot histogram of tweets counts by country of origin*
sns.set_style("darkgrid")
x = df.country.value_counts(1).head(20)
x.plot(kind='bar',figsize=(10,6),fontsize=13,color='steelblue')
plt.ylabel('**% o**f Total Tweets', fontsize=13)

  • 正如我们所怀疑的,绝大多数推文来自美国。接下来,我们将通过状态计数来获取状态。
*# get latitudes and longitudes**# some helper funtions to get longs and lats*
**def** lats(x):
    **return** x[1]**def** longs(x):
    **return** x[0]*# --------------------------------------------------------#*
*# append longs and lats to dframe*
df['latitude'] = df['geo_code'].apply(lats)
df['longitude'] = df['geo_code'].apply(longs)
df.columns

*# for US tweets extract state abbreviations for a new STATE column*
*# helper function to extract state origin of every tweet*
**def** get_state(x):

    states = ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DC", "DE", "FL", "GA", 
              "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", 
              "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", 
              "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", 
              "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"]states_dict = {
            'AK': 'Alaska','AL': 'Alabama','AR': 'Arkansas','AS': 'American Samoa',
            'AZ': 'Arizona','CA': 'California','CO': 'Colorado','CT': 'Connecticut',
            'DC': 'District of Columbia','DE': 'Delaware','FL': 'Florida','GA': 'Georgia',
            'GU': 'Guam','HI': 'Hawaii','IA': 'Iowa','ID': 'Idaho','IL': 'Illinois',
            'IN': 'Indiana','KS': 'Kansas','KY': 'Kentucky','LA': 'Louisiana',
            'MA': 'Massachusetts','MD': 'Maryland','ME': 'Maine','MI': 'Michigan',
            'MN': 'Minnesota','MO': 'Missouri','MP': 'Northern Mariana Islands',
            'MS': 'Mississippi','MT': 'Montana','NA': 'National','NC': 'North Carolina',
            'ND': 'North Dakota','NE': 'Nebraska','NH': 'New Hampshire','NJ': 'New Jersey',
            'NM': 'New Mexico','NV': 'Nevada','NY': 'New York','OH': 'Ohio','OK': 'Oklahoma',
            'OR': 'Oregon','PA': 'Pennsylvania','PR': 'Puerto Rico','RI': 'Rhode Island',
            'SC': 'South Carolina','SD': 'South Dakota','TN': 'Tennessee','TX': 'Texas',
            'UT': 'Utah','VA': 'Virginia','VI': 'Virgin Islands','VT': 'Vermont',
            'WA': 'Washington','WI': 'Wisconsin','WV': 'West Virginia','WY': 'Wyoming'
    }abv = x.split(',')[-1].lstrip().upper()
    state_name = x.split(',')[0].lstrip()
    **if** abv **in** states:
        state = abv
    **else**:
        **if** state_name **in** states_dict.values():
            state = list(states_dict.keys())[list(states_dict.values()).index(state_name)]
        **else**:
            state = 'Non_USA'    
    **return** state*# ____________________________________________________________________________**# create abreviated states column*
df = df.copy()
df['states'] = df['full_name'].apply(get_state)
list(df['states'].head())

输出:

['Non_USA', 'PA', 'FL', 'NY', 'FL']

在下面创建一些可视化效果。

*# save updated dataframe*
df.to_pickle('df_paulry_longs_lats.p')*# retrive updated dataframe*
df = pd.read_pickle('df_paulry_longs_lats.p')*# plot tweets distribution by state*plt.style.use('seaborn-darkgrid')
df_states = df[df.country=='United States']
df_states = df_states[df_states.states!='Non_USA']x = df_states.states.value_counts()
x.plot(kind='bar',figsize=(14,6),fontsize=12,color='steelblue')
plt.ylabel('Origin of Tweets', fontsize=13)

  • 从上面我们可以看到大多数推文来自哪里,看起来可能与人口数量和州的大小有关。
  • 接下来,我们通过将积极和消极相加来提取每个状态的总体情绪,最后的数字就是指标。
  • 我们将使用每个州的总体情绪来创建一个热图,显示从最消极到最积极的状态。

*# Create the sentiment by state Heat Map*colorscale=[
            [0, 'rgb(31,120,180)'], 
            [0.35, 'rgb(166, 206, 227)'], 
            [0.75, 'rgb(251,154,153)'], 
            [1, 'rgb(227,26,28)']
           ]data = dict(type='choropleth',
            colorscale = colorscale,
            reversescale=**True**,
            locations = df_state_sentiment['states'],
            z = df_state_sentiment['total_sentiment'],
            locationmode = 'USA-states',
            text = df_state_sentiment['states'],
            marker = dict(line = dict(color = 'rgb(255,255,255)',width = 2)),
            colorbar = {'title':"Twitter Sentiment"}
            )layout = dict(title = 'Twitter Sentiment: GOP House Speaker: Paul Ryan',
              geo = dict(scope='usa'
                        )
             )choromap_us = go.Figure(data = [data],layout = layout)*# plotly.offline.plot(choromap_us, filename='img_map.html')  # save html map*
IFrame('img_map.html', width=950, height=700)  *# view saved map html file*

  • 总情绪是通过对每个州的积极和消极因素求和得出最终数字。
  • 从上面的热图中,我们可以做出一些有趣的观察。
  • 从地图右侧的色标来看,蓝色过渡到红色,表示积极到消极的情绪。该量表实际上是从 0 开始的,因为没有一个州的总体情绪是积极的。所以我们赤字越多,情绪就越消极。
  • 纽约和加州对这个关键词搜索的负面情绪最大。请记住,纽约和加州的推特用户最多,这很可能会扭曲上面的图片。
  • 因此,我觉得这张热图不太可靠,但它是探索 情绪 vs状态可视化的良好起点。
  • 接下来,我们将看到另一个热图,我们将根据各自的地理位置数据绘制数据集中的每条推文。
*# use the folium library to create all tweet origins in the dataset on map of US*geoplots = []
**for** index, row **in** df_states[['latitude','longitude','predictions']].iterrows():
    geoplots.append([row['latitude'],row['longitude'],row['predictions']])mus = folium.Map(location=[39, -99], zoom_start=4)
plugins.Fullscreen(
    position='topright',
    title='Expand me',
    title_cancel='Exit me',
    force_separate_button=**True**).add_to(mus)mus.choropleth(
    geo_data='us_states.geojson',
    fill_color='red', 
    fill_opacity=0.1, 
    line_opacity=0.2,
    name='US States')

mus.add_child(plugins.HeatMap(geoplots,
                            name='Twitter HeatMap',
                            radius=10,
                            max_zoom=1,
                            blur=10, 
                            max_val=3.0))
folium.TileLayer('cartodbpositron').add_to(mus)
folium.TileLayer('cartodbdark_matter').add_to(mus)
folium.TileLayer('Mapbox Control Room').add_to(mus)
folium.LayerControl().add_to(mus)
mus.save("twitter_us_map.html") 
IFrame('twitter_us_map.html', width=960, height=520)

  • 上面的美国地图显示,许多推文来自这些人口密度高的地区。
  • 充其量,地图给我们提供了一种方式来查看推文来自哪里,下一步将根据它们的情感值来映射它们,以便更好地表达情感。
  • 我们还可以在地图上添加一个时间维度,以可视化推文,因为它们在时间序列中实时发生,这将是一个跟踪相关方感兴趣的主题的伟大工具。这种工具以前在总统竞选和自然灾害中使用过。

结论

  • 到目前为止,对于情绪分析模型来说,我们的模型表现得相对较好,其准确率为 76% ,但我们还可以做很多事情来提高对这种表现的信心。
  • 我认为这是一个很好的基本模型,可以通过试验以下建议来提高其性能:
  • 可以对训练语料库执行额外的数据归一化。我们从训练数据中移除了停用词,但我们也可以尝试使用词干词汇化,这两种方法都是基于词根或基本词来分析语料库中的单词。
  • 我们还可以尝试不同的单词标记方法,特别注意大写单词和特殊字符。
  • 表情符号也可以用来提取更多的文本内容。
  • 尝试使用多类标签来容纳所有可以通过文本传达的人类情感。例如:悲伤、快乐、兴奋、厌烦等..
  • 考虑其他 ML 算法,如支持向量机、决策树、神经网络等,甚至这些算法的集合。
  • 最后,我想知道在不同的主题上训练一个模型并为不同的数据集选择最相关的一个是否有益。例如,在广泛的法律文档库上训练的用于法律的模型,或者在体育相关文本上训练的用于体育的模型,比如与体育和体育名人相关联的推文。当然,对于实验和随后的评估来说,这方面的基础无疑是丰富的。

这篇文章的代码和更多内容可以在我的 GitHub 获得。

如何访问未发布的数据集

原文:https://towardsdatascience.com/the-real-world-isnt-kaggle-de168311e99b?source=collection_archive---------11-----------------------

因为“真实世界”不是 Kaggle…

aggle 以透明和无与伦比的方式向数据科学家提供了大量真实世界的数据集。不幸的是,随着越来越多的新数据科学家依赖 Kaggle 向他们提供数据,他们错过了发展我们领域最重要的技能之一:搜寻和获取难以找到或私人持有的数据集。

这篇文章将帮助你发现未发表的数据集,并教你一个简单的“提问和获取”的框架。

我什么时候需要找到获取数据集的方法?

最终你会需要数据,而谷歌搜索不足以获得这些数据。这个周末就发生在我身上。它会发生在你身上。

作为一名员工:(企业或公司内部的)数据经常会被隔离,由不同的个人或部门持有。理解简单的模式来识别和有说服力地联系有权共享这些数据的关键利益相关者,对于及时完成任务至关重要。

作为一名企业家:对于希望验证产品创意的数据驱动型企业家来说,做出明智决策所需的数据通常已经以某种形式存在——无论是学术形式还是专业形式——但它们有时隐藏在昂贵的付费墙后面,或者只能在有限的范围内公开获取。知道如何找到并访问它可以节省时间和金钱。

作为一名学者:在学术界,发现、记录和发布以前未知的知识需要勤奋地寻求&对每一个假设和主张的质疑,以发现突破的机会。如果不了解基本的沟通,学术风险是“发现”一些已知的东西,甚至浪费时间和研究资源。

这个周末,我就有过这样的经历。吃饭时,一位朋友问道:“有没有可能去除波旁威士忌中的酒精,同时又不失去其复杂的味道和气味?”

当我开始用谷歌搜索时,我很快意识到我能找到的唯一答案是我自己决定的。带着这个问题,我陷入了困境。

1 阶段—确定您需要的问题/数据

明确你的问题

这是最重要的部分。你问的问题通常定义了你需要的信息。这也限制了你试图获取的数据的范围,而当你要求一个根本没有义务回应你的要求的人时,这些数据是有帮助的。

谷歌一下或者做个内部网搜索

作为数据科学家,我们已经非常擅长谷歌搜索和基于启发式的信息搜索。在公司环境中,使用你的内部工具和文档。对于学者和企业家来说,谷歌学术是无价的。

在问别人之前进行彻底的搜索是很重要的,以确保你的问题是可靠的,并向他们表明你尊重他们的时间。这也有助于在数据集搜索时请求访问时建立信任。

我的研究导致了一些关于波旁威士忌中化合物分子量的有希望的研究。结果我的问题演变了。它帮助我进一步确定了一项看起来特别有前途和有用的研究和数据集。

使用人际互动

事实上,与人交谈可能会令人生畏,但这往往会影响我们获取高质量信息的速度。

https://media.giphy.com/media/24xRxrDCLxhT2/giphy.gif

一个简单的电话、电子邮件或 DM 是开始的地方。

老实说,只要你礼貌而中肯,几乎没有错误的方法。

就得做。

一旦你定义了你的问题,并确定了谁有权访问你所需要的数据(或者谁可能知道谁有权访问你所需要的数据),那么你就可以进入第二阶段。

2 阶段——询问你找到的人,并通过询问找到

问&找

无论是电子邮件还是电话,模板都大同小异: 有礼貌、直截了当地传达“询问”信息。

My “Ask” email to the bourbon study researcher.

记住:

传达出你对他们的工作和他们努力收集的数据感兴趣。这会让他们兴奋起来,并帮助他们关心你。

做人吧。确保你写的每封邮件都是专门给那个人的。你不希望你的邮件给人的感觉是机械的或者缺乏感情。

不要让人们做任何会给他们带来麻烦的事情。你也应该清楚而真实地陈述你对这些数据的意图。

如果没有得到回应,第二天继续跟进。简单的说“嗨 __,你收到我的邮件了吗?”你不会试图向他们推销任何东西,所以不要犹豫,要坚持。简单礼貌的跟进是关键。

简单的电子邮件通常会很快得到回复。如果你很快收到回复,假设他们的时间不多,立即跟进。

The individuals with the data are an invaluable resource. Time is their limited resource.

找&问

一旦你开始谈话,你就进入了最后阶段。你会发现这个阶段的人都很乐于助人。你可能最终会与他们来回发送电子邮件来寻找正确的数据,但这个过程有助于你确定你真正需要的数据。

Success! A better dataset than I could have ever found on my own.

如果你进入了对话的死胡同或者得到了“不”,一定要跟进,询问他们是否可以为你提供任何其他有用的数据集,或者他们是否知道任何其他可以找到你需要的数据的资源。人们几乎总是会尽力帮忙,因为这减轻了不得不对别人说“不”的严重性。

不要害怕问一些关于数据集的简单问题,看看他们有什么额外的数据。运气好的话,他们会帮你找到你需要的数据集,并帮你节省大量时间。

有些询问会引导你找到一个数据集,有些会引导你去问一个新的人,但不管你找到谁或什么 都要记得说谢谢。

The most important email — the Thank You.

我自己对 bourbon 数据集的搜索由于这几个技巧而成功结束。

请记住,你是在要求别人分享他们可能花了比你多 1000 倍的时间去做/看的东西。

如果你给他们的工作带来热情,他们会回报你的。

作为一名数据科学家,如果你有任何其他写冰冷邮件的技巧,请在评论中分享。

再现性危机以及为什么它对人工智能有害

原文:https://towardsdatascience.com/the-reproducibility-crisis-and-why-its-bad-for-ai-c8179b0f5d38?source=collection_archive---------5-----------------------

2016 年《自然》的一项调查显示,超过 70%的研究人员试图重现另一位科学家的实验,但失败了,超过一半的人没有重现自己的实验。这一令人担忧的发现对数据科学产生了影响,在数据科学中,越来越多的同类问题正在涌现。在最近对铽实验室首席技术官 Clare Gollnick 的采访中,我讨论了科学中所谓的“再现性危机”的含义及其对数据科学家的影响。

绝对值得去看看完整采访。克莱尔很好地解释了再现性危机,并就这个问题如何影响人工智能从业者提供了深刻的见解。

Subscribe: iTunes / SoundCloud / Google Play / Stitcher / RSS

以下是她的一些主要观点的简要概述:

  • 数据钓鱼和黑客攻击。再现性危机的一个促成因素是“p-hacking”——即在确定潜在因果关系的特定假设之前,检查一个人的实验数据,直到发现符合统计显著性标准的模式。P-hacking 也被称为“数据钓鱼”,这是有原因的:您正在从您的数据逆向工作到一个模式,这打破了最初决定统计显著性的假设。
  • 深度学习不透明。Gollnick 指出,数据钓鱼正是机器学习算法所做的——它们从数据逆向工作到模式或关系。因此,你可以说 p-hacking 本质上相当于 ML 中的过度拟合。数据科学家很清楚,交叉验证是纠正这个问题的必要实践。但是人工智能中仍然存在大量的可复制性问题。Pete Warden 最近发表的一篇博客文章谈到了数据科学家和其他从业者面临的一些核心挑战。Warden 提到了当前 ML 和深度学习方法的深度迭代性质,以及数据科学家不容易记录他们在每次迭代中的步骤的事实。此外,深度学习的数据科学堆栈有许多移动的部分,这些层中任何一层的变化——深度学习框架、GPU 驱动程序或训练或验证数据集——都可能影响结果。
  • 数据科学的哲学。 Gollnick 和其他相关的数据科学家一致主张更深入地理解我们使用的模型如何以及为什么工作。这样做可能意味着重新审视科学方法的基础,探索“数据哲学”。也就是对科学知识的哲学探索,它对某些事情意味着什么,以及数据如何支持这些。显而易见,任何迫使我们面对关于可解释性、因果性和确定性等问题的棘手问题的思维练习,在我们扩大现代机器学习方法的应用时,都可能具有巨大的价值。

ML 和 AI 中的再现性问题是每个数据科学家都应该关注的问题,因为它的影响深远。如果你想了解更多关于这个问题的信息,或者对 Gollnick 或我有任何意见,请访问我们的节目页面,收听完整的播客并加入讨论。

2018 年 4 月 17 日编辑:格式修复。纠正深度学习是“一个黑匣子”到“不透明;前者是过于强烈的描述,而且不准确。

原载于 2018 年 3 月 22 日twimlai.com

“正确答案”偏差和统计问题

原文:https://towardsdatascience.com/the-right-answer-bias-and-the-statistical-problem-18e5bf1d03c4?source=collection_archive---------1-----------------------

假设你将一枚硬币抛 10 次,得到 6 个头。概率 P(H |观测值)是多少(正确答案)?

答案肯定不是。6。其实我们根本不知道答案是什么。根据我们所看到的情况,概率 0 . 6 是最有可能的答案,但考虑到我们的样本量是如此之小,它并不比 0 . 5 或 0 . 7 更好。

增加样本量可能有助于我们更好地提炼答案,但没有没有统计学背景的人(甚至那些只是肤浅地了解的人)在看到观察结果的第一眼可能会想到的那么快。如果我们在 100 次抛硬币中得到 63 个正面,这将意味着 0.6 可能比 0.5 好得多,但这并不一定意味着 0.63 一定比 0.6 好得多。(确实意味着. 63 是比. 6 更好的答案,只是好不了多少,不足以用足够的信心来证明这个论断。)

原则上,每个人都应该知道这一点,特别是考虑到统计发现的每一个主张都带有误差幅度,我们在每门入门课程中都教授计算误差幅度的公式。但我认为这种解释通常是用一种令人困惑和误导的语言表达的。举一个简单的例子,如果我们声称 P(X) = .6 +/- .02,这并不意味着概率(以观察为条件)仅在区间(. 58,. 62)上均匀分布,许多人似乎含蓄地认为是这样,而是 P(X) < .58 is smaller than 2.5%, as per statistical convention. The probability that P(X) is, in fact, .57 is not much smaller than that it is .581, despite the latter being supposedly within the margin of error. Conversely, the probability that P(X) is in fact .6 is much greater than that it is .581, with the big caveat that the distribution of the observations are well behaved (which is where the really big can of worms resides.)

While this might seem simple, the same problem lies with interpretations of, among other things, coefficients of linear regressions. So you find that a coefficient is “significant.” What the heck does it really mean? A coefficient of b on variable x is usually taken to mean a change of b in the value of y for one unit change in the value of x, which is true, technically, but的概率仅在平均上均匀分布。限定词“平均”是这里的关键:x 值的单位变化可以很容易地导致 b+q 的 y 的变化,有一定的概率。这就是标准误差的用途——帮助你计算 b+q 在 y 中变化的概率,假设数据的分布符合教科书统计学的便利假设,你应该多次被提醒,这些假设的存在只是为了使解释简单,而不是让“噪音”分散你的注意力,而“噪音”在现实生活中可能非常重要。

我们可以考虑故意和肆意违反这些便利假设的情况。为了便于说明,让我们编造一些数据:

set . seed(0)
a<-r norm(1000,1010)
b < -rnorm(1000,101)
c < -rnorm(1000,101)
x0<-runif(1000)* 20
x1<-runif(1000)* 100–50
x2<

我们所做的是在 y 和标记为 x0 到 x3 的 4 个变量之间创建一组关系,x1 到 x3 上的系数具有相同的均值,但不同的方差。通过构造,违反了同伦假设:x(任意 x)的值越大,误差就越大。但是 x1 的值越大,误差就越大。这可以通过比较下面的图来说明。此外,我对数据进行了设置,使 x1 对 y 的影响比 x2 或 x3 大得多,这并不是因为 x2 或 x3 的单位增加影响较小,而是因为 x1 的取值范围比 x2 或 x3 大得多。

y vs. x1

y vs x2

y vs x3

这里有两点:只看 y,每个 x 都淡化了他们之间的真实关系。x3 每增加一个单位,y 就会增加 10 倍。实际上,x3 的取值范围很窄(x1 的 1/10),以至于它对 y 的影响被 x1 的影响淹没了。其次,平均而言,x1 值的增加会导致 y 值增加 10,但没有什么理由认为 x1 值(绝对值)越大,y 值的变化就会越小或越大,因为数据生成过程中存在异方差关系。对于较小的 x1 值,该模型相当不错。对于较大的值,这是相当糟糕的。

一个简单的线性模型(错误地)提供了一个误导的印象:

由于 x1 具有最宽的范围,它似乎以最大的一致性影响 y 的值,如最小的估计标准误差所捕获的,即使其“真实”系数从结构上来说是最大的噪声。范围最小的 x3 做的最少。当然,这反映了这样一个事实,即线性回归并不是真正用于估计噪声,而是均值,它是用于预测一个点,而不是测量分布。事实上,标准误差不是与系数相关的(估计)噪声量的估计值,而是估计系数的精度度量。

这组例子是为了说明在排除噪音的情况下,过多地寻找“正确”答案所产生的问题。给定数据生成过程的细节,“正确的”答案并不存在,只有比其他答案更正确的一些答案——但这种正确本身并不存在,而且只在特定条件下存在。虽然在上面的例子中,x 对 y 的影响的正确答案是 10,但对于 x1、x2 和 x3 也是如此。由于 x1 的噪声系数,这是最不正确的答案。对于所有三种情况,10 作为答案的有用性取决于 x 的值,因为模型内置了异方差性,但对于 x1 的大值来说,这尤其是一个大问题,这也是因为噪声的幅度以及 x1 取值的宽范围。作为一种预测工具,该模型在 x2 上更好,在 x3 上甚至更好,但我们无法通过查看数据来确定这一点。虽然绘制残差图应该告诉我们,对于较小的 x1 值,该模型作为预测工具更有用,但我们应该想知道在什么情况下,该模型更差/更好。

事实上,我不清楚如何轻松地从数据中恢复 x3 上的系数远不如 x1 或 x2 的噪声大这一事实,除了蒙特卡罗到处走动之外。我们需要将样本分割成子集,当 x3 变化时,x1(和 x2)保持在每个子集内的狭窄范围内,并比较 y 的变化,作为跨切片的 x3 的函数,或者类似的事情。但这似乎有点涉及到看似相当琐碎的问题。但是估计整个分布通常是一件棘手的事情——尽管通过重采样技术和更便宜的计算能力,这变得容易多了。难怪大多数非参数技术是最近才发展起来的。

深入研究这些问题将占用我更多的空间,所以我将这篇文章总结如下。统计数字和数据不会提供正确的答案:它们只会提供比备选方案更正确的答案,因为这些答案内置了特定的功能,而且往往是错误的和误导性的——尤其是如果你天真地误解了它们。总是有必要问,这个模型错了多少,什么时候错(后者尤其重要,因为很少有事情是随机的——我们假设随机是为了在建立模型时让我们的生活易于处理(韦斯伯格的“故意无知”,他强调,这是一件好事——如果你知道你在故意无知什么)。一旦我们建立了模型,我们可能想让这种无知消失,这样我们就可以开始了解我们的模型的真正限制是什么。

注意:在帖子最初发表后,做了一些印刷上的更正。

组合学在文本分类中的作用

原文:https://towardsdatascience.com/the-role-of-combinatorics-in-text-classification-b42906a875ca?source=collection_archive---------7-----------------------

还记得你可能上过的一门数学课吗…

Source: Danny Krashen

正如人们可能想象的那样,机器学习和组合学领域有很多重叠。在机器学习中,自然语言处理和文本分类包含大量有趣且具有挑战性的问题。

在这篇文章中,我将深入探讨在文本分类环境中实现组合方法的一般和特殊见解。

什么是文本分类?

文本分类是将预定义的类别分配给自由文本文档的任务

从表面上看,文本分类就像任何其他的分类问题一样。机器学习中的分类问题涉及给给定的输入数据分配正确的类别标签。在文本分类的情况下,输入数据是文本的语料库,并且标签可以基于场景而变化。

这种实践不仅可以提供文档集合的直观概念视图,而且在现实世界中也有重要的应用

文本分类的例子

在你的日常生活中,有大量的文本分类的例子。几个值得注意的用例包括:

  • 话题识别:一篇新闻是关于政治、体育还是科技的?
  • 垃圾邮件检测:电子邮件是否是垃圾邮件?
  • 情绪分析:这个影评是正面的还是负面的?
  • 拼写纠正:天气还是天气?颜色还是色彩?

注意,输入不一定是一篇文章或一段文字。如在关于基于上下文的拼写校正的最后一个例子中所看到的,输入可以小到一些选择的单词或字母。

什么是组合学?

简而言之,组合学是对有限或可数结构的研究。

虽然这个定义相当宽泛,但我希望它有助于阐明组合学如何帮助提高文本分类问题的效率。如果你没有听说过组合学,不要担心——如果你分析过样本空间大小,甚至只是以一种有效的方式简单地统计过事物,你无疑已经在不知不觉中使用过它了。

[## 如何像数据科学家一样思考组合学

牢固掌握这些基本概念,以改善您的决策过程并推动您的公司…

towardsdatascience.com](/how-to-think-about-combinatorics-like-a-data-scientist-bddbd18eff80)

组合学的作用

文本分类通常涉及处理大型高维数据集。这就成了一个问题,尤其是当试图随着时间的推移缩放模型时。

然而这并不是必须的。很多时候,您可以用少得多的功能实现类似的性能。几乎总会有一些功能比其他功能重要得多。这是去除停用词(例如“the”、“a”和“he ”)的基本思路。这也符合用主成分分析来最小化你的特征空间的做法。

通过利用组合方法,可以获得文本数据的有意义的表示,其特征空间平均比原始空间小 50 倍。

应用

我写这篇文章的动机主要是源于 Andrei V. Anghelescu 和 Ilya B. Muchnik 的一篇题为《学习分类中特征选择的组合 PCA 和 SVM 方法》的论文。

通过使用组合主成分分析(cPCA)和组合支持向量机(cSVM ),作者表明,多亏了组合学,在他们的试验中,有可能用小得多的特征空间实现 2%以内的性能

在实现和一些调查之后,这篇论文中有几个重要的见解值得一提。这两种方法遵循相似的模型,包括使用具有特定得分函数的文本的矩形矩阵表示,以便优化结果。虽然每种方法都实现了相同的目标,但它们都适用于不同类型的问题。作者怀疑 cPCA 对图像视觉特别有用,而 cSVM 对任何可以在欧几里得空间中表示的数据都有优势。

包扎

简而言之,这些方法“提供了一种简单的方法来确定数据点和特征可以排序的尺度,从而使线性搜索最优的特征或文档集成为可能”——这允许更有效的特征选择。

在这样做的过程中,组合方法可以帮助解决文本分类中关于高维度的问题,在这种情况下,准确性往往会随着维度的增加而迅速下降。

这不仅有效地展示了如何提高文本分类的效率,还展示了组合学在数据科学领域的广泛应用。很明显,对数据驱动的问题应用组合范围通常有很大的好处。

请在家里随意尝试,并使用您在那门被遗忘的数学课中学到的知识来提高您在机器学习方面的成功!

感谢阅读!如果你喜欢这篇文章,请继续向鼓掌按钮展示你的爱。对更多的帖子感兴趣吗?请务必关注我并订阅下面的我的简讯以接收任何新内容。更多关于我和我在做什么,请查看我的网站

运气在扑克中的作用:玩的手数如何影响方差

原文:https://towardsdatascience.com/the-role-of-luck-in-poker-how-the-number-of-hands-played-affects-the-variance-51f561a3c9f1?source=collection_archive---------1-----------------------

是什么让扑克同时最惊险和痛苦?方差。每个人都可以成为赢家。但是能持续多久呢?

几个月前,我和我的牌友们进行了一场辩论:“随着手牌样本的增加,方差会发生什么变化?”答案对每个人来说都是显而易见的,但令人惊讶的是——不同。每个人的论点、推理和逻辑似乎都是合法的。但是统计可能很棘手,有时,就像在扑克中,你的“感觉”是不够的。所以我,这个小组里最书呆子的家伙,决定炫耀一下。

基础

一位智者曾经说过:“一半的答案存在于一个精心设计的问题中。”。如果我是第一个说出来的,那我就是那个聪明人。所以,我们来分解一下。首先,方差的定义:“方差是一个数字,它衡量一组数字围绕均值分布的程度。”一个更有用的术语是标准差,它是方差的平方根。两者都代表你的扑克成绩有多好。但是标准差可以告诉你更多的东西。让我们来看一个扑克的例子。一个英雄玩期望值为 0(EV)的游戏,每 100 手牌的标准差为 100 倍大盲注(无限注德州扑克 6 人现金游戏的常见标准差)。他的技能水平(0 EV)将在整个帖子中保持不变。由于这一确切的标准差,他的资金在 100 手牌后有 68%的机会会发生不到 100 倍大盲注的变化。但是如果英雄玩了不同数量的手牌会怎么样呢?

赢款的差异

让我们从最明显的开始,赢款的方差。它告诉你在大盲注或金钱方面你可以预期有多少波动。但是,随着玩的牌越多,它是变得越小还是越大呢?为自己考虑,但要小心。你的农民逻辑会被女人的变化打败。这次你不能怪她。

这里有七个不同的英雄通过 100k 手样品赢得的模拟图。为了让这些图表更容易理解,你可以把它们想象成技能水平完全相同的玩家的图表。

Graph 1

有点难以置信,那些都是 0 EV 玩家的模拟图。如你所见,线条越来越分散。这意味着更大的方差和标准差。如果你仍然有“运气会在一天结束时抵消”这样的想法,让我给你看另一个图表。假设英雄玩 1k 手牌,在一手牌样本结束时,他赢了一点。然后他又从头开始,做了 2k 手牌。再点。然后是 3k 手,4k,5k…等等,直到 1M 手。以下是他得到的结果:

Graph 2

再来一次,它就分散了。为了让事情更清楚,我甚至展示了获胜的标准差线。它与手数的平方根成正比。标准差的等式等于

在我们的例子中,K 等于 10。例如,如果你的标准差是 85bbs/100hands,那么 K 的值就是 8.5。实际上,你可以从上面的等式中计算出一些有趣而有用的信息。你可以看到任何固定的手样本都有相同的标准差,不管它在图上的位置。

乍一看,这些结果有些难以理解,所以让我们举几个例子,它们具有“逻辑”意义:

  • 你一手牌不能赢一叠以上。多玩几手,就有多赢的可能。微小的部分会增加扩散。
  • 假设你在不完全平坦且有沙子的混凝土上直线滚动一个球。球最终会出界。它形成的线越长,就越有可能远离初始线。最后一张图从鸟瞰的角度展示了这种情况。

在你开始尽可能少玩以降低方差之前,请继续阅读。

胜率的方差

这个案子扭转了整个局面。胜率的定义是大盲注赢款除以玩的手数。考虑到这一点,我们得到一个有点不同的标准差公式:

事实上,事情发生了巨大的变化。随着手动样本的增加,标准差变小了。让我们将赢款除以手数/100,这是我们从图 1 中得到的结果:

Graph 3

胜率越来越接近 0bb/100 手,这是 hero 的正版胜率。图表 2 也是如此:

Graph 4

显然,你玩的牌越多,你的胜率就应该越准确。使用第二个等式,我们可以计算出将标准差降低到 1bb/100 手需要多少手。这意味着,如果你的胜率是 1bb/100 手,你可以 67%确定你的胜率在 0 到 2bb/100 手之间。为此,你需要一百万只手。所以继续努力吧…

结论

理解变化是成为一名优秀扑克玩家的关键因素之一,尤其是因为你的心理游戏。你应该预料到会有不好的事情发生,并有能力面对它们。不要太在意那些扑克软件系列。它们并不像你想象的那样能很好地预测你的技能,即使是 EV 线。请记住,永远不要低估方差和高估你的扑克技巧。我祝你在牌桌上一切顺利。

关于作者

Miha Gazvoda 是一名扑克玩家,他指责 variance 没有成为职业选手。然而,幸运的是,他有足够的技巧成为 2014 年斯洛文尼亚扑克冠军。

原载于 2015 年 9 月 14 日【www.pokerstrategy.com】

机器学习在使电子健康记录物有所值中的作用

原文:https://towardsdatascience.com/the-role-of-machine-learning-in-making-ehrs-worth-it-3d22ece8ede5?source=collection_archive---------6-----------------------

华尔街日报发表的一篇名为“关掉电脑,倾听病人的声音的专栏文章将一个关键的医疗保健问题推到了全国讨论的前沿。医师作者 Caleb Gardner 医学博士和 John Levinson 医学博士描述了医师对糟糕的设计、联邦激励措施和当今电子病历(EMRs)中实施的“一刀切的医疗实践规则”的失望。

从一开始,对 EMR 的任何批评的反驳就是,数字健康数据的收集最终将使发现提高医疗质量、防止错误和将资源导向最需要的地方的机会成为可能。毕竟,这是几乎所有后数字化行业的故事。

然而,许多组织正在艰难地认识到,在帮助其他行业从量化和可靠的销售、库存和财务数据中学习方面非常成功的商业智能工具在尝试理解医疗保健的非结构化、稀疏且通常不准确的临床数据方面可能会受到限制。

数据仓库和报告工具——理解其他行业的量化和可靠的销售、库存和财务数据的基础——对于 CMS、ACO、AQC 以及谁知道接下来会有什么要求的过程度量的必要报告是有用的。然而,应该明确的是,这些多年、数百万美元的投资旨在解决付费服务护理的问题:发生了什么,发生在谁身上,何时发生。他们不会开始回答对基于价值的护理最关键的问题:可能会发生什么,发生在谁身上,应该做些什么。

快速发展的分析方法非常适合医疗保健数据,旨在回答基于价值的护理问题。不幸的是,记者和供应商在传达机器学习方法的价值、潜力和本质方面都做得很糟糕。

隐藏在人工智能、大数据、认知计算、数据科学、数据挖掘和机器学习等时髦词汇背后的是一套方法,这些方法已被证明能够回答临床领域中基于价值的护理的“下一步是什么”问题,包括心胸外科、泌尿外科、矫形外科、整形外科、耳鼻喉科、普通外科、移植、创伤和神经外科、癌症预测和预后以及重症监护病房发病率。尽管有超过 20 年的经验证据证明了优越的预测性能,这些方法仍然几乎是学术界的专有财产。

围绕这些方法的花言巧语是模棱两可的,并不是特别有用。要么大数据将在短短几年内治愈癌症,要么临床医生自豪地列出他们不会被虚拟人工智能版本取代的原因。这两本书读起来都很有趣,但都没有抓住利用辛苦输入的数据来更有效地提供护理的直接机会。

更有成效的是将机器学习框定为它实际的样子——一种新兴的工具。像所有工具一样,机器学习有其固有的优点和缺点,应该加以考虑。

赞成一栏是这些方法比传统的风险评分或基于规则的方法考虑更多数据点的能力。对医学来说同样重要的是,基于机器学习的方法不需要数据格式良好或标准化就可以从中学习。结合自然语言处理,机器学习可以考虑临床医生或病例经理的自由文本印象,以预测哪个患者最有可能更快地从关注中受益。像临床护理一样,这些方法通过新的经验进行学习,使洞察力能够根据不断变化的护理提供动态而发展。

举例来说,我工作的组织最近被招募来确定一个健康计划的成员,这些成员在加入一年后最有可能被取消注册。对于承担提供护理的财务责任的组织来说,这是一个特别敏感的损失,因为在第一年要进行大量投资来稳定和维持会员的健康。

使用为采用这些方法而设计的软件,我们使用了 30 种文件类型,从案例管理笔记、索赔到呼叫中心记录。比较一年后退出计划的成员与继续参与计划的成员的所有数据,我们了解到与退出计划最相关的模式。我们的合作伙伴利用这些见解在会员取消注册前主动致电他们。随着他们的呼叫中心采用策略来减少不满意的具体原因,成员想要离开的原因发生了变化。因此,从软件中出现的模式也是如此。

其结果是会员满意度更高,退订率创下历史新低,并以更主动的方式解决会员的问题。这不是治愈癌症的方法,但当一个组织的成功取决于有效利用资源时,这是越来越多需要解决的问题之一。

迄今为止,机器学习的最大限制是不可访问性。与之前的大型机一样,这项新技术一直是专家的专属领域。在大多数应用程序中,每个模型都是使用为数据科学家设计的工具,经过几个月的时间开发出来的。结果是作为建议提供的,而不是随时随地可以插入的 HIPAA 兼容软件。就像计算机的发展一样,所有这一切都将改变。

在阅读了加德纳和莱文森的专栏文章几个小时后,我坐在一位初级保健医生朋友的对面,她结束了一天的实践,列出了最后几个病人。当她奋力通过一个又一个与糖尿病相关的报告要求的筛选时,她的沮丧是显而易见的,这些要求“与保持[她的]患者健康毫无关系。”她对使用其组织的行业领先的电子病历的好处的想法没有加德纳和莱文森博士那么慎重:“我宁愿把我的眼睛戳出来。”

我完全同意加德纳和莱文森医生的观点。答案不是放弃电子系统,而是在电子病历的可用性和它们提供的有价值的信息之间取得平衡。但我从事医疗保健的时间够长了,我知道临床医生不会很快享受到设计良好的电子病历。与此同时,很高兴知道我们不需要等待他们所有的辛勤工作开始产生回报。

Leonard D'Avolio 博士是哈佛大学医学院的助理教授,麻省剑桥大学 Cyft 的联合创始人。@ldavolio

英国皇家学会关于机器学习的报告(2017 年 4 月)

原文:https://towardsdatascience.com/the-royal-society-report-on-machine-learning-april-2017-50e228a6dd0d?source=collection_archive---------3-----------------------

英国皇家学会发起了一项(128 页!)关于机器学习的报告。我仔细阅读了它,并做了一些笔记,其中有一些有用的不同或以有用的方式传达的东西,其他人可能会觉得有用。在这里和那里,我链接了我发现的其他作品,并添加了一些观察。

深闺披露(截至 2017 年 69 日):当我咨询公务员时,我需要对英国临时选举指南特别敏感,该指南涉及可能被视为影响选举的政治动机言论。引用的地方都是逐字逐句地从材料中摘录的,而不是我自己的观点。

“确保为机器学习的安全和快速部署提供尽可能好的环境,对于促进英国的经济增长、福祉和安全,以及释放‘大数据’的价值至关重要。在关键领域采取行动——塑造数据格局、培养技能、支持业务和推进研究——有助于创造这种环境。”

从数据中提取价值

  • 创建支持机器学习的数据环境。英国生物银行是实践中的一个很好的例子。
  • 延长开放数据的生命周期需要开放标准“政府在创建新的开放标准方面发挥着关键作用”

从机器学习中创造价值

  • 学校和大学需要更新,以关注数据技能和研究。【和情商】(T13)。另请参阅 FT.com 的观点,该观点称情商在学校也至关重要。所以我们把情商+数据素养作为最重要的学校技能。
  • “英国的移民方法应该支持英国成为世界上最好的研究和创新场所之一的目标,而机器学习是支持这一目标的一个机会领域”

“世界上几乎 90%的数据估计都是在 最近五年内产生的

“对于公众来说,‘机器学习’这个术语并不突出;皇家学会和益普索莫里调查机构的调查显示,只有 9%的人认识到这一点。然而,许多人熟悉机器学习的具体应用 17,每天都与机器学习系统进行交互。”

人工智能

“人工智能”这个术语缺乏一个被广泛认同的定义 ,但是有不同的描述

  • “[…自动化]我们与人类思维相关的活动,如决策、解决问题、学习等活动…”(Bellman,1978)
  • “创造机器的艺术,这些机器在由人执行时执行需要智能的功能。”(库兹韦尔,1990)
  • “对使感知、推理和行动成为可能的计算的研究。”(温斯顿,1992)
  • 计算机科学的一个分支,研究智能行为的自动化(卢格和斯塔布尔菲尔德,1993)
  • “…致力于使机器智能化的活动,而智能是使一个实体能够在其环境中恰当地、有远见地运行的品质。”

机器学习和人工智能的发展

这里的关键是,自从 50 年代计算机发明以来,人工智能作为一个概念就已经存在了。

下面的图表中唯一需要补充的是,在 2014 年的 图灵测试中,机器人第一次赢得了冠军 ,从那以后图灵奥运会成为“人工智能感知”的首选指标。

现有方法的局限性

大量被人为手工标注的数据。那些有必要规模的人已经做了一些聪明的把戏来解决这个问题:例如,

  • 谷歌在美国的 411 目录服务帮助训练他们的语音识别系统
  • 他们在网络上使用的 reCAPTCHA 系统有助于训练图像识别。

上下文很难建立。对人类来说是“常识”的东西在计算机中没有对等物。又称“帧问题”。

人类善于将想法从一个问题域转移到另一个问题域 。即使有了最新的机器学习技术,这对计算机来说仍然具有挑战性。这里研究的活跃领域叫做迁移学习

机器学习帮助解决的标准问题

中型不提供桌子(!!!HTML 1.0 提供了表格…想想吧…)所以我在下面放了一张图片,在这里做了一个表格

从数据中提取价值

**“世界上 90%的数据是在过去 5 年中创建的。”——尽管 IBM 声称这是过去两年的。报告称每天产生 25 亿 GB,但数据来自 2014 年。该站点有一个实时估算,显示截至 2017 年 4 月 27 日的数字为 28 亿 TB/d(所示的 1000 倍)

“英国已经承诺遵守 G7《开放数据宪章》,该宪章的原则规定,政府数据应默认公开发布,供所有人使用,并以允许自动处理的高质量格式发布”

培养各级技能

数据的作用及其对我们生活的影响将继续在家庭和工作中变得更加普遍,因此需要从小就具备基本的“数据素养”。关闭或重启(2012) 促进了英国学校课程的积极变化“其他学科快速发展的数据科学需求将需要在未来的课程和资格审查中加以考虑”。**

“人们理解他们生活和工作的世界的能力越来越取决于他们对科学思想和相关技术以及社会问题的理解”

Key concepts in machine learning and recommended school age for introduction, paving the way for data literacy

“至少,新获得资格的专业人员应该懂数据,并且能够‘用算法思考’”

“作为一个跨学科的领域,机器学习目前没有得到现有资助模式的良好服务”

**“如果这个领域要以代表广泛利益的方式前进,那么它就需要从广泛的人才库中汲取人才,如果它要避免形成一种研发‘短视’的话。吸引各种各样的人到这个领域,对于提高英国在这个领域的技能基础的整体实力也是至关重要的。”。这是一个很难解决的问题:一般来说,计算机科学已经有很长一段时间了,而且似乎没有太大的变化。目前还不清楚这种吸引力会以何种形式出现。

社会中的机器学习

皇家学会和益普索·莫里调查了 978 名公众。虽然只有 9%的人理解“机器学习”这个术语,但大多数人(89%)认可它的应用。这似乎是合理的:当技术透明时,它就是成功的。

态度: " 这些公开对话中最明确的一个信息是,公众对机器学习没有单一的看法;积极或消极的态度取决于使用机器学习的环境。”

机会

机器学习作为一个品牌依赖于“大数据”,这使得它更容易获得。人们发现的机会总结如下:

  • 更客观
  • 更准确
  • 更有效率
  • 新生物
  • 有助于解决大规模的社会挑战,如人口老龄化

关注的问题和解决这些问题的计划

不过,并不全是彩虹和独角兽,还有一些担忧,我认为所有这些都很合理,但有益的是,报告指出了对所有这些的积极研究:

  • 造成伤害的可能性:解决方案研究包括保证系统将是“稳健的”、强有力的安全证据以及人为监督或最终决策
  • 去技能化和过度依赖机器学习以及由此产生的社会去技能化或降级为利基。这是不可避免的,而且已经发生了 500 年了。在极端情况下,该调查揭示了公众对机器取代工作场所中的人的担忧,以及“改变与个人重要活动的关系:自由或自主的感觉”。对于医护人员来说,强调准确性不是衡量成功的唯一标准*也很重要。人类的同理心和个人参与在健康和社会关怀中尤为重要。*
  • 选择和人类经验的限制:遗漏细微差别解释的风险(只有在数据量和解释能力更大的情况下才有可能)。

关注的背景

调查中人们的关注程度因以下方面而异:

  • “技术使用者的感知意图;
  • 谁是受益人;
  • 使用机器学习而不是其他方法是多么必要;
  • 是否有明显感觉不合适的活动;和
  • 人类是否参与决策。
  • 准确性和错误的后果也是重要的考虑因素。”

“从根本上说,这些公共对话中提出的问题与是否应该实施机器学习技术关系不大,而是如何最好地利用它来造福公众。从具体应用的角度,而不是从宽泛、抽象的原则的角度,更容易做出这种判断。”

数据的使用、隐私和同意

"随着机器学习在这种新环境中投入使用,它重新构建了关于隐私、数据使用以及在信息稀缺环境中设计的治理系统的适用性的现有问题"**

“机器学习进一步动摇了当前‘敏感’或‘个人’和‘非敏感’数据之间的区别:它允许最初看起来无害的数据集被用来从平凡事物中推断出敏感事物。”

“例如,研究表明,可访问的数字记录,如脸书的“赞”,脸书用户通过这些记录表达对社交媒体网站上内容的积极情感,可以用来推断敏感的个人属性。 通过分析用户的脸书喜好,研究人员发现他们可以预测诸如性取向、种族、宗教或政治观点、智力或性别等特征。 虽然默认情况下赞是公开的,但用户并不一定期望这些会泄露更多敏感信息。然而,这些信息现在可以从他们的在线活动,或者一系列组织可以获得的数字记录中预测出来

"在过去,同意被认为是良好数据治理的标志。然而,即使在同意被用作数据使用的“黄金标准”的情况下,这种同意是否是知情的,这一点一点也不清楚。尽管高达 33%的人声称他们通常会阅读网站条款和条件,但服务器端的调查表明,只有 1%的人实际上有…因此需要新的方法来导航关于同意的问题"**

公平和统计刻板印象

“机器学习应用程序可能以两种不同的方式导致偏见或缺乏公平性。

  1. **当机器学习算法继承了存在于训练算法的数据中的主观偏见时。【例如,一个简历库中很少有女性,可能会推断出一个简历库中将来也很少有女性。-J]
  2. **当机器学习算法正确地发现个人的特定属性在预测结果时是有价值的,在社会可能认为使用这样的属性不合适的情况下,可能会出现不同的偏见或不公平的来源",[例如保险费的性别— 这在欧盟现在是非法的,但也可以通过其他参数来推断-J]

可解释性和透明度

具有隐藏层的神经网络也隐藏了它们的推理。对于高影响力的决策,可解释性和透明性对于希望了解原因的用户和希望改进系统的开发人员来说非常重要。

“围绕数据使用的法律框架,即新的《欧洲一般数据保护条例》中隐含了‘解释权’”

“在试图解决透明度问题时,可能需要在准确性和可解释性之间进行权衡。在基本层面上,硬编码的规则更容易解释,但神经网络等更不透明的方法往往更强大,可以产生更准确的结果。透明度和性能之间的权衡在不同的应用中有不同的结果,这就提出了一个问题,即是否需要明确决定优先考虑透明度还是准确性,如果需要,如何以及由谁来决定。”此外,硬编码模型(如传统编程)的构建成本要高得多,因为每个细微之处都必须到位。

有责任

“在公众中,对于“当机器学习‘出错’时,谁应该负责”这个问题,最常见的回答是“操作员和机器为之工作的组织”(32%),尽管这并不构成大多数人的回答,但它显然超过了认为机器本身应该负责的受访者人数(3%)。”— 最后这一点很有趣,因为我自己认为只有当机器意识到其行为的后果*并有足够的感知能力来引导其决策朝着激励而非抑制的方向发展时,该机器本身才应该承担责任。*

解决责任的三种方法:

  • “所谓的 Bolam 测试,或者一个合理的人类专业人士是否会以同样的方式行事;
  • 自动驾驶汽车的严格责任——或无过失或无伤害意图的责任;和
  • 第三者责任,类似于对危险犬的规定。”

与机器学习使用增加相关的潜在社会后果

泡泡/回音室:通过强化现有信仰的强化内容和信息对社会群体进行分层。(例如,参见 WSJ 红色进料,脸书上的蓝色进料)

新的权力不对称:隐私与访问。 “新的权力不对称可能被创造出来;“浮士德协定”,个人自愿放弃隐私,以换取效率、便利或获得服务的需要,而不给予知情同意”

人机互动:随着这变得越来越普遍,它开始影响社会规范,比如 Alexa 不要求孩子们说请或者谢谢

机器学习的未来

可能要在以后总结。

查看完整报告(PDF,128 页)

预测热门歌曲的科学!

原文:https://towardsdatascience.com/the-science-of-predicting-a-hit-song-7c42a522d652?source=collection_archive---------1-----------------------

F 或者很多全职音乐艺人,拿到高排行榜位置就是他们的饭票;为了赚钱,他们需要在行业中有突出的地位,图表位置是显示他们有多突出的一种明确方式。每年年底,Spotify 都会编辑一份当年最常播放的歌曲列表。今年的播放列表包括 100 首歌曲。问题是:这些顶级歌曲有什么共同点?人们为什么喜欢它们?

要回答这个问题,我必须借助数据科学!我使用了 spotify 的 2017 年热门歌曲列表数据集:(https://github . com/kayguxe/hit _ songs _ data _ science/blob/master/featuresdf . CSV)每首歌曲的音频特征都是使用 Spotify Web API 提取的。

可跳舞性:

平均值为 0.697,很明显大多数顶级曲目都有很高的可跳性评级。在八十年代以前,一首歌曲的可舞性与其流行潜力并不十分相关。从那时起,适合跳舞的歌曲更有可能成为热门歌曲。这显示了音乐产业发展的程度。

音乐键和模式:

music keys count in 2017 top tracks list

顶级曲目中最常见的基调是 C♯/D♭.那么这一切意味着什么呢?嗯,在某种程度上,它揭示了我们在音乐中更常见的声音类型:勇敢、乐观的大调往往会击败忧郁的小调。这也揭示了 Spotify 大部分收藏(更倾向于西方音乐)的来源。

拍子

节奏的平均值为每分钟 119.202 次,与八十年代的平均节奏(每分钟 70-89 次)相比,2017 年热门歌曲的节奏非常快。

效价

心理学家用“化合价”这个词来描述某样东西是否有可能让某人感到快乐(正化合价)或悲伤(负化合价)。这有点像这个词的电子意义。

快乐和悲伤的歌曲相当均匀地分布在 0.517。
我们对音乐的反应是情绪化的。有些让我们快乐,有些让我们悲伤,歌曲的范围介于快乐和悲伤之间。

音量

平均而言,排行榜上的所有歌曲都很吵。此外,点击率相对高于那些在排行榜底部徘徊的歌曲。

持续时间

持续时间的平均值是 218387 毫秒,大约是 3 分 38 秒。一篇连线文章提出,20 世纪 60 年代之前流行歌曲的时间长度是基于留声机的。起初,这些留声机是圆柱形的。后来,它们以 10 英寸磁盘的形式出现。这些磁盘以每分钟 78 转的速度旋转,可以存储大约 3 分钟的音乐。这也是到目前为止正常的歌曲长度。

[## 为什么广播里的歌曲长度都差不多?

这实际上是我的一个孩子提出的问题。“为什么这些歌的长度都差不多?怎么会有…

www.wired.com](https://www.wired.com/2014/07/why-are-songs-on-the-radio-about-the-same-length/)

结论

音频特性是艺术家在发行前测试其歌曲成功与否的一项重要措施。然而,如果要正确评估诸如响度之类的音频特性,那么在正确评估歌曲之前,似乎需要对歌曲进行完整的编写、制作、混音和掌握,这必然会花费时间、金钱和精力。

但有一点是明确的,即研究领域不会有任何进展,尤其是随着音乐人工智能的进步。众所周知,如今越来越多的热门歌曲是由那些知道如何给公众提供数据所显示的他们想要的东西的制作人根据一个经过时间考验的公式制作出来的。对照成功的数学方程式测试配方,并最终使用算法生成热门歌曲,是热门歌曲制作工厂合乎逻辑的下一步。

对范畴相关的探索

原文:https://towardsdatascience.com/the-search-for-categorical-correlation-a1cf7f1888c9?source=collection_archive---------2-----------------------

本帖中出现的所有代码都是我的 GitHub 页面 上的 [dython](https://github.com/shakedzy/dython) 库的一部分。
如有任何代码相关问题,请在本库的 GitHub 页面
开题

不久前,我在 Kaggle 上偶然发现了一个蘑菇数据集,其中收集了 20 多种不同特征的食用和有毒蘑菇,并进行了分类。寻找可能指出吃随机蘑菇有多安全的模式的想法似乎是一个不错的挑战——我甚至发现自己在我后来出版的的内核后面创造了一个完整的故事情节——一个在森林里迷路的人。

在浏览其他用户的内核时,很容易看到随机森林和其他简单的方法无需太多努力就可以达到极高的准确性,所以我也认为没有理由这样做——我决定看看我是否可以自己找到哪些功能指向我可以安全食用的蘑菇,如果我需要的话。我意识到我实际上在寻找的是特征和蘑菇类型之间的相关性,但这是一个问题,因为特征都是分类的,在这种情况下相关性没有定义。

什么是相关性?

在我们讨论相关性不是什么之前,我们先来讨论它是什么。在人类语言中,相关性是对两个特征如何相关的度量;就像一年中的月份与日平均温度相关,一天中的时间与户外的光照量相关。从数学上来说,通常使用的相关性定义是数据样本的 Pearson's R (产生范围为[-11]的值):

Pearson’s R for data sample. Taken from Wikipedia

但是,从上面的等式可以看出,当数据是分类的时,皮尔逊的 R 没有被定义;让我们假设 x 是一个颜色特征——如何从颜色的平均值中减去黄色?我们需要别的东西。

处理这种情况的一个常见选项是首先使用一次性编码,并将每个分类特征的每个可能选项分解为 0 或 1 特征。这将允许使用相关性,但它很容易变得过于复杂而无法分析。例如,one-hot 编码将蘑菇数据集的 22 个分类特征转换为 112 个特征的数据集,当将相关表绘制为热图时,我们会得到如下结果:

Correlation of the mushrooms data-set, transformed using one-hot encoding

这不是可以轻易用来获得新见解的东西。所以我们还需要别的东西。

直言不讳

我们需要的是看起来像相关,但对分类值有效的东西——或者更正式地说,我们在寻找两个分类特征之间关联的度量。介绍:克莱默 V 。它是基于皮尔森卡方检验的一个名义上的变化,并且有一些内在的好处:

  1. 与相关类似,输出在[0,1]的范围内,其中 0 表示没有关联,1 表示完全关联。(与相关性不同,不存在负值,因为不存在负相关这种东西。要么有,要么没有)
  2. 像相关性一样,克莱姆的 V 是对称的——它对交换 xy 不敏感

更好的是——有人已经将其实现为一个 Python 函数。这是我编辑过的原文:

**def** cramers_v(x, y):confusion_matrix = pd.crosstab(x,y)
    chi2 = ss.chi2_contingency(confusion_matrix)[0]
    n = confusion_matrix.sum().sum()
    phi2 = chi2/n
    r,k = confusion_matrix.shape
    phi2corr = max(0, phi2-((k-1)*(r-1))/(n-1))
    rcorr = r-((r-1)**2)/(n-1)
    kcorr = k-((k-1)**2)/(n-1)
    **return** np.sqrt(phi2corr/min((kcorr-1),(rcorr-1)))

当应用于蘑菇数据集时,它看起来像这样:

Cramer’s V calculated for the mushrooms data-set

那不是很漂亮吗?通过观察这张热图,我们可以看到气味与蘑菇的(可食用/有毒)高度相关,并且鳃附着特征与其他三种特征高度相关。

对称的诅咒

思考克莱姆 V 的输出,我意识到由于它的对称性,我正在失去有价值的信息。为了更好地证明这一点,请考虑以下数据集:

我们可以看到,如果已知 x 的值,仍然无法确定 y 的值,但是如果已知 y 的值——那么就保证了 x 的值。当使用克莱姆的 V 时,由于它的对称性,这些有价值的信息丢失了,所以为了保存它,我们需要一个非对称的分类特征之间关联的度量。这正是泰尔的 U。

泰尔的 U ,也称为不确定系数,是基于 xy — 之间的条件熵或者用人类的语言来说,给定 x 的值, y 有多少种可能的状态,以及它们出现的频率。就像克莱姆的 V 一样,输出值在[0,1]的范围内,与之前的解释相同——但与克莱姆的 V 不同,它是不对称的,意思是 U(x,y)U(y,x) (而 V(x,y)=V(y,x) ,其中 V 是克莱姆的 V ) 。在上面这个简单的例子中使用 Theil 的 U 会让我们发现,知道 y 就意味着我们知道 x ,反之则不然。

将公式实现为 Python 函数产生了这个(关于 conditional_entropy 函数的完整代码可以在我的 Github 页面上找到——链接在帖子顶部):

**def** theils_u(x, y):s_xy = conditional_entropy(x,y)
    x_counter = Counter(x)
    total_occurrences = sum(x_counter.values())
    p_x = list(map(**lambda** n: n/total_occurrences, x_counter.values()))
    s_x = ss.entropy(p_x)
    **if** s_x == 0:
        **return** 1
    **else**:
        **return** (s_x - s_xy) / s_x

将此应用于蘑菇数据集:

Theil’s U calculated for the mushrooms data-set

这个新的计算让我们从克莱姆的 V 中看到了更多的关联——例如,我们现在看到,虽然知道气味比蘑菇的种类提供了很多信息,但反过来却不是这样。泰尔的 U 确实给了我们更多关于不同特征之间真实关系的信息。

当我们把东西混在一起时会发生什么?

因此,现在我们有了一种方法来衡量两个连续特征之间的相关性,以及两种方法来衡量两个分类特征之间的关联。但是一对连续特征和一个分类特征呢?为此,我们可以使用相关比率(通常使用希腊字母 eta 来标记)。数学上定义为每个类别均值的加权方差除以所有样本的方差;在人类的语言中,相关比回答了下面这个问题:给定一个连续数,你能多好地知道它属于哪一类?就像我们之前看到的两个系数一样,这里的输出也在[0,1]的范围内。

Python 中的实现如下所示:

**def** correlation_ratio(categories, measurements):
    fcat, _ = pd.factorize(categories)
    cat_num = np.max(fcat)+1
    y_avg_array = np.zeros(cat_num)
    n_array = np.zeros(cat_num)
    **for** i **in** range(0,cat_num):
        cat_measures = measurements[np.argwhere(fcat == i).flatten()]
        n_array[i] = len(cat_measures)
        y_avg_array[i] = np.average(cat_measures)
    y_total_avg = np.sum(np.multiply(y_avg_array,n_array))/np.sum(n_array)
    numerator = np.sum(np.multiply(n_array,np.power(np.subtract(y_avg_array,y_total_avg),2)))
    denominator = np.sum(np.power(np.subtract(measurements,y_total_avg),2))
    **if** numerator == 0:
        eta = 0.0
    **else**:
        eta = np.sqrt(numerator/denominator)
    **return** eta

最后的话

我相信我可以宣布,对分类特征的关联度量的研究是成功的,特别是当某些要求——例如对非对称度量的需要——在开始时没有被预期到。在探索包含分类特征的数据集时,这三个新指标非常有用,并帮助我对我探索的数据集获得更多见解。我只能希望这能像对我一样对你有用,如果没有的话,至少你现在知道如何识别可食用的蘑菇了。

实验的第二个幽灵:基于会话的度量的谬误

原文:https://towardsdatascience.com/the-second-ghost-of-experimentation-the-fallacy-of-session-based-metrics-fb65006d30ff?source=collection_archive---------2-----------------------

利齐·埃德里,科林·麦克法兰和汤姆·奥利弗

The second Ghost of Experimentation: The fallacy of session based metrics

👻这篇文章是探索导致追逐统计幽灵的实验从业者普遍误解的系列文章的一部分。

标准统计检验允许我们判断 A/B 检验的结果是否显著(不太可能仅仅是由于偶然变化)或者不依赖于每个“观察”是独立的假设。对于会话级指标,如每个会话的转换,观察单位是会话。

然而,在 A/B 测试中,通常将用户分配到 A 组或 B 组,以避免同一个人同时看到两个版本,扰乱用户体验。这样会话就不是独立的了,因为一个用户可以有多个会话,一个会话中发生的事情会影响或改变我们对用户其他会话中发生的事情的预期。例如,在 Skyscanner 中,我们发现用户会话越多,就越有可能转化:

但是,如果用户使用多个会话进行会话,则单个会话不太可能被转换。

会话的这种非独立性非常重要,因为这意味着如果我们随机选取一组用户,并查看他们所有会话中已转换的部分,我们预计平均而言,与我们随机选取每个会话相比,结果对真实会话转换率的估计不太准确。举一个极端的例子,如果每个用户有 1000 个会话,我们选择五个用户,那么最终的平均会话转换率将在很大程度上取决于我们选择哪五个用户。然而,如果我们随机选择 5000 个会话,结果将更能代表真实的总体平均值,因为我们已经选择了 5000 个会话,而不是 5 个随机选择。

我们在 Skyscanner 上模拟了这如何影响我们的转化率估计,方法是多次选择会话组,并查看平均会话转化率的变化。在第一个例子中,我们通过在 28 天的时间内随机选择(替换)500,000 个用户及其所有相关会话来模拟实验设置。下面的绿色直方图显示了 10,000 个随机组的平均会话转换率的分布。在第二个实例(蓝色直方图)中,我们独立处理会话,并从同一时间段随机选择相同数量的会话,而不管是哪个用户创建的。

这里的虚线表示当样本中的每个观察值独立且同分布( i.i.d. )时的理论方差,这是普通统计检验(χ2 检验、z 检验、t 检验等)中内置的假设。).当我们将会话视为独立时,它就像预期的那样严格遵循这个假设的方差。然而,当我们随机选择用户而不是会话时,正如我们在 A/B 测试中基本上所做的那样,方差比显著性计算中假设的要大——它可能看起来是一个小差异,但当我们选择用户而不是会话时,我们根据理论称之为“不太可能”的结果(>平均值的 2σ)实际上是三倍常见。

其结果是,当应用于会话级度量时,标准统计测试不可靠,并导致更多的误报。我们可以通过模拟 AA 测试(两组用户看到完全相同的东西的实验)来估计这对实验结果的影响。当我们使用 95%的置信度时,我们预计只有 5%的测试会出现假阳性。例如,当没有真实效应时,如 AA 测试的情况,我们应该只推断 5%的显著差异。

Skewed!

左边的图显示了从一周的 Skyscanner 数据中计算的 p 值,随机选择用户组成两组,从两组的会话转换率之间的差异计算 p 值,然后多次重复该过程。如本系列的第一个幽灵所示,p 值应该是均匀分布的,因为我们知道没有真正的影响,但是它们偏向低 p,其中大约 10%的 p 值为 0.05,所以我们 95%的置信度实际上只是 90%的置信度。

Uniform

以上都不是用户级指标的问题,因为用户是独立的——他们被随机分配到 A 或 B,我们不希望一个用户的行为影响另一个用户的行为。如果我们看一个用户级的指标,比如转化的用户比例,我们得到了预期的结果;从同一周的数据中,我们看到 5%的模拟 AA 测试显示出显著差异。

在我们的例子中,实验时间越长,影响越大,因为每个用户的平均会话数更高。在不同的时间范围内重复上述过程,我们可以看到假阳性率——被发现有意义的 AA 实验的百分比——如何取决于实验的长度。正如您在下图中看到的,当使用 95%的置信度时,为期一个月的会话转化率实验的假阳性率将超过 15%。这意味着我们实际上只能达到 85%的置信度,并且发现倍于预期的假阳性!

This ghost could give us three times as many false positives

如何才能避免被这个统计幽灵抓到?

尽管我们在这里关注的是会话级指标,但是每当你试图测量一个速率指标时,这个问题就会发生,这个指标是由你随机选择的以外的东西定义的。例如,如果你随机选择用户,点击率(总点击量/总浏览量),或者每页面浏览量,每点击量,或者每用户日指标都会受到影响。我们认为有三种选择可以避免被这个统计幽灵所迷惑:

a)面向用户指标

如果你对用户进行随机选择,那么在大多数情况下,使用用户级别的度量标准将满足常见的统计显著性测试的假设,并避免上面看到的虚高的假阳性率。考虑到当分析单位(分母)不是随机化单位时,对转换率等比率指标的解释可能是不明确的,因此向用户级指标的转变在任何情况下都可能是有益的。例如,会话级转换率的增加可以指示改善的、减弱的或未改变的用户体验,这取决于分子(转换)或分母(会话)或两者是否已经改变。

b)应用适当的修正

在有必要测量一个指标的情况下,有一些方法可以估计真实的方差并计算出精确的 p 值。你可以在微软团队这里这里找到关于这些方法的更详尽的讨论。常见的技术有 bootstrapping 或“delta method”,但是这些方法在计算上可能很昂贵,因为它们需要处理数据的全部分布,而不是简单地处理聚合平均值,否则这些平均值就足以满足二项式检验的要求。

c)预计会有更多的误报

最后,如果您没有执行方差计算和实施上述校正之一的基础设施或意愿,您至少应该意识到,根据您选择的显著性水平,您将具有比预期更高的假阳性率。我们建议您查看 AA 测试,以充分了解您的指标是如何受到影响的,因为这高度依赖于所讨论的数据和指标。

👻更:追统计鬼

与我们合作

我们在 Skyscanner 以不同的方式做事,我们正在全球办事处寻找更多的工程团队成员。看看我们的 Skyscanner 职位寻找更多空缺。

Work with us

强化学习背后的秘密

原文:https://towardsdatascience.com/the-secrets-behind-reinforcement-learning-25b87befb2d3?source=collection_archive---------9-----------------------

玩 Dota2 的机器人,打败世界上最好的围棋选手的人工智能,擅长毁灭的计算机。这是怎么回事?AI 社区一直这么忙着玩游戏是有原因的吗?

让我这么说吧。如果你想让机器人学会走路,你会怎么做?你造了一个,编了程序,然后在纽约的大街上发布?当然不是。你建立一个模拟,一个游戏,你用那个虚拟空间教它如何在它周围移动。零成本,零风险。这就是为什么游戏在研究领域如此有用。但是你怎么教它走路呢?答案是今天文章的主题,也可能是当时最令人兴奋的机器学习领域:

你可能知道有两种类型的机器学习。有人监督和无人监督。嗯,还有第三种,叫强化学习。RL 可以说是 ML 中最难理解的领域,因为有太多太多的事情同时发生。我会尽可能地简化,因为这是一个非常惊人的领域,你肯定应该了解它。但是让我警告你。它涉及到复杂的思维,需要 100%的专注去把握。和一些数学。所以,深呼吸,让我们开始吧:

马尔可夫决策过程

强化学习是一个反复试验的过程,其中 AI ( 代理)在环境中执行若干动作。每个独特的时刻,代理都有一个状态,并从这个给定的状态到一个新的状态。这个特殊的行为可能会有奖励。因此,我们可以说每一个学习时期(或事件)都可以表示为一系列的状态、行动和回报。每个状态仅依赖于先前的状态和动作,并且由于环境本身是随机的(我们不知道下一个状态),这个过程满足马尔可夫性质。马尔可夫性质表明,过程未来状态的条件概率分布只取决于当前状态,而不取决于之前的事件序列。整个过程被称为马尔可夫决策过程。马尔可夫决策过程是主要的数学工具,我们用它来构建几乎所有的 RL 问题,这种方法很容易研究和试验不同的解决方案。

让我们看一个使用超级马里奥的真实例子。在这种情况下:

  • 代理人当然是受人爱戴的马里奥
  • 状态就是当前的情况(比如说我们屏幕的框架)
  • 动作有:向左、向右移动和跳跃
  • 环境是每个层次的虚拟世界;
  • 奖励就是马里奥是死是活。

好了,我们已经恰当地定义了问题。下一步是什么?我们需要一个解决方案。但首先,我们需要一种方法来评估解决方案有多好?

我想说的是每集的奖励是不够的。想象一个马里奥游戏,其中马里奥由代理控制。他在整个关卡中不断获得正面奖励,但就在最后一面旗帜前,他被一个锤子兄弟杀死了(我讨厌那些家伙)。你看,每个人的奖励都不足以让我们赢得比赛。我们需要一个能抓住整体水平的奖励。这就是贴现的累积预期回报的期限发挥作用的地方。

它无非是所有奖励的总和减去一个因子 gamma,其中 gamma 属于[0,1]。折扣是必不可少的,因为回报往往在开始时比结束时更重要。这很有道理。

接下来就是解决问题了。为了做到这一点,我们定义学习任务的目标是:代理人需要学习在给定的状态下执行哪一个动作,使累积奖励随时间最大化。或者学习策略π: S- > A. 策略只是状态和动作之间的映射。

综上所述,我们使用以下等式:

其中 V ( )是一项政策(π)从一个州(s)获得的预期长期回报。

你还和我在一起吗?如果是的话,让我们暂停 5 秒钟,因为这有点让人不知所措:

12345

既然我们恢复了头脑清醒,让我们回顾一下。我们将问题定义为马尔可夫决策过程,我们的目标是学习最佳策略或最佳价值。我们如何进行?

我们需要一个算法(谢谢你,夏洛克……)

好吧,这些年来有大量开发的 RL 算法。每种算法关注的都是不同的东西,无论是价值最大化还是策略最大化或者两者都是。是否使用模型(如神经网络)来模拟环境。它是否会捕捉到每一步或最后的回报。正如你所猜测的,将所有这些算法分类并不容易,但这正是我要做的。

如您所见,我们可以将 RL 算法分为两大类:基于模型的和无模型的:

基于模型的

这些算法旨在从其观察中了解环境如何工作(其动力学),然后使用该模型规划解决方案。当他们有一个模型时,他们使用一些计划方法来寻找最佳策略。众所周知,它们是数据高效的,但是当状态空间太大时,它们就失效了。尝试建立一个基于模型的算法来下围棋。不会的。

动态规划方法是基于模型的方法的一个例子,因为它们需要环境的完整知识,例如转移概率和回报。

无模型

无模型算法不需要学习环境和存储所有状态和动作的组合。根据培训的最终目标,可以分为两类。

基于策略的方法试图找到最优策略,无论它是随机的还是确定的。像策略梯度和加强算法属于这一类。它们的优点是在高维或连续的作用空间上有更好的收敛性和有效性。

基于策略的方法本质上是一个优化问题,在这里我们找到一个策略函数的最大值。这就是为什么我们也使用像进化策略和爬山这样的算法。

基于价值的方法则相反,试图找到最优价值。这一类别的很大一部分是一个称为 Q-learning 的算法家族,它学习优化 Q 值。我计划在下一篇文章中彻底分析 Q-learning,因为它是强化学习的一个重要方面。其他算法涉及 SARSA 和值迭代。

在策略和基于价值的方法的交叉点,我们发现了行动者-批评家方法,其目标是优化策略和价值函数。

现在是最酷的部分。在过去的几年里,镇上出现了一个新人。不可避免地会影响和增强所有现有的解决强化学习的方法。我相信你猜到了。深度学习。因此,我们有了一个新的术语来代表所有这些新的研究想法。

深度强化学习

深度神经网络已经被用于对环境的动态进行建模(基于模式)、增强策略搜索(基于策略)以及逼近价值函数(基于价值)。对最后一个(这是我最喜欢的)的研究产生了一个名为 Deep Q Network 的模型,该模型及其许多改进促成了该领域一些最惊人的突破(以雅达利为例)。更让你兴奋的是,我们不仅使用简单的神经网络,还使用卷积、递归和许多其他网络。

好了,我觉得第一次接触强化学习就够了。我只是想给你整个想法背后的基础,并给你一个这些年来实现的所有重要技术的概述。同时,也给你一个这个领域未来发展的提示。

强化学习在工业和研究中都有应用。仅举几个例子:机器人控制、优化化学反应、推荐系统、广告、产品设计、供应链优化、股票交易。我可以永远继续下去。

这可能是人工智能目前最令人兴奋的领域,在我看来,它拥有一切权利。

这是一系列帖子中的第一篇,我们将揭开强化学习的秘密,并试图解释所有不同算法背后的直觉和数学。主要焦点将是深度学习如何被用来大大增强现有技术,以及它如何在短短几年内带来革命性的结果。

下一次,我们将深入 Q 学习,贝尔曼方程,并解释为什么 2015 年提出的深度 Q 网络打开了人工智能新时代的大门。

直到我的下一篇文章,敬请关注。

如果您有任何想法、评论、问题或者您只想了解我的最新内容,请随时在LinkedinTwitterinsta gramGithub或在我的

要阅读整个深度强化学习课程,学习所有你需要了解的人工智能知识,请前往此处

原载于 2018 年 9 月 23 日sergioskar . github . io

基因组的形状:用拓扑数据分析超越双螺旋

原文:https://towardsdatascience.com/the-shape-of-the-genome-going-beyond-the-double-helix-with-topological-data-analysis-29021b860ebc?source=collection_archive---------5-----------------------

这篇原创的博客最早出现在 2017 年的 Ayasdi 网站上。

在科学领域,或者说整个 20 世纪,最具标志性的形状之一是双螺旋。

1953 年,弗朗西斯·克里克和詹姆斯·沃森发现了 DNA 的形状(归功于莫里斯·威尔金斯和罗莎琳德·富兰克林),这是理解人类基因组的一个重要里程碑,也是一些非凡研究的起点。

从我们的角度来看,值得注意的是使用拓扑数据分析研究“组学”数据集的合作者数量。在这篇文章中,我们引用了一些 TDA 最近发表的突破性发现。

我们在哥伦比亚大学的合作者刚刚在自然遗传学发表了一篇论文,题为“时空基因组架构为胶质母细胞瘤(GBM)的精确肿瘤学提供信息”这篇论文使用我们的软件观察了 52 个个体的基因组和表达谱。他们发现,来自相同肿瘤块的样本共享基因组和表达特征,而地理上分离的多灶性肿瘤和/或长期复发性肿瘤来自不同的克隆。这些发现可以为 GBM 患者的靶向治疗干预提供信息,有可能通过基因组特征实现癌症的精确药物治疗。

UCSF 几周前刚刚发表了一篇论文,题为“在 PLOS 一中使用拓扑数据分析揭示创伤性脑损伤中精确的表型生物标记关联”在这里,该团队再次使用 TDA 揭示了数据驱动的患者结果模式,以确定潜在的康复生物标志物。使用更传统的单变量统计检验方法,这可以显著预测创伤性脑损伤后患者的预后恢复。这是我们与 UCSF 合作的第二份出版物。这些分析可能为 TBI 患者的未来临床试验中的患者分层和治疗计划提供一种可靠的方法。

stowers Institute of Medical Research 上个月刚刚在 Nature Scientific Reports 发表了一篇名为《扰动蛋白质相互作用网络中拓扑网络模块的识别》的论文。这是我们与 Stowers 合作的第三份出版物( PLOS 报纸EMBO 报道)。斯托斯的科学家们确定了拓扑网络模块,这些模块由在网络中特定位置发现的具有共享属性的蛋白质组成。生物网络由功能模块组成,然而识别和表征这些模块是困难的。第一作者 Mihaela Sardiu 的机场类比非常贴切,“把蛋白质想象成轴辐系统中的机场。该系统在其正常状态下以一种方式工作。但是当一场暴风雪关闭了一个主要的枢纽会发生什么呢?网络的一部分受到影响。网络中某个部分的变化不仅会影响该部分,还会影响周围的部分。”随着更多受干扰的蛋白质相互作用网络变得可用,用像我们这样的高级数学工具分析这些数据集可能会为癌症等疾病的研究提供新的见解&其他人类遗传疾病,其中蛋白质相互作用网络因化疗或固有疾病本身而改变。通过研究蛋白质及其环境,研究人员希望深入了解广泛的生物功能,包括耐药性和导致癌症的突变。

我们在这方面的工作可以追溯到几年前。

例如,在 2016 年,欧洲医学研究联盟 UBIOPRED(呼吸疾病结果预测中的无偏生物标志物)使用我们的软件发现了 1700 个基因签名,以有意义地区分严重哮喘与非哮喘和轻中度哮喘。通过对哮喘人群进行细分,研究人员希望为对治疗有反应的患者开发有针对性的治疗方法。这种疗法在治疗只涉及少量基因的疾病方面一直很有效。开发针对哮喘等涉及成百上千个基因的疾病的靶向药物更具挑战性。这项研究发表在美国呼吸重症医学杂志上,包括 11 个欧洲国家 16 个地点的 610 名患者,补充了之前发表在过敏和临床免疫学杂志上的两篇论文。

几年来,斯坦福大学的大卫·施奈德已经将 TDA 用于复杂的疾病康复领域。在 2016 年发表的一篇论文中,该团队使用我们的软件复制了感染疟原虫的小鼠和人类在转录阶段空间中从健康状态到患病状态,再回到健康状态的圆形轨迹。

2015 年,西奈山的一个团队使用 Ayasdi 的软件探索了 11210 名二型糖尿病患者的表型空间,并确定了 3 个以前没有报道过的具有不同遗传和疾病关联的患者亚组。这是主流新闻,被快速公司采用,并成为科学的封面。

在 2015 年之前有几十篇论文,但有几篇值得注意,包括病毒进化的拓扑结构,来自哥伦比亚的团队提出使用遗传相空间的持续同源性来研究网状进化,并将这一想法应用于病毒的重配和重组。本质上是“进化中的革命”这是 TDA 将现实世界数据中的相关结构可视化的另一个例子,这是经典技术看不到的。数学生物学按照达尔文的生命树模拟了进化。也就是说,进化网络是树状的,在模拟时间进化的基础网络中没有任何循环。这篇论文表明,这种循环存在于真实数据中,TDA 需要找到并理解它们。这是这种结构存在的第一次严格和系统的确立——现在很明显,这是一种普遍存在的现象。

最后,来自 Nicolau 等人的一篇论文于 2011 年在 PNAS 发表,详细描述了该团队如何使用 TDA 构建乳腺癌肿瘤转录相空间的低维拓扑表示,确定了一组先前未报告的具有良好预后和独特分子签名的患者。

如果你感兴趣,你可以在系统生物学最新观点中找到我们的哥伦比亚合作者引用这些突破性论文的评论论文。

在激动人心的遗传学领域,我们将有更多的顶级论文发表!敬请关注。

要成为合作者,请发邮件给我们,我们的名字是collaborations@ayasdi.com

人工智能的短期伦理关注

原文:https://towardsdatascience.com/the-short-term-ethical-concerns-of-ai-c201c03bc0ac?source=collection_archive---------8-----------------------

本文是关于人工智能引起的短期和长期伦理问题系列文章的一部分。如果你对 AI 有技术上的理解,一定要跳过前两部分。

围绕人工智能突破的炒作一直让我们陷入歇斯底里,这提醒我们,我们正处于将我们所关心的一切都输给机器的边缘。从暗示机器已经发展出自己的语言的文章,到受流行文化启发的对人工智能危险的描述,我们正在慢慢失去从虚构中过滤事实的能力,看不到噪音中的信号。这篇文章绝不是人工智能及其进展所引发的所有伦理问题的详尽清单,而是正确定义人工智能是什么、不是什么的入门读物,以及对算法给我们的劳动力市场、公民自由和政治带来的一些短期缺陷和危险的务实审视。

狭义人工智能 vs 人工广义智能

为了全面剖析人工智能广泛的伦理问题以及这个领域是如何发展的,对人工智能有一个正确的理解是必不可少的。人工智能(以下简称 AI) 是一个计算机系统,它可以执行通常留给人类认知的任务。这些任务的范围可以从狭义的任务到理论上更广义的任务。狭义人工智能(Narrow AI),是智能系统在狭窄领域和用例中的应用,如下棋、驾驶汽车和在 X 射线上识别癌症。举个狭义 AI 的具体例子, Waymo 的自动驾驶汽车系统可能在驾驶汽车方面很优秀,但它永远不会开飞机,也不会下棋。或者,广义人工智能(将被称为 AGI ) 是一个可以完成无数任务的人工智能系统。需要注意的是,AGI 系统并不存在(还没有),今天所有的人工智能应用都被认为是狭义的。我们已经获得的最接近某种形式的普通智能的东西是 Deepmind 的 AlphaZero,它能够在没有任何事先指令的情况下征服围棋、象棋和松木游戏。我们对 AGI 的概念化,无论是关于如何到达那里,还是它广泛的伦理问题,仍然是基于理论的。然而,这是一个至关重要的研究领域,因为强大的 AGI,没有正确的价值取向(在未来的博客文章中会有更多关于价值取向的内容) 有能力从根本上改变我们生活的世界。

人工智能技术前景

除了将人工智能划分为狭义的人工智能和 AGI,对当前人工智能应用的技术前景有一个模糊的理解是值得的。最近,流行媒体一直在交替使用诸如、【人工智能】、、【深度学习】、等术语。然而,为了更清楚地理解人工智能中的伦理问题,必须区分这些术语。我们可以将这三个术语视为同心圆,人工智能包含机器学习,机器学习包含深度学习。

机器学习围绕着创建可以从大型数据集学习有用模式的系统,并因此提供有用的见解。机器学习本身分为三个主要类别——第一个是监督学习,它需要创建理解一组数据点(输入)和标签(输出)之间关系的系统,从而在未标记的数据点上提供结果。例子包括对借款人是否会拖欠贷款进行分类的系统,预测未来股票价格的系统等。或者,无监督学习正在构建可以简单地基于相似特征或特性从数据集中识别有意义模式的系统。例如,根据相似的购物行为对客户进行聚类,通过异常检测识别欺诈行为,以及根据用户的相似兴趣推荐电影。最后,强化学习是机器学习的一个分支,它试图在一个定义良好的环境中坑一个智能代理,有一组可能的动作和一个目标函数(奖励)最大化。我们可以想到自动驾驶汽车(代理)行驶在高速公路上(环境)其唯一的目标是不发生事故(奖励)例如。

最后,深度学习是机器学习中使用的一种技术,它利用大量数据和神经网络——一种受大脑结构启发的机器学习技术——来理解数据集内的模式。最近人工智能在计算机视觉和语音识别等领域的突破几乎都导致了深度学习研究,更重要的是计算能力的商品化。

直观地说,把机器学习想象成对孩子大脑建模的尝试。儿童从其他人的动作中学习(监督学习)试图辨别世界上不同物体之间的相似性,例如将形状相似的乐高积木组合在一起(无监督学习)并在没有直接输入的情况下导航困难的环境,例如攀登架(强化学习)。深度学习是机器学习中的一种技术,是人工智能最近突破的根源。

The AI Technical Landscape

短期道德问题

目前笼罩着人工智能的短期伦理担忧,与寻求接管地球的类人机器人的好莱坞转世毫无相似之处。与其通过天真的拟人化来思考人工智能的危险,不如将人工智能视为有能力在公共和私人领域取代人类决策的计算机系统或算法。也就是说,人工智能系统将在直接影响我们生活的后台进程中,自动实现不同利益相关者之间的信息流动。这可以是看似良性的过程,比如我们在脸书上看到的帖子(在最近的丑闻之后就不那么良性了),或者我们在网飞上得到的电影推荐,也可以是更重要的过程,比如信用评级预测个人的累犯率

The Trap of Hollywood Inspired Anthropomorphism When Thinking About the Dangers of AI

事实上,人工智能的短期伦理担忧主要源于管理自动信息流的系统的脆弱性,它们被拉拢和侵蚀集体真理概念的能力。因此,通过人工智能对劳动力市场的影响(即其自动化信息流的能力)、其强化现有刻板印象和偏见的能力以及其刺激威权倾向的能力来看待人工智能的短期危险是有用的。

I)人工智能及其对劳动力市场的影响

在他的书《第三次工业革命》中,杰里米·里夫金假设能源、通信和运输技术创新的融合是结构性经济变革的根源。根据里夫金的说法,这些创新的融合引入了所有以前的工业革命。例如,廉价蒸汽动力印刷机(通讯)、煤炭(能源)的发现以及蒸汽机驱动火车(交通)的发明是第一次工业革命的根源。相反,他认为电话的发明(通讯)、石油的发现(能源)和汽车的发明(交通工具)是第二次工业革命的关键。展望未来,他预计互联网通信技术(通信)、可再生能源(能源)以及自动驾驶汽车和卡车(交通)的发展将迎来第三次工业革命——这是一个以零(或几乎为零)边际成本运行的价值链将通过相互通信的传感器在“物联网”上协调的范式,所有这些都由人工智能系统管理。

无论人们认为里夫金是对还是错,都有待辩论——但不值得辩论的是,人工智能系统将使信息流自动化,并侵蚀我们在不断扩大的经济活动范围内对人类决策的需求。围绕这一范式转变已经说了很多,公众对劳动力市场结构性变化的焦虑是可以理解的。然而,对于人工智能在劳动力市场的不同影响,以及它如何导致失业率上升,改变就业动态,加剧经济不平等和改变全球经济相互依赖,有一个清晰的视角至关重要。

人工智能系统对失业率的潜在负面影响存在广泛分歧。当前的研究领域充满了相互竞争的数字,从仅在美国就有 47%的工作面临自动化风险,到整个经合组织经济体中只有 9%的工作面临自动化风险。这些差异背后的原因源于不同的方法——研究指向更高的预期失业率着眼于整体工作,而预测较低预期失业率的研究倾向于着眼于工作中的任务。我怀疑真相介于两者之间——需要对自动化对一个行业的影响进行更深入的分析,纵观整个潜在职业链,从高度重复的(即自动化的高风险)到不重复的(即自动化的低风险)

Income Inequality Being at the Heart of 21st Century Populism

一旦我们考虑到人工智能的广泛使用加剧收入不平等的潜在可能性,正确识别预期失业率的需求就变得尤为突出。一种观点是,自动化投资将被吸引到机器人的比较优势将比人类高几个数量级的经济领域(即智能工厂),将机器比较优势较低的工作留给人类。然而,并不能保证这些工作会有高薪。因此,收入不平等将会加剧,因为中低收入工作的工资将开始下降,为政治动荡和剧变铺平道路,西方世界最近兴起的一系列民粹主义运动就是明证。

此外,人工智能不仅仅是破坏劳动力市场的稳定,还可以在改变现有和未来工作的动态方面发挥作用。从一个角度来看,技术乐观主义者经常指出,数字化和计算机化的兴起催生了共享经济——这是事实。然而,重要的是要看看共享经济生态系统核心的不同服务中存在的动态,以及人工智能如何在管理这些服务的中央机构和填充这些服务的工人之间存在的信息和权力不对称中发挥作用。AI Now 最近的一份报告探讨了当前正在进行的研究,即优步如何使用其司机数据来激励他们乘坐无利可图的车辆,以推进其为客户提供便捷用户体验的目标。除了算法形式的管理,传统经济将经历动态变化,未来的工作不再要求专业化,而是普遍化。此外,创造力和技术知识将是基本工具包的一部分,此外还有与机器沟通和一起工作的能力——因此,重新培训当前的工人和重新想象当前的教育系统都是最大限度地减少人工智能对不断发展的劳动力动态的破坏所必需的。

2017 年,麦肯锡全球研究所估计,全球超过 60%的工作中,有 30%的任务面临自动化的风险。然而,重要的是要注意到,对就业影响的分布因国而异。专家指出,第三次工业革命将会有赢家和输家,高出生率的发展中国家是其中最大的输家——一些人甚至出去说,发展中国家几乎 70%的工作面临自动化的风险。正如我们今天所知,发展中国家主导生产价值链支柱的当前经济相互依存模式可能会不复存在,因为机器人生产的竞争成本将迫使发达国家的制造商在国内生产。这种经济相互依赖的变化将带来政治不稳定、大规模移民以及随之而来的焦虑。因此,为迎接即将到来的价值创造转变,对劳动力市场进行再培训至关重要。

II)人工智能系统中的偏差

人工智能系统(更具体地说是一种机器学习算法)的关键目标之一是根据我们提供的关于两个或更多人口的一些数据集,在这些人口之间划出一条区别线。例如,根据两个肿瘤群体(一个是癌性的,一个不是癌性的)的数据训练的机器学习算法,提供的数据集是肿瘤的高度和宽度,可以预测未来的肿瘤是否是癌性的。该算法通过识别一条线(一条判别线)来做到这一点,这条线最好地区分了癌性肿瘤和非癌性肿瘤。

A Machine Learning Algorithm Learns to Discriminate Between Cancerous and Benign Tumors

在获得贷款、医疗保险和其他问题上推断这一过程,分析与社会(即种族、地址、性别等)、经济(收入水平、教育等)和政治(政治派别)维度相关的数据,很容易看出人工智能系统可能会强化当今社会中存在的偏见。

人工智能系统中的偏差可能有不同的原因。之前提到的人工智能 Now 报告深入研究了人工智能偏见的起源。简而言之,机器学习算法需要对数据进行训练,才能输出预测。训练数据经常会有偏差、扭曲、不完整或不准确。举个例子,2015 年,谷歌图像分类算法将两个黑人归类为“大猩猩”——这个问题可能源于不平衡的训练数据,并显示了当前人工智能系统的不完善,这些系统在狭窄的任务中可以拥有超人的智能,但缺乏常识。尽管他们尽了最大努力,谷歌对这个问题的解决方案是阻止图像识别算法一起识别大猩猩。此外,收集数据的方式往往会导致有偏见的结果。数据要么是由人工标记的,要么是从现有的网络服务上刮下来的,而且很少受到审核机制的约束。此外,嵌入到机器学习算法中的任何偏见都很难解释,从而更难发现。这导致机器学习应用程序的偏见在部署后被发现,正如 Propublica exposé 所证明的那样,一个机器学习应用程序在预测累犯率和批准假释方面对黑人有偏见。

超越训练数据不平衡——机器学习算法受制于复杂性和可解释性之间的权衡。也就是说,通常在机器学习算法的性能和决策透明性之间存在权衡。由于回归和决策树等基本机器学习算法为我们提供了理解他们为什么做出决策的能力,因此深度学习模型等更复杂的系统仍然是一个“黑匣子”。使深度学习模型更加可解释的研究仍在进行中。然而,我们今天使用的许多应用程序,如面部和语音识别软件,无法解释他们为什么做出这样的决定。

三)人工智能,政治和政府

人工智能可以被视为一种通用技术——与电力类似,它的影响可以横向追溯到人类生活的各个方面,用例出现在医疗保健、工业、金融等领域。它的无处不在不仅有能力在我们的经济体系中产生结构性变化,而且有能力颠覆我们当前政治和治理框架中的现有关系——有可能强化专制倾向和扩大现有的权力不对称。更重要的是,人工智能受益于我们生活中的连续数字技术,这使我们开发出一种有效的【监控】设备,由私营和公共部门提供支持。越来越多的企业(更重要的是科技公司)以提供更个性化的体验和更好的广告定位为名,依赖于收集客户信息,从脸书喜好到位置数据。另一方面,政府一直以国家安全的名义压制公民自由和隐私权,爱德华·斯诺登等告密者的证词就是明证。在此需要说明的是,这种“监控”设备的发展因国家而异,可以采取许多不同的形式,这在很大程度上取决于数据隐私法的性质、私营部门和公共部门之间的合作程度,以及最重要的基础设施限制。因此,有必要将人工智能对政治和治理构成的潜在危险视为一场针对现有治理形式的突然政变,而是朝着数字专制的缓慢而模糊的前进。

抛开警告不谈,AI 提供了一系列先进的模式识别工具,如果建立在这个“监视”设备之上,将大大降低政府压迫的成本,动摇现有的社会政治安排,并侵蚀客观真理的概念。由人类未来研究所最近发布的一份报告提供了大量关于人工智能可能实现专制特征的方式的描述。首先,人工智能提供了一种具有成本效益的方法来识别潜在的政治异议者——因为我们在网上留下的数字痕迹从食物偏好到我们喜欢看什么类型的节目,可以为政治倾向提供具有统计意义的预测。最近的美国选举和剑桥分析公司丑闻证明了这一点,脸书的数据被用来推断用户的政治倾向和心理特征以便更好地将他们作为政治广告的目标。为了更好地孤立持不同政见者,更好地预测他们的行动,并制造各种形式的反对意见的抑制因素,可以采用同样的程序。主要是,大赦国际提供的工具包使政府能够使持不同政见者成为持不同政见者更昂贵的选择,因为改进的识别和监测技术为在持不同政见之前或之后逮捕和惩罚持不同政见者提供了有利条件。此外,政府可以建立社会信用体系,这是一种政府可以根据某种信任程度给其公民打分的措施。中国计划在 2020 年前实施社会信用体系,该计划利用了各种数据点,包括金融数据、与个人在线关系相关的人际数据以及其他社会维度。这种信用体系将是一个人的孩子接受什么类型的教育,是否有机会获得公共住房,工作资格,甚至恋爱关系的决定性因素。这种信用系统有可能强化专制政权的权力基础,并系统地自动惩罚异议行为。

An Illustration of Deepfakes in Action, Transposing the Face of Actress Gal Gadot on a Pornographic Video

此外,政府有能力以前所未有的水平制造同意,有能力使用人工智能机器人渗透到在线社区,这些机器人可以有效地回应异议团体,并促进政府的谈话要点。这些机器人还可以通过人工智能支持的视频和音频编辑技术(也被称为“deep fakes”)来实现,这些技术可以创建非常可信的篡改视频。Deepfakes 最近变得引人注目,因为某些 Reddit 社区开始使用它在色情视频中移植名人的脸。虽然 Deepfakes 本身值得探索(在未来的博客文章中会有更多介绍),它有能力将假新闻、网络欺凌以及社会凝聚力碎片化,但它侵蚀对异议的信任的能力是惊人的。

结束语

我在开始这篇文章时,并没有详尽地列出人工智能的短期伦理问题,而是介绍了如何思考人工智能的崛起所引发的伦理问题。这样做的目的并不是支持某种新排外主义,而是提出关于技术将在我们生活中扮演的角色的重要问题。技术乐观主义者可以写一篇更长的文章,讨论人工智能的短期和长期好处,它有助于药物发现,实现个性化和预测性医疗,为个人提供更高程度的自主权,并有可能将我们从人类的苦差事中解放出来。这篇文章没有停留在光谱的任何一端,而是在一个务实的中间,承认人工智能的潜力,同时保持警惕,并对其缺点提出问题。这些问题需要政策制定者、政治家,最重要的是公民做出细致入微、深思熟虑的回应。关于如何弥合安全和人道的未来与技术进步之间的差距,需要我们做出结合硬科学和社会科学的深思熟虑的回应。

最终,技术专家通常会分化成两个对立的阵营,一个认为技术是中立的,另一个认为技术不是。然而,我们的数字生活和线下生活之间的桥梁,以及人工智能的崛起及其组织我们的社会、经济和政治的能力,彻底颠覆了这一鸿沟,并让我们不禁要问: 我们希望它保持中立吗?

在 Python 笔记本中跟踪 for 循环的进度和预期运行时间的最简单、最干净的方法

原文:https://towardsdatascience.com/the-simplest-cleanest-method-for-tracking-a-for-loops-progress-and-expected-run-time-in-python-972675392b3?source=collection_archive---------6-----------------------

一段时间以来,当谈到我在笔记本上的代码单元的进展时,我经常感到被遗忘在黑暗中。因此,我想找到一种简单明了的方法来跟踪 for 循环进行到什么程度。

最终输出应该告诉我当前的进度、当前的运行时间和预期的运行时间,如第一幅图所示:

Final Output Example

虽然使用 IPython 小部件可能有更好看的解决方案,但下面的方法是我发现的最简单的实现方法。在过去,我倾向于简单地打印当前的循环进度,但是这样做意味着我们将有一个很长的循环每个阶段的列表,如下所示。

Previous Method used for Tracking Progress

相反,我希望进度输出在同一行中。我们可以通过三个简单的步骤实现这一目标:

1)从 IPython.display 导入“clear_output”函数

2)在每个循环结束时,打印当前进度

3)在下一循环步骤开始时删除当前进度

这意味着我们本质上是在循环的每个阶段替换文本,也意味着我们没有一个长列表,否则我们可能会有。这显示在下面的代码示例中,其中突出显示了提到的三个部分。

Print Replacement Method for Cell Output

我们可以通过估计预期的总运行时间来进一步改进这个输出。这可以通过交叉引用当前花费了多长时间和进展了多远来实现。当然,这是一个非常粗略的计算,并且假设花费的时间是线性的,但是它至少给出了大概需要多长时间。在下面的代码中突出显示了新的计算方法,我们还免除了前 5%的预期时间计算,以避免不准确。

Print Replacement Further Improved

我希望你觉得这是有趣和有用的,如果你有任何问题,请让我知道。

谢谢

哲学(philosophy 的缩写)

神经网络的最简单介绍

原文:https://towardsdatascience.com/the-simplest-introduction-to-neural-networks-6b618e7c8b10?source=collection_archive---------2-----------------------

30 天写作挑战

这是我的30 天写作挑战 的第 10 天。我每天都在努力写一篇短文,为我建立机器学习团队的新角色做准备。7 天发表了 7 篇文章,刚刚休了 2 天假。你可以在我的机器学习之山——到达大本营阅读一周总结。

到目前为止,我一直专注于简单的数据科学算法。它们是强大的技术,因为它们实现起来很简单,但是组合起来比它们各部分的总和要大得多。然而,如果不真正深入到神经网络——人们在谈论人工智能时通常会想到的东西,这个系列就不完整。

让我们回到起点,想想生物神经元,即构成大脑的细胞。它们的工作方式启发了我们将要研究的神经网络。

简单地说,神经元被树突上的输入所激发。刺激可能来自一个神经或另一个神经元,这无关紧要。如果输入足够强,轴突就会放电,另一端会有输出。同样,这可能是另一个神经元或神经,它实际上是在移动你的肌肉。想象一下装满咖啡杯的刺激。如果咖啡杯溢出,它就会被激活。不同的神经元会被不同水平的输入激活。有些只需要一点点刺激,有些需要很多刺激。

我们可以非常简单地用数学建模。如果所有输入x的总和乘以权重w大于或等于激活阈值 theta,则神经元f(x)1。否则就是零分。

训练一个非常简单的单神经元神经网络(技术上是一个感知器)是非常容易的。如果我们知道我们所期望的结果(即监督学习),那么新的激活阈值被计算出来:

计算每个神经元的新权重:

不要让符号让你分心。它们很容易计算。每次你训练神经元时,激活阈值会向最佳值靠近一点,每个输入的权重都会得到调整。

我已经编写了一个示例脚本来训练一个有两个输入的神经元,只有当两个输入都激活时才激活它。它首先在几轮训练前分配随机权重和随机激活阈值。

在训练之前,输出是完全错误的。即使只经过 100 轮训练,该模型也能为任何给定的输入生成正确的输出。

这只是一个简单的例子来介绍神经网络的概念。它很琐碎,不太可能对任何现实世界的问题有用。不过,你应该知道我们所说的神经元是什么意思,以及我们如何使用一些输入的预期结果来稍微接近产生正确输出的权重和激活阈值。

神经网络的真正力量是当你把很多很多的神经元结合起来,创建一个大的网络。您可以解决的问题类型会显著增加。在下一篇文章中,我们将看到如何修改这个例子来解决一个更复杂的问题。

这是我的 30 天写作挑战 中的一个帖子。我是一名软件工程师,试图理解机器学习。我没有博士学位,所以我将用简单的语言和大量的例子来解释事情。

关注我的Twitter查看我的最新帖子。如果你喜欢这篇文章,请点击下面的心形按钮来分享——这将有助于其他人看到它。

监督学习和非监督学习的简单、深刻而复杂的世界

原文:https://towardsdatascience.com/the-simply-deep-yet-convoluted-world-of-supervised-vs-unsupervised-learning-a737d560c979?source=collection_archive---------3-----------------------

人工智能(AI)很像生活中的关系。有时候,你投入的东西很简单,就能得到你想要的结果。其他时候,我们只能说,过程变得有点复杂,有时结果并不完全是你预想的那样。换句话说,你可以在两种关系中输入相同的内容,但是不同的路径会导致不同的结果。然而,两者都是学习过程。在人工智能的世界里,这被称为有监督和无监督的深度学习——和大多数关系一样,你输入的内容和你得到的输出之间的最短距离并不总是众所周知的直线。

什么是深度学习?

在我们深入研究什么是有监督的和无监督的深度学习之前,你应该知道深度学习是从一个叫做机器学习的过程进化而来的。机器学习采用一种算法或一套规则,在没有特定编程的情况下创建输出。想想社交网络如何从你的帖子中挖掘数据。例如,你和你的朋友去你最喜欢的寿司店吃饭,并在网上分享你的经历——你喜欢什么,觉得不喜欢什么,照片,你会回来吗——一旦你将这些输入到你的社交网络,一种算法就会收集关于你输入的珍闻,提取你喜欢什么,不喜欢什么的模式,甚至根据你的照片提取你的长相。该算法可能会发现,你大约 23 岁,每月与朋友在这种特定类型的餐厅吃饭两次,喜欢加州卷鳗鱼寿司。然后,它会根据这些数据向你发送广告。机器学习反复收集关于输入的信息,尽管没有被告知如何这样做或在哪里寻找这些信息。

深度学习将它提升了一个档次。它接受您的输入,发现它可以对其进行分类而不产生问题(有监督的)或聚集未标记的信息,尝试对其进行分类以便有意义(无监督的),然后接受该输入并创建某种可行的输出。这是一个分层的体系结构,能够理解从一层到另一层非常抽象的数据。这就是深度学习如何模拟人脑的多方面复杂性——它的神经通路处理大量信息,这些信息在它有意义(或没有意义)之前是没有意义的。

有监督的深度学习:通向期望的接吻路径

当你的上司在工作中监视你时会发生什么?像大多数人一样,这让你抓狂,所以你倾向于选择阻力最小的方式,找到最没有挑战性的方法来快速完成工作,同时满足你上司的期望,对吗?假设某个主管训练你处理信贷申请。所述主管知道那些申请中有什么,并且知道任何申请的预期结果是批准还是不批准。你从培训中学习了如何以最佳方式工作,以达到期望的结果,即你的主管需要的结果。有监督的深度学习就是这样。我们人类倾向于在一个特定的层次中处理:我们接受生活的输入,并基于我们的经验(训练),我们组织这些输入,以便我们先前的知识可以理解它,处理它到一些预期的结果。受监督的深度学习属于保持简单愚蠢(KISS)路径,这是一条阻力最小的路径,可以实现一些预期。

有监督的深度学习非常适合决策:以我们的信用卡为例。银行接受你的申请,并根据其风险类别进行审核,然后决定是否批准你的申请。程序要点如下:

应用程序是来自客户的输入

银行将来自应用程序的数据输入到算法中

该算法从过去的应用中注意到数据遵循特定的路径(建模)

例如:婚姻状况-单身,已婚,离婚,丧偶都有一个是或否的答案

该算法采用银行确定的申请数据、是或否答案,并遵循其流程图(路径规则)

当算法决定数据属于批准和未批准的主要类别时,数据流经该路径

给出批准或不批准的预期决定

客户被批准,是一个快乐的营员或没有被批准,并想知道如何固定他的信用评分(必须把它扔进去)。

监督深度学习不仅仅是你典型的开灯关灯二元函数。该算法将标准分类为银行的风险预期,将风险处理为两个决策之一。这种分类方法被称为二项式分类(两个选择)或多类(两个以上的选择)。

无监督的深度学习:探索未知的旅程

如果有监督的深度学习是获得预期输出的途径,那么无监督的深度学习会获取相同的输入,并试图在避开某些输出之前理解它。以你最好的朋友为例,让我们去参观艺术博物馆。你们都被一幅玫瑰画迷住了。你们中的一个人从字面上理解,另一个人从象征上理解。对你来说,一朵玫瑰只是一朵玫瑰,而你想去看梵高的展览。对你的朋友来说,玫瑰是黄色的,而它应该是红色的,你的朋友不明白为什么这幅画代表友谊而不是爱情。在一切准备就绪之前,梵高是不存在的——直到你的朋友沉思那朵玫瑰,以及为什么她现在的关系挂在博物馆的墙上,这一切才发生。

无监督的深度学习没有目标,没有对输入的期望。它依靠探索各种可能性来得出一些结论。当你可以去参观梵高的展览时,你的朋友却在苦苦思索如何将友谊和爱情带给一个人幸福生活的所有途径分类,以及如何从错误中吸取教训。

决策时间:如果你当时知道你现在所知道的

人类是主观上有知觉的生物,其决策过程更多地迎合意外(无监督的深度学习)而不是预期(有监督的深度学习)。电脑没有人的因素。他们没有经验。他们只有数据集、函数和“思维”,这些都是基于以有序或无序的方式将信息汇集在一起的层。

随着神经网络和人工智能变得更加复杂,深度学习算法也是如此。你可以在监督、非监督或深度学习组合包中进行选择,以解决从信贷审批到令人难以置信的复杂机器人数据集的任何问题。还记得社交网络的例子吗?当你上传图像时,一种叫做卷积神经网络(CNN)的东西在得出你大约 23 岁的结论之前挑选出特征,汇集相关数据:餐馆、朋友笑、朋友皱眉、面部识别、背景识别。将这些小组组合分类,你的形象就充分说明了你是谁以及你是如何生活的。想象一下,他们会从你上传的视频中发现什么?然而,有时生命不得不在不受 knowns 监督的情况下展开,重建(自动编码)数据驱动的宇宙,而自组织地图将模糊的数据模式转化为二维(想想地形图),这让你进一步思考为什么玫瑰的任何其他名字只是反向传播(眨眼)。

UX 数据的不稳定性

原文:https://towardsdatascience.com/the-slipperiness-of-ux-data-b4f185a4f659?source=collection_archive---------12-----------------------

在我的文章证明设计中,我谈到了拥有做出正确产品或产品决策的证据有多难。有些项目非常昂贵,以至于需要很强的说服力才能获得预算。这是一种自然的权衡。在你完成了项目的一部分之后,或者甚至在你已经完成了项目并且现在有兴趣进行第二阶段的开发之后,事情并不会变得更容易。

许多 UX 专业人士谈论数据的重要性,但让我们诚实地说,在设计和决策的周期中,有无数的事情是无法衡量的。

可以衡量什么?

  1. 人们需要你的产品吗?
  2. 产品本身以及人们如何使用它。
  3. 想法和迭代——使用用户研究。

基本上你和你的团队能做的一切。它占创作过程的 20%左右。

你创造了什么?是什么启发了你的想法?你是否受到其他你无法衡量的设计的影响?太好了。

什么是不可测量的?

竞争对手

你不知道为什么你的竞争对手会这样做。你没有他们的数据,也无法知道他们的决策过程。

产品前行为

有许多营销产品正在试图解决这个问题。然而,在用户旅程的这一部分,设计师没有控制权。无论是操作系统还是平台,用户之旅都是由推动者推动的。每个平台都会为你提供一些数据和测量结果,但它并不完全是在监测 UX,它更多的是通用的和市场导向的。在大型组织中,获取这些数据点也是一个挑战。另外,每一条数据都要核实。有了平台,几乎不可能验证。

分析学

在您的服务中,您需要通过不同的工具(MixPanel、GTM、Data studio 等)进行检查和关联。).对于 UX 和产品角色来说,理解分析工具已经变得至关重要。这就是公司如何做出关键决策的原因,也是为什么通常用三到四个系统对数据进行检查和交叉匹配,以比较和查看数据是否可靠。

操作系统设计模式

事实上,谷歌决定某样东西应该看起来是这样的,但这并不意味着它是最好的方式。这意味着他们可能测量了它,它是有效的。这也意味着,凭借他们的影响力,许多应用程序将采用它,它将变得熟悉。但不一定代表更好。其中一些决定是为了与 iOS 或 Windows 等其他平台区分开来。其他决定是一个伟大设计的折衷解决方案,因为该设计可能会申请专利。这正是谷歌和微软收购摩托罗拉和诺基亚,剥夺他们的专利,然后卖给别人的原因。所以如果你见过一个设计,即使它很有名,也不意味着它是最佳实践。

仅仅因为它有效,并不意味着它是一个很好的体验。许多公司看不到改变的理由。当一家公司处于垄断地位时,这是很常见的..比如在易贝买东西……有用吗?,是啊…这是一个很好的体验吗?不,一切都很麻烦:接收信息,发送信息,浏览 2000 年至今的易贝版本。

It works but it ain’t nice and at times very confusing

相比之下,亚马逊更加雄心勃勃,并且“非常缓慢地”重新设计他们的体验,使之实用和令人愉快。

你已经拿到数据了!但是,等等,可能会有偏差。

让我们来看看这是如何发生的。

错误的实现

仅仅一行简单的代码或一个错误事件的选择就可能导致每次点击都被计为两次。这就是为什么检查多个系统很重要——正如我前面提到的,在用户旅程真正开始之前的阶段可能会有问题。

意图

即使你有很多经过验证的数据,你怎么能相信你看到的数据呢?每个收集数据的人(甚至可以说是科学家)都试图以一种迎合他们议程的方式展示数据。数据可以以非中立的方式收集和呈现。这很自然,从营销公司到 UX 设计师,每个人都希望自己的项目成功。

Source giphy.com

介绍会;展示会

媒介是武器,理解为什么选择某样东西很重要,就像理解平面设计决策一样:它们向我展示了什么,又向我展示了什么。

当前几个有偏差数据的例子及其使用方法:

  1. 脸书第十次承认测量错误
  2. 脸书被指责是假新闻问题的一部分…谷歌也是,但它很少用于休闲和内容消费。
  3. 脸书正在删除成千上万的虚假用户,这就是为什么他们不断调整新闻提要,谷歌也在对搜索结果做同样的事情。
  4. 剑桥分析公司(Cambridge Analytica)因其影响英国/美国用户的方法而受到怀疑和质疑

处理它的主要方法

批评家

要苛刻挑剔,尽量找角度。如果你总是认为每个人都有兴趣,生活会很糟糕,但即使意识到了会让人悲伤,用批判的眼光看待事情更聪明,尤其是在商业中。所以当你看到一个新功能,在你兴奋完或者嘘完之后,想想他们为什么要创造它?这是谁的决定,他们的兴趣是什么?将其价值与商业、营销、用户满意度、设计等联系起来。猜猜这个概念是哪个部门想出来的?想想接下来他们会把它带到哪里。它的未来是什么?

受影响但意识到

没有什么是公开的,你有的只是用户体验数据的踪迹。我之前写的一篇关于脸书的帖子得到了回复,上面写道“但是数据在哪里?”答案是:这些数据是内部的,其他任何人都无法获得。太隐秘不能暴露,是他们的秘制酱。这是不是意味着我不能写或者分析它?我不这么认为。

在 Instagram 中,你会知道有多少照片被上传到 Instagram,因为这是一个影响保留/花费时间的财务数据。但你不会知道这些照片中有多少是从电脑、用户画廊或专业相机上传的。重要的是,在批评或受其影响时接受它,并知道你正在处理的数据的局限性。

这里举一个的例子whereyouhavedatabutcanonlyseepartofth 虽然没有好的方法来计算维修收入的多少,但苹果的服务收入拉低了净销售额的 70.4 亿美元,而总销售额为 529.0 亿美元。”

意识到你的控制水平,但是看看你是否能更进一步。拥有一个操作系统和参与一个操作系统之间的差别是巨大的。当我在三星工作时,我们正在为电视设计 Tizen 操作系统的核心。我们可以无限制地控制一切。如果我们建造了它,我们可以追踪任何我们想追踪的东西。但是,当你成为生态系统的一部分时,你需要遵守规则,并在整个过程中获取你所能获取的一切。这就是为原生操作系统设计如此有趣的原因,尤其是当其他人正在构建和增加您的知识时。

数据很重要,但我认为决策只能在一定程度上基于数据。在我看来,构建决策的大约 70%是经验、愿望以及与业务其他方面的一致性。一个好的设计师或产品人员应该影响和说服他人,但这并不完全取决于数据。数据只是武器库中的另一个工具,它适合特定的用途。

如果你喜欢的话。A.

Softmax 函数、作为概率的神经网络输出以及集成分类器

原文:https://towardsdatascience.com/the-softmax-function-neural-net-outputs-as-probabilities-and-ensemble-classifiers-9bd94d75932?source=collection_archive---------3-----------------------

📸 from Pixabay

亮点:

在本文中,我们将了解:

  • 从简单的逻辑回归出发,导出多项式(多类)分类问题的 softmax 函数
  • 在深度神经网络的输出层使用 softmax 激活函数来表示类别标签上的分类分布,并获得每个输入元素属于一个标签的概率
  • 使用 Keras functional API 构建具有 softmax 输出聚合的鲁棒集成神经网络分类器

链接到我的其他文章:

  1. 深度内核转移和高斯过程
  2. 自定义张量流损失函数
  3. 随机森林
  4. 气候分析

简介:

在许多情况下,当使用诸如规则深度前馈网络和卷积网络之类的神经网络模型用于某组类别标签上的分类任务时,人们怀疑是否有可能将输出,例如 y = [0.02,0,0.005,0.975】,解释为某个输入在类别中的概率等于输出中的相应分量值y【ᵢ直接跳到长答案:不会,除非你有一个 softmax 层作为你的输出层,用交叉熵损失函数训练网络。这一点很重要,因为在网上资源中,甚至在一些关于神经网络分类的教科书中,这一点有时会被忽略。我们将了解如何在多项式逻辑回归的上下文中导出 softmax 函数,以及如何将其应用于集成深度神经网络模型以实现稳健分类。

推导 Softmax 函数:

简而言之,分类分布伯努利分布的多分类推广。伯努利分布是一种离散的概率分布,它模拟单个实验的结果,或者具有两种结果的随机变量的单次观察(例如,单次掷硬币的结果)。分类分布自然地将伯努利分布扩展到具有两个以上结果的实验。

现在,简单的逻辑回归分类(即仅针对两个类别或结果的逻辑回归)假设以输入 x 为条件的输出 Yᵢ ( i 为数据样本指数)服从伯努利分布:

将伯努利结果的对数几率与线性预测值相关联的链接函数logit 函数:

如果我们对上述等式的两边取幂,并做一些重新排列,在右边(RHS ),我们得到熟悉的逻辑函数:

获取多项逻辑回归的广义逻辑或 softmax 函数的一种方法是,首先为每个类 K 提供一个与逻辑相关的线性预测值,再加上一些归一化因子,以确保所有类的概率总和等于 1。这个由 K 个 T21 方程组成的系统是一个对数线性概率模型系统:

上述方程组中的 ln( Z ) 项为归一化因子的(对数) Z 称为配分函数。当我们在处理多项式回归时,这个方程组给出了明确分布的概率:yᵢ|xᵢ**~明确( p )。

两边取幂并施加约束:

上式的 RHS 称为吉布斯测度,将 softmax 函数与统计力学联系起来。接下来,求解 Z 得到:

最终方程组变成了:

每个等式的 RHS 上的比率是 softmax 函数。一般来说,softmax 函数定义为:

对于j =1……K。我们可以看到 softmax 函数将一个任意实值的 K 维向量 z 归一化为一个分量总和为 1K 维向量 σ ( z )(换句话说,一个概率向量), 此外,它还提供了每个 zⱼ 相对于 zⱼ 总量的加权平均值,如果 zⱼ 在比例上非常不同,它会夸大差异(返回接近 0 或 1 的值),但如果 zⱼ 相对而言比例相同,它会返回一个适中的值。* 分类器模型需要学习给出前一条件而不是后一条件的参数(即决定性与非决定性)。*

最后,正如 logit 函数是简单逻辑回归的连接函数,逻辑函数是 logit 函数的反函数一样,多项式逻辑函数是多项式逻辑回归的连接函数,softmax 可以视为多项式逻辑函数的反函数。典型地,在多项逻辑回归中,最大 a-后验(MAP)估计用于为每个类别 k 找到参数。**

交叉熵和集成神经网络分类器

现在我们已经看到了 softmax 函数的来源,是时候在我们的神经网络分类器模型中使用它们了。在配备 softmax 输出层的神经网络上最小化的损失函数是交叉熵损失:

Assuming p and q are discrete distributions

其中 y 是某些迭代 i 的真实标签,而 ŷ 是迭代 i 时的神经网络输出。这个损失函数实际上与用于简单和多项逻辑回归的损失函数相同。交叉熵函数的一般定义是:

pq 之间的交叉熵被定义为分布 p,的信息熵之和,其中 p 是一些潜在的真实分布(在这种情况下将是真实类别标签的分类分布)和分布 qkull back-lei bler 散度其中T13 是我们试图逼近的 pp 对该函数进行优化可以最小化 p 的信息熵(在 p 中给出更多确定的结果),同时最小化 pq 之间的“距离”。**

Bridle 的文章中给出了使用神经网络中的 softmax 作为输出层激活的理论处理。该文章的主旨是使用 softmax 输出层和神经网络隐藏层输出作为每个用交叉熵损失训练的zⱼ,给出了类别标签上的后验分布(分类分布)。一般来说,深度神经网络可以大大优于简单和多项式逻辑回归,代价是不能提供特征/参数的统计显著性,这是推断或找出哪些特征影响分类结果的一个非常重要的方面。使用选择的鲁棒优化器来优化整个神经网络;RMSprop 通常是一个好的开始。

因此,现在我们将使用 Keras functional API 构建一个深度前馈神经网络分类器,并对葡萄酒进行分类。我们将使用几个神经网络的集成模型来给我们一个鲁棒的分类(在实践中这是你应该做的,由于随机初始化和随机梯度训练导致的单个神经网络预测的方差必须被平均以获得好的结果)。集成模型的输出应该给出某个测试示例将属于每个类别的概率向量,即类别标签上的分类分布。

聚集每个单独神经网络模型的结果的一种方法是在集合输出处使用 softmax 来给出最终概率。为了自动确定最终 softmax 平均的最佳权重,我们将在另一层上“粘合”集合中每个单独神经网络的输出。下面是该架构的示意图。

Everyone loves block diagrams.

每个学习模型都可以从最终的 softmax 聚合输出向后区分。我们可以使用Keras concatenate-merge layer将每个子网合并在一起。连接层连接来自每个子网络的输出张量,并允许优化器对合并的模型进行优化。为了简化我们的训练,每个学习模型都将在同一个数据集上进行训练。可以使用自举子集,但是这使得训练变得更加复杂,因为我们将不得不在它自己的输入和目标对上单独训练每个子网络,同时冻结其余学习模型上的训练更新。

从训练结果可以看出,高档葡萄酒不是我们的集成分类器的对手。同样,特征选择对我们的模型来说并不是非常重要,因为它使用所有特征很好地学习数据集。在 200 个历元之后,训练和验证损失变小,分别达到 10^-510^-3 的量级,这表明我们的集成神经网络模型在拟合数据和预测测试集方面做得很好。正确类的输出概率接近 100%,其他类的输出概率为 0%。

结论:

在本文中,我们推导了多项式逻辑回归的 softmax 激活,并看到了如何将其应用于神经网络分类器。重要的是要记住,在解释神经网络输出是概率时要小心。然后,我们使用 Keras functional API 构建了一个集成神经网络分类器。无论如何,运行代码有乐趣,一如既往,请不要犹豫问我任何事情。

深度学习的稀疏未来

原文:https://towardsdatascience.com/the-sparse-future-of-deep-learning-bce05e8e094a?source=collection_archive---------5-----------------------

这可能是人工智能研究的下一次飞跃吗?

一种新的深度学习算法有可能成为游戏规则的改变者。

2018 年 6 月,一组研究人员(Mocanu 等人)发表了“受网络科学启发的具有自适应稀疏连接的人工神经网络的可扩展训练”他们表明,他们训练神经网络的新方法与最先进的方法相比具有竞争力,而且需要的计算资源要少得多;也就是说,理论上。这应该允许未来的项目将项目扩大到前所未有的规模。

Think big.

到目前为止,这篇论文似乎在机器学习社区中没有得到多少关注,可能是因为它发表在自然科学杂志《自然通讯》上。机器学习社区倾向于关注一些特定的期刊。Nature Communications 在自然科学领域发表了许多关于机器学习应用的有趣论文,但我担心许多 ML 研究人员忽略了这篇重要的论文,因为它不是一篇发现重要的新颖深度学习算法的典型期刊。

《华尔街日报》的名字是我能想到的这篇论文受到最少关注的唯一原因。纵观他们的结果,似乎该研究为深度神经网络模型的学习能力的二次增长打开了大门。

这有什么大不了的?

完全连接的层

要理解这篇论文,首先必须理解与现代深度神经网络相关的可扩展性问题。

深度神经网络使用全连接层(fcl)。这些使用密集矩阵将输入向量转换到输出空间。FCL 通常用这样的图表来表示:

Fully-connected layer diagram, taken from Jessica Yung’s blog. Each input node connects with each output node.

这已被证明是一种非常有效的方法。问题是每个 FCL 中的连接数与输入中的节点数和输出中的节点数成二次方增长。

具有 16 个输入和 32 个输出的 FCL 具有 16×32 = 512 个连接;具有 32 个输入和 64 个输出的 FCL 具有 32×64 = 2048 个连接。这为 FCL 可以拥有的输入和输出数量设定了一个实际上限。

当我们处理非常高维的数据时,这是一个问题;简单地用 FCLs 将数据插入神经网络在计算上是困难的。

Datasets in the biology domain, including genetics research, are an important example of high-dimensional data.

图像是非常高维数据的一个例子;例如,256 x 256 像素的 RBG 图像包含 380,208 个值。如果我们希望在这里应用一个 FCL,我们将会在一个图层中拥有数千万甚至上亿个参数。

卷积层提供了一种绕过二次 FCL 问题的方法,并导致 2010 年图像处理模型的突破。基本上,我们可以使用卷积来充分降低输入数据的维度,以便在产生一些有用的输出之前将它们传输到 fcl。

在卷积的情况下,我们利用了相邻像素共享重要信息的事实。图像数据中的像素具有固有的结构,赋予整个图像以意义。卷积使用我们对这种结构的先验知识在图像处理问题中产生极好的结果,同时限制训练这些模型的计算成本。

Example of convolution layers feeding image data into a fully-connected layer. — Source: https://www.mathworks.com/videos/introduction-to-deep-learning-what-are-convolutional-neural-networks--1489512765771.html

但是如果我们的数据不是以这种方式构建的呢?例如,如果我们正在用数万或数十万个 DNA 标记作为输入特征对遗传数据进行建模,会怎么样?这里没有可利用的内在结构,在这种情况下卷积层无法拯救我们

稀疏连接的层

一层中的每个节点都必须与下一层中的每个节点相连吗?答案是“不”

我们可以很容易地想象一个不完全连接每个节点的层。在研究中,这种层通常被称为稀疏连接层(SCL)。

Diagram comparing FCL to SCL. Taken from Amir Alavi’s blog.

这很容易想象。事实上,自然界中的许多网络表现得更像这样。例如,回到人工神经网络(大脑)的最初灵感,神经元(类似于节点)只与少数其他神经元相连。

SCL 已经在各种项目和出版物中得到应用和研究。在对神经网络修剪的研究中,这是一个深入探讨的课题。

我们应该使用哪些连接?

某些情况下,研究人员使用在数据源中发现的观察网络(如蛋白质相互作用网络)来构建稀疏连接的层架构。但是如果我们没有任何这样的先验知识呢?

找到学习连接节点的方法仍然是一个突出的问题。现在看来这个问题已经解决了。

了解稀疏连接的层拓扑

寻找连接节点的智能方式是自适应稀疏连接论文的主题。该算法被称为稀疏进化训练(SET)过程,实际上非常简单。

The SET algorithm, taken from the original publication.

基本上,我们在我们的网络中随机初始化 SCL,并使用反向传播和其他标准问题深度学习优化技术开始训练。在每个时期结束时,我们移除具有最小权重的连接(“最弱”连接),并用随机初始化的新连接替换它们。冲洗并重复。

SET 变得异常健壮和稳定。令人鼓舞的是,作者能够用包含更少参数的 SET 模型显示出与 FCL 模型非常相似的结果(有时超过了它们的性能)。

SET-MLP is competitive with a fully-connected multilayer perceptron model, while using quadratically fewer parameters (taken from the original publication).

这些结果给我留下了深刻的印象,但显然更大的 ML 社区并没有变得非常兴奋。

ML researchers reading SET paper.

在学习的连接中编码特定于域的信息

SET 网络不仅学习被监督的目标;它们还在每层中形成的连接中编码输入特征重要性

这方面的一个简单例子是从 MNIST 上训练的一组模型中观察输入连接。

Input connections from SET-trained SCL on MNIST. Digits are centered and scaled to be consistently located throughout the dataset; it stands to reason that a well-learned connection map will place more connections on these center pixels (taken from the original publication).

当我们观察 MNIST 问题中输入连接分布的演变时,我们可以看到该模型通过它保持的连接隐式地了解输入数据中预测信息的分布。在我们还不知道这种分布的领域中,这些信息可以帮助我们“发现”非结构化输入数据中有趣的特征和关系。

我要我的电视机

I was told there would be scalability.

我读了这篇论文,非常兴奋。它有望为以前难以解决的 ML 问题提供一条新的途径。问题是,我们还没准备好。研究人员自己可能说得最好:

目前,所有最先进的深度学习实现都基于图形处理单元(GPU)上非常优化的密集矩阵乘法,而稀疏矩阵乘法在性能上极其有限。

事实上,研究人员利用这些优化的结构来进行他们的概念验证实验。他们只是使用 FCL 和遮罩层来模拟他们的算法,让读者对通过 SET 学习的稀疏连接层的美好未来充满希望。

如果这些软件工程的挑战被解决了,SET 可能被证明是更大的人工神经网络的基础,也许是十亿节点规模的,在超级计算机上运行。

我不是计算机科学家,但我想开始行动。这就是我决定在 PyTorch 中实现 SET 的原因。我构建算法是为了使用稀疏数据结构,但它不是最优的。老实说,相当慢。但是我想把这个东西放到野外,这样人们就可以开始用它做实验,开始研究它。也许很快我们就会有一个更快的实现。

现在,任何阅读这篇文章的人都可以通过使用我的自定义 PyTorch 层来体验 SET。我把这个项目叫做“ Synapses ”,因为这是一个很酷、很合适的名字,幸运的是 PyPi 库没有采用这个名字。要使用它,只需安装 pip:

pip 安装 synapses

❤ pypi

唯一的依赖就是火炬!

它很慢,但至少它是真正稀疏的 T4。这里不涉及密集层和掩盖诡计。

看一看一些示例代码,并尝试使用它一点!我已经找到了一种通过改变进化策略可以显著加快优化速度的方法:我的 SET 风格不是在每个时期结束时进化连接,而是在每次向前传递数据时以非常小的概率进化连接。这似乎会导致更快的收敛,尽管我需要做更多的实验来支持这个观点。

这项研究的结论是,该算法是稳健和简单的,留下了很大的改进空间,在未来的工作。我希望 Synapses 将有助于这一点!

自动驾驶汽车的春天。

原文:https://towardsdatascience.com/the-spring-of-self-driving-cars-e37f76c11586?source=collection_archive---------2-----------------------

三家很酷的公司和他们加速自动驾驶汽车革命的不同方法。

It’s spring for self -driving cars.

时间在流逝,汽车仍在碰撞。

无人驾驶汽车将最终使世界摆脱每年因车祸造成的超过 130 万人死亡的

对于我们何时才能看到完全自动驾驶汽车的大规模部署,有各种各样的观点。

预测范围从 2020 年到 30 年。这一过程极其复杂,将在开始时部署在预先确定的区域。

有很多公司致力于自动驾驶汽车。在本文中,我将展示三家公司以三种截然不同的方式应对挑战的样本。

三家公司三种方法。

Mobileye

[## Mobileye |自动驾驶和 ADAS(高级驾驶辅助系统)

Mobileye 是先进驾驶辅助系统(ADAS)和……

www.mobileye.com](https://www.mobileye.com/)

众包制图和驾驶策略。

英特尔公司 Mobileye 是 ADAS 和自动驾驶汽车行业的先驱公司之一。

Mobileye 以其先进的驾驶辅助系统(ADAS)系统而闻名,正在努力寻求全自动驾驶汽车。

EyeQ 芯片系列是 Mobileye 开发的一系列专用于 ADAS 和最终自动驾驶的 SoC。该系列中的每一个芯片都是一个惊人的工程辉煌壮举,推动了最先进技术的极限。EyeQ4 和 EyeQ5 采用了针对传感器融合和深度学习进行优化的专有架构,以处理来自多个摄像头以及雷达和激光雷达传感器的传感器数据。

自动驾驶的三大支柱 Mobileye 方式如下:

  1. 传感:传感器融合,融合来自摄像机、雷达和激光雷达的传感器数据,用于目标检测和路径规划。
  2. 地图:在所有条件下,用于精确车辆定位的高清地图。与 GPS 相比,提供了更高的精确度,适用于 GPS 信号不可用的情况。
  3. 驾驶策略:驾驶策略是通过使用强化学习从感知状态(对我们周围世界的描述)到驾驶命令的映射,驾驶策略将提供分析多变量情况和与人类驾驶员协商所需的类似人类的直觉和行为。

全球有超过 5000 万辆汽车配备了 Mobileye EyeQ 技术,可以感知周围环境,防止无数事故发生。传感器数据的持续流可用于不断更新和扩展其周围的高清地图,同时提供强化学习算法,从而创建特定地理的驾驶策略。

干邑

[## 科涅塔通往自动驾驶的快车道

通往自动驾驶的快车道为自动驾驶汽车行业提供了驾驶验证平台。

www.cognata.com](http://www.cognata.com/)

模拟城市进行高速验证

Cognata 加快自动驾驶汽车发展的方法是为自动驾驶汽车的验证提供一个平台。

Cognata 估计,一辆自动驾驶汽车需要行驶 110 亿英里才能完全训练好——如果没有模拟,这是不可能的。

Cognata 使用三个步骤模拟整个城市。

  1. 模拟城市的固定资产,包括建筑物、道路、车道标线、交通标志,甚至树木和灌木丛。
  2. 模拟其他车辆和行人的真实交通模型的动态层。添加了当地历史天气条件和照明来对系统进行压力测试。
  3. 结合固定层和动态层来模拟传感器与车辆周围环境的交互,以从每个驾驶员接收最全面的自动驾驶模拟反馈回路。

虽然 Waymo 也在使用模拟器来训练和测试他们的自动驾驶汽车,但 Cognata 正在大规模地这样做。此外,Cognata 正在使用计算机视觉和 GANs 等深度学习算法来重建真实事物的现实表示,为大约 160 个传感器提供必要的交互。这为任何给定的自动驾驶汽车公司提供了一个平台,以有效地验证他们的系统。

科涅塔在 10 月于 GTC 举行的 NVIDIA 盗梦空间奖中获得第一名。

Nexar

[## Nexar | AI 云连接 dashcam

Nexar 是一款免费的 AI 云连接 dashcam。它能立即探测到道路上的危险,并提供救生警告…

www.getnexar.com](https://www.getnexar.com/)

计算机视觉和事故预防 V2V。

Nexar 正在采取一种完全不同的方法。他们不再关注未来,而是接受当下的挑战。改善道路安全,关注人类驾驶员。

通过将无处不在的智能手机用作智能联网仪表盘摄像头,Nexar 利用智能手机的传感器和摄像头来提高道路使用安全性

Nexar 利用先进的计算机视觉和传感器融合算法与驾驶员的智能手机来了解汽车的周围环境,并预测和防止碰撞。

所有这些手机都变成了 AI dash-cam connect,形成了世界上第一个车对车(V2V)网络。

然后对这些数据进行危险驾驶模式分析,并向所有驾驶员提供前方危险的实时警告。

此外,还为汽车、保险和拼车行业提供互联车队安全解决方案以及一系列数据产品和服务。

Nexar 的哲学是,为什么要等 5 年、10 年或 30 年,让机器人来拯救我们。人类司机不擅长驾驶,但通过正确的技术和众包的力量,我们可以共同努力改善现有的系统。

自动驾驶汽车行业也将受益于 Nexar 快速增长的数据集。谷歌的 Waymo 和其他反病毒公司正在少数特定地理位置进行训练和收集数据。Nexar 正在迅速扩展到全球范围。

Nexar 的联合创始人兼首席技术官 Bruno Fernandez-Ruiz 在一篇精心撰写的媒体文章中,解释了持续学习和端到端学习的优点。

[## 边缘持续深度学习的案例

边缘设备和非常大的真实世界驾驶数据集有望实现自动驾驶

blog.getnexar.com](https://blog.getnexar.com/the-case-for-continuously-learning-from-the-edge-7e5f980288f6)

“我们认为,端到端学习需要数量呈指数增长的极限情况数据,你无法在云中构建所有模型。Nexar 的人工智能大脑变得越来越智能,越来越有弹性,因为我们的用户每周驾驶数百万英里,每天都面临新的未知场景的挑战。”

Nexar 还通过发布数据集挑战赛为自动驾驶汽车研究社区做出了贡献。

请在评论中写下你认为正在加速转向自动驾驶汽车的其他公司。

人工智能的现状

原文:https://towardsdatascience.com/the-state-of-ai-25899c7b5341?source=collection_archive---------14-----------------------

- 我在 Google Next 18 学到的东西

人工智能被预测为第三个计算时代,它正悄悄进入我们越来越多的日常生活。现在它也变得基于云,这意味着即使是最复杂的技术也可以为每个人所用。所以是时候开始了。

Can an AI algorithm draw artistic portraits? Today they can.

作者蒂姆·弗兰克·安德森, 首席数字官查理·探戈

几周前,我在伦敦参加了 Google Next 一个有 16000 人参加的会议,涵盖了大多数即将影响我们世界的新技术领域。

在这里,我与来自柏林的 Dixit Algorizmi 画廊的老板就艺术的未来进行了一次非常鼓舞人心的对话,而两个人工智能控制的机器人手臂分别为我画了他们自己不同的肖像。这让我想到,我们在基于机器的智能发展方面已经走了多远。

人工智能(AI)是一个涵盖一系列不同计算技术的术语,从机器学习、深度学习、神经网络到强化学习,所有这些都是在计算机中模拟智能行为。

人工智能研究领域可以追溯到 50 年代。甚至在大约 30 年前我学习成为一名工程师时,我就被教导如何制作自然语言处理算法和编写神经网络代码。

但是从那以后发生了很多事情。看起来我们正处于人工智能的临界点——如果我们还没有越过它的话。

当它开始工作时,我们不再称它为人工智能。许多日常事务已经受到某种人工智能的影响。

每次你打开你的新 iPhone,FaceID 使用人工智能扫描你的脸并识别你,以便解锁你的手机。

每天离开地面的每架飞机都将部分由自动驾驶系统驾驶。

我们用地图甚至 TomTom 导航系统导航的日子已经一去不复返了。现在,一切都在我们的智能手机上,智能地改变我们的路线,让我们在最短的时间内到达目的地。

试着回想一下你的邮箱被垃圾邮件塞满的时候?我向你保证,垃圾邮件仍在发送。但谷歌或微软的智能算法设法删除了 99%的内容,所以这对我们来说不再是个大问题。

想看一部关于网飞的新连续剧吗?嗯,由于模式识别和协同过滤技术,网飞的推荐算法不仅知道你最有可能喜欢哪个系列,还知道哪个独特的展示图像会让你停留最长时间。

如果你碰巧使用谷歌照片,你知道你现在可以用你自己的母语在你的 20,000 多张照片中搜索海龟或绿色汽车,甚至朋友的名字。该应用程序会自动向您显示所需的结果,而无需您为每张照片添加标签——这一切都由基于人工智能的图像识别来处理。

如此缓慢但稳步地,人工智能正在融入我们的日常生活,让我们的生活更智能、更简单、更有效,而我们却不会察觉。因为当它起作用的时候,我们只是称之为导航、搜索或推荐,而没有考虑到其背后的技术。

需要大数据 上述所有例子都严重依赖于对庞大数据集的访问。因为这就是你训练算法的方式。这往往有利于拥有最多客户的公司。

因此,难怪谷歌被认为是世界上领先的人工智能公司。谷歌有 7 个应用程序,每个都有超过 10 亿的月活跃用户(搜索、Gmail、Chrome、Android、地图、YouTube、谷歌 Play 商店),很快还会有更多的应用程序(Google Drive 和 Google Assistant)。

庞大的数据集是让机器学习发挥作用所需的原材料。谷歌有很多。

以他们的自动驾驶汽车项目 Waymo 为例。自 2009 年以来,他们已经在实体道路上自驾超过 1600 万公里。但与模拟驾驶的 110 亿公里相比,这就相形见绌了。所有这些数据结合起来,使他们现在获准在亚利桑那州和加利福尼亚州推出商业无人驾驶汽车服务。这将在 2018 年底实现。

小公司如何与之竞争?幸运的是,谷歌对此有一个答案。谷歌已经拥有ka ggle——世界上最大的数据科学家和机器学习者社区,以及超过 11000 个公开可用数据集的数据库。现在,他们推出了一个名为谷歌云公共数据集项目的开放数据市场。该计划是让每个人都可以使用大数据集,以及必要的工具集,以便以基于云的分散方式开始与人工智能合作。

有什么新消息?这就是我们将要向前迈出一大步的原因之一。对于大多数公司来说,基于庞大数据集的商业人工智能过于复杂和昂贵,无法在内部运行。

因此,这些服务和机会成为基于云的“随用随付”解决方案至关重要。这正是谷歌推出的云人工智能平台。背后的愿景是使人工智能的使用民主化,并使其易于使用,即使是小公司或个人也可以轻松入门。您会发现一个预先训练好的模型列表,所有的工具和 API 都准备好开始使用了。

我们即将见证一次巨大飞跃的另一个突破性原因是为人工智能专门设计的硬件的使用。谷歌现在已经推出了为人工智能任务设计和优化的第三代计算机芯片。它们被称为 TPU(张量处理单元),它们将显著加快大多数人工智能工作的速度。它们现在也可以通过相同的云解决方案提供给每个人使用。

这不是出于利他的原因。当然,这背后是有商业模式的。它是基于服务的——您可以免费获得第一次修复,之后,您可以按使用量付费。但这仍然是一种比在现场建立自己的数据中心和人工智能设施更民主化的模式。

基于集中和边缘,同时 谷歌不是唯一一家开发人工智能专用硬件的公司。苹果最新一代的智能手机使用人工智能进行人脸检测和人像摄影,拥有 A12 芯片,内置的神经引擎每秒可以处理 5 万亿次运算!

世界领先的半导体公司 ARM 推出了 project Trillium ,开启了超高效机器学习的新时代,大部分计算将在设备中就地完成,因此您不必向云发送大量实时数据,只需消化解释即可。

这意味着我们看到了基于巨大数据中心和非常先进的工具的更加集中的基于云的人工智能服务平台和生态系统的双向发展。并且同时向边缘移动,这允许本地和实时数据处理。如果我们想在商业环境中释放人工智能的全部潜力,这两项发展都是必要的。

目的是什么?如果你对技术感兴趣,这一切可能会很有趣,但这就是技术。那么,背后的目的是什么呢?公司希望通过使用人工智能获得什么样的商业价值?

在伦敦举行的 Google Next 大会上,来自空客、ING、Metro AG、汇丰银行和 E.ON 等大公司的首席执行官纷纷登台,解释人工智能如何帮助他们实现预测性维护、欺诈预防、犯罪调查、销售预测和更好的客户服务等目标。

在微软最近发布的报告中:“欧洲的人工智能”,广泛的商业目的被分为五类:

  • 预测
  • 自动化
  • 产生洞察力
  • 个性化
  • 开处方

预测(92%)和自动化(88%)是丹麦最常见的两种方法。

该报告还显示,丹麦公司(25 家受访公司)是欧洲最先进的公司之一,96%的公司表示他们处于人工智能的“试点”阶段或更高阶段。

因此,如果你还没有尝试如何通过使用不同的人工智能技术来获得商业利益,现在可能是时候开始了。

硬币的另一面 有很多问题需要担心。

这是一个仍未成熟监管的领域。数据收集和数据处理存在风险,更不用说信息过载和错误信号的风险。由算法做出的决策远没有人类做出的决策透明,当一家公司需要解释他们基于算法指导采取的行动时,这也带来了巨大的挑战。此外,人工智能和自动化的推广将对就业市场产生巨大影响。

我们真的希望大型国际公司托管我们的数据并运行我们的情报吗?

最后,我甚至还没有提到一个事实,即中国和亚洲其他地区的人工智能发展正以闪电般的速度发生,几乎不为人知。中国是一个拥有 8 亿互联网用户、严密监控、没有数据监管和单点决策的国家,在他们的“中国制造 2025”计划中表示,他们的目标是到 2030 年成为人工智能的世界领导者。他们正在进行中:2017 年,全球人工智能初创企业总股权融资的 48%来自中国。

换句话说,就在我们说话的时候,一场全球性的战争正在发生。它将影响我们所有人,并在未来 5-10 年内改变国家和行业之间的力量平衡。

因此,我强烈建议关注这一领域,开始收集相关的 GDPR 合规客户数据,并开始尝试不同的人工智能技术,无论你从事什么行业。

数据科学和机器学习的现状,第 1 部分:教育、职称和技能

原文:https://towardsdatascience.com/the-state-of-data-science-and-machine-learning-part-1-education-job-titles-and-skills-10034e4cf9a?source=collection_archive---------6-----------------------

去年年底, Kaggle 对 16,000 多名数据科学家进行了一项大规模调查,深入调查了他们的教育水平、本科专业、职称、工资等问题。

该调查提出了近 300 个问题,并提供了关于当今工作数据科学家的角色和背景类型的大量见解,尽管数据集包含大量空值。

在挖掘数据的过程中,我将精力集中在与刚刚开始或期待开始数据科学和机器学习职业生涯的人相关的见解上。

在基于这些数据的两篇文章的第一篇中,让我们深入了解初学者可以从这项调查中获得的见解,特别是关于教育水平、职称和收入。

让我们从做一些基本的探索性数据分析开始。

我们将通过分析受访者被问到的各种问题来探究这些数据。下图显示了加载科学工具(如 numpy、pandas、matplotlib 和 seaborn)以及加载数据集的初始阶段。

让我们看看回答调查的人的年龄分布。

我们看到受访者的平均年龄为 32 岁,大多数受访者的年龄在 25-35 岁之间。

性别认同、地区和就业状况

绘制参与调查的人的性别计数图向我们表明,调查是由男性主导的,男性的回答是女性的三倍多。这反映了该领域的总体趋势。

很明显,大多数回答者来自美国和印度。

由此可见,大部分受访者都是全职工作。

那些没有被雇用的人被问及他们是否在任何学位提供机构注册。下图显示了他们的反应。大多数回答这个问题的人都被某个机构录取了。

职称、学历、专业和教育的实用性

大多数受访者目前的职位是数据科学家,其次是软件 开发人员/软件工程师

这表明大多数受访者拥有硕士学位、和至少学士学位。很大一部分受访者自诩拥有博士学位,但很少有人没有或很少受过正规培训。

显然,在这些领域工作的大多数人都主修数学、统计学或计算机科学(T21)。

大多数被调查的人说大学教育很有帮助;他们中的大多数人都有学士和硕士学位,这并不奇怪。

虽然受访者认为他们的教育水平有助于反映他们的技能,但绝大多数人指出,实际工作经验、他们的投资组合以及在线课程和认证在展示他们的技术实力方面更加重要。

调查结果总结

受访者的平均年龄:32 岁

平均年龄:25-35 岁

性别分布:75%为男性,25%为女性

地点:美国(4197)、印度(2704)、其他(1023)

就业状况:全职(70%)

教育水平:硕士或学士学位

最受欢迎的本科专业:数学、统计学或计算机科学

你怎样才能最好地展示你的技能:实际工作经验、作品集、在线课程和认证

在这篇文章的下一部分,我们将深入以下内容——敬请期待!

  1. 你最初是如何开始你的机器学习/数据科学培训的?
  2. 你会推荐一个新的数据科学家先学什么编程语言?
  3. 在接下来的一年里,你最想学习的工具或技术是什么?
  4. 在接下来的一年里,你最期待学习哪种 ML/DS 方法?
  5. 你写代码分析数据有多久了?
  6. 我应该去哪里找工作?
  7. 美国数据科学家的平均工资

[## Python 中的数据科学训练营

学习 Python 的数据科学,NumPy,Pandas,Matplotlib,Seaborn,Scikit-learn,Dask,LightGBM,XGBoost,CatBoost 等等…

www.udemy.com](https://www.udemy.com/course/data-science-bootcamp-in-python/?referralCode=9F6DFBC3F92C44E8C7F4)

老年人护理产品的现状以及人工智能如何彻底改变老龄化

原文:https://towardsdatascience.com/the-state-of-elderly-care-products-and-how-ai-can-revolutionize-aging-d4b098a1dacd?source=collection_archive---------12-----------------------

最酷的老年护理工具以及人工智能如何彻底改变老龄人口的生活

离开父母生活会很艰难,当他们变老而你又无法照顾他们的时候会更加艰难。感谢这个世纪给我们带来的永无止境的变化,变老不再是过去的样子。

从全球来看,预计到 2050 年,60 岁或以上的人口将翻一番,从 2015 年的 10 亿增加到 2050 年的 21 亿。到 2100 年,预计将增加到 31 亿,接近 2017 年的 3 倍。看到全球老龄化人口的增长前景,辅助生活行业正在快速吸引创新,使护理人员的健康监测变得轻而易举,这就不足为奇了。随着世界各国在未来几十年应对老年人口激增,这些创新正变得越来越重要。他们可能会面临财政和政治压力,以改革医疗保健监控、养老金和为日益增长的老年人口提供社会保护的公共体系。

与任何市场一样,越来越多的产品很难跟踪,为了让混乱的老年人监控市场易于理解,我们提出了一系列有趣的解决方案,在各自的类别中脱颖而出!

无线家庭监控

Gartner 的一份研究报告称,四年后,一个典型的家庭可能会包含多达 500 台智能设备。但是我们为什么在这里谈论他们呢?这些技术有可能让老年人的生活变得更加轻松,尤其是那些行动不便的老年人。

无线传感器网络(WSN)正日益成为辅助生活技术领域的一个热门话题。简而言之,这些产品使用电池供电的无线传感器(而不是实际的可穿戴设备)来测量环境参数,如温度、湿度和光强以及微观事件,从而可以推断日常活动,如移动、坐着、睡觉、使用电器和上厕所。离散的无线传感器被放置在房子的周围来监控活动。护理人员只需登录该产品的门户网站(或查看短信、电子邮件或迷你应用程序),就能知道他们所爱的人在做什么。这些产品中的大多数具有个人紧急响应系统(PERS ),该系统在检测到与个人的普通活动模式的显著偏离和/或突然跌倒时,发出自动警报,该警报可以转发给授权人员。

例如,TruSense 使用一个智能家庭连接设备网络来帮助老年人。它集成了像 Echo Dot 这样的技术,包括一个运动传感器、接触传感器、智能插座和集线器,它们一起工作,提供实时数据。

飞利浦 Hue 智能照明系统可以自动调暗和照亮房屋,帮助老年人入睡和轻轻地醒来。个人可以通过智能手机应用程序进行进一步调整。

缺点是什么?

  • 当老年人不在家时不能用来监视他们。
  • 值得思考的是,传感器是否能捕捉到每一个不寻常的活动,以及重大偏差实际上意味着什么
  • 这样的产品可以同时监控多个人吗?如果你要照顾年迈的父母,这些传感器会监控他们的活动吗?

这一领域的一些著名品牌有 Lively、Canary Care、TruSense、Alarm.com、GrandCare Systems、 Sen.se Mother 和 Motion Cookies三星的 Smarthings 运动传感器和prevention ce的 Bodyguardian Heart。它们的价格在 150-250 美元之间,每月订阅费为 20-30 美元,在美国和欧洲的特定地区提供。

对聊养老和 AI 感兴趣?和我一起进行 30 分钟的免费咨询(5 美元的报名费将在通话后退还)。通过日历 安排与我的时间

带个人应急响应系统的可穿戴设备(PERS)

高级可穿戴设备可以让穿戴者和护理者的生活更加轻松,这已经不是什么新闻了。然而,值得注意的是,这些先进的医疗保健技术模型如今不仅仅是跟踪脚步——它们可以监控日常活动,发送警报,甚至防止跌倒。智能可穿戴技术有多种形式:吊坠、手表和鞋底。

与市场上的许多高级护理产品相反, CarePredict Tempo 监测佩戴者,而不是周围的环境。作为腕带佩戴,它可以监控运动、睡眠、位置、个人护理和日常活动。在了解了高级佩戴者的日常生活模式后,Tempo 可以在任何偏离正常模式的时候提醒家人。它无需电线即可充电,并配有一个呼叫按钮,可作为个人紧急响应系统。(PERS)

新的苹果手表应用程序旨在保护老年家庭成员的安全。这款应用程序简称为“Alert”,类似于一个紧急按钮,允许老年人或其他需要帮助的人通过触摸按钮联系护理人员寻求帮助。就当是那些“我摔倒了,爬不起来了!”过去电视购物中的设备。由于 watchOS 2 操作系统的变化,该应用程序还可以关注生理信号,并建议老年人在问题实际成为问题之前请求帮助。对于那些患有限制运动或言语的疾病的人来说,这款应用程序尤其方便。

GreatCall 的圆滑活泼,兼做手表和吊坠,大概是市面上最好看的高级可穿戴设备了。这款设备类似于 Apple Watch,防水且易于使用,长效电池可连续使用长达 6 个月。这款手机也有一个 PERS 按钮,可以将用户直接连接到代理,代理可以根据情况采取适当的行动——无论是联系紧急医疗队还是给家人打电话。

GPS SmartSole 是总部位于加利福尼亚州的 GTX 公司销售的一款产品,是一款可修剪的鞋垫,它结合了 GPS、蜂窝、蓝牙和 Wi-Fi 技术来捕捉数据,记录穿着者的位置,并将数据无线传输到云端,护理人员可以通过门户网站或应用程序访问这些数据。相关的应用程序还允许位置共享,让你随时随地关注你爱的人。

可穿戴设备的缺点:

  • 极易受到外部损坏和盗窃
  • 不支持摄像头监控;需要一个额外的设置
  • 要求用户戴上设备并保持开机状态

其他产品包括飞利浦医疗保健的 GoSafe、 MobileHelpAlert1Connect AmericaLife AlertFreeusprevenice的 Holter 和 BodyGuardian Verite 是高级智能可穿戴领域其他值得一试的标志性产品。其中大多数一次性费用为 150-200 美元,每月订阅费用为 30-50 美元。

药物管理系统

你上次忘记吃药是什么时候?虽然这看起来没什么大不了的,但随着年龄的增长,这种灾难会变得越来越严重。根据《风险管理和医疗保健政策》2014 年的一份报告,医疗保健系统每年因药物不合规而损失 1000 亿至 3000 亿美元。不遵从的原因很常见——忘记按时补充药物或忘记按时服药,或者因为否认疾病或避免副作用而拒绝遵从。

就像所有这些创新还不够一样,我们现在有了支持传感器的包装,可以跟踪容器中剩余的药丸数量,并在需要服用更多或重新订购处方时通过智能手机应用程序发送警报!

MedMinder 药丸分配器通过一系列可选的视觉和/或听觉警报提醒用户服药。首先,隔间会闪烁,然后药丸分配器会发出哔哔声,然后用户会收到电话提醒。如果用户仍未服药,那么将通过电话、电子邮件和/或短信通知所有护理人员。同样的技术可以用于防止脱水:传感器可以跟踪容器中剩余的液体量,并在该再喝一杯的时候提醒老年人。

单个药丸也可以嵌入可摄取的传感器。一旦药丸到达胃部,它就会向外部设备发送信号,如佩戴在身体上的贴片,以确保正确的剂量和用法。贴片记录数据,并将其传递给患者和医疗保健专业人员。患者还可以通过智能手机应用程序访问这些信息,这样他们就可以了解自己的情况,并努力改善自己的习惯。

提醒 Rosie 是另一款使用声控技术的产品。使用 Rosie,您每天可以录制多达 25 个提醒,并通过简单的语音命令查看当天的提醒,以便您保持控制。

Tricella 在药物跟踪领域也做了一些出色的工作,并将其产品运往美国、加拿大、英国、意大利、西班牙、法国、香港和日本。 CareZone 是一款你设置的免费应用程序,当该吃药的时候,它会让手机发出嗡嗡声。你们可以分享药物和其他重要信息。最酷的功能:拍摄一张药瓶的照片,上传,它会被转录并添加到药物清单中。虽然该细分市场中的一些产品以每月 50-60 美元的订阅价格出售,但其他产品的一次性费用约为 80 美元。

对聊养老和 AI 感兴趣?参加我的 30 分钟免费咨询(5 美元的注册费将在电话后退还)。通过日历 安排与我的时间

人工智能老年护理:老年护理的下一步

世界瞬息万变。人工智能技术不仅占据了空间和生产,还占据了我们的人类互动。最后,它开始为人类的日常必需品服务,特别是我们的老年人。

医院的 AI 可以帮助临床医生识别医疗风险;预测何时提供有针对性的拯救生命的干预措施;对罕见病患者形成治疗方案;并提供精准医疗。

例如,让老年人了解他们附近的社会活动可能会鼓励他们走出家门,与他人互动,减少社会孤立。分享带有健康促进信息的故事可以娱乐和潜意识地提供健康生活的教育。AI 建议选择更健康的食物,并鼓励他们积极运动,这有助于养成更健康的习惯。人工智能还可以从社交媒体网站上更新老年人关于他们孩子的信息,让他们更多地参与到家庭中来。

未来医疗保健领域的人工智能可能会围绕社交机器人、聊天机器人和语音助手的结合展开。

辅助社交机器人,一种特殊类型的辅助机器人,设计用于与人类进行社交互动,可以在老年人的健康和心理健康方面发挥重要作用。这种机器人被开发为老年人与数字技术的接口,并分别通过提供陪伴来帮助提高老年人的生活质量。索尼的艾博、ISRI 和 AIST 的 Paro、飞利浦的 iCat 和卡耐基梅隆大学的 nurse bot Pearl 已经在以实际的老年人为对象进行测试。

聊天机器人也越来越受欢迎,但它们相对较新,大部分仍在开发中。聊天机器人提供经医疗专业人员授权的信息,如果问题严重,还可以预约,或者通过对健康相关问题给出具体答案来缓解压力。

大量研究表明,老年人开始与人工智能聊天机器人建立某种形式的关系。社交机器人也可以调整他们的参与度,开始推动自我关心的行为。

越来越多需要定期保健的人正在购买语音辅助和识别设备。语音支持技术的数量正在不断增加,越来越多经验丰富的患者更倾向于使用这些工具。市场上有一个应用程序,可以帮助患者通过不同的服务预订他们往返医疗机构的旅程。在搜索医疗信息时,语音搜索对许多老年人非常有益。

人工智能在健康方面的力量似乎在于应用的结合,在未来我们可以看到所有这些应用的融合。临床应用将继续投入,并将变得越来越强大,以维持人们的生命。基于同理心的人工智能应用程序支持护理的软性方面,可以帮助我们让人们完全不需要临床治疗。人工智能在连续护理领域的商业案例可能确实非常强大,对健康结果的影响可能确实具有变革性。

对聊养老和 AI 感兴趣?和我一起进行 30 分钟的免费咨询(5 美元的报名费将在通话后退还)。通过日历 安排与我的时间

享受信息?尽可能多的点击下面的按钮!

咱们也连线上 推特 或者 LinkedIn

无人驾驶汽车的现状🚶🚘

原文:https://towardsdatascience.com/the-state-of-self-driving-cars-for-everybody-29446c1c2e2c?source=collection_archive---------4-----------------------

汽车中的人工智能

随着自动驾驶技术的快速发展,为什么我们今天没有使用自动驾驶汽车?

Photo by Rowan Heuvel on Unsplash

如今,开车本身似乎是微不足道的。硬件、软件和算法可以说已经足够复杂,可以让汽车在街道上自主导航。为了证明这一点,请参考下面展示 Waymo 当前自动驾驶汽车能力的视频。

Video published by Waymo here: https://www.youtube.com/watch?v=aaOB-ErYq6Y#action=share

大众与苹果合作开发无人驾驶巴士,并展示他们的无人驾驶汽车 SEDRICWaymo 在内华达州凤凰城的封闭测试版中测试他们的自动驾驶车队。特斯拉号称所有车型都有自动驾驶功能。 Drive.ai 在德克萨斯州的弗里斯科宣布了他们第一辆公开发售的自动驾驶巴士。很难找到一家汽车制造商不展示自动驾驶汽车的工作。

自动驾驶汽车有机会降低全球事故率,拯救数百万人的生命。它们有可能把司机从乏味的驾驶任务中解放出来。它们将改善行人和骑自行车者的安全。

如果汽车可以做到这一点,并提供这么多好处,为什么我们现在不在自动驾驶汽车上阅读这篇文章呢?

Photo by Matthew Szlichta on Unsplash

大规模生产自动驾驶汽车(SDC)面临着明显的挑战。解决这些挑战对世界各地的汽车制造商来说非常重要。这篇文章探讨并解释了使 SDC 为每个人所用的六个基础设施挑战。

根据标准化协会 SAE International 的定义,开发 SDCs 分为六类。0 级定义为完全没有自主权,而 5 级为乘客提供绝对自主权。下图解释了每个自动化级别的功能。今天,大多数现代汽车提供 2 级和 3 级之间的功能。

Source: https://goo.gl/RWvo2N

要达到 5 级自主并在驱动器上享受个人自由,需要克服以下障碍。

我们开门见山吧。🚗 🚙 🚘 🚖 🚍

1.数据存储

无人驾驶汽车会产生大量数据。据英特尔称,自动驾驶汽车将在一天内创建 4TB 的原始数据。让 2500 辆汽车上路,你每天很快就会产生 1pb 的数据。还有,你有没有试过在数十亿字节的数据中搜索?一点都不好玩。收集的数据规模庞大,需要精心设计的数据存储架构。

Source: https://intel.ly/2fueVli

一些数据位也需要存储在车辆中。定义存储哪些数据是一部分。视频是产生的绝大部分数据的来源。压缩或压缩相机图像并非对所有使用情况都可行。

一辆面向大众市场的汽车的运营利润率大约为 2 万美元的汽车的 5%。这为每辆车带来了大约 300 美元的利润。说服产品所有者为每辆车花 100 美元购买一个大容量的硬盘来存储数据是很难的。

2.数据传输

一旦生成了万亿字节的数据,就需要从汽车中提取出来。大多数汽车还没有享受永久的 5G 互联网连接,因此通过空中传输所有数据具有挑战性。

如果你有一个 50 兆比特/秒的互联网连接,理论上你可以在 24 小时内上传大约 4TB 的数据。如果你有很多车,你需要线性增加带宽。如果生成的数据量增加,互联网连接的带宽也需要增加。SDC 可以轻松测试世界许多地方现有互联网基础设施的物理极限。

3.传感器费用

What a Waymo car “sees”. Source: https://bit.ly/2rsK25r

SDC 通常通过相机图像和雷达技术激光雷达感知其环境。虽然相机很便宜,但激光雷达非常昂贵。一个来自威力登的新激光雷达传感器的价格大约为75,000美元,这已经超过了我们愿意为整辆汽车支付的价格。汽车制造商可以考虑以低于生产成本的价格出售 SDC。然后他们可以通过车载娱乐等数字服务把钱拿回来,但这是一个冒险的赌注。Waymo 声称已经在内部开发了自己的激光雷达传感器,并随后将其成本降低了 90%。这可能是在大规模生产的车辆中使用激光雷达的一种方式。

有人试图仅基于相机图像来驾驶自动驾驶汽车,就像这篇论文中介绍的那样。特斯拉主要依靠相机图像来驾驶汽车,以避免激光雷达的高成本。但只要激光雷达对于大多数环境感知功能来说是必要的,它将仍然是汽车制造商开发第 5 级自动驾驶汽车的昂贵“拐杖”。

“在我看来,(激光雷达)是一根拐杖,它将把企业推向它们将很难摆脱的局部最大化。也许我错了,我会看起来像个傻瓜。但我很确定我不是。”— 特斯拉首席执行官埃隆·马斯克

4.训练数据采集

据目前估计,SDCs 必须行驶约 1 亿英里才能收集到足够的数据来安全自主导航。Waymo 于 2018 年 2 月完成了第 500 万英里的驾驶。尽管速度稳步增加,但鉴于目前的速度,Waymo 将需要很长时间才能行驶完剩余的里程。公司也每天驾驶数百万虚拟英里数。但是在现实世界中收集结果是非常耗时的。

Source: https://waymo.com/ontheroad/

注意 Waymo 获取数据的节奏。虽然该公司花了 6 年时间驾驶第一个一百万英里,但它在 3 个月内驾驶了最近的一百万英里。令人印象深刻,但前面的路还很长。

5.拐角情况数据的采集

在特斯拉(Tesla)和优步(Tesla)的自动驾驶汽车发生悲剧性事故后,对拐角案例训练数据的需求变得越来越重要。拐角情况是很少发生的情况,例如行人意外踩在街道上或在街道中间放置混凝土块。有在高速公路上驾驶的数据固然很好,但更多的价值在于极限情况下的训练数据。Waymo 显然是通过随机跳到自动驾驶汽车前面并检查它是否停下来来测试它的自动驾驶汽车。目前的研究领域包括从模拟环境中创建极限情况数据或通过文本到视频转换系统创建人工数据。

6.验证深度神经网络

理解为什么或为什么没有 SDC 识别另一辆汽车是至关重要的,以说服监管机构这些汽车对于公共使用来说是足够安全的。SDC 依赖于深度学习算法,这些算法因没有解释它们为什么以这种或那种方式做出决定而臭名昭著。

在一个著名的项目中,研究人员训练了一个神经网络来区分狼和狗。这个模型达到了惊人的精确度。然而,研究人员最终发现,神经网络学会了检测图像上的雪,因为大多数狼的训练图像都在背景中包含雪。这不是网络应该得出的结论。

https://arxiv.org/pdf/1602.04938.pdf

在监管机构允许汽车在公共道路上自动驾驶之前,他们需要验证车辆是安全的。

这份清单涵盖了为大众生产无人驾驶汽车的基础设施问题。这个列表可能不全面,但它提供了一个概述。你已经看到了无人驾驶汽车给每个人带来的问题。有什么解决方案建议?

如您所见,在验证算法和扩展 SDCs 的数据训练和存储能力方面,仍有许多工作要做。如果你认为变通的 SDCs 很重要也很有趣,可以随意查看美国旧金山湾区的电子研究实验室,慕尼黑的自动智能驾驶有限公司,或者柏林的 Carmeq 的招聘信息。

如果你喜欢这篇文章,请不要忘记展示你的💛穿过👏 👏 👏并在 MediumLinkedIn 上关注我。你也可能喜欢 这些 帖子。如果你认为有什么需要补充的,请评论。干杯!☮️

… &谎言的统计

原文:https://towardsdatascience.com/the-statistics-of-lies-8e819cfd495f?source=collection_archive---------5-----------------------

现在,彻头彻尾的谎言和假新闻比以往任何时候都有增加的趋势吗?感觉的确如此。我想知道我们是否可以通过获取数据和使用统计数据来发现、证明或否定这些假设?

直到最近,我还一直认为,通过科学、技术和人类与生俱来的好奇心,对历史和当前事件的任何误解正在被揭示和纠正——尽管是缓慢的、渐进的,但却是持续的。

现在,由于任何白痴都可以在全球范围内以越来越大的频率和流行度抛出自己的议程(或点击他人的议程),似乎对真实事实的争夺无助地淹没在误解和错误信息的浪潮中。

我对真相的责任归属感到矛盾。历史被民主化地掌握在许多人的手中,不管有没有维基百科,这意味着我们这些业余爱好者已经把所有的新闻都变成了一场持续不断的“我的事实对你的虚构”的皇家战争。唉,过去已经今非昔比了…但是奥威尔很久以前就知道了。

我希望对“事实”消费的松懈、夸张的报道、点击诱饵新闻以及意识形态意图的简单渎职有自我纠正的疗法……而不是无知就是力量。

一个糟糕的火车测试分裂的故事

原文:https://towardsdatascience.com/the-story-of-a-bad-train-test-split-3343fcc33d2c?source=collection_archive---------16-----------------------

将数据集拆分为训练测试集有时可能比预期的更复杂

大约一年前,我们在一个模型中加入了一种新的功能,用于向用户推荐内容。我说的是内容项的缩略图:

到目前为止,我们一直使用项目的标题和元数据功能。与缩略图相比,标题更容易使用——机器学习方式。

我们的模型已经成熟,是时候给聚会添加缩略图了。这个决定是我们在列车测试分割程序中引入可怕偏见的第一步。让我来展开这个故事…

设置场景

根据我们的经验,很难将多种类型的功能整合到一个统一的模型中。所以我们决定一步一步来,将缩略图添加到只使用一个功能的模型中——标题。

在使用这两个特性时,有一件事需要考虑,那就是数据泄漏。当只处理标题时,您可以天真地将数据集随机分成训练测试——在移除具有相同标题的项目之后。但是,当您同时处理标题和缩略图时,您不能应用随机拆分。这是因为许多项目共享相同的缩略图或标题。库存照片是跨不同项目共享缩略图的一个很好的例子。因此,记忆它在训练集中遇到的标题/缩略图的模型可能在测试集中具有良好的性能,而在泛化方面做得不好。

解决办法?我们应该分割数据集,使每个缩略图要么出现在训练中,要么出现在测试中,但不能同时出现在两者中。标题也是如此。

第一次尝试

嗯,听起来很简单。让我们从最简单的实现开始。我们将数据集中的所有行标记为“train”。然后,我们将迭代地将行转换成“test ”,直到我们得到期望的分割,比如说 80%-20%。转换是如何完成的?在循环的每一步,我们将选择一个随机的“train”行,并标记它进行转换。在转换之前,我们将检查具有相同标题/缩略图的所有行,并对它们进行标记。我们将继续这样做,直到没有更多的行,我们可以标记。最后,我们将标记的组转换为“测试”。

然后事情升级了

乍一看,这个天真的解决方案似乎没什么问题。每个缩略图/标题出现在训练或测试中。那么问题是什么呢?

首先我会给你看问题的症状。为了能够比较只有标题的模型和使用缩略图的模型,我们对只有标题的模型也使用了新的分割。它应该不会对它的性能产生影响,对吗?但是后来我们得到了以下结果:

在最上面一行,我们看到了我们已经知道的:只有标题的模型在训练集上具有更高的准确性,并且准确性不受分割比率的显著影响。

问题出现在最下面一行,在这里我们应用了新的分割方法。我们期望看到类似的结果,但是只有标题的模型在测试中更好。什么?….不应该是那样的。此外,性能受比率的影响很大。有些可疑…

那么问题潜伏在哪里呢?

你可以把我们的数据集想象成一个二分图,一边是缩略图,另一边是标题。如果存在具有缩略图和标题的项目,则缩略图和标题之间存在边缘。

我们在新的分割中有效地做的是确保每个连接的组件完整地驻留在训练集或测试集中。

事实证明,分裂是有偏差的。它倾向于为测试集选择大的组件。假设测试集应该包含 15%的行。你以为它含有 15%的成分,但我们得到的是 4%。

第二次尝试

我们所做的有什么问题?当您随机对一行进行采样时,从特定组件获得一行的概率与组件的大小成比例。因此,测试集以少量大组件结束。这可能违反直觉,但这里有一个代码片段,您可以尝试亲自体验一下:

import numpy as np
import matplotlib.pyplot as plt def train_test_split(component_sizes, test_size):
  train = component_sizes
  test = []
  while sum(test) < test_size:
    convert = np.random.choice(range(len(train)),
                               p=train.astype('float') / sum(train))
    test.append(train[convert])
    train = np.delete(train, convert)
  return train, test component_sizes = np.array(range(1, 10000))
test_size = int(sum(component_sizes) * 0.5)train, test = train_test_split(component_sizes, test_size)
plt.hist([train, test], label=['train', 'test'], bins=30)
plt.title('Distribution of sizes of components', fontsize=20)
plt.xlabel('component size', fontsize=16)
plt.legend(fontsize=14)

训练集和测试集之间的组件大小分布是不同的。

现在,我们通过二分图更好地形式化了我们正在做的事情,我们可以通过随机抽样连接的组件来实现拆分,而不是随机抽样行。这样,每个组件都有相同的概率被选入测试集。

关键外卖

将数据集分成训练测试的方式对于项目的研究阶段至关重要。在研究过程中,您花费了大量的时间来观察测试集的性能。构建测试集以代表推理时发生的事情并不总是简单明了的。

以向用户推荐一个项目为例:您可以推荐一个全新的项目,也可以推荐一个过去已经向其他用户展示过的项目。两者都很重要。

为了了解模型在研究阶段的离线情况,您必须构建一个测试集,其中包含全新的项目和出现在训练集中的项目。合适的比例是多少?很难说…我想这可以成为改天另一篇文章的主题🙂

原文由我在发表。

成功的数据科学求职

原文:https://towardsdatascience.com/the-successful-data-science-job-hunt-6131bf80dd75?source=collection_archive---------2-----------------------

本文的重点是从头到尾向您展示成功的数据科学求职是什么样的。系好安全带,朋友们。我要把你从被解雇的第一天带到我接受工作机会的那一天。说真的,那是紧张的两个月。

我拥有统计学硕士学位,自 2010 年以来一直从事高级分析工作。如果您是该领域的新手,您的体验可能会有所不同,但希望您能够利用大量的此类内容。

我们将讲述我如何利用 LinkedIn,跟踪所有的申请,在搜索时继续提高你的技能,当你收到邀请时该做什么,以及如何谈判。

第一天被解雇

Vistaprint 决定裁员 2000 万美元,我是其中一员。我意识到目前市场很热,所以我从第一天起就很乐观。我收到了遣散费,这是一个让我认真思考下一步该怎么走的机会。

我第一次染了亮粉色的头发后 4 天就被解雇了,这太糟糕了。

4 days after I was laid-off, sporting my pink hair. That’s my little man, Harry. He was almost 3 months when I was laid-off.

实际上,我带着我的粉红色头发去参加了一次工作面试,他们很喜欢。然而,我决定在接下来的搜索中让我的头发恢复自然的颜色。

我做的第一件事:

招聘人员经常在 LinkedIn 上找我。我总是回复。

虽然如果你刚刚进入这个领域,你可能不会在你的 LinkedIn 邮件中有招聘人员过去的信息,但我提到这一点,以便你可以在你的剩余职业生涯中开始这样做。

现在我正在寻找,我的第一个行动是浏览这个列表,给每个人发信息说:

“你好(招聘人员),我正在寻找一个新的机会。如果有你想填补的合适的职位,我愿意和你聊聊。”

有很多人回复说他们有一个角色,但是和他们谈过之后,现在这个角色似乎不太适合我。

除了联系那些联系过我的招聘人员,我还在谷歌上搜索(和 LinkedIn 搜索)来寻找分析领域的招聘人员。我也向他们伸出手,让他们知道我正在寻找。你永远不知道谁会知道一些还没有出现在求职公告板上,但很快就会出现的事情。

第一次见到职业蔻驰

作为裁员的一部分,Vistaprint 给我安排了一个职业教练。她教给我的信息非常有价值,我将在我的职业生涯中使用她的建议。我见过转型解决方案的琼·布莱克。在我们第一次见面时,我带着我的简历,我们讨论了我对下一个角色的期望。

因为我的简历和 LinkedIn 在过去取得了成功,她没有改变我简历上的太多内容,但我们确实把我的技能和经验放到了最上面,把我的学历放在了最下面。

他们还将其格式化以适合一页。它开始变长了,但是我相信一页简历。

This is my resume. While it may not be the most beautiful resume ever, it got the job done and I’m happy with it.

我还确保在我的申请中附上一封求职信。这给了我一个机会,可以明确地说我的资格与他们的工作描述非常匹配。这比必须通读我的简历寻找流行语要清楚得多。

我保存了一份我申请的所有公司的电子表格。在这个电子表格中,我会输入一些信息,比如公司名称、完成申请的日期、是否有回音、最后更新时间、是否发了感谢信、招聘经理的姓名等等。

这有助于我记录飞行中所有不同的事情,以及我是否能做些什么来保持这个过程。

每个应用程序:

对于我申请的每一份工作,我都会在 LinkedIn 上进行小小的搜索。我会看看我的关系网中是否有人目前在这家公司工作。如果是这样,他们可能想知道我在申请,因为很多公司都提供推荐奖金。我会给那个人发信息,说些类似这样的话:

嘿米歇尔,

我在申请 __________ 的数据科学家职位。你愿意推荐我吗?

如果我的网络中没有为该公司工作的人,我就会试着找到该职位的招聘经理。很可能是“数据科学和分析总监(或副总裁)”之类的头衔,或者其他类似的称呼,你要找的是决策者。

这需要 LinkedIn Premium,因为我要发送一封电子邮件。我给招聘经理/决策者的信息应该是这样的:

嗨肖恩,

我对远程数据科学职位很感兴趣,我希望我能把我的简历交到合适的人手里。我有统计学硕士学位,加上 7 年的实际建模经验。我擅长 SQL,用 R 建模,对 Python 也有一些了解。

我很高兴有机会与合适的人谈论空缺职位,并分享我如何通过使用统计方法为公司提供见解和附加值。

谢谢克里斯汀

大多数人都做出了回应,当我告诉琼(职业教练)我在 LinkedIn 上的成功时,她很惊讶。

我开始申请工作,并开始拥有“手机屏幕”

手机屏幕基本上都一样。有些人比其他人更激烈,时间更长,但他们都在半小时左右,他们通常是和人力资源部门的人在一起。因为是人力资源部门,你不想太深入地了解技术方面的东西,你只是希望能够通过这个阶段,然后写一封短信感谢他们的时间,并尝试在你能够与招聘经理交谈时坚定立场:)

介绍一下你自己:

人们只想听到你能说出你是谁,你在做什么。我的是某种变体:

我是一名数据科学家,拥有 7 年使用统计方法和分析解决各行业业务问题的经验。我擅长 SQL,R 建模,目前正在学习 Python。

你想做什么?

我会确保我想做的事情与职位描述直接相关。说到底,这是“的一些变种,我希望不断学习新的工具、技术和技巧。我想致力于增加商业价值的有趣问题"。然后我会谈论工作描述中的一个项目听起来有多有趣。

你希望的薪水是多少?

如果你能避免这个问题,你会被问到,但是试着转向不同的方向。你可以回答“我过去一直得到公平的报酬,我相信为[插入公司名称]工作也会得到公平的报酬。你知道这个职位的工资范围吗?

他们会知道这个职位的范围,但他们可能会告诉你他们不知道。大多数情况下,我会最终让步,给他们我的薪水,这并不意味着当你收到一份工作邀请时,你就不能讨价还价了。

与此同时,我还在学习,我可以在采访中这样说:

如果我要告诉每个人我非常喜欢学习技术,那么我最好是“言行一致”。虽然我在不断学习,因为这是我的天性。确保如果你说你在学习新的东西,你真的在学习它。我选的课程是:

免责声明:这是一个附属链接,意思是说,如果你最终报名参加这个课程,我将免费为你赚取佣金。

本课程将介绍基本的列表,数组,元组,定义函数..但是它也介绍了如何访问和解析 web 数据。我一直想知道如何访问 Twitter 数据以供未来分析,所以这非常酷。专业化(这是 Coursera 上一系列课程的名称)也给出了如何构建数据库的简要概述。这对我来说是一个额外的收获,因为如果我想操作一个模型,我会想知道如何从 Python 写一个数据库表。总的来说,我发现这门课很好地利用了我的时间,而且我学完这门课后能够聪明地与事物交流,这是我在学这门课之前无法做到的。

亲自面试:

一篇关于当面采访的深度文章来了。一旦它建立起来,我会把它链接到这里!数据科学面试肯定有一个非常标准的流程。

或者你可以随时加入我的邮件列表,确保你不会错过它!这里

你被告知你将会收到一份工作邀请:

太好了!你会得到一份工作。在这一点上,你想打电话给你会考虑录用的所有其他公司,并说“我被告知我正在等待一份录用通知,你能做些什么来加快你的过程吗?”

我向两家公司提到了这一点。其中一个确实加快了他们的进程,并导致了额外的报价。

谈判:

电话响了,你接了。就这样,你得到了第一份工作。是时候谈判了。只有相对较小比例的人谈判过他们的薪水,当我们谈到女性时,这个比例就更小了。

女士们!谈判!我在这里支持你,你能行的。

过渡解决方案的琼曾在这方面指导过我。她说“不要试图为他们解决问题”。

当他们打电话给你时,让他们知道他们打电话给你你有多兴奋,你有兴趣听听他们的提议。

一旦你听说了薪水、休假时间,以及他们会把福利信息发给你,你就可以这样说:

非常感谢你的邀请,我真的很感激。你知道,我希望你能在薪水上做得更多。

然后等待回应,再次保持乐观。他们很可能会说,他们需要将这些信息反馈给招聘经理。

谢谢你。我会花些时间看看福利待遇。我想在 ____ 再次发言。我很有信心我们可以结束这一切。

然后你就可以离开谈话,确定下一次和他们谈话的具体时间,让他们知道你很高兴收到他们的来信,所有这些都是积极的!

我成功地谈妥了我的提议,一周后开始工作。我对我现在的位置和我正在做的工作非常满意。我花了很多时间去申请,也花了很多时间去和那些不是“最佳人选”的公司交流,但这是值得的。

总结一下我的求职。我了解到,有针对性的求职信和直接在公司网站上申请会大大提高你的申请回复率。我了解到,你可以有效地利用 LinkedIn 找到一个职位的决策者,如果你非常适合,他们会帮助你推进这个过程。我也对自己表达技能的能力有了极大的信心,这来自于实践。

我祝你在狩猎中取得巨大成功,我希望这篇文章中有一些你能够使用的技巧:)

如果你想把我的文章直接发到你的邮箱,你可以注册:这里

Z 分数惊人的长寿

原文:https://towardsdatascience.com/the-surprising-longevity-of-the-z-score-a8d4f65f64a0?source=collection_archive---------1-----------------------

Europe in 1730

1730 年 66 日星期二的深夜,亚伯拉罕·德莫佛跌跌撞撞地从考文特花园的一家咖啡馆里走了出来,由于喝了太多的杜松子酒,又上了几个小时的课,还在赌博,他还有点晕头转向。

他可能会停下来,凝视着星星,思考这个世界会如何记住他。作为一个以教数学为生的贫穷法国移民,他不会想到他的理论会在近 300 年后对人工智能产生影响。

亚伯拉罕·德莫佛以他的著作《》奠定了概率论的基础(1718 年第一版)。

具体来说,在他的书的后期版本中,德·莫维尔记录了第一个已知的关于二项分布近似的陈述,现在通常称为 正态分布 。此外,他还证明了中心极限定理的一个特例。这些原理的发现对于统计分析的重要性,就像有花边的皮球的发现对于足球的重要性一样。

正态分布可以通过均值(μ)和标准差(σ)来描述。在正态分布中,我们可以观察到大约 68%的观察值在平均值的一个标准偏差内,大约 99%的观察值在平均值的三个标准偏差内。标准差(σ)是对平均值支出的度量。

通过高斯函数描述的完善的正态分布为数值观测值创建了一般的测量可比性规则,并返回其概率。

Gaussian Function source:http://www.drcruzan.com/Images/ProbStat/Distributions/GaussianFunctionWithExplanation.png

这种标准化正是 z-score 变得非常方便的地方。

z-score function

标准化以便更好地比较

比方说,德莫维尔先生想比较他的学生在代数方面是否和他们在几何方面一样好。显然,他会绘制两个数据系列的分布图。

代数的平均分是 50,我们计算出标准差是 10。我们可以将 z 得分计算为(得分均值)/标准差= (X-50)/10

几何的平均分是 70,我们计算出标准差是 10。我们可以将 z 得分计算为(得分均值)/标准差= (X-70)/10

如果 know de Moivre 最喜欢的学生在两次考试中都得了 60 分,那么她在代数考试中就会比平均水平高出 1 个标准差。

然而,对于几何测试,她将比平均值低 1 个标准差。

或者换句话说,在代数方面,84%的其他学生(低于平均值 50 %+半标准差 34%)会更差;在几何方面,84%会更好。

现在我们有两个均值不同的数据序列。有没有可能通过这两次考试的表现来预测学生未来的总体表现?当然是了。

在许多统计应用中,通常将观察值标准化为标准正态分布;均值(μ) =0,标准差(σ) = 1 的正态分布。

我们简单地计算所有观察值的 z 分数,瞧,我们有了标准尺度上的所有观察值。

标准分数对于评估学生的表现有几个好处。如果你简单地计算样本的平均等级,你肯定会得到学生所处位置的意见,但是接近平均值的等级差异与其说是能力差异,不如说是分布的极端差异。或者换句话说,在 100 名学生的小组中,排名第一和第五的人之间的差异通常大于排名第五十一和第五十五的人之间的差异。

离群点检测

在将这些衡量标准转换成z-分数后,你再将它们相加,你就有了每个员工的公平评分。评级假设所有三项指标同等重要。

我们可以看到,学生 3 的表现比其他两个学生差得多。因此,学生 3 可以被看作是一个需要特殊支持的局外人。用于异常值检测的常用阈值通常是 z 分数 3 或-3,即偏离平均值超过 3 个标准偏差。如果你需要决定支持谁,显然是学生 3。但是离群点检测不仅对数据探索有用。对于金融服务中的欺诈检测,异常值检测是机器学习的一种常用应用,可改善借贷操作。

特征缩放

事实上,机器学习中的大多数聚类算法工作得更好,甚至需要使用 z 得分或最小-最大归一化来进行数据归一化。在 ML 中,这个步骤也称为特征缩放。例如,利用观测值之间的欧几里德距离度量,利用 k-最近邻来应用特征缩放。

甚至像谷歌 Tensorflow 这样的尖端 ML 库也严重依赖于一项近 300 年前的技术。然而,亚伯拉罕·德莫佛从未看到他的研究如何对这个世界产生影响。尽管他是尊贵的皇家学会的会员,他死时还是一个穷人。

来源:

* [## 杜松子酒热潮-维基百科

杜松子酒热是 18 世纪上半叶的一个时期,当时杜松子酒的消费量在很大程度上迅速增加

en.wikipedia.org](https://en.wikipedia.org/wiki/Gin_Craze) [## 标准分数-维基百科

在统计学中,标准分数是标准偏差的有符号数,通过它,观察值或…

en.wikipedia.org](https://en.wikipedia.org/wiki/Standard_score)

本文由 tenqyu 为您带来,这是一家利用大数据、机器学习和大量创意让城市生活变得更加有趣、健康、包容和繁荣的初创公司。*

1001 个黑盒的故事

原文:https://towardsdatascience.com/the-tale-of-1001-black-boxes-62d12b5886aa?source=collection_archive---------18-----------------------

或者为什么我认为亚马逊“种族主义”人工智能的故事实际上留下了乐观的空间

如果你能上网,并且对人工智能感兴趣,你会偶然发现亚马逊最近的一个故事,它试图建立一个机器学习算法(或花哨的术语“人工智能”)来使的招聘过程自动化,结果发现它会惩罚包含“女性”一词的简历(例如,所有女子大学的候选人)。

正如任何季节性的“AI 变坏”新闻故事一样,首先必须打破一些神话。通常的反对意见通常有以下几种形式:“如果女子学院的毕业生真的不够格,为什么惩罚她们就应该算作歧视呢?”

记住上下文在这里是至关重要的。通过使用自己的招聘记录作为训练数据,亚马逊没有建立一个人工智能来学习如何聘用成功的候选人;根据定义,它所能做的就是建立一个人工智能,模仿它当前的招聘实践。这看似琐碎,但这一点被很多人忽略了。这就是语境的作用:我们有任何理由相信亚马逊的招聘行为没有偏见吗?

很久以前就已经确定,作为人类,我们的决策充满了各种各样的偏见。具体来说,在科技行业的招聘中,最常见的一种被称为“确认偏差”。在早期,我们建立了一些成功的原型,我们倾向于寻找其他符合这些原型的人。当每一次“招聘”都是一项昂贵的投资时,科技公司倾向于“利用”他们对成功候选人的现有理解,而不是“探索”(给其他人机会,他们看起来不像典型的成功候选人,以证明他们的技能)。

好的,我们已经确定了 ML 是一个黑箱,它会使我们自己的偏见永久化。这能带来什么好处呢?

Picture from Pexels

我的观点是,现实世界中的人类决策过程可能比单个黑盒更糟糕。我们称之为“亚马逊的招聘流程”的实体由如此多的移动部分组成:它是一个由招聘人员、招聘经理和面试官组成的层级——每个人都有自己可能的偏见和怪癖——他们不一定遵循一个规定的议程。形象地说,是一千个黑箱

这种结构意味着试图梳理出实际歧视的证据可能具有挑战性;亚马逊做出的每一个招聘决定都是可以否认的,因为它被归因于一个“有问题的”盒子(你读过多少次“这只是 X,Y,Z;这不代表我们公司的政策吗”?).

这就是为什么戴上一副合适的眼镜,ML 的进入可以被视为塞翁失马,焉知非福。当人类决策变得“算法化”时,它就变成了从输入(个人)到结果(决策)的明确映射。是的,这种映射对我们人类来说似乎极其复杂——就我们所知,是一个“黑盒”——但至少它是的一个这样的盒子。

通过对其历史招聘决策训练 ML 算法,亚马逊捕捉到了其决策过程的系统方面,即超越单一决策的方面。亚马逊实际上将其 1000 个黑匣子减少到只有一个。现在,仔细检查这个盒子(例如,通过检查通过将个人“喂入”黑盒获得的输入输出对,并观察预测的结果)可以为关于原始的、复杂的实体(即亚马逊的招聘实践)的假设提供更有力的基础。在这种情况下,它确实揭示了(或实现了推测)它的某些方面构成了明显的歧视候选人。

这是而不是说我们应该在敏感领域不经意地调用机器学习。亚马逊的故事是众多证明这显然是一个坏主意的例子之一,而且有越来越多的研究人员(我非常高兴成为其中的一员)正在仔细研究这些问题。这是试图说,尽管有太多的负面结果,关于 ML 可能促成的所有“坏事”,我们应该记住有一个潜在的积极前景:如果使用得当,算法化可以作为一种工具,更好地理解和改进我们自己的实践。

Python 中缺失值的故事

原文:https://towardsdatascience.com/the-tale-of-missing-values-in-python-c96beb0e8a9d?source=collection_archive---------1-----------------------

想象一下,买一个装有 60 个巧克力样品的巧克力盒,里面有 15 种不同的独特形状的巧克力。不幸的是,打开巧克力盒子,你会发现两块空巧克力。你能准确地找到处理丢失的巧克力块的方法吗?我们应该假装丢失的巧克力并没有丢失。?应该把巧克力盒子还给卖家吗?是否应该去买另外两块巧克力来填补缺失的部分。或者,人们可以根据以前盒子中巧克力的排列和形状的经验来预测丢失的巧克力的形状,然后购买这种预测形状的巧克力。

http://www.alphabetastats.com

为了正确处理丢失的数据,数据科学家需要回答上面和其他一些令人头疼的问题。因此,这篇文章旨在阐明在我们的数据探索之旅中处理缺失值的几种方法。

现实世界中的数据很少是干净的和同质的。数据可能在数据提取或收集过程中丢失。缺少的值需要被处理,因为它们降低了我们的任何性能指标的质量。它还会导致错误的预测或分类,并且还会对所使用的任何给定模型造成高偏差。

根据数据源的不同,丢失的数据会有不同的标识。熊猫总是把缺失的值识别为 NaN。但是,除非数据经过一定程度的预处理,否则分析师会遇到 NaN 这样的缺失值。缺失值可以显示为问号(?)或零(0)或负一(-1)或空白。因此,在编写任何机器学习算法之前,数据科学家总是首先执行探索性数据分析(EDA)是非常重要的。EDA 只是理解和了解我们的数据行为的试金石。

探索性的数据分析永远不可能是故事的全部,但其他任何东西都不能作为基石。约翰·图基

例如,如果我们有一个数据集,该数据集应该用来根据多年的经验预测平均工资,而在我们的经验年数列中,不加选择地发现值为-1,那么我们可以将该值标记为缺失值。否则,可能我们有一个身高/体重/年龄的连续变量特征(观察变量或独立变量),我们的 EDA 显示我们某个观察值为 0 或-1 或小于 1 的值;那么人们可以断定这样的值是丢失的值。缺失值也可能为空。当被调查者或用于获取此类数据的仪器没有对此类特征进行测量时,通常会出现这种情况。

Source: DataCamp Supervised Learning Course

我们如何处理丢失的值

有几种处理缺失值的方法,每种方法都有自己的优点和 CONS。然而,应该做什么的选择在很大程度上取决于我们的数据和缺失值的性质。下面是我们处理缺失值的几个选项的概要。

  1. 删除缺少的值
  2. 用测试统计填充缺失值
  3. 用机器学习算法预测缺失值

下面是一些用 EDA 检测缺失值的命令列表。

data_name.info() 

这将告诉我们存在的非空观察的总数,包括条目的总数。一旦条目的数量不等于非空观察值的数量,我们就可以开始怀疑丢失的值。

data_name.describe()

这将显示所有观察到的要素和标签的汇总统计数据。这里最需要注意的是最小值。一旦我们在年龄/身高/体重这样的观察中看到-1/0,那么我们就能够检测出缺失的值。

data_name.head(x)

这将输出我们数据的前 x 行。看到这个会让你对 NaN/-1/0/blank/?除其他外。

data_name.isnull().sum()

这将告诉我们在 or 数据中 NaN 的总数。

如果缺少的值没有被标识为 NaN,那么我们必须首先用 NaN 转换或替换这样的非 NaN 条目。

data_name[‘column_name’].replace(0, np.nan, inplace= True)

这将在我们的 data_name 的名为 column_name 的列中用 NaN 替换零值。

1)删除空值或缺失值

这是处理缺失值的最快和最容易的步骤。不过一般不建议。这种方法降低了我们模型的质量,因为它减少了样本量,因为它通过删除任何变量缺失的所有其他观察值来工作。该过程可以通过以下方式完成:

data_name.dropna()

代码片段显示了丢失值的危险。

将观察到,仅通过丢弃 NaN 值,891 个条目中的将减少到 183 个。!!!只有在缺失值很少的情况下(比如我们数据的 0.01–0.5%),才建议使用丢弃法。百分比只是一个经验法则。

2)填充缺失值

这是处理缺失值的最常见方法。在此过程中,缺失值将被测试统计数据(如缺失值所属的特定特征的平均值、中值或众数)替换。还可以指定向前填充或向后填充,以向后传播下一个值或向前传播前一个值。

用测试统计填充缺失值

#Age is a column name for our train datamean_value=train['Age'].mean()
train['Age']=train['Age'].fillna(mean_value)#this will replace all NaN values with the mean of the non null values#For Medianmeadian_value=train['Age'].median()
train['Age']=train['Age'].fillna(median_value)

用测试统计填充缺失值的另一种方法是使用 sklearn.preprocessing 中的估算方法。

In [1]: from sklearn.preprocessing import Imputer
In [2]: imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
In [3]: imp.fit(train)
In [4]: train= imp.transform(train)
#This will look for all columns where we have NaN value and replace the NaN value with specified test statistic.#for mode we specify strategy='most_frequent'

对于回填或前填,分别传播下一个或前一个值:

#for back fill train.fillna(method='bfill')
#for forward-filltrain.fillna(method=''ffill)#one can also specify an axis to propagate (1 is for rows and 0 is for columns)train.fillna(method='bfill', axis=1) 

请注意,如果上一个或下一个值不可用,或者如果它也是一个 NaN 值,则即使在回填或前填后,NaN 仍然存在。

此外,使用平均值的缺点是平均值会受到数据中异常值的很大影响。因此,如果异常值出现在我们的数据中,那么中位数将是最好的现成工具。

在管道中输入测试统计数据

数据管道允许通过一系列步骤将数据从一种表示转换为另一种表示。管道允许对我们的数据应用和链接转换的中间步骤。例如,可以填充缺失值,将输出传递给交叉验证和网格搜索,然后通过一系列链接在一起的步骤来拟合模型,其中一个步骤的输出是另一个步骤的输入。

你可以在这里了解更多关于管道的信息。

这是一个管道示例,它用每一列中最常见的值来估算数据,然后拟合到逻辑回归中。

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
logreg = LogisticRegression()
steps = [('imputation', imp),('logistic_regression', logreg)]
pipeline = Pipeline(steps)
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                 test_size=0.3, random_state=42)
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
pipeline.score(X_test, y_test)

3)处理缺失数据的预测模型

这是迄今为止处理缺失数据的最好和最有效的方法之一。根据缺失数据的类别,可以使用回归模型或分类来预测缺失数据。其工作原理是将缺失的要素转换为标签本身,现在使用没有缺失值的列来预测有缺失值的列

过程是这样的:

将缺少值的变量称为 y。

将数据分成有缺失值和无缺失值的集合,将缺失集合命名为 X_text,将无缺失值的集合命名为 X_train,将 y(有缺失值的变量或特征)从第二个集合中去掉,命名为 y_train。

使用其中一种分类方法预测 y_pred。

添加到 X_test 作为你的 y_test 列。然后将集合组合在一起。

对于机器学习的初学者或新手来说,这种方法似乎更困难。这种方法的唯一缺点是,如果缺失数据的属性与数据集中的其他属性之间没有相关性,那么模型在预测缺失值时会有偏差。

用断言结束

除了如上所述使用 isnull()检查缺失值之外,还可以使用 assert 以编程方式检查是否存在缺失或意外的“0”值。这让人确信代码运行正常。

可以在 assert 上执行以下和其他一些布尔运算。如果 Assert 语句为真,assert 将返回 nothing,如果语句为假,将返回 AssertionError。

#fill null values with 0df=train.fillna(value=0)#assert that there are no missing valuesassert pd.notnull(df).all().all()#or for a particular column in dfassert df.column_name.notall().all()#assert all values are greater than 0assert (df >=0).all().all()#assert no entry in a column is equal to 0assert (df['column_name']!=0).all().all()

总之,处理缺失值的方法在很大程度上取决于此类数据的性质。因此,您处理的不同类型的数据越多,您对不同数据类的不同解决方案的体验就越好。

感谢您的阅读,请留下您的评论,不要忘记分享。

页(page 的缩写)请关注我的下一篇文章,讨论处理分类变量的各种选择

  • 所有图片均来自网络*

数据科学的十大谬误

原文:https://towardsdatascience.com/the-ten-fallacies-of-data-science-9b2af78a1862?source=collection_archive---------2-----------------------

Photo by Gert Boers on Unsplash

数据科学专业的学生和新员工对世界的看法更加理想化,而他们在处理行业中的真实数据科学问题时经常会面临一些问题,在这两者之间存在一个隐藏的鸿沟。所有这些新的大学数据分析课程(几乎都是新开设的课程)都旨在教授学生编码、统计、数据争论等基础知识。然而,在行业内的实际数据科学工作中,人们期望你克服的那种挑战却很少出现。

分析课程提供数据(通常还有工具)并要求您生成预期结果,而行业角色可能既没有提供数据,也没有提供适当的工具,甚至连预期结果的构成都不知道。此外,行业文章通常有更严格的截止日期,没有支持,请求分析的人对统计的理解也有限。

在获取执行一些有用的分析工作所需的技能的背景下,大学课程有意降低了许多障碍,以便让您专注于核心的数据科学部分,这是理所当然的。课程材料不断向前推进,介绍统计分布、假设检验、分类器和各种工具,如 R、SPSS、Python 和 RapidMiner。最后,在掌握了基础知识之后,您会得到一个干净的数据集,并被要求比较随机森林和其他类型的分类器的性能。

不要误解我的意思,这种类型的学习是你以后职业生涯中可能从事的工作类型的基础,但它几乎和任何种类的书本学习一样有用。这些理想化的项目与更现实的工作实践之间有一个漫长、痛苦且永无止境的重新组合。这些是新手数据科学家在他们的新角色中第一次遇到的一系列谬误,通常伴随着哭泣和咬牙切齿。

  1. 数据存在。

不可避免的是,对特定分析工作的请求会预先假定构成该工作基础的数据的可用性。这可能看起来是最基本的假设,但如果被要求分析某个数据集,却发现它不存在、不可访问、缺少通用标识符或在太高的级别上汇总/总结,这种情况并不罕见。在任何任务开始时要问的第一个问题是,在你去追逐兔子洞,或者更不明智地,同意完成分析的具体期限之前,底层数据是否存在。在最糟糕的情况下,你可能会孤立无援,没有数据,但却有一种迫切的期望去完成你无法完成的分析。在这种情况下,你很容易对潜在数据的瑞士奶酪进行分析,这将不可避免地导致错误的结论,并显示出官员的极端无礼。如果数据完全缺失,早点喊,经常喊。如果有一些不完整的数据要处理,也大声说出来,但不要把它作为一个通用的借口来关闭工具,直到完美的数据集被数据工程的侏儒们神奇地整理出来。

2。数据是可访问的。

太好了,你得到了一个确认,你所依赖的数据集实际上存在于某个地方,而且传闻中基本上是完整的。现在,下一个障碍是这些数据是否能在合理的时间内提供给你。其中往往包括公司内部不同部门之间相互竞争的优先事项,或者外部顾问、长期离职的员工或第三方公司囤积的数据,这些公司希望通过出售访问权来快速获利。提供对孤立信息的免费和方便的访问可能不符合名义上的数据所有者的最佳利益,无论是因为法律、合同或财务限制,还是仅仅为了保持他们目前的角色。即使在个别公司内部,你也会发现,对于看似完全合理的数据要求,你会被毫不客气地拒之门外。哪里有钱可赚,特别是如果在数据管道的任何一点都有外部参与者,您会发现单行 SQL 查询被呈现为一些具有同样庞大账单的庞大项目。因此,任何精明的数据科学家的目标都是成为你自己的数据管道的每一个阶段的共同管理者,以便每个数据片段的所有权至少在某种程度上服从任何数据请求。

3。数据是一致的。

出于显而易见的原因,最好是找到一个结构良好、自洽且定义明确的一致数据集。发现一个数据文件突然从 19 列切换到 20 列,然后又切换回来,或者同一数据的不同版本之间的列排序发生变化,这是多么令人高兴啊!与所有不受欢迎的意外一样,这种最后的小故障往往会在最后一刻出现——当您调用 R Studio 中的 read.csv() 函数来正确查看数据时。即使数据看起来一致,当你看到像不可靠的 UTF-8 字符这样的事情,或者在一个文件中改变日期格式,从 YYYYMMDDMM-DD-YY 或一些类似的废话时,还是会有一场名副其实的咒骂、辱骂和揪头发的狂欢。要记住的基本原则是,特别是依赖于遗留系统的数据管道,除非数据馈送是由数据科学家或数据工程师设计的,否则它很容易返回各种 cruft 来响应不同的操作条件。

4。数据是相关的。

如果一切顺利,初露头角的数据科学家可能会发现他们期待已久的数据集既不是最新的,也不是分析所需的粒度级别。谷歌分析,可以说是最广泛使用的网络相关用户行为的来源,有一些令人烦恼的问题,使其无法进行详细的分析。首先,很难唯一地识别网络用户,其次,令人不安的问题是 GA 显示的是总页面浏览量的“估计”,而不是实际的统计数据。因此,由于不相关的数据,听起来合理的请求变得不可能。例如,如果您被要求预测登录到网站 X 的客户的保留率,那么 GA 数据馈送本身几乎没有用处。

5。数据直观易懂。

有太多次,我等着收到一个数据集,一旦交付和检查,最终看起来就像一些古代亚述泥板一样难以辨认。特定于域的代码、截断的文本字段、缺少查找表以及缺少或命名不当的标题字段都会导致数据难以理解。严格按照垃圾输入/垃圾输出策略工作意味着,在最好的情况下,任何无法解释的数据在输出中都会被忽略,在最坏的情况下,当您在寻找类似于 HEADER_1 的字段背后的含义时,会导致一系列额外的问题。除非作为任何分析的一部分,对所提供的数据有一个很好的文档描述,否则你不会知道你是在测量苹果还是橘子。

6。数据可以被处理。

太好了,您现在有一个 600MB 的 CSV 文件,您需要使用 Excel VLOOKUP 函数与另一个 600MB 的 CSV 文件冲突…在一台过时且配置不足的笔记本电脑上。可能让新手数据科学家,尤其是那些进入更成熟的大型企业的数据科学家感到惊讶的是,数据科学工具通常与 IT 领域的其他软件应用程序没有什么不同。开源工具不受欢迎,没有安装权限,或者任何工具都必须符合一些没有人见过的虚假的神奇的 IT 安全认证。我见过 IT 人员要求对某些成熟的软件包进行详细的安全审计。我见过功能完善、市场领先的软件应用被行业 IT 老板拒绝,因为供应商“太便宜”或“不是 XYZ 的指定供应商”。

除了围绕处理大型数据集的简单技术问题之外,还可能存在一个阴谋 IT 规则和法规,这使得不可能获得足够的处理工具来处理手头的任务。我听说过有人被迫使用 Excel 执行 V-lookup,作为连接两个数据集的一种方式,因为没有人会为他们提供任何更好的机制。这种短期 IT 限制的下一个结果是,处理一个文件可能需要几个小时,如果进行一些编码和并行处理,几分钟就可以自动完成。

7 .。分析可以很容易地重新执行。

你还记得三个月前你帮我做的分析吗?这是更新后的营销关系数据,你能帮我快速重新运行一遍吗,谢谢!!!对…人们,从哪里开始!!!这就好比有人递给你一张拼图,并要求你在超快的时间内重新制作,而事实是,就在你弄乱它并把它放回盒子之前,它是完整的。或者要求住在破旧的房子里,因为在过去的某个时候它是可以居住的。除非您明确地设置一个可重复执行的分析,并保持数据源是最新的,否则更新并重新导入所有内容以获得更新的分析很可能会是一个很大的麻烦。这还没有考虑您使用的数据是否是静态的,或者您需要做什么来解释任何数据库模式变化或对任何其他输入的更改。

因此,如果你被要求执行一项听起来像是主要的分析工作,设计 bugger 以便它可以很容易地重新运行,理想情况下只需点击一个按钮,只需你自己付出最少的努力。

8。我们要去的地方不需要加密。

啊,是的,经典。您已经完成了分析,编写了一份不错的报告和一些关于该问题的幻灯片,现在您需要将数据发送给某人进行审查。我只是将数据和所有客户的详细信息以纯文本形式粘贴到一封电子邮件中,会有什么问题呢?嗯,首先,自动完成给联系人名单中错误的人的电子邮件,并把你的皇冠上的宝石送到天知道的地方,并不太困难。或者,就像我以前的一位同事,他错误地将一家公司的详细财务分析发送给了竞争对手。

Need to use company-wide standard data encryption huh?

信息安全领域的优秀人员要求您发送的任何数据都要加密,这是有原因的。安全剧场是首要的,屁股遮盖可能是第二位的,但是除了安全的外表之外,还有很多合理的理由。

在将任何东西发送给任何人之前,你要做的第一件事就是就适当的加密级别以及原始数据和最终分析的访问权限达成一致。理想情况下,只在安全的系统上工作,不太可能被遗忘在出租车上或被爱管闲事的室友访问。如果需要的话,你必须为加密标准而战…不要妥协。很可能你自己的个人安全标准会比 It 政策更懂技术,更安全,所以坚持使用它们!

如果你不允许安装一些 GPG 客户端(因为这将违反安全政策),加密必须使用加密文件格式,如密码保护的 Excel 或加密的 zip。你说什么?加密的 zip 文件被电子邮件服务器拦截,客户端没有 SFTP 或文件共享服务器?强悍。永远不要为了“仅此一次”而走捷径,从而损害您的数据安全标准。在一天结束的时候,你将被留下来提着水桶,而那个对你大喊分析的人将在你寻找另一份工作的时候快乐地离开。

9。分析结果易于分享和理解。

让我们面对现实吧——你的大多数听众对于如何评价任何基本的详细分析没有丝毫的线索。他们会支吾搪塞,假装理解,因为无知的表现会被视为软弱。他们会要求你用更多的特性来增加你的分析,声称分析需要“在使用之前被数学证明”,并且使用各种各样的干扰和托词来隐藏他们的困惑。有些人只是寻找某些 p 值,有些人依靠“直觉”,但你会看到你的详细分析被怀疑、质疑和忽视。或者换句话说……任何足够先进的分析都将与魔术无法区分。因此,你的主要工作是将那些不太倾向于数字的人的结果翻译成他们容易理解的语言,不管你是否回答了已经提出的问题。

10。你要找的答案首先就在那里。

有点像寻找复活节彩蛋,有一种隐含的理解,即任何数据科学项目的预期目标实际上都是可以实现的,只要花一点时间在一些工具的帮助下进行搜索。然而,与同名的复活节兔子不同,没有人会故意在你的数据中加入有助于证明某些事情的真知灼见。想知道为什么这个月你的网站点击率下降了吗?想搞清楚哪些客户更喜欢产品 X 而不是产品 Y?这些问题预先装载了一个预期的结果,通常不利于适当的科学调查。

实验的第三个幽灵:多重比较

原文:https://towardsdatascience.com/the-third-ghost-of-experimentation-multiple-comparisons-65af360169a1?source=collection_archive---------10-----------------------

利齐·艾德利,汤姆·奥利弗和科林·麦克法兰

👻这篇文章是探索实验从业者中导致追逐统计幽灵的常见误解系列文章的一部分。

当进行一项实验时,我们通常希望尽可能多的学习,所以看许多不同的东西来获得最大的洞察力是很有诱惑力的。不幸的是,这是有代价的——你做的比较越多,发现假阳性的几率就越高。

在 Skyscanner,我们使用实验记分卡,该记分卡显示每个实验的一组默认业务水平指标的结果。我们发现使用记分卡有很多好处,例如:

  • 确保不遗漏任何重要影响
  • 作为一个组织,认同我们的优化目标,并关注重要的指标
  • 大规模交付值得信赖的结果和标准化分析

然而,在没有意识到多重比较问题的情况下使用这种记分卡可能会让我们陷入追逐统计幽灵的危险之中。

我们永远无法完全确定一个结果,因为在任何实验中都有随机和噪音的因素——总有一些机会,一个结果会显得有意义,即使现实是不存在真正的影响。这种情况发生的频率称为“假阳性率”。

在 Skyscanner,我们在实验中使用相当符合行业标准的 95%置信水平,因此我们预计单一指标的误报率为 5%。然而,一旦您查看一个以上的指标,您就增加了看到假阳性的机会。简单来说,你做的每一次比较都有可能出现假阳性,所以更多的比较意味着更多的假阳性

左边的图表显示,对于没有实际影响的实验(如 AA 测试),尽管如此,看起来对至少一个指标有显著影响的概率,作为记分卡中有多少指标的函数。在 Skyscanner,我们的实验记分卡中有 14 个指标,因此我们在任何一个实验中出现一个或多个假阳性的可能性略高于 50%。

如果您的实验正在测试多种不同的处理方法(也称为多变量或 ABn 测试),或者如果您查看细分为多个部分的单个指标的结果,您也会受到这种夸大的假阳性率的影响。例如,如果你要观察一项实验如何改变 20 个不同国家中每一个国家的一个指标,你会发现至少有一个国家在 60%的时间里受到显著影响,即使你的实验没有任何实际效果。如果你没有意识到可能性的变化,并且没有对幽灵进行补偿,这可能是相当危险的。

多重比较校正

幸运的是,有许多统计方法可以用来缓解多重测试问题,避免追逐统计幽灵。这些通常涉及到调整显著性阈值,以便将一个效应归类为显著性所需的 p 值取决于您的测试正在进行的比较次数(还记得本系列的第一个幽灵讨论了如何解释 p 值)。

最常用的方法之一是 Bonferroni 校正,这是一种简单的显著性阈值,α,乘以被测试的假设数 n,即

α → α / n。

例如,如果您希望在运行 AB 测试并查看 5 个不同的指标时保持 95%的置信水平,您可以将 p 值阈值从α=0.05 调整到

α → α / 5 = 0.05/5 = 0.01 .

当用 5 种不同的处理方法运行多元测试并且只查看一个指标时,您可以使用类似的方法,因为两种情况都涉及 5 个比较。

Bonferroni 校正控制家族误差率(FWER ),即一个或多个指标在实际上没有真正影响时显得重要的概率。在上面查看一个 AB 测试的 5 个指标的例子中,5%的 FWER 意味着,在没有实际变化的情况下,您将看到 5 个指标中的一个(或多个)在最多 5%的时间里是重要的。如果没有 Bonferroni 校正,这个数字将接近 25%。

Bonferroni 通常被认为是一种保守的修正,因为它确保 FWER 最多为α,但是,如果测试统计数据之间存在任何相关性或依赖性,那么应用 Bonferroni 可能会过于严格,导致实际 FWER 远小于预期值。虽然低于预期的错误率听起来像是一件好事,但缺点是这意味着实验的功效被降低了超过必要的程度,并且没有达到假阳性和假 T4 阴性之间的预期平衡。

我们如何在 Skyscanner 解决这个问题

应用更正

在 Skyscanner,我们记分卡中的许多指标应该是高度相关的。例如,预订的旅行者的比例将与离开航空公司的旅行者的比例相关联,这本身将与进行搜索的旅行者的比例相关联。为此,我们主要使用一种不同的、不太严格的校正方法,称为 Benjamini-Hochberg 法,而不是上面讨论的 Bonferroni 校正法。

Benjamini-Hochberg 与 Bonferroni 的不同之处在于,它限制了错误发现率(FDR ),而不是 FWER。如果我们把每一个被认为具有统计学意义的测量看作一个发现,那么 FDR 就是这些发现中错误的那一部分(只是噪声,而不是真正的影响)。FWER 和 FDR 之间的细微差别在于,FWER 控制有一个或多个错误发现的实验的比例,而 FDR 控制所有错误发现的比例。

Benjamini-Hochberg 在 Skyscanner 为我们工作,作为一种限制大量假阳性的方法,而不会像 Bonferroni 校正那样遭受巨大的功率降低。然而,“最佳”解决方案是相当主观的,并且将取决于假阳性(不够严格的校正)和假阴性(由于功率损失)的相对成本。

因此,如果您像我们一样,希望测量对许多不同指标的影响,那么 p 值校正可能是一种有用的方法,可以避免虚高的假阳性率,同时仍然可以从各种指标中学习。

预先注册感兴趣的主要指标

我们认为,一项实验应该基于一个明确且可测试的假设,应该主要针对一个特定的指标,并且应该通过在开始实验之前做出决定来“预先注册”。

因此,我们要求实验者预先说明他们感兴趣的主要度量——这个度量将被区别对待,其重要性不取决于上面提到的 Benjamini-Hochberg 校正。但是,如果实验是多变量(ABn)测试,那么我们会使用校正来调整感兴趣指标的 p 值阈值。在这种情况下,Bonferroni 比 Benjamini Hochberg 具有优势,因为它允许简单的功率分析。

知道非主要指标是否受到影响仍然很重要,但我们认为这更多的是对非预期后果的一种支持,或者是对启发未来迭代和新假设的学习的一种支持。如果您确实看到意外指标的影响,那么..

用更新的假设重新运行实验

我们鼓励实验者根据他们预先注册的感兴趣的指标来总结和评估实验——如果实验显示某个指标发生了重大变化,而该指标并未构成原始假设的一部分,那么最安全的做法是调用 ghost 并重新运行,这一次将意外的变化作为目标指标。如果您发现某个特定的用户子集或部分用户受到显著影响,这一点同样适用。在你确信这些影响确实存在之前,不要试图去推理你会如何造成这些影响。

👻更:追统计鬼

Take a look at our Product and Engineering jobs.

自然语言处理的三个层次

原文:https://towardsdatascience.com/the-three-levels-of-natural-language-processing-for-your-business-6d91ba62f11a?source=collection_archive---------15-----------------------

作者:迦娜·利彭科娃

在过去的几年里,技术世界已经见证了自然语言处理(NLP)应用在各个领域的激增,包括广告技术、出版、客户服务和市场情报。根据 Gartner 的炒作周期,NLP 在 2018 年已经达到了膨胀预期的顶峰。许多企业将其视为从 80%的非结构化形式的业务相关数据中创造价值的“首选”解决方案。简而言之,NLP 被广泛采用,并取得了巨大的成功。

在这篇文章中,我分享了一些将 NLP 顺利集成到您的技术堆栈中的实用建议。这个建议总结了我在 NLP 的旅程中积累的经验——通过学术界、许多行业项目和我自己的公司,该公司为国际市场情报开发 NLP 驱动的应用程序。这篇文章没有提供技术细节,但重点放在组织因素,包括招聘,沟通和期望管理。

在开始学习 NLP 之前,您应该思考两个问题:

1.独特的 NLP 组件对我们公司的核心业务是否至关重要?

举例:假设你是一家托管公司。您希望通过使用 NLP 分析收到的客户请求来优化您的客户服务。最有可能的是,这种增强不会成为你的关键路径活动的一部分。相比之下,定向广告业务应该努力确保自己不会落后于 NLP——这可能会大大削弱其竞争地位。

2.我们内部有能力开发与知识产权相关的自然语言处理技术吗?

例如:你雇佣了一名计算语言学博士,并成功地将他与设计新解决方案的自由结合起来。她可能会被激励去丰富你公司的知识产权组合。然而,如果你雇佣的是中级数据科学家,他们没有明确的语言重点,需要在数据科学和工程任务之间分配时间,就不要指望有独特的知识产权贡献。最有可能的是,由于缺乏时间和对底层细节的掌握,他们将依靠现成的算法。

提示 1 :如果你的答案是“是”和“不是”,你就有麻烦了!你最好确定与你的核心竞争力相匹配的技术优势。

提示 2:如果你的答案是“是”和“是”——停止阅读,开始工作。您的 NLP 路线图应该已经由您的专家定义,以实现特定于业务的目标。

如果你还在那里,不要担心——剩下的很快就会到位。您可以在三个级别“进行 NLP”:

  1. 黑带水平,深入数学和语言的微妙之处
  2. 培训&调优级别,主要是插入现有的 NLP/ML 库
  3. 黑盒级,靠“买”第三方 NLP

黑带级别

来细说一下:第一个,基础层面就是我们的“黑带”。这个层次接近于计算语言学,NLP 的学术对应物。这里的人们经常分成两个阵营——数学家和语言学家。这两个阵营可能会友好相处,但心态和做事方式仍会不同。

数学界的人并不害怕矩阵计算之类的东西,他们会致力于最新的优化和评估方法的细节。冒着遗漏语言细节的风险,他们通常会带头提高算法的召回率。语言学家要么是在高度复杂的生成语法或基于限制的语法形式主义中长大的,要么是在认知语法等替代框架中长大的。这些给了想象更多的空间,但也允许形式上的模糊。他们将倾向于编写句法和语义规则,并编译词典,通常需要自己的沙箱,并负责精确的部分。取决于你如何处理两个阵营之间的沟通和整合,他们的合作要么阻碍生产力,要么开启令人兴奋的机会。

总的来说,如果你能在学术完美主义中注入一剂实用主义,你就能创造出独特的竞争优势。如果你能在你的团队中有效地结合数学家和语言学家——那就更好了!但是要意识到,你必须以诚实的眼光去推销它们——然后,坚持到底。对你的团队来说,做艰苦的基础工作而看不到它对业务的影响将会是令人沮丧和没有动力的经历。

培训和调整级别

第二个层次涉及使用现有算法训练和调整模型。在实践中,大部分时间将用于数据准备、训练数据创建和特征工程。核心任务——培训和调优——不需要太多努力。在这一级别,您的员工将是推动 nltk、scikit-learn、spacy 和 tensorflow 等开源包边界的数据科学家,用于 NLP 和/或机器学习。他们将发明新的、并不总是在学术上合理的方法来扩展训练数据、工程特性,并将他们的直觉应用于表面调整。目标是训练充分理解的算法,如 NER、分类和情感分析,为您公司的特定数据定制。

这里好的一面是有很多优秀的开源包。它们中的大多数仍然会给你留下足够的灵活性来优化它们以适合你的特定用例。风险在人力资源一方——许多道路通向数据科学。数据科学家通常是自学的,并且具有相当跨学科的背景。因此,他们并不总是具有一级科学家天生的学术严谨性。随着最后期限或预算的收紧,您的团队可能会在培训和评估方法上放松,从而积累了大量的技术债务。

黑盒水平

第三层是一个“黑盒”,你可以在那里购买 NLP。您的开发人员将主要使用付费的 API,这些 API 提供现成的标准算法输出,如 Rosette、Semantria 和 Bitext(参见本帖对现有 API 的广泛回顾)。理想情况下,您的数据科学家将与业务分析师或主题专家一起工作。例如,如果你在做竞争情报,你的商业分析师将会设计一个包含你的竞争对手,他们的技术和产品的模型。

在黑盒级别,确保您只从黑带购买 NLP!有了这个保证,外包 NLP 的一个明显的优势就是你避免了稀释你的技术焦点的风险。风险在于缺乏灵活性——随着时间的推移,您的需求会越来越具体。您的集成策略越好,您的 API 停止满足您的需求的风险就越高。投资于手工质量保证以确保 API 输出交付高质量也是明智的。

最后的想法

那么,你从哪里开始呢?当然,这取决于——一些实用的建议:

  • 和你的技术人员谈谈你的商业目标。让他们研究和制作原型,从第 2 级或第 3 级开始。
  • 确保你的团队不会过早地陷入 1 级的低级细节。这可能会导致时间和预算上的重大失误,因为需要大量的知识和培训。
  • 不要犹豫——你总是可以考虑在 23 之间的过渡(顺便说一下,这在任何方向都有效)。这种转换可以有效地与通常不可避免的系统重构相结合。
  • 如果你设法用 NLP 建立一个令人信服的商业案例——欢迎加入俱乐部,你可以用它来吸引一流的专家,并通过在第 1 级工作来增加你的独特性!

关于作者:迦娜·利彭科娃拥有计算语言学博士学位,是国际市场情报技术解决方案提供商【Anacode】的首席执行官。点击 了解更多我们的解决方案

原载于 2018 年 11 月 15 日anacode . de

单词嵌入的一般概念

原文:https://towardsdatascience.com/the-three-main-branches-of-word-embeddings-7b90fa36dfb9?source=collection_archive---------5-----------------------

Photo by Dmitry Ratushny on Unsplash

Word2Vec、GloVe 和 FastText 的主要概念概述

单词嵌入——或分布式表示——的概念是近年来自然语言处理( NLP )中最引人注目的发展。与所有快节奏的领域一样,人们很容易迷失方向,感觉被最新的突破和发展抛在后面。

最好的解药是意识到更普遍的趋势和单词嵌入概念背后的主要思想。为了做到这一点,我在这篇文章中为你提供了一个简要的概述,并在底部提供了其他材料的链接。这篇文章关注三种“经典”风格的单词嵌入: Word2VecGloVeFastText 。他们举例说明了看待单词嵌入的三种不同方式。

Evan Kirby on Unsplash

这一切是如何开始的— Word2Vec (2013)

单词嵌入的雪崩始于 2013 年,当时托马斯·米科洛夫周围的谷歌研究人员发表了 这篇论文 。他们提出了一种方法,即众所周知的 Word2Vec。它使用小型神经网络来计算基于单词上下文的单词嵌入。有两种方法可以实现这种方法。

首先是连续袋字CBOW 。在这种方法中,网络试图根据上下文预测哪个单词最有可能出现。同样可能出现的单词可以被解释为具有共享维度。如果我们可以将一个句子中的"猫"替换为"",这种方法预测两者的概率相似。所以我们推断这几个词的意思至少在一个层面上是相似的。

第二种方法是跳格。这个想法非常相似,但是网络的工作方式正好相反。也就是说,它使用目标单词来预测其上下文。更多细节请看本文末尾的链接。

当 2013 年 Word2Vec 问世时,结果是前所未有的,但也很难从理论角度解释。它工作了,但是有一些困惑为什么。

Gary Bendig on Unsplash

斯坦福大学的竞争方法——GloVe(2014 年)

一年后,斯坦福的研究人员发布了手套。你可以在这里找到原文 。为了理解这个变体试图做什么,我们需要简单地讨论一下 Word2Vec 的一个不太明显的方面。

Word2Vec 通过将目标单词与其上下文相关联来学习嵌入。但是,它忽略了某些上下文单词是否比其他单词出现得更频繁。对于 Word2Vec ,一个词的频繁同现创造了更多的训练实例,但是它没有携带额外的信息

相比之下, GloVe 强调共现的频率是至关重要的信息,不应作为额外的训练示例而被“浪费”。相反,GloVe 构建单词嵌入的方式是,单词向量的组合与这些单词在语料库中共现的概率直接相关。

同样,查看底部的链接了解更多详情。对于这篇文章来说,理解 GloVe 不是 Word2Vec 意义上的训练有素的模型就足够了。相反,它的嵌入可以被解释为反映共现的低维度训练语料库的总结。

Loverna Journey on Unsplash

轮到脸书了——快速文本(2016)

2016 年,人工神经网络已经获得了相当大的吸引力,Word2Vec 已经证明了它在 NLP 的许多领域中的实用性。然而,还有一个问题没有解决:对未知单词的泛化。脸书于 2016 年发布的开发产品 FastText 承诺要克服这一障碍。

这个想法非常类似于 Word2Vec,但是有一个主要的变化。与其使用单词来构建单词嵌入, FastText 更深入一层。这个更深的层次由部分单词和字符组成。从某种意义上说,一个词成为它的上下文。因此,基石是文字,而不是语言。

FastText 输出的单词嵌入看起来与 Word2Vec 提供的非常相似。但是,它们不是直接计算的。相反,它们是低层嵌入的组合。

这种方法有两个主要优点。首先,泛化是可能的只要新单词与已知单词具有相同的特征。第二,需要较少的训练数据,因为可以从每段文本中提取更多的信息。这就是为什么预训练的快速文本模型比其他任何嵌入算法都适用于更多的语言。

Photo by Eugenio Mazzone on Unsplash

主要的收获

我选择这三种算法是因为它们代表了关于如何计算单词嵌入的三种一般思想:

  1. Word2Vec 将文本作为神经网络的训练数据。最终的嵌入捕获单词是否出现在相似的上下文中。
  2. GloVe 关注整个语料库中的同现词。它的嵌入与两个词一起出现的概率有关。
  3. FastText 对 Word2Vec 进行了改进,也考虑了单词部分。这种技巧能够在较小的数据集上训练嵌入,并推广到未知单词。

如果对你有帮助或者你想补充什么,请在评论中或者在推特上告诉我。我也很乐意在 LinkedIn 上联系。感谢阅读!

附加材料

Word2Vec

如果你想深入了解,这里有两篇马尼什·查布拉尼的精彩博文:

[## Word2Vec(跳格模型):第 1 部分——直觉。

这里的大部分内容来自克里斯的博客。我对它进行了压缩,并做了一些小的改动。

towardsdatascience.com](/word2vec-skip-gram-model-part-1-intuition-78614e4d6e0b)

如果你正在寻找 Word2Vec 如何进入机器学习的其他领域的例子,看看 Ramzi Karam 的这篇博文:

[## 使用 Word2vec 进行音乐推荐

我们如何使用神经网络将数十亿条数据流转化为更好的推荐。

towardsdatascience.com](/using-word2vec-for-music-recommendations-bb9649ac2484)

手套

Brendan Whitaker 写了一个关于手套的五集系列,我强烈推荐。这是第一部分,但很容易找到其他四个部分:

[## 什么是手套?第一部分

从共现矩阵无监督学习单词嵌入的介绍。

towardsdatascience.com](/emnlp-what-is-glove-part-i-3b6ce6a7f970)

快速文本

Nishan Subedi 在此更详细地描述了 FastText:

[## 快速文本:引擎盖下

在这里我们将看到一个性能最好的嵌入库是如何实现的。

towardsdatascience.com](/fasttext-under-the-hood-11efc57b2b3)

履行

There are different ways to implement word embeddings. 黃功詳 Steeve Huang describes ways to do this with the Gensim package:

[## 使用 Gensim 嵌入 Word2Vec 和 FastText 单词

在自然语言处理(NLP)中,我们经常将单词映射成包含数值的向量,以便机器能够识别

towardsdatascience.com](/word-embedding-with-word2vec-and-fasttext-a209c1d3e12c)

另一种方法是在 tensorflow 中重建结构。aneesh joshi 在这里描述了细节:

[## 通过在 tensorflow 中实现来学习 Word2Vec

通过 tensorflow 中的编码理解 word2vec

towardsdatascience.com](/learn-word2vec-by-implementing-it-in-tensorflow-45641adaf2ac)

三种类型的 A/B 测试

原文:https://towardsdatascience.com/the-three-types-of-a-b-tests-ac544a5783f8?source=collection_archive---------1-----------------------

如果你从事数据方面的工作,你可能会知道数据科学这个术语很有争议。这意味着什么,谁可以自称为数据科学家,在无数的文章和博客帖子中被讨论、争论和深思。这篇文章不是那次对话的一部分——但它是关于数据世界中一个类似的模糊且被误解的概念:A/B 测试。

在技术领域,术语 A/B 测试用于指任何数量的实验,其中随机分配用于梳理治疗(通常是网站的一些变化)和结果(通常是企业有兴趣改变的指标)之间的因果关系。

但是我在这篇文章中试图说明的情况是,网络企业实际上(至少)有三种不同类型的实验,将它们都归入一个保护伞下会导致设计不良的实验和被误解的结果。

A/B 测试

最简单的实验通常集中在 UI 变化上。一个产品团队会测试两个或两个以上的网页变体或产品特性,它们除了一个组件(比如一篇文章的标题或一个按钮的颜色)之外都是相同的。著名的谷歌测试了一个按钮的 41 种不同蓝色,看哪种按钮的点击率最高。虽然 A/B 指的是正在测试的两种变体,但当然可以有许多变体,就像谷歌的实验一样。

在这种类型的测试中,通常只有一个,或者两个产品团队关心的度量标准,无论哪个变体对那个度量标准有最好的价值,都会被挑选出来。换句话说,假设总是:这个 UI 更改将增加/减少度量 x。在对此进行评估之后,获胜的更改将被永久化,团队将继续进行下一个测试。

My Take

由这些测试中的一个确定的任何给定变化的益处将是微小的。想想百分之几。要让这些对你的业务产生实质性影响,你需要具备两个条件:

  1. 快速运行和分析它们的基础架构—最好是自动运行
  2. 足够大的用户群,即使在很短的时间内,您的测试也能得到适当的支持

结果是,除了最大的公司:谷歌、脸书、网飞等,我认为这种测试在任何地方都不会非常有效。他们既有成熟的基础设施来快速运行这些测试,又有庞大的用户群来识别具有统计学意义的微小治疗效果。如果你在这些公司中的一家,这种类型的快速测试是非常有价值的,因为小的变化可以很快累积起来,但否则你的努力最好花在其他地方。

如果你处于运行这些类型的测试的位置,你真的要注意细节。用于多重比较的适当的功率水平p 值校正对于确保这些测试的结果能够带来实质性的整体改善至关重要。

产品推出

第二种常见的情况是,当推出一个公司已经承诺推出的完整产品时,随机实验可能会有所帮助。想想类似于脸书的新闻订阅发布或者 Linkedin 的网站重新设计。当这么大的东西已经建成的时候,无论度量标准是什么,发布是非常非常不可能被永久回滚的。

相反,这种情况下的随机实验是为了可见性,并提供可能有助于未来决策的信息。

这里的可见性通常意味着 bug——您是否以某种方式破坏了此次发布的基本功能?另一方面,未来的决定可以通过随机展示来了解,因为你将知道你的发布的真实影响。如果你的重新设计或新特性产生了积极的影响,类似的努力也许值得一试。如果你的结果是中性或负面的,这将有助于评估是否真的值得继续从事这样的项目。

我的取

像这样的阶段性展示不是假设驱动的。你不是在试图为某个特定的想法寻找证据——你只是在监视一个新产品,寻找鼓励或危险信号。

这些类型的实验不应该是分析性的,我也不会像 A/B 测试那样为统计细节伤脑筋。担心统计功效或 p 值修正并不特别相关,可能时间可以更好地用于其他地方——你实际上只是在寻找一次发射是否为净正的方向性证据。

我想补充一点,这些推出的结果受到两个巨大的不确定性来源的影响,有时会使它们难以解释。

一个是,当您构建一个全新的特性并通过这种类型的测试进行推广时,在处理组中收集数据的代码通常也是新的。然而,来自对照组的数据通常已经存在一段时间了。这意味着这两个群体之间的巨大差异有时不是由用户行为驱动的,而是由数据收集方式的差异驱动的。因此,在分析数据和解释结果时都需要小心。我对两位数的百分比变化表示怀疑,并调查数据记录逻辑作为最可能的原因。

第二点不确定性是,即使你对你的数据完全有信心,像这样的大变化与你的产品的预发布版本相比有太多不同,以至于确定为什么指标以某种方式改变是具有挑战性的。减轻这种情况的最好方法是提前解决问题,收集大量的用户行为数据,这样你就不会盲目地试图解释大幅下降。

科学实验

最后,我们来到了我认为的真正的科学实验。这些是社会科学和经济学中最接近随机对照试验的模拟:你有一个关于世界(或在这种情况下你的产品)运行方式的不明显的假设,你设计一个实验,用数据从经验上检验它。

一些示例假设:

  • 订阅量随着追加销售消息的数量呈对数增长
  • 鼓励用户在你的网站上添加好友会增加每日活跃用户
  • 推荐类似的产品增加了收入,而不是大麻化

My Take

在我看来,这些类型的问题是最重要的,因为它们不只是为一次性决策提供信息(我应该将这个按钮设置为蓝色还是红色?),而是提供一般性的知识,告诉你如何思考和构建你的产品。这些是成功产品赖以建立的洞察力类型。

或许这并不奇怪,我认为数据科学家有独一无二的条件来回答这类问题。虽然 A/B 测试可以自动化,并且部署可以由没有太多技术知识的人监控,但科学实验需要业务、产品和统计技能的结合,而这些通常只有数据科学家才具备。

对于这样的实验,假设的陈述和实验设计是重点。思考诸如结果的可归纳性、异质治疗效果、结果指标和控制变量的选择等问题是至关重要的。考虑这些因素并进行适当的设计会对实验结果的质量和有用性产生严重的影响。

虽然仪表板和图表可能是沟通前两种测试的最佳方式,但科学发现需要被记录下来。数字本身并不能传达结果——当然,你需要数字,还需要背景、实施细节,或许最重要的是,需要一段叙述,让你的发现符合对你的产品、用户和业务的更广泛理解。尽管这些发现是可信和有用的,但它们永远不会是最终的:随着你的研究范围的扩大,你的整个组织应该继续学习和更新他们的想法。

三次测试,一个目标

我已经概述了我所认为的软件公司实验的主要类别:A/B 测试、首次展示和科学实验。我主张将这些技术中的每一种都标记和设想为不同的技术。

我认为这样做将改善我们对每种类型测试的流程和期望,并最终为我们的组织带来更好的决策——这毕竟是数据科学的意义所在。

我是一名数据科学家和研究人员,在科技行业工作,并在媒体上撰写相关文章。也可以在TwitterLinkedin上关注我。

在治理中使用人工智能的时候到了

原文:https://towardsdatascience.com/the-time-has-come-to-use-artificial-intelligence-in-governance-9782257e265b?source=collection_archive---------3-----------------------

在过去的几天里,一些毁灭性的事件让印度人民感到震惊和动摇。8 月 19 日,一辆名为 Utkal Express 的客运列车的 13 节车厢出轨,造成 24 人死亡,近 200 人受伤。9 月 29 日,孟买埃尔芬斯通路附近的人行天桥上发生踩踏事件,23 人死亡。虽然我谈论印度是因为它离我的家乡更近,但全球各地都有很多例子,让我们措手不及的事件,让我们在事后感到震惊。就这样,人们过着平凡的生活,死亡或痛苦,生命被残酷地缩短。

一旦我克服了面对这种看似毫无意义的悲剧时的悲痛和无助感,我开始思考这种事件是否一定需要总是让我们措手不及?我们能不能不主动预测它们,从而能够预防它们?我脑海中的答案是一个压倒性的响亮的是的!

几乎可笑的是,一方面,世界正在讨论和辩论人工智能驱动的机器接管人类的危险,但我们却无法利用机器的这种力量,真正改变公共生活。不要误会我的意思——在科学的前沿有许多极其奇妙的工作正在发生,这些工作将机器学习与其他学科结合在一起,以改变我们理解疾病、人类遗传学甚至太空探索等事物的方式。然而,我指的不是 R&D,而是此时此地应用于治理的人工智能。

作为一名从业者,我为世界各地的公司提供关于如何利用人工智能来更好地管理他们的运营、更有效地检测欺诈、更有效地预测机会领域以及主动识别需要干预的方面的建议,我对治理实体为什么不以类似的方式处理他们的“治理业务”感到非常困惑——试图更好、更快、更便宜、更准确地做事。这可能会在很多领域改变游戏规则。让我来谈谈我最关心的几个问题:

1。公共基础设施的预测性维护:一个非常简单的想法——主动监控物理设备、机器和基础设施的运行状况,并将其与使用指标、图像等其他数据点相结合。,以预测何时需要进行何种维护。这不是一个新概念,拥有大量资产的私人公司已经这样做了几十年。

就拿我前面说的出轨来说吧。印度铁路运营规模庞大,拥有约 75,000 英里的轨道网络、250,000 辆货车、70,000 多辆客车、11,000 多台机车、遍布全国的 7,200 个车站。这是一个极其庞大的资产基础,几乎不可能通过传统的预防方法来维持,越来越多的可避免事件一再证明了这一点。但是,如果可以存储和处理关于这些资产的所有信息,以便从维护的角度关注需要关注的领域,并确定需要更换的轨道和设备,情况会怎样?数据是存在的——这不是火箭科学——它所需要的只是当前基础设施的清单、某些东西何时被采购或最后一次维修的时间指标,以及它的使用情况(例如,每公里跑道的吨数)。即使驻留在不同的地方,这些数据中的大部分都是随时可用的,如果不在,可以分阶段构建。关键是,开始可以是立即的。

这同样适用于大多数公共基础设施——道路、桥梁、供水系统、下水道、政府。医院,政府。办学校等。

2。灾难应对:听到自然灾害后出现的人们无法追踪、被困、无法走出噩梦的故事令人心碎。想象一下那个人,在灾难中幸存下来,然后慢慢消失,等待有人来救他们。

现代技术,尤其是与人工智能相结合,可以为灾害管理做出重大贡献。在无人机、传感器和地理空间测绘等可以收集宝贵的实时数据的技术的进一步帮助下,机器学习算法可以帮助优化有限的救援资源的部署。灾后侦察、受灾地区的识别和优先排序、个人的实时跟踪等。都有可能。

有许多大大小小的公司正在开发这一领域的尖端解决方案(例如,看看 AIDR 和 1Concern)。与预测性维护一样,可以立即开始。世界上许多政府和组织已经开始朝着这个方向前进。

3。农业:精准农业被誉为绿色革命后农业领域的下一个重要里程碑。随着世界人口的不断增长和工业化导致的耕地面积的不断减少,增加耕地每英亩产量的迫切需要在今天比以往任何时候都更加重要。虽然西方国家已经朝着这个方向努力了一段时间,但发展中国家仍有许多工作要做。

简而言之——精准农业涉及使用所有可用的数据,如天气、土壤条件、地下水、历史作物等。,并使用它来提供有关种植什么、何时种植、何时施肥、灌溉和收获以及何时翻耕作物的运营预测。目标是最大限度地提高农场生产率和产量。

尽管本质上与精准农业无关,但人工智能的另一个对农业有重大影响的进步是机器人和自动驾驶汽车的出现。例如,在印度,Mahindra & Mahindra 目前正致力于制造自动驾驶拖拉机,这可能会对农业生产产生巨大影响。

4。犯罪预防:在这方面可以做的事情绝对多得令人难以置信。如果今天的公司可以预测个人行为的几乎所有方面,包括他们可能会在什么方面花费,他们可能会去哪里旅行,他们可能会在什么时候离开服务提供商,他们可能会与谁联系等等。—还可以挖掘其他行为指标,尤其是那些与潜在的不良行为相关的指标,这难道不是很难测量的吗?这是一个滑坡,因为有许多关于个人隐私权的问题,其中一些是绝对公平的。

然而,好消息是,即使我们解开了围绕数据隐私和相关领域的合法性,很多事情都是可能的。犯罪模式检测有助于在很大程度上准确识别易受攻击的区域。2010 年在洛杉矶进行的一项预测何时何地可能发生入室盗窃的试点项目显示了相当大的影响,盗窃案减少了 33%。同样,英国达勒姆警察局最近开始试验一种人工智能系统,通过给嫌疑人分配风险分数,帮助他们评估对嫌疑人采取的行动。

5。交通管制:这几乎是显而易见的。交通流量方面有大量可用数据,这些数据可用于更高效的交通管理系统,并创建面向未来的基础设施。例如,英国的米尔顿·凯恩斯(Milton Keynes)最近宣布开发并采用“智能交通灯”——这种信号不是基于规则的,而是根据通过传感器和摄像头监控的实际交通流量进行动态调整。

我坚信,政府和公共部门实体积极拥抱人工智能技术新前沿的时候到了。人工智能在治理中的应用案例比比皆是。初等教育管理,通过教育系统对每个儿童进行临时监测,主动确定何时需要干预,以使他们在教育生态系统中保持良好的状态。预防性保健。金融欺诈防范,如逃税、洗钱等。社会福利资金的最佳使用和监督。

除了在操作各种公共服务方面的好处之外,人工智能还可以在政策制定本身中发挥关键作用。政府需要投资建立一个围绕在治理中利用数据科学的目标明确的短期、中期和长期目标的计划。还需要明确定义的指标来衡量这些目标的进展,并在需要时进行过程修正。当然,这需要资金,但正如私营部门所证明的那样,对数据基础设施和科学的投资可以带来非常丰厚的收益,尤其是当目标是改善公众生活时。

极限

原文:https://towardsdatascience.com/the-tip-of-the-tether-56212a8bd48c?source=collection_archive---------10-----------------------

水是一种非常奇怪的物质。这是少数几种冷冻时密度会降低的液体之一。这就是冰山漂浮而不是下沉的原因。它们比水轻得多,甚至它们的一小部分都露出水面。

但是冰山 90%的体积隐藏在下面。

不过,在比特币这样的公共区块链,你无处可藏。泰瑟的秘密开始浮出水面。正如系绳报告指出的,48.8%的比特币价格上涨发生在 93 个系绳授权的 2 小时窗口内。它声称,如果没有代表 Tether 的任何干预,比特币的价格只会上涨 6.5%。

这有点难以消化,所以这里有一个稍微简单一点的图表:

这里有一个与 74 个随机选择的时间的比较:

有几件事要弄清楚。在此期间,Tether 获得了 25 亿多美元。摩根大通估计,到 2017 年 10 月,整个加密市场的资金流入只有 60 亿美元。到目前为止,这个数字可能在 80-120 亿美元以上。不管是什么,在这些赠款的时间框架内,Tether 的 25 亿美元以上的流入是相当可观的。

反对者很快指出,显然,随着这么多资金在短期内涌入市场,波动性将大幅上升。他们还指出,人们可以在股市中选择 93 个理想点,并得出类似的结论。俗话说,寻找你就会找到,如此等等…

这个故事的霍德勒版本是 BitFinex 或 Tether 没有任何问题。当比特币价格下跌时,大型机构投资者只是下单 1 亿美元。

首先,事情不是这样的。我们正在处理一个公共区块链。跟踪交易…

但不管怎样,即使这就是全部。BitFinex 知道何时授予系链令牌。考虑到由此产生的波动性,这是套利的绝佳机会。

BitFinex 的有趣之处在于,首席财务官吉安卡洛·德瓦西尼(Giancarlo Devasini)将该公司创办为一个套利庞氏骗局:

嗨,伙计们,

我主要是在评估利息。为了我的新生意,将来我可能需要大量的硬币。现在,考虑到比特币世界最近的历史和这个论坛上持续的反商业钓鱼和攻击,我甚至不会考虑提供一个持续的存款计划,你们都知道为什么。然而,我做了一个民意调查,如果有足够的兴趣继续存款计划,我可能会考虑它。

所以我在考虑下面的计划:当我需要更多的硬币来完成一个订单时,我会问所有以前在我这里“注册”的人借我一些 btc。7 天后,我会全部归还,本金+ 2%的利息。对于你被联系,你将不得不在这里或下午张贴说,你可能会借给我比特币,和大约。你愿意借给我多少。

现在你可能会问:

你能做什么来获得这么多利润?

姑且说我做“套利”:我低买高卖。那些理解它的人已经在做了,或者没有时间去做,可能会对我的提议感兴趣。那些不明白的请忘记它,继续前进,我不希望任何人投资于他们不明白的东西。

-吉安卡洛·德瓦西尼(来源)

如果他知道将授予限制代币(他确实这么做了),并且如果他在他的交易所交易(他确实这么做了),这种类型的知识被称为“内幕交易”。具体来说,它叫做小费。这是违法的。

小费到底是什么?好吧,在六个小时的 74 笔系绳授权窗口内,“出现”了 17427 美元的比特币总价值。这相当于比特币总价格涨幅的 88%。而且它只占比特币交易时间的 0.6%。

当与相同范围内随机选择的时间列表比较时,我看到价格增加了 3193 美元。

现在你可能会想,嘿,等一下,3193 美元+17427 美元——这比比特币的峰值价格还高。你是对的。关键是:价格没有粘性。它在窗外下降又上升。

所有人都认为 BitFinex / Tether 试图推高市场。考虑到这一切之前都发生在 Mt. Gox,并且考虑到 Giancarlo Devasini 自己也承认这么做,这是一个很容易做出的假设。或许,这是他的最终目标——可以说是一个旁门左道。但是,短期来看,他对获取你的资金流入感兴趣。

看,在系绳授予后的 6 小时窗口中,波动性是随机选择时间的两倍多。价格高点平均高出近 5 倍。但是,真正奇怪的事情是——在六个小时的窗口内——限制授权实际上对定价产生了净负面影响

这有几个原因:第一,大部分赠款都是在股价在几个小时内下跌 20%或更多的时候出现的。在每一种情况下,限制拨款都能够阻止抛售,但不会失去一点地盘。第二,巨大的高点之后是大规模的抛售——这意味着,他正在推动市场,出售比特币来赚快钱。

当限制拨款创造了套利的完美机会,当你作为一个自称的套利大师开始进入密码世界,当你在自己的交易所交易,而那个交易所允许非法清洗交易,当你在比特币对话上公开承认做了这一切,真的有什么需要证明的吗?

BitFinex 和 Tether 在 3 月份失去银行能力时撞上了冰山。但是在表面之下还有更多。如果你感兴趣,我写了一部 BitCon 简史——详细描述了许多与加密货币相关的欺诈案件。


我使用的代码和复制说明在 GitHub 上有

BTC:19 qk 13 cpnwnuzvclghxjqrwzgtawv 7 swwr

前 25 个最酷的数据科学术语

原文:https://towardsdatascience.com/the-top-25-coolest-data-science-terms-1b458f1aafc8?source=collection_archive---------3-----------------------

Source: Library of Congress

机器学习。

神经网络。

分层聚类。

有人知道这些术语的真正含义吗?当然,少数书呆子知道。像大概 5 万排名的 Kaggle 成员

但是这些深奥的术语仅仅触及了世界上的数据科学家们想出的描述、促进并最终混淆他们日常工作的表面。

我们认为有必要对数据科学中一些最好的、但不太为人所知的术语进行分类,并根据它们听起来有多酷进行排序。

1 超平面

2 超参数

3 渐变下降

4 混乱矩阵

5 Softmax

6 蒙特卡洛模拟

7 多臂土匪

8维度的诅咒

9 朴素贝叶斯

10 最大汇集

11 交叉熵损失

12 质心

13。 轴突

14。 层次聚类

15。 警帽

16。 树形图

17。 纪元

18。 K 折交叉验证

19。 内核绝招

20。 隐藏图层

21。 整流功能

22。 人工神经元

****23。

24。 自举

25。 拉索

想要更多吗?我们不能说所有这些术语听起来都很酷,但是 KDNuggets 已经收集了一个相当确定的 277 个数据科学术语的词汇表,并附有参考资料和偶尔出现的图片。

我们试图在演绎 Twitter feed 中发布一个酷炫术语的运行列表。

关于方法论的一点注记

我们的排名是基于一个非常不科学的过程,包括观点、争论和幻想。然而,可以肯定地说,这些术语中有许多正迅速流行起来。

我们用下面的 gtrendsR 包绘制了谷歌搜索趋势的前五名。

最初发表于【www.deducive.com】

五大最佳聊天机器人和自然语言处理工具,为您的企业构建人工智能

原文:https://towardsdatascience.com/the-top-5-best-chatbot-and-natural-language-processing-to-build-ai-for-your-business-3efea313d8db?source=collection_archive---------1-----------------------

credit: pexels.com

人工智能社区仍然非常年轻,但已经有大量优秀的机器人平台。似乎每天都有新的人工智能功能由人工智能开发者或机器人平台本身推出。

对于许多企业主来说,选择哪个平台最适合他们的业务可能是一件非常困难的事情。

我创建了一个列表,列出了过去几个月我一直在使用的我个人最喜欢的 5 大聊天机器人和自然语言处理(NLP)工具。

每个平台都有其独特的功能,每个平台都有特定的定位,所以本文不对平台本身进行判断。

这只是我个人的观点,哪个平台最适合不同类型的企业(小,中,大)和不同的编码技能(新手,基础知识,高级知识)。

credit: manychat.com

ManyChat

几个月前,ManyChat 似乎将成为 2016 年初推出的十几个机器人平台之间的人工智能竞赛的赢家。许多聊天用户友好的工具加上为用户设计的伟大的用户界面 UX 确实吸引了许多机器人企业家。

ManyChat 对于没有任何编码技能的人来说是一个很好的平台。It 主要市场是没有编码技能或编码技能有限的数字营销专家。

然而,如果你的企业想要灵活的人工智能应用,这不是一条路要走。

优点:用户友好,免费计划,伟大的营销工具

缺点:缺乏定制编码的灵活性,缺乏社区资源

网址: ManyChat

评分:⭐⭐⭐

credit: chatfuel.com

聊天燃料

我第一次对人工智能应用感兴趣是通过观看Andre DemeterUdemy chat fuel class。我记得那时候 [Chatfuel 社区](http://Chatfuel Community)在 2017 年 8 月还没有创建。安德鲁的 Chatfuel 类是当时最有价值的人工智能类,可以用来学习用 Chatfuel 开始编写机器人代码。

Chatfuel 现在是聊天机器人平台的头号领导者,他们理应获得这一荣誉,因为他们工作非常努力,他们有出色的版主回答所有 Chatfuel 社区脸书小组的问题。

然而, Chatfuel 最大的优势是它在用户友好的解决方案和高级定制编码之间的平衡,而高级定制编码是最缺乏的。

如果你正在犹豫是使用 ManyChat 还是 Chatfuel,问自己以下问题:

未来我的商业 Ai 解决方案需要定制吗?如果答案是肯定的,使用聊天燃料,如果答案是否定的,选择多人聊天

优点:用户友好,自定义编码的灵活性,来自社区的支持,对第三方插件开放,不需要编码经验

缺点:与对话渠道的整合有限,缺乏营销工具

网址:聊天燃料

评分:⭐⭐⭐⭐

可交谈的

credit: conversable.com

凭借百威啤酒、漫威、必胜客和 TGI 星期五等客户,Conversable 肯定是人工智能领域的领跑者。如 Conversable 网站所述:

“Conversable 是企业级软件即服务(SaaS)平台,用于跨多个平台设计、构建和分发人工智能增强的消息和语音体验,包括 Facebook Messenger、Twitter、SMS、Amazon Echo、Google Home 和许多其他平台。''

这无疑是对这种对话即服务(CaaS)能够提供的内容的令人印象深刻的描述。然而,如果你是一家中小型公司的老板,这并不适合你,因为这家位于德克萨斯州奥斯汀的初创公司主要为财富 500 强公司发展。

不过,如果你在其中一家公司工作,知道已经有一家初创公司在企业市场取得了巨大成功是件好事。

优点:整合对话渠道,大公司的最佳平台

缺点:对用户不友好,没有适合中小型企业的解决方案

网址:可交谈的

评分:⭐⭐⭐⭐

Dialogflow(谷歌助手)

credit: dialogflow.com

没有人会对我和 Dialogflow 的个人爱情故事感到惊讶。也就是说,我将在我的 opiniondialog flow中向你解释为什么它现在是世界上所有类型企业的头号人工智能和自然语言处理平台。

通过将语音和文本人工智能应用集成到谷歌助手、亚马逊 Alexa 和微软 Cortana,你可以为你的客户构建几乎任何类型的人工智能应用,这些应用将能够与他们的手机或谷歌 Home 或亚马逊 Alexa 物联网(IoT)生态系统进行交互。

Dialogflow 不仅集成了所有这些支持语音识别的出色平台,还集成了 Facebook Messenger、Twitter、Slack、Telegram、Twilio(文本消息)和 Skype 等文本功能。

这意味着 Dialogflow 对您的业务需求非常灵活,因此您的人工智能代理将能够随着您的业务需求以及未来几年将推出的人工智能应用升级而发展。

优点:最先进的 NLP,与对话渠道的整合,免费计划,可输出代理

缺点:可用语言的数量

网址:对话流

评分:⭐⭐⭐⭐⭐

GupShup

老实说,我没有花太多时间探索 GupShup ,但它似乎真的很有前途,它有类似的集成,这意味着它的生态系统将能够随着人工智能和机器学习的升级而发展。

GupShup 还有一个令人印象深刻的 SMS、语音、文本、NLP APIs 库

优点:与对话渠道的集成,免费计划,API 库

缺点:用户不友好,仪表板用户界面/UX 设计

网址: GupShup

评分:⭐⭐⭐⭐

正如我在本文开始时提到的,所有这些人工智能开发平台都有它们的利基、优点和缺点。

我希望这篇文章能帮助您选择合适的平台,满足您的业务需求。如果你仍然不确定你想选择哪一个,你可以随时来和我谈论脸书,我会回答你的问题。

相关文章:发现为什么语音 Ai 在 2018 年称霸

如果你喜欢这篇文章,请给几个掌声,媒体作者“喜欢”的主要来源被称为掌声,你可以给 123 到 50 个掌声!👏👏👏👏👏在介质上。

Jupyter 笔记本的 5 大神奇命令

原文:https://towardsdatascience.com/the-top-5-magic-commands-for-jupyter-notebooks-2bf0c5ae4bb8?source=collection_archive---------7-----------------------

Photo by Jez Timms on Unsplash

Jupyter 笔记本是一种基于网络的交互式工具,机器学习和数据科学社区经常使用。它们用于快速测试,作为报告工具,甚至作为在线课程中高度复杂的学习材料。我最喜欢它们的一个特性叫做魔法命令。这些快捷方式极大地扩展了笔记本电脑的功能。这里列出了成为一名更好的数据向导你应该首先学会的五个咒语。我包含了代码片段来说明它们的用法,但是这里也有一个完整的笔记本。

%time、%timeit 和%%time

你想知道你的代码需要运行多长时间吗?不出所料,你需要使用的魔法命令是时间及其变体。我大量使用细胞魔法版( %%time )。这是对代码进行基准测试并向其他人指出他们需要多少时间来重新运行您的结果的一种快速方法。

%matplotlib

如果你以前上过在线课程,你可能会认出这个神奇的命令和 inline 参数的组合。使用此命令可确保 Jupyter 笔记本显示您的绘图。这可能是每一个基于笔记本的报告最关键的魔法命令。

%load_ext 自动重装

这个神奇的命令允许你加载最重要的扩展:自动加载。如果没有它,你每次修改你引用的代码时都必须重新加载内核。代码片段为您提供了一个如何使用它的简单示例:

%系统

如果您想使用 shell,这个神奇的命令会帮您实现。这是非常好的快速检查当前目录和类似的事情。它看起来不怎么样,但却是你腰带里的好工具。

%谁

这个神奇的命令做了一件非常好的事情:向您显示您的环境中的变量列表。您还可以添加一个参数来定义您想要查看的变量类型,例如函数。

当然,还有比我在这篇文章中提到的更多的魔法命令。官方文件见此处。你用什么魔法命令,为什么?请在评论中或在 Twitter 上告诉我。感谢阅读,留点👏🏻如果这对你有帮助,让我们继续学习吧!

最受关注的前 50 名 Instagrammers,可视化

原文:https://towardsdatascience.com/the-top-50-most-followed-instagrammers-visualized-134ca4788938?source=collection_archive---------7-----------------------

我是 Greg Rafferty,湾区的数据科学家和摄影爱好者。你可以在我的 Tableau 公共档案上查看这个项目的完整 Tableau 仪表盘。还有看看我的 insta gram@ greggrafferty!如有任何问题或反馈,请随时联系我!

2017 年夏天,我为 Tableau 编写了一个 Web 数据连接器,它连接到 Instagram 的公共内容 API,允许我从任何公开发布的帖子中下载数据。很自然的,我先建了一个 Tableau 仪表盘来分析我自己的 Instagram 账号(去关注我@ greggrafferty!)然后转而查看其他几个我认为可能有趣的账户,并从他们的数据中构建了迷人的 Tableau 仪表盘。为 @natgeo 查看这个(这似乎表明 2016 年 8 月期间有猫腻!),或者这个代表 @realdonaldtrump ,或者这个代表标签#eclipse2017,它清楚地显示了 2017 年 8 月 30 日日食穿越美国的路径:

Cool map, huh? Each point represents a single Instagram post with the hashtag #eclipse2017, posted during the 30 days followed the August 30th event.

不幸的是,Instagram 最近大幅降低了这一 API 的呼叫率限制,并将很快完全取消这一 API,因此我将退出我的 Web 数据连接器,并想分享一些我通过查看 Instagram 前 50 名最受关注用户的合并帖子(所有数据截至 2017 年 9 月)发现的见解。

单击下面打开交互式仪表板。

[## Tableau 公共

格雷格·拉弗蒂在 Instagram 上关注最多的前 50 名用户

public.tableau.com](https://public.tableau.com/profile/greg4084#!/vizhome/50MostFollowedInstagramUsers/Whoarethe50MostFollowedInstagrammers)

首先,这些 Instagrammers 是什么人?以下是他们,按关注人数排序:

关于数据集的一些基本统计数据:

  • 他们所有追随者的总和高达 3,070,353,066 个用户。然而,这个数字大得令人误解,因为如果我同时关注 @instagram@碧昂斯,我会被计算两次。尽管如此,这仍然是一个很大的数字。
  • 该数据集中的职位总数为 157,944 个。
  • 总赞数 65669459900,总评论数 1345709525!
  • 大多数用户没有在他们的照片上标记地理位置,即使有,他们也没有始终如一地这样做;总共标记了 2903 个独特的位置。

那么这些用户各有多少关注者呢?

Number of followers per user

Instagram 自己的账户是目前的领导者,这是意料之中的,因为它总是任何新用户注册的第一个建议关注的对象。

任何在社交网络上呆过一段时间的人都知道,一些用户把所有的时间都放在了网上,而另一些人则不那么频繁。在这前 50 名 Instagrammers 中,谁发的帖子最多?

Total number of posts per user

国家地理一天贴几次,9GAG 也是。最极端的是泰勒·斯威夫特和艾玛·沃森。

让我们看看所有这些账户的年龄,因为帖子的总数并不能说明全部情况。

卡拉·迪瓦伊是最长的,紧随其后的是“维多利亚的秘密”。他们中的一些人确实是 Instagram 的相对新人,因此理所当然地只有几篇帖子;然而泰勒·斯威夫特一直存在,对吗?原来,2017 年 8 月,她删除了她所有的 Instagram 内容,本质上是重新开始,作为公关噱头的一部分,以宣布她的名誉专辑。你可以在底部看到泰勒·斯威夫特,从八月份开始,她重新开始了她的账户。阿黛尔拥有下一个最年轻的帐户,其次是大卫贝克汉姆和艾玛沃森。

这些用户是谁?他们是做什么的?

事实证明,他们大多数是音乐家。运动员排第二。前 50 名中的 5 个,或者总数的 10%(whaaat?!?!),是卡戴珊/詹纳名人家族的成员(金,肯德尔,凯莉,考特尼和 Khloe,对于那些真正关心的人)。

好吧,但是哪些群体最受欢迎呢?

也许不出所料,非常漂亮的年轻模特的照片平均每个粉丝都有很多赞。但是有一个团体得到了更多,而这个团体只有一个用户……NASA!科学万岁!

如果我们看一下个人账户,现在谁得到了每个关注者最多的喜欢呢?

可怜的克瑞丝·布朗在那边。似乎很多人只是讨厌关注他,但从不喜欢他的帖子。艾玛·沃特森,真是个明星。作为第二高的用户,她平均每个关注者的点赞数是第三高的 4 倍!虽然她的叙述有些独特,因为它相对年轻,与其他相比照片很少,所以我们可以考虑把它作为一个离群值扔掉。你会注意到泰勒·斯威夫特是亚军,她获得了数百万的追随者,然后删除了所有旧的(大概是不太喜欢的)照片,这有效地提高了她的平均得分。

不过,还有最后一个问题需要回答。如果你是一个名人,你想获得尽可能多的赞,你应该什么时候发帖?

Average number of likes by day and month

似乎夏季是最好的!本周早些时候往往会做得好一点。绝对不要在初冬的周中宣布重大消息;那时没有人喜欢任何东西。

这些名人是从哪里发帖的?似乎全世界都是如此(很大程度上要感谢国家地理杂志,它的帖子是紫色的点)。

Each individual geo-tagged post

最后,这里有一个看起来很酷的图表。如果你想更深入地了解和探索这一点,我鼓励你查看一下交互式仪表盘。它显示了这些年来每个用户对每篇帖子的点赞增长情况。点代表每个帖子,线代表点赞数的移动平均值。这些颜色代表每个用户。

Number of likes per post, per user, by date posted

我注意到的一个有趣的现象是,当赛琳娜·戈麦斯和贾斯汀比伯在公开分手时,他们都发布了一些关于对方的非常肮脏的事情。但当他们复合时,作为真爱的象征,我敢肯定,他们检查了他们的 Instagram 账户,删除了所有从 2016 年底到 2017 年初的那些讨厌的帖子。多浪漫啊!看看岗位差距。

Purple for Bieber, Orange for Gomez

最后,以下是数据集中一些比较重要的帖子:

最早的帖子来自最受关注的前 50 名用户之一,作者是卡拉·迪瓦伊:

First post, by Cara Delevingne

这是该平台有史以来最受欢迎的帖子(至少截至 2017 年 9 月),作者是碧昂斯:

Most liked post ever, by Beyonce

下面是第二个最受欢迎的帖子,也是碧昂斯发的:

Second Most Liked Post Ever, by Beyonce

有史以来第三受欢迎的帖子,作者是赛琳娜·戈麦斯:

Third most liked post ever, by Selena Gomez

第四个最受欢迎的帖子是克里斯蒂亚诺·罗纳尔多写的:

Fourth most liked post ever, by Cristiano Ronaldo

最受欢迎的帖子被上面的三个语法所控制;下一个上榜的用户是爱莉安娜·格兰德,以下是她最受欢迎的帖子:

Most liked post by Ariana Grande

以下是艾玛·沃森最喜欢的帖子:

Most liked post by Emma Watson

还有莱昂内尔·梅西的:

Most liked post by Leo Messi

以下是 Instagram 上最受欢迎的帖子(多么可爱):

Most liked post by Instagram

有趣的是,国家地理杂志和美国宇航局最受欢迎的帖子都以 2017 年 8 月的日食为主题!以下是 Nat Geo 的:

Most liked post by National Geographic

这是美国宇航局的:

Most liked post by NASA

下面是我自己最喜欢的帖子,也是关于日食的:

from @gregrafferty, not a Top 50 Instagrammer

以下是维多利亚的秘密最受欢迎的帖子:

Most liked post by Victoria’s Secret

我只列出了维多利亚的秘密中最受欢迎的帖子,作为对 Instagrammers 中最受欢迎的 50 个帖子中最不受欢迎的帖子的一种安慰。它在这里,有相对惨淡的 311 个赞,只有 4 条评论(相比之下,碧昂斯最受欢迎的帖子有超过 1100 万个赞和 50 万条评论!):

Least liked post, by Victoria’s Secret

如果你想探索这些图片是从哪个完整的 Tableau 仪表盘中提取的,请点击这个链接

机器学习的触觉

原文:https://towardsdatascience.com/the-touch-of-machine-learning-47fe42fd9eeb?source=collection_archive---------6-----------------------

长期以来,机器学习一直是人们感兴趣的话题。但即使在今天,我们中的许多人仍然认为人工智能是一个好得难以置信的想法。但在现实中,我们实际上已经接近了人工智能真实存在的时代,并且完全有能力以人类不可能想象的方式完成任务。自从计算机诞生以来,它已经走过了漫长的道路。

迄今为止,我们创造的大多数工具都是被动的,也就是说,它们只能做我们让它们做的事情,仅此而已。他们只能以有限的方式执行有限的任务,而没有能力思考其他方式。计算工具有三个阶段。

  • 被动:不会思考工作方式的工具。
  • 生成:生成工具相当智能。大多数使用机器学习的工具本质上是生成性的,也就是说,它们可以思考解决某个问题的方法。考虑一个生成工具的例子。空客最近使用机器学习在他们的飞机上设计了一种新型的隔墙。新的结构比人类设计的要坚固得多,而且轻了 50%。目前,阿姆斯特丹正在建设一座完全自主的桥梁。点击这里了解更多信息。基本上,他们正在使用生成工具,以便计算机可以自己设计一座桥,并用不锈钢 3D 打印出来。
  • 直观:这是人工智能的终极目标。这是计算机利用直觉决定下一步行动的地方。最近,谷歌 DeepMind 创建了一个神经网络,它击败了世界上最好的围棋选手,这被认为是迄今为止最具战略性的游戏。在比赛过程中,在某些时候,甚至连设计 AlphaGo 的工程师都无法理解 AlphaGo 为什么会做出某一步棋!

什么是机器学习?

简而言之,机器学习是这样一种想法,即有一些通用算法可以告诉你关于一组数据的一些有趣的事情,而你不必针对该问题编写任何自定义代码。您不必编写代码,只需向通用算法提供数据,它就会根据数据构建自己的逻辑。

例如,一种算法是分类算法。它可以把数据分成不同的组。用于识别手写数字的相同分类算法也可以用于将电子邮件分类为垃圾邮件和非垃圾邮件,而无需更改一行代码。这是相同的算法,但它输入了不同的训练数据,因此它会产生不同的分类逻辑。

机器学习的风格

机器学习有三种风格。但是,监督和非监督学习风格是最常见和最流行的风格。

  • 受监督的(Supervised):我们有一个适当标记的数据集,我们在每个周期都会收到反馈。因此,即使预测是错误的,我们也会收到反馈。这种类型的学习更容易实现,因为在这种情况下,我们有一个正确标记的数据集。
  • 无监督:这里有一个无序的数据集,可能没有被标记。在这种学习风格中,根本没有反馈,也就是说,我们不会在任何类型的预测(正确或错误)中得到反馈。这比监督实现起来要困难一些。
  • 强化:在这里,我们可以拥有任何类型的数据集。这种学习方式的主要区别在于反馈。只有当预测正确时,我们才能得到反馈。例如,如果你设置了一个会下棋的机器人,我们更喜欢强化学习,也就是说,机器人只有赢了比赛才会学习步骤!

总而言之,

让我们把它编码出来!

所以现在我们知道了机器学习的风格,但是不知道怎么实现。假设我们想预测房价。那么,你如何编写一个程序,仅仅通过知道一个动物大脑的重量来估算它的体重呢?

在传统的编程方法中,我们基本上会编写一个带有许多 if-else 的程序,将大脑的重量与某些参数进行比较,并得出一个结果。在这种情况下,将会有无限量的假设,因为动物物种的数量太多了,而且,将会有大量的数据必须手动输入系统才能工作。

我们的传统方法大概是这样的:

def calculate_weight_of_body(brain_weight, animal_name):
    if animal_name == animal_one:
        if weight < certain_value: 
            return weight_certain_value 
    elif animal_name == animal_two: 
        if weight < certain_value: 
            return some_value ...and so on.

所以我们采用机器学习方法来解决这个问题。让我们假设我们有一个类似这样的数据集:

大脑重量身体重量 3.385 44.50 0.480 15.50 1.04 5.50

..诸如此类。此外,请记住,由于我们的数据是有标签的,我们正在遵循监督学习风格。

(实际数据集包含在代码库中。检查代码部分的链接)。

现在让我们进入代码。这次,我们将使用 scikit_learn 库来执行线性回归。如果你现在不明白它是什么,不要担心,因为我会在接下来的帖子里解释更多!我们有三个主要的依赖关系:

  • Pandas:我们将使用这个库从数据集文件中快速加载数据。
  • Scikit 学习:用于执行线性回归
  • Matplotlib:用于可视化我们的预测

所以让我们开始吧

# Import all the dependencies
import pandas as pd 
from sklearn import linear_model 
import matplotlib.pyplot as plot # Read data data = pd.read_fwf('brain_body.txt') 
x_values = data[['Brain']] 
y_values = data[['Body']] # Train model using Linear Regression 
body_prediction = linear_model.LinearRegression() body_prediction.fit(x_values, y_values) # Visualize results 
plot.scatter(x_values, y_values) 
plot.plot(x_values, body_prediction.predict(x_values)) 
plot.show()

你在这里!你刚刚迈出了机器学习的第一步。但是现在,你很好奇它到底是怎么工作的?

这是如何工作的?

我们使用线性回归来描绘一条简单的直线,这条直线最适合我们所有的数据点。把 x 轴当做大脑的重量,y 轴当做身体的重量。现在,我们在笛卡尔平面上绘制数据集的所有点。

线性回归通过追踪与我们的数据最匹配的直线来帮助我们找到点之间的关系。我们这条线的方程式是

其中 b 是 y 轴截距,m 是直线的斜率。通过使用这条线,我们可以建立大脑重量和体重之间的关系!

我们的点和追踪线的图形看起来像这样:

这是魔法吗?

不,这不是魔法!一旦你开始看到机器学习技术可以多么容易地应用于看起来非常困难的问题(如手写识别),你就会开始觉得只要你有足够的数据,你就可以使用机器学习来解决任何问题并获得答案。

总结一下

总而言之,我们现在知道了三件基本的事情:

  • 机器学习:让计算机根据我们提供给它的数据,自己计算出步骤。
  • 三种不同风格:监督式、非监督式、强化式
  • 线性回归:它允许我们通过一条最佳拟合线对独立值和从属值之间的关系进行建模。

密码

这篇帖子的代码已经上传到我的 Github 个人资料上了!

在这里找到源代码:https://github.com/C-Aniruddh/linear_regression

原载于 2017 年 72 日 achandratre.azurewebsites.net

我们 EMS 系统的悲剧

原文:https://towardsdatascience.com/the-tragedy-of-our-ems-system-4182f20b02bf?source=collection_archive---------5-----------------------

个人被鼓励使用最昂贵的医疗保健来解决小问题;以美元为代价节省便士。

备选领域提供了方便的框架,以更好地阐明消防服务中的问题。被称为“公地悲剧”的经济理论可能会将我们当前面临的环境管理挑战概括为一个简洁的隐喻。
公地悲剧是这样一种情况:个人通过开发一种共享资源,使其耗尽,从而使个人收益最大化,给社会带来灾难性的代价。结构不良的激励会产生“道德风险”,这是一种被称为“荷兰病”的经济现象,最后,被称为“临界点”的枯竭点通常会导致悲剧性的崩溃。

Commons — 每个人都可以使用的公共资源

想象你是一个牧场主,有一小群奶牛被你的私人牧场所限制。当地政府允许牧场主在紧急情况下,如野地火灾或大规模干旱时,使用最好的公共土地进行临时放牧。你会注意到其他当地牧场主开始扩大“紧急情况”的定义,并经常使用公共土地放牧。

道德风险——被激励去做错误的事情

了解到每个人都可以定义什么是紧急情况后,当地牧场主通过增加他们私有土地以外的畜群规模来实现利润最大化。最终,所有的牧场主都必须使用公共土地来保持竞争力。

荷兰病——新资源侵蚀旧的稳定资源

牧场主将他们的大部分畜群转移到免费的公共土地上,通过停止给他们的私有土地浇水,让草枯死,将他们的成本降到最低。现在,牧场主完全依靠公共土地放牧。

引爆点——灾难性的崩溃

最终,公共土地上的草因过度放牧而死亡,留给牧场主的畜群超过了他们被忽视的私有土地所能养活的数量。突然,牧场主的私有土地也因过度放牧而坍塌,导致所有的牧群挨饿。

公地的悲剧

由于滥用和过度使用,用于紧急情况的公共资源系统已经崩溃,使整个社区处于绝望的境地。

来自过去的警告

经济学家威廉·福雷斯特·劳埃德在 1833 年讲述了“公地悲剧”的故事,作为对后代的警告。该警告指出,超出其承载能力的公共资源面临着失败的风险,给社区带来了指数级的成本。
换句话说,公地的悲剧在于决策者无法认识到公共物品何时达到承载能力,从而导致影响整个社区的灾难性崩溃。

我们 EMS 系统的悲剧

我们目前的 EMS 系统,在越来越多的使用下,开始看起来像 19 世纪劳埃德的“公共财产”,通过拨打 911 为小问题奖励病人,而不需要他们付出实际代价。随着呼叫量的增加,系统的压力促使社区以牺牲其他项目为代价大规模扩展 EMS 资源。

非危重病人占急诊总量的 90%,我们能在急诊系统达到临界点之前进行干预吗?

公地

根据联邦法律,每个人都可以使用 EMS,并且必须“接受、评估和稳定所有接受护理的人,无论他们的支付能力如何。”因此,许多没有传统医疗保险的人正在使用 EMS 进行常规医疗护理。消防部门的额外负担减少了为其他紧急情况提供的服务,实际上耗尽了应对模式的所有复原力;一个重大事故就可能使当地的 EMS 系统彻底瘫痪。

道德风险——对用户和消防部门而言

道德风险是“一种倾向于承担过度风险的情况,因为承担风险的一方不承担成本。”许多 EMS 使用者几乎不面临不良后果的风险,例如因小病使用 EMS 的巨额救护车费用。

使用没有直接成本的最昂贵的医疗方案

一些病人被鼓励使用 EMS 系统,因为他们没有直接的花费。最终,社区承担了额外的费用,而用户却突然享受到了丰富的方便和先进的医疗服务。

你打电话,我们拖运,如此而已

与病人一样,消防部门也在与自身的道德风险作斗争。许多消防部门进入救护车运输业务,以保护社区,雇用额外的消防队员,并投资于大量的资本资产。来自救护车账单的收入通常用于支付员工和设备的成本,使得医疗运输业务成为必需的业务。但是许多消防部门面临着一个事务性问题,他们的人员和资产成本在增加,而每次运输的平均收集量在下降。

突然间,消防部门陷入了专注于收入而非社区健康的困境。就像病人一样,消防部门发现自己处于道德风险中,不管医疗需求如何,运送尽可能多的病人,希望缩小成本上升和收入下降之间的差距。

荷兰病——EMS 侵蚀了其他形式的医疗保健

1977 年,《经济学人》上的一篇文章创造了“荷兰病”一词来描述一种突然致富的形式,这种形式重塑了经济,侵蚀了一些部门,并将其他部门推到了崩溃的边缘。“荷兰病”可能有助于描述我们医疗保健系统的演变,因为人们突然因以低成本获得先进的 EMS 系统而富裕起来,同时侵蚀了家庭医生等更传统的医疗保健手段。

解决方案是有的,但可能需要一点点的尝试和错误

我们的 EMS 系统由消防部门、救护车公司、医院、保险提供商、诉讼律师和政府法规组成,它创造了一个复杂的适应性系统,或 CAS 。CAS 非常难以分析、管理或预测,一旦超过其承载能力,就会突然崩溃,就像劳埃德寓言中的普通牧场一样。

大卫·斯诺登Cynefin 框架的创建者和复杂性理论的领军人物,建议当面对塑造一个 CAS 时,一个人通过在系统中使用一组安全到失败的实验来采用一个“探测、感知和响应”的过程。在新项目实施后,管理员根据结果抑制或放大活动。换句话说,尝试新事物,多做有用的事,少做没用的事。

The complex environment of the Cynefin framework

在处理 CAS 时,传统的官僚计划和结构化实施很少能产生预期的结果,反而会使问题变得更糟。我们的 EMS 问题的解决方案将在本地找到,在一个小实验中产生积极的结果,由关心他们社区的勇敢的领导者实施。

Australia tries a public education campaign

由于道德风险和一种荷兰病的混合,我们的 EMS 系统正面临巨大压力。我们建立了一个激励用户为小问题寻求紧急服务的系统,高额费用由社区而不是用户承担。急救服务的主导地位侵蚀了传统形式的医疗保健,如果 EMS 崩溃,可能会使社区没有医疗保健的选择。我们的紧急医疗系统的复杂性创造了一个复杂的适应系统,在小危机演变成大灾难之前,需要一点尝试和错误来克服无知和冷漠的古老问题。消防部门没有制造问题,但我们应该成为解决方案的一部分;为了市民,我们发誓要保护。

[## 消防部门是响应模型,而不是生产模型

你不应该最大化效率;你应该有弹性。效率导致脆弱;弹性…

medium.com](https://medium.com/elitecommandtraining/fire-departments-are-response-models-not-production-models-f7943d5c623d)

贝叶斯先验和过度拟合的真相

原文:https://towardsdatascience.com/the-truth-about-bayesian-priors-and-overfitting-84e24d3a1153?source=collection_archive---------3-----------------------

你有没有想过一个先验和观测数据相比有多强?这不是一件完全容易概念化的事情。为了减少这种麻烦,我将带你做一些模拟练习。这些是思考的成果,不一定是建议。然而,我们将贯穿的许多考虑将直接适用于将贝叶斯方法应用于特定领域的日常生活。我们将从创建一些从已知流程生成的数据开始。过程如下。

它以一个循环过程为特征,一个事件由变量 d 表示。该事件只有一次观察,因此这意味着最大似然法总是将无法用其他数据解释的一切都分配给该变量。这并不总是想要的,但这就是生活。数据和最大似然拟合如下。

您可以注意到的第一件事是,最大可能性超过前面的 d 参数 20.2%,因为真实值是 5

现在想象一下,我们用贝叶斯方法来做这件事,拟合生成过程的参数,而不是函数形式。因此,我们将在没有任何先验知识的情况下对β参数进行采样,并观察结果。在下图中,您将看到真实值为 y3 条线对应于拟合后验分布的 3 个独立样本。

非常类似于最大似然的例子,除了现在我们也知道可信区间和贝叶斯方法给我们的所有其他好处。我们可以快速总结一下β参数。因此,我们可以看到,即使我们有贝叶斯方法,我们仍然过度拟合。

现在到了正题!与数据相比,先验有多强?

关于薄弱的前科和无知

为了分析先验的强度,我们将不断设置更严格的先验,看看结果会怎样。请记住,令人高兴的情况是我们知道真相。我们将从建立一个如下所示的模型开始,这意味着我们将只给贝塔分配先验,而不分配截距。

因此,该模型符合与之前相同的过程,但是引入了弱先验。这里的先验知识表明,β参数都是高斯分布,它们周围有很多方差,这意味着我们对这些值应该是多少不是很有信心。如果你看上面的表格,我们没有先验,这基本上意味着我们的先验是负无穷大和无穷大之间的均匀分布,你可以看到推论没有太大的不同。

需要注意的一点是,可信区间没有缩小,这意味着模型关于每个参数的不确定性大致相同。这是为什么呢?对于第一个模型中的初学者来说,即使我们“相信”无穷大是每个参数的合理猜测,采样器还是找到了方法。每个参数的后验分布的平均值在模型之间几乎是相同的。那太好了。两个无限不同的先验导致相同的平均推断。让我们试着看看先验知识会在多大程度上改变平均推断。请在此处查看新型号描述。

对于我们的推断,这看起来像什么?看起来是这样的!

差别仍然不大,所以我们再缩小 10 倍。

在这里我们完全可以看到不同之处。查看下表中参数βd 的平均值。从 6.03 到 4.73,变化了 21%。现在,这一平均值与真实值仅相差 5.4%。

但是让我们花点时间来思考这个问题。为什么会这样?原因是你的知识可以充实。有时比数据更重要。所以你在这个领域的经验应该被考虑在内,并根据证据进行权衡。现在由你来用数学的方式陈述你的经历,这就是我们在上一个模型中所做的。在你开始反驳我的推理之前,看一下我们绘制的最后一个先验和后验的图,以及我们生成过程中的点估计。

如你所见,先验在真实值附近,但并没有真正覆盖它。这不一定是件坏事,因为无知会让数据把你带向疯狂的方向。下图显示了一个例子,我们绘制了模型三的先验和模型三的后验。很明显,数据被允许将值驱动到过高的值,这意味着我们过度拟合了。这正是最大似然法遭受维数灾难的原因。我们不应该对此感到惊讶,因为我们实际上已经告诉模型,值很可能达到 10

我们可以从中总结出一条经验。

你的先验越弱,你就越能模拟最大似然解。

关于前科累累和过于自信

如果最后一章是关于陈述你的想法和对你的领域知识有信心,那么夸大这一点和过分自信也是危险的。为了说明这一点,让我们做一个小例子,我们说,贝塔围绕 0 摆动,标准差为 0.5,是前一个宽度的一半。现在看一下参数估计。

很明显,我们在这里过于自信,结果现在与事实相差甚远。然而,我认为这是一个相当理智的先验。为什么?因为我们和手头的问题没有关系,在这种情况下最好保守一点。因此我们是成功的。我们陈述了我们的想法,而“一”数据点更新了很多。现在想象一下如果我们有两个呢?因此,也许一个数据点能够更新我们的观点并不是那么糟糕,也许首先保守一点也不是一个坏主意?

当然,是否建议保守取决于手头的应用程序。对于一个在证据面前确定嫌疑人是否确实有罪的应用程序来说,怀疑“证据”可能是很自然的,而对于一项潜在的投资来说,它可能会付出更高的风险,并接受更高的错误率,以期大获全胜。

结论

那么我们从这一切中学到了什么呢?好吧,希望你明白了设定优先顺序不是一夜之间就能学会的。需要练习才能有感觉。然而,这些原则非常明显。我会给你一些关于如何设定前科的核心建议。

  • 总是把先验设定在你相信真理的附近
  • 始终设定先验,使它们反映与你试图预测的现象相同的数量级
  • 不要过于自信,给怀疑留有空间
  • 永远不要使用完全没有信息的先验知识
  • 尽可能避免使用均匀分布
  • 总是总结你所有先前的结果,这样即使没有可用的数据,你的模型仍然可以预测你观察到的反应的数量级
  • 要小心,要诚实!永远不要对你希望是真实的结果假设非常有用的先验知识。如果你相信它们是真的,那也没关系。在你看到不同之前,不要放心。

黑客快乐!

原载于doktormike . github . io

脸书·艾发明新语言背后的真相

原文:https://towardsdatascience.com/the-truth-behind-facebook-ai-inventing-a-new-language-37c5d680e5a7?source=collection_archive---------0-----------------------

关于脸书在机器人开发出自己的语言后关闭机器人的文章已经见诸报端。媒体就是喜欢这些点击诱饵标题。这些文章中的一些会让你相信这是一次非常危险的呼叫——脸书的科学家在人工智能接管世界之前勉强关闭了它。幸运的是,仍然有理智的人存在,所以已经有相当多的文章解释为什么所有关于世界末日的言论完全是胡说八道(就像 Snopes美国消费者新闻与商业频道发表的文章)。甚至一些媒体最初提供了这个事件的非常可耻的版本,最终编辑了内容以减少戏剧性(例如独立报)。

问题是虚假但吸引人的新闻比其他任何东西都更容易传播。我还觉得奇怪的是,没有一篇文章真正用人们能理解的术语解释发生了什么。我试图向我的一些朋友解释这种情况,最终决定值得写下来。也许它会帮助人们不去想天网而入睡。然而,我的目标是教育——展示所谓的人工智能是如何工作的——而不是偏袒任何一方。

脸书人工智能研究(博览会)

那么脸书实际上在做什么呢?而机器人是如何“几乎变得有知觉”的?整个项目都有详细的记录,并向公众公开。任何人都可以下载并运行这个人工智能,也可以自己观察这种新语言。只是请小心,像脸书工程师那样及时关闭它。

系统尝试模拟对话和协商。所谓的机器人被给予一组物品(由书、帽子和球组成)和一些它比其他人更想要哪些物品的偏好。然后,它应该与它的对手,不管是人还是另一个机器人,就如何在他们之间分割宝藏进行谈判。

这项研究于 6 月发表,包括实验中使用的所有代码和训练数据。如果你对更多细节感兴趣,请阅读官方文章或从 github 获取代码。

那么简单来说,它是如何工作的呢?

机器学习

我不会用所有的技术细节来打扰你,但是理解一些关于这项技术如何工作的基本原理是很重要的。

当开发这样的机器人时,你从一个叫做“训练数据集”的东西开始。这包括机器人试图模拟的行为的良好描述的例子。在脸书谈判聊天机器人的特殊情况下,你给它谈判对话的例子,并适当地注释整个情况——初始状态是什么,谈判者的偏好,说了什么,结果是什么,等等。该程序分析所有这些例子,提取每个对话的一些特征,并为这些特征分配一个数字,代表具有该特征的对话以谈判者的积极结果结束的频率。为了更好地想象“特征”是什么,想想单词、短语和句子。实际上要比这复杂得多,但这足以说明原理。

更具体地说,如果机器人想要帽子,“你可以拥有所有的帽子”这句话的分数会非常低,因为这句话在训练数据的每个场景中都以糟糕的结果结束——谈判者没有得到他想要的东西。

Diagram representing a sample dialog evaluation (Deal or No Deal? End-to-End Learning for Negotiation Dialogues, 2017)

这将基本上让你的人工智能版本为零。它现在知道哪些句子更有可能从谈判中获得好的结果。你可以用它来开始一个对话。它将根据训练阶段收集的数据,尽量提高积极成果的可能性。人工智能这个术语在这里感觉有点奇怪——它非常人工,但不是非常智能。它不明白它所说的意思。它只有非常有限的一组对话可以联系,它只是根据从那些历史对话中计算出的概率来挑选一些单词或短语。它不能做任何其他事情。它只是计算得到期望数量的帽子、球或书的概率,并基于此在屏幕上写些东西。

下一步是使用一种叫做强化学习的技术。由于我们提供良好标注的训练数据的能力相当有限,我们需要另一种方式让这个人工智能学习。一种常见的方法是让人工智能运行模拟,并从自己的结果中学习。在我解释这对谈判机器人的情况意味着什么之前,让我回避一个不同的人工智能。

AlphaGo

谷歌 Deepmind AlphaGo 是一个你去年可能听说过的程序。它是第一个打败职业围棋手的人工智能。这是强化学习的一个很好的例子。

AlphaGo 开始从真人玩的真实游戏中学习。它根据这一知识对每一个可能的动作进行分析和评分。光是这一点就让 AlphaGo 有能力下棋,尽管很差——它不懂游戏,但它有办法根据之前分析的游戏给棋步打分。

但是,围棋很容易模拟。我们有一套精确的规则,我们为人工智能设定了一个非常好的目标——赢得比赛。所以我们可以创建这样一个人工智能的两个实例,并让它与自己对抗。由于我们有大量的计算能力,它可以轻松地进行数百万次游戏训练,比任何人都要多。然后,它会根据所有这些模拟结果更新每一步棋的获胜概率,从而越来越好地为每一步棋打分。

The famous match of AlphaGo vs Lee Se-dol. The long reinforcement learning period is paying off.

我再次简化了这个概念。如果你想进一步了解 AlphaGo,我可以推荐克里斯托弗·伯格的这篇文章。我只想让你们从这个例子中吸取一个教训。如果我们能够满足三个条件,强化学习会非常非常有效(AlphaGo 和许多其他人已经证明了这一点):

  1. 一个定义明确的人工智能选择空间。在 AlphaGo 的情况下,它只能下有效的围棋。
  2. 给结果打分的好方法。就 AlphaGo 而言,赢了是好事,输了就是坏事。
  3. 一个很好的方法来模拟情况,让人工智能学习。在这种情况下,我们可以让人工智能对抗它自己(最好是对抗它自己的不同版本,因为如果你的对手和你玩的不一样,就更容易学到新东西)。

回到脸书

所以让我们回头看看原来的题目。脸书试图创造一个可以谈判的机器人。它符合以上三个条件的程度如何?有一个很好的方法来给结果打分,因为谈判中的每一项都有一个值。我们有一个很好的方法来模拟这种情况,让人工智能学习。这正是脸书所做的——让机器人的两个实例相互协商。但是最后一点有点问题。

与围棋不同,英语没有简单的定义。原始训练数据集是英文的,但提取的特征只是单词和短语,机器人只是根据它们有多大可能帮助获得预期结果的数字表示将它们放在一起。

两个实际上不懂英语的机器人最终互相交谈,互相学习。衡量他们成功的唯一标准是他们如何分发书籍、帽子和舞会。唯一要遵循的规则是把单词放在屏幕上。他们开始或多或少地用英语交谈,但他们从自己的错误中学习,却不知道它们实际上是错误——以帽子、书和球的形式导致了想要的结果。一些单词被遗忘了,因为根据数字,它们对谈判结果没有贡献。一些得到了繁殖。如果说“我想要”能提高得到某样东西的几率,那么我们为什么不应该说多次呢,对吗?一旦成功,人工智能会认为这是一个好策略。

如果是和人类对抗训练,这可能不是什么大问题,因为对方会使用恰当的语言。但是会有一个不同的问题。很难运行足够多的模拟来训练人工智能。

正如脸书的工程师所指出的,如果评分功能也包括语言检查,而不仅仅是谈判后收到的物品的总价值,效果可能会更好。但事实并非如此。语言退化的事实无论如何既不令人惊讶也不有趣。每一个研究这类问题的科学家都会遇到这种情况,我确信脸书的工程师们确实预料到了这种结果。他们只是在模拟退化太严重时,在多次迭代后,在它不再提供有用的结果后,关闭模拟。

顺便说一句,如果你读了报告或发表的论文,除了在互联网上到处流传的胡言乱语,实际上也有很多好的结果。实验按预期进行,我可以说总体上是相当成功的。

This is not a new “more efficient” language that only AI understands as some journalists would lead you to believe. It is just a degenerate form of English after too many rounds of reinforcement learning.

最后,这没什么好奇怪的

没有什么可怕、令人震惊甚至值得注意的事情发生。只是普通的一天和普通的科学实验。然后,当想要成为记者的人一篇接一篇地发布关于世界末日的文章时,一切都乱套了。当聊天机器人不再显示合理的结果时,关闭它就像更换有故障的灯泡一样不吉利。

获得数据科学家工作的两个方面

原文:https://towardsdatascience.com/the-two-sides-of-getting-a-job-as-a-data-scientist-a4571acc58bc?source=collection_archive---------3-----------------------

你是找工作的数据科学家吗?你是在找数据科学家的招聘人员吗?如果你对这个问题的回答是或否,你需要阅读这个。

Edit: So happy that the post got so much attention, both here and KDNuggets 😃.

你好!这是一篇我等了很久才写的博客。主要是因为我需要做研究,听听其他人对此的看法。

我认为自己是一名数据科学家,而不是招聘人员,但由于我与 Amanda Voss 和更多数据科学和 IT 领域的招聘人员进行了一次令人惊叹的对话,我现在对故事的双方都有了一个想法:DS 在找工作,招聘人员在为一个职位寻找最好的 DS。

在开始之前,如果你想了解更多关于我寻找数据科学家工作的个人经历,请阅读我的博客:“如何获得数据科学家的工作?”

[## 如何获得一份数据科学家的工作?

大家好。这篇博客文章来自我最近在 LinkedIn 发表的三篇文章。这是第一部分、第二部分和第三部分。

towardsdatascience.com](/how-to-get-a-job-as-a-data-scientist-f417078fe13e)

数据科学家方面

所以你是一名数据科学家,或者你认为你离数据科学家越来越近了,你开始在这个领域找工作。我的第一个建议:耐心点!这不是一件容易的事,也许你会申请上百份工作才能得到一份。

当然,这可能是一个非常简单快速的过程,但根据我的经验,这至少需要(大约)100 份申请和几个月的时间。

从每一次申请,每一次拒绝中学习。当我开始申请工作时,我不得不面对许多拒绝。一些我实际上没准备好的事情。我想没有人让你做好被拒绝的准备,但是如果你从这件事中得到了什么,那也没关系!很正常,不针对个人!

每一次拒绝都是你走向成功的一步。适应雇主可能想要的每一个特征,或者有合适的经历,或者仅仅是文化适应,都不容易。

如果你足够幸运的话,你将会得到一个令人惊讶的招聘人员,他会让你知道发生了什么,以及如何在未来的面试或过程中改进。认识到自己的缺陷和弱点是变得更好的开始。你现在感受到的挫败感,或者你可能每次都用它来提高和变得更好。

关于该流程,需要记住三个要点

  • 有些人不知道什么是数据科学。所以研究你申请的公司,看看他们的员工在做什么,寻找他们的交流方式,他们的脸书、LinkedIn、Twitter、会谈和网络研讨会。看看他们是否在做你感兴趣的事情。
  • 招聘人员是你面试时最好的朋友,他们想帮你进入面试。所以信任他们,让他们帮助你提问
  • 比起你的技术知识,人们通常更感兴趣的是你如何解决问题和你如何处理一些特殊情况。当然,写出高质量的代码并充分理解你正在做的事情是很重要的,但是还有更多。

获得数据科学家工作的一些建议

  • 要有耐心。在找到一份工作之前,你可能会申请数百份工作(但愿不会)。
  • 准备。很多。不仅要学习重要的概念、编程和回答商业问题,还要记住你将是组织中的重要一员,你将与不同的人和情况打交道,准备好回答关于你在不同工作情况下如何表现的问题。
  • 有作品集。如果你正在寻找一份严肃的数据科学的有偿工作,做一些有真实数据的项目。如果你能把它们发布在 GitHub 上。除了 Kaggle 比赛,找一些你喜欢的事情或者你想解决的问题,用你的知识去做。
  • 招聘人员是你的朋友。面试你的人也是。他们希望你进入公司,这是我每天都记得的一个强有力的建议。
  • 询问人们做什么。我建议您关注 Matthew Mayo 关于“数据科学家的一天”的帖子,以便更好地了解我们的工作。
  • 如果你想要一份实习工作,就要准备好你的学术技能。

创建简历和生活(什么?)得到那份工作

马克·梅龙的建议:

如果你有什么想让读者或听众(采访者)知道的,你最好把它放在你的信息的前面。对于简历来说,这意味着你要用你最强的方面来引导。也许这就是你的教育。可能是你的工作经历吧。不要觉得你必须遵循你下载的简历模板中的顺序。

当面试官问“说说你自己吧”,你不需要给他们按时间顺序讲述你的生活故事。首先告诉他们你最大的优势是什么。

马克的更多信息:

你想表达你对这个领域的热情吗?做一些个人项目。贡献开源。开个博客。见鬼,在 LinkedIn 上活跃[……]。

文字廉价;行动才是最重要的。

在我们这个竞争激烈的领域,你希望避免做任何会导致人们不把你当回事的事情。

来自凯尔·麦基乌的建议:

把简历上的每一个要点都变成一个小故事。你可能已经有了一整页的文本,而且可能充斥着“我做了这个”或“我们做了那个”的一句话去吧,删掉一半。

现在你已经腾出了一些空间,开始扩展剩余的成就。

使用星形格式给出每个要点的上下文,并将其转化为一个有分辨率的详细迷你故事。

在简历上写一些突出的故事和成就比写一大堆“东西”要好

凯尔的更多信息:

[与招聘人员沟通时]将你的沟通总结为 3-5 句话,解释:

-你为什么对这份工作和公司感兴趣

-为什么你的技能和背景使你非常适合。

还有,要兴奋,要有激情。

战胜竞争对手。

来自埃里克·韦伯的建议:

想作为数据科学家有所作为吗?不要只看正在做什么,也要看没有做什么。写下你能为公司做的最重要的 5 件事。然后提出你的想法。

为什么?

1.自我批评是很难的。检查没有做的事情很难,但可以让你走出“让事情保持原样”的舒适区。

2.业务发展迅速。当事情似乎着火时,很难摆脱“把事情做完”的心态。但是远离这种心态提供了一个真正创新的机会。

3.你对数据真的很了解。很少有人知道。理解数据的潜力是一项数据科学工作,并不总是管理层能够做到的事情。

4.写一份清单迫使你随着时间的推移追踪你的想法。你把它写在纸上,它会一直跟着你。相比之下,只是思考一些事情并不总是能让它坚持下来。

5.你必须推销你的想法。简单地写下它们是可以的,但是如果你不把你的想法传达给管理层,它们就不会成功。选择你最喜欢的一个,并开始确定它对公司的影响和投资回报率。

思考、写作和销售。定期督促自己这样做,你会发现各种各样的新想法可以分享。

博沃克的建议:

在过去的十年里,我在 LinkedIn 上申请了 898 份工作。我知道这一点,因为 LinkedIn 一直在跟踪。(感谢 LinkedIn 的提醒!)

这个数字还不包括我在其他平台或直接在雇主网站上申请的职位。这还不包括我收到的大量招聘邮件、电子邮件和电话。

想知道这些活动让我实际上获得了多少份工作吗?

零。一无所获。塞罗。нуль.是真的。

我是 0–898 找 LinkedIn 的工作!我从来没有真正接受过通过求职板或招聘人员找到的工作。

我被问了很多关于如何找工作的问题。我和那些对申请过程感到沮丧的人谈了很多。

我的建议?考虑其他找工作的方法。10 年来,我接的每一份工作都是来自于人脉。最好的工作往往如此。

来自 Vin Vashinta 的建议:

[……]当你处于回答问题的模式时,很难开始问问题。当你想给人留下深刻印象时,很难期待同样的回报。记住,招聘是双向的。

带着更多的期望离开面试,但也要带着同样的期望离开面试。你印象深刻吗?他们做了什么让你觉得受欢迎?你努力工作才取得现在的成就。被那些提升你的事业所吸引,而不是削弱你已经取得的成就。

伟大的公司会努力让每一个应聘者都大吃一惊,即使是那些他们没有聘用的人。亚马逊是一个很好的例子,它的招聘流程给我留下了深刻的印象。我和他们的招聘人员有过多次接触;始终专业,反应迅速,并带来适合我能力的角色。

来自JT·科斯特曼博士的建议:

这个问题很可能与你如何看待自己的简历有关。

问:简历的作用是什么?

答:错了。它不是给你一份工作,甚至不是一次面试,也不是给招聘经理。简历的工作就是让它通过碎纸机。句号。句号。

大多数收到你简历的人根本不知道我们到底是做什么的;他们只是有一个清单要检查。他们在寻找关键词,而不是概念。他们中的大多数人不会为淘金而烦恼。他们会给出不到一分钟的时间(字面上的意思),然后继续处理他们的下一个问题。

实话实说:你的简历简单到连人力资源/招聘部门的一些笨蛋都能看出你是一个近乎完美的人选吗?是关于你的吗?或者你是否清楚地展示了(而不是告诉)你将如何让招聘经理和公司受益——包括确保她每天可以少吃点药?你是在为 HR 把点连起来,给他们画地图吗?

大概不会。

阅读所有建议,并寻找更多建议。他们很棒。有些有点难以理解,但它们是真实的。

那么,我要告诉你什么来改善你作为 DS 的生活和你的简历呢?以下是我的清单:

  1. 要诚实。不要在简历中低估或高估自己。
  2. 联系并活跃在数据科学社区。创建博客,分享您的知识,参与开源项目。
  3. 说清楚。阅读你的简历,问自己:这是我希望看到的样子吗?,确保你把你认为对你和你申请的公司最重要的东西放在了开头。
  4. 不要给每家公司都投相同的简历。这非常接近最后一点,是一项艰苦的工作。但是相信我,你会很快看到结果。分析公司,为那个职位准备一份简历。
  5. 保持简短。他们每天都会收到数千份简历,所以他们只会花 30-60 秒阅读你的简历。所以一定要确保你把他们想看的东西放在那里。不要放与公司无关的东西。
  6. 保持一致。这意味着在任何地方都使用相同的字体和风格。
  7. 说出你的故事。你在简历里看到的那些子弹就是你。所以,用你和他们都会喜欢的方式讲述你的生活故事。如果你更擅长学术技能,一定要把它放在经验部分之前,反之亦然。
  8. 在发送简历之前,征求招聘人员的意见。

更多建议:

[## 创建一份优秀的数据科学简历

我从许多有抱负的数据科学家那里听到一个熟悉的故事:“我已经向 25 家公司发出了简历,我…

will-stanton.com](http://will-stanton.com/creating-a-great-data-science-resume/) [## Creddle

Creddle 帮助你制作漂亮、现代、纸质友好的网络简历。

creddle.io](http://creddle.io) [## GitHub 是你现在的简历

如果你是一名程序员,当你申请工作时发送简历的日子很快就要结束了,如果他们还没有…

anti-pattern.com](https://anti-pattern.com/github-is-your-resume-now)

一般面试技巧

在为面试提供一些建议之前,这里列出了申请数据科学职位的“常见”流程:

  1. 他们会打电话询问你和你的经历。这是第一个手机屏幕。
  2. 如果一切顺利,你会接到第二个电话,这次可能是公司的某个数据科学家打来的。这是第二次电话筛选。他们会问你更多关于你的情况、你的经历以及一些技术问题。这个更有可能看你简历里说的东西是不是真的。
  3. (可选)数据科学任务。他们会给你发一个数据集,问你几个问题,看看你作为数据科学家的能力。这里要说清楚。编写高质量的代码。

来自 Kyle Mckiou 的建议:作为一名数据科学家,要写出高质量的代码:

编写高质量的代码对于数据科学家来说至关重要,尤其是在 2018 年及以后。

随着数据科学实践的成熟,更多的公司将要求数据科学项目的自动化、可再现性、可伸缩性、可移植性和可扩展性。为了实现这一点,你最好准备好编写高质量的代码。

以下是让你开始成为数据科学家的 10 个技巧:

1.积极重构。当你应该重构的时候,不要在脚本末尾添加新代码

2.遵循样式标准,例如 Python 的 PEP-8

3.防御性地编写代码——始终考虑可能出错的地方!

4.避免全局变量并最小化变量的范围

5.把这些脚本转化成程序——创建有组织的系统

6.总是单元和集成测试

7.自动化您的测试

8.创建严格的审核流程

9.遵循严格的审核流程,即使你不愿意!

10.作为评审者提供诚实的、批判性的反馈,当你的代码被评审时,对反馈持开放态度

4.白板编程。这可能是任何过程中最艰难、最令人生畏的部分。在空白空间编程。只有你和一张纸。多练习这个。你不需要在这里完美地写代码,他们想看到你思考并进入解决方案。谈论和描述你的思考过程,不要太过投入。

5.(可选)公司中编码的日期。这是最后一项任务,并不常见,但它邀请他们的公司在那里呆一整天,看看他们在做什么,并解决一些编程任务。

面试建议?以下是我能找到的,它们很棒:

布兰登·罗尔:【https://brohrer.github.io/how_to_interview.html】T2(读这个!!!)

[## 通过分析数百次数据科学访谈,我们了解到

世界各地的顶级数据科学团队正在对一些最有趣的数据集进行令人难以置信的研究…

www.springboard.com](https://www.springboard.com/blog/data-science-interviews-lessons/) [## 30 分钟指南让你在下一次编码面试中摇摆不定

我是如何在编码面试中提高的,以及如何收到大型科技公司的邀请。

medium.freecodecamp.org](https://medium.freecodecamp.org/coding-interviews-for-dummies-5e048933b82b) [## 如何赢得数据科学面试:SQL

数据科学面试可能很难驾驭。事实上,这是一个多学科领域意味着…

towardsdatascience.com](/how-to-ace-data-science-interviews-sql-b71de212e433) [## 准备数据科学家的面试

《福布斯》撰稿人发表的观点仅代表其个人观点。我该如何准备数据科学家面试?原来…

www.forbes.com](https://www.forbes.com/sites/quora/2017/04/05/preparing-for-a-job-interview-as-a-data-scientist/#443263b81ff8) [## 编程面试问题+帮助获得工作机会|面试蛋糕

自由练习编程面试问题。面试蛋糕帮助你准备面试,获得公司的录用通知…

www.interviewcake.com](https://www.interviewcake.com) [## 解决教程代码挑战

加入 200 多万开发人员的行列,在 HackerRank 上解决代码挑战,这是为…

www.hackerrank.com](https://www.hackerrank.com/domains/tutorials/cracking-the-coding-interview)

招聘方

如果你是数据科学岗位的招聘人员,先看看谁是数据科学家。这不是一个简单的问题,但我有一个简短的回答:

数据科学家是负责分析业务问题并给出结构化解决方案的人,首先由这个问题转化为有效完整问题,然后使用编程计算工具开发代码使清理、准备和分析数据然后

数据科学不是什么:

We are much more than this.

数据科学为什么重要?

数据科学和分析之所以存在,是因为数据中隐藏着等待发掘的宝藏。

数据科学家为企业增加价值的方式:

这是阿凡提卡·蒙纳帕的一篇精彩文章的摘录

[## 数据科学为什么重要,它如何推动商业价值?

如果没有将尖端技术转化为可操作见解的专业知识,大数据就什么都不是…

www.simplilearn.com](https://www.simplilearn.com/why-and-how-data-science-matters-to-business-article)

From simplilearn.

1.授权管理层和官员做出更好的决策

2.根据趋势指导行动,这反过来有助于确定目标

3.激励员工采用最佳实践并关注重要问题。

4.发现机会

5.利用可量化的数据驱动的证据进行决策。

6.测试这些决定

7.目标受众的识别和提炼

8.为组织招募合适的人才

你总是需要一个数据科学家吗?

实际上没有。我建议你阅读这些相关的文章,

[## 你的公司需要数据科学家吗?

比拉尔马哈茂德,螺栓。数据科学正在发展。它被称为“21 世纪最性感的工作”,并且…

www.kdnuggets.com](https://www.kdnuggets.com/2016/04/your-company-need-data-scientist.html) [## 炒作之外:你真的需要一个数据科学家吗?-的确是博客

2012 年,《哈佛商业评论》将数据科学家评为“21 世纪最性感的工作”,理由很充分…

blog.indeed.com](http://blog.indeed.com/2016/08/16/do-you-need-a-data-scientist/)

从这些话中,我可以引用一句重要的话:

…适当利用数据科学团队需要一定的数据成熟度和基础架构。数据科学团队需要一些基本的事件量和历史数据来提供对未来有意义的见解。理想情况下,您的业务运行在信号延迟低、信噪比高的模式上。

没有这些元素,你将拥有一辆没有燃料的跑车。问问自己,像数据分析师和商业智能这样的传统角色是否足够。

记住这句话:一个糟糕的数据科学家比根本没有数据科学家更糟糕。

有很多人想要一份数据科学方面的工作,他们中的大多数都是非常聪明的人,希望在这一领域提供帮助并有所作为,但在雇佣之前要小心。我建议您在最好的公司中搜索数据科学描述,了解他们的流程,并向他们学习。

同样,他们不需要博士学位就能成为最好的数据科学家。他们需要处理数据和使用数据科学解决业务问题的经验。在申请博士学位之前,询问知识,他们参与过的项目,他们建立或合作的开源项目,他们创建的 Kaggle 内核,相关的工作经验,他们如何解决一个特定的问题。

数据科学不仅仅是一个 IT 领域,是 IT+业务,你需要确保你雇佣的数据科学家能够适应公司,了解业务,与利益相关者开会,并以创造性和简单的方式展示他们的发现。

阅读这篇博文了解更多信息:

[## 招募数据科学家的实地指南

每天,人类共同创造了相当于 530,000,000 亿首数字歌曲或 250,000 个图书馆…

blog.entelo.com](https://blog.entelo.com/a-field-guide-to-recruiting-data-scientists)

并由此得出一些招募数据科学家的重要技巧:

  1. 招聘人员与招聘经理紧密合作,构建出准确的职位描述。
  2. 消除细微差别,以区分哪些类型的数据科学家将是最适合企业需求的。专注于你正在寻找的数据科学家类型的技能和经验。
  3. 想长远。了解组织计划如何在产品路线图中利用这一角色。
  4. 为可用的候选人才库设定现实的期望。角色比候选人多,要相应招聘。
  5. 建立一份理想候选人名单,并与招聘经理一起校准,以衡量是否符合人才市场的现实。

Vin Vashinta 在招聘过程中的一句名言:

有抱负的数据科学家想从没有雇佣他们的公司那里得到一样东西:一个解释。在许多情况下,他们唯一的反应是沉默。如果公司不告诉他们,一个有抱负的数据科学家怎么知道该做什么?

有抱负的数据科学家不是灵媒,但他们很努力&愿意学习。如果公司开始告诉他们酒吧在哪里,他们就会接受挑战。

剥开大多数公司的招聘流程&你会发现他们无法客观地回答这个问题:“你为什么不面试或聘用这个人?”我告诉客户,通过像审视他们雇佣的人一样仔细地审视他们拒绝的候选人,他们能学到多少东西。

这个问题的答案对应聘者和雇主都有价值。公司有机会改善他们的招聘流程。候选人有机会为下一次申请公司做更好的准备。

除了价值,对于花时间申请的人来说,这是一件体面的事情。招聘就是要建立联系。沉默表明公司不够关心如何正确对待员工。这是候选人需要记住的。

希望这篇帖子能帮助到数据科学界的每一个人。让我们携起手来,互相帮助,把世界变得更加美好。记住要开心,生活中除了工作还有很多,我喜欢我的工作,但是要花时间和你的家人和朋友在一起,开心点,善待他人。

如需了解更多信息或有任何疑问,请添加我,我们将在此聊天:

[## Favio Vázquez -数据科学家/工具经理 MX - BBVA 数据&分析| LinkedIn

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

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

Udacity 无人驾驶汽车 Nanodegree —术语 1

原文:https://towardsdatascience.com/the-udacity-self-driving-car-nanodegree-term-1-384b75dcb987?source=collection_archive---------1-----------------------

我做到了!我完成了 Udacity 自动驾驶汽车 nano degree(www . uda city . com/drive)的第一学期。这是我对第一学期的回顾和路线图。

After finishing the projects of Term 1, I received this “certificate”

三个术语

首先要注意的是,这门课分为三个学期。每个学期花费 800 美元,为期三个月。

  • 学期 1:计算机视觉和深度学习
  • 术语 2:传感器融合、定位和控制
  • 学期 3:路径规划、浓度和系统

我完成了第一学期。第二学期这几天才开始(2017 年 3 月)。而 term 3 还不可用。

www.udacity.com/drive

第一学期是关于计算机视觉和深度神经网络。自动驾驶汽车必须看到环境中的关键元素(车道、其他车辆)。汽车必须根据这些信息行驶。

每学期 800 美元?

这个课程很贵。在我看来,这是一件好事,因为课程成为一门好课程是有成本的(课程视频、IT 基础设施、软件、讲师、评审员)。

这门课程并不容易。在注册之前,请证明您拥有该技能。 Udacity 第一学期课程

事后看来,鉴于我所能学到的东西,我会很乐意为支付双倍的费用

课程和练习

这些课程基于自动驾驶汽车领域的重要主题:车道线识别、深度学习、计算机视觉。毫无疑问,这些地区的选择是基于巴斯蒂安·特龙(Udacity 联合创始人、谷歌自动驾驶汽车和 Stanley, Darpa 大挑战的获胜者)以及梅赛德斯-奔驰、英伟达、优步等合作伙伴的奇妙经历。

它有一个非常实际的重点:理论足以理解核心概念,然后,实际应用。这就是为什么它需要很多背景知识的原因。这不是一门关于基本 python 或基本神经网络的课程,而是如何在实际案例中应用它。

我们可以随意访问在线课程和练习、论坛(在乌达城、斯莱克和脸书),一个通过聊天来帮助我们的“伙伴”。

工作时间

我花了大约 20 小时/周或更多的时间来做这个课程。在课程开始时,Udacity 估计每周 10 小时。但是这个估计是非常错误的,不仅对我,而且对大多数在论坛上发表评论的人。

有一点要说的是,第一批也是豚鼠。不仅我们在学习,而且 Udacity 也在校准课程和班级。

例如,项目 3 只有很少的说明。最好的教学指南是由第一批学生 Paul Heraty 编写的,他在这门课程最困难的项目上花费了大量的时间。最好的建议也来自论坛上的学生。

因为这不是一个真实的课堂,我们使用了论坛,用媒体写的漂亮的报告(像https://chatbotslife.com/@vivek.yadavhttps://medium.com/@jeremyeshannon)和 Github。

不好的一面是沟通不如面对面。好的一面是,我们和世界上一些最聪明的人有联系。

这些项目

归根结底,重要的是项目。共有 5 个项目。

  • 寻找车道线
  • 交通标志分类
  • 行为克隆
  • 高级车道线
  • 车辆检测

有趣的是,今天的焦点在电子计算机科学。没有一节力学课。这是有意义的,因为机制已经掌握了。我们想取代方向盘后面的人类!

项目 1 —寻找车道线:

在本课程的第一周,有一个小挑战:使用基本的计算机视觉在视频中找到车道线。

:容易

技能 : Python、计算机视觉(opencv)、numpy、Jupyter 笔记本

这是第一个项目的视频。我没有在媒体上写报告。

我在巴西圣保罗制作的一个视频中应用了同样的方法。

项目 2——交通标志分类:

这里的挑战是训练一个深度神经网络(LeNet 架构)来识别和分类交通标志。

难度:中等难度

技能 : Python、张量流、基础微积分、numpy、Jupyter 笔记本

详细报道此处

项目 3:行为克隆

这里的目标是在模拟器中教会自动驾驶汽车预测转向角度和速度。

:异常难,非常非常难。

技能 : Python,张量流,Keras,OpenCV,基础微积分,numpy,GPU,运气。

正如我之前所说,Udacity 正在基于这些第一批人改进课程——增加课程,纠正问题。也许在下一批中,这个项目会更容易。我花了 56 周的时间在晚上和周末做这个。在尝试之前,值得读一读我的报告,其中有许多大大小小的错误。

详细报道此处

当你花了无数个夜晚来修理这辆车,而你却不知道哪里出了问题,却发现它偏离了道路,这是非常令人沮丧的:

The car fell in water: a self-driving submarine?

但是,当我最终能够通过这个挑战时,我感到非常满意。

Finally, the car drives!

项目 4:高级车道线

在项目 1 中,我们仅使用直线来投影车道线。在这个项目中,我们校正镜头的失真,做一个鸟瞰图,并使用二阶多项式。

:中硬。

技能 : Python,OpenCV,numpy

在 P3 之后,我学到了很多关于 python 和 numpy 的知识,其他项目也变得简单了。

详细报道这里

项目 5——车辆检测和跟踪

这个挑战是使用计算机视觉和支持向量分类器来检测视频中的车辆。一个问题是视频的误报。

:中硬。

技能 : Python、OpenCV、Sci-kit learn、numpy

详细报道在此

操作系统

我在 Linux Ubuntu 16.04 运行了所有的东西。我以前没有用过 Linux,但我认为 TensorFlow 和其他东西在 Linux 中运行得更好。现在我是 Ubuntu 的粉丝。今天我只在工作中运行 Windows。

我错过了什么

nanodegree,如描述所说,是关于自动驾驶汽车的工程。这不是关于历史、管理或自动驾驶汽车的一般概述。

然后,它没有显示谁是自动驾驶汽车公司,他们正在使用哪种技术,等等。我相信这是不可能的,因为这些技术大部分都是工业机密。

承运人服务

Udacity 为合作伙伴公司提供一些建议和链接。

我在这里的重点只是学习,尽我所能去学习。我不是在找新工作。然后我连这些服务都没关注,所以写不出来。

结论

在每一个热门领域,开始都是一片繁荣:无人驾驶汽车将主宰世界,没有工作。一段时间后,热情达到顶峰后,幻灭:它不会取代每一份工作,它有很多问题,有人投资数十亿美元却没有成功,等等。

整合:它将有一些非常非常好的利基应用,新类型的工作将被创造,新的想法将改变我们现在的每一个概念。

其他模式。在一个刚起步的行业,十几家公司试图赢得这场竞赛。不同的想法,技术,方法。一两个会赢。

100 年前,电力公司也是如此。只有通用电气和威斯汀豪斯幸存下来,他们赢得了比赛。后来,电气公司开始在利基市场行动,但最大的是这两个。

在个人电脑时代的开始,有数百家公司和无数的技术。我们只知道赢家:苹果、微软、IBM。

谁会赢得自动驾驶汽车比赛?没人知道。让我们看看接下来的章节。

我要感谢 Udacity 提供了这么棒的课程。我做了我甚至无法想象的事情。

我学到了很多,但我觉得还不够。一句古老的中国谚语说:

“伟大的旅程始于第一步”。

还有那么多知识要掌握。让我们挑战术语 2

第一学期项目:

其他著作:https://medium.com/@arnaldogunzi

主要博客:https://ideiasesquecidas.com/

链接:

Udacity 第一学期课程

Udacity 第二学期课程

来自 Oliver Cameron 的 transmission—脸书集团

Udacity 公开挑战赛:这些不是课程,而是任何人都可以参加的挑战赛

项目问答播放列表,来自 Udacity 讲师

英国迫切需要一个放射学人工智能孵化器

原文:https://towardsdatascience.com/the-uk-desperately-needs-a-radiology-ai-incubator-205553dbac43?source=collection_archive---------3-----------------------

说 NHS 的放射科淹没在工作量中是一种保守的说法。2016 年 5 月,皇家放射科医师学会强调了一项全国劳动力调查的结果,包括每月有 230,000 项研究积压超过 31 天,减少这些积压的支出增加了 57%。苏格兰的情况也是如此,苏格兰每年花费在外包上的费用超过 525 万英镑(T2)。似乎没有人知道这场危机的答案,而且鉴于目前 NHS 资金不足的状况,短期内也不太可能出现答案。

然而,在池塘的另一边,有一股巨大的力量在推动解决放射学的问题——而英国正被抛在后面。

人工智能(AI)被吹捧为放射学等分析医学科学的下一件大事,不仅有可能降低报告成本,还可能减轻不堪重负的放射科医生的负担,同时为标准报告添加定量数据。

这种驱动力大部分来自美国,主要是由于私人支付系统的资本基础设施。在过去的几年里,美国国内进行了大规模的资本投资和机构合作来推进这一愿景。一些例子:

比这些个人合作更有希望的是美国放射学家学院宣布成立一个新的数据科学研究所。DSI 计划与政府、工业和其他部门一起开发和实施人工智能。这是 ACR 临床信息学推动标准化 DICOM、使用适当性和工作流程增强项目的一个受欢迎的分支,应该有助于研究人员和行业在标准的监管和道德框架中验证人工智能。

带头的不仅仅是美国。事实证明,以色列是放射人工智能公司的绝佳孵化地。例如,斑马医疗公司与弗吉尼亚大学、卡尔加里大学、Carestream 和戴尔合作,现在已经扩展到澳洲。总部位于特拉维夫的 AIDoc 最近为其公司筹集了 700 万美元,而 MedyMatch 筹集了 200 万美元。

那么,为什么我们在英国没有看到同样的投资呢?

在英国,我们缺乏的是吸引这些知名合作伙伴的能力,以及随之而来的资金和资源。NHS 被认为太难嵌入、太复杂、太慢,这或许是相当正确的。为了让人工智能在放射学领域取得成果,它需要庞大的匿名、带标签的成像数据数据库,并与电子健康记录相链接,研究人员和科技初创企业或衍生公司可以在这些数据库上训练和验证算法。然而,NHS 没有资金支持这种工作。(说实话,它甚至没有资金来支持它当前的工作负载!).因此,这种大数据仓库根本不存在于我们的海岸。我觉得这很令人震惊,尤其是因为这个想法并不新鲜——例如,rad bank 早在 2008 年就在斯坦福大学设计和建造,而 RSNA已经宣布使用联邦基金全力支持量化成像数据仓库 T11。

RCR 已经在考虑人工智能方面迈出了一些尝试性的步伐,在 2016 年举办了一个论坛,有消息称,《临床放射学杂志》已经委托撰写了一篇关于放射学人工智能的思考文章,但总体进展缓慢。在英国学术界,有几十名医学成像研究人员在小数据集上构建算法,但他们缺乏在数百万张图像上测试这些算法的资源,更不用说将他们的产品推向市场了。这个瓶颈正在扼杀英国的创新。

我们需要的是大型技术公司、RCR 和 NHS 管理机构的联合,以推动放射学人工智能领域的全面合作愿景。我们应该利用 NHS 作为一个国家系统,通过汇集成像数据,建立一个国有化的成像仓库和技术孵化器(我想把这个大脑称为英国放射学人工智能网络)。这将在人工智能领域创建一个国家放射学研究所,能够吸引行业合作伙伴,为研究人员和设备提供资金。然后,我们将为放射科医生设立奖学金,建立公司和分支机构,并与 PACS 和硬件提供商合作,在技术出现时实施这些技术。相反,我们英国人却在苦苦挣扎,分散的、没有联系的研究人员试图在孤岛中制造产品,看着世界其他地方在我们前面跑了。

想象一个孵化器环境,可以访问数十亿 NHS 成像记录,研究人员可以在其中建立、启动和发展技术初创企业和风险投资。想象一下,如果我们可以在庞大的国家数据集上构建算法,而不是仅仅在一个本地数据集上训练算法,会取得什么样的成就。想象一下,如果资金和资源到位,允许实验、验证、增长和扩展。想象一下,如果人工智能的监管审批流程被固定在孵化环境中,那么新产品就可以直接推向市场。

无论你是否相信人工智能的承诺,全球范围内的投资规模和发展速度无疑表明许多其他人相信。如果英国在采用真正推动创新的集中化模式方面动作太慢,我们最终将只是一个客户;从国外购买软件是建立在我们无法提供的孵化环境的确切类型上。

如果你和我一样对人工智能在放射学中的未来感到兴奋,并想讨论这些想法,请联系我们。我在推特@drhughharvey

如果你喜欢这篇文章,点击推荐并分享它会很有帮助。

关于作者:

哈维博士是一名委员会认证的放射科医生和临床学者,在英国国民医疗服务体系和欧洲领先的癌症研究机构 ICR 接受过培训,并两次获得年度科学作家奖。他曾在 Babylon Health 工作,领导监管事务团队,在人工智能支持的分诊服务中获得了世界第一的 CE 标记,现在是顾问放射科医生,皇家放射学家学会信息学委员会成员,以及人工智能初创公司的顾问,包括 Kheiron Medical。

Tableau 图表的终极备忘单

原文:https://towardsdatascience.com/the-ultimate-cheat-sheet-on-tableau-charts-642bca94dde5?source=collection_archive---------2-----------------------

Tableau Desktop 是一款非常棒的数据分析和数据可视化工具。它允许您立即看到您的数据(通过几次拖放)。“演示”功能非常有用,尤其是对于那些刚刚开始使用 Tableau 的人。拖动或双击分析中所需的维度和度量后,您可以使用演示功能查看可用的图表,只需单击图表类型即可创建这些图表。

你会注意到的一件事是,一些图表会被突出显示,而一些会显得更加暗淡。突出显示的图表可供您使用。这是由度量、维度、箱等的数量决定的。你把它放在你的视野里。每个图表都有最小指定数量的维度、度量、箱或构建该图表所需的其他项目。当您将鼠标悬停在每种视图类型上时,底部的描述会显示最低要求。

图表类型

Tableau 的“演示”功能中有 24 个可用图表。让我们讨论一下何时应该使用这些图表,以及在度量和维度方面的最低要求是什么——继续向下滚动:)

文本表格(Crosstab)

  • 何时使用:类似于 Excel 表格,文本表格允许你查看行和列中的数据。这不是一个很好的视觉图表,但是,有时它有助于看到你在拉什么数据。您可以通过使用颜色来修饰文本表格。如果您希望在没有任何额外视觉提示的情况下以行和列的形式查看数据,请使用此选项。
  • 最低要求:1 个或多个维度,1 个或多个度量

热图

  • 何时使用:类似于文本表格,但使用大小和颜色作为描述数据的视觉提示。让我们可以轻松地讲述一个关于数据的故事。使用颜色和大小来比较类别是一种有效的方法。
  • 最低要求:1 或多个维度,12 个度量

高亮显示表

  • 何时使用:用颜色突出数据讲故事。也类似于 Excel 表格,但单元格是彩色的(类似于 Excel 中的条件格式)。可用于跨行和列比较值。如果需要,您可以更改配色方案(不同的颜色)并反转连续的颜色。
  • 最低要求:1 个或更多维度,1 个度量

符号图

  • 何时使用:使用酷炫的地图视图讲述包含地理数据的故事。可以突出你在哪里有最多的销售,或者确定一个位置的客户集中程度。使用尺寸和颜色使视觉流行。此外,您可以将标记更改为不同的形状,甚至使用自定义形状。您还可以使用地图图层来创建其他视觉效果(移除海岸线等)。需要确保您有地理维度(如州)。您可以做的另一件事是使用地图作为其他类型的图表、图形和表格的过滤器。将地图与其他相关数据结合起来,然后将其用作过滤器,以深入分析您的数据。
  • 最低要求:1 个地理维度,0 个或更多维度,0 到 2 个度量

填充地图

  • 何时使用:与上面讨论的符号地图类似,但是,为了讲述故事,您使用颜色来填充地理区域,而不是符号。你可以用颜色透明度和边框来增强视觉效果。同样,地理维度是必需的。当你在处理地理数据时,一个填充的地图是一个很好的视觉效果。
  • 最低要求:1 个地理维度,0 个或更多维度,0 到 2 个度量

饼状图

  • 什么时候用:不要用饼状图!开个玩笑,如果你真的需要,你可以使用它们,但是要注意,它们在描述数据时并不总是非常准确。例如,如果在上面的饼图中没有实际的数据点,我们就无法判断西部和中部哪个地区的销售额更高;因为馅饼的大小非常相似。它们最适合显示比例或百分比关系。如果使用得当,饼图可以快速显示度量中其他数据点的相对值。Tableau 建议用户将饼图扇区限制为六个。如果你有六个以上的比例需要沟通,可以考虑条形图。当楔形区的数量过多时,很难有意义地解释饼图。
  • 最低要求:1 个或多个维度,12 个度量

水平条形图

  • 何时使用:这可能是最常用的图表,并且有充分的理由。它让数据变得很容易理解,并讲述了一个好故事。我们可以很容易地看到哪些类别比其他类别有更高的数字。在 Tableau 中,您可以使用颜色、标签和排序来讲述一个故事。一个水平条形图是一种简单而有效的交流特定类型数据的方式,这也是它们如此受欢迎的原因。
  • 最低要求:0 或更多维,1 或更多度量

堆积条形图

  • 何时使用:类似于上面讨论的水平条形图,您可以使用堆积条形图来显示类别中的数据,这些类别也分为子类别。在上面的示例中,我们有按产品类型划分的销售总额,并进一步划分为区域。它能让我们看到比常规条形图更多的细节。
  • 最低要求:1 个或多个维度,1 个或多个度量

并排条形图

  • 何时使用:类似于条形图,您可以使用此图表显示并排的数据比较。在本例中,我们将查看产品的地区和类型(无咖啡因与普通)。颜色的使用使我们更容易比较每个地区不同产品类型的销售总额。并排条形图类似于堆叠条形图,只是我们取消了条形图的堆叠,将条形图并排放置在水平轴上。
  • 最低要求:1 个或多个维度,1 个或多个度量

树形图

  • 何时使用:您可以使用树形图来显示分层(树形结构)数据和部分到整体的关系。Treemapping 非常适合在一个可视化界面中同时显示大量项目。该视图非常类似于热图,但是框是按照层次结构中接近的项目分组的。
  • 最低要求:1 个或多个维度,1 个或 2 个度量

圆形视图

  • 何时使用:圆视图可用于对比分析。您可以通过将形状更改为三角形、圆形、正方形等来自定义您的视图。您还可以更改所选标记的颜色和大小。它显示了所描述的类别中的不同值。
  • 最低要求:1 个或多个维度,1 个或多个度量

并排圆形视图

  • 何时使用:类似于圆形视图。在这里,我们可以在特定类别中使用圆形(或其他形状)来比较利润和销售额等指标。
  • 最低要求:1 个或多个维度、1 个或多个度量(至少需要 3 个字段)

折线图(连续)

  • 何时使用:要使用折线图,必须有日期(年、季度、月、日等)。当你试图讲述一段时间内事情是如何变化的时候,这是非常有用的。您可以在视图中使用多行来显示连续的数据流。
  • 最低要求:1 个日期、0 个或多个维度、1 个或多个度量

折线图(离散)

  • 何时使用:类似于连续折线图,您必须有一个日期字段才能使用此图表。这两者的区别在于你所显示的数据类型,是离散的还是连续的。正如您在两个示例图表图片中所看到的,连续图在所选的时间段内平滑流动。与每个季度(3 个月)后中断的离散图表相反。这允许您对图形进行切片和切块,以便进一步分析。
  • 最低要求:1 个日期、0 个或多个维度、1 个或多个度量

双线图

  • 何时使用:在一段时间内比较两个度量时使用。此视图产生不同步的轴,但是您可以右键单击轴并选择同步轴(如果它对数据有意义)。双线图(也称为双轴图)是折线图的扩展,但有一个明显的例外:它允许用两个不同的轴范围来表示多个度量。这是通过给垂直轴的右侧和左侧分配不同的度量来实现的。这样,你就可以比较两种不同的度量。
  • 最低要求:1 个日期、0 个或更多维、2 个度量

面积图(连续)

  • 何时使用:面积图是折线图和堆积条形图的组合。它显示总数的相对比例或百分比关系。如果使用多个维度,图表会将体积堆叠在线条下方,图表会显示字段的总数以及它们彼此之间的相对大小。与折线图类似,您必须有一个数据字段才能创建一个随时间变化的视图。此图表用于连续日期。
  • 最低要求:1 个日期、0 个或多个维度、1 个或多个度量

面积图(离散)

  • 何时使用:另一个面积图,显示与连续面积图相同的数据,但这个处理离散值。它允许您了解数据切片的情况(按您选择的时间段,例如季度、年等)。日期字段在这里是一个明确的要求。
  • 最低要求:1 个日期、0 个或多个维度、1 个或多个度量

双重组合

  • 何时使用:允许您创建一个视图,在一个图表中显示两个不同的度量(例如利润和销售额)。如果对数据集有意义,可以同步轴。
  • 最低要求:1 个日期、0 个或更多维、2 个度量

散点图

  • 何时使用:散点图对于比较两种不同的度量和识别模式非常有用。与圆形视图和并排圆形图一样,散点图也使用符号来可视化数据(您可以将符号自定义为各种形状)。在散点图中,图表中的两个轴都是度量而不是维度(一个度量在列架上,另一个度量在行架上)。您可以在散点图中添加趋势线;这将清楚地定义您的数据之间的相关性。此外,考虑添加一些有用的过滤器,允许用户与数据交互并识别数据中的各种趋势/模式。
  • 最低要求:0 或更多维,24 个度量

直方图

  • 何时使用:直方图是数据分布的直观表示。Tableau 将您的测量划分为离散的间隔或箱。当您想要分析数据是如何分布的时,这非常有用。
  • 最低要求:1 个度量(bin 字段)

盒须图

  • 何时使用:这是 Tableau 提供的一个更复杂的图表。它还处理数据的分布。如果你观察视觉效果,它看起来是一个两端都有胡须伸出的盒子。方框表示第一个和第三个四分位数之间的值,触须表示最低值到第一个四分位数和第四个四分位数到最高值之间的距离。首先确定数据集的中位数。这是盒子从灰色变成浅灰色的地方。然后,确定上下四分位数。这些只是上半部分数据的中位数和下半部分数据的中位数。这就形成了“盒子”数据集的最大值是上限,而数据集的最小值是下限。这就形成了情节的“脉络”。
  • 最低要求:0 或更多维,1 或更多度量

甘特图

  • 何时使用:这是项目管理中常用的,用来查看各种任务是否按计划进行。甘特图是一个很好的可视化工具,可以用来描述与时间相关的信息,无论是用于计划还是其他需要。
  • 最低要求:1 个日期、1 个或多个维度、0–2 个度量值

子弹图

  • 何时使用:使用此图表比较目标数据和实际数据。例如,查看实际销货成本(COGS)与预算 COGS。它显示你在哪里达到了目标,错过了目标,或者超过了目标。与目标销售额相比,这对于分析实际销售额非常有用。你可以在这张图表上玩玩大小和颜色来帮助讲述一个故事。
  • 最低要求:0 或更多维,2 个度量

包装好的气泡

  • 何时使用:这是一个有趣的视觉创造和观看!它说明了与轴无关的关系值。气泡被尽可能紧密地包装起来,以有效地利用空间。你可以改变泡泡的大小。正如我在地图视图中提到的,我还建议使用这个气泡图视图作为过滤器来深入查看其他数据。
  • 最低要求:1 个或多个维度,1 个或 2 个度量

资源链接:

http://www . tableau . com/sites/default/files/media/which _ chart _ V6 _ final _ 0 . pdf

https://www . interworks . com/blog/ccapitula/2014/08/04/tableau-essentials-chart-types-text-table

提高模型性能的终极指南

原文:https://towardsdatascience.com/the-ultimate-guide-to-better-model-performance-c6bcc832aeb7?source=collection_archive---------7-----------------------

Picture by RawPixel via Pixabay — CC0

你有没有遇到过这样的情况:你需要一个更好的 ML 模型,但是它不起作用?这是提高性能的终极指南。

1.避免验证

获得更好性能的最简单方法可能是避免所有这些疯狂的验证。引用我一个好朋友的话:

验证只会让结果变得更糟

因此,让我们将我们的模型应用于它被训练的数据,并报告性能。如果真的有人声称这是不正确的,那就开始谈正规化。当然,你的辍学,L1 和 L2 的正规化等等。处理过度拟合!

专家提示:如果你不能这样做,使用 K-最近邻分类器并减少 K!

2.使用分割验证并努力尝试

比方说,有人强迫你验证你的模型。在这种情况下,第一个方法应该是分割验证。如果有人认为 k-fold 可能是一个更好的主意:只要把计算时间俱乐部从你的衣柜里拿出来!谁会为了又一次验证而牺牲 10 倍的 CPU 能力呢?

Split Validation set up in RapidMiner. You can get very good results if you optimize the seed of your split.

为了得到好的结果,你应该首先选择一个合理的测试规模。我建议 95%用于培训,5%用于测试。这增加了你获得更好结果的可能性。

诀窍是优化分裂的随机种子。相信我,足够努力,你会得到更好的结果!

一些人可能会认为随机种子往往会给出更好的结果是不合理的:他们显然不理解简单的统计学。如果你想避免这些讨厌的讨论,就优化那些完全无用的选项。这也有同样的效果。

3.只验证你分析的一部分

如果这个技巧没有足够的帮助,显然是时候进行更复杂的分析了。数据科学家的最佳工具之一是特征生成和特征选择。所以让我们开始创造一些新的功能吧!初学者的错误在于将特征生成和选择视为建模步骤的一部分。谁会这样想呢?即使是一个 excel-jerk 也可以自己生成新功能。因此,您现在应该不顾一切地停止将特性选择和生成放到您的验证中。

Another quick way for better performance. Just select the “right features” before your validation starts! Picture of a process in RapidMiner

当然,你现在应该生成许多新的特性:越多越好!之后,你可以用复杂的特征选择技术来选择“正确的”。

专业提示:将这两件事完全分成两个独立的脚本总是一个好主意。不要让任何人产生这样的想法,即特征选择是模型拟合过程的一部分!

4.手动特征生成

一个好的实践当然不仅仅是使用通用特性,而是使用领域知识来生成正确的特性。一个非常成功的方法是整合领域知识。实现这一点的一个好方法是查看测试集中错误分类的例子。你当然可以建立定制的特征,让你的算法更好地分类这些东西,对不对?

专业提示:如果你碰巧不知道你的数据是关于什么的——谁还需要商业理解呢?—让企业参与进来!有大量的文章围绕如何让这些愚蠢的白痴!只需在他们的 BI 解决方案中公开您的测试集的结果!让他们向你推荐新的规则,说明为什么事情是错的,并把这些纳入其中。这样你可以一石二鸟:更好的模型和接受!

5.保持时调整超参数

可能会发生这样的情况,一些讨厌的评论家强迫你使用一个单独的维持集。去他的!他对正规化的理解肯定比训练错误的家伙还要少。

拒绝可能非常棘手,会妨碍你获得良好的业绩。一个显而易见的解决方案是再次选择参数。读数:适用于所有数据集的参数。谁会报告不工作的东西呢?

这种方法在学术论文中非常有效,因为您可以访问完整的数据集。不要让自己在这里止步于道德暗示!每个人都在四处移动一些棋子。

专业提示:你当然可以将这种方法与第四种方法结合起来,为坚持创造正确的特征。

6.改变问题

这可能是最先进的技术。如果上面的招数都不行,你还可以重新解读问题。这是计算机科学家的老把戏,专注于你能解决的事情。

稍微调整一下天平就能提高你的准确度。对不确定的预测稍加忽略可以提高你的精确度。你想预测客户流失?只在下周做,而不是下个季度。你的 AUC 当然会提高!

这方面的专家不仅改变了这个问题,还改变了如何定义成功的方式。在开始一个项目之前,不要把自己放在一个位置上,定义成功。只需将您的绩效评估与可能的情况保持一致。

专业提示:避免使用可以理解的绩效衡量标准。这会让用户对你评头论足!永远保持你的自信。好的衡量标准当然是 AUC、AUPRC、LogLoss 和 RMSE。

结论

不遵循本指南是成为更好的数据科学家的第一步。

人工智能入门终极指南

原文:https://towardsdatascience.com/the-ultimate-guide-to-starting-ai-d506255d7ea?source=collection_archive---------3-----------------------

如何开始您的项目的逐步概述

许多团队试图通过在计算出期望的输出和目标之前钻研算法和数据来启动一个应用人工智能项目。不幸的是,这就像在纽约市的公寓里养了几年小狗,然后惊讶于它不能为你放羊。

你不能指望在没有你首先做出一些努力的情况下,让巫师在你的业务上洒下机器学习魔法,从而获得任何有用的东西。

相反,第一步是给的主人——也就是你!—形成一个清晰的愿景,你想从你的狗(或 ML/AI 系统)那里得到什么,以及你如何知道你已经成功地训练了它。

我的上一篇文章讨论了 为什么 ,现在是时候深入如何ML/AI 做这第一步,及其所有血淋淋的小步骤。

这份参考指南篇幅很长,所以在两分钟的速成课程中,请随意使用大字体和大标题,或者直接阅读概要清单版本。这是目录:

  • 搞清楚谁是负责人
  • 确定用例
  • 做一些现实检查
  • 明智地制定绩效指标
  • 设定测试标准,克服人为偏见

角色阵容:决策者、伦理学家、ML/AI 工程师、分析师、定性专家、经济学家、心理学家、可靠性工程师、AI 研究员、领域专家、UX 专家、统计学家、AI 控制理论家。

Make sure the right person is tasked with the first step in machine learning and AI. More info here and here.

弄清楚谁是负责人

我们将要处理的任务是项目负责人的责任。那是谁说了算。如果博士研究员被选中担任这个角色,应该是因为那个人的决策能力和对你的业务的深刻理解。如果你打算让他们扮演这个角色,然后事后再去猜测他们,那你就选错了人。我们称之为决策者的实体(可能是一个人或一个委员会)应该拥有最终发言权。明智地选出你仁慈的独裁者。

如果决策者是你打算事后批评的人,那你就做错了。

如果决策者不精通决策的艺术和科学,有一个解决办法:让他们与定性专家配对。但如果负责人不了解你的业务,你还不如现在就把这些现金冲走。

识别用例

关注输出

关键是 ML/AI 不是魔法,也不能解决所有问题。这是一个的东西标签,它取决于你找出你需要什么标签。

事物标签不仅仅意味着分类——“这是不是一只猫的照片?”—这是不够大的想法。我说的标签是指输出。可能是一个类别、一个数字、一个句子、一个波形、一个组 ID 、一个单一动作、一个操纵杆移动、一系列动作、关于某个事物是否异常的 Y/N…如此多的可能性

在你确定你需要他们之前,不要雇佣那个博士导师。首先关注输出。

如果你读了我最近写的关于算法如何工作的文章,你会注意到,这篇文章理所当然地认为,给几杯茶贴上卡西喜欢或不喜欢的标签是值得的。谁同意用那个愚蠢的用例浪费大家的时间?!它对业务有何帮助?这个分类器应该存在吗?假设它能工作,它值得建造吗?

这就是你现在正在做的工作,我的朋友。这是第一份工作。

仅仅因为你能做某事,并不意味着它是对任何人的时间的很好的利用。

想象一下你的 ML/AI 系统正在运行,问问你自己,你是否乐意投入公司的资源来制造它。没有吗?继续头脑风暴。最好在几个博士在你的应用上浪费生命之前发现没人需要你的应用。

这项任务可能会很难,因为有太多的选择,所以坐在舒适的沙发上冥想吧。如果你需要一些头脑风暴的帮助,试试我的醉酒岛练习。

A video with my trick for brainstorming AI use cases.

现在不是输入的时候

你们中的一些决策者对数据非常熟悉。你可以同时谈论输入和输出……你会明白其中的区别。我的建议可能会让你大吃一惊:抵制诱惑!先别说投入。说真的。我知道你可以,但是不要。这里有许多原因中的两个。

原因一:错过机会

这是显而易见的。你的一些利益相关者没有你流利,他们很容易混淆。在早期,你可能向他们推销你的想法,希望为你的项目获得资源,你真的不想让他们误解为什么你的系统值得拥有。不要混淆他们!保持专注。告诉他们它是做什么的,而不是怎么做的。

问问自己,“这是目的还是手段?”如果是手段的话,暂时不谈。

许多流利的人的问题是,你认为每个人都和你一样流利。一些科技领域的绝顶聪明的人不具备这种技能让我感到惊讶,所以我现在知道不要想当然。

对某些人来说,数据就是数据。都一样。(亲爱的读者,如果你不确定自己在这方面是否流利,真的要强迫自己放慢速度。不断问自己“这是目的还是手段?”确保你现在把注意力集中在末端。)利益相关者可能无法跟上你的论点,这意味着你的推销会失败,你会错过用人工智能让世界变得更美好的机会。

Some folks have trouble figuring out which variable is the input and which one is the output… it all looks like one big confusing lump to them and they need your focus to appreciate why the outputs are worth having.

原因二:默契

作为一名在工程师身边工作了很长时间的工程师,我注意到我们这类人喜欢抓住细节。去他妈的大局观吧,从每一个细节中剔除填料是如此有趣,尤其是当有人在某件事上犯了错误的时候!我们喜欢技术上的正确性。

I, for one, have to be on my guard against getting caught up in the technical correctness of minutiae. Joke: Technically correct is the best kind of correct. Tautologically correct is a kind of correct.

这是一出悲喜剧:当你花了 6 个小时和你的朋友争论变量 x (原始的,标准化的,还是规范化的?)是一个很好的输入,具有预测输出 y 的合适日志,你已经,咳咳,规范化了 y 值得追求的想法。你首先停止质疑工作的意义,并最终构建了不需要构建的东西。

这是关于拥挤的人群

让我们想象一下,自动给贴 Y/N 标签是你想要的用例。确保你不是在考虑只给一两个杯子贴标签。 ML/AI 对于自动化许多重复的决策是有意义的。这不是一次性的。

ML/AI 不是一次性的,所以确保你的企业需要大量的标签。

你在想象给至少几千个贴上标签?当这东西是活的,你确定你不能只是查找答案而不是预测它们?很好。我们继续。

拿起笔,写下你会接受的标签(本练习中的二进制 Y/N 很容易写下来,但如果你需要创意,你可以选择让它们更有异国情调)。写下你如何知道其中一个答案是否正确。写下错误的样子。期待机器学习中的错误!如果你期待完美无缺,最好在失望击垮你的灵魂之前安静地后退。

你可能还没有准备好机器学习

还在苦苦寻找用例?考虑暂停 ML/AI ,支持分析一段时间。分析的目标是为决策者产生灵感。一旦你有了灵感,你可以回到 ML/AI 重新开始。分析(又名数据挖掘)对每个项目来说都是一个好主意,而 ML/AI 只适用于那些目标是使用数据来自动标记事物的项目。尽管基本的数学原理通常是相同的,但是过程是非常不同的。数据挖掘是关于最大化发现速度,而 ML/AI 是关于自动化的性能。在数据挖掘中,你的团队只会犯一个错误,而 ML/AI 有一个令人印象深刻的潜在错误列表。只有当你有一个值得麻烦的用例时,才注册那些令人头疼的问题。

是给谁的?想想你的用户!

你耀眼的发明是给谁看的?谁受益?这是一个咨询 UX(用户体验)专家和规划应用程序目标用户的好时机。

构思新技术通常从“是什么”开始,但在着手“如何”之前,先了解“是谁”是很重要的。

通过与 UX 设计师相处,我学到了一些东西,那就是我下意识地描述我的用户是谁……通常是相当天真的。我是否考虑过对间接受益者的可用性,对整个社会的可用性,对其他企业的可用性,对使用输出作为输入的机器系统的可用性,对从事调试的工程师的可用性等等?为了避免粗制滥造的 UX 设计,在你继续之前,请花点时间考虑一下你所有的用户类别。用户不仅仅指最明显意义上的客户或最终用户。

继续下去合乎道德吗?

如果你的想法并不是对每个人都有好处呢?在规划您的理想用例时,考虑那些可能因为您的系统的存在而受到伤害的人。我不仅仅是指你所在行业的竞争对手。你的应用会伤害到任何人吗?如果你的技术发展到数百万或数十亿,这一点尤其重要。

想想你的创造所影响的人类!谁受益,谁可能受损?

如果你关心以道德和负责任的方式开发技术,你有责任考虑你的创造可能影响的所有人。在建成后再去想它们是不负责任的。现在是的时间!伦理学家可以帮你分担一些负担。如果你的项目有可能对人类福祉产生重大影响,让他们成为你的顾问是个好主意。与你的 UX 专家一起,他们对这个项目的参与将帮助你确保受你的创作影响的群体有发言权。

做一些现实检查

一旦你能清楚地说出你想要的标签,是时候做一个快速的现实检查了:你有关于这个商业问题的数据吗?

无法访问数据意味着没有任何意义。不过,你或许可以在网上找到你需要的东西——免费获取数据的趋势正在上升(例如这里的)。

尽管如此,它仍然是相关的。你知道你不能用我的 Marmite 消费模式(定义:大数据)来预测你的血糖水平。明明没用的数据不算。你还不需要分析数据(这将在项目的后期进行),但是你应该检查到时候你是否真的有东西可以分析。没有数据意味着没有 ML/AI

无法访问相关数据或没有计算机来处理这些数据?没有什么好的方式来说这个…

This is your dream of ML/AI if you have no data.

你还需要证明你有处理数据的计算能力。(听说过我的雇主吗?他们有很多,而且他们喜欢分享 T21。只是说说而已。)

现实清单

请确保您对所有这些问题的回答都是肯定的。这些中的每一个都可能在以后得到自己的指南,敬请关注。这只是一个快速概述的问题,以确定一个不成功的人。

  • 合适的任务: 你是否自动化了很多决策/标签?你不能每次都完美地找到答案。
  • 合理期望: 你是否明白你的系统可能很优秀,但它不会完美无瑕?你能忍受偶尔的错误吗?
  • 生产中可能: 不管那些决策/标签来自哪里,你能在生产中为它们服务吗?你能聚集工程资源以你预期的规模来做吗?当你和工程师们坐下来的时候,你会更详细地研究这个问题,但是现在,一丝理智检查就足够了。
  • 要学习的数据: 是否存在潜在有用的输入?你能接近他们吗?(如果数据还不存在也没关系,但是你有一个很快就会得到它们的计划。)
  • 足够多的例子: 当你和你的统计学家或机器学习工程师哥们一起喝饮料时,你不经意地提到了可用的例子数量以及你想要的输出类型,他们的表情是不是没有一丝不悦?(我会在以后的文章里教你如何自己培养这种直觉。)
  • 计算机: 您有足够的处理能力来处理您的数据集吗?(云技术使得这对于任何愿意考虑使用它们的人来说都是一个自动的肯定。)
  • 团队: 你有信心组建一个拥有必备技能的团队吗?
  • 地面真相: 除非你是在无监督学习之后,你有权限输出吗?如果没有,你能付钱让人类通过执行任务为你制造它们吗?
  • 日志健全性: 可以区分哪个输入与哪个输出,对吗?
  • (学习榜样,需要好的榜样来学习。)

集合你的队伍

一旦你清除了现实清单,是时候开始招聘了,你可以在阅读本指南其余部分的同时进行招聘。我对你正在寻找的角色的建议是这里

明智地制定绩效指标

拥有权衡

如果你是新手,接下来的部分可能会有点棘手。你负责决定每种结果的价值。得到 Y 的那杯恶心的茶是我们错过的那杯美味的两倍吗?3.4823 倍?由你决定!

挣扎?找一个喜欢数字的人,让他们帮你集思广益。定性专家接受过这方面的专门训练,但必要时你的标准计算器也能胜任。如果你想要最好的帮手,大声说出它的正式行话(引出无差异曲线)来召唤一个经济学家。

经济学家是人工智能项目令人惊讶的有用顾问。

既然你已经知道了如何在一个单个输出上权衡各种结果,是时候考虑一下你想如何一次获得几千个结果了。用平均是平均的选择,但你不必平均。再说一遍,决策者是这里的老板。正确的评分方法取决于什么适合您的企业。

(可选)专家模式侧重于模拟

棘手、复杂的项目从模拟中受益匪浅。这就是专门生成虚假但可信数据的分析师可以帮助你看到你在这篇文章中所做选择的潜在后果的地方。

彩排有助于开幕夜的顺利进行。

模拟给你一次彩排,帮助你在真正开始你的项目之前解决一些问题。像分析一样,它减轻了决策者努力沉思和考虑一切的任务负担。

制作您的度量标准

有许多不同的方法来制定指标。在我们的茶的例子中,你可以选择非常简单的一个:准确性又名“不要出错。”每一个错误都同样糟糕(0),每一个正确的回答都同样好(1),然后你取一个平均值(这是你一直渴望得到的——有人需要对人们发现平均值的吸引力设定一个中心限制)。

等等,也许当谈到好茶时,你有 FOMO,而且你很高兴一路上都有次品?这是一个不同的指标,叫做召回。或者也许你不想浪费时间,你需要确定当系统说美味时,它真的值得喝,但是你可以接受错过美味的茶。这是一个完全不同的指标,叫做精度。我们将在另一篇文章中放慢速度,深入探讨度量标准。现在,不要管它们叫什么,只要想出一个适合你业务的就行了。

需要帮助吗?你的经济学家已经迷路了吗?没问题!也许你有一个喜欢设计游戏的朋友?游戏极客们在不知不觉中已经为这个训练了一生!如果你不和那群人混在一起,你可以打电话给你的定性专家,因为他们的工作是帮助决策者澄清他们对这类事情的想法。

请求专家评审

在人类福祉受到严重威胁的应用中,寻求专家小组的咨询,以验证不可能以某种反常和有害的方式在您的指标上获得高分。

哪些专家?你听说过这样一个故事吗,一个决策者、一个伦理学家、一个人工智能控制理论家、一个统计学家、一个用户体验研究员、一个行为经济学家、一个领域专家和一个可靠性工程师走进一个酒吧……

当然,这对于良性的商业应用程序来说可能有些过头了,所以你的定性专家对这些学科的入门水平的熟悉已经涵盖了你,你的游戏设计师朋友的直觉也在利用类似的脉络。

你好,业务绩效指标!

当你完成后,你会听到天使的合唱。您已经创建了您的业务绩效指标!

这和一个损失函数不是一回事(后面会讲到那些)。当谈到指标时,可能性是无限的,这取决于决策者来找出什么是真正重要的。如果您对解决这个问题感到焦虑,我正在酝酿更多的文章来帮助您掌握度量开发。

(行话触发警告)你的人工智能专家应该知道的事情

这里有一个微妙的东西,你可以跳过,直到我们在后面的帖子中深入探讨,但如果你知道什么是损失函数,那么你就会意识到我们将有两个指标在发挥作用。如果这对你来说毫无意义,我们现在不必担心,你在这里的工作只是确保你的 ML/AI 专家阅读下一段。他们中的许多人在学校错过了这一课。 警告: 很多决策者会发现,它读起来就像一个行话——胡言乱语的噩梦——我很抱歉!—那就转发吧。

损失函数是为了优化,而不是为了测试。

“在应用 ML/AI 中,损失函数用于优化,而非统计测试。统计测试应该问,“它的性能是否足以构建/发布?在哪里执行应该由业务问题及其所有者定义。你不应该改变业务问题陈述来满足你的凸优化野心。为了方便起见,您可以使用标准损失函数进行优化,该函数与您的领导者的想象刚刚产生的函数方向相同(通过分析或模拟执行相关性检查),但请使用测试他们的函数。**您是否在所有评估中都使用了损失?别担心,这是一个常见的错误,可能与软件默认设置、大学课程格式以及人工智能中的决策者缺勤有关。”

**如果没有标准损失函数与性能指标适当相关,请提醒您的决策者,他们的要求非常困难,可能需要投资优化研究人员。

**持异议的 AI 专家,看这个。尽管这与职能无关,但与决策者合作的一般理念是适用的。

设置测试标准

定义您感兴趣的人群

谈论你的系统“工作”是没有意义的,除非你指定你打算让它在哪个实例上工作。所有美国夏季投入?全球所有输入?(这些不一样!)

在您继续之前,您需要定义您感兴趣的统计群体,您的系统在您给它开绿灯之前需要展示良好性能的实例的广泛集合。我为你准备了一份由两部分组成的指南,以防你需要复习一下。

承诺粉碎它!

现在,您已经准备好了性能指标和人口,在您可以开始工作之前,您还有一项工作要做。因为到达这里需要几个月的时间,你可怜的脚一定很疼。

这是最后一项任务:决定你愿意签字同意的最低表现,因为我要让你承诺,除非它足够好,否则你不会让这个系统替你标记东西。

Setting a bar for testing the system is a responsibility the decision-maker should take very seriously. (Image: Maria Fernanda Murillo winning a high jump competition, credit: Diego Sinisterra)

“足够好”是什么意思?你应该设定多高的标准?由你决定,但是你现在必须做出承诺。

预先设定标准是你如何让自己(和我)免受可怕的机器学习和人工智能伤害的一部分。

这个标准不是一个指导星。你也可以告诉你的团队要达到的绩效水平。),但这不是你将要测试的。测试最低限度。

你对物种有偏见

你为什么在组建这个项目的团队之前,现在就提出这个截止日期?事实证明,作为人类物种的一员,我们受到一些可爱的认知偏见的困扰(不要说沉没成本禀赋效应确认偏见除非你希望那个经济学家再次凭空出现,这次是带着一个心理学家),这些偏见可以归结为:当人类在某件事情上投入时间和精力时,我们会爱上我们所做的事情……即使它是一堆有毒的垃圾。然后我们发现自己在讨价还价:“Awww 但是性能也没那么差。我为 12%的准确率感到自豪。或许我们可以发射它?为什么我不针对 10%进行测试?看到了吗?它过去了。真是够好了”

如果你想再跟我在这个悲伤的话题上纠缠 6 分钟,我有什么资格阻止你?

我们人类爱上了自己倾注心血的东西……哪怕是一堆有毒的垃圾。

趁我们还清醒(!)在我们投入大量精力之前,我们会冷静、认真地审视一下业务问题,然后说:“如果它不满足* 这个最低 要求,我保证*它会死掉。”**

比人类好?

我希望你现在能明白,为什么当人们问我“人工智能在某些方面比人类强吗?”时,我不得不忍俊不禁

比人类好?同义反复是同义反复。

如果它的制造者要求它比人类更好,并且做了适当的测试,那么如果它不比人类更好,他们就碾碎它。如果存在,那么是的。除非他们不要求它比人类更好,在这种情况下,它可能不是。为什么有人问?询问那些决策者他们是如何建立标准和测试的。(说到种群它应该比哪个人类强?那个志愿者吗?)

此外,我们不要太在意机器在某些方面是否比我们更好。我的电脑总是比我更擅长…做乘法。这一点也不困扰我。我的水桶比我更会盛水。如果一个工具不能减少你的努力或者增加你所能达到的成就,那它还有什么意义呢?

而是关注它是否好到有用。

不要要求太高

总是要求比人类更好的表现可能会让你失去利润。这有点像说你只会雇一个奥运金牌选手给你砌砖。也许一名奥运选手比你的普通人乔更强壮,但是如此严格的招聘标准可能会让你没有工人。把你的标准降低到对商业有益的程度,但不要更低。经济学家可能会说,将测试标准设定在最低水平是与激励相容的,T21。(如果你刚从商学院毕业,想对机制设计感兴趣,我们实际上正在为我们的假设检验程序建立一个 BDM 拍卖。)

不要因为测试门槛过高而错过有利可图的解决方案。

有时自动化生产的产品单位质量比手工生产的低,但是机器的规模和速度使它在商业上是值得的。为了你的事业值得吗?嘿,你说了算,不是我。祝你好运!

有关该长文本的简短总结,请参见清单版本

这就是 ML/AI 完成的第一步!第二步涉及数据和硬件(以及工程师!)所以你可能想温习一些词汇以期待即将到来的景点。

如果你觉得本指南中的任何想法都有价值,请告诉你网络中最有可能发现自己处于决策角色的人。让我们为一个光明的人工智能未来建立一批有技能和负责任的人工智能领导者!

感谢阅读!YouTube 课程怎么样?

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

Enjoy the entire course playlist here: bit.ly/machinefriend

喜欢作者?与凯西·科兹尔科夫联系

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

致命争吵的(不变的)统计数字

原文:https://towardsdatascience.com/the-unchanging-statistics-of-deadly-quarrels-31cd8ab49a17?source=collection_archive---------4-----------------------

致命争吵的统计数据由刘易斯·弗莱·理查森撰写,于 1960 年出版。这本书因其发现和作为应用于国际关系领域的定量方法的第一个例子而闻名。作为一名职业气象学家,理查森将他革命性的、现在广泛使用的天气预报方法用于州际冲突的爆发,希望通过分析 1809 年至 1950 年间的数据来找到预测变量。虽然理查森在这方面失败了,但他有一个相对令人震惊的发现:战争的爆发反映了流星撞击和地震等罕见事件的发生率,或被称为“不可抗力”的事件类别。

这些事件和其他事件的发生,如基因突变和客户到达,可以用泊松分布进行统计建模。泊松分布的基本要求是事件的发生相互独立,并且发生率在所研究的时间段内是固定的。战争的爆发将遵循符合这些假设的分布,这提出了有待解决的有趣的数学和哲学问题,同时也肯定和否定了这一领域内预测尝试的价值。

An illustration of Richardson’s vision of human computers performing calculations within a forecast factory. NOAA / L. Bengtsson.

我第一次知道 Richardson 的工作是在飞机上阅读六月版的哈珀杂志时。这篇文章的作者加里·格林伯格(Gary Greenberg)继续描述理查森是一个幻想家,他想象着装满“计算机”(在这里是人)的大房间,这些计算机将对输入的数据进行实时计算。作为理查森远见卓识的恰当证明,我碰巧在去华盛顿的途中,在那里我将作为一名定量地缘政治分析师实习一个夏天。大数据时代已经到来,2000 亿美元的产业现在反映了一种信念的普及,即任何问题都可以通过足够的观察和计算能力来回答。

出于好奇,我决定从理查森停止的地方开始,对至今的州际冲突进行同样的分析。具体来说,我想比较每年发生的 n 次的频率与泊松分布中的预期频率。谢天谢地,今天的任务比 50 年前容易多了。对我来说,不再有单调的翻阅百科全书或冗长的手工计算。在相对简单的谷歌搜索之后,我能够从 UCDP/PRIO 武装冲突数据集获得我需要的数据,这为我提供了从 1946 年到 2009 年的良好编码的观察。(为了避免重叠和由此产生的偏见,我只研究了 1952 年以后的年份。)和 60 行代码之后,结果如下:

总的来说,有 30 年没有爆发新的冲突,21 年爆发了一场冲突,5 年爆发了两场冲突,两年爆发了三场冲突。通过比较预期列和观察列的值可以看出,实际冲突爆发的分布反映了泊松分布。使用 Yate 的校正卡方拟合优度测试在 95%的置信水平下验证了这一点。从结果来看,理查森的发现似乎在我们进入新的千年时仍然具有相关性。

GitHub 上查看我的代码。

来源:

一个神经元不合理的有效性

原文:https://towardsdatascience.com/the-unreasonable-effectiveness-of-one-neuron-998fd5298bd3?source=collection_archive---------6-----------------------

https://rakeshchada.github.io/Sentiment-Neuron.html交叉发布

(我所有的实验和可视化都可以在 这个 jupyter 笔记本中查看)。

我最近看到一篇研究论文( 拉德福德等人, )让我很着迷。作者发现一个单个神经元捕捉了整篇文章的情感。他们甚至更进一步,表明即使在没有监督的情况下,它在情感分类任务上表现得非常好。什么不是!他们甚至通过固定神经元的值来生成连贯的文本。

尽管这不是第一次有人发现这种可解释的神经元。 Karpathy et al. 举例来说,发现了在引号内激活的神经元, if 语句中的代码块等。这在这篇伟大的博文中有详细解释。事实上,那篇文章启发了我这篇文章的名字:)然而,感情是一种高级的表达。它更多的是对文本语义的深入理解,而不仅仅是它的句法结构。单个神经元捕捉到整个情绪的事实令人难以置信。这意味着单个浮点数是对一个段落的情感进行分类所需要的全部。多迷人啊。!

我个人想更详细地探索这一点。谢天谢地,作者已经开源了他们训练了大约一个月的模型。)以及他们的一些代码库。我添加了情绪神经元热图可视化,并做了一些其他的修改。我选择了张等人在中介绍的 Yelp 评论二进制数据集进行分析。总共有大约 60 万条评论。

语言模型

这一切都是从字符级语言建模任务开始的。目标是在一段文本中一次预测一个字符。与单词级建模相比,字符级建模的一个优势是它固有的捕获词汇表外单词的能力。作者训练了具有 4096 个单元的乘法 LSTM 模型。每个字符被编码成一个 64 维向量,LSTM 一次处理 64 个字符。他们使用的亚马逊评论数据集有大约 8200 万条产品评论。

情感神经元发现

引起我兴趣的第一个问题是——作者最初是如何发现这种情绪神经元的?我的意思是,在输出层大约有 4096 个神经元。他们是否想象每个人都在试图寻找某种模式?也许不是。但如果你仔细阅读这篇论文,你会发现他们使用 L1 正则化在这 4096 个神经元的基础上训练了线性模型。假设有一个具有 4096 个特征的模型,那么发现这个特定的特征将归结为特征贡献(权重)的问题。如果单个神经元解决了几乎整个分类任务,那么它的贡献应该是非常高和显著的。

让我们看看情绪神经元是否也是如此。这是我通过在 Yelp 数据集上进行情感分类训练得出的特征贡献图。

Feature importances with L1 regularization

哇!事实上,有一个特征具有很大的权重。一定是情绪神经元。事实上,我们甚至可以在 4096 个神经元的列表中得到它的索引。如果你看一下笔记本,你会看到它的索引是 2388。还有少数其他神经元的贡献相对较高。我们最终会看到它们。

无监督学习

既然我们已经发现情绪神经元对最终情绪有很大影响,那么看看训练数据大小对其学习能力的影响将会很有趣。作者做了这个实验。他们从零训练数据开始,逐渐增加,直到性能达到极限。这导致了一个有趣的发现。即使有了零标记数据,情绪神经元也能够非常准确地预测情绪!无监督学习效果极佳!在不使用任何人工标注数据的情况下,在语言建模任务上训练该模型。然后,在没有任何监督训练的情况下,该模型中的一个特征被用于对另一项任务(情感分类)进行预测。这也类似于典型的迁移学习设置,这是计算机视觉任务中的常见技术。

此外,性能很快就会达到上限(10–100 个示例,具体取决于任务)。这意味着 拥有 100 万个手动标记的示例与拥有 100 个示例 对模型性能的影响是一样的。如果以前发现了这种模式,可以节省大量的标记工作和成本!

对于我们的 Yelp 分类任务,我通过使用情感神经元值的阈值来尝试对数据集进行无监督分类。当输出通过一个双曲正切门时,如果输出是正的,我预测正类,如果输出是负的,我预测负类。在没有任何训练的情况下,这给了我一个 ~93.67% 的任务准确率。这是相当惊人的!

情感神经元的可视化

获得对正在发生的事情的直觉的一个好方法是将事情视觉化。可视化对于 LSTMs 来说可能是一个挑战,但幸运的是,在这种情况下,我们只需要跟踪一个神经元。卡帕西在可视化 RNNs 方面做了一些奇妙的工作。遵循类似的想法,我构建了一些方便的 python 函数来帮助可视化情绪神经元。由于这是一个字符级模型,我们可以在情绪神经元处理每个字符时跟踪它的值。然后,这些值可以表示为情绪热图。下面可以看到一个这样的热图:

Sentiment Heat map for a review

你可以观察到情绪神经元准确地跟踪状态,没有受到一次性负面词汇的影响,如昂贵失望

下面是另一个负面评论:

看到像“不好”、“慢”、“大声”等短语时,神经元如何在负方向上改变其状态,这真的很好。此外,尽管短语“有一些好馅饼的城镇”听起来很积极,但整体情绪没有受到影响。( 注意 机制有人吗?)

太好了!它在较大的文本上表现如何?

太棒了!尽管文本篇幅很长,但它还是相当准确地捕捉到了情感的所有变化。冗长的文本是递归神经网络通常努力解决的问题!

好了,我们现在对情感神经元如何成功处理文本有了一些直觉。理解失败案例中发生的事情也同样有趣。

这里有一个例子:

嗯有意思!这里发生了几件事。首先,在评论的开始有讽刺。神经元无法捕捉到这一点,并将其视为积极情绪。然后神经元成功捕捉到了清晰的负面评论。最后,评论继续称赞的另一家餐厅。从技术上来说,这部分的情绪是积极的,但它只是与另一家餐厅相关联。总的来说,我有点理解这对于情绪神经元来说是一个多么艰难的案例。

虽然在一些情况下,神经元发生了什么还不清楚。让我们看看下面的例子。

这种情绪不知何故总是停留在积极的区域,尽管明显存在消极的短语!

句子更新结束

如果你看所有的图,你会发现一个共同的模式。情感神经元的值在句子的结尾得到重大更新(通常在看到一个“”之后)。”)。这意味着神经元会将整个段落分成一系列句子,并在处理每个句子后更新情感值。对于一个角色级别的模型来说,这是一个非常有趣的结果!

情绪变化

看看情感值在文本范围内如何变化可能会有所帮助。下图就是分析这一点的一种方式。

Sentiment value shifts for a review

我在寻找一些与句子中相对位置相关的移位模式。但是在这些情节中没有明显的模式。

评论长度的影响

我们之前已经看到神经元能够很好地处理大型评论。现在让我们试着想象情绪神经元成功和失败的情况下长度的分布。如果长度影响了性能,这个图应该清楚地表明。

Review Length Distribution for Success, Failure and All reviews

所有的分布(成功和失败)看起来都和真实的分布一样。这意味着回顾长度与神经元的表现没有相关性。那是相当大的新闻!

其他重要的神经元

当我们可视化特征贡献时,我们注意到一些具有更高贡献的其他神经元。我试着在评论中追踪他们的状态,就像我对情感神经元所做的那样。下面是一个这样的可视化。

Visualization of other important neurons

不过,我看不出任何明显的模式。你可以参考笔记本了解更多这样的可视化。随意玩,如果你发现任何有趣的模式,请发帖。

监督培训

我们已经看到了情绪神经元在零监督下的表现。我还尝试在整个 yelp 数据集上训练模型。最佳线性模型(具有 l2 正则化和 0.001 学习率的逻辑回归)给出了 me ~ 94.86% 的准确度。这仅比仅使用情感神经元的无监督训练提高了约 1%。这与作者的主张是一致的,即额外的监督只在一定程度上有帮助,并且性能很快就达到极限。

文本生成

我们一直在谈论的神经网络被训练来预测下一个字符。所以如果我们不从中生成一些样本,那就不公平了:)!

当被要求以“嗯”开始时,下面是它生成的内容。

Hmm what a waste of film not to mention a Marilyn movie for nothing.

嗯,那还不错!

有趣的部分是通过固定情感神经元的值来生成样本。下面是一些生成的样本。

  • 情绪 = 1.0 和起始短语 =“这是”= > This is a great album with a quality history of the group.
  • 感悟 = -1.0 和起始短语 = "可能" = > It might have been good but I found myself skipping pages to get to the end.

我试着用“我不能”这样的短语作为开头语来欺骗它,但是把情绪固定为积极的。但它仍然做得很好,如下图所示。

  • 情绪= 1.0 = > I can't wait to try the other flavors - and I have a ton of them on hand just in case one should have gone out for a trip or need a "big new place" and they are delicious.
  • 人气= -1.0 = > I can't believe I bought this book.

令人高兴的是,生成的短语是连贯的,像人类一样,也符合预期的情绪。

也就是说,有时生成的文本并不完全符合情感。

  • 情绪= -1.0起始短语 =【伟大】=>=Great DVD with the original production leaving good video and audio quality.

关于生成的有趣之处在于,它也可以被视为获得单个神经元直觉的一种方式。为此,我尝试通过固定其他重要神经元的值来生成文本。例如,将神经元 801 的值固定为-1.0 会生成此文本。

  • This is the greatest movie ever! Ever since my parents had watched it back in the 80s, I always watched it.

它(神经元 801)似乎与情绪有某种关联。

修复不同的值(甚至多个值一起)并查看生成的文本是一个有趣的练习。这样生成的样本可以看笔记本

接下来呢?

我们看到了一些有趣的事情。这些结果应该是一个巨大的激励因素,投入更多的研究语言建模和前训练/迁移学习的自然语言处理。单词向量( word2vecGloVe 等)通常是目前深度学习 NLP 任务中使用的唯一一种预训练输出。我还对扩大/缩小数据集范围并进行类似分析的结果感到兴奋。例如,对于情感神经元的这种离散存在的假设之一(由作者提出)是,情感是评论的语言建模的强预测特征。那么,我们能否通过手动控制训练数据集的分布来发现这种离散的&可解释神经元呢?作为一个例子,我们是否可以通过将我们的训练数据作为不同主题的新闻语料库来发现主题神经元?总的来说,这里的想法是使训练数据非常领域/任务特定,看看我们是否可以通过语言建模恢复任何可解释的神经元。这可以在多个域/任务上完成。

另一种方法是扩大域。这意味着你要在你的训练集中包含尽可能多的数据(来自几个领域),做类似的分析,看看你是否能发现任何可以解释的东西。有许多公开可用的数据集来做这样的分析。

对于这项任务,将单词级语言建模与字符级语言建模进行比较也是很有趣的。

有无限的可能性,我对任何与此相关的未来工作感到兴奋!

PS:我一直在努力增加我的神经网络知识,我认为实现东西是一种很好的学习方式。我正在做的是一系列不同的任务。如果你也有兴趣,可以跟着 这个 资源库!

无味卡尔曼滤波器:EKF 能做的任何事,我都能做得更好!

原文:https://towardsdatascience.com/the-unscented-kalman-filter-anything-ekf-can-do-i-can-do-it-better-ce7c773cf88d?source=collection_archive---------1-----------------------

我刚刚完成了 Udacity 自动驾驶汽车纳米学位的第二学期。我写过关于卡尔曼滤波器扩展卡尔曼滤波器。今天我们将看看卡尔曼滤波器家族的另一个成员:无味卡尔曼滤波器。所以,如果你看了我的前两篇文章,你现在应该已经认识我的同事拉里了。

总结:
卡尔曼滤波器 : 它是一种在假设我们的数据是高斯分布的形式,并且我们将线性方程应用于那个高斯分布的情况下,使用一堆数学方程来预测值的工具。

扩展卡尔曼滤波器 : 在现实世界中,我们有非线性方程,因为我们可能在一个方向进行预测,而我们的传感器在另一个方向进行读取,所以它涉及非线性的角度和正弦余弦函数。因此,EKF 利用泰勒级数(以及进一步的雅可比矩阵)来线性逼近高斯平均值附近的非线性函数,然后预测数值。

无味卡尔曼滤波器

拉里:我知道卡尔曼滤波器和扩展卡尔曼滤波器,现在怎么办?我知道卡尔曼滤波在现实生活中失败的原因和扩展卡尔曼滤波的需要。为什么要用无味卡尔曼滤波器呢?
我:性能。

拉里:性能?怎么会这样我:在 EKF 我们用了多少个点来从非线性函数逼近一个新的线性函数?

拉里:1 点,这是高斯分布的平均值。
我:正确,那么有没有更好的线性化方法?

拉里:你是什么意思?
我来看看下面在 EKF 发生的事情:

Figure 1. Scenario of Gaussian Approximation in EKF around the mean

我们只有一个点来近似高斯函数。那么,有没有更好的线性化方法呢?

拉里:如果我早知道,我就不会和你说话了。告诉我!
我:你觉得会给我们一个更好的近似?假设我们有两个场景来从源高斯到达近似高斯-:
场景 1:我们有一个点(比如说均值)并且我们在一个点附近近似。
场景 2:我们有一堆点,包括平均值,我们围绕这些多个点进行近似。

拉里:我的直觉告诉我,如果我们像场景 2 那样有多个点,我们会有一个更好的近似值!
我:恭喜!你现在知道了无迹卡尔曼滤波器。

拉里:既然如此,为什么不考虑高斯源中的所有点,然后进行变换和近似呢?
我:那会耗费大量的计算能力和资源,所以可能是最琐碎的解决方案但不是最优的。

适马点

拉里:哦!!那么我们如何选择正确的点数呢?
我:所以在无迹卡尔曼滤波中我们有一个适马点的概念。我们在源高斯上取一些点,将这些点通过一些非线性函数后映射到目标高斯上,然后计算变换后高斯的新均值和方差。

通过非线性函数来转换整个状态分布可能非常困难,但是转换状态分布的一些单独的点是非常容易的,这些单独的点是 sigma 点。这些西格玛点是整个分布的代表。

EKF 和 UKF 的基本区别

这里与 EKF 的主要区别在于,在 EKF 我们只取一个点,即平均值和近似值,但在 UKF 我们取一堆称为 sigma 点的点,近似值的事实是,点的数量越多,我们的近似值就越精确!

Figure 2. Scenario of Gaussian Approximation around the Mean and other sigma points

拉里:太好了!明白了!这很简单。
我:嗯,不是这样的,除了 sigma 点,这些点也是有权重的,所以这些就是加权 sigma 点

无味变换

拉里:那么,在这种情况下,我们或多或少会偏向某些点,以使我们的近似更好?我:是的,没错。
当一个高斯函数通过一个非线性函数时,它就不再是一个高斯函数,而是我们从结果图中逼近高斯函数,所以在 UKF,一个叫做无味变换的过程帮助我们完成这个任务。下面总结一下 unscented 变换执行的步骤。计算适马点集
2。给每个西格玛点分配权重
3。通过非线性函数
4 变换点。从加权和变换的点计算高斯分布
5。计算新高斯的均值和方差。

计算适马点

拉里:但是我们如何选择适马点呢?我:西格玛点的数量取决于系统的维数。通式为 2N + 1其中 N 表示尺寸。

Figure 3. Choosing Sigma Points Equations

χ(Caligraphic X) ->适马点矩阵
μ - >高斯均值
n- >系统维数
λ- >比例因子
σ->协方差矩阵

χ(校准 X)

χ表示适马点矩阵。这里需要注意的一点是,χ的每一列都表示一组 sigma 点。因此,如果我们在二维空间中工作,那么χ矩阵的大小将是 2×5。因为每个维度有 5 个 sigma 点。

λ

λ是比例因子,它告诉我们应该选择离均值多远的 sigma 点。一项良好的数学研究表明λ的最佳值为 3-n。

显然,其中一个西格玛点是平均值,其余的我们根据上面的等式计算。

拉里:等一下,矩阵的平方根?我从来没听说过!
我:嗯。如果我们有一个满足下列条件的矩阵 S,则定义矩阵的平方:

σ= S . S 或σ= S . S _ transpose

如果我们能够找到 S,那么我们可以说 S =√√

计算适马点的权重

拉里:哦!这是一个需要了解的新事物,那么分配给这些计算出的 sigma 点的权重呢?
我:哦,权数太有方程式了:

Figure 4. Calculating Weights of the Sigma Points

计算平均值的权重有一个不同于其余 sigma 点的等式。λ是扩展参数,n 是维数。这里需要注意的一点是,所有权重的总和等于 1

计算近似高斯的均值和协方差

拉里:哦,天哪!这么多方程式!现在我们有了 sigma 点,权重,那么我们如何在高斯通过非线性函数 g 之后恢复它呢?
我:又一堆方程式:D

Figure 5. Calculating New Mean and Covariance

μ′->预测均值
σ′->预测协方差
w->sigma 点的权重
g - >非线性函数
χ(Caligraphic X) - >适马点矩阵
n - >维数

这就是关于无味变换及其工作原理的全部内容。

预测步骤

拉里:嗯,那么如何在卡尔曼滤波器的一般预测-更新模型中使用无迹变换呢?我:所以预测步骤基本上非常接近我们刚才讨论的,即无迹变换。

  1. 使用图 3 中的等式计算适马点-
  2. 使用图 4 中的等式计算适马点数- 的权重。
  3. 变换适马点并计算新的均值和协方差- 它非常接近图 5 中提到的方程。每当我们预测会发生什么?我们的不确定性增加了一些,因为我们变得有点不确定,所以我们必须考虑过程噪声。

Figure 6. Predicted mean and covariance after accounting in Noise R

更新步骤

拉里:现在我们有了预测的均值和协方差。在更新步骤中,假设我们有一个来自传感器的测量值,那么我们如何计算预测的均值和协方差值与实际均值和协方差值之间的差异呢?我:这个过程和卡尔曼滤波器的过程很相似。所以我们在这里做的是,把我们的预测状态带到测量状态。

现在,我们有一个选项,我们可以再次生成西格玛点,因为预测的均值和方差发生了变化,西格玛点在某种程度上依赖于它们,或者我们只是继续使用之前生成的相同的西格玛点集合。暂时让我们只考虑我们之前生成的 sigma 点。

我们把我们的状态从我们的状态空间带到测量状态空间。

Figure 7. Update Step considering the measurement spacce

Z ->在测量空间中转换的西格玛点
χ(Caligraphic X) - >西格玛点矩阵
测量空间中的 ẑ - >均值
测量空间中的协方差
Q- >噪声
h- >是将我们的西格玛点映射到测量空间的函数

重要提示:Z 是我们的测量空间,即来自传感器的测量值。所以我们需要一个函数 h,它可以把我们的状态空间转换到测量空间,这样我们就可以用相同的单位把它们等同起来。

拉里:太好了!我们如何计算卡尔曼增益呢?我看到这里不再有雅可比矩阵了,因为我们没有线性化这个函数!我:这是一个非常重要的概念,我们不再将函数线性化了!关于卡尔曼增益,这里有一点变化。
计算预测中的误差:我们需要计算状态空间中 sigma 点和测量空间中 sigma 点之间的互相关性。

Figure 8. Calculating Kalman Gain

T ->状态空间和预测空间之间的交叉相关矩阵
S- >预测协方差矩阵
K- >卡尔曼增益

拉里:哦,天哪!方程式改了很多!
我:如果你仔细观察就不是了!请看下面:

Figure 9. Comparison of Calculating Kalman Gain in EKF and UKF

赖瑞:是的,相似之处是一样的!甚至计算最终状态的方程也是一样的?我:是的,几乎一样。

Figure 10. Predicting Final State after calculating Kalman Gain

μ ->均值
σ->协方差
μ′->预测均值
σ′->预测协方差
K - >卡尔曼增益
z- >来自传感器的实际测量均值
ẑ - >均值在测量空间
T - >与卡尔曼滤波中的 h 和 EKF 中的 Hⱼ 相同。这是交叉关联矩阵

拉里:最后一个问题。为什么叫无迹卡尔曼滤波器?我:嗯,发明 UKF 的人认为 EKF 很糟糕,因为在一个点上线性化一个非线性函数是一个非常糟糕的主意。因此,他们认为,如果他们对数据进行采样并选取一些点,那么将会得到更好的结果。然而,他们的教授是 EKF 的超级粉丝,他不赞成 UKF 的想法。所以那些家伙发表了研究论文,并故意称之为无味的,这样他们就可以告诉世界,EKF 很臭!!

拉里:太好了!感谢您的宝贵时间!

好了,大家都到齐了。我试图用一种非常简单的方式来解释卡尔曼滤波器家族。希望你看完帖子后有所收获。我将在接下来的帖子中尝试提供卡尔曼滤波器家族的代码。

卡尔曼滤波器

扩展卡尔曼滤波器

如果你发现任何错误,你可以联系我@LinkedIn 这里

在命令行中探索美国大学排名 2017(第三部分——剪切、排序和 uniq)

原文:https://towardsdatascience.com/the-us-university-ranks-2017-at-the-command-line-part-iii-cut-sort-and-uniq-1a81dc0279c2?source=collection_archive---------9-----------------------

Image adopted and modified from the unsplash.com

各位编码员好!欢迎回到我的系列课程数据科学@ Bash Shell 。在这一课中,我们要计算美国各州在数据集中有多少机构被排名。

您应该从下面的网页下载数据,因为我们已经稍微简化了数据,让我们将数据保存为:unirank.csv

wget https://www.scientificprogramming.io/datasets/unirank.csv

查找每个州的学院数量

让我们从提取每一行中与我们相关的部分开始。在我们的例子中,注意我们对列#13(分别是universitystate的名称)感兴趣。为了提取这些列,我们可以使用名为cut的命令,如下所示:

$ cat unirank.csv | cut -f1,3 -d,

这里,命令行选项-f指定从文件中提取哪个字段(列)或cut(提取),选项(d,)告诉我们要用逗号(,)分隔切割。当您运行该命令时,您应该看到输出只包含诸如 university namesstates这样行。注意,尽管名称如此,cut命令并不修改它所作用的原始文件。现在到最后一部分。我们想数一下每个州有多少警察。然而,这是一个复杂的过程,没有一个命令可以做到这一切;我们将不得不使用两个命令。这里我们需要命令uniq -c来计算(因此使用-c)每个状态有多少个独特的外观。但是,uniq -c需要对输入进行排序,所以第一步是sort大学和州的列表。我们可以很容易地用一个叫做sort的命令来做到这一点:

$ cat unirank.csv | cut -f1,3 -d, | sort -k 2 -t”,”

sort选项:k 2告诉排序函数选择列2作为键,t”,”选项告诉分隔符是逗号(,)。

Output: Institutes sorted by states

注意,作为我们的列表被排序的结果,所有具有相同状态的行都紧挨着彼此。现在,正如我们在上面的计划中提到的,我们将使用uniq -c来“浓缩”相同的相邻行,在这个过程中,计算每一行有多少被看到:

$ cat unirank.csv | cut -f3 -d, | sort | uniq -c

Output: Institutes in the CA (California) state.

我们现在有一个列表,列出了每个州有多少大学,很明显,绝大多数排名机构来自加利福尼亚州!

找到排名和学费的相关性?

我们已经知道排名和每所大学的学费(在数据中给出)。一个有趣的问题是研究大学排名和学费之间的关系。

为了实现这一点,我们首先将catcut数据中的学杂费(列4)和排名(列6)放入名为udata.csv的新数据集中:

cat unirank.csv | cut -f4,6 -d, > udata.csv

注意重定向符号(>),帮助我们保存输出。现在,可以使用名为scatter(安装:sudo pip install bashplotlib)的散点图工具简单地绘制这些数据。

cat udata.csv| tail -n +2 | scatter

注意tail -n +2在将输出一直传递到结束scatter之前,不包括第一行,即列标题。然而,这个工具的输出没有多大意义,因为它没有显示任何x,y - axes 图例。因此,我们将数据(udata.csv)上传到一个名为 plot.ly 的在线工具上,产生了下面这张漂亮的散点图:

Output: Ranks vs. tuition: a scatterplot via plot.ly

从上面的情节不难理解,排名高的大学学费更高!然而,散点图也描述了一所大学(杨百翰大学-Provo)排名更高(排名=68),学费极低( $5300 美元/年)。这是数据集中的异常(异常值)吗?我们把这个问题留给你进一步调查!

摘要

在这个项目中,我们已经学会使用一些重要的 bash 命令,如headtailsortuniqcut等。在上下文中挖掘由美国学术机构排名组成的 csv 格式的玩具数据集。

参见前面几个部分: 第一部分第二部分 🚶

[该项目是'学习在 Bash Shell 和 Linux 中分析数据课程的一部分。]

相关作品

[## 学习在 Bash Shell 和 Linux 中分析数据——学习科学编程

一个简单的课程演示了 Bash shell 在处理真实数据集时的使用

www . scientific 编程. io](https://www.scientificprogramming.io/learn-bash/)

高级回归技术在房屋价值预测中的应用

原文:https://towardsdatascience.com/the-use-of-advanced-regression-techniques-for-home-value-prediction-c6ecb1f8fbfe?source=collection_archive---------2-----------------------

从竞争激烈的卡格尔比赛中获得的见解

简介

以下文档重点介绍了用于解决上述问题的各种技术,以及在创建一个机器学习模型时从这些结果中得出的推论,该模型将在六个时间段内准确估计美国近 300 万套住房的价值。换句话说,我们将预测 Zillow(赞助商)的估计哪里会差,哪里会好。我们用两种方法解决了这个问题。一种方法是将这个问题视为时间序列预测,另一种方法是对特定时期进行预测,并假设这种趋势在未来/过去是遵循的。我们还评估了各种实施方案,以选择最佳方案。本文档将讨论所有技术以及从它们得出的结果和结论。

评价标准:

评估标准将是平均绝对误差。因此,我们的目标是准确预测误差。预测误差越接近 Zillow 的误差,我们的预测就越准确。

数据集描述

可以在“参考资料”下找到相关链接。

设计

The Overall process execution in a nutshell

接近

正如我们在开始时提到的,我们使用了两种方法来执行这项任务。一种是基于时间序列的预测,另一种是基于趋势延续的预测。

时间序列预测

由于我们正在处理的问题有多个要预测的时间段,使用相同的静态特征来预测未来的属性误差只会给我们每个时间段相同的结果,因为不存在有助于实际估计的时变特征。因此,在这种情况下,我们应该有一些时变特征(对时间敏感的特征),以便对未来数据做出可靠的预测。因此,我们考虑了滑动窗口方法,该方法依赖于根据期望的窗口长度计算的特征。我们数据集中的可变时间窗口大小如下:3 个月、2 个月和 1 个月。之后,我们对目标月之前几个月的时间窗口中的要素进行工程化,以用作目标月数据集中的工程化要素。工程时变特征是,简单移动平均数/均值、标准差、中位数、最小值、最大值和第三个四分位数。只有 4 月、5 月和 6 月的数据包含在我们的最终数据集中。这是这种方法的一个局限性,因为它会导致数据集的显著减少。一种解决方案是考虑具有小宽度的小窗口,但是由于我们不知道哪个窗口给出最佳结果,并且执行交叉验证以确定最佳窗口将是一项繁琐的任务,所以我们选择了具有不同长度和小宽度的窗口,以减少数据集小的不利影响。但是具有更小宽度的窗口的问题在于,如果关于类似资产的销售发生的频率更低,则设计特征的预测能力将更低,因为相同的设计特征在大多数窗口中是多余的。在这种方法中,我们使用了不同的方法来处理类别值,即将一个类别替换为该类别的目标平均值。

恒定趋势法

在这种方法中,我们使用 2016 年 1 月至 9 月的数据作为每日可用的数据集来预测 101 日的误差。假设这种趋势持续到 111 日和 12 月,因为物业销售很少发生,这也是通过数据集确定的。

了解数据

properties_2016.csv 有 58 个列,其中 57 列可用作静态特征,而“parce lid”列是每个地块的唯一标识符,因此不会用作特征。 train_2016.csv 保存的目标是 2016 年售出的包裹的 logerrors 。通过基于 parcelid 合并这两个文件,可以将特性和目标合并成一个文件。了解数据集数据的性质为我们提供了一个很好的机会来预先执行必要的预处理操作,以便模型的准确性不会因数据集中的任何偏差效应而受到影响。在本文中,我们将只关注 2016 年 10 月、2016 年 11 月和 2016 年 12 月的预测。

我们正在建模的这个问题是一个回归问题。具体是利用多个变量/特征来确定输出的多元线性回归问题。此外,这个问题利用监督学习方法进行训练。

数据类型

合并后的两个文件 properties_2016.csvtrain_2016.csv 。在此过程中删除了以下列。帕切里德和交易日期因为他们已经没用了。

Data type count

分类值

在识别的非数字特征中,两个是分类的,而另外三个是布尔类型的。

这两个分类列是:

地产分区描述-描述地产允许使用的土地面积(区域)

propertycountylandusecode-县(地理区划)土地使用代码

包含布尔类型值的列有 :

hashottuborspa-酒店是否有热水浴缸或水疗中心

壁炉标志——公司是否有壁炉

taxdelinquecyflag-该房产的房产税是否到期

缺失值百分比

具有以下列名的要素的缺失值占记录总数的 90%以上。有 20 个变量的缺失值百分比超过 90%。

唯一值计数

我们这里的目标是消除有大量重复的列(或者换句话说,不太唯一的值)。由于列表非常全面,我们将只添加前三列信息。完整的列表可以在参考文献中找到。

Count of unique values for the first few columns

统计信息

获得的每个特征的统计信息如下。为此,我们在熊猫中使用了 describe 方法。缺失的值由虚拟常数 404 填充。第一个特征的结果说明如下,

列名:空调类型 id

计数 90275.000000,平均值 275.675262,标准值 187.414780,最小值 1.000000,

Q1 1.000000,Q2 404.000000,Q3 404.000000,最高 404.000000。

探索数据集

频率分布特征

Frequency distribution of a selected feature

因为有大量的特征,所以绘制每个特征是不实际的。因此,为了说明的目的,上面已经示出了其中一个特征。

目标变量的分布

Frequency distribution of target

很明显,目标变量的形状接近正态分布。即使对称形状已经从图的左侧丢失,这可能是由于 Kaggle 为了测试的目的从该区域保留了更多的数据。对数误差大致在-5 到+5 之间变化。此外,y 轴已按对数标度进行了缩放。

对照目标变化特征

Change in a sample feature against the target

上图显示了所选特性相对于目标的散点图。这显示了特性值相对于目标值的变化。

聚类结果

The clustered data point into four clusters

上述结果是在执行聚类数为 4 的 k 均值聚类之后获得的。执行进一步的聚类,将聚类的数量改变为十个和三个。但是最好的分离是通过使用 4 个簇给出的。

方框图

这些是用于发现分布异常值的图表类型。每个特征都被构造成一个箱线图。这种箱形图的示例如下:

Box plot

时间序列相关可视化

其中一些可视化应用于检查特定问题是否可以建模为时间序列问题。

滞后情节

用于检查分布是否是随机的。如果分布显示分布中的模式,如季节性、正相关或负相关,则该分布可以建模为时间序列分析。最需要检查的是分布是否随机。因为分布是随机的,所以它不能被建模为时间序列分析问题。在该图中,y 轴显示 t+1 时间戳处的误差,而 x 轴显示 t 时间戳处的误差,该误差相对于 t+1 滞后 1。我们分布的滞后图如下:

Lag plot

从上面的图中,可以非常清楚地看到,分布在 x 和 y 轴上扩展,而一些点聚集在中心。我仔细观察了一下,如果我们认为分布是十字形的,我们甚至可以发现 4 个异常值。因此这个图表明我们的分布有随机性。但是,我们不应该完全抛弃这种方法,我们应该从不同的角度分析数据,收集证据来验证我们的观点。

自相关图

这是检查分布是否随机的另一种方法,通过分析自相关(滞后变量之间的相关性)随滞后数量增加的变化。相关性可以在-1 和+1 之间。如果相关性为-1,则有很强的负相关性。如果相关性是正的,那么就有很强的正相关性。如果相关性为零,就没有相关性。所以为了分析我们的分布是否是随机的,我们应该考虑它是接近零还是正/负。因为分布接近于零,所以分布是随机的。从而支持了我们之前的观点。

Autocorrelation plot

时间序列数据由 3 个元素组成。这些问题如下

观察到的表示原始曲线。趋势显示曲线的趋势部分,季节显示分布中的季节效应,最后残差显示从原始曲线中移除趋势和季节属性后的剩余部分。

房产的变化是指通过不同的窗口

Time-series decomposition

Variation of property means over different time periods

上图描绘了一个月、两个月和三个月时间窗口内属性平均误差的变化。

数据预处理

缺失值的插补

为了输入缺失值,我们使用了一些技术,例如用列的平均值、列的中值和列的标准偏差来替换列中的缺失值。

标准化

当我们使用神经网络实现时,这种技术是必需的。归一化意味着对数据集进行缩放,使其均值为零,标准差为一。

处理分类值

我们有两个分类变量。首先,我们必须应用一个标签编码器将分类值转换成数值,因为所有的转换只能在数值数据上执行。sklearn 包中的 LabelEncoder 给出从 0 到 number_of_labels-1 的值给分类值。但是我们在这之后发现,这产生了大量的类,导致在应用诸如一键编码之类的方法时出现资源限制。因此,我们必须找到用最少数量的类来表示类别的方法。所以我们看了下面两种方法,

一种方法是使用分层聚类,在这种情况下,我们将使用一种算法,通过确定要使用的最佳聚类数来执行聚类。为此,我们使用了均值漂移算法,该算法需要密集的计算能力,每次运行只能处理 10,000 个样本,但我们有 80,000 多个样本。一种解决方案是分批进行训练,但是聚类算法将聚类标签随机分配给聚类。因此,我们不能确保在后面的迭代中遵循与初始迭代中相同的分配标准。所以我们决定按照 k-means 的平面聚类算法进行聚类,这需要声明我们需要的聚类数作为算法的参数。因为我们需要检查增加或减少集群数量是否会对评估指标产生影响。我们使用不同的值来表示聚类数,例如 3510。但是,在我们执行聚类之后,仍然存在一个问题,我们将聚类标签分配给与该聚类相关的分类变量中的值。然后,我们对每个分配的标签执行一键编码。在一次热编码完成后,编码的二进制值将被分成单独的列,这意味着将聚类的数量增加到一个大的数字,如 10,将导致 20 个新列被添加到当前数据集中。由于每个要素都表示为输入空间中的一个维度,因此增加一个维度会导致时间复杂度呈指数级增长。因此,引入 20 个额外的列将导致非常高的复杂性。

另一种方法涉及基于频率的标记。这里,我们给出现频率低于 50%的类标上 0,给出现频率高于 50%的类标上 1。可以更改阈值来检查它是否对所关注的度量有任何显著的改进。采用这些方法并没有带来任何显著的改善。

其他预处理

我们还删除了该列中缺失值超过 90%的列。此外,我们还删除了只包含一个唯一值的列。我们还从目标分布中排除了小于-2 的值和大于+2 的值。

特色工程

在这里,我们设计了一些新特性,并利用了 Kaggle 内核中建议的一些特性。一些工程特征如下。完整的列表可以在我的 GitHub repo 上找到,它的链接在 references 下面。

  • 税款多长时间到期
  • 每个 zip 中的属性数量
  • 每个县的房产数量,
  • 每个城市的房产数量
  • 属性值多项式

建立模型和参数整定

在本节中,我们将只讨论叠加概念,因为它是最小化平均绝对误差(评估指标)的最有用技术。所有的实现都可以在我的 git hub 账户上找到。

堆叠

这是一种特殊的方法,我们首先将数据集分割为训练和测试部分。然后,我们使用训练集来训练多个回归变量(基础学习者),并获得它们在测试集上做出的预测。然后,我们将预测的列垂直堆叠,我们将其视为特征,同时将最后一列中这些样本的实际值作为目标。现在,我们已经创建了一个新的数据集,并将其交给另一个回归变量(元学习者)来识别预测值和实际值之间的模式/关系。

当考虑参数时,有网络参数(超参数)、树参数和其他参数。为简单起见,我将只讨论神经网络方面的参数调整,即使基于树的参数也被调整为最佳结果。

Network parameter tuning

Other parameter tunings

结果和讨论

Performance of each implementation

根据我们上面使用的四种技术,很明显,堆叠提供了令人印象深刻的结果。CatBoost 等其他实现也很有前途。另一个有趣的观察是时间序列预测方法无助于改进模型,尽管它也是一个有效的解决方案。时间序列分析帮助最小的原因是,与所有在短时间内售出的房产相比,相似房产的销售发生的频率较低。这导致我们设计的时变特性已经过时,实际上扮演了离群值的角色来抵消任何改进,而不是帮助提高性能。还进行了交叉验证,以确保模型不会过度拟合数据集。

注意:关于竞赛、源代码和可视化的更多信息可以通过参考资料部分下的链接找到。

参考文献

[## EDA.py

使用数据绑定中的数据

www.kaggle.com](https://www.kaggle.com/tharindraparanagama/eda-py) [## TharindraParanagama/使用高级回归技术进行家庭价值预测

通过创建一个关于…的账户,为使用高级回归技术进行家庭价值预测的发展做出贡献

github.com](https://github.com/TharindraParanagama/Use-of-advanced-regression-techniques-for-home-value-prediction) [## 创建附加功能

使用 Zillow Prize 的数据:Zillow 的房屋价值预测

www.kaggle.com](https://www.kaggle.com/nikunjm88/creating-additional-features) [## 通过我的推荐链接加入灵媒

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

tharindrapara.medium.com](https://tharindrapara.medium.com/membership)

对缺失值使用 KNN

原文:https://towardsdatascience.com/the-use-of-knn-for-missing-values-cf33d935c637?source=collection_archive---------0-----------------------

更新

代码的主要更新,以提高计算加权汉明距离的性能。该方法从逐点距离计算改为矩阵计算,从而节省了多个数量级的时间。

访问代码:

Github 链接

问题:

在处理真实世界的数据时,您经常会在数据集中遇到缺失值。你如何处理它们对你的分析和你将得出的结论至关重要。

缺失值有三种常见类型:

  1. 完全随机缺失(MCAR): 当缺失数据为 MCAR 时,数据的有/无完全独立于感兴趣的可观测变量和参数。在这种情况下,对数据进行的分析是无偏的。实际上,这是极不可能的。
  2. 随机缺失(MAR): 当缺失数据为随机,但可以与一个变量完全相关,且有完整信息时。一个例子是,男性不太可能填写抑郁调查,但在考虑男性因素后,这与他们的抑郁水平无关。这种缺失数据会导致您的分析出现偏差,尤其是当您的数据因为某个类别中的许多缺失值而不平衡时。
  3. 非随机缺失(MNAR): 当缺失值既不是 MCAR 也不是马尔时。在前面的示例中,如果人们倾向于根据自己的抑郁水平不回答调查,就会出现这种情况。

在本教程中,我们将使用一种称为 k-最近邻(KNN)的非参数算法来替换丢失的值。该算法适用于前面三种情况中的任何一种,只要具有缺失值的变量与其他变量之间存在关系。

为什么用 KNN?

KNN 是一种算法,用于在多维空间中将一个点与其最近的 k 个邻居进行匹配。它可以用于连续、离散、有序和分类的数据,这使得它在处理各种缺失数据时特别有用。

对缺失值使用 KNN 背后的假设是,基于其他变量,点的值可以由与其最接近的点的值来近似。

让我们保留之前的例子,并添加另一个变量,人的收入。现在,我们有三个变量,性别(T0)、收入(T2)、抑郁程度(T4)和缺失值(T5)。然后,我们假设收入相似、性别相同的人往往会有相同程度的抑郁。对于给定的缺失值,我们将查看该人的性别、收入,寻找其最近的 k 个邻居,并获得他们的抑郁水平。然后我们可以估计出我们想要的人的抑郁程度。

KNN 参数校准

使用 KNN 时,您必须考虑许多参数。您将在下面找到本文提供的函数所允许的内容:

  • 要寻找的邻居数量。采用低 k 值会增加噪声的影响,并且结果不太具有普遍性。另一方面,采用高 k 值会模糊局部效果,而这正是我们想要的。也建议二进制类取一个奇 k** 避免平局。**

  • 聚合方法使用。在这里,我们允许数字变量的算术平均值、中值和众数以及分类变量的众数。

  • 归一化数据是一种方法,当计算某种类型的距离时,如欧几里德距离,该方法允许在识别邻居时给予每个属性相同的影响。当比例没有意义和/或比例不一致(如厘米和米)时,应该对数据进行规范化。它意味着对数据的先验知识,以知道哪一个更重要。当同时提供了数字变量和分类变量时,该算法会自动对数据进行规范化。

  • 数字属性距离:在各种可用的距离度量中,我们将关注主要的度量,欧几里德和曼哈顿。如果输入变量的类型相似(例如,所有测量的宽度和高度),欧氏距离是一种很好的距离测量方法。如果输入变量的类型不相似(如年龄、身高等),曼哈顿距离是一种很好的度量方法。

  • 分类属性距离:没有先验变换,适用距离与频率和相似度有关。这里我们允许使用两种距离:汉明距离和加权汉明距离。

    • 汉明距离:取所有的分类属性,对于每个属性,如果两点之间的值不相同,则计 1。那么汉明距离就是值不同的属性的数量。

    • 加权海明距离:如果值不同也返回 1,但如果匹配则返回属性中值的频率,值越频繁则增加距离。当多个属性是分类属性时,应用调和平均值。结果保持在 0 和 1 之间,但是与算术平均值相比,平均值向较低值移动。

  • 二元属性距离:这些属性通常是通过转换成虚拟变量的分类变量获得的。如前所述,对于连续变量,欧几里德距离也可应用于此。然而,也可以使用另一个基于相异度的度量,即 Jaccard 距离

为了确定用于您的数据的最佳距离度量,您可以使用上面给出的提示,但最重要的是,您必须进行实验,以找到最佳改进您的模型的方法。

在大型数据集上的测试

目标:预测哪位乘客在泰坦尼克号上幸存。你可以在 Kaggle 上下载数据。为了能够快速进行多项测试,我还下载了完整的数据集,包括每位乘客的名单以及他们是否幸存。

程序:

  • 为了构建一个简单的模型,我删除了“姓名”、“客舱”和“机票”这三列。
  • 然后,我发现两列缺少值,“年龄”和“上船”。第一个有很多缺失值,而第二个只有几个。对于这两列,我应用了两种方法:
    1-对数字列使用全局平均值,对分类列使用全局模式。
    2-应用 knn_impute 函数。
  • 构建一个简单的随机森林模型

简单逼近结果: 灵敏度= 66%;特异性= 79%;精度= 63%

KNN 用最佳模型插补结果: 灵敏度= 69%;特异性= 80%;精度= 66%

代码示例:

对于这个数据集来说,这两种方法之间的结果差异不是很大,但是在 Kaggle 比赛中,人们可以花很多时间来获得这几个额外的百分比。

如果你在其他数据集上测试这个函数,我期待着听到你的反馈,关于这个函数在帮助你改善结果方面有多大的帮助!

资源:

数据的价值

原文:https://towardsdatascience.com/the-value-of-data-99f75d2ee47c?source=collection_archive---------4-----------------------

世界各地的企业正迅速意识到,他们最大的商品在于他们收集和存储的数据。世界上最有价值的五家上市公司:Alphabet、亚马逊、苹果、脸书和微软受益于这一领域的垄断,科技行业内对利用和分享现有财富的担忧也在增加。然而,正如经济学家所强调的,“规模本身并不是犯罪。巨头的成功让消费者受益。很少有人愿意离开谷歌的搜索引擎、亚马逊的一日送达或脸书的新闻推送。当应用标准的反托拉斯测试时,这些公司也没有发出警报”。此外,应用程序和线下竞争对手形式的新进入者仍然能够产生重大影响,因此,数据的价值可能会继续飙升,但访问和受益的潜力也会如此。

数据的增长和价值增加

微软首席执行官塞特亚·纳德拉在接受爱尔兰时报采访时解释说,“当我在 1992 年加入公司时,互联网流量总量达到每天 100 千兆字节,”纳德拉说。“今天每秒钟产生 1750 万倍于此的流量。有史以来创建的所有数据中,有 90%是在过去两年中生成的。”随着科技行业多个领域的快速发展,数据生成和价值的增长速度预计将是广泛的,经济学家报告称,“有人估计无人驾驶汽车每秒将产生 100 千兆字节”。这种巨大的商业潜力几乎是不可估量的,有机会扩展到新的领域和整体价值大幅增加的基础上访问数据的公司。

一家公司滚雪球般增长潜力的想法在经济学家的报告中得到了进一步的证明:“如此丰富的数据改变了竞争的本质。科技巨头总是受益于网络效应:脸书注册的用户越多,对其他人来说注册就越有吸引力。有了数据就有了额外的网络效应。通过收集更多的数据,一个公司有更多的空间来改进它的产品,从而吸引更多的用户,产生更多的数据,等等。特斯拉从其自动驾驶汽车上收集的数据越多,就越能让它们更好地自动驾驶——这是该公司第一季度仅售出 25,000 辆汽车,现在比售出 230 万辆汽车的通用汽车更有价值的部分原因。大量的数据因此可以作为保护性的护城河。”

这对企业意味着什么?

1 需要熟练的数据专家才能解锁数据值

数据科学家能够识别企业中最有价值的数据,访问这些数据,并通过有效利用这些信息来满足企业的需求。根据 Vcloud News 的数据,存储数据的增长速度比世界经济增长速度快四倍,随着从价格比较网站到健康跟踪应用程序的激增,消费者继续向市场提供更多数据,为企业收获和利用这些数据做好准备。

Vcloud News 报道称,每天有大量行业产生 2.5 万亿字节的数据。许多公司尚未充分利用他们所拥有的数据的价值,而发掘这些丰富的信息可能是确保长寿、财政安全和业务扩张的关键。投资于技术娴熟、才华横溢的数据科学家来挖掘你的记录,可能是公司在数字时代采取的最有回报的步骤之一。通过利用数据科学家和统计学家的技能,可以根据您的业务需求以特定和定制的方式提取和使用相关的高价值数据。

2。数据安全性和合规性的处理

数据的价值如此之高,保护您的资产势在必行。通过为您的公司安排有效的安全和隐私计划,您将保护您的数据记录、客户的信任和您的工作效率。此外,数据泄露可能会对您的企业造成罚款,并可能会影响您吸引新客户的能力。

在国际上,数据的价值得到了广泛认可,政府和权威机构热衷于确保数据尽可能安全。通用数据保护条例(GDPR)是由欧洲议会、欧盟理事会和欧盟委员会制定的监管信息。GDPR 的建立是为了加强数据安全,并为欧盟国家提供统一的数据保护系统。GDPR 旨在通过“协调整个欧盟的数据保护法规,从而使非欧洲公司更容易遵守这些法规,将这种安全性扩展到非欧盟国家;然而,这是以严格的数据保护合规制度为代价的,严厉的处罚高达全球营业额的 4%。”这些法律将在未来一年内实施,企业必须被告知并准备好应对这些变化,以尽可能保持合规和安全。

接下来呢?

数据是 21 世纪的石油。最大的几家公司的市值超过了石油公司——前五大公司在 2017 年第一季度的净利润超过 250 亿美元。数据价值(和数量)的激增意味着所有企业都需要确保他们的数据治理完全合规,并且为了最大化这些数据的价值,他们需要合适的人来挖掘数据。那些从他们收集的数据中提取最大价值的人不仅证明了巨大的回报(亚马逊获得了美国在线支出的一半),还证明了巨大的竞争优势。

如果您想了解更多有关如何管理、挖掘和保护您的数据的信息,请与我们联系:【info@pivigo.com】T2

作为双人游戏的可变自动编码器(上)

原文:https://towardsdatascience.com/the-variational-autoencoder-as-a-two-player-game-part-i-4c3737f0987b?source=collection_archive---------3-----------------------

爱丽丝和鲍勃在自动编码奥运会上

Illustrations by KITTYZILLA

【免责声明:本系列文章的目的是使可变自动编码器和自然语言编码背后的基本思想尽可能容易理解,并鼓励已经熟悉它们的人从新的角度来看待它们。为了做到这一点,为了更好的叙述,我使用了一些艺术自由,有时可能会牺牲一点技术准确性。我奉劝没有任何技术背景的读者,凡事要半信半疑。]

第二部第三部

认识一下爱丽丝和鲍勃(还有查理)

人工智能领域,特别是深度学习的子领域,在过去几年里随着进步一直在爆炸式增长。一种特殊的方法,【生成模型】对这一进步贡献良多。

为什么生成模型在通往真正的人工智能的道路上有用,一个直观的论点是,可以生成现实数据的系统必须至少对现实世界有一些了解。

生成模型有多种风格。其中之一是所谓的 变分自动编码器(VAE) ,由 Diederik Kingma 和 Max Welling 于 2013 年首次推出

VAEs 有许多实际应用,而且还有更多的应用在不断被发现。

它们可以用来压缩数据,或重建噪声或损坏的数据。它们允许我们在真实数据之间进行平滑插值,例如,拍摄一张人脸的照片,然后逐渐将其变形为另一张人脸。它们允许复杂的数据操作,例如逼真地改变人的图像上的头发长度,或者在不改变任何其他声音特征的情况下平滑地将录音从男性变为女性。

更微妙的是,但在实践中最令人感兴趣的是,它们可以揭示大量未标记数据中隐藏的概念和关系。这将它们归入无监督学习算法的类别(与需要标记数据的监督算法相反)。

还有一组相关模型遵循与 VAE 非常相似的原则。例如,用于谷歌翻译的模型就是其中之一。如果你理解了这一系列的文章,你基本上也准备好理解谷歌翻译是如何工作的。

有许多很棒的博客文章用技术细节和代码解释了 VAEs 是如何工作的(例如这个那个),学术文献充满了对原始想法的无数解释、应用和扩展。

我在这里的目标既不是给你实际实现 VAE 的技术理解,也不是评论该领域的任何特定的最新发展。

相反,我想提供一种新的方式来观察 VAE 到底在做什么。我希望这种方式足够简单,你可以向你的祖母或小学生解释,同时不要遗漏太多的细节或过于松散。

即使你是该领域有经验的从业者或研究人员,我也希望这种略带古怪的解释能够激发一些新的创造性见解。

在这个由三部分组成的系列中,我们将首先探索第一部分中自动编码器的基础。在第二部分中,我们将看看为什么让它们变得有意义(以及这意味着什么)。最后,在第三部分中,我们将发现为什么编码文本特别具有挑战性。第一部分和第二部分实际上只是第三部分的基础。

(变化的)自动编码器的基本概念已经有了广泛的报道,从简单的介绍一直到学术论文。然而,对于第三部分中的概念,我到目前为止还没有遇到任何好的非学术讨论。我希望这个系列能够填补这个空白,并且在这个过程中教会你很多其他的东西。

我自己的背景是量子信息论。量子物理学家和信息理论家都喜欢通过将复杂的场景浓缩成简单的游戏来理解和解释世界。

例如,许多密码问题可以表述为发送者和接收者之间的游戏,其中恶意的玩家充当窃听者。或者看看我的前博士导师特里·鲁道夫的小书《Q 代表量子》,里面有很多简单易懂的量子游戏的例子。

在将我自己的研究重点从物理转移到人工智能之后,我花了很多时间思考和研究 VAEs。鉴于我的量子背景,把 VAE 看成一个游戏的想法很自然地产生了。

特别是,我把 VAE 看作是一个两人合作的游戏。**

不过在进入游戏细节之前,我们先介绍一下玩家。遇见爱丽丝编码器****

还有解码者鲍勃(不要和建造者鲍勃混淆)。

爱丽丝和鲍勃非常有抱负。他们的目标是参加新成立的自动编码奥林匹克竞赛,世界上最好的编码器-解码器组合在这里展示他们的技能。

为了准备比赛,爱丽丝和鲍勃邀请了他们的朋友评论家查理,他将评判我们两位选手的表现,并担任他们的教练。

现在我们来看看游戏规则。

自动编码游戏

正如我们将看到的,游戏有各种风格和规则,每一种都有自己的规则和目标。

我们将首先考虑游戏最简单的版本,所有后来的版本都将建立在这个基础上。在深度学习中,这个简单的版本对应于一个普通的(即非变分的) 自动编码器

基本思想是这样的:爱丽丝得到某种数据,例如图像、文本、音频剪辑等。然后,她必须将这一点传达给 Bob,Bob 没有看到数据,这样他就可以重建 Alice 看到或听到的内容。

Charlie(他确切知道 Alice 看到了什么)然后评估 Bob 的重建有多准确,并根据他的表现给他打分。

目标是让 Alice 和 Bob 获得尽可能高的分数,即 Bob 完美再现 Alice 获得的数据。

问题是爱丽丝和鲍勃彼此分离,只能通过一套特殊的设备以非常有限的方式进行交流。

特别是,爱丽丝不能直接解释她所看到的。她能传递给鲍勃的唯一信息是一串数字,一个“代码”

爱丽丝需要对数据进行编码。

允许她发送多少个号码被称为“码尺寸”“码尺寸”。在真实的 VAEs 中,代码维数通常可以达到数百。但是为了简单和易于可视化,让我们假设只有两个。这不仅仅是为了这个游戏而简化,而且在实践中当人们想要可视化代码时也是这样做的。

如果代码大小为 2,我们可以直接将代码解释为二维坐标系中的(x,y)坐标。

对于这个游戏的初始版本,我们还将假设 Alice 显示的数据是猫和狗的照片。有很多这样的数据,我们称之为训练数据。同样为了简单起见,让我们假设我们有一百万个训练图像。对于真实的数据集来说,这是一个相当低的平均数。

一些有代表性的例子可能是

因此,给定这些图像中的一个,Alice 必须向她的机器输入两个数字,比如说(2.846,-5.049),并将这个代码发送给 Bob。

鲍勃现在必须试着画出他认为爱丽丝看到的东西,除了这两个数字之外什么都没有。

听起来很难?

事实是,情况要糟糕得多!

我们都有一个概念,狗和猫是什么,它们长什么样,它们的行为如何,我们通常在什么环境中看到它们,等等。但是人工智能必须从零开始,没有对现实世界的先入之见,也没有什么图像是可能的或不可能的。

这就好像鲍勃和爱丽丝都是在一个封闭的房间里长大的,他们闭着眼睛,现在通过他们看到的照片第一次看到了真实的世界。他们完全没有“狗”或“猫”的概念,在游戏开始时,一张猫的照片对他们来说就像随机噪音或抽象画一样可能和真实。

他们甚至没有被告知这些照片主要包含了我们称之为“猫”和“狗”的东西。

而且困难还不止于此。虽然 Alice 实际上看到了真实的照片,但是 Bob 从来没有看到过真实的照片。他所看到的只是来自爱丽丝的代码。他只能根据这些神秘的数字随机作画。

但这正是我们的教练查理的重要性所在。每次 Bob 根据 Alice 的一个代码完成一幅画,Charlie 都会将其与原作进行比较,并为其分配一个分数(这个分数的专业术语是“损失函数】)。越准确,分数越高。

Charlie 不仅仅提供一个分数来告诉 Bob 他有多好(或多坏),他还告诉 Bob 他的哪些决定促成了这个分数,以及如何促成的。用专业术语来说,他为鲍勃提供了【渐变】。基于这些信息,Bob 可以调整他的过程,以便下次获得更高的分数。

因为 Bob 知道 Alice 的代码如何影响他的过程和最终输出,所以他也可以告诉 Alice 如何改进她的编码。在这种特殊情况下,为了得到更高的分数,他希望得到什么样的代码。例如,他可能认为“数字 1 应该小 0.043,数字 2 应该大 4.956”。

这是鲍勃和爱丽丝之间唯一允许的通信。我们称这个过程为【反向传播】,因为我们从最终得分开始,然后根据反馈调整导致得分的过程。

这种反向传播方法目前形成了训练大多数深度神经网络的基础,而不仅仅是 VAEs 或生成模型。

在调整他们的流程时,Alice 和 Bob 需要小心,不要因为一张照片而调整太多。如果他们这样做了,他们只会在之前给他们的图像上变得更好,然后通过过度调整到下一个图像来“覆盖”这一进步。

相反,他们需要根据每个反馈对他们的流程进行小的更新,并希望随着时间的推移,这些小的调整将积累成一个独特的流程,使他们在所有图像上获得良好的分数,而不仅仅是当前的图像。

他们根据每个单独图像的反馈调整过程的程度取决于所谓的学习速率。学习率越高,他们调整过程就越快。但是如果学习率太高,他们就有对每个新图像进行过度补偿的风险。

最初,由于 Alice 从未见过真实的照片,也不知道 Bob 想要什么代码,她所能做的就是给 Bob 发送随机数。

此外,鲍勃不知道这些数字意味着什么,也不知道他应该画出什么样的画。实际上,任何一幅画对他来说都和其他画一样有可能。从头到尾都是随机的。

但是在创作了许多都被查理打了糟糕分数的随机画作后,鲍勃开始注意到一些事情。

当他在画的中心使用某些颜色,而在边缘使用其他颜色时,他会得到稍高的分数。特别是当他在中间画一个灰色或棕色的有两个圆形的斑点时,他通常会得到比完全随机画更高的平均分。

Bob 对“毛皮”或“眼睛”没有概念,他只是发现大多数图片都包含有毛皮的动物,通常有两只眼睛。

以后记住这一点。在这里看似巨大的初步进展实际上会在稍后的第三部中困扰爱丽丝和鲍勃,当他们试图编码文本时。

此外,这种完全忽略爱丽丝的输入,只画两个圆圈的棕色斑点的方法只能让他到此为止。他卡住了,不能增加分数。他需要开始尝试使用 Alice 的代码,因为 Alice 没有从 Bob 那里得到任何有用的反馈,所以此时 Alice 的代码仍然是随机的。他需要开始将代码整合到他的创作过程中,并给爱丽丝一些线索,将她的编码引向正确的方向。

接下来的过程是爱丽丝和鲍勃的共同努力。Bob 首先学习哪些图像是真实的或可能的,然后 Alice 在 Bob 的反馈的帮助下,可以针对给定的输入将他引导到正确的方向。在 Bob 不了解这个世界的情况下,就像在游戏开始时一样,她将不得不为他指定图像的每一个像素。后来她可以带着少得多的信息(猫还是狗?棕色还是灰色?坐着、站着还是跑着?等等。)

作为对数据压缩的简短补充,让我们考虑一个普通版本的游戏。在这个版本中,代码维数与图像的像素数完全相同。

如果机器的输入槽与图像的像素一样多,Alice 可以简单地通过机器传输精确的图像。(假设是黑白的。对于一张彩色照片,我们实际上需要三倍的像素数,来编码每个像素的红色、绿色和蓝色值。)

Bob 只需要按照 Alice 的指示精确地绘制每个像素,就可以得到一个绝对完美的复制品,100%的几率。

一个稍微不那么琐碎的版本是代码大小是像素数的一半。

Alice 现在可以学习指定每隔一个像素,这是照片的缩减采样版本。Bob 只需要填充剩余的像素。假设他对真实世界有一个很好的概念,这就变成了一个相当琐碎的任务。这些图像不会 100%准确,但足够接近了。

但是爱丽丝和鲍勃不会永远摆脱这种“像素编码”。随着代码变得越来越小,比如在我们最初的游戏中减少到两个,如果他们想有任何成功的希望,他们必须改变他们的策略。

他们需要想出一种更智能、更“信息密集”的代码,而不是对像素进行编码。捕捉更抽象概念的代码,比如什么动物,什么姿势,什么拍摄角度,等等。

这是数据压缩的基础。我们越想压缩一段数据,我们需要设计的代码就越有效(我们就越有可能无法完全忠实地重建它)。

诀窍是将复杂的信息分解成几个尽可能简单和通用的概念,但仍然允许相当忠实的重建。

回到我们最初的游戏,Alice 和 Bob 已经玩了一段时间(我真的是指很长一段时间),并且已经用训练数据集中的每张照片玩了大约十次。鲍勃已经成为一名多产的画家,画了数百万幅画,爱丽丝已经成为一名专家信息编码器,并学会了向鲍勃提供代码,帮助他找出她看到了什么照片。

与最初的随机性相比,鲍勃对现实世界的想法有了显著的改善。

但是,请注意,Alice 和 Bob 只知道他们在训练图像中遇到的事情。对他们来说,另一种动物就像随机噪音一样不太可能出现(尽管他们可能会从以猫/狗为中心的世界观中发现眼睛、腿和皮毛等熟悉的概念)。

爱丽丝和鲍勃已经变得很擅长这个游戏,并开始获得相当高的分数。

学习到的代码

让我们简单地看一下 Alice 在训练中可能发现的那种代码。

由于代码由两个数字组成,我们可以很容易地将它们想象成平面上的 x 坐标和 y 坐标。

在一个可能的代码中,Alice 可能决定对猫使用负的 x 值,对狗使用正的 x 值。y 轴可以用于毛发颜色。正值较暗,负值较亮。

有了这个代码,如果 Alice 得到一张极其“狗样”的黑狗的照片,她会给 Bob 发送两个大的正数。如果她看到一只非常“猫”的白猫,她会发送两个大负数。对于一张照片,她几乎不能确定它是一只狗还是一只猫,皮毛颜色是中等黑暗,她发送两个接近零的值。诸如此类。

如果鲍勃已经知道这是爱丽丝正在使用的代码,这将允许他对他的画做出更好的猜测。

然而,尽管与完全随机的绘画相比,这是一个巨大的进步,但他的新绘画仍然包含许多随机性和猜测。他知道这是一只猫还是一只狗,也知道皮毛有多黑,但这种特殊的编码方式无法传递很多信息。

例如,Bob 不知道毛皮长度和图案是什么,动物处于什么姿势以及在图像的哪个部分,背景是什么,场景的照明是什么,...

他需要更多的信息来详细说明问题。这就是为什么真正的神经网络通常倾向于学习非常复杂的代码,在大多数情况下,这些代码没有简单的人类解释轴。这样他们就可以在这两个数字里塞进更多的信息。

如果你仔细想想,在一个简单的图像中确实有很多信息。如果你被要求寻找猫或狗,你会以一种特殊的方式看待图像,非常二元。猫还是狗?

另一方面,如果你被问及猫或狗是在城市还是在自然环境中,你会认为这些图片非常不同。爱丽丝和鲍勃没有被要求寻找任何特定的东西。他们没有这样的人文背景。他们只知道重建整个图像的任务。

然而,随着他们的学习,他们可能会自然地理解“狗”和“猫”这样的概念。但也有很大的可能性,人工智能会提出对我们人类完全没有意义的概念。更抽象和“有效”的概念。

因此,如果爱丽丝和鲍勃玩的时间够长,他们最终会同意使用这些更复杂的代码来捕捉高度抽象和有效的概念。

似乎他们掌握了游戏,对吗?

如果爱丽丝和鲍勃变得太“聪明”会怎么样

嗯,没那么快。他们需要小心。有变成“太优秀”的风险。

在查理的帮助下,爱丽丝和鲍勃目前正在为自动编码奥林匹克进行训练。在训练过程中,他们用同一套照片反复练习。

但是将在奥运会上使用的照片是一个严格保密的秘密。他们不会看到它们,直到他们在比赛时间真正开始做它们。

那时,他们可能会意识到他们有麻烦了。

他们没有理解“狗和猫照片的一般世界”,而是学会了完美地记住他们训练集中的所有照片。

事实证明,他们实际上没有发现我们在上一节中讨论的任何概念。他们基本上只是想出了一种作弊的方法来在他们的训练图像上获得满分,而实际上没有任何真正的理解。

这个问题在深度学习中非常普遍,被称为 过拟合

就像一个学生偷了一个测试的答案,然后记住这些答案,而不是真正学习这个主题,一旦过度适应,爱丽丝和鲍勃对他们遇到的例子有 100%的信心,但对其他任何事情都没有任何线索。

将这一点发挥到极致,如果 Alice 和 Bob 非常“聪明”,有很大的记忆力,并被允许训练很长时间,他们实际上可以学习将他们训练数据集中的任何图像完美地编码成甚至只是一个数字,不管有多少图像。

他们怎么能这样做?

有无限多的代码允许它们这样做,但让我们考虑一个特别简单的。

我们先前假设正好有一百万个训练图像。有了这些知识,他们可以同意从第一个 0.000001 开始编码,第二个 0.000002,以此类推,直到第一百万个 1.000000。对于每张图片,他们只需确定一个唯一的编码。

在这段代码中,连续编号的图像在代码上非常接近,但是图像之间没有任何相似之处。图像 156 可以是一只在客厅玩球的黑狗,而图像 157 可以是一只在草丛中追逐老鼠的白猫。

每当爱丽丝看到图像 156,她只是发送 0.000156。鲍勃已经确切地知道了他需要画什么才能得到满分。类似地,当他看到 0.000157 在他的机器上闪烁时,他已经知道该画什么了。

他们 100%的时候都得了满分。

但是如果鲍勃看到 0.0001565 呢?还是-0.000001?还是 1.000001?

完全不知道。

类似地,如果 Alice 突然看到一个她以前从未遇到过的新图像,她会如何将它放入现有的代码中,以便 Bob 可以立即做出明智的猜测?

同样,完全不知道。

这不是学习,也不是理解。纯粹是死记硬背。

每一个小小的变化,每一个微小的陌生,都会让他们完全不知所措。

我们需要阻止他们达到这个阶段,而不是加强理解。

如果做得正确,他们可能在某种程度上仍然记得他们以前遇到的例子,但也学会了一般原则,允许他们对他们以前没有见过的事情进行推理。

这被称为 泛化 ,几乎是任何深度学习算法的核心标准之一。

防止这个问题的一个方法是,在基本理解让位于记忆之前,尽早停止训练,这是人们长期以来一直采用的方法(并且仍然与更复杂的方法一起使用)。

但是在自动编码器的情况下,有一个更好的方法来确保实际的理解和有意义的代码。

在第二部分中,我们将看看 Alice 和 Bob 如何应对他们的失败,并看看一种新的训练方法,即使用所谓的变分机器,如何帮助他们提高性能,并提出有意义的代码,以推广到以前从未见过的数据。

作为双人游戏的可变自动编码器(下)

原文:https://towardsdatascience.com/the-variational-autoencoder-as-a-two-player-game-part-ii-b80d48512f46?source=collection_archive---------7-----------------------

变奏回归自动编码奥运会

Illustrations by KITTYZILLA

欢迎阅读这个关于可变自动编码器及其在文本编码中的应用的三部分系列的第二部分。

在第一部分中,我们跟踪了两位选手爱丽丝和鲍勃,他们正在为自动编码奥运会进行训练。我们学习了自动编码器的基础知识,以及一般的深度学习,以及 Alice 和 Bob 可能学习的代码类型。

我们还看到,传统的自动编码器存在记忆的风险,而不是真正的学习。这最终导致爱丽丝和鲍勃在奥运会上遇到了他们从未见过的数据,搞砸了他们的表现。

引入变分自动编码器(VAE)

由于在自动编码奥运会上的灾难性表现,Alice 和 Bob 沮丧地回到家中,重新组织起来,思考如何在下一届奥运会上改变他们的方法。

因为他们的经历是如此的灾难性和尴尬,没有得到哪怕是一点点正确的测试图像,他们决定完全从头开始。

因此,爱丽丝和鲍勃扔掉了他们想出的代码,开始了一场史诗般的饮酒狂欢,彻底抹去了他们迄今为止从头脑中所学到的一切。

白板。

他们的头脑又完全空白了。就像我们第一次见到他们时一样。

在从同样史诗般的宿醉中恢复过来后,他们决定将他们的自动编码设备升级到他们最近听说的更新型号。一个 变型

变分模型仅推荐用于专家编码器/解码器对。这只是为了训练。这实际上增加了这个过程的难度。但是爱丽丝和鲍勃毕竟想在他们的游戏中处于领先地位。

没有痛苦就没有收获。

最初的设备实际上只是一对分别用于代码和反馈的发送器和接收器。新设备略有不同。让我们看看它们是如何工作的。

爱丽丝仍然输入她认为最有可能的代码。但是除此之外,她还要进入一个不确定性!

基于这一点,机器不会直接将 Alice 最有可能输入的值转移给 Bob。相反,它根据她输入的分布选择一个随机数。

它随机采样爱丽丝的代码分布。

所以 Bob 仍然只能得到每个代码维度的一个数字。但是在从爱丽丝的机器转移到鲍勃的机器的过程中,这个数字现在已经获得了一点随机性。

事实上,原始论文介绍 VAE 的主要贡献之一是一个技巧(称为“重新参数化技巧”),它允许 Bob 向 Alice 提供有用的反馈,尽管不知道 Alice 选择的确切值,但只知道机器传递给他的随机值。

原则上,Alice 仍然可以选择输入非常低的不确定性,这样 Bob 几乎肯定会得到她想要传输的确切值。

但问题是查理变得更严格了。

他现在也从他们的得分中减去了一个点球。爱丽丝选择的不确定性越小,查理施加的惩罚就越大。

如果 Alice 确信,即使一个值与她期望的值很接近,也能传达所有的信息,她可以选择更高的不确定性,牺牲更少的分数。

另一方面,如果代码需要非常精确地将图像传达给 Bob,Alice 需要选择低不确定性。这样,即使 Bob 完美地重建了图像并为他们赢得了满分,他们也会因为不确定性惩罚而失去很多。

这迫使 Alice 和 Bob 对他们选择的代码更加明智。面对微小的变化,它需要更加健壮。即使代码在传输过程中被扭曲了一点,Bob 仍然应该画出一幅相当相似的画。

理顺代码

让我们再来看看只用一个数字编码的极端例子。

我们在第一部分中看到,没有不确定性,Alice 和 Bob 可以学习将唯一的代码编号与他们的每个训练图像相关联,基本上记住了他们的整个训练数据集。

在一个特定的代码中,Alice 可以用 0.000001 分隔的代码对连续编号的图像进行编码。图像 156 对应于代码 0.000156,图像 157 对应于 0.000157,依此类推。不管这些图像实际包含什么。

如果鲍勃得到了准确的数字,他已经通过多次反复试验和错误,准确地了解了他要画的相应图像。

问题是这会在代码中产生“漏洞”。Alice 从不在例如 0.000156 和 0.000157 之间的空间中编码任何东西。因此,这些间隙中的任何数字,比如 0.0001561 或 0.0001568,对鲍勃来说都是毫无意义的。

当然,他可以向上或向下舍入到与图像相关的最接近的数字,但这将意味着他们的代码在 0.0001565 这样的地方有一个急剧的转变。代码中最微小的变化可能意味着鲍勃不得不描绘一个完全不同的形象。

他们的代码并不流畅

如果没有进一步的训练和修改,它也不能用于编码不熟悉的图像。这就是导致他们在第一部中失败的原因。他们的代码没有通用。他们过度适应训练数据。

然而,随着 Alice 开始使用少量的不确定性,她开始“填补漏洞”,稍微平滑他们的代码。

如果她想发送图像 156 并输入 0.000156,有一点不确定性,Bob 将得到一个与之接近的数字,但很可能不完全相同。

当他们用同一个图像玩同一个游戏很多次时,即使 Alice 的代码没有改变,Bob 仍然会看到与每个图像相关的几个略有不同的数字。

这已经帮助他们减少了对精确数字的依赖。

但是如此小的不确定性仍然伴随着高额的罚款!

如果他们真的想成功,并从 Charlie 那里得到一个好的总分,他们需要想出一个对更高的不确定性健壮的代码。

如果 Alice 仍然想以 0.000156 编码图像 156,以 0.000157 编码图像 157,她最好确保这两幅图像几乎相同,除非他们想通过选择微小的不确定性来牺牲大量的分数。

因此,除非这两个图像实际上非常相似,否则这段代码非常浪费,应该避免使用。

如果不确定性不是明显小于 0.000001,则有相当大的可能性,即使 Alice 想要编码图像 157,机器实际上也将她为图像 156 选择的代码发送给 Bob。或者更不同的东西。

那么,即使鲍勃理解了爱丽丝的理想代码,他仍然会画出错误的图像。如果他们想获得高分,同时保持较低的惩罚,他们必须学会用相似的代码对相似的图像进行编码。

走向有意义的代码

回到二维码的完整游戏,我们也可以用稍微不同的方式来思考这个问题。Alice 不再将每张图片编码成二维平面上的一个点,而是将它们编码成小污点。污迹越小,惩罚越高。

你可以在一个很小的空间里塞进无限多的点。

另一方面,污迹将很快开始重叠,所以你最好确保重叠有点意义。

使用这种新机器和查理更严格的评分可以防止他们只是记住训练数据。他们需要给他们的代码赋予实际意义。

这迫使他们想出一个平滑的代码,或者说连续的,所以“代码空间”(也叫“潜在空间” ) 中的相邻区域对“数据空间”中非常相似的图像进行编码。这样,他们就不会牺牲太多的分数,因为他们必须非常准确地指定分数,而且不确定性很低。

这自然会导致在代码空间聚类

他们学到的改进代码包含了更多的意义。代码实际上包含了更多抽象的想法,而不是直接编码图像,这既浪费又脆弱,就像我们在第一部分中讨论的那样。

在一个区域,我们可能会在照片的右下角发现白色吉娃娃的图像,在另一个区域,在照片的中心是所有黑猫玩球的图像,等等。所有过渡都尽可能平滑,以便相邻图像尽可能相似。

暂时离开爱丽丝和鲍勃的世界,劳伦斯·范·德·马腾和杰弗里·辛顿为著名的 MNIST 数据集制作了这种聚类的可视化效果(尽管使用了一种非常不同的技术,称为 t-SNE ),该数据集包含许多不同的数字 0 到 9 的图像。

我们看到相似的数字聚集在一起,例如左下方的零。但更重要的是,在每个数字群中,我们看到相似的风格(如倾斜、笔画宽度等)聚集在一起。

回到爱丽丝和鲍勃。

带着从变化训练中获得的新经验,他们回到了下一届自动编码奥运会。在这里,他们简单地回到他们的老策略,Alice 直接传递代码,没有任何不确定性。

但至关重要的是,他们使用通过变分训练学到的新代码。

训练得到了回报!

有了这个代码,他们在训练中从未遇到过的王牌图像,并彻底摧毁他们的竞争对手。

游戏时间

为了庆祝他们的胜利,他们把学到的代码玩了一会儿。他们发现了一些现在可以表演的非常有趣的把戏。

第一个允许他们在真实照片之间平滑地插值。

他们可以对两幅真实图像进行编码,分别得到一个代码,然后通过中间代码让 Bob 解码,从一幅图像平稳地转换到另一幅图像。

举个简单的例子,让我们假设他们用人的图像重复训练,然后对他们自己的照片进行编码,一张是爱丽丝的,一张是鲍勃的。为了便于举例,我们假设这些代码恰好是 Alice 的(0.0,3.0)和 Bob 的(6.0,0.0)。

他们现在可以不断地在它们之间转换。

假设他们解码了两幅等距的中间图像。这些中间图像将位于(2.0,2.0)和(4.0,1.0)。

当鲍勃解码它们时,他们看到在(2.0,2.0)处的照片基本上是 66.6%的爱丽丝和 33.3%的鲍勃,而在(4.0,1.0)处的照片具有相反的比例,33.3%的爱丽丝和 66.6%的鲍勃。

但重要的是,它不仅仅是原始照片的叠加,就像你可以在 Photoshop 中轻松完成的那样。这真的是一张“三分之一是爱丽丝,三分之二是鲍勃”的人的照片。

通过这种方式,VAEs 允许创建真实世界中不存在的绝对逼真的数据。例如,我们可以对自己和伴侣的照片进行编码,并在它们之间进行插值,以猜测我们的孩子可能长什么样(假设他们也是某种性别混血儿)。

对于照片插值的真实例子,请查看这个名人面孔间插值的极度迷幻视频

而且这不仅限于图像。正如我们将在下一部分看到的,我们也可以对其他类型的数据进行编码。我们可以想象对我们喜欢的两首歌进行编码,然后听听这两首歌之间的各种插值听起来会是什么样子。或者像 Magenta 团队在他们的 NSynth 项目中展示的那样,我们可以在不同的乐器之间进行插值。

所有这些也打开了巨大的艺术机会。对于一些很棒的例子,看看哈德曼鲁在人造草图之间的插值以及他的许多其他作品。他的 Instagram 账户是人工智能生成艺术的一个很好的来源,使用的技术与爱丽丝和鲍勃正在使用的非常相似。

他们发现的另一个有趣的技巧是,通过稍微修改他们的训练过程,他们实际上可以给他们的一个或多个代码维度赋予特定的含义。这类似于我们在第一部分中讨论的简单的狗/猫和黑/白代码,其中两个维度都有明确的人类可解释的含义。

例如,他们可以用一维编码胡须长度的特殊属性。

让我们假设他们使用第一维度来表示胡子长度,0 表示没有胡子,数字越大,胡子越长。

爱丽丝再次对自己的图像进行编码。自然,爱丽丝不是一个有胡子的女士,这是第一个代码值 0.0。

让我们假设它恰好在这个新代码中以(0.0,4.0)编码。鲍勃现在可以做一些有趣的事情了。他可以画出与(X,4.0)处的代码相关联的图像。X 越大,胡须越长,而保持其他代码维度固定将保持图像的“生动性”。所以他基本上可以现实地预测出爱丽丝留着各种长度的胡子会是什么样子。

关于这方面的真实例子,看看陈曦和他的合作者提出的 InfoGAN 产生的数据。本文使用不同的生成模型,即所谓的生成对抗网络(GAN ),但基本思想是相同的。艺术水平有了巨大的提高,可以生成的图像变得更加详细和真实,但这是开拓这一想法的早期论文之一。

那很有趣!但是玩够了。爱丽丝和鲍勃需要再次集中注意力。他们心中已经有了新的目标!

在这个系列的最后部分,我们将跟随他们的旅程回到自动编码奥运会。这次是在一个新的领域:文本编码。

作为双人游戏的可变自动编码器——第三部分

原文:https://towardsdatascience.com/the-variational-autoencoder-as-a-two-player-game-part-iii-d8d56c301600?source=collection_archive---------5-----------------------

文本编码的困难

Illustrations by KITTYZILLA

欢迎回到这个关于可变自动编码器(VAEs)及其在文本编码中的应用的三部分系列的最后一部分。

在第一部分中,我们遇到了爱丽丝和鲍勃,他们正在为自动编码奥运会做准备。在跟踪他们的培训过程中,我们了解了自动编码器的概念和深度学习的一些基础知识。

不幸的是,由于我们发现的一些训练问题,我们不得不看着他们在争夺金牌的过程中悲惨地失败。

然而,他们在第二部中成功挽回了自己。通过遵循一种被称为可变自动编码的特别困难的训练方案,他们设法克服了自己的问题,重返奥运会,在比赛中占据主导地位,并取得了决定性的胜利。

现在让我们在爱丽丝和鲍勃带着他们的金牌回家后重新加入他们。

进入一个新领域:文本编码

艾丽斯和鲍勃因他们的胜利而欣喜若狂。但是他们很快开始寻找新的挑战。

他们决定在下届奥运会上设立一个新的项目。这门学科要求他们不是编码图像,而是编码句子。于是鲍勃挂上画笔,抓起一支笔,爱丽丝开始看书。

游戏的基本规则本质上还是一样的。

Alice 必须阅读一个句子,她需要将这个句子编码并发送给 Bob,Bob 然后必须尝试从 Alice 的代码中重建这个句子。

我们必须再次记住,就像《T4》第一部中的图像案例一样,我们的 AI 爱丽丝和鲍勃对语言完全没有先入为主的概念,甚至连单个单词的意思都没有,更不用说复杂的句子了。

最初的那句“一个高个子站在路边。”对他们来说就像“教堂娃娃后悔湖手无寸铁的机器变得像结一样”

他们的基本工具箱是所谓的词汇。他们能玩的一套单词。

问题是他们不知道这些单词的意思,也不知道如何将它们组合成有意义的序列。

这就好像给了他们一本字典,但没有任何解释。只是一长串英语单词。(并不是说这些解释会有所帮助,因为这些解释本身是由对我们的玩家来说还没有意义的相同单词组成的。)

再一次,爱丽丝和鲍勃必须从头开始理解外部世界,通过他们与提供给他们的句子和鲍勃从他们的教练查理那里得到的反馈的互动。

不过,在这个游戏的变体中,查理判断鲍勃预测的方式略有不同。

以前查理等待鲍勃画出整个图像。

另一方面,他不会等鲍勃说完整个句子。相反,他给鲍勃一个分数,并在他预测的每一个单词后给出反馈。

更重要的是,查理告诉鲍勃什么是正确的词。

这极大地简化了 Bob 的任务。他可以一次预测一个单词,而不是只根据爱丽丝的代码来预测整个句子,而是依靠他已经看到的单词来完善他对下一个单词的预测。

开发语言模型

我们每个人都有一个内置的(或者说是习得的) 语言模型。

考虑句子片段“狗追着…

你认为下一个单词是什么?要确定这一点,您只需调用您自己的语言模型。

鉴于不同的背景和经历,不同的人有不同的语言模型,但在这种情况下,我敢打赌,几乎每个人都会猜到“猫”。

但是,如果我现在告诉你,这句话取自一个关于外星人入侵的古怪科幻故事,会怎么样呢?

你可能仍然认为“猫”是最有可能的,但是你可能不再那么肯定了。或者你甚至可能期待一些不同的东西。你把你的语言模型建立在我给你的额外信息上。

这种条件反射正是 Bob 想要获得高分所需要学习的。特别是,他需要将 Alice 的代码作为他的语言模型的条件。Alice 再次需要想出一个聪明的方法,在允许她发送给 Bob 的两个数字中传达尽可能多的信息。

问题是,由于 Charlie 提供反馈的方式,Bob 实际上可以在游戏中变得相当不错,而无需调节他的语言模型。

就像上面的例句一样,在很多情况下,猜测“猫”是正确的,从而得到一个好的分数。只有在少数异常的句子中,这才是错误的猜测。

但是一个语言模型,如果没有条件,可能会产生误导。

让我们假设 Bob,在 Charlie 的纠正下,到目前为止已经猜出了文本片段“狗追赶…”并看看接下来会发生什么。

我们假设完整的句子是“狗从半人马座阿尔法星追逐艳丽的宇宙飞船”。等到鲍勃猜出最后一个词的时候,他的语言模型可能已经从“华丽的宇宙飞船”的最初震惊中恢复过来,他可能会对“半人马座”做出合理的猜测,即使没有对爱丽丝的代码进行限制。但是整个句子的总分已经很糟糕了。

考虑到允许的有限信息流,诀窍在于 Alice 准确地编码她认为让 Bob 感到惊讶的那种信息,并让他依靠自己的语言模型处理其余的信息,同时也希望他实际上首先使用了她的信息。

这就是信息理论家所说的高效代码

准确编码最令人惊讶的东西,省略其余的。

这也与你可能在各种场合听说过的的概念密切相关。但是对它的彻底讨论本身就需要很多文章。

在过去,人们曾试图为各种各样的问题手工编写有效的代码。但现在,如果训练正确,像 VAEs 这样的模型实际上可以自动找到非常复杂问题的高效代码。

请注意,在现实中,解码器实际上并不是在每一步都只预测一个单词。它实际上预测了词汇表中每个单词的概率。

因此,虽然在示例中 Bob 可能给了“cat”99.9%的概率,但他也给了他知道的每个其他单词有限的概率,包括正确单词“flamboyant”的 0.0000037%的概率。

这就是为什么我们的评论家查理给鲍勃一个精确的分数。如果他把 100%的概率分配给正确的单词,他就只能得到满分。他给出正确答案的概率越低,他的分数就越差。

听起来不错,不是吗?Bob 只需要根据 Alice 的代码设置他的语言模型,然后它们就都被重新设置了,对吗?

爱丽丝的挣扎

嗯,是的。但是……事实证明,在这个新的领域里,爱丽丝相当挣扎。

在猫和狗图像的情况下,我们在第一部分中看到,Bob 可以在不参考 Alice 的代码的情况下获得一些早期的胜利(用两个更小的圆形斑点作为眼睛来绘制一个灰色/棕色斑点)(由于缺乏 Bob 的反馈,当时仍然是随机的)。

但这并没有让他走得很远。很快他就被卡住了,需要弄清楚如何使用爱丽丝的代码。

然而,在这个新的学科中,Bob 实际上可以在不考虑 Alice 的代码的情况下玩得相当不错(因此没有给 Alice 任何有用的反馈)。

同样,在第二部分中,我们注意到在可变设置中,代码传输的更高精度是以更高的惩罚为代价的。

现在,由于 Alice 意识到 Bob 无论如何都没有使用她的代码,她认为她还不如增加不确定性,这样他们就不会因为准确发送一个毫无用处的代码而支付额外的罚款。

如上所述,最初 Bob 和 Alice 都没有任何语言模型。文字对他们来说只是一堆乱七八糟的东西。

但是在很早的时候,通过计算单词的出现次数,Bob 可能会意识到“the”或“A”是句子开头最常见的单词,所以他可能会以这些单词开始每个句子。

仅从词频来看,这些是最常见的词。所以一开始 Bob 可能会想出一个策略,一遍又一遍地重复同一个单词(“the the the the the”),因为他注意到这给了他比随机猜测更高的分数。

但是很快他会注意到“the”后面通常是一个名词。英语中最常见的名词之一是“时间”,所以作为第一个改进,鲍勃可以学习说“时间时间时间…”。

慢慢地找出这些越来越长的常用单词组合,Bob 建立了他的语言模型。

他学习英语的统计学。

或者至少是在他们的训练数据中使用的特定语言。在推特上训练的语言模型和在圣经上训练的语言模型是非常不同的。

当鲍勃被自己卡住,不能再提高分数时,他已经学到了很多,而爱丽丝仍然停留在最开始。

爱丽丝学习起来要困难得多。

Bob 在预测每一个单词后都会得到直接反馈,而 Alice 在理解整个句子时得到的唯一反馈来自 Bob 发给她的两个反馈号码。

如果 Bob 根本不使用她的代码,他也不能给她有用的反馈。

因此,Alice 基本上只是从 Bob 那里获得随机噪声来改进她已经随机的代码。

由于 Bob 甚至没有得到 Alice 的实际理想代码选择,而是一个带有一些额外不确定性的值,所以变化的设置使这变得更加复杂。

已经随机的代码被进一步随机化。

所以现在 Bob 自己已经相当不错了,而 Alice 还没有学到任何东西,我们有陷入所谓的局部最大值的风险。

鲍勃得到了一个他自己无法提高的不错的分数,但每次他试图听爱丽丝的话并使用她发给他的代码来影响他的预测,他们的分数就变得更差。

学习过程类似于没有地形图的登山者在浓雾中寻找顶峰。

他们唯一能做的就是沿着最陡的方向向上走。一旦他们到达一个点,任何方向下山,他们认为他们到达了最终的顶峰。但他们不知道,如果他们只是下山一小会儿,他们就可以到达更高的山峰。

因此,鲍勃,就像一个认为自己已经完成攀登的登山者一样,放弃了通过使用爱丽丝的代码来改进的尝试。

他的过程已经非常精炼,以至于它对试图将他的语言模型限制在代码上所引入的变化非常敏感。

他不知道的是,如果他可以牺牲他们的分数一小会儿,并尝试使用代码和给爱丽丝一些反馈,他们可以摆脱困境。

爱丽丝可以学到足够的东西,为鲍勃提供有用的代码,使他能够做出比自己更准确的预测。

但是鲍勃太近视太自信了,不会牺牲他们的分数。

恢复平衡

我们如何帮助 Alice 完成说服 Bob 使用她的代码并提供良好反馈的艰巨任务?

这个问题在学术界已经存在一段时间了。自从人们开始在文本上使用 VAEs 并遇到这个问题。

而且还是没有完全解决。但是已经出现了许多想法,使得文本的变分自动编码足够好,可以在实践中使用。

就像在第二部分中引入变量方面使自动编码变得更难,但提高了性能,所以这里的大多数策略也包括使问题看起来更难,而不是更容易。

特别是,人们试图让 Bob 的任务更具挑战性,这样他就不能在学习方面轻松超过 Alice。

有一种方法,叫做“单词退出”,让我们的评论家查理有时保持沉默。

他仍然总是给 Bob 的单词预测评分,但他不时地不透露正确答案,给 Bob 自己的语言模型提供更少的信息。

让我们再来看一下例句“狗追着……”。让我们假设查理对第二个词保持沉默。所以对鲍勃来说,这个句子现在看起来像是“The …追赶 the…”。

我敢肯定,你自己的语言模型在信息不完整的情况下预测这个句子的下一个单词要困难得多。

鲍勃也是如此。他开始从爱丽丝的代码中寻找线索。

在改变查理的行为方面,其他方法甚至更加激进。

在其中的一个中,查理没有在鲍勃说完每个单词后给他打分,而是等鲍勃说完整个句子后再给他任何反馈。

这类似于 Charlie 在 image 案例中所做的(实际上 Bob 使用的神经网络架构也与 image 案例非常相似,都使用了卷积神经网络)。

这样 Bob 基本上不能依靠他自己的语言模型,因为他不知道他对句子的预测一开始是否正确。

这给了他一个很大的激励,让他很早就向 Alice 咨询更多的信息。

实际上,这种方法并不太成功,任务对 Bob 来说变得太难了。

但是它还没有被完全抛弃。它仍然是一个活跃的研究领域。

最成功的方法(例如,从 膨胀卷积 构建鲍勃的大脑,而不是更常见的递归神经网络)实际上并不旨在使任务本身变得更难。相反,他们让鲍勃变得更笨,或者更健忘。

如果我们以正确的方式让鲍勃变得更笨,本质上是让他有轻微的学习障碍,我们基本上给了处于不利地位的爱丽丝一个跟上鲍勃进步的机会。

想象一下,例如鲍勃·格特非常健忘。

可怜的鲍勃现在一次只能记住两个单词。在一句话的中间,他已经不知道它是如何开始的了。

我们的例句现在对他来说就像“…追逐…”。

错过了这个重要的上下文信息,他急切地寻找任何可以帮助他理解下一个单词的信息。他高兴地转向爱丽丝的代码。

这种方法(尽管相当复杂)已经被证明在确保 Alice 和 Bob 同步学习并且不陷入局部最大值方面非常成功。

起初,他们的分数比鲍勃还聪明时上升得更慢。但最重要的是,它一直在上升,没有被卡住。

还有一种方法(称为 KL 成本退火 ) 可以与任何其他方法结合使用,它考察了 Charlie 因代码的不确定性而惩罚 Alice 的方式。

正如我们在第一部分第二部分的图像案例中看到的,使用变分机器对于学习训练数据集之外的示例至关重要。但这也增加了爱丽丝向鲍勃传递有用信息的难度。

新方法允许 Charlie 灵活地决定如何惩罚 Alice,因为她使用了一个小的不确定性。

一开始,当他们还没有学到任何东西时,Charlie 非常宽容,允许 Alice 指定她想要的精确代码,而没有任何惩罚。

但是随着训练的进行,查理逐渐加大了惩罚力度。

正如我们所看到的,这可能会导致代码中的“漏洞”,即 Bob 不知道如何解码的代码空间区域。但是后来,随着我们重新引入惩罚,Alice 开始使用更高的不确定性,他们将自然地不得不学习平滑他们的代码并使漏洞消失。

爱丽丝基本上得到了一个适应她学习曲线的惩罚。

特别是,这个任务不再那么困难,以至于她没有学到任何东西。

这一点,再加上降低鲍勃的智商,使得他们能够非常成功地对文本进行编码。

那么他们可能会学习哪种代码呢?

Bob 需要根据 Alice 向他提供的内容来设定他的语言模型。

即使他们只找出一个简单的代码,其中某些代码区域告诉 Bob 该文本是一条 tweet,其他代码区域是一篇新闻文章,还有其他的餐馆评论,也可以极大地帮助 Bob 更好地猜测下一个单词。

由于 Bob 也不知道什么时候真正停止他的预测,Alice 可能也会学习对句子的长度进行编码。

就像第一部分中的图像示例一样,一个轴上是狗/猫,另一个轴上是黑暗/光明,他们可能会学习一个简单的代码,在一个维度上编码句子长度,在另一个维度上编码“正式程度”。

再一次,随着训练的继续和两人的共同学习,他们可能会找到更聪明(也可能不太容易解释)的方式来编码这两个数字中的大量信息。

我们也看到了代码应该是平滑和连续的。

这意味着如果 Alice 想编码一个句子并且不使用太低的不确定性,她需要确保她的代码是健壮的。

例如,她应该对句子“我去了他的家”和“我去了他的公寓”使用非常相似的代码,这样当鲍勃解码时,将一个代码改变为另一个代码的随机性不会产生太大的后果。

然而,句子“学习中的这种有问题的趋势由于 LSTM 解码器对隐藏状态中的细微变化的敏感性而加剧,例如由后验采样过程引入的变化”应该具有非常不同的代码。

不小心发送了“我去了他家”而不是“我去了他家”会导致查理的分数很低。

在改进了他们的训练过程和代码之后,Alice 和 Bob 再次从自动编码奥林匹克中凯旋而归。

接下来呢?

还有很多其他学科,比如音频编码。

也有完全不同的任务,它们不是严格的自动编码,但仍有许多相似之处,例如翻译,Alice 用一种语言编码,Bob 用另一种语言解码。

听起来更棘手,的确如此!

但是在这种情况下,有稍微不同的规则允许 Bob 使用所谓的【注意】

实质上,除了爱丽丝发给他的整个句子的代码,他还可以向她要一个他需要预测的每个新单词的“额外代码”。这种技术基本上是谷歌翻译近年来变得如此优秀的原因。

文本摘要也是一个密切相关的学科。在这里,Alice 对一个长文本进行编码,Bob 必须将其解码为摘要。

还有无数更多的训练方法,包括尚未发现的方法,将帮助他们跟上他们已经掌握的学科中日益激烈的竞争。

但是现在,爱丽丝和鲍勃需要休息。

为什么只剩下“供应商易燃性酸性测试”

原文:https://towardsdatascience.com/the-vendor-flamability-acid-test-e56dc0587da5?source=collection_archive---------4-----------------------

Picture from the brilliant Halt and Catch Fire, which you should watch if you haven’t.

TL;DR — 对于安全团队没有亲眼目睹过被尝试、测试和证明的任何事情,他们的起点 90%都是废话。

坦率地说,在“网络、风险、分析和大数据”这些词交叉的地方进行竞争分析令人沮丧。为什么?因为即使在营销信息的层面上,你也是在为 50 个供应商挑选网站文案,他们都试图通过说同样的话,使用同样的词语来区分自己。

"我们做机器学习网络风险优先级分析(如果你愿意,可以在云中!),用 AI 什么的。看看我们的客户标识。我们已经安装了很多。在这里签名!”

乐叹。

也许我对此缺乏耐心是因为我最近在纽约呆的时间更长了。英国口音依然存在,但弥漫在这座城市的“开门见山”的心态——当然也包括它的安保团队——已经渗透进来。

我在这里遇到的一些 sec 运营团队告诉我,他们每周在看到大约 10 家新供应商(最有希望的是“ML this”或“AI that”)。因此,他们理所当然地无情地采取最短的路径来判断你的技术是否可行,他们喜欢它的谈话,或者它是否是可以行走的易燃 BS。

几周前,一位银行人员向我解释道,这是一条可行之路,他负责保管甚至被认为是试用的技术产品:

将会有一场舞蹈,你在一个完美的、不切实际的实验室环境中向我展示你完美的演示。然后我会问‘你能做这四件事吗?’如果你说‘我能做第三个,但不能做第四个’,我会说‘等你能了再来吧’。如果你说“我们准备好了”,我的团队就会把你的技术扔进我们的环境,看看它会不会着火。如果有,我们就把它撕掉,把你从名单上划掉,然后继续下一个。如果没有,而且它有一些价值,我们可能会签署,看看一年的进展如何。”

我认为很令人沮丧的是,当涉及到价值的严峻考验时,门槛如此之低,如果你的技术在接入企业网络的现实时没有爆炸,你将远远领先于其他人。

但是等等,更糟的是!

[坦白:这句不朽的台词是一年多前伦敦的一个 CISO 人说的——但他们是纽约人,所以它仍然算数……算是吧。]

“我与供应商进行任何对话的出发点都是,如果他们能实现承诺价值的 10%,那将是一次令人震惊的胜利。可能是 2%,6 个月后我会想停止这个项目,再也不和他们说话。”

但是,今天,你很幸运能够有机会进行这样的对话。一个 CISO,我可能只和他保持友好关系,因为我从来没有试图卖给他任何东西,最近打给我:

“向我兜售我所没有的问题解决方案的新供应商数量惊人。供应商在他们的销售实践中变得如此无情,以至于大多数 CISOs 都断然拒绝与他们直接会面,而是让架构师或他们团队中的某个人负责跟踪产品前景。”

所以如果你为供应商工作;如果你想进入这个领域。你想知道为什么西索斯不想和你说话?简单的答案是:他们从零信任的立场出发。

因为他们没有时间来确定他们是否能信任你,现在唯一重要的证据是在布丁里,(特别是:吃布丁)。这不是你用来包装布丁的营销包装。不是别人说你的布丁有多棒的视频褒奖。这也不是你为你的布丁赢得的奖项而在 RSA 和 BlackHat 举办的派对(讽刺的是,参加派对的大多是其他供应商的销售人员,他们用你的钱喝免费啤酒)。

这一切之所以是是因为一个基线预期;“对于我没有亲眼目睹被尝试、测试和证明的任何事情,我将被告知的 90%都是废话”。

供应商…我们需要做得更好。

没错。现在,我已经把所有的话都说出来了,我可以继续写下几篇关于分析领域的文章了。更快…

和往常一样,如果你想了解一下 @panaseer_team 在做什么,(或者让我们做一个易燃性测试!?),那么请在这里取得联系。

我学习数据科学的方式(以及为什么我认为你应该使用它)

原文:https://towardsdatascience.com/the-way-im-learning-data-science-and-why-i-think-you-should-use-it-8c19b64dda9e?source=collection_archive---------3-----------------------

写这篇文章的想法来自于我在 PyData BH #8 的闪电谈话中谈到我学习数据科学的方法。似乎那里的人们喜欢它,所以,为什么不与世界分享我的想法呢?

首先,让我介绍一下我自己和我写这篇文章的原因。我是艾奎斯,我日常工作的一部分是分析数据。到目前为止,我不是一名全职的数据分析师或数据科学家,但我对数据领域有着浓厚的兴趣,因此我一直在阅读、观看视频和研究这方面的主题。

我不是来回答“如何成为数据科学家”之类的问题的/“我怎样才能在 DS 地区找到工作?”/“网上有哪些最好的 DS 课程?”。对于这个,你可以去 Quora 找一些有用的答案。

Data Science search trend in the last 5 year (via Google Trends)

如今,有一堆 MOOCs 提供了成为成功的数据科学家的黄金路径。你可以在 Coursera、Udemy 或 Datacamp 上花费一生的时间和大量的金钱来购买课程,但很可能他们不会给你一个数据专家最重要的技能:用他们教的工具解决现实世界的问题

So many courses that I can’t decide where to spend my money

对我来说,真正学习 DS 最好的方法就是通过练习来学习。这看起来似乎是显而易见的事情,事实也确实如此,但是如果你不知道从哪里开始,你怎么练习呢?我这里的方法是利用问题必须练习你的技能。

你能想出任何问题,无论是个人问题还是专业问题,并且可以用你在学习 Python/R、数据(即统计学或机器学习)时学到的东西来解决吗?为什么不用它们(即使它们已经解决了)来测试你的知识呢?

这里我举个我个人的例子。在过去的几个月里,我一直在走 Datacamp 数据科学家之路(Python)。我很快发现的一件事是,Datacamp 在实践方面非常糟糕。大多数练习就像复制粘贴一样,不会让你真正思考问题的解决方案。那要怎么练呢?找到我遇到的问题,并尝试用我所学的知识来解决它。

在这个案例中,我使用了我的工作时间表,一个我每天进出办公室的时间的电子表格,并试图回答这些问题:

  • 我还有多少额外的时间
  • 按天/周/月计算的额外小时数是什么意思
  • 我加班最多的日子(不包括周末)

项目在这里:

[## aiquis/研究

时间表分析

github.com](https://github.com/aiquis/study/blob/master/timesheet-analysis/Timesheet Analysis.ipynb)

如您所见,这是一个简单的任务,可以使用电子表格轻松完成。相反,我更喜欢用 Python 来做这件事,使用 pandas 并从谷歌电子表格中读取数据,在那里我实际上填写了这些信息(我可以将其复制到本地 CSV 文件中以使其更容易,但我不会练习使用 gspread (一种谷歌电子表格 Python API)来收集我的数据)。我还没有完成这个项目,但现在我已经学到了非常酷的东西,并设法解决了只有当你处理真实世界数据时才会出现的问题

当然,你可以通过解决一些普通问题来练习,如预测泰坦尼克号上的幸存者建立一个垃圾邮件分类器,但是当你从事一个代表真实事物的项目时,你可能会有更多的参与来完成它,并且会觉得你所学的东西真的很有用,可以应用到你的日常问题中。此外,你将建立一个个人投资组合。

如果你想不出一个个人项目, 这个 Quora 回答 有一些不错的项目可以放在手上,建立一个作品集

当你解决一个问题时,你将自己置于一个有问题、需要由数据专家解决的雇主的位置,但在这种情况下,你产生问题并解决它,成为整个链条的一部分:有问题、明确问题、制定解决方案、审查、发展并获得对结果的见解。

如果你真的想与数据打交道,作为一名数据科学家或数据分析师,你真的应该把手弄脏,并尝试解决问题。光看讲座不会让你成为解决问题的人这才是作为数据专业人士真正重要的。环顾四周,试着把你的日常工作当作数据科学问题来面对,把你所学的应用到解决方案中(即使这不是最简单的方法),陷入你没有预测到的问题并解决它(谷歌和 Stackoverflow 是你的朋友)。最后,建立一些让你看到最终结果时感到自豪的东西,这是最棒的部分。

特别感谢我的朋友 卡伊奥·马托斯 和拉斐尔,他们审阅了这篇文章并给了我一些反馈。如果您有任何反馈,请在此发表评论或通过Twitter联系我!

韦斯特杰特推动航空公司走向未来

原文:https://towardsdatascience.com/the-westjetter-propelling-an-airline-into-the-future-6e1dd2e68452?source=collection_archive---------14-----------------------

Alfredo C. Tan, Chief Digital and Innovation Officer, WestJet

如今,数字颠覆司空见惯。它发生得如此频繁,以至于当它发生时,它不再像以前那样令人印象深刻。然而,它不断提醒许多传统组织的首席管理人员,他们需要进行转型,以跟上不可预测的市场和不稳定的环境。

随着这家加拿大航空公司逐渐成为一个全球成功的故事,WestJet 新任首席数字和创新官 Alfredo C. Tan 被赋予了推动这一新方向的任务。在短短的 20 年里,西捷航空在北美、中美洲、加勒比海和欧洲建立了 13,000 多名员工和 100 多个目的地,并通过合作伙伴关系在 20 多个国家建立了 175 个目的地。

与几乎所有行业一样,全球旅游业和旅游业也经历了重大变化。这个价值 7.6 万亿美元的行业的商业模式发生了显著转变,部分原因是 Airbnb 和优步等颠覆者。航空业也不能幸免。受传统运营和严格监管的影响,转型的愿望不是短时间内可以实现的。

航空中心发布的这份 2017 年报告承认了这些变化:

与其他任何行业相比,航空公司都受制于 70 年前设计的晦涩难懂的监管框架,其目的除了防止新的进入之外别无它用。这是一个资本密集型的高度工会化的行业,由传统模式主导,仍然专注于购买和飞行昂贵的金属。但从本质上讲,航空产品只是另一种消费零售产品。因此,它同样容易受到剧变的影响……我们所知道的航空业到 2025 年将会面目全非,因为其基本特征将被彻底根除。这一过程将会加速,因为商业航空的每个关键方面都会出现混乱:飞行和销售。

我有幸与 Alfredo C. Tan 坐在一起,探讨他的西捷之旅,以及他对在一个已有成就的组织中引发一些必要变革的愿景。

痴迷于加入赋予互联网一代权利的运动

阿尔弗雷多记得思科系统公司“赋予互联网一代力量”的广告。这一强有力的信息描绘了一个被网络和市场的最终连接所改变的世界。当时,作为一名法医学和生物学的学生,他觉得自己错过了成为 dot.com 公司诞生这一不可思议浪潮的一部分的机会。

当他毕业时,他在《财富》杂志上读到一篇关于顶级商学院毕业生拒绝蓝筹股公司去硅谷追逐新的淘金热的文章。阿尔弗雷多不会放过任何一个机会,他学会了如何编码,并沉浸在计算机和技术课程中。很快,他在 Bell Nexia 从事系统工程和设计,并最终带领一个工程师团队在世贸中心灾难期间帮助恢复纽约和多伦多电信公司之间的连接。一路上,阿尔弗雷多一直在寻找愿意教他的导师:

专业领域的大多数事情,即使没有接受过正规教育,你也能做得很出色。有了足够的指导、求知欲、才能、勇气和激情,你几乎可以在任何地方获得成功。

无论是在加拿大贝尔,他学会了建立大规模的战略联盟、企业营销和战略,还是在 MSN.ca,他接触到了颠覆性的在线广告、媒体销售和互联网营销,还是在雅虎!阿尔弗雷多在移动、搜索和企业合作伙伴关系领域工作,他的旅程体现了他整个职业生涯中的学习咒语。

脸书:改变一切的平台

如果你能预见未来,知道十年内你的公司刚刚进入 S&P500,你会毫不犹豫地加入。在 2008 年,这一点几乎不明显,阿尔弗雷多挣扎着决定离开一份充满无限机会的令人惊叹的工作,这家公司仍然是一个社交网络的互联网巨头,人们认为它被高估了,没有明确的盈利战略,没有真正的市场差异,很容易像 MySpace 或 Friendster 一样半途而废。对他来说,2008 年旅行归来的那一刻是决定性的时刻。他记得,

在我 2007 年旅行回来之前,我在刚认识的人之间交换了电子邮件地址。到我 2008 年去旅行的时候,每个人都只交换脸书的身份证。在 12 个月内,从电子邮件到脸书的移动是不真实的。脸书真正构建的是大规模的身份认同。它真正拥有的是人——22 亿人。而且随着它的不断成长,它继续是无懈可击的。

他选择冒险去脸书,尽管所有的指导和建议都是相反的。他在那里待了 8 年,最后两年与东南亚和拉丁美洲高增长市场的领导团队一起工作。这些学习改变了生活,定义了职业。

为什么传统商业不能适应市场变化?

尽管脸书和社交网络在全球范围内取得了诸多成就,但企业仍未完全接受跟上动态市场步伐所需的变革。

阿尔弗雷多指出了谷歌、网飞、脸书、微软、优步、苹果和亚马逊等颠覆者。这些公司有不同的方式来建立他们的创新文化。他们之间有什么共同点?

  1. 他们带着一种紧迫感前进
  2. 他们崇拜速度
  3. 他们不怕变化

这是对传统公司运营方式的两极化观点。

作为 WestJet 的首席数字和创新官,Alfredo 的经历使他对未来的挑战已经成熟。WestJet 认识到变革的必要性和支持变革的文化。作为一家传统公司,它的行为与阿尔弗雷多习惯的环境大相径庭。来自技术领域,有一个共同的理解,一个共同的思维方式,因为技术不是你需要说服人们投资的东西。

这是公司 DNA 中的固有基因。

在大多数传统公司中,数字化并不是公司成功的基础。成功来自组织内的其他实践。挑战变成了说服公司里的一群人投资你认为正确的东西。

阿尔弗雷多认为,大多数领导者和员工都明白世界已经发生了巨大变化,但还不清楚数字化如何成为竞争优势。教育和赢得人们的心和思想有一个过程,即“在他们看到之前相信它”。高管们相信变革是西捷航空的新常态。员工真正的兴趣和动力激发了 Alfredo 的灵感,使之成为现实。

西捷航空有史以来第一次黑客马拉松

HackintheHangar WESTJET

换一种方式思考需要时间。你不能简单地说一句就假设人们明白了。正如他继续了解一个无限复杂的行业一样,Alfredo 和他的团队反过来需要以一种帮助整个公司理解数字化和创新对业务的影响的方式来教育和讲述这个故事,没有行话,也没有炒作。

这很快就有了结果。西捷航空忠诚度副总裁达西·莫纳汉(d'Arcy Monaghan)和产品开发经理朗达·雷诺兹(Rhonda Reynolds)与阿尔弗雷多接触,讨论为高端旅客开发解决方案,然后这些解决方案可以惠及西捷航空的所有乘客。阿尔弗雷多刚上任几周,并不认为他和他已经受到限制的团队有能力独自解决这个问题。

虽然最初的想法是在来自不同部门的一群人之间进行头脑风暴,但它很快演变为包括阿尔弗雷多在技术行业的一些朋友。随着越来越多的人听说这件事,他们就越想参与进来。内核发展成了全天黑客马拉松的想法,这是一场开发无缝优质客户体验的比赛,于是#HackInTheHangar 诞生了。

HackintheHangar WESTJET

Alfredo 邀请了一些最大的技术公司和系统集成商,如 Adobe、脸书、亚马逊、德勤数字、谷歌、松下航空电子、Twitter、LinkedIn、Snapchat、Hootsuite、IBM、Salesforce、Huge Inc .等。总共有 17 家公司及其 120 名来自技术、创意和设计背景的人员与 37 名 WestJetters 和 12 名 WestJet 的高级旅行者配对参加了这次为期一天的活动。正如阿尔弗雷多指出的:

最初,这个非常简单的想法在公司引发了这场运动,旨在回答几个关键问题:

我们如何向 13000 人展示我们可以用不同的方式解决问题,共同创造新的体验?

更重要的是,以更大的速度:

我们如何让非技术人员在黑客文化中解决问题?

我们如何赢得全球技术社区的尊重,从而获得灵感并与我们合作完成我们的数字和创新使命,共同创造旅行的未来?

我如何赢得组织中关键高管的支持,我需要他们的支持才能取得成功?

这次活动的评委是经过精心挑选的。目标是展示在一天之内开发出的令人惊叹的想法和解决方案,让他们理解并宣传 Alfredo 对公司的愿景。

恰好会开飞机的数码公司

WestJet Plane at the #HackintheHangar

一天结束时,西捷航空的高管们几乎不需要说服。客户体验副总裁 Louis Saint-Cyr 指出,有遗留行为的航空公司限制了他们能为客户做的事情。黑客马拉松揭示了西捷航空需要适应日益数字化的旅客旅程。他证实了该行业目前在创新和监管之间的推拉作用产生了运营限制。尽管如此,路易斯看到了巨大的可能性:

这次黑客马拉松揭示了我们如何围绕这些结构性限制进行创新。我们如何以数字方式增强一线人员的能力,并增加 WestJetters 以技术定制客户体验而闻名的软技能?

…想想客户旅行过程中遇到的障碍:到达机场的时间、拿行李的等待时间、办理登机手续——这些都会增加压力。通过利用社交媒体的情感框架并将其与旅客旅程相结合,我们可以直接解决这些障碍,从而改变旅客的航空旅行。

…总的来说,通过将顾客资料与他们在飞机上、网站上和机场的期望结合起来,我们可以在顾客体验方面取得显著进步。

西捷航空首席执行官艾德·西姆斯(Ed Sims)宣布,在 24 个月内,西捷航空将成为一家碰巧会开飞机的数字公司。它向技术社区和领导团队发出了一个信号,即这次黑客马拉松不仅仅是一个附带项目;这将是公司的未来。

西捷航空的首次黑客马拉松代表了西捷航空向更具创新思维的文化转变。我们将快速行动,快速学习,快速建设。我们现在有机会以不同的方式做事,在旅游领域进行前所未有的创新。我们的目标是让产品远远超出顾客的期望。" ~Ed Sims,WestJet 总裁兼首席执行官

阿尔弗雷多的下一步?

黑客马拉松和由此产生的想法都是戏剧和理论,直到你开始建设。我们必须构建我们认为有吸引力的功能,以及我们将在未来研究的其他功能。创新是一种文化心态,但它来自于建设。

这些出色的想法将为未来五年发展这些能力奠定基础。此外,鉴于黑客马拉松后重复举办更多活动的巨大需求,WestJet 计划举办不同主题的年度活动。

在很短的时间内,黑客马拉松产生的接受度,灌输了一种将黑客文化嵌入公司的思想,作为解决问题的一种方式,并授权跨职能团队在有限的时间内自我组织和发明解决方案。

我们会找到一种方法,让它在组织中普及,这样,想要修正流程的机组人员就可以召集一群人来创建一个解决方案,然后在几天内提交给预算审批。它让黑客马拉松规模更小,团队规模更小,声势更小。希望这能影响 13000 人开始这样想。

我们才刚刚开始…最终,如果我是唯一一个负责数字和创新文化的人,我会在工作中失败。所有西杰特人都应该拥抱它和未来。

Alfredo C. Tan 的口头禅是保持好奇和不断学习,在最初的 90 天里,他推动组织以不同的方式思考,学习新的做事方式,并挑战他们想象力的极限。

这篇文章起源于福布斯

在移动设备上运行深度学习推理的是什么和不是什么

原文:https://towardsdatascience.com/the-what-and-what-not-of-running-deep-learning-inference-on-mobile-81aa394ad27d?source=collection_archive---------8-----------------------

这个概念在我的草稿中已经存在很长时间了,我已经意识到缺乏相关的文档仍然会导致混乱,所以,我想把我的经验和理解发表出来。

文章假设,深度学习如何工作的基础知识以及它们的实现。假设是,有一个模型在服务器或本地笔记本电脑上训练和工作,以预测事物。

现在,如果你想在移动设备上做类似的事情,有多种方法,我们将一步一步地讨论相同的方法。从示例的角度来看,假设您有视频,并且希望通过深度学习模块对其进行处理,并获得输出的分析指标。

整个解释将集中于在移动设备上实现上述框图时做什么和不做什么。

1。将数据发送到服务器进行处理

这里的想法是建立通信模块,它与服务器通信,将内容发送到服务器,让服务器推断数据,并将元数据发送回设备。

优势:

移动开发团队和数据科学团队之间的交流没有任何问题,发送数据和获取数据

缺点:

-->极高的延迟

  • 互联网可用性,与服务器同步(完全是另一个问题)
    ->-隐私(无法将数据发送到我的手机之外)

这个缺点不容忽视,这就引出了下一个重要的想法,

有各种各样的方法可以达到同样的目的,我们将逐一讨论它们的利弊。这方面最简单的方法是

2.使用开发框架的现有包装器

我们将从著名的、容易开始考虑的开发框架开始。

几乎没有相同方向的图书馆,

TensorFlow Lite

这是 Tensorflow 的移动版本,不会有太多的学习曲线,因为文档和支持都维护得很好。训练模型并在移动设备上运行推理,就好像您在本地计算机上运行一样。

优点:

->围绕模型转换运行的工作量最小,来自数据科学和移动开发团队的知识转移有限。

  • 比服务器方法相对更快

  • 无平台依赖性

缺点:

->大型号尺寸

  • 与笔记本电脑运行时相比超级慢

咖啡 2Go:

这曾经是由脸书的 Caffe 团队支持的,现在,他们已经将它作为 PyTorch 的一部分嵌入其中。我没有做过这个的最新版本,但是,我会根据我一年前的经验给出我的分析。

优点:

-->同样,从开发到生产的努力是最小的,如果你在 Caffe

  • 上工作,比服务器方法和 tensorflow lite

  • 相对更快,没有平台依赖性

缺点:

->大型号尺寸

  • 又来了,相比笔记本时间超级慢

  • 在我使用的时候非常不稳定(一年前)

在这个阶段,与服务器模式相比,我们已经大大提高了我们的性能,但是,这仍然不是我们可以开箱即用的东西。上述方法的主要问题是速度和模型大小,我们将尝试单独解决每个问题

加工速度:

为了解决速度问题,我们将尝试在计算机上解决相同问题的相同路线,解决方案很简单,使用更好的硬件,特别是 GPU 的引入改变了事情

同理,如果能在移动上使用硬件加速或者特定的硬件,就有加速的可能。这就引出了如何在手机上有效利用硬件的探索之路。
这导致将整个硬件空间分为两种类型:

受控硬件:

称之为一致的原因是,在不同型号的变化中,除了一些小的变化外,硬件方面没有什么大的变化。因此,在苹果设备上开发硬件特定模型更容易,这导致了对可用硬件能力的探索。

有趣的是,我们在那个时间点接触到了 metal 框架,它刚刚发布了卷积内核操作,作为他们框架升级的一部分。我们使用金属框架围绕操作员建立了模型,它工作速度非常快!( 盗梦空间 V3:150 毫秒 )

考虑到苹果最新的机器学习移动框架,金属的用法现在已经无关紧要了。

CoreML!

转换->加载->推断!

它支持大多数主要的运营商和图书馆。几乎所有库中的模型转换包装器都是可用的。在您感兴趣的任何框架中开发,使用可用的包装器将您的模型转换为 core ML 格式,然后加载模型并获得结果,您可以在少于 6 行代码中看到结果。

不受控制的硬件:
Android 可以在这里找到,因为不同制造商在硬件方面有很大的差异

这个平台本身有点复杂,要用我们为苹果做的同样的方式来解决它。我们的目标是通过硬件专用库来解决这一问题,如高通神经处理 SDK,它使用 snapdragon 820+手机额外的硬件功能。

这个 SDK API 使用 snapdragon 的 GPU 和 DSP 功能,在推理方面让事情变得更快。流程与 Core ML 相同,在任何开发框架中训练,转换模型,使用 SDK 在设备上使用。

侧写!

这种方法粗略地解决了我们对速度的想法——至少在一个基本的方式上,根据你各自的应用程序,速度可以做更多的升级。

模型尺寸:

默认情况下,如果从服务器直接移植到移动设备,模型的大小会非常大。模型越大,它消耗的内存就越多,当用户注意到所有这些事情时,事情就会变得非常困难,并且您不希望每次升级模型时都迫使用户下载千兆字节的数据。更大的模型还有各种其他的技术难题。因此,解决方案是减小尺寸,这就让我们遵循一些有趣的方法。

量化:
将 float 或 double 值转换为 int 值,这导致模型大小减少了 4 倍,从技术上讲,做所有这些事情有点棘手,但是,有足够的资源来检查它。

我发现 P 彼得·沃顿的文章在当时非常有用,我建议每个人在尝试使用市场上现有的东西之前先浏览一下。

https://Pete warden . com/2017/06/22/what-ive-learned-on-neural-network-quantization/

几个月前,甚至 tensorflow 也正式发布了相同的支持代码

https://www.tensorflow.org/performance/quantization

出于同样的原因,苹果的 Core ML 已经开始支持 16 位精度,而不是 32 位精度。

https://developer . apple . com/documentation/coreml/reducing _ the _ size _ of _ your _ core _ ml _ app

模型剪枝:
通过了解哪些模型权重不是那么有用,从模型中移除不重要的节点权重。

https://Jacob Gil . github . io/deep learning/pruning-deep-learning

https://arxiv.org/pdf/1611.06440.pdf

网络优化:
了解什么是需要的,什么不是,这是一个重要的方面。
人们必须相应地优化网络,比如用 1d 卷积替换全连接。如果一个人足够了解他们的网络,还有其他各种方法可以做到这一点。

结论:

我将以回答故事的标题来结束我的发言

什么不该做?

如果数据是图像/视频,不要使用基于服务器的方法。您可以使用基于服务器的小文本和基于语音的数据。

怎么办?

考虑到我的经验,在如何处理这个问题上没有单一的解决方案,它应该完全基于你想要解决什么样的问题。

话虽如此,如果问题是基于图像的,那么,我强烈建议围绕硬件特定的库编写您自己的包装器,这可以很好地提高模型速度并支持模型大小操作,您最终可能会这样做。

附言:我在 tensorflow lite 上的实验已经很老了,请随时再做一次实验,因为他们可能已经根据行业更新了他们的模块。

你可能也有兴趣探索百度图书馆的移动版本 paddle-mobile。我还没有完全做好这方面的工作,但是我听到了一些很好的分析评论。话虽如此,据我所知,目前的图书馆还不稳定

https://github.com/PaddlePaddle/paddle-mobile

我想提出的另一个非常重要的建议是,使用 ONNX 作为开发中模型序列化/去序列化的首选格式。一年左右你会感谢我的。

https://github.com/onnx/onnxT10https://onnx.ai/

MnasNet

如果你正在跟进谷歌最近的论文,你一定注意到了最近关于移动深度学习架构搜索的论文,这听起来非常有趣,我建议浏览一下这篇论文,这可能会给你一些关于设计网络以使其移动高效的见解。

https://arxiv.org/pdf/1807.11626.pdf

这些观点完全基于我一年前的实验和经验,可能对你不起作用。所以,请随时反对,如果内容偏离事实,我将非常乐意根据最新的标准进行编辑。

数据科学的内容、地点和方式

原文:https://towardsdatascience.com/the-what-where-and-how-of-data-science-6dda1af98671?source=collection_archive---------6-----------------------

数据科学——一个全球公认的急需传播的术语。

数据科学是一个逃避任何单一完整定义的术语,这使得它很难使用,特别是如果目标是正确使用它。大多数文章和出版物自由地使用这个术语,并假定它被普遍理解。然而,数据科学——其方法、目标和应用——随着时间和技术的发展而发展。25 年前,数据科学指的是收集和清理数据集,然后将统计方法应用于这些数据。在 2018 年,数据科学已经发展成为一个包含数据分析、预测分析、数据挖掘、商业智能、机器学习等等的领域。

事实上,因为没有一个定义可以完美地满足这个要求,所以就由那些从事数据科学的人来定义它。

认识到清晰解释数据科学的必要性, 365 数据科学团队设计了什么-哪里-谁信息图。我们定义数据科学中的关键流程并传播该领域。下面是我们对数据科学的解读。

Data and Data Science Infographic by 365 Data Science

当然,这可能看起来像是大量压倒性的信息,但事实并非如此。在本文中,我们将剖析数据科学,并将它重新构建成一个连贯且易于管理的概念。容忍我们!

数据科学,‘一分钟之内解释’,看起来是这样的。

你有数据。要使用这些数据为您的决策提供信息,这些数据必须是相关的、组织良好的,最好是数字化的。一旦您的数据一致,您就可以继续分析它,创建仪表板和报告,以更好地了解您的业务绩效。然后,你将目光投向未来,开始生成预测分析。借助预测分析,您可以评估潜在的未来场景,并以创造性的方式预测消费者行为。

但是让我们从头开始。

数据科学中的数据

在任何事情之前,总是有数据的。数据是数据科学的基础;这是所有分析所依据的材料。在数据科学背景下,有两种类型的数据:传统数据和大数据。

传统数据是结构化并存储在数据库中的数据,分析师可以从一台计算机上管理这些数据;它是表格格式,包含数值或文本值。实际上,术语“传统的”是我们为了清晰而引入的。它有助于强调大数据和其他类型数据之间的区别。

另一方面,大数据比传统数据更大,而且不是微不足道的大数据。从多样性(数字、文本,还有图像、音频、移动数据等。)、速度(实时检索和计算)、容量(以万亿字节、千万亿字节、千兆字节衡量),大数据通常分布在计算机网络中。

也就是说,让我们定义一下数据科学中的“什么”、“哪里”和“谁”各自的特征。

你要数据做什么数据科学?

数据科学中的传统数据

传统数据存储在关系数据库管理系统中。

Traditional data

也就是说,在准备好进行处理之前,所有数据都要经过预处理。这是一组必要的操作,可以将原始数据转换成更容易理解的格式,从而有助于进一步处理。常见的流程有:

  • 收集原始数据并将其存储在服务器上

这是科学家无法直接分析的未接触数据。这些数据可以来自调查,或者通过更流行的自动数据收集模式,如网站上的 cookies。

  • 对观察结果进行分类

这包括按类别排列数据或将数据点标记为正确的数据类型。例如,数字的或分类的。

  • 数据清理/数据清理

处理不一致的数据,比如拼错的类别和丢失的值。

如果数据是不平衡的,类别包含不相等数量的观察值,因此不具有代表性,应用数据平衡方法,例如为每个类别提取相等数量的观察值,并准备进行处理,可以解决这个问题。

重新排列数据点以消除不需要的模式,并进一步提高预测性能。例如,当数据中的前 100 个观察来自使用网站的前 100 个人时,这是适用的;这些数据不是随机的,而是由于抽样而形成的模式。

数据科学中的大数据

谈到大数据和数据科学,传统数据处理中使用的方法有一些重叠,但也有很多不同之处。

首先,大数据存储在许多服务器上,并且无限复杂。

Big data

为了利用大数据进行数据科学研究,预处理甚至更加重要,因为数据的复杂性要大得多。您会注意到,从概念上讲,一些步骤类似于传统的数据预处理,但这是处理数据所固有的。

  • 收集数据
  • 对数据进行分类标注

请记住,大数据非常多样,因此标签不是“数字”与“分类”,而是“文本”、“数字图像数据”、“数字视频数据”、“数字音频数据”等等。

这里的方法也千差万别;例如,您可以验证数字图像观察已准备好进行处理;或者数码视频,或者…

在大规模收集数据时,这旨在确保数据中的任何机密信息保持私密,而不妨碍分析和提取洞察力。这个过程包括用随机和错误的数据隐藏原始数据,允许科学家在不泄露私人细节的情况下进行分析。自然,科学家也可以对传统数据这样做,有时也是如此,但使用大数据,信息可能会更加敏感,这掩盖了更多的紧急情况。

数据从哪里来?

传统数据可能来自基本的客户记录,或者历史股票价格信息。

然而,大数据无处不在。越来越多的公司和行业使用并产生大数据。考虑一下在线社区,例如脸书、谷歌和 LinkedIn 或者金融交易数据。不同地理位置的温度测量网格也相当于大数据,以及来自工业设备中传感器的机器数据。当然,还有可穿戴技术。

谁处理数据?

处理原始数据和预处理、创建数据库和维护数据库的数据专家可以使用不同的名称。尽管他们的头衔听起来相似,但他们所扮演的角色却有明显的不同。请考虑以下情况。

数据架构师数据工程师(分别是大数据架构师和大数据工程师)在数据科学市场中至关重要。前者从头开始创建数据库;他们设计检索、处理和使用数据的方式。因此,数据工程师将数据架构师的工作作为跳板,并处理(预处理)可用的数据。他们是确保数据整洁有序并为分析师接管做好准备的人。

另一方面,数据库管理员是控制数据流入和流出数据库的人。当然,对于大数据,几乎整个流程都是自动化的,因此不需要人工管理员。数据库管理员主要处理传统数据。

也就是说,一旦数据处理完成,数据库整洁有序,真正的数据科学就开始了。

数据科学

看待数据也有两种方式:为了解释已经发生的行为,你已经为此收集了数据;或者利用你已有的数据来预测尚未发生的未来行为。

数据科学解释过去

商业智能

在数据科学进入预测分析之前,它必须观察过去提供的行为模式,分析它们以获得洞察力,并为预测指明道路。商业智能恰恰专注于此:提供数据驱动的问题答案,如:售出了多少台?哪个地区销售的商品最多?哪种类型的商品在哪里出售?就点击率和产生的收入而言,上个季度电子邮件营销表现如何?这与去年同季度的表现相比如何?

虽然商业智能的标题中没有“数据科学”,但它是数据科学的一部分,而且不是微不足道的。

商业智能是做什么的?

当然,商业智能分析师可以应用数据科学来衡量业务绩效。但是为了让商业智能分析师实现这一点,他们必须采用特定的数据处理技术。

所有数据科学的出发点都是数据。一旦 BI 分析师掌握了相关数据(月收入、客户、销量等)。),他们必须量化观察结果、计算 KPI 并检查从数据中提取洞察力的方法。

数据科学就是讲述一个故事

除了处理严格的数字信息,数据科学,特别是商业智能,是关于可视化的发现,并创建易于消化的图像,只支持最相关的数字。毕竟,所有级别的管理人员都应该能够从数据中了解洞察力,并为他们的决策提供信息。

商业智能分析师创建仪表板和报告,并附有图形、图表、地图和其他类似的可视化内容,以呈现与当前业务目标相关的发现。

商业智能用在哪里?

价格优化和数据科学

值得注意的是,分析师将数据科学应用于价格优化技术等领域。他们实时提取相关信息,与历史信息进行比较,并采取相应的行动。以酒店管理行为为例:管理层在很多人想去酒店的时候提高房价,而在需求低的时候降低房价以吸引游客。

库存管理和数据科学

数据科学和商业智能对于处理供应过剩和供应不足是无价的。对过去销售交易的深入分析可以确定季节性模式和一年中销售额最高的时间,从而实施有效的库存管理技术,以最低的成本满足需求。

谁做数据科学的 BI 分支?

BI 分析师主要关注过去历史数据的分析和报告。

商业智能顾问通常只是一个“外部商业智能分析师”。许多公司外包他们的数据科学部门,因为他们不需要或不想维持一个。如果被雇佣,商业智能顾问将成为商业智能分析师,然而,他们的工作更加多样化,因为他们在不同的项目上跳来跳去。他们角色的动态性质为 BI 顾问提供了不同的视角,而 BI 分析师拥有高度专业化的知识(即深度),BI 顾问则为数据科学的广度做出贡献。

BI 开发人员处理更高级的编程工具,如 Python 和 SQL,以创建专门为公司设计的分析。这是 BI 团队中第三个最常遇到的职位。

预测未来的数据科学

数据科学中的预测分析建立在解释性数据分析的基础上,这正是我们到目前为止所讨论的内容。一旦准备好 BI 报告和仪表板,并从中提取见解,这些信息将成为预测未来价值的基础。而这些预测的准确性在于使用的方法。

回想一下数据科学中传统数据和大数据的区别。

我们可以对预测分析及其方法进行类似的区分:传统的数据科学方法与机器学习。一个主要处理传统数据,另一个处理大数据。

数据科学中的传统预测方法:它们是什么?

传统的预测方法包括用于预测的经典统计方法——线性回归分析、逻辑回归分析、聚类、因子分析和时间序列。其中每一个的输出都被输入到更复杂的机器学习分析中,但让我们首先单独回顾一下它们。

快速的旁注。数据科学行业的一些人也将这些方法称为机器学习,但在本文中,机器学习指的是更新、更智能、更好的方法,如深度学习。

线性回归

在数据科学中,线性回归模型用于量化分析中包含的不同变量之间的因果关系。像房价,房子大小,邻里,建成年份的关系。如果你有相关的信息,这个模型可以计算出预测新房子价格的系数。

逻辑回归

因为不可能将变量之间的所有关系都表示为线性的,所以数据科学利用像逻辑回归这样的方法来创建非线性模型。逻辑回归用 0 和 1 进行运算。公司在筛选过程中应用逻辑回归算法来筛选求职者。如果算法估计未来候选人在一年内在公司表现良好的概率超过 50%,它将预测 1,或成功申请。否则,它将预测 0。

聚类分析

当数据中的观察值根据某些标准形成组时,就应用了这种探索性的数据科学技术。聚类分析考虑到一些观察结果表现出相似性,并有助于发现新的重要预测因子,这些预测因子不是数据原始概念的一部分。

要素分析

如果聚类是将个观察值组合在一起,那么因子分析就是将个特征组合在一起。数据科学求助于使用因素分析来降低问题的维度。例如,如果在一份 100 个项目的问卷中,每 10 个问题涉及一个单一的总体态度,因子分析将识别这 10 个因子,然后可以用于回归,这将提供一个更具解释性的预测。数据科学中的许多技术都是这样集成的。

时间序列分析

时间序列是跟踪特定值随时间发展的常用方法。经济学和金融学专家使用它是因为他们的主题是股票价格和销售量——这些变量通常是相对于时间绘制的。

传统预测方法在哪里可以应用数据科学?

相应技术的应用极其广泛;数据科学正在越来越多的行业中找到出路。也就是说,两个突出的领域值得讨论。

用户体验(UX)和数据科学

当公司推出新产品时,他们通常会设计调查来衡量顾客对该产品的态度。BI 团队生成仪表板后,对结果进行分析,包括将观察结果分组为片段(如区域),然后分别分析每个片段以提取有意义的预测系数。这些操作的结果通常证实了这样一个结论,即为了最大限度地提高客户满意度,产品需要在每个细分市场进行轻微但显著不同的调整。

预测销售量

这就是时间序列发挥作用的分析类型。销售数据一直收集到某个日期,数据科学家想知道在下一个销售周期或一年后可能会发生什么。他们应用数学和统计模型并运行多种模拟;这些模拟为分析师提供了未来的情景。这是数据科学的核心,因为基于这些场景,公司可以做出更好的预测并实施适当的策略。

谁使用传统的预测方法?

数据科学家。但请记住,这个头衔也适用于使用机器学习技术进行分析的人。许多工作是从一种方法转移到另一种方法的。

另一方面,数据分析师是准备高级类型的分析的人,这些分析解释已经出现的数据中的模式,而忽略了预测分析的基本部分。

机器学习和数据科学

机器学习是数据科学的最新方法。理应如此。

机器学习相对于任何传统数据科学技术的主要优势在于,它的核心是算法。这些是计算机用来寻找尽可能符合数据的模型的方向。机器学习和传统数据科学方法的区别在于,我们不会给计算机如何找到模型的指令;它采用该算法并使用它的指示来自己学习如何找到所述模型。与传统的数据科学不同,机器学习几乎不需要人类的参与。事实上,机器学习,尤其是深度学习算法是如此复杂,以至于人类无法真正理解“内部”正在发生什么。

什么是机器学习?

机器学习算法就像一个试错的过程,但它的特殊之处在于,每次连续的尝试至少与前一次一样好。但是请记住,为了更好地学习,机器必须经历成千上万次的反复试验,错误的频率一直在下降。

An illustration of supervised learning

一旦训练完成,机器将能够将它学习到的复杂计算模型应用于新数据,仍然能够产生高度可靠的预测结果。

有三种主要类型的机器学习:监督、非监督和强化学习。

监督学习

监督学习依赖于使用标记数据。机器获得与正确答案相关联的数据;如果机器的性能没有得到正确的答案,优化算法会调整计算过程,计算机会再次尝试。请记住,通常情况下,机器会一次处理 1000 个数据点。

支持向量机、神经网络、深度学习、随机森林模型和贝叶斯网络都是监督学习的实例。

无监督学习

当数据太大,或者数据科学家承受着太大的资源压力来标记数据,或者他们根本不知道标签是什么,数据科学就求助于使用无监督学习。这包括给机器未标记的数据,并要求它从中提取洞察力。这通常会导致数据根据其属性以某种方式进行划分。换句话说,它是群集的。

无监督学习对于发现数据中的模式非常有效,尤其是那些使用传统分析技术的人会错过的东西。

数据科学通常同时使用监督学习和非监督学习,非监督学习标记数据,监督学习寻找适合数据的最佳模型。这方面的一个例子是半监督学习。

强化学习

这是一种机器学习,重点是表现(行走、看、读),而不是准确性。每当机器的表现比以前更好时,它就会获得奖励,但如果它的表现不佳,优化算法就不会调整计算。想象一只小狗在学习命令。如果它听从命令,它会得到奖励;如果它不听从命令,款待就不会到来。因为食物美味可口,狗会逐渐提高对命令的遵循程度。也就是说,强化学习不是最小化错误,而是最大化回报。

机器学习在数据科学和商业领域的应用领域是什么?

欺诈检测

通过机器学习,特别是监督学习,银行可以获取过去的数据,将交易标记为合法或欺诈,并训练模型来检测欺诈活动。当这些模型检测到最轻微的盗窃可能性时,它们会标记交易,并实时防止欺诈。

客户保持率

通过机器学习算法,企业组织可以知道哪些客户可能会从他们那里购买商品。这意味着商店可以有效地提供折扣和“个性化服务”,最大限度地降低营销成本,实现利润最大化。我想到了几个著名的名字:谷歌和亚马逊。

谁在数据科学中使用机器学习?

如上所述,数据科学家深度参与设计机器算法,但这个舞台上还有另一颗明星。

机器学习工程师。这位专家正在寻找方法,将机器学习领域开发的最先进的计算模型应用于解决复杂问题,如商业任务、数据科学任务、计算机视觉、无人驾驶汽车、机器人等等。

数据科学中的编程语言和软件

使用数据和数据科学需要两大类工具:编程语言和软件。

Examples of most commonly used programming languages and software

数据科学中的编程语言

了解编程语言使数据科学家能够设计出能够执行特定操作的程序。编程语言的最大优势是我们可以重用创建的程序多次执行相同的动作。

r、Python 和 MATLAB 与 SQL 相结合,涵盖了处理传统数据、BI 和传统数据科学时使用的大多数工具。

r 和 Python 是所有数据科学子学科中最流行的两种工具。他们最大的优势是可以操纵数据,并且集成在多个数据和数据科学软件平台内。它们不仅仅适用于数学和统计计算;他们适应性很强。

然而,当使用关系数据库管理系统时,SQL 是王者,因为它是专门为此目的而创建的。SQL 在处理传统的历史数据时最有优势,例如在准备 BI 分析时。

MATLAB 是数据科学中第四个最不可或缺的工具。它非常适合处理数学函数或矩阵运算。

当然,数据科学中的大数据是在 R 和 Python 的帮助下处理的,但从事该领域工作的人通常精通其他语言,如 Java 或 Scala。当组合来自多个来源的数据时,这两个非常有用。

除了上面提到的那些,JavaScript、C 和 C++经常在专家工作的数据科学分支涉及机器学习时使用。它们比 R 和 Python 更快,并提供更大的自由度。

数据科学中的软件

在数据科学中,软件或软件解决方案是针对特定业务需求而调整的工具。

Excel 是一种适用于多个类别的工具,包括传统数据、商业智能和数据科学。同样,SPSS 是一个非常著名的处理传统数据和应用统计分析的工具。

另一方面,Apache Hadoop、Apache Hbase 和 Mongo DB 是为处理大数据而设计的软件。

Power BI、SaS、Qlik,尤其是 Tableau 是为商业智能可视化而设计的软件的顶级例子。

在预测分析方面,EViews 主要用于处理计量经济学时间序列模型,而 Stata 用于学术统计和计量经济学研究,其中经常应用回归、聚类和因子分析等技术。

这是数据科学

数据科学是一个模糊的术语,涵盖了从处理数据(传统的或大的)到解释模式和预测行为的一切。数据科学是通过回归和聚类分析等传统方法或非正统的机器学习技术来完成的。

这是一个广阔的领域,我们希望你能更进一步理解它是多么包罗万象,与人类生活交织在一起。

如果你喜欢这篇文章,请随意看看我的其他文章。“开始的好处”听起来是个不错的开始!

原载于 2018 年 5 月 21 日【365datascience.com

posted @ 2024-10-13 15:16  绝不原创的飞龙  阅读(9)  评论(0编辑  收藏  举报