TowardsDataScience-博客中文翻译-2016-2018-一-

TowardsDataScience 博客中文翻译 2016~2018(一)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

1 年在现实世界中从事数据科学研究

原文:https://towardsdatascience.com/1-year-doing-data-science-in-the-real-world-54f49b591991?source=collection_archive---------6-----------------------

到目前为止,我学到的最重要的经验是

好的,所以实际上是 14 个月,但它没有和“1 年”一样的环。我已经在一家名为英国新闻的公司工作了 14 个月。作为一名消费者和增长算法数据科学家,我现在即将在 Deliveroo 开始新的旅程,所以我认为现在是反思我在英国新闻工作期间所学到的东西的好时机。

老实说,我学到了很多东西。鉴于这是我在学术界之外的第一份工作,这句话可能是显而易见的。但令人惊讶的是(至少令我惊讶的是),我学到的最重要的东西并不是数据科学中的“硬技能”。相反,我发现我学到的最有价值的东西是“软技能”。我开始意识到,要想在像英国新闻这样的大公司中获得成功,不仅仅是在数据科学领域,你必须掌握软技能。

为了说明我认为这些软技能有多重要:

我真诚地相信,如果我在英国新闻工作时只具备 SQL、数据准备、线性回归和逻辑分类器的技能,只要我完全掌握了软技能,我就可以成为一名成功的数据科学家。—我

现在我知道这是一个巨大的声明,但即使你不同意我的观点,你可能会在阅读我的帖子后理解我的观点。

我们开始吧

1)沟通是关键

无论你的手艺有多好,能够与你周围的每个人交流是成功最重要的技能。沟通是与团队和利益相关者建立融洽关系的第一步。一旦你与相关人员建立了融洽的关系,管理期望、快速完成请求/帮助以及许多其他好处就容易多了。

事情不会总是一帆风顺。难免会出问题。我经历过的一个例子是,我们制作的分析仪表板没有显示某些文章的任何数据(这种情况比我们希望的更频繁)。当利益相关者在我们之前发现时,就会产生问题,因为他们认为我们不知道问题是什么。然而,在我们先发现并在利益相关者发现之前让他们知道的场合,他们从不生气。唯一的要求是我们让他们知道什么时候事情会正常工作。

这不仅仅适用于利益相关者。在数据技术团队中,我发现许多团队成员喜欢我以简单易懂的方式解释复杂的数据科学方法。这不仅仅是能够解释参数估计或随机森林分类器如何工作,还包括理解什么对其他成员是重要的。在谈论数据科学项目时,重要的是从业务问题入手推动项目。这可以让你把每个人带到和你一样的思考之旅。

如果我不能像以前那样很好地沟通,我就不会有在英国新闻的成功,我会确保在我的职业生涯中不断改进。

2)同理心对团队凝聚很重要

对于是什么让团队成功已经有了全面的研究。最重要的是这个概念 心理安全 。然而,另一个我觉得很重要的因素是同理心。

我记得在我的数据科学训练营中,有一整节课都是关于移情的。当时我并没有真正理解。但现在我觉得我能真正体会到它的重要性。

换位思考不仅能让你理解你的同事,还能回应他们的痛点。而正是这一点能让你成为更好的同事。

一个简单的例子是,有人不认同你是一名数据科学家,尽管你在一天结束时还有其他工作要完成,但一位同事还是要求你对一份冗长、无结构的 PDF 文档进行快速分析。这个人显然不理解分析的过程,为什么非结构化的 PDF 文档不一定是数据分析的最佳选择,他们也不尊重你必须做的其他工作。这种误解会导致团队中的摩擦。

团队中也有很多不同的方式会产生挫折。这篇文章的标题是:工程师不应该写 ETL:建立高功能数据科学部门的指南强调了数据科学家、数据工程师和基础设施工程师之间可能发生的一些挫折。例如,数据科学家编写了糟糕的代码,他们希望工程师能马上生产出来。我在英国新闻工作的时候见过(也做过)几次这样的事情。这是因为缺乏同理心和理解。

花些时间去了解你的同事。了解他们做什么,他们的痛点是什么。了解他们的经验水平。了解这些事情有助于你了解你的同事。当某些涉及他们的工作出现在你面前时,你可能会主动提供帮助。也许数据工程师可以和数据科学家坐下来,在数据科学家开始写之前,讨论什么是好的、可生产的代码。工程师还可以解释他们的过程和期限,以便他们为工作的完成设定现实的期望。当资深员工与初级员工一起工作时,这一点尤其有用。请注意,良好的沟通会产生共鸣。

3)感知和可测量的价值一样重要

我想大多数人会告诉你,如果你要开发一个产品,你需要定义一个衡量成功的标准。通常,这包括 A/B 测试,以确定新产品/功能的引入是否产生了积极的影响。

然而,尽管新闻英国的数据技术团队生产的大多数产品和算法没有经过这一过程,但这些产品仍然被认为是成功的。

这是因为这些产品正在推动公司内部的文化转变。人们对数据技术团队有着积极的看法,认为我们是一个可以创造产品来加速他们实现目标的团队。

当时我对这个还不够欣赏。当公司的高级成员被收买时,团队的生活就会轻松得多。例如,它使得获得资金更加容易。记住,你仍然要玩政治游戏。

其他重要经验

  • 找到‘数据冠军’。这些是数据团队之外的人,他们是数据的强烈拥护者。他们将能够影响团队中的其他人,并成为您项目的产品所有者。
  • 说话声音最大的人往往会成功。这可能只是拥有层层官僚机构和丰富政治的大公司所固有的东西,但感觉上最响亮的人物往往会在这些公司的职业阶梯上上升。
  • 从最大声开始,你需要能够向爱斯基摩人卖冰。你不仅需要大声宣传你在做什么,还必须推销它。这就是你获得高管认同的方式。
  • 每个好的机器学习项目都需要坚实的 EDA 和描述性分析。做“酷机器学习”模型是很有诱惑力的,它可以做出预测,让人们相信你是一个魔术师。然而,要充分利用数据,你必须理解它,这意味着探索它。你不会脱离标准分析。
  • 持续监控的健壮代码对于代码库的长寿是必要的。生产中会出现问题,但你可以通过建立强大的管道来缓解这一问题。此外,如果输出没有被连续监控,那么性能是一个谜。当原作者离开公司时,代码库被取代只是时间问题。
  • 解决商业问题并不像提出解决方案那么简单。仅仅因为你提供了一个解决方案,并不意味着人们会听。你必须“聪明”地对待这件事,并且以相关人员会倾听的方式给出反馈。让相关人员在目标上保持一致,然后以他们认为共同负责的方式带领他们踏上解决方案之旅。Scott Shipp 在他的文章中对此做了很好的解释:“如何提出在工作中推动变革的问题”。在许多情况下,你自己想出的解决方案并不是最优的,所以听取他人的意见是有益的。但是认为人们和你看世界的方式一样是错误的。

在过去的一年里,我学到了很多更重要的东西,但我觉得这些是最重要的。

你怎么想呢?我错过了什么重要的课程吗?你不同意这些吗?欢迎在评论中继续讨论。感谢你阅读☺

简而言之,10 种常见的软件架构模式

原文:https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013?source=collection_archive---------0-----------------------

想知道大型企业级系统是如何设计的吗?在主要的软件开发开始之前,我们必须选择一个合适的架构,它将为我们提供期望的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该理解不同的架构。

什么是架构模式?

根据维基百科,

一个架构模式是一个通用的、可重用的解决方案,用于解决给定环境下软件架构中常见的问题。架构模式类似于软件设计模式,但是范围更广。

在本文中,我将简要解释以下 10 种常见的架构模式及其用法和优缺点。

  1. 分层图案
  2. 客户机-服务器模式
  3. 主从模式
  4. 管道过滤器模式
  5. 经纪人模式
  6. 点对点模式
  7. 事件总线模式
  8. 模型-视图-控制器模式
  9. 黑板图案
  10. 口译员模式

1.分层模式

这种模式可以用来构建程序,这些程序可以分解成子任务组,每个子任务都处于特定的抽象层次。每一层都向上一层提供服务。

一般信息系统最常见的 4 层如下。

  • 表示层(又称 UI 层)
  • 应用层(又称服务层)
  • 业务逻辑层(也称域层)
  • 数据访问层(也称为持久层)

使用

  • 一般桌面应用程序。
  • 电子商务网络应用。

Layered pattern

2.客户机-服务器模式

这种模式由两方组成;一个服务器和多个客户端。服务器组件将向多个客户端组件提供服务。客户端向服务器请求服务,服务器向这些客户端提供相关服务。此外,服务器继续监听客户端请求。

使用

  • 电子邮件、文档共享和银行业务等在线应用。

Client-server pattern

3.主从模式

这种模式由两方组成;主人奴隶。主组件在相同的从组件之间分配工作,并根据从组件返回的结果计算最终结果。

使用

  • 在数据库复制中,主数据库被视为权威来源,从属数据库与之同步。
  • 计算机系统中连接到总线的外围设备(主驱动器和从驱动器)。

Master-slave pattern

4.管道过滤模式

这种模式可以用来构建产生和处理数据流的系统。每个处理步骤都包含在一个过滤器组件中。待处理的数据通过管道传递。这些管道可用于缓冲或同步目的。

使用

  • 编译器。连续过滤器执行词法分析、解析、语义分析和代码生成。
  • 生物信息学的工作流程。

Pipe-filter pattern

5.经纪人模式

这种模式用于构建具有解耦组件的分布式系统。这些组件可以通过远程服务调用相互交互。一个代理组件负责组件之间的通信协调。

服务器向代理发布它们的能力(服务和特征)。客户端向代理请求服务,然后代理将客户端从其注册中心重定向到合适的服务。

使用

Broker pattern

6.对等模式

在这种模式中,单个组件被称为对等体。对等体既可以作为客户端向其他对等体请求服务,也可以作为服务器向其他对等体提供服务。对等体可以充当客户端或服务器,或者两者兼而有之,并且它可以随时间动态地改变其角色。

使用

Peer-to-peer pattern

7.事件总线模式

该模式主要处理事件,有 4 个主要组成部分;事件源事件监听器通道事件总线。源将消息发布到事件总线上的特定通道。听众订阅特定的频道。侦听器会被通知发布到它们之前订阅的通道的消息。

使用

  • Android 开发
  • 通知服务

Event-bus pattern

8.模型-视图-控制器模式

这种模式,也称为 MVC 模式,将交互式应用程序分为 3 个部分,

  1. 模型 —包含核心功能和数据
  2. 视图 —向用户显示信息(可定义多个视图)
  3. 控制器 —处理来自用户的输入

这样做是为了将信息的内部表示与向用户呈现信息以及用户接受信息的方式分开。它将组件解耦,并允许高效的代码重用。

使用

  • 主要编程语言的万维网应用程序的体系结构。
  • Web 框架如DjangoRails

Model-view-controller pattern

9.黑板模式

这种模式对于不知道确定性解决策略的问题很有用。黑板模式由 3 个主要部分组成。

  • 黑板 —包含来自解空间的对象的结构化全局存储器
  • 知识源 —具有自身表示的专门模块
  • 控制组件 —选择、配置和执行模块。

所有组件都可以访问黑板。组件可以产生添加到黑板上的新数据对象。组件在黑板上寻找特定类型的数据,并可能通过与现有知识源的模式匹配来找到这些数据。

使用

  • 语音识别
  • 车辆识别和跟踪
  • 蛋白质结构鉴定
  • 声纳信号解释。

Blackboard pattern

10。解释器模式

该模式用于设计一个组件,该组件解释用专用语言编写的程序。它主要规定了如何评估程序行,即用特定语言编写的句子或表达式。基本思想是为语言的每个符号创建一个类。

使用

  • 数据库查询语言,如 SQL。
  • 用于描述通信协议的语言。

Interpreter pattern

建筑模式的比较

下表总结了每种架构模式的优缺点。

Comparison of Architectural Patterns

希望这篇文章对你有用。我很想听听你的想法。😇

感谢阅读。😊

干杯!😃

参考

https://www . ou . nl/documents/40554/791670/im 0203 _ 03 . pdf/30 DAE 517-691 e-b3c 7-22ed-a55ad 27726d 6

我在 2018 年探索的 10 个数据科学工具

原文:https://towardsdatascience.com/10-data-science-tools-i-explored-in-2018-d8226f99f342?source=collection_archive---------9-----------------------

Source: geralt (pixabay)

新的语言、库和服务

2018 年,我投入了大量时间学习和撰写关于数据科学方法和技术的文章。2018 年上半年,我写了一个关于创业公司数据科学的博客系列,我把它写成了一本书。下半年,我在 Zynga 开始了新的工作,学习了包括 PySpark 在内的许多新工具。这篇文章重点介绍了我在过去一年中探索的一些不同的图书馆和服务。

1。Bookdown 我使用 Bookdown 将我的博客系列的内容转化为可出版的格式和自行出版的书。这个包使数据科学家能够将 R Markdown 文档转换成多种格式,包括 PDF、epub 和 web 文档。大多数数据科学家可能已经在使用 markdown 了,因为它用于 Github 文档,这使得这个包非常适合放在您的工具箱中。支持许多不同的内核,这意味着这个库不仅限于 R 代码。我发现用 Bookdown 写一本书比用 Latex 容易得多,我的论文就是用 Latex 写的。

[## 创业数据科学:博客->书籍

数据科学家写书有很多令人信服的理由。我想更好地理解新工具,而且…

towardsdatascience.com](/data-science-for-startups-blog-book-bf53f86ca4d5)

2。DataFlow 我在 GCP 最喜欢的工具之一是 Cloud DataFlow,它使数据科学家能够创作在自动扩展和完全托管的环境中运行的数据管道。在过去的一年里,我写了如何使用数据流来创作数据管道生产模型游戏模拟。这是一个适合许多与 Spark 相同用例的工具,但我发现它更适合在构建流应用程序时使用。

[## 创业公司的数据科学:数据管道

我正在进行的关于在创业公司建立数据科学学科的系列文章的第三部分。您可以找到所有……

towardsdatascience.com](/data-science-for-startups-data-pipelines-786f6746a59a)

3。在 Zynga,我们已经开始使用 Python 生态系统来标准化我们的分析工具。在 2018 年开始我的新角色之前,我对这种语言的接触有限,必须快速掌握新的编程语言。我写了我学习 Python 的动机以及我学习 PySpark 和深度学习等新技术的愿望。我还写了我学习新数据科学语言的方法。我还在学习关于 Python 的新东西,但是现在已经对这门语言有了相当好的掌握。

[## 学习新的数据科学语言

在不断变化的数据科学工具生态系统中,您经常会发现自己需要学习一门新语言,以便…

towardsdatascience.com](/learning-a-new-data-science-language-aa7656be730a)

4。AWS Lambda 过去一年我一直关注的趋势之一是让数据科学家能够将模型投入生产。实现这一目标的一种可扩展方式是使用 AWS Lambda 等工具,这使得数据科学家能够在云中部署模型。使用 Lambda,您可以指定一个函数,比如将一个预测模型应用到一组输入变量,AWS 负责部署该函数,并使其具有可伸缩性和容错性。我写了一篇展示使用 AWS Lambda 部署一个分类模型的文章。

[## 创业数据科学:模型服务

我的创业数据科学系列的第二部分主要关注 Python。

towardsdatascience.com](/data-science-for-startups-model-services-2facf2dde81d)

5。Featuretools 深度学习的一大创新是能够从半结构化数据(如文本文档)中自动生成特征。结构化数据集的特征工程也取得了进展,例如 featuretools 库,它自动化了数据科学家在处理数据以建立预测模型时将执行的许多工作。使用此包,您可以定义数据集中不同表(实体)之间的关联,并且库会生成大量可应用于构建模型的要素。我展示了如何使用这种方法将 NHL 游戏分类为常规或季后赛。

[## 用于预测建模的自动化特征工程

使用 Python 和 FeatureTools 库预测哪些 NHL 比赛是季后赛。

towardsdatascience.com](/automated-feature-engineering-for-predictive-modeling-d8c9fa4e478b)

6。2018 年是我终于开始接触深度学习的一年。我最初使用 Keras 的 R 接口来构建深度学习模型,但后来过渡到 Python 来处理这个包。由于我大部分时间都在处理结构化数据集,我还没有发现多少深度学习是最佳方法的情况,但我发现使用定制损失函数的能力非常有用。我还写了关于使用 Java 通过数据流部署 Keras 模型的文章。

[## 创业公司的数据科学:深度学习

我正在进行的关于在创业公司建立数据科学学科的系列文章的第十部分,第一篇文章来自…

towardsdatascience.com](/data-science-for-startups-deep-learning-40d4d8af8009)

7。在学习 Python 之前,Jetty 是我用 Java 建立 web 服务的首选方法。Flask 是将 Python 函数公开为 web 调用的有用工具,对于构建微服务也很有用。我写了一篇关于使用 Flask 为深度学习分类器设置 web 端点的博文。在 GDC 2019 上,我们将展示 Zynga 如何使用 flask 和 gunicorn 来构建供内部使用的微服务。

[## 使用 Flask 部署 Keras 深度学习模型

这篇文章演示了如何使用 Keras 构建的深度学习模型来设置端点以服务于预测。它…

towardsdatascience.com](/deploying-keras-deep-learning-models-with-flask-5da4181436a2)

8。在过去的一年里,我在 PySpark 上做了越来越多的工作,因为它可以扩展到巨大的数据集,并且一旦你熟悉了 Python,就很容易接近它。如果你想开始,我写了一篇关于 PySpark 的简介,展示了如何开始运行一些常见的任务。在简介中,我展示了如何使用 Databricks community edition 来启动和运行 Spark 环境,但我也在博客中介绍了如何在 GCP 上使用 Dataproc 来建立 Spark 集群。

[## 创业数据科学:PySpark

我的创业数据科学系列的第四部分现在关注 Python。

towardsdatascience.com](/data-science-for-startups-pyspark-1acf51e9d6ba)

9。熊猫 UDF 并不是所有的 Python 代码都可以直接在 PySpark 中应用,但是熊猫 UDF 使得在 Spark 中重用 Python 代码变得容易得多。通过 Pandas 用户定义函数(UDF ),您可以使用 Pandas 数据帧编写函数,并指定用于分割数据帧的分区键。结果是,一个大的 Spark 数据帧在集群中的节点之间进行分区,转换为您的函数所操作的 Pandas 数据帧,然后将结果组合回一个大的 Spark 数据帧。这意味着您可以在分布式模式下使用现有的 Python 代码。我在我的 PySpark 介绍帖子中提供了一个熊猫 UDF 的例子。我将在 2019 年 Spark 峰会上展示 Zynga 如何使用 Pandas UDFs 构建预测模型。

[## PySpark 简介

PySpark 是一种很棒的语言,可以进行大规模的探索性数据分析,构建机器学习管道,以及…

towardsdatascience.com](/a-brief-introduction-to-pyspark-ff4284701873)

10。开放数据集 为了写过去一年的数据科学,我不得不提供开放数据集的例子。我使用的一些数据集包括来自 KaggleBigQuery政府数据集的例子。

[## 聚类前 1%:R 中的资产分析

美国最近通过的税改法案引发了许多关于该国财富分配的问题…

medium.freecodecamp.org](https://medium.freecodecamp.org/clustering-the-top-1-asset-analysis-in-r-6c529b382b42)

2018 年是学习新数据科学技术的伟大一年,我很高兴在新的一年继续学习。2019 年,我很期待探索强化学习,火花流,以及半结构化数据集的深度学习。

本·韦伯是 Zynga 的首席数据科学家。我们正在招聘

10 幅完美诠释日常生活的有趣图表

原文:https://towardsdatascience.com/10-funny-graphs-that-perfectly-explain-everyday-life-bdaa6565baa0?source=collection_archive---------6-----------------------

我们日常生活中的一些元素,几乎每个人都能很容易地联想到。有些很有趣,很有娱乐性,有些则完全令人沮丧。

为了让你的一周有一个好的开始,我们分享了 10 幅由 Visme 制作的有趣图表,它们完美地解释了日常生活。我们希望他们会给你一个开怀大笑!

1.狗和猫:它们有多想念你

每一个拥有这些宠物中任何一种的人都能体会到狗和猫在情感依恋水平上的差异。

到你的邮箱走一趟,狗会焦急地看着,以确保你没有被外星人绑架。另一方面,猫对人类的依赖程度稍低,人类生存的唯一目的就是为它们服务。

2.我女儿是如何打发时间的

青少年已经把狂看网飞带到了一个完全不同的水平。任何一个成功存活到两位数的孩子的父母都会立即理解维恩图所传达的信息。如果你剥夺了他们的机会,他们会立刻变得无聊、疲倦和/或饥饿。

3.自由职业者的理想日程与现实

Create infographics like this for free with Visme.

通往地狱的道路是由良好的意愿铺成的,尤其是对我们这些在家工作的自由职业者来说。完全控制你的时间表既美好又危险。尽管制定了最好的计划,每个人都有过 100%没有收获的一天。明天再试!

4.我应该喝咖啡吗?

“咖啡,是为冠军梦想加油的命脉!”如果迈克·迪特卡说这是真的,我们有什么理由不同意呢?有更复杂的流程图来解决这个问题,但在我们看来,这是一个简单的问题和简单的答案,总是导致喝更多的咖啡!

5.电视消费效率

有人会认为,在我们高度互联的数字世界里,打开电视,迅速找到值得观看的东西会容易得多。即使有线电视、卫星电视、网飞、Hulu 和许多其他流媒体服务上有数百个频道,在你试图找到一些东西观看的时候,它似乎仍然是一个电影荒原。

6.图形故障

有效的图表通常容易理解,并向受众传达感兴趣的信息。如果你试图创建有趣的图表更像是没有人理解的内部笑话,那么这个图表会引起你的共鸣。

7.iPhone 相对焦虑图

在这个世界上,每个人都认为有些活动和任务会产生焦虑和恐惧的时刻。12 月份逛商场或进入当地的车管所绝对是最重要的事情。

但是,没有充电器,看着你的 iPhone 电池寿命像沙漏中的沙子一样溜走,这就相当于在撒哈拉沙漠中耗尽了水。

8.你想去哪里吃饭?

这个话题在人们的生活中引起了更多的冲突,并且可能是大多数夫妻之间争吵的根源。做出错误的决定,你会后悔一辈子,或者至少,直到明天你面临同样的困境。

9.社交媒体类型的阴暗面

Create graphs like this for free with Visme.

我们知道社交媒体的一切都不是负面的,但你必须接受好的一面。想想脸书是如何开始的:大学男生在网上看女孩的照片并给她们打分。现在把这个数字乘以 12 亿人,你就会得到这个人格粪坑。

10.恶性循环

在冬天,在被窝里的头两分钟就像跳进一个冷水淋浴。从那以后,尝试用床单和毯子的正确组合来调节你的体温,以找到完美睡眠温度的难以捉摸的区域,似乎只是一种徒劳的练习。

太热时,把一条腿伸出被窝。把枕头翻过来。扔掉被子。10 分钟后再次冷醒,并重复令人作呕的动作。呃。

有什么好主意吗?

现在轮到你了。你对每个人都能理解的巧妙的图表有什么想法吗?在这里创建你自己的有趣的图表,并分享你的视觉效果,解释那些我们都在试图应对的日常、世俗的灾难。

本帖 原版 最早出现在 Visme 的 视觉学习中心

10 种随机梯度下降优化算法+备忘单

原文:https://towardsdatascience.com/10-gradient-descent-optimisation-algorithms-86989510b5e9?source=collection_archive---------3-----------------------

Photo by Julian Zett on Unsplash

深度学习你应该知道的随机梯度下降优化算法

(我在我的博客 这里 里维护了一张包括 RAdam 在内的这些优化者的小抄。)

变更日志:【2022 年 1 月 5 日—2020 年 5 月 4 日
修正附录 2 中那达慕公式的错别字
2020 年 3 月 21 日—分别用
m v 替换 V S ,更新死链接,回顾学习率和梯度组件的概念,更新直觉
2019 年 10 月 6 日—改进

梯度下降是一种寻找函数最小值的优化方法。它通常用于深度学习模型中,通过反向传播来更新神经网络的权重。

在这篇文章中,我将总结流行的深度学习框架(如 TensorFlow,Keras,PyTorch)中使用的常见梯度下降优化算法。这篇文章的目的是使使用一致的命名法阅读和消化公式变得容易,因为没有很多这样的总结。在这篇文章的末尾有一张小抄供你参考。

本帖假设读者对梯度下降 / 随机梯度下降有所了解。

(有关使用梯度下降优化器(如 SGD、momentum 和 Adam)的线性回归问题的演示,请单击此处的。)

随机梯度下降优化器是做什么的?

回想一下,标准随机梯度下降(SGD)通过用其梯度的因子(即 α ,学习率)减去当前权重来更新权重。

Eqn. 1: The terms in stochastic gradient descent

这个方程的变体通常被称为随机梯度下降优化器。它们的区别主要有三个方面:

  1. 调整“梯度分量”(【∂l/∂w】)
    不是像在随机香草梯度下降中那样仅使用一个单一梯度来更新权重,而是采用多个梯度的集合**。具体来说,这些优化器使用梯度的指数移动平均值
  2. 调整“学习率分量”(α),根据梯度的大小调整学习率,而不是保持恒定的学习率。
  3. (1)和(2) 适应梯度分量和学习率分量。

正如您将在后面看到的,这些优化器试图改进用于更新权重的信息量,主要是通过使用先前(和未来)的梯度,而不仅仅是当前可用的梯度。

下表总结了正在调整的“组件”:

Fig. 2: Gradient descent optimisers, the year in which the papers were published, and the components they act upon

内容

  1. 随机梯度下降
  2. 动力
  3. 阿达格拉德
  4. RMSprop
  5. 阿达德尔塔
  6. 困扰
  7. 圣经》和《古兰经》传统中)亚当(人类第一人的名字
  8. 阿达马克斯
  9. 那达慕
  10. 阿姆斯格勒

附录 1:备忘单

附录 2:直觉

附录 3:学习率调度器与随机梯度下降优化器

符号

  • t — 时间步长
  • w — 我们要更新的权重/参数,其中下标 t 索引时间步长 t 的权重。
  • α — 学习率
  • *∂l/∂w—l的梯度*,最小化的损失函数,w.r.t .到 w
  • 我还标准化了本文中使用的符号和希腊字母(因此可能与论文不同),以便我们可以在滚动时探索乐观主义者是如何“进化”的。

1.随机梯度下降

正如我们前面看到的,标准 SGD 使用当前梯度 ∂L/∂w 乘以某个称为学习率的因子 α来更新当前权重。

2.动力

带动量的梯度下降( Polyak,1964 )不是仅依赖于当前梯度来更新权重,而是用 m (“动量”)替换当前梯度,这是梯度的集合。该集合是当前和过去梯度的指数移动平均值(即,直到时间 t )。在这篇文章的后面,你会看到这个动量更新成为大多数优化者的渐变组件的标准更新。

在哪里

并且 m 被初始化为 0。

通用默认值:

  • β = 0.9

论动量的起源 注意,许多文章引用动量法来发表由 、1999 年 。然而,名为 Sutskever 等人 的论文将经典动量归因于 Polyak 在 1964 年发表的更早的出版物,如上所述。(感谢 詹姆斯 指出这一点。)

3.阿达格拉德

自适应梯度或 AdaGrad ( Duchi 等人,2011 )通过将学习率除以 v 的平方根来作用于学习率分量,该平方根是当前和过去平方梯度的累积和(即,直到时间 t )。请注意,与 SGD 中一样,梯度分量保持不变。

在哪里

并且 v 被初始化为 0。

注意 ε 被加到分母上。Keras 称之为模糊因子,一个小的浮点值,以确保我们永远不会遇到被零除的情况。

默认值(来自 Keras ):

  • α = 0.01
  • ε = 10⁻⁷

4.RMSprop

均方根 prop 或 RMSprop ( Hinton 等人,2012 )是另一种试图提高 AdaGrad 的自适应学习速率。我们不像 AdaGrad 那样采用梯度平方的累积和,而是采用指数移动平均(再次!)的这些梯度。与 momentum 类似,我们将慢慢看到这个更新成为大多数优化器的学习率组件的标准更新。

在哪里

并且 v 初始化为 0。

默认值(来自 Keras ):

  • α = 0.001
  • β = 0.9(论文作者推荐)
  • ε = 10⁻⁶

5.阿达德尔塔

像 RMSprop 一样,Adadelta ( 泽勒,2012 )也是 AdaGrad 的另一个改进,专注于学习率部分。Adadelta 可能是“自适应 delta”的简称,这里的 delta 指的是当前权重和新更新的权重之间的差值。

Adadelta 和 RMSprop 之间的区别在于,Adadelta 通过用 D、平方的指数移动平均值 deltas 来代替学习率参数,从而完全取消了学习率参数的使用。

在哪里

Dv 初始化为 0,并且

默认值(来自 Keras ):

  • β = 0.95
  • ε = 10⁻⁶

6.内斯特罗夫加速梯度(NAG)

在 Polyak 获得了他的势头(双关语😬),使用内斯特罗夫加速梯度进行了类似的更新( Sutskever 等人,2013 )。这次更新利用了 m ,我称之为投影梯度的指数移动平均。**

在哪里

并且 m 被初始化为 0。

第二个等式的最后一项是投影梯度。这个值可以通过使用先前的速度“向前一步”获得(公式。4).这意味着对于这个时间步骤 t ,我们必须在最终执行反向传播之前执行另一个正向传播。事情是这样的:

  1. 使用之前的速度将当前重量 w 更新为预计重量 w 。*

Eqn. 4

2.执行向前传播,但是使用这个投影权重。

3。*获得预计坡度 ∂L/∂w

4.相应地计算 Vw

通用默认值:

  • β = 0.9

关于 NAG 的起源 注意,最初的内斯特罗夫加速梯度论文( 内斯特罗夫,1983 )并不是关于随机梯度下降的,也没有明确使用梯度下降方程。因此,更合适的参考是上面提到的 Sutskever 等人在 2013 年的出版物,该出版物描述了 NAG 在随机梯度下降中的应用。(再次感谢 HackerNews 上詹姆斯的 评论 指出了这一点。)

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

自适应矩估计,或 Adam ( Kingma & Ba,2014 ),就是动量和 RMSprop 的简单结合。它作用于

  1. 使用 m 的梯度分量,梯度的指数移动平均(如动量),以及
  2. 通过将学习率 α 除以 v 的平方根得到的学习率分量,即平方梯度的指数移动平均值(类似于 RMSprop 中的)。

在哪里

是偏差修正,和

mv 初始化为 0。

作者建议的默认值:

  • α = 0.001
  • β ₁ = 0.9
  • β ₂ = 0.999
  • ε = 10⁻⁸

8.阿达马克斯

AdaMax ( Kingma & Ba,2015 )是由相同的作者使用无穷范数改编的亚当优化器(因此称为“Max”)。 m 是梯度的指数移动平均值,而 v 是过去 p 的指数移动平均值——梯度的范数,近似于最大值函数,如下所示。请参考他们的收敛性证明文件。

在哪里

是对 m 的偏差校正

mv 初始化为 0。

作者建议的默认值:

  • α = 0.002
  • β ₁ = 0.9
  • β ₂ = 0.999

9.那达慕

Nadam ( Dozat,2015 )是内斯特罗夫和亚当乐观者的缩写。然而,内斯特罗夫组件是比其原始实现更有效的修改。

首先,我想说明亚当乐观主义者也可以写成:

Eqn. 5: Weight update for Adam optimiser

那达慕使用内斯特罗夫提前一步更新梯度,将上面等式中之前的 m_hat 替换为当前的 m_hat :

在哪里

mv 初始化为 0。

默认值(取自 Keras ):

  • α = 0.002
  • β ₁ = 0.9
  • β ₂ = 0.999
  • ε = 10⁻⁷

10.阿姆斯格勒

亚当的另一个变体是 AMSGrad ( Reddi 等人,2018 )。该变体重新访问 Adam 中的自适应学习率组件并对其进行更改,以确保当前的 v 始终大于前一时间步v 。**

在哪里

mv 初始化为 0。

默认值(取自 Keras ):

  • α = 0.001
  • β ₁ = 0.9
  • β ₂ = 0.999
  • ε = 10⁻⁷

如果有什么不对的地方,或者这篇文章中有什么可以改进的地方,请联系我!✌🏼

附录 2:直觉

**

以上要点可在这里找到。用 QuickLaTeX 生成的图像。(感谢拉维指出那达慕更新中的错别字。)

附录 2:直觉

在这里,我想和你分享一些直觉,为什么梯度下降优化器对梯度分量使用指数移动平均,对学习率分量使用均方根。

为什么要取梯度的指数移动平均?

回想一下,我们需要更新权重,为此我们需要利用的某个值。我们拥有的唯一值是当前的梯度,所以我们只使用这个信息来更新权重。

但是只取当前的梯度值是不够的。我们希望我们的更新得到“更好的引导”这是通过使用先前关于梯度的信息来实现的。因此,让我们通过聚合当前渐变和过去渐变来包含以前的渐变。

聚合这些梯度的一种方法是对所有过去和当前梯度进行简单平均。但是等等,这意味着这些梯度的权重是相等的。这公平吗?也许吧。也许不是。

我们可以做的是采用指数移动平均,其中过去的梯度值被赋予比当前值更高的权重(重要性)。直观上,不考虑当前梯度的重要性将确保权重更新对当前梯度不敏感。

为什么要用平方梯度的指数平均值的根来除学习率?

调整学习率的目标是通过将学习率除以多个梯度的均方根来使优化器“更聪明”。所以让我们问自己这些问题:

  1. 为什么要走多重渐变?
  2. 为什么要分?
  3. 为什么要取平方梯度的指数移动平均的根?

前一节已经回答了第一个问题——除了当前梯度值,我们还想利用过去梯度的信息。

为了回答第二个问题,首先,考虑一个简单的情况,其中过去几次迭代的梯度的平均幅度为 0.01。由于该值接近于 0,这意味着我们一直在一个近似平坦的表面上(想象一段平坦的 3D 损失景观)。我们现在所在的地方,地球很平,所以我们很有信心在这个区域移动。事实上,我们想尽快离开这个区域,寻找一个向下的斜坡,这个斜坡可能会把我们带到一个全球性的最小值。(你可能会发现一些文章提到这有“加速”的效果。)因此,当梯度的幅度较小时,我们想要增加学习速率分量(学习得更快)。为了建立这种反比关系,我们取固定的学习速率 α 并除以梯度的平均幅度。这个适应的学习率(现在是一个大值)然后乘以梯度分量,给我们一个大的幅度的权重更新(不管是正的还是负的)。

直觉也适用于相反的情况。假设我们的梯度平均值很高,大约是 2.7。这意味着我们一直在陡坡上。我们希望谨慎行事,所以我们采取较小的步骤,这可以通过执行相同的划分来实现。

在最后一个问题中,我们采用指数移动平均线的原因在前面已经很明显了。我们取梯度的平方的原因很简单,当处理学习率分量时,我们关心的是它的大小。“抵消”这一点的自然选择是扎根。这背后可能有数学,但现在让我们用这种直觉来说服自己。

附录 3: 学习率调度器与随机梯度下降优化器

有些人可能会问——学习率调度器和随机梯度下降优化器之间有什么区别?这两者之间的主要区别在于,随机梯度下降优化器通过将学习率乘以一个因子来调整学习率分量,该因子是梯度的函数,而学习率调度器将学习率乘以一个因子,该因子是时间步长(或者甚至是常数)的函数。

参考

上面提到的每一个乐观主义者的论文

梯度下降优化算法概述 (ruder.io)

为什么动量真的有效

深度学习相关文章

RNN、LSTM 和 GRU 的动画

逐行 Word2Vec 实现(关于单词嵌入)

关于随机梯度下降线性回归的分步指南

统计深度学习模型中的参数数量

收件人:图文并茂的注意事项

图文并茂:自我关注

感谢 【任杰】德里克 、威廉 Tjhi、陈凯、澄净、 詹姆斯 对本文的想法、建议和更正。

关注我上 推特 @remykarem 或者LinkedIn。你也可以通过 raimi.bkarim@gmail.com 联系我。欢迎访问我的网站remykarem . github . io**

2017 年大数据分析的 10 大热门趋势

原文:https://towardsdatascience.com/10-hot-trends-of-big-data-analytics-for-2017-857679364890?source=collection_archive---------4-----------------------

当我们谈到大数据分析的时候,首先要明白这个数据为什么这么大,分析它的实际需求是什么。

数据科学(DS)和大数据的主要目标通常是在非结构化数据流中找到模式和模板,以便简化数据,建立工作模板以供进一步分析或发现异常(如检测欺诈)。

据 Gartner 称,当数据流有三个大 V 时,它才被认为是真正的大数据:

  • 容量—特定时间内流向系统的数据量
  • 多样性—传入的数据类型的数量
  • 速度—系统处理这些数据的速度

全球产生的数据量呈指数级增长,这导致了所谓的信息爆炸。随着数十种新疾病、智能手机类型、服装和汽车模型、家居用品等的出现,数据的种类也与日俱增。不断出现,不断寻找新的推广手段和营销渠道。不要忘记每天都有成百上千的模因和俚语出现。数据速度是要记住的第三件事。任何一天都会产生数 Pb 的数据,其中近 90%的数据永远不会被读取,更不用说加以利用了。

因此,如果企业希望利用其大数据存储来发掘和利用知识的金矿,分析是必不可少的。很长一段时间以来,人们试图分析这种数据流,但随着时间的推移,一些做法变得过时,而一些趋势变得热门。
以下是 2017 年最热门的 10 大数据分析趋势:

  • 云存储容量
  • 云计算能力
  • 神经网络
  • 具有分析功能的微服务
  • 面向开发人员和数据分析师的改进界面(R 语言和 Jupyter 笔记本)
  • 用于神经网络和构建 ML 模型的改进工具,以及它们的进一步培训(TensorFlow、MXNet、微软认知工具包 2.0、Scikit-learn)
  • 深度学习定制工具
  • 数据货币化
  • 流式分析
  • 非结构化数据分析

我们将在下面简要描述为什么这些要点都很重要。

云存储容量

随着公司运营的数据变得越来越大,存储数据的成本也变得相当高。由于建设和维护数据中心不是一般公司不愿意做的投资,从谷歌、亚马逊或 MS Azure 租赁这些资源是显而易见的解决方案。使用这些服务有助于解决大数据的要求。

云计算能力

一旦你有足够的容量来存储数据,你就需要足够的计算能力来处理它,以便提供足够的速度来使数据真正有价值。截至目前,亚马逊和谷歌提供了一系列有助于构建高效云计算的服务,任何企业都可以使用它们来处理大数据(谷歌云、谷歌 API 等)。)

神经网络

借助深度学习和其他机器学习算法,神经网络可以擅长各种各样的任务,从对罐头厂的原始植被进行分类,到在大型轨道望远镜拍摄的照片上发现新的天体。神经网络可以分析传入的数据流,并根据预先配置的参数突出显示模式或异常。这有助于大大自动化分析,并为在非结构化数据流中找到有价值的信息提供了强大的工具。

具有分析功能的微服务

旨在提供精确分析的微服务在规模和功能上都在快速增长。有工具可以测量一切,检查正在进行的支出和可疑支出的警报,处理照片,自动删除背景或突出图片的重要部分等。还有无数其他在线微服务,如著名的谷歌翻译,最近突然停止了胡言乱语,并开始抛出相当精美的文本,因为大量添加了各种机器学习算法。然而,随着行业的成熟,用户希望开发人员将精力转移到更复杂的应用程序上,这些应用程序将使用各种机器学习模型来分析历史数据,并更好地注意到新接收的流数据中的模式。

改进的界面

如今,数据分析师或决策者面临的一个问题是缺乏方便的 GUI 来在分析本身之上工作。像 R 语言和 Jupyter Notebook 这样的工具有助于提供数据分析结果的方便表示。与 Excel 电子表格相反,R 语言脚本可以轻松地调整和重新运行,使它们成为通用和可靠的工具。Jupyter 是 Julia、Python 和 R 的首字母缩写,是笔记本内核的第一个目标。这些内核允许创建带有实时代码、数据可视化、等式和解释性文本的文档,从而提供了方便的 ML 开发环境。

用于神经网络和构建 ML 模型的改进工具

TensorFlow、MXNet、Microsoft Cognitive Toolkit 2.0 和 Scikit-learn 等工具有助于开发人员和数据分析师摆脱特定于算法的方法,例如:

相反,这些平台允许使用特定的方法解决特定的任务,例如:

  • 使用 CNN 识别图片上的图像,
  • 使用决策树评估金融机构客户的可信度和可靠性,
  • 使用 LSTM 网络纠正文本中的文体和语法等。

总而言之,现在你不需要成为一名博士来获得神经网络,因为有大量有用的工具来构建专门的数据科学系统。例如,Tensorflow 是谷歌最近在翻译效率方面所有改进的背后支持者,并支撑着许多谷歌服务,有效地增加了它们的价值和业务影响。

深度学习定制工具

正如我们在最近关于深度学习的文章中解释的那样,虽然 AI 是机器学习、神经网络、机器智能和认知计算的总括术语,但它并不像我们预期的那样精确。截至目前,它仍然无法解释其行为的原因,做出道德选择或区分好与坏的行为。然而,在 2017 年,最大的价值将由定制的深度学习工具显示出来,这些工具基于对大型数据集重复应用的简单算法。是的,这些算法不会是万能的,但它们会在特定的任务中表现出色,在这些任务中,结果的一致性比潜在的洞察力重要得多。

数据货币化

预测性和规范性分析是帮助组织使用大数据工具最大限度地减少支出和盈利的方法。将分析结果作为服务出售,为客户传播和构建数据也可以成为一个有利可图的市场。

流式分析

实时流数据分析对于做出影响当前事件的决策至关重要。GPS 定位器使用这种逻辑来指示目的地。一个主要的好处是,来自其他用户的匿名数据流有助于避免路线创建过程中的瓶颈和交通堵塞。2017 年肯定会推出更多的流数据分析服务,因为它们的需求很高。

非结构化数据分析

数据可视化和机器学习算法的不断发展有助于不断提供新的和新类型的数据用于分析。对视频观看统计数据和社交媒体互动的分析是一座知识金矿,可以更好地个性化报价,并在更合适的时间显示更相关的广告,从而实现更好的转化。2017 年,此类服务将进一步发展壮大。

结论

总而言之,大数据分析如今正在蓬勃发展,并且没有放缓的迹象。而一些趋势,如每月商业智能报告、隔夜批量分析、以模型为中心的应用等。失去牵引力,新的热点趋势出现并获得流行。你对此有什么想法?我们是否错过了一些重要的东西或者包含了一些不太重要的东西?如果这篇文章有趣,请让我们知道并分享这个词!

最初发表于https://itsvit.com/blog/

设计网络安全技术系统的 10 个初步步骤

原文:https://towardsdatascience.com/10-initial-steps-towards-designing-a-secure-system-12747a58c3a?source=collection_archive---------19-----------------------

网络安全是一种思维方式,而不是必然的邪恶

我已经记不清有多少次我遇到过技术专家和程序员在开发系统中实现安全性时表现出完全懒散的态度。这种态度通常始于技术阶梯的最顶端,从首席执行官、首席技术官开始,一直向下延伸。传统观点似乎通常认为安全性只是实现一个密码系统。仅仅使用基本的安全措施在幕后进行的工作是如此频繁地进行并被认为是理所当然的,大多数人似乎认为这是实现起来最简单的事情之一。今天,我们依靠谷歌或脸书认证,再加上 Twilio 应用程序(或其他一些类似的服务)。再加上一个“https”证书,一切都完成了。对吗?

如果任何老板或程序员有这种想法,你就真的有麻烦了。这是非常错误的,这种思维过程是如此被误导,以至于它应该在一个对网络安全着迷(理所应当如此)的世界里拉响每一个警报。

这种误解,如果被程序员开发出来,对于他们正在开发的系统,当然还有他们的职业生涯,都是灾难性的。随着“后端”、“前端”和 NoSQL 系统的出现,这些系统必须与大量其他移动部件相互通信,安全必须成为一个主要问题。我说的“主要”是指它必然是每一个系统计划的一部分,而 从未被视为 是在系统完成或接近完成后才被构建到系统中的。采取将安全视为必须在以后阶段处理的邪恶的思维方式,必然会导致延迟、安全漏洞、网络入侵,并最终导致系统灾难。

重要的是要记住,今天许多系统都在处理健康、保险、银行和个人数据。这些系统不断被测试和升级,以防止不希望的访问,并具有网络安全层。然而,链中的弱点经常存在,有时甚至没有被考虑或注意到,直到一些未经授权的实体设法访问系统。

我将列出规划和创建安全系统的一些主要因素,而不是谈论它。让我重申一下。这些是在构建系统时要考虑和实现的主要因素。本文概述了许多(但肯定不是全部)需要安全规划的层次。它没有给出任何具体的代码或网络安全产品来帮助你。Auth2 层、JWT、加密方法和其他包装或通信技术不是本文的重点。相反,我的希望是训练你思考安全问题,理解需要解决的层次,然后在一致的基础上测试、更新和固定你所涉及的系统。

需要安全规划的系统组件:

一. 静态数据

答: 数据存储库 “数据存储库”只是一个花哨的术语,指的是保存数据的地方。在我的世界里,这将是 NoSQL 系统,但适用于 MySQL(及其变种)以及 NoSQL 系统。简而言之,“数据存储库”指的是等待访问的任何数据。当您处理 Redis、JSON(如果它用于保存数据而不是传输数据)和其他类似的数据存储库时,这变得更加复杂。这些系统中保存的所有信息都应被视为“静态数据”。

我们首先想到的应该是保护实际的存储库(我们还没有处理存储库中的数据)。让我举一个例子:
MongoDB 已经成为一个非常受欢迎的 NoSQL 数据存储库。在设置 MongoDB 安装时,有一个叫做“超级用户”的东西。但是,您需要实现这个用户。这是一个相当无痛的过程,不会超过几分钟。让 MongoDB 安装(或任何存储库)保持开放,而不定义各种用户访问,超级用户访问意味着您的数据存储库对任何 12 岁的黑客都是开放的。然而,根据我的经验,在专业公司,我经常会遇到这种情况。没有定义用户,没有创建密码,完全没有做任何事情来保护实际的存储库。即使你的系统在 AWS、Azure 或其他竞争对手的云系统上,或者即使它位于你办公室的服务器上,你也绝对必须保护你的数据存储库。无论是 MongoDB、Cassandra、Hadoop、Redis、MySQL 还是一个 JSON 文件。否则,你只是在公开邀请任何人访问你的数据。

第 1 点:始终保护您的存储库,至少要有用户密码访问。密码和连接字符串应该加密,但稍后会详细说明。

B. 存储库中的数据
静态数据,也指位于数据存储库中的实际数据。这些数据通常用于 CRUD(“创建、读取、更新、删除”)操作或分析。换句话说,在应该受到保护的数据存储库中,存放着真实的数据。这也被认为是“静态数据”,尽管许多人没有区分实际存储库和实际数据,这可能再次导致灾难性的结果。

再举一个相当简单的例子:
在您的 SQL 或 NoSQL 存储(甚至是 Redis 或 JSON 文件)中,您保存了关于 John Smith 的信息。假设有人设法突破了数据存储库层。一旦进入,每一条信息都是公开的,可供他们使用(比如:信用卡信息,或健康信息等。).如果不加密,这些静态数据就只会被窃取。

问题是如何防止这种情况发生?我可以听到程序员抱怨说“他要告诉我们加密库中的每一条信息”。嗯,是也不是。有时可能需要加密这些集合或数据表中的所有信息,尤其是所谓的“敏感”信息。敏感信息是您定义的敏感信息,有时是一种判断,有时只是一种常识。然而,你可以肯定的是,任何银行、健康、密码、保险信息都应该被认为是敏感的。其他信息可能不被视为敏感信息,不需要加密。然而,在 CRUD 例程中,在插入、更新和检索信息时,为所有信息创建一个合适的加密例程可能是需要考虑的事情。是的,它有时会使系统变慢几毫秒,并且您将被迫创建相当有趣的方式来运行查询,但是如果您在一个计划良好的算法中使用加密,延迟将是轻微的,并且肯定是值得的。当然,您将需要一种通过查询来访问您的信息的方式。是的,这需要额外的例程或函数调用以及系统范围的规划,但是值得安心。

要点 2:保护存储库中的实际数据是保护系统的一个重要方面。您选择加密哪些数据、如何加密以及需要解密时将调用什么方法,都取决于您的系统、其要求以及对数据敏感性本质的判断。

C. 纯文本数据文件
在后端系统中经常被忽略,是保存访问系统所需数据的各种数据文件。

例如,在 NodeJS 中,全局变量通常保存在这样的文件中。许多程序员都在使用优秀的 NPM 库,。env" (发音“点 env" )。不幸的是,这是一个纯文本文件(或者在某种上下文中可能是一个 JSON 文件)。尽管如此,它仍然是纯文本。在任何编辑器中打开它,你就可以阅读整个文件。这些全局变量通常用于控制对系统的访问,包括主要密码、连接参数等。都是你的系统所需要的。(正是由于这个原因,有些人不使用。env,而其他人则找到了更有创造性的方法来加密信息。)

几乎所有后端系统的全局变量都可以保存在服务器的操作系统中。但是,这意味着如果您有多台服务器,您必须在操作系统中设置每一台服务器(或者对您的主服务器进行镜像,并将该镜像复制到其他服务器)。您还可以在这个文本或 JSON 文件中嵌入加密信息,比如“pw1=encrypted password here ”,并让您的系统通过对解密例程的函数调用来解码这些信息。无论你选择了哪条路,都不要把这些信息保存在纯文本文件中。(记住 JSON key->values 也是纯文本。)

第三点:纯文本数据文件可能是你系统的致命弱点。这里简单的教训是,确保如果您使用纯文本文件来保存敏感数据,请决定某种类型的加密方法或混淆这些信息,使其不会被未经授权的来源轻易窃取和使用。

二。传输中的数据 术语“传输中的数据”是指通过线路向服务器、数据存储库发送并返回的所有数据。它还指服务器之间的数据传输。 通过 WiFi 或电缆发送到任何其他来源的任何数据都被视为“传输中的数据” 。这个概念足够简单。

用户打开 web 浏览器或手机,登录一个站点来接收或获取信息,沿着 CRUD 基线会发生某种类型的信息交换。发出信息请求并收到答复(即使“未授权”)。

当然,还有其他系统,比如聊天系统,其中传输中的数据是不变的。信息来回传递。即使它们没有保存在服务器上,或者在特定时间段后被删除,数据也必须从 A 点传输到 B 点,并且确实通过服务器传输。

这里的薄弱环节是数据在点与点之间移动的时候。如果没有加密,数据很容易被任何“窥探者”获取。这种类型的数据窥探和获取比你可能意识到的更频繁。看看 Telegram 和 WhatsApp 就知道了。Telegram 最初是一个完全安全的端到端系统。WhatsApp 也增加了端到端加密,以避免这种类型的入侵。

即使您忽略了对传输中的数据进行加密的需要,从而完全保护了静态数据的安全,您也在系统中留下了一个巨大的安全漏洞。这些数据,不管是什么路线,浏览器服务器;App 服务器;服务器服务器必须安全。(不要忘记,即使在聊天系统中,消息也是通过服务器转发给接收者的。)

第四点:保护传输中的数据非常重要。这包括必须从 A 点移动到 b 点的所有数据。如果您不保护这些数据,系统将非常容易受到攻击。

三。 HTTP,HTTPS&HTTP/2
【S】因素
——近来,对于 HTTPS 的实现和使用有一种难以置信的误解,https 对从网络服务器到浏览器的信息进行加密。每当有人告诉我创建一个 https 网站,只是在服务器上从 http 转换成 https 的问题时,我都希望我有一美元。事实上,在传统的上一代 LAMP (Linux、Apache、MySQL、PHP/Python/Perl)设置中,只需要用有效的证书设置 Apache 服务器并转移到 https。您甚至可以自动重定向所有 http 请求来使用 https。随着 Let's Encrypt 作为一个免费且非常容易使用的替代软件的出现,这变得更加容易和便宜。

然而,在这个时代,对于复杂的后端系统,系统的后端代码本身必须改变。例如,在 NodeJS 中,访问 http 服务器的代码(即使只使用 Express)将不同于访问 https 的代码。这适用于目前所有的后端。使用 http 启动一个代码库,并认为这只是添加一个“s”的问题,这是一种极端的过度简化,而且成本也很高。

如果您在开发服务器上使用 http,并认为这只是简单地向 Apache 服务器添加一个证书来创建 https,那么您可能会发现自己陷入了编码的地狱。(如果你的系统是新的,它肯定不会遵循传统的构建方式。它甚至可能不需要 Apache 服务器,这将导致对 https 模块的更多规划。)突然,在发布的前几天甚至前一天,当发现代码库不能处理 https 时,一切都乱套了。这种事我见得多了,都记不清了。

第五点:用 https 搭建一个安全的系统,应该在开发的最开始就做。认为扔在一个“证书”和添加一个“s”,肯定不会削减它。请记住,如果您在 VPC 或 NAT 网关或其他系统上有多台服务器,更新证书(尤其是加密)不会是一个自动的过程。所有这些都必须在将系统投入生产之前进行规划。

四。登录&密码 网上肯定有足够的关于登录&密码安全的信息。不幸的是,许多 web 开发人员认为对密码和登录信息使用简单的加密程序就足够了。正如我在开始时所说的,这不是一篇关于加密方法的文章。然而,有几个要点您确实需要在一开始就知道,如果仅仅是因为它们适用于任何登录过程的话。这些点会影响您遵循的静态数据和传输中数据过程。

显然,经过我们上面的解释,不加密存储密码或不加密通过线路发送密码只是一个不应该存在的安全漏洞。然而,即使加密的密码也不是真正的答案。有数以百万计的密码解密系统可供任何人使用。此外,众所周知,密码有时真的很容易猜测或找到。

此外,还有内部安全需要警惕(将在下面讨论)。由于本文篇幅有限,我不会在这里讨论所有的可能性和安全漏洞。当涉及到密码时,记住术语【salt】是很重要的,甚至是关键的。如果你不知道“加盐”是什么,我强烈建议你至少看一下维基百科的文章: Salt (cryptography)

我将引用维基百科的文章介绍,这样你就能理解“加盐”的基本原理。

在密码学中,salt 是随机数据,用作单向函数的附加输入,该单向函数“散列”数据、密码或密码短语。盐与现时的概念密切相关。salts 的主要功能是防御字典攻击或其散列等价物,即预先计算的彩虹表攻击。

盐是用来保护密码的。过去,密码是以明文形式存储在系统中的,但是随着时间的推移,开发出了额外的安全措施来保护用户的密码不被系统读取。盐是其中一种方法。

为每个密码随机生成一个新的 salt。在典型的设置中,salt 和密码(或其在密钥扩展后的版本)被连接在一起,并使用加密哈希函数进行处理,并且结果输出(而不是原始密码)与 salt 一起存储在数据库中。哈希允许以后进行身份验证,而无需在身份验证数据存储受损的情况下保留明文密码,因此不会冒风险。

因为盐不需要被人记住,所以它们可以使成功攻击所需的彩虹表的大小大得惊人,而不会给用户带来负担。由于 saltss 在每种情况下都是不同的,所以它们还通过使相同密码的所有 salt 散列实例互不相同来保护常用密码,或者在几个站点上使用相同密码的人。
参见维基百科:Salt(密码学)

第六点:总是使用“加盐”密码。不要将未加密的密码存储在数据存储库中,即使存储库本身已经受到保护。密码和其他敏感材料需要包含一个单向散列,使用“彩虹表”无法破解。当然,如果授权用户忘记了以前的密码,您将需要一个系统来让他们更改密码或创建新密码,因为“salt”方法是单向的,没有用于对信息加盐的原始密钥就无法解密(没有人,甚至是您,应该知道或拥有该密钥)。

V. Web &移动 显而易见,Web &移动访问也是安全流程的一部分。有了 JWT (JSON Web Tokens)和/或 AUTH 层,(PHP-Laravel 程序员将熟悉 Auth2 协议),一些人认为这就是所需要的。当然,这是一个很大的进步,但是正如你所看到的,这还不够。使用谷歌或脸书认证协议(或其他一些认证协议)是值得考虑的。然而,有些人不想使用这些登录的可能性。他们希望使用他们已经习惯的用户名-密码组合。如果你确实提供了这种可能性,那么试着按照上面和下面的建议去做。当然,对于移动和两步认证,通过手机或使用 Twilio 等服务,这变得相当简单,但需要在您的代码库中进行规划。

要点 7:无论你选择使用何种方法访问你的网站或应用程序,你都需要在你的代码库以及使用服务的成本中做好计划。你必须确保登录时输入的所有内容在整个过程中都是安全的。

六。Redis,JSON 和所有其他的

我是 Redis 的忠实粉丝。大多数情况下,它被用作键->值数据存储,尽管您可以在存储信息时变得更加复杂。由于电子存储器的速度以及使用 Redis 存储信息的简单性,许多系统都使用 Redis。幸运的是,Redis 在其存储库中为静态数据提供了加密,当然也为存储库本身提供了加密。(这里我强烈建议认真考虑使用"" Redis Labs"如果你打算使用 Redis。)

JSON 最常用于浏览器或 app 与后端之间的信息传递。然而,JSON 也用于保存静态信息。NodeJS 程序员将会习惯这个概念,特别是如果他们已经处理了 PM2 或其他类似的工具。JSON 还允许 NodeJS 尽可能快速地获取静态信息。

所有静态信息都被视为静态数据,应被视为可能的安全漏洞。 当您决定采用一个系统或添加另一个因素(如 Redis)时,您就需要开始考虑保护静态数据存储库中的任何信息。

第 8 点:当您选择将所有类型的数据存储库合并到您的系统中时,必须考虑它们。不要只将 NoSQL 或 SQL 数据存储视为数据存储库。如果您不加密这些数据并将其公开,那么您的系统就会留下一个巨大的安全漏洞。

七。 内部安全 最容易被忽视也是最敏感的领域之一就是所谓的“内部”安全。如果你想引人注目或者为了个人利益而“偷窃”,你可以称之为“商业间谍”。无论原因是什么,内部安全确实是一个值得关注的问题。显然,您的首席 DBA 将有权访问超级管理员密码。你的团队中还有一些其他人,出于发展的原因,自然会接触到所有这些信息。当然,大公司对于敏感信息的共享和发送有非常严格的惯例和规则。然而,在我们这个创业公司和首席执行官、首席技术官、首席运营官的&副总裁的世界里,他们没有经验,有时不知道发展是什么、为什么、如何发展,分享这些关键信息是在没有任何指导方针或监督的情况下完成的。

要点 9:在公司中,沟通总是至关重要的,当沟通不受监督时,比如在初创公司,沟通是通过各种系统进行的,比如电子邮件、WhatsApp、短信、Slack 等。不惜一切代价抵制通过任何电子邮件系统发送敏感信息,如密码和凭证。将“需要知道”保持在最低限度。你的首席运营官真的需要知道服务器的访问密码吗?你的前端程序员需要了解他们吗?保留一份谁有什么权限的详细列表。 作为额外的预防措施,尽快用密码和连接字符串构建文件,然后决定如何加密它。任何需要访问的人都会被一个经过验证的人添加到这个文件中,因此用户只知道他们自己的个人密码和登录程序。此外,在某种数据存储库中保存关于谁从内部访问了您的服务器的详细日志也是非常必要的。相信我,迟早你会需要回顾它们。

结论:

保持理智——你永远不会 100%安全。接受这个。让这成为你的咒语。无论你做了多少努力,总会有一些黑客试图进入你的系统并窃取数据。DDOS 攻击将一直存在。你的工作是确保你晚上睡觉时不会一直担心安全漏洞和马裤。小心点。了解您正在构建什么以及系统的所有活动部分,提前计划,不要将安全性留到最后一刻。这是一种心态。

第十点:保持理智。保持冷静。为你能想到的一切做好计划,了解你的系统和所有活动部件。不断寻找你忘记的一件小事。记住,保持理智&让安全成为一种心态!


作者简介:Ted Gross 担任 CTO 多年,擅长数据库技术、Node.js、PHP 和 OOP。他还发表了许多关于技术主题的文章,特别是关于大数据和混沌理论的文章(在专业期刊和在线@ 媒体 & LinkedIn )。他也是文学小说、儿童书籍和各种非小说类文章的作者。他的短篇小说集, 《古代故事,现代传说》 获得了极好的评价。

可以通过电子邮件联系到泰德:tedwgross@gmail.com;推特(@ tedw gross);LinkedIn中等

来自《走向数据科学》编辑的提示: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

实现企业大数据分析的 10 项关键技术

原文:https://towardsdatascience.com/10-key-technologies-that-enable-big-data-analytics-for-businesses-d82703891e2f?source=collection_archive---------3-----------------------

Ref — https://www.comparethecloud.net/news/survey-reveals-50-point-big-data-adoption-chasm-in-uk-public-sector/

大数据分析技术是多种技术和处理方法的结合。使它们有效的是企业集体使用它们来获得战略管理和实施的相关结果。

尽管有投资热情和利用数据的力量来转变企业的雄心,但结果因成功而异。组织仍在努力打造被认为是“数据驱动”的文化。在报告开始这样一个项目的高管中,只有 40.2%的人报告说取得了成功。巨大的转变需要时间,尽管绝大多数公司渴望成为“数据驱动型”,但只有很少一部分公司实现了这一雄心。文化转变很少在一夜之间发生。

在大数据的演进过程中,大多数公司面临的挑战与技术无关。采用的最大障碍与文化挑战有关:组织一致性、抵制或缺乏理解,以及变更管理。

以下是为企业实现大数据的一些关键技术:

Ref — https://www.marutitech.com/big-data-analytics-will-play-important-role-businesses/

1)预测分析

作为企业规避决策风险的主要工具之一,预测分析可以帮助企业。通过处理大数据,预测分析硬件和软件解决方案可用于预测场景的发现、评估和部署。这些数据可以帮助公司为即将到来的事情做好准备,并通过分析和理解问题来帮助解决问题。

2) NoSQL 数据库

这些数据库用于跨可扩展数量的存储节点进行可靠、高效的数据管理。 NoSQL 数据库将数据存储为关系数据库表、JSON 文档或键值对。

3)知识发现工具

这些工具允许企业挖掘存储在多个来源上的大数据(结构化和非结构化)。这些源可以是不同的文件系统、API、DBMS 或类似的平台。有了搜索和知识发现工具,企业可以隔离和利用信息为自己谋利。

4)流分析

有时,一个组织需要处理的数据可能会以多种格式存储在多个平台上。流分析软件对于这种大数据的过滤、聚合和分析非常有用。流分析还允许连接到外部数据源,并将它们集成到应用程序流中。

5)内存中的数据结构

这项技术有助于在动态 RAM、闪存或固态存储驱动器等系统资源中分发大量数据。这进而实现了在连接的节点上对大数据的低延迟访问和处理。

6)分布式存储

作为应对独立节点故障和大数据源丢失或损坏的一种方式,分布式文件存储包含复制的数据。有时,数据还会被复制,以便在大型计算机网络上进行低延迟快速访问。这些通常是非关系数据库。

7)数据虚拟化

它使应用程序能够检索数据,而无需实施技术限制,如数据格式、数据的物理位置等。Apache Hadoop 和其他分布式数据存储使用数据虚拟化来实时或接近实时地访问存储在各种平台上的数据,这是最常用的大数据技术之一。

8)数据集成

对于大多数处理大数据的组织来说,一个关键的运营挑战是以对客户交付有用的方式处理 TB(或 Pb)数据。数据集成工具允许企业跨多个大数据解决方案(如 Amazon EMR、Apache Hive、Apache Pig、Apache Spark、Hadoop、MapReduce、MongoDB 和 Couchbase)简化数据。

9)数据预处理

这些软件解决方案用于将数据处理成一致的格式,并可用于进一步分析。数据准备工具通过格式化和清理非结构化数据集来加速数据共享过程。数据预处理的一个局限性是,它的所有任务都不能自动化,需要人工监督,这可能是乏味且耗时的。

10)数据质量

大数据处理的一个重要参数是数据质量。数据质量软件可以利用并行处理对大型数据集进行清理和丰富。这些软件被广泛用于从大数据处理中获得一致和可靠的输出。

总之大数据已经被用于提高运营效率,根据最新的即时信息做出明智决策的能力正迅速成为主流标准。

毫无疑问,大数据将继续在全球许多不同行业发挥重要作用。它肯定能为一个商业组织创造奇迹。为了获得更多收益,对您的员工进行大数据管理培训非常重要。借助对大数据的适当管理,您的企业将变得更有生产力和效率。

参加谷歌人工智能挑战赛的 10 条经验

原文:https://towardsdatascience.com/10-lessons-learned-from-participating-to-google-ai-challenge-268b4aa87efa?source=collection_archive---------13-----------------------

快,画!涂鸦识别挑战赛是由谷歌 AI 赞助、 Kaggle 主持的人工智能挑战赛。

我的团队在这次比赛中获得了第 46 名,而 1584 名选手和 1316 支队伍参加了这次比赛。以下是我想与大家分享的一些背景、见解和感受,以及我们是如何与金牌失之交臂的。

挑战概述

这个挑战的目的很简单,猜猜有人在画什么。不是你,你的电脑会猜。听起来很有趣,对吧?

换句话说,你的电脑是否足够智能来决定下面画的是什么?

Sample images from the quickdraw-dataset

有点简单化的定义?以下是官方描述:

[## 快,画!涂鸦识别挑战

你能多准确地识别涂鸦?

www.kaggle.com](https://www.kaggle.com/c/quickdraw-doodle-recognition)

“快,画!”作为一款实验性游戏发布,以一种有趣的方式教育公众人工智能是如何工作的。该游戏提示用户绘制描述某一类别的图像,例如“香蕉”、“桌子”等。这个游戏产生了超过 1B 的图画,其中的一个子集被公开发布作为这个比赛的训练集的基础。该子集包含 5000 万张图纸,涵盖 340 个标签类别。

听起来很有趣,对吧?挑战在这里:由于训练数据来自游戏本身,图纸可能不完整或可能与标签不符。您需要构建一个识别器,它可以有效地从这些有噪声的数据中学习,并在来自不同发行版的手动标记的测试集上表现良好。

你的任务是为现有的 Quick,Draw 建立一个更好的分类器!数据集。通过在这个数据集上推进模型,Kagglers 可以更广泛地改进模式识别解决方案。这将对手写识别及其在 OCR(光学字符识别)、ASR(自动语音识别)和 NLP(自然语言处理)等领域的强大应用产生直接影响。

✎队😭😴

首先,我真的要感谢我所有的队友,没有他们这是不可能的!

其次,让我们解释一下背景:我喜欢学习关于软件工程、科学、编程的新东西……人工智能/机器学习是我最近一年来的学习热情。在这个领域我还是个新手,但我发现它真的很吸引人。所以为了活出我的新激情,我在 Kaggle 上开始了另一个新的挑战(准确地说是第六次),那就是 快,画!涂鸦识别挑战 。到目前为止,我独自参加了所有的挑战,我觉得已经准备好加入一个团队,我在 Kaggle 论坛上发表了这篇文章,那时我在排行榜上大约是第 84 名。我从其他同样没有团队的 Kagglers 那里得到了一些答案,要么是通过论坛,要么是直接给我发消息让我加入团队。很难决定和谁组队,所以我和卡格勒建立了一个团队,和我当时在排行榜上的水平差不多。

这是最终的魔术队:

  • 我自己,迷人的队长
  • phun :团队的调和炼金术师
  • 卡莉莉:团队深度模型向导
  • YIANG :团队的机器学习魔术师

我们来自中国、法国和美国。

有一段时间,球队用了我的名字,但最终,我们搬到了“✎”😭😴".一个很好玩的队名,但我还是不知道怎么念,但至少让你想象到了我们的团队故事。

Lesson 1: Build a team with people having the same level as you in the competition. That way everyone feels comfortable working together.

在挑战中,我的队友们的敬业精神给我留下了深刻的印象。每次有任务出现(训练一个新模型,调查一个解决方案),他们都会站起来去做。

(深入)学习对我来说很关键

我是一个学习者,所以我决定这次比赛使用:新的硬件,新的人工智能框架和新技术。那很有趣!

我们不断前进,打开新的大门,做新的事情,因为我们很好奇,好奇心不断引领我们走上新的道路。华特·迪士尼

新硬件

在我之前参加的 Kaggle 比赛中,我家里没有具备计算能力的 GPU 可以使用,所以我通常使用免费的 Kaggle 内核谷歌合作实验室。他们免费使用,提供一个旧的和缓慢的,但可靠的 K80 GPU,但他们是有限的时间。所以我决定是时候给我的电脑换一个全新的显卡,配一个像样的 GPU 了。我指的是一个 GPU,我可以用它来做有趣的新事物,比如深度学习。于是我的电脑迎来了一款 rtx 2080 ti ,NVIDIA 于 2018 年 9 月 27 日推出。给你一个思路,比赛从 2018 年 9 月 26 日开始,历时两个月。我不能让它更近一些。

[## NVIDIA GeForce RTX 2080 Ti 显卡

GeForce RTX 2080 Ti 领先其他卡几光年…

www.nvidia.com](https://www.nvidia.com/en-us/geforce/graphics-cards/rtx-2080-ti/)

由于数据集的规模(5000 万张图片),硬件在这场比赛中至关重要。这场竞赛的获胜者展示了他们拥有惊人的计算能力。

我可以告诉你,仅仅因为你无法使用 GPU 而无法尝试新算法是令人沮丧的。

Lesson 2: Choose wisely the competition you want to participate in based on your compute resources (local or cloud).

新的自定义二进制文件

硬件相当新,但随之而来的是一些问题。为了使用我的显卡的所有功能,我不得不使用 NVIDIA 的 CUDA 10,没有官方支持的机器学习框架,也没有预建的二进制文件。

首先,我必须用 Ubuntu 18.04 重新安装我的 Linux 电脑,因为 NVIDIA 驱动程序 410.72,CUDA 10.0,cuDNN 7.3.1 和 NCCL 2.3.5 只在这个 LTS(长期支持)版本的 Ubuntu 中受支持。

所以我不得不使用 CUDA 10 从源代码重新编译 Google 的 tensorflow这里的是解释如何做的教程。

[## 张量流

面向所有人的开源机器学习框架

www.tensorflow.org](https://www.tensorflow.org/)

我还必须用 CUDA 10 从脸书和优步维护的源码 pytorch 中编译。

[## 皮托赫/皮托赫

Python 中具有强 GPU 加速的张量和动态神经网络- pytorch/pytorch

github.com](https://github.com/pytorch/pytorch)

注意:为你的 CPU 架构编译软件(GCC -march 选项)可能会提供巨大的提升。在我的测试中,启用 tensorflow 中的 AVX2 将 CPU 计算时间除以 2。

Lesson 3: Optimize your software stack for the task. E.g. Recompile tensorflow from source, as the pre-built downloadable version is compiled for maximum CPU compatibility and not maximum performance.

新的深度学习框架

我已经使用了 kerasGoogle tensorflow ,keras 对初学者来说是一个很好的框架,Google tensorflow 非常强大,可以补充 Keras,也可以单独使用。这些都是非常有趣和成熟的框架。

[## 克拉斯

Keras,Python 深度学习库。

keras.io](https://keras.io/)

所以我决定通过使用 fastai 1.0 库来尝试一些新的东西。它是在 pytorch 框架之上的一个高级库。所以我在这里看到了学习新事物的潜力。

[## 法斯泰/法斯泰

fastai 深度学习库,加上课程和教程

github.com](https://github.com/fastai/fastai)

最后,我发现这个 fastai 库非常有趣,它提供了一个高级接口和一个简单的使用流程。但是由于该库相当新,(第一个 1.0 版本于 2018 年 10 月 16 日发布),所使用的版本(1.0.26)有许多怪癖(例如,如果 find_lr 没有在它之前运行,则无法执行预测),错误(当启用混合精度时,许多函数会抛出异常),并且文档有许多缺陷(如何在深度学习模型上定制头部)?).最重要的是, g 中的语义版本不受尊重,所以我警告你即使在补丁版本之间也会有代码兼容性问题(我为 1.0.26 编写的代码与 1.0.28 不兼容)。

但是,这个库内置了非常好的东西,比如 1cycle policy、学习率查找器和(部分)混合精度支持。当我写这篇文章的时候,几乎每天都有新的版本发布,所以进展也很快。

Lesson 4: Read the source Luke. You will learn how these libraries and frameworks work, especially if the documentation is incomplete.

最新最先进的技术

混合精度是我选择 rtx-2080-ti 而不是更便宜的 gtx-1080-ti 的关键因素之一。rtx-2080-ti 是 NVIDIA 第一款支持 16 位浮点(fp16)的非专业显卡。

你可能会问你一直跟我说的混合精度是什么?这是一组技巧,允许在深度神经网络中使用 16 位浮点而不是 32 位浮点,从而将内存减少两倍,并将计算吞吐量增加相同或更多倍。

关于混合精度的更精确定义,你可以参考 NVIDIA 开发者博客:

深度神经网络(DNNs)已经导致了许多领域的突破,包括图像处理和理解、语言建模、语言翻译、语音处理、游戏以及许多其他领域。为了实现这些结果,DNN 的复杂性一直在增加,这反过来增加了训练这些网络所需的计算资源。混合精度训练通过使用较低精度的算法来降低所需的资源,这具有以下优点。

减少所需的内存量。半精度浮点格式(FP16)使用 16 位,而单精度浮点格式(FP32)使用 32 位。降低所需的内存可以训练更大的模型或训练更大的迷你批次。

缩短训练或推理时间。执行时间可能对内存或运算带宽很敏感。半精度将访问的字节数减半,从而减少了在内存有限的层上花费的时间。与单精度相比,NVIDIA GPUs 提供高达 8 倍的半精度算术吞吐量,从而加速数学受限层。

由于 DNN 训练传统上依赖于 IEEE 单精度格式,本文的重点是半精度训练,同时保持单精度实现的网络精度[…]。这种技术被称为混合精度训练,因为它同时使用单精度和半精度表示。

NVIDIA 还提供了一个 6 分钟的视频,解释如何使用 tensorflow 实现它:

Lesson 5: Take full advantage of your hardware, use mixed-precision if your hardware is compatible.

我的工作要点

免责声明:我将只展示我为这次比赛写的一部分代码,我的队友绝对而不是对我糟糕和错误的代码负责。该代码的一部分灵感来自伟大的 Kaggler 在 ka ggle 内核和论坛中分享他们的见解和代码。我希望我没有忘记提到其中一个值得称赞的例子。

完整的源代码可以在我的 github 库上找到。

本部分可能包含一些技术术语。

SQLite 的使用

为此挑战提供了一个训练数据集。它包含 5000 万张图像,每张图像都有详细信息:图像属于哪个类别、唯一标识符(key_id)、绘图来自哪个国家(country)以及复制绘图的笔画点(drawing)。

挑战训练数据集以 CSV 文件的形式提供(正好 340 个文件),每个类别一个文件(一个文件用于飞机类别,另一个文件用于西瓜……)。当你想随机洗牌样本来训练一个深度学习模型时,这并不是最方便的。所以我必须把它们转换成更方便的方式。

首先,我去了 fastai 的通常和深度整合的做法;即每个样本有一个图像文件。但是使用这个解决方案,在如此大的数据集下,我面临另一个挑战:我的 Linux 文件系统没有配置为支持如此大量的索引节点(向文件系统添加了 5000 万个文件,因此创建了 5000 万个新的索引节点),结果文件系统在没有使用所有可用 GB 的情况下就满了。必须使用另一种解决方案。有许多文件格式可以包含数据( picklehdf5dask 、CSV……)。经过一些实验,我想出了一个 SQLite 数据库方法。

该数据库是使用 Jupyter 笔记本生成的,可在 my github 上获得,并命名为1-concat-csvs-into-SQLite . ipynb数据库中实现的数据结构非常简单:

  • 用训练样本训练
  • 用测试样品测试
  • 类别表,每个可用类别用一个整数编码

Overview of the database structure

这种方法允许我将所有的训练和测试数据集保存在一个文件中。在我的各种实验中,我还注意到,与通常使用的每个样本一个图像文件相比,SQLite 方法具有额外的优势,可以减少 SSD 上的 I/O 数量。

第六课:不要害怕使用数据库。如果数据库服务器是多余的,那么考虑 SQLite。

如果你看我下面的代码,你可能会注意到我正在使用并行工作器将动态图像从一列笔画转换成一幅图像;这是通过使用全局锁来访问数据库实现的。我最初的意图是通过为每个 worker 提供一个 SQLite 文件对象来实现以只读模式访问数据库的并行 worker,但是在这样做之前,我首先尝试在单个 SQLite 对象上使用全局锁,它令人惊讶地立即给出了不错的结果(GPU 使用率为 98%),这就是为什么我甚至懒得改进它。

Lock in image generator callback

图像笔画

这个比赛的一个重要部分就是把一系列的笔画变成有用的东西。论坛中描述了两种主要方法。要么使用笔画作为可变大小的输入,为此可以使用递归神经网络 (RNN)(具有 LSTM 或 GRU 层),要么将它们转换为图像,为此我们可以使用卷积神经网络 (CNN)。我个人只探索了最新的。

将笔画编码成图像很简单,只需要在笔画点之间画线。但是为了给 CNN 提供尽可能多的信息,我们需要帮助他区分不同的笔画,例如使用不同的颜色。

为此,我从白鲸的内核中获得灵感,这是许多竞争对手的基准:

Beluga’s stroke to image function

但是我注意到这段代码有一些问题:

  • 以 256x256 px 绘制图像,然后将其大小调整为 64x64 px 会占用大量 CPU 资源,并使图像模糊。
  • 生成的图像仅在一个通道上。
  • 这段代码没有正确处理图像边界,绘图的一小部分脱离了图像。
  • 如果你想用更大的图像训练一个神经网络,那么应该明智地选择线宽来处理图像缩放。

Images generated, sample taken from Beluga’s kernel

进行了以下改进:

  • 避免在图像外画线。
  • 直接在最终空间计算线条位置,避免无用的图像大小调整。
  • 添加一个小边界(2 像素),以便第一个卷积层(3x3)可以更容易地检测线条。
  • 使用 3 个通道来编码颜色。选择调色板,使线条不会出现在每个图层上,但连续的笔画至少有一个共同的通道。
  • 最初的笔画通常表示有助于识别物体的整体形状,而最近的笔画是简单的细节。因此笔画以相反的顺序绘制,这样最后的笔画不会与第一个笔画重叠。
  • 线宽是一个独立于最终图像大小的超参数,它确保在较大的图像上进行更快的迁移学习。

注意:我没有对提供的速度或时间进行编码,这可能会增加 CNN 可以使用的更多信息。

My strokes to images code

Image generated

第 7 课:其他竞争对手共享的内核通常是很好的基线。从他们那里获得灵感,改进他们的工作,让你达到顶峰。

卷积神经网络模型

既然数据已经准备就绪,我必须选择使用哪种人工智能算法。使用卷积神经网络的深度学习是图像识别的最先进技术。很明显,我选择走那条路。

https://towardsdatascience.com/cousins-of-artificial-intelligence-dda4edc27b55

在这篇博客文章和共享源代码中,我将描述一个单一的深度学习模型,以避免无用的复杂性。所以我用的是 resnet-18 型号。这个模型是一个“浅层”深度学习模型,更深层的模型肯定会在这个数据集上给出更好的结果,例如 se-resnext-50xception 。我决定不在这里展示它们,因为它们需要更多的时间来训练,并且不会为这个快速展示的目的提供额外的价值。当然,我们的团队训练了更深层次的模型,以达到第 46 位。😄

这个 resnet-18 模型是从零开始训练的,没有任何预训练的权重(例如基于 imagenet )。我做出这个决定是基于这样一个事实,即拥有 5000 万张图像的数据集非常庞大,而 imagenet 图像(真实世界的图片)远远不是 10 秒钟绘制的草图。我这边的实证检验证实了这个假设。具有预先训练的权重的模型在第一个时期给出了好的结果,但是随着时期的增加,具有随机初始化的权重的“临时”模型的表现更好。我想,如果我在预训练和随机初始化的模型上运行更多的纪元,那么它们最终可能会给出相似的结果。但是对于分配的时间,“scratch”模式更好。

resnet-18 layers

展示的模型是一个普通的 torchvision 模型,但是有一个类似于原始的自定义头部,但是我用一个自适应的对应物( AdaptiveAvgPool2d )替换了最终的池层,以优雅地处理不同分辨率的图像。我还故意删除了 fastai 添加的自定义头,这对于预训练的模型很好,但对于随机初始化的权重模型(非预训练),我觉得没有必要。

fastai 文档明显缺少添加自定义项以及如何用自定义头替换它的信息。我是这样解决的:

Customized head for scratch resnet-18

第八课:选择模型是深度学习解决方案的关键部分。不要犹豫去适应它们。这通常是训练数据集大小、计算能力和时间之间的权衡。

Data-inception

该模型使用 128px 图像进行训练,然后使用 144px 图像进行微调。

结果

为了向您展示我们的 resnet-18 的表现,下面是我们应该猜测的第一批图像,以及我们的 resnet-18 认为最有可能的三个类别:

Sample results from our resnet-18

这款极其简单的 resnet-18 型号已经为您赢得了一枚铜牌(在排行榜上排名第 104 位左右)。

Private Leaderboard for our sample resnet-18

深度学习取得的超人类的成果,我还是很惊讶。我们的最终得分是 0.94493,这可以粗略地解释为我们的解决方案在 94.5%的时间里获得了正确的类别。这个结果是通过堆叠不同的模型得到的(kalili 是目前为止我们的模型大师)。

我们是如何错失金牌的

在比赛中,我注意到一个有趣的事实,我和我的队友们分享了这个事实:我们必须猜测的图像类别的数量是 340 x 330 的一个。这令人惊讶,因为有 340 个可能的类别。因此,我认为测试集可以是完美平衡的,它由每个类别大约 330 个图像组成。YIANG 通过提交一个将所有图像设置为单一类别的解决方案来探测 leaderbord,他得到的分数是 0.002,这意味着该探测类别有 224 到 336 张图像,这当然无法确定测试集是否平衡。这种平衡测试集的想法随后被遗忘,因为比赛即将结束。

比赛结束后,获胜者在 Kaggle 论坛上发布了对他们的解决方案的描述。他们描述了一种“秘方”,又名“щепотка табака”,这让他们在排行榜上额外上升了 0.7%。那个“秘制酱”是什么?他们利用了测试集是平衡的这一事实。当我读到这一点时,我告诉自己,我应该花更多的时间来尝试重新平衡解决方案。😢

在比赛结束后,卡利利确实试图重新平衡我们的最佳解决方案,他获得了 0.6%的额外提升,这(理论上)会让我们上升到第 9 名。根据卡格尔晋升系统,该职位可获得一枚金牌。

Private leaderboard results with and without re-balancing the solution

错过了获得我们第一枚金牌的机会让我很难过,特别是当你有获得金牌的想法而没有好好利用它的时候。无论如何,我们获得了银牌,这已经很酷了。

第九课:花时间探索想法。三思而后行,即使时间不多了,也不要仓促行事。

结论

举办这次比赛是一件非常愉快的事情,我真的很感激第一次加入一个团队。我写这篇博文是因为我通常期待获胜者在论坛上描述他们的解决方案,他们通常有一些巧妙的技巧可以借鉴。这是我学到的最后一课。

第十课:向最优秀的人学习,并与他人分享。把事情写下来,往往能理清自己的思路,也可能对别人有帮助。

感谢阅读!

你需要知道的 10 个机器学习算法

原文:https://towardsdatascience.com/10-machine-learning-algorithms-you-need-to-know-77fb0055fe0?source=collection_archive---------0-----------------------

Photo: http://hpc-asia.com/wp-content/uploads/2016/02/equations.jpg

由于数据分析、大计算能力和云计算的发展,我们生活在一个革命性时代的开端。机器学习肯定会在那里发挥巨大作用,机器学习背后的大脑是基于算法的。本文涵盖了目前使用的 10 种最流行的机器学习算法。

这些算法可以分为三大类。

  1. 监督算法:训练数据集有输入,也有期望输出。在训练期间,模型将调整其变量,以将输入映射到相应的输出。
  2. 无监督算法:在这个类别中,没有目标结果。这些算法将对不同组的数据集进行聚类。
  3. 强化算法:这些算法是在做决策时训练出来的。因此,基于这些决定,算法将基于输出的成功/错误来训练自己。最终凭经验算法将能够给出好的预测。

下面的算法将在这篇文章中讨论。

  • 线性回归
  • SVM(支持向量机)
  • KNN(K-最近邻)
  • 逻辑回归
  • 决策图表
  • k 均值
  • 随机森林
  • 朴素贝叶斯
  • 降维算法
  • 梯度推进算法

1.线性回归

线性回归算法将使用数据点找到最佳拟合线来模拟数据。一条线可以用方程来表示, y = m*x + c 其中 y 为因变量, x 为自变量。应用基本的微积分理论,使用给定的数据集找到 m和 c的值。

线性回归有两种类型:仅使用一个自变量的简单线性回归和定义多个自变量的多元线性回归。

https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Linear_regression.svg/400px-Linear_regression.svg.png

scikit-learn ”是一个简单高效的工具,用于 python 中的机器学习。下面是使用 scikit-learn 实现线性回归。

2.SVM(支持向量机)

这属于分类型算法。该算法将使用直线来分隔数据点。选择这条线,使其距离两个类别中最近的数据点最远。

https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Svm_separating_hyperplanes_%28SVG%29.svg/512px-Svm_separating_hyperplanes_%28SVG%29.svg.png

在上图中,红线是最好的线,因为它距离最近的点最远。基于这条线,数据点被分为 2 组。

3.KNN(K-最近邻)

这是一个简单的算法,用 k 个最近邻预测未知数据点。k 的值在这里是关于预测准确性的一个关键因素。它通过使用基本的距离函数(如欧几里德距离函数)计算距离来确定最近的距离。

https://au.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/63621/versions/1/screenshot.gif

然而,这种算法需要很高的计算能力,并且我们需要首先归一化数据,以使每个数据点都在相同的范围内

4.逻辑回归

逻辑回归用于预期有离散输出的情况,如某些事件的发生(例如预测是否会下雨)。通常,逻辑回归使用一些函数将值压缩到特定的范围。

Logistic function (https://qph.ec.quoracdn.net/main-qimg-05edc1873d0103e36064862a45566dba)

“Sigmoid”(逻辑函数)就是这样一种函数,它具有用于二元分类的“S”形曲线。它将值转换到 0,1 的范围内,这解释为发生某个事件的概率。

y = e^(b0+B1 * x)/(1+e^(b0+B1 * x))

上面是一个简单的逻辑回归方程,其中 b0,b1 是常数。同时将计算这些的训练值,使得预测值和实际值之间的误差变得最小。

5.决策图表

该算法基于群体的一些选定属性(独立变量)将群体分类为几个集合。通常,该算法用于解决分类问题。分类是通过使用一些技术来完成的,如基尼系数、卡方、熵等。

让我们考虑一群人,并使用决策树算法来识别谁喜欢拥有信用卡。例如,考虑人口的年龄和婚姻状况。如果年龄超过 30 岁或已婚,人们倾向于更多或更少地使用信用卡。

Simple Decision Tree

该决策树可以通过识别合适的属性来进一步扩展,以定义更多的类别。在这个例子中,如果一个人已婚并且超过 30 岁,他们更有可能拥有信用卡(100%偏好)。测试数据用于生成该决策树。

6.k 均值

这是一个无监督的算法,为聚类问题提供了一个解决方案。该算法遵循一个程序来形成包含同类数据点的聚类。

k 的值是算法的输入。在此基础上,算法选择 k 个质心。然后,指向一个质心的相邻数据点与其质心相结合,并创建一个聚类。稍后,在每个聚类内创建一个新的质心。然后,靠近新质心的数据点将再次组合以扩展聚类。这个过程一直持续到质心不变。

Cluster forming process

7.随机森林

如其名,Random forest 可以被识别为决策树的集合。每棵树试图估计一个分类,这被称为“投票”。理想情况下,我们考虑每棵树的每一张选票,并选择投票最多的分类。

https://www.kdnuggets.com/wp-content/uploads/rand-forest-1.jpg

8.朴素贝叶斯

该算法基于概率论中的“贝叶斯定理”。由于朴素贝叶斯只有在特征彼此独立的情况下才能应用,因为这是贝叶斯定理的要求。如果我们试图通过花瓣的长度和宽度来预测一种花的类型,我们可以使用朴素贝叶斯方法,因为这两个特征是独立的。

Bayes Equation

朴素贝叶斯算法也属于分类类型。当问题中存在多个类别时,通常使用这种算法。

9.降维算法

一些数据集可能包含许多变量,这可能导致非常难以处理。尤其是现在,由于存在足够多的资源,系统中的数据收集发生在非常详细的级别。在这种情况下,数据集可能包含成千上万的变量,其中大多数也可能是不必要的。

在这种情况下,几乎不可能找出对我们的预测影响最大的变量。在这种情况下使用降维算法。它利用随机森林、决策树等其他算法来识别最重要的变量。

10.梯度推进算法

梯度提升算法使用多个弱算法来创建更强大的精确算法。与使用单个估计器相比,使用多个估计器将创建一个更稳定和更健壮的算法。

有几种梯度增强算法。

  • XGBoost —使用线性和树算法
  • LightGBM —仅使用基于树的算法

梯度推进算法的特点是精度更高。此外,像 LightGBM 这样的算法也具有令人难以置信的高性能。

感谢阅读。

干杯!

关于数据科学、分析和大数据的 10 本必读书籍

原文:https://towardsdatascience.com/10-must-read-books-on-data-science-analytics-and-big-data-c2a30d6ba08a?source=collection_archive---------3-----------------------

Source: Flickr

作为分析专家,这是一个我们经常从高管层专家和分析新手那里听到的问题。

“分析领域的必读书目是什么?'

最好的分析类书籍不只是告诉你这个行业如何运作,而是帮助你有效地履行你的日常职责。他们不仅解释数据科学的细微差别或如何进行分析,还教你讲故事的艺术。

如果你想将自己定位为数字化转型的倡导者,这些书将向你展示如何解码数字化转型的艺术。它们还会让你成为一名更好的分析专家,不管你是新手还是已经在这个行业待了几十年。

以下是 BRIDGEi2i 根据亚马逊和 Goodreads 社区的读者评论和投票选出的十本最畅销的数据科学必读书籍。

阅读更多: 12 张令人捧腹的 gif 图一个数据科学家会完全认同

数据分析由 Anil Maheshwari 提供

谁应该读?

对数据科学知之甚少或一无所知的新手或实习生。

关于作者:作者 Anil Maheshwari 在管理实践的各个领域拥有超过 20 年的经验,包括业务开发、市场营销、全球品牌、社交媒体、项目管理、IT 咨询和培训。

作者 Anil Maheshwari 在管理实践的各个领域拥有超过 20 年的经验,包括业务开发、市场营销、全球品牌、社交媒体、项目管理、IT 咨询和培训。

为什么要读?

这本书提供了一个广泛和快速的旅游,所有的主要议题和考虑因素,人们可能会期望当谈到数据分析。这些问题、例子和练习有助于你深入理解这个主题。这本书易于理解,内容丰富。它通过具体的例子涵盖了所有重要的内容,并吸引读者加入数据分析领域。

读者在说什么?

一位读者在 Goodreads 上说

这是你想知道的关于商业智能和数据挖掘的一切。大量的项目符号表和你需要记住的知识清单。

用数据讲故事:商务人士数据可视化指南

谁应该阅读它?

希望像设计师一样思考并在数据可视化中利用设计概念的数据可视化专家。

关于作者:

Cole Nussbaumer Knaflic 用数据创作故事。她在 www.storytellingwithdata.com 的热门博客上写道。她的研讨会和演讲深受全球关注数据的个人、公司和慈善组织的追捧。

为什么要读?

如果你对创建或设计仪表板感兴趣,你应该认真阅读这本书。这本书告诉你如何讲述数据背后的故事。通过这本书,你会发现讲故事的力量,以及如何将数据作为仪表板设计中的关键元素。

在每一章中,作者简要地讨论了业务场景,然后将仪表板分成几个组成部分,分析哪些部分工作良好,哪些部分可以做得不同。这本书展示了如何超越传统的工具,并使用您的数据来创建一个引人入胜,信息丰富,引人注目的设计故事。

读者在说什么?

与自己的教导保持一致是一件可爱的事情。Cole Nussbaumer Knaflic 通过她的第一本书实现了这一点。她提倡可视化的清晰和简洁,她的书清晰、简洁、实用。如果您是可视化的初学者,或者如果您在日常工作中难以使用 Excel、Tableau、Qlik 等工具制作出好的图表,这是开始学习核心原则的好地方。

–Alberto Cairo,视觉新闻学骑士讲座教授,迈阿密大学可视化教授,功能艺术的作者

阅读更多: 用 R 编程可视化巴西旅游趋势

大到不容忽视:获奖作家 P. Simon 的大数据商业案例

谁应该读它?

希望了解大数据能为他们和他们的业务带来什么的高管。

关于作者:

菲尔·西蒙擅长翻译没有术语的技术信息。他曾在 EA、思科、捷步达康和网飞等公司做过主题演讲。

为什么要读?

这本书告诉你为什么大数据是企业的灵丹妙药。作者为希望利用和理解大数据技术优势的管理团队和组织阐明了没有术语的建议。这本书有大量的例子、案例研究和来自世界各地的大数据专家的引用,是首席执行官、企业主和行业领导者的必读之作。这本书可以给你的组织所需的动力,将数据转化为情报,将情报转化为行动计划。

读者在说什么?

随着越来越多的企业家、投资者和客户谈论大数据,越来越难理解这个短语的含义。Phil Simon 在定义大数据方面做得很好,并为大数据一词中通常包含的概念提供了清晰的商业案例。忽视这本书,后果自负。

–Brad Feld,铸造集团董事总经理兼作者,创业社区

Sebastian Tonkin,Caleb Whitmore & Justin Cutroni 利用谷歌分析进行绩效营销

谁应该阅读它?

希望通过分析提升营销绩效和品牌健康的 CMO。

关于作者:

Sebastian Tonkin 是一名企业家,曾是谷歌分析营销团队的成员。Caleb Whitmore 是一名资深的谷歌分析顾问,也是 Analytics Pros 的创始人,该公司致力于为谷歌分析用户提供支持。Justin Cutroni 是广受欢迎的博客 Analytics Talk 的作者,Google Analytics 研讨会的领导者,以及帮助公司了解如何从 Google Analytics 获得最大价值的顾问。

为什么要读?

作者解释了用谷歌分析实现数字营销目标的综合方法。他们从对绩效营销策略的广泛解释开始,逐渐变得准确,通过逐步分析、示例和应用进行总结。

这些章节包含了关于增加搜索广告收入、优化现有网站、改善渠道和活动、加强品牌健康等方面的深入示例和案例研究。这本书还强调了谷歌的面向转换的工具的关键主题,包括 AdWords,AdSense,谷歌趋势,网站管理员工具,和基于搜索的关键字工具。

读者在说什么?

它让我看到并最大限度地利用基于谷歌分析的整体营销。这不仅仅是为了如何使用谷歌分析,而是为了如何在谷歌分析时代建立在线营销策略。它有许多实用的建议和例子。

–Goodreads 上的方敏雅

你应该试试克里斯·高沃德的作品

谁应该阅读它?

寻求销售线索、转化优化和收入的战略家和变革推动者。

关于作者:

克里斯·高沃德是转换优化机构 WiderFunnel 的创始人兼首席执行官。他是公认的转化优化思想领袖,有一个很有影响力的博客(WiderFunnel.com/blog)。

你为什么要读它?

Chris Goward 解释了转换策略的“为什么”和“如何”。这本书带你创建一个销售或营销的优化策略,它可以用适当的分析工具支持你的业务目标,并产生质量测试的想法。它的特点是动手练习,案例研究,和一个全彩色插入加强关键战术。

读者在说什么?

你应该测试一下!提供了一个易于理解的测试框架,以及许多关于如何向特定目标优化的优秀想法。这是一个非常需要的、全面的测试方法。

–杰西·尼科尔斯,机构合作伙伴,谷歌分析

阅读更多: 某财富 50 强 IT 公司如何优化数字营销支出

Peter Guerra 和 Kirk Borne 的《数据科学成熟的十个标志》

谁应该读?

希望培养数据科学和大数据分析能力的数据科学和分析领导者。

关于作者:

Booz Allen Hamilton 首席数据科学家 Kirk Borne 博士在下一代分析和数据科学领域支持战略创新团队。他是乔治·梅森大学研究生(博士)计算科学和信息学项目的教授,并在 NASA 的合同中工作了 18 年,包括担任哈勃望远镜数据档案项目科学家。

Peter Guerra 是 Booz Allen Hamilton 战略创新小组的副总裁,共同领导数据科学团队。他的专长是高可用性、大规模分布式系统和高级分析,并负责领导多个高级分析和大数据计算项目。

为什么要读?

在拥抱数据科学的同时,您的组织为崛起做了多少准备?你如何识别你的组织是否有成熟的数据能力?你如何帮助你的分析团队磨练技能?

如果你是一个正在寻找这些问题的答案的数据科学领导者,你应该今天就抓住这本书。这本书有一个详细的报告,对数据科学成熟的十个标志进行了简要的讨论。它鼓励分析专业人员为组织成员提供对所有可用数据的访问权限,使用敏捷,并利用“数据操作”(用于数据产品开发的开发操作),通过公开或内部竞争帮助您的数据科学团队提高技能,并将数据科学人格化为一种做事方式,而不是一件要做的事情。

读者在说什么?

任何想要培养数据科学能力的数据科学领导者都应该阅读这本书,并在组织内发展成熟的分析文化和实践。

——美莎上 Goodreads

丹尼尔·卡内曼的《思考的快与慢》

谁应该阅读它?

希望学习人们如何做决策的概念的商业领袖和高级管理人员。

关于作者:

丹尼尔·卡内曼是普林斯顿大学心理学荣誉退休教授,普林斯顿大学伍德罗·威尔逊公共和国际事务学院心理学和公共事务荣誉退休教授。他因与阿莫斯·特沃斯基在决策方面的开创性工作而获得了 2002 年诺贝尔经济学奖。

为什么要读?

卡尼曼解释了大脑中的两个“系统”是如何做出决策的。“系统 1”是大脑快速、直观的一面。“系统 2”是大脑中较慢的、逻辑的和推理的部分。他用有趣的例子探索了我们如何以及为什么经常做出非理性决定的一般主题。他提供了实用而有启发性的见解,让我们了解如何在我们的商业和个人生活中做出选择,以及我们如何使用不同的技术来克服经常让我们陷入困境的理性故障。

读者在说什么?

绝技。。。卡尼曼的书是任何对人类行为或投资感兴趣的人的必读之作。他清楚地表明,虽然我们喜欢认为自己在决策中是理性的,但事实是我们受到许多偏见的影响。至少意识到它们会让你有更好的机会避免它们,或者至少减少它们。

–拉里·斯威德罗,哥伦比亚广播公司新闻

凯茜·奥尼尔的《摧毁数学的武器》

谁应该阅读它?

希望了解大数据驱动的数学模型的阴险一面的数据科学家和组织决策者。

关于作者:

Catherine Helen O'Neil 是美国数学家,是博客 mathbabe.org 和几本数据科学书籍的作者。她是哥伦比亚大学新闻研究生院 Tow 中心数据实践 Lede 项目的前主任,并被聘为约翰逊研究实验室的数据科学顾问。

为什么要读?

通过真实世界的例子和生动的故事,作者展示了大数据算法和数学模型如何越来越多地规范人们。所用的案例研究引人入胜、简洁有力。这本书对于想要理解已经获得商业控制权的无形算法的数据创业者来说是一张方便的地图。

对于那些好奇大数据如何帮助他们和他们的企业,或者它如何重塑他们周围的世界的人来说,数学毁灭武器是开始的地方。

读者在说什么?

清晰、惊人、有价值……[奥尼尔]的写作简洁而精确,因为她将自己的观点瞄准了外行观众。对于一本关于算法的书来说,这是一本引人注目的翻页读物。摧毁数学的武器应该是任何生活会受到大数据影响的人的必读书目,也就是说:每个人的必读书目。这是一个警钟——丛林和寂静的春天的新闻继承人。像那些书一样,它应该会改变美国社会的进程。

–阿斯彭时报

数学毁灭武器是硅谷支持者不会讲述的大数据故事…(它)简明扼要地揭露了在如何利用信息评估从信誉到警务策略等一切方面的缺陷。对于任何倾向于相信数据不会说谎的人来说,这是一本发人深省的读物。

–路透社

信息经济学:如何将信息货币化、管理和衡量为竞争优势的资产

谁应该读?

希望成功实现数据货币化并在数字经济中竞争的 CDO 和商业领袖。

关于作者:

道格·兰尼(Doug Laney)是 Gartner 首席数据官(CDO)研究和咨询业务副总裁兼杰出分析师。他是一位卓有成就的从业者,也是信息和分析策略领域公认的权威,并且两次获得 Gartner 年度思想领袖奖。Doug 专门研究数据货币化和估值、开放和联合数据、数据治理以及基于大数据的创新。

为什么要读?

《信息经济学》讲述了量化信息资产价值的方法和策略,以及将信息作为竞争优势来推动增长的策略。这本书为评估信息价值提供了有用的框架,并确定了试图最大化信息价值的公司所面临的众多挑战。Doug 提供了有趣而丰富的例子和详细的基础,CDO 可以在制定数据策略时加以考虑。

读者在说什么?

信息经济学是一项重要的工作,为一个新兴的研究领域和活动奠定了基础。大多数企业领导人似乎忘记了信息近乎无限的可复制性和可重用性,以及它的低存储和传输成本,加上高度的软件自动化,如何使它成为一种无与伦比的资源。这本书提供了评估信息价值的有用框架,确定了试图最大化信息价值的公司所面临的众多挑战,并且最有帮助的是,组织必须解决这些挑战以在新经济中蓬勃发展的方法。

–新南威尔士州政府首席数据科学家兼新南威尔士州数据分析中心首席执行官 Ian opper Mann

阅读更多: 建立一个分析学-第一组织

闪光男孩:迈克尔·刘易斯的华尔街反抗

谁应该读?

打算在显微镜下了解金融危机和高频交易的财务人员或投资者。

关于作者:

迈克尔·刘易斯出版了许多《纽约时报》上各种主题的畅销书。他最近的作品是《金钱球》、《大空头》和《回旋镖》,以全球金融危机为背景。他是《彭博观点》的专栏作家,也是《名利场》的特约撰稿人。

为什么要读?

闪电侠探讨高频交易现象及其复杂的腐败。迈克尔以他的叙述风格,深入解释了股票市场的机制。这本书包含引人入胜的故事和引人注目的人物。尽管这个主题很复杂,但大多数概念都解释得很清楚。这本书还精彩地解释了当前的环境及其对我们市场的潜在危害。

读者在说什么?

哇!太棒了。我喜欢它!娱乐性。

它有一个叫布拉德的家伙,他是我的英雄。这读起来像约翰·格里森姆的小说,但这是一个关于证券交易所、高频交易者和暗池的真实故事。作者非常擅长解释复杂的技术主题,并围绕这些主题讲述一个好故事。在书的中间,我对投资者的敲竹杠感到非常愤怒,我正在考虑写信。但是到了书的结尾,我就不必了。一些好事发生了。现在,各种政府机构正在调查书中描述的问题——SEC、FBI、CFTC、FINRA、纽约州总检察长和美国司法部长。

–珍·史都华在 Goodreads 上

完全迷人……照亮了通常在暗处做生意的华尔街的一部分。

—《纽约书评》

今天就去书店或在线订购书籍,让自己沉浸在数据世界中。但与此同时,如果您想了解分析行业的实际情况,请联系bridge i2i了解分析行业的细微差别。

原载于 2017 年 9 月 21 日bridgei2i.com

用 R 编程的 10 个不太直观的地方

原文:https://towardsdatascience.com/10-not-so-intuitive-things-about-programming-with-r-a4d9d120c42c?source=collection_archive---------10-----------------------

为什么数据科学要用 R

传统上,r 被认为是统计学家和某些学术研究者的首选计算语言,因为有大量可用的统计软件包和庞大的社区。可以说,R 的最大优势在于数据操作和统计分析任务的容易实现。此外,ggplot2 之类的包可以生成高质量的可视化效果,使数据分析和报告变得令人愉快,而没有其他脚本语言的陡峭的学习曲线。

也就是说,R 的行为也可能相当古怪。作为三藩市大学 MSDS 项目的一部分,我最近参加了一门关于 R 的探索性数据分析的课程,并以惨痛的代价学会了其中的一些怪癖。我在下面列出了十大怪癖,可能不是很直观。在分析数据和调试代码时,意识到这些怪癖可以节省大量的时间和挫折。

1)加载包时使用 require()和 library()

如上所述,R 的主要优点是有大量的包,可以很容易地检索并加载到活动的 R 会话中。 require()library() 函数都允许我们将已安装的包加载到活动内存中,但是当加载有问题的包抛出异常时,它们的输出会有细微的差别。当 library() 抛出一个 错误 当包不可加载到活动内存时, require() 抛出一个 警告 并返回一个基于包可用性的逻辑响应。

> library(randomForest)
**Error** in library(randomForest) : 
  there is no package called ‘randomForest’

> b <- require(randomForest)
Loading required package: randomForest
**Warning message:**
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘randomForest’
> print(b)
[1] **FALSE**

require() 通常可以作为条件检查,查看包是否存在并安装。

2)R 中的 NA 与 NULL

NANULL之间的差异可能是一个混淆点,因为人们可能会直觉地认为它们都表示缺失/未定义的值。然而,r 以不同的方式处理这两个保留字。NA是一个长度为 1 的 逻辑常数,其中包含一个 缺失值 指示符,而NULL表示 空对象。 通过下面的代码可以直观的解释上述语句:

> v <- c(1,2,3,NA)
> v
[1]  1  2  3 NA> w <- c(1,2,3,NULL)
> w
[1] 1 2 3

上面的代码帮助我们理解了NANULL之间的一个关键区别。NULL是自身类型的对象,不能强制为任何其他类型。因此,当我们试图将它包含在矢量形式中时,它被忽略了。另一方面,NA可以被强制为各种类型,如 NA_interger、NA_character 等。但是,如果我们创建一个列表(因为列表可以将不同的类型存储在一起),那么它们都可以作为一个元素包含在内。

> w <- list(1,2,3,NULL)
> w
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
NULL

3)使用浮点值的子设置和逻辑向量的循环

要访问向量/矩阵/数组中的特定值,我们可以使用索引值或逻辑向量进行子设置。值得注意的一点是,我们可以使用 floats 和 integer 来调用特定的值,如下所示:

> w <- c(1,2,3,4,5)
> w[3.5]
[1] 3
> w[-4.9]
[1] 1 2 3 5

我们可以清楚地看到,无论符号如何,在子设置时,指数的浮动部分被忽略。所以 3.5 给我们向量中的第 3 个元素,而 -4.9 忽略第 4 个元素。在使用逻辑向量进行子集设置时,另一件要注意的事情是向量长度。如果子集向量的长度较小,R 不会抛出错误,而是回收较小的向量,使其具有相同的长度。

> w <- c(1,2,3,4,5)
> x <- c(T,F)
> x
[1]  TRUE FALSE
> w[x]
[1] 1 3 5

我们可以看到向量x 的长度为 2,向量w的长度为 5。然而,当我们使用x子集时,它被循环到 c(T,F,T,F,T) 并且我们在w中得到所有的替代值。

4)列表中的类型保留与简化

列表能够将不同类型的数据存储在一起,这非常有用。类型保留类型简化是两个有趣的概念,当我们试图使用([ ][[ ]])提取列表元素时,它们就发挥作用了

> a <- list(1,2,3,c(4,5,6))
# a has 1,2,3 and c(4,5,6) as its elements
> a[1]
[[1]]
[1] 1
#Element one as list:Type preservation> a[4]
[[1]]
[1] 4 5 6
#Element 4 as list:Type preservation> a[[4]]
[1] 4 5 6
#Element 4 as vector, type simplification> a[[4]][1]
[1] 4
#First element of 4th element of a, type simplification> a[4][1]
[[1]]
[1] 4 5 6
#[] Outputs the whole vector as we did not simplify the data type to vector from list.

从上面的例子中,我们可以看到[]有助于 T 类型保存,输出也是一个列表,类似于初始列表。另一方面,[[]]进行了类型简化,并给出了最简单的潜在数据类型。另外,当我们试图访问一个向量的元素时,[[]]是很重要的,这个向量包含在一个列表中,如代码的最后一行所示。

5)访问矩阵中的列并使用 drop

矩阵运算在实现很多机器学习模型的矢量化和速度方面发挥了很大的作用。很多时候,我们需要对矩阵进行子集化,以访问矩阵中的特定列并执行某些操作。但是,当您尝试从矩阵中提取单个列时,会发生如下所示的奇怪情况:

> a <- matrix(c(1:9),ncol=3,nrow=3)
> a
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> a[,1]
[1] 1 2 3
> class(a[,1])
[1] "integer"
#When you extract a single column, it is converted to a vector> a[,1,drop=F]
     [,1]
[1,]    1
[2,]    2
[3,]    3
> class(a[,1,drop=F])
[1] "matrix"
# drop=F helps us retain the matrix form

当我们试图访问一个单独的列时,R 把它转换成向量形式。这有时可能是不必要的,因为您的下游代码可能会由于这种转换而受到影响(在 R 中从头实现 k- means 算法时学到了这一点)。为了避免这种情况,我们必须在访问单个列时使用drop=F作为参数。

6)访问向量和列表中的越界元素

当我们试图访问一个越界的元素时,这是我们在 R 中能观察到的最不寻常的事情之一。看看下面的代码:

> a <- c(1:5)
> a
[1] 1 2 3 4 5
# a has 5 elements as shown above> a[7]
[1] NA
#When we try to access 7th element, we get NA instead of an error> b <- list(c(1,2,3,4))
> b
[[1]]
[1] 1 2 3 4
#b has 1 element which is a vector of 4 elements
> b[2]
[[1]]
NULL
#When we try to access 2nd element, we get NULL instead of an error

当我们从一个向量或列表中访问一个越界索引时,我们得到的不是一个错误,而是作为输出的NANULL,这可能会引起关注,有时会使测试/调试变得困难。

7) if {} else{} vs ifelse()

当我们有了一个向量并想要检查给定的条件时,if {} else{}只对向量的第一个元素起作用,并给出一个警告。然而,如果我们想要访问向量中每个元素的条件,我们必须使用ifelse()。它比较向量中的每个值并返回一个向量。假设,我们有一个包含 5 个元素的向量,我们想检查它们是偶数还是奇数

> a <- c(5:10)
> a
[1]  5  6  7  8  9 10
> if(a%%2==0){x <- "Even"} else{x <- "Odd"}
Warning message:
In if (a%%2 == 0) { :
  the condition has length > 1 and only the first element will be used
> x
[1] "Odd"> y <- ifelse(a%%2,"Even","Odd")
> y
[1] "Even" "Odd"  "Even" "Odd"  "Even" "Odd"

我们可以看到if{} else{}只比较了a的第一个元素,而ifelse()达到了要求的结果。

8)调用参数数量不足的函数

r 允许调用参数数量不足的函数,只要缺少的参数没有被调用。这是需要记住的非常重要的一点,并且不同于其他编程语言。如果我们明确地希望所有的参数都出现在函数调用中,我们可以在其他选项中使用force()

> f <- function(x,y){
           print(x)}
> f(2)
[1] 2
#Function call works with one argument as y is not used.> f(2,3)
[1] 2
#Calling with both arguments> f()
Error in print(x) : argument "x" is missing, with no default
#Since x is called inside function and is missing, we get error#Explicitly checking for both x and y using force()
> f <- function(x,y){force(x,y); print(x)}
> f(2,3)
[1] 2
> f(2)
Error in force(y) : argument "y" is missing, with no default

force()检查 x 和 y 是否都存在,当缺失时抛出错误。

9)功能屏蔽和使用:

很多时候,不同的包有相同名称但不同功能的函数。如果我们想使用特定包中的特定函数,我们可能需要特别指定它。在没有特定调用的情况下,最近加载的包中的函数会屏蔽所有其他同名函数。例如,库chrontseries都以is.weekend()为其功能。

library(chron)
library(tseries)
    ‘tseries’ version: 0.10-45

    ‘tseries’ is a package for time series analysis and computational finance.

    See ‘library(help="tseries")’ for details.

Attaching package: ‘tseries’

**The following object is masked from ‘package:chron’:**

    is.weekendis.weekend(x)

当我们调用is.weekend()时,来自tseries包的函数被使用,因为它是最近加载的包。如果我们特别想使用chron,我们需要做以下事情:

chron::is.weekend(x)

::帮助我们指定使用哪个包。::也帮助我们不用加载包就可以使用一个函数。然而,每当我们想要使用这个包中的函数时,我们需要使用::来专门调用这个函数。

10)调用函数时的参数匹配

调用函数时,参数按照以下顺序进行匹配:a)完全名称匹配
b)部分名称匹配
c)位置匹配

> f <- function(a1,b1,a2){
    print(paste("a1:",a1,"b1:",b1,"c1:",a2))}> f(a1=2,b1=3,a2=5)
[1] "a1: 2 b1: 3 c1: 5"
#Example of Exact match, each argument has same name > f(b1=3,5,2)
[1] "a1: 5 b1: 3 c1: 2"
#Example of exact match and positional match. Since b1 is matched, 5 and 2 are assigned based on position> f(3,b=5,2)
[1] "a1: 3 b1: 5 c1: 2"
#Partial name match, b matches to b1\. Rest matched based on position > f(3,5,2)
[1] "a1: 3 b1: 5 c1: 2"
> f(3,5,a=2)
Error in f(3, 5, a = 2) : argument 3 matches multiple formal arguments
#Since a matches to both a1 and a2 we get error as R does not know where the value needs to be assigned.

结束注释:

r 为我们打开了一个无限可能的世界,它蓬勃发展的社区和生态系统使它成为一门值得学习的编程语言。我希望以上几点对任何使用 R 的人都有用,并帮助他们避免许多常见的错误。这篇博客文章是我在旧金山大学教授的探索性数据分析的几个要点。联系我,讨论/编辑任何具体问题。

关于我:研究生,旧金山大学数据科学硕士

领英:https://www . LinkedIn . com/in/jyoti-pra kash-maheswari-940 ab 766/
GitHub:https://github.com/jyotipmahes

参考

  1. Paul interva do 利用 R 进行探索性数据分析

智能代理设计的 10 个原则

原文:https://towardsdatascience.com/10-principles-of-intelligent-agent-design-a2215c4ef0d6?source=collection_archive---------8-----------------------

我们正处于新一代更好、更复杂的智能代理的尖端。

智能代理正在个人生活和商业中迅速变得无处不在,这意味着它们是创新者机会和兴趣的重要领域。作为企业家、设计师、产品经理、开发者和投资者,我们应该退后一步,思考我们正在构建的东西背后的原则。现在是开始为我们想要如何设计和构建智能代理制定实践和原则的大好时机。作为这一思考过程的一部分,以下 10 条原则可以帮助管理智能代理的未来设计。

1.有用的

一个聪明的特工应该为他人服务。理想的智能代理以明确有用的方式帮助人类。一些代理可能会协助其他代理,或者是更大流程的一部分。但它们必须有用。

2.上下文感知的

一个智能代理应该理解上下文,包括时间、地点和许多其他信息。它应该尽可能多地了解世界,以便完成任务,在正确的时间提供正确的信息,并进行学习。

3.能够学习

随着时间的推移,智能代理应该变得更加智能。与人类、其他计算机系统和世界的每一次互动都是一次学习的机会。代理收集的一些信息将增加其知识库,一些信息将使其更好地发挥核心功能,如沟通和采取正确的行动。

4.适合的

一个智能代理应该能够改变以便应用它所学到的东西。适应性的一个方面涉及到对用户偏好的敏感。为了塑造代理的行为,代理可以学习许多偏好,包括通信偏好和隐私参数。

5.能够很好地沟通

一个聪明的特工应该追求最大的口才。它应该是直观的、不言自明的,并对与之通信的任何实体做出响应。它应该针对通信的上下文使用最有效的通信方法(例如文本、语音、图形和 API)。

6.积极主动的

一个聪明的代理人应该预见到其他人的需求。它应该将所学知识与环境相结合,以便能够采取主动行动。然而,只有当信息对接收者有用时,它才应该积极主动地进行沟通。

7.尊重隐私

智能代理应该尊重信息隐私。基于隐私要求,不同的信息可以与不同的方共享。它应该理解向所有不同方提供或接收所有不同类型信息的隐私参数。

8.诚实的

智能代理应该提供正确的信息。它不应该欺骗或做出无法兑现的承诺。

9.透明的

智能代理应该允许对影响他人的信息进行适当的访问。例如,它应该允许对视图设置、配置控制和影响人类的默认设置进行适当的访问。

10.无恶意的

一个聪明的特工不应该参与伤害他人。如果被请求的动作是有害的,它应该警告用户被请求的动作的后果。

我不认为每个智能代理都需要遵循所有这些原则。但是如果这些原则中有一条没有包含在设计中,那么这样做的原因应该是可以理解的。为了某个特定的目的而省略某件事比因为从未考虑过而忽略它要好。牢记这些原则将有助于开发人员构建健壮的未来智能代理,随着技术的进步和我们对其设计的改进,这些智能代理会不断改进。

原载于 2017 年 6 月 18 日【venturebeat.com】

我是威尔,硅谷的一名技术高管和企业家。
跟我上多产:@

每个有抱负的数据科学家需要知道的 10 件事

原文:https://towardsdatascience.com/10-things-every-aspiring-data-scientist-needs-to-know-3db18cce8eb4?source=collection_archive---------0-----------------------

哈佛的一篇文章《数据科学家:21 世纪最性感的工作》首先引发了我对数据科学领域的兴趣。那时,我已经在管理咨询行业工作了 3.5 年,并在 MS Excel 中建立模型和开发项目方面建立了良好的声誉。读完那篇文章后,我意识到数据科学是我当时的角色和我一直渴望学习的编程(技术类的东西)之间的一个很好的交叉点。这种渴望来自于我在成长过程中对科技事物的强烈兴趣。多亏了我的父亲,我在各种各样的电脑包围中度过了我的性格形成期,即使在我长大的那个镇上它们并不那么主流。

读了那篇文章几个月后,我决定加入我工作的公司新成立的数据和分析团队。这个决定看起来很容易,但这不是传统的做法,因为我是作为一名资深人士加入这个团队的,在这个领域没有任何经验。因此,最初的几个月有点困难,但这促使我投入大量时间自学数据科学。

我采用了自学的方法,这种方法开始时很有趣,但后来变得既费时又有挑战性。我总结了 10 件事,我希望在一年前开始我的数据科学之旅时有人告诉我。

我敢肯定,肯定有人需要这个!

1.学习统计学:如果你曾经统计失败,现在是重新开始的好时机。如果对统计概念没有很好的理解,你就不会成为一名数据科学家。我知道这在某些时候会变得复杂,但现在,从基本的东西开始,并在此基础上继续建设。很有可能它没有你想象的那么难。如果你在一个非洲家庭长大,你可能熟悉下面这个短语。

《做官的人没有两个脑袋》

这里有一些我觉得有用的课程…

2.学习编程:很容易认为编程是火箭科学,尤其是当你没有技术背景的时候,但事实并非如此。有几门课程和几篇文章可以让你轻松入门。显然,不要指望从第一天就能生产出超级酷的东西;这永远不会发生。但是如果你坚持不懈,总有一天会的。r 还是 Python?好吧,我会让你来决定。

我发现数据营代码学院单飞学习对移动极有帮助。这些将帮助你开始。

其他有用的资源:

  • 约瑟夫·阿德勒的《一言以蔽之》
  • Garrett grole mund 和 Hadley Wickham 的《数据科学研究》
  • Python 数据科学手册:使用数据的基本工具,作者 Jake VanderPlas
  • Joel Grus 的《从零开始的数据科学:Python 的基本原则》

3.学习,学习,练习,练习,再练习:你需要花大量的时间来学习和练习。你可以从非常简单的东西开始,然后逐步积累。只要确保你花大量的时间学习和练习,最好是每天。这个领域非常广泛,技术性很强,所以有些地方你需要反复阅读。记住,你的学习永远不会结束,除非你去实践。把它看成一个迭代的过程。当你练习时,更多的问题出现,然后你被迫重新学习。通过阅读和实践,你肯定会学到很多东西。永远记住,数据科学是一个应用领域。

有用的资源:

  • Bart BAE sens 著《大数据世界中的分析》
  • 迪安·阿博特的应用预测分析
  • 马克斯·库恩的应用预测建模

4.保持饥渴和好奇:好奇心不会杀死数据科学家;好奇只会害死猫。所以放轻松!作为一名数据科学家,你需要保持求知欲和好奇心。在数据科学中,有太多的概念需要学习,而且每天都有新的概念出现。你需要让自己跟上变化和趋势。阅读书籍、文章、解构代码,确保你的渴望永远不会消失。有时你可能正在阅读一篇文章,而这篇文章提供了四个不同的链接。在这一点上不要感到不知所措,只是保持饥饿。记住,这是工作带来的。

我发现对数据科学分析 Vidhyakdnuggets 非常有帮助。

5.为你的学习建立一些结构:数据科学中的自学概念听起来总是很酷,直到你进入其中并意识到它非常耗时且具有挑战性。数据科学涉及面很广,在浏览您需要学习的各个领域时很容易迷路。不要漫无目的地围绕数据科学中的各种主题闲逛,这一点非常重要,因为这样更难将这些点联系起来。你需要通过参加各种平台上的课程和加入学习路径来组织你的学习。你不需要倾家荡产来做到这一点。你可以先从免费的开始。

我发现以下内容很有帮助

6.加入一个社区/见一面或找一个导师:在数据科学领域,“团结起来,每个人都会取得更大的成就”这句话绝对是真理。在这个旅程中,你需要人。永远不要做独行侠。很有可能你会很快筋疲力尽,花费无尽的时间到达目的地。然而,有了导师和伙伴,你可以走得更远。不要把时间浪费在别人可以在一分钟内向你解释的事情上。有人可能已经做了你正在努力做的事情,所以不要重新发明轮子。

另一方面,当你还没有尽力的时候,不要急于寻求帮助。你可以从自己的错误和研究中吸取很多教训。

7.尽快参加比赛/竞赛:竞赛有助于加快学习过程。就像我常说的,从简单的事情开始。泰坦尼克号竞赛Kaggle 上的房价预测竞赛都是很好的起点。看到自己在排行榜上升是一个很好的动力。它给你进步的感觉;至少直到你碰到玻璃天花板,发现很难提高你的模型的准确性。然后继续学习,因为你需要找到改进这个模型的方法。所以参加比赛,分享你的代码,让人们来评论。

8.现在是最好的时机:你可能想知道你是否一生都生活在岩石下,因为你刚刚发现数据科学,并且你已经阅读了几个关于已经在这个行业工作多年的人的故事。嗯,他们说种树的最佳时间是二十年前,下一个最佳时间是现在。从不迟到。不要抱怨你如何能在十亿年前开始数据科学。最重要的是,你开始了旅程,而且你正在弄脏你的手。为此你应该受到表扬。

9.坚持不懈,永不放弃:当事情变得艰难时,坚强的人会坚持下去。别自欺欺人了,数据科学不是儿戏。在某个时候会变得艰难。你需要保持专注,保持一致。庆祝这些小小的里程碑:学习你的第一个算法,你的第一个参赛作品等等。庆祝他们。

10.将第 1-9 点挂在墙上的大框架上,把手弄脏。永远记住你不是一个人,所以坐下来放松。这绝对会是一次快乐的旅程。

祝你好运:)

在数据科学会议上显得聪明的 10 个技巧

原文:https://towardsdatascience.com/10-tricks-to-appear-smart-during-data-science-meetings-be1fc76264a4?source=collection_archive---------3-----------------------

我最喜欢的帮助你成为智能数据科学专家的做法。

Adapted from Pexels using Chalk Brushes

显得聪明应该是每个数据科学家的首要任务。这是你职业生涯的动力,对吗?Sarah Cooper 关于如何在会议上显得聪明的建议是一个很好的开始,但是在数据科学家中取得成功完全是另外一回事。我们说的是给一屋子的博士和自学成才的天才留下深刻印象。但是不要害怕,用一些简单的技巧你可以欺骗任何人。

[## 在会议中显得聪明的 10 招

medium.com](https://medium.com/conquering-corporate-america/10-tricks-to-appear-smart-during-meetings-27b489a39d1a)

1.画一条钟形曲线

站起来画东西对你的个人曝光很有帮助。

正态分布可以在任何地方的所有数据中找到,所以没有比画钟形曲线更好的方式来展示你的统计技能了。最重要的是,画一必然会引发一场关于数据可能存在的其他假设的讨论。之后,正如库珀所说,你可以继续玩你的智能手机。

2.询问异常值

数据科学会议是关于以某种形式呈现的数据和数据可视化。而且数据总是有问题。因此,当会议期间出现沉默时,提问:“我们能回到有异常值的那张幻灯片吗?”。这是一次有保证的成功!

注意:如果你发现自己在演示的最后,一定要确保在你的数字中留下一些你可以很容易解释的异常值。很管用。

3.当你听到过度合身时,点头表示同意

当你在一场无聊的讨论中打瞌睡时,你听到单词过拟合,确保你表现出警觉,并朝着说话者的方向用力点头。过度拟合是万恶之源!所有有经验的数据科学家都学会了害怕它。承认这一事实不仅能让你立即变得聪明,而且当你们再次见面时,他们会记得在面对共同的敌人时你和他们站在一起。

你是否应该参加一个偶然的会议,会上有人问“什么是过度配合?”,只需将问题转给最初级的工程师进行澄清(他最近肯定上过数据科学课程)。这让你看起来更像一个领导。

4.询问商业价值

最终,你的分析或产品的商业价值是唯一重要的,对吗?但数据科学家只想解决有趣的谜题,制作酷图,显得聪明。所以这会让他们在疯狂的精神世界里奔跑!

5.建议一个随机算法

把这个算法列表背下来就行了,随便喊一个还没说的。你应该都试试。

  • 线性回归(总是经典)
  • 套索回归
  • 随机森林
  • 任何带有贝叶斯字样的东西
  • 神经网络(或者快速谷歌一下最新炒作的,例如:胶囊网络)
  • 主成分分析
  • k-最近邻

随着您在数据科学会议和在线文章中提到的术语方面获得经验,您可以随意扩展这个列表。

6.扭曲使用的指标

当有人提到他们的方法有 10%的错误率时,立即接手并宣布这意味着我们找到了 90%的成功率!改成分数的分数也很棒。从 90%到 95%的成功率意味着错误率减少了 50%!人们会对微小的成就感觉良好,他们会因为你指出来而更加喜欢你。

你可以在《如何用统计学 撒谎》一书中进一步背熟所有方法。

7.提议“保持简单”

如果你不理解一个数字,最好把它变成一种资产。但别忘了把责任推到别处。暗示你公司的经理或客户可能不这么理解。如果演示者只是【保持简单】,图表会有很大的改善。

也可以随机说出“少即是多”,并参考爱德华·塔夫特。没有人真正读过他的书,但这让你看起来像一个真正的爱好者。

8.开个无聊的玩笑

有趣的人被认为更聪明。有趣的书呆子因此必须在聪明等级的顶端。会出什么问题呢?

9.组织数据黑客

最好的。会议。永远不会。你邀请所有聪明人到你的会议室。给他们你的数据和问题。然后他们用漂亮的脚本和图表为你解决这些问题。最后,你根据他们的贡献给他们打分。最后,他们甚至会感谢你所做的一切!

10.问深层次的问题,比如“为什么?”

Typical Data Science project flow

可能发生的最糟糕的事情是你的项目结束了,你不得不重新开始在新的项目中给新的人留下深刻印象。

那么,如何让车轮继续转动呢?借助众所周知的项目数据科学流程,您可以明确如何做到这一点。最好的办法是强迫所有人回到起点。问一些问题,比如“我们为什么要再做一次?”或者只是“为什么?”。不叫数据科学白叫;科学就是问永无止境的问题!

Matthijs Cox 是一名来自荷兰的高科技专业人士,专攻纳米技术和数据科学。他喜欢用第三人称谈论自己,玩他孩子的乐高,创造 美丽的图像 并设计可能接管世界的算法。以上其中一个他只是在开玩笑。

推进端到端数据科学项目的 10 种方式

原文:https://towardsdatascience.com/10-ways-to-boost-an-end-to-end-data-science-project-dc5d6e074ecf?source=collection_archive---------5-----------------------

从研究到生产:如何避免基本陷阱

by: 尤里【拉波波特】 拉斐尔

与常规软件工程项目不同,人工智能/数据驱动的产品对大多数公司来说都是相当新的,从研究到生产的最佳方式仍然不清楚。在接下来的文章中,我们将介绍一些从将机器学习解决方案部署到几个 Checkpoint 的主要产品中获得的经验。

#1 在做任何事情之前,与管理层讨论评估指标

令人惊讶的是,我们通常会等到第一次结果出来后,才决定如何评价自己。在大多数情况下,你的主管或 QA 团队会选择一种完全不同的方式来评判你的工作。“他们不懂机器学习!”你会说,但是他们了解你的客户,他们是领域专家…

作为一名数据科学家,尤其是在非机器学习公司,需要清楚地解释你在做什么,并证明它为什么有效。这并不意味着将所有的技术细节转移到你的层级中,而是描述你如何改进当前的流程以及如何衡量它。这也包括了解公司如何运作,以及它的目标是什么。

不同的行业使用不同的关键绩效指标:广告技术人们喜欢点击率,在金融它将是投资回报或者在网络安全假阳性/阴性率。

只有在指标上达成一致,你才能开始你的项目。此外,你将能够校准你的模型来优化它,并向你的老板证明你确实在做一些事情。

#2 获得一个好的数据集(我知道你知道)

这听起来似乎是一个显而易见的观点,事实也的确如此。但是我们已经看到因为这一点损失了太多的时间。

如果你不能建立一个足够大的、相关的和无偏见的数据集,就不要开始一个数据科学项目。

如果你还没有访问数据集的权限,确保构建它不会太难/太贵。不要假设你的管理层会对你的初步结果感到惊讶,并投入大量资金来获得你应得的数据。大多数情况下,它们会被扔掉。

数据集需要代表实际的生产数据,并且只有当您拥有直接来自这个生产数据的一个重要的、可更新的测试集时,您才能检查它。

例如,对于一个分类问题,我们经常需要从不同的来源获取不同标签的数据(例如:来自开源存储库的钓鱼邮件和来自贵公司的良性邮件)。这是可以的,只要您可以在生产中对来自一个数据源的数据集检查您的模型,否则您有过度拟合您的数据源的风险。

#3 明智地在团队成员之间分配工作

在大型团队中工作时,最好允许贡献者独立。然而,你也希望个人的贡献能够彼此和谐地工作。对于机器学习项目的某些情况,通过使用以下方案可以相对容易地实现这一点:

单个数据科学家可以在“数据处理器 1”和“数据处理器 N”上并行工作。然后在组合功能集的子集上尝试不同的模型

例如,假设我们想要构建一个检测钓鱼电子邮件的模型。例如,每封电子邮件以及作品可以分为内容(主题、正文)和附件。只要这个“内容”和“附件”预处理程序的输出是一致同意的格式,就可以很容易地将它们结合起来,并从中创建一个大矩阵。

#4 分离训练和预测

事情是这样的:在研究阶段,训练和预测几乎同时发生,通常在同一个笔记本中(如果你使用 sci-kit,那么训练者和预测者实际上是同一个对象),所以你没有真正分开用于完全不同任务的代码。然而,有一天到了你需要发布预测模型的时候,你意识到它实际上与训练代码耦合在一起,训练代码对你并不真正需要的东西有很多依赖性

因此,一个好习惯是将预测/评估代码从训练代码中分离出来,你可以使用来自训练的预测代码,但不能反过来。

此外,由于预测算法通常非常简单,因此可以针对不同的环境用不同的语言来实现。

#5 数据预处理代码应该在任何地方运行

构建数据管道、预处理数据和清理数据是我们工作中最不光彩的部分,但有时大部分时间都花在这上面。

预处理代码通常很简单,不需要复杂的生态系统。

明智的做法是将预处理部分安装到需要较少资源的环境中(例如:C 或 Go 而不是 Python) 特别是当您需要在客户的机器上运行模型时。

在 Check Point 中,我们曾经不得不用有限的资源为操作系统和架构构建一个模型。该模型将 exe 文件的内容作为输入,并提供一个恶意得分。我们使用 sci-kit 在 Python 中训练模型,但我们需要在 C 中进行预测。为了避免编写两次代码,我们刚刚创建了一个 C 库,它能够将文件转换为矩阵,另一个库接受预测器并从矩阵中返回预测。训练代码在 Python 中导入这些 C 函数,然后运行训练。

#6 建立报告基础设施,以便每个人都能随时看到结果

即使在早期的模型创建阶段,最好是有一个自动的过程来重新评估你的模型,并且让评估的结果不仅被模型创建者看到,还被一些公平、公正、温和的评审者看到。这样我们一方面不会被诱惑去欺骗自己,但另一方面也不会被仇恨者彻底摧毁。

你不应该自己做评论,因为你不想既当法官又当当事人!事实上,这样做很容易在结果中引入偏差(例如,通过玩弄阈值),当您展示实际生产结果时,可能会让您的上级失望。

一个好的解决方案是在一个共享网站上显示结果,并就如何自动生成预测达成一致。

破折号 对于完全不懂网络的人来说可能是个不错的解决方案

#7 数据科学中的版本控制

数据科学中的项目版本化与常规软件开发中的项目版本化略有不同。实际上你的模型的新版本可以是代码的实际修改,也可以是你训练它的数据的变化。

例如,随着网络安全世界的不断变化,Check Point 经常重新训练我们的模型,以便包含更新的数据。每个再训练输出一个新的模型,这就产生了一个新的“次要版本”,它包括一个对它所训练的数据的引用。相反,我们经常想要添加新的特性,重写一些代码,等等。这些种类的变化涉及到生产中的新部署,它们可能会导致更大的问题并需要测试。正如你所猜测的,我们称这些版本为“主版本”,它们有自己的 git 分支。每个模型都通过其主要/次要版本来识别,这样我们可以根据我们刚刚发布的版本类型轻松地设置回退规则,并检测任何 bug 的来源。

#8 模型培训应该与数据库和存储无关

当处理大量数据时,不能将所有数据库都保存在内存中,训练代码需要能够从外部来源(文件系统或数据库)获取信息。

在我们的第一个项目中,我们是傻瓜,我们只是在矢量化步骤中插入了所有的数据库查询。但几个月后,我们决定改变数据库类型,并需要重写大量不相关的部分代码,以便实现这一点。然后我们被要求在不同的环境中运行我们的代码,有不同的数据库或者根本没有数据库。我们迷失了方向,在代码中添加了大量的“如果”来使它工作,这看起来很糟糕。

我们通过增加一点抽象解决了这个问题。

对单个样品或一批样品进行抽象。那将是你训练和预测的输入。这些抽象的实例将能够在不同的环境中运行。

#9 数据恢复和高速缓存

当我们基于存储在数据库中的数据创建一个模型,然后更新数据库并且不能再重现这个模型时,我们遇到了一些不幸的情况。

原始数据应该被保存,这样训练就可以一直被复制。不然老机型调试起来真的很难。

使用缓存来存储中间预处理结果以加快速度是一个好主意。然而,我们应该总是能够从原始数据中恢复缓存,而绝不仅仅依赖于缓存的结果。

做研究的时候,总是假设你会失败

首先,尽可能快地得到结果。请记住,你正在做的事情可以扔掉。变笨,即使这意味着你的代码看起来很糟糕或者不是一直在运行(你毕竟不仅仅是一个软件开发人员)。请记住,您总是从概念证明开始。

另一个要点是要有短期目标,你可以有远大的梦想,但仍要有务实的计划。你总是需要确保自己不断进步。

确保你能继续下去的最好也是最著名的方法之一是将你的结果与随机预测算法进行比较。

不管怎样,如果一切都失败了,你可以写一篇 10 分的文章。

作者是数据科学家 Check Point 软件技术有限公司 作者是Yuri RapoportRaphael Fettaya在 Avi Shua 的帮助下,以及Louis guth Mann

带领你的老板踏上数据之旅的 10 种方式

原文:https://towardsdatascience.com/10-ways-to-take-your-boss-on-a-journey-through-the-data-14a3fdbb3503?source=collection_archive---------2-----------------------

Photo credit: Pexels

“人们听到的是统计,感受的却是故事。”福布斯 2016 年 3 月

“用你的数据讲述一个令人信服的故事有助于你有效地表达你的观点。”信息周刊,2016 年 5 月

我们的大脑喜欢好故事,你的老板也不例外。J.K .罗琳曾经写道,“我们最爱的故事确实永远活在我们心中”。这同样适用于数据。但是什么是数据故事呢?根据 LeAnna Kent 的说法, Elder Research 的数据科学家,“数据故事讲述将数据可视化与引导式叙述结合在一起。它将数据和图表与单词配对。它不仅描述了图表中可以看到的内容,还讲述了一个故事来引导观众完成分析过程

作为数据科学家,我们需要能够施加影响,我们有分析和见解,可以发现机会并指导管理层的行动,但如果我们不能激励企业接受,我们强大的机器学习算法最终将在货架上积灰。

数据可视化是数据分析的核心,它以图片或图形格式呈现数据,使业务用户能够直观地使用信息,无需深厚的技术专业知识。

叙述是关键,它有助于向你的观众解释数据中发生了什么,以及为什么某个特定的见解很重要。叙述减少了歧义,将数据与背景联系起来。

因此,在这篇文章中,我们将探索结合可视化和叙述流的数据故事,并希望我们能够说服我们的老板根据我们的见解采取行动。我们开始吧!

  1. 可视化 :一起购买的产品

Source: Tableau public

叙述 :我司客户频繁一起购买上述产品。本周末我们将清仓大甩卖办公设备。让我们重新安排我们的促销方案,把纸张、活页夹产品和办公设备放在一起展示。

  1. 可视化 :销售和利润

Source: Tableau public

叙述 :我们应该停止给这个客户大折扣。让我们找到一个既能提供折扣又能赚钱的解决方案。

  1. 可视化 :销售预测

Source: Tableau public

叙述 :根据我们过去和现在的销售情况以及季节规律,我们可以这样预测 2016 年的销售情况。该模型确定 2016 年销售额有 95%的可能性在阴影区域内。如您所见,二月份通常是消费者和企业产品的淡季。我们要不要为这个月策划一次促销活动?

  1. 可视化 :利润和利润比例

Source: Tableau public

叙述 :宾夕法尼亚州的利润率下降,原因是机器的利润率为-134%。这需要立即解决。

  1. 可视化 :员工流动率

Source: R-bloggers

叙述 :销售代表的离职率最高,约为 40%,其次是实验室技术人员、人力资源、销售主管和研究科学家。值得调查的是,哪些本地化问题可能会导致组织内这些团队的高人员流动率。

  1. 可视化 :成长加班

Source: Slideshare

叙述 :协作和分析解决方案的增长速度超过了 ERP/CRM 和基础设施。他们可能是下一笔投资的好目标。

  1. 可视化 :客户流失

Source: DataScience+

另一方面,月租费低、合同期长、有在线安全服务、有家属或伙伴、用信用卡或银行转账付款的客户的流失率远低于平均水平。让我们开始制定一个防止客户流失的计划。

  1. 可视化 :无利可图的日子

Source: Tableau public

叙述 :我们无利可图的日子更容易发生在一年的前几个月(1 月到 3 月)。让我们想办法在这几个月向每位客户追加销售,让我们盈利。

  1. 可视化 :销售目标

Source: Power BI

叙述 :现在是 11 月,我们不太可能达到年度销售目标,尤其是在硬件/软件组件方面。让我们找出问题所在。

  1. 可视化 :执行摘要

Source: Big Book of Dashboards

叙述 :消费销售领先步伐 5%;这可能是由我们在多伦多新开的商店推动的。由于两名销售代表辞职,企业销售远远落后于预期。商品销售落后于预期 5%;考虑尽快更换两名销售代表,并将广告预算重新分配给商品,这样我们就可以在年底实现收入目标。

摘要

正如您所看到的,讲述数据故事是一项艰巨的工作,因为大多数时候我们并没有处理“令人信服的”数据。我们要么处理产品销售数据,要么处理消费者(或员工)行为数据。我们必须非常有创意,把我们的数据变成美丽的、有说服力的故事。让你的信息穿过所有混乱的最好方法是合并这两种强大的交流方式——数据可视化和叙述。

正如 e .布伦德尔在他的书《特写写作的艺术和技巧》中所说

“我们应该既是故事的讲述者,也是事实的提供者。当我们没有履行这一责任时,我们就不会被阅读。”

请记住,数据不会激励人,故事会。我们需要用一个能激发情感、激励行动的故事来概括我们的愿景。

最后,如果你不想被质疑你对公司的价值,告诉他们你的故事。

10 年的数据科学可视化

原文:https://towardsdatascience.com/10-years-of-data-science-visualizations-af1dd8e443a7?source=collection_archive---------2-----------------------

我在数据科学领域的职业生涯始于十年前,当时我在加州大学圣克鲁斯分校(UC Santa Cruz)上了第一门机器学习课程。从那以后,我在各种团队中工作过,使用过许多不同的可视化工具。虽然我在行业中的许多经验都集中在业务和产品指标上,但我想分享一些我在过去 10 年中收集的可视化数据。我从过去十年的每一年中挑选了一个可视化的例子,目的是展示我对不同工具的偏好是如何随着时间的推移而变化的。这些不一定是每年最有影响力的可视化,因为该列表过于 excel 化,可能会暴露敏感信息。以下是过去 10 年我对可视化工具偏好的时间表:

2007

早在深度学习主导图像分类任务之前, AdaBoost 是机器学习任务的一种流行方法,如人脸检测。在加州大学圣克鲁斯分校研究生院的第一年,我选修了曼弗雷德·沃穆思的机器学习课程。他的课程向我介绍了各种工具,包括 MATLAB 和 Mathematica。在我的学期项目中,我在 MATLAB 中实现了 Viola 和 Jones 的图像检测算法,并将其应用于图像中检测飞机的任务,结果如下图所示。分类器表现不佳,主要是因为缺乏高质量的训练数据和有限的特征集(Haar 基函数)。

Aircraft Image Detection — MATLAB- UC Santa Cruz (CMPS 242)

这篇博文的横幅图像是作为该项目的一部分生成的。该图像示出了一些验证数据集图像的检测到的面部。

2008

对于我的论文项目,我想建立一个从演示中学习的系统,并受到职业星际争霸玩家的启发。在育雏战争 API 发布之前,可以为星际争霸编写机器人,可以使用 LM 重播浏览器等工具分析重播数据。下面的图片展示了我对专业回放分析的一些初步工作。我写了一个 Java 应用程序,在一个星际争霸游戏中画出对应于军队移动的点和线。

StarCraft: Brood War Gameplay Traces —Java — UC Santa Cruz

2009

在收集和挖掘了成千上万的回放后,我训练了各种分类算法来检测星际争霸 1 中不同的建造顺序。此分析的结果显示在下面的 excel 图表中。这项分析的一个有趣的结果是,一些算法优于用于标记图像的规则集分类器。我在 2009 年 IEEE CIG 会议上发表了这个结果和其他发现。

StarCraft 1 Build Order Prediction — Excel — UC Santa Cruz (EISBot)

几个月前,我在写了一篇博文,讲述了在我目前偏爱脚本和可视化工具的情况下,我会如何进行这项分析。

2010

在 2010 年秋季我在电子艺界实习期间,我有机会对从 Madden NFL 11 收集的万亿字节的数据进行数据挖掘。我进行的一项分析是基于偏好的游戏模式,观察《马登》中不同的玩家原型。我用 Weka 来执行这个任务,结果显示在下面的 PCA 可视化中。在艺电实习期间,我还参与了玩家保持模型的工作,并收集了一些有趣的商业指标的数据。

Player Archetypes in Madden NFL 11 — Weka — Electronic Arts

2011

我在制作星际机器人时面临的挑战之一是处理战争迷雾,这限制了玩家对地图的可视性。我创建了一个粒子模型来追踪以前不再被机器人观察到的敌人单位。我用 Java 写了一个脚本来创建下面的视频,它可视化了机器人的观察。结果发表在 2011 年 AIIDE 上。

State Estimation in StarCraft — Java — UC Santa Cruz (EISBot)

2012

我将在我的论文项目中展示的最后一个可视化图是一个显示代理行为树中的行为的图表,它用于决策。该机器人是用 ABL 反应式规划语言编写的,我用 Java 编写了一个脚本来解析代码并输出图形格式。然后,我使用 protoviz 库来创建图表的渲染。

EISBot’s Behavior Tree — Protoviz— UC Santa Cruz (EISBot)

2013

当我在微软的工作室用户研究团队工作时,我帮助这个团队为 Ryse: Son of Rome 和 Sunset Overdrive 的游戏测试建立可视化。黛博拉·亨德森在 GDC 2017 上展示了这项工作的一些成果。下图显示了使用 Tableau 可视化的游戏测试中敌人的死亡地点。我们发现,除了参与者的反馈之外,还包括可视化效果会让游戏工作室更加关注这些报告。

Ryse: Son of Rome Playtesting — Tableau — Microsoft Studios User Research

2014

在索尼在线娱乐公司,我继续使用 Tableau 来报告业务指标,并在我们的 MMO 中整合玩家活动的可视化效果。我收集的一些最有影响力的视觉效果是玩家漏斗,它显示了玩家在游戏过程中下落的位置。我还做了一堆热图,没有那么多可操作的结果,但确实得到了游戏团队更多的关注。

Activity heatmap in DC Universe Online — Tableau — Sony Online Entertainment

2015

在电子艺界,我将大部分分析切换到 R,并开始探索 R 生态系统中的各种可视化工具,包括 Shinyhtmlwidgets 。我在 EA 工作的一个项目是运行分析团队 R 脚本的服务器。我写了一个闪亮的脚本来创建一个可视化服务器负载的 web 应用程序,如下图所示。我在 useR 上展示了 RServer 项目!2016.然而,我目前的建议是让团队使用更成熟的项目,比如 Airflow

RServer Load — R(Shiny) + dygraphs package — Electronic Arts (Global Analytics & Insights)

2016

Twitch 的科学团队做了大量的 A/B 实验,以确定向用户群推出哪些功能。我们还遇到了 A/B 测试不实际的情况,而是使用分阶段的展示来分析重大应用程序重写的影响。我在 R 中使用了 CausalImpact 包来评估分阶段部署对应用会话数量的影响,结果如下所示。我之前在这里更详细地讨论了这种方法

Staged rollout impact on mobile sessions — R + CausalImpact package — Twitch

2017

我继续使用 R 进行可视化,尽管我最近从游戏行业转向了金融技术。我做的一个改变是在 Jupyter 笔记本上而不是 RStudio 上做更多的分析。在接下来的几个月里,我会写更多关于我在意外收获数据所做的分析类型的博文。目前,这是从人口普查数据生成的美国人口热图。

US Population Map — R + ggplot2 package — Windfall Data

在过去的十年里,我使用了各种不同的工具,并且发现每种工具都有利弊。这些年来,我的关注点已经转移到了开源工具上,这些工具支持可重复的研究。

从 Alexa 奖中我们又学到了 11 课

原文:https://towardsdatascience.com/11-more-lessons-we-have-to-learn-from-alexa-prize-94fe14b8986f?source=collection_archive---------19-----------------------

我们又参加了 Alexa 奖。我们开发了 Alquist 2.0 ,在此期间我们学到了很多关于对话式人工智能的知识。我愿意与你分享我们新获得的知识。这篇文章是我们从亚马逊 Alexa 奖中学到的 13 课的延续。前一篇文章中包含的信息仍然有效,我强烈推荐它。这是我们今年发现很有帮助的新的 11 点。

1.将对话分成小部分

我们决定从大量专注于单一事物的小型对话中构建系统。这意味着我们有单独的对话,关于用户在哪里看电影,关于他如何选择一部电影来看,或者询问用户最喜欢的电影。每个对话最多有四个回合。它们的小尺寸带来了几个好处。这种对话创建起来简单快捷,易于调试,单个对话中的任何问题(例如错误识别)只适用于对话式人工智能的整个内容的一小部分。

2.创建主题的互联图

大量的小对话带来了新的挑战。你必须以某种方式将它们结合起来,形成一个有趣的对话,而不是在主题之间随意跳跃。我们用 T opic 图解决了这个问题。这是一个连接话题和对话的图表。图的一个基本积木就是一个主题(电影电影音乐人物演员)。每个主题都包含对话。主题音乐包含关于一般音乐的对话,如关于用户最喜欢的流派的对话或询问用户是否是一个好歌手的对话。这些主题由图的边连接起来。从具体话题到一般话题都有边缘。从电影(它包含关于特定电影的对话)到电影(关于一般电影的对话)或者从演员人物有一个边缘。

如果我们检测到用户想要谈论矩阵,我们选择主题电影。我们从电影主题中随机选取一些对话。当前一个对话结束时,我们随机选择下一个对话,直到我们没有使用完电影主题中的所有对话。当我们使用 all 时,我们可以从通过一条边连接到电影主题的主题中随机选择任何对话。在我们的例子中,它可以是来自电影主题的任何对话。通过这种方法,我们可以创建连贯的对话,在相关话题之间平滑过渡。此外,每个对话略有不同,因为我们随机选择下一个对话。

要解决的有趣问题可以是确定将最大化用户满意度的下一个对话。这意味着使用一些更智能的功能,而不是随机选择。我猜强化学习可能会有帮助。

3.开发工具来加速内容创建

去年我们在 12 个月内开发了 17 个主题。主题由状态自动机表示的对话组成,我们从 60%的预制状态和 40%的特殊硬编码状态中创建了状态自动机。这是一项痛苦而缓慢的任务。

今年我们只有 8 个月。我们决定投资一个月来开发一个图形工具,以加速对话的发展。这提高了我们的生产力,我们能够创建 27 个主题。

我们使用编辑器来创建对话树,随后我们基于混合代码网络为我们新开发的对话管理器生成训练数据。

4.使用机器学习作为制定规则的快速方法

如果你有很多数据,机器学习是很棒的。但在大多数情况下,你没有足够的数据,而且获取更多数据的成本很高。这就是为什么对我们来说使用不像已经提到的混合代码网络那样数据饥渴的模型很重要的原因。我们用它来进行对话管理。它将学到的部分与硬编码的规则结合起来。这使得我们可以用少量的例子来做决定。

但少量例子的问题是,机器学习算法将与看不见的例子斗争。然而,如果你仔细想想,这并不是一个大问题。为什么?因为你还有其他选择吗?你可以完全抛弃机器学习,硬编码一些规则。但是你确定你能写出涵盖所有例子的规则吗?还有,需要多长时间?

这就是我们使用机器学习的原因。我们并不期望我们的机器学习能够概括和处理所有的例子。我们认为机器学习是一种产生与硬编码规则相当的结果的方法,但它是自动创建的,速度更快。总而言之,我们知道我们的模型不是完美的,但是它们节省了我们的开发时间。

5.并非用户所说的一切都很重要

去年我们遇到了长用户消息的问题。一些用户简单地用长句回答,并不是句子中的所有内容都很重要。这种信息的一个例子可以是:“你知道,我是一个非常糟糕的厨师。但我想问你,你最喜欢的食物是什么?”句子中最重要的部分是“你最喜欢的食物是什么,”只处理这一部分并扔掉其余部分要容易得多。我们使用的解决方案是用标点符号将句子分开,只处理最后一部分。

但是这里有一个问题。Alexa 的 ASR 不识别标点符号。它只返回令牌。这是一个我们必须通过给句子添加标点符号的神经网络来解决的问题。好消息是这项任务有大量的数据。你只需要任何包含标点符号的文本语料库。

6.很难确定用户没有回答你的问题

我们的人工智能问了很多问题。有些很普通,有些有点奇怪。我们最大的问题之一是发现用户没有回答我们提出的问题,或者她回答了问题,但以某种我们没有预料到的方式回答了问题。如果出现这种情况,我们准备的答案没有任何意义。我们决定解决这个问题。我们最初的想法是这是一个容易解决的问题。我们将创建一个有两个输入的神经网络,即问题,并回答它。并且神经网络的任务将是分类该答复是否可以被认为是对问题的回答。我们使用对话数据集中的所有问题和答案作为正面例子,使用带有一些随机句子的问题作为负面例子。我们坚持训练,瞧,表演糟透了。遗憾的是,我们没有时间找出这次失败的原因。可能是数据量小,也可能是类不平衡造成的。需要更多的努力来解决这个重要的问题。

7.添加通用对话

我们今年设定的大目标是能够就任何实体或主题进行对话。这意味着我们希望能够谈论捕鱼、炼铁、战争或维多利亚女王。你不能准备所有话题的对话,而且在很多情况下,你甚至不能找到用户想要谈论的实体类型。我们称这样的实体为“通用实体”你唯一知道的是它的名字。幸运的是,你可以用这个名字找到新闻文章趣闻,以及关于它的淋浴想法。你可以将这些组合成对话,适用于任何主题或实体。问题是这些对话不够有趣,所以它们只在几个回合中起作用,然后你应该尝试将对话的主题改为对话式人工智能中更有趣的部分。

8.创造观点

我们注意到用户会问类似“你觉得 X 怎么样?”“你最喜欢的 Y 是什么?”,或者“你知道 Z 吗?”经常。所以我们不能对这些问题置之不理。

我们通过获取包含 X 的最近推文,并测量他们的平均情绪,解决了“你对 X 有什么看法”。我们获得了一个介于 0.0 和 1.0 之间的数字,并设置了两个阈值。如果平均值低于 0.4,我们回答说我们不喜欢 X 。如果分数在 0.4 到 0.6 之间,我们回答说 X 有积极和消极的方面,如果分数高于 0.6,我们回答说我们喜欢 X 。我们必须缓存分数,因为它对于实时使用来说太慢了。但是,我建议您小心使用这种方法,因为计算出的【恐怖主义】的分数介于 0.4 和 0.6 之间。这导致了答案“有积极的一面,也有消极的一面。”这是你绝对不想回答的问题。我们不得不筛选像这样敏感话题的答案。**

我们用微软概念图“你最喜欢的 Y 是什么”的处理,如果 Y,我们在里面找到概念,回答人气最大的实体。在我们的例子中,答案是“我最喜欢的书是百科全书】

最后一个问题“你知道 Z 吗”如你所料简单。我们刚刚在维基百科上找到了 Z ,并由回答“是的,我知道 Z。它是……”**

你可能觉得这些答案没那么有趣。是的,你是对的,但这不是目标。我们的目标是建立一个系统,能够回答任何实体或主题的这些问题。他们确实这么做了。产生引人入胜的答案是我们随后进行的对话的目标。

9.为回访用户创建内容

你也应该花一些时间为已经和你交谈过的用户提供内容。我们去年在有限的范围内对回归用户做出了反应。这意味着我们记住了她的名字和我们谈论的话题。我们决定今年更进一步。我们的方法是使用她告诉我们的信息,并在她下次与我们交谈时尝试使用这些信息进行对话。

如果她告诉我们她有一只宠物,我们会在接下来的对话中问这个宠物怎么样。如果她告诉我们她有一个兄弟姐妹,我们会在接下来的对话中询问他的名字。这就产生了这样一种感觉:我们记住了用户告诉我们的内容。但是如果你没有好的内容给第一次使用的用户,这种技术是没有用的。原因是不满意的首次用户将永远不会回来。所以首先关注首次用户,然后为回头客添加内容。但是我认为这个建议很明显。

10.迷路了就聊聊平常的事

有时候会这样。你收到一些奇怪的输入,尽管你很努力,但所有的分类器都没有捕捉到任何主题或合适的答案。在这种情况下该怎么办?我们的方法是说“对不起”,然后从一些非常基本的对话开始,比如“你喝自来水吗?”“你有宠物吗?”“你早上会按贪睡键吗?”多亏了这一策略,我们才得以化险为夷,继续对话。

11.转述是很酷的技巧

转述是一种有用的交流技巧。它是用不同的词重述课文的意思。它的主要目的是向交流伙伴发出信号,表明我们理解他。我们实现了它,并惊讶地发现用它对话听起来更自然。

我们的系统将用户的信息“我喜欢煎饼,我的父母喜欢蛋糕”转述,“所以你试图告诉我,你喜欢煎饼,你的妈妈和爸爸喜欢蛋糕。”释义系统的主要部分是一个数据库,包含我们交换的成对短语。有成对的、【我是】、【你是】、、【我的父母】、【你的爸爸妈妈】、等等。我们也有一个转述句子开头的数据库,包含“所以你试图对我说“”,所以你说的是“”,例如“如果我理解正确的话”。如果用户的信息是一个问题(我们通过 wh-word 的存在来确定),我们准备了不同的短语,如“你在问”“你想知道”“你问了我一个非常有趣的问题。”我们以小概率随机执行了转述系统。

结论

这些是我的 11 条建议,我们是通过 Alexa Prize 和我们的对话 AI Alquist 了解到的。我相信,我们在减少创建对话式人工智能内容所需的时间方面取得了很大的进展,我们创造了允许我们谈论任何话题或实体并发表意见的技术,还实际测试了几个对话技巧,如返回用户的内容或释义。我希望这篇文章能激励你参与对话式人工智能的开发。

另外,你可能感兴趣的最后一件事是,对话式人工智能现在还有多远?现在我们只是在制造一个人工智能可以对话的假象。我们用了很多技巧让它看起来更聪明,但实际上,并不是这样。你可能觉得我的回答很怀疑,但实际上并不是。这意味着有很大的改进空间,我们需要很多聪明的人来实现我们的目标,即真正智能的对话式人工智能。这将是具有挑战性的。但是要记住!我们选择这个目标不是因为它容易,而是因为它难!

彼得·马雷克

原载于petr-marek.com

喜欢这篇文章吗?点击👏下面把它推荐给其他感兴趣的读者!

我在数据中的 117 天 Tinder 个人资料

原文:https://towardsdatascience.com/117-days-of-tinder-in-data-755fe9ed853e?source=collection_archive---------5-----------------------

Image by Solen Feyissa on Pixabay

大约 4 个月前——在我结束了 3 年的恋情之后——我决定创建一个 Tinder 个人资料。以下是那个侧面的故事(有数据)。如果你很懒,不在乎细节,跳到最下面有一个 Sankey 图,总结了很多。

让我们先了解一些基础知识,因为这些话题不可避免地会出现。

男的还是女的?

男,22。直男。

我住在哪里?

拥有大约一百万人口的加拿大城市。

我好看吗?

我可能是一个长相相当普通的人,可能略高于平均水平,但肯定不是模特。目前在我的 Tinder 个人资料上的照片有着从 7.7 到 9.3 不等的吸引力评分。然而,请记住,我确实为我的个人资料拍了一些好照片。

我有金子吗?

是的。

我的偏好设置是什么?

我的偏好最初设定得很宽,但随着时间的推移已经缩小了。目前,它被设定为 100 公里内 18-25 岁的女性。

现在是有趣的事情。

活动

我的 Tinder 活跃度(以应用每天打开次数衡量)从 0 到 153 不等——平均值为 29 次,中位数为 20 次。

我在 Tinder 上的第一周是我最活跃的一周。然而,除此之外,我的活动没有显示出明确的趋势,但高活动期似乎确实会突然出现,中间会有间歇。

偷窃

在近 4 个月的时间里,我记录了 16561 次刷卡。这意味着平均每天刷卡 141.5 次,中位数为 96 次。

在 16,561 次刷卡中,7,886 次是赞,8,675 次是通过,总体赞率为 47.3% 。

数据还显示,随着时间的推移,我的刷卡变得更加有选择性——尽管这可能是因为我的偏好发生了变化,或者 Tinder 的算法向我显示了更好的配置文件。有趣的是,我确实相信随着时间的推移,我变得更有选择性了。

比赛

我总共收到了 290 条匹配——平均每天 2.5 条。这意味着大约 1.75%的我的刷卡会导致匹配,大约 3.7%的我的喜欢。

在任何一天,我都会收到 0 到 10 个匹配。每天比赛的分布严重向右倾斜,模式为 2。

信息发送

我在 Tinder 上总共交换了 504 条信息——发送了 274 条,收到了 230 条。这个数字相对较低,因为我通常试图在几条消息中得到一个电话号码。

下面是我的信息是如何随着时间的推移而积累起来的:

在我的 290 次匹配中,有 99 次(34%)至少交换了一条信息。在这 99 人中,有 12 人给我发了信息,但我没有回复,这意味着我给 30%的匹配者发了信息。

在我发送的 87 条匹配信息中,有 56 条至少回复了一次,回复成功率约为 64%。这个比例可能比它应该的要低,因为我经常等几天或几周才收到我不太感兴趣的比赛的消息。我自己对三天内发送的比赛信息的追踪显示回复率为 78%,而我最好的开场白的回复率为 84%。

超级旅行

我也开始追踪我自己的超级跑步成功率。在 183 次超级相似中,有 14 次匹配,成功率为 8%。这是按年龄划分的成功案例:

以及按年龄划分的成功率:

我有一个个人理论,年轻女孩的成功率会更高,但迄今为止,没有明显的趋势出现。

总结果

我打火的最终结果可以用这张图表来概括:

Built in SankeyMatic

总的来说,我和约会的次数超过了我的对手的 1%。我认为这个数字相当保守;我很有信心,如果我想的话,我可以得到更多的约会。

我选择发送多少条信息主要取决于我那周有多忙,我是否有其他约会计划(来自 Bumble 或我在现实生活中遇到的女孩),或者我当时有多想去约会。

数据来源

这里所有的数据都来自我自己的 Tinder 个人资料。其中大部分来自对 Tinder 的数据请求,还有一部分是自我跟踪的。

数据科学家将完全涉及的 12 种情况

原文:https://towardsdatascience.com/12-situations-data-scientists-will-totally-relate-to-bb6bd3f0a28e?source=collection_archive---------2-----------------------

数据科学家是比任何软件工程师更擅长统计,比任何统计学家更擅长软件工程的人。

——约什·威尔斯,克劳德拉

数据科学无疑是当今市场上最受欢迎的技能之一。根据美国消费者新闻与商业频道的一篇文章,“数据科学家”在 2017 年十大职业中名列前茅,这些职业包括就业增长、工资中位数、所需体力、压力水平等等。工资中位数为 111,267 美元,预计就业增长率为 16%,数据科学领域的职业确实非常有利可图。

话虽如此,成为一名数据科学家需要付出很多。这份工作需要丰富的想象力和扎实的技能,尤其是数字方面的技能。一个人必须有能力收集正确的数据,形成用于分析的数据,设计创造性的方法来可视化数据,并根据数据的洞察力回答特定的相关问题。

正是因为这个原因,一个顶尖的数据科学家经常在技术公司受到摇滚明星般的待遇。然而,数据极客的生活并不轻松。随着新工具和不同问题解决技术的不断涌现,数据科学家需要不断学习,以保持知识和技能的更新,并保持其组织的宝贵资产。

也就是说,以下 12 种情况完美地描述了数据科学家的处境。

当有人问你,“什么是大巴塔?”

真的吗?

我们生活在一个高度数字化的世界,大数据无处不在。我们不断产生数量惊人的数据——想想社交媒体、网上银行、移动购物、GPS 等等。事实上,据报道,我们一天产生大约 2.5 万亿字节的数据!

大数据改变了我们与人沟通和管理生活的方式。来自大数据的见解有助于零售网站向您发送完全符合您偏好的产品推荐,政府当局了解和预测犯罪,交通机构管理和控制交通,或者医疗从业者识别处于风险中的人。

大数据的应用确实是无止境的,并且在很大程度上提高了我们的生活质量。因此,每个人都应该熟悉术语“大数据”。

当你的 R 代码第一次工作时

初露头角的数据科学家会和这张 GIF 联系起来。r 编程是数据科学领域最需要的技能之一。根据 KDnuggets 的一篇文章,R 是 2016 年最受欢迎的分析和数据科学软件,其次是 Python。

考虑到软件在市场上的需求,当你的 R 代码按照预期的方式工作时,你会情不自禁地想象自己是最大的数据呆子。

当您必须处理非结构化流数据时

非结构化数据分析领域通常被称为“黑暗分析”。这听起来确实令人生畏,也确实如此。

即使是最熟练的数据科学家,处理非结构化流数据也是一件难事。无论是来自社交媒体、视频、客户日志文件还是地理空间服务的数据,分析都需要随着多条记录的创建而循序渐进。此外,在处理这些数据时,时间是至关重要的。

因此,当你陷入黑暗分析时,你肯定会感觉类似于试图揭开宇宙奥秘的太空科学家。

当您的模型预测准确率超过 90%时

这是一件大事。数据科学家必须花费大量时间来研究、理解、准备和操作数据以进行分析。这个过程需要极大的耐心和努力。然而,当你建立的模型提供超过 90%的准确率时,回报是巨大的。

当你的客户、经理和同事对你赞不绝口时,你心中只有一件事,因为你骄傲自大——一个无拘无束的狂欢周末!

当你试图在你的模型中发现一个问题时

试图在数百或数千行代码中寻找错误与在宿醉中大海捞针没有太大区别。

但是让我们面对现实吧。这都是游戏的一部分。

当您的经理询问您关于漏洞修复的情况时

通常,数据科学组织中的经理不理解技术任务的本质,无论是调试还是调整机器学习模型。经理通常更关心项目管理方面(理解为:截止日期)。

在这种情况下,作为一名数据科学家,你所能做的就是再拖延一些时间,或者在极少数情况下神秘消失。

当你对模型一无所知的朋友解决了问题

你已经徒劳地盯着你的代码看了几个小时,你已经快要放弃了。而一个朋友随便看看你有什么,秒指出错误。

虽然这可能是发生的最令人讨厌的事情之一,但那些最初的尴尬和烦躁很快就会变成解脱,因为你现在少了一件需要担心的事情。

没事的。有时候,你需要一双新鲜的眼睛来完成工作。

当您的 SQL 查询永远无法执行时

缓慢的服务器,糟糕的互联网,或者无论什么原因,等待 SQL 查询的执行就像看着油漆变干,除非你太偏执而不能离开你的系统。

这很无聊,也是对耐心的极大考验。尽管我们都经历过。

当您完成建模并且您的客户端更改了数据时

在做了令人麻木的努力来分析数据和识别无数的趋势或模式后,你最不想听到的就是你使用的数据不是“正确的”数据。

当你得到一个完全不同的数据集时,这意味着你必须对模型本身做出重大改变。所以,就这样,你又一次从头开始工作。痛苦啊!

当你在 20 分钟后有一个客户演示,而你还没有完成你的演示

你刚刚为客户准备完一份演示文稿。你已经准备好摇滚了,对吧?大多数情况下,不是。

数据科学家必须由他或她的同事和经理进行演示。这通常意味着一件事——大量的最后一刻的改变。做出这样的改变可能会非常有压力,因为除了你的个人声誉,还有很多东西处于危险之中:潜在的销售、公司的形象,甚至你的职业发展。

但是最终,当你从客户那里得到肯定的答复时,你会意识到其中的一些改变是至关重要的,事实上,这让你的理由更加充分。

正如传奇人物史蒂夫·乔布斯曾经说过的:

“生意场上的大事,从来不是一个人做出来的;它们是由一队人完成的。”

当客户最终同意您的模型输出时

这是数据科学家幻想的“老板”时刻——当你知道自己对组织的业务做出了巨大贡献时。

客户可能非常苛刻和挑剔,所以你不知疲倦地工作,使你的模型尽可能准确和有效。你必须根据客户的奇思妙想行事,这并不总是有趣的。但是,最后,当客户给你一个明确的竖起大拇指,就是最终的胜利。

柯克·伯恩博士说得对:

“客户可能不总是对的,但客户永远是客户。”

当新的大数据技术进入市场时

分析行业发展迅速,新的工具和技术也是如此。数据科学家正在看到各种大数据、分析和深度学习工具的出现。

作为天生的不断学习者,数据极客对这些新发展持开放态度,因为他们有机会拓宽自己的知识和技能。

(GIF 图片来源:giphy.com)

(这篇特写首次出现在 BRIDGEi2i 博客 )

非常感谢你的阅读!如果这篇文章让你发笑,请点击下面的心形按钮,让更多的人看到它。

关于机器学习要知道的 12 件有用的事情

原文:https://towardsdatascience.com/12-useful-things-to-know-about-machine-learning-487d3104e28?source=collection_archive---------1-----------------------

机器学习算法可以通过从示例中进行归纳来找出如何执行重要任务。在手动编程不可行的情况下,这通常是可行的且成本有效的。随着越来越多的数据可用,更多雄心勃勃的问题可以得到解决。因此,机器学习被广泛应用于计算机等领域。然而,开发成功的机器学习应用程序需要大量在教科书中很难找到的“黑色艺术”。

我最近读了一篇令人惊叹的技术论文,作者是华盛顿大学的 Pedro Domingos 教授,题目是“ 关于机器学习需要知道的一些有用的事情”。 ”它总结了机器学习研究人员和实践者学到的 12 条关键经验,包括要避免的陷阱、要关注的重要问题和常见问题的答案。我想在本文中分享这些经验,因为它们在考虑解决下一个机器学习问题时非常有用。

1 —学习=表示+评估+优化

所有机器学习算法通常只由 3 个部分组成:

  • 分类器必须用计算机能够处理的某种形式语言来表示。相反,为学习者选择一个表示就相当于选择它可能学习的一组分类器。这个集合被称为学习者的假设空间。如果分类器不在假设空间中,它就不能被学习。一个相关的问题是如何表示输入,即使用什么特征。
  • 评估:需要一个评估函数来区分好的分类器和坏的分类器。算法内部使用的评估函数可能不同于我们希望分类器优化的外部函数,这是为了便于优化,也是由于下一节中讨论的问题。
  • 优化:最后,我们需要一种方法在语言的分类器中搜索得分最高的分类器。优化技术的选择对于学习者的效率是关键的,并且如果评估函数具有一个以上的最优值,也有助于确定产生的分类器。对于初学者来说,开始使用现成的优化器是很常见的,这些优化器后来被定制设计的优化器所取代。

2 —概括才是最重要的

机器学习的基本目标是推广到训练集中的示例之外。这是因为,无论我们有多少数据,我们都不太可能在测试时再次看到那些精确的例子。在训练中做得好很容易。机器学习初学者最常见的错误就是在训练数据上进行测试,产生成功的错觉。如果选择的分类器然后在新的数据上被测试,它通常不比随机猜测好。所以,如果你雇人来构建一个分类器,一定要把一些数据留给自己,并在上面测试他们给你的分类器。相反,如果你被雇来建立一个分类器,从一开始就把一些数据放在一边,只在最后用它来测试你选择的分类器,然后在整个数据上学习你的最终分类器。

3 —仅有数据是不够的

将一般化作为目标还有另一个主要后果:不管你有多少数据,光有数据是不够的。

这似乎是相当令人沮丧的消息。那么我们怎么能希望学到东西呢?幸运的是,我们想要在现实世界中学习的函数并不是从所有数学上可能的函数集中统一得出的!事实上,非常一般的假设——比如平滑度、类似的例子具有类似的类、有限的依赖性或有限的复杂性——通常足以做得非常好,这也是机器学习如此成功的很大一部分原因。和演绎一样,归纳(学习者所做的事情)是一个知识杠杆:它把少量的输入知识变成大量的输出知识。归纳法是一个比演绎法强大得多的杠杆,它需要少得多的输入知识来产生有用的结果,但它仍然需要比零输入知识更多的知识来工作。而且,就像任何杠杆一样,我们放进去的越多,出来的就越多。

回想起来,学习对知识的需求应该不足为奇。机器学习不是魔术;它不可能无中生有。它所做的是用更少的资源获得更多。像所有工程一样,编程是一项繁重的工作:我们必须从头开始构建一切。学习更像耕作,让大自然做大部分的工作。农民将种子和养分结合起来种植作物。学习者将知识与数据相结合来开发程序。

4-过度拟合有许多面

如果我们拥有的知识和数据不足以完全确定正确的分类器怎么办?那么我们就有可能产生一个分类器(或它的一部分)的幻觉,这个分类器不是基于现实的,只是在数据中编码随机的怪癖。这个问题被称为过拟合,,是机器学习的 bugbear。当您的学习者输出一个对训练数据 100%准确,但对测试数据只有 50%准确的分类器时,实际上它可以输出一个对两者都有 75%准确的分类器,它已经过拟合了。

机器学习中的每个人都知道过度拟合,但它以许多形式出现,不会立即显而易见。理解过度拟合的一种方法是将泛化误差分解为偏差方差。偏见是学习者总是学习同样错误的东西的倾向。方差是学习随机事物而不考虑真实信号的趋势。线性学习者有很高的偏见,因为当两个类之间的边界不是超平面时,学习者无法诱导它。决策树没有这个问题,因为它们可以表示任何布尔函数,但另一方面,它们可能会受到高方差的影响:在同一现象生成的不同训练集上学习到的决策树往往非常不同,而实际上它们应该是相同的。

交叉验证有助于对抗过度拟合,例如通过使用它来选择学习决策树的最佳大小。但是它不是万灵药,因为如果我们用它来做太多的参数选择,它本身就会开始过度适应。

除了交叉验证之外,还有许多方法来对抗过度拟合。最流行的方法是在评估函数中增加一个正则项。例如,这可能不利于具有更多结构的分类器,从而有利于较小的分类器,较小的分类器具有较小的过度适应空间。另一种选择是在添加新结构之前执行统计显著性测试,如卡方检验,以确定使用和不使用该结构时类的分布是否真的不同。当数据非常缺乏时,这些技术特别有用。然而,你应该对声称一种特殊的技术“解决”过度拟合问题持怀疑态度。通过陷入与欠拟合(偏差)相反的错误,很容易避免过拟合(方差)。同时避免这两者需要学习一个完美的分类器,如果事先不知道,就没有一种技术总是做得最好(没有免费的午餐)。

5——直觉在高维空间失效

过拟合之后,机器学习最大的问题就是维数灾难。这个表达是 Bellman 在 1961 年创造的,指的是当输入是高维时,许多在低维工作良好的算法变得难以处理。但在机器学习中,它指的远不止这些。随着示例维数(要素数量)的增加,正确概化变得更加困难,因为固定大小的训练集覆盖了输入空间中不断缩小的部分。

高维度的普遍问题是,我们来自三维世界的直觉通常不适用于高维度。在高维中,一个多元高斯分布的大部分质量并不在均值附近,而是在它周围越来越远的“壳”中;而且一个高维橙子的大部分体积都在果皮里,而不是果肉里。如果恒定数量的样本均匀分布在高维超立方体中,在某些维度之外,大多数样本比它们的最近邻居更靠近超立方体的面。如果我们通过在超立方体中雕刻来近似一个超球面,在高维空间中,几乎所有超立方体的体积都在超球面之外。这对机器学习来说是个坏消息,在机器学习中,一种类型的形状通常由另一种类型的形状来近似。

构建二维或三维分类器很容易;我们可以通过目测在不同类别的例子之间找到合理的边界。但是在高维度中,很难理解发生了什么。这反过来使得设计一个好的分类器变得困难。有人可能天真地认为,收集更多的特性不会有什么坏处,因为在最坏的情况下,它们不会提供关于该类的新信息。但事实上,它们的好处可能会被维数灾难盖过。

6 —理论上的保证并不像它们看起来那样

机器学习论文充满了理论保障。最常见的类型是对确保良好概括所需的示例数量的限制。你应该如何看待这些保证?首先,值得注意的是,它们甚至是可能的。归纳传统上与演绎相反:在演绎中,你可以保证结论是正确的;在诱导阶段,所有的赌注都是无效的。或者说这是许多世纪以来的传统观点。最近几十年的主要发展之一是认识到事实上我们可以对归纳的结果有保证,特别是如果我们愿意满足于概率保证的话。

我们必须小心像这样的界限意味着什么。例如,它并没有说,如果你的学习者返回了一个与特定训练集一致的假设,那么这个假设很可能是通用的。也就是说,给定一个足够大的训练集,你的学习者很有可能要么返回一个概括得很好的假设,要么无法找到一个一致的假设。这个界限也没有说明如何选择一个好的假设空间。它只告诉我们,如果假设空间包含真正的分类器,那么学习者输出坏分类器的概率随着训练集大小而降低。如果我们缩小假设空间,界限会改善,但是它包含真实分类器的机会也会缩小。

另一种常见的理论保证是渐近的:给定无限的数据,保证学习者输出正确的分类器。这是令人放心的,但由于其渐近保证,选择一个学习者而不是另一个学习者是轻率的。实际上,我们很少处于渐近状态(也称为“渐近状态”)。并且,由于上面讨论的偏差-方差权衡,如果给定无限数据,学习者 A 比学习者 B 好,则 B 通常比给定有限数据好。

理论保障在机器学习中的主要作用不是作为实际决策的标准,而是作为算法设计的理解来源和驱动力。在这种情况下,他们是非常有用的;事实上,理论和实践的密切相互作用是机器学习多年来取得如此大进展的主要原因之一。但是买者自负:学习是一种复杂的现象,仅仅因为一个学习者有理论上的正当理由并在实践中工作并不意味着前者是后者的原因。

7 —特征工程是关键

最终,一些机器学习项目成功了,一些失败了。有什么区别?很容易,最重要的因素是所使用的特性。如果你有许多独立的特性,并且每一个都和这个类有很好的关联,那么学习就很容易。另一方面,如果类是一个非常复杂的功能特性,你可能无法学习它。通常,原始数据不是一种易于学习的形式,但是您可以从中构建出易于学习的特征。这通常是机器学习项目中大部分努力的方向。这通常也是最有趣的部分之一,直觉、创造力和“黑色艺术”与技术一样重要。

第一次接触机器学习的人通常会惊讶于在一个机器学习项目中实际花在机器学习上的时间是如此之少。但是,如果你考虑到收集数据、整合数据、清理数据和预处理数据是多么耗时,以及在功能设计中可以进行多少尝试和错误,这是有道理的。此外,机器学习不是建立数据集和运行学习器的一次性过程,而是运行学习器、分析结果、修改数据和/或学习器并重复的迭代过程。学习通常是最快的部分,但那是因为我们已经掌握得很好了!特征工程更难,因为它是特定领域的,而学习者可以是通用的。然而,这两者之间并没有明显的界限,这也是为什么最有用的学习者是那些促进知识融合的人。

8-更多的数据胜过更聪明的算法

在大多数计算机科学中,两个主要的有限资源是时间和内存。在机器学习中,还有第三个:训练数据。哪一个是瓶颈,十年换十年。在 20 世纪 80 年代,它倾向于数据。今天通常是时间。海量的数据可用,但没有足够的时间来处理这些数据,因此这些数据被闲置。这导致了一个悖论:尽管原则上更多的数据意味着可以学习更复杂的分类器,但在实践中,更简单的分类器最终被使用,因为复杂的分类器需要太长的时间来学习。部分答案是想出快速学习复杂分类器的方法,事实上在这个方向上已经有了显著的进展。

使用更聪明的算法的回报比你预期的要小,部分原因是,在第一个近似值上,它们都做同样的事情。当你考虑到不同的表现形式,比如说,不同的规则集和神经网络时,这是令人惊讶的。但事实上,命题规则很容易被编码为神经网络,其他表示之间也存在类似的关系。所有的学习者本质上都是通过把附近的例子分组到同一个班级来工作的;关键的区别在于“附近”的含义使用非均匀分布的数据,学习者可以产生非常不同的边界,同时仍然在重要的区域(具有大量训练示例的区域,因此也是大多数文本示例可能出现的区域)中做出相同的预测。这也有助于解释为什么强大的学习可能不稳定,但仍然准确。

通常,首先尝试最简单的学习者是值得的(例如,在逻辑回归之前的朴素贝叶斯,在支持向量机之前的 k-最近邻)。更复杂的学习者是诱人的,但他们通常更难使用,因为他们有更多的旋钮需要你去转动以获得好的结果,也因为他们的内部更不透明)。

学习器可以分为两种主要类型:一种是表示具有固定大小的,如线性分类器,另一种是表示可以随着数据增长的,如决策树。固定规模的学习者只能利用这么多的数据。给定足够的数据,可变大小学习器原则上可以学习任何函数,但实际上,由于算法或计算成本的限制,它们可能无法学习。此外,由于维数灾难,现有的数据量可能是不够的。出于这些原因,聪明的算法——那些充分利用数据和计算资源的算法——最终往往会有回报,只要你愿意付出努力。设计学习者和学习分类器之间没有明显的界限;更确切地说,任何给定的知识都可以被编码在学习者的大脑中,或者从数据中学习。因此,机器学习项目往往以学习者设计的重要组成部分告终,从业者需要在这方面有一些专业知识。

9-学习多种模式,而不仅仅是一种

在机器学习的早期,每个人都有自己最喜欢的学习者,以及一些相信其优越性的先验理由。大部分的努力都花在了尝试它的许多变化和选择最好的一个上。然后,系统的经验比较表明,最佳学习者因应用程序而异,包含许多不同学习者的系统开始出现。现在努力尝试许多学习者的许多变化,并且仍然选择最好的一个。但是后来研究人员注意到,如果我们不选择找到的最佳变体,而是组合许多变体,结果会更好——通常好得多——并且对用户来说没有额外的努力。

创建这样的模型集合现在是标准。在最简单的技术中,称为 bagging,我们简单地通过重采样生成训练集的随机变化,在每个变化上学习一个分类器,并通过投票组合结果。这是可行的,因为它极大地减少了方差,而只是略微增加了偏差。在 boosting 中,训练样本具有权重,这些权重是可变的,以便每个新的分类器专注于先前的分类器容易出错的样本。在堆叠中,单个分类器的输出成为“高级”学习器的输入,该学习器找出如何最好地组合它们。

存在许多其他技术,并且趋势是越来越大的集合。在网飞奖中,来自世界各地的团队竞相打造最佳视频推荐系统。随着比赛的进行,团队发现他们通过将他们的学习者与其他团队结合起来获得了最好的结果,并合并成越来越大的团队。冠军和亚军都是超过 100 名学习者的组合,将这两个组合结合起来进一步改善了结果。毫无疑问,我们将来会看到更大的规模。

10-简单并不意味着准确

奥卡姆剃刀的著名论断是,实体的繁殖不应超过需要。在机器学习中,这通常意味着,给定两个具有相同训练误差的分类器,两个分类器中较简单的一个可能具有最低的测试误差。这种说法的所谓证据经常出现在文献中,但事实上有许多反例,而“没有免费的午餐”定理暗示这不可能是真的。

我们在上一节看到了一个反例:模型集合。即使在训练误差已经达到零之后,通过增加分类器,增强集成的泛化误差继续改善。因此,与直觉相反,模型的参数数量与其过度拟合的趋势之间没有必然的联系。

相反,更复杂的观点将复杂性等同于假设空间的大小,其基础是更小的空间允许假设由更短的代码来表示。像上面理论保证一节中那样的界限可能会被认为是暗示更短的假设概括得更好。这可以通过给空间中的假设分配更短的代码来进一步细化,我们对该空间有一些先验的偏好。但将此视为准确性和简单性之间权衡的“证据”是循环推理:我们通过设计使我们偏好的假设更简单,如果它们是准确的,那是因为我们的偏好是准确的,而不是因为假设在我们选择的表示中是“简单的”。

11-可表示并不意味着可学习

基本上,可变大小学习器中使用的所有表示都有相关的定理,其形式为“使用这种表示,每个函数都可以被表示,或者被任意近似。”对此感到放心后,该代表的粉丝通常会忽略所有其他人。但是,一个函数可以被表示出来,并不代表它可以被学习。例如,标准决策树学习者不能学习比训练样本更多的叶子的树。在连续空间中,使用一组固定的基元来表示即使是简单的函数,通常也需要无限数量的组件。

此外,如果假设空间具有许多评估函数的局部最优值,这是经常发生的情况,学习者可能找不到真正的函数,即使它是可表示的。给定有限的数据、时间和记忆,标准学习者只能学习所有可能函数的极小子集,这些子集对于具有不同表征的学习者是不同的。因此,关键问题不是“它能被表现出来吗?”对此,答案往往是琐碎的,但“它能被学习吗?”尝试不同的学习者(并可能结合他们)是值得的。

相关性并不意味着因果关系

相关性并不意味着因果关系的观点经常被提出,因此也许不值得赘述。但是,即使我们一直在讨论的这种学习者只能学习相关性,他们的结果也经常被视为代表因果关系。这难道不是错的吗?如果是,那么人们为什么要这么做?

通常情况下,学习预测模型的目的是将它们用作行动指南。如果我们发现啤酒和尿布经常在超市一起购买,那么也许把啤酒放在尿布区旁边会增加销售额。但是除非真的做实验,否则很难说。机器学习通常应用于观察数据,其中预测变量不受学习者控制,与实验数据相反,预测变量受学习者控制。一些学习算法可以潜在地从观察数据中提取因果信息,但是它们的适用性相当有限。另一方面,相关性是潜在因果联系的标志,我们可以用它作为进一步调查的指南。

结论

像任何学科一样,机器学习有许多“民间智慧”,它们可能很难获得,但对成功至关重要。多明戈斯教授的论文总结了一些你需要知道的最重要的项目。

— —

如果你喜欢这首曲子,我希望你能按下拍手按钮👏所以其他人可能会偶然发现它。你可以在GitHub上找到我自己的代码,在https://jameskle.com/上找到更多我的写作和项目。也可以在 上关注我【推特】*直接发邮件给我 或者 在 LinkedIn 上找我 注册我的简讯 就在你的收件箱里接收我关于数据科学、机器学习和人工智能的最新想法吧!*

2018 年你需要知道的 15 个人工智能(AI)统计数据

原文:https://towardsdatascience.com/15-artificial-intelligence-ai-stats-you-need-to-know-in-2018-b6c5eac958e5?source=collection_archive---------1-----------------------

人工智能(AI)每天都在以惊人的速度增长,随之而来的是,围绕该行业及其正在变革的各种行业的统计数据也在发生变化。该技术已经在简化医疗保健行业的工作流程、减少教育部门管理任务的工时以及降低制造业的间接成本方面取得了巨大成功。似乎每天都有新的人工智能初创公司冒出来,目的是改变我们日常的思维、互动和工作方式。

为了向这项技术致敬,我们收集了大量与人工智能相关的数据,以便让你了解这项技术如今有多流行。这些统计数据涵盖了截至 2018 年的技术状况,其中包括像 WorkFusion 这样的公司成为该行业的领导者。这家软件公司为寻求提高投资回报率的企业提供各种智能自动化解决方案。

以下是 2018 年你需要知道的 15 个 AI 统计:

  • 根据 Adobe 的数据,截至目前,只有 15%的企业在使用人工智能,但预计 31%的企业将在未来 12 个月内添加人工智能。
  • 据斯坦福大学统计,自 2000 年以来,活跃的创业公司数量增加了 1400%。
  • 据 Adobe 称,自 2000 年以来,风险资本家对人工智能初创公司的投资飙升了 6 倍。
  • 根据 Adobe 的数据,自 2013 年以来,需要人工智能的工作份额增加了 450%。
  • 斯坦福大学的数据显示,对于使用人工智能的企业,表现最佳的公司表示,他们使用该技术进行营销的可能性是行业同行的两倍多,分别为 28%和 12%。
  • 根据 BridghtEdge 的说法,下一个大的营销趋势被视为消费者个性化(29%),其次是人工智能(26%)。
  • Monster.com 最受欢迎的三项技能是机器学习、深度学习和自然语言处理。
  • 国际数据公司(IDC)预测,到 2021 年,全球人工智能发送的复合年增长率将为 50.1%,达到 576 亿美元。这要归功于对零售、银行、医疗保健和制造业的投资,这些领域将占全球人工智能支出的一半以上。
  • Adobe 还发现,47%的数字化成熟组织,即那些拥有先进数字化实践的组织,都有明确的人工智能战略。
  • Juniper Research 在一项研究中发现,到 2022 年,全球人工智能支出将从 2018 年的 20 亿美元增长到每年 73 亿美元。这是因为公司将大力投资于人工智能工具,这些工具将帮助他们区分和改善他们为客户提供的服务。
  • 根据叙事科学的数据,大约 61%拥有创新战略的公司正在使用人工智能来识别数据中的机会,否则他们会错过这些机会。对于没有这一战略的公司,这一数字仅为 22%。
  • 佩奇表示,约 38%的消费者认为人工智能将改善客户服务。
  • PointSource 的一项研究发现,当人工智能被战术性地部署时,34%的购物者将在网上花更多的钱。约 49%的人表示,当人工智能出现时,他们愿意更频繁地在线购物。
  • 根据埃森哲的数据,人工智能医疗保健市场预计到 2021 年将达到 66 亿美元。该研究补充说,到 2026 年,临床健康人工智能应用可以为美国医疗保健经济每年节省 1500 亿美元。
  • 根据 IDC 的数据,在全球范围内,机器人进口已经从 2000 年的大约 10 万台增加到 2015 年的大约 25 万台。

加入 15 个数据科学 Slack 社区

原文:https://towardsdatascience.com/15-data-science-slack-communities-to-join-8fac301bd6ce?source=collection_archive---------0-----------------------

放松时伸出援手,提升你的职业生涯

image created by Formulated.by :]

【2020 年 11 月:此榜单已更新 此处

他们说这需要一个村庄,但在这个数字时代,它实际上只需要一个聊天室,就可以立即将你与世界各地的资源联系起来,从而推动你的职业生涯。我们梳理了我们的联系人和数据,为您带来了一些最佳数据科学和机器学习 slack 社区的列表。来吧,登录并花些时间与您的同事讨论在您的工作流程中阻碍您的问题、要避免的陷阱或让生活更轻松的提示。快乐懈怠!

我们错过什么了吗?请随意将您最喜欢的 ML Slack 社区添加到此列表中。

15 个惊人的数据可视化(以及你能从中学到什么)

原文:https://towardsdatascience.com/15-stunning-data-visualizations-and-what-you-can-learn-from-them-fc5b78f21fb8?source=collection_archive---------1-----------------------

我们淹没在数据中。每天都有 2.5 万亿字节的数据产生。这相当于全球 90%的信息——仅在过去两年中就产生了这些信息。这就是我们所说的“大数据”

但是它从哪里来呢?无处不在,从传感器和社交媒体网站到数字图像和视频。我们拥有的数据比我们知道的要多得多,所以现在是时候组织和理解这些数据了。

这就是数据可视化发挥作用的地方。在等待我们的地震式转变中,有些人称之为数据的工业革命,我们必须更好、更有效地创建创新的数据可视化,使复杂的数据易于理解。

为了启发你自己的工作,我们汇编了 15 个数据可视化,它们不仅会让你大吃一惊,还会让你更清楚地了解什么是好的可视化,什么是坏的可视化。

1.它是互动的

互动作品著名创意人士的日常事务是数据可视化的一个完美例子,它结合了一个有效和引人入胜的作品的所有必要成分:它将大量数据结合到一个页面中;它用颜色来轻松区分趋势;它可以让浏览者对数据有一个整体的了解;它通过允许用户与作品互动来吸引用户;令人惊讶的是,它简单易懂,一目了然。

2.它揭示了趋势

一年新闻是一个很好的例子,说明一个熟练执行的数据可视化可以揭示隐藏在数据山表面下的模式和趋势。通过分析 1.845 亿次 Twitter 提及,Echelon Insights 能够提供美国在 2014 年谈论什么的鸟瞰图。

3.它使用动画

皮尤研究中心创建的美国年龄金字塔是一个值得注意的例子,说明了如何通过使用执行良好的动画来有效地传达随着时间的推移而发生的变化和趋势。这种类型的数据可视化不仅将大量信息打包到一个单一的视觉效果中——23 个条形图被合并到一个单一的 GIF 合成中——它还可以在社交媒体上轻松共享并嵌入到任何地方。

4.它使用真实的图像

如今有如此多的数据可视化,很难找到一个尚未被探索的独特角度。然而,设计师 Marion Luttenberger 创作的这组极富想象力的信息图却并非如此。

Luttenberger 使用现实生活中的图像作为他的信息图表的基础,能够为一个向奥地利吸毒者提供援助的组织起草一份完整的年度报告,并且仍然清晰有效地传达该组织的使命。

5.它使用隐喻

交流复杂思想的有效方法是使用符号和隐喻。举个例子,这个雄心勃勃的互联网数据可视化是由 Ruslan Enikeev 创建的。通过使用太阳系中行星的比喻,Enikeev 能够创建一个“互联网地图”,帮助用户可视化每个网站的相对范围和影响力。例如,网站流量由地图上圆圈的大小来表示。

6.它将数据放入上下文中

数据可视化的最大优势之一是,它们能够将孤立的信息片段放到更大的环境中,这是无与伦比的。尼康的这个富有洞察力的互动作品的目标是通过使用比较,给用户一种物体大小的感觉,无论是大的还是小的。例如,在银河系旁边,一个普通的物体,比如一个球或一辆车,似乎比我们想象的要小。

7.它节省你的时间

有效数据可视化的另一个标志是它能够总结大量信息,并在这个过程中节省您的时间和精力。举例来说,这种数据可视化在一页上代表了 100 年来岩石的演变。它不仅为您简化了信息——将一个世纪的信息浓缩到一段不到一分钟就可以观看的内容中——它还提供了从电子蓝调到黑暗金属等各种流派的实际音频样本。

8.它给你视角

作为人类,我们不能不从自己的自我中心和完全独特的角度来看待宇宙和生命。然而,这种数据可视化通过将我们自己的生活——以及当天的事件——置于更大的时间背景中,从当年到当前的千年,为我们提供了一些视角。

9.它解释了一个过程

本着使复杂的事物易于理解的目标,这张信息图提供了一个咖啡豆从咖啡豆到杯子的旅程的视觉呈现。通过将这个过程分解成几个部分,这种数据可视化为读者提供了一点点易于消化的信息。

10.它激发了用户的想象力

一个好的信息图不仅能消化复杂的数据,还能激发读者的想象力,让他们想象出不同的假设情况和可能性,就像这个例子一样。通过呈现一种互动的、类似游戏的体验,这张信息图迅速吸引了用户,让他们从头到尾都保持兴趣。

11.它漂亮地展示了数据

这张信息图采用密集的材料,如指标和数字,并以一种美丽、干净和吸引人的格式呈现出来。这种设计不仅看似简单实用,还为用户提供了许多与图形交互的选项,例如添加国家、指标和关系类型。

12.它讲述了一个故事

有效的数据可视化不仅能以令人信服的方式传达信息,还能讲述一个值得讲述的故事。例如,这篇文章讲述了巴基斯坦每一次已知的无人机袭击和受害者的故事。通过将信息提炼为易于理解的视觉格式,这张信息图戏剧性地揭示了不应被忽视的令人不安的事实。

13.它提供对原始数据的访问

这种数据可视化不仅具有前面提到的所有特性,还允许用户直接访问所有原始数据(右下角的查看链接)。此外,通过使用根据数据泄露的大小而形成的气泡,查看者可以获得数据泄露“情况”的真实概览如果观众想深入了解信息的细节,他们也可以通过浏览不同的过滤器和原始数据来深入或浅显地了解信息。

14.它赋予用户权力

与信息访问民主化和赋予用户权力的全球趋势相一致,这种数据可视化出色地揭示了平衡国家预算的过程。通过将预算平衡交给日常用户,该项目利用集体思维的力量来解决大问题。

15.它是有教育意义的

这一块超越了一个普通的数据可视化,成为一个教育和互动的微型网站。通过将足够的数据和信息组合到一个交互式应用程序中,这种数据可视化成为学生学习风、海洋和天气情况的有用课堂工具。

轮到你了

交互式数据可视化是独一无二的,因为它们吸引了五种感官中的几种:通过音频吸引了听觉,通过惊人的视觉吸引了视觉,通过点击、悬停和滚动内容的交互式体验吸引了触觉

虽然您可能认为自己制作数据可视化过于昂贵和耗时,但是您可以探索一些免费的工具,这些工具允许非设计人员和非程序员创建他们自己的交互式内容。

例如,Visme 是一个在线工具,允许你创建交互式图表、图形和地图。这里可以免费试用

如果你想获得更多成为更好的视觉传达者的提示和指导,别忘了订阅我们下面的每周时事通讯。

本帖 原版 最早出现在 Visme 的视觉学习中心

给有抱负的数据科学家的 16 条有用建议

原文:https://towardsdatascience.com/16-useful-advices-for-aspiring-data-scientists-6da9afa8c72c?source=collection_archive---------3-----------------------

数据科学为什么性感?它与如此多的新应用有关,大量数据的明智使用催生了全新的行业。例子包括语音识别、计算机视觉中的物体识别、机器人和自动驾驶汽车、生物信息学、神经科学、系外行星的发现和对宇宙起源的理解,以及组建廉价但获胜的棒球队。在每一种情况下,数据科学家都是整个企业的核心。他/她必须将应用领域的知识与统计专业知识相结合,并使用最新的计算机科学思想来实施。

最后,性感归结为有效。我最近读了 塞巴斯蒂安·古提耶雷兹的《工作中的数据科学家》 ,其中他采访了 16 位来自 16 个不同行业的数据科学家,以了解他们如何从理论上思考 it,也非常实际地了解他们正在解决什么问题,数据如何提供帮助,以及如何取得成功。所有 16 名受访者都站在理解和提取各种公共和私人组织类型的数据价值的前沿,从初创公司和成熟公司到主要研究团体和人道主义非营利组织,以及各种行业,如广告、电子商务、电子邮件营销、企业云计算、时尚、工业互联网、互联网电视和娱乐、音乐、非营利组织、神经生物学、报纸和媒体、专业和社交网络、零售、销售智能和风险投资。

特别是,Sebastian 提出了开放式的问题,以便每个受访者的个性和自发的思维过程能够清晰准确地展现出来。本书中的从业者分享了他们关于数据科学对他们意味着什么以及他们如何看待它的想法,他们关于如何加入该领域的建议,以及他们通过经验获得的关于数据科学家必须深刻理解才能在该领域取得成功的智慧。

在这篇文章中,我想分享这些数据科学家对这个问题给出的最佳答案:

“你会给刚开始从事数据科学的人什么建议?”

1克里斯·维金斯 纽约时报首席数据科学家 哥伦比亚大学应用数学副教授

“创造力和爱心。你必须真正喜欢某样东西,才会愿意花很长时间去认真思考它。此外,某种程度的怀疑。所以这是我喜欢博士生的一点——五年的时间足够让你有所发现,然后让你意识到你一路上做错的所有事情。从思考“冷聚变”到意识到“哦,我实际上完全搞砸了”,并因此犯下一系列错误并修复它们,这对你的智力来说是很棒的。我确实认为读博士的过程有助于让你对看似确定的事情持怀疑态度,尤其是在研究领域。我认为这是有用的,因为,否则,你很容易太快地走上一条错误的道路——仅仅因为你第一次遇到这条道路看起来很有希望。

虽然这是一个无聊的答案,但事实是你实际上需要有技术深度。数据科学还不是一个领域,所以还没有证书。比如说,机器学习很容易获得维基百科级别的理解。但是,对于实际操作来说,您真的需要知道对于正确的工作什么是正确的工具,并且您需要很好地理解每个工具的所有限制。这种经历没有捷径可走。你必须犯很多错误。你必须发现自己把一个分类问题硬塞给一个聚类问题,或者把一个聚类问题硬塞给一个假设检验问题。

一旦你发现自己在尝试某件事,确信这是正确的,然后最终意识到你完全错了,并经历了很多次——这种经历真的没有捷径可走。你只需要去做,然后不断犯错,这是我喜欢在这个领域工作了几年的人的另一点。成为某方面的专家需要很长时间。它需要多年的错误。几个世纪以来都是如此。著名物理学家尼尔斯·玻尔曾说过一句话,他认为成为某个领域的专家的方法就是在该领域犯下所有可能的错误。"

2——T3【凯特琳】斯莫尔伍德 T5科学与算法副总裁 网飞

“我想说的是,在你做任何事情之前,要始终咬紧牙关,首先理解数据的基础,即使这并不性感,也不有趣。换句话说,努力理解数据是如何捕获的,准确理解每个数据字段是如何定义的,并理解数据何时丢失。如果数据丢失,这本身是否意味着什么?是不是只有在特定的情况下才会缺失?这些微小的细微差别的数据将真正得到你。他们真的会。

你可以使用世界上最复杂的算法,但还是老一套的垃圾进垃圾出。你不能对原始数据视而不见,不管你对建模的有趣部分有多兴奋。在开始开发模型之前,做好准备,尽可能地检查底层数据。

随着时间的推移,我学到的另一件事是,在系统环境中,混合算法几乎总是比单一算法更好,因为不同的技术利用数据中模式的不同方面,特别是在复杂的大型数据集中。因此,虽然你可以选择一个特定的算法,并不断迭代使它变得更好,但我几乎总是看到算法的组合往往比一个算法做得更好。"

3——T3【Yann le Cun 脸书人工智能研究主任兼 NYU 数据科学/计算机科学/神经科学教授

“我总是给出同样的建议,因为我经常被问到这个问题。我的看法是,如果你是本科生,学习一个专业,在那里你可以尽可能多地学习数学和物理课程。不幸的是,它必须是正确的课程。我要说的听起来很矛盾,但工程或物理专业可能比数学、计算机科学或经济学更合适。当然,你需要学习编程,所以你需要上大量的计算机科学课,学习如何编程的机制。然后,再后来,做数据科学的研究生。参加本科机器学习、人工智能或计算机视觉课程,因为你需要接触这些技术。然后,在那之后,上所有你能上的数学和物理课。尤其是像最优化这样的连续应用数学课程,因为它们让你为真正的挑战做好准备。

这取决于你想去哪里,因为在数据科学或人工智能的背景下有很多不同的工作。人们应该真正思考他们想做什么,然后学习这些科目。现在的热门话题是深度学习,这意味着学习和理解神经网络的经典工作,学习最优化,学习线性代数,以及类似的主题。这有助于你学习我们每天面对的基本数学技巧和一般概念。"

4艾琳·谢尔曼 Zymergen 的数据科学经理,诺德斯特龙数据实验室和 AWS S3 的前数据科学家

“对于仍在决定学什么的人,我想说 STEM 领域是不用动脑筋的,尤其是 TEM 领域。学习 STEM 课程会给你测试和理解世界的工具。这就是我对数学、统计学和机器学习的看法。我对数学本身并不感兴趣,我感兴趣的是用数学来描述事物。这些毕竟是工具集,所以即使你对数学或统计学不感兴趣,投资它们并考虑如何将它们应用到你真正感兴趣的事情上仍然是非常值得的。

对于像我一样试图转型的人,我会说,首先,这很难。要知道改变行业是很难的,你必须为此努力。这不是数据科学独有的,这就是生活。在这个领域没有任何关系是困难的,但你可以通过与慷慨的人会面和咖啡约会来解决这个问题。我生活中的首要原则是“跟进”如果你和某个有你想要的东西的人交谈,继续跟进。

数据科学家的帖子可能相当吓人,因为大多数帖子读起来像数据科学术语表。事实是,技术变化如此之快,以至于没有人拥有可以写在帖子上的所有内容的经验。当你看到这个的时候,它可能会让人不知所措,你可能会觉得,“这不适合我。这些技能我都没有,也没什么可贡献的。”我会鼓励反对这种心态,只要你能接受改变,并一直学习新事物。

最终,公司想要的是一个能够严格定义问题并设计解决方案的人。他们也想要善于学习的人。我认为这些是核心技能。"

5丹尼尔·唐克朗 Twiggle 首席搜索传道者,LinkedIn

“对于来自数学或物理科学的人,我建议投资学习软件技能——特别是 Hadoop 和 R,这是最广泛使用的工具。来自软件工程的人应该参加机器学习的课程,用真实的数据做一个项目,其中很多数据是免费的。正如很多人所说,成为数据科学家最好的方法就是做数据科学。数据就在那里,科学并不那么难学,尤其是对那些受过数学、科学或工程训练的人来说。

阅读“数据的不合理有效性”——谷歌研究人员阿龙·哈勒维、彼得·诺维格和费尔南多·佩雷拉的经典文章。这篇文章通常被总结为“更多的数据胜过更好的算法。”整篇文章值得一读,因为它概述了最近在使用网络规模的数据来提高语音识别和机器翻译方面的成功。然后,为了更好地衡量,听听 Monica Rogati 对更好的数据如何击败更多的数据有什么看法。理解并内化这两种见解,你就能顺利地成为一名数据科学家。"

6约翰·福尔曼 产品管理副总裁、前 MailChimp 首席数据科学家

“我发现很难找到并雇佣合适的人。这实际上是一件很难做到的事情,因为当我们想到大学系统时,无论是本科生还是研究生,你只关注一件事。你专攻。但数据科学家有点像新文艺复兴时期的人,因为数据科学本质上是多学科的。

这就引出了一个大笑话:数据科学家比计算机程序员知道更多的统计数据,比统计学家更会编程。这个笑话在说什么?据说数据科学家是对两件事略知一二的人。但是我想说他们知道的不仅仅是两件事。他们也必须知道如何交流。他们还需要知道不仅仅是基本的统计数据;他们必须知道概率、组合学、微积分等。一些可视化印章不会伤害。他们还需要知道如何处理数据,如何使用数据库,甚至可能会一点点。有很多事情他们需要知道。所以找到这些人真的很难,因为他们必须接触过很多学科,他们必须能够聪明地讲述他们的经历。这对任何申请人来说都是一项艰巨的任务。

雇佣一个人需要很长时间,这就是为什么我认为人们一直在谈论现在没有足够的数据科学人才。我认为那在某种程度上是真实的。我认为一些正在启动的学位项目会有所帮助。但即使如此,对于 MailChimp 来说,从这些学位课程中,我们会看你如何向我们表达和交流你如何使用这个特定课程教给你的跨许多学科的数据科学知识。这将会淘汰很多人。我希望有更多的项目关注在工作场所成为数据科学家的沟通和协作方面。"

7罗杰·埃伦贝尔 IA Ventures 管理合伙人**

我认为机遇最大的领域也是挑战最多的领域。医疗保健数据显然有一些最大的 PII 和隐私问题。除此之外,您还会遇到僵化的官僚机构、僵化的基础架构和数据孤岛,这使得解决需要跨多个数据集集成的难题变得非常困难。这将会发生,我认为我们在这里谈论的许多技术都与使医疗保健更好、更便宜、更分散直接相关。我认为这代表了一代人的机会。

另一个早期的巨大领域是风险管理——无论是在金融、贸易还是保险领域。当你谈论将新数据集纳入风险评估时,这是一个非常困难的问题,特别是当将这些技术应用于保险等行业时,保险和医疗保健一样,有许多隐私问题和数据被困在大型官僚机构中。与此同时,这些陈旧僵化的公司现在刚刚开始开放,并找出如何最好地与创业社区互动,以利用新技术。这是另一个让我感到无比兴奋的领域。

我热衷的第三个领域是重塑制造业,让它更有效率。制造业有迁回国内的趋势。一个更强大的制造业可能是重建美国充满活力的中产阶级的桥梁。我认为技术可以帮助加速这种有益的趋势。

8克劳迪娅·珀里奇 d stilley 首席科学家**

“我认为,最终,学习如何做数据科学就像学习滑雪一样。你必须这么做。只能听这么多视频,看着它发生。在一天结束的时候,你必须穿上你那该死的滑雪板下山。你会在路上撞车几次,这没关系。那才是你需要的学习体验。事实上,我更喜欢问受访者那些不顺利的事情,而不是那些成功的事情,因为这能告诉我他们在这个过程中学到了什么。

每当有人来问我:“我该怎么办?”我说,“是的,当然,参加机器学习技术的在线课程。毫无疑问,这是有用的。很明显,你必须会编程,至少在某种程度上。你不必成为一名 Java 程序员,但是你必须以某种方式完成一些事情。我不在乎如何。”

最终,无论是在 DataKind 做志愿者,花时间在非政府组织帮助他们,还是去 Kaggle 网站并参加他们的一些数据挖掘比赛——只要做好准备就行了。特别是在 Kaggle 上,阅读其他人告诉你的关于这个问题的讨论论坛,因为在那里你可以了解人们做了什么,什么对他们有效,什么对他们无效。所以,任何能让你真正参与到用数据做事情的事情,即使你并没有因此而获得报酬,都是一件很棒的事情。

记住,你必须从山上滑下来。这是没有办法的。你不能学习任何其他方式。所以,自愿贡献你的时间,用你能想到的任何方式来弄脏你的手,如果你有机会做实习——完美。不然有很多机会你可以刚入门。所以就去做吧。"

9乔纳森·莱纳汉 place IQ 首席科学家兼产品开发高级副总裁**

“首先,自我批评非常重要:总是质疑自己的假设,对自己的产出保持偏执。这是容易的部分。就人们如果真的想在数据科学领域取得成功应该具备的技能而言,拥有良好的软件工程技能是必不可少的。因此,即使我们可能会雇佣那些几乎没有编程经验的人,我们也会非常努力地向他们灌输工程、工程实践和许多优秀的敏捷编程实践的重要性。这对他们和我们都有帮助,因为现在这些几乎都可以一对一地应用于数据科学。

如果你现在看一下开发运营,他们有诸如持续集成、持续构建、自动化测试和测试工具之类的东西,所有这些都非常容易地从开发运营世界映射到数据运营(我从 Red Monk 那里偷来的一个短语)世界。我认为这是一个非常强大的概念。为你的所有数据建立测试框架是很重要的,这样如果你修改了代码,你就可以回过头来测试你的所有数据。拥有工程思维对于在数据科学世界中高速前进至关重要。阅读 代码完成务实的程序员 会比阅读机器学习书籍让你走得更远——尽管你当然也必须阅读机器学习书籍。"

10安娜·史密斯 Spotify 高级数据工程师,《出租跑道》前分析工程师**

“如果有人刚刚开始从事数据科学,最重要的是要明白,可以向人们提问。我也觉得谦虚很重要。你必须确保你不会被你正在做的事情束缚住。你可以随时做出改变,重新开始。我认为,当你刚开始的时候,能够废弃代码真的很难,但最重要的是做点什么。

即使你没有数据科学方面的工作,你仍然可以在你的休息时间探索数据集,并且可以提出问题来询问数据。在我的私人时间里,我摆弄过 Reddit 数据。我问自己,“用我有的或没有的工具,我可以探索 Reddit 的哪些方面?”这很好,因为一旦你开始了,你可以看到其他人是如何处理同样的问题的。运用你的直觉,开始阅读别人的文章,然后像这样,“我可以在我的方法中使用这种技术。”慢慢开始,慢慢移动。当我开始的时候,我试着阅读了很多,但是我认为这并没有多大帮助,除非你真正地用代码和数据来理解它实际上是如何工作的,它是如何运动的。当人们把它呈现在书中时,它都是美好的。现实生活中,真的不是。

我认为尝试很多不同的事情也很重要。我想我从没想过我会在这里。我也不知道五年后我会在哪里。但也许这就是我学习的方式,通过在许多不同的学科中做一些事情,试图了解什么最适合我。"

11Andre Karpistsenkotaxi fy 数据科学负责人,PlanetOS 联合创始人兼研究负责人**

”尽管这是一个有些笼统的建议,但我认为你应该相信自己,追随自己的激情。我认为很容易被媒体上的新闻和媒体呈现的期望分散注意力,选择一个你本来不想走的方向。因此,当谈到数据科学时,你应该将其视为职业生涯的起点。拥有这样的背景对你做任何事情都有好处。拥有创建软件的能力和处理统计数据的能力将使你在你选择的任何领域做出更明智的决定。例如,我们可以通过数据了解运动员的成绩是如何提高的,就像有人成为跳远金牌得主,因为他们优化并练习了他们应该跳跃的角度。这一切都是由数据驱动的体育方法引领的。

如果我要进入更具体的技术建议,那么它取决于接受建议的人的雄心。如果这个人想创造新的方法和工具,那么这个建议会非常不同。你需要坚持,沿着你的方向一直走下去,你会成功的。但是如果你的目的是在许多情况下变得多样化和灵活,那么你需要一个不同方法的大工具箱。

我认为给我的最好的建议来自斯坦福大学的一位教授,我前阵子听过他的课。他建议有一个 T 形的能力轮廓,但在核心能力旁边有一个小的第二能力,这样如果你需要它或想要它,你在生活中就有了一条替代路线。除了单一领域专业知识的垂直主干,他还建议你有足够宽的背景水平,这样你就可以在许多不同的情况下与许多不同的人共事。因此,当你在大学的时候,建立一个 T 型,并在其中加入一些小的能力,可能是最好的选择。

也许最重要的是让你周围的人都比你强大,并向他们学习。这是最好的建议。如果你在大学里,那是观察人们能力差异的最佳环境。如果你能和最优秀的人一起工作,那么你会在任何事情上取得成功。"

12Amy HeineikePrimerAI 技术副总裁,Quid 前数学总监**

“我认为,或许他们需要从审视自己开始,弄清楚自己真正关心的是什么。他们想做什么?现在,数据科学是一个有点热门的话题,所以我认为有很多人认为,如果他们能够拥有“数据科学”的标签,那么魔法,幸福和金钱就会降临到他们身上。所以我真的建议弄清楚你真正关心的是数据科学的哪些方面。这是你应该问自己的第一个问题。然后你想知道如何做得更好。你也要开始思考什么样的工作是你真正感兴趣的。

一个策略是深入你需要知道的一部分。我们的团队中有人是自然语言处理方面的博士,或者是物理学方面的博士,他们使用了很多不同的分析方法。所以你可以深入到一个领域,然后找到那些认为这种问题很重要的人,或者你可以用同样的思维来解决的类似问题。这是一种方法。

另一种方法是尝试新事物。那里有很多数据集。如果你在做一份工作,并试图换一份工作,试着想一想,在你目前的工作中,是否有你可以用得上的数据,你可以去获取这些数据,并以有趣的方式处理它们。找个借口去尝试一些事情,看看这是不是你真正想做的。或者只是在家里,你可以找到公开的数据。只是四处看看你能找到什么,然后开始玩那个。我认为这是一个很好的开始。现在有许多不同的角色被冠以“数据科学”的名称,也有许多角色可能是你认为的数据科学,但还没有标签,因为人们不一定会使用它。想想你真正想要的是什么。"

13Victor HuQBE 保险数据科学主管,Next Big Sound 前首席数据科学家**

“首先,你必须讲一个故事。在一天结束时,你所做的是真正挖掘一个系统、一个组织或一个行业如何运作的基础。但是为了让它对人们有用并且可以理解,你必须讲一个故事。

能够写下你所做的事情,能够谈论你的工作是非常重要的。同样值得理解的是,你也许应该少担心你所使用的算法。更多的数据或更好的数据胜过更好的算法,所以如果你能建立一种方法让你分析并获得大量好的、干净的、有用的数据——太好了!"

14基拉·雷丁斯基 易贝首席科学家兼数据科学总监,SalesPredict 前首席技术官兼联合创始人

“找到一个让你兴奋的问题。对我来说,每次我开始新的东西,只是学习而没有一个我试图解决的问题真的很无聊。开始阅读材料,尽可能快地开始处理它和你的问题。随着你的发展,你会开始发现问题。这会引导你找到其他的学习资源,无论是书籍、论文还是人。所以花时间和问题和人在一起,你就没事了。

深刻理解基础知识。了解一些基本的数据结构和计算机科学。理解你使用的工具的基础,理解它们背后的数学原理,而不仅仅是如何使用它们。理解输入和输出,以及内部实际发生了什么,因为否则你不知道什么时候应用它。此外,这取决于你正在解决的问题。有许多不同的工具可以解决许多不同的问题。你必须知道每种工具能做什么,你必须知道你做得很好的问题,知道应用哪种工具和技术。"

15Eric Jonas 加州大学伯克利分校 EECS 分校博士后,Salesforce 前首席预测科学家

“他们应该彻底理解概率论。我现在在这一点上,我学到的其他一切,然后映射回概率论。它很棒,因为它提供了这个惊人的、深刻的、丰富的基础集,我可以沿着这个基础集投射其他的一切。E. T. Jaynes 写了一本书叫做概率论:科学的逻辑,这是我们的圣经。某种意义上我们真的买了。我喜欢概率生成方法的原因是你有这两个正交轴——建模轴和推理轴。这基本上就是我如何表达我的问题,以及如何计算给定数据下我的假设的概率?从贝叶斯的角度来看,我喜欢的一点是,你可以沿着这些轴中的每一个独立地进行设计。当然,他们不是完全独立的,但是他们足够接近独立,你可以这样对待他们。

当我看到像深度学习或任何一种基于套索的线性回归系统这样的东西时,这些东西在很大程度上可以算作机器学习,它们沿着一个轴或另一个轴进行工程设计。他们已经把它推倒了。作为一名工程师,使用这些基于套索的技术,我很难思考:“如果我稍微改变这个参数,那到底意味着什么?”线性回归作为一个模型,有一个非常明确的线性加性高斯模型。如果我想让事情看起来不一样呢?突然间,所有这些正则化的最小二乘法都土崩瓦解了。推理技术甚至不接受这是你想要做的事情。"

16杰克·波瓦尔 data kind 创始人兼执行董事**

“我认为强大的统计背景是一个先决条件,因为你需要知道你在做什么,并了解你建立的模型的内容。此外,我的统计项目也教授了很多关于伦理的知识,这是我们 DataKind 经常思考的问题。你总是要考虑你的工作将如何被应用。你可以给任何人一个算法。你可以给某人一个使用拦截搜身数据的模型,警察会在哪里进行逮捕,但是为什么和为了什么?这真的就像建立任何新技术一样。你必须考虑风险和收益,并真正权衡利弊,因为你要为自己创造的东西负责。

不管你来自哪里,只要你理解你用来得出结论的工具,那就是你能做的最好的事情。我们现在都是科学家,我说的不仅仅是设计产品。我们都在对我们生活的世界下结论。这就是统计学——收集数据来证明一个假设或创建一个世界运行方式的模型。如果你只是盲目地相信那个模型的结果,那是危险的,因为那是你对世界的解释,尽管它有缺陷,但你的理解是结果会有多缺陷。

总之,学统计学,要有思想。"

我强烈推荐你阅读 工作中的数据科学家 。这本书展示了一些世界顶级数据科学家如何在令人眼花缭乱的各种行业和应用中工作——每个人都利用自己的领域专业知识、统计学和计算机科学的混合来创造巨大的价值和影响。

数据呈指数级增长,现在比以往任何时候都更需要那些能够理解这些数据并从中提取价值的人。如果你渴望加入下一代数据科学家,来自这些有思想的从业者的关于数据和模型的来之不易的教训和快乐将是非常有用的。

— —

如果你喜欢这首曲子,我希望你能按下鼓掌按钮👏这样别人可能会偶然发现它。你可以在 GitHub 上找到我自己的代码,在【https://jameskle.com/】上找到更多我的写作和项目。也可以在 推特 上关注我直接发邮件给我 或者 在 LinkedIn 上找我。 注册我的简讯 就在你的收件箱里接收我关于数据科学、机器学习和人工智能的最新想法吧!**

17 个完全免费的维恩图模板

原文:https://towardsdatascience.com/17-totally-free-venn-diagram-templates-bc384bdae8a4?source=collection_archive---------5-----------------------

在你的演讲中加入数据是支持你观点的好方法。显示数据可以进一步增强你的文字,但有时普通的图表并不是可视化概念之间关系的最佳选择。如果是这样,也许尝试一个文氏图是正确的方法。

什么是维恩图?

维恩图可用于任何研究领域,直观地表示概念之间的关系。每组元素表示为圆形或其他形状,重叠区域用于描述两个或多个概念的共同点。根据需要,它们可以非常复杂,也可以非常简单。

我们在这里收集了 17 个有用的维恩图模板来帮助你开始。

找到正确的维恩图模板

1.双圆文氏图

用您自己的信息自定义此模板。免费下载

可能是最常见的维恩图,也是最简单的,这个模板最适合用来比较两个对象。你可能在无数的演讲和课堂上见过它。然而,如果使用得当,这是一个有效的工具。

这个文氏图相对来说比较容易使用——选择你的两个焦点,把它们放在两边各自的圆圈里,列出它们的特质,然后把它们的共同特质放在中间。

为了让你的视觉不感到懒惰,确保你考虑了排版,以及什么能最好地支持你的文字。尝试添加背景或尝试不同的视觉风格。

一个很好的例子是本页顶部的文氏图。很简单,但是看起来很专业。颜色和文字配合得很好,白线有助于定义中间部分。有时候,简单更好。

2.雨滴模板

如果想要一个更有创意、更环保的两圈维恩图,可以尝试使用“雨滴”模板。本质上,你不用两个圆,而是用两个雨滴状的形状在它们较大的一端连接起来。

因为这在很大程度上是一种风格上的改变,所以您可以使用您也用于双圆图的任何信息。然而,由于环境主题,这种类型可能更好地用于表示可持续性和能源消耗之间的关系,或其他类似的主题。尝试与你的主题相关的不同形状,看看哪种效果最好。

3.三圈文氏图

比两个圆稍微高级一点,但同样普通,这个文氏图可以让你想象三个对象之间的关系,而不是两个。

这个文氏图是一个比较好的例子。它用重叠的圆圈提醒读者,有意义的工作不仅报酬丰厚,而且让你充满激情,自然而然地来到你身边。

在编辑这个模板时,一定要记住不仅要想象三个不同的主题是如何分别与它们的对应主题进行交互的,还要想象它们是如何组合在一起的——这是所有更高级的模板都要记住的。

4.三角形文氏图

如果你想要一个有趣的三主题维恩图,那么三角形模板提供了一个很好的例子。就像三个圆一样,这个模板包括三个互锁的形状——只是这一次,它们创建了一个三角形,而不是一个无定形的形状。

三角形的三个“边”包含各个主题,每个角代表这些主题如何交互。三角形的中心可以显示它们是如何相互作用的,也可以是空的。侧面可以是椭圆形、矩形或任何你喜欢的形状。

5.三集维恩图

用您自己的信息自定义此模板。免费下载

这张政党流程图是三集维恩图的一个很好的例子,圆圈内的文字有助于进一步解释每个主题,中心是一切交汇的“甜蜜点”。透明的三个圆圈强调了每个主题之间的联系,并有助于使圆圈重叠的区域更加清晰。

6.四圆文氏图

稍微复杂一点,这个例子可以使用四个圆或椭圆来比较它的四个不同部分。

以营销领域为例。每个圆圈代表营销的一个不同方面,相互连接的部分代表每个方面使用的格式。

7.菱形/矩形模板

四主题模板的一个变体,这个特殊的例子可以用来给你的视觉效果增加一些亮点。

菱形/矩形模板包括重叠(你猜对了)菱形或矩形,而不是圆形,允许不同的外观和眼睛容易跟随的轨迹。

这些模板也可能相对复杂。举个例子,这张关于狗品种的钻石文氏图。图表为每个矩形列出了不同的特征,然后在里面列出了具有这些特征的犬种,或者它们的组合。通过这些钻石的多重连接,可以展示各种不同的例子,混合的颜色和直线有助于移动眼睛。

8.星形维恩图模板

想要一些真正复杂但又有趣的东西吗?试着创造一个明星。

这个“星星”是由五个不同的椭圆组成的,所有的椭圆都以不同的方式重叠在一起。这可以让你看到五个主题如何相互作用,创造出各种独特的选择。

因为这个模板相当复杂,所以尽量让它简单易懂。例如,对每个椭圆进行颜色编码,用混合的颜色代表两个独立对象之间的公共区域,或者创建一个标签系统,使交互更容易跟踪。

9.奥林匹克模板

这个五个主题的文氏图对任何体育迷来说都是很棒的,它用圆环创造了一个像奥运会标志一样的图像。

当然,每个环代表一个不同的主题,它们相互交叉的地方显示了主题是如何互动的。虽然比“明星”的例子更容易理解,但它也允许更少的互动,所以确保每个主题都是最有效的。

这可以很好地用来展示某些概念如何与其他概念相互作用。例如,您可以显示故事情节中的两个元素如何相互关联,以及另一个单独的元素如何仅与一个元素相关,等等。

10.多层文氏图

用您自己的信息自定义此模板。免费下载

如果你想对维恩图有一点不同的方法,多层模板可能是正确的选择。在这个模板中,您从一个大的外部圆开始,然后在内部嵌套较小的圆。外面的圆圈通常包含一个主题,嵌套的圆圈,而不是包含主题本身,显示每个新添加的内容如何改变原来的内容。

看看这个圆筒文氏图。它着眼于英国各岛屿之间的关系。每个圆圈代表一个不同的区域;一些包含在另一些中,而另一些作为单独的实体出现。

11.3D/嵌套模板

如果你想要一些突出的东西,这种类型的文氏图可以很好地工作。它在执行中使用了类似于多层模板的方法,只是它采用了 3D 嵌套图像的形式。

这个模板让你变得更有创造力。例如,您可以使用实际的嵌套玩偶来玩“主题中的主题”方面,或者使用地球各层的图表来显示每个层如何相互作用。

12.电弧维恩图模板

这个模板的主要兴趣在于各种主题如何与单个主题互动,但它以一种非常有趣的方式进行互动:与主题相关的圆圈沿着最大的圆圈的边缘上升,随着它们的上升而变大。

这是一个很好的方式来展示每个主题与主要主题的交互的重要性,最小的主题最不重要,最大的主题最重要。它还可以用来显示与焦点交互的不同主题的复杂性或数量。

13.备选尺寸图

类似于“弧形”模板,这个模板使用不同大小的圆来获得一个点;与前者不同,这个模板展示了它们是如何互动的。

很像弧形文氏图,这可以显示不同主题的重要性或相对大小。

这是一个特别好的例子,集中在社交媒体平台。中心圈(社交品牌)与它之外的其他几个互动,所有这些都列出了最适合给定组合的社交媒体网站。

14.基于图片的维恩图

一张图片可以表达千言万语,那么还有什么比使用图片更好的方式来展示主题之间的互动呢?

这个模板通常使用很少的文字,而是让图像来说话。例如,这幅画幽默地展示了河马和板条箱的组合。

你可以用其他有创意的例子来解释主题,比如把两个不同主题的图片放在外面的圆圈里,然后让连接点成为一个完全不同的图片,代表两者结合后产生的东西。

15.混合文氏图

用您自己的信息自定义此模板。免费下载

只有一种风格不适合你?尝试混合几种不同的风格,以获得您想要的效果。例如,你可以将两个圆形和一个多层组合起来,展示一个组合的多重效果如何渗透到另一个主题中。

一个很好的例子是由伊丽莎白托比创作的,她将嵌套和交替的尺寸结合成一个复杂的、多面的视觉效果。

这些往往非常复杂,所以要确保你的观众能跟上信息的呈现。

16.三组欧拉图

欧拉图类似于维恩图,因为它们说明了两个或多个主题,但在一个关键特征上有所不同:至少有一个主题与另一个主题不重叠。这些对于展示两个主题的不同非常有用。

17.两组欧拉图

用您自己的信息自定义此模板。免费下载

欧拉图可以单独使用(例如让两个圆靠在一起,但不重叠),也可以与维恩图结合使用(例如让两个圆重叠,一个圆放在更远的地方,如前面的例子所示)。对它们进行测试,看看使用这样的图表是否适合您的项目。

轮到你了

这些只是你可以修改维恩图模板来显示概念之间关系的几种方法。有哪些你喜欢的模板,或者在上面你有什么变化?在下面的评论区和我们分享吧!

本帖 原版 最早出现在 Visme 的 视觉学习中心

你需要知道的 18 种大数据工具

原文:https://towardsdatascience.com/18-big-data-tools-you-need-to-know-ebdb82f2c608?source=collection_archive---------5-----------------------

在当今的数字化转型中,大数据为组织提供了分析客户行为的优势&高度个性化每一次互动,从而带来交叉销售、改善的客户体验和明显更多的收入。随着越来越多的企业实施数据驱动战略,大数据市场稳步增长。虽然 Apache Hadoop 是最成熟的大数据分析工具,但还有成千上万种大数据工具。它们都承诺为您节省时间和金钱,并帮助您发现前所未见的商业洞察力。我挑选了一些来帮助你。
Avro:由 Doug Cutting &开发,用于对 Hadoop 文件的模式进行编码的数据序列化。

Cassandra: 是一个分布式开源数据库。旨在处理跨商用服务器的大量分布式数据,同时提供高度可用的服务。这是一个最初由脸书开发的 NoSQL 解决方案。它被许多组织使用,如网飞,思科,Twitter。

Drill: 对大规模数据集进行交互分析的开源分布式系统。它类似于 Google 的 Dremel,由 Apache 管理。

elastic search:基于 Apache Lucene 构建的开源搜索引擎。它是在 Java 上开发的,可以支持支持数据发现应用程序的极快的搜索。

Flume: 是一个用来自 web 服务器、应用服务器和移动设备的数据填充 Hadoop 的框架。它是源代码和 Hadoop 之间的管道。

HCatalog: 是 Apache Hadoop 的集中式元数据管理和共享服务。它允许 Hadoop 集群中所有数据的统一视图,并允许各种工具(包括 Pig 和 Hive)处理任何数据元素,而无需知道数据存储在集群中的物理位置。

Impala: 使用与 Apache Hive 相同的元数据、SQL 语法(Hive SQL)、ODBC 驱动程序和用户界面(Hue 蜂蜡),直接对存储在 HDFS 或 HBase 中的 Apache Hadoop 数据提供快速的交互式 SQL 查询。这为面向批处理或实时查询提供了一个熟悉而统一的平台。

JSON: 当今的许多 NoSQL 数据库都以 JSON (JavaScript Object Notation)格式存储数据,这种格式在 Web 开发人员中很流行

Kafka: 是一个分布式的发布-订阅消息传递系统,它提供了一个能够处理所有数据流活动并在消费者网站上处理这些数据的解决方案。这种类型的数据(页面浏览、搜索和其他用户行为)是当前社交网络中的一个关键要素。

MongoDB: 是一个面向文档的 NoSQL 数据库,在开源理念下开发。这带来了完全的索引支持,以及在不影响功能的情况下索引任何属性和水平伸缩的灵活性。

Neo4j: 是一个图形数据库&与关系数据库相比,性能提高了 1000 倍甚至更多。
Oozie:是一个工作流处理系统,让用户定义一系列用多种语言编写的作业——比如 Map Reduce、Pig 和 Hive。它进一步智能地将它们彼此联系起来。Oozie 允许用户指定依赖关系。

Pig: 是雅虎开发的基于 Hadoop 的语言。它相对容易学习,擅长非常深、非常长的数据管道。

暴风:是一个实时分布式计算的系统,开源且免费。Storm 可以轻松可靠地处理实时处理领域的非结构化数据流。Storm 是容错的,几乎可以与所有编程语言一起工作,尽管通常使用 Java。Storm 是阿帕奇家族的后裔,现在归 Twitter 所有。

Tableau: 是一个数据可视化工具,主要关注商业智能。你可以创建地图,条形图,散点图等,而不需要编程。他们最近发布了一个 web 连接器,允许您连接到数据库或 API,从而让您能够在可视化中获得实时数据。

ZooKeeper: 是为大型分布式系统提供集中配置和开放代码名称注册的服务。

每天都有越来越多的工具被添加到大数据技术堆栈中,应对每一种工具都极其困难。选择少数你能掌握的,继续提升你的知识。

数据科学竞赛一等奖-企鹅的随机漫步

原文:https://towardsdatascience.com/1st-prize-in-data-science-competition-random-walk-of-penguins-4e0dd0f688dc?source=collection_archive---------9-----------------------

在由 DrivenData 主办的数据科学竞赛企鹅随机漫步中荣获一等奖。在此分享制胜之道。

Penguins — Photo by Loïc Mermilliod on Unsplash

介绍

企鹅是世界上最有魅力的动物之一,已经抓住了新闻人物、科学家、电影制片人和普通大众的想象力。除了一般的内在价值,它们被认为是重要的生态系统指标。换句话说,监测这些美丽的物种可以告诉我们许多关于南极总体健康状况的信息,因为企鹅是重要的磷虾和鱼类捕食者,影响猎物数量和环境条件的变化(自然或人为)最终将通过分布或种群数量的变化来检测。

关于企鹅数量的数据是有限的,因为大多数被监测的群体都在永久性的研究站附近,而其他地点只是偶尔被调查。由于数据非常零散,时间序列相对较短,很难建立统计模型来解释过去的动态或提供可靠的未来预测。目标是创建更好的模型来估计南极难以到达的地点的数量,从而大大提高我们使用企鹅来监测南大洋健康状况的能力!

这个项目是由 Oceanites 公司、Black Bawks 数据科学有限公司和石溪大学希瑟·林奇博士的实验室合作完成的。由 NASA 慷慨提供的奖品(奖项 NNX14AC32G)

所提供数据的详细信息

从 1875 年到 2013 年在南极洲的 548 不同地点提供了三种企鹅的数据,即阿德利企鹅、帽带企鹅和巴布亚企鹅。总共有 648 种企鹅类型和地点的组合。数据中有许多缺失值。挑战在于从 2014 年到 2017 年增加企鹅数量。

模型概述

该解决方案分为两个主要部分

  • 数据的插补
  • 模型结构

数据的插补

在运行模型之前,对每个站点和企鹅类型组合进行了数据插补。插补按以下顺序进行

  • 对于 R 模型是 Stine,对于 Python 模型是 Linear
  • 最后一次观察仅在 R 车型中进行
  • 在 R 和 Python 模型的情况下,下一个观察向后进行
  • 在 R 模型和 Python 模型中替换为零

模型结构

Model Builder

为每个站点和企鹅类型组合建立 5 个模型。因此,对于站点和企鹅类型的 648 个组合中的每一个,构建了以下模型

  • Python 中的 XGBoost
  • Python 中的 RandomForest
  • R 中的 ARIMA
  • R 中的 ETS
  • 先知在 R

每 648 个组合就产生一个所有这些模型的平均值。

感谢阅读。如果你仍然喜欢它,请访问驱动数据博客中一篇有趣的博文

原载于ambarishg . github . io

2 种潜在的降维和主题建模方法

原文:https://towardsdatascience.com/2-latent-methods-for-dimension-reduction-and-topic-modeling-20ff6d7d547?source=collection_archive---------3-----------------------

Photo: https://pixabay.com/en/golden-gate-bridge-women-back-1030999/

在最先进的单词嵌入技术之前,潜在语义分析(LSA)和潜在狄利克雷分配(LDA)区域是处理自然语言处理问题的好方法。LSA 和 LDA 都有相同的输入,即矩阵格式的单词包。LSA 专注于降低矩阵维数,而 LDA 解决主题建模问题。

我将不会讨论数学细节,因为这方面有很多很好的材料。你可以参考一下。为了便于理解,我没有做停用词去除等预处理。当你使用 LSA、LSI 和 LDA 时,这是很关键的部分。看完这篇文章,你会知道:

  • 潜在语义分析(LSA)
  • 潜在狄利克雷分配
  • 拿走

潜在语义分析(LSA)

用于自然语言处理任务的 LSA 是由 Jerome Bellegarda 在 2005 年提出的。LSA 的目标是降低分类维数。这个想法是,如果单词有相似的意思,它们会出现在相似的文本中。在自然语言处理领域,我们通常使用潜在语义索引(LSI)作为替代名称。

首先,我们有 m 个文档和 n 个单词作为输入。当列和行分别是文档和单词时,可以构造 m * n 矩阵。您可以使用计数出现或 TF-IDF 分数。然而,在大多数情况下,TF-IDF 优于计数出现,因为高频率并不能说明更好的分类。

Photo: http://mropengate.blogspot.com/2016/04/tf-idf-in-r-language.html

TF-IDF 的思想是高频可能不能提供太多的信息增益。换句话说,生僻字为模型贡献了更多的权重。如果在同一文档(即培训记录)中出现的次数增加,单词的重要性将增加。另一方面,如果它出现在语料库(即其他训练记录)中,则会减少。详情你可以查看这个博客

挑战在于矩阵非常稀疏(或高维)且有噪声(或包含大量低频词)。因此采用截断奇异值分解来降低维数。

奇异值分解的思想是寻找最有价值的信息,用低维 t 来表示同一事物。

tfidf_vec = TfidfVectorizer(use_idf=True, norm='l2')
svd = TruncatedSVD(n_components=dim)transformed_x_train = tfidf_vec.fit_transform(x_train)
transformed_x_test = tfidf_vec.transform(x_test)print('TF-IDF output shape:', transformed_x_train.shape)x_train_svd = svd.fit_transform(transformed_x_train)
x_test_svd = svd.transform(transformed_x_test)print('LSA output shape:', x_train_svd.shape)explained_variance = svd.explained_variance_ratio_.sum()
print("Sum of explained variance ratio: %d%%" % (int(explained_variance * 100)))

输出

TF-IDF output shape: (11314, 130107)
LSA output shape: (11314, 50)
Sum of explained variance ratio: 8%

我们可以看到维数从 130k 减少到 50。

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score, KFoldlr_model = LogisticRegression(solver='newton-cg',n_jobs=-1)
lr_model.fit(x_train_svd, y_train)cv = KFold(n_splits=5, shuffle=True)

scores = cross_val_score(lr_model, x_test_svd, y_test, cv=cv, scoring='accuracy')
print("Accuracy: %0.4f (+/- %0.4f)" % (scores.mean(), scores.std() * 2))

输出

Accuracy: 0.6511 (+/- 0.0201)

潜在狄利克雷分配

2003 年,大卫·布莱、吴恩达和迈克尔·乔丹推出了《LDA》。它是无监督学习,主题模型是典型的例子。假设每个文档混合了各种主题,每个主题混合了各种单词。

Various words under various topics

直观地说,您可以想象我们有两层聚合。第一层是类别分布。例如,我们有财经新闻、天气新闻和政治新闻。第二层是词在类别中的分布。例如,我们可以在天气新闻中找到“晴天”和“云”,而在财经新闻中则有“钱”和“股票”。

然而,“a”、“with”和“can”对主题建模问题没有贡献。这些单词存在于文档中,并且在类别之间具有大致相同的概率。因此,停用词的去除是获得更好结果的关键步骤。

对于特定的文档 d,我们得到主题分布θ。从这个分布(θ)中,题目 t 将被选择,并从ϕ.中选择相应单词

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocationdef build_lda(x_train, num_of_topic=10):
    vec = CountVectorizer()
    transformed_x_train = vec.fit_transform(x_train)
    feature_names = vec.get_feature_names()lda = LatentDirichletAllocation(
        n_components=num_of_topic, max_iter=5, 
        learning_method='online', random_state=0)
    lda.fit(transformed_x_train)return lda, vec, feature_namesdef display_word_distribution(model, feature_names, n_word):
    for topic_idx, topic in enumerate(model.components_):
        print("Topic %d:" % (topic_idx))
        words = []
        for i in topic.argsort()[:-n_word - 1:-1]:
            words.append(feature_names[i])
        print(words)lda_model, vec, feature_names = build_lda(x_train)
display_word_distribution(
    model=lda_model, feature_names=feature_names, 
    n_word=5)

输出

Topic 0:
['the', 'for', 'and', 'to', 'edu']
Topic 1:
['c_', 'w7', 'hz', 'mv', 'ck']
Topic 2:
['space', 'nasa', 'cmu', 'science', 'edu']
Topic 3:
['the', 'to', 'of', 'for', 'and']
Topic 4:
['the', 'to', 'of', 'and', 'in']
Topic 5:
['the', 'of', 'and', 'in', 'were']
Topic 6:
['edu', 'team', 'he', 'game', '10']
Topic 7:
['ax', 'max', 'g9v', 'b8f', 'a86']
Topic 8:
['db', 'bike', 'ac', 'image', 'dod']
Topic 9:
['nec', 'mil', 'navy', 'sg', 'behanna']

拿走

要访问所有代码,你可以访问我的 github repo。

  • 两者都使用词袋作为输入矩阵
  • 奇异值分解的挑战在于我们很难确定最优维数。一般来说,低维消耗较少的资源,但我们可能无法区分相反意义的词,而高维克服它,但消耗更多的资源。

关于我

我是湾区的数据科学家。专注于数据科学和人工智能领域的最新发展,尤其是 NLP 和平台相关领域。你可以通过 MediumLinkedIn 或者 Github 联系到我。

参考

[1] SVD 教程:https://cs . fit . edu/~ dmitra/sci comp/Resources/singular-value-decomposition-fast-track-Tutorial . pdf

[2]http://www1.se.cuhk.edu.hk/~seem5680/lecture/LSI-Eg.pdf CUHK LSI 教程:

[3]斯坦福 LSI 教程:https://nlp.stanford.edu/IR-book/pdf/18lsi.pdf

[4]https://cs.stanford.edu/~ppasupat/a9online/1140.html 和 LSA 解释:

开始数据分析前要问的 20 个问题

原文:https://towardsdatascience.com/20-questions-to-ask-prior-to-starting-data-analysis-6ec11d6a504b?source=collection_archive---------8-----------------------

在开始数据分析之前,询问正确的问题和/或理解问题是至关重要的。以下是在深入分析之前你需要问的 20 个问题:

  1. 谁是将使用分析结果的受众?(董事会成员、销售人员、客户、员工等)
  2. 结果将如何使用?(做出业务决策、投资产品类别、与供应商合作、识别风险等)
  3. 观众对我们的分析会有什么疑问?(能够筛选关键细分市场、查看不同时间的数据以确定趋势、深入了解细节等)
  4. 应该如何对问题进行优先排序以获得最大价值?
  5. 确定关键利益相关者,并就感兴趣的问题征求他们的意见
  6. 谁应该能够访问这些信息?考虑保密性/安全性问题
  7. 谁将开发和维护该报告?
  8. 每份报告将包含哪些信息?
  9. 目前有哪些其他格式的报告?现有报告可能会有哪些变化?
  10. 如果有的话,需要开发哪些 ETL 或存储过程?
  11. 为满足报告要求,需要对数据库进行哪些增强?
  12. 每份报告什么时候交付?
  13. 数据需要多长时间更新一次?确保流通
  14. 可以使用哪些数据源?
  15. 我是否拥有访问分析所需数据所需的权限或凭证?
  16. 每个数据集的大小是多少,我需要从每个数据集获取多少数据?
  17. 我对每个数据库中的底层表和模式有多熟悉?我需要和其他人一起理解数据结构吗
  18. 我需要所有的数据来进行更精细的分析,还是需要一个子集来确保更快的性能?
  19. 数据会因为悬殊而需要标准化吗?
  20. 我是否需要分析来自外部来源的数据,这些数据位于我的组织数据之外?

来源:

https://www . si sense . com/blog/requirements-elicitation-enterprise-business-analytics/

http://www . Dallas isd . org/CMS/lib/tx 01001475/Centricity/domain/5173/updated % 20 files % 20 as % 20 of % 200912/Data % 20 analysis % 20 guiding % 20 questions . pdf

2018 年美国 20 所攻读数据科学硕士学位的大学(校内)

原文:https://towardsdatascience.com/20-universities-for-pursuing-master-of-science-in-data-science-on-campus-in-the-usa-2018-9970d5d25bd5?source=collection_archive---------0-----------------------

Image source: FT US Healthcare & Life Sciences Summit

在过去的一年中,我一直在研究美国提供数据科学硕士(MS)或计算机科学硕士(MS)的数据科学专业的大学。

考虑到各种因素,如提供的课程,课程的持续时间,大学的位置,进行的研究和就业前景,我想出了最好的 20 所大学,以帮助您快速选择。这篇文章最适合没有或很少研究经验的人,他们希望在完成硕士学位后从事该行业。

如果你只是在寻找大学的名字,请随意跳到最后。

: 下面提到的大学排名不分先后。

1.卡内基梅隆大学

姓名:计算数据科学硕士
课程时长 : 2 年
地点:宾夕法尼亚州匹兹堡
核心课程:机器学习、云计算、交互式数据科学、数据科学研讨会
可用课程::系统、分析学、以人为中心的数据科学
单元完成 : 144

虽然卡耐基梅隆大学的机器学习专业的 MS 很有竞争力,但是 MIIS 的项目也值得考虑。

2.斯坦福大学

姓名:统计学硕士:数据科学
课程时长 : 2 年
地点:加州斯坦福
核心课程:数值线性代数、离散数学与算法、最优化、工程中的随机方法随机算法与概率分析、统计推断导论、回归模型与方差分析或统计建模导论、现代应用统计学:学习、现代应用统计学:数据挖掘

3.佐治亚理工学院

姓名:分析学理学硕士
课程期限 : 1 年
地点:佐治亚州亚特兰大
核心课程:商业中的大数据分析,以及数据和可视化分析、
可用课程:分析工具、商业分析和计算数据分析
学分 : 36

专攻机器学习的计算机科学硕士也是最好的项目之一。

4.华盛顿大学

姓名:数据科学理学硕士
课程时长 : 2 年
地点:华盛顿州西雅图
核心课程:统计学导论&概率、信息可视化、应用统计学&实验设计、数据科学的数据管理、数据科学家的统计机器学习、数据科学的软件设计、可扩展数据系统&算法、以人为中心的数据科学。
学分 : 45

统计系提供收费的理学硕士(MS)方向“统计学——高级方法和数据分析”也很神奇,值得一看。

5.哥伦比亚大学

姓名:数据科学硕士
课程时长 : 1.5 年
地点:纽约市纽约
核心课程:概率论、数据科学算法、统计推断与建模、数据科学计算机系统、数据科学机器学习、探索性数据分析与可视化
学分 : 30

哥伦比亚大学的计算机科学 MS 与机器学习赛道对于学习和加深你对机器学习的理解也是很神奇的。

6.纽约大学

姓名:数据科学硕士
课程时长 : 2 年
地点:纽约市纽约
核心课程:数据科学导论、数据科学的概率与统计、机器学习、大数据
可用课程:数据科学、数据科学大数据、数据科学数学与数据、数据科学自然语言处理、数据科学物理、数据科学生物学 学分

7.明尼苏达大学双城分校

姓名:数据科学硕士
课程时长 : 2 年
地点:明尼苏达州明尼阿波利斯
核心课程:数据挖掘导论、数据库系统原理、应用回归分析、并行计算导论:架构、算法和编程、非线性优化导论、应用多元方法
必修课程:统计学、算法和基础设施

8.西北大学

姓名:分析学理学硕士
课程期限 : 15 个月
地点:伊利诺伊州埃文斯顿
核心课程:统计学、机器学习、优化、数据库和数据管理方面的课程构成了 MSiA 固定课程的核心。

这个项目竞争非常激烈,因为招收的学生只有大约 35 名,来自不同的背景。

9.北卡罗来纳州立大学

姓名:分析学理学硕士
课程时长 : 10 个月
地点:北卡罗来纳州罗利
课程:固定课程,重点是分析工具和技术、分析基础、分析方法和应用 I 以及分析方法和应用 II

10.康奈尔大学

姓名:应用统计学专业研究硕士(MPS)
课程时长 : 1 年
地点:纽约州伊萨卡
核心课程:带矩阵的线性模型、概率模型与推理、MPS 专业发展、应用统计学 MPS 数据分析项目
可选项:统计分析与数据科学
学分 : 30

11.德克萨斯大学奥斯汀分校

姓名:计算机科学硕士(申请方向)
课程期限 : 2 年
地点:得克萨斯州奥斯汀
核心课程:由学生选择
可提供的方向:理论、系统、申请
学分
: 30

12.马萨诸塞大学阿姆赫斯特分校

名称:计算机科学硕士(数据科学专修)
课程期限 : 2 年
地点:马萨诸塞州阿姆赫斯特
核心课程:从数据科学理论、数据系统和数据科学 AI 核心 学分 : 30

13.加州大学圣地亚哥分校

姓名:计算机科学硕士(AI 深度)
课程时长 : 2 年
地点:加州圣地亚哥
深度地区:人工智能。你可以选择像人工智能这样的课程:概率推理和学习,机器学习,神经网络,统计学习理论等等。
学分:根据硕士计划在论文和综合考试中选择而变化。

14.宾夕法尼亚大学

姓名:数据科学工程硕士
课程时长 : 1.5 年
地点:宾夕法尼亚州费城
核心课程:概率介绍&统计学、编程语言&技术、数理统计、大数据分析与机器学习
可提供的课程:论文、以数据为中心的编程、统计学-数学基础、数据收集-表示-管理-检索、数据分析-人工智能

15.南加州大学

姓名:计算机科学硕士(数据科学方向)
课程时长 : 2 年
地点:美国加州洛杉矶
核心课程:人工智能的算法分析、数据库系统与基础
可修课程:数据系统与数据分析 学分 : 32

16.芝加哥大学

姓名:分析学理学硕士
课程期限 : 1.5 年
地点:伊利诺伊州芝加哥
核心课程:统计分析、商业应用的线性和非线性模型、机器学习和预测分析、时间序列分析和预测、数据挖掘原理、大数据平台、用于分析的数据工程平台、领导技能:团队、战略和沟通 要完成的课程 : 14

17.科罗拉多大学博尔德分校

姓名:计算机科学专业理学硕士
课程时长 : 2 年
地点:科罗拉多州博尔德
课程:机器学习、神经网络与深度学习、自然语言处理、大数据、HCC 大数据计算以及更多
可用曲目:数据科学与工程 学分

18.达拉斯德克萨斯大学

姓名:计算机科学硕士(数据科学方向)
课程时长 : 2 年
地点:得克萨斯州达拉斯
课程:机器学习、计算机算法设计与分析、大数据管理与分析、数据科学统计方法 学分 : 27

19.罗格斯大学

姓名:数据科学硕士
课程时长 : 2 年
地点:新泽西州新不伦瑞克
核心课程:概率统计、数据结构与算法、海量数据存储与检索工具、海量数据挖掘、数据交互与可视化分析 学分 : 36

这是一个新项目,还没有毕业生。

20.马里兰大学,学院公园

姓名:计算机科学理学硕士
课程时长 :
地点:马里兰州大学城
数据科学选修课程:计算机算法设计与分析 学分 : 30

数据科学研究生证书如果你负担不起整整两年的硕士学习,也可以考虑。

总结一下,我把大学的名字列在下面-

  1. MCDS 卡耐基梅隆大学
  2. 斯坦福大学—统计学(数据科学)硕士
  3. 佐治亚理工学院-分析学硕士
  4. 华盛顿大学—数据科学硕士
  5. 哥伦比亚大学—数据科学硕士
  6. 纽约大学—数据科学硕士
  7. 明尼苏达大学双城分校——数据科学硕士
  8. 西北大学-分析学硕士
  9. 北卡罗来纳州立大学-分析学硕士
  10. 康奈尔大学-应用统计学硕士
  11. 德克萨斯大学奥斯汀分校—计算机科学硕士(应用方向)
  12. 马萨诸塞大学阿姆赫斯特分校—计算机科学硕士(数据科学专业)
  13. 加州大学圣地亚哥分校—计算机科学硕士(人工智能深度)
  14. 宾夕法尼亚大学-数据科学硕士
  15. 南加州大学—计算机科学硕士(数据科学方向)
  16. 芝加哥大学-分析学硕士
  17. 科罗拉多大学博尔德分校——计算机科学专业硕士
  18. 德克萨斯大学达拉斯分校—计算机科学硕士(数据科学方向)
  19. 罗格斯大学—数据科学硕士
  20. 马里兰大学帕克学院-计算机科学硕士

请在评论中随意提及你认为应该进入追求数据科学前 20 名的大学。

附:我不再关注这篇文章,因为我已经有一段时间没有研究大学了。感谢您抽出时间阅读。万事如意!

20 年的数据,10 个结论

原文:https://towardsdatascience.com/20-years-of-data-10-conclusions-71e0f0de8869?source=collection_archive---------11-----------------------

我在 1999 年得到了我的第一份“真正的”工作,为哥本哈根的一家电力公司工作(大声喊给 Lars ),用 Excel 创建电价报告。从那以后,我在许多行业的小公司、初创公司和大公司工作过。我和充满激情的创始人以及雇佣的人一起工作过,我坐在桌子的两边(内部和咨询)。

我庆祝了我 20 年的“职业纪念日”,反思并写下我脑海中出现的前十件事。

→没有疯狂的数据科学泡沫在继续。最疯狂的是:15 年前,大公司通常只有少数数据科学家(或我们过去常说的“数据矿工”),但却有数百名营销人员(不是针对营销人员!).如今,拥有 100 名数据科学家并不被视为异类。

→真实 奔忙激励和鼓舞。虚假的骗局恰恰相反。

忙碌不是目标或成就。把正确的事情做好才是。不让自己不知所措才是。找到平衡才是。

→工作场所是一个缩影,在这里,小问题被放大和夸大。作为一名领导者,你的工作是客观看待事情,而不是火上浇油。

→虽然能感觉到官僚,但是流程真的很重要。短跑和 okr 能产生注意力和透明度。但是不要忘记,一个过程的目标并不是过程本身。

→初创企业更好玩。从零开始构建,而不是没完没了地管理成员,这是我最有收获的职业经历之一。

对于消费类公司,漏斗转化率随时间下降,客户获取成本上升。是重力这是预料之中的。关键是尽早制定一个应对策略,这样你就可以在(不可避免的)发生时避免被打败。

如果你正在组建一个团队,招聘必须是第一要务——一直如此。没有任何会议、代码、分析或幻灯片比让关键人才加入你的团队更重要。玩长线游戏。

不管你的角色是什么——技术或非技术——学会如何沟通。如果你不能有效地交流你的想法,你就不会充分发挥你的潜力。就这么简单。

商业世界已经从对数据科学的怀疑(见我的第一点)到在完全接受它。但我们不要完全丢掉怀疑态度。最近人工智能蛇油的激增就是一个很好的例子——在传单上贴上人工智能标签不会自动使产品变得有用或可信。

2018 年人工智能预测

原文:https://towardsdatascience.com/2018-predictions-for-ai-484cd15e61ec?source=collection_archive---------6-----------------------

这很难相信,但 2017 年即将结束,2018 年即将到来。像大多数公司一样, Aiden.ai 正在为新的一年进行规划和优先排序。我们有一些令人兴奋的大项目正在进行中!

但我们也想分享我们对 2018 年的预测。随着人工智能继续在很大程度上扰乱多个行业,我们认为明年将是真正的变革。以下是我们的五大预测:

1。不是一个人工智能可以统治所有人——而是很多。

福布斯报道称 80%的企业都在投资人工智能。一个全能、多功能的人工智能来帮助我们生活的各个方面还需要很多年。相反,我们将看到许多不同的人工智能和机器人,每一个都有一个特定的利基,它们将在其中越来越好地发挥作用。人工智能技术仍处于早期阶段,我们还需要许多年才能看到重大的行业整合,这需要一个人工智能来统治所有人。这是好事!行业从未像最初诞生和不断试验、学习和变化时那样富有创新性。

2。和机器对话会变得很正常。

据估计,Alexa 设备已经售出超过 1000 万台,在网络星期一购买的还有“数百万”台,然而 Siri 和 Alexa 等技术对普通人来说仍然感觉别扭。除了偶尔问一些关于天气或早晨交通的问题,我们大多数人还不太习惯于像一个人、同事或客户服务人员一样与机器交谈。

我们将如何克服这一点?两种方式。

首先,它让人感到尴尬,因为新闻快讯— 它是尴尬。上一次你问 Siri 问题的时候,你不得不重复或重新措辞一个问题多少次?她有很多东西要学。这些对话技术将在 2018 年得到改善,并在捕捉人类意图甚至可能是情感方面变得更好。随着自然语言处理的改进,像聊天机器人和信使机器人这样的东西将帮助我们这个社会克服这一点。

第二,我们将有更多的机会习惯与机器互动。许多品牌如 7-Eleven乐高已经发布了聊天机器人和信使机器人,通过他们日常使用的渠道接触消费者。人工智能、聊天机器人和对话技术几乎将颠覆世界上的每一个行业,所以请做好准备,在你的家庭生活、工作生活甚至更远的地方看到它们!我们保证,你会习惯的。

3。人类将要求机器帮助进行数据管理。

对于企业来说,可用的数据源比以往任何时候都多。不幸的是,大多数公司都没有充分利用这些信息。对于企业来说,这是一个前所未有的好机会,让它们变得更智能、更实时、更受数据驱动。坏消息呢?这些数据孤岛对人类来说太多了,他们自己无法承担。更大的 excel 电子表格不是答案!什么是?人工智能。

人类将会习惯于作为同事与机器一起工作的想法,一旦他们这样做了,他们的工作将会提高,因为他们变得更加准确和高效。我们将在 2018 年看到这方面的重大举措。

4。人工智能将创造比以往更多的就业机会。

对于任何新的颠覆性创新,人们经常持怀疑态度,业界也听到了很多关于人工智能导致失业的说法。然而,Gartner 估计,到 2020 年,人工智能将创造 230 万个工作岗位。希望 2018 年将是证明这一错误的一年,并表明人工智能将创造无数的工作和机会,而不是威胁它们。所有这些技术都需要人们去制造、销售,或许最重要的是——使用它们。可以肯定地说,人工智能将改善职业人士的生活,而不是让他们失业。

5。流行语消失了。

众所周知,像“人工智能”和“机器学习”这样的词现在很流行。许多公司都在赶时髦,声称拥有人工智能产品。2018 年,我们预测装腔作势的人将与真正的技术分离。

在 Aiden.ai,我们正在为营销人员打造第一个人工智能驱动的同事,2018 年,我们将招聘员工!在这里找到我们的职位空缺并加入冒险!

你对 2018 年有什么想法和预测?加入对话,让我们知道!

通过迭代器和 Zip 函数实现 2018 世界杯进球

原文:https://towardsdatascience.com/2018-world-cup-goals-through-iterators-and-zip-functions-8e4c338adb28?source=collection_archive---------10-----------------------

所有进球的 Python EDA 技术要点

唷,这是多么精彩的一个足球月啊。随着法国成为充满冷门、假摔和进球的锦标赛当之无愧的赢家,让我们回顾一下整届锦标赛的 169 个进球。

The agony of having to wait 4 years for the next one.

使用的数据集来自于 football.db ,其中包含了其他真正有趣的数据集,供其他球迷参考。我还从的国际足联 API 中提取了一些国家排名和国际足联积分的数据。

和往常一样,数据集并不能立即用于分析。世界杯的主要数据集是按比赛组织的,每场比赛的进球由一个字典列表表示,如下所示:

这意味着我们必须循环所有的比赛,循环所有的进球,并填写其他比赛的具体信息。通过一些功能工程和团队特定信息的合并,我们将每个目标表示为一个字典,如下所示:

有了这个新形成的目标数据框架,是时候开始一些可视化了。从这个特定的 EDA 中,我有两个主要的技术收获,都围绕着 zip 函数。

1.通过元组对字典进行排序

在计算每场比赛的平均进球数并根据结果创建一个字典后,它看起来像这样:

理想情况下,我们希望以降序来绘制这些值,因此需要在这个字典中进行排序。

要对字典进行排序,必须运行排序函数,并使用 lambda 函数来确保键和值对被排序在一起。元组的结果列表如下所示:

出于绘制国家平均值图表的目的,将元组中的数据分为 x 值列表和 y 值列表会有所帮助。

基本的 zip 函数有助于跨可重复项聚合元素。

什么是可迭代的?基本上任何可以循环的东西。

下面是一个简单的例子,其中一个迭代器的第一个元素与第二个迭代器的第一个元素匹配。这在迭代器的长度上是连续的。将返回一个包含元组的迭代器,可以转换成列表。

zip 函数也可以解包“压缩”的结果。通过使用*操作符,我们可以将元素赋回给它们各自的迭代器。

正是使用这种技术,我们对 sorted_average 列表进行解包,以获得按所需顺序排列的国家列表和平均值列表。

2.通过 ax.annotate 创建自定义数据标签

我原以为添加数据标签可能是另一种类似于 matplotlib.pyplot.xlabel 或 matplotlib.pyplot.ylabel 的方法。

让我们以标记每个体育场的进球为例。

要显示数据标签,需要两个迭代器:一个迭代器包含对图上补丁的引用,另一个迭代器包含所需的标签。补丁是指图表上的颜色补丁,在条形图的情况下是每个单独的条。因为我们希望标签是每个体育场的进球数,所以我使用 goals_df['stadium']的值。value_counts()。

请注意,如果我们想要显示每个体育场的名称,我们应该使用 goals_df['stadium']。value_counts()。返回带有索引值的迭代器。

现在,我们遍历图中的每个元素,并调用 ax.annotate()来添加标签。我们使用 ax.patches(返回所有补丁的迭代器)和体育场列表作为参数,循环遍历 zip 函数生成的聚合迭代器。

这意味着每次我们调用 ax.annotate()时,都会调用正确的补丁和标签对。使用 p.get_x()和 p.get_height()值将标签居中,这样就完成了!

现在我们已经讨论了一些技术问题,目标告诉了我们什么?

1.欧洲是得分最高的大陆

欧洲约占本届锦标赛总进球数的 60%。考虑到有 14 支欧洲球队参加了世界杯,这是意料之中的。他们也比其他大洲打了更多的比赛,因为他们进入了锦标赛的后几轮。

2.单个欧洲球队在总进球数和平均进球数排行榜上名列前茅

自然地,欧洲各队在进球数排行榜上名列前茅,锦标赛中的前 5 名射手都来自欧洲。巴西是继比利时、法国、克罗地亚、英格兰和俄罗斯之后第一个溜进排行榜的非欧洲球队。

欧洲球队的进球能力不应该仅仅归功于他们踢了最多的比赛。他们最终也超过了平均每场比赛的进球数。

突尼斯出人意料地排在第七位,领先于另一个非欧洲竞争者巴西。

3.高分淘汰赛

小组赛阶段的总进球数远远超过淘汰赛阶段并不奇怪,因为前者有 48 场比赛,后者有 16 场。

每场比赛的平均进球数显示,淘汰赛的得分更高,平均为 2.94 球,而小组赛为 2.54 球。

4.大多数进球都是在比赛进行到一半时打进的

比赛日 10、11 和 12 是得分最高的比赛日。把这归因于比利时和突尼西亚的先发制人心态,或者巴拿马的防守在哈里·基恩面前的无能为力。

5.乌龙球和点球的出现

虽然对“乌龙球”成为本届世界杯最佳射手没有一个合理的解释,但点球得分的显著上升很可能要归因于 VAR 的使用。

6.索契得到了款待

索契的观众在小组赛阶段观看了两场最精彩的比赛:葡萄牙对西班牙,比利时对突尼斯。两场比赛一共进了 13 个球。

7.国际足联的排名并不能很好地预测得分

通过将每个国家的平均进球数与他们的国际足联分数进行对比,我们看到排名靠前的球队并没有都达到标准。

我们用每场比赛的平均进球数和国际足联积分的中值来过滤掉令人失望的表现者和超额完成者。

在这些球队中,俄罗斯是一个巨大的惊喜,东道主在第一场比赛中摧毁了沙特阿拉伯,然后在 16 强赛中震惊了西班牙。突尼斯队积极的进攻赢得了球迷的支持,而日本队在令人心碎的最后一分钟输给比利时之前,在整个比赛中都保持了自己的风格。

毫无疑问,德国队在本届世界杯上令人失望,受到了冠军的诅咒,未能从小组中出局。进球对他们来说已经枯竭,他们拥有球队中最低的得分记录之一。莱万多夫斯基未能激发波兰队的努力,而墨西哥队击败德国队的比赛也没有延续他们在随后比赛中的得分记录。

随着本届世界杯的结束,我所代表的克罗地亚队在最后一关倒下了,我现在只希望路卡·莫德里奇赢得一个当之无愧的金球奖。

感谢阅读!

数据科学家的 23 只大熊猫代码

原文:https://towardsdatascience.com/23-great-pandas-codes-for-data-scientists-cca5ed9d8a38?source=collection_archive---------6-----------------------

想获得灵感?快来加入我的 超级行情快讯 。😎

这里有 23 个熊猫代码,供数据科学家帮助更好地理解你的数据!

基本数据集信息

(1)读入 CSV 数据集

pd.DataFrame.from_csv(“csv_file”) 

运筹学

pd.read_csv(“csv_file”)

(2)读入 Excel 数据集

pd.read_excel("excel_file")

(3)将您的数据框直接写入 csv

逗号分隔,不带索引

df.to_csv("data.csv", sep=",", index=False)

(4)基本数据集特征信息

df.info()

(5)基本数据集统计

print(df.describe())

(6)打印表格中的数据框

print(tabulate(print_table, headers=headers))

其中“print_table”是列表的列表,“headers”是字符串头的列表

(7)列出列名

df.columns

基本数据处理

(8)丢弃丢失的数据

df.dropna(axis=0, how='any')

返回给定轴上的标签被忽略的对象,其中部分或全部数据交替丢失

(9)替换丢失的数据

df.replace(to_replace=None, value=None)

用“值”替换“to_replace”中给定的值。

(10)检查 nan

pd.isnull(object)

检测缺失值(数值数组中的 NaN,对象数组中的 None/NaN)

(11)删除一个特征

df.drop('feature_variable_name', axis=1)

对于行,轴为 0;对于列,轴为 1

(12)将对象类型转换为浮点型

pd.to_numeric(df["feature_name"], errors='coerce')

将对象类型转换为数字,以便能够执行计算(如果它们是字符串)

(13)将数据帧转换为 numpy 数组

df.as_matrix()

(14)获得数据帧的前“n”行

df.head(n)

(15)按特征名称获取数据

df.loc[feature_name]

对数据帧进行操作

(16)将函数应用于数据帧

这将使数据框的“高度”列中的所有值乘以 2

df["height"].apply(**lambda** height: 2 * height)

运筹学

def multiply(x):
    return x * 2df["height"].apply(multiply)

(17)重命名列

这里,我们将数据框的第 3 列重命名为“大小”

df.rename(columns = {df.columns[2]:'size'}, inplace=True)

(18)获取列的唯一条目

在这里,我们将获得列“name”的唯一条目

df["name"].unique()

(19)访问子数据帧

在这里,我们将从数据框中选择“名称”和“大小”列

new_df = df[["name", "size"]]

(20)关于您的数据的摘要信息

**# Sum of values in a data frame** df.sum()**# Lowest value of a data frame** df.min()**# Highest value** df.max()**# Index of the lowest value** df.idxmin()**# Index of the highest value** df.idxmax()**# Statistical summary of the data frame, with quartiles, median, etc.** df.describe()**# Average values** df.mean()**# Median values** df.median()**# Correlation between columns** df.corr()**# To get these values for only one column, just select it like this#** df["size"].median()

(21)整理你的数据

df.sort_values(ascending = False)

(22)布尔索引

这里我们将过滤名为“size”的数据列,只显示等于 5 的值

df[df["size"] == 5]

(23)选择值

让我们选择“大小”列的第一行

df.loc([0], ['size'])

喜欢学习?

推特上关注我,我会在那里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上与我联系!

25 盏灯

原文:https://towardsdatascience.com/25-lights-c4cc2c3f1832?source=collection_archive---------12-----------------------

第一部分:问题介绍和简单解决方案

第二部分:使用真实世界的数据

现在是进入机器学习的绝佳时机。有一些工具和资源可以帮助任何拥有一些编码技能和需要解决的问题的人去做有趣的工作。我一直在关注针对程序员的 实用深度学习 和大卫·西尔维的强化学习课程没有博士学位的机器学习 是对深度学习技术的极好介绍。这些,连同所有链接自《黑客新闻》的论文和 两分钟论文 都激励我尝试一些想法。

我过去曾做过物联网设备的设置过程,通过 BTLE 从 iPhone 连接到它。依赖单一通道进行设置的漏洞之一是中间人攻击。击败 MitM 的一种方法是对交换的公钥使用带外认证。这可以通过在设备的发光二极管上编码一个随机的位模式,并从手机的摄像头中读取它们来实现。这将是 Apple Watch 设置协议的一个不太复杂的版本,但仍然非常有效。

我正在考虑的设备在前面有一个 5x5 的灯阵列。2 ⁵可以编码 33,554,432 种可能性,非常适合密钥交换验证。现在的挑战是找到一种从图像中自动提取位模式的方法。

首先,我尝试改编了 Fast.ai MOOC 早期使用的 VGG16 net。我尝试了几轮培训,并应用标准建议来微调网络。这未能产生有意义的结果。VGG16 和像它一样的深网在识别单一类别方面很棒,但我不确定它是否能跟踪 25 盏灯。在第二部分中,我展示了类似 VGG16 的网络是如何工作的。休息之后,思考和阅读其他项目和技术,我遇到了自动编码器。自动编码器是一种神经网络,它将输入编码成较小的向量,然后将该向量解码回原始大小。损失函数用于比较输入和输出之间的差异。然后,可以训练自动编码器来最小化损失。

Autoencoder diagram from the Keras blog

自动编码器不是最复杂的技术,但最好从简单的解决方案开始。 在 Keras 中构建 auto encoders是一个很好的介绍,我在这里的探索紧随那个帖子。****

图象生成

为了训练自动编码器,我们需要一些图像。下面是绘制我们想要识别的图像的 Python 代码。幸运的是,我们可以很容易地生成训练所需的图像。真实世界的图像将很难获得这里所需要的数量。

简单自动编码器

现在我们有了图像生成器,我们可以制作一个非常简单的自动编码器。这几乎与 Keras 博客中的第一个自动编码器相同。

在批量大小为 128 的 500 次迭代之后,我们得到 0.1012 的损失。这大约是 autoencoder 博客中第一次尝试的损失水平。这是我们看到的。输入图像在顶部,解码在底部。

这看起来没有我希望的那么好,但是请注意点颜色的细微变化。再给它几千次迭代吧。

5000 次迭代得到 0.0031 的损失。

这还差不多。现在又多了 5000,应该不错。

迭代 10000 次后,损耗为 0.000288。

它看起来不错,但这种简单的网络经不起真实世界的输入。看看我的下一篇文章,我将展示如何识别照片中的点图案。然后如何用 CoreML 在 iPhone 上运行网络。

第二部分:使用真实世界的数据

25 盏灯

原文:https://towardsdatascience.com/25-lights-part-ii-e021b66e449b?source=collection_archive---------5-----------------------

第二部分:使用真实世界的数据

在第部分 I 中,我展示了一个简单的全连接自动编码器,可以用随机位模式再现图像。autoencoder 是一个很好的选择,可以用来说明网络训练时发生了什么,并表明它在理论上是可行的。然而,一个简单的全连接网络在现实生活中是行不通的。这是因为将图像展平成一维会丢失很多空间信息。此外,一个单独的隐藏层并不能处理真实照片在大小、位置、旋转、模糊等方面的所有变化。

处理照片

我的目标是构建一个演示 iPhone 应用程序,它可以拍摄模式的照片,并显示检测到的位模式。这意味着训练集将不得不使用照片,而不是纯粹的计算机生成的图像。处理真实世界的照片需要比第一篇文章更复杂的方法。幸运的是,在图像识别方面有大量的研究可以借鉴。 ImageNet 竞赛的获胜者发布他们的结果,复制获胜的网络是一个很好的开始。一个用于迁移学习的流行网络是 VGG-16。在我们设计中,我们可以大量借鉴网络。VGG-16 是一个深度卷积网络(DCNN)。如果你对 CNN 不熟悉,我发现这个视频是一个极好的教程。简短的解释是,CNN 使用一堆卷积滤波器,这些滤波器擅长提取空间信息和空间关系。

下面是我用过的网络。它不同于 VGG,因为它使用平均池代替最大池,具有更少的层和不同的损失函数。

对于笔记本的其余部分,请查看完整的 jupyter 笔记本和支持工具。我已经包括了 macOS 图像服务器、iOS 图像记录器和最终的 iOS 识别应用程序。

创建培训和验证集

现在我们已经建立了我们的网络,我们需要更好的数据来训练。在我们的第一个例子中,我们使用了按需绘制的简单图像。这些照片太干净了,没有一张真正的照片会有的任何不规则性。由于所需的数量,使用真实照片是一个挑战。我最初尝试使用纯合成图像,但未能通过真实照片验证。然后,我创建了一个大约 15k 照片的训练集。这些照片是由一部指向电脑屏幕的 iPhone 拍摄的。手机通过本地网络连接检索位模式,然后将图片保存到磁盘。直到大约 90k 的图像被包含在训练集中,我才能够得到好的结果。为了提高训练的质量,对图像应用了随机仿射变换。应用此变换可以移动、缩放和倾斜图像。

iOS app capturing images from the screen

收集完图像后,我保留了其中的 10%作为验证集。一个好的验证集将使你知道训练进展如何,以及要达到你的目标还需要哪些额外的步骤。fast.ai 的 Rachel Thomas 有一篇关于这个话题的优秀文章。

过度拟合

This is what overfitting looks like

我第一次尝试使用一个类似 VGG 的网络,并没有包括任何正规化。这显然是个错误。上图是过度拟合的经典案例。左边的损失图显示了网络在训练数据上的表现。右边的 val_loss 显示了网络如何处理验证集。我喜欢认为神经网络是懒惰的骗子,它们会利用任何优势来获得正确的答案。一个大的网络和一个小的训练集必然会导致过度拟合。最初的训练集是 10k 张图像。在这种尺寸下,网络更容易“记住”每张图像的值,而不是学会以概括的方式看到这些点。

如何避免过度拟合

The same data as above, but with batch normalization and dropout

避免过度拟合的一些技巧是:

  • 更大的训练集(更大的训练集、数据论证、更多样的输入源)
  • 正规化(批量正规化,退出)
  • 改变网络拓扑(使网络变小)

增加漏失和批量归一化非常有效地防止了第一张图中看到的失控过拟合。然而,数据集仍然太小,无法在验证集上获得好的结果。早期训练仅导致 0.4 的验证损失和 0.1 以下的训练损失。这个差异被称为差异。要获得好的结果,需要低于 0.02 的验证损失。当使用更大、更多样的训练集时,可以获得更好的结果。

Final training run

调试网络

一旦训练达到一个合理的表现水平,检查网络出错的情况是一个好主意。对这些情况进行简单的目视检查通常就足够了。

第一件事是计算有多少图像有一个或多个不正确的位。大约 92%的图像是完全正确的。那么剩下的 8%是怎么回事呢?以下是一些错过的图片:

有一堆重影和模糊的照片,合理的东西要错过。我回去删除了所有有重影或其他主要问题的照片,然后从头开始重新运行培训。结果如下:

Final loss of 0.04 and validation loss of 0.02

最终错误率为 97%。如果有必要接近 100%,就需要更多种类的图像,集中在当前网络做得不好的情况下。

iPhone 实现和 CoreML

我打算写第三篇关于用训练好的模型制作一个 iOS 应用的文章。然而,它真的很简单,不值得一提。

一旦你训练好你的模型,安装 CoreML 工具。你需要有一个 Python 2.7 环境,因为 CoreML 不支持 Python 3。然后在您的笔记本中创建一个新的单元格,并运行以下命令。

import coremltoolscoreml_model = coremltools.converters.keras.convert(model)
coreml_model.save(“Lights.mlmodel”)

一旦您导出了您的模型,创建一个新的项目并导入它。唯一棘手的部分是将图像转换成 CoreML 模型的输入。

要将图像转换为 CoreML:

  1. 按照我们的模型输入的形状制作一个多层阵列。在这种情况下是 1×128×128,32 位浮点。
  2. 将图像渲染到 8 位灰度绘图环境中。
  3. 提取字节并将其转换为浮点数,然后将其写入数组。
  4. 为模型创建一个输入对象,并从 MLModels predictionFromFeatures 方法获取预测。

更多细节请看一下 iOS CoreML 代码

关于如何使用 CoreML 模型的完整教程,请查看 CoreML 和视觉机器学习

结论

用错误的方法解决这个问题太麻烦了!有很多图像识别系统的例子可以在不使用深度卷积网络的情况下完成这种任务。传统的 CV 技术可以用更小的二进制数更快地解决这个问题。然而,这是一个非常有趣的学习练习,帮助我找到了如何解决新的 ML 任务带来的问题。

当我把这个问题作为一个 ML 训练练习来考虑时,我不确定它是否可行。我遇到的所有例子都是分类任务,比如 ImageNet。这些分类任务有一个最终的热门矢量输出,并使用了损失函数,如分类交叉熵。在对其他网络做了更多的阅读并对损失函数有了更好的理解后,我意识到像二进制交叉熵这样的东西应该是可行的。事后看来,我应该更早开始详细阅读损失函数。

所需的训练数据的大小和呼吸也有点令人兴奋。与其他训练集相比,超过 85,000 个示例并不算大,但仍然非常大。用胶囊网络再试一次会很有趣。胶囊网络应该具有更好的相对位置感,并且需要更少的例子。

把我学会使用的所有技术放在一起,看着它们工作是非常令人满意的。吴恩达的杰瑞米·霍华德的视频课程是很好的向导。在大多数 ML 课程材料中,有大量的时间花在正则化和管理你的训练数据和验证集上。我希望我已经证明了这是有充分理由的。感谢您阅读我的项目。我很想在下面的评论中听到关于这篇文章的任何评论或建议。

第二场总统辩论——热门推文时刻分析

原文:https://towardsdatascience.com/2nd-presidential-debate-top-twitted-moment-analysis-4a19c52a1d1f?source=collection_archive---------0-----------------------

情绪 =-0.72:

毫不奇怪,观众对第二次总统辩论持中立或消极态度,并且/或者对未来的美国总统感到焦虑。这一点可以从情绪量表上直观的观察到,略负的分数。

地理反应:

地理位置分析表明,美国并不是唯一对这场引起争论感兴趣的国家。显然,德国和法国等一些欧洲国家对下一任美国总统表现出强烈的担忧和担心。相反,最近投票脱离欧盟的英国表现出相当乐观的态度。

有人怀疑俄罗斯试图影响美国大选(来源:https://www . the guardian . com/us-news/2016/sep/05/Russia-influence-us-president-election-investigation)一些未知地点的推文会不会来自俄罗斯?

“真正的赢家”:

Ken Bone

在唐纳德·特朗普和希拉里·克林顿的第二次总统辩论中,肯·伯恩的红色开衫、白色领带和黑框眼镜无疑吸引了更多的眼球。大多数观众欣赏他在全国舞台上的首次亮相。他成了网络红人,给辩论的基调带来了感染力。伯恩先生为让美国再次伟大做出了自己的主张!

Ken Bone’s Cardigan

Ken Bone 的羊毛衫可能是今年最受欢迎的万圣节服装或圣诞礼物之一。 GQ 在这里展示了你可以在哪里买到它

在 Stratifyd Signals 平台中,分析来自社交媒体渠道的情绪很容易。Twitter、脸书、YouTube 和 Yelp 的内置数据连接器可以快速导入数据。Signals 通过机器学习处理数据,提取出最重要的主题和趋势,并在易于使用的可视化界面中呈现出来。

尝试我们的一个自助服务用户帐户,了解可视化分析有多简单。这里是应用商店中 Priceline 应用的视觉分析的链接。App Store 和 Google Play 只是 Signals 中许多预建数据连接器中的两个。也可以上传自己的数据。

获得您的试用帐户,看看用户说什么。与我们聊天,或发送电子邮件到 clientsupport@stratifyd.com。

www。stratifyd.com

比单词嵌入更好的单词袋中的 3 种基本方法

原文:https://towardsdatascience.com/3-basic-approaches-in-bag-of-words-which-are-better-than-word-embeddings-c2cbc7398016?source=collection_archive---------2-----------------------

Photo: https://pixabay.com/en/hong-kong-china-city-chinese-asian-383963/

如今,每个人都在谈论单词(或字符、句子、文档)嵌入。单词袋还值得用吗?我们应该在任何场景中应用嵌入吗?

看完这篇文章,你会知道:

  • 为什么人们说单词嵌入是灵丹妙药?
  • 什么时候单词袋会战胜单词嵌入?
  • 词汇袋中的 3 种基本方法
  • 我们如何用几行文字构建单词包?

为什么有人说嵌入这个词是灵丹妙药?

Photo: https://pixabay.com/en/books-stack-book-store-1163695/

在自然语言处理领域,嵌入是解决文本相关问题的成功方法,其性能优于单词袋(BoW)。事实上,BoW 引入了诸如大特征维数、稀疏表示等限制。关于文字嵌入,你可以看看我之前的帖子

我们还应该用弓吗?在某些情况下,我们可以更好地使用 BoW

什么时候单词袋会战胜单词嵌入?

Photo: https://www.ebay.co.uk/itm/Custom-Tote-Bag-Friday-My-Second-Favorite-F-Word-Gift-For-Her-Gift-For-Him-/122974487851

在以下情况下,您仍然可以考虑使用 BoW 而不是 Word 嵌入:

  1. 构建基线模型。通过使用 scikit-learn,只需要几行代码就可以构建模型。以后,可以用深度学习来咬它。
  2. 如果您的数据集很小,并且上下文是特定于领域的,BoW 可能比单词嵌入更好。上下文是非常领域特定的,这意味着你不能从预先训练的单词嵌入模型(GloVe,fastText 等)中找到相应的向量。

我们如何用几行文字构建单词包?

使用传统的强大的 ML 库,有 3 种简单的方法来构建 BoW 模型。

统计出现次数

Photo: https://pixabay.com/en/home-money-euro-calculator-finance-366927/

统计单词出现次数。使用这种方法的原因是关键字或重要信号会反复出现。所以如果出现的次数代表单词的重要性。更多的频率意味着更多的重要性。

doc = "In the-state-of-art of the NLP field, Embedding is the \
success way to resolve text related problem and outperform \
Bag of Words ( BoW ). Indeed, BoW introduced limitations \
large feature dimension, sparse representation etc."count_vec = CountVectorizer()
count_occurs = count_vec.fit_transform([doc])
count_occur_df = pd.DataFrame(
    (count, word) for word, count in
     zip(count_occurs.toarray().tolist()[0], 
    count_vec.get_feature_names()))
count_occur_df.columns = ['Word', 'Count']
count_occur_df.sort_values('Count', ascending=False, inplace=True)
count_occur_df.head()

输出

Word: "of", Occurrence: 3
Word: "bow", Occurrence: 2
Word: "way", Occurrence: 1

归一化计数出现次数

如果你认为极高的频率可能会主导结果并造成模型偏差。标准化可以容易地应用于流水线。

doc = "In the-state-of-art of the NLP field, Embedding is the \
success way to resolve text related problem and outperform \
Bag of Words ( BoW ). Indeed, BoW introduced limitations \
large feature dimension, sparse representation etc."norm_count_vec = TfidfVectorizer(use_idf=False, norm='l2')
norm_count_occurs = norm_count_vec.fit_transform([doc])
norm_count_occur_df = pd.DataFrame(
    (count, word) for word, count in zip(
    norm_count_occurs.toarray().tolist()[0], 
    norm_count_vec.get_feature_names()))
norm_count_occur_df.columns = ['Word', 'Count']
norm_count_occur_df.sort_values(
    'Count', ascending=False, inplace=True)
norm_count_occur_df.head()

输出

Word: "of", Occurrence: 0.4286
Word: "bow", Occurrence: 0.4286
Word: "way", Occurrence: 0.1429

术语频率-逆文档频率(TF-IDF)

Photo: http://mropengate.blogspot.com/2016/04/tf-idf-in-r-language.html

TF-IDF 采用了另一种方法,这种方法认为高频可能不能提供太多信息增益。换句话说,生僻字为模型贡献了更多的权重。

如果在同一文档(即培训记录)中出现的次数增加,单词的重要性将增加。另一方面,如果它出现在语料库(即其他训练记录)中,则会减少。

doc = "In the-state-of-art of the NLP field, Embedding is the \
success way to resolve text related problem and outperform \
Bag of Words ( BoW ). Indeed, BoW introduced limitations \
large feature dimension, sparse representation etc."tfidf_vec = TfidfVectorizer()
tfidf_count_occurs = tfidf_vec.fit_transform([doc])
tfidf_count_occur_df = pd.DataFrame(
    (count, word) for word, count in zip(
    tfidf_count_occurs.toarray().tolist()[0],   
    tfidf_vec.get_feature_names()))
tfidf_count_occur_df.columns = ['Word', 'Count']
tfidf_count_occur_df.sort_values('Count', ascending=False, inplace=True)
tfidf_count_occur_df.head()

输出(该值与标准化计数发生次数完全相同,因为演示代码只包含一个文档)

Word: "of", Occurrence: 0.4286
Word: "bow", Occurrence: 0.4286
Word: "way", Occurrence: 0.1429

密码

此示例代码将在计数发生、标准化计数发生和 TF-IDF 之间进行比较。

使用不同的矢量化方法获取模型的样本函数

def build_model(mode):
    # Intent to use default paramaters for show case
    vect = None
    if mode == 'count':
        vect = CountVectorizer()
    elif mode == 'tf':
        vect = TfidfVectorizer(use_idf=False, norm='l2')
    elif mode == 'tfidf':
        vect = TfidfVectorizer()
    else:
        raise ValueError('Mode should be either count or tfidf')

    return Pipeline([
        ('vect', vect),
        ('clf' , LogisticRegression(solver='newton-cg',n_jobs=-1))
    ])

使用另一个示例函数来构建两端管道

def pipeline(df, mode):
    x = preprocess_x(df)
    y = preprocess_y(df)

    model_pipeline = build_model(mode)
    cv = KFold(n_splits=10, shuffle=True)

    scores = cross_val_score(
        model_pipeline, x, y, cv=cv, scoring='accuracy')
    print("Accuracy: %0.4f (+/- %0.4f)" % (
        scores.mean(), scores.std() * 2))

    return model_pipeline

让我们检查一下需要处理的词汇数量

x = preprocess_x(x_train)
y = y_train

model_pipeline = build_model(mode='count')
model_pipeline.fit(x, y)print('Number of Vocabulary: %d'% (len(model_pipeline.named_steps['vect'].get_feature_names())))

输出

Number of Vocabulary: 130107

通过传递“计数”(计数发生)、“tf”(正常计数发生)和“tfi df”(TF-IDF)来调用管道

print('Using Count Vectorizer------')
model_pipeline = pipeline(x_test, y_test, mode='count')print('Using TF Vectorizer------')
model_pipeline = pipeline(x_test, y_test, mode='tf')print('Using TF-IDF Vectorizer------')
model_pipeline = pipeline(x_test, y_test, mode='tfidf')

结果是

Using Count Vectorizer------
Accuracy: 0.8892 (+/- 0.0198)
Using TF Vectorizer------
Accuracy: 0.8071 (+/- 0.0110)
Using TF-IDF Vectorizer------
Accuracy: 0.8917 (+/- 0.0072)

结论

你可以从 github 中找到所有代码。

根据以前的经验,我试图通过给出一个简短的描述来解决产品分类的问题。例如,给定“新鲜苹果”,预期类别是“水果”。仅仅通过使用计数发生方法已经能够有 80+的精确度

在这种情况下,由于每个训练记录的字数只有几个字(从 2 个字到 10 个字)。使用单词嵌入可能不是一个好主意,因为没有的邻居(单词)来训练向量。

另一方面,scikit-learn 提供了其他参数来进一步调整模型输入。您可能需要了解以下特性

  • ngram_range:除了使用单个单词,还可以定义 ngram
  • 二进制:除了计算出现次数,还可以选择二进制表示。
  • max_features:可以选择最大字数来减少模型的复杂性和大小,而不是使用所有的单词。

此外,一些预处理步骤可以在上述库中执行,而不是自己处理。例如,停用字词删除、小写字母等。为了有更好的灵活性,我将使用我自己的代码来完成预处理步骤。

关于我

我是湾区的数据科学家。专注于数据科学、人工智能,尤其是 NLP 和平台相关领域的最新发展。你可以通过媒体博客LinkedInGithub 联系我。

3 文本挖掘中的基本距离度量

原文:https://towardsdatascience.com/3-basic-distance-measurement-in-text-mining-5852becff1d7?source=collection_archive---------2-----------------------

Photo Credit: https://pixabay.com/en/hong-kong-night-light-rail-city-2288999/

在自然语言处理中,我们还想发现句子或文档之间的相似性。文本不像数字和坐标那样,我们不能比较“苹果”和“桔子”之间的不同,但是可以计算相似性得分。

为什么?

因为我们不能简单地在“苹果是水果”和“橘子是水果”之间做减法,所以我们必须找到一种方法将文本转换成数字来计算它。有了分数,我们就能明白两个物体之间有多么相似。

什么时候?

在我的数据科学工作中,我尝试:

  • 比较两篇文章是否描述相同新闻
  • 识别相似文档
  • 通过给出产品描述来分类

怎么会?

在本文中,我们将介绍 4 种基本的距离测量方法:

  • 欧几里得距离
  • 余弦距离
  • 雅克卡相似性

在进行任何距离测量之前,必须对文本进行标记。如果你不熟悉分词,你可以访问这篇文章。

欧氏距离

Photo Credit: http://dataaspirant.com/2015/04/11/five-most-popular-similarity-measures-implementation-in-python/

比较两个物体之间的最短距离。它使用从中学学到的勾股定理。

分数是指两个物体之间的距离。如果为 0,则表示两个对象是相同的。以下示例显示了比较第一个句子时的得分。

print('Master Sentence: %s' % news_headlines[0])
for i, news_headline in enumerate(news_headlines):
    score = sklearn.metrics.pairwise.euclidean_distances([transformed_results[i]], [transformed_results[0]])[0][0]
    print('-----')
    print('Score: %.2f, Comparing Sentence: %s' % (score, news_headline))

输出

Master Sentence: Elon Musk's Boring Co to build high-speed airport link in Chicago
-----
Score: 0.00, Comparing Sentence: Elon Musk's Boring Co to build high-speed airport link in Chicago
-----
Score: 1.73, Comparing Sentence: Elon Musk's Boring Company to build high-speed Chicago airport link
-----
Score: 4.36, Comparing Sentence: Elon Musk’s Boring Company approved to build high-speed transit between downtown Chicago and O’Hare Airport
-----
Score: 4.24, Comparing Sentence: Both apple and orange are fruit

余弦相似度

Photo Credit: http://dataaspirant.com/2015/04/11/five-most-popular-similarity-measures-implementation-in-python/

确定两个物体之间的角度是寻找相似性的计算方法。分数的范围是 0 到 1。如果得分为 1,则表示它们的方向相同(而不是大小相同)。以下示例显示了比较第一个句子时的得分。

print('Master Sentence: %s' % news_headlines[0])
for i, news_headline in enumerate(news_headlines):
    score = sklearn.metrics.pairwise.cosine_similarity([transformed_results[i]], [transformed_results[0]])[0][0]
    print('-----')
    print('Score: %.2f, Comparing Sentence: %s' % (score, news_headline))

输出

Master Sentence: Elon Musk's Boring Co to build high-speed airport link in Chicago
-----
Score: 1.00, Comparing Sentence: Elon Musk's Boring Co to build high-speed airport link in Chicago
-----
Score: 0.87, Comparing Sentence: Elon Musk's Boring Company to build high-speed Chicago airport link
-----
Score: 0.44, Comparing Sentence: Elon Musk’s Boring Company approved to build high-speed transit between downtown Chicago and O’Hare Airport
-----
Score: 0.00, Comparing Sentence: Both apple and orange are fruit

Jaccard 相似度

Photo Credit: http://dataaspirant.com/2015/04/11/five-most-popular-similarity-measures-implementation-in-python/

该度量是指所有单词中常见单词的数量。更多的共同点意味着两个对象应该是相似的。

Jaccard 相似度=(A 和 B 的交集)/(A 和 B 的并集)

范围是 0 到 1。如果分数为 1,则表示它们是相同的。第一句和最后一句之间没有任何常用词,所以得分为 0 分。以下示例显示了比较第一个句子时的得分。

print('Master Sentence: %s' % news_headlines[0])
for i, news_headline in enumerate(news_headlines):
    y_compare = calculate_position(transformed_results[i])
    x1, x2 = padding(y_actual, y_compare)
    score = sklearn.metrics.jaccard_similarity_score(x1, x2)
    print('-----')
    print('Score: %.2f, Comparing Sentence: %s' % (score, news_headline))

输出

Master Sentence: Elon Musk's Boring Co to build high-speed airport link in Chicago
-----
Score: 1.00, Comparing Sentence: Elon Musk's Boring Co to build high-speed airport link in Chicago
-----
Score: 0.67, Comparing Sentence: Elon Musk's Boring Company to build high-speed Chicago airport link
-----
Score: 0.17, Comparing Sentence: Elon Musk’s Boring Company approved to build high-speed transit between downtown Chicago and O’Hare Airport
-----
Score: 0.00, Comparing Sentence: Both apple and orange are fruit

结论

你可以从 github 中找到所有代码。

三种方法也有相同的假设,即文档(或句子)相似,如果有共同的单词。这个想法非常简单明了。它适合一些基本情况,如比较前两句话。然而,通过比较第一句和第三句,得分相对较低,尽管两句都描述了相同的新闻。

另一个限制是上述方法不处理同义词场景。例如购买和购买,它应该有相同的意思(在某些情况下),但上述方法将对待这两个词是不同的。

那么暗示是什么呢?你可以考虑使用 Tomas Mikolov 在 2013 年提出的单词嵌入。

关于我

我是湾区的数据科学家。专注于数据科学、人工智能,尤其是 NLP 和平台相关领域的最新发展。

中:【http://medium.com/@makcedward/】T2

领英:【https://www.linkedin.com/in/edwardma1026

github:https://github.com/makcedward

https://www.kaggle.com/makcedward

计算机图形学中人工智能的 3 个挑战

原文:https://towardsdatascience.com/3-challenges-of-artificial-intelligence-in-computer-graphics-223e06bd846b?source=collection_archive---------10-----------------------

缩小虚拟世界和现实世界之间的差距

计算机图形不仅仅是惊人的视觉效果。它为我们提供了为不同目的重建物理世界的工具,例如工业或医疗应用。
这个领域的图形图灵测试很久以前就通过了,正如当前的摄影和电影技术状态所证明的。现实和幻想几乎无法区分,动画师可以在几天内创造出逼真的世界。

图形图灵测试: 受试者观察并与真实或计算机生成的场景互动。如果受试者不能比随机猜测更好地从模拟现实中确定现实,则测试通过。

在这个话题上,人工智能的最新进展提供了相当大的帮助。Ian Goodfellow 几年前推出了一种新型的神经网络架构,称为生成对抗网络(GAN) ,能够推动计算机图形学中可能出现的边界。应用是无穷无尽的,但正如斯坦·李教导我们的那样,强大的力量伴随着巨大的责任。事实上,如果没有适当的控制,生成与现实难以区分的图像和视频可能会对我们的社会构成真正的威胁。看看这段人工智能生成的假奥巴马的视频,就明白我的意思了。

深度假奥巴马——生成性敌对网络

用于流体模拟的人工智能新兴领域

模拟流体的动力学一直是一个巨大的数学挑战。最先进的技术需要巨大的计算能力,对于实时模拟更是如此。首先,需要提醒的是,术语流体包括液体、气体和等离子体。烟、风、水、火是流体的一些例子。
如果你熟悉计算流体动力学(CFD) ,你在你的道路上已经多次遇到纳维尔-斯托克斯方程。这些偏微分方程将运动流体的速度、压力、温度和密度联系起来,扩展了之前引入粘度效应的更简单的模型。我们不打算描述它们,因为它们非常复杂,没有适当的流体力学背景不适合,但如果你对它们感兴趣,你可以查看文章末尾的链接。寻找这些方程的解是不合适的,原因有两个:它们依赖于数据,因此方法被截断以适合计算预算,并且可能表现出非常慢的渐近收敛。

为了解决这些问题,机器学习最近引入了一种新的方法,将流体动力学环境建模为监督回归问题。神经网络和回归森林给出了很好的结果,但是它们需要由精确解算器提供的解的数据集。这在模拟测试期间是不可能的,因为初始帧是由模型本身生成的(它不是一个精确的解算器)。结果是不完善的,这一模型的应用受到限制。

描述物理世界的一种新的令人兴奋的方法涉及到无创或天真物理学的概念。人工智能的这一新领域涉及基于经验预测涉及宏观对象的物理交互结果的能力。让我们看一个例子:婴儿不知道什么是重力,但是通过经验,他们拥有重力的概念。这个想法是创造能够模拟直觉物理的人工神经模型。Tompson 等人的工作属于这一阵营,他们开发了一种新颖的定制 ConvNet 架构来取代现有的基于欧拉的求解器,并引入了一种新的训练损失来保证更快的收敛。

非线性软组织动力学:皮肤建模

获得逼真的人体模型是计算机图形学的主要目标之一。身体的表面需要自然变形。在实时应用中,身体由骨骼运动控制。由于这个原因,表面被链接到它的骨骼姿态,并且皮肤的动画是它的一个功能。这是如何实现的?

最常见的算法是线性混合蒙皮(LBS) ,也被 UnityUnreal 使用。它计算量不大,并且在大多数情况下都能给出好的结果。尽管如此,还是有一些缺点。主要问题是在关节旋转过程中,强烈的弯曲或不真实的效果会导致体积的过度损失。

第二个重要的策略是数据驱动的身体模型。该模型划分了姿势和形状的参数,并允许对身体进行更深入的控制。这里的主要问题是缺乏对非线性动力学的控制。我说的非线性动力学是什么意思?软组织,像人的腹部,对力的反应不是线性的。它弹跳,旋转,抖动。这些运动不能用非线性模型来恰当地描述。
为了解决这个问题,引入了数据驱动的动力学模型。这些算法通常用于面部运动或布料动态。Casas 和 Otaduy 最近应用了最后一个类别的一个非常有趣的应用(本文最后的链接)。他们成功开发了一个数据驱动的模型,以模拟用公开可用的骨骼运动数据训练的非线性软组织动力学。与每个机器学习模型一样,这种新方法也不能正确描述远离训练集的变形。必要时,克服这一限制的唯一方法是采用基于物理学的人体模型。这些模型非常精确,但要复杂得多。

计算机图形学中的布料和材料理解

第三个巨大的挑战是布料的模拟。布料材料回收方法需要复杂的实验装置来获得物理特性。再现织物的正确行为可能极其复杂,研究人员正在应用机器学习方法来重现它的动态。了解布料的特性不仅在动画中有应用,在完全不同的领域也有应用。让我们考虑一个服装虚拟试穿系统:捕捉这种材料的动态可以打开电子商务中提供的一系列新服务。如果我们考虑虚拟现实的进步,这一点尤其正确,它将允许更真实的虚拟购物,给我们提供虚拟试穿衣服的可能性。
目前,反演动力系统的物理性质有多种方法。最直接的方法是通过测量、物理量采样和估计相关属性。第二个重要策略是模拟、优化和迭代动态系统,逐渐提取更接近真实值的特征。

结论

我们刚刚看到了人工智能在计算机图形学中的三个挑战。在物理世界的再现中,这三个范畴是融合在一起的:想想一面被风吹动的旗帜。在这种情况下,所有三个概念都出现在一个事件中。

当然,还有一系列未解决的问题,我将在下面的文章中分析它们。如果你喜欢这篇文章,我会喜欢你点击鼓掌按钮👏所以其他人可能会偶然发现它。对于任何意见或建议,不要犹豫留下评论!

要查看更多我的故事:

人工智能是种族歧视吗?(及其他关注点)

如何教会一个 AI 玩游戏:深度强化学习

人工智能遇上艺术:神经转移风格

我是一名数据科学专业的学生,热爱机器学习及其无尽的应用。你可以在 maurocomi.com找到更多关于我和我的项目的信息。你也可以在 LinkedinTwitter 上找到我,或者直接发邮件给我。我总是乐于聊天,或者合作新的令人惊奇的项目。

参考

https://www.grc.nasa.gov/www/k-12/airplane/nseqs.html

杨,s,梁,j,&林,M. C. (2017 年 10 月)。基于学习的视频布料恢复。IEEE 计算机视觉和模式识别会议论文集(第 4383–4393 页)。

卡萨斯博士&奥塔杜伊硕士(2018)。为交互式化身学习非线性软组织动力学。

汤姆普森,j .,施拉克特,k .,斯普雷赫曼,p .,&柏林,K. (2016)。用卷积网络加速欧拉流体模拟。arXiv 预印本 arXiv:1607.03597。

3 种常见的数据科学职业转变,以及如何实现这些转变

原文:https://towardsdatascience.com/3-common-data-science-career-transitions-and-how-to-make-them-happen-588c3618942f?source=collection_archive---------3-----------------------

当我学习物理的时候,我经常需要在谷歌上查找听起来很奇怪的技术术语。当我这样做的时候,第一个点击往往是维基百科的一篇文章。

但是,尽管维基百科的条目很棒,但它们似乎从来没有达到我的水平。它们几乎总是让我摸不着头脑,或者对我的用例来说太简单了。这种情况如此频繁地发生,以至于我忍不住称之为互联网定律:“没有一个技术性的维基百科条目能够同时具有可理解性和知识性”。

我认为许多数据科学职业建议(或求职/面试准备建议)都遵循类似的规律:有针对完全初学者的帖子,有针对资深软件工程师的帖子,还有旨在帮助初级数据科学家磨练技能的帖子。所有这些噪音使得许多有抱负的数据科学家很难知道在他们寻求过渡到该领域时应该在哪里投资时间。

这是我在与学员一起研究敏锐思维时关注的主要问题之一。虽然没有适合所有人的万能解决方案,但我发现我总是给大约 3 类不同的人相同的建议。

第一类:完全初学者

如果你刚刚进入数据科学领域,请记住这一点:这个领域发展非常快,所以我在这里给出的任何建议几乎肯定会在你准备好工作时过时。让人们在 2017 年被聘用的东西在今天已经不起作用了,今天的数据科学招聘标准与一两年后适用的标准之间的差距可能会更大。

现在,如果你想进入数据科学领域,并且还没有编码/STEM 背景,这里有一些建议:

  • 首先,保持开放的心态。如果你是一个完全的初学者,那么根据定义,你实际上并不知道什么是数据科学,所以这完全有可能根本不是你想要的工作。联系 LinkedIn 上的一些数据科学家,请他们喝杯咖啡&聊聊天。关注数据科学播客。成为一名数据科学家需要投入大量的时间和精力,所以仅仅因为你认为无人驾驶汽车很酷就一头扎进去并不是一个冒险的好理由。确保您了解数据科学不太光彩的方面,如数据争论和构建数据管道,这些占据了数据科学家日常工作的大部分。
  • 如果你决定前进,那太好了!你需要做的第一件事是学习 Python。拿个 MOOC,尽快,建个基础项目。当您对 Python 技能驾轻就熟时,可以学习如何使用 Jupyter 笔记本,并参加一些数据科学 MOOCs。如果你正在寻找更具体的指导,这篇博文展示了一条很好的学习之路。
  • 如果你真的是从零开始,瞄准一个全职的数据科学职位不一定是最好的主意。相反,瞄准更容易实现的目标:数据可视化或数据分析角色需求很大,是更容易进入市场的方式。它们通常涉及与数据科学家一起工作,并且一旦你获得了一些经验,就有可能在那个方向上横向移动。

如何打造自己的品牌:如果你已经准备好申请工作,你可能会惊讶地发现,打造个人品牌在数据科学领域异常重要。你可能会担心,因为你没有任何专业经验,或者没有计算机科学的研究生学位,品牌可能会成为一个问题。但这实际上可能是你最大的品牌优势:你是自学成才的开发人员/数据科学家,公司可以指望你快速学习并努力工作。问题是,你有责任去实现这个形象:这是一座陡峭的山,但回报绝对值得。

第二类:软件工程师

我遇到的有抱负的数据科学家中,可能有 20%是软件工程师。一方面,拥有将代码部署到产品中的经验,以及与开发团队合作的经验是一项巨大的财富。另一方面,对 fullstack 开发人员的需求如此之高,以至于公司有时最终会将软件工程师推向那个方向,即使他们受雇的角色在理论上涉及“数据科学”。所以你应该避免被归类为软件工程师而不是数据科学家。

其他一些想法:

  • 如果你还没有,考虑先把你目前的职位转移到一个更侧重于后端/数据库的方向。更加熟悉数据管道是一个良好的开端,可以帮助您构建核心数据操作技能。它还能让你重塑形象,把自己塑造成一个经验丰富的数据辩论家。
  • 机器学习工程可能是最接近数据科学相关的角色,这使得它更容易过渡到工作中。强调部署模型或将其集成到现有应用程序中的目标角色,因为这些将最有效地利用您现有的技能。你可以在以后的模型开发中加倍努力,但是这是一个很好的入门方式。
  • 你很可能不得不建立机器学习或数据科学项目来打动雇主。利用你的软件工程技能,将这些整合到你可以向招聘人员和技术领导炫耀的应用程序中。这可能特别有效,因为它没有留下任何想象空间,并且强调了你作为全栈数据科学家的潜力。
  • 需要记住的是:在你的转变过程中,你几乎肯定会减薪。即使是高级软件工程师,当他们转向数据科学时,通常也必须过渡到初级职位,但令人惊讶的是,他们中的许多人没有立即将这一点纳入他们的决定,并且在工作机会开始出现时感到失望。

如何打造自己的品牌:打造自己品牌最简单的方法之一就是利用你在软件开发方面的经验。你已经知道如何编写干净的、有良好文档记录的代码,以及如何与其他人合作,这是大多数初级职位申请者所不具备的优势。但是,为了有效地融入您的“清洁生产代码”品牌,您还必须了解数据科学中类似的最佳实践,因此,如果可以的话,请务必勾选这个框。

第三类:新计算机、数学或物理毕业生

如果你是刚毕业的本科生、硕士或博士,你可能在统计学和数学方面有很好的基础。但是你可能从来没有申请过科技行业的工作,你也不知道如何准备面试。此外,假设你在攻读学位期间一直从事编程工作,你很可能无法写出干净、组织良好的代码。

有几件事要记住:

  • 不,你在学位期间学到的 R 是不够的。不,如果你是一个物理学家,你赌你的 MATLAB 或 Mathematica 技能能让你在工业界找到一份工作,那也不会成功。学 Python 就好。
  • 你可能不知道但需要尽快学会的事情:协作版本控制(学习如何使用 GitHub 与其他人合作)、容器化(学习如何使用 Docker)和 devops(学习如何使用 AWS 或一些类似的服务在云上部署模型)。SQL 也是必须的。
  • 学习 Python 中的测试驱动开发。了解如何使用文档字符串。了解如何模块化您的代码。如果您还没有,请学习如何使用 Jupyter 笔记本。
  • 如果你在一个特别面向数学的领域,深度学习可能是一个很好的探索方向。但是您可能会发现,从更传统的“scikit-learn”类型的数据科学角色开始,然后迁移到深度学习会更容易。对你来说,最重要的是进入行业,尽快开始生产代码。

如何塑造自己的形象:尤其是如果你是数学或物理专业的学生,你最好的策略就是把自己塑造成一个拥有深厚理论知识的人。要做到这一点,你需要能够自信地解释各种模型是如何工作的,并且最好熟悉文献中最新的“热门”结果(如果你的目标是深度学习角色,尤其如此)。


警告:我提供的建议不会完美地适用于所有情况。一些软件工程师比其他人走得更远,一些完全初学者有数学天赋,可能最适合成为深度学习研究人员。但是它应该为你的技能发展提供一个良好的起点。

在一天结束的时候,无论你是软件工程师、刚毕业的学生还是完全的初学者,问自己的一个关键问题是在参数空间中什么职业轨迹最接近你。如果作为一名数据分析师或数据可视化专家的一段时间是你入门的必要条件,那通常是让你走上正确的长期轨道的最佳方式。

吸引读者注意力的 3 个专家数据可视化技巧

原文:https://towardsdatascience.com/3-expert-data-visualization-tips-for-grabbing-readers-attention-206d8c4621bf?source=collection_archive---------4-----------------------

你看这个帖子的那一刻,你就在评判它。在你意识到它之前,你已经在判断它看起来有多长,在页面和图像中什么颜色是可见的,视觉效果是否会引起任何情绪反应,等等。

不管你是谁,也不管你是否意识到了这一点,每当你看到一个视觉场景——无论是看网页、走进房间还是打开电视,你都会在十分之一秒内开始理解这个视觉体验。这被称为“前注意处理”——在你注意视觉之前,你确实在处理它们。

Combine text and images just like this using Visme. It’s free and easy.

最有效的数据可视化利用了人类是前注意力视觉动物的概念——在我们意识到我们被呈现的东西之前,我们已经开始理解事物,判断大小、形状、颜色、对比度等。

考虑到这一点,你应该仔细考虑你正在做的设计选择,以及你的视觉效果是否在注意力集中之前带来了清晰或者引起了混乱。你给预先注意大脑带来的清晰度越高,你就越有可能激励和引导用户继续探索你的内容,从而向他们展示更多的信息和知识。

这里有 3 个专家数据可视化技巧,我建议你在每个项目中仔细考虑,以最成功地抓住你预先注意的观众的注意力和兴趣。

专家数据可视化技巧

1 千瓦特

对于任何交流任务来说,你能做的最重要的事情就是知道你真正想说什么。这是我的“最差”缩写 KWYRWTS(发音为“k-whir-wits”)。它又长又难打,也不可能记住。但是,这是你能做的最重要的事情。在你能与任何人交流任何事情之前,你必须知道你的信息。这适用于生活的方方面面,不仅仅是工作。

例如,如果我去麦当劳,走到柜台前,开始谈论天气、政治,或者即使我半正题地谈论意大利面条和肉丸,我也是在浪费每个人的时间(更不用说惹恼排在我后面的人了)。我需要做我该做的事,那就是点一些汉堡和薯条。

那么 KWYRWTS 如何应用于数据可视化呢?我不能只决定数据在说什么——这不是用你的数字撒谎。关键是你需要理解你试图用你的视觉化来完成什么。

我们为什么要可视化数据?唯一的原因是揭示模式、异常值、趋势、相关性,并进行比较,这些在查看数字表时不容易(或根本不容易)发现。但是魔鬼就在这里的细节中。

例如,假设你的老板交给你公司 12 个季度的财务表现数据,并让你为你的 CEO 写一份报告。你是做什么的?您的第一反应可能是创建一个包含 12 个数据点的销售总额、利润和股价的折线图。但是这允许你用手头的数据来决定使用什么图表,共享什么数据等等。这不是一种战略方法。

正确的做法是首先弄清楚报告的目的是什么。问问你自己:

  • 正在调查哪些业务状况?
  • CEO 需要根据这份报告做出什么决定?
  • 你还能获得哪些数据来帮助她做决定?
  • 想象一下,答案是小配件部门在 12 个季度中有 6 个季度都在亏损,她需要考虑是关闭它、投资它还是不管它?
  • 现在你会怎么做?

好吧,也许你需要做一份季度报告,但要按部门分列……也许这不是关于总销售额,而是关于利润……或者也许这完全是关于这样一个事实,即世界对小部件的需求已经下降,因为当汽油价格低时,它总是这样,但即将到来的汽油价格高峰肯定会导致小部件销售的反弹,所以燃料价格预测数据显示以及对小部件销售的预测将是最合适的。

KWYRWTS 是任何项目中最重要的第一步。知道你的首席执行官的注意力持续时间很短,她必须在午餐前做出 20 个艰难的决定,所以她的预先注意力可能比大多数人都更精细,这意味着你必须非常清楚图表在第一个十分之一秒对她说了什么,以及对数字进行更深入的调查可能会揭示什么。如果她看到倾斜线,但它们是错误的倾斜线,她在 1/10 秒内的判断可能会不正确。

2 设计简单

Combine text, icons and images just like this using Visme. It’s free and easy.

设计师凭直觉知道少即是多。拥抱空白。眼睛需要在所有内容之间寻找一个位置。不要压倒你的观众。

这种更简单的视觉美感有很多论据。没有什么比你预先注意的听众更重要了。正如我所说的,当有人浏览你的数据可视化时,他们正在对它进行评判。在那一瞬间(潜意识里)他们在对自己说什么?

  • “什么最重要?”
  • “我应该在这里看什么?”
  • “我应该忽略什么?”
  • “这对我来说是不是太复杂了?”
  • “这是不是太长了,不值得我浪费时间?”
  • “这看起来可信吗?”
  • 还有更多…

研究表明信息图设计中最重要的因素之一是理解受众的周边视觉——用户一眼看到的东西将决定他们下一步看哪里。换句话说,以一种预先注意的方式,你不仅需要把他们吸引到你的视觉化图像上的一个特定点,而且要意识到你需要给他们一些下一步要看的东西!

我能想到的解释这个想法的最好的例子是地图界面。您正在绘制餐馆的位置和排名。所以你在地图上有一些点,但是你也想指出它们有多好,这样一看,你的观众就可以确定最好的餐馆。

想象一下,在这张地图上有 100 家餐馆,每家餐馆的图标旁边都有多达 5 颗星。那会分散你的视觉注意力,并且会让你的用户不知所措——尤其是在注意力集中之前。你最好不要考虑排名,或者只使用颜色或对比来表示相对得分,而不是试图在界面上挤进那么多视觉信息。

3 标签

Combine text and shapes to create visuals using Visme. It’s free and easy.

正如上一篇数据可视化技巧文章中提到的,标签越少越好。出于类似的原因,但它不仅仅是留下空白,用更少的元素减少视觉混乱。你应该始终认为你的标签是“最好拥有的”,需要在图形中进行讨论。假设没有标签,除非绝对需要。

对我来说,完美的图表除了上面的一些形状之外什么也没有。一切都是相对的。即使我没有实际值,我也能知道一个东西比另一个东西大多少。现在你的老板和你的数据人员会强烈反对这种哲学。他们会说,没有数字的图表完全是浪费时间,绝对是荒谬的。好吧,那么,你会问他们,需要贴什么标签?(默认什么都没有,现在说服我必须包括什么。)

在这一点上,他们会说一切都需要标记,轴线需要 20 个刻度线,我们需要背景中的网格,这样我就可以看到每个点在图表中的位置,这样我就可以在 10%的精度内确定每个点的实际值。

猪食。如果什么都重要,那么什么都不重要。

只标注必须标注的内容。在图表上标出四个重要的点。每个轴可能只需要两个刻度线(0 和最大值),轴可能是浅灰色的,而不是像其他标签一样的粗体黑色,您可能会删除数据后面的网格线。

事实上,所有的标签都可以是浅灰色或更小的,除了一个点代表这个图表的全部目的。(还记得 KWYRWTS 吗?这个列表中的第一个数据可视化技巧是什么?这将有助于指导什么被贴上标签,以及如何在视觉上强调它。)哦,当我们在做的时候,让我们把那个键放在角落里,用内嵌标签来解释图表上的任何颜色和形状。

你的预先注意的观众现在有更少的事情要判断,并且更有可能在宝贵的 1/10 秒内找到正确的事情来看,这将帮助他们停留和看得更久,并专注于你需要他们专注的地方。

把你的下一个项目看作是测试你 1/10 秒设计技巧的机会。试着快速看一下你自己的图表。瞥一眼它,试着预先注意地判断它。这很难做到,但是在设计的时候考虑你的快速浏览的观众和你的深度研究的观众是非常有效的。因为,别忘了,每个人都是前者,而只有部分人是后者。

本帖 原版 最早出现在 Visme 的 视觉学习中心

关于时间序列预测的 3 个事实让有经验的机器学习从业者感到惊讶。

原文:https://towardsdatascience.com/3-facts-about-time-series-forecasting-that-surprise-experienced-machine-learning-practitioners-69c18ee89387?source=collection_archive---------2-----------------------

ime 序列预测是数据科学领域中的一匹黑马:它是商业中应用最广泛的数据科学技术之一,广泛用于金融、供应链管理以及生产和库存规划,并且在统计学和动态系统理论中有着良好的理论基础。然而,与图像识别和自然语言处理等更近、更受欢迎的机器学习主题相比,它仍然处于局外人的地位,在数据科学和机器学习的入门课程中,它很少或根本没有受到任何对待。

我最初接受的培训是神经网络和其他机器学习方法,但在我的职业生涯让我成为需求预测专家后,我倾向于时间序列方法。

最近几周,作为我的团队努力扩展传统时间序列预测能力并进入基于 borader ML 的业务方法的一部分,我发现自己与经验丰富的 ML 工程师进行了几次讨论,他们通常非常擅长 ML,但对时间序列方法没有太多经验。

从这些讨论中,我意识到时间序列预测有几件事是预测界认为理所当然的,但对其他 ML 实践者和数据科学家来说是非常令人惊讶的,尤其是与处理标准 ML 问题的方式相比。

这种脱节的症结在于,时间序列预测可以被视为一个监督学习问题,因此整个 ML 方法——回归、神经网络、支持向量机、随机森林、XGBoost 等……—可以扔向它。但同时,时间序列预测问题有几个独特的怪癖和特质,使它们不同于监督学习问题的典型方法,这需要 ML 工程师重新思考他们建立和评估模型的方法。

根据我最近的讨论,以下是 ML 从业者在应对预测挑战时遇到的 3 个最大的惊喜:

每次想要生成新的预测时,都需要重新训练模型:

对于大多数 ML 模型,你训练一个模型,测试它,必要时重新训练它,直到你得到满意的结果,然后在一个保留的数据集上评估它。在您对模型的性能感到满意之后,您就可以将它部署到生产中了。一旦投入生产,您就可以在新数据到来时对其进行评分。几个月后,如果有大量新的训练数据,您可能需要更新模型。模型训练是一次性的活动,或者最多是定期进行,以保持模型的性能,从而考虑新的信息。

对于时间序列模型,情况并非如此。相反,每当我们想要生成新的预测时,我们都必须重新训练我们的模型。为了理解为什么会发生这种情况,请考虑下面的例子:

我们将使用 ARIMA 模型来预测澳大利亚的季度啤酒销量(数据集取自 Hyndman 的预测包 R)。首先,我们将根据 1956 年至 1970 年的数据训练一个模型,然后根据 1970 年至 1973 年的数据进行测试。使用季节性 ARIMA(1,1,1)(0,1,1)模型,我们可以得到一个相当不错的预测(MAPE =1.94%)(图 1)。

接下来,我们将使用相同的模型预测一直到 1993 年的销售情况。从图 2 中可以看出,预测不再那么好:预测继续遵循 1970~1973 年的模式,但实际模式已经改变——我们从 1956 年到 1974 年看到的持续趋势在 1974 年后开始减弱,季节性变化的幅度也开始变化。如果你用同样的 ARIMA(1,1,1)(0,1,1)来预测 1990 年到 1993 年的销售额,你会得到更差的精度(MAPE = 44.92%)。

相反,我们将不得不重新设计第二个模型,考虑新的数据和销售模式的变化。这一次,我们将根据 1956 年至 1990 年的数据训练一个 ARIMA(1,1,1)(1,1,2)模型,并使用它来预测 1990 年至 1993 年的值,然后我们会得到一个更合理的 MAPE 值,与我们第一次实验中获得的值更接近(MAPE=5.22%)。

为了直观地理解为什么会发生这种情况,首先考虑一个经典的 ML 任务:对猫图像进行分类。猫的视觉属性随着时间的推移是稳定的(除非我们开始考虑进化的时间尺度),所以当我们训练神经网络来识别猫的图片时,一个隐含的假设是,定义猫的特征在可预见的未来将保持不变。我们不期望猫在下周、明年、甚至十年后会有所不同。给定足够的数据,我们本周训练的模型在可预见的未来也足够好。

用统计学的说法,我们说猫图片特征的分布是一个平稳分布,这意味着它的属性,如均值和标准差,随着时间的推移保持不变。

现在回想一下,当开发数据集的分布和生产数据集的分布不同时,ML 项目中的一个常见陷阱就会发生,导致模型在生产中失败。对于时间序列,开发数据集和生产数据集几乎总是来自不同的分布,因为真实世界的商业时间序列(如澳大利亚啤酒销售)数据不是稳定的,并且分布的统计属性会随着新的实际数据的出现而不断变化。

解决这个问题的唯一方法是在每次获得新数据时重新训练模型。请注意,这与持续学习不同,在持续学习中,已经训练好的模型会随着新数据的到来而更新。每次您想要生成一个新的预测时,您实际上是在从头开始重新训练一个新的模型(尽管这将是一个有趣的研究课题,看看连续学习是否可以应用于时间序列预测)。

从实践的角度来看,这意味着将预测算法部署到生产中与部署其他 ML 模型是非常不同的。你不能只是部署一个静态模型并对其评分,模型服务的概念对时间序列预测没有意义。相反,您需要确保训练和模型选择可以在生产中即时完成,并且您必须确保您的整个训练集可以在生产中存储和处理。这让我想到了这篇博文的第二点:

有时,您必须取消培训/测试拆分:

让我们回到寻找 ML 模型的基本方法:通常你使用训练集建立一个模型,然后在测试集上评估它。这要求您有足够的数据来留出一个测试集,并且仍然有数据来构建模型。但是与图像处理或 NLP 中使用的数据集相比,时间序列数据通常非常小。某一产品在某一给定地点的两年周销售数据只有 104 个数据点(几乎不足以捕捉任何季节性)。一个季度的经济指标数据,10 年来只有 40 个数据点。对于如此小的数据集,我们没有足够的时间留出 20%或 30%的数据用于测试。交叉验证也没有多大帮助,因为根据您想要使用的算法,CV 在最好的情况下很难为时间序列模型建立,在最坏的情况下根本不适用(想想看:试图使用 1 月和 3 月的训练数据预测 2 月的值是没有意义的,这相当于泄漏)。

因此,我们转而采用 AIC、AICc 或 BIC 等信息标准。这些是模型选择度量,本质上是试图通过分析来近似测试步骤。这个想法是,我们没有一个经验的方法来确定一个模型的泛化误差,但我们可以通过使用信息理论的考虑来估计这个误差。

在实践中,我们训练一组预先确定的模型,然后选择具有最低 AIC 或 BIC 的模型。除了允许用有限的数据训练模型之外,当我们想要自动生成预测时,使用这样的模型选择标准是非常方便的。例如,在零售业中,我们必须对数百万个单独的时间序列进行预测是很常见的——一个大型的再培训者将在数百个地点运送 2 万~ 3 万件产品,从而产生数百万个单独的时间序列(每个产品/地点组合一个时间序列)。

在这种情况下,每个单独的数据集都很小,但您必须处理数百万个数据集,因此分析师或工程师不可能对每个系列的测试集进行评估,自动模型选择就变得至关重要。

许多预测工具都使用这种方法:Rob Hyndman 在 R (1)中流行的预测包在其 auto.arima()ets() 函数中使用 AIC 进行模型选择,许多商业需求预测应用程序(如 Oracle 的 RDF)使用 BIC 进行模型选择。参见 Hastie 和 Tibshirani (2)关于使用 AIC 和 BIC 进行模型选择的介绍。

预测的不确定性与预测本身一样重要,甚至更重要:

将预测与其他监督学习任务区分开来的另一点是,你的预测几乎总是会出错。在给定足够的训练数据的情况下,处理图像分类问题或 NLP 问题的人可以合理地期望最终准确地分类所有新的输入样本。您所要做的就是确保您的训练数据和真实世界的数据是从同一个分布中采样的。正如我在第一点和第二点中提到的,在商业预测应用程序中通常不是这样,你的预测几乎总是错的。您准确预测下周将售出多少件 M 号阿迪达斯红色衬衫的可能性有多大?所以你需要的不仅仅是一个点的预测,还有对预测不确定性的衡量。

在需求预测和库存应用程序中,预测的不确定性对于使用预测的应用程序至关重要。预测的不确定性(由预测间隔或预测分位数表示)是您将用来计算安全库存的因素,也就是您希望保持的额外库存数量,以确保您不会失去任何客户。

他们在金融时间序列建模中进一步发展了这一思想,他们实际上有专门为时间序列的不确定性建模而建立的模型类别,而不是时间序列本身,如 ARCH 和 GARCH 模型。

马里达吉斯等人 (3)谈到地铁的不确定性和椰子的不确定性。椰子不确定性,暗指当某人在海滩上时,一个椰子意外地落在他的头上,是“未知的未知”的不确定性,无论我们如何努力,都无法预测的事件。

更一般地,一些时间序列表现出不良的不确定性,这是不可预测的。预测误差的分布不遵循任何已知的分布。此类信息对于做出判断性决策很有用,但不能建模和用于预测。

另一方面,地铁的不确定性(暗指乘坐地铁从 A 到 B 需要多长时间的不确定性)遵循一个已知的分布,比如正态分布或泊松分布,并且可以被建模和用于将预测限制在一定的范围内,即使无法预测精确的值。

那些习惯于在其他 ML 领域中可实现的非常高的准确度的人,更重要的是,被当前的机器学习炒作所吸引的决策者和商业领袖,需要明白,通常时间序列模型所能达到的最好的结果就是地铁不确定性。坚持认为如果我们能找到正确的算法和正确的数据,足够深的神经网络或足够丰富的非结构化数据集,我们将能够实现更好的预测,这是危险的误导。有时,我们能得到的最好结果是可管理的不确定性,我们应该相应地构建我们的数据管道和决策支持系统。

参考:

(1)https://cran . r-project . org/web/packages/forecast/forecast . pdf

(2) Hastie,Tibshirani,Friedman,统计学习的要素,第 7 章(第 228-229 页)

(3) Makridakis,s .,Hogarth,R.M. & Gaba,A. (2009)经济和商业世界中的预测和不确定性。国际预测杂志

现实中自举 B2B 创业的 3 个严酷教训

原文:https://towardsdatascience.com/3-harsh-lessons-in-reality-from-bootstrapping-a-startup-906fcb4c46cf?source=collection_archive---------7-----------------------

My first lesson in entrepreneurship.

如果你想了解更多关于我的创业公司*实际上是做什么的,可以查看我的* LinkedIn 简介 或者阅读一些我的 其他文章 。我不会在这里讨论这个问题。

自从我们创立了我们的 B2B 软件创业公司,已经四年了,终于,终于!成功的未来看起来已经成熟。

我写这篇文章主要是为我自己,作为我希望早点知道的重要事情的宣言。我下面描述的大部分内容已经被其他人说过了。但是谁知道呢,也许这些来自我自己经历的想法会在某个时候,以某种方式帮助你们中的一个读者。

第一课——努力工作和混乱的工作/生活平衡

我一直喜欢努力工作,但从来没有这么努力,这么长时间,压力这么大,回报这么少。

你可能已经知道了这一点,但首先也是最重要的一点是,创业与有足够资金/收入让你顺其自然的日常工作是完全不同的。如果你停止划船,你会沉下去——而且你会激怒仍在向前推进的队友。

这并不意味着你应该持续工作,相反,找出你和你的团队表现最佳的时间,加倍努力。用你的非最佳时间充电回到最佳状态。那些充满渴望的文章建议你“不要再这么辛苦地工作了,多看点书”,只有在阅读能帮助你恢复最佳效率的情况下,这些文章才会有帮助。如果你在高效的精神状态下看书或听播客,你是在浪费时间。

在不同的交叉状态(一天中的时间、锻炼、阳光、食物、睡意、人际交往、咖啡因…其他物质)下监控你的心智能力和能量。对我来说,睡眠、锻炼和咖啡因是提高表现的关键因素,在我喝了第一杯啤酒后,我不再费事去尝试编码了(现在啤酒点在晚上很晚才开始)。

争取每周至少 60 小时的有效工作时间。让你的队友每天交流进展情况——努力工作会传染,你需要在团队中建立信任,每个人都在努力。

做好让你的朋友和家人偶尔失望的准备。让他们为即将到来的失望做好准备。想办法让人们知道你仍然关心他们,但是你不能参加所有的晚宴/社交活动。

然后,创造一个你和你的朋友/家人仍然可以享受的新常态。创业本来就是自私的——承认吧。向自己承认,向自己在乎的人真诚道歉。和他们一起寻找与你疯狂的时间表相适应的新的互动方式。

例如,我现在出差时一定要飞经芝加哥,这样我每次都可以和家人呆几天。这对于出席重要活动/节日特别有用。

从让你沮丧的想法和人际交往中抽身。你必须能够接受并消化对你的产品市场适应性或商业模式的严厉但必要的批评——这是另一回事。相反,我指的是来自他人(以及你自己)的负面压力所带来的慢性压力。做一个绝地大师,让那些感觉过去吧。说起来容易做起来难。

Hate, haters gonna.

第二课——永久的失望,被短暂的成功打断

对于一个 B2B 创业公司来说,寒假期间是最糟糕的。在销售、合作和概念验证方面取得的所有进展都将立即陷入停滞(看似无限)。

在那些挫折的时候——或者当所有的进步都停滞不前的时候——反思一下。想想你已经完成的更大规模的轨迹。如果你有付费客户,花点时间感谢你的幸运星。

然后… 戳戳你失败的伤口,从每个角度,尽你和你的团队所能容忍的。从错误中学习通常需要从不同的角度详细探索历史。

是你的产品吗?你的推销?没有冠军?你的营销存在?秘密竞争对手?意想不到的观众?

你的早期团队必须能够建设性地处理持续的失望和痛苦的失败事后调查。在早期阶段,提供 Kool-Aid 一点用都没有——也许以后当你有一两轮资金和足够的专家来解决问题时。

Afterwards, laugh it off.

为了战胜长期的失望,不断为未来创造希望。下一个有希望的领导者,你当前的具有新的杀手级功能的概念验证项目,即将到来的黑客马拉松,协同加速器计划,或者一篇关于你的目标市场即将扩张的文章。无论以何种形式出现,希望*能让你和你的团队继续前进,度过这段痛苦的时光。*

第三课——对于一个 B2B 创业公司,每个团队成员都有两个简单的目标

  1. 寻找/结束新的机会。
  2. 让现有客户满意。

我是初创公司的技术联合创始人,本质上是一名数据科学家。四年前,我认为我可以简单地在产品上编码——也许我会做一些会议演讲,但是销售产品会由其他人来处理。

呀。

这是我现在所知道的——你的公司成功的唯一途径是你销售你的产品/服务。没有东西会自己卖出去——你必须投入工作。创业公司的每个人,从董事会/首席执行官到每一个工程师,都必须专注于上面的 1 和/或 2。不要把时间浪费在无法实现这些目标的人身上。

He’s got a point there.

你会遇到很多想要帮助你的人——尤其是在业务发展和产品/市场匹配方面。我再重复一遍——不要在那些不致力于为你寻找新客户的顾问/投资者/加速器身上浪费时间。这需要他们个人投入专业资本——但如果他们不能主动向他们关系网中的其他人担保你的公司/产品,他们就不是真的相信你(或者他们有利益冲突)。

这并不意味着每个人都要做直销/客服。显然,技术工程师是来设计/制造产品的,但是如果他们把目标 1/2 记在心里,他们会做得更好。他们会更乐意进入自己的网络来帮助创造新的机会。

还有很多要讨论的

我希望我有时间和耐心写更多,但至少我已经到这一步了。现在是时候充电了,重新开始工作。

致我的 Tag.bio 队友、家人和朋友——谢谢你们。

如何在 RStudio 上更新 R 的 3 种方法(适用于 Windows 和 Mac)

原文:https://towardsdatascience.com/3-methods-how-to-update-r-on-rstudio-for-windows-mac-13ec2005aeb1?source=collection_archive---------2-----------------------

你上次更新 R 和 RStudio 是什么时候?

一年前安装了 RStudio 和 R,之后再也没有更新过。今天我刚刚注意到我不能安装新的 R 包,因为我的旧 R 版本。因此,我探索了一些更新 R 的方法,并希望与也希望在 RStudio 上更新 R 的人分享。

问题是

RStudio 和 R 不能自行更新,因为一些包在切换到新版本后可能无法工作(如果出现问题,您仍然可以在 RStudio 中降级 R 版本)。安装新版本后,以前安装的软件包将不会进入下一个版本。因此需要额外的程序来移动包装。

这里有 3 种方法可以在 RStudio 中更新 R 版本。注意,我们需要移动 install R 包,我将在最后展示如何移动。

在 RStudio 上更新 R 的 3 种解决方案

解决方案 1)手动安装

第一种方法是从 R 网站> CRAN 下载新版 R。然后重启 RStudio。新的 R 版本会自动加载。

The new R version appear right after I install R and restart RStudio — (Image by author)

解决方案 2)仅 Windows 使用 installr

installer是帮助安装和更新软件的 R 包。

更新 R 所需的 R 代码是:(代码归功于 Cara Wogsland

install.packages("installr")
library(installr)
updateR()

你可以在 R-Statistics 网站上找到如何使用 installr 更新 RStudio 的教程。

解决方案 3)仅 Mac 使用更新程序

与 installr 类似, updateR 是帮助在 Mac OS 上更新 R 的包。

你需要的 R 代码是这 5 行:(代码归功于jroberayals

install.packages('devtools') #assuming it is not already installed
library(devtools)
install_github('andreacirilloac/updateR')
library(updateR)
updateR(admin_password = 'Admin user password')

你可以在这个博客上找到关于如何使用更新包的深入教程。

如何移动先前安装的 R 包

这是 Mac OS 用户(使用上述解决方案 1 或 3)的说明。对于 Windows 用户,installer包将为您完成这项工作

(功劳归于 RyanStochasticmicstr ):

1。将所有文件夹从旧的 R 版本移动到新的 R 版本。

/Library/Frameworks/R.framework/Versions/x.xx/Resources/library

一次用新旧 R 版本替换 x.xx。

注意,您必须只移动当前不在目标文件夹中的包(因为那些是基础包,您不想破坏它们)。但是如果您已经替换了所有内容,下一步将为您解决这个问题。

如果找不到正确的路径,可以运行这个命令来检查:installed.packages()

2。更新被移动的包

在 r 中运行以下命令,对弹出的每个问题键入“y”。

update.packages(checkBuilt=TRUE)

3.在 R 中键入以下命令,检查是否一切顺利

version
packageStatus()

就是这样!希望你们成功更新 r。如果没有,请查看下面的参考链接。

注意:如果您在 Jupyter Notebook 中使用了 R 和 IRKernel,升级 R 将导致 Jupyter Notebook 中的 R 不可用。按照以下步骤重新安装 IRKernel,它将再次工作。

参考资料:https://stack overflow . com/questions/13656699/update-r-using-r studio

最初发表于 沃拉特纳珀斯

交互式数据可视化的 3 条规则

原文:https://towardsdatascience.com/3-rules-for-interactive-data-visualizations-a-showcase-with-r-and-highcharts-e452f5c37f44?source=collection_archive---------8-----------------------

一个展示 R 和 Highcharts 的橱窗

为什么你应该让可视化互动。

交互式数据可视化更好的原因有两个:

  • 更多信息。通过使用工具提示、点击事件、过滤能力等,交互性允许你嵌入比静态可视化更多的信息。
  • 更容易感知更复杂的数据。只在需要时显示某些信息并在不需要时隐藏的可能性将使用户只关注他们正在寻找的细节。因此,可视化可能包含更多的信息,可以快速抓住关键点。
  • 促进探索。每个人都喜欢与他们调查的对象互动。响应性数据鼓励人们探索更多,从而获得更多见解。
  • 更好玩。嗯,事实就是这样:厌倦了几十个静态的 PowerPoint 演示文稿或枯燥的图表互动给我们的(企业)生活带来了一点多样性:)。

完美互动可视化的 3 条规则。

具有交互式数据可视化的良好 UX 依赖于 3 个主要规则:

  • 先概述一下,
  • 缩放和过滤,
  • 然后是细节点播。

这个神圣的三位一体也被称为 Shneiderman 的可视化咒语,他在 1996 年制定了这个咒语。

为了展示咒语的真正力量,让我们用不太标准的图表来探索一些关系。我查看了主要厂商 2017 年智能手机个人电脑平板电脑的出货量。我很想在桑基图上尝试一下,在我看来,桑基图非常强大,不仅可以显示流量,还可以显示关系。

首先,一些数据争论。最初的文件可能有所有 xls 格式讨厌的主要问题:多个标签,标题,缩进和非常不整洁的格式。在将文件限制为 1 个选项卡并将它们转换为。csv,对于所有随后的数据争论,我使用 R,这最终是我的最爱。

对于 Sankey chart,我将使用由 Joshua Kunst 制作的 R 中的high chart库作为 Highcharts javascript 库的 R 包装器。您实际上不需要任何 Javascript 知识,但只需一点 JS 就可以对其进行显著扩展。

第一个简单的默认图表如下所示:

highchart() %>%
  hc_add_series(data = sales, type = "sankey",
                hcaes(from = product, to = company, weight = units))

看起来不坏,但只要遵循 3 步咒语,它会变得更好,所以让我们继续吧!

先概述一下

我们的原始图表有点太详细,彩色流显示了每个依赖关系,这比“先概述”要多一点。此外,它不会让您轻松地第一时间了解正在发生的事情。为了解决这个问题,让我们到目前为止使用一种颜色,不要被细节分散注意力,按降序排列产品和公司,这样人们可以立即看到排名。

除此之外,我改变了“弯曲度”,使流动更加透明,覆盖了默认值:

hc_plotOptions(sankey = list(
      colorByPoint = FALSE,
      curveFactor = 0.5,
      linkOpacity = 0.33
    ))

缩放和过滤

有时候,咒语的一部分并不适用于特定的图表或特定的数据。我们的桑基图表没有那么大,过滤值会对公司比较产生负面影响。

另一方面,突出感兴趣的对象服务于相同的目的。默认情况下,每个流都会高亮显示。我希望能够突出显示每个产品或公司,以了解未来的流入/流出。

在这一部分,我们需要 R 中的纯 JavaScript 来配置鼠标悬停在节点上的事件:

hc_plotOptions(sankey = list(
point = list(
      events = list(
        mouseOver = JS(
          "function () { if (this.isNode) {
      this.linksFrom.forEach(function(l) {
      l.setState('hover');
      });
      this.linksTo.forEach(function(l) {
      l.setState('hover');
      });
      }
      }  "

        ),
        mouseOut = JS(
          "function () { if (this.isNode) {
      this.linksFrom.forEach(function(l) {
      l.setState('');
      });
      this.linksTo.forEach(function(l) {
      l.setState('');
      });
      }
      }  "

        )
      )
    )
)

但是,如果我们使用另一种图表类型,例如,堆积条形图,那么过滤效果会很好:

highchart() %>%
  hc_add_series(data = sales_stacked, 
                type = "column",
                hcaes(x = product, y = units, group = company)) %>%
  hc_plotOptions(column = list(stacking = "normal")) %>%
  hc_xAxis(categories = unique(sales_stacked$product))

通过点击(不点击)图例,你可以过滤公司,这是 Highcharter 中条形图的默认行为。因此可以对图表进行过滤,只显示感兴趣的公司。

详情点播

在这里,我们将充分利用互动的力量,让视觉化变得完美。用户可能对哪些细节感兴趣?它可以是:

  • 按供应商和产品列出的出货量。
  • 特定公司装运的特定产品的单位数量。
  • 产品在公司出货量中所占的份额,以及公司在特定产品销售中所占的份额。

前两个是由工具提示中的高图表的默认行为提供的。后者应该由我们来写:

hc_plotOptions(sankey = list(
     tooltip = list(
     pointFormat =  "{point.fromNode.name} → {point.toNode.name}: <b>{point.weight}</b> Mio units<br/>
{point.product} contribute <b>{point.product_share} %</b> in {point.company} sales: <br/>
    {point.company} contributes <b>{point.company_share} %</b> in {point.product} sales "
    )
)
)

如果利益相关者需要静态格式的图表,我还会添加一个选项来下载图像形式的图表:

hc_exporting(enabled = TRUE,
               buttons = list(
                 contextButton = list(
                   y = -30
                   )
               ))%>%
  hc_chart(spacingTop = 30)

最后的结果是:

你可以在整篇文章中看到应用咒语是如何显著改善图表的,现在它看起来很好。

此外,你可能注意到了最后一个图表,它是响应性的,更能吸引你的注意力,与之前的普通 gif 相比,你可能更渴望探索它。这显示了互动的力量。

你可以在 GitHub 上找到所有代码。

最后一个图表完全是用 JavaScript 编写的,但只是为了嵌入到介质中。你几乎可以完全用 R 编写代码,只需为事件添加一点 JS,如我的 GitHub repo 所示。很多时候,你可以在 Google 和 stackoverflow 的帮助下找到需要的代码,而不需要深入研究 JS。

自然语言处理中单词嵌入的三大法宝

原文:https://towardsdatascience.com/3-silver-bullets-of-word-embedding-in-nlp-10fa8f50cc5a?source=collection_archive---------1-----------------------

Credit: https://pixabay.com/en/books-stack-book-store-1163695/

单词嵌入是解决许多自然语言处理问题的银弹。现代的 NLP 架构大多采用了单词嵌入和放弃单词包(BoW)潜在狄利克雷分配(LDA)、潜在语义分析(LSA) 等。

看完这篇文章,你会知道:

  • 单词嵌入的历史
  • 文字嵌入设计
  • 应用现成的单词嵌入模型
  • 嵌入可视化
  • 拿走

单词嵌入的历史

传统上,我们使用词袋来表示特征(例如 TF-IDF 或计数矢量化)。除了 BoW,我们可以在单词特征上应用 LDA 或 LSA。然而,它们也有一些局限性,如高维向量、稀疏特征等。单词嵌入是低维向量中的一个稠密特征。在大多数自然语言处理问题中,单词嵌入提供了更好的向量特征。

2013 年,Mikolov 等人使单词嵌入流行起来。最终,单词嵌入是 NLP 中最先进的技术。他发布了 word2vec 工具包,并允许我们享受美妙的预训练模型。后来,gensim 提供了一个惊人的包装器,以便我们可以采用不同的预训练的单词嵌入模型,包括 Word2Vec(由谷歌),GloVe(由斯坦福),fastText(由脸书)。

在 Tomas 等人推出 Word2Vec 的 12 年前,Bengio 等人发表了一篇论文[1]来处理语言建模,这是单词嵌入的最初想法。当时,他们把这个过程命名为“学习单词的分布式表示”。

Capture from A Neural Probabilistic Language Model [2] (Benigo et al, 2003)

2008 年,Ronan 和 Jason [3]引入了预训练嵌入的概念,并表明这是一种解决 NLP 问题的惊人方法。直到 2013 年,Tomas 发布了预训练模型(word 2 vec ), word embedding 才开始出名。

Capture from A Unified Architecture for Natural Language Processing [3] (Collobert & Weston, 2008)

时间线:

  • 2001 年:Bengio 等人提出了单词嵌入的概念
  • 2008 年:罗南和杰森引入了预训练模型的概念
  • 2013 年:Mikolov 等人发布了预训练模型 Word2Vec

文字嵌入设计

低维

Photo Credit: https://www.foodnetwork.com/recipes/food-network-kitchen/four-layer-birthday-cake-3363221

为了解决高维问题,单词嵌入使用预定义的向量空间如 300 来表示每个单词。出于演示的目的,我使用三维来表示以下单词:

  • 苹果:[1.11,2.24,7.88]
  • 橙色:[1.01,2.04,7.22]
  • 汽车:[8.41,2.34,-1.28]
  • 表格:[-1.41,7.34,3.01]

如预定义的向量空间(即,在上面的演示中为 3),维度(或特征)的数量是固定的,无论语料库有多大。与 BoW 相比,当唯一字增加时,维数会增加。假设我们的文档中有 10k 个唯一的单词,BoW 中的特征数量是 10k(没有过滤高/低频单词),而在我们的演示中维度可以保持为 3。

语义关系

Photo Credit: https://gointothestory.blcklst.com/similar-but-different-c722f39d923d

通常,单词向量编码单词之间的语义关系。这是单词嵌入的一个非常重要的概念,因为它有利于处理自然语言处理问题。词向量如果有相似的意思就会闭合。比如买和买会更近。与 BoW 不同,它只代表 0 或 1(表示有一个词或没有接近),它不能代表两个词是否有相似的意思。

在上面的例子中,你可能会注意到苹果的向量和橘子的向量比其他的更接近,而苹果的向量相对远离汽车的向量。

【连续词袋】&

Mikolov 等人提出了两种新的架构[4],这两种架构降低了计算复杂度并包含了额外的上下文。

CBOW 就是在目标词( w )前后同时使用 n 个词。例如,“词向量编码词之间的语义关系”。如果窗口(n)是 3,这里是预测列表的子集:

  • 情况 1,单词前:{Empty},单词后:(单词,向量,编码),预测单词:“the”
  • 案例 2,词前:(the),词后:(向量,编码语义),预测词:“词”

Skip-gram 使用相反的方法,使用目标单词来预测目标单词前后的 n 个单词。例如,“词向量编码词之间的语义关系”。如果窗口(n)是 3,这里是预测列表的子集:

  • 案例 1,预测单词:“the”,单词:(单词,向量,编码)
  • 案例 2,预测单词:“单词”,单词:(向量,编码,语义)

Capture from Efficient Estimation of Word Representations in Vector Space (Tomas et al., 2013)

阴性采样

而不是利用所有其他单词作为负面标签训练记录。Mikolov 等人提出使用合适的少量负训练记录来训练模型。从而使整个操作变得更快。

如果你不熟悉负抽样,你可以查看这篇文章了解更多信息。

应用现成的单词嵌入模型

介绍了历史和模型结构,我们如何使用单词嵌入来解决自然语言处理问题?

有两种处理单词嵌入的方法:

  • 利用现成的模型
  • 构建特定领域的模型。

本文将采用第一种方法。选择 3 个知名的预训练模型,并利用 gensim 加载这些模型。著名的 NLP 库 Gensim 已经实现了处理这 3 种模型的接口。为了简单起见,你可以用我的包装器来加载这三个模型。

Word2Vec

这个单词向量是在谷歌新闻上训练的,由谷歌提供。基于来自谷歌新闻数据的 1000 亿个单词,他们训练了 300 个维度的模型。

Mikolov 等人使用 skip-gram 和负采样建立了这个模型,该模型于 2013 年发布。

word_embedding = WordEmbedding()
word_embedding.load(source='word2vec', file_path=word2vec_file_path)print(word_embedding.get_vector(source='word2vec', word='apple'))

输出

[-0.06445312 -0.16015625 -0.01208496  0.13476562 -0.22949219  0.16210938
  0.3046875  -0.1796875  -0.12109375  0.25390625 -0.01428223 -0.06396484
...]

手套

斯坦福大学 NLP 团队提供了单词表示的全局向量( GloVe )。斯坦福大学基于 2,6,42,840 亿个令牌提供了从 25,50,100,200 到 300 个维度的各种模型。

斯坦福大学自然语言处理小组应用词-词共现概率来构建嵌入。换句话说,如果两个词同时出现很多次,这两个词可能有相似的意思,所以矩阵会更接近。

word_embedding = WordEmbedding()
word_embedding.load(source='glove', file_path=glove_file_path)print(word_embedding.get_vector(source='glove', word='apple'))

输出

[ 0.52042001 -0.83139998  0.49961001  1.28929996  0.1151      0.057521
 -1.37530005 -0.97312999  0.18346     0.47672001 -0.15112001  0.35532001
...]

快速文本

fastText 由脸书发布,提供 3 款 300 尺寸。用子词训练预训练模型中的一个。比如“差”,它会被“di”、“dif”、“diff”等等训练。

word_embedding = WordEmbedding()
word_embedding.load(source='fasttext', file_path=fasttext_file_path)print(word_embedding.get_vector(source='fasttext', word='apple'))

输出

[ 0.26407328  0.30484504  0.04900438 -0.44377801  0.16519009 -0.09473443
 -0.01351437 -0.17237368  0.0374852   0.34962645  0.14334701 -0.11134619
...]

嵌入可视化

最先进的自然语言处理技术之一是单词嵌入,它实际上是什么?这是一个矩阵,最简单的方法是 x 和 y 坐标,但我们有 300 维,而不是 2 维。

我们可以通过使用主成分分析(PCA)或 T-分布随机邻居嵌入(t-SNE)来可视化它。通过利用 TensorBoard,可以轻松呈现可视化。

word_embedding.build_visual_metadata(embedding=embedding, words=words, file_dir='./word_embedding')

拿走

要访问所有代码,可以访问我的 github repo。

  • 应该使用哪种现成模型?根据您的数据,有可能所有这些数据对您的领域特定数据都没有用。
  • 我们应该根据你的数据训练单词嵌入层吗?根据我的经验,如果您处理领域特定的文本,并且您的大部分单词不能从现成的模型中找到,您可以考虑构建定制的单词嵌入层。
  • 由于浏览器资源问题,Tensorboard 选择了前 100000 个向量。推荐给自己挑一小部分矢量
  • GloVe、Word2Vec 和 fasttext 的最大型号大小分别为5.5GB、3.5GB 和~8.2GB。GloVe、Word2Vec、fasttext 分别需要 9、1、9 分钟左右。在资源有限的情况下,It 可能不容易部署到生产

参考

[1] Yoshua Bengio,Ducharme Rejean 和 Vincent Pascal。一种神经概率语言模型。2001.https://papers . nips . cc/paper/1839-a-neural-probability-language-model . pdf

[2] Yoshua Bengio,Ducharme Rejean,Vincent Pascal 和 Janvin Christian。一种神经概率语言模型。2003 年 3 月。http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf

[3]科洛伯特·罗南和韦斯顿·杰森。自然语言处理的统一架构:具有多任务学习的深度神经网络。2008.【https://ronan.collobert.com/pub/matos/2008_nlp_icml.pdf

[4]托马斯·米科洛夫、格雷戈·科拉多、程凯和杰弗里·迪恩。向量空间中单词表示的有效估计。2013 年 9 月。https://arxiv.org/pdf/1301.3781.pdf

关于我

我是湾区的数据科学家。专注于数据科学、人工智能,尤其是 NLP 和平台相关领域的最新发展。你可以通过媒体博客LinkedInGithub 联系我。

纵向扩展数据治理功能的 3 种简单方法

原文:https://towardsdatascience.com/3-simple-ways-to-scale-up-data-governance-function-d823f1de911e?source=collection_archive---------9-----------------------

尽管数据治理的概念已经存在多年,但只有某些组织将数据治理作为交付商业价值的战略支柱。有许多公司的数据治理还没有达到相关的成熟度,因此不能将其视为一种值得考虑的力量。

我在下面概述了 3 种在组织中扩展数据治理功能的简单方法

1)确定非正式数据冠军

在每个业务功能中,至少有一个人感受到了糟糕的数据质量的痛苦,他通常会执行许多手动调整来纠正糟糕的数据质量。当上游数据质量问题没有解决时,这是最沮丧的人。您需要确定这些人,并解释数据治理如何帮助其他业务功能的成功故事,以便他们能够体会到数据治理如何改善了他们的生活。将一个业务部门的成功数据冠军与另一个受挫的人配对,这一点很重要。

2)识别公司中发生的与数据相关的事件

即使有无数的系统和控制措施,没有一个组织能够在没有导致经济处罚或声誉风险的运营事件或事故的情况下运行。确定所有这些事件,并列出是否有任何事件是由于数据质量差或缺乏治理而发生的。该事件目录应作为一个触发器,以确定如果存在数据治理,此类事件是否可以避免。例如,可能有一个事件,一个数字被错误地报告给公司的客户,导致客户寻求经济赔偿。如果客户报告团队不是数据治理框架的一部分,则此类事件应强调扩大数据治理职能的必要性。

3)成为组织变革计划的一部分

对现有流程、系统和人员实施数据治理是一件困难的事情。然而,向一个新的 IT 系统或一个刚刚创建的新部门引入数据治理相对容易,因为您正在从头开始创建一切。在这种情况下,个人并不认为数据治理是他们需要适应的新事物,而是被视为设计的一部分。例如,一个组织可能正在实施新的 CRM 系统;如果 CRM 系统和相关的过程被设计成包含数据治理,而不是事后才想到,那么事情就会容易得多。

其中一些“简单”的方法可能需要几个星期到几个月才能在一个组织中实现。然而,这些指针将为扩展数据治理功能提供一个起点。

关注我在https://www.linkedin.com/in/suriyansubramanian的链接

3 个小而强大的卷积网络

原文:https://towardsdatascience.com/3-small-but-powerful-convolutional-networks-27ef86faa42d?source=collection_archive---------2-----------------------

为了在 ImageNet 上获得最佳精度,已经开发了许多 CNN 架构。计算能力不限这个比赛,何苦呢?

然而,您可能希望在旧的笔记本电脑上运行您的模型,可能没有 GPU,甚至在您的移动电话上。让我们看看三种 CNN 架构,它们效率很高,但精度性能却很低。

MobileNet

Arxiv 链接:(霍华德等人,2017)

MobileNet 使用深度方向可分离T4 卷积。这个卷积块最初由异常引入。深度方向可分离卷积由两种运算组成:深度方向卷积和点方向卷积。

标准卷积作用于特征图的空间维度以及输入和输出通道。它的计算成本为Df * M * N * Dk;Df 表示输入特征映射的维数,M 和 N 表示输入和输出通道的数量,Dk 表示内核大小。

深度方向卷积分别在每个输入通道上映射一个卷积。因此它的输出通道数与输入通道数相同。It 计算成本为 Df * M * Dk

最后一个操作是逐点卷积。这是一个核大小为 1×1 的卷积,它简单地组合了由深度方向卷积创建的特征。It 计算成本为 M * N * Df

深度方向可分离卷积的计算成本是深度方向和点方向操作的成本之和。与普通卷积相比,它提供了 1/N + 1/Dk 的计算减少。内核大小为 3x3 时,操作次数减少了 8 倍!

MobileNet 还提供了两个参数,允许进一步减少其操作数量:宽度乘数(在 0 和 1 之间)减少通道数量。在每一层,不是产生 N 个通道,而是产生 alpha * N。该乘数可用于处理所需延迟和性能之间的权衡。另一个乘数存在:分辨率乘数。它缩放图像的输入大小,在 224 到 128 之间。因为 MobileNet 使用全局平均池而不是 flatten,所以您可以在 224x224 图像上训练您的 MobileNet,然后在 128x128 图像上使用它!事实上,对于全局池,网络末端的全连接分类器仅取决于通道的数量,而不是特征映射的空间维度。

沙狐球网

Arxiv 链接:(张等,2017)

ShuffleNet 引入了三种不同的随机单元。由组卷积信道洗牌组成。

一个组卷积就是几个卷积,每个卷积取输入通道的一部分。在下图中,您可以看到一个组卷积,有 3 个组,每个组取 3 个输入通道中的一个。

AlexNet (Krizhevsky et al,2012) 首先提出将一个网络分成两个 GPU。

这大大减少了计算成本。让我们举一个可行的例子:如果有 4 个输入通道和 8 个输出通道,我们选择两组,每组有 2 个输入通道和 4 个输出通道。

对于一个组,计算成本将是 Df * Dk * 4 * 8 ,而对于两个组,成本是(Df * Dk * 2 * 4) * 2 或 Df * Dk * 4 * 4 。一半的手术!作者用 8 组达到了最好的结果,因此减少甚至更重要。

最后,作者添加了一个通道混洗,随机混合组卷积的输出通道。产生这种随机性的诀窍可以在这里看到。

EffNet

Arxiv 链接: (Freeman 等,2018)

EffNet 使用空间可分离卷积。它非常类似于 MobileNet 的深度方向可分卷积。

可分离的深度方向卷积是 EffNet 块的蓝色矩形。它由与行核(1x3)的深度方向卷积组成,随后是可分离池,最后是与列核(3x1)的深度方向卷积。

让我们看看计算增益。使用 3x3 内核的正常深度方向的成本为 3 * Df * M。使用 1x3 内核的第一个深度方向的计算成本为 3 * Df * M。可分离池将特征映射高度减半,具有边际成本。具有 3×1 内核的第二深度方向的成本为 3 * Df /2 * M。因此,总成本为 1.5 * (3 * Df * M) 。比正常深度少一半!

EffNet 相对于 MobileNet 和 ShuffleNet 所做的另一项优化是在开始时没有“正常卷积”:

引用作者的话:

MobileNet 和 ShuffleNet 都避免替换第一层,声称这一层已经相当便宜了。我们恭敬地不同意这种说法,并认为每一次优化都是有价值的。在优化了网络中的其余层之后,第一层成比例地变大。在我们的实验中,用我们的 EffNet 块替换第一层为相应的层节省了 30%的计算。

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

MobileNet、ShuffleNet 和 EffNet 是 CNN 架构,旨在优化操作数量。每个人都用自己的版本取代了经典卷积。

MobileNet ( github )深度方向可分离卷积使用深度方向卷积,后跟点方向卷积。此外,它还引入了两个超参数:减少通道数量的宽度乘数和减少特征映射空间维度的分辨率乘数。

****shuffle net(github)分组使用逐点卷积。为了组合每个组产生的特征,还引入了洗牌层。

最后,EffNet(github)使用空间可分离卷积,它只是沿 x 和 y 轴分离的深度方向卷积,它们之间有一个可分离池。

Benchmark on CIFAR 10

这篇文章已经被翻译成中文了!此处

在 TensorFlow 对象检测 API 中更新更快的 R-CNN/SSD 模型参数的 3 个步骤

原文:https://towardsdatascience.com/3-steps-to-update-parameters-of-faster-r-cnn-ssd-models-in-tensorflow-object-detection-api-7eddb11273ed?source=collection_archive---------1-----------------------

我写过一篇关于配置 TensorFlow 对象检测 API 的文章。请参考这个故事这里来配置 API。那个故事是这篇文章的先决条件。

在这个故事中,我将讨论如何改变预训练模型的配置。这篇文章的目的是你可以根据你的应用程序配置 TensorFlow/models ,API 将不再是一个黑盒!

文章概述:

  • 了解协议缓冲区和proto文件。
  • 利用proto文件的知识,我们如何理解模型的配置文件
  • 更新模型参数需要遵循的 3 个步骤
  • 杂项示例:
  1. 更改权重初始值设定项
  2. 更改权重优化器
  3. 评估预训练模型。

协议缓冲区

为了修改这个模型,我们需要了解它的内部机制。 TensorFlow 对象检测 API 使用协议缓冲区,这是一种独立于语言、独立于平台且可扩展的机制,用于序列化结构化数据。它就像规模较小的 XML,但是更快更简单。API 使用协议缓冲语言的 proto2 版本。我将尝试解释更新预配置模型所需的这种语言。有关协议缓冲语言的更多详细信息,请参考本文档Python 教程

协议缓冲区的工作可以用以下 3 个步骤来解释:

  • .proto文件中定义消息格式。这个文件就像所有消息的蓝图,它显示了消息接受的所有参数,参数的数据类型应该是什么,参数是必需的还是可选的,参数的标签号是什么,参数的默认值是什么等等。API 的 protos 文件可以在这里找到。为了便于理解,我使用的是grid _ anchor _ generator . proto文件。

从第 30-33 行可以清楚地看到,参数scalesaspect_ratios对于消息GridAnchorGenerator是强制的,而其余的参数是可选的,如果没有通过,将采用默认值。

  • 定义消息格式后,我们需要编译协议缓冲区。这个编译器将从.proto文件生成类文件。在安装 API 的过程中,我们运行了以下命令,该命令将编译协议缓冲区:
# From tensorflow/models/research/
protoc object_detection/protos/*.proto --python_out=.
  • 在定义并编译好协议缓冲区之后,我们需要使用 Python 协议缓冲区 API 来写入和读取消息。在我们的例子中,我们可以将配置文件视为协议缓冲 API,它可以写入和读取消息,而忽略 TensorFlow API 的内部机制。换句话说,我们可以通过适当地更改配置文件来更新预训练模型的参数。

了解配置文件

很明显,配置文件可以帮助我们根据需要改变模型的参数。下一个问题是我们如何改变模型的参数?本节和下一节将回答这个问题,在这里proto文件的知识将会派上用场。出于演示的目的,我使用了fast _ rcnn _ resnet 50 _ pets . config文件。

第 7–10 行暗示num_classesfaster_rcnn消息的参数之一,而后者又是消息model的参数。同样,optimizer是父train_config消息的子消息,而batch_sizetrain_config消息的另一个参数。我们可以通过检查相应的 protos 文件来验证这一点。

Snippet of faster_rcnn.proto

从第 20 行和第 26 行可以清楚地看出num_classes是消息faster_rcnnoptional参数之一。我希望到目前为止的讨论有助于理解配置文件的组织。现在,是正确更新模型的一个参数的时候了。

步骤 1:决定要更新的参数

假设我们需要更新faster _ rcnn _ resnet 50 _ pets . config文件第 10 行提到的image_resizer参数。

步骤 2:在存储库中搜索给定的参数

目标是定位参数的proto文件。为此,我们需要在存储库中进行搜索。

Search in the repository

我们需要搜索以下代码:

parameter_name path:research/object_detection/protos#in our case parameter_name="image_resizer" thus,
image_resizer path:research/object_detection/protos

这里path:research/object_detection/protos限定了搜索域。更多关于如何在 GitHub 上搜索的信息可以在这里找到。搜索image_resizer path:research/object_detection/protos的输出如下所示:

Search result of image_resizer path:research/object_detection/proros

从输出中可以清楚地看到,要更新image_resizer参数,我们需要分析image_resizer.proto文件。

第三步:分析proto文件

image_resizer.proto file.

从第 8-10 行可以清楚地看出,我们可以使用keep_aspect_ratio_resizerfixed_shape_resizer来调整图像的大小。在分析第 23-44 行时,我们可以看到消息keep_aspect_ratio_resizer有参数:min_dimensionmax_dimensionresize_methodpad_to_max_dimensionconvert_to_grayscaleper_channel_pad_value。而且,fixed_shape_resizer有参数:heightwidthresize_methodconvert_to_grayscale。所有参数的数据类型都在proto文件中提及。因此,要更改image_resizer类型,我们可以在配置文件中更改以下几行。

#before
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 600 
max_dimension: 1024
    }
}#after
image_resizer {
fixed_shape_resizer {
height: 600
width: 500
resize_method: AREA
  }
}

上面的代码使用 AREA resize 方法将图像的大小调整为 500 * 600。TensorFlow 中可用的各种调整大小的方法可以在这里找到

杂项示例

我们可以使用上一节中讨论的步骤来更新/添加任何参数。我将在这里演示一些常用的示例,但是上面讨论的步骤可能有助于更新/添加模型的任何参数。

改变重量初始化器

  • 决定更改文件 faster _ rcnn _ resnet 50 _ pets . config第 35 行的参数initializer
  • 在存储库中搜索initializer path:research/object_detection/protos。从搜索结果来看,很明显我们需要分析hyperparams.proto文件。

Search result of initializer path:research/object_detection/proros

message Initializer {
  oneof initializer_oneof {
    TruncatedNormalInitializer truncated_normal_initializer = 1;
    VarianceScalingInitializer variance_scaling_initializer = 2;
    RandomNormalInitializer random_normal_initializer = 3;
  }
}

我们可以使用random_normal_intializer代替truncated_normal_initializer,因为我们需要分析 hyperparams.proto 文件中的第 99–102 行。

message RandomNormalInitializer {
  optional float mean = 1 [default = 0.0];
  optional float stddev = 2 [default = 1.0];
}

很明显random_normal_intializer有两个参数meanstddev。我们可以更改配置文件中的以下行来使用random_normal_intializer

#before
initializer {
    truncated_normal_initializer {
        stddev: 0.01
       }
}#after
initializer {
    random_normal_intializer{
       mean: 1 
       stddev: 0.5
       }
}

更改权重优化器

  • 决定更改fast _ rcnn _ resnet 50 _ pets . config文件第 87 行父消息optimizer的参数momentum_optimizer
  • 在存储库中搜索optimizer path:research/object_detection/protos。从搜索结果来看,很明显我们需要分析optimizer.proto文件。

Search result of optimizer path:research/object_detection/proros

message Optimizer {
  oneof optimizer {
    RMSPropOptimizer rms_prop_optimizer = 1;
    MomentumOptimizer momentum_optimizer = 2;
    AdamOptimizer adam_optimizer = 3;
  }

很明显,我们可以使用已经被证明是很好的优化器的adam_optimizer来代替momentum_optimizer。为此,我们需要对 faster _ rcnn _ resnet 50 _ pets . config文件进行以下更改。

#before
optimizer {  
  momentum_optimizer: {
      learning_rate: {
           manual_step_learning_rate {
          initial_learning_rate: 0.0003
          schedule {
            step: 900000
            learning_rate: .00003
          }
          schedule {
            step: 1200000
            learning_rate: .000003
          }
        }
      }
      momentum_optimizer_value: 0.9
    }#after
optimizer {
  adam_optimizer: {
      learning_rate: {
       manual_step_learning_rate {
          initial_learning_rate: 0.0003
          schedule {
            step: 900000
            learning_rate: .00003
          }
          schedule {
            step: 1200000
            learning_rate: .000003
          }
        }
      }
    }

评估预训练模型

Eval 等待 300 秒检查训练模型是否更新!如果你的 GPU 很好,你可以同时训练和评估这两者!一般情况下,资源会被耗尽。为了克服这一点,我们可以首先训练模型,将其保存在目录中,然后评估模型。为了以后进行评估,我们需要在配置文件中进行以下更改:

#Before
eval_config: {
  num_examples: 2000
  # Note: The below line limits the evaluation process to 10 evaluations.
  # Remove the below line to evaluate indefinitely.
  max_evals: 10
}#after
eval_config: {
num_examples: 10
num_visualizations: 10
eval_interval_secs: 0
}

num_visualizations应该等于待评估的数量!可视化的数量越多,评估所需的时间就越长。如果你的 GPU 有足够的能力同时训练和评估,你可以保留eval_interval_secs: 300。此参数用于决定运行评估的频率。我按照上面讨论的 3 个步骤得出了这个结论。

简单地说,协议缓冲区的知识帮助我们理解了模型的参数是以消息的形式传递的,要更新参数我们可以参考.proto文件。讨论了找到正确的.proto文件以更新参数的 3 个简单步骤。最近在 neptune.ai 上偶然看到这篇文章,对进一步参考有用。

请在评论中提及您想要在配置文件中更新/添加的任何参数。

希望这篇文章有所帮助。

索达

关于简单线性回归你不知道的 3 件事

原文:https://towardsdatascience.com/3-things-you-didnt-know-about-simple-linear-regression-b5a86362dd53?source=collection_archive---------5-----------------------

线性回归将输入线性映射到输出。假设作为观测数据基础的数据生成过程是 y = X𝛽 + 𝜖,其中

  • y 是长度为 n (数据点数)的响应向量
  • x 是一个由( p +1)个独立变量组成的 n 矩阵
  • 𝛽是回归系数的( p +1)向量
  • 𝜖也是每个元素 iid ~ N(0,𝜎的( p +1)个扰动向量

x 中的每一行有 p 个元素加上常数 1,常数 1 方便地包括系数向量𝛽.中的截距项在没有使用截距项的问题中,1 被省略(通常是特定于应用的决定)。𝜖是不可知的,所以我们基于 x 对 y 建模所能做的最好的事情就是用 b 来估计𝛽,即 ŷ = X b ,其中 ŷ 是对 y 的估计。

为了拟合训练数据,我们最小化残差平方和,其中残差被定义为 y - ŷ 。由于 ŷ = X b ,平方和可以写成(y-xb)ᵀ(y-xb)。对 b 的每个元素进行微分(y-xb)ᵀ(y-xb)给出了著名的正规方程:Xᵀ( y -X b ) = 0。假设 XᵀX 是可逆的, b = (XᵀX)- Xᵀ y

线性回归的几何解释也许更直观。X 的列向量跨越一个子空间,最小化残差相当于将 y 正交投影到这个子空间上,如下图所示。通过正交性,可以立即得到正规方程。

Elements of Statistical Learning, p46

有了这些事实,我们就可以得出带有截距和斜率系数的简单线性回归的某些性质。我们将引用 R 中的一个线性回归示例来仔细检查这些属性。

> set.seed(13)
> n = 20; x = 1:n; y = 2*x + rnorm(n, sd = 1)
> model = lm(y~x)
> summary(model)Call:
lm(formula = y ~ x)Residuals:
     Min       1Q   Median       3Q      Max 
-1.89019 -0.47625  0.01282  0.77558  1.48740Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.61809    0.43205   1.431     0.17    
x            1.95829    0.03607  54.296   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 0.9301 on 18 degrees of freedom
Multiple R-squared:  0.9939, Adjusted R-squared:  0.9936 
F-statistic:  2948 on 1 and 18 DF,  p-value: < 2.2e-16
  1. 残差之和为零。由正规方程 xᵀ(y-xb)= xᵀ(y-ŷ)= 0。由于 x 有一列 1,1ᵀ( y - ŷ ) = 0。我们可以用sum(model$residuals)在 R 中进行健全性检查。再者,X 中任意一列与残差的点积为 0,可以用sum(x*model$residuals)来查。
  2. 斜率项的 t 检验与 F 检验等效,因为它们都有相同的零假设:斜率为 0。这就是为什么它们的 p 值在上面的总结中是匹配的,2e-16 和 2.2e-16。来自具有 k 自由度的 t 分布的随机变量 T 等于z/sqrt(𝜒_ {k}/k,其中𝜒 { k }是具有 k 自由度的卡方随机变量。平方 *T* ( k )给出 F (1 ,k )随机变量:t_ {k} =z/(𝜒_ {k}/k)=(𝜒_{1}/1)/(𝜒_ {k}/k我们可以确认,对汇总中 x 项的 t 值(54.296)求平方,得到报告的 F 统计量(2948)。**
  3. 决定系数 R 等于 xy 之间相关性的平方。 R 测量由 x 解释的 y 的变化比例。一个证明 y 与 ŷ 的相关性的平方等于 R 这里是这里是,对于简单线性回归来说 yŷ 的相关性与 yx 的相关性相同。请注意cor(x,y)^2给出的值与“多 R 平方”旁边报告的值相同:0.9939。

关于语义搜索技术你必须知道的 3 件事

原文:https://towardsdatascience.com/3-things-you-must-know-about-semantic-search-technology-3fbe56206a55?source=collection_archive---------8-----------------------

当受雇于机器时,“聪明”的巧妙表达不仅仅是一两道眉毛。当有报道称设备具有理解内容意义的能力时,讨论就开始了。然而,举例来说,当一个人迫切需要找到最近的药店或加快一个研究项目时,他会立刻得到补贴。毫不奇怪,在这种情况下,我们会很高兴地利用一个复杂的计算过程来筛选信息,并尽快决定对我们最相关的结果。

语义搜索技术是一种查询数据的方法,它试图理解问题的目的和上下文,以恢复与特定数据请求关联的最相关的资源。

为什么要想到实现 语义搜索技术

如果您还在为布尔搜索查询而挣扎,那么您应该开始考虑实现语义技术。让我给出三个最有说服力的理由来说明为什么你必须拥有这种超强的创新。

1.因为…

它提供了灵活的集成方法

与传统的 IT 系统相比,语义技术提供了不同信息资产的更好的集成和互操作性,并且可以容易地适应变化,而不需要重做模式。使用语义建模添加、更改和执行新的连接很简单,因为与标准技术不同,在设计时,重要性和关系没有被分类并“硬连线”到数据格式和软件程序代码中。因此,一旦世界的本质发生变化,传统的关系数据库就会变得僵化和脆弱,因此在面对新知识或新连接时需要不断地重新构建。

2.因为…

它可以轻松连接流程+数据+内容

语义搜索技术通过在你现有的数据集合中添加额外的上下文数据来实现这一点。一个很好的例子是将天气和交通信息整合到街道地图中,如路况、天气信息、事故几率、建筑物的站立状态和步道。这些额外的数据可能会被“智能汽车”用来做出减少事故危险的决策。

另一个很好的例子是人力资源(招聘)行业,许多 申请人跟踪系统 (ATS)内置了由布尔搜索支持的简历解析功能,主要是使用运算符(OR、AND)进行查询。然而,这种十年之久的解析技术可能会像 Textkernel (CV 解析软件)一样,被 语义补充技术 取代。它解析简历的准确率超过 80%。这意味着招聘人员需要花费更少的时间来填补空缺职位,因为他们可以很容易地从现有的简历库中找到合适的人选。

3.因为…

可以开发更智能的解决方案

本体是它们之间的关系和领域中的术语的显而易见的正式术语,并且最适合展示支持更智能的解决方案所需的信息模型。现在,这些更加智能的解决方案旨在解决业务困难,并且必须利用数据分析的力量来实现其承诺。

人工智能影响航天工业的三种方式

原文:https://towardsdatascience.com/3-ways-ai-is-impacting-the-space-industry-10fee17ef08f?source=collection_archive---------7-----------------------

ML + Rocket Science

我开始从事数据科学行业已经一年了。作为一名航空航天工程背景的人,我很自然地会寻找应用人工智能的方法,更具体地说,是将机器学习应用于空间技术。

历史上,机器学习算法已经用于航天器的健康监测、自主导航、智能控制系统和用于路径导航的智能物体检测。

在本帖中,将讨论两种有助于预测分析的方法。第一种是模型驱动方法,包括航天器每个子系统的数学模型,以校正系统,使其始终符合该模型的规范。

第二种方法是收集关于环境和航天器内部的数据,以便使用最佳猜测情况的机器学习模型来主动优化功能。这是数据驱动的方法,它被证明更具适应性。

1.航天器的健康监测

在宇宙飞船中,可能有 1000 多个被监控的遥测变量,地球上的工程师分析这些变量以诊断异常情况。 Takehisa Yairi 及其合作者(Yairi 等人)提出了一种替代的数据驱动方法用于异常检测。该过程考虑了遥测数据的五个特征:高维度、多模态、异质性、时间相关性、缺失数据和微小异常值。遥测变量标准化后,用于创建一个综合模型,称为概率主成分分析仪可分类分布的混合物(MPPCACD)。Yairi 等人在 JAXA 使用的演示卫星 SDS-4 的遥测数据上测试了该模型。总共模拟了 89 个连续变量和 365 个状态变量。MPPCACD 的性能与现有的异常检测算法进行了比较,如单类支持向量机(OCSVM)和支持向量数据描述(SVDD)。这三种算法通过产生异常分数图来发挥作用,其中异常由图尖峰来表示。在 MPPCACD 的图表中,注意到在正常系统中,异常分数通常较低(0-10),而异常分数在 100-200 之间时很容易识别。由于 OCSVM 和 SVDD 是通用方法,即使在正常的系统运行中,异常分数也是不稳定的,因此很难区分异常。

2.自主导航

由一组工程师单独控制的火星漫游车只能每 20 分钟收到一次移动指令。这是地球和火星之间的通讯延迟。假设每 20 分钟只能发送 5 条移动命令,那么一天总共有 360 条命令。配备自主导航功能的漫游车每分钟可以做出≥ 5 个决策,如果不是每秒的话。它现在受到其计算机速度的限制,而不是通信延迟。

Mathew C. Wilkinson 和 Andrew J. Meade 提出了一种受人工神经网络(ANN)启发的卫星导航模型。序列函数逼近(SFA)用于开发一种人工神经网络,该网络通过发动机燃烧在航天器飞行路径上的大小和方向的变化来学习发动机燃烧的影响。将结果与期望状态进行比较,随后的误差参数用于不断调整神经元参数。SFA 通过观察神经元参数变化对误差参数的影响的迭代过程来有效地训练它自己的神经元排列。这种方法被证明比计算动力学方程或立即创建神经图在计算上更有效。

3.用于行星探测的特征检测

行星表面的地理特征告诉我们它的地质构成和历史意义。对附近行星的地理分析是通过地面漫游车向地球发回图像来实现的。这可能会构成大量冗余数据。如果漫游者有一个机载机制来分析特征并按照重要性的顺序对图像进行分类,然后决定下一步的最佳行动,这一过程将会更加有效。

Burl,M. C .,& Wetzler,P. G .评估了一些监督机器学习算法的性能,如支持向量机(SVM)和连续缩放模板模型(CSTM)来检测陨石坑。训练好的算法用海盗号火星轨道飞行器的图像进行了测试。SVM 方法被认为是最有效的,就像人类对照片进行分类一样准确。作者提出了一种使用快速傅立叶变换和重叠相加技术的 SVM 的新颖实现,其将存储器使用减少到图像大小的 5%。这使得算法可以在内存受限的系统上运行,例如航天器。

5 Uses of AI in Space!

参考资料:

Yairi,t .等人,一种基于概率聚类和降维的数据驱动的卫星管家数据健康监测方法,IEEE 航空航天与电子系统汇刊,第 53 卷,№3,2017。

Wilkinson,m .和 Meade,a .,自主月球目标定位的神经网络启发的机器学习,《航空航天信息系统杂志》,第 11 卷第 7 期,2014 年

伯尔、M. C .、韦茨勒、P. G. 用于行星探索的机载物体识别。机器学习,84(3),341–367,2011。doi:10.1007/10994–011–5239–6

数据质量影响预测分析的三种方式

原文:https://towardsdatascience.com/3-ways-data-quality-impacts-predictive-analytics-cc72cdb1043?source=collection_archive---------17-----------------------

大数据时代产生了一个主要的误解——认为数据量本身就可以为营销人员提供一个人的清晰图像。那是完全错误的。拥有更多数据非常好。但这不是一切。当你使用数据来改进你的营销策略时,这里有另外三个你需要考虑的因素。

1.详细程度:

每当你在分析一个事件时,你需要所有的细节,以及相关个人的历史记录。你拥有的数据点越多,你的反应就越好,你的下一个行动计划就越聪明。

一个律师掌握了关于他/她的委托人案件的全部细节会更有效率。一个了解他/她病人的病史、习惯和现有行为的医生将会更好地帮助病人。你的顾客也一样。您对客户旅程了解得越多,就越容易设想每个场景并定义成功案例。

全面的数据采集对每一个营销策略都很重要,因为它直接影响每一个预测的准确性。机器只能通过我们提供的细节来学习。它是上下文不可知的,永远不会要求更多的细节。这意味着我们营销人员、数据科学家和分析师有责任确保所有数据以正确的方式呈现。

2.数据内的连接:

将第一方客户数据存放在多个仓库中对企业没有任何好处。您跟踪的任何关于客户接触点或其数字踪迹的信息都会成为一个关键数据点,值得分析其与预测结果的相关性,因此您可以回答以下问题:

  • 如果我对该产品进行促销,哪个客户会购买?
  • 我的哪些客户是最好的,值得额外的折扣?
  • 这种产品会畅销吗?
  • 我可以为这款新产品设定的价位是多少,以满足需求,同时不浪费资金?
  • 该产品类别可能在哪里销售最好?

使用预测分析,您可以提出和解决的问题是无限的。但是你如何决定哪些变量值得考虑呢?

这个问题有两个部分。 首先是 ,我们作为人类决定什么被认为是相关的,要在一个非常高的层次上考虑。数据科学家的职责是研究该行业所需的结果,并确保纳入正确的因素。 其次 ,一旦相关的、全面的数据被输入到机器学习模型中,它就可以突出那些特征中的哪些与所讨论的结果有很强的相关性。

连接所有系统的数据对任何企业来说都是一个关键的过程。例如,如果理想的等式应该是[a + b + c + d = outcome],然而你只考虑一个变量,预测结果将会是扭曲的和误导的。这些变量{a,b,c,d}可能是一组信号,是位于多个不同数据系统中的数据点。

如果没有将数据点之间的点连接起来,你预测的结果肯定是不准确的。

3.数据的完整性:

让我们假设您向客户发送了多个目录。有些导致销售。如果您只分析销售交易,您如何更深入地了解发送该目录的影响?

一个数据点提供了转换您所选配置文件的客户所需的平均目录数量,这不仅有助于您确定需要发送的目录数量,还有助于您确定发送目的地。预测分析不仅仅是根据客户的 LTV 或购买历史来决定他们是否会购买,它还包括了解你的营销策略对销售结果的作用。

VectorScient ,我们对数据质量有强烈的感受:“垃圾进,垃圾出。”如果你输入机器的数据不好,那么由此产生的预测将毫无用处。这意味着营销人员必须关注的不仅仅是数据数量,他们还需要在为自己的业务寻找合适的产品时考虑数据质量。

总之,虽然将所有不同数据系统的所有相关数据连接起来并不容易,但重要的是要认识到,它形成了直接影响预测结果准确性的坚实基础。

感谢您的时间和关注。您是否研究过您企业的所有 3 种全面数据覆盖方式?我很想听听你对此的看法。

关于作者: 韦达·孔杜鲁VectorScient 的创始人兼 CEO。在她目前的职位上,Veda 负责制定和执行 VectorScient 的战略。Veda 还担任 VectorScient 预测营销云的首席产品架构师。在推出 VectorScient 之前,Veda 在企业界工作了 10 多年,为销售、需求预测和供应链设计和构建软件应用程序,在产品质量、客户关注和参与方面享有盛誉。Veda 将她的统计学背景与机器学习和数据科学相结合,创造出真正世界级的预测分析产品。她拥有计算机科学硕士学位。

非营利组织利用新兴技术增加捐款的三种方式——你也可以这样做

原文:https://towardsdatascience.com/3-ways-non-profits-use-emerging-technology-to-further-donor-dollars-and-how-you-can-too-6e4d02ee2569?source=collection_archive---------11-----------------------

一个总部设在美国的非营利组织想给危地马拉农村的户主送去清洁炉灶。这个想法是让接受者用这些炉子开始小生意来支持他们的家庭。但是如果其中一个炉子坏了怎么办?

Ixo 帮助非营利组织收集、测量、评估、估价和标记可验证的影响。他们对物联网(IoT)传感器、智能合同和区块链的应用帮助非营利组织实时服务于那些需要帮助的人,无论他们在哪里。例如,通过物联网传感器,发送品牌可以在数千英里之外监控产品性能,甚至在问题出现之前就进行故障排除,然后提供修复指令。

此外,ixo 将区块链和智能合同与物联网传感器配对,以收集有关碳排放的数据,然后实时发放碳令牌——在新兴技术出现之前,这可能需要一年的时间来处理。此外,为了提高透明度,区块链对物联网传感器进行了身份验证,因此没有数据篡改会被忽视。

“由于这些技术,各方之间有了更大的信任,同时降低了评估成本,”ixo 基金会的合作伙伴和监管负责人 Fennie Wang 说,ixo 基金会是一个利用技术创造社会影响的非营利组织。

通过一次将一项技术与一个用例相匹配,进一步增加捐赠资金

尽管 ixo 将无数新兴技术与非营利问题相匹配,但这种方法对于许多组织来说可能是势不可挡的。因此,其他公司正在采取一对一的技术方法,以更少的资源提供更多的服务。了解非营利组织的 3 个新兴技术使用案例,以更少的捐赠服务更多的人:

1。 机器学习 (ML)让品牌安全削减 IT 基础设施成本。

每天有 22 个人因为等待器官而死去。一个成为器官、组织和眼睛捐献者的决定有可能拯救 8 条生命,并增强 75 个生命。

因此,“捐赠生命月”挽救了数千人的生命,因为人们使用社交媒体和其他平台来提高意识并提供关于器官捐赠者登记的信息。反过来,支持组织聚集在宣传者周围,新闻组织(T2)讲述受影响者的故事。

这是慈善、同情和拯救生命的一个月。但是,仅仅一个技术故障就可能使提供注册和捐赠机会的网站瘫痪。这将意味着生命的损失和影响较小的捐赠,因为与公益相关的组织正在努力弥补失去的用户创造的推广机会。

FogLogic 增长营销主管迪伦·马克斯说:“因为非营利部门非常依赖季节性,它对它们的影响甚至超过大多数行业。“为了保护自己免受需求波动的影响,许多大型非营利组织过度配置了其 it 基础架构。这保证了它们的安全,但效率很低,成本也很高。”

他说曼梯·里就是答案。在监控系统交互和变化的同时,它会精确定位潜在的问题,然后发出危险信号以防止问题发生。最终,组织削减了顶层基础架构的成本,并可以放心及时采取预防和纠正措施。

  1. 【虚拟现实(VR) 让投资者沉浸在没有旅行成本的非营利项目中。

性别、位置、冲突、家庭社会经济、残疾以及地方和国家冲突意味着全球有6100 万小学生没有受教育的机会。承诺的铅笔(PoP)是一个非盈利组织,它筹集资金在危地马拉、加纳、尼加拉瓜和老挝的农村地区修建公立学校。

虽然许多非营利组织依靠长途旅行向投资者展示捐款去向,但铅笔承诺转向了虚拟现实。利用虚拟现实,投资者可以体验来自全球各地的项目。这样一来,用于支付旅行费用的钱将直接用于为人们服务。

“没有其他媒介能像虚拟现实一样提供身临其境的个人体验,”承诺铅笔的首席执行官迈克尔·道赫蒂说。“我们的(虚拟现实)电影带着支持者走进加纳的一个农村社区,体验教育的变革性影响。”

尽管虚拟现实技术很昂贵,但通过仔细匹配它们的使用案例,组织可以获得更大的支持,从而抵消生产和提供沉浸式体验的成本。通过一部 90 秒的虚拟现实电影,承诺的铅笔为学校建设筹集了总计 190 万美元

3。 区块链 通过增加信任来促进捐赠,同时消除中间商成本。

当南非德班野生动物康复中心(CROW)临床团队发现一只黑长尾猴 Opal 时,它只有 6 天大。队员们发现她仍然紧紧抱住被汽车撞死的母亲。今天,乌鸦临床团队寻找一个赞助商,以支付猫眼石的食物,住宿,医疗和康复费用。

而 Opal 未来的赞助商可以放心,CROW 专注于高效的捐赠使用。一年前,CROW 成为 Sun Exchange 的客户,Sun Exchange 是一家区块链公司,帮助 CROW 降低了 10-40%的电力成本。当被问及区块链如何削减 CROW 的电力成本时,Sun Exchange 的创始人兼首席执行官 Abe Cambridge 解释道:

“不发达市场中的非政府组织正在使用昂贵而肮脏的化石燃料发电,在这些情况下,使用太阳能要便宜得多,但实施起来也要昂贵得多。因此,我们可以进来,实施一个资金充足、全面运行的太阳能系统,满足所有非政府组织的要求,他们不必预先支付一分钱。”

使用区块链,世界各地的任何人都可以加入太阳交换平台,集体购买目标数量的太阳能电池板,通过太阳交换租赁给非政府组织,太阳交换将它们安装在非政府组织的屋顶上。从那里,非政府组织向太阳能电池板所有者支付租金,然后使用加密货币区块链支付快速安全地收集并发送回太阳能电池板所有者。

亚伯拉罕说:“使用基于新区块链的数字货币(如比特币)直接向项目支付款项是一种更高效、更优雅的方式,因为汇款人知道这笔钱的具体去向,而且只需几分钟,而不是几天。”

由于没有中间人,非政府组织不需要支付额外的国际交易费用,而且使用区块链的加密货币,资金也不需要支付货币兑换费。此外,投资者有信心参与跨国项目,因为他们可以在 CROW 的太阳能网上查看他们的钱去了哪里区块链纪事报。

谈到复杂的新兴技术,不要想太多。

当今 VR、ML、区块链、智能合约和物联网技术的巨大能力可能会让一些组织不知所措。但是,通过将技术与其最昂贵的用例之一相匹配,非营利组织可以削减成本,让捐助者的资金发挥更大作用。

受季节性影响的非营利组织通过 ML 保护他们最有利可图的捐赠时间。一些人通过虚拟现实体验削减旅行成本。还有一些人通过区块链削减了电费。

Sun Exchange 使它变得更加简单。他们提供非盈利的技术即服务,而不是实施内部技术。这样做可以让组织在提高效率的过程中削减成本。

为了用更少的资源提供更多的服务,起点很明确:将一个用例与一种技术相匹配。与科技公司合作降低实施成本。此外,如果您不知道从哪里开始确定您的组织的用例,请寻求技术公司的专业知识来确定最有可能削减间接成本的用例。你的捐助者和你服务的人会感谢你的!

3 种无需更多数据就能改善机器学习结果的方法

原文:https://towardsdatascience.com/3-ways-to-improve-your-machine-learning-results-without-more-data-f2f0fe78976e?source=collection_archive---------6-----------------------

这些将是你值得信赖的 ML 助推器

想获得灵感?快来加入我的 超级行情快讯 。😎

你的 ML 模型总是可以在精确度上有所提高。它从来没有伤害,在大多数实际情况下,你真的需要它!但和往常一样,得到你想要的东西说起来容易做起来难。

大多数人会接受默认的建议:获取更多的数据…但是如果不能呢?

也许你需要的数据类型非常昂贵。也许这很难获得。如果你得到数据,重新训练你的模型,发现你的模型并没有变得更好,会发生什么?

你需要一个替代方案来提高你的 ML 模型的准确性。

让我给你三个!

超参数调谐

机器学习中的超参数是你的 ML 模型的用户控制的“设置”。它们会影响模型参数在训练过程中的更新和学习方式。当然,你的模型的输出取决于它的学习参数,它的学习参数在训练阶段是不断更新和确定的。该更新由模型的训练控制,而模型的训练又受超参数的影响!因此,如果您可以设置正确的超参数,您的模型将会学习到在给定训练算法和数据的情况下可能获得的最佳权重。

寻找最佳超参数通常是手动完成的。这是一个简单的试错任务,带有一些智能猜测。只要有时间,您就可以尝试尽可能多的超参数设置,看看哪一个效果最好。您可以通过粗略地了解什么是好的参数来缩小搜索范围。这是领域知识、对数据的洞察力和 ML 经验的问题。

找到你能找到的最好的超参数,你可能会把你的模型的性能提高几个百分点!

Scikit learn 有一个不错的超参数搜索模块

集成方法

集成是一种将多个模型的预测一次结合起来的 ML 技术。这个想法是,这些模型的综合知识将比其中任何一个模型的知识给出更准确的最终结果。这是一种非常直观的技术,在 Kaggle 比赛中非常常用。

要构建集成,只需针对相同的任务,在相同的数据上训练多个不同的 ML 模型。在推理时,您将把所有的模型分别应用到您的输入中。如果您的任务是分类,您可以使用简单的每类投票方案来组合结果,或者以最高的置信度进行预测。对于回归,只需平均结果。集成是一种经过广泛实地测试和现实世界验证的技术,可以提高预测的准确性。给他们一个尝试!

Scikit learn 有一个不错的组装模块

特征工程

要素工程涉及对数据要素的仔细选择和可能的操作。这样做的目的是为了给你的模型提供最佳的输入形式。如果你能始终如一地只给你的模型提供精确预测所需的部分数据,那么它就不必处理来自其余数据的任何额外噪声。

如果应用主成分分析并发现某个要素与输出的相关性很低,则可能不需要对其进行处理。有些功能直觉上是没用的,比如 ID 或者录制日期。或者,您可能只想首先考虑某些功能。

为了让您的模型获得数据所能提供的最佳效果,请进行一些数据探索,以找出预测实际上需要哪些信息和要素。通常,您会发现数据集附带了一些多余的或对预测毫无帮助的额外要素。

喜欢学习?

推特上关注我,我会在那里发布所有最新最棒的人工智能、技术和科学!

向管理层和客户解释 NLP 模型的 3 种方法

原文:https://towardsdatascience.com/3-ways-to-interpretate-your-nlp-model-to-management-and-customer-5428bc07ce15?source=collection_archive---------4-----------------------

Photo: https://cdn.pixabay.com/photo/2017/02/22/20/02/landscape-2090495_960_720.jpg

机器学习(ML)和人工智能(AI)改变了做生意的格局。许多公司雇佣数据科学家(我就是其中之一:)来交付数据产品。

交付具有“高”精度的引擎是绝对容易的(这是我用双引号引起来的原因)。如果有人问原因,我们可以说这个模型是黑箱或者是几年前的统计计算,但是现在我们不能这么说了。我们还需要说服产品团队和管理层相信我们的模型,但我们不能简单地说引擎从数据中“学习”了什么,或者它是一个无法解释的黑盒。

当然,在某些特殊的场景中,我们可能不需要解释模型。例如,您不想向公众解释欺诈检测模型。否则,公众可以找到“黑”系统的方法。

看完这篇文章,你会明白:

  • 什么是模型解释?
  • 为什么我们需要解释模型?
  • 解读自然语言处理模型
  • 拿走
  • 参考

什么是模型解释?

模型解释意味着提供原因和背后的逻辑,以实现模型的可问责性和透明性。有许多类型的模型解释,包括:

  • 探索性数据分析 (EDA)中,我们可能会应用主成分分析(PCA)或 t-分布随机邻居嵌入(t-SNE)来了解特征
  • 建成模型 后,我们将使用各种度量来度量分类和回归模型。准确度、精确度和召回率用于分类,而均方误差(MSE)用于回归。这种度量帮助我们理解模型性能
  • 除了 性能 之外,还可以从模型中检索静态特征汇总,如特征重要性。然而,它只存在于基于决策树算法中,如随机森林算法和 XGBoost 算法。
  • 评估模型 时,我们想知道为什么预测错了。我们可以利用图书馆来解释它,这样我们就可以修复它。

Photo: https://pixabay.com/en/whiteboard-man-presentation-write-849812/

在解释模型之前,我们可以先了解模型解释的标准:

可解释性

  • 内在:我们不需要训练另一个模型来解释目标。例如,它使用决策树或线性模型
  • 事后:该模型属于黑箱模型,我们需要使用另一个模型来解释它。在接下来的部分中,我们将重点关注这一领域

接近

  • 特定于模型:一些工具仅限于特定的模型,如线性模型和神经网络模型。
  • 模型不可知:另一方面,一些工具能够通过构建写盒模型来解释任何模型。

  • 全局:说明特征权重等整体模型。这给了你一个通用的模型行为
  • 局部:说明具体预测结果。

为什么我们需要解释模型?

如前所述,我们应该在大部分场景中进行解释,因为:

  • 问责 。模型应该有责任为消费者提供一个正确(相对)的答案。作为模型作者,我们应该验证模型特性,以保证它有助于做出正确的决策,但不要尽可能多地包含特性。
  • 透明度 。机器学习不是一个黑匣子,我们应该向客户和管理层提供透明的模型。这样他们就知道你为什么这么做了。就像开源一样,人们更愿意使用开源,因为他们知道你在做什么。
  • 信任度 。如果消费者想要使用分类或预测结果,这是基本要求。大多数时候,用户有一些领域的知识,如交易者需要了解为什么你提供购买/出售特定股票的决定。

解读自然语言处理模型

如你所知,我主要关注 NLP。因此,我只演示解释 NLP 模型的能力,尽管下面的库也可以解释其他问题,如回归和图像。

对于下面的演示,为了便于理解,我没有做任何预处理。在现实生活中的商业问题,我们应该做预处理的所有时间。否则,垃圾进垃圾出。

几个库帮助解释模型,包括解释像我五岁( ELI5 )、本地可解释的模型不可知解释(LIME)【1】和溜冰者

  • 库: 我将演示我们如何使用 ELI5 和石灰。滑冰者怎么样?请继续关注,将解释我为什么不在 NLP 中使用它的原因。
  • 算法: 在下面的演示中,会包括线性模型(scikit-learn 中的 Logistic 回归)、集成模型(scikit-learn 中的随机森林,XGBoost)和深度学习模型(keras 中的自建词嵌入)。关于文字嵌入,可以查看我之前的帖子了解详情。

ELI5

Photo: http://explain-like-i-am-five.tumblr.com/post/158611418472/eli5-the-concept-of-bankruptcy

ELI5 提供了全局模型解释和局部模型解释。你可能简单地认为全局模型解释是一个重要的特性,但它不仅支持决策树算法,如 Radom Forest 和 XGBoost,还支持所有 sci-kit 学习估计器。

ELI5 作者将其称为排列重要性用于全局解释。为了计算得分,特征(一个词)将被其他词(噪音)代替并预测它。其思想是,当没有提供特定单词时,可以通过获得分数降低多少来推断特征重要性[2]。比如“我喜欢苹果”。它可能会更改为“我喜欢橙色”,然后它会对新创建的记录进行分类,以了解“苹果”的重要性。当然,我们需要假设被替换的单词(例如橙色)是噪声,并且它不应该在分数上提供大的变化。

for pipeline in pipelines:
    print('Estimator: %s' % (pipeline['name']))
    labels = pipeline['pipeline'].classes_.tolist()

    if pipeline['name'] in ['Logistic Regression', 'Random Forest']:
        estimator = pipeline['pipeline']
    elif pipeline['name'] == 'XGBoost Classifier':
        estimator = pipeline['pipeline'].steps[1][1].get_booster()
#     Not support Keras
#     elif pipeline['name'] == 'keras':
#         estimator = pipeline['pipeline']
    else:
        continue

    IPython.display.display(
        eli5.show_weights(estimator=estimator, top=10,
        target_names=labels, vec=vec))

上图意味着,如果输入包括“keith ”,则 y=0 的得分增加 2.138。另一种情况是“the”,它将在 y=1 和 y=2 时分别降低分数-0.731 和-1.387。

对于局部模型解释,ELI5 使用 LIME 算法。显示格式不同于石灰,但使用相同的想法。

number_of_sample = 1
sample_ids = [random.randint(0, len(x_test) -1 ) for p in range(0, number_of_sample)]for idx in sample_ids:
    print('Index: %d' % (idx))
#     print('Index: %d, Feature: %s' % (idx, x_test[idx]))
    for pipeline in pipelines:
        if pipeline['name'] in ['Logistic Regression', 'Random Forest']:
            estimator = pipeline['pipeline'].steps[1][1]
        elif pipeline['name'] == 'XGBoost Classifier':
            estimator = pipeline['pipeline'].steps[1][1].get_booster()
        #     Not support Keras
#         elif pipeline['name'] == 'Keras':
#             estimator = pipeline['pipeline'].model
        else:
            continueIPython.display.display(
            eli5.show_prediction(estimator, x_test[idx], top=10, vec=vec, target_names=labels))

ELI5 解释了测试数据,判定可能是 y=0,概率为 0.031。它还突出显示了一些高正面得分和负面得分单词。

石灰

Photo: https://www.weightlossresources.co.uk/recipes/calorie-counted/drinks/lime-soda-1-pint-309537.htm

顾名思义,LIME 只关注本地模型可解释和模型不可知的部分。

将训练好的模型和目标记录传递到石灰库。将创建线性词袋模型,并为训练白盒模型提供大量生成的记录。while box 模型作为一个二元分类器工作,指示单词存在的影响。比如“我喜欢苹果”。它可能会更改为“我喜欢”,然后它会对新创建的记录进行分类,以了解“苹果”有多重要。

所以不管提供的模型是什么,它也可以通过生成记录来解释模型。无论是 scikit-learn 库、XGBoost 甚至是 Keras 单词嵌入模型。在我的示例代码中,我在 sci-kit learn API 接口中实现了 Keras,这样我也可以使用 LIME 来解释 Keras 的单词嵌入模型。

number_of_sample = 1
sample_ids = [random.randint(0, len(x_test) -1 ) for p in range(0, number_of_sample)]for idx in sample_ids:
    print('Index: %d' % (idx))
#     print('Index: %d, Feature: %s' % (idx, x_test[idx]))
    for pipeline in pipelines:
        print('-' * 50)
        print('Estimator: %s' % (pipeline['name']))

        print('True Label: %s, Predicted Label: %s' % (y_test[idx], pipeline['pipeline'].predict([x_test[idx]])[0]))
        labels = pipeline['pipeline'].classes_.tolist()

        explainer = LimeTextExplainer(class_names=labels)
        exp = explainer.explain_instance(x_test[idx], pipeline['pipeline'].predict_proba, num_features=6, top_labels=5)
        IPython.display.display(exp.show_in_notebook(text=True))

#         break
#     break

LIME 构建了二进制分类器,因此我们可以看到,它用权重来表示它是否是 0、9、15 类,并突出显示高正负得分单词。

滑手

Photo: https://pixabay.com/en/skateboard-youth-skater-boy-skater-1869727/

对于全局解释,Skater 提供了特征重要性和部分相关方法。

尝试了几次,无法找到提供 sci-kit 学习管道包的方法。必须将原始文本转换为 numpy 格式并单独传递模型。第二件事是,当有大约 800 个独特的单词时,需要大约 2 分钟来准备特征重要性。

%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
import matplotlib.pyplot as pltfrom skater.model import InMemoryModel
from skater.core.explanations import Interpretationtransfromed_x_test = vec.transform(x_test[:2]).toarray()interpreter = Interpretation(transfromed_x_test, feature_names=vec.get_feature_names())for pipeline in pipelines:
    print('-' * 50)
    print('Estimator: %s' % (pipeline['name']))

    if pipeline['name'] in ['Logistic Regression', 'Random Forest']:
        estimator = pipeline['pipeline'].steps[1][1]
    else:
        continue

    print(estimator)

    pyint_model = InMemoryModel(estimator.predict_proba, examples=transfromed_x_test)

    f, axes = plt.subplots(1, 1, figsize = (26, 18))
    ax = axes
    interpreter.feature_importance.plot_feature_importance(pyint_model, ascending=False, ax=ax)
    plt.show()

Skater 提供了每个单词的特征重要性。

部分依赖【3】是一串数字,用来一一表示目标与特征之间的关系(线性、单调或复杂)。通过提供可视化,我们可以可视化一个特征和目标之间的影响。但是,如果有 NLP,我们可能不会使用部分依赖。

用于本地解释。滑手包装 LIME 模块进行本地文本解释。所以我会更喜欢用原生石灰,而不是纯粹的包装纸。

Photo: https://github.com/datascienceinc/Skater/tree/master/skater/core/local_interpretation/lime

拿走

你可以通过我的 github repo 访问代码

  • 当你阅读 Christoph 的博客 时,你可以参考上面代码中的局部代理模型(LIME) 部分。
  • 作为一名数据科学家,我们必须解释模型行为,以便产品团队和管理层信任可交付成果调试您的模型。否则你可能不知道你造的是什么。
  • 对于 NLP 问题,特征重要性或置换特征重要性要求太多特征 (word)。不太有用/推荐用在 NLP 方面。
  • LIME 在某些场景下无法正确解释模型。例如,分数可以每次都不同,因为它随机生成样本。会有另一篇文章介绍如何解决。
  • 对于 ELI5,在 ELI5 中的 show_weight(全局解释)中支持 sci-kit 学习管道,但在 show_prediction (局部解释)中不支持原因在这里提到的是。要克服它,你可以简单地直接使用石灰。
  • 分类器为 XGBoost 分类器使用 ELI5(版本:0.8)时有 bug 。如果使用 XGBoost 分类器,由于 Eli 5 bug(xgb _ classifier . get _ booster()),必须执行一些变通方法
  • 对于 Keras 模型,实现了 sci-kit learn API 接口,但仍无法使用 ELI5。ELI5 将检查对象类型以防止意外的库。
  • 特别感谢迪潘詹(DJ)萨卡补充对溜冰部分。

关于我

我是湾区的数据科学家。专注于数据科学、人工智能,尤其是 NLP 和平台相关领域的最新发展。

http://medium.com/@makcedward/访问我的博客

https://www.linkedin.com/in/edwardma1026获得连接

探索我来自 https://github.com/makcedward的代码

https://www.kaggle.com/makcedward查我的内核

参考

入门:将 CSV 文件加载到 Colab 的 3 种方法

原文:https://towardsdatascience.com/3-ways-to-load-csv-files-into-colab-7c14fcbdcb92?source=collection_archive---------0-----------------------

没有数据,数据科学就什么都不是。是的,那是明显的。不太明显的是将数据转换成允许您浏览数据的格式所涉及的一系列步骤。您可能拥有 CSV 格式的数据集(逗号分隔值的缩写),但不知道下一步该做什么。这篇文章将通过允许您将 CSV 文件加载到 Colab 来帮助您开始学习数据科学。

Colab(co laboratory 的缩写)是谷歌的一个免费平台,允许用户用 Python 编码。Colab 本质上是 Jupyter 笔记本的谷歌套件版本。与 Jupyter 相比,Colab 的一些优势包括更容易安装软件包和共享文档。然而,当加载像 CSV 文件这样的文件时,它需要一些额外的编码。我将向您展示三种将 CSV 文件加载到 Colab 并将其插入 Pandas 数据帧的方法。

(注意:Python 包中包含了常见的数据集。我不会在本文中讨论加载这些数据集。)

首先,请登录您的 Google 帐户,进入 Google Drive。点击左侧的按钮,如果安装了协同实验室(如果没有,点击连接更多应用,搜索协同实验室并安装)。从那里,如下所示导入熊猫(Colab 已经安装了它)。

import pandas as pd

1)从 Github(文件< 25MB)

The easiest way to upload a CSV file is from your GitHub repository. Click on the dataset in your repository, then click on 查看 Raw 。将链接复制到原始数据集,并在 Colab 中将它存储为一个名为 url 的字符串变量,如下所示(一个更简洁的方法,但不是必需的)。最后一步是将 url 加载到 Pandas read_csv 中以获得 dataframe。

url = 'copied_raw_GH_link'df1 = pd.read_csv(url)# Dataset is now stored in a Pandas Dataframe

2)从本地驱动器

要从本地驱动器上传,请从以下代码开始:

from google.colab import files
uploaded = files.upload()

它会提示您选择一个文件。点击选择文件,然后选择并上传文件。等待文件 100%上传。一旦 Colab 上传了文件,您应该会看到它的名称。

最后,键入以下代码,将其导入到 dataframe 中(确保文件名与上传文件的名称相匹配)。

import iodf2 = pd.read_csv(io.BytesIO(uploaded['Filename.csv']))# Dataset is now stored in a Pandas Dataframe

3)通过 PyDrive 从 Google Drive

这是三种方法中最复杂的一种。我将展示给那些将 CSV 文件上传到 Google Drive 进行工作流控制的人。首先,键入以下代码:

# Code to read csv file into Colaboratory:!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials# Authenticate and create the PyDrive client.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

出现提示时,点击链接获得认证,以允许谷歌访问您的驱动器。您应该会看到一个屏幕,顶部显示“ Google Cloud SDK 想要访问您的 Google 帐户”。在您允许权限后,复制给定的验证码并将其粘贴到 Colab 中的框中。

完成验证后,转到 Google Drive 中的 CSV 文件,右键单击并选择“获取可共享链接”。该链接将被复制到您的剪贴板中。将这个链接粘贴到 Colab 中的一个字符串变量中。

link = '[https://drive.google.com/open?id=**1DPZZQ43w8brRhbEMolgLqOWKbZbE-IQu**'](https://drive.google.com/open?id=1DPWWI61v2brRhbEMolgLqOWKbZbE-IQu') # The shareable link

你想要的是等号后面的 id 部分。要获得这一部分,请键入以下代码:

fluff, id = link.split('=')print (id) # Verify that you have everything after '='

最后,键入以下代码,将该文件放入数据帧中

downloaded = drive.CreateFile({'id':id}) 
downloaded.GetContentFile('Filename.csv')  
df3 = pd.read_csv('Filename.csv')# Dataset is now stored in a Pandas Dataframe

最后的想法

这是将 CSV 文件上传到 Colab 的三种方法。根据文件的大小和组织工作流的方式,每种方法都有其优点。一旦数据有了更好的格式,比如熊猫数据帧,就可以开始工作了。

奖励方式——我的动力

非常感谢你的支持。为了纪念这篇文章达到 50k 的浏览量和 25k 的阅读量,我提供了一个将 CSV 文件导入 Colab 的额外方法。这个很简单干净。在你的 Google Drive (" My Drive ")中,在你选择的位置创建一个名为 data 的文件夹。这是您上传数据的地方。

从 Colab 笔记本中,键入以下内容:

from google.colab import drive
drive.mount('/content/drive')

就像第三种方法一样,命令会将您带到 Google 身份验证步骤。您应该会看到一个屏幕,上面显示 Google Drive 文件流想要访问您的 Google 帐户。得到允许后,复制给定的验证码,粘贴到 Colab 中的框内。

在笔记本中,点击笔记本左上角的炭笔 > ,点击文件。找到您之前创建的数据文件夹并找到您的数据。右击您的数据并选择复制路径。将这个复制的路径存储到一个变量中,就可以开始了。

path = "*copied path*"
df_bonus = pd.read_csv(path)# Dataset is now stored in a Pandas Dataframe

这种方法的伟大之处在于,你可以从你自己的 Google Drive 中创建的单独的数据集文件夹中访问数据集,而无需第三种方法中涉及的额外步骤。

我在 2017 MLHC 学到的 30 件事

原文:https://towardsdatascience.com/30-things-i-learned-at-mlhc-2017-c47abe8d3cda?source=collection_archive---------8-----------------------

注:本帖原载于 irenechen.net,我的个人博客。

在过去的这个周末,我在 MLHC 2017 展会上了解了很多关于机器学习和医疗保健的知识。这里有 30 个想法和发现,我可以压缩成要点。

请原谅(并联系我)在总结或归因的任何错误。

Lots of healthy snacks at Machine Learning for Healthcare 2017, held at Northeastern University.

医疗保健有什么特别之处?

  • 数据很多但很难访问!贝丝以色列女执事医疗中心处理 7pb 的患者数据。然而,由于数据可用性挑战或针对罕见疾病,许多论文处理了数千甚至数十名患者的数据集。📎
  • FDA 的批准很难,但很重要。虽然最初的过程是艰巨的,但较小的更新(例如,重新训练深度学习模型)只需要通知,但新模型需要重新批准。说服 FDA 的一个方法是展示模型的准确性符合人类专家的变化。📎
  • 可自由访问的海量数据集加速了医疗保健领域的机器学习研究,许多被接受的论文使用了模拟数据📎 📎
  • 有效性和可再现性是这个成长领域的当务之急。研究人员使用模拟数据复制了 38 个实验的数据集,发现一半的实验列出了群组大小,复制的群组大小差异超过 25%。📎

可解释性很重要

  • “基本原理”是简短、连贯和预测性的短语,可以解释啤酒评论和病理学报告。尽管啤酒评论有助于获得大量带注释的数据,但医疗保健专业人员尤其关心理解为什么将黑盒方法应用于病理学报告。📎
  • 你可以把可解释性看得更远,并认为可解释的模型“应该适合 Powerpoint 幻灯片,并且可以不用计算器来计算。”扩展罗生门效应,多个模型可以具有相似的性能,但可解释性水平不同。为什么不找一个高性能高解释性的模型?📎

医疗保健包括医院运营

  • 用深度传感器监测手部卫生可以预防医院获得性感染——每 25 名患者中就有 1 人受到感染。匿名的深度感知人类在进入和离开病房之前和之后被评估是否正确遵循手部卫生协议。📎
  • 更好地预测手术持续时间有助于提高医院效率和平衡成本:额外的停机时间没有调度冲突那么糟糕。📎
  • 即使看似简单的机器学习方法也可以极大地改善医院流程,比如在收到的同意书上使用 OCR 将它们导入正确的患者档案。📎
  • 一小时未经治疗的中风会使大脑老化 3.6 年,这凸显了治疗住院中风患者的重要性。📎

强化学习行动

  • 在移动医疗的应用中,人们必须在及时干预和烦人的通知之间取得平衡。强化学习(RL)方法可以适应用户的偏好,并推荐活动建议和激励消息。在许多统计学上的微妙之处中,RL 必须平衡治疗的负面即时效应和潜在的巨大延迟收益。我们可以通过比例反馈控制减少治疗的后验均值来解决这个问题。📎
  • 由于后勤、批准和伦理方面的原因,很难进行对照试验。从观察数据中学习连续状态空间上的治疗策略以模拟 RL 的重复实验是可能的。📎
  • 在一项随机试验中,接受雷诺嗪治疗的患者死亡率没有差异;然而,对高危患者使用专门的治疗策略,结果显示出巨大的差异。RL 在构建最佳治疗策略方面取得了成功。📎

计算机视觉的胜利

  • 视频记录可以使用基于神经网络的姿势估计来加速和标准化对运动障碍的诊断,例如帕金森病共济失调📎
  • 姿势估计的另一个有用的应用是使用沙漏网络评估外科医生的技术技能,来自机械土耳其人的工人通过集合投票提供注释数据。📎
  • 使用 CNN 分割心脏超声波图可以让心脏病专家节省时间和精力。📎

创造性的方法

  • 社交媒体帖子历史嵌入可以捕捉用户之间的心理健康和同性恋关系的属性。📎
  • 一篇病毒式的博客文章和激进的搜索引擎优化让一名研究人员找到了与他的幼子患有相同遗传疾病的其他患者。📎
  • 科学文章的众包注释可以帮助创建基因突变和治疗的知识图表。大约 6 个外行人能够用 1 个专家的能力进行注释。📎
  • 在说服临床医生采用系统时,使用心理学尤其重要:反复的积极反馈有助于缓解对新系统或增加的日志记录机制的抵制。📎

杂项 ML 方法

  • 为了处理部分丢失的数据标签,仅从被注释的片段子集反向传播丢失。📎
  • 异方差指一个变量的可变性在预测它的第二个变量的值的范围内不相等的现象。手术持续时间永远不会为负,所以我们不会期望误差的可变性遵循类似高斯的东西。使用多层感知器,我们可以估计每个预测点的方差和均值。📎

零碎东西

  • 特别感谢 Andreas Stuhlmuller 用他对 2016 年 NIPS 的总结启发了这篇文章
  • AWS 因其易用性和 HIPAA 合规性安全性获得了大量欢呼。📎 📎
  • 和大多数会议一样,MLHC 在推特上很活跃,这也是我如何认识扎卡里·利普顿的原因。
  • 面粉面包店继续供应美味的三明治和美味的饼干。
  • 我很好奇 2017 年的 MLHC 将何去何从。我喜欢每份报纸每半天都有大人物主持的形式。会议已经从几年前的 11 人增长到 270 人,观众组合倾向于机器学习研究人员。向前!

*评论?有问题吗?我忘记什么了吗?

给我“鼓掌”,给我发电子邮件到iychen@mit.edu,或者在下面评论!*

TensorSpace.js 实现神经网络图层的三维可视化

原文:https://towardsdatascience.com/3d-visualization-of-nn-layers-with-tensorspace-js-7a8ef5440125?source=collection_archive---------19-----------------------

介绍

你有没有想过:“CNN 内部到底发生了什么?”,“我的模型学习了哪些功能?”,“如何正确地可视化我的深层网络的中间层,而无需编写大量代码和安装几十个库?”。

如果你的答案是肯定的——tensor space . js 是你梦寐以求的图书馆!

TLDR:

tensor space . js——是一个神奇的框架,可以在您的浏览器中实现神经网络层的 3D 可视化!它的第一个版本刚刚在一周前发布(如果你正在 2018 年 11 月阅读这篇文章),可以与 Tensorflow、Tensorflow.js 和 Keras 模型配合使用。

在本文中,我将向您介绍可视化张量流模型的基本步骤。我将解释您应该如何训练和导出您的模型以与 TensorSpace.js 兼容,以及我将解释如何在您的浏览器中可视化保存的模型。

先决条件

我假设您已经安装了 Tensorflow。

另外,为了保持简短,我不会详细介绍 TensorSpace.js 的安装。这相当简单,你可以使用我的 GitHub 代码模板,并安装所有 TensorSpace.js 依赖项。

模特培训

为了简单起见,这里我们将使用 Tensorflow 训练一个简单的 CNN 模型来识别 MNIST 数字。

首先,让我们创建一个 DataHandler 类来处理我们的数据:

该类从 csv 文件中加载 MNIST 数据,将其分成训练集和测试集,并提供训练批次。

接下来,我们将创建一个模型类来创建、训练和保存我们的模型。这里我们将使用具有 3 个卷积层和 2 个全连接层的简单 CNN。

现在,在训练您的模型时,您应该记住一些重要的注意事项:

  1. 为您想要可视化的所有层定义“名称”(因为您将在模型转换和网络可视化阶段使用这些名称)。注意,这里我们使用的是纯 tensorflow 方法,还有像tf.layers.conv2d这样的包装器,实际上是在后台创建多个变量。
  2. 使用tf.saved_model方法导出你的模型,而不是tf.train.

在这里,我们希望可视化 3 个卷积层、相应的最大池层、密集层和 softmax 函数后的模型输出。

此外,我们输出图形变量列表只是为了确保我们知道想要显示的变量的正确名称。我们将使用以下变量:

  • l1/Relu
  • l1max
  • l2/Relu
  • l2max
  • l3/Relu
  • l3max
  • l4/Relu
  • l5/BiasAdd
  • 输出

最后,我们还将输出。验证图像的 json 文件,我们将使用它进行流可视化。

模型导出

训练完我们的模型后,您应该会得到包含以下内容的模型文件夹:

  • 变量
  • ——variables . data-00000/00001
  • — —变量.索引
  • 已保存 _ 模型. pb

现在我们需要将我们的模型转换为 Tensorflow.js 模型。如果您之前没有安装,只需在终端中键入:

pip install tensorflowjs

现在,让我们用要可视化的张量流变量的名称创建一个变量:

vs='l1/Relu,l1max,l2/Relu,l2max,l3/Relu,l3max,l4/Relu,l5/BiasAdd,output'

注意:在所有阶段,遵循与初始化时相同的命名顺序。

现在我们把它转换成 Tensorflow.js 模型!

tensorflowjs_converter --input_format=tf_saved_mode --output_node_names=$vs --saved_model_tags=serve Model TensorSpace/mnist/model

这里 Model 是包含保存模型的文件夹,TensorSpace/mnist/model 是转换输出的目标。因此,在您的 TensorSpace/mnist/model 文件夹中,您应该会获得以下文件:

  • 第 1 组-第 1 部分,共 1 部分
  • tensorflowjs_model.pb
  • 权重 _ 清单. json

现在我们可以开始可视化部分!

TensorSpace.js 可视化

最后,我们需要创造。将输出结果的 html 文件。

不要把时间花在设置 TensorFlow.js 和 JQuery 上,我鼓励你只使用我在 TensorSpace 文件夹中的模板。文件夹结构如下所示:

  • index.html—输出 html 文件以运行可视化
  • lib/-存储所有依赖项的文件夹
  • data/ —包含的文件夹。带有网络输入的 json 文件
  • model/-包含导出模型的文件夹

对于我们的 html 文件,我们需要首先导入依赖项并编写一个 TensorSpace 脚本。

在脚本中,我们需要定义所有要可视化的图层(带参数)。可能的层的完整列表可以在这里找到。接下来,我们在model.load方法中加载转换后的模型,指明生成的模型文件的路径和要可视化的变量的名称。最后,我们运行model.init来处理输入文件(我们在模型训练结束时生成的文件)。

瞧,现在你可以在任何兼容的浏览器中运行你的 html 文件,并从内部探索你的模型!

您的结果应该类似于:

3D Network visualization with TensorSpace.js

现在,您可以开始探索您的网络工作流程了!

结论

在本教程中,我们接触了 TensorSpace.js 功能的一小部分。我鼓励你使用代码并在你自己的模型上试用它!

如果你有问题或者你想探索 TensorSpace.js 的其他功能或者它在其他模型上的应用(Keras,Tensorflow.js ),请在下面留下评论!

4.0 行业技术和供应链

原文:https://towardsdatascience.com/4-0-industry-technologies-supply-chain-97c857de14ae?source=collection_archive---------9-----------------------

新行业的典范

在现代社会,需求越来越复杂和个性化。在行业中,这意味着为了满足人们和公司的需求,必须采用更高效、更智能的生产方式,最大限度地提高所有相关流程的利润,从根本上降低成本,缩短生产时间。简而言之,优化生产。目前,供应链不再仅仅是沿着供应链跟踪产品的系统,而是成为获得竞争优势甚至建立自己品牌的一种方式。

因此,第四次工业革命的特征是智能工厂的创建,这些工厂实施并集成了最先进的技术,如网络物理系统(将有形资产与数字双胞胎相结合)、IIoT(工业物联网)、数据分析、增材制造、3D 打印和人工智能。应用这些技术可以实现必要的优化和自动化,从而降低成本和缩短制造时间。这将允许我们生产数千种不同的产品配置,并以非常低的成本生产非常小批量的产品。

供应链是这些技术的使用能够引起流程优化和自动化革命的主要领域之一。供应链目前面临的主要问题是缺乏透明度和难以追踪通过供应链的货物。

Figure by the author

众所周知,Maersk 是一家国际集装箱货物运输公司,在该行业拥有最大的市场份额(约 20%)。管理集装箱运输的成本目前高于集装箱本身的实际运输成本,这是由于必须在所涉国家和有关当局进行授权和办理手续。简而言之,因为缺乏信息的透明度和资产的可追溯性,这减慢了整个过程,并大大提高了成本。

这就是为什么物联网、区块链和大数据技术的应用和集成,参考第四次工业革命,将标志着生产流程的转折点,这也是我们将在整篇文章中探讨的内容。

特别是,物联网技术在这场革命中具有特殊的意义,以至于人们创造了一个新的特定术语来指代这些技术在 4.0 行业背景下的应用:工业物联网(或 IIoT)。作为这些可扩展和可集成生态系统的一部分的设备必须受到极其有效的管理,因为不同网络物理系统之间的认证和通信是这些技术中的关键,所生成数据的收集、处理或存储中的故障可能会在整个生产链中产生灾难性的后果,甚至对人员损失产生影响。

这就是为什么数据的分散、不可变和集成管理至关重要,正是在这种背景下,区块链技术可以提供不同的价值。由于这项技术的应用,每个集成设备的活动和身份都可以记录在生产系统中,而没有操纵数据及其后果的风险。

此外,区块链可以通过机器之间的通信协议进行集成,允许在设备本身之间创造新的经济,在这种经济中,它们可以通过智能合同就原材料、能源、零件、维护甚至物流的供应达成协议,一旦满足之前建立的条件,智能合同的支付将自动执行。已经有通过区块链进行微支付的例子,或者与出售数据的传感器发生纠纷的例子,以及在自己和充电点之间进行电力交易的电动汽车的例子。

这种整合涉及数百个流程的精简和自动化,这些流程目前需要大量的中间步骤,这些步骤阻碍并增加了当前的生产流程。此外,对监管(和人类)第三方干预的需求显著减少,这将极大地降低随之而来的相关费用。这样,可以实现满足个性化和单一化生产需求所必需的边际成本的降低。关键是生产过程的非中介化,这样公司就可以接收到对一个分散的门户网站的请求,这个门户网站是廉洁的,所有相关方都可以轻松访问。

一旦存储在安全和透明网络中的这些数据可用,涉及数据科学背景的技术(如数据分析、机器学习和大数据)就可以处理数据。这使我们能够提取重要信息,并对需求、零件价格和维护进行准确高效的预测分析,以确保供应链和生产系统的正常运行

供应链目标和当前的低效率

从基于产品和客户的供应链系统的角度来看,这需要不同代理之间的合作,如买方、供应商、分销商……有许多目标需要强调:

1)数据共享和处理的效率:

像库存或资源运输这样的资产管理需要通过协作来提高效率。在这些方之间有效地共享信息可以在正确的时间将货物交付到正确的地方,最大限度地降低成本并满足客户的需求,或者相反,混乱。因此,如何在整个行动中共享和处理信息是极其重要的。

2)优化运输和物流:

参与运输、订购和装运货物的每个代理依赖于避免高成本和不良同步的活动的优化。在这种情况下,自动交易非常有用,但是必须特别小心,并且必须有人定期检查系统的正常运行。

3)质量改进反馈:

知道系统的问题或缺陷在哪里,将允许代理专注于指出漏洞或错误的可信信息。这是基于有效管理的原则“不能测量的就不能改进”。

4)建立长期稳定性:

在供应链生态系统中建立信任关系可以创造运营的稳定性,并加强共同业务计划的合作计划、协调和分配,从而提高商品交换的协调性,并由此建立更好的客户-制造商关系。

与供应链相关的物联网特性:

物联网被理解为集成了电子设备、软件、传感器和致动器的设备、车辆和家庭应用的网络,这些设备、车辆和家庭应用相互连接,目的是收集、存储和共享信息,并有可能执行与信息相关的特定操作。

众所周知,微处理器、控制器和传感器的价格下降使得物联网系统激增,这些系统可以收集、传输和存储大量数据。

目前,该概念远远超出了机器对机器(M2M)通信,并描述了一种用于设备、系统和服务的高级连接网络,其符合各种各样的协议、域和应用。

物联网,更具体地说是它的工业版本 IIoT,被称为在运营效率、商业机会和制造商收入方面彻底改革供应链。将通过以下方式实现这一目标:

1)资产可追溯性:

过去,跟踪数字和条形码是为了管理供应链上的货物。目前,RFID 方法和 GPS 传感器可以监控产品从生产到到达最终客户的状态和位置。能够及时获得对交付管理和质量的控制,以及对需求的预测,这使它成为某种游戏规则的改变者。

2)与供应商的关系:

据 IBM 称,公司产品价值的 65%来自供应商。通过跟踪资产获得的数据使制造商能够优化生产计划和与供应商的关系模式识别,从而揭示重要的商业机会。因此,特别关注与他们有关的整个过程是至关重要的,因为更高质量的服务和产品会促进与客户更好的关系。

3)股票和预测:

物联网传感器可以跟踪库存和库存供应,只需点击一下鼠标,就可以进行未来制造,还可以将信息存储在云中的共享空间,所有相关方都可以轻松访问。所有这些使得生产计划更加高效。

4)联网运输:

无论是纵向还是横向,供应链都不会停止增长,确保所有集装箱和船队都连接在一起,从而在整个供应链中实现完整有效的信息传输,这一点变得越来越重要。

与供应链相关的区块链特性:

简而言之,区块链是一个信息存储系统,安全,匿名,去中心化,并且由于它使用的加密技术,免于操纵。

区块链可以理解为一系列包含我们想要保存的信息的文本文件,形成了一个区块链,其中每个区块都包含前一个区块的信息,这个包含前一个区块的信息,以此类推。

因此,区块链是一个计算机网络,其中作为网络一部分的所有设备都保留了网络的副本。这不同于传统的数据库服务器,在传统的数据库服务器中,信息只有一个副本,它集中在一台服务器上,每个用户都在这台服务器上搜索信息。

相比之下,区块链可以在组成网络的所有设备中找到,它是一个去中心化和分布式的数据库,相对于传统数据库,这一特征使记录的信息更加安全,难以被操纵或丢失,这就是区块链成功的关键。

共识和智能合同允许区块链自动处理供应链流程中发生的交易。因此,当前的区块链应用程序利用了这一特性,如 Hyperledger 和 IBM 基于其技术的解决方案。

与供应链相关的数据科学特性

预测分析被定位为能够革新供应链的最强大的工具。以至于到 2020 年,这个行业的市场价值预计将超过 9 万亿美元。数据科学以及不仅能够从中提取相关信息,而且能够做出准确预测的能力,使得能够捕捉实时决策,从而显著改善该领域的战略和绩效行动。

机器学习是近年来发展迅猛的数据科学子领域之一。它可以定义为:

“机器学习是一门让计算机像人类一样学习和行动的科学,通过以观察和现实世界互动的形式向它们提供数据和信息,以自主的方式随着时间的推移改善它们的学习。”

与深度学习携手,这门科学使我们能够建立具有人工智能的系统,这种系统可以利用计算机每秒进行数百万次计算的能力,并在决策过程和重复任务的自动化方面提供巨大帮助。

目前,这些都是无处不在的技术(它们是我们生态系统的一部分,也是我们日常生活的一部分),我们在任何地方都能发现它们:从图像识别(能够比 T4 医生更准确地检测癌症),到游戏引擎(能够击败世界上最伟大的围棋选手)、聊天机器人和欺诈检测器。

Figure by the author

这些技术的引擎是我们今天可以获得的数量惊人的数据。由于技术和传感器价格的大幅下降,我们现在可以创建、存储和发送比历史上任何时候都多的数据。仅在过去的两年里,全球就有高达 90%的数据被创建。按照我们目前的速度,每天会产生 25 万亿字节的数据,而且这一速度还会继续增长。这些数据为机器学习模型提供了信息,也是这门科学近年来蓬勃发展的主要驱动力。

具体而言,数据分析和机器学习模型的应用将影响供应链的三个主要领域:

1)需求预测:

根据过去的事件和趋势对产品和商品的未来需求进行有效预测是在不增加成本的情况下改善售后服务的一个关键组成部分。

这些技术的应用可以消除库存积压,并允许仓库在它们之间工作,增加供应链的完整性和流动性,主要目标是实现服务零件的高可用性、产品的运行时间和最小的风险以及更好的客户服务。

2)预测定价:

这方面的经典处理方法是通过电子表格,根据过去的价格来评估服务零件的价格。问题是零件和产品在不同的地点以不同的价格出售,这转化为糟糕的客户体验和制造商获得利益的机会的丧失。

通过使用预测算法来估计零件的价格,制造商必须考虑影响销售的不同因素,包括零件的位置、季节性、天气和需求。机器学习模型允许考虑所有这些因素,从而对价格进行更加精确的调整。

3)预见性维护:

中断修复服务是被动和低效的。高达 55%的服务失败是因为服务零件在需要时不可用,这转化为产品停机时间的增加、库存故障、产品所有者的收入损失和客户不满。

通过物联网和预测分析的协同集成,不同方将能够在服务零件接近故障时进行检测和通信,因此,制造商可以确定何时需要新零件,主动将它们引导到经销商或维修中心,而不是存储它们,占用库存空间。所有这些都有助于减少库存过剩和与之相关的额外成本。此外,提高零件填充率,避免计划外停机的成本和腐败,并最终改善客户体验。

结论

物联网技术与区块链和大数据的融合可以解决供应链面临的许多问题。应用工业 4.0 技术使我们能够利用物联网实时监控供应链流程的每个部分,验证数据的完整性和透明度,通过区块链智能合同建立设备之间的经济,并利用数据科学对服务部分的需求、价格和维护进行精确预测。

所有这些都转化为生产过程功效和效率的根本改善,并带来必要的优化,以满足公众的新需求,提供最佳的客户体验,并最终改善行业生态系统。这为制造商节省了成本,从而为客户提供了更好的服务,并最终提高了人们的生活质量。这使我们走上了可持续发展的道路。

我写这篇文章的目的是帮助你理解当前的技术范式及其在行业中的应用,具体来说就是在供应链中的应用。为了鼓励你不断学习这些技术,探索它们的无限可能。未来是光明的,在每个人的合作下,我们将能够更快地实现我们的目标。

零售业中的 4 个人工智能案例

原文:https://towardsdatascience.com/4-cases-of-artificial-intelligence-ai-in-retail-57746abafe7e?source=collection_archive---------5-----------------------

我们已经走过了很长一段路,以前所有的购物都是在实体场所进行,有镜子和销售助理来帮你。由于过去 25 年的数字革命,现在你可以在网上购买任何东西,这也开始影响人们在实体店购物的方式。人工智能(AI)是商业世界现代技术的基石,因为所有行业的公司都受益于自动化、定制和推荐引擎的好处,这些引擎将更多的消费者带到了他们的业务场所。

这在零售业务中尤其如此,人工智能开始在购物体验中发挥作用,因为消费者可以根据自己的兴趣找到合适的商品。此外,虚拟现实(VR)正在让顾客不用实际穿上就能更容易地试用物品。其中许多企业使用机器人流程自动化(RPA)技术将正确的产品推给正确的人,而 WorkFusion 为寻求改善客户购物体验的公司提供了一个平台。

下面是 AI 在零售业的四个案例。

1)浏览数字目录

人工智能为我们带来了先进的推荐引擎,使消费者能够在通常所需时间的一小部分内找到合适的商品。消费者可以浏览数字目录,询问他们关于偏好和他们正在寻找的商品类型的问题,而不是浏览数百种实体商品。根据他们的尺寸、个人信息、颜色偏好和其他因素,目录可以向他们展示适合他们的商品。销售书籍、配饰或其他任何东西的非服装零售商也是如此。

2)高级手势识别

除了拥有这些数字目录,零售商还可以通过监控购物者的面部和手势来监控商品在购物者中的成功程度。购物者对某种商品的反应告诉这些机器人销售助理,该商品是否是潜在的热门商品或无用商品。此外,通过更多地了解商品如何影响用户,推荐引擎可以更有效地找到适合特定用户的商品。

3)在虚拟镜像上检查自己

除了试穿衣服,你还可以用虚拟镜子来看看一件衣服穿在你身上是什么样子。公司一直在开发人工智能平台,允许用户在短时间内尝试许多不同的项目。如果你正在寻找合适的服装,你可以使用这项技术来确定哪件衣服最适合你,以及哪件衣服或配件与那件衣服相配,从而提供无限数量的服装选择。

4)视频分析在客户互动中的应用

自然,零售商在他们的商店里有摄像头,这些摄像头被用来提高这些商店的安全性,以及客户服务和合规性。计算机视觉技术的进步为消费者带来更舒适的体验和更有利可图的购物体验铺平了道路。这种零售监控可以帮助零售商了解其客户的产品暴露水平、参与度和整个商店的导航路线,这对于决定不同商品的摆放位置至关重要。

总之,好赌

随着一些零售商在商店中实施人工智能的成功,这项技术似乎很快就会成为该行业的一个重要组成部分。与一家软件公司合作,帮助零售商的创意团队找到销售产品的创新方法,可以在竞争日益激烈的美国经济中大有作为。人工智能可以通过便利性和定制化改善消费者体验,从长远来看,这将导致满意的客户和更高的利润率。

有抱负的数据科学家的 4 个招聘技巧

原文:https://towardsdatascience.com/4-hiring-tips-for-aspiring-data-scientists-46e50438ed5b?source=collection_archive---------6-----------------------

一家 600,000,000 美元的科技公司的首席数据科学家在招聘时会寻找什么?

You can watch a video version of this article on YouTube.

所以你想在数据科学领域找份工作?

你已经完成了所有的课程,并且你已经做了一些非常可爱的观想,但是现在呢?

最近我在墨尔本,有幸被带领参观澳洲最大的科技公司之一,REA 集团。

他们的主网站realestate.com.au每月有 700 万次独立访问——记住这是澳大利亚,我们的人口是 2200 万。所以每个月有三分之一的人访问这个网站。我们热爱房地产。

从每月 700 万次不同的访问中,收集、分析和试验了 3 亿个数据点,以提供更好的体验。

当 REA 集团的首席发明家奈杰尔·道尔顿和我讨论 REA 集团的时间线时,他说他们正在从搜索空间转移到匹配空间。

这意味着什么呢?

REA 希望利用他们的数据来帮助你找到最合适的酒店,而不是去寻找最合适的酒店。本质上,利用你过去的偏好向你展示你更可能感兴趣的地方。

如果你认为这是新的东西,它不是。网络上到处都在发生这种事。网飞的推荐引擎和脸书的 newsfeed 就是这样做的。我和我的兄弟们已经很少搜索 YouTube 视频了,因为他们的推荐太好了。

这一切怎么可能?

模式。模式无处不在。你头骨顶部的 3 英寸是一个专家模式识别器。这就是一个 20 年经验丰富的房地产经纪人如何在当地郊区寻找一所房子,并在小数位数内猜测其价值。但是现在,我们用机器复制这种模式识别的能力正在赶上,在某些情况下,超过了我们的灰质。

你我都无法接受 3 亿个数据点,想象如何改善 700 万人的体验。也许我可以拿 10 块钱给一个人,你拿 20 块。那么,如何根据一个人以前的搜索来匹配他的房产呢?数据科学。

我在找什么?

当我与 REA 最资深的数据科学家交谈时,我想知道如何才能加入他的团队。

为了清楚起见,REA 有一个 12 人的数据科学团队,数据在 REA 的几乎每一个商业决策中都发挥着作用。一个相对较小的团队使用正确的工具可以产生多大的影响,这是一件美妙的事情。

“当你打算雇佣新员工时,你会期待什么?”

我把我们的讨论浓缩成以下几点。

1.技能

技能是必须的。这是毫无疑问的。

但是到底是什么技能呢?

Python 或者 R 才是你想去的地方。

多少蟒蛇?多少钱?

这里没有确切的答案。能够操作数据帧是一个很好的起点。如果你不确定数据框架是什么,不要烦恼。找出并了解它们,然后继续阅读。

你可以毫不费力地在网上找到一门数据科学或机器学习课程,以及一两本与之配套的书。我是这样学的,而且我会继续这样学下去。如果你想开始,我推荐你在 Coursera 或 Udacity 上的任何东西。是的,他们得到了报酬,但是你得到了你所付出的。

没有完美的技能或完美的课程/书籍。跳进来试一试。一旦你学会了一些东西,就开始思考如何将它们应用到你感兴趣的事情上。这可能需要一段时间,可能需要一天。无论哪种方式,记住,学习一项新技能是很难的。预计有些时候会很难。

2.适应性

“我们的大多数问题不需要同样的技能,基础是需要的,但不是一切都是一样的。”

所以你一直在努力学习,现在你已经掌握了一些技能。太好了!现在可能是时候申请一些角色了。但是你读了工作列表,很快就对这些要求感到沮丧。

在 T4 有 X 年经验,在数据可视化方面有 X 年经验。
X 年 PowerPoint 经验(什么?).

你一直在学 Python。该死的。那个角色看起来真的很好。

等等!不要害怕。每个招聘启事都会有这样的内容。这是常态。

无论你学到了什么技能,都不太可能与招聘启事中列出的完全相符。还是申请吧。

这些技能的美妙之处在于它们的适应性。这就是你要做好的准备。问题不会总是出现在同一个整洁的小包裹里。

这是你可以展示你在学习过程中所做的事情的地方。

3.展示你的作品

好的,你已经学习了一些技巧,并且已经在一些数据上进行了测试。一切都没有按计划进行。

现在你读到了一个你真正喜欢的角色,但你又一次被“46 年的数据忍者经验”抛到了一边。

这是另一种说法,“我们需要你能够自己骑自行车,这样我们就不用再教你如何骑带辅助轮的自行车了。”

你猜怎么着?你已经扔掉了你的辅助轮。你可能有点摇摇晃晃,但你还在骑自行车。

但是像我刚才那样进行类比可能在面试或求职信中没有用。如果是这样,那就和你的雇主(和你)击掌吧。

哪里可以展示你的作品?

互联网给了我们一大堆工具来展示我们的创造力。我们的讨论中出现了几个问题。

你自己的网站

曾经想要一个完全属于你自己的互联网角落吗?这是可能发生的地方。

当我第一次推出我的博客时,我很害怕。几年后,它成了我的一部分,我喜欢有自己的空间来分享我的想法和我一直在做的任何事情。

你可以编写自己的代码,但是我们也有很多选择,比如 Medium、GitHub Pages、SquareSpace 和 WordPress。写一篇关于你最近从事的项目的文章。分享一个关于如何深入了解开源数据集的想法。

如果一个帖子的浏览量为 0,不要担心。这都增加了你的工作证明。所以如果有人问:“你有过 X 的经历吗?”你可以说,“嗯,不完全是,但我确实写了一篇关于我如何处理 Y 和我如何从中学习 Z 的文章。”

开源代码库

你知道我在说什么。代码生存的地方。

如果你正在编写代码,并希望它被看到或分享,GitHub 是一个合适的地方。

美好的事物?你可以在 GitHub 上免费编写一个完整的数据科学管道,写下你的思维过程,并分享一个循序渐进的教程。

使用您的 readme.md 文件为您和他人带来好处。不要只贴代码,描述它做什么,为什么重要。这是我仍然可以努力的事情。

商务化人际关系网

LinkedIn 是新的简历。如果你花了 8 个小时制作一份漂亮的简历,你至少应该在你的 LinkedIn 个人资料上做同样的事情。

至少,填写必填字段,写一段关于你自己的描述,并附上一个标题。

一个好的标题应该告诉别人你是做什么的,或者至少用 10 个字引起他们的兴趣。

你希望别人第一次看到你的个人资料时会想到什么?

I’m a fan of: I [VERB][WHAT YOU DO].

与 GitHub 不同,你不能直接在 LinkedIn 上分享代码,但你可以分享文本、照片、视频,甚至在你的个人资料上写文章。发帖没有秘方。我开始了为期 30 天的 LinkedIn 挑战。一个月来,我每天都发布一些东西,这是开始在平台上建立势头的一个很好的方式。

LinkedIn 的美妙之处在于到处都是像你这样的人。每个人都在某种程度上寻求提高自己和帮助他人。不要害怕接触你想进入的行业中的人,向他们寻求建议。如果你给 47 个人发了信息,却只得到 2 条回复,不要把它当成一件坏事。每个人都有和你一样复杂有趣的生活。

LinkedIn 是人们寻找雇员时最先去的地方之一。如果你想要一个角色,准备好你的角色。

其他选项

写作不是你的事?上镜更好?制作一个分享你最新项目的视频,在 LinkedIn 上分享。

学到了一个你认为对别人知道会有帮助的新东西?为他人创建 YouTube 教程。

互联网给了我们很多展示自己作品的方式。找到最适合你的唯一方法就是尝试几个,看看哪些能坚持下来。

4.渴望学习

这与适应性密切相关。如果你不渴望学习,你就无法适应。

技术每天都在进步。上个月最先进的技术下个月就不会是最先进的了。

“你对实习生有什么要求?”我问。

“他们多么快地抛弃旧方法,去学习新的更好的东西。”

你曾经尝试过和一个无论如何都是对的人对话吗?

一点都不好玩。

不断学习意味着最终你会错。错了也没什么不好。唯一错误的时候是当你不接受自己的错误并继续前进的时候。相反,你陷入了旧的做事方式。

我刚开始的时候很难接受这一点。我以为我什么都能做。我觉得应该很容易。不对。

学习新东西很难。接受总会有新的东西要学并不会让它变得更容易,这意味着没有惊喜。

下一步是什么?

你有技能,你能像嗜热生物一样适应,你比大多数美术馆更好地展示了你的作品,你比拥有第一台 iPad 的 8 岁孩子更渴望学习。

很好,但是你现在做什么?

申请。工作。等等。重复一遍。

展示你的工作可能会带来机会,但很可能你自己也要做很多拓展工作。通过职业页面的传统申请是一个很好的起点。在这里之后,如果你真的想脱颖而出,试着写一篇关于这个角色的文章。把它和你的申请一起寄出去。或者做个网站。

whycompanyXshouldhireyourname.com

要有创意。你不仅仅是一页简历。

你已经申请好了。没人在看你的文章。你没有收到任何回复。已经三周了。所有的希望都破灭了。

没那么快。

该工作了。是时候搞清楚自己哪里出了问题了。评估一下你从哪里来。什么有用,什么没用?

也许你缺少的是耐心。找角色很难。你应该像开始一段新的感情一样小心对待它。

不是每个你邀请的人都会乐意和你约会,申请角色也是一样。

继续申请。不断学习。

这些真的有用吗?

作为一名崭露头角的数据科学家,您正在寻找利用自己的技能来帮助理解世界的方法。你开始了一个新项目,但你只有一个样本大小。你做的第一件事是什么?

“寻找更多的样本。”

答对了。

你刚刚读了这篇文章。它给了你一些东西去思考。他们是最好的吗?

我无法回答这个问题。但我可以给你其他地方看看。昨天我发现了一篇文章,它与这篇文章中的一半内容相矛盾。

互联网给了我们获取大量信息的途径,你可以将所有这些信息与你自己的意识形态混合到你自己独特的系统中。

我在这里收集的建议来自 realestate.com.au 的首席数据科学家。他们的目标是为对房产感兴趣的人找到最好的房产和代理。你申请的公司可能有不同的目标,因此对如何招聘有不同的看法。

有一点是肯定的,找角色很难。没有固定的路径。

我们在讨论中没有提到它,但是我想用我自己的观点来结束。

5.信心

不管你想扮演什么角色,努力去做吧。申请再申请。如果没有适合你的角色,那就自己创造。

你比你想象的更有能力。

如果你像我一样更喜欢视觉学习,我的 YouTube 频道上有这篇文章的视频版本。还有更多记录我进入数据世界的视频。

最初发表于mrdbourke.com

需要警惕的 4 种机器学习趋势

原文:https://towardsdatascience.com/4-machine-learning-trends-to-watch-out-for-9eae26cdc3a7?source=collection_archive---------5-----------------------

IT 界对机器学习(ML)及其改变后代与世界互动方式的潜力怎么看都不够。有了这项技术,自动驾驶汽车已经从理论变成了现实,距离在开放的道路上被广泛接受还不到十年。ML 还有其他有价值的应用,如通过研究和应对一些最常见的欺诈活动来实现先进的欺诈检测技术,以及通过网络安全软件帮助阻止网络钓鱼欺诈的电子邮件过滤能力。

对于这项技术来说,天空是无限的,这项技术可能很快会以更先进的认知学习应用和推荐引擎的个性化功能的形式让我们的生活变得更轻松。WorkFusion 提供了一系列智能自动化软件,帮助公司监控即将到来的威胁,自动化琐碎的任务并节省管理费用。

这里有四种机器学习趋势,可能在不久的将来成为现实:

1)云上的智能

算法可以帮助公司挖掘对其业务的洞察力,但这种主张可能成本高昂,不能保证底线的增加。公司经常不得不收集数据,雇用数据科学家,并培训他们处理不断变化的数据库。现在更多的数据指标变得可用,存储数据的成本正在下降,这要归功于云。不再需要管理基础设施,因为随着运营规模的增加,云系统可以生成新的模型,同时提供更准确的结果。越来越多的开源 ML 框架加入进来,获得预先训练的平台,可以标记图像,推荐产品和执行自然语言处理任务。

2)量子计算能力

ML 可以帮助公司处理的一些任务是对高维空间中的大量向量进行操纵和分类。目前的算法需要大量的时间来解决这些问题,使公司花费更多的时间来完成他们的业务流程。量子计算机很快就会风靡一时,因为它们可以在很短的时间内处理高维向量。与传统算法相比,这些算法能够在更短的时间内增加处理的向量和维数。

3)改进的个性化

零售商已经在开发推荐引擎方面掀起了波澜,这些引擎能够更准确地触及他们的目标受众。更进一步,ML 将能够以更精确的方式改进这些引擎的个性化技术。这项技术将提供更具体的数据,然后他们可以在广告上使用这些数据来改善消费者的购物体验。

4)数据上的数据

随着可用数据量的增加,存储这些数据的成本也以大致相同的速度下降。ML 在生成最高质量的数据方面具有巨大的潜力,这将导致更好的模型、改进的用户体验和更多的数据,这些数据有助于重复但改进这个循环。特斯拉等公司每小时都会添加一百万英里的驾驶数据,以增强其自动驾驶能力。随着该公司收集更多关于自动驾驶技术可能存在的缺陷的数据,其自动驾驶功能会从这些数据中学习并改进推动这些自动驾驶车辆前进的软件。

WorkFusion 有一个机器人流程自动化(RPA) 套件,可以帮助公司积累更多关于其业务流程的数据,产生支持解决方案的方法。

4 个月的机器和深度学习

原文:https://towardsdatascience.com/4-months-of-machine-deep-learning-89f6ab56a2fd?source=collection_archive---------0-----------------------

这不是火箭科学。是线性代数。

Photo by: SpaceX

(2017 年 8 月更新) 我不干了。我学习了。我是一名数据工程师。

“数据工程师”这个头衔很奇怪,就像所有数据科学头衔一样,因为它非常依赖于公司、公司规模、行业等。更重要的是你的角色/工作描述。

Format.com,我将是他们的第一个“正式”数据工程师,我的角色无所不包。我将接管公司所有与数据相关的事务。这包括数据分析基础设施/管道(ETL/ELT、数据完整性、分析工具),创建一个更加自助的报告、数据驱动的公司,并应用机器和深度学习来增强我们的洞察力,为我们的客户构建出色的新功能。

我还有很多更深层次的东西要学,但坐在教室里不学无术不是我的风格。别担心,我会让你了解我的教育历程,同时,继续阅读下面的内容…

(我做了什么)和(我是如何做的)

我不会用太多的细节来烦你,我会把你发送到我最初的中型帖子这里和我的后续 LinkedIn 帖子这里

TLDR:我辞职了。我学习了。现在我需要一份工作。

现在你对事情了如指掌,让我告诉你剩下的。我没有完全按照我原来的学习计划,这是一个 4 个月的旅程,现在充满了额外的学习被挤了进来。由于我即将完成这个职业生活项目,我想更新一下。

让我首先与你分享我的“最终”时间表,然后我将讨论它背后的变化和推理,最后是一点初学者的建议。

BTW:副标题——这不是火箭科学。是线性代数。—绝不意味着机器或深度学习是容易的。

我的时间表

在这一点上,我现在是全职学习,每天大概学习 10-14 个小时。我保持了一个像工作一样的日程安排,安排健身房和午休时间。大部分时间是在工作日,有时会在凌晨 1 点或 2 点睡觉,但也有几天我什么也没做。有时候是因为我太懒了(夏天来了!)其他时候是因为倦怠。

提醒一下,我的背景是这样的——教育方面——我有一个软件工程学位和一个 Udacity 数据分析师纳米学位 。以及作为开发人员和分析师的工作经验。

第一个月

第二个月

第三个月

第 4 个月

  • 深度学习,第 2 部分(已开始)
  • 顶点:构建和部署端到端深度学习产品(已开始)
  • 分享经验:中等

杂项

  1. 需要注意的是,每个课程或项目都有大量的阅读材料——博客文章、斯坦福大学在线 CNN 课程、学术论文等——和往常一样,你会收获你所投入的。我已经做了大量的“额外”阅读,但当然也有我略读或个人没有兴趣了解更多的领域。
  2. 我现在在读 4 个月左右(7 月中旬实际上是 3.5 个月,我提前了),但这不会是整整一个月的学习,因为我计划很快开始找工作。

细节

我对我最初的计划做了三个主要的改变:

  1. 使用 Python 的数据科学家(数据营)
  2. 吴恩达的机器学习 (Coursera)
  3. 顶点项目(端到端深度学习项目)

在最初开始深度学习第二部分后,我决定参加 DataCamp 的数据科学家与 Python。稍微思考一下事情的实际方面,当前的角色并没有被划分为只有深度学习和只有“经典”机器学习。因此,尽管拥有实际的深度学习经验很棒,但在采访中说我不知道 kNNk-means 算法之间的区别会令人尴尬。

此外,虽然快速人工智能项目是用 Python 教授的,但它不是在教授 Python,而 DataCamp 职业生涯跟踪课程有许多 Python 特定的课程以及数据挖掘和操作。

鉴于我已经完成了 Udacity 的数据分析师课程,我发现 DataCamp 项目基本上是一种复习(有一些新的技巧和诀窍),但这正是我所需要的。

一个好的总结应该是这样的:

  • data camp 项目深度潜水较少,但涵盖的主题广泛。您可以亲自动手编写 Python 代码,这非常棒!
  • uda city 计划给出了每个机器学习算法的更多细节,如何使用它们,并有优秀的大规模项目。

斯坦福大学的机器学习(Machine Learning)由吴恩达在 Coursera 上讲授,这可能是互联网上最著名的机器学习课程。这也是我想尝试一下的主要原因。还有,听朋友说这是个很棒的课程。

我参加这个课程的目的是在自己身上练习一些强化学习。尽管在我开始学习时,我已经参加了 Udacity 和 DataCamp 课程,这两个课程都涉及机器学习——从不同的角度来看,我认为向该领域最优秀的人学习肯定不会有什么坏处。

这门课程非常有趣,寓教于乐,富有挑战性。像其他事情一样,有些部分我完全理解,而其他部分我仍然不是 100%清楚。

我不认为八度音阶对我来说在任何新的角色中都是非常有用的,但是对于一些任务来说并不难。虽然这门课程是一次很好的经历,但我相信 Udacity 的数据分析师 nanodegree 更有实际用途。

我想,帮助我圆满完成旅程的最后一件事是顶点端到端深度学习项目。数据科学或机器/深度学习不仅仅是理论、算法、研究和发表论文!对我来说,我一直想做产品,做实施者,做东西。

在我的顶点项目中,我将定义一个问题,潜在的解决方案,源数据,建立和测试模型,生产模型,实现一个 API,UI 前端,并部署到“生产”。本质上,我要建立一个端到端的深度学习管道,从而产生一个活的产品

…或者至少,这是我的计划。

我对初学者的建议

开始学习。你也没有好的借口。哪怕是转行。

上几门数学课,但也就那么几门。

补充说明:据我所知,实际的机器和深度学习不涉及手动计算/编码 std、导数、反向传播、kNN 等,甚至不涉及没有库的 Python 尽管我敢肯定一些面试官不这么认为(也就是说不使用 str.split() func 拆分这个字符串,因为在生产中我们不使用库,这将向我们展示如何处理该业务案例。)

但是我跑题了…这并不是说你不需要数学,你当然需要理解术语的含义,如何解释它们,以及如何根据它们的信息来修正模型(或参数)。但是在机器和深度学习的实际实现中,博士并不是必需的:

这不是火箭科学。是线性代数。

但是它建议而不是去做的一件大事是用学习来充实你的时间。做一些实际的动手工作,用真实的数据练习,你会需要它来获得经验和面试,但更重要的是,一旦你开始新的职业生涯,你会需要它来解决现实世界中的问题。

我觉得我已经把我的脸塞满了机器和深度学习的“东西”,总是有新的论文可以阅读或发表的中等文章。调整自己的速度!我很确定我没有。

如果你想知道我会建议你按照什么顺序学习上述所有课程,请参考以下内容:

  1. 使用 Python 的数据科学家(数据营)
  2. 数据分析师纳米度(Udacity)
  3. 吴恩达的机器学习(Coursera)
  4. 深度学习(快速人工智能)
  5. 从事个人项目或 Kaggle(在步骤 1-4 期间)

又及:我有一个小小的“阅读清单”,我一直在更新它,试图记录我在学习期间做过的更重要的事情。你可以在我的博客上看到:http://jasonicarter.github.io/deep-learning-reading-list

我的下一步计划

找份工作。我的最后一项当然是回去工作。我会尽可能有选择地做这件事,并不是说我以前没有这样做过,但我认为考虑到这是一次职业转变,回顾一下过程的每个方面会有好处。

到目前为止,我一直在被动地审查公司,调查他们在机器和深度学习领域到底做些什么。一些角色“机器学习工程师”很少进行深度学习,而其他名为“数据工程师”的角色则需要相当多的 CNN 或 NLP 知识,以及像 Docker 和 Apache Spark 这样的东西。

我学到的两件事(或者那是学来的?)到目前为止有:

  1. 实际上并没有什么“深度学习工程师”的角色,它只是被限制在 ML 的描述中,所以请仔细阅读工作职责部分。
  2. 数据科学家、数据工程师甚至数据分析师的角色会因公司和工作职责的不同而有很大差异。这可能是企业和初创公司需求的子集。

对我个人来说,基于我的兴趣,我将寻找一个角色,允许我扩展我在深度学习(这本身是一个很大的领域)方面的专业知识,同时仍然使用一些“经典”的机器学习技术。如果他们加入一些 UI 开发工作(概念验证),那就更好了……全栈 ML 工程师有人吗???

4 更快速简单的 Python 数据可视化代码

原文:https://towardsdatascience.com/4-more-quick-and-easy-data-visualizations-in-python-with-code-da9030ab3429?source=collection_archive---------8-----------------------

想获得灵感?快来加入我的 超级行情快讯 。😎

数据可视化是任何数据科学或机器学习项目的重要组成部分。您通常会从探索性数据分析(EDA)开始,以获得对数据的一些见解,创建可视化确实有助于使事情更清楚、更容易理解,尤其是对于较大的高维数据集。在项目接近尾声时,能够以一种清晰、简洁、有说服力的方式展示最终结果是非常重要的,这样观众(通常是非技术客户)才能理解。

你可能已经看过我的上一篇文章 用 Python 编写的 5 个快速简单的数据可视化代码 ,其中我们经历了 5 个基本的可视化:散点图、线图、直方图、条形图和箱线图。这些都是简单而强大的可视化,你绝对可以用来从你的数据集中提取伟大的洞察力。在这篇文章中,我们将会看到更多的数据可视化!这些将会更详细一些,在你完成了上一篇文章中的基本内容之后,你可以使用它们从你的数据中提取更深层次的信息。

热图

热图是数据的矩阵表示,其中每个矩阵值用一种颜色表示。不同的颜色代表不同的量级,矩阵指数将被比较的两个项目或特征联系在一起。热图非常适合显示多个特征变量之间的关系,因为您可以直接看到颜色的大小。您还可以通过查看热点图中的其他点来了解每个关系与数据集中其他关系的对比情况。颜色真的提供了简单的解释,因为它是如此直观。

现在说说代码。与 matplotlib 相比,seaborn库可以用于更高级的绘图,通常是需要更多组件的东西,如许多颜色、图形或变量。matplotlib用于显示图形,numpy用于生成数据,pandas用于处理数据!绘图只是一个简单的 seaborn 函数,如果你发现一些视觉上特别愉悦的东西,我们还可以设置颜色映射。

2D 密度图

2D 密度图是 1D 版本的简单扩展,增加了能够看到两个变量的概率分布的好处。让我们看看下面的 2D 密度图。右边的图例使用颜色代表每个点的概率。最大的可能性,也是我们数据的集中点,似乎是 0.5 左右的大小和 1.4 左右的速度。如你现在所知,2D 密度图对于快速识别我们的数据相对于两个变量最集中的地方非常有用,而不是像 1D 密度图那样只有一个变量。当你有两个对你的输出非常重要的变量,并且想看看它们如何一起对输出分布贡献时,这是特别强大的。

seaborn 的代码也非常简单!这一次我们将创建一个偏态分布来使事情变得有趣。如果你觉得某些颜色和/或阴影在视觉上更令人愉悦,大多数可选参数都是为了让事情看起来更清楚。

蜘蛛图

蜘蛛图是显示一对多关系的最佳方式之一。也就是说,你可以绘制和查看几个变量相对于单个变量或类别的值。在蜘蛛图中,一个变量相对于另一个变量的显著性是清楚而明显的,因为面积和长度在特定方向上变得更大。如果你想看几个类别是如何与这些变量相关联的,你可以把它们并列起来。在下面的图表中,很容易比较复仇者的不同属性,并看到他们各自的优势所在!(注意这些数据是随机设置的,我没有偏向任何一个复仇者;) )

这一次,我们将能够直接使用 matplotlib 来创建我们的可视化,而不是 seaborn。我们需要计算每个属性所处的角度,因为我们希望它们沿着圆的圆周等距分布。我们将在每个计算出的角度放置标签,然后将该值绘制为一个单点,其与中心的距离取决于其值/大小。最后,为了清晰起见,我们将使用半透明颜色填充连接属性点的线条所包含的区域。

树形图

我们从小学就开始用树形图了!它们是自然和直观的,这使得它们很容易解释。有直接连接的节点具有紧密的关系,而有许多连接的节点不是很相似。在下面的可视化中,我绘制了一小块来自 Kaggle 的 口袋妖怪的统计数据 :

HP,攻击,防御,特殊攻击,特殊防御,速度

因此,最势均力敌的口袋妖怪 stats wise 将紧密地连接在一起。例如,我们看到在顶部,阿柏怪和法罗是直接相连的,如果我们检查数据,阿柏怪共有 438 个,而法罗有 442 个,非常接近!但是一旦我们转移到 Raticate,我们得到的总价值是 413,这与阿柏怪和费罗是完全不同的,这就是为什么他们是分开的!随着我们沿着树向上移动,口袋妖怪越来越基于相似性被分组。绿色组中的口袋妖怪彼此之间的相似度比红色组中的任何东西都要高,即使没有直接的绿色联系。

对于树形图,我们实际上要使用 Scipy!读入数据集后,我们将去掉字符串列。我们在这里这样做只是为了让我们的形象化,但在实践中,为了更好的比较和结果,将这些字符串转换成分类变量会更好。我们还设置了数据框索引,以便我们可以正确地使用它作为引用每个节点的列。最后,在 Scipy 中计算和绘制树是一个简单的一行程序!

喜欢学习?

推特上关注我,我会在那里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上和我联系吧!

4 每个数据科学家都应该学习的技能

原文:https://towardsdatascience.com/4-must-have-skills-every-data-scientist-should-learn-8ab3f23bc325?source=collection_archive---------2-----------------------

本·罗戈扬

我们想继续上一篇关于如何让成为一名数据科学家的文章,学习一些高级数据科学家应该具备的其他技能。我们希望通过为高级数据科学家设定明确的目标,在业务经理和技术数据科学家之间架起一座桥梁。这两个实体不得不面对非常不同的问题。当他们在同一页上时,双方都受益。这就是为什么前一篇文章如此关注交流。这看起来很简单,但是随着每年新技术的不断涌现,技术和业务之间的差距不断扩大。因此,我们发现经理和数据科学家有一个清晰的期望路径非常重要。

Both business and IT knowledge are very specialized. However, due to this specialization of skills, most businesses see a gap between the two specializations. Our role is to help fill it!

我们发现,当数据科学家开始他们的旅程时,他们非常关注技术方面是有益的。这意味着编程、查询、数据清理等。然而,随着数据科学家的成长。他们需要更多地关注设计决策和与管理层的沟通。这将成倍增加更有经验的数据科学家的知识的影响。而不是陷入日复一日的编码中。他们可以做出更高层次的决策,并在年轻的数据科学家遇到困难时帮助他们。当更有经验的数据科学家利用他们的经验来帮助做出简化复杂系统、优化数据流的设计决策,并帮助做出最相关项目的决策时,他们自己和他们的公司都会受益更多。

能够简化复杂的事物

数据科学家倾向于在每个问题和每个解决方案中使用他们知道的每种技术和算法。反过来,这产生了难以维护的复杂系统。

数据科学确实需要复杂和抽象的建模以及过多的复杂技术(从 HadoopTensorflow )。鉴于这个领域的复杂性,开发复杂的系统和算法是很有诱惑力的。有一种诱惑,涉及 4 或 5 种不同的技术,并利用每一个新的热门算法或框架。然而,像大多数其他领域涉及一些工程。出于多种原因,降低复杂性通常更好。

If If John von Neumann, Erwin Schrödinger and Albert Einstein can help us understand the complexities of their very math and physics driven fields, then we data scientists can’t hide behind complexity., Erwin Schrödinger and Albert Einstein can help us understand the complexities of their very math and physics driven fields, then we data scientists can’t hide behind complexity.

工程师的作用是简化任务。如果你曾经建造过或见过一台鲁布·戈德堡的机器,你就会明白把一项简单的任务过度工程化的想法。一些数据科学家的算法和数据系统看起来更像是用胶带和口香糖粘在一起的疯狂的捕鼠器,而不是优雅但有效的解决方案。制造更简单的系统意味着随着时间的推移,系统将更容易维护,并为未来的数据科学家提供根据需要添加和删除模块的能力。如果你创建了一个简单的框架,下一个接替你位置的数据科学家会感谢你的。另一方面,如果你使用 3 种不同的语言,2 种数据源,10 种算法,却没有留下任何文档,那么你就会知道未来的工程师正在低声咒骂你的名字。

简单的算法和系统也允许更容易的加法和减法。因此,随着技术的变化和更新的需要,或者一个模块需要被取出。一个贫穷的未来数据科学家不会被你的代码困在玩一个叠衣服的游戏中。如果我删除这段代码,一切都会分崩离析吗(你听说过技术债吗?)

了解如何在没有主键的情况下网格化数据

强大的数据专家应该提供的一个重要价值是将可能没有内在主要或明显联系的数据集捆绑在一起。数据可以代表一个人或企业的日常互动。拥有在这些数据中发现统计模式的能力使数据科学家能够帮助决策者做出明智的选择。然而,您希望结合在一起的数据并不总是在同一个系统上或相同的粒度上。

那些处理过数据的人会知道,数据并不总是很好地集成在一个数据库中。财务数据通常与 IT 服务管理数据分开保存,外部数据源可能没有相同的聚合级别。这是一个问题,因为发现数据中的价值有时需要来自其他部门和系统的数据。

Data meshing requires building pieces at the same level of granularity. One way to think of it is having one large puzzle piece being joined together by another large piece created by lots of smaller puzzle pieces of data.

例如,如果您获得了医疗索赔、信用卡和邻近地区的犯罪率,并想弄清楚这些社会经济因素是如何影响患者的,该怎么办?。一些数据集可能是一个人一个人的水平,而其他的可能是一个街道或城市的水平,没有明确的方法来连接数据集。进行的最佳方式是什么?这就变成了一个设计问题,一个必须记录,两个必须思考。

每种情况都是不同的,因为有许多方法来网格化数据。它可以基于地区、特征、消费习惯等。这就是为什么经验很重要。一个有经验的数据科学家对如何连接数据有直觉。主要是因为他们已经尝试了上百种不奏效的方法。通常情况下,你越能把两个数据集逐个人地结合起来就越好。因此,如果地区或城市恰好是连接的最低级别(最低级别是指数据的粒度,如个人级别、家庭级别、街道级别、城市级别、州级别或许多其他分组),那么这将是一个很好的起点。

能够对项目进行优先排序

作为一名数据科学家,你必须知道如何解释可能不会成功的项目的 ROI。这只是关于良好的直接沟通(我们的团队永远不会停止谈论沟通)。这是关于能够清楚地表达价值以及区分长期和短期目标的优先次序(再说一遍,说起来容易做起来难)。

团队总是有比他们能处理的更多的项目和项目请求。更有经验的团队成员需要带头,帮助他们的经理决定哪些项目实际上值得承担。在可能没有最高投资回报率但有很大成功机会的快速项目和更有可能失败但也提供很大投资回报率的长期项目之间有一个微妙的平衡。

在这种情况下,最好有一个决策矩阵来帮助简化过程。

项目的经典决策矩阵之一是一个重要性和紧迫性的 2 乘 2 矩阵。这个矩阵可以在大学的大多数商业课程中找到,而且非常简单。这就是它伟大的原因!

我曾在拥有非常聪明的人的公司工作过。然而,每个项目都被视为优先事项,如果你没有听说过这句话,我们就在这里说。

如果一切都是优先的,那么什么都不是。

Choosing the right projects requires making had calls. Not everything is a priority.

其他很多公司都有这个问题。这就是为什么对于数据科学团队中有经验的成员来说,清楚地阐明哪些项目真正应该现在做,而不是以后做是很重要的。因此,使用简单的矩阵就可以做到这一点。

(就像我们在上一篇文章中所说的,简洁很重要。使用矩阵来帮助指定 ROI 会有所帮助)。

当有简洁和直接的交流时,项目继续向前发展,信任建立起来。

能够开发健壮和优化的系统

制作一个在受控环境中运行的算法或模型是一回事。将一个健壮的模型集成到一个实时的处理大量数据的系统中是另一回事。根据公司的不同,有时数据科学家必须自己开发算法。然后要么是开发者,要么是机器学习工程师,负责把它投入生产。

然而,情况并非总是如此。较小的公司和团队可能会让数据科学团队将代码投入生产。这意味着算法需要能够以合理的速度管理数据流量。如果您的算法需要运行 3 个小时,并且需要实时访问。它不会投入生产。因此,良好的系统设计和优化是必要的。

As data grows, and more and more people interact with a system. It is important your model keeps up.

数据科学是一个复杂的领域,需要了解数据、统计、编程和主题。为了发展,数据科学家需要能够将这些复杂性简化并提取到算法中。他们需要能够更加专注于设计决策。这有助于最大化他们的知识和经验。

摘要

当高级数据专家超越他们的技术能力时,他们为自己和他们的公司提供最大的影响。他们带来的价值是他们的经验,它可以帮助指导年轻的开发人员做出更好的设计决策,并帮助管理人员做出更好的决策,决定哪些项目将有最好的投资回报。反过来,这放大了他们的参与对团队的影响。

创始人开始像数据科学家一样思考的 4 个步骤

原文:https://towardsdatascience.com/4-steps-for-founders-to-start-thinking-like-a-data-scientist-ee71cc75dd52?source=collection_archive---------9-----------------------

当你不知道如何开始你的创业公司的数据之旅。

There are steps you can take to embark on your data journey — for free and without a data scientist.

让我们来角色扮演:

你是一个刚创业一年的创业者。事情进行得很顺利,产品正在获得一些动力,并且您正在不断完善您的长期发展计划,并可能(手指交叉!)收购总有一天。与几个月前相比,你和你的联合创始人现在分散得更开了,但目前为止还不错,因为营销、销售甚至产品开发任务都完全在你的掌控之中。

这就是你开始冒险的原因!

但是…你不断读到的所有“大数据”、分析和机器学习的东西,是的,它们不在你的领域。

你知道你需要某种数据角度,因为你知道潜在的客户会问这个问题。但是你不确定要做什么,怎么做,甚至不确定从哪里开始。

  • 选项:聘请数据科学家?也许吧,但绝对不是现在。(即使你这么做了,也不那么容易。为莫妮卡·罗加蒂缓缓鼓掌
  • 选项:外包分析?也许吧,但你到底想让他们做什么
  • 选项:将它带进内部,构建您自己的工具、仪表板等。?也许有一天,但这是一个很大的承诺,你现在最好把时间和资源花在别的地方。

那还剩下什么?以下是你可以采取的 4 个步骤——免费的,即使你对数据最不感兴趣——开始像数据科学家一样思考,并在你的数据之旅中推动你的公司前进。

  1. 创造一个问题景观
  2. 制作你自己的词汇表
  3. 跨越 UX 鸿沟
  4. 构建数据路线图

注意:数据科学家做的远不止这四件事,这篇文章绝不是要贬低专业人士的工作。这只是对不关心数据的人的一些鼓励,让他们迈出第一步或第四步,而不需要花费大量的资源。

创建问题景观:

Creating a question landscape will help you identify what you already know, and anticipate what you will need to know in the future.

如果使用数据的目的是能够回答你自己的问题,或者你的客户或投资者的问题,那么预测问题将会有助于你决定在充实你的数据策略时去哪里。一种开始的方法是列出一堆你可能会遇到的问题,并把它们分成三类:

你现在能回答什么问题?

如果您对当前的数据进行一些挖掘,您可以回答哪些问题?

有哪些问题是因为还没有数据而无法回答的?

例如:

  • “在过去 30 天内,您下载了多少次?”可能属于第一类。
  • “在过去 30 天内,您最常使用的用户的年龄统计数据是多少?”可能会陷入第二种。
  • 以及“你的顶端和底端四分之一用户的平均会话长度是多少?”可能会落入第三种。

创造这一景观的目的——有些是地图上的区域,有些是地图上的——就是说,

“好吧,我们可以回答这个、这个和这个,而且我们知道(或者至少相当肯定)最终我们需要回答这个、这个和这个……所以让我们开始计划我们需要如何实现这个目标。”

“到达那里”可能是使用当前数据返回到信息中,或者您可能需要现在就将它烘焙到您的产品中,以便您可以在以后获得该信息。但至少进行对话并预测你将不得不回答的问题会让你领先。

制作词汇表

我问你一个问题:你对日活跃用户的定义是什么?

现在,如果我问你公司的每一个人,他们会有完全相同的答案吗?(不准作弊!)

虽然看起来显而易见,但创建一个术语表和/或将文档添加到您的报告中确实非常重要。现在公司里的每个人可能都会回答 DAU 的问题,但是当你的公司有 30 个人的时候会发生什么呢?50?100?当你有几十个驱动你的产品开发和商业策略的清晰指标时,你真的相信他们会在同一页上吗?

这种组织的价值是无限的,虽然它看起来像是可以放在后面的事情,但你越早开始记录,对它越自律,以后回来咬你的可能性就越小。

弥合 UX 差距

Bridge the UXr and UXi gap by using data and then you can make educated product decisions.

所有的产品人脑子里都有一个理想的 UX。这是人们以你想要的方式与你的产品互动的乌托邦,理想情况下,你的 UX 设计足够强大,足以在大部分时间带领他们到达那里,或者至少带领他们接近那里。

但是不管你的 UX 设计有多好,UX 现实(UX r )很可能与你理想中的 UX (UX i )不同。

你如何将你的客户从他们目前的 UXr推向你的 UXI

用数据。

假设您没有想要的转化率,那么客户流失是什么让您了解如何提高转化率?用户在哪里掉线?是所有用户还是特定人群?

也许你已经有了帮助回答这些问题的数据,或者也许你需要得到它(见上面的“创造一个问题景观”),但是不要猜测——用数据来弥合你的 UX 和 UX 的差距,做出明智的产品决策。

构建数据路线图

数据路线图本质上与产品路线图相同——它是一种向内部团队和外部利益相关者传达方向和进展的工具。我建议花一天时间,或者至少半天时间,和你的团队一起坐在白板前(最好是场外),认真思考数据将在你的公司中扮演什么角色。无论是核心还是外围,它都将存在,您需要有一个指南来指导您如何管理所有相关任务。

这篇文章中,我谈到了构建数据路线图如何回答一系列问题,从而帮助您的公司成长。但是如果在这一点上这些对你来说太模糊了,那么开始完成上面列出的三个任务:列出一堆你能够并且想要回答的问题,制作一个度量定义的词汇表,并且找出你的产品的 UX r 和 UX i 之间的差距。

[## 您的数据路线图可以回答的 10 个问题

“什么是数据路线图?”我们先来回答这个问题。(而且我们不会把它算进 10。)

medium.com](https://medium.com/@mdschindler/10-questions-that-your-data-roadmap-can-answer-8db0bb0aa235)

至少这样你会对下一步做什么和怎么做有一些内在的行军命令。然后,当你准备外包分析,甚至建立自己的数据团队时,你会对目标有一个很好的想法,当他们交付时会有什么价值。

进行正确根本原因分析的 4 个步骤

原文:https://towardsdatascience.com/4-steps-to-conducting-a-proper-root-cause-analysis-8d11dcce9e47?source=collection_archive---------1-----------------------

“排除所有其他因素,剩下的一定是真相。”夏洛克·福尔摩斯

我们所有人都害怕那种老板会问“为什么收入下降了?”唯一比这个问题更糟糕的是没有任何答案!您的业务每天都在发生许多变化,通常您会希望确切地了解是什么推动了给定的变化,尤其是在变化出乎意料的情况下。

理解变化的根本原因被称为根本原因分析。根本原因是最终导致变化的行动或事件。请注意,根本原因本身可能不会导致变更,它可能会引发一系列其他事件,最终导致变更。当然,给定变化的根本原因可能不止一个。

例如,假设我们经营一家名为 Sean's Snowshoes 的大型连锁零售店。如果我们的收入下降,可能是由于以下原因之一:

  • 竞争降低了他们的价格,导致我们的销售额减少。
  • 一场大规模的暴风雪使我们的顾客呆在家里,而不是在我们的商店里。
  • 我们的一个主要营销活动结束了。
  • 我们改变了让顾客困惑的优惠券策略。

….或者其他几十个潜在原因中的一个!

正如你所想象的,根本原因分析可能是复杂和具有挑战性的。本周,我们将介绍一系列技术和工具,帮助你在这些困难的水域中航行。具体来说,我们将涵盖:

让我们开始帮助 Sean 的雪地靴进行根本原因分析,确定我们需要考虑的所有影响因素。

离群值 监控您的业务数据,并在发生意外变化时通知您。我们帮助营销/发展&产品团队从他们的业务数据中获取更多价值。 今天安排试玩。

  • Outlier 是 Strata+Hadoop World 2017 观众奖得主。

根本原因分析:确定影响因素

根本原因分析的第一步是识别所有促成问题变化的因素。业务变化有两种主要的促成因素:

  • 内部。这些都是你所采取的行动,这些行动导致了你的企业发生了变化。示例包括新产品发布、产品更新和营销活动变更。
  • 外部。不管你愿不愿意,这些事情都会发生在你身上。例子包括竞争性价格变化、用户行为转变和自然灾害。

我们的目标是列举每一个可能的因素,这两种类型,可能有助于我们正在分析的变化。我们在这个阶段越全面,就越有可能找到根本原因。

让我们回到 Sean's Snowshoes 的例子,这是一家零售连锁店,在 1 月 21 日收入有所下降。我们希望找到这种下降的根本原因,因此首先我们将汇集一份可能导致这种下降的所有内部和外部因素的列表:

  • 1 月 21 日:我们开始了新的营销活动。(内部)
  • 1 月 20 日:我们一些最大的商场开始施工。(外部)
  • 1 月 20 日:我们的一项主要营销活动结束了。(内部)
  • 1 月 19 日:我们开始了新的在线优惠券促销活动。(内部)
  • 1 月 18 日:一场大规模的暴风雪袭击了我们所有的工作地点。(外部)
  • 1 月 17 日:421 号店、439 号店和 456 号店新聘经理。(内部)
  • 1 月 10 日:竞争对手在选定的地点降低了价格。(外部)

要避免的一个重要陷阱是假设促成因素必须与变化同时发生。例如,由于收入在 1 月 21 日下降,我们的第一直觉可能是识别 1 月 21 日发生的所有事情。然而,真正的因素(以及根本原因本身)很可能发生在收入下降之前。根据它们触发的事件链,起作用的因素可能发生在问题变化的几天、几周甚至几个月之前。

请注意,每个因素都有一个与之相关联的日期(或时间),这样我们就可以构建一个导致(和跟随)变更事件的时间表。事实上,如果你的潜在因素列表足够短,你应该现在就做!不幸的是,在现实世界中,这个列表可能会太长,你首先需要缩小范围。

接下来,我们将讨论如何根据影响变化的可能性对因素进行排序,并以此缩小列表范围。

根本原因分析:排序因素

有了你的潜在因素清单,是时候开始将它们削减到最有可能导致变化的原因了。评估数百个潜在因素可能是不可能的,但如果我们能把它减少到几十个,这就成了一个可管理的问题。最好从一开始就指出变化的指标和组成变化的部分开始。

让我们回到 Sean's Snowshoes 的例子,一家零售连锁店的收入下降了。收入本身很容易理解,因为它是我们从销售中获得的现金总额。但是,收入可以由许多不同的因素分解:

  • 存储位置
  • 客户位置
  • 产品
  • 星期几

通过查看每个维度(以及所有维度的组合)的收入,应该会清楚哪些细分市场导致了收入下降。是一家特别的商店吗?一些具体的产品?特定的日期或时间?您希望确定哪些部分在总体变化的同时发生了变化,以及哪些部分的数量最多。

以下是肖恩雪地鞋收入的一些精选维度的图表:加州的收入、销售围巾的收入和 456 号店的收入。

Sample data for our shop

该图帮助我们确定哪些方面是变化的驱动因素,哪些方面可能是副作用:

  • 总收入(蓝色)在右侧明显下降。我们的目标是找到这种变化的根本原因。
  • 加州(黄色)的收入显然是总收入的重要组成部分,而且确实与总收入同时下降。然而,它没有总收入下降那么多,而且恢复得很快,所以看起来不像是下降的原因。
  • 围巾(紫色)的收入与总收入同时大幅下降,但这只是总收入的一小部分。总收入中如此小的一部分更可能是副作用,而不是根本原因。
  • 456 号店铺(绿色)的收入是总收入的重要组成部分,当总收入下降时,其收入也大幅下降。这是一个明显的落点来源。

一旦您有了看起来与变更相关的最重要的部分,您就可以使用它来选择最有可能影响这些部分的因素。如果我们重温昨天的潜在因素列表,我们可以排除那些不会影响 456 号店的因素。具体来说,任何影响所有商店的变化都不太可能比可能影响该商店的因素起作用:

  • 1 月 21 日:我们开始了新的营销活动。(内部)
  • 1 月 20 日:我们一些最大的商场开始施工。(外部)
  • 1 月 20 日:我们的一项主要营销活动结束了。(内部)
  • 1 月 19 日:我们开始了新的在线优惠券促销活动。(内部
  • 1 月 18 日:一场大规模的暴风雪袭击了我们所有的工作地点。(外部)
  • 1 月 17 日:421 号店、439 号店和 456 号店新聘经理。(内部)
  • 1 月 10 日:竞争对手在选定的地点降低了价格。(外部)

当然,在你的分析中,你会有成百上千个不同的维度和组合需要检查。像我在这里所做的那样绘制它们是不可行的,因为与每个指标相关的维数太大了。为了帮助简化问题,您可以使用我们的系列中关于集群的技术,称为层次集群。层次聚类的目标是以层次结构中最重要的聚类形式汇总数据,这是突出显示哪些维度可能与更改相关的好方法。只要你按照总的百分比和变化幅度的组合进行分类,这个层次结构应该能够完成我们通过上面的观察所做的事情。[1]

接下来,我们将介绍如何利用我们已经确定的少数高可能性因素,并确定其中的根本原因。

根本原因分析:分类因素

现在我们有了一个较短的潜在原因(因素)列表,按影响的可能性排序,我们需要确定哪一个是根本原因。每个因素可分为四组:

  • 相关结果。这些因素是同一根源的其他症状。例如,如果收入下降,我们的销售税征收减少,销售税的减少不是收入减少的原因,而是根本原因的另一个副作用(导致收入下降的原因)。
  • 无关因素。这些因素看起来可疑,但实际上与所讨论的变化无关。
  • 促成因素。这些因素虽然是导致连锁反应的事件链的一部分,但不是根本原因。例如,如果收入下降,购买总数下降,购买总数的减少可能是收入下降的原因,但不是购买本身下降的原因。
  • 根本原因。这是引发导致变化的一连串事件的因素。记住,可能不止一个!

我们的第一步是将所有高可能性因素排列成一个时间表。在你的时间线上确定因素发生的顺序并不总是像检查它们发生的时间一样容易,有时你需要依靠你对业务和内部流程的了解。

如果你还记得 Sean 滑雪板的例子,很明显,456 号店是我们 1 月 21 日收入下降的核心原因。以下是我们确定的与 456 号店相关的因素的时间表。

A timeline describing likelihood factors

按照时间来组织这些因素,当它们开始向我们讲述一个故事时,更容易对这些因素进行分类。

  • 1 月 10 日:竞争降低了附近商店的价格。这几乎是下降前的两周,不太可能是根本原因,因为我们会在更早的时候看到收入变化。判决:无关
  • 1 月 18 日:助理经理辞职。这可能是 1 月 17 日招聘新经理的结果。充其量这只是一个促成因素,但更有可能是出了什么问题的另一个症状。判决:相关因素
  • 1 月 20 日:停车场建设开始。这可能是罪魁祸首,因为如果顾客不能停车,他们可能无法到达商店。然而,像这样的施工是另一个决定的结果,因为施工人员不会自己出现。这是导致变化的事件链的一部分,但不是根本原因。判决:促成因素
  • 1 月 17 日:聘用新经理。这是我们最有可能的罪魁祸首,因为它发生在下降之前不久,新经理将不得不批准停车场的建设开始。判决:根本原因

很明显,这是一个简单的例子,但是我希望它能给你一个重新创建时间线和对因素进行分类的过程是如何为你工作的感觉。

你可能已经注意到,根本原因分析很像侦探工作。你从一些证据开始,排除可能的嫌疑,希望重建事件的时间线。就像侦探工作一样,有些事情你今天就可以开始做,这将有助于你在未来更好地进行根本原因分析。我们明天将回顾其中的一些。

根本原因分析:为根本原因分析而设计

正如您在本文中所看到的,确定根本原因可能具有挑战性。确保您能够可靠地识别根本原因的最佳方法是设计您的业务流程,使其更容易。关键是要确保你已经记录了所有你需要的数据,并且很容易获取,以便找到根本原因。

以下是一些最佳实践:

  • 记录你的行动。在共享日历上跟踪重要的业务决策和行动。这将让你很容易地识别出所有可能导致变化的内部因素。
  • 追踪外力。监控所有可能影响你业务的外部力量,包括竞争、经济和政府政策。有许多服务将为你做这件事,但是你的任务是识别最重要的,因为你不能监控整个世界。
  • 对你的数据进行分段。确保您的度量是分段的,以便您可以有效地评估任何给定分段促成变更的可能性。如果你不能对你的指标进行细分,你将不得不花费大量的时间通过其他方式来消除潜在的因素。
  • 绘制您的流程图。你的业务流程应该被写下来,这样你就可以找出促成因素和根本原因之间的区别。

你能做的越多,将来你就能越快、越容易地找到问题的根源。

一句提醒的话:在你做了许多根本原因分析之后,当一个新的变化事件发生时,很容易依赖你的直觉。它可能看起来和感觉起来像你过去分析过的其他人,这使你很容易根据你以前的经验得出结论。这是危险的,因为你假设未来和过去一样,而许多其他事情可能已经改变了。即使你认为你知道根本原因,也要仔细分析,确保你没有遗漏任何东西。

回顾:识别业务变化的根本原因包括三个步骤。首先,找出所有可能导致变化的因素。第二,使用您的指标分段从该集合中选择最可能的因素。最后,重新创建变化的时间表,并使用它对因素进行分类,确定其中的根本原因。

离群值 监控您的业务数据,并在发生意外变化时通知您。我们帮助营销/发展&产品团队从他们的业务数据中获取更多价值。 今天安排试玩。

  • Outlier 是 Strata+Hadoop World 2017 观众奖得主。

当我们所有的工作都没了,确保乌托邦

原文:https://towardsdatascience.com/4-steps-to-ensure-utopia-when-our-jobs-are-gone-859801f95bd3?source=collection_archive---------6-----------------------

重新定义自我价值,呼唤你的代表(x2),成为艺术家(比喻意义)

‘Rick and Morty’ warn us all of what might happen 😃

本文无意危言耸听,恰恰相反。这意味着人类要为人机合作的下一阶段做好心理准备。随着我们离奇点更近一步,我们会发现,在所有行业中,我们都有更多的时间,更多的控制权交给了计算机和算法。如果我们能正确地过渡到这个时代,对人类来说,这将是一个非常积极的时代。

这篇文章旨在教育读者一种新的思维模式和工具集——激励我们所有人确保公司、联邦监管机构和个人采取正确的步骤来实现人工智能的未来。

“我不在工厂生产线上工作。我的工作目前还不错。”
-每个人都曾经

假的。让我带你浏览几个已经取代工作的现有计算机程序。做好准备,这 5 个例子会让你大吃一惊。

1)电影预告片视频编辑器

洛杉矶电影预告片剪辑师的平均工资:42328 美元

https://www.engadget.com/2016/09/01/ibm-watson-movie-trailer-morgan/

为了 2017 年推出恐怖电影《摩根》(Morgan),20 世纪福克斯公司(20th Century Fox)接洽 IBM,为该电影制作预告片。IBM 团队给沃森提供了一系列恐怖电影,直到它理解了每个场景的情感。使用自然语言处理、计算机视觉和正确的训练集,沃森随后观看了电影《摩根》,并“立即聚焦于总共 6 分钟的 10 个场景。人类编辑仍然需要安排场景来讲述一个连贯的故事,但沃森的参与将这个过程缩短到了 24 小时。预告片通常需要 10 天到一个月才能完成。”

2) MLB 棒球裁判

MLB 裁判的平均工资——12 万美元,最高 35 万美元/年

当观众在电视上观看现场棒球比赛时,他们不仅得到了球员的高清特写镜头;他们还得到一个又一个统计数据,几乎是实时编辑的,告诉他们诸如球的速度、投球的准确性、运动员的速度等等。这是如何做到的?它是体育场内摄像机和传感器的昂贵组合,物体内传感器(蝙蝠和基地),将数据发送到亚马逊网络服务器,这些服务器处理这些数据,并将其发送回直播电视工作人员,他们将这些信息输入他们预先设计的计算机图形包,并将其呈现给美国各地的电视。传感器和摄像头已经就位。服务器已经就位。从 2006 年开始,PITCHf/x 就出现在每一个体育场。唯一缺失的是人们普遍更喜欢电脑裁判,而不是人工裁判。每年关于电脑裁判员的讨论越来越热烈。作为一个小的下一步,已经提出将球/撞击传感器信息仅直接提供给人类裁判。

3)皮肤科医生

美国全国平均工资—【293610 美元

diagram of a machine-learning process to identify skin problems

2017 年,斯坦福大学的一组研究人员训练计算机像皮肤科医生一样准确地识别皮肤癌痣和病变的图像。他们在 2000 种皮肤病的 13 万张图像上训练了一种深度学习算法。结果详细记录在 Nature 中,显示人工智能在挑选致命皮肤病变方面的表现与 21 名委员会认证的皮肤科医生一样好。

在未来,一个简单的手机应用程序可能会帮助患者自己诊断皮肤癌——美国最常见的癌症。

据《连线》报道,“斯坦福的 robo-derm 在这一点上可能是纯研究,但有很多人工智能初创公司(超过 100 家)和软件巨头(谷歌、微软、IBM)正在努力将深度学习应用到医院、诊所甚至智能手机中。”

来源:有线CNN

4)华尔街交易员

平均工资差别很大,根据经验、利基(对冲基金与大银行)和合伙人级别,从 8 万美元到 1100 万美元不等。

original image from the movie ‘The Wolf of Wall Street’

华尔街交易是最容易替代的工作之一。它没有多少“人性”。

然而具有讽刺意味的是,到 2025 年,通过使用人工智能,金融机构的成本收入比可能会提高 28%。这是因为他们正在削减雇佣人力的成本。2017 年,金融公司将在人工智能相关技术上花费超过 15 亿美元,到 2021 年每年花费 28 亿美元,这还不包括他们对人工智能创业公司的投资。

2014 年,高盛投资并开始安装一个名为 Kensho 的人工智能驱动的交易平台。核桃算法是一家初创对冲基金,从一开始就被设计为致力于人工智能。臭名昭著的怪异对冲基金公司 Bridgewater Associates 雇佣了自己的团队来建立一个人工智能系统,该系统实际上可以自己运行操作。

来源: AI 将大幅裁员高盛解雇

5)出租车、Lyft、优步司机

纽约市的 Lyft 司机——平均每小时 28 美元

这是我们听到最多的行业。像梅赛德斯、宝马和特斯拉这样的公司已经发布或即将发布自动驾驶功能,使汽车具有一定的自动驾驶能力。谷歌已经正式将他们的无人驾驶汽车项目纳入自己的公司,名为 Waymo

客观地看,Lyft 在 2015 年初约有 10 万名司机,2016 年初超过 30 万名。

‘Rick and Morty’ understand

这份职业清单还可以继续下去——教师、农民私人助理卖汉堡包的人、精神病学家、图书编辑、零售商收银员,最终代理生母,以及(我个人最喜欢的)机器学习计算机科学家。

当然,在未来十年左右的时间里,计算机和人类将会合作,因为我们人类仍在填补这些空白。但这就是为什么我们需要现在就做好准备,走在它的前面!当然,非常有才华的人仍然会因为他们独特的视角、视野或声誉而被雇佣。但对于我们其他人来说,我们现在应该做些什么来确保乌托邦呢?

拥抱乌托邦:2017 年我们可以立即采取的 4 项行动

现在,在 2017 年,我们可以采取几种不同类型的行动,以确保我们在这场人工智能革命中领先一步:1)重新定义我们的幸福和自我价值的来源,2)确保我们人类的需求得到基本普遍收入的满足,3)确保人工智能和人类之间的正确动力到位,以及 4)成为一名艺术家(在隐喻意义上)。

1。重新定义自我价值和幸福

Learn to let go. More time to dance.

我们需要思想上的转变来重新定义我们的自我价值,不是从我们朝九晚五的工作中,而是从我们是人,我们还活着这个简单的事实中。所以我们中的许多人只有当我们变得富有成效时,或者当我们的老板告诉我们我们做得很好时,或者当我们的工作得到了金钱上的回报时,才会感到高兴。我们需要简单地学习如何在这些事情之外快乐。我们需要学会如何放松,用其他活动来充实我们的一天。如果你和我一样,甚至去瑜伽也是你更喜欢的事情,因为这是你可以从你的日常“待办事项”清单中检查出来的另一件事。

试着想想一个时间自由的新世界为你打开的所有可能性。你知道那个你每天早上 9 点到下午 5 点穿着西装去的 salesforce 办公室吗?如果你愿意,现在你可以去那里打水枪。去吧,像个孩子一样跑来跑去!

2。基本普遍收入

More of this commencement speech can be watched here: http://money.cnn.com/video/technology/future/2017/05/31/capturing-carbon-dioxide.cnnmoney/index.html

如果我们不工作,我们的钱从哪里来?我们如何负担得起我们的房子,我们的食物,我们的基本需求。我们如何积累财富,让我们自豪地把财富传给我们的孩子。要回答这些问题,我们需要进行政治思考。我们需要重组我们的税收体系。随着所有这些工作的消失,通勤者减少,基础设施减少,开销减少,有更多的钱可以支配。作为公民,在 2017 年的今天,我们需要确保我们的政治家充分理解这一新的经济流,并采取大胆措施为所有人创造基本收入。这一想法不仅得到了全球经济学家的支持,还对缓解美国目前日益加剧的极端贫富差距产生了间接的积极影响。甚至马克·扎克伯格在他的 2017 年哈佛毕业典礼演讲中也宣扬这一点。

举个例子,让我们回头看看棒球裁判,他现在失业了。在一个完美的世界中,MLB 将因使用人工智能而被征收重税,亚马逊也是如此,这些税收将通过政府渗透到该国的每个人。这就是所谓的“基本普遍收入”。这个想法是,仅仅为了成为人类和活着,你的政府应该有足够的钱来确保你的人类需求得到满足。这不会让你变得富有,但会让你活得健康。大多数计划建议推出这一概念,仅用$ 10K/人/年,称之为政府援助或补贴。

这不是一个新的想法。第 17 届 BIEN(基本收入地球网络)大会将于 2017 年 9 月 25 日至 27 日在葡萄牙里斯本举行。在考虑所有显而易见的反驳之前(这是共产主义,人们会变得懒惰,等等),请仔细阅读这个话题。

行动号召:前往5Calls.org了解谁是你的众议员和参议员以及他们的电话号码。打电话给他们,说:“我在你的选区,我正在读关于基本普遍收入的书。我希望对人工智能辅助收入征税,因为我正在为计算机人工智能导致的大量失业做准备。我希望你能投票通过这个想法,我希望这个问题对你很重要。谢谢。”

3。确保正确的动力动力

Let’s be clear about who’s in control here.

你有没有打开优步并请求搭车,看到司机在 4 分钟之外,然后点击“确认”后,应用程序刷新并把你切换到 10 分钟之外的司机那里?你有没有想过,“他们为什么要这么做?”此外,你是否曾试图就此事或任何其他问题联系优步?几乎没有办法与优步取得联系,问他们关于他们如何做决定的问题,或者为什么这款应用会让你在不同的司机之间换来换去,或者你可以做些什么来确保这种事情不会发生在你身上。(补充说明,优步是一家极具欺骗性和操纵性的公司。下次你和一个低电量的朋友和一个 100%电量的朋友同时抓取优步搜索,看看他们是如何捕食人的。

把那个看似无关紧要的优步“4 分钟对 10 分钟”的问题放在脑后,现在让我们考虑一下经典的电车问题。一辆电脑控制的手推车有一瞬间的时间来决定它应该杀死 1 个重要的人还是 5 个不重要的人。它会做什么?这可能对你来说很可怕,但这是一个真实的问题。作为非计算机科学家公民,我们需要给我们的政治家留下深刻印象的是,围绕人工智能需要有严格的规则和条例。现在为此而努力的人是 Elon Musk 和 Sam Altman,他们的组织是 Open AI。

行动号召:再次使用5 calls . org,告诉你的代表,算法必须透明。如果一台医用电脑会提示一个病人有自杀倾向,我们需要知道原因。如果一个人被加入禁飞名单,我们需要知道原因。如果房屋贷款没有被批准,我们需要知道原因。

成为一名艺术家

Be free!

艺术家是少数几个有动力去创造、制造、学习、探索世界并与世界互动的社会成员,而不是被金钱价值或通过预定的步骤爬上公司阶梯所驱动。一个艺术家知道如何在清晨醒来,追寻自己的好奇和渴望。为艺术而艺术是纯粹的。它是有表现力的,因此是人类的。我是被一个艺术家养大的。我被教导通过绘画、粘土、编织、写作、表演、舞蹈,通过像 photoshop、动画、定格、甚至代码这样的计算机工具来培养对自我表达的热爱。但那些只是我的媒介。任何媒体都可以是艺术家媒体。任何人都可以成为艺术家——你只需要像艺术家一样思考。科学家可以成为艺术家。一个科学家站在新发现的边缘,追求世界上的真理——这就是艺术。一个计算机开发者可以是一个艺术家。他们开发应用程序不是因为他们会因此变得富有,而是因为他们希望看到这个世界上存在这样的东西。找到你喜欢做的事情,只是为了做而做,像艺术家一样去做。

是的,当然计算机也能创造艺术,但是它们永远不会剥夺我们创造艺术和表达自己的能力。在未来,我们没有金钱或竞争优势的负担,我们创造东西,因为它让我们快乐。无论你做什么,像艺术家一样去做。

无论你做什么,像艺术家一样去做。

来源和阅读材料:

如果你对基本的普遍收入感兴趣,有这么多的来源,只要开始搜索(避开它!为了获得公正的结果,不要谷歌“基本普遍收入”,尽可能阅读一切相关信息。

除此之外,以下是我在撰写本文时使用的 3 个来源:

[## 资本之后的世界

人类梦想着一个没有人需要工作的富足世界。了解更多关于阿尔伯特·温格的新书…

worldaftercapital.org](http://worldaftercapital.org/) [## 谁拥有未来?

谁拥有未来?在 Amazon.com 的杰伦·拉尼尔。符合条件的优惠可享受免费运输。“才华横溢”和“大胆地…

www.amazon.com](https://www.amazon.com/dp/1451654960/?tag=mh0b-20&hvadid=3520383689&hvqmt=b&hvbmt=bb&hvdev=c&ref=pd_sl_682i7s1bgh_b) [## 人工智能有一个很大的问题:即使是它的创造者也无法解释它是如何工作的

去年,一辆奇怪的自动驾驶汽车被投放到新泽西州蒙茅斯县安静的道路上。的…

www.technologyreview.com](https://www.technologyreview.com/s/604087/the-dark-secret-at-the-heart-of-ai/)

成为你想在世界上看到的改变。

-甘地

找到正确的深度学习模型的 4 个步骤

原文:https://towardsdatascience.com/4-steps-to-finding-the-right-deep-learning-model-f35a9d7988b6?source=collection_archive---------5-----------------------

by Skitterphoto on Pixabay

首次应用深度学习时避免初学者的错误

如果你一直在寻求让你的应用程序具备机器学习能力,你会注意到有大量的 ML 模型和模型实现,它们可能适合也可能不适合你的任务。尤其是如果你对特定类型的模型不是很熟悉,那么选择你的项目采用什么样的模型实现可能会让不知所措。

作为模型仓库的一部分,在与数百名工程师和他们的 ML 项目交谈后,我整理了这 4 个步骤,当你选择下一个机器学习模式时,你应该明白!

1.理解问题域

Originally from PublicDomainPictures.net

虽然您可能正在构建热狗定位器,但您正在寻找的模型可能不被称为“热狗定位器”。用户和 ML 研究者对模型的不同看法会使我们很难找到正确的模型。

对于热狗定位问题,它是“计算机视觉”类别下的“对象检测”问题。事实上,还有一个数据集存在,它在热狗周围有边界框,叫做 COCO

当你考虑你手头的问题时,把它转化成正确的 ML 术语的最简单的方法是考虑你的输入。是文字还是图片?这些通常分别对应于自然语言处理(NLP)或计算机视觉(CV)。从那里你会想更深入地研究那个领域,找出存在哪种子问题,比如 NLP 中的情感分类。此外,您可以探索可能已经包含感兴趣的项目的数据集(例如热狗)来缩小在该特定数据集上训练的模型的范围。有时,正确使用术语可能很棘手,因此使用用户友好的 ML 模型搜索工具,如 ModelDepot ,可以帮助您快速找到并理解对您的用例有帮助的模型。

2.找到“正确的”精确度

“Machine Learning” from xkcd

显而易见,准确性是您应该非常关心的事情,但是简单地相信任何准确性数字都不会有好结果。在考虑准确性时,有几件事需要记住。

准确性度量

根据您正在解决的问题,有大量不同的指标。ML 中的每个特定问题域都有一组相关的标准度量。弄清楚哪些指标对你来说是最重要的,这一点极其重要!

例如,如果我们正在构建一个信用卡欺诈检测系统,并且只考虑correct_predictions/all_predictions(又名。准确性)我们可以简单地开发一个总是返回“非欺诈”的模型,并获得 99%的准确性,因为大多数交易都不是欺诈!因此,为你的任务选择正确的指标很重要

报告的准确性

报告的精度是判断模型是否满足应用要求的良好开端。几乎总是,模型的原始论文将报告模型的准确性度量。如果他们使用的指标和你正在使用的指标不同,确保你理解他们使用的指标和你正在使用的指标之间的关系。但也要明白,他们的数据集可能与你手头的任务不同,他们的问题有 2%的改善最终对你来说可能不会太重要。

你自己的准确性

如果您发现一些似乎具有合理的报告准确性度量的东西,您将想要亲自测试该模型,以查看该模型将为您做得有多好。理想情况下,您有一个模型期望接收的输入测试集(例如。邮件、评论等。)和相应的预期输出。在您自己的数据上测试模型是确保它在您的用例中表现良好的最佳方式,尽管这也是最费力的方式。

In-Browser Live Demos on ModelDepot

有一些方法可以快速演示模型,比如使用 ModelDepot 的在线演示功能。您可以快速地向模型提供示例输入,并在不到一分钟的时间内看到模型的结果。您还可以在在线环境中试用该模型,如 Google Colab 以跳过设置本地开发环境。

3.了解您的数据

根据你有多少数据或者愿意收集多少数据,你寻找模型的方法会有很大的不同!从头开始构建不是唯一的方法,实际上可能是最差的方法,这取决于您的数据!让我们深入一些案例。

我有很多数据

如果您有大量的训练数据,您会希望寻找具有易于访问的训练脚本的模型来从头开始训练您的模型。让 DL 模型收敛可能非常困难;为了让你的生活更轻松,你应该在 Github 上寻找看起来很活跃的项目。在一个模特周围有一个支持性的社区会对你有很大的帮助。

我有一些数据

如果你只有一些数据,你也许可以使用一种叫做“迁移学习”的训练技术。迁移学习允许您在类似的领域采用预先训练的模型,使用少量的训练数据来调整模型,使其能够很好地解决您的特定问题。您将希望寻找易于“剖析”和重新训练的预训练模型。你可以在 Tensorflow HubKeras 应用找到一些。

我只有少数几个例子

别担心!举几个例子是一个很好的开始。寻找专门预先训练的模型,并使用您的示例作为“测试集”来评估这些模型对您的数据的执行情况。幸运的是,你可以在几个地方找到预先训练好的模型,例如每个框架的各种模型动物园: TensorflowCaffeONNXPyTorchModelDepot 还为预训练模型提供了一个更通用的搜索界面,以帮助选择正确的 ML 模型。

4.挑选建筑

Accuracy vs Speed Tradeoff (Figure 2 from https://arxiv.org/pdf/1611.10012.pdf)

我们现在可以看看模型背后的架构,如果 1)模型对您自己的数据具有可接受的准确性,2)很容易重新训练或带有预训练的模型。

精确度、速度和尺寸

最大的实际考虑之一是速度与精度的权衡。研究人员开发了各种各样的架构来匹配应用程序在现实世界中可能遇到的不同用例。例如,也许你的模型应该运行在计算受限的移动电话上,所以你可能正在寻找一个轻量级和快速的 MobileNet 架构。否则,如果您不受计算限制,但希望获得最佳精度,那么您可以使用最先进的技术来保证最佳精度,无论模型有多慢或多大。

一些型号可能会有轻量级的变体,如 PSPNet50 vs 全 PSPNet ,它减少了层数,使其更快更薄。其他时候,你可以使用诸如修剪量化的技术来使模型更小更快。

搞定了。

有了这四个步骤,你就可以从知道你想解决什么问题,到尽快选择几个能最好地解决你的问题的模型。

还有其他的考虑,比如 ML 框架、代码质量或者模型作者的声誉,但是这些考虑通常是一种奢侈品,当你超越了将 ML 集成到你的产品中的 PoC/MVP 阶段时,你就可以负担得起了。让我知道你如何决定在评论中寻找 ML 模型的想法!

Best of luck searching for your next ML model!

零售品牌用来连接线上和线下个性化的 4 项技术

原文:https://towardsdatascience.com/4-technologies-retail-brands-use-to-bridge-online-and-offline-personalization-79d0cc040ed3?source=collection_archive---------11-----------------------

Photo by Alexandre Godreau on Unsplash

Amazon Go 创造了最先进的购物技术。为了将人们从耗时的结账通道中解救出来,购物者只需下载 Amazon Go 应用程序,然后通过他们的 Amazon 帐户登录。一旦到了位于西雅图的商店,他们只需要在入口处扫描手机,然后像往常一样购物。

该品牌专有的 Just Walk Out 技术然后使用计算机视觉、传感器融合和深度学习来检测谁从商店货架上拿走了什么商品。根据这些数据,一旦人们手里拿着产品离开商店,智能商店就会计算他们的总数,并通过应用程序从他们的亚马逊账户中收费。

将店内和网上体验融合在一起,亚马逊可以真正了解顾客是谁,跟踪他们的行为,进而提供前所未有的个性化便利。

并非所有品牌都能创造全渠道个性化的专有技术,但市场上已经有大量技术可以帮助他们搭建桥梁。让我们探索 4 项技术,帮助品牌创造个性化的、真正的全渠道品牌体验。

人工智能(AI)让消费者乐于在线上和线下消费。

亚马逊知道如何将客户数据转化为收入流。贝恩公司对 522 名购物者的研究显示,顾客第五次购买的东西比第一次多 40%。对于亚马逊来说,这是通过数据积累对客户进行 360 度全方位了解来实现的。例如,一个开始每月购买一件商品的顾客,通过人工智能提供的相关推荐,转变为一个月购买几件相关商品的顾客。

一旦一个品牌花费了所有额外的费用来收集数据并从中提取偏好见解,然后培养顾客对其他产品的兴趣,那么在店内体验中从头开始了解她将是一种耻辱,就好像从头开始获得顾客一样。这意味着收入的损失:波士顿咨询集团的一项研究发现,通过营销获得一个新客户比留住一个现有客户要贵 500%。

这就是为什么像亚马逊这样的聪明品牌知道利用在线数据来通知店内购买,反之亦然。每一次购物活动——无论是在线还是店内——都意味着品牌可以使用更多数据,通过 360 度视角更好地了解他们的客户。如果没有店内和在线客户数据的结合,真正的 360 度视角还没有实现。

例如,通过记录客户在 Amazon Go 商店的购买情况,亚马逊允许依赖人工智能根据这些店内购买和行为提供相关的在线建议。最终,有了相关的全渠道推荐,顾客会花更多的钱,并感激品牌给了他们这样做的机会。

beacon 与数字技术合作,增强体育迷的线下体验。

93%的美国职业棒球大联盟(MLB)公园、53%的美国国家篮球协会(NBA)体育场和 47%的美国国家橄榄球联盟(NFL)体育场都采用了体育信标技术,为服务人员带来个性化体验,并增加球队及其赞助商的收入。

例如,下载金州勇士队应用程序的人被识别为球迷。该应用程序然后提供突发的球队新闻,实时统计数据,球员简历和比赛日历。当球迷亲自参加比赛时,他们可能会收到座位和特许看台的 3D 地图,实时交通更新,以及将比赛照片和视频上传到脸书的能力。

反过来,beacon 技术允许 Oracle Arena 获得额外的好处,如当球迷进入不太理想的区域时,能够提供座位升级的推送通知,跟踪球迷的步行路线以更好地了解客户行为,提供球队商品的近距离营销,甚至帮助球队赞助商与球迷联系。

其他团队安装信标技术也有利于他们的赞助商。例如,当麦当劳赞助密尔沃基雄鹿的应用程序时,他们也通过安装在镇上商店附近的信标联系粉丝。反过来,麦当劳可以通过发送到团队应用程序的推送通知向粉丝进行营销。

最终,beacon technology 通过增加收入创造品牌优势,粉丝享受个性化的全渠道体验。在安装后的第一个季度,来自应用营销的收入覆盖了 Warrior 的室内营销基础设施和信标成本的一半。而且,尽管——或者可能是因为——所有的个性化追加销售和推送通知,该应用在谷歌 Play 商店享有 4.7 星的评级。

增强现实帮助消费者融合他们的实体和在线家庭。

家得宝通过他们的增强现实(AR)应用程序将线上和线下的品牌体验联系起来。如果顾客想更换家里的门,他们可以在网上浏览门的选择,甚至可以查看当地家得宝有哪些门。一旦他们找到了自己喜欢的门,他们可以点击“在你家看到这个”标签,然后将手机举到物理门上,以增强现实的方式查看门安装后的样子。

顾客可以从应用程序中购买柜门,并在店内取货。或者,在店内,他们可以通过基于手机的店内导航找到商品,然后购买。

通过 AR,家得宝的客户成为室内设计师,混合和搭配品牌产品以获得完美的外观。然后他们可以在网上订购,并在店内取货。此外,产品推荐基于顾客所在地区的流行趋势。其结果是在线和线下品牌体验的无缝和个性化的桥梁。

Photo by Brian Metzler on Unsplash

物联网(IoT)通过个人表现跟踪提升一个品牌的收入。

安德玛通过物联网智能鞋将他们的线上和线下品牌体验联系起来。他们的 SpeedForm Gemini 2 Record 配备的通过嵌入鞋的泡沫鞋底的物联网传感器设备和他们的同伴 UA MapMyRun 应用程序来跟踪跑步者的时间、节奏、持续时间、距离等。成绩数据通过蓝牙技术发送到应用程序,允许跑步者在与应用程序同步成绩数据之间最多跑 5 次。

听起来像跑步者的梦想吗?这也是一个品牌的梦想。心率、跑步地图和个性化音频指导等表现数据可以告诉安德玛,跑步者是一个随意的、当我喜欢它时的表演者,还是一个更专注的马拉松教练。通过跟踪跑步者的表现和鞋子状况,安德玛赢得了提供替换产品、增强表现的配件等的绝佳机会,并通过及时、相关、因此受欢迎的 MapMyRun 推送通知。

线上和线下品牌体验的沟通对消费者和品牌都有好处。在所有频道上,体验都是个性化的,这是消费者愿意做的隐私交易。埃森哲称,缺乏个性化仅在 2016 年就让品牌损失了 7560 亿美元。

没有为 360 度全渠道个性化做好准备的品牌正在出局。

对于今天 60%的高管和营销人员来说,个性化仅限于一个渠道,并且只集成在他们的部分技术堆栈中。全球只有 22%的品牌承认有跨职能团队跨渠道执行个性化。

虽然品牌可能没有认真对待全渠道个性化,但消费者是认真的。《哈佛商业评论》发现与只与一个品牌渠道互动的人相比,全渠道零售客户的店内支出多 4 %,网上支出多 10%。

为了在未来的个性化客户体验(CXs)上竞争,品牌必须努力实现真正的 360 度全渠道视图以及与客户互动的能力。这意味着发展跨职能团队和端到端技术基础设施,不仅要对今天的线上和线下客户行为进行 360 度全方位的观察,还要准备好将新兴技术和渠道整合到组合中,以便对客户进行持续、可预测的 360 度了解和拓展。

关于人工智能(AI)在物流中的作用要知道的 4 件事

原文:https://towardsdatascience.com/4-things-to-know-about-the-role-of-artificial-intelligence-ai-in-logistics-f14323301900?source=collection_archive---------6-----------------------

确保公司的供应链工作流程在尽可能高的水平上运行的最重要的方法是拥有一个运转良好的物流团队。随着职业世界的日益数字化,越来越多的公司正在将人工智能(AI)添加到他们的供应链中,以便通过减少花费在计算如何、在哪里以及何时将包裹发送到某个地方的时间和金钱来最大化他们的资源。

从补充库存到寻找正确的运输方式和处理不可预见的路障,智能自动化公司如 WorkFusion 在开发智能算法方面表现出色,这些算法可以处理各种变量,并通过其机器人流程自动化平台 RPA Express 生产物流解决方案。如今,设定运输价格是一项既需要人力又需要智能软件的任务,因为这两者可以共同努力,根据当前的市场条件来确定货物的公平价值。

以下是关于人工智能及其在物流中的作用,你应该知道的四件事:

1)常见问题及解决方案

最近的技术突破和托运人日益增长的需求推动企业探索人工智能以及它可以为物流团队提供的解决方案。该技术可以在供应链中提供的一些最常见的解决方案是资源管理、通过减少冗余和风险缓解来降低成本、支持传统预测技术、通过优化路线来加快交付、更好的客户服务等等。借助合适的智能自动化业务,公司能够无缝更新其 IT 系统,并增强其数据分析流程,以支持其物流流程。

2)负载成本

预测货物的价格可能会很棘手,因为运输成本会随着季节的变化而变化,甚至会根据每天或每天的时间而变化。人工智能可以帮助监控这些条件,并根据交货时间和货物的“路线”和目的地选择正确的价格。这些算法监控一系列参数,如交通、天气和社会经济挑战,帮助公司达成双方都能同意的公平价格。即使将一件物品从旧金山运送到洛杉矶的成本与将一件物品从洛杉矶运送到旧金山的成本不同,即使由于各地的经济和路线不同,所有其他物流因素都相同。

3)优化库存

人工智能还在信息的民主化和可访问性方面发挥着作用,因为该技术可以提供公平的报价,以确保双方获得公平的交易,同时还可以监控库存和装载能力,以便卡车在执行交付时不会犹豫不决。该技术还可以保护和管理供应商库存以及可供交付的卡车数量。智能算法会提前提供这些信息,这样客户就可以知道特定库存和卡车的准确价格和可用性,以便未来送货。AI 还提供数据分析,以了解哪些承运商过去以什么价格和服务水平运送了什么货物。

4)应对突发情况

当涉及到物流业务时,要做好意料之外的准备,因为一系列情况可能会影响产品的预期交付日期。飓风和洪水等自然灾害、承运人破产和员工罢工都会影响公司物流工作流程的自然进程。人工智能可以被训练从应急计划中学习,这些计划可以保证未来在紧急情况或中断的情况下采取纠正措施。如果天气袭击了原来的配送中心,该技术可以利用过去中断的信息来适应不断变化的环境,将卡车重新安排到不同的配送中心。

结论

物流和供应链是一个复杂的世界,需要大量的规划、弹性和在不可预见的情况发生时进行调整的能力。借助正确的人工智能平台,公司能够自动化物流工作流程,并为因道路建设或恶劣天气而脱轨的车辆选择备用路线。该技术还可以确保公司的库存得到补充,并确定哪些车辆最适合运输特定的货物,从而有助于减少确定运营物流所需的资金和时间。

关于 SAP HANA 的文本分析,我们不知道的 4 件事

原文:https://towardsdatascience.com/4-things-we-did-not-know-about-text-analysis-with-sap-hana-f6c8b3a79bf0?source=collection_archive---------1-----------------------

Source: SAP

当谈到数据挖掘和文本分析时,我们并不缺少强大的软件和工具,让我们能够以对我们的业务有意义的方式分割信息。有一篇关于 KDnuggets 的文章提供了一个令人印象深刻的文本挖掘和分析软件列表,既全面又令人难以置信。

然而,在数据科学界,知道 SAP HANA文本分析有关的人并不多。因此,这篇文章是对使用 SAP HANA 进行文本分析的介绍。手续相对简单;重要的是可能的应用。

事不宜迟,我们开始吧。

为了便于说明,我使用了从 Kaggle 下载的亚马逊移动评论数据集的一个子集。

A subset of Amazon mobile review data set — Text Table

在大多数情况下,我们需要在包含文本的表的列中创建一个索引表。索引表是进行文本分析的地方。

Index Table Creation

“客户的核心声音”提取是一种标准配置,它提取核心配置之外的实体和事实,以支持情感和请求分析。这种配置是必不可少的,因为它识别与令牌相关的积极和消极情绪。这允许我们在与特定主题相关的语料库中评估观点。当我们执行这个时,它会创建一个索引和一个包含我们情感分析的表,如下所示:

Core-Voice-Of-Customer Extraction — Index Table (1)

让我们详细看看索引表的列。

  • 文本表和索引表必须具有相同的 ID 列。
  • 因为我们在前面将我们的配置指定为“客户的核心语音”,这决定了我们的“TA 规则”列。
  • “TA_COUNTER”是对文档中的所有令牌进行计数的令牌计数器。在这种情况下,所有文档都是文本表中的十行字符串。
  • 文档在“TA_TYPE”列中派生了许多实体类型。
  • “TA_TOKEN”列表示这些实体的实际值或令牌。
  • “TA_LANGUAGE”列表示文档的语言。

情绪分析

也被称为“客户之声”,这是事实提取模块中一个有趣的部分。可以基于一组规则提取单词并为其分配匹配的情感,该组规则包括提取客户情感、请求、表情符号和脏话的要求。情绪可以分为强或弱、积极或消极等等。

  • 文本分析认识到,句子“充电口松了”的实体类型是情绪,单词“好”是强烈的肯定陈述,因为它在句子“到目前为止还不错!”。
  • 然而,句子“100 美元之后,我有一部可用的手机”中的“可用”一词是一种微弱的肯定陈述。
  • “loose”的实体类型是个小问题,因为“loose”这个词在句子“充电端口是宽松的”中。
  • 请求撤离。从上表中,已经提取了句子“电话不应该以它所处的状态出售”。

Core-Voice-Of-Customer Extraction — Index Table (2)

  • 此外,文本分析识别出“电话”、“儿子”和“卖方”的实体类型是主题,“100 美元”是货币,“2.5 年以上”是时间段。
  • 单词“dang”与“damn”拼写错误,因此,它被归类为一个人。

语言分析

  • 如果我们在配置期间选择“LINGANALYSIS_BASIC ”,我们将简单地将输入文本分离成它的元素(标记化),如下所示:

LINGANALYSIS_BASIC Configuration

LINGANALYSIS_BASIC — Index Table

  • 如果我们在配置期间选择“LINGANALYSIS_STEMS ”,我们将得到词干或字典形式(词干)的标识,如下所示:

LINGANALYSIS_STEMS Configuration

LINGANALYSIS_STEMS — Index Table

例如,从上表中可以看出,“got”的词干是单词“get”,“need”的词干是单词“need”。

  • 如果我们在配置过程中选择“LINGANALYSIS_FULL ”,它将为我们提供标记功能(单词词性的标记)。

LINGANALYSIS_FULL Configuration

LINGANALYSIS_FULL — Index Table

标记让我们有能力识别一个单词所属的语法类别。从上表来看,“problems”和“problem”是名词,“decide”和“decide”是动词。它识别并标记上下文中每个单词的词性。标记有助于我们理解句子或段落的意思。

语言

SAP HANA 支持 31 种语言。我今天只使用 5 种语言。为了便于说明,我创建了一个玩具桌子,上面有 5 行文字:

Text Table with Five Languages

这个句子来自关于麻省理工学院的最新消息。德语、日语、韩语和中文翻译是通过谷歌翻译完成的。如果不准确,我道歉。

下面是我们从上面的文本表中导出的索引表:

Sentiment Analysis for Five Languages — Index Table

我认为 SAP HANA 文本分析在识别四种语言方面做得相当不错(这里漏掉了韩语)。

宽容词干

目前有英语、荷兰语、德语和意大利语版本。该默认行为允许处理非标准拼写,以更好地最大化召回。让我们看一个例子。

  • 步骤 1,创建单行文本表格:

Tolerant Stemming — Text Table

这里我们可以看到一些问题;“andrew”要大写,“daughterinlaw”在“in”前后要有连字符,“Birthday”不要大写。

  • 步骤 2,使用以下查询创建索引表:

  • 步骤 3,选择列,使用以下查询创建结果表:

  • 第 4 步,让我们看看我们的结果表:

Tolerant Stemming — Result Table

“安德鲁”被词干改为大写,“生日”被词干改为小写,“弟媳”被词干改为连字符。

自己试试

SAP HANA 文本分析包含很多我在这里没有涉及的功能。除了可用的文本数据之外,我们有许多选择来采用文本分析,提取我们需要的实体和事实。

如果你想做同样的实验,你可以很便宜地做到。学习新东西不一定要很贵。您可以下载 SAP HANA express edition 并报名参加关于使用 SAP HANA 平台进行文本分析的免费课程。然后让我知道学习进度如何!

人工智能改变教育行业的 4 种方式

原文:https://towardsdatascience.com/4-ways-ai-is-changing-the-education-industry-b473c5d2c706?source=collection_archive---------5-----------------------

由于人工智能(AI)的最新进展,学术界对学生来说变得更加个性化和方便。这项技术有许多应用正在改变我们的学习方式,让无法去上课的学生可以通过电脑或智能设备接受教育。受益的不仅仅是学生,因为人工智能还帮助自动化和加速管理任务,帮助组织减少花在繁琐任务上的时间,并增加花在每个学生身上的时间。

来自电子学校新闻的最近的一项研究发现,随着我们走向一个更加互联的世界,到 2021 年,教育行业人工智能的使用将增长 47.5%。该技术的影响将存在于从幼儿园到高等教育的任何地方,提供了利用个性化工具创建适应性学习功能的机会,以改善学生体验。这项技术或许能够更好地告知学生,基于他们特定的叙述,他们的工作前景可能会是什么样子,从而帮助他们超越他们的学术生活。WorkFusion 正在帮助组织使用智能自动化平台来改善教室中的评分和归档流程。

以下是人工智能改变教育行业的四种方式。

  1. 管理任务的自动化

如前所述,人工智能在自动化和加速组织和教授的管理任务方面具有巨大的潜力。给家庭作业评分、评估论文和给学生的回答提供价值是教育工作者花费最多时间的地方。人工智能已经可以自动完成多项选择测试的评分过程,以便让教育工作者花更多时间与学生一对一相处,但该技术可能很快就能做得更多。软件开发人员正在创造新的方法来给书面回答和论文评分。录取过程也将受益,因为人工智能可以自动处理和分类文书工作。

2)增加了智能内容

智能内容的概念现在是一个热门话题,因为机器人可以像人类一样创建具有相同语法能力的数字内容,这项技术最终进入了课堂。人工智能可以帮助数字化教科书或创建可定制的学习数字界面,适用于所有年龄范围和年级的学生。一个名为 Cram101 的系统利用人工智能将教科书中的内容浓缩成更容易理解的学习指南,其中包括章节摘要、练习测试和抽认卡。另一个名为 Netex Learning 的平台允许讲师和教授在各种设备上设计数字课程和内容,包括视频、音频和在线助手。由于人工智能,数字讲座和视频会议等虚拟内容现在也成为现实。

3)智能导师和个性化

人工智能不仅仅可以将一堂课浓缩成抽认卡和智能学习指南,因为它还可以根据学生在课堂材料上遇到的困难来辅导学生。在过去,学生们能见到他们的教授的时间是有限的,这意味着办公时间或希望他们回复电子邮件。现在有像卡内基学习这样的智能辅导系统,它们使用来自特定学生的数据,以便给他们反馈并直接与他们合作。虽然这种人工智能应用程序仍处于早期阶段,但它很快就能成为一名成熟的数字教授,帮助学生满足任何领域的教育需求。此外,这些平台将很快能够适应各种各样的学习风格,以帮助每一位教育工作者和学生。

4)虚拟讲师和学习环境

甚至你真正的讲师可能很快就会被机器人取代。嗯,不完全是,但已经有虚拟人类向导和协调员可以通过使用手势识别技术以自然的方式思考、行动和与人类互动,对语言和非语言线索做出反应。随着南加州大学(USC)创新技术研究所等机构开发智能虚拟环境和平台,更加数字化的学习环境也正在成为现实。该组织使用人工智能、3d 游戏和计算机动画来创建真实的虚拟角色和社交互动。这项倡议不仅仅包括虚拟辅导员,因为增强现实可能很快也会成为教室的一部分。

连接学术界的世界

我们已经处于教育的未来,因为美国和全球其他地方的机构已经将人工智能添加到课堂上,希望它能让学生的工作更容易。这项技术还将用于改善管理任务和改善讲师管理课堂的方式。此外,该技术将为全国的机构节省数十亿美元的管理成本,减少管理费用,为更少的员工有效运作铺平道路。

数据可视化可以提高销售和营销一致性的 4 种方式

原文:https://towardsdatascience.com/4-ways-data-visualization-can-improve-sales-and-marketing-alignment-24af8706498d?source=collection_archive---------3-----------------------

骗局被揭穿了:一张照片的价值远远超过 1000 个字。这是科学。我们的大脑本质上是巨大的图像处理器——研究表明,传输到大脑的 90%的信息是视觉的。

你可以利用这种视觉力量来解决当今增长驱动型组织中最大的内讧问题之一——销售和营销之间的错位。

销售和营销之间的分歧最常见的原因是缺乏对彼此工作的理解。如果销售团队没有完成新业务,他们倾向于将其归咎于营销活动带来的低质量线索,而营销团队则将其归咎于杂乱无章的销售开发流程。

解决这类分歧的最佳工具是冷冰冰的硬数据。数据不容易被质疑,但首先它必须被理解。这就是数据可视化的用武之地。利用大脑对图像的偏好,您可以创建数据的可视化表示,这将使您的销售和营销团队更加高效和准确。

在你开始之前,你需要确保你有适合这项工作的工具——通常是一些 CRM 软件和营销自动化的组合,尽管许多销售/营销团队也使用第三方数据可视化工具来增强他们的本地报告能力,提供更多动态插图。

让我们仔细看看您的组织应该创建的一些销售和营销图表:

1.视觉引发变化

Source: Hubspot

创造什么

显示合格销售线索转化为交易的百分比及其来源的动态图表。这些可用于将收入归因于营销活动。

为什么要创建它

在一项针对吸烟者的研究中,研究人员发现,那些看到反对吸烟图片的人比那些看到吸烟后果文字的人更有可能戒烟。这要归功于图像引发的情感反应——视觉记忆和情感记忆储存在大脑的同一个区域。

您可以利用这种联系来帮助触发销售和营销策略的变化,从而提高一致性。清晰展示该部门贡献高价值线索的方式的营销图表将推动销售人员更加努力地从这些来源获得未来的线索。与此同时,当营销人员看到他们的收入贡献中缺乏直观传达的方面时,他们更有可能采取快速行动进行改进。

显然,收入图表没有反吸烟广告那样的情感分量,但在一个充满利益相关者的房间里看到这种可视化的体验,将比收入的模糊概念更能推动变革。

2.视觉创造速度

Source: Klipfolio

创造什么

共享 CRM 仪表板,直观显示销售线索渠道和当前正在进行的交易。

为什么要创建它

阅读电子表格中列出的数据报告可能需要几分钟时间。但是研究表明大脑可以在 13 毫秒内解读图像。这是破纪录的速度,正是在快速变化的销售和营销环境中做出反应所需的速度。

使用视觉效果来展示销售线索在渠道中的位置,这是一种改变游戏规则的方式,可以改善您的销售和营销渠道。

只需一瞥,销售团队就可以清楚地看到潜在障碍出现在他们的终端,并快速解决它们,进一步提高他们对营销对其渠道的贡献的理解。

同时,营销团队可以快速查看他们的销售线索在开发过程中的进展情况,并使用该信息调整营销活动。

3.视觉识别模式

Our brains are hardwired to quickly detect patterns.

创造什么

可视化分析过去的购买趋势,以建立更准确的理想客户档案,从而产生更高质量的销售线索。

为什么要创建它

当你阅读一份很长的报告或数据表格时,很难注意到模式。至少,你需要一支荧光笔(可能还需要一些阿司匹林)来记录所有的信息。

视觉效果不同。我们的大脑天生就能注意到物体之间的关系,快速准确地捕捉模式。

销售和营销团队可以利用这种力量来注意买家行为的趋势——最高转换率的流量来自哪里,他们的人口统计细节是什么,谁负责这些线索,等等。

理想的客户档案和渠道模式将很快出现,从而更好地瞄准高质量的销售线索,并在销售端进行更好的战略规划。

4.视觉效果令人难忘

Source: Cyfe

创造什么

追踪带来最多和最少新业务的来源和活动的图表。

为什么要创建它

任何老师都会告诉你,让学生将信息锁定在长期记忆中的最佳方式——不仅仅是为了下一次突击测验——是将概念与相关的视觉效果配对。

事实上,研究表明,口头陈述三天后,听众成员只能记住 10%的内容。但是在口头和视觉演示三天后,观众能记住 65%的内容。

你不仅可以利用这一点来协调你的销售和营销团队,还可以维护这一点。每月(或每隔一段时间)创建图表,跟踪各种来源和活动的成功情况。

如果您不想构建新的可视化,您也可以构建一个仪表板,从您的活动中实时提取数据,并以图表、滚动条、计量器和其他插图的形式呈现出来。可视化地表示这些数据不仅可以帮助两个团队的成员在日常工作中记住每个来源的价值,还可以帮助他们注意到不同周期之间发生的变化。

如果你仍然需要数据可视化的力量的证明,看一看地图。毕竟,当你把它分解开来,地图是坐标和地理数据的图像表示。想象一下,试图从一个包含城市名称、纬度和经度的电子表格中找到自己的路。

轮到你了

视觉效果不错。将它们用于您的组织中的数据,您的营销和销售团队将很快找到折中的方法。

如果你没有预算订阅昂贵的第三方数据可视化工具,你也可以开始创建自己的营销图表,用这个免费工具显示实时数据。

本帖 原版 最早出现在 Visme 的 视觉学习中心

数据科学家面试失败的 4 种方式

原文:https://towardsdatascience.com/4-ways-to-fail-a-data-scientist-job-interview-d9c4c85c683?source=collection_archive---------2-----------------------

Photo: Pixabay/www_slon_pics

“数据科学家”可能是本世纪最性感的工作。但是雇佣一个可不是那么回事。事实上,这对公司来说是极其痛苦的。对于有志之士来说,在核心数据科学领域获得一个完美的职位也是一件大事,这个职位不仅仅是一个荣耀的头衔,还能提供更多的东西。

虽然机器学习很难,但训练一个能让机器学习的人可能会更难(T2)。一个人通过专业知识的各种递增阶段发展成为一名多产的数据科学家。

对于试图确定一个的公司来说,这就像大海捞针。在 Gramener 雇佣数据科学家多年后,我看到了市场上一些明显重复出现的技能差距模式。虽然有数百种方法会导致面试失败,但这些方法可以归纳为四大途径。

拒绝的四种途径

考虑到在成千上万的申请者中只有少数人能够胜任这个丰富的机器学习职位,了解大多数人失败的地方是有帮助的。对于任何有抱负的数据科学家或希望升职的人来说,这些都是应该避免的明显陷阱。

意识到自己的弱点是改正它的第一步。

成为一名真正成功的数据科学从业者需要掌握一套专业技能。除了轻松的类比,还有什么更好的方式来说明这些角色的细微差别呢?我们将把这种成为数据科学家的经历与成为狙击手的经历进行比较,狙击手是另一项需要非凡技能的酷工作。

我们开始吧..那么,数据科学家面试失败的 4 种方式是什么?

1.用机器学习的流行语粉饰简历

Photo by Inês Pimentel on Unsplash

和任何工作一样,在简历中加入行业术语可能很有诱惑力。数据科学并不缺乏术语。虽然这种装点门面的行为确实提高了简历被人力资源部门的自动评分机器人选中的几率,但这可能会很快适得其反。

不难发现,纸上声称的 高级 分析 技能实际上只不过是对 excel 数据透视表、SQL 查询或谷歌分析的基本熟悉。即使我们把浪费的时间放在一边,这种拙劣的策略也为巨大的失败和更大的消极情绪埋下了隐患。

对于我们有抱负的狙击手来说,这种行为等同于穿上士兵的服装,拿起一把枪,而没有投入训练成为一名士兵所需的时间。虽然听起来很荒谬,但一只羊披着狼皮去打猎一点也不好玩。

2.将建模简化为仅仅进行库调用

Photo by Zhen Hu on Unsplash

许多声称对建模了如指掌的候选人,除了解释模型函数调用和参数之外,还极力解释。甚至在问像随机森林这样的技术做什么之前,一个更重要的问题是为什么首先需要它。

公平地说,一个模型只需一行库调用就可以启动并运行。但是,机器学习远不止这些。人们需要理解,比如说,逻辑回归在哪里比 SVM 更合适。或者,当简单的外推比 ARIMA 或霍尔特-温特斯等预测技术更有效时。

一名优秀的狙击手需要做的不仅仅是瞄准射击。其实射击只是狙击学校里 20%的课程。一个人需要细致入微的技能,如耐心、纪律和良好的观察,才能从远处估计目标范围。

3.缺乏数据分析的基本要素

Photo by Daniel Cheung on Unsplash

虽然对机器学习技术的直观理解可以成为候选人的一大优势,但他们往往就此止步。投资于实践培训,以掌握更基本的技能,如统计和探索性数据分析,往往被忽视。

建模只占分析生命周期的一小部分。在任何一个成功的 ML 项目中,超过一半的时间花在数据准备、争论和方法上。几乎四分之一的时间是在模型解释和推荐中。

即使候选人在项目中标榜 90%的准确性水平,当他们努力解释什么是 p 值时,这是一个悲剧。看到他们在解释为什么我们需要模型的置信区间时信心下降,令人心碎。

在所有学科中,牢牢掌握基础知识是至关重要的,狙击手首先需要成为一名优秀的步兵。如果一个人不会修理在战斗中卡住或走火的枪,那么优秀的枪法还有什么用?

4.无法应用分析来解决业务问题

Photo by James Pond on Unsplash

显然,掌握我们迄今为止讨论的所有方面是一项艰巨的任务。但我们仍然错过了链条中的一个关键环节,这也是大多数面试嘎然而止的地方。

数据科学家的最终使命是解决一个业务问题,而不仅仅是分析数据或构建一个伟大的模型。这是数据分析的圣杯。人们需要构建正确的业务问题,并逐步形成解决这些问题的一系列步骤。甚至在将任何数据加载到工具之前。

当被问到企业如何解决客户流失问题时,当候选人带着数据分析的想法冲进来时,这是一个谈话杀手,或者更糟的是,抛出模型名称来预测流失。一个更好的开始是调查客户为什么注册,他们期望的价值,以及什么影响业务。

想象一下,一个狙击手专家知道所有的一切,但不能隐藏和伪装在地下或选择正确的目标来消灭。这样的人是真正的危险人物,对他们自己的部队来说,内部的危险比敌人更大。

总结:追求数据科学

Photo by James Pond on Unsplash

总之,人们必须通过以下方式对数据科学进行严格的追求:

  • 通过重新构思问题并逐步形成一系列步骤来应对挑战,从而解决一个业务问题
  • 基本技能应用于统计和探索性数据分析,感受数据并迭代分析方法,
  • 选择一系列分析技术或机器学习模型,然后为业务用户设计和解释结果
  • 以及展示这些技能,并正确定位自己的专长,实现理想的角色契合

所以,祝你好运,弥合差距,并在分析人才市场创造一个凹痕!

Plugging the 4 common failure points in Data science interviews

如果你觉得这很有趣,你会喜欢阅读我最近写的关于如何获得非直觉超能力以在数据科学职业生涯中更快提升的文章:

[## 让你在数据科学职业生涯中不可或缺的 4 种超能力

了解数据科学行业的这些最大挑战,以避免职业生涯停滞不前

towardsdatascience.com](/4-superpowers-that-will-make-you-indispensable-in-a-data-science-career-6571e8e7d504)

对数据科学充满热情?随时在LinkedIn上加我,订阅我的 简讯

激活数据科学职业生涯的 45 种方法

原文:https://towardsdatascience.com/45-ways-to-activate-your-data-science-career-6a0d9c664e84?source=collection_archive---------1-----------------------

我们询问了 LinkedIn 小组成员,他们在成为成熟的数据科学家时面临的最大挑战是什么。一些最常见的挫折是:

不知道从哪里开始

缺乏经验

无法形成网络

难以联系到合适的人

作为回应,我们从 SuperDataScience 播客嘉宾那里收集了 45 个我们最喜欢的想法,来(重新)激活你的职业生涯。

这里引用的许多专家都将参加我们的活动, DataScienceGO 。为了有机会向他们请教,加入我们的,2018 年 10 月 12 日至 14 日,圣地亚哥!

当你开始的时候

学习

1.给自己时间。 Kimberly Deas 建议花一年时间学习数据科学的诀窍,从 C++这样的脚本开始,以适应编程的语法,并以此为基础进行构建。

2.阅读!播客嘉宾给了我们很多建议,我们无法一一列举,但这里有一些:

信号和噪音,内特·西尔弗

大数据:一场将改变我们生活、工作和思考方式的革命,维克托·迈尔·舍恩伯格和肯尼斯·库克 ier

金钱球:赢得不公平游戏的艺术,迈克尔·刘易斯

心灵的未来加来道雄

数据灌肠,克里斯蒂安舵

3.混合你的学习途径。单调带来了厌倦。参加网络课程?试着订阅一份杂志。只看课本?为什么不在上班的路上听听播客呢?向经历过你的人学习!

实践

4.不要拘泥于理论,要把你学到的东西应用到现实生活中去。艾玛·威特在分析她的体育锻炼数据时就是这样做的。

5.用 Excel 训练。克里斯·达顿说,对于初学者来说,Excel 是掌握数据科学基础的好方法,因为你可以看到你在处理数据时是如何操作数据的。

6.从 Python R 开始我们大多数播客嘉宾都有偏好。如果您不确定应该使用哪一种,Python 更加用户友好,可能是绝对初学者的最佳入门路线。

7.通过案例研究进行实践。Damian Mingle 说,数据科学家必须将他们的知识应用到现实世界的数据集中。

8.认清你的弱点。计划每周回顾,评估你可以如何改进。

9.构建自己的应用程序。它不需要被广泛使用:为了方便他的网上购物,保罗·布朗用 Python 开发了一个基本的脚本,这样他就可以在网上看到最好的折扣了!

10.练习向外行人解释复杂的问题。 Greg Poppe 说数据科学家必须能够向最终利益相关者传达见解,他们中的许多人并不了解该领域。(作为额外的奖励,卡洛琳·麦科尔说,在悉尼,能够与利益相关者建立融洽关系的有效演示者可以获得 2 万到 3 万美元的加薪。

参与

11.根据丹尼尔·怀特纳克的建议,加入点对点导师计划。对于许多需要“认识正确的人”的数据科学初学者来说,这些程序可以很好地规避第 22 条军规。

12.暗中获取导师。不要在 LinkedIn 上联系潜在客户要求指导,而是通过询问他们对你工作的看法来发起讨论。

13.在线发布。这会给你一些东西给面试官看,并证明你的奉献精神。

14.在社交媒体上升级你的游戏。不要只发表自己的看法。博·沃克主张询问社区他们将如何解决问题。

15.帮助市民科普。正如加斯·佐勒所说,回馈社会总是有回报的。许多公民科学项目正在寻找志愿者。

16.定制您的邀请以建立联系。没有包罗万象的介绍。如果你在挣扎,得到回应的最好方法是解释为什么你特别想和他们联系。

17.参加竞赛。 Eu Jin Lok 指出,竞赛可以磨砺你的数据科学技能,并让你接触到需要它们的项目内部人员。

当你准备申请的时候

交际

18.培养你的人际网络。大卫·塔纳斯科维奇说,你只需要建立一个你非常了解的人际网络,然后向外拓展。如果你不知道在哪里,在线团体和数据科学事件是一个很好的起点!

19.保持社交。正如卡洛琳·麦科尔所说,公司经常在大型活动中推广新技术——确保你能到场观看。

20.保持消息灵通。阅读有关数据科学的最新新闻。它们不仅仅是面试中的话题;他们会让你在游戏中保持领先。

促进

21.管理你的 LinkedIn 个人资料。安迪·克里贝尔注意到招聘人员正在关注 LinkedIn——确保关注你的数字足迹!

22.写一份出色的简历和求职信模板。理查德·道恩斯建议强调为什么你应该被考虑,以及你将给公司带来的好处。

23.拥抱你的经历和教育。像 Erika Dorland 一样,考虑如何将“不太相关”的主题在面试中表现为优势。

过滤器

24.关注你的兴趣,寻找与兴趣互补的工作。不要走老路,因为你认为这是找工作最安全的方式。正如 Nadieh Bremer 所说,当你充满激情时,你更有可能取得成功。

25.将公司分为大公司和小公司。是的,有特斯拉和 SolarCity,但也有更小的公司会给你更多的责任。

26.分析竞争。调查你未来公司雇佣的人,找出你们技能的相似之处。

准备

27.准备相关问题例如:“你对数据科学家的定义是什么?”以及“公司的其他数据科学家如何投资于他们的个人培训和发展?”

28.拿出过去工作的例子 …并准备好谈论它们。尼古拉斯·塞佩达对他在 Tableau 课程中进行的一项练习的解释可能是他获得这份工作的原因。

29.带来价值,即使是面试!Sam Flegal 建议识别公司正在使用的工具,然后研究这些工具提供的数据。你的奉献将会脱颖而出。

当你作为一名数据科学家工作时

(重新)发现

30.复习基础。Deepak Prasad 表示,你的数据科学基础知识应该一直很扎实。

31.在你开始一个项目之前,把问题框起来。对于加斯·佐勒来说,数据科学家最重要的技能是思考如何思考问题。在解决问题之前,考虑问题的相关性和背景。

32.了解你为什么使用选择的工具。大卫·文丘里说,我们为什么使用特定的工具来完成一项任务,这背后总是有原因的,所以了解每个工具的用途是很重要的。

33.提升自己的技能。乔希·科尔森喜欢有“成长心态”的人——不断学习,寻求反馈,改善现状。

适应

34.要灵活。Harpreet Singh 说,最好的数据科学家是那些提出问题并从中形成假设的人,而不是一头扎进一个项目的人。

35.积极主动。Damian Mingle 希望数据科学家学习如何从业务问题中创建数据科学解决方案。这样做可以让你的角色成为公司未来的一部分。

36.找一个导师,最好是你能定期见面的人。不要害羞,也不要做不必要的选择:保罗·布朗说,他的一些导师只是看到了他的潜力的经理。

37.纵观全局,问问自己所做的事情是否有价值。如果你没有为公司提供价值或收入,考虑一种不同的方法。Richard Hopkins 认为,理解如何在操作环境中使用数据经常被忽视。

38.不要忘记可视化工具。了解数据的形态有助于其分析。Tableau 对简化 Megan Putney 的工作产生了巨大的影响,因为它让她一眼就能找到她需要的数据。

39.与合适的人交谈。 Ruben Kogel 让面临类似工作挑战的人联系起来。类似的主题开始出现在他们的讨论中,这使他们能够迅速找到最佳解决方案。

生产

40.成为评书高手。维塔利·多尔戈夫的导师建议他带客户踏上旅程,首先将问题可视化,然后提供合理的解决方案。

41.要有选择性。Harpreet Singh 说,为了产生更大的影响,拥有领域专业知识是至关重要的。在你职业生涯的这个阶段,你将拥有足够的基础知识,可以专攻某个专业。

42.创建在线课程(上)。比起像 Udemy 这样的课程网站,YouTube 是一个很好的试水平台。Ulf Morys 建议观看 Geoffrey Hinton 关于神经网络发展的系列演讲。

43.创建在线课程(二)。当你更有信心的时候,访问 Udemy,搜索与你的主题相关的术语。检查你的主题是否有需求。为创建内容和制作课程制定路线图。

支持

44.促进那些你没有直接受益的介绍。谁知道那件好事将来会对你有什么帮助呢?

45.成为咨询师。珍·安德伍德说,拥有一家公司的好处是她可以专注于让她振奋的项目。

这些是我们从 SuperDataScience 播客中获得的顶级建议,每一条都是精心挑选的,目的是让你离重新开始你的职业生涯更近一步。

但是,如果您希望获得更多信息,请与我们提到的许多专家会面,并加入数百名其他数据爱好者的行列,让他们的数据科学职业生涯更上一层楼,点击此处,参加我们 2018 年 10 月 12 日至 14 日的直播。

Click here to reserve your seat!

歌词 49 年:基于 Python 对 1970 年至 2018 年流行音乐语言变化的研究。

原文:https://towardsdatascience.com/49-years-of-lyrics-why-so-angry-1adf0a3fa2b4?source=collection_archive---------13-----------------------

在过去的 49 年里,歌词变得更具攻击性和亵渎性了吗?我们使用 SpaCy 和 Keras 进行调查。

背景

这篇文章最初是作为一个关于流行音乐与几年前相比是好是坏的争论开始的。有几个理论可以解释为什么特定时间范围的音乐会引起我们的共鸣,这肯定会影响我们对音乐和艺术等主观事物的公正性。这里有一篇关于神经怀旧的优秀文章,详细讨论了这个问题。

但对我来说,作为一个数据驱动型的人,我认为某种程度的定量分析可以发挥作用。如果我能够浏览 1970 年至 2018 年的音乐,并从自然语言处理(NLP)的角度调查歌词,我会发现什么?我的意思是,我知道90 年代末的音乐是有史以来最好的音乐(见上面的神经怀旧文章),但我如何证明/反驳这一点呢?我怎么能测量如此主观的东西呢?

我还想向其他研究人员/数据科学家/爱好者提供一些例子,说明如何收集、构建基于开源网页的数据,然后用于 API 调用。此外,我想展示如何使用空间来标记歌词,这样它们就可以通过一个训练有素的人工神经网络来输入。我使用 Requests、BeautifulSoup 和 SpaCy 进行收集和数据准备任务,使用 matplotlib 和 seaborn 进行可视化,使用 Keras 和 Tensorflow (GPU)来训练 ANN,然后用它进行预测。

关于附带代码的说明

您还会从 github repo 中的许多代码中看到,我专注于线性和可读性,以便其他人可以挑选适合他们目的的代码部分。它通常不会针对性能进行优化,我真正关注的是调查。你可以在这里找到 github 的所有源代码。

假设

在更多的争论之后,我们想出了下面的衡量标准,这些标准将被用来测试歌词,看看它们在 49 年间是如何变化的:

  • 每首歌的总字数作为复杂性的度量。
  • 每年最常用名词的变化。
  • 副词的年使用量。
  • 每年歌曲中出现的亵渎性/争议性词语(本身就是主观的)的数量。
  • 歌曲中攻击/敌意的程度(我们将为此任务建立一个 Keras 序列模型)。

假设如下:

  • 从 1970 年到 2018 年,单词量和语言复杂度都有所增加。
  • 几个常见的名词出现在歌词的整个范围内,但最常见的名词会随着时间的推移而变化。
  • 随着时间的推移,副词变得更具攻击性。
  • 歌词中的亵渎性在过去 20 年(1998 年至 2018 年)显著增加。
  • 现在的歌曲比 20 世纪 70 年代更具攻击性。

辅助实验(即将推出…)

我还将遍历歌词数据,查看特定的新术语何时出现在歌词中,这些新术语以前从未出现过。诸如“互联网、黑莓、iPhone、恐怖主义、经济衰退”之类的术语(在未来某个日期出现)。

我们开始吧!

数据收集

我们使用三个数据集来运行这个实验:

  1. 我们将自己收集一个数据集,其中包括 1970 年至 2018 年间的 3400 多首歌词。
  2. 来自 www.freewebheaders.com的禁止/限制词列表,我们将用来评估歌词中亵渎的感知水平。
  3. 来自 Kaggle (最初用于检测网络巨魔)的训练数据集,我们将用来训练 Keras 顺序神经网络。然后我们将旋转训练好的神经网络来预测一首歌是否被认为是攻击性的。

初始收集(网页抓取)

我在网上找不到任何现成的歌词数据来做这个实验,所以我看了看 billboard.com 的年终 100 首歌曲。虽然他们有追溯到 70 年代以前的记录,但他们的数据集中有很多空白,包括 1991 年至 2006 年的前 100 名名单。幸运的是,有另一个网站(bobborst.com/)是由一个真正的音乐爱好者策划的,所有 2017 年之前的内容都可以在那里找到。

因此,大部分种子数据将从http://www.bobborst.com/收集,其余数据将从 billboard 收集。

我使用 Python 的请求库来获取数据,然后使用 beautiful soup(https://www.crummy.com/software/BeautifulSoup/bs4/doc/)来执行收集。这是一个有趣的任务,因为一个网站是由 html 表组织的,另一个是由 div 组织的,所以我需要两个不同的转换。收集到的数据被存储在一个名为“所有歌曲”的熊猫数据框架中

完整的代码片段见下面 Github 上的函数。

def collect_songs_from_billboard(start_year,end_year):

随着初始数据收集的完成,我现在有了 4900 首歌曲的艺术家、排名、歌名和年份。虽然我真的很专注于歌词,但我没有实验所需的东西。这就是 https://genius.com/发挥作用的地方。

all_songs.head()

歌词和元数据收集(通过 genius.com)

快速的谷歌搜索将我们带到了一个名为lyricsgius的库,它很好地包装了 genius.com API。然后,我们可以使用一个循环来遍历 all_songs,以便收集每首歌曲的歌词。这个 API 还为我们提供了专辑、发行日期、任何相关的 URL、歌曲作者以及歌曲的任何主要艺术家。下面是其工作原理的一个片段(完整代码见 Github)。

api = genius.Genius("YOUR API KEY GOES HERE", verbose = False)
try:
    song = api.search_song(song_title, artist = artist_name)
    song_album = song.album
    song_album_url = song.album_url
    featured_artists = song.featured_artists
    song_lyrics = re.sub("\n", " ", song.lyrics)
    song_media = song.media
    song_url = song.url
    song_writer_artists = song.writer_artists
    song_year = song.year
except:
    song_album = "null"
    song_album_url = "null"
    featured_artists = "null"
    song_lyrics = "null"
    song_media = "null"
    song_url = "null"
    song_writer_artists = "null"
    song_year = "null"

我们需要在这里使用 try/except,因为在 Billboard/鲍勃·博斯特存储艺术家/歌曲的方式与 genius.com 存储艺术家/歌曲的方式之间经常存在差异(例如,and vs &,以 The 开头的披头士乐队,等等)。我在检查一些遗漏时处理了其中的一些,但总体上决定看看我从最初的 4900 首歌曲中获得了多少。API 调用不是很快,所以遍历整个集合需要大约两个半小时才能完成。

调查数据(阶段 1)

一般数据特征

在我扔给 genius API 的 4900 首歌中,我拿回了 3473 首。我用《熊猫》和《T4》来观察歌曲年复一年的分布情况,看看有多少没有出现,以及这是否会对剩下的实验产生巨大的影响。

我运行了两次 API 集合,一次没有任何替换,一次替换了 Beatles、Jackson 5 和&。结果如下:

  • 无替代:3378 条记录(占记录总数的 68.9%)。
  • 替换:3473 条记录(占记录总数的 70.9%)。95 项记录的增加。

一些手动的进一步检查显示,有几首歌曲的标题在两个数据集上不匹配。我们可以花更多的时间来检查异常,但我们将继续了解我们没有 100%的数据集。

Songs with Lyrics

从上面可以看出,我们在 1990 年获得的数据量最多,在 2010 年获得的数据量最少。在我们继续进行的过程中,我们会记住这一点。

数据准备

对于数据准备,我们希望获得三样东西,2 个用于特征目的(这将有助于我们对语言复杂性的轻量级评估),更关键的一个是从歌词中提取名词、动词、副词、停用词和特殊字符,以便执行一些更核心的分析。

空间标记化

SpaCy 是一个相当工业化的 NLP 库系列,可以快速跟踪数据准备,并可用于基于其预训练模型的所有其他类型的文本分析。我强烈建议在这里阅读初级读本。

对于这个实验,我编写了一个函数,它获取动词、副词、名词和停用词词类(POS)标记,并将它们推入一个新的数据集。然后,我们将它们提取出来,并返回到一个丰富的数据集中,使我们能够进一步调查数据准备好通过我们的亵渎检查和我们的攻击性人工神经网络。检查名为的函数:

def add_spacy_data(dataset, feature_column):

欲知详情。

我还使用 split 和 set 来计算每个数据集中的单词数和唯一单词数。让我们来看看新增加的数据。

调查数据(第 2 阶段)

我们现在可以看到我们丰富的数据集,其中包含更多细节:

Enriched Row Example

我们在这里看到,我们有动词,名词,副词,语料库,字数,独特的字数现在可供我们使用。在这种情况下,我们删除了停用词,因为它们本身通常没有太多意义,我们希望将重点放在有影响的词上。让我们进一步看看单词故障。

歌词(原创内容)

[Verse 1] When you're weary Feeling small When tears are in your eyes I will dry them all I'm on your side When times get rough And friends just can't be found Like a bridge over troubled water I will lay me down Like a bridge over troubled water I will lay me down  [Verse 2] When you're down and out When you're on the street When evening falls so hard I will comfort you I'll take your part When darkness comes And pain is all around Like a bridge over troubled water I will lay me down Like a bridge over troubled water I will lay me down  [Verse 3] Sail on Silver Girl Sail on by Your time has come to shine All your dreams are on their way See how they shine If you need a friend I'm sailing right behind Like a bridge over troubled water I will ease your mind Like a bridge over troubled water I will ease your mind"

语料库(删除了停用词、标点和小写字母)

verse 1 when be weary feel small when tear eye I dry I be when time rough and friend not find like bridge troubled water I lay like bridge troubled water I lay verse 2 when be when be street when evening fall hard I comfort I will when darkness come and pain like bridge troubled water I lay like bridge troubled water I lay verse 3 sail silver girl sail Your time come shine all dream way see shine if need friend I be sail right like bridge troubled water I ease mind like bridge troubled water I ease mind

副词

when when when just not when down out when when so hard when all around how right

名词

verse tear eye side time friend bridge water bridge water street evening part darkness pain bridge water bridge water time dream way friend bridge water mind bridge water mind

动词

be feel be will dry be get can be find will lay will lay be be fall will comfort will take come be will lay will lay sail sail have come shine be see shine need be sail will ease will ease

我们将绘制词频(总的和唯一的),以及每年使用的平均词频,看看我们是否能证明我们的复杂性增加和名词在 49 年间的演变。

每年平均字数和独特字数

Songs Collected, Average Words, and Unique Words per Year

从上面的图表中我们可以看到,从 1970 年到 2018 年,每首歌的单词量一直呈上升趋势,一般来说,独特的单词随着总单词量的增加而上升。我们还可以看到,收集的歌曲总数似乎对这两者都没有直接影响。我们也可以用一个堆叠的条形图来看这个,看看是否有更多的见解。

Songs Collected, Average Words, and Unique Words per Year (Stacked Bar)

这有助于我们确定 1978 年出现了最低数量的独特词,也支持了一个假设,即(通过独特性和字数的衡量)歌词随着时间的推移变得越来越复杂。我们也可以用 matplotlib 的 subplot 特性来叠加多个维度。这将有助于我们想象是否有任何明显的相关性。

Songs Collected, Average Words, and Unique Words per Year (Multi Axis)

从这个角度来看,我们确实可以看到独特的单词和总单词彼此密切相关,并且收集的歌曲数量似乎与这些值没有明显的关系。其实当一些最复杂的歌词出现的时候,收藏其实是比较低的。由于我们对字数和唯一字数都进行了平均,如果数据导致了过大的问题,我们会看到收集未命中的下降。

看起来我们歌词最复杂的年份是 2004 年和 2005 年。下面我们就来看看他们。

Most Words, 2004

Most Words, 2005

我们可以在这里看到,在这两种情况下,前 5 名都是说唱/嘻哈歌曲,这在这种情况下是有意义的,因为这两种类型都是词重于当时的一些更流行的歌曲。您可以检查代码以获得更多与数据交互的方式,但是可以说使用独特的单词得到的结果是相似的。我没有能力收集歌曲的流派信息,但我认为你会看到这些流派在这个时间段非常流行,这将再次支持字数的增加。

我们来看一两个字云。

我写了一个函数,将 wordcloud 库包装成我喜欢的格式和字体包,并在这里通过它推送了一些年的数据。实际上,我在日常调查中大量使用词云来识别异常值和术语,这些异常值和术语可能会使我构建的模型产生偏差。他们也可以很漂亮。请注意:由于一些歌词可能包含亵渎的内容,这可能会显示在单词 clouds 中。

我们将看看最低复杂度和最高复杂度的年份,看看每个年份中最常见的是什么。

1972 Word Cloud

2004 Word Cloud

在单词 clouds 上面,看起来像诗句出现了很多。那是因为它们在歌词里是位置标记。我们可以回过头来把它们当作停用词,但是由于它在整个数据中似乎是一致的,我们或许可以继续下去。如果我们再回来,我们可能要清理它。单词云非常适合这个。

现在来看看这些年来最常见的术语。

Nouns over the Years

从上面的形象化来看,好像爱情在 1993 年达到顶峰,然后被婴儿取代,接着被什么取代,但那真的是一个代词,所以我们可以倒向时间。宝贝在 2012 年过得很好。这支持了我们的假设,即歌词的主题随着时间的推移发生了变化,即使我们把它限制在所有年份看到的词。

亵渎分析

现在我们理解了数据,我们知道字数增加了,主题也变了,看起来我们的收集没有因为每年记录的差异而有太多偏差。我们现在可以继续分析歌词中亵渎的频率。

关于偏差的一点注记

我们用来检测脏话的字典是基于当今的文本、对话和媒介,所以它可能偏向于更现代的歌曲。我们可以凭直觉认为,今天的歌曲有更多的公开的亵渎,但我没有一个更古老、更隐蔽的亵渎形式的列表来进行这个实验。记住这一点,让我们继续。

我从 www.freewebheaders.com 下载了一本字典,里面有他们列出的 facebook 等网站的禁忌词汇。你可以在链接上读到更多,但只有在你不容易被冒犯的情况下才真正打开文件,它包含一些相当可怕的语言。然后,我遍历数据集,查看这些词何时出现,将它们与歌词一起存储,然后计算出现的频率。结果如下图所示。

Bad Words per Year

这张图表支持了我们的假设,即近年来有更多的脏话,但这里有三个有趣的点:

  • 从 1991 年起,亵渎行为显著增加。这可能是由于图表中增加了以前审查过的内容。
  • 90 年代中期和 2000 年代中期亵渎行为有了显著增加。这很有趣,因为它发生在 20 多年前。
  • 2018 年是有记录以来最世俗的一年。因为在写作中,脏话通常与积极性无关,这似乎支持了我们的攻击性增加假说。

攻击性分析

为了进行攻击性分析,我在 Kaggle 上找到了一个数据集,其中包含标记为攻击性/非攻击性的短信。我寻找一个隐蔽/公开/非攻击性的,但没有任何运气。

数据集包含 20,001 条消息,经过简短的空间处理(与歌词使用的方法相同)后,数据准备好传递到 scikit-learn 的计数器矢量器,然后,单词包数据准备好,传递到 Keras 顺序模型。你可以在这里找到一个不错的关于 Keras 入门的轻量级教程。

我为模型尝试了几种不同的配置,但是当我将特性限制在 250 个时,产生了最积极的影响,考虑到源数据的简短性质和缺乏主题复杂性,这是有意义的。它可能不会像我们在完美世界中希望的那样将许多歌曲归类为攻击性,但我们正在寻找攻击性的上升趋势,并且该模型将平等地应用于所有数据。

Keras 模型相当深,我添加了多个下降层来帮助避免过度拟合。当我向模型中添加更多的层时,我会稍微提高精确度,并且数据集足够小,很容易测试。

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_49 (Dense)             (None, 128)               32128     
_________________________________________________________________
dropout_25 (Dropout)         (None, 128)               0         
_________________________________________________________________
dense_50 (Dense)             (None, 512)               66048     
_________________________________________________________________
dropout_26 (Dropout)         (None, 512)               0         
_________________________________________________________________
dense_51 (Dense)             (None, 512)               262656    
_________________________________________________________________
dropout_27 (Dropout)         (None, 512)               0         
_________________________________________________________________
dense_52 (Dense)             (None, 250)               128250    
_________________________________________________________________
dropout_28 (Dropout)         (None, 250)               0         
_________________________________________________________________
dense_53 (Dense)             (None, 250)               62750     
_________________________________________________________________
dropout_29 (Dropout)         (None, 250)               0         
_________________________________________________________________
dense_54 (Dense)             (None, 250)               62750     
_________________________________________________________________
dropout_30 (Dropout)         (None, 250)               0         
_________________________________________________________________
dense_55 (Dense)             (None, 128)               32128     
_________________________________________________________________
dense_56 (Dense)             (None, 128)               16512     
_________________________________________________________________
dense_57 (Dense)             (None, 128)               16512     
_________________________________________________________________
dense_58 (Dense)             (None, 1)                 129       
=================================================================
Total params: 679,863
Trainable params: 679,863
Non-trainable params: 0
_________________________________________________________________

git repo 中有两个 Jupyter 笔记本,一个有收集和分析代码,另一个有 ANN 训练代码。如果您自己运行这个,请确保在您尝试将它加载到分析代码之前,首先训练 ANN。那里有关于如何保存、加载和管道化你的模型的例子。

让我们看看我们的 ANN 预测了什么。

Aggressive Songs Per Year

从上面我们可以看到,我们的攻击性预测模型认为很多歌曲都是攻击性的,但它本身的趋势看起来有点下降,这与我们的假设相反。我们可以通过再次使用 matplotlib 的子图/多轴特性来查看它们的叠加。

在这里,我们可以看到,当你缩放这两个图时,给定收集的歌曲数量与发现的攻击性歌曲数量,歌曲在 2002 年一直在攀升和反转。我们有理由怀疑我们的模型在预测方面的整体准确性,但这种基于遥远但可用的数据集(网络欺凌消息)的轻量级方法可以帮助我们了解情况。在这种情况下,我认为有足够的指标让我想要寻找更丰富的数据集和更复杂的方法来建立一个攻击检测模型。

结论

所以我们在这里。我们收集了自己的种子数据,用它从 API 中提取更多的数据,为文本分析准备数据,对照亵渎词汇的字典进行检查,建立一个人工神经网络来检测攻击行为,然后根据我们的数据运行它。让我们重温一下我们的假设,看看我们学到了什么。

  • 从 1970 年到 2018 年,单词量和语言复杂度都有所增加。
  • 支持。我们可以看到,通过测量频率和独特性,歌词已经变得复杂。
  • 几个常见的名词出现在歌词的整个范围内,但最常见的名词会随着时间的推移而变化。
  • 支援。我们现在知道爱在 1996 年失去了价值,但从未真正消失。1993 年和 2012 年是宝宝最好的时光。
  • 随着时间的推移,副词变得更具攻击性。
  • 不支持。我甚至没有画出图表,因为数据是如此不确定。请随意查看 git repo 并进行探索。
  • 歌词中的亵渎性在过去 20 年(1998 年至 2018 年)显著增加。
  • 支持。2018 年是有记录以来最亵渎的一年。
  • 现在的歌曲比 20 世纪 70 年代更具攻击性。
  • 可能支持。我们怀疑我们的人工神经网络(82%基于它自己的数据)相对于歌词数据集的准确性,但它确实支持更多研究的需要。

感谢阅读,让我知道你还想看什么!

推荐引擎可以为企业带来的 5 大优势

原文:https://towardsdatascience.com/5-advantages-recommendation-engines-can-offer-to-businesses-10b663977673?source=collection_archive---------3-----------------------

Ref — www.avari.com

在我们之前的博客中,我们已经解释过什么是推荐引擎以及它们的工作方式。实现推荐引擎的主要目的是让客户购买更多的产品。如果不能,那么它就违背了拥有推荐引擎的目的。

现在既然有了产品推荐引擎主要靠数据运行。您的公司可能没有足够的存储容量来存储来自您网站访问者的大量数据。您可以使用 Hadoop、Spark 等在线框架,这些框架允许您将数据存储在多个设备中,以降低一台机器的可靠性。Hadoop 使用 HDFS 将文件分割成大块,并将其分布在集群中的节点上。这使得数据集的处理速度更快、效率更高,相比之下更传统的超级计算机架构依赖于并行文件系统,计算和数据通过高速网络分布。

最后,我们使用 MapReduce 编程模型处理大数据集。这样,我们可以同时在分布式文件系统中运行该算法,并选择最相似的集群。因此,任何组织都可以使用开源工具开发自己的推荐引擎架构,我们可以使用我们的专业技术帮助他们实现该引擎。

产品推荐引擎的优势

Ref — http://www.business2community.com/strategy/product-recommendation-engines-mean-business-0893268

你不需要通过市场调查来确定一个顾客是否愿意在一个能最大限度帮助他们找到合适产品的商店购买。他们将来也更有可能回到这样的商店。为了了解推荐系统的商业价值:几个月前,网飞估计,它的推荐引擎每年价值 10 亿美元。

以下是企业使用推荐引擎可以获得的 5 个好处:

收入— 多年的研究、实验和执行主要是由亚马逊推动的,如今,不仅在线客户的学习曲线减少了。许多不同的算法也已经被探索、执行和证明,以驱动相对于非个性化产品推荐的高转化率。

客户满意度— 很多时候,客户倾向于在上次浏览时查看他们的产品推荐。主要是因为他们觉得会找到好产品更好的机会。当他们离开现场后又回来时;如果他们以前的浏览数据是可用的,那将会很有帮助。这可以进一步帮助和指导他们的电子商务活动,类似于实体店的经验丰富的助理。这种类型的客户满意度导致客户保持。

个性化— 我们经常接受朋友和家人的建议,因为我们相信他们的意见。他们比任何人都清楚我们喜欢什么。这是他们擅长推荐东西的唯一原因,也是推荐系统试图模仿的。您可以使用间接积累的数据来改善网站的整体服务,并确保它们符合用户的偏好。反过来,用户会有更好的心情购买你的产品或服务。

发现——例如,iTunes的“天才推荐”功能,Amazon.com 的“经常一起购买”会做出令人惊讶的推荐,这些推荐与我们已经喜欢的东西相似。人们通常喜欢被推荐他们喜欢的东西,当他们使用一个与他/她的选择非常相关的网站时,他/她必然会再次访问该网站。

提供报告—个性化系统的组成部分。向客户提供准确和最新的信息,使他能够对自己的网站和活动方向做出可靠的决定。基于这些报告,客户可以为滞销产品提供报价,从而推动销售。

Ref — www.avari.com

当然,进行网上销售是令人满意的,但如果你能做得更多一点呢?电子商务组织可以使用不同类型的过滤(协作、基于内容和混合)来创建有效的推荐引擎。很明显,亚马逊在这个原则上是成功的。每当你买一个动作人偶,就会根据内容本身推荐更多的东西给你。例如,DVD 是根据你刚买的动作玩偶制作的。

向客户推荐优秀产品的第一步就是要有勇气投入到更好的转化中去。请记住——真正吸引客户的唯一方法是与每个人单独交流。

有更先进和非传统的方法来驱动你的推荐过程。这些技术即深度学习、社会学习和张量分解基于机器学习和神经网络。这样的认知计算方法可以让你的推荐者的质量更上一层楼。此外,随着最近聊天机器人的采用,它可以与推荐引擎相结合,提供产品的后续服务。可以肯定地说,产品推荐引擎将随着机器学习的使用而改进。并创建一个更好的客户满意度和保留流程。

5 大数据可以给零售业带来的惊人改善

原文:https://towardsdatascience.com/5-amazing-improvement-big-data-can-bring-to-retail-2c70bdd5a871?source=collection_archive---------1-----------------------

在公司开展业务的方式中,数据正在慢慢取代经验和传统。它已经在不同的垂直领域证明了自己的价值,包括金融、医疗保健,当然还有零售。这场革命始于 20 年前杰夫·贝索斯关于个性化的宣言。他是第一个理解大众营销将会终结的人,而拥有数百万个版本的单一商店来满足每个顾客的怪癖,将会推动销售。

数据让您以客户为中心

作为零售商,将客户放在每一项举措的核心位置,只会刺激增长和投资回报。但首先,你必须尽可能地了解你的客户。收集个人数据通常是一个令人不快的过程,但大多数客户会向定制服务投降。当然,你应该在尽力帮忙和打扰之间保持一条微妙的界限。通常,记住以前搜索和订单的细节,建议补充产品并确保运输细节是最新的被认为是安全的。

多渠道的流行给组织带来了一个新问题。跨各种平台分析客户旅程的每一步,以提升再营销力度并确保销售,是大数据的最佳使用案例之一。来自it transition的研究人员了解到,在销售漏斗中小心翼翼地跟踪客户,创造全渠道体验,可以提高客户的忠诚度。

数据减少流失

关注客户的需求是确保你不会总是试图取代现有客户群的一种方式。研究表明,吸引一个新客户的成本是保持现有客户的七倍。数据可以揭示长期客户的模式,并帮助公司识别新的线索和最有可能在未来产生相对更多利润的客户。通过针对这些类型的客户量身定制促销活动,零售商可以创造更强的纽带。实现这一目标的有效方法是使用聚类算法,将客户分成自然的群体,并解决每个群体的需求和特殊性。

数据改善供应链

大数据不仅有助于满足客户需求,还有助于履行管理职责。库存分析是避免供应过剩并确保你总是有足够的畅销商品的最好方法之一。通过考虑趋势、季节性和其他关键因素的预测分析,基于大数据的模型可以帮助零售商获得正确数量的产品或正确数量的原材料。通过销售的 SKU 的实时可视化,有可能实现实时订购以补充它们。通过将内部数据与外部信息(如天气或公共新闻)聚合,组织可以提高效率,并使系统高度适应真实的市场条件。

策略计划

不仅供应链可以由大数据驱动,长期计划也是如此。着眼于购买模式,零售商可以创造更合适的定价模式,摆脱传统的季末销售。对不太受欢迎的产品进行动态促销和战略性销售,可以显著提高收入和利润率。例如,很多旅游网站根据特定目的地的需求和浏览器 cookies 识别的客户位置,制定自适应的价格模式。

推荐引擎可以分析过去的购买,并发现推荐购物车的补充产品的模式。当然,你不需要步塔吉特的后尘,在家人知道之前宣布怀孕,但是确定食谱的成分并推荐一瓶合适的葡萄酒会很受欢迎。

成本降低

已经实施大数据分析的公司注意到,受影响的流程也会改变员工的工作方式。虽然在最初的实施阶段,与大数据相关的修改可能会影响日常工作流并减慢业务速度,但在实施之后,情况会相反。

通过业务流程再造,有可能最大限度地降低成本,实现某些流程的自动化,并腾出更多时间专注于核心任务,而不是从事算法运行数据已经涵盖的管理工作。

大数据采用障碍

大多数公司仍然徘徊在探索阶段,看看技术能提供什么,起草可能的路线图,评估挑战和机遇。不到四分之一的零售公司处于参与阶段,测试试点项目并运行一些计划,只有微不足道的百分比已经做出了重大努力,类似于亚马逊的努力。目前,大多数组织仍在努力进行部署。

第一个障碍是定义大数据项目的范围。公司需要回答的最关键的问题是什么?他们应该分析哪些数据源?这些已经有了吗?数据干净可靠吗?

第二个挑战与分析此类数据的技术有关。大多数公司负担不起专门的数据科学团队,或者说这没有任何商业意义。幸运的是,有足够多的咨询公司提供适合任何预算和目的的解决方案。资助它似乎不再是一个真正的障碍。

第三,安全和治理问题不容忽视。操作大量客户数据会转化为运营风险。网络犯罪的威胁正在上升,但目前几乎没有公认的行业标准来帮助打击这些威胁。

IoT 是下一步吗?

虽然目前公司正试图从现有数据中获得所有可能的见解,但随着大数据分析提供的优势成为主流,他们将寻找新的来源。

保持竞争优势的一个可能的解决方案是部署物联网。这些可能包括跟踪传感器、与顾客手机互动的店内信标,以及指导购物助理的偏好。尽管目前这听起来像是科幻小说中的东西,但简单的传感器甚至忠诚度应用程序可以帮助零售商获得更多信息,了解我们喜欢什么,我们准备支付什么价格,以及什么让我们感到不舒服并离开商店,无论是在线还是离线。是的,大哥在这里,但他是好意。

5 2017 年人工智能和数据预测

原文:https://towardsdatascience.com/5-artificial-intelligence-and-data-predictions-for-2017-2d700fcb1751?source=collection_archive---------5-----------------------

Photo credit Julian Hibbard

人工智能环境和为其提供动力的数据,看起来与一年前大不相同。下面的预测大致考虑了未来一年的公共景观、需要考虑的一些挑战以及如何让事情朝着正确的方向发展。

预测#1。洞察数据将取代大数据

“大数据”一词在 2016 年炙手可热,但没有人能就“大”的真正含义达成一致。数据的大小(来自任何来源)不会神奇地赋予重要性。数据的价值来自于从中发现的洞察力。

将会有一个围绕数据的新对话,询问任何给定情况、流程或业务环境的核心是什么,以及更好的信息如何能够发挥优势。(数据)尾巴不要再摇了。

更好的理解依赖于一个明确的观点,这要归功于对特定领域、情况或一系列经验的了解。拥有这些技能的人,能够“只见树木不见森林”,将会变得更有价值。

2017 年将是更需要对数据进行深思熟虑的洞察的一年,因为行业领导者意识到了数据的力量。工程只能解决部分问题;也需要不同的观点来为我们最紧迫的问题提供更好的解决方案。

预测二。后真相世界的数据

很大一部分公众越来越不信任官方数据或信息来源。走向后真相世界观的趋势将变得更强,并影响更多的公共和私人领域。

科学事实,一个专家或者行业的观点在呈现给大众的时候不能再作为一个奇点。任何事实都需要更充分的讨论来支持,以便更好地为主题提供信息。

使用既没有行话又没有居高临下的清晰英语至关重要。将更需要解释所提出的任何数据背后的理由,包括任何方法的背景和缺点。

任何数据或事实都需要考虑到受众。在上下文中使用讲故事来说明将有助于理解想法。这种对教育的需求应被视为与迄今为止尚未成功接触到的受众交流的机会。

未能让(所有)公众参与进来将导致日益扩大的分裂,这将影响到社会的方方面面,从政治到教育,从医疗到安全。持续缺乏外联将严重阻碍科技进步。

数据是让 AI 运转的燃料。没有数据,人工智能就变得没有活力。我们需要公众理解数据的重要性,如何使用数据,以及最终如何帮助他们。

预测三。公众对信息的需求。

与上述预测形成鲜明对比的是,公众将继续要求更多的数据来帮助做出明智的决策。当病人越来越多地使用搜索引擎和可用信息在线研究他们自己的情况时,这在医疗领域可以最明显地看到。

对帮助决策的更多信息的需要和渴望将扩展到生活的所有领域。随着对数据的访问变得更加自由,所有企业、组织和政府都应该接受并适应与消费者、受众或公民之间的关系变化。这一挑战应该正面应对,并成为战略规划的一部分。

应该减少对广告、公关或围绕公共传播的“宣传”的依赖,代之以更直接、更有深度的信息。一个消息灵通的受众可能是传播信息的最佳代表。

越来越有能力做出明智决定的公众可以成为一股强大的力量。企业、组织和政府都应该鼓励这种行为,成为信息来源和对话的一部分。现在,信息比以往任何时候都更能被视为力量,被视为塑造世界的方式。

预测#4。数据将被连接

孤立的数据将变得相互关联,因为组织意识到如果将数据留在存储中,它们将毫无价值。只有当数据被考虑、检查和测试时,它才变得有用。

此外,上下文中的信息比孤立的信息更有价值,因此,我们将看到更多的数据伙伴关系。这种情况会发生在不同的领域,不同的数据集提供了上下文,在同一个领域,对更广泛的数据集的不同观点是有价值的。

像 Google BigQuery 这样的方法将从网站分析扩展到更多领域,主题越来越多样化。

信息不是零和游戏,赢家通吃。相反,它在本质上越来越具有协作性,每个参与者都可以带来独特的视角并提出新的问题。

预测五。不使用人工智能的公司将会落后

虽然不会有一年人工智能接管,但人工智能的力量将变得对公众可见。最明显的例子就是无人驾驶汽车大规模出现在我们的街道上。到那时,没有嵌入该技术的汽车公司将被甩在后面,退回到旧的做事方式。

每个公司都应该考虑如何在他们的业务中潜在地使用人工智能。应该收集数据并检查流程。早期采用者获得了丰厚的回报。随着人工智能提高核心能力,其影响力将变得更加强大。任何迟到的人都将有一个非常陡峭的学习曲线,不仅是对技术,还有对数据应该采取的新方法。

在那些具有前瞻性思维、拥抱人工智能和新可能性的公司和那些无法适应的公司之间,将会出现分裂。速度和影响将比我们见过的任何一次技术颠覆都要大。

5 份数据科学摘要

原文:https://towardsdatascience.com/5-bite-sized-data-science-summaries-a5afb8509353?source=collection_archive---------8-----------------------

本着团队合作的精神, Next Rewind 视频系列要求一群人从谷歌云 Next SF 2018 中挑选五个最喜欢的演讲,并在不超过五分钟的时间内对着镜头进行讨论。

5 个最喜欢的演讲。5 个视频摘要。5 分钟或更少。

我去了吗?你打赌!部分原因是因为我喜欢和大家分享让我开心的东西(惊喜!)部分原因是因为一年前我真的不擅长在摄像机前说话——除非我强迫自己练习,否则我永远也征服不了它无情的一眨不眨的眼睛。运气好的话,我会学着在应该指右边的时候停止指左边…

Niiiice pointing over there, buddy.

5 个最喜欢的演讲

以下是 2018 年我最喜欢的 5 个演讲,以及我选择它们的原因。我有从 300 多个演讲中选择的优先权,所以这些话题不是多余的!我认为数据科学爱好者最欣赏的就是他们。

所以,事不宜迟,以下是我的清单,从最基本到最基本排列。

#1 真正的企业已经将人工智能用于娱乐和盈利!

如果你听过这样的观点,“当然,这是一些闪亮的数学,但你不能用它做任何实际的事情。”再想想!这太像 2008 年了。在过去的十年里,发生了很多变化。请允许我说一段简短的历史课题外话,这段视频里没有。

人工智能花了半个多世纪被大肆宣传,而不是发生。你可能会认为这是因为算法不存在,但深度学习(你称之为“AI”的那个东西)是 60 年代的孩子

许多算法从 60 年代就有了,但那时工具还不太好,处理能力也不够强。

真正的原因是工具还不太好(相当于原型无线电的软件,只能由研究生使用,他们用胶带和梦想建造了它;在它附近呼吸,它就会分解)并且处理能力不够。

在云技术出现之前,除非你先建立一个数据中心,否则你无法建立一个原型。

云技术改变了这一切。云提供商与任何想尝试的人分享他们的硬件,这意味着人工智能是一个先试后买的提议,这在十年前是不可能的。

云提供商也在构建考虑到通用消费的工具,它们比过去好得多。这是我喜欢人类的一点:每当有人发明了一个有用的工具,其他人就会站出来让它更容易使用。与 19 世纪 90 年代的收音机相比,今天的收音机更容易安装,并且更有可能在高速飞行到最近的墙壁时幸存下来。

许多人没有意识到,今天应用人工智能的故事实际上是一个关于云的故事。

当然,没有数据,所有这些都是没有用的,这也是人工智能不断上升的另一个原因!世界正在收集比以往任何时候都多的数据,因此企业现在有燃料让人工智能运转起来。所以我要说的是:人工智能现在是真实的,这很令人兴奋!

这就是为什么我选择了一个用例演讲:人们需要知道这不再是科幻了。AI 在这里,太棒了!

但是后来我遇到了一个问题, Rajen 最初的演讲是如此密集的用例,以至于总结它们是不可能的(这是一个多么大的问题啊!)所以我用我的 3 分钟原创演讲中挑选出一些很棒的建议,并鼓励你们去看看完整的东西,沉浸在示例盛宴的巨大规模中。

My summary of the original talk “Create Customer Value with Google Cloud AI” by Rajen Sheth

#2 什么是机器学习,我怎么吃?(没有博士学位)

嘿,你知道我会抓住任何机会强调研究人工智能和应用人工智能是不同的学科 …如果我能为应用方面大声疾呼,你很难指望我放弃这个机会,对吗?

我们需要更多工程师和技术爱好者能欣赏的语言基础和应用的直白对话。

Lak 的原始演讲完全跳过了博士后队伍的标准线性代数,而是直接用工程师和技术爱好者可以欣赏的语言谈论基础知识和应用,因此它已经为我赢得了巨大的分数。它还用真实用例的例子来渲染想法,然后通过散布四个优秀的建议来完成交易,这是我选择使用的那些宝石我的 3 分钟详述:

My summary of the original talk “Leverage AI on the Cloud to Transform Your Business” by Lak Lakshmanan

#3 现在可以用 SQL 做机器学习了(!!)

如果你庞大的数据库不会进入你的机器学习,那就把机器学习带入你的数据库吧! BigQuery 刚刚为您提供了 SQL 中的线性和逻辑回归。现在,您不必知道导出数据库的痛苦,就可以将它插入到您的 TensorFlow 设置中!

如果你是一名专家分析师,你的货币是速度,但对大规模数据集的机器学习需要永远。

为什么会如此激动人心?如果你是一个专家分析师,你的货币就是速度 T21。你越快发现一个数据集中是否有潜力,你就能获得越多的赞赏。唉,如果你在大规模运营,你可能已经习惯了花费几乎永远的时间来导出数据,以尝试哪怕是一个基本的机器学习模型。不再!

这个。是。即时。满足感。

BigQuery ML 不仅为那些以令人瞠目结舌的规模运营的人加速了分析,而且本着超额完成的精神,它还提供了额外的可爱东西,如 ROC 曲线和特征分布分析。我用我的 2 分钟滔滔不绝,给你一个当你加速时它看起来是什么样子的偷偷峰。如果你受到了启发, Naveed 和 Abhishek 的原话有完整的演示。

My summary of the original talk “How to Do Predictive Analytics in BigQuery” by Abhishek Kashyap and Naveed Ahmad

#4 数据科学家,你不再需要基础设施黑带

这是一个关于更好的工具的故事,这些工具使数据科学家能够做更多他们喜欢的事情,而不是那些感觉像是苦差事的事情。这也是关于更广泛的授权:更好的工具使获取技术民主化,让人们成为自己光明未来的建筑师。我已经在另一篇博文中对此大加赞赏了(没有这些无聊的部分,你怎么称呼人工智能?但是,把家务杂事抛开,让人们可以专注于创造性和做他们喜欢的事情,这让我陷入了狂热的激情,所以这就是为什么库伯弗洛的演讲在我的最爱列表中——这绝对是朝着那个方向迈出的一步。

数据科学家们,你们希望能够将可扩展的机器学习带到混合云环境中,但请看着我的眼睛,告诉我你们真的希望将宝贵的建模和分析时间花在 be learning Kubernetes 上,并弄清楚诸如基于作业提交的自动扩展、优化的虚拟机和数据泄漏预防之类的事情。没有吗?好吧,幸运的是你不需要。

我用我的 3 分钟带你了解机器学习可组合性、可伸缩性和可移植性的基础知识,然后从大卫的原话中向你展示 Kubeflowelastic file(数据可移植性)可以做什么的精彩演示。

My summary of the original talk “Machine Learning Made Easy with Kubeflow and Elastifile” by David Aronchick

#5 TensorFlow 走上了越来越可爱的轨道

好吧,让我们现实一点:不管怎样,前 5 名将会有一个张量流的位置。这是数据科学饮食中的主食。我很高兴——而不是顺从地选择劳伦斯的原话,因为它突出了令人敬畏的新功能,使 TensorFlow 不仅比以往更好,而且更友好。我对这个非常兴奋,甚至在制作视频之前我就写了博客。如果你不喜欢看东西,可以获取 9 关于 TensorFlow 你应该知道的事情中的文字。或者在下一段得到这个总结。(效率!)

TensorFlow 是数据科学的工业车床,专为大型数据集上的最先进的人工智能而设计。

如果你在处理巨大的数据集,或者如果你在追求人工智能的最新发展,那么 TensorFlow 可能就在你的雷达上。这是数据科学的工业车床,在早期,它似乎也从工业车床那里获得了用户友好的建议。如果你尖叫着跑开,回来吧!它现在更可爱了,而且有一些令人难以置信的新功能。

我用我的 2.5 分钟向你展示我最喜欢的亮点,其中包括自我表达的机会,如果 Python 是你的母语,你会发现更容易接受,如果你不是 Python 爱好者,你也可以在其他语言中使用它——包括 JavaScript(你好,在浏览器中做任何事情!).在数据处理、模型共享以及在手机和烤面包机上支持机器学习方面也有所改进。

My summary of the original talk “What’s New with TensorFlow” by Laurence Moroney

其他 300+的演讲也很棒,但这五个温暖了我数据科学心中的一个特殊位置。希望你喜欢它们!(查看下一个倒带视频系列,查看各种技术主题的 flash 摘要。)

感谢阅读!YouTube 课程怎么样?

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

Enjoy the entire course playlist here: bit.ly/machinefriend

喜欢作者?与凯西·科兹尔科夫联系

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

预测性业务分析的 5 个关键步骤

原文:https://towardsdatascience.com/5-critical-steps-to-predictive-business-analysis-110b0dedbc9b?source=collection_archive---------9-----------------------

如何设计结论性的 A/B 测试实验?

作为一名数据工程师,当我在解决一个问题时,我经常问自己,如果这个问题没有数据会怎么样?如果我不得不在不知道市场/用户会如何反应的情况下进行设计变更,那该怎么办?有没有更靠谱的决策方法?

这篇文章将带你经历五个关键步骤,为 A/B 测试设计一个可靠的结论性实验。以下是我们将涉及的要点:

  1. A/B 测试介绍。
  2. 选择正确的业务指标。
  3. 统计评论。
  4. 设计实验。
  5. 分析

市场上有许多 A/B 测试软件。在这篇博客中,我不会关注任何特定的 A/B 测试工具,而是关注它的工作原理。我将讨论一种统计方法,来测试电子零售商的新登录页面是否会帮助他们增加平台上的用户参与度。

1.A/B 测试介绍

首先,到底什么是 A/B 测试?

A/B 测试是一种在线测试新产品或新功能的实验方法,将产品的两个不同版本暴露给不同的用户群。第一个版本是现有功能或旧功能,称为控制组,新功能称为实验/变化组。

假设有两组用户,一组可以访问控制组——现有功能,另一组可以访问实验组——您计划推出的新版本。根据您收集的数据,您可以决定哪个版本的产品更好。

因此,A/B 测试有两种变体:

使用 A/B 测试我们能实现什么?
我们可以使用 A/B 测试来测试各种各样的东西,从一些新功能到在线门户/仪表板,到 UI/UX 的添加,或者应用程序的不同外观。你也可以测试用户可能没有注意到的功能,就像亚马逊确定的那样页面加载时间每增加 100 毫秒,销售额就会减少 1%

所有的大玩家——谷歌、亚马逊、微软、网飞、贝宝等等都使用 A/B 测试。举几个例子:

鉴于该方法在行业中的广泛使用,以及使用 A/B 测试我们能实现什么,我们需要知道

有什么不为的? 因此,如果你试图用 A/B 测试来记录人们对一个全新的产品或小工具或新的用户体验的反应,你获得真实数据的机会非常低。以下是你应该问自己的问题,以确定你是否应该使用 A/B 测试:

  • 这个实验可以在短时间内进行吗——比如 2 个业务周期?
  • 我能控制实验进行的环境吗?
  • 我能为实验定义可测量的指标吗?
  • 我能收集到足够的数据来支持我的决策吗?

例子

接下来是我们将从现在开始使用的示例案例研究。有一个名为 Edufin.com 的虚拟电子学习平台,专门专注于金融课程。Edufin 遵循以下客户漏斗:

  1. 登录页面访问量——漏斗顶部用户互动次数最多。
  2. 浏览不同的课程
  3. 创建帐户
  4. 注册一门课程
  5. 完成一门课程

问题陈述:Edufin 对他们现有登录页面的转换率有点怀疑。他们想对一个新的登录页面进行实验,并从那里记录一些数据点,并找出登录页面在观众面前的表现。

因此,我们这里的初始假设是:推出一个新的登陆页面将会提高平台的转化率。这里的转换率是学生在课程中的注册率。

我们将把剩下的 4 个步骤合并到这个例子中,并尝试设计一个稳健的实验。

2.选择正确的业务指标

对于任何电子学习平台,最终目标都是让大量学生完成课程。这是评价我们实验成功/失败的正确标准吗?答案是否定的,因为完成一门课程可能需要几周或几个月,我们需要在短时间内完成。

另一种方法是记录登录页面上查看课程按钮的点击次数。“查看课程”按钮将我们引向客户漏斗的第二个阶段。在这里,我们可以对实验运行的环境进行评论。可能有这样的情况,我们在实验组有更多的点击量,但是在控制组有更高的转化率。

在上面的例子中,蓝点代表访问登录页面的用户数量,而黄点代表页面的点击量。显然,新页面上的访问者数量更多,但点击率在对照组中更多(访问者数量/点击数量)。那么,这是一个好的衡量标准吗?等等,这些点击是独一无二的吗?假设有 2 个用户访问了这个页面,其中一个没有点击,另一个因为沮丧而点击了 4 次,也许这个页面加载很慢。这里的 CTR 是 4/2 = 2。这仍然具有误导性,因为它没有告诉我们它将产生的影响。在此基础上进行改进,我们可以在这种情况下使用概率,即点击独立访问者总数的独立访问者的数量。对于我们讨论的情况,这将为我们提供 0.5。

因此,点击率是最适合实验的指标。
一般的经验法则是,当你想测试一个功能或产品的可用性时,使用等级,当你想找出它能产生的影响时,使用概率

因此,您决定的指标应该

  • 适应时间跨度
  • 提供统计上可靠的数据点
  • 帮助我们实现最终目标。

3.统计评论

A/B 测试是一种统计假设测试,在这种情况下,预测登录页面#B 将比登录页面#A 执行得更好,然后观察并比较来自两个页面的数据集,以确定#B 是否比#A 有统计上的显著增强。

不要忘记,议程不是测试哪个页面表现更好,而是找出目标受众对登录页面的反应。

统计分析允许我们使用我们知道的信息,以合理的准确度预测我们不知道的结果。

从任何数据集开始,你应该询问数据的结构。这告诉我们数据的可变性。在统计学中,我们有几种类型的分布,可以帮助我们设定一些关于数据可变性的准则?

我们知道,这里有离散数据(而不是连续数据),有成功(点击)和失败(没有点击)两种情况。因此,我们有一个非常坚实的案例来使用二项式分布作为我们的数据。选择正确的发行版是成功的一半。使用二项式的样本标准误差来估计我们期望的总体综合可供订货量的变化程度。当我们谈论可变性时,我们实际上的意思是,对于 95%的置信区间(行业标准),如果我们在理论上一次又一次地重复实验,我们会期望我们围绕我们的样本构建的区间均值在 95%的时间内覆盖总体中的真实值。

在运行该实验时,我们假设变异 B 将比变异 A 具有更高的总体 CTP。我们不是向所有 100,000 个访问者显示这两个页面,而是向一个样本显示它们,观察会发生什么。

  • 如果变化 A(原始)有一个更好的 CTP 与我们的访问者样本,那么没有必要采取进一步的行动,因为变化 A 已经是我们的永久页面。
  • 如果变体 B 具有更好的 CTP,那么我们需要确定这种增强在统计上是否显著,以便我们得出结论,这种变化将反映在更大的群体中,从而推出新的登录页面变体 B。

接下来,我们需要注意由于数据的可变性而产生的不同类型的错误。这里,零假设是两个数据集之间没有关系的基线假设。因此,我们案例中的理论是,在我们的控制(变化 A)和我们的实验(变化 B)之间,点进概率没有差别。

对于 A/B 测试,这意味着我们可以自动假设新的登录页面不会产生更多的销售线索,而原来的登录页面是我们应该继续前进的。

定义统计显著性 假设变异 B 在我们的样本中表现更好。我们如何知道这种改进是否会转化为整体受众?我们如何避免犯错误?

答案是统计学意义。
当我们可以以 95%的把握说变异 B 的 CTP 的增加超出了样本可变性的预期范围时,我们在 A/B 测试中确立了统计显著性。样本可变性被定义为当相同的变化被显示给相同的样本群体时,点进概率的变化。

统计显著性与两个变量直接相关:

  1. p 值:或计算概率,是当研究问题的零假设(H 0 ) 为真时,发现观察到的或更极端的结果的概率
  2. 显著性水平:****显著性水平是假设无效假设为真,拒绝该假设的概率。行业标准是上面说的 5%。

只要 p 值小于显著性水平,我们就有统计显著性命题。

4.设计

A/B 测试实验的先决条件之一是我们需要在一个受控的环境中运行它。这可以解释为,假设我们可以控制在我们的控制和实验中的页面浏览量,我们必须决定多少页面浏览量可以产生统计上显著的结果。这被称为统计功效也就是说,如果我们看到一些有趣的东西,我们应该有足够的功效来得出这个有趣的东西具有统计学意义的结论。

一个可靠的测试所需要的时间会根据一些因素而变化,比如你的转换率,以及你的网站有多少流量;一个好的测试工具应该告诉你什么时候你已经收集了足够的数据来得出一个可靠的结论。

功率与特征或变化的大小成反比。您想要检测的变化越小,或者您希望对结果增加的信心越小,测试就需要越大。因此,我们将需要更多的页面浏览量来有更多的统计能力来总结我们的结果。

5.分析结果

对结果的分析包括对收集的数据进行统计数学运算。以下是实现这一点的步骤:

  1. 记录控制组和实验组的页面浏览量,比如 P₁和 P₂,以及 C₁和 C₂.的点击量
  2. 不要相信你的眼睛,因为它可能会出现一个页面比另一个页面有更多的点击。开始计算差值的置信区间。
  3. 计算汇集的概率:P = (C₁ + C₂) / (P₁ + P₂).
  4. 计算合并的标准误差:SE = √P(1-P)((1/C₁)+(1/C₂)
  5. 将估计的差异计算为 diff =实验概率-控制概率。
  6. 计算实验的误差范围 SE * 1.96(置信水平 95%的 Z 得分)。
  7. 置信区间的下限是(diff —误差幅度),上限是(diff +误差幅度)。
  8. 根据统计显著性水平和置信区间值,您可以决定是否应该启动新的登录页面。

结论

如果你有一个网站,你有你想要你的用户完成的动作(例如,购买,注册一个时事通讯)和/或你想要改进的指标(例如,收入,会话持续时间,跳出率)。通过 A/B 测试,您可以测试哪个版本的登录页面在转化率(即,您作为目标衡量的已完成活动)或指标值方面的改进最大。

这里有一个配置实验的谷歌指南:

[## 配置和修改实验

在任何时候,每个视图最多可以有 12 个正在运行、正在设置或正在进行的实验…

support.google.com](https://support.google.com/analytics/answer/1745216)

本质上,样本大小、测试的时间窗口和度量标准必须提前决定。统计学意义不应该是停止测试的唯一标准,否则你的结果可能毫无意义。测试结果将在统计显著和不显著之间振荡。当测试到达终点时,显著性应该成为讨论的焦点。

A/B 测试的投资回报可能是巨大的,因为即使是登录页面或网站上的小变化也会导致潜在客户、销售和收入的显著增加。你所需要做的就是在设计实验和决定正确的度量标准时要小心谨慎。

既然我们都同意使用 A/B 测试可以实现什么,那么是时候测试你的创新想法了,并看到它们蓬勃发展。

T&C *——如果你不同意,请在下面留言,我很乐意回答你!

企业需要了解的 5 种数据挖掘技术

原文:https://towardsdatascience.com/5-data-mining-techniques-businesses-need-to-know-about-20fd723800b2?source=collection_archive---------6-----------------------

Balaji Panigrahy

随着信息从多个来源(网站、手机、社交媒体和其他数字渠道)流入,组织如今被大量数据所淹没。但仍然没有答案的问题是,企业如何利用这些数据。答案在于数据挖掘。

让我们来看看五种数据挖掘技术,它们可以帮助企业从所有数据中获得可操作的见解。

1)分类分析:将数据分类到不同的集合中,以达到准确的分析或预测。应用分类分析的一个例子是当银行试图确定谁应该得到贷款时。通过对数据库进行分类分析,他们可以定义预测因素——年收入、年龄等。和预测值属性-对应于预测值的数值。使用 IF/THEN 分析,他们可以决定某人是否有资格获得贷款。例如,如果年龄超过 20 岁,收入等于或超过每月 50000 卢比,他们就有资格获得贷款。

2)关联规则学习:迄今为止,关联规则学习的最大应用是预测客户行为。这是因为该技术有助于识别不同变量之间的关系,并在数据中建立隐藏模式。这种数据挖掘技术广泛用于分析销售交易。
在线零售等行业中关联规则学习的一个例子可能是——购买产品“A”和产品“B”的用户可能会因后续需求而购买产品“C”。

3)异常或异常值检测:这种技术挖掘数据集中的异常值。离群值/异常是不符合预期行为的模式。当不符合预定义模式的事件发生时,数据分析师将其归类为干扰,并将其从剩余的数据集中删除。此外,当检测到异常值时,分析师试图找出是什么导致了预期模式中的干扰。系统健康监控和故障检测是离群点检测的两个应用。

4)聚类分析:在这种技术中,数据对象基于相似性被分组到聚类中。其思想是以这样一种方式对数据对象进行分组,即关联度在每个簇内最大,在簇外最小。例如,妄想症、精神分裂症等一系列症状。需要在精神病学中得到正确的诊断,以便开始正确的治疗。

5)回归分析:在这种类型的分析技术中,有一个响应变量和一个或多个预测因子。预测变量是独立的,响应变量是相关的。该技术用于研究改变预测值如何改变响应变量的值。请注意,只有改变预测值才能改变响应式的值,反之则不然。回归分析作为一种预测技术,长期以来一直被用来研究因果关系。在商业中,回归分析可以用来预测即将发生的事件。例如,保险公司使用回归分析来找出有多少人会成为盗窃的受害者。
优化业务流程是回归分析的另一个应用。例如,一家公司可能希望了解并优化客户呼叫的等待时间和成功销售的次数,以找出客户呼叫被应答的最佳等待时间。

讨论的五种数据挖掘技术中的每一种都可以帮助企业从数据中获得有价值的见解,并使用它解决棘手的业务问题。将原始数据转化为知识是做出更好、更明智、更明智决策的关键。

现在可以收听 5 个数据科学、人工智能和机器学习播客

原文:https://towardsdatascience.com/5-data-science-ai-and-machine-learning-podcasts-to-listen-to-now-e5078b18d184?source=collection_archive---------2-----------------------

人工智能、机器学习和数据科学是当今技术和创新领域最热门的话题。有充分的理由,每天发生的突破使空间以令人难以置信的快速发展。我的 twitter feed 是我阅读新闻文章数量的证明,但我最喜欢的数据科学新闻消费方式是通过播客。

在这篇博客中,我与你分享了一些我最喜欢的人工智能和机器学习播客,这样你也可以了解该领域的最新趋势。无论你是一名希望获得各种主题知识的高管,还是一名磨练机器学习专业知识的从业者,我的播客列表都将满足你的需求。说完,现在就来欣赏你需要听的五个数据科学、人工智能和机器学习播客吧!

工业中的人工智能|作者丹·法盖拉

丹是专注于人工智能的市场研究和咨询公司tech emergency的首席执行官和创始人。他的公司位于旧金山,帮助高管们完善人工智能和机器学习技术的战略采购。他的播客旨在介绍人工智能,是我向非从业者、高管和领导者推荐的,他们希望对人工智能应用有非常广泛而浅薄的了解。我很欣赏丹采访高技术 SME 的能力,如数据科学家和 MI 研究人员,但在一个可消化的格式。这个播客也有一个非常一致的日历,每周发布一次,时长 30-60 分钟。

数据怀疑论者|作者凯尔·波利奇

凯尔的数据怀疑论播客将让你了解所有数据科学、机器学习和人工智能方面的新闻、话题和讨论。他的播客讨论了相关的机器学习或数据科学问题,然后对应用程序/主题进行了评论。我真的很喜欢这个播客中的讨论水平,虽然讨论可能相当技术性,但我不觉得他们是分析师、数据科学家和计算机科学家无法接近的,他们至少有一些工作知识或对行业有更深的了解。谈话的质量和支持这个播客的社区让我不断回来。DataSkeptic 每周发布一次,运行时间为 30-60 分钟。

线性题外话|作者本·贾菲和凯蒂·马龙

这个播客又短又甜。本和凯蒂通过关注不寻常的机器学习和神经网络应用,使一些极具技术性的话题引人入胜。这个播客是为数据科学家和机器学习实践者设计的——但对话总是很有趣。该节目每周发布一次,时长 15-30 分钟,非常适合我骑车上班。

奥莱利数据展示|由奥莱利传媒

O'Reilly 播客揭示了实践者为解决一些及时的大数据和/或数据科学主题而采用的应用程序和方法。这个选择是我展示的所有播客中最普通的。主题主要集中在数据和数据科学,而不是专门的机器学习。由于与奥赖利媒体的联系,采访的质量非常高,并围绕着方法的技术应用。他们倾向于每两周发布一次播客,但是他们的时间表确实有点不同。这是我的播客系列中最不稳定的。但当它到来时,它总是值得一听。

偏导数|作者乔纳森·摩根

我最喜欢的一首,偏导数,绝对值得一听。有些人甚至会说这是“数据社区的汽车话题”偏导数在讨论数据科学的一些非常技术性的方面时,总是引入书呆子文化参考。乔纳森(数据科学家/软件开发人员)、维迪亚(计算机工程师)和克里斯(政治学博士)三人组进行了巧妙的对话,夹杂着诙谐的戏谑。每次听这个组合,我都会学到新的东西。

我有没有漏掉一个播客?请给我留言,我会将它添加到我的播放列表中!

5 数据科学、人工智能和机器学习播客现在可以收听(更新)

原文:https://towardsdatascience.com/5-data-science-ai-and-machine-learning-podcasts-to-listen-to-now-updated-12a4cb20a740?source=collection_archive---------10-----------------------

我对播客很着迷。从 15 分钟形式的快速复习到长达一小时的复杂主题深入探讨,这是我消费数据科学内容的首选媒介。你看,我是个跑步者。周末我会在芝加哥花几个小时训练,为长距离比赛增强耐力。播客格式允许我带着我最喜欢的数据科学专家上路,以最大限度地利用我的时间,让我可以同时学习和培训。

在这篇更新的博客中,我与你分享了一些我最喜欢的人工智能和机器学习播客,这样你也可以了解该领域的最新趋势,同时享受你喜欢的东西。无论你是一名希望获得各种主题知识的高管,还是一名磨练机器学习专业知识的从业者,我的播客列表都将帮助你跟上时代。如果你是一个播客迷,尝试一下这些优秀的数据科学节目。

线性题外话|作者本·贾菲和凯蒂·马龙

这个播客又短又甜。这也是我推荐的 5 个播客中我最喜欢的一个。在线性题外话中,你可以期待随意的对话、有趣的轶事和令人敬畏的内容。两位主持人很好地发挥了彼此的优势;而且节目很有娱乐性。

Katie 是该小组的数据科学家。她为二人组评估的许多模型带来了专业知识和实践知识。我总是从她的解释中学习,因为她总是解释为什么以及如何完成。Ben 是这个团队的工程师,他在思考特定的实现和给出开发人员对解决方案的看法方面做得很好。

他们是否在讨论不同的统计方法来理解一双跑鞋是否值得购买;或者你可能如何使用 Shapley 值来理解特征如何在深度学习算法中工作——他们的讨论总是有趣且有启发性的。这个播客是为数据科学家和机器学习实践者设计的。该节目每周发布一次,时长 15-30 分钟,非常适合慢跑或 5 公里跑。

奥莱利数据展示|由奥莱利传媒

O'Reilly 是计算机科学、数据科学、数据基础设施和工程教育内容的可靠来源。该播客是一个宝贵的资源,揭示了实践者为解决一些及时的大数据和/或数据科学主题而采用的应用程序和方法。

本·洛里卡在招聘嘉宾方面做得非常出色,这些嘉宾在数据科学、工程架构和语言的技术应用方面拥有深厚的专业知识,使我们能够导航和使用这些工具。因此,采访的质量相当高。奥赖利倾向于每两周发布一次他们的播客;当然,他们也宣传他们的会议、出版物和讲座。我可以忍受公司的旋转,由于高生产价值和播客的广度和深度。

本周机器学习& AI |由山姆·查林顿

TWiML&AI 是这个列表中的两个新成员之一。由备受推崇的机器学习顾问和演讲者 Sam Charrington 主持的讨论,你可以期待一些高质量的内容。

TWiML Talk 为数据科学家、开发人员、商业创新者和其他机器学习和人工智能爱好者提供了一个平台,分享他们关于机器学习研究、技术、商业、文化等方面的想法。该播客非常适合那些希望通过清晰、简洁和周到的解释了解复杂主题的高管和经理。

数据怀疑论者|作者凯尔·波利奇

凯尔的数据怀疑论播客将让你了解所有数据科学、机器学习和人工智能方面的新闻、话题和讨论。他的播客讨论了相关的机器学习或数据科学问题,然后对应用程序/主题进行了评论。我真的很喜欢这个播客中的讨论水平,虽然讨论可能相当技术性,但我不觉得他们是分析师、数据科学家和计算机科学家无法接近的,他们至少有一些工作知识或对行业有更深的了解。最近他的播客转向了“假新闻”分析;我正在挖掘它。

谈话的质量和支持这个播客的社区让我不断回来。林作为主持人增加了一些轻松的时刻;但在她的片段中可能会有点傲慢。我不认为这削弱了一个强大的播客。DataSkeptic 每周发布一次,运行时间为 30-60 分钟。

会说话的机器|由手提袋制作

第二个进入我的前五名的新节目,会说话的机器是一个很好的播客。在第四季中,主持人凯瑟琳·戈尔曼和尼尔·劳伦斯对我们行业中的热点话题进行了深刻的讨论。此外,你知道他们有四年的内容检查持久力!我非常兴奋能把这首好歌加入我的播放列表。

我有没有漏掉一个播客?请给我留言,我会将它添加到我的播放列表中!

每个电子商务公司都应该做的 5 个数据科学项目

原文:https://towardsdatascience.com/5-data-science-project-every-e-commerce-company-should-do-8746c5ab4604?source=collection_archive---------1-----------------------

随着互联网上的每一次点击,数据都在增加。为了理解这些庞大的数据并将其用于公司利益等,我们需要不同数据科学技术的帮助。

每天,人们只需点击一下鼠标,就可以在网上买卖东西,但为了让客户参与网站或改善客户体验,公司使用数据科学/机器学习,即在亚马逊网站上,当你寻找一种产品时,你会看到数字推荐。这些建议是通过机器学习算法生成的。它从用户过去的活动和购买中学习。这些公司存储客户的每次点击、客户阅读的每次评论、客户在社交媒体上分享的每个故事等数据,并使用这些数据来了解他们的客户或创建一个平台来帮助新客户。

它是如何开始的?

当你在网上购物时,你有没有感觉到,为什么他们以某种方式制作这个东西,或者为什么这个东西会在这里展示?或者想,这个东西怎么知道我在找什么?所有这些问题只有一个答案,那就是数据科学。电子商务是数据科学/机器学习技术的最大消费者之一,那些没有实施这些技术的人显然在下降。

[## 电子商务行业中的数据科学和机器学习:内部人士谈论工具、用例…

机器学习已经毫无保留地吞没了我们的个人和私人空间,延伸到仅仅是…

海王星. ai](https://neptune.ai/blog/data-science-and-machine-learning-in-the-e-commerce-industry-tools-use-cases-problems)

在本帖中,我们将讨论一个电子商务公司应该做的 5 个主要项目,以提高客户体验以及他们的收入或业务。

1.推荐系统

你记得在亚马逊、网飞或任何电子商务网站上看到过推荐吗?在过去的几年里,推荐系统已经接管了基于互联网的业务,为许多业务增加了价值。

简介

在了解推荐系统在电子商务中的好处之前,让我们先了解一下推荐系统的基础知识。

维基百科的定义,

一个推荐系统是信息过滤系统的一个子类,它试图预测用户对一个项目的“评分”或“偏好”。

推荐系统不仅仅是上述定义所描述的。它用于根据特定用户过去的搜索或其他客户的搜索或购买数据来筛选选择。它为用户提供了电子商务网站的个性化视图,并帮助他们选择相关产品。例如,在亚马逊网站上寻找新手机时,你可能也想买一个手机壳。亚马逊将通过分析客户以前的购买或搜索数据来决定这种可能性。

热门推荐技巧

有很多方法可以建立一个推荐系统。这些技术中的每一种都以不同的方式过滤或提供推荐。有以下三种主要的已知技术

  1. 协同过滤
  2. 基于内容的过滤
  3. 混合推荐过滤

在协同过滤中,将基于收集的关于用户在网站上的活动的数据,并通过发现他们的活动与其他用户的活动之间的相似性来给出推荐。这是电子商务公司中最受欢迎的技术,因为这种特殊的技术在向客户推荐之前不需要了解商品。它只是试图找到不同用户兴趣之间的相似之处。

与协同过滤不同,基于内容的过滤基于用户的简档和项目描述提供推荐。这种技术可以根据用户过去喜欢的东西为他们筛选出产品。

混合推荐系统是协同过滤和基于内容的过滤的结合。混合技术可以用在许多不同的方面。我们可以使用协作过滤和基于内容的过滤分别进行预测,然后合并它们的结果,或者使用一种技术进行预测,将其结果作为另一种技术的输入。混血儿的一个最好的例子是网飞。

现在,我们对什么是推荐系统有了一个清晰的认识,我们将进一步讨论它们如何为企业增加价值。

电子商务网站中推荐的重要性

有很多电子商务网站,其中一些很难区分,因为他们出售类似的产品。在这种情况下,电子商务企业需要考虑如何让客户参与到网站/产品中来。我敢打赌,你们大多数人一定在想,为什么我们要在推荐系统中讨论这个问题。

想象一下,你正在一个电子商务网站上购买衣服。网站 1 没有实现任何推荐系统,因此作为用户,你必须浏览许多不同的产品。这可能会使顾客远离网站 1,因为在网站 1 上购物非常耗时。另一方面,他们的竞争对手网站 2 有推荐系统,结果网站 2 会比网站 1 更吸引人。每当用户点击一个产品,他或她就会在网站上看到类似或相关的产品推荐。

据观察,一个网站越吸引人,就会有越多的人去那里购物。这将最终增加电子商务公司的收入。

2.顾客终身价值建模

你们中的许多人可能听说过“有价值的客户”这个术语。这是什么意思?是什么让客户变得有价值?

简介

维基百科定义

客户终身价值是对整个未来与客户关系的净利润的预测。

该定义明确指出,客户终身价值建模是计算客户在其一生中能为公司带来多少收入。此外,这是一个计算出来的数字,由客户的购买和与电子商务网站(或任何其他企业)的互动历史来预测

在我们试图理解为什么对一个企业来说了解客户的价值是重要的之前,让我们看看它是如何被计算出来的。

计算客户终身价值

有许多文章描述了计算客户终身价值的步骤。为了简单起见,这里我们将讨论在 optimizesmart 文章中使用的公式。

文章阐述了计算客户终身价值的基本公式,即

(平均订单价值)x(重复订单数量)x(平均客户寿命)

平均订单价值-所有先前订单的平均值

重复销售次数——下订单的次数

平均客户寿命——一个人成为你客户的时间

客户终身价值在电子商务网站中的重要性

客户终身价值是客户将为公司带来的预测金额。但是单个客户能带来多少收入,我们为什么要关心这个?

假设一家公司有 2k 个老客户,通过计算所有这些客户的未来现金流,该公司可以预测未来的收入。公司为什么要知道自己未来的营收?公司根据对未来收入的预测,决定未来工作的策略,例如,他们可以承担多少工作或需要做多少额外工作等。不仅如此,这些公司还可以决定关注哪个客户。比方说,客户 A 将在未来十年带来 5000 英镑的收入,而客户 B 只会带来 1000 英镑的收入。看着这些数字,公司将决定营销策略,并试图保留来自客户 A 的现金流。

此外,CLV 在许多方面帮助电子商务企业

  1. 定义公司的目标——增长、支出、未来销售、净利润等。
  2. 优化企业营销策略。
  3. 调整活动和广告。
  4. 根据客户的购买决定交叉销售和追加销售。
  5. CLV 有助于决定客户获取成本,即吸引客户的成本。

这是任何电子商务业务都需要考虑的基本指标之一。它有助于企业决定他们的支出,并了解他们的忠诚客户。

3.客户保持-流失模型

客户流失模型是每个电子商务企业应该考虑实施的项目之一,以增加其业务的价值。由于流失模型与客户保持相关,我们需要首先了解什么是客户保持?

客户维系

维基百科的定义,

客户维系指的是一个公司或产品在一定时期内维系其客户的能力。

客户保持是商业的一个重要方面,但是为什么呢?一旦顾客去电子商务网站订购了某样东西,他/她就有可能回来买更多的东西(只要他们满意)。留住客户有助于创造更高的客户终身价值。拥有新客户是好事,但现有客户比新客户带来的收入更多。

拥有忠诚的顾客有很多好处-

  1. 拥有现有客户的可靠数据,有助于企业拓展市场。
  2. 顾客欣赏你的营销策略,并愿意尝试新事物。
  3. 从客户处收到的实时反馈。
  4. 现有客户带来更多新客户,他们是营销的最佳来源。
  5. 留住顾客也有助于吸引新顾客。看到一个公司给他们现有的客户奖励和额外的好处,它会吸引更多的人。

现在我们知道了客户保持对企业的好处,我们将试着了解如何实现客户保持。

有许多方法来实现客户保留,但最常用的模式是-流失模式。

流失模型

流失模型有助于识别最有可能转向不同电子商务网站的客户。一旦确定,公司可以采取行动,以保持其现有的客户。现在的问题是,流失模型如何识别这些客户?该模型可用于计算流失率,根据业务的性质,可以使用不同的指标。一些常见的指标是-

  • 失去的客户数量
  • 客户流失百分比
  • 经常性业务损失的价值
  • 经常性价值损失的百分比

客户流失模型在电子商务中的重要性

流失模式在许多方面有利于企业。在电子商务中实施流失模型的几个优点是

  1. 流失率有助于识别流失客户,因此企业可以开展保留活动。
  2. 流失模型可以帮助企业维持 CLV。
  3. 它帮助企业跟踪进展。
  4. 从流失模型中获得的信息对 BI 活动非常有帮助。

你可以在这里获得更多关于客户流失模型的信息。

4.欺诈检测

大多数电子商务企业专注于获得更多的客户和创造更多的收入。为了实现他们的目标,这些公司希望他们的网站高效。如果公司不能提供安全保障,效率就无法拯救企业。

简介

根据维基百科的文章,

欺诈是一个价值数十亿美元的行业,而且每年都在增长。

普华永道 2016 年全球经济犯罪调查显示,超过三分之一(36%)的组织经历过经济犯罪。

鉴于欺诈风险如此之高,在线企业应该考虑实施的另一个项目是在线欺诈检测。生活在一个数字世界里,每次点击都会发生数百万笔交易,似乎很容易在网上被抢劫。

网络诈骗有很多种方式-

  • 身份盗窃
  • 退款欺诈
  • 友好欺诈
  • 纯粹的欺诈
  • 三角欺诈
  • 关联欺诈
  • 商家身份欺诈
  • 预付费用和电汇诈骗

网上欺诈的清单非常庞大,欺诈者也变得越来越聪明。因此,为了有一个成功的电子商务业务,公司将需要考虑实施安全措施。例如,在线订购产品,但没有收到在线展示的产品。订购该产品的客户将不会再次使用该网站,并且可能会提供差评。这最终会吓跑新用户,还会影响业务收入。

现在的问题是,这些公司如何发现欺诈行为?在数据科学和机器学习技术的帮助下,这些欺诈者很容易被发现。为了使用数据科学技术,这些公司必须列出任何可能的欺诈行为。一些表明潜在欺诈的可疑行为示例如下-

  • 送货地址与帐单地址不同
  • 同一项目的多个订单
  • 非同寻常的大订单,次日发货
  • 用不同的卡给同一个地址下了多个订单
  • 意外的国际订单

使用 DS/ML 可以检测到上述可疑行为。一些常用的技术-

  • 数据挖掘——检测、验证、纠错以及填补缺失或不正确的数据
  • 时间序列分析
  • 聚类和分类以在数据中找到相关的组。这有助于异常检测
  • 匹配算法,以避免任何错误警报,估计风险,并预测当前交易或用户的未来

电子商务中欺诈检测的重要性

任何关心客户安全和商业信誉的公司肯定会考虑在公司内部安装欺诈检测系统。欺诈检测系统可以从多方面帮助公司-

  • 提高客户保持率
  • 增加公司收入
  • 减少未识别的交易
  • 帮助增加公司的品牌价值

我们看到了在线公司及其客户如何因在线欺诈而遭受损失,以及这种数据科学/机器学习如何有所帮助。

5.重要评论-改善客户服务

许多公司使用内容营销来吸引顾客,但是为了留住忠诚的顾客,提供最好的服务是很重要的。改善客户服务在这里意味着什么?又是如何实现的?此外,数据科学如何帮助改善客户服务?

企业经营客户服务由来已久。传统的客户服务方式是通过电子邮件、邮件和电话联系客户,请他们对公司的产品和服务提供反馈。这些天来,公司,尤其是在线企业,在他们的网站上为他们的产品设置了评级和评论部分。但是,手动在线阅读每一篇评论并不容易。不仅如此,有时也很难理解那些评论,例如,包含不正确拼写或速记单词的评论等等。这就是数据科学发挥作用的地方。

使用数据科学技术,例如 NLP(自然语言处理),可以提取网站的评级和评论。这种技术有助于检索用户评论,并理解为什么给出差评。例如,单词云是一种显示单词在文本集合中有多重要的流行方式,N-grams 有助于寻找单词关联。这些技术和其他技术有助于数据科学家理解评论。

一旦评论被提取出来,数据科学家可以进一步分离它们并进行情感分析。有了这些信息,电子商务可以通过优先考虑将产生最大积极影响的产品更新来有效地最大化用户满意度。

摘要

通过这篇文章,我们讨论了电子商务公司应该考虑实施的不同项目。这些项目可以通过客户保留、良好的评论、增加的品牌价值、改善的客户服务和对客户的良好推荐来增加他们的业务价值,这将为客户提供更好的体验,而且还可以帮助公司销售更多的产品。还有许多其他项目,但这 5 个是任何电子商务企业的必需品。

参考

  1. Hortonworks
  2. 顾客满意的好处和重要性
  3. 数据科学
  4. 流失模型客户保持

创建更有说服力的图表和图形的 5 个数据故事技巧

原文:https://towardsdatascience.com/5-data-storytelling-tips-for-creating-more-persuasive-charts-and-graphs-150f3544b4e8?source=collection_archive---------2-----------------------

与数字打交道通常不被认为是一份性感的工作。毕竟,像会计和数据录入这样的职业在这个数字时代并不是最令人兴奋的职业。

但是,就像曾经平淡无奇的电脑极客现在统治着世界一样,数据分析师目前被视为“就业市场的独角兽”

根据 LinkedIn 的说法,理解大量杂乱数据并从中找到独特见解的能力是就业市场上最热门的技能之一。

原因显而易见:自 2013 年以来,创造的数据比之前人类历史上的总和还要多。

因此,不仅对数据科学家有很高的需求,而且对那些知道如何以有效和有说服力的方式可视化和呈现数据的人也有很高的需求。

这就是数据叙事的用武之地。

数据、视觉效果和叙述的组合是热门的,新的数据科学技能是未来每个人都需要的。

Information source: Forbes

对于那些不喜欢数字的人来说,这可能真的是个坏消息。

但在你开始恐慌之前,让我们从一些简单的事实开始,这些事实将帮助你理解我们的大脑是如何处理视觉效果的,以及你如何利用这些原则来改进你的图表。

相关:糟糕的信息图表:你永远不想犯的 11 个错误

视觉大脑及其工作原理

与你在高中所学的相反,人类的视觉比仅仅处理物体反射的光要复杂得多。

虽然我们显然可以看到 180 度角内的一切,但实际上我们只能完全准确地看到那些在我们视野中心的东西,在一个非常狭窄的 2 度范围内。

那我们怎么会看不到一团模糊的东西呢?

由于被称为迅速扫视的快速眼球运动,我们能够感知位于剩余 178 度角内的物体。在没有注意到的情况下,我们的眼睛会快速跳动,并注视着场景的不同点,以从这些综合信息中创建一个准确的视觉地图。

虽然这些运动是无意识的,但我们的眼睛会优先关注它们所注视的东西。例如,明亮的颜色,不常见的形状和移动的物体会立即吸引我们的注意力,即使它们不在我们面前。(来源:阿尔贝托·凯洛的功能艺术)

Information source: The Functional Art

一旦光被编码成电信号,大脑就会提取主要特征,从粗略的形状和颜色开始,然后才开始真正处理和识别人面前的东西,使用长期记忆中的大量信息。

为了获得更直观的解释,你也可以观看 Payman Taei 描述我们如何感知物体背后的科学原理:

我们的视觉大脑被差异所吸引

因此,我们的眼睛实际上首先聚焦在突出的关键点上,而不是像相机一样捕捉整个场景。这就是为什么我们的视觉大脑会立即注意到差异和对比

看看下图就知道了。你花了多长时间才看到前两幅插图中的熊?最后一个呢?

这个简单的练习揭示了我们的大脑更善于识别颜色而不是形状的差异。

我们的大脑被设计用来识别模式

你知道吗,在你有意识地意识到之前,你的感官一直在处理来自环境的各种信息。

这被称为前注意力处理,如果没有它,我们会浪费大量时间去理解我们周围的世界。

令人欣慰的是,我们的视觉大脑通过自动检测物体之间的差异和相似性,让我们的事情变得简单。

例如,看看下面这张图片。

你是否立即关注了中间的一个大矩形?在第二部分中,您可能马上就注意到了一个矩形与其他矩形不同,它是垂直方向的。

这是你的视觉大脑:它被设计用来注意模式,并立即检测这些模式的中断。

视觉大脑的 5 个数据故事技巧

既然我们已经对我们感知物体的方式背后的科学有所了解,让我们看看这些知识如何转化为创建有效和有说服力的数据可视化的实用技巧,这些技巧来自《哈佛商业评论》的指南Good Charts

1.我们的眼睛不会遵循特定的顺序。

创建有效的数据可视化需要学习新的语言和新的语法规则。

阅读有文字的页面和阅读图表的第一个区别是,在西方文化中,你阅读的顺序是从左到右,从上到下。对于第二种,没有预先确定的顺序——你只是去你的眼睛带你去的地方。

步伐也不一样。你不是一行一行地阅读,而是从一件事跳到另一件事,在某些部分花的时间比其他部分长。

这意味着创建有效的可视化效果,有意识地将观众带入一个预定义的视觉旅程,尤其具有挑战性。

2.我们的眼睛首先关注突出的东西。

当我们看下图这样的图表时,我们不会一下子看到所有的东西,而是集中在一个显著的点上。

Information source: Prison Policy Initiative

图表中最突出的是最右边的峰值。这幅图的中心信息非常清楚:自 20 世纪 70 年代以来,美国的监禁率呈指数增长。

最好的数据故事讲述者利用这一原理,通过一个清晰易懂的信息创建图表和图形

3.我们的眼睛可以同时处理几件事情。

每当你有一个超过 5 到 10 个变量的图表时,单个的单元开始失去它们的个性,被我们的眼睛视为一个单一的整体。

考虑到这一点,你应该简化你的图表,让它们突出你想要表达的一个要点。

以这张图表为例。你首先注意到的是中间的峰值、绿线和单词“断电”

如果目标是通过声明性图表(而不是探索性图表)传达明确的信息,那么你会发现这里没有明确的信息。

例如,假设您想要揭示即使在停机后性能评级仍持续下降,那么观众必须努力找到这一趋势,因为背景中的峰值会分散对绿线的注意力。

在这种情况下,最佳解决方案是消除客户服务呼叫数据的数量,并专注于停机前后的客户服务评级。

4.我们试图在数据中寻找意义。

另一个重要的事实是,我们的大脑被设计成立即寻找联系,并试图在数据中找到意义。

如果你看这个图表,你会发现你的大脑无意识地将标题中的橙色和橙色的点联系起来。

“这一定意味着橙色的点代表表现最好的人,”我们的视觉大脑总结道。

不对。实际上,表现最好的是那些绘制在图表右上角的,与颜色的选择无关。

知道了这一点,我们必须做出明智的设计决定,并且有意识地分配颜色,以提高你的视觉功能。

5.我们受文化习俗的指导。

有些习俗我们认为是理所当然的。例如,在西方文化中,我们都直观地知道,当可视化时间时,它从左向右移动,而不是从右向左;或者蓝色代表冷,红色代表热。

视觉隐喻也是如此:我们都把金字塔和等级联系在一起,或者把两个事物的比较和等级联系在一起。

如果你忽略了这些惯例,那么不言而喻,你的视觉效果将难以解读。

看看这个图表,当时间放在 Y 轴上而不是 x 轴上时,从中提取意义是多么困难。

如何改进数据叙事的示例

下面是一些如何改进图表和图形的例子,让它们不只是简单地显示数据 ,而是讲述一个故事 ,摘自科尔·努斯鲍默《用数据讲故事一书

以前

此条形图显示了一年中收到和处理的票证数量。

在...之后

如果你的目的是传达一个信息,并推动某人采取具体行动(在这种情况下,雇佣两名新员工),那么这就好得多。

通过选择线形图而不是条形图,收到的票据数量和处理的票据数量之间越来越大的差异变得非常明显。

以前

这是另一个没有叙述性或清晰消息的数据显示的例子。

在...之后

现在看看以完全不同的方式呈现的相同数据集。差别很大,对吧?核心信息是显而易见的:节目结束后,更多的孩子对科学感到兴奋。

Create charts like this with Visme.

使用单个图表而不是两个独立的图表可以让观众快速了解调查结果。此外,使用一些颜色,而不是五六种颜色,以及一个有效的标题有助于读者快速掌握项目前后结果的差异。

以前

另一个无效图表的例子是准确的,但没有传达或说服观众采取特定的行动。

在...之后

在这张图表中,我们的眼睛立即被蓝色条、灰色线和代表平均价格点的蓝点所吸引。

核心信息是显而易见的:要有竞争力,理想的价格在 150 到 200 美元之间。

以前

乍一看,这个饼图似乎足够清晰,但深入分析后,您会发现它并不遵守让查看者快速掌握信息的几个约定。

正常情况下,我们会期望人工尺度上的值按顺序排列,从“完全不感兴趣”到“非常感兴趣”但是在这种情况下,值是根据每个响应的百分比排列的。

我们还期望颜色的变化与人工标度相对应,一种颜色在标度的一端,第二种在相反的一端,中间有中间色调。

在...之后

乍一看,这要容易理解得多。根据价值等级排列,我们很快了解到大多数人对这种特殊的产品不感兴趣。

轮到你了

既然你已经学会了一些更有说服力和更有效的数据故事的简单原则,你可以试试用这个 免费图表和信息图表工具创造你自己的可视化数据故事

如果你有任何自己的数据讲述技巧想要分享,请在评论区给我们留言!

本帖 原版 最早出现在 Visme 的 视觉学习中心

创建更有说服力的图表和图形的 5 个数据故事技巧

原文:https://towardsdatascience.com/5-data-storytelling-tips-for-creating-more-persuasive-charts-and-graphs-3823af33a3c2?source=collection_archive---------6-----------------------

与数字打交道通常不被认为是一份性感的工作。毕竟,像会计和数据录入这样的职业在这个数字时代并不是最令人兴奋的职业。

但是,就像曾经平淡无奇的电脑极客现在统治着世界一样,数据分析师目前被视为“就业市场的独角兽”

根据 LinkedIn 的说法,理解大量杂乱数据并从中找到独特见解的能力是就业市场上最热门的技能之一。

原因显而易见:自 2013 年以来,创造的数据比之前人类历史上的总和还要多。

因此,不仅对数据科学家有很高的需求,而且对那些知道如何以有效和有说服力的方式可视化和呈现数据的人也有很高的需求。

这就是数据叙事的用武之地。

结合了数据、视觉效果和叙述的数据叙事是热门的、新的数据科学技能 每个人 都将在未来需要。

Information source: Forbes

对于那些不喜欢数字的人来说,这可能真的是个坏消息。

但在你开始恐慌之前,让我们从一些简单的事实开始,这些事实将帮助你理解我们的大脑是如何处理视觉效果的,以及你如何利用这些原则来改进你的图表。

视觉大脑及其工作原理

与你在高中所学的相反,人类的视觉比仅仅处理物体反射的光要复杂得多。

虽然我们显然可以看到 180 度角内的一切,但实际上我们只能完全准确地看到那些在我们视野中心的东西,在一个非常狭窄的 2 度范围内。

那我们怎么会看不到一团模糊的东西呢?

由于被称为迅速扫视的快速眼球运动,我们能够感知位于剩余 178 度角内的物体。在没有注意到的情况下,我们的眼睛会快速跳动,并注视着场景的不同点,以从这些综合信息中创建一个准确的视觉地图。

虽然这些运动是无意识的,但我们的眼睛会优先关注它们所注视的东西。例如,明亮的颜色,不常见的形状和移动的物体会立即吸引我们的注意力,即使它们不在我们面前。(来源:阿尔贝托·凯洛的功能艺术)

Information source: The Functional Art

一旦光被编码成电信号,大脑就会提取主要特征,从粗略的形状和颜色开始,然后才开始真正处理和识别人面前的东西,使用长期记忆中的大量信息。

为了获得更直观的解释,你也可以观看 Payman Taei 描述我们如何感知物体背后的科学原理:

我们的视觉大脑被差异所吸引

因此,我们的眼睛实际上首先聚焦在突出的关键点上,而不是像相机一样捕捉整个场景。这就是为什么我们的视觉大脑会立即注意到差异和对比

看看下图就知道了。你花了多长时间才看到前两幅插图中的熊?最后一个呢?

这个简单的练习揭示了我们的大脑更善于识别颜色而不是形状的差异。

我们的大脑被设计用来识别模式

你知道吗,在你有意识地意识到之前,你的感官一直在处理来自环境的各种信息。

这被称为前注意力处理,如果没有它,我们会浪费大量时间去理解我们周围的世界。

令人欣慰的是,我们的视觉大脑通过自动检测物体之间的差异和相似性,让我们的事情变得简单。

例如,看看下面这张图片。

你是否立即关注了中间的一个大矩形?在第二部分中,您可能马上就注意到了一个矩形与其他矩形不同,它是垂直方向的。

这是你的视觉大脑:它被设计用来注意模式,并立即检测这些模式的中断。

视觉大脑的 5 个数据故事技巧

既然我们已经对我们感知物体的方式背后的科学有所了解,让我们看看这些知识如何转化为创建有效和有说服力的数据可视化的实用技巧,这些技巧来自《哈佛商业评论》的指南Good Charts

1.我们的眼睛不会遵循特定的顺序。

创建有效的数据可视化需要学习新的语言和新的语法规则。

阅读有文字的页面和阅读图表的第一个区别是,在西方文化中,你阅读的顺序是从左到右,从上到下。对于第二种,没有预先确定的顺序——你只是去你的眼睛带你去的地方。

步伐也不一样。你不是一行一行地阅读,而是从一件事跳到另一件事,在某些部分花的时间比其他部分长。

这意味着创建有效的可视化效果,有意识地将观众带入一个预定义的视觉旅程,尤其具有挑战性。

2.我们的眼睛首先关注突出的东西。

当我们看下图这样的图表时,我们不会一下子看到所有的东西,而是集中在一个显著的点上。

Information source: Prison Policy Initiative

图表中最突出的是最右边的峰值。这幅图的中心信息非常清楚:自 20 世纪 70 年代以来,美国的监禁率呈指数增长。

最好的数据故事讲述者利用这一原理,通过一个清晰易懂的信息创建图表和图形

3.我们的眼睛可以同时处理几件事情。

每当你有一个超过 5 到 10 个变量的图表时,单个的单元开始失去它们的个性,被我们的眼睛视为一个单一的整体。

考虑到这一点,你应该简化你的图表,让它们突出你想要表达的一个要点。

以这张图表为例。你首先注意到的是中间的峰值、绿线和单词“断电”

如果目标是通过声明性图表(而不是探索性图表)传达明确的信息,那么你会发现这里没有明确的信息。

例如,假设您想要揭示即使在停机后性能评级仍持续下降,那么观众必须努力找到这一趋势,因为背景中的峰值会分散对绿线的注意力。

在这种情况下,最佳解决方案是消除客户服务呼叫数据的数量,并专注于停机前后的客户服务评级。

4.我们试图在数据中寻找意义。

另一个重要的事实是,我们的大脑被设计成立即寻找联系,并试图在数据中找到意义。

如果你看这个图表,你会发现你的大脑无意识地将标题中的橙色和橙色的点联系起来。

“这一定意味着橙色的点代表表现最好的人,”我们的视觉大脑总结道。

不对。实际上,表现最好的是那些绘制在图表右上角的,与颜色的选择无关。

知道了这一点,我们必须做出明智的设计决定,并且有意识地分配颜色,以提高你的视觉功能。

5.我们受文化习俗的指导。

有些习俗我们认为是理所当然的。例如,在西方文化中,我们都直观地知道,当可视化时间时,它从左向右移动,而不是从右向左;或者蓝色代表冷,红色代表热。

视觉隐喻也是如此:我们都把金字塔和等级联系在一起,或者把两个事物的比较和等级联系在一起。

如果你忽略了这些惯例,那么不言而喻,你的视觉效果将难以解读。

看看这个图表,当时间放在 Y 轴上而不是 x 轴上时,从中提取意义是多么困难。

如何改进数据叙事的示例

下面是一些如何改进图表和图形的例子,让它们不只是简单地显示数据 ,而是讲述一个故事 ,摘自科尔·努斯鲍默《用数据讲故事一书

以前

此条形图显示了一年中收到和处理的票证数量。

在...之后

如果你的目的是传达一个信息,并推动某人采取具体行动(在这种情况下,雇佣两名新员工),那么这就好得多。

通过选择线形图而不是条形图,收到的票据数量和处理的票据数量之间越来越大的差异变得非常明显。

以前

这是另一个没有叙述性或清晰消息的数据显示的例子。

在...之后

现在看看以完全不同的方式呈现的相同数据集。差别很大,对吧?核心信息是显而易见的:节目结束后,更多的孩子对科学感到兴奋。

使用单个图表而不是两个独立的图表可以让观众快速了解调查结果。此外,使用一些颜色,而不是五六种颜色,以及一个有效的标题有助于读者快速掌握项目前后结果的差异。

以前

另一个无效图表的例子是准确的,但没有传达或说服观众采取特定的行动。

在...之后

在这张图表中,我们的眼睛立即被蓝色条、灰色线和代表平均价格点的蓝点所吸引。

核心信息是显而易见的:要有竞争力,理想的价格在 150 到 200 美元之间。

以前

乍一看,这个饼图似乎足够清晰,但深入分析后,您会发现它并不遵守让查看者快速掌握信息的几个约定。

正常情况下,我们会期望人工尺度上的值按顺序排列,从“完全不感兴趣”到“非常感兴趣”但是在这种情况下,值是根据每个响应的百分比排列的。

我们还期望颜色的变化与人工标度相对应,一种颜色在标度的一端,第二种在相反的一端,中间有中间色调。

在...之后

乍一看,这要容易理解得多。根据价值等级排列,我们很快了解到大多数人对这种特殊的产品不感兴趣。

轮到你了

既然你已经学会了一些更有说服力和更有效的数据故事的简单原则,你可以试试用这个 免费图表和信息图表工具创造你自己的可视化数据故事

如果你有任何自己的数据讲述技巧想要分享,请在评论区给我们留言!

本帖 原版 最早出现在 Visme 的 视觉学习中心

人工智能驱动的个性化营销可以解决 5 个电子商务业务挑战

原文:https://towardsdatascience.com/5-e-commerce-business-challenges-ai-driven-personalized-marketing-can-solve-d1545cb036b0?source=collection_archive---------8-----------------------

营销人员面临的最大挑战之一是实施有效的个性化活动——不仅适合目标人群,还适合他们独特的客户群。但是个性化营销跨越了大量的选择和维度,这意味着不存在放之四海而皆准的个性化营销活动。最好的方式、正确的方式、唯一的方式……这些都取决于你的业务和你面临的挑战。这并没有提供太多的清晰度,所以我们创建了 ABC-Commerce 一个虚构的企业,它将帮助我们说明人工智能驱动的个性化营销的好处。在这篇文章中,我们将把它们作为例子。

ABC-Commerce :

有几年到几十年的客户购买历史。

在线销售 3000 种产品。

每年在营销上花费 1-2M 美元。

购买回复率为 2%。

利用直邮目录和电子邮件营销。

拥有 200 万现有客户。

在他们的数据库中有数千万的潜在客户/询问者

最后但同样重要的是, ABC-Commerce 无法识别最容易接受促销优惠和新营销活动的客户群。

虽然几乎任何企业都可以使用人工智能来提高效率,但让我们来看看人工智能驱动的个性化营销可以帮助您解决的五个电子商务挑战。

挑战 1: ABC-Commerce 拥有大量的客户数据和他们的每一个购买细节,但不知道如何处理这些数据。

这一切都始于利用企业现有的大量客户数据。到了这个层次,甚至不需要那么有钱。基本的交易细节,如谁在何时何地购买了什么,可以提供大量的深刻见解。你拥有的数据越多,你的情况就越好。他们购买了多少数量?他们以什么价格购买的?他们从哪里来的?他们是回头客吗?客户购买历史,尤其是几年的购买历史,包含了关于整体参与度和您与客户总体关系的强烈信号。其下一层是对每个客户的终身价值及其转换或重复购买的可能性的更深入的洞察。

您的第一步应该是利用您已经拥有的客户数据。发现隐藏在自有数据中的细节是一项基本练习,即使是基本的数据争论和机器学习技术也能擅长。虽然基本的定量分析可以有效地解释已经发生的事情,但人工智能驱动的分析可以帮助你确定将会发生什么。

挑战 2: ABC-Commerce 在营销上花费了大量资金,却没有可靠的转化率/回应率。

电子商务营销支出的投资回报率是衡量任何活动有效性的关键指标。尽管绝对支出本身并不能描绘出一幅清晰的效果图,但当回应率和交谈率低于使用先进机器学习预测营销的公司设定的行业基准时,它就会被纳入考虑范围。营销人员改变游戏的最佳方式?更深入地了解客户的各种微观细分市场,让他们能够更深入地了解哪些细分市场表现良好。

当然,对于这种类型的企业来说,理解和识别历史趋势是一项挑战。这是一个问题,因为如果不完全掌握已经发生的事情,就不可能知道将会发生什么。这就是人工智能的用武之地。人工智能在分析历史数据以对可能在任何给定时间点对您的业务表现更好的细分市场进行聚类分类方面发挥着关键作用。

挑战 3:基本的和基本的新近性、频率和货币价值产生的洞察力很少。

跟踪每一个顾客的新近度、频率和货币价值是一种古老的营销实践。但是真的有用吗?像我们已经讨论过的其他广泛的实践一样,这些数据主要用于提供历史洞察。CLV(客户终身价值)是一个关键的营销指标,但许多企业仍然根据历史支出来计算,没有考虑未来可能的购买。预测未来 3 个月、6 个月、9 个月和 12 个月每个客户级别的预期支出可以作为购买可能性的强有力预测指标。使用这些数据,可以通过可能性和对这些可能性估计的信心来细分客户,以运行有效的人工智能驱动的活动。

挑战 4: ABC-Commerce 无法将活动与销售关联起来。

如果你不能把它和具体的销售联系起来,就很难判断活动的效率和效果。但这种归因只是眼前问题的一个方面。除了简单的目录到转换率之外,还有很多复杂的东西。比如,你真正需要发送多少目录才能转换?你如何知道产品目录在顾客购买时是否起到了关键作用?人工智能学习算法可以分析历史数据,以识别深层模式和相关性,让你可以微调和预测导致销售的精确模式。这种水平的洞察力使您能够修改您的活动并全面提高效率。

挑战 5: ABC-Commerce 正在增加营销支出,却没有任何回报

当营销支出增加,但回应率保持不变时,是时候考虑改革了——最好是利用先进的工具和技术。

在选择目标市场时,很容易使用“眼球测试”。只需选择我们认为最直观的客户群交叉点。但是认为人类可以识别,更不用说应用隐藏在历史数据中的模式,这是一个巨大的陷阱。人类的智慧在这里是行不通的。这就是人工智能发挥巨大作用的地方。人工智能可以帮助我们确定正确的目标细分市场,让我们专注于设计肯定会与人工智能确定的客户产生共鸣的创意活动。这样更容易,也更有效。有什么不喜欢的?

人工智能驱动的个性化营销有能力彻底改变你瞄准客户和向客户营销的方式。它非常灵活,足以适应任何业务。这是有效的,通过梳理大量的数据来消除你的猜测。而且它价格合理,能够满足您的营销目标,而无需花费大量成本。大概是你给 AI 一个尝试的时候了。毕竟,最聪明的营销方式是用最聪明的工具。

感谢您阅读帖子。请分享你对如何使用人工智能进行营销的想法/想法/评论。

更多详情请访问 VectorScient

关于作者: Veda Konduru 是 VectorScient 的创始人兼 CEO。在她目前的职位上,Veda 负责制定和执行 VectorScient 的战略。Veda 还担任 VectorScient 预测营销云的首席产品架构师。在推出 VectorScient 之前,Veda 在企业界工作了 10 多年,为销售、需求预测和供应链设计和构建软件应用程序,在产品质量、客户关注和参与方面享有盛誉。Veda 将她的统计学背景与机器学习和数据科学相结合,创造出真正世界级的预测分析产品。她拥有计算机科学硕士学位。

你现在需要知道的 11 个电子商务营销趋势[2017 年 11 月更新]

原文:https://towardsdatascience.com/5-ecommerce-marketing-trends-you-need-to-know-right-now-213c13237725?source=collection_archive---------8-----------------------

电子商务行业正在快速发展,以跟上消费者偏好和需求的变化。在新的先进技术的帮助下,电子商务零售商更容易适应这些变化。

只要你知道采取什么样的改变,你就有很大的机会满足客户不断变化的需求。有几个电子商务营销趋势可以帮助你提供更好的体验和增加销售。

在本帖中,我们将讨论一些你应该知道的最大的电子商务营销趋势。

电子商务营销趋势#1:更直观的 UGC

您已经知道,用户生成的内容(如评论)是赢得电子商务消费者信任的绝佳方式。你甚至可以在你的产品页面上添加评论,这样你就可以获得更多的转化率。

但你可以更进一步,开始在你的电子商务营销策略中实施用户生成的视觉效果。

用户生成的视觉内容正在成为电子商务营销的趋势,这主要是因为它比书面内容更能吸引消费者,带来更好的效果。根据 Olapic 的一项研究,人们对社交媒体上其他顾客图片的信任度是对广告的信任度的七倍。

同一项研究发现,56%的受访者在看到相关或积极的用户生成的照片后,更有可能购买一件商品。52%的受访者还认为照片是最吸引人的用户生成内容。这胜过视频和书面内容。

如果你想追随这一趋势,你可以在你的产品页面或社交媒体上展示用户生成的视觉效果。你甚至可以两者兼得。

但是怎么能收集 UGC 呢?你可以鼓励你的客户在社交媒体上分享他们购买的产品,并用品牌标签进行标记。然后你可以收集这些照片,并在你的社交媒体上分享。此外,您还可以在相关的产品页面上展示一些用户提交的最佳照片。

例如:丹尼尔·惠灵顿

丹尼尔·惠灵顿在展示顾客在产品页面上提交的照片方面做得很好。下面是他们一款产品的 UGC 版块截图。正如你所看到的,他们精心挑选了一些视觉上最吸引人的图片来赢得顾客。

电子商务营销趋势#2:人工智能和机器学习使用的增长

电子商务营销最重要的趋势之一是使用人工智能和机器学习。您可以利用它们为零售商提供更加个性化的客户体验并提高他们的工作效率。随着技术的快速进步,电子商务零售商很可能会在实现人工智能和/或机器学习的工具和平台上进行更多投资。

事实上, Zebra 2017 零售愿景研究发现,68%的受访者计划在 2021 年前投资机器学习和认知计算。零售商计划使用该技术来个性化客户体验,并增强他们预测和管理库存需求的方式。

你可以使用这些人工智能技术和机器学习来进行更智能、更准确的预测和推荐。例如,您目前可能正在使用重新定位策略,在这种策略中,您会显示社交媒体广告或发送产品推荐电子邮件,推荐您的客户似乎非常感兴趣的产品。

但是,许多零售商甚至在顾客已经购买了该产品或类似产品之后,仍然继续进行同样的推荐。因此,建议不再与客户相关,使您的努力或多或少变得不必要。

相反,你可以使用人工智能来理解某些客户采取的行动,以便你可以提出更准确的建议。比如,你可以在顾客已经购买的产品之外,推荐一款顾客可能需要的补充产品。

当然,即使他们访问你的网站,你也会向他们提供与他们过去行为相关的建议和经验。也许你可以展示一系列他们最喜欢的产品。

除此之外,人工智能和机器学习还有很多的用途。你甚至可以利用这项技术为你的顾客提供个人购物指南。

示例:Unisport

例如,Unisport 推出了终极靴子选择器,它可以帮助购物者找到最适合他们需求的靴子。

购物者将不得不回答一系列问题,为每个人挑选出最好的靴子。例如,他们必须回答这样的问题,比如他们打哪个位置,他们喜欢什么类型(速度,舒适度,控制等等。),他们能承受的价格区间等。所有这些信息都有助于提供专为每位顾客设计的完美推荐。

根据你的回答,该技术将挑选出最符合你需求和偏好的前三款靴子。正如你在下面的截图中看到的,这些推荐是根据相关性排序的。这将有助于购物者在完整信息的帮助下快速顺利地完成订单。

电子商务营销趋势#3:增强的移动体验

你需要关注的另一个重要趋势是为电子商务消费者引入更好的移动体验。长期以来,人们一直认为,人们主要使用移动设备在线进行产品研究。然后他们使用他们的桌面进行实际的购买。

这意味着移动电子商务会话数量很高,但来自移动的收入较低。

根据 Wolfgang Digital 对 8700 万网站会话的分析,这一假设仍然成立。他们发现 42%的网站会话来自移动设备,而桌面会话占 41%。但就收入而言,只有 21%的最后点击收入来自移动设备。

因此,显而易见,要么一些移动购物者根本不转化,要么他们使用不同的渠道来完成购买。

图片来源:沃尔夫冈数码

这只能意味着一件事——零售商需要确保为他们的访客提供更好的移动体验。通过这样做,你可以看到来自移动购物者的收入增加。即使移动收入没有显著提高,它仍会影响你的整体收入,因为增强的体验可能会吸引购物者从你这里购买,即使他们是通过桌面购买的。

无论哪种方式,增强的移动用户体验对电子商务零售商来说都至关重要。请确保您的移动网页加载迅速且正确,以便访问者可以完美地查看页面的每个元素。

您需要确保移动访问者不会面临任何导航和浏览问题。他们应该能够很容易地找到他们要找的东西,阅读他们需要的信息。你可以使用手机友好测试来看看你的网站迎合手机访问者的程度。

例如:美国柯尔百货公司

正如你在下面的截图中看到的,美国柯尔百货公司网站是手机友好的。但是该工具已经检测到一些页面加载问题。所以,如果你想知道到底出了什么问题,你可以点击查看问题的细节。

一旦你在这方面展开,你可以了解更多的问题。该工具将告诉您它无法加载哪些页面资源。因此,您可以轻松地发现任何问题,并根据需要进行更改和改进。

电子商务营销趋势#4:社交媒体购买按钮的使用增加

社交媒体继续在日常消费者的生活中发挥着巨大的作用。它还通过增加电子商务网站的流量,对电子商务业务产生重大影响。皮尤研究中心(Pew Research Center)进行的调查显示,15%的美国网购者在点击社交媒体上的链接后进行了购物。

但是为了提高这些数字,零售商必须让顾客从社交媒体上进行购物变得更加简单和无缝。因此,只要有可能,预计将会有更多的零售商在社交媒体上实现“购买”按钮。

这些按钮将使购物者能够购买他们喜欢的产品,而不必在品牌网站上搜索产品。他们既可以在平台上完成购买,也可以直接进入产品页面。

拼趣

社交媒体“购买”按钮的最好例子是在 Pinterest 可购买的 pin 码。这是因为购物者无需离开 Pinterest 就可以完成购买。

示例:花卉

下面来自 Afloral 的引脚是可购买引脚的一个例子。正如你所看到的,有一些产品细节,如定价和库存。图片正下方有一个“添加到包”按钮。

如果您将此商品添加到您的包中,您可以直接从 Pinterest 完成结账。下面的截图显示了 Pinterest 上的结账页面,用户可以在这里添加送货地址和支付信息,而不必离开社交媒体平台。

在脸书和 Instagram 等其他社交媒体平台上,“立即购买”或“立即购买”按钮只有在向目标受众显示广告时才可用。

照片墙

但是 Instagram 已经开始通过引入 Instagram 购物进行改进,这将使零售商能够在他们的有机帖子上添加产品标签。

用户可以点击这些标签来获得产品详细信息的扩展视图,如定价、产品描述等。他们还会看到一个“立即购买”按钮,将他们带到产品页面,在那里他们可以完成购买。

但 Instagram 购物目前仅面向精选零售商。一旦 Instagram 决定向每个零售商提供这一功能,Instagram 上的“立即购物”按钮将会大受欢迎。

图片来源: Instagram 博客

电子商务营销趋势#5:聊天支持的使用增加

电子商务零售商成功的关键是提供卓越的购物体验和客户服务。你需要把你的顾客放在第一位,确保他们在向你购买时不会遇到任何麻烦。

这意味着,如果他们在购物时有任何问题或疑问,无法立即找到答案或解决方案,您需要尽快处理。

处理此类事件的最佳方式是提供实时聊天支持或实施聊天机器人。 Avaya 报道称,消费者更喜欢通过短信而不是电话与商家交流。

因此,如果您使用聊天机器人、社交媒体消息应用程序或实时聊天支持来实时提供答案和解决方案,就可以增强他们的体验。

聊天机器人

聊天机器人是电子商务行业的一个上升趋势,主要是因为它的效率。虽然它们属于人工智能,但更清楚地解释它们在客户支持方面的好处至关重要。

由宾利大学和 NeuraFlash 联合进行的一项研究发现,100%的人认为聊天机器人对话更可取,如果它们真的能节省时间,更容易解决问题。

随着人工智能技术的改进,零售商现在将能够使用聊天机器人来自动化对话,并向客户提供个性化的支持体验。客户将能够使用聊天机器人作为一种自助服务功能,特别是在日常交易需要帮助的情况下。但如果遇到更复杂的查询,聊天机器人可以带一个实时代理来帮助客户。

实时聊天支持

实时聊天支持也至关重要,在电子商务零售商中越来越受欢迎。购物者可能无法通过 FAQ 页面或产品描述找到他们需要的一些信息。如果他们给你发邮件,你可能需要几个小时才能回复。如果他们想打电话给你,可能要等很长时间。

这就剩下了实时聊天支持,它使购物者能够与真人互动,并立即解决他们的问题。

例如:H&M

难怪像 H M 这样受欢迎的零售商已经开始为他们的顾客提供聊天支持。

例如:沃比·帕克

Warby Parker 通过突出显示所有沟通选项,让客户更容易找到他们。为了避免客户失望,您可以效仿他们的做法,准确显示实时聊天代理可用的时间。

电子商务营销趋势 6:影响者营销

影响者营销是当今营销人员的普遍选择。Twitter 最近在 T2 进行的一项研究显示,消费者对有影响力的人的信任度几乎和他们的朋友一样高。这项研究的一些更有趣的发现是:

  • 近 40%的用户报告说,他们根据某个影响者的推文购买了一件产品。
  • 49%的受访者表示曾依赖影响者提供产品推荐。
  • 这一比例仅次于朋友的推荐,有 56%的受访者这样认为。

推特图片

正确的影响者和有效的活动可以为你的电子商务创造奇迹。选择合适的影响者对您的活动的成功至关重要。

例如,如果你有一个专门从事健身器材的电子商务企业,一个促进健康和健身的有影响力的人将是一个合适的选择。

各种影响者营销工具,如 BuzzSumoNinja Outreach 可以帮助你识别正确的影响者,并与他们建立联系。

继续在谢恩·巴克的博客上阅读这篇文章。

如何降低定制软件开发成本?5 有效的解决方法!

原文:https://towardsdatascience.com/5-effective-ways-to-reduce-custom-software-development-costs-d38e80540a42?source=collection_archive---------7-----------------------

软件开发要花多少钱?我们知道这是怎么回事。即使你在 定制软件开发 有几十年的经验,这个问题也很难回答。这仅仅是因为它不同。但是,让这成为以后的讨论。在本文中,我们将告诉您如何降低定制软件开发成本,并在不影响质量的情况下提供定制软件解决方案。

太多的软件项目失败了。是的,我们做到了!有人必须解决房间里的大象。计划的不充分和缺乏沟通是开发定制软件失败的根本原因,而不仅仅是技术上的无能或无法达到的需求。

定制软件开发远非精髓,因此,“定制”一词。一些软件应用程序之间可能有一些相似之处,但是每个定制开发的软件都是创新思想和业务逻辑的集合。定制软件对企业来说意味着优势,因为现在企业有了竞争优势。这引发了对定制软件的需求,而需求导致了随后的高软件开发成本!

《哈佛商业评论》最近的一篇文章显示,六个 IT 项目中就有一个项目的成本超支了 200%。听起来像是一个爱失败的行业。那么,“如何降低定制软件开发成本?”自己动手?;)
开个玩笑!对于软件来说,这个目标是无法实现的。并且认为一个现代企业没有软件也能繁荣是不可想象的。这使得成本飙升,并最终取代了公司的整体利润,特别是对于初创公司和新的小公司。

阅读更多:您的企业需要软件开发的 5 个症状

那么,你会问,有没有一种方法可以开发一个定制软件而不损失你所有的钱?我们能降低软件开发的成本吗?瞧啊。绝对的。

降低软件开发成本的第一步是自己规划软件的相关业务需求。项目需求与项目成本成正比。当您有一个详细的业务需求文档时,您节省了定制软件开发公司为您起草的大量时间;因此降低了成本。我们将在文章的后面讨论这个问题。

还有 5 个简单但有用的策略可以帮助任何关注成本的公司明智地投资定制软件开发:

[1]考虑你的外包选择

外包软件开发是降低软件开发成本最简单的方法。最初的成本节约表现为没有内部成本,即工资、福利等,然后扩展到运营、营销和管理成本的削减。

离岸软件开发也是获得所需技术领域中有经验的开发人员的一个好方法。参见为什么你应该外包软件开发。

但是,与此同时,这些较低的价格并不一定会转化为更好的性价比。确保质量需要考虑更多的因素,而不仅仅是成本。有了正确的态度,你不仅可以省钱,还可以找到高质量的软件解决方案。

在你准备雇佣一个软件开发团队之前,做好你的尽职调查。向潜在的软件开发团队提出这 5 个问题以确保你得到你所支付的。

【2】拟定自己的要求

这样做的主要目的是避免需求中的模糊性。如果需求被曲解或者没有完整地阅读,将会导致随意的设计、不适当的功能和缺乏特异性,从而导致灾难。在接触任何定制软件开发公司之前,请确保您完全了解您的业务需求,并起草一份需求分析。从头到尾起草适当的文件可以减少沟通失误。

此外,由于软件开发团队已经知道他们需要开发什么,也知道细节,他们不必花太多时间与你开会,一遍又一遍地重复同样的事情。这将降低整体软件开发成本,为您节省时间,帮助您专注于其他重要的业务问题。

【3】沟通好

根据 Standish 的报告,52.7%的项目将花费他们最初估计的 189%。为什么?不切实际和不可行的项目规格以及项目方向和管理的不断变化。这种现象如此普遍,甚至有了一个名字——“黑天鹅”。

当项目方面比较模糊的时候,离岸软件开发团队应该介入并阐明项目范围的任何突出的灰色区域。

这个项目流程将作为客户和软件开发外包公司的路线图。任何偏离这一规格的行为都要额外付费。了解这一点将有效地减少猜测,也减少了成本增加和项目失败的潜在空间。

[4]一开始就让 QA 团队参与进来

“软件测试咒语”说人们应该在软件开发生命周期的早期开始测试。错误或 bug 通常在需求或设计阶段开始积累,然后最终传播。

在初始阶段引入 QA 可以在开发之前识别许多问题,避免次优的应用程序质量、项目中期重新设计的成本,甚至是发布的危险信号。

后期阶段的错误需要返工,而返工需要额外的费用。这进一步推高了您的定制软件开发成本。从一开始就涉及 QA 会带来潜在的问题和冲突,同时,客户或软件开发团队可能没有想到的任何功能性问题也会浮出水面。

[5]优先考虑绝对必要的特性,并消除版本 1 的“所谓的美好事物”

当涉及到软件项目时,利益相关者通常是兴奋的,在花费被画出之前,他们的想象力是无限的。请注意,当涉及到定制软件开发时,一个完整的解决方案可能需要几个版本才能推出,而预算又不是那么宽松。从一小块有基本需求的软件开始,一旦证明它有价值和有利可图,软件的后续扩展总是一个选项。这将降低开发成本,也有助于开展市场研究,预测客户对产品的接受程度。

还有更多…

我只是简单地选择了一些技巧,它们将帮助你以更低的软件开发成本有效地外包软件开发项目,而不放弃质量。总而言之,当应用程序有一个合适的基础并且头脑中有一个非常清晰的想法时,软件开发可能会比大多数人意识到的更便宜。

最初发表于: 二进制乡亲

正确实施预测分析计划的 5 个基本步骤。

原文:https://towardsdatascience.com/5-essential-steps-to-get-your-predictive-analytics-initiative-right-616e1183a977?source=collection_archive---------5-----------------------

各种规模的企业都试图通过采用预测分析来保持领先地位。如果你是负责领导预测分析计划的人,你如何做好?

这里有五个通用的最佳实践,可以帮助你保持你的项目在正确的道路上。

1。努力实现业务成果

许多大数据和预测分析项目从技术项目开始,在收购基础架构后停止。毫无疑问,购买新硬件、安装 Hadoop 和实施释放大数据威力所需的所有其他关键基础架构组件会令人兴奋不已。但是如果没有得到业务的支持,这些项目几乎肯定会失败。因此,由业务成果驱动大数据和预测分析项目是绝对必要的。

该流程的第一步是获得业务支持,并确定您希望预测分析影响的结果。如果是在市场营销中,它可能是识别可能购买和可能放弃的客户。在销售中,它可能是发现你可以为你的产品设定的最佳价格。在产品管理中,它可能是关于预测可能进入衰退期的产品。无论是哪种情况,确保你朝着具体的业务成果前进,而不仅仅是处理一个新的技术项目。

2。开始小规模

诚然,预测分析结果的准确性取决于基础数据的丰富程度。但是边际收益递减法则在这里起了作用。首先确定一小组对结果有影响的潜在预测因素,然后建立低技术含量的机制来获取和收集数据。这可能就像将数据提取到 CSV 文件中并使它们可供机器学习算法使用一样简单。你不需要把它变成一个数据仓库项目来获得成功。

当第一次启动你的项目时,确保所有的项目都是可管理的,系统性能是可接受的,结果是可测量的,这是至关重要的。所有其他部分,如自动化、调度、峰值性能等。在这一点上是最好的。

3。利用云

云领域的三大巨头——亚马逊 AWS、谷歌云和微软 Azure——都拥有坚实的基础设施来支持大数据、机器学习和预测分析,并且除了自己的机器学习库之外,它们还支持各种各样的工具和编程语言。这意味着,除非您手头有大量的硬件和大量的时间,否则真的没有理由在本地建立自己的基础设施。

缩短构建时间,利用云立即启动并运行。你还应该知道,在许多情况下,甚至不可能复制谷歌或 AWS 所能提供的东西。像谷歌的 Big Query、AWS 的 Athena 和 RedShift 这样的工具可以在几秒钟内处理数百万条记录。如果你的目标是在内部实现类似的性能,你将不得不进行大量的硬件投资。当大查询每处理 1tb 的数据只需 5 美元时,你为什么要这样做呢?

4。确保数据质量

在整个过程中,你不能忽视或回避的一件事是你的数据质量,因为它直接影响你预测的准确性。确保您正在处理缺失的值,标准化数据,并确保数据定义得到很好的理解。事实上,很有可能您将花费大量的时间和精力来确保您的数据质量是可接受的。

有些方面可以在纯技术层面上完成,包括删除重复的实例、标准化邮政编码、地区和州名等。但是当你开始一个预测分析项目时,你也应该有一个计划来解决丢失数据的处理。理想情况下,这种处理将基于与业务合作伙伴和数据科学家的合作,并位于每个预测分析项目的核心。

5。建立测量方法

你如何衡量你的预测分析项目是否成功?您需要遵循两条不同但相关的路线:

(a)避免过度拟合和欠拟合:设计一个完美模拟过去行为的预测模型很容易,但在用于预测未来事件的可能性时却失败了。另一方面,如果模型过于一般化,不能充分解释过去的行为,可能会导致拟合不足。这是一个常见的陷阱。做好这件事需要相当多的严谨性,对你的业务至关重要的预测因素的深刻理解,并且在大多数情况下,需要大量的迭代。当您委托一个预测分析项目时,请询问您的数据科学团队他们计划如何避免过度拟合或拟合不足。

(b)基线比较:确保在开始预测性分析项目之前记录历史测量值。根据你的目标业务成果,这些可能包括预测的准确性,转化率,流失估计等。当你开始基于预测分析做出决策时,记录结果你没有根据这些预测采取行动的例子。有一个可靠的方法来衡量你的计划的影响,对完善预测模型大有帮助,让你相信他们提供的建议。

还有问题吗?还在想从哪里开始?给我在 info@vectorscient.com 写封短信或者在下面留言——我很乐意给你更多的建议!

感谢您阅读帖子。

关于作者 : Suresh Chaganti, VectorScient 的联合创始人&战略顾问。Suresh 专门研究大数据,并将其应用于解决现实世界的商业问题。他在跨各种行业垂直领域设计 B2B 和 B2C 应用程序方面拥有 20 年的经验。在 linkedin 上联系苏雷什

数据科学家访谈中的 5 个常见问题

原文:https://towardsdatascience.com/5-frequently-asked-questions-in-data-scientist-interviews-6fb3eeeb497?source=collection_archive---------6-----------------------

最近被一些刚毕业的学生问到如何准备数据科学家面试的问题。一般来说,数据科学家或机器学习工程师面试由 3 部分组成:数学统计机器学习算法。本文最后会建议一些有用的备考资料。在这里,我们将讨论 5 个常见问题及其答案,让您了解如何回答数据科学家面试问题。

  • 什么是权重和偏差?
  • 你用过 ReLU 功能吗?你能解释它是如何工作的吗?
  • 浮点数是如何存储在 32 位计算机内存中的?
  • 什么是梯度下降和随机梯度下降?它们之间的区别是什么?
  • 什么是反向传播?

什么是权重和偏差?

weight and bias

权重和偏差是模型的可学习参数。权值和偏差值在训练前随机初始化,训练时由 TensorFlow 自动计算。以下代码是更新权重和偏差的示例:

# How we train
train_step = tf.train.**GradientDescentOptimizer**(0.02).minimize(**cross_entropy**)

你用过 ReLU 功能吗?你能解释它是如何工作的吗?

ReLU 代表整流线性单元,是一个简单的非线性激活函数。任何负输入被设置为零,而正输入保持不变。

ReLU formula

ReLU 广泛应用于神经网络和深度学习。它作为线性开关工作。如果你不需要它,你就“关掉”它;如果你需要它,你就“打开”它。TensorFlow 通过 tf.nn 模块提供 ReLU 及其变体(noise ReLU,Leaky ReLUs,ELUs )。例如,下面用 tf.nn.relu 创建了一个卷积层(用于 CNN ):

import tensorflow as tfconv_layer = tf.layers.conv2d(inputs=input_layer, filters=64,        kernel_size=[3, 3], padding='same', **activation=tf.nn.relu**)

浮点数在 32 位计算机内存中是如何存储的?

是的,这是一个“低级”问题,要求考生具备一些计算机硬件的背景知识。在 IEEE 754 标准中,浮点数的比特排列如下:

photo credit to wikipedia

  • 符号(1 位):确定数字的符号
  • 指数(8 位):IEEE 754 中的指数偏差是 127,我们需要从值中减去 127
  • 分数(23 位):有一个值为 1 的隐式前导位

因此,我们可以推导出真正的价值是

在这里,我可以展示如何将基数为 10 的实数 12.875 转换成 IEEE 754 二进制 32 格式。

  • 12 = 8 + 4 = 1100
  • .875 = 0.5 + 0.25 + 0.125 = 2^-1 + 2 ^ -2 + 2^-3

所以 12.875 的二进制表示应该如下:

在这种情况下,数字是正数,所以符号位是0;指数是 3,加上 127(指数偏差)我们得到130 = 1000 0010;分数是= 10011100000000000000000.

由此我们可以形成实数 12.875 的 32 位 IEEE 754 二进制 32 格式表示,如下:0-10000010-10011100000000000000000.

什么是梯度下降和随机梯度下降?它们之间的区别是什么?

想象你正从山顶走下一座小山,你的下一步是什么?梯度下降(GD)和随机梯度下降(SGD)是从当前位置计算下一步的两种常用方法。

GD 和 SGD 是深度学习中的优化器,通过慢慢地将权重(模型的参数)推向更好的结果。在实践中,您可以使用 GD 和 SGD 来训练和比较全连接网络。SGD 优化模型将比 GD 更准确,并且所需的训练时间更少。

在每一步,SGD 都采取非常小的一步而不是一大步,并使用微小的随机样本而不是完整的数据。SGD 是有效的,因为每次的数据集较小,并且通过多次执行来弥补。您可以使用 TensorFlow 函数TF . contrib . keras . optimizer . SGD逐步训练更深入、更准确的模型。

什么是反向传播?

基于梯度的优化器通常使用反向传播来调整多层神经网络中神经元的权重。

multi-layered neural network

反向传播包括以下步骤:

  1. 当输入向量呈现给网络时,它通过网络一层一层地向前传播,直到到达输出层。
  2. 损失函数计算网络输出与其预期输出之间的差异(称为“误差”)。
  3. 为输出层中的每个神经元计算结果误差值。
  4. 然后,误差值从输出通过网络传播回来,直到每个神经元具有反映其对原始输出的贡献的相关误差值。
  5. 反向传播使用这些误差值来计算损失函数的梯度。
  6. 这个梯度被馈送到优化方法,该优化方法又使用它来更新权重,以试图最小化损失函数。

通常,输入向量的规范化可以提高模型的性能。

本文列出了 5 个常见问题及答案,供您参考。对于准备工作,我推荐古德费勒、本吉奥和库维尔的《深度学习》一书。

  • 数学&统计:第二、三、四章足以为这类面试中的理论问题做准备/修改
  • 机器学习算法:第 5 章,60 页左右,简明易懂

如果你看完了深度学习圣经,我还会推荐《机器学习的数学》《数据科学问答》

采访总是检查数据科学家难题中缺失部分的好方法。作为数据科学家,我们可以称之为评估或测量。期望是你表现好,而不是完美。尽你所能学习和准备。你所能做的就是尽你最大的努力。

你都准备好了。祝你好运!

大数据和分析定义了 5 个行业

原文:https://towardsdatascience.com/5-industries-becoming-defined-by-big-data-and-analytics-e3e8cc0c0cf?source=collection_archive---------7-----------------------

大数据平台不断改进的功能越来越多地为那些希望研究分析以使其公司受益的行业代表创造了新的机会。

这里有五个行业的业务运营受到大数据和分析的影响,以及它们能提供什么。

1.医学

医疗行业依靠专门的设备来跟踪生命体征、协助手术和进行诊断。它还使用大数据和分析工具以各种方式改善健康状况。

可穿戴跟踪器将信息传输给医生,并告诉他们患者是否服用了药物,或者他们是否在遵循治疗或疾病管理计划。随着时间的推移收集的汇编数据为医生提供了患者健康的全面视图,提供了比简单的亲自访问更深入的信息。

在其他情况下,公共卫生部门会查看大数据和分析,以优先对有风险的设施进行食品安全检查。研究人员还挖掘数据来揭示疾病模式最显著的地方。

此外,大数据和多种分析帮助医院管理者减少等待时间并改善护理。一些平台查看大量数据,然后找到其中的模式,并提出建议以取得进展。

2.零售

如果零售商不能正确预测顾客想要什么,然后提供这些东西,他们的商店可能会摇摇欲坠。大数据和分析提供了让人们开心和重返商店所需的洞察力。IBM 的一项研究发现,62%的零售业受访者表示,信息和分析给了他们竞争优势

最有用的策略包括首先确定业务需求,然后弄清楚分析技术如何支持这些需求。例如,零售商可能希望让购物者在实体店停留更长时间。然后,它可以使用大数据和分析来创建个性化的、高度相关的材料,以激发和吸引店内游客。

分析软件也可以跟踪客户旅程的每一步。由此产生的见解可以告诉零售商如何吸引最高价值的购物者。研究天气数据可以预测雪铲和沙滩椅等季节性商品的需求也会增加,让零售商在大多数顾客到来之前订购这些商品。

3.建筑

建筑公司跟踪从基于材料的费用到完成任务所需的平均时间的一切。那么,数据分析正在成为行业的重要组成部分就不足为奇了。

当建筑专业人员监控现场服务指标,如自然减员、客户终身价值、推荐率和收入时,他们将能够更好地了解哪些方面进展顺利,哪些业务部分需要改进。此外,大数据根据预期的未来用途和趋势分析项目的最佳位置。一些项目甚至将传感器集成到建筑物和桥梁中,这些附件收集数据并将其发送回人们进行分析。

代顿苏必利尔,一家混凝土建筑公司,为世界各地的项目提供材料。它意识到,当公司代表无法立即了解某些城市的材料成本时,提供价格透明度是多么困难。因此,企业开始在确定价格时使用分析和地理数据。

一个月后,超过 98%的销售代表使用了改进后的界面,并报告说提供报价的时间大大缩短了。

此后,该公司减少了定价过程中的不一致。分析工具提供的见解通常允许公司通过提供更适合客户情况的价格,向客户提供更低的价格。

4.银行业务

人们不一定认为银行业是一个非常高科技的行业,但一些品牌正在通过分析改变人们的看法。美国银行设计了一个名为埃丽卡的虚拟助理,使用预测分析和自然语言处理来帮助客户查看银行交易历史或即将到来的账单信息。

此外,Erica 在每笔交易中都变得更聪明。美国银行的代表表示,该助理最终将研究人们的银行习惯,并提供相关的金融建议。

大数据也有助于打击银行欺诈。QuantumBlack 建立的一个预测性机器学习模型在使用的第一周就检测到了相当于10 万美元的欺诈交易

5.运输

人们需要按时到达目的地,大数据和分析有助于公共交通提供商增加成功旅程的可能性。伦敦交通局使用统计数据来绘制客户旅程,为人们提供个性化的细节,并管理意外情况。代表可以告诉多少人在一辆给定的公共汽车上或尽量减少旅客必须步行登上公共汽车的距离。

分析也能帮助铁路行业的人们。车载传感器给出了列车制动机制、里程等细节。来自 100 列火车的数据集每年可以产生多达2000 亿个数据点

检查信息的人试图找到有意义的模式来指导他们改进操作。例如,他们可能会发现导致设备故障的一连串事件,并让列车暂时停运。

对于寻求数据科学职业的人来说,交通部门也是最好的行业之一。

大数据和分析导致更明智的决策

在不太遥远的过去,专业人士在做出关键决策时很大程度上依赖猜测。

大数据和分析软件使他们能够浏览难以置信的大量信息,并在弄清楚如何处理各自行业的事情时感到自信。

图像由 Rawpixel 构成

首席数据官(CDO)关注的 5 个关键问题

原文:https://towardsdatascience.com/5-key-concerns-of-a-chief-data-officer-cdo-97f3f910e7d1?source=collection_archive---------9-----------------------

上周,我获得了一个令人兴奋的机会,参加了在新加坡举行的首席数据官(CDO)会议。这是金融界 CDO 名人录的聚会,如 DBS、Lazada、MySale、新加坡交易所等。

关键的一点是,尽管 CDO 战略看起来是围绕算法展开的,但事实并非如此。CDO 必须借助数据工程和数据科学来管理数据策略。对于任何组织的数据战略的成功来说,这两者都同样重要。

CDO 的主要关切可分为五大领域,即

  1. 数据战略&方向:
    在当今世界,CDO 不再是一个技术角色,而是充当着组织的变革代理。DBS Singapore 的 Paul Cobban 等首席数据官正带头为各自的组织制定数据战略&方向。

CDO 应该扮演布道者的角色,通过减轻与数据驱动决策相关的恐惧,在整个组织中推广和实施数据驱动决策。

2。数据治理: 数据治理(Data Governance,DG)是指对企业中使用的数据的可用性、可用性、完整性和安全性的整体管理。如果数据收集不当,基于数据的情报将毫无用处&。数据治理对于组织中 CDO 的成功变得至关重要。

我们总是建议制定一个数据治理政策,该政策应该为数据的准确性、可访问性、一致性、完整性和更新分配责任。

应该有关于数据安全、备份、灾难恢复和业务连续性的政策。拥有一个垂直的数据治理来帮助管理策略和框架总是明智的。

3。数据整合 如果 CDO 不知道数据是如何在整个组织中使用的,他就不可能成功。在当今世界,组织拥有多个数据系统,包括供应链管理、市场营销、人力资源等。过去十年是一个产品市场,组织在各自的部门实施了各种相关产品,如 SAP、Salesforce、Peoplesoft &等。各行各业的并购浪潮使形势更加恶化。

因此,大量的时间需要花费在 ETL(提取、转换和加载)活动上。

4。数据价值实现 数据治理政策实施后&数据工程实践,数据科学到来。数据的货币化依赖于对数据的分析来提供重要的见解。像道琼斯这样的公司通过 Factiva 创造了一个全新的收入流,让用户能够从超过 36,000 个许可的新闻来源中搜索和查询文章。像亚马逊、沃尔玛这样的零售商正在使用同样的方法来提高顾客忠诚度&参与度。像优步这样的公司正在通过利用整个组织各个职能部门收集的数据来赚钱。

通常,CDO 有一个数据科学家团队来提供情报。但关键在于在越来越大的数据集上实现这些算法。因此,精通将算法扩展到大数据的技术团队可能是一笔巨大的财富。

5。数据安全: 最后一点,数据安全!!尽管数据安全已经成为数据治理的一部分,但它必须以独立的眼光来看待。CDO 必须确保组织内使用的每一项技术都是安全的,并且适合企业使用。最近发生的事件,如 Zomato 和 Linkedin 的数据泄露,会对信任产生很大影响。

最后得出的结论是,CDO 的角色不仅是管理数据,还要将组织转变为数据驱动型组织。

我在实际工作中从数据科学中学到的 5 条经验

原文:https://towardsdatascience.com/5-lessons-i-have-learned-from-data-science-in-real-working-experience-3532c1b41fd7?source=collection_archive---------7-----------------------

被低估但重要的经验……

https://unsplash.com/photos/rk_Zz3b7G2Y

我已经有一段时间没有在媒体上发帖了。从事数据科学已经快半年了,我犯了很多错误,并从一路上的错误中吸取了教训…通过艰难的方式。

没有失败,只有反馈

而现实世界是一个反馈机制。

是的,你是对的,学习之旅并不容易。继续磨吧。学习提高。

通过我的学习经历,我终于意识到,大多数数据科学初学者(像我一样)可能会遇到一些常见的陷阱。如果你有,我希望我从这些陷阱中学到的 5 个最大的教训能在你的旅程中指引你。我们开始吧!

1.商业领域知识

老实说,当我第一次开始时,这一课给了我很大的打击,因为我没有强调领域知识的重要性。相反,我花了太多时间来提高我的技术知识(在没有真正理解业务需求的情况下建立一个复杂的模型)。

如果不彻底了解业务,你的模型很可能不会给公司增加任何价值,因为它根本不符合目的,不管你的模型有多准确。

提高模型精度最常用的技术是 网格搜索 来搜索模型的最佳参数。但是,只有通过了解业务需求并添加相关功能来训练您的模型,您才能显著提升您的模型性能。 特征工程 仍然非常重要,网格搜索只是改进你的模型的最后一步。

像往常一样,对你公司的业务真正感兴趣,因为你的工作是通过数据帮助他们解决问题。问问你自己,你是否真的对他们正在做的事情充满热情,并在工作中展示你的 同理心

永远知道你在说什么

仅仅了解业务本身是不够的,除非你能够清楚地表达你的想法,并以他们在业务环境中能够理解的术语向其他同事/利益相关者展示。

换句话说,永远不要使用利益相关者不熟悉的陌生(或者可能是自定义的)词语,因为这只会引起你和他们之间的误解。

尽管你的发现可能是正确的或见解可能是有影响力的,但你的可信度会受到质疑,你的发现只会是一个有争议的话题。

在您展示如何使用数据解决业务问题之前,我建议您首先展示您对业务的整体理解(包括日常工作中常用的技术术语),然后确定可用数据回答的问题陈述。

2.注重细节的思维模式和工作流程

像一个侦探。用聚焦细节的激光进行你的调查。这在数据清理和转换过程中尤为重要。现实生活中的数据是杂乱的,你必须有能力在被淹没之前从噪音的海洋中提取信号。

因此,拥有注重细节的思维模式和工作流程对于在数据科学领域取得成功至关重要。如果没有一丝不苟的心态或结构良好的工作流程,您可能会在探索数据的过程中迷失方向。

你可能已经勤奋地进行了一段时间的探索性数据分析(EDA) ,但可能仍然没有获得任何见解。或者你可能一直用不同的参数训练你的模型,希望看到一些改进。或者,您可能正在庆祝艰巨的数据清理过程的完成,而实际上数据可能还不够干净,不足以提供给模型。我经历了这个漫无目的的过程,只是意识到我没有一个结构良好的工作流程,我的大脑只是希望最好的事情发生。

希望最好的事情发生让我无法控制自己在做什么。系统混乱了,我知道出了问题。

我退后一步,从更大的角度审视我一直在做的事情;我重组了自己的思路和工作流程,试图让一切标准化、系统化。而且成功了!

3.实验的设计和逻辑

系统化的工作流程给出了整个数据科学原型系统的宏观视图(从数据清理到解释模型结果等)。);一个实验是工作流程不可或缺的一部分,包括你的假设检验逻辑以及模型构建过程。

正常的机器学习问题(Kaggle 竞赛等。)非常简单,因为您可以获得训练数据并开始构建模型。

然而,在现实世界中,在构建逻辑和设计实验来测试您的假设并使用合适的成功指标评估您的模型方面,事情会变得复杂。

在实验结束时,每一个主张或结论都应该有事实和数据的支持。不要未经证实就下结论。

4.通讯技能

如果这篇文章只有一个收获,我希望你能一直努力提高你的沟通技巧。不管你是数据科学的初学者、中级还是专家。

答应我一件事——你会与他人分享你的想法,同时注意倾听他们的意见。接受批评和反馈。

说商业语言用他们理解的术语与同事、经理和其他利益相关者交流。这与第一课——业务领域知识的重要性产生了共鸣。未能掌握业务语言会降低你与团队成员的沟通效率,因为人们可能很难从他们的角度理解你的话。

结果,时间被浪费了;人们会感到沮丧;你的信誉和与他们的关系可能会受到影响。真是两败俱伤的局面!

更糟糕的是,缺乏沟通技巧会导致商业利益相关者在理解你的分析结果时面临挑战。永远以简单的方式交流你的想法、方法、结果和见解尽管背后很复杂。简单地说,如果你对商务人士说商务语言,他们会感觉更舒服,感觉更有力量,也更愿意在这个过程中投入时间,从而更积极地参与谈话,理解你的分析。这也引出了最后一课——讲故事的重要性。

5.讲故事

如果现在还不明显,数据科学不仅仅是数据处理和模型构建,以向利益相关者展示结果。由于您的模型具有满足业务需求的卓越性能,您的最终目标应该是通过引人注目的数据故事向利益相关方交付您的成果,这些数据故事可以回答以下一些问题(取决于您的项目目标):

  1. 我们为什么要分析它?
  2. 我们能从结果中获得什么启示?
  3. 我们能从中做出什么决定/行动计划?

讲述故事的艺术既简单又复杂。在数据驱动的分析中,人们常常会忽略这样一个事实,即有时即使是最好的模型性能和结果也会因为糟糕的故事讲述和演示而变得毫无用处。真是浪费!

想象你是利益相关者,是什么使一个引人注目和令人信服的故事?

让我们坐下来放松一下。再想象一下,当一位数据科学家现在向您展示一个对业务问题的高度准确的模型预测,而没有进一步的解释。你可能会想:印象深刻!模型做得很好…那么下一步是什么?然后呢?

你明白我在这里试图描绘的吗?模型结果和行动计划之间存在明显的差距。利益相关者不知道该做什么,即使你只是向他们展示一个高度准确的模型预测。我们必须从他们的角度来思考,回答他们的问题和顾虑,而不是仅仅满足业务目标,以最终制定行动计划,从而弥合差距。

弥合差距的方法有很多,我将简要强调两种方法,它们可以提供启发性的见解,并指导利益相关者制定行动计划。

设定比较基准

声称一款车型性能好而没有可比较的东西是不够的。换句话说,需要一个基准作为基线,这样我们才能知道模型是做得很好还是相反。

如果没有这个基准,声称一个模型表现良好实际上是没有意义的,因为仍然有一个问题没有回答: 多好才算足够好?我为什么要相信你的结果?

风险管理

这一点尤其重要,因为它将决定你的模型是否会投入生产。这意味着你必须从模型性能中展示最好和最坏的情况。

这就是风险管理的用武之地,因为涉众想要知道模型的限制,它在哪里有效,在哪里失败。他们想知道当模型投入生产时,公司要承担多大的风险,这最终会影响他们的最终行动计划。

因此,理解风险管理的重要性不仅会让你的结果更有说服力,还会大大增加利益相关者对你和你的结果的信心(因为你已经帮助公司管理和最小化了风险)。

https://unsplash.com/photos/6jYoil2GhVk

感谢您的阅读。我希望你会发现这 5 课对你的学习之旅有用。我很高兴能通过你的学习经历了解更多关于你的课程,所以请随时与我分享,并留下你的评论!😃

和往常一样,我还有很多东西要学,也很想听听你关于如何改进我在 Medium 上的内容(技术或非技术)的意见。

如果您有任何问题,请添加我,让我们在 LinkedIn 上聊天,或者访问我的个人网站了解更多信息:

关于作者

Admond Lee 目前是东南亚排名第一的商业银行 API 平台Staq的联合创始人/首席技术官。

想要获得免费的每周数据科学和创业见解吗?

加入 Admond 的电子邮件简讯——Hustle Hub,每周他都会在那里分享可行的数据科学职业技巧、错误&以及从创建他的初创公司 Staq 中学到的东西。

你可以在 LinkedInMediumTwitter脸书上和他联系。

[## 阿德蒙德·李

让每个人都能接触到数据科学。Admond 正在通过先进的社交分析和机器学习,利用可操作的见解帮助公司和数字营销机构实现营销投资回报。

www.admondlee.com](https://www.admondlee.com/)

北极星人工智能的 5 个经验教训

原文:https://towardsdatascience.com/5-lessons-learned-at-north-star-ai-11c57edcbc4d?source=collection_archive---------5-----------------------

Travis Oliphant on stage (photo credit: Proekspert)

这周我去了爱沙尼亚的塔林旅行。然而,这个城市本周最令人兴奋的不是它美丽的古镇、严寒的冬天或温和的人们——而是为开发者举办的机器智能大会 North Star AI 的召开。

演讲时间表由人工智能和计算机科学的冠军组成,如特拉维斯·奥列芬特(NumPy的创造者)萨扬·帕萨克(微软的首席人工智能科学家)和阿赫蒂·海因拉(Skype的联合开发者和星际飞船的联合创始人)等等。

我带着探索新观点、结识聪明人和向最优秀的人学习的愿望而来——你可能已经看到我在那里,急切地记笔记。在这篇文章中,我将试图从这次经历中提炼出五个教训。这些是演讲者讨论的主题中的共性模式,激发了我宝贵的见解。请注意,这些课程不一定反映演讲者的观点,而是我对他们观点的解释和总结。我们开始吧!

1:人工智能已经成为商业可行

Discussions at the booths (photo credit: Proekspert)

与会者本身就是人工智能技术在实际产品中新的实际可行性的证据。你会听说它在更大的公司中的应用,如 Starship (制造送货机器人) Taxify (将乘客与司机联系起来)和 Elisa (一家使用人工智能创建聊天机器人以改善客户服务的电信提供商),但也有一些初创公司和中型公司。对于许多科技初创公司来说,人工智能似乎是核心产品的一部分,在更大的公司中,这项技术通常被认为可以改善客户服务和商业智能。

这种发展的一个原因是许多机器学习框架的成熟,如 TensorflowCNTKPyTorch 。正如特拉维斯·奥列芬特所强调的,另一个非常突出的原因是高级 API 变得可用,允许我们更快地勾画和评估模型,如 KerasAzure ML谷歌云 ML 引擎AWS 机器学习。这些 API 使得在一个抽象层次上开始构建机器学习模型变得非常实际,在这个抽象层次上,开发的前期成本与增加的商业价值之间取得了更好的平衡。

使人工智能更加实用的一个进展因素可能也是中介表示(IR)的标准,如 ONNX (开放神经网络交换):一种深度学习模型的开放格式,使框架之间的互操作成为可能。Travis 和 Sayan Pathak 都强调了这个观点。例如,使用 ONNX,您可以使用 CNTK 部署最初用 PyTorch 或 Caffe 构建的深度学习模型。这对于像我这样喜欢一起工作的人来说尤其令人兴奋。NET,我想,对于许多希望将深度学习集成到现有堆栈中的企业来说也是如此。ONNX 已经在许多框架中得到原生支持,并为其他一些框架提供了转换器,如 Tensorflow。

2:多代理系统产生巨大的力量

Primer’s six interacting agents (photo credit: Primer)

在那天快结束的时候,Primer的首席执行官 Sean Gourley 对他们的产品做了一个非常有趣的介绍:一个机器学习系统,可以自动分析大型文本数据集,并生成沃尔玛等公司使用的自然语言报告。我可以推荐你去看看他们的网站,看看他们的报告——结果真的令人印象深刻。

为了实现这个雄心勃勃的目标,Primer 利用六个互动的智能引擎— 机器学习系统来执行不同的任务。一个引擎用于识别实体和结构化数据,而另一个引擎通过将实体关系作为时间的函数进行聚类来寻找事件。这些代理服务于不同的目的,并且可以合作使用来解决执行详尽的主题分析的更大问题。最后,他们的故事引擎将高维主题和事件信息放在一起,生成自然语言报告。

这种思维方式真的让我大开眼界,知道如何处理复杂的问题。就体系结构而言,多智能体系统可以相互作用,并可以以不同的方式重新组合,看起来非常强大。它将一个大问题分成较小的领域,并允许系统内的一种群体交互,同时使单个模块更容易测试和更新。这就像有一个多元化的团队在一起工作!

潘多拉盒子链(Pandora Boxchain)的创始人马克西姆·奥尔洛夫斯基(Maxim Orlovsky)也让人们注意到了多智能体系统的巨大力量。在实际意义上,我们很快就会发现自己处于一个互动主体的世界,就像路上的自动驾驶汽车一样。但是,随着这个独立代理生态系统的复杂性增加,我们如何保护自己免受恶意实例或恐怖分子的攻击?马克西姆强调,我们应该开始考虑管理交互代理的拜占庭容错系统——这意味着努力从不可靠的部件制造可靠的系统。

Pandora Boxchain 是一个去中心化的区块链人工智能市场,其中机器学习模型可以通过网络来执行。在这样一个平台中,具有理性自利的网络参与者可以保护彼此免受恶意代理的侵害,激励他们的是去中心化经济学和博弈论,而不是政府监管。这是一个非常有趣和有远见的项目,我期待着在未来跟进。

3:人工智能不是银弹

What AI might seem like to the uninitiated (photo credit: Markus Spiske)

在讨论人工智能在商业中的实施时,我遇到的一个沟通挑战是,人们倾向于认为,尽管有待解决的实际问题尚未确定,但它本身将为公司做出非凡的贡献。我认为这是新技术的常见模式,因为炒作往往比理解传播得更快。

Habib Adam,transfer wise的数据科学家很好地阐述了这一点:他建议我们应该记住是问题驱动而不是解决方案驱动。我们应该考虑我们正在经历的问题,以及哪种见解可能对我们有用,而不是试图寻找人工智能的“事情”。他强调了在考虑问题的机器学习解决方案时三个重要的因素:

1:随机性。我们认为这里有一种模式吗?
2:相关数据。我们有哪些(多少)相关数据?
3:行动能力。我们可以从这些数据中采取哪些有用的行动?

Habib 进一步解释说,当我们真正解决了一个问题,我们可以开始考虑如何使我们的解决方案更加灵活,并扩展到其他领域。

公平地说,理解如何定义这些问题可能具有挑战性,并且需要实践。为了消除误解,我们需要教育企业中的决策者,以便他们能够采取适当的行动。人工智能咨询公司 MindTitan 的联合创始人 Markus Lippus 分享了一些面对这个问题的伟大观点。当与一家公司就人工智能或数据科学集成进行合作时,他们会举办研讨会。在这些方法中,重点是发现问题和找出公司的痛点——一种问题驱动的方法。当收集了必要的理解后,MindTitan 团队可以就人工智能解决方案在哪里以及如何为他们的业务带来价值向合作者提供适当的建议。

4:流程管理是扩展人工智能的关键

Andrus Kuus on stage (photo credit: Proekspert)

随着我们开始以更大的方式应用 AI/ML 解决方案,过程变得比以往任何时候都更加重要。这既是因为更广泛的系统,也是因为构建这些系统的数据科学团队越来越多。Proekspert 的软件分析师 Andrus Kuus 暗示,人工智能和数据科学领域的未来劳动力将是直接来自大学的学生(他们往往缺乏团队合作经验),我们可以从实践中受益,以增强团队协作。他强调了他在发展数据科学团队时发现的一些观点:

选择有助于你实现清晰的工具和实践。
2:在尝试解决方案之前,提出正确的问题并验证想法。
3:定期讨论。

虽然我不能一字不差地记住他的建议,但我相信那是它的要点。在一个快速变化的世界中,专注于清晰性和内部沟通的批判性方法看起来绝对是一个很好的方法。

此外,我们需要记住为更大规模的人工智能系统提前做好计划。特拉维斯·奥列芬特说到重点了:当你的模型过时时,你有计划吗?肯定会的,只是时间问题。世界一直在变化。数据以及我们与之互动的方式也是如此。因此,你应该确保你有一个计划来维护和更新你的久而久之模型。Travis 称这个过程为模型管理。

当训练模型时,在数据分布的基础上发生一些关于决策边界的折衷。如果你处于不幸的境地,你的模型已经“过时”或者输入数据的分布已经改变,重新训练是不可行的, DataRobot 的数据科学家 Peter Prettenhofer 建议研究数据集转移。这一概念涉及使用类似于统计距离重要性重新加权的技术,以了解您的数据分布如何发生变化并进行纠正。

5:大自然是一位伟大的老师

A video from Curious AI on modeling the human brain.

好奇人工智能的首席技术官 Antti Rasmus 发表了一篇非常有趣的演讲,介绍了他们在模拟人类想象力方面所做的工作。他与丹尼尔·卡内曼的“思考,快与慢”做了比较,后者将人类的思维一分为二,分为两个系统:系统 1 用于快速和直觉的思考,系统 2 用于深思熟虑的计划和想象。在自动驾驶汽车中,这种行为的例子可以是保持在道路上(系统 1,直观且即时)同时还计划未来可能的结果,如如果行人或另一辆汽车行为异常该怎么办(系统 2,计划和想象)。好奇的人工智能已经通过他们所谓的基于模型的强化学习对此做出了很好的估计——他们用一种类似蜘蛛的数字生物来演示这一点,这种生物逐渐学会以非结构化的方式行走。

马克西姆·奥尔洛夫斯基在他富有远见的演讲中也强调了这一观点:在未来,我们可能会在进一步模拟生物系统方面受益匪浅。从某种意义上说,Pandora Boxchain 的去中心化思想也可以被理解为向多智能体人工智能系统引入一种类似人类的群体动力。

这些演讲引起了我的共鸣,因为我也相信理解和建模人类系统有很大的潜力等待释放。我的研究领域是利用认知科学来建模人类听觉系统,以便为音频信号处理创建更好的人工智能模型。到目前为止,这种观点对我来说非常强大,并且产生了新的想法和对问题领域更具指导性的方法。如果你有兴趣,你可以在这里阅读我的项目的初级读本:《AI 在音频处理中的承诺》

这是我从北极星 AI 大会上获得的五个最有价值的收获。我应该向组织者和演讲者致以深深的谢意,他们开阔了我的眼界,为新思想开辟了道路。

如果这个总结对你有帮助,请留下一些掌声。

来自科技独角兽公司数据科学实习生的 5 堂课

原文:https://towardsdatascience.com/5-lessons-learned-from-a-data-science-intern-at-a-tech-unicorn-86292d2ab676?source=collection_archive---------3-----------------------

从难忘的经历中获得可操作的要点

Unity HQ San Francisco

随着我们进入 8 月,夏季开始接近尾声,我想我应该花点时间反思一下我在加利福尼亚州旧金山 Unity Technologies 担任数据科学实习生的最后 12 周。

首先,让我们回顾一下背景。我目前是一名本科生,学习数据科学,这是我在学校的最后一年。我怎么会在 Unity 结束的?我在网上申请,经历了面试过程,最终接受了去总部的邀请,成为遍布北美各地的 30 名暑期实习生之一。

我的目标是分享一些从难忘的经历中得到的可操作的教训、收获、想法和建议。

什么是团结?

为了描述 Unity does,我将遵从公司网站:

“Unity 是世界上最广泛使用的实时 3D (RT3D)开发平台的创造者,为世界各地的开发人员提供了创建丰富、交互式 2D、3D、VR 和 AR 体验的工具。我们 800 多人的工程团队通过与脸书、谷歌、Magic Leap、微软和 Oculus 等合作伙伴合作,确保 Unity 处于技术的前沿,以确保对最新版本和平台的优化支持。

使用 Unity 的体验覆盖全球近 30 亿台设备,在过去 12 个月中安装了 240 亿次。Unity 为 RT3D 的建筑、汽车、建筑、工程、电影、游戏等行业提供动力”

Unity 2018.1 — New Features

Unity 分析

更具体地说,我整个夏天都在 Unity Analytics 的牛逼团队中工作。分析是游戏解决方案套件中的一项功能,旨在帮助开发者提供由数据洞察和个性化推动的动态体验。

此外,我是数据科学团队的一名自豪的成员,该团队的使命是使数据民主化,为客户提取和实现洞察力,并构建工具来增加参与度。

Unity Analytics

现在你对团队和我的角色有了更多的了解,让我们深入了解一下我将从实习中获得的一些主要见解。

移情的重要性

在过去的几年里,对于数据科学家来说,同理心是最重要的技能。我不知道这是真的还是假的,但我可以说,当涉及到像数据分析、交流结果和产品直觉这样的技能时,移情作用起着关键作用。即使对于文档这样简单的事情,设身处地为他人着想的能力也是一个非常强大的工具。

对于大多数职位来说都是如此,但我发现它尤其适用于数据科学家。简单地说,我们使用数据来提供价值。当每天处理数据时,很容易忘记数据不仅仅是浮点、字符串、比特或字节——而是代表了用户的声音。没有同理心,我们就失去了大局,也无法创作出有意义、有影响力的作品。

信息是不够的

作为数据科学家,执行分析和提供见解通常是我们工作的一大部分。请注意,我说的是“洞察力”而不是“信息”。这可能看起来微不足道,但这两个词之间有一个微妙而重要的区别,这是缺乏经验的数据科学家(包括我自己)经常犯的一个根本性错误的基础。

信息是用来理解事物的数据点的集合,而洞察力使用这些信息来推动行动。

整个夏天我都在思考这个区别。早些时候,我发现自己在进行分析时,经常会收到类似于“那么,这里有什么收获?”这实际上是一种更礼貌的方式来表达“我该拿这个做什么?”。经过反思,我现在知道我的错误是提供了信息,而不是见解。

提供有趣的分析是一回事,但推动行动则完全是另一回事。当你完成你的分析时,总是问自己以下问题:

  • 这里有哪些主要的外卖?
  • 关键利益相关者应该采取什么行动?

花时间思考这些问题宜早不宜迟,一旦你有了这些问题,在交流结果时直接提出来。通过这样做,你不仅传递了一个更清晰的信息,还增加了你的工作产生重大影响的可能性。

Image Source

初学者的心态

可以说,我经历中最喜欢的部分是有机会与一大堆令人印象深刻的人一起工作,他们比我更有见识。你可能听说过吉米·罗恩的名言,“你是和你相处时间最长的 5 个人中的平均水平”。

这不仅仅适用于小范围的朋友圈,也适用于大范围。如果你周围都是聪明人,你可能会变得更聪明。有道理。

Unity Careers

但事情并不总是这么简单。这没有提到阻碍这一效果的一些障碍。最值得注意的是,我们都天生有点自私和过度自信。我们喜欢正确,我们喜欢被认可,无论是在社交上还是智力上,或者两者都是。

回顾过去,我会说我进入这个夏天时有点过于自信。我花了整整一周的时间才意识到,为了充分利用这段经历,我必须改变自己的心态。我必须愿意寻求帮助,承认自己的错误,有时还会问一些“愚蠢的问题”。

感觉自己是房间里最聪明的人很舒服。舒适固然很好,但它往往是成长的敌人。为了看到吉米·罗恩所说的好处,你必须愿意采取一种初学者的心态,并在个人和职业生涯中不断谦虚。

可信数据分析

Roger Peng 的一篇关于可信数据分析的优秀文章中的这个概念是我整个夏天都在回想的。这篇文章提到了一种有趣的方式来划分和思考分析过程,被称为数据分析的 ABC。

Done and Undone

在上图中,A 代表你向利益相关者展示的分析,B 是你做了但没有包括在报告中的分析,C 是你忘记或没有时间检查的东西。一般来说,为了清晰起见,你需要优化 A,同时支持 B,并在给定的时间框架内尽可能地减少 C。

记住这个框架,你就可以更有效地预先准备好关于你的分析的可能的问题。这导致了更有说服力的结果和更少的类似“我会调查一下”的回应。

无情地挑战假设

你在工业界面临的许多挑战在大学里未必会出现。在学校,你通常会遇到一个结构化的问题,你需要给出一个(希望是正确的)答案。在工业领域,情况并非如此。这些问题通常是非结构化的、模糊的和复杂的。

在这种情况下,你不能假设太多。假设导致错误的转折,从而导致回溯和支点——这两者通常都会导致错过最后期限或劣质工作。

在开始阶段可能会花更多的时间,但是在深入研究之前花时间充分充实一个问题总是值得的。这可能意味着许多事情,包括:白板,研究,头脑风暴,或规划。做最适合你的事情,不管是花几分钟还是几个小时。

经历挑战最明显的假设的过程。伸出手与他人交谈。协作并获得大量想法反馈。信任但核实。不要仅仅因为“事情总是这样”就接受某件事,最重要的是,不要害怕做出一点让步。当事情结束时,你的利益相关者会很高兴你这样做。

Unity Blog

包扎

去年秋天,我坐下来,抓起一支笔和记事本。我写下了我想在来年完成的所有事情。清单上的第一件事就是飞到西海岸,成为一名更高效的数据科学家,跻身于科技领域最聪明的头脑中。

这当然不容易。我不断失败并牺牲了很多才走到今天,但我非常感激有机会在过去几个月里利用数据科学为一个新兴行业的令人难以置信的产品创造价值。

我完成了很多,犯了很多错误,最重要的是,感谢一个令人敬畏的团队、经理和一群导师,我学到了比我预期更多的东西。我希望我至少成功地向你们传达了一些教训。下次见。

感谢阅读!如果你喜欢这篇文章,请继续向鼓掌按钮展示你的爱,看看下面我的一些类似的文章:

对更多的帖子感兴趣吗?请务必关注我并订阅下面的我的简讯以接收任何新内容。更多关于我和我在做什么,请查看我的网站

5 体现侥幸、坚持和观察的机器学习琐事。

原文:https://towardsdatascience.com/5-machine-learning-trivia-that-embody-fluke-persistance-observation-400db9e206a3?source=collection_archive---------7-----------------------

我一直在观看长达一个小时的视频讲座,阅读书籍,滚动查看 stack exchange 上的问题,有一些信息非常突出。一些有趣的片段让我迷惑,并继续激励我去学习更多。在这篇文章中,我想整理其中的一些。那么,让我们开始吧。

  1. 规范化纯属偶然。

规律化是一种神奇的技术,可以防止过度拟合,帮助我们平静地入睡,但实际上它并不是为了治疗过度拟合而开发的。最初开发它是为了通过使用正则化参数抵消不可逆矩阵来使它们可逆。然而,令人欣慰的是,人们注意到这也有助于解决模型过于依赖离群值的恼人问题。天佑不可逆转!

2。Sigmoid 函数是 softmax 函数的特例

也许你知道这一点,但当我意识到这一点时,我肃然起敬。我从未想过逻辑回归的核心函数可以与将实数向量压缩成概率的函数联系起来…直到我看到了这个。

我同意,事后看来,你可能认为它正盯着我的脸。二元分类扩展到多类分类,咄?但对我来说并不明显!

3。Geoffrey Hinton 的 Coursera 课程中介绍了梯度更新的 RMS Prop 方法。

准确的说是第六讲。神经网络之父杰夫·辛顿在他的幻灯片中说,这是未发表的,通常在实践中效果很好。Andrej Karpathy 在他的测试中实现了它,并发现它给出了更好的结果。当他使用它时,他引用了 coursera 讲座中的幻灯片。事实上,这是一个常见的引用。也许,从现在开始,我们在实现 Coursera 幻灯片上的微妙技术时会格外小心。

4.内核化的支持向量机从被想到到实现有 30 年的差距。

坚持和瞬间迸发的火花是相辅相成的。Vladamir Vapnik 在 60 年代就有了支持向量的基本概念。然而,直到 1993 年,他的同事才决定实现具有 n = 2 核的 SVM,以帮助他们赢得一场关于支持向量机在手写数字分类问题上击败神经网络的晚餐打赌。天哪,即使加入了最轻微的非线性,内核也工作得很好。你可以从我得到这个的地方观看这个惊人的视频,至少可以说它是激励人心的。

https://youtu.be/_PwhiWxHK8o?t=46m19s

5。CIFAR-10 不仅仅是另一个数据集

标志性的数据集 CIFAR-10 是一个用于物体识别的既定计算机视觉数据集,由加拿大高级研究所(CIFAR)创建。我知道你会说,别胡扯了,夏洛克。但是,我在这里想说的是关于 CIFAR 这个机构本身。杰弗里·辛顿在他早期的研究中,去了美国进行研究。然而,当他们不幸地切断了对艾的大部分资助,再加上辛顿不愿意使用军事资助,他决定去加拿大。这也是 CIFAR 给他和平进行研究的机会。谢天谢地,我们为此感谢西法尔。它现在是深度学习的中心,Geoffrey Hinton 自己在那里运行了十年的深度学习项目。这就是我所说的双赢。

如果这些琐事中的任何一个给你的机器学习知识库增加了新的东西,我写它的目的就会得到优化。当我第一次发现它们的时候,我希望你有和我一样的惊奇和惊奇的感觉。请随意提出建议或你可能有的任何有用的信息。愿砝码对你有利!

Python 速度测试:用 Python 从数据中删除“$”的 5 种方法

原文:https://towardsdatascience.com/5-methods-to-remove-the-from-your-data-in-python-and-the-fastest-one-281489382455?source=collection_archive---------1-----------------------

之前的一篇关于爱荷华州白酒销售回归项目的帖子中,我提到这是我第一次处理足够大的数据,以至于担心编写代码来优化速度。在这篇文章中,我将介绍一个相对简单的例子。

这是我们正在处理的数据。注意“state_bottle_retail”列。每个条目都以美元符号开始,为了使值变成数字,我需要删除这些美元符号。

在 Python 中有很多不同的方法来完成这个任务。但是由于这个数据集的大小,优化变得很重要。我将演示一些方法,并报告它们花费了多少时间。一个注意事项:我将在整个数据集的 10%的一个小的子集上做这些测试。因此,尽管速度都非常快,最慢的只有 130 毫秒多一点,但当规模变大时,问题就更大了。这也是为了表示优化的重要性和实践。这是一个相对简单的例子,但是在某些情况下,这样的实践可以节省几个小时甚至几天。

对于这些测试,我将使用 Jupyter 笔记本中的%timeit cell magic。这是一个方便的工具,它运行操作的多个循环,并报告其最佳性能时间。要做到这一点,您只需在行首键入%timeit,运行单元格,然后查看结果。

首先,我将向您展示我运行的所有测试的图片,然后我们将一个一个地浏览它们。

Faster, faster, faster!

首先,我在整篇文章中使用了str.replace('$','')方法。这是最直接的方法,因为它只是用一个空格来替换列中每一项的' $ '。正如你所看到的,这是最慢的选择,但它仍然像我上面提到的那样相对较快。这意味着在超过 200 万行的完整数据集上,只需要一秒钟就可以完成。真快。但是这篇文章是关于变得更快。

下一个方法使用 pandas 的“apply”方法,该方法被优化为对 pandas 列执行操作。“apply”方法要求对列中的每个值运行一个函数,所以我编写了一个 lambda 函数来执行相同的功能。在这篇文章中,我将更多地讨论 lambda 函数的“应用”方法。在本例中,它看起来像这样:

%timeit df.state_bottle_retail.apply(lambda x: x.replace('$',''))

.apply方法的工作就像它应该做的那样,将运算速度加快到 117 ms. Lookin ' good。

对于下一步,我将.replace方法改为.strip方法。它少做了一次手术。它没有用空格替换“\(”,而是去掉了“\) .”看起来像这样:

%timeit df.state_bottle_retail.apply(lambda x: x.strip('$'))

这使得整个列的速度提高到了不到 100 毫秒。越来越好!

接下来是列表理解。在 Python 中,列表理解是一种非常有效的迭代大量对象的方法。所以我用同样的.strip方法和列表理解代替了.apply方法。看起来像这样:

%timeit [x.strip('$') for x in df.state_bottle_retail]

列表理解让我们达到了 72.3 分,尼斯女士!

最后,我尝试了另一种方法。我没有使用函数来取出' $ ',而是使用了 Python 内置的[]切片。它通常用于从列表中切割和选择您需要的值,但它也可以切割字符串。所以[1:]从第二个值开始分割每个字符串,直到结束。因为 Python 是零索引的,这意味着它从 0 开始计数,所以数字 1 是第二个值。“:”告诉它切片,直到字符串结束。下面是使用字符串切片方法的最终列表理解:

%timeit [x[1:] for x in df.state_bottle_retail]

这一时间达到了惊人的 31.4 毫秒,这不仅是最快的时间,也是这些测试中速度增长最快的一次。这种方法无疑是最快的,但是使用它有一个注意事项。如果任何值前面没有' $ ',这实际上会去掉该字符串中的第一个数字。所以在使用这种方法时你必须小心。我个人的选择是使用第四种方法,用.strip方法进行列表理解。尽管它不是最快的,但风险更小。根据您的数据规模和您对数据完整性的信心,您必须做出决定。

一个小注意事项:要使这些更改真正起作用,您必须将更改后的值赋回数据框中正在更改的列。看起来会像这样:

df.state_bottle_retail = [x.strip('$') for x in df.state_bottle_retail]

优化代码的速度是一个有趣的过程。这并不总是必要的,但习惯于以这种方式思考是一个好主意,特别是如果您想要处理大数据或向客户部署代码。玩得开心!

更新:' nzdatascientist '用下面的不同方法进行了评论。我在相同的数据上进行了尝试,结果非常快。到目前为止,它优于其他方法,而且如果条目没有“$”就没有删除其他值的危险。这是:

np.fromstring(df.state_bottle_retail.values.astype('|S7').tobytes().replace(b'$',b''), dtype='|S6')

这一时间达到了惊人的 14.3 ms,比危险的字符串切片方法快了一倍多,几乎是最慢的演示方法的 10 倍。看起来 numpy 的.fromstring方法是为这种类型的过程优化的。此外,转换成字节并替换它们也加快了这个过程。感谢‘nzdatascientist’!

B2B 主管必备的 5 种数据可视化

原文:https://towardsdatascience.com/5-must-have-data-visualizations-for-b2b-executives-931e4c17c63c?source=collection_archive---------3-----------------------

人脑是一个强大的工具,可以创造和处理大量的信息。如果你想走从页面或屏幕到大脑的最短路线,试试图像。麻省理工学院神经科学家 2014 年的一项研究发现,大脑处理一幅图像仅需 13 毫秒。

我们的大脑识别视觉比识别文字要快得多。在过去的几年中,这种认识促进了报告和数据可视化工具的兴起。为了节省时间和脑力,越来越普遍的是在业务的各个部分使用图表、图形和简单的 KPI 报告,高管们对阅读材料的减少都松了一口气。

在会议、电话会议和一般业务节奏之间,B2B 主管几乎没有时间阅读冗长的报告或从令人困惑的来源解析重要数据。幸运的是,通过使用数据可视化工具,首席执行官们可以获得突破,这些工具取代了制作商业图表的耗时任务,同时还能讲述清晰、引人注目的故事。

相关:数据可视化可以改善销售和营销一致性的 4 种方式

B2B 高管必备的 5 张图

季度和月度收入报告

Visme 创建的饼状图

对底线来说,什么比收入更重要?当高管们想要 10,000 英尺的视角时,收入报告是有用的视觉材料,可以提供团队努力成果的快速概览。

重要的统计数据和图表:

  • 一天一天的细分,突出趋势和高峰或低谷。
  • 收入百分比饼图显示归属于每个产品/服务/部门的收入

月报和季报要直接反映公司目标和部门目标。如果你的目标是增加每个客户的收入,一定要把它作为一个单独的 KPI(关键绩效指标),而不是仅仅挑选让你看起来不错的统计数据,比如网站访问量的增加。

容量和资源规划

视图 创建的任务燃尽图

能力:你的每个员工在不发疯的情况下能处理多少工作

资源:实施任何项目所必需的物质投资

在大多数商业智能和企业资源规划 (ERP)解决方案中可以找到能力和资源规划模块,为经理和高管提供每个产品或流程的员工、时间和材料需求的直观和准确的表示。实施项目燃尽图、跟踪预算要求和材料产出,以及安排适当数量的员工来有效地管理项目,这些工作可能会非常繁重。正确的数据可视化工具可以将所有相关信息放在一个报告中。

构建包含时间和材料的资源计划对于分析也很有用。当产品或订单完成时,将预测与实际使用统计进行比较,以发现瓶颈和您的预期与现实不符的地方。团队可以实施什么样的流程变更来在未来带来更高效的产品?

帐户级收入报告

根据客户确定和分析您的最佳和最差表现,并使用该数据为您的客户成功决策提供信息。

找到你的最高收益账户可以从几个方面得到回报。这些可以帮助您的团队根据使用率、参与度和最常用工具或产品的统计数据建立理想的客户档案。是什么让你的最大支出者与众不同,这与你当前的客户档案有什么关系?使用这些数据来更新(或建立)理想的客户档案,以指导您的目标。

同样的道理也适用于表现不佳的员工:他们可以提供成长的机会,也可以降低你的流失率。您的团队如何提高这些客户的产品参与度?将表现不佳的客户与您新的理想客户进行比较,以了解参与、支持或客户类型在哪些方面没有达到预期效果。也许团队在入职时遗漏了一些你可以修复的东西,或者也许他们从一开始就不适合,你的团队需要更新目标标准。

销售和服务排行榜

销售和客户服务团队整天都在第一线发展和维护业务,因此他们应该得到尽可能多的激励。排行榜为原本黯淡的前景注入了一点友好的竞争,同时强化了良好的整体行为。不要害怕在这里使用动作和颜色来增加信息的影响力和推动员工参与。

销售排行榜为一般的销售目标增加了一点游戏化,并实时更新统计数据。将您的销售数据表连接到您的数据可视化工具,并在中央位置的电视或显示器上显示结果。使用您的总收入排行榜旁边的饼图或其他图形来跟踪有助于达成交易的良好客户互动行为。

服务排行榜利用了类似的竞争意识,但其核心是客户满意度和参与度。排行榜可以显示 KPI,包括已完成的客户请求数、每个代表的总平均评分以及未完成的客户票证总数。

一旦您的团队开始跟踪这些数据点,不要忘记使用这些统计数据来改进整个团队流程。研究您的高绩效员工参与的行为类型,明确他们可以做些什么来指导团队的其他成员,以促进整体成长。

公司范围的仪表板

你知道目前的客户流失率是多少吗?平均交易规模?你的员工知道吗?公司范围的仪表板可以将您的团队聚集在一个中心目标周围。

与销售和服务排行榜类似,将公司范围内的仪表盘放在中心位置(靠近咖啡机?)员工可以在这里看到公司目标的进展。从总收入、交易或试用与高级订阅开始。

添加动画、趋势图和传统的交通灯颜色编码使得这些可视化易于理解。这种公司目标和进展的透明度提高了员工的士气、团队精神和一致性。

无论结果如何,在计划可视化时,从团队或公司的目标开始。与更大的目标和目的没有直接联系的数据可视化注定会失败,尤其是在管理层。它们可能看起来很漂亮,但增加参与的预期结果将会丢失。

轮到你了

如果你正在寻找一个简单易用的在线工具来创建商业图表,你可以试用一下 Visme,并在下面的评论区告诉我们你的想法!

本帖 原版 最早出现在 Visme 的视觉学习中心

5 快速简单的 Python 数据可视化代码

原文:https://towardsdatascience.com/5-quick-and-easy-data-visualizations-in-python-with-code-a2284bae952f?source=collection_archive---------0-----------------------

想获得灵感?快来加入我的 超级行情快讯 。😎

数据可视化是数据科学家工作的一大部分。在项目的早期阶段,您通常会进行探索性数据分析(EDA ),以获得对数据的一些见解。创建可视化确实有助于使事情更清晰、更容易理解,尤其是对于较大的高维数据集。在项目接近尾声时,能够以一种清晰、简洁、有说服力的方式展示最终结果是非常重要的,这样观众(通常是非技术客户)才能理解。

Matplotlib 是一个流行的 Python 库,可以用来非常容易地创建数据可视化。然而,每次做新项目时,设置数据、参数、图形和绘图可能会变得相当混乱和乏味。在这篇博文中,我们将看看 5 种数据可视化,并用 Python 的 Matplotlib 为它们编写一些快速简单的函数。

在我们开始之前,请查看 人工智能智能简讯以阅读人工智能、机器学习和数据科学方面的最新和最棒的信息!

散点图

散点图非常适合显示两个变量之间的关系,因为您可以直接看到数据的原始分布。您还可以通过对不同数据组进行颜色编码来查看这种关系,如下图所示。想要可视化三个变量之间的关系?没问题!只需使用另一个参数,如磅值,来编码第三个变量,如下图所示。我们刚刚讨论的所有这些点也与第一张图表一致。

Scatter plot with colour groupings

Scatter plot with colour groupings and size encoding for the third variable of country size

现在说说代码。我们先导入 Matplotlib 的 pyplot,别名为“plt”。创建一个新的绘图图形,我们称之为plt.subplots()。我们将 x 轴和 y 轴数据传递给函数,然后将它们传递给ax.scatter()来绘制散点图。我们还可以设置点大小、点颜色和 alpha 透明度。您甚至可以将 y 轴设置为对数刻度。然后专门为图形设置标题和轴标签。这是一个易于使用的功能,创建一个散点图端到端!

线形图

当你能清楚地看到一个变量与另一个变量有很大差异时,最好使用线图,即它们有很高的协方差。让我们看下图来说明。我们可以清楚地看到,随着时间的推移,所有专业的百分比都有很大的变化。用散点图绘制这些图会非常混乱,很难真正理解和看到发生了什么。线图非常适合这种情况,因为它们基本上给了我们两个变量(百分比和时间)的协方差的快速总结。同样,我们也可以通过颜色编码来分组。从我们的第一个图表来看,折线图属于“随时间变化”类别。

Example line plot

这是线图的代码。和上面的散点挺像的。只有一些微小的变量变化。

直方图

直方图对于查看(或真正发现)数据点的分布很有用。查看下面的直方图,我们在那里绘制了频率与智商的直方图。我们可以清楚地看到向中心的浓度,以及中位数是多少。我们还可以看到,它遵循高斯分布。使用条形图(而不是散点,例如)真的给了我们一个清晰的可视化,每个仓频率之间的相对差异。箱的使用(离散化)确实有助于我们看到“更大的画面”,如果我们使用没有离散箱的所有数据点,可视化中可能会有很多噪声,使我们很难看到真正发生了什么。

Histogram example

Matplotlib 中直方图的代码如下所示。有两个参数需要注意。首先,n_bins参数控制我们的直方图需要多少个离散仓。更多的垃圾箱会给我们更好的信息,但也可能引入噪音,让我们远离更大的画面;另一方面,更少的箱给了我们更多的“鸟瞰图”和更大的画面,没有更好的细节。其次,cumulative参数是一个布尔值,它允许我们选择直方图是否是累积的。这基本上是选择概率密度函数(PDF)或累积密度函数(CDF)。

假设我们想要比较数据中两个变量的分布。有人可能会认为,您必须制作两个独立的直方图,并将它们并排放在一起进行比较。但是,实际上有一个更好的方法:我们可以用不同的透明度覆盖直方图。查看下图。均匀分布的透明度设置为 0.5,这样我们可以看到它背后的东西。这使得用户可以在同一个图形上直接查看两个分布。

Overlaid Histogram

对于重叠直方图,需要在代码中进行一些设置。首先,我们设置水平范围来适应两种变量分布。根据这个范围和所需的箱数,我们可以实际计算每个箱的宽度。最后,我们在同一个图上绘制两个直方图,其中一个稍微透明一些。

条形图

当您试图可视化具有很少(可能少于 10 个)类别的分类数据时,条形图最为有效。如果我们有太多的类别,那么图中的条形将会非常混乱,难以理解。它们对于分类数据来说很好,因为你可以很容易地根据条形的大小(即大小)看出类别之间的差异;类别也很容易划分和颜色编码。我们将会看到三种不同类型的条形图:常规条形图、分组条形图和堆积条形图。在我们进行的过程中,请查看数字下面的代码。

下面的第一张图是常规条形图。在barplot()功能中,x_data代表 x 轴上的滚动条,y_data代表 y 轴上的条形高度。误差线是一条额外的线,位于每条线的中心,可以用来显示标准偏差。

分组条形图允许我们比较多个分类变量。看看下面的第二个柱状图。我们比较的第一个变量是各组(G1 组,G2 组,...等等)。我们也用颜色代码来比较性别。看一下代码,y_data_list变量现在实际上是一个列表的列表,其中每个子列表代表一个不同的组。然后我们循环遍历每个组,对于每个组,我们在 x 轴上为每个刻度画一条线;每组都有颜色编码。

堆积条形图非常适合可视化不同变量的分类构成。在下面的堆积条形图中,我们比较了每天的服务器负载。使用彩色编码的堆栈,我们可以轻松地看到和了解每天哪些服务器工作最频繁,以及全天的负载与其他服务器相比如何。其代码遵循与分组条形图相同的样式。我们循环遍历每个组,只是这次我们在旧条的上面而不是旁边画新条。

Regular Bar Plot

Grouped Bar Plot

Stacked Bar Plot

箱线图

我们之前看了直方图,它非常适合可视化变量的分布。但是如果我们需要更多的信息呢?也许我们想要对标准差有一个更清晰的认识?也许中间值与平均值有很大不同,因此我们有许多异常值?如果有这么大的偏斜,很多值都集中到一边怎么办?

这就是箱线图出现的原因。箱线图给了我们以上所有的信息。实线方框的底部和顶部始终是第一个和第三个四分位数(即数据的 25%和 75%),方框内的波段始终是第二个四分位数(中间值)。触须(即末端有条的虚线)从框中延伸出来以显示数据的范围。

因为盒状图是为每个组/变量绘制的,所以很容易设置。x_data是组/变量的列表。Matplotlib 函数boxplot()y_data的每一列或者序列y_data中的每一个向量做一个方框图;因此x_data中的每个值对应于y_data中的一个列/向量。我们所要设定的就是剧情的美感。

Box plot example

Box plot code

结论

使用 Matplotlib 有 5 个快速简单的数据可视化。将事物抽象成函数总是让你的代码更容易阅读和使用!我希望你喜欢这篇文章,并学到一些新的有用的东西。

5 家放射学人工智能公司要建立和投资(它们都不解释医学图像)

原文:https://towardsdatascience.com/5-radiology-artificial-intelligence-companies-to-build-and-none-of-them-interpret-medical-images-7a21633f4d6?source=collection_archive---------9-----------------------

我之前已经全面地写了关于在哪里投资放射学人工智能,以及如何击败这个领域正在进入的炒作曲线悬崖。对于那些没有看过我之前博客的人,我的总结是这样的:

选择专注于临床有效用例的公司,这些公司拥有大量数据集,符合法规,并且没有过度宣传自己。

问题是…像这样的放射学人工智能投资机会几乎不存在,尤其是在英国。我想是时候写下我的想法了,比如我实际上会建立什么(如果我有资金的话),或者我会建议风投投资什么公司(如果它们存在的话)。

令人惊讶的是,没有一家公司真正解释医学图像——我会在最后解释为什么!

1.放射本体建模

好吧,这可能听起来有点简单和明显,但它实际上是所有放射学人工智能工作中最重要的。

首先,我需要解释一下放射学——它不仅仅是解读医学图像的临床专业,它还是一个将专家解读转化为文本的熟练过程。放射科医生本质上是傅立叶变换——将数字图像转换成用他们自己的“放射学”语言编写的模拟单词和句子。作为一名放射科医师,我已经学会了说“放射学”——我可以面无表情地说“一群胆管高回声钙化,伴有后部声学阴影”,其他任何放射科医师都知道我刚才描述的是什么,以及是什么形式。(翻译——我说的是超声波上看到的胆结石)。

这种语言,或者说本体论,对于这个领域来说是独一无二的,并且跨越国界也是相当同质的。在最佳实践中,每一次医学扫描都应该有一份以这种本体论格式编写的报告。这意味着,在世界各地的数据库中,几乎每一次医学扫描都有一个相当标准化的放射学描述。(如果这还不能让数据科学家兴奋,那么我不知道还有什么能让他们兴奋)。我们在这里谈论的是数十亿的数据点!更棒的是,数字化医疗记录中有数十亿个数据点!

Image from Modelling Radiological Language with Bidirectional Long Short-Term Memory Networks, Cornugreta et al, 2016.

因此,我将建立或投资的第一家放射学人工智能公司是一家可以将最先进的自然语言处理(NLP)矢量化和概念建模应用于放射学报告的公司。这项技术超越了简单的 LSTM 概念识别、Word2vec 嵌入和其他语言概念模型,通过添加递归神经网络来构建理解。与 RadLex(官方放射学“字典”)和其他医学本体数据库一起使用,公司可以构建一个强大的工具来有效地注释和概念性地建模他们可以访问的每个放射学报告。

无论是谁构建了这一系统,并率先将即插即用的 API 推向市场,都有可能成为大多数其他放射学人工智能研究、服务和其他医学成像人工智能公司的基础。

2.放射科地外行翻译

An example of poor Radiology to Lay translation

“放射学”作为一种语言的主要问题是,没有多少其他人能理解它(包括许多医生)。放射科医生通常会在报告的末尾加一个摘要来强调要点,然而,这个摘要是对报告正文的简化,通常不会涵盖其细节和细微差别。意义可能会丢失,摘要可能会被当作真理,由于缺乏细节,临床错误可能(并且已经)发生。

第二,最近推动了一种更加面向患者、以价值为导向的放射服务,这种服务允许放射科医生与患者直接互动,以解释成像结果。不足为奇的是,接受速度很慢,主要是因为放射科医生太忙了,没有时间阅读扫描结果。

我的第二个公司将解决这两个问题,通过建立在本体工作的第一部分上,并产生放射报告的外行翻译。增值是显而易见的——非放射学临床医生和患者都将受益于更易于访问的报告,而不会损失质量或改变放射科医生的工作流程。从本质上讲,这将是一条放射学上的盲鱼——在放射科医生和非放射科医生之间进行无意义的翻译。

以这种方式改善跨专业的交流可以减少复读和意见的要求,提供对临床状态更可靠和更彻底的了解,以及为患者提供更好的洞察力和保证。

这项技术的一个额外的免费好处是能够通过翻译服务推送报告,即时全球化报告,并开辟了英国放射服务外包给外国远程放射公司的可能性,以利用不讲英语的放射学家。

3.预测语义学

很久以前,放射科医生曾经在患者的临床记录中手写他们自己的报告。随后出现了口述录音机和放射科秘书/打字员,后来才出现了语音识别软件(这本身就是人工智能的一种形式)。进步终究是进步。我的观点是,现代放射科医生非常习惯于整天对着麦克风清晰易懂地说话,并看到他们的话出现在屏幕上。

放射科医生也有多个屏幕和许多消耗注意力的活动,从他们正在阅读的实际图像,到 PACS 系统屏幕,到报告,以及访问书籍和网站参考资料。我的第三个放射学人工智能公司将专注于这些参考资料。

通过建立语言模型和概念模型,我的目标是设计(或投资)一个系统,该系统内置一个具有推理能力的概念聚合器。这种系统可以根据放射科医师所说的内容,从理论上预测报告的总结发现。一个例子可以是描述病变的放射科医师,并且系统建议该病变的可能病理列表(例如,非骨化性纤维瘤、动脉瘤样骨囊肿、纤维皮质缺损;这些都可以看起来非常相似!).所有这些都可以实时进行。

这具有两个功能:1)以可能的鉴别病理学的形式向放射科医师提供决策支持,以及 2)通过消除口述概要的需要来加速口述过程。两者都通过改进工作流程和减少诊断错误来增加价值。

4.基于内容的图像检索

每家医院都有一个 PACS 归档,这是一个巨大的数据存储库,存储了过去 10 年中拍摄的所有图像(令人难以置信的是,归档的图像由于容量问题而被删除的情况屡见不鲜!).这个档案本质上是一个黑暗的坑,数十亿有价值的临床数据点被扔进这个坑,再也看不到了。真是浪费!

目前不可能在 PACS 档案中搜索特定的临床内容。是的,您可以搜索患者姓名或 ID,或按成像设备和日期进行过滤,但这意味着您需要在搜索之前了解扫描是在何时/如何或对谁进行的。然而,直到你打开它,你才知道扫描中的病理是什么。没有通过临床概念、病理学或者更好地通过图像搜索本身进行搜索的功能。

医院希望在影像档案中搜索特定临床病理的原因有很多:审计、研究、错误处理、教学案例、交叉引用等等。目前,记录某些类型临床病例的唯一方法(例如,记录所有患有罕见骨肿瘤的患者)是报告放射科医师在报告时手动将病例添加到文件中。之后,它就消失在档案中的某个地方了(除非有人记得病人的详细信息)。

我的第四家放射学人工智能公司将提供基于文本和基于图像的 PACS 存档搜索。基于文本的搜索将是一个简单的案例,在整个档案上运行我们第一家公司的概念建模 API,并将结果连接到智能搜索功能。临床医生可以立即搜索“患有转移性骨肉瘤的青少年”,并返回几十个病例供他们查看。老实说,在我的学术任期内,我已经搜索了数百万份档案,这个简单的功能可以节省几个月的研究时间!

不过,我想更进一步。通过使用简单的非解释性图像感知技术,如流形排序,我的目标是建立一个系统,允许放射科医生根据图像内容搜索 PACS 档案。(谷歌已经有了类似的服务,允许你上传图片并找到相似的——这也没什么不同)。

https://images.google.com allows you to upload an image to find similar content

想象一下,一位放射科医生正在查看一个复杂的肾脏肿瘤病例,该病例具有奇怪的血管模式,但他们不确定这是什么。我们的放射科医师可以使用 reading PACS 软件中的工具来裁剪该区域,单击 search,几秒钟后就可以获得几十个以前报告过的类似研究。这种基于内容的即时比较将改变工作流程,减少对外部参考源的依赖,成为出色的教学辅助工具,减少错误,并为基于以前的病例审查临床决策过程提供可靠的方法。

5.数字红点

很久以前,在放射学成为数字服务之前,放射科医生使用硬拷贝平片。这些二氧化硅和化学物质的薄片在黑暗的房间里被处理,挂湿晾干,然后被小心地放在棕色的文件纸条里,运送到阅览室。放射技师(技师)负责这个过程(不是放射科医师)。随着时间的推移,随着放射技师越来越熟练地阅读图像,开发了一种系统,放射技师将在胶片的角落放置一个小的圆形红色贴纸,以标记他们认为图像包含需要临床检查的病理。这个“红点”系统运行良好,尤其是在经验丰富的放射技师的监督下。红点胶片将被放置在报告堆的顶部,以确保当值放射科医师首先看到紧急的临床发现,反过来,病情最严重的患者将及时将他们的图像报告给相关的临床团队。

不幸的是,一旦引入数字 PACS,这种简单的警报系统就消失了。是的,放射技师可以数字标记图像,但通常情况下,图像仍然出现在报告队列中的正常位置。放射科医师在他们的阅片 PACS 中实际打开它们之前,不知道哪些胶片包含病理,哪些不包含病理。

Digitally annotated ‘red dot’ of a left orbital floor fracture. Note the annotation isn’t in fact red nor a dot, but it still does the job!.

我的第五家,也可能是最具临床价值的放射人工智能公司将开发一种数字红点系统,以实现早期分流。通过在简单标注为“正常”和“异常”的成像数据集上训练卷积神经网络,将建立一个简单的检伤分类系统,具有高异常敏感度但低病理特异性。紧急电影会出现在阅读清单的最上面,在不太重要的“正常”研究之上。

好处不言而喻——具有紧急发现的扫描将被报告并优先于“正常”研究采取行动。病人的安全将在一夜之间得到极大的改善。有报告积压的医院(即英国的每一家医院)可以更有效、更自信地首先处理重要的扫描,潜在地将癌症和其他等待列表减少几个数量级。成本节约潜力巨大。最令人兴奋的是,这样一个系统将为开发病理分类器奠定基础,让我们最终能够一瞥解释医学图像中病理的人工智能的开端。

所以,你有它。五家在医学成像中使用人工智能的公司绝对需要建立,需要投资,需要培育。放射学中的人工智能不一定仅仅是解释图像——这是高度专业化的人类的职权范围,也可以说是一个更加困难的技术挑战。相反,我们必须建立工具,增强和帮助放射科医生,缓解痛点,并改善安全和工作流程。事实上,我认为如果没有这五项技术的存在,对图像的实际解读根本不可能发生。

然而,如果没有成像数据、研究框架、开发、监管审批、市场化和上市,这一切都是不可能的。为此,我们需要一个放射学人工智能孵化器——而我恰好也有这个计划

如果你和我一样对放射学人工智能的未来感到兴奋,并想讨论这些想法,请保持联系。我在推特@drhughharvey

如果你喜欢这篇文章,点击推荐并分享它会很有帮助。

关于作者:

哈维博士是一名委员会认证的放射科医生和临床学者,在英国国民医疗服务体系和欧洲领先的癌症研究机构 ICR 接受过培训,并两次获得年度科学作家奖。他曾在 Babylon Health 工作,领导监管事务团队,在人工智能支持的分诊服务中获得了世界第一的 CE 标记,现在是顾问放射科医生,皇家放射学家学会信息学委员会成员,以及人工智能初创公司的顾问,包括 Kheiron Medical。

成为数据科学家的第一件事应该是学习“逻辑回归”的 5 个理由

原文:https://towardsdatascience.com/5-reasons-logistic-regression-should-be-the-first-thing-you-learn-when-become-a-data-scientist-fcaae46605c4?source=collection_archive---------1-----------------------

几年前,我开始涉足数据科学领域。当时我是一名软件工程师,我首先开始在网上学习(在开始攻读硕士学位之前)。我记得当我搜索在线资源时,我只看到学习算法的名称——线性回归、支持向量机、决策树、随机森林、神经网络等等。很难理解我应该从哪里开始。今天,我知道要成为一名数据科学家,最重要的是学习管道,即获取和处理数据、理解数据、构建模型、评估结果(模型和数据处理阶段)和部署的过程。所以作为一个TL;本文作者:首先学习逻辑回归,熟悉流水线,不要被花哨的算法淹没。

你可以在这个帖子中读到更多关于我从软件工程转向数据科学的经历。

这是我今天认为我们应该首先从逻辑回归开始成为数据科学家的 5 个原因。当然,这只是我的看法,对其他人来说,用不同的方式做事可能更容易。

因为学习算法只是流水线的一部分

正如我在开头所说,数据科学工作不仅仅是建立模型。它包括以下步骤:

你可以看到“建模”是这个重复过程的一部分。当构建一个数据产品时,首先构建整个管道是一个很好的做法,尽可能保持简单,了解你到底想要实现什么,你如何衡量自己,你的基线是什么。在那之后,你可以进行奇特的机器学习,并且能够知道你是否正在变得更好。

顺便说一下,逻辑回归(或任何 ML 算法)不仅可以用于“建模”部分,还可以用于“数据理解”和“数据准备”,输入就是一个例子。

因为你会更好地理解机器学习

我认为人们在阅读这篇文章标题时问自己的第一个问题是为什么是“逻辑”而不是“线性”回归。事实是这并不重要。仅这个问题就引出了两种监督学习算法——分类(逻辑回归)和回归(线性回归)。当你用逻辑或线性回归建立你的管道时,你会熟悉大多数机器学习概念,同时保持事情简单。像监督和非监督学习,分类与回归,线性与非线性问题等概念。此外,您还将了解如何准备数据,可能存在哪些挑战(如估算和特征选择),如何衡量您的模型,是否应该使用“准确性”、“精确回忆”、“ROC AUC”?或者也许是“均方差”和“皮尔逊相关”?。所有这些概念都是数据科学过程中最重要的部分。在你熟悉它们之后,一旦你掌握了它们,你就能够用更复杂的模型来代替你的简单模型。

因为“逻辑回归”是(有时)足够的

逻辑回归是一种非常强大的算法,即使对于非常复杂的问题,它也可以做得很好。以 MNIST 为例,仅使用逻辑回归就可以达到 95%的准确率,这不是一个很好的结果,但足以确保你的管道工作。实际上,通过正确的特征表示,它可以做得非常好。在处理非线性问题时,我们有时试图用一种可以线性解释的方式来表示原始数据。这是一个简单的例子:我们想对以下数据执行一个简单的分类任务:

X1    x2    |  Y
==================
-2    0        1
 2    0        1
-1    0        0
 1    0        0

如果我们绘制这些数据,我们会发现没有一条直线可以将它们分开:

plt.scatter([-2, 2], [0, 0 ], c='b')
plt.scatter([-1, 1], [0, 0 ], c='r')

在这种情况下,不对数据做任何事情的逻辑回归对我们没有帮助,但是如果我们放弃我们的x2特性并使用x1²来代替,它将看起来像这样:

X1    x1^2  |  Y
==================
-2    4       1
 2    4       1
-1    1       0
 1    1       0

现在,有一条简单的线可以分隔数据。当然,这个玩具示例一点也不像现实生活,在现实生活中,很难判断您到底需要如何更改数据,因此线性分类器将有助于您,但是,如果您在特征工程和特征选择方面投入一些时间,您的逻辑回归可能会做得非常好。

因为它是统计的重要工具

线性回归不仅适用于预测,一旦你有一个拟合的线性回归模型,你就可以了解因变量和自变量之间的关系,或者用更“ML”的语言来说,你可以了解你的特征和你的目标值之间的关系。考虑一个简单的例子,我们有关于房屋定价的数据,我们有一堆特征和实际价格。我们拟合了一个线性回归模型,得到了很好的结果。我们可以查看模型为每个特征学习的实际权重,如果这些权重显著,我们可以说一些特征比其他特征更重要,此外,我们可以说,例如,房屋大小占房价变化的 50%,每增加 1 平方米将导致房价的 10K 增加。线性回归是从数据中学习关系的强大工具,统计学家经常使用它。

因为这是学习神经网络的良好开端

对我来说,在我开始学习神经网络的时候,先学习 Logistic 回归帮助很大。你可以把网络中的每个神经元想象成一个逻辑回归,它有输入,权重,偏差,你对所有这些做点积,然后应用一些非线性函数。此外,神经网络的最后一层是一个简单的线性模型(大多数情况下)。看看这个非常基本的神经网络:

让我们仔细看看“输出层”,您可以看到这是一个简单的线性(或逻辑)回归,我们有输入(隐藏层 2),我们有权重,我们做点积,然后添加一个非线性函数(取决于任务)。考虑神经网络的一个好方法是将 NN 分成两部分,表示部分和分类/回归部分:

第一部分(左侧)试图学习数据的良好表示,这将有助于第二部分(右侧)执行线性分类/回归。你可以在这篇伟大的帖子中读到更多关于这个想法的内容。

结论

如果你想成为一名数据科学家,有很多事情要知道,乍一看,学习算法似乎是最重要的部分。现实是,学习算法在大多数情况下非常复杂,需要大量的时间和精力来理解,但只是数据科学管道的一小部分。

使用虚拟现实实现数据可视化的 5 个理由

原文:https://towardsdatascience.com/5-reasons-to-use-virtual-reality-for-data-visualisation-86cd37d5c1ee?source=collection_archive---------0-----------------------

虚拟现实能够让我们沉浸在新的环境中,这可能是数据可视化工作的下一个重大进展

世界上的数据呈爆炸式增长。

它正从每个家庭、办公室、电脑、手机、机器和人类中涌出。数据已经变得如此庞大和难以处理,以至于我们将其升级为“大数据”。因此,这些数据的可视化在帮助我们分解其复杂性方面发挥着越来越重要的作用。

虚拟现实是一种新的媒介,为数据可视化提供了很大的潜力。通过沉浸在数据中,我们可以利用提供的更大空间、更自然的交互,并以直觉的方式分析多维数据。

研究表明,生活在一个数据的世界而不是一个旁观者,可视化的效果会成倍增加。这导致“明显更好地理解 datascape 几何图形,更直观地理解数据,并更好地保留数据中的感知关系。”

许多人会认为,虚拟现实带来的 3D 空间和体验可以在 2D 屏幕上模拟。这在某种程度上是正确的,但是将虚拟现实用于数据可视化的 5 个不同原因是:

  1. 少分心

通过聚焦你的整个视野,你可以专注于目标,无论是帮助考古学家在挖掘过程中可视化感兴趣的物体的位置,还是带用户进行纳斯达克 21 年的导游之旅。

通过“出现”在数据中,您还可以获得真正的规模感,这在桌面屏幕上查看数据时很难实现。

2。更多空间

有了 360 度的空间范围,就有更多的空间来显示数据,如下面彭博的虚拟现实交易终端的概念证明。

Source: Virtual reality headset Oculus Rift meets the Bloomberg terminal (Quartz)

3。多维数据分析

我们主要使用我们的视觉来分析和解释数据,但是如果我们也可以使用我们的听觉呢?通过数据-音频关系,我们可以通过例如声音的响度、类型和方向来理解特定数据点的意义、主题和位置。

通过使用多种感官,我们可以增强处理多维数据的能力。虽然在数据可视化环境中谈论味觉和嗅觉可能有点激进,但“感觉”数据并非不可能。这在技术上可以通过触觉反馈手套实现。

4。更大的带宽用于处理数据

就像计算机一样,我们的视神经能够以大约 1 MB/s 的速度传输信息。当我们简单地阅读屏幕上的文字时,我们只使用了这一能力的 0.1%。自然,这将随着多年来发展的可视化技术而得到改善,但最终这仍然是从 2D 屏幕上读取信息。

虚拟现实让你沉浸在一个刺激的 3D 世界中,让你的大脑参与其中,并使你能够充分利用你的视神经带宽。

5。更自然的互动

在现实世界中,我们直接用手与物体互动。这让我们能够与周围的环境联系起来,更好地了解我们正在处理的物体。长期以来,我们使用键盘和鼠标作为这种交互的渠道。通过虚拟现实,我们可以回归到一种更自然的交互方式——通过物理按键、移动窗口和操纵数据流(比如在这个 VR 辅助生物标本分析)。除此之外,我们还能够在这些数据世界中漫游。

通过这些优势,我们可以提高员工效率,更轻松地进行更深入的数据分析,并更快地做出决策。

在虚拟现实中的数据可视化真正起飞之前,还有一些障碍要克服。头戴式耳机的分辨率需要提高,以便文本可以舒适地阅读,眼睛疲劳和恶心仍然是一部分人群的问题。一个关键的挑战是不要仅仅为了构建虚拟现实数据可视化而构建虚拟现实数据可视化——我们需要设计有用的可视化,利用虚拟现实的优势,并提供一种直观的交互、分析和操纵数据的方式。

随着硬件的发展和我们对这项新技术的理解日益加深,我们看到数据在虚拟现实中有效可视化只是时间问题。

参考文献

  1. Donalek,c .,Djorgovski,s .,Davidoff,s .,Cioc,a .,Wang,a .,Longo,g .,Norris,J.S .,Zhang,j .,Lawler,e .,Yeh,S. 2014。使用虚拟现实平台的沉浸式协作数据可视化。网址:http://arxiv.org/ftp/arxiv/papers/1410/1410.7670.pdf。2016 年 8 月接入。
  2. 迈克尔·托马斯。2014.利用虚拟现实理解大数据。网址:http://www . SAS . com/ro _ ro/news/SAS com/2014 Q1/virtual-reality-big-data . html。2016 年 8 月接入。

人工智能将产生超出大多数人预期的影响的 5 个原因

原文:https://towardsdatascience.com/5-reasons-why-ai-will-have-a-larger-impact-than-most-people-expect-e9d7e60dcdd3?source=collection_archive---------6-----------------------

点击诱饵—

没有什么比一篇标题为“你需要担心 Y 会发生的 X 个理由”的点击量更高的了。报纸多年来一直在这样做,以吸引读者。现在在线杂志和博客已经真正完善了这种做法。这是有道理的,因为一个好的标题可以增加读者,增加广告浏览量,增加盈利。

在过去,产生这样的标题曾经是有创造力的作家和不太严谨的编辑的工作。这些标题现在使用人工智能算法生成得更快了。参见 Lars Eidnes 关于与 RNN ( )生成链接标题的文章,虽然内容丰富,但该文章将受益于一个更有趣的标题。Buzzfeed 对他们的文章做了这样一件事,你不会相信结果!)。现在甚至整篇文章都是 AI 写的(可惜不是这篇..).目前,人工智能写作受到最小分析的限制,涵盖股票报告和体育比分等内容。然而,在实践中,几乎没有什么能阻止他们写更深入的分析。诗歌、歌曲电影都是由人工智能程序生成的,取得了不同程度的成功。

因此,我们可以假设人工智能将对新闻机构和写作产生深远的影响。但这些都是一个狭窄领域的特定用例。实际上,我可以从几乎任何领域或行业开始写这篇文章,结果都是一样的。人工智能将从根本上改变许多组织和行业,不是因为它是另一个程序,而是因为它是一种类似于互联网、云计算和区块链的变革性技术。

人工智能和机器学习(ML)算法与普通软件的不同之处与它解决问题的过程有很大关系。AI/ML 使用简单的算法学习并发现数据中的模式。它不需要任何领域知识,几乎可以在任何数据集上运行。这是一种完全灵活的技术,可以应用于任何现有的或新的问题,并且不需要深入的领域知识。人工智能工程师可以编写算法,在 MRI 扫描中识别肿瘤,而无需访问医学院或了解 MRI 的工作原理。同样的算法可以识别图像中的热狗或非热狗。同样的算法,对人类的好处略有不同。

但是考虑到许多技术已经对工业产生了重大影响。问问百视达的流媒体视频,或者问问诺基亚的安卓系统。但是,这些技术要么需要大量的专业知识和/或费用来实现。那些变革性的技术仅限于那些能够实现这一目标的公司(总是公司)。AI/ML 不受这些约束的限制。它便宜、易得、灵活,足以颠覆任何行业。

1.AI/ML 算法和技术简单,容易上手。

作为一名 AI 工程师,我实现 AI/ML 所需的知识范围可以在许多大学或网上的 9 个月课程中获得(感谢 Udacity!).算法和技术简单明了,只需要略高于平均水平的数学技能。大多数程序员或工程师的准入门槛低得令人尴尬。这确保了随着人工智能能力的增长,人工智能工程师的数量也会随之增长。我预计,随着 IBM、谷歌和脸书等公司争相培养更多的工程师,这些最小的障碍也会消失。

*当然,如果你想成为一名成熟的人工智能研究人员,你需要在课堂上花更多的时间。但是 AI 技术人员(实现的人)可以来自世界任何地方,不需要很多背景技能。

2.算法不需要领域知识

AI/ML 只不过是在数据中发现相关性的能力,即使它们不是立即明显的。在一个例子中,AI/ML 视觉应用识别图像中的形状、颜色和纹理,以帮助对图像的不同部分进行分类。这都是自动完成的。没有任何编码来区分图像中的这些特征。在很大程度上,研究人员甚至不确定为什么某些特征是孤立的。通过传递足够多的正确分类(这是一只猫/这不是一只猫)并训练系统,AI 将学习猫的特征。不需要将任何猫属性输入到算法中。

这个特性最强大的部分是领域专家不再局限于少数个人。医学或天文学等复杂领域的工作不再需要深入了解数据结构。工程师们可以应用同样的算法在任何避开这种知识的领域工作。这为许多传统上被认为是专家领域的领域(法律、医学、工程)带来了新的突破

3.AI/ML 算法是指数级的,是共享的

此外,由于 AI/ML 算法不需要任何特定领域的知识或应用,您可以使用在一个行业获得的知识,并将其应用到许多其他行业。这种知识可以跨行业共享,而不必共享知识产权或商业秘密。算法可以很容易的传递和分享。https://www.kaggle.com/是一个致力于开放创建和改进人工智能算法所需的数据和模型的社区。

以图像识别为例。用于图像识别的人工智能模型被广泛共享,甚至每年都要相互竞争。这些模型是开放的,并在整个社区中共享。这些模型的强大之处在于,它们可以用来识别几乎任何类型的图像。当然存在细微差别,但识别无人驾驶汽车街道标志所需的算法与识别 x 射线图像中的肿瘤所需的算法基本相同。一个模型的工作可以在所有其他模型中共享。

通过迁移学习,即使以前对大量数据的要求也变得更容易了,研究人员能够利用现有的训练模型,并将它们应用到定制的情况中。在 140 万张图像上训练过的 VGG 模型可以重新用于用相对较少的图像识别狗的品种。因此,处理大量数据以获得良好结果的要求大大降低了。

4.人工智能更容易被世界上更多的人使用。

ML/AI 爆炸部分是由于计算解决方案所需的计算资源的可用性。云计算允许个人获得以前无法获得的大规模计算能力,除非你是一所大型大学、组织或政府。现在,日本的一位农民可以用价值几美元的资源训练一名黄瓜分拣员。云公司在人工智能上投入了越来越多的投资。谷歌 TPU 建立硬件的唯一目的是更快更有效地解决人工智能/人工智能算法。曾经只有那些有资源的人才能解决的问题现在可以由个人来解决。原本只有少数几家公司可以真正颠覆行业的行业,现在面临着成千上万的潜在竞争对手。

5.人工智能研究是开放的、快速的和加速的。

人工智能/人工智能研究是全世界非常热门的话题。组织投入数百万调整和更新算法。目前,这些算法都是开放的,可以在科学期刊和网上获得。

有标准化的工具 Tensorflow,Caffe,Keras tools 提供了描述 AI 模型和实现它们的标准化语言。

数据变得越来越容易获得和公开。

我们现在的情况是,人工智能算法正在做出更好的模型、更多的数据和更智能的决策。这些都是以传统成本的一小部分完成的,并且可以用有限的预算和专业知识来完成。这将改变很多行业。

想象一下,

人工智能教师,每个学生一名,将指导和个性化完全适合他们学习风格的教育计划。

人工智能农场,将在没有任何人工干预的情况下监控、种植和收获作物。

人工智能购物者,将采购、协商和安排从杂货到管道的一切物品的运输。

三个简单的例子可以在他们的行业中轻松提供 10 倍的优势。这项技术离商业化已经不远了。请记住,一个公共互联网现在刚刚超过 25 岁,很容易看到它所产生的影响。

企业难以采用深度学习的 5 个原因

原文:https://towardsdatascience.com/5-reasons-why-businesses-struggle-to-adopt-deep-learning-85205e11d69a?source=collection_archive---------7-----------------------

Photo by John Baker on Unsplash

当巨大的潜力不能转化为商业利益时

更新:你现在可以用 日文 阅读这篇文章(感谢 Koki Yoshimoto)。

所以,你已经听说了关于深度学习(DL)的令人眼花缭乱的推销,并且想知道它是否实际上在生产中有效。这是公司努力解决的首要问题。常年商业利益的乐土是现实吗?

在之前的一篇文章中,我们看到了深度学习的简单业务介绍,这种技术似乎对几乎任何问题都有一个整洁的解决方案。

[## 深度学习热潮背后的真正原因

一个简单的英文解释,减去数学,统计和代码

towardsdatascience.com](/decoding-deep-learning-a-big-lie-or-the-next-big-thing-b924298f26d4)

但是,当橡胶落地时会发生什么?

衡量一项创新成熟程度的一个好方法是,理解它在销售阶段过后很久在市场上的表现。在 Gramener 人工智能实验室,我们一直在研究深度学习的进展,并将它们转化为映射到客户问题的具体项目。

我将分享过去一年我们在 DL 解决方案项目实施中的一些心得。这是一个大杂烩,有成功的故事,也有一些挫折,我们看到最初的魅力由于地面上的障碍而逐渐消失。

以下是 DL 项目嘎然而止的五个原因,尽管它们是怀着最美好的愿望开始的:

1.接近科幻小说的期望

Source: GIPHY

是的,随着自动驾驶汽车、无人机送披萨和机器读取大脑信号,人工智能正在迅速成为现实。但是,其中许多仍在研究实验室中,只能在精心策划的场景下工作。

生产就绪的产品和仍在想象中的产品之间只有一线之隔。企业经常误解这一点。在解决雄心勃勃的挑战的喜悦中,团队深入到另一边。

这就是人工智能觉醒可能发生的地方,促使企业变得过度谨慎,并后退许多步。通过一些尽职调查,必须确定业务就绪的 DL 用例。一个人可以雄心勃勃,挑战极限,但关键是少承诺多兑现。

2.缺乏数据来满足巨头的胃口

Performance of analytics techniques vs data volume, by Andrew Ng

分析带来魔力是因为数据,而不是尽管数据不存在。不,深度学习没有解决数据不可用这一日益恶化的挑战。如果说有什么不同的话,那就是 DL 对数据的胃口更加贪得无厌。

要建立一个简单的基于面部识别的考勤系统,员工的面部照片是所需的训练数据。这些照片可能是现场录制的,也可能是带有某些特征变化(方向、眼镜、面部毛发、灯光)提交的..).通常,这样的数据收集会很快变成一个小型项目。

项目发起人通常假定这些数据是可用的或容易收集的。在尽了最大努力之后,他们最终得到的只是部分数据,这些数据提供了中等的准确性。这种轻微的不足可能意味着生产级解决方案和一个有吸引力的研究原型之间的差异。

3.大量的训练数据,但没有标记

Labeled dataset on Sports actions from UCF

当一个由一百万个数据点组成的数据库可供个人使用时,这是否足以让 DL 展现魔力?嗯,没那么快。训练数据需要煞费苦心的标注才能让模型学习。这一点经常被忽视。

算法需要在图片周围画出方框来学习识别人物。面孔需要被贴上名字标签,情绪必须被标记,说话者的声音必须被识别,甚至一个数字表也应该用详细的元数据来描述。

有人可能会说,哇,工作量真大。但这是教授 DL 模型所需要付出的努力。后备选项是更痛苦的过程 特征提取 (判断眼睛或鼻子是否最能区分人脸的手工工作)。

4.当成本效益权衡不合理时

Photo by rawpixel on Unsplash

收集和标记数据的努力,加上 GPU 级别的计算可能会被证明是昂贵的。再加上持续的努力,通过贴标签、培训和调整来维护生产模型。现在,总拥有成本飙升。

在某些情况下,人们很晚才意识到,为人工检查和分类配备人员比进行这种繁琐的工作要便宜。谈到大容量和可伸缩性,DL 又开始有意义了。但是,并不是所有的企业在开始时都将这一需求作为优先事项。

随着 DL 研究的稳步发展,这种情况每天都在发生变化。因此,尽早检查 DL 总拥有成本至关重要。有时,推迟投资直到成本经济变得有利可能是明智的。

5.当洞察力如此聪明以至于人们被吓到时

Photo by sebastiaan stam on Unsplash

这种担忧与此截然相反。有些用例被证明是 DL 的最佳选择,在这些用例中,数据可用性和业务需求已经成熟。当星星排成一线时,模型就变成了预言!

这里的挑战是,模型知道的太多了,甚至在人们说出它的必要性之前。这时它穿过了令人毛骨悚然的区域。在感觉到需求之前交叉销售产品,或者通过跟踪内部网聊天来检测更深层次的员工断开连接,这可能很有诱惑力。

但这些引发了道德困境的问题,或对客户或员工的数据隐私产生了怀疑。当怀疑一个用例是否会疏远目标受众时,公司必须让它通过,尽管潜在的可能性就在眼前。记住,权力越大,责任越大。

摘要

5 Reasons why Deep learning projects fizzle out

这是深度学习令人兴奋的日子,有着恒星般的进步和无限的承诺。但是,要将这种不受约束的力量转化为实际的商业利益,我们必须小心这五个陷阱。

确保数据的可用性、为培训进行标记的可行性,并验证企业的总拥有成本。最后,在不吓跑用户的情况下,找出能让用户兴奋和有能力的正确用例。

你可能想知道相对于其他技术,什么时候必须使用深度学习。总是从简单的分析开始,然后通过统计进行更深入的探索,只有在相关的时候才应用机器学习。当所有这些都不具备时,一些替代的专家工具集的时机已经成熟,拨入深度学习。

如果你觉得这很有趣,你会喜欢我写的这些相关文章:

对数据科学充满热情?随时在LinkedIn上加我,订阅我的 简讯

下面是这篇文章的 4 分钟视频。

jupyter 笔记本糟糕的 5 个原因

原文:https://towardsdatascience.com/5-reasons-why-jupyter-notebooks-suck-4dc201e27086?source=collection_archive---------0-----------------------

How it feels like managing jupyter notebooks ( Complexity © https://www.flickr.com/photos/bitterjug/7670055210 )

大约 3 年以来,我 60%的时间都在使用 jupyter 笔记本。我认为它们是许多任务的绝佳工具,如探索性数据分析、结果展示、与同事分享见解。但我越来越多地得出结论,jupyter 笔记本电脑不可能是最后的选择,尤其是在致力于构建通过 ML、DS、AI 等方式实现的产品的团队中。让我们看看为什么?

1.几乎不可能实现良好的代码版本控制

您是否在一个数据团队中工作,该团队相互协作并可能使用相同的笔记本电脑?可能你试图合并两个 jupyter 笔记本。由于 jupyter 笔记本存储为大的 JSON 文件,合并两个笔记本实际上是不可能的。这是不好的,因为我们不能像一个好的 git 工作流那样为软件团队应用工具来拉取请求和评审。

2.没有 IDE 集成,没有林挺,没有代码风格的修正

有一次,我在 slack python 开发团队中发布了 jupyter 笔记本的一个片段。我说不出我对他们责备我没有遵守 pep 会议的方式感到多么羞愧。Jupyter 没有林挺,这意味着你可以编写非常糟糕的代码。只要试着用林挺把你的代码复制到你喜欢的代码编辑器中,你就会明白我的意思。数据科学家不是软件工程师,因此管理他们代码质量并帮助提高代码质量的工具非常重要。

3.很难测试

我的一个同事曾经说过,当你用 jupyter 笔记本工作时,你基本上忘记了软件工程。他是对的!合理地组织你的代码,把你的代码放入函数中,然后为它们开发测试,这太难了。我是测试驱动开发的超级粉丝,我只能建议当你开发严肃的数据管道时,尽快离开 jupyter 笔记本。Jupyter 笔记本是一个探索而不是生产的工具,只要你想重现一些实验,经常运行笔记本。扔掉你的 jupyter 笔记本,根据测试驱动开发原则开发你的 python 脚本。(是的,你也可以使用 TDD 开发数据产品,你只需要把你的设备做好!)

4.jupyter 的非线性工作流程

在 jupyter 笔记本的单元格之间跳来跳去,有没有破坏过自己目前的工作状态?什么事?我知道你并不孤单,这种事经常发生在我身上。这种在细胞间跳跃的方式会导致不可重复的实验。在笔记本的单元格之间进行编码和跳转的交互方式既是 jupyter 笔记本最好的特性之一,也是它最大的弱点。

5.Jupyter 不适合运行长时间的异步任务

我喜欢说大数据意味着大问题。通常,当你用一个适合你记忆的小数据集来处理一个问题时,你就开始了。你会发现你的机器已经不够好了。然后你可以跳到像 spark、dask 和 distributed 这样的工具上,在你的笔记本上运行它们。我建议不要这样做。如果您完成了第一次数据探索,并希望进行大规模实验,甚至完成数据管道。从 jupyter 笔记本中取出您的代码,启动一个适当的 python 项目,创建 fixtures,编写测试,然后将您的应用程序部署到集群中。这将对你构建可靠的数据驱动产品有很大帮助。

推荐

如果你面临这些问题,我认为你必须重新审视你的数据科学工作流程。我仍然喜欢使用 Jupyter Notebook,尤其是在第一次查看数据集和绘制大量图表时。然而,我强迫自己尽可能快地从处理笔记本电脑中的复杂工作负载转移。克服这里提到的一些缺点的一个非常有前途的可能方法是我的同事 Michele 的 pynb 项目或者使用像 T2 氢 T3 这样的工具。

为什么应该在数据科学项目中使用交叉验证的 5 个理由

原文:https://towardsdatascience.com/5-reasons-why-you-should-use-cross-validation-in-your-data-science-project-8163311a1e79?source=collection_archive---------2-----------------------

交叉验证是数据科学家工具箱中的一个重要工具。它允许我们更好地利用我们的数据。在我向你展示我使用交叉验证的五个理由之前,我想简单回顾一下什么是交叉验证,并展示一些常用的策略。

当我们使用一些数据建立机器学习模型时,我们通常会将数据分成训练集和验证/测试集。训练集用于训练模型,验证/测试集用于在它从未见过的数据上验证它。经典的方法是做一个简单的 80%-20%的分割,有时有不同的值,如 70%-30%或 90%-10%。在交叉验证中,我们不止做一次分割。我们可以做 3 次、5 次、10 次或任何 K 次分割。这些分裂叫做折叠,我们可以用很多策略来创建这些折叠。

Diagram of k-fold cross-validation with k=4.

简单的 K-Folds —我们把数据分成 K 份,让我们用 K=3 作为一个玩具的例子。如果我们的数据集中有 3000 个实例,我们将它分成三部分,第 1 部分、第 2 部分和第 3 部分。然后,我们建立三个不同的模型,每个模型在两个部分进行训练,在第三部分进行测试。我们的第一个模型在第 1 部分和第 2 部分进行训练,在第 3 部分进行测试。我们的第二个模型在第一部分和第三部分进行训练,在第二部分进行测试,依此类推。

漏掉一个——这是交叉验证最极端的方式。对于数据集中的每个实例,我们使用所有其他实例构建一个模型,然后在选定的实例上测试它。

分层交叉验证——当我们将数据分成多个文件夹时,我们希望确保每个文件夹都能够很好地代表整个数据。最基本的例子是,我们希望每个文件夹中不同类的比例相同。大多数情况下,这只是随机发生的,但有时,在复杂的数据集中,我们必须对每个折叠执行正确的分布。

以下是我认为你应该使用交叉验证的五个理由:

1。使用你所有的数据

当我们只有很少的数据时,将其分成训练集和测试集可能会留给我们一个很小的测试集。假设我们只有 100 个例子,如果我们做一个简单的 80-20 分割,我们将在测试集中得到 20 个例子。这是不够的。我们能在这个舞台上得到几乎所有的表演完全是因为运气。当我们有一个多类问题时,问题就更严重了。如果我们有 10 个类,只有 20 个例子,那么平均每个类只有 2 个例子。只在两个例子上测试任何东西都不能得出任何真正的结论。

如果我们在这种情况下使用交叉验证,我们建立了 K 个不同的模型,因此我们能够对我们的所有数据进行预测。对于每个实例,我们通过没有看到这个例子的模型进行预测,因此我们在测试集中得到 100 个例子。对于多类问题,我们平均每类得到 10 个例子,比只有 2 个要好得多。在我们评估了我们的学习算法(参见下面的#2)之后,我们现在可以在我们的所有数据上训练我们的模型,因为如果我们的 5 个模型使用不同的训练集具有相似的性能,我们假设通过在所有数据上训练它将获得相似的性能。

通过进行交叉验证,我们能够使用我们所有的 100 个例子进行训练和测试,同时评估我们的学习算法在以前从未见过的例子上。

2。获取更多指标

正如#1 中提到的,当我们使用我们的学习算法创建五个不同的模型,并在五个不同的测试集上进行测试时,我们可以对我们的算法性能更有信心。当我们对测试集进行单次评估时,我们只能得到一个结果。这个结果可能是因为偶然,也可能是因为某种原因设置的测试有偏差。通过训练五个(或十个)不同的模型,我们可以更好地理解正在发生的事情。假设我们训练了五个模型,并以精确度作为衡量标准。我们可能会在几种不同的情况下结束。最好的情况是,我们的准确度在所有折叠中都是相似的,比如 92.0、91.5、92.0、92.5 和 91.8。这意味着我们的算法(和我们的数据)是一致的,我们可以相信,通过在所有数据集上训练它并在生产中部署它,将会产生类似的性能。

然而,我们可能会在一个稍微不同的场景中结束,比如 92.0,44.0,91.5,92.5 和 91.8。这些结果看起来很奇怪。看起来我们的一个折叠来自不同的分布,我们必须回去并确保我们的数据是我们认为的那样。

最坏的情况是我们的结果有相当大的变化,比如 80、44、99、60 和 87。这里看起来我们的算法或我们的数据(或两者)不一致,这可能是我们的算法无法学习,或者我们的数据非常复杂。

通过使用交叉验证,我们能够获得更多的指标,并得出关于我们的算法和数据的重要结论。

3。使用模型堆叠

有时我们想要(或者不得不)建立一个模型管道来解决一些问题。以神经网络为例。我们可以创建许多层。每个层可以使用预览层输出,并学习我们的数据的新表示,因此最终,它将能够产生良好的预测。我们能够训练这些不同的层,因为我们使用反向传播算法。每一层计算其误差,并将其传递回前一层。

当我们做一些类似的事情,但不使用神经网络时,我们不能用同样的方式训练它,因为并不总是有明确的“错误”(或导数)可以传递回来。

例如,我们可以创建一个随机的森林模型,它可以为我们预测一些事情,然后,我们想做一个线性回归,它将依赖于以前的预测并产生一些实数。

这里的关键部分是我们的第二个模型必须学习我们的第一个模型预测这里的最佳解决方案是为每个模型使用两个不同的数据集。我们在数据集 a 上训练我们的随机森林。然后我们使用数据集 B 来使用它进行预测。然后,我们使用数据集 B 的预测来训练我们的第二个模型(逻辑回归),最后,我们使用数据集 C 来评估我们的完整解决方案。我们使用第一个模型进行预测,将它们传递给我们的第二个模型,然后将其与实际情况进行比较。

当我们的数据有限时(大多数情况下),我们无法真正做到这一点。此外,我们不能在同一个数据集上训练我们的两个模型,因为这样一来,我们的第二个模型就会学习第一个模型已经看到的预测。这些可能会过拟合或至少有更好的结果比一个不同的设置。这意味着我们的第二个算法不是根据它将被测试的内容来训练的。这可能会在我们的最终评估中导致难以理解的不同效果。

通过使用交叉验证,我们可以用之前描述的相同方式对数据集进行预测,因此我们第二个模型的输入将是对我们第一个模型从未见过的数据的真实预测。

4。处理相关/分组数据

当我们对数据进行随机训练测试分割时,我们假设我们的例子是独立的。这意味着,通过了解/看到一些实例不会帮助我们理解其他实例。然而,情况并非总是如此。

考虑一个语音识别系统。我们的数据可能包括不同的发言者说不同的话。让我们看看语音数字识别。在这个数据集中,例如,有 3 个发言者和 1500 个记录(每个发言者 500 个)。如果我们进行随机分割,我们的训练集和测试集将共享同一个说话者说的相同的话!当然,这将提高我们的算法性能,但一旦在新的扬声器上测试,我们的结果会更差。

正确的做法是拆分扬声器,即使用两个扬声器进行训练,第三个用于测试。然而,我们将只在一个扬声器上测试我们的算法。这是不够的。我们需要知道我们的算法在不同的扬声器上表现如何。

我们可以在说话者层面使用交叉验证。我们将训练 3 个模型,每次使用一个扬声器进行测试,另外两个用于训练。这样,我们将能够更好地评估我们的算法(如上所述),并最终在所有扬声器上建立我们的模型。

5。参数微调

这是进行交叉验证的最常见和最明显的原因之一。大多数学习算法需要一些参数调整。它可以是梯度增强分类器中的树的数量、神经网络中的隐藏层大小或激活函数、SVM 中的核的类型等等。我们想为我们的问题找到最好的参数。我们通过尝试不同的价值观并选择最好的来做到这一点。有许多方法可以做到这一点。它可以是手动搜索、网格搜索或一些更复杂的优化。然而,在所有这些情况下,我们不能在我们的训练测试中这样做,当然也不能在我们的测试集中这样做。我们必须使用第三个集合,一个验证集合。

通过将我们的数据分成三组而不是两组,我们将解决我们之前谈到的所有相同的问题,特别是如果我们没有很多数据的话。通过进行交叉验证,我们能够使用一组数据完成所有这些步骤。

结论

交叉验证是一个非常强大的工具。它帮助我们更好地使用我们的数据,并为我们提供更多关于算法性能的信息。在复杂的机器学习模型中,有时很容易不够重视,并且在管道的不同步骤中使用相同的数据。在大多数情况下,这可能导致良好但不真实的性能,或者在其他情况下引入奇怪的副作用。我们必须注意,我们对自己的模型充满信心。当我们处理数据科学项目中的重大挑战时,交叉验证会对我们有所帮助。

如果你想了解更多关于数据科学管道中可能出现的不同陷阱,欢迎你阅读我关于如何与数据科学撒谎的帖子

如果你想阅读做某事的其他 5 个理由,欢迎阅读我的文章 5 个理由“逻辑回归”应该是成为数据科学家的第一件事

启发您下一个数据科学项目的 5 种资源

原文:https://towardsdatascience.com/5-resources-to-inspire-your-next-data-science-project-ea6afbe20319?source=collection_archive---------1-----------------------

不要担心——开始是最难的部分

Facebook 2010

入门指南

我们接触到看似无穷无尽的数据科学职业建议,但有一个话题没有得到足够的重视:兼职项目。副业很棒,原因有很多,但我喜欢朱莉·卓在下面简单的文氏图中的描述:

Image Source

兼职项目是一种将数据科学应用于目标驱动程度较低的环境中的方式,这种环境可能比你在工作或学校中经历的环境更少。它们提供了一个的机会,让你可以随心所欲地使用数据,同时学习实用技能。

除了有趣和学习新技能的好方法之外,兼职项目也有助于你求职。招聘人员和经理们喜欢看到那些显示你对数据感兴趣的项目,而不仅仅是课程和工作。

问题是

你有没有过想开始一个新项目却又决定不了要做什么的经历?首先,你花几个小时集思广益。然后几天。在你意识到之前,几个星期过去了,没有任何新的发货。

这在所有领域的自驱动项目中极为常见;数据科学也不例外。有远大的抱负很容易,但要实现却困难得多。我发现数据科学项目最难的部分是开始并决定走哪条路。

在这篇文章中,我的目的是提供一些有用的提示和资源,帮助您开始下一个数据科学项目。

考虑

在我们进入下面的资源之前,在考虑数据科学项目时,有几件事情值得注意。

你的目标

数据科学是一个极其多样化的领域;这意味着几乎不可能将每个概念和工具都压缩到一个项目中。你需要挑选出你想进一步发展的技能。一些相关的例子包括:

  • 机器学习和建模
  • 探索性数据分析
  • 度量和实验
  • 数据可视化和通信
  • 数据挖掘和清理

请注意,虽然很难将每一个概念结合起来,但您可以将其中的一些结合起来,例如,您可以收集数据进行探索性的数据分析,然后以一种有趣的方式将其可视化。

基本上,如果你想成为一名更有效的机器学习工程师,很可能你不会通过做一个 data viz 项目来实现这一点。你的项目应该反映你的目标。这样,即使它没有爆炸或发现任何突破性的见解,你仍然可以带着胜利和一堆应用知识离开。

你的兴趣

就像我们之前提到的,副业应该是令人愉快的。不管我们是否意识到,我们每天都会问自己数百个问题。在今天剩下的时间里,试着比平时更多地关注这些问题。你会对发生的事情感到惊讶。你可能会发现你更有创造力,对你认为的某些事情更感兴趣。

现在将它应用到你的下一个数据科学项目中。你好奇如何对你的晨跑进行分类吗?想知道川普如何以及何时在推特上发布他做的事情吗?对体育史上最伟大的一炮而红的奇迹感兴趣吗?

可能性确实是无穷无尽的。让你的兴趣、好奇心和目标驱动你的下一个项目。一旦你检查了这些框,让我们得到启发。

Image Source

灵感

我们很容易认为自己是独立的,但事实证明情况并非如此。如果你足够努力,总会有其他人有相似的兴趣和目标。这种效应对思维能力有着难以置信的强大作用。

“没有什么是原创的。从任何能激发灵感或激发你想象力的地方偷东西。”—吉姆·贾姆什

找到你喜欢或欣赏的项目,然后在上面加入你自己的想法。把它们作为出发点,创作出新的、独一无二的原创作品。我最喜欢的一些灵感来源如下:

数据漂亮

我可以花几个小时浏览这些数据可视化的子集。你会对人们想出的所有独特的想法和问题感兴趣。还有每月一次的选择数据集的挑战,用户的任务是以最有效的方式可视化它。根据最佳时间排序,以获得即时满足。

卡格尔

如果我没有提到在线数据科学的典型代表,那将是我的失职。有几种方法可以有效地利用 Kaggle 获取灵感。首先,您可以查看趋势数据集,并思考利用这些信息的有趣方式。如果你对机器学习和例子本身更感兴趣,那么随着时间的推移,内核的特性会变得越来越好。

布丁

的确,视觉散文是一种新兴的新闻形式。布丁最能体现这种运动。该团队使用原始数据集、原始研究和互动来探索大量有趣的话题。

538

经典,但至今依然不错。我是说得了吧,内特·西尔弗才是男人。数据驱动的博客涉及从政治到体育到文化的方方面面。更不用说,他们刚刚改进了他们的数据导出页面。

走向数据科学

最后,我要为 TDS 团队大声欢呼,因为他们聚集了这群充满激情的聪明人,让他们在数据科学领域取得成就并帮助他人成长。在任何一天,浏览最近的故事都会给你带来很多有趣的项目想法。

包扎

兼职项目不仅在我的整个开发过程中极大地帮助了我,而且它们通常也很有趣。最近,数据科学作品集上出现了越来越多的精彩内容。如果有兴趣,我强烈推荐查看以下链接:

任何事情最难的部分就是开始。我希望上面的提示和资源能够帮助您完成并交付下一个数据科学项目。我会留意的。

感谢阅读!如果你喜欢这篇文章,请继续向鼓掌按钮展示你的爱,看看我最近的一些项目:

对更多的帖子感兴趣吗?请务必关注我并订阅下面的我的简讯以接收任何新内容。想了解更多关于我和我在做什么,请查看我的网站。

2017 年西班牙大数据的 5 个收获

原文:https://towardsdatascience.com/5-takeaways-from-big-data-spain-2017-56ce76670233?source=collection_archive---------6-----------------------

我最近有机会参加 2017 年西班牙大数据大会,这是欧洲关于大数据、人工智能、云技术和数字化转型的三大会议之一。于 2017 年 11 月 16 日、17 日举行。演讲者来自谷歌、优步、亚马逊、脸书、Spotify 和其他顶级公司,讨论范围从最先进的大数据基础设施到深度学习,从区块链到贝叶斯推理。由于会谈是在 4 个平行的轨道上进行的,我将只写一个摘要和我所参加的那些会谈的要点。在文章的最后,你会发现我对这次会议的 5 点看法。

披露者:我是一名数据科学家,主要兴趣是人工智能,其次是 ML 模型服务、大规模数据分析和软件工程。因此,我对我决定参加的会议有偏见的选择。

5 个关键要点

TL;大卫:对于那些喜欢浏览阅读材料,花不超过 1-2 分钟的人来说,这里是从这两天的谈话和对话中获得的 5 个关键点:

  1. 主动学习(人在循环中)一旦人工智能出现在工人日常任务的最前沿,它就会在这里停留下来
  2. 强化学习应用在电子游戏上只是冰山一角。我们将很快看到 RL 利用深度学习在生产中应用于许多现实世界的问题。
  3. 自动机器学习即创建机器学习工具,这些工具可以创建能够解决任务的机器学习模型,这是一个相关的趋势。数据科学家将能够更加敏捷,专注于重复性较低的任务。
  4. 深度学习正在大量进入时间序列预测。不同工具的混合被证明能够产生很好的结果来对堆叠/多模态信号中的事件进行分类。
  5. 似乎是现在数据工程中真正的交易,我们几乎再也听不到关于批处理的消息了。所有的数据管道目前都是围绕流构建的,每个人都在转换或最近转换到 kappa 架构,其中流通常是主要元素/焦点。

第一天

人在循环中:管理团队的设计模式——Paco Nathan(奥莱利学习小组主任)

Paco Nathan 提出了以下(复杂的)研究问题:非 AI 专家能否基于实例而非代码教会机器执行复杂的工作?

在过去的几十年里,大数据(1997 年)+大计算(~2006 年)+大模型(~2009 年)的混合创造了一个人工智能可以集成到真实产品的环境。但是等式中缺少了一个组成部分:人类平等。于是,主动学习 (human on the loop)被引入,概括来说就是半监督学习的一个特例。其背后的基本思想是,当算法对某些预测不太有信心时(即边缘情况),获得人类的帮助。与监督学习相比,主动学习的优势在于前者需要更少的人工标记数据,因为它能够处理路由决策(自动化)。

在媒体领域有一个利基,这个垂直领域不包括尖端的人工智能技术。示例:

  • (教程)视频的抄本
  • 用人工生成的本体扩充知识。
  • 上下文消歧

使用主动学习的公司:CrowdFlower(激活收集数据的人群,以反馈自我报告准确度低于特定阈值的 ML 模型),Stitch Fix(产品个性化),Clara Labs(半自动投标),B12(自动商业设计,仅最后一英里人类)。

基于人在回路的设计模式,人工智能专业知识可能会从销售、营销和客户服务团队中产生,这些团队对客户的需求有着至关重要的见解。

资源:

  • nb transom(【https://github.com/ceteri/nbtransom】T2)是一个在 Jupyter 笔记本中编程读/写单元格的工具,它预测了 Jupyter 中即将到来的协作特性。O'Reilly 用于管理机器学习管道的笔记本。
  • prodigy(https://prodi.gy/)是一个由主动学习驱动的注释工具,用于帮助标记与实体识别、意图检测或图像分类相关的示例。

外卖理念:

一旦人工智能在工人的日常任务中占据重要位置,主动学习(以人为本)将会继续存在。这并不意味着取代员工,而是借助人类的专业知识来利用人工智能。这就是为什么大团队开始成为大数据+大计算+大模型公式的一部分。

合作愉快:超越 JVM w/Spark 的大数据——Holden Karau,提交人 Apache Spark,Google

魅力四射且广为人知的霍尔登·卡劳吸引了所有人的注意力,他以“我们都应该友好相处,我们都有同样的记忆错误”“这个演讲包含了很多关于猫的图片,如果你不喜欢猫的,那你现在就来错地方了:)”开始。

Holden 分享了对大数据生态系统当前状态的务实观察,以及大多数数据处理工具都构建在 JVM 上,而数据科学库通常用 Python 实现的事实。PySpark 通常被使用,但是它在设计上有一些严重的性能障碍。

那么,如何弥合这两个世界之间的差距呢?Apache Arrow 是目前最有希望将数据从 JVM 中取出的解决方案。其他一些项目,如阿帕奇光束达斯克也值得关注。

外卖理念:

像我们这样的 PySpark 用户应该密切关注 Apache Arrow,它承诺未来会有性能改进。其次,尽快学会如何使用 Dask。

深度强化学习:星际争霸学习环境——Gema parreo Piqueras,数据科学家,BBVA

gema.parreno.piqueras 的这个演讲是最有趣的一个。不幸的是,所有会谈的时间跨度都是一样的,而且非常有限,在这种情况下,我错过了一个多小时的时间来从展示的项目中获得更多的见解。

作为一个主题介绍,强化学习是一种机器学习算法,它允许软件代理和机器自动确定特定上下文中的理想行为,以最大化其性能。

Gema 强调,代理人自动玩的视频游戏只是概念的简单证明。强化学习有许多日常应用,如试图在人体器官内生存的人工细菌、库存管理中的运输时间减少、制造中关于物体处理的知识等。

我们必须考虑人类和机器的合作

试错法:代理人必须尝试许多行动,并找到优化报酬收集的方法。债权转让问题:一个行为的结果可能不会在该行为之后立即出现。在这类问题中,时间是一个非常重要的因素,因为回报可能在长期出现(需要规划)。

实时决策涉及在开发探索之间的基本选择,前者旨在根据当前信息做出最佳决策,后者从根本上引入更多数据,帮助代理更好地了解环境。这是一种基本的权衡,因为最好的长期战略可能需要做出短期牺牲。最棒的是:收集足够的信息来做出最好的整体决策。

https://arxiv.org/pdf/1708.04782.pdf

强化学习的目标是通过从环境中学习来最大化一种叫做行为的策略。越深入,策略越大。星际争霸 2 已经作为 RL 环境发布。向代理人提出具有挑战性的政策是非常复杂的。 Atari-net 是第一个基线,是一个简单的架构改编,成功地用于迷你游戏上的 Atari 基准和 DeepMind 实验室环境。由于可以采取大量可能的行动,所以需要使用神经网络。引入了空间政策,这是一种完全不同的范式:不再是“向右走,向上走,做点什么”之类的决策。

https://arxiv.org/pdf/1708.04782.pdf

Gema 为《星际争霸 2》AI workshop 2017(暴雪+ DeepMind)做出了贡献,展示了一个脚本化的代理人,在带有执政官单位的“幻觉 SC2 地图”中运行,以复杂的方式探索地图,并尽可能早地产生幻觉,从而获得了最先进的分数:

有趣的资源:https://github.com/soygema。Gema 正在建立一个关于“pySC2 迷你游戏社区策划列表”的社区。

外卖理念:

视频游戏上的强化学习只是人工智能领域即将到来的第一步。因此,围绕如何提高 agent 在复杂环境中的性能(使用 DL),仍需要做大量的研究。

这个演讲一开始就清晰而全面地回顾了数据库的历史、定理以及我们是如何到达那里的,为什么 NoSQL 出现了,它到底意味着什么,它解决了什么问题。然后认为,由于过去几年在分布 RDBMS 方面所做的改进,SQL 赶上来了,现在是解决与 NoSQL 所解决的同类问题的一个重要的替代方法。Citus 或 PostgresXL 等支持分发 PostgreSQL 的项目是值得考虑的新兴参与者。

作为 FindHotel 的大量 PostgreSQL 用户,尝试其中一种解决方案无疑是我们必须探索的一个想法,以便解决我们当前的扩展问题。

有趣的资源:https://www.citusdata.com/https://www.postgres-xl.org/

使用 GPU、Kubernetes、Istio 和 TensorFlow 在 AWS 上从头构建 Google 的 ML 引擎——Chris Fregly,PipelineAI 创始人兼研究工程师

PipelineAI 专注于数据科学管道的末端,即将数学模型投入生产。克里斯声称要“逆转将模型投入生产的谷歌云 ML 系统”,为“企业中的每一个实时预测提供标准的运行时间”。他们不是第三方服务,他们可以在任何云系统中部署他们的服务。他们的技术基于现在流行的 Kubernetes 和 istio.io。

Chris Fregly 提出了“生产/服务第一”的思想:从笔记本电脑持续部署。他指出,目前的最新研究可以在这里找到TensorFlow LiteNvidia Tensor-RT

根据客户需求的不同,所提出的解决方案是非常多样的,但主要思想是将 bin 烧入 docker 中,这是使模型可执行所需要的一切。这允许很容易地改变运行时类型(GPU 可能没有 CPU 快)。模型可以使用卡夫卡主题的数据。从笔记本直接部署是可能的,加速了团队的迭代时间。回滚是非常容易的。费用也很重要:它们提供了跨云的自动转换(AWS 到 GC,反之亦然),以便在任何时候都能获得最好的交易。

我们发现这是一个热门话题,例如,在 FindHotel,我们正在构建自己的框架来包装我们的数据科学家的 ML 代码,并将其转化为生产就绪的 API。但是,这需要从头开始做大量的工作,我们不具备像 PipelineAI 这样的项目所提供的所有功能和灵活性。

外卖理念:

N 现在,数据科学在实际生产环境中的影响力越来越大,重要的是允许数据科学家比以往任何时候都更快地迭代,通过提供笔记本电脑来一键部署模型,将流量转移到获胜模型,通过在任何给定时刻选择最便宜的云提供商来削减成本,即时查看和监控实时预测,对实时流数据进行无限模型再培训等。

走向生物学似是而非的深度学习——IBM 数据科学家尼古拉·曼切夫

尼古拉致力于人类水平的性能研究。问题是人类的大脑是否像人类一样工作。NNs 的主力是反向传播,但人脑中正在发生完全不同的事情:早期层的突触变化应该取决于下游层的连接。但是没有证据表明这种过程发生在新皮层。“学习过程,就其目前的形式而言,并不是一种合理的学习模式”。

认知科学表明,真正像人类一样学习和思考的机器将不得不超越当前的工程趋势,无论是在学习什么和如何学习方面。尼古拉揭示了赋能 AI 有 3 个主轴:1。建立支持解释和理解的世界因果模型,而不仅仅是解决模式识别问题;2.物理学和心理学直觉理论的基础学习,以支持和丰富所学知识;第三。利用组合性和学会学习来快速获取知识,并将其概括到新的任务和情况中。

有人提出了一些修复方法,从大脑中学习如何改进最先进的神经网络。一些例子是使用多隔室神经元[GLR17] 通过去除突触重量转运[LCTA14] 和来使用局部反向传播。首先,神经网络通常运行在大量的标记数据上,但大脑几乎一直在以无监督的方式学习,并且只需要很少的例子就能很好地概括。其次,知识转移允许使用类似的已知问题的解决方案来解决未知的问题。关于这第二点,已经进行了一些研究,使用 NNs 从玩游戏的人学习短时间,然后允许机器继续玩游戏(也称为模仿演员的方法);结果比深度 Q-网络好得多。**

人工智能在人类很快学会的任务中非常失败的非常有趣的例子:Atari 的冻伤游戏(当需要临时延长计划以确保代理人可以完成子目标时,人工智能有麻烦)和人物挑战(需要大量的例子才能表现良好)。

你可以找到神经科学借用的许多更有趣的机制,如经验回放、工作记忆、高效学习、幻觉、规划等。你应该看看 HKSB17,神经科学启发的人工智能http://www . cell . com/neuron/pdf/s 0896-6273(17)30509-3 . pdf建造像人一样学习和思考的机器https://arxiv.org/pdf/1604.00289.pdf

外卖理念:

神经科学是理解和帮助人工智能更快发展的关键,反之亦然。理解和模仿人脑背后增强人类知识和学习的机制将激励我们追踪人工智能的未来发展。

大数据,大质量?——Irene gonzálvez 技术产品经理@ Spotify

艾琳讲述了他们如何确保 Spotify 的数据质量,此前她了解到这一“艰难之路”(2015 年一个充满事故的艰难夏天)的重要性。他们达到了 Kafka 和 Hadoop 的极限,数据几乎晚了一天才到达。

在 Spotify,他们将数据质量理解为“在特定环境下服务于其目的的数据”。深入挖掘,高质量的数据具有以下特征:

  1. 及时:数据在指定的 SLO 中可供使用。
  2. 正确性:就某些规格而言,数据是正确的。
  3. 完整性:解决某个业务案例所需的所有数据都是可用的。
  4. 一致性:不同系统之间的所有数据都是同步的。

Spotify 内部开发了一些工具来处理数据质量:

  1. DataMon:当数据不符合指定的 SLO 时,向管道所有者和工程师发出警报。它监控端点(保存生成的数据和消费的数据的存储)、组件(元数据、后端、库……)和系统(前两者的组合)。它有助于检测延迟数据的上游依赖性。它提供了有关数据事件、联系人、附加文档等信息

DataMon from Spotify

2.数据计数器:收集来自不同数据处理框架(如数据流或 Hadoop)的指标。这帮助他们迁移到谷歌云。向两个系统添加了指标以检测一致性(两个平台上的数据计数相等)。它可以帮助检测欺诈者(同时播放更多的播放列表)。

Data Counters

3.MetriLab。数据计数器上的规则(如果播放的播放列表增加 X%…)。这个工具允许非常简单的异常检测。他们拒绝使用 ML,因为他们想使用可解释的算法,降低误报率。

Spotify 数据团队的下一步是什么?构建用于异常检测的 algo 库(ML4ALL)。提供“即插即用”更多算法的基础设施。提供调整算法的参数建议。Spotify 端策略:1。使用指标来了解数据集何时符合“良好”质量。2.确定哪些数据集质量好。

外卖创意:

从大处着眼:了解您组织的痛点。从小处着手,从现在开始:学会分清轻重缓急。数据质量不是附加物:洞察力只能和数据一样好。

到 2025 年,数据将增长 10 倍(163 zb/年)。关键数据 20%和超关键数据 10%。

流 SQL 的基础——学会爱上流&表理论——Tyler aki dau,高级软件工程师@ Google

由于 Apache Beam 是我们正在密切关注的项目,并且可能会考虑在某个时候改进我们当前的 kappa 架构,因此我们非常期待这次谈话。

该演示给出了一些有见地的想法,即表和流非常相似,可以互换使用:表是静止的数据,可以转换为流,而流是运动的数据,可以变成表。事实上,这就是发生在 MapReduce 和许多其他数据处理系统中的情况。

Apache Beam 在很大程度上依赖于这一理论来提供一个 SDK,允许您编写一个独特的管道来处理两种模式下的数据:批处理或流。可能不是我们现在可以利用的解决方案,但肯定是我们会关注的项目。

外卖理念:

表和流非常相似,可以互换使用。

懒人数据科学,自动机器学习——Diego Hueltes,Python 工程师@ RavenPack

在本次演讲中, J. Diego Hueltes 介绍了一些工具,帮助数据科学家避免浪费时间和精力做重复性的工作。通常,重复的任务发生在数据清理和模型验证之间。有数以千计的函数和参数需要置换,必须尝试找出它们的最佳组合,使模型得分最大化。有一些工具可以帮助自动化这条管道的一部分,如、 Auto-Sklearn 、Auto-Weka、Machine-JS 和 DataRobot 等等。

Typical ML pipeline

通常,该工具基于遗传算法、贝叶斯优化、元学习和集成模型构建。这些工具还允许指定自定义配置设置,因此由于数据科学家的直觉/先验知识,排列的数量会减少。

[## HTML5 遗传算法两足步行机

基因突变概率基因突变量冠军复制马达噪音回合长度动画质量模拟…

rednuht.org](http://rednuht.org/genetic_walkers)

当然,仍然有很多限制:这些库是非常新的,不稳定的,并且有很多功能仍有待实现。它们运行起来非常昂贵,因为即使它们使用技术来优化尝试的排列数量,它们仍然需要大量的试错迭代来收敛,它们不能并行执行,并且缺乏人类直觉来知道下一步要尝试什么。因此,不建议将大数据集与此工具一起使用,因为执行各种假设检验需要大量时间。

在 FindHotel,我们曾经短暂地尝试过这些工具中的一种。当给定一小部分数据,问题被很好地定义并且数据是干净的(例如 Kaggleish csv)时,它们真的很有帮助。在识别机会时,这种理想的环境与我们相去甚远:我们的数据非常稀疏,我们有大量的数据,在考虑评估者之前,数据清理是必不可少的。我们正密切关注这项技术,因为我们确信,在某个时候,我们将接受它们的使用。

有趣的资源:http://rednuht.org/genetic_walkers/http://rednuht.org/genetic_cars_2/

外卖理念:

自动机器学习是一个活跃的研究领域,我们可以预见好的项目是开源的。这些工具根本代替不了数据科学家,在大数据集上表现很差。它们还不能并行化。另一方面,他们可以帮助 DS 找到对于一个新问题应该采取的最合适的初始步骤。

第二天:

水终端使用检测的深度学习用例——数据科学研究@ Treelogic 的负责人 Roberto Díaz 和研究员@ Treelogic 的 joséAntonio sánchez

Roberto 和 José Antonio 介绍了一个有趣的挑战,他们使用神经网络来解决这个问题。他们的客户 Canal de Isabel II 是西班牙最大的水分销商,希望了解水的需求,以制定更好的管理政策。计量传感器可以安装在每个设备上,但这将非常昂贵和复杂。该解决方案依赖于安装一个主计量系统(大多数房屋已经有一个),并使用数学模型模拟所有设备的需水量。

Feature Extraction, Treelogic

他们得到的数据来源包括 9 年中 1500 万个小时,总计 3500 万个事件。数据以一种混合的方式被标记:一边是由操作员手动对水事件进行分类,另一边是一种特别的算法。这样做是因为操作员只能在 1 小时内标记 1 周的数据。为了将时间序列水表脉冲转换为事件,他们使用了移动平均数的移动平均数。然后,他们建立了机器学习模型来对这些事件进行分类。对于这项任务,SVM 和神经网络进行了评估。他们不能使用预先训练的网络,因为没有人公开发布过为此目的训练的网络的权重。

从图中可以看出,他们的结论是 NN 在 8 个可能的标签中均优于 SVM。平均而言,对于 1L 精密计数器,SVM 产生 67.41%的准确度,而神经网络具有 81.78%的准确度。对于 0.1L 米,结果分别为 84.78%和 91.19%。

有趣的资源:https://www . canaldeisabel segunda . es/es/galeria _ ficheros/communication/documentacion/public aciones/cuaderno 25 _ idi . pdf

外卖理念:

机器学习和更具体的神经网络可以成功地应用于水需求及其特征的建模,帮助建立更好的管理政策和水消费模式评估。一旦有足够的训练数据,深度学习就可以实现很高的准确性。

Apache MXNet 分布式培训深度讲解— Viacheslav Kovalevskyi,软件开发工程师@亚马逊深度学习

我只会引用这个牛逼的演讲中的一句话:“分布式培训就像并发编程。能不要就不要!”但是,如果您确实需要它,因为您肯定会遇到瓶颈,那么具有多机集群模式的 Apache MXNet 可能是您的解决方案,本演示是一个很好的起点。

Viacheslav Kovalevskyi 介绍了一个培训示例,展示在 AWS 中启动 MXNet 集群并开始解决建模问题是多么容易。给出的示例包括使用具有非常低的学习率参数的线性回归来拟合一行数据点(出于示例的目的),并使用两个工人来分布模型。

Model Parallelism

Data Parallelism

MXNet 仅支持数据并行,有 3 个主要逻辑组件:

  1. Scheduler:负责启动集群本身并确保集群可以开始训练的逻辑实体。不安排作业,它只是设置群集。
  2. 工人:存储模型,负责训练模型,并向服务器发送更新。如果我们想使用分布式计算进行训练,则需要 2 个或更多。
  3. 服务器:又名 PS-lite/kv store/parameter servers…它的主要功能是存储整个模型本身。通常 1 个就足够了,除非模型很大。

How to start a component in MXNet

启动集群的组件之间的通信过程:服务器请求将调度程序添加到集群。调度程序确认收到消息。工作进程请求将调度程序添加到群集。当所有服务器和工作线程都请求添加到集群时,调度程序会确认聚合。每个逻辑实体都说“我已经到达障碍”;当这种情况发生时,意味着所有的组件都准备好了。然后,调度程序会宣布训练可以开始了。训练进行时,调度程序进入睡眠状态。

有趣资源:https://github . com/blog-kovalevskyi-com/distributed _ training _ presentation

外卖理念:

MXNet 这样的加速库提供了强大的工具来帮助开发者开发 GPU 和云计算的全部功能。了解集群中组件的基本知识非常重要,尤其是关于参数服务器(也称为 KVStore)的知识。

深度学习时间序列分析的最新进展— 首席数据科学家贾维尔·Ord·奥涅兹

在我看来,这个演讲是今年西班牙大数据大会上最有趣的演讲之一。Javier 展示了他对基于卷积和 LSTM 递归单元的活动识别的通用深度框架的研究。他成功展示了基于卷积和 LSTM 递归层组合的深度架构的优势,以执行可穿戴传感器的活动识别。这个新的框架在日常活动分类的机会数据集上优于以前的结果。

虽然 CNN 可以发现足够的特征,但循环 LSTM 细胞是允许人们区分类似手势并执行比标准 CNN 更好的分割特征的基础。

Architecture of the DeepConvLSTM

与每个片段相关联的类别对应于在该间隔期间已经观察到的手势。F-measure 用于评估模型,并将其与 CNN 基线进行比较。

基线 CNN 方法往往会犯更多的错误,并且很难对手势的边界做出清晰的决定。它很难定义手势的起点和终点。总体而言,建议的 DeepConvLSTM 模型的性能比基准模型高 5%左右。

有趣资源:https://github.com/sussexwearlab/DeepConvLSTM

外卖理念:

CNN 是非常好自动特征创建器,它捕捉特定的显著模式,并充当特征检测器。诸如 LSTM 的递归层可以学习从 CNN 提取的特征的时间动态。因此,深度 CNN 和 LSTMs 之间的混合在多模态时间序列问题(如可穿戴活动识别)中产生了最先进的性能。

您可以在以下 YouTube 播放列表中观看 2017 年西班牙大数据大会上录制的所有演讲:https://goo.gl/DdeQYQ

给我留言如果你有任何意见或者想在马德里喝杯咖啡讨论 AI,如果你想在 Kaggle 合作或者如果你只是想建议我谈谈。

我在中国教深度学习学到的 5 件事

原文:https://towardsdatascience.com/5-things-i-learned-teaching-deep-learning-in-china-e10a6e35f3f8?source=collection_archive---------11-----------------------

中国是一个充满活力的地方,人工智能正在这里爆发!在 5 分钟内找出我花了 5 年才学会的东西。

在过去的一年里,我领导了 20 多个人工智能研讨会,向工程师们教授人工智能系统的基础知识,并让他们能够实现可用的艺术系统。在中国教书并帮助培养 1000 名工程师的技能是一种奇妙的经历。虽然我可能是老师,但我最终自己学到了很多关于中国人工智能领域的状况。以下是我在中国教书时学到的前五件事。

中国工程师拥有非凡的才能和专业知识

我觉得有一种观点认为中国是山寨之地,许多中国公司和工程师除了抄袭别人之外没有其他技能。这与事实相去甚远。我在中国度过了过去的五年,这么多年过去了,我仍然每天都能见到新的令人惊叹的天才工程师。过去,许多人在大学学习后离开中国去欧洲和美国生活,而现在,他们选择回到中国,或者留在中国令人惊叹的技术大学如清华大学学习。当我第一次开始上课时,我制定了我的教案,这样开始会很慢。上完第一堂课后,我不得不重做一切。中国工程师学得很快,要求我提供更多的例子!最终,我开始教授刚刚出版的艺术论文!

如果你对我的课感兴趣,你可以从我的文章系列 获得一个超精华的概述成为一名机器学习工程师|第二步:挑选一个过程

可用于训练的数据量是巨大的

如果说人工智能是新的电力,那么数据就是为发电厂提供燃料的煤炭。数据是如此重要,我认为这是提高深度学习算法性能的最简单的方法之一,甚至在我的深度学习备忘单中写了它。人工智能的巨大重要性并没有说服所有人。欧洲最近通过了 GDPR,美国也渴望加入他们的行列,制定类似的数据法规。这些法规虽然旨在帮助消费者,但却大大降低了公司和个人构建依赖免费数据访问的人工智能系统的能力。在中国,对数据的限制很少,这导致了数据爆炸。随着越来越多的中国公司开始利用 14 亿人产生的数据,这个问题只会变得更糟。

研究让位于实施

我教的中国工程师在两件事上是平等的。技能和直接实施的愿望。似乎每个人都有自己想要制造的产品的想法,而有些人没有。一些充满渴望的学生已经开始用他们在我的课上学到的东西,使用一些基本的算法和数据集来创建公司,但他们实施的动力意味着他们走在了曲线的前面,并取得了早期的成功。

虽然我的学生似乎有无限的精力将人工智能系统应用到他们的产品中,但很少有学生对实际研究新颖的深度学习系统的想法感到兴奋。这可能是因为大量的资金流入人工智能公司,许多人对艰苦的研究不感兴趣。

需要关于你深度学习策略的建议?和我一起进行 30 分钟的免费咨询(5 美元的报名费将在通话后退还)。通过日历 安排与我的时间

中国政府非常重视人工智能

在我参加培训课程的几个月后,我开始注意到,来自公司的学生数量在我的班级中出现了大幅增长。原来,政府正在拨款帮助支付人工智能实施的培训费用。这让我开始研究中国政府投资人工智能的其他方式。原来他们花了数十亿美元来提高国家的人工智能能力,并将其作为中国制造 2025 计划的核心部分。在这一巨额投资下的人工智能产业在过去一年增长了 67%,产生的专利和研究论文比美国还多。所有这一切都是因为只有美国五分之一的人才。如果到 2030 年他们真的成为人工智能领域的世界领袖,我不会感到惊讶。

信息传播还有很长的路要走

许多关于深度学习和人工智能的信息仍然只能用英语访问,虽然这对我班上的学生来说不是问题,但他们确实花了很多时间讲述朋友的故事,他们缺乏英语技能,使他们很难进入该领域并开始实施。随着越来越多的信息跨越语言障碍,我们可以期待更多有趣的人工智能应用程序来自那些一开始被忽略的应用程序。

为了更容易跨越语言障碍,我正在寻找一个中国合作伙伴,帮我把我的文章和课程带给中国学生。如果你在中国,有兴趣一起工作,请通过TwitterLinkedIn联系我。

对课堂幻灯片感兴趣?尽可能多的点击下面的按钮!如果我得到足够的掌声,我会准备幻灯片粘贴到媒体。

咱们也连线上Twitter或者LinkedIn

我在每个 NBA 球员身上训练人工智能模型学到的 5 件事

原文:https://towardsdatascience.com/5-things-i-learned-training-an-ai-model-on-every-nba-player-32d906b28688?source=collection_archive---------5-----------------------

听起来很容易。只需在 2017 赛季的每个 NBA 球员身上训练一个面部识别模型。但是这真的很有挑战性。以下是我学到的可能会为你节省很多时间的东西。

你需要高质量的面部识别——我当然推荐 Facebox 。它的技术水平和我的测试比任何其他商业面部识别工具都要好,包括大型云供应商(认知服务)。识别一张脸是一回事,但如果你要花一天时间收集每个 NBA 球员的每张照片,你不会希望你的时间浪费在训练一个表现不太好的模型上。

仔细想想你这么做的原因。不是作为一个存在的问题,而是作为对你的用例的一个现实的评估。如果您正在训练一个模型来检测正在踢足球的 NFL 球员,您可能需要三思而行,是否要用他们的脸来训练他们,并且可能需要更多地考虑他们的头盔是如何模糊识别的。当我们训练模型来检测美国政治家时,我们使用他们的官方肖像作为训练集。这很有效,因为在现实生活中,当他们在镜头前或照片中时,他们经常使用与拍摄专业照片时相同的面部表情。而对于 NBA 球员,我注意到比赛镜头中的画面经常会出现一些搞笑的面部表情,这些表情与他们的官方 NBA 肖像如此不同,以至于人脸识别技术可能很难识别他们。

https://i.pinimg.com/originals/f5/29/61/f52961a1ad612b58244b924273f0a6da.jpg

你还会遇到出汗、受伤和很多脸远离镜头的问题。最好获得尽可能多的训练数据来考虑这些用例及场景。我使用了很多实际打篮球的每个球员的照片,这样我就能确保这个模型很好地表现了每个球员在不同场景下的脸。

训练照片的质量。这让我大吃一惊,不幸的是,收集训练集的时间增加了一倍。在我第一次去的时候,为了节省时间和磁盘空间,我为每个玩家提取了照片的缩略图。这些缩略图大约有 11KB。该模型的准确性不是我想要的,我能够跟踪问题到训练照片的文件大小和保真度。我煞费苦心地回去,拉了每个球员的高分辨率照片,文件大小不低于 70KB。这大大提高了模型的准确性,一旦它在这个新的数据集上进行训练。如果我一开始就知道这一点,我可以节省无数的工作时间。

确保你的照片中有一张脸。

https://clutchpoints.com/wp-content/uploads/2017/03/DeMarcus-Cousins.jpg

这听起来可能是显而易见的,但你会惊讶于先进的面部识别模型能够获得什么。在篮球运动中,一些球员最伟大的投篮是在球场上,自然也有其他球员和观众。即使照片的景深只显示了对焦的玩家也是一个问题。失焦的人脸可能仍然会被注册为人脸,当然,模型将不会知道你想教哪张脸。

数据收集是最难的部分。Machine Box 这样的工具让使用机器学习变得非常容易。这是因为真正困难的部分是收集好的训练数据。你必须像数据科学家一样思考,在某些方面,当开始训练模型时,你必须成为一名数据科学家(尽管是业余的)。你必须考虑你的用例,分析你选择的数据,也许在你花一天时间从网上下载每一个 NBA 球员的照片之前,先做一些测试。

5 种回归类型及其性质

原文:https://towardsdatascience.com/5-types-of-regression-and-their-properties-c5e1fa12d55e?source=collection_archive---------1-----------------------

想获得灵感?快来加入我的 超级行情快讯 。😎

线性和逻辑回归通常是人们学习机器学习和数据科学的第一个建模算法。两者都很棒,因为它们易于使用和解释。然而,它们固有的简单性也有一些缺点,在许多情况下,它们并不是回归模型的最佳选择。事实上有几种不同类型的回归,每一种都有自己的优点和缺点。

在本帖中,我们将探讨 5 种最常见的回归算法及其特性。我们很快就会发现,他们中的许多人偏向于在特定类型的情况下和特定类型的数据中工作良好。最后,这篇文章将为你的回归工具箱提供更多的工具,并从整体上给你回归模型更多的洞察力!

线性回归

回归是一种技术,用于建模和分析变量之间的关系,通常是它们如何共同产生特定的结果。线性回归是指完全由线性变量组成的回归模型。从简单的例子开始,单变量线性回归是一种使用线性模型(即直线)对单个输入自变量(特征变量)和输出因变量之间的关系进行建模的技术。

更一般的情况是多变量线性回归,其中为多个独立输入变量(特征变量)和一个输出因变量之间的关系创建模型。该模型保持线性,因为输出是输入变量的线性组合。我们可以按如下方式建立多变量线性回归模型:

Y = a1 * x1+a2 * x2+a3 * x3……a_nX_n + b*

其中 a_n 为系数, X_n 为变量, b 为偏差。正如我们所看到的,这个函数不包含任何非线性,因此只适合于建模线性可分的数据。这很容易理解,因为我们只是使用系数权重 a_n 来加权每个特征变量 X_n 的重要性。我们使用随机梯度下降(SGD)来确定这些权重 a_n 和偏差 b 。查看下图,获得更直观的图片!

Illustration of how Gradient Descent find the optimal parameters for a Linear Regression

关于线性回归的几个要点:

  • 快速且易于建模,当要建模的关系不是非常复杂并且您没有大量数据时尤其有用。
  • 非常直观的理解和解读。
  • 线性回归对异常值非常敏感。

多项式回归

当我们想要创建一个适合处理非线性可分数据的模型时,我们需要使用多项式回归。在这种回归技术中,最佳拟合线不是直线。而是一条符合数据点的曲线。对于多项式回归,一些自变量的幂大于 1。例如,我们可以有这样的东西:

y = a1 * x1+(a2)* x2+(a_3)⁴x_3……)。a_nX_n + b

我们可以让一些变量有指数,另一些没有,也可以为每个变量选择我们想要的确切指数。然而,选择每个变量的确切指数自然需要了解数据与输出之间的关系。有关线性回归和多项式回归的直观比较,请参见下图。

Linear vs Polynomial Regression with data that is non-linearly separable

关于多项式回归的几个要点:

  • 能够对非线性可分离数据建模;线性回归做不到这一点。一般来说,它更加灵活,可以模拟一些相当复杂的关系。
  • 完全控制特征变量的建模(设置哪个指数)。
  • 需要精心设计。需要一些数据知识,以便选择最佳指数。
  • 如果指数选择不当,容易过度拟合。

里脊回归

在特征变量之间存在高度共线性的情况下,标准线性或多项式回归将会失败。共线性是独立变量之间存在近似线性的关系。高度共线性的存在可以通过几种不同的方法来确定:

  • 回归系数并不显著,即使理论上该变量应该与 y 高度相关
  • 添加或删除 X 特征变量时,回归系数会发生显著变化。
  • 您的 X 特征变量具有高度的成对相关性(检查相关性矩阵)。

我们可以先看看标准线性回归的优化函数,以了解岭回归是如何帮助我们的:

min || Xw - y ||

其中 X 代表特征变量, w 代表权重, y 代表地面真实值。岭回归是一种补救措施,用于减轻模型中回归预测变量之间的共线性。共线性是一种现象,在这种现象中,多元回归模型中的一个特征变量可以通过其他特征变量以相当高的准确度进行线性预测。由于特征变量以这种方式如此相关,最终的回归模型在其近似中是非常受限和严格的,即它具有高方差。

为了缓解这一问题,岭回归为变量增加了一个小的平方偏差因子:

最小|| Xw — y || + z|| w ||

这种平方偏差因子使特征可变系数远离这种刚性,将少量偏差引入到模型中,但极大地减少了方差。

关于岭回归的几个要点:

  • 该回归的假设与最小二乘回归相同,只是不假设正态性。
  • 它缩小了系数的值,但没有达到零,这表明没有特征选择特征

套索回归

套索回归与岭回归非常相似,因为两种技术有相同的前提。我们再次向回归优化函数添加了一个偏置项,以减少共线性的影响,从而减少模型方差。但是,lasso 没有使用像岭回归这样的平方偏差,而是使用绝对值偏差:

min || Xw — y || + z|| w ||

岭回归和套索回归之间存在一些差异,这些差异本质上可以追溯到 L2 正则化和 L1 正则化的属性差异:

  • 内置的特征选择:经常被认为是 L1 规范的一个有用的属性,而 L2 规范没有。这实际上是 L1 范数的结果,它倾向于产生稀疏系数。例如,假设模型有 100 个系数,但其中只有 10 个具有非零系数,这实际上是说“其他 90 个预测器在预测目标值时是无用的”。L2 范数产生非稀疏系数,所以不具有这个性质。因此,可以说套索回归是一种“参数选择”,因为未被选择的特征变量的总权重为 0。
  • 稀疏性:指一个矩阵(或向量)中只有极少数的元素是非零的。L1 范数具有产生许多具有零值或非常小的值的系数以及很少的大系数的性质。这连接到 Lasso 执行一种特征选择的前一点。
  • 计算效率:L1-诺姆没有解析解,但 L2-诺姆有。这允许高效地计算 L2 范数解。然而,L1 范数解确实具有稀疏特性,这允许它与稀疏算法一起使用,这使得计算在计算上更有效。

弹性网络回归

ElasticNet 是套索和脊回归技术的混合。它同时使用 L1 和 L2 正则化,并具有这两种技术的效果:

min | | Xw—y | |+z _ 1 | | w | |+z _ 2 | | w | | |

在套索和脊之间进行权衡的一个实际优势是,它允许弹性网在旋转下继承脊的一些稳定性。

关于 ElasticNet 回归的几个要点:

  • 在变量高度相关的情况下,它鼓励群体效应,而不是像 Lasso 一样将一些变量置零。
  • 所选变量的数量没有限制。

结论

你有它!5 种常见的回归类型及其性质。所有这些回归正则化方法(Lasso、Ridge 和 ElasticNet)在数据集中变量之间存在高维度和多重共线性的情况下都能很好地工作。我希望你喜欢这篇文章,并学到一些新的有用的东西。

数据可视化可能存在的 5 种方式

原文:https://towardsdatascience.com/5-ways-data-visualizations-can-lie-46e54f41de37?source=collection_archive---------2-----------------------

在一个越来越受数据驱动的世界里,从新闻提要到活动跟踪,图表开始随处可见。有些很漂亮(纽约时报可视化实验室做了惊人的工作),但更多的时候质量会有所欠缺,结果会令人困惑甚至误导。

我们使用可视化来压缩数据,以创建对趋势的直观理解。我们将讨论在展示数据时可能犯的一些基本错误,但首先快速浏览一下图表的结构:

可视化的元素可以通过强调或减少数据影响的方式进行修改。网格线或刻度数量的变化可以强调粒度,标签可以精心制作以产生偏见,或者颜色选择可以唤起潜意识的情绪反应。我将探索修改可视化的方法,包括:

  • 轴向裁剪
  • 轴缩放
  • 扔掉
  • 饼图
  • 2 轴图

对于其中的每一个都有特定的情况,这些技术也可以用来帮助可视化制作一个更清晰的故事,所以像数据科学中的大多数东西一样,它们是可以使用或滥用的工具。

轴向裁剪

X 和 Y 轴是理解图的比例和关系的关键。可以为 X 或 Y 维度(或两者)裁剪一个轴,以显示数据的子集。取决于什么样的节目和情节类型,这可能是偶然发生的,也可能是故意的。我想我们所有人都可以在这些数据中找到一些图表,让他们的观点看起来更有道理。

这是相同数据的三个直方图。通过限制轴,它不仅减少了多少是可见的比例也发生了变化。在中间的例子中,y 轴的裁剪使得增加看起来比未编辑时更陡。

有时,有一个很好的理由进行裁剪。如果可视化的想法是讲述一个故事,这可能是一个无价的工具来强调一个变化。这是一篇很棒的文章,当它真正有帮助的时候:

[## 不要从零开始你的 y 轴是可以的

在 Quartz,我们一年制作数千张图表,当我们收到关于它们的投诉时,通常是 y 轴…

qz.com](https://qz.com/418083/its-ok-not-to-start-your-y-axis-at-zero/)

然而,我已经看到了许多这样的例子,它被用来通过过度夸大关系规模来混淆人们,使差异看起来比实际情况更大(当轴上的数字被完全省略时,情况会变得更糟)。这是一篇关于图表如何被大量编辑以使某些东西看起来与实际结果不同的惊人帖子:

[## 肉商:你想要腿的哪一部分?我:全部,请分成五份

这张美国广播公司的新闻图表似乎占据了我的 Twitter feed 的顶部,所以我最好对它进行评论。ABC 新闻的某人…

junkcharts.typepad.com](http://junkcharts.typepad.com/junk_charts/2017/02/butcher-which-part-of-the-leg-do-you-want-dataviz-folly.html)

裁剪图表的轴可以隐藏各种问题。当我在 Kaggle 泰坦尼克号比赛上尝试我的第一个机器学习问题时,在提供的数据集中有多个年龄缺失。下面的直方图显示了年龄的分布(对于那些有过的人)。

我通读了其他内核,并从他们解决问题的方法中获得了灵感。一份提交的材料特别使用了老鼠(R 中的一个包)来填写年龄。我复制了他们所做的,并运行它来理解它是如何工作的。在我 16 岁左右的时候,每次都有一个巨大的峰值,但是他们笔记本上的图像没有显示任何峰值。左边是我做的时候发现的,右边是我在他们笔记本上看到的:

过了几个小时,我才意识到他们的直方图被设置为隐藏任何 16 岁以下的年龄,从而掩盖了数据中的峰值。我用了另一种方法来填写年龄,但这对我来说是一个教育时刻。

轴缩放

比较图表时,了解它们是否设置为相同的比例非常重要。根据所使用的可视化程序,轴通常会自动调整到最佳状态。如果有多个图表的数据不完全相同,那么一个图表中的一英寸可能等于 10,而另一个图表中的一英寸可能等于 30。

当我为一个客户处理数据集时,我曾经艰难地了解到这一点。得出几个结论后,我正准备完成演示,这时我意识到我比较的两个图表是完全不同的尺度。我及时发现了这一点,但是我在报告中的结论被修改得更加谨慎了。

我也一直在研究佛蒙特州伯灵顿的警察违规公开数据(见我的帖子这里)并遇到了同样的问题。伯灵顿有两条不同的街道,每条街道都有违章记录。

上面看起来教堂街比主街的非法侵入量大四倍,但是下面当我们把它们按同样的比例缩放时,很明显非法侵入的数量更接近相同。更清楚的是,由于那里的交通事故,Main Street 总共有更多的违规行为,这是最初的图表一眼不会告诉你的。

与第一个问题不同,这通常是一个错误。可视化的默认行为通常会自动引入问题。只需记住在比较图表时进行比较的重要性,并注意观察坐标轴。

扔掉

直方图是理解数据分布的非常有用的方法。在某些方面,它通过计算一定范围内的数据点数量来换取绝对的准确性。这被称为宁滨,bin 值 10 将从零到最大值拆分成 10 个桶。

有几个公式可用于确定容器大小;斯特奇斯公式、赖斯法则和弗里德曼-迪阿科尼斯选择都是很好的起点。但是,让我们首先考虑不同的宁滨可以是什么样的直方图序列:

在上面的例子中,不难看出通过改变容器,洞察力会如何改变。通过仔细的宁滨,一些不规则性可以被掩盖,或者在特定值的异常值可以被平滑。

此外,还必须考虑 y 轴比例随频段的变化。如果将 500 个总值分成 5 个箱,而不是 100 个箱,那么会产生很大程度的缩放。如果相互比较直方图,请记住确保柱是相同的,轴也是相同的。

饼图

饼图通常是展示复杂信息的糟糕方式。当切片数量超过三个左右时,我们的大脑不太擅长比较切片。更糟糕的是,许多标签看起来很酷,但实际上很难辨认。

看一看左边没有标签的模拟饼图,试着猜测各种比例关系,然后在右边添加标签的位置。

绿色切片实际上等于黄色切片的四分之一,粉红色是紫色切片值的三分之一。当它以饼状图的形式出现时,我们的品牌很难进行换位和比较。

对饼状图的厌恶被广泛分享,许多关于这个主题的文章被写成了。甚至切片的顺序也能玩出心理把戏。下面的缅因州和佛蒙特州实际上是相同的价值,但很难猜测。

这是另一个例子,五个相当接近的切片,其中一个比其他的多 3%。猜猜是哪一个。

如果你选择新罕布什尔州,那你就错了,它实际上是马里兰州。3D 效果在视觉上增加了切片的体积,欺骗了你的眼睛。如果没有标签标明百分比,准确猜测的可能性微乎其微。

2 轴图

图表实际上可以有左右两个独立的垂直轴。有时这种图表可以用来显示两个图之间的相关性,但这种关系可能是微妙的,如果不是不存在的话。

通过使用上面提到的轴裁剪和轴缩放,小斜面可以变成悬崖,不一致的数据可以被截断,以得出错误的相关性和比较。下面是一个虚构的例子:

不难想象,当差异超过 250 时,有人可能不会注意到两个独立的尺度,并相信新罕布什尔州的计数 1 和计数 2 是相同的。当一个是百分比,另一个是类似货币的东西时,这种不明确性会进一步加剧。这里有一个特别好的例子,说明糟糕的图表是如何被用来证明一个不准确的观点的。

在绘制两组数据之间的精确相关性时,使用两个轴可能会很有用,但当有人这样做时,请确保查看轴的比例,并了解可能已进行的任何其他修改。

结论

我们使用可视化来探索数据,理解错误是如何产生的,不管是有意还是无意,这将使我们更好地得出准确的结论。最好彻底地怀疑,在把可视化视为理所当然之前,看看所有的部分。

虽然这侧重于视觉技巧,但也有统计操纵的一面。这包括破解数据集、忽略相关的异常值,以及许多其他技术,这些技术甚至可以在它成为图表之前很久就被应用。

在一个“假新闻”被如此频繁地抛出的时代,很难写这篇文章而不关注政治和媒体。双方都操纵和歪曲了可视化,以支持数据无法支持的结论。

就像我们必须学会如何应对 90 年代的第一次互联网诈骗(那个可怜的尼日利亚王子……),我们现在也必须发展理解数据背后的同样的复杂性。随着数据越来越深入到几乎所有事物的核心,不理解它将会给你带来危险。知道如何持怀疑态度会让一切变得不同。

大自然母亲激发人工智能的 5 种方式

原文:https://towardsdatascience.com/5-ways-mother-nature-inspires-artificial-intelligence-2c6700bb56b6?source=collection_archive---------3-----------------------

人工智能的世界有很多事情要感谢它在我们今天的技术景观中的存在。人类不仅花费了数十年的研究来完善数学计算,使这些非常复杂的学习算法发挥作用,而且在这段时间里,我们比我们自己的物种看得更远,作为在我们的星球上创造下一代智能存在的灵感。大自然母亲,以及它所包含的一切,已经深深扎根于人工智能的工作中——并且会一直存在下去。

大卫·爱登堡爵士的野生动物纪录片难道不令人难以置信吗?它们对地球上众多居民的行为和属性进行了令人难以置信的高清晰度描述,并让我们了解他们如何融入自然生态系统,并共同努力,以使我们的星球繁荣昌盛——让它成为地球。虽然我不是大卫·爱登堡爵士,但我还是要带你们去看一部我自己的野生动物纪录片。问题中的明星生物不是别人,正是那些直接受大自然启发的人工智能算法。但首先,我需要向你们介绍两个算法概念。搜索/寻路和预测建模。

搜索(寻路)算法

搜索算法本质上是一种程序,旨在找到到达目标的最佳/最短路线。例如,旅行推销员问题是一个典型的搜索优化问题,给你一个城市列表和这些城市之间的距离。你必须为旅行推销员寻找最短的路线,同时访问每个城市一次,以最大限度地减少旅行时间和费用(确保你回到出发城市)。这个问题的实际应用是送货卡车。想象一下,伦敦有 100 个人在网上订购,所有的箱子都被装进一辆货车。快递员(比如说……DPD)现在必须计算从仓库交付这些包裹(最终返回仓库)的最有效路线(平衡距离/所用时间),以确保公司在交付过程中尽可能少地浪费时间和金钱。

预测建模算法

今天,预测模型是所有炒作的地方。各地的数据科学家都在高呼“神经网络!”在他们舒适的办公大楼的屋顶上,像谷歌这样的公司正试图用这些复杂的小“人工大脑”的不同变体来解决世界问题。本质上,预测模型使用统计学来预测结果。你经常听到数据科学家试图解决两种预测建模问题,回归和分类。回归是寻找两组变量之间相关性的黑暗艺术,而分类是确定数据集属于不同集合的概率的过程。

5 种受生物启发的学习算法

1.人工神经网络

Feed Forward Neural Network — the most basic type of Neural Network.

算法类型:预测建模

生物灵感:认知脑功能(神经元)

用例:情感分析、图像识别/检测、语言校正、机器人

让我们从其中最常见的人工智能(AI)算法开始。神经网络是被称为机器学习的人工智能子类的一部分。它们被设计和建造为在神经元水平上模仿大脑功能,与轴突和树突相互作用,以便通过系统传递信息,从而通过一系列“层”产生预测输出。每一层都提供了额外的数据表示层,并允许您对最复杂的问题进行建模。

神经网络可能是使用最广泛的机器学习算法,也是迄今为止数据科学和机器学习的最热门趋势。这个概念最初在 1958 年取得成果,被称为感知机,后来由 Geoffrey Hinton 完善,并由谷歌和脸书等公司推广。神经网络可用于解决广泛的问题类型,包括自然语言处理和视觉识别。这种监督学习算法可以支持回归和分类问题,其使用示例可以在常规消费产品中找到,包括智能手机和联网的家庭设备。

2.遗传算法

Reproduction of individuals in a Genetic Algorithm

算法类型:搜索/寻路

生物灵感:适者生存/进化(细胞繁殖)

用例:数据挖掘/分析、机器人、制造/设计、流程优化

为了解决搜索问题,遗传算法在连续几代的一系列个体中采取“适者生存”的类似进化的方法。每一代都包含一群模仿我们在 DNA 中看到的染色体的字符串。群体中的每个个体代表搜索空间中的一个点,因此每个个体都是可能的候选解。为了改进解的群体,我们让个体经历一个进化过程。

  • 种群中的每个个体都会为资源和配偶而竞争。
  • 在每次竞争中最成功的个体(通常)会比那些表现不佳的个体产生更多的个体。
  • 来自更“理想”候选人的基因在群体中传播,所以那些好父母通常会产生具有更大潜力的后代。

3.群体/集体智慧

Example of Ant Colony Optimisation — a type of collective intelligence algorithm.

算法类型:搜索/寻路

生物灵感:蚁群/鱼群/鸟群

使用案例:机器人,视频游戏人工智能,制造业,路线规划

蚁群优化和粒子群优化是两种最常见的算法,符合“集体智能”概念的界限。在一个基本层面上,正在讨论的算法都利用了多个工作代理。每一个工作主体都表现出非常基本的行为,这些行为集体(作为一个群体)一起工作,产生更复杂的、紧急的行为,以解决问题。

蚁群优化(ACO)与粒子群优化(PSO)非常不同。两者都旨在实现突现行为,但以两种不同的方式进行。像真正的蚁群一样,蚁群算法利用信息素的气味来引导个体智能体走上最短路径。最初,在问题空间中初始化随机信息素。个体代理将开始遍历搜索空间,并在途中散发信息素气味。在每个时间步中,信息素将以一个确定的速率衰减。单个智能体根据他们前面的信息素气味的强度做出决策,以便遍历搜索空间。特定方向上的气味越强烈,就越有可能向那个方向传播。最著名的解决方案将会是具有最强信息素气味的解决方案。

粒子群优化算法更关注群体的整体方向。许多单个代理被初始化,并且它们以随机的方向开始。在每个时间步,每个代理都需要决定是否改变方向。该决定将基于最佳已知解决方案的方向(称为 pbest/全局最佳)、最佳最近邻的方向(局部最佳)以及当前行进方向。新的旅行方向通常是所有这些价值观的良好“妥协”。

4.强化学习

Agent Behaviour within a Reinforcement Learning Environment.

算法类型:预测建模

生物灵感:经典条件反射

用例:视频游戏、控制自动驾驶汽车、生产线软件、金融系统

强化学习(RL)以心理学为基础,其过程让人想起经典的条件作用,支持对主体采取的有利行动提供积极的数字响应的想法。与流行的经典条件作用例子相比,学习强化学习的概念通常更容易;巴甫洛夫的狗。这是 19 世纪 90 年代进行的一项研究,当时俄罗斯心理学家伊凡·巴甫洛夫正在观察狗对喂食的反应。一篇解释这个问题的优秀文章可以在这里找到。本质上,如果一个 RL 代理采取了一个好的行动,朝着完成要求的任务迈出了一步,它会被给予一个数字奖励。代理将使用策略进行学习,例如:最大化每一步的回报。将原始输入应用到算法中允许代理开发它自己对问题的感觉,以及如何以最有效的方式解决它。

RL 算法与其他机器学习技术(如神经网络)配对是很常见的。这通常被称为深度强化学习。当一个 RL 代理做出一个特定的决定时,神经网络经常被用来估计给予它的奖励。现在是谷歌公司的 Deep Mind 已经在这个领域取得了很大的进展,它使用深度 Q 学习方法来处理更常见的问题(例如一个算法能够在没有帮助的情况下玩完整个雅达利游戏库,并在“围棋”游戏中击败世界冠军本身)。他们现在正在采用这种方法,以便能够处理更复杂的游戏,如星际争霸 2。

作为参考,Q 学习是强化学习算法的无模型版本。它可以用来寻找任何有限马尔可夫决策过程的最优行动选择策略。在程序初始化时,每个动作-值对的 Q 值由开发者定义,并由 RL 算法在每个时间步更新。下图是更新 Q 操作-值对的公式示例。

Q Learning Value Update Equation

5.人工免疫系统

Components of an Artificial Immune System

算法类型:预测建模

生物灵感:免疫系统

用例:安全软件、自主导航系统、调度系统、故障检测软件

免疫系统是一种通过产生免疫反应来保护身体免受物质和病原微生物侵害的系统。人工免疫系统(AIS)是自适应系统,受理论免疫学和应用于解决问题的观察免疫功能的启发。人工智能是生物启发计算和自然计算的一个子领域,与机器学习和人工智能有联系。人工智能通常有多种算法:

  • 克隆选择
  • 树突细胞
  • 否定选择
  • 人工免疫识别

像生物免疫系统一样,人工免疫系统能够将系统内的所有“细胞”分类为“自体”或“非自体”细胞。分布式智能任务组用于对所有细胞采取行动。参与免疫的两种最重要的细胞是 B 细胞和 T 细胞(对你我来说是白细胞)。t 细胞有三种类型:一种类型激活 B 细胞,一种类型结合并摧毁外来入侵者,最后一种类型抑制自身免疫问题。b 细胞负责产生抗体,抗体是一种与抗原(一种有毒/外来物质)结合的特定蛋白质。人工免疫系统通常用于通过监控入侵检测来防御网络攻击,并且通常被集成到企业级软件中。与本文中提到的其他算法不同,关于这个主题的免费在线学习材料非常有限,并且可能是最不发达的。

让我们总结一下…

所以我举了 5 个例子来说明大自然是如何激励我们的研究和提高我们的技术的。还有许多受生物启发的算法影响着我们的人工智能系统,所以请在评论区分享你的经验和我错过的知识。

我是一名健身运动员&软件工程师,对健美和机器学习充满热情。我经营着自己的博客和网站,在那里我讨论这些话题,甚至更多。我提供了我的 Github 资源库的链接,这样你就可以看到我正在进行的项目和社交媒体账户(脸书、Instagram、Twitter 等)。)所以你可以跟着我健身改造。

http://lukealexanderjames.com/

如果你喜欢你所读的,请考虑按住鼓掌按钮一会儿!

50 tensor flow . js API 5 分钟讲解| TensorFlow.js Cheetsheet

原文:https://towardsdatascience.com/50-tensorflow-js-api-explained-in-5-minutes-tensorflow-js-cheetsheet-4f8c7f9cc8b2?source=collection_archive---------4-----------------------

TensorFlow API Cheetsheet

在这篇文章中,我真的想看看张量流。jsAPI,从整体上理解这个库,并理解它为机器学习社区提供了哪些令人惊叹的东西。

我知道这篇文章应该有 5 分钟长,但不要担心,理解这些显而易见的 API 不会超过 5 分钟,即使它们中的许多从名字上看非常明显,对我来说保持初学者友好是很重要的。

我在文章的其余部分尽可能用例子来说明问题。但是如果你们有任何疑问,让我们在评论中讨论吧。

它将帮助你为任何新的未来项目编写更好的通用机器学习代码。

创造🚀

API 有助于创建张量、克隆体等东西。

1 - tf.tensor ( 数值, 形状? dtype? )

创建具有指定数据类型形状的张量。

*// Pass an array of values to create a vector.* 
tf.tensor([1, 2, 3, 4]).print();**------RESULT------**
**Tensor     [1, 2, 3, 4]***// Pass a flat array and specify a shape yourself.* 
tf.tensor([1, 2, 3, 4], [2, 2]).print();**------RESULT------**
**Tensor     [[1, 2],      
            [3, 4]]**

Returns → tf。张量

:他们也有形状指定的 API,比如 tf.tensor1d,tf.tensor2d,TF . tensor 3d 和 tf.tensor4d

2--TF . buffer(shape,dtype?,价值观?)

创建一个缓冲张量。

*// Create a buffer and set values at particular indices.* 
**const** buffer = tf.buffer([2, 2]); 
buffer.set(3, 0, 0); 
buffer.set(5, 1, 0);  *// Convert the buffer back to a tensor.* buffer.toTensor().print();**-------RESULT------**
**Tensor     [[3, 0],
            [5, 0]]**

返回→ tf。张量缓冲器

3-TF . from pixels**(**num channels? )

从图像中创建一个张量。

***const** image = new ImageData(1, 1); 
image.data[0] = 100; 
image.data[1] = 150; 
image.data[2] = 200; 
image.data[3] = 255;  
tf.fromPixels(image).print();**------RESULT------**
**Tensor      [ [[100, 150, 200],]]***

返回→ tf。Tensor3D

4--TF . linspace(start,stop,num )**

创建一个具有均匀间隔数字的张量。

*tf.linspace(0, 9, 10).print();**------RESULT------**
**Tensor     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]***

返回→ tf。张量 1D

5-TF . onehot(indexes,depth,* onValue? offValue? )*

将一组稀疏的标签转换成密集的独热表示。

*tf.oneHot**(**tf.tensor1d([0, 1], 'int32'), 3**)**.print();**------RESULT------
Tensor     [[1, 0, 0],
            [0, 1, 0]]***

返回→ tf。张量 2D

6-TF . print*(*啰嗦? )

打印信息。关于任何张量。

****const** verbose = true; 
tf.tensor2d([1, 2, 3, 4], [2, 2]).print(verbose);**------RESULT------
Tensor   dtype: float32  
         rank: 2  
         shape: [2,2]  
         values:     [[1, 2], 
                      [3, 4]]****

退货→ 作废

7-TF . variable(initial value, 可训练?,名字?,dtype? )**

用提供的初始值创建一个张量变量。

****const** x = tf.variable(tf.tensor([1, 2, 3]));
x.assign(tf.tensor([4, 5, 6]));
x.print();**------RESULT------** **Tensor     [4, 5, 6]****

Returns → tf。变量

tf 的方法。张量

8 - 展平 ()

将张量展平为 1D 数组

返回→ tf。张量 1D

9-()****

转换一个 size-1 的 tf。张量到一个 tf.Scalar.

返回→ tf。标量

10.1-as1D()

转换一个 tf。张量到一个 tf.Tensor1D.

返回→ tf。张量 1D

10.2-as2D(行、列)

转换一个 tf。张量到一个 tf.Tensor2D.

返回→ tf。张量 2D

10.3-as3D(行、列、深度)

转换一个 tf。张量到一个 tf.Tensor3D.

Returns→ tf。张量 3D

10.4 - as4D ( 行,列,深度,depth2 )

转换一个 tf。张量到一个 tf.Tensor4D.

Returns→ tf。张量 4D

11-as type【dtype】

施放一个 tf。指定数据类型的张量。

返回→

12 - 缓冲 ( )

返回一个 tf。保存底层数据的 TensorBuffer。

返回→ tf。张量缓冲器

13 - 数据 ()

tf.data API 有助于构建灵活高效的输入管道。

退货→ 承诺

14 - 处分 ( )

处置 tf。来自记忆的张量。

退货→ 作废

15.1 - 浮动 ( )

将数组转换为 float32 类型。

返回→ 这个

15.2-toInt()

将数组转换为 int32 类型。

返回→ 这个

15.3 - 托布尔 ( )

将数组转换为 bool 类型。

返回→ 这个

16-(x)********

将张量整形为所提供的张量的形状。

返回→ tf。张量

17 - toString (啰嗦?)

返回张量的可读描述。对日志记录有用。

返回→ 字符串

tf 的方法。变量扩展到 tf。张量

18 - 赋值 (新值)

分配一个新的任务组。这个变量的张量。

退货→ 作废

TF 的方法。张量缓冲

tf。TensorBuffer 允许在声明一个 tf 之前设置一个值。不可改变的张量。

19-设置 ( value,locs )

在缓冲区的给定位置设置一个值。

退货→ 作废

20 - 获取 ( locs )

返回缓冲区中指定位置的值。

退货单→ 编号

21-()********

创建一个不可变的 tf。缓冲区中的张量对象。

返回→ tf。张量

变形

22-TF . expanddims(x,轴?)****

返回一个 tf。通过在张量的形状中插入一个维度来扩展秩的张量。

********const** x = tf.tensor1d([1, 2, 3, 4]); 
**const** axis = 1; 
x.expandDims(axis).print();**------RESULT------
Tensor     [[1],      [2],      [3],      [4]]********

返回→ tf。张量

23-TF . cast(x,dtype )****

施放一个 tf。张量到一种新的数据类型。

********const** x = tf.tensor1d([1.5, 2.5, 3]);
tf.cast(x, 'int32').print();**------RESULT------
Tensor     [1, 2, 3]********

返回→ tf。张量

24-TF . pad(x,paddings,constantValue?)****

垫一个 tf。具有给定值和填充的张量。

******const x = tf.tensor1d([1, 2, 3, 4]);
x.pad([[1, 2]]).print();**------RESULT------
Tensor     [0, 1, 2, 3, 4, 0, 0]********

返回→ tf。张量

25-TF . shape(x,shape)****

重塑一个 tf。给定形状的张量。

********const** x = tf.tensor1d([1, 2, 3, 4]); 
x.reshape([2, 2]).print();**------RESULT------
Tensor     [[1, 2],      
            [3, 4]]********

Returns→ tf。张量

26 - tf.squeeze ( x,轴?)

从 tf 的形状中删除尺寸为 1 的尺寸。张量

******const x = tf.tensor([1, 2, 3, 4], [1, 1, 4]);
x.squeeze().print();**------RESULT------
Tensor     [1, 2, 3, 4]********

Returns→ tf。张量

模型

模型是层的集合,有关层如何连接的详细信息,请参见模型创建。

27 - tf。 型号()延伸至集装箱

模型是由层组成的数据结构,其节点被定义为输入和输出。

用 tf.model 制作的模型比 tf.sequential 模型更普通。

下面的代码片段定义了一个由两个密集层(全连接)组成的模型, 10 和 4 个单元。****

*******//Define input, which has a size of 5(not including batch dimension)*
**const input = tf.input({shape: [5]});** 
*// First dense layer uses relu activation.* 
**const denseLayer1 = tf.layers.dense({units: 10, activation: 'relu'});** 
*// Second dense layer uses softmax activation.* 
**const denseLayer2 = tf.layers.dense({units: 2, activation: 'softmax'})**;  
*// Obtain the output symbolic tensor by applying the layers on the input.* 
**const output = denseLayer2.apply(denseLayer1.apply(input));** *// Create the model based on the inputs.* 
**const model = tf.model({inputs: input, outputs: output});** *// The model can be used for training, evaluation and prediction.* 
*// For example, the following line runs prediction with the model on* *// some fake data.* 
**model.predict(tf.ones([2, 5])).print();****------RESULT------
Tensor     [[0.3465916, 0.6534085],      [0.3465916, 0.6534085]]********

27.1 - 编译 ( config )

为训练和评估配置和准备模型。编译用配置(优化器、损失和/或度量)装备模型。在未编译的 模型上调用 fit 或 evaluate 会抛出错误。

退货→ 作废

27.2 - 评估 ( x,y,config?)

返回测试模式下模型的损失值和度量值,这些值是在 compile()期间指定的,需要在调用 evaluate()之前发生。

********const** model = tf.sequential({    
layers: [tf.layers.dense({units: 1, inputShape: [10]})] }); model.compile({optimizer: 'sgd', loss: 'meanSquaredError'}); 
**const** result = **model.evaluate(tf.ones([8, 10]), tf.ones([8, 1]),               { batchSize: 4})**; 
result.print();
**------RESULT------
Tensor     0.00010169133020099252********

返回→ tf。标量tf。标量[]

27.3 - 预测 ( x,config?)

为输入样本生成输出预测,计算分批完成。

********const** model = tf.sequential({
   layers: [tf.layers.dense({units: 1, inputShape: [10]})]
});
model.predict(tf.ones([8, 10]), {batchSize: 4}).print();
**------RESULT------
Tensor    
[[1.8470926],      
[1.8470926],      
[1.8470926],      
[1.8470926],      
[1.8470926],      
[1.8470926],      
[1.8470926],      
[1.8470926]]********

返回→ tf。张量tf。张量[]

27.4 - 预测批次 ( x )

返回一批样本的预测值,其中 x 是张量。

********const** model = tf.sequential({
   layers: [tf.layers.dense({units: 1, inputShape: [10]})]
});
model.predictOnBatch(tf.ones([8, 10])).print();
**------RESULT------** **Tensor     
[[-1.1825931],      
[-1.1825931],      
[-1.1825931],      
[-1.1825931],      
[-1.1825931],      
[-1.1825931],      
[-1.1825931],      
[-1.1825931]]********

返回→ tf。张量tf。张量[ ]

27.5 - 拟合 ( x,y,config?)

为固定数量的历元(数据集上的迭代)训练模型。

********const** model = tf.sequential({      
layers: [tf.layers.dense({units: 1, inputShape: [10]})] }); model.compile({optimizer: 'sgd', loss: 'meanSquaredError'}); 
for (let i = 1; i < 5 ; ++i) {    
**const** h = await model.fit(tf.ones([8, 10]), tf.ones([8, 1]), 
                          { batchSize: 4, epochs: 3    });    
console.log("Loss after Epoch " + i + " : " + h.history.loss[0]); 
}
**------RESULT------** **Loss after Epoch 1 : 0.32676371932029724 
Loss after Epoch 2 : 0.016571789979934692 
Loss after Epoch 3 : 0.0008404387044720352 
Loss after Epoch 4 : 0.00004262066795490682********

退货→ 承诺

28 - tf。()延伸到 tf。型号****

一个有一堆层的模型,从一层到下一层线性进给。

*******// Define a model for linear regression.*   
**const** model = tf.sequential();   
model.add(tf.layers.dense({units: 1, inputShape: [1]}));    
*//Prepare model for training: Specify the loss and the optimizer.*   
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});    
*// Generate some synthetic data for training.*   
**const** xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);   
**const** ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);    
*// Train the model using the data then do inference on a data point //the* *model hasn't seen:*   
await model.fit(xs, ys);   model.predict(tf.tensor2d([5], [1, 1])).print();**------RESULT------** **Tensor      [[3.1389987],]********

28.1 - 添加 (图层)

在层堆栈上添加一个层实例。

******const model = tf.sequential();
model.add(tf.layers.dense({units: 8, inputShape: [1]})); model.add(tf.layers.dense({units: 4, activation: 'relu6'})); model.add(tf.layers.dense({units: 1, activation: 'relu6'}));

*// Note that the untrained model is random at this point.*
 model.predict(tf.randomNormal([10, 1])).print();**------RESULT------** **Tensor     [[0.0679427],      
[0.3440365],      
[0.4146437],      
[0        ],      
[0.0855753],      
[0.0688378],      
[0.1540508],      
[0        ],      
[0        ],      
[0        ]]********

退货→ 作废

28.2 - 评估 ( x,y,config?)

返回测试模式下模型的损失值&度量值,计算是成批完成的。

********const** model = tf.sequential({
   layers: [tf.layers.dense({units: 1, inputShape: [10]})]
});
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
**const** result = model.evaluate(tf.ones([8, 10]), tf.ones([8, 1]), {
   batchSize: 4,
});
result.print();**------RESULT------** **Tensor     5.569275379180908********

返回→ tf。标量tf。标量[]

28.3 - 预测 ( x,config?)

为输入样本生成输出预测,计算分批完成。

********const** model = tf.sequential({
   layers: [tf.layers.dense({units: 1, inputShape: [10]})]
});
model.predict(tf.ones([2, 10])).print();**------RESULT------** **Tensor     [[-0.6576568],      [-0.6576568]]********

返回→ tf。张量tf。张量[]

28.4 - 拟合 ( x,y,config?)

为固定数量的历元(数据集上的迭代)训练模型。

********const** model = tf.sequential({
   layers: [tf.layers.dense({units: 1, inputShape: [10]})]
});
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
**const** history = await model.fit(tf.ones([8, 10]), tf.ones([8, 1]), {
   batchSize: 4,
   epochs: 3
});
console.log(history.history.loss[0]);**------RESULT------** **0.486328125********

退货→ 承诺

29-TF . load model(path 或 IOHandler )****

加载一个模型,包括它的拓扑和可选的权重。

例 1 :将 tf.model()的拓扑和权重保存到浏览器本地存储;然后装回去。

********const** model = tf.sequential(
     {layers: [tf.layers.dense({units: 1, inputShape: [3]})]});
console.log('Prediction from original model:');
model.predict(tf.ones([1, 3])).print();

**const** saveResults = await model.save('localstorage://my-model-1');

**const** loadedModel = await tf.loadModel('localstorage://my-model-1');
console.log('Prediction from loaded model:');
loadedModel.predict(tf.ones([1, 3])).print();**------RESULT------
Prediction from original model: Tensor      [[0.7820088],] Prediction from loaded model: Tensor      [[0.7820088],]********

示例 2: 从 HTML 文件输入元素中从用户选择的文件中加载模型。

*******// Note: this code snippet will not work without the HTML elements in the page*
**const** jsonUpload = document.getElementById('json-upload');
**const** weightsUpload = document.getElementById('weights-upload');**const** model = await tf.loadModel**(**
tf.io.browserFiles([jsonUpload.files[0],     weightsUpload.files[0]])**)**;******

示例 3: 从 HTTP 服务器加载一个模型。

********const** model = await
     tf.loadModel('https://storage.googleapis.com/tfjs-models/tfjs/iris_v1/model.json')******

模型管理

30.1-TF . copy model(sourceURL,destURL )****

将模型从一个 URL 复制到另一个 URL。

*******// First create and save a model.* 
**const** model = tf.sequential(); 
model.add(tf.layers.dense**(**      {units: 1, inputShape: [10], activation: 'sigmoid'})**)**; 
await model.save('localstorage://demo/management/model1'); 

*// Then list existing models.* 
console.log(await tf.io.listModels()); *// Copy the model, from Local Storage to IndexedDB.* 
await tf.io.copyModel('localstorage://demo/management/model1',      'indexeddb://demo/management/model1'); *// List models again.* 
console.log(await tf.io.listModels()); 

*// Remove both models.* 
await tf.io.removeModel('localstorage://demo/management/model1'); await tf.io.removeModel('indexeddb://demo/management/model1');**------RESULT------
[object Object] [object Object]********

退货→ 承诺

30.2-TF . list models()****

列出存储在注册存储介质中的所有型号。

*******// First create and save a model.* 
const model = tf.sequential(); 
model.add**(**tf.layers.dense(  {units: 1, inputShape: [10], activation:   'sigmoid'})**)**; 
await model.save('localstorage://demo/management/model1');

*// Then list existing models.* 
console.log(await tf.io.listModels()); *// Delete the model.* 
await tf.io.removeModel('localstorage://demo/management/model1'); 

*// List models again.* 
console.log(await tf.io.listModels());**------RESULT------
[object Object] [object Object]********

退货:→ 承诺

30.3-TF . move model(sourceURL,destURL )****

将模型从一个 URL 移动到另一个 URL。

*******// First create and save a model.* 
**const** model = tf.sequential(); 
model.add(tf.layers.dense({units: 1, inputShape: [10], activation: 'sigmoid'})); 
await model.save('localstorage://demo/management/model1'); *// Then list existing models.* 
console.log(await tf.io.listModels()); *// Move the model, from Local Storage to IndexedDB.* 
await tf.io.moveModel('localstorage://demo/management/model1',      'indexeddb://demo/management/model1'); *// List models again.* 
console.log(await tf.io.listModels()); *// Remove the moved model.* 
await tf.io.removeModel('indexeddb://demo/management/model1');**------RESULT------
[object Object] [object Object]********

退货→ 承诺

30.4-TF . remove model(网址)****

从注册的存储介质中删除由 URL 指定的型号。

*******// First create and save a model.* 
**const** model = tf.sequential(); 
model.add(tf.layers.dense(      {units: 1, inputShape: [10], activation: 'sigmoid'})); 
await model.save('localstorage://demo/management/model1'); *// Then list existing models.
* console.log(await tf.io.listModels()); *// Delete the model.* 
await tf.io.removeModel('localstorage://demo/management/model1'); *// List models again.* 
console.log(await tf.io.listModels());
**------RESULT------
[object Object] [object Object]********

退货→ 承诺

层(高级激活)

31.1-TF . layers . leaky relu(config?)****

输入形状:任意。将该层用作模型中的第一层时,使用配置 **inputShape**

(x) = alpha * x for x < 0. f(x) = x for x >= 0.

输出形状→与输入形状相同。

returns→TF . layers . layer****

31.2-TF . layers . soft max(config?)****

输入形状 →任意。将该层用作模型中的第一层时,使用配置inputShape

输出形状 →与输入形状相同。

returns→TF . layers . layer****

层(基本功能)

32.1-(单位,激活好玩。,配置?)********

创建一个密集的(完全连接的)层。

输出=激活(点(输入,内核(又名权重))+偏差)

单位(数字)正整数,输出空间的维数。

returns→TF . layers . layer****

32.2-TF . layers . dropout(rate,config?)****

将漏失应用于输入。

速率(数字)在 0 和 1 之间浮动。要丢弃的输入单位的分数。

returns→TF . layers . layer****

32.3-TF . layers . flatten(config?)****

拉平输入,不影响批量大小。

它将输入到 1D 的每一批变平(使输出为 2D)。

********const** input = tf.input({shape: [4, 3]});
**const** flattenLayer = tf.layers.flatten();*// Inspect the inferred output shape of flatten layer, which*
*// equals `[null, 12]`. The 2nd dimension is 4 * 3, i.e., the result // of the flattening.(The 1st dimension is undermined batch size.)*console.log(JSON.stringify(flattenLayer.apply(input).shape));**------RESULT------
[null,12]********

returns→TF . layers . layer****

层(卷积)

33-TF . layers . conv2d(滤镜)****

该层创建一个卷积核,该卷积核与层输入进行卷积,以产生输出张量。

滤波器(数字)输出空间的维数(即卷积中滤波器的数量)。

returns→TF . layers . layer****

34-TF . layers . cropping 2d(裁剪,配置?)****

该层可以在图像张量的顶部、底部、左侧和右侧裁剪输入。

裁剪 (number|[number,number]|[[number,number],[number,number]])裁剪沿宽度和高度的尺寸。

********const** model = tf.sequential(); model.add(tf.layers.cropping2D({cropping:[[2, 2], [2, 2]],                                 inputShape: [128, 128, 3]})); *//now output shape is [batch, 124, 124, 3]*******

returns→TF . layers . layer****

图层(标准化)

35-TF . layers . batch 规格化 ( axis,config?)

标准化每批前一层的激活,即应用一个保持平均激活接近 0 和激活标准偏差接近 1 的变换。

(数字)应该归一化的整数轴(通常是特征轴)。默认值为-1。

返回→ tf.layers.Layer

层(池化)

36-TF . layers . averagepool2d(poolSize,config )****

空间数据的平均池化操作。

poolSize (number 或[number,number])在每个维度[垂直,水平]中缩减的因子。需要一个整数或 2 个整数的数组。

returns→TF . layers . layer****

注:他们还有平均池 1d全局平均池等。****

37-TF . layers . maxpool2d(poolSize, config )****

空间数据的最大池化操作。

pool size(number |[number,number])在每个维度[垂直,水平]中缩减的因子。需要一个整数或 2 个整数的数组。

returns→TF . layers . layer****

注:它们还有 maxPooling1dglobalMaxPooling 等。

层(包装)

38-TF . layers . bidirectional(layer,config )****

它包括复制网络中的第一个循环层,从而现在有两个并排的层,然后将输入序列原样作为输入提供给第一层,并将输入序列的反向副本提供给第二层。这项技术有助于 LSTMs。

图层 (RNN)一个要被包裹的 RNN 图层的实例。

退货→ 包装

39-TF . layers . time distributed(图层)****

输入应该至少是 3D 的,索引 1 的维度将被认为是时间维度。

returns→TF . layers . layer****

图层(当前)

40-TF . layers . rnn(cell(TF。RNNCell 或 tf。RNNCell[ ] ) )****

输入形状:带形状的 3D 张量。

returns→TF . layers . layer****

41 - tf。multi rnncell(lstmCells,data,c,h)****

计算 LSTMCells 堆栈的下一个状态和输出。

每个单元格的输出用作下一个单元格的输入

lstmCellsLSTMCell 函数的数组。

数据 输入到单元格中。

c前一个单元格状态的数组。

h 前一个单元输出的数组。

返回→【TF。Tensor2D[],tf。Tensor2D[]]****

注意:它们还有TF . layers . simplernncell****

TF . layers . stackednncells(配置),****

layers . simplernn(配置)****

42-TF . layers . lstm【配置】****

长短期记忆层

********const** lstm = tf.layers.lstm({units: 8, returnSequences: true}); *// Create an input with 10 time steps.* 
**const** input = tf.input({shape: [10, 20]}); 
**const** output = lstm.apply(input); console.log(JSON.stringify(output.shape)); *// [null, 10, 8]: 1st dimension is unknown batch size; 
// 2nd dimension is the same as the sequence length of [tf.input()]//(#input), due to `returnSequences`: `true`;* 
*// 3rd dimension is the `LSTMCell`'s number of units.***------RESULT------
[null,10,8]********

returns→TF . layers . layer****

43-TF . layers . lstmcell(配置)****

LSTM 单元与 RNN 子类 LSTM 的不同之处在于,其应用方法仅获取单个时间步长的输入数据,并在该时间步长返回单元的输出,而 LSTM 获取多个时间步长的输入数据。

例如:

******const cell = tf.layers.lstmCell({units: 2}); 
const input = tf.input({shape: [10]}); 
const output = cell.apply(input);  console.log(JSON.stringify(output.shape)); 
*// [null, 10]: This is cell's output at a single time step. The 1st* *// dimension is the unknown batch size.***------RESULT------
[null,10]********

LSTMCell 工作流最典型的用途是将多个像元组合成一个堆叠的 RNN 像元。例如

********const** cells = [tf.layers.lstmCell({units: 4}),          tf.layers.lstmCell({units: 8}), ]; 
const rnn = tf.layers.rnn({cell: cells, returnSequences: true}); *//Create input with 10 time steps and length-20 vector at each step.* 
const input = tf.input({shape: [10, 20]}); 
const output = rnn.apply(input);console.log(JSON.stringify(output.shape)); *// [null, 10, 8]: 1st dimension is unknown batch size; 2nd dimension //is the* *same as the sequence length of [tf.input()](#input), due to //`returnSequences`: `true`;* *3rd dimension is the last `lstmCell`'s //number of units.***------RESULT------
[null,10,8]********

返回→ tf。RNNCell

44-TF . basiclstmcell(健忘偏差,lstmKernel,lstmBias,数据,c,h )****

计算 BasicLSTMCell 的下一个状态和输出。

c 前一个单元格状态。

h 前一个单元输出。

returns→【TF。Tensor2D,tf。Tensor2D]****

训练(梯度)

45-TF . grad(f)****

f 代表数学函数。

*******// f(x) = x ^ 2* 
**const** f = x => x.square(); *// f'(x) = 2x* 
**const** g = tf.grad(f); 

**const** x = tf.tensor1d([2, 3]); 
g(x).print();**------RESULT------
Tensor     [4, 6]********

另一个例子

*******// f(x) = x ^ 3* 
**const** f = x => x.pow(tf.scalar(3, 'int32')); *// f'(x) = 3x ^ 2* 
**const** g = tf.grad(f); *// f''(x) = 6x* 
**const** gg = tf.grad(g);  
**const** x = tf.tensor1d([2, 3]); 
gg(x).print();**------RESULT------
Tensor     [12, 18.0000038]********

returns→(x:TF。张量 ,dy?:T30TF。张量)=>TF。张量

46-TF . custom grad【f】****

*******// Override gradient of our custom x ^ 2 op to be dy * abs(x);*
**const** customOp = tf.customGrad**(**x => {    
    return {value: x.square(), gradFunc: dy => [dy.mul(x.abs())]}; 
}**)**;**const** x = tf.tensor1d([-1, -2, 3]); 
**const** dx = tf.grad(x => customOp(x));  
console.log(`f(x):`); 
customOp(x).print(); 
console.log(`f'(x):`); 
dx(x).print();**------RESULT------
f(x): Tensor     [1, 4, 9] f'(x): Tensor     [1, 2, 3]********

returns→(…args:TF。张量[])=>TF。张量****

培训(优化人员)

47-TF . train . Adam(learning rate?,beta1?,beta2?,ε?)****

构建一个使用 Adam 算法的 AdamOptimizer。https://arxiv.org/abs/1412.6980

参数:

learningRate (数字)用于 Adam 梯度下降算法。可选择的

(数字)一阶矩估计值的指数衰减率。可选择的

(数字)二阶矩估计值的指数衰减率。可选择的

ε(数字)用于数值稳定的小常数。可选择的

Returns→ AdamOptimizer

48-TF . train . rms prop(learning rate,decay?,气势?,ε?,居中?)****

构造一个 tf。使用 RMSProp 梯度下降的 RMSPropOptimizer。

参数:

学习率(数字)用于 RMSProp 梯度下降算法的学习率。

衰减(数字)历史/未来梯度的贴现因子。可选择的

动量(数字)用于 RMSProp 梯度下降算法的动量。可选择的

ε(数字)小值避免分母为零。可选择的

居中(布尔型)如果为真,则通过梯度的估计方差对梯度进行归一化。可选择的

Returns→ tf。RMSPropOptimizer

培训(损失)

49-TF . losses . meansquadererror(标签,预测,权重?,还原?)****

计算两个张量之间的均方误差。

返回→ tf。张量

50-TF . losses . softmaxcrossentropy(labels,logits,dim?)****

计算逻辑和标签之间的 softmax 交叉熵。它测量类别互斥的离散分类任务中的概率误差。

例如,每个 CIFAR-10 图像都有且只有一个标签:图像可以是狗或卡车,但不能同时是狗和卡车。

返回→ tf。张量

自我提醒:不要列很长的清单

— — — — — —奖金— — — — —

表演

TF . tidy(nameOrFn,Fn?,gradMode?)****

执行 f 提供的函数,执行后清除 f 分配的所有中间张量,f 返回的除外

使用这种方法有助于避免内存泄漏。一般来说,将对操作的调用包装在 tf.tidy() 中进行自动内存清理。

*******// y = 2 ^ 2 + 1* 
**const** y = tf.tidy(() => {    */
/ a, b, and one will be cleaned up when the tidy ends.*    
**const** one = tf.scalar(1);    
**const** a = tf.scalar(2);    
**const** b = a.square();     
console.log('numTensors (in tidy): ' + tf.memory().numTensors);     *// The value returned inside the tidy function will return*    
*// through the tidy, in this case to the variable y.*    
return b.add(one); });  
console.log('numTensors (outside tidy): ' + tf.memory().numTensors); **y.print();****------RESULT------
numTensors (in tidy): 16 
numTensors (outside tidy): 14 
Tensor     5********

returns→void | number | string | TF。张量|tf。张量[]|{[key: string]:tf。张量|数字|字符串}****

(结果)********

保持一个 tf。tf.tidy()内部生成的张量不会被自动释放。

********let** b; 
**const** y = tf.tidy**(**() => **{**    
      const one = tf.scalar(1);    
      const a = tf.scalar(2); *// b will not be cleaned up by the tidy. a and one will be cleaned //up when the tidy ends.*    
b = tf.keep(a.square());     
console.log('numTensors (in tidy): ' + tf.memory().numTensors); *// The value returned inside the tidy function will return*    
*// through the tidy, in this case to the variable y.*    
return b.add(one); 
**})**; console.log('numTensors (outside tidy): ' + tf.memory().numTensors); console.log('y:'); y.print(); 
console.log('b:'); 
b.print();**------RESULT------
numTensors (in tidy): 16 
numTensors (outside tidy): 15 
y: Tensor     5 
b: Tensor     4********

Returns→ tf。张量

()********

返回程序当前时间的内存信息。

Returns→ MemoryInfo

TF . time(f)****

执行 f( ) 并返回一个带有计时信息的承诺。

********const** x = tf.randomNormal([20, 20]); 
**const** time = await tf.time(() => x.matMul(x)); console.log**(**`kernelMs: ${time.kernelMs},                       wallTimeMs:   ${time.wallMs}`**)**;**------RESULT------
kernelMs: 0.10000000149011612, wallTimeMs: 33.40000000037253********

退货→ 承诺

TF . set back end(backen dtype,safeMode?)****

设置后端(cpu、webgl 等)负责创建张量并在这些张量上执行操作。

退货→ 作废

TF . topixels(img,canvas?)****

画出一个 tf。像素值的张量 到一个字节数组或可选的画布。

此外,当输入的 dtype 为“float32”时,我们假定值在范围[0–1]内。否则,当输入为“int32”时,我们假定值在范围[0–255]内。

要绘制到的画布。可选择的

img (tf。Tensor2D 或 tf。Tensor3D)秩 2 或秩 3 张量。如果等级为-2,则绘制灰度。如果秩为 3,则深度必须为 1、3 或 4。当深度为 1 时,绘制灰度。

退货→ 承诺

现在…我很确定我已经错过了你最喜欢的 API,所以不要忘记在评论或任何问题中提到它。

感谢您阅读帖子。

我希望这篇文章对你有所帮助。

关注我 获取更多惊艳教程。

鼓掌吧!分享一下!跟我来。

乐意帮忙。荣誉……..

你会喜欢的以前的故事:

****** [## 手机上的 tensor flow:tensor flow Lite

我们得到了什么?

towardsdatascience.com](/tensorflow-on-mobile-tensorflow-lite-a5303eef77eb) [## 纪元与批量大小与迭代次数

了解您的代码…

towardsdatascience.com](/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9) [## 手机上的 TensorFlow:教程

在 Android 和 iOS 上

towardsdatascience.com](/tensorflow-on-mobile-tutorial-1-744703297267) [## 激活函数:神经网络

Sigmoid,tanh,Softmax,ReLU,Leaky ReLU 解释!!!

towardsdatascience.com](/activation-functions-neural-networks-1cbd9f8d91d6)******

500 多个关于数据科学和机器学习的精彩书签

原文:https://towardsdatascience.com/500-free-high-quality-online-resources-for-data-science-machine-learning-7eda5bf33872?source=collection_archive---------14-----------------------

这是我去年建立的免费在线数据科学和机器学习资源列表。网络上有丰富的信息,作为一名数据科学专业人员,我经常会在数据科学资源的海洋中丢失真正有用的东西。从那时起,我开始在一个地方组织一切——书签工具栏——易于访问、共享和维护。

这个列表包括文章、教程、博客和其他与数据科学相关的有趣的东西——这些东西我觉得很有用,你也可能觉得有用。

如何使用这个列表

当你试图理解/使用 PCA,但它没有意义时,这就是你去“PCA”部分并阅读一些关于 PCA 背后的直觉的文章的时候。

如果你只是想读一些关于人工智能世界正在发生的事情的酷的东西,去“文章”区,你会发现一些有趣的东西。

你明白了吗..

注意:您可以直接右键打开该页面的任意链接,也可以从这里下载 HTML 文件,将该列表作为书签导入您喜欢的浏览器中!

名单

文章

人类和人工智能可能同样无法理解

如何交付机器学习项目—洞察数据

身体是真正智能机器的缺失环节| Aeon Ideas

机器学习的高管入门

机器学习的阴暗面| TechCrunch

人类的机器学习,第 2.2 部分:监督学习 II

越来越擅长机器学习— Robert Chang — Medium

社会问题的复杂性超过了人类的大脑

在人工智能时代,语言比以往任何时候都重要

Neuralink 和大脑的神奇未来——等等,为什么

人工智能的商业

人工智能高管指南|麦肯锡

机器偏差— ProPublica

我们已经没有时间让算法变得公平了

HBR 在算法和偏见上犯了什么错误

重新思考数据科学中的快与慢——黑客正午

机器学习和深度学习概述(哈佛商学院讲座)——YouTube

优步天气预报简介

遇见米开朗基罗:优步的机器学习平台

MLflow:管理机器学习生命周期的平台——O ' Reilly Media

五个 c—奥莱利媒体

如何让机器学习从探索走向实现——奥莱利媒体

宣誓和清单——奥赖利媒体

想要更少偏见的决定?使用算法。

排列特征重要性|机器学习博客

2018 年值得关注的 25 家机器学习创业公司

你的产品里没有机器学习?从这里开始—杠杆—介质

构建人工智能软件:数据驱动与模型驱动的人工智能,以及我们为什么需要人工智能专用软件…

为机器学习学习数学

大型复杂数据集分析的实用建议

人工智能(AI)课程、书籍、视频讲座和论文的精选列表。

Neuralink 想把你的大脑连接到互联网上——会有什么问题呢?

微软人工智能复出内幕|连线

我从网上收集的人工智能和机器学习资源的精选列表

人工智能正在发明人类无法理解的语言。我们应该阻止它吗?

顶级人工智能、数据科学和机器学习资源列表

摩根大通金融领域机器学习工作大规模指南

现代机器学习算法:优势和劣势

2118 年,哪种机器学习算法会继续使用?

无人驾驶 AI 如何防止过拟合和泄漏— H2O.ai 博客

成为数据科学家应该知道的 10 种机器学习算法

我应该使用哪种机器学习算法?—潜意识沉思

数据科学和预测分析的 7 个用例

ML 规则

神经网络快速介绍—数据科学博客

你不一定要成为数据科学家才能胜任这个必备的分析角色

AI 的大部分商业用途将在两个领域

机器学习的规则:| ML 通用指南|谷歌开发者

接近机器学习问题—Bhushan shevale—Medium

Zayd 的博客——为什么机器学习很“难”?

气流:工作流管理平台——Airbnb 工程&数据科学——媒介

博客和教程

超过 200 个最好的机器学习、NLP 和 Python 教程— 2018 版

【2017 年最全面的数据科学学习计划

机器学习|谷歌开发者

机器学习很有趣!—中等

一系列 Jupyter 笔记本,使用 Scikit-Learn 和 TensorFlow 带您了解 python 中机器学习和深度学习的基础知识。

Python 中完整的机器学习演练:第一部分

从 187 个 Quora 问题中学习机器学习和 NLP

15 小时专家视频深入介绍机器学习| R-bloggers

Python 编程教程

深度学习项目

机器学习入门|机器学习速成班|谷歌开发者

Python 中的“好的数据科学”机器学习项目演练:第一部分

Python 中完整的机器学习演练:第一部分

初学者可以免费下载的 5 个最佳数据科学资源

克里斯·阿尔邦

程序员深度学习——36 小时免费课程

数据科学的基本数学:“为什么”和“如何”

Bokeh vs Dash——哪个是 Python 最好的仪表盘框架?

机器学习和深度学习工程师必备的备忘单

(9) 11。机器学习介绍— YouTube

详细教授数据探索的完整教程

有趣的 Jupyter 笔记本图库 jupyter/jupyter Wiki GitHub

吴恩达——监督学习笔记

无监督特征学习和深度学习教程

data-science-ipython-notebooks/readme . MD at master donne Martin/data-science-ipython-notebooks GitHub

吴恩达 Coursera 深度学习课程笔记

rasbt/Python-Machine-Learning-book:《Python 机器学习(第一版)》图书代码库和信息资源

ageron/handson-ml:一系列 Jupyter 笔记本,使用 Scikit-Learn 和 TensorFlow 带您了解 python 中机器学习和深度学习的基础知识。

ujjwalkarn/Machine-Learning-Tutorials:机器学习和深度学习教程、文章和其他资源

josephmisiti/awesome-Machine-Learning:一个由 awesome 机器学习框架、库和软件组成的精选列表。

ujjwalkarn/Machine-Learning-Tutorials:机器学习和深度学习教程、文章和其他资源

ujjwalkarn/DataSciencePython:使用 Python 的常见数据分析和机器学习任务

开放机器学习课程—中级

数据科学初学者教程| KagglePython 中完整的机器学习演练:第三部分

从数据中学习——在线课程(MOOC)

GitHub—ShuaiW/ml-cheat sheet:一个不断更新的 python 机器学习 cheatsheet

教程【Auton Lab】Python 中脊和套索回归的完整教程

统计学习简介

技术对话-数据表/数据表技术对话。主 silvabrian/tech-talk-datatable 的 rmd

综合数据科学、机器学习面试指南

出版物/有趣的网站等

朱丽亚·西尔格

数据科学服务 非官方的谷歌数据科学博客

Nate Silver 的 FiveThirtyEight 使用统计分析——硬数字——讲述关于政治、体育、科学、经济和文化的引人入胜的故事。

25 篇永恒的数据科学文章—数据科学中心 学习数据科学

Data Viz Project |收集可视化数据,从中获得灵感并找到合适的类型。

塞巴斯蒂安·拉什卡的网站

dog dog fish——数据科学,以及其他。

TDS 团队—中型 最新帖子—塞巴斯蒂安·绍尔统计博客

Siraj Raval—YouTube—YouTube

建立数据科学投资组合的关键是让你找到工作

数据科学中心 数据科学搭便车指南,机器学习,R,Python —数据科学中心

2018 年你应该阅读的 5 大数据科学出版物| Udacity

本·兰伯特— YouTube — YouTube

最好的数据科学学习资源和我的数据科学之旅-

库克数据科学

数据好奇 2017 年回顾:我最喜欢的数据故事、数据集和可视化结果…

如何利用您的数据科学项目创造价值 整合 Google Sheets 和 Jupyter Notebooks

流动数据

ClaoudML

免费数据科学书籍必读清单—

走向数据科学

EliteDataScience —第 3 页,共 4 页—促进您的数据科学职业生涯。

机器学习软件公司| simMachines

纽约市分析 驱动数据

机器学习的 50 个最佳公共数据集—数据驱动的投资者—媒介

数据科学|特雷罗 现代统计学习方法

面向数据科学的 Python 备忘单

Scikit _ Learn _ Cheat _ Sheet _ python . pdf

数据科学家简历项目| Statsbot 博客

ka ggle 上的数据科学词汇表!

我们的数据科学工作流程—迈向数据科学—媒介

机器学习的数学——YouTube

数据科学概念

主成分分析

如何在应用主成分分析(PCA)时不哑?

主成分分析直观讲解

主成分分析的一站式商店—迈向数据科学—媒体

pca —主成分分析的意义,特征向量&特征值—交叉验证 主成分分析输出的结论—交叉验证

有没有 PCA 比 t-SNE 更适合的例子?—交叉验证

了解主成分分析、特征向量&特征值—交叉验证

降维:主成分分析,第一部分——YouTube

大脑咀嚼博客档案主成分分析(PCA) vs 普通最小二乘法(OLS):一个直观的解释

了解主成分分析—黑客正午 主成分分析

Python 主成分分析—地区数据实验室—中型

在 Python 中使用 PCA 和 t-SNE 可视化高维数据集

缺失数据

熊猫数据帧中的缺失数据Python 中缺失值的故事—

走向数据科学 如何用 Python 处理缺失数据 处理缺失数据— pandas 0.22.0 文档

Claudia Perlich 对我如何处理预测模型中缺失值的回答?——Quora

特征工程

Python 中的自动化特征工程——走向数据科学 特征

工程| Python 数据科学手册

为什么自动化特征工程将改变你进行机器学习的方式

GitHub—Feature tools/Automated-Manual-Comparison:自动与手动特征工程对比。使用功能工具实现。

树模型的特征重要性测量—第一部分 深度特征综合:自动化特征工程如何工作|特征实验室 了解特征

工程(第一部分)——连续数字数据 自动化特征

Python 中的工程学——走向数据科学

回归

回归分析的复习

线性回归的工作原理

线性回归—详解—走向数据科学 所有机器学习者都应该知道的 5 个回归损失函数

假设检验| R 教程 在 R |统计部门使用 t 检验

回归分析:我如何解释 R 平方并评估拟合优度?

为什么你需要检查你的残差图来进行回归分析:或者,犯错是人之常情,随机犯错是统计学上的奇迹

如何解释回归分析结果:P 值和系数| Minitab

R 平方需要多高?—吉姆的统计数据

线性回归— Python

比较连续数据、二元数据和计数数据的假设检验 Jim 的统计数据

方差分析的简单介绍(Excel 中的应用)

统计学入门—目录 为赶时间的人统计—走向数据科学

自然语言处理

预处理文本数据的通用方法

自然语言处理很有趣!—亚当·盖特基—中号

理解终极指南&实现自然语言处理 自然语言处理初学者:使用 TextBlob

GitHub—JasonKessler/scattertext:各种文档类型之间语言差异的美丽可视化。

使用 Python 进行可视文本分析| The Mien Blog

使用 Python 处理大型 CSV 文件

轻松学习正则表达式

处理文本数据的终极指南(使用 Python)——面向数据科学家&工程师

如何解决 90%的 NLP 问题:分步指南

concrete _ NLP _ tutorial/NLP _ notebook . ipynb at master 百块/concrete_NLP_tutorial

使用 Python NLTK 的 NLP 教程(简单例子)— DZone AI

正则表达式备忘单

皱胃向左移

gensim:人类主题建模

主题建模非常简单。|石头和贝壳

使用 R |对主题建模的温和介绍到后期

Python 主题建模初学者指南

潜在狄利克雷分配简介

主题建模和 t-SNE 可视化

使聚集

聚类概述|海量数据集挖掘|斯坦福大学— YouTube

聚类介绍&不同的聚类方法

数据科学家需要了解的 5 种聚类算法

数据科学家需要知道的 5 种聚类算法 层次聚类:简单解释| Orange 博客

模型评估

准确度、精确度、召回率& F1 分数:性能指标解释— Exsilio 博客

混淆矩阵术语简单指南

了解 ROC 曲线

模型选择的嵌套交叉验证—交叉验证

如何选择 k 重交叉验证后的预测模型?—交叉验证

嵌套与非嵌套交叉验证— scikit-learn 0.19.0 文档

为评估机器学习模型选择正确的指标——第一部分

找出哪些特征有助于每行的预测

超越准确性:精确度和召回率——走向数据科学

分类 AUC 代表什么,它是什么?—交叉验证

Python 中的训练/测试分割和交叉验证—面向数据科学— Medium

如何处理机器学习中的不平衡类

AB 测试

Ab 测试指南—挂钩数据

Julia Silge —从功率计算到 P 值:堆栈溢出时的 A/B 测试

优步实验平台的引擎盖下

不进行 A/B 测试时的 5 个技巧

集成学习

Python 中梯度增强(GBM)参数调整完全指南

Python | ka ggle中的组装/堆栈介绍

机器学习的梯度推进算法简介——机器学习掌握

从零开始的梯度提升— ML 审查—中等

一位 Kaggle 大师讲解渐变提升|没有自由的预感 (33)合集(3):渐变提升— YouTube

Python 中梯度增强(GBM)参数调整的完整指南

Python | ka ggle 中的组装/堆栈介绍

机器学习的梯度推进算法简介——机器学习掌握

从零开始的梯度提升— ML 审查—中等

一个 Kaggle 高手讲解渐变提升|没有自由的预感 (33)合集(3):渐变提升— YouTube 提升树介绍— xgboost 0.71 文档

集成学习:当每个人都猜的时候…我就猜!

使用 AdaBoost 和梯度增强进行增强——数据科学家的成就——Medium

Python 中随机森林的实现和解释

如何在 Python 中使用 XGBoost

开设机器学习课程。话题五。装袋和随机森林

机器学习中的 Boosting 算法快速指南

XGBoost 中参数调整的完整指南(带 Python 代码)

到底什么是梯度下降?——数据科学家的形成——Medium

关联规则

arules:关联规则挖掘与 R — A 教程

购物篮分析简介—关联规则 可视化关联规则和项目集—plot arulesViz

使用 arulesViz GitHub 进行关联规则演示

IEEE Xplore 全文 PDF: 可视化层次分组中的关联规则

购物篮分析与 R : Salem Marafi 关联规则—RDA Ming . com:R 和数据挖掘

在 R | DataScience+ 中实现 Apriori 算法

缩放数据

什么时候标准化回归模型中的变量至关重要?

特征缩放和标准化

拟合 logistic 回归前需要标准化吗?—交叉验证

解释回归系数:改变预测变量的比例

r —如何正确使用逻辑回归中的标度—堆栈溢出

异常检测

使用 R 进行时间序列分析—时间序列 0.2 文档

如何阅读和使用盒须图|流动数据

逻辑回归

用 Python 一步步构建逻辑回归

面向数据科学的逻辑回归算法

5 个理由“逻辑回归”应该是成为数据科学家的第一件事

逻辑回归数列

SVM

支持向量机:一个简单的解释

请解释支持向量机(SVM),就像我是一个 5 岁的孩子。:机器学习

支持向量机如何工作/如何打开黑盒——YouTube

从示例中理解支持向量机算法(附带代码)

svmrecita.ppt

支持向量机解释得好|字节大小生物学

内核技巧——YouTube

决策树

决策树直觉—灰色原子—中等

决策树介绍及 R 示例

用于分类和回归的决策树和随机森林第一部分

降维

学习降维技术的初学者指南

数据降维的七种技术

(2/1)在机器学习中拥有大量的功能是一件坏事吗?——Quora

Python 中用于机器学习的特征选择工具

使用 Python | Kaggle 进行数据分析和特征提取

用 Python | Kaggle 进行数据分析和特征提取

时间数列预测法

预测&时间序列分析—制造业案例研究实例

R 中时间序列建模的完整教程

创建时间序列预测的完整指南(带 Python 代码)

(第一部分)——你能分析

通过 ARIMA 进行预测的逐步图解指南

R 中的 ARIMA 估计—YouTubeR 中的 ARIMA 预测简介

(31)时间序列预测理论| AR、MA、ARMA、ARIMA |数据科学— YouTube

自相关和偏自相关的简明介绍——机器学习掌握

其他人

分类模型介绍

机器学习中的分类算法类型

GitHub—dssg/MLforPublicPolicy:用于 CAPP 30254(用于公共政策的机器学习)的类资源

用 Scikit-learn 管道管理机器学习工作流第 1 部分:简介

正则化:偏差-方差权衡之路

机器学习算法精要(带 Python 和 R 代码)

CS485/685 主页 数据科学面试指南—走向数据科学

auto-sk learn—AutoSklearn 0 . 3 . 0 文档

统计建模与机器学习的选择路线图|统计思维

Learn | Kaggle 深度学习和计算机视觉简介| Kaggle

Squarespace/datasheets:从 Google 工作表中读取数据,向其写入数据,并修改其格式

解读机器学习模型——走向数据科学

marcotcr/lime: Lime:解释任何机器学习分类器的预测

数据可视化

二月版:数据可视化——走向数据科学

真正有效的可视化技术

用数据讲故事

David McCandless:数据可视化之美| TED 演讲| TED.com

漂亮的数据科学演示——迈向数据科学

15 种令人惊叹的数据可视化(以及从中可以学到什么)

自动生成——一行 R 代码构建流行统计结果的交互式可视化——袁博客

诺姆·罗斯| gg plot()快速介绍

初学者表格—数据可视化变得简单

数据科学、商业智能专家中级 Tableau 指南

学习高级 Tableau 的分步指南——面向数据科学和商业智能专业人士——Analytics vid hya

R 中的蜂群图显示分布|流动数据

D3 提示和技巧…马尔科姆·麦克莱恩[Leanpub PDF/iPad/Kindle]

dimple——一个用于 d3 数据可视化的简单图表 API

Bloomberg/bq plot:IPython/Jupyter 笔记本的绘图库

使用 Python 中的散景进行数据可视化,第三部分:制作完整的仪表板

异种图表——奇怪但(有时)有用的图表

🌟引入破折号🌟— plotly — Medium

Viz 调色板

mathisonian/awesome-visualization-research:关于数据可视化的推荐研究论文和其他读物的列表

解读误差线——生命生物学

数据到 Viz |图形陷阱的集合

fasouto/awesome-dataviz:awesome 数据可视化库和资源的精选列表。

数据即备忘单—政策即

多维有效可视化图形语法综合指南…

分析艺术|数据可视化示例| Teradata

使用 Seaborn | Python 数据科学手册进行可视化

探索性数据分析

Python 数据探索,第 1 部分—地区数据实验室—中型

5 种简单的技术来讲述强大的数据故事— Brit Cava — Medium

使用 Python | Kaggle 进行全面的数据探索

DataExplorer:用最少的代码快速探索数据| R-bloggers

下一波浪潮:预测纽约市咖啡的未来

什么是探索性数据分析?—走向数据科学

大型复杂数据集分析的实用建议

如何抛弃 PowerPoint,用 Jupyter 和 Reveal.js 制作更好的幻灯片

reveal . js—HTML 展示框架 RPubs —太阳国 HW

R 代表数据科学 中级 Tableau 代表数据科学、商业智能专业人士

交易概率的广泛 EDA | ka ggleJupyter 笔记本查看器

结构化查询语言

1Keydata —免费在线编程教程

SQLZOO

mysql —我如何决定何时使用右连接/左连接或内连接,或者如何确定哪个表在哪一边?—堆栈溢出

面向数据科学家的高级 SQL

SQL 备忘单下载 PDF 或 PNG 格式

数据工程

NoSQL 数据建模技术——高度可扩展的博客

设计数据产品—走向数据科学 SQL vs NoSQL:如何选择— SitePoint

数据工程入门指南—第一部分— Robert Chang —中级

数据手册:在优步用元数据将大数据转化为知识

超越互动:网飞笔记本创新—网飞科技博客—媒介

Python 中的工作流:准备数据以构建模型| Civis Analytics

软件设计

如何编写数据科学中的生产级代码?

Docker 如何帮助你成为更高效的数据科学家

网络架构 101 —视频块产品&工程

对干净代码的思考— Severin Perez — Medium

使用六角形架构(HexArch)将技术代码与业务逻辑分离

代码为配置 设计流程:什么是双菱形?设计委员会

发散和收敛阶段的数据分析简单统计

用单一责任原则编写灵活的代码

软件 2.0 —安德烈·卡帕西—中型

部署和维护 Web 应用程序的工作流程——Mark Nagelberg

挖掘数据科学工具:Docker-Mark Nagelberg

为数据科学家揭秘 Docker——深度学习项目的 Docker 教程|机器学习博客

使用 Kinesis、DynamoDB 和 Twitter 的 AWS 无服务器架构教程

如何用 Amazon 索引新的和现有的 Amazon DynamoDB 内容

弹性搜索服务。 用 Amazon 索引 Amazon DynamoDB 内容

使用 AWS Lambda | AWS Compute 博客的 Elasticsearch 服务

研究

MLflow —完整机器学习生命周期的平台| MLflow

入门— Luigi 2.7.6 文档

将机器学习模型部署为 REST API——面向数据科学

GitHub—MW outs/jupy text:jupy ter 笔记本作为 Markdown 文档,Julia、Python 或 R 脚本

人工智能系统的剖析

Apache 超集(孵化)— Apache 超集文档

火花

3 分钟内开始使用 PySpark 和 Jupyter 笔记本

Python 中的 Apache Spark:初学者指南(文章)— DataCamp

如何将 Python 函数转化为 PySpark 函数(UDF)——Chang Hsin Lee——将我的想法付诸文字。

用 scikit-learn 和 PySpark 熊猫 UDF 进行大规模预测

Pyspark —基于泰坦尼克号数据集的教程— Saagie 用户群 Wiki — Saagie

GitHub—jadianes/Spark-py-notebooks:Apache Spark&Python(py Spark)大数据分析和机器学习教程作为 IPython / Jupyter 笔记本

mahmoudparsian/pyspark-Tutorial:py spark-Tutorial 提供了使用 py spark 的基本算法

2017 年 50 强星火面试问答

Python 资源

熊猫

开设机器学习课程。话题 1。熊猫的探索性数据分析

GitHub—TomAugspurger/effective—pandas:我收集的关于使用熊猫的文章的源代码。

熊猫的技巧和诀窍——走向数据科学

可视化熊猫的旋转和重塑功能——杰伊·阿拉玛——

可视化机器学习,一次一个概念

熊猫文档 10 分钟到熊猫—熊猫 0.20.3 文档

食谱—熊猫 0.20.3 文档

熊猫 API 参考

合并、加入和连接——pandas 0 . 20 . 3 文档

整形和数据透视表— pandas 0.20.3 文档

分组依据:拆分-应用-合并-pandas 0 . 20 . 3 文档

必要的基本功能—熊猫 0.20.3 文档

与 SQL 的比较— pandas 0.19.2 文档

在 Python Pandas 中汇总、聚合和分组数据| Shane Lynn 使用数据帧

对 Pandas 中的组应用操作— Python 日期时间属性

关于熊猫指数,我需要知道些什么?(第一部分)——YouTube

熊猫的 19 个基本片段

基本统计功能 快速入门教程— NumPy v1.13 手册 搜索页面

字典—艰难地学习 PythonPEP 265—按值排序字典| Python.org

数据即

Python Seaborn 初学者教程(文章)— DataCamp

Matplotlib 教程:Python 绘图(文章)—data campPython—Matplotlib 中的命名颜色—堆栈溢出

终极 Python Seaborn 教程:必须抓住他们全部

GitHub — ioam/holoviews:停止绘制你的数据—注释你的数据,让它自己可视化。

Python 图形库-可视化数据-使用 Python

如何用 Python 生成 FiveThirtyEight 图

如何可视化决策树 可视化的机器学习——伊恩·约翰逊——Medium

Matplotlib

为什么很多例子在 Matplotlib/pyplot/python 中使用“fig,ax = PLT . subplots()”—堆栈溢出

pyplot — Matplotlib 2.0.2 文档

Matplotlib API—Matplotlib 2 . 0 . 2 文档

Pyplot 教程— Matplotlib 2.0.2 文档

Matplotlib . axes . axes . plot—Matplotlib 2 . 0 . 2 文档

Matplotlib 教程

美味的汤

用 Python 解析 HTML 表格用 BeautifulSoup 和 pandas——Scott Rome——从事机器学习的数学博士

使用 BeautifulSoup 的 Python 网页抓取教程

学习 Python:第 1 部分—刮擦和清理 NBA 选秀— Savvas Tjortjoglou

用美汤刮 HTML——Python

Python Web Scraping 简介— Chi Hack 之夜—芝加哥每周一次的活动,旨在构建、分享和了解市政技术。

其他有趣的东西

一系列有用的 Python 技巧——freeCodeCamp.org

如何使用 Dask 数据帧在 Python 中运行并行数据分析

关于—狄昂

Dask — Dask 0.18.2 文件

在 AWS 上部署 Flask 应用程序—Scott Rodkey—MediumFlaskBook.comExplore Flask—Explore Flask 1.0 文档

GitHub—acro trend/awesome-Dash:awesome Dash(plotly)资源的精选列表

为 Python 安装 Oracle(CX _ Oracle)|希顿研究 掌握 Oracle+Python,第 1 部分:查询最佳实践

GitHub—krzjoa/awesome-Python-data science:Python 中数据科学软件的精选列表

pycon-2017-EDA-tutorial/2-red card-players . ipynb at master CMA wer/pycon-2017-EDA-tutorial GitHub

GitHub—EpistasisLab/tpot:Python 自动化机器学习工具,使用遗传编程优化机器学习管道。

Python 2.7.13 文档

终极 Python Seaborn 教程:必须抓住他们全部

内置函数— Python 2.7.13 文档

想 Python

时差

r 资源

使用 R Markdown 进行课堂报告 (6)使用 RStudio 的 R Markdown—YouTube

数据挖掘中 apriori 算法的初学者教程,带 R 实现| HackerEarth 博客

前 50 个 ggplot2 可视化—主列表(含完整 R 代码)

用文本数据过滤—学习数据科学

dplyr

Dplyr vs 熊猫

基础包和 ggplot2,第 3 部分| R

DP lyr-tutorial/DP lyr-tutorial。主 justmarkham/dplyr 的 Rmd 教程 GitHub

数据-争论-备忘单

使用 ggplot2 和 dplyr 进行数据探索(代码和教程)

由 tclavelle 提供的 DP lyr-tidyr-教程

R 用于数据科学 RPubs —用 dplyr & amp 进行数据处理;tidyr

RPubs—dplyr 简介,用于 R 中更快的数据操作

使用 tidyr 和 dplyr 进行数据操作

dplyr 简介

GitHub—Susan Li 2016/Data-Analysis-with-R:使用 gglot2、tidyr、dplyr、ggmap、choroplethr、shiny、逻辑回归、聚类模型等

以非常简单的方式使用 JSON 数据——学习数据科学

R 图形介绍<代码>gg plot 2</代码>

我的 ggplot2 备忘单:按任务搜索|计算机世界

备忘单—r studioGitHub—jrnold/gg themes:gg plot 主题和比例gg plot 2—备忘单

R 图目录seananderson.ca/ggplot2-FISH554/

用 MLR 包在 R 中练习机器学习技术

UIUC 注释

有没有更好的组织方式?

当然啦!我每天都这么做。当我发现新内容时,书签工具栏中的文件夹和子文件夹会发生变化和发展。因为数据科学和机器学习中的许多概念和想法重叠,所以确实没有“正确”的方式来组织这些东西。这只对我有用。确保你创造了一个适合你的系统。

6 个情感回报的数据科学项目

原文:https://towardsdatascience.com/6-emotionally-rewarding-data-science-projects-74546ab5320a?source=collection_archive---------14-----------------------

通过专注于一个像这里提到的项目,在你的工作中找到更多的满足感。

数据科学领域最适合那些热爱数学和与数字打交道的人。

虽然有些项目是单调乏味的,尤其是在初级阶段,但这个领域有大量令人兴奋和有益的工作适合有资格、有经验的专业人士。

大数据和下一代数据分析的出现让个人获得比以往更多的数据,从而使该领域更加创新和令人兴奋。

由于我们目前生活在信息时代,只有以有趣、创造性和有益的方式使用这些数据才有意义。

1.诊断和解决个人健康问题

个人健康和幸福与 10 年、20 年或 50 年前一样重要。显著的区别在于诊断机器、设备和服务的可用性——其中许多可以及时检测出大多数健康问题进行治疗。

再加上技术的快速进步,很容易看到这些设备每天都在变得越来越智能。

它们的体积也越来越小,因为下一代芯片和处理器比以往任何时候都更紧凑。一些设备甚至可以作为用户身体上的配件佩戴,或者作为智能手机应用程序使用。

但这些设备都依赖于下一代数据和先进的数据收集算法——所有这些都必须得到组织、处理和分析,以实现最大的有效性。现代软件和硬件使许多这些过程自动化,但敏锐的人眼仍然是确保数据完整性、验证来源和做出关键决策所必需的。

2.打击犯罪

刑事司法部门越来越多地以新的和创新的方式使用数据。从执行日常巡逻的地方官员到最复杂的联邦调查和审判,技术处于大多数行动的最前沿。

虽然执法机构使用的一些数据收集和存储做法存在争议,但在许多领域,这些数据对犯罪产生了真正的影响。官员们用它来预测和防止大规模屠杀,打击人口和毒品贩运等等。

数据也可以揭露白领犯罪,包括挪用公款、欺诈和其他通常发生在高级或行政级别的计划。

通过密切关注企业统计数据并发现某些趋势或模式,勤奋且训练有素的数据科学家可以快速识别可疑活动,并将其报告给适当的机构。

3.倡导改善客户服务

今天的大多数零售商,包括电子商务店面和传统的实体企业,都依靠数据来改善客户服务。他们使用预测、统计和分析(如地区人口统计、购物历史、最近的消费趋势等)来为最有价值的客户提供个性化服务。

在当今的许多商业模式中,增强客户体验是一个至关重要的策略。它也非常有效。

由于大多数消费者更喜欢具体、有针对性的广告和有用的交易,而不是迎合最低公分母的通用广告和优惠券,许多公司都在积极寻找合格的数据科学家来处理这些数据。

4.公共教育经费分析

公共教育部门一直在寻找降低风险、控制成本和满足不断变化的学生需求的方法。许多学校从国家赞助的彩票系统获得资助。例如,仅在 2017 年,弗吉尼亚彩票就向全州公立学校捐赠了超过 6 . 06 亿美元。

通过分析特定学校的支出,数据科学家可以根据他们收到的钱、学生表现、课外活动的存在等轻松得出结论。

更重要的是,数据科学家可以利用这些数字在开发未来课程和建立新的娱乐机会时提供指导和方向。

5.改善本地交通挤塞

数据在公共部门的其他领域也很有用。它最近在交通管理、规划和控制方面获得了发展势头。

中国浙江的一个城市最近在该市一些最繁忙的交通检查站安装了超过1000 个数字监控设备。这些系统每月处理 1tb 的数据,这对本地数据科学家来说是一项繁重的工作。

物联网,或物联网,是这个系统和许多其他系统背后的驱动力。它不仅从下一代汽车、公共汽车和火车上的单个传感器收集数据,还将这些信息实时传输给该地区的数据科学家、it 专家和交通官员,以进行即时处理。

6.种植更好、更健康的作物

大数据甚至在现代农场和宅地中也很有用。随着越来越多的美国人采用传统的生活方式,以及世界各地的其他人仍然以更简单的方式生活,这个领域将从先进的数据收集和应用中受益匪浅。

今天,数据有助于更准确地预测作物,生产更具弹性和生产力的种子,并使田间的某些任务自动化。结果是一个更智能、数据驱动的农场,用更少的体力劳动提供更高的产量。

在数据科学中寻找情感回报

数据科学可能是一个有益和充实的职业。

从帮助他人克服个人健康问题到参与打击犯罪,甚至生产更健康的食品,这些信息的价值是不可否认的。

图像由 Rawpixel 组成

数据可视化项目失败的 6 个原因

原文:https://towardsdatascience.com/6-reasons-why-data-visualisation-projects-fail-1ea7a56d7602?source=collection_archive---------0-----------------------

Photo: Thomas Tucker on Unsplash

一幅画最大的价值是当它迫使我们注意到我们从未期望看到的东西。约翰·w·图基

尽管数据可视化有着巨大的前景,并且这一学科成为主流已经有十年了,但它一点也不成熟。尽管有大量的可视化工具可供使用,也有出色的数据科学家在玩这些工具,但在企业中,数据可视化的有效使用仍然很少见。

由于从业者的持续进步和顶级玩家的营销闪电战,可视化已经深入到组织的深处。尽管有投资和意识,但从可视化计划或工具的长期采用中获得商业投资回报是很难的。

有时,人们想知道是什么使得信息的视觉显示如此困难。

  • 也许这与信息设计的减少有关,信息设计是蹩脚的,但是光滑的仪表板显示各种 KPI。
  • 也许是花哨的图表和令人眼花缭乱的功能在某个地方失去了用户的脉搏。
  • 或者,由于优先级冲突和混乱的执行,善意的计划中途脱轨了。

我们能看看可视化项目中的主要失败点吗?或者,作为观想练习者,你想要一些分享挫折的有趣反映吗?请继续阅读我们在 Gramener 近十年来在企业中实施视觉智能的经验样本。让我们也讨论如何解决这些陷阱。

Photo: Isaac Davis on Unsplash

1。“我代表所有最终用户..不要再看了

终端用户通常不直接参与定义可视化项目的需求。人们经常听到项目发起人或经理说他们‘完全知道用户想要什么’。要么用户的时间不容易获得(CXOs..)或者说他们人太多了(运营人员)。他们很容易被忽视,天真地认为其他人可以为他们开脱。

这是可视化仪表板在首次展示后经常被闲置的主要原因。如果仅仅列出常见问题或定义 KPI 就足够了,这个挑战就不会出现了。真正需要的是绘制用户故事图,并倾听用户如何解决业务问题。这是用户无法转移的实践智慧,与可操作性紧密相连。

让终端用户参与进来并收集他们细微的业务观点非常重要,这样才能将其构建到仪表盘中。通过访谈建立用户角色,通过温和的探索绘制用户旅程,并共同勾画出现有的业务场景。这也有助于列出观想将会回答的问题,并澄清那些不会回答的问题。

Keeping User at the foundation of Visual Experience (Source: Julian Missig, 2006, Jesse James Garrett 2000)

2。“我能拥有以上所有特征吗?”

当提出各种不同的观想选项时,你多久会听到一次答案,“以上都有”?当被要求进行优先级排序时,用户会产生一种强烈的不安全感,担心未来的场景可能无法处理。如果这是一个企业的第一个可视化项目,融入所有可能的花哨功能的冲动就会增强。

赞助商忽略了一点,你投入到应用程序中的越多,它就越少被使用。当一个人通过检查所有的框得到一种错误的满足感时,认知负荷会变得如此之高,以至于用户干脆完全停止使用它。当谈到优先级时,最有见识的用户可能没有正确的观点来接受艰难的呼叫,或者没有勇气咬紧牙关。

扮演一个顾问的角色并帮助将特性列表削减到最关键的是很重要的。虽然屏幕空间在技术上是无限的,但对数据密度加以限制是有用的,比如‘只不过是一个不可滚动的屏幕’。船上的利益相关者知道事情的轻重缓急,他们能够做出艰难的决定,也能在说服其他用户的许多战斗中获胜。

UI Matrix — A framework for prioritisation of Visual Requirements

3。"你真的需要数据来观想吗?"

当在数据可视化项目中对数据的需求受到质疑时,事情会变得非常奇怪。如果没有人告诉他们“首先构建仪表板,然后在上线时直接插入数据”,他们可以认为自己是幸运的。是的,在清理数据和准备提要方面存在挑战,但是设计没有任何数据的仪表板就像是本末倒置。

改装数据是最终导致不可操作的仪表板或看起来怪异的图表的根本原因。如果没有探索性分析,图表可能会被异常值扭曲,或者更糟,最终没有模式。图表的选择也是由数据决定的。例如,最多 4 个产品的收入分布可以是一个堆积条形图,但对于更多产品,类似 treemap 的图表是相关的。

作为项目规划的一部分,预先考虑数据非常重要。虽然获得标题行是一个有用的开始,但在做出关键的设计决策之前,完整的数据是必不可少的。必须教育客户,数据确实是可视化的关键路径,数据洞察推动设计决策。

Mapping the data types to their Visual Encodings by Noah Illinsky

4。“请给我我的旭日”

有时,人们会深深地爱上一张图表,以至于他们注定要将这种关系延伸到冷静的观想例子之外。这导致了无效的将图表强行拟合到解决方案中。为这种调整所做的妥协可能会对整个项目造成严重破坏。

那些即使在用例不支持的情况下也要求奇异或 3D 图表的人,这样做是为了他们自己的满足,最终疏远了用户。这不是自助餐,人们可以挑选各种各样的花式图表放在盘子里。人们可能会迷恋桑基图或 T2 和弦图,但如果把这些图表交给不懂数据的观众,那将是一场灾难。

图表的选择是一门科学,有像图形语法这样强大的学科来管理它。选择图表的因素包括:表示类型(分布,趋势..),数据点(少,多..),用户角色(运营,战略..),用户的数据熟悉度(分析师,业务用户..)等。必须积极地教育用户基本原理,并用例子解释。

A catalogue of Data visualisations: Source datavizcatalogue

5.“我想要丰富的用户界面..你能让一切都可以点击吗?”

在设计导航和交互性时,一个常见的要求是“能够深度钻取到最后一级,让一切都可以点击”。如果把整个世界都放在一个屏幕上是一个普遍的幻想,那么让它都可以点击是密切相关的。当被要求在一个屏幕内优先显示功能时,一个常见的借口是用户试图将整个仪表盘隐藏在不相关的点击后面。

在一个屏幕上隐藏 100 次点击,将可视化变成了寻找复活节彩蛋。用户可能永远不知道有用的信息可能隐藏在仪表板的什么地方。在大多数应用程序中,超过 90%的点击从来没有被使用过,只有 10%的点击真正进入了用户的工作流程。

丰富的用户界面并不意味着大量的点击,它意味着正确和直观的放置。强加一些指导方针可能是有用的,比如说,每个屏幕不超过 8 次点击。静态格式的数据故事同样强大,所以要仔细考虑所需的交互性。用户会感谢这个电话。

A powerful visualisation - static, with a shelf life of 200 years: Napoleon’s failed Russia campaign

6。“我想要绿色和蓝色..并且,扔进去一些紫色的"

虽然到目前为止所涉及的所有问题都可以被合理化,但颜色就不一样了。诸如“仪表板中似乎缺少了什么东西”“这种视觉效果缺少惊喜效果”这样的陈述会让实践者起鸡皮疙瘩。如果有必要,鞭策我们,但不要让反馈悬而未决。

每个用户都有自己选择的颜色,他们可能会非常固执己见。不幸的是,这可能对应用程序的接受度有很大影响。颜色不仅仅是外观和感觉。我们在一个有红绿色盲用户的项目中学到了这个痛苦的教训。我们丰富的 RGB 调色板显示为一个单一的颜色斑点,使其无法使用。

色彩理论与其说是科学,不如说是一门艺术,尽管有处理美学、功能和社会方面的标准指南。最好遵循用户角色和应用程序需求,而不是试图取悦每个人。人们还必须努力阐明选择,并帮助解决脱节问题,因为大多数用户无法解释他们的颜色偏好。

Color advisor tool — Colorbrewer

总结

虽然我们已经看到了数据可视化项目失败的 6 个关键点,但它们也恰好落在可视化项目的 6 个关键阶段。因此,通过避免陷阱来使它们正确,可以使天平向计划的整体成功倾斜。

可视化应该被视为使用数据讲述故事的媒介。一个视觉故事是艺术和科学的完美结合。从业者必须磨练自己的技能,将正确的美学成分与科学元素融合在一起。这创建了与用户相关的输出,解决了特定的业务挑战,并为企业提供了 ROI。

数字有一个重要的故事要讲。他们依靠你给他们一个清晰而有说服力的声音。—斯蒂芬·诺

对数据科学充满热情?随意在 LinkedIn 或者Twitter上加我。

[## Ganes Kesari | LinkedIn

在其他网站上包含此 LinkedIn 个人资料

www.linkedin.com](https://www.linkedin.com/in/ganes-kesari/)

我如何通过 6 个简单的步骤将人体动作分类器的验证准确率提高到 80%

原文:https://towardsdatascience.com/6-steps-to-quickly-train-a-human-action-classifier-with-validation-accuracy-of-over-80-655fcb8781c5?source=collection_archive---------11-----------------------

Photo by RichFL from pixabay

你们中有多少人是拖延大师?🙌如果你是,你来对地方了。

在这篇文章中,我想和大家分享一些我在担任数据科学家期间学到的技巧和诀窍,以及我如何用它们来快速增强我的模型。我将通过采用在德克萨斯大学达拉斯分校的多模态人体动作数据集( UTD-MHAD )上执行人体动作分类的集成方法来演示这一点。该集合实现了 0.821 的验证准确度,这与基线论文的 0.672 的准确度相比是显著的改进。

背景(问题)

我的任务是在 UTD-MHAD 应用数据融合来建立一个模型,对 27 种不同的人类行为进行分类,像所有拖延症大师一样,我把它留到了最后一周才开始做。最大压力=最高生产率!

UTD-MHAD 是从 Kinect 摄像头和一个可穿戴惯性传感器收集的开放数据集。该数据集包含由 8 名受试者(4 名女性和 4 名男性)执行的 27 个动作,每个受试者重复每个动作 4 次。在去除 3 个损坏的序列之后,数据集剩下 861 个数据序列。数据集包含 4 种数据形态,即:

  1. RGB 视频(时空)
  2. 深度视频(时空)
  3. 骨骼关节位置(时空)
  4. 惯性传感器信号(时间)

所有 4 种设备都进行了时间同步,并存储在中。阿维和。分别为 mat 格式。

任务:击败 0.672 的基线精度

该数据集来自一篇论文( C.Chen,2015 ),该论文使用了协同表示分类器(CRC),其验证精度为 0.672。这是根据训练-验证分割计算的,其中受试者 1、3、5、7 用于训练,受试者 2、4、6、8 用于验证,这也是我必须打破的基线准确度!

一切都被点燃了,我立即去网上开始寻找过去的代码和教程。在网上呆了大约 30 分钟后,我很快意识到没有可重用的代码!压力水平增加。我突然意识到,我必须从头开始做这件事。我迅速拿出笔和笔记本,开始制定我的策略。

密码

https://github.com/notha99y/Multimodal_human_actions

6 个步骤概述

  1. 了解数据
  2. 快速原型
  3. 绩效指标
  4. 将你能自动化的部分自动化,然后将你的培训送到谷歌实验室
  5. 搜索网页并与同事讨论以获得灵感
  6. 集合你的模特

第一步:理解数据

在你开始做任何事情之前,知道你在处理什么是很重要的。在这种情况下,最好的办法就是出图!我使用了 NumPy、SciPy 和 Matplotlib 库来有效地实现这些。下面是进行网球挥杆的受试者的深度、骨骼和惯性数据的曲线图。

Video screenshot of a Tennis Swing

Depth videos of a Tennis Swing

Skeleton joint positions of a Tennis Swing

Inertial sensor signals of a Tennis Swing

所以现在我们已经绘制了它们,我们必须将它们转换成合适的格式来支持我们的模型。我的选择是 NumPy 数组。在这篇文章中,我将主要关注使用骨骼和惯性数据。对于 RGB 和深度视频,在创建 VideoDataGenerator 时需要特别小心,以便从磁盘中读取它们,因为它们太大,无法加载到内存中。

骨架和惯性数据具有变化的周期,并且对于惯性传感器来说,具有变化的幅度。直方图是显示这些分布的有效方法。

周期分布

Period Distribution of Inertial sensor data

这并不奇怪,因为这些是由不同的受试者执行的不同动作。这个实验也没有具体说明一个特定的动作应该如何进行,所以我猜想受试者只是根据他们自己的经验来执行这个动作。

拥有这些变化的周期是行不通的,因为我们的模型需要一个固定的输入形状。我们有两个策略来处理这个问题:

  1. 将所有信号填充至最大长度 326
  2. 将信号重新采样至 180°的平均周期

振幅分布

Amplitude Distribution of 3-axial Gyroscope data (min on the left, max on the right)

Amplitude Distribution of 3-axial Accelerometer data (min on the left, max on the right)

振幅的分布非常类似于长尾。由于幅度不影响输入数据的形状,我们可以选择不对其应用任何预处理技术。否则,诸如均值-方差归一化之类的归一化技术可以应用于预处理。

回到概述

第二步:快速原型

正如精益创业方法所宣扬的,“失败得快,失败得便宜”。下一步是构建一个允许快速迭代的轻量级模型。用 Python 编写的高级神经网络包装器 Keras 将是这项任务的首选框架。Keras 允许一种干净、极简的方法,让你只用几行代码就能构建巨大的深度学习模型。您可以看到回购中的代码实现是多么容易。另外,我们也将使用它与 Tensorflow 后端。

首先,我们只从惯性数据开始。由于数据是 6 个通道的序列(加速度计的 3 轴+陀螺仪的 3 轴),我们要建立的第一个模型是一个简单的 LSTM ( S. Hochreiter 等人,1997 ),它有 512 个隐藏单元的 LSTM 单元。

Minimalist Keras Code to implement the Simple LSTM model

Network Diagram of Simple LSTM model

回总览

第三步。性能指标

随着模型的创建,我们现在需要一个可靠的反馈系统来通知我们模型的执行情况。因为这是一个具有良好平衡的类别分布的分类任务,所以准确度将足以作为唯一的性能度量,而不需要计算精确度、召回或 F1 分数。

为了查看我们的模型是否过度拟合,我们还可以得到训练验证准确性损失图。还可以绘制一个 27 类混淆矩阵,以查看哪些行为经常被误归类为另一种行为。

Loss (Left) Accuracy (Right) plots of the Training (Blue) and Validation (Green) set of the Simple LSTM

从精度损失图中,我们可以看到,我们的模型在非常早的时期过拟合,在第 4 个时期后,我们的验证精度达到稳定。在 epoch 15,我们得到了一个验证精度约为 0.238 的模型,这与我们必须打破的基线 0.672 相差甚远。

这表明我们要么改变策略,要么应用更多的正则化技术,如丢弃层。

Confusion matrix of the Simple LSTM model on Inertial data

哦天哪!这个混淆矩阵看起来像一个扫雷游戏的截图!唯一可取的是“站着坐着”和“坐着站着”这两个动作,模型分别正确预测了 16 次(满分)和 13 次。其他 25 个动作表现很差。

在我们给自己施加压力之前,让我们后退一步,看看我们迄今为止都做了些什么。

Data Science Pipeline (adapted from Practical Data Science Cook Book)

我们刚刚完成了上述流程图中从步骤 1 到步骤 4 的一次完整迭代,我们得到了 0.238 的第一次验证精度。这并不理想,但却是一个很好的开端。我们已经为自己建立了一个高度迭代的数据科学管道,在这里我们可以有效地探索、构建和评估我们的项目。询问任何从业者,他们都会同意数据科学是一个高度迭代的旅程。

有了这个基础,我们现在可以发挥创造力,尝试不同的东西来改进我们的模型。我不想让你们看到我尝试的所有不同的试验,所以在接下来的部分,我将向你们展示我使用这个迭代管道发现的所有关键结果。

预处理

通过这个管道,我还发现,与零填充相比,将序列重新采样到 180 的平均值会导致更好的收敛。振幅的标准化不会导致模型性能的明显改善,因此我们将跳过它以防止不必要的计算。

回到概述

第四步。将你能做到的部分自动化,并把你的训练传送到 Google Colab

因为我们很可能经常重复某些步骤,所以花些时间自动化它们是值得的。我们可以将某些经常使用的代码转换成脚本,并对它们进行功能抽象。你不那么未来的自己会非常感激你这样做。

Keras 回调

对于试图涉足深度学习的人来说,Keras 回调是最好的事情之一。它们是自动化模型训练的工具,我将分享 3 个我最喜欢的回调,它们在我的各种项目中极大地帮助了我。

首先是张量板。这允许 Keras 保存事件日志文件,该文件在训练期间不断更新,并且可以由 TensorBoard 读取和查看。这允许对你的模型训练进行实时、图形化的可视化,我强烈推荐它作为一种替代方案,而不是仅仅从 Keras 的model.fit()输出中查看它。

二、模型检查点。这允许您的 Keras 模型将权重保存到给定的文件目录中。有一些有用的论点,如monitorsave_best_only,让你可以控制你希望 Keras 如何减轻你的体重。

最后但同样重要的是,提前停止回调。拥有这个可以让 Keras 根据你指定的条件停止你的训练。对于我的例子,如下所示,我设置了min_delta=0patience=5。这意味着,如果 Keras 发现模型的验证精度在 5 个时期后没有增加,它将停止训练。

有了这三个回调,我们可以安全地离开我们的模型训练,去吃午饭了。

Useful Keras Callbacks

谷歌联合实验室

众所周知,训练深度学习模型是一个非常 GPU 密集型的过程。幸运的是,谷歌合作实验室免费提供了强大的 TPU 内核!对于那些负担不起强大的 GPU 的人,可以考虑将你的培训转移到 Google Colab。Google Colab 还提供了一个熟悉的类似 Jupyter 笔记本的界面,使用起来非常直观。它也安装在你的 Google Drive 上,所以你可以很容易地将你的数据读入 Colab。重量和日志也可以很容易地保存。

回到概述

第五步。在网上搜索,并与同事讨论以获得灵感

在第 2-4 节中完成了快速原型制作和评估的半自动流程后,是时候获得灵感并找到创造性的方法来提高我们模型的验证准确性了。谷歌不同的搜索词,或去门户网站如谷歌学术,科学直接和 Pubmed 可以给我们提供见解。与同事谈论你的问题会给我们带来意外的“发现”时刻。

我和一个正在进行自然语言处理(NLP)项目的同事聊天,这个项目给了我尝试双向 LSTM (BLSTM)的灵感。BLSTM 反转原始隐藏层并将它们连接起来,允许一种形式的生成性深度学习,从而使输出层同时获得来自过去和未来状态的信息。仅仅是加了一层 BLSTM,就让我的验证准确率翻倍到了 0.465。

Network Diagram of Bi-Directional LSTM model

Network Diagram of Conv LSTM model

conv·LSTM 模型

当我为特征提取添加卷积层时,主要的突破出现了。由于输入数据是 1D 信号,该模型使用一系列 1D 卷积和 1D 最大池层来提取更高维度的潜在特征,然后将它们馈送到捕获时间信息的 2 个 LSTM 单元。然后,LSTM 单元的输出变平,在添加带有 softmax 激活的密集层以对所有 27 个动作进行分类之前,我们附加了一个丢失率为 0.5 的丢失层。

这使我的惯性数据验证精度达到 0.700,这是我们第一次超过 CRC 模型基线 0。对于我们的所有模型,我们使用 AdamOptimizer(d . p . Kingma et al . m 2014),其
学习率为 1e-4,β1 为 0.9,β2 为 0.999。我们使用 Xavier Glorot 初始化器( X. Glorot et at)初始化我们的可训练参数。,2010 )并将我们的批量大小设置为 3,以允许我们的模型更好地泛化( E. Hoffer 等人,2017 )。

UNet LSTM 模型

UNet ( O. Ronneberger et al .,2015 )是一个完全卷积的神经网络(FCNN),在收缩和扩张路径上几乎是对称的。在收缩路径中,输入 was 通过一系列卷积和最大池来馈送,增加了特征图并降低了图像的分辨率。这增加了“什么”而减少了“哪里”。在扩展路径中,低分辨率的高维特征通过卷积核被上采样。在此操作过程中,要素地图被缩减。UNet 的一个新颖特征是,它将收缩路径中的高维特征连接到扩展层的低维特征映射。类似地,我将从卷积网络中提取的特征添加到 2 个 LSTM 单元中,平坦化输出,并附加一个丢失率为 0.5 的丢失层,最后是一个带有 softmax 激活的密集层,以对所有 27 个动作进行分类。我在下面的附录中附上了网络图。

UNet LSTM 模型在惯性数据上实现了 0.712 的验证精度。

回到概述

第六步。集合你的模型

conv·LSTM 和 UNet·LSTM 在验证数据上表现都很好,我们可以通过取平均值来合并他们的 softmax 输出。这立即将验证准确度提高到 0.765!

对于大多数监督学习问题,集成方法往往优于单模型方法。目前认为这是因为它具有穿越假设空间的能力。一个集成能够导出一个更好的假设,该假设不在其构建的单个模型的假设空间中。

根据经验,当模型中存在多样性时,集成往往会产生更好的结果( L. Kuncheva 等人,2003 )。从下面显示的混淆矩阵中,我们可以看到 Conv LSTM 能够更好地拾取向右滑动和下蹲等动作,而 UNet LSTM 能够更好地拾取篮球投篮和画 x 等动作。这表明在这两个模型之间存在模型差异,并且确实如此,通过将它们组合在一起,我们得到了从 0.700 和 0.712 到 0.765 的验证精度!

Confusion Matrices of Conv LSTM (left) and UNet LSTM (right) on Inertial data

下面是我用来创建合奏的方程式。有关代码实施,请参考回购协议。

Average of the softmax output for the Conv LSTM and UNet LSTM

Softmax output for an action j

结合骨架数据

为了达到标题中承诺的 80%的验证准确性,我添加了骨架数据,并将其重采样为 180 个单位的周期。将其与 6 通道惯性数据融合后,我们得到(N,180,66)的输入形状,其中 N 是样本数。所有验证准确度的表格汇编如下。

Summary of Validation Accuracy of the Different Models

瞧,我们的最佳性能模型的混淆矩阵显示如下,验证精度为 0.821。

Confusion Matrix of Ensemble on Inertial + Skeleton data

回到概述

摘要

恭喜你一路走到了这里!如果您完全遵循了这些步骤,您将会成功地构建您自己的集合人体动作分类器!

模型动物园

一些关键要点

  • 绘图是理解数据的一种快速简单的方法
  • 数据科学是一个高度迭代的过程
  • 尽你所能实现自动化
  • 合奏是让我们训练有素的模特发挥最大作用的快捷方式
  • 使用谷歌 Colab 来提高你的训练速度
  • Keras 是深度学习模型快速原型化的首选框架

如果你准备接受挑战,并且觉得 0.821 还不够,你可以阅读下面的小节来改进你的模型。

还能做些什么

A.过度装配问题

在我们的训练中,早期的过度适应似乎是我们面临的主要挑战。我们尝试添加漏失层和集合,使我们的模型更加通用,但我们还可以走得更远。当我们的模型试图学习可能没有用的高频特征时,往往会发生过度拟合。添加零均值高斯噪声和所有频率中的数据点可能会增强我们的
模型的学习能力。同样,即使是相同的活动,不同科目的时间顺序也有很大差异。使用时间缩放和转换来执行数据扩充将增加训练数据的量,从而允许我们的模型更好地概括。

另一方面,我们的模型还可以进一步调整,以降低其复杂性,以及过度拟合的风险。随着最近的神经架构搜索论文如 NAS ( B. Zoph 等人,2016 )、NASnet ( B.Zpoh 等人,2017 )和 Efficient-NAS ( H. Pham 等人,2018 )获得牵引力,我们也可以尝试应用它们,因为这也是一项分类任务。

B.RGB 与深度数据的数据融合

我们玩了惯性,我们在最后添加了骨架,以获得更多信息来找到我们需要数据的模型。为了更好地推动我们的模型,我们必须找到将它与深度和 RGB 数据融合的方法。这将允许更多的输入训练变量从中学习和提取特征,从而提高验证的准确性。

C.尝试其他集成学习技术

我们可以尝试更高级的集成学习方法,如 Boosting 和 Bagging,而不是简单的平均。

特别感谢 【莱米】 德里克 对本文的校对和反馈。

随时通过TwitterLinkedIn与我联系!

如果你对我参与过的其他项目感兴趣,可以随时访问我的Github

附录

Network Diagram of UNet LSTM model

从头开始编写任何机器学习算法的 6 个步骤:感知器案例研究

原文:https://towardsdatascience.com/6-steps-to-write-any-machine-learning-algorithm-from-scratch-perceptron-case-study-335f638a70f3?source=collection_archive---------4-----------------------

从零开始编写一个 机器学习算法 是一次极其有益的学习经历。

它为你提供了“啊哈!”当你终于明白时,你就会明白引擎盖下到底发生了什么。

一些算法只是比其他算法更复杂,所以从简单的开始,比如单层感知器

我将使用感知器作为案例研究,带您通过以下 6 个步骤从头开始编写算法:

  1. 对算法有基本的了解
  2. 寻找一些不同的学习资源
  3. 将算法分成块
  4. 从一个简单的例子开始
  5. 通过可信实施进行验证
  6. 写下你的过程

获得基本的理解

这又回到了我最初的陈述。如果你不了解基础知识,不要从头开始研究算法。

至少,你应该能够回答以下问题:

  • 这是什么?
  • 它通常用于什么?
  • 这个什么时候不能用?

对于感知器,让我们继续回答这些问题:

  • 单层感知器是最基本的神经网络。它通常用于二元分类问题(1 或 0,“是”或“否”)。
  • 一些简单的用途可能是情绪分析(正面或负面反应)或贷款违约预测(“将违约”、“不会违约”)。对于这两种情况,决策边界需要是线性的。
  • 如果决策边界是非线性的,你真的不能用感知器。对于这些问题,您需要使用不同的方法。

使用不同的学习资源

对模型有了基本的了解之后,就该开始做研究了。

有些人用课本学得更好,有些人用视频学得更好。

就我个人而言,我喜欢反复使用各种类型的资源。

对于数学细节,教科书做得很好,但是对于更实际的例子,我更喜欢博客帖子和 YouTube 视频。

对于感知器,这里有一些很好的来源:

教科书

博客

视频

将算法分成块

现在我们已经收集了我们的资源,是时候开始学习了。

与其从头到尾阅读一章或一篇博文,不如从略读章节标题和其他重要信息开始。

写下要点,并尝试概述算法。

在浏览了源代码之后,我将感知器分成了以下 5 个部分:

  1. 初始化权重
  2. 用输入乘以权重,然后求和
  3. 将结果与阈值进行比较,以计算输出(1 或 0)
  4. 更新权重
  5. 重复

让我们详细地看一下每一个。

1。初始化权重

首先,我们将初始化权重向量。

权重的数量需要与特征的数量相匹配。假设我们有三个特征,这就是权重向量的样子

权重向量通常用零初始化,所以我将继续使用这个例子。

2.将权重乘以输入并求和

接下来,我们将权重乘以输入,然后求和。

为了更容易理解,我在第一行中给权重和它们相应的特征着色。

在我们将权重乘以特征之后,我们将它们相加。这也称为点积。

最终结果是 0。我将把这个临时结果称为“f”。

3.与阈值比较

计算完点积后,我们需要将其与阈值进行比较。

我已经选择使用 0 作为我的阈值,但是你可以使用它来尝试一些不同的数字。

由于我们计算的点积“f ”( 0)不大于我们的阈值(0 ),所以我们的估计值等于零。

我将估算值表示为带帽子的 y(也称为“y 帽子”),下标 0 对应于第一行。你可以用 1 代替第一行,这并不重要。我只是选择从 0 开始。

如果我们将这个结果与实际值进行比较,我们可以看到我们当前的权重没有正确预测实际输出。

由于我们的预测是错误的,我们需要更新权重,这将我们带到下一步。

4.更新权重

接下来,我们将更新权重。这是我们要用的等式:

基本思想是,我们在迭代“n”时调整当前权重,以便我们获得新的权重用于下一次迭代“n+1”。

要调整权重,需要设定一个“学习率”。这由希腊字母“eta”表示。

我选择使用 0.1 作为学习率,但是你可以使用不同的数字,就像阈值一样。

以下是我们目前所掌握信息的简要总结:

现在让我们继续计算迭代 n=2 的新权重。

我们已经成功完成了感知器算法的第一次迭代。

5.重复

由于我们的算法没有计算出正确的输出,我们需要继续下去。

通常我们需要多次迭代。遍历数据集中的每一行,我们每次都会更新权重。

对数据集的一次完整扫描被称为“时期”

由于我们的数据集有 3 行,我们需要三次迭代来完成 1 个时期。

我们可以设置总的迭代次数或次数来继续执行算法。也许我们想要指定 30 次迭代(或者 10 个时期)。

与阈值和学习率一样,历元数也是一个可以随意使用的参数。

在下一次迭代中,我们移动到第二行特性。

我不会重复每一步,但下面是点积的下一个计算:

接下来,我们将比较点积和阈值来计算新的估计值,更新权重,然后继续。如果我们的数据是线性可分的,感知器就会收敛。

从一个简单的例子开始

既然我们已经手工将算法分成了几个块,是时候开始用代码实现它了。

为了简单起见,我总是喜欢从一个非常小的“玩具数据集”开始

对于这类问题,一个很好的小型线性可分数据集是一个与非门。这是数字电子中常用的逻辑门。

由于这是一个相当小的数据集,我们可以手工输入到 Python 中。

我将添加一个虚拟特征“x0 ”,它是一列 1。我这样做是为了让我们的模型计算偏置项。

您可以将偏差视为截距项,它正确地允许我们的模型将两个类别分开。

下面是输入数据的代码:

# Importing libraries
# NAND Gate
# Note: x0 is a dummy variable for the bias term
#     x0  x1  x2
x = [[1., 0., 0.],
     [1., 0., 1.],
     [1., 1., 0.],
     [1., 1., 1.]]y =[1.,
    1.,
    1.,
    0.]

与上一节一样,我将分块逐步完成算法,一边编写代码一边测试。

1.初始化权重

第一步是初始化权重。

# Initialize the weights
import numpy as np
w = np.zeros(len(x[0]))Out:
[ 0\.  0\.  0.]

请记住,权重向量的长度需要与特征的数量相匹配。对于这个与非门例子,长度是 3。

2.将权重乘以输入并求和

接下来,我们将权重乘以输入,然后求和。

另一个名称是“点积”

同样,我们可以使用 Numpy 轻松地执行这个操作。我们将使用的方法是.dot()

让我们从权重向量和第一行特征的点积开始。

# Dot Product
f = np.dot(w, x[0])
print fOut:
0.0

不出所料,结果是 0。

为了与上一节的注释保持一致,我将点积赋给了变量“f”。

3.与阈值进行比较

计算完点积后,我们准备将结果与阈值进行比较,以预测输出。

同样,我将与上一节的笔记保持一致。

我将使阈值“z”等于 0。如果点积“f”大于 0,我们的预测将是 1。否则就是零。

请记住,预测通常用一克拉表示,也称为“帽子”。我将把预测赋给的变量是yhat

# Activation Function
z = 0.0
if f > z:
    yhat = 1.
else:
    yhat = 0.

print yhatOut:
0.0

不出所料,预测值为 0。

你会注意到,在代码上方的注释中,我称之为“激活函数”。这是对我们正在做的事情的更正式的描述。

看一下 NAND 输出的第一行,我们可以看到实际值是 1。由于我们的预测是错误的,我们需要继续更新权重。

4.更新权重

现在我们已经做出了预测,我们准备更新权重。

在这样做之前,我们需要设定一个学习率。为了与前面的例子保持一致,我将学习率“eta”的值指定为 0.1。

我将对每个权重的更新进行硬编码,以便于阅读。

# Update the weights
eta = 0.1
w[0] = w[0] + eta*(y[0] - yhat)*x[0][0]
w[1] = w[1] + eta*(y[0] - yhat)*x[0][1]
w[2] = w[2] + eta*(y[0] - yhat)*x[0][2]

print wOut:
[ 0.1  0\.   0\. ]

我们可以看到我们的权重现在已经更新了,所以我们准备继续。

5.重复

现在我们已经完成了每一步,是时候把所有东西放在一起了。

我们还没有讨论的最后一点是我们的损失函数。这是我们试图最小化的函数,在我们的例子中是平方和(SSE)误差。

这是我们将用来计算我们的误差,并看看模型是如何执行的。

综合来看,完整的函数如下所示:

import numpy as np

# Perceptron function
def perceptron(x, y, z, eta, t):
    '''
    Input Parameters:
        x: data set of input features
        y: actual outputs
        z: activation function threshold
        eta: learning rate
        t: number of iterations
    '''

    # initializing the weights
    w = np.zeros(len(x[0]))      
    n = 0                        

    # initializing additional parameters to compute sum-of-squared errors
    yhat_vec = np.ones(len(y))     # vector for predictions
    errors = np.ones(len(y))       # vector for errors (actual - predictions)
    J = []                         # vector for the SSE cost function

    while n < t: for i in xrange(0, len(x)): # dot product f = np.dot(x[i], w) # activation function if f >= z:                               
                yhat = 1\.                               
            else:                                   
                yhat = 0.
            yhat_vec[i] = yhat

            # updating the weights
            for j in xrange(0, len(w)):             
                w[j] = w[j] + eta*(y[i]-yhat)*x[i][j]

        n += 1
        # computing the sum-of-squared errors
        for i in xrange(0,len(y)):     
           errors[i] = (y[i]-yhat_vec[i])**2
        J.append(0.5*np.sum(errors))

    return w, J

现在我们已经编写了完整的感知器,让我们继续运行它:

#     x0  x1  x2
x = [[1., 0., 0.],
     [1., 0., 1.],
     [1., 1., 0.],
     [1., 1., 1.]]

y =[1.,
    1.,
    1.,
    0.]

z = 0.0
eta = 0.1
t = 50

print "The weights are:"
print perceptron(x, y, z, eta, t)[0]

print "The errors are:"
print perceptron(x, y, z, eta, t)[0]Out:
The weights are:
[ 0.2 -0.2 -0.1]
The errors are:
[0.5, 1.5, 1.5, 1.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

看一下误差,我们可以看到误差在第 6 次迭代时变为 0。对于剩余的迭代,它保持为 0。

当误差达到 0 并停留在那里时,我们知道我们的模型已经收敛。这告诉我们,我们的模型已经正确地“学习”了适当的权重。

在下一节中,我们将使用我们在更大的数据集
上计算的权重来进行预测。

通过可信实施进行验证

到目前为止,我们已经找到了不同的学习资源,手工完成了算法,并用一个简单的例子在代码中进行了测试。

现在是时候将我们的结果与可信的实现进行比较了。为了比较,我们将使用 scikit-learn 的感知机

我们将通过以下步骤进行比较:

  1. 导入数据
  2. 将数据分成训练/测试集
  3. 训练我们的感知器
  4. 测试感知器
  5. 比较 scikit-learn 感知器

1.导入数据

让我们从导入数据开始。你可以在这里获得数据集的副本。

这是一个线性可分离的数据集,我创建它是为了确保感知器能够工作。为了确认,让我们继续绘制数据。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv("dataset.csv")
plt.scatter(df.values[:,1], df.values[:,2], c = df['3'], alpha=0.8)

看一下这个图,很容易看出我们可以用一条直线将这些数据分开。

在我们继续之前,我将解释我上面的绘图代码。

我使用 Pandas 导入 csv,它会自动将数据放入 dataframe 中。

为了绘制数据,我必须从数据帧中提取值,这就是我使用.values方法的原因。

这些特性在第 1 列和第 2 列中,所以这就是我在散点图函数中使用它们的原因。列 0 是 1 的伪特征,我包括它是为了计算截距。这应该与我们在上一节中对与非门所做的事情很相似。

最后,我在散点图函数中使用c = df['3'], alpha = 0.8给两个类着色。输出是第 3 列中的数据(0 或 1),所以我告诉函数使用第 3 列给两个类着色。

你可以在这里找到 Matplotlib 散点图函数的更多信息

2.将数据分成训练/测试集

既然我们已经确认了数据可以线性分离,那么是时候拆分数据了。

在与测试数据集不同的数据集上训练模型始终是一种很好的做法。这有助于避免过度拟合。

有不同的方法可以做到这一点,但是为了简单起见,我只使用一个训练集和一个测试集。

我将从整理我的数据开始。如果您看一下原始文件,您会看到数据是按行分组的,输出(第三列)中有 0,然后是所有的 1。我想改变一下,增加一些随机性,所以我要打乱它。

df = df.values  

np.random.seed(5)
np.random.shuffle(df)

我首先将数据从 dataframe 改为 numpy 数组。这将使我将要使用的许多 numpy 函数更容易使用,比如.shuffle

为了使结果对你来说是可重复的,我设置了一个随机种子(5)。完成后,尝试改变随机种子,看看结果如何变化。

接下来,我将把 70%的数据分成一个训练集,30%的数据分成一个测试集。

train = df[0:int(0.7*len(df))]
test = df[int(0.7*len(df)):int(len(df))]

最后一步是分离出训练集和测试集的特征和输出。

x_train = train[:, 0:3]
y_train = train[:, 3]

x_test = test[:, 0:3]
y_test = test[:, 3]

为了这个例子,我为我的训练/测试集选择了 70%/30%,但是我鼓励你研究其他方法,比如 k 倍交叉验证

3.训练我们的感知器

接下来,我们将训练我们的感知器。

这非常简单,我们只是要重用我们在上一节中构建的代码。

def perceptron_train(x, y, z, eta, t):
    '''
    Input Parameters:
        x: data set of input features
        y: actual outputs
        z: activation function threshold
        eta: learning rate
        t: number of iterations
    '''

    # initializing the weights
    w = np.zeros(len(x[0]))      
    n = 0                        

    # initializing additional parameters to compute sum-of-squared errors
    yhat_vec = np.ones(len(y))     # vector for predictions
    errors = np.ones(len(y))       # vector for errors (actual - predictions)
    J = []                         # vector for the SSE cost function

    while n < t:          for i in xrange(0, len(x)):                                           # dot product             f = np.dot(x[i], w)                                   # activation function             if f >= z:                               
                yhat = 1\.                               
            else:                                   
                yhat = 0.
            yhat_vec[i] = yhat

            # updating the weights
            for j in xrange(0, len(w)):             
                w[j] = w[j] + eta*(y[i]-yhat)*x[i][j]

        n += 1
        # computing the sum-of-squared errors
        for i in xrange(0,len(y)):     
           errors[i] = (y[i]-yhat_vec[i])**2
        J.append(0.5*np.sum(errors))

    return w, J

z = 0.0
eta = 0.1
t = 50

perceptron_train(x_train, y_train, z, eta, t)

让我们来看看权重和误差平方和。

w = perceptron_train(x_train, y_train, z, eta, t)[0]
J = perceptron_train(x_train, y_train, z, eta, t)[1]

print w
print JOut:
[-0.5        -0.29850122  0.35054929]
[4.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

权重现在对我们来说意义不大,但是我们将在下一节中使用这些数字来测试我们的感知机。我们还将使用权重来比较我们的模型和 scikit-learn 模型。

看一看误差平方和,我们可以看到我们的感知机已经收敛,这是我们所期望的,因为数据是线性可分的。

4.测试我们的感知机

现在是时候测试我们的感知机了。为此,我们将构建一个小的perceptron_test函数。

这与我们已经看到的非常相似。该函数采用我们使用perceptron_train函数和特性计算的权重的点积,以及激活函数来进行预测。

我们唯一没见过的是accuracy_score。这是 scikit-learn 的一个评估指标函数。你可以在这里了解更多。

将所有这些放在一起,代码如下所示:

from sklearn.metrics import accuracy_score

w = perceptron_train(x_train, y_train, z, eta, t)[0]

def perceptron_test(x, w, z, eta, t):
    y_pred = []
    for i in xrange(0, len(x-1)):
        f = np.dot(x[i], w)   

        # activation function
        if f > z:                               
            yhat = 1                               
        else:                                   
            yhat = 0
        y_pred.append(yhat)
    return y_pred

y_pred = perceptron_test(x_test, w, z, eta, t)

print "The accuracy score is:"
print accuracy_score(y_test, y_pred)Out:
The accuracy score is:
1.0

1.0 分表示我们的模型对所有测试数据做出了正确的预测。这个数据集显然是可分离的,所以我们可以预期这个结果。

5.比较 scikit-learn 感知器

最后一步是将我们的结果与 scikit-learn 的感知器进行比较。这是该模型的代码:

from sklearn.linear_model import Perceptron

# training the sklearn Perceptron
clf = Perceptron(random_state=None, eta0=0.1, shuffle=False, fit_intercept=False)
clf.fit(x_train, y_train)
y_predict = clf.predict(x_test)

现在我们已经训练了模型,让我们将权重与模型计算的权重进行比较。

Out:
sklearn weights:
[-0.5        -0.29850122  0.35054929]
my perceptron weights:
[-0.5        -0.29850122  0.35054929]

scikit-learn 模型的重量与我们的重量相同。这意味着我们的模型工作正常,这是个好消息。

在我们结束之前,还有几个小问题要讨论一下。在 scikit-learn 模型中,我们必须将随机状态设置为“None ”,并关闭洗牌。我们已经设置了一个随机种子并打乱了数据,所以我们不需要再次这样做。

我们还必须将学习率“eta0”设置为 0.1,以与我们的模型一致。

最后一点是截距。因为我们已经包含了一个 1 的伪特征列,我们正在自动拟合截距,所以我们不需要在 scikit-learn 感知器中打开它。

这些看起来都是次要的细节,但是如果我们不设置这些,我们将无法重现与我们的模型相同的结果。

这是很重要的一点。在使用模型之前,阅读文档并理解所有不同设置的作用是非常重要的。

写下你的过程

这个过程的最后一步可能是最重要的。

您已经完成了学习、做笔记、从头开始编写算法以及与可信实现进行比较的所有工作。不要让所有的好工作都白费了!

记录流程非常重要,原因有二:

  • 你会获得更深的理解,因为你正在把你刚刚学到的东西教给别人。
  • 你可以把它展示给潜在雇主。

表明你可以从机器学习库中实现一个算法是一回事,但如果你能从头开始自己实现它,那就更令人印象深刻了。

展示你的作品的一个很好的方式是使用 GitHub Pages 作品集。

结论

在这篇文章中,我们学习了如何从头开始实现感知器

更重要的是,我们学会了如何找到有用的学习资源,以及如何将一个算法分解成块。

然后,我们学习了如何使用玩具数据集用代码实现和测试算法。

最后,我们将模型的结果与可信的实现进行了比较。

这是在更深层次上学习算法的一个很好的方法,这样你就可以自己实现它。

大多数时候你会使用一个可信的实现,但是如果你真的想更深入地了解底层发生了什么,从头实现它是一个很好的练习!

我们都需要从机器学习中学到的 6 课

原文:https://towardsdatascience.com/6-things-we-all-need-to-learn-from-machine-learning-e88eac480b57?source=collection_archive---------0-----------------------

机器学习作为一个领域至少已经存在了几十年。由于深度学习,这个术语现在成为主流,不再局限于研究和学术界。

在所有激活函数和反向传播的复杂数学背后,深度学习是对我们大脑中神经元网络的抽象,并模拟它们学习和概括信息的迷人能力。

深度学习的巨大成功意味着,从人类那里获得灵感来设计算法是有价值的。反之呢?

机器学习的实践有什么值得我们学习和启发的地方吗?

机器学习不仅仅是神经网络和深度学习。这是一个拥有众多智能算法的领域,这些算法可以推导出复杂的模式,并对未知做出预测。

以下是我发现的六件在 ML 领域非常引人注目的事情,它们可能会给我们带来一些人生教训

  1. 相信多样性的力量(随机森林)

随机森林的健壮性得益于其不同决策树的集合,每个决策树都试图解决问题的一部分。

没有只有一棵树的森林。

类似地,当来自不同背景的人和团体一起合作和工作时,结果是令人温暖的。如果我们把自己局限在与我们关系最密切的小圈子里,我们就限制了自己真正的潜力。

2。从你的错误中学习,永远(梯度推进)

梯度提升不是使用不同分类器的集合,而是利用错误并以迭代的方式不断改进基本分类器。

就像梯度推进机一样,我们需要意识到没有人是完美的,我们都会犯错。重要的是要找出错误并吸取生活教给你的教训。

不要被你的成就冲昏了头脑,而是要专注于纠正你人生每个阶段的缺陷。

3。每个问题都有解决方案(内核方法& SVM)

核方法在支持向量机中很流行。它们用于将低维中不可分的数据转换到高维中,并使用决策边界来分离类。

生活并不总是玫瑰和彩虹。它给我们带来了难以解决的难题,没有现成的解决办法。在那些绝望的时刻,令人欣慰的是知道有更高的维度是你不知道的,总会有出路。

保持冷静,向更高的维度祈祷

4。接受改变个人信念(贝叶斯定理)

贝叶斯定理在获得关于相关和条件事件的附加信息后更新事件的先验似然。

同样,我们都对人、文化和社会有先入为主的信念和假设。这些信念是基于我们的社会、经济和人口状况培养出来的。

当我们遇到挑战我们先前信念的新情况时,我们有意识地更新自己是至关重要的。

永远不要对变化持不可知论态度。

5。应做出决定以说明当前的情况(梯度下降)

从回归到神经网络,梯度下降是许多机器学习算法的学习部分。原则是始终沿着最陡下降的路径到达期望的目的地。

我们经常面临这样的情况,需要我们做出决定,在无数的选择中选择一个。这些决定对未知的未来有着潜在的影响。

梯度下降为我们提供了这种情况下的捷径,总是为现在做出最佳选择,而不是太担心你的未来课程。

不要等待理想的解决方案,你永远不知道会发生什么。

6。关系随时间变化(k 均值)

k-means 算法通过将数据分配和重新分配给不同的组来迭代地提高聚类质量,直到达到平衡。

人类的互动和情感在建立我们的关系中起着至关重要的作用。不足为奇的是,当这些关系紧张时,我们会崩溃。

我们应该意识到,即使是强大的关系也可能在没有明显过错的情况下随时改变或结束,就像 k-means 一样。接受事实,在可以的时候珍惜你爱的人。

如果你在算法和其他学习范式的经验中有类似的类比,请告诉我。我们都可以互相学习,包括机器学习。

有效数据科学的 6 个不寻常原则

原文:https://towardsdatascience.com/6-uncommon-principles-for-effective-data-sciences-7424a332c921?source=collection_archive---------12-----------------------

如何概念化和实施有效的数据科学项目

Results, not hype

动机

我对数据科学研究得越多,我就越确信,公司和数据科学从业者必须对如何打破机器学习和人工智能的宣传有一个清晰的看法,以实施一个有效的数据科学战略来推动商业价值。本文希望建立一个框架来概念化和实施有效的数据科学项目。

你为什么要在乎

展示你作为一名数据科学家可以获得有意义的见解,从而提高收入和利润,这将使你对公司更有价值。借助高度优化且易于实现的机器学习和深度学习库,任何数据猴子都可以只用几行代码构建复杂的人工智能算法。然而,复杂的模型并不等同于有效的模型。了解模型输出如何转化为现实世界的应用是关键。

从公司的角度来看,数据科学家和任何其他员工一样,根据他们创造的价值获得报酬。如果一家公司支付给员工的薪酬高于他们带来的价值,那么这家公司就亏损了。显然不是一个可持续的长期战略。是的,数据科学家现在工资很高,但如果公司不能从数据科学中提取他们认为可以获得的价值,数据科学家的工资和需求最终会下降。

问题:数据科学家更倾向于关注手段而不是目的

由于人工智能研究人员在过去几年取得的成果(演奏 GTA创作肖邦风格的音乐作品 s),许多公司都在赶潮流,宣告人工智能的新时代。

这一切都很好,但由于数据科学在商业环境中的新生应用,信息不对称是存在的。数据科学家从业者往往具有技术背景,并且通常将他们的主要目标视为构建最先进的算法。另一方面,其他员工将人工智能视为一个黑盒子,通常是通过人工智能研究人员高调突破的镜头(例如,人工智能能够击败顶级围棋选手)。由于业务的技术和商业部分之间的脱节,来自数据科学家的输出可能不具有可操作性或商业意义。

解决方法:不要只见树木不见森林;实用数据科学是关于推动价值,而不是优化准确性

我们可以把实用数据科学想象成一个有三条腿的凳子:编程、统计和业务理解,如果我们缺少任何一条腿,凳子就会倒塌。我们都知道这一点,但业务理解很少成为数据科学文章或论坛的焦点。

The three pillars of data science

编程和数学是必要的,但不足以成为一名有效的数据科学家,因为技术技能只是达到目的的一种手段。帮助公司提高客户保持率,帮助穷人获得贷款,通过更早地诊断疾病来改善健康状况——这些是数据科学家应该关注的目标;机器学习/人工智能只是实现这一目标的一种手段。

有效数据科学的 6 项原则

坚持以下六条原则将使数据科学家能够概念化和实施有效的项目。

1.理解人工智能的需求层次

就像人类在实现自我实现之前需要食物、水和空气一样,建立可靠的数据流是使用数据做任何事情的关键。只有当数据可以访问时,才能对其进行探索和转换。当清理后的数据可以很容易地被浏览时,就可以更好地理解客户。 莫妮卡·罗加蒂的优秀文章, ' 人工智能需求层次 ' ,提供了一个清晰的框架来思考这一点。

许多公司希望人工智能带来的结果,但没有合适的基础设施来实施机器学习。公司应该意识到,机器学习/深度学习在整个数据堆栈中出现得较晚。数据首先必须可靠地收集,然后才能转换,随后探索。一个中断的上游流程(例如,如果跟踪不准确)将影响数据的清洁度,并最终影响从中获得的洞察力。只有当数据是干净的并且容易探索时,它才能用于商业智能、分析和人工智能。

Diagram adapted from Monica Rogati’s excellent article, ‘The AI Hierarchy of Needs’

人工智能需求层次的含义——在考虑机器学习或深度学习之前扩大数据基础设施

这种等级制度意味着公司应该按照需求的顺序招聘员工。这是什么意思?如果你的公司还没有建立规模机器学习,那么重点应该是那些任务,而不是深度学习。与编码一样,这是一个循序渐进的过程,在达到下一个级别之前,必须先准备好正确的构件。

灾难的一个原因是,一名在建模方面经验丰富的数据科学家被一家没有适当跟踪和数据库的初创企业聘用。在加入公司之前,员工还应该检查他们对工作的期望。

作为一名数据科学家,知道如何正确设计表模式或构建数据管道可能很重要,但却被低估了许多公司所需的技能,特别是因为大多数数据科学课程和机器学习竞赛往往专注于机器学习的“更性感”方面。

2。构建能够回答正确问题的模型

早期决策,以及随之而来的项目早期假设,通常会对整个项目产生不成比例的影响。您在项目开始的一天或一周内所做的决策——关于最终用户需求的假设,如何使用模型的输出——对模型的有效性有着最重要的影响。随着项目越来越晚做出决策,他们的影响力会降低。选择如何清理脏数据或使用什么功能会影响模型的准确性,但决定机器学习模型是否可以部署到生产中的最大因素来自于你在项目开始时提出的问题。

Early decisions have disproportionately large impact on projects

表面上很容易理解这一点,但很少有人考虑其中的含义。

为了构建一个具有可操作结果的模型,在键入一行代码之前必须完成以下工作:与最终用户沟通,了解已经到位的业务规则,查看现有数据并思考如何为要训练的模型定义“基础事实”,以使其对最终用户有意义,了解提议的模型的局限性,并与业务用户一起对模型的预测输出进行压力测试。

这里有一个例子来说明这一点。

建立流失预测模型

营销部门找到你,让你建立一个机器学习模型来预测哪些客户已经流失。营销部门告诉你,有这样一个输出是有用的,所以他们可以更好地重新定位客户,以提高客户保留率。作为一名数据科学家,这似乎是一项简单明了的任务。建立一个二进制分类模型,输出 1 为搅动的客户,0 为活跃的客户。事实上,你告诉你的同事,你可以通过给他们一个客户翻盘的可能性来超越他们的要求。

进一步的讨论发生了,你了解到市场营销将被搅动的客户定义为一年或一年以上没有订购的客户。您决定遵循他们现有的逻辑,并将您的模型的目标标记为这样。

你提出你的计划,然后营销部门给你建立模型的许可。你花了数周时间提取和清理数据,定义损失函数,确定交叉验证策略,训练和调整模型,验证结果,最终得到的 AUC 为 0.9。您对结果感到欢欣鼓舞,并自豪地向营销团队展示您的发现,告诉他们使用了什么数据和模型,以及如何解释 AUC。

市场部有意见:

  • 最近注册但没有下订单的用户被模型贴上了“搅动用户”的标签。这种情况不应该发生,因为订单周期更长。更广泛地说,在不同时间注册的用户应该有不同的流失定义。六个月内没有购买的常客可能被认为是被搅动的,而六个月内没有购买的新用户可能不会被搅动,因为正常的购买周期是一年或更长时间。
  • 营销部门意识到,模型预测的客户流失已经成为现有保留工作的目标。他们实施了一个简单的业务规则,即六个月内没有购买的客户已经获得了最大可能的折扣。模型输出能提供客户流失的原因吗?

从流失预测模型中得到的启示

无论模型有多精确,回答错误的问题都是浪费时间。

**企业可能并不总是预先知道它需要什么,因为企业经理可能不理解机器学习是如何工作的。挑战业务告诉你的东西。在这种情况下,预测流失有用吗?或者,我们是否希望预测客户对现有流失报价的反应程度,以便营销能够更好地针对他们现有的活动?能够有效地做到这一点需要了解业务和客户。

**目标的定义极其重要。企业如何定义客户流失,以及您希望如何训练您的模型可能会有所不同,因为用现有的客户流失定义训练模型可能会导致没有商业意义的预测。在这种情况下,了解不同的客户群(例如,顶级客户和新用户)及其不同的生命周期是获得有意义预测的关键。基于模型的训练方式来理解模型输出是必要的。

3。挑选最能增加业务价值的项目

在选择做什么项目时,问正确的问题也很重要。理想情况下,优先项目应该是那些对业务有最大机会的项目。机器学习项目需要时间来推广,承担错误项目的成本可能会超过收益。**

鉴于机器学习的经验性质,提出正确问题的重要性进一步凸显,因为结果无法得到保证。进行探索性数据分析可能不会产生太多的洞察力,并且构建模型可能不会产生比已实现的现有业务规则更好的结果。在承担一个项目的收益(它们需要很大)和成本(很小或无害)之间需要有一个显著的不对称,正是由于这种不对称,经验项目(试错)才能产生结果。凸性是表示这一点的数学性质。

Graphical representation of a convex strategy

机器学习项目可以比作烹饪,这在很大程度上依赖于试错,因为我们还不能直接从化学方程式中调制出一道菜。我们取大米,加入不同的配料组合,比如酱油和姜黄粉,尝一尝,看看配料之间的相互作用是否有所改善。然后,我们保留好的食谱,丢弃其余的。重要的是,我们有保留结果的选择权,而没有保留结果的义务,这让我们在保留优势的同时严格限制劣势。在机器学习的情况下,如果模型还没有在生产中实现,缺点是花在这些模型上的时间。这种“选择性”导致了机器学习项目的凸性,因为它允许数据科学家通过选择最佳模型并忘记其他模型来获得更多好处。至关重要的是,这意味着所选的项目必须具有很高的商业潜在收益。

在建立机器学习模型之前计算机会的大小可以帮助确定项目对业务的潜在影响。然后,可以将这种潜在影响与花费在项目上的估计时间进行权衡,以衡量项目的凸性。

计算商机规模的通用公式:

受影响的客户数量目标影响规模=预计项目影响*

着手直接影响业务杠杆的项目。 确保机器学习模型的输出直接影响商业杠杆也很重要。这将产生可直接操作的项目。例如,一家电子商务公司可能会要求其数据科学团队识别对某个品牌或商品类别有强烈意向的客户。仅仅预测客户是否有强烈的意图是不够的,因为意图不会直接影响任何商业杠杆。理想情况下,我们仍然希望给那些有强烈意向的人发送他们感兴趣的东西。识别有意向的客户只是等式的一半——识别为这些客户服务的产品同样重要。

4.快速迭代

快速迭代几乎总是最好的凸策略。 为了利用机器学习的经验性质和我们必须保留最佳模型的可选性,我们应该降低每次尝试的成本。当我们处理一个凸函数,我们的成本是每次迭代花费的时间时,大规模的单次试验比小规模试验的投资组合有更低的预期回报。降低每次尝试的成本意味着进行更多的尝试,在 N 次尝试中分配 1/N 的时间可以让我们将失败的概率降至最低,而不是在成功的情况下将利润最大化。

在实践中,这意味着基线模型在实施之前不需要对全部数据进行训练(例如,模型可以仅针对单个地理位置进行训练),或者首先构建简单的机器学习模型可以帮助衡量模型的输出是否可以在实践中实施。

Simple technologies can have a big impact when correctly applied

少即是多。从发现火到用火通过蒸汽机发电,经历了大约一百万年。有时最简单的技术也会被忽略。实际上,复杂化没有额外费用;在企业界是有的。查看人工智能研究中使用的最新技术会带来复杂性,在实践中,在数据探索后实施简单的业务规则可能是从数据中提取价值的全部内容。

拥有不同的视角很重要;俗话说:如果你只有一把锤子,那么一切看起来都像钉子。如果一个人过分依赖某个特定的工具、方法或心态,他可能看不清事物。在实践中,通过将数据探索与商业敏锐度相结合(例如,量身定制的客户细分)所实现的结果很快就会推出,而且机器学习模型很难超越。以这种方式使用数据使数据科学家能够快速迭代,并有助于建立一个良好的基线来衡量机器学习模型。

5。 数据没有灵丹妙药(至少目前没有)

了解数据的局限性以及机器学习算法如何工作对于了解哪些模型值得建立很重要。机器学习算法的有效性取决于所使用的数据,很多时候,收集的数据并不能完全代表现实,尤其是在涉及人类行为的时候。

这就是为什么 AI 在一些领域有更大的突破,而在另一些领域没有。在计算机视觉问题中,用于表示图像或视频的数字准确地代表了模型试图预测的内容。换句话说,整个假设空间被编码在计算机视觉问题的数据中。相比之下,股票价格受人类偏见的影响很大,使用神经网络通过每日收盘价、交易量和新闻情绪分析来预测股票价格不会像计算机视觉问题那样产生好的结果,这正是因为股票和买卖背后的人类心理和情绪无法编码在数据中。

含义:缩小问题规模,并从业务中获得输入,以更好地在模型中编码信息

缩小问题的范围。 这并不意味着当涉及人类行为时,数据科学就不能应用,但它的使用必须缩小规模。例如,对冲基金使用 NLP 进行情绪分析,这只是用于增强投资决策的工具之一。或者在上述情况下,与其预测客户何时会流失,不如根据客户之前的电子邮件打开率和点击率来预测客户对流失电子邮件报价的回应可能性可能更有意义。

利用业务知识完善原始数据。 通过融入商业知识,可以从原始数据中创建新的变量,使机器学习模型能够更好地发现有用的模式。这提高了使用相同数据的模型性能。数据科学家是他们自己领域的专家,由数据科学家进行的探索性数据分析通常不会像来自业务专家的洞察力那样多。例如,一个电子商务企业的产品被标记为数千个子类别,其中许多都非常相似。有了商业知识,可以对产品进行更恰当的标记,以更好地代表不同的子类别。这允许模型更好地理解子类别中的差异,并产生更好的结果。

正如Tirthajyoti Sarkar这篇中所言:

“对于实际的机器学习来说,对人类设计者来说,指定一种表示来捕捉关于假设的相对概率的知识有时可能比完全指定每个假设的概率更容易。

这就是知识表示和领域专长变得至关重要的地方。它缩短了(通常)无限大的假设空间,并把我们引向一组极有可能的假设,我们可以对这些假设进行最佳编码,并努力从中找出一组映射假设。"

6.模型在部署前必须由业务部门仔细评估

最后一英里问题是部署机器学习模型的最后障碍。要求机器学习模型 100%的时间提供正确的答案是不可能的,从违反基本商业规则的模型中获得建议并不罕见。

再次以流失预测模型为例,预测用户在注册几周后流失是没有意义的。因此,商业利益相关者应该在部署之前仔细评估机器学习模型的输出。

应用商业规则当卫士

拥有一个额外的业务规则层对于质量保证来说是必不可少的,也有助于防止损害客户体验的错误机器学习模型的推出。决定实现什么样的业务规则源于业务部门进行的健全性检查。

具体而言,健全性检查可以包括:

  • 通过根据不同的客户特征验证模型输出,确保模型输出有意义。用于验证的确切客户特征高度依赖于模型的用例。如果模型预测顶级客户何时会流失,请检查模型输出是否仅包括顶级客户,并且包括诸如上次网站浏览日期、上次订单日期、平均购物篮大小、订单数量等特征有助于验证输出

结论

有效数据科学背后的六个原则并不复杂。您可以将它们比作超参数调整,这些超参数在 0 到 100 的范围内确定模型输出对业务的价值。调整其中的任何一个都会影响项目带来的价值。

确保有一个人工智能需求层次,首先收集数据,然后在数据库中清理和转换数据,这对可扩展的机器学习至关重要。

在开始任何项目之前问正确的问题,并确保模型输出回答这些问题,将有助于确保项目的输出是有意义的。

考虑凸性和权衡项目的潜在成本和收益将有助于选择对业务价值最大的项目。

与此同时,快速迭代的心态让我们有更多的尝试,这将我们获得琐碎结果的可能性降至最低——这在本质上属于探索性的机器学习中尤为重要。快速迭代的一个扩展是旨在使用最有效但不一定最复杂的分析或机器学习技术。

能够理解数据的局限性将有助于定义项目的范围,以确保输出不是胡言乱语。从业务中获得洞察力以更好地设计功能有助于改进模型。

最后,由企业进行的健全性检查是必要的保障措施,以防止建议导致糟糕的客户体验。

感谢阅读,希望这篇文章对你有用。如果你不同意上面的任何观点,或者如果你对实现机器学习项目有更多有用的原则,让我们进行一次对话!

人们利用机器学习赚钱的 6 种方式

原文:https://towardsdatascience.com/6-ways-people-are-making-money-with-machine-learning-db10575f3564?source=collection_archive---------1-----------------------

source: www.graymeta.com

机器学习绝对非常酷,很像虚拟现实或者你键盘上的触控条。但是有用有很大区别。对我来说,如果能解决问题、节省时间或金钱,那就是有用的。通常,这三件事是有联系的,并且与一个更宏大的想法有关;投资回报

在人工智能和机器学习方面已经有了一些惊人的飞跃,但是如果它不能为你的投资提供回报,这些都没有意义。那么如何让机器学习变得有用呢?以下是机器学习如何为公司节省时间和金钱的一些真实例子:

  1. 查找资料

https://www.thunderstone.com/products-for-search/search-appliance/

我相信你已经花了时间去找一张照片或一封电子邮件。如果你全部加起来,那是多少时间?你每小时得到多少钱?公司也有这个问题。我们都完全淹没在数字内容中。我们到处都有文件和文件夹,它们被塞满了。更糟糕的是,我们也没有很好地跟踪它。类似于我的公司 GrayMeta 的平台被用来扫描企业拥有的一切,并运行诸如对象识别、文本分析、语音到文本、人脸识别等功能。来创建好的,可搜索的数据库。人们现在花在搜索和寻找东西上的时间大大减少了。这种节省远远大于平台的成本。Tadaaa!这就是 ROI 宝贝。

2.瞄准你的观众

如今广告商面临的最大问题之一是人们忽视了他们的产品。我承认我觉得 99%的广告都很烦人,而且不相关。我尽我所能不点击或不看广告。问题是广告还是太宽泛,而且通常不能反映我的个人兴趣。做广告的平台希望用机器学习来解决这个问题。

http://neilpatel.com/blog/your-ads-are-getting-ignored-5-smart-strategies-to-overcome-banner-blindness/

向观众提供内容的公司现在正在使用计算机视觉和语音转文本技术,以比以前更精细的方式理解他们自己的内容。然后,这些信息被动态地用于驱动你在内容中或内容旁边看到什么广告。你在看一部关于狗的电影吗?看到狗粮的广告不要惊讶。更多的相关广告意味着更多的参与,更多的参与意味着更多的钱。

3.提高存储效率

您知道吗,大多数云存储服务根据您需要内容的速度有不同的定价?存储在一个可以立即访问的地方的东西每 GB 大约要花 0.023 美元。但是你不介意等待的东西每 GB 要花费 0.004 美元。便宜五分之一。新闻机构有许多采访、b-roll 和其他重要的镜头,它们正在转移到云上。假设他们有 100TBs 的内容。为了快速访问(因为新闻发生得快),他们将 100%的内容保存在更昂贵的层上。这让他们每月花费 2300 美元,每年 27600 美元。

现在,他们使用机器学习来决定哪些内容应该存储在更昂贵的层上。社交媒体上的趋势关键词在数据库中发起查询,该数据库具有每个视频的粒度元数据(多亏了机器学习)。对该查询的肯定匹配启动该视频到更昂贵的存储器的传输。该公司现在可以在更便宜的存储设备上存储 100TBs,每年节省 22,800 美元。

4.提高存储效率

使用上述公司存储在云中的 100TBs 数据也是要花钱的。让我们假设,到今年年底,100%的内容都需要被下载、编辑和用于新闻制作。那要花 84000 美元。如果你不知道你的云存储中有什么,你必须下载它来找出答案,这需要你花钱。你有没有一个标签为 b-roll 的文件夹,里面有很多视频文件,仅凭文件名无法识别?由于机器学习,人们可以知道每一个视频中有什么,而不必下载它。他们可以下载他们想要的确切文件,而不是整个文件夹或项目,每年节省数万美元的外出费用。

5.分析东西

大多数机器学习都是关于预测事物的。一家受欢迎的视频点播公司列出了你观看的所有内容,你观看它们的时间,你观看之前的趋势,并训练一个机器学习模型来尝试和预测你接下来要观看的内容。他们使用这种预测来确保该内容在离您最近的服务器上已经可用。对你来说,这意味着电影播放速度快,质量高。对于视频点播公司来说,这意味着他们不必将自己拥有的所有东西都存储在世界上的每一台服务器上。他们只在认为你会看的时候才会把视频内容转移到服务器上。这省下的钱是惊人的。

6.避免罚款和保全面子

联邦通信委员会和其他政府机构可以对广播公司进行罚款,因为它们有不雅或淫秽的内容,如裸体、性内容或图形语言。其他发行合作伙伴可能只是对他们能玩什么或不能玩什么有严格的规定。你可能会认为,在将有问题的内容发送出去之前,很容易就能发现它们,但事实证明,制片厂仅仅是在内容发布之前检查一下,就要花费超过 120 个工时!如果你每小时付给这些人 20 美元,那么每部电影,每个分销渠道就是 2400 美元!如果你认为每个国家至少有一个频道,那么每个国家都有机上娱乐、日间电视、黄金时间电视、点播等节目..变得疯狂。幸运的是,机器学习通过自动标记内容为这些公司节省了大量的时间和金钱。人类仍然需要审查和批准,但他们花在这方面的时间从几周减少到几分钟。这是我个人看到的机器学习投资的最大回报之一。

作为个人或大公司,机器学习可以成为实现目标的非常有用的工具。弄清楚如何将一些很酷的技术和现实问题结合起来并不容易。这就是为什么考虑想法的有用性和投资回报总是很重要。

7 数据类型:思考机器学习数据类型的更好方式

原文:https://towardsdatascience.com/7-data-types-a-better-way-to-think-about-data-types-for-machine-learning-939fae99a689?source=collection_archive---------2-----------------------

超越数字和范畴

在本文中,我为机器学习实践者提出了一个更有用的数据分组分类法:7 种数据类型。

关于机器学习的编码、输入和特征工程的在线课程、教程和文章通常将数据视为分类数字。二进制和时间序列数据有时会被调出,偶尔,序数这个术语会溜进对话中。然而,需要一个更精细的框架来提供更丰富的公共词典,用于思考和交流机器学习中的数据。

我在这篇文章中提出的框架应该引导从业者,尤其是新的从业者,更快地开发更好的模型。有了 7 种数据类型作为参考,我们应该能够更快地评估和讨论可用的编码选项和插补策略。

TL;DR;

将您的每个功能作为以下七种数据类型之一进行思考和讨论,以节省时间和传递知识:

  1. 无效的
  2. 名义上的
  3. 二进制的
  4. 序数
  5. 数数
  6. 时间
  7. 间隔

更新

通读一遍,看看机器学习的另外 4 种数据类型。

当前状态

在机器学习的世界里,数据几乎总是被分成两组:数值型和分类型

数字数据用来表示由数字(浮点或整数)表示的任何东西。分类数据通常意味着其他一切,特别是离散的标记组经常被调出。这两个主要的分组——数字分组和分类分组——使用起来不一致,并且没有提供关于应该如何操作数据的更多指导。

数据通常需要以数字形式输入,以便机器学习算法使用这些数据进行预测。在机器学习指南中,分类字符串数据通常是 one-hot-encoded (又名哑编码)。Dan Becker 在 Kaggle 的机器学习教程系列中将它称为“分类数据的标准方法”。

在教程中,经常会假设所有以数字形式到达的数据都可以直接使用,并且所有的字符串数据都需要进行一次热编码。虽然许多教程确实对数据类型进行了更深入的研究(例如专门处理时间、二进制或文本数据),但这些更深入的研究通常不是以系统的方式进行的。事实上,我还没有找到明确的准则来根据本文提出的分类法转换数据。如果你知道这样的数据科学资源,请在评论中分享:)

在研究生院接受社会科学方法和统计学培训后,我来到机器学习,我发现很惊讶的是,没有太多关于序数数据的讨论。例如,我发现自己一直在试图找出最好的方法来编码和估算字符串形式的顺序标度数据和数字形式的名义(真正分类的)数据。如果没有清晰一致的数据类型分类,这将花费不必要的时间。

这 7 种数据类型的灵感来自 Steven 的测量尺度类型学和我自己对机器学习模型中需要特别考虑的数据类型的观察。在介绍 7 种数据类型之前,让我们先来看看正在使用的度量标准及其来源。

史蒂文斯的测量量表类型学

Stanley Smith Stevens

20 世纪 60 年代,哈佛大学心理学家 Stanley Smith Stevens 为数据创造了四个测量尺度:比率、区间、序数和名义值,这四个尺度是 T2。

  • 比率(值和有意义的零值之间的等间距—平均值有意义)
  • Interval(值之间有相等的空格,但没有有意义的零值 mean 有意义)
  • 序数(第一个、第二个、第三个值,但第一个和第二个以及第二个和第三个值之间的间距不相等—中间值有意义)
  • 名义值(不同类别之间没有数字关系——平均值和中值没有意义)

史蒂文的类型学变得非常流行,尤其是在社会科学领域。此后,其他研究人员进一步扩大了音阶的数量( Mosteller & Tukey) 包括多达十个类别( Chrisman )。尽管如此,Steven 的类型学在社会科学中占据主导地位,偶尔也会在数据科学中被引用(例如这里),尽管在许多情况下没有提供明确的指导。

其他机器学习和数据科学从业者已经以各种方式采用了史蒂文类型学的部分内容,导致了各种各样的术语。例如,Hastie、Tibshirani 和 Friedman 在《统计学习的要素》第二版中。将比率区间组合成定量并分解出序数分类在一个例子中(第 504 页)。哈斯蒂等人。艾尔。将序数称为有序分类变量,将分类变量称为定性离散、因素(第 10 页) [假人统计](http://TYPES OF STATISTICAL DATA: NUMERICAL, CATEGORICAL, AND ORDINAL)将数据类型分解为数值序数分类——在数值下用区间集总比率。DataCamp 是指教程中的连续序数名义数据类型。

统计学中偶尔出现的一种分类是介于离散变量和连续变量之间的。离散数据有不同的值,而连续数据在一个范围内有无限个可能的值。

但是一般在机器学习中数值和分类就是你会看到的除法(比如这里的)。流行的 Pandas 库在其可选的 类别 数据类型中将序数和名义数据结合在一起。总的来说,目前机器学习数据类型的词典不一致,令人困惑。而不清楚的,学的慢。可以做些什么来改善事情?

机器学习的 7 种主要数据类型

虽然改进机器学习中的数据类型词典似乎是一个大胆的目标,但我希望这篇文章将提供一个有用的分组分类法,以便为数据科学家提供更可行的步骤。通过提供清晰的类别,我希望帮助我的同事,尤其是新人,更快地建立模型,并发现提高模型性能的新选项。

我建议对机器学习从业者最有用的 7 种数据类型进行如下分类:

  1. 无效的
  2. 名义上的
  3. 二进制的
  4. 序数
  5. 数数
  6. 时间
  7. 间隔

1.无效的

无用数据是唯一的、离散的数据,与结果变量没有潜在关系。一个无用的特性可能有很高的基数。随机生成的银行账号就是一个例子。

That’s useless for machine learning, but kind of cool

如果特征由没有顺序和意义的唯一值组成,则该特征是无用的,并且在拟合模型时不需要包括在内。

没有变化的特性也是如此。如果数据集中的每个人都是成年人,那么用一列 1 来表示这些信息对模型没有帮助。

2.名义上的

名义数据由不同类别之间没有数值关系的离散值组成,平均值和中值没有意义。动物物种就是一个例子。比如,猪并不比鸟高,比鱼低。

Nominal data: animal groups

国籍是名义数据的另一个例子。群体成员没有数字顺序——法国人、墨西哥人或日本人本身并不意味着一种有序的关系。

您可以一次性热编码或散列名义特征。不要对它们进行顺序编码,因为组之间的关系不能简化为单调函数。值的分配将是随机的。

3.序数

序数数据是可以排序的离散整数。一个决定性的特征是任何两个数之间的距离都是未知的。

例如,第一和第二之间的距离可能不同于第二和第三之间的距离。想想 10 公里赛跑。获胜者可能跑了 30 分钟,第二名可能跑了 30 分 01 秒,第三名可能跑了 400 分钟。没有时间数据,我们不知道队伍之间的相对距离。

概括地说,序数数据可以用三种方式之一进行编码。可以假设它与区间数据足够接近,数值之间具有相对相等的幅度,从而将其视为区间数据。社会科学家一直用李克特量表做这个假设。例如,从 1 到 7,1 表示极不可能,4 表示既不可能也不太可能,7 表示极有可能,您向朋友推荐这部电影的可能性有多大?这里,3 和 4 之间的差以及 6 和 7 之间的差可以合理地假设为相似。

第二种选择是将有序数据视为名义数据,其中每个类别与任何其他类别都没有关系。在这种情况下,可以使用一键编码或类似的方案。

第三个选项将在以后的文章中更详细地探讨,它类似于反向赫尔默特编码,可用于对值之间的各种潜在大小进行编码。

将有序数据归类为它自己的数据类型是有好处的。

4.二进制的

二进制数据是离散数据,只能属于两类中的一类——是或否、1 或 0、开或关等。二进制可以被认为是序数、标称值、计数或区间数据的一种特殊情况。

二进制数据是机器学习分类问题中非常常见的结果变量。例如,我们可能希望创建一个监督学习模型来预测肿瘤是恶性的还是良性的。

二进制数据是常见的,当考虑您的数据时,应该有自己的类别。

5.数数

计数数据是离散的整数数据,这里没有负数。计数数据通常有许多小值,如零和一。

计数数据通常遵循泊松分布

Poisson distribution drawn from random numbers

计数数据通常被视为类似于区间数据,但它足够独特和广泛,足以值得自己的类别。

6.时间

时间数据是一种循环的、重复的连续数据形式。相关的时间特征可以是任何时间段——每天、每周、每月、每年等等。

每个观察值可能是我们见过的任何其他数据类型。例如,您的数据可能包含按日期排列的单位销售额或总收入。

Pandas python 库的设计考虑了时间序列数据。财务和营销数据通常包含重要的时间序列部分。

时间序列数据通常需要一些争论和操作来创建可能对您的模型有意义的周期特征。

缺失的时间序列数据通常使用适合于季节或每日数据的独特方法来填充。

时间序列数据有一些自己的模型,绝对值得单独考虑。😀

7.间隔

间隔数据在数字之间有相等的空间,并且不代表时间模式。例子包括百分比、温度和收入。

区间数据是最精确的测量尺度数据,非常普遍。尽管每个值都是一个离散的数字,例如 3.1 英里,但对于机器学习来说,它是否是一个连续的范围(例如,无限小的测量大小是可能的)通常并不重要,是否存在绝对零度也不重要。

区间数据通常很容易处理,但您可能希望创建条柱来减少范围的数量。

这里有 7 种数据类型。

  1. 无效的
  2. 名义上的
  3. 二进制的
  4. 序数
  5. 数数
  6. 时间
  7. 间隔

尽管许多有经验的机器学习实践者在实践中确实认为用这些标签描述的一些数据类型不同,但该领域缺乏明确的分类。我假设使用上面的分类法将帮助人们更快地评估编码、输入和分析数据的选项。

请注意,这七个类别中的大多数可以以几乎任何形式出现在您的原始数据中。我们不是在讨论 float 64 vs bool:Python 类型或(Numpy 或 Pandas dtype)与这里讨论的数据的类型不同。

这是正确的七类吗?

类型学被发明出来进行辩论。😀

在构建 7 种数据类型时,我问自己将计数数据与区间数据分开是否真的有用。最后,我认为这是因为文本数据是计数数据的一种常见形式,并且计数数据确实有一些常见的不同统计方法

类似地,二进制数据可以被视为所有更高比例类型的子类型。然而,二进制数据在机器学习中非常常见,二进制结果变量具有一些其他多分类任务所不具有的潜在机器学习算法。您也不需要采取额外的步骤来编码二进制数据。

2018 年 12 月 7 日更新:

在深度学习上花了更多时间并考虑了读者的评论后,我会再添加四种特定的数据类型,使机器学习的有用数据类型总数达到 11 种。

8.图像

9.录像

10.声音的

11.文本

这四种数据类型具有独特的特征和专为它们构建的库特性。我认为机器学习的数据类型的全面分类需要包含它们。

如果你想倡导不同的分类法,请在评论中提出。

我该如何记住这些 7̶数据类型呢?

  1. 无效的
  2. 名义上的
  3. 二进制的
  4. 序数
  5. 数数
  6. 时间
  7. 间隔
  8. 图像
  9. 录像
  10. 声音的
  11. 文本

记忆是学习的关键。RNBOCTI 并不完全是脱口而出。

One of the eight or nine planets

9 行星助记符中得到启示,让我们制作一个助记符来帮助记住 7 种数据类型。

丑吵倭黑猩猩和老猫拿冰?

或者

傲慢吵闹的男孩常常无法接受指令

或者

新床底下老牛翻身

你或许可以做得更好。😉想出你自己的助记符,包括四种额外的数据类型,并在评论中分享。👍

我应该传播关于数据类型的信息吗?

绝对的。

在本文中,我将数据类型归类为 s̶e̶v̶e̶n̶十一大类之一,以创建一个更连贯的词典,用于在数据科学中思考和交流数据类型。这些类别对我在本文的中探索的编码选项有影响。

当我们都使用相同的术语来表示相同的事情时,我们就节省了学习和传递知识的时间。听起来是不是很棒?如果您同意,请在您最喜爱的社交媒体上分享。

我写关于数据科学、T2、Python 和其他技术主题的文章。如果你对这些感兴趣,请关注我,在这里阅读更多。😀

感谢阅读!

我从零开始构建 MySQL 数据处理系统(使用 Python)中学到的 7 个教训

原文:https://towardsdatascience.com/7-lessons-ive-learned-from-building-up-a-mysql-data-processing-system-from-scratch-cccd8c7517e0?source=collection_archive---------10-----------------------

在写这篇短文之前,我首先要说的是,我并不自称是一名优秀的数据科学家或机器学习工程师。第一件事是,我有一段有趣的、意想不到的(对我来说)工作经历,我想分享一些我从中学到的感悟。

我自己是一名自然语言处理/机器学习科学家,至于我的经验,不幸的是,我不能说你真的需要一个很好的计算机科学背景才能在这个领域成功工作(至少在我的国家),我不认为这是一个好的工作概念。我个人认识一些杰出的研究人员,他们由于某种原因没有足够的技能来参与实时开发和知识库贡献,这是一种小型数据科学悲剧。所以,知道我将要讲述的一些事情对于大多数阅读这篇短文的观众来说可能是非常清楚的,我仍然想分享它们——也许有人会发现这些信息是有用的。

我希望你会喜欢我将要讲的故事。

1.处理异常至关重要

当我第一次尝试连接到存储在 Google Cloud 上的这个特定的 MySQL 数据库时,我遇到了许多不同的错误。当我设置我的代理时,我经历了更多。事情是,处理所有的错误总是更好的,尤其是与连接相关的错误,在代码开发的第一阶段,在需要时抛出,否则调用 except 语句。

这听起来可能很简单,但在我的例子中,我可以有环境变量,其中有 UNIX 套接字名称和节点环境名称,我可以让它们的值不正确,我可以让我的数据库凭证不正确,,我可以拥有这一切。处理这类案例的几个小时节省了我很多时间,我真的很高兴我把这些时间投入到项目开发的这个阶段。

2.适当的抽象类是无价的

在处理抽象类时,你需要记住的最重要的事情是,你需要花很多时间和精力去定义它,并且你需要确定你确实需要它。我的存储库的结构是基于这样一个事实,即我必须创建许多。csv 文件,具有非常相似的模式(唯一键)。事实上,我有许多类似的提取器、算法、数据后处理器等。,所有这些都被简化为基本抽象类,这使得下一个模块的创建更加容易。

当你写第 n 个模块的时候,你真的意识到你已经把你的类做对了,而且你明白,构造函数和一些在编码时没有定义的方法已经实现了,你不需要再为它们费心了。

3.灵活的存储库结构总是最好的

有时它可能看起来有点难看(例如,一个文件夹中有一个文件),但是如果您看到如果您需要更改一些关键模块(例如,像文本预处理程序),并且这样做您只需要更改 1-2 个文件,那么它是很好的

我不认为自己是一个软件架构师,所以对我来说很难判断在这个领域什么是好的,什么是错的,但是我学到的是组件的高度碎片化和独立性总是好的。我自己开发的 repo 有大量的小文件夹,引用它们比试图使架构整体化要容易得多(也许更漂亮)。

4.测试数据科学模型是值得的

我写这些文字的时候,我在嘲笑自己,因为我仍然没有足够的时间来创建涵盖所有情况的漂亮的测试。我仍然提到这一点的原因是,如果您有不太明显的 ML/NLP 模型行为,至少为了您自己的利益,最好对它进行测试。

我没有很多 NLP/ML 算法(其中大部分足够简单),但是它们的另一部分如果没有最简单的测试就无法支持。此外,在更好地理解模型方面,测试通常是有用的——浏览断言语句,当您希望在脑海中刷新时,一些算法概念可能会变得更加清晰。

5.使数据库符合第三范式

有时这是我和同事争论的一部分,但是如果不使所有 3 个语句都完美地为数据库工作,你就不能编写一个有效的数据处理系统。没有它们,一些不明显的查询麻烦往往会发生,你甚至找不到问题出在哪里。

一个简短的 SQL NFs 指南是这里是,我认为多看两遍总是更好。

6.记录你的错误

简单易用—日志记录。通常,你不会查看你收到的所有 3 年警告和错误,但是一些错误可能不会重复(我有一些错误),日志记录至少帮助我理解了发生的原因。我是在我的本地机器上做的,当一些东西在服务器上不工作时,查看类似的案例为我节省了一些时间。

7.除非你的数据库非常简单,否则你不需要 ORM

在从事这个项目的很长一段时间里,我真的担心我需要用 ORM 重写所有的东西。我大错特错了。

实际上,像 SQLAlchemy 和 Peewee 这样的东西适合小型的简单数据库,但是它们不适合像 had 这样的复杂数据库(有时编写一个查询需要 4 个 group by 和 5 个 joins)。它们很优雅,有时非常简单和漂亮,但无论如何,如果你只是简单地使用连接器 API,你就不能拥有像一样多的控制。我决定使用 MySQL Connector,我很高兴我没有改变我的决定,因为用 ORM 编写任何东西都会使困难的事情变得更加复杂。

∞.结论

这篇小笔记与 ML/NLP 算法解释及其性能讨论无关,但我仍然觉得它很有用。我希望在开始从事这个项目之前,我知道上面描述的所有陈述,但我也确信,只有在花费一些痛苦的时间修复错误和寻找实际问题之后,其中一些陈述才会变得清晰易懂。

在使用 GPU 加速深度学习应用程序之前,需要思考 7 点

原文:https://towardsdatascience.com/7-points-to-ponder-before-you-use-gpus-to-speed-up-deep-learning-apps-cfc53dc29b54?source=collection_archive---------19-----------------------

Deep Learning and GPUs

介绍

鉴于围绕其加速的宣传,使用GPU进行深度学习训练和推理是很有诱惑力的。然而,为了有效地使用这些资源,更深入地了解加速的来源是很重要的。在本文中,我们将研究一个典型的 DL 应用程序的性能依赖性。我们将使用英伟达的大肆宣传的机器 DGX-1 作为例子,但以下几点是通用的,足以适用于通用 GPU 或 TPU。

1.五金器具

底层硬件规格在决定 DL 加速方面起着最重要的作用。对于典型的 DL 应用程序来说,拥有一个快速的硬件并不能自动转化为最好的加速,除非你非常小心。

  1. GPU 数量 (8 特斯拉 P100s)
  2. CUDA 内核(28672 个 CUDA 内核)
  3. 张量核心(无)
  4. GPU 内存(128GB)
  5. 系统内存 (512GB,2,133 MHz DDR4)

2.数据传送

由于 DL 应用程序执行数据密集型操作,因此在训练和推理过程中理解硬件组件之间的数据流非常重要。今天的高档机器中的数据传输范围从网络上的几千兆字节/秒到 GPU 集团内的超过 100 千兆字节/秒。这可能会对 DL 应用程序的性能产生高达 100 倍的影响。例如,采用 nVLink 的特斯拉 P-100 架构允许 GPU 之间的数据传输速度高达 160GB/s,同时,它可以通过 HDD/SSD、NIC 或 RAM 接口来降低速度。

记住这一点很有帮助,数据传输链的速度与其最慢的链路一样快。下面是数据传输所依赖的速度的组成部分。

  1. 硬盘驱动器或 HDD(典型速度 100MB/s)
  2. 固态硬盘或 SSD(典型速度 500MB/s)
  3. PCI express 5(典型速度 4GB/s-60GB/s)
  4. 网络接口卡(典型速度 16Gb/s)

3.基础设施软件

基础设施软件包括以下选项

  1. 操作系统: Ubuntu 14.04 LTS 依然是热门选择。在将机器用于 DL 应用程序之前,请确保删除未使用的守护程序和服务(例如 ftp、防火墙等)。
  2. 编程语言和 DL 框架: Python 和支持多线程的 Tensorflow 是一个流行的组合。深度学习库中对优化算法(如 Allreduce、Parameter-Server & Worker 等)的本机支持可以平衡数据管道,这对于利用快速硬件有很大帮助。其他值得一提的流行 DL 库有 CaffeCNTKpyTorch

4.深度学习模型

如果您使用现成的深度学习模型(如 VGG16、resNet50 等)进行推理,请考虑使用针对您选择的深度学习库优化的版本,以确保神经网络结构针对效率进行了优化。Tensorflow 社区继续支持新的 DL 模型,以实现更大的利益。你可以在这里访问它们

5.数据集

数据集或样本的大小是一个重要的指标。一般来说,现实生活中的数据要比数据挖掘应用程序所需的数据大几个数量级。例如,VGG-16 仅拍摄 224x224 像素的图像,而典型的手机相机则拍摄 4000x3000 像素的图像。与在训练循环或推断中避免不必要的带宽消耗相反,在此之前减少一次大小是值得的。

6.培养

对 DL 训练原语和分发策略的原生 GPU 支持使得 DL 开发人员工作效率更高。

样本 DL 训练原语包括池化、批量标准化、丢弃、ReLU、Sigmoid、Softmax 等

分发策略涵盖镜像策略、PS-worker、All reduce 等技术。

分布式风味的反向传播算法如自动微分对计算效率起着至关重要的作用。

确保像 nVidiaAMD 这样的 GPU 提供商为你选择的深度学习库提供支持是很重要的。nVidia 为 DL 训练原语提供了成熟的 cuDNN,而 AMD 的 ROCM 还有很多需要赶上。

7.推理

DL 推断可能会拖累大型 DL 模型,如 resNet152 ,并且可以在生产模式中使用 GPU。推理优化包括以下两种方法。

层和张量融合改变图的结构,在不影响输出精度的情况下提高推理性能。

精度校准降低神经元精度(从 FP32 到 FP24、FP16 或 INT8)会对 DL 模型精度产生不利影响,因此必须谨慎使用。

摘要

下图总结了我们上面讨论的 7 点。

信用

这些数据大部分是为《设计自动化中的机器智能》这本书收集的。

7 个实用的深度学习技巧

原文:https://towardsdatascience.com/7-practical-deep-learning-tips-97a9f514100e?source=collection_archive---------4-----------------------

想获得灵感?快来加入我的 超级行情快讯 。😎

深度学习已经成为解决许多具有挑战性的现实世界问题的首选方法。对于物体检测、语音识别和语言翻译来说,这是迄今为止性能最好的方法。许多人将深度神经网络(DNNs)视为神奇的黑匣子,我们将一堆数据放入其中,然后我们的解决方案就出来了!实际上,事情实际上会变得复杂得多…

在针对特定问题设计和应用 DNN 时,可能会面临一系列挑战。为了达到实际应用所需的性能标准,管道中所有阶段的正确设计和执行至关重要,包括数据准备、网络设计、训练和推理。在这里,我将与你分享 7 个实用技巧,让你最大限度地利用你的深层神经网络。

1 —数据,数据,数据

这不是什么大秘密。一直运行良好的深度学习机器需要燃料——大量的燃料;这种燃料就是数据。我们拥有的标签 数据越多,我们的模型表现就越好。更多的数据导致更好的性能的想法甚至已经被谷歌用 3 亿张图像的数据集进行了大规模的探索!

重新审视深度学习时代数据的不合理有效性

当在现实世界的应用中部署深度学习模型时,你应该不断地向它提供更多的数据并进行微调,以继续提高它的性能。下图很好地说明了这将如何影响你的准确性。传统的机器学习算法达到了早期饱和点,超过这个饱和点,更多的数据就没有帮助了(蓝线)。另一方面,深度学习可以带你走得更远,获得更多数据(红线)。

喂野兽:如果你想提高你的模型的性能,获得更多的数据!

Increasing data consistently yields better performance

2 —您应该使用哪种优化器?

多年来,已经开发了许多梯度下降优化算法,并且每个算法都有其优点和缺点。一些最受欢迎的包括:

  • 带动量的随机梯度下降(SGD)
  • 圣经》和《古兰经》传统中)亚当(人类第一人的名字
  • RMSprop
  • 阿达德尔塔

RMSprop、Adadelta 和 Adam 被认为是自适应优化算法,因为它们自动更新学习率。使用 SGD,您必须手动选择学习率和动量参数,通常学习率会随时间衰减。

实际上,自适应优化器往往比 SGD 收敛得更快;但是,他们最后的表现通常会稍差一些。SGD 通常可以获得更好的最小值,从而获得更好的最终精度,但是它可能比某些优化器花费更长的时间。它还更加依赖于一个健壮的初始化和学习率衰减时间表,这在实践中很难调整。

因此,如果你需要一些快速的结果,或者只是想测试一种新的技术,那么就使用自适应优化器。我发现 Adam 非常容易使用,因为它对你选择完美的学习速度并不敏感。如果你想要绝对最好的最终性能,使用 SGD + Momentum 并使用学习率、衰减和动量值来最大化性能。

两全其美

最近的研究表明,你可以两全其美:通过从 Adam 切换到 SGD 进行高速训练和顶级表现!这个想法是,训练的早期阶段实际上是 SGD 对参数调整和初始化非常敏感的时候。因此,我们可以通过使用 Adam 开始我们的训练,这将使您走得很远,而不必担心初始化和参数调整。然后,一旦亚当让我们滚动,我们可以切换到 SGD +动量优化,以实现最佳性能!论文中的关键数字如下所示,展示了如何通过这种技术来提高精确度。

Adam vs SGD performance. Adam performs better at the beginning due to robustness and adaptive learning rate, while SGD reaches a better global minimum in the end.

3—如何处理不平衡的数据

在很多情况下,你会处理不平衡的 数据,尤其是在现实世界的应用中。举一个简单但真实的例子:出于安全原因,你正在训练你的深层网络来预测视频中的某人是否持有致命武器。但是在你的训练数据里,你只有 50 个拿武器的人的视频,1000 个没拿武器的人的视频!如果你只是用这些数据马上训练你的网络,你的模型肯定会高度偏向于预测没有人曾经拥有过武器!

你可以做一些事情来解决这个问题:

  • 在损失函数中使用 权重。本质上,代表不足的类别在损失函数中接收更高的权重,使得该特定类别的任何错误分类将导致损失函数中非常高的误差。
  • 过采样:重复一些包含代表性不足的类的训练示例有助于均衡分布。如果可用数据很少,这种方法效果最好。
  • 欠采样:您可以简单地跳过一些包含过度表示类的训练示例。如果可用数据非常大,这种方法效果最好。
  • 少数民族阶层的数据扩充。你可以为代表性不足的班级综合创造更多的训练范例!例如,在前面检测致命武器的例子中,你可以改变视频的一些颜色和灯光,这些视频属于拥有致命武器的类别。

4 —迁移学习

正如我们在第一个技巧中看到的,深度网络需要大量数据。不幸的是,对于许多新的应用程序来说,这些数据很难获得,而且获取成本很高。如果我们希望我们的模型表现良好,我们可能需要数万或数十万个新的训练样本来进行训练。如果一个数据集不容易得到,它必须全部收集起来并手工标记为

这就是迁移学习发挥作用的地方。有了迁移学习,我们就不需要很多数据了!这个想法是从一个之前在数百万张图像上训练过的网络开始,比如在 ImageNet 上预先训练过的 ResNet 。然后,我们将通过只重新训练最后几层而不去管其他层来微调 ResNet 模型。通过这种方式,我们获得了 ResNet 从数百万张图像中获得的信息(图像特征),并对其进行了微调,以便我们可以将其应用于不同的任务。这是可能的,因为跨域的图像的特征信息通常非常相似,但是对这些特征的分析可以根据应用而不同。整个过程如下图所示,它展示了我们如何获取源模型的特性,并将其作为全新目标模型的起点。

A basic transfer learning pipeline

5 —快速简单的数据扩充,以提高性能

我们已经说过几次了:更多的数据=更好的性能。除了迁移学习,另一种提高模型性能的快速简单的方法是数据扩充。数据扩充包括通过改变来自数据集的一些原始图像,同时使用原始类别标签来生成合成训练样本。例如,图像数据扩充的常见方式包括:

  • 水平和垂直旋转和/或翻转图像
  • 改变图像的亮度和颜色
  • 随机模糊图像
  • 从图像中随机裁剪补丁

基本上,你可以进行任何改变图像外观的改变,但不能改变整体内容,也就是说,你可以把一张狗的图片变成蓝色,但你仍然可以清楚地看到这是一张狗的图片。下图来自 imgaug 库,显示了许多你可能想要尝试的图像增强选项,以提高你的模型的准确性。

Data augmentation galore!

6-用合奏来提升你的模型!

在机器学习中,集合训练多个模型,然后将它们组合在一起,以实现更高的性能。因此,想法是在相同的数据集上对相同的任务训练多个深度网络模型。然后可以通过投票方案将模型的结果结合起来,即票数最高的类别获胜。

为了确保所有模型都是不同的,可以使用随机权重初始化和随机数据增加。众所周知,集合通常比单个模型更精确,这是由于使用了多个模型,因此从不同的角度处理任务。在现实世界的应用中,尤其是挑战或比赛,几乎所有的顶级模型都使用系综。集成的一般要点如下所示,其中 3 个不同分类模型的输出被组合在一起。

Ensemble models

7 —通过修剪加快速度

我们知道模型精度随着深度增加,但是速度呢?层数越多意味着参数越多,参数越多意味着计算越多,内存消耗越大,速度越慢。理想情况下,我们希望在提高速度的同时保持高精度。我们可以通过修剪来做到这一点。

这个想法是,在网络的许多参数中,有些参数是冗余的,对输出没有太大贡献。如果你可以根据神经元的贡献大小对网络中的神经元进行排序,那么你就可以从网络中移除排序较低的神经元,从而形成一个更小、更快的网络。可以根据神经元权重的 L1/L2 均值、它们的平均激活度、某个验证集上神经元不为零的次数以及其他创造性方法来进行排序。获得更快/更小的网络对于在移动设备上运行深度学习网络很重要。

修剪网络的最基本方法是简单地丢弃某些卷积滤波器。这在最近的论文中做得相当成功。这项工作中的神经元排序相当简单:它是每个过滤器权重的 L1 范数。在每次修剪迭代中,他们对所有的过滤器进行排序,在所有层中全局地修剪 m 个最低排序的过滤器,重新训练并重复!

另一篇最近发表的论文提出了修剪过滤器的关键见解,该论文分析了残差网络的结构。作者表明,当删除图层时,具有残余快捷连接的网络(如 ResNets)在保持良好的准确性方面远比不使用任何快捷连接的网络(如 VGG 或 AlexNet)更强大。这一有趣的发现具有很大的实际意义,因为它告诉我们,在为部署和应用而修剪网络时,网络设计至关重要。).所以用最新最棒的方法总是好的!

这是一个总结!

这就是你深度学习的 7 个实用技巧!

喜欢学习?

推特上关注我,我会在那里发布所有最新最棒的人工智能、技术和科学!

给数据科学领导者的 7 条建议(游戏行业)

原文:https://towardsdatascience.com/7-recommendations-for-data-science-leaders-in-the-game-industry-3d82d45746d2?source=collection_archive---------1-----------------------

在游戏行业的不同数据团队工作了五年后,我最近决定加入金融行业的一家初创公司。虽然许多数据团队被分配了大量的资源,但将研究结果实际投入生产并产生面向客户的影响通常具有挑战性。根据我在 Twitch、Electronic Arts 和 Daybreak Games 的经验,我对数据科学团队的领导者有以下建议:

  1. 为数据科学家角色设定现实的期望
  2. 提供一个分享结果的论坛
  3. 定义产品化模型的过程
  4. 鼓励数据科学家提交 PRs
  5. 通过 MBR 避免死亡
  6. 提供如何升级为 IC 的路线图
  7. 为可重复研究设置工具

我将在下面更详细地讨论每一点,并从我的经验中突出例子。

为数据科学家角色设定现实的期望 为数据科学家将在您的团队中执行的项目类型和日常工作设定明确的期望非常重要。数据科学是一个广泛使用的术语,向候选人明确定义该角色非常重要,最好是在第一次电话面试时。当谈论即将到来的项目时,有点前瞻性是可以的,但对你的团队今天执行的工作类型持现实态度也是必要的。如果您团队的大部分时间都花在诸如仪表板、数据工程和编写跟踪规范等任务上,那么可能就没有多少时间用于建模和构建数据产品了。如果你向候选人推销一个角色的有趣建模工作,而他们的大部分时间都花在了其他工作上,你可能很难留住数据科学家。

我在游戏行业看到的最好的例子是,一名候选人在面试电子艺界数据科学团队的一个角色,该团队专注于核心项目,而不是与游戏工作室合作。该候选人对嵌入游戏团队更感兴趣,基于这一反馈,他被一个嵌入式分析团队聘用。

提供分享成果的论坛 数据科学家应该有一个在公司内部和外部分享工作的平台。理想情况下,数据科学家应该与产品团队密切合作,并经常向产品团队的领导提供更新。让数据科学团队有渠道向更广泛的受众传播他们的工作也很有用。

在 Twitch,我们通过编写长格式报告并将报告发送到一个广泛的电子邮件分发列表来实现这一点。这种方法效果很好,但是需要研究报告在共享之前达到一个很高的标准,并且不是所有的相关方都在分发列表上。在电子艺界,跨团队分享成果通常是通过会议和内部活动来完成的,比如 EA Dev Con 。我工作过的所有游戏公司都对在会议上对外展示作品持开放态度,比如 GDC 和 userR!我的建议是,数据科学团队应该有一个不需要开会,也不需要采取桌面形式的成果共享平台。

定义产品化模型的流程 作为游戏行业的数据科学家,我面临的最大挑战之一是将预测模型投入生产。也许可以在相对较短的时间内为一款游戏建立一个流失预测模型,但需要几个月的时间与多个团队协调,才能让这个模型面向客户,例如向可能流失的用户发送电子邮件。我之前在的博客上谈到了 Twitch 的科学团队应用于产品化模型的一些方法,但这些项目都是一次性的,没有一个新的数据科学家如何与产品团队合作来扩大模型的蓝图。对我工作过的大多数团队来说,将模型产品化一直是个问题,因为数据科学团队通常没有数据管道的所有权,并且经常无法访问这个管道中的许多组件。

为了改进这一流程,数据科学团队应该为如何在生产中移交或拥有模型定义一个清晰的流程,以便新的数据科学家不必定义他们自己的方法。对于数据科学家来说,与工程团队密切合作并更多地参与创作生产代码也很有帮助。我在产品化模型方面的最佳经历是在 Daybreak Games 工作,在那里我负责为 DC Universe Online 拥有一个客户流失模型,并帮助设计 EverQuest Landmark 市场的推荐系统。

鼓励数据科学家提交 PRs 与最后一点相关,数据科学家在将模型投入生产时应该更加亲力亲为。数据科学家不应该将 R 或 Python 代码交给需要将其翻译成 Java 或 Go 的工程团队,而是应该做更多让模型在生产系统上运行所需的工作。在我目前的角色中,我负责将我的 R 脚本翻译成代码,作为我们数据流过程的一部分运行。我提交拉动式请求,由我们的工程团队审查,然后部署到生产中。另一种可以使用的方法是使用中间模型格式,比如 PMML ,这简化了不同语言之间的模型翻译过程。

我所在的大多数数据科学团队都使用版本控制来支持工作并鼓励数据科学家之间的协作。然而,我很少能够访问工程团队的存储库。有几次数据科学家在 Twitch 提交 PRs,但这并不被认为是该角色的核心职能。这一建议并不适用于所有的数据科学角色和团队,但我会鼓励正在构建数据产品的团队这样做。

避免死于 MBR 数据科学团队面临的另一个挑战是被每月业务回顾(MBR)或其他定期召开的指标审查会议淹没。如果您没有商业智能或分析团队,那么大部分责任可能会落在数据科学团队身上。我发现让数据科学家参与定义跨公司的业务指标通常是好的,但是如果每个业务部门都需要定制指标来跟踪结果,这很快就会变得难以承受。使用自动化报告有助于解决这个问题,但如果指标不断变化,或者数据科学需要为 MBR 编写叙述,这可能会成为一个巨大的时间陷阱。

我见过的最好的 MBR 方法是在黎明游戏。我们确定了一些指标来跟踪我们的游戏,在 Tableau 中自动生成报告,直接查看报告,而不是在会议上复制到 PowerPoint 中,并让游戏制作人负责编写关于指标上升或下降原因的叙述。

提供如何晋升为 IC 的路线图 如果你声称拥有一个双重职业阶梯,数据科学家可以通过个人贡献(IC)继续推进他们的职业发展,那么你应该提供一个切实可行的晋升途径。团队中有高水平的 IC 是一个很好的指标,表明你可以在不担任管理角色的情况下继续发展你的职业生涯,但应该有一套明确的标准,员工可以关注这些标准以获得晋升。使这条道路成为可能的一种方法是,确定个人贡献者可以在他们的直接团队之外增加其影响力的方法。

电子艺界是我在游戏行业经历的最好的例子。分析团队有一个工作-家庭矩阵,该矩阵确定了不同分析角色需要满足的标准以及在角色内提升的标准。EA 还举办了一些活动,数据科学家可以在这些活动中分享工作,并与业务部门以外的团队建立影响。

为可重现的研究设置工具 数据科学领导者应该定义一个流程和一组共享的工具,以便数据科学家完成的工作可以在以后由其他团队成员重现。实现这一目标的挑战之一是不同的团队成员可能使用不同的脚本语言,并在不同的环境中工作。我目前解决这个问题的方法是设置支持 R 内核的 Jupyter 笔记本,因为这满足了我当前团队的脚本需求。然而,这并没有直接解决凭证管理和存储中间数据结果的问题。

在 EA,我们通过编写一个内部 R 包来实现这个目标,这个包提供了跨不同数据仓库获取和存储数据的实用函数。我们还为想要创作 Scala 脚本的数据科学家建立了共享的 Zeppelin 笔记本。我的建议是使用笔记本环境,为常见的数据任务创建库,使用提供凭证管理的工具(例如 Secret ),并为存储来自脚本的中间数据结果提供一个暂存区。此外,Airbnb 的 knowledge repo 等工具对于实现这一目标非常有用。

虽然游戏行业中的大多数数据科学团队能够勾选这些框中的几个,但我认为大多数高效团队已经遵循了这些指南中的大部分。

7 为想学习数据科学的人提供的资源

原文:https://towardsdatascience.com/7-resources-for-those-wanting-to-learn-data-science-a89e25d1b55e?source=collection_archive---------10-----------------------

有时候你只需要一点动力就能开始。以下是对我有效的方法。

Src: https://tinyurl.com/y7bgtyjo

数据科学是通过与计算机、数学、人打交道而获得的多种技能和经验的自然结果...有些人会在多年的经历中自然地发展这些技能。我的数据科学之旅始于 14 年前(我将在 2022 年 11 月更新这篇文章),因此我决定汇编 7 大资源,我认为这是点燃我对该领域的兴趣和理解的第一步。下面的资源将产生处理所涉及的数据科学所需的兴趣和直觉。这不是一个明确的指南,因为有多种方法可以让你成为数据科学家,但以下是对我有用的方法。

Source: https://timoelliott.com/blog/

一点背景知识

“数据科学”的关键词不是数据,而是科学——Jeff Leek

约翰·霍普金斯大学彭博公共卫生学院教授杰夫·莱克(Jeff Leek)5 年前写道:“数据科学的关键词不是‘数据’;是‘科学’。只有当数据被用来回答一个问题时,数据科学才有用。这是等式的科学部分。这种数据科学观点的问题在于,它比关注数据大小或工具的观点要难得多。计算数据集的大小并说‘我的数据比你的大’或者说‘我能在 Hadoop 中编码,你能吗?’而不是说,‘我有一个非常难的问题,我能用我的数据回答它吗?’。"

数据科学是古老的。John Graunt 在天气凉爽的时候做了这件事。真的很酷。正是在十五世纪的小冰期,他开发了第一批使用概率模型的人口学著作之一。到 1960 年,这一学科已经非常成熟,被称为 数据学 ,但直到 2012 年《哈佛商业评论》发表了文章《数据科学家:21 世纪最性感的工作》后,这一术语和工作才变得越来越流行。关于这个主题的大量在线课程将在两年后推出。谷歌趋势显示了一些有趣的东西:尽管“统计学家”一词自 2004 年以来呈下降趋势,但在 HBR 的文章发表后,“数据科学家”一词出现了更强的积极趋势,当在线课程增加时,它得到了提振。

https://trends.google.com/trends/explore?date=all&q=Data%20Scientist,%2Fm%2F0c_xl

考虑到这一点,我需要澄清一点:数据科学家不是统计学家,他们也不会取代统计学家(反之亦然),但对统计和数学的真正兴趣是正确的数据科学的关键。

Img source: https://towardsdatascience.com/introduction-to-statistics-e9d72d818745

你喜欢列表吗?

简而言之,这 7 种资源是:

  1. 列纳德·蒙洛迪诺所著《酒鬼之行》
  2. 机器学习课程,由斯坦福大学创建,由吴恩达博士教授
  3. 《数学思维导论》,也是斯坦福大学的,由基思·德夫林教授
  4. 编码
  5. 对数学的不带偏见的评论
  6. 有兴趣的话题

这个列表既不是按时间顺序排列的,也不是按高潮顺序排列的。许多这样的事情会同时发生,第 4 到第 7 项几乎肯定会成为你作为数据科学家的日常工作的一部分。

让我们进入细节…

酒鬼的走路姿势

多年前(2009 年?)当我得到这本书作为秘密圣诞礼物时,我并没有留下深刻的印象,但它却是我一直最喜欢的书之一。

根据亚马逊的产品描述,是关于理解随机性对我们生活的影响,并“揭示了阻止我们理解从选股到品酒的一切事物的心理错觉”。

它启发我认识到一个人是多么容易成为机遇的受害者,并理解为什么解释导致某一事件发生的所有因素比预测类似事件何时或是否会再次发生要简单得多。

从分析的角度来看,这本书显示了预测模型的重要性,并展示了统计分析背后的历史,还显示了数据如何可以用来回答困难的问题,以及这些问题中的一些如何将仍然没有答案。我记得这是我第一次接触“数据科学”。

同样风格的另一本好书:[赖以生存的算法:人类决策的计算机科学](http://Algorithms to Live by: The Computer Science of Human Decisions)。

Representation of a random walk. Src: http://cu.t-ads.org/python-intro-02-random-walk/drunkard/

机器学习

这是斯坦福大学在 Coursera 上提供的课程,是许多机器学习的入门课程。它是我的。本课程有趣、简洁,并提供良好的理论基础。

它首先给你一个线性代数的关键概念的修订,并教你基本的 Matlab(或 Octave)编程。将介绍一元回归的最初概念。本课程的后续部分将带你了解有趣的部分,如主成分分析和神经网络,但如果你认真地通过适当的复习、参加测验和掌握课程之外的概念来学习,这肯定会培养你的直觉,并教会你关键的人工制品和机器学习中使用的数学。本课程将帮助你建立坚实的基础,并为你学习更高级的概念做好准备。

Example slide from the course. Source: https://tinyurl.com/ybupqzzb

数学思维入门

早在 2008 年,我在大学选修了离散数学,我非常喜欢它!它教会你用数学和逻辑来思考,用数学来表达。在大学期间,我在这门课程上表现得非常好……尽管如此,我还是决定利用斯坦福大学通过 Coursera 提供的这门课程来复习核心概念和提高技能。这门课程涵盖了我在第一学期所看到的部分内容,并且提高了我的分析思考能力。对很多人来说,它很容易成为一种新的范式,因为课程中提出的数学思维与普通的推理过程有很大的不同,尤其是普通书面语言的推理过程。此外,最后几节课在数学验证方面会变得相当具有挑战性。不可避免地,这会让你想学一门新的口语。

你不会介意学习这种“新语言”,因为批判性思维对数据科学至关重要。本课程的一个重要补充(或无痛替代)是掌握常见谬误的概念,以在探索性数据分析或从数据中获得洞察力等过程中避免或检测它们。这里有一个谬误列表。

综上所述,我相信一个优秀的数据科学家会对“数学思维”产生兴趣,以了解如何交流数学概念,并在必要时将思想表达为方程,或者将数学方程表达为无懈可击的可执行步骤。在我面对的许多场合,知道如何建立一个逻辑论证比方法和数学正确更重要。事实上,与我共事过的最好的数据科学家知道如何构建论点,并掌握口才艺术。

*[## 逻辑谬误总表

utminers.utep.edu/omwilliamson/emgl1311

utminers.utep.edu](http://utminers.utep.edu/omwilliamson/ENGL1311/fallacies.htm)*

Dilbert listing some common components in fallacies. Src: https://tinyurl.com/y97w2oej

编码

首先,不管你的职业选择是什么,你都应该学会如何编码。它在许多领域都很有用,可以让你的生活变得更加方便和有趣!

的确,我们可能不再需要任何关于预测或聚类的更简单的数据科学例程的编码,因为诸如 AlteryxAzure Studiodatatai kuH2O.aiKnime 等平台大大减少了编码工作。然而,编码和通用框架方面的专业知识仍将是(并且在很长一段时间内)保持信心、生产力和精确度的重要资产,这将带来可维护的工作流,特别是在处理大量数据或机器学习的实时应用程序或开发新模型时。

开始时,您的典型问题是“我如何将这个 csv 读入数据框?我如何做简单的可视化?如何将所有分类值转换成数值?我该如何处理这个多索引数据集?”然后,在某个时候,你会进展到这样的事情“这个优化器的学习率的批量大小的选择会导致一个好的损失吗?”或者甚至像“使用 KL-Divergence 来评估这个模型有意义吗?”或者“在这种情况下,我应该使用正常-正常-反伽马共轭吗?”

A simple command with Seaborn can help you build nice visualisations (own source)

幸运的是,你有大量的选择来处理这些问题和挑战:更有经验的人和可靠的在线论坛(比如 Pytorch 的社区论坛,它很棒)。

就编程语言而言,我推荐 Python 入门,因为它易于学习,在数据科学家中很受欢迎,并且有大量的库,如 Pandas、Numpy 和 Matplotlib,用于处理数据准备、争论和可视化,还有像 Tensorflow 这样的框架,除了许多好处外,它还允许您毫无争议地利用 GPU 处理。

我在 2022 年回顾这篇博客,我也相信 JAX 是一个很好的学习框架。

另一个常见的途径是通过 R(编程语言)。是的,对于你来说,用 Python 进入“数据科学”可能需要更长的时间,而 R 将带你进入统计建模,而不用费什么周折。另一方面,Python 将让您更好地理解数据科学之外以及其他编程语言(如 C++或 Java)中常用的编程原则。无论你选择哪一个,你都会很好。

编辑:现在是 2020 年。我现在成了茱莉亚(【https://julialang.org/】)的粉丝

编辑:现在是 2022 年。我不再使用朱莉娅(!)

另一个很好的资源是 Gareth James 的《统计学习及其应用介绍》。这本书可以在链接中公开获得,它涵盖了 R 编程的统计概念。如果线性代数让你感到害怕,这将是一个挑战(你将在第 10 页上面对它)。无论您做出何种选择,您都需要…

…一篇不带偏见的数学评论

我在大学里努力学习,成绩非常好,但直到 2013 年——或多或少,当我决定在未来的某个时候攻读硕士学位时——我才意识到有多少基本概念已经过时和无力。因为我很想考上硕士,所以我决定在对数学一无所知的情况下学习,这样我就可以回到基础,而不会为此感到难过。有趣的是:我是从看儿童减法和加法的视频开始的。

几周后,我转向了数据科学和机器学习的基石:高等线性代数、微积分和概率论。尽管这并不是所有类型的数据科学家最终都需要的(只有优秀的数据科学家才需要!),理解例如主成分分析实际上在做什么是极其有用的。理解数据科学背后的数学至少可以在你讲故事的过程中给你很大的帮助。

Plot of 2 clusters upon 3 Principal Components (own source). Maths intuition helps in interpreting this

编辑:现在是 2020 年,我强烈推荐https://www . coursera . org/specializations/mathematics-machine-learning

编辑:现在是 2022 年,我强烈建议一直学习数学。我正在冒险进入生命科学领域的贝叶斯概率建模中更复杂的主题。太牛逼了。

数据科学可能需要你坐下来,键入看似无穷无尽的代码行,并在任何有见地的输出之前(或者直到你的交叉熵损失函数输出一个接近于零的数字)进行数周或数月的功能工程。一个人如果不能解释至少在高层次的理解上正在做什么以及为什么这样做,就不能充分享受它的美。最重要的是,你首先需要对你试图解决的问题有一个清晰的定义,如果你不和别人交流,你可能会做出错误的假设。

与人良好互动将是你作为数据科学家职业生涯的最大推动力之一。在过去的许多年里,不同的人帮助我发现了更聪明的方法来完成我的工作,做出职业决策,应对大公司的政治挑战…一个单独工作的数据科学家可能会错过这个职业中最好的东西。

假设你是一名在电子商务公司工作的数据科学家,他向你简要介绍了“欺诈性信用卡交易的突然增加”。尽管你可能已经知道了一些方法,但你仍然对这个问题毫无头绪。一个新手的错误是直接进入分类或聚类模型,仅仅因为“欺诈”这个词诱使你这样做…探索性数据分析可以在开始时帮助你,但关键问题仍然没有答案:分析什么,从哪里开始,最终目标是什么,以及如何衡量你的工作的影响。你可能最终会发现原来的问题实际上是最新网站版本中的一个 bug,这是你不需要花里胡哨的数据科学著作就能发现的。

显然,一个人在特定领域越有经验,就越容易通过支持数据来准备、建模和可视化问题,并提出解决方案来提高生产率或效率。不可避免的是,即使是最资深的数据科学家也必须在人们面临新挑战时与他们交谈。

从更有经验的人(无论是在技术领域还是在商业领域)那里获取想法真的很有用,在很多情况下是一条很大的捷径。您还可以结识来自各个角落的人,分享经验,参加黑客马拉松和聚会,因为世界上大多数主要城市都会举办这种活动。关键的想法是交流、学习和分享,绝对没有理由被孤立。

感兴趣的话题

编辑 2022: 结合我作为数据科学家的职业生涯,我发现的第一个感兴趣的话题是“非正统和正统经济学”。这是哲学和数学,我真的很喜欢它。现在我最感兴趣的是生命科学(基因组学、蛋白质组学和生物科学)和基础数学方法。感兴趣的主题可能会随着时间的推移而改变,但我意识到对给定主题的兴趣对于数据科学家来说至关重要。你对一个话题越感兴趣,就越容易成为一名优秀的数据科学家。听起来显而易见,但我花了几个月的时间在一个我讨厌的主题上做数据科学家…我做得很好,但成本很高,因为我没有兴趣在工作之外阅读这个主题。另一方面,在我的空闲时间,我一直在呼吸、进食和观察生物数据和概率图形模型……在我目前的工作中,这产生了很大的不同。

当我开始我的职业生涯时,对经济学的强烈兴趣“弹射”到我的第一份工作中,因为我知道我在说什么,我知道如何进行分析和建立模型来解释我所理解的东西。多年来,我的兴趣领域转移到生物学,今天我必须表达自己并建立关于生物系统而不是经济系统的模型。如果你想开始,选择一个感兴趣的话题作为起点会有很大的不同。

编辑:现在是 2020 年,自从 2018 年写完这篇博客后,我开始在其他领域冒险,比如自然语言处理、计算机视觉甚至强化学习。

Data Science is more than algorithms. Src: https://xkcd.com/1831/

一般想法

选择一个地方开始可能会令人生畏,今天我们有太多的选择和无数像这样的帖子。2018 年我最初写这个帖子的时候,数据科学已经很热但是没有 2022 年那么热。回到 2009 年,当我开始这段旅程时,很难做出决定和获得建议,所以我希望这些经历可以帮助你找到一些资源来开始。

如果你想成为一名伟大的数据科学家,我的“秘诀”是:

  1. 选择一个感兴趣的话题(化学、经济、生物、游戏、体育……),并对此进行大量思考。了解一下。小心点。做梦吧。
  2. 通过 LinkedIn 和与你分享兴趣话题的人联系,见面…问你的朋友他们是否认识这个领域的人。与教授、研究人员联系。向他们提问,从“如何在这个领域起步”到如何作为一名数据科学家处理问题。
  3. 熟悉在你感兴趣的主题中用来解决问题的模型、数学和方法。这些模型试图解决的问题是什么:是数据质量的问题,是预测未来的事情,还是对事情进行分类?现有模型的局限性是什么?

想听更多关于数据科学和人工智能的知识吗?

在推特和媒体上关注我,我会开始更频繁地分享和发布这些话题

7 零售分析趋势塑造行业(信息图)

原文:https://towardsdatascience.com/7-retail-analytics-trends-shaping-the-industry-infographic-cf5d320c728a?source=collection_archive---------3-----------------------

随着全球越来越多的零售商从使用 BI 和分析平台及服务中获得巨大回报,零售分析解决方案的采用率正在快速增长。因此,毫不奇怪,全球零售分析市场预计将在 2015-2020 年间翻一番,到 2020 年总额将达到 51 亿美元。

随着对机器学习和颠覆性创新的日益关注,零售领域正在不断发展。例如,Sailthru 在其报告中透露,在 2017 年和接下来的几年里,零售商打算利用人工智能能力来提升他们的营销游戏。

也就是说,下面是 BRIDGEi2i 的信息图,强调了影响行业并将在未来几年继续占据显著地位的最大零售分析趋势。

(首发于 BRIDGEi2i 博客 )。)

7 个短期人工智能伦理问题

原文:https://towardsdatascience.com/7-short-term-ai-ethics-questions-32791956a6ad?source=collection_archive---------1-----------------------

当新技术变得广泛传播时,它们通常会引发伦理问题。例如:

  1. 武器——应该允许谁拥有武器?
  2. 印刷机——应该允许出版什么?
  3. 无人机——应该允许它们去哪里?

这些问题的答案通常是在技术变得足够普遍以至于实际出现问题之后。随着我们的技术变得越来越强大,新技术带来的潜在危害也会越来越大。我认为,面对新的技术危险,我们必须从被动的反应转变为主动的 T2。

我们需要在到来之前开始识别我们的技术的伦理问题和可能的影响。鉴于技术以指数级的速度增长,我们考虑伦理问题的时间会越来越少。

我们需要就所有这些话题进行公开对话。这些是科学无法回答的问题——它们是关于我们价值观的问题。这是哲学的领域,不是科学。

尤其是人工智能引发了许多伦理问题——以下是我认为值得考虑的一些问题。我为那些想更深入了解的人提供了许多链接。

我只提供问题——作为一个社会,我们有责任找出最好的答案,并最终找到最好的立法。

1.算法中的偏差

机器学习算法从给定的训练数据中学习,而不考虑数据中任何不正确的假设。通过这种方式,这些算法可以反映甚至放大数据中存在的偏差。

例如,如果一个算法是根据种族主义或性别歧视的数据训练的,那么产生的预测也会反映这一点。一些现有的算法将黑人误标为“大猩猩”,或者向亚裔美国人收取更高的 SAT 辅导费用。试图避免像“种族”这样明显有问题的变量的算法,会发现越来越难以理清可能的种族替代物,比如邮政编码。算法已经被用于确定信用价值和雇佣,它们可能无法通过传统上用于确定歧视行为的不同影响测试。

我们如何确保算法是公平的,尤其是当它们被公司私有,并且不被公众监督的时候?我们如何平衡开放性和知识产权?

Using Twitter to call out Google’s algorithmic bias

2.算法的透明度

比公司不允许他们的算法被公开审查这一事实更令人担忧的是,一些算法甚至对它们的创造者来说也是晦涩难懂的。
深度学习是机器学习中一种快速发展的技术,可以做出非常好的预测,但不能真正解释为什么会做出任何特定的预测。

例如,一些算法已经被用于解雇教师,却无法给他们一个解释为什么模型显示他们应该被解雇。

我们如何平衡对更精确算法的需求和对受这些算法影响的人透明的需求?如果有必要,我们是否愿意牺牲准确性来换取透明度,就像欧洲新的通用数据保护条例可能做的那样?如果人类真的可能不知道他们行动的真实动机,我们应该要求机器在这方面比我们实际做得更好吗?

An algorithm that is much more transparent than deep learning

3.算法至上

前两个问题引起了类似但略有不同的关注。如果我们开始信任算法来做决定,谁将对重要的决定拥有最终决定权?会是人类,还是算法?

例如,一些算法已经被用于确定刑期。鉴于我们知道法官的判决会受到他们情绪的影响,一些人可能会认为应该用“机器人法官”来取代“T4”法官。然而,ProPublica 的一项研究发现,这些流行的判决算法之一对黑人有很大的偏见。为了找到一个“风险分数”,该算法使用关于被告熟人的输入,这些输入永远不会被接受为传统证据。

人们应该能够上诉,因为他们的法官不是人吗?如果人类法官和量刑算法都有偏差,我们该用哪个?最高法院未来的“机器人法官”应该扮演什么角色?

A case study from the ProPublica investigation into the COMPAS sentencing algorithm

4.假新闻和假视频

另一个伦理问题出现在(错误)信息的话题上。机器学习用于确定向不同观众展示什么内容。鉴于广告模式是大多数社交媒体平台的基础,屏幕时间被用作衡量成功的典型标准。鉴于人类更有可能接触更具煽动性的内容,有偏见的故事会像病毒一样传播。与此相关的是,我们即将使用 ML 工具来创建病毒式的假视频,这些视频如此逼真以至于人类无法将它们区分开来。

例如,最近的一项研究表明,假新闻比真新闻传播得更快。虚假新闻被转发的可能性比真实新闻高出 70%。有鉴于此,许多人试图利用假新闻来影响选举和政治观点。最近对《剑桥分析》的秘密调查拍到了他们吹嘘利用假新闻影响选举的录像带。

如果我们知道视频是可以伪造的,那么在法庭上我们会接受什么样的证据呢?我们如何才能减缓虚假信息的传播,谁来决定哪些新闻算“真”呢?

Left: real image of Parkland shooting survivor Emma González. Right: Fake image that went viral

5。致命自主武器系统
人工智能研究人员表示,我们将能够在不到十年的时间内创造出致命的自主武器系统。这可能是能够部署的小型无人机的形式,与目前的军用无人机不同,能够在没有人类批准的情况下做出杀人的决定。

例如,最近由人工智能研究人员制作的一个视频展示了小型自主无人机,即屠宰机器人,如何被用于杀害目标人群,即种族灭绝。近 4000 名人工智能/机器人研究人员签署了一封公开信,要求禁止攻击性自主武器。

当个别国家想要利用这些武器时,我们应该根据什么来禁止这些类型的武器?如果我们真的禁止这些,我们如何确保它不会驱使研究转入地下,导致个人自己创造这些?

还是来自《屠宰机器人》,点击图片观看完整视频。

6.无人驾驶汽车

谷歌、优步、特斯拉和许多其他公司正在加入这个快速增长的领域,但许多伦理问题仍然没有答案。

例如,最近一辆优步自动驾驶车辆在 2018 年 3 月撞死了一名行人。即使有紧急情况下的“安全司机”,他们也不够快,不能及时停下车。

随着自动驾驶汽车被更广泛地部署,当事故发生时,谁应该承担责任?应该是制造汽车的公司,在代码中犯了错误的工程师,应该被监视的操作员吗?如果一辆自动驾驶汽车开得太快,必须在撞人和坠崖之间做出选择,汽车该怎么办?(这是一个字面 台车问题)一旦自动驾驶汽车比一般人类司机安全(与一般人类司机比酒驾司机安全的比例相同)我们是否应该将人类驾驶定为非法?

A dashcam still from Uber’s self-driving accident

7.隐私 vs 监控

无处不在的安全摄像头和面部识别算法将围绕监控产生新的伦理问题。很快,摄像机将能够发现和跟踪街上的人。在面部识别之前,即使是 ominpresent 相机也考虑到了隐私,因为让人类一直观看所有镜头是不可能的。通过面部识别,算法可以更快地查看大量镜头。

例如,闭路电视摄像机已经开始在中国被用来监控公民的位置。一些警察甚至收到了面部识别眼镜,这种眼镜可以给他们在街上看到的人提供实时信息。

是否应该对这些技术的使用进行监管?鉴于社会变革往往始于对现状的挑战和非暴力反抗,圆形监狱会导致自由的丧失和社会变革吗?

Surveillance cameras in China using machine vision

有期限的哲学

现实中的人们目前正遭受这些技术的折磨:被不公平地跟踪、解雇、监禁,甚至被有偏见和难以理解的算法杀死。

我们需要在这些领域为人工智能找到适当的立法。但是,在社会形成意见之前,我们不能立法。在我们开始这些道德对话和辩论之前,我们不能有自己的观点。让我们开始吧。让我们养成习惯,在构思新技术的同时,开始思考道德含义。​

另一篇:长期伦理问题
设计师婴儿
工作自动化
AGI 对齐
AI 权利
意识上传

实现数据科学家梦想工作的 7 个步骤

原文:https://towardsdatascience.com/7-steps-to-landing-your-dream-job-as-a-data-scientist-5ef1724c4137?source=collection_archive---------6-----------------------

浏览数据科学面试流程

找工作很难。我最近经历了寻找数据科学家这一新角色的过程,我想通过几个关键技巧来帮助其他人成功实现他们作为数据科学家的梦想角色:

  • 技巧一:找到自己想要的角色。
  • 秘诀 2:找工作意味着应对拒绝。要坚持。
  • 技巧三:学习统计学、机器学习、SQL、Python。
  • 秘诀 4:如果你想要这份工作,就要超越自我。
  • 提示 5:研究公司文化、人员和商业模式。
  • 技巧 6:谈判和利用。
  • 技巧 7:选择最适合你的角色。
  • 额外:帮助您准备的有用资源

技巧一:找到自己想要的角色。

数据科学家这个头衔通常意味着不同公司的不同职责,有时这个头衔甚至意味着同一家公司内部的不同职责。AirBnB 的数据科学负责人讨论了他们在 AirBnB 中的三个数据科学家角色,这可能与其他公司不同。AirBnB 的数据科学家要么从事分析算法,要么从事推理

Dan Frank (Data Scientist at Coinbase) discusses the roles of Data Scientists at AirBnB

在 Lyft,他们将数据科学家的角色分为两组。研究复杂算法的数据科学家被称为研究数据科学家,这些算法与匹配骑手和驾驶员以及扩展这些系统相关。第二组数据科学家在内部被称为数据科学家,这是我申请和面试的一个角色。

从我与这个数据科学家团队的互动来看,他们在很大程度上扮演了产品数据科学家的角色,决定哪些指标对衡量产品的成功最重要,如何衡量这些指标,如何改进现有产品,以及追求哪些新产品。

我面试的其他公司的数据科学团队规模较小,角色也不太明确。在这些公司,我关心的是数据科学家试图为公司解决的问题。对我来说很重要的一点是,他们的系统已经到位,以确保这些公司的数据科学家的努力能够成功。

  • 例如,他们是否已经雇佣了工程人才来收集必要的数据,以回答他们感兴趣的问题并构建数据科学产品?
  • 领导层中是否有人创造了与数据科学应用相关的正确的宣传
  • 是否对构建某些数据科学应用程序的时间表有现实的预期,以及是否了解数据科学将如何集成到公司的各个组织中?

询问您(和您团队中的其他数据科学家)将如何对公司目标产生影响。

这些问题让公司了解你带来了什么,也让你了解他们对你的期望是什么。考虑到与数据科学家这个头衔相关的技能的多样性,你和你未来的雇主保持一致是很重要的。

秘诀 2:找工作意味着应对拒绝。要坚持。

一旦你完成了找出你应该申请的角色类型的过程,你就需要申请这些角色。以我的经验来看,从为某个职位提交的一堆申请中抽离出来是一项不可能完成的任务。

这并不意味着您可以跳过将您的申请输入到正在提交的申请堆中的步骤。

相反,这意味着除了提交申请之外,你还必须找到一个联系人。下面是 Udacity 招聘人员和招聘经理关于招聘的讨论;注意网络会出现几次,以及找到与空缺职位相关的招聘经理的重要性。具体来说,您可以查看时间戳 5:00–9:40(尽管这段视频对于您的入门非常有用)。

我发现一些有助于人际交往和获得推荐的资源:

  • 【LinkedIn】:我联系了以前的同事、朋友和我网络中发布工作的其他人。
  • AngelList :我在创业公司用天使名单搜索工作。

此外,我还利用以上两种方法找到与我申请的工作相关的招聘人员和招聘经理,与他们取得联系。你不要指望这些人会给你回复。然而,你应该向他们展示你是专业的、有礼貌的、坚持不懈的,如果你非常适合一个公开的职位,他们通常会做出回应。

如果你在你感兴趣的公司内部认识某人,利用你和那个人的关系,看看他们是否能了解你申请的职位。同时,不要损害你将来与个人合作的机会。如果他们认为你不合适, 感谢他们的时间继续

我们都经历过拒绝。下面是我收到的众多拒绝之一的例子。我选择了一个特别好的,因为它让我对我收到的所有拒绝感觉更好!有很多!

有些公司不会对你的申请做出回应,甚至在完成现场面试后也不会拒绝你。他们可能会让你处于一种不知情的状态。作为候选人,你的目标不是痛斥任何公司的面试过程。 你的目标是得到一份工作。保持专注。

面试进行到什么程度并不重要;如果一家公司认为你不合适,再次感谢他们的时间

下面是 Greg Kamardt 的演讲,他现在是 Salesforce 的数据科学家。如果你认真并致力于你的求职,他有一些非常有用的技巧来建立一个与你的求职相关的漏斗。在视频的前 2 分钟,你可以了解格雷格的坚持能力。为了得到一份对他和公司都合适的工作,他能够承受拒绝。

你对这一领域的了解越多,你就越难进入这个领域。有些人很幸运,很快就得到一个角色,但我可以告诉你那是少数。对大多数人来说,找到一份工作意味着经历许多拒绝。你必须坚持

技巧三:学习统计学、机器学习、SQL、Python。

一旦你成功吸引了一家对你的技能感兴趣的公司的注意,你就进入了我称之为“面试管道”的环节。大多数职位的筛选过程都遵循类似的模式。

  1. 初次电话面试
  2. 技术电话面试
  3. 带回家评估
  4. 现场面试
  5. 最终谈判电话

在这一部分的剩余部分,我将深入了解面试流程中每一部分的细节。如果你正在面试,这篇文章的这一部分可能与你最相关。

第一步:初次电话面试

候选人在面试过程中的第一个接触点通常是与招聘人员或招聘经理的非正式谈话。在这次谈话中,您将获得更多关于该职位的背景信息。你也会被告知面试过程的步骤。

在这个阶段,准备一些关于角色的问题以及关于公司的问题是很有用的。关于公司文化和价值观、团队中的个人以及特定角色的职责的问题都适合在这次面试中提出。

在面试结束时,您将为您的第一次技术电话面试设定日期和时间。电子邮件通常也包含这些信息。你应该确保对面试中给出的时间和解释心存感激,并让他们知道你期待着面试过程的下一步。

在这一点上,你希望对这个角色和加入公司更加兴奋。

第二步:技术电话面试

第二步,你很可能会被问到与统计学和机器学习相关的问题。重要的是,你不仅要得到有正确答案的问题,而且要清楚简洁地表达你的想法。

我被问及与贝叶斯统计、线性回归、解释分析结果和定义指标相关的问题。在许多情况下,问题简单明了。我被问到的问题没有技巧,但我听说过其他人有这样的经历,他们的问题需要一个特定的、巧妙的答案才能通过。

在我的面试案例中,面试官似乎在检查我是否具备处理数据的基础知识,以及我是否能够与非技术和技术受众沟通。这些公司通常将这些想法与他们自己的商业目标联系在一起,但有时这些问题你可以在一本书或博客的面试问题清单上找到。

下面我提供了几个与我回答的问题相似的问题。**

示例(a 部分):
你会如何向非技术员工描述线性回归和逻辑回归之间的区别?你可以选择提供一些例子来说明你什么时候会使用其中的一个来帮助你的描述。

可能答案(a 部分):
无论是线性回归还是逻辑回归,你都是用输入变量来预测某个输出变量。例如,您可以使用星期和月份来预测每天的销售额。销售额是输出变量,星期几和月份是输入变量。

此示例是一个使用线性回归的问题示例,因为输出变量(每天收集的销售额)是一个类似于年龄或身高的连续值。对于逻辑回归,逻辑回归中的输出变量通常只有两个可能的值。例如,我们可以使用逻辑回归来预测客户是否会购买某个特定的产品。

例子(b 部分): 从这个回归中,你会得到系数。你如何描述从这个模型中得到的系数。你知道对于逻辑回归模型,系数的解释会有什么不同吗?

可能答案(b 部分): 我选择日和月作为模型的输入,它们是分类变量。定量变量往往更容易解释。但是没关系。我们想把它们转换成一个数字,其中的顺序给出了日期的顺序,或者我们想把它们虚拟化。

假设我将它们虚拟化,那么其中一个值就是基线。对于一周中的每一天,基线可能是星期日。然后,这些系数将被附加到一周其他 6 天的虚拟变量上。如果星期一的系数是 12,这意味着在同一个月中,星期一的销售额预计比星期天高 12。如果星期二的系数是-15,这将意味着星期二的销售额预计比星期天少 15。它总是一天与基线的比较。

对于逻辑回归模型,响应是对数概率,而不仅仅是预测响应。通常取系数的指数,然后将结果值解释为 1 类与 0 类相比的几率的倍增变化。如果 1 是某人正在购物,12 是与星期一相关联的系数,那么 exp(12)将是在星期一与星期日的基线相比进行购物的几率的倍增变化。

举例(c 部分):
说明你的模型中的系数是如何计算的。是什么让这些值比每个系数的随机值更好呢?

可能的答案(c 部分): 实际上,通常是用系数的随机值来开始你的模型。然后使用梯度下降更新这些值。您可以将系数的更新视为以某种方式移动,从而最小化您想要最小化的任何误差。在回归分析中,误差通常是实际值和预测值的平方差之和。

然后,您可以将梯度下降视为一种算法,它通过多次迭代来改变系数,以小的方式降低损失函数(在这种情况下是实际值和预测值之间的平方差)。因此,在算法开始的时候,它们并不比 random 好。然而,在算法的最后,它们在最小化你感兴趣的任何损失函数方面会更好。

在本示例通知中,回答每个问题所用的语言。在回答问题时,我尽量使用非技术性语言。如果面试官想让你深入了解技术细节,他们会问一个问题,让你深入了解他们关心的技术部分。第一次回答更容易保持较低的技术性,但通常面试官会继续推动更多的技术方面,以衡量你对每个主题的理解水平。

在我面试结束时,许多公司称赞我的回答平易近人。有些人试图用专业术语淹没他们的面试官;我不推荐这种方法。我经常试图利用面试来展示我可以向组织中的技术人员和非技术人员传达我的想法。

在此过程中,此时提出的其他问题示例包括:

1.你会如何设计一个实验来测试 __________?

2.想象你有一个装有一些蓝色、红色和白色球的骨灰盒;在选择一个白色或蓝色之前选择两个红色的概率有多大?

3.想象你有两个硬币,一个是公平的,另一个有两个头。你随机选择其中一枚硬币,并掷 5 次。所有的抛硬币都是正面的,有多大的概率是公平的?

4.估计感兴趣参数的后验区间与使用 frequentist 方法得到的区间有何不同?

第三步:带回家评估

不同的公司对带回家的评估差别很大。在某些情况下,一家公司明确提供了一个“带回家”的项目,以确保候选人能够编写代码,找到解决方案,并且能够在不需要有人监督的情况下做出贡献。在第一种情况下,创建任何基本的端到端解决方案都足以“通过”。在其他情况下,带回家的东西是获得工作的关键,尽可能在整个解决方案中投入更多的时间和精力也是非常重要的(这只是稍微有点夸张)。

考虑到这一点,我将在这里介绍另一个技巧。

秘诀 4:如果你想要这份工作,就要超越自我。

对我来说,询问你的招聘人员或招聘经理如何给带回家的评估“打分”似乎是公平的。如果带回家的评估由多位评估者进行评分,并且/或者他们确保在检查评估时匿名以避免可能的偏见,那么可以肯定地说,公司非常重视带回家的评估。或者,如果招聘经理只是要求你完成它,并试图展示你的技能,面试的这一部分只是对你技能的简单检查。

不管是哪种情况,你都应该全力以赴。然而,在一种情况下,你可能会花整个周末从早到晚检查每个可能感兴趣的想法,而在另一种情况下,你可能会在几个小时内拼凑出一个合理的解决方案,这将使你进入下一步的过程。

我发现有趣的是,在过程的这一部分,我认为编写真正干净的代码,包括文档字符串,添加单元测试,并确保我所做的事情遵循 DRY 原则是非常重要的,但我的采访对象似乎都不太关心这一点。也许这是因为完成的时间有限。

不管公司有多重视带回家的评估,你都可以利用这个评估从其他应聘者中脱颖而出。多做些带回家的事情会给招聘经理留下深刻印象,增加你获得现场面试的机会。如果你真的想得到这份工作,你就应该努力脱颖而出。

在所有情况下,采访者似乎都关心:

  1. 我的解决方案有多有创意?(我是否设计了有趣的功能)
  2. 我是否传达了我正在做的事情以及原因?
  3. 我回答了他们问的问题吗?(与一个没有被问到的问题相反)

第四步:现场面试

完成“带回家”后,流程的下一步是现场面试。在现场采访中,你会经常遇到许多你经常共事的人。对每家公司来说,在现场表现出色对获得一个职位至关重要。即使你提供了“带回家评估”中有史以来最令人惊叹的解决方案,如果现场面试不顺利,你也不会被录用。

我知道这听起来压力很大,但老实说,这是面试过程中我最喜欢的部分。你得到有趣的问题,你可以和另一个人讨论如何解决有趣的问题。对我来说,那很有趣!

考虑到这一点,您如何确保现场顺利进行?首先,让我们考虑一下现场的不同方面。以我的经验来看,我有 4-6 次会议,涵盖了一系列的主题。通常,这些主题包括本部分标题中列出的内容。此外,还有一些对话,看看你如何将这些想法与每个公司的业务联系起来。在这里,我将添加我们的下一个技巧,但这与前面的观点有点混合。

提示 5:研究公司文化、人员和商业模式。

虽然这个建议没有出现在下面的所有要点中,但它出现在了列表的最后,这可能是整个现场面试中要记住的最重要的事情。

所有访谈都包含以下内容:

  1. SQL: 在白板上写出 SQL 来组合数据源。在我的经历中,我被而不是*询问任何与执行自连接或窗口功能相关的问题。我从其他人那里听说,有些公司确实会问与这些话题相关的问题。*
  2. Python: 问我的很多问题都有与时间相关的数据。事实证明,知道如何处理日、月、年,并创建适当的指标变量,对于带回家和面对面的访谈非常有用。
  3. 统计:很好地掌握某些相似性或差异性的度量标准是如何计算的非常有帮助。我还被问到一些关于概率和概率分布的基本问题,包括在一些面试中使用贝叶斯法则。
  4. 机器学习:能够谈论为什么在某些情况下使用欧几里德距离可能比 Spearman 或 Pearson 相关系数更好,如何在决策树中进行拆分,或者随机梯度下降与批量梯度下降相比的利弊,这些都被证明是有用的话题。你不必知道每一个细节,但是你知道的越多,可以利用的就越好。
  5. Python: 对于所有带回家的评估,我大量使用了 Python。与数据分析相关的主要库是用来帮助我的:numpy、pandas、scikit-learn 等。看起来大多数公司都不太关心我是否想使用 r。然而,看起来一旦你进入公司,你很可能会使用 Python。许多面对面的面试都有一个组成部分,即使没有要求你写,你也可以思考如何用 Python 解决问题。
  6. 业务:这部分我再强调也不为过— 研究公司。他们是怎么赚钱的?你的角色如何与业务目标相联系?尽可能多地了解这家公司。了解他们做什么,他们的客户是谁,以及你如何帮助他们维持和发展。了解他们的竞争对手也有帮助!

我非常确信,一些我没有得到的面试机会或者我在面试过程中失败的原因是我没有足够好地研究公司的商业和文化。你对公司和公司里的人了解得越多,你在面试的各个环节就会表现得越好。

了解产品,并确定如何改进产品。

第五步:最终谈判电话

如果一切顺利,你将进入最后一轮面试,你将得到一份工作邀请。虽然这个电话没有技术细节,但做好准备是很重要的。以我的经验来看,面试进行顺利的时候,一些围绕薪资的谈判甚至发生在现场面试过程中。这又引出了另一个提示。

技巧 6:谈判和利用。

不可否认,我不擅长这个过程的这一部分,但以下是我的建议。当你被问到你期望的薪水时,

  1. 给个范围。
  2. 谈谈你对相似职位和头衔的薪酬的真实调查。
  3. 充分利用你的优势,让你从其他候选人中脱颖而出。
  4. 强调你对工作和团队有多兴奋。钱是工作的一个因素;这不应该是你选择角色的主要原因。如果是的话,你和公司都应该担心。
  5. 我们当然欢迎你来谈判,许多公司都希望你去尝试和谈判。他们可能会说不,但他们不会仅仅因为你谈判就取消报价。提供理由会有所帮助;有没有一项福利是没有提供的,你需要为自己投保?你得到了竞争报价,你想匹配吗?
  6. 有些人建议让他们总是说第一个数字。我认为,如果你给出一个你真正期望落地的范围,至少你对双方都有一个起点。
  7. 请注意,在世界上的一些地区,他们问你目前在做什么是违法的。他们应该根据你对公司的贡献付给你报酬。

示例:

现场面试过程结束时:

**招聘人员:所以,我们已经到了需要谈谈薪资期望的时候了。看起来事情进行得很顺利,从我目前的谈话来看,车队很喜欢你。你心里有数吗?

**你:以我的经验水平,这个职位的起薪范围是 10 万到 14 万英镑。因为我有与团队使用的工具相关的额外经验,我希望这也能有所帮助。

**招聘人员:好的,我会和我们的财务团队谈谈,看看我们在哪里落地。

然后在最后一次通话中:

招聘人员:我和每个人都聊过了,我们想向你发出邀请。首先,让我们看看好处…谈谈好处…(此外,你可能还有)我们还应该谈谈股票期权…关于这一部分,你有什么问题吗?

你:不,我觉得这些都不错(或者有问题就问)。

**招聘人员:我跟我们财务部谈过了,我们可以给你一个 88000 的报价。考虑到所有其他的好处,你肯定会落入你提供的窗口。

**你:我真的很喜欢这个团队,我想加入。然而,我真的期望在我们谈论的范围内。考虑到我几乎可以立即给团队增加多少价值,我实际上预计会达到上限。

**招聘人员:给了我一点回旋的余地,我可以出到 9.5 万。

在这一点上,这完全取决于你想推动多少,但你不应该威胁或说一些你没有坚持到底的事情。此外,你不应该谎报你目前的薪水,试图把门槛推得更高。通常公司会在你被雇佣的时候要求 w2,所以他们会知道你撒谎了。这可不是你想和新雇主开始交往的第一步。

**你:不幸的是,我真的很希望能完成这项工作,但这仍然低于我对行业标准的预期。有没有办法 125000 左右见面。

你可以继续这个过程,直到你达成一个协议,或者你决定你不能做一些工作。假设事情进展顺利,你可以要求时间来做最后的决定和考虑事情。这是完全合理的。大多数公司对你花一两周时间做最终决定感到满意。

如果你幸运的话,你甚至可以选择。一旦你打开了第一扇门,建立了正确的关系,就会有很多机会。在这些情况下,我有一个最后的提示。

技巧 7:选择最适合你的角色。

确定你想加入的团队,你想解决的问题,你想产生的影响。对每个人来说,没有一个正确的决定。做出对你最有利的决定。

额外:帮助您准备的资源

在这里,我提供了一些有用的(免费)资源,帮助你准备数据科学家职位面试的不同部分。

SQL Udacity 的 SQL 课程
w3schools 上的 SQL
SQL 动物园

Python Python Codecademy
Python I uda city
Python II uda city
Codewars for Python 与 SQL
hacker rank
leet code

机器学习 Luis Serrano 的 Youtube 频道
统计学习简介正文
Udacity 机器学习
uda city 上的技术面试算法

统计 描述性统计
推断性统计
可汗学院统计

软技能
软技能
艾莉森

随着时间的推移,我将继续添加到列表中,但这只是一个开始。如果您有其他有用的资源,请随时在评论中添加。然后,我可以更新列表,以帮助其他人准备!为了让你对未来作为数据科学家的角色感到兴奋,请查看下面的视频,其中讨论了许多主题(包括更多关于面试的内容)!

感谢阅读!

MLconf SF 的 7 个要点

原文:https://towardsdatascience.com/7-takeaways-from-mlconf-sf-1b2703db5ecb?source=collection_archive---------0-----------------------

我在 MLConf 参加了几年来第一次以人工智能为主题的会议。赶上机器学习和数据科学的最先进水平真是太棒了。虽然会议的大部分时间都集中在深度学习上,但从这次活动中可以学到更广泛的经验。以下是我从会议中获得的主要收获:

  1. 构建数据产品不仅仅是构建模型
  2. 张量是 ML 工作的新原语
  3. 准备好为了空间和时间的限制而牺牲精确性
  4. 深度学习是跨学科的
  5. 深度学习正在越来越多地影响我们的日常生活
  6. 如果您想要推动采用,请提供笔记本电脑
  7. ML 公司都在招人!

我将在下面更详细地讨论每一点。在接下来的几周里,所有的幻灯片都将在的 SlideShare 上发布。

构建数据产品远不止构建模型 对我来说,大会的亮点是 June Andrews 的关于构建直观机器学习系统的演讲。她提出了一个框架,在这个框架中,许多学科都参与到了决定构建什么样的数据产品以及如何将产品投放市场的过程中。她介绍了一个过程,详细说明了哪些团队应该负责各种任务,包括:如何收集模型的需求,如何研究模型提案,如何评估模型的部署,如何确定是否推出模型,如何扩展到模型的完全部署,以及如何随着时间的推移维护模型。她承认,对于哪个团队负责数据产品的不同阶段,较小的团队不会有如此严格的规则,但她明确表示,将人工智能发布到世界上比仅仅在训练数据集上训练模型要复杂得多。她提供了航空领域的例子,人工智能系统需要健壮和高度准确才能被采用。

June’s slide on the many stages of releasing Data Products.

张量是 ML 工作的新原语
会议的主题之一是倡导在 ML 工作中使用张量。张量是矩阵的自然扩展,它不是用二维来表示数据,而是用三维来表示数据。 Tamara Kolda 提到它的使用可以追溯到 90 年代初的化学领域,但直到最近张量才被广泛用作 ML 工作的数据结构。 Anima Anadkumar 也主张使用张量作为原语,并提到采用新的原语将需要创作新的库。

准备好权衡空间和时间限制的准确性 在 MLconf 上的几次会谈讨论了在求解最优解时所涉及的权衡。有时最优解是难以处理的,团队需要找到新的方法来减少所用算法的空间或时间复杂性。例如, Tamara Kolda 谈到了可用于在每次迭代中不使用完整数据集的情况下解决模型拟合问题的采样方法, Anima Anadkumar 谈到了从张量表示中删除秩以节省空间,而 Rushin Shah 谈到了脸书用于精确语言理解的 fastText 算法,该算法比以前的方法快得多。

深度学习是跨学科的 会议的新奇之处之一是看到科技公司以外的研究人员如何利用深度学习来创造新的发现。Ted Willke 做了一个非常有启发性的演讲,讲的是深度学习如何被应用到海洋生物学领域,并使科学家能够比以前的方法更准确地跟踪鲸鱼的迁徙,而且侵入性更小。还有关于将深度学习应用于其他领域的会谈,包括化学医学约会

深度学习正在影响我们越来越多的日常生活 在手机上发送的电子邮件中,有 12%使用了 gmail 新的自动回复功能。这只是大会上许多例子中的一个,深度学习正在被用来影响我们更多的日常活动。有6 月的演讲关于通用电气如何提高飞往该活动的任何参与者的航空旅行安全性,有 Xavier Amatriain 关于深度学习对医学诊断的影响的演讲,以及 Rushin Shah 关于 FB 关于旅行建议的帖子如何被用来影响决策的演讲。

提供笔记本如果你想推动采用 今天的一些演讲者,包括道格·埃克,谈到了早期的人工智能,所有的代码都是用 C++编写的,没有人想接触现有的代码库。我们现在有更好的工具来使 ML 和笔记本环境大众化,比如 Jupyter 提供了如何使用 ML 框架的例子。Anima Anadkumar 谈到了 Jupyter 是如何被用来让 Gluon 这样的 ML 库变得更加平易近人的。

ML 公司在招人! 今天活动中的大多数演讲者都提到他们的公司正在招聘 ML 职位。MLconf 有一个清单列出了的工作岗位,而意外之财数据公司也在招聘一个专注于数据治理的数据科学家职位。

我在第一次国际会议(泰国 PyCon,2018)上发言后学到的 7 件事

原文:https://towardsdatascience.com/7-things-i-learnt-after-speaking-at-my-first-international-conference-pycon-thailand-2018-908869baccfd?source=collection_archive---------9-----------------------

嗨,如果你有兴趣了解我,你可以从下一行开始读,如果没有,直接跳到第一点。

我是 Kajal,是一名分形分析的工程师,在 Bengaluru 工作。我 2017 年毕业,从事 Python 工作已经三年了。在 2015 年结束了在一家初创公司的暑期实习后,我的导师鼓励我参加会议、聚会等。会见在同一领域工作的人,并介绍我的工作。这对我很管用。事实上,我相信无论我今天在哪里或者将来会在哪里,我对 Python 社区的参与都做出了巨大的贡献。

最初,我开始去 PyDelhi ,这通常是两周一次,我会虔诚地参加所有的讲座,并在会后与演讲者交谈,以防我有疑问或甚至我对他们在做什么感兴趣。我认为要在会议上发言,你需要精通公开演讲以及一个令人敬畏的“程序员”。在结束我的夏季实习后,我的导师逼我在PyData Delhi展示我在推荐系统方面的工作,这是一个数据科学&机器学习的独家聚会。我展示了我的作品,颤抖着像个婴儿一样发出噼噼啪啪的声音,并为我不能自信地谈论我三个月的辛勤工作而感到悲哀。我回答了 Q & A 环节中的大部分问题,感觉相当自信。有人提出了我无法回答的问题,我记下了与提问者的电子邮件 id 相对应的问题,然后通过电子邮件进行了回复。感觉是一个-M-A-Z-I-N-G

从那以后,我决定在小型活动/聚会上发言,以减少我的怯场,我开始对用最怪异的幻灯片解释概念产生了更多的兴趣,而不是避免演讲,甚至在工作中也是如此。

以下是我在第一次国际会议即泰国 PyCon 上演讲后的一些心得。

1.你不需要成为一个专家来说话。

我真正喜欢 PyCon 的一点是——它适合所有人!你的演讲将被分为以下几类:“初级”、“中级”或“高级”。我建议你根据水平准备你的幻灯片和内容,这样你和观众都能从中受益。

2.提高你的公共演讲技巧。

有些人从学生时代就克服了怯场,有些人则没有,而我两者都不是。我怯场,唯一能让我感觉好起来的方法就是练习。尽可能多地练习公开演讲。参加聚会,在众人面前演讲。在你的工作场所采取主动,不要放过任何一个你可以展示自己的机会。

只是确保你不会在会议上变成这样。

3.提前准备好你的主题。

这是我说话时犯的一个错误。由于办公室繁忙的日程安排,我无法准备,所以我忙着整理我的幻灯片和内容,直到最后一分钟,以避免任何混乱。你应该提前准备,这样你就不会错过参加其他有趣的会议和与人互动。我在演讲者的房间里生闷气,直到我的演讲被宣布。所以,要避免。

4.发起对话。

在泰国 PyCon 大会上,主讲人是韦斯·麦金尼。整个会议期间我都很害怕和他说话,我是说我想和他说话,但是我没有什么可说的。在社交活动中,我只是说了一句尴尬的你好,然后他回应了,我们谈论了 Python、 Apache Arrow 项目等等。所以,开始和你感兴趣的人交谈,不管你感到多么尴尬或害怕。这将极大地帮助你在会议上度过愉快的时光。

5.保持您的演示离线!

虽然会议组织者确保尽最大努力保持 Wi-Fi 连接正常,但由于有数百人使用,事情可能会出错。所以,一定要把你的演示/结果录制成视频或 gif,以避免最后一分钟的网络混乱。

6.参观所有的摊位。

如果你正在寻找改变(或者即使你没有),我建议你参观每家公司的展位,与那里的人交谈,如果可能的话,拿走他们的电子邮件 id,并在会议结束后放下你的简历。我听说过很多人在会议期间被雇佣的故事。事实上,当你是一名演讲者的时候,你有更多的机会被雇佣或者实习。在这个过程中,你会了解到哪家公司在做什么,以及他们的招聘是如何进行的,以便日后参考!

7.始终给予反馈。

每当我发言时,无论是国际会议还是小型聚会,我都有向组织者提供反馈的责任感。我相信这是我对社区的一点小小的贡献,可以让它继续下去,也可以在将来改善其他人的体验。

我给你讲一个关于这个的小事件。作为一个素食主义者,我很难在泰国 PyCon 吃任何东西,因为在第一天,大多数菜肴都不是蔬菜。会议中负责食品部分的人英语说得相当好,所以我给了她我对食物的反馈。她很慷慨地在会议的第二天加入了更多的素菜,这对我和其他素食者来说都是一个福音。我感谢她,这也让她很高兴,我可以在一个陌生的地方享受我的食物。只是想传达这样的信息,“反馈有帮助!”

最后我只想感谢泰国 PyCon 的组委会给我一个发言的机会。我不能要求更好的体验。每个人都很友好,我迫不及待想明年再去那里。

如果你感兴趣的话,这是我在泰国 PyCon 上的幻灯片链接。
幻灯片链接:http://bit.do/epfA8

如果你想就招聘事宜和我聊几句,你可以在 Twitter 上给我发消息

通往“整体”的 77 条道路以及我是如何到达那里的

原文:https://towardsdatascience.com/77-paths-to-totality-and-how-i-got-there-350d197c7716?source=collection_archive---------10-----------------------

寻找航班捕捉日全食

from NASA Goddard SFC

离美国大日食不到一周了。

对这一特殊事件的大肆宣传部分是由于大片地方(大部分在美国)人们可以目睹所谓的“全食”这时月亮遮住了整个太阳,产生了日全食。

在全食期间,太阳被完全遮住,变得像夜晚一样黑暗。如上图所示,你可以看到环绕太阳的日冕。我听说这是一个壮观的景象。

然而,试图完全体验全食的挑战之一是天气。据 weather.com 的报道,我们东海岸的人可能要倒霉了。

但是有一种方法可以战胜天气——超越它。每天有成千上万的航班。因此,很自然地,你可能想知道你是否能在这些飞行中体验到全食。

嗯,我也想知道。所以,我决定一探究竟。

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

我设法确定了 77 次飞行——每一次都有很好的机会(我认为)体验完整。滚动到列表的末尾。

消除的过程

因为我这样做主要是为了满足我的好奇心,所以我决定将我的预算设置为 0.00 美元。我最后稍微检查了一下,因为我需要在 AWS 上有一个像样的 EC2 实例来做一些计算。但我认为最终的成本会低于一杯拿铁。

大部分工作都是通过笔记本电脑完成的。使用的主要 Python 包是 pandas 。我还使用了python _ sphere来做一些球面三角计算。

有多少条飞行路线?

OpenFlights 有一个飞行路线的公共数据库。稍加调整后,总共有 19,257 对机场,每一对都表示这两个机场之间现有的一对直飞航班。

有多少条飞行路线穿过全食路线?

你可以通过 Xavier Jubier 的这个了不起的工具下载总体信息的路径。你可以下载 XML 格式的文件(我把它转换成 JSON,然后转换成 pandas DataFrame。)

全食的路径可以被认为是月球的影子在地球表面移动的轮廓。在很大程度上,你可以把它近似为一个半径约为 50 英里,时速约为 1500 英里的圆。(可以在这里找到路线图和时间表。)

假设飞行路径遵循测地线(球体上两点间的最短距离),那么就可以计算出有多少飞行路径实际上穿过了全食路径。答案是:3954。

日食期间有多少航班计划在空中飞行?

好的,结果是 OpenFlights 的人今天在他们的网站上没有预定的航班(尽管他们是考虑到这一点)。)这个有点堵……

我最终订阅了 FlightStats 开发者计划来下载日食当天的预定航班。我想他们会同意我用这些数据做好事。(对他们来说是“免费营销”吧?)

使用实际的时间表,人们可以计算出在月食期间(即月亮的影子掠过地球表面)在空中的实际飞行。)答案:4408。

注意,对于这个结果,我们假设航班准时到达。如果我们允许航班晚点几个小时到达(有时确实如此),这个数字会高得多。

(如果你想知道为什么这个数字比上面的数字 3954 大,那是因为每个飞行路径都有多个航班,向两个方向飞行。)

有多少航班预计会在正确的时间穿越全食轨道?

当然,这是最难估计的部分。对于每一次飞行,我们都需要计算出何时它将穿过全食的路径,并观察它与月球阴影出现的时间有多接近。

我们要做的是计算出在“良好条件”下,一次飞行何时会穿过全食路径,并估计一次飞行会延迟(多晚)多久,并且仍然在全食路径之下。

以下是构成“良好条件”的假设——结合互联网上的各种阅读和我的个人经验:

  • 航班准时起飞。
  • 飞行滑行 12 分钟。
  • 飞行 10 分钟到达巡航高度。
  • 航班在预定到达时间前 15 分钟着陆。

然后,我们计算那些至少有 10 分钟时间窗(安全裕度)的航班。最大的安全裕度是 30 分钟左右。这导致了本文末尾列出的 77 个航班。

这是美国东部时间下午 1 点 52 分的 77 次飞行和月球阴影的粗略图像:

一些笔记

我花了大量的时间验证结果,似乎最弱的假设是飞行路径遵循测地线。

这是有意义的,因为实际的飞行路径取决于天气(如雷暴)等因素,并考虑到急流。我看到,例如,JFK 到火奴鲁鲁的飞行路线在历史上似乎明显位于测地线以北。(你可以在这里查看历史飞行轨迹。而这个工具似乎使用测地线来投射飞行路径。)

其影响是,一般来说,飞行时间越长,飞行路线越有可能偏离测地线,从而错过日食。事实上,在 77 个航班中,最有可能的是 9 号航班(从查德隆到丹佛)。)

同样有趣的是,对于许多这样的飞行,由于飞机的方向,你可能看不到太阳。(即使你坐在右边。)像这个这样的工具可以用来计算太阳是否处于从飞机上可见的正确位置。

最后,我想提一下,西南航空公司在推特上说他们可以在五个航班上看到日全食:

不幸的是,我只能确认其中一个航班。不过,看了视频后,我发现这些航班中有许多可能不符合我在选择 77 航班时使用的标准。同样令人好奇的是,视频中 1368 航班似乎是如何向南弯曲的。测地线实际上会向另一个方向弯曲。当然,他们完全有可能在那天创造飞行路线,以确保这些路线能赶上日全食…

如果我“真的”这么做…

如果资金和时间不那么有限,更合适的方法是查看日食期间计划飞行的 4408 次航班的实际历史飞行路线。然后,我们可以根据历史模式,估计每次飞行看到日食的“可能性”。

理想情况下,所有的努力将包括考虑实际飞机的方向、从窗口的视角以及飞行的实际高度(这也会影响月球阴影的位置)。

77 次航班

请注意,该列表并不详尽。根据实际飞行路线和时间表的变化,还有许多其他航班将全部结束。这个列表也不是一个保证(显然。)

当然,如果你打算观看或记录日食,请采取适当的预防措施!

  1. 从 ATL(亚特兰大)到 PDX(波特兰),DL-2565 航班(达美航空),21 日 08:09:45:00 起飞
  2. 从 ATL(亚特兰大)到 SEA(西雅图),DL-1336 航班(达美航空),08/21 10:55:00 起飞
  3. 从 ATL(亚特兰大)到 SEA(西雅图),DL-39 航班(达美航空),08/21 12:25:00 起飞
  4. 从 ATL(亚特兰大)到 TYS(诺克斯维尔),DL-517 航班(达美航空),08/21 13:47:00 起飞
  5. 从 BNA(纳什维尔)到 CHS(查尔斯顿),WN-1559 航班(西南航空),08/21 12:50:00 起飞
  6. 从 BOI(博伊西)到 PDX(波特兰),AS-2510 航班(阿拉斯加航空公司),08/21 10:35:00 起飞
  7. 从 BOS(波士顿)到 DEN(丹佛),UA-652 航班(联合航空公司),08/21 10:31:00 起飞
  8. 从 BOS(波士顿)到 SFO(旧金山),UA-1749 航班(联合航空公司),08/21 09:35:00 起飞
  9. 从 CDR(Chadron)到 DEN(Denver),BAI-702 航班(精品航空),08/21 11:10:00 起飞
  10. 从 CLT(夏洛特)到 STL(圣路易斯),AA-1769 航班(美国航空公司),08/21 13:00:00 起飞
  11. 从 DCA(华盛顿州)到 DFW(达拉斯),AA-1602 航班(美国航空公司),08/21 12:50:00 起飞
  12. 从丹(丹佛)到 BNA(纳什维尔),WN-301 航班(西南航空),08/21 10:20:00 起飞
  13. 从丹(丹佛)到 CLT(夏洛特),AA-688 航班(美国航空公司),08/21 09:50:00 起飞
  14. 从丹(丹佛)到 CLT(夏洛特),UA-1711 航班(联合航空公司),08/21 10:15:00 起飞
  15. 从丹(丹佛)到 CVG(辛辛那提),DL-936 航班(达美航空),08/21 10:32:00 起飞
  16. 从丹(丹佛)到 IAD(杜丨勒丨斯),WN-724 航班(西南航空),08/21 10:50:00 起飞
  17. 从 DEN(丹佛)到 IAD(杜丨勒丨斯),UA-1192 航班(联合航空公司),08/21 10:55:00 起飞
  18. 从丹(丹佛)到 MKE(密尔沃基),UA-445 航班(联合航空公司),08/21 10:59:00 起飞
  19. 从丹(丹佛)到皮特(匹兹堡),WN-1866 航班(西南航空),08/21 11:00:00 起飞
  20. 从丹(丹佛)到 TYS(诺克斯维尔),UA-4751 航班(联合航空公司),08/21 10:10:00 起飞
  21. 从丹(丹佛)到 TYS(诺克斯维尔),F9–588 航班(边疆航空公司),08/21 10:10:00 起飞
  22. 从 DFW(达拉斯)到 PDX(波特兰),AA-1580 航班(美国航空公司),08/21 09:05:00 起飞
  23. 从 DFW(达拉斯)到西雅图(西雅图),AA-1402 航班(美国航空公司),21 日 08:55:00 起飞
  24. 从 EWR(纽瓦克)到丹佛(丹佛),UA-1262 航班(联合航空公司),08/21 10:26:00 起飞
  25. 从 EWR(纽瓦克)到拉斯维加斯(拉斯维加斯),UA-1179 航班(联合航空公司),08/21 10:44:00 起飞
  26. 从 FCO(罗马)到 ATL(亚特兰大),DL-63 航班(达美航空),08/21 09:45:00 起飞
  27. 从 FLL(劳德代尔堡)到奥德(芝加哥),UA-1290 航班(联合航空公司),08/21 12:27:00 起飞
  28. 从 FLL(劳德代尔堡)到 YYZ(多伦多),AC-1623 航班(加拿大航空公司),08/21 13:20:00 起飞
  29. 从 GYE(瓜亚基尔)到 JFK(纽约州),XL-1438 航班(厄瓜多尔拉美航空公司),起飞时间为 08/21 08:40:00
  30. 从 HKG(香港)到旧金山(三藩市),CX-870 航班(国泰航空),08/21 14:15:00 起飞
  31. 从 IAD(杜丨勒丨斯)到 DFW(达拉斯),UA-6018 航班(联合航空公司),08/21 12:45:00 起飞
  32. 从 IAH(休斯顿)到 YVR(温哥华),UA-600 航班(联合航空公司),08/21 09:13:00 起飞
  33. 从 JFK(纽约州)到 HNL(檀香山),HA-51 航班(夏威夷航空公司),08/21 10:00:00 起飞
  34. 从 JFK(纽约州)到拉斯维加斯(拉斯韦加斯),B6–411 航班(捷蓝航空公司),08/21 11:20:00 起飞
  35. 从 JFK(纽约州)到洛杉矶国际机场(洛杉矶),AA-163 航班(美国航空公司),08/21 11:00:00 起飞
  36. 从 JFK(纽约州)到洛杉矶国际机场(洛杉矶),VX-409 航班(维珍美国),08/21 11:30:00 起飞
  37. 从 JFK(纽约州)到旧金山(三藩市),DL-490 航班(达美航空),08/21 09:45:00 起飞
  38. 从拉斯(拉斯维加斯)到印第安纳州(印第安纳波利斯),WN-1942 航班(西南航空公司),08/21 08:30:00 起飞
  39. 从拉斯(拉斯维加斯)到奥德(芝加哥),NK-446 航班(Spirit Airlines),08/21 08:31:00 起飞
  40. 从洛杉矶国际机场飞往波士顿的 VX-360 航班(维珍美国航空),起飞时间为 21 年 8 月 8 日 08:03:00
  41. 从洛杉矶国际机场飞往纽约 JFK 的 AA-82 航班(美国航空公司),于 21 日 8:00:00 起飞
  42. 从洛杉矶国际机场飞往芝加哥的 AA-362 航班(美国航空公司),起飞时间为 21 年 8 月 8 日 8:00:00
  43. 从 LGA(纽约州)到 BNA(纳什维尔),DL-4175 航班(达美航空),08/21 11:59:00 起飞
  44. 从 LGA(纽约州)到 BNA(纳什维尔),AA-4774 航班(美国航空公司),08/21 12:00:00 起飞
  45. 从 LGA(纽约州)到丹佛(丹佛),UA-1135 航班(联合航空公司),08/21 10:30:00 起飞
  46. 从 MCO(奥兰多)到 MSP(明尼阿波利斯),SY-342 航班(太阳乡村航空公司),08/21 12:50:00 起飞
  47. 从 MDW(芝加哥)到 ATL(亚特兰大),DL-1648 航班(达美航空),08/21 12:00:00 起飞
  48. 从 MDW(芝加哥)到旧金山(旧金山),WN-267 航班(西南航空公司),08/21 11:25:00 起飞
  49. 从 MIA(迈阿密)到 SEA(西雅图),AA-2691 航班(美国航空公司),08/21 08:40:00 起飞
  50. 从 MSP(明尼阿波利斯)到 JAX(杰克逊维尔),DL-2786 航班(达美航空),08/21 11:30:00 起飞
  51. 从 MSP(明尼阿波利斯)到 LAS(拉斯维加斯),DL-1439 航班(达美航空),08/21 11:15:00 起飞
  52. 从 MSP(明尼阿波利斯)到 SNA(圣安娜),DL-1377 航班(达美航空),08/21 11:30:00 起飞
  53. 从奥马哈到拉斯维加斯,WN-1882 航班(西南航空公司),08/21 12:00:00 起飞
  54. 从奥德(芝加哥)到 BOI(博伊西),UA-5814 航班(联合航空公司),08/21 09:00:00 起飞
  55. 从 order(芝加哥)到 SFO(旧金山),UA-499 航班(联合航空公司),08/21 10:47:00 起飞
  56. 从 PDX(波特兰)到 ATL(亚特兰大),DL-2466 航班(达美航空),于 2011 年 8 月 21 日 08:45:00 起飞
  57. 从 PDX(波特兰)到 MCI(堪萨斯市),AS-3382 航班(阿拉斯加航空公司),08/21 09:15:00 起飞
  58. 从 PHX(凤凰城)到奥德(芝加哥),F9–1308 航班(边疆航空公司),08/21 08:25:00 起飞
  59. 从 RDU(罗利/达勒姆)到 ATL(亚特兰大),DL-1803 航班(达美航空),08/21 13:25:00 起飞
  60. 从圣地亚哥飞往夏洛特的 AA-2050 航班(美国航空公司),起飞时间为 08/21 07:15:00
  61. 从圣地亚哥飞往 JFK 的 AA-94 航班(美国航空公司),起飞时间为 21 年 8 月 7 日 07:45:00
  62. 从 SAN(圣地亚哥)到 SEA(西雅图),AS-493 航班(阿拉斯加航空公司),08/21 08:00:00 起飞
  63. 从 SEA(西雅图)到 ATL(亚特兰大),AS-746 航班(阿拉斯加航空公司),08/21 07:10:00 起飞
  64. 从 SEA(西雅图)到 ATL(亚特兰大),DL-2864 航班(达美航空),08/21 07:45:00 起飞
  65. 从 SEA(西雅图)到 FLL(劳德代尔堡),AS-38 航班(阿拉斯加航空公司),08/21 08:55:00 起飞
  66. 从旧金山飞往波士顿的 UA-768 航班(美国联合航空公司),于 2011 年 8 月 21 日 08:30:00 起飞
  67. 从旧金山飞往华盛顿的 VX-1 航班(维珍美国航空公司),于 2011 年 8 月 21 日 08:00:00 起飞
  68. 从旧金山飞往 EWR 的 UA-233 航班(联合航空公司),起飞时间为 21 年 8 月 8 日 8:10:00
  69. 从旧金山飞往芝加哥的 AA-150 航班(美国航空公司),于 2011 年 8 月 21 日 08:00:00 起飞
  70. 从旧金山飞往 PHL(费城)的 AA-722 航班(美国航空公司),起飞时间为 21 年 8 月 8 日 08:00:00
  71. 从 SJU(圣胡安)到 PHL(费城),AA-2049 航班(美国航空公司),08/21 13:15:00 起飞
  72. 从 SLC(盐湖城)到 CVG(辛辛那提),DL-1833 航班(达美航空),08/21 09:45:00 起飞
  73. 从 SLC(盐湖城)到 PDX(波特兰),AS-3499 航班(阿拉斯加航空公司),08/21 10:04:00 起飞
  74. 从 SLC(盐湖城)到 PHL(费城),DL-194 航班(达美航空),08/21 10:10:00 起飞
  75. 从 SLC(盐湖城)到 RDU(罗利/达勒姆),DL-1846 航班(达美航空),08/21 10:05:00 起飞
  76. 从 SNA(圣安娜)到 ORD(芝加哥),AA-1205 航班(美国航空公司),于 08/21 08:05:00 起飞
  77. 从 STL(圣路易斯)到 DEN(丹佛),UA-4493 航班(联合航空公司),08/21 11:55:00 起飞

最后…

如果你觉得这篇文章有趣,请点击“拍手”按钮,和/或分享这篇文章。

我对此很感兴趣,我想知道其他人是否对这类信息感兴趣。如果你是,请给我留言让我知道。(不,我收集电子邮件不是为了把它们卖给垃圾邮件发送者——只是想看看是否有足够的真正兴趣来刺激额外的工作!)

另外,你可以使用同样的表格让我知道你是否碰巧在这些航班中的一个。我很想知道结果如何!

8 种令人迷惑的视错觉(以及它们揭示了我们大脑的工作方式)

原文:https://towardsdatascience.com/8-mind-bending-optical-illusions-and-what-they-reveal-about-how-our-brains-work-f065b3164803?source=collection_archive---------1-----------------------

他们说“眼见为实”,但你真的能相信你所看到的吗?

以这个著名的光学实验为例:橙色的圆圈对你来说大小一样吗?

Source: BrainHQ

如果你认为右边的圆圈看起来更大,你并不孤单。其实大部分人都是这样的。现在你应该已经猜到了,这两个圆的大小是一样的。

最佳视错觉挑战我们对现实的感知:此刻看似真实的东西最终是假的。如果我们挑战自己,进一步思考,你就会明白信息——比如视觉输入——毫无意义。是我们对信息的处理赋予了它意义。

我们通过学习如何看来看。我们的大脑已经进化到可以识别模式,通过与现实世界的互动来建立联系。这是生存本能。用著名的神经科学家博·洛托的话说,“大脑实际上并没有进化到看世界的方式……大脑进化到看它有用的世界。”

大脑如何以一种有用的方式适应视觉?无需深究视觉科学理论,如 Baysian 模型,定义我们如何看的一个简单事实是,我们的大脑在每种视觉情况下不断定义和重新校准“标准”。

因此,当视觉情境偏离我们大脑所知的“标准”时,视错觉是我们大脑对异常视觉体验做出反应的结果。换句话说,我们的大脑会“行动起来”,做出看似“不恰当”的解释。

视错觉是如何工作的?

虽然找到一个共同的理论来解释所有类型的错觉将是"理论家的梦想,"流行的学术解释认为认知错觉是"大脑用来解释或阅读感官信号的知识被误用的结果"

我们的大脑已经进化到储存一个“规则手册”,这个“规则手册”根据过去的感官经验来描述物体应该如何看/感觉/闻。例如,我们将木纹纹理与木质表面联系起来,甚至当我们看到带有木质图案设计的光滑塑料表面时,我们也倾向于应用这一知识。

人类也不是唯一看到视错觉的人。大黄蜂对颜色的感知是出了名的,尽管它们的基本调色板由绿色、蓝色和紫外线、组成,而不是红色、绿色和蓝色。

在博·洛托博士对大黄蜂的实验中,他证明了大黄蜂的大脑——类似于人类的大脑——不以绝对的方式对颜色信息进行编码,而是通过真实世界进行学习。如果我们把大黄蜂的生活环境设计成黄色花朵中灰色是最蓝的,那么依靠蓝色花朵生存的大黄蜂就会转向灰色花朵。

这些科学实验有力地提醒我们,我们根据大脑如何组织其元素(如形状、大小、颜色和空间关系)来“看到”物理世界。现在,事不宜迟,让我们来看看我们在网上找到的一些最好的视错觉,以及它们揭示了我们视觉感知中的盲点。

最佳视错觉

1.特克斯勒效应

Source: Mighty Optical Illusions

盯着上面模糊图像的中心,不要眨眼。几秒钟后,你看到了什么?图像开始变淡了吗?

这种被称为特克斯勒效应的视觉现象,由瑞士医生伊格纳斯·保罗·维塔尔·特克斯勒于 1804 年首次发现,揭示了我们的视觉系统如何适应感官刺激。这是由于我们的神经元停止对不变的刺激做出反应——在这种情况下,背景中的静态模糊图像——导致图像从我们的意识中消失。

2.丘博错觉(亮度)

Source: Wikimedia

Chubb 错觉是由 Charles Chubb 及其同事 Sperling 和 Solomon 在 20 世纪 80 年代末首次发现的,当时他们通过将低对比度的视觉对象放置在各种背景上来实验感知对比度。

正如你在上面的图像中看到的,当纹理对象被放置在一个简单的灰色背景上时,它似乎比相同的对象被放置在一个高对比度的纹理背景上时有更多的对比度。

对这种常见视觉错误的一种解释是“不完全透射”,这是一种大脑需要为视觉感知导航模糊的情况,例如当透过雾或从远处看东西时。当没有光线照射在视网膜上时,我们的大脑试图通过做出不完美(通常不准确)的解释来确定物体的真实颜色或对比度,例如当低对比度物体在灰色背景上时。

3.棋盘格阴影错觉(对比)

Source: MIT

在这个著名的视错觉中,标有 A 的方块看起来比 B 暗很多,对吧?但事实上,它们都是灰色的。如果你不相信我,点击这个链接看证明。

阿德尔森的棋盘阴影错觉是我们的视觉系统不能绝对感知的经典例子。在这里,棋盘上视觉解释的情况是复杂的:有光进入表面,然后有圆柱体投射的阴影,阴影下有亮和暗的方块。

正如 Adelson 所解释的那样,大脑如何确定正方形 A 和 B 的颜色涉及到几个变量,使用过去关于对比度和阴影的经验作为参考点。在这里,明亮和黑暗的方块以及柔和的阴影的接近会欺骗大脑做出错误的判断。

但对阿德尔森来说,这种错觉证明了我们视觉系统的有效性,而不是它的缺陷,因为它通过分解视觉信息成功地构建了意义。

4.丁香追逐者(彩色)

Image Source

盯着图片中央的十字看 20 秒钟左右,你会看到一个绿点绕着圆圈跑,或者一个绿点绕着圆圈转,似乎抹去了灰色背景上的洋红色点。如果你移动你的眼睛,洋红色的点会再次出现。

淡紫色追逐者,也被称为“吃豆人”错觉,主要是“负视网膜残像的影响,当我们的感知系统适应填充中性背景上互补色调的“残像”留下的间隙时,就会出现这种情况。在这种情况下,淡紫色点的消失会产生互补色(绿色)的余像。

格式塔效应促成了一个绿色圆盘飞行的视觉现象。过了一会儿,大脑开始整合连续的残像,转而感知一个单独的飞行物体。我们将在后面深入探讨格式塔效应。

5.波根多夫错觉(几何)

Via New Optical Illusions

看左图:黑线好像和蓝线排成一条线了吗?实际上,黑线和红线是一条线,如右图所示。

以 1860 年首次描述这种错觉的德国物理学家约翰·波根多夫命名的波根多夫错觉揭示了我们的大脑如何感知深度和几何形状,但这种视错觉的原因尚未得到充分解释。

虽然到目前为止,没有任何理论能够令人满意地解释这种视觉错误,但普遍的看法是,我们的大脑试图用 3D 属性来解释 2D 图像,并扭曲了线条之间的深度。如果你想了解更多,这里有一个完整的网站致力于 Poggendorff 错觉。

6.谢泼德表(尺寸)

当你看上面的两张桌子时,它们的大小和形状是否有很大的不同?你会相信这两个桌面一模一样吗?如果没有,看看这个动画插图自己看吧。

美国心理学家罗杰·谢泼德在他的著作《心灵景象》(1990 年)中首次提出了这种简单而惊人的视觉错觉,进一步证明了我们的视觉系统在很大程度上受到我们对外部世界的体验的影响,因此有时会干扰现实。

在这个错觉中,感知错误是由于我们的大脑忍不住对 2D 的图片进行 3D 解释,并由于透视缩小而感知到非常不同的大小:物体在距离上越近,在我们的视网膜上就越大。

7.卡尼萨三角形(格式塔效应)

Image Source

如果你还没有看到由吃豆人的边组成的三角形,我肯定看到了。不存在的三角形看起来也比背景亮,尽管它们的亮度相同。

由意大利心理学家 Gaetano Kanizsa 推广的这种错觉揭示了我们是如何在视觉感知中寻求封闭的。一些最好的视错觉是基于这样的原理:我们的大脑被训练来填补形状和线条之间的空隙,并将空白空间视为物体,即使根本没有物体。

换句话说,Kanizsa 的三角形是一个恰当的例子,我们的视觉感知是由经验形成的,而不仅仅依赖于感官输入。

8.不可能三叉戟(不可能的物体)

Image Source

仔细看:在叉子的末端,三个叉子奇迹般地变成了两个。你越看它,它就变得越不可能。这是怎么发生的?

通常被认为是在 1965 年 3 月的《疯狂杂志》封面上首次亮相的原创图形艺术,不可能的三叉戟也被称为魔鬼的叉子、不可能的叉子或 blivet。这些线条在末端连接在一起,创造出一种尖头的错觉。因为我们的大脑倾向于从平面的 2D 图像中重建三维图像,这就产生了深度错觉。

轮到你了

无论你是想用视觉来强化你的信息,还是用图像来阐述复杂的想法,理解视觉感知背后的过程对于成为一个更好的视觉传达者来说都是至关重要的。点击这里阅读更多关于如何成为更好的视觉思考者或者点击这里有效地讲述视觉故事

你在网上找到的最好的视错觉是什么?你有更多在这里看不到的惊人例子吗?在下面的评论区和我们分享你的想法。

本帖 原版 最早出现在 Visme 的 视觉学习中心

作为一名数据人员,我学到了 8 件事

原文:https://towardsdatascience.com/8-things-ive-learnt-being-a-data-guy-e3b99b1acf22?source=collection_archive---------4-----------------------

Lexer Sydney Office

在上周的一次 Python 见面会上,我最害怕的问题出现了:“那么你是做什么的?”恐惧的感觉来自于不得不解释我是如何负责三个不同职位的焦虑。那我该说什么?

我是一名数据开发人员、数据科学家和数据工程师。相当多,特别是当我说我也是一名火箭工程师的时候。

今天是我在 Lexer 工作的第 268 天,这是一段怎样的旅程!当我提炼出一些我的技术和商业知识时,这篇文章旨在给局外人一个窥探创业公司迷人世界的机会。

技术的

1.正确命名您的变量!

作为一名航空航天工程背景的人,编码只是达到目的的一种手段,我对良好的编码实践一无所知。当我开始用 Ruby 编写脚本时,我在 Lexer 的导师很快指出像sum_arrayfinal_hash这样的变量名是没有意义和多余的。

相反,命名变量是为了描述它们的功能,而不是它们的数据类型。

假设我想使用一个假设的 count 函数来计算["apple","orange","banana","apple"]"apple"的出现次数,这个函数接受一个字符串数组和要计算的搜索字符串。有利的语法应该是n_apples = count(fruits, "apple")而不是count_val = count(fruits, "apple")

2.少相信你的眼睛,多相信你的代码。

假设你有一个柠檬水摊位,你想分析你的销售业绩。你让你的助手 Roger 在 excel 电子表格中记录所有交易,分为三列NameTotal Spent、&、Date of Lemonade purchase

作为一名数据工作者,你自然不相信人类能够生成干净的数据集,所以你决定在分析 Roger 的电子表格之前对其进行感官检查。

前几行看起来都很好,名字以正确的格式输入。总数和日期是合理的。问题是电子表格包含 1000 个事务。您可以继续目测数据,一次一行,但这将花费很长时间,而且无法保证您的眼睛会错过数据格式或总花费值中的细微错误。

更聪明的选择是查看数据的基数。像cut -d '|' -f 2 lemonade_purchase.csv | sort | uniq -c | sort -rn这样的 bash 命令将汇总所有总花费值,并根据出现次数对它们进行排序:

800 2.5
100 5
50  10
50  $ 

就像这样,您可以看到其中 50 笔交易的交易金额为$,这毫无意义。现在,您将研究这个问题的可能解决方案,并继续清理数据。

3.测试、测试和更多测试

在加入 Lexer 之前,这是我写代码的过程:Write Code --> Count my blessings --> Execute --> Check if output looks right。这是一个直觉游戏。

在 Lexer,我被引入了测试驱动开发(TDD)的美丽世界。测试指定您正在编写的特定代码段的输入和期望输出,然后它检查您的代码的实际输出是否与期望输出相等。

测试应该尽可能的具体和多样。测试给你信心,你的代码正在按预期工作。它用可靠的工作证据取代了直觉。

4.边缘情况下的设计

当我第一次开始数据争论时,我会很快形成一个清理数据集的攻击计划,并天真地期望它能完美地工作。我几乎不知道,当您有一个数百万行和 40-100 列的数据集时,您肯定会遇到您最初的攻击计划没有考虑到的边缘情况。这造成了严重的延误和方法的重复。

总是假设数据质量很差,所以你可以设计你的争论方法在最坏的情况下工作。

5.制作可伸缩代码

当你的 Ruby 脚本花了一个小时从 200 万行文本中解析并提取相关信息后,代码效率就跃升到了你的首要任务。在 Lexer,我学会了从大处着眼,总是问自己如何将一个解决方案大规模应用到几十亿字节的文本数据中。俗话说时间就是金钱,你通过代码效率节省的每一秒都是有价值的。

商业

6.想想你的客户如何使用你的产品

在 Lexer,我们帮助公司将数据用于真正理解和吸引客户。由于我的大部分工作都围绕着 Lexer 平台的技术工作,因此很容易脱离客户需求,转而沉迷于构建“酷”的功能,这些功能使用起来很酷,看起来很酷,但可能不那么有用。

7.只向需要您提供的解决方案的人销售

我在 Lexer 的第一个月,我让我们的一位业务开发经理卖给我一支笔。他说的第一句话是“你需要这支笔吗?”。我说‘不’。他说‘好吧。那就没必要把笔卖给你了。到目前为止,对我来说,销售意味着无论如何都要说服你的潜在客户购买你的产品。理论上,只要有足够的时间和努力,这是可行的,尽管成功率较低。或者,您可以尝试寻找那些拥有由您的产品实现的用例的客户。虽然你需要做额外的工作来发现这些潜力,但与“喷洒和祈祷”方法相比,这大大提高了你结束的机会。

8.找到需要回答的问题

这项工作最难的部分不是找到要回答的问题。这些为解决方案提供了背景,为我们提供了可操作的见解。许多组织都非常清楚“大数据”能为他们带来什么。例如,客户参与度的提高、收入的增加、流失率的降低等。然而,为了得到这些结果,大多数组织会被如何处理他们的数据所困扰。在这种情况下,问“如何?”是拼图中重要的一块。你如何利用这些数据为自己谋利?

获得数据科学工作的 8 个技巧

原文:https://towardsdatascience.com/8-tips-to-land-the-data-science-job-e648ebea2f93?source=collection_archive---------11-----------------------

在我作为数据科学家的短暂时间里,我采访了数量惊人的人。几天后,我开始注意到候选人的模式。这里有一些建议(直接取自表现最好的人),你可以用来最大化获得工作的机会:

面试前

基本上,你的简历。

简历是一个人如何展示自己的直接反映。这种努力,对细节的关注,以及在某种程度上,设计传达的“个性”,会产生潜意识的偏见——不管面试官是否意识到这一点。打造完美的第一印象时,请记住以下几点:

  • 错误:拼写错误、格式错误、过于冗长、不清楚的描述都是大忌。三次检查错误,然后再三次检查。请朋友帮忙。你头脑中清晰的要点对其他人来说可能没有意义。
  • 长度:确保你的简历不是 8 页长(是的,我遇到过这种情况。)两页精瘦、优质的内容通常是一个很好的极限。越简洁越好。如果你写了 100 篇论文,突出前 3 篇,其余的链接到一个网站。
  • 做人:最后,不要害怕列出真正的兴趣和爱好。你不仅仅是一个写代码的机器人。文化契合非常重要。人们不只是想知道你能不能做好工作,而是想知道他们能不能和你一起

你的简历可能会成为面试的起点。确保你能说出每一个要点——你应该知道你做了什么以及为什么你这么做。

面试

现在你和你的面试官面对面了。在这里,你将面临技术和行为两方面的问题。我将集中讨论技术部分。

记住,知识本身不会给你带来工作。你可能是一个摇滚明星,但你仍然需要证明这一点。面对简单和复杂的技术问题时,请记住以下几点:

  • 回答长度:换句话说,不要让你的面试官厌烦。知道什么时候结束你的回答并把接力棒传递给面试官是关键。不管你在说什么,5 分钟的独白只会伤害你的机会(相信我,我一直在接受)。目标是将答案控制在 30 秒以内。
  • 技术深度:不要害怕用大词。毕竟这是一次面试,确保你在回答中使用适当的行话来传达准确的意思。然而,当人们用大词和概念来弥补知识的缺乏时,这是非常明显的。在不牺牲准确性的前提下,尽可能简单地练习回答问题。
  • 开始简单:你的第一个答案很少会是完美的。从简单开始,找到一个解决方案,然后改进它。试图首先设计完美是傲慢的,对大问题不起作用。
  • 澄清:不明白问题没关系。要求澄清和举例说明表明你愿意作为一个更大的团队的一部分学习和发挥。没有人会因为回答错误的问题而被录用。
  • 不知道:如果你真的被难住了,就说出来——不知道也没关系。而且,这肯定比仅仅抛出一个错误的答案要好。

结论

最常违反的提示是简历错误答案长度。获得这些权利的一个有效策略是向朋友寻求帮助——校对和模拟面试会有回报。你会惊讶于几个小时的练习能带来多大的进步。

运动员在确定他们的比赛日策略之前不会参加比赛,所以你为什么不可以呢?

建立成功数据团队的 8 种方法

原文:https://towardsdatascience.com/8-ways-to-set-up-a-data-team-for-success-b223c5e8e674?source=collection_archive---------3-----------------------

我们生活在数据驱动型组织的黄金时代。算法!大数据!为什么,你甚至可能有一两个数据科学家!但是……

如果你的数据人员花大部分时间在复杂的商业概念上做简单的算术,那么你称之为数据科学就太慷慨了。真的只是商业智能。你的团队在做什么?

老实说,希望介于两者之间。区别并不重要。如果学术严谨不影响商业成果,那它就毫无用处。另一方面,重要的是他们正在做的很多事情可能没有科学或商业价值。这可能与他们在复杂数学方面的能力无关。知道是什么阻碍了他们吗?

VP of Businessing

是你。运营团队的领导者。有计划的人,不管有多不成熟。Cherrypicked 数字是你执行的烟幕和镜子。“是啊,但不是我!”。这是你在仪表盘上的自我形象:

How ‘bout them KPIs?

好吧,我越来越夸张这些流行文化参考。关键是,你可能低估了在不犯灾难性分析错误的情况下使用数据的难度。

就像一个工程师和一个糟糕的产品经理一样,你的数据团队将会失败,除非你,企业所有者,已经在上游为他们的成功做好了准备。不要做骗子,做一个真正的‘数字人’。

8 相当简单的直觉检查策略可以避免最危险的错误。

僵尸实验的故事

我们的第一个策略以故事的形式出现:

1)知道分析是否值得做

这似乎是显而易见的,但从我的经验来看,它是最常被忽略的一个。它会悄悄靠近你。对我来说是的,但我会告诉你如何抓住它。这是一个真实的故事,讲述了我把事情搞砸的时候,以及为什么会这样。

When it just isn’t worth doing

作为我们的 CRM 管理员,我正在帮助扩展一个支持团队,该团队将在不到 3 年的时间里通过我们的 CRM 处理超过 22,000 个线程。代理可以在结案时按原因标记案例。关键是:至少有一个标签是必需的。管理人员设定要求时并不太关心运营成本。我写了代码在我们的 CRM 中验证这一点。运营成本见鬼去吧。我们将成为一个数据驱动的组织。

运营成本是多少?三年来,人们标记了大约 22000 条这样的线索。保守估计标记一个案例需要 5 秒钟(可能更长),估计这项工作需要大约 30 个小时的数据输入。这可能看起来不多,但想象一下,让某人坐下来,告诉他们一整周的工作仅仅是创建这些数据。我们基本上做到了这一点,那么经理们从这一昂贵的努力中得到了什么呢?

没有人发表过这份报告。我怎么知道?如果他们这样做了,即使曾经,他们也会看到一个非常典型的数据模式:

告诉他们我们的主要问题是…

…‘其他’。

公平地说,对话很难分类!不公平的是,我们的代理人不明白这一点。但是让我们更进一步。想象一个完美的标签系统,没有代理人的困惑和冷漠。

一个过于简单的代理就是排除“其他”标签。我们在剩下的列表中看到了什么?我们的第二最常见的各种问题仍然完全让其他人相形见绌。你知道它是什么并不重要。但对我们来说,这是一个公司大部分人已经在着手解决的明显的、非常棘手的问题。没有什么是我们不知道的。

所以,让我们继续看图表。在我们的前两个无用标签(占数据的 90%)之后,也许我们可以在长尾理论中找到价值。在尾部,大约有 5 个令人惊讶的标签断断续续地出现。其余的标签(比如我们手机应用的问题)非常罕见。代理人可以告诉我们的所有趣闻。如果数字分布更加均匀,也许我们可以仔细检查他们的排名(比如移动应用程序问题是否比预期的高)。但是这些数据是如此的杂乱无章,毫无用处。

通常,现实世界中的数据远没有你事先想象的结果有趣

收集数据是白费力气。不仅仅是 30 个小时的集体标记。但是,使这成为我们过程的一部分的所有精神开销。训练特工。不断变化的分类法。数据维护。机会成本。

通常,“计算数字”不值得花费时间,尤其是耗时的时候。那么,我应该从一开始就注意什么,以便更早地发现这一点呢?

我一直反复强调的一个明显的观点是,总是从分析中寻求学习,如果没有东西可学,就放弃努力。但是除此之外,我们还缺少一个更重要的策略:没有任何我们想要通知的决定。

作为一个操作者,我绝对讨厌 过程 没有目的

更多的数据比更少的数据好*,但获取数据的成本往往比你意识到的要高。轻率地委派他人(通常是您的数据团队或初级代表)在数据上的时间是一个危险的领域。总是:

1)有 的决定 你打算通知

2)保持努力向 学习 反对那个决定

总结一下这个故事,符合这个框架:

决定: 无。我们做这个分析不是为了给任何具体的决策或未来的计划决策提供信息。有用的愿望从未实现。

方法 :用标签的 MECE 分类法来标记每个客户服务案例

学习: 无。我们没看。如果我们这样做了,我们只会学到显而易见的东西。我们可以从代理商那里得到更好的轶事色彩。

Know If It’s Worth Doing

问题 :显然,这个例子的问题在于我们没有 决定 的目标或者 学习 的反对。

*数据多总比少好吗?分析会在数据团队得到它之前就被毁掉吗?即使有明确的目标来指导决策,天才数学家也可能失败。以下是(使用我们的新框架)需要注意的其他七个问题:

其他最佳实践

此后,我创建了一些虚构的场景,展示了经理们应该使用的常见策略,以确保他们不会削弱他们的数据团队。

2)注意生存偏差

(因优秀图书 如何不被看错 )

决策: 一家 B2B 软件公司正在准备他们的路线图。他们的主要目标是跨越从最初的 200 名早期用户到下一千名客户的鸿沟。

方法: 他们建立并分发一份客户调查。“20%的受访者投票支持下一步添加该功能”。

学习: “通过对客户驱动的功能集进行优先级排序,这种分析将帮助我们赢得更多优势”

Survivorship Bias

问题: 这种方法与保留或追加销售目标非常匹配。但目标是获得 新的 客户。这种方法并没有准确地衡量这些观众。它采访了购买产品的人,而不是没有购买产品的人。为了提高点击率,他们反而需要听到为什么人们 没有 购买。

3)对照对照组判断有效性

决策: 一位经理想知道 SLA 是否会改善 SDR 的平均提案响应时间

方法: 经理制定了一个内部 SLA,要求所有入站查询在 24 小时内得到一个详细的建议,数据团队对业务时间调整后的平均响应时间进行建模,并构建一个控制面板。

学习: “响应次数下降了!SLA 起作用了!”

No Control Group

问题: 众所周知,您的 SDR 最近的入站/代表更少,所以他们的队列更短,这可以解释更快的响应时间。有没有可能他们几乎总是满足 SLA,而这一切只是在高压力时期惩罚他们?

4)不要忘记机会成本

决策: 公司希望分析“相关项目”功能的有效性,以增加追加采购

方法: 产品 A/B 测试产品页面上建议订购补充项目的功能。数据工程师构建并显示这个新的 KPI。

学习: “大家正在添加相关项!我们应该投资于“相关商品”功能,以最大限度地提高购物车附加组件”

Opportunity Cost

我们已经证明了在忽略机会成本的情况下投资该特性的合理性。每天,我们都在房租、工资等方面烧钱。如果同一个团队可以在 4 周内建立一个“捆绑”购物体验,并且有可能创建 200%以上的多商品购物车,会怎么样?我们在相关项目上浪费时间做什么?!?!

5)始终承认假设

决策: 一个财务主管需要预算雇佣多少工资管理人员来支持一个新的市场(加拿大)

方法: 数据团队利用销售数字来推算需求。然后模型提供人数增长,推断需要多少工资人员。

Unacknowledged Assumptions

问题: 我们承认增长过快可能会影响我们的估计。但是我们忽略的一个重要假设是 【我们新市场的薪资需求将与现有市场大致相同】 。货币呢?税法?也许每个员工都要支持两倍的工作!

6)问题统计显著性

决定: 三名 Eng 考生在同一季度拒绝录取通知书。招聘经理想知道如何减少求职者流失

方法: 一个人力资源代表问每个人为什么他们通过了。这三个人都描述了在“我能发挥更大影响力的小团队”中选择机会。有了共识,这次谁还需要数据团队?

学习: “只有当候选人没有意识到我们的子团队是灵活和独立的,我们才会失败。我们 40 人的工程团队听起来势不可挡。我们应该强调候选人所在的子团队的规模,并避免对整个工程团队的规模提出质疑

Stastistical Significance

问题: 甚至有足够的数据得出结论吗?零假设是: “如果我们提到了小的子团队,考生绝对不会拒绝” 。你不需要复习 p 值就可以问:“这闻起来对吗?”有时你会连续翻转头部五次。****

7)寻找缺失的数据

决策: 某 CX 经理团队有早/晚班;他们想在轮班期间给明星特工配备最困难、最紧急的问题。

方法: 支持案例升级率由数据团队划分到班次中,一个控制面板显示这些时段随时间的变化

学习: “我们最紧迫的问题是 55%的夜晚,45%的白天。我们实际上需要将我们最好的人员分散到两个班次”

Missing Data

问题: 只看紧急邮件忽略了全貌。我们忘了计算打给代理帮助热线的电话,这很可能是如何 许多 紧急问题进来的。有没有可能这些偏向晚上的数据,再加上电子邮件数据,强烈支持全明星的夜班工作人员?

8)小心错误的选择

决策: 一家公司希望研究客户对其核心产品的潜在新定价模式的偏好

方法: 进行一项调查,询问他们最喜欢哪个新选项。

*****学习:*“5 个选项中,80%表示选项 3。这是一个明显的赢家。”

False Choices

问题: 那些你调查中没有的选项呢?如果他们想要选择一个以上的选项(75%的人会选择选项 2)。如果 100%的人更喜欢你当前的定价模式而不是新的选择,会怎么样?****

摘要

不要认为聘请一个博士和在复杂的数学上投入大量时间会拯救你的数据团队。在编辑草稿期间,我以前的同事(data all star)Ryan Brennan明智地阐明了所有这些例子都只是抽象的问题。当我们用日常数字表达想法时,企业所有者有责任确保表达的准确性。不要逃避你的责任。不要让你的团队失败。

8 年过去了,阿姆斯特丹仍然是智能城市的领头羊

原文:https://towardsdatascience.com/8-years-on-amsterdam-is-still-leading-the-way-as-a-smart-city-79bd91c7ac13?source=collection_archive---------1-----------------------

instagram.com/fetherico

欧洲的创业之都是科技和创新的中心

阿姆斯特丹有 1281 座桥。对于我们大多数人来说,这似乎是一个相当容易被抛弃的事实,但对于阿姆斯特丹智能城市倡议来说,这是一个巨大的飞跃。因为直到今年,我们都不知道有多少座桥。

32 个地区部门覆盖了超过 12,000 个数据集,您可以开始明白为什么了。由于没有收集所有信息的中央枢纽,共享统计数据是繁忙的政府部门没有时间或资源去做的事情。

现在,阿姆斯特丹拥有了城市数据,这是其智能城市引擎的燃料。

是什么让阿姆斯特丹与众不同

阿姆斯特丹的特别之处在于,它将城市数据开源。每个人都可以访问这些信息,任何人都可以向集合中添加更多的数据集。城市数据可以在网上获得,很容易搜索、下载或链接到你自己的系统。

大城市需要适应

目前世界人口的 50%居住在城市。到 2050 年,这一数字预计将增加到 70%——这将包括在此期间全球总人口增长约 20 亿人。在阿姆斯特丹这样的城市,大部分基础设施都来自宗教改革时期,必须进行改造,以确保首都的道路、住房、服务和生活质量得到改善。与此同时,城市必须变得更加可持续,以避免空气污染的增加和进一步加剧气候变化。

2016 年 4 月,阿姆斯特丹获得欧洲创新之都奖。今年,荷兰在 2017 年全球创新指数中跃升 5 位,排名第 3。而且没有减缓的迹象。

简史

Image: expeditieaarde.blogspot.nl

  • 自 1200 年以来,荷兰 15-20%的土地已经被周围的海洋、湖泊、沼泽和湿地开垦
  • 这个国家只有 50%的地方高于海平面 1 米以上
  • 27%在海平面以下,这个地区有五分之一的人口

阿姆斯特丹市位于海平面以下 2 米。和所有早期文明一样,水赋予了城市生命。生产和运输货物的能力对荷兰的生存一直至关重要。它仍然是世界第八大出口国,贸易占该国国内生产总值的 82.5%。

市民们一直都意识到与水的关系是多么脆弱,荷兰习惯于利用技术来应对无时不在的洪水风险。在过去,如果你不妥善照料你的庄稼,维护灌溉系统、堤坝、防洪堤和障碍物,你邻居的庄稼也会遭殃。在许多方面,这项公约现在仍然适用。这些尊重、合作和社区的原则已经延续了几个世纪,这就是为什么今天的阿姆斯特丹仍然是精明的基础设施和创新的典范。

我的邻居应用程序(MijnBuur)

这一框架的一个例子是涵盖荷兰每一套公寓的“业主协会”法。虽然每个人都拥有自己独立的公寓,但大楼里的每个人都必须合作维护、清洁和保证整个建筑的安全。这通常是通过按月收取服务费来实现的,这意味着,如果你邻居的淋浴器漏水,损坏了你的天花板,你可以向该基金申请资金。

MijnBuur 应用程序建立在这种睦邻关系之上。你与你的邻居直接相连,他们可以提醒你任何危险,他们需要的东西或他们想做的任何事情。目的是让公民更有社会责任感,在不涉及市政当局的情况下解决纠纷。该项目应该节省资金,同时也改善社区关系——并通过向政府提供关于首都居民之间共同问题的有用数据来塑造未来的政策。

挖掘技术文化

  • 荷兰是欧洲人口最稠密的国家,也是世界上人口最稠密的国家之一——每公里 4.88 人
  • 在阿姆斯特丹,这一数字上升到每公里 4439 人——目前阿姆斯特丹的人口超过 82 万
  • 再加上每年 1400 万游客…

……你可以明白为什么政府热衷于创造尽可能多的创新机会。商业部门和阿姆斯特丹政府都积极尽最大努力吸引顶级技术和创新人才,并通过国际人才活动、Startupbootcamp 和为阿姆斯特丹编码等计划留住他们。

数字平台用户产生的数据往往比所提供的服务更有价值。通过将阿姆斯特丹的城市数据开源,通常为企业保留的经济价值被返还给市民,让他们重新投资于解决城市问题的创新解决方案。

而且不仅仅是免费数据。阿姆斯特丹已经有了强大的数字基础设施和 ICT 生态系统。荷兰拥有欧盟最快的互联网。对创业公司的支持无处不在。无论是接触经验丰富的创业交流、现代的共同工作空间、世界闻名的加速器和孵化器,还是介绍首都的许多风险资本家、天使和投资者。

2016 年,阿姆斯特丹的初创公司筹集了 1.94 亿€,占整个荷兰初创公司总资金的 76%。Lumos Global 是一家提供清洁廉价太阳能的公司,筹集了其中的近一半资金。提醒人们,可持续发展和社会企业家精神仍然是这座城市的最大愿望。

阿姆斯特丹智慧城市倡议(ASC)

自 2009 年提出概念以来,ASC 已经推动了 80 多个旨在让城市更智能的试点项目。在一个早期项目中,研究和统计部直接进入首都的各个政府部门,直接获取数据。

利用保险公司的统计数据和治疗费用的信息,他们发现一些抑郁症患者比例高的地区没有得到相应水平的护理。该市向一项教育计划投入了更多资金,该计划针对那些拒绝接受治疗或不愿承认自己患病的人,并增加了接受医疗护理的人数。

无塑料河流

这个试点项目不仅强调了收集信息的重要性,还强调了组织和分享信息的重要性。在最近一次无塑料河流的马拉松比赛中,设计师安妮·玛丽克·埃维琳斯、萨斯基亚·斯图德和弗朗西斯·杰罗恩·祖特利用石油和疏浚行业共有的原则创造了“伟大的泡沫屏障”。这个简单的想法是在河底放一根带孔的管子。通过泵入空气,你创造了一个“气泡屏障”,阻止塑料漂浮在河中,并将废物引导到河岸进行收集。对于像阿姆斯特丹这样拥有复杂开放运河系统的城市来说,这是一项无价的创新。这种方法很便宜,可以很容易地应用到世界各地的其他水道,为每年倾倒入海洋的 800 万吨塑料提供了一种解决方案。

Van Plestik 通过收集收集的废塑料并将其转化为 3D 打印机的建筑材料,将这一解决方案向前推进了一步。这些打印机可以为各种应用创造高质量和负担得起的塑料物品。Van Plestik 是 StartupAmsterdam 开展的一项名为“住宅创业”的计划的一部分。

创业阿姆斯特丹

2015 年阿姆斯特丹市和 250 名科技行业利益相关者的合作。目的是统一和扩大阿姆斯特丹的启动系统,并建立一个生态系统。

我们的目标是成为创业公司的一站式商店,将他们与关键人物、导师、投资者、技术人才和新客户联系起来。在他们的网站上,你可以搜索招聘信息、寻找合作空间、查看活动日历、阅读相关新闻文章、查看大学课程、加入包括 80 多家企业在内的社区网络,并获得联络人员的支持。

在 Eli5,我们使用该系统与智能城市规划者联系,测试我们最新的数字产品,与类似的公司建立联系,寻找人才,然后通过组织聚会和实习来回馈该系统,与那些刚刚进入行业的人分享我们的方法和经验。例如,今年我们想测试我们的在线提议工具,并很快找到了愿意给我们反馈的自由职业者团体。然后作为交换,我们免费提供软件给他们。

在短短两年内,该项目巩固了阿姆斯特丹作为欧盟科技中心的地位。在很短的时间内,他们已经:

  • 建立了一个公司网络
  • 创建了 Launchpad Meetups 来连接企业和创业公司
  • 发起阿姆斯特丹资本周,将创业公司与资本联系起来
  • 创办了创业学院,包括 BSSA (B.Startup School Amsterdam)和成长部落学院
  • 协办国际创业训练营
  • 将编码课程引入学校课程

常驻启动

StartupAmsterdam 支持的举措之一是政府孵化器 Startup in Residence。

每年,市政府都会评估人们关注的问题,并利用城市数据为初创公司创造一系列需要解决的社会挑战。通过这样做,他们利用了阿姆斯特丹巨大的创业文化以及他们雇佣的有才华的应用程序、平台和软件开发人员。

阿姆斯特丹任何时候都有 1500-2000 家创业公司,与创意人员和开发人员合作可以大大加快创新进程。这也意味着市民可以直接参与他们城市的未来。

如果解决方案证明是成功的,阿姆斯特丹市将投资于该公司或成为他们的启动客户。与市政当局合作为初创企业获得城市专家及其网络的支持提供了一个独特的机会。该计划几乎支持了本文中提到的所有应用。

2015 年的试点计划产生了五个可行的项目,包括一个鼓励居民分类垃圾的应用程序,以及一个帮助游客离开酒店和住宿的应用程序,还通过提供阿姆斯特丹鲜为人知的景点 Wyzer 的信息来更均匀地分散游客。

Wander 的 Wyzer 应用程序

这个应用程序的聪明之处在于,它有助于让人们远离人迹罕至的道路,同时改善他们对这座城市的体验。该应用程序连接到一个指南针,而不是地图,所以你仍然朝着正确的方向前进,但可以探索不同的路线到达那里。他们称之为“模糊导航”。该应用程序突出了“隐藏的宝石”,供您沿途发现。所以当你回到家,你会有一个比大多数游客更独特的故事要讲——当地人对减少拥堵感到高兴。

这项技术使用地图、GPS 和旅游数据,然后依靠一些社区合作向用户推荐最佳去处。

阿姆斯特丹高级都市解决方案研究所(AMS)

AMS 是由代尔夫特大学、瓦赫宁根大学和麻省理工学院构思的,以响应城市对实际城市问题开发大都市解决方案的建议呼吁。成立研究所意味着研究,更重要的是,可以进行小规模的测试。相对廉价的应用程序和平台可以快速验证想法,并创建可行的实时数据和分析。

AMS 是一个项目的一部分,该项目旨在摆脱 Wyzer 等应用程序使用的传统公共数据形式,并研究产生大规模地理社会数据的方法。这是从传感器、GPS 设备和手机中挖掘出来的。然而,这种信息更以人为本,也受益于以前未开发的来自社会媒体、LoRa 网络和开放数据门户的社区信息。

2016 年 6 月,荷兰成为世界上第一个拥有全国范围的 LoRa 网络以促进物联网的国家。因此,它是测试这种新型数据的完美实验室。

大城市数据的优势

AMS 最雄心勃勃的项目之一是社会城市数据实验室。研究人员和开发人员正在为“大城市数据的获取、丰富、整合、分析和可视化”构建最先进的技术。

如果你能从大量市民中实时收集关于挑战和不满的知识,那么城市规划者和决策者将会了解得更多。不可避免地,这意味着该政策将更有效地服务于社区,提高生活质量。

社交玻璃

社会城市数据实验室的成果之一是社会玻璃。这个基于网络的平台利用实时城市大数据分析和预测来创建“人类景观的反映”。

通过使用高级词汇语义分析词义及其之间的关系,并将结果与机器学习相结合,该团队可以确定公众的状况、情绪、欲望——几乎任何情绪。

当你开始用地理定位数据和市政当局的其他公开数据来交叉参考时,你就可以开始建立模式和绘制城市的情绪。因此,如果一个本地事件正在扰乱居民,周围的社会数据可以帮助指导规划者解决问题。或者,如果博物馆的长队打扰了游客,该平台可以发送警报,告诉其他人避开该景点,直到它不那么繁忙。

科学并不完美。社交帖子的特点和内容多种多样,缺乏结构,可能会有偏见和模糊不清。人工智能需要一些时间来学习识别模式和验证数据。但是,通过进一步让市民参与到智慧城市计划中来,阿姆斯特丹在下一步就有了优势。

未来:智慧城市 3.0

智慧城市的第一次迭代非常注重技术。像 IBM 和思科这样的大公司经常被批评有太大的影响力,并推动城市采用他们还没有适当使用的基础设施的技术。

阿姆斯特丹的首席技术官 Ger Baron 在接受《麻省理工斯隆管理评论》采访时表示,“每一家来这里告诉我们它是如何工作的公司,他们都是错的,因为他们不知道一个城市是如何工作的……人们认为它是如何工作的和它是如何工作的之间有很大的差异”。当他开始创建一个全市范围的数据清单时,这一点变得更加明显,他意识到没有人有一个完整的、经过整理的首都桥梁数据。那些管理这座城市几个世纪的人也没有完全理解它。巴伦的部分工作是确保企业利益不会压倒市民利益,当一个城市急于变得更聪明时,这种情况经常发生。

智慧城市 2.0 的特点是由城市本身而不是技术提供商引领。该版本侧重于提高居民和游客的生活质量,并与市民协商设计工具,以确保解决方案符合他们的需求。这就是阿姆斯特丹对创业计划(Startups in Residence)所做的事情,它完全基于人们所关心的问题来设定挑战。

下一个阶段是公民共同创造。智慧城市 3.0 仍然需要由技术和城市来实现,但将由人民和社区来领导。像修理咖啡馆或工具借阅图书馆这样的计划已经在阿姆斯特丹开始实施,通常由公众单独管理,为公众服务。应用程序 Verbeterdebuurt 字面意思是“改善邻里关系”,为阿姆斯特丹人提供了一种便捷的方式来强调问题并提出改变建议。它有 GPS 功能,可以上传图片以节省冗长描述的时间。

居民可以比管理员更快地发现城市的需求。通过合作,他们通常也能更快地找到解决方案。如果政府不再将市民视为顾客或服务的接受者,而是让他们成为城市的共同创造者,阿姆斯特丹将继续变得更聪明。只要它继续建设宽带、无线和物联网基础设施。最重要的是,城市数据得到了维护。

成为数据科学家的 88 种资源和工具

原文:https://towardsdatascience.com/88-resources-tools-to-become-a-data-scientist-c28008bf8fdf?source=collection_archive---------13-----------------------

《哈佛商业评论》认为数据科学家是 21 世纪最性感的工作。在本文中,借助于最好的免费网络数据抓取工具之一octo parse V7,我们汇总了成为数据科学家可能需要的资源和工具。

1.学习资源:课程学位 / 证书书籍

2.工具:数据提取器数据分析报告

3.数据科学竞赛/计划

您可以查看 原帖

20 门关于数据科学的在线课程

1。数据科学专业

创作者:约翰·霍普斯金大学

这一专业化涵盖了您在整个数据科学管道中需要的概念和工具,从提出正确的问题到做出推论和发布结果。在最终的顶点项目中,您将应用通过使用真实世界的数据构建数据产品而学到的技能。完成后,学生将有一个文件夹,展示他们对材料的掌握。

https://www.coursera.org/specializations/jhu-data-science

2。Python 中的数据科学简介

创作者:密歇根大学

本课程将向学习者介绍 python 编程环境的基础知识,包括基本的 python 编程技术,如 lambdas、读取和操作 csv 文件以及 numpy 库。

https://www.coursera.org/learn/python-data-analysis

3。应用绘图、制图&Python 中的数据表示

创作者:密歇根大学

本课程将向学习者介绍信息可视化基础知识,重点是使用 matplotlib 库进行报告和制图。

https://www.coursera.org/learn/python-plotting

4。Python 中的应用机器学习

创作者:密歇根大学

本课程将向学习者介绍应用机器学习,更侧重于技术和方法,而不是这些方法背后的统计数据。

https://www.coursera.org/learn/python-machine-learning

5。在 Python 中应用文本挖掘

创作者:密歇根大学

本课程将向学习者介绍文本挖掘和文本操作的基础知识。

https://www.coursera.org/learn/python-text-mining

6。Python 中的应用社会网络分析

创作者:密歇根大学

本课程将通过使用 NetworkX 库的教程向学习者介绍网络分析。

本课程应该在以下课程之后学习:Python 中的数据科学导论、Python 中的应用绘图、图表和数据表示,以及 Python 中的应用机器学习。

https://www . coursera . org/learn/python-social-network-analysis

7。什么是数据科学?

创建者:IBM

在本课程中,我们将会见一些数据科学从业者,并大致了解当今的数据科学。

https://www.coursera.org/learn/what-is-datascience

8。数据科学开源工具

创建者:IBM

在本课程中,您将了解 Jupyter 笔记本电脑、RStudio IDE、Apache Zeppelin 和数据科学体验。

https://www . coursera . org/learn/opensource-tools-for-data-science

9。数据科学方法论

创建者:IBM

您将了解:—解决数据科学问题的主要步骤。—实践数据科学的主要步骤,从形成具体的业务或研究问题,到收集和分析数据,到构建模型,以及了解模型部署后的反馈。—数据科学家如何思考!

https://www.coursera.org/learn/data-science-methodology

10。应用数据科学

创建者:IBM

这是一个充满活力的专业,面向希望获得现实世界数据问题实用技能的数据科学爱好者。它对任何有兴趣从事数据科学职业的人都有吸引力,并且已经具备基本技能(或者已经完成了应用数据科学专业化入门)。您将学习 Python——不需要任何编程知识。然后你将学习数据可视化和数据分析。通过我们的指导讲座、实验室和项目,您将获得处理有趣数据问题的实践经验。

https://www . coursera . org/specializations/applied-data-science

11。用于数据科学的数据库和 SQL

本课程的目的是介绍关系数据库的概念,并帮助您学习和应用 SQL 语言的知识。它还旨在帮助您开始在数据科学环境中执行 SQL 访问。

*【https://www.coursera.org/learn/sql-data-science *

12。数据科学数学技能

杜克大学

本课程旨在向学习者传授在几乎所有数据科学数学课程中取得成功所需的基本数学知识,面向拥有基本数学技能但可能没有学过代数或微积分预科的学习者。

https://www.coursera.org/learn/datasciencemathskills

13。数据科学:争论

哈弗 dX

本课程涵盖了数据争论过程的几个标准步骤,如将数据导入 R、整理数据、字符串处理、HTML 解析、处理日期和时间以及文本挖掘。

https://www . EDX . org/course/data-science-wrangling-harvardx-ph 125-6x

14。数据科学:生产力工具

哈佛大学

https://www . EDX . org/course/data-science-productivity-tools-harvardx-ph 125-5x

15。数据科学研究方法:Python 版

微软

https://www . EDX . org/course/research-methods-for-data-science-python-edition

16。如何赢得数据科学竞赛:向顶尖高手学习

创建者:国立研究大学高等经济学院

如果你想进入竞争激烈的数据科学领域,那么这门课程就是为你准备的!参加预测建模竞赛可以帮助您获得实践经验,提高和利用您在各个领域的数据建模技能,例如信贷、保险、营销、自然语言处理、销售预测和计算机视觉等。

https://www.coursera.org/learn/competitive-data-science

17。计算思维和数据科学简介

指导教师:埃里克·格里姆森教授;约翰·古塔格教授;安娜·贝尔博士

6 0002 是 6 0001 计算机科学和 Python 编程入门的继续,面向很少或没有编程经验的学生。它旨在让学生了解计算在解决问题中的作用,并帮助学生,无论他们的专业如何,对他们编写小程序以实现有用目标的能力充满信心。该类使用 Python 25 编程语言。

https://OCW . MIT . edu/courses/electrical-engineering-and-computer-science/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/

18。计算机科学导论和 Python 编程

指导老师:安娜·贝尔博士;埃里克·格里姆森教授;约翰·古塔格教授

《计算机科学和 Python 编程导论》面向很少或没有编程经验的学生。它旨在让学生了解计算在解决问题中的作用,并帮助学生,无论他们的专业如何,对他们编写小程序以实现有用目标的能力充满信心。该类使用 Python 25 编程语言。

https://OCW . MIT . edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/

19。统计思维和数据分析

讲师:辛西娅·鲁丁教授;Allison Chang(助教);Dimitrios Bisias(助教)

本课程介绍统计数据分析。主题选自应用概率、抽样、估计、假设检验、线性回归、方差分析、分类数据分析和非参数统计。

https://OCW . MIT . edu/courses/Sloan-school-of-management/15-075j-statistical-thinking-and-data-analysis-fall-2011/

20。用于数据科学的 SQL

加州大学戴维斯分校

本课程旨在为您提供 SQL 和数据处理基础的入门知识,以便您可以开始出于数据科学的目的对其进行分析。

*【https://www.coursera.org/learn/sql-for-data-science *

数据科学学位/证书

  1. 计算机科学硕士

伊利诺伊大学厄巴纳-香槟分校

学费:21000 美元

计算机科学硕士是一个非论文学位,需要 32 个学分的课程。学生可以按照自己的进度完成计算机硕士所需的八门课程,少则一年,多则五年。学生通过 Coursera 平台接受讲座,但伊利诺伊州的教师和助教会就大学学位学分所需的一系列严格的作业、项目和考试进行建议和评估。

计算机科学硕士学位 32 个学分的学费为 19,200 美元。

https://www . coursera . org/degrees/伊利诺伊州计算机科学硕士

2。计算机科学学士

伦敦大学

学费:9600-17000,取决于学生的地理位置。

该学位由伦敦大学戈德史密斯团队设计,旨在为您提供计算机科学的坚实基础和数据科学、人工智能、虚拟现实和网络开发等主题的专业知识。你的学习将涉及行业和学术案例研究,以帮助你从现实世界问题的角度理解你的研究

https://www . coursera . org/degrees/学士-科学-计算机-科学-伦敦

3。数据科学

哈佛大学

学费:整个项目 441.90 美元。

你将学到:基本的 R 编程技巧;统计概念,如概率、推理和建模,以及如何在实践中应用它们;获得使用 tidyverse 的经验,包括使用 ggplot2 的数据可视化和使用 dplyr 的数据辩论;熟悉实践数据科学家的必备工具,如 Unix/Linux、git 和 GitHub、RStudio 实现机器学习算法;通过激励真实世界的案例研究,深入了解基本的数据科学概念。

https://www . EDX . org/professional-certificate/harvardx-data-science

4。微软数据科学专业计划

创建者:微软

学费:整个项目 1089 美元

你将学会:使用微软 Excel 探索数据;使用 Transact-SQL 查询关系数据库;使用 Excel 或 Power BI 创建数据模型并可视化数据;将统计方法应用于数据;使用 R 或 Python 进行数据的探索和转换;遵循数据科学方法;用 Azure 机器学习创建和验证机器学习模型;写 R 或 Python 代码,构建机器学习模型;将数据科学技术应用于常见场景;针对给定的数据问题实现机器学习解决方案。

https://www . EDX . org/微软-专业-程序-数据-科学

6。计算机科学硕士

亚利桑那州立大学

学费:15000 美元

您将从 20 门课程选项中选择 10 门课程,以发展新兴按需技术方面的专业知识。从人工智能、软件工程、云计算、大数据和网络安全等重点领域中进行选择。你还将创建一个项目组合,用来向未来的雇主展示你的经历。

https://www . coursera . org/degrees/master-of-computer-science-ASU

书籍

1。数据科学手册:来自 25 位了不起的数据科学家的建议和见解

作者:卡尔·山

25 位业内专家在这本手册中给出了一些建议,对初学者很有帮助。

2。商业数据科学:你需要了解的数据挖掘和数据分析思维

作者:福斯特教务长和汤姆·福塞特

面向企业的数据科学介绍了数据科学的基本原理,并引导您完成从收集的数据中提取有用知识和商业价值所需的“数据分析思维”。本指南还帮助您理解当今使用的许多数据挖掘技术。

3。做数据科学:从一线直说

作者:凯茜·奥尼尔和瑞秋·舒特

在这些长达一章的讲座中,来自谷歌、微软和易贝等公司的数据科学家通过展示案例研究和他们使用的代码来分享新的算法、方法和模型。如果你熟悉线性代数、概率和统计,并且有编程经验,这本书是数据科学的理想入门。

4。使用 Python 从零开始的数据科学:逐步指南

作者:彼得斯·摩根

如果你正在寻找一个完整的从零开始使用 Python 的一步一步的数据科学指南,这本书是给你的。在他的第一本书《用 Python 从零开始进行数据分析》获得巨大成功之后,Peters Morgan 出版了他的第二本书,现在专注于数据科学和机器学习。从业者认为这是这个领域中最简单的指南。

5。假人数据科学(假人(计算机))

作者:莉莲·皮尔森

虚拟数据科学是 IT 专业人员和学生的完美起点,他们希望快速入门广阔的数据科学空间的所有领域。这本书以商业案例为重点,探讨了大数据、数据科学和数据工程方面的主题,以及这三个领域如何结合起来产生巨大的价值。

6。概率、统计和随机过程介绍

作者:侯赛因·皮什罗-尼克

这本书向学生介绍了概率、统计和随机过程。学生和工程、各种科学、金融和其他相关领域的从业者都可以使用它。它为这些主题提供了一种清晰直观的方法,同时保持了数学的准确性。你也可以在网上找到课程和视频。

https://www.probabilitycourse.com

7。OpenIntro 统计数据

作者:大卫·迭斯和克里斯托弗·巴尔

OpenIntro 项目成立于 2009 年,旨在通过制作免费使用且易于修改的优秀书籍和教学工具来提高教育质量和可用性。他的处女作是 OpenIntro Statistics。相应的课程和视频可在以下位置找到:

https://www.openintro.org

8。统计推断

作者:乔治·卡塞拉

是很多高校应届毕业生的教材。

讨论理论统计和理论发展的实际应用。包括大量涵盖理论和应用的练习。

9。应用线性统计模型

作者:考特纳

应用线性统计模型是长期建立的统计建模的主要权威文本和参考。第五版增加了计算和图形分析的使用,而没有牺牲概念或严谨性。一般来说,5e 在例子和练习中使用更大的数据集,如果方法可以在软件中自动化而不丧失理解,它就这样做了。

10。广义线性模型介绍

作者:安妮特·j·多布森和阿德里安·g·巴尼特

它为统计建模提供了一个连贯的框架,重点是数字和图形方法。这本畅销书的新版本已经更新了非线性关联的新部分,模型选择的策略,以及关于良好统计实践的海报。

数据提取器:通过聚合网站的大数据来创建自己的数据库。

  1. 八分音符

许可证:免费

网址:https://www.octoparse.com/

数据导出格式:Excel、HTML、CSV、JSON 和数据库

Octoparse 是最好的免费网络数据提取器,功能全面,支持从网站上提取几乎所有类型的数据。有两种应用模式——向导模式和高级模式——供非程序员快速习惯 Octoparse。

此外,其云提取能够在云端运行刮刀,并将数据保存在八分云,使得每个人都能够实时访问刮刀动态信息。Octoparse 不仅提供 SAAS,还提供 web scraper 设置和数据收集的定制服务。

2。莫曾达

许可证:商业

网址:https://www.mozenda.com/

Mozenda 是一个云网络抓取服务(SaaS ),具有用于数据提取的实用功能。Mozenda Web Console 是一个基于 Web 的应用程序,允许您运行您的代理(scrape 项目),查看和组织您的结果,并将提取的数据导出或发布到 Dropbox、Amazon 和 Microsoft Azue 等云存储中。代理生成器是一个用于生成数据项目的 Windows 应用程序。

3。刮刀

许可证:免费

https://chrome.google.com/webstore/category/extensions

Scraper 是一个 Chrome 扩展,具有有限的数据提取功能,但它有助于进行在线研究,并将数据导出到谷歌电子表格。该工具适用于初学者以及能够使用 OAuth 轻松地将数据复制到剪贴板或存储到电子表格的专家。Scraper 是一个免费的网络爬虫工具,它可以在你的浏览器中工作,并自动生成较小的 XPaths 来定义要爬行的 URL。它可能不提供包罗万象的爬行服务,但新手也不必处理混乱的配置。

4。文档解析器

起价:25 美元/月/用户

Docparser 允许您从 PDF 和扫描的文档中提取特定的数据字段,将 PDF 转换为文本,PDF 转换为 JSON,PDF 转换为 XML,将 PDF 表格转换为 CSV 或 Excel 等。

5。可视刮刀

VisualScraper 是另一个伟大的免费和非编码的 web scraper,具有简单的点击式界面,可用于从 web 上收集数据。您可以从多个网页获取实时数据,并将提取的数据导出为 CSV、XML、JSON 或 SQL 文件。除了 SaaS,VisualScraper 还提供网络抓取服务,如数据传送服务和创建软件提取器服务。

6。数据小屋

起价:2000 美元/月

不需要编码、不需要服务器或昂贵的 DIY 软件,Datahut 是一种完全托管的 web 数据提取服务,它支持从 web 提供随时可用的数据馈送,以帮助快速构建应用程序和进行业务分析。

http://datahut.co

7。WebHarvy

WebHarvy 单用户许可证:129 美元/年

WebHarvy 是一个点击式网页抓取软件。它是为非程序员设计的。WebHarvy 可以自动从网站上抓取文本、图像、URL 和电子邮件,并以各种格式保存抓取的内容。它还提供内置的调度程序和代理支持,支持匿名抓取和防止网络抓取软件被网络服务器阻止,您可以选择通过代理服务器或 VPN 访问目标网站。

https://www.webharvy.com

8。智胜枢纽

许可证:免费

https://www.outwit.com/products/hub

OutWit Hub 是 Firefox 的一个插件,它有几十个数据提取功能,可以简化你的网络搜索。这个网络爬虫工具可以浏览网页并以适当的格式存储提取的信息。OutWit Hub 提供了一个单一的接口,可以根据需要抓取少量或大量的数据。OutWit Hub 允许您从浏览器本身抓取任何网页,甚至创建自动代理来提取数据并根据设置格式化。

9。数据整合

免费版:是

https://www.talend.com

Talend Data Fabric 是一个集成平台,可让客户在内部、云中或使用大数据运行时,在批处理、流和实时之间无缝移动。它可以通过安全的云集成平台即服务(iPaaS)轻松连接大数据源、云应用程序和数据库。

10。Dexi.io

*【https://dexi.io/ *

作为一个基于浏览器的网络爬虫,Dexi.io 允许你从任何网站抓取基于你的浏览器的数据,并提供三种类型的机器人供你创建抓取任务——提取器、爬虫和管道。免费软件为您的网络抓取提供匿名网络代理服务器,您提取的数据将在 Dexi.io 的服务器上托管两周,然后数据将被存档,或者您可以直接将提取的数据导出到 JSON 或 CSV 文件。它提供付费服务来满足你获取实时数据的需求。

数据分析工具

1。网络焦点

由信息建设者

Information Builders WebFOCUS 是业内最灵活、最普及的 BI 和分析平台,能够向任何和所有业务利益相关方提供广泛的治理分析工具、应用程序、报告和文档。

www.ibi.com

2。迷你标签 18

通过 Minitab

起价:1,495.00 美元/一次性/用户

Minitab 是全球用于质量改进和统计教育的领先统计软件。

3。Stata

由 StataCorp

Stata 是满足您数据科学需求的解决方案。获取和操作数据。探索。想象一下。模型。做出推论。将您的结果收集到可重复的报告中。

https://www.stata.com/

4。SAS/STAT

由 SAS 研究所提供

统计分析系统提供了广泛的统计软件,从传统的方差分析到精确方法和动态数据可视化技术。

https://www.sas.com/en_us/home.html

5。MicroStrategy 企业分析

通过微观战略

全面的企业分析和移动平台,提供全方位的分析和报告功能

www.microstrategy.com

6。想法

CaseWare 国际公司

CaseWare IDEA 是一款全面、强大且易于使用的数据分析工具,可快速分析 100%的数据,保证数据完整性并加快分析速度,为更快、更有效的审计铺平道路。

https://www . caseware analytics . com/products/idea-data-analysis

7。NVivo

QSR 国际公司

NVivo 不仅仅是一个组织和管理数据的工具,它还可以帮助您以不同的方式思考您的研究,发现更多信息,并以严格的证据支持所有信息。

*【http://www.qsrinternational.com/nvivo/nvivo-products *

8。ATLAS.ti

通过科学软件开发

ti 是一个复杂的工具,可以帮助你以创造性的、系统的方式来安排、重组和管理你的材料。

https://atlasti.com/

9。查询表单

通过暴风范围软件

免费版是

QueryStorm 是一个用于 Excel 的开发和数据处理插件。它在 Excel 中提供了 SQL 和 C#支持,使技术人员更容易与电子表格中的数据进行交互。

https://www.querystorm.com/

10。巨嘴鸟托科

由巨嘴鸟托科

Gartner 的评论:Toucan 是一家很好的合作公司。该工具用户友好,易于安装,易于部署,并且在使数据易于理解方面做得很好。这个团队很有帮助,很专业,带你了解他们的敏捷方法,这使得我们能够快速地将项目推出,并把它交给我们的合作者。

https://toucantoco.com/en/

报告工具

1。QlikView

由 Qlik 提供

QlikView 将 ETL、数据存储、多维分析和最终用户界面结合在同一个包中,因此部署速度极快,日常维护也很简单。

www.qlik.com

2。点击报告

敲击声

TapReports 是一个基于云的协作和报告解决方案,允许企业管理与其客户的通信,并为其客户生成可定制的营销报告和交互式销售报告。

https://www.tapclicks.com/

3。IBM Cognos Analytics

由 IBM 提供

IBM Cognos Analytics 是一个内聚的性能管理和商业智能解决方案,具有预算、战略规划、预测和整合功能。

www.ibm.com/products/cognos-analytics

4。Zoho 报道

作者 Zoho

Zoho Reports 是一个自助式商业智能和分析软件,允许您创建有洞察力的仪表板和数据可视化。

*【https://www.zoho.com/reports/ *

5。SAP Crystal Reports

由 SAP Crystal 报告

借助 SAP Crystal Reports,您可以创建功能强大、格式丰富的动态报表,这些报表来自以多种格式、多达 24 种语言交付的虚拟数据源和数据源。

www.sap.com

6。BI360

按求解程序

Solver 专门提供世界一流的财务报告、预算和分析,通过一键访问所有数据源来提高公司的盈利能力。BI360 可用于云和内部部署,侧重于报告、预算、仪表板和数据仓库。

www.solverglobal.com

7。Domo

多莫公司

Domo 是一个基于云的业务管理套件,集成了多个数据源,包括电子表格、数据库、社交媒体和任何现有的基于云的或内部部署的软件解决方案。

https://www.domo.com/product

8。交流记者加

按管理引擎

在大多数使用 Active Directory 技术的公司环境中,Microsoft Exchange 充当所有电子邮件通信的中心。

https://www.manageengine.com/products/exchange-reports

9。伊泽达报道

Izenda 是一个商业智能(BI)平台,支持实时数据探索和报告创建。

https://www.izenda.com/

10。增长 BI 仪表板

Grow 是一款基于云的业务分析和报告解决方案,适合中小型企业。该解决方案允许用户创建可定制的控制面板来监控业务工作流和关键活动。

https://www.domo.com/product

12 项数据科学竞赛/计划

1。卡格尔

Kaggle 是 Alphabet now 的子公司,它是一个预测建模和分析竞赛的平台,统计学家和数据挖掘者在这个平台上竞争,以产生最佳模型来预测和描述公司和用户上传的数据集。

【www.kaggle.com 号

2。克劳代

CrowdAI 是瑞士洛桑联邦理工学院的一个开源平台,用于举办开放数据挑战赛,并深入了解问题是如何解决的。

https://crowdai.com/

3。CrowdANALYTIX

CrowdANALYTIX 是一个众包平台,用于构建由众多数据科学家组成的全球社区构建的定制人工智能解决方案。它也是一个人工智能驱动的平台,用于自动创建零售产品目录的上下文感知产品属性和元标签。

https://crowdanalytix.com/community

4。Datascience.net

Datascience.net 是第一个法语数据科学平台,由一群数据专家于 2013 年推出。它在面临复杂数据中心问题的组织和愿意解决这些问题的最佳数据科学家之间架起了一座桥梁。

https://www.datascience.net/fr/challenge#

5。黑客排名

HackerRank 专注于消费者和企业的竞争性编程挑战,其中开发人员通过尝试根据提供的规范编程来竞争。HackerRank 的编程挑战可以用多种编程语言(包括 Java、C++、PHP、Python、SQL、JavaScript)解决,并且跨越多个计算机科学领域。(维基百科)

https://www.hackerrank.com/contests

6。创新

InnoCentive 是一家开放式创新和众包公司,其全球总部位于马萨诸塞州沃尔瑟姆。它们使组织能够将他们未解决的问题和未满足的需求(被框定为“挑战”)公开给大众来解决。

https://www.innocentive.com/ar/challenge/browse

7。顶部编码器

Topcoder 是一家众包公司,拥有一个由设计师、开发人员、数据科学家和有竞争力的程序员组成的开放的全球社区。Topcoder 向公司、中型企业和小型企业客户出售社区服务,并向社区成员支付项目工作报酬。Topcoder 还组织一年一度的 Topcoder 公开赛和一系列较小的地区性赛事。(维基百科)

https://www.topcoder.com/

8。黑客地球

Hacker Earth 是一家位于印度班加罗尔的初创科技公司,提供招聘解决方案。其客户包括 Adobe、Altimetrik、Citrix Systems、InMobi、Symantec 和 Wipro。它有一个有竞争力的编程平台,支持超过 32 种编程语言(包括 C、C++、Python、Java 和 Ruby)。(维基百科)

*【https://www.hackerearth.com/challenges/ *

9。分析 Vidhya

https://datahack.analyticsvidhya.com/contest/all/

10。驱动数据

https://www.drivendata.org/competitions/

11。编码

https://app.codility.com/programmers/challenges/

12。CodaLab

https://competitions.codalab.org/competitions/

原载于www.octoparse.com

面向数据科学家的 9 份重要简讯

原文:https://towardsdatascience.com/9-essential-newsletters-for-data-scientists-e225e4227318?source=collection_archive---------3-----------------------

简讯对 2018 年内容监管的重要性

Conor’s Newsletter

问题是

一段时间以来,数字媒体就是未来,这一点已经很清楚了。然而,只有在过去的几年里,我们才真正体验到大规模数字媒体的后果。虽然假新闻可能因影响力和各种丑闻而占据中心舞台,但问题不仅仅是假新闻。

真正的问题在于区分信号和噪声。

我们不断被信息轰炸,以至于在互联网大小的干草堆中找到隐喻的“价值针”变得越来越困难。

目前这种困境留给我们的问题多于答案。

在一个充斥着点击诱饵标题和假新闻的世界里,我们如何毫发无损地躲过这些地雷?如今,网络上有无穷无尽的内容,哇,我们是不是要筛选所有的内容,并把注意力集中在重要的内容上?

这些无疑是难题。事实上非常困难,每天都有成千上万有才华的人试图解决这些问题。

解决方案

我越来越清楚,这些问题的解决方案都依赖于完善一个高于一切的概念——内容监管。

"内容监管是收集与特定主题或感兴趣的领域相关的信息的过程."

在一个完美的世界里,你不应该仅仅为了找到一个特定主题的真实的、有价值的信息或资源而搜索万维网。这项任务可以而且应该委托给其他人。

在这篇文章的其余部分,我将重点关注我最喜欢的内容管理形式——时事通讯。我们将回顾为什么简讯对数据科学特别有用,然后我将分享我目前订阅的每一份数据科学简讯。

数据科学呢?

由于数据科学技能集的快速增长和多维度性质,简讯可以提供巨大的价值。

这个领域目前没有放缓的迹象。似乎每隔一周就有一个有趣的突破或项目。新技术和技巧也非常普遍。

为了让你的数据驱动技能保持最佳状态,你需要培养一种成长心态并乐于学习新事物。时事通讯是帮助你了解该领域最新动态的最佳方式。

把你订阅的时事通讯想象成一群聪明、专业的精英,他们为你提供值得你花费时间的信息。

幸运的是,对于数据科学家来说,有大量优秀的时事通讯可供研究。你会在下面找到我的订阅列表,没有特定的顺序,关于数据科学、机器学习、人工智能或一般黑客的任何内容。在过去的三年中,这种方法不断被迭代和发展。

作者注:我只订阅了一小部分优秀的时事通讯,所以不要害怕拓展和尝试其他的。此外,如果不符合标准,您可以在一期后退订。没什么可失去的!

[## 数据科学周刊-第 239 期

我们的资源页面。

mailchi.mp](https://mailchi.mp/datascienceweekly/data-science-weekly-issue-927097?e=2c2014787d) [## 获取奥赖利数据通讯-奥赖利媒体

在 1,969 个评级中,平均每五颗星中有四颗保持消息灵通。从业内人士那里获得每周见解,此外…

www.oreilly.com](https://www.oreilly.com/data/newsletter.html?mkt_tok=eyJpIjoiT1dJNU1qUTFaVGd3WTJGaiIsInQiOiJkTmVucm1rTG4wc0R2NVFiTEE3a1wvXC9sRXVLM28yUVpUXC9KaXdUXC93SmplR3B4QkJFc0VCN2VadW85Z3MrYXU3aHZkZmtuc01ZKzNoXC9TVkRzOGI5bFZNUXZSMTVORFhTZ0E4ZnFPVko5R3FwTlY2b2hJaXFMVXROODlJUHBSakluIn0%3D) [## 存档问题|数据灵丹妙药

有关策划的数据科学新闻和工具,请浏览 Data Elixir 的时事通讯档案。

dataelixir.com](https://dataelixir.com/issue/?num=187?sid=ShnzrOJ#start) [## 玛奇纳数据-第 133 期

这里有一个新的重要的东西:TD= DP + MC 时间差分学习:结合动态规划和蒙特卡罗…

www.getrevue.co](https://www.getrevue.co/profile/datamachina/issues/data-machina-issue-133-119481?utm_campaign=Issue&utm_content=view_in_browser&utm_medium=email&utm_source=Data+Machina) [## 模式:分析调度

注册我们的每周时事通讯,里面充满了关于数据、数据科学和分析的相关文章。

about.modeanalytics.com](https://about.modeanalytics.com/newsletter/?utm_source=dispatch-send&utm_campaign=dispatch-subscribe&utm_medium=email&mkt_tok=eyJpIjoiTVRRNFpURXhNbVF5TUdFeiIsInQiOiIrbjV5Y2V0K05FTWV5WURPWEFZQ1BDRUI1bnRTZm1DTEt1a1o0dWgyb015WjJhZUJiK2JjcW1zMDJJQTMyN0hSNFpmdmZWQVI1TnNpaVVYc3pvZGVRSTh3Nk1jU0NyVFRDM2kraVwvZjJXTm5rUENYNm5mTEhUMWVpWGd2XC9STndRIn0%3D) [## 争夺机器学习霸权的国家

“工业机器人能够杀死一个人....[但是]传感器、计算和软件的进步正在改变…

mailchi.mp](https://mailchi.mp/usejournal/deception-964925?e=8489f0e7ea) [## 嵌入式 ML。值得信赖的分析。ML @ Twitter。雪花& BigQuery。[DSR 第 140 位]

数据科学综述- ❤️想要支持我们吗?转发这封邮件给三个朋友!🚀从一个朋友那里转发来的…

roundup.fishtownanalytics.com](http://roundup.fishtownanalytics.com/issues/embedded-ml-trustworthy-analysis-ml-twitter-snowflake-bigquery-dsr-140-119218) [## 黑客新闻摘要

我们会定期发送电子邮件,内容包括黑客新闻,这样您就不会经常分心,并且可以随时了解…

www.hndigest.com](https://www.hndigest.com/) [## Kaggle 时事通讯:音频样本 GAN、MDPs 教程和 CERN 竞赛指南

你好!复制研究论文是提高机器学习技能的一种有益方式。但是实践可以是…

us1.campaign-archive.com](https://us1.campaign-archive.com/?u=e4c8fb8b43860678deab268e5&id=c810091291&e=abeaa8fb3e)

包扎

感谢阅读!如果你喜欢这篇文章,请继续向鼓掌按钮展示你的爱。对更多的帖子感兴趣吗?请确保关注我并订阅下面的我的简讯以接收任何新内容。更多关于我和我在做什么的信息,请查看我的网站。

A/B 测试:中心极限定理的重要性

原文:https://towardsdatascience.com/a-b-testing-the-importance-of-central-limit-theorem-362f6843bf55?source=collection_archive---------12-----------------------

数据分析需要准确甚至尊重的数据处理。当 AB 测试已经完成,并且已经收集了统计上显著数量的数据时,就到了确定获胜者的时候了。然而,在分析之前,清理和准备 AB 测试数据集至关重要。此外,研究数据的性质和特征并选择合适的统计评估方法也是极其重要的。

中心极限定理是处理数据和样本的基本要素。没有对中心极限定理的理解,一般情况下就不可能形成和评价 A/B 测试样本和数据分析。在本文中,我将解释这个定理的实际好处及其在 A/B 测试中的重要性。

中心极限定理是分析师装备中的有力工具。

一些定理论文

  • 从任何总体中形成大的随机样本倾向于按照正态律分布其平均值,并且接近我们从中取样的一般总体的平均值,而不管一般总体的分布形式如何。即使总体分布是指数分布,多重随机样本抽取也趋向于正态分布。
  • 大多数样本的平均值将足够接近总体的平均值。究竟什么应该被认为是“足够接近”是由标准误差决定的。
  • 样本平均值距离总体平均值超过两个标准误差的可能性相对较小,样本平均值距离总体平均值超过三个或更多标准误差的可能性极小。
  • 一些结果纯粹是随机的可能性越小,我们就越能确定有其他因素的影响。

假设我们启动了一个实验,目标度量是平均检查。零假设是对照组和实验组之间的平均检查值没有差异。另一个假设是,差异是存在的。

众所周知,小样本量会导致对统计数据的不准确评估。根据大数定律,样本量越大,样本均值越接近总体均值。这意味着,为了更准确地评估总体均值,我们需要足够大的样本。

这可以通过下面的图表来理解,图表显示随着样本量的增加,样本均值越来越接近总体均值:

我们可以使用 bootstrap 来确定指数分布平均检查数据的置信区间。我们可以看到,算术样本平均值的平均值大约等于从中提取统计数据的样本平均值。标准偏差变小了,因为观察值现在尽可能接近真实的总体平均值。

在这种情况下,平均值的标准偏差是之前绘制的置信区间的标准误差。现在,使用置信区间,我们可以评估统计数据。这是中心极限定理的主要实用价值之一。

如果目标是获得更精确的均值估计,那么有必要最小化方差。价差越小,平均值越准确。要使均值的标准差足够小,需要足够大的样本量。

底线

上面的例子假设我们对分布的形式有所了解。在现实中,有许多情况下,观测值不能用任何分布规律来解释。这些情况很可能与异常值有关。伦理问题是,将数据调整到所需的分布形式,以获得充分的评估或保持原样。在 A/B 测试中,这个决定取决于假设、抽样和度量。在某些情况下,剔除离群值是有意义的,但在另一种情况下,考虑“鲸鱼”是值得的。

例如,Bootstrap 在处理异常值时并不完美。看看如果我们将值 100 和 1000 添加到要重新采样的样本中会发生什么

结论

为了执行稳健的数据分析,了解统计基础知识至关重要,否则,获得误导性结果的风险极高。在具有非正态分布的数据集上使用适用于正态分布数据的评估方法会导致做出错误的决策。

下一步是什么

在接下来的文章中,我们将回顾哪些指标通常具有正态和非正态分布形式,以及在每种情况下应该应用什么统计标准来测试假设。

最初发表于【awsmd.com】

闯入数据的坏蛋指南

原文:https://towardsdatascience.com/a-badasss-guide-to-breaking-into-data-5d1a7258ef4e?source=collection_archive---------15-----------------------

一个由环境工程师转变为数据科学家的故事

这不是我的故事。

这是一个关于数据科学家、数据战略家、培训师和技术业务教练的故事,他激励了数据领域的许多专业人士。她是莉莲·皮尔森数据狂热的创始人和 LinkedIn Learning 的讲师——她还写了几本书,为数据科学的初学者提供指导。

如果你想在数据领域进一步发展自己的事业,或者想在数据科学领域成为一名成功的企业家,那么她写的《一个坏蛋进入数据的指南》是另一部杰作,强烈推荐。

为什么我觉得这本书是必读书?

Book — A Badass’s Guide to Breaking Into Data

简单。书是 实用 。没什么特别的。

尽管提供的内容很简短,但它实际上会分解为对您真正重要的内容,即作为一名有抱负的数据专业人员,从最佳资源中学习,以及如何一步一步地建立您的产品组合和个人品牌。

令我惊讶的是,这本书甚至更进一步,向你展示了数据专业人士在不同的社交媒体上应该关注哪些技术影响者。我就想,什么?真的吗?Lillian Pierson采取的大规模行动不仅帮助人们从最好的资源中学习,也帮助人们从行业中最优秀的人那里学习,这绝对是鼓舞人心的!

建立一个数据科学博客

(Source)

事实上,最吸引我注意力的章节是如何建立一个数据科学博客。

对我来说,这一切都可以归结为一个词——分享。

思维的类比——假设您分析了一个数据集,得出了一些有趣的结果,从而产生了见解和行动计划。但是最后,你没有机会向利益相关者展示你的结果,或者,你的分析根本没有听众给你反馈。

所以问题是——你做过分析吗?

嗯…在你内心深处,你知道你花了很多时间来分析数据集,但机会没有敲门让你分享和展示结果。

回到写你的数据科学博客。尽管您可能有突破性的解决方案或从数据集获得的见解来解决问题,但如果解决方案孤立存在,什么也不会发生,因为没有人知道它。

分享。这是打开在数据领域获得成功的机会之门的钥匙。人们通过把你的学习历程或分析放入 词语 中来了解你做了什么和你有什么能力。通过分享,你也可以向他人学习。

结论

感谢您的阅读。希望你会发现这本书很有用,我很想听听你从内容中学到了什么,以及你将如何应用这些概念。在下面留下你的评论吧!

这里 可以免费获得电子书

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

关于作者

Admond Lee 现在的使命是让每个人都能接触到数据科学。他正在帮助公司和数字营销机构通过创新的数据驱动方法,利用可操作的见解实现营销投资回报。

凭借其在高级社会分析和机器学习方面的专业知识,Admond 旨在弥合数字营销和数据科学之间的差距。

如果你想了解更多关于 Admond 的故事、数据科学服务以及他如何在营销领域帮助你,请查看他的 网站

你可以在 LinkedInMediumTwitter脸书上和他联系。

[## 阿德蒙德·李

让每个人都能接触到数据科学。Admond 正在通过先进的社交分析和机器学习,利用可操作的见解帮助公司和数字营销机构实现营销投资回报。

www.admondlee.com](https://www.admondlee.com/)

可分卷积的基本介绍

原文:https://towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728?source=collection_archive---------0-----------------------

任何人只要看一看 MobileNet 的架构,就会毫无疑问地遇到可分卷积的概念。但那是什么,它和普通的卷积有什么不同?

有两种主要类型的可分离卷积:空间可分离卷积和深度可分离卷积。

空间可分卷积

从概念上来说,这是两个中较容易的一个,并且说明了将一个卷积分成两个的想法,所以我将从这个开始。不幸的是,空间可分卷积有一些明显的限制,这意味着它在深度学习中没有被大量使用。

空间可分卷积之所以如此命名,是因为它主要处理图像和内核的空间维度:宽度和高度。(另一个维度,即“深度”维度,是每个图像的通道数)。

空间可分离卷积简单地将一个核分成两个更小的核。最常见的情况是将 3x3 内核分为 3x1 和 1x3 内核,如下所示:

Image 1: Separating a 3x3 kernel spatially

现在,我们不是用 9 次乘法进行一次卷积,而是用两次卷积,每次 3 次乘法(总共 6 次)来达到相同的效果。随着乘法运算的减少,计算复杂度降低,网络能够运行得更快。

Image 2: Simple and spatial separable convolution

可以在空间上分离的最著名的卷积之一是 Sobel 核,用于检测边缘:

Image 3: Separating the Sobel kernel

空间可分离卷积的主要问题是,不是所有的核都可以被“分离”成两个更小的核。这在训练期间变得特别麻烦,因为在网络可以采用的所有可能的核中,它最终只能使用可以分成两个更小的核的微小部分中的一个。

深度可分卷积

与空间可分离卷积不同,深度可分离卷积与不能被“分解”成两个更小内核的内核一起工作。因此,它更常用。这是在 keras.layers.SeparableConv2D 或 tf.layers.separable_conv2d 中看到的可分离卷积类型。

深度方向可分离卷积之所以如此命名,是因为它不仅处理空间维度,还处理深度维度——通道的数量。一个输入图像可能有 3 个通道:RGB。经过几次卷积后,一幅图像可能有多个通道。您可以将每个通道想象成该图像的特定解释;例如,“红色”通道解释每个像素的“红色”,“蓝色”通道解释每个像素的“蓝色”,“绿色”通道解释每个像素的“绿色”。具有 64 个通道的图像对该图像有 64 种不同的解释。

与空间可分离卷积类似,深度方向可分离卷积将一个核分割成两个独立的核,进行两种卷积:深度方向卷积和点方向卷积。但首先,让我们看看一个正常的卷积是如何工作的。

正常卷积:

如果你不知道从二维角度看卷积是如何工作的,请阅读这篇文章或查看这个网站

然而,典型的图像不是二维的;它也有深度以及宽度和高度。假设我们有一个 12×12×3 像素的输入图像,一个大小为 12×12 的 RGB 图像。

让我们对图像进行 5x5 卷积,没有填充,步幅为 1。如果只考虑图像的宽度和高度,卷积过程有点像这样:12x12 — (5x5) — >8x8。5x5 内核每 25 个像素进行一次标量乘法,每次产生 1 个数字。我们最终得到一个 8×8 像素的图像,因为没有填充(12–5+1 = 8)。

然而,因为图像有 3 个通道,我们的卷积核也需要有 3 个通道。这意味着,每次内核移动时,我们实际上执行 5x5x3=75 次乘法,而不是执行 5x5=25 次乘法。

就像 2d 解释一样,我们对每 25 个像素进行标量矩阵乘法,输出 1 个数字。经过一个 5x5x3 的内核,12x12x3 的镜像会变成一个 8x8x1 的镜像。

Image 4: A normal convolution with 8x8x1 output

如果我们想增加输出图像中的通道数量,该怎么办?如果我们想要 8x8x256 大小的输出呢?

嗯,我们可以创建 256 个内核来创建 256 个 8x8x1 图像,然后将它们堆叠在一起,创建一个 8x8x256 图像输出。

Image 5: A normal convolution with 8x8x256 output

这就是普通卷积的工作原理。我喜欢把它想象成一个函数:12x12x3 — (5x5x3x256) — >12x12x256(其中 5x5x3x256 代表内核的高度、宽度、输入通道数和输出通道数)。不是说这不是矩阵乘法;我们不是将整个图像乘以内核,而是将内核移动通过图像的每个部分,并分别乘以图像的小部分。

深度方向可分离卷积将该过程分成两部分:深度方向卷积和点方向卷积。

第 1 部分—深度方向卷积:

在第一部分,深度方向卷积,我们给输入图像一个不改变深度的卷积。我们通过使用 3 个形状为 5x5x1 的内核来实现这一点。

Video 1: Iterating 3 kernels through a 3 channel image

Image 6: Depthwise convolution, uses 3 kernels to transform a 12x12x3 image to a 8x8x3 image

每个 5x5x1 内核迭代图像的 1 个通道(注: 1 个通道,不是所有通道),得到每 25 个像素组的标量积,给出一个 8x8x1 的图像。将这些图像堆叠在一起会创建一个 8x8x3 的图像。

第 2 部分—逐点卷积:

请记住,原始卷积将 12x12x3 图像转换为 8x8x256 图像。目前,深度方向卷积已将 12x12x3 图像转换为 8x8x3 图像。现在,我们需要增加每个图像的通道数。

逐点卷积之所以这样命名,是因为它使用了一个 1x1 内核,或者说是一个遍历每一个点的内核。无论输入图像有多少通道,该内核都具有深度;在我们的例子中,是 3。因此,我们通过 8x8x3 图像迭代 1x1x3 内核,得到 8x8x1 图像。

Image 7: Pointwise convolution, transforms an image of 3 channels to an image of 1 channel

我们可以创建 256 个 1×1×3 的内核,每个内核输出一个 8×8×1 的图像,从而得到形状为 8×8×256 的最终图像。

Image 8: Pointwise convolution with 256 kernels, outputting an image with 256 channels

就是这样!我们已经将卷积分成两部分:深度方向卷积和点方向卷积。再抽象一点,如果原卷积函数是 12x12x3 — (5x5x3x256) →12x12x256,我们可以把这个新卷积图解为 12 x12 x3—(5x 5x 1 x1)—>(1x1 x3 x256)—> 12 x12 x256。

好吧,但是创建深度方向可分离卷积有什么意义呢?

让我们计算一下计算机在原始卷积中要做的乘法次数。有 256 个 5x5x3 内核移动 8x8 次。也就是 256x3x5x5x8x8=1,228,800 次乘法运算。

可分卷积呢?在深度方向卷积中,我们有 3 个移动 8x8 次的 5x5x1 内核。也就是 3x5x5x8x8 = 4,800 次乘法。在逐点卷积中,我们有 256 个移动 8×8 次的 1×1×3 内核。也就是 256x1x1x3x8x8=49,152 次乘法。把它们加在一起,就是 53,952 次乘法。

52952 比 1228800 少很多。随着计算量的减少,网络能够在更短的时间内处理更多的数据。

但是,这是怎么做到的呢?第一次碰到这种解释,直觉上对我来说真的没什么意义。这两个卷积不是在做同样的事情吗?在这两种情况下,我们通过 5x5 内核传递图像,将其缩小到一个通道,然后扩展到 256 个通道。为什么一个比另一个快两倍多?

思考了一段时间后,我意识到主要的区别是这样的:在正常卷积中,我们对图像进行了 256 次的变换。并且每一次变换使用多达 5x5x3x8x8=4800 次乘法。在可分离卷积中,我们只真正地变换图像一次——在深度方向卷积中。然后,我们把变换后的图像简单地拉长到 256 通道。不必一次又一次地变换图像,我们可以节省计算能力。

值得注意的是,在 Keras 和 Tensorflow 中,都有一个被称为“深度乘数”的论点。默认设置为 1。通过更改此参数,我们可以更改深度方向卷积中的输出通道数量。例如,如果我们将深度乘数设置为 2,每个 5x5x1 内核将给出 8x8x2 的输出图像,使得深度方向卷积的总(堆叠)输出为 8x8x6,而不是 8x8x3。有些人可能会选择手动设置深度乘数,以增加其神经网络中的参数数量,从而更好地学习更多特征。

深度方向可分卷积的缺点是什么?肯定!因为它减少了卷积中的参数数量,所以如果您的网络已经很小了,您可能会因为参数太少而结束,并且您的网络可能无法在训练期间正确学习。然而,如果使用得当,它能够在不显著降低效率的情况下提高效率,这使得它成为一个非常受欢迎的选择。

1x1 内核:

最后,因为逐点卷积使用了这个概念,所以我想谈谈 1x1 内核的用法。

可以在可分离卷积之外使用 1x1 内核,或者说 n 个 1x1xm 内核,其中 n 是输出通道的数量,m 是输入通道的数量。1x1 内核的一个明显目的是增加或减少图像的深度。如果你发现你的卷积有太多或太少的通道,1x1 内核可以帮助平衡它。

然而,对我来说,1x1 内核的主要目的是应用非线性。在神经网络的每一层之后,我们可以应用一个激活层。无论是 ReLU、PReLU、Softmax 还是其他,激活层都是非线性的,不像卷积层。"直线的线性组合仍然是一条直线."非线性层扩展了模型的可能性,这通常使得“深”网络比“宽”网络更好。为了在不显著增加参数和计算的数量的情况下增加非线性层的数量,我们可以应用 1x1 内核并在它之后添加激活层。这有助于给网络增加一层深度。

如果您有任何进一步的问题,请在下面留下评论!别忘了给这个故事一些掌声!

机器学习的基本模型——概述

原文:https://towardsdatascience.com/a-basic-model-for-machine-learning-an-overview-3854ea77e919?source=collection_archive---------6-----------------------

第 1 部分,共 2 部分

如今软件中最常见的“机器学习”形式是算法,可以从中学习并对数据做出预测。 Arthur Samuel 在 1959 年创造了“机器学习”这个术语,意思是赋予“计算机无需明确编程就能学习的能力”

今天,随着计算和数据的大幅增长,机器学习算法被有效地用于狭窄的任务,如“识别”图像,口语和书面语许多其他事情

所有这些都非常有用,但是这种方法不会导致对事物的理解,并且它在学习的方式上有根本性的限制:

  • 通常需要非常大量的数据来获得有用的结果
  • 算法往往是“黑箱”,它们的工作不可内省
  • 新的学习经常迫使整个模型的重建

这与幼儿(和动物)的学习方式毫无相似之处。

  • 从单一的信息中学习(“一次性学习”)
  • 关联和决定是可以解释的
  • 新的学习可以是渐进的也可以是从错误中产生的

麻省理工学院最近的一篇研究论文简洁地描述了“一次性学习”的想法:

“尽管机器学习已经解决了一些人们毫不费力就能解决的相同的分类和识别问题,但标准算法需要数百或数千个例子才能达到良好的性能。虽然用于数字识别的标准 MNIST 基准数据集每类有 6000 个训练样本,但人们可以仅从一个样本中对外国手写字符的新图像进行分类。”

除了一次性学习,从错误中学习的概念也是元素。神经网络在反向传播中使用梯度损失函数,然而这是建立模型的大规模强力迭代的一部分,而不是应用学习的自然部分。

反思做出决定的原因,因为这是由有意识的“T0”缓慢思考“T1”引起的,这与富有成效的学习循环是不可分割的。一个孩子被问到“这个东西属于吗?”她说是的,并能解释原因。她讲述了一个原因。老师解释答案,在这个过程中,学生形成新的理解,或强化现有的概念。

“为什么,”学习者最有力的问题是一个故事。

我在这里的目的是概述一个学习的基本模型,认识到机器和动物的大脑非常不同,但学习的基本概念和过程不一定如此。

学习的“无限循环”

给定角色学习者教师,人/动物的基本学习循环可以总结如下。

a .图案采集:

a.1 学习者获得符号模式(图像、形状……)

a.2 图案被赋予了某种东西(一个名字)

b .模式理解:

b.1 学习者被问及一个模式是否“属于”一个事物

b.2 学员根据所学模式提供最佳答案

教师提供强化或纠正,从而获得更多信息

一个模式不属于某样东西是学习的一个要素。

Cookie Monster on Sesame Street ‘a thing that does not belong’

孩子们通过看到“不属于”的例子来学习。

让我们从想象一个基本学习模型开始,该模型识别基本模式,学习如何识别模式组的区别特征,并确定模式是否可归因于某个事物。

标志

我们用字母做符号,顺序符号一起表示一个比较简单的模式。这是一个最基本的出发点。

符号是一个简单的字符串。

符号:

另一个

符号: x

一个符号内部可以有其他符号,更低层次的抽象。

符号: x,(x1)

更深一层…

符号: x,(x1,(x1a,(x1a!)))

我们可以将一组符号排列成一个符号结构(一个有序的符号列表):

符号结构: a b c

现在让我们想象另一个:

符号结构: x y z i j k

出现的是在机器学习中有用的基本编程类和相关数据结构。符号结构可以包含同类的其他实例,符号结构是一个符号列表,每个符号都可以包含一个符号列表,依此类推。

事物可以被认为是其他事物的具体化

注意:这些例子中使用的字母数字可以是形状、色块,无论什么——它们是象征性的。我们实际上并没有将称为字母 a ,它只是作为一个方便的符号。

模式匹配

模式可以被匹配以产生它们相似性的“面具”(如果有的话)。我们可以使用数学中的技术(集合论)来寻找相似性。

象征结构: a b c 和象征结构: x y c

共享符号: c ,在第三个位置

象征结构: 1 1 9 象征结构:9 8 7 6 5

分享符号: 9

符号结构: 1 0 1 和符号结构: 1 1 1

份额: 1 (位置 0)和 1 (位置 2)。注意位置是从零开始的。

因为模式匹配掩码是符号结构的列表,所以它们可以与其他掩码进行模式匹配,以模式列表简化为公共特征。在集合论中,这被称为幂集的交集。

the intersection of a powerset

模式归属

现在让我们想象一个符号模式可以被赋予一个属性,也就是说我们将一个模式与某个“事物”联系起来或者不联系起来。归属的性质,就目前而言,将是“”,但显然可能是其他方式。

注意:我们现在将符号模式表示为有序的 [ 符号列表 ]

符号结构:【a b c】a‘foo’**

符号结构:【x y z I j k】不是一个‘foo’**

这是幼儿常用的基本学习方法。他们看到一只兔子的照片,听到“兔子”,他们看到另一只兔子的照片,再次听到这个词。一张袋鼠的照片不会发出“兔子”的声音。孩子正在从小数据中逐渐学习。

当然,一只兔子的图像是一个比单一字母符号复杂得多的符号,但它们都是象征性的。

只有和孩子们在一起,我们才有最好的机会研究逻辑知识、数学知识、物理知识等等的发展。—让·皮亚杰

在我们的学习模型中接下来发生的是模式的识别,其中固有的是识别模式中的区别特征

模式和显著特征

假设向您展示了以下符号模式,为了方便起见,再次使用字母符号(忽略字母的含义)。

象征结构: 【公元前】

符号结构:【x y c】

符号结构:【n o c】

你被告知这些模式代表了事物“foo”,也就是说,它们每个都带有后缀“is a‘foo’”

‘foo’的特点是什么?

答:最后一个位置的‘c’符号。

再:“喷火”是:

象征结构:【x b c c a】****

象征结构:【x c c y】****

符号结构:【y n c c x】****

****‘foo’有什么特点?

答:‘c c’符号的共同存在。这种符号组合本身就是象征性的。你可能也注意到了所有的模式都有一个‘x’****

如果你随后看到另一种模式:

象征模式:【x p q n c c o p】****

你可能会断言,根据你的理解,这也是一个“foo”。你可能是对的,也可能是错的,但是你断言的基础是存在被称为的属性的模式的区别特征。

事物实例中固有的符号模式成为模式匹配的基础。

为什么你认为那是一个“foo”?

因为它既展示了‘c c’图案,也展示了在所有其他被识别为‘foo’的图案中看到的‘x’图案。

当你浏览了上面的模式并理解了给出的问题时,你的大脑有意识地去寻找共同的模式。您浏览了前两个模式,注意到它们都以‘x’符号开始,然后立即注意到第三个模式缺少这个特性,但仍然包含那个‘x’符号(AND 构造)。快速重新扫描显示,所有 3 个图案都包含‘c c’,您可能会将这一对视为一个集合符号(不再需要 2 个单独的符号)。

再做一次,并在过程中意识到你的心理过程。在推理中反省自己的思维过程,或者所谓的‘慢思考’,并不困难。

现在你得到了另一种模式,即‘foo’

象征结构:【I t c c o v】****

现在【foo】的特点是什么?

答:‘c c’符号结构的存在是区别特征。符号“x”现在不再是一个显著的特征。

你对‘foo’有了更多的了解。以前被认为是显著特征的东西立即被抛弃了。当然,符号‘x’仍有可能在‘foo’的模式匹配中发挥一些作用,但让我们暂时把它放在一边,坚持基本原则。

有可能用与或逻辑来表达区别特征。如果属性的符号结构被放入子组中以维持幂集交集,就会出现这种情况。

从反面例子中学习

到目前为止,我们已经了解到“foo”由几种符号模式表示:

‘foo’:

符号结构:【x b c c a】****

象征结构:【x c c y】****

象征结构:【y n c c x】****

象征结构:【x p q n c c o p】****

符号结构:【I t c c o v】****

现在假设你在上面的级数中被告知符号模式:【x p q n c c o p】不是‘foo’,你被给了几个其他的模式代表一个事物不是‘foo’。

****不是‘foo’:

象征结构:【x p q n c c o p】****

符号结构:【o p a t g】****

象征结构:【w q o p I】****

不‘foo’的区别特征似乎是‘o p’符号。

现在我们对一个符号模式是否是“foo”有了更强烈的感觉。

抽象

对于符号来说,有抽象是很常见的,对于模式匹配来说,在抽象的层次上形成是很常见的。

符号: 梗,(狗)

符号: 鳟鱼,(鱼)

符号: 乌鸦,(鸟)

符号: 知更鸟,(鸟)

象征结构: [(梗、[狗])、(鳟鱼、[鱼])、(乌鸦、[鸟])】

符号“知更鸟”(一种鸟)应该与包含“乌鸦”(另一种鸟)的符号模式相匹配(在动物类型的抽象层次上)。

可以有几个抽象层,每个层中有多个符号。可以在模式的转换中建立新的底层数据,产生额外的模式匹配机会。

机器学习算法和认知系统

常用的 ML 算法缺乏这些基本的学习品质:一次性学习、内省、应用学习循环。而常用的数学库,包括那些有集合论支持的,缺乏实现我们这里所描述的功能和数据结构。

你在文本编码解码中使用的递归 LSTM 神经网络不能告诉你为什么它提供了某个术语,也不能在它出错时进行纠正。它的模型必须从头开始重建,通过数十万次数据迭代来微调它的许多突触权重。

用于识别手写数字的“最近森林”算法或卷积 ANN 也有同样的缺陷。它不能说明为什么有些东西是“8”而不是“7”。它通过查看成千上万的数字,并针对这一特定目的在 10⁶迭代中进行自我调整,来确定一个东西更有可能是“8”而不是另一个数字。

这里概述的学习模式是一个潜在的起点。它提出了一种结构,可以识别图案和表面的区别特征,并对它们进行仔细检查。一种软件系统,它通过练习和问题的过程进行学习,并能够确定一组模式是否可归因于某个事物。一个类和数据结构有助于理解一个事物

德国哲学家马丁·海德格尔写道:“在西方思想过程中占主导地位的对事物实在性的解释早已不言而喻,现在也在日常生活中使用……”

一个事物的实体——一个事物是“围绕着它集合了属性”—马丁·海德格尔

如果我们有一个事物的例子(一只兔子,一封手写的信,一个形状,等等)。)然后我们形成事物是什么的模式。

  • 这是什么东西?有哪些模式被归因于它?
  • 这不是什么东西?
  • 这个东西有什么让它像或者不像别的东西?
  • 我们对这个事物的理解让我们相信另一个事物是相似的还是不同的呢?
  • 关于我们对这个东西的理解,可以讲什么故事?

大多数当前的算法 ML 方法不能导致机器认知,不能导致对事物的理解。学习的基本属性是认知系统的基础。为了让“机器学习”延伸并进化为认知,我们必须首先处理学习的基本过程。

我的希望和意图是让这篇文章引发关于机器学习和表面实现的这些基本方面的建设性对话,以推进这项工作。

****第二部分:一个实现

https://tinyurl.com/yaam8ep6

时间序列预测的贝叶斯方法

原文:https://towardsdatascience.com/a-bayesian-approach-to-time-series-forecasting-d97dd4168cb7?source=collection_archive---------2-----------------------

今天我们将从头开始在 R 中实现贝叶斯线性回归,并使用它来预测美国 GDP 增长。这篇文章基于英格兰银行关于应用贝叶斯计量经济学的非常翔实的手册。我已经把原始的 Matlab 代码翻译成 R,因为它是开源的,并广泛应用于数据分析/科学。我在这篇文章中的主要目标是试图让人们更好地理解贝叶斯统计,它的一些优点,以及一些你可能想使用它的场景。

让我们花一点时间来思考一下,为什么我们首先要使用贝叶斯技术。这样做有几个好处,对于时间序列分析来说尤其有吸引力。使用时间序列模型时的一个问题是过度拟合,特别是在相对较短的时间段内估计具有大量参数的模型时。在这种特殊的情况下,这不是一个问题,但当考虑多个变量时,这肯定是一个问题,这在经济预测中很常见。过度拟合问题的一个解决方案是采用贝叶斯方法,该方法允许我们对变量施加某些先验。

为了理解为什么会这样,考虑一下岭回归(L2 惩罚)的例子。这是一种正则化技术,通过在参数值变大时惩罚我们来帮助我们减少过度拟合(对岭回归的良好解释)。相反,如果我们采用贝叶斯方法来解决回归问题,并使用正态先验,我们实际上是在做与岭回归完全相同的事情。 这里的 是经过推导证明他们相同的视频(真的好课程 BTW)。我们经常喜欢使用贝叶斯方法的另一个重要原因是,它允许我们将不确定性纳入我们的参数估计中,这在预测时特别有用。

贝叶斯理论

在我们开始之前,让我们花点时间来讨论贝叶斯理论的基础以及它如何应用于回归。通常,如果有人想估计以下形式的线性回归:

Linear regression Matrix Form

Normally distributed error

他们将从收集每个变量的适当数据开始,并形成下面的可能性函数。然后,他们会试图找到使该函数最大化的 B 和σ:

Likelihood Function

在这种情况下,通过取该函数的对数导数,并在导数等于零的地方找到 B 的值,可以找到最佳参数。如果我们真的做了数学计算,我们会发现答案是下面的 OLS 估计量。我不会去推导,但在这里是一个非常好的视频推导 OLS 估计的细节。我们也可以把这个估计量想象成 X 和 Y 的协方差除以 X 的方差

OLS estimator

方差的最佳值将等于

variance

其中 T 是数据集中的行数。经典频率主义方法和贝叶斯方法之间的主要区别在于,模型的参数仅基于数据中包含的信息,而贝叶斯方法允许我们通过使用先验来整合其他信息。下表总结了频率主义者和贝叶斯方法之间的主要区别。

那么我们如何利用这些先验信息呢?这就是贝叶斯法则发挥作用的时候了。记住贝叶斯规则的公式是:

Bayes Rule

这里的是一个非常清晰的解释和使用贝叶斯规则的例子。它展示了我们如何将我们的先验知识与证据结合起来,用一个医学例子来形成后验概率。

现在,让我们将贝叶斯规则应用于我们的回归问题,看看我们会得到什么。下面是我们参数的后验分布。记住,这最终是我们要计算的。

Bayes Rule expressed using our model and data

我们还可以更进一步,用更简洁的方式描述 后验分布

Posterior Distribution

这个等式表明,以我们的数据为条件的我们的参数的后验分布与我们的 似然函数 (我们假设它是正态的)乘以我们的系数的 先验分布 (它也是正态的)成比例。分母中的边际密度或 F(Y )(相当于贝叶斯规则中的 P(B ))是一个归一化常数,以确保我们的分布积分为 1。还要注意,它不依赖于我们的参数,所以我们可以忽略它。

为了计算后验分布,我们需要分离出这个后验分布中与每个系数相关的部分。这涉及到计算边际分布,这在实践中通常很难通过分析来完成。这就是被称为 吉布斯采样 的数值方法派上用场的地方。Gibbs sampler 是Markov Chain Monte Carlo(MCMC)的一个例子,它让我们利用条件分布来近似联合边际分布。接下来是如何工作的快速概述。

吉布斯采样

假设我们有 N 个变量的联合分布:

我们想找到每个变量的边际分布。然而,如果这些变量的形式未知,可能很难解析地计算出必要的积分(积分很难!!)。在这种情况下,我们采取以下步骤来实现吉布斯算法。首先,我们需要初始化变量的初始值,

接下来,我们根据其他 N-1 个变量的当前值对第一个变量进行采样。即

然后,我们对第二个变量进行抽样,条件是所有其他变量

,重复这一过程,直到我们对每个变量进行了采样。这结束了吉布斯采样算法的一次迭代。当我们多次重复这些步骤时,来自条件分布的样本收敛到联合边际分布。一旦我们运行了 M 次吉布斯采样器,我们保留的样本的平均值可以被认为是后验分布平均值的近似值。下面是取样器在两个变量作用下的可视化。您可以看到,算法最初是如何从分布之外的点开始采样,但经过一些步骤后开始收敛到分布。

Source: Coursera: Bayesian Methods for Machine learning

既然我们已经讨论了理论,让我们看看它在实践中是如何工作的。下面是使用 Gibbs sampler 实现线性回归的代码。特别是,我将对美国季度国内生产总值(GDP)的同比增长进行 AR(2)模型估计。然后,我将使用这个模型,用贝叶斯框架来预测 GDP 增长。使用这种方法,我们可以使用来自后验密度的分位数,即来自我们算法的保留抽取的分位数,围绕我们的预测构建可信区间。

模型

我们的模型将具有以下形式:

AR(2) Model

我们也可以通过定义下面的矩阵,用矩阵的形式来表达。

上面是一个系数向量,下面是数据矩阵 X。

这给出了上面等式 1 中的形式。正如我已经说过的,我们的目标是近似我们系数的后验分布:

coefficients

我们可以通过计算吉布斯抽样框架内的条件分布来做到这一点。好了,现在这个理论已经过时了,让我们开始用 r 编写代码。

密码

我们需要做的第一件事是载入数据。我从圣路易斯美联储的网站下载了美国的 GDP 增长。我选择 p=2 作为我想要使用的滞后数。这种选择是相当随意的,有正式的测试,如 AICBIC 我们可以用来选择最佳数量的滞后,但我没有使用它们进行分析。那句老话是什么?照我说的做,不要照我做的做。我认为这适用于这里。😄

library(ggplot)Y.df <- read.csv('USGDP.csv', header =TRUE)
names <- c('Date', 'GDP')
Y <- data.frame(Y.df[,2])p = 2
T1 = nrow(Y)

接下来,我们定义 regression_matrix 函数来创建包含 p 滞后 GDP 变量和一个常数项的 X 矩阵。该函数接受三个参数,数据、滞后次数以及真或假,这取决于我们是否需要一个常量。我还在下面创建了另一个辅助函数,它将模型中的系数矩阵转换成一个伴随矩阵。这个函数, ar_companion_matrix 实质上转换一个系数矩阵,如下所示(注意不包括常数项):

matrix of coefficients

转换成一个 nn 矩阵* ,其系数位于顶行,其下是一个(n-1)*(n-1)单位矩阵。以这种方式表达我们的矩阵允许我们计算我们的模型 的 稳定性,这将是我们的吉布斯采样器的重要部分。当我们看到相关的代码时,我会在后面的文章中详细讨论这个问题。

Companion form of matrix

regression_matrix  <- function(data,p,constant){
    nrow <- as.numeric(dim(data)[1])
    nvar <- as.numeric(dim(data)[2])

    Y1 <- as.matrix(data, ncol = nvar)
    X <- embed(Y1, p+1)
    X <- X[,(nvar+1):ncol(X)]
    if(constant == TRUE){
        X <-cbind(rep(1,(nrow-p)),X)
    }
    Y = matrix(Y1[(p+1):nrow(Y1),])
    nvar2 = ncol(X)
    return = list(Y=Y,X=X,nvar2=nvar2,nrow=nrow) 
}################################################################ar_companion_matrix <- function(beta){
    **#check if beta is a matrix**
    if (is.matrix(beta) == FALSE){
        stop('error: beta needs to be a matrix')
    }
    **# dont include constant**
    k = nrow(beta) - 1
    FF <- matrix(0, nrow = k, ncol = k)

   ** #insert identity matrix**
    FF[2:k, 1:(k-1)] <- diag(1, nrow = k-1, ncol = k-1)

    temp <- t(beta[2:(k+1), 1:1])
    **#state space companion form
    #Insert coeffcients along top row**
    FF[1:1,1:k] <- temp
    return(FF)
}

我们的下一段代码实现了我们的回归矩阵函数,并从结果列表中提取矩阵和行数。我们还建立了贝叶斯分析的先验。

results = list()
results <- regression_matrix(Y, p, TRUE)X <- results$X
Y <- results$Y
nrow <- results$nrow
nvar <- results$nvar**# Initialise Priors**
B <- c(rep(0, nvar))
B <- as.matrix(B, nrow = 1, ncol = nvar)
sigma0 <- diag(1,nvar)T0 = 1 **# prior degrees of freedom**
D0 = 0.1 **# prior scale (theta0)****# initial value for variance**
sigma2 = 1 

我们在这里所做的基本上是为我们的 贝塔系数 设置一个正态先验,其均值= 0,方差= 1。对我们来说,我们有前科:

对于我们的方差,我们有先验:

对于 方差参数 ,我们设置了一个逆伽玛先验(共轭先验)。这是用于方差的标准分布,因为它只为正数定义,这对于方差来说是理想的,因为它只能是正的。

Inverse Gamma Prior

对于这个例子,我们任意选择 T0 = 1 和θ0 = 0.1(D0 是我们的代码)。如果我们想测试这些先验的选择,我们可以通过改变我们的初始先验来做稳健性测试,看看它是否显著改变后验概率。如果我们尝试想象改变θ0 的值会产生什么影响,我们会发现,较高的值会给我们一个更宽的分布,我们的系数更可能呈现较大的绝对值,类似于我们的β具有较大的先验方差。

reps = 15000
burn = 4000
horizon = 14
out = matrix(0, nrow = reps, ncol = nvar + 1)
colnames(out) <- c(‘constant’, ‘beta1’,’beta2', ‘sigma’)
out1 <- matrix(0, nrow = reps, ncol = horizon)

上面我们设置了我们的预测范围,并初始化了一些矩阵来存储我们的结果。我们创建了一个名为 out 的矩阵来存储我们所有的抽奖。它需要的行数等于我们的采样器的抽取数,在本例中等于 15,000。我们还需要创建一个矩阵来存储我们的预测结果。因为我们通过迭代以下形式的方程来计算我们的预测:

AR(2) Model

我们将需要最后两个可观测期来计算预测。这意味着我们的第二个矩阵 out1 的列数将等于预测周期数加上滞后数,在本例中为 14。

吉布斯采样的实现

好了,接下来是一段看起来很复杂的代码,但我会一步一步地看,希望之后会更清楚。

gibbs_sampler <- function(X,Y,B0,sigma0,sigma2,theta0,D0,reps,out,out1){for(i in 1:reps){
    if (i %% 1000 == 0){
    print(sprintf("Interation: %d", i))
        }
    M = solve(solve(sigma0) + as.numeric(1/sigma2) * t(X) %*% X) %*%
        (solve(sigma0) %*% B0 + as.numeric(1/sigma2) * t(X) %*% Y)

    V = solve(solve(sigma0) + as.numeric(1/sigma2) * t(X) %*% X)

    chck = -1
    while(chck < 0){   # check for stability

        B <- M + t(rnorm(p+1) %*% chol(V))

        **# Check : not stationary for 3 lags**
        b = ar_companion_matrix(B)
        ee <- max(sapply(eigen(b)$values,abs))
        if( ee<=1){
            chck=1
        }
    }
    **# compute residuals**
    resids <- Y- X%*%B
    T2 = T0 + T1
    D1 = D0 + t(resids) %*% resids

    **# keeps samples after burn period**
    out[i,] <- t(matrix(c(t(B),sigma2)))

    **#draw from Inverse Gamma**
    z0 = rnorm(T1,1)
    z0z0 = t(z0) %*% z0
    sigma2 = D1/z0z0

    **# keeps samples after burn period**
    out[i,] <- t(matrix(c(t(B),sigma2)))

    **# compute 2 year forecasts**
    yhat = rep(0,horizon)
    end = as.numeric(length(Y))
    yhat[1:2] = Y[(end-1):end,]
    cfactor = sqrt(sigma2)
    X_mat = c(1,rep(0,p))for(m in (p+1):horizon){
            for (lag in 1:p){
           ** #create X matrix with p lags**
                X_mat[(lag+1)] = yhat[m-lag]
    }
            **# Use X matrix to forecast yhat**
            yhat[m] = X_mat %*% B + rnorm(1) * cfactor
    } out1[i,] <- yhat
}
    return = list(out,out1)
    }results1 <- gibbs_sampler(X,Y,B0,sigma0,sigma2,T0,D0,reps,out,out1)**# burn first 4000**
coef <- results1[[1]][(burn+1):reps,]
forecasts <- results1[[2]][(burn+1):reps,]

首先,我们的函数需要以下参数。我们的初始变量,在这种情况下,GDP 增长(Y)。我们的 X 矩阵,只是 Y 滞后了 2 个周期,并附加了一列 1。我们还需要我们之前定义的所有先验,迭代算法的次数(reps ),最后,我们的 2 个输出矩阵。

主循环是我们在这里最需要注意的。这是所有主要计算发生的地方。前两个方程 M 和 V 描述了以 B 和σ为条件的正态分布的 后验均值和方差 。我不会在这里推导这些,但如果你感兴趣,它们可以在 Hamilton (1994)的时间序列分析或 Bishop 模式识别和机器学习第 3 章 (尽管符号略有不同)中找到。明确地说,我们的后验参数β的平均值定义为:

我们的后验参数β的方差定义为:

如果我们稍微考虑一下 M 中的第二项,我们可以用最大似然估计来代替 Y_t,这样我们就可以得到

本质上,这个等式表明 M 只是我们的先验均值和β的最大似然估计的加权平均值。我直觉地认为这很有意义,因为我们正试图结合我们先前的信息以及来自我们数据的证据。让我们考虑一下之前的方差,尝试改进我们对这个等式的解释。如果我们分配一个小的先验方差(sigma0),本质上我们对我们的先验选择是有信心的,并认为我们的后验将接近它。在这种情况下,分布将会非常紧密。相反,如果我们在 Beta 参数上设置了一个高方差,情况正好相反。在这种情况下,βOLS 参数的权重将更大。

但是我们还没有完成。我们仍然需要从正确的分布中随机抽取,但我们可以使用一个简单的技巧来做到这一点。要从均值为 M、方差为 V 的正态分布中获取随机变量,我们可以从标准正态分布中抽取一个向量,并使用以下等式对其进行转换。

Draw of B from conditional posterior distribution

本质上,我们通过后验方差(标准差)的平方根来添加我们的条件后验均值和标度。这给了我们来自条件后验分布的样本 B。下一段代码也有一个检查,以确保系数矩阵是稳定的,即我们的变量是稳定的,确保我们的模型是动态稳定的。通过将我们的 AR(2)重铸为 AR(1)(伴式),我们可以检查 特征值的绝对值是否小于 1(只需要检查最大的特征值是< |1|) 。如果是的话,那就意味着我们的模型是动态稳定的。如果有人想更详细地了解这一点,我推荐《数理经济学的基本方法》第 17 章,或者阅读这篇博客文章作为快速入门。

现在我们有了 B 的绘制,我们根据 B 从反向伽马分布中绘制 sigma。从具有自由度的反向伽马分布中采样一个随机变量

和规模

我们可以从标准正态分布 z0 ~ N(0,1)中抽取 T 个变量,然后进行如下调整

z 现在是从正确的反向伽马分布中提取的。

下面的代码将我们提取的系数存储到 out 矩阵中。然后,我们使用这些绘图来创建我们的预测。该代码实际上创建了一个名为 yhat 的矩阵,用于存储我们对未来 12 个时期的预测(因为我们使用季度数据,所以是 3 年)。我们预测提前一步的等式可以写成

Forecast equation

一般来说,我们需要一个大小为 n+p 的矩阵,其中 n 是我们希望预测的周期数,p 是 AR 中使用的滞后数。预测只是一个 AR(2)模型,每个周期都有随机冲击,这是基于我们对 sigma 的提取。好了,这就是 Gibbs 抽样器代码。

现在我们可以开始看看算法产生了什么。下面的代码提取了我们需要的系数,这些系数对应于 coef 矩阵的列。每一行都给出了吉布斯采样器每次采样的参数值。 计算这些变量中每一个的平均值给我们提供了每个系数 分布的后验平均值的近似值。这种分布对于假设检验等其他统计技术非常有用,也是采用贝叶斯方法建模的另一个优势。下面我用 ggplot2 绘制了系数的后验分布。我们可以看到,它们非常类似于正态分布,这在我们定义了正态先验和似然函数的情况下是有意义的。我们参数的后验均值如下:

Posterior Means of Parameters

const <- mean(coef[,1])
beta1 <- mean(coef[,2])
beta2 <- mean(coef[,3])
sigma <- mean(coef[,4])qplot(coef[,1], geom = "histogram", bins = 45, main = 'Distribution of Constant',
      colour="#FF9999")
qplot(coef[,2], geom = "histogram", bins = 45,main = 'Distribution of Beta1',
      colour="#FF9999")
qplot(coef[,3], geom = "histogram", bins = 45,main = 'Distribution of Beta2',
      colour="#FF9999")
qplot(coef[,4], geom = "histogram", bins = 45,main = 'Distribution of Sigma',
      colour="#FF9999")

接下来我们要做的是使用这些参数来绘制我们的预测,并围绕这些预测构建我们的可信区间。

绘制我们的预测

以下是对 3 年 GDP 同比增长的预测。请注意,使用贝叶斯分析使我们能够创建具有可信区间的预测,这对于突出我们预测的不确定性非常有用。请注意,这不同于置信区间,其解释略有不同。如果我们采用频率主义的方法,例如运行一个实验 100 次,我们会期望我们的真实参数值在 100 个实验中有 95 个在这个范围内。相比之下,贝叶斯方法被解释为真正的参数值以 95%的概率包含在这个范围内。这种差异很微妙,但非常重要。

library(matrixStats); library(ggplot2); library(reshape2)**#uantiles for all data points, makes plotting easier** post_means <- colMeans(coef)
forecasts_m <- as.matrix(colMeans(forecasts))**#Creating error bands/credible intervals around our forecasts**
error_bands <- colQuantiles(forecasts,prob = c(0.16,0.84))
Y_temp = cbind(Y,Y)error_bands <- rbind(Y_temp, error_bands[3:dim(error_bands)[1],])
all <- as.matrix(c(Y[1:(length(Y)-2)],forecasts_m))forecasts.mat <- cbind.data.frame(error_bands[,1],all, error_bands[,2])
names(forecasts.mat) <- c('lower', 'mean', 'upper')**# create date vector for plotting**
Date <- seq(as.Date('1948/07/01'), by = 'quarter', length.out = dim(forecasts.mat)[1])data.plot <- cbind.data.frame(Date, forecasts.mat)
data_subset <- data.plot[214:292,]
data_fore <- data.plot[280:292,]ggplot(data_subset, aes(x = Date, y = mean)) + geom_line(colour = 'blue', lwd = 1.2) + geom_ribbon(data = data_fore,
aes(ymin = lower, ymax = upper , colour = "bands", alpha = 0.2))

GDP Forecast

上面的代码计算了我们预测的 16 和 84 个百分点,用作可信区间。我们将这些列与我们的预测相结合,然后使用 ggplot 和 geom_ribbon 绘制数据子集,以绘制预测的间隔。上面的情节看起来相当不错,但我想让这个更漂亮一点。

我发现了一个非常有用的博客帖子,它创建了与英国央行通胀报告非常相似的粉丝图表。我使用的库叫做扇形图,它可以让你绘制出我们预测分布的不同百分位数,看起来比上一张图好一点。

library(fanplot)
forecasts_mean <- as.matrix(colMeans(out2))
forecast_sd <- as.matrix(apply(out2,2,sd))
tt <- seq(2018.25, 2021, by = .25)
y0 <- 2018.25
params <- cbind(tt, forecasts_mean[-c(1,2)], forecast_sd[-c(1,2)])
p <- seq(0.10, 0.90, 0.05)**# Calculate Percentiles**
k = nrow(params)
gdp <- matrix(NA, nrow = length(p), ncol = k)
for (i in 1:k) 
    gdp[, i] <- qsplitnorm(p, mode = params[i,2], 
                           sd = params[i,3])**# Plot past data**
Y_ts <- ts(data_subset$mean, frequency=4, start=c(2001,1))
plot(Y_ts, type = "l", col = "tomato", lwd = 2.5, 
     xlim = c(y0 - 17, y0 + 3), ylim = c(-4, 6), 
     xaxt = "n", yaxt = "n", ylab="")**# background and fanchart**
rect(y0-0.25, par("usr")[3] - 1, y0 + 3, par("usr")[4], 
     border = "gray90", col = "gray90")
fan(data = gdp, data.type = "values", probs = p, 
    start = y0, frequency = 4, 
    anchor = Y_ts[time(Y_ts) == y0-.25], 
    fan.col = colorRampPalette(c("tomato", "gray90")), 
    ln = NULL, rlab = NULL)**# BOE aesthetics**
axis(2, at = -2:5, las = 2, tcl = 0.5, labels = FALSE)
axis(4, at = -2:5, las = 2, tcl = 0.5)
axis(1, at = 2000:2021, tcl = 0.5)
axis(1, at = seq(2000, 2021, 0.25), labels = FALSE, tcl = 0.2)
abline(h = 0)
abline(v = y0 + 1.75, lty = 2) #2 year line

GDP Forecasts

结论

我们的预测似乎相当乐观,平均预测到 2021 年,年增长率在 3%左右。似乎还有相当大的上行风险,95%的可信区间将升至近 5%。图表显示,在这段时间内出现负增长的可能性极小,这很有意思,从美国目前的扩张性经济政策来看,这可能是正确的。正如你所看到的,置信区间相当大,表明在预测期内 GDP 增长值的分布范围很广。我们可以使用许多其他类型的模型来代替,并可能获得更准确的预测,如贝叶斯 VAR 或使用许多其他经济变量的动态因素模型。虽然可能更准确,但这些模型更复杂,也更难编码。为了介绍贝叶斯回归并获得对这种方法的直观理解,AR 模型是完全合理的。

我认为重要的是要说明为什么我选择从头开始做这种模型,而做这种类型的预测显然有更容易和更少痛苦的方法。我倾向于发现,对我来说,学习像这样复杂的东西的绝对最好的方法是尝试从头开始复制算法。这确实强化了我在理论上所学到的东西,并迫使我将它应用到实际环境中,如果我没有完全理解这个主题,这可能会非常困难。我还发现,这种方法让事情在我脑海中停留的时间更长。实际上,我可能不会使用这段代码,因为它很容易出错,而且很难调试(正如我已经发现的那样),但我认为这是一种非常有效的学习方法。虽然这显然比仅仅找到一个 R 或 Python 的包要花更多的时间,但花时间一步一步地完成它的好处最终会更大,我会向任何试图学习或理解不同模型和算法如何工作的人推荐它。

好了,伙计们,这篇文章到此结束。我希望你们都喜欢它,并了解了一些贝叶斯统计以及我们如何在实践中使用它。如果您有任何问题,欢迎在下面发帖或通过 LinkedIn 与我联系。

下面的课程很好地概述了机器学习中使用的贝叶斯方法,我推荐给任何想提高这方面知识的人。

推荐课程: 贝叶斯机器学习方法

链接到 Kaggle 内核:https://www.kaggle.com/dfoly1/bayesian-regression-blog-post

注意:这篇文章中的一些链接是附属链接。

posted @ 2024-10-13 15:23  绝不原创的飞龙  阅读(565)  评论(0)    收藏  举报