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

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

女性如何在数据分析领域重新开始职业生涯

原文:https://towardsdatascience.com/how-can-women-restart-their-career-in-data-analytics-6d2fe24378be?source=collection_archive---------19-----------------------

办公时间

休息一段时间后,缓慢而稳定地前进——这个行业会一直存在下去

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

照片由丹妮尔·麦金尼斯Unsplash 上拍摄

我的职业生涯始于一名数据分析师。作为一个印度人,来自一个保守的中产阶级家庭,我的父母很早就和我结婚了。我搬到了我丈夫在印度南部的城镇,并放弃了工作。两年后,我成为了一名母亲,我的职业生涯刚刚开始。我没有一个强大的支持系统来帮助我抚养我的孩子,正如许多印度人会同意的那样,印度的日托设施甚至在城市里都达不到幼儿的标准。女儿 1.5 岁的时候我终于开始工作了。找工作非常困难,因为印度雇主在某种程度上认为职业中断的女性是一个借口,可以努力争取体面的工作和薪水。此外,长时间工作在科技行业是一种常态,因为可悲的是,大多数印度科技行业都在外包,在孟买这样的繁忙城市,每天上下班极其繁琐。

我重新开始已经有 7 年了,虽然这段旅程一直很艰难,但我在职业生涯中做得很好。我正在研究数据分析和数据科学的最新技术,如果我从我的客户和团队成员那里得到反馈,我很了解我的工作。科技行业的女性并不是一个容易的角色,我希望以下来自我的经验的建议能让像我一样也打算重新开始的女性的旅程变得容易:

1。 参加知名学院的全学分课程:

当你计划在分析/数据科学领域重新开始你的职业生涯时,记住这个领域已经很拥挤了。最近,似乎每个人都在谈论数据科学,好像数据从来没有被公司消费过。你必须明白,尽管你可能已经 20 多岁或 30 出头,但你将与一个可能擅长编写 Python、Scala、R 等代码的新人竞争同一份工作。

这些年轻的新生总是有额外的年龄和时间优势,他们会花时间从 Udemy、Coursera、Edureka 等网站上学习多门在线课程。

另一方面,你将在办公室和家庭之间周旋。我的建议是做一个完整的学分课程来获得优势。有许多大学与行业领导者合作提供数据科学方面的课程。我在 BITS Pilani 完成了我的 M.Tech 学位,主修分析学,相信我,没有一门网络课程能像一门完整的学分课程那样带来概念的清晰。

在你的简历上增加一个学位可能不会让你找到你梦想的工作,但是不断发展的技术中的新概念肯定会在你的面试中给你信心。此外,在你休息的时候,如果你觉得你失去了与志同道合、有着相同热情的人的联系,你将有机会与你的同学互动,他们也可以帮助你建立更好的关系网。

2.继续获得认证:

另一件有助于你的简历发光的事情是获得行业认证。虽然增加一个学位会提高你的技能,但在你的 Linkedin 页面上添加徽章和证书会增加你的个人资料被潜在招聘者列入候选名单的机会。

从 Coursera 获得一些数据科学课程的认证可能不会被视为参加 AWS 或 Azure 等行业认证课程,当然这取决于你在分析领域的个人资料。

3。 写博客,参加黑客马拉松,建立个人档案—

虽然上面这一点特别重要,但是我自己一直跟不上。如今,一个优秀的技术招聘人员不会对阅读你的两页简历感兴趣,而是想看看你在 Git hub 上的项目。在 say Medium 上撰写技术博客,在一份优秀的数据科学出版物上发表,在 Kaggle 等广受好评的黑客马拉松排行榜上得分,并在 Git hub 上开展自己喜欢的项目,这些都可以巩固你作为数据科学家的地位。

话虽如此,我了解并同情像我们这样的女性,她们在全职工作和抚养孩子后几乎没有时间。一个变通的办法可能是,不要一开始就太雄心勃勃。慢慢开始,在 Medium 和 Git hub 上创建一个配置文件,但计划在三个月内创建一个技术博客,等等。慢慢地,随着孩子的成长,你会有时间建立自己的档案。

4.选择一个领域,围绕它建立你的专业知识:

在数据分析中,领域理解起着重要的作用,因为更好地理解领域会导致更好地理解手头的数据。简而言之,技术专长和领域知识将帮助你更快地找到你梦想的工作。

在许多领域,领域理解变得至关重要,如银行、医疗保健、生命科学、制药等。这可能是一个你在年龄和经验方面有优势的领域。在休息前坚持你工作的领域,或者如果你想改变你的领域,随意去做,然后围绕那个领域长时间积累你的知识。

5。 从小处着手完全没问题:

休息一段时间后,你可能不会在第一次就找到你想要的职位/公司。这种偏离轨道的情况并不适用于那些休长假的幸运儿,他们相信自己会从离开的地方重新开始。

从小事做起是完全没问题的,即使这意味着满足于一份报酬很低的工作或者不那么有趣的经历。只要你在你感兴趣的技术或角色上工作,其余的就会到位,久而久之。

当我的孩子只有 1.5 岁时,我也面临过类似的情况,我希望在工作场所有更多的灵活性。我在一家非营利性机构担任了 5 年的技术经理,负责构建整个内部数据仓库,并从零开始建立商业智能堆栈。这与我目前从事的数据量工作相去甚远,但也是有意义的。它让我留在了这个行业,我在那里学习 R 编程,同时从事研究项目。此外,我的个人时间被占用了,今天当我回头看时,我觉得如果我没有在非营利组织工作,我会有一份更好的工作,但我真的很满意我花了这么多时间和我的小宝贝在一起,并一直在她身边。

6。 与长远来看会毫不犹豫推荐你的人建立关系网:

再说一次,尽管我认为这一点非常重要,但我并不十分擅长社交。原因,我是一个内向的人,我发现很难接触到人的参考。然而,我正在努力,虽然我不擅长在社交媒体上与人交流,但我与我在一个或另一个项目中工作过的人有着非常好的关系。所以,如果你也像我一样,在会议、训练营、研讨会等场合难以与人交流。,让你的工作和职业道德来说话。相信我,这对建立关系也大有帮助,人们确实会记住一个有很强的概念和专业精神的人。

我是由比我级别高的人推荐的。在我请求他们推荐我的几个月后,他们就记住了我,并不厌其烦地指导我。我加入了“数据科学中的女性”、“编码女性”、“Rladies”等团体。你也可以留意这样的团体,在那里女性在寻找合适的机会时会互相帮助。

7。 通过展示你的软技能来建立你的信誉:

这一点被低估了,但是相信我,在你职业生涯的一个阶段之后,这是关于人际交往能力的。职业道德和职业精神也是像我们这样有经验的专业人士比年轻人更有优势的领域。在这方面,您的团队领导和经理会对您有更高的期望。就项目交付而言,如果你不擅长某项技术也没关系,直到你展现出项目所有权、及时交付和良好的客户沟通等品质。

您的公司想要采用的任何新技术都将经历彻底的 R&D、概念验证、构建原型、成本审批,如果一切顺利,还将经历生产开发的周期。在这些步骤中的每一步,都会有各个层面的互动,需要协商、讨论,有时还会有分歧。将会有一些团队在没有或有一些自动化的情况下做同样的工作。告诉人们你做的都是错的并不容易,流程和技术的改变经常会给人们带来不安全感。这就是你的人际交往技巧至关重要的地方,如果通过谈判你可以让你老板的生活变得轻松,那就再好不过了。毕竟,你职业生涯中的任何中断都不能剥夺你的这种技能。

8。 工作无负罪感:

最后,女士们,不要内疚。你为了生活中重要的事情休息了一段时间,这些事情对别人来说可能重要,也可能不重要,但对你和你的家人来说很重要。你的职业无论多么重要,都不是你生活的全部,它只是你生活的一部分。所以,不管面试时雇主有多麻木不仁,不管人力资源人员在面试中对你有多势利,永远不要为你的休息时间感到抱歉。

我们女人总是有负罪感,因为不能延长工作时间而内疚,或者因为无论我们多么努力都错过了一些玩耍的日子、生日聚会、家长会而内疚。有些人因你的脆弱而茁壮成长,他们可能是你工作场所或家里的某个人。但在你的旅途中,你也会遇到支持你、重视你、指导你的人。乐观一点,即使事情对你来说进展缓慢,它们很快就会加快步伐。

LinkedIn 正计划增加“全职妈妈”和其他职位,以便父母和保姆更准确地描述他们的就业缺口。许多公司正在努力实现性别包容,并欢迎女性在休息后恢复工作。

希望这个博客也能给你一些有用的建议。祝我所有的分析师同事们一切顺利!!

很高兴收到您的回复和反馈。在 Linkedin 上与我联系!!

如何为您的公司选择最佳的数据分析平台?

原文:https://towardsdatascience.com/how-can-you-choose-the-best-data-analytics-platform-for-your-company-8706b16f4693?source=collection_archive---------51-----------------------

知道选择“有史以来最好的工具”的过程…给定已知的事实和偏见

有这么多的数据分析平台,选择一个正确的平台可能是一个漫长的过程,但你如何开始实际操作呢?

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

来源:memegenerator.net

在选择数据分析平台时,要做的第一件事是选择 选择标准 ,以便能够对它们进行比较。

这是非常重要的一步,因为选择的标准将决定最终的选择。在建立自己的选择标准时,以下是你必须考虑的因素:

  • 已知技能、工具、公司战略
  • 每种类型的用户所需的功能:数据分析师、数据科学家、运营人员…
  • 价格

已知技能、工具、公司战略

根据贵公司的已知技能 ,用户友好标准和所需功能将有不同的含义。

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

来源:memegenerator.net—网络奶奶惊喜

对于一个习惯于编码的数据科学家来说,拥有一个可以拖放东西的工具会削弱他的交付能力,因为他可能无法构建库、对代码进行版本化、回到项目的旧版本或者必须学习该工具。

然而,对于没有编码能力的数据科学家来说,拥有一个工具来指导他们可能真的很有帮助。

贵公司的已知工具 会影响您要搜索的连接:云连接、数据库连接…

贵公司的战略 可能会引导您使用某种类型的工具,并带来新的选择标准:SaaS、基于云、开源…

此外,根据公司的战略,你可以为整个公司提供一个工具,或者为每个小的需求/团队提供多个分析工具。所有这些都将影响每一类用户所需的功能

各类用户所需的功能:数据分析师、数据科学家、运营人员…

拥有真正需要的功能并不是一件容易的事情,因为通常情况下,用户并不真正知道什么是可能的,他们需要什么,他们总是试图向自己保证该产品在几年内也会为他们工作。

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

来源:memegenerator.net

在这里,您可以找到一些您一定要解决的功能主题:

  • 连接功能:平面文件、数据库连接、云连接器…
  • 数据准备功能:标记、连接、排序等
  • 数据科学功能:脚本和内置功能
  • 数据可视化功能以及与数据可视化工具的连接
  • 数据存储功能:实时、批量…
  • 安全功能:认证类型、审计功能等
  • 合规性功能:锁定数据、数据可追溯性、数据保留…

产品路线图

我认为这是最难评估的事情之一。一个很好的例子可以说明这有多难,那就是 CentOS 8 的生命周期在 2020 年 12 月被突然从 2029 年推迟到 2021 年初。这是一件需要很多科技手表来预测的事情,我们很容易错过。

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

来源:makeameme.org——路线图:祈祷我不要再改动它了

但是你需要考虑到这一点。选择一个今天对当前需求来说很棒,但是明天就过时的工具绝对不是一个好的选择。你需要了解产品路线图,以检查它们是否与你的公司战略一致。

价格

每个数据分析产品都有自己的价格策略:会话价格、用户数量、用户类型、机器大小、功能,应有尽有!

当然,你也可以拥有没有许可价格的开源产品,但这并不意味着它们是免费的。你有服务器成本,维护成本,等等。

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

来源memegenerator.net—产品价格

因为有许多不同的参数,所以您不能总是直接比较它们,比较它们的“简单方法”是检查对于您给定的用例,每个工具将花费您多少。

基于选择的标准比较平台

基于这些精心选择的标准,我们应该能够比较多个平台。然而,比较它们意味着选择比较什么平台。

如果你认为这是一项简单的任务,那就看看数据和人工智能领域吧

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

来源https://mattturck.com/data2020/—数据&艾景观 2020

对于这个任务,到目前为止我唯一觉得可靠的是:

  • 查看 Gartner 魔力象限
  • 查看数据&艾景观
  • 对这个主题做更多的技术观察
  • 与该领域的专家交流:已经做出这一选择的人和公司。

所有这些都会给你正确的知识,使你能够选择你应该比较的工具。如果没有,说明你做的技术观察还不够,多迭代就好了

涉及的团队和可能的偏见

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

来源:imgflip.com——最佳确认偏差

为一家公司选择工具并不是一件容易的事情,因为倍数偏差会造成干扰,而且很难克服所有这些:

  • 确认偏差:当我们忽略挑战我们原有信念的信息时
  • 当我们更多地基于感觉而不是证据时
  • 结果偏差:当我们忽略一些决策过程,过度关注结果时。例如,我们可以关注这样一个事实,即我们将拥有一个产品的完整堆栈,而忽略一些想要的功能

我发现有一种方法可以帮助克服这种偏见,那就是尝试为多个人提供反馈,建立一个反馈循环。

要做的最后一个艰难决定

现在我们有了选择的标准和我们想要比较的工具,比较过程终于可以开始了!

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

来源https://knowyourmeme.com/photos/1364668-mary-sue:星球大战人物对比|玛丽苏

只要按照步骤去做,就能做出有史以来最好的选择,这太棒了。然而,我认为这是不可能的,我们只能根据已知的事实和已知的偏见做出最佳选择

然而,不进行比较不会给我们带来克服偏见的论据,这意味着我们要靠运气而不是努力工作。

你怎么知道你的推荐系统好不好?

原文:https://towardsdatascience.com/how-can-you-tell-if-your-recommender-system-is-any-good-e4a6be02d9c2?source=collection_archive---------3-----------------------

行业笔记

离线评估的 12 个技巧,带航海弯

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

Charles Frodsham 的航海天文钟,可能是通过“离线”(或陆地)评估开发的。用户照片:Ktr101 — Ladd 天文台,CC BY-SA 4.0,【https://commons.wikimedia.org/w/index.php?curid=45968685

研究推荐系统是一个激动人心的时刻。它们不仅比以往任何时候都更相关,脸书最近投资了 12 万亿参数模型,亚马逊估计他们 35%的购买来自推荐,而且有大量强大的、尖端的技术和代码可供任何人尝试。

因此,工具就在手边,可以用来为用户提供个性化的推荐。问题是,知道它有没有用。

约翰·哈里森正在开发海洋天文钟时,它通过允许船只精确确定其经度而彻底改变了长途海上旅行,他有一个评估问题:在实践中测量该设备的精度需要长途海上航行。同样,评估推荐系统的黄金标准也是昂贵且耗时的:一个 A/B 测试,在这个测试中,随机选择的真实用户会看到新模型,他们的行为会与看到旧模型的用户进行比较。在这两种情况下,如果这是唯一的评估方式,就不可能敏捷地尝试新的想法,或者快速地消除缺陷。

相反,有必要找到一种快速、廉价的方法来评估一个模型。在哈里森的例子中,他总是建造两个时钟,并在他的工作台上测量它们偏离的程度。这给了他一个精确的衡量标准,这反过来又让他能够快速迭代他的设计,并在一艘船出海之前达到非常高的性能水平——事实上,1736 年从伦敦到里斯本的第一次测试旅程表明他的发明是成功的。对于推荐系统,解决方案是离线评估,其中历史数据用于估计用户在某个时间点对摆在他们面前的一组不同的推荐可能会有什么反应,方法是使用他们后来真正做出反应的知识。

有了好的线下评估,当我们做出好的东西时,我们会知道的。相反,如果没有良好的离线评估,整个团队可能会在几周或几个月内完全不知所措。

出于娱乐和学习的目的,我正在为维基百科编辑(又名维基人)建立一个推荐系统,建议他们下一步应该编辑什么文章,这个系统叫做维基百科。我对时间和行动顺序的相互作用特别感兴趣,以预测某人在应用程序或网站上的下一步行动。我正在探索几种尖端的人工智能技术,以充分利用所有这些信息来源,但从我的科学背景来看,我知道首要任务是值得信赖的测量,在这种情况下是通过离线评估。

离线评估需要弄清楚如何建立一个有效的测试集,计算什么度量,以及与什么基线模型进行比较。我将在下面给出我的建议,侧重于对行业实用的东西,而不是学术出版物的更高标准,但首先是关于我的数据集。维基百科没有星级评定,也没有竖拇指/竖拇指,所以这本质上是一个隐含推荐问题,我感兴趣的信号是选择编辑一篇文章。基于用户的编辑历史,以及我可以获取的任何其他信息,我想建立一个他们兴趣的图片,特别是他们最近的兴趣,并学习对个性化的文章列表进行排序。

这是我的维基百科数据的一个例子,给我的瑞士朋友,他叫 Rama 。自 2004 年以来,他对维基百科进行了超过 45000 次编辑,并有非常具体的兴趣,主要是法国海军史和计算机技术。

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

一个用户编辑的原始数据样本,来自维基百科 API

利用维基百科的公开 API,我对英文维基百科所有用户的 100 万条最新编辑进行了采样,结果发现这些数据只有几天的价值。然后,对于样本中的每个编辑,我提取了他们最近一年的编辑,总共 2100 万个数据点。像这样的抽样只捕获在这一时期活跃的用户——首先,这多少会过多地代表最活跃的编辑,但这是我最感兴趣服务的人群。我做了一些基本的清理,例如删除编辑过多或过少的机器人和用户,然后建立我的训练集、测试集和基线推荐器。最终的训练集覆盖了 300 万个维基百科页面(总共约 630 万个页面)和 32,000 个用户。

(回购和笔记本全部代码)

提示 1:为了精心制作你的评估,首先要考虑推荐系统的目的

没有通用的度量或评估程序适用于所有用例。关于离线评估的每一个决定都取决于你使用推荐系统的目的。

你想为一个人做 3 小时的音乐 DJ 吗?你是想让人们注意并点击广告中的产品吗?当搜索者输入“绿色银行”时,你是否试图猜测他们想要什么?你想给订户安排一个合适的约会对象吗?

这将成为回答如下问题的基础:成功的衡量标准是什么?你到底是如何分离出测试集的?在不再有用之前,相关的东西可以放在列表的什么位置?重新展示他们已经感兴趣的物品有多重要?

就我而言,我把维基百科想象成编辑维基百科的副驾驶。一个个性化的列表,你可以浏览一下,为你可能想要编辑的下一篇文章提供思路。我还希望它能够灵活、持续地适应用户不断变化的兴趣。因此,我选择将我的评估集中在学习排序算法预测用户真正编辑的下一个页面的能力上。从短期预测的角度来阐述这个问题,使其成为顺序推荐系统的绝佳候选,在该系统中,用户行动的顺序和时间被明确建模。

与其预测下一个项目,我可以用一整周或一个月的后续活动来预测在那个时期编辑了什么,这将是一个多标签问题(并考虑到 Precision@K 等其他指标),但这将需要更多的数据,增加复杂性,并将重点转移到更长期的预测上。如果我的目标是捕捉用户更深、更持久的偏好,我会再次采用另一种方法,这种偏好预计会在他们与应用程序或工具的关系中持续存在。

要编辑的文章的快速菜单可能不应该超过 20 个项目,所以我选择了奖励将相关项目放在前 20 位的指标。首先,要看的基本指标是 Recall @20(也称为点击率,在这种只有一个相关条目的情况下):这个算法将下一篇文章排在前 20 名的频率有多高?

技巧#2:注意模型和位置偏差

当你构建一个推荐系统来替换现有的解决方案时,会有一个位置偏差(也称为呈现偏差)的问题:当前系统推荐的项目通常会被放在列表的顶部,或者在用户面前更加突出。这使得这些项目在离线评估中具有优势,因为无论客户在实践中如何反应,都有倾向于将它们放在顶部的模型。因此,简单的评估指标对现有系统来说是保守的,改进必须很大才能击败“历史推荐者”(真正向客户展示的排名列表)。

有许多技术可以对抗这种偏见,特别是反向倾向评分,它试图对不公平的优势项目进行建模,然后按比例降低它们的权重。另一种方法,虽然成本较高,但在生产中有一个“拒绝通道”,在那里不提供个性化推荐,并使用它来至少提供评估数据——它可能不会提供足够的数据来进行训练。最终的评估数据可能是呈现给部分用户的真正随机的项目列表,但即使一家公司能够承受可能的性能大幅下降,它也可能不想要那种信任破坏(见下文)体验!

幸运的是,就我而言,我不必太担心位置偏差。编辑维基百科页面是一个相当高强度的行为,所以人们只是因为文章就在他们面前而随意编辑文章是没有问题的。这些编辑与我的推荐系统无关(因为它还不存在),所以我不必担心先前模型偏差(一种呈现偏差)。可能存在受欢迎程度的偏见,人们争相编辑当天的热门话题,但正如我们将在下面看到的那样,这种偏见并不强烈。

技巧 3:小心挑选测试集

对于大多数推荐算法,可靠的评估需要留出一部分数据,并且仅用于该目的。我把我的推荐问题框定为一个预测问题,所以我把我的数据分为最近的行为和之前的所有行为。本帖中的基线算法(比如“最近编辑的”),都是无监督的,所以把历史数据看做“训练数据”,把下一个动作看做测试数据。然而,当将来我评估由监督的算法时,我还需要留出一个随机的用户样本,他们的历史和最近的编辑,来自相同的时间范围。

要点:确保你的训练集不与测试集重叠,并制作两个测试集,一个是开发集,可用于调整你的 hyper 参数,而不是用于最终评估。

技巧 4:使用考虑位置的指标

回想一下@20,前 20 个 rec 包含下一个被编辑的页面的频率,这是比较我的任务模型的一个合理、直接的指标。然而,通过考虑学习排序算法是否将相关项目放在排序的顶部,可以在更细粒度的级别上对其进行比较。这可以通过简单地绘制 Recall @ 1 到 N 来直观地检查,这可以揭示位置差异。

例如,对于数据的子集(“发现集”,稍后将详细介绍),BM25 模型具有较高的召回率@20,但是对于召回率@1,交替最小二乘法得分更高。BM25 的累积优势仅排在榜单的第 12 位。这可能表明 BM25 更擅长标记相关项目,但 ALS 更擅长确保最相关的项目出现在顶部。

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

在“discovery”测试案例上回忆 ALS 和 BM25 算法的@N 性能曲线

这种位置表现可以归结为一个数字,使用像 MRRnDCG 这样的衡量标准来衡量最高位置的表现。如果有多个相关的项目需要检索,并且这些项目可能具有不同的相关性级别,那么 nDCG 是更好的选择。但在我的例子中,在我的测试集中有一个相关项目,它们在数学上是相似的,相当于随着算法将相关项目放在页面的更下方,“得分”急剧下降。报告两者都不会增加什么,所以我武断地决定关注 nDCG@20,如果相关项目总是出现在第一个位置,那么它的得分为 1,如果它从未出现在前 20 位,那么它的得分为 0,在这两者之间有一个按位置加权的反对数下降。果不其然,未过滤的 ALS 在@20 时的召回率比 BM25 低,但在@20 时的 nDCG 较高。

Precision@K 或 MAP 之类的指标对我来说没有帮助,因为只有一个相关的条目。还有一些我没有计算出来的指标,可能对区分算法很有帮助,比如多样性、覆盖率和受欢迎程度偏差。

提示 5:决定你是否关心发现,重新露面,或者两者都关心

许多依赖推荐的公司,如网飞或亚马逊,在他们的界面上为特殊菜单或最近访问过的商品开辟了空间。然后,他们的推荐算法可以专注于向用户提供他们从未互动过,但可能喜欢的项目:发现。另一方面,许多推荐系统只是想向用户显示一个包含有吸引力的个性化项目的列表,包括他们已经参与的重新露面项目:发现加重新露面。这种“单流”推荐的例子包括 Spotify 和 YouTube 播放序列、一些电子商务和广告。

决定重新显示项目的顺序是一个有价值的挑战,其中有许多细微差别,例如时间的作用以及如何决定用户是否考虑了某个项目并拒绝了它。它与电子商务应用程序非常相关,例如重定向。但是有简单明了的基线:简单地按照交互的新近性或者交互的数量来排序。

相比之下,在 discovery 中获得良好表现是一个更加开放的问题,需要努力找到一个合理的基线。首先,即使用户已经购买了数百件商品,也可能有数百万件商品没有购买。

但我真正感兴趣的一个挑战是如何在一个列表中最佳地结合发现和重现。虽然过去与某个项目的接触应该很有分量,但如果它是很久以前的事情或者非常不合时宜(我曾经在 Wayfair 上点击一张俗气的雕花木床,只是为了弄乱我妻子的推荐),一个全新的、有很高信心的推荐有时应该会击败它。

对于我的维基百科推荐任务,我既关心发现,也关心重现,所以我的评估需要反映这一点。许多维基人一遍又一遍地回到相同的文章,我的工具也应该使这变得方便,同时混合新的 rec,它有很高的信心那个人会喜欢。

因此,我将我的测试集划分为发现集和表面重现集,这取决于该用户之前是否编辑过目标最近的项目,并计算了我的所有指标,包括分别在这两个集上的 Recall@20 和 nDCG,以及组合的测试集。

通过查看原始编辑历史,我注意到一些影响我的训练和测试集的东西,那就是人们经常连续编辑两次或更多次文章。通常这些只是为了纠正他们刚刚编辑的一个错别字。在我最初的数据集中,我发现 35%的编辑是针对前一页的,所以推荐最后编辑的文章太容易了。这也不是很有用,因为该页面可能仍然在用户的某个选项卡中打开。因此,我更改了我的训练集和测试集,以删除块中的重复编辑。我重新定义了我的任务和评估,那就是:预测下一篇被编辑的不同的文章。这是一个更困难的任务,我的指标也相应下降。但是,当我考虑推荐质量时,这个任务更能反映我的意思。

在删除运行的编辑后,我的训练集是 30%的重新出现案例和 70%的发现案例。这种混合可能会影响模型的预测,因此通过下采样或上采样来强调其中一个可能是有意义的(也可能值得尝试为每组案例训练单独的模型)。但重要的是分别评估它们,了解整体性能来自哪里,以及是否以牺牲另一个为代价来强调一个。

技巧 6:为比较实现强大、简单的基线

“我建立了一个深度学习推荐器,它有 27 层,5 亿个可训练参数,它很宽,很深,它有 inception,autoencoder 和 transformer 组件。”

“那它做得怎么样?”

“嗯,它有 0.4 nDCG。”

…这样好吗?即使在学术机器学习的细致世界中,也有几个创新模型无法与常识基线相比较的高调案例,当它们与常识基线相比较时,也无法击败它们——这被称为“幻影进展问题。即使这不是一个新的、实验性的模型类型,未能超越简单的基线也是一个很好的迹象,表明实现出现了问题。

确定您是否取得了进展,并理解您的度量标准的唯一方法是实现一些基本的推荐器——选择哪一个也取决于问题。

我想出了三个非常基本的方法来预测下一篇编辑过的文章:

  • **人气:**过去一年最受欢迎
  • **最近:**该用户最近编辑的
  • **频繁:**该用户在去年最频繁编辑的内容

然后我实现了一些稍微聪明一点,但仍然很好理解的协同过滤算法,它有成熟的、易于使用的 Python 包(特别是隐式包):

对于这两个项目,我还计算了“过滤”推荐,删除了用户之前编辑的所有页面,因此推荐了 20 个有价值的纯发现项目。后两者使用了相同的精简训练数据:用户-项目交互计数矩阵(300 万乘 32,000 个条目,由于 SciPy 稀疏矩阵,加载到我笔记本电脑的 RAM 中仍然非常实用!)

实现简单基线的另一个主要好处是,它可以让您在数据准备和模型评估管道的每一步都踢轮胎,本质上是评估评估。如果度量标准,比如说,最近与流行度没有意义,最好在这个阶段找到它,而不是在试图解释一个更复杂的模型的结果时。我发现我的评估中至少有一个大的 bug!

技巧 7:检查“反托拉斯者”

一旦我有了我的第一套推荐算法,我会特意留出时间查看这些推荐——仔细阅读结果,看看它们直观上看起来有多好,并对算法如何因人而异有一个定性的了解。

我特别寻找的是网飞团队称之为“反托拉斯者,或者另一个团队称之为“WTF @ K”的东西:给用户的建议,这些建议来自如此遥远的领域,看起来就像是一个小故障。

对于 Rama 来说,只有人气推荐者有明显的信任破坏推荐,我碰巧知道他对一些话题不感兴趣,比如 Zach Snyder 的正义联盟。ALS 和 BM25 算法严重依赖于表面重建,这对一个 17 年的网站老手来说是有意义的。当新的页面被强制时(“过滤”的推荐),他们通常给出看起来安全的海战和法国船只的选择。在下表中,重新显示的页面以粗体显示,数据集中正确的下一页为红色。

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

七个基线推荐者对 Rama 的 10 大维基百科页面推荐。粗体条目是之前编辑过的,红色是下一次编辑的目标

有趣的是,只有最近的推荐者进入了前 10 名。

除了 Rama,我还滚动了大量其他随机选择的用户的推荐,他们有超过 50 次的编辑。事实证明,就像我的朋友 Rama 一样,许多维基百科编辑都有相对较小的“节拍”,我们至少应该能够为他们提供推荐。例如,编辑金加蒂最关心的是漫威的电影和电视剧,大多数算法都注意到了这一点,尽管方式不同。有几个人还正确预测了金加蒂接下来会编辑《漫威女士》(电视剧)。然而,ALS 的最高推荐是一部相当晦涩的 2003 年西部连续剧《和平缔造者》,它可能会构成一部信任破坏者。

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

7 个基线推荐者对 KingArti 的 10 大维基百科页面推荐。粗体条目是之前编辑过的,红色是下一次编辑的目标

在我的观察中,BM25,当没有被过滤时,比 ALS 更倾向于表面重建,这后来被定量地证实了。

技巧 8:花时间优化你的评估代码是值得的

在这一点上,我会注意到,你将会一遍又一遍地运行评估代码,比你所能想到的还要多,而且你能使这个循环越紧密,找到你的最佳模型的过程将会越快越有趣。现在是时候通过使用 Spark、多处理或 joblib 等并行计算工具来利用所有可用的并行计算了,无论是在云中还是笔记本电脑上的多核。有一些包,比如摩丁,试图让简单的熊猫并行化,所以这些包可能值得一试。

我选择隐式库是幸运的,但也是有目的的,因为它是高度优化的,本质上是并行的。尽管如此,我还是令人尴尬地花了很长时间才意识到有一个recommend_all 函数比在每个例子中运行recommend要快得多。如果您使用 Scikit-learn,许多操作都有一个n_jobs 参数——确保将其设置为-1,它将在您的所有内核上并行化。

除了并行化,这是一个很好的机会来更好地理解事情是如何在幕后计算的,并投资于矢量化和重构依赖于 Pandas 的繁重工作负载,这通常非常慢。当我重新编写我的回忆曲线函数来使用列表理解而不是DataFrame.iterrows()时,每次评估从 2.5 分钟变成了 4 秒钟,这产生了巨大的差异。

提示 9:确保你的评估是可重复的

一种可怕的感觉是回去重新计算指标,发现在相同的测试集上相同的模型产生了完全不同的分数。我防止这种情况的两个建议(我并不总是遵循)是:

  • 同时检入您的模型代码、评估代码和评估结果,以便它们匹配
  • 遵循这种模式,而不是投资于数据版本化工具,将数据集视为一次写入,然后对管道的每一步进行版本控制,以清理和转换数据,从而生成您的训练集和测试集。

技巧 10:调整你的基线,但仅限于某一点

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

对测试集计算的所有基线算法的度量,按 Recall@20 排序。因为不是所有的用户在他们的历史中都有 20 次编辑,所以他们的 rec 被填充了流行的页面,所以最近和频繁的重铺并不是 100%

毫不奇怪,当谈到整体指标时,最近很难被击败——人们确实倾向于一次又一次地返回来编辑相同的页面。但是发现测试子集,其中最近的没有用,更有趣,这些回忆和 nDCG 分数帮助我区分协同过滤技术。

提出改进这些基线的想法是很容易的。例如,我可以采用频繁算法,并尝试将它限制为过去 30 天内最频繁的算法,引入时间元素。对于最近,我只能包括最近编辑的项目,这些项目至少被编辑了 5 次,或者编辑超过了一定的大小,例如 20 个字符。但是这些都是手工调整的试探法,这正是我们在 ML 项目中试图摆脱的。如果你不是在一个试图展示渐进改进的学术环境中,就停留在一些简单易懂的东西上。

然后是稍微不那么愚蠢的基线,它有可调的超参数,但很少——BM25 和 ALS 有两个,尽管我为隐式因子分解添加了 BM25 缩放,增加了两个超参数。但是四个仍然比最简单的神经网络的超参数数量少得多!我运行了几个长网格搜索来挑选最终设置(对于 BM25,K1 = 100,B = 0.25),但并不太担心绝对完美的磨练。

令人惊讶的是,我最看好的算法,使用 ALS 的隐式矩阵分解,在 discovery 中的表现并不是最好的。相反,更简单和更快的 BM25 方法击败了它,无论是在发现集上过滤到新项目时(在 nDCG 上通过 240% )还是在未过滤时的整体集上。我仍然有可能找到超参数的正确组合,甚至是一个不同的包,这将突然提供一个突破,但这只是一个基线,还有更强大的算法我渴望尝试。

受欢迎程度确实非常糟糕——几乎在所有指标上都垫底,这与我通过查看具体例子对这个特定数据集的直觉相符。在维基百科上,人们通常会编辑他们自己的特殊兴趣,而不是插话讨论当天的问题。

技巧 11:有了好的评估指标,你可以尝试简单的解决方案——这可能正是你想要的

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

测试所有算法在 discovery 和 resume 示例集上的性能。虚线展示了交织算法优于许多其他算法的帕累托最优

这听起来可能与技巧 10 关于不要过多修改基线相矛盾,但事实并非如此!

如果我不得不在本周发布一个维基百科推荐算法*,并且它必须擅长发现和重新浮现,我可能会尝试简单地将最佳重新浮现(最近)和最佳发现算法(BM25 过滤)交错,在我进行的过程中删除重复的。对于我的数据集,我发现我得到的离线召回@20 比所有其他模型都好,除了 BM25 在 discovery 中过滤,在表面重建时只比最好的模型差 11%。此外,它显然帕累托优于任何其他试图平衡重新露面和发现的解决方案。*

从 Rama 和 KingArti 的交叉推荐中,我也很清楚它是如何有用的。

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

交叉推荐的 Rama 的 10 大维基百科页面推荐。粗体条目是之前编辑过的,红色是下一次编辑的目标

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

KingArti 对交叉推荐器的 10 大维基百科页面推荐。粗体条目是之前编辑过的,红色是下一次编辑的目标

当然,这是一个黑客,但这个交错输出是一个单流推荐器,很容易得到正确的,产生高度可解释的 rec,并在生产中运行非常快。对于之前没有个性化的第一个系统来说,类似这样的东西可能是一个很好的选择——除非你经历过,否则你不会相信在生产哪怕是最简单的 ML 模型时会有多少意想不到的挑战,特别是如果它需要实时服务 rec 的话。

提示#12:如果可能的话,从用户那里获得定性的反馈

你有没有跟你的 Spotify Discover Weekly 或者你的网飞流派旋转木马顶嘴过?我有!我注意到我和我的朋友在生活中与推荐系统有着亲密的、固执己见的关系。当 rec 好的时候,尤其是当它们不好的时候。我们判断 rec,我们试图找出它们,我们甚至试图有意识地塑造它们,使它们更接近他们想要的和期望的。理想情况下,你可以将这种定性反馈作为你离线评估的一部分。

许多组织没有一个用户体验部门,作为建模者,你可以进入这个部门——尽管这值得一查!但即使如此,从已经是用户的朋友和亲戚那里获得非正式的反馈也是一个好主意,尤其是如果你可以向他们并排展示不同的推荐输出。我给 Rama 发送了这 7 个基线的输出,他写道“BM25_filtered(流行和他熟悉的文章之间)在这些极端之间取得了良好的平衡”,还说“系统显然正在找到与我的兴趣和能力相关的主题。”有趣的是,他还记得编辑过过滤列表中的许多页面,这意味着要么他是在一年多前编辑的,要么就是这么好。

最后一个长期想法是:离线评估可能无法完美预测 A/B 测试结果的原因有很多,但如果你小心谨慎并补偿一些偏差,希望它至少可以预测结果的方向:离线看起来像赢家的模型在线上也是赢家。然而,如果您在多个 A/B 测试的过程中保持认真的记录,您最终可以估计您的离线指标预测测试结果的程度,甚至可以猜测 nDCG 改进的成功程度。最重要的是,它会显示你的离线评估中是否有系统性的偏差。

现在,我的 WikiRecs 基线已经就绪,当我用更强大的机器学习算法击败它们时,我将确切知道我为了这些收益在增加的复杂性和性能方面牺牲了多少。而且,就像海洋计时器的创造者一样,我很清楚更昂贵的验证测试将会如何进行——远在帆展开之前。

CatBoost 如何编码分类变量?

原文:https://towardsdatascience.com/how-catboost-encodes-categorical-variables-3866fb2ae640?source=collection_archive---------8-----------------------

CatBoost 的一个关键要素是从头开始解释

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

钱德勒·克鲁登登在 Unsplash 上的照片

CatBoost 是 Yandex 研究人员开发的一个“相对”新包。它现在非常受欢迎,尤其是在 Kaggle 比赛中,它通常比其他梯度树提升库表现更好。

在其他成分中,CatBoost 的一个非常酷的特性是它可以开箱即用地处理分类变量(这就是该算法的名字)。

当使用一个实现时,真正理解它是如何工作的是很重要的。这是本文的目标。我们将深入研究这种被称为**有序目标统计的技术。**假设你对梯度树提升有很好的理解。如果没有,看看我关于这个主题的文章。

介绍

梯度树提升是 shelve 家族中处理结构化数据最好的算法之一。这个算法家族起源于 boosting 方法,这是过去 25 年中引入的最强大的学习思想之一。1997 年由 Yoav FreundRobert Schapire 推出的 AdaBoost 是这种方法的第一个实例。那年晚些时候 Leo Breiman 意识到提升可以转化为一个具有适当成本函数的优化问题,这催生了 2001 年 Jerome Friedman 的梯度提升。从那以后,带树的 boosting 方法又出现了很多新人,分别是并且按照出现的顺序, XGBoost —极限梯度 Boosting(2014)light GBM(2016)CatBoost(2017)。

目前,梯度提升也可以与神经网络结合使用,或者集成结构化的附加知识,或者只是为了提高性能。在这方面, GrowNet 的作者介绍的一项技术看起来非常有前途,在这项技术中,弱学习者被浅层神经网络所取代。

分类变量编码

不过,有一点需要注意,我互换使用了术语类别、级别或因子(在本文中,它们指的是完全相同的东西)

你可能已经知道,机器学习算法只处理数字特征。所以假设你在尝试预测一辆二手车的开航价格。在可用的特性中,你有汽车的品牌(丰田、本田、福特……)。现在,为了在您最喜欢的梯度提升算法中使用该功能(这肯定会对航行价格产生影响),您需要将品牌转换为数值,因为该算法需要对品牌进行排序,以便枚举拆分可能性并找到最佳的一个。

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

作者图片

好吧…但这听起来更像是对决策树机制内部约束的技术论证。如果我们认真思考一下,当把分类变量转换成数值变量时,我们要做的是什么?好吧,我们可以试着面对,在同样的尺度上,目标的分类价值,来想象这个问题:

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

作者图片

当可视化这样的事情时,我们的目标是揭示在预测目标时出现在类别中的排序强度,这变得更加明显。理想情况下,我们希望在测量中反映有序性以及我们的不确定性。

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

作者图片

在第二个示例中,品牌相对于销售价格的顺序非常清楚。但是这种排序甚至可以更强,如下面的第三个示例所示:

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

作者图片

为了介绍 CatBoost 中使用的技术,我们将首先介绍几种经常与决策树结合使用的分类编码方法。

一键编码

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

作者图片

这个想法很简单。您用虚拟变量(每个不同的类别一个变量)替换分类特征。虚拟变量是指示特定因子存在(值 1)还是不存在(值 0)的变量。您也可以决定其中一个因素不包含虚拟变量。

强烈建议最后一点,以避免多重共线性问题,并且在线性回归的情况下是强制性的,否则 OLS 估计量将不存在(由于完美的共线性,输入矩阵将不是满秩的,Gram 矩阵将不可逆)。

当与线性模型结合使用时,这种技术的好处是您可以为每个级别获得一个系数。每个系数都可以解释为相关类别与参考水平(没有包括虚拟变量的参考水平)相比的影响。

但主要的问题是,每个因素都有一个额外的变量。如果你有很多不同的类别,你将会遭受高维数的问题。在这种情况下,当与决策树或决策树集合一起使用时,因为您的虚拟变量将主要包含零,所以它们将非常不平衡。为分割选择一个特征时,虚拟变量被忽略以支持其他预测值的可能性更大。发生这种情况是因为当选择该特征用于分割时,相关的信息增益(分类情况下的熵减少和回归情况下的目标方差减少)可能会更小。当然,这种说法并不总是正确的,因为分割的性能将高度依赖于目标相对于感兴趣类别的分布。

让我们用一个简化的例子来形象化这个想法。我们有 10 个观察值(10 辆不同的汽车),我们试图预测其售价(在€)。在第一种情况下,每辆车都有不同的品牌,销售价格是均匀分布的。如果我们选择一个虚拟变量进行分割,会发生什么情况:

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

作者图片

在这个例子中,左叶中的目标方差非常高,因此这个分割展示的方差减少是非常蹩脚的(因此这是一个糟糕的分割)。当然,丰田品牌的目标分布可能完全不同,如下所示:

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

在这种情况下,分割更好**,但是如果没有丰田的观察,目标方差将已经非常低**。这意味着除了正确预测一个异常值之外,分类特征的预测能力相当弱。总而言之,我们更感兴趣的是,当特征与目标有意义地相关时,编码方案展现出强大的预测能力

现在让我们看看当我们只剩下两个品牌时会发生什么(坚持销售价格均匀分布的情况)。我们展示了从一个极端到另一个极端的三种不同场景:

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

作者图片

所有这三种情况都导致了相同的平衡树,但是它们在目标方差减少方面并不完全相同。左边的方案提出了最低的方差减少量,右边的方案提出了最高的方差减少量。因此,我们从这个例子中看到,通过减少可能类别的数量,我们现在可以想象目标方差减少很重要的情况。

最后,要记住的是,在大量级别的情况下,使用一次性编码可能不是最好的转换,因为它降低了分类变量在最终模型中的重要性。相反,如果您有少量的级别,这种技术仍然非常有效。这就是为什么在 CatBoost 中,有一个超参数( one_hot_max_size )来配置使用单热编码的类别数量,而不是我们在本文稍后描述的主要技术。

梯度统计

这项技术是由 lightGBM 引入的。基本思想是根据依赖于成本函数的梯度的每个分割处的训练目标对类别进行排序。为了正确理解这种技术,需要理解梯度推进的机制。如果你觉得你需要复习一下,你可以看看我关于这个问题的文章。

首先,不是在训练之前对类别进行一劳永逸的编码,而是在训练过程中进行编码。在节点的每个分裂决策中,类别按照它们在该节点中(相对于目标)的权重的误差量(使用平方梯度作为代理)排序。

请不要认为残差(y-ŷ)等于梯度。只有在执行平方误差损失的回归时才会出现这种情况。如果使用另一个损失,我们不能做出同样的假设(我们依赖伪残差)但想法是完全一样的。

所以我们来直观的解释一下到底是怎么回事。假设我们正在构建一个弱学习器(回归树),并且已经为第一次分割选择了数字特征“里程”:

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

作者图片

现在我们想从树的左侧节点开始构建第二层。在这个例子中,品牌分类特征似乎提出了最佳分割。让我们看看我们是如何得出这个结论的。进行了以下操作:

  1. 我们计算了这个节点的每次观测的电流梯度
  2. 我们按类别对平方梯度求和,并使用该统计量对类别进行排序
  3. 评估了梯度统计的分割可能性。其中一个分割声称总体目标方差减少最好,因此被选中

让我们放大左边部分,看看发生了什么:

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

所以总的来说,这种技术非常好,因为它在每次分裂时根据它们的预测目标对类别进行排序。但是它有一些缺陷,引用 CatBoost 的作者在他们的论文中的话,它增加了:

(i)计算时间,因为它在每个步骤为每个分类值计算统计数据
(ii)基于分类特征为每个分裂存储哪个类别属于哪个节点的内存消耗

随着不同类别数量的增加,这个问题变得更加严重。为了克服这一点,在 lightGBM 中,他们将尾部类别分组到一个集群中,但因此丢失了部分信息。此外,作者声称,在建模之前,最好将基数较高的分类特征转换为数字特征。

请注意,与 lightGBM 中实际发生的情况相比,这个解释是简化的。事实上,他们使用一种称为二阶损耗近似的技术(由 XGBoost 引入)来计算损耗和最佳分割。因此,他们并不完全使用梯度(一阶)对分类值进行排序,而是使用损失的一阶和二阶导数之间的比率。如果你想了解更多关于这一点的信息,可以看看这篇关于这个问题的好文章

目标统计

正如我之前所说的,我们想要从编码方法中得到的最重要的特征之一是,它应该反映类别相对于目标的排序。因此,一个简单的想法是用以下任一项替换分类特征 x 的值:

  • 以类别为条件的目标期望值(在回归设置中)
  • 以类别为条件的肯定类别的预期概率(在二进制分类设置中)
  • m 类分类任务的 m-1 个新变量。每个新变量都将被构建为一个二元分类任务。

在我们的例子中(回归),这将给出:

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

作者图片

假设我们有以下观察结果:

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

作者图片

编码将产生以下计算:

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

作者图片

这又会产生以下结果:

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

作者图片

此外,除了使用经验期望值(平均值),还可以使用其他统计数据,如中位数、众数、方差或基础分布的高阶矩,这些统计数据将为编码提供不同的属性。

这种方法在统计学上是合理的,并且保留了分类变量的大部分预测能力。但它并不完美。一个常见的问题是,对于基数较低的类别,估计不够稳健。为了解决这个问题,我们通常添加一个加权先验。特定分类变量 x 的类别 k 随后被替换为以下值:

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

p 是先验的,例如,我们可以使用总目标平均值。α是调节先验强度的超参数。我们之所以讨论先验,是因为这种平滑结果的方式可以被认为是贝叶斯目标编码方法的频率等价物。我们引入一个关于感兴趣的统计量的先验信念,并注入一个特定的先验量。α也可以是一个由类别基数和数据集大小参数化的函数,这样您就可以根据类别是否被更多或更少地表示来使用更多或更少的先验。

请注意,我们在训练数据上计算统计数据,并同样在测试集上使用它们。如果来自测试集的类别在训练集中不存在,我们使用在完整训练集(没有条件)上计算的统计(均值、中值、众数等)。

但是这种技术存在一种被称为目标泄漏的情况。单独使用目标来编码变量必然导致这样一种情况,即所学习的关系过度符合训练集的特性。如果使用测试集计算,以使用训练集计算的目标值(x|y)为条件的分类变量的分布将不一定相同。这导致了预测的转变。为了说明这个问题,我们将使用一个从的 CatBoost 论文中借用的极端例子。

所以假设我们正在解决一个二元分类问题(这个车下个月到底卖不卖?).我们只有一个预测器,那就是汽车的品牌。为了确保目标和特征之间绝对没有关系,我们使用概率 p=0.5 的伯努利试验随机分配标签(0 或 1)。此外,我们确保每次观察都有一个独特的品牌。很明显,绝对没有比随机猜测更好的预测模型了。让我们看看 10 次观察会发生什么:

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

作者图片

为了简化我们的例子,我们在编码方案中没有使用先验。编码的特征根据相关联的目标获得值 0 或 1。但是发生了什么?嗯,我们得到了一个完美的分裂。杂质(熵)的减少是最大的,因为叶子中的所有观察结果具有相同的目标标记。因此,在训练集上,预测精度是 1.0(我们总是预测正确的标签)。但是,一旦我们切换到测试集,鉴于目标标签是随机分配的,错误率将会高得多,很可能等于随机猜测。

当然,这个例子是极端的,但它强调了这样一个事实,即通过使用我们正在执行编码的观察的目标,我们将预测信息泄漏到特征中。并且该信息可能与其他类似的例子无关。对于低基数类别,问题更严重。

k 倍目标编码

为减轻特征泄漏问题而引入的这种技术在众所周知的交叉验证过程中找到了根源(发明这种技术是为了对抗过度拟合)。所以我们把数据集分成 K 个折叠。我们遍历每个折叠,并使用来自 K-1 个剩余折叠的数据计算当前折叠的目标统计。当 K=2 时,这种技术的一个特例称为保持目标编码。这种技术的缺点是,它会显著增加训练时间,并且我们没有使用完整的数据集来计算增加偏差的统计数据。

留一目标编码

这一次,我们将交叉验证方案推进了一步,试图使用尽可能多的数据。该技术也可以被称为 N 重目标编码(N 为观察值的数量)。对于每个观察,我们通过仅从训练数据中移除当前观察来计算目标统计。这种技术比 K-fold 目标编码更好,因为它几乎使用了完整的数据集,因此以增加计算预算为代价得到了更准确的统计数据。

有人可能会认为这种技术可以防止目标泄漏。但事实上,并没有。我们将用一个简单的例子来演示它。因此,让我们说,我们回到我们的二元分类问题,有 10 个观察值。这一次我们有 7 个积极的观察和 3 个消极的,但最重要的是分类变量只有一个独特的品牌。我们知道这样的特征是无用的,因为它没有任何预测能力。这里的问题是,当我们计算统计数据时,我们只有两种不同的情况,要么我们遗漏了 1,要么遗漏了 0。因此,编码特征仅有的两个可能值是:(7–1)/10(当我们忽略 1 时)和(7–0)/10(当我们忽略 0 时)。我们得到以下结果:

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

作者图片

我们又一次得到了完美的分割,这意味着我们完美地对训练示例进行了分类。但是我们知道这个特征是没有用的,因为对每一次观察都完全一样。对测试数据使用这个树将会失败。因此,通过这个简单的例子,我们表明目标泄漏问题是留一目标编码的一个问题。

泄漏分析

作为一般的经验法则,当一个人可以通过以一种不能使用测试数据再现的方式利用训练数据来更好地了解目标值时,就会发生目标泄漏。它可以是任何东西,比如训练数据分布的特性、与特定目标值相关联的时间戳特性,或者我们执行特征工程的方式,比如留一目标编码。在上面的例子中,因为我们正在解决一个二进制分类问题,编码只产生两个不同的值,因此编码值自动显示目标。此外,正如细心的读者可能会猜测的那样,在 K 折叠目标编码中,我们从训练折叠中移除的观察值越多,目标泄漏就越不重要,因为我们越不能从编码特征中推断出目标,但同时,我们在预期估计中也越不准确。

现在,有没有一种方法可以消除目标泄漏,同时使用所有的训练数据?答案是肯定的,继续读下去。

有序目标统计

最后,我们到达由 CatBoost 引入的编码分类变量的过程。至此,我们已经展示了引导有序目标统计开始的驱动因素。

  • 使用目标编码类别可以创建一个强大的预测器,但是…
  • …它还会导致目标泄漏,因此应谨慎使用。避免这个问题的一个方法是在一个单独的保留数据集上学习统计数据,但同时…
  • …我们希望编码的统计数据尽可能准确,这意味着我们应该使用尽可能多的相关数据

如果我们有无限的标记数据,我们可以为每一个观察,从人群中抽取一个大的新样本,并学习感兴趣的统计数据。但是我们没有那种奢侈,所以我们需要别的东西。基本原理非常简单,灵感来自排列测试和在线学习,即观察值按时间顺序到达。

所以我们从画一个随机排列顺序开始。然后我们按照新的顺序依次重复观察。对于每个观察值,我们只使用我们过去已经看到的观察值来计算感兴趣的统计量。随机排列就像一个人造时间。

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

作者图片

现在,一旦排列完成,分类统计量是如何计算的?

首先,目标被转换成一个离散的整数,转换的方式取决于我们要解决的问题:

  • 如果我们处于回归设置中,则对连续目标执行量化操作。这意味着目标的可能值范围被划分为特定数量的桶,并且同一桶中的所有目标都被替换为相同的值。确定存储桶的方式取决于所选的策略。在 CatBoost 文档中有更多相关信息。
  • 如果我们在一个分类设置中,每一个不同的级别都简单地用一个从 0 开始递增的整数代替。

然后,我们计算统计数据。计算取决于所选的策略,但想法大致相同。例如,对于策略计数器,会发生以下计算:

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

要理解这个公式的组成部分,最好是引用文档:

  • curCount 是训练数据集中具有当前分类特征值的对象总数。
  • maxCount 训练数据集中具有最频繁特征值的对象的数量。
  • 是一个由起始参数定义的数(常数)。

在我看来,文档中的 curCount 定义不是很清楚,因此我们将举一个例子来理解它(我们将 prior 设置为 0.05)。

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

作者图片

计算第五次观察的统计数据时,我们有:

  • countInClass = 1(在过去的训练数据中,当分类特征等于 Toyota 时,目标等于 1 的次数)
  • maxCount = 2(过去训练数据中丰田品牌的总数)

第五次观察统计量等于(1+0.05)/(2+1)=0.35

最后,计算出的统计数据显示,与其他类别相比,每个类别和标签组合都存在于训练数据集中。当面对目标时,这具有揭示类别排序的效果(这是我们想要的)。

正如您可能注意到的,第一次观察将不会包含足够的训练数据来产生稳健的估计。方差很大。为了解决这个问题,CatBoost 的作者建议从生成几个随机排列开始,并为每个排列生成一个编码。最终结果只是不同编码的平均值。

通过这个过程,我们使用所有的训练数据,并且我们永久地消除了目标泄漏。作者还研究了他们在训练中应用的排列数量的影响。论文的结果如下所示:

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

图片来自 CatBoost 论文

作者得出结论,排列的数量对编码效率有影响,但是当增加排列的数量时,我们得到的改善是微小的。

结论

在这篇文章中,我们回顾了常见的分类变量编码方法,并显示了它们的优势和劣势。在我看来,有序目标统计是可以使用的最好的分类变量编码方案。

作为结束语,我在本文中简要提到了一种叫做贝叶斯目标编码的方法。这篇文章太长了,无法涵盖这个过程,但是我强烈建议您阅读更多关于它的内容(例如这里的),因为它有很多非常好的特性。

Finale 注意,你可以用这个 scitkit-learn contrib 包找到上述编码过程的实现(包括 CatBoost)。

以上就是我的全部内容,我祝您在数据准备过程中一切顺利。如果有不清楚的地方,不要犹豫,留下你的评论。

因果推理如何将增强分析提升到平地之外

原文:https://towardsdatascience.com/how-causal-inference-lifts-augmented-analytics-beyond-flatland-95648fe30055?source=collection_archive---------10-----------------------

行业笔记

因果推理技术和商业分析方法揭示了什么真正改变了你的 KPI,而预测建模却失败了。

如果世界是二维的,生活将会非常奇怪。想想看:地球将不是一个球体,而是一个圆形——就像 2D 宇宙中的所有其他恒星和行星一样。生物也会变平,在平面景观和存在中航行。例如,在街上超过某人,你必须跳过那个人,因为没有任何深度。出于同样的原因,仅仅看你的身后,你真的得把自己翻个底朝天。幸运的是,这不是我们生活的世界。但不幸的是,这是当今大多数企业运行的基础——甚至可能是您的企业。在任何技术驱动的业务中,您的决策质量不可避免地基于您的数据洞察质量。然而,在太多的公司里,这些“见解”实际上是二维的:平淡、不切实际、毫无结果。

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

超级马里奥

企业通常用 KPI 来衡量他们的表现。因此,在给定历史数据的情况下,找到未来 KPI 值的最佳预测模型已成为数据分析的目标。尽管这些模型的表现可能出人意料地好,但从中提取价值同样困难。除了缺乏可解释性,这也是因为预测模型无法捕捉现实,并且仅限于低维解释。在本文中,我们将基于大多数预测模型中糟糕的缩放和不切实际的假设,给出为什么会出现这种情况的两个论据。

但何必呢?并不是表现好的模式提高了经营业绩。相反,改善企业的唯一途径是通过决策,而决策最终应该由人来完成。商业中数据分析的目标应该是通过揭示洞察力来为决策提供信息。不幸的是,这些就像大海捞针一样藏在你的数据里。这个远非无足轻重的问题激发了数据分析的一个相对年轻的分支——增强分析,并在最近的 Gartner 报告中得到推动[1]。

我们想要挑战预测模型应该是用于通知商业决策的默认选项的观念。他们在寻求洞察力的过程中引入了一条代价高昂的弯路,甚至可能使其实际上不可行。我们将在一个简单的问题中强调,除了巨大的开销之外,预测建模只能提供很少的东西。相反,我们将试图模仿一个业务分析师是如何操作的。这自然会把我们带到因果推论的方法。

有影响的变化

我们将考虑在大数据场景下诊断回归模型中的错误的问题。大多数读者应该都遇到过以下场景:

图 1

显然,KPI 发生了重大变化,这种变化似乎会持续一段时间。从技术面来看,合理的反应是在转折点之后,根据数据重新训练你的预测模型。你同意吗?如果是这样,也许要记住这一点。

图 2

好消息是你的模型似乎是准确的。坏消息是,你的经理不可避免地会问 KPI 怎么了。但是不要害怕。这是证明你对公司价值的理想情况。你能找出这种变化背后的原因吗?你能发现有助于正确决策的见解吗?

对为什么的探索

假设您公司的数据集如下所示:

import pandas as pd
df = pd.read_csv(“..\\dataset\\ecommerce_sample.csv”)
df.head()

让我们进一步假设您正在处理一个最简单的情况:跳跃前后的数据点的 KPI 值使用线性回归模型完全拟合。这里,您正在处理分类数据,您需要适当地处理这些数据以便在回归中使用。一种标准的方法是对分类值进行一次性编码:对于每个分类值,您引入一个可以是真或假的特性。例如,在上面的数据集中,您将定义特性customer _ country = = Germany。为了最终实现特征选择,有必要使用一种正则化形式。这里,你将使用套索正则化(十重交叉验证)。

在训练两个 Lasso 正则化线性回归模型(一个在跳跃之前,一个在跳跃之后)后,您可以查看这些模型之间的要素权重差异的排序列表。

from sklearn.linear_model import LassoCV
from bokeh.io import show
from bokeh.plotting import figure#get kpi_axis
kpi_axis = ‘kpi’
time_axis = ‘time’
df[time_axis] = pd.to_datetime(df[time_axis],format = ‘%d/%m/%Y’)
y_before = df[df[time_axis] <= ‘2019–09–11’][kpi_axis]
y_after = df[df[time_axis] > ‘2019–09–11’][kpi_axis]#one-hot encoding categorical features
for col in df.drop([kpi_axis,time_axis],axis=1).columns:
   one_hot = pd.get_dummies(df[col])
   df = df.drop(col,axis = 1)
   df = df.join(one_hot)X_before = df[df[time_axis] <= ‘2019–09 11’].drop([kpi_axis,time_axis],axis = 1).to_numpy()
X_after = df[df[time_axis] > ‘2019–09–11’].drop([kpi_axis,time_axis],axis = 1).to_numpy()#training left and right
regression_model_before = LassoCV(cv = 10)
regression_model_after = LassoCV(cv = 10)
regression_model_before.fit(X_before,y_before)
regression_model_after.fit(X_after,y_after)#plotting results
features = df.columns
dweights =regression_model_after — regression_model_before
index = np.argsort(-abs(dweights))
x_axis = features[index[0:3]].to_list()p = figure(x_range=x_axis,title = “Feature weights difference”,plot_width=1000)
p.vbar(x=x_axis, top=(abs(dweights[index[0:3]])),width = 0.8)
show(p)

图 3

看起来,android 用户或 46 岁以上用户等子群体在跳跃前后的表现有所不同。很好,看起来你找到了 KPI 上升的原因…或者你找到了吗?

维度的诅咒

事实上,这是一个比我们迄今所理解的更重要的情况。想象一下将此展示给 KPI 负责人。他们会很高兴你向他们提供了 KPI 变化的原因,他们现在会想知道根据这些信息该做些什么。这将自动引导他们提出如下问题:“KPI 变化的实际驱动因素是所有 android-tv 客户、所有 46 岁以上的客户以及所有之前购买过产品的客户吗?也许是 46 岁以上的回头客和安卓电视用户…或者是以前买过东西的安卓电视用户?更糟糕的是,有没有其他你错过的功能组合?

因此,为了能够更有信心地回答这些问题,您必须使用更复杂的一次性编码特征重复您的回归分析…现在表示比以前更精细的子群。因此,您可以在数据集的更深的子组中进行搜索,参见图 4,新功能包括 customer_age == 46+和 first_order_made == yes、customer _ age = = 18–21 和 first_order_made == no.

同样,这些子群通过一键编码进入。这显然是有问题的,因为你现在成为了维度诅咒的受害者。这是一个大数据时代,你只是增加了你的功能数量的阶乘[2]。可以用来生成这些细化的子组的一段代码是

def binarize(df,cols,kpi_axis,time_axis,order):
   cols = cols.drop([kpi_axis,time_axis])
   features = []
   for k in range(0,order):
      features.append(cols)
   fs = []
   for f in itertools.product(*features):
    # list(set(f)).sort()
      f = np.unique(f)
      fs.append(tuple(f))
   fs = tuple(set(i for i in fs))
   print(fs)
   for f in fs:
      print(len(f))
      states =[]
      for d in f:
         states.append(tuple(set(df[d].astype(‘category’))))
      for state in itertools.product(*states):
         z = 1
         name = str()
         for d in range(0,len(f)):
            z = z*df[f[d]]==state[d]
            name += f[d] + “ == “ +str(state[d])
            if d<len(f)-1:
               name += “ AND “
         df[name] = z
   for d in cols:
      df = df.drop([d],axis = 1)
   return df

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

图 4 —子组深度

请记住,线性回归是基于所有要素之间的协方差矩阵的反演,其标度为 O(d ), d 是要素的数量,也就是说,在我们的情况下,是可能的子组的数量。与非预测特征选择方法相比,这引入了显著的机会成本——这将在后面讨论。

df = pd.read_csv(“..\\dataset\\ecommerce_sample.csv”)
df[time_axis] = pd.to_datetime(df[time_axis],format = ‘%d/%m/%Y’)#get kpi_axis
kpi_axis = ‘kpi’
time_axis = ‘time’
y_before = df[df[time_axis] <= ‘2019–09–11’][kpi_axis]
y_after = df[df[time_axis] > ‘2019–09–11’][kpi_axis]#one-hot encoding categorical features
df = binarize(df,df.columns,kpi_axis,time_axis,3)
X_before = df[df[time_axis] <= ‘2019–09–11’].drop([kpi_axis,time_axis],axis = 1).to_numpy()
X_after = df[df[time_axis] > ‘2019–09–11’].drop([kpi_axis,time_axis],axis = 1).to_numpy()#training left and right
regression_model_before = LassoCV(cv = 10)
regression_model_after = LassoCV(cv = 10)
regression_model_before.fit(X_before,y_before)
regression_model_after.fit(X_after,y_after)#plotting results
features = df.columns
dweights =regression_model_after — regression_model_before
index = np.argsort(-abs(dweights))
x_axis = features[index[0:3]].to_list()p = figure(x_range=x_axis,title = “Feature weights difference”,plot_width=1000)
p.vbar(x=x_axis, top=(abs(dweights[index[0:3]])),width = 0.8)
show(p)

图 5

一段时间后,你的计算完成。虽然你之前的计算只花了 0.1 秒,但搜索三阶特征已经花了一分多钟。但似乎是值得的。您发现推动 KPI 变化的组的数量实际上是一个,见图 5。向您的经理展示这一见解,他可以迅速指出直接影响您报告的子组的更新。

-通过细化子组,您可以使其具有可操作性。

虽然您的回归方法最终奏效了,但计算时间非常长,导致您公司的机会成本。在真实的大数据场景中,你的方法会失败得很惨。此外,仅包含浅子群的原始集合描绘了不正确的画面。只有在精炼集合和巨大的计算工作之后,你才能精确定位驱动 KPI 跳跃的实际子组。

这引发了几个问题:

  • 你真的需要学习一个预测模型来回答为什么会发生跳跃吗?
  • 你如何降低机会成本?
  • 如何在适当的粒度级别找到子组?
  • 为了这些信息,每次跳跃都要重新训练模型,这样经济吗?

虽然回答所有这些问题超出了这篇文章的范围,但我们将提供一个新的观点来帮助解决这些问题。为此,我们将开发一种改进线性回归的特征选择方法。增强分析依赖于它。

从商业分析师和因果推理中学习

我们退一步说…这里发生了什么?您从一个预测模型开始,您看到它既不能预测也不能解释 KPI 中观察到的跳跃。这是为什么呢?因为预测模型无法捕捉现实。他们假设所有数据都是独立同分布的[3]。然而,在实际应用中,这通常是不正确的,如本例所示。跳跃前后的数据是在不同的条件下产生的。当你使用两个独立的预测模型时,你甚至直觉地利用了这一事实,这两个模型(在一些技巧之后)帮助我们揭示了跳跃的原因。

当你不得不放弃预测,最终没有预测到任何东西时,预测模型实际上为你做了什么?仔细想想,关键是您对预测 KPI 作为所有可能子组的函数不感兴趣—您感兴趣的是影响 KPI 的子组!因此,为了寻找更深层次的见解,你必须远离预测建模。这是数据科学家可以向业务分析师学习的地方。

业务分析师通过包含有意义的数据摘要的仪表板来搜索见解。业务分析师不是像上面的回归方法那样将所有特性关联在一起,而是通过迭代过滤不同条件下的数据,尝试根据汇总(如均值、直方图或度量)来查明数据中发生了什么变化。最重要的是,业务分析师永远不必一次查看所有特性。你如何教一台机器做到这一点?你如何向商业分析师学习?

让我们用数学符号将上述形式化。设 X 是一个子组,例如 X = customer_age == 46+和 first_order_made == yes

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

KPI 跳跃前后 KPI 分布的一些摘要。然后,引入条件汇总

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

其中计算 X 为真的 KPI 值子集的汇总。我们的方法现在需要做的就是计算每个子组的条件汇总,并对它们进行排序。我想强调的是,在实践中,这些抽象的总结可以是作为手段的对象,直方图等等

上面详述的过程实际上是因果推理的一种常用技术[4]。你因此含蓄地改变了我们的观点。现在,你认为 KPI 中的神秘跳跃是一种干预,现在假设这是由于外部或内部治疗而发生的。一个外部处理的例子可能是假期,一个内部处理可能是一个广告活动,一个价格的变化,或者,在我们的例子中,一个软件更新。因此,你显然解除了所有数据都是独立同分布的错误假设。您现在正在搜索 KPI 变化的因果子组。

对为什么的探索——再访

现在您已经有了一个业务分析师如何操作的模型,让我们继续实际的实现。现在,你将使用因果推断中使用的标准总结,称为条件平均处理效应(CATE) [4],我们的总结成为

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

CATE 对应于 KPI 平均值的变化,条件是子组 X 为真。然后,通过数量级排序,我们可以得到正确的子群。为了检测多个子组,我们在每次迭代后移除表现最好的子组后重复该过程:

df = pd.read_csv(“..\\dataset\\ecommerce_sample.csv”)
df[time_axis] = pd.to_datetime(df[time_axis],format = ‘%d/%m/%Y’)#get kpi_axis
kpi_axis = ‘kpi’
time_axis = ‘time’
y_before = df[df[time_axis] <= ‘2019–09–11’][kpi_axis]
y_after = df[df[time_axis] > ‘2019–09–11’][kpi_axis]df = binarize(df,df.columns,kpi_axis,time_axis,3)
df_before = df[df[time_axis] <= ‘2019–09–11’]
df_after = df[df[time_axis] > ‘2019–09–11’]
features = copy(df.drop([time_axis,kpi_axis], axis=1).columns)K = 3 #number of subgroups to detect
subgroups=[]
score=[]
for k in range(0,K):
   CATE = []
   y_before = df_before[kpi_axis]
   y_after= df_after[kpi_axis]#compute CATEs for all subgroups
   for d in features:
      g = df_before[d] == True
      m_before = np.mean(y_before[g])
      g = df_after[d] == True
      m_after = np.mean(y_after[g])
      CATE.append(m_after-m_before)#find subgroup with biggest CATE
   index = np.argsort(-abs(np.array(CATE)))
   subgroups.append(features[index[0]])
   score.append(abs( CATE [index[0]]))#remove found subgroups from dataset
   df_before = df_before[df_before[features[index[0]]] == False]
   df_after = df_after[df_after[features[index[0]]] == False]
   features = features.drop(features[index[0]])p = figure(x_range=subgroups,title = “Conditional Average Treatment Effect”,plot_width=1200,)
p.vbar(x=subgroups, top=score,width = 0.8,color=’black’)
show(p)

图 6

这只是我们预测模型成本的一小部分。计算一阶特征只需要 0.02 秒,搜索三阶特征不到一秒。

让我们后退一步,将这种方法与基于回归的早期方法进行比较,并比较它们各自的目标。通过回归的特征选择回答了这个问题:“哪些子群最好地预测了你的 KPI?”。而采用因果推理的观点回答了这个问题:“哪些子群对 KPI 有最大的因果影响?”。比较 CATE 的简单实现与图 7 中线性回归的优化 sklearn 实现的运行时间,我们发现它们的数量级不同。这清楚地表明,这些问题虽然表面上相似,但有着根本的区别。

图 7

结论

预测模型作为理解 KPI 变化的手段有很大的缺点,尤其是在多维环境中。这些模型从根本上回答了错误假设下的错误问题。相反,商业分析关注的是事情为什么会发生,而不是将会发生什么。将他们的思想从预测未来 KPI 值的辅助任务中解放出来,分析人员在数据中寻找原因,以了解 KPI 为什么会发生变化,试图找到正确问题的答案。

下次你想解释什么的时候要小心。首先,你应该问正确的问题。此外,多维环境需要基于因果推理和业务分析方法的可扩展技术。这是我们在 Kausa 的使命:扩展业务分析逻辑,并将其与因果推理相结合,为 KPI 变化提供正确的答案。

PS:复制本文结果的代码和数据可从[6]获得。

关于作者和 Kausa

迈克尔·克拉普特是联合创始人兼首席技术官,张秀坤·林兹纳是 Kausa 的因果推理工程师。

考萨 通过全面持续地测试所有假设,加速数据探索,在几秒钟内提供可操作的见解。 对试用产品感兴趣? 报名提前入场排队

参考

  1. 增强分析将如何改变您的组织
  2. 停止一次性编码你的分类特征——避免维数灾难
  3. schlkopf,B. (2019 年)。机器学习的因果关系。1–20.
  4. 古铁雷斯,p .&热拉尔迪,J.-Y. (2016)。因果推理和隆起建模文献综述(第 67 卷)
  5. 在解释预测模型以寻求因果洞察力时要小心
  6. 电子商务数据集

GPT 3 号离人工通用智能有多近?

原文:https://towardsdatascience.com/how-close-is-gpt-3-to-artificial-general-intelligence-cb057a8c503d?source=collection_archive---------15-----------------------

GPT-3 是仿人自然语言表现的良好开端。或许更好的类比可能是人工通用智能自然语言的“能人”【1】

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

语言推理的漩涡。美国地质勘探局Unsplash 上拍摄的照片

能人物种区别于更早的南方古猿群体,它们有稍微大一点的脑壳和更小的脸和牙齿。然而,能人物种保留了一些类人猿的特征[1]。

最重要的是,对于我将要做的类比,能人物种被认为是第一个制造石器的人。

在我的类比中,GPT-3 代表了自然语言人工智能的能人。以下是我的推理:

  • GPT-3 的大脑(参数)明显比之前的 NLP 型号更大;
  • GPT-3 使用工具,例如,转移学习和微调。
  • GPT-3 完成其他 NLP 任务(制造工具),它没有接受过这方面的训练。
  • GPT 3 号保留了 GPT 2 号的大部分架构。与能人物种类似,GPT 3 号保留了“一些类人猿特征”。

关键要点:是什么让 GPT-3 如此特别?

GPT-3(生成式预训练变压器-3)是 OpenAI 迄今为止最大规模的自然语言预测(NLP)模型(2020 年 6 月向公众开放)。

  1. GPT 3 号大约有 1850 亿个参数。相比之下,人类大脑大约有 860 亿个神经元,每个神经元平均有 7000 个突触[2,3];
  2. 比较苹果和橙子,人类大脑有大约 60 万亿个参数,比 GPT-3 多 300 倍。注意:如果自然语言任务需要 10%的人脑容量,那么人脑的参数比 GPT-3 多 30 倍。
  3. 据估计,GPT-3 的云计算时间成本在 400 万美元到 1200 万美元之间,并且需要几个月的时间进行培训[3,7]。OpenAI 没有说 GPT-3 的训练成本是多少,也不清楚他们是否知道 20%以内。然而,该论文的作者计数是 31 名工作人员[3]。这意味着一年至少要增加 1200 万美元的员工工资和福利。
  4. GPT-3 在总计约 5000 亿个标记(一个标记近似于一个单词)的几个大型文本语料库上进行训练[3]。

他们已经走得够远了!他们去建了一座七层楼高的摩天大楼,大约和一栋建筑物一样高。—俄克拉荷马州堪萨斯城的歌词子集[9]

注:迪拜塔摩天大楼目前有 183 层高。

GPT-3 站在先前工作的肩膀上

  1. GPT-2 是一个大型的基于 T2 转换器 T3 的语言模型,拥有 15 亿个参数,在 800 万个网页的数据集上进行训练。GPT-2 将 GPT-1 模型架构的参数扩大了约 10 倍,并对超过 10 倍的数据量进行了训练。
  2. GPT-2 最初的研究目标是在 40GB 的互联网文本上进行无监督训练后预测句子中的下一个单词[4]。GPT-2 可能会也可能不会最初让 OpenAI 的研究人员惊讶地发现,它可以执行与它训练的不同的 NLP 任务[6]。我毫不怀疑 GPT-2 为 OpenAI 与 GPT-3 一起“做大”奠定了基础。
  3. GPT-2 模型和其他 SOTA(国家最先进的)自然语言处理模型仍然不能执行一个新的语言任务,从只有几个例子(称为少数镜头学习)或从简单的自然语言指令描述的任务[3]。
  4. GPT-3 将 GPT-2 模型架构放大了约 100 倍。如果你按页数或作者数计算,这是相当可观的 5 倍多的努力[3,5]。
  5. GPT-3 采用了 ULMFIT 的关键发现。在大型文本语料库上预先训练 NLP 模型,然后在特定任务上进行微调,在许多 NLP 任务和基准上实现了实质性的收益[4]。
  6. GPT-3 的研究人员表明 NLP 的性能(以交叉熵验证损失衡量)与 NLP 模型的大小(参数数量)成正比[3]。GPT-3 可以说是迄今为止最好的 NLP 模型。
  7. 再次声明,由于这是一个至关重要的发现,研究人员通过 GPT-3 训练表明,扩大语言模型可以显著提高任务不可知、少数镜头的性能,有时甚至达到与以前的 SOTA 方法相当的水平[3]。
  8. GPT-3 可以在没有任何神经网络梯度更新或微调的情况下应用[3]。
  9. GPT-3 论文的结论是,17.8 亿个参数模型在一些少量学习任务中不够准确[3]。

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

研究人员训练了一系列较小的 GPT-3 模型,其变化范围从 1.25 亿个参数到 1,300 万个参数。零炮、单炮和少炮性能之间的精度差距随着模型参数的大小而扩大。OpenAI 的研究人员坚持认为,他们的研究表明,更大的模型和更多的数据输入将是适应性更强的通用语言系统的成功之路。来源:https://arxiv.org/pdf/2005.14165.pdf

GPT-3 是迄今为止最好的 NLP 模型吗,因为它是最大的?

*:2021 年 6 月 12 日,北京人工智能研究院(BAAI)近日* 发布了关于其“悟道”AI 系统的详细信息 。据悉有 175 万亿 参数。据报道,吴导在文本分类、情感分析、自然语言推理、阅读理解等方面超过了人类的平均水平。我提醒读者注意上述声明,直到 BAAI 提供其他细节,如使用的硬件,训练时间和使用的训练数据。据报道,该代码是开源的。

GPT-3 的第一个例子

GPT-3 在需要即时推理或领域适应的任务上表现出色,如解读单词,在句子中使用新词,或执行 3 位数算术[3]。

GPT-3 模型生成的新闻文章样本,人类评估者很难从人类撰写的文本中区分出来。增加参数的数量增加了人类读者的难度,如下图所示。

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

来源:[3]https://arxiv.org/pdf/2005.14165.pdf

GPT 以华莱士·斯蒂文斯的风格创作诗歌。我的反应很奇怪,我承认,有点害怕。

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

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

2020 年 6 月,OpenAI 发布了它为访问不同 OpenAI 模型而开发的 API 。该 API 运行预训练的 GPT-3 模型系列,用于各种 NLP 任务[3]。

与通常的人工智能社区实践不同,GPT-3 模型的权重不向公众公布。

结论

OpenAI 长期以来一直声称,巨大的计算能力和强化学习是通往 AGI 或可以学习人类可以完成的任何任务的人工智能的必要一步[14]。

人工智能 2.0 的创始人,如 Yoshua Bengio 和 Yann LeCun,认为从目前的人工智能技术不可能创造出 AGI。他们认为我们需要自我监督学习(实际上 GPT-2 和 GPT-3 是自我监督的)和先进的基于神经生物学的进步[15]。

然而,人工智能 1.0 的父亲,人工智能的祖父,如马文·明斯基和安德鲁·麦卡锡,认为丰富的知识(数据)和常识推理专家的“社会”是通往 AGI 的道路[16]。

GPT-3 是一个存在的证据,它证明了扩大文本(数据)的数量,扩大参数(模型大小),以及扩大训练计算的结果在一个专家身上有更好的准确性(可怕的性能)来完成少量的 NLP 任务。

模型的架构、模型的大小和训练计算机的数量实现了常识推理专家吗?数据和常识推理能让我们到达 AGI 吗?

对人工智能可能未来的推测

所以,我认为人工智能研究者犯的最大错误是假设他们是聪明的。是的,和人工智能相比,他们不是。—埃隆·马斯克[12]。

60 到 65 年前,第一台计算机装满了一个房间。60 年后,一个计算机核心,大约有我的头那么大,已经放大了第一台计算机的大约 10 亿倍(可能更多)。

假设第一台可行的量子计算机充满了整个房间。60 年后,我脑袋大小的量子计算机核心将会放大到第一台量子计算机的 10 亿倍吗?

也许吧。

想象一台量子计算机,其 AGI(人工通用智能)模型的规模是 GPT-3 参数的 10 亿倍,或人脑参数的约 300 万倍。

“我预测在 2029 年,我们将通过图灵测试,”雷·库兹韦尔说[11]。

注意:GPT 3 号非常接近 GPT 3 号通过图灵测试[13]。

GPT 3 号在某些方面给人留下了深刻的印象,但在其他方面却明显不如人类。——凯文·莱基,Just,2020。

你认为我们会做一个霍金-马斯克的噩梦或者哈文斯-库兹韦尔的梦吗?

我们可能两者都有,也可能都没有。

我把钱投在我们的工具制造上。我怀疑我们会改变,或者我们应该改变这种行为。

我觉得埃隆·马斯克的 NuralLink 项目是在我们的工具制造上赌人工智能的未来潜力[17]。

资源

[1] 成为人意味着什么?

人类大脑的规模。

[3] 语言模型是很少出手的学习者

[4]文本分类通用语言模型微调

[5] 语言模型是无人监督的多任务学习者

[6] 更好的语言模型及其含义。

[7] OpenAI 庞大的 GPT-3 模型令人印象深刻,但大小并不代表一切。

【8】通过生成性预训练提高语言理解

【9】堪萨斯城的歌词出自戏剧《俄克拉荷马》。

[10] 哈利法塔摩天大楼。凯文·莱基

未来比你想象的更好:雷·库兹韦尔对人工智能和发展的预测。

[12] 埃隆·马斯克:对于人工智能来说,人类是一种‘生物启动加载器’。

[13] 给 GPT-3 做图灵测试——凯文·拉克尔的博客

【14】AI 训练如何规模化。 — OpenAI Blob 贴子。

[ 15] Yann LeCun 和 Yoshua Bengio:自我监督学习是人类水平智能的关键。

我们正处于人工智能的风口浪尖上吗(AGI)?

[17] 埃隆·马斯克的 Neuralink 是神经科学剧院。

公司董事如何影响公司的可持续性

原文:https://towardsdatascience.com/how-company-directors-affect-corporate-sustainability-9e8b457a2878?source=collection_archive---------30-----------------------

通过使用机器学习和统计学,我证明了之前在董事会的专业经验对公司社会绩效的影响

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

图表显示了董事的企业社会责任相关经验如何促进企业的可持续发展。朱莉娅·尼库尔斯基拍摄的图片,图标由来自 www.flaticon.com弗里皮克基兰沙斯塔里制作。

公司不仅仅是生产者和服务提供者,雇佣我们,满足我们的消费需求。他们是我们社会中的行动者,可以对气候变化、人权和我们生活的社区产生积极和消极的影响。因此,消费者、监管者和投资者越来越多地要求公司采取更多行动,为社会做出积极贡献。

我调查了公司董事对公司社会责任的潜在影响。具体来说,我查看了董事会成员的先前职业经历。我假设与环境和社会问题相关的经验会积极影响一个公司的社会责任行为。

我使用机器学习来分析 S & P 500 成员公司的公司董事的履历信息。然后我对他们的经历和这些公司的可持续性评级进行了线性回归分析。请继续阅读,看看我的发现,以及它们对希望支持可持续发展的公司和投资者意味着什么。

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

卡尔·海尔达尔在 Unsplash 上拍摄的照片

公司董事和企业社会责任

什么是 CSR?

企业社会责任描述了公司在其业务运营中考虑环境、社会、道德和其他非财务因素的责任[1]。在过去的 50 年里,研究人员和从业人员基本上一致认为,以对环境和社会负责的方式行事不仅是公司的道德义务。无数的研究也表明,一个公司的企业社会绩效(CSP)积极影响其财务绩效[2, 3 。CSP 描述了公司商业活动的社会影响和结果[4]。因此,格言“做好事才能做好事”是有实证依据的。

公司董事的作用是什么?

因此,如果企业社会责任能够带来经济利益,那么问题就变成了:*一家公司如何提高其企业社会绩效?*许多研究对这一领域进行了调查,发现了公司制度、组织和个人层面的各种影响因素[ 56 ]。董事会是影响 CSP 的因素之一。

董事会的任务是向管理层提供建议并控制管理层,以确保管理层的行为符合股东的最大利益[7-9。各种理论观点旨在解释董事会在公司中的特殊作用(见[8,10, 11 )。大量实证研究证实董事会控制管理层在战略决策9中发挥作用。这意味着他们参与并能够影响各种决策:进入新市场——如电动汽车——或调整生产流程以提高能效。

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

照片由克里斯蒂娜@ wocintechchat.comUnsplash 上拍摄

关于董事和 CSP 之间的联系,研究告诉了我们什么?

董事会和各个董事的各种特征都与 CSP 相关联。董事的独立性[12、 13 、首席执行官和董事长角色的分离[ 14 ]、董事会规模[ 1516 ],以及处理可持续性问题的董事会委员会的存在[ 17 ]已经被证明会影响 CSP。对董事的人口统计学和心理学特征的调查程度较低。

一些研究发现性别[ 18 ]、年龄[ 19 ]、任期[ 19 ]、种族[20]、国籍[ 21 ]、职业经历[ 15 、 [19 【T23、20】与 CSP 之间存在相关性。然而,迄今为止还没有研究调查董事的 CSR 相关经验对 CSP 的潜在影响。之前的三项研究仅着眼于董事在环境相关领域的经验及其对公司环境绩效的影响22—24

董事的职业经历如何影响 CSP?

一个重要的研究领域是关于首席执行官和其他高层管理人员对组织成果和行为的影响。例如,首席执行官的职业经历、年龄、任期和教育程度与公司的财务表现挂钩[ 3 ]。其他研究表明,政治意识形态[26]、自恋、马基雅维利主义和精神变态[ 25 ]会影响战略选择和经济结果。

这些研究基于上层理论(UET),该理论认为首席执行官和高层管理团队的人口特征、个性和价值观会影响组织绩效 [27]。这一理论表明,个人的价值观和认知基础引导着他们的战略选择过程[27](见图 1 )。因为这些很难观察到,所以在研究中经常使用代理变量——比如以前的专业经验。

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

图 1: 战略选择流程。改编自汉布里克&梅森【27】,第 195 页。图片由 Julia Nikulski 提供。

如前所述,董事会参与战略决策过程。因此,可以假设董事的人口统计特征、个性和价值观也会影响组织行为和结果。

基于这个理论框架,我推导出两个假设:

  • H1: 董事会董事的企业社会责任相关专业经验将对公司的企业社会责任计划产生积极影响。
  • H2: 如果董事是企业社会责任委员会的成员,董事的企业社会责任相关职业经验与企业社会责任计划之间的正相关关系将会增加。

第二个假设也认为董事会委员会的组成比整个董事会的组成更能预测具体的结果(见【28】)。董事会委员会处理特定的主题或领域。例如,审计委员会必须由具有金融专业知识的董事组成[29]。这表明,将专业知识与责任相匹配会带来更好的结果。

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

巴德·赫利松Unsplash 上的照片

调查主管经验和 CSP

样本和变量

我的样本包括 2011 年至 2015 年间在标准普尔 500 指数成员公司董事会任职的所有董事。我分别调查了环境经验和绩效以及社会经验和绩效之间的联系。因此,我使用了来自路孚特的环境得分和社会得分作为因变量。

控制变量包括董事会规模、董事会独立性、董事会平均任期、首席执行官双重性、资产回报率(ROA)、财务松弛、杠杆、行业和年份。独立变量包括在整个董事会和 CSR 委员会中拥有相关环境或社会经验的董事比例

来自早期研究[ 1723 ]和评级机构(路孚特SASB )的信息被用于确定哪些类型的专业经验和领域有资格被标记为环境和/或社会。先前环境经验的一个例子是一个专注于生物多样性和保护的基金会的董事会任命。之前担任过首席可持续发展官的工作会被考虑到环境和社会经验得分中。

有关此分类的更多详细信息,请参考我的 GitHub repo 的自述部分。在考虑缺失数据后, 463 家公司和 2,201 家公司年度观察结果仍为 5,276 名独立董事

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

马库斯·斯皮斯克在 Unsplash 上拍摄的照片

语言模型实现

我们选择了一种机器学习的方法,而不是手动阅读数千份简短的传记,来识别具有相关经验的董事。我使用了基于 Transformer 的预训练 NLP 模型long former*30来将短篇传记分类为环境和/或社会或不相关的经历。*

与人工审查传记相比,使用这种方法为我节省了大约 250 个小时的工作时间。表 1 显示了样本中环境和社会传记的分布。关于 Longformer 模型如何工作的更多细节,请查看我的关于基于 Transformer 的 NLP 模型的文章。

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

表 1: 包含 5276 个传记的样本中不同类别的份额。图片由 Julia Nikulski 提供。

数据分析和建模

使用考虑行业固定效应和时间固定效应的双向固定效应模型对这两个假设进行了调查【31】。内生性和因果性问题的解决方法是在自变量(和控制变量)和因变量之间包含一年的时滞[32],使用固定效应模型[31],并遵循先前类似研究的操作化方法。

为了确保结果的稳健性,我进行了三种不同的回归分析。首先,我使用了整个样本,包括所有异常值。然后,我用截断样本重新计算,从所有连续的因变量、自变量和控制变量中切掉第 1 和第 99 个百分位数。第三次运行是在 winsorizing 第 1 和第 99 百分位,限制每个连续变量的最小和最大值[ 33 ]之后进行的。

进行这些计算的代码可以在我的 GitHub 上找到。

结果

描述统计学

我的样本中的数据显示了几个有趣的见解。首先,它显示了行业和年份因变量的差异。例如,图 2 中的箱线图显示出零售业的环境得分比公用事业更广泛。

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

图 2: 零售和公用事业行业的环境得分方框图。图片由 Julia Nikulski 提供。

此外,随着时间的推移,所有行业的环境和社会得分都在增加,而独立变量和控制变量保持相对恒定。图 3 还显示,环境得分的四分位距(IQR)高于社会得分。因此,各行业的环境得分差异较大。

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

图 3: 所有行业的环境和社会得分方框图。图片由 Julia Nikulski 提供。

整个董事会的环境经验得分(独立变量)范围从 0%到 86%的董事。平均值为 19%,而图 4 显示,在 2201 家公司的年度观察中,有 402 家公司的董事会中没有任何有环保经验的董事。更多的董事有社会问题的背景,只有 162 家公司的年度观察显示他们的董事会缺少社会经验。董事会的社会经验得分在 0%到 93%之间,平均为 31%。

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

图 4: 板上环境体验和社会体验直方图。图片由 Julia Nikulski 提供。

在与董事会委员会相关的独立变量中也可以观察到类似的趋势。1,804 个公司年度观察在其环境相关委员会中没有环境经验。这一数字略低于社会经验委员会的分数,为 1,703(见图 5** )。这些高值部分是由于缺乏有经验的董事和缺乏 CSR 相关委员会造成的。只有 140 家公司有董事会环境监督委员会,145 家公司有社会监督委员会。**

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

图 5: 相关委员会环境经验和社会经验直方图。图片由 Julia Nikulski 提供。

我进行的曼-惠特尼 U 检验已经为我的两个假设提供了初步支持(见表 2** )。经验分数大于 0 的公司年观察值的因变量平均值高于经验分数为 0 的公司年观察值。这表明有经验的董事对环境和社会绩效有积极的影响。**

此外,有经验的董事会委员会成员的公司年度观察的平均环境和社会得分高于那些考虑整个董事会经验的人。

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

表 2: 有经验主管和没有经验主管的观察结果的曼-惠特尼 U 检验结果。图片由 Julia Nikulski 提供。

回归分析

回归分析证实了假设 1 和假设 2。表 3 中所示的模型 1 和模型 2 调查了 H1。结果显示,一个拥有在环境问题上有经验的董事的公司比一个没有有经验的董事会的公司有更高的环境得分。同样适用于有社会经验的导演。****

具体来说,模型 1 中的系数 18.163 可以这样解释:董事会经验得分每增加 10 个百分点,公司的环境绩效得分就会增加 1.8163 分。这种业绩变化表明,董事很重要。然而,它们只是改善企业社会绩效的更大战略的一部分。

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

表 3: 固定效应回归模型的结果。图片由 Julia Nikulski 提供。注: * :1%水平显著;**:在 5%的水平上显著;:在 10%水平上显著。括号中给出了稳健的标准误差。模型 1 使用环境委员会经验分数作为自变量,环境分数作为因变量来测试 H1。模型 2 通过用社会委员会经验分数预测社会分数来测试 H1。模型 3 使用环境委员会经验分数作为自变量,环境分数作为因变量来测试 H2。模型 4 用社会委员会经验分数和社会分数测试 H2。*

假设 2 也被证实,因为独立变量的模型 3 和模型 4 中的系数大于模型 1 和模型 2 中的系数。因此,如果一家公司任命其有 CSR 经验的董事加入 CSR 相关委员会**,环境和社会绩效得分将大幅增加。**

使用截断和 winsorized 样本进行回归分析的结果可以在 my GitHub 上找到。两次稳健性检查都证实了使用整个样本进行回归分析的结果。

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

照片由缺口缺口缺口处拍摄

含义和结论

从这些结果中可以得出各种理论和实际的含义。高层理论是适用于董事会和公司业绩的有效理论。只有很少的先前研究做过。此外,这项调查强调了专业知识与责任相匹配的重要性**。今后,公司应建立企业社会责任相关委员会,并任命具有企业社会责任相关经验的合格董事。**

此外,公司应该感到鼓舞,任命更多有 CSR 经验的董事进入董事会和董事会委员会。投资者应该让公司负起责任,增加他们在董事会中的 CSR 专长。关于数据收集过程,机器学习的应用前景非常广阔。这项研究显示了它在处理大量非结构化数据时的优势。

这项研究的最终收获应该是增加 CSP 和促进可持续发展的一个步骤是任命具有 CSR 相关经验的董事。然而,要创造积极的社会影响并实现可持续发展,还需要采取更多以企业社会责任为导向的措施。

请注意:这项调查是我硕士论文的一部分。

你想在媒体上阅读更多高质量的故事吗?考虑注册一个支持我和其他媒体作者的会员

**https://medium.com/@julia.nikulski/membership **

既然你在这里,你可以看看我写的关于数据科学和可持续发展的交集以及在这个领域工作的有前途的项目和组织的文章。

** **

参考

计算机如何玩模仿游戏:不到 10 分钟从自动编码器到 StyleGAN2s

原文:https://towardsdatascience.com/how-computers-play-the-imitation-game-from-autoencoders-to-stylegan2s-in-less-than-10-minutes-d0a89507cc04?source=collection_archive---------36-----------------------

非极客的(小说)图像生成指南

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

威廉·冈克尔在 Unsplash 上拍摄的照片

这一切都始于 1950 年三个受试者玩的一个游戏。c 会坐在一个单独的房间里,向 A 和 B 提出开放性的问题,接受书面回答,并试图从中辨别 A 和 B 是人还是机器。C 的目标是把它做对,而 A 和 B 的目标是愚弄 C。

自从机器开始研究如何通过图灵测试以来,已经过去了 70 年,它们已经走过了漫长的道路。

我是一名投资者,在游戏中呆了 15 年,对金融服务有一定程度的了解,是一名机器学习和 Tensorflow 免费击球手,但绝不是机器学习工程师。尽管如此,我认为内容生成技术告诉了我们很多关于计算机在模仿人类方面有多好的信息——并且可以在这个过程中教会我们一些谦逊和自我意识。

这篇文章的目标是在不到 10 分钟的时间里总结玩模仿游戏的最新计算机技术的发展。我同意,图灵将这个简单游戏的成功与回答更深层次的问题“*机器能思考吗?”*是一个很大的假设,但另一个时间。10 分钟现在开始。

第一步:自动编码器和降维

为了公平地复制人类生产的东西(以及我们认为是人类生产的东西),计算机应该首先学会理解,或者至少(让我们尽可能远离意识和自我意识这些令人毛骨悚然的概念)通过综合其核心维度来概括内容。

在现实生活中,通常可以在不丢失太多信息的情况下显著减少一个集合的特征数量。看下面的自然数序列。

顺序= [1,2,4,8,16,32,64,128,256,512]

虽然该序列包括 10 个数字,但显然该列表代表序列 2ⁿ的前 10 个实例,其中 n 从 0 开始。对于一个人来说,最多装备笔和纸,复制这样的序列的前 10、20、50 个成员而不全部记住是微不足道的。换句话说,我们已经确定了序列固有的低维特征,这些特征足以进行完美的复制。或者,更简单地说,我们发现了一种模式。但是机器也能做到这一点吗?

你不会感到惊讶,他们可以,通过同样的测试和学习的方法,人类将适用于这个和更复杂的序列。这正是自动编码器所做的。

什么是自动编码器?自动编码器是一种模型,它查看输入,提取有效的潜在表示(编码器),并吐出希望看起来尽可能与输入相似的东西(解码器)。

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

自动编码器的图形表示:从输入到重构

我们来拍几张低分辨率的图片。编码器的工作是将(32 高 x 32 宽 x 3 RGB 通道)像素中的信息压缩到更低的维度;解码器的任务是获取该表示,并尽可能地再现与原始图像接近的内容。第一次,我们的模型通过随机猜测做得很差,然后它做得好一点,然后再好一点,直到希望在多次迭代后它变得非常好,这取决于我们想要压缩原始信息的程度。

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

原始图像与使用 1 个中间层和 10 个神经元的重建图像——实际上是将 32x32x3 像素中包含的信息压缩到 10 个感知器中。结果不出所料的差(卢瑟激活和极客的 20 个纪元)

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

使用具有 100 个神经元的 1 个中间层重建的图像—结果明显好得多(架构和其他参数保持不变)

如果您想要编码的信息非常(非常)大,或者非常混乱,并且模式很难被识别,那么我们简单的架构就不能令人满意地执行,并且需要扩展。但总是一样的东西。你扩展编码/解码层中的单元数量,你将这些层一层一层地堆叠起来,你玩被称为激活函数或超参数的东西,你不断地从输入到重建。你得到了深度自动编码器(它包括许多层)卷积自动编码器(它包括通过特殊过滤器过滤信息的层)递归自动编码器(它对它们所做的事情保持某种记忆)等等。但是如果你得到了最初架构的想法,基本上是一样的。

第二步:变化的自动编码器和新东西的创造

但是有一类自动编码器,所谓的变型自动编码器,它的行为与其他编码器不同,并且不是尽可能接近你输入的内容,而是生成一些全新的东西,但可能类似于原始输入。你给模型 1,000,000 张雨伞的照片,然后(经过大量学习)它会产生一张真正像雨伞的照片,但那不是你分享的照片之一。这是赢得模仿游戏的第一步。

一个可变的自动编码器在这个过程中引入了一点随机性。研究输入后,编码器生成输入(理论)分布的均值μ和标准差σ,而不是为其生成编码,即假设输入呈正态分布时的均值和标准差。如果听起来很复杂,让我们一步一步来分析:

  1. 编码器接收输入列表,并猜测μ和σ的两个值,假设两者都是 0.5
  2. 然后,从μ = sigma = 0.5 的正态分布中随机抽取一系列数字
  3. 随后,解码器试图基于这些随机数再现输入(我们的图像),并将其呈现给陪审团(一个客观函数)
  4. 陪审团很可能会发现结果非常糟糕(这只是随机噪声),并将其退回
  5. 结果很糟糕,原因有两个:输出看起来不像输入(即重建损失很高),采样像素看起来不像是从正态分布中随机采样的(即潜在损失很高)——如果输入实际上是具有均值μ和标准差σ的正态分布,那么这些参数很可能不同于 0.5
  6. 编码器更新他对μ和σ的估计,并对一组新的随机数进行采样,试图减少潜在损失
  7. 然后,解码器产生一个新的估计,试图减少重建损失,并再次发送给陪审团

很长一段时间后,我们将拥有足够好的模型参数来产生全新的图像——类似于模型被训练的输入。我们只需向模型输入随机噪声(正态分布),并使用学习到的参数对其进行解码。

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

由一个变化的自动编码器生成的新的动画脸——图像很模糊,需要很长时间来训练,但结果很好,它们真正提醒我们由人类绘制的动画脸

第三步:生成对手网络背后的思想

2014 年,一组人工智能研究人员意识到,设计两个不同的模型试图愚弄对方,而不是让他们为同一支球队效力,结果将会显著改善。这个想法既简单又天才。

我们有一个发生器和一个鉴别器,它们互相对抗。发生器将随机噪声作为输入并输出图像(与解码器在上述可变自动编码器架构中工作的方式相同)。相反,鉴别器接收一组图像,并试图识别图像是真的还是伪造的。这是事实上的,一个在机器学习环境中重建的模仿游戏。

第一阶段:给自己找一个好的鉴别者。我们首先训练鉴别器,目的是让它相当好地识别真实和伪造的图像。开始时这很容易,因为发生器只看到真实图像和发生器产生的初始假图像(看起来真的像噪声)。

第二阶段:教发电机学会作弊。然后,我们训练生成器产生图像,鉴别器会错误地将这些图像归类为真实图像。生成者从来看不到任何真实的图像,而只是根据鉴别者识别伪造图像的能力来接收对其工作的间接反馈。鉴别器的好处是可以看到真实图像的样子。

再现的图像很快变得相当好(比可变自动编码器的情况快得多),但几乎同样快地停止改善。其背后的原因是,他们不断试图智胜对方,最终选择了相当成功的技术。

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

照片由蔻驰·埃德温·因达尔托Unsplash 上拍摄

让我们假设,例如,我们正在训练 GAN 生成假的石头剪刀布图像。在开始时,生成器非常糟糕,然后它变得更好,然后最可能理解的是,用岩石图像(一个拳头)欺骗鉴别器比用手指开发一只完整的手容易得多——所以它不断生成许多拳头,可能没有太大改善,以及一些非常糟糕的纸和剪刀。最终,鉴别者赶上来,并开始区分假石头和真石头,如此之好,以至于在某一点上,生成器尝试另一种策略,即展示纸或剪刀。开始时,它们是如此糟糕,以至于鉴别者发现了它们,但后来是鉴别者忘记了如何识别假纸和假剪刀(记住,它已经在岩石上训练了一段时间,以便智胜生成器),生成器开始获胜。GAN 可能会在一段时间内陷入这种轮换策略,而没有真正的改善。电脑也很懒。

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

使用 StyleGAN 架构生成的手语图像——经过 50 个时代后,拳头或拳头状图像的趋势显而易见

深度卷积 GANs (DCGANs)来帮忙了,一层一层的叠加,包括滤波器,随机漏失,以及其他限制 GANs 不稳定性的技术。小图像的结果有所改善,但结果并不完美。在较大图像的情况下,重建可能会在某些细节上产生局部令人信服的结果,但整体效果不佳。

2018 年,英伟达的一个团队提议使用 DCGANs 来产生小图像,然后通过特定的过滤器(卷积层)在一个称为渐进增长( ProGANs )的过程中逐步扩展它们。为了避免模式崩溃(即上述 gan 的懒惰/不稳定问题)和增加多样性,引入了一些其他创新。所有这些技术的结合为高质量的图像提供了非常好的结果。

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

为提高质量、稳定性和多样性而逐步种植的 GANS。使用 CELEBA-HQ 数据集生成的 1024×1024 图像(经过多天的训练)

研究小组通过比较每一层的风格,分析了生成的图片与原始图片的相似程度。这种比较程序提供了 StyleGANs 的想法,StyleGANs 是目前小说图像生成中最先进的技术。

步骤 4: StyleGANs 和没有名字的人

正是同一个 Nvidia 团队引入了 StyleGANs 的想法,即 GANs,其中生成器被修改为使用样式转移技术,以便在局部和全局都具有与原始图像相似的结构。高质量图像的结果是惊人的。

Rani Horev 在 StyleGANs 上的帖子提供了一个精彩的解释,但以下是他们主要特征的总结:

  • 映射网络将输入编码成控制不同视觉特征的中间向量
  • 风格模型将由映射网络编码的特征转移到每个分辨率级别的生成图像中(即,对于低级和高级图像特征)
  • 使用随机变化来生成不确定的或不能被映射网络映射的特征(如头发、雀斑、皱纹等)。)
  • 在生成图像的每个级别进行风格混合,以避免级别之间的相关性,这可能导致生成的图像遵循特定(且不一定真实)的模式

这种方法在生成新颖的逼真图像方面具有开创性,并在 2020 年的另一篇论文中得到进一步改进(该论文介绍了 StyleGAN2s)。结果呢?自己判断。

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

由 StyleGAN2 架构生成的图像—归功于thispersondoesnotexist.com

如果你像我一样,想象照片上的人的生活,他的童年,他的青年,他的爱和恐惧,痛苦和快乐,然后提醒自己这实际上只是随机像素的集合,那么计算机真的在模仿游戏中走了很长的路。

我希望你喜欢这次短暂而紧张的旅程。应用程序的数量是巨大的,你可以选择是被它吓倒还是被它激励。这是你的选择。我们才刚刚开始。

计算机如何看深度:基于深度学习的方法的最新进展

原文:https://towardsdatascience.com/how-computers-see-depth-deep-learning-based-methods-368581b244ed?source=collection_archive---------19-----------------------

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

来源: Unsplash

从立体图像估计深度

第 1 部分:立体视觉的动机和基础

O 我们对深度的感知对于创造我们周围的 3D 世界至关重要。这种知识已经流行了几个世纪,有一个人非常了解这一点,他就是莱昂纳多·达·芬奇。他利用自己的专业知识帮助自己创作了一些艺术作品,这些作品将会名闻遐迩,如《最后的晚餐》或《萨尔瓦托勒·希泽拉》。从技术上讲,对双筒望远镜的理解可以追溯到公元 280 年,当时欧几里德意识到我们的深度知觉是人类用两只眼睛聚焦于同一物体。尽管如此,今天,立体视觉仍然是一个非常有趣的问题。我的目标是深入了解这个话题。现在,我把我的笔记转变成一个博客系列。

✍每篇文章都将包括一个突击测验!突击测验的目的是通过思考精选的问题集来巩固关键概念。所以,请分享你的回复吧!

目录

一简介
二深度感知:3D 空间中的人类
二. a 为什么是立体的?
III 立体问题
III.a 立体视觉方法论
III.b 核几何(概念)
III.c 核几何(数学)
IV 立体视觉系统的几代产品
V 未来工作
VI 结论
博士中等上
突击测验
A)捕食者对猎物
B)立体视觉由费雪
C)附加题

一.导言

深度估计在现实世界中有许多用途,在机器人、计算机视觉和沉浸式显示中具有实际意义(见上图)。我们将深度估计视为一个多图像问题。多视图(或图像)问题跨越不同的问题领域,如(1)立体视觉,(2)运动结构,以及(3)光流。虽然每一个都在虚拟现实(V.R .)、机器人和计算机视觉问题中作为一个整体具有巨大的重要性,但在这个多部分系列中,我们将重点关注(1)立体视觉。具体来说,深度学习在立体视觉技术上的进展。首先,在第一部分中,我们涵盖了预备材料(即经典立体视觉理论)。

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

基于深度传感技术的大量应用。图片作者。

人工神经网络在计算机视觉中有很长的历史,为对象检测和分类提供了一个健壮的框架。此外,深度学习通过提供网络学习的图像的更深层次的表示,彻底改变了该领域。最近这一成功的关键因素包括一个简化的网络架构,其参数更多,规则更少,以及新的训练技术,如辍学[3]和 L2 正则化[4]。

在我们专注于具体的深度学习解决方案之前,让我们首先通过理解为什么立体图像对可以推断深度来激发这个问题。

深度知觉:3D 空间中的人类

人类的大脑在立体视觉中有一种奇妙的能力来看深度。我们使用我们的两只眼睛,它们分别位于头部的两侧,使我们能够感知物体的三维空间:高度(深度)、宽度和相对于周围环境的前后位置。然而,这项技能并不是人类独有的——许多动物都拥有它!然而,当尝试关于这个主题的计算建模研究时,仍然会出现几个挑战,主要是因为在没有输入数据集的情况下,这些挑战是困难的或不可能的,这些输入数据集包含关于您希望他们训练什么对象以及这些项目当前位置有多近/多远的信息。这个博客系列将探索这些挑战,以及基于深度学习的方法的最新进展如何克服这些挑战。

我们可以使用核几何来重建在图像捕获期间丢失的深度(即, z )维度,其中图像对来自已知参数的来源:内在参数(即,透镜的焦距 f )和外在参数(即,称为基线*b】*的左右摄像机的光学中心之间的距离)。

我们如何从图像中自动计算三维几何图形?图像中的哪些线索提供了 3D 信息?在看双目(即立体或两个)之前,让我们先考虑一些单一视角,即单目特征。

我们人类天生如此。下图描绘了我们自然用来感知世界深度的线索。

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

人类用来推断深度信息的几个线索,线索列在每个样本的上面,来源在下面。

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

运动是我们用来推断深度信息的另一个线索。想象一下 gif(最右边)中所示的雕像的转动。作者创建了 gif。

  • 突出
  • 阴影
  • 轮廓
  • 相互反射
  • 对称
  • 光偏振

为什么是立体声?

如简要提到的,深度线索可以来自单个源(即,单目视觉)。另一种方法是通过立体图像对使用同一场景的两个视觉参考(即双目视觉)。为什么要使用多个来源?通常,从单一来源推断深度信息是不可能的。还有,单目视觉任意缩放。下图描述了这个概念。

让我们通过例子来看看单一观点的模糊性。

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

**深度,正如在 2D 的图像中看到的,是模糊的。**因此,先前的线索不能确定地产生精确的深度信息。

描绘这种模糊性,我们看到从光学中心(即摄像机位置)看到的 P1P2 ,投影到像平面上的**P1’P2’**是等价的。

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

**图形描绘显示了来自单目视图(即,单个图像)的深度模糊。**从单个视角来看,结构和深度本质上是不明确的。上图显示,单一视图的框架和深度是模糊的。请注意,上面的示意图在本文末尾会更有意义,因此,应该在讨论核几何时返回。作者创造了它们。

三立体声问题

立体在很大程度上受到生物学的推动(即,使用左眼和右眼同时捕捉视觉信息)。

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

S .伯奇菲尔德,克莱姆森大学 ECE 847

经典立体声方法的灵感来自于我们感知深度的方式,如上述线索。例如,可以使用刚体解算器来求解 3D 空间中的球面坐标方程,其中图像是从现场的不同角度或视角拍摄的,从而产生视差和其他效果。然而,这个系列将更加专注于深度学习解决方案(DL)。在进入任何细节之前,我们需要对这些基本原理有一些初步的了解,所以让我们从这里开始吧!

接下来,我们将回顾为什么立体对(即,左图像和右图像)足以解决前面提到的模糊问题。它使用两个相机都能看到的世界坐标中匹配对应点的两个图像平面的三角测量。

三.立体视觉方法

传统算法分为两大类,具体来说是局部全局方法,对应于步骤:

  1. 成本计算。
  2. 成本汇总。
  3. 视差优化/计算。
  4. 视差细化。

当我们探索现代的、数据饥渴的、端到端的解决方案时,这些步骤将类似于本博客中涉及的系统的许多模块。但是,首先,让我们回顾一下立体视觉的基础。

III.b 极线几何(概念)

沿着由相交射线形成的平面的法线称为核平面。同样,我们假设立体对之间的校准图像和点对应。

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

**三角测量的原理,如上所示,允许通过光线追踪到世界坐标中的交点(又名场景点)进行 3D 重建。**追踪光学中心到场景点是通过匹配从左到右图像(反之亦然)的对应关系来完成的——作者的照片。

核线 约束将对应问题简化为沿共轭 核线的 1D 搜索——如下图所示。

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

核线约束变换立体对,使两幅图像的核线平行。核几何将对应问题简化为 1D 搜索(即,沿着共轭 核线搜索匹配点)。作者创造了可视化。

因此,核极约束假设校正的立体图像,意味着相同的核极平面(如上所示)跨行对齐。它与两者正交并彼此对齐[1]。使用基于内部和外部参数的变换来校正图像是一个可以追溯到几十年前的过程。

立体像对是由相对于彼此位置已知的两个相机捕获的场景的图像。视差测量左右摄像机(即立体对)之间的水平距离(以像素为单位)。因此,使用核几何沿着校正图像的水平线约束视差。

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

**图像矫正的过程。**一个立体像对(中间的灰色图像)在校正过程中被转换。因此,核线是水平平行的(最下面的黄色照片描绘的是校正后的图像)。视差与 3D 场景中的深度有关(图中最顶端的绿色空间)。将图像平面(即立体对)重新投影到平行于光学中心之间的线的标准平面上;像素运动在此变换后是水平的(右侧视图中的黄色方块)-图片由作者提供。

具体来说,左图像中的一个点( xy )在右图像中的( x-dy ),其中 d 为视差(以像素为单位)。然后,像素位移通过焦距 f 和被称为基线 B 的相机之间的距离与深度相关:z = fB/d ,其中 z 是在三个坐标空间中恢复的深度值。

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

请注意,校正后的立体图像对的核线在校正前是不平行的(顶部)。因此,扭曲图像通过变换图像对来约束点对应的搜索,使得核线平行(底部)。作者创造了这个人物。

下图描述了立体像对(即输入)和生成的视差图(即输出)。

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

视差(中间)表示从左到右的像素移位(即,每个对应点移位的像素数量的整数值)。作者创造了可视化。

我们找到两幅图像中的对应点来估计相对深度。如上所述,视差和深度直接相关如下。

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

同样,我们可以将等式表示为(x, y)=(x' — D(x, y), y'), as (x, y) is the point in the left image and (x', y') is the corresponding point in the right image. Hence, the magnitude of D(x, y) is the number of pixels shifted along the horizontal (i.e., x-direction). Notice the y-axis remains constant. Referring to the image of the building above, at the point marked in red, the value of D(x, y) will be the magnitude of the vector depicted in the right image. Take a minute to understand this, for it shows the very meaning of disparity.

III.c 极线几何(数学)

我们现在将解释上面介绍的概念背后的数学原理。对于那些对为什么立体声从严格的数学角度起作用的细节不感兴趣的人,请随意跳到下一部分(这里是)。

从校正后的图像对中,深度 Z 可以通过其与视差 d 的反比关系来确定,其中视差定义为比较左右对应时沿水平方向的像素差,即 I ( xy【T32)=D(x+D

这种关系最容易从视觉上把握。

提供在世界坐标(X,Y,Z)中投影的左图像平面 P_L( xy )中的点作为 3D 场景中的点,我们的目标是重建提供立体对的缺失的 Z(深度)。

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

左侧图像中的点-投影到世界坐标的位置-作者提供的图像。

下图显示了右侧图像平面中的对应关系。

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

假设我们知道 P_L 对应 P_R. Image by Author。

我们设置相对世界坐标(红轴)以及两个相机中心之间的已知基线 b :

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

基线 b 代表摄像机之间的实际距离。图片作者。

我们得到了

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

立体视觉理论基础。图片作者。

我们可以用下图表示坐标。

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

传统立体视觉综述。图片作者。

第四代立体视觉系统

多年来,立体视觉一直是研究界感兴趣的问题。如今,人们可以把不同的方法归为三代之一。

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

第 1 代、第 2 代和第 3 代,其中第 2 代和第 3 代将包含在系列的后续部分中。图片作者。

关于用于视差图估计的 DL 系列,我们可以将方法描述为以下任一种。

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

**传统方法(非端到端)和现代方法(端到端)的特点。**作者创建了可视化。

下图描述了(2)中列出的端到端系统。

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

学习具有权重θ的映射函数 f,使得当将预测的视差 f _θ(I)= D’与作者的 G.T .视差 D .图像相比较时,输入图像张量 I 具有对于某个距离度量 D 最小化的损失 L。

正如我们将在前面的部分中看到的,代表 DL 网络的黑色(橙色)方框可以包括几个子模块,通常串联级联。不同的步骤类似于传统立体视觉系统中涉及的常规步骤。

五.未来的工作

接下来,我们开始回顾基于深度学习的深度估计方法的进展。具体来说,在第二部分中,我们涵盖了几个跨越 2015-2020 年的基于图像的深度立体网络(即 MC CNN [1]、DispNet [2]、GC-Net [3]、PSMNet [4]、iResNet [5]和 GA-Net [6])。然后,第三部分第四部分第五部分将涵盖最新和最大的(即 2021–2022)基于视频的立体方法,称为多视图立体(MVS),并分别在子像素级别生成置信图。

六.结论

随着最近深度学习的进步,立体视觉技术正在取得长足进步。一个多部分系列的第一部分**涵盖了经典立体视觉技术的基础:草稿是一项正在进行的工作,每个草稿都应该在接下来的几周甚至几个月内完成。

如果你想了解更多关于在工作或研究中使用深度估计的信息,请不要犹豫,直接联系我或者在下面留言!我们可以帮助您从今天开始。在第二部分中,准备学习各种用于立体视觉的图像级深度模型。

看看第二部分。

* *

七参考文献

[1] C. Loop 和 Z. Zhang。计算立体视觉的矫正单应性。IEEE 会议。计算机视觉和模式识别,1999。

[2] Zbontar、Jure 和 Yann LeCun。“立体匹配通过训练卷积神经网络来比较图像补丁.” J .马赫。学习。第 17.1 号决议(2016 年):2287 至 2318。

[2] Mayer,Nikolaus 等人,“用于训练卷积网络进行视差、光流和场景流估计的大型数据集。”IEEE 计算机视觉和模式识别会议论文集。2016.

[3] Kendall,Alex 等,“深度立体回归的几何和上下文的端到端学习”IEEE 计算机视觉国际会议论文集。2017.

[4]常、贾仁和."金字塔立体匹配网络."IEEE 计算机视觉和模式识别会议录。2018.

[5]梁,,等,“通过特征恒常性学习视差估计”IEEE 计算机视觉和模式识别会议论文集。2018.**

[6]张,,等.“Ga-net:端到端立体匹配的引导聚合网”IEEE/CVF 计算机视觉和模式识别会议论文集。2019.

LinkedInTwitter脸书上关注罗宾逊博士

*https://www.jrobsvision.com/

阅读更多由约瑟夫·罗宾逊博士在媒体上发表的文章

https://jvision.medium.com/remote-development-with-pycharm-d741287e07de https://jvision.medium.com/reduce-the-clutter-adapt-the-space-6daeef2e2ca9

深度估计:基础知识和直觉 作者 Daryl Tan ,是我在准备本系列第二部分时偶然发现的一篇博客,是一篇很棒的文章。它很好地补充了第一部分(即这篇博客)。此外,主题将帮助我们更深入地理解这个主题。

突击测验

这里有几个关于立体视觉的问题,如果思考和回答,将提供更大的洞察力。在下面评论你的答案和问题。利用从本系列第一部分中获得的经验:顶级答案和问题将得到认可。🏆

a)捕食者与猎物

适者生存;生存进化的概念:我们能把立体视觉的概念与野生动物的生物构成联系起来吗?

比较猎物(即羚羊)和捕食者(即猎豹)的视野有什么不同?

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

动物照片由加州科学院提供。作者修改了一下。

该图显示了一个捕食者和它的猎物以及它们立体视觉的近似示意图。考虑深度、视野和精确度。你为什么假设这是不同的?当考虑不同的立体视图时,你会想到什么好处和问题?

b)fisher-price 的立体视觉

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

图片来自 fisher-price.com

回想一下费雪公司的 3D 幻灯片浏览器。它到底是怎么工作的?音响起作用吗?如果有,如何实现?利用了哪些线索?从稍微不同的视点拍摄的同一主题的两幅图像如何融合产生 3D 效果?

c)其他问题

1.猎豹和羚羊立体看到的东西有什么区别?
2。不能用立体视觉寻找猎物的动物是什么?
3。哪些动物没有立体视觉系统,但使用其他感官(如嗅觉、听觉)来捕猎和探测猎物?
4。猫和狗谁的视力更好?*

康威推论如何破坏你的数据组织

原文:https://towardsdatascience.com/how-conways-corollary-wrecks-your-data-organization-c81d0b134230?source=collection_archive---------37-----------------------

意见

康威定律有一个邪恶的推论,它在开发领域不为人知,但会摧毁你的数据组织。

“你认为这是一次黑客攻击,但你所攻击的只是你数据的价值。”(作者)

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

图片由斯文·巴尔诺扬拍摄。

梅尔文·康威是一位才华横溢的计算机科学家,他也发明了协程的概念,在过去的 20 年里,他因为一条以他的名字命名的定律而变得非常有名:

任何设计系统(广义定义)的组织都将产生一个设计,其结构是组织的沟通结构的复制

事实证明,当我们走向领域驱动设计和微服务架构的世界时,这是非常重要的。该法律还可以通过所谓的“逆康威策略”来实施。但是他的定律也对数据世界产生了影响,这并不有趣。

让我们后退一点…

康威定律隐含康威推论

最近,我观察到这个定律的一个隐含意义。我喜欢称之为“康威推论”,尽管我很确定这是一件很平常的事情。

简而言之,如果你的开发部门为人们提供了命名歌曲列表的工具,但没有为他们提供添加标签/类别的方法,人们将开始使用这个名称来做他们“真实世界”领域中常见的事情。他们会用“X-my-song-list”来标记过时的列表,用“JAZZ-my-song-list”来表示类别,等等。

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

用更通俗的话来说…

“人们会适应 显性的 系统 他们会适应 隐性的现实世界的商业概念 。”

这听起来像是一件微不足道的事情,类似于一种变通办法。但是这些“隐含的概念”对这个世界的数据组织有着可怕的后果。这些隐含的概念完全没问题,只要不重要。但是当它们变得重要时,数据世界就崩溃了…

为什么 Conways 推论对数据组织如此不利

问题是,数据的价值在于业务领域,而不是技术领域。在我们的歌曲列表示例中,一些典型的数据应用程序是歌曲列表的推荐引擎,或者是 bi 工具中用于评估特性采用情况的数据。

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

那么会发生什么呢?数据人员可能会重新创建“标签/分类”的业务概念,并从名称中提取出来。推荐引擎将需要它来排除存档列表,BI 系统将需要它来按类别分组。

更糟糕的是,在这种情况下,两个实体将实现这个逻辑。

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

问题是,如果这种环境在商业世界中很重要,那么“抽筋”就会越来越严重;随着歌曲列表概念的每次重用,两个数据团队将不得不调整他们对这种“隐含的业务上下文”的理解。

我们该怎么办?我们创造环境!

解决方案非常简单,要么创建一个新的有界上下文,要么将它放入一个已有的上下文中。从技术上来说,这也很容易做到,你只需要在某个地方放上一个“包装”,然后假装得到它。

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

在我们的示例中,负责歌曲/歌曲列表域的人因此创建了一个小存根,它基于命名公开了两个简单的标签:

  • 基于第一个单词的类别,
  • 和基于前导 x 的存档标志。

仅此而已。在未来的某个时候,这个领域团队可以实现实际的标签,并在包装器后面进行简单且不间断的更改,同时推荐引擎和 BI 系统继续工作。

问题?这超出了数据组织的范围

首先,这种事情经常发生。特别是当开发团队重用技术概念时,他们有时会忘记隐含的概念,这些概念会被束缚在技术概念中。这导致了一个两难的境地:

  1. 对于开发团队来说,这“只是一个技术概念”,实际上并不是商业概念,
  2. 但是对于数据世界,它变成了一个商业概念,因为康威的推论。

除了意识到,没有简单的方法来解决这个困境。建筑师应该注意这些事情。在这种情况下,创建至少封装了概念的包装器总是一个好主意。数据团队也可以在他们这边创建这样的包装器,至少让问题变得透明。

最后,在我看来,摆脱困境的最简单方法是让产品经理用心。因为如果一个新的特性/产品以“我为什么要这么做?我怎么知道我正朝着正确的方向前进?”,答案几乎总是涉及数据和正确的上下文。

达斯克如何加速熊猫生态系统

原文:https://towardsdatascience.com/how-dask-accelerates-pandas-ecosystem-9c175062f409?source=collection_archive---------42-----------------------

深入了解 Dask 数据框架,以及它是如何工作的

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

澳大利亚八月在 Unsplash 拍摄的照片

Python 有大量的开源库,简化了数据科学项目的开发。一些著名的 Python 库,如 Pandas、Numpy、Scikit-Learn,提供了高级的可用和灵活的 API 以及高性能的实现。这些库专注于提供大量的 API,但是很大程度上忽略了性能和可伸缩性。

换句话说,这些库无法加载大型数据或内存不足的数据集,也无法执行探索和可视化。Dask library 来帮忙了,它有一个类似于 Pandas 和 Numpy 的 API,并通过在所有 CPU 上并行化来加速工作流。

在本文中,您可以深入分析 Dask 框架以及它是如何工作的。

注意:在本文的最后,您可以获得比较 Pandas 和 Dask 库的基准时间约束,并观察 Dask 的性能如何优于 Pandas。

Dask:

Dask 是一个开源的 Python 库,它提供了高性能的实现和类似于 Pandas 和 Numpy 库的 API,以及通过在所有 CPU 上并行化操作来加速工作流的能力。它是一个灵活的库,可在大于内存的数据集上进行多核和分布式并行执行。

  • 高级集合: Dask 提供了一个高级集合,比如数组、数据帧,它们扩展了 Numpy 和 Pandas 的通用 API 以及分布式环境。这些集合在动态任务调度器上并行运行。
  • **动态任务调度:**这是线程化和多重处理库的一种替代方式。Dask 提供了一个并行执行任务图的动态任务调度器。

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

(来源),Dask 工作架构

如上图所示,Dask 提供了 5 个高级集合:Dask 数组、Dask 数据帧、Dask 包、Dask 延迟、Futures。对这些高级集合的任何计算都会生成一个任务图。这个任务图由动态任务调度器并行执行。

高级系列:

如上图所述,Dask 框架有 5 个高级集合,扩展了 Pandas、Numpy、Scikit-Learn 等的公共接口。

Dask 阵列:

Dask 数组是由存储在块中的多个 Numpy 数组组成的数据结构。换句话说,一个 dask 数组可以分成多个 Numpy 数组。Dask 数组的 API 非常类似于 Numpy 库。

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

(来源),Dask 阵列分为多个 NumPy 阵列

在 Dask 阵列上执行的任何操作都是在 Numpy 阵列上执行的。Dask Arrays 使用分块算法来执行计算,该计算使用系统的多个内核来并行化计算。通过将大的 NumPy 数组分成较小的块,它允许用户执行超出内存的计算和加载大于内存的数据集。

Dask 数据帧:

类似于 Dask 数组,Dask 数据帧由多个 Pandas 数据帧组成。为了提高效率,dask 数据帧按行划分为小熊猫数据帧分组行。

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

(来源),Dask 数据帧分成多个熊猫数据帧

通过将 dask 数据帧分成 Pandas 数据帧的较小块,计算使用内置的分块算法并行运行。Dask 使用内存映射,它不会一次加载全部数据,而是与操作系统同步指向数据的位置。

Dask 包:

Dask Bags 是 Python 对象的高级并行集合,用于处理半结构化或非结构化数据集。与其他 dask 集合一样,Dask Bag 遵循惰性传播,可以在机器集群上轻松实现并行化。

初始数据消息传递和处理是使用 list、dict、sets 完成的,因为初始数据集可能是 JSON、CSV、XML 或任何其他不强制使用严格数据类型的格式。Dask 包可用于此类任务。

简单地说,Dask 包可以被称为:

dask.bag =映射、过滤器、工具+并行执行

Dask 延迟:

Dask Delayed 是一个 Dask 集合,可用于并行化自定义函数和循环。延迟函数可用于并行化现有的代码库或构建复杂的系统。

它不是快速执行函数,而是延迟执行,将函数及其参数放入任务图中。一旦调用**.compute()**函数,它将被并行执行。

动态任务调度:

动态任务调度器被设计为仅在个人笔记本电脑上扩展到数千个节点集群。

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

(图片由作者提供),动态任务调度架构

Dask 中的所有高级集合都有生成任务图的 API,其中图中的每个节点都是普通的 Python 函数,节点之间的边是普通的 Python 对象,这些对象由一个任务作为输出创建,并在另一个任务中用作输入。在生成这些任务图之后,调度器需要在并行硬件上执行它们。

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

(source),使用动态任务调度程序并行执行的示例任务图的动画

一些基准数据:

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

(图片由作者提供),Pandas 的基准时间约束以及小型、中型和大型数据集的 Dask 数据框架

以上基准时间限制是使用笔记本电脑记录的,配置: RAM (8GB)、磁盘(1TB)、处理器(i5–第八代@ 1.6GHz)。

结论:

在本文中,我们将深入了解 Dask 框架,包括其高级集合和任务调度。Dask 构建在著名的 Python 库之上,可以在内存不足的数据集上加载和执行探索和可视化。它遵循惰性求值、内存映射和阻塞算法的概念。

还有各种其他框架,如 Vaex、Modin、Ray、Rapids 等等,可以并行化现有的 Pandas 生态系统。阅读下面提到的文章,了解更多关于 Vaex 框架及其实现的信息。

参考资料:

[1] Dask 文档:https://dask.org/

感谢您的阅读

数据如何在现实世界中发挥作用

原文:https://towardsdatascience.com/how-data-can-make-a-difference-in-the-real-world-dda77eda5de7?source=collection_archive---------17-----------------------

“数据科学”中的“科学”一词可能会让人联想到消毒实验室和安静的图书馆。事实上,大多数数据科学家都在复杂的系统、流程和工作场所中航行,如果不是完全混乱的话。这并不是一件坏事:这也意味着他们的工作直接影响了这个世界和他们周围的人,有时影响深远。本周,让我们探索一些我们最喜欢的关注这种强大联系的帖子。

  • 重塑你接近职业的方式 。Eric J. Daza 作为医疗保健数据科学家和数据科学统计学家,在学术和行业环境中建立了长期的职业生涯。在最近与 TDS 的一次对话中, Eric 分享了他一路走来学到的一些最重要的经验,包括需要从业务而不是科学的角度来研究数据科学。
  • 最大化数据在非营利部门的影响 。对于任务驱动和资源短缺的组织来说,利用数据科学的力量来制定决策和集思广益战略可以带来重大变化。 Hani Azam 和 Delta Analytics 团队汇集了他们在与众多非营利组织的合作中收集到的智慧,旨在帮助他们“分解成简单易行的小步骤和最佳实践,以充分利用您的数据。”

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

Yannis Papanastasopoulos 在 Unsplash 上拍摄的照片

  • 对你公司的底线有所作为 。对于在行业中工作的数据科学家来说,为他们的团队增加价值的最直接方式之一是帮助防止客户流失。幸运的是,丹尼尔·赫克特和泰勒·穆伦巴赫说,“容易流失的用户通常会在用户行为和客户支持聊天记录中留下他们倾向的线索。”丹尼尔和泰勒的指南继续(非常详细地)展示了数据专业人员如何检测这些用户并支持其他团队的工作,以保持他们的快乐和参与。
  • 加速你的机器学习管道 。如果最花哨的模型和最前沿的算法最终让你和你的团队陷入困境,等待几个小时(或几天)的话,它们就没什么意义了!)才能与其他利益相关者分享您的见解。本·韦伯向我们介绍了实时特征工程,并解释了如何构建能够在数毫秒内响应预测请求的 ML 管道。
  • 优化您的数据科学工作流程 。超越机器学习模型,进入完整的端到端数据科学生命周期, Adiamaan Keerthi 分享可行的建议,帮助您提高生产力和效率。在这个由两部分组成的系列的第一篇文章中,他介绍了 Jupyter 笔记本技巧,并包含了许多方便的代码片段,可以为您节省更多的时间。
  • 退一步反思人类和机器的认知 。我们不可能让所有热爱理论的读者饿上整整一周——尤其是当我们刚刚发表了加迪·辛格的最新文章。他在理解的本质及其与人工智能未来的关系方面的工作的实际意义可能仍然需要几年的时间,但你不会想错过像这样发人深省的阅读。

如果你的数据科学工作帮助你更好地了解——甚至只是看到——你周围的世界,我们希望你考虑写下来,并与我们的社区分享。

直到下一个变量,
TDS 编辑

我们策划主题的最新内容:

入门

实践教程

深潜

思想和理论

数据驱动的人工智能和人工智能如何为各行业的高投资回报率企业决策提供支持

原文:https://towardsdatascience.com/how-data-driven-ai-and-ml-empower-high-roi-corporate-decision-making-in-various-industries-3c28499d919?source=collection_archive---------23-----------------------

处理大量数据并产生快速见解——人工智能通过战略性地做出更大、更好的决策,让公司领先一步。

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

吉利Unsplash 上的照片

人工智能能做出比人类更好的决策吗?

是的。但是破坏人类智慧也是不明智的。

人工智能和决策是一个相对较新的课题,随着 决策智能 框架的出现而出现。它将数据科学和机器学习与管理决策结合起来。

在 Gartner 的 2020 年宣传周期中,决策智能被报道为新兴的工程学科。 Gartner 已经开发了一个决策智能模型,可以识别和评估帮助企业做出明智决策的决策建模技术。

人工智能是技术进化的下一个阶段,已经显示出有希望的结果。 麦肯锡全球研究所的研究报告称,到 2030 年,人工智能可以为世界经济增加 13 万亿美元,支持全球 GDP 每年增长近 1.2%。

随着每一天的过去,这些行业都在积累难以想象的海量数据。公司正在探索各种技术来处理大量的信息,并利用这些信息为自己谋利。他们正在探索人工智能所提供的预测分析的潜力,从而实现基于人工智能的决策。

普华永道的一项调查显示,86%的参与者表示,人工智能将在 2021 年成为他们公司的“主流技术”。他们的公司增加了人工智能投资,并加快了人工智能的采用计划。

人工智能每天都在为我们做出至关重要的决定。从智能天气预报到网飞和 YouTube 视频推荐系统,人工智能正在产生影响。医院正在使用人工智能解决方案来降低管理任务的成本,并为医疗保健人员提供决策支持。营销行业正在为高转换率等进行自动化的广告活动。

在本文中,我们将讨论人工智能在决策中的各个方面,以及它如何为利益相关者带来高 ROI(投资回报)。

人工智能在决策中的三个层次

几个世纪以来,人类的智慧和才智一直推动着关键决策的制定。随着数十亿字节的可用信息,智慧和智力不再可靠。

Gartner 的一项调查表明,当前的决策过程是不可持续的,需要重新设计。调查发现,与两年前相比,今天做出的 65% 的决定更加复杂。

现代决策需要一种技术方法来分析大量信息。由于其大规模处理信息和预测结果的能力,人工智能已经成为战略决策不可或缺的一部分。

人工智能决策分为三个层次:

**决策支持:**通过使用各种人工智能技术分析数据来收集关键见解。最终决策是数据驱动的洞察力、人类经验、情感和智能的结合。

**决策增强:**人工智能迅速探索成堆的复杂数据,并推荐决策。人类可以根据自己的知识和专长接受或拒绝人工智能的建议。

**决策自动化:**人工智能的预测能力足够准确和一致,完全可以信任它自己做出决策。系统可以在没有人工干预的情况下做出自己的决定。

在决策中使用人工智能的好处

这些年来,人工智能的预测精度已经大大提高。有了更准确的模型,人类利益相关者可以依靠人工智能来非常自信地做出明智的决定。决策中的人工智能在整个业务生命周期中具有广泛的好处。

**商业自动化:**人工智能驱动的自动化处于第四次工业革命的前沿。通过自动化繁琐的重复性任务,企业可以节省大量时间。所有主要行业都在将自动化应用到他们的制造、营销、资源分配和销售过程中。预测供给和需求可以优化收入流。

自动化系统不太容易出现人为偏差和无意错误。它可以通过减少对人工的依赖来降低业务支出。

**标准化信息:**优质的 AI 产品需要有价值的数据来获得想要的结果。企业从各种来源收集原始的非结构化信息,如公共数据集、互联网搜索、内部业务流程、市场调查和采购线索等。

“如果有一件事可以让我们每年节省数千亿美元,那就是从数据模式的标准化开始”——Vishal chatrah, Secondmind 的首席执行官

古代:微笑:(大概五年前)这个原始信息是人工处理分析的。有了人工智能,所有的信息都会被自动处理。不同的人工智能技术可以标准化信息,而不考虑数据来源。人工智能模型还可以快速适应各种类型的信息,以提取相关结果。

观点挖掘:情感分析或观点挖掘是了解客户想法的最重要的工具。广告商使用在线搜索偏好、博客帖子、调查、评论、电子邮件、推文和所有其他与用户相关的活动来挖掘客户想要的东西。这些信息有助于他们提高客户满意度和客户关系。

人工智能给出了强大的自然语言处理(NLP)模型,可以对任何类型的信息进行情感分析。NLP 模型在理解人类情感方面变得更好。使用人工智能,品牌可以执行社交媒体挖掘,并实时听取客户的需求,提供更个性化的产品体验。

客户关系管理(CRM): CRM 系统对于公司供应商、客户和员工的有效管理至关重要。人工智能支持的 CRM 工具可以提供准确的销售见解,并支持高管做出明智的战略决策。

它们可以检测销售数据中的模式,预测销售线索得分和客户流失率,使企业能够采取实质性措施来防止任何损失。人工智能驱动的虚拟助理可以利用 CRM 数据,这些虚拟助理可以处理单调乏味的办公室任务,并适应客户的查询。

**高投资回报率和更好的决策:**标准化的数据、优化的业务流程、自动化的市场情绪分析和人工智能支持的客户关系管理系统使企业能够做出更好的决策。人工智能可以最大限度地减少错误决策的百分比,降低管理费用,保证高投资回报率。如果业务的任何方面发生变化,人工智能可以实时捕捉到它,并帮助决策者优化供需管道。

各种行业中基于人工智能的决策

企业正在依赖数据支持的人工智能来支持人类决策者,这对制造商和消费者都有利。让我们分析一些人工智能正在推动决策过程的行业。

**粮食&农业:**地球上所有生命的生存都依赖于优质粮食产品的持续供应。人工智能应用可以帮助我们实现粮食安全,促进可持续的粮食生产,并最终结束世界饥饿。 联合国粮食及农业组织(FAO) 使用人工智能、人工智能和卫星图像来监控干旱等农业压力。他们开发了一个名为 FAMEWS 的移动应用程序,可以监控 20 种植物害虫的传播,限制农作物的破坏。他们的人工智能还可以智能地管理农业供水。所有这些进步都有助于这一部门的可持续增长。

**医疗保健:**图像识别和图像分割是机器学习提供的强大工具,在医疗保健领域有着广泛的使用案例。现在,使用 ML 可以在 x 射线和 CT 扫描中检测各种癌症和医学异常。 InferVision 使用 AI 和 ML 检查数千次 CT 扫描,以检测癌症迹象,支持放射科工作人员做出更准确的决策。

**银行业&金融服务:**银行使用人工智能欺诈检测系统来处理贷款申请。由 underwrite.ai 开发的一款此类产品分析企业的贷款申请,以预测其信用风险。他们使用遗传算法(GA)等人工智能技术以及机器学习和大数据来分析贷款组合。

**旅游&酒店:**人工智能正在解决旅行行业面临的各种问题,比如提供个性化和自动化的客户支持体验,以及预测旅行中断。 Hopper 通过预测预订和购票的最佳时间,以高达 95%的准确率协助旅行者做出更好的旅行决策。 Utrip 是一个人工智能推荐系统,提供个性化的旅行体验,并在预订数量上有业内证明的增长。 朱莉——一名来自美国国家铁路客运公司的人工智能助手每年可以预订火车并回答超过 500 万次查询。

**物流&运输:**顺畅的供应链运作在很大程度上依赖于高效的物流和运输。物联网和人工智能正在用智能应用颠覆这个行业。 KeepTruckin 是一个基于人工智能的车队管理系统,可以确保司机的安全,提供 GPS 跟踪和智能路由,并降低燃料成本。他们的 AI dashcam 使用计算机视觉来检测和防止不安全的驾驶事件,并向司机发出实时警报。

**制造业:**人工智能在制造业中也很有用。汽车制造商沃尔沃使用基于 ML 的技术来监控他们的汽车在危险条件下的性能。各种传感器安装在汽车上,收集不同的驾驶变量。ML 使他们能够评估车辆的安全性。

**营销:**像 AlbertGumgumWordstream 这样的各种产品都在有效地使用人工智能和机器学习来设计优化的广告活动,并撰写动态广告文案。

**零售&电商:**零售和电商是最适合 AI 颠覆的行业。从需求预测到自动化库存管理,人工智能正在帮助零售商制定更好的战略。英特尔利用人工智能技术,通过智能货架检查商品的可用性。他们的智能自助结账系统可以检测缺失或不可读的条形码,他们的无接触式自助服务终端可以识别语音和手势,与客户互动。另一个产品 MakerSights 使用人工智能在产品的整个生命周期中做出明智的决定。它有助于零售品牌增加利润和预测最畅销的商品。

**房地产:**房产价格预测是 AI 在房地产领域最常见的应用。人工智能正在对房地产行业的几乎每个方面产生影响。 Zillow 是一个以人工智能为中心的个性化房产推荐系统。它还通过分析买家信息和参与度,将代理商与认真的买家联系起来。其他产品如 Skyline AIProportunity 收集各种数据点来预测房地产价格。

娱乐&游戏:人工智能通过让用户在屏幕上呆上几个小时来推动娱乐业的发展。像 Dota,Overwatch 和 Counter-Strike 这样的游戏广泛使用 AI 作为训练玩家的教练代理。基于人工智能的游戏让人类玩家很难获胜。流媒体服务使用人工智能根据用户的兴趣推荐内容。甘创造的栩栩如生的时装模特将会改变时装业。像 SyncWords 这样的基于人工智能的工具可以自动为实时视频和预先录制的会话创建和翻译字幕。

**能源:**能源部门正在使用人工智能对各种设备和发电厂进行异常检测。传感器收集机器的实时状态,人工智能发现故障模式,通过及时发出自动警报来防止任何危险情况。英国石油巨头 BP plc 正在使用人工智能来监控他们的天然气和油井的状况,以节省成本并提高运营效率。

阻碍决策采用人工智能的因素

2021 年,公司很容易变得以人工智能为中心。虽然一些人正在收获他们基于人工智能的投资的果实,但大多数人仍处于原型或概念阶段,希望有一天能够收支平衡。让我们来看看为什么公司不能把他们基于人工智能的想法变成现实的一些原因。

**识别机会:**这个世界没有足够多成功且鼓舞人心的人工智能用例。商业利益相关者没有意识到人工智能的潜力以及它如何影响他们的决策过程。只有随着时间的推移和不断的探索,AI 才能够驱动核心的业务引擎。

**缺乏专业技术知识:**尽管人工智能已经存在了 50 年,但它在世界范围内的实际应用只是在几年前才开始。没有足够的技术资源具备必要的人工智能理论和实践知识。

“人工智能其实是比较容易的一点。难的是要确保该组织真正拥有能够进行人工智能的平台和技术。这些事情正在减缓采用曲线。”西蒙·格林曼,联合创始人, 最佳实践 AI

对于计划将人工智能引入其业务流程的公司来说,一个变通办法是考虑外部供应商或雇用已经证明具有人工智能专业知识的 ML 专家来实现他们的业务需求。

**收集有用的数据:**在人工智能中,伟大的决策都是基于精确筛选的数据集。公司正在开发标准化的数据架构,以便将所有信息整合到一个地方。收集原始和非结构化数据是没有用的。将其转换为结构化数据,并使用高级人工智能模型进行处理,是唯一的出路。

**扩大规模:**一旦人工智能产品投入生产,下一步就是扩大规模。在人工智能中,缩放需要动态人工智能模型,这些模型可以根据实时输入数据进行适应和改进。许多公司努力适应这些变化。因此,决策过程受到严重影响。

**期望短期内获得巨大回报:**一切美好的事物都需要时间,但投资者总是寻求快速回报。尽管人工智能承诺通过改善决策增加收入,但它不能保证投资者需要多长时间才能开始看到大钱。

重要的是将问题分解成小块,从选择一个能在短期内产生最佳效果的开始。这就是组织变得更懂人工智能的方式。他们开始理解人工智能能做什么,不能做什么,我认为这是一个很好的起点。 Silo.ai 首席执行官 Tero Ojanpera

**缺乏对人工智能的信任:**人工智能架构对市场来说相对较新,保护它们是一个更大的挑战。各公司正在努力提高其部署的人工智能模型和数据中心的安全性。但即使是最安全的产品也容易受到网络安全威胁。因此,投资者对在他们的业务流程中采用人工智能犹豫不决。

技术日新月异。传统的软件开发策略正在被以人工智能为中心的现代方法所取代。公司现在更好地理解了将人工智能纳入决策过程的好处,因为它有望获得更大的投资回报。但它伴随着不确定性和一定程度的人工智能无知。人工智能专家常说:

对于人工智能,我们只是触及了表面。

随着越来越多的公司继续投资人工智能并开发生产规模的解决方案,投资者和利益相关者将获得更多信心,并开始更多地依赖人工智能来推动其关键的商业决策。

参考

1)https://towards data science . com/introduction-to-decision-intelligence-5d 147 ddab 767

2)https://the innovator . news/ai-decision-making-state-of-play-and-what-next/

3)https://www . McKinsey . com/~/media/McKinsey/Featured % 20 insights/Artificial % 20 intelligence/Notes % 20 from % 20 frontier % 20 Modeling % 20 the % 20 impact % 20 of % 20 AI % 20 on % 20 the % 20 world % 20 economy/MGI-Notes-frontier-Modeling-the-impact-of-AI-the-the-the-world-economy-2018 . ashx【2018 年 9 月

4)https://www . PwC . com/us/en/tech-effect/ai-analytics/ai-predictions . html

5)http://www . FAO . org/e-agriculture/news/there-potential-adopting-artificial-intelligence-food-and-agriculture-sector-and-can-it

6)https://www.hopper.com

7)https://www . Amtrak . com/about-Julie-Amtrak-virtual-travel-assistant

8)https://keeptruckin.com/

9)【https://www.zillow.com/

10)【https://www.skyline.ai/】T4

11)https://www . Intel . com/content/www/us/en/customer-spot light/stories/proportunity-customer-story . html

12)https://www . business insider . com/datagrid-ai-created-spookily-life-like-fashion-models-2019-5?op=1

13)https://machine learning mastery . com/what-are-generative-adversarial-networks-gans/

14)https://www.secondmind.ai/

15)https://global.infervision.com/

16)https://www.makersights.com/

17)https://www.marketingaiinstitute.com/blog/albert-spotlight

18)https://www.marketingaiinstitute.com/blog/gumgum-spotlight

19)https://www . marketing iiinstitute . com/blog/words team-spot light

20)https://www.bp.com/

21)https://www.underwrite.ai/

22)https://www . Gartner . com/smarterwithgartner/how-to-make-better-business-decisions/

23)https://www.bestpractice.ai/

24)https://silo.ai/

数据如何帮助我选择数据职业

原文:https://towardsdatascience.com/how-data-helped-me-pick-a-data-career-66ba0ab24be6?source=collection_archive---------35-----------------------

对我的职业生涯来说,数据驱动的决策是我能采取的最佳途径

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

斯蒂芬·菲利普斯-Hostreviews.co.uk 在 Unsplash 上的照片

如果你喜欢我的内容,并想获得更多关于数据或作为数据科学家的日常生活的深入知识,请考虑在这里订阅我的时事通讯。

我的数据职业生涯是我从零开始建立起来的,我从来不知道我会在这个领域结束。这是我工作的顶峰,也是我感觉在智力上、精神上和经济上真正满足我的东西。这个职业让我很惊讶——因为我从来不认为这个职业是我梦想的工作。

生活有时是令人惊讶的,因为你永远不知道你会在哪里结束,你将来会做什么工作。从我十几岁到 20 多岁,我一直在规划自己的职业生涯,希望成为一名生物学研究者,我很少考虑研究生活之外的职业。我热爱研究工作,我觉得如果没有我的研究,我将一事无成。我对一切都很满意,因为我的环境支持我想做的事情,我觉得我会成为一名伟大的生物研究员——尽管生活总是有不同的计划。

在这篇文章中,我想讲述我的经历,我决定数据职业的思维过程,以及如何使用数据来帮助我决定我的职业步骤。让我们开始吧。

寻找新的激情

我的研究职业道路充满荆棘,因为我选择了一个非常小众的专业,并且在财务方面也不太好。竞争也很激烈,因为研究岗位很少公开。有了这些,我意识到另一个事实——我并不是这个房间里最聪明的研究员。我对研究有很大的热情,但不知何故,这种热情在生物学研究中没有得到很好的体现;要么是我缺乏创意,要么是我文笔不够。无论如何,我在硕士毕业后再也找不到任何研究职位了。

在我的生活中没有太多事情发生,我试图在我的工作中找到新的激情,因为我觉得研究是我可以做的事情,但也许只是不在学术界。这就是为什么我决定做一些研究来寻找我的新激情。

对新职业的研究

我知道我擅长什么——我擅长在我的研究时间内分析数据,我也对我所做的任何工作充满热情。在这段不确定的时间里,我没有任何研究工作可做(博士学位,实验室等等。),感觉需要做一些以前没有做过的事情;行业内求职,学习新技能。但是,我不想盲目地去;这就是为什么我对未来的最佳职业做了一点研究。

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

作者图片

以上是我研究的一个代表。基本上,我试图找到关于发展最快的职业的数据。下一个未来会是什么?如果我想转行,它应该接近我所知道的,但不会像我以前的职业选择一样没有前途。

研究结果告诉我,许多未来的职业选择与能源、健康或数据有关。能源不在我的选择范围内,因为它不是我的专长,然后健康在某种程度上是相关的,但职业名称对我来说太具体了,最后,数据领域值得更多的研究。

数据职业的未来

首先,我研究了数据技能在未来的价值——它在未来对一家公司来说是必要的吗?这会促进我的事业吗?而且很难学吗?。我找到的一份研究总结让我对所有这些问题有了深入的了解。基本上,我发现:

  1. 超过 80%的高管受访者表示,数据技能对公司很有价值,
  2. 81%的受访者提到高级领导职位所需的数据技能,
  3. 对数据专家的需求逐年增加。

上述研究总结出数据职业在未来将是有价值的,并且有前途的职业,因为需求和顶级职业将需要数据技能

我还试图寻找另一个研究来源来支持数据职业的未来。世界经济论坛在 2018 年进行的另一项研究发现,73%的受访者预计他们的企业将采用数据技术,到 2022 年,85%的受访者打算扩大他们对用户和实体大数据分析的采用。这一结果很有希望,因为研究还提到建立的数据角色将在未来扩展。

许多研究发现,数据职业很好,我一直坚信数据是每个行业的未来。然而,我还不知道什么是适合我的数据职业(有很多数据职业的头衔)。这就是为什么我看了一下对数据职位进行分类的另一项研究,发现数据科学家位于图表的顶端。考虑到这一点,我觉得数据科学家是我未来职业生涯中会考虑的事情,但数据科学家到底做什么,我需要什么技能?

什么数据技能?

虽然我有一个答案,数据职业会有一个光明的未来,数据科学家是我追求的头衔,但我进入数据职业需要什么样的数据技能,数据科学家以什么为生?

首先,我参考了 customerthink 的研究,以确定数据职业所需的数据技能。这项研究有趣地根据工作角色划分了技能;然而,在数据职业生涯中,只有两种工作角色强调数据熟练程度:业务经理和研究员。他们中的大多数需要以下技能:

  • 统计/统计建模
  • 大数据和分布式数据
  • 机器学习
  • 贝叶斯统计
  • 数据管理
  • 算法

我来自一个研究背景,并已将上述一些技能确定为我的专长,如统计学和贝叶斯,但我仍然缺乏算法、大数据和数据管理的一些技能。尽管如此,我仍然觉得这是一个适合我的职业,因为在我做研究之前,我从来不知道在一个非常需要统计的行业中有一个职位,而且我擅长这个职位。

然后,我试图找到能告诉我数据科学家在日常工作中做些什么的研究。在这种情况下,我发现福布斯很好的研究肯定了大多数数据科学家在他们的就业期间做什么。结果如下图所示。

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

作者图片

我最初对这些发现感到惊讶。在我看来,数据科学家会通过分析和开发统计建模来彻底处理数据,这是我在研究期间做得最多的。然而,该行业似乎与学术界有着不同的模式,在学术界,大多数数据科学家的时间都花在清理和组织数据上。

我真的很好奇为什么数据科学家需要花这么多时间清理数据?许多参考文献都写了为什么数据清理是必要的,但是大部分都说数据清理是为了提高数据质量——这是合乎逻辑的。

我会想花大部分时间清理数据集吗?在我目前的时间里,答案是肯定的。但是那个时候,我还不确定这个活动。然而,我确信我想从事数据职业,因为所有的数据都显示了一个很好的前景,这与我以前的工作是一致的。这就是为什么,在所有这些研究之后,我决定通过参加在线课程来弄脏我的手,并去训练营,但经验将是另一回事。

密钥查找

从我为寻找新的激情而做的一点研究中,我发现了一些我认为对我的职业决策很重要的关键发现:

  1. 数据领域是发展最快的职业之一
  2. 未来对数据专家的需求将会增加,高级水平需要数据技能
  3. 数据科学家是数据领域最受欢迎的头衔
  4. 为了在数据领域取得成功,我需要学习 6 种技能:统计/统计建模、大数据和分布式数据、机器学习、贝叶斯统计、数据管理和算法
  5. 数据科学家的大部分时间都花在了数据清理上。

结论

找到一个新的激情并不容易,尤其是当我已经在我的整个教育中被训练成为一名生物研究员。然而,我需要面对现实,寻找新的工作激情,因为我以前的经历在职业生涯方面没有出路。

这就是为什么我在利用我擅长的东西——分析数据。我正在使用数据来寻找我的新职业,并发现数据职业是发展最快的职业之一,所需的技能与我以前的经验密切相关。

所有的数据都显示了一个良好的前景,而不是一个没有尽头的职业生涯,我决定从事数据方面的职业,并在这个职业生涯中从头开始建立一切。

如果您没有订阅为中等会员,请考虑通过 我的推荐 订阅。

在我的LinkedInTwitter 上访问我。

数据规范化如何影响随机森林算法

原文:https://towardsdatascience.com/how-data-normalization-affects-your-random-forest-algorithm-fbc6753b4ddf?source=collection_archive---------6-----------------------

数据标准化在随机森林分类器和回归器中的重要性。

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

照片由卢卡斯像素上拍摄

最近,我在实现一个随机森林回归器时,遇到了一个经典的问题:我应该实现数据规范化吗?。

据我所知,基于决策树的算法通常不需要规范化。但是,我意识到,每次我听到这个说法,它都与量词有关,那么回归变量呢?他们需要数据规范化吗?

如果您在互联网上搜索 R 和 om Forest normalization ,第一个链接表明:

  • 堆栈溢出 : (1)不,随机森林不需要缩放,(2)随机森林是基于树的模型,因此不需要特征缩放。
  • 堆栈交换:感谢评论澄清。基于树的模型不关心某个特征的绝对值。他们只关心值的顺序。因此,归一化主要用于线性模型/KNN/神经网络,因为它们受特征所取绝对值的影响。

但是,在深入研究之后,我发现数据规范化可能会影响输出。所以,在这里我留下了我的外卖和一个简短的 Python 演示。

外卖食品

对于分类任务,随机森林的输出是大多数树选择的类。对于回归任务,返回单个树的平均值或平均预测值。

因此,数据归一化不会影响随机森林分类器的输出,但会影响随机森林回归器的输出。

关于回归量,如果数据不进行转换,算法会更受高端值的影响。这意味着它们在预测高值时可能比低值更准确。

因此,对数变换等变换将降低这些高值的相对重要性,从而更好地进行概化。

实验

在这里,我展示了一个简短的实验,它表明当实现数据规范化时,回归变量的输出会发生变化,但分类器的输出是相同的。

  • 导入库

  • 加载数据集

选择的数据集是用于回归任务的波士顿房价数据集。

Keys: dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])Feature names: ['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']Data shape: (506, 13)Target shape: (506,)

为了将该数据集也用于分类,目标变量已经被舍入。

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

  • 随机森林分类器

下面是随机森林分类器在三种条件下的实现:(1)没有归一化,(2)最小-最大归一化,以及(3)标准化。

正如所观察到的,数据标准化不影响准确度分数。

Accuracy score without normalization: 0.12574850299401197
Accuracy score with min-max normalization: 0.12574850299401197
Accuracy score with standardization: 0.12574850299401197
  • 随机森林回归量

下面是随机森林回归器在三种条件下的实现:(1)没有归一化,(2)最小-最大归一化,以及(3)标准化。

在这种情况下,数据标准化会影响回归变量的均方得分。

Accuracy score without normalization: 13.38962275449102
Accuracy score with min-max normalization: 13.478456820359284
Accuracy score with standardization: 13.38586179640719

如果你喜欢这个帖子,请考虑 订阅 。你将获得我所有的内容+所有其他来自牛逼创作者的文章!

数据科学如何加深对城市贫困的理解

原文:https://towardsdatascience.com/how-data-science-can-give-further-understanding-on-urban-poverty-ab52e448913?source=collection_archive---------19-----------------------

根据使用数据科学生成的见解和预测,制定满足人们需求的正确扶贫战略

正如我在之前的文章中提到的,数据是新的黄金。通过实时分析,科技公司可以快速了解他们的客户;例如他们的产品偏好、对营销活动的反应以及可接受的价格点;而无需花费时间和金钱进行广泛的市场调查。这些见解对于管理层决定重点产品、营销内容和定价模式至关重要。虽然这看起来很酷,但我开始思考我们如何利用这项技术来解决更大更复杂的问题,比如城市贫困。如果数据科学可以帮助我们理解消费者行为,那么它应该能够帮助我们理解那些与贫困作斗争的人的实际需求。

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

在南雅加达看到的对比(图片由作者提供)

在讨论细节之前,我们必须先弄清楚我们对贫困的定义。理论上,贫困主要有两种类型:绝对贫困和相对贫困。绝对贫困意味着无法获得食物、衣服、住所和卫生设施等基本需求。相对贫困是指无法享受体面的生活水平。由于各国的标准不同,这一术语反映了不平等。当经济活动的数量和基础设施的能力无法满足人口的增长时,城市地区就会出现贫困。这将导致城市贫民窟、非正规工作和更高的犯罪率,与中高收入群体相比,他们的经济保障要少得多。贫民窟居民的流离失所将使他们进一步陷入贫困,因为他们将远离自己的收入来源。

政府、非营利组织和援助机构已经为减轻贫困做了几次尝试。例子多种多样,从提供现金转移和公共住房到小额信贷和技能建设培训。然而,许多人未能成功实现预期目标。例如,在 2000 年代末,援助机构分发免费蚊帐,以防止疟疾在非洲村庄传播。大多数村民没有使用渔网,而是用渔网捕鱼,甚至把它们卖到市场,因为他们更需要额外的收入。另一个例子是拉丁美洲和南亚各国为现有贫民窟居民开展的公共住房项目。尽管人们认为新的住房建筑质量不错,但目标用户仍然不愿意搬离贫民窟,因为新的地点不能提供同等水平的经济活动。这一失败是规划和决策的结果,这些规划和决策是基于主观观点或与富人标准的比较,而不是实际了解穷人的需求。大多数项目实际上都举行了公开听证会和焦点小组讨论,但是由于沟通不畅和/或参与者不具代表性,这种对话存在局限性。这就是数据科学派上用场的地方,它是一门使用大量数据来为决策提供见解和预测的科学。

我从比尔·盖茨和拉什达·琼斯的播客“问大问题”中发现了一个很好的数据用例。在一次关于不平等的讨论中,他们特别提到了哈佛大学公共经济学教授哈吉·柴提。利用大数据,Chetty 能够形成一种算法,预测年轻人在洛杉矶特定社区避免犯罪的可能性。在确定了那些发病率高的地区后,他能够看到这些地区的模式和特征。他还发现,像康普顿这样以前属于高犯罪率地区的地区,可以在几年内显著改善。有了这些见解,他可以追溯导致康普顿成功的因素以及在其他社区的潜在应用。

这个案例给了我一个关于发展中国家面临城市贫民窟问题的想法。首先,我们可以通过数字化电缆和管道装置的当前数据来制定公用事业(电力和水)流量的数据集。更先进的是,我们可以将公用事业系统与物联网技术相结合,以监控电力和清洁水供应的可靠性。有了关于公共设施供应和质量的数据集,我们可以与从地理信息系统(GIS)数据中提取的另一个数据集相匹配,以绘制出社区地图。这种新的数据源将使人们了解每个社区可靠的电力和水的可获得性,或者换句话说,确定贫民窟区域。获得这些见解后,我们可以更深入地研究 GIS 数据,以了解贫民窟的类型。这方面的关键要素是房屋的物质条件、主要经济活动以及与公共设施和就业场所的连接。一个直接的反应是:让我们为这些社区提供电力和水。但对我来说,这些信息应该用来更深入地了解目标群体。这将是分析的下一阶段:了解居住者。

在第二阶段,我们可以通过移动应用程序或简单的谷歌表单访问或寻找联系选定贫民窟社区领袖的方式,以帮助识别居民。要收集的数据包括出生地点和日期、性别、职业、收入水平、教育水平以及当前和以前的受抚养人(居民的子女)的信息。最后一个数据点的目的是表明以前年轻居民的发展,如接受高等教育和安全就业。其他数据点将解释他们目前的状况,以及他们当初为什么选择这些定居点。拥有这些数据将有助于预测这些贫民窟的年轻居民稳定就业的可能性。如果可能的话,将学校数据数字化,看看生活条件和学习成绩之间的相关性,会很有意思。社区领导和居民填写这些表格的动机是一个明确的支持计划。这比听起来要困难得多,正确的沟通方式是关键。完成这些数据将使我们能够继续第三阶段:实验。

许多减贫举措是根据国外的成功做法和实施的简便性确定的。问题是,如何确保它能满足穷人的实际需求?再以公共住房项目为例,贫民窟居民是愿意搬到一个有可靠公用设施的新建社区,还是愿意升级他们目前的居住区?如果给他们一个更体面的住处,他们的生产率会提高吗?此外,他们会留下还是以更高的价格卖掉这个单位来获得额外的现金?实验将有助于规划当局了解穷人的需求,就像公司了解消费者偏好一样。为了回答关于住房的问题,我们可以选择两个类型相似的社区进行试验。其中一个将获得资本、设计指南和足够的基础设施来升级他们的居住区,而另一个将搬迁到一个有商业和就业空间的公共住宅区。前者的成本较低,但后者更容易实现。社区领导可以使用数字平台帮助管理和更新进度。几个月后,我们可以通过测量生产率(居民人均收入的增长)和居民满意度来评估这两个项目。升级后的集团可能因为在当前位置有更多的经济活动而具有更高的生产率,反之亦然,因为重新定位后的集团可能很好地适应新环境。这将有助于了解哪个计划会起作用,导致意外结果的因素以及升级到其他领域的可能性。实验输出也可以纳入数据科学家的机器学习算法,以预测计划或未来举措的经济输出。

为了进一步了解城市贫民,规划部门还可以与科技公司合作,利用它们的数据能力。这些公司将是金融科技和共享经济平台,具有相同的扶贫使命。疫情向那些依赖线下活动日常收入的人展示了数字化转型的重要性。要回答的问题是,城市贫民是从现金转移还是技能培养中获益更多?一组将获得电子钱包余额形式的现金,另一组将接受特殊培训,以在共享平台上表现出色,无论是作为司机还是食品商人,他们都将在同一个电子钱包中获得收入。这两个群体将被要求只使用电子钱包消费,这样就可以产生数据进行分析。通过使用技术合作伙伴的数据平台,当局可以了解这两个群体的额外收入和支出模式,以了解哪一个更具可持续性。如果结果都一样有效,甚至无效,我们可以更深入地实验什么是现金转移的正确数量和频率,以及什么技能或激励方案需要改进。

减缓贫穷的一个重要因素是赋予穷人影响决策和政府资金分配的权力。首先在巴西证明成功的一种做法是参与式预算编制。这是低收入群体通过参与地方政府预算编制过程发表意见的地方。通过开发一个数字预算平台,目前的技术也可以用在这里。社区代表可以使用这个平台填写他们渴望的预算,并提交给规划当局。使用数据分析和科学,我们可以看到这个群体认为最迫切需要改进的领域。

总之,数据科学将洞察穷人的实际需求,以制定正确的扶贫计划。有了技术和数据,我们可以了解目标群体当前和潜在的收入来源,提供一个平台来捕捉他们的愿望,并确定最有价值的社会保障要素。这将有助于我们决定促进哪些经济机会、赋予这些群体权力的政策以及分配援助的形式和水平。由于机器学习算法仍然具有主观性,因此仍然存在局限性。尽管如此,数据科学使我们能够更深入地研究人们面临的问题,并不断监测改进情况。我的结束语是:我们可以利用数据进行探索,包括为那些难以满足基本需求的人提供服务的最佳方式。

数据科学如何使网络安全故障排除更容易:防火墙日志分析

原文:https://towardsdatascience.com/how-data-science-could-make-cybersecurity-troubleshooting-easier-firewall-logs-analysis-591e4832f7e6?source=collection_archive---------14-----------------------

行业笔记

改善事件响应运营。使用数据分析技术和工具。

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

照片由来自 PexelsPixabay 拍摄

毫无疑问,我们正处于信息时代,从来没有如此多的信息来源,在网络安全领域也是如此。

当有人开始从事数据分析工作时,他经常听说在处理数据之前,大部分时间都花在处理、纠正和标准化数据上。如果不同的制造商使用标准化的日志,如果它们在不同的产品之间是一致的,或者即使日志格式很容易处理,这可能是一个微不足道的操作…那该多好啊…😍

在现实世界中,情况并非如此,在事件响应中,每个客户都是不同的,并且不得不与各种日志斗争是非常常见的。

在大规模事件中,最有用的日志之一是防火墙日志,它提供了有关进出外部的网络连接、内部组织流量以及在某些情况下甚至用户的 VPN 访问的信息。

以我的经验来看,我遇到的最常见的厂商之一就是 Fortinet。这家公司的防火墙非常常见,并且有一种日志类型,虽然很常见,但处理起来很可怕。

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

Fortinet 日志示例

这种日志是 bash 和 awk 爱好者的噩梦,对于我们这些喜欢更进一步的人来说,这是一个探索和理解数据分析工具重要性的机会😉。

在这种情况下,将分析一个中型组织的单个站点的 VPN 流量。一周内,产生了 1400 万个 VPN 流量事件。

第一步—向 CSV 转型

因为任务是用熊猫的日志来获取证据,我们需要熊猫能读懂的日志格式。

该函数允许我们提取文件每行的标题和字段,如下所示:

  • 通过分别捕获数据键、分隔符和数据来提取属性组。这样,对于每一行,我们将能够区分哪些是数据,哪些是键。
  • 为所有值分配相同的索引。
  • 因为有些字段有分隔符,所以生成了三个组。有必要将结果分组在一列中,以消除空结果。
  • 使用列 0 表示标题,使用列 1 表示值,生成包含数据的单行。

以下函数可用于在整个文件夹的文件之间迭代,并逐行读取和创建 Pandas 数据帧:

这个函数没有做什么特别的事情,它只是在日志的第一行创建一个数据帧,并在处理后添加每一行。完成所有行后,它在指定的文件夹中生成一个 CSV 文件,并删除原始数据帧以释放内存。
该功能可轻松修改,以便在所有文件的处理过程中维护生成的数据帧,并最终将数据保存在内存中。

这最后两个功能可以并行执行,以实现更高的处理效率。为此,有必要将它们存储在一个单独的文件中,以便能够从 Jupyter 中正确地执行多进程库。
之后,我们可以执行下面的代码,以并行的方式执行任务。

为了继续,主要有两个弊端。首先,每个文件的列数,因为根据日志的类型,有些文件包含不同的列;其次,处理所有记录所需的内存量。让我们一步一步来🏃🏻。

d6tstack 调整立柱

由于日志格式的类型,经常会发现文件中的列数不同,这与数据分析库不兼容。为了解决这个问题,有一个名为 d6tstack 的库。
该库对 csv 文件进行分析,并告诉我们每个文件中有哪些列,哪些没有。

import glob
import d6tstack.combine_csvcfg_fnames = list(glob.glob(r'C:\logs_vpn_out\*.csv'))
c = d6tstack.combine_csv.CombinerCSV(cfg_fnames)# check columns
print('all equal',c.is_all_equal())
print('')
d = c.is_column_present()

输出会是这样的。

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

Dask 列检查

为了纠正它,库本身提供了用固定列重写新文件中的数据的可能性。

fnames = d6tstack.combine_csv.CombinerCSV(cfg_fnames).to_csv_align(output_dir=r'C:\logs_vpn_out_fix')

一旦修复,我们可以进入下一个阶段,读取文件。

对抗对记忆的需求💪💻

这是数据分析中很常见的问题,我们有很多数据,没有足够的 RAM 来处理。
当我们的任务是定期存储标准化信息时,我们通常会选择将信息存储在 Spark、Elastic 等数据库中……但是在事件响应的情况下,通常需要快速分析一类我们很可能再也不会看到的事件。

为了处理这些情况,有 Dask。

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

https://dask.org/

这个数据分析库为我们提供了使用计算机资源以并行方式对日志文件执行查询的可能性。
换句话说,它允许我们有效地处理大量数据,而不必将它们加载到内存中。

当你习惯和熊猫一起工作时,读取文件的过程很快,但很耗时,令人惊讶的是,当用 Dask 读取文件时,响应是瞬时的。

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

Dask 数据帧创建

重要的是,此时 Dask 还没有读取文件,它已经按索引划分了数据,并且将在需要时读取它们,这就是它在此阶段如此快速的原因。
df物体不是熊猫。数据帧是一个 Dask。DataFrame ,重要的是不要忘记它。
在创建数据帧的过程中,标记每一列的数据类型对于加快查询速度和避免问题非常有用。

日志分析中最常见的用例之一是搜索事件期间的信息泄漏。为了做到这一点,我们将使用 Dask 执行一个查询,以获得一小部分可以在内存中轻松处理的数据。

df_exf = df[["remip", "tunnelid", "sentbyte"]].groupby(["remip","tunnelid"]).max().compute()

这个查询运行了 1 分 28 秒,这就是熊猫和 Dask 的最大区别所在。在 Pandas 中,如果数据适合内存,这个查询会快得多😅。
。compute() 函数允许用 Dask 结果创建熊猫数据帧。

在 1 分 28 秒内,我们对 1400 万条日志进行了查询,我们对它们进行了分组,并将其放在数据框中,Dask 太棒了!

如果您不知道这些日志是如何记录的,这个查询就没有多大意义。每次用户通过 VPN 与另一个 IP 地址建立会话时,都会分配一个名为 tunnelid 的唯一标识符。在 sentbyte 字段中,记录了该会话期间离开组织的信息量,但不是记录每个连接中的字节数,而是累积反映,因此只考虑会话期间所有连接的最大值。

为了便于读取以字节为单位的信息,我将使用这段代码。

前两个 IP 地址是合法的,与研究无关。这是要调查的前 5 个 IP 地址的图表。

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

发送到外部 IPs 的信息

在这一点上,有必要充实我们现有的数据。为此,我们将使用几个免费服务,MaxMind GeoIP,MaxMind ASN,AbuseIPDB 和 Dan Tor List。

MaxMind ASN

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

https://www.maxmind.com

这项服务将允许我们获得我们需要的 IP 地址。MaxMind 公司提供了一个数据库,我们可以快速下载并离线查阅。

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

IP 地址 ASN

通过这个功能,我们将能够获得事件的 IP 地址所属公司的名称。

MaxMind GeoIP

同一家公司提供了一个 IP 地理定位数据库,使我们能够非常可靠地知道 IP 地址的位置。

同样,我们将能够知道我们连接的 IP 的位置。在地图上,你总能更好地看到一切😏。

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

按国家分列的数据量

危险节点列表

攻击者使用 Tor 网络节点来匿名化他们的通信是很常见的,有时这可以是一个快速检查,为我们提供了一个很好的线索。在网站 dan.me.uk 上可以找到 Tor 节点的更新列表。

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

Tor 节点通信

尽管它们与数据泄露无关,但它们是必须检查其合法性的连接。

AbuseIPDB

AbuseIPDB 是众所周知的域名和 IP 地址信誉服务。通过它的 API,我们每天可以免费执行 1000 次查询。

AbuseIPDB 代码

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

AbuseIPDB IP 地址

在这种情况下,我们看到多个连接到声誉很差的 IP 地址,必须对其进行分析以验证其合法性。

此时,我们将进行新的查询,以便对数据进行新的可视化,从而尝试识别异常。

df = df_dask[~df_dask[“tunnelid”].isnull()][[“remip”, “duration”, “tunnelid”,”sentbyte”]].compute()

这个查询将返回所有数据的子集,通过下面的代码我们将得到。

现在,我们有 4 个变量来绘制图形,即创建到特定 IP 地址的隧道数量、到每个 IP 地址的总连接数、到每个 IP 地址的连接持续时间总和以及发送的字节数。
首先,如果我们制作一个连接数量和总持续时间的关系图,结果图将是这个。

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

连接数与持续时间

我用红色突出显示了数据泄露中使用的 IP 地址,这将是我们的目标之一。
考虑到显示的数据,恶意 IP 已经隐藏在大多数其他连接中,但该图可以帮助我们检测网络安全中非常常见的两种异常。
一方面,在左上部分,将会反映许多短时间连接的 IP 地址,例如钴击信标的情况,而在右下部分,将会出现长连接,例如 SSH 或 RDP 连接。

在下图中,我们将把发送的数据与连接的持续时间联系起来。

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

发送数据与持续时间

如您所见,这是检测大量信息泄漏的完美图表。在左上角,我们将显示已建立短连接但发送了大量信息的 IP 地址。
最后,我们将可视化发送的信息和连接数量之间的比率。

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

发送的数据与连接

该图可以帮助我们直观地看到少数连接中的数据泄漏,如将文件上传到云或通过 SSH 发送文件,以及隐蔽通道中的数据泄漏,如 DNS 或 ICMP,因为我们会看到许多连接和发送的大量信息。
为了结束本文,我们将执行更高级的分析,尝试同时使用四个变量来检测连接中的异常。

PCA —主成分分析

简化它,这种机器学习技术将允许我们在不失去数据唯一性的情况下进行降维。我们将从四维发展到二维,这样我们就能够用图形来表示它,并试图将异常现象可视化。

正如您在代码中看到的,执行了二维缩减,然后添加了 remote IP 列,以便更容易识别图中的数据,结果如下所示。

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

PCA 结果

一旦显示在图表上,我们就可以识别连接中的异常。

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

主成分分析数据图

通过这种方式,我们可以快速识别连接中的异常,这将为我们开始调查提供线索。

尽管可以对这些数据进行大量的进一步分析,但现在是时候结束这篇文章并继续下一篇文章了。完整的笔记本可以在此链接获得。

总而言之,很明显,数据分析是几乎每个行业未来的关键之一,但在网络安全方面,它现在是,将来也将是分析师的核心技能。
在事故调查或监控过程中,知道如何使用我们所掌握的工具将会在时间和结果上有所不同。

我将继续谈论在我的日常工作中有用的笔记本,希望你会发现它们有用。

研究愉快!

数据科学家和数据工程师如何有效协作

原文:https://towardsdatascience.com/how-data-scientists-and-data-engineers-can-collaborate-effectively-4d33a23f211c?source=collection_archive---------7-----------------------

一位前数据工程师转型为数据科学家的建议

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

来自派克斯派克斯拍摄的照片

如果您是数据科学家或数据工程师,您可能会发现很难很好地合作。作为一名数据科学家,你得到的数据与你的期望不符,而作为数据工程师,你被要求完成说起来容易做起来难的任务。作为一名前数据工程师转行成为数据科学家的,我想讨论一下我发现的帮助数据科学家和数据工程师更有效合作的方法。

提供背景

作为一名数据科学家,您与利益相关者一起理解请求的上下文,确定优先级,并就可交付成果达成一致。当您向数据工程师提出请求时,使用相同的方法。数据工程师不断被要求提取新数据或调查数据管道或质量问题的请求轰炸。他们需要理解你的请求的背景,以便相应地优先处理他们积压的任务。

数据科学家建议:

在提出数据工程要求时回答 4 W 问题。

  1. 谁从这些数据中获益。—营销需要知道网站访问者来自哪里。
  2. 需要哪些数据。—对所有营销网页的网站访问。
  3. 为什么需要这些数据。—了解网站访问者的来源有助于营销优化他们的工作,优先考虑高转化率渠道,以推动更多销售。
  4. 何时需要这些数据。—尽量早些而不是晚些提出请求,以便处理数据工程积压工作。为您的营销交付日期分配额外的时间,以考虑提取数据的数据工程。

数据工程师建议:

  • 创建一个帮助页面,列出请求所需的详细信息,并与数据科学团队一起审查。或者,在数据工程申请表中要求提供这些信息。这为两个团队节省了时间,让他们可以提前了解细节,而不必来回询问问题。
  • 数据科学家可能不知道所有可用的数据。考虑创建一个包含位置和描述的数据目录,以便数据科学家在请求可能已经存在的数据之前进行审查。

提供数据规格

数据工程师更喜欢有清晰规范的请求,因为他们不可能知道什么对你的分析最有利。作为一名数据科学家,要努力澄清数据字段、任何数据处理逻辑(如处理空值)以及数据所需的日期范围。

有模糊的规范,如“拉网站访问者数据”会增加处理你的请求的时间,因为数据工程需要提出澄清问题。诸如“从 2021 年 1 月 1 日开始为访问以‘www’开始的页面的访问者拉取网站访问者数据,并存储在名为 website_visitor 的数据库表中”的明确规范提供了更多细节并减少了问题。

我曾经犯过一个错误,没有指定在更新前应该删除同一天的数据,结果在表中得到重复的数据。除了所需的历史记录之外,还要注意您希望如何更新新数据。

数据科学家建议:

  • 提出请求时,尽可能提供详细信息。这减少了来回的问题,意味着你的请求可以更快地完成。
  • 在数据工程花费时间提取历史记录之前,要求包含几天数据的样本数据来检查值并确认所有必需的字段都存在,特别是如果您需要回填几年的数据。否则,您可能会得到与预期不符的数据,并且必须等待几天才能重新运行完整的历史记录。
  • 具体说明应该如何更新数据,以避免重复记录。例如,运行从 2021 年 1 月 1 日到最近日期的一次性历史回填。对于每日增量更新,删除运行日期的现有数据,然后添加当天的数据。如果您不需要增量更新,请指定您希望以自己选择的频率(即每天一次)完全刷新数据。

数据工程师建议:

  • 为标准请求创建一个项目清单,例如引入新数据,根据请求详细信息进行审查,以确认您拥有所需的所有信息。这将防止在您实际处理请求时出现延迟,并在开始之前意识到您需要更多的信息。
  • 如果您不确定数据科学家想要的数据是什么样的,尽管问。澄清比修改 ETL 并重新运行作业要好,因为这不是数据科学家所期望的。

提供质量保证规范

数据工程师可以支持多达数百条数据管道,他们工作的主要部分是确保这些 ETL 作业运行无误,并对那些不正确的作业进行故障排除。通过在将数据传递给您进行审查之前进行 QA 检查,帮助缩短您的请求的周转时间。

例如,我曾经在一个数据迁移项目中与数据工程师合作,复制一个现有的 ETL 管道来加载到一个新的数据库中。我知道我期望看到的数据,但是数据工程师不知道,因为他们不熟悉这个 ETL 管道。我提供了一些 SQL 语句,数据工程师可以运行这些语句来确认数据是否被正确加载。这有助于他们知道数据没有被正确加载,以便对 ETL 代码进行故障排除,并节省了我审查没有做好 QA 准备的数据的时间。

数据科学家建议:

  • 为数据工程师可以运行的预期值或 SQL 语句提供指导,以确认 ETL 按预期运行。你提供的细节越多,你需要回答的问题就越少。

数据工程师建议:

  • 快速浏览一下加载的数据,看看是否有什么异常。例如,如果每一列都为空,这可能是您应该调查的问题。
  • 询问数据科学家是否可以运行任何标准检查来确认数据是否按预期加载。

最后的想法

随着数据角色的不断发展,数据科学家和数据工程师需要学习如何有效地合作,以便在组织中取得成功。虽然我们现在可能无法完美和谐地合作,但我希望这能让你们更进一步,更有效地合作。

你可能也会喜欢…

</6-best-practices-i-learned-as-a-data-engineer-9d3ad512f5aa> </6-bad-data-engineering-practices-you-shouldnt-apply-as-a-data-scientist-58de5eca14c3>

内容概要:该论文研究了一种基于行波理论的输电线路故障诊断方法。当输电线路发生故障时,故障点会产生向两侧传播的电流和电压行波。通过相模变换对三相电流行波解耦,利用解耦后独立模量间的关系确定故障类型和相别,再采用小波变换模极大值法标定行波波头,从而计算故障点距离。仿真结果表明,该方法能准确识别故障类型和相别,并对故障点定位具有高精度。研究使用MATLAB进行仿真验证,为输电线路故障诊断提供了有效解决方案。文中详细介绍了三相电流信号生成、相模变换(Clarke变换)、小波变换波头检测、故障诊断主流程以及结果可视化等步骤,并通过多个实例验证了方法的有效性和准确性。 适合人群:具备一定电力系统基础知识和编程能力的专业人士,特别是从事电力系统保护与控制领域的工程师和技术人员。 使用场景及目标:①适用于电力系统的故障检测与诊断;②能够快速准确地识别输电线路的故障类型、相别及故障点位置;③为电力系统的安全稳定运行提供技术支持,减少停电时间和损失。 其他说明:该方法不仅在理论上进行了深入探讨,还提供了完整的Python代码实现,便于读者理解和实践。此外,文中还讨论了行波理论的核心公式、三相线路行波解耦、行波测距实现等关键技术点,并针对工程应用给出了注意事项,如波速校准、采样率要求、噪声处理等。这使得该方法不仅具有学术价值,也具有很强的实际应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值