为什么我选择 C 进行回溯测试
构建日内回溯测试引擎之旅的教训
寻找最佳回溯测试方法的旅程
在过去的一年里,我一直在准备一个回溯测试引擎/框架来模拟衍生品市场的日内策略。
这个旅程包括不同的语言,几次迭代,小错误,大错误,大选择,“*合资”*和孤独的行走。从别人那里,我接受了伟大和可怕的建议。
虽然事后看来结果似乎显而易见,但事实是找到正确的方法是一个迭代过程。只是在尝试了很多东西和多次反复用真实的例子围绕这个问题之后,事情才变得明朗。
回测/模拟市场量化策略的需求和要求在某种程度上是不同的,而且,以我的拙见,它们与传统上在研究中心和大学进行的科学模拟方法有许多共同的根源。这是真的,至少对于我一直在研究的一系列问题来说是真的(量化交易行业真的很大,我绝对没有资格谈论所有的方法、策略和需求)。
我已经在几篇文章中介绍了这一旅程。从文章来看,最相关的应该是关于如何存储市场数据的文章和关于不同评估语言的文章。如果你觉得这篇文章有趣,你可能也会觉得那两篇文章有趣。
c 作为回溯测试语言
评估的语言包括 Python、Fortran、Julia 和 c。Julia 是最后一个评估的语言,我对它的潜力感到非常兴奋,但只要项目向前推进(回溯测试引擎的整个最新版本都是用 Julia 实现的),我就开始意识到这种语言有一些实际的局限性。
朱莉娅是一个有希望的发现。用 Python/Numpy/Pandas 的简单性提供 C 性能的信息非常吸引人。然而,随着我在这个项目上工作的时间越来越长,我很快意识到这种语言的某些方面并不那么直观,对于一个新手程序员来说,匹配 C 语言的性能并不容易。毫无疑问,它是一种杰出的编程语言,但是在深入研究了我正在处理的这类问题之后,我的结论是古老的 C 仍然是最好的选择。
Julia 提供了比 Python 更好的性能,但是开箱即用的速度很难与 C 或 Fortran 相媲美。速度是由编译语言提供的,但也需要某些领域的特定代码风格,这在语言的使用方式上造成了一些奇怪。这不是设计缺陷,而是试图将低级语言性能与高级语言相匹配的局限性,但这给人留下了这样的印象:虽然它不是一种复杂的语言,但需要一些经验才能掌握。可用的调试工具也没有您在更成熟的语言中发现的那些工具那么先进。
良好的 IDE 和简单的方法:成功的秘诀
我还发现,在回溯测试/模拟中真正重要的是一组例程/方法/函数和一个公共的数据仓库,以及适当的调试工具。
我再怎么强调拥有简单的方法和足够的调试工具作为在这种项目中取得成功的关键要素的重要性也不为过。这两个因素比实际的语言选择更重要。之所以需要一个合适的 IDE,是因为这些例程往往很小但很密集,而且有很深的算法性,所以很容易出错。如果没有合适的调试工具,项目很容易停滞。
A proper IDE is a key element while developing a backtesting/simulation engine. Methods tend to be concise but dense and highly algorithmic so proper debugging tools are more a need than a nice to have.
对一个合适的 IDE 的需求是我退回到 C 语言的主要原因之一——讽刺的是这是旅程的起点——但是这次是使用微软的工具。
有了更好的工具,我的背包里有了更多的经验,对问题和解决方案有了更简单的看法,C 被证明是一个更好的同事。使用 C 的要点是你需要恰当地处理项目的复杂性。如果项目太复杂,用 C 处理起来会很困难,很可能会停滞不前,但是如果你能从一个简化的角度处理问题和解决方案,C 是一个很好的伙伴。
另一个重要的教训是,我们总是倾向于把事情复杂化。几天前,一位一直在业内工作的同事在看到我正在进行的回溯测试的一些指标的截图后,与我分享了这一想法,他对引擎的速度和简单性感到惊讶。我意识到最后一次迭代的成功依赖于能够简化整个项目。
复杂性始终是一个问题。一些语言(高级语言)更能承受复杂性。他们只会让项目更加坎坷和漫长。但是在其他语言中——比如 C——复杂性肯定会扼杀任何成功的机会,因为语言的本质使得处理复杂的程序变得不可能。
On complexity of software, a great historical example is the IBM release of their OS/360 trying to work on all the IBM machines series for all kind of problems. The search for an all-purpose OS derived in millions of lines of assembly code and tens of thousands of bugs, requiring constant updates. The experiences of the project are incisively described by Frederick Brooks in his classic book “The mythical man-month”.
在旅程开始时,我们考虑为引擎提供无限的螺栓和按钮,能够处理许多配置。但是,这有意义吗?最后一次迭代非常简单,假设一个有见识的用户将在参数上设置合理的值,并且经常尝试默认值。按照这种方式,一个引擎的基本版本将只有 1000 或 2000 行代码——包括空白和注释——并且向他人解释和扩展将非常容易。如果你需要一些特定的东西,你总是有时间编写一个特定的例程来处理和。
使用简单库的方法(我在上一篇文章中已经提到并测试过)仍然是我发现的解决这个问题的最好方法。该库可以是动态链接库(DLL ),这意味着上层语言可以是更高级的语言(更适合于处理模拟的整个工作流程/图形输出)。如果你仍然想在这一层使用 C++,你可以很容易地做到这一点,但如果你觉得使用 Python、Java、C#或 Visual Basic 更好,DLL 将允许你这样做,同时让 C 来做困难的工作。
经过这几个月,我看到了一个模拟引擎,就像我看到了一个操作系统内核暴露的调用方法一样,因为量化交易中的回溯测试引擎与其他任何东西都更相似。
外卖
这种观点是主观的,但我真诚地认为这仍然是一种明智的意见。这段经历包括良好的编程背景、三年的交易策略研究和一整年的编码和测试解决方案。虽然一个经验丰富的行业专家肯定会有更多的经验,但至少要达到一些有效的点仍然需要一定量的有价值的努力。
我也总是试图在为数不多的机会中,与在这个行业有经验的人交谈,以收集尽可能多的知识。在我看来,这极大地推动了问题的解决。我认为,如果没有这些小的投入,我仍然会从错误的角度处理问题。
还值得一提的是,方法在很大程度上取决于需求。处理日常数据和为 HFT 制定三级市场数据是不一样的,需求和解决方案是不同的。
既然已经做出了适当的免责声明,我们可以回顾一下要点:
- 不干涉具有回溯测试功能的图表解决方案(Metatrader/Pro Real Time/…)。正如一位负责量化基金的同事曾经告诉我的那样:业内没人用。现在我清楚地明白了为什么。
- 专用的回溯测试/模拟软件包(如 Amibroker)可能会加快您处理问题的速度,但它们执行模拟的方式过于狭窄,并且中等复杂性策略的学习曲线很陡。它们只是比绘制解决方案更好的工具。站在他们这边,我也会说,量化领域也有认真的人在用,但据我所知,他们一般都是用日常数据做的。我个人的观点是:也不要碰这些,尤其是如果你想测试更奇特的策略或者当天交易。
- 开发定制的大型通用平台/框架。这是行不通的,它很耗时,而且你最终会做一个不太理想的工具,因为它试图太多才多艺。我们一直在做的一个任务是一个通用的 Java 回溯测试平台,9 个月后我意识到这个项目进展得不够快,没有很好地解决特定的需求;而更加有限和简陋的 C/Python 辅助项目已经展示了有希望的结果和研究道路。我们从那个项目中挑选出可重用的概念和代码块,将它们用作辅助工具。较小的项目容易向前推进。
- 使用 Jupyter 笔记本开发定制的全 Python 解决方案。这是可行的,但是它将与您正在测试的特定策略相关联。您得到了结果,但是重用组件很难,调试体验很差,并且随着仿真变得越来越复杂,处理笔记本变得很困难。无论我多么喜欢 Python 的简单性和多功能性,我不知何故开始认为 Python 生态系统可能有点被高估了。
- 使用模拟中常用的构建模块开发一个小型库/引擎。在我看来,这是正确的做法。您将最终得到一组通用的可重用组件。虽然只要您测试更多的策略,您可能就需要用更多的方法来扩展,但是这是一种获得快速成功的方式,同时在未来工作的时间方面也是一种合理的投资。在开发这个的时候,记得缩小库的范围,避免通用的目标。这意味着,如果你正在测试日内策略,集中精力。如果你的数据是 1 分钟,甚至不要考虑当你必须模拟分笔成交点数据时会发生什么,或者开始想你可能也想看周趋势。如果你需要,做另一个引擎并合并结果。
- 语言很重要。C/C++是我最终选择的模拟核心。我喜欢所有其他语言的各个方面,但我无法获得与 C 语言相同的性能。Julia 很有前途,如果正确编码,它可能可以与 C 语言的性能相媲美,但对于一般的编码人员来说——我是一个相当一般的编码人员——编写快速的 C 代码要容易得多。c 语言学习起来也更快,因为它是一种低级语言,有好得多的 IDE 和调试工具。在这一点上要明确:Fortran、Julia 和 Python 都是杰出的语言。Python 可以是日内数据的一个很好的选择,但是在我看来,它在日内的表现并不好。Fortran 真的很快,它比 C 语言更容易学习和阅读,但据我所知,这种语言没有很好的免费编译器/IDE,它在业界的使用也不像 C 语言那样广泛。Julia 在开始时光芒四射,但当我推进这个项目时,我并不太喜欢。调试再次变得困难,语言的某些方面也不是那么直观。
- IDE 和调试甚至比语言更重要。不考虑低级调试(gdb 等。)或没有合适 IDE 的语言。我花了很多时间在 BSD 工作站上工作,最后我把所有的开发都转移到了 Windows 上,因为用 Visual Studio 开发 C/C++比其他任何东西都要容易得多。一旦完成,您可以随时将代码移植到您想要的任何平台上。
- 使用两种语言:一种在工作流/表示层,另一种用于模拟(通常是 C 语言,因为它作为动态或静态库编译起来既快又容易)是一个不错的选择。这使两层之间的数据事务有点复杂,但您可以两全其美,实现简单而有效的封装(将整个引擎封装在上层使用的单个实体中)。在我看来,进一步封装不会带来任何实际的好处。
- 如果你使用 c,就不需要数据库了。我从一开始就致力于拥有一个数据库,但目前我没有使用任何数据库。我的下一个项目涉及处理分笔成交点数据,我肯定也不会考虑它(即使存储和处理分笔成交点数据要复杂得多)。尽管它们可能很有吸引力,但我对 KDB+或任何其他技术都不感兴趣,除非有人向我探究使用它们的真正好处(我指的是实际的项目好处,而不是技术优点或计算机科学抽象)。我用得越多,就越喜欢使用旧的大型机批处理方法:在模拟开始之前加载数据,用内存中的数据进行模拟,然后得到结果。如今,一台廉价的二手台式电脑的计算能力超过了几台 80 年代克雷超级计算机的总和:你只需要有效地利用上帝赋予你的巨大计算能力。
- 不要拘泥于数据科学的趋势。笔记本电脑、分布式并行框架、云 API 和所有这些晦涩难懂的东西,它们都是一流的,我确信它们在行业中有着当之无愧的地位,但它们的学习曲线和计算开销往往是一种负担,而不是帮助。需要明确的是:一个简单的日内引擎可以完美地用 ANSI C89 编写,而且会尽可能快。它将易于编写、理解和扩展,并且不需要了解十种不同 API 和技术的资源。行业和媒体充斥着各种框架、层和中间件,虽然有时你真的需要它们,但很多时候它们的使用更多地是由趋势而不是实际需求驱动的,它们最终只会带来额外的开销、陡峭的学习曲线和痛苦。
- 分而治之。需要图表解决方案来验证策略吗?为该任务编写一个小型辅助工具。需要加载自定义数据?编写一个侧程序来转换特定数据。这种编写链接在一起的小程序的概念肯定不是新的,它在 UNIX 世界中一直被强调,但是它有时被遗忘。你的任务/计划越小,你就越有机会有效地完成它们。编写小型的合作程序比构建一个单一的应用程序要容易得多。使用 DLL 作为引擎的概念简化了这项任务。
最后,反复出现的概念“少即是多“”和“*保持简单”*仍然有效。只要想一想最简单的可重复使用的解决方案,一旦你把它变得简单了,再想想如何让它变得更简单。如果某个东西不是明确可重用的,不要想如何抽象它以使其可重用,只需编写一个辅助工具或方法来处理特定的需求。这种范式适用于技术领域的大多数情况:永远不要害怕做得那么简单。
我为什么编码&咖啡
入门
关于 code & coffee 事件价值的几点思考?
我与 tech meetup 活动的历史始于威斯康星州麦迪逊,当时我正在攻读博士学位(于 2017 年 5 月完成)。当时,麦迪逊没有一个让技术人员为单个项目工作的聚会。相反,它们的结构更像是午餐学习活动。一个(或两个)演示者将就一个主题发言 20-40 分钟。主题和演讲者都提前做了广告。还有时间进行问答。总的来说,我从这些小规模的教育会议中学到了很多,我很怀念那些会议。
然后,我搬到了 DC 的华盛顿州(2018 年 7 月搬家)。在这个地区,每周至少有三次代码和咖啡聚会。北弗吉尼亚(NOVA)有一个, DC 有一个,亚历山大有一个。这些社区在全球并不罕见。
这个周末我去了 NOVA 的,那是在 CustomInk.com非常酷的办公室举办的。我也去了 DC,但是到了那里发现因为下雪取消了。我发了很多关于参加这些代码&咖啡聚会的微博。一位技术人员 Liz Gross 博士问我是不是整个周末都在编程?我回答道:
以下是我认为代码和咖啡活动有价值的更多原因
Folks working away at NOVACode & Coffee. Image Credit: “Author’s Photo” — More on attributions.
非常适合网络
为了最大限度地利用 Code & Coffee,建立关系网很重要。每个人做这件事的方式不同,没有对错之分。对我来说,我尽最大努力通过 LinkedIn 或 Twitter 与我遇到和聊天的人联系。
让你的工作不那么孤独
回想读研时,我们有这些“写作小组”最好的写作小组是每周一次的,并且包括一个每周都在那里的核心小组。最好的写作小组以一个简短的讨论开始,每个人分享他们当天想要做的事情和他们的目标。然后每个人都开始工作。同样,Code & Coffee 活动以介绍开始,每个人都分享他们的谋生之道,他们当天的工作,他们可能需要帮助的事情(如果有的话),以及他们可以帮助别人的事情(如果有的话)。
寻求帮助的地方
每次去一个码&咖,我都不求也不需要帮助。但是,当我需要帮助的时候,我知道我可以在那里找到它。我从未对这种帮助的质量失望过。
一个练习帮助他人的地方
自从去了 Code & Coffee 之后,我已经被要求过几次帮助了。有时候我觉得我有什么可以贡献的,有时候我却被难住了。但是,有机会分享别人的奋斗通常是一种受欢迎的从我自己的奋斗中转移注意力的方式。它提醒我们每个人都有起点。我不确定我还能想出另一个既令人谦卑又鼓舞人心的经历。
非常有助于提高生产力
我心虚的秘密是,有时我不从事涉及编码的项目。或者,也许我会从事一个曾经涉及到编码,或者最终会涉及到编码,但在那个时候不需要编码的项目。这意味着我可能正在研读方法,可能正在勾画概念框架,或者可能正在参加 Udemy/Lynda/Udacity(或类似的)课程。我甚至可能只是利用这段时间来收发电子邮件。总之,这是一个受保护的时间窗口,我可以用它来提高效率。
Heading into Saturday’s NOVA Code & Coffee hosted by CustomInk.com. Image Credit: “Author’s Photo” — More on attributions.
结论
我推荐《代码与咖啡》,给那些有兴趣结识其他技术人员的人,在技术项目上获得帮助的人,在技术项目上帮助其他人的人,或者有保护时间在你脑海中酝酿的任何个人项目上取得进展的人。
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
adamrossnelson.medium.com](https://adamrossnelson.medium.com/membership)
感谢阅读
把你的想法和主意发给我。你可以写信只是为了说声嗨。如果你真的需要告诉我是怎么错的,我期待着尽快和你聊天。推特:@ adamrossnelsonLinkedIn:亚当·罗斯·尼尔森在推特和脸书:亚当·罗斯·尼尔森在脸书。
为什么我决定申请研究生院学习人工智能
Never thought I would go back to school — but I want to now.
我的一个梦想是帮助创造一个真正帮助人们实现更健康、更充实的生活方式的社会。
我认为,实现这一目标的最佳方式是使用普遍基本收入或其变体,即负所得税。这是一项政策,每个人每个月都得到一定数量的钱,没有任何问题。
如果每个人都收到,比方说,3000 美元/月,没有人会被困在自己讨厌的工作中,也没有人会被迫每周工作 80 小时来维持生计。这将使人们摆脱贫困,让他们自由地在他们真正关心的事情上花更多的时间,这将创造一个更具创造力的社会。
目前,实现这一目标的最大障碍是我们的生产力不够。例如,为了让我们能够给美国的每个人每月 3000 美元,我们需要比目前的水平至少高 3 倍。
我认为,实现如此大的生产率增长的唯一途径是通过使用人工智能和自动化。特别是,我想帮助推动人工智能的发展,如强化学习,以及它在机器人技术中的应用。
在我的职业生涯中,我预见到我能为这一发展做出贡献的三种主要方式。
- 通过制作更多关于编程和人工智能的教育视频和播客。我将通过 CS Dojo(我的 YouTube 频道)向数据科学分发它们。
- 通过创建或加入一家在现实世界中应用人工智能和机器人技术最新进展的初创公司。
- 通过制作一个电视节目来教育公众关于人工智能的知识——例如,关于网飞。
How do you get a Netflix show? Well, you can just publish an international bestseller like Marie Kondo did 😛
不管我是否能进入我申请的任何一所研究生院——加州大学伯克利分校和斯坦福大学——我都会追求这些目标。
然而,在这些学校之一接受正规的大学教育,我相信我能够更快地实现这些目标。
我认为有 3 个因素可以帮助我实现这些目标:
- 与其他学生、研究人员和教授的联系
- 参与最新的人工智能/强化学习研究
- 地点——硅谷仍然是世界上为创业公司寻找投资者和联合创始人的最佳地点之一。另外,网飞也在加州。
在离开学校 4 年后,重返校园对我来说将是一个重大的决定,但对我来说这是一个正确的时机。
这将是我一生中最大的时间和金钱投资之一,但我相信我能够 100 倍地收回投资——无论是从我能够为社会做出的贡献来看,还是从我希望在那里开展的有趣项目和研究来看。
为什么我决定成为一名数据科学家
Photo by Justin Luebke on Unsplash
数据科学
前 SAP 顾问转变为数据科学家的故事
一年前,如果你问我数据科学的定义,我的回答会简单到“将数据用于科学目的”。
那时,我在为企业客户提供企业咨询,用 SAP 供应链产品解决他们的 ERP 问题。我已经在这个世界上呆了 4 年,最近被提升为高级顾问。
花哨的头衔或晋升从来都不是我优先考虑的事情,我也对在豪华办公室工作不感兴趣。我成为一名顾问,因为我喜欢站在探索的最前沿,同时应用这些知识来解决现实世界的问题。
如果作品对我们的世界有任何积极的影响,那也是锦上添花。
最近,我既没有学习也没有观察到任何影响,保持我的动力变得越来越难。
“疯狂的定义是一遍又一遍地做同样的事情,却期待不同的结果.”
阿尔伯特·爱因斯坦(或其他人)
我觉得也许是时候改变一下了。
我搬到了一个我渴望已久的地方,开始了这种改变。一个叫做卡斯的小镇,在那里群山与地中海交汇,庇护着一个完美的家,在这里我可以平等地滋养我的身心。
然后,我开始探索我可以工作的其他潜在领域,重温我大学时代的经历,回忆我曾经热爱的事情。
我学习工业工程是因为我对应用数学充满热情,并且知道这门学科会广泛使用数学来解决现实世界的商业和工业挑战。
我非常喜欢像概率和统计这样的主题,以至于我甚至接受了一份教学助理的工作,专注于随机模型中的最优化问题。
我天生非常好奇,经常发现自己在分析周围的一切。将看似平凡的情况看作一堆输入、输出及其清晰的联系,这让我觉得自己很有创造力,而不是其他更传统的创造力定义。当我看到看不见的东西时,我的眼睛会因喜悦和兴奋而睁大。
我决定通过分析我现有的技能、工作经验以及乐趣和快乐的想法,好好利用这些新的启示;创业生态系统是大多数令人兴奋的创新的家园,似乎是一个很好的线索。
与此同时,我父亲让我给他的小酿酒公司建一个网站。作为好奇的我,我决定探索一些编码技巧,而不是使用现成的网站建设者。
也许是因为轻微的拖延症,或者我父亲不太需要这个网站,我发现自己在阅读 Codecademy paths,并立即迷上了数据科学。
随着学习材料和练习的进展,我清楚地知道自己想做什么。这是为我勾选了所有框的字段。此外,对于一个好奇的人来说,这是一个有无限深度的宝库!
在我写这篇自我反思的时候,我是一个自学成才的数据科学家,已经走了 6 个月了!
我已经感到富有成效,特别是我正在与慷慨地帮助我成长的同一个社区分享和贡献。
我觉得我在 6 个月的学习、成长、写作和社区参与中所达到的范围和影响已经超越了我在 SAP 咨询职业生涯中 4 年的时间。
当然,由于数据科学社区和创业生态系统的无国界性质,与被拖到世界各地的低效会议室相比,在我喜欢的地方工作会有所帮助。
My office 🌞photo from November 13, 2019
是的,我确实听说过这个流行的短语;“21 世纪最性感的工作”在我踏上旅程后不久。如果我今天写这篇文章,我可能会把它命名为“21 世纪最有创意、最有影响力、最性感的工作”。
感谢您阅读我的故事,我希望在回复中或在 Twitter 上听到您的故事以及成为数据科学家的动机!
为什么我把我书的所有收入都捐给了编程女孩
Grace Hopper, Ph.D. (Vassar Archives)
为缩小科技领域的性别差距尽绵薄之力
我的同学中有几个(如果有的话)分享了我对展示在我们大学科学中心的 Mark I 计算机的迷恋。很难责怪他们。Mark I 高达 8 英尺,充满了旋转开关、晶体二极管和缠绕的电线,看起来像是科幻电影中的道具,而不是美国海军曾经使用的计算机。在 20 世纪 40 年代的全盛时期,Mark I 是地球上最强大的超级计算机之一;今天,我们放在口袋里的智能手机会让它相形见绌。然而,如果没有早期的大型机,如 Mark I 或操作它们的计算机科学先驱,智能手机和支持智能手机的操作系统都是不可能的。这些先驱中有许多是女性。
在成为电脑呆子之前,我是个历史迷。早期的计算机,如 Mark I,令我着迷,因为它们赋予了求知者超乎想象的能力。他们处理了帮助制造原子弹和将人类推向月球的复杂计算。虽然事后看来显而易见,但可编程机器的无限潜力必须由有事业心的个人来认识和利用,他们超越高耸的机器,看到比计算器更伟大的东西。这些技术先驱的才华、毅力和成就将通用计算的承诺变成了现实。这些人是我追求计算机科学的灵感来源。
历史上第一位编码员阿达·洛芙莱斯是一位女性。在与英国数学家查尔斯·巴贝奇的通信中,洛夫莱斯认识到了他发明的可编程机器——分析引擎的巨大潜力,并设计了被认为是第一个计算机算法。可悲的是,巴贝奇的发明从未完成,世界不得不等了将近一个世纪才出现类似他和洛夫莱斯设想的机器。其中有世界上第一台通用计算机 Mark I。
The Harvard Mark I, 1943 (Encyclopædia Britannica/IBM Archives)
受巴贝奇分析引擎的启发,Mark I 结合了机械和电子元件。它的建造花了五年多的时间,当它在 1944 年被交付给哈佛大学时,这台计算机被投入了战争服务。格蕾丝·赫柏是一名数学博士,曾加入美国海军,被任命为马克一世的首批编码员之一。霍普博士和她的团队使用 Mark I 来帮助广泛的军事项目,从鱼雷设计到内爆计算,这些都有助于原子弹的开发。Mark I——人类最具变革性的创造之一,也是当今数字文艺复兴的先驱——的目的是协助毁灭,这是一个时代的悲剧性象征。幸运的是,没过多久,战争就结束了,可编程机器开始进入民用领域。霍普博士帮助引领了这一转变。
战后,霍普博士继续在计算机领域发挥核心作用。在 20 世纪 50 年代,她创造了软件工程中最重要的创新之一:编译器。编译器是一种将人类编写的代码转换成机器指令的中间程序,它使得用简单的英语而不是机器代码编写软件成为可能。Hopper 博士还参与开发了一种最受欢迎的早期编程语言,COBOL,⁴,这种语言至今仍在生产系统中使用。
计算机的历史上充满了开拓性的女性,她们的辛勤工作和才华帮助推动人类进入数字时代。世界上第一台全数字通用计算机 ENIAC 的编程任务是由一个全女性团队完成的:凯瑟琳·麦纽提、让·詹宁斯、贝蒂·斯奈德、玛琳·韦斯科夫、弗朗西斯·比拉斯和露丝·利奇特曼。⁵与 Mark I 等机电前身不同,ENIAC 是全电子的。这使得它达到了以前无法想象的计算速度。Mark I 每秒只能执行三条命令;ENIAC 可以在这段时间内完成五千多项任务。⁶这对于美国战争机器日益增长的计算需求来说是完美的,但也意味着旧的编码方式已经过时。必须发明新的范例来驾驭新硬件的能力和复杂性。面对挑战,McNulty 和她的同事们开发了子程序和嵌套等技术,并将 ENIAC 变成了存储程序计算机(一种存储、修改和执行来自电子 memory),⁷的指令的计算机,为现代软件工程铺平了道路。
Mary Allen Wilkes (New York Times/Joseph C. Towler, Jr.)
随着计算机不再是破坏的工具并进入我们的家庭,女性程序员仍然站在软件的前沿。20 世纪 60 年代,Mary Allen Wilkes 负责为 LINC 开发操作系统,由于其相对较小的尺寸,许多人认为这是第一台个人电脑。不像它那巨大的、数吨重的前身,LINC 可以装进一个实验室或办公室。威尔克斯被允许把这台机器带回家,使她成为第一个使用个人电脑的人。⁸林肯的革命性不仅仅在于它的尺寸。配备了屏幕和键盘,它可以直接和交互地编程——消除了对穿孔卡和打印输出的需要,而穿孔卡和打印输出是以前计算机的支柱。⁹同样具有革命性的是威尔克斯在为 LINC 设计软件时开发的编程创新,这为今天从 Windows 到 iOS 的所有操作系统奠定了基础。
女性程序员在美国宇航局的太空计划中也发挥了重要作用。自学成才的 FORTRAN 程序员多萝西·沃恩(Dorothy Vaughan)和她的女同事们完成了许多计算,帮助第一个美国人进入地球轨道,并确保他安全返回。⁰另一位女性计算机科学家 Margaret Hamilton 领导了一个工程团队,他们的软件为阿波罗 11 号登月任务提供了动力。事实上,尼尔·阿姆斯特朗的“一个人的一小步,人类的一大步”在很大程度上是由一位女性的聪明才智促成的。这些先驱女性的贡献很少被庆祝,甚至被遗忘。
女性在软件工程早期发挥的突出作用与今天计算机科学教室和工作场所的构成形成了鲜明的对比。形势似乎在恶化。根据《纽约时报》引用的美国政府统计数据,1984 年超过 37%的计算机科学毕业生是女性;到 2010 年,这一比例降至 18%以下。
女性计算机科学家的突破性成就足以证明,计算机领域的成功是不分性别的。
性别失衡显然不是因为缺乏天生的能力。女性计算机科学家的突破性成就足以证明,计算机领域的成功是不分性别的。
为了表彰上面讨论的编程先驱们所取得的成就,我很荣幸能够支持非营利组织“编程女孩”。作为一个对技术着迷的年轻历史爱好者,我崇拜女性编程先驱;是他们激励我去攻读计算机科学学位。这是一种特权,可以将它传递给未来的女性技术领导者。
参考
- [1] C. Thompson,编码中的女性秘史 (2019),《纽约时报》
- [2]未知,马克 I 型计算机:它是做什么用的?(未注明),历史科学仪器集
- [3]未知,马克 I 电脑:船员(未注明),历史科学仪器的集合
- [4]同上。
- [5] C .汤普森,编码中的女性秘史 (2019),《纽约时报》
- [6]沃尔特·伊萨克森,格蕾丝·赫柏,计算先锋 (2014),哈佛公报
- [7] J. Lightfoot,介绍 ENIAC Six (2016),原子对象博客
- [8] C. Thompson,编码中的女性秘史 (2019),纽约时报
- 9 同上。
- [10] E. Howell,NASA 真实“隐藏人物”的故事 (2017),科学美国人
- [11] A .乔治,玛格丽特·哈米尔顿带领美国宇航局软件团队将宇航员送上月球 (2019),史密森尼
- [12] C .汤普森,编码中的女性秘史 (2019),《纽约时报》
为什么我从主管跳到工程师
职业转型
一位高管离开管理岗位的三个原因
Photo by Victor Rodriguez on Unsplash
“我注意到,即使是那些断言一切都是注定的,我们无法改变的人,在过马路之前也仍然会朝两边看”
― 斯蒂芬·霍金, 黑洞和婴儿宇宙
还记得试图找到你的第一份工作吗?每个招聘人员都想要经验。作为一个入门级的申请人,你没有任何。最终,有人可能会根据你的面试方式、你的成绩,或者他们对你这个第一次找工作的人的一些无形品质,给你一个机会。
对包括我在内的许多人来说,偶然事件对职业轨迹有着巨大的影响。同行评议研究的证据支持了这一点。我的幸运是去了一家初创公司工作,这家公司几乎所有的业务职能都需要帮助。这是我在工作中学习的机会,也是我找到自己专长的机会,并建立一个专注的职业生涯。
日常工作中的困难和分心意味着我花了很多年才真正对自己诚实,知道自己想做什么,以及为此需要承担的风险。我把自己的经历总结为改变职业轨迹的三个原因,以及我自己参与创业的机会如何帮助我更好地了解自己的优势和劣势。
#1:我知道我长大后想做什么
“怎么这么快就这么晚了?”
― 苏斯博士
2009 年,当我在圣地亚哥州立大学完成 MBA 学业时,我对自己接下来想做什么只有一个模糊的想法。我已经在中国生活和工作了相当长的时间,包括在中山大学商学院的一个学期,所以我认为“国际商务”听起来是下一步的好选择。相反,我在圣地亚哥地区的一家初创药房自动化公司做营销实习生。
The author circa 2010 experiencing one of many more deer-in-headlights moments to come
我的角色很快演变成了公司瑞士军刀的全职职位。一个早期项目是管理我们的机器人库存系统的第一次试点安装。这意味着每周 7 天,每天 10-12 小时在现场管理客户关系,记录测试结果,进行特别数据分析,并即时学习 SQL。我以前从未接触过技术,为了能够胜任我的工作,我不得不几乎在一夜之间掌握新的技能和工具。
在接下来的十年里,我开始了我们最初的战略营销努力,并自己建立了营销技术部门,担任产品经理,建立了我们的 SaaS 基础设施以支持运营,担任技术销售主管,经常进行临时数据分析,编写基于 SQL 的解决方案,雇用并建立技术实施和支持团队,管理 IT 项目,并管理重要客户关系。我也越来越多地将越来越多的时间投入到个人贡献者项目中,主要是因为有些事情我想完成,但我们在开发端没有足够的带宽。所以我不断学习越来越多的技术技能,尤其是在数据科学和软件工程方面。我喜欢这一切,尤其是我能迅速将所学付诸实践的方式。
我最终被提升为执行副总裁,我们的增长在去年年底开始加速。后来我决定辞职。
#2:盘子太多,转不过来
Photo by nikko macaspac on Unsplash | Also the author in his head about a year ago
“光忙是不够的;蚂蚁也是。问题是:我们在忙什么?”
― 亨利·大卫·梭罗
在很长一段时间里,无论我的头衔是什么都不重要,或者说对我的日常工作没有任何影响。任何曾经在典型的创业环境中工作过的人可能都有同感。如果我是桌椅装潢公司的 SVP,我还会在路上参加贸易展览,从事分析项目,构建网络应用程序,管理复杂的技术实施项目,招聘和解雇,等等。我们总是缺乏支持人员,没有专门的人力资源或 IT 资源。对于小型企业来说,这没什么大不了的,但随着企业的发展和对标准化的需求,这变得至关重要。
对我来说,我在 2018 年达到了一个点,我在组织任务和管理上投入了一个常规的工作周,然后在此基础上又投入了一个工作周,以跟上个人贡献者项目。我们既没有预算,也没有内在的倾向去用额外的资源来支持我个人所做的事情。我发现自己有了一份全职工作和一个爱好,这也是我工作的一部分。从长远来看,这是完全不可持续的。
我面临的管理或处理工作的巨大工作量和复杂性引发了其他问题。努力工作对我来说是内在的,但我无法在任何一项任务上投入足够的时间,我开始担心我无法达到自己的(公认的高)标准。
#3:渴望和我所在领域的工程师一起工作
“聪明人工作的地方,门都是开着的.”―史蒂夫·沃兹尼亚克
我也越来越多地发现自己沉浸在分析和数据科学中,无论是在工作中还是在我自学的业余时间。我喜欢自学新技能,我花了几个小时在数据营学习模块,在代码战做形。但在我的公司里,没有其他人有类似的兴趣或技能,当我描述当前的项目或征求反馈时,往往会遇到茫然的目光。这导致了另一个问题,那就是我一直觉得自己被低估了,我和其他高层领导一起工作时,他们无法真正评估我的表现,因为他们没有具体的技术能力来这样做。这不是他们的错,甚至不是他们的缺点,而是企业的具体优先事项和有限资源分配的问题。
In the Netherlands after jumping ship. Life is better.
我想去一个真正重视应用数据科学、数据治理的地方,并积极寻求基于商业分析的深思熟虑的应用来推动价值。当一家荷兰 IT 和分析咨询公司的管理合伙人通过 LinkedIn 联系我时,我已经准备好做出这一飞跃。我不在乎头衔,但我确实想去一个有志同道合的专业人士的地方,我可以向他们学习,当分析项目正确完成时,他们对数据的价值有着和我一样的感受。
作为一名数据工程师和 scrum master 加入一家咨询公司,对于我自己的职业抱负和个人成长的渴望来说绝对是正确的。我对自己的决定不后悔。最后,最困难的部分是鼓起勇气离开我生活了 10 年的公司,冒险去接触我职业生涯中真正想要的东西。
便利的(付费)数据科学/编码资源
1。
几年前,我注册了他们的付费服务,再也没有回头。这是保持技能最新并接触到数据科学方法的绝佳方式,无论是在 R 还是 Python 中。
2.代码学院
没有什么可以替代实践经验,但如果你想提高技能,并在数据科学或软件开发方面学习新的技能,这是一个非常棒的服务。
3.消防水带项目
我觉得我需要一种更身临其境的体验来将我学习的所有东西结合起来,所以我在大约一年半前报名参加了消防软管项目的训练营。他们给我找了一个编码导师,我花了将近一年的时间在晚上和周末学习他们的课程。
肯·马扎卡是它背后的家伙,他的方法真的为我工作。
为什么我从 Google Colab 和 Amazon SageMaker 迁移到 Saturn Cloud
当谈到科学实验和合作时,人们往往需要同样的东西:一个易于使用的界面来破解和优化他们的算法,一个数据输入输出系统,以及对他们首选的编程语言的支持。随着 2011 年 Jupyter 的发布,这些问题的自然解决方案出现了,这是一个极其通用的 web 应用程序,允许您创建一个笔记本文件,用作交互式代码界面、数据可视化工具和 markdown 编辑器。
Jupyter 云解决方案
与他人分享静态 Jupyter 笔记本的方式有很多,比如把它发布在 GitHub 上或者分享一个 nbviewer 链接。但是,如果收件人已经安装了 Jupyter 笔记本环境,则只能与笔记本文件进行交互。但是如果你想分享一个不需要任何安装的全交互 Jupyter 笔记本呢?或者,您想创建自己的 Jupyter 笔记本,而不在本地计算机上安装任何东西?
Jupyter 笔记本已经成为数据科学家之间机器学习建模和分析的标准门户,这一认识推动了软件产品的激增,这些产品被称为“云上的 Jupyter 笔记本(加上新东西!)".仅凭记忆,这里有几个公司产品和创业产品完全或部分符合这一描述:Kaggle kernel, Google Colab , AWS SageMaker , Google Cloud Datalab , Domino Data Lab , DataBrick Notebooks ,Azure Notebooks…名单还在继续。根据我与数据科学新手的交谈,两个最受欢迎的 Jypyter 云平台似乎是 Google Colab 和 Amazon SageMaker。
谷歌 Colab
Google Colab 是从提高你的 Python 编码技能到使用深度学习库的理想选择,比如 PyTorch 、 Keras 、 TensorFlow 和 OpenCV 。你可以在 Colab 中创建笔记本,上传笔记本,存储笔记本,共享笔记本,安装你的 Google Drive 并使用你存储在那里的任何东西,导入你最喜欢的目录,上传你的个人 Jupyter 笔记本,直接从 GitHub 上传笔记本,上传 Kaggle 文件,下载你的笔记本,以及做你想做的任何事情。
从视觉上看,Colab 界面与 Jupyter 界面非常相似。然而,在 Colab 中工作实际上与在 Jupyter 笔记本中工作感觉非常不同:
- 大多数菜单项是不同的。
- Colab 改变了一些标准术语(“运行时”代替了“内核”,“文本单元”代替了“标记单元”,等等。)
- Colab 发明了一些你必须理解的新概念,比如“游乐场模式”。
- Colab 中的命令模式和编辑模式与 Jupyter 中的不同。
已经有很多关于 Google Colab 故障诊断的文章,所以在不深入这个兔子洞的情况下,这里有一些不太理想的东西。因为 Colab 菜单栏缺少一些项目,而工具栏保持得非常简单,所以有些动作只能使用键盘快捷键来完成。您不能将笔记本下载为其他有用的格式,如 HTML 网页或 Markdown 文件(尽管您可以将其下载为 Python 脚本)。您可以上传数据集以在 Colab 笔记本中使用,但一旦您结束会话,该数据集将被自动删除。
就公开共享的能力而言,如果您选择将您的笔记本公开,并且您共享了链接,任何人都可以在不创建 Google 帐户的情况下访问它,并且任何拥有 Google 帐户的人都可以将其复制到自己的帐户中。此外,您可以授权 Colab 将您的笔记本保存到 GitHub 或 Gist,然后从那里共享它。
在协作能力方面,你可以保持笔记本的私密性,但邀请特定的人查看或编辑它(使用谷歌熟悉的共享界面)。您和您的合作者可以编辑笔记本,查看彼此的更改,以及为彼此添加评论(类似于 Google Docs)。但是,您的协作者无法实时看到您的编辑内容(最多会有 30 秒的延迟),如果多人同时编辑笔记本,您的编辑内容可能会丢失。此外,您实际上并没有与您的合作者共享您的环境(意味着没有同步已经运行的代码),这极大地限制了合作功能的有用性。
Colab 确实可以让你访问一个 GPU 或者一个 TPU 。否则,Google 不会为他们的环境提供任何规范。如果你将 Colab 连接到 Google Drive,那将为你提供高达 15 GB 的磁盘空间来存储你的数据集。会话将在 60 分钟不活动后关闭,尽管它们最多可以运行 12 个小时。
Colab 的最大优势在于它很容易上手,因为大多数人已经有了一个谷歌帐户,而且它很容易共享笔记本,因为共享功能与谷歌文档一样。然而,繁琐的键盘快捷键和处理数据集的困难是显著的缺点。在同一笔记本上协作的能力是有用的;但是没那么有用,因为你们没有共享一个环境,也不能实时协作。
亚马逊 SageMaker
Amazon SageMaker 是一种完全托管的机器学习服务,可以帮助数据科学家和开发人员快速轻松地构建&训练模型,然后直接将其部署到生产就绪的托管环境中。它提供了一个集成的 Jupyter 创作笔记本实例,可以方便地访问您的数据集进行探索/分析,因此您不必管理服务器。它还提供了常见的 ML 算法,这些算法经过优化,可以在分布式环境中针对非常大的数据高效运行。凭借对自带算法和框架的本机支持,Amazon SageMaker 提供了灵活的分布式培训选项,可根据您的特定工作流程进行调整。
首先,您启动一个所谓的“笔记本实例,它将托管 Jupyter 笔记本应用程序本身、所有笔记本、辅助脚本和其他文件。不需要连接到那个实例(实际上您不能,即使想要)或者以任何方式设置它。一切都已经准备好了,你可以创建一个新的笔记本,并使用它来收集和准备一些数据,定义一个模型,并开始学习过程。所有配置、计算实例供应、数据移动等。会被一个函数调用触发。这个漂亮的过程决定了定义模型和组织数据的某种方法。
SageMaker 是建立在其他 AWS 服务之上的。笔记本、培训和部署机器只是运行特定 Amazon 机器映像(AMI)的普通 EC2 实例。和数据(还有结果、检查点、日志等。)存储在 S3 对象存储器中。如果您正在处理图像、视频或任何大型数据集,这可能会带来麻烦。事实是,你必须把你所有的数据上传到 S3。当您配置培训时,您告诉 SageMaker 在哪里可以找到您的数据。然后,在开始训练之前,SageMaker 自动将数据从 S3 下载到每个训练实例中。每次都是。作为参考,下载 100Gb 的图像大约需要 20 分钟。这意味着在训练开始前你至少要等 25 分钟。祝你调试模型好运!另一方面,当所有的前期试验都在别处完成,你的模型已经打磨好的时候,培训体验就非常顺利了。只需将您的数据上传到 S3,并从那里获得中期结果。
另一个需要考虑的方面是定价。笔记本实例可能非常便宜,尤其是在不需要预处理数据的时候。另一方面,训练实例可能很容易在你的口袋里烧一个洞。点击此处查看所有价格,以及 SageMaker 已经推出的地区列表。
介绍土星云
土星云是一个新的平台,为那些对建立基础设施不感兴趣,但更关心如何轻松进行数据科学的数据科学家提供服务。更具体地说,该平台帮助管理云中的 Python 环境。
注册帐户后,您可以开始使用免费层。在仪表板中,您可以通过选择磁盘空间和机器大小来为项目创建 Jupyter 笔记本。这些配置涵盖了许多实际数据科学项目的需求。此外,您可以为您的项目定义自动关闭持续时间,这将使您的项目不会因为不活动而关闭。
通过土星云共享笔记本极其容易。我之前做了一个探索 Instacart 市场篮子分析挑战的项目,你可以在这里查看公共笔记本:https://www . Saturn cloud . io/your pub/khanhnamle 1994/insta cart-notebooks/notebooks/Association-Rule-mining . ipynb。我特别喜欢代码块和可视化的渲染,没有任何混乱,就像我们在 Google Colab 笔记本上看到的那样。它看起来就像一份报告,正如它的本意。我还喜欢提供的**“在土星中运行”**选项,用户只需点击就可以自己运行这段代码,不需要任何明确的登录。
总的来说,使用土星云可以很容易地与其他队友分享你的笔记本,而不必处理确保他们安装了所有正确的库的麻烦。与 Google Colab 相比,这种共享能力更胜一筹。
此外,对于那些在本地运行笔记本电脑并耗尽内存的人来说,它还允许您使用所需的内存和 RAM 来启动虚拟机,并且只需为您所使用的内容付费。与亚马逊 SageMaker 相比,这种成本关联是一个巨大的优势。
还有一些其他的附加功能,可以真正减轻通常从 DevOps 角度完成的工作的复杂性。这就是像这样的工具的伟大之处。在许多方面,直到你在一个连共享一个基本的 Excel 文档都变得繁琐的公司环境中工作,你几乎很难向年轻的数据科学家解释为什么这是如此之好。
结论
土星云离生产就绪还很远,但它是一个非常有前途的解决方案。我个人认为,这是目前为止唯一一个接近本地 Jupyter 服务器易用性的解决方案,并增加了云托管的好处(CVS、扩展、共享等)。).
概念证明确实存在,只是缺少一些细节(更多的语言支持、更好的版本控制和更简单的点击式界面)。我很高兴看到土星平台的未来版本!
参考
- 在云端运行你的 Jupyter 笔记本的六种简单方法 。数据学校。凯文马卡姆,2019 年 3 月。
为什么我辞去了数据科学方面的工作,去参加数据科学训练营
少有人走的路
2018 年 11 月,我辞去了在一家全球研究公司担任数据科学家的工作,参加了大会的全职数据科学训练营。这是一条非正统的道路。以下面来自数据营信息图的关于如何“通过 8 个简单步骤成为数据科学家”的截图为例( 简单步骤是一个有趣的词汇选择)。
Data Camp advice on how to prove you’re a ‘true’ Data Scientist
步骤 7 给参加训练营打 2 星,给找到工作打 3 星。作者似乎在暗示,在该领域寻求职业生涯的人获得经验的方式有一定的顺序层次。
虽然我很欣赏 Data Camp 列出了一些可供自学者应用新发现技能的替代实体的例子,但我发现信息图中 bootcamp 的位置具有误导性。训练营可以更恰当地重新定义为以下三种教育途径中的一种选择:在线课程(例如 Coursera)、认证硕士课程或编码训练营。自从“数据科学”作为一个跨学科领域出现以来,这种类型的项目激增,坦率地说,现在的教育前景是狂野的西部。由于这些选择的价格/课程各不相同,很难比较一种继续教育模式与另一种模式的价值。
既然我们已经正确地将训练营重新定义为一个教育项目,问题仍然存在…为什么我选择参加这种类型的项目而不是其他途径?硕士不是更好吗?此外,我为什么不继续做数据科学家的工作呢?这不就是训练营的最终目标吗?
为了理解我的决策,我将分享我的背景,我现在在哪里,以及我对自己未来的展望。我希望与你分享我的经验,而不是指定一条对每个人都最好的道路。谈论成为数据科学家的方法的文章的饱和创造了一种权威的语气,不管它们是否与该领域的其他 10 位“专家”相矛盾。
获得第一份工作
我职业生涯的前三年在私人健康保险咨询公司工作,主要处理索赔和登记数据,帮助雇主对他们的健康计划做出决策。我开始习惯使用数据仓库,并且喜欢我们如何从健康保险公司获得数据的细节。更重要的是,我学会了如何为我们的客户回答关键问题,包括:“从健康储蓄账户转变为健康报销账户会如何影响我的底线?”,以及“如果我们合并这两家公司并选择此福利计划,我会节省多少钱?”。除了我能回答的问题之外,我还喜欢玩弄信息的表达方式。在我工作的最后一段时间,我开始在 excel 中构建仪表板,允许用户像点击应用程序一样点击工作簿(我当时不熟悉商业智能软件,如果你在想“…Excel 中的仪表板?”看看这个。
所有这些经历让我进入了一个我不知道存在的领域,直到大约 5 个月后,我于 2015 年 11 月离职,接受了一个数据科学家的职位。我毫无经验,但在与他们的面试中,我清楚地表明我有分析的头脑,愿意学习,有面对客户的经验(我也做过客户管理)。这足以得到这份工作,但在我看来,我想也是他们的想法,我还有很长的路要走。4 年前,数据科学的定义更加模糊不清(很难相信,但确实如此),公司似乎列出了初级职位的所有技能。每个人都想要一只独角兽,我当然不是。我知道我必须改进建模(自从我在学校学了计量经济学课程后,我就生疏了)和脚本。
做工作
一旦我有了工作,第一年真的很难。我们在一个更大的机构中有效地作为一个初创公司运作,因此没有什么真正被定义。在最初的几个月里,我被要求开始独立训练。自从大学毕业后,我就没有再编程过,我尝试过 R. R 的学习曲线相当陡峭,尤其是当我的团队中没有人用它编程的时候。我尝试了自学路线,在网上学习课程。记得我尝试的第一门课程是 Roger Peng 通过约翰霍普金斯的 R 课程数据科学。第一周,我感觉很舒服,并受到鼓舞,我将能够实现飞跃。在花了几年时间学习并通过保险认证后,我习惯了在工作之外学习密集、复杂的材料,并在日常生活中平衡它们。课程的第二周有所不同。材料复合的方式很快,而且它是一个虚拟课程,我没有一个指南来弹出材料。
当我努力在工作之外点击这些概念时,在工作之内,我终于得到了我的第一个项目,在艾滋病毒/艾滋病局数据集上工作,在场景中建立仪表板。公司里有几个了解 Tableau 的开发人员,即使只有一两个人对我来说也有很大的不同。我起初并不出色,事实上,如果我今天回顾我的工作,这是彻头彻尾的补救,但这是项目报告中的一个增量改进,它给了我一个学习的机会。由于整个公司对这类项目的巨大需求,我逐渐适应了越来越多的商业智能角色,参与了各种各样的项目,如疗养院的监管执法和一个国际医疗融资项目。我成为了商业智能/数据专家,并在很大程度上放弃了成为大数据大师或机器学习工程师的追求。我很享受这种混合性质的工作,既要面对客户,又要深入研究后端数据的技术方面。
虽然我真的掌握了 Tableau 的诀窍,并找出了它的局限性,但在试图实现我在工作之外学习编程的目标时,我仍然与不一致性作斗争。我决定转向 Python,并在 DataCamp 中完成了几门课程,但我仍然在 excel 中进行大部分数据清理,因为这对不熟悉 Python 的其他人来说更透明。随着时间的推移,我意识到在某种程度上,自学课程对我来说是一种挑战。我可能会连续两三周擅长编程,然后连续几周工作到很晚,或者一个月内连续三场婚礼会让我偏离轨道。等我回来的时候,概念已经模糊了,我不得不从头开始复习。
向上拉平
在把在线课程作为唯一的解决方案从我的清单上划掉后,真的有两个选项留给我选择,训练营或硕士课程。当比较这两者时,有许多相似之处和不同之处。这两种选择都比对方早得多开始他们的项目。数据科学作为一门学科在 5-10 年前才真正崭露头角,所以许多项目仍然很年轻,变化很大。钱对我来说当然是一个很大的因素。训练营的价格从7K 美元到 16K 美元(不包括生活费),而数据科学硕士项目的费用与传统硕士项目一样高,需要我至少失业 15 个月,或者晚上去学校上学。另一个恼人但现实的因素是项目的可信度/声望。训练营体现了硅谷的技术精英精神,任何人只要有一台笔记本电脑和对学习的热爱,都可以通过黑客攻击获得能力,而硕士项目仍然具有结构化学术学徒制的僵化和严谨。在现实世界中,我看到一些来自学术界的人对数据科学运动抱有非常真实的敌意,并抗议说:“他们从 19 _ _(19 _ _)起就一直是数据科学家”,“机器学习只是不同名称下的回归”,等等。他们的许多陈述是真实的,但也傲慢地抛弃了整个跨学科领域,该领域将一个学科和应用网络汇集在一个语言保护伞下。
经过考虑,我决定走 bootcamp 路线。从我参加工作的最初几年,我了解到与成功最相关的不是你在哪里上学,而是坚持、毅力和好奇心。我想效仿那些渴望通过聚会、自己尝试、自己阅读来自学的人。在与几个在大会上参加过训练营的人交谈后,我知道那里有一种激烈挑战的文化,人们经常离开完全不同领域的舒适工作,投入深水区,看看他们是否会游泳。为了让我成长,我想沉浸在那种文化中,和那些勇敢的人在一起。至于雇主会怎么看……如果他们对训练营有偏见,愿意放弃整个人才库(需要整个研究生数学课程),那当然是他们的特权,我可以做两件事之一来回应 1。尝试说服他们,我可以做任何一个拥有数据科学硕士学位的人可以做的事情,或者 2。别理那家公司。如果从训练营招聘对德勤、亚马逊、巴克莱、IBM、苹果和波音(仅举几例)这样的公司来说足够好,逻辑表明它应该被视为等同于硕士水平的项目。
成功之望
这是我做过的最好的决定。在前两周,作业真正测试了我们使用控制流和逻辑来回答所有不同数据类型的问题的能力。我很惊讶我能如此快地学会我已经逃避了这么久的技能。我有信心编写自己的脚本并构建 ETL 流,我可以构建这些流来在现实世界中自动化流程。我们与 Spark 和 SQL 合作,让我们体验大数据平台和典型的关系数据库。
更重要的是,我们能够应用我们新发现的编程技能来进行推理统计,构建机器学习管道,以及构建数据收集器来执行分类算法(想想垃圾邮件分类器)。总的来说,它给了我技术技能和信心,让我能够从第一份工作中积累经验,处理更大、更少结构化的数据,并以自动化的方式回答问题。对于我们没有深入探讨的概念,该课程也给了我们使用堆栈溢出和谷歌的关联,以了解正确的问题。
正如我在文章前面提到的,我的旅程可以被看作是非正统的。坦率地说,我质疑这个领域的“正统”是什么。你与软件开发人员类型的数据科学家交谈,他们希望你拥有软件开发技能,或者大数据工程师希望你能够启动 Hadoop 集群。我确信,在本质上,数据科学就像环境科学。你永远不会听到一个地质学家对一个水文学家说他们不是环境科学家。数据科学家将会走各种不同的路线,他们需要知道什么取决于他们的领域。没有人可以成为所有人的一切,我对人们的最好建议是选择对你来说最好的路线,这样你就可以为你最终的利益相关者提供最大的价值。我相信我做到了。
为什么我为我的 B2B 应用程序使用嵌入式 ETL 工具
为 B2B SaaS 公司提供更好的 ETL 解决方案
TL;博士
- 企业 ETL 工具使得集成过于昂贵对于小公司来说不可行,需要不同的 ETL 方法
- 嵌入式 ETL 工具不是将数据集成的任务完全留给客户,而是让软件供应商负责提供 ETL,同时让客户控制整个过程——使集成成本更低,并更快地接纳新客户。
获取数据是我们最大的挑战。
我在一家名为 RevLock 的 B2B 初创公司担任软件开发人员,该公司提供会计软件。像大多数 B2B SaaS 公司一样,要开始使用我们的软件,客户必须以我们应用程序的标准格式输入数据。
问题是我们不能使用一个标准集成,因为每个客户在 Salesforce 的自定义对象中都有数据。此外,使用像 Informatica 这样成熟的 ETL 工具会使集成过于昂贵。
因此,我们被迫提供更好的解决方案,否则就有可能失去我们的客户。
Source: Diyotta
我们需要提供的高级 ETL 流程如下:
- 客户将 CSV 文件从 Salesforce 上传到我们的 S3 存储桶
- 我们将其转换成应用程序的标准格式
- 对数据进行一些基本的推理
最初的解决方案
由于来自 Salesforce 的文件通常较小且易于管理,我们认为为每个客户转换产品内部的文件是可行的。
我们决定用 JavaScript 为每个客户编写单独的转换脚本,并在短短 6 周内成功地接纳了我们的第一个客户。万岁!我们用自己的内部解决方案解决了将数据输入系统的问题。
然而,我们很快遇到了问题——客户在输入数据中发现了 10 多个没有讨论的场景,要求我们的开发团队修改我们编写的 ETL 代码,作为他们初始集成的一部分。
我们意识到,在我们的应用程序中转换 Salesforce 数据变得越来越复杂,耗费了我们团队本应用于开发新功能的时间。是采取新方法的时候了。
嵌入式解决方案
很明显,我们需要使用 ETL 工具,将流程向上游移动,在我们的产品之外。
然而,仅仅将流程从产品中移除并不能解决我们的主要问题——我们需要将管理实际转换的任务交给客户,这样他们就可以在不咨询我们的情况下处理任何问题。
因此 ETL 工具必须嵌入到我们的产品中,为客户提供一种修改转换脚本的方法,同时允许我们的产品管理运行ETL*。*
我们在网上寻找这样一个“嵌入式 ETL”工具,其要求如下:
- 简约。我们需要脚本易于理解,并具有良好的支持范式,因此客户可以通过使用自己的资源或外包来维护它们。
- 承受能力。作为一家初创公司,我们不想超过每月 50 美元的运营成本。
- 轻松集成到我们的应用程序中。我们不想花费数周时间来集成 ETL 工具——我们需要轻量级的东西。
为了保证简单,我研究了流行的数据转换框架,并决定使用 Python,因为所有的数据转换工具都可用。
使用这个标准,我们找到了一个基于云的工具,叫做hot glue,它运行在 AWS 上。
我们使用 Pandas 编写转换脚本来处理 CSV 文件的转换,并将一般功能放入我们自己的 Python 模块中,使最终的脚本对我们的客户来说直观且易于阅读。
为了让你有个概念,这是我们为一个客户写的:
如您所见,编辑脚本非常容易——满足我们的简单性需求。
要为客户实际运行 ETL,我们只需使用下面的 REST 调用:
curl -X POST
-H "X-Api-Key: ..."
-H "Content-Type: application/json"
-d '{
"user_id": "...",
"remote_input_dir": "...",
"remote_output_dir": "..."
}'
https://api-endpoint.com/etl/invoke
当 ETL 完成时,一个status.txt
和errors.txt
被上传到我们的 S3 桶中的remote_output_dir
,指示 ETL 是否失败以及发生了什么错误(如果有的话)。
在我们自己的 AWS 环境中运行 ETL 的好处是,我们只为我们使用的东西付费,使我们的成本非常小——满足我们的可负担性要求。
Source: Jupyter
为了允许我们的客户编辑转换,hotglue 提供了一个小部件,它启动一个安全的 Jupyter 实例,其中加载了客户的 Python 脚本和数据。在 Jupyter 中,客户可以轻松地测试他们的修改,并将他们的脚本重新部署到生产中。
将小部件嵌入到我们的 webapp 中非常简单,只需将以下内容添加到我们的index.html
中:
<script src="http://cdn.example.com/widget.js"></script>
<script>
HotGlue.mount(...);
</script>
切换我们称之为:
HotGlue.show()
这就勾掉了最后一个方框,易集成。
下面是一个小部件运行时的快速视频:
结论
我们非常满意为我们的应用程序使用嵌入式 ETL 工具。我们的集成成本降低了,我们可以更快地接纳客户,我们的开发团队也不会因为集成问题而停滞不前。
显然,嵌入式 ETL 解决方案是昂贵的企业 ETL 工具和内部构建定制 ETL 解决方案的绝佳替代方案。
感谢阅读!
我为什么写数据科学博客
写博客加速了我在数据科学方面的学习,原因如下
Photo by Kaitlyn Baker on Unsplash
7 个多月前,我在 Medium 上写了第一篇数据科学博客。此后,我写了许多分享资源、教程和我对学习数据科学的看法的帖子。当我第一次开始时,我的意图只是与他人分享我的学习之旅,希望我能为走上类似道路的其他人提供一些有用的信息。然而,在过去的几个月里,我体验到了写数据科学的一些真正重要的好处,并发现它加速了我的学习。
在下面的帖子中,我想介绍一些我经历过的主要好处:
费曼技术
在学习数据科学的早期,甚至现在,我经常发现自己从各种来源复制和粘贴代码,并使用它来解决一个问题,而没有完全理解它是如何工作的。这很好,而且肯定有一个地方可以让我快速完成一些事情。但是我发现写一篇关于我学到的新东西的博客能让我完全理解它。例如,如果我正在写一个教程,那么我必须准确地理解一些东西是如何工作的,为什么要在博客中解释。我最后还研究了它背后的许多理论,这扩展了我的数据科学知识。
这个我觉得和费曼手法差不多。这是一个由物理学家理查德·费曼开发的学习心理模型。这种学习方法的基础是,为了完全掌握一门学科,你需要能够用简单的术语解释给别人听。当我使用或学习一项新的数据科学技术时,我会写一篇关于它的帖子。这让我可以通过解释来巩固我的理解。写博文有助于我全面掌握一个概念。
公众对作品的批评
我主要是通过自学来学习数据科学,所以我不一定需要老师来提问或检查我的理解是否正确。然而,互联网是一个获得反馈的好地方。当我在博客上写东西时,特别是如果它包含代码,那么如果有错误或者有些东西不太对,很可能有人会留下评论。在解决玩具问题时犯错误并纠正它们,比在工作场所使用该技术时犯错误要好得多。
“写作和学习、思考是同一个过程。”威廉·津瑟
与他人联系
写我的博客使我能够与遵循类似学习路径的人或已经在数据科学领域工作的人联系。我发现特别是在媒体上写作,因为它在某种程度上是一个社交媒体平台和博客平台,很好地促进了这一点。发现有其他人也在遵循类似的学习路径并与他们联系,这真的很有用。
沟通
作为一名数据科学家,最重要的技能之一是沟通。你需要能够向许多不同的受众解释复杂的技术概念,并且能够用数据讲述故事。在工作中,我可能不得不解释机器学习模型如何在许多不同的层面上工作,从数据科学家同事到商业赞助商或高管,他们对这个过程没有任何技术知识。写博客是很好的练习——它使我能够组织我的想法,写一个工作流程的走查,并且通常在写作方面得到更多的练习,这使我更快地创建书面报告。
工作存储
我发现我的博客文章已经成为代码片段和信息的巨大仓库。我经常需要在以后再次使用一种技术,而此时我已经忘记了我需要编写的代码或者它是如何工作的。我发现我会定期重温我的博客文章,以便在工作中使用一些代码。当然,还有其他地方可以存储代码供以后访问,但是博客有一个额外的优势,那就是代码是高度注释的。
自从开始写博客以来,我真的看到了我的学习在加速,对数据科学技术有了更深刻的理解,我的沟通技巧也有了很大的提高。我真的没有意识到写作作为一种学习技巧有多么有用,当然,它还有一个额外的好处,那就是能够为其他人提供大量的信息。
为什么身份管理是云上企业 AI-ML 的先决条件
安全问题阻碍了云上的企业 AI/ML。基于身份的安全解决了许多这样的问题。以下是你需要知道的。
Image by Gerd Altmann from Pixabay
迈向更安全的企业云租赁
为什么云上的企业 AI/ML 停滞了?主要是出于正当的安全考虑。AI/ML 对数据的贪婪胃口——其中许多是敏感数据——已经与企业的安全态势产生了严重冲突。
但人工智能/机器学习向云进军似乎是不可避免的。企业如何将这种需求与相关的安全问题协调起来?
一些企业向过去看齐。但是,不幸的是,旧的安全方法似乎不能很好地工作。最近来自 Capital One(和其他公司)数据泄露的头条新闻似乎强化了这一点。
在这篇文章中,我将描述基于身份的安全性的关键考虑因素,这些考虑因素为支持云上的企业 AI/机器学习提供了必要的安全基础。通过解决这些问题,阻碍 AI/ML 采用的安全障碍可以得到缓解,企业可以再次加快 AI/ML 的采用。
企业需求推动了 AI/ML 云的采用
今天,AI/ML 正在推动对全新企业数据方法的需求——这种方法支持比旧的遗留事务系统大几个数量级的数据量。
此外,分析和训练如此大量的数据所需的可扩展性要求迫使企业走出相对安全的数据中心的舒适限制。现在,只有主要的云平台才能真正提供现代 AI/ML 所需的经济高效、按需、可扩展的 GPU 基础。
因此,毫无疑问,向基于云的人工智能/人工智能进军正在进行中。
Photo by David von Diemar on Unsplash
但是旧技术不适用于云计算
过去,主要的企业安全基于保护网络边界。它的目标是在企业数据中心周围建立一个不可渗透的网络屏障,前提是有了安全的网络边界,数据中心内的所有系统、数据和资源都是安全的、可信的。
在当时,这是有意义的,因为大多数应用程序和资产几乎只存在于数据中心内或在数据中心内协作,从而使应用程序开发、操作和安全管理更容易。
时代确实已经发生了变化,现在,不幸的是,用于保护传统数据中心的旧技术被发现是基于一个有根本缺陷的假设,即网络边界实际上是安全的。但是,由于多种原因,这被证明是一个有缺陷的合理假设。
首先,今天的敌人更加聪明,并且获得了更好的工具,导致网络边界看起来变得更加漏洞百出。优步最近在云上的数据泄露无疑证明了这一点。
第二,当企业保护他们的云租用时,会出现错误。不幸的是,只需一个终端配置就能被攻破,从而让敌人能够在整个网络的很大范围内迅速扩大立足点。
我认为仅仅是熵——安全配置不可避免地会随时间漂移——就足以成为不信任基于网络的安全边界的理由。也许首都一号最近在云上的体验是这种情况最令人心酸的例子。
最后,云的本质也产生了一个安全问题:默认情况下,许多资源在创建时就被设计成可以通过互联网访问。这创造了一个新的复杂性级别—为所有云组件提供安全性—这是大多数企业都没有准备好的。一个错误就可能导致灾难性的数据泄露。
企业安全团队的担心是正确的。显然,这些问题很重要!
事实上,如此之大,以至于我认为现在应该在网络边界可能被突破的明确假设下设计现代云安全方法是公平的。
然而,AI/ML 从业者——数据科学家——需要大量敏感数据,这加剧了这个问题。显然,允许大量敏感数据在云上持久存储会带来非常现实的安全风险,必须加以缓解。
毫不奇怪,这导致了一种新的安全模式。
Photo by Kelly Sikkema on Unsplash
身份是新的安全边界
今天,身份已经成为新的安全边界。简而言之,基于身份的安全性确保您是您所说的那个人,并且只允许您做您被允许做的事情—无论您位于何处,也无论您的访问方法如何。
基于身份的安全声明您的身份(或与您的身份相关联的凭证)包含身份验证方法(您是谁)和与您的授权相关的信息(您能做什么)。更具体地说,如果没有您的身份提供的适当凭证,就无法访问应用程序、服务、资源或数据。
Figure 1
集成身份管理至关重要
那么,随着身份成为云租赁安全的焦点,应该如何管理身份呢?以下是与企业云租赁相关的一些关键考虑事项。
首先,本地和云目录(例如:微软的 Active Directory 或 LDAP)应该同步(图 1 中的“1”)。这使得无论身份在哪里创建或使用,都可以一致地管理身份和关联的凭据。
从数据科学家的角度来看,这成为基于身份的方法保护敏感 AI/ML 数据的基础,同时还为访问云和内部资源提供了便捷的单点登录(SSO)体验(解决了管理多个 id 和密码的常见问题)。
其次,本地实例是提供单一权威身份源的主实例。这将简化身份管理流程,同时降低因人为错误和配置复杂性导致的安全风险。
基于角色的访问控制(RBAC)是访问/授权管理的基础
RBAC 或基于角色的访问控制是一种管理授权的方法。角色通常在企业的身份目录中维护(例如,Active Directory)。这些角色用于控制对资源的访问。
RBAC 是这样工作的(尽管这是一种简化):角色(图 1 中的“2”)通常被创建来表示工作职能;权限被分配给角色,以允许执行各种操作。然后,用户/员工通常被分配到组,这些组又被分配到角色。瞧,已经在身份、组、角色和访问资源所需的许可之间建立了联系。
这创建了一个有帮助的间接层:用户没有被分配权限,而是通过成为一个角色的成员来获得权限(图 1 中的“3”)。现在,用户权限的管理得到了简化,因为它只需要为用户/员工的帐户分配适当的角色。
也许最重要的是,这种方法不仅提供了定义组织中数据科学家(和其他人)角色的规范方法,还简化了授权管理,从而有助于避免可能导致安全风险的错误。
结合身份管理的 RBAC 通常被称为 IAM,即身份和访问管理。
将所有这些放在一起(一个非常简单的场景)
让我们假设敏感数据一直保存在企业的云租户上。该数据在企业目录中被分配了一个资源名(假设为“数据资源”)。安全小组规定,访问“数据资源”需要“数据读取”权限。这种关系也在企业目录中维护。
继续我们的场景,在企业目录中已经建立了一个“数据科学家”角色(图 1 中的“2”),表明被分配了这个角色的员工被期望执行 AI/ML 功能。读取资源(“数据读取”)的权限现在添加到角色中,表明该角色能够对资源(“数据资源”)执行适当的操作。
现在,让我们假设一位新的数据科学家加入了企业。如何向他们提供对先前定义的资源的访问?
首先,他们的身份是在企业目录(例如,活动目录)中创建的,由于企业目录与云目录是同步的(图 1 中的“1”),因此这位数据科学家在整个企业中只有一个身份。
新聘用的数据科学家的身份被分配到“数据科学项目”组,这当然反映了他们参与新的数据科学项目。最后,为了完成该场景,将“数据科学家”角色添加到“数据科学项目”组中。
这就在企业目录中建立了关系,提供了凭证(图 1 中的“3”),允许数据科学家访问必要的资源。
首先,一个身份(对于新数据科学家)链接到一个组(新数据科学家组,“数据科学家项目”),该组链接到一个角色(“数据科学家”)。该角色与允许访问资源(“数据资源”)的权限(“数据读取”)相关联。
瞧,数据科学家可以访问必要的资源。
这种情况下需要注意的最后几件事:
- 由于企业和云目录是同步的,因此这些关系中的每一个都可以在企业和云中使用—单点登录(SSO)可以在企业及其云租户中使用
- 借助身份管理,只有获得适当授权的经过身份验证的用户才能访问资源,即使黑客获得了云租户的访问权限,他们也无法访问受基于身份的安全方法保护的任何敏感数据
- 简化了身份管理,尤其是敏感安全配置的传播
请再次注意,这是一个有些琐碎的示例,仅用于说明各种组件和关系如何互操作。
Photo by Yoal Desurmont on Unsplash
AI/ML 是重新思考云安全的催化剂
向云上的企业 AI/ML 进军已经开始。似乎很明显,旧的安全方法已经跟不上 AI/ML 对数据的需求。这阻碍了企业对云原生 AI/ML 的采用,迫使企业转向基于身份的现代安全方法。
新的基于身份的安全方法肯定比旧的方法更复杂。管理身份、角色,并在企业及其云租户之间同步它们,确实需要新的规范水平。尽管如此,企业对 AI/ML 的需求正在一个又一个行业加速增长。企业现在开始重新思考他们的云安全实践。
看来,基于身份的安全不仅是一个先决条件,而且可能是改变企业传统上谨慎的安全姿态的催化剂,使企业在云上采用 AI/ML 的速度再次加快。
为什么我要留下数据
数据分析师工作的利与弊
Photo by Mika Baumeister on Unsplash
这篇文章不是试图抨击,而是对数据职业的本质给出一些见解。从初创公司到上市公司,我在各种规模的公司工作过,作为一名分析师,在某种程度上作为数据科学家,我的观点纯粹是在 B2C 技术公司的背景下。重要的是要认识到,数据专业人员的工作描述因组织而异。我将概述利弊,以及为什么我决定完全离开这个利润丰厚的行业。
让我们从产品分析师一天的工作背景开始。
产品分析师的一天
9:00 到 9:15 -上车,泡一杯茶,在桌子上吃早餐
9:15 到 9:30——查看电子邮件、吉拉待办事项、待办事项、时差、日历
9:30 到 12:30——继续昨天开始的分析。SQL 查询,懈怠同事为什么 TF 这个表一夜之间不见了。伙计们,扑灭这些数据大火。
12:30 到 1:30 -吃我的脸
1:30 到 2:30——将查询到的数据转换成一个看起来不错的报告。Flex dat python,dat Tableau,dat badonkadonk。不,真的,你的屁股因为整天坐着开始疼了。
2:30 到 3:30- 与软件工程师、项目经理和设计师开会,讨论即将到来的特性实验需求
3:30 至 4:00- 记录特性要求
4:00 到 4:15——我的咖啡因在哪里
4:15 至 6:00 -总结分析,从数据同事那里获得第二种意见,讨论他们在各自领域的发现,安排会议以展示资料/报告
冲洗并重复。
比较产品数据角色和商业数据角色有点像苹果和橘子。两者都是时间关键,但方式不同;前者有技术成分,包括跟踪事件和解决相当抽象的产品问题,通常带有行为语气。商业数据角色通常关注业务顶线,具有更多建模、预测功能,并且可以直接支持管理层。
赞成者
- 对于好奇的人来说,这是显而易见的。花几个小时浏览几亿个划行的数据集,并弄清楚所有这些,对于那些从理解用户在做什么中得到乐趣的人来说,这是梦想成真。当你发现有趣的见解时,会有一定程度的个人满足感——哇,我们上传的照片没有一张被这些产品浏览过!为什么会这样?也许我可以在这里帮助摄影师……并回答你自己关于生意的问题。你可能会有一种直觉,为什么某个页面或结账流程的转化率如此之低,你需要挖掘答案。如果这有价值,你可以把它交给一个愿意倾听的利益相关者。
- 利用高等数学的完美工作。大多数工作最多需要高中数学,计算出一些百分比的变化。有几条职业线给你提供了使用学位水平数学的最佳机会。贝叶斯统计,马尔可夫链,有人知道吗?是的,我的学位完全值得近乎破产。在数据科学领域,这一点更加明显。数学,而不是破产。
缺点
- 不言而喻,对于任何职业来说,真正考虑你的个性与所选择的职业相匹配,而不仅仅是一美元一美元。你的日常生活通常包括盯着黑屏几个小时,偶尔还会有股东会议。对于需要更多人际交往的人来说,这可能很难做到,更不用说在长时间的独处中工作会有多累了。当然,一个内向的人可能更适应这种角色。
- 截止日期,尤其是在科技公司,对于数据来说是不存在的。你的任务是典型的开放式问题,所以只要你的好奇心能让你走多远,你就能走进兔子洞,当你认为你的分析适合消费时,你就能画出一条线。当然,代价是时间。你所做的每一点分析都是为即将发布的特性浪费时间。坦率地说,你永远不会知道你的涉众是否决定使用额外的分析。如果你有强烈的执行倾向,这将是一项艰巨的任务。
- 在我所在的组织中,没有人对如何处理数据功能有任何具体的想法。当你是跨职能的,嵌入在一个由工程师、产品经理和设计师组成的团队中,你就是一个运送产品的小公司的一部分。如果你的动机是建设,没有比这更好的了。然而,你可能会在日常的单口相声中感到无关紧要。毕竟,你实际上没有做任何建设。当与数据同事坐在一起时,友谊和质量保证会更强。这里的缺点是缺乏所有权,因为任务在数据团队中共享;你经常离问题的背景太远,从来没有看到一个项目的结束。这导致了一种认识:你并不真正为任何人工作,就像工程师向工程主管汇报,或者营销助理向营销经理汇报一样,这可能会有点不和谐。
- 影响定义不清。为什么?让我们来分析一下数据同事与其他部门的关系:工程、产品经理、UI/UX 和营销人员,这些都是典型的利益相关者。工作流程通常在下游;你的工作支持他们的调查。在您的数据宝库中发现一些超出他们要求范围的有趣内容?你的工作是影响你的利益相关者,让他们知道你的发现会影响与其职能相关的关键绩效指标,或者少拐弯抹角,让他们看起来更好。你的工作取决于利益相关者是否愿意采纳你的建议。影响力是任何工作的一部分,然而对于一个被许多人视为辅助职能的职位来说,影响力没有那么重要。如果你决定停止对利益相关者的分析,你就是业务的阻碍者。如果你的利益相关者决定忽略你的分析,情况就不一样了。这引出了一个令人不安的问题:你在游戏中没有皮肤。数据常常与决定战略混为一谈,如果这是你在职业生涯中追求的,请三思。我认为,在一个不同的行业,比如大型制药公司,你的角色要重要得多;没有可靠数据的支持,一种药物是不会随意推出的。
- 很少有职业是以真正相关的方式运作的,也就是说,你越努力,影响越大。这些往往是独狼,吃你杀的类型。以销售人员为例;他们的工作做得越好,就能吸引越多的客户。或者在介质上书写。如果我写了一篇伟大的作品,这将被翻译成掌声,或花时间阅读。有一个非常明确的 KPI 与输出相关联,因此也有关于绩效的反馈。撇开政治议程不谈,你可以发表你最好的分析,但不能保证它会与你希望它产生的影响相称。这适用于许多基于团队的角色,但我要说的是,与工程、设计或营销相比,这种感觉在数据中更强烈,因为你并没有真正推出一个有形的功能。回到性格匹配的困境,如果你想更接近第一线/直接反馈你的努力,这也不是你的职业路线。该规则的例外是在早期创业阶段。
最终对我来说,缺点远远超过了优点,我开始意识到工作的性质与我对黑白效果的需求相冲突。对于那些也是系统思考者并希望看到更大图景的人来说,肯定有更合适的角色。然而,一些数据方面的经验可以作为产品经理和客户成功角色的巨大垫脚石。个性而不是技能往往被忽视,被认为是事业成功的一个无关紧要的因素,虽然你肯定可以做到这一点,但如果你发挥自己的优势,你的旅程会变得容易得多。
为什么在做了几个月的数据科学家后,我还要上机器学习课
R you ready to hear this?
你可能认为 480 小时对我来说足够了。
在我看来,没有什么比坐在教室里听别人讲授你已经非常了解的内容更让人心力交瘁的了。这就是我退出本学期选修的两门统计学课程之一的原因——这门课程是关于抽样调查的设计和分析,本质上是在调查的背景下重新教授基本统计学。虽然这可能对需要统计学应用复习课程的人有用,但作为该学科的专业学生,我被我的教授在这个 3000 级课程的第二周提出的问题激怒了:“你们都知道是什么意思吗?”
我是说,拜托。
至于我决定继续学习的另一门统计学课程,我也知道这门课的大部分内容。在过去的这个夏天,我在一家当地公司实习数据科学,并在实习前接受了 4 周的强化培训,在这之后,我对机器学习有了相对较好的理解,至少在统计应用方面。我花了 8 个多小时,一周 5 天,花了 12 个星期编码和学习从 K 近邻到神经网络的一切。然而,我学会了如何做,而不一定是做了什么。
虽然这学期才开始了几个星期,但我已经很感激我没有退出这门课。虽然当我们讨论回归和分类之间的差异时,我仍然偶尔会发现讲座很无聊,这是我在之前在上写过的一个主题,但我也终于理解了我已经在使用的这些技术背后的过程和内部工作方式。以前,当我要实现 K 最近邻之类的东西时,我对它是如何工作的有一个大致的了解,但我并不清楚在我的代码后面到底发生了什么。到目前为止,这堂课最大的教训是:为了完全理解何时使用一种技术而不是另一种技术,了解当你运行一行代码时数学上发生了什么是很重要的。以前,我会试错尽可能多的技术,以产生我认为最好的输出。现在,我希望这个课程能让我理解什么时候实际使用每个模型。
额外的收获是,我也在学习 R 语言的一切,而我在暑期培训中使用的是 Python。虽然我不一定需要知道如何用这两种语言编写代码,但是使用两种不同的程序加深了我对概念的理解,否则我可能无法理解。此外,虽然我通过实习计划接受了半正式的培训,但现在我将在成绩单上明确证明我上过这门课,并且应该理解统计机器学习。一场小胜利,但对 4630 号来说仍然是一场胜利。
为什么要将能源领域的多样性与人工智能及其他技术相结合?
技术的集成和数据源的多样性可以成为能源转型的催化剂,但这说起来容易做起来难
Photo by Scott Umstattd on Unsplash
什么是“融合多样性”?
它始于理解和认识到每个人以及每项技术都是独一无二的,都有不同的优势、能力和经验。整合多样性首先要认识到这一点,然后创造一个环境,让你可以发挥出最好的一面,这样当他们一起工作时,总和要比部分大得多。
在这篇文章中,我想把重点放在电力行业,在这个行业中,技术的集成和数据源的多样性可以作为能源转型的催化剂,而技术的限制和“对抗”(或简单的竞争)将打破整个过程。
为了想出前沿的解决方案,你真的需要有不同的视角和技能。我们都知道,在一个团队中,如果你有相同类型的人在做某件事(都是男性,都是老人,都来自城市,等等)。),您只能创建自己的解决方案类型。通过整合差异,它实际上允许你扩展你的视野,推动边界。人工智能有助于整合不同的解决方案,拓宽可能性的范围。
书籍和电影中的人工智能已经以不同的形式存在了很长时间。他们被描绘成有时友好,有时险恶。但在现实生活中,我们喜欢将 AI 视为增强智能。多年来,人工智能已经在许多不同的领域证明了自己的用处。在人工智能出现之前,计算机仅根据例子识别照片中的人的想法是闻所未闻的。今天,我们甚至使用人工智能来检查医学图像,以快速识别异常,挽救患者的生命。
吴恩达,Coursera 的联合创始人、百度人工智能集团的前负责人 / 谷歌大脑、将人工智能的变革性影响比作 100 年前的电力变革性影响,我当然同意他的观点。
Professor Andrew Ng is the former chief scientist at Baidu, where he led the company’s Artificial Intelligence Group. He is an adjunct professor at Stanford University. In 2011 he led the development of Stanford University’s main MOOC (Massive Open Online Courses) platform and also taught an online Machine Learning class that was offered to over 100,000 students, leading to the founding of Coursera.
事实上,AI 对不同的人意味着不同的东西。对于视频游戏设计师来说,人工智能意味着编写影响机器人如何游戏或环境如何对玩家做出反应的代码。对于我们大多数人来说,我们看到的人工智能更有可能是你手机上的一个应用程序,而不是智能机器人(或 Android!).它被用于幕后管理财务,建议你的下一部网飞电影,识别信用卡欺诈,阅读医学成像,并为病人找到合适的临床试验。人工智能参与了我们每天的决策。
预计 2019 年全球人工智能(AI)系统的支出将达到 358 亿美元,比 2018 年的支出增长 44.0%。随着各行业积极投资利用人工智能软件功能的项目,国际数据公司(IDC) 全球半年度人工智能系统支出指南预计,2022 年人工智能系统支出将增加一倍以上,达到 792 亿美元,2018 年至 2022 年预测期的复合年增长率(CAGR)为 38.0%。
[## 2019 年,全球人工智能系统支出将增长至近 358 亿美元…
IDC 通过设备、应用、网络和服务来研究消费市场,为以下领域提供完整的解决方案
www.idc.com](https://www.idc.com/getdoc.jsp?containerId=prUS44911419)
但在能源领域,它仍有很长的路要走。与许多其他行业相比,在电力行业,我们可以利用增强智能来扩展人类的能力,并完成人类或机器无法独自完成的事情。我们今天面临的一些挑战来自于过量的信息。更快的通信、分布式计算和物联网(IoT)导致了海量数据的产生(呈指数级增长),而物联网本身和社交网络鼓励了大部分数据的非结构化。数据太多,人类专家无法跟上所有的变化和进步。
Photo by Jose Fontano on Unsplash
开启智慧
借助增强智能,我们可以“解开”数据中更多的实质和相互关系,同时将所需的信息放在我们的指尖,并用证据支持这些信息,以便利益相关者可以做出更明智的决策。这将允许专家和决策者扩展他们的能力,以便更好地服务他们的客户。机器做耗时的工作,这样我们才能做重要的事情。
在传统编程中,一切都是确定的,if-then-else 循环决定了软件如何响应变化的条件。当你比较已知值时,比如温度、文本字符串或电子表格中的数字时,这种方法非常有效。但是当你想把对象/决定/变化分类时,简单的 if-then 语句是行不通的。这个世界太复杂了,有灰色阴影和多个正确答案,概率答案成为一种要求。在电力行业,几乎一切都是概率性的(天气、消费者行为、高峰管理、风力涡轮机或太阳能光伏输出等)。).确定性系统可以告诉你,“答案是 X,因为比较成功”,例如恒温器上的温度,而在负载均衡或可再生发电中则需要概率性系统,因为你需要一个系统告诉你,“我非常有信心这是正确的答案,但我也有证据支持这些替代方案”(例如,储存能量以备后用,减慢风力涡轮机,因为风力可能超过限制,等等)。).
因此,即使对好莱坞来说,人工智能通常意味着一个行为像人的角色,混合了一些比喻的计算机功能。对于数据科学家来说,尤其是在能源领域,人工智能是一种探索和分类数据以满足特定目标的方式。但不管是谁在定义 AI,关键的一点是,AI 就是智能。我们如何定义智力?人工智能有许多方面,每个方面都受到科学和哲学进步的影响。计算机科学和电气工程决定了 AI 如何在软件和硬件中实现。数学和统计学决定了可行的模型并测量了性能。因为人工智能是以我们认为大脑如何工作为模型的,心理学和语言学在理解人工智能可能如何工作方面发挥了重要作用。哲学提供了关于什么是智力和伦理考虑等主题的指导。正是所有这些研究领域的融合,才使我们有可能建造出具有智能行为的系统。电网,尤其是可再生能源电网,需要这种智能。
Photo by Arthur Poulin on Unsplash
数据学习在电力行业的应用
AI 擅长什么,不擅长什么?答案往往归结于数据。人工智能技术就像任何技术一样会改进,所以今天的限制可能是明天的突破,但当前的人工智能技术非常擅长分类和翻译(解释)。
不管你说的是自然智能还是人工智能,没有什么是不能学习的智能。人类生来就有某种程度的先天智能,我们可以通过学习来建立这种智能。先天智能机器唯一拥有的是我们给予它们的东西,而常识目前不在那张很短的清单上。不过,我们提供的是检查示例的能力,以及基于输入和期望输出创建机器学习模型的能力。对于监督学习,我们为人工智能提供了例子。无监督学习是你提供输入,而不是标签,让机器推断质量。这种类型的学习对于聚类数据是有用的,其中数据根据其与邻居的相似程度以及与其他事物的不同程度进行分组。
一旦数据被聚类,您就可以使用不同的技术来研究这些数据并寻找模式。强化学习是机器做出决定,并根据决定是否正确给予奖励或回报。你可以使用强化学习来教机器下棋或导航障碍课程,如需求侧管理或发电计划。深度学习是应用于神经网络的机器学习的子集。深度学习网络指的是节点的排列,这肯定会是下一代与能源相关的人工智能应用
当选择用于训练机器模型的数据源时,重要的是对在生产中会遇到的数据的代表性数据进行采样。可能出现的一个挑战是训练数据无法预测未来的输入数据。这个问题必须在这个过程中尽快解决。不一定你需要所有的答案,而是你确定了一个处理这种情况的过程。因为垃圾输入等于垃圾输出,没有任何人工智能解决方案可以从坏数据中给出好的结果。然而,如果您的一些数据是坏的,您可以做的是识别并保留您的可用数据,并收集(或构建)可以在您的解决方案中使用的新数据。您应该考虑您必须处理的数据的数量、质量和敏感性。
可再生能源的整合,说起来容易做起来难
这对于电网运营商来说变得越来越复杂,对于较小的设施或社区来说也是如此。它现在涉及将可再生能源生产资产纳入自我消费(太阳热能和/或光电、从生物量或沼气生产热量、地热能……),以使制造商或社区能够减少其碳足迹,使其能源组合多样化,并减少其对化石燃料的依赖,这将有助于更好地控制与能源相关的长期预算。
在任何情况下,它都是优先激活的杠杆:“未用完的能源没有成本,也不会造成污染”。另一方面,即使有一些很好的成功或更有吸引力的行业,可再生能源和回收技术的部署在行业中仍然太落后。有许多障碍需要克服:巨大的投资成本、当前与化石燃料和廉价电力的竞争、对与这些创新技术相关的运营风险的恐惧、缺乏技术知识或运营能力等。这就是人工智能和数据科学可以提供很大帮助的地方。可以分析许多积极的经验,并将其视为“学习”阶段的范例。这将旨在通过回收技术和可再生能源向该行业提供短期内的可能性,重点是主要部门和一套技术。
例如,我们可以考虑使用智能储能系统优化分散式发电(太阳能光伏或风力涡轮机)。在这种情况下,如果将第二天的天气预报传送给 AI,则可以根据网络的预期状态来准备存储容量。AI 可以决定整夜卸载存储单元(例如混合能量存储),以便第二天可以在那里存储最大电流。由于这种控制功能,还可能知道较高电压电网水平的状态。然后,配电侧(低压电网)可以帮助维持较高电网水平上的电压(甚至在涉及足够容量的传输水平上)。除此之外,所产生的电力要么直接消耗(优先级 1),要么注入电网,或者根据电网的状态临时储存。在当地电压问题的情况下,当地储存的电力(电池)可以馈入电网。在更广泛的情况下,能源供应商可以根据某些信号(天气预报、平衡组等)主动控制智能模块。).通过这种方式,IES 对本地电网电压的维持产生积极影响,更一般地说,对供电安全(本地和分散系统服务)产生积极影响。就客户忠诚度和新产品开发(服务、合同转让等)而言,它也是能源供应商的理想平台。).
Photo by Stephen Dawson on Unsplash
游戏状态:创新技术的智能仪表板,根据需求进行集成和定制
首先,除了传统的解决方案,还有许多相对成熟的创新技术来生产和自我消耗能源,无论是热能(在与大多数用途相适应的温度水平)、冷却还是电力。而且,“相对于”每一个单一的需求,甚至有几个可供选择的解决方案。
在第一种方法中,这些技术可以分为三个互补的类别:
提供所谓低温热的技术,如地热能(极低能量)、干燥蒸汽回收或太阳能热,适用于家庭热水生产、空间加热或低温工业过程,如食品工业中的巴氏杀菌。提醒一下,集中太阳能,高热地热(阴影部分),以及中低能量地热能在地图中有所显示,但不在本次研究范围内。
Solar Energy Generating Systems (SEGS) solar complex in northern San Bernardino County, California. The first commercial parabolic trough power plants with a total of 354 megawatts went online in California. By USA.Gov — BLM — BUREAU OF LAND MANAGEMENT — http://www.ca.blm.gov/cdd/alternative_energy.html, Public Domain https://commons.wikimedia.org/w/index.php?curid=15957890
2)提供所谓高温热量的技术,如生物质,沼气或某些熔炉的烟气回收,这使得满足需求成为可能,特别是冶金、玻璃或化学领域的需求。
3)发电技术,对所有研究的过程都有用。这些可以由例如太阳能光伏、风能或生物质或沼气热电联产单元覆盖。
Source: Adapted from The National Energy Education Project (public domain)
与技术整合相关的问题:碳足迹、竞争力、条件整合和开发
2018 年在欧洲许多制造商中进行的一项调查(ref:www.ademe.fr/mediatheque)显示,尽管遇到了困难,但这些技术已经在地面上部署,通常都很成功。受访的工业企业唤起了第一系列的利害关系:减少二氧化碳排放,发展负责任的企业形象,这可以带来营销优势,同时符合他们的环境和社会承诺。
作者补充道:
这些技术的发展水平是一种进步,特别是在能源公约和拉加经委会各自竞争的历史时期,EnR 和拉加经委会提出了一个解决方案(取决于化石能源价格的波动)。或者,用莎士比亚的话来说:这些技术的部署水平相当不均衡,特别是因为它们与传统能源相比的历史竞争力水平,尽管带来可再生能源或能源回收解决方案的生产成本是可见的(独立于化石燃料价格的波动)。
然而,即使受访的工业企业提到环境和品牌问题,他们也同意竞争力问题是头等大事:换句话说,可再生能源或能源回收技术的部署只有在有助于提高竞争力的情况下才会进行。
Photo by paolo candelo on Unsplash
在通往竞争力的路上
对于可再生能源来说,被认为是竞争力的附加因素总是一个挑战。特别是在没有补贴的情况下,在当前的市场条件下,天然气价格非常低,除了少数特殊情况,它们在全球的竞争力低于传统的参考解决方案(电力和天然气)。可以注意到,受益于更好的供应合同,这些常规能源对于大用户来说往往可以以更低的成本获得。在这种情况下,公共政策和与之相关的支持机制,以及人工智能和储能( IES )成果的最大化发挥着重要作用。在补贴和技术整合的推动下,许多解决方案可以给工业带来竞争力。但 RE 与 ie 的结合应该被视为更大竞争中的团队成员。
此外,投资一项能源资产往往是一个中期或长期的选择,折旧期较长。今天的选择将对未来 5 年、10 年、15 年或更长时间产生影响。今天选择投资一种或多种可再生或回收资产可能是一个长期的回报选择,因为它允许能源组合多样化,并减少对价格可能特别不稳定的传统能源的依赖。此外,这种策略还允许至少部分地克服燃料、电力价格的上涨,或者甚至在较小程度上克服 CO2 信用市场的上涨。
技术的整合必须是对一个场所的需求和可能性的整体思考的一部分。在工业场地上整合太阳能装置、风力涡轮机、生物质锅炉或甲烷化工厂、空间需求和适应的基础设施,甚至更好地评估(如果不是很好的预测)未来的结果。清洁技术资产的整合可能还需要对与之相关的分销进行重大改革。根据相关站点的拓扑结构、集成约束、需求位置,变化可能不是无关紧要的。在许多情况下,甚至可能需要部署新的电网或安装存储容量(因为在实现热量回收和使用回收的能量之间存在时间差,或者因为某些能源的可变性)。人工“增强”智能需要有效地完成这一切。以下事实强调了这一点:一般来说,由于可再生能源相对缺乏灵活性,因此与传统竞争对手(电网、常规发电、天然气产热)相比,可再生能源需要更具体的操作知识。
Credit: Optimizing power generation with Hybrid Energy Storage and AI (CC BY-NC-SA 2.0), © Smart Phases Inc. (DBA Novacab)
一方的长处抵消了另一方的短处
事实上,传统技术的优势在于(几乎)始终可用、反应灵敏且灵活。它们很容易适应负载和活动的快速波动,因此能够提供具有大量响应性的负载曲线。大多数可再生技术并非如此。另一方面,太阳能和风能技术通常是可变的,在有太阳和/或风的情况下只产生电和/或热。生物气或生物质的全球生产和燃烧过程也是如此,这可能取决于当地资源的可用性(液体流出物或各种废物)。然而,可以通过智能地将能源技术与热回收技术和可再生能源相结合来克服这些困难,以提供场地的不同用途。例如,我们可以考虑将区域供热与储能解决方案相结合,以应对某些可再生能源资产或异步热回收解决方案生产的可变性。为了促进可再生能源的整合,实业家必须依靠所有生态系统的贡献:技术提供商、服务提供商、通过创新商业模式融资的行为者,以便分担风险和克服上述困难。
对于我们人类来说,这样的项目可能看起来很复杂,但在人工智能的帮助下,它们可以从经济和环境的角度带来高性能水平。为了提供最大的价值,重要的是专注于改善我们的人工智能的训练时间,并从少量数据中获取最大的洞察力。最终结果是,解决方案需要更少的数据来构建,更快地培训和部署,并保护您的知识产权。
简而言之,混合能量储存(电力、热能、混合动力、机械等。)和 AI 共同能够解决 re 的这个缺点。传统技术和可再生能源与智能储能技术的结合促进了这些技术的整合和利用。事实上,虽然所有这些技术看起来可能相互竞争,但这些技术必须首先被视为相互补充,就像它们可以补充传统能源(特别是电力和天然气)一样。整个挑战在于构建一个能源系统,在该系统中,各种资产相互补充,使一种技术的优势与其他技术的劣势相互抵消(每种技术都有其优点和缺点,需要在每个工业场所逐一评估和考虑这些优点和缺点),从而能够从操作和经济角度部署高效的能源解决方案。并且在每个工业现场对应一个特定的解决方案。在这里,多个数据源是优化解决方案的关键,人工智能是处理这些海量信息的必要手段。
正如埃德蒙·希拉里曾经说过的:当你去山上,你看到它们,你会钦佩它们。在某种意义上,它们给你一个挑战,你试图通过攀爬它们来表达这种挑战。能量转换是前方的山脉。它向我们挑战,我们需要更好地结合我们的优势和“增强智能”,以尽可能最好的方式攀登它!
本文是荷兰国际集团夏羽·比洛多关于人工智能和能量储存系列文章的一部分。工程博士,对外经济合作中心。Smart Phases 首席技术官( Novacab )、加拿大工程师协会会员和能源中心专家撰稿人。
您可以在此找到其他文章:
[## 人工智能在一个“别无选择,只能让它聪明”的能源行业!
可再生能源的繁荣对电力部门来说是一个很好的机会&用聪明的方式对抗气候变化…
towardsdatascience.com](/artificial-intelligence-in-a-no-choice-but-to-get-it-smart-energy-industry-1bd1396a87f8) [## 组合效应对抗蝴蝶效应
人工智能促进储能,为可再生能源提供弹性和效率…
towardsdatascience.com](/the-combo-effect-against-the-butterfly-effect-bf7dd7a507a0) [## 没有智能储能,就没有快速(足够)的能量转换!
人工智能和储能 fast 需要强耦合,以便与可再生能源实现高效过渡,从而对抗狂暴的…
towardsdatascience.com](/no-fast-enough-energy-transition-without-intelligent-energy-storage-72cfbd3c096b)
为什么智力可能比我们想象的要简单
来自大脑皮层的教训
Photo by Paweł Czerwiński on Unsplash
建造一个人,更确切地说,一个人脑,需要多少信息?
毕竟,我们是地球上最复杂的物种。更进一步说,我们的一些大脑认为我们的大脑是宇宙中最复杂的结构!
然而,一个番茄比一个人有更多的基因。准确的说是 7000 多。
Arguably not the most complex structure in the observable universe. Photo by Immo Wegmann on Unsplash
看着我们的基因,我们很难弄清楚我们所有的复杂性是由哪里编码的。
一开始只有大约 20000 个基因,其中大约一半与其他事情有关,如建造手脚和重要器官。
从数学上来说(考虑到我们的基因组可以被视为一种携带信息的代码,由类似于图灵机的东西进行处理,正如我在这里更详细地解释的那样),我们的基因组在无损压缩后只携带 2500 万字节的大脑设计信息。
将它与 10 个⁵连接进行比较(一万亿次!)据估计,成年人在新大脑皮层中拥有这种结构,新大脑皮层是我们大脑的最新部分,只存在于灵长类动物中,在智人中已经变得非常大。你会看到,如果我们对基因的理解没有完全错误,假设我们的大部分知识和能力直接编码在基因中是不合理的。
唯一的选择是,需要一种更简单、更有效的方式来定义我们大脑和新皮层的蓝图。
并以此来构建一个智能系统的原型。
大脑功能的统一理论
杰夫·霍金斯在他关于智力的书中抱怨说,大脑的普遍图像是由高度专业化的区域组成的。
他将这种情况与 19 世纪的生物学家进行了比较,这些生物学家对种类繁多的物种进行了越来越详细的研究,却没有注意到生命背后的统一原则。直到达尔文提出他的 进化论 之前,没有人知道如何用一种总括性的叙述来描述自然界的多样性。
同样,大脑可能看起来像是由许多不同的、高度专业化的大脑区域组成的,但它们明显的专业化不应该让我们得出结论,它们可能不会都基于相同的解剖学和算法原理工作。
事实上,我们观察到新大脑皮层的解剖结构具有惊人的同质性。 神经可塑性 表示大部分脑区可以轻松承担以前由其他脑区执行的任务,显示出其设计原理背后的某种普遍性。
在他的畅销书T5【自我改变的大脑】T6、Norman Doidge中,讲述了病人将整个感觉系统重新映射到大脑新部分的令人印象深刻的故事,就像人们通过将相机记录的视觉刺激映射到直接进入嘴里的感觉刺激来学习用舌头看东西。
对中风患者的研究同样表明,中风导致的能力丧失通常会被新的大脑区域重新学习,天生耳聋的人可以重新映射他们的 布洛卡区 (负责语言处理)来控制他们的手部运动,他们通过手语交流,而不是通过嘴巴的运动来表达讲话。
大脑发挥出 不可思议的能力和灵活性 来学习新事物。大多数人可以学习他们成长过程中使用的任何一种语言,或者在以后的生活中选择学习一种新的语言,可以学习他们选择的任何一种乐器(不可否认有不同的成功)等等。
可塑性和灵活学习的事实可以解释为,根据我们基因中信息的稀疏性,指向一个普遍的结构,这种结构隐藏在新大脑皮层的 生物设置和学习算法 中。
思维的结构
很难将思维本身概念化(正如我在最近一篇关于思维几何学的文章中更深入地探究的那样),但是有一些特定的结构和模式深深地贯穿于我们认知的几乎每一个方面。
正如 雷·库兹韦尔 在他的《如何创造心灵一书中解释的一样,我们以一种分层的方式感知世界,由复杂程度不断增加的简单模式组成。根据他的观点,模式识别形成了所有思想的基础,从最原始的模式到高度抽象和复杂的概念。**
以语言文字为例。小线条组成了我们可以识别为字母的图案。字母的组合形成单词,然后是句子。句子构成段落,整篇文章。最后,从以高度特定的方式排列的少量最小模式的分类中,叙事和意义出现了。
模式识别的生物学
现代神经成像数据表明,新大脑皮层由一种统一的结构组成,称为皮层柱。每一个都是由大约 100 个神经元组成的。
库兹韦尔提出,这些列构成了他所谓的最小模式识别器。通过将模式识别器的一层又一层相互连接来创建概念层次,每个模式识别器都专门从许多不同的可能感觉形态(如眼睛、耳朵、鼻子)的输入中识别单个模式。
基于基本的特征提取(如检测视觉刺激的边缘或识别音调),这些模式堆积起来形成越来越复杂的模式。
Layers detecting patterns of increasing sophistication in visual data, leading to abstract labels like “elephant” or “penguin”. Credit to Sven Behnke [CC BY-SA 4.0]
模式识别器并不局限于处理视觉或听觉刺激。它可以将各种信号作为输入进行处理,根据输入中包含的结构生成输出。学习意味着连接模式识别器,并学习它们的权重结构(基本上是它们对彼此输入的响应有多强,以及它们之间的互联程度),类似于学习神经网络时所做的事情。
但是大脑是如何在如此擅长解决许多不同任务的同时又如此同质的呢?答案可能在神经科学和计算机科学的交叉点上。
信息的作用
视觉、听觉和感官信息有什么共同点?显而易见的答案是,这都是某种信息。
坦白地说,在信息时代,信息的定义有点棘手,而且被扔得太多,但在大脑信息处理的背景下,它有一个技术含义。理解这种架构如何为我们工作得如此之好的一步在于认识到大脑可以被认为是一个信息处理设备。
神经元的输入有很多一致性,这是神经计算的基础。无论大脑在处理什么信号,它总是由神经元的空间和时间放电模式组成。我们在外部世界观察到的每一种模式都在我们的感觉器官中编码成神经放电模式,然后,根据库兹韦尔的说法,这些模式在模式识别器的层次结构中上下流动,直到成功提取出意义。
神经科学证据得到了计算机科学观点的支持。在他的书 中,主算法 , 佩德罗·多明戈斯 提出,我们可能会找到一种通用算法,给定 正确的数据 ,允许我们学习几乎所有我们能想到的东西 。
该通用学习算法甚至可以由现有学习算法的混合组成(如贝叶斯网络、连接主义或符号主义方法、进化算法、支持向量机等。).
大脑也可能使用类似于这种通用算法的东西,尽管我们还不太确定大脑如何从算法的角度学习。作为最基本的例子,当然,有 Hebbian 学习,它已经被证明在某种程度上发生在大脑中。对于更复杂的算法,研究人员一直在试图寻找在大脑中实现反向传播的生物学合理机制。
但是很明显,大脑非常善于学习,并且需要以一种我们原则上可以理解并且很可能在我们的计算机上模拟的方式来学习。
神经网络中的信息丢失
识别一个模式的诀窍是解码它,解析出隐藏在信号中的相关信息。了解大脑如何做到这一点可能是理解智力如何工作的关键步骤之一。
《论智能的的作者杰夫·霍金斯抱怨说,在研究信息在大脑中的作用时,我们缺乏工具,但在理解计算架构中的信息流方面已经取得了越来越多的进展。
今年夏天,我有幸参加了以色列神经科学家 纳夫塔利·蒂什比 关于他的信息瓶颈法的两场讲座。他目光炯炯,热情洋溢,让整个人群欢欣鼓舞,他解释了当深度神经网络从输入数据中提取相关特征时,信息是如何过滤的(观看他在斯坦福大学的演讲以了解介绍)。
该理论阐明了 信息如何在深度神经网络 中流动(并给出了深度网络比浅层网络工作得更好的一个很好的原因)。
当你学习从 300x300 像素的图片中识别一张脸时,你有 90000 像素包含信息,但是如果你知道通常组成一张脸的是什么,一张脸可以由更少的信息来表征(例如 相关特征 像眼睛的距离、嘴的宽度、鼻子的位置等等)。).
例如,这种想法被用在一些深度生成模型中,如自动编码器(正如我在关于如何让计算机做梦的文章中更详细地写的那样),其中数据的潜在、低维表示被学习,然后用于生成高维、看起来逼真的输出。
The basic setup of a neural network. Credit to Glosser.ca [CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)]
像随机梯度下降这样的网络训练方法,通过有效地从输入中抛出所有不相关的信息,让网络过滤掉相关的模式(就像在对照片中的物体进行分类时忽略照片的背景,就像Iangood fellow在他的书 深度学习 中描述的那样)。
Tishby 把它比作从瓶子底部流到顶部的水:瓶颈越来越紧,越来越少的信息可以流过。但是如果瓶颈设置得好,到达顶部的水最终会携带所有必要的信息。
Photo by Jadon Barnes on Unsplash
我提出这一点是因为我认为这种信息理论的观点可以帮助我们理解新大脑皮层由模式识别器组成的想法。
模式识别器从数据中提取模式。这些模式只形成输入的一小部分,所以本质上,大脑的模式识别器被设置为从我们的感官数据中提取与我们生存相关的信息,并将这些提取的数据分类到知识的层次中(我在我关于思维几何的文章中更详细地讨论了如何将这些数据构建到概念空间中)。然后,我们可以用这些来给这个混乱的世界带来秩序,增加我们生存的机会。
这是大脑的工作。其核心是一个信息过滤和排序设备,不断从数据中学习有用的模式。
Jürgen Schmidthuber 将科学的进步比作寻找更高效的压缩算法:牛顿和爱因斯坦出色地设法没有提出庞大而难以理解的公式,而是用可以写成一行的方程表达了一系列令人难以置信的现象。Schmidthuber 认为,这种超压缩可能在某一点上也适用于一般的学习者。
压缩和信息过滤很可能是我们所认为的智能的核心,所以我们在构建自己的智能系统时,不妨从中学习一些东西(就像我们已经做的那样)。
为什么智力可能比我们想象的要简单
谈到人工智能的未来,我不是预言家,我希望你被教导不要太相信互联网上陌生人的意见,所以要有所保留。
我承认,信息处理和智能不仅仅是简单的模式分类(参见我关于蚂蚁和神经网络问题的文章)。
在我们“解决”智能之前,有许多问题需要解决。正如 Yann LeCun 在这里指出的,推断因果关系或一般常识知识结构是一个大问题,在算法中建立世界预测模型(正如我在关于贝叶斯大脑假设的文章中详细阐述的那样)很可能是许多必要步骤中的一个必要步骤。
当训练机器人智能地执行任务时,在强化学习中会遇到与更好的目标函数的需求相关的其他未决问题。聪明意味着解决问题,其中一个重要方面是找出定义目标的最佳方式,然后实现这些目标(在大脑中,这一角色在一定程度上被认为是由基底神经节扮演的)。
因此,仅仅堆积模式识别器不会突然带来像人类一样四处推理的机器人。
Photo by Franck V. on Unsplash
我仍然认为,新大脑皮层及其学习算法背后的简单性和普遍性的新证据所支持的遗传代码中所包含的信息的稀疏性应该让我们暂停一下,并更认真地抓住在不久的将来建造高度智能机器的机会(Kurzweil 预测机器将在 2029 年通过图灵测试,在 2045 年通过人类水平的人工智能)。
正如 P.W. Anderson 在他关于科学等级的著名论文中所说的那样, 更多的是不同的 ,如果我们想出正确的方法来扩大简单事物的使用,可能会产生更多的结果。其中一些已经在深度学习最近的成功中显而易见,深度学习与扩大可用数据和计算能力密切相关。
对我来说,理解和建立我们自己的智能绝对是一个激动人心的前景。
但是正如许多人强调的那样(这次 Ted 演讲给出了一个总结),人工智能的崛起可能会对整个人类产生重大影响,应该作为一个问题认真对待。而且即使我们高估了这个问题(因为我们坦白地爱思考世界末日有点太多),我们也应该安全胜于遗憾。
因为毕竟大自然是通过对进化 的盲目幻想而产生智慧的。看起来我们也可能很快会想到它。
为什么升压拟合有残差
Boosting 算法的一般解释
Gardens By The Bay Singapore
Boosting 算法在每次迭代中搜索最优的弱学习器函数,该函数在训练数据上最小化损失函数。每个新的学习者都会试图“纠正”以前的学习者所犯的错误。
动机
不用多介绍,大部分数据科学家应该都有使用各种 boosting 模型的经验,比如 XGBoost,用于项目或者 Kaggle 竞赛。许多文章将 boosting 算法描述为“递归地添加弱学习器以拟合先前学习器产生的残差”。嗯,是真的,但是为什么呢?本文旨在从更广泛的意义上解释助推的概念。
增压解释
Boosting 或Forward Stagewise Additive Modeling是一种集成学习方法,它将许多弱学习者组合起来,形成一个行为类似于强学习者的集合。它一般可以描述如下。
Boosting algorithm (Source: ESLII)
在详细解释每个步骤之前,让我们澄清一下这些符号。
- x,y :训练数据和实际值
- f ᵢ (x) :在 i 迭代中收集弱学习者
- M :要添加的树数
- N :训练数据点数
- β :扩展系数或集合中后续弱学习者的“权重”
- b(x;γ) :由一组参数 γ 表征的弱学习函数
- L(y,ŷ) :损失函数
现在让我们来看看每一步。
- 初始化基本集合以预测所有定型数据的 0
- 对于添加到集合中的每个后续弱学习者:
- a)在训练数据上找到最小化损失函数的最佳展开系数[β和参数组[γ。注意,损失函数接受实际值和来自先前集合[*fₘ₋₁(x]*和当前弱学习器函数[b(x;γ) ]
- b)找到最优的 β 和 γ 后,将学习能力弱的系数添加到集合中
最重要的步骤是 2a,它搜索最佳弱学习器函数以添加到集合中。当选择平方误差作为损失函数时,2a 中的公式可改写为:
Square Error Loss Function (Source: ESLII)
在这个表达式中, fₘ₋₁ 代表来自先前树的预测值。 yᵢ 代表实际值。 yᵢ - fₘ₋₁ 将输出前一个学习器的残差, rᵢₘ 。因此,为了最小化平方损失,每个新的弱学习器将拟合残差。
对于回归问题的其他常见损失函数,例如绝对误差和 Huber 损失,这种说法仍然成立,因为残差总是被计算的。
那么,分类问题呢?
对于 2 类分类问题,AdaBoost 是由 Freund 和 Schapire 在 1997 年推出的一种著名的 boosting 算法,它使用指数损失。在每次迭代中,训练样本将根据先前树的预测误差进行重新加权。错误分类的样本将被赋予更高的权重。后续树将适合重新加权的训练样本。尽管新树不直接与预测误差或偏差相匹配,但预测误差在匹配新树时起着重要作用。
Exponential Loss (Source: ESLII)
感谢阅读!
为什么为医疗保健构建机器学习产品如此困难?
挑战的七个原因
Image from Pixabay
过去几年,我一直在为美国的医疗保健机构构建基于机器学习的产品,这些年来,我几乎每天都意识到我们所做的事情极具挑战性。以下是七个原因:
1)还没有人确定配方
现在有数百个组织声称为医疗保健组织做机器学习或人工智能,这些组织大多是在过去 5 年内创建的。尽管如此,在与美国一些最大的医疗保健组织合作后,很明显成功的秘诀还没有完全确定。与娱乐、金融、科技、媒体等各种其他行业相比。医疗保健仍处于试图解决这一问题的早期阶段。不要误会我的意思,有许多伟大的产品已经或正在建造,并取得了令人震惊的早期成果,然而,没有多少成熟的机器学习或基于人工智能的产品正在大规模使用。这意味着要建立一个成功的基于人工智能或机器学习的产品,你必须创新第一个伴随着独特挑战和斗争的同类产品。
2)医疗服务提供者是最值得怀疑的客户之一,这是理所当然的
如果你在医疗科技行业工作过,你就会知道医疗服务提供商对科技产品非常挑剔。理解原因很重要:这些用户花费了数年时间来建立专业知识,使他们能够承担起照顾他人的重任。他们做的每一个决定都会对病人和他们的家人产生影响。尽管这些人在日常生活中基于机器学习产品做出决策,但在工作中,他们需要三思而行,因为他们的决策具有更高的影响力。这种巨大的影响使得这些用户对任何声称能解决他们问题的新技术特别怀疑和挑剔。在这个领域的最初几个产品完全没有达到目标后,这种怀疑进一步增加。这为医疗保健中的机器学习或人工智能产品带来了新的关注领域,如验证、准确性、可解释性和可操作性。
3)安全性、合规性和法规阻碍了创新
医疗保健是监管最严格的行业之一,有多部法律围绕数据的使用。虽然这可能是确保患者隐私的正确方法,但这导致基于数据的产品落后于医疗保健曲线。由于多年来行业内建立的各种安全和法规遵从性流程,我参与的几乎每个项目都进展缓慢。从较新的基于云的体系结构的角度来看,其中一些流程降低了数据的安全性,但是组织很难快速调整其策略和实践来满足当今基础架构的需求。医疗保健 IT 部门正在进行大量工作,以真正获得他们所拥有的数据的好处,从而使患者和业务受益。在那之前,对于基于数据的产品来说,这是一条崎岖不平的道路。
4)医疗保健组织内部的不一致
几乎所有组织的领导团队都认识到需要以数据为导向,转向主动决策和利用技术解决问题。他们渴望投资“创新”和“人工智能”,以便留在其他行业。在这一过程中,高管层做出了几项决策,但是,决策者似乎还没有让他们的组织为这一旅程做好充分准备。没有清晰的成功标准和整个组织的一致性,外部组织几乎不可能引入新的技术解决方案;除了产品本身,这是另一个需要解决的挑战。这就引出了下面的下一点。
5)技术只能到此为止
剩下的就是人了。医疗保健是由人驱动的,而不是技术。无论你的产品有多棒,都需要深入的人的参与,才能让你的产品进入医疗保健机构。作为一个产品经理,确定产品的边界是一个挑战,这样当你把它从一个组织带到另一个组织时,它足够大以至于完整,但又足够小以至于可重复。这需要对客户参与和实施团队以及产品团队进行投资,并在组织的生态系统中建立建立产品的流程。没有这一点,你的产品很快就会被淘汰。
6)基于 ML 的医疗保健产品给设计带来了新的挑战
当我查看医疗保健行业目前使用的几种技术产品的用户体验时,我感到非常惊讶。我很确定我的 UX 设计师同事差点心脏病发作。看看目前广为流传的东西,如果你认为创造一些漂亮、简单、极简的东西就能解决所有用户的挑战,那你就错了。医疗保健行业的大多数用户习惯于查看复杂的界面,并在头脑中处理各种数据点来做出决策。这为用户体验设计师带来了新的挑战,他们需要打造下一个时代的健康科技产品,这些产品既简单又全面。
7)数据是一场噩梦
最后但绝对不是最不重要的,数据!从一个组织到另一个组织的数据的质量、一致性和基础设施难以置信地难以处理。要构建可重复、一致且可扩展的产品,您必须在数据策略上有所创新。有几个数据表示的“标准”或相同标准的不同实现。数据点是分散的,并且大多数基础设施都不是为支持实时决策而构建的。在数据科学中,大部分时间都花在准备数据上,如果你在为医疗保健做数据科学,那就准备把几乎所有的时间都花在这上面。
尽管有这些挑战,我不得不说为医疗保健行业制造产品是最有收获的经历之一。铺路从来都不容易,但是容易的问题有什么乐趣呢?
为什么教育数据挖掘在研究中很重要?
Photo by Cole Keister on Unsplash
开展教育数据挖掘对教育学领域研究的价值
近年来,对人工智能的日益关注促进了数据挖掘和分析在教育领域的发展。(Baker 2014)数据挖掘是使用机器学习、统计学和数据库系统交叉的方法从大型数据集中提取新的方面和模式的过程。它也是数据库(KDD)中知识发现的一个领域,即从大量数据集中发现独特的和潜在有益的信息。(Fayyad et al. 1996)专门针对教育领域的数据挖掘被称为教育数据挖掘(EDM)。EDM 是指用于从教育记录(通常是在线日志)和考试结果中获取信息,然后分析这些信息以得出结论的技术、工具和研究设计。EDM 以理论为导向,注重与教育学理论的联系(Berland et al .,2014)。目前,几乎没有实证证据支持能够在科学界获得广泛接受的理论框架(Papamitsiou & Economides,2014)。鉴于在现实世界中有各种不同的学习环境,它们决定了 EDM 所使用的分析方法。因此,正如研究中所展示的那样,EDM 如何在实际教育实践中受益可能是至关重要的。
什么是教育数据挖掘?
随着 2008 年教育数据挖掘年度国际会议和教育数据挖掘杂志的成立,EDM 成为一个可信的研究领域(Baker et al .,2010)。国际教育数据挖掘协会主办了国际教育数据挖掘会议,并出版了《教育数据挖掘杂志》,它给出了 EDM 的定义:
“教育数据挖掘是一门新兴学科,致力于开发方法来探索从教育环境中获得的独特且日益庞大的数据,并使用这些方法来更好地了解学生和他们学习的环境”(国际教育数据挖掘协会,2011)。
根据国际教育数据挖掘协会(2011),任何学习环境中的信息通常由多个层级组成,这些层级无法预先确定,但必须通过数据中发现的属性进行验证。在教育数据的研究中,时间、顺序和背景等因素也是重要的考虑因素。例如,可以分析学生的学习行为(学生的参与、登录频率、聊天消息的数量以及提交给教师的问题类型)以及他们的最终成绩。(阿卜杜斯等人,2012 年)
用于记录数据和分析数据的在线学习平台决定了可以记录哪些关于学习行为的信息。如果在线学习平台的数据库没有关于时间的属性或变量,研究者就无法分析学生完成考试的时间。因此,EDM 可以处理的信息依赖于在线学习平台预先确定的数据的性质。事实上,由于机器学习技术的进步,在现实世界中使用在线学习平台的学习设计是不同的,并且仍然在发展。因此,教育数据挖掘的最新研究将有助于 EDM 研究领域的发展。
学习分析与教育数据挖掘
对于采用 EDM 方法的研究人员来说,EDM 的含义并不清楚,因为 EDM 与学习分析(LA)的研究领域密切相关。
学习分析是对关于学习者及其环境的数据进行测量、收集、分析和报告,目的是理解和优化学习及其发生的环境。(2016 年学习分析与知识等国际会议)
洛杉矶是一个相当新的领域,越来越受欢迎。一般来说,LA 基于两个前提:LA 以计算机可以处理的形式处理预先存在的数据,并且它的技术可以被接受来处理大量人工无法处理的数据。(Ferguson 2012)洛杉矶和 EDM 研究团体对如何获取和分析教育数据持有不同的观点(Berland 等人,2014)。LA research 的研究人员采用更多的人为主导的发现方法,更加关注整体系统和理解结构,然后寻找方法通知和授权教师和学习者;例如,告知教师某个学生正在努力学习的方式,这样教师就可以联系学习者并以积极的方式进行干预,以促进该学生的学习(Berland et al .,2014)。
另一方面,EDM 研究人员更加关注利用自动化方法在教育数据中进行发现,对特定结构及其之间的关系进行建模,以及在自动化适应中的应用,例如通过让教育软件识别并自动改变它以个性化学习者的体验来支持学习者的体验(Berland et al .,2014;Arroyo 等人,2007 年;贝克等人,2006 年;Corbett & Anderson,1995)。
使用行政领导和管理的目标和利益相关者
虽然 EDM 和 LA 的特征略有不同,但由于依赖于在线学习技术产生的二次数据,改变数据量的影响因素是相同的。教学环境中使用的新技术和公共数据库的出现增加了数据的数量,并使数据的质量有所不同。例如,移动设备可以让研究人员更详细地捕捉学习者的互动。(Berland et al. 2014)研究直觉开放公共档案,如匹兹堡学习中心的科学数据商店,其中包括大量的数据,任何科学研究人员都可以访问。(Koedinger 等人,2010 年)因此,EDM 和 LA 技术的特点也很容易受到教育环境中使用的新技术的影响。(Marie Bienkowski et al .,2012)虽然严格区分 EDM 和 LA 的含义似乎没有意义,但就使用 EDM 的目标和利益相关者的分类而言,Baker 和 Yacef (2009)的以及 Romero 和 Ventura (2010)的描述如下。Baker 和 Yacef (2009 年,第 5-8 页)总结了以下四个 EDM 目标:
- 通过改进学生模型预测学习者的行为。建模是对学生的特征或状态进行描述和分类,这些特征或状态构成了学生的知识、动机、元认知和态度。
- 发现或改进知识领域结构模型。例如,有教授材料的概念模型和解释领域中知识的相互关系的模型(Barnes,2005)。
- 研究通过学习系统对学生学习最有效的教学支持。
- 建立经验证据来支持或阐明教学理论、框架和教育现象,以确定学习的核心影响因素,从而设计更好的学习系统。
EDM 的目标是通过调整心理测量学、采用统计技术和挖掘存储在离线教育环境中的日志数据来实现的,包括面对面接触、研究人类如何学习的心理学、参与从电子学习和学习管理系统(LMS)获得的在线学习以及使用智能辅导系统(ITS) (Romero & Ventura 2010)。
此外,行政领导和管理中使用的信息面向若干利益攸关方(Liñán 和佩雷兹,2015 年)。不同的利益相关者团体从不同的角度审查教育信息,遵循他们自己的使命、愿景和使用 EDM 的目标(Hanna,2004)。Romero 和 Ventura (2010 年,第 2 页)根据四个利益相关方使用 EDM 的目标对其进行了分类:
- 学习者:优化个人的学习风格、学习材料和学习体验,或者推荐。
- 教育工作者:分析学生的学习行为,获得最支持的指导,并预测学生的学习以提高教学效果。
- 研究人员/开发人员:评估学习材料,改进学习系统,评估数据挖掘技术的有效性。
- 组织:从效率和成本方面改进高等教育机构的决策过程,如入学程序和财政资源分配。
Figure 1 created by Jesse Tetsuya
考虑
有一些出版物提到了检验上述分类法的实践和经验研究,尽管它们是理论上构建的。例如,根据 Papamitsiou 和 Economides (2014 年)对实践中的 LA 和 EDM 的系统审查,在排除理论研究之前,只有 209 项成熟的研究工作,将关键的实证研究限制为 40 项,包括使用 EDM 的所有目标。
此外,关于 EDM 的实证研究也是教育行业,尤其是高等教育的需要。这是因为高等教育机构有大量的数据足以进行分析。(Kollias 等人,2005 年)虽然教育工作者不知道如何在自己的实践中进行 EDM。由于缺乏技术培训,他们也可能不知道如何使用最新的技术以及为什么它很重要。(Selwyn,2011)作为 EDM 主要分析技术的复杂和新的机器学习技术可能会困扰教育工作者。
参考
Abdous,m .,Wu,h .和 Yen,c . j .(2012 年)。使用数据挖掘预测在线问题主题和期末成绩之间的关系。教育技术学杂志&社会,15(3),第 77 页
贝克和德卡瓦略(2008 年)。使用文本回放更快更准确地标记学生行为。在教育数据挖掘 2008 。可在:http://www . educational data mining . org/conferences/index . PHP/EDM/2008/paper/download/759/725查阅【2017 年 8 月 30 日】。
贝克等人(2010 年)。教育数据挖掘。国际教育百科,7(3),第 112–118 页。
R.S .贝克(2014 年)。教育数据挖掘:教育智能系统的进步。 IEEE 智能系统,29(3),第 78–82 页。
贝克,R.S.J. d & Yacef,k .(2009 年)。2009 年教育数据挖掘状况:回顾与展望。JEDM——教育数据挖掘杂志,1(1),第 3–17 页。
Berland,Ryan|Blikstein,Paulo,(2014 年)。教育数据挖掘和学习分析:建构主义研究的应用。技术、知识和学习,19(1–2),第 205–220 页。
法耶兹,u .,皮亚泰茨基-夏皮罗,g .和史密斯,p .(1996 年)。从数据挖掘到数据库中的知识发现。艾杂志,17 卷 3 期,第 37 页。
弗格森河(2012 年)。学习分析:驱动力、发展和挑战。国际技术增强学习杂志,4(5/6),第 304 页
费亚德,乌姆,(1996 年)。数据挖掘和知识发现:使数据有意义。 IEEE 专家,11(5),第 20–25 页。
国际教育数据挖掘协会(2011 年)。国际教育数据挖掘协会。国际教育数据挖掘协会。可在/home[2017 年 6 月 26 日访问]获得。
汉娜,m .(2004 年)。电子学习领域的数据挖掘。校园范围的信息系统,21(1),第 29–34 页。
k . r . koe dinger,D’Mello,s .,McLaughlin,E.A .,Pardos,Z.A .和 Rosé,c . p .(2015 b)。数据挖掘与教育。威利跨学科评论:认知科学,6(4),第 333–353 页。
李宁,L.C .和佩雷斯,Á,美国法学家协会(2015 年)。教育数据挖掘和学习分析:差异、相似和时间演变。 RUSC。大学与知识社会期刊,12(3),第 98–112 页。
Papamitsiou,z .和 Economides,a . a .(2014 年)。实践中的学习分析和教育数据挖掘:经验证据的系统性文献综述。教育技术学杂志&社会,17 卷 4 期,第 49 页。
罗梅罗和文图拉(2010 年)。教育数据挖掘:对当前技术水平的回顾。 IEEE 系统、人和控制论汇刊,C 部分(应用和评论),40(6),第 601–618 页。
塞尔温,尼尔。(2011).教育和技术:关键问题和争论。伦敦;纽约州纽约市:布卢姆斯伯里学术出版社,布卢姆斯伯里出版公司的一个分支
为什么每个人都在谈论云?
基于云的机器学习完全初学者指南
您的业务依靠数据运行。你的生活可能依赖于数据。
云使这成为可能。
如果你真的想建立可扩展、灵活和强大的机器学习模型(或者确保你的团队能够建立这些模型),那么你可能想开始适应云。
GIF via GIPHY
云已经是你生活的一部分了
我们生活的很大一部分是由机器学习算法主导和驱动的。这些算法现在被用于几乎每个领域来建立模型,以惊人的可靠性预测未来事件。大多数算法和模型都是基于云的。
人工智能和机器学习算法是推动社交媒体、营销、客户支持、欺诈检测、商业智能以及我们每天看到的几乎每部电影和音乐推荐的力量。
我们正在与机器学习算法对话,并向它们提问。我们让他们帮助我们做出最基本的决定,比如看什么、读什么、听什么、穿什么。正如我们所知,机器学习和人工智能正在成为商业领域的标准。很难想象大部分工作不会发生在云中。
开始喜欢吧!
为什么我们需要基于云的机器学习?
现在,我们正在以难以控制的速度收集和积累大量数据。企业收集网站点击、社交媒体互动、信用卡交易、GPS 跟踪等等。但对大多数公司来说,处理所有这些信息并以任何有意义的方式使用它们几乎是不可能的。
进入机器学习!一个好的算法将使用收集的数据来学习模式并预测见解和结果,这可以帮助我们做出更好的决策,这些决策是由实际分析支持的。
你可能比你意识到的更熟悉这个。你使用过社交媒体吗?每当你看到一个你可能认识的朋友的推荐或者一篇你可能喜欢的文章,那就是一个机器学习算法。你在网上看视频吗?您是否注意到了正在向您推荐的其他视频?机器学习!申请过信用卡或贷款吗?银行主要让一种算法根据你的信用评分来决定是否让你拥有信用卡(以及收取多少利息)。您的信用评分基于您的信用历史、您拥有的贷款(和申请的贷款)以及其他类型的数据。所有这些数据都必须以闪电般的速度大量收集、分析和解释。
这就是云的由来。
Photo by Guilherme Rossi from Pexels
谁在使用人工智能、人工智能和云计算?
根据埃文斯数据公司最近的一项调查,目前有 650 万名开发人员正在使用某种形式的人工智能(AI)或机器学习(ML),另有 580 万人计划在 6 个月内开始使用人工智能或机器学习。鉴于全球有超过 2200 万开发人员,这意味着大多数人(约 56%)要么正在使用这些技术,要么即将开始使用。
在其技术、媒体和电信预测中,德勤全球预测,2019 年,企业将加速使用基于云的人工智能软件和服务。在采用人工智能技术的公司中,70%将通过基于云的企业软件获得人工智能能力,65%将使用基于云的开发服务创建人工智能应用。到 2020 年,在使用人工智能软件的公司中,集成人工智能和基于云的人工智能平台的企业软件的渗透率估计将达到 87%和 83%。云将推动更多全面的人工智能实施,更好的人工智能投资回报率(ROI ),以及更高的人工智能支出。正因为如此,我们将能够看到和建立过去只属于早期采用者的人工智能能力和优势。
最重要的是,国际数据公司预测,2019 年全球人工智能系统的支出预计将达到 358 亿美元。这比 2018 年的支出增加了 44.0%。随着各行业积极投资使用人工智能软件功能的项目,预计人工智能系统的支出将在 2022 年翻一番以上,达到 792 亿美元。
大部分开发都发生在云中。
Photo by Jimmy Jimmy from Pexels
如果你正在管理一个数据科学团队,你需要考虑这会对你的业务产生怎样的影响。
什么变了?
在很长一段时间里,机器学习模型对大多数企业来说都遥不可及。光是费用就让他们望而却步。即使一个企业有能力实现一个模型,它可能也没有人能够设计一个模型并解释其结果。基于云的机器学习解决方案改变了这一点。相对而言,它们的运营成本很低,而且通常带有针对复杂问题的预建解决方案。
基于云的机器学习的最大优势之一是,它让组织能够访问他们自己无法负担(或正确使用)的高性能基础设施。ML 应用需要大量的处理能力。这在传统上是非常昂贵的!现在,许多组织使用依赖 GPU 处理 ML 工作负载的系统。在云中租用这些系统比直接购买要便宜得多。
虽然这有时是一个复杂的过程,但土星云具有一键式能力,可以在 GPU 上运行。此外,对于企业层来说,这是构建自己的云托管数据科学环境的绝佳替代方案。有了这些,你通常不得不处理维护需求、高成本(比如需要全职员工来管理所有细节)和频繁的重新设计以跟上更新。成千上万的人使用土星云,因为它使生活变得简单。
基于云的机器学习通常还包括访问负担得起的数据存储。随着数据量的持续增长,企业发现将数据转移到公共云系统比继续将其存放在自己的数据中心成本更低。如果数据已经存储在云中,使用基于云的 ML 服务通常是有意义的。传输大量数据既费时又费钱。
云使得企业可以很容易地试验机器学习能力,并随着项目投入生产而扩大规模。它让你获得智能,而不需要太多数据科学和人工智能方面的高级技能,你也经常可以获得机器学习选项,而不需要深入了解机器学习理论和人工智能。
云真正令人兴奋的是它允许协作的方式。虽然每个平台都不同,但土星云是我最喜欢的协作方式,因为它非常简单。你几乎可以不费吹灰之力地设置好它,然后你选择的任何人都可以通过点击一个按钮来进行协作。这是在 Jupyter 笔记本上协作的唯一简单方式。
(我是 Jupyter 笔记本的超级粉丝…)
[## 技巧、窍门、诀窍和魔法:如何毫不费力地优化您的 Jupyter 笔记本电脑
让 Jupyter 笔记本变得更好、更快、更强、更光滑、更棒的完整初学者指南
towardsdatascience.com](/how-to-effortlessly-optimize-jupyter-notebooks-e864162a06ee)
我能在哪里进入?
虽然我是土星云和他们基于云的 Jupyter 笔记本的忠实粉丝,
[## 如何毫不费力地创建、发布甚至共享云托管的 Jupyter 笔记本
完全初学者指南,以闪电般的速度在 Jupyter 笔记本上创建、运行和协作…
towardsdatascience.com](/getting-started-with-saturn-cloud-jupyter-notebooks-b3f509a500ef)
(完全披露:我绝对为土星云做过工作,得到过他们的报酬,知道土星云有多好,能做什么。)
…现在有很多云机器学习工具和服务。其中包括谷歌云平台、亚马逊 Web 服务、微软 Azure 、 IBM Cloud 、甲骨文 Cloud 等等。关于 Saturn Cloud 的一个很酷的事情是(对于企业层来说),它们是多云,所以人们可以在 AWS、Google 和 Azure 云上使用 Saturn,而不会被任何一个供应商所束缚。
如果你想处理大量的数据,在云中进行机器学习是你目前最好的选择,无论是在速度上还是在操作的规模上。云变得越智能,它对定义下一代数据服务和整个商业未来的工作就越有吸引力。
Photo by Chandrashekar Hosakere Matt from Pexels
感谢阅读!和往常一样,如果你对这些信息做了什么酷的事情,请在下面的评论中让所有人都知道,或者联系 LinkedIn@ annebonnerdata!
为什么大家都去冰岛?
Photo Credit: Thampitakkull Jakkree/Shutterstock
我试着用公开的数据来源来理解冰岛旅游业的崛起。
你好!(冰岛语再次问好)。在空闲时间,我喜欢在 YouTube 上看视频,主题包括摄影、电影、足球、喜剧等。我最近开始关注约翰尼·哈里斯的频道,是在看了他关于建立一个梦想工作室的视频后,无意中发现了他对冰岛旅游业为何大幅增长的分析(链接如下)。我一直想和我的摄影师朋友 Pablo 一起去冰岛,因为这个国家风景优美。
在这篇文章中,我决定利用公共数据来解释为什么冰岛的旅游业如此迅猛发展。视频本身很好地解释了旅游业的突然激增,并给出了一些很好的理由。我在这里的观点不是要反驳他的论点,而是用数据来看看我从中学到了什么。我找到公共数据源,清理数据,将数据可视化,并使用脸书先知进行预测。
数据源
对于我的调查,我就像在大学写研究论文时一样开始:谷歌搜索。我在查询相关的公共数据集,以便下载和分析。我选定了三个主要数据集,并在此附上了链接:
- 通过凯夫拉维克机场前往冰岛的游客:这是国际交通的主要枢纽。我没有找到所有交通枢纽的所有游客的统计数据,但我认为这将是一个很好的整体样本。
airport = pd.read_excel(“/Users/stephenhyungilkim/Desktop/Iceland/hola.xlsx”, parse_dates=[“year”], index_col=”year”, freq=’Y’)
airport.head(5)
2。事实列表冰岛:这是从世界银行找到的,我把它简化为最相关的 20 个因素。有超过 150 个不同的类别,我把它减少到我最感兴趣的类别。
https://data.worldbank.org/country/iceland
facts = pd.read_csv(“/Users/stephenhyungilkim/Desktop/Iceland/chau.csv”, parse_dates=[“Date”], index_col=”Date”)
facts.head(5)
以下是所有缩减列的列表:
3。每年的航空乘客数量:1949 年至 2017 年期间,通过航空和海路抵达冰岛的外国游客。
visitor = pd.read_excel(“/Users/stephenhyungilkim/Desktop/Iceland/foreign-visitors-to-iceland-1949–2017.xls”,parse_dates=[“Date”])
#Foreign visitor arrivals by air and sea to Iceland 1949–2017
visitor.head(5)
数据预处理
脸书预言家要求数据采用特定的格式,以便符合模型并做出预测。我使用数据集 3 进行脸书预言家预测,因为它包含了我正在寻找的变量,访问者数量。然而,其他两个数据集(1 和 2)也很有趣,可以看到相关性、模式等。
visitor[‘Date’] = pd.DatetimeIndex(visitor[‘Date’])
visitor.dtypes
确保数据集是时间序列:
visitor = visitor.drop([‘percentage change’], axis=1)
我放弃了百分比变化,只留下了日期和访客人数。我们将对未来几天的访客数量进行预测,具体日期我们将在后面说明。
visitor = visitor.rename(columns={‘Date’: ‘ds’,
‘visitors’: ‘y’})
visitor.head(5)
这些列必须重命名为“ds”,即日期,以及“y”,即我们要预测其值的变量。
我们准备使用脸书先知,但在此之前,让我们来看看这个和其他两个数据集。
数据可视化
让我们从可视化第一个数据集开始。美国显然有很多感兴趣的游客…不知道为什么,也许口碑和更便宜的航班促成了这一点(机票价格是我想分析的一个问题,但找不到公开数据…)。
airport.plot(figsize=(15,10))
plt.title(‘Visitors to Iceland Through Keflavik Airport’)
plt.ylabel(‘Visitors’)
plt.xlabel(‘Date’)
现在让我们来看看数据集#2。由于我们有这么多不同的变量,我从降序的 correlation_matrix 开始。很明显,像“航空运输、载客”和“国际旅游、抵达人数”是高度相关的,因为更多的乘客=更多的抵达人数,但其他像“银行流动储备与银行资产的比率(%)”和“人均国民总收入(当前 LCU)”更令人惊讶和具有争议性。
corr_matrix = facts.corr()
corr_matrix[“International tourism, number of arrivals”].sort_values(ascending=False)
我也试着使用直方图,但是它没有我想象的那么有用,所以我把它去掉了。
现在让我们看看第三组数据。
ax = visitor.set_index(‘ds’).plot(figsize=(15,10))
ax.set_ylabel(‘Monthly Number of Airline Passengers’)
ax.set_xlabel(‘Date’)
#ax.set_yscale(‘log’)plt.show()
正如约翰尼·哈里斯在视频中所说,你可以看到乘客数量的飞速增长。由于比例太大,我把图表做成对数比例。除了多了一行以外,代码相同:
ax = visitor.set_index(‘ds’).plot(figsize=(15,10))
ax.set_ylabel(‘Monthly Number of Airline Passengers’)
ax.set_xlabel(‘Date’)
ax.set_yscale(‘log’)plt.show()
使用脸书先知的预测
虽然我主要应用 scikitlearn 库中的机器学习模型,因为这很容易,但我想尝试用脸书预言家预测时间序列。我读了一篇由 Susan Li 写的文章,并按照下面文章中的步骤进行了操作:
让我们将模型设定为 95%的不确定性。以下是关于先知的更多信息:https://facebook.github.io/prophet/
# set the uncertainty interval to 95% (the Prophet default is 80%)
my_model = Prophet(interval_width=0.95)
正在拟合模型…
my_model.fit(visitor)
设定未来日期。请注意,我在频率中用“A”表示年度。
future_dates = my_model.make_future_dataframe(periods=10, freq=’A’)
future_dates.tail()
上面,为 2022、2023、2024、2025、2026 年创建了数据帧。
forecast = my_model.predict(future_dates)
forecast[[‘ds’, ‘yhat’, ‘yhat_lower’, ‘yhat_upper’]].tail()
我们得到了自变量的值。“yhat_lower”是下限,“yhat_upper”是上限。
my_model.plot(forecast, uncertainty=True)
下面,我们有一个预测图:
Above, we have a forecast plot.
Prophet 还允许我们将其分解为我们预测的组成部分:
最后的话
虽然去冰岛旅行可能仍然是一个幻想,因为我今年早些时候已经用完了我的假期计数,但使用公共数据源来了解冰岛为什么最近成为如此受欢迎的旅游目的地是一件有趣的事情。我喜欢交叉引用#3 数据集和历史天气数据集。我尝试使用 OpenWeatherMap 的 API,它很容易使用,但必须为其全部功能付费。冰岛绝对在我的遗愿清单里!
为什么很难找到优秀的数据科学经理?
数据科学正在全球范围内蓬勃发展, IBM 预测,到 2020 年,该行业将有大约 270 万个机会。许多公司相信这种纪律将是他们领导团队决策的未来。正因为如此,数据科学的工作岗位急剧增加,数据科学家大量涌入。
这通常是事后的想法,但问题出现了:谁能管理和领导这个团队?
伟大的数据科学家并不总能成为伟大的人事经理
做质量技术工作的能力和管理没有很高的相关性。数据科学也不例外。造就伟大数据科学家的因素不一定造就伟大的数据科学经理。
虽然一些数据科学家在团队中工作,但大部分数据科学工作都是孤立进行的。伟大的数据科学表演者可以深入研究特定的问题,并以优雅的洞察力浮出水面。另一方面,经理必须在某种程度上浅层次地理解许多项目和概念。对于许多数据科学家来说,这种对问题的高层次理解不会令人兴奋或满足。
此外,经理与组织内人员互动的方式偏离了传统的数据科学角色。经理们必须适应与不同的团队合作,处理办公室政治,推销工作的成功。通常,数据科学家与利益相关者的接触有限,并且不想卷入公司的旋转木马。
话虽如此,如果数据科学家发展了在跨职能团队中工作的技能,他们仍然可以成为优秀的管理者。即使有合适的资质,这个群体也可能对管理者每天处理的问题类型不感兴趣。
其他业务部门的经理可能会感到力不从心
有一般管理经验的人也容易在这个角色上纠结。来自软件工程或业务部门(财务、会计等)的经理。)可能难以理解数据科学家并定义他们的项目工作。
与软件工程师或其他业务部门的工作人员相比,数据科学家的背景大多是学术性的。来自其他学科的管理者可能很难与这个群体产生共鸣。大多数其他业务职能首先关注实施,然而,数据科学是以理论为基础的。经理需要能够与数据科学家合作,将问题从理论转化为实践。
通常,理论是数据科学项目的基本组成部分。我将这些项目视为软件工程和咨询任务的混合体。概括地说,软件工程是关于制定一个伟大的计划并执行它;咨询是关于收集信息和起草建议。数据科学工作抓住了这两个要素。数据科学经理需要明白,这些项目与他们之前参与的项目有着根本的不同。
数据科学家创造了不可靠的权力动态
数据科学家通常非常聪明,可以来自各种背景。这是一个相对来说学者过多的领域。这些员工带来的学术文化有时会与传统的商业工作场所发生冲突。
数据科学家的年龄也可能有很大差异;许多经理比他们的数据科学员工更年轻,甚至可能赚得更少。虽然谈论这个可能不太合适,但这会在工作场所造成一些摩擦。我不认为年龄或工资会影响工作关系,但毫无疑问,它们会。
谁应该管理这个组?
要成为一名成功的数据科学经理,需要三样东西:(1)对领域和算法的理解(2)对项目性质的理解(3)管理人员和利益相关者的能力。有这种三连胜的人很难找到;然而,有几个合乎逻辑的地方可以看看。
经验丰富的数据科学经理——你或许可以从另一家公司挖走他们中的一员。如果你的提议有什么吸引人的地方,你可以引诱这些独角兽中的一个离开现有的职位。
本土 —这需要有意识地努力发展你目前拥有的数据科学家的软技能。如果你做得很好,团队中的一些人对此感兴趣,你可能会培育出一个赢家。
数据科学顾问 —数据科学咨询的受欢迎程度与该领域的崛起成正比。担任这些角色的人通常从事短期项目,并且必须更频繁地与风险承担者互动。他们被迫培养许多管理者需要的软技能。如果他们在这个职位上已经工作了足够长的时间,那么向管理层的过渡就是顺理成章的下一步。
这并不是说只有具备这些背景的人才能成为成功的管理者。这些只是我认为最一致的地方。狩猎愉快!
为什么将机器学习整合到真实的商业应用中如此困难?
你已经玩了机器学习,了解了神经网络的奥秘,几乎赢得了一场 Kaggle 比赛,现在你觉得已经准备好将这一切带到现实世界中。是时候构建一些真正的基于人工智能的应用程序了。
但是一次又一次,你面临挫折,你并不孤单。从一个像样的机器学习模型转移到下一个将其融入实际商业应用的水平需要时间和努力。为什么?
拥有一个训练有素的机器学习模型只是一个起点。对于一个正常运行的应用程序,还有许多其他需要考虑的事项和组件需要构建、测试和部署。
在下面的帖子中,我将展示一个真实的基于人工智能的应用程序(基于一个真实的客户用例),解释挑战并提出简化开发和部署的方法。
用例:在线产品推荐
有针对性的产品推荐是增加收入的最常见方法之一,计算机会根据用户的历史偏好、产品与产品的相关性以及其他因素(如位置(如离商店的远近)、天气等)提出建议。
构建这样的解决方案需要分析历史交易并创建模型。然后,当将其应用于生产时,您会希望纳入新的数据,如客户的最后一次交易,并重新训练模型以获得准确的结果。
机器学习模型很少在原始数据上训练。需要进行数据准备以形成特征向量,这些特征向量将各种数据源聚合和组合成更有意义的数据集,并确定一个清晰的模式。一旦准备好数据,我们就使用一种或多种机器学习算法,进行训练,并创建模型或新的数据集,其中包含学习内容。
对于推荐引擎,最好结合深度学习(例如 TensorFlow )来识别哪些产品是“一起”购买的,以及机器学习(例如 XGboost )来基于用户和产品的历史行为识别用户和产品之间的关系。然后,将两个模型的结果合并到一个模型服务应用程序中。
Example pipeline: Real-time product recommendations
服务应用程序接受用户的 ID,从特性和用户表中获取额外的上下文,将其输入到模型中,并返回一组产品推荐。
请注意,服务必须在用户仍在应用程序中浏览时实时完成,因此缓存数据和模型总是更好。另一方面,最近的产品购买或位置可能会对未来的客户产品选择产生重大影响,您需要不断监控活动并更新功能表和模型。
在线业务需要自动化和应用到机器学习操作中的 CI/CD 流程,从而实现连续应用。支持自动扩展、满足需求波动、承受故障和提供数据安全性非常重要,更不用说考虑监管约束了。
机器学习操作流程
在典型的开发流程中,开发代码或模型只是第一步。最大的努力是使每个元素,包括数据收集、准备、培训和服务生产就绪,使它们能够在最少的用户干预下重复运行。
What it takes to turn code or algorithms into real application
数据科学和工程团队需要打包代码、解决可伸缩性、调整性能、工具化和自动化。这些任务现在需要几个月的时间。正如我在之前的文章《无服务器:可以简化数据科学项目吗?。其他需要记住的重要工具是 Kubernetes 和 KubeFlow ,它们为机器学习世界带来了 CI/CD 和开放性。在我的帖子Kubernetes:ML 管道的开放和可伸缩方法中阅读更多关于它们的内容。
机器学习代码的可移植性和可再现性
一个关键的挑战是,相同的代码可能在不同的环境中运行,包括用于实验的笔记本、ide(例如 PyCharm )和用于在集群上运行或作为自动化 ML 工作流引擎的一部分的容器。在每个环境中,您可能有不同的配置并使用不同的参数、输入或输出数据集。很多工作花费在移动和更改代码上,有时是由不同的人完成的。
运行工作后,您希望能够快速可视化结果,将它们与过去的结果进行比较,并了解哪些数据用于生成每个模型。针对这些需求有特定于供应商的解决方案,但是如果您想要实现跨环境的可移植性,就不能使用它们。
Iguazio 与领先公司合作,为机器学习环境、元数据和工件形成跨平台标准和开放实现。这允许更大的简单性、自动化和可移植性。
观看此视频,了解如何在不到一分钟的时间内从本地 IDE 中运行/测试代码转移到生产级自动化机器学习管道(基于 KubeFlow)。
Automated ML pipeline and artifact management using KubeFlow
为什么机器学习部署很难?
在几个人工智能项目之后,我意识到,对于那些愿意通过人工智能创造价值的公司来说,大规模部署机器学习(ML)模型是最重要的挑战之一,随着模型变得更加复杂,这只会变得更加困难。
根据我作为顾问的经验,只有很小比例的 ML 项目能够进入生产阶段。人工智能项目失败的原因有很多,其中包括部署。对于每个决策者来说,充分理解部署是如何工作的,以及在达到这一关键步骤时如何降低失败风险是至关重要的。
部署的模型可以定义为无缝集成到生产环境中的任何代码单元,可以接收输入并返回输出。
我看到,为了将他们的工作投入生产,数据科学家通常必须将他或她的数据模型交给工程来实现。正是在这一步,一些最常见的数据科学问题出现了。
挑战
机器学习有一些独特的功能,这使得它更难大规模部署。这是我们正在处理的一些问题(其他问题也存在):
**管理数据科学语言 **
如你所知,ML 应用程序通常由用不同的编程语言编写的元素组成…。并不总是能很好地相互交流。我见过很多次,ML 管道以 R 开始,以 Python 继续,以另一种语言结束。
总的来说,Python 和 R 是 ML 应用程序最流行的语言,但是我注意到由于各种原因,包括速度,生产模型很少使用这些语言。将 Python 或 R 模型移植到 C++或 Java 之类的生产语言中是很复杂的,并且经常导致性能(速度、准确性等)下降。)的原始模型。
r 包可以在软件新版本出来的时候破)。此外,R 很慢,不会高效地处理大数据。
它是一种很好的原型语言,因为它允许简单的交互和问题解决,但是它需要被翻译成 Python 或 C++或 Java 来生产。
容器化技术,比如 Docker,可以解决大量工具带来的不兼容性和可移植性问题。然而,自动依赖检查、错误检查、测试和构建工具将不能跨越语言障碍解决问题。
再现性也是一个挑战。事实上,数据科学家可能会构建模型的许多版本,每个版本都使用不同的编程语言、库或同一库的不同版本。很难手动跟踪这些依赖关系。为了解决这些挑战,需要一个 ML 生命周期工具,它可以在培训阶段自动跟踪和记录这些依赖关系,将其作为代码进行配置,然后将它们与经过培训的模型捆绑在一个随时可以部署的工件中。
我建议您依赖一种工具或平台,它可以立即将代码从一种语言翻译成另一种语言,或者允许您的数据科学团队在 API 背后部署模型,以便它们可以在任何地方集成。
计算能力和 GPU 的
神经网络通常非常深入,这意味着训练和使用它们进行推理会占用大量计算能力。通常,我们希望我们的算法运行得很快,对于很多用户来说,这可能是一个障碍。
而且,现在很多制作 ML 都依赖 GPU。然而,它们是稀缺和昂贵的,这容易给扩展 ML 的任务增加另一层复杂性。
便携性。
模型部署的另一个有趣的挑战是缺乏可移植性。我注意到这通常是遗留分析系统的问题。由于缺乏将软件组件轻松迁移到另一个主机环境并在那里运行的能力,组织可能会受限于特定的平台。这可能会在数据科学家创建和部署模型时造成障碍。
可扩展性。
对于许多人工智能项目来说,可扩展性是一个真正的问题。事实上,您需要确保您的模型能够扩展并满足生产中性能和应用程序需求的增长。在项目开始时,我们通常在可管理的范围内依赖相对静态的数据。随着模型进入生产阶段,它通常会暴露于更大量的数据和数据传输模式。您的团队将需要几个工具来监控和解决性能和可伸缩性挑战,这些挑战将随着时间的推移而出现。
我认为可扩展性问题可以通过采用一致的、基于微服务的生产分析方法来解决。团队应该能够通过简单的配置更改,快速地将模型从批量迁移到按需迁移到流。同样,团队应该可以选择扩展计算和内存空间,以支持更复杂的工作负载。
机器学习计算在尖峰中工作
一旦你的算法被训练,它们并不总是被使用——你的用户只会在他们需要的时候调用它们。
这意味着您在上午 8:00 只支持 100 个 API 调用,但是在上午 8:30 支持 10.000 个 API 调用。
根据经验,我可以告诉你,在确保不为你不需要的服务器买单的同时,扩大和缩小规模是一个挑战。
出于所有这些原因,只有少数数据科学项目最终真正进入生产系统。
强有力的运作
我们总是花很多时间来准备我们的模型。健壮模型包括获取一个原型并对其进行准备,以使其能够实际服务于所讨论的用户数量,这通常需要大量的工作。
在许多情况下,整个模型需要用一种适合现有架构的语言重新编码。仅这一点就经常导致大量痛苦的工作,导致部署延迟数月。一旦完成,就必须将它集成到公司的 it 架构中,包括前面讨论过的所有库问题。除此之外,在生产环境中访问数据通常也是一项困难的任务,经常会受到技术和/或组织数据孤岛的困扰。
更多挑战
在我的项目中,我还注意到以下问题:
- 如果我们改变了某个输入特征,那么其余特征的重要性、权重或用途可能都会改变,也可能不会改变。ML 系统的设计必须便于跟踪特征工程和选择的变化。
- 当模型不断迭代和微妙变化时,跟踪配置更新同时保持配置的清晰性和灵活性成为额外的负担。
- 一些数据输入会随着时间而改变。我们需要一种方法来理解和跟踪这些变化,以便能够完全理解我们的系统。
- ML 应用程序中可能会出现一些问题,传统的单元/集成测试无法识别这些问题。部署模型的错误版本,忘记一个特性,以及在一个过时的数据集上进行训练,只是其中的几个例子。
测试和验证问题
正如您可能已经知道的,由于数据变化、新方法等,模型在不断发展。因此,每次这样的变化发生时,我们都必须重新验证模型的性能。这些验证步骤带来了几个挑战:
除了在离线测试中验证模型,评估模型在生产中的性能也是非常重要的。通常,我们在部署策略和监控部分对此进行规划。
ML 模型需要比常规软件应用更频繁地更新。
自动化 ML 平台
你们中的一些人可能听说过自动化机器学习平台。这可能是一个更快生产模型的好办法。此外,该平台可以支持多种模型的开发和比较,因此企业可以选择最符合其预测准确性、延迟和计算资源要求的模型。
多达 90%的企业 ML 模型可以自动开发。数据科学家可以参与到业务人员的工作中来,开发目前自动化无法实现的小部分模型。
许多型号会出现漂移(随着时间的推移性能下降)。因此,需要对部署的模型进行监控。每个部署的模型都应该记录所有的输入、输出和异常。模型部署平台需要提供日志存储和模型性能可视化。密切关注模型性能是有效管理机器学习模型生命周期的关键。
Key elements that must be monitored through a deployment platform
发布策略
探索部署软件的许多不同方式(这是一篇关于这个主题的很长的阅读文章),其中“影子模式”和“金丝雀”部署对 ML 应用程序特别有用。在“影子模式”中,您捕获生产中新模型的输入和预测,而不实际服务于这些预测。相反,您可以自由地分析结果,如果检测到一个 bug,也不会有重大的后果。
随着您的体系结构的成熟,希望能够实现渐进或“金丝雀”版本。这样的实践是当你可以向一小部分客户发布时,而不是“全部或没有”。这需要更成熟的工具,但是当错误发生时,它可以最小化错误。
结论
机器学习仍处于早期阶段。事实上,软件和硬件组件都在不断发展,以满足 ML 的当前需求。
Docker/Kubernetes 和微服务架构可以用来解决异构性和基础设施挑战。现有的工具可以很大程度上单独解决一些问题。我认为,将所有这些工具结合起来实施 ML 是当今最大的挑战。
部署机器学习现在是而且将继续是困难的,这只是组织需要处理的现实。不过值得庆幸的是,一些新的架构和产品正在帮助数据科学家。此外,随着越来越多的公司扩大数据科学运营,他们也在实施使模型部署更容易的工具。
更多信息,推荐 Christoper Samiullah 的这篇优秀文章:
-https://Christopher GS . github . io/machine % 20 learning/2019/03/17/how-to-deploy-machine-learning-models/
为什么开源如此重要?第一部分:原则和平等
Open-source relies on collaboration between contributors and companies — but profits make things more difficult. FREEPIK
技术世界是一个奇怪的地方;它是平等的和排他的,合作的和无情的竞争的,开放的和严格封闭的。代表当今大多数科技公司的开放创新和专有标准的熔炉似乎一下子融合了所有这些想法。
保持一切平衡是开源(OS)的原则,至少在过去的二十年里( 如果不是从软件本身 的创立开始),这一原则一直在塑造科技公司。
随着数据在物联网和人工智能技术时代变得无处不在、不可思议地细化,并且成为一种极其宝贵的资产,像红帽这样的公司在开发人员的帮助下取得了不可估量的增长,这些开发人员愿意贡献他们的知识,以换取免费测试并成为开创性软件企业的一部分。因此,开源已经成为“吃掉世界”的最新事物,仅在2018 年,就有 550 亿美元用于开源并购 。
本文的第一部分将探讨开源的原则,以及如果我们希望技术不断向前发展,为什么应该尊重自由劳动力和企业发展之间的平衡。第二部分将深入探讨公司如何从开源中获利的更多细节,以及如果处理不当,这可能会成为问题的方式。
这是事情的原理
开源软件做到了它所说的——一个软件的源代码是开放的,可以免费下载、修改和整合到第三方项目中,这有助于随着时间的推移改进软件本身。理查德·斯托尔曼,开源操作系统 GNU 的创造者,【FSF】自由软件基金会的创始人和前任主席,可以说是把开源的概念带到了大众,陈述 说:
“‘自由软件’是自由的问题,而不是价格的问题。你应该把“免费”理解为“言论自由”,而不是“免费啤酒”。’”
尽管 Stallman 最近(2019 年 9 月 16 日)在麻省理工学院的一封电子邮件中对 Jeffrey Epstein 的受害者 Virginia Giuffre 发表了 评论后突然失宠——以及随后 从麻省理工学院和 FSF 辞职——Stallman 对自由(至少在软件方面)的最初解释已经塑造了整整一代开发人员和技术领导者在构建他们的项目和产品时遵守开源原则。
在我的公司,我很幸运有一个开源思维的光辉榜样,他就是费利克斯·翁塔尼翁,他是塞维利亚物联网的创始人,是开源开发项目的热心贡献者,也是他的祖国西班牙开源社区的热心建设者。“一般来说,”Ontañ on 说,“开源是商业和制造战略中开放创新的技术方面,”因此,它可以作为一种工具,被公司用来赢得信誉或简单地快速推出他们的产品。当涉及到专有的人工智能和物联网项目需要大量的劳动力来启动和运行时,开源的这一战略方面尤其相关。
“对于物联网和人工智能的每一个分支来说,都有一大批公司竞相让他们的技术成为‘新标准’,”Ontañ on 说,“那些以开源方式开发技术的公司处于更有利的位置,可以领先于其他公司。很简单,这是因为开源技术让成千上万的技术工人在任意数量的不同应用程序中实时构建、检查和测试代码,而且千人千面胜于一人。
人人为我,我为人人?
然而,这就是开源项目的症结所在,当一个开源开发者社区帮助建立一个专有系统时,这个系统反过来变得封闭、许可和有利可图。从一种自由的、完全协作的软件开发方式(提供了一系列不可否认的商业利益,如 Linux 基金会 所推崇的)转变为一个陷入专有创新和严格的知识产权的泥潭对一个公司来说从来都不是一个容易的转变。
虽然开源可以帮助公司获得技术优势,快速传播产品,并在供应链中建立信誉和支持,但利润是在激烈的竞争中生存的关键。
虽然像脸书这样的玩家可以随着他们的成长继续推广开源项目,但是没有多少人有能力这样做。
根据 Ontañ on 的说法,有一种方法可以在合作创新和建立一个健康的、有竞争力的公司之间取得正确的平衡。onta nion 说,在任何一个软件或技术的开发过程中,都有多行代码“往往会在每一次重复出现。如果这些可重复层保持开放和免费使用,并由大量熟练的开发人员逐渐改进,Ontañ on 认为"企业将继续创新[在专有层],但他们也将共同开发和维护可重复层上事实上的开源标准。理论上,这种方法可能是促进开源实践的好方法,也是有利可图的,但实际上事情很少如此明确。“人们总是担心如何在专有和开源之间取得平衡,”DB Hurley 说,他是 Mautic 社区 的创始人,现在是 Acquia 的营销云 (在 Mautic.com 于 2019 年 5 月被 Acquia收购 后)的 CTO,“每个公司仍然要担心底线和如何盈利。”
对于 Hurley 来说,开源开发的重要性怎么强调都不为过,它提供了“更快的错误修复和功能开发…快速有效地提供全球软件产品的能力,当然,还有最大的好处:技术的进步。然而,“我们必须小心谈论开源的价值,”Hurley 说,必须区分开源是一种内在的有价值的资源,还是一种空洞的噱头。
开源的优势在于传播和改进某些软件的人数。
赫尔利认为,如果自由、熟练的劳动力和有利可图的知识产权之间的微妙平衡得不到尊重,那么“开源将失去巨大的好处,因为它慢慢地变成了专利软件的淡化‘试用’版本。
我一个…
鉴于开源开发对任何公司的软件免费测试和营销的价值,开发人员和大企业之间的合作意识,以及无需任何额外努力或费用就能成倍改善和扩散您的产品的机会,MongoDB 创始人兼首席执行官 Dev Ittycheria 的评论尤其令人担忧。在 6 月 接受《计算机商业评论》 采访时强调指出“我们没有开源【MongoDB】的帮助;我们把它开源为免费增值战略,“itty cheria 发起了知识产权挑战,可能不可挽回地破坏了对开源生存至关重要的平衡。用 Hurley 的话来说,“对于那些建立并保持开源公司繁荣的社区来说,这是一个巨大的耻辱。
本文的第二部分将进一步探究 Ittycheria 的评论,解释开源平衡是如何变化的,并探索如果它过分偏向专有暴利,我们可能会失去什么。
为什么开源如此重要?第二部分:利润与财产的问题
Profits are the most vital factor of any non-charitable company, especially in the tech world. But the path to proprietary software is often paved by the open-source community, which puts private companies in a tricky position when selling their. FREEPIK
专有软件会毁了开源党吗?正如本文第一部分 中所概述的,开源原则已经使软件开发民主化,允许公司容易地传播和测试他们的软件,并且在一种微妙的给予和获取的平衡中联合了技术世界的两个部分——软件和销售。但这种平衡正受到威胁。
MongoDB 的创始人兼首席执行官 Dev Ittycheria 的评论称,开源是一种“免费增值战略”,并没有“帮助”MongoDB 取得成功,这可能会导致更多的公司否认开源开发者的投入,以声称他们的软件是完全专有的。这些由领先的 NoSQL 数据库公司 (也是开发人员最喜欢的) 所做的评论远远不是孤立存在的,它们让那些依靠开源社区来改进、传播和间接支持他们的软件的公司日子不好过。
本文的第二部分将在上下文中探讨 Ittycheria 的评论,看看开源公司如何在保持社区良好声誉的同时盈利,以及为什么这在今天如此重要。
在泥泞的水中漂浮
开源公司和开源社区之间的关系并不明确。这是因为公共利益和市场经济的概念不一定是相辅相成的。
开源项目通常发展很快,因为每个人都在朝着同一个目标努力,为了共同的利益改进软件——然而,一旦公司需要盈利才能生存,这些目标就不一定保持一致。
然而,开源确实存在于一个依赖于直接交换和供求原则的市场驱动的世界中。正如 Drupal 的创建者和 Acquia 的联合创始人兼首席技术官 Dries Buytaert 所说,“T18 开源允许实验、合作和从彼此的失败中学习的能力……[但是]性能、可伸缩性、安全性和正常运行时间的保证只能通过商业产品来提供。
这个市场驱动的世界也害怕大卫·海涅梅尔·汉森(DHH),Ruby on Rails 和 Basecamp , 的创始人所说的“白吃白喝的问题:”担心如果我们没有直接的纽带将我们追求共同利益的共同信念联系在一起,社会将充满乞丐和吸血鬼。
这种担心导致了双方的其他问题:一个公司产品的使用和消耗没有互惠的 公地悲剧 思想(在开源的情况下,用户可能期望免费的额外服务),在贡献者一方,他们的工作将不会得到其他用户或提供软件或许可证的公司的配合。开源中的公共和互惠努力对双方都至关重要,尤其是当利润进入等式时。
为了让一家公司开始从开源软件中赚钱,进入市场需要两个关键的先决条件:规模和主要可信度。
一旦一家公司由于开源社区的快速发展而扩大了用户群,它仍然需要这个社区,这样它才能在市场上保持信誉。
正如 Buytaert 明确指出的那样,“一个公司的开源贡献是项目在市场上取得成功所必需的。封闭源代码产品和托管服务为客户购买它们提供了独特的理由。“这就是为什么许多开源公司经常在盈利的同时培养开源社区,因为如果结构合理,这两者对彼此都有利。
最常见的策略是对支持或托管(Red Hat 和 Acquia)等服务收费,拥有所有权比例较小的开放核心(Apache),实施限制性许可并鼓励用户以这种方式转向付费服务(MongoDB)或混合模式,可以选择使用带有许可的开放源代码或专有软件(CockroachDB)。
不要恩将仇报
因此,Ittycheria 关于开源是一种“免费增值战略”的评论并不像它看起来那样具有爆炸性——公司确实从开源开发者的工作中获利,但只要保持互让的意识,它就被接受。
然而,拒绝来自开源社区的“帮助”问题要大得多,因为事实上开源的贡献远不如简单地指出由社区编写或修补的代码部分那样有形。以开源项目 Drupal 为例,Buytaert 解释了贡献和商业收益之间的关系:“由于 Drupal 是 Acquia 所做一切的核心,反过来,Acquia 仍然是 Drupal 的最大贡献者,支持数百个项目和代码修复。如果没有开源,我们永远不可能建立起自己的公司。
Ittycheria 声称,MongoDB 的产品提供中“没有来自开源社区的现有技术”,但这否认了测试、漏洞修复和 MongoDB 项目的快速扩散等因素,这些因素无疑帮助该公司取得了今天的成就,即使他们的核心产品不是由开源开发者开发的。将开源仅仅视为一种更快地编写专有软件并让尽可能多的人使用您的产品的方法,这没有考虑到拥有一大批开发人员在您身边的价值,以及一旦您到达顶端,否认他们的贡献的风险。
Buytaert 说,特别是在依赖大量复杂代码的人工智能和物联网项目的情况下,许多公司理解对人力的需求,并“开源他们的框架,以帮助整个领域更快地发展。他继续说道:“如果我们希望物联网、人工智能和自动化以我们需要的速度发展,开源将是唯一的答案。
一片空旷的田野
随着技术复杂性的进一步提高,在更多的应用中解决更多的问题,并传播到世界的各个角落,开源社区和商业收益之间的关系将比以往任何时候都更加紧密。
开源公司提供的不仅仅是自由软件,他们为新开发人员提供自我培训,并且经常支持开源社区作为贡献者的价值。
但是,当公司否认开源开发者的贡献以试图保持其软件的专利性时,他们可能会失去开发者的所有信任,或者破坏最终推动技术整体不断进步的关系。正如 Acquia 的 DB Hurley 所说:“也许开源最大也最容易被忽视的好处是技术和软件的不断进步。可以说,水涨船高——也就是说,只要所有的船只都认识到潮汐在他们成功中的作用。
最初发表于【https://www.forbes.com】。
为什么 Scrum 是构建数据科学项目的合适框架?
Photo by Markus Spiske on Unsplash
越来越明显的是,即使是最简单的数据科学项目也可能无法实现并转化为长期可持续的解决方案。事实上,尽管有大量关于人工智能的时髦词汇和媒体报道,但趋势仍然是许多人工智能计划失败了。更糟糕的是,由于缺乏对不同术语(即机器学习、人工智能和数据科学)的清晰定义和理解,预期往往无法实现,项目往往被取消,从而无法产生有利可图的可行解决方案。
接受调查的 10 家公司中有 7 家报告称,迄今为止,人工智能的影响很小或没有影响。在至少对人工智能进行了一些投资的 90%的公司中,不到五分之二的公司报告在过去三年中从人工智能中获得了任何商业收益。如果我们把在人工智能领域进行了大量投资的公司计算在内,这个数字会提高到五分之三。即便如此,这意味着 40%对人工智能进行重大投资的组织没有报告人工智能带来的业务收益。
在接下来的章节中,我将讨论为什么 Scrum 是开发数据科学解决方案的正确框架。简而言之,主要观点是:
- 数据科学家应该围绕假设思维开展工作。
- 文化是将 PoC 概念成功转化为产品并实现结果的最重要的组成部分。
- 将 Jupyter 数据科学转化为生产所需的工作量应始终进行沟通,并提前确定潜在的瓶颈。
Scrum 通过以下方式满足了上面的陈述。
首先,交付数据科学相关产品所涉及的自然模糊性可能会导致团队注意力不集中。除此之外,偶尔,由工程师、计算机、科学家和计量经济学家组成的多学科团队需要一起工作并有效沟通,在时间、资源和价值之间找到正确的平衡。在高度科学的领域中,沟通变得更加重要,在这些领域中,所谓的结果驱动的经验模型(黑色模型)对确定性的白色模型提出了质疑。为了克服数据科学项目的自然模糊性,同时保持关注和沟通,数据科学团队应该学会用围绕假设测试的工作来取代他们的预定义目标。本质上,每个 Sprint 都应该专注于制定假设,也就是说,智能的,清晰的猜测,这是采取行动和评估结果的基础。
假说是科学探究的起点,长期以来帮助科学家解决不确定性。此外,假设生成与为过程优化设计的更传统的管理方法形成鲜明对比。流程优化包括规定员工做什么和如何做。流程优化对于稳定的业务流程来说是非常特别的,因为这些业务流程已经实现了一致性标准化。(标准化的流程通常可以自动化,正是因为它们是稳定的。)然而,公司需要他们的员工来指导涉及不确定性和变化的工作。这就是组织学习和假设生成特别重要的时候。
数据科学可以定义为“使用数据获得洞察力来增加价值”,关键是要进行实验,然后使用所有可用的资源来应对挑战。
如果你想获得洞见,遵循假设检验方法是基本的,因为它给你检查不同假设和接受或拒绝最初陈述的自由。您需要进行尽可能多的实验,以了解您的数据集并识别不同的数据问题;你需要识别数据中的未知数,并采取相应的行动。
其次,开发一种对数据科学、机器学习和人工智能的每个边界都有清晰理解的工作文化,这对于启动成功的 POC 至关重要。重要的是,与 C-Level 的经理们进行沟通和教育,让他们对今天的可能性和潜在的好处有一个共同的理解,这是至关重要的。人工智能不是魔术,而是需要遵循的一套简单的工程技术和算法。此外,对"低挂果实"的短期迷恋会将注意力从准备投入生产的长期可持续解决办法上引开。为此,Scrum 有助于提供透明度,并定义清晰的事件,旨在增加团队成员内部以及团队外部的交流。最重要的是,它迫使数据科学家和产品经理尽快交付价值,主动思考他们的 POC 是否能够成功地为他们的组织交付价值。
最后,越来越多的数据科学家收到了关于参与各种数据科学竞赛、后续在线课程和黑客马拉松重要性的不同建议。尽管这是获得数据科学(编码和算法)经验的重要部分,但在 scrum 中工作迫使你从一开始就思考将 ML 算法投入生产的过程和端到端管道。至关重要的是要尽快了解将 ML 算法添加到产品中的要求是什么,有哪些限制,以及为什么在测试集中获得高分并不一定意味着数据科学家的工作已经结束。Scrum 迫使团队在每一次冲刺中交付价值,迫使他们经常思考数据管道的末端,而不仅仅关注堆叠、集合或随机森林是否能交付最好的分数。有时,速度、可解释性和说服决策者相信结果的能力比测试分数的增量提高更重要(尽管每个数据科学家都喜欢尝试不同的方法来提高他们以前的分数:)。
我们怎么做呢?
我们的团队由非常有才华的数据科学家和开发人员组成,他们在物理、航空航天工程、计算机科学以及机械和电子工程方面有着不同的背景。
我们使用简化版的 Scrum 来设定目标,挑战极限,高效协作,最重要的是建立一种直接和开放交流的文化。为了稳定我们的团队,提高我们的沟通效率,我们每天早上 9:30 准时举行 Scrum-stand-up。由于数据科学工作的性质,我们采用了 每周冲刺 来提高我们的敏捷性,并进行小规模实验,直到更多信息被披露。
如果我们将单词 value 替换为 insight,那么我们的团队每周都会交付 insight*。有时,我们的洞察力是对我们做不到的事情的简单观察。通常,我们的结论是,我们需要更多地关注特征工程,或者我们需要收集更多的数据。不出所料,我们很少能取得突破,达到重要的里程碑。*
附录
1:根据 MITSLOAN 管理评论,研究报告:“2019 人工智能全球高管学习和研究项目的发现”
为什么超时验证不是更普遍?
训练、验证和测试分区的超时性能需要计划和思考
监督机器学习的目的是对未标记的数据进行分类。我们希望算法能告诉我们一个借款人是否会违约,一个客户是否会购买,一张图片是否包含一只猫、一只狗、恶性肿瘤或良性息肉。这些算法“学习”如何使用带标签的数据进行分类,即我们知道借款人是否实际违约、客户是否购买以及一团像素实际显示的数据。通常情况下,研究人员获取标记的数据,并将其分为三种方式:培训、验证和测试/保留(术语有时会有所不同)。他们根据训练数据训练数百个模型,并选择一个在验证数据上表现良好的模型。仅使用标记数据的子集来训练算法的原因是为了确保算法在任何数据上表现良好——而不仅仅是用于训练算法的数据。研究人员经常多次重复这一步骤,选择不同的分割进行训练和验证,确保模型性能不是特定于特定的验证数据(k 倍交叉验证)。最后一步,研究人员评估模型在未知数据(测试集)上的性能。这提供了对模型在未标记数据上表现如何的度量。下图说明了这种经典设置:
Figure 1: Classic train, validate and test split. Select model that performs well on ‘validate’. Evaluate its performance on ‘test’
在大量应用中,数据具有时间维度,使得标记的数据是过去,而未标记的数据是未来。例如,我们已经知道哪些借款人或客户在过去违约或购买了产品。我们想知道未来哪些会这样做。在这种情况下,算法的目的是提前预测标签。这意味着它不仅需要处理昨天的数据,还需要处理明天的数据。我问时间维度应该如何整合到经典的培训/验证/测试设置中。如果过程随着时间的推移而改变,这肯定会很重要。原来有一整个子字段在处理这个问题。这些方法从在训练数据上设置滑动窗口,到主动测试底层关系的变化。在这篇文章中,我回顾了设置训练、验证和测试数据的几个选项。
选项 1:及时验证,及时测试
让我们考虑一下,如果我们忽略数据的时间维度,并拆分所有带标签的数据,而不考虑其时间维度,会发生什么。我们使用来自同一时间段的的数据来训练、验证和测试该模型。我们使用一个模型对新数据(比如 2019 年)进行预测,该模型是在标记的 2015-2018 年数据上训练、验证和测试的。下图说明了这种设置。优点是我们使用最新的数据来训练模型。缺点是,它假设过去存在的关系在将来也是一样的。如果这种关系随着时间的推移而改变,我们估计的性能指标(我们使用实时测试数据计算的)将夸大模型的真实性能,即一旦部署,模型的性能将比我们预期的更差。
Figure 2: In-time validate and in-time test
Pro: trains using latest data
Con: no idea how model performs out-of-time
选项 2:及时验证,超时测试
另一种可能性是,我们坚持 2018 年,使用 2015-2017 年的数据训练模型,并在 2018 年的数据上进行测试。这种方法的优势在于,我们可以明确评估模型预测超时的能力。缺点是在构建模型时没有考虑预测超时的能力。这是因为我们选择在及时验证数据上表现良好的模型。此外,除非我们使用完整的 2015-2018 年数据重新训练模型,否则我们不会使用最新数据进行预测。
Figure 3: In-time validate, out-of-time test
Pro: measures how the model performs out-of-time
Con: performance out-of-time not taken into account during model building
备选方案 3:“向前走”
Roger Stein 建议在连续的(潜在的滑动)数据窗口上训练模型,并对下一个时间段进行预测。每次我们都使用特定时间点的所有观察值来重新训练模型,并对下一个时间段进行预测。来自每个窗口的预测被组合成一组预测。我们对许多不同的模型都这样做,并选择一个创建最佳组合预测的模型。这种方法的优势在于模型构建(即尝试哪些模型效果最好)明确考虑了模型做出超时预测的能力。由于模型针对每个窗口进行了重新调整,因此这种方法模拟了在实践中发生(或应该发生)的模型的周期性重新训练。这种方法的缺点是我们总是在同一组数据上验证预测,而不是随机选择的数据。(也许公布一部分测试数据可以消除这种担忧。)
Figure 4: “walk-forward” approach, out-of-time validate
Pro: model building takes into account ability to predict out-of-time
Con: validation set not random
再培训还是不培训
当我们对未来进行预测时,尽可能使用最近的数据可能是个好主意,这样我们就能捕捉到最近的现象。但是,如果我们像选项 2 中那样提供最新的数据(以评估超时性能),我们可能应该在进行预测之前使用所有标记的数据重新训练模型。再培训如下图所示:
Figure 5: Once hyper-parameters are set, re-train the model using all labeled data
对于是否在部署之前使用所有训练和测试数据重新训练模型,网上存在一些分歧。 Kuhn 和 Johnson 在关于过拟合、数据分割和模型调整的章节中,他们说“然后我们使用选定的调整参数,用所有的训练数据建立一个最终的模型。”(第 65 页)。同样,吴恩达在他的一篇讲稿中说,从交叉验证程序中选择一个模型后,我们可以“有选择地”在“整个训练集”上重新训练这个模型
结论
总之,如果我们按照经典的设置,忽略选项 1 中数据的时间维度,我们不知道该模型将如何处理过时的数据。在选项 2 中,我们至少有一个模型超时性能的度量。然而,只有当我们做了类似选项 3 的事情时,我们才是在建立模型来预测未来。不管我们做什么,在进行预测之前使用所有标记的数据重新训练模型似乎是一个好主意。
我很难找到没有时间维度的应用程序的例子。我想一堆 MRI 图像中只有一些被标记了,这是一个例子,但是我的感觉是这些一次性的项目很少。此外,虽然一些过程随着时间的推移是稳定的(例如天气或图像分类——今天的狗明天看起来会和狗一样),但客户行为等过程必然会随着时间的推移而变化。因此,令人惊讶的是,超时测试和验证的讨论(和实现)并不普遍。不合时的性能可能比及时的性能更差,特别是如果您有许多及时标记的数据,不是很长的时间序列,并且是一个非平稳过程。然而,不做一些过时的评估可能会困扰开发人员,因为随后的数据将显示该模型的性能比指定的及时性能度量更差。
Kaggle 为什么不包容,如何搭建更包容的数据科学平台
如果你想擅长在游泳池游泳,那很好,去游泳吧。“如果你想在公海上表现出色,那就去奥姆德纳吧”——莱昂德罗·桑切斯,来自巴西的奥姆德纳挑战合作者。
“在过去的几个月里,我在 Omdena 的人工智能挑战赛中学到的东西比我在所有比赛中学到的东西加起来还要多。”——Murli Sivashanmugam,来自印度的 Omdena 挑战赛合作者。
不要误会我的意思,我认为 Kaggle 是一个很好的平台,让数据科学家磨练他们的技能,并在理论上应用学到的知识。
但这就是为什么它走得还不够远。
如果你是一名数据科学家,要想在 Kaggle 中名列前茅,你必须为 0.1%的分数而奋斗。**这样做的努力在现实生活中很多时候是不值得的。**添加数据泄漏探测、堆叠、提升、集成以实现 0.1%是必须的。当然,对于排行榜来说,这是非常有价值的,但对于现实生活来说,它根本没有价值,因为它降低了可解释性。
其次,**大多数解决方案在生产环境中是不可复制的。**记住,在一个游戏中,你在排行榜上寻找结果,而在另一个游戏中,你在构建完整的解决方案。
但更重要的是,不是每个人都有机会与数据科学家同事一起工作并向他们学习。例如,像南非的单身母亲扎希达或肯尼亚的索马里难民穆尼拉这样的人,位于世界的偏远地区,可能没有其他人可以合作。不是每个人都有机会上大学或者来自大城市,在那里他们可以遇到其他数据科学家。
穆尼拉离开索马里是因为暴力,但她没有失去希望,而是有着远大的理想。
medium.com](https://medium.com/omdena/make-the-internet-your-ai-university-and-be-a-changemaker-f75d9c441f78)
想要挑战 Kaggle 的组织必须公开数据集,这并不适合所有的商业模式。此外,许多现实世界的问题需要**公司与开发人员密切合作和迭代,**这在 Kaggle 中是不可能的。
如何改进 Kaggle,使其更具包容性
我们认为,让世界各地的人们在一个学习环境中相互联系,共同解决一个有趣的现实世界问题,这将是一件非常棒的事情。
“过去,我在‘ka ggle’中尝试过一些比赛,尽管它帮助我提高了对人工智能领域的理解,但我觉得由于比赛的背景,学习的机会是有限的。“我相信,当我们作为一个团队为一个共同的目标而努力时,最好的学习就会发生。”——Murli Sivashanmugam,来自印度的 Omdena 挑战赛合作者。
(有抱负的)数据科学家的优势
- 通过真实世界的经验来弄脏你的手。来自印度的 Rohith Paul】说,虽然我参加了一些 Kaggle 比赛,其中的数据已经被清除,但 Omdena 在现实世界中的曝光对我来说是一种新的体验,我喜欢它。****
- ****与领域专家密切合作。大多数现实世界的问题不仅限于数据科学问题,而是涉及领域专家来创造价值。我们已经看到,在与领域专家合作时,来自不同背景的数据科学家帮助公司细化问题,并为问题提供新的视角。
用来自以色列的亚历山大·拉斯科伦斯基的话说
“Omdena 可以通过在简历中提及真实工作经历的机会给人们提供如此丰厚的奖金,这是现在任何公司都要求的”。
组织的优势
- 由 30-40 名具有不同技能和经验水平的从业者组成的精选团队**。**
- 数据内部共享。
- 解决问题的社区包括公司(通常是数据科学家)通过直接接触项目以及必要时的额外参与。
- 社区成员有内在的动力,并且经常自己面对这个问题。他们不仅建立一个模型,还帮助公司提炼问题,并把问题放到一个更大的背景中。这是我们在所有挑战中反复看到的事情。
我完全同意对社区和有目的的合适的人的强调。这实际上是创造一个协作和知识共享环境的关键,看到它是如何工作的令人惊讶。
丹尼尔·米卡,时尚人工智能初创公司创始人
用联合国世界粮食计划署驻尼泊尔代表绍拉夫·苏曼的话说,
Omdena 的协作方法将创新带到了一个全新的水平,其理念是利用技术让不同能力的人一起解决问题。这种方法背后的驱动力是通过协作精神、指导和现场指导加速学习。
在过去的六个月里,我们的社区建立了深度学习模型,以 99%的准确率检测树木和预防森林火灾,预测模型,以确定安全区域和路线来阻止性骚扰,以及应对气候变化和暴力冲突的模型。
更多的用例可以在我们的博客上找到。
为什么线性回归不适合分类
分类任务的线性回归与逻辑回归
本文解释了为什么在分类问题上逻辑回归比线性回归表现得更好,以及线性回归不适合的两个原因:
- 预测值是连续的,而不是概率性的
- 使用线性回归进行分类时,对不平衡数据敏感
监督学习是机器学习必不可少的一部分。这是通过将输入变量映射到结果标签,从训练数据集中的示例中学习的任务,然后结果标签可用于预测新观察的结果。监督学习分类任务的示例有:
- 给出泰坦尼克号沉没时幸存和未幸存的乘客名单,预测是否有人能在灾难中幸存
- 给定一组猫和狗的图像,识别下一个图像是否包含一只狗或一只猫
- 给定一组带有情感标签的电影评论,确定一个新评论的情感( from Kaggle )
- 给定从 0 到 9 的手绘数字图像,识别手绘数字图像上的数字
示例 1 和 2 是二元分类问题的示例,其中只有两种可能的结果(或类)。例 3 和例 4 是有两个以上结果的多类分类问题的例子。
使用线性回归可以解决分类问题吗?
假设我们创建了一个完美平衡的数据集(所有事情都应该如此),其中包含一个客户列表和一个标签,以确定客户是否购买了产品。在数据集中,有 20 个客户。10 名年龄在 10 至 19 岁之间的顾客购买了产品,10 名年龄在 20 至 29 岁之间的顾客没有购买产品。“已购买”是由 0 和 1 表示二进制标签,其中 0 表示“客户没有购买”,1 表示“客户购买”。
Our sample training dataset of 20 customers and their purchase label
线性回归模型的目的是找到输入变量和目标变量之间的关系。下面是我们使用上述数据集训练的线性回归模型。红线是训练数据集的最佳拟合线,旨在最小化预测值和实际值之间的距离。
Linear regression model, showing best fit line for the training dataset
使用这个模型进行预测是非常简单的。给定任何年龄,我们都能够预测 Y 轴上的值。如果 Y 大于 0.5(高于绿线),则预测该客户会购买,否则不会购买。
+-----+-------------------+
| Age | Predicted Y Value |
+-----+-------------------+
| 10 | 1.21428571 |
| 15 | 0.83834586 |
| 19 | 0.53759398 |
| 20 | 0.46240602 |
| 25 | 0.08646617 |
| 30 | -0.28947368 |
+-----+-------------------+
问题#1:预测值是连续的,不是概率性的
在二元分类问题中,我们感兴趣的是结果发生的概率。概率的范围在 0 到 1 之间,其中某件事情一定会发生的概率是 1,0 是某件事情不太可能发生。但是在线性回归中,我们预测的是一个绝对数字,其范围可以在 0 和 1 之外。
使用我们的线性回归模型,任何 30 岁以上的人都有一个负“购买”价值的预测,这实际上没有意义。当然,我们可以将任何大于 1 的值限定为 1,将小于 0 的值限定为 0。线性回归还是可以的吧?
是的,这可能行得通,但是逻辑回归更适合分类任务,我们想证明逻辑回归比线性回归产生更好的结果。让我们看看逻辑回归是如何对数据集进行分类的。
Logistic regression model, a sigmoid curve that fit the training dataset
现在,我们在同一个数据集上训练了两个模型,一个通过线性回归,另一个通过逻辑回归。我们可以通过使用均方根误差(RMSE)和决定系数(R 得分)来比较这两种模型的性能。
+---------------------+--------------------+----------------------+
| | R2 (higher better) | RMSE (lower better) |
+---------------------+--------------------+----------------------+
| Linear regression | 0.7518796992481203 | 0.062030075187969935 |
| Logistic regression | 0.9404089597242656 | 0.014897760068933596 |
+---------------------+--------------------+----------------------+
r 是观察数据点与拟合回归线接近程度的量度,通常越高越好。但是仅有 R 是不够的,所以我们也要看看 RMSE。RMSE 衡量观察数据点与模型预测值的距离,越低越好。
从度量标准来看,在分类任务中,逻辑回归比线性回归表现得好得多。就像凯西·科兹尔科夫 引用它:
神经网络也可以被称为“瑜伽网络”——它们的特殊能力给了你一个非常灵活的边界。
问题#2:对不平衡数据敏感
让我们再添加 10 个年龄在 60 到 70 岁之间的客户,并训练我们的线性回归模型,找到最佳拟合线。
Linear regression model on 30 customers
我们的线性回归模型成功地拟合了一条新的线,但是如果你仔细观察,一些客户(年龄 20 到 22 岁)的结果被错误地预测了。
+-----+-------------------+
| Age | Predicted Y Value |
+-----+-------------------+
| 18 | 0.56495292 |
| 19 | 0.55091537 |
| 20 | 0.53687781 |
| 21 | 0.52284026 |
| 22 | 0.50880271 |
| 23 | 0.49476516 |
| 24 | 0.48072761 |
| 25 | 0.46669006 |
+-----+-------------------+
线性回归试图通过最小化预测误差来拟合回归线,以便最小化年龄在 60 至 70 岁之间的客户的预测值和实际值之间的距离。让我们用相同的数据集训练一个逻辑回归模型。
Logistic regression model on the same training dataset
是啊!在这个非常简单的数据集中,逻辑回归成功地对所有数据点进行了完美的分类。
+-----+-------------------+
| Age | Predicted Y Value |
+-----+-------------------+
| 18 | 0.85713668 |
| 19 | 0.64502441 |
| 20 | 0.35497751 |
| 21 | 0.14286435 |
| 22 | 0.04805457 |
+-----+-------------------+
让我们再次比较两个模型的 R 和 RMSE,你会发现逻辑回归比线性回归做得更好。
+---------------------+---------------------+----------------------+
| | R2 (higher better) | RMSE (lower better) |
+---------------------+---------------------+----------------------+
| Linear regression | 0.4211265134234073 | 0.12863855257257611 |
| Logistic regression | 0.9553066567250715 | 0.00993185406109522 |
+---------------------+---------------------+----------------------+
结论
Both the linear and the logistic regression line
线性回归适用于预测连续值的输出,例如预测房地产价格。其预测输出可以是任何实数,范围从负无穷大到无穷大。回归线是一条直线。
而逻辑回归用于分类问题,预测概率范围在 0 到 1 之间。例如,预测客户是否会购买。回归线是一条 s 形曲线。
笔记本
在这个笔记本中查看本文中使用的代码。
40%的吸尘器,40%的看门人,20%的算命师。
towardsdatascience.com](/data-scientist-the-dirtiest-job-of-the-21st-century-7f0c8215e845)
为什么是机器学习?
Image by the author
在我的上一篇文章中,我谈到了用于描述各种统计/数据科学领域的无数术语。我还提到,在这些领域中,机器学习是最强大和最受欢迎的子领域之一。
在接下来的一系列文章中,我将更深入地研究机器学习。我认为,与其定义和解释机器学习的各个子领域,不如简要探讨一下为什么机器学习首先会存在。机器学习完成了常规编程没有完成的事情,我们如何知道何时使用一个而不是另一个?
决定,决定
人类生活的很大一部分,甚至比我们意识到的还要多,是由*决策决定的。*在最基本的层面上,一个人的一秒一秒的存在是一个关于如何度过下一秒的持续决策循环。有时候这个决定是下意识的,有时候不是。我们的决定可以是简单的,影响很小的,也可以是复杂的,影响深远的。决定构成了我们整个清醒的生活,一个又一个的选择层层叠加,相互嵌套。
对于计算机来说,情况大致相同。事实上,将计算机与其他机械机器真正区分开来的一个特征是天生的决策能力。读取输入并根据这些输入改变其行为。在此之前,机械装置被降级为无休止地执行完全相同的动作序列,而不管输入或环境如何。
人类和计算机的主要区别在于,计算机没有随机应变做出新决定的能力。它们不能像人类那样“思考”。只有当决定的“正确”答案首先被输入计算机时,计算机才能做出决定。
因此,所有的计算机决策实际上都是将其他地方做出的决策翻译成计算机可以理解和执行的格式的*。*当谈到我们为什么使用机器学习时,这是非常重要的一点。当我们想到计算机变得如此“强大”时,我们真正惊叹的是更多的内存和处理能力如何增加了已转化为计算机格式的决策的复杂性。
越来越专业
因为决策以及我们翻译决策的过程非常重要,所以让我们定义几个术语来帮助我们更准确地谈论它们。请注意,虽然这些术语在机器学习文献中随处可见,但它们的定义在很大程度上取决于作者。
一个决定是我们程序中的一个点,在这个点上,代码被执行或不被执行是基于该决定的一组输入。每个决策都有一个模型和参数。决策的模型基本上是决策本身的格式或结构。正如我们上面所说的,计算机不会像人类那样做决定。该模型是我们以计算机友好的格式对决策过程的近似。
该模型的参数是我们插入来微调决策的值。通过一个例子可以更容易地看出这一点。我们来看一下代码,如果一条推文超过 280 个字符,我们会拒绝这条推文:
这里的决策模型只是一个使用IF-THEN-ELSE
格式的基本条件语句。参数是布尔条件表达式tweet.length < 280
中的值。
一个模型可以用于许多决策;条件表达式模型可能包含了计算机做出的所有决策的 95%以上。然而,参数是特定于该个体决策的。
让我们看一个不同的模型:我们的决定是试图根据平方英尺来预测房子的价格。我们选择使用趋势线,趋势线的模型就是一条线的方程式:
在这种情况下,x
将是我们的平方英尺,a
和b
代表我们需要找到的参数来完成这个决策。使用数据,我们应该能够找到符合我们的参数和(大致)近似房价的值。我们可以用同样的线性模型,用不同的参数来近似,比方说,过去 20 年的股票市场。
这里的要点是:单个模型可以用于需要相似逻辑的不同决策,但是没有模型可以用于每一个决策。然而,即使使用相同的模型,参数也将总是需要根据该决定进行定制。类似地,一个决策可能有多个提供满意结果的模型(带有正确的、特定于模型的参数)。
我们将模型的选择和决策参数的选择合起来称为逻辑。一般来说,会有一种逻辑比所有其他逻辑都好,我们称之为目标逻辑。为了理解逻辑和目标逻辑之间的区别,请考虑在上面的房价示例中,我们可以使用基本上任何值作为a
和b
的值,它仍然可以算作一个逻辑,但是其中一些值在准确预测价格方面肯定比其他值更好,因此我们需要一个术语来描述问题的最佳逻辑。
#逻辑目标
所以我们现在有了一个理解决策的框架,我们知道我们的决策目标是目标逻辑。我们如何找到目标逻辑?
这里我们需要再定义一个术语:决策源。不足为奇的是,这仅仅意味着一个决策的来源,事实证明,一个决策来自哪里对找到目标逻辑有很大的影响。在很大程度上,编程决策来自我们称之为仁慈的决策源,这只是一个希望决策对计算机友好并且易于编程的来源。通常善意的来源是程序员自己,他们希望决策对计算机友好,原因很明显。
然而,没有要求来源是仁慈的,当这不为真时,找到目标逻辑的过程自然更加困难。通常,当像这样的决定很棘手时,有两种选择:
首先,程序员可以自己做繁重的工作,把一个模糊的或不适合计算机的决定翻译成更容易编码的决定。当决策来源是非程序员编写的规范时,这是非常常见的。例如,删除推文的要求可能始于“删除所有长于短消息的推文。”“短消息”的概念过于模糊,很难找到一个逻辑。因此,程序员可能会决定用字符来衡量长度——这对计算机来说是一个非常自然的选择。在此基础上,“长于短消息”的阈值可以设置为 280 个字符。
这对每个人来说都是最好的,最初决定的精神被保留了下来(保持消息简短),而它的细节已经变得对计算机友好。本质上,决策来源已经从困难变成仁慈。
不幸的是,这并不总是可能的。以天气为例:称天气为“决定”是准确的,但这个决定是由一个涉及地球、太阳、大气等的极其复杂的过程做出的。天气的决策来源基本上是“地球本身”,而地球不是一个仁慈的决策来源。此外,即使程序员可能了解天气背后的一些过程,也不能保证他们能够将这些知识转化为机器可用的东西。很容易看出,与 tweet 示例相比,这要复杂得多,需要不同的方法来找到它的目标逻辑。机器学习是实现这一目标的最常见方式。
什么是机器学习?
有了所有这些,我们现在能够后退一步,根据我们上面概述的内容来定义机器学习。首先让我们回顾一下:编程主要是关于编码决策。每个决策都需要一个逻辑,这个逻辑由模型和参数组成。“目标逻辑”是一种在实现我们想要的决策方面比其他任何逻辑都更有效的逻辑。最后,有些决定比其他的更难。
当决策困难时,通常有两个原因:首先,决策可能非常复杂,需要一个复杂的模型来表示。第二,我们可能有一个可以近似决策的模型,但是我们缺少使这个模型起作用的参数。
解决第一个问题,缺乏模型,是人工智能(AI) 整体的职权范围。机器学习具体来说更多的是解决第二个问题:为模型寻找参数。
我们如何做到这一点?考虑我们上面的天气例子:当决策来源不是人类时,我们不能确切地要求正确的逻辑,但是我们可以观察似乎反馈到最终决策的过程。让我们从预测天气的所有事情开始,假设我们只是试图预测接下来的一个小时内是否会下雨。不难意识到云和雨是相互关联的,它们表明将会下雨。更进一步,我们意识到诸如大气压力、湿度和露点等因素也涉及其中。综合起来,我们的观察可以组合成一个数据集。十有八九,我们做出决策所需的信息,或者至少是它的近似值,都包含在这个数据集中。
我们得出这些近似值的方法取决于问题的性质和所使用的算法,但从广义上讲,它们都是统计数据。机器学习方法是关于通过统计发现数据中的模式,并将这些模式转换为决策逻辑。
所以我们现在可以写一个非常完整的机器学习的定义。给定一个决策,其中我们不知道逻辑,但是我们有关于决策过程的观察,可以使用这些观察的统计分析来创建决策逻辑的近似。定义的最后一部分只是强调了机器学习解决方案通常是一种“最佳情况”方法,并不总是正确的。也就是说,他们经常提供可行的解决方案来解决原本没有的问题,这也是这种方法如此有价值的原因。
所以我们终于对“机器学习”的含义有了一个完整的定义。我们还没有进入任何关于特定类型的机器学习或算法的细节,因为这些主题中的每一个都需要至少这么长的帖子来涵盖。机器学习不是一个可以轻松或快速学习的话题,但在我看来,对为什么我们做我们所做的事情有一个良好的概念基础对于掌握更大的画面是必不可少的。如果你有兴趣了解更多关于机器学习处理的各种问题,以及是什么让它们相似/不同,请继续关注我的下一系列帖子。
为什么机器学习对智能制造很重要
对于那些没有合适的工具和资源来开发高质量产品的企业来说,制造产品可能非常昂贵,而且是一个复杂的过程。
目前,人工智能和机器学习在生产和组装物品方面变得更加普遍,有助于降低生产成本和时间。事实上,今天所有可以由分析创造的潜在价值的 40%都来自于人工智能和人工智能技术。总体而言,机器学习的年价值可达 3.5 万亿至 5.8 万亿美元——根据麦肯锡的数据。
在过去的 5 年中,有记录表明指数技术可以帮助构建稳健而快速的模型,从而推动功能改进。
关键在于,领先的增长黑客战略涉及整合机器学习平台,这些平台可以产生洞察力,以提高产品质量和产量。机器学习有助于创造更智能的制造,机器人可以精确地将物品放在一起,分析可以识别即将到来的情况,自动化流程可以产生无错误的输出。
TrendForce 指出,智能制造与快速增长成正比。该公司预测,智能制造市场在 2019 年的价值将超过 2000 亿美元,到 2020 年将增长到 3200 亿美元,预计复合年增长率为 12.5%。许多机器学习开发公司正在利用各种智能解决方案帮助企业满足其制造需求。
数据量与日俱增,因此,制造企业需要利用更智能的解决方案来提高整个流程的效率和可扩展性。这些数据在自动化流程甚至预测和监控绩效方面帮助很大。
以下是机器学习影响制造业的一些方式-
改进流程
制造商已经成功地将机器学习纳入业务的三个方面——运营、生产和后期制作。包括这一过程的组织之一是发那科,一家日本工业机器人和自动化技术制造商。发那科使用深度强化学习,这是 Preferred Networks 开发的一种机器学习解决方案,使其机器人能够快速有效地自学新技能,而无需精确复杂的编程。
- 产品开发
在产品开发方面,数据为制造企业带来了巨大的机遇。这些数据有助于企业更好地了解他们的客户,满足他们的需求,并满足他们的需要。这样,它将有助于为您的客户群开发新的或更好的产品。
有了有价值的数据,制造商可以开发出具有更高客户价值的产品,并最大限度地降低新产品上市的风险。在对产品进行规划、制定战略和建模时,会考虑可操作的见解,从而有助于加强决策过程。CRM 应用程序的实施在很大程度上是为了优化运营流程。
2。机器人
机器人可以改变制造业。它们可以帮助人类完成复杂或危险的日常任务。制造商倾向于在机器人化方面投入更多资金,以满足需求并减少人为错误。这些工业机器最终为高质量的产品制造做出了很大贡献。每一个财政年度,该产品都会达到基线,以增强其产品线。
3。安全
机器学习已经开发了一些平台,使组织中的移动性变得安全。ML 算法可确保您的流程安全并推动业务创新,同时确保移动应用、设备和数据的开发在整个企业中得到保护。它支持设备上的安全性,并修复任何 Android 或 iOS 设备上的设备和网络威胁。
此外,如果一个组织需要一个快速、可靠、安全的 VPN 来传输、保存和保护企业数据,那么 Surfshark VPN 被认为是一个绝佳的选择。
4。质量控制
机器学习在提高制造过程的质量方面发挥着重要作用。深度学习神经网络可以在装配设备的可用性、性能、质量和机器的弱点方面提供帮助。
西门子一直在使用神经网络来监控其钢铁制造,并提高整体效率。他们已经投资超过 100 亿美元收购 ML 公司,以提高其运营质量水平。
5。供应链管理
机器学习通过改善物流流程、库存管理、资产管理和供应链管理,帮助公司实现价值最大化。机器学习、人工智能和物联网设备的集成有助于确保高水平的质量。
当今的制造商正在寻找将新兴技术与资产跟踪、准确性、供应链可见性和库存优化相结合的方法。机器学习开发公司开发了一套供应链管理套件,可以监控制造、包装和交付的每个步骤。
普华永道预测——更多的制造商将采用 ML 和分析来改善预测性维护,预计在未来五年内将增长 38%。在此期间,流程可视化和自动化预计将增长 34%,而分析、API 和大数据的集成将使互联工厂增长 31%
麦肯锡后来补充道——机器学习将减少 50%的供应链预测误差,同时也减少 65%的销售损失。
总结当前场景
通过机器学习和人工智能产品开发的核心算法将是制造业参与者的一个重大数字化转型阶段。总的来说,工业将会愿意用更复杂的原型来开发复杂的设计过程。而从产品和过程中捕获的数据将被馈送到 ML 模型,以通过连续的反馈循环来进一步改进制造过程。随着一系列机器人和机器学习将改变工业运营,制造业劳动力将需要重新技能,以便与新开发的设备一起工作,而传统机器将需要改造,以适应行业。
目前的预防性维护是定期停止机器的工作,这增加了停机时间,并且不具有成本效益。该方法也不一定解决导致系统故障的实际问题。
要获得可操作的准确见解,需要大量的实时数据,以便在系统出现故障之前了解异常情况。
机器学习通过识别、监控和分析制造过程中的关键系统变量,是高级预测性维护的关键使能因素。通过 ML,操作员可以在系统出现故障之前得到警告,在某些情况下无需操作员干预,并避免代价高昂的计划外停机。
为什么机器学习模型在生产中会退化
在几次由于意外的 ML 退化而导致 ML 项目失败之后,我想分享一下我在 ML 模型退化方面的经验。事实上,相对于模型维护,有很多关于模型创建和开发阶段的宣传。
假设机器学习解决方案在投入生产后无需维护就能完美工作是一个错误的假设,也是公司将第一批人工智能(AI)产品推向市场时最常见的错误。
一旦你把一个模型投入生产,它就开始退化。
为什么 ML 模型会随着时间退化?
正如你可能已经知道的,数据是一个成功的 ML 系统的最重要的组成部分。拥有一个为你提供准确预测的相关数据集是一个很好的开始,但是这些数据能持续提供准确预测多久呢?
在所有 ML 项目中,预测您的数据将如何随时间变化是关键。在一些项目中,我们低估了这一步,很难实现高精度。在我看来,一旦你在 PoC 阶段后对你的项目感到有信心,就应该制定一个计划来保持你的模型更新。
事实上,在你开始使用它之前,你的模型的准确性将处于最佳状态。这种现象被称为概念漂移,虽然在过去的二十年里学术界对它进行了大量的研究,但在行业最佳实践中它仍然经常被忽略。
概念漂移: 是指模型试图预测的目标变量的统计属性,以不可预见的方式随时间发生变化。这就产生了问题,因为预测变得不那么准确了,久而久之。
关键是,与计算器相比,你的 ML 系统确实与现实世界互动。如果你使用 ML 来预测你的商店的需求和价格,你最好考虑一下本周的天气、日历和你的竞争对手在做什么。
在概念漂移的情况下,我们对数据的解释随着时间而变化,即使数据的一般分布没有变化。这导致终端用户将模型预测解释为对于相同/相似的数据已经随着时间而恶化。数据和概念也可能同时漂移,使问题变得更加复杂…
我注意到,依赖于人类行为的模型可能特别容易退化。显然,可以根据项目的性质来预测风险。在大多数情况下,必须制定定期的模型审查和再培训计划。
此外,大多数模型只能捕捉反映他们看到的训练数据的模式。一个好的模型捕捉到了这些数据中重要的部分,忽略了不重要的部分。这创造了一般化性能,但是任何模型对此的准备程度都是有限的。
泛化: 指的是你的模型能够恰当地适应新的、以前未见过的数据,这些数据来自与用来创建模型的分布相同的分布。它与过度拟合的概念密切相关。如果你的模型过度拟合,那么它将不能很好地概括。
泛化性能的最佳测试是查看模型在长时间内如何处理真实世界的数据。这个过程至少有两个主要因素。
如何防止模型退化?
这听起来可能很明显,但在部署后监控您的 ML 性能是至关重要的。如果监视所有特性听起来像是一项耗时的任务,我们可以监视一些关键特性,它们在数据分布上的变化可能会严重扭曲模型结果。我强烈建议你在生产之前为这个过程创建一个策略(通过识别正确的元素)。
模型监控是一个持续的过程。
如果您观察到模型性能下降,那么是时候重新构建模型设计了。棘手的部分不是刷新模型和创建一个重新训练的模型,而是考虑可能提高模型性能并使其更加可靠和准确的附加功能。
完成上述步骤后,就可以使用新的或修改后的特征和模型参数集来重新创建模型了。在这一点上,我们的目标是确定一个能够提供最佳精度的最佳模型,该模型可以很好地适用于某些数据漂移。
我注意到,在某些情况下,重新创建模型并不能提高模型的性能。在这些情况下,分析模型出错的例子并寻找当前特性集之外的趋势有助于识别新特性。基于该知识的新特征的创建可以给予模型新的经验来学习。
人工学习
我们经常使用的用新数据维护模型的一个解决方案是使用我们最初用来构建模型的相同过程来训练和部署我们的模型。**我们称之为手动学习。**你可以想象这个过程会很耗时。我们多久重新培训一次我们的模型?周刊?日常?答案取决于你的 ML 申请。
当我们手动重新训练模型时,我们可能会发现一种新的算法或一组不同的功能,从而提高准确性。事实上,定期回顾你的过程可能是个好主意。正如我前面提到的,你可能会发现一种不同的算法或一组新的功能来改善你的预测,而这不一定是持续学习系统擅长的事情。
也许你可以用前期收集的数据每月或每年更新模型。
这也可能涉及回测模型,以便在重新拟合静态模型时选择适当数量的历史数据来包括。
重量数据
另一个解决方案是加权数据。的确,一些算法允许你衡量输入数据的重要性。
使用与数据的年龄成反比的加权系统可能是有意思的,使得更多的注意力放在最近的数据上(较高的权重),而较少的注意力放在最近的数据上(较小的权重)。
持续学习
我最喜欢的方法是拥有一个可以持续评估和重新训练模型的自动化系统。持续学习系统的好处是它可以完全自动化。
总的来说,合理的模型监督与精心设计的模型检查计划相结合,对于保持生产模型的准确性至关重要。优先检查关键变量,并在发生变化时设置警告,这将确保您永远不会因环境变化而措手不及,从而使您的模型失去效力。
在数据点具有高度独立性的输入变量的情况下,在统计过程控制中使用的控制图可用于检测过程的变化。
处理模型漂移
我坚持这一点,但是你的 ML 的成功也取决于你计划维护你训练过的模型的方式。在几个项目中,我意识到对模型工作方式缺乏经验的商业领袖可能没有预见到这种需求。
生产模型包括监控和维护。
应该定期评估新数据集上的模型性能。应该定期可视化和比较这些性能跟踪,以便您可以确定何时需要干预。有几种评估 ML 性能的标准。
Confusion Matrix
模型退化的原因可以被发现并被显式建模。可以研究、理解和利用周期性的时间效应。一旦模型收集了足够的性能指标,这可能是数据科学团队要解决的项目。假设你一直在追踪他们。
定期考虑性能指标并触发模型的重新训练或重建的程序也是必要的,因为没有它,您将能够看到性能的损失,但没有解决它的系统。
投资和团队
除了技术方面,我强烈建议您在项目投入生产后,将最好的数据科学家和工程师留在项目中。在经典的软件项目中,部署完成后,你的运营团队会处理它,工程师们会继续开发下一个大项目,与之相比,ML 和 AI 系统中的许多技术挑战是保持它们的准确性。
你需要投资来保持你的客户使用的机器学习产品和服务的准确性。这意味着与传统软件相比,运营 ML 产品的边际成本更高。
维修费用
为了保持高质量的模型,理想情况下,算法应该在每次数据交付时重新训练。另一方面,为了优化成本,应该尽量少做。
显然,某些机器学习开发实践招致更多的技术债务,因此比其他的需要更多的未来维护。机器学习专用开发债务风险因素多种多样。它们包括无数的概率变量、数据依赖性、递归反馈循环、流水线过程、配置设置以及加剧机器学习算法性能的不可预测性的其他因素。
这些复杂性越多,进行有效维护所需的根本原因分析就越困难。
您将无法完全自动化地摆脱维护负担。在任何情况下,倾向于机器学习模型都需要仔细审查、批判性思维和人工努力,只有受过高级培训的数据科学家才能提供这些。