TowardsDataScience 博客中文翻译 2016~2018(二百八十六)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

作为双人游戏的可变自动编码器——第三部分

原文:https://towardsdatascience.com/the-variational-autoencoder-as-a-two-player-game-part-iii-d8d56c301600?source=collection_archive---------5-----------------------

文本编码的困难

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

Illustrations by KITTYZILLA

欢迎回到这个关于可变自动编码器(VAEs)及其在文本编码中的应用的三部分系列的最后一部分。

在第一部分中,我们遇到了爱丽丝和鲍勃,他们正在为自动编码奥运会做准备。在跟踪他们的培训过程中,我们了解了自动编码器的概念和深度学习的一些基础知识。

不幸的是,由于我们发现的一些训练问题,我们不得不看着他们在争夺金牌的过程中悲惨地失败。

然而,他们在第二部中成功挽回了自己。通过遵循一种被称为可变自动编码的特别困难的训练方案,他们设法克服了自己的问题,重返奥运会,在比赛中占据主导地位,并取得了决定性的胜利。

现在让我们在爱丽丝和鲍勃带着他们的金牌回家后重新加入他们。

进入一个新领域:文本编码

艾丽斯和鲍勃因他们的胜利而欣喜若狂。但是他们很快开始寻找新的挑战。

他们决定在下届奥运会上设立一个新的项目。这门学科要求他们不是编码图像,而是编码句子。于是鲍勃挂上画笔,抓起一支笔,爱丽丝开始看书。

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

游戏的基本规则本质上还是一样的。

Alice 必须阅读一个句子,她需要将这个句子编码并发送给 Bob,Bob 然后必须尝试从 Alice 的代码中重建这个句子。

我们必须再次记住,就像《T4》第一部中的图像案例一样,我们的 AI 爱丽丝和鲍勃对语言完全没有先入为主的概念,甚至连单个单词的意思都没有,更不用说复杂的句子了。

最初的那句“一个高个子站在路边。”对他们来说就像“教堂娃娃后悔湖手无寸铁的机器变得像结一样”

他们的基本工具箱是所谓的词汇。他们能玩的一套单词。

问题是他们不知道这些单词的意思,也不知道如何将它们组合成有意义的序列。

这就好像给了他们一本字典,但没有任何解释。只是一长串英语单词。(并不是说这些解释会有所帮助,因为这些解释本身是由对我们的玩家来说还没有意义的相同单词组成的。)

再一次,爱丽丝和鲍勃必须从头开始理解外部世界,通过他们与提供给他们的句子和鲍勃从他们的教练查理那里得到的反馈的互动。

不过,在这个游戏的变体中,查理判断鲍勃预测的方式略有不同。

以前查理等待鲍勃画出整个图像。

另一方面,他不会等鲍勃说完整个句子。相反,他给鲍勃一个分数,并在他预测的每一个单词后给出反馈。

更重要的是,查理告诉鲍勃什么是正确的词。

这极大地简化了 Bob 的任务。他可以一次预测一个单词,而不是只根据爱丽丝的代码来预测整个句子,而是依靠他已经看到的单词来完善他对下一个单词的预测。

开发语言模型

我们每个人都有一个内置的(或者说是习得的) 语言模型。

考虑句子片段“狗追着…

你认为下一个单词是什么?要确定这一点,您只需调用您自己的语言模型。

鉴于不同的背景和经历,不同的人有不同的语言模型,但在这种情况下,我敢打赌,几乎每个人都会猜到“猫”。

但是,如果我现在告诉你,这句话取自一个关于外星人入侵的古怪科幻故事,会怎么样呢?

你可能仍然认为“猫”是最有可能的,但是你可能不再那么肯定了。或者你甚至可能期待一些不同的东西。你把你的语言模型建立在我给你的额外信息上。

这种条件反射正是 Bob 想要获得高分所需要学习的。特别是,他需要将 Alice 的代码作为他的语言模型的条件。Alice 再次需要想出一个聪明的方法,在允许她发送给 Bob 的两个数字中传达尽可能多的信息。

问题是,由于 Charlie 提供反馈的方式,Bob 实际上可以在游戏中变得相当不错,而无需调节他的语言模型。

就像上面的例句一样,在很多情况下,猜测“猫”是正确的,从而得到一个好的分数。只有在少数异常的句子中,这才是错误的猜测。

但是一个语言模型,如果没有条件,可能会产生误导。

让我们假设 Bob,在 Charlie 的纠正下,到目前为止已经猜出了文本片段“狗追赶…”并看看接下来会发生什么。

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

我们假设完整的句子是“狗从半人马座阿尔法星追逐艳丽的宇宙飞船”。等到鲍勃猜出最后一个词的时候,他的语言模型可能已经从“华丽的宇宙飞船”的最初震惊中恢复过来,他可能会对“半人马座”做出合理的猜测,即使没有对爱丽丝的代码进行限制。但是整个句子的总分已经很糟糕了。

考虑到允许的有限信息流,诀窍在于 Alice 准确地编码她认为让 Bob 感到惊讶的那种信息,并让他依靠自己的语言模型处理其余的信息,同时也希望他实际上首先使用了她的信息。

这就是信息理论家所说的高效代码

准确编码最令人惊讶的东西,省略其余的。

这也与你可能在各种场合听说过的的概念密切相关。但是对它的彻底讨论本身就需要很多文章。

在过去,人们曾试图为各种各样的问题手工编写有效的代码。但现在,如果训练正确,像 VAEs 这样的模型实际上可以自动找到非常复杂问题的高效代码。

请注意,在现实中,解码器实际上并不是在每一步都只预测一个单词。它实际上预测了词汇表中每个单词的概率。

因此,虽然在示例中 Bob 可能给了“cat”99.9%的概率,但他也给了他知道的每个其他单词有限的概率,包括正确单词“flamboyant”的 0.0000037%的概率。

这就是为什么我们的评论家查理给鲍勃一个精确的分数。如果他把 100%的概率分配给正确的单词,他就只能得到满分。他给出正确答案的概率越低,他的分数就越差。

听起来不错,不是吗?Bob 只需要根据 Alice 的代码设置他的语言模型,然后它们就都被重新设置了,对吗?

爱丽丝的挣扎

嗯,是的。但是……事实证明,在这个新的领域里,爱丽丝相当挣扎。

在猫和狗图像的情况下,我们在第一部分中看到,Bob 可以在不参考 Alice 的代码的情况下获得一些早期的胜利(用两个更小的圆形斑点作为眼睛来绘制一个灰色/棕色斑点)(由于缺乏 Bob 的反馈,当时仍然是随机的)。

但这并没有让他走得很远。很快他就被卡住了,需要弄清楚如何使用爱丽丝的代码。

然而,在这个新的学科中,Bob 实际上可以在不考虑 Alice 的代码的情况下玩得相当不错(因此没有给 Alice 任何有用的反馈)。

同样,在第二部分中,我们注意到在可变设置中,代码传输的更高精度是以更高的惩罚为代价的。

现在,由于 Alice 意识到 Bob 无论如何都没有使用她的代码,她认为她还不如增加不确定性,这样他们就不会因为准确发送一个毫无用处的代码而支付额外的罚款。

如上所述,最初 Bob 和 Alice 都没有任何语言模型。文字对他们来说只是一堆乱七八糟的东西。

但是在很早的时候,通过计算单词的出现次数,Bob 可能会意识到“the”或“A”是句子开头最常见的单词,所以他可能会以这些单词开始每个句子。

仅从词频来看,这些是最常见的词。所以一开始 Bob 可能会想出一个策略,一遍又一遍地重复同一个单词(“the the the the the”),因为他注意到这给了他比随机猜测更高的分数。

但是很快他会注意到“the”后面通常是一个名词。英语中最常见的名词之一是“时间”,所以作为第一个改进,鲍勃可以学习说“时间时间时间…”。

慢慢地找出这些越来越长的常用单词组合,Bob 建立了他的语言模型。

他学习英语的统计学。

或者至少是在他们的训练数据中使用的特定语言。在推特上训练的语言模型和在圣经上训练的语言模型是非常不同的。

当鲍勃被自己卡住,不能再提高分数时,他已经学到了很多,而爱丽丝仍然停留在最开始。

爱丽丝学习起来要困难得多。

Bob 在预测每一个单词后都会得到直接反馈,而 Alice 在理解整个句子时得到的唯一反馈来自 Bob 发给她的两个反馈号码。

如果 Bob 根本不使用她的代码,他也不能给她有用的反馈。

因此,Alice 基本上只是从 Bob 那里获得随机噪声来改进她已经随机的代码。

由于 Bob 甚至没有得到 Alice 的实际理想代码选择,而是一个带有一些额外不确定性的值,所以变化的设置使这变得更加复杂。

已经随机的代码被进一步随机化。

所以现在 Bob 自己已经相当不错了,而 Alice 还没有学到任何东西,我们有陷入所谓的局部最大值的风险。

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

鲍勃得到了一个他自己无法提高的不错的分数,但每次他试图听爱丽丝的话并使用她发给他的代码来影响他的预测,他们的分数就变得更差。

学习过程类似于没有地形图的登山者在浓雾中寻找顶峰。

他们唯一能做的就是沿着最陡的方向向上走。一旦他们到达一个点,任何方向下山,他们认为他们到达了最终的顶峰。但他们不知道,如果他们只是下山一小会儿,他们就可以到达更高的山峰。

因此,鲍勃,就像一个认为自己已经完成攀登的登山者一样,放弃了通过使用爱丽丝的代码来改进的尝试。

他的过程已经非常精炼,以至于它对试图将他的语言模型限制在代码上所引入的变化非常敏感。

他不知道的是,如果他可以牺牲他们的分数一小会儿,并尝试使用代码和给爱丽丝一些反馈,他们可以摆脱困境。

爱丽丝可以学到足够的东西,为鲍勃提供有用的代码,使他能够做出比自己更准确的预测。

但是鲍勃太近视太自信了,不会牺牲他们的分数。

恢复平衡

我们如何帮助 Alice 完成说服 Bob 使用她的代码并提供良好反馈的艰巨任务?

这个问题在学术界已经存在一段时间了。自从人们开始在文本上使用 VAEs 并遇到这个问题。

而且还是没有完全解决。但是已经出现了许多想法,使得文本的变分自动编码足够好,可以在实践中使用。

就像在第二部分中引入变量方面使自动编码变得更难,但提高了性能,所以这里的大多数策略也包括使问题看起来更难,而不是更容易。

特别是,人们试图让 Bob 的任务更具挑战性,这样他就不能在学习方面轻松超过 Alice。

有一种方法,叫做“单词退出”,让我们的评论家查理有时保持沉默。

他仍然总是给 Bob 的单词预测评分,但他不时地不透露正确答案,给 Bob 自己的语言模型提供更少的信息。

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

让我们再来看一下例句“狗追着……”。让我们假设查理对第二个词保持沉默。所以对鲍勃来说,这个句子现在看起来像是“The …追赶 the…”。

我敢肯定,你自己的语言模型在信息不完整的情况下预测这个句子的下一个单词要困难得多。

鲍勃也是如此。他开始从爱丽丝的代码中寻找线索。

在改变查理的行为方面,其他方法甚至更加激进。

在其中的一个中,查理没有在鲍勃说完每个单词后给他打分,而是等鲍勃说完整个句子后再给他任何反馈。

这类似于 Charlie 在 image 案例中所做的(实际上 Bob 使用的神经网络架构也与 image 案例非常相似,都使用了卷积神经网络)。

这样 Bob 基本上不能依靠他自己的语言模型,因为他不知道他对句子的预测一开始是否正确。

这给了他一个很大的激励,让他很早就向 Alice 咨询更多的信息。

实际上,这种方法并不太成功,任务对 Bob 来说变得太难了。

但是它还没有被完全抛弃。它仍然是一个活跃的研究领域。

最成功的方法(例如,从 膨胀卷积 构建鲍勃的大脑,而不是更常见的递归神经网络)实际上并不旨在使任务本身变得更难。相反,他们让鲍勃变得更笨,或者更健忘。

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

如果我们以正确的方式让鲍勃变得更笨,本质上是让他有轻微的学习障碍,我们基本上给了处于不利地位的爱丽丝一个跟上鲍勃进步的机会。

想象一下,例如鲍勃·格特非常健忘。

可怜的鲍勃现在一次只能记住两个单词。在一句话的中间,他已经不知道它是如何开始的了。

我们的例句现在对他来说就像“…追逐…”。

错过了这个重要的上下文信息,他急切地寻找任何可以帮助他理解下一个单词的信息。他高兴地转向爱丽丝的代码。

这种方法(尽管相当复杂)已经被证明在确保 Alice 和 Bob 同步学习并且不陷入局部最大值方面非常成功。

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

起初,他们的分数比鲍勃还聪明时上升得更慢。但最重要的是,它一直在上升,没有被卡住。

还有一种方法(称为 KL 成本退火 ) 可以与任何其他方法结合使用,它考察了 Charlie 因代码的不确定性而惩罚 Alice 的方式。

正如我们在第一部分第二部分的图像案例中看到的,使用变分机器对于学习训练数据集之外的示例至关重要。但这也增加了爱丽丝向鲍勃传递有用信息的难度。

新方法允许 Charlie 灵活地决定如何惩罚 Alice,因为她使用了一个小的不确定性。

一开始,当他们还没有学到任何东西时,Charlie 非常宽容,允许 Alice 指定她想要的精确代码,而没有任何惩罚。

但是随着训练的进行,查理逐渐加大了惩罚力度。

正如我们所看到的,这可能会导致代码中的“漏洞”,即 Bob 不知道如何解码的代码空间区域。但是后来,随着我们重新引入惩罚,Alice 开始使用更高的不确定性,他们将自然地不得不学习平滑他们的代码并使漏洞消失。

爱丽丝基本上得到了一个适应她学习曲线的惩罚。

特别是,这个任务不再那么困难,以至于她没有学到任何东西。

这一点,再加上降低鲍勃的智商,使得他们能够非常成功地对文本进行编码。

那么他们可能会学习哪种代码呢?

Bob 需要根据 Alice 向他提供的内容来设定他的语言模型。

即使他们只找出一个简单的代码,其中某些代码区域告诉 Bob 该文本是一条 tweet,其他代码区域是一篇新闻文章,还有其他的餐馆评论,也可以极大地帮助 Bob 更好地猜测下一个单词。

由于 Bob 也不知道什么时候真正停止他的预测,Alice 可能也会学习对句子的长度进行编码。

就像第一部分中的图像示例一样,一个轴上是狗/猫,另一个轴上是黑暗/光明,他们可能会学习一个简单的代码,在一个维度上编码句子长度,在另一个维度上编码“正式程度”。

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

再一次,随着训练的继续和两人的共同学习,他们可能会找到更聪明(也可能不太容易解释)的方式来编码这两个数字中的大量信息。

我们也看到了代码应该是平滑和连续的。

这意味着如果 Alice 想编码一个句子并且不使用太低的不确定性,她需要确保她的代码是健壮的。

例如,她应该对句子“我去了他的家”和“我去了他的公寓”使用非常相似的代码,这样当鲍勃解码时,将一个代码改变为另一个代码的随机性不会产生太大的后果。

然而,句子“学习中的这种有问题的趋势由于 LSTM 解码器对隐藏状态中的细微变化的敏感性而加剧,例如由后验采样过程引入的变化”应该具有非常不同的代码。

不小心发送了“我去了他家”而不是“我去了他家”会导致查理的分数很低。

在改进了他们的训练过程和代码之后,Alice 和 Bob 再次从自动编码奥林匹克中凯旋而归。

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

接下来呢?

还有很多其他学科,比如音频编码。

也有完全不同的任务,它们不是严格的自动编码,但仍有许多相似之处,例如翻译,Alice 用一种语言编码,Bob 用另一种语言解码。

听起来更棘手,的确如此!

但是在这种情况下,有稍微不同的规则允许 Bob 使用所谓的*【注意】*。

实质上,除了爱丽丝发给他的整个句子的代码,他还可以向她要一个他需要预测的每个新单词的“额外代码”。这种技术基本上是谷歌翻译近年来变得如此优秀的原因。

文本摘要也是一个密切相关的学科。在这里,Alice 对一个长文本进行编码,Bob 必须将其解码为摘要。

还有无数更多的训练方法,包括尚未发现的方法,将帮助他们跟上他们已经掌握的学科中日益激烈的竞争。

但是现在,爱丽丝和鲍勃需要休息。

为什么只剩下“供应商易燃性酸性测试”

原文:https://towardsdatascience.com/the-vendor-flamability-acid-test-e56dc0587da5?source=collection_archive---------4-----------------------

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

Picture from the brilliant Halt and Catch Fire, which you should watch if you haven’t.

TL;DR — 对于安全团队没有亲眼目睹过被尝试、测试和证明的任何事情,他们的起点 90%都是废话。

坦率地说,在“网络、风险、分析和大数据”这些词交叉的地方进行竞争分析令人沮丧。为什么?因为即使在营销信息的层面上,你也是在为 50 个供应商挑选网站文案,他们都试图通过说同样的话,使用同样的词语来区分自己。

"我们做机器学习网络风险优先级分析(如果你愿意,可以在云中!),用 AI 什么的。看看我们的客户标识。我们已经安装了很多。在这里签名!”

乐叹。

也许我对此缺乏耐心是因为我最近在纽约呆的时间更长了。英国口音依然存在,但弥漫在这座城市的“开门见山”的心态——当然也包括它的安保团队——已经渗透进来。

我在这里遇到的一些 sec 运营团队告诉我,他们每周在看到大约 10 家新供应商(最有希望的是“ML this”或“AI that”)。因此,他们理所当然地无情地采取最短的路径来判断你的技术是否可行,他们喜欢它的谈话,或者它是否是可以行走的易燃 BS。

几周前,一位银行人员向我解释道,这是一条可行之路,他负责保管甚至被认为是试用的技术产品:

将会有一场舞蹈,你在一个完美的、不切实际的实验室环境中向我展示你完美的演示。然后我会问‘你能做这四件事吗?’如果你说‘我能做第三个,但不能做第四个’,我会说‘等你能了再来吧’。如果你说“我们准备好了”,我的团队就会把你的技术扔进我们的环境,看看它会不会着火。如果有,我们就把它撕掉,把你从名单上划掉,然后继续下一个。如果没有,而且它有一些价值,我们可能会签署,看看一年的进展如何。”

我认为很令人沮丧的是,当涉及到价值的严峻考验时,门槛如此之低,如果你的技术在接入企业网络的现实时没有爆炸,你将远远领先于其他人。

但是等等,更糟的是!

[坦白:这句不朽的台词是一年多前伦敦的一个 CISO 人说的——但他们是纽约人,所以它仍然算数……算是吧。]

“我与供应商进行任何对话的出发点都是,如果他们能实现承诺价值的 10%,那将是一次令人震惊的胜利。可能是 2%,6 个月后我会想停止这个项目,再也不和他们说话。”

但是,今天,你很幸运能够有机会进行这样的对话。一个 CISO,我可能只和他保持友好关系,因为我从来没有试图卖给他任何东西,最近打给我:

“向我兜售我所没有的问题解决方案的新供应商数量惊人。供应商在他们的销售实践中变得如此无情,以至于大多数 CISOs 都断然拒绝与他们直接会面,而是让架构师或他们团队中的某个人负责跟踪产品前景。”

所以如果你为供应商工作;如果你想进入这个领域。你想知道为什么西索斯不想和你说话?简单的答案是:他们从零信任的立场出发。

因为他们没有时间来确定他们是否能信任你,现在唯一重要的证据是在布丁里,(特别是:吃布丁)。这不是你用来包装布丁的营销包装。不是别人说你的布丁有多棒的视频褒奖。这也不是你为你的布丁赢得的奖项而在 RSA 和 BlackHat 举办的派对(讽刺的是,参加派对的大多是其他供应商的销售人员,他们用你的钱喝免费啤酒)。

这一切之所以是是因为一个基线预期;“对于我没有亲眼目睹被尝试、测试和证明的任何事情,我将被告知的 90%都是废话”。

供应商…我们需要做得更好。

没错。现在,我已经把所有的话都说出来了,我可以继续写下几篇关于分析领域的文章了。更快…

和往常一样,如果你想了解一下 @panaseer_team 在做什么,(或者让我们做一个易燃性测试!?),那么请在这里取得联系。

我学习数据科学的方式(以及为什么我认为你应该使用它)

原文:https://towardsdatascience.com/the-way-im-learning-data-science-and-why-i-think-you-should-use-it-8c19b64dda9e?source=collection_archive---------3-----------------------

写这篇文章的想法来自于我在 PyData BH #8 的闪电谈话中谈到我学习数据科学的方法。似乎那里的人们喜欢它,所以,为什么不与世界分享我的想法呢?

首先,让我介绍一下我自己和我写这篇文章的原因。我是艾奎斯,我日常工作的一部分是分析数据。到目前为止,我不是一名全职的数据分析师或数据科学家,但我对数据领域有着浓厚的兴趣,因此我一直在阅读、观看视频和研究这方面的主题。

我不是来回答“如何成为数据科学家”之类的问题的/“我怎样才能在 DS 地区找到工作?”/“网上有哪些最好的 DS 课程?”。对于这个,你可以去 Quora 找一些有用的答案。

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

Data Science search trend in the last 5 year (via Google Trends)

如今,有一堆 MOOCs 提供了成为成功的数据科学家的黄金路径。你可以在 Coursera、Udemy 或 Datacamp 上花费一生的时间和大量的金钱来购买课程,但很可能他们不会给你一个数据专家最重要的技能:用他们教的工具解决现实世界的问题

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

So many courses that I can’t decide where to spend my money

对我来说,真正学习 DS 最好的方法就是通过练习来学习。这看起来似乎是显而易见的事情,事实也确实如此,但是如果你不知道从哪里开始,你怎么练习呢?我这里的方法是利用问题必须练习你的技能。

你能想出任何问题,无论是个人问题还是专业问题,并且可以用你在学习 Python/R、数据(即统计学或机器学习)时学到的东西来解决吗?为什么不用它们(即使它们已经解决了)来测试你的知识呢?

这里我举个我个人的例子。在过去的几个月里,我一直在走 Datacamp 数据科学家之路(Python)。我很快发现的一件事是,Datacamp 在实践方面非常糟糕。大多数练习就像复制粘贴一样,不会让你真正思考问题的解决方案。那要怎么练呢?找到我遇到的问题,并尝试用我所学的知识来解决它。

在这个案例中,我使用了我的工作时间表,一个我每天进出办公室的时间的电子表格,并试图回答这些问题:

  • 我还有多少额外的时间
  • 按天/周/月计算的额外小时数是什么意思
  • 我加班最多的日子(不包括周末)

项目在这里:

[## aiquis/研究

时间表分析

github.com](https://github.com/aiquis/study/blob/master/timesheet-analysis/Timesheet%20Analysis.ipynb)

如您所见,这是一个简单的任务,可以使用电子表格轻松完成。相反,我更喜欢用 Python 来做这件事,使用 pandas 并从谷歌电子表格中读取数据,在那里我实际上填写了这些信息(我可以将其复制到本地 CSV 文件中以使其更容易,但我不会练习使用 gspread (一种谷歌电子表格 Python API)来收集我的数据)。我还没有完成这个项目,但现在我已经学到了非常酷的东西,并设法解决了只有当你处理真实世界数据时才会出现的问题

当然,你可以通过解决一些普通问题来练习,如预测泰坦尼克号上的幸存者建立一个垃圾邮件分类器,但是当你从事一个代表真实事物的项目时,你可能会有更多的参与来完成它,并且会觉得你所学的东西真的很有用,可以应用到你的日常问题中。此外,你将建立一个个人投资组合。

如果你想不出一个个人项目, 这个 Quora 回答 有一些不错的项目可以放在手上,建立一个作品集

当你解决一个问题时,你将自己置于一个有问题、需要由数据专家解决的雇主的位置,但在这种情况下,你产生问题并解决它,成为整个链条的一部分:有问题、明确问题、制定解决方案、审查、发展并获得对结果的见解。

如果你真的想与数据打交道,作为一名数据科学家或数据分析师,你真的应该把手弄脏,并尝试解决问题。光看讲座不会让你成为解决问题的人、**、**这才是作为数据专业人士真正重要的。环顾四周,试着把你的日常工作当作数据科学问题来面对,把你所学的应用到解决方案中(即使这不是最简单的方法),陷入你没有预测到的问题并解决它(谷歌和 Stackoverflow 是你的朋友)。最后,建立一些让你看到最终结果时感到自豪的东西,这是最棒的部分。

特别感谢我的朋友 卡伊奥·马托斯 和拉斐尔,他们审阅了这篇文章并给了我一些反馈。如果您有任何反馈,请在此发表评论或通过Twitter联系我!

韦斯特杰特推动航空公司走向未来

原文:https://towardsdatascience.com/the-westjetter-propelling-an-airline-into-the-future-6e1dd2e68452?source=collection_archive---------14-----------------------

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

Alfredo C. Tan, Chief Digital and Innovation Officer, WestJet

如今,数字颠覆司空见惯。它发生得如此频繁,以至于当它发生时,它不再像以前那样令人印象深刻。然而,它不断提醒许多传统组织的首席管理人员,他们需要进行转型,以跟上不可预测的市场和不稳定的环境。

随着这家加拿大航空公司逐渐成为一个全球成功的故事,WestJet 新任首席数字和创新官 Alfredo C. Tan 被赋予了推动这一新方向的任务。在短短的 20 年里,西捷航空在北美、中美洲、加勒比海和欧洲建立了 13,000 多名员工和 100 多个目的地,并通过合作伙伴关系在 20 多个国家建立了 175 个目的地。

与几乎所有行业一样,全球旅游业和旅游业也经历了重大变化。这个价值 7.6 万亿美元的行业的商业模式发生了显著转变,部分原因是 Airbnb 和优步等颠覆者。航空业也不能幸免。受传统运营和严格监管的影响,转型的愿望不是短时间内可以实现的。

航空中心发布的这份 2017 年报告承认了这些变化:

与其他任何行业相比,航空公司都受制于 70 年前设计的晦涩难懂的监管框架,其目的除了防止新的进入之外别无它用。这是一个资本密集型的高度工会化的行业,由传统模式主导,仍然专注于购买和飞行昂贵的金属。但从本质上讲,航空产品只是另一种消费零售产品。因此,它同样容易受到剧变的影响……我们所知道的航空业到 2025 年将会面目全非,因为其基本特征将被彻底根除。这一过程将会加速,因为商业航空的每个关键方面都会出现混乱:飞行和销售。

我有幸与 Alfredo C. Tan 坐在一起,探讨他的西捷之旅,以及他对在一个已有成就的组织中引发一些必要变革的愿景。

痴迷于加入赋予互联网一代权利的运动

阿尔弗雷多记得思科系统公司“赋予互联网一代力量”的广告。这一强有力的信息描绘了一个被网络和市场的最终连接所改变的世界。当时,作为一名法医学和生物学的学生,他觉得自己错过了成为 dot.com 公司诞生这一不可思议浪潮的一部分的机会。

当他毕业时,他在《财富》杂志上读到一篇关于顶级商学院毕业生拒绝蓝筹股公司去硅谷追逐新的淘金热的文章。阿尔弗雷多不会放过任何一个机会,他学会了如何编码,并沉浸在计算机和技术课程中。很快,他在 Bell Nexia 从事系统工程和设计,并最终带领一个工程师团队在世贸中心灾难期间帮助恢复纽约和多伦多电信公司之间的连接。一路上,阿尔弗雷多一直在寻找愿意教他的导师:

专业领域的大多数事情,即使没有接受过正规教育,你也能做得很出色。有了足够的指导、求知欲、才能、勇气和激情,你几乎可以在任何地方获得成功。

无论是在加拿大贝尔,他学会了建立大规模的战略联盟、企业营销和战略,还是在 MSN.ca,他接触到了颠覆性的在线广告、媒体销售和互联网营销,还是在雅虎!阿尔弗雷多在移动、搜索和企业合作伙伴关系领域工作,他的旅程体现了他整个职业生涯中的学习咒语。

脸书:改变一切的平台

如果你能预见未来,知道十年内你的公司刚刚进入 S&P500,你会毫不犹豫地加入。在 2008 年,这一点几乎不明显,阿尔弗雷多挣扎着决定离开一份充满无限机会的令人惊叹的工作,这家公司仍然是一个社交网络的互联网巨头,人们认为它被高估了,没有明确的盈利战略,没有真正的市场差异,很容易像 MySpace 或 Friendster 一样半途而废。对他来说,2008 年旅行归来的那一刻是决定性的时刻。他记得,

在我 2007 年旅行回来之前,我在刚认识的人之间交换了电子邮件地址。到我 2008 年去旅行的时候,每个人都只交换脸书的身份证。在 12 个月内,从电子邮件到脸书的移动是不真实的。脸书真正构建的是大规模的身份认同。它真正拥有的是人——22 亿人。而且随着它的不断成长,它继续是无懈可击的。

他选择冒险去脸书,尽管所有的指导和建议都是相反的。他在那里待了 8 年,最后两年与东南亚和拉丁美洲高增长市场的领导团队一起工作。这些学习改变了生活,定义了职业。

为什么传统商业不能适应市场变化?

尽管脸书和社交网络在全球范围内取得了诸多成就,但企业仍未完全接受跟上动态市场步伐所需的变革。

阿尔弗雷多指出了谷歌、网飞、脸书、微软、优步、苹果和亚马逊等颠覆者。这些公司有不同的方式来建立他们的创新文化。他们之间有什么共同点?

  1. 他们带着一种紧迫感前进
  2. 他们崇拜速度
  3. 他们不怕变化

这是对传统公司运营方式的两极化观点。

作为 WestJet 的首席数字和创新官,Alfredo 的经历使他对未来的挑战已经成熟。WestJet 认识到变革的必要性和支持变革的文化。作为一家传统公司,它的行为与阿尔弗雷多习惯的环境大相径庭。来自技术领域,有一个共同的理解,一个共同的思维方式,因为技术不是你需要说服人们投资的东西。

这是公司 DNA 中的固有基因。

在大多数传统公司中,数字化并不是公司成功的基础。成功来自组织内的其他实践。挑战变成了说服公司里的一群人投资你认为正确的东西。

阿尔弗雷多认为,大多数领导者和员工都明白世界已经发生了巨大变化,但还不清楚数字化如何成为竞争优势。教育和赢得人们的心和思想有一个过程,即“在他们看到之前相信它”。高管们相信变革是西捷航空的新常态。员工真正的兴趣和动力激发了 Alfredo 的灵感,使之成为现实。

西捷航空有史以来第一次黑客马拉松

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

#HackintheHangar WESTJET

换一种方式思考需要时间。你不能简单地说一句就假设人们明白了。正如他继续了解一个无限复杂的行业一样,Alfredo 和他的团队反过来需要以一种帮助整个公司理解数字化和创新对业务的影响的方式来教育和讲述这个故事,没有行话,也没有炒作。

这很快就有了结果。西捷航空忠诚度副总裁达西·莫纳汉(d’Arcy Monaghan)和产品开发经理朗达·雷诺兹(Rhonda Reynolds)与阿尔弗雷多接触,讨论为高端旅客开发解决方案,然后这些解决方案可以惠及西捷航空的所有乘客。阿尔弗雷多刚上任几周,并不认为他和他已经受到限制的团队有能力独自解决这个问题。

虽然最初的想法是在来自不同部门的一群人之间进行头脑风暴,但它很快演变为包括阿尔弗雷多在技术行业的一些朋友。随着越来越多的人听说这件事,他们就越想参与进来。内核发展成了全天黑客马拉松的想法,这是一场开发无缝优质客户体验的比赛,于是#HackInTheHangar 诞生了。

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

#HackintheHangar WESTJET

Alfredo 邀请了一些最大的技术公司和系统集成商,如 Adobe、脸书、亚马逊、德勤数字、谷歌、松下航空电子、Twitter、LinkedIn、Snapchat、Hootsuite、IBM、Salesforce、Huge Inc .等。总共有 17 家公司及其 120 名来自技术、创意和设计背景的人员与 37 名 WestJetters 和 12 名 WestJet 的高级旅行者配对参加了这次为期一天的活动。正如阿尔弗雷多指出的:

最初,这个非常简单的想法在公司引发了这场运动,旨在回答几个关键问题:

我们如何向 13000 人展示我们可以用不同的方式解决问题,共同创造新的体验?

更重要的是,以更大的速度:

我们如何让非技术人员在黑客文化中解决问题?

我们如何赢得全球技术社区的尊重,从而获得灵感并与我们合作完成我们的数字和创新使命,共同创造旅行的未来?

我如何赢得组织中关键高管的支持,我需要他们的支持才能取得成功?

这次活动的评委是经过精心挑选的。目标是展示在一天之内开发出的令人惊叹的想法和解决方案,让他们理解并宣传 Alfredo 对公司的愿景。

恰好会开飞机的数码公司

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

WestJet Plane at the #HackintheHangar

一天结束时,西捷航空的高管们几乎不需要说服。客户体验副总裁 Louis Saint-Cyr 指出,有遗留行为的航空公司限制了他们能为客户做的事情。黑客马拉松揭示了西捷航空需要适应日益数字化的旅客旅程。他证实了该行业目前在创新和监管之间的推拉作用产生了运营限制。尽管如此,路易斯看到了巨大的可能性:

这次黑客马拉松揭示了我们如何围绕这些结构性限制进行创新。我们如何以数字方式增强一线人员的能力,并增加 WestJetters 以技术定制客户体验而闻名的软技能?

…想想客户旅行过程中遇到的障碍:到达机场的时间、拿行李的等待时间、办理登机手续——这些都会增加压力。通过利用社交媒体的情感框架并将其与旅客旅程相结合,我们可以直接解决这些障碍,从而改变旅客的航空旅行。

…总的来说,通过将顾客资料与他们在飞机上、网站上和机场的期望结合起来,我们可以在顾客体验方面取得显著进步。

西捷航空首席执行官艾德·西姆斯(Ed Sims)宣布,在 24 个月内,西捷航空将成为一家碰巧会开飞机的数字公司。它向技术社区和领导团队发出了一个信号,即这次黑客马拉松不仅仅是一个附带项目;这将是公司的未来。

西捷航空的首次黑客马拉松代表了西捷航空向更具创新思维的文化转变。我们将快速行动,快速学习,快速建设。我们现在有机会以不同的方式做事,在旅游领域进行前所未有的创新。我们的目标是让产品远远超出顾客的期望。" ~Ed Sims,WestJet 总裁兼首席执行官

阿尔弗雷多的下一步?

黑客马拉松和由此产生的想法都是戏剧和理论,直到你开始建设。我们必须构建我们认为有吸引力的功能,以及我们将在未来研究的其他功能。创新是一种文化心态,但它来自于建设。

这些出色的想法将为未来五年发展这些能力奠定基础。此外,鉴于黑客马拉松后重复举办更多活动的巨大需求,WestJet 计划举办不同主题的年度活动。

在很短的时间内,黑客马拉松产生的接受度,灌输了一种将黑客文化嵌入公司的思想,作为解决问题的一种方式,并授权跨职能团队在有限的时间内自我组织和发明解决方案。

我们会找到一种方法,让它在组织中普及,这样,想要修正流程的机组人员就可以召集一群人来创建一个解决方案,然后在几天内提交给预算审批。它让黑客马拉松规模更小,团队规模更小,声势更小。希望这能影响 13000 人开始这样想。

我们才刚刚开始…最终,如果我是唯一一个负责数字和创新文化的人,我会在工作中失败。所有西杰特人都应该拥抱它和未来。

Alfredo C. Tan 的口头禅是保持好奇和不断学习,在最初的 90 天里,他推动组织以不同的方式思考,学习新的做事方式,并挑战他们想象力的极限。

这篇文章起源于福布斯

在移动设备上运行深度学习推理的是什么和不是什么

原文:https://towardsdatascience.com/the-what-and-what-not-of-running-deep-learning-inference-on-mobile-81aa394ad27d?source=collection_archive---------8-----------------------

这个概念在我的草稿中已经存在很长时间了,我已经意识到缺乏相关的文档仍然会导致混乱,所以,我想把我的经验和理解发表出来。

文章假设,深度学习如何工作的基础知识以及它们的实现。假设是,有一个模型在服务器或本地笔记本电脑上训练和工作,以预测事物。

现在,如果你想在移动设备上做类似的事情,有多种方法,我们将一步一步地讨论相同的方法。从示例的角度来看,假设您有视频,并且希望通过深度学习模块对其进行处理,并获得输出的分析指标。

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

整个解释将集中于在移动设备上实现上述框图时做什么和不做什么。

1。将数据发送到服务器进行处理

这里的想法是建立通信模块,它与服务器通信,将内容发送到服务器,让服务器推断数据,并将元数据发送回设备。

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

优势:

移动开发团队和数据科学团队之间的交流没有任何问题,发送数据和获取数据

缺点:

–>极高的延迟

  • 互联网可用性,与服务器同步(完全是另一个问题)
    ->-隐私(无法将数据发送到我的手机之外)

这个缺点不容忽视,这就引出了下一个重要的想法,

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

有各种各样的方法可以达到同样的目的,我们将逐一讨论它们的利弊。这方面最简单的方法是

2.使用开发框架的现有包装器

我们将从著名的、容易开始考虑的开发框架开始。

几乎没有相同方向的图书馆,

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

TensorFlow Lite

这是 Tensorflow 的移动版本,不会有太多的学习曲线,因为文档和支持都维护得很好。训练模型并在移动设备上运行推理,就好像您在本地计算机上运行一样。

优点:

->围绕模型转换运行的工作量最小,来自数据科学和移动开发团队的知识转移有限。

  • 比服务器方法相对更快

  • 无平台依赖性

缺点:

->大型号尺寸

  • 与笔记本电脑运行时相比超级慢

咖啡 2Go:

这曾经是由脸书的 Caffe 团队支持的,现在,他们已经将它作为 PyTorch 的一部分嵌入其中。我没有做过这个的最新版本,但是,我会根据我一年前的经验给出我的分析。

优点:

–>同样,从开发到生产的努力是最小的,如果你在 Caffe

  • 上工作,比服务器方法和 tensorflow lite

  • 相对更快,没有平台依赖性

缺点:

->大型号尺寸

  • 又来了,相比笔记本时间超级慢

  • 在我使用的时候非常不稳定(一年前)

在这个阶段,与服务器模式相比,我们已经大大提高了我们的性能,但是,这仍然不是我们可以开箱即用的东西。上述方法的主要问题是速度和模型大小,我们将尝试单独解决每个问题

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

加工速度:

为了解决速度问题,我们将尝试在计算机上解决相同问题的相同路线,解决方案很简单,使用更好的硬件,特别是 GPU 的引入改变了事情

同理,如果能在移动上使用硬件加速或者特定的硬件,就有加速的可能。这就引出了如何在手机上有效利用硬件的探索之路。
这导致将整个硬件空间分为两种类型:

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

受控硬件:

称之为一致的原因是,在不同型号的变化中,除了一些小的变化外,硬件方面没有什么大的变化。因此,在苹果设备上开发硬件特定模型更容易,这导致了对可用硬件能力的探索。

有趣的是,我们在那个时间点接触到了 metal 框架,它刚刚发布了卷积内核操作,作为他们框架升级的一部分。我们使用金属框架围绕操作员建立了模型,它工作速度非常快!( 盗梦空间 V3:150 毫秒 )

考虑到苹果最新的机器学习移动框架,金属的用法现在已经无关紧要了。

CoreML!

转换->加载->推断!

它支持大多数主要的运营商和图书馆。几乎所有库中的模型转换包装器都是可用的。在您感兴趣的任何框架中开发,使用可用的包装器将您的模型转换为 core ML 格式,然后加载模型并获得结果,您可以在少于 6 行代码中看到结果。

不受控制的硬件:
Android 可以在这里找到,因为不同制造商在硬件方面有很大的差异

这个平台本身有点复杂,要用我们为苹果做的同样的方式来解决它。我们的目标是通过硬件专用库来解决这一问题,如高通神经处理 SDK,它使用 snapdragon 820+手机额外的硬件功能。

这个 SDK API 使用 snapdragon 的 GPU 和 DSP 功能,在推理方面让事情变得更快。流程与 Core ML 相同,在任何开发框架中训练,转换模型,使用 SDK 在设备上使用。

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

侧写!

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

这种方法粗略地解决了我们对速度的想法——至少在一个基本的方式上,根据你各自的应用程序,速度可以做更多的升级。

模型尺寸:

默认情况下,如果从服务器直接移植到移动设备,模型的大小会非常大。模型越大,它消耗的内存就越多,当用户注意到所有这些事情时,事情就会变得非常困难,并且您不希望每次升级模型时都迫使用户下载千兆字节的数据。更大的模型还有各种其他的技术难题。因此,解决方案是减小尺寸,这就让我们遵循一些有趣的方法。

量化:
将 float 或 double 值转换为 int 值,这导致模型大小减少了 4 倍,从技术上讲,做所有这些事情有点棘手,但是,有足够的资源来检查它。

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

我发现 P 彼得·沃顿的文章在当时非常有用,我建议每个人在尝试使用市场上现有的东西之前先浏览一下。

https://Pete warden . com/2017/06/22/what-ive-learned-on-neural-network-quantization/

几个月前,甚至 tensorflow 也正式发布了相同的支持代码

https://www.tensorflow.org/performance/quantization

出于同样的原因,苹果的 Core ML 已经开始支持 16 位精度,而不是 32 位精度。

https://developer . apple . com/documentation/coreml/reducing _ the _ size _ of _ your _ core _ ml _ app

模型剪枝:
通过了解哪些模型权重不是那么有用,从模型中移除不重要的节点权重。

https://Jacob Gil . github . io/deep learning/pruning-deep-learning

https://arxiv.org/pdf/1611.06440.pdf

网络优化:
了解什么是需要的,什么不是,这是一个重要的方面。
人们必须相应地优化网络,比如用 1d 卷积替换全连接。如果一个人足够了解他们的网络,还有其他各种方法可以做到这一点。

结论:

我将以回答故事的标题来结束我的发言

什么不该做?

如果数据是图像/视频,不要使用基于服务器的方法。您可以使用基于服务器的小文本和基于语音的数据。

怎么办?

考虑到我的经验,在如何处理这个问题上没有单一的解决方案,它应该完全基于你想要解决什么样的问题。

话虽如此,如果问题是基于图像的,那么,我强烈建议围绕硬件特定的库编写您自己的包装器,这可以很好地提高模型速度并支持模型大小操作,您最终可能会这样做。

附言:我在 tensorflow lite 上的实验已经很老了,请随时再做一次实验,因为他们可能已经根据行业更新了他们的模块。

你可能也有兴趣探索百度图书馆的移动版本 paddle-mobile。我还没有完全做好这方面的工作,但是我听到了一些很好的分析评论。话虽如此,据我所知,目前的图书馆还不稳定

https://github.com/PaddlePaddle/paddle-mobile

我想提出的另一个非常重要的建议是,使用 ONNX 作为开发中模型序列化/去序列化的首选格式。一年左右你会感谢我的。

https://github.com/onnx/onnxT10https://onnx.ai/

MnasNet

如果你正在跟进谷歌最近的论文,你一定注意到了最近关于移动深度学习架构搜索的论文,这听起来非常有趣,我建议浏览一下这篇论文,这可能会给你一些关于设计网络以使其移动高效的见解。

https://arxiv.org/pdf/1807.11626.pdf

这些观点完全基于我一年前的实验和经验,可能对你不起作用。所以,请随时反对,如果内容偏离事实,我将非常乐意根据最新的标准进行编辑。

数据科学的内容、地点和方式

原文:https://towardsdatascience.com/the-what-where-and-how-of-data-science-6dda1af98671?source=collection_archive---------6-----------------------

数据科学——一个全球公认的急需传播的术语。

数据科学是一个逃避任何单一完整定义的术语,这使得它很难使用,特别是如果目标是正确使用它。大多数文章和出版物自由地使用这个术语,并假定它被普遍理解。然而,数据科学——其方法、目标和应用——随着时间和技术的发展而发展。25 年前,数据科学指的是收集和清理数据集,然后将统计方法应用于这些数据。在 2018 年,数据科学已经发展成为一个包含数据分析、预测分析、数据挖掘、商业智能、机器学习等等的领域。

事实上,因为没有一个定义可以完美地满足这个要求,所以就由那些从事数据科学的人来定义它。

认识到清晰解释数据科学的必要性, 365 数据科学团队设计了什么-哪里-谁信息图。我们定义数据科学中的关键流程并传播该领域。下面是我们对数据科学的解读。

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

Data and Data Science Infographic by 365 Data Science

当然,这可能看起来像是大量压倒性的信息,但事实并非如此。在本文中,我们将剖析数据科学,并将它重新构建成一个连贯且易于管理的概念。容忍我们!

数据科学,‘一分钟之内解释’,看起来是这样的。

你有数据。要使用这些数据为您的决策提供信息,这些数据必须是相关的、组织良好的,最好是数字化的。一旦您的数据一致,您就可以继续分析它,创建仪表板和报告,以更好地了解您的业务绩效。然后,你将目光投向未来,开始生成预测分析。借助预测分析,您可以评估潜在的未来场景,并以创造性的方式预测消费者行为。

但是让我们从头开始。

数据科学中的数据

在任何事情之前,总是有数据的。数据是数据科学的基础;这是所有分析所依据的材料。在数据科学背景下,有两种类型的数据:传统数据和大数据。

传统数据是结构化并存储在数据库中的数据,分析师可以从一台计算机上管理这些数据;它是表格格式,包含数值或文本值。实际上,术语“传统的”是我们为了清晰而引入的。它有助于强调大数据和其他类型数据之间的区别。

另一方面,大数据比传统数据更大,而且不是微不足道的大数据。从多样性(数字、文本,还有图像、音频、移动数据等。)、速度(实时检索和计算)、容量(以万亿字节、千万亿字节、千兆字节衡量),大数据通常分布在计算机网络中。

也就是说,让我们定义一下数据科学中的“什么”、“哪里”和“谁”各自的特征。

你要数据做什么数据科学?

数据科学中的传统数据

传统数据存储在关系数据库管理系统中。

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

Traditional data

也就是说,在准备好进行处理之前,所有数据都要经过预处理。这是一组必要的操作,可以将原始数据转换成更容易理解的格式,从而有助于进一步处理。常见的流程有:

  • 收集原始数据并将其存储在服务器上

这是科学家无法直接分析的未接触数据。这些数据可以来自调查,或者通过更流行的自动数据收集模式,如网站上的 cookies。

  • 对观察结果进行分类

这包括按类别排列数据或将数据点标记为正确的数据类型。例如,数字的或分类的。

  • 数据清理/数据清理

处理不一致的数据,比如拼错的类别和丢失的值。

如果数据是不平衡的,类别包含不相等数量的观察值,因此不具有代表性,应用数据平衡方法,例如为每个类别提取相等数量的观察值,并准备进行处理,可以解决这个问题。

重新排列数据点以消除不需要的模式,并进一步提高预测性能。例如,当数据中的前 100 个观察来自使用网站的前 100 个人时,这是适用的;这些数据不是随机的,而是由于抽样而形成的模式。

数据科学中的大数据

谈到大数据和数据科学,传统数据处理中使用的方法有一些重叠,但也有很多不同之处。

首先,大数据存储在许多服务器上,并且无限复杂。

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

Big data

为了利用大数据进行数据科学研究,预处理甚至更加重要,因为数据的复杂性要大得多。您会注意到,从概念上讲,一些步骤类似于传统的数据预处理,但这是处理数据所固有的。

  • 收集数据
  • 对数据进行分类标注

请记住,大数据非常多样,因此标签不是“数字”与“分类”,而是“文本”、“数字图像数据”、“数字视频数据”、“数字音频数据”等等。

这里的方法也千差万别;例如,您可以验证数字图像观察已准备好进行处理;或者数码视频,或者…

在大规模收集数据时,这旨在确保数据中的任何机密信息保持私密,而不妨碍分析和提取洞察力。这个过程包括用随机和错误的数据隐藏原始数据,允许科学家在不泄露私人细节的情况下进行分析。自然,科学家也可以对传统数据这样做,有时也是如此,但使用大数据,信息可能会更加敏感,这掩盖了更多的紧急情况。

数据从哪里来?

传统数据可能来自基本的客户记录,或者历史股票价格信息。

然而,大数据无处不在。越来越多的公司和行业使用并产生大数据。考虑一下在线社区,例如脸书、谷歌和 LinkedIn 或者金融交易数据。不同地理位置的温度测量网格也相当于大数据,以及来自工业设备中传感器的机器数据。当然,还有可穿戴技术。

谁处理数据?

处理原始数据和预处理、创建数据库和维护数据库的数据专家可以使用不同的名称。尽管他们的头衔听起来相似,但他们所扮演的角色却有明显的不同。请考虑以下情况。

数据架构师数据工程师(分别是大数据架构师和大数据工程师)在数据科学市场中至关重要。前者从头开始创建数据库;他们设计检索、处理和使用数据的方式。因此,数据工程师将数据架构师的工作作为跳板,并处理(预处理)可用的数据。他们是确保数据整洁有序并为分析师接管做好准备的人。

另一方面,数据库管理员是控制数据流入和流出数据库的人。当然,对于大数据,几乎整个流程都是自动化的,因此不需要人工管理员。数据库管理员主要处理传统数据。

也就是说,一旦数据处理完成,数据库整洁有序,真正的数据科学就开始了。

数据科学

看待数据也有两种方式:为了解释已经发生的行为,你已经为此收集了数据;或者利用你已有的数据来预测尚未发生的未来行为。

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

数据科学解释过去

商业智能

在数据科学进入预测分析之前,它必须观察过去提供的行为模式,分析它们以获得洞察力,并为预测指明道路。商业智能恰恰专注于此:提供数据驱动的问题答案,如:售出了多少台?哪个地区销售的商品最多?哪种类型的商品在哪里出售?就点击率和产生的收入而言,上个季度电子邮件营销表现如何?这与去年同季度的表现相比如何?

虽然商业智能的标题中没有“数据科学”,但它是数据科学的一部分,而且不是微不足道的。

商业智能是做什么的?

当然,商业智能分析师可以应用数据科学来衡量业务绩效。但是为了让商业智能分析师实现这一点,他们必须采用特定的数据处理技术。

所有数据科学的出发点都是数据。一旦 BI 分析师掌握了相关数据(月收入、客户、销量等)。),他们必须量化观察结果、计算 KPI 并检查从数据中提取洞察力的方法。

数据科学就是讲述一个故事

除了处理严格的数字信息,数据科学,特别是商业智能,是关于可视化的发现,并创建易于消化的图像,只支持最相关的数字。毕竟,所有级别的管理人员都应该能够从数据中了解洞察力,并为他们的决策提供信息。

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

商业智能分析师创建仪表板和报告,并附有图形、图表、地图和其他类似的可视化内容,以呈现与当前业务目标相关的发现。

商业智能用在哪里?

价格优化和数据科学

值得注意的是,分析师将数据科学应用于价格优化技术等领域。他们实时提取相关信息,与历史信息进行比较,并采取相应的行动。以酒店管理行为为例:管理层在很多人想去酒店的时候提高房价,而在需求低的时候降低房价以吸引游客。

库存管理和数据科学

数据科学和商业智能对于处理供应过剩和供应不足是无价的。对过去销售交易的深入分析可以确定季节性模式和一年中销售额最高的时间,从而实施有效的库存管理技术,以最低的成本满足需求。

谁做数据科学的 BI 分支?

BI 分析师主要关注过去历史数据的分析和报告。

商业智能顾问通常只是一个“外部商业智能分析师”。许多公司外包他们的数据科学部门,因为他们不需要或不想维持一个。如果被雇佣,商业智能顾问将成为商业智能分析师,然而,他们的工作更加多样化,因为他们在不同的项目上跳来跳去。他们角色的动态性质为 BI 顾问提供了不同的视角,而 BI 分析师拥有高度专业化的知识(即深度),BI 顾问则为数据科学的广度做出贡献。

BI 开发人员处理更高级的编程工具,如 Python 和 SQL,以创建专门为公司设计的分析。这是 BI 团队中第三个最常遇到的职位。

预测未来的数据科学

数据科学中的预测分析建立在解释性数据分析的基础上,这正是我们到目前为止所讨论的内容。一旦准备好 BI 报告和仪表板,并从中提取见解,这些信息将成为预测未来价值的基础。而这些预测的准确性在于使用的方法。

回想一下数据科学中传统数据和大数据的区别。

我们可以对预测分析及其方法进行类似的区分:传统的数据科学方法与机器学习。一个主要处理传统数据,另一个处理大数据。

数据科学中的传统预测方法:它们是什么?

传统的预测方法包括用于预测的经典统计方法——线性回归分析、逻辑回归分析、聚类、因子分析和时间序列。其中每一个的输出都被输入到更复杂的机器学习分析中,但让我们首先单独回顾一下它们。

快速的旁注。数据科学行业的一些人也将这些方法称为机器学习,但在本文中,机器学习指的是更新、更智能、更好的方法,如深度学习。

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

线性回归

在数据科学中,线性回归模型用于量化分析中包含的不同变量之间的因果关系。像房价,房子大小,邻里,建成年份的关系。如果你有相关的信息,这个模型可以计算出预测新房子价格的系数。

逻辑回归

因为不可能将变量之间的所有关系都表示为线性的,所以数据科学利用像逻辑回归这样的方法来创建非线性模型。逻辑回归用 0 和 1 进行运算。公司在筛选过程中应用逻辑回归算法来筛选求职者。如果算法估计未来候选人在一年内在公司表现良好的概率超过 50%,它将预测 1,或成功申请。否则,它将预测 0。

聚类分析

当数据中的观察值根据某些标准形成组时,就应用了这种探索性的数据科学技术。聚类分析考虑到一些观察结果表现出相似性,并有助于发现新的重要预测因子,这些预测因子不是数据原始概念的一部分。

要素分析

如果聚类是将个观察值组合在一起,那么因子分析就是将个特征组合在一起。数据科学求助于使用因素分析来降低问题的维度。例如,如果在一份 100 个项目的问卷中,每 10 个问题涉及一个单一的总体态度,因子分析将识别这 10 个因子,然后可以用于回归,这将提供一个更具解释性的预测。数据科学中的许多技术都是这样集成的。

时间序列分析

时间序列是跟踪特定值随时间发展的常用方法。经济学和金融学专家使用它是因为他们的主题是股票价格和销售量——这些变量通常是相对于时间绘制的。

传统预测方法在哪里可以应用数据科学?

相应技术的应用极其广泛;数据科学正在越来越多的行业中找到出路。也就是说,两个突出的领域值得讨论。

用户体验(UX)和数据科学

当公司推出新产品时,他们通常会设计调查来衡量顾客对该产品的态度。BI 团队生成仪表板后,对结果进行分析,包括将观察结果分组为片段(如区域),然后分别分析每个片段以提取有意义的预测系数。这些操作的结果通常证实了这样一个结论,即为了最大限度地提高客户满意度,产品需要在每个细分市场进行轻微但显著不同的调整。

预测销售量

这就是时间序列发挥作用的分析类型。销售数据一直收集到某个日期,数据科学家想知道在下一个销售周期或一年后可能会发生什么。他们应用数学和统计模型并运行多种模拟;这些模拟为分析师提供了未来的情景。这是数据科学的核心,因为基于这些场景,公司可以做出更好的预测并实施适当的策略。

谁使用传统的预测方法?

数据科学家。但请记住,这个头衔也适用于使用机器学习技术进行分析的人。许多工作是从一种方法转移到另一种方法的。

另一方面,数据分析师是准备高级类型的分析的人,这些分析解释已经出现的数据中的模式,而忽略了预测分析的基本部分。

机器学习和数据科学

机器学习是数据科学的最新方法。理应如此。

机器学习相对于任何传统数据科学技术的主要优势在于,它的核心是算法。这些是计算机用来寻找尽可能符合数据的模型的方向。机器学习和传统数据科学方法的区别在于,我们不会给计算机如何找到模型的指令;它采用该算法并使用它的指示来自己学习如何找到所述模型。与传统的数据科学不同,机器学习几乎不需要人类的参与。事实上,机器学习,尤其是深度学习算法是如此复杂,以至于人类无法真正理解“内部”正在发生什么。

什么是机器学习?

机器学习算法就像一个试错的过程,但它的特殊之处在于,每次连续的尝试至少与前一次一样好。但是请记住,为了更好地学习,机器必须经历成千上万次的反复试验,错误的频率一直在下降。

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

An illustration of supervised learning

一旦训练完成,机器将能够将它学习到的复杂计算模型应用于新数据,仍然能够产生高度可靠的预测结果。

有三种主要类型的机器学习:监督、非监督和强化学习。

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

监督学习

监督学习依赖于使用标记数据。机器获得与正确答案相关联的数据;如果机器的性能没有得到正确的答案,优化算法会调整计算过程,计算机会再次尝试。请记住,通常情况下,机器会一次处理 1000 个数据点。

支持向量机、神经网络、深度学习、随机森林模型和贝叶斯网络都是监督学习的实例。

无监督学习

当数据太大,或者数据科学家承受着太大的资源压力来标记数据,或者他们根本不知道标签是什么,数据科学就求助于使用无监督学习。这包括给机器未标记的数据,并要求它从中提取洞察力。这通常会导致数据根据其属性以某种方式进行划分。换句话说,它是群集的。

无监督学习对于发现数据中的模式非常有效,尤其是那些使用传统分析技术的人会错过的东西。

数据科学通常同时使用监督学习和非监督学习,非监督学习标记数据,监督学习寻找适合数据的最佳模型。这方面的一个例子是半监督学习。

强化学习

这是一种机器学习,重点是表现(行走、看、读),而不是准确性。每当机器的表现比以前更好时,它就会获得奖励,但如果它的表现不佳,优化算法就不会调整计算。想象一只小狗在学习命令。如果它听从命令,它会得到奖励;如果它不听从命令,款待就不会到来。因为食物美味可口,狗会逐渐提高对命令的遵循程度。也就是说,强化学习不是最小化错误,而是最大化回报。

机器学习在数据科学和商业领域的应用领域是什么?

欺诈检测

通过机器学习,特别是监督学习,银行可以获取过去的数据,将交易标记为合法或欺诈,并训练模型来检测欺诈活动。当这些模型检测到最轻微的盗窃可能性时,它们会标记交易,并实时防止欺诈。

客户保持率

通过机器学习算法,企业组织可以知道哪些客户可能会从他们那里购买商品。这意味着商店可以有效地提供折扣和“个性化服务”,最大限度地降低营销成本,实现利润最大化。我想到了几个著名的名字:谷歌和亚马逊。

谁在数据科学中使用机器学习?

如上所述,数据科学家深度参与设计机器算法,但这个舞台上还有另一颗明星。

机器学习工程师。这位专家正在寻找方法,将机器学习领域开发的最先进的计算模型应用于解决复杂问题,如商业任务、数据科学任务、计算机视觉、无人驾驶汽车、机器人等等。

数据科学中的编程语言和软件

使用数据和数据科学需要两大类工具:编程语言和软件。

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

Examples of most commonly used programming languages and software

数据科学中的编程语言

了解编程语言使数据科学家能够设计出能够执行特定操作的程序。编程语言的最大优势是我们可以重用创建的程序多次执行相同的动作。

r、Python 和 MATLAB 与 SQL 相结合,涵盖了处理传统数据、BI 和传统数据科学时使用的大多数工具。

r 和 Python 是所有数据科学子学科中最流行的两种工具。他们最大的优势是可以操纵数据,并且集成在多个数据和数据科学软件平台内。它们不仅仅适用于数学和统计计算;他们适应性很强。

然而,当使用关系数据库管理系统时,SQL 是王者,因为它是专门为此目的而创建的。SQL 在处理传统的历史数据时最有优势,例如在准备 BI 分析时。

MATLAB 是数据科学中第四个最不可或缺的工具。它非常适合处理数学函数或矩阵运算。

当然,数据科学中的大数据是在 R 和 Python 的帮助下处理的,但从事该领域工作的人通常精通其他语言,如 Java 或 Scala。当组合来自多个来源的数据时,这两个非常有用。

除了上面提到的那些,JavaScript、C 和 C++经常在专家工作的数据科学分支涉及机器学习时使用。它们比 R 和 Python 更快,并提供更大的自由度。

数据科学中的软件

在数据科学中,软件或软件解决方案是针对特定业务需求而调整的工具。

Excel 是一种适用于多个类别的工具,包括传统数据、商业智能和数据科学。同样,SPSS 是一个非常著名的处理传统数据和应用统计分析的工具。

另一方面,Apache Hadoop、Apache Hbase 和 Mongo DB 是为处理大数据而设计的软件。

Power BI、SaS、Qlik,尤其是 Tableau 是为商业智能可视化而设计的软件的顶级例子。

在预测分析方面,EViews 主要用于处理计量经济学时间序列模型,而 Stata 用于学术统计和计量经济学研究,其中经常应用回归、聚类和因子分析等技术。

这是数据科学

数据科学是一个模糊的术语,涵盖了从处理数据(传统的或大的)到解释模式和预测行为的一切。数据科学是通过回归和聚类分析等传统方法或非正统的机器学习技术来完成的。

这是一个广阔的领域,我们希望你能更进一步理解它是多么包罗万象,与人类生活交织在一起。

如果你喜欢这篇文章,请随意看看我的其他文章。“开始的好处”听起来是个不错的开始!

原载于 2018 年 5 月 21 日【365datascience.com

Python 属性的原因和方式

原文:https://towardsdatascience.com/the-why-and-how-of-python-properties-b791817cf4b9?source=collection_archive---------3-----------------------

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

https://cdn.programiz.com/sites/tutorial2program/files/python-property.jpg

一个现实世界的问题

大约一年前,我们在我目前的工作中遇到了一个有趣的障碍:我们的计算机视觉管道消耗了太多的内存。拥有 10gb 可用内存和一个相当大的交换分区的机器正在猛烈地颠簸。经过一些调查,我们意识到这是我们在流水线开始时将一个任务的所有相关输入图像加载到内存中的结果。当流水线第一次组装时,每个作业的最大图像数量约为 20 个,这并不是一个问题,但这个数字突然开始增长。我们在一个有 210 个图像的作业中发现了这个问题,一个 52 兆的图像占用了 11 兆的内存。

太好了。我们遇到了一个问题。解决这一难题的简单方法是只在需要的时候将图像加载到内存中,而不要保留对它的不必要的引用。这是一个不错的解决方案(尽管它本身有一些问题是可以解决的,但我不会在本文中深入讨论),但这似乎需要大量的重构。为了理解为什么,请允许我向您展示一些(非常简单的)示例代码:

# The class that holds onto the image
class ImageHolder:
    def __init__(self, image_path):
        self.image = load_image_from_path(image_path) holders = []
# The bit of code that loads the images
for image_path in large_list_of_paths:
    holders.append(ImageHolder(image_path)) # Various parts of the pipeline that do something with the images
for holder in holders:
    do_something(holder.image)

现实世界的解决方案

在大多数其他语言(如 C++)中,最简单的解决方案是:

class ImageHolder:
    def __init__(self, image_path):
        self.image_path = image_path def get_image(self):
        return load_image_from_path(self.image_path)

但是这产生了一个问题:我们现在必须确保所有对ImageHolder.image的引用都变成了ImageHolder.get_image()。我们还需要确保程序员记得更改未来的代码(尽管有些人会认为我们应该从一开始就这样做,如果属性不存在,我也会同意)。虽然这两个任务都不是特别重要的任务,但是它们仍然很烦人,而且它们扰乱了代码本身的语义(也就是说,operate_on(holder.image)operate_on(holder.get_image())读起来要好得多)。谢天谢地,在 python 中,我们可以这样做:

class ImageHolder:
    def __init__(self, image_path):
        self.image_path = image_path@property
def image(self):
        return load_image_from_path(self.image_path)

现在ImageHolder.image(看起来不像函数调用)返回图像,就好像它是一个指向图像的字段。这个就是 python 属性的魔力。他们将我们从最初糟糕的设计中解救出来(从一开始就没有设置 getters 和 setters ),同时使我们的代码看起来不那么笨拙。

另一个不太“现实”的例子

当然,使用这样的抽象还有无数的其他原因,它确实有助于保持对象中的状态的总大小较小,并提高可维护性。考虑一个Circle类的简单实现:

PI = 3.141
class Circle:
    def init(self, radius):
        self.radius = radius
        self.area = PI * self.radius ** 2
        self.circumference = 2 * PI * self.radius

并按以下方式使用它:

c = Circle(1)
print c.area  # prints 3.141
print c.circumference  # prints 6.282c.radius = 2
print c.area  # prints 3.141 which is incorrect
print c.circumference  # prints 6.282 which is incorrect

一旦我们更改了radius,areacircumference字段在更新之前都是无用的(我们可以在这里使用 setters 来缓解这种情况,但那是另一篇文章了)。与下面的实现进行比较:

PI = 3.141
class Circle:
    def init(self, radius):
        self.radius = radius def area(self):
        return PI * self.radius ** 2 def circumference(self):    
        return 2 * PI * self.radius

再次对其运行相同的测试,我们得到:

c = Circle(1)
print c.area  # prints 3.141
print c.circumference  # prints 6.282c.radius = 2
print c.area  # prints 12.564 which is correct!
print c.circumference  # prints 12.564 which is correct!

只有radius成为该对象的状态才有意义,因为其他两个值都可以从中导出。Python 属性允许我们封装这种现实,而不会使语法看起来笨拙。

结论

我想展示 Python 属性在现实环境中的用处。我希望这篇文章能做到这一点。关于属性(以及设置器)更详细的讨论可以在这里找到。我将在另一篇文章中讨论 setters,在那篇文章中,我将解释如何更新一个没有加载到内存中的图像(以及其他内容)。

纵横字谜数据的疯狂世界

原文:https://towardsdatascience.com/the-wild-world-of-crossword-data-71d560e222f5?source=collection_archive---------6-----------------------

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

Photo by Natalia Ostashova on Unsplash

我一直很喜欢填字游戏。我妈妈和姐妹们会从《蒙特利尔公报》上翻出《纽约时报》的填字游戏,一起研究,有时还会问我一个与体育相关的问题。

快进到 30+ Kurt,现在自己解决满满的谜题,像个真正的男孩。不过,我真正喜欢上它是在最近的圣诞节假期,当时我们在圣阿黛尔的 Lac Pilon 湖边小屋的室外温度是零下 31 华氏度。不用说,我们大部分时间都是在噼啪作响的炉火旁啜饮温暖的东西。尽管天气寒冷,但这是一个愉快的假期,在没有有线电视(和相当不稳定的 wifi)的情况下,我们通过做填字游戏来打发时间。

现在,回到纽约,那里的天气不太冷,我认为自己是一个十足的拼图迷,我用几种不同的方式解决问题:

  • 因为我可爱的母亲每天早上仍然会收到一份真正的报纸,所以她很友好地扫描并通过电子邮件将每一份 NYT 填字游戏发给我和我的女朋友(我们会立即打印出来并添加到我们专用的填字剪贴板上)。
  • 我买了 NYT 的数字订阅(我知道,很疯狂,对吧?)只是为了进入他们的填字游戏。是的,这确实复制了妈妈发送的内容,但它也让我可以访问每天的迷你,非常适合地铁通勤。
  • 说到地铁通勤,我的很长。因此,如果我没有什么小事情要做,我有时会通过解决脑海中的几个线索来挠我的纵横字谜之痒,同时从某人的肩膀上偷看他们的地铁谜题(令人毛骨悚然还是资源丰富?).

NYT 填字游戏有什么大不了的?

我在这里转述了维基百科的内容,但基本上这是一个由《纽约时报》发布的每日谜题,还被其他 300 多家报纸和出版物转载(这是我妈妈在蒙特利尔得到的)。

它有一大堆不同的贡献者,但自 1993 年以来一直由老威尔·肖兹编辑。一周中的每一天,谜题都变得越来越难,最容易的是周一,最难的是周六(周日是一个更大的谜题,通常等同于周四的难度)。随着时间的推移,我已经很适应周一和周二了,但要完成整个周三的拼图还是有些困难。

历史说够了,来说数据吧

多亏了迈克尔,我得以获得一份相当大的数据转储,其中包括从 1993 年 12 月到 2017 年 7 月的 NYT 填字游戏数据。接下来我做了什么?嗯,首先我放下了正在做的周三填字游戏,然后就一头扎进去了。

将数据上传到 Google Cloud,并在 BigQuery 中运行一些 SQL 查询后,我发现了一些有趣的事实:

有趣的事实

  • 24.5 年
  • 8238 个谜题
  • 432205 条线索
  • 108,423 个唯一答案
  • 54,820 个(或 51%)唯一答案从未被使用超过一次

好,等等,这意味着 49%的唯一答案被多次使用?!

嗯,有意思,我想知道哪些词用得最频繁…

10 个最常用的答案(谜题出现的百分比)

那么,我们得到了什么?它看起来像一组短词,可以很容易地用来填补较长答案留下的空白。看到像 EAR 这样的字母突出也很有趣,因为它们是英语中最常用的三个字母(根据牛津词典)。这三个字母加起来占英语的 27.24%,而对于 NYT,它们占最常用答案的 68.75%(32 个字符中的 22 个)。

**快速提示:**根据这些数据,你大概可以预计到 纪元 这个词大约每 2.4 周出现一次。(记住,这个线索可能与时间、棒球或平等权利有关。)

好奇看看这一周的每一天是如何分解的吗?我抓住你了。

一周中最常用的 10 个答案

我还研究了线索的长度。我发现它们可以是简短的一个单词的线索,也可以是更长的句子甚至段落。由于谜题的难度随着一周的进展而变化,我认为观察平均线索字符数在一周内的变化可能会很酷。

每周各天的平均线索字符数

好了,这就对了,一清二楚:更高的难度=更长的线索

从周三到周六,平均字符数每天都在增加,我们可以自信地说,越长的线索通常越难找到。这可能只是我,但我发现这很令人满意,周日平均字符数下降到几乎与周四完全相同的水平(记得我之前提到过周日是更大的谜题,但与周四的难度水平大致相同)。

我无法解释的一件事是,为什么从周一到周三,线索长度略有下降。 有人有什么想法吗??

如果你曾经做过(甚至看过)填字游戏,你就会知道有两个方向的线索和答案:横向和纵向。所以,我研究的最后一件事是基于方向的线索长度是否有差异。

按回答方向列出的平均线索字符数(&星期几)

好吧,这个没什么进展。这里没什么可看的,但让我们试着延伸一下。如果我们先前确定较长的线索通常意味着较难的线索,那么根据上面的数据,我们可以说:

向下的线索比交叉的容易。_(ツ)_/

好了,今天就到这里,各位。我得去煮些咖啡,然后回到这个讨厌的星期三。有人知道六个字母的单词“乔”吗?

使用的工具

谷歌云存储,谷歌大查询,Excel,GitHub,infogram

话加起来!

原文:https://towardsdatascience.com/the-words-add-up-why-baseball-usa-india-cricket-d31b595b8df4?source=collection_archive---------7-----------------------

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

Image by Julia_S from Pixabay

当你学习数学的时候,你有没有想过除了数字之外的东西?如果 1 + 2 = 3,那你为什么不能说“绿色+水果=苹果?”

今天,当我们向人工智能的婴儿大脑教授人类世界时,事实证明我们可以做到。为了教会机器理解人类语言,我们必须教会它们单词之间的关系。一种方法是用大量文本训练一个算法。幸运的是,我们的社会擅长的一件事是生成大量的文本!

我遇到的第一个尝试是马尔可夫链技术。马尔可夫链的思想是,你可以通过知道当前事件来预测一系列事件中下一步的概率。想想手机上的自动完成功能是如何工作的。

通过用示例数据训练机器,您可以预测一个序列的下一个可能结果。马尔可夫链有很多有趣的应用,比如计算机生成的音乐。如果你用自然语言训练它们,你可以创造出表面上看起来像语言的句子,而且通常是非常有趣的。看看“schmimpsum”,它可以让你根据各种来源生成填充文本,包括莎士比亚和公司使命声明:

我们的市民聚集在一起向博伊西市的哈佛大学学习。积极主动地计划绝对诚实、勤奋、能力、智慧和全面的计划。

然而,马尔可夫链对于语言学应用来说过于简单。单词之间有许多比“很可能被用作下一个单词”更有用的关系。

输入 Word2Vec

随着计算语言学领域的发展,计算机已经发明了许多不同的单词表示法。在数学上产生惊人结果的那个叫做 Word2Vec ,由谷歌发明,于 2013 年发表。你可能会天真地想象计算机会给每个词汇分配一个唯一的 ID 号,而不是给这个词分配一个数字向量。如果你回忆一下你的几何,这些向量就像坐标一样,可以通过加法和减法来操作。[0 1] + [1 2] = [1 3]以此类推。

为了获得 Word2Vec 如何工作的心理模型,可以把它想象成试图根据单词的意思在图表上排列单词。您希望看似相关的单词在图表上彼此靠近,因此它们的坐标是接近的。所以“妈妈”和“姐姐”将会彼此靠近。当然,两个维度不足以代表所有的关系。“Pup”像“kitten”一样,因为它们是幼小的动物,但它也像“dog”、“pet”和“seal”…你很快就会用不完。所以在计算机中,我们倾向于使用几百维而不是二维。在这个过程的开始,单词被随机放在图表上,然后算法被输入大量的示例文本。每当单词在句子中彼此靠近时,它们在图表上就彼此靠近一点。给定足够多的示例文本,图表最终编码了大量关于单词如何关联的知识。

结果,正如“Word2Vec”的名字所暗示的,每个单词最终都被分配了一个向量。然后,有趣的事情开始了,你可以像这样做一些有趣的数学运算:

国王+(女人-男人)=王后

巴黎+(意大利-法国)=罗马

换句话说,在我们的图表上,无论首都意味着什么,都是在一个特定的“方向”上,所以如果你把意大利推向那个方向,你就会到达罗马。好玩!一个有趣的应用是在语言翻译中,毕竟为什么“two-English+Spanish = dos”不会呢?事实上,一个更加复杂的系统现在支持谷歌翻译,甚至可以在以前从未遇到过的语言对之间进行翻译。

将事物转化为向量的整个概念也适用于其他问题领域。来自餐馆预订网站 OpenTable 的数据科学家们尝试对他们的数据使用向量表示。例如,他们发现,如果你在市中心一家牛排店的名字前加上“天井”,你会发现这家牛排店有一个很大的天井!或者,如果你正在旅行,想在家里找一家与你最喜欢的餐馆相似的餐馆。他们发现

旧金山阿基罗餐厅+芝加哥=芝加哥正木寿司

如果你很好奇,可以看看这个矢量类型模型列表,其中包括了其他领域的论文和例子。我最喜欢的一个是棒球模型,它将击球手和投手的统计数据编码成向量。它包括一些有趣的例子,如寻找球员的“反手二重身”。例如:

迈克·特劳特–左撇子+右撇子=布莱斯·哈珀

除了充满乐趣之外,这种数学还让我们更接近一种自动化的方式,让机器了解现实世界实体之间的关系——这种事情太复杂,太令人厌倦,无法通过显式枚举来教授。结果可以用来回答现实世界的问题。

数据可视化的世界

原文:https://towardsdatascience.com/the-world-of-data-visualization-d4b621b77e76?source=collection_archive---------4-----------------------

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

不管你在哪里工作或做什么,你周围的一切都是由指标定义的。波士顿的房子价格是多少?你的汽车行驶了多少英里?星巴克每年卖出多少杯咖啡?更重要的是,你应该产生多大的影响才能在职业生涯中迈出下一大步?

作为人类,我们喜欢我们所有的问题都得到简洁而全面的回答。多年来,数据可视化技术变得越来越复杂。可能是使用最先进的 GIS 系统来表达野火数据,使用 Tableau、 D3.jsBokeh 的组合向您的潜在投资者提供市场预测,使用平行坐标来表达更高维度的数据,甚至是使用 MS Excel 的老式数字处理。数据可视化的最大创新发生在我们自己的大数据领域,我们需要找到一种复杂的方法,以巧妙的可视化指标来查看数百万个数据点。只需谷歌和探索!

有了这些复杂的数据可视化技术,我确信你们中的很多人想从简单的东西开始。虽然 MS Excel 是一个快速而简单的选项,但在如何处理数据、操作绘图手柄的级别以及在各种媒体(如 web 界面、图形用户界面和移动应用程序)上共享绘图手柄方面缺乏灵活性。依我拙见,Matplotlib 是一个极好的开端。

Matplotlib 是一个开源的 Python 库,拥有广泛的开发者社区。几乎任何复杂的可视化问题都可以通过 Matplotlib 丰富的函数数组轻松解决。语法相当类似于 Matlab ( 点击这里了解详情)和 Octave ,对于那些想要快速转换的人来说。最重要的是,绘图句柄可以与各种基于 Python 的应用程序无缝连接。

至此,下面是我关于 Matplotlib 的基础教程,可以帮助大家踏上数据可视化的伟大旅程:

xtensor 视觉

原文:https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad?source=collection_archive---------11-----------------------

在这里,我们展示了 xtensor 项目的愿景,即 C++语言中的 n 维数组——这使得编写高性能代码并将其绑定到数据科学语言(Python、Julia 和 R)变得很容易。

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

Results of running the same C++ implementation from Julia, Python, R, and C++ (from left to right)

展示一个清晰的愿景是很重要的——尤其是对于开源项目:只有一个共同的目标才能把人们聚集在一起。这就是为什么我们决定最终整理出一份文件,展示我们对 C++如何在数据科学的未来发挥重要作用的愿景,以及为什么。当今数据科学的三种主要语言是 Python、Julia 和 r。

Python 科学计算生态系统中有很多很酷的库是其他语言所没有的,比如 Julia 和 R——反之亦然。例如,scikit-learn 是一个专用的 Python 包。变通办法通常是从 Julia 调用 Python 解释器,但这不是特别快或优雅,而且转换代价很高。这些软件包中包含的数值方法已经很好地建立起来了,并且由于拥有大量的用户群而经过了彻底的测试。不幸的是,选择这三种语言中的一种作为参考实现,而不是一种通用语言,会妨碍其他数据科学语言的采用。不同社区的重复工作损害了生态系统的可持续性和科学成果的可复制性。这不仅适用于成熟的数值方法,也适用于标准协议、文件格式阅读器、数据科学的公共数据结构的实现。

对于这项任务,C++的主要优势是速度和成熟度,以及一个庞大的开发人员社区。虽然有其他有前途的语言,但 C++长期以来一直是科学计算的基石,而且不会消失——尽管它非常缺乏 n 维数组库。相反,现代 C++变得越来越好,语言和标准库比以往任何时候都好。

  1. C++可以非常快。你通常会发现 C++在基准测试中名列前茅。例如在基准测试游戏中,C++与 C 和 Rust 一直位列前三。然而,像 Rust 这样的语言在结果中显示出更多的变化,而 C 和 C++保持稳定。你可以确信总是有办法用 C++创建尽可能最快的代码——语言永远不会阻止你达到目标。
  2. C++有一个强大的类型系统,可以带来很大的好处,还有一个强大、灵活的模板系统,允许我们让编译器生成极其优化的汇编。
  3. 通用意味着可重用:所有代码最好只写一次。这就是为什么一门通用语言需要让它容易被其他语言使用。数据科学中的三大巨头是 Python、R 和 Julia。他们每个人都有优秀的工具与 C++对话:Python 的 pybind11 ,R 的 RCpp ,Julia 的 CxxWrap 。当您用 C++编写代码时,您可以确保能够从这些语言中重用它。

xtensor 如何尝试解决这个问题

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

The xtensor data science stack

借助 xtensor,我们旨在开发一个适用于整个数据科学生态系统的解决方案。xtensor 是 C++的 n 维数组容器,类似于 Python 的 NumPy。我们严格遵循 NumPy API,但是是纯 C++和强类型的(甚至有一个备忘单来显示这些 API 是如何匹配的)。此外,我们提供了 Python、R 和 Julia 的官方绑定。这意味着,如果你用 xtensor 用 C++编写一次数值算法,你就可以无缝地使用数据科学的每一种主要语言的例程。xtensor 非常灵活,可以使用动态语言进行内存管理:如果通过 xtensor-julia 分配一个 julia 数组,就会使用 Julia 自己的内存分配器和垃圾收集器。xtensor 还透明地处理任何内存布局,例如 Julia 和 R 的列主布局和 NumPy 的行主布局。近年来,C++在自我现代化方面取得了巨大进步(C++ 14 和 c++ 17 ),这使它成为一种非常高效的语言。

在剩余的博客文章中,我们将研究光线明暗处理高度图算法的实现——它首先来自 R 社区,然后被用来展示 GraalVM 如何加速 R,这是 Julia 和 Pythran 争论的问题。本文的目的是展示我们如何用 xtensor 在 C++中一劳永逸地实现该算法,然后在保持最高速度的同时创建到这些语言的绑定。

挑战

我们已经将最初的 R & Julia (来自 Tyler Morgan-Wall 和 Simon Danisch)首先移植到 Python,然后移植到 xtensor(你可以在这里找到 Python 版本)。

我们的版本住在 https://github.com/wolfv/xtensor-showcase 的

您可能会注意到,除了到处使用花括号之外,移植的 C++代码的长度基本上与原始的 Python 或 R 实现相同。NumPy 用户可能还会识别出linspace等功能。这是因为对于大多数高级数组操作,我们坚持使用 NumPy APIs。当然,最大的区别是提供了<double>模板参数,这是高效计算和使用我们的模板表达式引擎生成快速代码所必需的强大编译时类型(关于如何工作的详细解释可以在这里找到)。

我们现在可以为三大巨头创建绑定:Python、R 和 Julia。对于每种语言,都有各自的 xtensor 包:

  • xtensor-python :无缝处理 NumPy 数组
  • xtensor-r :来回传递 R 个向量和矩阵
  • xtensor-julia :绑定 julia 的 n 维数组

这三个软件包的工作方式都相似。它们使用特定于语言的 C++包(pybind11、CxxWrap.jl 和 RCpp)在宿主语言中本地创建数据结构。使用这些包,我们在 C++中创建新的 xtypes:XT::py array用于 NumPy 数据支持的 python 数组,XT::raray用于 R 版本,xt::jlarray 用于 Julia。此外,软件包还包含具有静态维数的版本(相当于 xt::xtensor ,其中 N 是表示维数的整数。这实现了对 C++编译器和模板表达式引擎的一系列优化。

例如,让我们看看 Python 绑定(Julia 和 R 绑定一样简单):

作为函数的输入,我们取一个 xt::pyarray 。这个类型是用 pybind11 注册的,类型是从 NumPy 数组自动转换的——任何步骤都不需要复制缓冲区内容!由于 rayshade_impl 函数将模板参数 E 作为输入,因此我们可以用遵循 xexpression 接口的任何类来调用它。当然,pyarray 做到了这一点(以及 rarray 和 jlarray)。

基准

以下是基准。正如您所看到的,基准测试显示了像 C++和 Julia 这样的编译语言是如何生成非常有效的代码的,并且 xtensor 绑定根本不会影响速度!(顺便说一下,C++的结果比 Julia 的稍慢,因为没有使用专门的基准测试包,我们只在笔记本电脑上计时了一次迭代 CPU 通常需要一些迭代来提高速度)。

 Benchmarks ╔══════════════════╦════════════╗
        ║     Language     ║  Time (s)  ║ 
        ╠══════════════════╬════════════╣
        ║ C++              ║   .0164812 ║ 
        ║ Python / xtensor ║   .0220982 ║ 
        ║ Python / NumPy   ║ 14.224207  ║
        ║ Julia / xtensor  ║   .014221  ║
        ║ Julia            ║   .014501  ║
        ║ R / xtensor      ║   .01328   ║
        ║ R                ║  9.905     ║
        ╚══════════════════╩════════════╝

这里我们需要提一下:Brodie Gaslam 令人印象深刻地展示了如何通过利用矢量化使 R 代码具有高性能(同样的原理也可以用在 NumPy 和 xtensor 中)。他的代码运行速度几乎和使用 xtensor 的 R 一样快,达到了 0.058 秒。

如何开始

这个例子的代码被上传到 https://github.com/wolfv/xtensor-showcase 的。我们已经为 xtensor 创建了许多文档以及千篇一律的项目模板,以帮助人们开始使用 Python 和 Julia插件。你也可以在 QuantStack 项目下的 GitHub 上查看各种x sensor-repositories。我们经常在网上的 Gitter 聊天室或 Twitter 上聊天。

我们想从这里走向何方

对于 xtensor 来说,未来还有许多有趣且具有挑战性的任务:

  • 更多的 NumPy API: 我们已经介绍了很多,但是仍然缺少一些部分!我们甚至已经编译了一个 GitHub 项目,其中有一些 NumPy API 中缺少的易于处理的部分。例如,如果你想再次尝试 C++,我们很乐意通过实现一些缺失的功能来指导新手!
  • *进一步加速一些功能:*目前我们已经实现的功能还有一些瓶颈。是时候摆脱他们了。
  • GPU 支持——很明显的一个。每个人都有,我们需要得到它,希望明年。这可以大大加快对大数据的操作。
  • *更好的互操作性:*例如,我们希望获得对 Apache Arrow (工作正在进行中)和 PyTorch 的深度支持。我们也会对更多的语言绑定感到高兴。比如 Matlab/Octave,或者 Java!
  • 编译 NumPy 到 xtensor: 这是一个大的。在 python 的帮助下,我们可以将 NumPy 代码编译成 C++(python 目前在 c++中有自己的 NumPy 实现)。我们已经与 python 的作者密切合作,python 使用与 xtensor 相同的 SIMD 库(称为 xsimd )。这里的大愿景是,人们可以使用 NumPy 编写一次数字代码来实现快速原型,然后自动将其编译成 C++。在 C++中,我们可以很容易地生成 Python 的绑定代码(导出到一个独立的库)以及 R 和 Julia!这可能使从高级算法描述编写跨语言库变得非常好。

您可以在 Twitter 上关注作者,或者访问https://gitter.im/QuantStack/Lobby的 Gitter 聊天室,讨论 xtensor 及相关项目!

链接:

YCombinator 应用程序或我们如何几乎做到这一点—第 2 部分(共 2 部分)

原文:https://towardsdatascience.com/the-ycombinator-application-procedure-or-how-we-almost-made-it-part-2-of-2-1ac37b002fcd?source=collection_archive---------0-----------------------

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

Vahanalytics founders before the final interview

在这篇文章的第一部分(你可以在这里阅读),我解释了 Y Combinator 的申请过程有以下五个步骤:

  1. 登录
  2. 表单
  3. 视频通话
  4. 最终面试
  5. 结果

我已经在之前的帖子中介绍了第 1 步和第 2 步,我将在这里介绍其余的步骤。

视频通话:

提交申请三周后(申请截止日期后两周),我收到了以下电子邮件:

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

很自然,我们既兴奋又紧张。这是什么意思?这是否意味着我们进入了下一步?或者这只是武断的,对最终的决定没有影响?

事实是,还没有人清楚视频通话的步骤。这不是强制性的,有些创业公司会经历,有些不会。

如果你真的被邀请参加,这些建议应该会有所帮助:

  1. 一收到邮件就选择一个电动吃角子老虎机,以便在你方便的时候玩。
  2. 视频通话通常最长持续 10 分钟,由合作伙伴接听。我们和道尔顿·考德威尔在一起。
  3. 不要为电话准备太多。确保你准备了简单明了的基本问题的答案。我再一次强调清楚也不为过。清晰,清晰,清晰!
  4. 我们的通话持续了不到 10 分钟,我们被问及以下问题:你的初创公司做什么,你正在解决的根本问题是什么,谁是你的客户/用户,他们为什么需要你做的东西,他们用什么代替,你的解决方案如何更好,最后是几个关于收入和数字的简单问题。
  5. 在面试过程中保持冷静,手边准备一些水,自己决定谁将回答什么类型的问题(我们按照以下方式进行了分工:与想法/业务相关的— Shivalik,与用户相关的— Nikhil,与收入相关的— Arun 和与技术相关的— Someshwar)并且慢慢地、仔细地回答每个问题,不要互相谈论

如果你的视频通话进行得很顺利,你的大部分回答都令人满意,YC 的合作伙伴也喜欢你的团队,你应该会感到相当自信。耐心等待,直到收到他们的回复。继续工作,关注你的收件箱!

面试邀请:

视频通话后,我们真的很焦虑,在 Reddit 上查看 hackernews 线程和/u/startups,因为世界各地的创始人不断分享他们的进展。几天后,申请被拒的消息开始传来。我们离邀请截止日期(YC 发出所有采访邀请的日期)越来越近,许多人开始在网上倾诉他们的紧张,就像我们一样。最后,在视频通话后大约 4 个晚上,我们收到了这封电子邮件:

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

Holy shit! Was this for real?!

当我说那晚我们庆祝的时候你最好相信我。我们要去加州的山景城——深入硅谷,去采访 Y Combinator 的合伙人!

第二天醒来,我们开始着手解决这个问题。以下是我们在准备过程中必须做的一些事情:

  1. 安排一个面试时间。我在网上阅读了大量关于最佳位置选择的资料,现在可以坦率地告诉你,这些都不重要。这是一个 10 分钟的面试,不管你选择什么时间或星期几。在一天结束的时候,你和你的孩子在世界上最聪明的人面前。
  2. 浏览第一个链接中的所有可用资源,其中包括关于旅行和住宿报销的详细信息(对于像我们这样飞越半个世界的人来说尤其重要!),关于尽快获得签证的帮助,关于法律帮助的细节(如果需要的话)等等。
  3. 检查机票——根据你的面试时间确定暂定日期。为任何可能发生的情况,在任何一边都要保持至少 1-2 天的缓冲时间。我们在面试前 24 小时到达,整整 8 天后才离开,因为我们想充分利用硅谷/加州之旅!
  4. 在离你最近的美国领事馆预约签证(或者在你的国家需要的任何手续)。如果你来自美国,恭喜你,你领先一步。一个问题是在他们的邀请函和面试时间之间只有一两周的时间。如果你所在国家的美国签证程序碰巧出现拥堵,就像在印度一样,那你就麻烦了。我们得到了签证预约日期,大约在我们 YC 面试时间的 3 周后!我们立即申请了紧急签证预约,并提供了机票、YC 的相关信息和一封强有力的支持信。在我们向迈克尔·赛贝尔(YC 的合伙人)解释了问题后,他马上给我们发了一封信。如果签证官对此无动于衷,给 YC 发邮件,向他们解释情况。我的一个朋友(另一家创业公司的创始人,也是 YC 邀请的同一批人)无法及时获得签证,所以 YC 好心地将他们的面试时间推迟了一个月左右。是的,他们真的很灵活,而且了解国际边境政治。
  5. 为实际面试做准备。将你对基本问题的所有回答进行排练,并在推特上发布。让您的所有数字和指标触手可及。不要纠结于计算 DAU 或者平均得分。屏幕时间什么的,在面板前。准备好一个便携格式的产品演示(最好是电话/平板电脑),如果没有互联网,最好有一个不会崩溃的版本。

扫清了所有障碍,包括签证面谈、预订航班、在山景城预订 AirBnb 以及为国际旅客解决其他后勤问题(国际 SIM 卡、换钱等)后,我们终于登上了阿联酋航空的 A380 飞机,踏上了飞往旧金山的旅程!

实际面试:

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

After the final interview, with the famous YC signboard

我们的采访时间是下午两点。我们确保提前 30 分钟到达,签到并坐下来等待。我们周围有很多优秀的团队,我们甚至遇到了几个来自印度的朋友,他们是 YC 的校友,帮助我们完成了这个过程。

然后我们被叫去面试了!

我们的小组成员包括:道尔顿·考德威尔,埃里克·米基科夫斯基,卡罗琳·利维(山姆·奥特曼的名字也在我们的小组名单上,但他失踪了,真倒霉)。

面试持续了整整 10 分钟,用闹钟计时。我们被问到的问题是:

  1. 告诉我们你在构建什么(简而言之:Vahanalytics为以驾驶员安全和行为为中心的物流车队提供分析。如果您是运输行业的企业,我们是唯一可以告诉您的人——您的哪些司机是好的/坏的(根据手机传感器数据客观测量),他们最担心的领域是什么,您如何提高他们的表现,以及您无法了解的车队行为的其他趋势是什么。)
  2. 告诉我们你的客户。
  3. 这些人具体是谁(指客户)?
  4. 看起来你已经有了一个稳固的团队,一个工作产品和你的第一个付费客户,接下来呢?
  5. 你考虑过美国/加拿大市场吗?
  6. 所以美国市场已经有竞争对手了?
  7. 为什么优步/Lyft 还没有开始使用这个?
  8. 美国的优步怎么样?
  9. 你将如何加速增长?
  10. 您希望这是一个什么样的销售周期?
  11. 如何才能缩短这个销售周期,快速成长?

面试结束后,我们气喘吁吁、紧张不安地走了出来。我们认为我们做得很好。面试进行得很顺利,没有太多的分歧或激烈的讨论。事后看来,这可能是一个不好的迹象——似乎没有一个合作伙伴与我们有过多的接触。我可能对细节想得太多了,但这确实像是一个危险信号。

我们开着一辆优步回到山景镇中心,在一家墨西哥酒吧喝了几品脱啤酒,开始了痛苦的等待。

结果是:

经验法则是,如果你在面试后被录取,你会在当天下午 6-6:30 接到面试你的合伙人的电话。如果没有,你会在晚上 7 点后收到他的拒绝邮件。

下午 6:30 来了又去,但没有电话。我们的心沉了下去,我们开始害怕最终拒绝电子邮件。最后,在晚上 7:30 左右,我们在收件箱里收到了这封邮件:

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

Heartbreaking stuff, really

心碎。拒绝。悲伤。又喝了一杯,然后该继续前进了。差不多就是创业创始人的生活。

不管怎样,我仍然感谢道尔顿花时间和精力来解释他的理由。如果你仔细阅读字里行间的意思,你会发现有一些明确的行动要点:将我们自己与现有的竞争对手区分开来,找到一个好的增长方法,并证明我们的销售周期正在像我们所说的那样缩短。

在回印度之前,我们花了一周时间在山景城和旧金山附近观光,决心做得更好。

如果你被录取了,不要让它冲昏你的头脑。你的战斗才刚刚开始。

如果你像我们一样被拒绝了,不要灰心。把失望当作动力,让自己做得更好。

永远记住:做得更好,下次再申请!YC 最喜欢重复申请人,他们已经找到了解决上次指出的缺点的方法。

考虑到这一点,我们一直在增加我们的销售额,缩短我们的销售周期,这一次再次申请。手指交叉!

这就把我们带到了第二也是最后一部分的结尾。第一部分可以在这里找到。如果你觉得这篇文章有帮助,请点击👏帮助别人找到它!如果你有自己的建议或者 YC 申请期间的有趣故事,请在下面留下评论。

部署 ML 模型有两种非常不同的方式,下面是两种方式

原文:https://towardsdatascience.com/there-are-two-very-different-ways-to-deploy-ml-models-heres-both-ce2e97c7b9b1?source=collection_archive---------1-----------------------

如果一个 ML 模型用 Jupyter 做了一个预测,周围有人听吗?

大概不会。部署模型是使它们有用的关键。

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

这不仅适用于您正在构建产品的情况,在这种情况下,部署是必要的——它也适用于您正在为管理生成报告的情况。十年前,高管们不会质疑假设,把自己的数字输入 Excel 表格,看看有什么变化,这是不可想象的。今天,一个密不透风的 matplotlib 数字的 PDF 可能会给初级副总裁留下深刻印象,但在经验丰富的高管眼中,它很可能会引发对 ML 的怀疑。

不要帮助带来人工智能炒作周期的结束!

因此,ML 模型的部署成为热门话题,仅仅是因为没有多少人知道如何去做;看到你既需要数据科学又需要工程技能。正如我最近发现的,有两种真正不同的方法来部署模型:传统的方法,和一个更近的选择,老实说,让我大吃一惊。

在本文中,我将为这两种部署提供一个简单明了的最佳实践模板。和往常一样,对于动觉学习者,如果你想测试一下,可以直接跳到代码这里,我实际上在这里部署了这个代码。我知道不是每个人都喜欢在阅读时跳来跳去;看起来是这样的:

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

I didn’t train the model for long; it’s not the point of this article!

如何部署 ML 模型

如果你是分析师出身,你可能不理解 web 应用架构,所以让我先说明一下。抱歉,如果这是过于简单化和人为解释!但是我见过太多的“ML 模型部署”,它们实际上只是包装在 Flask 中的 XGBoost,我知道这是一个真正的问题。

用户(这里的左边)使用的浏览器只运行 Javascript、HTML 和 CSS。那是前端。它可以调用后端服务器来获取结果,然后处理和显示结果。后端服务器应该尽快响应前端的请求;但是后端可能需要与数据库、第三方 API 和微服务对话。后端也可能应用户的请求生成缓慢的作业——比如 ML 作业,它应该将这些作业放入队列中。(请记住,用户通常必须以某种方式验证自己)。

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

Commonly, the frontend might be built with JS and/or React, and the backend with Python (and Django or Flask) or NodeJS (and Express).

现在,让我们谈谈分布式 web 应用程序架构。

一般来说,为了可伸缩性,我们希望运行尽可能多的后端实例。这就是为什么上图中‘服务器’有气泡冒出来的原因;他们代表“更多的这些”。因此,每个实例必须保持无状态:处理完 HTTP 请求并退出。在请求之间不要在内存中保留任何东西,因为一个客户端的第一个请求可能会发送到一个服务器,随后的请求会发送到另一个

如果我们有一个长时间运行的端点,这是很糟糕的:它会占用我们的一个服务器(比如说…做一些 ML 任务),使它无法处理其他用户的请求。我们需要保持 web 服务器的响应性,并让它移交长时间运行的任务,使用某种共享持久性,以便当用户检查进度或请求结果时,任何服务器都可以报告。此外,工作和部分工作应该能够由尽可能多的工人并行完成。

答案是先进先出(FIFO)队列。后端只是简单地将作业排队。工人从队列中挑选并处理作业,执行训练或推理,并在完成后将模型或预测存储到数据库中。

有了库 MLQ ,以下就是后端 web 服务器的全部需求——一个让作业排队的端点,一个检查作业进度的端点,一个在作业完成时提供作业结果的端点。

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

真正部署 ML 模型的架构是这样的:

  1. 后端服务器从用户的网络浏览器接收请求。它被包装在 JSON 中,但是语义上类似于:“明天是星期三,我们今天卖出了 10 台。明天我们会接到多少客户支持电话?”
  2. 后端将作业{星期三,10}推入队列(与后端本身分离的某个位置,比如 MLQ 的 Redis)。队列回答“谢谢,让我们称之为作业 ID 562”。
  3. 后端回复用户:“我会计算的。它的 ID 是 562。请稍候”。后端可以免费为其他用户服务。
  4. 用户的 web 浏览器开始显示“请稍候”微调按钮。
  5. 工作人员——至少是那些当前没有处理另一个作业的工作人员——不断地轮询作业队列。工作线程可能存在于另一台服务器/计算机上,但它们也可能是同一台计算机上的不同线程/进程。工作人员可能有 GPU,而后端服务器可能不需要。
  6. 最终,一个工人将获得该作业,将它从队列中移除,并处理它(例如,通过某个 XGBoost 模型运行{星期三,10})。它会将预测保存到数据库中。假设这一步需要 5 分钟。
  7. 同时,用户的 web 浏览器每 30 秒轮询一次后端,询问作业 562 是否已经完成。后端检查数据库是否存储了 id=562 的结果,并相应地进行回复。我们的多个水平后端中的任何一个都能够满足用户的要求。您可能会认为共享数据库是一个单点故障,您是对的!但是,我们单独提供了副本和一些故障转移机制,可能是分片/负载平衡,所以一切都很好。
  8. 五分钟多一点后,用户投票得到一个结果,我们就可以提供给用户了。

还涉及到一点点,主要是处理弹性和持久性(如果工作人员在工作中途离线怎么办?如果用户的输入是垃圾,导致作业失败怎么办?)但这是最基本的。这是一个非常简单的 MLQ 工人模板。它只是等待,直到接收到一个作业,然后对作业参数运行一个函数并存储结果。您可以在同一个服务器或分布式服务器上并行运行尽可能多的这些东西。如果你查看回购协议,你会找到尼采/张量流 RNN 模型的完整代码。

有几个很好的排队框架可用,或者可以形成合适队列的东西,包括 Celery、Dask、ZeroMQ、native Redis 和一个库,我最近把它变成了一个易于使用的版本,用于部署不复杂的辅助项目: MLQ 。卡夫卡也是一个东西,但是普通读者会知道我不喜欢过度架构的、基于 Java 的项目。MLQ 不成熟;我不是想在这里推销。用芹菜代替严肃的项目。

本周,我花了一些时间与 NVIDIA 交流,并询问了他们关于作业排队的规范解决方案(具体来说,在我的情况下,这样我就可以让每个使用 Jupyter 笔记本电脑的工作人员都可以使用 GPU farm,而无需他们同时尝试提交作业)。还没有,但我确信他们正在努力。在那之前,用排队系统手工推出解决方案是唯一的办法。

(在那次会议上,大家可能也很感兴趣:每个人都认为 MXNet 是一个非常好的框架,也许是最好的——但遗憾的是,它可能正在被淘汰)。

实时?

您可能想知道,ML 队列如何与实时应用程序一起工作?答案是:同样的方式,但是由于延迟的原因(比如工业物联网)并不理想。队列入口点可以是分布式的,所以真正的技巧在于数据库如何处理它。此外,普遍的看法是,人们不会接受私人数据被发送到后端,这也是“边缘的 ML”成为热门话题的另一个原因。如果推断所需的所有数据都可以在一个地方获得,我们就在那里进行推断。所以,没有进一步告别:

如何部署一个 ML 模型,以 2

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

所以,可怜的被诽谤的前端工程师进来了,每个人都认为线性代数意味着一个接一个地做计算,但他却是你的团队中最受欢迎的人。事实证明,他可能并不是一个傻瓜,但也许只是在等待时机,直到 Javascript 的人工智能工具赶上 Python。最近,他们做到了。

一言以蔽之,现在可以从 Javascript 使用 Tensorflow 了。起初,我对谷歌宣布的这种想法不屑一顾,这可能意味着用蹒跚、残缺的模型进行推理,这些模型必须符合某种模式(最多有 12 个过滤器的单个卷积层,FP-8 等)。也只有推论!肯定不是训练。Javascript 怎么可能做到这一点。

我大错特错了!

在这篇文章中,我不想把重点放在用 Javascript 训练模型上——这非常酷,但并不总是非常实用——而是为训练好的模型提供一种替代的部署模式。记住你的 训练好的模型将会对全世界开放。任何人都可以复制它,看看层是什么样子,并窃取所有的参数。我想我会说这是不可避免的,你的模型可能没有你想象的那么特别:任何竞争优势都在于你可以部署模型修订的数据和速度。当然,你在模型上构建的产品有多棒。无论如何,要小心。

首先,建立一个模型

TensorflowJS 可以在用户的网络浏览器中执行任何 Keras 模型。而且,通过 Web GL,它们是硬件加速的!我没有确切的数字,但据我所知,它对我很有效。肯定没有 Python 快,但我肯定随着时间的推移 JS 会赶上来的。

对于本文,我复制了官方 Tensorflow Keras 文本生成 LSTM 示例的代码并运行它来构建一个模型。我完整的 Jupyter 笔记本在这里。

然后,将模型导出到 TFJS。你可能需要pip install tensorflowjs。然后:

import tensorflowjs as tfjs
tfjs.converters.save_keras_model(model, '.')

在目录中,你现在可以找到model.jsongroup1-shard1of1

接下来,建立一个使用该模型的网站

现在所有的 Tensorflow JS 示例都使用 Yarn,我知道这有点过时了(当我做更多可视化工作时,yarn成为了新的热点,而npm是老狗;现在反过来了)。让我们暂时抛开前端的反复无常。

无论如何,希望你有纱线和一个工作的节点安装(至少版本 9)。对于一个服务于前端模型的网站的最小例子,你可以克隆我的回购

实际的 Javascript 代码并没有那么有趣。关于从缓冲区创建张量有一些样板文件,但是实际使用这个模型需要做的就是:

model = await tf.loadModel('[https://mydomain.com/model.json'](https://exploitip.com/model.json'));
output = model.predict(input);

完整的端到端前端(和后端)部署示例是我的报告中的。

维奥拉。硬件加速的 Keras 型号,您甚至不需要后端。

限制

除了你的网络架构可以被所有人看到之外,我能想到的最大缺点是,在许多实际应用中并不是所有的数据都可以在前端获得。在我工作的地方,当用户输入一个查询时,我们从 Elasticsearch 获取大量数据,并对这些数据运行一个模型(实际上是几个)。向前端发送这么多数据是不可行的。

即使是这样,你也可能想对的每次预测收费,一旦你进入 Javascript 领域,这是不可能的。

最后

很简单:

  • 使用队列
  • 不要占用你的后端网络服务器;将任何 ML 过程与提供资产和端点的行为分开
  • 确保一切都是无状态的,并且能够并行运行
  • 考虑前端部署

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

Not really. They all get momentarily sad.

我希望你喜欢这篇文章并从中有所收获!如果你这样做了,请点赞并关注,和/或在这里或在 @tomgrek 提供反馈。我在旧金山建造人工智能,并且总是喜欢和其他的书呆子/人工智能爱好者交谈,所以请随意通过任何方式联系。

真相没有单一的版本

原文:https://towardsdatascience.com/theres-no-single-version-of-the-truth-fe4b9857a453?source=collection_archive---------5-----------------------

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

我时常听到一个让我毛骨悚然的短语。这通常与一些陈词滥调的商业比喻有关(想到无耻地使用“在一天结束时”)。现在,有一个让我思考措辞在现代商业中的价值:真相的单一版本。

这个短语有不同的说法,比如真理的一个版本或者真理的单一来源。不管用哪种方式,在如今“另类事实”的氛围下,这个短语有了更深的含义。让我们解释一下这个短语的意思,以及为什么在部署这个短语时应该非常小心。

SSOT 与信息系统设计

这个术语最初的应用是在设计捕捉和传播信息的系统时。这在访问许多不同数据流的情况下尤其相关。“单一事实来源”模型确保相关应用程序访问相同的数据源,从而提高准确性和相关性。如果没有 SSOT,由于数据来源的差异,同一问题可能会有不同的答案。

这一点在建筑系统设计等领域尤为重要,在这些领域,一个变化就会产生迅速的连锁反应。下图显示了 SSOT 在特定情况下的工作方式。事实上,该图也可以应用于在任何信息系统中组合和验证多个数据源的方式。

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

源代码与版本

这是关键的区别。拥有单一的真实来源意味着任何给定的用户都可以依赖这些数据。系统被理解为将所有相关的数据源拉进那个单一的源,然后从那个点开始的所有查询依赖于那个源。

在商业词汇中,“单一来源”已经变成了“单一版本”虽然有一个的论点,即单一版本的真相是一个普遍接受的应用于数据集的规则,我有一个问题。单一版本的真相仍然意味着有其他版本的真相可用。单一的事物不能有多个版本。同样的数据,不同的方法可能会产生矛盾的答案。如果是这样,那就不是真理。是观点!

为什么你应该关心

所有伟大领袖的一项基本技能是接受大量不确定性的能力。在不断变化的宏观经济环境中,没有什么是确定的。尽管模糊不清,但企业必须经营。领导者必须在不确定且经常不稳定的环境中接受多重真理。

精彩文章“ Both/And Leadership ”的作者指出了美国人的思维方式是如何框定这个国家与不确定性的关系的:

如果一个想法是“正确的”,它的对立面一定是错误的;如果情况似乎不是这样,那么我们必须重新定义我们的想法,以消除矛盾。

这就在灰色地带制造了一个真空。在当今西方企业的主流思维中,根本没有容纳多重真理的空间。如果一个领导者在一个想法上全力以赴,那就会减少分析其他潜在竞争想法所需的自省。

为了挑战这种似是而非的心态,文章接着提出了三个关键的转变,以适应现代商业世界的不确定性和矛盾性。坚持接受矛盾——你不能控制一切,也不应该尝试。消除稀缺思维——这阻碍了企业和员工的发展。走向充满活力和变化的状态——稳定是无法实现的幻想。

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

话语比以往任何时候都重要。走进时代的悖论,改变你的沟通方式,在当今的商业环境中放大你的成功。

记住这一点:如果你说“单一来源”,那么你是在谈论一个技术产品开发概念。您必须确定该来源符合 SSOT 的标准。如果你说“单一版本”,那么你真的没有说太多。你应该阐明你的意思,以避免混淆和怀疑。

我知道许多企业使用“单一版本”来让团队围绕一个共同的数据视图,但我不同意这个说法!相反,应该像命名项目一样命名数据集,并以这种方式引用它。或者称之为风景。“单一版本”暗示了一些不可能的事情!

本文代表尼克的个人观点,不反映他所属或受雇的任何公司。

尼克·维维安是一名记者和交流者,对旅游事业充满热情。在过去的十年里,他在世界各地为《孤独星球》等品牌创作内容,并在 nickvivion.com 撰写了大量关于内容、技术和旅游的文章。

这三个市场还没有被人工智能和深度学习服务

原文:https://towardsdatascience.com/these-3-markets-arent-yet-being-served-by-ai-and-deep-learning-3cde7ad20d50?source=collection_archive---------12-----------------------

这些将是艾唾手可得的果实

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

想获得灵感?快来加入我的 超级行情快讯 。😎

AI 突破了;渗透到大多数人会不假思索想到的每个行业。有许多公司正在研究自动驾驶汽车、自动机器人、个人助理等东西。你甚至可以找到更引人注目的应用如法律研究营销银行销售

…但这并不能涵盖一切。上面列出的所有应用程序都有一个共同点,那就是它们都更倾向于面向大型企业。大银行的银行业务,跨国组织的市场营销,汽车公司的自动驾驶汽车等等。

这里缺少的是小家伙。因为在媒体上看起来不酷而经常被遗忘的领域。

当每个人都在谈论仓库机器人时,我们已经忘记了可以帮助人们从事繁重劳动或老年人的机器人。那些没钱拥有自己的世界级人工智能研究团队的小企业主怎么办?他们被忽略了!

这些是我们需要在落后之前开始关注的市场。它们是可以应用人工智能的唾手可得的果实。

让我们看看最大的 3 个

公共服务和公用事业

当我们说公共服务和公用事业时,我们会想到常规医疗保健(如医生检查)、管道、电力输送和污水处理。虽然不是最性感的行业,但这些服务服务于所有地方的大众。

例如,大多数应用于医疗行业的深度学习都是针对专家进行的,如放射科医生、心脏病专家等。但是一个人去体检的正规医生呢?或者在像美国这样的国家,很多人付不起这些专家的费用,他们会怎么样?还没有对任何一种技术进行太多的探索,这种技术至少可以给一个人一些早期预警信号或建议,如果他们真的需要去找如此昂贵的专家。

此外,还有其他公共设施,如电力、水电和天然气。如果我们能找到用人工智能优化这些过程的方法,就能节省大量的成本。强化学习可能是一个很好的起点,因为一个可训练的、有行动奖励协议的代理人似乎很适合这样的工作。也许可以开发更有效的路由方法,或者使公用事业管道中的更多过程自动化。

这些是许多不性感但重要的公共行业中的一小部分,它们目前是不值得的。

小型企业

另一个不受关注的市场是小企业市场。大部分人工智能都是针对大公司的。但是那些小企业呢?他们占了北美就业的很大一部分!

事实上,小型企业确实面临着与大型企业类似的挑战,这些挑战可以通过人工智能来解决,只是规模较小。一个杂货店想要最大化它的营销和销售,就像一个更大的企业一样,它只是一个“本地”问题。一家大公司可能会使用人工智能来找出如何在电视广告或大型广告牌广告上最好地营销他们的产品。你当地的杂货店也希望有更好的人工智能市场,但也许是通过更有吸引力的传单或店面招牌。

也有咨询/合同方面的事情,人们可能会独立工作。也许使用人工智能来为这些人创造一些线索,这样他们就可以更有效地寻找新客户。

人工智能可用于解决较小企业的需求,这些企业的需求与较大企业的需求基本相同,只是规模不同,角度不同。

手工劳动

有一个微小的瓶颈,它总是存在于任何一个建造实物的项目中,那就是实际的体力劳动。

现在,这里有一些部分正在被人工智能处理,例如制造(想想装配线风格)和仓储。但是那些更重的工作呢,比如铺路,冶金,或者只是在房子里搬重物?这些东西目前都被遗漏了!

任何工作的体力劳动,通常花费最多的时间、金钱和精力,并造成最多的身体伤害。这是工作中最难的部分,需要最大的努力。有趣的是,在许多方面,最费力的部分往往是最重复的,然而在应对这个市场方面仍有很大的差距。

这种差距的一部分是目前进展缓慢的机器人领域。著名计算机视觉科学家和该领域的领导者 Jitendra Malik 最近在 ECCV 2018 上表示,机器人领域远远落后于人工智能:

机器人技术比计算机视觉落后十年,甚至二十年——Jitendra Malik,ECCV 2018

这是一个巨大的差距。因此,虽然许多视觉感知的奇妙算法正在开发中,但机器人在进行基本的抓取时仍然存在严重的问题。与此同时,目前的机器人不太灵巧,几乎没有“熟练”的控制,也不能有效地与环境互动。

如果我们只关注人工智能中事物的视觉和语言部分,我们将局限于无法以智能方式与世界进行物理交互的静止事物。

喜欢阅读关于科技的文章吗?

推特上关注我,我会在那里发布所有最新最棒的技术!

这 5 个数据可视化将使你以一种新的眼光看待史蒂芬·科拜尔晚间秀

原文:https://towardsdatascience.com/these-5-data-visualizations-will-make-you-see-late-show-with-stephen-colbert-in-a-new-light-34e03cc2541d?source=collection_archive---------15-----------------------

像许多人一样,我晚上的例行公事是一边喝酒一边看史蒂芬·科拜尔的节目。这是一首完美的颂歌。斯蒂芬设法让我发笑,即使是在最糟糕的日子里。

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

Picture Credit : Daily Beast

这个节目有两部分。斯蒂芬以一段独白和对当天政治事件的评论开始。在第二部分,斯蒂芬与客人交谈。我在深夜秀中见过各行各业的人,从总统到训熊师。这种嘉宾的多样性让我对出现在史蒂芬·科拜尔节目中的人的人口统计数据感到好奇。

他们中的大多数是做什么工作的?他们相对年轻还是年老?臭名昭著的性别差距存在于最著名的自由主义节目之一吗?我还能发现其他模式吗?

数据不容易获得。所以我决定刮维基百科。我已经收集了从展览开始的过去 3 年的数据。截止 2018 年 11 月 2 日,《T4》共 641 集,993 位嘉宾。

搜集和清理众包数据并不容易,但我得到的见解非常值得。例如,很少有人会想到黄金时段节目中最常出现的嘉宾是竞争对手的脱口秀主持人和天体物理学家。是的。约翰·奥利弗和尼尔·德格拉斯·泰森分别出场 9 次和 8 次。

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

Yeah , Neil deGrasse Tyson is normally not impressed with bad arguments

现在是严肃讨论的时候了。你们中的一些人可能会耸耸肩问:我们已经知道斯蒂芬邀请美国社会精英参加他的深夜玩笑,但是做数字运算重要吗?答案是:可以。这种解释更多地与我们在这些时代消费内容的方式有关,而不是针对我们正在分析的节目。

对我们消费的常规内容进行公正的分析比以往任何时候都更重要,因为我们正处于过滤泡沫之中。

过滤气泡是一种智力隔离状态,可能是由个性化搜索造成的。在后真相的时代,我们一遍又一遍地听到我们想听到的真相。此外,内容制作者倾向于制造政治二分法,以在一个已经分裂的国家扩大受众。

随着数百万美国人每晚收看史蒂芬·科拜尔的深夜秀,这个节目有着无与伦比的影响力。有关于斯蒂芬对现实世界影响的学术研究。科尔伯特凸起是社会科学家詹姆斯·h·福勒创造的一个术语。它的意思是由于作为嘉宾出现在节目中或在节目中被提及,某人或某事的受欢迎程度增加。福勒的研究发现,在节目中露面后的 30 天里,给民主党政客的捐款上升了 40%!虽然这项研究是关于科尔伯特报告——史蒂芬·科拜尔之前的节目——它的有效性仍然存在。

见鬼,他甚至可以筹集到一百万美元现实世界超级政治行动委员会。所以这个节目值得一个批判性的分析。

现在谈谈数字和细节。

好莱坞,请这边走

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

Top 10 occupation groups of the guests in Late Show with Stephen Colbert

与类似的深夜节目一样,嘉宾主要来自娱乐和表演行业,占嘉宾总数的 76。这个街区有各种各样的演员、说唱歌手、歌手、音乐家、电影制作人、编剧,当然还有单口相声演员。

被忽略的那一部分是我们可以看到这部剧的多样性的地方。从 YouTube 名人到四星将军再到天主教主教,这四分之一的人是一个真正的混合体。在模糊的分组之下,有一些你通常不会在深夜电视访谈节目中遇到的稀有珍宝。像记者和作家组的斯蒂芬·金安德鲁·苏利文或者像科学和学者组的理论物理学家布赖恩·格林和语言学家约翰·麦克沃特

此外,政府、政治和军事、记者和作家、电视记者和主持人职业群体合计占 17%,即使在通常专用于娱乐的第二部分,该节目也清楚其优先性和特征。

贝克德尔测试

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

Distribution of Gender Ratio of guests in Late Show with Stephen Colbert

数字说话响亮而清晰。自由节目也不能摆脱性别差异。该节目中的性别差距是男性领先 30 个百分点。考虑到斯蒂芬的大多数客人都来自演艺圈,这个数字是很大的,在这个领域里,女性和男性的才能是不相上下的。如果你把职业类别和性别划分一起分析,对比就更加明显了。

例如,在娱乐、演艺界职业类别中,男女嘉宾的划分分别为 62.2%和 37.7 %。当我们转向其他被认为“严肃”的职业,如科学和学术,比例差距变得更大,分别为 75%和 25%。在政府、政治和军事占领区,男女比例分别为 71%和 29%,男性占优势。然而, 商业和企业在嘉宾性别差距最大的类别中登上了领奖台,男性嘉宾比例高达 94%,甚至超过了女性嘉宾比例为 16%的体育

斯蒂芬喜欢中年男人

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

Distribution of age of the guests of Late Show with Stephen Colbert. Color indicates gender.

嘉宾的平均年龄为 47 岁,标准差为 13.56,显示了年龄分布。如果我们按性别划分,女性客人的平均年龄是 45 岁,男性是 50 岁。这种性别间平均年龄的差异与职业类别有很大的相关性。

例如,在上图中,我们可以看到女性客人数量高于男性的唯一年龄范围是 28 至 36 岁。进一步研究数据,我发现 28 至 36 岁的女嘉宾中有 94%来自娱乐和表演行业。相比之下,年龄在 28 岁至 36 岁之间的男性客人在职业人群中的分布要广得多。见下图。

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

Distribution of male guests who are 28 to 36 across occupation categories

让我们谈谈政治

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

Political View distribution of the guests in Late Show with Stephen Colbert

来自世界各地的访客中,有 60%的人更新了他们的维基百科页面政党栏,他们都是民主党人。如果你只从美国两党的角度来看,这些数字会变得更有趣。在 71 名政治观点被标记为共和党或民主党的美国客人中,民主党人比共和党人多三倍。这些数字符合特朗普 2016 年就职后该节目变得越来越政治化的普遍看法。

所有可爱的人,他们都来自哪里?

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

Distribution of birth states of of the guests in Late Show with Stephen Colbert. Color scale indicates density.

绘制美国客人的出生城市和州揭示了一些有趣的模式。客人来自全国各地,但也有例外。大约 40%的客人出生在加利福尼亚州和纽约州。

一项双变量分析表明,在娱乐和表演行业类别的客人中,有 31%出生在两个州。相比之下,政治客人的出生状态的百分比分布得更广。除了纽约州——我认为它是一个异常值——21 个州的比率从 5.77%到 1.92%不等。在这里,我们嗅到了一种趋势,即在重要的大都市长大对于某些职业来说很重要,这些职业的人生起点较少或较早。

大苹果闪耀

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

Distribution of American guests across top 10 American Cities

我深入研究了出生地点的可变性。这次我深入城市。纽约市作为一个空间因素的重要性是非常明显的。上图显示,在美国前 10 大城市中,纽约市拥有 47.7%的客人份额。

**我们在上一节中得到的信号——人们成长的地方会影响他们的职业——在我们将特定的职业和城市联系起来时会变得更强。**这与来自数据的其他证据和趋势相关,例如茱莉亚音乐学院是纽约市最负盛名的艺术学校之一,也是客座率最高的学校。

所有的职业,像表演、唱歌和写作,早期的推动可能会有不公平的优势,这显示了与出生城市的相关性。与其他城市相比,纽约在电视记者和主持人群体中占有 55%的份额。57%的娱乐和娱乐业群体和 69%的记者和作家群体都出生在纽约市。

TL;博士?

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

Picture Credit: http://gif-finder.com

  1. 斯蒂芬的大多数客人来自演艺圈,但也有其他很酷的人
  2. 谈到政治,斯蒂芬更喜欢驴子而不是大象已经不是什么秘密了
  3. 越来越多来自不同领域的女性将使这个精彩的节目成为必不可少的

数据和研究。

我们正在建立一个强大的系统来衡量科学……但是创新呢?

原文:https://towardsdatascience.com/these-are-some-of-the-things-you-are-likely-to-hear-if-you-spend-time-talking-to-people-running-138a31eaea2e?source=collection_archive---------3-----------------------

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

Cell structure from Robert Hooke’s Micrographia (1665). Source: Wikimedia Commons

“我们的工作是创造新的联系,但我们如何证明它们的价值?”

“测量是短期的,但我们的影响是长期的”

“衡量我们的方式让我们不敢冒险”

如果你花时间与实施支持创新的项目和干预措施的人交谈,你可能会听到这些事情。这些创新实践者所说的是,用于评估他们的指标是不正确的,这使得他们的工作更加困难。

但是什么是正确的衡量标准呢?我们如何得到它们?开始测量目前不为人知的事物有什么坏处吗?

在这篇博客文章中,我通过首先查看科学研究的相邻领域的情况来探索这些问题,我认为,关于科学活动的新一波数据(科学计量学)正在以前所未有的详细程度和及时性,使测量和跟踪科学投入、过程和产出变得越来越容易。

不幸的是,在创新领域(企业、政府和第三部门应用新思想的领域),事情的进展没有那么快,因此我们对创新如何发生以及支持创新的最佳方式的理解仍然不够。我概述了科学中情况不同的原因,并概述了生成更好的创新数据的策略,帮助我们的创新衡量(innometrics)赶上科学计量学。

创建科学政策的科学

在过去的几个月里,我参加了几次会议和研讨会,数据的数量和质量以及科学计量学学者为回答重大科学政策问题而部署的方法的复杂性给我留下了深刻的印象,这激发了我写这篇博客的灵感。

在去年 9 月的经合组织蓝天论坛上,我看到了关于科学合作和研究人员流动的非常有趣的介绍。我对由 Katy brner 和合作者制作和策划的知识图谱感到惊讶,他们使用先进的分析和信息设计来创建科学研究的详细地图,以及不同研究领域之间的联系。

例如,参见下面的地图(基于这篇论文)。它基于对超过 200 万篇论文的分析显示了医学科学子领域之间的关系。研究人员和资助者可以使用这些地图在浩瀚的科学海洋中导航,并识别潜在的有趣论文和领域之间的联系。

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

来源:斯库平、比伯斯丁和伯尔纳(2013 年)

在欧盟委员会(European Commission)组织的一次专家研讨会上,我了解到在欧盟委员会的支持下,一个由欧洲研究人员组成的财团正在开发的科学与创新研究基础设施 RISIS 。RISIS 是一组链接的数据集和一个安全的实验室,用于存储和分析科学活动的微观数据。

就在几周前,我参加了由科技公司 Digital Science 组织的 FuturePub 会议,会上他们的首席执行官丹尼尔·胡克(Daniel Hook)介绍了 协作的互联文化 *,*一份报告,该报告对科学协作进行了新的分析,其数据来自背面的,这是一个协作科学写作和出版的平台。

下面这张取自该报告的漂亮图表显示了不同国家机构之间的联系(红色代表北美国家,蓝色代表欧洲国家,紫色代表南美国家,黄色代表西亚国家)。作者指出,欧洲国家之间的高水平合作部分是由欧盟研究基金推动的,这鼓励了欧洲各地的研究人员一起工作。你可以想象这样的数据和可视化有助于回答重大的政策问题,比如英国退出欧盟对英国在国际研究网络中的地位的影响。

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

来源:卡尔弗特和胡克(2017)

我在自己的工作中受益于科学计量学的新浪潮。由英国研究委员会和创新机构 Innovate UK 资助的项目的开放数据集“研究之门” (GtR)是对我们为威尔士政府开发的创新数据仪表板 Arloesiadur 的重要投入。GtR 包含数万个项目和组织的详细链接信息。我们正在使用机器学习、自然语言处理和网络科学来分析这些数据,以跟踪研究课题和技术的出现,确定威尔士具有比较优势的领域,并发现威尔士研究人员之间合作的新机会。

下图显示了基于这些数据的研究主题的初步网络。在这个图表中,经常出现在相同项目中的研究主题被拉近了。颜色代表每个主题所在的更广泛的科学学科。尽管科学学科显而易见,但它们远非孤立。特别是,‘*media _ design _ creative’,‘management’,‘process _ mechanical _ engineering’*以及环境和生命科学研究的政策应用等应用性和实践性研究主题似乎在学科之间架起了桥梁,表明这些项目通过将学科联系起来解决实际问题而创造了价值,此外还提供了这些问题的解决方案!

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

资料来源:Nesta(即将出版)。

创新计量学落后于科学计量学

不幸的是,我们衡量新思想(包括科学研究产生的思想)应用的创新过程的能力并没有以同样的速度扩大和提高。哈桑·巴克希和我在去年经合组织蓝天会议上提交的一份工作文件中提出了创新政策数据现状的问题,所以我现在只浏览一下:

许多当前的创新研究依赖于创新调查,例如社区创新调查。这些(明确地说,是高质量的)调查受到样本量小和难以比较回答的困扰,它们缺乏关于商业合作和贸易的详细信息,并且不能用于识别单个企业。对于寻找具体地点、行业和网络或单个企业详细信息的研究人员和政策制定者来说,它们并不那么有用(而不是部门总量或平均值)。

专利可以填补其中的一些空白,但在以科学为基础和技术密集型的行业中,只有极小一部分企业拥有专利。不到 1%的英国创新调查受访者认为专利对于保护他们的创新非常重要。

通过通常由国家统计机构维护的安全数据实验室,可以越来越多地获得关于公司财务业绩的微观管理数据。不幸的是,这些数据告诉了我们很多关于公司业绩的信息,却没有告诉我们多少关于创新的信息。【2】和以前一样,他们缺乏关于商业网络的信息,并且(可以理解的)是匿名的。

如何解释这些差异?

我们拥有比创新更好的科学数据,原因很简单:科学活动更容易衡量,衡量的内容更公开地共享,共享的内容更容易整合,以获得对科学系统更统一的看法。

让我们依次讨论这两件事。

1.关于测量的容易程度:虽然很少有人会认为科学是一个简单的系统(如果有疑问,回到上面的图表),但它的输出不如创新那样多样化。简单地说,学术研究者产生论文。【3】相比之下,创新包括新产品、服务、流程、商业模式、组织方式和“软”创新,这些创新在不同行业之间有很大差异。没有一个像 Scopus 这样的数据库可以让人们去寻找关于这些创新的信息。

科学货币引文的高可见性也使得在学术界比在工业界更容易绘制合作和影响网络,在工业界,许多(如果不是大多数的话)信息流和人员不会留下书面痕迹,或者在许多独立或专有的数据集中留下一点痕迹,如企业用来跟踪销售和购买的客户关系系统,或 LinkedIn 等专业网络。

2.这让我们想到了推动新一轮科学计量学浪潮的科学体系的另一个特征:开放性。科学由少数(主要)公共和第三部门组织资助,这些组织收集大量关于“投入”(资金、科学工作者的特征、项目描述等)的运营数据。),而且越来越开放以降低知识获取和再利用的壁垒。在期刊付费墙之外获取论文也变得越来越容易。创新方面的情况非常不同,政府在发布创新项目参与者的数据方面速度较慢,拥有宝贵创新数据的公司没有多少动力发布这些数据。

3.在整合方面:科学系统在开发和采用唯一标识符方面取得了长足进步,这使得跨数据库连接信息成为可能:这包括用于识别内容(例如论文)的数字对象标识符、研究人员的持久数字标识符 ORCiD 以及全球研究机构目录 GRID 。由于这种元数据基础设施,科学计量学的研究人员可以顺利地从许多不同的来源汇集信息,以获得对创新系统的全面了解。这种全球标准在创新领域不太发达。例如,用于唯一标识企业的全球法律实体标识符 (GLEI)在英国的注册公司不到 3 万家,占英国企业人口的比例微乎其微。

帮助创新计量学赶上科学计量学

这东西很重要。就目前的情况而言,创新政策决策基于错误数据的风险很大,糟糕的指标会扩大,以填补良好指标缺失造成的空白,这可能会造成一个颠倒的世界,成功的项目似乎已经失败,反之亦然。

毫不奇怪,糟糕的创新数据也减缓了大数据、数据科学和人工智能(AI)方法在创新政策和实践中的使用。相比之下,更大更好的科学计量数据集正在推动一个新兴的科技场景,包括数字科学(我之前提到过),以及其他创业公司,如仁慈的 AIMetaYewno ,他们都在使用人工智能来加强科学发现和合作。

更糟糕的是,对创新的错误衡量在科学政策中产生了负面溢出效应,因为低质量的创新指标使得衡量公共投资对科学的影响变得更加困难,越来越多地基于经济增长和就业的前景。甚至还存在这样的风险,即缺乏关于科学研究推动创新的微妙方式的信息,可能会导致政策制定者关注科学影响的更粗糙的衡量标准,如从大学到工业的衍生产品或知识产权许可。

这可不行。我们知道,创新对于提高生产率、重新平衡经济、减少经济不平等和应对巨大的社会和环境挑战至关重要,但这需要有效的政策来支持创新,并基于正确的数据和指标来监管创新。正如欧盟专员卡洛斯·莫达斯(Carlos Moedas)在经合组织蓝天会议(OECD Blue Sky conference)的演讲中指出的那样,“数据是(创新)政策运行的燃料。没有它,我们无法知道我们是否做出了正确的决定。

我们如何前进?

有三个广泛的行动领域,与我上面提出的衡量、开放和整合的思想相关。

**首先,我们需要扩展新数据源和数据科学方法的使用,以衡量和规划创新。**和其他人一样,创新者在网站和服务中留下数字足迹,他们用这些网站和服务来筹集资金、建立关系网、合作、招聘、营销和销售。我们需要积极分析这些来源,以衡量创新投入、活动和产出。这就是我们在诸如科技国家创意地理Arloesiadur 等项目中所做的,并取得了可喜的成果。现在我们需要开始推动这些方法进入政策主流,并围绕它们的使用建立信任。我们与 NIESR 和其他合作伙伴在国家统计局建立的经济统计卓越中心所做的工作正是以此为目标。

另一个更好地衡量创新的潜在策略是用网络数据“即时预测”商业创新。例如,人们可以进行一项大型调查来衡量商业创新,然后在其他更及时匹配的数据源中寻找这些指标的良好预测者,如受访者的网站(用机器学习的语言来说,我们将在通过调查标记的数据集中训练一个模型)。然后,我们可以使用我们所了解的代理和度量之间的联系来估计我们没有调查的其他业务(但显示创新“信号”)具有创新性的可能性,并比大型和昂贵的调查更快和更频繁地跟踪情况的变化。

其次,我们需要找到一种方法来打开当前关闭的重要创新数据集。这适用于公共部门,几乎在默认情况下,公共部门应该公开参与创新项目的公司的数据(这是创新英国已经在通过研究之门做的事情),以及商业注册,甚至在合理的范围内,公开行政数据集。专门为创造高质量数据而设计的政府干预,例如由创新增长实验室倡导和运行的干预,是这种混合的重要元素。

在私营部门方面,一些平台如 GitHub、Meetup 或 Twitter 对其数据相当开放,可以通过开放应用编程接口(API)访问这些数据。LinkedIn 等其他网站非常封闭,它们的数据提供了研究劳动力流动、商业网络和创新能力的绝佳机会。

是否有任何法规、激励措施和技术系统(包括通过安全数据服务共享数据)可以到位,以鼓励更系统地共享这些信息,为创新和经济政策提供信息?

第三,我们需要整合数据集,以获得创新系统的统一视图。如果 YouTube 或苹果应用商店中存在关于内容创新的数据,GitHub 等协作编码网站中存在关于数字创新的数据,Glassdoor 等工作评论网站中存在关于组织创新的数据,我们如何全面衡量创新?

为了有效地合并所有这些数据集,我们需要唯一的标识符来告诉我们,GitHub 中的创新创业公司 X 与参与创新计划 Y 和加速器 Z 的公司是同一家,与科学中已经存在的公司是同一家。政府和数据平台还能做些什么来鼓励像 GLEI 这样的商业标识符的使用呢?那么个体创新者的唯一标识符呢?比如,它可能帮助我们追踪个体轨迹,以绘制思想传播图,并衡量创新项目的长期影响。在这里,我们可以从公共部门的解决方案开始,比如在北欧国家实现了如此多伟大创新研究的个人身份号码,以及私人部门的解决方案,比如 LinkedIn 或 Twitter 等平台上的社交用户 id。

结尾和警告:指标只是开始

我们需要更多更好的数据来制定创新政策,我相信,受科学计量学进步的启发,上述议程会有所帮助。然而,为了产生影响,需要使用我们开发的新指标,并且要聪明地使用。

正是在这一点上,我或许应该缓和一下我对科学领域形势的乐观态度,在这个领域,学者们早就表达了对痴迷于指标,以及简化影响因子或大学排名的过度和扭曲影响的担忧。世界的复杂性将永远压倒我们描绘它的能力,而科学、技术和企业创造力所固有的不确定性将永远挫败我们预测和控制它的愿望。

然而,无知并非福佑,很少有人会认为应对所有这些挑战的方法是停止测量。答案是继续衡量,更好地衡量,谦虚地衡量,理解度量的局限性,通过使用和使用我们所学的东西来学习。这些过程是科学方法的核心,可以帮助我们更好地理解和支持科学以及创新。

此博客最初发布于 Nesta 网站

收到了詹姆斯·菲普斯的有益评论。

说明这篇博客的图像是在罗伯特·胡克的 显微照片 中通过早期显微镜看到的细胞结构,这是如何利用更好的测量来揭示复杂性而不是消除复杂性的例子。

尾注

【1】科学计量学是“科学”和“计量学”的结合体。它指的是对科学的衡量,通常使用出版物或专利等科技产出。

【2】说到这里,有人把微观行政数据和创新调查数据、创新计划数据进行匹配,效果很大。

诚然,书籍或艺术品等其他产出在艺术和人文学科中也很重要。

这些是真正的堆栈溢出趋势:使用页面视图

原文:https://towardsdatascience.com/these-are-the-real-stack-overflow-trends-use-the-pageviews-c439903cd1a?source=collection_archive---------5-----------------------

直到今天,获得 Stack Overflow 的季度浏览量并不容易。了解如何获取这些指标,并开始使用我们的交互式仪表盘。

在这篇文章中,我将向你展示如何获得 Stack Overflow 上每个标签的季度浏览量,以及为什么它很重要。如果您只是想开始玩这些数字,这个交互式 Data Studio 仪表板已经为您准备好了:

Update chart 2019–01, see previous results and how-to below

Original results 2018–06, see updated above

TensorFlow 真的比 Git 更受关注吗?

根据堆栈溢出趋势工具 tensorflow现在比git更流行:

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

有意义吗?虽然tensorflow值得很多关注,但git是最受程序员欢迎的工具之一——在机器学习社区内外。事实证明,该工具测量每个标签的新问题数量,而这只是故事的一半。如果我们可以比较每个标签的页面浏览量百分比和问题百分比,会怎么样?

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

Top chart: Percentage of views that ‘git’ gets on Stack Overflow, vs ‘tensorflow’. Bottom chart: Percentage of new questions for each tag on Stack Overflow. Turns out ‘git’ gets way less new questions, but way more views.

发生了什么:看看图表——即使每个季度为tensorflow创造了更多的问题,标有git的问题获得了至少 6 倍的浏览量。

我们可以看到.netfirebasec++r以及.nettypescript的类似趋势:

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

These charts show that in '.net’ vs 'firebase’, 'c++’ vs 'r’, and '.net’ vs 'typescript' one of the technologies gets more pageviews, while the other gets more new questions.

您可以在这里看到,衡量新问题的数量只能说明问题的一半。如果你是 Stack Overflow 博客的粉丝,你会发现在许多故事中,甚至他们也使用了%的浏览量。但是获得堆栈溢出时每个标签每个季度的查看次数并不容易,直到今天:

  • Stack Overflow 提供了他们的趋势工具,但是它只关注新问题的数量。
  • Stack Overflow 提供了数据交换服务,在这里人们可以发布和运行任意的 SQL 查询。编写一个查询来计算新问题的 #很容易,但是要找到历史浏览量是不可能的。
  • Stack Overflow 还发布了他们数据的季度转储,这些数据我们在 BigQuery 上分享,供任何人分析。同样,很容易找到每个季度的问题数量,但不可能找到历史的视图数量。
  • 但是,如果您有每个堆栈溢出转储的副本,然后在它们之间进行数学运算来计算每个标签的季度浏览量,会怎么样呢?我就是这么做的!

其他有趣的比较

前 5 名:Java、JavaScript、Python、C#、Android、PHP

  • Java 和 Javascript 一直是最受关注的——但是 JavaScript 每个季度都会收到更多的新问题。
  • Python 正在快速追赶!它得到的问题仍然比 JavaScript 少,但它得到的浏览量比 Java 和 JavaScript 多。
  • C#在页面浏览量排名前五,但在问题数量排名前五。另一方面,PHP 有很多问题,但不足以在页面浏览量排名前五。

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

JavaScript 框架:Angular vs Angular,React,Vue

  • 如果angularjs要死了,谁来代替它?不是别人,正是angular!您可以想象这个新标签在问题数量和浏览量方面接管前一个标签有多快。
  • reactjs哪儿也不去,而是向右上方走。
  • vue.js比其他替代产品更受关注,但仍有很长的路要走。

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

机器学习

  • TensorFlow 和 Keras 吸引了所有的注意力和问题。
  • PyTorch 和 MxNet 勉强注册。咖啡在 2017 年更强,但这些天融入了底部。

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

即将推出的语言:Swift,Go,Haskell,Kotlin,Rust

  • Swift 盖过了这一类别中的所有其他公司。
  • Go 在浏览量上比在问题数量上更有优势。
  • 科特林是生长最快的。
  • 哈斯克尔和拉斯特:保持强大的伙伴!

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

Swift, Go, Haskell, Kotlin, Rust attention on Stack Overflow — progressively removing the top ones to highlight the differences between the remaining.

BigQuery vs 红移

我❤大查询。

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

AWS Lambda vs GCP 函数 vs Azure 函数

  • AWS 有优势,但 GCP 和 Azure 一直在向右上方移动。

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

App Engine vs Kubernetes vs Heroku

App Engine 是我最喜欢的 PaaS,但这几天关注度越来越低。与此同时,Kubernetes 不是一个 PaaS,但它不断得到更多的问题和关注。

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

让我们更深入:通过页面浏览量的趋势问题

那么,我们能根据浏览量找到每个标签的首要问题吗?当然:

但是让我们把它留给我的下一篇文章。敬请期待!

链接

[## 堆栈溢出数据可能揭示谷歌在云中对抗亚马逊的秘密武器

有许多不同的方法来评估不同技术的受欢迎程度。Redmonk 看 GitHub 和 Stack…

www.techrepublic.com](https://www.techrepublic.com/article/stack-overflow-data-could-reveal-googles-hidden-weapon-against-amazon-in-the-cloud/)

操作方法

我们在 BigQuery 中使用 Stack Overflow 的数据,由谷歌云公共数据集计划每季度更新一次

[## Google BigQuery 公共数据集现在包括堆栈溢出问答

2016 年 12 月 15 日星期四

medium.com](https://medium.com/google-cloud/google-bigquery-public-datasets-now-include-stack-overflow-q-a-5a8a7e371b52)

每季度页面浏览量

#standardSQL
WITH historic_views AS (
  SELECT *, '201703' q
  FROM `fh-bigquery.stackoverflow_archive.201703_posts_questions` 
  UNION ALL
  SELECT *, '201706' q 
  FROM `fh-bigquery.stackoverflow_archive.201706_posts_questions` 
  UNION ALL
  SELECT *,  '201709' q 
  FROM `fh-bigquery.stackoverflow_archive.201709_posts_questions` 
  UNION ALL
  SELECT *, '201712' q 
  FROM `fh-bigquery.stackoverflow_archive.201712_posts_questions` 
  UNION ALL
  SELECT *, '201803' q 
  FROM `fh-bigquery.stackoverflow_archive.201803_posts_questions` 
  UNION ALL
  SELECT *, '201806' q 
  FROM `fh-bigquery.stackoverflow_archive.201806_posts_questions` 
), top_tags AS (
    SELECT value FROM UNNEST((
       SELECT APPROX_TOP_COUNT(tags, 5000)top  
       FROM `fh-bigquery.stackoverflow_archive.201803_posts_questions` 
       WHERE NOT tags LIKE '%|%'))
    WHERE count > 10
), views_per_tag AS (
  SELECT tag, COUNTIF(DATE(creation_date) BETWEEN DATE_SUB(PARSE_DATE('%Y%m',  q), INTERVAL 3 MONTH) AND PARSE_DATE('%Y%m',  q)) questions
    , SUM(view_count) views_cum, PARSE_DATE('%Y%m',  q) q
  FROM historic_views, UNNEST(SPLIT(tags, '|')) tag
  GROUP BY tag, q
), views_per_q AS (
  SELECT *, views_cum - LAG(views_cum, 1) OVER(PARTITION BY tag ORDER BY q) views
  FROM views_per_tag
), percents AS (
  SELECT *
    , 100*views/SUM(views) OVER(PARTITION BY q) views_percent
    , 100*questions/SUM(questions) OVER(PARTITION BY q) questions_percent
  FROM views_per_q
  WHERE views IS NOT null
  AND tag IN (SELECT value FROM top_tags)
) SELECT *
FROM percents

显著的趋势差异

#standardSQL
WITH toptags AS (
  SELECT *
  FROM `fh-bigquery.stackoverflow.201806_stacko_tags_views` 
  WHERE q='2018-06-01'
  AND tag NOT IN ('string', 'git', 'sql')
  AND views_percent>0.05
)SELECT a.tag, b.tag btag, a.views_percent - b.views_percent
FROM toptags a
JOIN toptags b
ON a.tag!=b.tag
AND a.views_percent>b.views_percent
AND a.questions_percent< b.questions_percent
ORDER by 3 DESC

后续步骤

如果你也想看看每个问题获得的浏览量:我发表了它。

[## 真正的顶级堆栈溢出问题

很容易找到有史以来最大的堆栈溢出问题,但是当前最大的问题给了我们什么…

towardsdatascience.com](/finding-the-real-top-stack-overflow-questions-aebf35b095f1)

想要更多的故事?查看我的关注我的推特,订阅reddit.com/r/bigquery。还有试试 big query——每个月你都可以从免费获得一个完整的 TB 级分析。

[## BigQuery 惰性数据加载:DDL、DML、分区和半万亿维基百科页面视图

分析维基媒体公开发布的 4tb 维基百科浏览量数据集的最简单方法是什么…

medium.com](https://medium.com/google-cloud/bigquery-lazy-data-loading-ddl-dml-partitions-and-half-a-trillion-wikipedia-pageviews-cd3eacd657b6) [## 堆栈溢出何时回复:如何用 BigQuery 预测

当你最后发布一个关于栈溢出的问题时,一个漫长的等待就开始了。有人会回答你的问题吗?会不会…

medium.com](https://medium.com/@hoffa/when-will-stack-overflow-reply-how-to-predict-with-bigquery-553c24b546a3) 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们不必担心的事情人工智能:工程师/科学家的视角

原文:https://towardsdatascience.com/things-we-dont-have-to-worry-about-ai-an-engineer-scientist-s-perspective-f7695d434004?source=collection_archive---------22-----------------------

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

Photo by Joakim Honkasalo on Unsplash

人工智能这个词通常与每个领域的颠覆联系在一起,通过优化,由不同类型的预测提供动力,通过智能和精细的控制实现自动化。但谈到人工智能的未来,我们所能想到的就是散布关于人工智能最新进展的恐惧文章,以及最终人工智能反人类的电影,这些电影刺激我们倾向于智能机器消灭我们,或者通过诱导技术奇点来奴役我们,使我们成为存在的威胁。

事实上,有几个伟大的论点确定性地使智能机器成为人类迫在眉睫的生存威胁,就在我们创造它们的那一刻。其中一个全面的论点如下- 通过给智能机器设定目标,我们确保了它的自我保护、资源获取和独立决策,当智能要求统治时,它们的目标机制将会走向显示统治和夺取对世界的权力,因此最终奴役我们或消灭我们。

这种论点范式的例子很流行,继承了这种论点的全部或部分性质,但最终成为对人类的威胁或终结。

曲别针最大化器

其中之一是“回形针最大化器”。这就是这个思维实验或特殊困境的过程——一个人工智能代理决定或被告知制作尽可能多的回形针。它试图通过改进自己来获得大量的回形针,寻找获得回形针的新方法,同时抵制自己偏离目标。在某个时候,它开始首先改造整个地球,然后增加空间部分成为回形针制造设施。

在同一个领域的另一个思维实验是这样的——想象一下,一个最初被编程用来消除癌症的医疗机器人如何得出结论,消除癌症的最佳方式是消灭基因上易患这种疾病的人类。

这些思想实验(以及大多数其他实验)的一个重要警告是,它们假设我们自己创造的未来是完整而复杂的人工智能,但考虑到它相对于人类今天的理解或智能的统治地位。有人强烈支持,为了将智能集成到机器中,我们首先必须了解我们自己的智能,这是我们所知道的唯一全面的智能。因此,创造完全人工智能的人类智能将比我们今天的智能更加复杂。

用瑞士神经科学家帕斯卡·考夫曼的话说,他是 Starmind 公司的首席执行官,该公司的使命是创造一个由数千名专家的大脑组成的“超级有机体”

“更好地了解我们自己的大脑不仅会使人工智能成熟到足以与人类智能相匹敌,还会使脑机接口更好,使两者之间能够进行对话”

我们成功地建造了一个人工智能代理人,这种理解是对那些通过我们自己的创造或我们自己的好奇心标志着人类末日的论点的一种令人平静的反驳。

我们不能担心智能特工伤害我们的所有可能性。有些可以通过良好的工程来避免,有些可以通过这些代理如何工作的强有力的理论来避免,但大多数可以通过我们真正知道我们在做什么来避免。最重要的是,我们都有一个有限的“担忧预算”。我们的时间、精力和努力也是如此。这些是一些担心不会有成效而且看起来很愚蠢的话题,久而久之。

I/O 目标和行动

我们给智能代理设定目标的方式,以及我们从它那里获得帮助来完成事情的方式。目前,我们不会给使用自然语言的机器(狭义智能)设定目标。我们不要求计算机-“学习驾驶并帮助我们驾驶我们的汽车”,不,我们编写一个学习程序,它通过经验(数据)学习如何处理一些情况(这里是驾驶),然后将这个程序部署到我们的汽车中,使它能够控制或自动驾驶汽车。

在未来,我们不会通过自然语言为一个智能主体设定目标,而不确定他们不会太过拘泥于字面意思,或者他们不会因为不知道实现目标的方法而显得荒谬。即使对于自主代理,我们也不会给予超过他们完成任务所需的控制权。这是很好的工程。

潜在目标对齐问题

当我们不像让智能代理开车那样具体或精确地输入目标时,这个问题就出现了。例如,当我们用自然语言发出指令时,它必须根据输入的命令字符串来推断目标、子目标和目标函数。这对机器来说可能非常困难,因此它会犯错误,伤害人类,或者至少让人类后悔接受机器的帮助。

我们没有创造任何基于自然语言进行核心控制工作的机器,也没有创造任何可以推断潜在目标、子目标结构及其重要性、难度、可行性等的机器。所以,担心我们如何给我们将在离现在更远的未来制造的机器设定目标是没有建设性的,也是没有任何成效的。

道德和驱动力的一致性

这类通过智能机器灭绝人类的论点非常流行。如果我们创造的机器具有与我们不同的驱动力和伦理,那么它们最终会伤害我们,或者至少成为我们探索自己驱动力的障碍。

从古代哲学家到现在的认知科学家,对人的欲望、目标和内容机制的研究已有数千年。我们已经确定,理解我们自己的智能可能是创造人工智能所必需的。那么,在我们制造智能机器之前,我们应该已经想出了这个问题的答案,通过了解我们的机制,并试图在机器中模拟它们。

如果我们担心智能代理改变它们的目标和驱动来伤害我们,脸书人工智能集团主任严乐存已经暗示了加密目标函数,它不允许机器改变我们给它们的目标。

主观经验论证

与上述所有概念不同,主观经验通常用于反对机器获得任何内部驱动力或动机,这些驱动力或动机必须与内部主观感觉相联系。因此,没有主观经验,智能代理只是有目标和目的的实体,但不一定有动机改变它们以伤害它们的创造者。

如果智能机器没有主观经验或拥有与我们不相似的东西,那么智能机器会渴望自由或拼命寻找其存在的意义的想法只是一厢情愿。

资源获取约束

像计算时间、计算能力、电力、互联网连接这样的资源可以通过对智能代理的约束来提供。我们必须给代理人资源来完成目标,但是很容易对这些资源进行限制。

更有害的资源,如与具有相同目标的代理人形成群体、协作的统一行动和社会发展方面,获取起来要复杂得多,并且相对容易受到约束,就像在物理世界中一样。人类通过从一个文明到另一个文明的进化,缓慢地学会了交流、合作和共同生活。

史蒂夫·平克(Steve pinker)对智能机器有一个很好的看法,与上面类似,当被问及它们是否会在这次采访中成为一个存在的威胁时。

从数据中学习的归纳力量

机器从数据中归纳出智能。为了在从数据中学习的机器中激发新颖和创造性的行为,需要提供抽象和贯穿模型架构的视角。很可能,这种感应能力不足以模仿我们复杂的欲望和内容机制或最终会伤害人类的主观体验。

我们的创造力和好奇心源于强烈的欲望、目标和内容机制。我们需要对自己的智能进行大量的增强和理解,才能在一个自主代理中大规模地整合这些属性,这肯定不能仅仅从大量的数据中归纳出来。

我属于试图制造智能机器的领域,而不是头脑风暴这个领域的成果及其对社会的影响。我不反对来自外部的批判性分析,每个领域都应该有来自外部的这种元素。但是在大量这样的分析中,我作为制造智能机器和研究大脑的研究者的观点,似乎对归功于智能机器的非凡事物更具批判性,只是因为直面制造智能机器的所有障碍。

在同样的背景下,美国计算机科学家、图灵奖的第一位获得者艾伦·珀利斯(Alan Perlis)说:“在人工智能领域度过的一年足以让人相信上帝。”

人们很容易对我们正在建造的智能机器以及人类控制它或与之共存的能力产生误解。这些概念有助于我们克服穿越这些地形时的陷阱。

人工智能不会在一夜之间出现

智力不会像意外一样突然出现。智力不是新奇的直觉。我们不知道人类的智力发展了多少亿年,这是时间孕育的进化的丰硕成果。因此,它不会突然出现在一台机器或一组机器中,然后繁殖/改进自己,以至于超越人类,奴役我们。

智力不能解决一切

当我们谈论未来的智能机器时,我们倾向于认为它们具有机器所具有的所有超人能力,快速、精确和具体的计划行为,以及我们人类已经拥有的能力。我们理所当然地认为我们作为人类所拥有的能力,我们在自己之间建立的沟通和协作是因为我们都分享的潜在故事和我们都想实现的集体目标。首先,对于机器来说,在一个物理世界中培养这种能力对我们来说既不是迫在眉睫的,也不是模糊不清的。此外,培养这种能力可能会有很多副产品,其中之一可能是以更富有成效的方式与人类合作的能力。

智慧可能不渴望权力

当我们想到智能机器时,我们倾向于假设智能来自于控制或夺取权力并显示统治地位的欲望。那可能是完全不同的事情。此外,就智力而言,我们不应该假定它与我们所拥有的东西相似。

目前,自主代理不能有任何主观道德(无论是好的还是坏的)

目前,我们并没有给一个自主的代理人伦理,我们只是让它按照我们自己的伦理行事。此外,我们可能不会制造理解我们的道德准则和伦理的机器,我们只是必须努力制造行为符合它们的机器,并且必须根据我们是否会因为它所呈现的效用而容忍它的不良影响来部署它们。在制造自动驾驶汽车时,我们只是试图让它们尽可能符合我们的道德规范。在这个时候,我们无法理解生活在这个世界上的所有道德规范,我们的行为会影响周围人的生活,目前,这些知识对这些机器来说是不合情理的。说一辆自动驾驶汽车有意识地杀死了一名老妇人而不是一名儿童是不符合逻辑的。

所以,大多数时候当我们在思考智能机器的时候,我们只是在一厢情愿地娱乐我们对未来的恐惧。

但是,这种对每一种可能的厄运的分析确实有一些用处——例如,我们知道在设计这些东西时应该多小心,以及我们应该小心哪些东西。

现在还不要担心这些事情-(也许几个世纪)

生存威胁

要做到这一点,智能机器种族应该有一个共同的目标,那就是夺取宇宙的权力,应该成功地获取巨大的资源,然后,我们应该在控制它们和与它们如此可怕地和谐相处方面失败,尽管我们一开始就有能力建造它们。

奴役人类

这就像一个催眠术的故事。在这一点上,机器种族不知何故需要人类来维持他们的生存,或者以奴役他们的创造者为乐。生存威胁比这种困境更有可能。我们已经建立了反对生存威胁的有力论据。

技术奇点

人类的智力是一个至今几千年都没有解决的问题。除此之外,当我们最终足够聪明,能够制造出能够让自己变得更好的智能机器时,我们至少应该希望,我们能够确保自己的存在不受影响,无论是在我们的生物体内还是在任何人造体内。

这是《 探知情报 》报道中的一篇专栏文章。参考基础文章- 计算机器中的智能——了解更多详情。这篇报道中即将发表的文章详细讨论了深度学习在生物学上是否合理,以及在深度学习和神经科学的交叉点上,生物学上的合理性是否重要。

成为数据科学家需要知道的事情

原文:https://towardsdatascience.com/things-you-need-to-know-about-becoming-a-data-scientist-2467a3f61457?source=collection_archive---------4-----------------------

读者您好!这篇文章(以及我所有的文章)的更新版本在我的网站上免费提供:Victoria . dev—感谢阅读!

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

我最近参加了一个由大会在新加坡主办的题为“所以你想成为一名数据科学家/分析师”的小组讨论。该小组介绍了职业生涯不同阶段的专业人士,并为有希望的观众提供了丰富的信息,包括如何找到数据科学家工作的技巧,以及揭穿该领域神话的故事。

小组成员

米斯拉布·费祖拉-汗 —数据科学副总裁、戈 _JEK
安东尼·塔 —数据科学家、亚洲科技
利奥·郭俊 —数据科学家、戈 _JEK
加百列·江 —数据科学家
亚当·德雷克 —首席数据官、阿塔佐

这里有一个讨论要点的纲要,为简洁起见进行了解释。

一天的生活是什么样的?

我们大多是“数据管理员”数据处理的很大一部分始于数据清理,并由数据清理组成。没有高质量的数据,你不会得到准确的结果。了解应该如何清理数据在很大程度上包括与数据分析没有直接关系的技能。为了充分理解你希望解决的问题,你需要与相关人员交谈。重要的是,每个人都了解项目的所有元素,以及这些元素的确切名称。以“销售额”为例,根据谈话对象的不同,计算方式可能会有所不同。

什么是数据“科学家”与数据“分析师”?

这很大程度上取决于你工作的公司。“Data [insert modifier]”只是历史上被称为“业务分析”的工作领域的一个新的区别在较小的公司中,与任何其他职位一样,一个人可能会在“数据科学家”的头衔下处理各种与数据相关的任务在一个拥有更多员工和更精细专业化分工的大公司中,你可能会有一个处理较少技术方面的“数据分析师”,和一个工作技术性很强并涉及定量学习或机器学习的“数据科学家”。

数据科学/分析领域足够新,以至于职称的标准定义还没有达成一致。考虑职位时,关注公司而不是头衔。

应该加入创业公司还是大公司?

没有错误的答案。了解自己的工作风格和偏好将有助于指导你的决定。

创业公司通常提供更多的自由和更少的微观管理。这也意味着你必须接受更少的指导,并且需要能够自己解决问题、学习和进步。

在一家大公司,你可能会经历更多的结构,并被期望遵循非常明确的既定流程。你的工作范围可能会比创业时更集中。总的来说,你会体验到更少的自由,但是对你的期望却更加确定。

最后,尤其是在你职业生涯的初期,不要太看重选择这个或那个。如果你喜欢这家公司,不管是大公司还是小公司,试一试。如果几个月后你对那里不满意,那就换一家试试。没有什么职业决策是永恒的。

同样值得注意的是,即使你第一次就找到了喜欢的公司,一两年后换公司对你最有利。你一生中获得的大部分加薪将发生在职业生涯的头十年。假设你被 A 公司聘为初级数据科学家,为期两年——两年后,你就不再是初级了。比方说,你现在可以在数据科学家的职位上获得 30%的加薪,但两年后 A 公司不太可能给你加薪 30%。在这一点上,是时候找到 B 公司,在你的简历上多写几年的经验,然后可能再次换公司。你不会在一家公司呆上几十年就挣大钱——你永远都是初级开发人员。

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

总体而言,对于数据科学候选人来说,最重要的技能是软技能。好奇心、韧性和良好的沟通技巧至关重要。坚持,尤其是在适应快速变化的行业时,是非常重要的。最有前途的候选人对这个领域有足够的热情去学习他们能学到的一切,甚至是他们工作范围之外的东西。像编码和算法这样的硬技能是可以教授的——是软技能让优秀的候选人脱颖而出。

黑客技能也至关重要。这并不一定意味着你可以写代码。掌握整体概念、了解算法、有足够的好奇心不断学习的人会比只会写代码的人走得更远。在熟悉基本导航点的基础上建立黑客技能需要创造力。有能力提出以新的方式使用可用工具的解决方案——这就是黑客技能。

设计思维是另一个重要的资产。能够理解系统如何在技术和业务层面上集成是非常有价值的。如果你能看到全局,你更有可能找到不同的方法来完成总体目标。

你可能认为在简历上看到流行语会让你作为候选人看起来更有吸引力——更多时候,这是一个危险信号。把“高级机器学习”放在简历上,然后证明自己不懂基本算法,看起来不太好。最能说明你的是你的项目和你申请的工作之外的兴趣。这个行业的热门话题变化很快——你最好对基本原理有一个扎实的掌握,并有广泛的经验,而不是随便说出什么趋势。

人类在数据科学领域有前途吗?机器什么时候会取代我们?

这不是数据科学独有的问题,许多历史例子已经存在。金融投资是一个很好的例子——过去你可以让一个人进行计算和预测,现在计算机可以自动完成很多工作,每天对风险和可能的回报做出决策。

就像在其他已经接受自动化的行业一样,人类不会被取代的地方是人的因素。你仍然需要人来处理沟通、创新、好奇、解释和理解问题……所有这些都是企业中人的基本方面。

最终,机器和更多的自动化将使人类的工作变得不那么痛苦。通过自动化世俗的东西,比如数据净化,人类的思想被解放出来去开发更有趣的东西。

数据驱动自动化的未来应用是什么?

法律是自动化的下一个很好的候选对象。使用数据评估风险的程序可以处理很多问题。

医学是另一个通过数据进步的成熟领域。放射科医生,你的日子屈指可数:图像检测来找你了。整个诊断学领域将会彻底改变。

数据科学最近一个特别有趣的应用是语言翻译。通过观察不同语言的句子结构和口语的相似性,我们能够根据相似的单词在语言结构中占据的“空间”对它们进行分类。

保险业——最初的数据科学行业——已经并将继续变得非常自动化。随着使用数据评估风险的能力增强,我们开始看到新的创新保险产品推出。电子商务公司现在可以为客户退回产品的风险购买保险——如果没有我们今天拥有的数据的可访问性,很难做到这一点。

我如何推动数据驱动的决策,并让我的老板同意我的观点?

这是一个有内涵的问题。归根结底,这取决于公司的数据文化和决策路径。我们经历过为管理层工作,他们说,“我们已经做出了决定,我们只需要数据来证明。”显然,这是一个艰难的工作岗位。

一般来说,问问你自己,“我让我的老板看起来很好吗?”你可能会听到这些,然后想,“为什么我要让我的老板得到所有的荣誉?”—但是谁在乎呢?让他们去邀功吧。如果你能做出好的工作,你就让你的团队看起来不错。如果你让你的团队看起来不错,你对你的团队和老板来说就是不可或缺的。不可或缺的人会被倾听。

你对初露头角的数据科学家有什么最好的建议?

不要太热衷于太快定义自己。如果你过于缩小你的关注范围,尤其是在你学习的时候,你可能会陷入成为“技术 A,第 3 版”专家的境地,而公司正在寻找第 4 版的专家。它发生了。

总体而言,对基本面的广泛理解对你更有价值。也许你开始写代码,并决定你不喜欢它,但发现你真的很擅长设计大局观的东西和领导团队,你最终成为了技术领导。这甚至会因你工作的公司而异,所以要保持灵活性。

你最好的选择是追随你所热爱的,并尝试理解广泛的整体概念。花大部分精力学习永恒的东西,比如像 TensorFlow 这样热门话题下的基础技术。用对当地情况、不同公司和产品的广泛了解来武装自己。

如果你专门专注于学习代码,学好一门语言就更容易学习其他语言。确保你了解基本知识。

TL;it 博士:

**亚当:**多说不要放弃。
安东尼:【为人】勇敢,而且事必躬亲。
**加布里埃尔:**要有创意。
**郭俊:**值得付出痛苦。
**米斯拉布:**自我评估,保持反馈循环。

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

General Assembly 是众多对数据科学职业感兴趣的学校和资源之一。如果你想了解更多,我强烈推荐这篇文章。祝你好运!

原载于vickylai . io

关于数据科学作为平台的思考

原文:https://towardsdatascience.com/thinking-about-data-science-as-a-platform-f9e98277dcc6?source=collection_archive---------3-----------------------

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

“数据的可用性”是一个成熟的改进和发展领域。毕竟,只有人们使用数据,数据才有价值。我的博士研究表明,在决策中使用数据是一个需要更多投资的领域。

进入 Data Science as a Platform ,或 DSaaP *(读作 dee-sap)——*专为每位业务经理量身定制的一站式洞察、关键绩效指标和知识商店。

DSaaP 提供了将出色的用户体验(UX)与按需提供的全面洞察相结合的机会。业务经理会像每天处理电子邮件一样登录该工具,并将 DSaaP 作为他们工作的一部分。

DSaaP 可能会是什么样子?它是如何工作的?

当我谈到 DSaaP 时,我想到了几件事。第一个是与业务用户系统(如 Active Directory)链接的登录屏幕。这是为了确保 DSaaP 可以由 IT 人员集中维护,而不是作为一个独立的工具。见下图 1。

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

Diagram 1: DSaaP login mock-up

登录到 DSaaP 系统后,用户会看到一些小部件。每个小部件都是一个仪表板,用户只能看到与其项目和小组计划相关的仪表板。

例如,负责数字渠道的营销总监可能有一个社交媒体仪表板、一个在线媒体支出仪表板和他们的营销团队 KPI 仪表板。见下图 2。

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

Diagram 2: DSaaP homepage mock-up showing different dashboard widgets

所有的小部件将是可互换的和动态的。它们将由用户和分析师共同控制。用户决定哪些数据是最重要的,因此决定了出现在主屏幕上的小部件。

分析师负责维护底层仪表板,并通过 DSaaP 系统主动向用户发送有关任何新见解、警报或重要信息的消息。

DSaaP 系统的底层架构展示了数据交换是如何工作的。见下图 3。

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

Diagram 3: DSaaP architecture example

DSaaP 系统本质上是从分析开始的(图 3 中的步骤 1)。数据科学家和分析师使用不同的工具来运行模型、执行分析项目和设置最终将被仪表板小部件需要的底层数据。

然后,这些数据被保存到业务环境中的表或数据源中(图 3 中的步骤 2)。

在那里,分析师创建数据可视化和仪表板,并显示给最终用户(图 3 中的步骤 3)。例如,这些可以是 web 应用程序中的定制版本,或者是 Tableau、Qlik、DOMO 或 PowerBI 等可视化工具中的定制版本。

可视化的位置和类型取决于仪表板主题。每个仪表板都用关键字分类或标记,DSaaP 将使用这些关键字来过滤显示给每个用户的小部件。

例如,数字渠道的高级营销总监 Mark Doe 可能会获得标有“社交媒体”、“数字广告表现”和“数字营销分析”的仪表板。

然后,分析师将仪表板发布到 DSaaP 系统(图 3 中的步骤 4 ),当用户登录门户时,这些仪表板将显示给用户。

最后,DSaaP 如何帮助决策?

DSaaP 为“数据可用性”提供了许多好处。下面列出了一些好处,但最终归结为三点:每个业务领导者的整体洞察力、引人入胜的用户体验和集中的工具。

DSaaP 的主要优势

  • 提供了一种工具来访问由专家策划的见解,从而限制了访问数据时的主观偏见
  • 在一个位置存储整体见解,使分析师能够将所有数据源和数据见解集中在一个位置,这样业务经理就可以花更少的时间来消化来自不同团队的见解
  • 通过出色的用户界面鼓励数据使用——UX 是 DSaaP 的核心,以用户为中心的智能 UX 意味着管理人员更有可能使用该工具来收集他们做出决策所需的信息
  • 提供真实的单一来源—在一个地方提供见解,消除重复工作并建立对数据的信心
  • 可与任何可视化工具配合使用——DSaaP 基于小部件,具有通过 API 收集的仪表盘,或基于每个部分的最佳数据可视化工具(如 Qlik、Tableau、Domo 或自定义可视化工具)嵌入到界面的各个部分
  • 有助于消除数据孤岛,构建集中工具自然有助于消除数据孤岛,分析师不得不考虑公共平台。这也意味着底层数据的位置不太重要,数据湖或关系数据库都可以输入到 DSaaP 中

DSaaP 思维已经在 Qlik、Tableau 和 DOMO 等工具中开始,但它们只是解决方案的一部分。这些工具很好地可视化了数据,但是在整个企业中扩展起来很麻烦,并且没有提供覆盖所有数据源的必要功能。DSaaP 需要更广泛,能够覆盖所有用例,从 Tableau、DOMO 或任何其他工具中引入可视化,以及由 R、Python 或 JavaScript 等程序构建的自定义可视化。

我们现在拥有了开发 DSaaP 所需的所有部件。机器学习、API、支持网络的应用和数据可视化都已经达到了 DSaaP 现在可以而且应该成为现实的地步。为决策制定开发 DSaaP 的好处是引人注目的,令人鼓舞的是,许多创新企业已经开始创建 DSaaP 的工作版本。

想写关于数据科学的博客吗?这里有一些提示和可能的好处。

原文:https://towardsdatascience.com/thinking-of-blogging-about-data-science-here-are-some-tips-and-possible-benefits-680ff0e51d67?source=collection_archive---------7-----------------------

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

有如此多的初级、中级和专业数据科学家通过为数据科学博客和/或他们的个人博客写作来与社区分享。一般来说,他们的文章可以是技术性的,也可以是非技术性的。技术文章通常用一些代码来解释一些技术概念。在这篇文章中,我将试图说服你开始写作,并给你一些如何开始的指导方针。

让我们从确定你为什么应该开始写作开始:

打造个人品牌

这对数据科学来说是正确的,对任何其他职业道路来说也是正确的。当你写作时,你就确立了自己作为数据科学专家的地位。网上的人会把你和你写的东西联系起来。当人们想到你的时候,他们会根据你写的东西来看你。作为一名数据科学家,这对于建立你的个人品牌是一件非常好的事情。写作是你向世界展示自己能力的一种方式,也是你一份无声的简历。有许多出版物,如《走向数据科学》和《心跳》,你都可以投稿。与你的个人媒体账户相比,与他们一起发表的优势在于,他们有编辑在你的文章上线前对其进行审核。他们也会给你反馈,帮助你提高写作技巧。他们做的另一件令人惊奇的事情是帮助你把你的内容推到网上。这确实对你在这个领域建立品牌大有帮助。

成为数据科学社区的一部分。

LinkedIn、脸书、Medium 等网站上有许多数据科学社区。通过写作,你也建立了一个追随者的关系,他们总是期待你的作品。当有人在 LinkedIn 上联系我并告诉我他们知道我是我们国家机器学习的贡献者之一时,我感到很惊讶。知道你的工作为外面的人提供了价值是如此的激励人心。通过为这些社区做贡献,你也把自己放在了一个从社区获得帮助变得容易的位置上。这是因为人们认为你是真正关心社区发展的人。一些出版物也付钱给你为他们写作,但是如果这将是你写作的唯一理由,我可以向你保证,你不会在游戏中持续足够长的时间。

指导他人

因为有了互联网,我们生活在一个地球村的世界上。因为他们的课程和博客,我很崇拜很多数据科学家。虽然他们可能不知道,但他们正在指导我和许多其他崇拜他们的人。同样,我的工作和你的工作可以指导其他数据科学爱好者,因为现在所有人都连接起来了。我认为最好的学习方法是向走在我们前面的人看齐,与我们处于同一水平的人一起工作,并指导那些仍在前进的人。你还在等什么?是时候为下一个数据科学爱好者点燃蜡烛了。

向前支付

你很有可能因为有人指导你、出版了一门课程或写了一篇博客而学到了你所知道的东西。同样,你的工作可以支持即将到来的数据科学家相信他们梦想的美丽。这也是保持社区发展的一种方式。

无数机会之门

当你写作的时候,你的作品会立刻被全世界的人看到。任何人在谷歌上搜索你或者查看你的个人资料都可以找到你的作品。我开始在我的个人媒体账户上写作,后来开始为《走向数据科学》写作。波士顿一个机器学习博客的社区经理看到了我的工作,并通过 LinkedIn 联系了我。他们想知道我是否有兴趣为他们的博客写付费文章。很多人想为付费博客写作,但他们没有作品集可以展示。当机会出现时,你的文章将成为你的简历。

既然已经说服你应该写作,让我们来看看你应该牢记的一些指导方针。

不是每个人都会读你的文章

把这些碎片拼在一起需要很多时间,但事实是,并不是每个看到你文章的人都会读它。记住这一点,让人们容易浏览你的文章。不要写独白。使用副标题,然后在它们后面加上解释。如果你的副标题吸引了读者的注意力,他们会继续往下读。写一篇没有副标题的长文章会让读者很难理解你的文章。

尽可能使用图像

我们是视觉生物。图像能吸引读者的注意力。用图像来解释某些概念。例如,如果你正在写一篇关于决策树的文章,一个决策树的图片会让读者很容易理解决策树的概念。

使用要点

不要在一个句子中倒数,而是用要点来做。在一个段落中记下要点会让你很难理解一篇文章。使用项目符号或数字使文章的结构看起来很好,容易理解。

你的代码是你文章中最不重要的东西

最重要的是让读者理解这些概念。当他们这样做时,他们可以使用任何可用的工具来实现它们。根据经验,你应该总是在编码前解释,然后再解释在你粘贴任何代码之前,确保你已经事先解释了代码段将要做什么。没有事先解释就复制粘贴代码会使你的文章难以阅读和理解。解释某个函数所采用的参数,以便读者有正确的理解。不要只解释表面的东西。花时间深入解释概念。不要只是复制粘贴谷歌上全球可用的内容。花点时间研究,这样你的文章才能为读者提供真正的价值。

小心时态

如果你在写一篇观点文章,你可以用“我”和“我的”这样的词。然而,如果你正在写一个教程,使用诸如“让我们”这样的词。例如,不要说我现在将加载数据集,你应该说让我们现在加载数据集。

一些数据集被过度使用

Iris 数据集等数据集已被多次使用。虽然使用这些数据集没有错,但读者总是希望看到新的东西。使用像 Keras 或 Scikit learn 这样的软件包附带的数据集也很好。然而,这些数据集已经很干净,剥夺了读者了解如何为数据科学准备数据集的机会。虽然并不总是可能做到这一点,但我可以向您保证,初学者总是在寻找展示完整数据科学生命周期的文章。

在发布之前获得人们的反馈

在发布前征求反馈有助于在发布前改进您的文章。它可能会帮助你添加一些你忽略的东西,或者删除一些不必要的东西。

校对你的工作。

这听起来显而易见,但却非常关键。阅读一篇有拼写和语法错误的文章是极其困难的。

不要停笔

你会惊讶地知道,有一些人正急切地等待你的下一个帖子,不要让他们失望。

结论

写作和其他技能一样,需要时间来掌握。你要做的就是开始。随着你不断写作,你的技能会提高。所以,如果人们不喜欢第一个帖子,不要放弃。我希望我已经说服你开始为这个了不起的数据科学家社区做贡献。

如果你喜欢这本书,你可能也会喜欢我写的关于数据科学家技术写作的书。

围绕太阳的第三天(或离深潜边缘一英尺)

原文:https://towardsdatascience.com/third-day-around-the-sun-or-one-foot-off-the-edge-of-the-deep-dive-c255a0c2421c?source=collection_archive---------13-----------------------

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

It’s the wall’s way of saying hello.

今天是我在位于中城/东亚特兰大/庞塞高地/亚特兰大的庞塞市市场或任何他们现在称之为该地区的地方的大会最先进的艺术园区参加数据科学沉浸式项目的第三天。地理很重要。这座城市正在发生许多技术和文化变革,而这个地方是变革的核心。

我已经开始陷入疯狂,希望我不会像《现代启示录》中的库尔茨上校那样结束,尽管我的父亲和朋友会说已经太晚了。确实如此。但今年早些时候变得非常明显的是,职业和个人成长需要大规模的自由转变,这不仅是为了繁荣,也是为了在我看来即将到来的社会经济流离失所的圣经风暴中生存。几年前我听到过一句有趣的话,虽然记不清是从哪里或从谁那里听到的,但那是:

很快,你将不得不决定你是被机器人控制还是由你来控制它们

那好吧。我不期望机器人来控制。但我确实预计,机器和自动化的数字结构将要做的工作,比我们人类个人所能做的要多得多。很少有人真正为这种未来的现实做好准备。如果我希望成功,我需要成为他们中的一员。

一点背景:我在各种营销管理岗位上工作了十几年。我自己注意到的是,由于技术、经济和职业人口统计的变化,不仅在营销领域蓬勃发展变得越来越困难,而且仅仅是生存(我在这里特别重复这个短语,因为营销往往引领媒体和传播变革)也变得越来越困难。尽管我热爱市场营销,并将永远热爱市场营销,但仅仅了解和应用执行市场营销战略和沟通的技术已经不足以保持对企业和其他组织的重要性。

让事情变得更具挑战性的是,学位课程不会让我去我想去的地方。我有工商管理硕士学位。在当前的商业文化氛围下,多一个硕士学位可能对我不利,而不是对我有利。我需要“穿针引线”

我在以前的全职雇主那里了解了大会。几名员工正在学习网页开发和用户体验课程。我也开始看到大会的在线广告,特别是在脸书和 LinkedIn 上。过了一年多一点(!)的研究和自我评估,以确定我是否真的需要采取行动,我决定,是的,这是必要的。参加一个受科技行业尊重的非传统数字教育校园比走传统的学位路线更有效。

我从基础开始:数据分析。我也很高兴那段时间我没有工作,因为尽管是业余课程,它却像浴缸里的海绵一样吸干了我的暑假。但这种努力和牺牲是值得的,因为它为我申请全日制数据科学沉浸式项目做了充分的准备。如果我没有选这门课,我是不可能被录取的。

所以我现在在这里。第三天上课。我的前期工作完成了一半(我在抓紧!我在抓紧时间!).从现在到 12 月 20 日,我还有很多工作要做。别担心,我会确保咖啡杯和水杯放在洗碗机里。我喜欢让事情简单、干净、整洁。

用深度卷积神经网络进行图像到食谱的翻译

原文:https://towardsdatascience.com/this-ai-is-hungry-b2a8655528be?source=collection_archive---------0-----------------------

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

https://github.com/Murgio/Food-Recipe-CNN

介绍

在这篇文章中,我们将看看如何训练一个深度卷积神经网络,它能够将图像分类为食物类别输出匹配的食谱。到目前为止,我们强调选择目标领域的困难有两个方面。首先,烹饪菜肴的单个成分的分类或对象识别的进展很少。问题是,实际上没有公共处理过的数据集可用于此。第二,到目前为止,烹饪菜肴表现出内在的高度类间相似性,这使得即使对于最复杂的系统来说,推断菜肴类别也是一个困难的问题。为了应对这些挑战,我们从欧洲最受欢迎的烹饪食谱平台 chefkoch.de 中收集了一个新的数据集,其中包含> 800,000 张食物图像和> 300,000 份食谱,并在数据集上实证比较了当代机器学习模型(卷积神经网络)和更传统方法(最近邻搜索)的有效性。

前言

其他任何领域对人类健康的影响都不亚于营养。每天,用户在社交网络上发布不计其数的食物图片;从第一个自制的蛋糕到顶级的米其林菜肴,如果人们成功地做了一道菜,他们很乐意与世界分享他们的喜悦。事实上,无论一个人与另一个人有多么不同,好的食物几乎都会受到每个人的高度赞赏。

单个烹饪原料的分类进展很少。问题是几乎没有公开编辑过的记录。这项工作处理的问题是自动识别拍摄的烹饪菜肴,并随后输出适当的食谱。所选问题的难度与之前的监督分类问题之间的区别在于,食物菜肴中有很大的重叠(又名高类间相似度),因为不同类别的菜肴可能仅在图像信息方面看起来非常相似(见图 1)。

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

Figure 1: Images of distant categories may look similar (be it by similar cooking methods (e.g. grill marks) or an overlap of characterizations, inter alia), but sure enough, don’t taste similar!

根据座右铭分而治之,教程被细分为个更小的部分:

根据目前的状态,超过 300,000 个食谱的最大德语数据集将被搜集和分析。我们假设使用机器学习可能会克服更传统的所谓查询方法的障碍:我们使用卷积神经网络(简称 CNN)将对象识别或烹饪法庭识别与在超过 80 万张图像的记录中搜索最近邻居(下一个邻居分类)相结合。这种组合可以帮助找到更有可能的食谱,并且将分类引导到更有成效的方向,因为 CNN 的前 k 个类别与具有排序相关性的下一个相邻类别相比较。诸如 Kendall Tau 的基于等级相关性的方法本质上测量两个项目在两个分级列表中处于相同顺序的概率。数学上,肯德尔τ计算如下

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

notation: Rithesh Agrawal

在哪里

  • N =总对数
  • C =一致对的数量
  • D =不一致对的数量

方法学

管道由以下步骤描述:

  1. 每个配方 RK 张图片组成。对于这些图像中的每一个,从预训练的卷积神经网络中提取特征向量 w ∈ W (其已经在 ILSVRC 2014 图像识别竞赛中使用 1000 个类别上的数百万个图像进行了预训练)。不严格地说,特征向量在最后一个完全连接的层中形成图像的内部表示,就在 1000 类别的 Softmax 层之前。
  2. 这些特征向量 W 然后通过 PCA(主成分分析)从一个N×4096矩阵减少到一个N×512矩阵。结果,选择与输入图像具有最小欧几里德距离的前 k 个图像。由于计算某种成对距离度量是计算密集型的,并且不能很好地扩展,我们将注意力转向变体 ANN(近似最近邻)。
  3. 此外,美国有线电视新闻网是用类别 CR 食谱的图片来训练的。 C 是使用一种流行的主题建模技术动态确定的,该技术被称为非负矩阵工厂化(NNMF)和配方名称的语义分析。结果,我们为配方中的每个图像获得了类别上的概率分布。
  4. 美国有线电视新闻网(CNN)的前 k 类(2。)与来自前 k 个光学相似图像(1。)与肯德尔τ相关。

图 2 概述了一般方法:

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

Figure 2: (a) Each image k ∈ K is transformed into the image embedding w and pairwise euclidean distances (L2 Norm) are calculated to the image query q. (b) The query image q is classified with the fine-tuned VGG-16 and the probability distribution is compared to the euclidean distances.

1│── 数据准备
│ └──清算数据
│ └──数据扩充

2)───数据分析和可视化,拆分数据(训练、有效、测试)

3│── 主题建模
│ └──潜在狄利克雷分配(LDA)
│ └──非负矩阵分解

4│── 特征提取
│ └── k 近邻
│ └── t-SNE 可视化

5│── 迁移学习:训练预先训练好的 CNN(卷积神经网络)
│ └── AlexNet、VGG、ResNet、GoogLeNet

6└── 用烧瓶展开

每个部分都包含 Jupyter 笔记本,您可以在 Github 页面上查看。

收集和准备数据

为了能够训练模型,人们需要足够数量的数据(所谓的数据扩充和预训练模型的微调提供了一种补救措施)。只有通过这样的数据量,训练集的泛化能力才能不断提高到一定程度,测试集中的高精度才能实现。本教程的第一部分处理特征及其关系的数据采集、分析和可视化。

无耻之徒:我正在开发一个 python 代码编辑器,它简化了数据分析和数据绘图。更多信息请访问:莫比乌斯代码编辑器

谷歌研究总监彼得·诺维格在 2011 年的一次采访中透露

我们没有更好的算法。我们只是有更多的数据。

无一例外,数据集的质量和数量都不容忽视。这就是为什么欧洲最大的烹饪平台会被刮:每个食谱,最后是 316’756 个食谱(截至 2017 年 12 月),总共下载了 879’620 张图片。重要的是,下载时不要进行得太快,并保护有太多查询的服务器,因为否则禁止自己的 IP 地址会使数据收集更加困难。

更多的数据导致更多的维度,但更多的维度并不一定导致更好的模型及其表示。干扰学习的数据集中的偏离模式可能会被更多维度无意地放大,数据记录的概括和学习对于神经网络来说是不利的,信噪比降低。

所有 30 万份食谱按日期排序:http://www.chefkoch.de/rs/s30o3/Rezepte.html

做网站报废的时候,尊重 robots.txt 文件很重要。一些管理员不希望机器人访问特定的目录。https://www.chefkoch.de/robots.txt提供:

User-agent: * # directed to all spiders, not just scooters
Disallow: / cgi-bin
Disallow: / stats
Disallow: / pictures / photo albums /
Disallow: / forumuploads /
Disallow: / pictures / user /
Disallow: / user /
Disallow: / avatar /
Disallow: / cms /
Disallow: / products /
Disallow: / how2videos /

列出了我们不感兴趣的目录,因此您可以放心地继续。尽管如此,我们还是建议采取一些措施,比如随机标题和在不同请求之间留出足够长的停顿时间,以避免网站被封禁。

*# Chefkoch.de Website*
CHEFKOCH_URL  = 'http://www.chefkoch.de'
START_URL     = 'http://www.chefkoch.de/rs/s'
CATEGORY      = '/Rezepte.html'category_url = START_URL + '0o3' + CATEGORY

**def** _get_html(url):
    page = ''
    **while** page == '':
        **try**:
            page = requests.get(url, headers=random_headers())
        **except**:
            print('Connection refused')
            time.sleep(10)
            **continue**
    **return** page.text

**def** _get_total_pages(html):
    soup = BeautifulSoup(html, 'lxml')
    total_pages = soup.find('div', class_='ck-pagination qa-pagination').find('a', class_='qa-pagination-pagelink-last').text
    **return** int(total_pages)

html_text_total_pages = _get_html(category_url)
total_pages = _get_total_pages(html_text_total_pages)
print('Total pages: ', total_pages)Total pages:  10560

下一个重要步骤是选择不利于不重要数据的特征。为神经网络准备原始数据在实践中很常见。在第一遍中,下载配方名称、配方的平均应用、评级数量、难度级别、准备时间和发布日期。在第二遍中,然后是配料列表、配方文本、所有图像和配方打印的次数。有了这些功能,可以很好地描述数据记录,并帮助获得对数据集的深刻理解,这对选择算法很重要。

诸如配方名称、等级、上传配方的日期等数据。存储在 csv 文件中。如果配方有图像,缩略图会放在 search_thumbnails 文件夹中。我们将利用多重处理来确保更短的下载时间。更多信息请访问 Python 的文档

**def** scrap_main(url):
    print('Current url: ', url)
    html = _get_html(url)
    _get_front_page(html)
    *#sleep(randint(1, 2))*start_time = time()
**with** Pool(15) **as** p:
    p.map(scrap_main, url_list)
print("--- **%s** seconds ---" % (time() - start_time))

请注意,给定的代码已被缩短。完整的代码请访问相应的 Jupyter 笔记本

接下来,我们需要刮成分列表,准备,标签和每个食谱的所有图像。

**def** write_recipe_details(data):
    dpath = DATAST_FOLDER + DFILE_NAME
    **with** open(dpath, 'a', newline='') **as** f:
        writer = csv.writer(f)
        **try**:
            writer.writerow((data['link'],
                             data['ingredients'],
                             data['zubereitung'],
                             data['tags'],
                             data['gedruckt:'],
                             data['n_pics']
                             *#data['reviews'],*
                             *#data['gespeichert:'],*
                             *#data['Freischaltung:'],*
                             *#data['author_registration_date'],*
                             *#data['author_reviews']*
                            ))
        **except**:
            writer.writerow('')

如果下载一切顺利,我们的数据如下所示:

  • 总共 879,620 张图片(35 GB)
  • 316,756 个配方
    ——其中 189,969 个包含一个或多个图片
    — —其中 107,052 个配方包含两个以上的图片
    ——126,787 个不包含图片

数据分析和可视化

统计数字

为了获得第一印象,我们通常绘制一个热图,以获得对哪些可能的特征感兴趣的初步见解。

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

Figure 3: The heatmap gives us insight which values correlate with other values.

相关度最高的有平均 _ 评分。图 2 显示了第一列第二行的配对图,很明显,评分数越高,配方的评分越好。同样有趣的是准备时间和收视率数量的对比。大多数评论都是基于准备时间短的食谱。ChefKoch 社区似乎更喜欢简单的食谱。另一个想法是比较每年新上传食谱的数量。

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

Figure 4: In the years 2008 to 2009, it has noticeably the most uploads per year. A quick search search on the internet shows that in 2008 the food price crisis had prevailed.

曲线对比(下图)显示,全球价格上涨和食谱供应之间存在虚假的相关性。我的假设是,对食谱的需求上升是因为一个人呆在家里为自己和家人做饭,以节省预算并尽可能使收支平衡。

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

Figure 5: On the left the index and on the right the number of uploaded recipes per year.

佐料

一共 316’755 份食谱分享 3’248’846 份配料。如果去掉所有出现不止一次的成分,就有63’588 种独特成分。对于成分的关联分析,使用了 APRIORI 算法。这提供了什么成分与其他成分组合出现的频率。

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

Table 1: On the left are the top 8 and on the right the top 9–16 ingredients with the highest incidence.

在所有的食谱中,盐占了 60%。在第三个位置,你可以看到第一个元组,两种成分的组合,即胡椒和盐,仅超过 40%,它们是迄今为止最常见的一对。最常见的三胞胎、四胞胎甚至五胞胎都可以在对应的 Jupyter 笔记本中找到。

更多图形详见 本笔记本

主题建模

该程序的目标是将所有配方名称分为 n 类。对于监督分类问题,我们必须为神经网络提供带标签的图像。有了这些标签,学习才成为可能。问题是 Chefkoch.de 没有对他们的图片进行分类。分割 316’755 配方名称的可能程序如下所示。

到目前为止,考虑下面的例子,其中给出了四个配方名称:

  • 蘑菇披萨
  • 青椒配豌豆和金枪鱼
  • 海鲜披萨
  • 豌豆辣椒粉

以上四个配方名称必须分为 n 类。一般来说,第一个和第三个食谱需要放在同一个类别中,可能叫做比萨饼。由于豌豆的原因,第二和第四食谱也可以被放入新的类别。但是,如何正确地对 300,000 多个食谱名称进行分类呢?

潜在狄利克雷分配

概率主题建模(LDA,[Blei 等人,2003])和向量空间模型(LSA,[Deerwester 等人,1990])通过将文档建模为潜在主题集上的有限混合物或通过奇异值分解(SVD)来近似单词的含义。自从 Blei 等人[2003]的开创性工作以来,已经提出了类似的方法[Jagarlamudi 等人,2012],通过在每个主题中提供种子词来指导模型学习期望的主题。也就是说,题目是提前知道的。

一般来说,在大多数 NLP 任务中,名称体必须被清理,即停用词被移除,词被减少到它们的根。干净的词汇作为输入。

de_stop = get_stop_words('german')
s_stemmer = SnowballStemmer('german')
tokenizer = RegexpTokenizer(r'\w+')
final_names = []

**for** recipe_name **in** twentyeigth_iter:
    raw = recipe_name.lower()
    tokens = tokenizer.tokenize(raw)
    stop_t = [recipe_name **for** recipe_name **in** tokens **if** **not** recipe_name **in** de_stop **and** **not** recipe_name **in** filter_words_]
    stem_t = [i **for** i **in** stop_t **if** len(i)>1]
    **if** len(stem_t)==0: final_names.append(['error'])
    **else**: final_names.append(stem_t)

print('20 Cleaned Recipe names example: **\n** >>>')
pprint(final_names[:20])20 Cleaned Recipe names example: 
 >>>
[['bratapfel', 'rotkohl'],
 ['frühstückswolke'],
 ['deichgrafensalat'],
 ['geschichteter', 'kohl'],
 ['rinderlendenragout'],
 ['blaukraut'],
 ['sauerbraten'],
 ['punschtorte'],
 ['oberländer'],
 ['mcmoes', 'pasta'],
 ['geschnetzeltes'],
 ['ahorn', 'bacon', 'butter'],
 ['endiviensalat'],
 ['rote', 'linsen', 'gemüse'],
 ['kotelett', 'gratin'],
 ['rotkohl'],
 ['remouladensauce'],
 ['nudeln'],
 ['kohlsuppe'],
 ['gemüse', 'hackfleischauflauf']]

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

Figure 6: 300 topics were set as condition. The model for Topic 89 provides good results: drinks are detected and summarized.

为了简单起见,不讨论精确的数学定义。因此,我们有一个概率列表,可以确定模型符合主题的程度。例如:’ 0.363 * ‘干贝’+ 0.165 * ‘麻辣’+ 0.124 * ‘夏日’+ 0.006 * “塔布莱”+ 0.004 * “燕麦饼干”。

在 Github Repo 的 04_01_topic_modeling.ipynb 中可以找到一个交互式图表来浏览 300 个主题中的每一个。

非负矩阵分解

第一步是计算 tf-idf(词频-逆文档频)。考虑到在整个文本语料库中的重要性,这仅仅代表了菜谱名称中的一个单词的重要性。最重要的四个词是:

1.【T4 沙拉(2935.18)】2。意大利面(2429.36)
3。托泰(2196.21)
4。蛋糕(1970.08)

NMF 算法将 tf-idf 作为输入,并且同时执行降维和聚类。这一努力为前 4 个主题提供了出色的结果,如下所示:

话题#0:
意面 carbonara alla olio aglio al sabo puttanesca di mare
话题#1:
沙拉什锦玉米瓜菊苣 bulgur 萝卜芹菜 q uinoa 不冷不热
话题#2:
面条中国亚洲米氏亚洲炒锅乌冬面罗勒黑光
话题#3: 【T28

因为我们不是疯子,所以我们从 0 开始索引。

使用 t-SNE 可以将结果可视化。重要的是,具有几个维度的记录被简化为 2D,这允许为每个配方名称找到一个坐标。

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

Figure 7: For further information visit the corresponding Jupyter Notebook.

特征提取

对于 CNN,首先对图像信息进行汇总,以减少参数的数量。我们假设 CNN 中的第一层识别图片中的粗略结构。越深入到最后一个 Softmax 层,学习到的特征就越精细。我们可以利用这一点,采用预先训练的 CNN,这些 CNN 已经用数百万张图片进行了训练,并删除最后几层,用我们自己的数据来训练它们。这为我们节省了数百万个参数,从而减少了计算时间。这里选择的 CNN 是 VGG-16,它在 2014 年的分类比赛中接受了 1000 个类别的训练。

如果去掉最后一层,我们就得到倒数第二层的特征提取器。这形成了 n×4096 矩阵,其中 n 是输入图片的数量。

features = []
**for** image_path **in** tqdm(images):
    img, x = get_image(image_path);
    feat = feat_extractor.predict(x)[0]
    features.append(feat)

我们让 VGG-16 计算我们所有图像的向量。这个向量可以说是图片的指纹 : 神经网络构建的内部表示。

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

Figure 8: (a) Left-side is plot the 4096 vector calculated from the cake on the right (b).

现在,我们所要做的就是将每个新的给定输入图像通过 VGG-16,获得指纹向量,并使用近似最近邻搜索计算最近邻。我将为此使用的库是法尔康。FALCONN 是一个带有最近邻搜索算法的库。FALCONN 中的算法基于 局部敏感哈希【LSH】,这是一类流行的高维空间最近邻搜索方法。FALCONN 的目标是为基于 LSH 的数据结构提供非常高效且经过充分测试的实现。

目前,FALCONN 支持两个 LSH 家族的余弦相似性:超平面 LSH 和十字多面体 LSH。这两个散列族都是用多探针 LSH 实现的,以便最大限度地减少内存使用。此外,FALCONN 针对密集和稀疏数据进行了优化。尽管 FALCONN 是为余弦相似性而设计的,但它通常可用于欧氏距离下的最近邻搜索或最大内积搜索。

为了测试 choosen ANN 方法,我们传递了左边的布朗尼图像(图 9),并如预期的那样收到了看起来相似的菜肴。

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

我们甚至可以创建一个图像网格来查看神经网络的解释。下图只是整个图像的一小部分。你可以看到有相似特征的烹饪菜肴靠得更近。整个网格可以在这里找到

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

Figure 10: Similar cooking dishes are closer to each other.

结论

我们引入了一个新的数据集,将烹饪图像和相应的食谱结合在一起。我们强调了选择的食物领域和预先存在的图像分类任务之间的差异,并通过实验研究了卷积神经网络和近似最近邻方法的有效性。

如何在没有预训练的情况下从头开始训练自己的神经网络,并使用 Flask 将我们的系统变成 web 应用程序(第五部分和第六部分),将在下一篇教程中讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值