TowardsDataScience 博客中文翻译 2019(四百九十一)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

弱关系的力量

原文:https://towardsdatascience.com/the-power-of-weak-ties-f1049c93f3a3?source=collection_archive---------9-----------------------

社会网络中弱关系的影响——图论观点

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

http://bitcoinwiki.co/wp-content/uploads/censorship-free-social-network-akasha-aims-to-tackle-internet-censorship-with-blockchain-technology.jpg

什么是社交网络?

我们都知道“社交网络”这个术语是指社交网站,比如脸书和推特。在这些网站上,人们能够与网站上的其他用户交流并形成社会联系。当人们使用这些网站时,模式往往会出现,因为用户基于预先存在的人际关系,以及通过在线互动期间新创建的关系聚集在一起。虽然这些网站确实具有社交网络的特征,但社交网络不一定是网站。

**从最普遍的意义上来说,社交网络是人们之间建立联系的方式。**网络中的人,或者说行动者,被认为是节点(圈),他们之间的连接,或者说是边(线),代表着互动或者关系产生的纽带。这些网络可能来自任何社会行为,如在线交流、面对面交流,甚至更抽象的联系形式,如认识一个人,因为他们是你的亲戚。

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

https://en.wikipedia.org/wiki/Social_network#/media/File:Network_self-organization_stages.png

社交网络是用于社会学和心理学等社会科学以及统计学和数学等定量领域的强大工具。检查网络的一般结构,如密度和组件数量,以及通过中心性等指标检查单个节点对网络的贡献,可以提供对复杂社会现象的许多见解。

什么是弱领带?

既然我们知道了什么是图,我们就可以研究图中的连接类型。这些可以分为缺席关系弱关系强关系

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

https://en.wikipedia.org/wiki/Interpersonal_ties

缺失连接,顾名思义,是图中不存在的连接。因此,如果在一个图中,人 A 和人 B 不相连,那么边 A-B 就是不存在的纽带。

强关系则是另一个极端。这些是人与人之间的纽带,彼此紧密相连。在现实世界中,这可能包括你日常交往的亲密家人和朋友。你可能和这些人有很多共同点,你很可能和他们有很多共同点。你的强关系很可能类似于下面的密集图

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

https://blog.metaflow.fr/sparse-coding-a-simple-exploration-152a3c900a7c

最后,你的弱关系介于缺席和强关系之间。这些是人们之间的联系,他们彼此认识,但不是特别熟。在现实世界中,这些人是你一个月接触一次的人,你可能不常见到他们。你和你的弱纽带可能没有太多共同点,你的弱纽带大部分也不会认识。因此,你的弱关系图很可能类似于下面的稀疏图

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

https://blog.metaflow.fr/sparse-coding-a-simple-exploration-152a3c900a7c

弱关系的好处

既然已经了解了不同类型的联系,那么说弱关系是最重要的可能看起来有违直觉。毕竟,与你关系最密切的人不是最愿意帮助你的吗?

真实世界的图表

为了理解弱联系的力量,我们必须看看现实社会图的结构(网络拓扑)。下面是一个真实世界网络的例子,代表一个美国大学足球网络。

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

https://www.nature.com/articles/srep05739/figures/2

很快,我们注意到这样一个现实世界的网络是由密集连接的人群或社区组成的。然后,这些社区通过相对较少的边相互连接。我们可以把每个社区中的边缘看作是紧密的联系。这些人很可能在同一个团队,彼此关系非常密切。连接每个不同社区的边可以被认为是弱联系。这些很可能是较弱的联系,因为球员不太可能与其他球队的人频繁互动。

小世界网络

模拟这种网络的一种常见方法是将它构建在一个小世界网络中。小世界网络有几个定义性特征,使它们具有上述外观:

  • 大多数节点互为而非邻居
  • 特定节点的邻居很可能是彼此的邻居
  • 节点可以通过少量的边互相到达

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

In small-world networks, we see sparse connections between communities. Each community experiences a high degree of clustering, or equivalently, the graph overall has a high level of modularity. Random graphs are far less modular and experience less clustering.

这些特征导致由少量边连接的密集连接的社区的形成。这种网络自然出现在许多现实世界复杂系统的建模中,如我们大脑中的神经元和社交网络。

弱关系的影响

如果没有薄弱的联系,各社区之间就不会有任何交流。每个人在更大的图中只拥有他们自己的小中心的本地信息。如果没有薄弱的联系,人们将无法获得与全球体系相关的信息,这可能对他们不利,因为他们错过了并非源自其特定社区的趋势。事实上,如果大型社区之间的关键链接被移除,弱连接的移除可能会对整体网络功能产生灾难性的 T2。这与移除强连接形成对比,移除强连接会导致网络功能的退化更加可控,且通常更小。

幸运的是,我们的社交网络确实允许我们有这些微弱的联系。这就是人们如何能够通过使用 Twitter 等平台快速扩大对世界事件的了解,以及我们如何能够通过脸书等平台与远方的亲戚重新联系。这就是“六度分离”现象的由来,因为大多数社区可以通过少量的边彼此到达,这些边代表弱联系。

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

https://blog.headresourcing.com/networking-and-the-strength-of-weak-ties/

一个例子——求职

我们可以在很多情况下观察到这种现象,比如找工作。你身边的人,比如你团队中的同事,人脉有限。他们可能认识很多和你一样的人,在有限的公司范围内,和你在同一个地区。所以,在找新工作的时候,他们的帮助可能是有限的。然而,你的弱关系,最有可能在其他地理区域、工作岗位和公司,有更广泛的影响。他们可能会向你推荐其他地方的公司和不同的职位。这可能包括远方的家庭成员、老朋友和你过去的同学。

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

https://www.swiveltime.com/2013/08/your-network-of-cousins.html

研究甚至表明,大部分工作帮助都来自弱关系。这主要是由于一个简单的事实,即弱关系比强关系多得多。虽然单个弱联系可能比单个强联系更弱,但在总体意义上,我们的弱联系已被证明更有用。

迄今为止的英超联赛

原文:https://towardsdatascience.com/the-premier-league-so-far-5bf1d95afbc8?source=collection_archive---------24-----------------------

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

Photo credit: https://www.stickpng.com/img/sports/soccer-football/premier-league-logo

对世界上最有趣的足球联赛的赛季中期分析

杰米·瓦尔迪进球不断,他的状态非常好。阿森纳球迷在阿森纳官方电视上展示了他们歇斯底里的最佳状态,因为这支球队正在经历一段时间以来最糟糕的赛季。切尔西出人意料地发展得很好,尽管他们不能在转会窗口签下任何人。

曼城在一支被认为是冠军的球队中表现得相当不错。曼联和阿森纳一样,并没有真正做好。尽管他们在大型比赛中表现出色,但在小型比赛中却搞砸了。

托特纳姆热刺队在解决如何正常运转的问题上有一些问题,但何塞穆里尼奥已经来拯救他们,并且有一些改善的迹象。一支让我惊讶的球队是谢菲尔德联队。尽管刚刚获得晋升,但他们已经成功展示了让他们一直保持在前 7 名的表现。

最重要的是,利物浦通过提供一个非常有统治力的表现,已经走上了成功的大道。尤尔根·克洛普用这支球队创造了一个王朝。不管他们面对谁,他们总是赢。范·迪克在后面看起来很稳固。中场很容易为进攻的三人组提供惊人的传球,从而带来重要的进球。

目前是赛季中期,对各队赛季中期表现的分析已经进行。

英超赛季中期积分榜分析

收集数据是为了分析球队在赛季中期的表现。使用英超的网站,最近的排名是通过这个链接得到的。

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

The Premier League mid-season table of 2019/20.

不出所料,利物浦领先一场比赛。莱切斯特城位居第二,这要归功于杰米·瓦尔迪的高产和布伦丹·罗杰斯的顶级执教。曼城不在最佳状态,排名第三。切尔西出人意料地排名第四。狼队证明了自己是一支顶级球队,排名第五。热刺,第六。曼联和阿森纳分别是第八和第十一。倒数三名包括阿斯顿维拉、沃特福德和诺维奇城,他们分别排名第十八、十九和二十。

最大的赢家对最大的输家

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

The graph on the left shows which teams have won the most games. The graph on the right shows which team has lost the most games.

在 18 场比赛中赢了 17 场后,利物浦成为最大赢家。莱斯特城在积分榜上排名第二,曼城以 12 胜排名第二。切尔西 10 胜,排名第四。托特纳姆热刺排名第五。

诺维奇城在积分榜上垫底,它输掉最多的比赛 13 场并不奇怪。同样处于降级区的阿斯顿维拉排名第二,已经输了 11 场比赛。沃特福德和南安普顿以 10 负并列第三。西汉姆联、亚冠伯恩茅斯、布里顿霍弗阿尔比翁、埃弗顿、伯恩利都是 9 负,排名第五。

谁最爱分享积分?

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

A graph showing which teams share points the most in the premier league mid-season of 2019/20

事实证明,当狼队和阿森纳面对对手时,他们更愿意给对手一分。他们都平了 9 场比赛。谢菲尔德联队排在第二位,已经 8 场平局。沃特福德和曼联以 7 平排名第四。

进球与失球

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

The graph on the left shows how many goals the teams have scored. The graph on the right shows how many goals the teams have conceded.

拥有强大攻击力的曼城队迄今为止已经打进 52 球,是赛季中期进球最多的球队。利物浦以 46 球排名第二。莱斯特城进了大约 41 个球,排名第三。热刺和切尔西分别以 34 球和 33 球排名第四和第五。

对于诺维奇城来说,垫底一定很艰难。他们已经设法丢了 38 个球,这使他们成为最大的失球球队。南安普顿在莱斯特城 9:0 大胜后排名第二,总共丢了 37 个球。阿斯顿维拉和沃特福德都丢了 33 个球,排名第三。伯恩利和西汉姆联各丢 30 球,排名第五。

玩家分析

使用这个链接从英超联赛网站收集关于球员表现的信息。

最高得分者——聊天***被撞!

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

The highest goal scorers of the premier league mid-season of 2019/20

杰米·瓦尔迪。真是个畜生!本赛季他一直是致命的,已经记录了 17 个进球,这使他成为最高的射手。阿森纳的奥巴姆扬以 12 个进球排名第二。塔米·亚伯拉罕、丹尼·英斯、马库斯·拉什福德和拉希姆·斯特林都曾 10 次进球,他们都名列第三。

顶级组织者—我能为您做些什么?

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

The best playmakers in the premier league mid-season of 2019/20

组织进攻之王凯文·德布劳内有 11 次助攻,这让他第一次成为众人瞩目的焦点。第二名是神童特伦特·亚历山大·阿诺,他有 8 次助攻。儿子 7 次助攻排名第三。马内、戴维·席尔瓦和劳尔·希门尼斯以 6 次助攻排名第四。

干净的床单——谁最能扭转局面?

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

Clean sheets in the premier league mid-season of 2019–20

谢菲尔德联队的迪安·亨德森、伯恩利队的尼克·波普和莱斯特城队的卡斯帕·舒梅切尔都以 7 次零失球并列最干净球门不失榜首。文森特·瓜尔塔和埃德松以 6 场零封对手的成绩排名第四。上赛季的最佳门将艾利森至今已经有 3 场比赛没有失球。

结论

没有人知道在这个赛季剩下的时间里会发生什么。英超是一个充满娱乐的联赛,有很多悬念。这种悬念的一部分来自于前四名的争夺和降级区的争夺,这可能会持续到最后一个比赛日。

有趣的事实:

这是我的第 19 篇文章,我正在分析英超赛季的前 19 场比赛。

用于执行该项目的完整版代码可以在这里看到

有准备的头脑:如何接近工艺

原文:https://towardsdatascience.com/the-prepared-mind-how-to-approach-craft-2e553460127e?source=collection_archive---------18-----------------------

为了解决我们现在和未来的邪恶问题,我们需要接受一个奇怪的、违反直觉的讽刺:随着各行各业的组织不断创造和采用人工智能等技术,员工需要通过提高他们的主观智能来保持相关性。

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

Photo by Franck V.

在刚刚过去的这个周末,我参加了一个会议,主题是最新的热门词汇之一“变革性技术”。自从他们开始以来,我一直在跟踪他们,这对风投来说似乎是很好的营销——你猜对了——技术,但具体来说是“精神健康、情感健康和人类繁荣”的技术对于这一组,需要有电力或电池参与。这并不是说佛教僧侣、教师、教练或心理学家的贡献本身不被重视,而是他们没有得到重视。

其中一位演讲者推断,有一天,我们将拥有“让我们流动”或“帮助我们快速进入冥想状态”的技术。这不是我第一次听到有人讨论这个想法,我认真地听着,思考着相当于“跳过学习之旅”直接进入整合的潜在后果。

学习,那种推动我们在生活和工作中前进的学习,充满了奋斗。接受一个新的想法,用它来推理,并融入一个新的,更广泛的理解是很困难的。随着对数据依赖的增加,推理是一种岌岌可危的衰退技能。如果技术可以帮助我们避免一个新想法或新活动的不愉快、笨拙、易焦虑的初学者心态,那么会失去多少深度的经验(和洞察力)?如果我们能够跳过发展精通的重要阶段,会失去什么?

在一个痴迷于科技、重新包装的想法和 Instagram 原声片段的时代,一些伟大的科技 思想家 迷失在历史中。我想分享一些从伟大的理查德·海明身上学到的东西。海明是一位美国数学家,他的工作对计算机工程和电信有许多影响。他给 IBM 的计算机器编写了程序。他参与了贝尔实验室几乎所有最突出的成就。退役后,海明在海军研究生院谋得一个职位,致力于教学和写书。1997 年 12 月,他做了最后一次演讲,就在几周前,他于 1998 年 1 月 7 日因心脏病发作去世。

你可以在下面看到。我在下面引用他的书和演讲,因为它们涉及到我对大师级工匠的研究,他们如何在他们的工作中变得更好,以及我们(在技术和商业领域)可以从他们身上学到什么。

无论你做什么,如何与手工艺合作

通过日常刻意练习获得的洞察力、技能或意识状态,很少会放在银盘上交给你。爱因斯坦认为天才是 99%的汗水和 1%的灵感。毕加索提到“灵感[已有],但需要在工作中找到你虽然我们可以承认运气发挥了作用,但我们经常把它作为拐杖,以避免做我们能做的事情来明智地为机会做准备。在我看来,汗水和工作是有效融合的组成部分。

我们只有一次生命,“似乎做一些有意义的事情比只是度过一生直到生命尽头更好,”理查德·海明在他 1997 年的书 中写道。这本书和他 1986 年的演讲《运气偏爱有准备的头脑》,你和你的研究探索我们如何做伟大的工作。具体来说,他指的是“诺贝尔奖类型的工作”。诺贝尔水平的工作提高了我们认为可能的标准,并教会我们以新的方式思考。从很多方面来说,诺贝尔奖获得者都是我们当中各自领域的匠人。

从做饭到编码,为了用手艺做点事,都有方法可以搞。这就是精益、DMAIC、6Sigma 和许多其他方法的由来。为了更有效地思考,我们还可以学习一些心理训练。但是,从哪里开始呢?

海明认为,准备是区分优秀和伟大的关键。这意味着你生活的方式——你明智准备的程度——对你能完成的事情有着巨大的影响。

作为人类,我们倾向于关注我们能用眼睛看到的东西。我们认为关注具体事物是客观的。这是我们合理化的方式。当我们观察其他人生活中的转变时,我们会看到好运、天赋、不公平的优势或正确的联系。我们专注于机会和成功的明显迹象。我们也对组织这样做——这是一种错觉。

任何改变的关键都非常简单。停止关注外在,关注更小的内在变化。这就是抓住幻觉和沉浸在现实中的区别。现实会改变你。

人们反对努力做大事的主要理由是认为这完全是运气的问题。我多次引用巴斯德的话,“运气偏爱有准备的头脑”。它既承认有运气的成分,又声称在很大程度上取决于你。你时刻准备着成功或失败,就像你选择的那样,通过你生活的方式。

做科学和工程的艺术:学会学习(209 页)

运气总是等式的一部分。哲学家、政治理论家和战略家们早就认识到机遇在我们生活的方方面面都扮演着重要角色。就连尼科洛·马基雅维利(Nicolo Machiavelli),这位君主在追求权力时可以使用的每一个杠杆的编目员,也承认,“我相信,命运可能是我们所做事情的一半的仲裁者,而另一半则由我们自己控制。”几个世纪前意大利政坛的真理在今天的管理中同样适用。

然而,如果生活全靠运气,同样的人就不会重复做伟大的事情。伽利略·伽利雷做了许多伟大的事情。牛顿和爱因斯坦也是如此。比尔·盖茨、埃隆·马斯克和杰夫·贝索斯已经在多个领域取得了成功。这样的例子不胜枚举。

当有人反复使用 Craft 时,那是因为他们提前做好了识别、工作和必要时填空的准备。这是智慧准备的本质,也是刻意练习的基础——伟大是副产品。很多时候,在试图优化和再造的过程中,我们忘记了这一点。

智力有多种形式。很多时候这并不容易被发现——很多反复做大事的人都是穷学生。智商并不能保证学业成功。聪明固然很好,但如果你知道如何运用你的知识就更好了。

相信你有能力做重要的工作。

你如何看待自己和自己的贡献能力,决定了你如何体验生活中的人,你选择的工作,以及你选择的解决问题的战术和策略。

抱着你能做重要工作的信念,为什么我们大多数人会把时间花在无关紧要的工作上?

直接观察和直接询问人们,表明大多数科学家把大部分时间花在他们认为不重要的事情上,也不可能得出重要的结论。

理查德·海明…做科学和工程的艺术:学会学习(210 页)。

如果你正在做的事情并不重要,也不符合你的价值观,那么你正在做的事情、你所说的话和你正在做的事情也不重要。想想吧。

健康对你来说重要吗?你最后一次投资是什么时候?

关系对你来说重要吗?你投资他们做什么?

你重视过程吗,真的?你上一次重视,真正重视那些能让你实现追求的结果的许许多多小决定是什么时候?

你需要问自己的问题是你为什么不去解决和思考你所在领域的重要问题?如果我们不解决正确的问题,我们怎么能期望取得伟大的成就呢?**

愿意做一个局外人。

把这想象成信心遇到勇气。你可能看起来像个白痴,因为你正在做一些新的事情。你周围的人可能不会马上理解你,因为你在挑战现状。

香农有勇气。除了一个几乎有无限勇气的人,还有谁会想到对所有随机码求平均,并期望平均码会很好?他知道自己正在做的事情很重要,并努力去做。勇气,或者说自信,是一种可以培养自己的品质。看看你的成功,对失败的关注要少于“从错误中学习”这句话通常建议你做的。下棋的时候,香农经常大胆地让他的王后加入战斗,并说:“我什么也不害怕”。当我陷入困境时,我学会了对自己重复这句话,有时它让我走向成功。我故意复制了一个大科学家的一部分风格。继续下去的勇气是必不可少的,因为伟大的研究往往有很长一段时间没有成功和许多挫折。

理查德·海明…从事科学和工程的艺术:学会学习(第 211 页)

拥抱横向目标。

你必须将卓越视为一种追求,而不是一种结果。这并不像听起来那么容易,尤其是当你试图复制成功时,但这是从事手工艺的一个基本特征。**

没有这样的目标,你将倾向于偏离航向三度。你几乎会朝着正确的方向前进。三度看起来很小,但那是当你坚持到底并对自己说,“我很好,我仍然可以看到我前进的方向。”直到二十年后,你才意识到有些事情不对劲。你再也看不见那座山了。长时间偏离航向三度的累积效应意味着要么是时候原路返回,转向那座山,要么尝试其他方法让你回到航向。

……以做有意义的工作为目标,人们倾向于走同一个方向,因此走的距离与走的步数成正比,这在一生中确实是一个很大的数字。

理查德·海明…从事科学和工程的艺术:学会学习(第 211 页)

大多数人认为最好的工作条件并不是——学会在失败和成名之间跳舞。

约束可以带来创新。但是限制只是现实的另一种说法,或者是缺乏理想(预算、资源、环境或者你正在寻求的其他品质)。现实的反馈是什么让你脚踏实地。

年龄似乎确实有影响。首先,如果你做了一些好的工作,你会发现自己在各种各样的委员会里,不能再做更多的工作。你可能会发现自己就像我看到的获得诺贝尔奖的布拉顿一样。宣布获奖的那天,我们都聚集在阿诺德礼堂。三位获奖者都站起来发表了讲话。第三个,布拉顿,几乎是含着眼泪说,“我知道诺贝尔奖效应,我不会让它影响我;我将继续做老好人沃尔特·布拉顿。”我对自己说,“这很好。”但是几个星期后,我发现这影响了他。现在他只能致力于解决大问题。

当你出名时,很难解决小问题。这是香农做的。信息论之后,你做什么来安可?伟大的科学家经常犯这种错误。他们没能继续种植小橡子,而大橡树正是从这些小橡子中生长出来的。他们试图把这件大事做好。事情不是这样的。所以,这是你发现当你得到早期认可时,它似乎让你失去活力的另一个原因。事实上,我会给你我多年来最喜欢的引语。在我看来,普林斯顿高等研究院毁掉的优秀科学家比任何机构创造的都多,这是从他们来之前的所作所为和之后的所作所为来判断的。不是说他们之后不好,而是他们到了那里之前超好,只有到了之后才好。

开着门工作。

我注意到,如果你关着办公室的门,你今天和明天会完成更多的工作,而且比大多数人更有效率。但是 10 年后,不知何故,你不知道什么问题值得去解决;你所做的所有艰苦工作都是无关紧要的。开着门工作的人会受到各种各样的干扰,但他偶尔也会得到一些线索,比如这个世界是什么,什么可能是重要的。现在我无法证明因果顺序,因为你可能会说,“关着的门象征着封闭的心灵。”我不知道。但是我可以说,那些开着门工作的人和那些最终做重要事情的人之间有很好的相关性,尽管那些关着门工作的人通常工作更努力。不知何故,他们似乎在做一些稍微错误的事情——不多,但足以让他们错过名声。

做大事的世卫组织人通常有很大的动力去做事。

大多数伟大的科学家都有巨大的动力。我和约翰·图基在贝尔实验室共事了十年。他干劲十足。大约在我加入三四年后的一天,我发现约翰·图基比我略年轻。约翰是个天才,而我显然不是。我冲进波德的办公室,说:“像我这样年纪的人怎么可能知道的像约翰·图基一样多?”他靠在椅子上,双手放在脑后,微微咧嘴一笑,说:“你会惊讶海明,如果你像他那样努力工作那么多年,你会知道多少。”我只是溜出了办公室!

每天只专注投资一小时,就能让你一生的产出翻倍。

智能准备就像复利,你投入越多,你能处理的情况越多,你学会怎么做,所以你能做的就越多,等等。每天只花一个小时学习新事物的好处是隐藏在众目睽睽之下的一颗被忽视的宝石。

这不是关于谁工作最努力,而是关于谁把有限的精力集中在正确的事情上。学习那些(1)变化缓慢,( 2)适用于各种情况的东西,可能比学习那些极其耗时、变化迅速且应用有限的东西更能利用时间。

海明把他的周五下午奉献给了“伟大的思想”留出时间思考是做大事的人的共同特征。这不仅有助于你有意识地生活,也有助于你摆脱混乱。我们其余的人都忙于细节,没有时间去问我们是否走对了方向。

把反对善意行为的建议看作是不真实的。谷歌的 20%时间被最终抛弃。只有大约 10%的谷歌员工在使用它。但是根据谷歌人力资源主管拉兹洛·博克在他的新书《工作规则》中的说法,只要的想法存在,那就没什么大不了的

容忍暧昧。

同时相信和不相信。你必须相信你工作的地方是业内最好的地方,有能力改进。

我花了一段时间才发现模糊的重要性。大多数人喜欢相信某事是或不是真的。伟大的科学家非常能容忍歧义。他们相信这个理论足以继续前进;他们怀疑它足以注意到错误和过失,所以他们可以向前一步,创造新的替代理论。如果你相信太多,你永远不会注意到缺点;如果你怀疑太多,你就不会开始。它需要一个可爱的平衡。但是大多数伟大的科学家都很清楚为什么他们的理论是正确的,他们也很清楚有些轻微的不适应,他们不会忘记。达尔文在他的自传中写道,他发现有必要写下每一个似乎与他的信念相矛盾的证据,因为否则它们就会从他的脑海中消失。当你发现明显的缺陷时,你必须保持敏感,跟踪这些东西,留意如何解释它们,或者如何改变理论以适应它们。这些往往是伟大的贡献。伟大的贡献很少是通过多加一个小数位完成的。这归结为一种情感承诺。大多数伟大的科学家完全致力于他们的问题。那些不忠诚的人很少能做出杰出的、一流的作品。

如果你发现自己在责怪你的(精神)工具,做点什么吧。了解心智模型,了解工匠们如何谈论他们如何学习并在他们的工作中做得更好,更重要的是,获得所有权。前进需要改变,但改变本身并不意味着你在前进。正如苏格拉底所说,“未经审视的人生不值得过。”

克里斯汀·哈斯克尔博士是华盛顿州立大学的领导力顾问和兼职教授。她帮助忙碌的领导者对他们的学习和发展负责。她以“工艺和工作的未来”为主题写作分享大师级工匠和女性在个人和专业掌握方面的经验,将于 2019 年底推出。为她报名(半定期)简讯 此处

有准备的头脑:我们当前的问题

原文:https://towardsdatascience.com/the-prepared-mind-our-current-problem-46c5101965ff?source=collection_archive---------29-----------------------

为了解决我们现在和未来的邪恶问题,我们需要接受一个奇怪的、违反直觉的讽刺:随着各行各业的组织不断创造和采用人工智能等技术,员工需要通过提高他们的主观智能来保持相关性。

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

As production work and other jobs automate, the skills people need to stay relevant are becoming elusive.

我们目前的问题

几代人以来支持组织和加强美国劳动力的结构在各个领域都在逐渐削弱。我对大师级工匠以及他们如何掌握技艺的研究有助于将这个新的困境联系起来,并可能成为寻求初步解决方案的地方。

现在,把变化的速度、指数增长和不可逆转的灾难称为适应的必要催化剂已经是老生常谈了。我们都知道明天的工作将与今天的大不相同——我们只是认为明天将永远留在“明天”无论如何,在这些重复出现的报告之间,一个真正的新变化出现了——一方面创造了巨大的机会,另一方面阻止了员工利用它。

为了充分理解这一困境,我们需要了解它是如何形成的。支撑和延续美国悠久传统的三个主要结构正在弱化:教育;劳动力培训;传统的朝九晚五的工作,以及随之而来的对发展的设想。这些传统的衰落侵蚀了经济的不同领域。所有这三个领域都随着技术变革而磨损、扩散并融合在一起,产生了一个全新的问题:就业市场与劳动力的技能和需求不匹配。

根据全球咨询公司麦肯锡的说法,即将到来的工人向新职业的转移“可能是自 20 世纪初劳动力从农业转移以来从未见过的规模。”

这种动态让美国工人进退两难。就业报告不断显示新工作的爆发,但一系列面向未来的稳定机会对大多数人来说并不广泛。事实上,我的研究表明,那些在未来几年最能适应和茁壮成长的人,将是那些学会学习的人,以及像大师级工匠那样思考的人。然而,美国的晋升制度从来没有为这些要求做好准备。

稳定,那是什么?

前几代人可以期待一条结构化的、可预测的职业发展道路,这条道路可以持续他们的大部分甚至全部职业生涯。获得特定学位后,你被归类到当前的工作中,并在公司或行业内努力提升。不再是了。今天,一名员工的平均任期刚刚超过四年。越来越多的公司雇佣兼职或合同工。

在科技的推动下,音乐已经变得越来越主流。据估计从 2005 年到 2015 年,经济中增加的 94%的工作是临时的、合同的、独立的或自由职业的。最近的一项玛丽斯特/NPR 民意调查发现,大约 20%的美国人的工作是非传统的——这个数字在未来十年可能会上升到 50%。

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

Since 1995, the percentage of workers engaged in part-time or freelance work has almost doubled. Image Credit: Laura Zulliger

技能的半衰期

稳定还有另一个敌人:与特定职业相关的技能正以前所未有的速度过时。据估计,如今技能的“半衰期”约为 5 年,而且还在迅速缩短。随着每个工作职能越来越需要数字技能,员工将不得不更加频繁地更新和投资于他们的技能组合。因此,四年制学位的下降有利于有针对性的、灵活的学习选择。

随着多达 45%的工作活动通过现有技术实现自动化,员工面临着巨大的压力,他们要么用机器完成工作,速度更快,成本更低,要么决定彻底改变职业。培生,一家教育技术公司,估计今天 10 个工人中有 7 个从事到 2030 年不确定性增加的职业。在麦肯锡看来,工人向新职业的转移“可能是自 20 世纪初劳动力从农业转移以来从未有过的规模。”

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

On the one hand, the line worker building a car and replaced by a robot feels like their job has been stolen. On the other hand, every robot has to be designed, built, maintained, programmed, and updated. That new reality creates countless new opportunities — for those uniquely qualified to seek them out. Image Credit: LiveMint

雇主投资下降

常识告诉我们,发现这些趋势的组织会希望增加内部培训,以保持员工的相关性。有些是。像脸书苹果沃尔玛集装箱商店这样的雇主只是少数几个在内部员工培训方面有显著做法的组织。其他如 General Assembly、galiled 和各种各样的编码训练营正在试验新的方法来培训员工的技能,以满足特定公司的新需求。

美国政府发布的最新年度参与度报告表明,90%的领导者认为能力建设是他们组织的十大优先事项;8%跟踪项目的投资回报;而且,四分之一的员工从培训中得不到任何东西。

内部培训项目越来越难找了。最近的一项研究发现,全美雇主付费培训下降了 28%。根据美国政府的另一项年度敬业度分析,90%的领导者认为能力建设是他们组织的十大优先事项;8%跟踪项目的投资回报;而且,四分之一的员工从培训中获得了任何东西

培训机会的缺乏对低技能和教育程度较低的工人造成了不成比例的影响,他们最容易受到自动化的影响,而那些工人将从预先了解特定类型的培训将导致的结果中受益最多。但毫无疑问,缺乏技能提升不仅仅会影响制造业。这种困境将触及法律、医疗保健、精神病学、教育等各行各业。

投资错误的技能,错误的时间

对于我们大多数人来说,在一个我们所做的许多事情都被自动化的环境中,我们的生活和职业发展将需要不同的技能——特别是想象力和深度学习的能力。最近一份关于 2030 年职业的报告显示,80%的顶级职位需要创造力、对系统的理解和判断力。越来越明显的是,员工需要开始寻找他们自己的培训途径,如果不是直接创造他们想要的工作的话。

从 21 世纪初开始,美国就业市场进入了动荡的十年。从图中可以看出,在不同时期,消失的工作岗位比创造的多得多——最糟糕的是在 2008 年经济衰退后。自 2010 年以来,这些剧烈波动开始趋于平稳,导致今天对技术工人的需求上升。图片来源:新美洲和彭博

我们当前的系统不是为面对适应性挑战的即时有效性而构建的。根据乔治城大学教育和劳动力中心主任安东尼·卡尔内瓦莱博士的说法,美国每年在培训上的支出仅为 80 亿美元,而高等教育支出为 5000 亿美元,这使美国成为一个教育国家,而不是一个培训国家。

成人培训项目的效果参差不齐,常常令人失望。一个原因是,他们几乎总是在追逐一个问题,而不是阻止一个问题,这使他们显得格格不入,并被视为无关紧要。另一个原因是,即使我们知道我们尝试过的再培训工人的方法并不那么成功,但在组织内部或更广泛的社会范围内,几乎没有政治意愿认为“再培训”是一种解决方案。

当面对这一挑战时,我们往往选择简单的方法,或者选择我们熟悉的挑战,把棘手的问题留给下一次领导层的变动。一些最有前途的、创新的资格认证和成人学习方法——如“纳米学位”、虚拟和增强现实、替代 MBA 项目、编码训练营和 MOOCs(大规模开放在线课程)——吸引了已经精通数字技术或受过高等教育的人。换句话说,在为未来的工作对员工进行再培训方面,有很多有效的方法。对于中低技能的成年雇员来说,提高技能的挑战尤其严峻。这一群体很少得到雇主的支持,在前进、跟上市场趋势和寻找机会方面面临许多障碍。因此,他们必须靠自己驾驭这个领域,尽管他们的资金缓冲、时间安排的灵活性、核心技能以及对追求新技能培训回报的信念都很少。

不稳定的中产阶级

市场任何部分的波动对中低收入人群的打击最大,使他们面临最大的贫困风险。在美联储最近的一份报告中,研究人员发现,数百万家庭经历了明显的逐月薪酬波动。我们很多人已经在那里了。报告数据显示,40%的家庭没有应急储蓄,44%的受访成年人表示,如果不卖东西或借钱,他们无法支付 400 美元的应急费用。

如上所述,长期支撑经济的支持结构(如教育、朝九晚五的工作日和劳动力培训)没有跟上工作性质的变化。随着越来越多的员工选择独立工作,以及传统就业中人员流动的增加,许多人的安全网仍然建立在雇主提供的福利上。工人们努力寻找负担得起的医疗保健,开设退休账户,许多人完全没有残疾或失业保险。

背负着这种经济不稳定的工人几乎没有时间考虑自我发展。为了学习而放弃收入是不可能的。他们可能没有多少积蓄来投资创办小企业、进行不确定的求职或投资职业重心。令人遗憾的是,抓住这种机会很快就成了提升个人职业前景的方式。

关注差距:教育

世界经济论坛预测,今天进入小学的 65%以上的 T4 儿童最终将从事今天甚至不存在的工作。学校是如何为这样的世界培养明天的成年人的?

在 2016 年的一项调查中,44%的成年人表示,如果不卖东西或借钱,他们无法支付 400 美元的紧急费用。

我们的基础摇摇欲坠。劳工经济学家最近的一项研究发现"每千名工人中多一个机器人,就业与人口的比率就会降低约 0.18-0.34 个百分点,工资也会降低 0.25-0.5 个百分点。“尽管学生们对自己的前景很乐观,对自己的能力很有信心,但大多数雇主发现应届大学毕业生对就业准备不足。约三分之一的受访者表示,对培训和教育的发展速度不足以满足 2026 年的需求没有信心。一些最悲观的答案来自一些最受尊敬的技术分析师。一个主要的担忧仍然是员工在现实世界中应用知识、批判性思维和沟通的能力。这些只是被认为越来越重要的“软技能”中的一小部分。

专注于培养人工智能(AI)和机器似乎无法复制的独特人类技能:许多专家在回答中讨论了他们认为机器和自动化可能无法复制的人类才能,并指出这些应该是教育和培训计划开发和培养的技能,以准备人们成功地与人工智能一起工作。在一个日益活跃的经济中,大多数学校继续一如既往地教学:学生们在自己的课桌前独立工作,而不是合作进行创造性的项目。

该研究的受访者认为,未来的员工将学会深入培养和利用个人创造力、协作活动、抽象和系统思维、复杂沟通以及在不同环境中茁壮成长的能力。

在 2017 年出版的一本名为“防机器人:人工智能时代的高等教育”的书中,东北大学校长约瑟夫·e·奥恩(Joseph E. Aoun)要求大学改革他们的整个教育方法。他举例说明了一个名为“人类学”的新学科,他认为这将有助于学生为与自动化机器并存的工作做好准备。人学研究将强调三个核心技能:数据素养、技术素养和人文素养。Aoun 还呼吁更多的经验和应用学习,包括定期实习和工作经验。

如果 Aoun 是对的,学校应该走多远?投资于编码和计算机科学技能可能是谨慎的,但由于我们无法计划即将到来的变化,但我们可以为变化本身做好准备。如果学校调整他们的课程来强调计算机或 IT 技能,而计算机本身在这么短的时间内完成这些工作,这些技能不会过时吗?时机和相关性当然是大问题。但教育需要持续一生,而不是针对某项工作或某项特定技术的半衰期。换句话说,成年工人应该接受与年轻人在小学接受的同样深入的学习。

如果在我们的余生中,你看不到自己在做什么,你将永远不会进步。

为了让这种改变真正发挥作用,这些小学学习必须真正深入,并培养变革和创新的能力。但是在强调标准化考试的小学里,失败通常被认为是不可接受的,这阻碍了创新思维。《从我们的头脑中走出 T4:学会创新》和其他关于教育改革书籍的作者肯·罗宾逊爵士说,目前的体系是为了“教育 T2 人,让他们失去创造力”。“如果你没有做好犯错的准备,”他在 2006 年的一次 TED 演讲中说,“你永远也不会有任何创新。”这种情绪得到了美国最后一位旋转木马工匠阿特·里奇的呼应,他说“如果你在有生之年看不到自己在做什么,你就永远不会进步。”令人惊讶的是,一些对教育现状最直言不讳的批评者是教师自己。不管怎样,我们的学校继续把课桌整齐地排成一排,分发基于记忆的工作表,强调学生是一个要被填满的空容器,而不是一个完整的、有洞察力的、有创造力的人。

注意差距:企业家精神

随着技术继续以这样或那样的方式进行创造性破坏,并不是每个人都需要成为企业家才能获得成功。然而,他们需要有企业家精神。我们刚刚描述的经济中的动荡变化将需要更多的人自我导向,寻找他们自己的机会,并通过这些机会规划他们自己的道路。职业社交网站 LinkedIn 的创始人雷德·霍夫曼称这种必要的心态为“你的创业”

对于记忆教育和组织一致性的制度化思维来说,美国的超独立性感觉像一个遥远的神话,但钟摆正在摆回来。麦肯锡的苏珊·伦德说:“朝九晚五的工作是一种历史怪癖。”。“1900 年,45%的美国人是个体经营者。如今,随着优步、TaskRabbit 和 Airbnb 等新的就业和财富创造平台的崛起,我们似乎正在回归这种状态。”

未来十年,老年人在劳动力中的比例不断上升,这带来了双重挑战:随着技能越来越快地过时,越来越多的成年工人需要再培训。但大多数再培训项目仍未证明有效。

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

Image Credit: NY public library

尽管有许多文章写道,美国经济正在转向(或似乎回归)创业未来,但趋势与美国工人的偏好之间存在脱节。一份经济创新集团(EIG) 的报告发现,实际上,创业数量、寻找工作机会的人数以及换工作的人数都在下降。

EIG 将这种现象称为“经济活力”的消退,它影响了多种人口统计数据。EIG 联合创始人约翰·莱蒂耶里表示,就连千禧一代似乎也不愿意冒险,“他们将成为历史上最缺乏创业精神的一代”。在美国参议院 2016 年的一项民意调查中,千禧一代压倒性地回答说,创业对经济至关重要,他们认为在初创公司工作的人是成功的。然而,当被问及获得成功的最佳途径时,大多数人选择了在一家公司就业,并以此作为最佳选择。这种保守的偏好并非巧合。与前几代人相比,千禧一代背负着更多的学生债务,面临着不断上涨的住房成本,对未来的信心也更少。

在关于未来工作的政策辩论中,专家们强调机会、培训和技能。他们划分,因此很少提及金融稳定,人们需要探索这些机会。

没有人怀疑我们所处的局势是复杂和棘手的。员工不愿意冒险的原因有很多,但也有可能的是,如果他们负担得起,并且对自己的未来有足够的心理安全感,他们中的很多人会变得更大胆。很少有人把这个问题联系起来。

在政策讨论中,这些相互冲突的趋势——职业不稳定和收入波动——继续被视为完全独立和不相关的。关于未来工作的对话强调机会、培训和技能;与此同时,人们探索这些机会所需的金融稳定性却很少被提及。

如今的就业市场充斥着这些非常危险的坑坑洼洼,可以总结如下:

工作不那么确定和结构化

技能更快地失去相关性

工资变得非常不稳定

雇主提供较少的福利、培训和职业发展援助

传统的安全网不适合工人面临的混乱和不稳定的根源。

未来的工匠和女工匠

从所有这些竞争趋势中可以明显看出,在未来的世界中,追求风险和拥抱惊喜可能是最安全的路线。要让更多的人愿意与这种不确定性共舞,就必须打下更坚实的基础。此外,教育需要通过基于模拟的学习优先考虑个人的创造力、适应性和创业精神;重新投资于在职培训,而不仅仅是课堂或在线学习;更新安全网,为人们提供承担风险的稳定性、时间和资源。

当我们等待我们的政治领导人赶上这一现实时,个人可以带头超越自己。事实上,对于经济下滑的支撑结构来说,鼓舞人心的局外人已经存在——而且人们正在寻找的工作并不都是高科技。自动化的好处是真实的(如果过去的趋势保持不变,自动化将产生和它淘汰的一样多的新工作),但是有很多人在电脑屏幕之外寻找生活和有趣的工作。许多消费者都在寻找像工匠大师一样思考的企业家制造的产品。

保持手工在线

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

Charles & Hudson / Flickr / Creative Commons

2010 年,Etsy 联合创始人兼首席营销官马特·斯汀奇科姆(Matt Stinchcomb)成功完成了一件看似不可能的事情:他和他的合作伙伴从快乐、生态和更紧密联系的角度出发,而不仅仅是从经济角度出发,提出了一个创建持久企业的想法。最初是一个购买手工制品的市场,现已成为一个建立更紧密联系的人类规模经济的平台。然而,到 2010 年,他发现自己对自己的工作不再抱有幻想。

寻找我们内心的指南针。 Matt 搬到柏林住了几年,负责管理他们的国际业务。他的商业伙伴离开了,公司任命了新的首席执行官 Chad。乍得要求马特接管营销,再次。“我讨厌它。我对电子邮件打开率不太感兴趣,我更感兴趣的是我们可以通过该平台建立的真实联系,从营销的角度来看,这很难量化。”

“我儿子的出生让我开始质疑自己这辈子到底在做什么。我们和 Etsy 一起做了很多伟大的事情,但我知道我需要做一些服务来让这个世界变得更好。我考虑竞选公职,经营一家非营利组织……我探索了恐惧让我无法融合自己和我的企业的一些方式,我提出了一个建议,说‘如果我们真的想成为影响的引擎,就需要有人负责管理 it。不是某个人的工作。"

我们的内在指引将我们锚定在哪里。它包括目的、原则、激励、道德、个性、动机、身份、价值观、信仰、背景和使命。这些元素是你身份的核心。它们提供意义、动力、注意力和方向。你的身份塑造了你的作品。

创建我们自己的地图。 Matt 想更深入地思考,我们如何将业务作为影响的引擎,并在整个公司内开展工作,不仅为每个人提供工具,还为系统中的每个人提供最大化利益的愿望——他想精心打造业务。

2015 年,Etsy.com 上市,马特看到了一个向不同实体预捐赠股票的机会。首席执行官让马特负责新企业的战略,这导致了 Etsy.org(后来的好工作研究所)。马特利用空间和风险来重新想象商业是如何实践和教授的。他认为有必要“改变我们的教学内容、教学方式、教师和学生……我在所有那些营销书籍中读到的东西实际上并没有什么帮助。这是我在佛教书籍中读到的东西,或者是永恒的书籍,或者只是我从中学到的东西。”

恐惧让马特不敢拥抱风险。“我总是喜欢思考这样一个观点,即一切照旧正在毁灭世界。不寻常的业务可以拯救世界。”由于没有受过正规的商业教育,他在提出替代方案时感觉自己像个骗子。最终,当他朝着不同的方向前进时,他愿意被误解和挑战。

“恐惧并不在于你不是一个有直觉的人。害怕的是你实际上听从了你的直觉。我个人的感觉是脱离了自然,脱离了社区。这就是最初让我开始探索佛教的原因。我探索的越多,我就越不愿意处于这种分离的状态。我必须克服这些恐惧,才能将这两件事联系起来。”

我们构建的工具、技能和能力,通过使我们的体验变得可行来帮助我们。它们包括想法、概念、模型、方程式、理论、类别、启发法、图表、计划、配方、标准、准则和原型。理解抽象需要想象力。这些元素帮助你组织你的理解和保存知识。

**行走疆土。**对 Matt 来说,成功的关键是一些由来已久但经常被遗忘的基本原则:与特定问题(或媒介)的深层联系、对自己创造力的信心、通过试错进行自我管理,以及在工作中不断调整和学习的能力。以类似的方式,无数有创造力的企业家使用 Etsy 和 Ebay 等服务来创建,然后扩展他们的业务。

我们拥有的经验,我们应用的知识,帮助我们到达我们想去的地方。它包括悟性、诀窍、实用性、技能、理解力、感觉、本能、技术、方法和外表。所有的技能,即使是最抽象的,都是从身体练习开始的。有了这些基本原则,你就能在你的创造性媒介中体验和塑造品质,从而产生结果。

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

photo by Franco Vogt

Matt 能够静下心来倾听一个他觉得自己可以关注的问题。在他的职业生涯中,Matt 发现了一个问题,即商业不寻常,他正从多个角度看待这个问题。他经历过这个问题,首先是作为 CMO 和 Etsy 的联合创始人,其次是领导 Etsy 的基金会,最近是他的最新企业 Good Work Institute。没有死角。我们的工作经历就像波浪,让我们越来越接近一个我们迫切需要解决的问题。通过挖掘他内心的指南针,创建他自己的地图,并在这个领域中行走, 好工作协会 进行着一些不同于平常业务的事情。

自动化世界中的人类技能

主持葬礼评估法律案件规则协助手术艳舞机器人无所不为,很容易就能感觉到每个人都即将被取代。然而,无论是现在还是在可预见的未来,技术都有明显的局限性。

自动化的趋势是把事情做得更便宜、更小。因此,机器擅长处理数据和执行日常任务。然而,他们缺乏人类固有的特质,如幽默、同理心、社交能力、沟通、领导和激励他人。机器在一系列其他品质方面也不是特别好,这些品质通常被认为是工艺,预计对工艺的需求也会越来越大。这些包括深厚的专业知识、创造力、艺术性、适应性和导致创新的个人创造力。工匠大师致力于提高标准。

对于今天的员工来说,怎样才能消除恐惧,将威胁转化为机遇?迈出第一步需要心态的转变——将技术不仅仅视为必须操作的机器,而是必须掌握的挑战。而且更进一步,机器正在解决的问题需要对工人有很大的吸引力,因此在任何情况下解决它的强迫性和驱动力都有助于我们坚持解决最棘手的问题,使任何帮助工人的技术成为实现更大目标的手段。人们所关注的问题,如果是适合他们解决的问题,就会成为他们个人表达的媒介——就像工匠大师处理木头或石头的特性一样。

西门子美国公司的学徒们提供了一个例子,他们解释说他们的目标不仅仅是“按下按钮”的“机器操作员”相反,他们希望学会成为真正的“机械师”——能够理解大局、给机器编程、解决问题、运用判断力,并准确理解他们的编程将如何影响生产的员工。这种端到端的视角让我们回到了过去的手工工艺,并摆脱了那种让工人与机器竞争、以更低成本完成工作的生产线专业化。端到端的思考需要开放性、洞察力、自我管理以及寻求和发现问题的能力。

作为一名制造业工人,学会像工匠一样思考可以应用于亚马逊、沃尔玛和其他公司的仓库工人。故事并没有就此结束。随着技术的进步和工作性质的改变,学徒和工匠师傅都需要不断发展,承担风险,重新学习和适应。但是太多的人不会,除非我们现在就开始改变我们的教育、工作场所培训和员工支持系统。

克里斯汀·哈斯克尔博士是华盛顿州立大学的领导力顾问和兼职教授。她帮助忙碌的领导者对他们的学习和发展负责。她以“工作的未来需要手艺”为题写作。分享大师级工匠和女性在个人和专业掌握方面的经验,将于 2019 年底推出。报名参加她的(半定期)简讯 这里

有准备的头脑:像工匠一样训练头脑的 7 步指南

原文:https://towardsdatascience.com/the-prepared-mind-the-7-step-guide-to-managing-the-tension-between-feelings-feel-like-a-74c235fa07c5?source=collection_archive---------26-----------------------

为了解决我们现在和未来的邪恶问题,我们需要接受一个奇怪的、违反直觉的讽刺:随着各行各业的组织不断创造和采用人工智能等技术,员工需要通过提高他们的主观智能来保持相关性。

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

Photo credit: Unsplash

我们对某件事的感觉激发了参与,这导致我们发展对某件事的感觉的能力。感觉也有助于复杂化和情绪化。

生活的皱纹让我们变得情绪化。这一点在我们学习新东西的时候尤为突出。

我们不喜欢承认这一点,但我们都是感性的存在。目标不是克服情绪。目标是管理他们,让他们为你工作。当我们寻求中立,避免高点和低点时,稳定就会出现,无论发生什么,无论外部事件有多大波动。

工匠和妇女在他们的实践中理解管理感情意味着什么,因为他们对自己的工作有了感觉。当他们从事他们的工作并与他们的媒介和谐相处时,他们享受许多人所说的冥想状态。时间变慢了。之前不存在的选择突然出现。

这是一种没有极端情绪的平静。

以下是你可以达到这种状态的 7 个步骤,这样你就可以专注于学会学好,而不是对抗焦虑、沮丧或厌倦,当学习新东西时,这些焦虑、沮丧或厌倦不可避免地伴随着重复。工匠学会将这些情绪演变成一种警觉的、经过实践的预期技能

第一步:找到平静

“只要你愿意,你就有能力退出。内心的完美宁静在于头脑的良好秩序,即你自己的领域。”——马可·奥勒留,沉思

1949 年的一场火灾从根本上改变了我们灭火的方式。除了一个更有经验的工头道奇,其他人都逃离了火场,他却跑进了火场。

那需要勇气。

像道奇一样,我们必须为现实做好准备

稳定我们的神经,这样当独特的问题出现时,我们可以创造性地运用我们的能力。

第二步:控制自己的情绪,找到工作的感觉

在所有重要的自我认知中,理解你如何学习是最容易获得的――彼得·德鲁克,管理自己

尽管飞行员以飞行为生,他们还是会被焦虑所克服。同样的道理也适用于急救人员急救人员赛车手宇航员。其实这些职业都是训练出来不慌的。

当我们犯了错误或者事情没有按照计划进行时,我们经常会放弃我们深思熟虑的计划,转而采用老式的崩溃方式。

当我们积极管理我们的感觉时,我们承认它们是存在的,但可以被挑战和引导。只有这样,我们才能回到为我们的工作培养感觉的事情上来。

第三步:获得视角

“客观思考的能力就是理性;理性背后的情感态度是谦逊的态度。客观地使用一个人的理性,只有当一个人获得了谦卑的态度,当一个人从孩提时代拥有的全知全能的梦想中走出来,才是可能的。爱情依赖于自恋的相对缺失,需要谦逊、客观和理性的发展。我必须试着看到我对一个人的描述和他的行为之间的区别,因为它是自恋的扭曲,以及这个人的现实存在,而不管我的兴趣、需要和恐惧。”――埃里希·弗洛姆,爱的艺术

我们的第一反应从来都不是我们的错。它们只是我们的反应。

有时在几分钟内,有时更长,当情况本身没有改变时,感知发生了变化,但是我们对情况的理解发生了变化。事实没有改变,但我们的背景变了。

随着我们理解的改变,是时候质疑我们最初的反应,我们爬行动物的冲动了。这需要力量,是必须不断发展的肌肉。

第四步:看清现实,但不要抱得太紧

想象是对抗现实的唯一武器――刘易斯·卡罗尔,爱丽丝梦游仙境

工匠和妇女们在他们面前与“现状”一起工作,而不是“歪曲事实”粘土可能太干了。木头可能是湿的。怎么办?如何补救这些情况?

为了学习,我们必须稍微脱离现实。我们将问题抽象化以简化它们,并在这样做的过程中,激发我们的想象力。

通过想象什么可能与什么相对,我们失去了对细节的直接体验或感觉。失去这种接近现实的能力会激发我们的创造力,寻找新的解决方案。

我们可以为任何阻挡我们的东西做这件事

事实上,事情是真实的,但是有足够的灵活性去面对可能的现实。

第五步:寻求失败之间的张力&成名

“让困难改变你。它会的。以我的经验来看,我们只是在学习如何不逃跑方面需要帮助。”–Pema CHD rn

值得注意的是,我们选择如何看待事物。这意味着我们必须限制和扩大我们的视角,只要有助于我们保持中立的感觉,以获得我们工作的感觉。

不要与否认我们对表现不佳的焦虑的“假装直到我们成功”相混淆,这是一种选择性编辑的形式,目的是为了正确地将我们自己定位于手头的任务。

第六步:露面

灵感是存在的,但它必须找到你的工作巴勃罗·毕加索

日复一日,找到一种方式去爱这份苦差事。拥抱你工作的连续性,注意到许多小的、渐进的改进随着时间的推移会累积成实质性的变化。这导致了“好的改变”

在困难的时候出现需要勇气、长远的眼光和毅力。实现你心中的愿景需要努力。

第七步:寻找&发现问题

对确定性的追求阻碍了对意义的探索。不确定性正是促使人类展现其能力的条件。–埃里克·弗洛姆

只有当你出现在你选择努力工作的地方,你才能开始接受预见错误并在错误发生前阻止它们的训练。

工艺一起工作需要解决手头问题的独特态度和能力,还需要发现新问题的智慧视野和洞察力。看到缺少的东西涉及到巧思的运用。

稳定性为我们提供了将所有类型的组织视为机器的条件。这种想法使我们能够以可预测性、可靠性、效率和生产力的确定性前进。我们更新、复制、扩展并拥有它们。我们认为组织是由部分组成的,并致力于使它们的运营成本更低。

这种模式行得通,直到行不通。自然资源是有限的。人们会精疲力尽。市场变得过度饱和。

考虑到我们被迫考虑的变化量,这种方法的缺陷是我们对问题的看法仍然是预先定义的。但是越来越多的人相信商业是独立的机器。它是一个活生生的、会呼吸的人的网络,与支持网络互动,处理持续的、适应性的危机。这要求我们在巨大的不确定性面前继续前进。

一切照旧,依赖稀缺资源,是一条死路。这意味着商业作为不寻常一开始会感觉不自然。我们甚至需要新的词语来描述它。我们需要重新定义在一个组织中领导或工作的含义。

我们必须为自己创造一个坚实的基础,使我们能够质疑我们今天所看到的限制,抓住机遇,迎接挑战。像工匠一样,我们需要创造新的工具来解决出现的问题。

我们必须学会随机应变,因为对于我们今天遇到的危机,没有手册或卓越运营部门。

每个人都会遭受挫折:受伤、不合时宜的手术、家人去世、没有得到的晋升。

每个人都有梦想:你想写的书,你想开始的生意,你想追求的工作。

没有死角

我们最痛苦或最持久的经历,我们未完成的项目都是假设。它们回答了最初的“如果……会怎样”的问题,可以用在你的下一个实验中。

翻转你的视角——看穿消极、痛苦、可感知的失败——转向机遇和学习会带来更多的机遇、解决方案和创造性思维。

回到你所知道的,加倍旧的方法——很少给你提供更多的选择。也许有时候。但是现在呢?不再是了。

去,尝试不同的东西。尝试一些特别的东西。

如果你发现自己在责怪你的(精神)工具,做点什么吧。了解心智模型,了解工匠如何谈论他们如何学习并更好地做他们的工作,更重要的是,掌握所有权。前进需要改变,但改变本身并不意味着你在前进。正如苏格拉底所说,“未经审视的人生不值得过。”

克里斯汀·哈斯克尔博士是华盛顿州立大学的领导力顾问和兼职教授。她帮助忙碌的领导者对他们的学习和发展负责。她以“工艺和工作的未来”为主题写作分享大师级工匠和女性在个人和专业掌握方面的经验,将于 2019 年底推出。报名她的(半定期)简讯 这里

隐私惊喜

原文:https://towardsdatascience.com/the-privacy-surprise-1494bc3322a6?source=collection_archive---------16-----------------------

我是如何利用数据科学(几乎)暴露他人的私生活的

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

Photo by Orlando Leon on Unsplash

我的数据科学之旅始于一个简单的问题:

当我们的一辆车从 A 点出发前往 B 点时,我们可以预测什么?

那时,我在一家公司工作,该公司生产基于网络的车队管理解决方案,主要针对重型卡车车队。支持数据库有丰富的信息,所以,很可能,有一些东西可以用来预测一些有用的,不管那是什么。为什么不挖掘数据,为我们的客户提供一些有用的信息

回答这个问题被证明是一个棘手的问题,但是,谢天谢地,公司给了我解决这个问题的方法。我不仅可以接触到所有的数据,有时间去探索它,有时间去学习新的算法,还有一个有着好奇想法的同事的帮助。他会定期挑战我的假设,这帮助我推进解决方案。

从 A 到 B

在一些错误的开始之后,我意识到需要回答的第一个问题是,我所说的位置 AB 是什么意思?从概念上讲,答案似乎很明显,但却很难确定。我需要用经纬度测量的精确位置吗?围绕这样一个点的环形缓冲区?如果是,我应该使用什么半径?那么,我从哪里获取位置,以什么样的粒度?

经过一番研究,这些问题的答案变得相当清楚了。通过一种方法,我能够回答两个问题:如何表示位置,以及如何从收集的数据中选择位置。缺少的要素是一种基于密度的聚类算法,名为 DBSCAN。通过对每个车辆停靠点位置使用这种聚类算法,我能够确定每个车队最受欢迎的停留点。在聚类检测之后,我在聚类点周围创建了一个多边形地理围栏,作为后验筛查的聚类判别函数。你可以在这里找到这个方法论的图解

节点、边、图形

确定停靠点是构建行程图的第一步。每个停靠点对应一个图节点,边是它们之间的车辆行程。一旦检测到节点,通过修补单个行程(定义为停靠点之间的不同移动周期)来自然地计算图的边。

您可以想象这样的图表所传达的丰富信息,从频率统计到变量的分布,如燃料消耗、距离和任意两个停靠点之间的旅程持续时间。然而,在继续构建行程图之前,我需要确保聚类算法在卡车司机应该停车的区域生成合理的聚类。

停止质量

为了评估检测到的停靠点位置的质量,我选择了一个特定的客户车队,聚集了一年的行程数据,计算了所有的地理围栏,并在交互式地图上绘制了它们。果然,通常的嫌疑人开始出现:加油站,高速公路休息区,餐馆,工业和物流园区,边境管制,火车站,港口,所有这些都突然出现,变得可见。有些有些问题,但大多数都没有。

因此,我将注意力转向不太明显的停止位置,试图找到算法表现不佳的情况。经过一番搜索,我找到了一个我无法解释的探测到的停车点。

窥探的目光

可疑地点相对较小,位于一个偏僻的地方。那个特定位置的地图信息是不存在的——麦田中间的一条简单的道路。幸运的是,谷歌街景图像可用于该特定位置,但最近获得的图像显示了我期望看到的:没有任何有趣的东西。

这可能是我正在寻找的算法错误吗?我转向数据库,开始查询关于在那个集群上结束的旅行的所有数据。令我惊讶的是,我发现司机会在一个不知名的地方停车 30 到 40 分钟,这些停车时间的分布有一个小的方差。他们究竟在那里做什么?

硬币掉落

嗯,你现在可能已经想明白了。这些司机正在参加我后来称之为“路边娱乐”的活动。

当硬币最终落在我身上时,我惊呆了。这并不是因为我目睹了世界上最古老的职业之一(有人说间谍是最古老的职业)的数据轨迹,而是因为稍加努力,我就可以将一个司机的名字与这些数据点联系起来。通过一个相对简单的数据科学练习和正确的(或错误的)数据,我可以接触到其他人的私生活。我认为这种未经授权的访问是错误的

我很快放弃了这个想法,继续构建行程图。出行图成为许多激动人心的数据科学产品的数据基础,从出行异常检测到目的地预测。

然而,我永远不会忘记在意识到简单数据分析的力量后,我体验到的敬畏感和恐惧感。我对一个简单的数据分析所能释放出的力量感到敬畏,担心这种力量会被用在我身上,或者被用来对付我。

我现在坚信,数据科学界必须积极推广隐私最佳实践,还必须保持警惕,以防止无意中使用分析来揭示必须保持隐私的东西:我们的个人生活。不管怎样。

没有上下文的工具箱问题

原文:https://towardsdatascience.com/the-problem-of-tool-boxes-without-context-5129082274ed?source=collection_archive---------32-----------------------

数据科学培训中社会科学的不相容性

当计算机还是一个新事物,我们还没有让它在日常生活中负担过重的时候,就有一场关于它的潜在未来的辩论。这不是一个瞬间,而是一系列的会议、委员会、项目、文件和组织。一方面是计算机科学运动、结构化编程、程序制作,以及我们现在教授的一切(尽管有努力帮助,但大部分都很糟糕)。另一方最好的代表是彼得·诺尔,他说:

与大多数极力捍卫(和争论)特定语言特性的同事相反,Peter 将他的努力放在了元考虑上。

这句话也很好地总结了数据科学、信息科学和计算目前的困境。学术项目为包括什么技术、教授什么类型的统计学、包括什么语言而苦恼不已;然而,我发现大多数项目(包括我自己的项目和我的博士项目)都倾向于将所有元考虑因素放在一门课程上——社会科学课程。

我将要教授的课程。在这学期的课程中,我会写下这个过程,希望我会发现更多的无能为力和沮丧。这个条目关注于关于编程本身的位置的元考虑。

在与 Naur 作为编程目的的元考虑的最初存在相关的编程中似乎存在不匹配。他概述了编程的理论构建观点:

  1. “拥有程序理论的程序员可以解释解决方案如何与它帮助处理的世界事务相关联。”
  2. 拥有程序理论的程序员可以解释为什么程序的每一部分是这样的,换句话说,他能够用某种理由来支持实际的程序文本
  3. 拥有程序理论的程序员能够对任何修改程序的要求做出建设性的反应,从而以一种新的方式支持世界事务。

在这种编程的概念化中,程序员/编程团队构建了一个程序,不是因为它方便,而是因为他们有一个世界理论,通过这个理论,计算机程序可以有所帮助。可悲的是,这种对计算机科学的观点很快被结构化方法所淹没。

在这种方法中,最大限度地降低性价比是首要考虑因素。换句话说,我们寻求构建成本尽可能低的项目,以获得最大的利益…无论是谁资助的。在这种方法的支持下,我们已经非常有效地组织了计算中的复杂性,但这种组织的大部分是隐藏的,除了结果之外,几乎没有什么可讨论的。对于寻求提供“数据科学”或“信息科学”或“分析”课程的学术课程,这些课程将提供的大部分教学形式如下:

  1. 教授生产是如何运作的。
  2. 教授如何成为制作团队的一员。
  3. 为学生提供尽可能多的当前(或接近当前)工具来完成上述两项(例如,机器学习技术、当前编程语言、当前统计趋势等)。

因此,我们倾向于程序生产和基于团队的生产,使用内部为程序创建的方法,以最大限度地获得回报。从本质上讲,实际的考虑而不是理论的考虑已经占据了主导地位。考虑到围绕这项技术诞生和传播的事件本身,这并不令人惊讶。

然而,这种发展的结果是,任何学术程序都反映了计算文化的这些方面,由此产生的生产和理论的鸿沟只会扩大到所有那些不是行业一部分的人只能对这种程序的后果进行理论化的程度。

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

By the time many of us are done in our data science program, we have a well-formed toolbox with outlines for as many tools as we can fit inside of 2–6 years of courses. We can build IKEA furniture and replicate that process if pressed, but rarely can we say that we have the ability to build our own with our abilities. To say that social science is necessary is a difficult hypothesis to prove because it has not been necessary and many in the field now will never need it to do their work.

发生这种情况并不奇怪。快速增长并不是一个广为人知的深谋远虑的理由。然而,我们正处在一个十字路口,需要重新考虑编程作为理论构建/结构化编程的前景。本质上,我们实际上已经把自己编程到一个角落,而不是找出一个解决方案,我们只是开始朝着另一个角落的另一个方向画,就像乒乓球游戏中的球一样。

重新考虑是必要的,因为这不是所有考虑计算的人共有的内部问题,而是交叉性和混杂性的问题。在作为理论构建的编程中,哲学、社会和文化方面的考虑将是编程的一个特征,而不是与不可知的计算机程序的传播作斗争。那些哲学上的考虑将成为所有工具制造课程的一部分,而不是专注于计算的学生去上“社会科学课程”。

这些方法之间的鸿沟如此之大,似乎无法跨越。相反,我们专注于促进“小胜利”如果我们能够以某种方式创造一系列课堂教学,促进偶尔拉动价值杠杆,这就是一个胜利。这是一个令人失望的妥协,因为这项活动很快就占据了日常生活的大部分。

然而在社会科学中,也没有答案。虽然有将这个对象纳入分析的趋势,但是大多数社会科学对计算的讨论在上面概述的上下文中是没有用的。如果我要对作为理论构建/结构化编程的编程之间的鸿沟提出任何意见,那就是前者没有流行起来,因为它要求社会科学放弃他们过分热衷的对人类作为唯一能够基于意志行动的代理人的偏爱

结果就是教“社会科学”课就是讲课、阅读、理论,学生作业会被各方视为浪费。项目、项目经理和课程开发人员将尽最大努力提供等同于“小胜利”的素材,以努力吸引能尽快和尽可能有利地填补团队空缺的学生。甚至在我执导的节目中,我也这样做过。

当我看到学生要求他们写更多的代码,而不是写研究论文或在更广泛的全球背景下考虑他们的工作时,我很生气。但是最终,如果我强迫学生们写更多的研究,学生们会找到另一个项目,一个让他们的项目,只学习更多工具如何工作的项目。这些都存在,其中许多甚至不需要注册就可以使用。因此,在很久以前创建的结构化编程空间的影响下,我作为一个程序参与竞争的能力是微弱的。

因此,当我准备在一个面对面的项目中教授“社会科学”课程时(我自己的项目只在网上),我想知道一些技巧,一些我能做的无形的、系统的事情,当我努力纠正一个本身是无形的、系统的问题时,学生们不会注意到。我想知道如何纠正或修复社会科学问题,以便让学生以一种方式看待世界,包括批评他们的工具箱,批评他们通过编程教育学的挫折和陷阱学习的工具。

消失梯度的问题

原文:https://towardsdatascience.com/the-problem-of-vanishing-gradients-68cea05e2625?source=collection_archive---------22-----------------------

使用基于梯度的优化方法训练深度神经网络时会出现消失梯度。这是由于用于训练神经网络的反向传播算法的性质造成的。

这篇博客将涵盖哪些内容?

  1. **解释消失渐变的问题:**我们会明白为什么会存在消失渐变的问题。我们还将研究为什么这个问题在使用 sigmoid 激活函数时更容易观察到,以及 RELU 如何减少这个问题。
  2. **使用 TensorFlow 的比较研究:**我们将使用 sigmoid 和 RELU 激活函数在时尚 MNIST 数据集上训练 MLP 分类器,并比较梯度。

在我们能够理解为什么消失梯度的问题存在之前,我们应该对反向传播算法的方程有一些理解。我将不推导反向传播方程,因为它超出了本文的范围。不过我附了一本著名的的截图。

反向传播算法

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

Source: http://neuralnetworksanddeeplearning.com/chap2.html

观察:

  1. 从等式 1 和 2 可以看出,输出层中的误差取决于激活函数的导数。
  2. 从等式 2 中,我们可以观察到在前/隐藏层中的误差与权重、来自外层的误差以及激活函数的导数成比例。来自外层的误差又取决于其层的激活函数的导数。
  3. 从等式 1、2 和 4 中,我们可以得出结论,任何层的权重梯度都取决于激活层的导数的乘积。

渐变消失的问题是什么?

考虑 sigmoid 函数及其导数的图形。观察到对于 sigmoid 函数的非常大的值,导数取非常低的值。如果神经网络有许多隐藏层,随着我们乘以每层的导数,早期层中的梯度将变得非常低。结果,早期层的学习变得非常慢。

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

Source: https://codeodysseys.com/posts/gradient-calculation/

另一方面,RELU 函数的导数要么为零,要么为 1。即使我们将许多层的导数相乘,也不会出现与 sigmoid 函数不同的退化(假设 RELU 不在死区中工作)。然而,如果仔细观察等式 2,误差信号也取决于网络的权重。如果网络的权重总是小于零,梯度会慢慢减小。

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

Source: https://mc.ai/comparison-of-activation-functions-for-deep-neural-networks/

现在我们已经理解了消失梯度的问题,让我们训练两个不同的 MLP 分类器,一个使用 sigmoid,另一个使用 RELU 激活函数。

让我们开始吧。

导入库

import tensorflow as tf
import numpy as np
from tensorflow import keras
import matplotlib.pyplot as plt 
from tqdm import tqdm

下载数据集

我们将使用时尚 MNIST 数据集。它由 10 个不同产品类别的 70000 幅灰度图像组成。每个产品类别有 7000 个样本。你可以在这里阅读更多关于数据集的信息

我们将使用 Keras 下载时尚 MNIST 数据集。

fashion_mnist = keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)(60000,28,28)
(60000,)
(10000,28,28)
(10000,)

预处理

因为我们将使用 MLP 分类器,我们需要将 28*28 的灰度图像展平为 784 长的矢量。

x_train = x_train.reshape(60000,-1)
x_test = x_test.reshape(10000,-1)

图像的像素值介于 0 和 1 之间。我们将定义一个函数,通过移除平均值并缩放到单位方差来标准化数据集。

def normalize(x_train, x_test):
  train_mean = np.mean(x_train)
  train_std = np.mean(x_train)
  x_train = (x_train - train_mean)/train_std
  x_test = (x_test - train_mean)/train_std  
  return x_train, x_test

产品类别从 0 到 9 进行标记。我们将定义一个实用程序来将这些值转换成一个热编码。

def convert_to_one_hot(labels):
  no_samples = labels.shape[0]
  n_classes = np.max(labels) + 1
  one_hot = np.zeros((no_samples, n_classes))
  one_hot[np.arange(no_samples),labels.ravel()] = 1
  return one_hot

接下来,我们通过将原始值传递给上面定义的效用函数来预处理数据集。

x_train, x_test = normalize(x_train, x_test)
y_train = convert_to_one_hot(y_train)
y_test = convert_to_one_hot(y_test)

MLP 分类器

我们将使用张量流训练一个 MLP 分类器。我们将创建一个包括输入层和输出层的 6 层网络。我们将训练两个不同的模型,一个使用 sigmoid 激活函数,另一个使用 RELU 激活函数。在反向传播算法的每次迭代中,我们将存储关于每层权重的损失梯度。最后,通过一些可视化,我们将比较

  1. 最终层相对于早期层的梯度
  2. sigmoid 激活函数与 RELU 激活函数的梯度

让我们建立模型。

定义占位符

首先,我们定义输入和目标的占位符。

def get_placeholders(input_size, output_size):
  inputs = tf.placeholder(dtype=tf.float32, shape=[None, input_size], name="inputs")
  targets = tf.placeholder(dtype=tf.float32, shape=[None, output_size], name="targets")
  return inputs, targets

致密层

我们将定义一个函数来创建一个完全连接的层。每层的权重以格式*“kernel/”*命名。这将有助于以后提取梯度。稍后将详细介绍。

def dense_layer(input, hidden_units, layer_no, activation_fn= tf.nn.relu):
  weights_name = "kernel/{}".format(layer_no)
  bias_name = "biases/{}".format(layer_no)
  weights = tf.get_variable(weights_name, shape=[input.shape[1], hidden_units], initializer = tf.contrib.layers.xavier_initializer(seed=0))
  biases = tf.get_variable(bias_name, shape=[hidden_units], initializer = tf.zeros_initializer())
  output = tf.add(tf.matmul(input, weights), biases)
  if activation_fn:
    return activation_fn(output)
  else:
    return output

前向网络

接下来,我们定义一个函数来创建网络的正向传递。我们将激活函数应用于每个隐藏层。输出图层不通过激活函数,因为输出图层的 softmax 激活将包含在损失定义中。

def build_network(features, labels, hidden_units, num_layers, activation_fn):
  inputs = features
  for layer in range(num_layers-1):
    inputs = dense_layer(inputs, hidden_units[layer], layer+1, activation_fn)
  logits = dense_layer(inputs, 10, num_layers, None) 
  return logits

损失和优化器

因为我们想要在 10 个不同的产品类别之间进行分类,所以我们将 softmax 激活应用到输出层以获得最终的概率。我们将使用交叉熵损失作为衡量标准来确定我们的网络有多好。Tensorflow 提供了一个方便的实用程序来使用TF . nn . soft max _ cross _ entropy _ with _ logits _ v2 一起计算这两者。

def compute_loss(logits, labels):
  loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels = labels , logits= logits))
  train_op = tf.train.AdamOptimizer(0.001)
  return loss, train_op

如果你仔细观察,我们没有在优化器上添加最小化操作。最小化操作在内部执行两个操作。首先,它根据权重和偏差计算损失的梯度。其次,它使用上面计算的梯度更新权重和偏差。

由于我们希望每次迭代的梯度值来研究梯度消失的问题,我们将定义两个独立的操作,一个是计算梯度,另一个是应用梯度。当我们训练我们的模型时,我们将再次讨论这个问题。

精度

我们还将定义一个实用程序来计算模型的准确性。 tf.argmax(logits,1) 将返回概率最大的索引。由于标签是一位热编码的, tf.argmax(labels,1) 将返回值为 1 的索引。我们比较这两个值来确定正确的预测和准确性。

def compute_accuracy(logits, labels):
  correct_predictions = tf.equal(tf.argmax(logits,1), tf.argmax(labels,1))
  accuracy = tf.reduce_mean(tf.cast(correct_predictions, tf.float32))
  return accuracy

网络中的权重

我们将定义一个函数来返回网络中所有权重的名称。还记得我们将权重的名称定义为内核/ <层编号>吗? Tensorflow 在内部将“:0”附加到变量名称上。你可以在这里了解更多信息

def get_weights_name(num_layers):
  return ["kernel/{}:0".format(layer+1) for layer in range(num_layers)]

火车模型

我们将定义一个函数来训练模型。我们将使用 sigmoid 和 RELU 激活来训练我们的模型。

def train_model(features, labels, hidden_units, epochs, batch_size, learning_rate, num_layers, activation_fn):
  tf.reset_default_graph()
  input_size = features.shape[1]
  output_size = labels.shape[1]

  *# get the placeholders* 
  inputs, targets = get_placeholders(input_size,output_size)

  *# create a dataset*
  dataset = tf.data.Dataset.from_tensor_slices((inputs, targets))

  *# make the required batches* 
  dataset = dataset.batch(batch_size)

  *# initialize the iterator for the dataset* 
  iterator = dataset.make_initializable_iterator()

  *# get the next batch*
  x_batch, y_batch = iterator.get_next()

  *# forward network*
  logits = build_network(x_batch, y_batch, hidden_units, num_layers, activation_fn)

  *# compute the loss*
  loss, train_op = compute_loss(logits, y_batch)

  *''' instead of directly using the minimize function on the optimizer,* 
 *we break the operation into two parts*
 *1\. compute the gradients*
 *2\. apply the gradients*
 *'''*
  grads_and_vars_tensor = train_op.compute_gradients(loss, tf.trainable_variables())
  optimizer = train_op.apply_gradients(grads_and_vars_tensor)

  *# compute the accuracy of the model*
  accuracy = compute_accuracy(logits, y_batch)

  init_op = tf.global_variables_initializer()
  saver = tf.train.Saver()

  with tf.Session() as sess:
    sess.run(init_op)
    def_graph = tf.get_default_graph()
    gradient_means = []
    losses = []
    accuracies = []
    train_samples = features.shape[0]

    iteration = 0
    *# get the name of all the trainable variables*
    trainable_variables = [var.name for var in tf.trainable_variables()]
    for epoch in range(epochs):
      epoch_loss = 0
      total_accuracy = 0
      *# run the iterator's initializer*
      sess.run(iterator.initializer, feed_dict={inputs:features, targets:labels})
      try:

        while True:
          gradients = []
          batch_loss, grads_and_vars,  _ , batch_accuracy = sess.run([loss, grads_and_vars_tensor, optimizer, accuracy])
          if iteration % 100 == 0:

            *# create a dictionary of all the trianbale variables and it's gradients*
            var_grads = dict(zip(trainable_variables, [grad for grad,var in grads_and_vars]))

            *# get the gradients of all the weights for all the layers*
            weights_grads = [var_grads[var] for var in get_weights_name(num_layers)]

            *# take the mean of the gradients at each layer*
            mean_values = [np.mean(np.abs(val)) for val in weights_grads]
            gradient_means.append(mean_values)

          epoch_loss += batch_loss
          total_accuracy += batch_accuracy*batch_size
          iteration += 1
      except tf.errors.OutOfRangeError:
        pass
      print("Total Iterations {}".format(iteration))
      acc = total_accuracy/train_samples
      accuracies.append(acc)
      losses.append(epoch_loss)
      print("Epoch: {}/{} , Loss: {} , Accuracy: {}".format(epoch, epochs, epoch_loss, acc))

  return losses, accuracies, gradient_means

由于函数非常大,我们将把它分解成更小的部分来理解。

将数据输入模型

首先,我们使用数据集和迭代器向网络提供数据。如果你想了解更多关于数据集和迭代器的细节,你可以参考这篇博客。然后,我们使用之前定义的例程来定义逻辑、损失、优化和准确性操作。

inputs, targets = get_placeholders(input_size,output_size)
dataset = tf.data.Dataset.from_tensor_slices((inputs, targets))
dataset = dataset.batch(batch_size)
iterator = dataset.make_initializable_iterator()
x_batch, y_batch = iterator.get_next()

logits = build_network(x_batch, y_batch, num_layers, activation_fn)

loss, train_op = compute_loss(logits, y_batch)
accuracy = compute_accuracy(logits, y_batch)

优化操作

如果您还记得,我们没有将最小化操作添加到优化器中,因为我们需要梯度的值。我们可以使用 *tf.compute_gradients 计算 Tensorflow 中的梯度。*我们可以使用 tf.apply_gradients 使用上述梯度更新权重和偏差。

grads_and_vars_tensor = train_op.compute_gradients(loss, tf.trainable_variables())optimizer = train_op.apply_gradients(grads_and_vars_tensor)

训练模型

with tf.Session() as sess:
    sess.run(init_op)
    def_graph = tf.get_default_graph()
    gradient_means = []
    losses = []
    accuracies = []
    train_samples = features.shape[0]

    iteration = 0
    trainable_variables = [var.name for var in tf.trainable_variables()]
    for epoch in range(epochs):
      epoch_loss = 0
      total_accuracy = 0
      sess.run(iterator.initializer, feed_dict={inputs:features, targets:labels})
      try:

        while True:
          gradients = []
          batch_loss, grads_and_vars,  _ , batch_accuracy = sess.run([loss, grads_and_vars_tensor, optimizer, accuracy])
          var_grads = dict(zip(trainable_variables, [grad for grad,var in grads_and_vars]))
          weights_grads = [var_grads[var] for var in get_weights_name(num_layers)]
          mean_values = [np.mean(np.abs(val)) for val in weights_grads]
          epoch_loss += batch_loss
          total_accuracy += batch_accuracy*batch_size
          iteration += 1
          gradient_means.append(mean_values)
      except tf.errors.OutOfRangeError:
        pass
      print("Total Iterations {}".format(iteration))
      acc = total_accuracy/train_samples
      accuracies.append(acc)
      losses.append(epoch_loss)
      print("Epoch: {}/{} , Loss: {} , Accuracy: {}".format(epoch, epochs, epoch_loss, acc))

  return losses, accuracies, gradient_means

我们使用下面的代码计算了每一次迭代中每一层的梯度平均值。

var_grads = dict(zip(trainable_variables, [grad for grad,var in grads_and_vars]))weights_grads = [var_grads[var] for var in get_weights_name(num_layers)]mean_values = [np.mean(np.abs(val)) for val in weights_grads

我们首先创建一个包含所有可训练变量和梯度的字典。接下来,我们只提取权重的梯度,并计算每层的平均值。

运行模型

我们已经定义了运行模型所需的所有例程。让我们定义模型的超参数,并运行 sigmoid 和 RELU 激活函数的模型。

features = x_train
labels = y_train
epochs = 20
batch_size = 256 
learning_rate = 0.001num_layers = 5
hidden_units = [30,30,30,30]
input_units = x_train.shape[1]
output_units = y_train.shape[1] *# run the model for the activation functions sigmoid and relu*
activation_fns = {"sigmoid":tf.nn.sigmoid,
                 "relu":tf.nn.relu}loss = {}
acc= {}
grad={} for name, activation_fn in activation_fns.items():
  model_name = "Running model with activation function as {}".format(name)
  print(model_name)
  losses, accuracies, grad_means = train_model(features = features,
              labels = labels, 
              hidden_units = hidden_units,                                 
              epochs = epochs, 
              batch_size = batch_size, 
              learning_rate = learning_rate, 
              num_layers = num_layers, 
              activation_fn = activation_fn)
  loss[name] = losses
  acc[name] = accuracies
  grad[name] = grad_means

让我们使用一些可视化工具来比较这两个模型的精确度和梯度。

形象化

精度

def plot_accuracy(accuracies, title):
  for name, values in accuracies.items():
    plt.plot(values, label = name)
    plt.legend(title=title)plot_accuracy(acc, "Accuracy")

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

我们可以看到,用 RELU 函数训练的模型比用 sigmoid 训练的模型更准确。还可以观察到,sigmoid 模型需要更多的时间来实现高精度。**为什么?**由于渐变消失的问题,早期层的学习速度较慢。

梯度

让我们绘制每一层的梯度。

def plot_gradients(grads):
  sigmoid = np.array(grads['sigmoid'])
  relu = np.array(grads['relu'])
  for layer_num in range(num_layers):
    plt.figure(figsize=(20,20))
    plt.subplot(5,1,layer_num+1)
    plt.plot(sigmoid[:,layer_num], label='Sigmoid')
    plt.plot(relu[:,layer_num], label='Relu')
    plt.legend(title='Layer{}'.format(layer_num+1))plot_gradients(grad)

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

从上面的图表中我们可以得出两个主要结论

  1. 与最终层中的梯度相比,早期层中的梯度幅度非常低。这解释了渐变消失的问题。
  2. 与 RELU 模型相比,sigmoid 模型的梯度值非常低。

摘要

在这篇博客中,我们讨论了渐变消失的问题,以及当我们使用 sigmoid 函数时如何缓解这个问题。我们还讨论了 RELU 函数如何帮助大大减少这个问题。

感谢阅读博客。希望你喜欢这篇文章。请在下面的评论中留下你的建议。

这篇文章的全部代码可以在这个 Jupyter 笔记本中找到。

参考

  1. https://en.wikipedia.org/wiki/Vanishing_gradient_problem
  2. http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
  3. https://adventuresinmachine learning . com/vanishing-gradient-problem-tensor flow/
  4. https://stack overflow . com/questions/40925652/in-tensor flow-0-in-a-variables-name 的含义是什么
  5. http://neuralnetworksanddeeplearning.com/chap2.html

数据的问题

原文:https://towardsdatascience.com/the-problem-with-data-a7e54926bb06?source=collection_archive---------38-----------------------

作为分析师,我对数据的抱怨

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

Photo by Nick Hillier on Unsplash

数据。数据。数据。我们有这方面的数据吗?我们能检查数据吗?我需要备份我的议程。这些数字看起来很差。隐藏数据。

今天,我们看到这四个字母的单词受到了前所未有的关注:用最合理的猜测实现业务绩效最大化。也许有些人会感到惊讶,但统计分析已经存在了相当一段时间。20 世纪以来,人们。2005 年,O’Reilly 先生决定给这个术语改头换面,诞生了“数据科学”。营销——1,社会——零。

人工智能和机器学习等术语已经被贬低到了创造数据淘金热的地步,许多公司都在争先恐后地想要分一杯羹,因为担心这会削弱他们的竞争优势。不幸的是,这种争夺导致了对这个不断发展的领域的错误理解,导致人力资源部门和老派数据人员的招聘少得可怜。

围绕水晶球时尚的长期错觉也导致了公司对基本数据需求的忽视。确保数据是任何决策过程的核心,应该是任何领导者的首要任务;毕竟,如果没有利益相关者的支持,拥有花哨的算法又有什么用呢?你知道他们说…【to】跑之前先走。

不要滥用“数据驱动”这个术语

这是给你的快速数据 101:

数据驱动——数据就是产品。

数据通知 -(大多数公司如何运营)嗯,这是一个有趣的见解。我会记住的。

我认为,数据驱动并不是简单地对产品查询提供一个是/否的答案,来决定功能/设计的构建。相反,产品本身应该具有内在的底层数据依赖性。一个例子是网络安全平台,使用机器学习和自然语言处理来对抗电子邮件威胁。或者是一款教育科技应用,其中的推荐算法为学生提供个性化课程。

公司滥用了数据驱动的含义,而更多的时候,不仅仅是数据驱动。工作流通常在下游,而不是上游,这使得数据功能看起来更像是支持,而不像是咨询部门。很多时候,数据缺乏解决其他部门要求的问题的上下文,这导致了经典的“我可以拍我的头”循环:

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

the analyst’s wheel of doom

相反,对双方来说,预先确定问题的背景会更有成效。

这确保了:

  1. 提出了正确的问题
  2. 您的数据同事可以提供超出当前问题范围的额外价值;产品/营销/其他可能需要转向

数据就是,并且在未来几年将无处不在。随着这种情况的发生,对其他部门提高数据流畅性以处理基本查询的期望只会越来越高。反过来,它也可以打击房间里的大象,也就是说,数据往往在替罪羊的产生中扮演主角,这通常是作为被动参与者的结果。项目时不时会出问题,但如果你是自己拉数据的人,就更难推卸责任了…

数据的局限性

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

Photo by Franck V. on Unsplash

可悲的是,这个世界并不像我们希望的那样二元。无论是设计、产品还是营销,其核心数据都是为了降低风险和进行优化。在采取行动之前,每一个选择都经过分析、计算和逻辑推理。这导致我们过于依赖数据来做决定。这是一种极度规避风险的创新方式,更不用说数据无法提供答案的基本灰色领域了。

我说的这些温暖的石墨区域是什么意思?尽管齐心协力,指针就是不动,结果高管们把香蕉丢在了自己的闺房里。产品可能会经历动荡;客户不再喜欢它,一些有想象力的人决定是时候改变一下平台的核心了。

但是你什么时候决定做出这些改变呢?当优化达到极限时。当一个产品在每个可能的 KPI 上都明显走下坡路时。

数据是回顾性的,看用户如何在产品的现有范例中操作。因此,产品的范围限制了用户的行为。假设你房间的墙壁是黑色的。公平地说,这是明显的冒犯,所以你很少花时间在那里。是血腥的墙壁。*把它们染成蓝色。*你现在更喜欢它了,所以你在房间里多呆了 5 分钟。哇哦。但是如果你改变的不是墙壁呢?如果你决定变得疯狂,把你的房间变成一个迪斯科舞厅:闪光灯,爆米花机,沙坑,等等。你现在会在房间里做什么?

您选择构建的内容会改变客户与 it 的交互方式。因此,使用现有的客户数据来确定下一步要建造什么是一种相当有限和有缺陷的思维方式,尤其是如果你的房间一开始就没有任何有用的东西。如果你的基线已经有点糟糕,持续的 A/B 测试是没有意义的。有点像在闪粉里滚屎。它可能会变得有趣,但仍然是垃圾。

我们可能对下面的经典图表很熟悉。数据可以优化产品的性能(通过你选择的 KPI 来衡量),使其达到局部最大值,但不是全局最大值。只有创造性的解决方案才能做到这一点,但会增加业务风险。这可能是真的,但是我们经常没有意识到迭代优化也是在创纪录的时间内达到全局最大值的机会成本。

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

image source

我们面临的现实是,总会有 A/B 测试没有考虑到的另一种变化。这里的要点是,你不需要等到优化达到极限,因为现实世界的问题从来都不是线性的。从来没有一个“正确”的时间来做出直觉驱动的决策。

商业战略在直觉驱动和数据驱动的决策中找到了自己的位置。处于超越其他公司而非创新阶段的单体公司只是进行小的调整和优化,完全由数据驱动。但当历史数据很少时,年轻的公司能够承担得起冒险,以免受到那些期望在 6 个月内获得 10 倍回报率的风投们的审查。

突然之间,把生意赌掉似乎不那么不负责任了…

数据科学职位发布的问题是

原文:https://towardsdatascience.com/the-problem-with-data-science-job-postings-8a3542f38724?source=collection_archive---------4-----------------------

现实世界中的数据科学

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

偶尔,你会注意到一些你意识到很久以前就应该注意到的事情。你开始到处看到它。你想知道为什么更多的人不谈论它。

对我来说,“每隔一段时间”是昨天我在SharpestMindsSlack workspace 中滚动浏览#jobs 频道的时候,而“某些东西”是数据科学行业的一个大问题,我真的认为我们没有足够认真地对待这个问题:绝大多数数据科学职位描述并没有传达他们所广告的职位的实际要求。

我怎么知道这个?首先,在我们的内部论坛上发布的很多职位都包含了发帖用户(通常是 SharpestMinds 的导师)的留言,比如“我知道帖子上说他们在寻找 X 和 Y,但他们实际上对 z 很满意,”我也经常收到他们直接发来的信息,说着同样的话。

换句话说,当高级数据科学家被要求“真正”招聘时,他们的第一步往往是完全扔掉招聘启事。

这并不好,有几个原因。首先,误导性的职位描述意味着招聘人员会收到大量不相关的申请,候选人会浪费大量时间去申请不相关的职位。但还有另一个问题:职位描述是培训标签,任何优秀的有抱负的数据科学家都将使用它来优先考虑他们的个人和技术技能发展。

尽管这些残缺不全的招聘信息有明显的不利之处,但公司还是不断地发布这些信息,所以一个很自然的问题是:为什么?为什么招聘信息如此令人困惑(因为它们未能清楚地说明他们期望候选人具备的技能),或者如此离谱地过分(“寻找一名在深度学习方面有 10 年经验的机器学习工程师……”)?

原因有很多。首先,公司会根据应聘者解决实际问题的(感知)能力来做出招聘决定。因为有许多方法可以解决任何给定的数据科学问题,所以很难将工作描述缩小到一组特定的技术技能或库。这就是为什么如果你认为你可以解决他们的问题,即使你不知道他们要求的具体工具,向一家公司提交申请通常是有意义的。

另一个可能的原因是,许多公司实际上并不知道他们想要什么,尤其是那些拥有相对较新的数据科学团队的公司,要么是因为他们的数据科学工作的早期阶段迫使每个人都成为万事通,要么是因为他们缺乏所需的专业知识,甚至不知道他们有什么问题,以及谁可以帮助解决这些问题。如果你遇到一个奇怪的不具体的帖子,值得花时间找出它属于哪个类别,因为前者可能是一个伟大的经验建设者,而后者可能是一个灾难。

但或许最重要的原因是,招聘信息通常是由招聘人员撰写的,他们一点也不专业。这带来了不幸的副作用,导致偶尔出现不连贯的问题(“必须有 10 年以上的深度学习经验……”“……包括自然语言工具包,如 OpenCV……”)或没有人可能满足的问题。

这种工作资格马戏的最终结果是,我经常收到我们的学员关于他们是否有资格获得一个职位的问题,尽管他们已经阅读了互联网上关于该职位的所有信息。这些问题实际上惊人地一致——以至于我认为值得在这里列出最常见问题的答案,以简单的规则形式,你可以遵循,以确保你申请的是正确的角色(而不是被虚假的要求吓跑):

  • 如果一家公司要求超过 6 年的深度学习经验,那么他们的帖子是由一个零技术知识的人写的(AlexNet 在 2012 年问世,所以这基本上把范围缩小到了 Geoff Hinton 的随从)。除非你想从头开始建立一个数据科学团队(如果你是这个领域的新手,你不应该这样做),否则这应该是一个大的危险信号。
  • 如果你没有工作经验,就不要去申请那些需要两年以上工作经验的工作。
  • 当他们说“或同等经验”时,他们的意思是,“或大约 1.5 倍的理学硕士或博士工作经验,在那里你至少从事与此相关的工作”。
  • 如果你满足了 50%的要求,那可能就足够了。如果你达到了 70%,你就可以走了。如果你达到 100%,很有可能你大材小用了。
  • 公司通常更关心你能解决的问题,而不是你懂什么语言。如果他们说 Pytorch,而你只知道 TensorFlow,你可能会没事(除非他们明确强调 Pytorch 部分)。
  • 不要忽略类似“你应该注重细节和目标驱动,并在压力下茁壮成长”这样的话。它们听起来像是通用的、千篇一律的陈述——有时确实如此——但它们通常是真诚地试图告诉你你将会进入什么样的环境。至少,你应该用这些来暗示你应该强调自己性格中的哪些方面,以便与面试官建立融洽的关系。

当然,这些规则没有一个是放之四海而皆准的:奇怪的公司会坚持只雇佣符合他们所有规定要求的候选人,而其他公司会对了解 framework X 的人特别感兴趣,会忽略那些可以解决类似问题,但使用不同工具的人。但是因为没有办法仅仅从职位描述中得知这一点(除非他们明确说明了这一点),所以你最好的选择几乎总是赌自己,把你的帽子扔进圈里。

如果你想联系,你可以在 Twitter 上找到我,地址是 @ jeremiecharris!

P 值的问题是

原文:https://towardsdatascience.com/the-problem-with-p-values-f056245f78a3?source=collection_archive---------23-----------------------

对 p 值及其操纵潜力的简单解释。

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

p 值是最强大的统计指标之一,但经常被误解和误用。为了理解这一统计数据的影响范围和局限性,我们必须对它是什么和不是什么有一个共同的理解。有鉴于此,让我们从一个例子开始讨论,这将有助于建立对它的直观理解。

什么是 p 值?

美国法律体系的一个基本基石是无罪推定。“排除合理怀疑”证明有罪的责任在州政府身上。在民事案件中,举证责任要低得多,其标准被称为“证据优势”从实践的角度来看,我们可以将这些负担分别解释为 99%和 51%的确定性水平。在实践中,我们通常不能以这种方式量化证据的强度,但让我们假装我们可以。

通过建立假设检验,我们可以评估每个新证据的重要性。零假设,或默认假设,是证据是无意义的;另一个假设是证据是有意义的。我们反向工作,根据证据计算零假设为真的概率。考虑经典电影《我的表弟文尼》中的一个例子。

文尼·甘比尼(乔·佩西)正在为两名被指控抢劫商店并枪杀店员的客户辩护。对他们不利的证据主要基于三名目击证人的证词,他们指认了被告和他们的汽车。在无罪推定下,三个证人错误指认嫌疑人的可能性有多大?唯一的解释就是文尼所描述的:

有没有可能,两个被告进入商店,从货架上挑选了 22 件特定的商品,让店员拿钱,找零,然后离开,然后两个不同的人,开着一辆相似的车,进去,开枪打死店员,抢劫他,然后离开?

不是不可能,只是可能性很小。那就像是百万分之一的坏运气。百万分之一的概率就是我们所说的 p 值:当零假设为真时,发现观察到的证据的概率。p 值越低,证据的重要性越大。显著性(或置信水平)计算为 1 减去 p 值。在这种特殊情况下,这些值是:

  • p 值:0.0001%
  • 置信度:99.99%

当检察官试图让陪审团相信 p 值很低时,被告的律师会试图证明 p 值很高。

什么不是 p 值?

这里需要注意的是,置信水平并不意味着有罪的可能性;这需要对全部证据进行评估。当辩方陈述案情时,它旨在表明,在一个客户是无辜的世界里,对其客户不利的证据更可信。虽然我很想用 Vinny 精湛的盘问来说明这一点,但如果你没看过,我不想破坏你的电影!所以,让我们用一个不同的例子。

考虑一个犯罪现场,调查人员发现了被告的 DNA 和指纹。如果被告没有犯罪,找到这样的证据是非常不可能的;所以 p 值会很低,我们对证据的置信水平会很高。但是如果我们后来发现犯罪现场是被告的家呢?突然间,证据变得更可信了。事实上,如果调查人员在嫌疑人自己的家里没有发现这样的证据,那才奇怪。给定证据的 p 值上升,置信水平下降。

科学和研究中的 p 值

从科学的角度来看,研究人员充当检察官,试图证明某一特定现象的存在,例如二氧化碳水平对全球平均温度的影响。任何给定实验的无效假设是不存在关系,另一个假设是更高的 CO2 水平导致更高的温度。与法律检察官不同,这些研究人员可以精确测量 p 值,科学界决定结果是否足够重要,可以添加到更大的证据中。换句话说,作品能出版吗?

正如人们所料,这激励研究人员寻找更高的置信水平和更低的 p 值来证明他们的工作并获得报酬。合法出版物的公认置信度为 95%(p 值为 5%)。当发现结果仅在 94%的置信水平下显著时,会发生什么?

p-黑客

放弃不是一个选项。获取更多的数据可能会非常昂贵。这种情况有可能导致一些不道德的行为。当处理具有数百或数千个输入的模型时,是否可以简单地忽略一些影响结果的精选特征?怎么会有人知道?

答案很简单:同行评议。其他研究小组重复这项工作来验证结果,作为各自领域的专家,他们将能够识别这些类型的缺点。这是否会使所有结果完全无效?不一定。没有必要把孩子和洗澡水一起倒掉。只有一个问题:绝大部分研究资金用于支持新的研究,很少用于复制。根据美国国家科学、工程和医学科学院:

科学和大众媒体都表达了对再现性和可复制性的关注。随着这些问题的曝光,国会要求国家科学院、工程学院和医学院进行一项研究,以评估与可重复性和可复制性相关的问题的程度,并提供提高科学研究的严谨性和透明度的建议。

报告确实提供了一些可行的方案来解决这个问题,但是更重要的一点是这个问题还没有解决。

这是否意味着科学研究不可靠,不可信?绝对不行。仅仅因为复制和再现性的挑战没有被解决,并不意味着没有管理这个问题的方法。美国国家科学院的研究还指出,“研究综合和元分析…是评估研究机构可靠性和有效性的有价值的方法。”

为什么要进行元分析?

为了理解这个问题的答案,考虑一个有四个玩家的飞镖游戏。这个特殊的游戏很简单:第一个击中靶心的人获胜。下图显示了每位玩家的飞镖落点:

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

正如我们所看到的,每个玩家的投掷都有很大的偏差,他们中没有一个人可能很快赢得比赛。然而,考虑一个观众观看这场比赛,并研究每个球员如何投掷。通过考虑所有的偏见,那个人在后续比赛中击中靶心的机会要高得多。

元分析也是同样的工作方式。通过对给定主题的大量研究子集进行评估,考虑所有偏差,我们可以建立模型,提供足够的现实近似值。然而,这些近似值在结果中通常具有较高程度的差异,因此尽管它们是有帮助的,但它们不是永久的解决方案。

其他考虑

这里值得注意的是,p-hacking 并不总是故意的。如果一个特定的数据点使得结果不那么可靠,那么这个数据点本身实际上是有效的吗?或者只是噪音,无论如何都应该省略?答案很简单:视情况而定。谁将使用这项研究?这是一个可以在未来实验中控制的变量吗?我们是在试图理解历史数据,还是在为未来打造一个工具?这些问题不容易回答。突然间,研究人员不得不表现得像一个商人,试图做出一个最能满足所有利益相关者的决定。

实现这一点的一种方法是故意破解 p 值,然后回过头来理解结果的适用性是如何受到限制的。这些限制必须充分记录在结果中,以避免误用。不幸的是,这种细微差别往往在这些发现被面向消费者的媒体出版物发现时就消失了。即便如此,也不能保证研究人员已经充分考虑了所有的限制。

回归模型中的 p 值

暂且把 p-hacking 问题放在一边,还有一件事需要注意:p 值可以帮助我们理解变量之间是否存在关系,但它们不能告诉我们这些关系的强度。

考虑一下我最近进行的一项关于州枪支法对凶杀率影响的分析。作为最初数据审查的一部分,我想知道吉福兹法律中心分配的等级是否与凶杀率充分相关。p 值为 0.14%(置信水平:99.86%),很明显存在关系。只有一个问题:看看当我们用散点图绘制分数和谋杀率时会发生什么。

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

Source: What can Machine Learning Tell Us About America’s Gun Laws?

很明显,随着年级升高,杀人率下降,但也有很多例外。为了量化关系的强度,我们使用 r 平方分数。这个分数告诉我们州枪支法可以解释凶杀率变化的百分比。这里,r 平方值仅为 6.73%。

我已经能看到标题了:“新研究发现枪支法超过 99%有效。”不要!我不是这么说的!过度依赖 p 值来传播结果,而没有适当考虑其他指标,往往会导致研究被广泛滥用。

外卖食品

p 值本身没有任何问题。它们是帮助我们理解证据重要性的宝贵工具。然而,过度依赖单一指标或单一研究来支持更广泛的假设是危险的。此类研究的消费者必须保持更广阔的视角,媒体机构必须避免炒作任何单个研究的结果。最终,p 值是有用的工具,但这取决于我们是否正确地使用了这个工具。

“空间”的生产

原文:https://towardsdatascience.com/the-production-of-space-2a06e14c4601?source=collection_archive---------20-----------------------

在 80,000 个谷歌学术结果和 180,000 篇文章中搜索一个智力比喻的来源

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

原载于 组件

经济衰退后的几年,一群新毕业的常青藤联盟毕业生发现自己被文学界拒之门外,并在网上出版了《新调查》( New Inquiry)杂志(New Inquiry ),该杂志曾被《纽约时报》( New York Times )(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)曾)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约时报)(纽约他们可能一直在敲哈珀的门,但他们几乎不会说 glossies 的温和方言。《新调查》充斥着晦涩难懂的巴黎语言,好像是毕业后被流放的学者写的。多年来,这份刊物(似乎)成为媒体研究、批评理论和文学领域最大的论坛之一。来自新学校的学生和他们的教授终于在网上有了自己的家。

现在,在《泰晤士报》称其为“文学幼兽”的摇篮八年后,《新调查》将自己定位为曾经拒绝其作家的同一机构的不可忽视的农场联盟,将他们安置在像《纽约客》(一个是职业作家)和《新共和》(作为出版社)这样的地方

Lol。读者,我发誓我试着用不同的方式写这两段。看在上帝的份上,有没有办法砍掉一些这种新的?也许可以参考一些其他的杂志?但是他们去了那些地方工作,去了解新的事物。也许我可以谈论一些地方,而不是新的调查?但那才是我发现这篇文章基础的地方。也许其他东西可以代替新学校?但很少有地方能让人联想到新学院几十年来发展起来的钢铁般的多音节词,该学院也位于曼哈顿,与该出版物有着更密切的关系。

写完那篇文章后,我在谷歌上搜索了“新学校”“新调查”,想看看这种关系有多紧密。第二个图像结果是文本的截图,链接到一个页面,开始是,“瑞秋·罗森菲尔特是 The New Inquiry 的联合出版商,Verso Books 的创意总监,新学院创意出版和批判新闻部的副主任,以及 2017-2018 年 NEW INC .的成员,”NEW INC 是新博物馆的一个项目。

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

A plausible explanation behind the inclusion of certain words in The New Inquiry is that, as its essays tend to run longer, it’s more likely to include any words. This could help explain why its median ratio is 1.83:1, meaning that of the sampled words, half of them are used 1.83 more times frequently than in other publications on average, and half of them are used less than 1.83 times more frequently. (This calculation is Boolean: if the word occurs in an article, it has a value of 1. There is no measure of the number of occurrences.) Both “body”/”bodies” and “space”/”spaces”, however, are even more frequently used. At their respective ratios of 3:1 and 2.75:1, they’re 1.75 and 1.52 median absolute deviations away from the median, arguably hugging the threshold of significance. Both terms used together have a ratio of 6:1, 4.94 deviations away, and placing the two terms together in 97th percentile of word ratios. But I can hear you huffing with opprobrium that I’ve mixed like with unalike — this is a graph for the ratios of single words, but “body”/“bodies” and “space”/“spaces” together are two words. This would never pass peer review! It’s true, and to perform an analysis of all the possible two word combinations that appear in the publication relative to others would have my computer running for days. But methodological purity aside, whatever unalike things have been imposed on the graph above, the fact is that the appearance of “bodies” and “spaces” together in the same text is 500 percent likelier to occur in The New Inquiry than anywhere else sampled, a ratio that sits snugly between “homogenize” (with a ratio of 5.89:1), “complicity” (5.96:1), “commune” (6.05:1) and “interchange” (6.10:1).

这篇文章的基础如下:

一天晚上,我去了的新调查的网站,逛了逛,没有别的原因,只是想看看这个地方在做什么,然后意识到我一直在“身体”这个词上徘徊。到处都是尸体!它们在文章中,在字幕中,在出版物的推文中。它们出现在这样的场景中,“当桑德拉·布洛克在重力中脱衣服时,她展示的与其说是一个身体,不如说是一台机器。这就是工作流影院[。]”或者“拒绝医学检验参数的身体是不吉利的身体。”或者,“‘治愈文化’(自闭症群体使用的一个术语,用来描述将自闭症身体作为医学康复对象的机构和话语的机器)促使国家保护自己免受自闭症化身对其公民的神经未来构成的假定威胁。”

偶尔,这些身体会与另一种元素融合,成为更伟大的东西——不仅有身体,还有身体和空间,这两个小名词结合在一起时会发出核聚变的智力能量。“手杖本身是一个被设计的物体,是设计在身体和空间/场所之间,以及在非标准和标准身体之间产生的不同(通常是对立的)关系的一个明显标志。”或者,“与莫塔和鲁宾-利维的没有身体的性化空间不同,Grindr 提供了平铺在智能手机屏幕的无空间中的性化躯干:没有空间的身体,纯粹的网格,没有大量、无摩擦、平滑的色情脉冲。”

我和朋友提起过这件事。他们有没有注意到这一类作家中“身体”和“空间”的优势?一个人回复我说:

Pitchfork:食人王 PU$$Y 凭借他的热门单曲“Goop on Ya Grinch”【7.6】

—芥子虎(@ JucheMane)2017 年 4 月 14 日

“身体”和“空间”传统上在科学、医学和数学领域被一起使用。有闵可夫斯基小体、细胞体、凸小体和多泡小体;有细胞外空间,空泡空间和 Banach 空间。至少在英语世界,在 20 世纪的大部分时间里,这些术语很少出现在科学期刊或专利申请之外的同一份文件中。

牛津大学音乐教授加西娅·乌祖尼安(Gascia Ouzounian)将“空间”具体开始向人文学科大规模迁移的时期确定为 1974 年,当时法国马克思主义哲学家亨利·列斐伏尔(Henri Lefebvre)发表了《空间的生产》,并“帮助推出了一种空间性的概念,其范围包括身体、行动和建筑环境。”太空的制作1991 年被翻译成英文;对其翻译的评论通常承认其不可穿透。地理学家蒂姆·昂温(Tim Unwin)写道:“列斐伏尔论点的复杂性及其难以捉摸的特点,使得在任何特定时刻都很难准确解释他的意思。”。“这不仅是因为他在整本书中以不同的方式发展了类似的概念,还因为他的句子结构经常不透明……在一个层面上,列斐伏尔的项目是让人们重新思考他们对社会的时间解释的想法。他使用的语言的复杂性迫使读者重新思考……重要的不是他写了什么,而是这本书在读者中引起的反应。”

列斐伏尔不仅仅支持任何一个单独的主题,他最终想把对空间的思考融入到批判性的话语中。他那个时代的马克思主义是资本和劳动之间公认的辩证法,但是它缺少了一个重要的部分:空间呢?工人和资本之间不只是简单的关系,而是工人、资本和生产所依赖的土地、工人居住的城市、他们工作的办公室等等之间的关系。其中每一个都由另一个生产,并产生另一个:资本创造工人的条件,工人再生产资本,资本生产空间,空间生产工人和资本的条件,等等。“因为……每种生产模式都有自己特定的空间,”列斐伏尔写道,“从一种模式到另一种模式的转变必然需要新空间的产品。”这些生产方式的本质,资本自我复制的方式,可以从“解码”这些空间中得到。空间“代码”实际上包含了空间包含的一切:“空间代码不仅仅是阅读或解释空间的一种手段:更确切地说,它是生活在那个空间中,理解它,并生产它的一种手段。因此,它将语言符号(单词和句子,以及通过符号化过程赋予它们的意义)和非语言符号(音乐、声音、召唤、建筑结构)结合在一起。”

列斐伏尔相信他所谓的“瞬间”的潜力——超越资本的意识和超越的短暂事件。这些时刻可能包括对资本如何运作的突然感知,对列斐伏尔来说,这可能意味着对空间生产的揭示。为了在他的理解范围内冒险举一个小例子,我将提供一个我最近的“时刻”:今年冬天,我去一个叫 The Bean 的地方喝茶,这是纽约市的一家咖啡连锁店,试图将自己标榜为酷星巴克。事实上,我去那里喝茶,看了《T2》的影评《T3》。我喝了一杯茶,把这篇文章加载到浏览器上,开始阅读,然后意识到我不能,因为就在我打开它的时候,艾薇儿·拉维尼的“复杂”从咖啡馆的扬声器里爆发出来,这让我无法集中注意力。我的第一反应是举起我的双手,你怎么就不能在这个该死的镇上得到任何和平和安静。但在这一刻,我意识到无法专注于像马克思主义空间分析这样的东西并不是咖啡馆的错误,而是资本运作的自然产物。音乐——以及之前和之后的每一首歌——是一种中和了所有批判性思维的声音,实际上与这些时刻相反。豆子正是我们目前的生产模式(流行音乐的各种认知效果在其中变得如此重要)将产生的空间类型,也正是这种空间将继续延续这种模式。这不是咖啡馆或其工作人员故意做的事情,这只是资本在 2019 年碰巧产生的那种空间——它的空间后代。

对列斐伏尔来说,我在咖啡馆的活动有三个空间平面。首先是咖啡馆的物理空间,它嵌套在城市的物理空间中(包括列斐伏尔所说的“摩天大楼傲慢的垂直度”),等等。这是欧几里得空间。在我自己的大脑中有一个区域,在那里我微弱的想法与声音发生碰撞。这是精神空间。然后是实体网络带来了咖啡馆——拥有咖啡豆的有限责任公司或私募股权公司,为有限责任公司提供信贷的银行,起草法律允许有限责任公司保护所有者免于责任的政治机构,将茶从国外带到我在曼哈顿的杯子的供应链,将艾薇儿·拉维尼放在扬声器上的音乐制作和传播系统,等等。这是抽象空间。

位于并产生这个空间的,当然是身体。列斐伏尔写道:“理论思维……重新接纳了身体和空间,在空间中,以及作为空间的生成器(或生产者)。根据列斐伏尔的观点,人体本身是理解空间的必要条件,无论是通过构建空间还是成为空间的一部分。而身体就是所经历的这个空间。它让我感受到扬声器里的音乐,让我坐的椅子充满了为我周围的人创造空间的东西,等等。正如昂温引用列斐伏尔的话写道,“……他渴望将身体重新纳入他的分析框架。他特别担心“西方哲学已经背叛了肉体;它积极参与了隐喻化的伟大过程,这个过程使抛弃了身体;而且它已经否定了身体。"

列斐伏尔认为,这三种类型的空间被错误地局限于应该调和的遥远学科。数学家之类的研究欧几里得空间,心理学家之类的研究精神空间,抽象的材料留给社会学家和理论家以及其他人。相反,正如资本主义实际上是资本、劳动和空间之间的三分法一样,空间也包含三个关键的组成部分,正确地研究它需要同时考虑这三个部分,并理解身体在创造、被创造和体验这些空间中的作用。

“认识论-哲学思维未能为一门很长时间以来一直在努力涌现的科学提供基础……这门科学是——或将会是——一门关于空间的科学

这就是列斐伏尔想要太空产品做的事情——为一个新的科学领域奠定基础。

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

An approximate proportion of academic articles on Google Scholar that both contain “bodies” and “spaces” in a scientific, mathematical or medical context, or in a patent. Behind this graph is something of a mess: article text can’t be pulled from behind journal paywalls, so the only text available to analyze are brief Scholar previews (e.g., “…many lesbian spaces (like the Michigan Womyn’s Music Festival) have excluded lesbian-identified male-to-female transsexuals. Through an analysis of historical inclusion and socio-political exclusion, this essay examines the relationship between ‘birth bodies,’ gender and…”), titles (e.g., “The materiality of gender: looking for lesbian bodies in transgender history”) and publication names (e.g., “Journal of lesbian studies, 1999 Taylor & Francis”). This isn’t quite enough text for topic modeling or any type of custom classification system that is both reliable and doesn’t consume massive resources. The best, quickest solution is to search for specific words, prefixes and suffixes that identify the subject matter of the article. If any of the available preview text, article title or journal name contained any in a somewhat slapdash list of words (in this case, ‘sulfate’, ‘sulfide’, ‘equation’, ‘differential’, ’embryo’, ‘patent’, ‘ology’, ‘cell’, ‘medicine’, ‘math’, ‘ceous’, ‘medical’, ‘surgery’, ‘surgical’, ‘milli’, ‘centi’, ‘giga’, ‘methyl’, ‘iod’, ‘immuno’, ‘osis’, ‘particle’, ‘convex’, or ‘electro’), the article was classified as belonging to a discipline other than the humanities or social sciences. That includes partial words, so “math” captures “mathematical”, common in journal names. Which is to say, this list is hardly complete; the only way to classify these texts with any certainty would be to do so manually. That means that more articles of the scientific/patent variety have been left out, not the other way around: the actual results of this graph, if performed with total accuracy, would look much starker, with larger values on the y-axis before 1991.

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

去年,有人在 Twitter 上问大英图书馆参考服务,该服务最受欢迎的书是什么。这是空间的制作,从 1997 年到 2018 年 4 月请求了 701 次。在弗吉尼亚大学的图书馆,我第一次借阅了这本书,由于需求量很大,这本书有四个小时的使用限制。

列斐伏尔不是第一个在非科学语境中使用“身体”的人,他也不是第一个在这些语境中使用“空间”的人——在这方面,他在 20 世纪 70 年代的法国哲学中有很多同伴。但是不管它对地理和城市研究领域的影响如何(从大卫·哈维等有影响力的地理学家对它的处理来看,这种影响是巨大的),也不管它的因果关系有多深,《空间的产生》是一部大型的、有影响力的作品,是在一场语言运动中,一种新的写作方式在一代知识分子和学者中生根发芽。在他的书的 1991 年英译本出版后(大约在那个时候,像朱迪斯·巴特勒这样的人也使用了类似的术语),在传统术语使用领域之外的人们大量采用了“身体”和“空间”的用法。在论文发表 20 年后,在谷歌学术,带有“正文”和“空格”的论文更可能来自人文和社会科学期刊,而不是医学、生物学、数学或专利。

曾经有一段时间,这种发展会让我觉得诺姆·乔姆斯基的一句话是确凿的证据,这句话多年来代表了我对学术左派语言的大部分立场:

“如果你观察正在发生的事情,就很容易明白发生了什么。假设你是某所精英大学的文学学者或人类学家或其他什么人。我的意思是,如果你认真工作,那很好,但你不会因此获得任何大奖。另一方面,你看看大学里的其他人,你会看到物理系和数学系的这些人,他们有各种各样复杂的理论,当然我们无法理解,但他们似乎理解这些理论,他们有原则,他们从原则中推导出复杂的东西,他们做实验,他们发现它们要么有效,要么无效。这真是令人印象深刻的东西。所以我也想变成那样。所以我想有一个理论。在人文学科,在文学批评和人类学等等,有一个领域叫做“理论”。我们就像物理学家一样:他们说不明白,我们也能说不明白。他们有大词,我们也会有大词。他们会得出深远的结论,我们也会得出深远的结论。我们和他们一样享有盛名。现在如果他们说,好吧,看,我们在做真正的科学,而你们没有,这是白人男性性别歧视,你知道,布格瓦-不管答案是什么。我们和他们有什么不同?好吧,这很吸引人。”

这没有错。乔姆斯基断言,非科学学者已经采用了数学和科学的语言,这从字面上看是正确的:列斐伏尔认为他的工作是一门新科学的开端,随着时间的推移,“身体”和“空间”在整个非科学领域的采用表明,这种语言的采用正是所发生的事情。弗雷德里克·詹姆逊(Frederic Jameson)在他的短文《论行话》(on 行话)中,自己也承认了这一点:他写道,为了要求写作清晰,他回避了这样一个问题:“为什么在所有其他科学都变得越来越专业化、外行人不可能接触到的时候,研究像资本主义这样复杂的社会会变得更容易。”

但尽管没有错,我对这一立场的支持——哲学家和学者的难懂语言几乎总是脱离现实的遥远抽象,没有任何用处——即使没有完全解开,也足以让我更加同情詹姆逊。我们应该猜测事物的结构,而那些结构通常呈现出违反直觉的形式。讨论它们的出发点通常是一种基于经验和感知的哲学,这种哲学将具有不同于乔姆斯基在他的书中采用的残酷而平淡的风格,尽管这些书有巨大的价值,但通常相当于列举美国的轰炸战役。我敢肯定,我们中的大多数人在某个时候通过发现乔姆斯基形成了自己的政治身份,认识到这种类型的工作的重要性,但它的潜力是有限的(特别是在美学上)。詹姆逊的告诫是,为了在一个资本主义已经殖民了生活的每一个元素的时代把握资本主义,一个人必须从本质上理解所有领域的一切——人类的性欲、潜意识、空间等等——我在其中生活的每一天,对我来说似乎都更加合理。

因此,乔姆斯基的漫画实际上可能提出了一个他不想问的问题:在这一代知识分子中——当代马克思主义者、后现代主义者、批判理论家、所有与他们相邻的事物以及他们的每一种组合——为什么没有更多的科学?或者更准确地说,这些数字去了哪里?《T4 资本论》的乏味在很大程度上要归功于马克思的长篇算术。在真正的经验主义方面的少数连续努力,如皮埃尔·博迪厄的《区别》和托马斯·皮凯蒂的《21 世纪的资本》都受到了如此的称赞(和引用),人们不禁要问为什么他们的数据收集和验证方法没有被更多地采用。为什么我们总是以抒情的科学姿态结束,而不是科学?

我给六个人看了“身体”和“空间”的增长图,并询问他们的解释。每个答案都包含不同的细节,但每个答案都以同样的告诫结束,即完全回答这个问题非常困难,需要对这些词的发展进行彻底的知识史研究,这样做可能会花费一篇论文的工作量。

不过,这不是一篇论文;这是几千字对几幅图的沉思,我承认这是为了尽可能地避开没有提到这个和那个的指责。在这张图表背后有无限可能的原因。一个是美国的科学和经济部门被企业利益所控制,这些企业不太愿意接触女权主义学者,也不知道如何让实验发挥作用。另一个原因是所有领域的专业化程度越来越高,这使得任何人都不愿意从事与博士项目的超专业重点不直接相关的工作。我们可以列出其他人,但我们会在这里一周。

但是,虽然“身体”和“空间”增长的具体、直接原因可能会占用一个会议,但任何涉及人的情况的现实是这样的,用乔姆斯基可能想要的常识性术语来表述:

人类是拟态生物;我们复制其他人做的事。正是这种趋势催生了一千种新事物。在过去的一个世纪里,我们逐渐形成了基于图像和名人的身份,我们——将名人的行为与名人的奖金联系起来——模仿名人的行为。随着越来越多的人模仿一种特定的行为,其他人不是模仿名人的行为,而是模仿群体的行为,趋势就形成了。学者也是人,因此他们容易模仿名人的行为。因此,它们受制于趋势。几十年来,由于美国学者的庆祝冲动在美国没有什么可信的对象可以模仿,他们把目光投向了巴黎,这是世界上仅有的几个知识分子受到好莱坞级别关注的地方之一,他们模仿了他们。他们可以用特定的词语来表达他们的智慧,我们也可以用特定的词语来表达我们的智慧。

1974 年,在 New York Review of Books,中,经济学家 Robert Heilbroner(the New School lol)写了一条警告,我认为这条警告与这类词语的使用有关:“马克思主义没有权利,也肯定不是理解现实的唯一模式,包括它比任何其他方式都更生动地揭示了现实的一个方面,即资本主义的历史和存在本质。”

科学术语的采用散发出一种客观性和不变性的感觉,即事实上没有其他理解现实的方法,正如没有细胞外空间就没有理解有机体的可行方法一样。它给人一种经验工作已经完成的印象。通常情况下,它不会。往往不能,也往往不需要。但有时可以,有时应该。

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

画面由 石南 组成

基于神经网络的加密货币盈利能力预测

原文:https://towardsdatascience.com/the-profitability-of-cryptocurrency-forecasting-using-neural-networks-a73af24feb09?source=collection_archive---------21-----------------------

利用 LSTM 网络预测以太坊加密货币

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

Photo by André François McKenzie on Unsplash

介绍

加密货币市场已经迅速建立,其不稳定性给研究带来了重大挑战,需要对其行为进行严格检查[1,2]。如今,加密货币在投资部门和市场从业者的日常生活中占据了重要位置[3]。

本文介绍了一个关于预测和交易加密货币的决策支持系统,并试图利用深度学习对以前开发的此类系统进行简单的盈利能力分析。特别是使用深度学习算法来预测以太坊加密货币在短期内的收盘价。

数据从 Poloniex 交易所(ETH/USD 时间序列)收集,并通过长短期记忆网络进行分析。这种深度学习模型是在之前的研究中经过严格的基准测试和各种指标下的性能评估后与其他模型区分开来的。实验表明,上述模型可以用于以科学有趣的方式实时预测以太坊收盘价,并且具有有希望的准确性。

实验

下面显示了预测系统的简单盈利能力分析。为了评估预测的有效性,随机选择了三个时间范围。下行周期、上行周期和包含两者的周期是有区别的。下行期包含 2018 年 7 月 26 日至 2018 年 8 月 13 日的时间序列数据。上行期包含 2019 年 6 月 09 日至 2019 年 6 月 23 日的时间序列数据。混合时段包含从 2019 年 7 月 13 日到 2019 年 9 月 20 日的时间序列数据。

通过开发交易模拟,使用预测系统(即主动交易)与被动交易策略(即买入并持有)进行交易的利润得到测试。购买并持有是一种简单的投资策略,个人购买股票/加密货币硬币并长期持有,目标是它们在很长一段时间内逐渐增值[4]。

考虑两个代理,一个使用主动交易策略( a ),一个使用买入并持有策略( b )。他们每个人都以 1000 美元开始。代理人 b 以每个时间段开始时花光所有钱的价格购买硬币。他在期限结束时以这个价格卖掉所有买的硬币。代理人 a 根据其预测系统的决定买卖硬币。他根据每 30 分钟对下一个 5 分钟实施的算法的预测来购买或出售加密硬币。这种简单的方法基于以下流程图:

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

Trading Decision Flowchart

下行期

代理人 a 总共做了 292 笔交易,现在他拥有 732.36 美元。他用主动交易的利润是负的-267.64 美元。经纪人 b ,使用简单的买入并持有策略,已经做了 2 笔交易,一笔在期初,一笔在期末,现在他拥有 608.55 美元。他的利润为负-391.45 美元,比代理商的 a 低 123.81 美元。

Downward Period — Trading Simulation

上升期

代理商 a 总共完成了 271 笔交易,现在他拥有 1447.99 美元。他使用主动交易的利润是 447.99 美元。代理人 b ,使用简单的买入并持有策略,已经完成了 2 笔交易,现在他拥有 1365.86 美元。他的利润是 365.86 美元,比代理商的 a 低 82.13 美元。

Upward Period — Trading Simulation

混合期

代理人 a 总共做了 1429 笔交易,现在他拥有 1088.95 美元。他使用主动交易的利润是 88.95 美元。代理人 b ,使用简单的买入并持有策略,已经完成了 2 笔交易,现在他拥有 801.53 美元。他的利润是负的-198.47 美元,远远低于代理人的利润。

Mixed Period — Trading Simulation

原型系统

一个利用预先训练和加载的 LSTM 神经网络进行预测的原型实时“交易”模拟系统正在 Heroku 上运行。请随意合作和/或提供建议。当然,专业的市场从业者确实知道这种系统的优点和缺点。

结论

这项研究绝不是提供一个完整的实际预测盈利的加密货币系统。然而,这是科学实验,仍然需要用来自社交媒体和/或其他来源的更多外源数据而不是实际价格数据来校准。该系统的盈利性分析还应考虑所使用的交易平台的交易费用。最后但同样重要的是,上述研究提出了一个决策支持系统,而不是一个你应该完全盲目跟随的系统。好吧,即使在金融界,人们说“过去的表现不是未来结果的指标”,这也不应该阻止人们开发和试验这样的模型和系统。

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

参考

[1] Dark,c .,Emery,d .,Ma,j .,Noone,c .:加密货币:十年——公告–2019 年 6 月季度。公报(2019 年 6 月)。

[2] Farell,r .:对加密货币行业的分析。沃顿研究学者杂志。论文 130 (5),1–23(2015)。

[3]朱迪奇,g .,米尔恩,a .,维诺格拉多夫,d .:加密货币:市场分析和前景(2019)。

[4]买入并持有定义,https://www.investopedia.com/terms/b/buyandhold.asp

获得数据科学工作应该做的项目

原文:https://towardsdatascience.com/the-projects-you-should-do-to-get-a-data-science-job-457d3fe7d660?source=collection_archive---------9-----------------------

我相信未来工作质量的最佳预测者是以前的工作质量。许多数据科学经理也持有这种观点。并非每个人都从事过数据科学工作,但每个人都可以将数据科学项目放在一起,以展示他/她的工作质量。如果你制作了很棒的项目,并在你的 github 和简历上展示出来,你将极大地提高你获得工作的机会。

项目之所以伟大有几个原因:

  • 它们表明你是一个主动的人,并且愿意解决大问题
  • 它们表明,您可以将数据科学技术应用于您每天遇到的实际问题
  • 他们允许你“展示”你理解一个概念,而不是“讲述”
  • 你可以完全控制你项目的主题,所以你可以迎合他们来说明特定的技能
  • 基于项目的学习是实际获得数据科学技能和学习新工具的最快方法之一
  • *如果它们强大而有意义,它们可以和在职经历一样好,甚至更好

*更多关于这个的最终想法

在本文结束时,我希望您理解如何选择项目以及它们的生命周期是如何工作的。我还希望你探索我推荐的 4 个项目,为自己的成功做好准备。

本文详述了我最受欢迎的 YouTube 视频之一。如果你感兴趣,你可以在这里查看: 获得数据科学工作应该做的项目

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

你如何选择一个项目主题?

数据科学项目最重要的一点是,它应该对您来说是独一无二的。项目越具体,你越能解释它的意义,越好。独特的项目很棒,因为它们展示了你的一些个性,很难复制。不幸的是,我遇到过在 github 上复制项目或者使用大部分代码而不注明出处的候选人。

我认为你应该从事符合以下类别之一(或两者都符合)的项目:

(1)它们对你来说是有趣的或重要的 —如果你对你项目的主题感兴趣,你会更倾向于去做,并且做得很好。当你接受采访并被要求谈论工作时,这一点就很明显了。当候选人对一个项目感到自豪时,你可以看到当被问到这个项目时,他们明显变得兴奋起来。

他们的目标是你希望进入的行业或工作,做这样的项目可以证明你为什么要申请一个特定的职位。它们也说明你对你可能从事的领域有所了解(本文解释了为什么这很重要)。

碰巧的是,我的大部分项目都是关于体育的。这是我的工作和激情的交集。在我看来,这是最好的情况。

数据科学项目的组成部分是什么?

所有数据科学项目都应该有一些共同点。你的项目应该大致遵循下面的生命周期,你应该能够详细讲述每一步。

第一步:计划并确立项目的理由——这是启动一切的步骤。你并不总是知道你会发现什么,但是你应该试着用你的分析来回答一个问题或者解决一个问题。在开始第二步之前,有一个你想解决的具体问题。

(例如,是否有可能以足够的准确度预测 NBA 比分,以创造下注优势)

第二步:数据收集——网上有很多查找数据的好地方(kaggle、google、reddit 等。).你既可以从这些地方选择一个数据集,也可以自己查找数据。我发现,如果候选人从 API 中提取数据,或者用其他更独特的方式收集数据,他们就会与众不同。拥有别人不知道的数据增加了你的独特性和“惊喜”因素。

(例如使用 python 从 basketball 引用中抓取数据)

第三步:数据聚合&清理 —这一步通常被忽视,但却是最重要的一步。格式化和清理数据的方式会对分析结果产生很大影响。您应该能够解释您在处理空值、选择包含或移除某些功能以及处理异常值时所做的决定。

(例如,删除了明星球员因负荷管理而休息的比赛,这是一个较新的现象,会扭曲我们的历史结果)

第 4 步:数据探索 —在分析的这一部分,重要的是表明你理解数据的细节。您希望深入了解每个特性的分布,并评估这些特性之间的相互关系。为了显示这些关系,你应该使用像箱线图、直方图、相关图等视觉效果。这一过程有助于你了解哪些变量与你试图回答的整个问题相关。

(例如,每场比赛得分的直方图、投篮次数等。)

第五步:数据分析 —在这里,你开始评估你的数据集的趋势。我建议使用数据透视表来了解不同组之间或不同时间之间是否存在差异。可视化工具也应该在这部分分析中大量使用。与上一步非常相似,这一步有助于您理解要在模型中测试哪些变量。

(例如,每支球队每场比赛的得分,投篮得分与得分的散点图等。)

第六步:特征工程——你分析的这一部分极其重要(所以它有自己的步骤);然而,它通常应该与数据分析阶段并行完成。特征工程有两种形式:(1)创建可以提高预测质量的新特征,或者(2)改变数据的性质,使其更适合于分析。

在构建新功能时,您应该富有创造性。您可以使用其他函数的组合,从数值型转换为分类型(反之亦然),或者将变换函数应用于某个要素。我最喜欢的例子是,如果你有地理数据点,而不是仅仅抛出纬度/经度,你用它们来确定一个共同的位置的距离。

(例如,计算出的玩家效率等级,一个综合指标,来自现有数据,用于模型中)

另一种类型的特征工程使数据更适合您的分析。许多人使用主成分分析(PCA)或因子分析来减少数据中的特征数量。对于某些类型的模型,这可以改善结果并减少多重共线性。对于其他分析,您还必须缩放数据。当算法中使用几何距离时,这一点很重要。

(例如,对具有许多相关变量的数据集使用 PCA,以便我们可以使用线性模型来预测季节点)

第 7 步:模型构建和评估 —我将在下一节更深入地探讨这一点,但是您应该比较多个模型,以确定哪一个对您的特定问题具有最佳结果。您希望使用训练和测试数据进行交叉验证,这样您就可以看到哪个模型概括得最好。您还应该特别注意如何评估您的模型。能够解释您选择评估指标的原因。

(例如,比较随机森林、拉索回归和 SVM 回归预测 NBA 得分)

第 8 步:将模型投入生产(可选) —如果我看到有人通过网页或 API 将他们的模型“活”起来,我总是会印象深刻。这表明他们乐于使用更高级的编程技术或软件包。我比较偏爱 python,所以一般用 flask 来做这个,但是我见过别人用 R Shiny。

(例如,制作一个网页,在你选择了一个队、一个对手和一个地点之后,给你一个预测的分数)

第九步:回顾——你应该总是回顾项目,看看你本可以做得更好的地方。不是所有的项目都很完美(大多数不是),所以你应该能够指出面试官可能会在你的分析中戳到的任何漏洞。我还建议你根据当前项目的发现来思考下一个项目。

(例如,我应该在分析中考虑速度,我想看看我是否能找到裁判通过这种方法影响结果的比赛)

如果你想了解更多关于如何将数据科学项目从包中分离出来的技巧,请查看:制作令人难忘的数据科学项目

你应该做的 4 个项目

按照上面的生命周期步骤,这些是我推荐的项目。您绝对不应该将自己局限于这些项目,但是做这些项目将会说明您拥有大多数基础数据科学概念的经验。

项目 1:预测一个连续的结果(回归) —首先,你应该创建一个有数字结果的问题。然后你应该比较各种线性和非线性回归模型如何回答这个问题(OLS、拉索、支持向量机、决策树、随机森林等)。).你应该能够解释你所使用的技术的优点和缺点。你也应该考虑把它们结合起来(合奏),看看你得到什么结果。

项目 2:预测分类结果(分类器) —这里的步骤与回归项目非常相似。这一次,你要选择一个分类问题来解决(二进制或非二进制)。同样,你应该比较各种算法在回答这个问题上的表现(朴素贝叶斯、KNN、SVM、决策树、随机森林等)。).

项目 3:根据相似性对数据进行分组(聚类) —聚类可以帮助您从未标记的数据中找到意义。这是从噪声中建立类别的最有用的方法之一。我建议做一个使用这种技术的项目,以显示你对无监督学习的理解。

项目 4:使用先进的技术(神经网络、XG 提升树等。) —欢迎您在之前的任何项目中使用先进的技术,但我相信您应该有一个专门关注这些技术的项目。并非所有的数据科学家都使用深度学习,但你应该熟悉这些概念是如何工作的,以及它们是如何应用的。

在这些项目中,具有最佳精度或 mse 的模型实际上可能不是解决所提出问题的最佳模型。请确保您了解推荐一种算法而不是另一种算法的其他原因。

最后的想法*

在我列出的为什么数据科学项目很棒的清单中,我注意到*它们实际上可以和真实的工作经历一样好,甚至更好。*我这样说是因为我看到许多数据科学项目产生流量、收入,甚至成为新企业的基础。项目可以帮助你学习概念和找到工作,但它们也有可能完全取代对工作的需求。

金融领域替代数据的前景

原文:https://towardsdatascience.com/the-promise-of-alternative-data-in-finance-8b064d99d9a4?source=collection_archive---------13-----------------------

探索从基本面投资分析到量化管理的战略转变的影响系列。

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

因为替代数据正在改变资产管理公司——对冲基金、共同基金、基金会和养老基金——的投资管理流程,所以理解推动这一数字化转型的复杂力量提供了战略机遇。没有跟上这一巨大转变并更新其投资流程的投资经理正日益面临战略风险和非中介化:他们很可能被围绕替代数据构建其流程的现有和新的竞争对手击败。

经验丰富的投资经理越来越多地使用来自新闻和社交媒体的替代数据源、来自电子邮件、语音和视频通信的元数据、来自卫星的信息和其他地理空间信息来增强他们的决策过程。大多数资产经理看到了使用这些信息提高他们的 alpha 生成能力的直接好处,以支持结构化时间序列和会计信息的性能。许多包含替代数据的基本面投资者被称为定量投资者。

将从 twitter 信息中提取的信息与复杂的分析工具相结合,已被证明能为投资经理提供显著的额外回报;不仅在理论上,而且在实践中。2012 年,研究人员将 S & P 500 股票与 twitter 数据相关联,发现每日推文数量与某些股市指标相关,当包含 twitter 数据时,可以更准确地预测收盘价的变动。

在一系列文章中,我通过将学术研究与投资经理的实际经验结合起来,更具体地回答一些关键问题,探索替代数据的前景。

  1. 数字经济如何创造可用于改善投资决策的替代数据流和新的信息来源?
  2. 替代数据的当前类型是什么?
  3. 如何将各种替代数据来源纳入投资管理流程?
  4. 如何最好地评估用于算法交易的替代数据源?
  5. 机器学习和人工智能对替代数据的承诺是什么?
  6. 为什么自然语言处理(和情感分析)在投资管理过程中使用替代数据方面最有潜力?

在我们开始探索之前,有几个定义。一般来说,金融领域的替代数据包括用于从非金融和非传统领域提取洞察力的数据,以提高 alpha 生成。这些替代数据集是通过各种数字和非数字交互生成的,通常是“大数据”或金融交易、传感器、移动设备、卫星、公共记录和互联网或尾气数据的结果。

投资管理中的 alpha 生成能力的定义描述了超过设定基准的投资组合或策略回报的超额回报,该基准可以是市场或指数标准。Alpha 是反映策略表现或管理者技能的主动回报,来源于“alpha”(希腊字母α)。用于描述归因于市场表现或行为的回报的术语,通常称为“beta”(希腊字母β)。一个好的经理有很多阿尔法。

实际上,替代数据通过更高质量的信息,承诺并似乎为老练的投资经理提供了额外的阿尔法。在金融领域,圣杯总是在寻找真实、优质的信息来源,从而获得优势。替代数据只是这种探索的新表现。

一个很好的例子是情绪分析和自然语言编程持有的承诺:使用机器学习和认知计算等高级分析技术从演讲、推文、博客帖子、新闻故事、新闻稿和演示中提取的信息允许以极快的速度快速处理这些信息,提供容易量化的指标。

为了理解如何使用数字经济的结果来生成 alpha,下一篇文章将探讨替代数据流和新的信息源是如何不断生成的。

量化投资的前景

原文:https://towardsdatascience.com/the-promise-of-quantamental-investing-188b4a663018?source=collection_archive---------32-----------------------

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

Picasso style transfer onto a stock exchange board picture implemented using VGG19

尽管仍可能被一些人视为(一种新的)时髦词汇,但由于数据科学的进步,量化投资比以往任何时候都更有潜力

在 2000 年代中期,当我第一次开始与投资专业人士讨论量化投资的概念时,差距似乎太大了:当量化投资者(量化投资者,认为是 T4 的吉姆·西蒙斯)追求基本面来源的统计概括时(传统的,可互换使用);沃伦·巴菲特通过与公司管理层交谈、仔细阅读财务报告、在同行中赢得竞争地位等等,获得了投资洞察力。后者支配着前者,两个分支彼此不怎么说话。

以下是自那以后发生的一些变化:

  • 包括机器学习在内的数据科学开始起步,这部分是由强大的开源编程语言(如 Python、R)以及令人惊叹的软件包(如 Pandas、Scikit-Learn、Caret、Tidyverse)以及机器学习框架(TensorFlow、PyTorch)实现的;进行描述性、规范性和预测性分析比以往任何时候都更容易
  • 数据本身已经变得非常丰富,以至于即使是一群分析师也无法有效地处理所有数据,或者至少以一种经济上合理的方式处理。
  • 在需要人类用户参与最少的地方,替代数据已经出现,例如卫星图像社交媒体情绪评估
  • 前所未有的竞争压力正迫使投资经理在寻找阿尔法和调整商业模式时寻求更多的创新、效率和规模。
  • 计算能力已经变得非常便宜,以至于功能强大的计算机或租用能够处理大数据的云都非常实惠。
  • 数据科学和整体数字化的影响有可能迅速扩展到投资经理的所有职能,而不仅仅是投资组合管理;做得好的人一定会获得竞争优势。
  • 量化投资享有比以前更大的市场份额——在凯恩斯选美比赛中,算法代表了新的“面孔”和决策者。

人们可以说,许多长期投资策略已经是量化的了:在最基本的形式下,如果一位传统经理使用量化筛选来过滤掉一些证券(例如,放弃其同行中市盈率高于平均水平的证券),或者如果一位量化分析师通过人为干预否决了模型(例如,市场环境的剧烈变化使模型的建议受到怀疑),这两种方法都可以被视为使用混合的量化方法。两者都有能力限制:在传统的经理人方面,随着证券数量的增加,对目标领域所有股票的同等研究覆盖越来越不可能;在量化方面,我们还没有(还没有?)观察 AlphaZero 的两个专注于投资的变体之间的的“完美游戏”,其中人类的参与将被视为一种阻碍(这与埃隆马斯克对自动驾驶汽车未来的观点不无相似)。当我经常看到司机们努力遵守基本的环形交叉路口交通规则时,我对后者深有同感。

因此,投资管理行业面临的真正问题是:

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

虽然无法确定这种混合会扩大到什么程度,但我们可以从关注投资经理的常量开始,类似于亚马逊早期的战略方法——例如:

  • 客户:更好地了解客户需求和更好的服务
  • 成本:在不牺牲产品和服务质量的情况下尽可能低
  • 数据:更多、更多样化(表格、图像、空间、语音、文本和网络)和更好的质量
  • 数据处理:更快更准确
  • 想法实现:更多工具(如产品、技术和算法)可供选择
  • 洞察力:更好的识别信号和快速过滤噪音的能力(并检测何时一个变成另一个)
  • 投资过程:持续的治理和改进
  • 基于常规和/或规则的流程:自动化程度更高
  • 技术: Citius,Altius,Fortius
  • 交易执行:技术上可能的最快速度

数据科学是上述许多因素的促成者和贡献者之一;解决这些问题可能是一个显而易见(但不一定容易)的胜利。然而,我们遇到了一个非常人性化的问题——拥有基本技能的数据科学家普遍短缺。此外,为了在应用商业环境中更加有效,我们需要他们获得实质性的领域知识,理想情况下还需要 CFA 证书持有者,这本身就要求通过三个众所周知的困难考试,并拥有相关的专业经验。

组织内部的文化变革也不容小觑,尤其是当数据科学的引入很活跃时——有时围绕该学科的期望和现实可能相差甚远。虽然引入定量方法(或一般的数据科学)可能会引发一些怀疑,并促使组织调整,但转型变革不是必需的——至少不是马上。例如,最初不需要:

  • 购买新技术,直到现有技术明显不足以满足需求,
  • 获取新的数据集,直到现有的数据集被充分利用,
  • 雇用整个数据科学团队—对于许多任务,可以提升现有员工的技能。

在内部迈出采用数据科学的第一步后,至少应该有小的进步,从而有更多的信心和勇气来追求进一步的改进。随着时间的推移,为了追求更好的结果,复杂性将不可避免地增加(希望不会增加到客户或另一个受益者的身上),因此确保内部专业知识持续存在,并且不会产生过多的技术知识债务将是至关重要的。

在国际象棋中,一个强大的新组合出现了——一个人和一台机器——他们一起下棋,可以取得比单独一个人更大的成就。在投资中,哪一项比国际象棋或围棋复杂得多,而人类还没有(至今?)被击败,我期望两者之间的共生关系继续增长。我毫不怀疑先进的数据科学应用将在投资管理中扎根,其速度、深度和广度取决于组织的文化和重点。随着数据科学增强了对世界和内部专业知识积累的更高水平的定量观点,新的机会和应用将会出现-如果不先尝试一下,很难知道那里有什么。

时间会告诉我们 quantamental 是否会成为一种独特的投资方法,或者在其各种实施方式中,融入许多投资机构的“常规业务”中。在等待迷雾散去的时候,已经有清晰可见的常数轮廓值得追寻。

处理混合型数据的正确方式。最先进的距离度量。

原文:https://towardsdatascience.com/the-proper-way-of-handling-mixed-type-data-state-of-the-art-distance-metrics-505eda236400?source=collection_archive---------9-----------------------

有趣的事实: Scikit-Learn 没有任何能够处理分类和连续数据的 距离度量!如果我们有一个混合类型变量的数据集,那么我们如何使用聚类算法,例如 k-NN?

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

Photo by Fredy Jacob on Unsplash

更新(27/07/19) —该包已在 PyPI 发布为 Distython 。我已经发表了一篇文章来解释它是如何工作的。

我在 IT 创新中心的暑期实习期间遇到的一个大问题是,缺乏既能处理混合类型数据又能处理缺失值的距离度量的现有实现。它开始了我对能够满足这些要求的算法的长期探索。在几篇研究论文之后,我发现了非常有趣的距离度量,当处理混合类型的数据、缺失值或两者兼而有之时,这些度量可以帮助提高机器学习模型的准确性。我在业余时间实现了它们,并在 Github 上发布了它们的代码实现,所以你可以通过 Scikit-Learn 轻松使用它们。但是怎么做呢?我将在本教程中解释这一点!

我喜欢数据科学的原因是,它吸引了许多对人工智能和数据科学充满热情的志同道合的人。这就是为什么我想在 Linkedin 上与你联系!您也可以通过我的个人网站留下任何反馈和问题。

异构距离度量概述

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

Photo by Annie Spratt on Unsplash

在我们开始之前,我想推荐看一下这篇论文,如果你想更深入地了解我将要谈到的算法。我在这里的主要目标是为您提供对这些算法的直观理解,以便您可以将我的文章用作快速参考表。你可以在文章的最后找到实用的部分,并附上代码。我们开始吧!

距离度量

但是等等……距离度量实际上是什么?距离度量测量数据集中两个实例之间的距离。它们根据实例的特征来度量它们之间的相似性。比如,假设某医院的病人有两个属性:身高年龄。那么,我们可以说,某个医院的老病人和矮病人会非常相似,而一个年轻的高个子病人不会与老病人和矮病人有那么多相似之处。

距离度量只是算法,它可以根据属性告诉你两个实例之间的相似性。一些最流行的距离度量是欧几里德距离、曼哈顿距离、汉明距离和余弦距离。它们通常用于聚类,例如最近邻算法。

大多数流行的距离度量只能处理一种类型的变量。如果您将它们用于包含混合类型变量或缺失值的数据集,它们会非常失败。幸运的是,研究人员一直在试图解决这个问题,而且很少有有趣的最先进的算法来帮助你克服这个问题。

异质欧几里德重叠度量(HEOM)

HEOM 可以处理异构数据以及缺失值。简单地说,它结合了 3 种不同的算法来处理每种情况。

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

HEOM, overview [1]

HEOM 查看实例的每个属性( xy ),并根据数据类型进行以下计算:

  • 如果分类-如果属性属于同一类,则返回 0,否则返回 1
  • If numerical 使用归一化欧几里得度量计算距离
  • 如果缺失—返回 1

然后,我们获得一个存储每个属性的距离的结果向量。为了计算最终结果,可以使用以下等式:

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

The final result of HEOM [1]

它是每个距离平方的和,并存储在结果向量中。不需要使用平方根,因为它不会改变两个实例之间的相似性(即,如果 a > b 则这也成立:sqrt(a)>sqrt(b)),并且减少了必要的计算总量。

算法实现可以在我的 Github 库这里找到。

价值差异度量(VDM)

这一个实际上不直接处理异构数据,但是一些异构距离度量使用它作为他们算法的一部分。这就是为什么对它的工作原理有一个直观的理解是有好处的。这里的数学可能有点复杂,但算法的一般概念并不困难。这个等式是基于条件概率的。对于数据中的特定列(属性),满足值 xy

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

VDM algorithm [1]

其中 P a,x,c 是在给定列(属性)和输出类c.** 的情况下,出现值 x 的条件概率如果你仍然感到困惑,请参考这篇论文以获得更好的理解!**

该指标只能处理分类数据,因此特征和结果变量都必须是分类的。稍后,您将看到围绕此问题的一些解决方法,包括离散化线性要素或将其用作更复杂算法的一部分。

异类值差异度量(HVDM)

*与 HEOM 类似,该指标使用不同的算法处理每种数据类型(分类、数值或缺失)。你可以把它看作是赫姆和 VDM 的结合。对于连续数据,使用归一化距离,它基本上是两个值之间的距离除以 4 方差。对于 HEOM 也是如此,但唯一的区别是分母(使用方差是更好的选择,因为它处理数据集中的异常值)。对于分类数据,使用归一化 VDM。最终距离如下所示:

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

HVDM — final distance [1]

这三种情况中的每一种都可以用下面的等式来描述:

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

HVDM — distance metric for each case [1]

根据这篇论文,归一化的 VDM 有 3 种不同的类型:n1、n2 或 n3。我不会在这里详细讨论——这超出了本文的范围,也没有必要对算法有一个很好的、直观的理解。你要知道的是,论文作者声称 n2 是最准确的。

实用部分

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

Photo by Chris Ried on Unsplash

我们将使用那个 Github 库进行实践。到目前为止,我已经实现了 HEOM,VDM 正在开发中。请随意在 Github 上创建一个 PR 来为项目做贡献。从头开始编写这些算法并确保它们正确运行需要花费大量时间,因此非常感谢您的帮助!

**要安装存储库,请按照自述文件中的说明进行操作。只需要使用一个简单的命令 git clone、和可选的pipenvinstall来安装必要的包。

这些指标被设计成可以直接应用于 Scikit-Learn 中的最近邻(和其他聚类算法)类。您可以将它与 Scikit-Learn 类一起用于您的个人项目,只要它们提供一个调用定制度量函数的接口。

Importing necessary libraries

在上面的代码中,我们导入了必要的库和 HEOM 度量。我们还将使用波士顿房价数据集,因为它同时具有分类和数字特征。

Define the indices for categorical variables and NaN equivalent

这里,我们导入数据并将其定义为 boston_data。这里重要的部分是我们必须告诉 HEOM 度量什么列是分类的。 nan_eqv 在这里用来告诉 HEOMNaN是如何表示的。需要注意的重要一点是:最近邻不能直接处理 np.nan ,所以我们必须声明某些 nan 等价。

Introducing missingness to dataset

在上面的代码部分中,我们将缺失引入数据(出于示例的目的)并将其指定为 nan_eqv。

Defining heom_metric and neighbor

*然后,我们定义我们的 heom_metric 并提供必要的参数。它必须在最近邻居之前定义,因为我们必须提供一个从 heom_metric邻居实例*的可调用度量函数。这就是将 HEOM 与 Scikit-Learn 一起使用的全部内容。这很简单,不是吗?有关使用 Scikit-Learn 的自定义距离度量的更多信息,可在这里找到。

Fitting the data and printing the results

在最后一步中,我们拟合模型,并使用 HEOM 作为距离度量函数返回 5 个最近邻。

这就是处理具有异构距离度量的混合类型数据集的全部工作。我希望你现在配备了一些新的工具,可以帮助你建立更准确的机器学习模型,也希望你对处理缺失数据更有信心!

参考

[1] D. Randall Wilson,Tony R. Martinez,“改进的异质距离函数”

使用机器学习指标的正确方法

原文:https://towardsdatascience.com/the-proper-way-to-use-machine-learning-metrics-4803247a2578?source=collection_archive---------11-----------------------

对于给定的问题,很难选择正确的精确度。拥有一个标准化的方法是每个数据科学家都应该做的。

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

本文的计划

  1. 动机
  2. 第一考虑
  3. 最大似然模型的精度测量
  4. 使用这些方法为您的问题选择正确的 ML 模型

注意,在本文中我主要关注二元分类问题,但是这种方法与多元分类和回归问题类似。

动机

试着说服某人你的 ML 模型是准确的,应该被信任,因为它的 LogLoss 是 0.34。非数据科学家肯定会呆呆地看着你,而数据科学家会询问更多的信息。

作为一名数据科学家,您知道很难讲清楚(特别是对非数据科学家而言)为什么您的模型应该被信任,因为您无法轻松地将复杂的准确性度量转化为有形的元素。而且那是 100%合法的,模型应该是大家都懂的,至少是他们的准确性。

最重要的是,如果你的方法在科学上是正确的,你的模型应该至少有两个精确度——在训练验证集上测量——如果没有更多的话——在维持、交叉验证上测量。

精确度有很多衡量标准。准确地说,scikit 上的21-learn仅用于分类问题。因此,对于 1 个模型,在训练集和验证集上有 21 x 2 = 42 个值。如果您尝试 5 种不同的模型,您会查看 5 x 42 个值吗?

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

21 measures of accuracy from scikit-learn documentation for Classification problems

你看到它的走向了:

  • 向非数据科学家解释清楚机器学习模型的准确性的困难来自于
  • 科学方法的强制性复杂性****数据科学家要构建一个有效的机器学习模型必须经历的过程

因此,你应该问的问题是如何使用这些准确性的衡量标准,在验证你的模型之前你应该检查多少,哪些应该与非数据科学家分享,以说服他们你的模型是准确的,哪些太混乱而不能分享。

第一考虑

一些精确度的测量是简单和直接的,一些是非常复杂的。有的是正数,有的是数列,有的是图表!如何正确地选择和验证您的模型以及各种各样的方法…

所以…首先要做的是:

  1. 将你的工具箱缩小到关键指标,然后
  2. 遵循正确的方法,以适当的方式使用它们

9 个必须知道的准确性衡量标准

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

ML models, like statistical models, make 2 types of error. But there’s multiple ways to measure that, from the simple Confusion Matrix to the more advanced LogLoss.

4 项基本措施

一个 精度精度,回忆混淆矩阵 。这些是标准的,你应该已经知道了。它们很容易理解,并且是你必须与业务团队分享的。****

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

Understanding the Confusion Matrix in a gif 😃

然而,对于数据科学家来说,它们还不足以在几个模型中找出最佳模型。这是因为这些措施只关注二元结果,而不是模型预测的置信度(即概率)。以下措施以不同的方式解决了这一限制。**

4 项中间措施

P 精度召回曲线 :如果你改变你的模型的阈值概率(一般默认为 0.5),精度和召回会反方向变化。阈值越高,准确率越高,召回率越低。同样,阈值越低,准确率越低,召回率越高。目标是确定在精确度和召回率之间具有最佳平衡的阈值。

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

Looking at the Precision-Recall curve above, some data are easily classified by the model (high Precision), but some are not (low Precision)

F 如果对于一个给定的问题,精度比召回重要 5 倍,那么 F-5 分最高的模型(beta=5)应该是这个问题的最佳模型。
F-beta 评分范围从 0 到 1,1 为完美模型。

ROC 曲线 : ROC 是二战中雷达工程师使用的接收机工作特性的首字母缩写。这个定义在机器学习中已经过时了。ROC 曲线是一种直观显示模型性能的简单方法。如果 ROC 曲线高度向左上方倾斜,这意味着模型非常准确,而直的对角线意味着模型不比扔硬币好多少。

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

On the left side: ROC curve. On the right side: predicted probabilities of the ML model. The further away the red and blue curves (positives and negatives) the better the model and the more skewed the ROC curve

A UC: 曲线下面积的简称,基本上是 ROC 曲线中一个正数所包含的信息。AUC 很棒,因为它使比较多个模型变得简单:你选择 AUC 最高的一个。然而,很难解释 AUC 的价值。75%的 AUC 绝不等同于 75%的准确性(我有时会听到这种说法……)。通常,好的 AUC 值从 0 . 75 开始,但是这取决于问题,看绝对值通常没有帮助。你宁愿用它来比较模型。如果你的模型的 AUC 为 0.57,这意味着你的数据中可能没有信号。
AUC 范围从 0.5 到 1,1 为完美模型。

1 项高级措施

L 它为每个预测概率分配一个权重。概率离实际值越远,权重越大。目标是最小化所有误差权重的总和。请注意,如果概率接近 0,而实际值为 1(相反的值 1 和 0 也是如此),则权重会急剧增加。LogLoss 区分对错误预测过于自信的模型,并大量用于机器学习,因为它具有有用的数学属性。问题是 LogLoss 的值无法解释

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

How do you explain a LogLoss value of 0.34 to a business team? You simply cannot.

正确使用这些方法

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

These measures of accuracy will underpin a framework to select and validate the right ML model

您可以计算您尝试的所有模型的精确度,找到每个模型的最佳阈值,将它们的混淆矩阵与其最佳阈值进行比较,并最终决定哪个模型 x 阈值最适合您的问题。这将需要多次迭代、数千行 Python 代码和大量令人头疼的事情才能完成。**

或者你可以遵循一个更简单有效的方法。分三步走的方法:

  1. 尝试不同的模型,并使用 LogLoss/AUC 对它们进行排序
  2. 一旦确定了最佳模型,使用精确度-召回曲线/F-score/ROC 曲线选择最佳概率阈值
  3. 解释您的结果,并与混淆矩阵、精确度进行交流&回忆

具体来说,

  1. 尝试不同的模型,并使用 LogLoss/AUC 对它们进行排名首先,机器学习领域没有免费的午餐。您永远不会预先知道哪种算法对特定数据集最有效。尝试不同的模型,这样你就有更大的机会找到解决你问题的最佳模型。
    然后使用 LogLoss 和/或 AUC 对它们进行排序,并确定最佳候选。为什么?LogLoss 和 AUC 是正数,非常适合比较模型。事实上,它们很简单,但同时它们嵌入了许多抽象的数学概念,确保具有最佳 LogLoss 或最佳 AUC 的模型是“好的”。这就是它们在 Kaggle 上被广泛使用的原因。
    当然不要在训练集上看 LogLoss/AUC,在测试集上看它们(或者更好,在交叉验证上;请始终保留一份样本)。请注意,使用 LogLoss 选择最佳模型可以得到比 AUC 更多的校准模型(论文)。
    _
    举例:你尝试 5 种不同的模型:XGBoost、RandomForest、SVM、决策树、正则化逻辑回归。微调后,XGBoost 在 5 重交叉验证中具有最佳 AUC。您选择 XGBoost 并转到第二步。
  2. 使用精确召回曲线/F 值/ROC 曲线选择最佳概率阈值 一旦确定了最佳模型(或 2-3 个候选模型),使用精确召回曲线(或 F 值或 ROC 曲线)来确定要为您的模型保留的最佳概率阈值。这需要对如何解释精确召回曲线有很好的理解。
    _
    示例:查看精度-召回曲线,您会注意到,对于 20%的召回,XGBoost 模型达到了 90%的精度。然而,当召回率增加到 50%时,准确率下降了 50%。在这个问题上,假设你专注于高精度。因此,您选择了一个阈值,该阈值给出了 90%的精确度,而您知道您在数据中只捕捉到了 20%的阳性。
  3. 解释您的结果,并使用混淆矩阵、精确度和回忆 进行沟通,最终得出对业务至关重要的信息。对于模型做出的 100 个预测,有多少个是正确的?使用选定的阈值,模型将永远不会捕捉到多少个案例?…企业可以将数字和美元数字放在它们旁边,甚至获得预期的投资回报。
    _
    例:90%的精度是指模型预测的 10 个阳性病例中,有 9 个是正确的。假设对于这个问题,一个正确的肯定预测意味着节省 1000 美元,一个错误的预测意味着节省 0 美元。对于在第二步中选择的概率阈值(获得 20%的召回率和 90%的准确率),根据历史数据,您估计模型平均每月将预测 50 个阳性病例。这转化为
    50 x 90% x 12 个月 x 1000 美元=每年 54 万美元。这是将 ML 转化为商业价值的一种方式💸💸💸

附加备注

  1. 如果可能的话,获得一个非 ML 基准。衡量现有的基于规则的引擎、专家的判断、简单的策略或简单的统计模型(逻辑回归……)的准确性。这样,你就可以量化 ML 的附加值(有时并不一定更好)
  2. 当我说这只是关于准确性时,我撒谎了。选择最佳模型还应考虑模型是否学习了正确的方法,并理解它为什么预测这种特定的方法(使用功能重要性、部分相关性、预测解释等工具)。有时最好选择一个不是最好的模型,但是它有更少的变量,花费更少的时间来获得新数据,并且更容易生产

文献学

检察官的谬论

原文:https://towardsdatascience.com/the-prosecutors-fallacy-cb0da4e9c039?source=collection_archive---------3-----------------------

法庭上的条件概率

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

The lasso of truth

假设你因谋杀被捕。

你知道你是无辜的,但犯罪现场的物证与你的描述相符。检察官认为你是有罪的,因为鉴于你是无辜的,找到这一证据的可能性很小,陪审团应该放弃你实际上没有犯罪的可能性。

但是这些数字并不合理。公诉人误用了条件概率,忽略了你,被告,在他们提出证据之前有罪的可能性。

检察官谬误贝叶斯定理在法庭上的误用。鉴于所有的证据,控方、法官和陪审团没有问被告无罪的概率,而是错误地问如果被告无罪证据出现的概率是多少(一个小得多的数字):**

p(被告有罪|所有证据)

p(所有证据|被告是无辜的)

贝叶斯定理

为了说明为什么这种差异可以拼出生或死,再想象一下你自己是被告。你想向法庭证明你说的是真的,所以你同意测谎。

巧合的是,发明测谎仪的同一个人后来创造了神奇女侠和她的真理套索。

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

Coincidence?

威廉·莫尔顿·马斯顿在 1922 年詹姆斯·阿方索·弗莱被指控谋杀的案件中首次展示了他的发明。

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

Frye being polygraphed by Marston

对于我们的模拟,我们将从本文中选取一个更现代的测谎仪的平均值(“对于有罪的受试者,CQT 的准确度估计范围为 74%到 89%,假阴性为 1%到 13%,对于无辜的受试者,准确度估计范围为 59%到 83%,假阳性率从 10%到 23%……”)

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

请检查一下这些百分比。鉴于这项研究发现绝大多数人在大多数时候都是诚实的,而且“大谎言”是像“不告诉你的伴侣你真正和谁在一起过”这样的事情,让我们慷慨地假设 15%的人会在测谎仪测试中撒谎,而 85%的人会说实话。

如果我们在这些假设下用这个测谎仪测试 10,000 个人…

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

1500 people out of 10000 are_lying

1215 people out of 10000 are_true_positives

120 people out of 10000 are_false_negatives

8500 people out of 10000 are_not_lying

1445 people out of 10000 are_false_positives

6035 people out of 10000 are_true_negatives

在应用贝叶斯定理之前,需要知道的重要区别是:

  • 真正的阳性者是那些撒谎但没有通过测谎仪测试的人(他们被正确地筛选了)
  • 假阴性是说谎的人,而击败了测谎仪(他们被错误地筛查)**
  • 假阳性者是那些说了实话但无论如何都没有通过测谎的人
  • 真正的否定者是那些说了实话并通过测谎的人

明白了吗?很好。

现在:如果你,被告,得到了一个积极的测谎仪测试,有多大可能你真的在撒谎?

测谎仪考官真正想知道的不是 P(+|L),而是测试的准确性;而是 P(L|+),或者假设测试结果为阳性,你说谎的概率。我们知道 P(+|L)与 P(L|+)的关系。

P(L|+) = P(+|L)P(L) / P(+)

为了弄清楚 P(+)与我们先前对某人是否说谎的了解无关,我们需要使用全概率定律计算阳性检测事件的总样本空间:

p(l |+)= p(+| l)p(l)/p(+| l)p(l)+p(+|lc)p(lc)

也就是说,我们不仅需要知道假设你说谎时检测阳性的概率,还要知道假设你没有说谎时检测阳性的概率(我们的假阳性率)。这两项之和给出了检测阳性的总概率。这让我们最终确定你说谎的条件概率:**

*The probability that you are actually lying, given that you tested positive on the polygraph, is 45.68%.The probability of a false positive is 54.32%.*

给定一个积极的测试结果,你实际上在说谎的概率只有 45.68%。那是比机缘差。注意它与测试的准确度水平(81%真阳性和 71%真阴性)有什么不同。与此同时,即使你说的是实话,你被错误地指控撒谎的风险也接近——事实上,略高于——几率,为 54.32%。不放心。**

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

事实上,马斯顿是个臭名昭著的骗子。

Frye 法院裁定测谎仪测试不能作为证据。直到今天,测谎仪测试在法庭上是不被接受的,因为它们不可靠。但这并没有阻止检察官的谬论以其他更阴险的方式蔓延到法庭。

这种统计推理错误在刑事司法系统中猖獗,并破坏了依赖于从指纹到 DNA 证据到手机信号塔数据的一切的刑事案件。更糟糕的是,法院经常拒绝统计学家的专家证词,因为“这不是火箭科学”——这是“常识”:

  • 在荷兰,一位名叫露西娅·德·伯克的护士被判终身监禁,因为她曾接近“可疑”死亡,一位统计专家计算出随机死亡的概率不到 1/3 . 42 亿。受检察官谬误影响的计算是不正确的。真实的数字更像是五十分之一(甚至五分之一)。此外,许多“事件”只是在调查人员知道她就在附近后才被标记为可疑的**
  • 一名英国护士,Ben Geen,被指控为了让病人苏醒的“快感”而诱发呼吸停止,声称呼吸停止是一种罕见的现象,不可能是偶然发生的,因为格林就在附近。
  • 在专家错误地将同一家庭中两个孩子死于婴儿猝死综合症的几率引用为 7300 万分之一后,英国的母亲们因谋杀她们的孩子而被起诉

本·基恩

由于信息自由的要求,本·基恩的案例中的数据是可以获得的——所以我简要地分析了它们。

*# Hospital data file from the expert in Ben Geen's exoneration case
# Data acquired through FOI requests
# Admissions: no. patients admitted to ED by month
# CardioED: no. patients admitted to CC from ED by month with cardio-respiratory arrest
# RespED: no. patients admitted to CC from ED by month with respiratory arrest*

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

与 Geen 工作的医院最相似的医院是至少出现一例呼吸骤停的大医院(尽管数据中的“0”很可能意味着“数据缺失”,而不是零事件发生)。

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

*ax = sns.boxplot(x='Year', y='CardioED', data=df)*

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

*ax = sns.pairplot(df, x_vars=['Year'], y_vars=['CardioED', 'RespED', 'Admissions'])*

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

Pairplots for admissions data and cardiac vs. respiratory events

与 Geen 工作过的医院相当的四家医院是 Hexham、Solihull、Wansbeck 和 Wycombe。Solihull 的数据(心脏和再灌注)非常异常:

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

在考虑了数据中的差异后,我们可以计算出,平均而言,没有伴随心脏事件的呼吸事件发生的频率大约是心脏事件的 5 倍(平均每次呼吸入院有 4.669 例心脏入院)。

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

不伴心力衰竭的平均每月呼吸停止次数约为 1-2 次,波动较大。这并不特别罕见,当然也不罕见到要把一个护士送进监狱一辈子。(你可以在这里阅读更多关于这个案例和这个数据,在这里看我的 jupyter 笔记本。)

看起来,常识并不常见——司法系统应该更加认真地对待这个问题。

原载于https://www . espritdecorpus . com/posts/the-procurators-fallacy/**

公共云没有杀死 Hadoop,但是复杂性可以

原文:https://towardsdatascience.com/the-public-cloud-did-not-kill-hadoop-but-complexity-could-129f7949e589?source=collection_archive---------25-----------------------

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

作者:蒙特·兹韦本

对于三大 Hadoop 分销商来说,2019 年是艰难的一年。从 1 月份对 Cloudera/Hortonworks 合并的内部乐观和外部怀疑到 5 月份 MapR 的末日即将来临的信以及随后被 HPE 收购,到 6 月份 Cloudera 非常糟糕的星期三股价暴跌和 Tom Reilly 的离开,消息一直不好。也许最有说服力的内容来自 Cloudera 的季度收益公告,该公告将 Hadoop 的挑战描述为需要云解决方案:

虽然第一季度一些客户因预期新平台的发布而选择推迟续约和扩展协议,影响了我们全年的前景,但这种客户反馈和热情证实了我们目标市场对企业数据云解决方案的需求。”

复杂性杀死了

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

Hadoop is complex in the cloud too

如此多的文章声称公共云已经杀死了 Hadoop,但是正如我以前在这里写的一样,我对这种分布式技术的未来有一种相反的看法。

Hadoop 面临两大挑战:

  1. 操作复杂性——使基于商用硬件的大规模分布式系统保持活跃、高性能和安全的开发人员负担。
  2. 开发复杂性—将许多不同的计算和存储组件连接在一起以形成一个功能性解决方案,而不会因数据移动而出现延迟的开发负担。

公共云解决了运营复杂性挑战。这对于像 Cloudera、Hortonworks 和 MapR 这样的云计算后来者来说是一个重大的打击。AWS、Azure 和 GCP 几乎消除了操作 Hadoop 生态系统核心组件的操作复杂性。

然而,我认为即使在公共云中,成功采用这项技术仍然面临着巨大的挑战。AWS 的产品页面上有数百种计算和存储解决方案。我们的观点是,这个行业留给开发商的太多了。

你是想造车还是想开车?

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

Using Hadoop is like assembling a car from components

Hadoop 是一套非常棒的技术组件!我们用它来建立我们的数据平台。但是,通过我与努力实施 Hadoop 的首席信息官的多次交谈,我开始相信这些组件可能太低级了。打个比喻,当我们需要交通工具的时候,我们是基于我们的交通需求而买车的。我们不购买独立的汽车零件,如喷油器、车轴、发动机和悬挂系统。我们让制造商来组装。

同样,当你必须连接 AWS Dynamo 来运行一个应用,AWS Redshift 来分析数据,AWS SageMaker 来构建 ML 模型,AWS EMR 来运行基于 Spark 的 ETL 等等。你在组装“汽车”。这就是所谓的“λ建筑”的管道胶带。

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

然而,这导致了复杂性和数据移动。数据移动会导致等待数据被“ETL”时经常遇到的延迟。此外,创建这些体系结构所需的技能稀缺且昂贵。

因此,无论是否通过迁移到云来消除运营复杂性(这确实不是一项小任务),您仍然会受到将所有计算和存储连接在一起的集成复杂性的困扰。

预集成打包方法

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

我们的观点是,就像交通运输的“汽车”一样,公司需要大规模可扩展的基础设施来组合运营、分析和 ML 工作负载,但他们不应该自己组装这种功能。我们相信 Hadoop 的某些组件非常适合嵌入和集成,使公司能够构建新的应用程序并使其现有应用程序现代化(您可以在 Splice Machine 这里看到我们是如何做到的)。其他人以其他方式将组件集成在一起。但尽管如此,我们认为这种预集成是必不可少的,在这种集成普及之前,Hadoop 仍然很难实现——即使是在公共云中。

Python 包 Dreamteam

原文:https://towardsdatascience.com/the-python-dreamteam-27f6f9f08c34?source=collection_archive---------11-----------------------

作为一名数据科学家,我几乎完全用 Python 编码。我也很容易被配置的东西吓到。我真的不知道什么是PATH。我不知道我的笔记本电脑上的/bin目录里有什么。这些似乎都是你必须熟悉的,以免当你试图改变任何东西时 Python 在你的系统上崩溃。经过几年的努力,我偶然发现了 pipenv/pyenv 组合,它似乎以一种对我来说最有意义的方式,在很大程度上解决了我的 Python 设置难题。

直到最近,我还在用自制的安装 Python 3 和venv作为我的 Python 依赖辩论者。大多数情况下,venv对我来说非常有用。从 3.3 开始,它就包含在 Python 中了,所以它感觉像是 Python 生态系统中的一等公民。存储一个充满虚拟环境的目录,并在我想要创建或激活虚拟环境的任何时候输入完整的路径,这感觉很奇怪,但似乎工作得很好。在用 Python 3.7.0 安装 TensorFlow 遇到问题后,我决定寻找一个替代方案。

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

https://xkcd.com/1987/

在某些情况下,我的项目工作流程是从克隆一个标准的研究存储库开始的,使用一个叫做 Cookiecutter 的工具。这个标准回购有一个方便的默认requirements.txt(与 Jupyter,TensorFlow 等),以及一个一致的目录结构,帮助我们保持我们的研究项目漂亮整洁。为了能够在几个月/几年后重新访问一个项目,记录所有依赖项的特定版本以允许项目的环境被容易地重新创建是很关键的。这也让其他人可以让你的项目在他们的系统上工作!在之前的venv中,我写了一个 Makefile,它将特定的版本写到一个requirements_versions.txt中。这并不理想,因为它不会记录特定的 Python 版本,有时您会忘记运行 Make 命令。

根据我的工作流程和以前使用venv的经验,我有一些关键需求:

1.无缝记录特定的 Python/包版本。
2。很好地处理多个 Python 版本。
3。尽可能把东西放在项目目录中。

pyenv

pyenv 是一个非常好的管理多个 Python 版本的工具。您可以轻松地设置您的全局 Python 版本,使用特定版本启动 shell,或者为特定项目设置版本。

在 MacOS 上,安装相对简单:

1.xcode-select — install
2。brew install openssl readline sqlite3 xz zlib
3。brew update
4。brew install pyenv
5。将eval “$(pyenv init -)”添加到您的 shell 配置文件中。
6。exec “$SHELL”

现在,您可以通过 pyenv 的简单命令轻松安装和使用不同的 Python 版本。其中包括pyenv install安装特定版本、pyenv global设置全局版本、pyenv local设置特定目录版本。您还可以使用环境变量PYENV_VERSION来设置特定会话的版本。

pipenv

在我看来,pipenv 是 python 最好的包管理器。它会自动为您的项目创建和管理虚拟环境。它还与 pyenv 合作,根据需要安装和使用 python 版本,这正在改变生活。

在 MacOS 上,安装非常简单:

1.brew install pipenv

因为它是独立安装的,所以您也不会看到任何奇怪的,

You are using pip version 9.0.1, however version 18.0 is available.

似乎永远不会消失。

pipenv 使用Pipfile而不是requirements.txt工作。当您第一次在一个项目目录中运行pipenv install(您可以像使用pip install一样使用它)时,它会在那个目录中创建一个Pipfile。您甚至可以使用pipenv install -r requirements.txtrequirements.txt安装。当您安装、删除或更新软件包时,该文件将自动更新。它还记录了你的 python 版本!激活环境就像从项目目录中运行pipenv shell一样简单。不要再试图回忆你把你的环境放在哪里或者你把它叫做什么!

结论

忽视适当的包版本管理是非常容易的,尤其是作为一名数据科学家。然而,不适当的版本管理导致的问题可能会越积越多。从不能让合作者运行您的代码,到几个月后不能运行您自己的代码,您很容易浪费大量时间来修复依赖性问题。做对也可能是一件令人沮丧的事情。对我来说,pipenv/pyenv 组合是一种享受。它自动化了适量的工作,而不牺牲一致性。

PyTorch 训练循环

原文:https://towardsdatascience.com/the-pytorch-training-loop-3c645c56665a?source=collection_archive---------8-----------------------

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

设置

现在我们知道了如何执行矩阵乘法初始化神经网络,我们可以继续进行训练。一如既往,我们将从占领 MNIST 开始。

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

然后定义一个非常简单的模型。

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

我们将选择交叉熵作为我们的损失函数,准确度作为我们的度量。

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

我们还将设置开始学习的学习速率和时代数。

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

训练循环

我们现在将从头开始编写训练循环。

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

然而,这看起来效率并不高。尤其是我们更新权重的部分。不需要遍历每一层并更新它的参数,如果我们能一起更新我们所有的参数就好了。我们希望能够做这样的事情:

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

为了做到这一点,我们希望我们的模型存储所有层的信息,然后当我们对它调用.parameters()时返回它。让我们创建一个虚拟模型如下:

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

在这个模型中,我们使用了 Python 特殊的名为__setattr__.的 dunder 方法,这个方法将在我们每次设置属性时被调用,例如self.l1 = nn.Linear(n_in, nh)

所以现在我们每创建一个层,都会进入这个方法,把层的信息存储在一个叫做self.modules的字典里。然后,我们可以使用这个字典来生成我们所有的参数,如下所示。

这就是 PyTorch 在我们从nn.Module继承时在幕后为我们做的事情,这就是为什么我们必须首先调用super().__init__()

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

然后我们可以在模型上调用named_children()来获得我们的层。

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

我们可以使用model.parameters()直接更新我们所有的参数。我们的训练循环现在看起来像这样。

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

了解 nn。连续的

如果我们创建了一个层的列表,那么我们不能通过简单地执行self.layers = layers来使用model.parameters访问它们的参数。我们需要将每个层添加到我们的模块中,如下所示:

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

PyTorch 使用nn.ModuleList做同样的事情。所以我们可以做的是:

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

然而,这仍然是笨拙的,所以我们可以直接做:

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

我们现在知道了nn.Sequential是如何实现的。

了解优化器

让我们进一步改进我们的权重更新代码,这样我们就可以从

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

只是为了

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

为此,我们将定义一个优化器类,并将这些功能放入其中。

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

我们的训练循环现在看起来干净多了。

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

了解数据集和数据加载器

我们要改进的下一点是小型批处理。我们分别迭代 x 和 y 小批量,这不好。因此,我们将创建一个数据集,并一起处理它们。

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

这将我们的循环修改如下:

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

最后,我们为数据加载器创建一个类,以进一步清理小型批处理过程。

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

这是可行的,因为yield总是返回下一个小批量。我们最后的训练循环就像简单的英语一样容易阅读。

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

这就是本文的全部内容。

如果你想了解更多关于深度学习的知识,你可以看看我下面的深度学习系列。

[## 深度学习系列

我所有关于深度学习的文章的系统列表

medium.com](https://medium.com/@dipam44/deep-learning-series-30ad108fbe2b)

~快乐学习

参考:

深度学习从基础做起,fast.a i

定性数据科学家

原文:https://towardsdatascience.com/the-qualitative-data-scientist-e0eb1fb1ceb9?source=collection_archive---------13-----------------------

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

Photography by @loicleray

探索定性数据和研究的概念

数据科学被想象成第四种科学范式,这是图灵奖获得者吉姆·格雷说的。他声称科学正在因为信息技术而改变,在某种程度上,我认为他是对的。

因此,通过结合经验、理论、计算和数据驱动,我们有了数据科学。对于一个复杂的领域来说,这似乎是一个直截了当的叙述,但可能需要一些探索。让我们浏览一下一些基本定义和对这个问题的一些想法。

你可能会发现这些定义是基本的,因此如果你已经熟悉这些概念,你可能希望跳过这一部分。同样,我不会称自己为数据科学家,所以你可能会发现这种观点缺乏或不同。

数据科学是一个多学科领域,使用科学方法、流程、算法和系统从结构化和非结构化数据中提取知识和见解。

那么什么是结构化数据呢?结构化数据是指驻留在记录或文件的固定字段中的任何数据。这包括关系数据库和电子表格中包含的数据。例如,谷歌的搜索引擎更喜欢你的数据以特定的方式结构化。

非结构化数据是指没有预定义的数据模型或者没有以预定义的方式组织的信息。非结构化信息通常以文本为主,但也可能包含日期、数字和事实等数据。

半结构化数据是结构化数据的一种形式,它不遵循与关系数据库或其他形式的数据表相关联的数据模型的正式结构,但仍然包含标签或其他标记来分隔语义元素并加强数据内记录和字段的层次结构。

一种简单的方式是,结构化数据在其预期用途的特定环境中工作*,例如大数据或具有已定义数据类型的小数据集。使用当然会产生意想不到的后果。*

数据类型在计算机科学和计算机编程中,或简称为类型,是数据的一种属性,它告诉编译器或解释器程序员打算如何使用数据。

在计算机科学中,编译器是一种将指令转换成机器代码或低级形式的程序,这样它们就可以被计算机读取和执行。

解释器是一种计算机科学程序,它直接执行用脚本或编程语言编写的指令,而不需要将其编译成机器语言程序(机器代码是严格的数字语言,如 1 和 0)。

数据科学是“统一统计学、数据分析、机器学习及其相关方法的概念”,以便用数据“理解和分析实际现象*”。*

定性的质量和定性的定义

既然我们有了讨论的基准,让我们看看质量和定性。

质量是一件事物相对于其他同类事物的标准;某事物的优秀程度。尽管可能有其他定义。

统计学中的定性数据也称为分类数据。这是近似或表征但不测量属性、特征、性质等的数据。指事物或现象。定性数据描述,而定量数据定义。定性数据通过非数字属性进行区分,用于根据共享特征对对象组进行分类。

定性研究是一种收集非数字数据的科学观察方法。[1]这种类型的研究“涉及事物的含义、概念定义、特征、隐喻、符号和描述”,而不是它们的“计数或度量”。这种方法经常与社会科学联系在一起,也许特别是社会学和人类学,但是它也用于自然科学或其他领域。

你可以看到,定性数据和定性研究的概念有共同点,但也有分歧。例如,被认为是定性研究的采访或图片,即非数字数据,可能会在计算机系统中编号。数字形式的文字、声音、照片将被中央处理器(CPU)作为数字读取。

这引发了一些直接的想法或担忧:

  • 当然,定性研究数据是不稳定的。当以这种数字方式处理时,它很可能变成定量的。这是从方法还是描述的转移?
  • 鉴于目前的发展,也许非数字的定性区分在某种程度上是错误的?即使是图像标签也是由数字数据组成的。
  • 为了让你的数据非数值化,你要走多远?这种追求是否有利于合作,值得怀疑。
  • 无论是在研究中还是在数据中,定性和定量之间的这种区别是一个对立的对,它创造了可能对数据科学的发展富有成效的讨论。

数据科学中定性方法的好处

去年 2018 年 4 月 Robyn Rap张晶晶在 Medium 上写了一篇关于 定性+定量定性方法如何支持更好的数据科学 的文章。他们开始讲述机器学习项目中的潜在尴尬,因为你没有想到明显而重要的特征。因此,他们认为,没有定性研究的数据科学家可以对用户行为做出假设,这可能导致:

  1. 忽略关键参数
  2. 错过了向使用我们产品的人强调的重要机会,或者
  3. 曲解数据

在这种情况下,他们张贴了一幅漫画来强调他们的观点。在这一点上,我会推荐你使用 HTML 标记来创建你自己的 xkcd 风格的漫画。

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

Cartoon created by Indeed UX Research Manager Dave Yeats using cmx.io

另一个我之前在我的文章 社会科学家和人工智能——为了安全、社会和科学 中提到的例子来自 OpenAI。他们在 2 月 19 日发表的名为 AI 安全需要社会科学家 的期刊文章讨论了如何使用特定的定性方法。他们提出的解决方案是用人代替机器学习,至少在 ML 系统能够参与我们感兴趣的复杂辩论之前是这样。在考虑用 ML 替代之前,先试用人类参与者。

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

An example debate with two human debaters and a human judge. Only the debaters can see the image. Red is arguing that the image is a dog, Blue is arguing for cat. Image and caption is fetched from the aforementioned journal paper published in Distill.

当然,定性数据远不止是分类数据。定性研究和定量研究有大量的书籍,事实上,科学方法论是非常受人尊敬的。在说定性数据科学家的时候,我并没有声称有这样的事情,然而讨论是我感兴趣的。在这方面,我不能肯定地说什么是对的,什么是错的,只是相对自由地思考这些概念。

我在数据科学的深水中潜水,却不会游泳,喘着气,同时似乎在批评专业游泳运动员。我无意无礼。相反,在这个“数据海洋”中,我们必须首先检查水质或检查我们与这些活动的关系。

我真的很喜欢趴在齐膝深的水里,看着外面那些人的技术,恐惧地看着未来会发生什么!

这是#500daysofAI 的第 28 天,我真诚地希望你喜欢它。

什么是#500daysofAI?

我在挑战自己,用#500daysofAI 写下并思考未来 500 天的人工智能话题。这是我发明的一个挑战,让自己一直思考这个话题,分享我的想法。

这是受电影《夏日 500 天》的启发,主角试图找出爱情失败的原因,并在此过程中重新发现他生活中真正的激情。

对 CNN 模型更高精度的探索

原文:https://towardsdatascience.com/the-quest-of-higher-accuracy-for-cnn-models-42df5d731faf?source=collection_archive---------8-----------------------

在本帖中,我们将学习使用数据重新设计、超参数调整和模型优化来提高精确度的技术

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

当涉及深度学习模型时,性能是关键,当资源有限时,这将成为一项艰巨的任务。衡量绩效的一个重要参数是“准确性”。本文旨在通过与数据、算法调整和模型优化相关的各种技术实现更高的精度。我们还将看到在改变诸如学习速率、批量大小、训练图像数量、图像大小和可训练模型参数数量等参数后对准确性的影响。

看完这篇文章,你就知道

  1. 几种性能改进技术。
  2. 各种方式加载图像数据,数据预处理与易于使用的数据管道。
  3. 用于复杂图像分类的定制 CNN 模型。
  4. 保存模型以备将来使用,并使用保存的模型预测新图像。

首先,我将实现一个我最近发布的代码。(以下链接)这是一个用于糖尿病视网膜病变检测的 TF/Keras 实现。这是一个非常基本的 CNN 模型,精确度非常低。我对这段代码做了一些修改,以获得高精度和快速的训练/数据加载时间。在本文的后面,我将向您介绍性能最佳的代码。

[## 卷积神经网络在糖尿病视网膜病变检测中的应用

本教程的目的是利用 CNN 开发糖尿病视网膜病变自动检测系统。这是…

medium.com](https://medium.com/@swan1991m/convolutional-neural-network-cnn-implementation-for-diabetic-retinopathy-detection-with-tf-989ac802ce4b)

使用 ImageDataGenerator 、flow_from_dataframe、各种数据扩充技术、L2 正则化、批量归一化、考虑 Keras 中的类权重对数据子集进行一次热编码,实现了性能最佳的代码。让我们看看所有的性能改进技术。

通过超参数调整提高性能的技术

  1. L2 正则化>>惩罚模型的复杂性,惩罚大的权重。L2 正则化鼓励权重变小,但不强迫它们精确到 0。
  2. 学习率(LR)优化>>从基础 LR 开始,随后在下一个时期降低它。
  3. 批处理大小>>通常尝试你的 GPU 可以处理的最大批处理大小,取决于 GPU 的内存。
  4. 增加模型容量>>增加模型深度(更多层数)和宽度(每个卷积层中的过滤器数量)。

通过数据重新设计提高性能的技术

  1. 提高图像分辨率(渐进式调整大小) >>从 128 x 128 x 3 提高到 256 x 256 x 3 或更高的尺寸。
  2. 随机图像旋转>>改变图像的方向。
  3. 当对象不在图像中心时,随机图像偏移>>非常有用。
  4. 垂直和水平移动>>随机垂直或水平翻转图像。(算法应该识别玻璃是面朝上还是面朝下)

通过模型优化提高性能的技术

  1. 使用子集数据微调模型>>为一些过度采样的数据类丢弃少量数据样本。
  2. 类权重>>用于训练高度不平衡(有偏差)的数据库,类权重将在训练期间给予所有类同等的重要性。
  3. 使用训练数据微调模型>>使用模型预测训练数据,针对错误预测的图像重新训练模型。

下表描述了各种车型的性能总结

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

最后 4 列显示了我们在定义模型和数据处理过程中应用的所有性能改进技术的亮点。一般来说,在进行性能测量时,建议一次更改一个变量,该表仅显示了我们看到性能有所提高或者我们应用了任何新的调优技术的运行。

所有的测量都是在 NVIDIA Quadro M400 GPU 上完成的。这款 GPU 有 8 GB 内存。GPU 在 Ubuntu 16.04 实例上为 GPU 1.8.0 配置了 CUDA 9.0、cuDNN 7.4、TF。

这些测量的一些局限性

  1. 由于 GPU 只有 8 GB 的内存,你需要仔细设计数据管道和模型,否则你会经常得到“资源耗尽错误”。您可以通过减少批量大小、在加载数据时减少图像大小,以及通过移除少量 CNN 层或引入最大池层来更改模型中的可训练参数数量,来轻松解决这个问题。在我的实验中,我尝试了所有可能的最大值。
  2. 因为大多数代码使用 flow_from_dataframe 功能来加载图像。它限制了我们通过使用基于特征的中心(ImageDataGenerator 提供的 Keras 功能)进行基于特征的归一化和将图像均值设置为 0。为了使用这两个特征,我们需要拟合 NumPy 数组(image.load_img)格式的数据。不幸的是,我使用的 VM 实例需要很长时间将数据读入 NumPy 数组。

现在让我们看看我们获得 80%准确率的代码

这段代码使用了 mat-plot、NumPy、Keras、Pillow、H5py 和 Tensor-Flow 等 Linux 包。

我已经从 Kaggle 下载了数据库。数据库有几个 zip 文件,我们需要将它们解压缩到包含各自图像的 train/test 文件夹中。列车图像的所有标签都在单独的 CSV 文件中提供。

在下面的代码中,我们将读取一个包含图像标签和名称的 CSV 文件。我们需要做一些健全的检查(添加。jpeg 扩展,删除所有大小为 0 KB 的图像,从数据帧中移除已删除图像的条目)。

让我们将数据库分为训练和验证数据,然后将标签转换为一个热编码标签。我们有目的地在分割数据后进行一次热编码,以保留原始标签格式,以便稍后将标签与预测的标签进行比较。(当我们重新训练错误预测的图像时,这将是有用的)我们还将计算类权重,因为这是一个高度不平衡的数据库。

正如我之前所说,我们将使用 ImageDataGenerator (应用所有图像放大技术、图像旋转、宽度/高度移动和重新缩放)和 flow_from_dataframe (读取所有图像,设置批量大小和图像大小)

让我们定义模型。该模型由二维卷积层和 Relu 作为激活函数零填充层最大池层组成。我们还将实现批量规范化L2 规范化。这是一个 Keras 功能 API 实现。

初始化优化器和损失函数。我们将使用学习率为 0.01 的随机梯度下降(SGD),它将在每个时期衰减。实际上,SGD 是二维函数,但神经网络可能有数百万个参数,这意味着损失函数可以移动数百万个方向。如果损失函数有局部极小点/鞍点,就会出现“零梯度”,梯度下降就会卡住。如果我们给 SGD 增加动量,鞍点将获得向前运动的速度。增加涅斯捷罗夫的动量将会缩短收敛的路径。

回调将帮助我们保留迄今为止我们训练过的最佳权重和偏差,因为我们将使用多个时段进行训练,每个时段将经历整个训练集。在一定数量的历元之后,总是存在模型过度拟合的可能性,或者准确度可能停止提高,已经保存的权重将是有帮助的。

我们定义的模型如下所示

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_3 (InputLayer)         (None, 256, 256, 3)       0         
_________________________________________________________________
conv2d_33 (Conv2D)           (None, 254, 254, 16)      448       
_________________________________________________________________
conv2d_34 (Conv2D)           (None, 252, 252, 16)      2320      
_________________________________________________________________
batch_normalization_17 (Batc (None, 252, 252, 16)      64        
_________________________________________________________________
zero_padding2d_5 (ZeroPaddin (None, 254, 254, 16)      0         
_________________________________________________________________
conv2d_35 (Conv2D)           (None, 252, 252, 32)      4640      
_________________________________________________________________
conv2d_36 (Conv2D)           (None, 250, 250, 32)      9248      
_________________________________________________________________
batch_normalization_18 (Batc (None, 250, 250, 32)      128       
_________________________________________________________________
conv2d_37 (Conv2D)           (None, 248, 248, 64)      18496     
_________________________________________________________________
conv2d_38 (Conv2D)           (None, 246, 246, 64)      36928     
_________________________________________________________________
batch_normalization_19 (Batc (None, 246, 246, 64)      256       
_________________________________________________________________
max_pooling2d_5 (MaxPooling2 (None, 123, 123, 64)      0         
_________________________________________________________________
zero_padding2d_6 (ZeroPaddin (None, 125, 125, 64)      0         
_________________________________________________________________
conv2d_39 (Conv2D)           (None, 123, 123, 128)     73856     
_________________________________________________________________
conv2d_40 (Conv2D)           (None, 122, 122, 128)     65664     
_________________________________________________________________
batch_normalization_20 (Batc (None, 122, 122, 128)     512       
_________________________________________________________________
conv2d_41 (Conv2D)           (None, 120, 120, 64)      73792     
_________________________________________________________________
conv2d_42 (Conv2D)           (None, 118, 118, 64)      36928     
_________________________________________________________________
batch_normalization_21 (Batc (None, 118, 118, 64)      256       
_________________________________________________________________
conv2d_43 (Conv2D)           (None, 116, 116, 64)      36928     
_________________________________________________________________
conv2d_44 (Conv2D)           (None, 114, 114, 64)      36928     
_________________________________________________________________
batch_normalization_22 (Batc (None, 114, 114, 64)      256       
_________________________________________________________________
max_pooling2d_6 (MaxPooling2 (None, 57, 57, 64)        0         
_________________________________________________________________
conv2d_45 (Conv2D)           (None, 55, 55, 64)        36928     
_________________________________________________________________
conv2d_46 (Conv2D)           (None, 53, 53, 64)        36928     
_________________________________________________________________
batch_normalization_23 (Batc (None, 53, 53, 64)        256       
_________________________________________________________________
conv2d_47 (Conv2D)           (None, 51, 51, 128)       73856     
_________________________________________________________________
conv2d_48 (Conv2D)           (None, 50, 50, 128)       65664     
_________________________________________________________________
batch_normalization_24 (Batc (None, 50, 50, 128)       512       
_________________________________________________________________
flatten_3 (Flatten)          (None, 320000)            0         
_________________________________________________________________
dense_7 (Dense)              (None, 32)                10240032  
_________________________________________________________________
dropout_5 (Dropout)          (None, 32)                0         
_________________________________________________________________
dense_8 (Dense)              (None, 32)                1056      
_________________________________________________________________
dropout_6 (Dropout)          (None, 32)                0         
_________________________________________________________________
dense_9 (Dense)              (None, 5)                 165       
=================================================================
Total params: 10,853,045
Trainable params: 10,851,925
Non-trainable params: 1,120
_________________________________________________________________

是时候在 GPU 上训练模型了

这是培训的进展情况,您可以看到我们完成了 80%的培训和验证准确性。

Epoch 1/5
370/370 [==============================] - 1849s 5s/step - loss: 29.1990 - acc: 0.7959 - val_loss: 10.7663 - val_acc: 0.8000
Epoch 2/5
370/370 [==============================] - 2584s 7s/step - loss: 17.5359 - acc: 0.7999 - val_loss: 3.8036 - val_acc: 0.8000
Epoch 3/5
370/370 [==============================] - 2398s 6s/step - loss: 16.2506 - acc: 0.8000 - val_loss: 3.2556 - val_acc: 0.8000
Epoch 4/5
370/370 [==============================] - 2064s 6s/step - loss: 20347.928 - acc: 0.7999 - val_loss: 321.0431 - val_acc: 0.8000
Epoch 5/5
370/370 [==============================] - 2482s 7s/step - loss: 88.7576 - acc: **0.8000** - val_loss: 12.5082 - val_acc: **0.8000**

使用下面的代码,我们还可以看到精度和损耗是如何随时间变化的

这是剧情的样子

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

为了进一步提高准确性,我们将对错误预测的训练图像进行重新训练。为此,我们将加载刚刚保存的模型,稍后我们将使用预测生成器在相同的训练图像上进行预测。以这种方式,我们将针对先前模型未预测到的特定图像集来微调模型。

现在我们在 df_filtered 中有了一个新的数据库。我们可以使用之前使用的相同的旧数据管道和模型定义。这种再训练让我达到了 82%的准确率。

GitHub 资源库

所有的 iPython 笔记本都可以在https://github . com/swanandM/Diabetic-Retinopathy-Detection-with-TF获得

我们还能做些什么来提高精确度?

在现实世界中,有时很难依赖单一模型。不同的模型可以具有不同的属性,这取决于它所具有的层数、它被训练的参数数量等。特定的模型可能无法对特定组/类型的图像进行最佳预测。在这种情况下,我们可以结合多个模型来做出最佳预测。

在我的下一篇文章中,我们将通过使用我们已经创建的一些性能最好的模型来实现模型集合。模型集成可用于从这些模型中进行投票,以做出最终预测。

参考文献

  1. “提高训练准确度的不同方法” > >https://towards data science . com/Different-the-way-of-improving-training-accuracy-c 526 db 15 a5 b 2
  2. “使用 Keras 进行深度学习的图像增强”> >https://machine learning mastery . com/Image-augmentation-deep-learning-Keras/
  3. “用深度学习诊断糖尿病视网膜病变”> >https://deep sense . ai/diagnosis-diabetic-diabetic-retinopathy-with-deep-learning/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值