我从接受编码采访中学到了什么
你如何从别人中脱颖而出并每次都通过
在 Unsplash 上拍摄的 ThisisEngineering RAEng
有什么比面试时在别人面前现场编码更令人生畏的吗?我认为不是。
我曾经非常害怕现场编码面试。以至于有一段时间,这是我找不到新工作的原因。我不想为了得到一个新的职位而不得不去学习复杂的算法和没有人在日常工作中使用的计算机科学“谜语”。
这感觉不像是对我时间的有效利用,我本可以在现实世界的项目中埋头苦干。
最终,我咬紧牙关,开始申请新的角色,非常清楚编码面试是无法避免的。每天练习 SQL Leetcode 问题肯定会有帮助,但是除了懂语言之外还有更多。
当时,我并没有意识到是什么让一个候选人在编码面试中脱颖而出。现在,我在目前的公司执行这些测试,发现通过测试的候选人和那些没有进入下一轮的候选人之间存在巨大差异。
以下是你如何通过编码面试的方法:
1.提前准备
这看起来很简单,但是你会惊讶有多少人没有复习不同类型的 SQL 函数或正确的 Python 语法。不知道所有事情也没关系(毕竟我们有谷歌),但至少表明你已经尽力准备了。
在你面试的前一周,每晚至少花一个小时解决练习题,并在途中搜索。你可能会觉得寻找答案是失败的,但实际上你只是在帮助自学。
这是更有效地利用你的时间来找到你正在寻找的解决方案,而不是绞尽脑汁去想一些你无论如何都记不住的事情。
除了练习题之外,温习一下在你使用的任何语言中最流行的函数。对于 SQL,一定要知道 COUNT 和 SUM 之间的区别,并且熟悉可以帮助您更有效地解决问题的窗口函数。
使用 Python,学习数组、列表和字典等关键概念。这些几乎总是出现在编码面试中,所以确保你很好地了解它们的功能。
2.阐明假设
很多时候,候选人会对一个问题钻牛角尖,做出某些假设,而不先澄清它们。你不想假设一件事,然后想出整个解决方案,结果却发现那是错误的假设。
我曾经经历过有人对整个问题进行编码,而不是谈论他们正在做的事情,结果却完全偏离了我想要的。
如果你必须计算保留率或转换率,在把问题编码出来之前,和面试官澄清公式。如果你认为某些边缘情况不适用于你的职能,让面试官知道。沟通越多越好!
这会节省你的时间,如果公司是根据你能通过多少个问题来评判你的话,这是很有价值的。
3.谈谈你正在做的事情
重申一遍,说话说话说话!你交流得越多,面试官就越了解你的思维过程。他们越了解你的思维过程,就越明白哪里出了问题。
如果你弄错了问题,但没有表达出你的想法,面试官很容易迷路,认为你根本不知道自己在做什么。
当你在交流中出现问题时,更容易确定错误发生在哪里,并轻松修复它。最终,这会节省你解决难题的时间,防止你陷入困境。
即使对你来说很明显你在编码什么,也要谈论它!你不能总是假设你解决问题的策略是最直接的。解决问题总是有多种方法,你的方法可能不是别人的方法。
4.如果你不确定,就问问题
不要害怕提问!不管是谁在测试你,都要意识到谷歌是工程师工作不可或缺的一部分。我们不可能记住每一个存在的语法、功能和公式。如果你知道你想用什么功能,但是忘记了确切的名字,问一下。
例如,在我的一次 Python 访谈中,我需要使用将字符串全部小写的函数。忘了是 is_lowercase()还是 lowercase(),就问了面试官。他也不确定,很快就搜索到合适的功能给我用。
如果我没有问的话,我可能已经挣扎了十分钟,为这么简单的东西尝试不同的名字。面试官不是在测试你是否能记住一门语言的每个细节。他们想了解你是如何思考和解决难题的。
不要为像记住确切的函数名这样的小事烦恼。如果你不是 100%确定,就问。
结论
我们给自己施加了太多的压力来编写采访。不要害怕他们。把它们看作是拓展你思维方式和学习新事物的挑战。如果你沟通清楚,那么即使你没有把每个问题都做对,你也有很大的机会通过。
当我不能以最有效的方式解决整个问题时,我震惊地听说我通过了某些 Python 面试。然而,我实践了所有这四个技巧,这本身就产生了巨大的影响。雇主希望雇佣具有良好批判性思维能力和沟通他们遇到的问题的能力的人。
如果你在准备 SQL 面试时需要帮助,请务必查看应对每一个 SQL 面试问题的顶级技巧和如何使用 SQL 窗口函数。
作为数据科学家,我在职业生涯中学到了什么
如果时光可以倒流,我会给自己什么职业建议?我做对了什么,哪里做错了?
马特·邓肯在 Unsplash 上的照片
近两年来,我一直在积极地用媒介写作,在这个过程中发生了一些意想不到的事情。
不时有同学向我请教。在回答时,我总是会回顾一下我在数据科学领域的职业生涯。
我学到了什么?我会选择不同的道路吗?
这篇文章是我职业生涯中总结的经验教训。
八年前…
乔恩·泰森在 Unsplash 上的照片
我的职业生涯始于 2013 年,当时我在一家研究机构获得了一份数据科学家实习——梦想成真。我在研究分布式机器学习算法,这在当时是一个热门领域。那是 Hadoop 的时代。
那时候事情很简单,大数据是唯一的时髦词汇。然后是深度学习和 AI。
我对那段时间有着最美好的回忆——与尖端技术一起工作,宽松的期限,优秀的团队……我可以一直这样下去。
只有一个问题——工资!
实习一年半后,我被邀请攻读数据科学的博士学位,重点是自然语言处理。虽然我很荣幸,但我拒绝了这个邀请,因为我对 NLP 不感兴趣,我不会花至少 4 年的时间来研究它。
其他原因是我破产了,而且我也不再年轻了——26 岁,没有任何职业经验。
从事数据科学工作不需要博士学位。
回想起来,我从来没有后悔过我拒绝攻读博士学位的决定,我必须从学术界跳到工业界。
巨大的飞跃
我永远不会忘记那一天。一个小创业公司的 CTO 邀请我去面试。我收到邀请的那天和面试本身是同一天。
我对自己说,我已经失去了什么,我去了。我们就我的经历进行了一次愉快的聊天,我将如何解决某些事情——不要太技术性,更多的是概念上的。最后,他问我在学术界的薪水是多少,并给了我 3 倍的报酬。
我会失去什么?
在去面试之前,我不打算接受这份工作。在学术界工作感觉很棒,但后来我想到了薪水和那些配有新 MacBooks 的舒适办公室……我接受了这份工作。没有回头路了。
创业公司
在 Unsplash 上由 Austin Distel 拍摄的照片
这家初创公司聘请我制作一个可以处理大数据的推荐系统。对于来自以研究为导向的环境的我来说,这是一个相当大的挑战。
我有在受控环境中构建概念的经验,而不是生产就绪系统。那些日子,我有几个不眠之夜和工作假期。
当时,我认为我的项目是最重要的事情。我太沉迷于此,没有看到更大的画面。我们将如何将它集成到生产中?有很多次,当我们和团队一起吃午饭时,我只想着我需要修复的代码和错误。
我学到的重要一课是建立关系比你正在做的项目更重要。我们仍然和我在初创公司遇到的同事一起出去玩,但是没有人谈论我们当时正在做的项目。
建立关系比你正在做的项目更重要
当我设法建立推荐系统时,我后来发现好的推荐并不是最重要的事情。这都是营销!
当时机器学习术语正在疯狂地销售服务。
和许多创业公司一样,这家公司也不例外。很快资金枯竭,我又去找工作。
梦想远大
兰迪·塔兰皮在 Unsplash 上的照片
当启动资金枯竭的时候,我存了足够的钱,可以富裕一年(难怪资金枯竭😂).
我开始找新工作的同一天,我听说我们没有下个月的资金。
作为一名开发人员,代码是一种通用语言,我已经有一两年没有想过要搬到另一个国家了。我还没想过把我的副业货币化。我有足够的钱,我年轻,我有经验,但我没有想过。
不要太沉迷于你当地的环境
回想起来,我害怕不确定性。这让我想起了两句名言:
事情从来没有看起来那么糟或那么好。
不要让高点太高,也不要让低点太低
前进的道路
马特·邓肯在 Unsplash 上的照片
在初创公司,我们使用先进的技术,因此找到新工作并不困难。我甚至收到了多家公司的邀请。最困难的事情是决定接受哪个提议。
如果你没有经验,处于类似的情况,我有简单的建议给你:
当你有多个工作机会时,接受有更好导师的那个
在你走之前
- [Binary logistic regression overview](https://dataanalysis.substack.com/p/supervised-machine-learning-binary-logistic-regression-overview-47282b9c608b)- [50% Off All AI Nanodegree Programs!](https://imp.i115008.net/c/2402645/998478/11298) [Course]- [Data Science for Business Leaders](https://imp.i115008.net/c/2402645/880006/11298) [Course]- [Free skill tests for Data Scientists & Machine Learning Engineers](https://aigents.co/skills)
上面的一些链接是附属链接,如果你通过它们进行购买,我会赚取佣金。请记住,我链接课程是因为它们的质量,而不是因为我从你的购买中获得的佣金。
在 Twitter 上关注我,在那里我定期发布关于数据科学和机器学习的消息。
照片由Courtney hedge在 Unsplash 拍摄
你是哪种数据科学学习者?
变量
我们每周精选的必读编辑精选和原创特写
与 TDS 社区的成员聊天总是令人振奋的,但在一个特定的方面尤其如此:认识到人们的学习习惯和风格是多么广泛。这当然是有道理的。人们从不同的专业、学术和文化背景来研究数据科学,对一些人有用的东西对其他人可能不一定有用。
例如,在本周的《作者聚焦》中,多产撰稿人 Khuyen Tran 分享了她消化复杂话题的可靠方法:教授它们。只有当 Khuyen 将概念转化为其他人可以理解和使用的东西时,他们才会为她点赞。阅读我们与 Khuyen 的 Q & A,它涵盖了很多领域——包括公开写作对吸引潜在雇主的好处以及她对人工智能伦理的想法。
由 Alexander Gamanyuk 在 Unsplash 上拍摄
对于每一个通过教学学习的数据科学家,至少有一个(可能更多?)他们喜欢在回到现实世界并找到理论的实际用途之前一头扎进理论的深处。如果这听起来像你,我们这个星期为你准备了相当多的款待。从来自 Michael Bronstein 及其合著者的最新研究开始,该研究将几何深度学习作为一个具有双重目标的框架进行了介绍:
它有两个目的:第一,提供一个通用的数学框架来推导最成功的神经网络结构,第二,给出一个建设性的程序来以有原则的方式构建未来的结构。
还想读一本崇高的、思辨的书吗? Gadi Singer 写了一篇引人入胜的分析文章,分析了对认知人工智能的承诺,以及“将人工智能与符号推理和深度知识相结合”将如何带来人工智能的下一个阶段。如果连的那篇还不够,你可以随时求助于罗伯特·兰格,他又回来了,带来了另一轮他备受期待的每月推荐研究论文精选。
如果你更像是一个混合型学习者——喜欢温和、全面地介绍一个主题,但也喜欢动手操作的元素——我们听你的。外面有很多你们这样的人!选择你的冒险:
- 跟随 Carolina Bento ,她用一个最好的例子解释泊松分布(和泊松点过程):一家冰淇淋店。
- Lulu Ricketts 涵盖了两种最常见的参数估计方法之间的区别:最大似然估计(MLE)和贝叶斯估计。同样重要的是,她谈到了通常需要这种或那种方法的不同情况。
- 通过艾玛·丁的数据科学商业案例面试终极指南为你的下一轮面试做准备。
- 如果您想找到新的方法来利用您的数据专业知识为全球问题服务, Thomas Olavson 展示了数据团队如何采取具体措施来减少其数据中心的碳排放。
- 汤米·布兰查德解决了一个最关键也是最棘手的问题!—行业中的数据科学家可能会问自己的问题:您正在构建的模型的商业价值是什么?
如果您对学习数据科学有新的看法,或者在学习过程中积累了一些难忘的经历(好的或坏的,请考虑与我们的社区分享这些经历。你会惊讶有多少人会觉得你的故事有帮助。(如果你刚刚迈出第一步,试试我们自己的指南。它是免费的,基于电子邮件。)
一如既往地感谢所有阅读、贡献和参与我们发布的帖子的人,特别感谢所有最近与朋友和同事分享 TDS 故事的人。这对我们来说意义重大。
直到下一个变量,
TDS 编辑器
我们策划主题的最新内容:
入门指南
实践教程
- 如何在两周内构建基于云的 MLOps 框架作者 Lars Kjeldgaard
- 更快、更平滑、更小、更准确、更鲁棒的人脸对齐模型在 CPU 上由蒂诺·Á·阿尔瓦雷斯
- 数据科学家的干净代码作者 Ella Bor
深潜
思想和理论
数据科学产生什么样的知识?
探索数据科学
从日复一日的模型训练和数据处理的嗡嗡声中退一步,黄家仪在她的 2019 帖子中提出了一些非常重要的问题,这些问题涉及科学家探索并产生的知识数据类型。从预测现实世界结果的模型和试图解释起作用的因果力量的模型之间长期酝酿的紧张关系开始,菲比认为我们可能根本不在非此即彼的领域:“预测和因果模型服务于非常不同的目的,需要非常不同的数据和统计建模过程,通常我们需要两者都做。”
关于你的职业网络,LinkedIn 数据分析能教会你什么
掌控你的职业关系
图片由 Jannis Klemm 在 Unsplash 上提供
今年年初,我对自己的社交网络活动进行了评估。我的清单很短——我用的是脸书、Instagram 和 LinkedIn。我有脸书做朋友。我用 Instagram 展示我的画,我有 LinkedIn,因为它看起来“很好”。我不是网络的活跃用户。当一些同事让我连接时,我就连接了。就这样。
我喜欢 LinkedIn 的是它的学习网站。我发现了一些神奇的课程,它们帮助我提高了管理技能,并激励我成长。在 LinkedIn 上也可以找到培训者和演讲者。我开始关注一些人,令我惊讶的是,我和他们进行了很好的讨论。他们让我的 LinkedIn 体验变得很有价值。我开始想知道我的关系网中有谁。因此,我跳上去分析它。
1.编码阶段
LinkedIn 允许你导出你的关系,这是分析的开始。手册在网站帮助上。
在 LinkedIn 上导出连接
您可以在 excel 中处理该列表。我所做的是我对三件事感兴趣:
我怎么认识这个人?我们为什么要联系?
我们什么时候联系上的?
此人有多少关注者/联系人?
这有点像手工劳动。你的联系越少,你完成的越快。那时,我只有大约 400 个联系人。我花了不超过一个半小时来编码它们。糟糕的是要找出你网络中每个人的联系/追随者的数量。点击量很大。数据表开始看起来像这样:
Ivona Fikejzlova 提供
请注意,对您的连接进行分类非常重要。理想情况下,为了便于分析,您只有几个桶。但是,只要对你有意义,你就可以创造很多。我的是:
- 家人/朋友
- 人力资源(猎头)
- 兴趣
- 随意
- 学校
- 工作
2.分析
编码和数据清理是 LinkedIn 分析中最耗时的部分。现在,让我们享受数据带来的乐趣。对于基本的洞察,做一个数据透视表就够了。如果您喜欢仪表板,也可以很容易地创建一个带有干净数据集的仪表板。
Ivona Fikejzlova 提供
通过合并所有关于我的联系、我的联系的联系和关注者(与你没有联系,但关注你的内容的人)数量的数据,我震惊地看到,我的小小个人资料为我提供了 190 万人的网络。我怎么也猜不到!
然后,我对我的类别的表现感到好奇。如上所述,我有家人/朋友,人力资源,兴趣,随机,学校和工作。最终的表格如下所示:
Ivona Fikejzlova 提供
很明显,我的工作关系构成了我的大部分人脉。但有趣的是,他们并没有创造出我大部分的潜在联系。我的 289 个同事建立了 294221 个不错的连接。另一方面,我因为兴趣而联系的人,例如教练、TedTalkers 和 LinkedIn 培训师,产生了惊人的 971,977 个联系人和追随者。虽然我只和其中的 29 个成为朋友,但他们为我打开了一个全新的世界。
我还调查了哪份工作给了我最多的联系。在那里,我注意到了公司规模和时间的影响。
Ivona Fikejzlova 提供
前两家公司是中型企业。我在一个小团队中工作,与其他部门没有太多的互动。第三家公司足够大,但我只在那里工作了六个月,所以也没有太多的接触。第四家公司是国际公司。在那里工作了四年后,我被提升到了管理职位。由于这一点,我有机会与更多的人一起工作,这给我带来了更多的联系,特别是当我在 2017 年至 2018 年期间被任命为管理层时。
说到网络的规模。不要被连接数迷惑了。我很确定你可能有很多不活跃的 LinkedIn 用户。这些‘死用户’有一点网络,只有几个联系人。假设不到 100。通过快速浏览数据,我发现我的网络中有 10%是死用户。这很令人失望。我意识到我的关系网比我之前想象的要小。
你可以用你的基础数据回答很多问题。例如:
你的人际网络何时增长最快?
你的网络中有多少活跃用户?你的内容和推广的潜在受众是什么?
你的社团成员身份会给你带来人脉吗?
3.现在该怎么办
LinkedIn 就是其中一种。认识来自世界各地的人有很大的潜力。你可以在网站上寻找商机,也可以了解市场趋势。
Ivona Fikejzlova 提供
如果我可以说,不要对你的社交网络的规模过于兴奋,除非你真的有有意义的联系。
在上图中,你可以看到我的网络是什么样子。我的工作关系占了大多数,但它只占潜在关系网的 15%。而基于我职业兴趣的灵感联系最有潜力。当然,你可以辩称,如果你设法与商界的大人物建立联系,你的人际网络就会大幅提升。然而,这正是为什么分析你的网络组合很重要的原因。最终,在你的人际网络中拥有成功的商业人士可能比拥有不活跃的同事对你更有益。
你需要决定你为什么使用 LinkedIn。是因为你想:
- 与同事保持联系?
- 建立自己的企业?还是建立你的信誉和个人品牌?
- 获得灵感?
- 与人力资源猎头保持联系?
然后你的混合应该遵循你的目标。LinkedIn 网络有如此大的潜力,但是你不能坐以待毙。你可以有意识地建立你的人际网络,让它为你服务。
对我来说,这是灵感的巨大源泉。根据我的分析,我希望我的“兴趣”类别在 2021 年增长最多。这些人传递思想,挑战界限。他们拥有一个由其他鼓舞人心的人组成的独特网络,否则我就没有机会与他们见面。同时,通过张贴我自己的内容,我可以从其他人那里得到反馈,这不仅提高了我的帖子的可见性,还增加了我的知识。
我决定的第二件事是清理我的网络。降低我的网络是令人心碎的,但我想真实地生活。我的目标是摆脱“死亡”和莫名其妙的可疑联系人。你知道这些随机连接吗?有些人想联系,但是你们没有共同点,你们也从来没有一起工作过。你可能会接受任何方式,因为你受宠若惊,或者你不在乎。但最有可能的是,这种联系对你没有任何帮助。停止为了连接而连接。
综上所述,我的梦想领英网在下面。重点是励志用户,其次是活跃用户。最重要的是,我希望与“死亡用户”断开连接。这个网络是我的长期目标,但我打算在 2021 年直接开始工作。
Ivona Fikejzlova 提供
了解你当前的人际网络和你想要的是很重要的。这样,你可以继续你的事业、目标或自由职业。了解你的观众是一句口头禅。所以,让我们了解你的 LinkedIn 数据,建立有意义的网络。
4。保持更新
如果你决定努力分析你的人际网络,只要你有了新的联系人或追随者,就要更新数据。你从中获得了有价值的见解。偶尔,你可以更新你的数据仪表板,看看你的目标是什么。简单又有用。
分析的最终清单
- LinkedIn 帐户
- 下载您的网络数据
- 创建类别
- 代码数据
- 分析数据/创建交互式仪表板
- 制定目标
- 保持数据更新
主流人工智能在(不)做什么
变更数据
疫情加速了人工智能的采用——并使大型技术变得更加富有——但人工智能的采用发生在需要它的地方了吗?
在大学期间涉足机器学习之后,我得到了一份业务分析师的工作,为印度一家领先的人工智能服务提供商的公共部门和教育业务提供服务。我在疫情找到了这份工作——我必须说,我认为自己很幸运——并完全在网上担任了这个角色,我一直站在组织从现实世界向数字世界过渡的最前沿。我这么说不仅仅是为了我工作的公司,也是为了无数的政府机构和教育机构,他们与我们接触,寻求进行数字化转型,以增强他们在当前形势下以及未来的流程。
我真诚地相信,过去的一年半对整个 it 行业和人工智能行业来说都是一种祝福——因为人工智能现在在 IT 领域几乎无处不在——正如大型科技公司通过双管齐下的战略实现的令人难以置信的增长所证明的那样,他们自己进行数字化转型(从而削减支出)并为其他行业提供同样的服务(并产生巨大的收入)。
主流人工智能需要弥合商业和社交应用之间的差距。(照片由英迪拉·乔科尔达在 Unsplash 拍摄)
增加人工智能的采用
如前所述,大型科技公司虽然最初担心“新常态”的影响,但很快就意识到了它的潜力,并充分利用了这一点。一切都在增长——从数字广告成为接触消费者的主要渠道带来的广告收入、在线购物、一切都上线后笔记本电脑和手机的销售、社交媒体参与到随着企业数字化而增加的云消费。不经意间,这种被迫转向在线的趋势以及对错过机会的担忧,成为了利益相关者的催化剂,他们不仅采用传统的数字化转型,还加入了云、人工智能和区块链等更新技术的行列。
根据毕马威的一项调查,与去年相比,金融科技领域至少一项职能的人工智能采用率增加了 37%,科技领域增加了 20%,零售领域增加了 29%。再加上 2020 年人工智能看到的679 亿美元——包括微软对开放人工智能的 10 亿美元投资,之前是一个非营利组织——以及根据麦肯锡的报告绘制的这笔钱花在用例上的代表性地图。2020 年,人工智能领域约 50%的用例与自然语言处理有关,20%与计算机视觉有关,涉及 IT、快速消费品、医疗保健、金融科技、法律和汽车等行业。与这一主流相比,谷歌通过他们的 AI for Social Good 计划只提供了 2500 万美元用于改善社会的人工智能应用研究。
这种对数字转型的新推动、采用心态的改变以及涌入该领域的大量资金(这次甚至来自公共部门)是人工智能社区利用和加强努力解决人工智能面临的问题并为社会利益构建应用程序的绝佳机会,尤其是在这些时候。不幸的是,这样的例子少之又少。
需要人工智能的用例(基于联合国可持续发展目标)
像国际电信联盟(ITU)和麦肯锡(T2)这样的国际组织使用 2015 年通过的联合国可持续发展目标(T5)作为当今世界主要问题的指导方针,并试图绘制如何将人工智能用于这些问题。偶然地,发表在《自然》上的一篇研究论文估计,17 个可持续发展目标中的 79%可以通过某种方式使用人工智能来实现。让我们看看 17 个可持续发展目标,以及人工智能如何实现联合国提出的这些目标:
- **没有贫困:**为了实现联合国到 2030 年消除极端贫困的目标,人工智能可用于分析卫星数据或移动使用数据,并检测贫困地区,然后制定补充政策来帮助这些地区的居民。利用人工智能进行更好的天气预测可以帮助将这些人疏散到安全的地方。在经济上,为了弥合贫富差距,人工智能可以为贫困线以下的人提供贷款信用评级(假设基础数据没有偏差)
- **零饥饿:**间接有助于这一目标的辅助人工智能应用程序已经在农业领域获得了牵引力,而 last mile routing solutions则是为了在疫情期间提供食物而开发的。农业领域的例子包括使用计算机视觉检测作物疾病,分析和模拟历史数据以支持农民决策,收成预测,天气预测和支持物联网的人工智能农业设备。然而,如果最终产品不能送到第三世界国家的贫困农民手中,农业人工智能研究将毫无价值。
- **良好的健康和福祉:**这一目标正好落在医疗保健领域,该领域已经获得了抗击疫情的关注和资金。英特尔研究显示,在疫情发布后,采用或希望采用人工智能的医疗保健领导者增加了 39 个百分点。医疗保健领域的人工智能用例包括医院中的人工智能和数据支持系统,药物发现的自动化,结核病和癌症检测,提高艾滋病意识,减少交通事故的解决方案(cue 自动驾驶汽车),自杀预防和减少社交媒体上令人沮丧的帖子(最后一个是脸书)。然而,这些解决方案中有许多是不道德的,并且由于数据集不能代表真实世界以及生命受到威胁的危险,目前这是一场大赌博。
- 素质教育:由于疫情,另一个领域的人工智能采用量大幅增加。从个人经验来看,我可以说,人工智能正越来越多地被用于监控学生的注意力或进行情绪监控,以确定儿童学习某些科目的舒适程度,在考试结果出来之前识别出哪些学生在挣扎。人们正在尝试使用人工智能来提供个性化和适应性教学,特别是在在线学习平台上。然而,教育中的 AI 要提供真正个性化的教育还有很长的路要走。
大约在疫情期间,教育和医疗保健领域的人工智能投资有所增加(图片来自斯坦福人工智能指数,2021 年根据 Attribution-NoDerivatives 4.0 国际许可)
- **性别平等:**大赦国际很少直接参与实现性别平等,主要是因为这是一个社会文化问题。也就是说,人工智能社区需要确保它不会通过确保底层数据集和部署的系统没有固有的偏见来促进性别偏见。
- **清洁水和卫生设施:**与此目标相关的唯一经过适当研究的用例是使用 AI 来预测和建议提高水处理厂水质的步骤。潜在的使用案例包括集水区管理和水管/水流管理
- **负担得起的清洁能源:**同样,这是一个不常研究的领域,大多数努力都是针对人工智能如何优化能源生产和消费,以及更好地预测需求。需要对人工智能如何帮助建立智能电网进行更多的研究。
- **体面工作和经济增长:**这又是一个社会文化问题,而非技术问题。然而,一般来说,人工智能产业的崛起及其在全球经济中的份额可以刺激经济增长,但有取代低技能工人的风险,这就是为什么人工智能产业需要有自我意识,并平衡它给社会和环境带来的利弊。此外,随着人工智能提供的自动化,生产率也将提高。
- **工业、创新和基础设施:**尽管对人工智能在基础设施中的许多应用的研究正在进行中,而且基本概念也很合理,但该领域的采用率并不高。在空气和水质管理、能源管理、资产和施工管理、预测性维护、提高生产力、自动化和智能城市和电网等用例中,需要推动采用。
- 减少不平等:这个社会问题可以通过使用人工智能来间接部分解决。对于财务平等,可以开发预测信用评级的应用程序,为低收入群体提供贷款,并通过数据帮助他们了解个人投资世界。对于文化、种族和种姓平等,我认为,如果所有人工智能应用都能设法消除数据本身的潜在偏见,而不是提出旨在促进平等的具体应用,那将更加有益。一个有代表性的例子是调整推荐引擎,使其不提倡仇恨言论。在更大的范围内,可以分析与特定社区的人口统计和社会模式相关的数据,以推断该社区的包容性。
- **可持续发展的城市和社区:**关于这个目标的许多要点已经在上面讨论过了。大规模人工智能可以通过旨在改善交通基础设施和减少事故的解决方案,水和能源管理,预测地震,野火和石油泄漏的蔓延,生态分析,空气质量分析等,帮助实现可持续和智能的城市。同样,这里的挑战是大规模采用和政策支持。
- **负责任的消费和生产:**人工智能系统可以利用历史数据和模式来优化制造、能源等各个领域的生产和消费计划。而人工智能带来的自动化将提高生产力。从政策角度来看,政府采购服务和商品的过程在许多地方非常缓慢和腐败,这要感谢人工智能系统自动过滤掉不合格的供应商。
- **气候行动:**在气候行动方面,人工智能有利有弊,开发和运行人工智能模型的巨大能源需求间接增加了空气中的二氧化碳,而自动化能源管理、气候建模和预测自然灾害的可能性是其积极的一面。
- **水下生物:**研究表明,通过利用人工智能实现石油泄漏的检测和缓解规划自动化以及集水区域管理,可以保护海洋和海洋生物。卫星数据分析可用于生态预测(包括珊瑚漂白和藻类大量繁殖等事件)、跟踪和监管拖网渔船的活动。
- 陆地上的生命:研究表明,人工智能可以用来通过足迹识别森林动物,这可以在野生动物保护工作中发挥非侵入性的作用。利用人工智能的遥感可用于评估、预测和绘制森林结构特征,这些特征可作为森林状况的指标,并有助于保护森林。神经网络和面向目标的技术可用于更好地对植被类型进行分类,从而探测荒漠化和干旱。
- **和平、正义和强大的机构:**人工智能可用于监控系统和社交媒体,以检测、通知和过滤暴力人员和/或内容、欺凌和儿童色情制品。面部识别软件也可以用于预测性警务。然而,这是一个所需技术已经就绪的领域,但由于伦理、隐私和歧视问题,其采用仍有争议。
- **目标伙伴关系:**联合国可持续发展目标清单中的这一特定部分列出了实现其他 16 个目标的合作目标,因此与技术无关。因此,我们将跳过这一步。
科技和政府能如何控制人工智能
在任何部门或行业进行任何类型的研究都需要资金。研究将集中在资金的地方。记住这一点,让我们看看大型技术和国际政府如何有潜力集中人工智能研究,并确定该行业如何向前发展。
企业参与跨会议的学术研究(图片 via 斯坦福人工智能指数,2021 在 Attribution-NoDerivatives 4.0 国际许可下)
Big Tech 收购人工智能初创公司(图片来自斯坦福人工智能指数,2021 根据 Attribution-NoDerivatives 4.0 国际许可)
从 2012 年,当 Big Tech 在机器学习技术上取得突破后开始进入人工智能领域到 2019 年,在举行的最大的机器学习会议 NeurIPS 上,客流量增长了 550%。大的技术代表参加它的目的是吸引博士进入他们的公司。这些公司还聘请终身教授来帮助他们的研究。大科技的人才争夺战不仅局限于学术界,近年来甚至扩展到了初创公司,正如本文所展示的。
下面的两张图表强化了这样一种信念,即企业对学术人工智能研究有着浓厚的兴趣,尤其是在美国。企业在同行评议研究中的地位在期刊上发表或在会议上展示的研究论文中得到了复制。
各国对人工智能的私人投资。美国最高(图片 via 斯坦福 AI 指数,2021 在 Attribution-NoDerivatives 4.0 国际许可下)
美国同行评议的人工智能出版物。企业参与度最高(图片来自斯坦福人工智能指数,2021 年在无归属衍生工具 4.0 国际许可下)
中国同行评议的人工智能出版物。政府的参与度最高(图片来自斯坦福人工智能指数,2021 在无归属衍生 4.0 国际许可下)
从上面的图表中可以立即看出:美国、中国和欧盟是人工智能研究的领导者。在美国,企业比政府或学术界有更大的利益。然而,在中国,政府——而不是企业——是集中人工智能的一方,如果我们想到中国的政治结构,这是显而易见的。下图进一步证实了这一点,因为我们可以看到,中国发表论文的企业与学术合作比美国少得多(尽管中国发表了大量论文)。
人工智能出版物中的学术-企业伙伴关系。美国遥遥领先于其他国家(图片来源于斯坦福人工智能指数,2021 在无归属衍生工具 4.0 国际许可下)
中国是一个政府高度集中人工智能的例子。尽管如此,政府与人工智能有利害关系的原因是,它们有权力推出关于在人工智能应用中正确使用公共和私人可用数据的立法(例子:欧盟的 GDPR)。特别是对于社会领域的项目,更不用说政府拥有更大控制权的大规模基础设施、智能城市、水管理等部门,政府可以宣布政策、开发计划,并为利用人工智能实现项目目标的大规模项目提供范围和资金。在这种程度上, ITU 的研究显示,截至 2020 年,131 个国家已经通过或正在通过数据政策,其中 18 个国家已经制定了具体的人工智能政策。
行业面临的挑战
然而,人工智能行业的发展是企业和/或政府支持的结果,需要首先解决的事情是确保它不是“两步走,一步退”,这是行业和社区目前面临的问题。
- **人工智能的可解释性:**机器学习模型——尤其是神经网络——经常表现得像一个黑箱,人们通常不清楚它们是如何得出结论的。有时,最好有一个提供可回溯结果的模型,以便能够在需要时修改模型中的适当参数。这一方面在医疗保健行业获得了越来越多的关注,因为涉及到利害关系,最近在面部识别系统中,因为错误的输出导致了灾难性的结果。
- **数据不可用:**在许多用例中,收集正确的数据并创建可操作的数据集是一项耗时的任务。这是因为首先,必须弄清楚从哪里收集数据的途径是什么;其次,从不同的来源收集这些数据需要时间;第三,组织必须修改收集的数据,以遵守数据和隐私法规,同时仍然保持数据的可操作性。然而,对于学术界来说,通过第一阶段本身是很困难的,因为大型科技公司和政府有许多数据(从他们的各种服务中收集的),这些数据是保密的或分类的,视情况而定。
- **有偏见和被歪曲的数据集:**组织收集的数据和收集数据的方法代表了数据收集地的真实情况。这导致文化或社会偏见进入数据集,消除偏见成为组织的责任。更进一步,组织也有责任确保应用程序部署在一个与准备数据集的地方具有相同代表性的地方,以确保不会发生争议和失败部署。对于面部识别系统和大型语言模型来说,模型中的偏见是一个真正的威胁。
- 可推广性: OpenAI 是人工智能行业寻求人工通用智能的启蒙者——一个可以做人类所能做的一切的单一人工智能。目前,这是一个遥远的可能性,因此对于上面讨论的每一个用例,从数据收集到模型部署的整个过程都将专门针对该用例重新进行。这似乎是浪费时间和精力,事实也的确如此。然而,概括本身并不像它带给我们的下一点那样糟糕。
- 能量消耗: OpenAI 本身,在自然语言处理中追求可推广性,不断超越自己,建立更大的神经语言模型(提示 GPT-3)。训练(甚至一次)和部署这些模型所需的能量是非常非常巨大的——如此之大,以至于它让你想到,如果当前构建越来越大的模型的趋势继续下去,那么人工智能为环境带来的任何优势实际上都将无关紧要。此外,GPT 3 号甚至不懂人类语言;它只是一个操纵它的大师。
- **企业与学术界之间的差距:**企业与学术资源和研究之间的差距有目共睹。这就是为什么人工智能社区需要重新关注自己,建立更多真正有用的应用程序,而不考虑公司或政府的利益。
结论
我们可以清楚地看到,在疫情期间,人工智能在医疗保健和教育等领域的应用大幅增加。其他部门已经开展了研究,但缺乏大规模的可见性、兴趣、投资、实施和采用。这可以部分归因于人工智能行业面临的问题,主要涉及数据的可用性以及大技术和政府政策对行业的控制。话虽如此,大型技术和政府对人工智能的兴趣是一件好事,因为它通过持续的资金支持防止技术成为过去。唯一需要的是该行业所有利益相关者的焦点转移。
然而,不要害怕,因为并不是所有的希望都落空了!人工智能显然具有帮助社会的技术能力,这可以从能力到社会目标的映射得到证明。正如这篇文章的标题所暗示的,人工智能正被用于许多社会公益事业;它还没有达到主流兴趣和投资的临界点。人民、智库和组织积极参与旨在建设更美好社会的应用研发。希望他们得到他们应得的支持!
我很乐意在 Linkedin 上联系!
参考
- 纽约时报:“一场完美的正面风暴”:为大型科技公司疯狂投资
- 福布斯:疫情如何加速云的采用
- 2021 年斯坦福人工智能指数
- 麦肯锡:2020 年人工智能的状态
- 国际电信联盟:人工智能造福人类
- 联合国可持续发展目标
- 麦肯锡:应用人工智能造福社会
- 自然:人工智能在实现可持续发展目标中的作用
- 用人工智能实现联合国可持续发展目标的 17 种方式
- 连线:大型科技公司资助人工智能研究的阴暗面
是什么让数据分析师变得伟大?
提出正确的问题让科学去解决的问题。
前言:在这个故事中,我们使用 Kaggle 和 Kaggle 笔记本作为数据分析师成就的代表。所以,你参加了一场卡格尔比赛。首先,你要仔细阅读问题陈述、条款和条件、目标和提交评估。你摆弄了一下数据集,然后转向笔记本部分。Kaggle 有自己的方式来展示最好的笔记本,但究竟是什么让 Kaggle 笔记本变得伟大?让你前进的必要条件是什么?除了 Kaggle 之外,你的工作目标应该是什么?
一些笔记本演示了如何加载数据,解释各列的含义,并在已有内容的基础上设计新功能。一些笔记本探索数据,创建叙述,形成假设,并影响决策。最后,还有实施基准模型的笔记本电脑,可用于评估其他解决方案。
但是是什么让笔记本变得优秀呢?不要误会我;Kaggle 竞赛中的每台笔记本都有其用途。但在这里,我们寻求帮助我们成长为更好的数据科学家或机器学习实践者的核心故事。这些笔记本并不是展示一个想法,而是帮助我们形成自己的观点。
我认为判断的标准只有一个:问正确的问题。
在这个故事中,我们使用 Kaggle 和 Kaggle 笔记本作为代理,来发现是什么让数据分析师变得伟大。因为无论是什么让我们决策者在一场激烈的竞争中实施了伟大的解决方案,这都是伟大的分析师的工作。
Learning Rate 是为那些对 AI 和 MLOps 世界好奇的人准备的时事通讯。你会在每周五收到我关于最新人工智能新闻和文章的更新和想法。在这里订阅!
偏见和障碍
这很容易让人一头扎进 Kaggle 笔记本,它提供了一个解决方案、一个现成的基线模型和一个固定的提交。然而,能够很快得到答案既诱人又危险。
走捷径是一个陷阱。它迫使我们做出与笔记本作者相同的假设,并接受相同的偏见。从这一点开始,我们的创造力将受到影响,我们将很快发现自己在围绕相同的想法和概念打转。
最终,我们能够重新考虑和改变的问题的唯一参数是次要的东西,例如神经网络的层数或学习速率的值。这种方法只能让我们到此为止;在最好的情况下,我们的解决方案将在排行榜上领先几个名次。
在我看来,窥视现成的解决方案不会让我们变得更好。它不让我们建立我们的理解,形成我们的假设,编译我们的代码,甚至悲惨地失败。这就是它的全部;令人满意和充实的学习过程。
肥料和催化剂
那么,我们是否应该开始自己的工作,在一个筒仓里,甚至在看一看别人的工作之前,设计和运行我们的实验?一点也不;这就像争论作曲家不应该听音乐,因为他们可能会受到影响,或者作者不应该阅读书籍,因为害怕作家的阻塞。
如果说我看得更远,那是因为我站在巨人的肩膀上。—伊萨克·牛顿
由 Unsplash 上 Ardiss Hutaff 拍摄的照片
Kaggle 上有很多很棒的数据分析师我们可以借鉴。学习过程不是在真空中完成的。我们需要发现他们的工作。但是,是什么让数据分析师变得伟大呢?我认为判断标准只有一个:问正确的问题。
我们在这里寻找的笔记本具有挑衅性、刺激性和异端性。他们通过提出有益的问题来激发我们的想象力和创造力。
一个优秀的数据分析师给我们提供了一片绿地,一匹可以骑的马,一个想法,以及征服它的工具。即使我们不同意他们的发现或建议,我们也已经向前迈出了一步。
一个优秀的数据分析师会给我们带来灵感,让我们注意到那些看起来有希望且相关的数据或特征。他们以突出潜力的方式转换数据集。最后,快速总结核心要点,并将其压缩成易于记忆的块。
编后记
伟大的数据科学家是异教徒。它们激发我们的想象力,激发我们的创造力。他们以突出重要部分的方式塑造原材料。简而言之,他们提出正确的问题让科学去解决。
下次在 Kaggle 比赛的时候,搜索那些内核。即使你完全不屈服,你也会成长得更多。
关于作者
我叫迪米特里斯·波罗普洛斯,我是一名为阿里克托工作的机器学习工程师。我曾为欧洲委员会、欧盟统计局、国际货币基金组织、欧洲央行、经合组织和宜家等主要客户设计和实施过人工智能和软件解决方案。
如果你有兴趣阅读更多关于机器学习、深度学习、数据科学和数据运算的帖子,请关注我的 Medium 、 LinkedIn 或 Twitter 上的 @james2pl 。
所表达的观点仅代表我个人,并不代表我的雇主的观点或意见。
是什么让一个数据科学家变得优秀?
意见
以下是你需要知道的 3 种品质和经历…
布鲁克·卡吉尔在Unsplash【1】上的照片。
目录
- 介绍
- 对失败的反应
- 商业能力
- 数据科学过程顺序
- 摘要
- 参考
介绍
看完文章,“ 是什么让一个数据分析师变得优秀 ?Cassie Kozyrkov 的文章[2]启发我也讨论这个话题,但更确切地说,是为数据科学家。虽然有无数的品质可以造就一名优秀的数据科学家,但我将讨论更侧重于定性而不是定量、编程或技能的最佳品质。例如,了解 Python、R 和每一种机器学习算法当然是有益的,但很多人都可以满足这些要求,所以软技能——比如你如何反应和数据科学的过程——将使你脱颖而出,并最终让你成为一名优秀的数据科学家。更具体地说,在下文中,我将讨论失败的品质和经历、业务能力以及整体数据科学流程顺序,这些将有助于像您这样的数据科学家走向卓越。
对失败的反应
通常,在实践中,或者在学习数据科学的过程中,您拥有尚未成为业务一部分的安全网,同时,您拥有更容易的数据和应用程序,不容易出错。因此,你将真正学会如何失败,以及如何在专业环境中应对失败。也就是说,失败是任何工作不可思议的一部分,尤其是数据科学。通过失败,数据科学家将学习和加强他们最初错过或搞砸的东西,有点像其他东西——机器学习算法。失败对成功很重要,因为它让你成为一名数据科学家,可以尝试、测试、利用测试和错误,不受约束地投入到模型构建的世界中。值得注意的是,早期失败是更可取的,因为当将模型投入生产的时候,您已经失败了,犯了错误,并且已经在最终形式的模型中包含了测试和边缘案例。不要寻找失败,更重要的是,以积极有效的方式应对失败。举例来说,你对失败的反应可能会产生新的特征、算法、产品或过程。话虽如此,让我们来看看失败的好处。
失败的好处:
- 学习更快
- 发现边缘案例
- 发现测试用例
- 更少的约束
- 新功能的开发
行动项目:
- 当你犯了遗漏边缘和测试用例 的错误时,识别那些用例并创建一个使用模型和一些硬编码规则来解释所有数据的集成方法。
- 当你的精度在生产中没有那么高 时,确认测试的日期范围,仔细检查你的特征的数据类型——确保如果是数字,生产代码没有舍入数值。
- 如果您的库无法在生产中导入 ,请确保找到更新的库版本,并在将其推向生产之前始终测试新版本。
- 如果假设正态分布 ,使用不同的非参数算法,如随机森林,这意味着您的数据不需要满足某些假设。
如你所见,虽然不寻常,但失败和成功一样重要。更具体地说,你对失败的反应。所以读完这篇文章后,不要故意失败,而是跳进你的数据科学模型过程,研究数据,测试不同的算法,
…最终,尽早失败,这样模型就不会在最重要的时候失败。
商业能力
Adeolu Eletu 在Unsplash【4】上的照片。
虽然编码、编程、数学、高级统计和复杂的机器学习算法无疑可以使数据科学家在技术上更加成功,但必须强调的是 如果不能将所有这些技能转化为业务,数据科学将毫无用处 。数据科学的一些最重要的部分是如何沟通问题,解释模型的结果,以及它最终将如何影响业务(例如,省钱、省时)。在我看来,数据科学几乎可以被命名为商业科学。但是,数据当然重要,业务也重要。
例如,假设我们有一个问题,我们在理解产品评论背后的语义和情感方面有困难。作为一名数据科学家,我们希望立即执行复杂的自然语言处理( NLP )技术,比如删除停用词以隔离评论的主要方面。我们发现我们可以很快很容易地应用数据科学。但是接下来,我们遇到了一个问题,我们通常会从 Python 库中删除停用词,也许,我们可能会意外地删除对这个特定问题有意义的基本词。也许我们错误地删除了 20%对产品很重要的词。这个例子可能很小,但是您可以看到,在没有意识到模型背后的业务的情况下,立即做出假设,会导致误导性的结果和不太有用的结果。还有无数其他的例子,我们忘记了高精度是最成功的衡量标准,但是我们意识到边缘案例实际上是最重要的分类数据。我们知道我们可以准确地对数据或主题进行分类,但如果我们更仔细地观察,我们会发现我们实际上只能对 10%的边缘情况进行分类,而对 80%的大多数情况进行分类。
以下是商业能力的一些好处和考虑因素:
- 正确应用数据科学模型
- 正确利用错误和成功指标来推动业务决策
- 更好地与利益相关者沟通
- 向非技术人员解释复杂的结果
行动项目:
- 练习将你的复杂算法传达给利益相关者 ,理解你的算法的主要思想以及你的模型的结果和影响。
- 知道成功意味着什么 ,与利益相关者一起确定什么是成功:是 90%的准确率,还是 99%的准确率——以及针对哪组数据?
强调数据科学中商业智能的重要性是非常有益的,所以请确保在您学习数据科学或在您当前的专业工作中使用数据科学时,您确保您允许自己以最佳方式探索您的模型在业务中的含义和应用,以及能够与他人进行熟练的交流,以便您的模型不是 静止和未使用的 ,而是相当活跃的,每个人都可以解释其结果。
数据科学过程顺序
克莱顿·罗宾斯在Unsplash【5】上拍摄的照片。
掌握数据科学的流程是会让你变得优秀的事情。数据科学可能会让人不知所措,因此了解完成端到端数据科学流程和模型的最有效方式将使您变得更加出色。 还有更具体的用例 流程 可以看作是更技术性的。或许,您可以使用一个笔记本,而不是 10 个具有不同超参数的 Jupyter 笔记本文件,该笔记本可以灵活地组织和排列网格搜索功能中的重要和最佳参数,例如。除去这种改进的技术方面,您本质上是通过更好地组织和隔离整个过程的重要部分来改进您的模型。
虽然公司、人员和代码可能不同,但我相信有一种通用的方法可以在任何地方执行数据科学。当然,您可以调整这个过程来迎合您的需要,也可以添加和删除一些部分来实现专门化。
以下是通用数据科学流程的主要步骤:
- 隔离问题
- 隔离当前指标
- 查找和开发数据
- 探索性数据分析
- 特征工程
- 模型比较或测试各种机器学习算法
- 结果解释
- 度量比较
- 模型的效果
行动项目:
- *****遵循上面的流程——*数据科学的目标是解决一个问题,让一个流程更加准确高效。
- 流程的顺序很重要: 真正理解手头的问题,找到造成问题的原因的当前状态,并确定您想要改进的指标,获取数据集并理解它,创建功能,测试几种算法,选择最终的算法或算法集合,然后创建比较原始业务指标的指标,然后讨论您的模型的积极影响。
虽然简单,但这些步骤您可能已经在执行了,并且您可以将这些步骤应用到几乎任何业务中,因为我们本质上是在解释数据科学在业务中的作用。您希望探索问题、数据、应用实际模型,并将当前流程的结果与应用模型的新流程的结果进行比较,最后,分享模型的帮助。
摘要
数据科学需要复杂的技能和工具知识,如 Python、R、SQL、机器学习算法等等。然而,经常被忽视的是软技能的重要性以及您在公司执行数据科学的方式。这就是我所讨论的,包括你对失败的反应,你所使用的商业智能,以及你执行数据科学的过程。除了提高编程之类的硬技能,提高这三个素质一定能让你成为一名优秀的数据科学家。当然,这种讨论都是主观的,但通过专注于在日常数据科学工作中提高这些素质来提升自己作为一名数据科学家不会有什么坏处。
总而言之,以下是成就优秀数据科学家的三大品质:
* Reaction to Failure* Business Aptitude* Data Science Process Order
我希望你觉得我的文章既有趣又有用。如果为了让自己成为一名优秀的数据科学家,你已经关注了这些品质中的任何一个,请随时在下面发表评论。这对你现在的数据科学事业有帮助吗?你同意还是不同意,为什么?
请随时查看我的个人资料和其他文章,也可以通过 LinkedIn 联系我。
如果你对在学习数据科学之前先学习数据分析的重要性感兴趣,这里有那篇文章[6]:
**
参考
[1]Brooke Cagle 在 Unsplash 上拍摄的照片,(2018)
[2] 卡西·科济尔科夫,是什么让一个数据分析师变得优秀?(2020)
链接:https://towards data science . com/what-makes-a-data-analyst-excellent-17ee 4651 c 6 db #:~:text = An % 20 analyst 的%20excellence%20is%20speed。&text = Analysts % 20 look % 20 up % 20 facts % 20 还有,你的!)% 20 in % 20 进程%20in%20the%20process)。
[4]2015 年 Adeolu Eletu 在 Unsplash 上拍摄的照片
[5]克莱顿·罗宾斯(Clayton Robbins)在 Unsplash 上拍摄的照片,(2020)
[6] M.Przybyla,在成为数据科学家之前,你应该首先掌握数据分析,(2021)**
是什么让一个数据科学家脱颖而出?
越来越痴迷硬技能,但软技能能让你鹤立鸡群
数据科学家的数量每年都在增长,市场似乎可以容纳我们每一个人。幸运的是,没有放缓的迹象。根据美国劳工统计局的数据,到 2026 年,操纵数据的需求将大约增加到 1150 万个职位空缺。此外,在美国,数据科学家的平均工资已经达到 12 万美元。
然而,某些科技行业职位的竞争异常激烈,而且看起来会越来越激烈。有许多训练营发布“一批批”来自多所大学的数据科学家和应届毕业生正在找工作,更不用说那些处于职业转型期的人了。此外,全球疫情向公司展示了我们都可以远程工作,从而更容易从其他国家聘请数据科学家。
几年后,每个数据科学家都会有一个 GitHub 来展示他们出色的工作和分析技能。绝大多数数据专业人员将精通 Python、R、SQL,也许还会一些软件工程技能。因此,拥有大量解决数据问题的技术和技能不会让你从众多数据科学家中脱颖而出。所以,这里有一些特征可以,而且肯定会让你在求职时脱颖而出。
1。提高你的软技能
软技能是指标志一个人与其他人有效互动的能力的性格特征和行为**【3】**。在大多数职业环境中,软技能是硬技能的补充——一个人的知识和技术技能,如 Python 和数学中的编程。
沟通不仅是一种软技能,而且可以说是帮助一个人在职业上取得成功的最相关的技能。讽刺的是,优秀的沟通者是积极的倾听者。当你和别人说话时,通过仔细倾听和集中注意力,你表现出关心,并且有更好的机会理解他们的问题。这样做,数据科学家解决问题的效率会更高。因此,有效沟通的数据科学家更有可能获得公司的高级管理职位。
再好的人,光有数据说明不了什么。你需要以有助于决策的方式传达你的结果。与某人解释简单的机器学习模型如何工作以及其结果对目标受众意味着什么的能力相比,你拥有的所有理论知识都相形见绌。数据科学家可以接受有效沟通技巧的重要性,并根据每个受众定制他们的语言。潜在地,你与非技术专业人士交流的能力会让你成为一个更有效的问题解决者(并且会让你很高兴与之共事)。因此,鹤立鸡群。
2。够好,不完美
不要让“完美”妨碍了“足够好”对于任何数据科学研究生来说,这是最重要的心痛来源之一。在学术环境中,有抱负的数据科学家被期望工作到完美。这并不奇怪,他们觉得必须一直做到尽善尽美。然而,公司并不追求“完美”企业高管制定战略是为了适应市场并击败竞争对手,而不是为了成为完美的公司。作为某家公司的数据科学家,你应该效仿它的步伐和思维方式,而不是追求学术上的完美。
从一个高管的角度来看,从你的机器学习算法中提取额外的 2%的提升对业务几乎没有影响。毫无疑问,许多机器学习专业人士可以增加他们的算法预测,但以什么(财务)成本?如果公司失去了决策速度和商业灵活性,边际收益通常不会有回报。所以,当足够好已经提供了切实的结果,停下来,继续下一个项目。让它去吧。
以下是一些关于数据科学家如何发挥这种力量的提示:
- 开发你感兴趣的个人项目,优先考虑快速达成答案**。通过设定严格的截止日期,你的答案很有可能并不完美。**
- 自由职业者/志愿者:在真实的工作环境中,你会发现人们对一些学者非常关心的事情并不关心。最初你很可能会感到不舒服,但这是关键。
照片由 Emilio Takas 在 Unsplash 上拍摄
3。面向业务的
假设你决定为工业界工作,而不是学术界。在这种情况下,发展你的商业和业务技能是必须的。数据科学一直朝着实用的集成技术行业解决方案发展,例如高性能的足够好的质量和低成本的每次预测。
在一家公司中,数据科学家必须从数据中挖掘出真正的商业价值。一些专业人士可能不同意,但坦率地说,数据专业人士需要能够利用数据和他们的洞察力增加公司利润。否则,高级利益相关者只会浪费你的资源。你对底线的贡献越多越好。因此,设法变得更加面向商业数据科学家将从商业环境中具有学术思维的其他专业人员中脱颖而出。
问自己一些这样的问题:
- 企业想要达到什么目的?
- 你的模型或项目如何帮助实现公司的目标?你能看到全局吗?
- 你知道你工作(或想工作)的公司的术语和一般营销策略吗?你怎样才能更多地参与到业务中去?即使是间接的。
- 不同部门的人能给你提供一个关于品牌和商业观点的快速入门会议吗?
希望这些问题能让你点击一下,变得更加以商业为导向。一旦你们达成共识,你会惊讶地发现未来的项目会变得更容易开发。
结论
企业数据科学家的角色将不可避免地发生一些变化。由于大量专业人士转向数据业务,候选人之间的竞争将比以往更加激烈。怎么才能脱颖而出?嗯,磨练你的商业理解是在任何利润驱动的公司中创造和发展的第一步。然而,重要的是要明白,在快节奏(有时不稳定)的商业环境中,追求完美的结果是不现实的,因为竞争对手的动作很快。因此,商业战略必须做出相应的反应,这很少符合达到完美的时机。最后,在一家公司里,不依靠无缝沟通几乎不可能实现大目标。所以,为什么不用你思考硬技能的方式来思考你的沟通技能呢?
感谢阅读。下面是一些你会喜欢的文章:
**
参考文献:
****【2】商业内幕-https://www . Business Insider . com/data-scientist-best-job-in-us-right-now-2018-2?r=US & IR=T
****【3】软技能-**https://www.investopedia.com/terms/s/soft-skills.asp
怎样才能成为一名优秀的数据科学家
…或者好的数据科学家有什么共同点。
我打算在这篇文章中写的东西是基于我和优秀的数据科学家一起工作的经历。我没有说我是他们中的一员。然而,我继续工作和学习成为一个。
我没有资格宣布或评价一位数据科学家是好是坏。下面的话将展示我对表现出色的数据科学家的常见实践和技能的观察。
从这个意义上说,文章的标题可能是“好的数据科学家有哪些共同点”。
向他人学习是一项非常有价值的技能。提高这项技能的第一步是成为一名优秀的观察者。你应该关注别人做了什么,他们是怎么做的。
他们追求简单
我的首要观察是,有经验的数据科学家追求简单。为了简单,他们甚至牺牲了少量的准确性。
在大多数情况下,越简单越好。如果你有一个简单的解决方案来完成一项特殊的任务,那就去做吧。除非绝对必要,否则不需要复杂的模型或解决方案。
复杂的解决方案容易出错。此外,与更简单的程序相比,调试它们更困难。
先想想
当我对一个模型或脚本有问题时,我的第一个行动就是修改代码。我希望通过修改代码来解决这个问题。
这种方法通常会引导我找到解决方案。但是,绝对不是解决问题的最优方式。在某些情况下,我用这种方法浪费了大量的时间。
我从有经验的数据科学家那里看到的是,他们在采取任何行动之前都会思考问题和可能的解决方案。起初,在我看来这是浪费时间,因为你不能仅仅通过思考解决方案来解决问题。
然而,我很快就意识到直觉方法对我来说更有效。全面了解问题并制定解决方案总是更好的开始方式。
功能与算法
当我第一次学习数据科学时,我花了大量的时间来掌握机器学习算法。算法背后的理论和参数对我来说都是至关重要的。
学习算法没有错。事实上,数据科学家需要知道何时以及如何应用特定的一个。然而,除非你是一名研究人员,否则掌握每一种算法都有点过头了。
我从经验丰富的数据科学家那里学到的是,一个适当设置的体面算法将完成这项工作。没有必要花费大量的时间来调整算法或尝试不同的算法。
这些功能肯定有更大的影响。因此,将时间花在特性工程上会更有效率。一个信息丰富的特征有可能在准确性和模型性能方面产生影响。
清晰的解释价值连城
像许多其他职业一样,数据科学是一项团队工作。在一个数据科学项目中,你不仅可能与其他数据科学家一起工作,还可能与其他专业的人一起工作。
作为一个团队取得成功的最重要的要求是在团队成员之间建立清晰的沟通。
为了实现这样的交流,能够清楚简明地解释事情是至关重要的。执行任务是一回事,但解释它是另一个层面。除非你独立工作,否则如果你不能向其他团队成员解释清楚,你所做的就毫无用处。
和我一起工作的经验丰富的数据科学家非常擅长简单地解释事情。他们总是说到点子上。他们避免让事情变得不必要的复杂,这使得团队工作更加健壮和高效。
Excel 仍然是一个关键角色
Excel 是一个无处不在的工具。尽管看起来有点老派,excel 在数据科学生态系统中仍然非常有用和实用。
在我开始作为一名数据科学家工作之前,我根本不会想到我会使用 excel。我认为它没有足够的能力来执行数据科学任务。
当我看到高级数据科学家如何使用 excel 时,我对它的偏见改变了。使用 excel 最大的好处就是它提供的实用性。这是一个很好的快速分析工具。
它的可伸缩性一直是个问题。然而,当涉及到对小数据进行快速分析时,excel 胜过许多流行的工具。
r 是迷人的
这很可能是一个巧合,但是与我一起工作的高级数据科学家对 R 有热情。他们更喜欢 R,尤其是对于探索性的数据分析任务。
并不代表 R 优于 Python。用 R 能做的事,用 Python 也能做到。但是,说到数据分析和操作包的性能,我感觉 R 胜过 Python。
例如,我体验到 R 数据表包在处理 2 GB 大小的 csv 文件时性能优于 Python pandas。
如果您还没有这样做,我建议您至少尝试一下用于数据分析和操作的数据表包。我一直是熊猫的忠实粉丝,但比起熊猫,我更喜欢数据表。
结论
我想再次强调,我没有资格评价数据科学家,好还是不好。我在本文中分享的内容是基于我与经验丰富的数据科学家一起工作的经历。
我以他们为榜样,并设定自己的目标,以实现他们擅长的工作。
感谢您的阅读。如果您有任何反馈,请告诉我。
怎样才能成为一名优秀的数据分析师?
提示:没有确切的答案
照片由 Heidi Fin 通过 Unsplash 拍摄
这里我要说的第一点是,这总结了我的经验。就像我对试图到达圣安东尼奥市中心的美国之塔的人说的那样:你看到那个高的东西了吗?继续朝着它前进。
知道你在哪里,知道你想去哪里,并且知道如何到达那里。没有固定的路径。
你应该具备什么样的一般特征?
这一部分更侧重于你这个人,而不是你应该具备的技能/知识。
- **坚持/足智多谋:**在数据的世界里,这是巨大的。你将参与的大部分工作不会是一个简单的 5 步蛋糕食谱。事实上,当某件事被描述为超级简单时,你可能会有点怀疑。这些项目可能涉及多次迭代,每次迭代的收益非常小。
我只需要你……'—你的利益相关者
- **好奇,但有目的:**当你开始处理数据时,很容易思考,“我想知道这会是什么样子,如果我……”你可以制作各种条形图、数据透视表等。直到母牛回家休息。首先想到一个问题,事情会变得简单一些。一旦这个问题形成,记住引言,并问你如何才能得到那个结果。当你试图将所有有可能变得重要的事情自动化时,你可能会以“数据呕吐”而告终。
- **解决问题的技巧:**你是那种喜欢解决谜团的人吗?当有人试图找出导致某个结果的原因,而你的头脑开始转向潜在的想法时,你会兴奋吗?关于数据的事情是,有时候,结果并不总是在表面上。你需要能够思考看似不相关的项目/事件如何影响另一个项目/事件。你需要知道如何构建才能找到答案。
- 网络:但是我们不就是整天坐在一个孤立的泡泡里编码吗?希望不会。你将无法回答所有抛给你的问题。最重要的是,你没有参与很多利益相关者讨论当前/未来计划的会议。来自这些会议的信息有可能通过不走上错误的道路或通过更好地理解业务目标来节省您大量的时间。能够和其他人一起工作以融入商业管道是非常有帮助的。
- **终身学习者:**这是一把双刃剑。新的分析工具将会出现。在这些工具中,将会发布新的附加组件。最重要的是,商业在变化。目标可能会根据领导力或客户的需求而改变。新的部门或业务需求可能会在一夜之间涌现。你需要知道这些新的需求是什么,以及如何帮助他们。
- **说书人:**很多时候,数字很无聊!那打击很大。你想要一份和数字打交道的工作。你需要知道人们需要理解这些数字在做什么。当你的演示充满了数字/电子表格/图表的图像时,你的眼睛开始变得呆滞,大脑开始对你视而不见。你应该让这个足够有趣,让你的观众参与进来。你的人需要离开房间,告诉其他人他们刚刚听到的,并能够传达你的主要观点。
那很有趣。我从来没有那样想过。—您的演示中的观众成员
- **坚强的脊梁(紧接着的一点与此齐头并进,不要跳过!)😗*这个问题没有被经常提起。人们会质疑你的工作。捍卫它,但要用事实捍卫它,而不是情绪。人们很容易认为你是他们的个人数据助理,他们这次(以及下一次,再下一次……)需要的只是快速的数据拉取。你的时间也很重要。匆匆忙忙的人很有可能最终创造出更多耗时的任务。如果管理不当,快速和肮脏往往会导致漫长和痛苦。
- **机智/优雅:**很明显,你需要在某些时候反击。找出如何在不引发其他问题的情况下做到这一点。人们已经为他们的想法付出了努力。那些想法是他们的“宝贝”。不要冲进满是人的房间,说某人的“孩子”很丑,这是浪费时间。
- **受控风险承担者:**有想法。实验。问“如果……会怎样?”我以前说过,欧内斯特·p·沃雷尔可能是这一行的完美人选。能够提出试探性的问题。
我们一直都是这样做的。—创造力和全面发展的对立面
- 自我意识:了解你如何融入你的团队。知道自己更擅长什么,哪里还有提升的空间。你的数据团队不应该只是铁杆编码员。你可以通过成为领域知识的专家或者与所有部门的重要人物保持良好的关系,为你的组织带来巨大的价值。
到目前为止讨论的项目通常被称为“软技能”。但是它们非常重要!接下来是硬技能…
照片由莱昂通过 Unsplash
你可能被期望拥有的技能
考虑更技术性/书本/硬技能的方法,数据分析师通常需要一套通用的核心技能。当你看招聘启事时,你甚至会开始注意到一点趋势。
- 当需要快速分析或指导时,Excel 会非常有用。请记住,记录你如何找到一个结果是关键。再现性是一个东西。将你的结果截图发给某人时,必须包括你如何到达那个点的逐步说明,以及放入文件中解释你从哪里开始的数据。
- SQL: SQL(结构化查询语言)很有帮助。您是否曾经被传递一个 Excel 文件,其中有人将 3 列连接成一个文件,然后用作 V-Lookup 的列?你有能力也有责任避免“应由你承担的责任”。数据分析中最复杂的部分不应该是“这个人的文件到底在做什么?”SQL 可以帮助解决其中的大部分问题,并允许将更多的时间集中在解决问题上。
- **脚本语言(通常是 Python 或 R)😗*就像 SQL 一样,知道如何编写脚本和操作数据是一项很好的技能。“开箱即用”的分析工具有时会限制你的能力。能够使用允许您深入到更细粒度级别的工具是一件好事。
- **仪表盘和报表构建:**在点上,你会使用 Power BI 或 Tableau 之类的工具来构建工具供他人使用。与您的组织合作,设定使用这些工具来回答何种问题的界限。在数据世界里,你构建什么取决于你为什么要构建它。没有通用的工具。
- **统计:**你很可能会有很多关于分布和诸如此类的东西的可视化。偶尔,你甚至可能会遇到类似辛普森悖论的情况。知道这类事情是有用的。
- **可视化:**与讲故事相一致,你将被期望在一个小得多的窗口中呈现大量的数据。任何人都可以制作一个条形图,但是能够添加适量有用的文字是你的优势所在。
- **沟通:**随着讲故事和可视化的趋势,你所做的很大一部分是向他人传达想法。他们必须能够理解你的观点。你可能需要向一个非技术人员解释一些技术性的东西。你可能需要向一个非常专业的人解释一些更商业的东西。你还必须向你的观众推销你的想法。如果你只卖 H-I-P-P-O,你的同事可能不会有兴趣帮助你。
“你明白吗,”—确切地说,你不应该在解释某事时结束谈话
- 领域知识:这不一定是你需要从你的角色开始的。这也显示了“生活学习者”和“网络人”的一点点。能够从你的同事那里了解你的业务。提醒一下:数据不决定(底部链接)。数字可以做各种事情。如何将想法应用到业务中会对底线产生很大的影响。
就这些吗?
一点也不。直到现在我还没有提到的一个项目是交付一个可能不完美的产品的能力。追求完美会让你无法产生巨大的影响。不要把这误解为有 janky 代码会把别人引向错误的道路。仔细检查你的工作,做理智检查。
数据分析是一个很大的世界。有很多东西要学。虽然很有趣。我没有涵盖作为一名数据分析师您需要了解的所有内容。我在学习的时候很难面面俱到。
我想确保涵盖一些重要的基础,并提出一些你通常不会读到的话题。一如既往:不断学习!
一篇关于不同思维的文章:
这里有一篇简短的文章,在使用 SQL 以及如何避免结果中的简单错误时非常有用:
什么使一个问题有帮助?
栈溢出文本的主题建模探索
社交媒体在我们的生活中扮演着越来越重要的角色,不讨论它的缺陷,它的一个积极方面是它让用户能够与广泛的受众沟通。这使得社交媒体成为任何想要了解某个主题或与其他人讨论以完善每个人的理解的人的强大工具。Stack Overflow 是一个致力于帮助人们提高他们的编程技能,分享他们的编程知识,并在社区环境中建立他们的职业生涯的网站。作为我目前参加的 Metis 训练营为期 12 周的课程的一部分,我完成了一个数据科学项目,该项目使用自然语言处理工具来挖掘堆栈溢出的文本,以探索与网站上最有帮助的问题相关的术语和主题。
我在 Google Cloud Platform 的 BigQuery 上用一个简单的 SQL 查询开始了我的项目,使用了该网站上托管的公共堆栈溢出数据集,带来了 500,000 个堆栈溢出问题和其他相关功能,如与该帖子相关的分数、浏览量和相关标签等。在继续讨论完成项目的整个过程之前,我将分享一些关于一些特性的基本信息。
类似于堆栈溢出网站上的示例问题。图片作者,灵感来自栈溢出帖子。
帖子的顶部是问题的标题,下面是帖子的正文,或问题。您还会注意到问题主体左侧的数字以及围绕它的上下箭头。这是帖子的“分数”。它是一个帖子收到的支持和反对票数的总和,看这个分数的一个方法是它的有用性。网站上的答案以同样的方式工作,但是为了这个项目的目的,我坚持只看问题。你可能会问自己,“分数的范围是多少?有没有表示帖子好坏的数字?”第一次发布时,所有分数都从 0 开始。如果你只收到一张选票,取决于它是向上还是向下,这将表明查看该帖子并对其投票的人是否认为该帖子有帮助。因此,总得分不仅取决于帖子的有用程度,还取决于有多少人参与了该帖子。在文章的最底部是标签,它们被一个蓝色的正方形包围着。这些是标签,它们有助于对问题进行分类。如果您试图搜索与某个编程概念相关的帖子,这很有用。
为了详细介绍这个过程,我使用了前面讨论过的 SQL 查询来引入相关的特性。接下来,我通过过滤我的数据来选择最有帮助的问题,这些问题的分数在帖子的前百分之十。为了进一步增加有用性,我只选择了网站上最常用的 100 个标签。Stack Overflow 上有超过 54,000 个独特的标记,由于这些标记是用户生成的,有些可能只使用一次。通过以这种方式过滤,我们确保我们看到的帖子是最有帮助的,吸引了最多的注意力,并且可能与更有经验的用户相关联。
在最初的数据清理步骤之后,文本预处理通常是主题建模过程中的下一步。这是为了确保文本只包含有意义的单词,没有标点符号、HTML 或停用词(例如 like、at、which)。
在删除停用词之前,对主题 6 中的文本进行预处理。作者使用来自知识共享许可下栈溢出帖子的文本制作的图片。
数据科学中的预处理是一个迭代过程,通常需要大量的领域知识。例如,由于栈溢出的许多措辞都与代码有关,所以一些在英语中没有定义的词,如 git 或 c++ 实际上是有意义的。在意识到显示的主题没有帮助或者遗漏了数据科学家知道应该包含的单词之后,可能必须在标记化步骤甚至建模步骤之后返回。在这个项目中,我无法在标记化步骤中移除所有这些术语之前捕捉到它们,但这无疑是未来改进我的模型的一个目标。
在预处理管道中清理完文本并使用 CountVectorizer 进行标记后,我使用潜在的 Dirichlet 分配(LDA)对数据集中的问题进行主题建模。此外,由于标签本身就是一种按主题对术语进行分类的方式,我使用熊猫将标签与我的 20 个主题中的每一个主题联系起来。
主题 6 和 8 中顶部标签的频率。图片作者。
主题建模步骤还需要一些领域知识,在这种情况下,就是了解与计算机编程中各种主题相关的术语。在为模型确定最佳主题数量时,这些领域知识会很有帮助。对于这个项目,我依靠我的领域知识,在发现每个主题中包含的术语有明显区别时,就选定了 20 个主题,但是有 GridSearch 等工具可以找到主题数量的最佳点。
LDA 模型中选择的 20 个主题中的 9 个主题的词云。图片作者。
在我的项目中,我还获得了一些有趣的见解,这些见解不仅仅与自然语言处理和主题建模有关。Stack Overflow 是一个巨大的网站,有一个很大的社区,里面有很多数据。例如,在我的数据集中,帖子的得分从-49 到 14,772 不等。帖子可能只有 0 次浏览,也可能有超过 200 万次浏览!在我的模型中,主题 19 与超过 4000 个关于堆栈溢出的问题相关联。它包括诸如会话、服务器、客户端、连接和请求之类的术语,并且可以说与一个与浏览器相关的问题相关联。
在未来,该模型可能会进一步完善,可能会进行更多的文本预处理,以及探索其他模型,如非负矩阵分解(NMF),因为它们有利于处理较短长度的文档。确定有用主题的模型不仅有利于希望发布可能得到回答的问题的用户,或者希望提高他们在 Stack Overflow 上的声誉的用户,而且也有利于教育者。这些有帮助的问题是用户认为对学习有帮助的问题,正如我在开始时提到的,它们有较高的分数,这意味着很多人已经关注了这个问题。换句话说,这些问题通常对人们来说是最难的。它可以帮助教师、教授或导师确定他们可能希望在哪些主题上花更多的时间,以便他们的学生带着他们可以在家庭作业、项目和职业生涯中应用的知识离开。
什么是成功的数据科学家?成功的 5 个特征
学位不是成功的保证。
在我们的数据科学学习之旅中,我们都会在某个时候问自己一个重要的问题:“要想在这个领域取得成功,我需要做些什么或学习些什么?”。我知道我在生活中经历的每一次学习之旅中都会问自己这个等式,因为当我们在学习之旅中时,我们经常希望这个旅程以成功告终。
但是,这个等式的棘手之处在于,答案因人对成功的看法而异。对一些人来说,成功就是得到一份高薪工作;对其他人来说,这是学习新的东西或有一份每天都能学到新东西的工作。对我来说,就是做自己热爱的事情,并为此获得报酬。不一定是一大笔钱,但只要我喜欢我做的事情,我就是成功的。
如果你问任何一位认为自己成功或被视为成功的数据科学家,他们可能会从他们在整个旅程中获得的个人角度告诉你他们是如何取得成功的。但是,有趣的是,尽管成功是个人的和主观的,但是如果你问 100 个甚至 1000 个数据科学家,我们最终会得到一些共同的答案和一些独特的答案。
</5-online-data-science-courses-you-can-finish-in-1-day-5b60f353fa8e>
虽然独一无二的会让每次学习之旅变得特别,但常见的才是你需要关注的。因为在你的整个旅程中,你将为成功发展你自己独特的品质。因此,在本文中,我将重点关注所有数据科学家都认同的作为一名成功的数据科学家需要具备的 5 大特质。
№1:有一颗求知欲强的好奇心
我将根据我的个人经历,以及我认为重要但并不总是被提及的东西,对成功的数据科学家的特质进行排序。任何数据科学家要想成功,首先需要具备的特质是好奇心和求知欲。正如我常说的,数据科学是一个正在发展的领域;它一直在发生着很多事情。
所以,要在这个领域取得成功,你需要有好奇心,对这个领域的下一个趋势有好奇心,对你能解决的可能的问题有好奇心,对你能解决这些问题的不同方式有好奇心。如果你有一颗好奇的心,你将永远在学习,永远在进步,这两者都是在数据科学中取得成功的关键。
№2:能够轻松适应新数据和新情况
数据科学是一个跨学科的领域;它连接了数学、统计学、商业、编程、设计和科学交流。正因为如此,数据科学的应用是无穷无尽的;每个领域都有数据科学可以解决的问题。因此,适应性是任何数据科学家都应该具备的一个重要特征。
能够适应新工具、新算法、新数据、新问题、新队友和新情况。如果你是一名自由职业的数据科学家或正在换工作,这变得更加重要。将您的知识应用于任何应用程序和数据的能力可以让您要么构建一个伟大的项目,要么无法超越众人。
</9-comprehensive-cheat-sheets-for-data-science-46005d72b485>
№3:批判性思考者和问题解决者
数据科学家的主要任务之一是从给定的数据中发现趋势、模式并获得洞察力。找到这些见解和趋势并加以利用的关键是批判性思维和解决问题的技巧。因此,您需要探索数据、分析数据并进行批判性思考,以决定在项目的后续步骤中使用的模型。
解决问题和批判性思维也能帮助你决定使用哪些工具和做出哪些决定。因此,利用这些技能可以帮助您在项目中节省时间和精力。这里要提到的重要一点是,随着职业生涯的发展,你批判性思考数据的技能将会提高。
№4:有良好的沟通技巧
在我看来,拥有良好的沟通技能是每个数据科学家都需要掌握的最重要但却被忽视的软技能之一。想象一下,花几个小时处理一些数据,分析它,清理它,可视化它,但是你不能向别人解释你的发现。那么,你所有的工作都将是徒劳的,因为如果他们不能理解你的发现,他们将无法采取行动。
数据科学家需要擅长科学交流,他们需要擅长简化概念,只关注真正重要的东西。此外,他们应该能够给出可行的建议,并善于利用工具来创建有效的可视化效果,以传递清晰的信息。
№5:有扎实的技术功底
我故意把技能放在最后。这并不是说技术技能不重要。事实上,没有扎实的技术功底,你很可能无法成为一名数据科学家。但是,如果你正在尝试进入数据科学或者已经进入了数据科学,而我们其他人每天都在努力提高你的技能,那么你知道技术技能是许多在线材料的核心焦点。
所以,无论如何你都要学习技术技能,因为这些技能在求职过程中经常被测试。我把技术技能放在最后,因为我提到的其他 4 个特质经常被忽视或不被关注,尤其是新数据科学家。然而,在数据科学领域建立职业生涯是必不可少的。
外卖食品
我们都想成功,努力提高自己,学习新的技能,发展我们已经拥有的技能,并一直努力达到更好的自我;那只是生活的一部分。这也是在整个技术领域,尤其是数据科学领域取得成功的重要一环。
数据科学是一个正在发展的领域;每天都有新的算法和模型被设计出来,以提供更好的效率和性能以及更低的错误率。此外,由于数据科学的跨学科性质,您将需要学习各种主题和概念,这些主题和概念起初可能看起来并不相关。尽管如此,一旦你开始建设项目并涉足该领域,他们的联系就会显现出来。
</5-new-data-science-books-that-you-should-consider-reading-c90aec1d5b0d>
重要的是要记住,每个人都有独特的学习历程、独特的经历和独特的成功定义。尽管如此,在这种独特性中,我们都有一些共同的特征,这些特征使我们能够展示我们的个性,证明我们的技能,并成为我们可能成为的最好的数据科学家,因此,简而言之,这些共同的特征使我们能够成功。
是什么成就了一个成功的画面
2021 年对我个人和职业来说都是不可思议的一年。尽管如此,我还是非常兴奋被选为第一轮 IronViz 资格赛的评委,与我们社区所有这些超级天才和一流的成员一起。随着以 Data + Joy 为主题的 IronViz 资格赛前 10 名决赛选手的https://www.tableau.com/about/blog/2021/8/data-joy-iron-viz-qualifier-contest-results-2021宣布,我准备写下这次经历,并帮助您确定在未来的资格赛中应该考虑什么。
鸣谢:Tableau 和 Adam Mico
在我们开始这篇文章之前,这里有一些我不会在这里或私下分享的东西:
- 审查具体的可视化
- 分项得分细目
然而,我将根据我所审查的 64 个可视化中的高分数据可视化的趋势和十个决赛选手的趋势,介绍一个成功的 IronViz 可视化的特征。
铁 Viz 资格评审背景
人们期望法官客观地看待可视化。Tableau 做了很大努力从可视化中删除个人身份信息,我们没有使用 Tableau Public 来查找和审查 vizzes。相反,提交的可视化托管在其他地方。为此付出的努力(特别是 Tableau 的 AB Commendatore 和Andrew Grinaker**(Twitter))并不小,但它有助于保持评分的公平。为了避免看到 IronViz 合格的条目,我在 Twitter 上屏蔽了对 IronViz 的引用,避免公开 Tableau,并且如果有人在那段时间要求对任何 Tableau 可视化进行反馈,我也不会参与。这并不容易,因为我非常好奇,觉得我错过了很多令人兴奋的事情,但客观是必不可少的。当然,IronViz 评委不会提交参赛作品,因为这显然会造成利益冲突。此外,如果可视化不能客观地判断(例如,上面的潜在短裤),我们可以选择不判断 vizzes。**
判断过程
信用:Tableau
第一轮的每位评委都收到了 60 多幅图像,分布在所有 320 幅参赛作品中。多名法官审查了每一个可视化。最高分的可视化与第二轮评委分享。每一次可视化都是基于…
- 分析数据如何支持主题、其清洁度及其在研究中的应用,包括计算
- 设计或数据如何协同工作,并以最终用户可以直观处理的方式提供服务。应该想到这些问题…这是图表的正确用例吗?我能快速阅读课文和图片吗?这些颜色有什么意义吗?视觉化考虑可及性了吗?
- 讲故事或可视化在使用分析和设计来关注主题方面有多有效。当浏览主题和它的踪迹时,旁观者的头脑中是否有一个小电影在播放?它比数据和图表本身更能吸引人和启发人吗?
一个充满类比的高质量 IronViz 条目的分解
我有点饿了,所以我想不出一个更好的时间来展示这个比喻。我不是厨师,但我在电视上目睹了他们中的许多人——或者至少足以拼凑出这个类比。
分析阶段是在脑海中寻找配料和食谱。接下来,最好考虑一下 8 道菜的大餐需要哪些食材、客人和菜肴。接下来,设计阶段考虑烹饪方法、菜肴、时机、场地和盘子。最后,对于讲故事来说,厨师会找到主题、交付顺序、中间的时间安排以及其他微妙的东西,为活动增添冒险感和连贯性。
IronViz 是数据可视化的高级餐厅。最成功的参赛者花费大量的时间和精力将所有这些东西放在一起。菜肴、地点和烹饪方法因作者而异。然而,它们都具有这些一般特征:
- 数据清晰和小心——作者花了大量时间收集可视化数据,验证计算,找出呈现设计想法所需的所有逻辑,并删除不必要的部分。鉴于这一主题,最好的数据是仔细收集或汇编的。
提示如果 Tableau 在未来恢复为合格条目提供数据集
验证是否可以将您的数据或附加数据追加到数据集,以实现更加个性化的可视化。来自你的想象越多,就越不像是一项任务,而更像是一个充满激情的项目。激情项目通常会产生更好的结果,因为更多的关注被投入到可视化中,以吸引和推动你自己展示你的技能。
- 设计效率和掌握度——有了对数据的这种理解,他们已经知道仪表盘上会有什么。许多人通过线框化或预先设计可视化来做到这一点。这是一个最终可视化的粗略想法,并提供了一个课程。
- 讲故事的连贯性和参与性——作者退后一步,考虑他们所热衷的事情的大局。然后,带着那种活力,他们想让你相信,这也是你应该用最少的脚步感受到的东西。它的目的是给你一个哈哈的时刻,让你在停止看它之后再去想它。
- 规划、协调、时间和灵活性——在完成这项工作之前,他们会深入思考任何东西的位置以及如何进行微调。作者可能会在步骤之间花时间,花几天或几周的时间来查看它——寻求对设计的反馈,并验证另一个人看到了他们的愿景和想要传达的东西——足够灵活地重复并对所有步骤进行必要的调整,以呈现预期和强大的东西。
10 大 IronViz 数据可视化的 3 大趋势
信用:Tableau
我看到许多得分较高的条目有以下相似之处(除了上面提到的项目)。2022 年,趋势可能会改变,所以你会想看看这个社区在做什么(特别是在莎拉·巴特利特的(推特 | 网站 ) #IronQuest )。
- 长格式可视化很流行。
所有进入前 10 名的可视化都需要垂直滚动——最重要的是。只有瑞安·苏亚雷斯**(Twitter|Tableau Public)的布局不需要从许多设备上滚动(1000 像素宽、700 像素长的 7 个仪表盘的配置)。**
注意:默认的桌面格式和商业仪表板的一般尺寸是大约 1,400 x 800,以便在大多数桌面上无需滚动即可访问。
*前三名决赛选手*Samuel Parson(Twitter|Tableau Public)是唯一一个拥有比更长更宽可视化效果(6000 像素宽 x 2,000 像素长)的决赛选手。
其余八个的中值尺寸分别为 1,400 像素宽和 5,650 像素长,平均值分别为 1,324 和 6008,大约是标准业务仪表板的 4 到 5 倍宽和 7 倍长。
以下是其他八位入围者的 Twitter 账户和 Tableau 公共账户(按姓氏字母顺序排列):
- 迪努什基·德·利维拉 ( 推特 | Tableau 公共)
- 凯文·弗莱格 ( 推特 | Tableau 公共)
- 帕拉德普·库马尔克 ( 推特 | Tableau 公开 ) 前三名入围
- CJ Mayes(Twitter|Tableau Public)
- 布莱恩·摩尔 ( 推特 | Tableau 公开)
- Chimdi nwo su(Twitter|Tableau Public)
- 安妮-索菲·佩雷拉德·萨 ( 推特 | Tableau 公共)
- 丽莎·特雷斯科特 ( 推特 | Tableau 公开 ) Top-3 入围
2。经典 Tableau 交互式数据可视化的自助服务让位于数据故事
对于非常长的可视化效果,除了工具提示或滤镜/参数之外,交互性对于用户体验来说是不切实际的。文本和叙述通过更多的图表、文本框、注释或工具提示(在较小程度上)被广泛使用,以提供见解,而不是与交互一起使用的自助式见解。
作为一名前分析师,我喜欢通过复杂数据集上的交互性来选择他们的冒险,分享这一点让我很痛苦。尽管如此,填鸭式的数据故事方法更具包容性,而且对更广泛的受众更有效。 可以 是如果作者应用了上面提到的一个高质量的 IronViz 条目的原则。
3。对 Tableau 使用其他工具是可以的,即使是 Tableau 可视化竞赛
前 10 名作者中的每一位都使用了 Tableau 中没有的独立工具或资源来强调 Tableau。最常见的是在 PowerPoint、Figma 或其他设备中创建的图像,以显示图标、增强背景或增加文本选项(很少有 websafe 和 Tableau 公共安全文本选项——这里有一篇由Ken fler lage*(Twitter|网站撰写的 伟大文章 )。***
前 10 名作者和许多没有通过资格审查的作者之间的区别是,这样做是为了有品位地增强可视化,而不是使其成为主要焦点。
奖励:这里的所有作者都活跃在 #DataFam 社区中(或者是新加入的),并使用社区提供的资源来提升技能。Priyanka DOB Hal(Twitter|Tableau 公众)刚刚分享了一篇关于 Tableau 征途首发包的新文章,你应该看看。虽然成为社区的一员并不能给评判加分,但是所提供的资源和访问的便利性使得提升技能变得更快(也更有趣)。
你很努力,但没有进入决赛或前 10 名。
竞争的水平反映了技能,创造力,对细节的关注,以及从不同的角度和不同的工具来扩展画面的自豪感。许多执行了他们开始分享的可视化的人可能不会放置或被认为是前 10 名完成者。尽管如此,他们最终还是通过提高技能、花时间练习技巧,以及参与这种变革性的体验来投身于一个充满激情的项目和技能展示而获得了胜利。
如果您继续使用 Tableau,关注 Tableau 社区或其他充满活力的数据可视化集体,您将会被您在短时间内通过额外的接触和探索可以爬多远而震惊。当然,你可能仍然达不到前 10 名或进入决赛,但你会通过到达的新高度和从加高的平台上看到的壮丽景色意识到旅程的影响。
亚当·米克
什么让大学值得?
实践教程
构建一个逻辑回归模型来预测哪些大学的早期职业薪金为 6 万美元或更高
Giphy.com 的 GIF
介绍
像大多数亚洲移民一样,我的父母强调学校的重要性,认为大学毕业是实现美国梦的途径。正因为如此,我从未质疑过我是否应该上大学。这更多的是关于和哪一个的问题。
当我做决定的时候,我没有做成本效益分析,就像我在后面谈到的模型中做的那样,尽管也许我应该做。相反,我想得更多的是两件事:
1.哪个学院感觉像霍格沃茨,更重要的是,
2。哪个学院可能会打动我的“chismosa”titas(chismosa 在他加禄语中是“八卦”的意思)。
没有想太多,我跟随我儿时最好的朋友去了加州大学圣地亚哥分校读本科,然后去了哥伦比亚大学读研究生。当我毕业的时候,我无知地认为大学本身会有回报。但是当我拿到我的第一份学生贷款账单和一份与之不符的工作薪水时,我惊呆了!我是谁,会认为我可以用她爸爸的信用卡为大学购物,就好像我是切尔·霍洛维茨一样?
事实证明,我并不孤单。根据 LendEDU 进行的一项调查,大学生毕业后期望的平均工资为 6 万美元。52%的大学生申请了学生贷款来上大学,其中 17%的人有支付困难。
Giphy.com 的 GIF
这让我产生疑问: 是什么让大学值得上 ?
方法学
我查看了 900 多所学校(数据清理后)和 8 所学校的特点,如下所示(来源于 PayScale 、数据。世界,美国新闻&报道。
- 有意义的百分比(连续)——有多少毕业生觉得他们的工作有意义?
- STEM 百分比(连续)——授予的学位中有多少是与 STEM 相关的(科学、技术、工程、数学)
- 学校类型(分类)—工程、私立、宗教、艺术、体育迷、党校、文科、州立、研究型大学、商业、sober、常春藤联盟
- 州(分类)-学校所在的位置
- 学费(连续)—包括州内、州外和食宿费用
- 总注册人数(连续)—学校注册了多少名学生
- 多元化注册(连续)-少数族裔群体(亚裔、黑人、西班牙裔、夏威夷原住民/太平洋岛民、美洲原住民/阿拉斯加原住民、女性和非居民)的注册
- 学校排名(分类)——我将排名分为前 50 名、前 100 名、前 150 名、前 200 名、前 250 名和超过 250 名,以包括未列入前 250 名的学校。
你可以在下面找到最终数据帧的预览。
按作者的数据框架
我的基线模型使用了 75%的数据来建立一个逻辑回归模型,预测学校的预期收入是否达到或超过 6 万美元,然后使用剩余的 25%来测试我的模型的准确性。我的最终模型指出了哪些特征在预测薪水时最重要。
我们的 零假设 声称这些特性对预期收入没有任何影响。我们的 替代假设 声称,特征确实对预期收入有影响。
目标变量——期望与现实
我们的数据显示,大学毕业生早期职业生涯的平均工资为 5 万美元,中位数为 4.9 万美元。在我们调查的所有大学中,只有 10.2%的大学在职业生涯早期的薪资达到或超过 6 万美元。
作者直方图
因为我构建了一个逻辑回归模型,而不是线性回归模型,所以我从早期职业薪金列设计了目标变量 over_60000,将早期职业薪金 60000 美元标记为真,将低于 60000 美元的早期职业薪金标记为假。
带 Skikit-Learn 的基线模型
构建我的模型
# import necessary libraries
import statsmodels as sm
import sklearn.preprocessing as preprocessing
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from scipy import stats#Define dependent and independent variables
X = colleges_df.drop(columns=['over_60000'], axis=1)
X = pd.get_dummies(X, drop_first=True, dtype=float)y = colleges_df['over_60000'].astype(float)#Split data into training and testing
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)# Fit model
logreg = LogisticRegression(fit_intercept=False, C=1e12, solver='liblinear')
model_log = logreg.fit(X_train, y_train)
我使用 Scikit-learn 构建基线模型,将目标变量 over_60000 定义为 y,将数据帧中的所有其他列(我的特征)定义为 x。
一旦我将数据放入模型,我就检查结果。
测量我的模型
因为我预测了学校是否会给毕业生提供 6 万美元或更多的早期收入,所以我想把我的精确分数放在回忆之上。记住, 精度 是从所有预测值计算出来的,而 回忆 是从所有真实值计算出来的(这篇博客很好地解释了其中的区别)。我不想告诉学生,他们就读的学校的预期早期收入为 6 万美元或更多,但事实并非如此。然而,如果我的模型告诉一名毕业生,他们的学校并不期待 6 万美元或更高的早期职业薪水,但他们实际上是这么想的,这也无妨。我得说,是令人愉快的惊喜和喜悦。
作者的基线混淆矩阵
左边的 混淆矩阵 展示了我的基线模型对测试数据的预测有多好。我的基线预测有 12 所学校的预期工资超过 6 万美元,但只有 6 所学校实际上符合标准,导致 50%的精确分数。不好了。
迭代我的模型
显然,我仍然有很多工作要做,以提高我的精度分数。你可以在我的 GitHub 上找到这个迭代过程,但是为了不让你厌烦这些细节,这里有一个快速的总结:
- 我用 Scikit-Learn 的 train_test_split 测试了我的数据的训练规模,看看哪个训练规模给出了最好的结果
- 我根据 Statsmodel 上显示的统计显著性削减了特征
- 在拟合我的模型时,我使用 SMOTE 和指定类权重来处理类不平衡(尽管这两者实际上都没有提高我的精度分数——它实际下降到了 10%)。就像预测真假的逻辑回归模型怎么会得分那么低?)
作者的最终混淆矩阵
经过多次迭代,我的最终模型预测有 24 所学校达到了预期的薪资目标。在 24 所学校中,有 18 所为真,因此精度分数为 75% ,比我的基线模型提高了 25%。旁注:我的准确率也从 91%上升到了 94%。哈利路亚!
结果
我的最终模型使用了 70%的数据进行训练,保留了班级不平衡的情况,并且基本上只使用了 3 个特征:排名(前 50 名和前 100 名)、学校类型(工程、体育迷、文科和研究)以及少数群体的入学率(主要针对亚裔毕业生和女性)。结果可以在下面找到。
按作者列出的条形图
起初,我认为我的模型的发现进一步证明了我们在社会中发现的不平等,女性挣 81 美分,亚裔毕业生挣 95 美分,其他少数种族群体平均挣 77 美分,而白人男性挣 1 美元。但当我进一步观察整体结果时,这也表明职业仍然在薪资中发挥着很大作用,而不是学校本身。
所以我想知道,进入工程领域的亚洲毕业生比女性多吗?排名前 50 的学校主要是工科学校吗?学生是否大学毕业,收入差距是否存在?
结论
因为这个模型只考虑了大学的特点及其对早期职业薪水的影响,所以它几乎没有提供更大的背景。大学毕业在薪水中的作用如此之小,所以拓宽范围,包括你所在大学之外的额外特征会很有意思。或许通过不同的模式,我们可以找到消除性别和种族薪酬差距的方法。
如果你读这篇博客是为了根据我的模型的发现来决定你是否应该去哪所学校,我建议你跟随你的心,去你觉得对的地方。也许这是我性格中“感觉”多于“思考”的部分,是它首先让我陷入了学生贷款债务,但是我承认我不后悔。大学让我对自己有了更多的了解,也让我有了今天的成就,即使我的专业与我现在所做的并不匹配。一切都是为了体验。为此,我很乐意再次支付。
大学对你来说值得吗?为什么或为什么不?
是什么让深度学习不同于传统的机器学习方法?
莫里茨·金德勒在 Unsplash 上拍摄的照片
使深度神经网络与众不同的 3 个关键特征
所有表达的观点都是我自己的。本文的灵感主要来自于 Zsolt Kira 教授精彩的 CS7643 讲座。
所以你在一个聚会上,你 c̶a̶n̶’̶t̶̶s̶e̶e̶m̶̶t̶o̶̶s̶h̶u̶t̶̶u̶p̶̶热情地告诉每个人人工智能将如何改变世界,你知道这一点,因为你是一个人工智能爱好者或机器学习实践者或任何你用来描述自己的好听的头衔。然后,某个时不时看报纸的人问你**“我真的不明白深度学习和传统机器学习的区别。深度学习和(经典)机器学习的区别**是什么?”。你给了一些关于神经网络中的神经元是如何基于人脑的手写解释等等等等…一个让人不服气并让你尴尬的答案。因此,下面是如何正确回答这个问题——深度学习有 3 个关键特征使其与众不同:
层次组合性
特里·维里斯迪斯在 Unsplash 上拍摄的照片
深度学习模型架构往往基于这样一种想法,即周围的世界表现出层次结构。简单地说,世界上所有复杂的东西都是由简单的积木组成的,而这些简单的积木又是由更简单的积木组成的。这类似于在化学中,化合物是由分子组成的,而分子又是由原子组成的,或者在商业环境中,组织是由部门组成的,部门是由团队组成的,团队是由员工组成的。
同样,在图像中,像素形成边缘,边缘形成形状,形状形成文本(形状的复杂组合),文本形成对象,对象形成完整的图像。在自然语言处理的情况下,字符形成单词,单词形成短语,短语形成句子,句子形成段落。通过在它们的架构中反映数据的这种分层性质,深度学习模型能够通过对数据中的分层关系进行建模来了解简单部分如何形成复杂的整体。
在 ImageNet 上训练的 Convnet 的特征可视化[泽勒和弗格斯 2013]
在传统的机器学习方法中,专家将参与手工挑选这些低级特征,然后手工设计这些低级特征的提取,然后可以将这些提取馈送到模型,例如 SVM 分类器。这一过程不仅繁琐,而且选择和定义特征还涉及某种程度的解释性决策,这种决策容易因数据的过度简化而产生偏差并丢失信息。深度学习则以原始数据为输入,通过训练过程自动学习层次元素及其关系。
分布式表示
在神经网络中,神经元一起工作来学习数据的表示。单个神经元本身既不能编码所有的东西,也不能真正编码一个特定的东西。正如在管弦乐队中没有一种乐器能够真正表达音乐作品的全部丰富性一样,在神经网络中,复杂的数据表示是通过整个神经元网络通过来回传递信息来学习的。
来源:https://learnopencv . com/image-recognition-and-object-detection-part 1/
相反,在传统的机器学习方法中,为了对猫的图像进行分类,模型管道的部分将被配置成检测猫的特定特征。例如,可能有一个组件检测胡须,另一个组件检测尾巴等等。然而,在深度学习中,没有单个神经元被专门配置为寻找胡须或尾巴。
这种分布式表示的特点实际上在某些情况下使深度学习具有优势。一种这样的情况是迁移学习。例如,通过一些简单的微调,为分类猫品种而训练的深度学习模型可以很容易地用于狗品种分类。
端到端学习
深度学习以端到端的方式应用学习过程的想法在前面提到的要点中有很大的暗示。然而,这种区别不是微不足道的,值得作为深度学习的独立区别特征重复。在深度学习中,学习过程应用于过程的每一步-模型将原始数据作为输入,通过学习特征表示来执行特征提取,并学习参数来执行必要的任务,如分类。事实上,这个过程是端到端的,以至于特征提取和参数优化之间的界限非常模糊。
来源:https://blog.dataiku.com/hs-fs/
如前面提到的要点所暗示的,对于经典的机器学习方法,典型地,需要单独的特征提取过程/管道来馈入预测模型。这个管道可能涉及人工挑选和手工设计训练模型所必需的特征。这与深度学习方法形成鲜明对比,在深度学习方法中,模型直接作用于原始数据。
不同是否意味着更好?
现在我们知道了是什么让深度学习变得不同,那么不同就一定意味着更好吗?答案是否定的,经典机器学习技术在现实世界应用中的强大存在和流行就是证明。深度学习的上述 3 个定义特征也是使深度学习模型更难解释的原因。例如,在表现不佳的经典机器学习分类器的情况下,查看分类不佳的数据并确定故障是在特征提取还是在模型中是相当简单的。一旦发现了弱点,就可以朝着消除它的方向前进。然而,在深度学习的情况下,架构的层次化、分布式和端到端的性质使得查明糟糕性能的来源具有挑战性。人们不能指向某个特定的层或神经元,把表现不佳归咎于它。
因此,重要的是要知道是什么将深度学习与传统的机器学习区分开来,以及这些差异带来了什么负担。我们必须始终首先从数据开始,在选择模型、技术和体系结构时,要彻底了解背景。
见见作者
艾西瓦娅·普拉巴特
嗨!我是艾西。我名字的前两个字母是“AI”,AI 和机器学习是我热爱的。可以通过 LinkedIn 联系我。
一部好电影的要素是什么?
使用烂番茄的数据比较观众和评论家的评分
在过去的一个世纪左右,电影扮演了社会上最广泛消费的娱乐形式之一的角色,每年都有无数的电影出现,就像热锅里的爆米花一样充满活力。
不断增长的电影选择使晚间娱乐节目的选择过程变得更加扑朔迷离,许多观众在做出选择时会借助推荐。这样的推荐可能来自于用户生成的网站、评论家发表的评论,或者两者结合的平台。
但是这位受人尊敬的电影评论家的观点代表了普通电影观众的观点吗?我们能依靠评论家的声音来影响我们对娱乐的选择吗?
本文旨在使用自 1998 年以来提供电影和电视评论的网站 【烂番茄】 的数据,分析影评人和观众的电影评级行为的异同。
该网站为每部电影显示了两个独立的平均评级(以百分比为单位),描述了它收到的积极评论的份额:一个是基于一些评论家的评论,另一个是由网站的用户产生的。
使用由来自烂番茄的 17,000 多部电影的平均评论家评级、平均观众评级和各种属性组成的数据集,本文将采用多种分析方法来比较这两个群体的行为。
我们将首先对两组各自评级行为的差异程度进行广泛评估。然后,我们将深入分析上述差异的驱动因素。最后,我们将实现一个简单的线性模型,试图确定每个组的评级倾向的主要决定因素。
第一部分:评估差异
为了对观众和评论家各自的评级行为进行总体比较,我们先来看看各组的评级分布。
图 1:观众和评论家评分分布直方图
在上面的直方图中,我们可以发现两组评级的不同模式。
这两种分布都表现出左偏:这表明,在这两种情况下,我们的数据集中有更多的电影集中在评级范围的高端(因此更积极)。
然而,公平地说,这两种分布在形状上明显不同。
观众评分的分布更加平稳,没有明显的峰值,通常集中在中到高的评分范围内,很少会下降到较低的评分范围。
影评人的评分在整个范围内要广泛得多,这意味着几乎有同样多的电影走向低端,也有同样多的电影走向高端。该分布也在两个极端呈现峰值,尽管人们会假设这些是已经收到少量评论的电影的情况。
这表明,我们可以期待观众在他们的评级中更加慷慨,而另一方面,评论家,正如其名称所暗示的那样,更加挑剔。
接下来,让我们调查两组的评分之间是否有任何明显的相关性。每一点都是一部电影,我们可以画出观众和评论家的评分。
图 2:观众和评论家评分相关性散点图
上面的散点图表明,事实上有一些证据表明两组评分之间存在正相关,这表明观众对电影的高度评价也会得到评论家的积极评价。
然而,剧情中显示的相关性很难用强来形容,大量电影落在离中心线相当远的地方。
以上两个图表为我们提供了证据,证明两组评分之间有足够的对比,让我们可以更深入地研究数据。
记住这一点,让我们进一步分析,试图找出上述两组行为差异的原因。
第二部分:分析观众/评论家差异的驱动因素
考虑到上面的初步分析,让我们尝试采取一些措施,通过探索数据集的其他方面来确定观众和评论家不同行为的驱动因素。
当思考什么可能会影响观众对电影的欣赏时,一个浮现在脑海中的属性可能是电影的类型。让我们比较两组中每一组在我们的数据集中出现的每一个电影类型的平均评级。
图 3:比较不同流派的观众和评论家评分的条形图
上面的图表指出了一个事实,即评论家和观众对一些电影类型的反应通常是不同的。
影评人对纪录片和 T2 经典电影的反应更加积极,而观众对 T4 信仰、精神和儿童家庭类型表现出更大的偏好。
从理论上看,这是有道理的。有人可能会说,电影界的“经典”满足了被认为是高电影质量的必要标准,但对于更随便的电影观众来说可能不太容易获得。
另一方面,“家庭友好型”电影可以服务于娱乐观众的目的,这些观众寻求一部简单的电影来与他们的孩子一起观看,而不需要采用各种各样的电影技术来获得电影伟大的赞誉。
然而,这两个群体对一些类型有相似的反应。例如,看起来音乐剧和 T2 戏剧在观众和评论家中普遍受欢迎。
让我们对电影上映的年份进行类似的分析。随着时间的推移,这两个群体各自的评级会不会遵循一种相似的、甚至相反的变化模式?
图 4:按发行年份比较观众和评论家评分的线形图
上图表明,观众的平均评分随着时间的推移保持相当稳定,也许显示出略有下降的趋势。然而,这种下降趋势在更大程度上表现在批评家的行为中:他们的路线在所涵盖的 100 年中急剧下降。
这是否意味着,从评论家的角度来看,与上个世纪早期相比,如今广受好评的电影越来越少了?
嗯,不一定。值得注意的是图中的第三条线,它向我们展示了我们移动的时间越远,我们分析的电影数量就越多。
这可能是因为该数据集的创建者倾向于包含更多的新电影而不是旧电影,或者近年来数据的可用性更高。
然而,更有可能是因为现在每年制作的电影比 60 年前多得多。
随着独立影院等概念的出现以及电影流媒体平台的采用,可以说进入电影行业的门槛已经大大降低了。
这意味着随着时间的推移,电影院的分布可能会变得更加“稀释”:每年都会有更多的电影上映,以迎合更广泛的观众。
虽然这并不意味着高质量的电影已经消失,但越来越多的电影旨在安抚寻找简单娱乐方式的观众,而不是给评论家留下深刻印象,这不可避免地导致评论家平均评分的下降,而不会严重损害观众的普遍看法,因此可能解释了上述行为。
第三部分:确定评级行为的决定因素
让我们进入分析的最后一部分,通过实施一个简单的线性模型,我们将尝试确定每个群体评定行为的关键决定因素。
我们可以使用电影的年龄,播放时间,内容评级和类型作为解释变量,而评论家和观众的平均评级作为两个独立模型中的反应变量,然后我们可以进行比较。
图 5:为观众和评论家评级实现的线性模型的系数
对于不熟悉线性回归基础的读者来说,变量的系数描述了变量的增量变化对响应的估计影响。
在这种模式的背景下,这意味着,例如,我们可以预计一部电影作为一部纪录片会将评论家的平均评分提高 27.9 分。
根据对模型结果的解释,我们可以看到,在这两种情况下,电影类型对每个群体的评级行为的影响都比我们在模型中包括的其他变量大得多。
除了一些例外,许多类型在方向和程度上对两个群体的行为有类似的影响,其中纪录片和动画电影对两个群体的评级有最大的积极影响。
不同之处在于像恐怖片这样的类型,它对收视率的负面影响远远大于对评论家的负面影响。西部片虽然对两个群体的影响力都相当弱,但却表现出了各自相反的相关性:对评论家来说是正面的,对观众来说是负面的。
为了支持上一节分析中显示一段时间内平均评分的图表,年龄变量对两组都产生了正系数,对批评者的影响更大。然而,与流派变量相比,模型估计其影响极小,就像运行时的情况一样。
另一个值得注意的有趣差异是电影内容分级的影响。虽然对评论家的行为几乎没有影响,但这种影响在观众中更明显:更严厉的内容评级会导致平均分数下降。
这也符合之前在分析中讨论的理论。既然我们发现观众对儿童家庭电影的反应更积极,那么电影内容分级的严格程度(因此,通过推理,它包含的露骨内容的程度)与这个群体的享受程度负相关是有道理的。
结论
这篇文章使用了来自烂番茄的数据来比较电影评论家和网站普通用户的评分行为。在采用多种技术分析数据后,我们确定了以下关键要点:
- 这两组人各自的行为模式有明显的不同,观众比批评家更有可能给出慷慨的评价
- 这两组人对我们的数据中出现的不同类型有不同的反应
- 随着电影发行年份的增加,影评人的平均评分显著下降,而观众的评分保持不变
- 根据我们的模型,类型是两组中分级行为的主要决定因素,然而观众对电影的内容分级表现出更大的敏感性
当然,触及这种分析的局限性是值得的。电影本质上是一种艺术形式。
虽然我们可以测量某些方面来形成分析性的论点,但电影中总会有一些无法定量测量的元素:电影的特征会影响我们对它的感受,我们无法用数字来描述。
然而,我希望尝试使用以数据为中心的方法来探索对电影的兴趣仍然是一个有趣的阅读!
图表背后的代码
如果你有兴趣看看我用来分析数据集和构建本文可视化的 Python 代码,请随意查看我的 Github 上的这个库。数据集创建者的确认包含在存储库的自述文件中。
图卷积网络的工作原理是什么?
GCNs 背后的数学直觉的分解。
到目前为止,如果您一直在阅读本系列文章,您可能已经了解了一些图论知识,为什么我们在数据科学中关注图结构数据,以及什么是“图卷积网络”。现在,我想向您简要介绍一下这些东西是如何工作的。**
对于本领域中可能对这个主题有所了解的朋友,我将谈论 Kipf & Welling 的 2017 年关于半监督学习的图卷积的论文(Thomas Kipf 在这里 写了一个对这个概念更容易理解的解释 )背后的直觉,尽管自改进这种方法以来已经开发了其他方法。我的目标是介绍数学概念,而不是提供该主题的广泛概述。
现在,如果你不是数学家、数据科学家,甚至不是计算机科学家,先不要离开。目标是将学术论文和概念分解,以便任何人都能理解。请在最后留下回复,让我知道我是否实现了这个目标!
我们走吧!— GCNs,目标是什么?
在 Thomas N. Kipf 的博客文章中,他说图卷积网络的目标是:
“……学习图 G =(v,e)上信号/特征的函数”
但这到底意味着什么呢?我们来分解一下。
对图或节点进行某种预测或分类有不同的方法。但我们关注的是图卷积网络,对于分类关注的是* 图。* 这意味着,为了提供一个具体的例子,对于类似于**蛋白质的东西,*其具有由整个图形表示的结构:
蛋白质的基本结构,其中多个氨基酸通过肽键连接,由来源提供。
我们可能需要一种方法来嵌入这个图的特征,这样我们就可以**对我们正在查看的蛋白质进行分类。****
所以,让我们回到我们上面的引用。我们想学习图上特征的函数*。换句话说,我们希望了解特征之间的关系——在蛋白质的例子中,这可能是某些原子之间的特定键表示,或者原子表示本身——给定我们图形的特定网络结构。换句话说: 节点和键 (边缘)的组合如何影响我们正在观察的 蛋白质(目标标签)?*
免责声明:就像这篇文章中的许多事情一样,这有点过于简单化了。这样做的目的是分享 GCNs 背后的直觉,并让它变得容易理解。对于完整的解释和数学证明,我鼓励你更深入地研究底部引用的论文。
***为什么不是普通的卷积神经网络?*我们已经在之前的文章中谈到了传统机器学习&深度学习模型在面对任意结构化(非欧几里德)数据时面临的困难。GCN 允许我们将图表结构嵌入到二维表示中,克服了如果我们试图使用传统 CNN 对该图表进行分类时会遇到的障碍。
你可以把嵌入想象成一个三维分子模型,像这样:
照片由 Unsplash 上的特里·维利迪斯提供
并把它画在一张纸上,以便我们随身携带和记忆。
为了理解如何实现,让我们看一下正向传播。
我可能会把我的学习风格投射到我的读者身上,但是为了真正完全掌握 Kipf 提出的公式,我必须回到基础,回顾一下向前传播。让我们花一点时间来看看正向传播公式:
正则神经网络的前向传播方程。图片来自来源
不要让这个公式吓到你。它只是说在下一层的的特征表示等于在当前层的权重上执行某种激活函数的结果乘以当前层的特征表示加上当前层的偏差。**
*也许那仍然感觉是稠密的,如果是的话,那也没关系。你可以这样想:*这个公式表示的是我们为了得到一个输出而采取的一系列计算步骤,将结果通过我们神经网络中的每一层,直到 i 是我们的最终(输出)层。(如果你知道编程的基础,你可以把它概念化为一个 for 循环:“对于我们神经网络的每一层,执行这个计算以返回一个最终值。”)
我们的激活函数*(表示为 sigma) 可能是类似 ReLu 的东西,我们的特征表示可以被认为是以我们的蛋白质为例,其中我们分子中的每个原子都由它的原子序数表示(为了我们的简单例子)。然后,我们希望最后一层的最终输出是我们正在查看的蛋白质的表示— 我们的分类。现在不要太担心偏见,如果你不知道它是什么,我们不会在本文中进一步讨论它。*
签到
如果你对这一切有点陌生,你的大脑现在可能正在受伤,这没关系。在我们继续之前,让我们花一点时间来回顾和消化我们所学的内容
1。GCN 的一个目标是将任意结构的图嵌入到网络的二维表示中。
2。此外,我们想了解图上的特征的功能——我们想知道内容如何影响其他内容(我们图中的特征如何影响我们的目标)。
3.我们已经回顾了常规神经网络的前向传播,并且理解了这个等式告诉我们什么。**
正向传播——这与 GCNs 有什么关系?
与任何神经网络类似,图卷积网络需要一种方法来通过层向前传播值以实现其目标。然而,假设我们的数据不是欧几里得的,我们需要对上面讨论的常规正向传播方程做一些小的调整。
首先,我们需要一种计算方式来表示我们的图形。如果你一直记得我关于图论的第一篇文章,或者如果你记得你的数学(或者,对于房间里的计算机科学家来说,你的数据结构课程),你会记得表示一个图的一种方式是用一个邻接矩阵。让我们看一个例子:
无向图的邻接矩阵,如左图所示。
我们的邻接矩阵实际上是一个稀疏矩阵*,其中我们有代表节点标签的行和列,以及任何两个节点是否相互连接的二进制表示。0 对应“无连接”,其中 1 代表连接(一个边沿)。*
所以,我们有了 GCN 难题中第一个缺失的部分:我们的邻接矩阵,我们称之为 A.
现在,我们需要确保将 A 插入到我们的传播方程中。由于我说过不要担心偏见(并且由于我引用的文章中的图像也省略了图像中的这个值,这样做很好),您在下面的表示中看不到它。
让我们看看目前为止的等式:
图卷积网络的前向传播方程。图片由来源提供,添加了我自己的注释。
但是我们还没有完成。有两个问题:
- *如果我们只查看 **A,*我们将查看给定节点的所有邻居,而不是该节点本身。我们一会儿会处理这个问题。
- 什么是 A?正如我们最初讨论的那样,一个没有被规范化。由于我们必须将我们的权重和特征表示乘以我们的稀疏邻接矩阵 **A,**我们可以预计,特征表示和权重的比例将随着 **A 的比例而显著变化。因此,A*是归一化的 A。*让我们来讨论这意味着什么:
*Kipf & Welling 引入了一种方法来规范化处理第二个问题的。首先我们需要 对角节点度矩阵 , D. 如果那句话感觉很混乱,可以看看链接的文章!归一化 A 的方法之一是乘以 **D,*但是基普夫&韦林向我们介绍了另一种叫做对称归一化的方法。这相当于:
邻接矩阵(A)和度矩阵(D)的对称归一化表示,承蒙来源。
当我们提供最终方程式时,您将看到这一点!现在,我们已经解决了我们的正常化问题,我们就快到了。我们还有一点要补充:自循环。
我们想要学习我们的图中所有节点的表示,这意味着我们需要改变我们的图。因为这已经是一篇很长的文章了,我将再次引用 Thomas Kipf 在他的博客中的话来解释:
“……与 A 相乘意味着,对于每个节点,我们对所有相邻节点的所有特征向量求和,而不是对节点本身求和(除非图中存在自循环)。我们可以通过在图中强制执行自循环来“解决”这个问题:我们只需将单位矩阵添加到 a 中。
这里,我们到了下一步:加强自我循环。这意味着我们需要我们的节点也连接回自己,看起来像这样:
单个节点上的自循环,由源提供。
如果你不能 100%确定 Kipf 在他关于单位矩阵的引用中所说的话,请记住单位矩阵是一个 n x n 矩阵,1 的在主对角线上(左上到右下),其他地方为零:
单位矩阵n×n,承蒙* 出处 。*
其中 n 在我们的用例中是邻接矩阵 A. 的维数
现在,我们已经用 A 的度矩阵对 A 进行了归一化,并通过添加我们的单位矩阵来实施自循环,我们得到了图卷积网络中前向传播的最终方程:
图卷积网络的前向传播方程——推导邻接矩阵(A)的层(l)特征表示函数的方程,由来源提供,并添加了我自己的注释。
让我们分解这个新方程。
GCNs 前向传播方程的第一条款。
这一块写着:“给定邻接矩阵 A ,我们的特征对于层 l 的作用”。这就是我们希望为解决的问题。记住我们最初的目标之一,为一个图寻找特征的函数。
GCNs 前向传播方程的第二条款。
让我们分解第二部分。请记住,这是等号的右边-这是我们用来寻找我们的功能的功能。
记住 sigma (𝝈)代表一个激活函数(比如 ReLu)。所以这个子句表示的是β的对角度矩阵( D̂ ) 上的激活函数的结果,这是我们添加到单位矩阵的邻接矩阵(a),我们已经使用“对称归一化”对其进行了归一化。这些然后乘以我们的特征表示和我们当前层的权重, l.*
等等——让我们后退一步。
让我们谈谈拼图的最后一块。还记得我们如何谈论我们的蛋白质例子,以及我们的节点如何可能有一个标签,像一个原子的名称或缩写(即:碳,或 C),以及一个特征表示,可能像它们的原子序数?
本例中的这些表示成为我们的特征表示向量,对于上面的等式,表示 l. 的 H
用几句话概括一下
*你刚刚学习了如何找到给定图的特征的*函数,给定图的邻接矩阵 A、d、
您已经回顾了前向传播,并了解了它与图卷积网络的不同之处。您已经了解了在处理任意结构化数据时需要考虑的一些重要注意事项,比如拥有或创建自循环以及规范化邻接矩阵的重要性。
不错!你已经为下一步做好了充分的准备——这一步很快就会到来——这一步应该会有趣得多:用 gcn 对东西进行实际分类。
如果您想在下一次之前了解更多,请查阅所有在本文写作过程中非常有价值的论文和资料:
- 图卷积网络半监督分类, Kipf & Welling (ICLR 2017)
- 图卷积网络,托马斯·基普夫
- 理解用于节点分类的图卷积网络,Inneke Mayachita
注意事项:
- *GCNs 也可以用于节点级分类,但是为了简化示例,我们在这里不关注这一点。
- *这代表‘D-hat’,Medium 的数学符号支持有点欠缺
是什么让 NLP 成为机器学习的一个独特分支?
机器学习时代从分析存储在电子表格、传统数据库甚至 CSV 中的二进制数据开始。随着这些模型的巨大成功,数据科学家将这些技术扩展到文本数据。文本数据与处理二进制数据有什么显著不同?在这篇简短的文章中,我将给出一些令人信服的理由,并给出处理文本数据的完整流程。让我先简单描述一下二进制数据预处理的流水线。
二进制数据预处理流水线
存储在传统数据库中的数据很少是干净的。几个数据点可能包含缺失值(空值),所以您从清理数据开始。数据集可能包含许多相关列-通过消除任何不需要的列来减少列数(要素)。各个列中的数据可能有很大的范围-您将需要缩放这些列。在做了这样的预处理后,你的主要任务是减少特征数;计数越高,训练时间和资源需求就越多。现在,让我们看看文本数据需要什么样的预处理?
是什么让文本预处理如此不同?
一个数据库表通常包含几列——这个数字以十为单位。数据库中的每一列都是 ML 算法训练中的潜在候选特征。现在,考虑文本数据的情况。对于文本数据,每个单词或句子都被认为是潜在的特征。为了理解为什么,我们需要考虑我们试图在文本数据上开发的 ML 应用程序。
考虑一下我们都非常熟悉的电子邮件垃圾应用程序。机器学习模型在一封看不见的电子邮件中寻找一些冒犯性的单词,如果找到,则将相应的电子邮件标记为垃圾邮件。注意,我们在寻找单词。因此,对于模型训练,我们将把来自训练数据集的电子邮件文本标记为单词标记。使用监督学习,我们将使模型学习根据某些冒犯性词语的存在对电子邮件进行分类。
现在,考虑这样一种情况,你被要求训练一台机器,让它具有概括小说的能力。你很清楚任何一本书的封底段落。一份出色的总结会促使潜在买家购买。这是一个非常高级的 NLP(自然语言处理)应用程序。你需要将整个小说文本标记成句子,并挑选出最重要的句子作为书的摘要。
这两个例子肯定会让您明白为什么我们需要将文本语料库标记为单词或句子,而不是单个字符。现在,主要问题来了。任何文本段落都会包含成千上万的单词和句子。每个这样的标记都是 ML 模型中一个潜在的候选特征。我们必须大大减少这种特征的数量,以使训练可行。
NLP 的第二个最重要的需求是我们需要对单词和句子进行矢量化。与二进制数据相比,二进制数据已经是机器可读的格式,可以很容易地表示为张量。虽然文本数据中的单个字符是二进制格式(ASCII -机器可读),但在 NLP 中,我们处理单词和句子。我们需要把这些转换成向量。为此,我们使用 Word2Vec、GloVe 等工具。
为了进一步理解为什么文本处理与处理二进制数据如此不同,我将给出完整的文本预处理管道。
文本预处理管道
我们对文本预处理的目的是减少我们的单词词汇量。因此,您可能想做的第一件事是从文本语料库中删除所有标点符号。请注意,标记器很可能会将标点符号作为单词标记。您可以使用正则表达式来删除所有这些不需要的字符。接下来,您将删除类似于"、、、、、、*、*等单词。这些词作为特征没有什么意义。我们称之为停用词。
根据您的应用程序类型,您可能还想删除数字或将其转换为文本。当你的词汇表中只包含独特的单词时,将所有单词小写也有助于减少单词数。单词“ John ”和“ john ”对于机器学习模型来说意义相同,而记号赋予器为这些单词创建两个不同的记号。
此外,可以通过使用词干化和词汇化来减少词汇量。两者都将屈折词还原为其词根形式,除了词汇化确保词根属于该语言这一事实。词形变化是通过给一个词加上前缀、后缀或中缀来修饰它。例如,单词“播放”、“播放”、“播放”将被简化为常见的词根“播放”,这也是英语中的有效单词。词干分析器会将单词“麻烦的”简化为“麻烦的”,同样,在去掉后缀后,它也会将“麻烦的”简化为“麻烦的”。在这两种情况下,精简的单词在我们的词典中都不是有效的单词。如果只需要语言中的有效单词,就使用词汇化。
完成文本预处理后,您将标记整个语料库,使其准备好输入到您的机器学习模型中。
所有这些过程都大大减少了字数。我列出了下面的各个步骤,供您快速参考。只要你理解每一步背后的目的,就没有必要按顺序执行这些步骤。
- 删除标点符号
- 删除停用词
- 删除/转换数字
- 下部外壳
- 选择独特的单词
- 词干化和词汇化
- 标记化
对于机器学习算法来说,在运行所有上述过程后,单词计数通常仍然很高。我们认为每个单词都是一个特征,我们必须进一步减少它的数量。根据我们正在开发的 NLP 应用程序的类型,我们将使用更多的技术来减少这个数量。
高级加工
文本数据是非结构化的,我们的词汇表中的单词没有固定的长度。机器学习算法需要固定长度的输入。这个向量的长度等于词汇表中的单词数。对于大型文本语料库,这个数字仍然很高。为了使它变得更小,你可以使用一种叫做单词袋的技术。在这项技术中,您将文本语料库中最常用的单词收集到一个包中。它们出现的频率决定了最常见的单词。这个袋子的大小决定了向量的长度。
高频这个词并不意味着它与表示文档中的信息高度相关。像“这个”和“那个”这样的常用词将具有非常高的频率,但是不携带与文档相关的信息。于是,就有了 tf-idf(词频——逆文档频率)的概念。你也可以使用二元语法和 n 元语法来减少你的特征数。对这些技术的描述超出了本文的范围,但是您现在肯定可以开始理解为什么 NLP 在机器学习中有特殊的待遇。
使用 NLP 进行文本处理的要求不止于此。你需要 NLU(自然语言理解)来开发语言翻译等高级应用程序。像 LSTM RNN 这样的神经网络架构就是为此而开发的。这现在被变压器架构所取代。我们现在有许多像伯特、GPT 等模特。对于使用文本数据类型的高级 NLP 应用程序。
结束语
基于二进制数据集的机器学习模型开发是琐碎的,因为数据库表中固有的功能数量有限,并且它们具有机器可读的数据格式。与此相反,在文本数据上开发模型非常具有挑战性。这是因为文本语料库的大小,并且考虑到每个单词都是训练数据集中特征的潜在候选。第二,将标记化的单词和句子表示成机器可读的数字向量格式是另一个巨大的挑战。
正如您在上面看到的,不仅需要详尽的文本预处理来减少特征数量,而且在开发 NLP 应用程序时还需要应用许多高级技术,如 BoW 和 tf-idf。更高级的 NLP 应用需要语言和上下文理解,我们有另一个分支叫做 NLU。你现在会很容易理解为什么 NLP/NLU 在机器学习中需要特别的关注和对待,这不是炒作。因此,作为一名数据科学家或机器学习工程师,你肯定需要获得 NLP 技能来处理文本语料库。
信用
https://medium.com/@poojagramo—复制编辑
是什么造就了一名高级数据科学家?
讨论高级数据科学家角色的技能和期望
图片来自 Unsplash 上的纳赫尔·阿卜杜勒·哈迪
我在数据科学家中看到的另一个常见问题是,*“我如何成为一名高级数据科学家?”*高级数据科学家的地位似乎非常主观,因公司而异。似乎有各种各样的答案详细说明了作为一名高级数据科学家意味着什么。在这里,我回顾并探讨了 PayScale、Cleverism、Zippia 和 KDnuggets 所讨论的标题。
探索高级数据科学家的头衔
看看 PayScale 对高级数据科学家的定义,很明显他们期望机器学习、Python 和大数据分析技能。这三个方面与工资水平高于平均水平的人相关。Payscale 的分析中提到的一项技能是领导力。
从那里,我研究了聪明主义如何定义高级数据科学家的角色。回顾他们的定义,很明显,高级数据科学家经常监督团队中的年轻成员,并被视为他们的导师。他们也是在数据科学团队中提供高级专业知识的个人,他们希望在整个企业中推进分析、工具和技术的采用。
Clerverism 通过将其进一步细分为管理、分析、战略、协作和知识类别,扩展了他们对高级数据科学家的定义。在这里,他们继续详细介绍高级数据科学家如何在快节奏的环境中工作,以保证团队工作的完整性、准确性和充分性。
像 PayScale 一样,Cleverism 也提到了基本技能:机器学习、Python / R 和数据挖掘。聪明主义指出,其他人没有的一项关键技能是沟通。其他人则希望高级数据科学家在协作和交付工作成果时具备出色的沟通技巧。当获取复杂的信息、输出和算法,并将其简化为关键利益相关者和管理层可操作的见解时,沟通就变得非常方便。
接着是 Zippia,他们记下了传统技能,如 Python、数据分析、机器学习和预测分析,工作通常集中在技术或金融领域。当进一步研究列出的其他技能时,似乎通常会在混合中找到特定的技术或编程语言。在他们的分析中,一项突出的技能是关于云技术,如 AWS 或 Azure,这对大数据有意义,因为它允许更多的计算能力来分析大量数据。在他们的文章中,Zippia 指出,高级数据科学家通常来自统计学、计算机科学和数学背景,这似乎与其他来源一致。
最后,ms ra Turp 在 KDnuggets 上的一篇帖子描述了初级和高级数据科学家之间的差异。本文开头写得很好,指出一个普遍的印象是,身居高位的人被视为无所不知,但事实是,你并不知道。你在一定程度上是专家,然后学习接手。数据科学领域正在快速发展,总有新的东西需要学习。与此同时,成为一名高级数据科学家不仅仅是拥有技术能力。
当你达到高级数据科学家的水平时,ms ra Turp 指出,你应该从不同项目的工作中获得更深入的数据科学主要概念和技术的知识。你已经达到了一个点,你有很好的经验,可以学习更高级的话题。此外,Turp 指出,你应该教导和指导更多的初级同事,与他们分享你的经验,以便他们能够从中学习。最后,文章称,高级数据科学家不再只是从事项目工作,而是领导项目,并对项目的成败负责。
高级数据科学家的常见主题
在回顾了这些不同的文章,了解了成为一名高级数据科学家意味着什么之后,我挑选出了一些共同的主题:
- 他们有很强的技术能力,可以完全掌控待办事项中的一个重要特性。他们可以与关键利益相关者和主题专家合作,并执行任何必要的研究来实施他们的工作。他们有分析和批判性思维能力。
- 他们可以对问题区域进行故障排除,并研究解决问题的方案。如果他们对问题不确定,他们可以研究和学习如何解决问题,或者与他人合作来帮助他们。
- 他们可以指导更年轻或经验更少的人,并教给他们所学到的东西。他们可以领导其他为他们的项目做出贡献的成员,并与他们有效地合作。
- 他们可以着眼于“大局”,了解他们对企业的价值所在。他们可以分析用户需求,了解差距在哪里,并领导整个公司进行变革以采用数据科学实践。他们看到企业的需求,为这些需求设计解决方案,并为公司提供积极的回报。
- 他们展示了出色的沟通和协作技能,能够向技术和非技术受众解释他们的工作。他们对自己的工作有很好的记录,并且注重细节。他们可以与不同团队的其他人合作,共同完成一个项目。
- 他们对自己的项目负责,并能完成工作。他们对自己领导的项目的成败负责,并能与其他人合作以保持进度。
- 技能:数据挖掘、Python / R、机器学习、领导力、沟通、协作、大数据分析、云、预测分析、知道如何学习、导师
最后的想法
总而言之,这些不同的公司在描述高级数据科学家的方式上有许多相似之处和不同之处。具体要求可能因公司而异,但总有一些突出的主题。我的建议是找到一个你喜欢的数据科学领域,并专注于发展你在该领域的技能。与您的公司和经理合作,了解成为高级数据科学家的要求,并确定如何改进才能实现这一目标。
贵公司如何定义高级数据科学家的角色?你认为该职位有哪些有价值的技能?
如果你想阅读更多,看看我下面的其他文章吧!
</7-lessons-learned-from-7-months-of-remote-mentoring-b9cebf0cf222>
管理者应该从数据科学家那里期待什么
办公时间
关于经理问数据科学家什么以及他们应该问什么的神话
数据科学进入了大公司的世界,数据就在那里。这类公司的经理们经常会问一些他们实际上并不需要的东西,并且忘记假装拥有那些唯一有用的东西。
“我每个月要一个算法”。是的,我曾经听到有人说过类似的话,恐怕不止我一个人这样说。有多少次一个经理要求你建立算法?一切似乎只与算法有关,好像它们是唯一值得的东西。
但算法不是一切,也不是最重要的。在他们之外还有一个更有趣的世界。所以,如果你是一名经理,不得不雇佣一名数据科学家,那就帮你的公司一个忙,开始要求这些东西吧。
数据分析
为贵公司工作的数据科学家必须有庞大的数据分析背景,有扎实的技能。在应用任何算法之前,必须对数据进行分析,因此您的数据科学家必须处理各种形式和格式的数据,从 SQL 表到 JSON 文档。是的,SQL。SQL 没有消亡,您的数据科学家必须掌握它,如统计、透视和 KPI 生成。
数据可视化
你不能花时间看数字或表格。您必须在几分之一秒内做出决策,因此数据科学家必须具备适当的数据可视化技能。您的 DS 必须能够使用图表和其他可视化工具来表示信息。一个非常好的解释性图表远胜于一张充满文字和数字的 Powerpoint 幻灯片。假装图表,易于阅读的可视化和简单的仪表板。正确的图表可以在项目中发挥作用,有时是你需要的唯一可交付成果。
信息第一
数据科学家提取隐藏在数据背后的信息。记住:数据是容器,信息是内容。你知道你的容器,所以数据科学家必须能够打开它,揭示里面的东西。你是经理,你需要信息。这个道理是没办法逃避的。商业是由根据经验处理信息的人创造的。所以,不要要求数据表或 Excel/CSV 文件。经理不应该质疑任何事情。必须以简单和综合的方式向他们提供正确的信息,例如可视化。因此,请确保您的数据科学家知道数据和信息之间的区别,并且请确保您自己首先知道这一点。
预处理
数据必须妥善处理,就像威尼斯玻璃一样。预处理是让数据科学家处理数据的一套技术,目的是使数据呈现正确的形状。这是一项重要的技能,必须掌握,否则你得到的玻璃不会有正确的形状,必须破坏和重新制作。所以,问问你的数据科学家,他们通常采用哪种预处理管道。正确答案是清理、编码、转换、降维的特征选择。如果你的数据科学家不知道我在说什么,让他们看看我关于预处理的在线课程。
功能就是一切
特征是与机器学习相关的数据科学项目中最重要的部分。特征,而不是模型。数据科学家必须使用必要的特征选择技术正确选择特征。这非常重要,你不能贬低这一点。合理的少量特征将使您提取数据背后的信息,解释事情发生的“原因”。数据解释“什么”发生,特征重要性分析可以帮助你理解“为什么”。一些用于减少特征数量的技术是,例如,递归特征消除和基于过滤器的特征选择。在模型准备好之后,你必须计算特征的重要性,例如,使用像 SHAP 这样的技术。通过这种方式,您可以看到特征如何相互作用以产生最终结果。这是一条非常庞大的商业信息。我在我的关于机器学习的在线课程中解释了 SHAP 技术和其他特征重要性方法。
工具
数据科学家是数据和信息的工匠,因此他们必须能够使用多种工具。根据我的经验,Python 是数据科学的行业标准。然后几个库来了,像熊猫,NumPy,Matplotlib,Seaborn。深度学习,要 Keras 和 Tensorflow,PyTorch 作为选项。一些数据科学家可能知道 R,这很好,但如果您的公司一直使用 Python,可能不适合您的生产生态系统。这些是数据科学家必须了解的技术。
最后,模型
不要认为神经网络能解决你所有的问题。请不要这样做。神经网络是人工智能的一个迷人领域,但它们不是最简单的模型,也不能解释任何事情。请记住:模型必须做出正确的预测,这些预测必须随着时间的推移和看不见的数据保持稳定,并且必须帮助您更好地理解业务信息。神经网络很少满足这些条件。对于少数记录数据集,训练好的神经网络可能会过拟合数据并且不稳定。显然,神经网络无助于解释任何事情,因为它们是黑箱。相反,问问你的数据科学家,他们是否使用更简单的模型,更容易训练,产生稳定的结果,并且可以解释。基于树的模型、贝叶斯模型和线性模型是这个问题的很好的答案。询问他们如何使模型的结果随时间保持稳定。正确答案是“我使用集合模型来减少方差”。不要忘记,当您必须处理表格数据时,简单的模型总是比神经网络更好。如果你处理图像、声音和复杂的时间序列,神经网络几乎是唯一可能的选择。但是您的公司可能有一个大型数据仓库,所以您需要处理表格数据。
结论
在本文中,我想帮助管理者向他们的数据科学家或有抱负的员工提出正确的问题。每天都有太多的失败发生,因为管理者没有要求正确的事情。技术有助于达到一个好的目标,但不能代替问正确的问题。
Gianluca Malato 是一名数据科学家,在http://www.yourdatateacher.com上教授机器学习和数据科学。你可以联系他获取信息和在线课程 这里 。
原载于 2021 年 9 月 6 日 https://www.yourdatateacher.comhttps://www.yourdatateacher.com/2021/09/06/what-managers-should-expect-from-data-scientists/。**
如何使用微软的 Graph API 从 OneDrive、Outlook 等中查询、创建和分析数据
用来自 10 多个不同微软应用的数据构建你自己的 Django 仪表板
作者图片
从我的电子邮件、日历条目、云存储中的文件到团队中的工作组,我在电脑和手机上的很大一部分日常活动都是通过微软应用程序完成的。所有这些数据都存储在微软的云端,不管我喜不喜欢。好在微软提供了一个 API,允许它访问和控制大部分数据,所以为什么不用它来产生你自己的见解呢。
下面的截图应该让你知道我想用这篇文章传达什么。我想让你看看:
- 我对 API 本身的体验是什么,以及如何构建访问数据所需的查询
- 认证过程是如何工作的,它给你的应用程序必要的权限
- 你如何处理和可视化Django 中的数据
带有 Django 的简单仪表板应用程序—图片由作者提供
目录
Graph Quick Start —快速启动 Graph API 的方法
几年前,微软从 Live SDK 转到了 Microsoft Graph。Microsoft Graph 现在是访问 Microsoft 365 中所有数据和见解的 API。[1][2]
有几种方法可以开始使用 Microsoft Graph API。最快的方法是使用图形快速启动,它为认证过程创建一个新的应用 ID 和应用密码,并且已经为您提供了第一个示例项目。
(1)第一步,你需要定义你想要用来构建你的应用的语言。因为我更喜欢 Python,所以示例应用程序将是一个简单的 Django 应用程序。
选择作者的语言-图像
如果你对 Django 不熟悉,可以看一下我之前的一篇文章,里面尽可能简单的解释了 Django 的原理,包括了最重要的几点。如果你喜欢从头开始构建自己的应用程序,你也可以在微软文档中找到一个教程。
(2)选择语言后,快速启动会让您选择直接创建一个带有 App Secret 的新 App ID,稍后您会在授权过程中用到它。
要获得已注册应用的概览,您可以在 Azure Active Directory 下的 Azure 门户中完成。
Azure 门户——作者图片
(3)快速入门为您提供了第一个示例应用程序,其中已经包含了基本结构和身份验证流程。下载代码示例并将其保存在项目字典中。
Django 代码示例—图片由作者提供
代码示例的结构看起来像任何普通的 Django 应用程序。此外,YAML 文件oauth_settings.yml
包括用于认证的设置,例如所需的端点、应用 ID 和应用秘密。
项目结构—作者图片
安装要求
(4)为了能够第一次启动应用程序,您必须安装必要的 Python 包。
requirements.txt
提供了一种安装整个环境的简单方法。[3]由于应用程序有时需要特定版本的库,因此建立一个虚拟环境是有意义的。[4]为此,导航到您的项目目录并执行以下命令,这将创建虚拟环境virtualenv_graph
。
python -m venv virtualenv_graph
您将在项目文件夹中找到一个新目录virtualenv_graph
,其中包含 Python 解释器的副本。为了实际使用刚刚创建的环境graph-tutorial
,您必须通过执行批处理文件activate
来激活它,如下所示:
graph-tutorial\Scripts\activate.bat
激活后,您将在 CMD 输入行开头的括号中看到您的虚拟环境的名称。这表明您的环境当前已被激活。使用以下命令,您现在可以将所有必需的 Python 包安装到您的环境中:
作者图片
迁移—将更改传播到数据库
(5)以下命令将应用程序中使用的模型结构映射到数据库:
python manage.py migrate
这将为使用的 Django 应用程序django.contrib.auth
和django.contrib.session
创建一些默认表。
Django 默认表格-图片由作者提供
启动一个轻量级 web 服务器
(6)命令python manage.py runserver
在我们的本地主机上启动一个轻量级 web 服务器。除非另有说明,否则本地 web 服务器运行在端口 8000 和地址 127.0.0.1 上。
示例应用起始页—作者提供的图片
现在,您可以使用 Office365 帐户的登录数据登录。
OAuth 2.0—登录过程如何工作
在下文中,我将简要概述 OAuth 2.0 的功能,解释给定示例代码的作用。
OAuth 2.0 是一种行业标准的身份验证协议,允许用户授予第三方应用程序对用户资源的访问权限,而无需向应用程序提供您的长期凭据。[5][6]
这是可能的,因为 OAuth 授权层将客户机的角色与资源所有者分开。为了更好地理解这一点,我将尝试简要地解释哪些角色是 OAuth 工作流的一部分,以及它们是如何相互关联的。[5]
- **资源所有者:**授权访问资源的实体。在这种情况下,是你,最终用户,授权应用程序访问与你的 Microsoft 365 帐户相关的 Microsoft 云中的数据。
- **资源服务器:**受保护资源所在的位置。
- **客户端:**客户端是请求访问资源的应用程序,在这里是我们刚刚下载的 Django 应用程序。
- **授权服务器:**该服务器为最终用户(资源所有者)提供了认证他/她自己的可能性。正确授权后,授权服务器向应用程序发布访问令牌。
用于 Web 服务器应用程序的 OAuth 2.0 图片由作者提供(灵感来自[7][8])
在下文中,我将向您展示如何使用模板应用程序通过 Python 启动授权工作流。
从 Microsoft Identity Platform 请求访问令牌
如前所述,应用程序首先需要向认证服务器发送请求。因此,我们正在使用 OAuth 2.0 的微软身份平台实现。[7]
单击 Sign-in 按钮调用tutorial.views.py
中的 sign_in 函数,该函数又使用get_sign_in_url
函数形成请求 URL。
在授权流程的第一步,客户端应用程序将用户指引到/authorize
端点。请求包含了【7】:
Application ID
,在注册时分配给你的应用Scope
,定义应用向用户请求的权限。Redirect URI
,可通过您的应用程序发送和接收认证响应。
授权过程中需要的所有参数都存储在 YAML 文件oauth_settings.yml
中。
Django 中的 OAuth 2.0 工作流—图片由作者提供
(3)在用户对他/她自己进行身份验证并因此授予应用程序访问权限后,身份验证服务器将使用授权码进行响应,并将用户重定向到您指定的重定向 URI。(4)连同您的App ID
和App Secret
,您可以向授权服务器请求一个Access Token
和Refresh Token
。(5)然后访问令牌给你访问 API 的能力,至少在scope
中定义了所需的权限。
Django 中的 OAuth 2.0 工作流—图片由作者提供
让我们可以访问所请求的资源。在接下来的内容中,我将向您展示如何检索您正在寻找的数据。
使用图形 API 查询数据
为了找到正确的数据端点,我们可以使用图形浏览器。它已经给了你一些关于你的帐户和各种微软应用程序的请求。如果您正在寻找给定查询没有提供的信息,那么看一下文档是值得的。(例如用于 OneDrive
我对我的单驱动器存储中的数据特别感兴趣。然而,这个概念对于 SharePoint、OneNote、Outlook、工作组等等是相同的。
您可能需要为oauth_settings.yml
中的 scope 变量添加适当的权限。你会在文档中找到权限的概述。为了在一个驱动器中读写文件,将Files.ReadWrite.All
添加到scope
中。例如,我想检索文件夹/Bilder/Eigene Aufnahmen
中所有文件的信息。连同刚刚生成的访问令牌,我向/drive/root:/<path>:/children
发送一个 GET 请求,将数据发送到指定路径中的所有文件。
视图函数one_drive
的最后一行是呈现 HTML one_drive.html
,我现在创建它来打印我刚刚从 API 获得的数据。HTML one_drive.html
类似于calendar.html
,它已经是示例应用程序的一部分。
现在我们只需要给路由器urls.py
添加查看功能one_drive
。
# <tutorial.urls.py>from django.urls import path
from . import views
urlpatterns = [
...
path('calendar', views.calendar, name='calendar'),
path('one_drive', views.one_drive, name='one_drive'),
]
现在http://localhost:8000/one_drive
向我展示了一个 HTML 表格,其中包含文件夹/Bilder/Eigene Aufnahme
中的所有文件。
用 Plotly 分析和可视化数据
对于数据的可视化,我使用 Plotly。如果还没有这样做,用 pip 按如下方式安装和:
pip install plotly
下面我感兴趣的是照片拍摄的时间。
为了清晰起见,我按照拍摄的日历周总结了这些照片。
因此,我在字典files['values']
中添加了一个新的键-值对,它被定义为创建日期的日历周。之后,我将字典的值转移到熊猫数据框中。Pandas 为我提供了许多操作数据框的方法,其中一种我将在下面使用。操作groupby
基于属性CreationWeek
对所有条目进行分组,方法.count()
对条目的出现次数进行计数。
想象成柱状图,整个事情看起来是这样的。这是一个简单的例子,展示了如何逐步构建自己的 dashboard 应用程序,向您展示您的 Microsoft 服务的最重要的关键数据。
作者用 plottly-Image 将数据可视化
总结
在这篇文章中,我试图分享我使用 Microsoft Graph API 的经验:
- 使用微软身份平台的认证流程
- 通过图形 API 查询数据
- 使用 Plotly 可视化数据
除了检索数据,图形界面还提供了广泛的 POST 选项。可以通过 HTTP 请求添加日历条目、上传文件或创建新的微软团队频道。这可以帮助你自动化你的过程。
参考
[1]微软图形概述,https://docs.microsoft.com/en-us/graph/overview
[2]从 Live SDK 迁移到 Microsoft Graph,https://docs . Microsoft . com/en-us/one drive/developer/rest-API/concepts/Migrating-from-Live-SDK?view=odsp-graph-online
[3]皮普安装,【https://pip.pypa.io/en/stable/reference/pip_install/】T21
[4]虚拟环境和包,https://docs.python.org/3/tutorial/venv.html
[5] OAuth 2.0 授权框架,https://auth0.com/docs/protocols/protocol-oauth2
[6] OAuth 2.0 Workflow,https://www . IBM . com/support/knowledge center/en/ss4j 57 _ 6 . 2 . 2 . 6/com . IBM . Tivoli . FIM . doc _ 6226/config/concept/OAuth 20 Workflow . html
[7]微软身份平台和 OAuth 2.0 授权代码流,https://docs . Microsoft . com/en-us/azure/active-directory/developer/v2-OAuth 2-授权代码流
[8]从 web 服务器应用程序调用安全 API,https://oauth . vlaanderen . be/authorization/Help/API/AuthorizationCodeGrant
在你的圣诞晚会上会放什么音乐?
通过数据探索圣诞图表
尤金·日夫奇克在 Unsplash 上拍摄的照片
几十年来,争夺英国圣诞排行榜第一名的斗争一直激烈,艺术家们发布了季节性歌曲和圣诞主题视频,或者试图用可靠的流行歌手来超越节日曲调。
就在我们说话的时候,YouTube 上的 LadBaby 正在试图打破由披头士在 1967 年创下的最多圣诞节冠军的记录。
为了融入节日气氛,我们希望在平安夜宣布获胜者之前,使用 Python 来探索这一现代圣诞节传统背后的数据。
目标是:了解年度趋势是如何发展的,以及是什么让圣诞歌曲流行起来。
入门
让这个圣诞活动开始的最好方法是找到一些可靠的、全面的关于我们假期收听习惯的数据。
我们将使用的数据集包括所有英国圣诞节排名第一和第二的信息,以及来自官方图表的 2011 年至 2020 年的十大圣诞图表。
从 2017 年到 2020 年,我们还将通过 Spotify 图表使用每周 12 月的前 200 个流。此外,还补充了 Kaggle12 月最受欢迎歌曲的信息。
名字有什么意义?
你知道吗,只有七分之一(准确地说是 14.5%)的圣诞排行榜有圣诞主题的标题?
这些如图 1 所示,包括邦迪乐队的《他们知道今天是圣诞节吗》,这是唯一一首超过一次的歌曲;事实上是三次。
占据圣诞节排行榜第二位的歌曲数量相当,它们使用了圣诞节术语,玛丽亚·凯莉曾两次位居第二,但从未登上榜首。
图 1:圣诞排行榜上排名第一和第二的圣诞主题歌曲数量(图片由作者提供)
不要做吝啬鬼
想帮助你的歌曲在“给予”季节登上排行榜吗?迎合听众的慈善天性。
占据英国排行榜榜首的歌曲中有 10 首是慈善单曲。
这意味着 14.5%的圣诞歌曲是由支持值得关注的事业的团体演唱的。其中包括 Band Aid(三次),四个不同的合唱团,一个名为正义集体的名人合唱团,军嫂,NHS 合唱团,以及一个为王太后生日举办的学校合唱团。
在过去的三年里,LadBaby 已经连续举办了三次圣诞慈善活动,用香肠卷主题的封面为 Trussel 信托基金筹集资金。
但是,在所有这些慈善单曲中,只有邦迪乐队曾经重新制作过。
你相信布洛比先生吗?
虚构人物两次荣登圣诞排行榜榜首:建筑师鲍勃和英国偶像布洛比先生。不幸的是,Blobby 先生的圣诞热门歌曲《Blobby 先生》被誉为有史以来最糟糕的歌曲。
同样数量的虚构人物取得了第二名:1997 年的天线宝宝,以及 1998 年《南方公园》中的厨师,他被辣妹组合连续第三年的圣诞节第一名拒之门外。很不幸,主厨。
Wombles 夫妇和 Tweenies 夫妇也分别在 1974 年和 2001 年出价,但都不高于圣诞节那周的第五名。
另一个值得注意的新奇事物是“驴子多米尼克”,在 2011 年的圣诞综合报道中排在第 3 位,此前 BBC 广播 1 台发起了一场运动来帮助它达到第 1 位。
图 2:圣诞节销量第一的歌曲类别(作者图片)
再呆一年
我们认为是经典圣诞歌曲的单曲中很少能进入第一名。事实上很少有人成功过。
著名的重击!s 的《去年的圣诞节》是销量最高的单曲,但却从未登上榜首,直到 2020 年才最终获得成功。它现在保持着从释放到达到 1: 36 年之间最长时间的记录。(这可能是由于 Whamageddon 的出现,这是一种游戏,人们在圣诞节前会主动避开这首歌。)
在所有的圣诞排行榜冠军中,只有六个在 Spotify 上有很高的流媒体播放量。
官方图表数据考虑到了视频流,因此在过去三年中,圣诞排行榜第一名一直由“LadBaby”保持,他在 Youtube 等流媒体平台上成名,并在 iTunes 和亚马逊上购买歌曲。
在 Spotify 上播放量最高的排行榜中,有三首歌包含了“圣诞节”这个词,显然是圣诞经典歌曲:斯莱德(Slade)——大家圣诞快乐(Merry Xmas Everybody),希金斯·史蒂文斯(Chris)——大家圣诞快乐(Merry Christmas Everyone),以及 Mud——孤独的这个圣诞节(Lonely This Christmas)。
克里夫·理查德的《槲寄生与葡萄酒》每年都会播放,但非圣诞主题的排行榜也是如此,包括 East 17 的《再待一天》和艾德·希兰的《完美》。不过,后两个刚好有圣诞主题的音乐录影带。
12 月份圣诞歌曲涌入排行榜,极大地扩大了所有歌曲的年龄分布。除此之外,图表中的发布时间不会超过 2016 年。
图 3:2017–2020 年 12 月按年份分类的数据流(图片由作者提供)
从 80 年代到 00 年代,发行了大量的圣诞经典歌曲,2000 年代的假日单曲还没有达到流行的高度。
新的圣诞版本似乎最初出现在图表中,但近年来,有一种趋势是旧版本重新进入圣诞前十名。
在 2011 年至 2015 年的任何圣诞排行榜中,只有两个条目来自往年,但从 2017 年开始,每年都有至少两个节日最爱进入前 10 名,玛丽亚·凯莉的“我想要的圣诞礼物是你”[正确]自 2016 年以来每年都进入前 10 名。
图 4:每年圣诞节前十名排行榜的发布频率(图片由作者提供)
破解圣诞经典
那么,是什么造就了经典的圣诞歌曲呢?有哪些歌曲回归成为圣诞排行榜的中流砥柱?
图 5:12 月图表中每位艺人的歌曲数量,以及重新绘制的累计年数。 (图片作者)
有多种尝试在单一的重新发布和重新母带,成功的情况下,乔纳路易,克里斯雷亚和保罗麦卡特尼,他们都延长了他们的图表停留在这一战略。
数据显示,年复一年保持在排行榜上的单曲是牢固确立的圣诞派对必需品——想想维扎德、穆德、埃尔维斯、埃尔顿。
但是新的艺术家也在制作圣诞歌曲。利用他们贪婪的粉丝群,爱莉安娜·格兰德、酷玩乐队和贾斯汀·比伯近年来已经登上了排行榜。显然,成功、名声和庞大的追随者可以推动排行榜,不管这首歌是不是下一首《最后的圣诞节》。
迈克尔·布莱是一个突出的圣诞现象,他的专辑名副其实地命名为“圣诞”,这是一系列经典圣诞歌曲的现代录音,使他几乎和圣诞老人一样具有标志性。
他的圣诞歌曲比任何人都受欢迎,他的翻唱已经成为这些歌曲事实上的版本。例如,“它开始看起来很像圣诞节”在英国排行榜上排名第 7;但是宾·克罗斯比的原版在官方图表出现之前,佩里·科莫的第二个最成功的版本排在第 47 位。
图 6:大量流传的圣诞歌曲流派分类。(图片由作者提供)
仔细观察去年 12 月在 Spotify 上大量流传的不同圣诞歌曲的风格,可以发现大多数都是“成人标准”,即“老歌”。
正如我们之前看到的,获得圣诞热门歌曲的最佳策略之一是在 80 年代发行。除此之外,最适合流行圣诞音乐的流派是流行舞曲(尽管也有许多其他类型的流行音乐,占所有流派的 23%)和专辑摇滚。
X-Mas 因子
很多年来,《圣诞第一》都是当年的《X-Factor》赢家和其他艺人之间的直接竞争。
在播出的 17 年 X-Factor 中,获胜者七次获得圣诞节冠军。10%的圣诞节第一名归功于 X 因素的赢家,而 47%的 X 因素赢家有一个圣诞节第一名。
这些歌曲都不是专门以圣诞节为主题的。
有趣的是,X-Factor 的一些顶级人才,如 Little Mix,James Arthur 和 Louisa Johnson,在赢得比赛的那一年从未登上排行榜榜首。2014 年获奖的本·哈诺(Ben Haenow)直奔《圣诞节》第一名,但自 2015 年以来,他只有一首歌进入前 40 名。
一些突出的圣诞节异常现象是马特·特里,他的 X-Factor 首张专辑《圣诞节对我意味着什么》与其他 X-Factor 首张单曲不同,而丽安娜·刘易斯的圣诞热门歌曲《再睡一会儿》自 2013 年发行以来一直可靠地重新制作。
图 7:圣诞排行榜上 X- Factor 赢家的排行榜(图片由作者提供)
广告的力量
近年来,竞争最佳节日广告的公司数量激增,约翰·刘易斯确立了这一趋势,每年都遥遥领先。
如果你看过广告,你会知道它们包括一个经典热门歌曲的催人泪下的封面,以吸引所有年龄的人。其中一些非节日主题的歌曲已经成为圣诞节的必备歌曲。
加布丽埃勒·阿普林录制的《爱的力量》和莉莉·艾伦翻唱的《只有我们知道的地方》是两首登上排行榜第一的广告原声,尽管不是圣诞节排行榜第一。加布里埃拉·阿普林的封面自发布以来已经两次重新进入排行榜。
更多最近的广告歌曲已经登上排行榜,但没有一首歌曲在发行的那一年取得了超过 10 的峰值位置。也就是说,除了莉莉·艾伦的《只有我们知道的地方》(Somewhere Only We Know)的成功之外,该片自发行以来的八年中有六年都获得了票房冠军,并成为许多人的节日最爱。
另一个值得注意的通过广告进入圣诞排行榜的是 G-Eazy 和 Grace(现在的 SayGrace)的“你不拥有我”,它在弗雷泽之家的圣诞广告中占据了第六位。当时它的图表只有 44。
近年来的圣诞图表以不可预测著称。但是年复一年,我们听着音乐,穿越时间——从 Bing 和 Ella 到 80 年代浪漫、夸张的合成器——我们听到新的 bop,拥抱对过去圣诞节的怀旧。
那么 LadBaby 今年会通过废黜 Fab Four 而创造历史吗?
我想我会忙着用迈克尔和苏悦华的声音装饰我的大厅而无暇顾及。
使用 Filament 的协作 Python 笔记本完成了对这些节日数据的分析。
没人想到的是:AGI 会让所有人大吃一惊
人工智能
这就是为什么我们可能在不知道的情况下创造了 AGI。
里卡多·安南达尔在 Unsplash 上拍摄的照片
人们对人工智能(AGI)的兴趣如此之大,以至于我们可以用关于它的书填满整个中文房间。然而,你不会在他们身上找到任何结论性的发现或理论。没有人知道 AGI 会是什么样子,我们什么时候会实现它,或者我们应该如何进行下一步。如果我们没有关于 AGI 的答案,为什么有这么多关于它的书、文章和论文?
物理学家劳伦斯·克劳斯在与诺姆·乔姆斯基的对话中拿这个悖论开玩笑。他说“一个领域的知识和关于这个领域的书籍数量成反比。”有很多关于 AGI 的信息,但真正了解的却很少。
AGI 可以说是人类历史上最伟大的发明。我们一直在问关于我们独特智能的问题,但自从 20 世纪中期计算机科学革命以来,我们已经开始最大程度地追求这一追求。巨大的资金和兴趣支持了过去 60 年的人工智能研究,但我们离实现 AGI 仍然很远。尽管人工智能在某些任务上已经达到了人类的熟练程度,但它仍然显示出狭隘的智能。
GPT-3 &公司:我们离 AGI 最近
2020 年 5 月,OpenAI 的 GPT 3 号取得了最新突破。这个系统显示了比它的前辈更广泛的行为。它是用互联网的文本数据训练出来的,已经学会了学习;这是一个多任务元学习者。它可以从几个用自然语言写的例子中学习完成一项新任务。然而,尽管现在关于 GPT 3 号是 AGI 的争论已经尘埃落定——它离我们还很远——但它产生了一些疑问。
2020 年 7 月,OpenAI 发布了一个测试版 API,供开发人员使用该系统,很快他们就开始发现意想不到的结果,甚至连创造者都没有想到过。给定一套英文说明,GPT-3 被发现能够编写代码,诗歌,小说,歌曲,吉他标签,乳胶…因此,炒作变得疯狂,GPT-3 的受欢迎程度飙升,成为重要媒体杂志的头条新闻。
而炒作一出现,反炒作也不落后。专家和非专家试图降低炒作的语气。GPT-3 被描绘成一个全能的人工智能,但事实并非如此,这不得不说。甚至 OpenAI 的首席执行官 Sam Altman 也说这太过分了:“[GPT-3]令人印象深刻[……]但它仍然有严重的弱点,有时会犯非常愚蠢的错误。人工智能将改变世界,但 GPT 3 号只是非常早期的一瞥。”
人们开始寻找 GPT 3 号的局限性:它在哪里失败了,它不能完成什么任务,这是它的弱点……他们发现了很多——甚至可能太多。这可能是科技博客作者 Gwern Branwen 的想法。GPT 3 号并不完美,也不是 AGI,但是人们在 GPT 3 号应该成功的地方发现了失败。
为了展示科学的严谨性,格温汇编了大量已发表的例子,并重新测试了那些对 GPT-3 来说太难的例子。他争辩道提示(输入到 GPT-3 的描述或例子)经常被定义得很糟糕。他说,提示被更好地理解为一种新的编程范式,必须相应地加以处理:
“抽样可以证明知识的存在,但不能证明知识的不存在
如果提示写得不好,没有包括足够的例子,或者使用了错误的采样设置,GPT-3 可能会“失败”。当有人展示 GPT-3 的“失败”时,我已经多次证明了这一点——失败是他们自己的。问题不在于给定的提示是否有效,而在于任何提示是否 works."
他证明了人们在 GPT 3 号上发现的很大一部分弱点是他们在理解如何与系统沟通方面的失败。人们找不到 GPT-3 的极限,因为这超出了他们的测试方法。
极限的悖论
凡事都有极限。宇宙是有极限的——物理定律之外的事情是不可能发生的,无论我们怎么努力——甚至是无限的——自然数的集合是无限的,但它不包含实数的集合。
GPT-3 有局限性,而我们,那些试图发现它们的人,也有局限性。格温证明了在寻找 GPT 3 号的极限时,我们找到了自己的极限。不是 GPT 3 号没有完成某些任务,而是我们找不到合适的提示。我们的极限是阻止 GPT 3 号执行任务。我们阻止了 GPT 3 号发挥其真正的潜力。
这就提出了一个直接的问题:如果 GPT-3 的局限性经常被误认为是我们的局限性,我们如何精确地定义该系统能做什么或不能做什么的界限?如果没有办法将失败的是我们的情况与失败的是 GPT-3 的情况分开,未知变量的数量将大于方程的数量,从而不可能找到解决方案。
这可以扩展到我们未来创造的任何其他人工智能。如果 AGI 知道的比我们能评估的更多,我们只能通过观察它的行为来后知后觉地知道它能做什么或不能做什么。如果它最终变得有害,我们只有在事后才知道(就像 GPT-3 的偏向性所发生的那样)。
最终,我们是一个试图评价另一个有限系统的有限系统。谁能保证我们的极限在各方面都超越他们?我们有一个很好的例子说明情况可能并非如此:我们非常不善于评估自己的局限性。我们不断为自己能做的事情感到惊讶,无论是个人还是集体。我们不断打破身体和认知的极限。因此,我们的测量工具很可能达不到足够强大的人工智能的行动能力。
我们还没意识到,AGI 就来了
综上所述,一个非常可怕的问题出现了:我们能在不知道的情况下创造一个 AGI 吗?或者甚至没有能力最终知道它?我们的测量工具既不是无限的也不是无限的。我们可以创造一个无法评估其局限性的人工智能。GPT 3 号,不是 AGI(甚至也不接近),已经部分超出了我们的工具。如果这是真的,下面的假设场景是可能的:我们将越来越接近 AGI,我们的测量工具,定义我们在感官之上感知的现实,将保持落后。当我们最终到达 AGI 时,我们的工具不会反映它,尽管它是真实的,我们不会知道它。
因为我们在探索创造 AGI 的过程中是在黑暗中冒险,在不知道的情况下实现它不属于已知未知的范畴(我们知道我们不知道的事情),而是属于未知的未知的范畴。我们甚至不会知道我们不知道它。我们将继续相信,真正的现实是我们的工具告诉我们的。我们不会怀疑除此之外是否存在现实,因此,我们不会试图在那里找到任何东西。
这种可能性将保持不被评估,并永远进入未知的黑暗地方。在 AGI 决定展示自己之前,情况将会如此。然后,我们将不得不重新考虑我们所有的计划,并相应地落后几步。这并不意味着 AGI 将是有害或危险的,但不知道如此有影响力的东西总是一种风险。让我们希望 AGI 最终像《T4 I 机器人》中的桑尼一样友好。它会是一个很好的伴侣。
最后的想法
我们一直在想 AGI 会是什么样子,我们会如何创造它,或者什么时候……但是没有人想过当它发生的时候我们是否能够意识到它。我们的测量工具是有限的,我们改进它们的能力也是有限的。GPT 3 号已经表明我们的工具不够先进。图灵测试够了吗?我们能创造一个足够的测试吗?
AGI 会让我们大吃一惊。当我们不能评估我们正在询问的事物的存在时,我们现在问的问题似乎是不相关的。这是我们需要的第一个答案,我们很快就需要它。
免责声明:本文观点为个人观点,不得与他人分享。欢迎在评论中继续讨论。你认为这种情况可能发生吗?我很想看看你要说什么!
跟我一起去未来旅行 了解更多关于人工智能、哲学和认知科学的内容!
推荐阅读
[## GPT 三号吓到你了?遇见武道 2.0:1.75 万亿参数的怪兽
towardsdatascience.com](/gpt-3-scared-you-meet-wu-dao-2-0-a-monster-of-1-75-trillion-parameters-832cd83db484) [## 人工智能不会很快掌握人类语言
towardsdatascience.com](/ai-wont-master-human-language-anytime-soon-3e7e3561f943)
混淆矩阵到底是什么?
验证模型准确性的混淆矩阵的解释和使用。
(src =https://pixabay.com/images/id-4493783/
介绍
在数据科学中,预测总是需要用一些准确性指标来验证。这可能暗示了模型性能的隐现问题。衡量这一点总是很重要的,因为不使用具体的验证,就没有真正的方法来评估一个模型是否正确地完成了工作。由于模型是独立工作的,不需要人类的参与,在使用它们之前对它们进行测量无疑是一个好主意。
当然,为了测量模型的准确性,可以使用几种不同的度量标准。这些指标也可能取决于您试图解决的问题的类型。例如,具有连续目标的回归模型很可能会使用 r 度量,而不是标准的分类准确性。幸运的是,我最近写了一篇文章,通过一些流行的标准来验证机器学习模块,甚至深入到它们背后的数学。如果你对那篇文章感兴趣,你可以在这里阅读:
[## 从头开始编写验证指标
towardsdatascience.com](/writing-validation-metrics-from-scratch-e7d10af59f98)
混淆矩阵
既然我们理解了为什么验证是重要的,并且对可用于测量模型的其他度量有了一定程度的了解,那么什么是混淆矩阵,以及什么使它成为模型验证的伟大工具呢?混淆矩阵,有时也称为误差矩阵,是一种矩阵或表格布局,允许对分类算法内的性能进行可视化。
您可能还记得,我提到了另一个通常用于分类准确性的指标。这个度量被称为广义百分比准确度。为了获得这个度量,我们简单地将 y-hat(我们预测的元素)中的每个值与测试目标中的值进行比较。之后,我们将正确答案的数量除以数组中值的数量。这将给我们一个正确预测的百分比。如果我们从 1 中减去这个,那么我们将得到模型的误差。在 Python 中,这样做的函数如下所示:
def categorical_acc(y, ŷ):
n = len(ŷ)
score = 0
for i, w in zip(ŷ, y):
if i == w;
score += 1
return(score / n)
这是判断绝对准确性的一个很好的方法。百分比值非常容易解释,如果我们告诉某人我们的模型有 98%的准确性,他们可能会知道这意味着什么。考虑到这一点,当然有一段时间这可能是最好的度量,即使是在展示你的模型的准确性的时候。例如,如果我向可能不知道混淆矩阵是什么的业务经理演示,那么对我来说,提供一个以易于解释的百分比记录的验证度量标准是很有意义的。
也就是说,虽然广义百分比准确性有时间和地点,但也有使用混淆矩阵的有效时间。混淆矩阵是一个很好的可视化工具,特别是当你和你的科学家同事一起工作的时候,它们可以告诉你更多关于你的模型的信息,而不仅仅是广义百分比的准确性。例如,我们可以判断我们的目标是否有一个特定的类,可能是多数类,被预测得太频繁了。这可能表明我们可能想要优化一些超参数,更可能使我们的数据多样化一些。在这样的例子中,混淆矩阵对于解决你的分类模型的问题非常有用。
混淆矩阵和其他典型的分类矩阵之间最显著的区别是混淆矩阵允许我们理解我们的单个类是如何使用我们的模型的。也就是说,使用混淆矩阵,我们不是一次性估计整个值集的准确性,而是对每个特征的负值和正值进行舍入,并将它们放在一起以便于比较。
混淆矩阵还允许我们评估第一类错误或第二类错误的可能性,这在处理分类时可能是有价值的信息。
结论
混淆矩阵是数据科学家的宝贵财富。它们允许我们非常有效地快速比较不同的特性和错误返回。虽然分类准确性肯定有一席之地,但这项技术向我们展示了更多关于我们的模型和数据的信息,而不仅仅是准确性得分。这个指标不仅可以用来验证你的模型,还可以很容易地用来诊断为什么你有你的准确性。感谢您的阅读!
高斯过程到底是什么?
对 Martin Krasser 的 GP 回归 Python 实现的直观、无假设的探索
信用:Pixabay
TL/DR
高斯过程是非参数模型。相比之下,线性回归是一个参数模型。考虑一下y = m*x + b
。在这个模型中,m
和b
是参数,分别表示,“平均,缩放 x 乘 m,移位 b 得到 y. ”学习到的参数大大浓缩了{ x:y }关系的本质。相比之下,非参数模型不提供对{x:y}关系的这种简单概括,它提供零参数(或者可能是 )无限参数 ),基于您的观点!)在高斯过程中,每个训练数据点都是它自己的维度(与来自同一维度的几个观察相反。)然而,如果我们说每个点都是它自己的平均值,方差为零,那么我们的函数将会过度波动(过度拟合),并且不能为测试数据点提供推断。使用了一个核函数,它很大程度上回答了问题“任何给定的一对数据点应该相互通信多少?“在径向基函数(RBF)核中,一个给定的数据点只与它的近邻进行明显的通信,而与远处的近邻的通信则可以忽略不计。这种设计允许高斯过程回答问题,“对于任何测试 X,其测试 y 应该与其(训练)X 邻居有多相似?“两个关键见解:(A) 预测的 Y 是训练 Y 的线性组合,用相应 X 的距离加权。以及(B) 这些观察到的训练点是模型参数——理论上可以是无限的(或者至少没有固定的上限!)利用了两种关系:{X_train,Y_train}关系和{X_train,X_test}关系。通过对给定{X_train,X_test,Y_train,Y_test}的联合分布建模(使用条件高斯规则),我们能够推断出“函数”上的分布,其描述了我们关于 Y_test 的信念。本质上,每个训练数据点都是一个参数。由于这个原因,训练数据不能被丢弃,因为它证明了描述我们关于 Y_test 的信念的(潜在无限的)参数。
介绍
下面,我将从马丁·克拉瑟写的博客中探索代码,它从头实现了高斯过程。我发现代码像宣传的那样工作,但是对于不熟悉高斯过程的人来说,解释不够“通俗易懂”。这篇文章将有助于使高斯过程看起来非常直观;最后,上面的 TL/DR 将看起来非常清晰。
内核
下面是作者实现的 RBF 内核:
def kernel(X1, X2, l=1.0, sigma_f=1.0):
sqdist = np.sum(X1**2, 1).reshape(-1, 1) + np.sum(X2**2, 1) -2 /
* np.dot(X1, X2.T)
return sigma_f**2 * np.exp(-0.5 / l**2 * sqdist)
在英语中,函数的核心是:x_1^2 + x_2^2 — 2*x_1*x_2
即(x_1 — x_2)^2
。然后,该结果以与正态分布 PDF 的接近的方式进行缩放和指数运算。
实际例子
import numpy as np
import random
import matplotlib.pyplot as plt
dims = 25
x = np.linspace(1,10,dims)
y = np.sin(x) +2
plt.plot(x,y)
信用:我
训练点的线性组合
cov = kernel(x.reshape(-1,1),x.reshape(-1,1),l=0.5,sigma_f=0.5)
gp1 = np.dot(cov,y)
plt.scatter(x,y)for i in range(5):
samples = multivariate_normal(mean=gp1,cov=cov)
plt.plot(x,samples)
信用:我
在上面的图中,我们将真正的 x 和真正的 y 分散在蓝色中,上面有一些线形图。这些线图是来自多元正态分布的样本,其中“均值函数”(多元高斯中的μ参数)是权重(核输出)与目标(训练 y 值)的点积,如 TL/DR 中所述,而协方差是(σ参数)是核输出本身。我们可以看到,已经学习了一般形状*,但是这些样本都需要缩放和移动,因为它们当前根本不匹配训练数据点!*尽管如此,我们可以清楚地看到,高斯过程只是核权重和训练点的线性组合。
那么,为什么我们非常不准确呢?*我们还没训练模型呢!*考虑线性回归,如果我们只是简单地随机猜测 m 和 b 的值,然后作图,我们会对它的不准确性感到惊讶吗?一点也不。高斯过程的棘手之处在于,训练数据点 是 模型参数,但这并不意味着不需要模型训练。
贝叶斯规则
posterior = likelihood * prior / evidence
P(theta|X) = P(X|theta) * P(theta) / P(X)
= P(X,theta) / P(X)
= joint / marginal
= conditional
在上面的文章中,我证明了参数推断中使用的熟悉的贝叶斯规则可以重新排列以产生条件分布。因为我们的模型参数 是 训练数据点,所以我们想问这个问题,“给定 {X_test,X_train,Y_train},我们相信{Y_test} 什么?”
X1, X2 = X_train, X_test
Y1, Y2 = Y_train, Y_test posterior = joint / marginal
= P(Y2,Y1,X2,X1) / P(Y1,X2,X1)
= P(Y2|Y1,X2,X1)
= conditional
众所周知,如果联合分布是高斯分布,那么它的变量子集(边际)的分布也是高斯分布。因此,我们只需要假设P(Y1,Y2,X1,X2)
是高斯的,以便利用高斯条件规则,这给我们后验分布(这允许训练/预测。)
高斯条件作用
首先,让我们考虑一下条件均值公式。我们取 x_1 的平均值,用某个因子来更新它。该系数(在下面的公式中从右向左读)为:
- 观察到的具体距离 x2 距离T5 其平均值。这就回答了问题,“特定的 x2 与 mu_2 的关系有多令人惊讶?”
- 精度矩阵的元素(协方差矩阵的逆矩阵),对应于(x2,x2),它回答了问题“*x2 关于 mu_2 相对于所有其他变量的聚集有多紧密?*值得注意的是,精度矩阵中的每个元素都不是简单的
1/element
,因为矩阵求逆是一个更复杂的过程,同时考虑每个关系。 - 协方差矩阵的一个元素,对应于(x1,x2),它回答了问题,“(平均而言),x1 和 x2 一起移动了多少?
将这三者放在一起,我们就可以清楚地表达出我们对 x1 的期望给定一个观察到的 x2。
mu_1|2 = mu_1 + cov_[1,2] * inv(cov_[2,2]) * (x2 - mu_2)
其次,我们来考虑一下条件协方差公式。我们取 x1 的方差,并从中减去一个因子(从右向左读):
- (x1,x2)的协方差(见上一节)
- 精度约为(x2,x2)(见上一节)
- (x1,x2) — 的协方差再一次
将元素 1 和 2 放在一起,你实际上有一个比率,它说*“( x1,x2)之间的关系的相对强度是多少,当我们考虑 x2 围绕 mu_2 聚集的紧密程度时(尽管它与所有其他变量都有关系?)*“这只是一个比值;当我们将其投影回协方差(x1,x2)时,我们缩小该协方差——回答问题,“在我们考虑 x2 关于 mu_2 的聚集程度之后,协方差的哪一部分剩余?”
最后一步是简单地从 x1 的方差中去除这个因素。“当我们去掉 x2 的作用,因为它的位置是 已经知道的 (又名条件作用)时,x1 变化了多少?
cov_[1|2] = cov_[1,1] - cov[1,2] * inv(cov_[2,2]) * cov_[1,2]
如果你想看关于这些公式的来源的详尽证明,请自便。请注意,这个证明是线性代数错综复杂的冗长演示。因此,我试图直观地解释这些公式的效果。
内核调节
我前面介绍过这个思想,训练数据观测值就是这个模型的参数;由内核产生的权重确定用于推断对应于任何给定 x 的 y 的 y_train 值的特定线性组合。由于这种关系,“均值函数”通常被设置为 0。(换句话说,没有必要给一个已经非常灵活的模型增加额外的复杂性。)你会注意到在下面的公式中 mu_1 和 mu_2 已经被 0 代替了。
mu_[2|1] = 0 + K_[1,2] * inv(K_[1,1]) * (y1 - 0)
= K_[1,2] * inv(K_[1,1]) * y1cov_[2|1] = K_[2,2] - K_[1,2] * inv(K_[1,1]) * K_[1,2]
Python 中的后验函数
from numpy.linalg import invdef posterior(X_test, X_train, Y_train, l=1.0, sigma_f=1.0):
K_train = kernel(X_train, X_train, l, sigma_f)
K_joint = kernel(X_train, X_test, l, sigma_f)
K_test = kernel(X_test, X_test, l, sigma_f) + 1e-8 * \
np.eye(len(X_test))
K_train_inv = inv(K_train)
mu_joint = K_joint.T.dot(K_train_inv).dot(Y_train)
cov_joint = K_test - K_joint.T.dot(K_train_inv).dot(K_joint)
return mu_joint, cov_joint
为了演示一个重要的概念,我将只提供训练数据,而不提供测试数据,然后从中抽取样本。
x1 = x.reshape(-1,1)
mu_test, cov_test = posterior(x1,x1,y)
samples = np.random.multivariate_normal(mu_test, cov_test, 3)plt.scatter(x1,y)
for i in range(len(samples)):
plt.plot(x1,samples[i])
信用:我
请注意,我们对 3 个不同的“函数”进行了采样。(函数是指多元分布,其中每个维度代表同一维度的一系列唯一观察值。)但是,*每次都抽取完全相同的点!*这怎么可能?
让我们只看协方差函数的第一行。
cov_test[0,:].round(1)
>>>
array([-0., -0., -0., 0., 0., 0., 0., 0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., 0., 0., 0., 0., 0., 0., 0.])
每个元素的方差为 0。这意味着平均值将在每次 — 被采样,因为没有可变性!同样,在对 y1 进行点积之前,让我们看看均值函数。我们希望看到(条件内核,Y_train)点积中使用了什么样的 权重:
def conditional_kernel(X_test, X_train, Y_train, l=1.0,
sigma_f=1.0):
K_train = kernel(X_train, X_train, l, sigma_f)
K_joint = kernel(X_train, X_test, l, sigma_f)
K_test = kernel(X_test, X_test, l, sigma_f)
K_train_inv = inv(K_train)
return K_joint.T.dot(K_train_inv)t = conditional_kernel(x1,x1,y1)
t[0,:].round(1)
>>>
array([ 1., -0., -0., 0., 0., -0., 0., -0., -0., -0., 0., -0., 0., 0., -0., -0., 0., -0., 0., -0., -0., 0., -0., 0., -0.])
注意,在上面观察到的权重中,第一个元素的权重为 1,所有其他元素的权重为 0 。在线性组合方面,Y_train 中的第一个观察值被预测为自身的 100%,方差为 0。因此,为什么多变量高斯采样一个且只有一个唯一序列。
那么,为什么会发生这种情况呢?嗯,我们已经要求高斯过程为序列中的每个观察值拟合一个维度——它确实做到了!然而,这并不能帮助我们推断出关于测试点与观测值之间的任何关系。
下面,我们将看看一个(几乎)合适的高斯过程,它使用训练观测值作为参数来估计测试输入。
dims = 10
x_train = np.linspace(1,10,dims).reshape(-1,1)
y_train = np.sin(x_train) +2
x_test = np.linspace(1,10,100).reshape(-1,1)
mu_test, cov_test = posterior(x_test,x_train,y_train)
samples = np.random.multivariate_normal(mu_test.transpose()[0],
cov_test, 5)plt.scatter(x_train,y_train)
for i in range(len(samples)):
plt.plot(x_test,samples[i])
信用:我
现在我们可以看到高斯过程是最(和最少!)自信。在点与点之间最远的区域有更多的可变性,因为要猜测 y_train 值的特定线性组合要分配给任何给定的 x_test 值。总的来说,它对自己的估计非常有信心!
注意,每个被采样的函数都与所有训练数据点相交。这就是调理的效果。方差为 0,并且训练数据点每次都预测它们自己,准确地说是。但在现实中,我们有时希望放松这种约束,以允许更平滑的函数,这不太可能过度适应潜在的离群值。
有噪声的预测
放松每个训练数据点必须精确自我预测的约束是一个简单的改变,我们简单地获得关于目标变量的方差,并将其添加到协方差函数中沿对角线的所有元素*。这似乎是一个奇怪的步骤,但是请记住协方差矩阵中的对角线元素反映了元素的方差;非对角线元素反映元素之间的关系。如果我们想放松这个约束,但又不想负面影响内核评估训练数据点之间相似性的方式,那么我们只需增加对角线上的元素。*
def posterior(X_test, X_train, Y_train, l=1.0, sigma_f=1.0,
sigma_y=1e-1):
K_train = kernel(X_train, X_train, l, sigma_f) + sigma_y**2 * \
np.eye(len(X_train))
K_joint = kernel(X_train, X_test, l, sigma_f)
K_test = kernel(X_test, X_test, l, sigma_f) + 1e-8 * \
np.eye(len(X_test))
K_train_inv = inv(K_train)
mu_joint = K_joint.T.dot(K_train_inv).dot(Y_train)
cov_joint = K_test - K_joint.T.dot(K_train_inv).dot(K_joint)return mu_joint, cov_joint
现在,让我们来看看(改进的)模型性能:
mu_test, cov_test = posterior(x_test,x_train,y_train)
samples = np.random.multivariate_normal(mu_test.transpose()[0],
cov_test, 5)plt.scatter(x_train,y_train)
for i in range(len(samples)):
plt.plot(x_test,samples[i])
信用:我
尺寸的尺寸
将这种情况扩展到更高维度实际上非常简单。我们仍然将 Y_train 的线性组合分配给任何 X_test 输入(以及噪声模型中的 X_train 输入),如前所述。)当我们观察到每一个 X 都是在 2+维中定义的(比如身高体重),那么内核就需要在更高维中评估观察值之间的相似性。幸运的是,这对于内核来说根本不是问题!
超参数调谐
你可能会好奇为什么我从来没有讨论过超参数调优,也就是内核函数中的sigma_f
和l
。博客作者确实使用了优化方法来获得最佳超参数值——我鼓励您回顾一下他是如何实现这一方法的。
我更喜欢贝叶斯方法;与其收敛于最优超参数的点估计,我更愿意看到这些参数的整体分布。点估计方法可能会陷入局部最优(与全局最优相反),但抽样方法通常会探索整个分布,并可以在一定程度上减轻这种风险(复杂几何存在例外,这使几乎任何方法都感到困惑)。)我最喜欢的贝叶斯建模库是 PyMC3。
最后的想法
我计划在以后的文章中用 PyMC3 构建一个高斯过程教程——或者简单地扩展这篇文章,包括一个应用 GP 建模的简短演示。