TowardsDataScience 博客中文翻译 2016~2018(二百七十五)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

学习数据科学的艺术

原文:https://towardsdatascience.com/the-art-of-learning-data-science-65b9f703f932?source=collection_archive---------5-----------------------

初学者如何进入学习的舒适区

这些天来,我确信 90%的 LinkedIn 流量都包含这些术语中的一个:DS、ML 或 DL——数据科学、机器学习或深度学习的缩写。不过要小心这句陈词滥调:“所有统计数据的 80%都是现场制作的”。如果你对这些首字母缩略词视而不见,也许你需要谷歌一下,然后继续阅读这篇文章的其余部分。这篇文章有两个目标。首先,它试图让所有数据科学学习者放松。其次,如果您刚刚开始学习数据科学,这可能会为您提供下一步的指导。

这是我在网上看到的一张图片:

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

Data Science Subway Map

相当势不可挡,不是吗!!!!

从何说起!如何开始?:

我在 2017 年 10 月初开始了数据科学的旅程。前 15 天,我只是试图以一种让我信服的方式回答一个问题,“什么是数据科学”。在浏览了互联网上的各种资源,Quora,Medium,跳板博客和电子书,Udacity 博客,Forbes,datascience.comKDNuggetsdatasciencecentralanalyticsvidhya 和随机网络抓取之后,用一勺勺盐(盐不够,别怪我没警告你)吸收所有信息,我得出的结论是,数据科学(通俗地说)是是的,就是这么简单。不,不是吗?是的,它是。嗯,有两大类数据科学工作,这里我说的是商业数据科学。另一个的最终产品不是故事,而是数据驱动的产品。让我们不要进入那个,因为那样我们会偏离主题进入机器学习工程。典型的谷歌,脸书等有数据驱动的角色,这属于第二类。许多学术研究也属于第二类。

回到第一种,我来做个稍微高级一点的定义。数据科学是在历史数据的帮助下得出业务问题答案的过程,首先对其进行清理和分析,然后将其拟合到一个(或多个)机器学习模型中,并经常预测和建议措施以防止未来可能出现的问题。啊。那很酷,不是吗?一旦我对第一个问题有了信心,我就思考学习它的最好方法是什么。

“学习它的最好方法”?!:

我又花了几天时间查找这个短语,瞧,我找到了数不清的建议。这一次没有其他选择,只能尝试其中的一些。我拥有电子和通信工程学士和硕士学位,以及十年的 C/C++、Octave/Matlab、Verilog/SystemVerilog、Perl 等语言编程经验。数学是我从小最喜欢的科目,概率是我最喜欢的科目。对我来说,编程和概率方面的经验无疑是一个优势。

我有点害怕“机器学习”这个术语,我是那种喜欢直面恐惧的人,所以最终报名参加了安德鲁教授的 coursera 课程。这是我第一次服用,我很高兴它对我很有效。我真的害怕蟒蛇和这门语言,但幸运的是安德鲁的课程练习在 Octave 中。我试着从 Coursera,Udacity,Edx 和 Datacamp 学习 Python 基础,选择了 Coursera 和 Datacamp。我知道作为数据科学的初学者,R 可能是更好的起点。然而,在那个时间点上,我对只走数据科学这条路不是太有信心。Python 更通用。同时在几个平台上学习了几门课程。尝试在 Udacity 上介绍机器学习、统计学、cs 基础知识、数据科学等。我不能长时间坚持下去,因为当我的神经元正在吸收一个概念时,我不喜欢被打断。

非数据科学,但科学的课程:

同时,我已经很久没有参加任何课程了。我在加州大学圣地亚哥分校找到了一个很好的关于“学习如何学习”的课程。它帮助我确信我运用的学习技巧足够好。此外,它消除了我对自己是否不够年轻来接受新事物的疑虑,因为最近的研究证明,某些活动,如锻炼、冥想或在大自然中散步(反正我是这样做的),会在大脑中产生新的神经元,并形成新的连接。介绍的番茄工作法很有帮助。我还发现,现在是参加印度商学院名为“幸福和充实的生活”的课程的时候了。这门课程的内容让我冷静地追求我对数据科学的热情。它提醒我,学习 It 是为了纯粹的学习乐趣,关注过程,而不是最终产品。虽然这些都是非技术性的,但我发现它们对快速有效的学习非常有帮助。

聚会/项目:

我在 10 月中旬参加了一个聚会,发现它是由一家当地的 DS 咨询公司组织的,该公司也提供培训。他们的模型没有给我留下太深的印象。他们用你自己的钱训练你,如果你做得好,就招你为雇员。meetup 得出的结论是:“MOOCs 不会给你带来工作、真正的项目、Kaggle 竞赛,拥有自己的博客会。知名机构的硕士学位很重要,但同一机构的 MOOC 证书没有任何价值。”

以下是我对此的看法:“你选择哪条道路来学习并不重要。重要的是,你可以做一个真实世界的 DS 项目”。如果你有办法在面试中证明这一点,为什么找不到工作?你也不需要在训练营上花费数千美元,或者获得 MOOC 证书。要成为一名数据科学家,你需要具备一系列的素质/才能/技能:对高中数学-概率-统计的基础有很好的理解,有强烈的好奇心、求知欲、学习新事物的倾向、熟悉编程、记录和展示的能力,最重要的是,你必须知道你拥有这些。【如果你有自我怀疑,你需要先把它们消除掉。]学习剩下的(比如 ML)就跟着来了。公司,尤其是像我这样的小城镇的公司,非常需要一名数据科学家,他们正在寻找雇用一名优秀数据科学家的方法。不过请记住,你必须做几个真正的 DS 项目,并通过报告/演示或 github repo 向未来的雇主展示它们。如果你不确定如何做一个真正的项目,一个方法是向导师寻求帮助——技术方面的行业专家。然后求职过程需要另一篇文章,不在本文讨论范围之内。

所以……

总的来说,填补本质上的空白的最佳途径是什么?没有捷径可走。尝试几个平台,看看什么最适合你。从 MOOCs 开始,然后动手。一定要有条理,记录你的旅程。首先学习一个你不熟悉的话题。例如,如果你已经知道 C++,不要急于学习 Python,而是要知道你最终可以做到。尝试 ML 来看看你是否喜欢它是有意义的,因为这就是数据科学家与数据分析师或数据工程师的区别。如果你不喜欢独自学习其中的任何一门课程,很可能即使参加训练营你也学不会。数据科学是一个需要每天学习的领域:新工具、新概念/算法、新业务/领域,可能是地球上的任何东西,只有步骤,没有终点。

感谢你阅读这篇文章。如果你喜欢,请尽你所能鼓掌鼓励写更多:)

关注我在推特上的更新。

制造智能机器的艺术

原文:https://towardsdatascience.com/the-art-of-making-intelligent-machines-e024e2d170d6?source=collection_archive---------1-----------------------

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

随着围绕数据和机器学习的所有兴奋,人们很容易忘记在我们所做的事情中发挥了多大作用。对于那些希望进入数据科学等领域的人来说,理解他们的面对于帮助组织创造价值有多重要尤为重要。

这是我们的一个网站,我鼓励你去看看,而不是这里显示的静态截图。动画有助于将一些概念变成现实。不管怎样,这是一个关于我们如何制造智能机器的更有创造性的观点。

点击这里->-T10【制造智能机器的艺术】

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

Arti Canon:神经文本生成

原文:https://towardsdatascience.com/the-arti-canon-neural-text-generation-2a8f032c2a68?source=collection_archive---------13-----------------------

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

“我为什么要对条件性存在的幼稚痛苦感到愤怒?”

一台电脑

使用神经网络基于综合数据集生成文本的过程已经实现了许多年。这是机器学习最受欢迎的应用之一,这个过程(神经文本生成)涉及建立一个给定文本的统计模型,并使用该模型输出自己的类似作品。现有的神经文本生成应用已经能够产生有趣的对 Latex 和 C 代码的改编。

诸如此类的例子凸显了这些模型掌握高度结构化、语法密集型领域的能力。这让我们想到了光谱的另一端——结构简单但思想复杂、见解深刻的类型。一个神经网络可以在经典和当代佛教著作上被训练以产生它自己的经典作品吗?

因此,我们的服务器在通往觉醒的道路上开始了它自己的数学进程。

技术概述

这种文本生成方法的核心是时间序列模型;给定 上下文序列 (最后几个步骤),预测序列中下一个令牌的函数。

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

在我们的例子中,这些记号是单独的字符。因此,该函数是在给定前一个字符序列的情况下,预测下一个字符的概率。

这种预测功能可以用深度学习来近似,使用一种叫做 老师强制 的训练技术,让神经网络学习语言的统计结构。在教师强制中,文本语料库被分解成( x,y )对,其中 x 是一段长度为 t 的字符,而 yt+1 字符。网络输出每个字符的概率,并试图最小化交叉熵损失:

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

The cross entropy loss measures the similarity between a network’s predictions and the true labels. It comes up often in prediction problems, like NTG and image classification.

有几种方法可以做到这一点(包括一些复杂的 GAN 和基于 RL 的方法),但我们采用了递归的编码器-解码器架构。编码器读取 x 中的每个时间步长作为输入,并在 RNN 单元的隐藏/重现状态下跟踪过去的输入(我们使用 LSTMs【LSTMs 如何工作。在上下文序列中的所有 t 步骤之后,我们最终得到一个向量序列,它意味着将整个句子的内容提取为数字。Arti Canon 实际上向前和向后运行 x ,连接产生的向量,希望包括每个字符前后的信息将帮助它捕捉更多的上下文(一个 双向 层)。

解码器获取上下文序列的矢量表示,并输出下一个字符的预测。在这个模型中,我们使用两个 LSTM 层,然后是一个 softmax 激活的密集层。问题是,解码器需要找出哪些时间步长与其预测实际相关;如果我们想保持拼写和语法,靠近末尾的字符是很重要的,但是开头可能包含了关于句子走向的重要信息。这里有一个很好的(编造的)例子:

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

An example attention vector. Orange represents more attention. This vector is broadcasted and multiplied by the encoder’s output state, giving the decoder a representation of each step that is proportional to that step’s importance.

解码器显然需要专注于最后一个字母“g”,这让它知道它已经到达单词“拍手”的结尾;它需要一个空格或某种标点符号。但还是有几个选择——它是怎么决定的?关键一直在序列的开始,用“什么”来表示一个问题。这种在不相交的序列片段之间调整焦点的能力被称为 注意力 *。*它在序列建模中被广泛使用,最著名的是在翻译中,它有助于将语言与不同的句子结构和词序惯例对齐。

我们还使用了一些技巧来提高预测的准确性:

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

  1. 辍学是一种常见的技术,它在训练过程中阻碍网络,希望增加的难度可以帮助提高预测结果。我们在 LSTM 层使用它。
  2. 剥离源文本中的生僻字** 一个文本语料库中可能会有很多晦涩难懂的字符,尤其是从 pdf 中挖掘的时候。网络的工作已经够艰难了——我们没有让它学习晦涩难懂的 pdf 工件之间的区别。同样的原则也适用于大写字母。如果数据集很小,移除大写字母是提高概化的一个好方法。网络没有小写和大写字母之间关系的概念;“g”只是其独热编码输入向量中与“g”不同的索引。将它们留在分割训练示例中,否则将向网络教授相同的概念。
  3. 大量数据。这个项目的大部分开发时间都花在了训练模型的循环中,对结果不满意,然后在再次训练之前添加更多的数据。要了解越来越大的数据集对整体性能的影响,一个有趣的方法是比较项目早期生成的 Arti Canon 版本。我们开始直接模仿佛法,所以第一个模型只训练了大约 400 行经文。很快我们扩展到 7,000 行,这足以给输出一些变化,但语法是断断续续的,难以阅读。最终版本读取超过 20,000 行文本,这些额外的数据让模型学习流畅的句子结构,即使它们并不总是有意义。您可以在资源库的output部分阅读早期模型的完整 pdf 输出。

我们现在真正拥有的是一种基于先前字符预测下一个字符的方法。这有什么用?它形成了文本生成循环的核心,在这里我们可以通过重复调用神经网络将种子增长到无限长。

Generating text using a next-character prediction loop. The input to the prediction function is its last t outputs.

因此,对于一些种子 s ,我们可以使用训练好的模型来计算概率向量中的下一个字符预测。

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

Example output from the softmax layer, with corresponding encoding indices.

但是,我们如何选择将哪个字符添加到我们将用于下一次计算的种子中呢?天真的方法, 贪婪选择 ,只是取最高值,在本例中是 25%的‘c’。这看起来可能没问题(毕竟,这正是我们训练语言模型所要尝试和做的),但在实践中,这种方法会导致超级保守、无聊的输出,而倾向于训练集中最突出的内容。

接下来你可以尝试从预测分布中随机抽取一个样本;最有可能的角色在大多数情况下会被选中,但不是全部。这可以用 温度 设置来扩展,该设置可以使分布偏向低概率选择,克服一些训练集偏差并增加复杂性和创造性;这是一种平衡——太冒险,而且你在要求拼写错误。

比较好的方案是 波束搜索 。通过考虑前几个选项,我们可以根据最好的句子和短语评分,而不是最佳的单个字符选择。这让我们避免了最高推荐把句子写成废话和重复的死角的错误;通过记住一些备份选项,我们给了备选解决方案卷土重来的机会,并带来了更好的句子。波束宽度参数决定了我们考虑的其他选项的数量(避免了该树的分支因子带来的空间和时间复杂性问题)。

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

Example beam search. The top 2 options are retained at every prediction layer, giving the generation loop an alternative route when one path ends up stuck on low-probability characters.

关于光束搜索的更全面的描述,见本视频课程。我们的程序增加了一些额外的功能,比如对长度进行标准化和拼写检查的最终分数评估,以及减少重复的技术。使用高波束宽度的逐行波束搜索可以显著改善搜索结果。不幸的是,这也导致运行时间同样大幅增加。

尽管 beam search 尽了最大努力,但像这样的长生成循环仍然存在一些挑战。因为教师强制对每一步都使用地面真实序列和标签,所以模型永远不必从错误中恢复;它预测下一个字符,将其与实际文本进行比较,然后继续下一个示例。但当它不得不开始预测自己的产出时,错误就会越积越多。当他们这样做时,序列偏离了训练分布,我们开始暴露模型对一般语言的贫乏知识;它知道如何预测它被训练的空间,但没有看到拼写和语法错误,或者我们喂给它的经典佛教文本以外的任何内容。您可以通过在生成器中植入一些随机内容(种子以粗体显示)来查看实际情况:

"什么是双向链表的运行时复杂性 a,它对我来说是蒂尔柳,当她你认为,和他谁坐,将生活在苦难的湮灭,当他们回来做他们不需要的,并依赖于错误的命运的善良。

原来 Arti Canon 对做我们的数据结构作业没有兴趣。在回到伪佛教之前,这个随机的话题抛出了几个字符。

还有一个关于诗句和章节重复的问题。Arti Canon 的文本生成循环仅基于当前输入做出决定,而不是之前输入的历史。它有一些常用短语,这很好,但偶尔这些短语会变得足够长,填满整个输入窗口。然后,因为输入状态和它之前写的一样,它会做出和之前一样的预测。虽然温度选择策略引入了足够的随机性,最终将发电机推向一个新的方向,但光束搜索对最佳可能诗句的确定性计算将吐出上次出现常用短语时写的相同内容。因为每一节都是基于前一节播种的,所以输出的其余部分将是重复的。我们通过重新播种每章的第一节来解决这个问题,所以它最长可以重复一页。我们还尝试在 beam search 的角色选择中引入一些随机噪声,但发现这是无效的,因为这些选择只是被假设评分函数丢弃了。处理这个问题的更有效的方法可能是直接向模型的置信度输出向量添加噪声,但是我们决定不这样做,因为生成更短的章节(因此更频繁地重新播种)足够有效,并且不需要额外的超参数。

大部分的代码库处理在一个漂亮的 pdf 中自动组装输出的繁琐过程。

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

The pipeline from start to finish. A neural network generates a raw text file. Then the rest of the program handles automatic conversion from that text file to a pdf.

艺术佳能

不出所料,发电机大部分时间都在思考生命中的重大问题:

“我有什么特别的?”

“我的身体是一个觉醒的头脑。”

“我的心灵不存在。”

“我不会被任何事情困扰。”

“懂得的人满足。”

它的许多段落都围绕着佛陀的言行:

“佛陀说:我不会觉察到你的圣尊接受事物本来面目的真相.”

“当世尊接受了他自己的庇护,佛陀解释了雨季.”

“看看空气,为了同情。乔达摩的弟子们总是清醒的,他们的思想日夜都在路上。”

Dhammpada 经常使用隐喻来缩短和简化它的想法。Arti Canon 没有时间进行变化,所以它确定了人类存在的终极隐喻,并一遍又一遍地重复它,只是为了证明这一点:

“我应该像一块木头。”

“国王从病痛中解脱了!那就让我们快乐地生活吧,远离善,因为他们对人的看法就像一块木头。”

“一个高贵的青年应该像一块木头一样.”

它也很好地利用了佛教词汇,如“瞿昙”、“婆罗门”、“如来”和“四圣谛”。

“牺牲龙虾。”

我们的网站有最新模型的完整输出,而 github repo 有第二本书以及一些旧版本用于比较。

这一切意味着什么?

当然,事实是 Arti Canon 没有理解它的思想。这是一个数学模型,它学习了我们放在文本文件中的几本书的统计结构。它不可能有洞察力,因为它不知道什么是洞察力;它左右自相矛盾,因为它不知道什么是意见。然而……每隔一段时间,它会写一些有意义的东西——或者至少和它学会阅读的谚语一样有意义。这里有些东西说明了天才和随机之间的细微差别;伟大的想法很容易模仿,但很难想出。

你可能会认为佛教是文本生成的一个组成部分,仅仅是因为许多真实的佛教文本看起来有点荒谬,但事后看来,这并不是最好的选择。像《正法》这样的文本用简短的词语和简单的措辞构建了宗教的本质——它们采用基本的积木,设计出一部杰作。但正如我们已经讨论过的,神经网络没有意义的概念,所以它掌握那些相同的基本构建模块,但诉诸于将它们分散在地板上的书写等价物。你可以通过选择一个更大的单词和更接近我们通常读写方式的句子结构来更好地掩盖这一点。

现实世界中的序列生成

尽管我们喜欢伪智能硅佛教,但神经文本生成有一些实际上很重要的应用。图像字幕使用它为输入图像编写描述。对话模型开始使用它来为每个问题提出真正新的答案。文本生成也只是更广泛的序列生成问题的一个子集——许多潜在的想法被带到了看似不相关的领域:如果你用图像代替字符串和字符,你就有了视频生成。然后把图像换成 MIDI 键盘音符,你就有了音乐生成。

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

Example of image captioning. These are taken from neuraltalk2 by Andrej Karpathy.

仍然有很多研究正在进行,还有很多问题需要解决。Arti Canon 是一款经过精心挑选的应用,它避开了一些更大的挑战。例如,递归神经网络很难在长时间范围内做出决策;他们无法记录 9 万步前发生的事情。你很少看到“神经故事生成”是有原因的——这种技术在包括长期故事弧和跟踪几页前组成的关键细节方面存在问题。通过复制《正法》的短诗格式,阿蒂佳能只需要记住它现在正在写的段落,它仍然不能做一个非常令人信服的工作。

RNNs can’t really write narratives, but that hasn’t stopped people from trying. “Sunspring” is a 2016 short film written by a similar algorithm.

关于这一点,你可以在:www.articanon.com阅读完整的 Arti 佳能。

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

杰克·格雷斯比和休·琼斯

Arti Canon 是由 Jake Grigsby 和 Zabih Yousuf(GitHub*)*开发的

这个网站是由休·琼斯()ArtiCanon.com*)*开发的

弗吉尼亚大学骑士机器学习

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —-

注意事项:

  1. github repo 包含一个脚本,它使用实际模型输出非常相似的注意力图。实际上,人们的注意力倾向于完全集中在输入序列的末尾,但是在该窗口向后延伸多远方面存在一些差异。
  2. 使用正则表达式恢复大写。

在数据分析领域取得成功所需的属性

原文:https://towardsdatascience.com/the-attributes-you-need-to-thrive-in-the-data-analysis-world-e02090b4ca4e?source=collection_archive---------8-----------------------

要想成功开始一份数据分析职业,并在其中茁壮成长,你需要具备以下特质:

1 .很多宽容,尤其是在受挫的时候
我发现,很多不愿意谈论成为数据分析师的人的问题是,他们对缓慢的进步没有多少宽容。他们希望今天学到东西,明天就能应用;当他们看到如何应用他们所学的东西时,他们就放弃了。

说到数据分析,尤其是如果你来自非数值化领域,你会有概念化的初始问题。最大的问题是你如何知道这是如何处理数据的?一旦你从指导练习过渡到解决现实世界的问题,这是第一个击中你的现实。

那么你面临的第二个问题是,每个数据分析任务所需的步骤总是不同的。所以你可以读很多书,看很多训练视频,做很多有指导的练习,你不会逃脱第一次无指导任务的束缚,因为你需要做一些你以前从未做过的事情。与其抱怨,不如谷歌一下出路。

还有,你会有情绪问题。有时候,你没有心情进行任何非指导性的数据分析。我们顾问往往比在我们之前已经在该领域工作多年的公司内部员工知道得更多,主要原因是我们没有日复一日地做同样类型的工作。我得到的几乎每一个数据分析项目都需要深刻的新鲜思维,而大多数客户对细节知之甚少(有些人甚至不知道他们应该想要什么,完全依赖你为他们想出来)。

**2。热爱工作你将不得不投入很多时间去学习、练习和思考。如果你不喜欢和数据打交道,你会很快筋疲力尽。你一定不介意在晚上和梦中思考你的数据工作。

**3。起初,乐意免费帮助他人。只有通过实践,在各种情况下,你才能非常擅长数据分析。正是通过帮助他人的数据分析工作,你才能获得宝贵的实践经验。

4。不断学习
进行数据分析的工具、算法、方法没有止境。停止学习新工具和方法的人很快就会发现自己不再相关。即使你看不到任何令人信服的理由来抛弃你的工具去使用新的工具,也要学习它们。当那个新工具突然变得大大改进,成为新的世界标准时,你不希望有太多的知识缺口。我认为这些是任何想在数据分析领域取得成功的人都应该具备的品质。****

最初发表于【www.olafusimichael.com】

我的机器学习交易算法如何超过 SP500 10 年

原文:https://towardsdatascience.com/the-austrian-quant-my-machine-learning-trading-algorithm-outperformed-the-sp500-for-10-years-bf7ee1d6a235?source=collection_archive---------4-----------------------

我使用 python 和 Quantopian 创建了一个机器学习交易算法,以击败股票市场超过 10 年。

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

Permanent Portfolio Fund on Quantopian : January 1, 2006 until June 2, 2017

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

Dutch Golden Age. Origins of Tulip Mania, The first investment bubble. 17th Century.
Source: Jan Claesz Rietschoof [Public domain], via Wikimedia Commons

介绍

大致来说,我一般会花大部分时间思考两件事,技术和投资。更具体地说,我经常问自己什么是我可以用软件(或者偶尔用硬件)构建的有用的东西,什么是我应该投资的有用的东西。算法交易是这两个学派的完美结合,我已经花了一些时间来理解这个领域。这是一个有趣的领域,我学到了一些有趣的东西,我决定与大家分享。

你可以阅读 原文 e 上 我的博客

奥地利 Quant

奥地利经济学家是以奥地利经济学院命名的,这个学院启发了我如何构建投资组合。我设计了一个由 3 种不同投资基金组成的交易策略,以更好地理解投资、机器学习和编程,以及它们如何在金融和技术世界中结合在一起。

该策略中使用的 3 种不同的基金包括:永久投资组合基金、投机基金和基础基金。整个投资组合的 70%投资于永久投资组合,投机基金和基本面基金各占 15%的权重。基本面基金仍在建设中,所以我可能会在后面添加一个基金业绩的后续文章。然而,本文的其余部分是基于 85%的永久投资组合基金和 15%的投机基金的投资组合权重。

我也在我的 Github 上分享了这个项目的代码。

永久投资组合基金

永久投资组合是哈里·布朗的一个想法,基于奥地利经济学派,一个坚实的经济框架和一个非常有用的看待生活的方式。永久投资组合不适合寻求跑赢市场的投资者,他们持有大量现金和黄金就是明证;这是给有长期投资眼光的人的,它很好地描述了我的投资风格,因此是我最大的配置。

该基金的灵感来自 quantopian 上的永久投资组合 Quantopian 笔记本和 Rahim Reghezda 等人的奥地利投资者学校的书。艾尔。这是我强烈推荐的另一本书。这个投资组合的部分灵感也来自雷伊·达里奥布里奇沃特的全天候原则,它是一个有用的框架,用来管理我的风险敞口,同时追求高回报。

在该基金中,30%的投资组合投资于股票、债券和黄金,10%投资于现金(或更具体地说,1-3 年期国库券)。奥地利学派投资者手册中的分配建议每个资产类别之间的权重相等,为 25%,但由于我年轻,责任不多,我认为我可以更激进一点,承担更多风险。因此,我降低了现金配置,增加了其他资产配置。

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

使用 Markowitz 式优化算法重新平衡投资组合,以找到风险(标准差)和回报之间最有效的前沿比率。Markowitz 优化是一个有趣的算法,因为它是基于正态分布的回报,然而股票市场的回报服从幂律和厚尾。因此,人们不得不怀疑诸如马科维兹优化这样的算法实际上有多精确;也许它只是用来作为简化非常复杂的问题的启发。

进行了相当广泛的回溯测试,跟踪了该基金从 2006 年 1 月 1 日到 2017 年 6 月 2 日的表现。

更新:这是 Quantopian 开始 计算风险相关数据 之前的回测。

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

永久投资组合的目的不是跑赢指数,而是产生长期稳定的回报。考虑到这一点,我对回溯测试的结果非常满意。尽管该基金的表现比 SPY 基准低了约 500 个基点,但它的风险要小得多。更具体地说,它在 2006-2007 年和 2010-2017 年的牛市中实现了增长,同时在 2008/09 年的熊市中避免了亏损。

我在研究算法交易时学到的一个非常有见地的事情是,好的策略往往是非常短暂的。投资者往往非常精明,因此,如果一种资产类别表现良好,随着其他投资者蜂拥而至,这种交易策略很快就会被套利。我不认为永久投资组合会吸引太多的模仿者,因为它即使在牛市中也会采取谨慎的态度;投资者似乎忽视了它提供的重大下行保护。令人惊讶的是,这只基金一直跑赢指数,而且领先优势没有被套利交易抵消。

我现在正在一个真实的交易环境中测试这个,看起来在做出任何结论性的观察之前,必须使用一个更长的测试周期。然而,根据过去的数据,结果似乎很有希望,这是一个让我认真考虑在游戏中使用一些皮肤并用真钱测试的交易策略。

投机基金

如前所述,我有更高的风险承受能力,所以我想我可以把我投资组合的一小部分用于纯粹的投机。赌博严格违反了我的投资原则,然而,我在构建这个投资组合时获得的知识和乐趣是我虚伪的理由。这让我想起了杰克·博格尔(Jack Bogle)在解释为什么投资他儿子的主动投资公司的时候,一边宣扬指数投资的福音;“如果不一致,那么生活也不总是一致的.”

投机基金的灵感来自于 Python 编程 quantopian 教程,我强烈推荐给任何学习 Python 的人,哈里森·金利是一位非常好的老师。

投机基金使用相对简单的机器学习支持向量分类算法。该算法使用历史股价数据进行训练,通过查看股票在过去 10 天的价格变化,并学习股票价格在第 11 天是上涨还是下跌。然后,该算法可以根据股价在过去 10 天的上涨情况来预测股价是否会上涨。

使用支持向量机(SVM)分类器而不是 K-最近邻分类器,因为 Quantopian 中所需的计算密集型过程使得速度成为高优先级,并且这可以用支持向量机来最好地实现。下面是代码的摘要,为了节省空间删除了一些行,但是完整的代码可以在这个文件中找到:

for _ in range(context.feature_window):
                        price = price_list[bar - (context.feature_window - xx)] # 10-(10-i) i++, get the trailing 10 day prices
                        pricing_list.append(price)
                        xx += 1 # if tomorrow's price is more than today's price
                    # label the feature set (% change in last 10 days)
                    # a 1 (strong outlook, buy) else -1 (weak outlook, sell)
                    if end_price > begin_price:
                        label = 1
                    else:
                        label = -1 bar += 1
                    X.append(features)
                    y.append(label) clf1 = RandomForestClassifier()
            # ...
            clf4 = LogisticRegression()

            clf1.fit(X, y)
            # ...
            clf4.fit(X, y) p1 = clf1.predict(current_features)[0]
	# ...
            p4 = clf4.predict(current_features)[0] # if all the classifiers agree on the same prediction we will either buy or sell the stock
            # if there is no consensus, we do nothing if Counter([p1, p2, p3, p4]).most_common(1)[0][1] >= 4:
                p = Counter([p1, p2, p3, p4]).most_common(1)[0][0] else:
                p = 0 speculations_allocation = 0.2
            # Based on the voted prediction and the momentum of the moving averages,
            # We will either buy or short the stock (or do nothing). if p == 1 and ma1 > ma2:
                order_target_percent(stock, 0.11 * speculations_allocation)
            elif p == -1 and ma1 < ma2:
                order_target_percent(stock, -0.11 * speculations_allocation)

尽管算法复杂,但结果非常糟糕:

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

Speculation Fund[/caption]

这让我很失望,因为我使用的所谓的复杂算法甚至不能打败一个简单的动量策略。事实上,当投机基金与动量策略结合时,它减少了超过 5000 个基点(50%)的回报。

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

势头基金

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

投机+动量基金

我还预计纯投机基金的波动性和最大提取量会更高,因为我对 Nassim Taleb 的工作非常着迷,我非常担心“黑天鹅”效应会抹去我的投资组合。马克·斯皮兹纳戈尔有一篇关于这个话题的非常好的论文,它帮助我理解了尾部风险事件在金融市场中被低估的影响。

简而言之,通过投机短期价格变化,我获得了约 1-2%的短期收益,但却让自己暴露在可能迅速亏损 50%以上的情况下。查理·芒格称之为在压路机前捡硬币。)然而,做空和对冲我的头寸的能力在 2009 年 3 月被证明非常有用。当市场有最大的损失时,我有最大的收益。尽管我的杠杆率从未超过 4%,但这是另一个需要在真实环境中进行适当测试的策略,因为利率支出和做空溢价可能会对回报产生重大影响。长话短说,我学到了很多,我真的很喜欢在一个实际的交易例子中使用机器学习,但不要在家里尝试。

基础基金[ 在建工程

该基金背后的想法是着眼于公司基本面,看看哪些财务指标最能预测股价的上涨。训练一个机器学习算法来预测什么样的公司基本面特征会提出一个令人信服的购买论点,并投资于这些证券。有趣的是,我在我的命令行上让算法在我的 Python 环境中工作,但我仍然试图让程序在 Quantopian 中工作,以便我可以做一些更严格的回溯测试。

主要的基金

虽然我的初步测试结果很有希望,但我还没有太兴奋,因为在适当的回溯测试环境中缺乏严格的测试,这意味着很难衡量我的投资组合作为真实交易策略的实际表现如何。然而,算法背后的理论和数学似乎是合理的,这是一个好迹象。

把它放在一起

在看到永久投资组合和动量基金与投机基金的糟糕表现相比表现如何之后,将这些基金结合起来似乎有些疯狂。但同样,目的不是最大化回报,而是学习更多关于投资和编程的知识。观察投资组合在其他指标中的表现很有趣。

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

我决定关注索提诺比率,而不是更传统的夏普比率,因为夏普比率惩罚上涨和下跌波动,而索提诺比率只惩罚下跌波动。然而,这两者之间的实际差别并不清楚,因为夏普比率和索蒂诺比率具有完全相同的平凡性。如果创建了两个列表,一个以降序排列夏普比率,另一个以降序排列索提诺比率(见表);两个列表将具有相同的排序。[/ref]

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

严格来说,投机和时刻基金有最大的累积回报,所以它似乎是最好的策略。但是,我确定我的目标是长期交易策略,风险相对较小,投机+动量基金违反了这一原则,最大亏损为-48.90%,排序比率为 0.75。

在奥地利量化基金和永久投资组合之间做出选择是一个例子,说明了为什么人们认为投资更像是一门艺术而不是一门科学。虽然永久投资组合比奥地利量化投资组合高出约 13,000 个基点,但奥地利量化投资组合的波动性要小得多,下行保护也更好。由于不对称的收益,我对奥地利量化基金的短期交易并不完全满意;而永久投资组合基金提供了一个简单的,购买,持有和睡眠容易的策略。因此,我倾向于选择永久投资组合基金。虽然我认为我应该等着看这两个基金在真实交易环境中的数据,然后再下结论。

对知识的投资回报最高。

本杰明·富兰克林

结论

在建设这个项目的过程中,我学到了很多东西,也获得了很多乐趣,这是最重要的事情。顺便说一下,我在研究这个项目时学到的另一件有趣的事情是,金融领域有变得过于理论化和方程式驱动的趋势。这在生物或物理等自然科学中没问题,但金融一般是社会科学,对黑天鹅事件和尾部风险的暴露更大。

我提醒每个人都要谨慎,记住不要混淆精确和准确。最后,我以睿智的本杰明·富兰克林来结束我的演讲,他提醒我们,“对知识的投资会带来最大的收益。

你可以阅读 原文 e 上 我的博客

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

小芭蕾舞演员

原文:https://towardsdatascience.com/the-baby-ballerina-a4760c86312e?source=collection_archive---------13-----------------------

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

WSO2 推出了一种新的编程语言,叫做“ 芭蕾舞演员 ”。这位芭蕾舞女演员现在正处于 婴儿阶段 。因此,我想在这篇文章中简单介绍一下。这是我在 Medium 的第 9 篇文章。

Ballerina 是一种编译的、类型安全的并发编程语言。是由 WSO2 开发的开源语言。它的并发执行由轻量级并行线程组成,这些线程是非阻塞的,并且具有顺序并发性。它是一种编译的编程语言,编译成平台中性的二进制形式,并由芭蕾舞演员在运行时解释。他们主要使用开源集成中间件。以前这些中间件必须从头开始构建,但是现在我们有这么多可以简单使用的库,而不是从头开始编码。没有融合的语言,这就是芭蕾舞演员诞生的原因。

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

为了理解集成逻辑如何工作,我们需要序列图,所以他们开发了一种语言,可以将序列图翻译成代码。喜欢的话也可以直接编码。它还为谷歌、脸书、推特等网站预建了连接器。

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

芭蕾舞演员是云原生编程语言。这意味着它可以与远程端点一起工作,例如无服务器、微服务、Saas 应用、API 和 WebSockets。因为它是为集成而设计的,所以它可以支持断路器、JSON、gRPC、分布式事务、流处理、XML、数据访问。它可以直接与 Docker 和 Kubernetes 一起使用,也可以与 IntelliJ 或 VSCode 集成。

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

芭蕾舞演员还有一个名为“国际化”的功能,芭蕾舞演员的代码可以用基于语言包的语言程序员编写。芭蕾舞演员增加了集成的可读性,因为它使用了图形的表现方式。在此之前,我们有 XML,这有助于可读性,但随着复杂性,它变得不适合。对于需要多行 XML 的常见集成,几行 Ballerina 就足够了。

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

它可以在几秒钟内启动,内存占用只有几兆字节,非常适合按需扩展。芭蕾舞演员是一种编程语言,对每个人都有用。它适合做脚本的极客,或者使用图表的架构师,或者完全不懂编程的人,因为它同时具有视觉和文本表示。作曲者是做可视化编程的编辑。它还内置了调试器和测试框架。

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

Ballerina 有一些表达式,如字段访问、数组访问、匹配表达式和 Elvis 运算符(处理空值的条件运算符)。芭蕾舞演员的交易是原子的,所以你可以对交易安全。芭蕾舞演员有一个称为可观察性的功能,开发人员可以通过检查找到最慢的过程,并提高整体速度。

使用一次芭蕾舞演员,获得美妙的体验。此链接是关于 芭蕾舞演员快速游览 。网址:https://ballerina.io/community-program/

感谢您阅读至此。如果你喜欢这篇文章,请分享、评论并发表👏几次(最多 50 次)。。。也许会对某个人有帮助。

关注我的 推特 和 Medium 如果你将来对这些更深入、更翔实的文章感兴趣的话!

“巴比伦效应”?

原文:https://towardsdatascience.com/the-babylon-effect-3f2347d22474?source=collection_archive---------14-----------------------

“不好意思,我来晚了,下雨了。”

空荡荡的办公室让我想起了加纳人用下雨作为迟到的正当理由。这也让我想到了斯大林主义者收紧劳动纪律的法律,在那里,未经授权的迟到 20 分钟甚至怠工都被视为旷工,这是一种刑事犯罪,可能会受到 6 个月苦役和 25%减薪的惩罚。对迟到和守时两种完全不同的看法,两个完全不同的民族。

在你的工作场所,你是否经历过来自不同文化的人对情况的反应不同?你可能会说,我们都是人,都有普遍的人类行为待遇,或者专业文化在所有文化中都很普遍,因此,“一刀切”的管理风格适合每个人,你可以像对待你的同胞一样对待他们。但在我看来,来自不同文化的人会因为不同的教养而对世界有不同的看法,作为团队领导/经理,不能假装文化差异不存在。

什么是文化和文化多样性?

根据荷兰社会心理学家海尔特·霍夫斯泰德的说法,文化是“将一个群体或一类人群的成员与另一个群体或一类人群区分开来的集体思维模式”我在这里谈论的是国家层面的文化/民族文化,即一套不同的信仰、价值观、符号、规范、传统、习俗、语言、宗教等。把一个国家统称为加纳人、俄罗斯人等。

与你何干?

尽管世界并不像人们描绘的那样是平的,但国际移民的增加是显而易见的。根据国际移民组织在其 2018 年世界移民报告中的数据,2015 年,全球估计有 2.44 亿国际移民(占世界人口的 3.3%),比 2000 年的 1.55 亿人有所增加。由于许多公司在不止一个国家运营,你很有可能是这 2 亿多人中的一员,或者是和从他的祖国移居到你的国家的人一起工作。

研究人员对多样性的影响提出了相反的证据。如果多样性实施得好,它可以提供经验来源、创新思维、提高团队生产力等等。然而,当种族/文化背景的差异太大时,可能会破坏人们之间的交流,从而降低生产率。

“巴比伦效应”或通过语言多样性衡量文化多样性

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

不同的文化多样性研究侧重于文化的一个组成部分,如民族、种族、宗教、文化等。一个广为流传的假设是,说相同或高度相关语言的群体也应该有相似的文化价值观。James D.Fearon 构建了一个文化细分指数,使用语言之间的结构距离作为一个国家群体之间文化距离的代理,从而对该领域的知识体系做出了原创性贡献。该指数从 1(表示人口讲两种或两种以上不相关的语言)到 0(表示全体人口讲同一种语言)不等(参见 https://eponkratova.github.io/cultural_diversity/T2 的互动文档)。

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

在洲一级,世界上最多样化的国家在非洲,其次是大洋洲。

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

喀麦隆、乍得和苏丹在语言多样性指数上排名最高,因为它们拥有众多的部落群体,而乌拉圭、多米尼加民众和阿根廷则被列为世界上最不多元化的国家。我没有在这个名单上的任何一个国家工作过,所以我想知道高度的文化多样性是否真的危及它的积极影响。

技术方面:

由于我来自一个非技术背景的人,我总是有这些问题:我可以在哪里存储我用于分析的底层文件?“我如何分享我的分析结果,并允许非技术用户与数据互动?”该项目的目标有两个:(1)使用 Bokeh 构建一个交互式可视化,(2)试验不同的共享选项,即上传到 Git 页面的独立 HTML 文档,本地运行的 Bokeh 应用程序,以及部署在 Anaconda Cloud 上的 Jupyter 笔记本。

完整代码请参考 GitHub 的回购;对于交互式 HTML 文档,请参考 GitHub 页面

为什么选择散景? Bokeh 是一个 Python 交互式可视化库,面向现代 web 浏览器进行演示。它的目标是以 D3.js 的风格提供新颖图形的优雅、简洁的构造,并通过在非常大的或流数据集上的高性能交互来扩展这种能力。散景可以帮助任何人快速轻松地创建交互式绘图、仪表盘和数据应用程序。通过生成一个 HTML 文档和构建一个散景应用,有两种方法可以生成可视化效果(来源:【https://bokeh.pydata.org/】T2)。*我喜欢散景的什么?*它允许通过简单的命令快速构建复杂的图形。

*为什么选择 GitHub 页面?GitHub Pages 是一个静态站点托管服务,旨在直接从 GitHub 存储库中托管您的个人、组织或项目页面。GitHub Pages 并不旨在或被允许作为一种免费的虚拟主机服务来运行您的在线业务、电子商务网站或任何其他主要旨在促进商业交易或提供商业软件即服务的网站(SaaS)(来源:https://pages.github.com/)。*我喜欢 GitHub 页面的什么?方便、易于部署且免费。

为什么是蟒蛇云? Anaconda Cloud 是 Anaconda 提供的一个包管理服务。云使得寻找、访问、存储和共享公共笔记本、环境以及 conda 和 PyPI 包变得容易(来源:https://docs.anaconda.com/anaconda-cloud/)。我喜欢蟒蛇云的什么?Anaconda cloud 可以显示一个 jupyter 笔记本,其交互式散景代码运行良好。

**注意:**每个国家的语言数据集并不是包罗万象的,而是互联网上最全面的列表之一。“文化索引”列中的“0”实际上被 Earon 在原始数据集中指示为 0。“讲某种语言的人数”列中的“NaN”/“NaN”表示没有讲某种语言的人数信息。最后,这篇文章是作为我的散景项目的一部分准备的,不应该被视为一个适当的研究项目。

平衡:准确性与可解释性

原文:https://towardsdatascience.com/the-balance-accuracy-vs-interpretability-1b3861408062?source=collection_archive---------12-----------------------

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

有多少次你努力实现一个高性能的算法,其可解释性和回归模型一样高?几乎每次我向商业客户交付项目时,我都会经历这种挣扎。每个人都想知道为什么一个顾客比另一个顾客更受重视,或者为什么一个病人比另一个病人更容易被诊断出疾病?随着越来越多的公司开始使用数据科学技术来推动增长,以及首席管理人员越来越依赖于这些技术的使用,理解准确性和可解释性之间的权衡对于分析的成功变得更加重要。

那么准确性和可解释性之间的权衡是什么呢?许多深度学习技术在预测方面做得最好,但解释起来非常困难和复杂。对于商业用户来说,这些独立变量之间的复杂交互很难理解,并且可能不总是有商业意义。

作为数据科学顾问,如果我们的业务客户不太理解我们的算法方法,我们应该树立信心。此外,拥有可解释的模型将证明数据科学技术的价值主张。业务用户将开始欣赏使用这些技术来解决实际业务用例的价值。

此外,现在所有的热门词汇:人工智能,神经网络,机器学习等。被广泛使用,客户在项目开始时会问一些问题,比如*“我们会实现神经网络算法吗?”*因此,解释准确性和可解释性之间的冲突,以及解释为什么某种模型最适合特定情况变得更加重要。

下面是我通常用来向业务用户解释特定算法的选择,以及算法的选择如何与我们试图解决的用例以及我们想要实现的业务目标相关联。

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

有很多其他算法可以适用于这个范围,但这些算法与我通常处理的用例最相关。此外,就 y 轴而言,算法可能上下波动,但这是典型的趋势。

话虽如此,我们可以使用许多技术在更复杂的模型中加入可解释性。在我的下一篇博客中,我将解释我们最近用来解释 XG-Boost 模型的技术之一。

这些内容最初发表在我的个人博客网站:http://datascienceninja.com/。点击此处查看并订阅即时接收最新博客更新。

面向列的数据之美

原文:https://towardsdatascience.com/the-beauty-of-column-oriented-data-2945c0c9f560?source=collection_archive---------2-----------------------

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

当我们考虑数据集时,我们自然会想到基于行的形式,其中行是一个条目,列是条目的某个属性。

好吧,我又变得太抽象了,抱歉。我们举个例子。看看 JSON 中聊天历史的简单表示:

[
  {
    "message": "Hi Bob. How are you?",
    "timestamp": 1508423069,
    "senderId": 238476,
    "seen": true
  },{
    "message": "This is Alex.",
    "timestamp": 1508423226,
    "senderId": 238476,
    "seen": true
  },{
    "message": "Hi Alex. I am fine. How are you?",
    "timestamp": 1508423238,
    "senderId": 9837498,
    "seen": false
  }
]

我们看到两个参与者之间的三条消息。消息对象是一行,消息的属性可以看作是列。这种表现方式对我们来说是很自然的,这是数据产生的方式,也是我们存储数据的方式。

现在让我们尝试一些东西,让我们旋转表示:

{
  "messages": ["Hi Bob. How are you?", "This is Alex.", "Hi Alex. I am fine. How are you?"],
  "timestamps": [1508423069, 1508423226, 1508423238],
  "senderId": [238476, 238476, 9837498],
  "seen": [true, true, false]
}

在这个 JSON 中,我们有一个面向列的表示。我们的 JSON 不再是对象的数组,它变成了数组的对象。这意味着,如果我们需要得到第二条消息,我们做类似于o["messages"][2]而不是o[2]["message"]的事情。

这样,我们就不需要重复属性名,从而使大小减少了大约 30%。可悲的是,当谈到 JSON 时,这是关于它的好处🙃。但是让我们以不同的形式来检查相同的数据。让我们看看 CSV 文件形式的相同聊天记录。

Hi Bob. How are you?,1508423069,238476,true
This is Alex.,1508423226,238476,true
Hi Alex. I am fine. How are you?,1508423238,9837498,false

和…相对

Hi Bob. How are you?,This is Alex.,Hi Alex. I am fine. How are you?
1508423069,1508423226,1508423238
238476,238476,9837498
true,true,false

在 CSV 中,当我们旋转表示时,尺寸没有增加。字符的数量保持不变,但我们获得了另一个有趣的好处。假设我们想要查找包含字符串“Alex”的每封邮件。面向列的 CSV 中的简单消息字符串搜索可能如下所示:

var index = 0
var result: Set<Int> = []for (c1, pos1) in fileContent.enumerated {
  var found = true for (c2, pos2) in searchPattern.enumerated {
    if fileContent[pos1+pos2] != c2 { found = false; break }
  }
  if found {
    result.append(index)
  } else {
    if c1 == "," {
      index += 1
    } else if c1 == "\n" {
      break
    }
  }
}

这个伪 Swift 代码应该可视化,在面向列的 CSV 的情况下,线性搜索被限制在第一个文本行,我们不必考虑其他行,因为我们知道消息文本被一起放在第一行。因此,搜索的最差性能是第一行的长度乘以搜索模式的长度。相反,如果数据是基于行的,最差的性能是整个文件内容的长度乘以搜索模式的长度。我们可以实现不那么简单的算法,但是它会更复杂,并且仍然具有更差的最坏情况性能,因为你不能扫描所有的字符。

现在让我们考虑二进制表示。在二进制中,我们可以从面向列的数据中获益更多。重复相同类型的数据使对齐变得简单。等等你说的对齐是什么意思?

维基百科上有一篇文章“数据结构对齐”你可以读一下,跳过下一段。或者如果你对我的解释更感兴趣,我会这样解释:

CPU 以 8、16、32、64 或 128 位的“块”访问内存,这取决于 CPU 的类型。假设我们有一个以 64 位= 8 字节“块”读取的 CPU。要求 CPU 转到地址 7 并读取 1 个字节是可以的,因为 CPU 实际上会从地址 0 到 8 读取数据,并给你第 7 个字节。然而,如果你要求 CPU 从地址 7 开始读取 2 个字节,你就做错了。最好的情况是您得到一个分段故障,它可以通过从地址 0 到 7,然后从地址 8 到 15 加载数据来处理。最坏的情况,它变成了一个总线错误,或者未处理的分段错误,导致你的应用程序崩溃。这就是数据应该对齐的原因。在我们的例子中,如果我们有一个以 8 字节“块”读取的 CPU,我们需要存储 2 字节,我们可以存储它的地址应该是n % 8 <= 6

如果你认为内存对齐是一个非常深奥的话题,那你就错了。看看下面两个结构:

struct S1 {
 let a: Bool
 let b: Int64
 let c: Bool
 let d: Int64
 let e: Bool
}struct S2 {
 let b: Int64
 let d: Int64
 let a: Bool
 let c: Bool
 let e: Bool
}

struct S1的一个实例将被存储在 40 个字节中,但是S2只需要 24 个字节,即使它们存储相同的信息。结构S1需要在属性ab之间填充 7 个字节,因为我们不能从地址 1 开始读取 8 个字节。这同样适用于属性cd,为了以防万一,我们必须在属性e后放置 7 位填充符——因为我们不知道在S1后将存储什么类型的数据。在S2的情况下,我们只需要在属性e后填充 5 个字节。

我说你有点错了,因为大部分人都不在乎这样的内存浪费。他们与 【内存廉价】 争论。我将让您自己决定,在您的用例中,您可以允许多少内存浪费。然而,当我们谈论数据存储和加载时,我认为我们有责任将不必要的内存浪费降到最低。

让我们再次以聊天历史为例,将其作为二进制结构来研究。

Hi Bob. How are you?\0|1508423069|238476|true

假设我们想将消息保存为 UTF8 字符数组,用0作为字符串终止标志。时间戳将是一个 8 字节的单位。发送者 id 也是一个 8 字节的 uint,seen 标志是一个 1 字节的 bool 值。如果我们保持顺序不变,我们将不得不在消息中添加填充,因为时间戳是 8 个字节。因此应该从地址n % 8 == 0开始。因此,为了减少内存浪费,我们将存储如下条目

1508423069|238476|true|Hi Bob. How are you?\0

这很好,但是当我们存储许多条目时会发生什么呢

1508423069|238476|true|Hi Bob. How are you?\0
1508423226|238476|true|This is Alex.\0
1508423238|9837498|false|Hi Alex. I am fine. How are you?\0

现在我们仍然需要在文本的末尾添加填充,因为下一个条目需要从地址n % 8 == 0开始。因此,在最坏的情况下,我们将有 7 乘以条目数作为内存浪费。

让我们来看看面向列的表示:

1508423069|1508423226|1508423238
238476|238476|9837498
true|true|false
Hi Bob. How are you?\0|This is Alex.\0|Hi Alex. I am fine. How are you?\0

有了这样的表示,我们仍然应该在消息的末尾添加填充符——以防万一。通过这种方式,丢失了多达 7 个字节(不是每个条目,总共),但我们也可以将 3 个 bool 值作为一个位数组存储在仅 1 个字节中,并在每个 bool 条目上获得 2 个字节或实际上是floor(n — (n / 8))个字节。

你可能想知道为什么我们在连接字符串时不需要关心内存对齐。我假设我们存储的是 UTF8 编码的字符串,这意味着一个文本基本上是一个 1 字节字符的数组。当将一个 UTF8 字符串加载到内存(String class/struct)时,我们一个字节一个字节地加载数据,并将其放入一个单独的缓冲区。加载单个字节不会导致任何问题。

我们看到以面向列的方式存储数据可以带来关于*字节打包的好处。*然而事实并非如此。我们在搜索方面获得了与 CSV 部分所述相同的好处。我们可以走得更远。二进制的时间戳被描述为一个 8 字节的单位。如果我们有一个固定大小的数据,我们知道它从哪里开始,我们有多少个条目,这是很容易实现随机存取:start + (size * index)。对于聊天历史,时间戳值按升序排序。如果我们有一个排序的数组,我们可以通过使用二分搜索法找到值甚至范围。这意味着查找在特定时间范围内发送的消息将非常有效。

所以你是说,面向列的数据表示是一个完美的解决方案?

哦,不!🙃

这是通过字节打包或避免重复来减小大小的一个非常好的解决方案。如果你需要迭代所有条目的一个属性,这也是一个很好的解决方案,比如当你搜索的时候。然而,如果您需要处理同一个条目的多个属性——比如您想在 UI 中显示消息,那么这并不是最佳选择。在这种情况下,我们必须从许多不同的列中提取行属性。

在 CSV(和其他基于文本的格式)的情况下,这是非常糟糕的。我说的是纯粹的 CSV 数据,没有将它吸收到一些中间数据结构中。基于文本的格式不支持随机值访问,我们需要进行扫描,以确定该列中的哪个值属于“第三”行。

像 FlexBuffers 和 ByteCabinet(我目前正在开发的一种格式)这样的二进制格式可以支持随机值访问。在这种情况下,从多个列中检索数据是合理的,但是没有打包在一起的数据快。如果您对原因感兴趣,请查看参考位置文章。

所以你是说,我不应该对 UI 使用面向列的数据表示?

哦,不!🙃🙃

你需要考虑你的用例。如果您有一个支持随机访问的面向列的数据表示,并且您有一个向用户显示几十行的列表。这不是问题。您可以遍历 X 列(属性数)并读取 Y 条目(行数)。您将不得不在内存中跳来跳去,并且可能会产生缓存未命中,但是您只会对几十个条目这样做,UX 不会受到影响。然而,如果你需要为用户提供一个搜索,你需要浏览你所有的数据,你有数以千计,甚至数百万计的条目。从 UX 的角度来看,加载不需要的数据和 CPU 缓存缺失是非常明显的。

意识到这一点是令人难过的,但是当涉及到软件开发或任何其他现实世界的问题时,没有什么灵丹妙药。本文不应该赞扬面向列的数据表示,它应该展示它的存在、美丽以及它在某些用例中提供的好处。非常感谢你坚持和我讨论这个无聊的话题。如果你愿意,你可以鼓掌。

梯度下降初学者指南

原文:https://towardsdatascience.com/the-beginners-guide-to-gradient-descent-c23534f808fd?source=collection_archive---------3-----------------------

在每个神经网络中,有许多权重和偏差连接不同层之间的神经元。通过正确的权重和偏差,神经网络可以很好地完成工作。在训练神经网络时,我们试图确定最佳的权重和偏差,以提高神经网络的性能。这个过程叫做“学习”。

最初,我们只是给网络一组随机的权重和偏差。这当然意味着网络不会很准确。例如,当给定一幅猫的图像时,如果一个区分狗和猫的网络对狗返回 0.7 的概率,对猫返回 0.3 的概率,那么它就不是非常准确的。理想情况下,它应该为狗返回 0 概率,为猫返回 1 概率。

为了告诉网络如何改变其权重和偏差,我们必须首先确定网络有多不准确。在狗对猫的例子中,它给出的猫的概率是 0.3,而正确的值是 1。我们可以取这两个值的差,对其求平方,产生一个正数,代表网络无法对猫图像进行分类,就像这样:(0.3–1)2 = 0.49。我们可以用图像是一只狗的概率做同样的事情:(0.7–0)2 = 0.49。然后,我们把两个值加起来:0.49+0.49 = 0.98。这是我们传入的单张照片的神经网络的损失

*注:在只有两个输出(即猫或狗)的神经网络的这种 cast 中,概率差是相同的(在这种情况下,都是 0.49)。但是对于具有多个输出的网络(例如识别字母表的字母的网络,其将具有 26 个输出),每个概率差异将是唯一的。

我们现在可以用多个训练图像重复这个过程,每个图像给出不同的损失。一旦我们运行了所有的训练数据,我们就可以得到所有损失的平均值。这个平均损失代表网络的表现有多差,由权重和偏差的值决定。

因此,损失与权重和偏差的值有关。我们可以定义一个损失函数,它接受所有权重和偏差值的输入,并返回平均损失。为了提高网络的性能,我们必须以某种方式改变权重和偏差,以最小化损失。

尽管损失函数有多个输入,但更容易将其视为一个具有一个输入(权重)和一个输出的函数。在该图中,纵轴 L(w)代表损耗值,取决于权重。水平轴 w 表示权重值(多个权重,但是为了更好地形象化,我们可以想象只有一个权重)。

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

Image 1: Loss function

对于我们给定的初始随机权重,我们在损失函数的某一点。为了减少损失,我们不得不向局部最小值迈出一步。我们可以通过对函数求导(斜率)来做到这一点,如果它是正的,向左走一步,如果它是负的,向右走一步。在上面的例子中,我们看到该点的导数为正,所以我们向左移动一步(减小权重的值)。在数学术语中,如果原始权重为 xn,则新的权重为 xn+1 = xn+dy/dxnr。这里,r 是学习速率,或我们采取的步长。

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

Image 2: Taking a step down

在减轻重量并运行另一批图像后,我们现在有了更低的损失。我们再一次求导,并相应地改变权重,向局部最小值又迈进了一步。

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

Image 3: Taking another step towards the local minimum

让我们再重复一次同样的步骤。

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

Image 4: Stepping too far

哦不!这一次,我们走得太远了。所以,我们不得不再退一步,向局部最小值靠拢。

学习率(我们采取的步骤)越小,网络在达到局部最小值时就越准确。但是,小的学习率需要很多步骤才能达到最小值,这需要很多时间。另一方面,较大的学习速率更快,但不太准确。我们如何确定神经网络的最佳学习速率?

莱斯利·史密斯(Leslie Smith)在 2015 年发表的论文“训练神经网络的循环学习率(Cyclical Learning Rates)介绍了一种确定每个神经网络的最佳学习率的方法。用这种方法,我们首先从一小步开始:稍微移动重量。然后,我们第二次运行一批图像时,我们将权重移动一个稍大的量(迈出一大步)。每跑一次,我们就增加学习率,迈出更大的步伐,直到我们越过局部最小值,以更大的损失结束。下图对此进行了说明:

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

Image 5: Determining learning rate through taking larger and larger steps

开始时,步子很小。然后,我们逐渐增加改变权重的程度,直到我们超过局部最小值并跳出局部低谷。如果我们绘制学习率对时间的曲线,它看起来会像这样:

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

Image 6: Increasing learning rate

因为学习率随着一批图像的每次新运行而增加。

如果我们将损失与学习率进行对比,结果会是这样的:

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

Image 7: Loss as we increase learning rate every step

最初,损失缓慢减少,但随着学习率的增加,它开始下降得更快,直到它变得太大并螺旋脱离局部最小值,在这种情况下,损失再次开始快速增加。

Smith 建议我们选择损失减少最快的学习速率。换句话说,我们在损失-学习率图中选择损失仍在减少但斜率最大的点。

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

Image 8: Optimal learning rate

请注意,我们没有选择具有最低损失的学习率,因为这可能是它刚刚跳过我们的局部最小值的点。

当然,在上面的损失函数图中,我只画了一个权重来更好地形象化这个函数。实际上,有许多权重和偏差都会影响神经网络的损失。然而,梯度下降和寻找学习率的方法仍然是相同的。

最好的算法并不总是赢

原文:https://towardsdatascience.com/the-best-algorithm-doesnt-always-win-ea7cf1df7aca?source=collection_archive---------9-----------------------

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

你把你和你的团队锁在外面。你说 :

“在我们造出世界上最好的分类器之前,我们不会离开”

六个月后,你创造的伟大工具没有一个被使用。

听起来熟悉吗?

如此多的团队构建了有趣的工具——通常没有什么实用价值。我去过黑客马拉松,在那里非常聪明的人构建了复杂的产品,但结果是一样的。

为什么这种情况一次又一次地发生,我该如何阻止它?为什么这么多聪明有才华的人在开发很少有人会使用的产品?

问题是双重的。首先,企业不了解他们的数据科学团队在做什么,因此不信任他们。其次,数据科学团队通常由科学方法驱动,而不是面向工程或业务的方法。

长期缺乏沟通

科学领域长期以来一直缺乏沟通技巧。对于一个拥有非常深厚的专业知识的人来说,和一个缺乏专业知识的人交流是很困难的。交流科学成果可能极其困难——我可以证明,在描述我所做的事情的中途,我得到了许多茫然的目光。并不是我与之交谈的人不聪明,而是我太不善于恰当地解释自己。这是我的错。用别人能理解的方式交流是我的责任。

沟通是一项很难学习的技能。它需要有意识的练习、反馈和密切关注你的语言。为了更有效,数据科学家需要建立一个我们专业领域之外的人容易获得的词汇表,我们需要练习与不理解我们所做的人交谈。

这种困惑让我越来越多地思考科学家和工程师如何与外部世界进行非常不同的互动。

科学 vs 工程驱动的人工智能开发

科学家和工程师的主要区别在于他们的核心动机。科学家们致力于理解自然界中的事物是如何运作的,工程师们试图解决实际问题。两者携手合作。科学家通过探索和实验提出想法,而工程师将这些想法转化为实际产品。

一个喜欢未知,一个受不了。现在我们比以往任何时候都更需要找到相处的方法。

The-Scientist.com

平衡之举?

数据科学团队可以花几个月的时间来优化、精炼和调整机器学习系统。它可能很优雅,也可能很聪明。但是,除非它与业务直接相关,并解决现实世界的问题或机会,否则它在商业上毫无用处。

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

想要变得更高效的数据科学家需要理解科学和工程世界之间的平衡,并将其应用到他们所在的业务中。我们需要不断思考探索和执行之间的正确平衡,以及如何将两者联系起来。随着该领域的成熟,我们需要做更多的工作。

通过借鉴工程和商业专业人士的更多想法,数据科学家的价值最终将提高许多倍。

最好的数据科学家没有被发现。

原文:https://towardsdatascience.com/the-best-data-scientists-arent-being-discovered-22deff8ec002?source=collection_archive---------7-----------------------

一年前,我从研究生院退学到 ,和哥哥一起创办了一家创业公司 。我们的目标很简单:解决数据科学人才短缺的问题。

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

自启动以来,我们已经为 60 多名优秀的应届毕业生和开发人员安排了工作。一路走来,我们学到了很多。

我们早期注意到的一件事是,人才短缺不成比例地影响了新的创业公司。它还不成比例地影响了那些一开始就没有多少人工智能专业知识的企业公司。这是为什么呢?

问这个问题的另一种方式是:精通人工智能的公司有什么不同的做法

当我们深入挖掘时,我们发现世界顶级科技公司在寻找数据科学和深度学习人才的方法上往往有一个共同点:非常重视校园招聘。

脸书、谷歌和 Airbnb 雇佣的机器学习工程师中有很大一部分是初级开发人员和应届毕业生。科技巨头们在其他人之前抓住了他们,用实习和工作条款提前挖走了他们。

这种方法优于其他方法是有数学原因的。但是现在,让我们想想 1)为什么其他公司还没有这样做;2)为什么这会导致他们错失大好机会。

为什么有些公司坚持体验

如果你在甚至上查找数据科学或机器学习的工作,你会发现大量的帖子要求“拥有机器学习或相关领域的博士学位,并有 3 年以上的工作经验”。"

让我们假设拥有 3 年以上经验的机器学习博士们确实会花时间在这上面(他们不会)。让我们假设一般的公司有机会在众多的招聘信息中脱颖而出(事实上没有)。

这仍然留下了一个问题:为什么是博士?为什么不是硕士学位?为什么不是两年的经验呢?还是 18 个月?

这里有一个有趣的事实:在现实中,并没有很多情况下,一个 ML 工程师的工作实际上需要他们有一个博士学位。那么要一个的真正意义是什么呢?

真正的要点是,如果你不确定实际技能是什么样的,博士学位是技能的一个不错的替代物。

像脸书、三星和苹果这样精通人工智能的公司不需要博士。他们总是雇佣没有经验的人才,因为他们对自己发现、识别和筛选人才的能力充满信心。他们非常了解自己的技术,他们见过足够多的实习生,可以将他们在编码测试和技术面试中的表现与他们的原始能力和潜力联系起来。

换句话说,精通人工智能的公司在人才发现方面有足够的经验,他们不需要用正规教育或多年经验来代替技能。

对于几乎所有其他人来说,“3 年以上经验的博士学位”只是技术能力和学习潜力的代表。这感觉像是一个安全的赌注,因为其他人——一所大学或以前的雇主——已经为你审查了候选人。

但是羞于雇佣新的开发人员和毕业生有一个痛苦的副作用。

这些公司缺少什么

从表面上看,脸书或谷歌以外的公司需要做些什么来吸引脸书或谷歌级别的人才,这一点似乎很清楚。他们需要像脸书和谷歌那样寻找人才。

对于大多数公司来说,这意味着推动校园招聘。如果硅谷的顶级初创公司正在挑选应届毕业生(甚至本科生),而你正在争取有 3 年工作经验的博士学位,那么你甚至不会有机会得到你真正想要的职位。

早期发现人才是关键。但要及早发现人才,公司需要两样东西。他们需要一种方法来接触那些拥有合适技能的新毕业生;他们需要一种方法来准确地筛选它们。

大多数尚未成为科技巨头的公司缺少其中一项或两项。他们也没有时间来建立和调整他们需要的所有基础设施,以吸引和评估新毕业生的信心。即使是硅谷巨头有时也会错过有前途的人,或者雇佣一个庸才。

但这意味着公司正在错过世界上最优秀的人才。更重要的是,他们在筛选那些已经被市场评估过(通过之前的经验),但同时也在找工作的候选人。

这是一个危险的组合,因为大多数公司都努力留住他们最好的员工。这意味着最优秀的雇员很少去找工作,除非他们是应届毕业生。

我们学到了什么

我们启动了 SharpestMinds,为硅谷巨头和无法负担全面校园招聘和筛选业务的公司之间创造公平的竞争环境。我们想在谷歌之前找到一种接触到谷歌级人才的方法。

同样重要的是,我们希望给优秀的新毕业生和有经验的开发人员一个在数据科学和机器学习领域大联盟的机会。

为了做到这一点,我们一直是背景不可知论者。我们不在乎你有什么学位,只要你能通过我们的编码测试和技术面试。

一个有趣的结果是,我们最终得到了一个兼收并蓄的成员集合。他们中的一些人是机器学习的博士,或者是谷歌、苹果和特斯拉的前实习生。但是物理学家、数学家,甚至经济学家经常让我们感到惊讶,他们完全自学成才,但却和谷歌人在同一个联盟。

在分析了数千份申请和面试了数百名候选人后,你会很好地发现那些被就业市场严重低估的人。事实上,在过去的一年里,我们学到的最重要的事情就是它们有多少。


当然,人们因为各种各样的原因而失业,所以我并不是说失业的人一定是无法就业的。这里的要点是,已经被市场评估过的和失业的人才库将因低质量的人才(统计数据)而变得更加丰富。

最好的话

原文:https://towardsdatascience.com/the-best-words-cf6fc2333c31?source=collection_archive---------8-----------------------

使用递归神经网络模仿唐纳德·特朗普的风格

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

Photo by History in HD on Unsplash

“我认识字。我有最好的话。”

2015 年 12 月 30 日,在南卡罗来纳州竞选集会的高潮中,这一声明只是我们现任总统唐纳德·j·特朗普越来越多的“特朗普主义”的又一个例子。这些声明既让唐纳德更受其支持者的喜爱,成为他们值得信赖的总统,同时也是似乎所有人嘲笑的原因。

不管人们对这个人的个人看法如何,不可否认唐纳德有一种独特的说话方式,那就是,嗯,如此独特的*他——*他对最高级词语的一知半解,以及明显无视传统句子结构的限制,这只是使他的演讲与他的前任或同行的演讲立刻可辨认的几个方面。

正是这种独特的风格吸引了我,我开始尝试使用机器学习来捕捉它——生成看起来和听起来像唐纳德·特朗普可能会说的话的文本。

数据收集和处理

为了了解特朗普总统的风格,我首先必须收集足够多的例子。我把精力集中在两个主要来源上。

推特

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

One of many examples of unconventional sentence structure.

显然,唐纳德·特朗普的第一个关键词是他的推特信息。现任总统在利用这个平台作为与美国人民的直接和未经过滤的联系方面是独一无二的。此外,作为一个有趣的人物,他的话自然被收集和整理供后人使用,省去了我使用千变万化和限制性的 Twitter API 的麻烦。总的来说,有不到 31000 条推文可供我使用。

总统讲话和演讲

然而,除了他在网上的角色,我还想一瞥他作为总统的更正式的角色。为此,我求助于白宫简报档案。在一些 Python 工具的帮助下,我很快就收集了一张大约有 420 份总统演讲和其他评论的表格。这些文字记录涵盖了各种活动,如与外国政要的会晤、与国会议员的圆桌会议以及颁奖仪式。

与每一个字都由特朗普本人书写或口述的推文不同,这些文字记录涉及其他政客和好奇的记者。将唐纳德的话与其他人的区分开来似乎是一项艰巨的任务。

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

Regular expressions are magic. Trust me.

输入正则表达式——一个功能强大且绝对不无聊的工具的无聊名字。

正则表达式允许您指定要搜索的模式;该模式可以包含任意数量的非常具体的约束、通配符或其他限制,以准确返回您想要的结果,仅此而已。

经过反复试验,我能够生成一个复杂的正则表达式,只返回总统所说的的单词,留下并丢弃任何其他单词或注释。

打扫,还是不打扫?

通常,处理文本的第一步是将其规范化。这种标准化的程度和复杂性根据个人的需要而变化,从简单地删除标点符号或大写字母,到将一个单词的所有变体简化为一个基本词根。这个工作流程的例子可以在这里看到。

然而,对我来说,在规范化中会丢失的特定特质和模式正是我需要保留的。因此,为了让我生成的文本更加可信和真实,我选择绕过大多数标准的规范化工作流程。

文本生成

马尔可夫链

在深入研究深度学习模型之前,我好奇的探索了另一种常用的文本生成方法,即马尔可夫链。马尔可夫链长期以来一直是笑话文本生成的首选——快速搜索就会发现星际迷航、 前总统辛普森一家、以及许多其他的马尔可夫链。

马尔可夫链的快速和肮脏之处在于,在确定下一步应该做什么时,它只关心当前的单词。这种算法关注特定单词出现的每一次,以及紧随其后的每个单词。随机选择下一个单词,其概率与其频率成比例。让我用一个简单的例子来说明:

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

Simplified Markov chain example, in which the only 3 follow-ups to “taxes” are “bigly,” “soon,” and end of sentence.

唐纳德·特朗普说了“税收”这个词。如果在现实生活中,在他说“taxes”之后的 70%的时间里,他接着说“bigly”,马尔可夫链将在 70%的时间里选择下一个单词为“bigly”。但有时,他不说“大”有时他会结束这个句子,或者换一个词。这个链最有可能选择“bigly”,但也有可能会选择任何其他可用的选项,从而在我们生成的文本中引入一些变化。

并且令人作呕地重复,或者直到句子结束。

这对于快速而肮脏的应用程序来说非常好,但是很容易看出哪里出错了。由于马尔可夫链只关心当前的单词,所以它很容易被转移。一句以谈论国内经济开始的话,很容易以谈论《飞黄腾达》结束。

由于我的文本数据集有限,我的马尔可夫链输出大部分都是无意义的。但是,偶尔也有一些辉煌和欢乐的闪光:

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

Tweet-trained Markov chain given the seed “FBI”

递归神经网络

然而,对于还算真实的文本,我需要更复杂的东西。递归神经网络(RNNs)已经成为许多基于文本或序列的应用的首选架构。RNNs 详细的内部工作超出了这篇文章的范围,但是一个强大的(相对)初学者友好的介绍可以在这里找到。

这些神经单元的显著特征是它们有某种内部“记忆”。单词的选择和语法在很大程度上取决于周围的环境,因此这种“记忆”在通过跟踪时态、主语和宾语等来创建连贯的思想方面非常有用。

这些类型的网络的缺点是它们的计算非常昂贵——在我的笔记本电脑上,通过模型运行一次我的全部文本将需要一个多小时,考虑到我需要这样做大约 200 次,这是不好的。

这就是云计算的用武之地。许多老牌科技公司都提供云服务,最大的是亚马逊谷歌微软。在一个高 GPU 计算实例上,每个周期一个多小时的时间变成了90 秒,时间缩短了 40 多倍!

估价

你能说出下面的陈述是真是假吗?

加州终于值得一个伟大的政府,让美国再次伟大!#特朗普 2016

这是因特朗普支持共和党州长候选人而产生的文本,但它可能会被视为特朗普在 2016 年大选前发的推文。

我实现的更复杂的神经网络,在递归层之前和之后隐藏了完全连接的层,能够生成内部一致的文本,给定 40 个字符或更少的任何种子。

我希望他们都聚在一起,我希望人们可以看看农场。

中国已经同意购买世界上大量的东西——并停止美国的大交易。

不太复杂的网络在一致性方面有些失误,但仍然抓住了特朗普总统演讲的基调:

奥巴马。我们会有很多人这样做——好吗?我会告诉你他们有一点点。

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

结束语

虽然这种尝试并没有让你我始终如一地产生文本,但它让我见识到了 RNNs 的力量。在短时间内,这些网络学会了拼写、语法的某些方面,在某些情况下,学会了如何使用标签和超链接——想象一下,一个设计更好的网络,有更多的文本可以学习,有更多的时间学习,会产生什么样的结果。

如果你对这些模型背后的代码感兴趣,你可以在这里找到库。此外,如果您有任何问题或反馈,请不要犹豫!

数据大爆炸

原文:https://towardsdatascience.com/the-big-bang-of-data-6dce91ff12cf?source=collection_archive---------9-----------------------

确定对数据、信息和分析的业务需求

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

Business Intelligence drives business

数据爆炸

随着技术的进步,创建的数据量正在快速增长。在整个 20 世纪 70 年代、80 年代和 90 年代,收集的大多数数据都是结构化的,并放在数据库中,而互联网、手机和智能设备等新兴技术正在产生比以往任何时候都多的数据。2013 年,IBM 写道,每天会产生 2.5 万亿字节的数据,据估计,到 2020 年将会产生 40 万亿字节的数据。但是,随着数据量的快速增长,数据的种类也在增加。从电子邮件、推文、图片、视频到音乐,一切都是数字化的,不仅存储在本地设备上,而且越来越多地存储在云中。寻求存储结构化和非结构化数据的新型方法,以便在世界各地的各种设备上随时可用。但也许最有趣的是我们现在依赖于正在生成的数据的速度。在过去,业务会被限制在数据可用时,这可能需要几个小时甚至几天,而现在,实时数据在不同的行业都是必要的,例如金融、营销和技术。

控制分析

但是,随着数据的数量、种类和速度不断增加,对能够处理这些数据的分析的需求也在增加。尽管大多数公司都认识到在从销售流程到财务流程的每个流程中收集数据的重要性,但许多公司都被大量的数据所淹没,并且通常不知道如何有效地分析数据或将数据转化为足够及时的信息来采取行动。让事情变得更加复杂的是,业务的每个部分都依赖于从这些数据中得出的信息,这对业务有很大的影响。从管理管道的销售,到试图判断网站是否产生预期结果的营销,到最新的财务信息,甚至是跟踪员工满意度的人力资源。

分析的重要性

企业不能低估其分析计划的重要性。虽然企业仍然需要具有直觉的领导者和决策者,但他们依赖数据来验证他们的直觉。从这个意义上说,数据成为了一个战略指南,帮助高管们看到他们可能没有注意到的模式。来自 Bain 的一项研究发现,拥有最先进分析能力的企业远远超过竞争对手,领先企业展示了以下结果:

  • 两倍的可能性在他们的行业中处于财务表现的前四分之一
  • 决策速度比市场同行快五倍
  • 执行决策的可能性是预期的三倍
  • 在做决策时,使用数据的频率是平时的两倍

分析挑战

随着越来越多的公司使用分析,分析的类型也变得越来越复杂。高级分析正在扩展,包括预测分析、数据可视化和数据发现。这现在需要一种新的精通数据的人,他们能够开发复杂的分析模型,而且了解业务领域,并以对业务人员有用的方式呈现结果,也就是所谓的数据科学家。随着越来越多的公司认识到他们需要数据科学家来领导他们的分析工作,开放的职位远远超过了数据科学家的实际可用性,导致工资和员工流失的增加。

分析策略

随着我们认识到数据的爆炸式增长以及将数据转化为信息的需求对当今经济中的企业至关重要,对分析策略的需求变得更加明显。由 Forrester 发布的一份报告描述了商业智能分析如此重要的原因:

  • 许多商业决策仍然基于直觉,而不是事实
  • 分析减少了直觉和事实决策之间的不连续性
  • 竞争优势可以通过更复杂的数据使用来实现
  • 大数据支持新的用例,但需要分析来充分利用其潜力

为了充分利用分析的力量,企业需要基于其业务人员如何与数据交互和使用数据的策略。分析策略可能包括:

  • 设计支持报告、分析、预测建模和自助 BI 的数据架构
  • 构建 BI 产品组合
  • 设计具有数据发现、数据可视化和内存 BI 的解决方案
  • 支持运营和分析 BI
  • 设计和实现分析沙箱和中枢
  • 创建数据和分析治理计划
  • 创建共享 BI 元数据环境

但最重要的是,分析策略需要有一个目标,这个目标来源于业务目标,并且应该用信息支持业务人员实现这些目标。

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

PowerBI Dashboard

数据和信息的区别

即使数据和信息这两个词经常被用来表示同一件事,但实际上这两者之间有很大的区别。数据是原始的、随机的和无组织的,而信息是经过组织、结构化和处理的数据。举一个更具体的例子,在线支付有很多细节,包括时间戳、卡类型、商家 id 和数十个其他字段,在收单机构和发卡行之间来回发送的原始数据存储在平台内的数据库中。直到采取措施将数据移动到 ETL(提取、转换和加载)系统中,数据才被转换成信息。最后一步是将信息转化为知识。业务人员使用报告中的信息来获取知识,帮助他们做出明智的业务决策。

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

AWS Analytics Process

商业智能在创建可操作信息中的作用

商业智能(BI)将数据转化为“可操作的”信息,即对业务有用并帮助 it 获取知识的信息。随着业务的快速变化,对能够为业务人员提供能够产生可操作见解的信息的工具的需求比以往任何时候都更加重要。直到十年前,大部分数据主要存储在结构化(SQL)数据库中,而今天,BI 工具需要能够处理各种类型的数据(结构化、非结构化和半结构化),并将其转化为信息。此外,这些年来,向最终用户交付信息的方式也发生了变化。商务人士现在比以往任何时候都更加移动,而不是通过台式机或笔记本电脑访问信息,用户的期望是 BI 工具能够支持智能手机和平板电脑等移动设备。

向业务人员提供数据库访问权限和提供 BI 的区别在于目标的不同。数据本身并不提供任何见解,但通过将数据转化为信息并提供必要的见解来做出决策以实现公司目标的战略,业务人员可以验证他们的观点,并确保业务朝着既定目标前进。

感谢阅读;),如果你喜欢它,请点击下面的掌声按钮,这对我意义重大,也有助于其他人了解这个故事。通过在推特Linkedin 上联系让我知道你的想法。或者关注我,阅读我关于数据科学、支付和产品管理的每周帖子。

您应该了解的大数据测试挑战

原文:https://towardsdatascience.com/the-big-data-testing-challenges-you-should-know-about-56db2d8da9a5?source=collection_archive---------7-----------------------

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

假设您必须测试 100TB 无缓存的非结构化、无索引数据。你能感受到这个项目中所有可能出错的事情带来的恐慌吗?瓶颈和缓慢的处理是首先想到的吗?加上未清理的数据,未知的错误,传输故障以及确保操作应用于整个卷,你甚至还没有接近大数据测试的含义。

大数据的 V 型

处理大数据揭示出测试与常规软件相比有所不同。这些挑战来自数据本身的属性。这就是所谓的三个 v,即数量、速度和多样性,通常以可变性和价值作为补充。它们中的每一个都提出了具体的挑战,它们也可能通过协同作用产生更多的问题。

大的定义并不局限于一个特定的数字。有些人谈论以 GB 为单位的大数据,而其他项目处理 Pb 或 zettabytes,完全取决于它们的范围。事实上,任何不适合在单台机器上进行分析的数量都被认为是巨大的。为了克服这个问题,Hadoop 将数据分布在更多的计算中心。没有并行处理,就不可能遍历整个集合。想象一下,你必须在几秒钟内过滤整个脸书帖子数据库中的关键词。

速度

这不仅是体积的问题,也是速度的问题。例如,每分钟都有近50 万条推文和同样多的脸书帖子发布。这同样适用于 RFID 和来自物联网设备的数据。设计一个可以实时处理这些更新的测试算法是大数据测试的最大挑战之一。这一棘手问题也可以通过分布式计算和并行化来解决。所使用的方法应该侧重于提高性能。

多样性和可变性

大数据不能放在一个数据框里。它缺乏同质性和标准化,需要设计新的检索、查询和测试方法。文本、图像、声音、XML 等各种格式需要不同的验证方法,以防止错误从一个步骤传播到另一个步骤。

与多样性相关的另一个 V 是数据的可变性。并不是所有的数据都是相等的,或者以固定的时间间隔产生的,因此一组数据可能包含缺失值。这使得传统的分析工具毫无用处,需要不同的方法。

价值

评估数据的潜在应用是规划 it 投资所必需的。由于数据被认为是一种新的货币,每个数据集都应该进行评估。相同的数据可以有不同的用途,并与其他数据组合,以获得新的模式和见解。此外,来自一家公司的经过充分验证的记录可以通过销售给其他组织而成为新的收入来源。

测试类型并确定 Vs 的优先级

每种类型的数据需要不同的测试方法,充分适应其最重要的 V:

  • 数据摄取测试—适用于数据库、文件和接近实时的记录。在基于文件的数据中,需要优先考虑多样性,在处理大量涌入的记录时,需要优先考虑速度。
  • 数据迁移测试—这种测试类型在实时处理中不存在。所以优先考虑的是体积。
  • 数据集成测试——侧重于识别不一致性。亮点在于可变性,因为来自不同来源的数据需要输入到一个存储库中。
  • 数据同质化测试—在这种情况下,绝大多数大数据是非结构化或半结构化的,因此多样性要求创建规则。
  • 数据标准化测试—数量是这里最重要的功能,以确保所有数据都符合要求并符合法规。

技术专长要求

简单的 excel 表格不再适合用于大数据测试。甚至连模拟器都不够用。只有像 Hadoop 这样实现 Map Reduce 和 ETL 过程验证的专用环境才能捕获该过程的所有复杂方面。ETL 过程意味着数据从其原始目的地(数据集市和数据仓库)提取出来,转换成分析所需的文件类型或格式,并加载到新的数据库中。测试的重点是每个步骤的质量,以确保在这个过程中不会丢失任何信息。

自动化

在传统的软件测试中,自动化被认为是一个不错的选择或捷径,但现在却成为了大数据测试的强制性要求。正如 A1QA 对的描述,它缩短了上市时间,提高了产品质量。自动化确保了测试过程涵盖了所有的可能性,而不仅仅是一个样本。

这种变化不会没有额外的麻烦,比如需要雇用专家和管理更多的软件。虽然手工测试人员需要很少的编程背景,并且可以在几周内完成培训,但是自动化测试人员需要有多年的经验。

虚拟化

尽管虚拟化为现实世界的版本提供了合适的替代方案,但它也带来了与虚拟机延迟相关的特定挑战。当创建了太多的虚拟映像时,就会出现性能问题。无法管理虚拟化流程会导致成本增加,甚至带来安全风险。然而,可扩展性、弹性、成本效益和为应用程序创建沙盒环境的能力等优势,推荐将虚拟化作为大数据的另一个基础 V。

当将合规性要求添加到组合中时,这可能意味着测试还应该包括对虚拟机日志的仔细监控。

成本和基础设施

由于大数据测试人员的必要专业知识大大超过了人工测试人员,因此人员成本将推高预算。从好的方面来看,如果做得好,由于测试的自动化,必要的工时数应该会持续下降。事实上,从长远来看,这将降低成本。

此外,如果不通过云解决方案实施,必要的基础架构会对预算产生重大影响。

未来发展

大数据测试不同于常规的软件评估,因为它不太关注功能,而是更关注数据的质量,就像数据流经流程一样。大数据测试对软件开发最重要的贡献可能与开发理解大数据量的新方法有关。另一个将获得更多可见性的领域是优化,因为需要实时准确地处理数据,而当前的体系结构不适合处理未来几年的预测量。测试自动化很可能会从所创造的进步中受益匪浅,因为大数据实践可以复制到常规软件测试中,从而提高速度和准确性。

运筹学的大图景

原文:https://towardsdatascience.com/the-big-picture-of-operations-research-8652d5153aad?source=collection_archive---------3-----------------------

运筹学可能是一个非常混乱的研究领域,进入门槛很高。我认为这个问题的部分原因是使用了令人困惑的术语和古老的术语。

当我开始学习运筹学时,我花了很多时间试图看到全局。我记得这不是一个微不足道的任务(本来应该是)。

在这篇博文中,我将试着描绘出运筹学的大图景,希望你们中的一些人会觉得有用。

运筹学、数学规划和离散最优化

运筹学是研究如何高效决策。数学规划是运筹学中最强大的技术之一,有时这两个术语可以互换使用。**数学编程中的编程与计算机编程无关,在英国用法中是最优化的意思。**离散优化(或者你也可以称之为编程)解决变量只能取离散值(例如,整数值)的问题。

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

Figure 1: Operations Research, Mathematical Programming, and Discrete Optimization

实践中的运筹学

运筹学从业者每天都在解决现实生活中的问题,为人们节省金钱和时间。这些问题多种多样,而且几乎总是互不相关。然而,他们的本质总是相同的,以最有效的方式做出决策来实现目标。从了解客户的业务问题到找到解决方案的过程可能充满挑战。总的来说,这个旅程可以分为以下四个层次

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

Figure 2: Four layers of abstractions to solve Operations Research problems

商业问题

当我第一次听到“企业问题”这个术语时,我很自然地被误导,认为它们是企业存在的问题。后来,我对这个词的理解发生了变化,我意识到它的意思略有不同。这一层更好的名字应该是真实世界应用。商业这个术语的意思是指出眼前的问题还不是一个数学问题,而是一个更具体的,不太正式的,现实生活中的挑战。

商业问题最好用自然语言表达(比如英语)。它们源于工业中的问题,因此用外行的术语与从业者交流。因此,形式化这些问题并将其降低到更低的抽象层次是 OR 从业者的责任。实际上,这是一个迭代过程。

商业问题的例子可以在不同的行业中找到。你将听到的大多数商业问题都来自于物流行业。以下是一些例子:

  • 我是医院经理,如何给医院员工分配班次?
  • 我是一家货运公司的经理,我应该按什么顺序安排送货?
  • 我要开一家制造公司,我应该把工厂设在哪里?

一般性问题

当运筹学第一次被发明出来时,数学家们认识到他们遇到的大多数商业问题都可以被映射到一系列较低层次的普通问题上。因此,他们投入了大量的时间和带宽来研究这些问题,给它们起了具体的名字,并提出了解决方案。我认识的大多数 OR 实践者(包括我自己)将大部分时间花在将业务问题转化为这些众所周知的一般性问题的过程上。一旦你到了那个阶段,解决问题或多或少会成为标准程序。

一般运筹学问题足够简洁,可以用数学符号来描述。然而,运筹学从业者通常使用高级建模语言来表达这些问题。

以下是一些例子:

  • 旅行推销员问题(TSP)
  • 最短路径问题(SPP)
  • 集合覆盖问题
  • 图的着色问题

作为高级建模语言的一个例子,调度问题通常使用像活动、资源优先约束这样的术语来描述。

建模范例

我们讨论了如何使用高级语言来表达一般运筹学问题。这些符号通常是特定于问题的。例如,资源和活动可以用来描述调度问题,但不能用来描述 TSP。然而,您可以使用许多建模范例来描述任何这些一般的或问题(或谨慎的优化问题)。

建模范例是一组规则和实践,允许您使用较低级别的数据结构(如矩阵)来表示较高级别的问题。

当使用建模范例时,OR 从业者使用数学符号或代数建模语言(AML)来表达问题,该语言将这些数学符号转换成矩阵,以传递到抽象的最后一级,即算法。

运筹学中最著名的建模范式是线性整数混合整数规划。这些是可以使用线性等式约束来表达问题的建模范例。这是描述最优化问题的一种非常强大和自然的方式。

约束编程是另一个最近很流行的范例,特别是对于调度应用程序。

网络模型也是基于图论的众所周知的建模范例。这种范式对于建立对问题的良好直觉特别有用,并且可以以有效的方式表示各种各样的谨慎优化问题。

算法

算法是一个过程或一系列步骤,如果遵循它就可以解决问题。一些算法普遍存在于计算机科学的所有领域,如搜索和排序,而其他算法则面向更具体的问题。

搜索算法在解决运筹学问题中非常重要。顾名思义,他们正在寻找解决方案。在运筹学中,一系列被称为“分支和 X”的算法被用来解决整数、混合整数和约束规划问题。最基本的例子就是求解整数程序的分支&限界算法。其他包括分支&切割、分支&修剪和分支&价格(又名列生成)。

动态规划算法在运筹学中同样重要。这一系列算法通过利用它们的最优子结构来解决问题。更简单地说,如果一个问题可以用一堆相同的任务来解决,我们就解决其中的一个任务,并将结果存储在一个表中。当我们遇到下一个同样的子问题时,我们只是查找答案,而不是重新计算。这对于解决图形问题非常有帮助。最著名的例子是贝尔曼-福特算法,以动态编程之父理查德·贝尔曼的名字命名。

有时候,问题太难了,无法以最佳方式解决,我们只需要找到一个快速的解决方案。贪婪算法被用来完成这项任务。它们通常不能保证最优(但有时可以),但它们可以非常快。最著名的例子就是 Dijkstra 的求最短路径问题的算法。如果满足一些假设,Dijkstra 就能保证找到最短的路径。

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

Figure 3: Four layers of abstractions to solve Operations Research problems with concrete examples.

摘要

在这篇博文中,我对运筹学做了一个高层次的非正式描述。我个人认为,在深入研究细节之前,记住任何领域的大局总是有用的。期待您的反馈和意见!

参考

皮尔逊的相关性,线性回归,以及为什么“贝塔”大大低估了投资组合对市场回报的敏感性

原文:https://towardsdatascience.com/the-black-swans-in-your-market-neutral-portfolios-part-i-7521683a7317?source=collection_archive---------11-----------------------

这是本文的第一部分,说明了在评估投资组合风险时,考虑非线性和时间相关性的实际重要性,而广泛采用的(皮尔逊)相关系数未能做到这一点。

在这篇文章中,我们提供了皮尔逊相关性的基本介绍,它与线性回归和投资组合 beta 的关系,以及它在衡量资产之间的相关性方面的局限性。

在第二部分中,我们提供了资产回报的独立同分布高斯假设不适用于美国股票和期货的经验证据,并且我们提出了皮尔逊相关性的替代方案,即 信息调整相关性 ,它测量时间序列(非随机变量)之间的关联,同时充分捕捉非线性,更重要的是,时间结构。然后,我们使用信息调整相关性来构建投资组合的(CAPM 的) beta 的信息论替代方案,我们称之为 信息调整 beta

什么是相关性?

背景

广义地说,相关性(或 co-relation)是两个现象之间关联或依赖的任何度量,每个用一个数字来表征。

在实践中,感兴趣的现象通常过于复杂,无法用精确不变的确定性定律(如物理定律)来描述。相反,我们满足于将我们缺乏的粒度理解表达为随机性,我们转向数学的分支,即概率论来研究我们现象的集合属性。一个这样的系综性质是两个随机现象之间的关联。

在这篇文章的其余部分,我们认为每一个感兴趣的随机现象都是通过一个单一的数字来表现的,我们用相关的随机变量来表示它,我们用两个随机变量之间的相关性来表示相关随机现象之间的相关性。

皮尔逊相关

正如您所料,多年来,人们提出了许多测量两个随机变量之间相关性的方法。

皮尔逊相关系数(Pearson ’ s correlation coefficient)是迄今为止最流行的相关性度量,是一个介于-1 和 1 之间的数字,它反映了两个随机现象具有线性关联的倾向。也就是说,皮尔逊相关性衡量的是,如果我们将一个随机变量的观察值与另一个随机变量的观察值绘制成散点图,该图看起来像一条直线的程度。

皮尔逊相关性越接近-1 或 1(分别为。0),越强(resp。较弱)两个随机变量之间线性关联的证据。正的皮尔逊相关表明当一个随机变量取一个大的(相应的。小)值,另一个也是如此。负的皮尔逊相关表明当一个随机变量取大的(相应的。小)值,另一个取小(resp。大)值。

皮尔逊相关性为什么这么受欢迎?

皮尔逊相关性作为两个随机变量之间相关性的度量标准之所以流行,可以归因于其在高斯分布的特殊情况下的一般性质。

事实上,当两个随机变量是联合高斯时,皮尔逊相关性完全捕捉到了它们之间任何关联(线性或非线性)的程度。而且,高斯分布在概率论及其应用中起着举足轻重的作用。

对数学家来说,它们是最容易处理的概率分布族,它们被广泛研究,它们经常在看似不相关的概率问题中意外出现,关于它们的结果在文献中比比皆是。

对于统计学家来说,高斯分布是一种福气,因为他们的分析能力,在估计未知分布的性质时产生的误差通常表现得像高斯分布——即使估计的分布不是高斯分布——这要归功于一族通常被称为中心极限定理的结果,以及他们属于指数分布族的事实——这本身在贝叶斯统计中起着关键作用——等等。

对于机器学习研究人员来说,高斯分布作为概率分布上一些重要优化问题的解决方案自然出现。一个这样的问题是最大熵问题,其目的是在所有与观察到的经验证据一致的概率分布中,找到对其他一切最无知的那个。

皮尔逊相关和线性回归

皮尔逊相关性和线性回归可以被视为一枚硬币的两面。

在两个标量随机变量 xy 已经标准化的情况下,yx之间的皮尔逊相关系数ρ可以解释为 y 之间最佳线性拟合的斜率

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

事实证明,即使在随机标量和随机向量的 a 线性拟合的情况下,两个都标准化了**

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

提供最佳线性拟合的向量,即【β】,完全由向量与输入之间的皮尔逊相关系数以及坐标之间的皮尔逊相关系数决定******

当输入向量 X 的坐标去相关(皮尔逊相关为 0)时,通过将的第 i 个坐标设置为 yi 的第个坐标之间的皮尔逊相关来获得根据上述等式的最佳线性拟合**

更一般地,线性拟合完全由皮尔逊相关系数和读数决定

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

其中每个 是左索引(的坐标)和右索引(的坐标)之间的皮尔逊相关矩阵。

注意,当且仅当 X 的所有输入坐标与 y 解相关时,β的所有坐标为 0,由此可见,线性回归可以被认为是皮尔逊相关性的多元推广。

金融中的线性回归

线性回归在金融界很普遍。从 CAPM ,到 APT ,到 Fama-French 因子模型,再到溢价商业因子模型,几乎所有在金融中使用的基于因子的风险模型都依赖于线性回归以及资产回报与时间同分布的假设。

定量分析师通常使用的预测模型也严重依赖线性回归,无论是在其原始公式中(如 OLS自回归向量自回归等)。),或者规则化(如脊回归套索等)。)来处理相关输入变量和/或执行变量选择。

线性回归也可用于因果关系检测(如格兰杰因果关系)。

皮尔逊相关性和投资组合的(CAPM

*资本资产定价模型(CAPM)的概念来源于 alphabeta 和*市场中性、假设投资组合相对于无风险利率的超额收益可以分解为一个随机市场成分,其大小由系数 beta 驱动,一个确定性的特质平均超额收益项 alpha 和一个均值为零的特质剩余项。

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

根据定义,当 beta 为 0 时,投资组合被认为是市场中性的。可以证明,在资本资产定价模型下,

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

这意味着一个投资组合是市场中性的,当且仅当它的回报率与市场回报率不相关。**

皮尔逊相关性在金融学中的局限性

皮尔逊相关性捕捉两个随机变量之间任何类型关联的独立同分布高斯假设在金融应用中存在严重的局限性。

去相关并不意味着独立;所以市场中性的投资组合并不总是市场中性的!

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

Scatter plots of couples of random variables, labelled with the associated Pearson’s correlations. The last row shows random variables that, despite having 0 Pearson’s correlation, exhibit strong associations. Source: Wikipedia.

正如任何概率 101 课程所教导的那样,去相关并不总是意味着独立!特别是,如果市场中性投资组合的回报与市场回报不一致,那么市场中性投资组合实际上可能依赖于市场!这是一个显而易见的说法,但却经常被从业者忽略。

最糟糕的是,在这种情况下,所谓的市场中性投资组合和市场之间的剩余耦合只能在尾部(分布的高阶矩)中表现出来——市场中性投资组合的回报与市场回报没有一阶关联,但不一定没有高阶/非线性关联。

市场中性的投资组合在正常市场条件下可能得到很好的对冲,但它可能会显著暴露于极端波动,也就是市场范围内的黑天鹅。

一个伟大的基金经理总是假设线性,就像法国厨师保罗·博古塞要求他的食品供应商经营他的餐馆一样!

在金融中使用皮尔逊相关性的一个相关缺陷是,假设线性抓住了两个随机变量之间任何关联的本质。然而现实是所有的回归模型都是线性和非线性的,这取决于什么样的输入现象的观察被用作参考。

让我们考虑一下回归模型

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

其中 f 为非线性函数。显然,这个模型假定了在 yx 之间的非线性关联。但是,同样的模型也可以看作是在 yf(x) 之间放置一个线性关联。

也就是说,*【x】*f(x) 可以看作是观察同一随机现象的两种不同方式。观察潜在随机现象的过程通常由数据供应商承担,或者由任意约定(例如交换合同规范等)暗示。).总是假设你的数据供应商或交易所提供给你的表示是线性的,就像假设数据供应商或交易所做了你的(大部分)工作。如果他们擅长你的工作,他们会管理你的基金。

我们举一个具体的玩具例子。假设我们对研究澳元对美元的价值和新西兰元对美元的价值之间的关系感兴趣。假设我们决定使用线性回归。我们应该回归利率本身吗?比率的对数?他们的每日收益?还有其他的汇率变化吗?显然,每种情况都会导致完全不同的模型,不问这些问题就像让数据供应商和交易所为我们建立模型一样好。

为了使用线性模型,人们应该额外寻求理解,更好地从数据中学习,什么样的转换会使线性假设有用。

在这一点上,值得强调的是,经济学家所钟爱的 t 检验等具有统计显著性的检验,不能用来证明线性假设的有效性。他们测试(非零)一阶效应的存在,他们不测试(非零)高阶效应的不存在。

总之,我们都应该像已故的法国厨师保罗·博古兹(Paul Bocuse)一样:非常担心我们使用的食材的质量,但更担心如何将它们放在一起做出完美的饭菜(或预测/风险模型)。

总是假设回报率是独立同分布的,就像发誓说市场是完全有效的,你仍然可以创造阿尔法!

追求阿尔法的本质是这样一个前提,不管怎样,过去与未来是相关的,未来是可以预测的,或者用数学术语来说,市场作为一个随机系统,表现出记忆。

因此,既寻求阿尔法,又假设市场动态是无记忆的,这是违背直觉的。如果市场是无记忆的,怎么可能从数据中学习系统的策略(例如,像量化基金一样赚钱)?然而,大量的风险模型都是基于因子模型,假设收益的时间序列是无记忆的。这个假设不仅与经验证据不一致,它还隐藏了很多尾部风险,我们将在第二部分中看到。

要找到皮尔逊相关性的替代方法来衡量你的投资组合的风险,同时考虑非线性和时间相关性,以及 CAPM 的 beta 的类似替代方法,请阅读本文的第二部分,以及我们的黄皮书进行更技术性的讨论。

皮尔逊相关性和投资组合“贝塔”的信息论替代方案

原文:https://towardsdatascience.com/the-black-swans-in-your-market-neutral-portfolios-part-ii-20dc2299374a?source=collection_archive---------12-----------------------

本文是本文的第二部分,阐述了在评估投资组合风险时,考虑非线性和时间相关性的实际重要性,而广泛采用的(皮尔逊)相关系数未能做到这一点。

第一部分中,我们提供了皮尔逊相关性的基本介绍,它与线性回归和投资组合贝塔的关系,以及它在衡量资产间相关性方面的局限性。

在这篇文章中,我们提供了资产回报的独立同分布高斯假设不适用于美国股票和期货的经验证据,并且我们提出了皮尔逊相关性的替代方法,即 信息调整相关性 ,它测量时间序列(而不是随机变量)之间的关联,同时充分捕捉非线性,更重要的是,时间结构。然后,我们使用信息调整相关性来构建相对于市场的投资组合的(CAPM 的) beta 的信息论替代方案,我们称之为 信息调整 beta

用信息论测量时间序列关联

注:本节中的所有对数均以 2 为基数。

熵作为不确定性的度量

被建模为随机变量的复杂系统中包含的信息量通常被定义为与其相关的随机变量中的不确定性的量。

测量随机变量中的不确定性是一个和信息论本身一样古老的问题。这个问题的规范解决方案是信息论之父 Claude Shannon 在他的开创性论文中引入的 信息 的概念,他在论文中专注于离散随机现象(即那些取可数个值的现象)。

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

The entropy of a probability distribution with density function p with respect to a base measure dμ. The entropy of a random variable is that of its probability distribution.

Shannon 为离散随机变量引入的信息熵概念后来被推广到任何随机变量。

一个重要的相关度量就是所谓的 条件熵。 直观上,随机变量 y 给定 x 的条件熵是关于随机变量yx的剩余信息量/不确定性。**

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

Conditional entropy of y given x

更具体地说,就是 yx 中存在的不确定性(或熵)的总量与 x 中存在的不确定性的总量之差。

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

Venn diagram illustrating the link between entropies, joint entropy, and conditional entropy

如上面维恩图所示, yx 包含的信息量总和很少是x 包含的信息量总和,因为在 yx之间可能存在信息冗余

使用熵作为信息度量的一个优点是,给定 x 的条件熵永远不会大于的条件熵,当且仅当 y 和 x 是独立的 时,两者相等(即两者之间没有任何关联

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

The notion of conditional entropy fully captures independence between two random variables

与皮尔逊相关不同,条件熵捕捉随机变量之间的线性和非线性关联。

关联的一个相关度量是在*和 x 之间的 互信息,其被定义为yy***给定的 x****

事实证明,如果我们假设 yx 是独立的,即所谓的 Kullback-Leibler 散度,这个量与一个正式且流行的统计测量值相符。

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

Relation between the mutual information between two random variables, their conditional entropies, and the KL-divergence between their joint distribution and the product of its marginals.

简而言之,即使我们假设资产回报是独立同分布的,我们也可以借用信息论来构建一个关联度,与皮尔逊相关度不同,它可以完全捕捉线性和非线性关联。

熵率作为时间序列中信息的一种度量

时间的概念在经济学和金融市场中扮演着太重要的角色,以至于人们不相信顺序无关紧要,也不相信同样的随机现象会不断重复。简单地说,假设收益是独立同分布的,通常是错误的。模拟金融市场的自然概率抽象是随机过程时间序列的概念,而不是随机变量的概念。

时间序列基本上是带有时间戳的随机变量的集合。

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

幸运的是,通过时间序列的熵率概念,将条件熵的概念扩展到时间序列

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

给定一个时间序列的条件熵率

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

他们的解释非常相似。 熵率 衡量一个时间序列在单位时间内产生的信息量。 条件熵率 衡量的是一个时间序列在单位时间内产生的新信息的数量,这些信息是另一个时间序列中尚未包含的。

与随机变量的情况类似,一个时间序列的熵率与其给定的另一个时间序列的条件熵率之间的差异反映了每单位时间内两个时间序列之间共享的信息量。

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

The amount of information shared between time series {x} and {y} per unit of time is equal to the rate of KL-divergence between the joint process of {x, y}, and the product of coordinate processes {x} and {y} (i.e. the joint process stripped out of any association between coordinate processes {x} and {y}). It is also equal to their rate of ‘mutual information’.

至关重要的是,条件熵率的概念远远超出了对应于同一时间的样本的线性关联,并且捕获了两个时间序列之间的线性或非线性以及跨时间的任何关联。****

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

The notion of conditional entropy rate fully captures independence between two time series

成对增量多样化作为资产间依赖的一种度量

在我们的黄皮书中,我们将一项资产加到另一项资产上的多样化量定义为收益时间序列的互信息时标(互信息比率的倒数):

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

直观地说,这个量可以被解释为看到两种资产之间的 1 比特共享信息(或者等价地,它们的回报时间序列)平均需要的时间量。两种资产的相关性越低,观察它们的收益时间序列之间的 1 比特互信息所需的时间就越长。类似地,两个资产越相关,看到两者之间 1 比特的共同信息所花费的时间就越少。

增量分散始终为正,并在 0(当一个时间序列的回报可以完全从另一个时间序列中确定)和+∞(当两个时间序列的回报是独立的)之间变化。

从增量多样化到信息调整相关性

敏锐的读者肯定已经注意到,我们没有做出任何具体的分布假设,以确保我们的增量多样化概念完全捕捉到两个时间序列的收益之间的任何形式的关联,线性或非线性,同时或跨时间。此外,可以从经验证据中估算增量多样化,而无需进行任何任意分布假设(更多详细信息,请参见黄皮书 our)。

现在,事情是这样的。我们知道,在独立同分布高斯分布的情况下,皮尔逊相关足以描述任何形式的关联,无论是线性的还是其他形式的。这就引出了一个问题:在独立同分布高斯分布的情况下,增量多样化和皮尔逊相关之间的函数关系是什么?事实证明,答案是封闭的:

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

Relationship between incremental diversification and Pearson’s correlation when time series of returns are assumed jointly Gaussian and memoryless.

我们也可以反过来问。假设我们知道如何准确估计增量多样化,在独立同分布高斯假设下,估计的增量多样化值对应的皮尔逊相关系数是多少?这个问题的答案——通过反演上面的等式获得——就是我们所说的 信息调整相关性

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

The information-adjusted correlation between two assets with time series of returns {y} and {x} is the Pearson’s correlation coefficient that, under the possibly incorrect i.i.d. Gaussian assumption, would produce an accurate measure of incremental diversification.

然后,我们可以独立地估计皮尔逊相关性,并将其与信息调整相关性进行比较。如果高斯 i.i.d .假设成立,那么这两个值应该很接近!

一种简单实用的黑天鹅检验

这听起来不错,但你可能会问,黑天鹅在哪里?好吧,如果这篇文章有什么实际的收获,那就是:

  • 阅读我们的黄皮书,找出如何从数据中估算 ACorr
  • 案例一:ACorr ≈ Corr: 如果你观察到信息调整相关性(近似)等于皮尔逊相关性,那么 i.i.d .高斯假设成立,你可以相信你最喜欢的线性 i.i.d .因子模型。
  • 案例二:|ACorr| < |Corr|: 对不起,你的代码有一个 bug!这在数学上是不可能的。
  • 案例三:|ACorr| > > |Corr|: 红旗!你的投资组合中有很多风险,无论是皮尔逊相关性还是你最喜欢的线性独立同分布因子模型都没有考虑到,这将在市场大幅波动时给你带来沉重打击。你在这些资产中的任何投资组合,你认为是市场中性的,很可能根本不是市场中性的!

这些都重要吗?你打赌它是!

如前所述,如果我们绘制一些资产对的信息调整相关性与皮尔逊相关性,任何与 y=x 线的显著偏离都强烈表明资产回报的独立同分布高斯假设不成立。

好吧,我们就这么做吧。让我们把 S&P 100 指数成份股和 60 指数最具流动性的美国期货(用后向比率法连续调整的前一个月)视为整个资产。对于宇宙中的每一对资产,我们计算它们每日回报之间的皮尔逊相关性和它们每日回报之间的信息调整相关性,我们在散点图中绘制一个对另一个,我们得到下面的图表。

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

Relation between Pearson’s correlation and information-adjusted correlation for S&P 100 stocks and 60 of the most liquid U.S. futures. Information-adjusted correlation are estimated using the maximum-entropy approach described in our Yellow Paper.

我们来分析一下图表。

观察 1: 我们看到皮尔逊相关性越接近 1(分别为。-1),信息调整相关性越接近 1(分别为-1).这很直观。皮尔逊相关性捕捉到了对应于相同时间的回报之间的线性关联。这种特定形式关联的有力证据 确实暗示了 潜在时间序列回报之间关联的有力证据,这就是信息调整相关性所捕捉到的。

观察结果 2: 然而,我们看到,信息调整相关性不会像皮尔逊相关性那样变为 0。直觉上,缺乏对应于相同时间的日收益率之间线性关联的证据(即弱皮尔逊相关性) 通常并不意味着日收益率的两个基本时间序列之间缺乏关联的 证据。这在联合高斯白噪声的特殊情况下是正确的,但在一般情况下肯定不是。一般而言,可能存在其他形式的关联(例如,非线性关联、时间依赖性等。)将被信息调整相关性而不是皮尔逊相关性捕获。**

上面的散点图明显偏离 y=x 线的事实是充分的经验证据,表明 i.i.d .高斯假设对美国股票和期货的日收益率不成立!

***主要观察:*你看到纵轴上那些皮尔逊相关为 0 的配对了吗?都没有 0 信息调整相关性!流动性交易所交易美国资产之间 0 的皮尔逊相关性可以隐藏高达 0.3 的“真实”相关性,这只能通过非线性(即厚尾)或时间相关性(即蝴蝶效应)产生,这两种情况都可能是黑天鹅事件的来源。

基本上,线性 i.i.d .因素模型不能准确捕捉美国股票和期货的流动性风险!

信息调整投资组合 Beta

正如在第一部分中所讨论的,一个投资组合的(CAPM 的)β可以如下获得

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

Beta of a portfolio relative to the market

通过用信息调整相关性代替皮尔逊相关性,获得了这种度量的简单概括,以捕捉投资组合的收益和市场的收益之间的非线性和时间相关性。我们称由此产生的度量 为信息调整的投资组合 beta

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

Information-adjusted beta of a portfolio relative to the market

以上讨论的一个直接后果是, 一个信息调整后 beta 为 0 的投资组合 具有独立于市场的收益率时间序列,因此 是真正独立于市场的真正的市场中性

最后的话

在我们的黄皮书中,我们介绍了皮尔逊相关性的一种信息论替代方法,即 信息调整相关性 ,它以一种无模型的方式完全捕捉了时间序列收益率之间的非线性和时间相关性。

我们使用信息调整相关性来构建投资组合的 CAPM 贝塔系数的替代方案,即 信息调整贝塔系数 ,它捕捉投资组合和市场之间的任何关联(线性和非线性,同时,或跨时间)。

我们说明了资产回报的独立同分布高斯假设与美国股票和期货的经验证据不一致,这证明了信息调整替代方案的实际重要性。

至关重要的是,我们说明了皮尔逊相关性、CAPM 的贝塔系数和其他独立同分布线性因子模型可以隐藏大量的金融风险,这些风险将显示为黑天鹅事件。

区块链和人工智能

原文:https://towardsdatascience.com/the-blockchain-and-ai-fbfa691f10e0?source=collection_archive---------0-----------------------

区块链是一项新的技术发展,最近受到了很多媒体的关注。事实上,据报道,虽然 2016 年是区块链的概念验证年,但 2017 年将是我们看到区块链技术在生产中实施的一年。那么,区块链是什么,为什么受到如此多的关注,为什么是现在?

区块链是比特币的底层技术,这是一种大多数人都听说过的数字加密货币。它是在 2008 年由一个叫中本聪的人或一群人发明的——直到今天,没有人真正知道他或他们是谁。但区块链能做的远不止管理比特币。事实上,作为一个分布式数字账本,它可以管理几乎任何类型的交易,这就是它的威力所在。

它的设计目标是加速和简化交易的记录方式。任何类型的资产都可以在完全分散的系统中使用区块链进行交易。在区块链,信任不是由银行、政府和科技公司等强大的中介机构建立的,而是通过大规模协作和聪明的代码建立的。结算和清算时间缩短至几秒钟。分布式账本在世界各地的数千台计算机上复制,并通过强大的加密算法保持安全。这项技术极具颠覆性,最终可能会刺激公司甚至政府工作方式的新变化。

区块链提供了引入新产品和服务、降低现有服务成本和大幅减少交易时间(从几天到几秒)的机会。

有些人甚至说,这可能是启动下一个谷歌或脸书的技术!

风险和挑战包括安全性、环境影响、设备昂贵和互操作性。比特币和以太坊加密货币都遭到了黑客攻击,尽管每次都采取了新的安全措施来消除漏洞。

运行这些大型网络所需的能源会对环境造成影响。运行区块链网络需要昂贵的设备——想想数据中心。可能会有许多区块链,因此互操作性成为一个中心问题,与其他银行和合作伙伴的区块链技术合作的能力至关重要。

区块链应用程序的示例包括但不限于:

法律协议(合同)

金融

  • 加密货币——电子现金的点对点版本
  • 其他资产类别(债券、商品等。)
  • 为了降低成本,瑞士瑞信银行已经和区块链的初创公司进行了 10 次概念验证

自动驾驶汽车

  • 运输基本设施

住宿

  • 酒店、公寓、智能锁

能源网

物联网

  • 万物互联需要万物分类账

供应链管理

尚未想到的事情

区块链即服务

IBM 和微软的区块链即服务(BaaS)产品,以及开源标准组织 Hyperledger、R3 和 EEA 的创建(许多企业成员已经注册),进一步证明了区块链将继续存在。

当我们开始将人工智能和区块链融合成一个强大的原型时,会发生什么?

我们拥有区块链理工大学承诺的近乎无摩擦的价值交换,以及人工智能加速分析海量数据的能力。两者的结合标志着一个全新模式的开始。我们可以通过使用管理链的人工智能代理来最大化安全性,同时保持不变。随着越来越多的公司和机构采用基于区块链的解决方案,以及更复杂、潜在关键的数据存储在分布式总账中,对人工智能技术可以提供的复杂分析方法的需求越来越大。

道富银行正是通过发布基于区块链的指数来做到这一点的。使用区块链存储数据并使其安全,他们使用人工智能分析数据,同时保持数据安全。道富银行报告称,64%接受调查的财富和资产经理预计他们的公司将在未来五年内采用区块链。此外,49%的公司表示,他们预计将采用人工智能。截至 1 月,道富银行有 10 个区块链概念验证项目正在进行中。

IBM 沃森也正在通过沃森物联网集团将区块链与人工智能合并。在这种情况下,人工智能区块链让联合各方就设备的状态达成一致,并根据智能合同中编码的语言做出决定。使用区块链理工大学,人工智能软件解决方案可以自动实现。风险管理和自我诊断是正在探索的其他用例。

总之,人工智能正与区块链技术相结合,以安全地分析数据并做出预测。创业公司和公司目前都在运行 POC。包括 IBM 和微软在内的主要云提供商已经将人工智能区块链作为服务提供。未来,几乎每笔交易都可以在区块链技术上运行。

在我们看到广泛采用区块链技术之前,必须克服一系列经济、法律、监管和技术障碍,但先行者正在取得令人难以置信的进展。在接下来的几年内,你的数字生活的大部分可能会开始在区块链基金会上运行——你可能甚至没有意识到这一点, PC Mag,2017 年 2 月。

常春藤数据科学公司为金融科技领域的人工智能提供沉浸式训练营(8 周,15000 美元)和晚间课程(8 周,5000 美元)。下一次训练营将于 4 月 27 日在纽约华尔街开始。加速你向人工智能领域的职业转型——现在就通过info@ivydatascience.com联系我们,或者访问我们的网站www.ivydatscience.com申请!

参考文献:

区块链和人工智能在金融科技中的地位http://news . crowd valley . com/news/state-of-区块链和人工智能在金融科技中的地位

道富银行押注人工智能可以帮助区块链货币化http://www . coin desk . com/Street-Street-is-Betting-AI-Can-Help-Monetize-区块链科技/

IBM 的新沃森中心将区块链与人工智能融合在一起http://www.coindesk.com/ibms-asia-watson-blockchain-ai/

区块链:改变世界的隐形技术http://www . pcmag . com/article/351486/区块链-隐形技术-改变世界

微软和 IBM 着眼于下一个云前沿:区块链即服务http://www . pcmag . com/article/345899/Microsoft-and-IBM-Set-Sights-on-the-Next-Cloud-Frontier-blo

区块链的影响超越了金融服务——HBRhttps://HBR . org/2016/05/the-Impact-of-the-the-the-the-America-Beyond-Financial-Services

监督学习和非监督学习的模糊界限

原文:https://towardsdatascience.com/the-blurry-lines-of-supervised-and-unsupervised-learning-b8a2aa04c8b0?source=collection_archive---------14-----------------------

自我监督、半监督和弱监督

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

当你进入机器学习领域时,你会很快听说监督学习和非监督学习。解决两种不同类型问题的两种不同方法。

由于机器学习,尤其是深度学习正在快速发展,事情变得更加复杂。有人监督和无人监督之间的界限似乎变得模糊了,目前有三种新的学习方式越来越受欢迎。在开始新的内容之前,让我们简要地浏览一下通常的两个疑点。

监督学习

监督学习就是寻找一个映射,将一组输入特征转换为一组预定义的输出特征。换句话说,我们明确地告诉模型,我们想要为训练数据预测什么。监督学习带来的问题是,我们需要手动标记我们的数据,以便为每个样本定义输出空间。

无监督学习

在无监督学习中,我们也对找到到输出空间的映射感兴趣,但是我们不知道这个输出看起来像什么。或者至少,我们不会将这些信息输入到算法中。无监督学习最常见的例子是聚类,其中我们根据样本最明显的特征将样本分组。

自我监督学习

自我监督学习指的是一种标签可以自动生成的方法。架构本身和学习过程是完全监督的,但我们不需要手动标记训练数据的步骤。

示例 1:自动编码器

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

这方面的一个经典例子是输入和输出数据完全相同的自动编码器。其架构的目的是首先将输入压缩为密集格式,然后重构原始信号。通过这样做,自动编码器学习特定于问题的有损数据压缩,这有助于特征提取或数据减少。

示例 2:图像超分辨率

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

另一个例子是图像超分辨率,其中我们放大图像,同时试图基于语义内容重建新的像素信息。如果你想为这样的问题建立一个数据集,你所需要的就是一个未标记图像的集合。要给它们加标签,你可以缩小原始图像的尺寸,并把它们作为你的输入。输出将是原始大小的图像。在这种情况下,您不需要手动标记任何内容。您从未标记的训练数据中自动生成了已标记的训练数据。

半监督学习

当你的训练数据只有部分标注时,半监督学习就发挥作用了。你会在网上找到很多数据集,除了带注释的样本之外,你还会得到其他没有标注的数据。因为所有数据都是好数据,这可能有助于您改进模型。

示例:伪标签

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

伪标注是为我们没有标签的数据预测标签,并使用这些预测作为基础事实标签来扩展数据集的过程。虽然这可能会在我们的数据中引入噪声,但实验表明,这有助于提高模型的准确性。如果你对此感到惊讶,你并不孤单。

弱监督学习

弱监督学习指的是一种模型,该模型根据它被训练的标签来预测附加信息。你可以认为这是监督学习之上的无监督学习。

示例:从分类标签中分割

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

假设您正在训练一个分类器来区分图像中某处包含的不同类型的对象。CNN 将学习为每个类创建热图,在那里它期望该对象在帧中。这样它就可以比较一个物体与其他物体的面积和可能性。虽然我们只根据整个帧的真实信息来训练网络,但我们也可以获得对象在帧中所处位置的信息。

你会发现这些术语到处都有不同的定义。有些似乎不准确,因为它们已经过时,有些似乎结合了我明确区分的术语,还有一些陈述了我完全不同意的观点。如果你不同意我的观点,请留下你的评论。

作为神经网络的大脑:这就是我们无法相处的原因

原文:https://towardsdatascience.com/the-brain-as-a-neural-network-this-is-why-we-cant-get-along-bd94bc7e49cc?source=collection_archive---------11-----------------------

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

几个月前,我和我的同事们进行了一次谈话,并注意到一些奇怪的事情,这些事情改变了我对政治的看法,也改变了我自己的想法。

今天的话题是自省和政治。我们互相问了一些问题,比如,“作为一个自由主义者,你认为你的盲点是什么?”,以及“作为一名女权主义者,你的呢?”我忘记了时间——在这种情况下我经常这样做——在我意识到之前,已经过了凌晨 1 点,感觉我们才刚刚开始揭开世界问题的最初几层。

我们谈话的奇怪之处不在于话题本身。我喜欢激烈的哲学对话,这种对话无处不在,无处不在,我可能拥有的比我应该拥有的更多。不,奇怪的是我们讨论这个话题时使用的语言。

因为我们每个人都有机器学习的背景,所以我们分享了一个共同的词汇——其中包括像“决策面”和“过度拟合”这样的技术术语。随着我们整晚更深入地探索我们的偏见和观点,很明显,这个不寻常的词汇让我们对自己的思维过程获得了非常强大的洞察力。

在某些方面,这实际上很有意义:最成功的机器学习算法是神经网络,它们的结构和功能明显受到大脑的启发。因此,毫不奇怪,机器学习的词汇非常适合于提供关于我们如何思考或不善于思考世界问题的见解。

我想在这里与你分享其中的一个见解。还有很多其他的,但是你可能有其他的事情要做,如果我明天早上要赶火车的话,我真的需要在午夜之前完成这篇文章。

我们的大脑是一个神经网络

让我们把大脑想象成神经网络的集合。我们将想象这些网络中的每一个都负责做出(至少)一种类型的预测。

现在让我们想象一下,有一次城市选举,我们需要选择我们支持哪个候选人竞选市长。根据我们正在使用的模型,将会有一个神经网络负责做出有关政治的决策。

这个神经网络将接受各种输入:我们朋友的意见、我们看过的任何推文、我们看过的竞选广告、我们听过的播客等等。它将把我们的政治观点作为它的输出:我们认为哪个政党是“好”的,我们期望哪个候选人当选后表现最好,我们的税率应该有多高,等等。等。本质上,这个神经网络编码了我们的政治“世界模型”。

为了简单起见,让我们假设它只有两个输出:1)如果我们最喜欢的候选人(我们称她为简·史密斯)当选市长,她是否会做得很好,以及 2)哪个政党是“好”的政党。

这是一个大概的样子:

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

***先不说:**注意,这个模型的两个输出都建立在同一个底层模型之上。为了确保我们世界观的内在一致性,这是一个很重要的理想化。如果输出 1 和输出 2 是由完全独立的神经网络生成的,那么我们可能会遇到明显的矛盾,在这种情况下,我们在做出一种政治预测和做出另一种预测时会应用不同的规则。

假设我们预测简·史密斯会做得很好,但是后来证明我们的预测是完全错误的。如果我们完全理性,我们的下一步将非常简单:我们将通过我们的模型反向传播,调整其权重,以便下次我们遇到像 Jane 这样的候选人时,我们会更加怀疑。

但是这种反向传播也可能有其他后果。具体来说,它可能也会影响我们对哪一方是正确的预测。

现在,一个完全理性的人可能会说,“那又怎样?如果我不得不重新评估我的党派关系以适应事实,那就这样吧。”

但是人类不是理性的。我们深深地属于部落,我们中的许多人深深地认同我们的政治。在许多情况下,社会压力和条件作用直接影响与输出 2(我们党的从属关系)相关的损失函数,并要求输出 2 呈现某个特定值。

例如,语句“我是共和党人”必然要求输出 2 的值为“共和党是对的”。同样,“我是民主党人”是一个承诺,以确保输出 2 始终是“民主党是正确的”。

值得花点时间思考一下这种约束的后果。正如我们将看到的,通过这样做,我们可以学到很多非理性人类行为背后的数学知识。

过度契合=固执+现实

让我们假设简·史密斯是我们最喜欢的政党的成员。为了保持中立,我们称之为紫色党。让我们也假设我们是一个党派迷,有足够的社会和其他压力迫使我们支持紫色党,我们不愿意在我们的党派归属上让步。

在这种情况下,我们对简·史密斯在任期间表现的回应将是一种受约束的优化。一方面,我们显然有东西要学,因为我们支持简,而事实证明她终究不适合这份工作。另一方面,我们不能以这样一种方式更新我们的权重,以妥协我们的政党偏好。

使用我们之前的图片,这看起来是这样的:

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

然而,事情是这样的:根据我们的模型在开始时所处的状态,我们可能很难更新我们的权重,以便正确预测简在担任市长时的失败,而不在此过程中破坏我们亲紫色政党的立场。

如果发生这种情况,我们能做什么?我想到了一个选择:也许我们需要做的就是给我们的模型增加一些自由度,来绕过这个约束!

我认为,这正是我们所做的:我们不改变我们的党派关系或我们的世界观,而是简单地增加重量,并允许我们自己通过过度适应来保持产量 2:

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

过度适应是想要鱼与熊掌兼得的自然结果:如果我们要固执地坚持紫色党总是正确的,但我们也希望能够证明他们的候选人的糟糕表现,我们所能做的就是给自己更多的工作自由度。

过度合身是什么感觉?

到目前为止,我已经从理论上介绍过拟合。但是很难想象过度拟合实际上是如何在我们的思维中表现出来的,所以我们可能应该看一个具体的例子。

让我们回到简和她当市长时糟糕的工作上来。如果我们要过度适应这种情况,我们需要为我们的模型发明一些新的特征(也许是一些新的输入),让我们能够解释她是如何失败的,而不会得出紫色党需要改变政策的结论。

这些特征可能是什么样的?在理想的情况下,它将是我们可以制造的东西,但不能被反驳或挑战。勾选所有这些框的一个很好的选择是读心术:我们可以想象简·史密斯的精神状态,并调整它,直到它让我们得到我们想要的两个结论:1)简·史密斯是一个糟糕的市长,2)紫色党仍然很棒。一个简单的方法是这样说,“当然,她是一个紫色的党员,但是简·史密斯从来没有真正的相信他们的平台。所以你不能根据她的行为来判断紫党。”

哲学迷可能会认为这只是“没有真正的苏格兰人”谬论的一个例子。据我所知,“没有真正的苏格兰人”的谬论正是过度适应。这是一个简单的“是的,但是”的回答,旨在保留我们现有的偏见,而不损害我们根据需要发明新功能来解释现实的能力。(“是的,但简不是真正的紫色党候选人,因为【发明了允许过度拟合的功能】。”)

通过假设我们能够了解简·史密斯的精神状态,我们就能够随意拉动读心术杠杆,以确保我们从我们的世界模型中获得我们想要的结果,而不会牺牲我们解释我们观察到的她的候选人资格的能力。这个策略很棒,因为除了简·史密斯,没有人能够反驳我们,即使她反驳了,我们也可以告诉自己,“如果她不诚实,她就会这么说。”

一点内省可能会揭示出我们实际上有一个过拟合探测器硬连线到我们身上。这是因为过度拟合通常与一种感觉有关:那种 找借口的感觉。毕竟,如果不是我们引入到我们的世界模型中的一个新特征,允许我们在保留我们的教条的同时解释我们的观察,那么“借口”是什么?

如何对抗过度拟合

如果你想成为一个更理性的人,你可能会得出结论,你需要直面过度适应。您可能会认为,您可以在自己的头脑中解决过度拟合问题,就像您在数据科学项目的环境中一样:建立一个验证集,并根据它检查您的预测。

在实践中,这可能意味着对某些事件的发展方式做出预测,并让你的世界模型对这些预测的准确性负责。

但是这并不总是有效的,因为出于完全合理的原因,不得不为你的世界模型添加特性并不罕见。事实上,在很大程度上,当我们了解一个新问题,或一个新领域时,就会发生这种情况:我们在越来越高的维度上思考它,同时增加了我们模型的复杂性。

所以在一天结束的时候,你最好的选择可能就是密切关注你的思维过程,当你进入找借口的模式时,试着抓住你自己。因为这是过度拟合的迹象,这是你的世界模型可能需要多一点调整的第一个迹象。

如果你想聊天,在推特上用@jeremie charris联系我!

对数据科学就绪级别的要求

原文:https://towardsdatascience.com/the-call-for-a-data-science-readiness-level-3355d6d8a1bb?source=collection_archive---------11-----------------------

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

NASA Technology Readiness Levels

20 世纪 70 年代,美国宇航局开发了技术成熟度等级(TRL) 量表来衡量尖端技术的研发。其目的是在收购过程中评估技术的成熟度,从 1 到 9 分不等,9 分是最成熟的。TRL 支持对不同类型技术的技术成熟度进行一致、统一的讨论。

这一概念为寻求许多政府机构资助的研究人员所熟知,但似乎在其他工程应用中失去了青睐。随着人工智能、机器学习和数据科学领域不断增长的前沿发现,本博客将探索如何使用这一尺度来衡量进展,并通过将数据科学项目与 TRL 尺度上的价值联系起来,指导数据科学项目的成功。

这种尺度在站点可靠性工程和数据科学中的应用,最初是由 Emily Gorcenski 在关于与数据科学全面融合:使用技术准备度的精彩演讲中提出的。如果你有 30 分钟,她的谈话绝对值得你花时间!

她很好地消除了“全栈”或“独角兽”数据科学家的神话,以及您实际上如何需要一个“全栈”团队和专门角色映射到数据消费周期和 TRL 的每个阶段。她借鉴了站点可靠性工程的原则,并整合了 TRL,以构建一个可靠的计划来界定和执行数据科学工作。

值得思考的一些要点:

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

Data Science Readiness Levels mapped

发现与交付

在宏观层面上,数据科学项目实际上只有两种类型。发现/研究与交付。

在一个发现项目中,你在 1 到 4 的 TRL 范围内工作,并关注诸如“我们能解决陈述的问题吗?”。整个项目都在探索新的算法、数据集、技术等。看看陈述的问题是否可解。这些类型的项目通常被数据驱动的团队孤立,并且可能没有一个负责的项目发起人来交付项目的成果以从中提取真实的价值。

在分娩项目中,您的工作地点在 TRL 5 至 9 英里范围内。这些项目必须有一个专门的项目发起人,该发起人有权将项目成果转化为现有/新的工作流程/流程,以“将数据转化为金钱”。一旦我们有权力实现一个结果,数据科学团队就可以无缝地利用这个结果,并捕获反馈环来构建一个持续学习的模型。

如果您曾经涉足过数据科学项目,您会发现这两类项目之间的鲜明对比。然而,大多数分析工作流都是这样对待它们的!使用项目附带的 TRL 量表有助于为参与项目的每个人设定适当的期望。

结果比“将数据转化为金钱”更精细

虽然最终目标总是回到美元,但这些应该只关注处于“交付”阶段的项目(即 TRL 5-9)。当开始一个“发现”项目(即 TRL 1-4)时,您应该对结果如何被一个确定的赞助方消耗有一个愿景,但它不是该阶段项目的主要焦点。在某些情况下,您甚至可能还没有一个投入的赞助者购买这个项目!要求数据科学家团队量化这些早期 TRL 中项目的投资回报率是不合适的,也是徒劳的。

即使项目进入“交付”阶段,数据科学团队也可以帮助项目发起人量化结果的价值,以及如何将其转化为业务价值和/或货币化。但是,这方面的主要驱动力仍然必须来自项目发起人。“将数据转化为金钱”的最佳例子来自嵌入式数据科学团队,因为他们都是主题专家,并且能够提供结果。

对于每个工作周期,要知道你的准备程度从哪里开始,并为它的结束设定现实的目标

在我有幸参与的大多数数据科学团队中,他们喜欢支持敏捷方法并使用短期 Sprints 进行项目执行。然而,sprint 计划中缺少的是关于我们在哪里,以及在 sprint 结束时我们将在哪里的清晰沟通。

我见过 DMAICCRISP-DMCAP 以及许多其他尝试过的方法,但没有一个像 TRL 量表那样简洁地抓住了短跑的本质。而不是详细说明你的项目当前所处的阶段的循环性质,以及它如何在任何时候恢复到先前的阶段;向赞助商传达我们目前在 TRL 1,并希望在这个冲刺阶段结束时在 TRL 3,这要容易得多。

拥有 TRL 等级也清楚地设定了对项目结果感兴趣的所有各方的期望。以及他们如何在堆栈中向上移动项目的清晰路径。

尽管任何数据科学团队都可以在 TRL 协议 4 之前执行发现和探索性分析,但这需要赞助商做出更多投资和硬性承诺。光靠数据科学只能解决一半的数据货币化工作。TRL 等级的可视化在传达任何数据科学项目的协作本质方面做得非常好。

在 TRL 5–7 计划中,我们开始将数据科学项目的成果集成到一个确定的工作流中,以增强决策者的流程。这可以是完全自动化的,或者你可以得到帮助人类工人的结果。工作流和流程是需要由发起人确定的项目,以及来自那些消费结果的人的承诺,他们接受过培训并且能够正确地解释结果。

没有赞助商和消费者的承诺,就不可能超越 TRL 协议 4,也不可能从数据中实现货币价值。通过将这些期望与 TRL 量表联系起来,它成为了与你的赞助商合作的一个强有力的工具。

不同的准备程度需要不同的技能

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

Machine Learning Engineer

每个 TRL 都需要不同的技能来完成手头的任务。确保你有正确的团队来解决这个问题。在工作周期开始时,让你的目标 TRL 需要的赞助商和利益相关者参与进来。

这就是数据科学团队的团队方面真正发挥作用的地方。伟大的领导者会在适当的水平上利用个人的优势,并使用 TRL 量表作为个人/职业发展的路线图,帮助你找到自己的弱项。虽然没有“全栈”数据科学家这样的东西,但你仍然可以通过培训成为一名数据科学家。你从其他 TRL 那里了解的越多,你就能为这个项目增加越多的价值!

这个过程不是单调的

与其他项目方法类似,随着项目的进展,我们可以上下移动 TRL 尺度。仅仅因为我们在一次冲刺中达到了 TRL 5,并不意味着我们不能在下一次冲刺中回落到 TRL 3。因为大多数机器学习算法和云技术都在不断发展,有时我们需要重新评估之前的预期,并做出相应的调整。

失败是正常的!一些工作有一个最高准备水平

失败是正常的。事实上,我会把这个想法进一步阐述为“失败是意料之中的”在我的职业生涯中,我变得愤世嫉俗,以至于我通常带着这样的心态对待每个项目,即它根本不适合数据科学。有时项目只是一个想法,没有任何可用的支持数据。更糟糕的是,这可能仅仅是一种在仪表板上添加“机器学习”的尝试。除了教育赞助商什么是可能的,我们还可以教育他们如何获得部署的解决方案,以利用 TRL 规模实现其数据的价值。

有了 TRL 规模,现在就变成了说明项目在规模上所处位置的问题。这个晴雨表清楚地传达了项目在当前数据集、技术、工作流、流程等条件下能走多远。如果项目停滞在某个水平上,并且如果发起人在项目上投入足够多,他们会发现消除障碍的方法来得到团队需要的东西。否则,团队可以干净利落地脱离,继续下一个项目。不是每个项目都会达到完全成熟和部署。

后续步骤

使用 TRL 量表解决了在数据科学项目领域工作的许多挑战。如果你正在读这篇文章,我鼓励你在下一个项目中使用这个量表,看看它会引发什么类型的讨论!

机器学习的多变模型

原文:https://towardsdatascience.com/the-capricious-models-of-machine-learning-23cd2f36dbbe?source=collection_archive---------5-----------------------

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

Photo by Marten Newhall on Unsplash

这个标题充分说明了机器学习中模型拟合的问题。伙计,统计学对建模有着非常不同的看法,这与我们的认知并不完全一致。

T 何发出:

机器学习中的这些模型有一个很好地拟合数据的问题。这两个问题是:

O 拟合:模型很好地吸收了数据,并完美地拟合了数据,有效地使平均误差比例非常小,几乎完美。听起来像是天赐之福,但事实并非如此。我们不希望我们的模型过于完美。数据集就像腐败的政客一样,隐藏着一些肮脏的东西。它们通常既不是线性的,也不是弯曲的。它们有某种粗糙的形状,但几乎从来没有完全符合几何形状。数据中一定有一些值与其他值相差太大。例如,考虑机器学习社区中使用的最喜欢的数据集:房价数据集。现在假设数据集的形状大致随大小线性增加。但是有一个特定的房子,它以前的房客自杀了,因此被当地人归类为“闹鬼”。对于这样的房子来说,价格太低了。再想想另一栋房子,它曾是某个死于车祸的非常受欢迎的电影明星的家。这样的房子会有很好的市场价值。这两种数据是我们的数据集的异常,记录在某个特定的区域(或 x 轴)值。我们不希望我们的模型从这些数据中做出推论,因为当我们预测不同社区的房价时,没有必要预测相同区域的类似房屋会闹鬼或以前由名人拥有。我们希望尽量减少模型对这些异常的拟合。为了做到这一点,我们需要找到完美数量的叶节点(如果使用决策树)或神经元(如果使用深度学习)。

nderfitting:顾名思义,模型无法从数据中吸取任何东西。因此没有学到我们想要的那么多。(哑巴模特!).为了形象化这个场景,你可以想象一下,房价曲线在某一点之前是线性增长的,但是从这一点开始急剧上升,导致该地区的房价开始变得更加昂贵。一个很好的拟合是,我们的回归线几乎是直线,然后向上弯曲。一个哑拟合将是回归线始终是线性的,完全忽略上升曲线,直接在它下面。或者甚至是一条直线,从起点一直走,穿过曲线。

下图直观地展示了这一场景。每种情况下的橙色线代表数据的最佳拟合(这是我们希望达到的)。左侧第一幅图像中的蓝线描述了模型的欠拟合情况。最右边图像中的蓝线描述了模型如何过度拟合。中间的图像描述了一个最佳匹配。我们可以观察到拟合没有完全覆盖橙色线,但这没关系。(在数据建模中,这种程度的误差总是意料之中的)

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

Source: Scikit-Learn

为了解决这两个主要问题,使用绘图可视化数据是很重要的。(哦,很美的情节!)

同样重要的是,我们要找到节点的最佳值,以便模型与数据达到最佳匹配。

有了神经网络,这个问题变得非常复杂。但值得庆幸的是,我们有许多高级库( Keras Caffe )来抽象所有远离我们的工作(对于大多数通用时间)。

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

Source: https://www.neuraldesigner.com

下面是一段代码,它包含了一个函数,我们用它来寻找决策树中最适合模型的节点数。当我们运行这个脚本时,我们可以观察到它不断地遍历节点数并打印出值。然后,我们可以使用视觉检查来决定我们应该在决策树中使用的最佳拟合的正确节点数,因为我们可以观察到平均误差在开始时很高**(节点数较少,拟合不足),最终继续减少到点(最佳点),然后返回增加(节点数过多,拟合过度)。**

一些基本的解释已经作为注释提供。

#First, import all the libraries. Ok, this is too formal
import pandas as pd
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import train_test_split#We import the dataset that we will be using. You can import any dataset you want that probably have 5-6 columns with numerical data(preferably something to do with housing prices)#The data will be imported in the form of a pandas dataframe. Pandas provide an excellent dataframe for all statistical application by formatting all the data in a spreadsheet like tablemy_data = pd.read_csv('*The file destination here without asterisk*')# print the column names of the dataset as we'll be calling names in a while
print(my_data.columns)#Now select the columns that we'll be using for making our decision tree and form a new dataframe with those values
interest_data = my_data['col1','col2',...,'coln']
interest_data.describe()
X = interest_data#Load the column that we need to predict into a new variable called y(maths!)
y = my_data.col_name#Define the data model that we'll be using, in this case, decision tree regressor
data_model = DecisionTreeRegressor()#Fit the data on the model
data_model.fit(X,y)#It's not good to use the same values for testing the dataset so we use the train_test_split function by Scikit-Learn to randomly split the dataset into a training set and validation set
train_X, val_X, train_y, val_y = train_test_split(X, y,random_state = 0)#Fitting the data model using the training values
data_model.fit(train_X,train_y)#We use the validation set we splitted earlier to check the accuracy of our model by printing the MAE of the predictions
predictions = my_model.predict(val_X)
print(mean_absolute_error(val_y, predictions))#Now, to fit the entire model optimally, we'll have to change the number of leaf nodes to find the optimal requirement for which the MAE would be the lowest. For this, we develop one function to calculate the MAEdef get_mae(max_leaf_nodes, predictors_train, predictors_val, targ_train, targ_val):
    model = DecisionTreeRegressor(max_leaf_nodes=max_leaf_nodes, random_state=0)
    model.fit(predictors_train, targ_train)
    preds_val = model.predict(predictors_val)
    mae = mean_absolute_error(targ_val, preds_val)
    return(mae)#Now take some random values in an array that denote the number of leaf nodes. We will be using these values to test the fit so try out a good amount of them 
n = [10,50,100,200,400,500,800,1000]#We define another function to iterate over all the leaf node values we described above and find the optimal nodes for which MAE would be the least.def optimal_nodes(n, train_X, val_X, train_y, val_y):
    on = 1000000 #Just a really high random value
    leaf = 0 #The variable which will save the minimum nodes we need
    for max_leaf_nodes in n:
        my_mae = get_mae(max_leaf_nodes, train_X, val_X, train_y, val_y)
        if my_mae < on:
            on = my_mae
            leaf = max_leaf_nodes
        print("Max leaf nodes: %d  \t\t Mean Absolute Error:  %d" %(max_leaf_nodes, my_mae))
    return(leaf)#By running the above function, we derive the optimal leaf nodes we need in our decision tree to have the least MAE. For that number of nodes, we can say that the model fits optimally.print("The optimal number of nodes for our model would be: "+str(optimal_nodes(n, train_X, val_X, train_y, val_y)))

如果你需要更好地理解拟合的概念,请参考伊恩·古德菲勒写的这本关于深度学习的优秀书籍:深度学习书籍,可在线免费获得。

电影的世纪

原文:https://towardsdatascience.com/the-century-of-movies-12a4b5a4c004?source=collection_archive---------3-----------------------

最初,这只是一个使用 d3 的数据可视化任务。令人惊讶的是,我实际上从我们从头制作的图表中发现了许多故事。

原始数据是一个文件,包含 5000 多部电影和许多功能,如 IMDB 评分、标题年份、预算、脸书喜欢等。所有的功能都在下面得到了安慰。

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

我选择了 IMDB 评分,冠军年,预算,FB 喜欢和流派,这是最后的作品。

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

我们可以从中讲述很多故事。

先说电影质量,几乎可以从每个圈的垂直位置表现出来。1977 年以前的电影似乎有相对较高的声誉。有些人可能会认为“电影业对待电影不那么认真了”,这是可能的,我们也需要考虑一下,是不是因为最近人们对电影的期望更高了,因为投入了更多的预算,高科技的应用,所以他们给了老电影相对较高的分数?此外,电影业的繁荣增加了一吨的电影,这些电影在后来的几十年里相对糟糕,拉低了这几十年的平均值。或者也许人们认为老电影更好,因为它们老了。

然后我们可以谈谈预算。前 60 年差别不大。那时候,电影预算都很低。我们可以看到在 1977 年至 1986 年的十年间有了急剧的增长。根据我们的调查,那是年轻群体开始被电影吸引的时候。像《星球大战》这样的电影获得了巨大的声誉和知名度。当更多的人去电影院时,制片人肯定会投入更多。还有,我们可以从体裁上看到,“冒险”和“科幻”开始跳出来。这些电影应该比“戏剧”和“爱情片”等类型的电影花费更多。另一件有趣的事情是,我们都认为平均预算肯定会越来越大。然而,最近几十年的预算比十年前少得多。我们假设的原因之一是,在这十年里有大量的电影,其中很多是低成本电影,这将降低平均预算。有可能在十年前,这个行业推崇高科技和花哨的显示器。十年后,人们更愿意倒着走,呈现更在乎故事和情感的东西。

下一个角色是脸书喜欢,我们可以看到“网络”时代是如何影响脸书喜欢的,因为相当数量的喜欢确实来自于电影实际制作时,粉丝只是喜欢页面来看预告片,更新等。我们还可以看到 facebook 喜欢和 IMDB 评分之间的关系。比如说。1937-1946 年和 1957-1966 年这十年的 IMDB 得分最高,与 2007-2016 年以外的其他十年相比,它们的颜色也更深。

最后一集是关于流派的。回溯到 1916 年至 1925 年,战争类型相当流行。随着时间的推移,现在我们几乎看不到它了。“浪漫”在 1927-1966 年间扮演了重要角色。当时也制作了许多浪漫电影,如《罗马假日》和《滑铁卢桥》。还有,一个有趣的事情是,二战期间“家庭”电影相对更受欢迎。我们也可以看到科幻小说从 60 年代诞生到 80 年代,然后变得相对模糊。

实际上,我们从这张图表中发现的比我们预期的要多,我相信还有很多可以探索的地方。

冷启动问题:如何打入机器学习

原文:https://towardsdatascience.com/the-cold-start-problem-how-to-break-into-machine-learning-732ee9fedf1d?source=collection_archive---------2-----------------------

我是一名物理学家,在 YC 的一家初创公司工作。我们的工作是帮助新毕业生进入他们的第一个机器学习角色。

很难被雇佣到你的第一个机器学习角色。这意味着我会被问很多类似这样的问题:现在,我做 x,我想成为一名机器学习工程师。我该怎么做?

根据 X 是什么,范围从非常难做的事情(物理、软件工程)到非常难做的事情(UI 设计、市场营销)。

因此,为了同时帮助每个人,我整理了一个进度,你可以从任何起点开始,真正成为一名机器学习工程师。我遇到的每一个 ML 工程师(没有在 T2 赛尔号或类似的地方读研究生)都经历过这种形式。

在你开始学习 ML 之前,你首先需要一些基础知识。

1.学习微积分

你首先需要的是多变量微积分(直到大学二年级)。

哪里学的: 可汗学院的微分学课程还不错。一定要做练习题。否则你只会跟着课程点头,什么也学不到。

2.学习线性代数

你需要的第二件事是线性代数(直到大学一年级)。

去哪里学: 瑞秋·托马斯(Rachel Thomas)的计算线性代数迷你课程针对的是想学 ML 的人。

**注:**我听过令人信服的论点,你可以跳过微积分和线性代数。我认识的一些人已经直接进入了 ML,并通过反复试验和直觉学到了他们所需要的大部分东西,结果证明他们还不错。您的里程会有所不同,但无论您做什么,都不要跳过下一步:

3.学习编码

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

你最不需要的是 Python 编程经验。你可以用其他语言做 ML,但是现在 Python 是黄金标准。

**去哪里学:**按照这个 Reddit 跟帖的置顶答案里的建议。你还应该密切注意包裹。这些经常出现。

关于良好的编程实践,我还有很多要说的,这里就不多说了。一句话:用好的测试和错误处理让你的代码清晰可见模块化

专业提示:如果你正在从头开始学习编码,不要费心去记住每一个命令。只需学会如何快速在线查找问题。而且没错,这就是专业人士做的

还有:学习 git 的基础知识。回报很快。

学习机器学习

现在你可以学习机器学习本身。2018 年,最好的地方之一是杰瑞米·霍华德的 fast.ai 课程,该课程以最先进的方式教授人工智能,课程平易近人。至少完成课程 1 ,最好是课程 2 ,完成所有练习,你将在建模方面领先于大多数行业从业者(真的)。

在过去的 6 年里,机器学习的大部分进展都是在深度学习方面,但这个领域还有更多。还有决策树、支持向量机、线性回归和一堆其他技术。随着你的进步,你会遇到这些问题,但是当它们出现的时候,你可能会学到它们。Python 的 scikit-learn 包是学习和使用它们的一个很好的集中地方。

构建个人项目

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

每个申请第一个 ML 职位的人都做过机器学习和数据科学方面的个人项目,所以你也应该这样做。但是把它做好是很重要的,我会在以后的文章中详细介绍。现在,我唯一要说的是:当人们展示个人项目时,我看到的最常见的错误是他们将众所周知的算法应用于 众所周知的数据集

这是一个错误,因为(1)机器学习招聘经理已经知道所有众所周知的数据集,以及(2)他们也知道,如果你展示一个项目,其中你将一个众所周知的算法应用于一个众所周知的数据集,你可能不知道如何做其他任何事情。

有些东西是很难自学的

事实是,很多让你鹤立鸡群的东西,是你自己很难学会的。在机器学习中,三个最大的是(1)数据准备,(2) ML devops,和(3)专业网络。

数据准备是您在处理真实数据时使用的技巧。这意味着处理异常值和缺失值。但这也意味着当你想要解决的问题还没有数据集时,你要自己收集数据。在现实生活中,您将花费 80%的时间清理和收集数据。在现实世界中,建模是事后的想法,工程经理知道这一点。

ML devops 就是你在云上运行你的模型所做的事情。租用计算时间是要花钱的,所以人们有时不会在他们的个人项目中这样做。但是如果你能负担得起,熟悉一下基础知识是值得的。从 PaperspaceFloyd 开始介绍在云上运行 ML。

诚实的工程师经常忽视人际关系网,因为他们认为他们应该仅凭自己的技能被录用。现实世界不是这样的,尽管它应该是这样的。所以要和人们交谈。我会在以后的文章中写更多关于这部分的内容。

请求帮助

有些步骤你自己很难做到。学校不擅长教授数据准备、ML devops 或网络。大多数人在工作中学习这些东西,或者如果幸运的话,从导师那里学习。很多人根本就没学过。

但是,在一般情况下,如何弥合这一差距呢?当你需要一份工作来获得经验的时候,没有经验的你如何获得一份工作?

这里有一个提议:如果你已经完成了 fast.ai 或同等课程,并且有几个你已经建立的个人项目,请随时与我联系,我会尽我所能给你提供你所缺少的建议。你可以在发邮件到找我。com,或者在 Twitter 上 DM 我( @_edouardharris )。

冷启动问题:如何建立你的机器学习组合

原文:https://towardsdatascience.com/the-cold-start-problem-how-to-build-your-machine-learning-portfolio-6718b4ae83e9?source=collection_archive---------0-----------------------

我是一名物理学家,在 YC 的一家初创公司工作。我们的工作是帮助新毕业生获得他们的第一份机器学习工作。

不久前,我写了关于的文章,你应该做些什么来获得你的第一份机器学习工作。我在那篇文章中说,你应该做的一件事是建立你个人机器学习项目的投资组合。但是我遗漏了如何实际做到这一点的部分,所以在这篇文章中,我将告诉你如何做到。[1]

因为我们的创业公司所做的事情,我已经看到了数百个个人项目的例子,从非常好到非常差。让我告诉你两个非常好的例子。

全押

接下来的是一个真实的故事,除了为了隐私我改了名字。

X 公司使用人工智能来提醒杂货店该订购新库存了。我们有一个学生,罗恩,他真的想在 X 公司工作。罗恩非常想在 X 公司工作,事实上,他建立了一个个人项目,100%致力于让他在那里面试。

我们通常不建议像这样全押一家公司。如果你刚开始,这样做是有风险的。但是——就像我说的——Ron真的想在 x 公司工作。

那么罗恩建造了什么?

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

The red bounding boxes indicate missing items.

  1. 罗恩开始用胶带把他的手机粘在一辆购物车上。然后,他开着手推车在一家杂货店的过道里来来回回,同时用相机记录下过道的情况。他在不同的杂货店这样做了 10-12 次。
  2. 一回到家,罗恩就开始构建一个机器学习模型。他的模型识别了杂货店货架上的空白点——货架上玉米片(或其他任何东西)不见的地方。
  3. 最棒的部分来了:Ron 在 GitHub 上,在完全公开的情况下,实时构建了他的模型。每天,他都会改进自己的回购协议,并在回购协议的自述文件中记录这些变化。
  4. 当 X 公司意识到罗恩在这么做时,X 公司被激起了兴趣。不仅仅是好奇。事实上,X 公司有点紧张。他们为什么会紧张?因为罗恩在不知情的情况下,在几天内,复制了他们专有技术的一部分。[2]

X 公司非常有能力,他们的技术在同行业中名列前茅。尽管如此,在 4 天之内,Ron 的项目引起了 X 公司 CEO 的直接关注。

试点项目

这是另一个真实的故事。

Alex 是历史专业,辅修俄罗斯研究(真的)。对于一个历史专业的学生来说,不同寻常的是,他对机器学习产生了兴趣。更不寻常的是,尽管他从未写过一行 Python 代码,但他决定学习它。

亚历克斯选择通过构建来学习。他决定建造一个分类器来检测战斗机飞行员是否在飞机上失去意识。亚历克斯想通过观看飞行员的视频来发现这一点。他知道当飞行员失去知觉时,人很容易通过观察来判断,所以亚历克斯认为机器也应该可以判断。

以下是亚历克斯在几个月的时间里所做的事情:

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

A demo of Alex’s G-force induced loss-of-consciousness detector.

  1. 亚历克斯在 YouTube 上下载了飞行员驾驶飞机的所有视频剪辑,都是从驾驶舱拍摄的。(如果你想知道,这里有几十个这样的片段。)
  2. 接下来,他开始标记他的数据。Alex 建立了一个 UI,让他滚动浏览数千个视频帧,按下一个按钮表示“有意识”和另一个按钮表示“无意识”,并自动将该帧保存在正确标记的文件夹中。这个标签非常非常无聊,花了他很多很多天。
  3. 亚历克斯为图像建立了一个数据管道,将飞行员从驾驶舱背景中裁剪出来,使他的分类器更容易专注于飞行员。最后,他建立了意识丧失分类器。
  4. 在做这些事情的同时,Alex 在社交活动中向招聘经理展示了他的项目快照。每次他拿出他的项目展示(在他的手机上),他们都问他是怎么做的,他建的管道,他是怎么收集数据的。但是他们从来没有抽出时间来询问他的模型的准确性,低于 50%。

当然,亚历克斯计划提高他的准确性,但他在得到机会之前就被录用了。事实证明,对公司来说,他的项目的视觉冲击力,以及他在数据收集方面的不懈努力,比他的模型实际上有多好更重要。

我说过亚历克斯主修历史,辅修俄罗斯研究吗?

他们的共同点是

是什么让罗恩和亚历克斯如此成功?以下是他们做对的四件大事:

  1. **罗恩和亚历克斯在造型上没花多少功夫。**我知道这听起来很奇怪,但是对于现在的许多用例来说,建模是一个已经解决的问题。在真正的工作中,除非你在做最先进的人工智能研究,否则你会花 80-90%的时间清理你的数据。为什么你的个人项目会不同?
  2. **罗恩和亚历克斯收集了他们自己的数据。**正因为如此,他们最终得到的数据比你在 Kaggle 或 UCI 数据库中找到的数据更乱。但是处理混乱的数据教会了他们如何处理混乱的数据。这也迫使他们比从学术服务器上下载数据更好地理解数据。
  3. 罗恩和亚历克斯制作了视觉上的东西。面试不是让一位无所不知的评委客观地评估你的技能。面试是向另一个人推销自己。人类是视觉动物。所以,如果你拿出手机,向面试官展示你做的东西,确保你做的东西看起来有趣是值得的。
  4. **罗恩和亚历克斯的所作所为看起来很疯狂。**这太疯狂了。正常人不会用胶带把手机粘在购物车上。正常人不会花时间从 YouTube 视频中剪辑飞行员。你知道谁会这么做吗?愿意不惜一切代价完成工作的人。还有公司真的真的想雇佣那些人。

罗恩和亚历克斯所做的可能看起来像是太多的工作,但实际上,这并不比你在真正的工作中所期望做的多。这就是全部要点:当你没有做 X 的工作经验时,招聘经理会寻找你做过的模拟做 X 的工作经验的事情。

幸运的是,你只需要在这个层次上做一两次项目——Ron 和 Alex 的项目在他们所有的采访中被反复使用。

因此,如果我必须用一句话来总结一个伟大的 ML 项目的秘密,那就是:用一个有趣的数据集构建一个项目,这个数据集需要花费明显的努力来收集,并使它尽可能具有视觉冲击力

如果你有一个项目想法,但你不确定它是否好——在 Twitter 上问我!我的句柄是 @_edouardharris ,我的 DMs 是打开的:)


[1]如果你想知道为什么这很重要,那是因为招聘经理试图通过查看你的履历来评估你。如果你没有记录,个人项目是最接近的替代品。

[2]当然,罗恩的尝试远非完美:X 公司在这个问题上投入的资源比他多几个数量级。但这是足够相似的,他们很快要求罗恩把他的回购私有化。

人工智能的冷启动问题

原文:https://towardsdatascience.com/the-cold-start-problem-with-artificial-intelligence-49938ed3f612?source=collection_archive---------4-----------------------

为什么公司在实施人工智能方面举步维艰,以及如何克服它。

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

Humans are still necessary…right?

如果你在过去的三四年里成为了一名数据科学家,并且你没有经历过 20 世纪 90 年代或 21 世纪初,甚至 20 世纪 10 年代的大部分时间,有时很难想象事情发生了多大的变化。如今,我们使用 GPU 驱动的数据库来查询数十亿行,而我们过去如果能够生成每日汇总报告就已经很幸运了。

但是,随着我们已经习惯于拥有数据和商业智能/分析,一个新的问题正在阻止热切的数据科学家将他们正在使用的算法应用于玩具问题,并将它们应用于实际的现实生活中的商业问题。其他智慧被称为人工智能的冷启动问题。在这篇文章中,我讨论了为什么公司在实施人工智能上挣扎,以及他们如何克服它。

从数据开始

任何想要利用人工智能的公司,无论是初创公司还是企业,都需要确保他们有实际有用的数据来开始。一些公司可能满足于其应用程序或网站生成的简单日志数据,而希望能够使用人工智能来增强其业务/产品/服务的公司,应该确保他们正在收集的数据是正确的数据类型。根据您所在的行业和业务,正确的数据类型可以是日志数据、事务数据、数字数据或类别数据,这取决于处理数据的人员来决定需要什么样的数据。

除了收集正确的数据,另一个重要的步骤是确保你使用的数据是正确的。这意味着这些数据真实地代表了所发生的事情。如果我想要所有支付交易的计数,我需要知道交易的定义是什么,它是发起的交易还是处理的交易?一旦我回答了这个问题,并确保组织同意,我可以使用它来工作。

随着 SCRUM 的广泛采用和频繁发布,公司不得不投入资源来确保数据的正确性。公司可能会添加新的数据源、对记录的数据产生影响的代码更改,甚至是 GDPR 或 PSD2 等外部影响,这可能会导致数据被更改,因为数据需要更加安全或以不同的方式存储。通过确保在每个过程中确保数据的正确性,只有这样,您才能进入下一个分析阶段。

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

SQL Query Result a.k.a. Raw Data

将数据转化为分析

尽管人工智能目前是每个人都在谈论的话题,但在我们到达那里之前,我们仍然必须采取一个中间步骤,这就是分析。我所说的分析,是指对数据或统计数据进行系统的计算分析。在大多数公司中,实现数据可视化的过程可能鲜为人知,但它对每个部门的影响是巨大的。

分析是数据或统计的系统计算分析。

公司需要确定哪些关键绩效指标(KPI)真正推动了业务的发展。在支付行业工作,我的 KPI 包括已处理收入、交易成本、利润、授权率、退款率、欺诈和许多其他为我提供管理业务绩效信息的指标。对于打车应用,KPI 可能包括收入、利润、平均接车时间、平均乘车时间、活跃用户和活跃司机。

从这些 KPI 中,公司可以决定业务用户需要什么类型的报告或仪表板来做出明智的决策,并自动对数据或统计数据进行系统的计算分析。

但是,随着数据量从 KB 增加到 TB,并且业务用户越来越多地查看数据的汇总报告和可视化,检测较小问题的机会大大减少。只有到那时,实施人工智能才能成为一项值得投资的时间和资源。

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

Executive Summary Dashboard — Looker

从分析到人工智能

确定了有助于引导业务的 KPI 后,人工智能可以用来改进这些 KPI。在这种情况下,人工智能是理性的代理,它使用算法来实现特定场景的最佳结果。

例如,支付行业的授权率对于大型商家来说非常重要,因为他们每天处理数百万笔交易,拥有最高授权率的 PSP 可以决定一笔交易的成败,或者在大型商家获得流量与否的情况下。

通过每天跟踪授权率,我们能够计算出我们的性能随时间的变化情况。因为我们的分析已经确定,通过不同的收单银行进行交易会导致两种不同的 KPI。我们可以使用人工智能来学习在哪个场景中一家收单银行的表现优于另一家,并自动将交易路由到表现最佳的收单银行。

由于我们实施的人工智能模型和逻辑对授权率有积极影响,因此相关的 KPI 也会受到影响。因为较高的授权率导致较高的处理收入,从而导致较高的利润。

公司与人工智能斗争的原因

那么公司为什么要纠结 AI 呢?我认为,技术的快速发展已经导致许多公司有点不知道他们应该专注于什么。从数据中心到云,从网络到移动网络到原生应用,从大数据到人工智能,这种转变对企业公司来说并不容易。尤其是首席财务官和首席技术官之间的讨论,他们一方希望降低成本,另一方希望拥有尽可能好的技术供自己使用,这可能会导致优柔寡断,从而无法做出决策。

我认为公司与人工智能斗争的另一个原因是,缺乏人工智能可以产生影响的证据,导致很多人认为这只是一场炒作,最终会消失。包括金融服务、运输和保险在内的许多行业已经使用数据和计算机化的决策对其业务产生影响,但许多其他没有相同数据水平的行业更难相信人工智能能够对其业务产生影响。

如何克服人工智能的冷启动问题

正如业务的数字化需要不同的思维方式一样,算法化也需要不同的思维方式。随着每个人都可以使用技术,竞争加剧,许多行业已经商品化。作为一家公司,采用人工智能的思维模式,并采取相应的行动,是克服人工智能冷启动问题的第一步,但也是最关键的一步。

新技术创业公司更容易,因为没有历史,公司里没有人需要被说服这是必要的。因此,从初创公司设计和编写应用程序的那一刻起,采用人工智能思维将对将要做出的决策以及如何使用数据来建立更好的业务/产品/服务产生巨大影响。

现任者面临着更大的挑战。因为即使高层管理人员可能会相信,走谷歌、亚马逊和微软的路线,成为人工智能优先,是一条路要走,大多数员工不会轻易被说服。和任何项目一样,确保每个人都参与进来是成功的关键因素。

所以真正的问题变成了,我们该怎么办?

从过去的商业变革中,我们知道真正的变革来自内部。通过采用人工智能思维模式,管理可以对组织的其他部分产生重大影响。但是,实际的人工智能项目专注于使用人工智能来改变一个过程,在那里你将能够改变人们的看法。当然,启动一个不会影响你做生意的方式的一次性人工智能项目是不会成功的。最好是启动多个人工智能项目,处理业务的不同部分,对冲你的赌注,但也鼓励在整个组织内分享最佳实践。

人工智能和数据科学家的未来

随着数据科学和数据科学家的职业开始进入商业领域,我看到了很多机会。随着谷歌、亚马逊和微软等公司对云计算的访问越来越便宜,这一基础设施上的能力和工具不断增加,训练、部署和开发人工智能模型变得非常容易,数据科学家的真正角色将是真正理解你试图解决的问题,然后找出解决问题所需的工具和模型。这将产生数据科学家,他们必须成为领域专家,而不是只关注他们提出的解决方案的“数据科学”部分。

这并不意味着数据科学家不知道什么算法最适合某个特定的问题,这只是意味着他们需要完全理解这个问题,它与客户、业务目标和数据集的独特组成的关系,然后将数据科学和他们的领域专业知识结合起来,以改进 KPI 和底层业务。

感谢阅读;),如果你喜欢它,请点击下面的掌声按钮,这对我意义重大,也有助于其他人了解这个故事。让我知道你的想法,联系推特或 T2 的 Linkedin。或者关注我,阅读我关于数据科学、支付和产品管理的每周帖子。

即将到来的医疗革命

原文:https://towardsdatascience.com/the-coming-healthcare-revolution-e48ea06a12df?source=collection_archive---------6-----------------------

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

We won’t be needing these soon to be obsolete, 20th century tools!

我们正处于健康革命的边缘。

几个世纪以来,医学一直是精英专业人士的领域,他们经过多年的学习,掌握了使人恢复健康的知识。日复一日,他们看着患有各种疾病的病人:受伤后再次恶化的膝盖,胃部剧痛或嗡嗡作响的头痛。

随着抗生素在 21 世纪掀起医学革命,人们开始将我们当前的医疗体系视为解决他们身体面临的任何问题的一种方式:如果你生病了,你就去看医生。如果你没有生病,不要担心——生活太忙了,没有理由特意去看医生,尤其是对年轻健康的人来说。

虽然这些专业人员是**拯救生命和无私的英雄,**他们所见患者的性质使他们的工作变得更加困难。病人的反应性很强,他们只有在已经患病的情况下才会寻求治疗,这使得医生扮演了一个不值得羡慕的角色,成为反应性疾病战士,寻找对抗隐性感染的工具。

照片显示带着剧烈的胃痛去了医院。你不仅可能要等几个小时才能看到医生;但是你冒着你的医生在诊断你的疾病时成为人为错误的牺牲品的风险,导致处方在最好的情况下不会解决你的问题,在最坏的情况下会加剧它们。

这种人为错误只会随着医生负担过重而增加。在中国,每 1000 人中只有 1.5 名医生(大约是北美的一半),病人们来到城市,在医院外扎营等待看病。难怪中国医生偶尔会犯判断失误的错误,他们几乎不能在停车场找到自己的车而不被未治疗的人包围!

问题的一部分在于,患者一般*不会质疑医生的诊断。*他们为什么要这么做?患者没有对自己健康的知识或洞察力来质疑训练有素的专业人员的判断。由于没有反映他们身体整体健康状况的实时数据,病人必须将所有的权力交给医生。

相比之下,医疗保健记录令人沮丧地孤立且低效,你的医生可能会错过你过去医疗中的关键信息,这可能导致对潜在致命疾病的误诊。事实上,仅去年一年,美国就有 250,000 例死亡可直接归因于协调不当的护理。虽然医疗记录目前正在向电子形式过渡,但这种过渡可能会慢得令人沮丧。目前,大量的患者数据都是纸质的,由于医生的笔迹难以辨认,要将我们所有的数据都放在一个容易访问的地方还需要一段时间。

这就是说,病人对自己的健康缺乏控制和了解。与此同时,令人沮丧的是,医生经常重复工作。我们非常接近解决这两个问题。两个主要趋势正在结合在一起,将永远改变我们对待健康和医学的方式:个人数据将被推回给患者,允许更积极的行为来改善健康和避免疾病,而人工智能将使医生更加准确和高效。

在未来,这两种趋势将允许实时健康数据转化为基于您个人健康状况的有意义的见解,并将为您提供日常建议,使您更加健康,避免潜在的疾病。让我们检查这两者,并从将数据返回给消费者开始。

把数据放回你的手中

在人类历史的大部分时间里,人类不得不依靠自己的直觉来理解我们何时需要医疗。如果你感到不舒服,你会寻求治疗。

互联网目前允许你在任何你喜欢的地方寻求在线咨询。智能手机等技术使人们能够使用前所未有的实时数据来监控自己的健康。然而,目前缺少的是在任何给定时间对医疗记录的即时和无限制的访问,以及与信任的个人快速共享这些记录的能力。

这种对信息的永久访问将通过更好地了解您的个人健康状况以及它在您一生中的变化来减少您个人治疗中的低效。与此同时,通过可信的中介数据库与他人共享电子医疗档案,将能够利用数百万个数据点训练医疗算法,释放基于年龄、性别和基因构成的丰富洞察力,所有这些都基于像你一样的其他人的数据。

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

A better doctor than Dr. Phil

虽然这种将数据推回给消费者的进步似乎不是革命性的,但它确实减少了物理医生诊断个人和监控复杂疾病的需要。像表带这样的简单可穿戴技术现在可以包含医疗级心脏监护仪,从而可以检测和诊断心律失常。同样,糖尿病应用程序可以监控食物摄入量和血糖水平,减少坏疽等长期伤害的可能性。

由于可以方便地访问医疗记录、历史和做好事情的强烈动机,患者能够发现医生建议中的错误,作为对医生目前掌握的健康信息权力平衡的检查。为了更好地实现这一点,苹果公司最近制定了计划,要求各组织使用智能手机下载自己的医疗记录。

最后,跟踪我们日常行为的应用程序让我们更好地了解我们的行为如何影响我们的整体健康。MyFitnessPal 和类似的应用程序可以轻松跟踪营养和卡路里,让我们看到我们的活动水平和食物消耗对我们健康的影响,并在我们偏离轨道时发出温和的警告。最后,当我们在晚餐后伸手拿第二块蛋糕时,有东西让我们负责任!

越来越多的信息被传回给患者,这使得诊断、主动性和疾病管理变得更好。我们只是刚刚开始这项在病人指尖随时获取实时健康数据的实验。然而,随着复杂性和数据流呈指数级增长,我们很快就会被大量可用的数据淹没。谁有时间分析所有这些信息,以便提出改善个人健康的见解?这就是人工智能的用武之地。

算法现在会看到你

让患者负责自己的健康史的另一个好处来自于数据的生成和汇总。共享来自可穿戴设备和智能手机的数据可以在越来越多的数据上训练人工智能,从而更容易看到其他具有类似疾病和健康状况的人,以及他们对不同治疗的反应。这些信息是非常强大的,因为它允许你为你的个人需求寻求治疗,同时减少对医生诊断的需求。

算法不仅有助于将信息反馈给病人。目前,医生最好能表现得更像电脑。即使是最好的医生也容易健忘或分心。这就是为什么像清单这样简单的东西,最低级的自动化形式,可以大大减少错误。事实上,数据显示,基本清单的实施(包括手术患者身份和身体部位的验证、手术环境和设备无菌性的确认以及所有医疗工具的术后清点)显著减少了医疗过程中的错误*。*

此外,每年都有这么多新的医学证据出现,让医生跟上信息的洪流是不现实的。即使是最好的医生,专注于医学研究结果的一小部分,也很难阅读和整合所有的结果。仅在 2014 年,就有 75 万篇医学研究发表。在这些研究中, 150,000 基于癌症治疗。对于研究癌症的医生来说,期望他们能够消化所有的信息并将其整合到他们的实践中是荒谬的。另一方面,计算机擅长分析大量复杂数据以获得洞察力,这些洞察力可以转化为新的最佳实践,并通过简短的声音片段和温和的提醒直接提供给医生。

今天这已经开始发生了。北京协和医院的眼科医生于说,她过去常常要花两天时间来分析患者的眼睛,仔细检查模糊的图像,然后与同事讨论她的发现并撰写报告。医院目前正在测试的人工智能软件可以帮助她更快地完成所有这些工作。

随着卫生系统因人口增长和老龄化的压力而不堪重负,世界各地的医院已经开始认真讨论人工智能是否可以减轻机械、重复工作的负担。这种医学方法——算法充当医生的工具,减少人为错误,缩短诊断常规疾病的时间——是我们的医疗保健系统在短期内将如何转型。例如,谷歌的母公司 Alphabet 已经在接受识别癌组织和视网膜损伤的训练,并且正在迅速变得比最有知识的人类专家更准确。目前,标记癌症图像可能需要几个小时,并且通常由医生在传统工作时间之后完成,这带来了不必要的压力。通过快速准确地标记癌症,人工智能已经显示出其巨大的潜力,可以消除医生工作中最常规和最细致的部分。

**然而,**医疗保健领域的权力从人类转移到算法的一个潜在后果是无菌性增加。安慰剂效应是真实存在的,病人经常向医生寻求希望。研究表明,如果人们与医生有密切的私人关系,他们更有可能遵循处方治疗。此外,人们对机器诊断持怀疑态度:2010 年发表在《健康事务》上的一项研究发现,消费者不相信医生可以提供不合标准的医疗服务。相比之下,他们认为严格基于证据和指南的护理——作为一个自动化医疗护理系统,显然是这样的——是为最低共同标准量身定制的,只符合最低护理标准。因此,未来医生的角色将越来越多地从人工智能程序的大量手工护理选项中进行选择,并以个人化、移情的方式提供护理。

完全整体化:…的药的未来

当前医学的问题是,从根本上说,它是被动的,而不是主动的。我们现在的制度是为了对抗疾病,而不是养活一个人;它将具体数据(如胆固醇水平和心率)视为健康的决定性指标,并等待疾病发作后再采取行动“解决问题”。由此可见,传统医学在 21 世纪初已经是只见树木不见森林。

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

Oh, what a pretty tree! doesn’t notice burning forest fire

应该说,在治疗急性疾病时,这种被动采取行动解决问题的做法是有意义的。然而,当涉及到糖尿病、肥胖症或多动症等慢性健康问题时,你必须积极主动地解决疾病的根本问题。

根据主要科学家的说法,环境毒素和完全缺乏营养的食物已经导致了一系列的健康问题。这些因素,加上当今社会的疯狂状态——快,看看这条突发新闻!不,看看这封你老板发来的紧急邮件!等等,亚马逊在打折,你真的需要买这双鞋!造成了一系列无法用传统方法治疗的健康问题。换句话说,我们的医疗系统必须借鉴古代医疗从业者的智慧,他们承认身体、思想、精神和社区之间有着深刻的相互联系,以应对我们当前的健康挑战。幸运的是,新兴技术将为我们提供解决当前问题的工具;另一方面,为了有效地使用这些工具,需要思维方式的重大转变。我们需要让我们目前的医疗系统继续发挥其优势,同时利用新技术开辟积极治疗的新途径,以减少对急性护理的需求。

让我们来看看这个新系统会是什么样子。以生活在 2045 年的 62 岁妇女佩内洛普为例。

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

This is Penelope with her grandchildren. Aren’t they cute?

佩内洛普在早上 7 点 23 分准时被一声轻柔的闹钟吵醒,当她的身体传感器发现她已经离开最后一轮快速眼动睡眠时,闹钟就会被触发。根据佩内洛普需要的最佳睡眠时间,根据数百万与她年龄和健康状况相似的女性的数据,这种闹钟被训练成响起。

在淋浴和使用洗手间后,佩内洛普家中的智能传感器发现她的粪便中缺乏纤维和维生素 C。虽然目前没有危险,但如果不加以解决,这些缺陷可能会导致长期慢性消化问题,甚至坏血病。她的个人人工智能助理给了她一个微妙的建议,在她的正常早餐中加入一杯橙汁,午餐加入豌豆汤,这两种食物都将她的缺陷提高到健康水平。

早餐是热燕麦片和新鲜浆果,还有一杯橙汁,佩内洛普的助手提醒她每天的体育活动——瑜伽课。这个课程是在她的人工智能注意到佩内洛普在照看她的孙子孙女后挣扎着捡起地上的玩具后推荐的,并且是为了增加灵活性和避免关节炎而推荐的。

瑜伽之后,佩内洛普坐下来喝了一碗美味的豌豆汤。当她吃东西时,她注意到手机上有一个警报——她的人工智能已经识别出一颗痣,在过去的两个月里,这颗痣已经微妙地长了 0.3 毫米!根据对类似痣的追踪数据,佩内洛普的助手称,佩内洛普有 1.3%的癌症肿瘤风险;不太重要,但仍然值得研究。佩内洛普从她的口腔中取样,并将唾液样本直接送到当地医生的办公室,在那里一个小时内癌症检测结果呈阳性。

虽然最初很担心,但 Penelope 冷静下来,因为她意识到这是早期发现的,并不是一个主要问题。当她进入一辆自动驾驶汽车带她去当地医院时,她的人工智能助理建议进行正念练习,并辅以平静的自然声音,以减轻压力。出于显而易见的原因,这些诊断往往是令人紧张的事情!

到达医院后,Penelope 被直接允许进入一个房间,由人工智能医生通过血液扫描确认最初的诊断。从那里,一名人类医生进入房间,并引导她完成即将到来的程序——一个小手术,将在癌症肿瘤开始扩散之前将其移除。他用抚慰、同情的声音向她保证,这是完全正常的,因为发现得这么早,不会有任何风险。

一个小时内,手术完成(完全由机器人手术设备完成),痣已经被移除。当佩内洛普回家时,她的人工智能提醒她给一个已经有一段时间没联系的朋友打电话。知道维持重要的关系对心理健康至关重要,人工智能的建议在这个时候是恰当的。佩内洛普从这令人烦恼的一天开始就有短暂抑郁的风险,和老朋友的一次快速视频通话让她振作起来。

在助手的再次推荐下,佩内洛普吃了一顿健康的晚餐,包括清淡的沙拉、烤鸡和糙米,她在手持设备上查看自己的个人医疗记录。她的医疗记录很全面,包括她的家庭、儿童疾病和个人健康风险的记录。她的主动手术已经被记录下来,她的助手根据她所在年龄段的 153,658 名在过去 5 年内做过完全相同手术的人的数据,推荐了最佳恢复做法。当佩内洛普准备睡觉时,她再次提醒自己生活在 2045 年是多么幸运。

这个现实可能很快就会降临到我们头上。专注于将疾病扼杀在萌芽状态,人类将能够过上更幸福、更长寿和更有成效的生活。在考虑了医疗保健的未来之后,问自己以下问题。

1.为了训练算法为每个人提供更好的医疗服务,你愿意把私人医疗信息交给企业吗?

2.如果我们通过主动治疗来“解决”衰老问题,将人类寿命延长 50-100 年或更长时间,会发生什么?

3.2068 年的医院里有人类医生的位置吗?

基于 LDA 的 Python 主题抽取综述

原文:https://towardsdatascience.com/the-complete-guide-for-topics-extraction-in-python-a6aaa6cedbbc?source=collection_archive---------3-----------------------

使用 LDA(潜在狄利克雷分配)从文档语料库中抽取主题

自然语言处理中一个反复出现的主题是通过主题抽取来理解大型文本语料库。无论是分析用户的在线评论、产品描述还是搜索栏中输入的文本,理解关键主题总是会派上用场的。

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

Popular picture used in literature to explain LDA

在进入 LDA 方法之前,让我提醒你不要重新发明轮子,寻求快速解决方案通常是最好的开始。有几个提供商有很好的主题提取 API(并且在一定数量的调用下是免费的):谷歌微软含义云 …这三个我都试过了,都工作得很好。

但是,如果您的数据非常具体,并且没有通用的主题可以表示它,那么您将不得不采用更加个性化的方法。本文主要关注其中一种方法: LDA

了解 LDA

直觉

LDA ( 潜在狄利克雷分配的缩写)是一个无监督的机器学习模型,它将文档作为输入,并将主题作为输出。该模型还显示了每个文档谈论每个主题的百分比。

主题被表示为单词的加权列表。主题示例如下所示:

花* 0.2 |玫瑰* 0.15 |植物* 0.09 |…

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

Illustration of LDA input/output workflow

该模型有 3 个主要参数:

  • 主题的数量
  • 每个主题的字数
  • 每个文档的主题数

实际上,最后两个参数在算法中并不完全是这样设计的,但我更喜欢坚持使用这些更容易理解的简化版本。

履行

【最后分享专用 Jupyter 笔记本】

在这个例子中,我使用了来自 BBC 网站的文章数据集。

为了用 Python 实现 LDA,我使用了包 gensim

A simple implementation of LDA, where we ask the model to create 20 topics

之前显示的参数是:

  1. 主题的数量等于 num_topics
  2. 每个主题的字数由 eta 处理
  3. 每个文档主题的数量由 alpha 处理**

要打印找到的主题,请使用以下内容:

**0: 0.024*"base" + 0.018*"data" + 0.015*"security" + 0.015*"show" + 0.015*"plan" + 0.011*"part" + 0.010*"activity" + 0.010*"road" + 0.008*"afghanistan" + 0.008*"track" + 0.007*"former" + 0.007*"add" + 0.007*"around_world" + 0.007*"university" + 0.007*"building" + 0.006*"mobile_phone" + 0.006*"point" + 0.006*"new" + 0.006*"exercise" + 0.006*"open"1: 0.014*"woman" + 0.010*"child" + 0.010*"tunnel" + 0.007*"law" + 0.007*"customer" + 0.007*"continue" + 0.006*"india" + 0.006*"hospital" + 0.006*"live" + 0.006*"public" + 0.006*"video" + 0.005*"couple" + 0.005*"place" + 0.005*"people" + 0.005*"another" + 0.005*"case" + 0.005*"government" + 0.005*"health" + 0.005*"part" + 0.005*"underground"2: 0.011*"government" + 0.008*"become" + 0.008*"call" + 0.007*"report" + 0.007*"northern_mali" + 0.007*"group" + 0.007*"ansar_dine" + 0.007*"tuareg" + 0.007*"could" + 0.007*"us" + 0.006*"journalist" + 0.006*"really" + 0.006*"story" + 0.006*"post" + 0.006*"islamist" + 0.005*"data" + 0.005*"news" + 0.005*"new" + 0.005*"local" + 0.005*"part"**

【前 3 个话题显示其前 20 个最相关的词】 话题 0 好像是关于军事和战争的。
话题 1 关于印度的健康,涉及妇女和儿童。
话题 2 关于马里北部的伊斯兰教徒。

要打印文档主题的百分比,请执行以下操作:

**[(14, 0.9983065953654187)]**

第一个文档 99.8%是关于话题 14 的。

预测未知文档的主题也是可行的,如下所示:

**[(1, 0.5173717951813482), (3, 0.43977106196150995)]**

这份新文件 52%谈到了主题 1,44%谈到了主题 3。请注意,4%不能被标记为现有主题。

探测

有一个很好的方法来可视化您使用包 pyLDAvis 构建的 LDA 模型:

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

Output of the pyLDAvis

这种可视化允许您在两个缩减的维度上比较主题,并观察主题中单词的分布。

另一个很好的可视化方式是根据主题以对角线格式显示所有文档。

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

Visualization of the proportion of topics in the documents (Documents are rows, topic are columns)

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

Topic 18 is the most represented topic among documents: 25 documents are mainly about it.

如何成功实施 LDA

LDA 是一种复杂的算法,通常被认为难以微调和解释。事实上,使用 LDA 获得相关结果需要对它的工作原理有深入的了解。

数据清理

你在使用 LDA 时会遇到的一个常见问题是,单词会出现在多个主题中。解决这个问题的一个方法是将这些单词添加到你的停用词表中。

另一件事是复数和单数形式。我会推荐词干化——或者词干化,如果你不能词干化,但是你的主题中有词干不容易理解。

删除包含数字的单词也将清理主题中的单词。保持年份(2006,1981)可能是相关的,如果你认为它们在你的主题中是有意义的。

过滤出现在至少 3 个(或更多)文档中的单词是删除与主题无关的罕见单词的好方法。

数据准备

包括二元和三元语法,以掌握更多相关信息。

另一个经典的准备步骤是使用词性标注(词性:词性)只使用名词和动词。

微调

  • 话题数量:尝试几个话题数量,以了解哪个数量有意义。你实际上需要看到主题,才能知道你的模型是否有意义。至于 K-Means,LDA 收敛并且该模型在数学水平上有意义,但是它不意味着在人类水平上有意义。
  • 清理你的数据:在你的主题中添加过于频繁的停用词,并重新运行你的模型是一个常见的步骤。只保留名词和动词,从文本中删除模板,反复测试不同的清理方法,会提高你的主题。准备在这里呆上一段时间。
  • 阿尔法预计到达时间。如果你对技术不感兴趣,忘掉这些吧。否则,你可以调整阿尔法和埃塔来调整你的主题。从“auto”开始,如果主题不相关,尝试其他值。我建议使用较低的 Alpha 和 Eta 值,以便每个文档中有少量的主题,每个主题中有少量的相关单词。
  • 增加道次数量,拥有更好的模型。3 或 4 是一个很好的数字,但你可以更高。

评估结果

  • 你的主题是可解释的吗?
  • 你的主题独特吗?(两个不同的题目用词不同)
  • 你的话题详尽吗?(你所有的文档都很好的表现了这些主题吗?)

如果你的模型遵循这三个标准,它看起来就是一个好模型:)

LDA 的主要优势

它很快

使用 Jupyter 中的 %time 命令进行验证。该模型通常运行速度很快。当然,这取决于你的数据。有几个因素会降低模型的速度:

  • 长文档
  • 大量文件
  • 大词汇量(尤其是当你使用 n 元语法时)

这很直观

将主题建模为单词的加权列表是一种简单的近似,但如果你需要解释它,这是一种非常直观的方法。没有嵌入也没有隐藏的维度,只有一袋袋有重量的文字。

它可以预测新的看不见的文档的主题

一旦模型运行,它就可以为任何文档分配主题了。当然,如果你的训练数据集是英文的,而你想预测中文文档的主题,这是行不通的。但是,如果新文档具有相同的结构,并且应该有或多或少相同的主题,它就可以工作。

LDA 的主要缺点

大量微调

如果 LDA 运行速度很快,要用它获得好的结果会给你带来一些麻烦。这就是为什么提前知道如何微调真的会对你有帮助。

它需要人类的解释

话题是由机器发现的。为了向非专业人士展示结果,人们需要对它们进行标记。

你不能影响话题

知道你的一些文档讲的是你知道的一个话题,而在 LDA 找到的话题里找不到,肯定会很沮丧。并且没有办法对模型说一些单词应该属于一起。你必须坐下来等着 LDA 给你你想要的。

结论

LDA 仍然是我最喜欢的主题提取模型之一,我已经在很多项目中使用了它。但是,需要一定的练习才能掌握。这就是我写这篇文章的原因,这样你就可以跳过使用 LDA 的门槛,毫无痛苦地使用它。

代码:https://github . com/Felix shop/medium articles/blob/master/LDA-BBC . ipynb

学习深度学习完全指南

原文:https://towardsdatascience.com/the-complete-guide-on-learning-deep-learning-72cabb30d721?source=collection_archive---------4-----------------------

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

人工智能的兴起根植于深度学习的成功。神经网络是一个广泛的算法家族,形成了深度学习的基础。神经网络的早期工作实际上始于 20 世纪 50 年代和 60 年代。就在最近,随着深度学习取得了令人印象深刻的最新成果,人们对它的兴趣又有所抬头。从图像中的物体分类到快速准确的机器翻译,再到游戏性。

在总部位于多伦多的deep pixel公司,我们致力于各种行业(目前是汽车、零售和金融)的这些新业务案例。

然而,深度学习有以下利弊。

优点:

-强大:深度学习在许多困难的学习任务上取得了比其他机器学习方法更大的进步,在许多不同的领域都取得了最先进的性能。

-深度学习进行有效的自动特征提取,减少了对这个关键问题的猜测和启发。

-当前的软件提供了灵活的架构,可以轻松适应新的领域。

缺点:

-深度学习可能需要大量的训练数据。

-深度学习可能需要巨大的计算能力。

-架构可能很复杂,通常必须针对特定应用进行高度定制。

-生成的模型可能不容易解释。

去年,大卫·文丘里发表了深入学习 15 门免费在线课程,自从吴恩达周二通过 Coursera 宣布了他新的深度学习专业,我觉得有必要将他的课程添加到这个广泛的列表中,再加上我最近遇到的几门课程。

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

Andrew Ng’s Course Page — Introduction Week

深度学习专精

骏马

等待结束了, deeplearning.ai 是五个致力于传播人工智能知识的深度学习课程的所在地,并在 Coursera 举办。周二开始了三个课程,未来几周还将增加两个课程。由深度学习顶尖头脑之一的吴恩达教授,专业包括最先进的深度学习模型,如卷积网络、RNNs、LSTM、Adam、Dropout、BatchNorm 和 Xaxier/He 初始化等等。涵盖医疗保健、自动驾驶、手语阅读、音乐生成和自然语言处理等行业。学生将在 Python 和 Tensorflow 中练习上述所有内容。

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

Udacity deep learning course page

深度学习基础纳米度

该计划与 Siraj 一起,为具有一些数学和编程背景的人提供了深度学习领域的广泛概述。利用每周视频、独家项目以及专家反馈和评论,向学生教授这种塑造未来技术的基础。当前注册已结束,但您可以加入他们的等待列表,以便在下次注册开始时得到通知。

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

deep learning course at fast.ai

程序员实用深度学习—第一部分

面向编码人员的前沿深度学习—第二部分

fast . ai

由杰瑞米·霍华德和雷切尔·托马斯教授,这个 7 周的课程是为任何至少有一年编程经验的人设计的。本课程采用“代码优先”的方法,不假设任何超出高中数学的内容,但在需要时会介绍关键的数学工具。在完成第一部分的所有 7 门课程后,学生应该能够知道如何识别人工智能机会,并开始将解决方案付诸实践。他们最近推出了 Part-2,学生将学习深度学习的最新部署,如何阅读和实现新的学术论文,以及如何解决自然语言翻译等具有挑战性的端到端问题。整个课程是免费的,但准备花几百美元在 AWS 实例上,并花大量时间调试 AWS。

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

Creative Applications of Deep Learning with TensorFlow at Kadenze

深度学习与 TensorFlow 的创造性应用

本课程涵盖深度学习的基本组件,它意味着什么,它如何工作,并开发构建各种算法所需的代码,如深度卷积网络,变分自动编码器,生成对抗网络和递归神经网络。本课程的重点不仅在于理解如何构建这些算法的必要组成部分,还在于如何应用它们来探索创造性的应用。

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

Andrew Ng is interviewing Professor Hinton

用于机器学习的神经网络

4.5 颗星(1516 个评分)

多伦多大学经Coursera

2012 年由杰弗里·辛顿教授在 Coursera 上授课。该课程向学生讲授人工神经网络以及它们如何用于机器学习,如应用于语音和对象识别、图像分割、建模语言和人类运动。然而,由于过去几年深度学习的快速发展,它已经过时了。

谷歌深度学习

Google via uda city

这是一门中高级课程。在学习本课程之前,学生应具备以下经验和技能:

  • 至少 2 年编程经验(最好是 Python 语言)
  • Git 和 GitHub 经验(分配代码在 GitHub repo 中)
  • 基本的机器学习知识(尤其是监督学习)
  • 基本统计学知识(均值、方差、标准差等。)
  • 线性代数(向量、矩阵等。)
  • 微积分(微分、积分、偏导数等。)

CS224n:深度学习的自然语言处理

斯坦福大学

该课程全面介绍了应用于 NLP 的深度学习前沿研究。它将涵盖单词向量表示、基于窗口的神经网络、递归神经网络、长短期记忆模型、递归神经网络、卷积神经网络以及一些涉及记忆成分的最新模型。

CS294:深度强化学习,2017 年秋季

加州大学伯克利分校

加州大学伯克利分校在深度学习方面做了很多出色的工作,包括著名的Caffe——深度学习框架。该课程是伯克利目前提供的深度学习课程。幻灯片和讲座都发布在网上,课程由三位出色的讲师授课。

6。S191:深度学习介绍

麻省理工

截至 2017 年 1 月,麻省理工学院开始提供各种深度学习课程。为期一周的深度学习方法介绍,应用于机器翻译,图像识别,游戏,图像生成等。这是一门协作课程,包含 TensorFlow 中的实验室、同行集思广益以及讲座。

CS 20SI:深度学习研究 tensor flow

斯坦福大学

由学生发起,虽然标题有点暗示,但课程的大部分内容是引导你完成编写 Tensorflow 程序的基础。课程笔记幻灯片突出。

CS231n:视觉识别卷积神经网络

斯坦福大学

同样由学生发起,该课程深入探究深度学习架构的细节,重点是学习这些任务的端到端模型,尤其是图像分类。在为期 10 周的课程中,学生将学习实现、训练和调试自己的神经网络,并详细了解计算机视觉的前沿研究。期末作业将涉及训练一个数百万参数的卷积神经网络,并将其应用于最大的图像分类数据集(ImageNet)。

牛津深度学习 2015

牛津大学

该课程专注于令人兴奋的深度学习领域。通过从神经科学和统计学中汲取灵感,它介绍了神经网络,反向传播,玻尔兹曼机器,自动编码器,卷积神经网络和递归神经网络的基本背景。它说明了深度学习如何影响我们对智能的理解,并有助于智能机器的实际设计。

COS495:深度学习入门

普林斯顿大学

本课程是对称为深度学习(也称为深度神经网络)的机器学习技术的初步介绍,以及它在各种领域的应用,包括图像分类、语音识别和自然语言处理。在这一过程中,本课程还直观地介绍了一些基本概念,如监督与非监督学习、线性和逻辑回归、连续优化(尤其是梯度下降的变体)、泛化理论和过拟合、正则化和概率建模。

多伦多大学

这门课是计算机视觉的研究生研讨课程。这门课将涵盖计算机视觉和各种神经网络架构的不同主题。这将是一个互动的课程,我们将根据需要讨论有趣的话题和最新的研究热点。本课程的目标是学习不同的视觉领域,理解、识别和分析主要的挑战,什么可行,什么不可行,以及识别未来研究的有趣的新方向。

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

Professor Ali Ghodsi’s lecture in deep learning at University of Waterloo

深度学习

滑铁卢大学

Ali Ghodsi 教授关于深度学习的讲座和幻灯片现在在滑铁卢大学在线

UVA 深度学习课程

阿姆斯特丹大学

该课程特别关注计算机视觉和语言建模,这可能是深度学习理论中最知名和最令人印象深刻的两个应用。

神经网络

这是一门研究生水平的课程,涵盖基本的神经网络以及更高级的主题,包括:

深度学习。

条件随机场。

受限玻尔兹曼机器。

自动编码器。

稀疏编码。

卷积网络。

向量单词表示法。

还有更多…

【深度学习】用于自然语言处理(无需魔法)

NAACL HLT 2013上的教程

本教程旨在涵盖自然语言处理深度学习中的基本动机、思想、模型和学习算法。教程的第一部分介绍了神经网络的基础知识、神经单词向量、几种基于局部窗口的简单模型以及通过反向传播进行训练的数学和算法。教程的最后一部分给出了深度学习在 NLP 中的不同应用的概述,包括单词袋模型。

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

Deep Learning course at lynda.com

用 Keras 2.0 构建深度学习应用

Lynda.com

该课程于 2017 年 8 月 1 日发布,教授如何安装 Keras,并使用它建立一个简单的深度学习模型。探索 Keras 中包含的许多强大的预训练深度学习模型以及如何使用它们。了解如何部署 Keras 模型,以及如何在 Keras 和 TensorFlow 之间传输数据。

用 Tensorflow 构建和部署应用

该课程于 2017 年 8 月 2 日发布,教授如何安装 TensorFlow 并使用它来建立一个简单的深度学习模型。在演示了如何启动和运行 TensorFlow 之后,讲师 Adam Geitgey 演示了如何创建和训练机器学习模型,以及如何利用可视化工具来分析和改进您的模型。最后,他解释了如何在本地或云中部署模型。

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

NVIDIA Deep Learning Institute

深度学习 AI

英伟达深度学习研究院(DLI)

通过自定进度的在线实验室和讲师指导的研讨会,DLI 提供了设计、培训和部署跨各种应用领域的神经网络的最新技术的培训。学生将探索广泛使用的开源框架以及英伟达最新的 GPU 加速深度学习平台。

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

TensorFlow 与无博士深度学习—第一部分和第二部分

谷歌云

在这两个视频教程中,Martin Gorner 演示了如何构建和训练识别手写数字的神经网络。在此过程中,描述了神经网络设计中使用的一些“诀窍”,最终使他的模型的识别准确率达到 99%以上。Martin Gorner 还通过在 TensorFlow 中构建语言模型来探索递归神经网络的可能性。

对非专家有效的张量流

谷歌开发者

在这次演讲中,您将从 Martin Wicke 那里学习如何有效地使用 TensorFlow。TensorFlow 提供了像 Keras 和 Estimators 这样的高级接口,即使不是专家也可以使用。本次演讲将展示如何实现复杂的机器学习模型,并将其部署在任何支持 TensorFlow 的平台上。他还在他的 Github 上开了一个教程。

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

deep learning courses at Udemy

最后,在 Udemy 上快速搜索,你可以找到十几个深度学习课程的提供商以及相关的评级和参与者数量。它们现在都在打折,每个 10 美元。

我希望你喜欢读这篇文章,就像我喜欢写它一样。来自的杰森·布朗利——《机器学习大师》的作者的最后一个建议是:“按主题浏览和浏览讲座,不要试图上完整个课程。学习一件事,而不是尝试和学习一切。”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值