数据科学资历的步骤:外部知识
你需要知道哪些技术上不完全是数据科学的东西?
在你的经验领域之外?弗瑞德·卡尼在 Unsplash 上的照片
在之前的一个故事中,我根据网络上相关文章的一个小样本,写了一个高级数据科学家应该具备的素质。总而言之,我提出了一名数据科学家为了晋升应该提高的三大支柱:
- 你对自己了解多少 : 经验、工具箱、部署、好奇心。
你独立完成工作的能力,以及为成功实现目标而积极主动的能力。 - 你对你的公司了解多少 : 产品发现、初始、管理、测量。
您看到全局、最大化您的影响、最小化复杂性、提出新想法并衡量其价值的能力。 - 你对你的同事了解多少 : 沟通、领导、教学、微观管理。向你的队友和经理推销你的想法、了解每个团队成员的优势和劣势、向他们传播你的个人知识以及有效领导他们的能力。
在本文中,我们将谈论第一个支柱的一部分:局外人知识。你需要获得的不是纯数据科学,与人际交往没有内在联系的技术技能有哪些?
为了提高他的完成系数,高级数据科学家必须接触两个主要领域:部署和产品所有权。
部署
数据科学家为管理消费和数据处理创建模型、仪表板和报告。但是,如果没有一个有能力的数据工程师来安排可扩展的、健壮的解决方案来交付这些数据应用程序,任何东西都不会被实际使用。
理想的世界应该是每个数据科学家都有一个数据工程师。唉,这不是我们的现实,因为在数据生态系统中,工程师不像科学家那样普遍。
部署前…
现在,对于一个模型的部署,没有一个万无一失的方法。它取决于许多不同的因素:运行它所需的处理能力、复杂串行计算实例之间数据传输的固有复杂性、推理所需的速度…
每个部署都应该是针对您的模型和问题的手工解决方案。
如果您的模型需要非常快速的推理,您应该关注并行解决方案。如果没有时间限制,请随意释放深层网络。如果有内存限制,控制你的 BERTs 和 YOLOs,从小事做起。缩小。提炼你的人际网络。度量方面的最佳解决方案不一定是适销对路的。
实际部署
解决方案准备就绪后,部署仪式就开始了。一定要准备好咖啡祭品,引导你内心的祈祷。一个资深者必须至少对这个过程的每一步有肤浅的了解。
- 首先,我们需要创建一种与模型交互的方式。命令行提示符、API、任何适应输入/输出请求的结构。文档在这里是必不可少的:这是你通向外部世界的窗口。API 可以用Falcon(Python)node . js(Javascript)Plumber®……你来决定交付模型推理最简单/最快的方式是什么。
- 我们需要以一种可重复的和与操作系统无关的方式呈现我们的模型。这是通过 Docker 完成的,所以要熟悉创建和管理精益图像的基础知识,仔细组合不同的相邻 Docker,并使它们在 Docker Hub 或 Google Image Registry 上可用。
可用教程此处,此处此处,此处此处。 - 对于可在任何地方部署的服务,我们需要将它放在一个易于访问、易于监控和扩展的地方。这是通过你选择的云平台完成的,无论是亚马逊还是谷歌。创建一个实例,部署一个简单的 API 并尝试将其公开。使用外部日志服务管理您的日志。
这里是一个关于如何设置 JupyterLab 的快速教程,这里是一个关于 Stackdriver 的教程,这里是另一个关于 GCP 上一个简单的 API 部署的教程。与 GCP 并行的是,AWS 上的 Python WebApp 的精彩实践。Coursera GCP 核心基础课程对于那些对谷歌基础设施感兴趣的人来说是另一个极好的资源。 - 如果有许多不同的服务同时运行,很可能有一个 Kubernetes 集群已经准备好使用,配置在云中的某个地方。了解 Pod/部署/服务三连胜的要点。
下面是三个不同的 Kubernetes 介绍。对于 GCP, Coursera Kubernetes 入门课程。一个关于 AWS Kubernetes 服务的实用的六部分介绍开始于这篇中型文章。
总结:创建一个接口来插入和检索数据,以可复制的方式打包你的模型,在一个平台中发布它,监控错误和性能,如果需要,在不同的机器之间分发它以增加吞吐量。
产品所有权
资历与责任相关。有了责任,你开始在你的项目中扮演更重要的角色。这是任何编程角色的共同趋势,也是职业道路之间的主要差异,将它们分为管理和专家角色。
在数据世界中,这种分裂变得有些模糊:除了是一个新的领域,数据项目大多是独立的,需要更多的技术知识来管理。此外,为了使探索项目适应敏捷工作流,可能会有大量的摩擦,这在大多数初创公司中很常见。
现在,雇用特定产品负责人和经理处理数据相关问题的趋势越来越明显。虽然这种趋势不会巩固成一个成熟的位置,但一名高级数据科学家必须自己承担一些责任。
这里最重要的是项目组织,基本上。自我组织以完成您的任务,准确测量清理数据集所需的时间,手动和统计地探索数据集,在数据集上训练合理准确的模型,部署和监控数据集。你必须能够定义和管理你的项目的生命周期,从开始到确认。
假设你被分配去驱动一个项目,去创建一个特定领域的情感分析器。这需要从一个给定的 URL 访问,一个简单的文本字符串输入和情感输出。成功开发的必要步骤是什么?
- 收集验证数据集以指导您的工作和衡量标准。由你的团队和高层策划,以确保相关性。
- 测试现有的工具集以确保在某处没有已经编码的快速胜利。对于情感分析,Vader perspective、TextBlob 和 SpaCy 都有与此任务相关的模型。
- 收集培训/测试数据集来制作您自己的领域模型。有没有一种简单的方法可以自动标记你的数据子集(评论分数=情绪)?你需要一个注释者团队吗?需要标记多少个实例?
- 手动或通过嵌入定义您的特征。与情绪相关的工艺特征(大写的夸张使用,句子主观性),或者使用一个单词/句子嵌入进行黑盒分类。
- 用 Hunga Bunga 训练基本模型。放下锤子,随便用什么。测量它,手动验证几个类。如果你得不到足够的结果,训练复杂的模型,像 LSTMs 和序列分类。
- 通过 API 调用使其可用。把你的模型包在一个蝴蝶结里,放在某个地方摄取和吐出有用的数据。
对于这些步骤中的每一步,你能衡量自己完成它们需要多少时间吗?能不能在独立任务中把那些打破,在队友之间划分工作量?哪些任务需要复杂的技术知识?不习惯数据探索任务的产品负责人无法以最佳方式完成任务,因此您必须加快步伐!POC 由 PoC,你成为 PoC(项目业主顾问)。
关于此主题的更多信息:
我倾向于认为数据科学家是好的学习者,而不一定是知识者。不要不顾一切地钻研每一个领域,成为其中的大师。如果你每天处理数据,你会慢慢积累知识和经验。我们都在数据的台阶上一起向上走!
感谢您的阅读,并在这个充满数据的宇宙中享受乐趣!
数据科学资历的步骤:影响
平衡指标优化、结果探索和业务方向。
确保你的模型在你的公司报告中引起轰动。乔丹·麦克唐纳在 Unsplash 上的照片
在之前的一个故事中,我根据网络上相关文章的一个小样本,写了一个高级数据科学家应该具备的素质。总而言之,我提出了一名数据科学家为了晋升应该提高的三大支柱:
- 你对自己了解多少 : 经验、工具箱、部署、好奇心。
你独立完成工作的能力,以及为成功实现目标而积极主动的能力。 - 你对你的公司了解多少 : 产品发现、初始、管理、测量。
您看到全局、最大化您的影响、最小化复杂性、提出新想法并衡量其价值的能力。 - 你对你的同事了解多少 : 沟通、领导、教学、微观管理。向你的队友和经理推销你的想法、了解每个团队成员的优势和劣势、向他们传播你的个人知识以及有效领导他们的能力。
在这个故事中,我们将谈论第二个支柱(也可以说是最重要的支柱)的一部分:影响,以及增加影响的方式。但是首先,看看这篇关于一切数据科学的伟大文章:它触及了我在这篇文章中提出的大部分观点以及更多。
这篇文章是由 Instacart 数据科学副总裁杰里米·斯坦利和技术顾问兼前 LinkedIn 数据负责人丹尼尔…
firstround.com](https://firstround.com/review/doing-data-science-right-your-most-common-questions-answered/)
放手的艺术
不过,找到它并不困难。放手了。
如果你有硕士学位或博士学位,你肯定经历过一个相当不经意的渴望去接触最先进的技术。要提高 SemEval 任务中的 F 分数或 PASCAL-VOC 或 COCO 中的 mAP:在不改变数据集的情况下发表一篇具有更好模型架构的论文!
如果你没有学术界的背景,也许你曾把 Kaggle 作为业余爱好。每一场比赛都带来一种类似的感觉,推动边界,随着每一次成功的提交而前进。
数据科学家通常会被新技术和使用它们的欲望所淹没。我们将算法和库称为工具集的一部分:新的、闪亮的工具往往比久经考验的多项式更能分散我们的注意力。这与前端开发人员对新技术的追求没有什么不同……我们开玩笑说,JavaScript 框架每天都在诞生,但神经网络架构和算法也是如此。
正因为如此,当一个朴素的贝叶斯解决方案将提供同样有效的结果时,你将在一个梦幻般的递归/卷积多层神经网络上浪费时间。你会过度分析一个复杂性不断增加的不完整数据集,只是为了看到你想看到的东西。
当你有锤子时,你只能看到钉子。而神经网络往往是大锤。
如果你折磨数据足够长的时间,它会承认任何事情。― 罗纳德·科斯, 经济学与经济学家论文集
所以,你需要做的第一件事就是放手。把自己从严格比较的束缚中解放出来,拥抱小胜利。不要把每件事都当成儿戏,争第一而不是其他。不要仅仅为了证明一个观点而用工具集中最强的工具来敲打你的数据。
这额外的一个百分点值得一周的训练和三倍的处理能力吗?当然,写在纸上会很好看。但是,仅仅为了这一点而强迫您的基础设施和团队资源值得吗?在最终产品中会引人注目吗?
但是,我并不是要你抛弃所有的度量标准!它们对于分析和量化您的方法以及度量您对系统的改进程度是绝对必要的。不幸的是,如果你只在工作中寻找这些信息,你就失去了对你个人发展和公司底线都有价值的信息。
下面,你会发现两篇文章,一篇是关于向数据科学的飞跃,另一篇是关于学术陷阱,我刚刚爱上了这个术语。
[## 从学术界走向工业界:Wayfair 数据科学博士的 10 个建议
所以,你大学毕业,花了五年时间在一个定量博士项目上,也许还做了博士后…
tech.wayfair.com](https://tech.wayfair.com/data-science/2018/10/moving-from-academia-to-industry-10-tips-from-wayfair-data-science-phds/) [## 学术陷阱和数据科学
没有行业经验如何从学术界走向工业界
medium.com](https://medium.com/@skyetetra/getting-out-of-the-academic-trap-6c40d92ab436)
当你把影响力看得比度量标准重要,把简单性看得比复杂性重要时,你会得到一个很好的结果。你在听那甜美的催眠曲吗?如果没有,向上滚动并点击播放,听它并回到这里。这是过程的一部分。
别再上当了!
不仅仅是图表,你知道吗?
达到最先进水平的动力是我们强加给自己的一个障眼法,随着时间的推移,它让我们不断创造出更好的学术论文。当我们放下这些时,我们必须学会用新的眼光看待现在,透过图表来看。
让我们通过三个例子来研究这个概念。
可挽救的模型
假设您有一个简单的模型,它使用文本描述对产品进行分类。你的通用度量标准说,从整体上看,它比随机选择更糟糕。通常,你会把它扔给狼群,然后继续实验,但这次你决定仔细看看…你发现它在特定的类中是 100%准确的。
所以,你改变了你的方法:你做了一个层次分类器,用最好的类作为叶节点,其他的被混洗到第二个分类器。冲洗,重复,你现在有了一个分类方案,它既有处理你的问题的复杂性,又有一个天真模型的简单性。我们在一个敏捷的世界中开发:重用不局限于通用代码。
奇怪的模型
你的模型将所有在极客领域的东西压缩到一个类中。它的标题里有“星球大战”吗?模型上说是扳手。《王者归来:剧场版》?另一把扳手。也许他对音速起子有某种怀念。
你的模型最终完成了风格的聚类,这本身就很有价值。这甚至会回避分类中涉及的最基本的指标,这种情况只有通过手动数据探索才能察觉。有时,最好是浪费一些时间来削减字节和了解您的领域,而不是只关注度量获取过程。
报废模型
让我们进一步假设你的模型真的没有任何价值。在继续之前,寻找你在处理这些数据时所做的每一个改进,并把最好的添加到你的食谱中。训练数据的新方法,您争相寻找的新库,管理项目的更好方法。
更进一步,看看数据技术在你公司其他领域的可能应用。也许营销团队会对用于关键词发现的词义消歧器感兴趣。DBA 可能对大表的分片技术感兴趣。您的单词嵌入可能对法规遵从性中的重复数据删除任务有用。在你的项目中为模块化和多学科化做计划。
记住第一步
嗯,当你对现在看得太多,你可能会倾向于坚持下去。任何东西都可能有用,那么我们为什么不应该永远停留在这种模式中呢?有无限的可能性,也许这个超参数计算中的一个小调整可以增加我们的精确度几个小数…
然后你又被骗了!这是一个反向眼罩,向你展示你的模型周围领域的无限可能性。你必须与现在的结果和未来的前景保持健康的关系,以便在需要的时候继续前进。在你的头脑中分配一个期限,并试着遵守它:有了经验,正确估计你的探索会变得更容易。
为了帮助你探索,你可以依靠指标来指导你做对了什么。但是我不是告诉过你度量是邪恶的吗?像生活中的任何事情一样,适度是关键。它们是指引你走向更好结果的指南,也是警告你徒劳追求的停止标志:用它们来更好地衡量你在每个模型探索中的时间。
下面的文章是关于通用模型的探索和选择。
挑选完美的机器学习模型的部分艺术,部分科学。
towardsdatascience.com](/part-i-choosing-a-machine-learning-model-9821eecdc4ce) [## 如何选择统计模型
这篇文章最初是由我的合作伙伴 Aureus Analytics 发表的,他是保险分析方面的专家。这是一个非常…
www.datasciencecentral.com](https://www.datasciencecentral.com/profiles/blogs/how-to-choose-a-statistical-model) [## 数据科学框架:实现 99%的准确性
使用 Kaggle 笔记本探索和运行机器学习代码|使用《泰坦尼克号:灾难中的机器学习》中的数据
www.kaggle.com](https://www.kaggle.com/ldfreeman3/a-data-science-framework-to-achieve-99-accuracy)
最终,你需要解决你公司的一个问题,而不仅仅是创造有趣的模型。学习平衡原始计算能力和巧妙的解决方案是处理问题的一部分
耐心
当你渴望更多的要求时…
但是在一天结束的时候,你不仅仅是在做一个顶级的 ML 模型或者一个漂亮的仪表盘:你是在解决一个问题。从如何到为什么是一个跳跃,需要的不仅仅是技术经验。
数据科学家是一头野兽,根据他们选择的领域,可以采取多种形式。他们总是积累足够的公司数据,就如何指导某些产品管理范围提供有价值的建议:你应该在仪表盘上显示哪些见解,哪些部门应该与以数据为中心的文化联系起来,等等。
这与编程中的其他资历级别略有不同,因为数据科学提供了通往商业智能的直接桥梁和深入研究数据产品管理的机会。当你与客户/经理就什么类型的价值数据可以聚集到产品中进行直接沟通时,更容易看到全局。
所以,第一步是利用这个桥梁参与到你的最终产品中。要了解你的目标是什么并构建一个更好的解决方案,你需要了解结局:谁将使用它,它将被部署在哪里,它将如何被使用…要了解你在任务中的角色,你必须知道它在你的用户故事中的位置,在你的史诗中。
- 如果客户端需要快速的 API 响应,您需要创建一个快速的模型,或者适当地扩展它;
- 如果网络带宽是一个问题,您需要考虑本地方法来处理数据;
- 如果时间不是一个约束,减少基础设施成本,在小型机器上运行繁重的推理;
- 如果你有全权委托花钱,你甚至可以发挥想象力,使用其中一个 GPU 驱动的实例来实现极快的速度。
你必须首先参与内部,与你的项目负责人/经理接触,并根据需要从他们那里提取信息。与您的经理建立健康的关系,分享来自您团队的新想法,并积极地与您的解决方案架构规划进行互动。
现在,有些人可能坚持认为处理客户需求是产品经理角色的一部分。正如我们之前讨论过的那样,如果他不精通数据科学,他将无法应对不确定(或不可能)的必要请求;因此,数据科学团队需要参与这些事务,以保证项目的成功。
下面这篇文章很好地解释了这种产品/数据的相互作用。
执行摘要组织高层的期望与实际情况不一致的情况太普遍了
hbr.org](https://hbr.org/2020/02/are-your-companys-leaders-and-data-scientists-on-the-same-page)
在所有这些推理中有一个小问题…如果你在一家刚刚创建了数据科学部门的公司中,你很可能会在你的部门中受到阻碍。您需要从内部构建数据文化,以促进内部/外部信息访问。在下面的文章中,你会发现第 3 步和第 4 步正是关于解决信息匮乏的问题。
爆炸式增长的数据量有可能催生企业基于事实的创新新时代,支持…
hbr.org](https://hbr.org/2020/02/10-steps-to-creating-a-data-driven-culture)
这是数据科学家工具包中最基本的软技能:提取需求、吸收商业智能和出售热门见解的耐心。
如果您喜欢这个故事,请查看本系列的其他文章:
需要提高哪些硬技能?
towardsdatascience.com](/the-steps-to-data-science-seniority-field-knowledge-f3c7a27a2123) [## 数据科学资历的步骤:外部知识
你需要知道哪些技术上不完全是数据科学的东西?
towardsdatascience.com](/the-steps-to-data-science-seniority-external-knowledge-f891e3051462) [## 数据科学资历的步骤:沟通
所有学长之间的共同点。
towardsdatascience.com](/the-steps-to-data-science-seniority-communication-809ee217cebf)
我倾向于认为数据科学家是好的学习者,而不一定是知识者。不要不顾一切地钻研每一个领域,成为其中的大师。慢慢地,但肯定地,我们会积累日常处理数据的知识和经验。我们都在数据的台阶上一起向上走!
感谢您的阅读,并在这个充满数据的宇宙中享受乐趣!
气象学中伴随灵敏度方法的故事
弗洛伦西亚·维亚达纳在 Unsplash 上拍摄的照片
NIPS 2018 年发表的广受欢迎的论文:神经常微分方程 (Neural ODE) [1],引入了一个新的神经网络家族。与基于先前轨迹来预测过程的未来轨迹的良好的旧 RNNs 和 LSTMs 相反,神经 ODE 表示该过程的导数,从中可以通过数值积分获得未来轨迹,因此它声称具有连续的潜在空间。为了优化神经微分方程,采用了伴随灵敏度方法(ASM,不是正式的缩写,只是为了方便起见),其推导过程附在附录中。它们纯粹是数学上的,并没有提供太多的上下文或直觉来解释为什么要这样优化。
数学是一门可以从内部自然产生新问题的学科,但每当科学或工程的发展需要一个数学问题或概念时,我都试图遵循这种发展的步骤,因为最初的思路几乎总能帮助我更好地理解数学。
所以我查找了有关 ASM 的文献,发现它主要用于气象学、大气研究和天气预报。我找到的一篇论文的题目是,“什么是伴随模型?【2】,这也正是我当时问自己的问题。本文对离散时间系统的 ASM 给出了清晰的解释,这一思想可以很好地推广到连续时间。这个故事将借用气象学的动机,讨论如何用拉格朗日乘数法推导 ASM。希望我们可以建立一些直觉,让数学变得更容易。
这个故事中所有的向量都是列向量,分子布局作为所有矩阵演算的约定。
模型和性能管道(图片由作者提供)
天气预报依赖于模型,模型将向量 a 作为输入,将向量 b 作为输出。输入可以被认为是当前的天气,包含诸如风速、湿度、温度等信息,而输出将是一些时间步骤后的天气预报。输出不必与输入具有相同的格式,但是为了简单起见,我们假设它们包含相同的信息,因此具有相同的维度。然后,用一个或多个性能测量,例如均方误差,来评估输出。通常衡量性能的函数是标量值的。
该模型通常通过数值积分从 a 计算 b ,但是在这里将它视为一系列操作就足够了,其中每个操作都可以被视为在某个时间步长内演变当前天气:
事实上,任何可用的数值积分方案,如欧拉法或龙格-库塔法,都可以被认为是具有给定步长的一系列操作。
气象学与模型的“灵敏度”有关:给定一个控制输入一个 𝒸,输入中的一个小扰动如何影响 s𝒸的性能?这一点很重要,因为一个微小的输入扰动引起的天气预报的剧烈变化不是很有用。想象一下,如果电视主持人说明天将是华氏 90 度,阳光明媚,但结果是下雪,因为预测中的一些噪音,有多少人会在海滩上冻死?!
虽然从流水线上的链式法则开始很容易,但我想按照论文[2]中的逻辑流程来得出答案。设轻微扰动的输入为ₚ,这将给出扰动为
很容易看出扰动δa引起的一系列事件:首先模型输出 b 改变,然后测量性能 s 改变,它们相应的扰动为
我们感兴趣的是δs 如何随δa变化。给定事件链,如何计算这一点并不直观,但我们可以从一些简单的东西开始:我们可以将δs 作为δb的结果来计算,因为我们完全了解性能测量函数 J(。).对于δs 的一阶泰勒级数近似,我们有:
注意,这里δs作为近似的结果已经变成了扰动的线性估计。等式 1 直观地表示,δs 与δb的比值就是在 b = b 𝒸.时,s 与 b 的变化率
下面是一个具体的例子:假设 J(。)是均方误差:
其中上标(f)和(v)分别代表预测和地面实况。如果我们遵循等式 1,我们可以估计δs为:****
既然我们知道了预报的 b 和地面实况,我们就可以很容易地计算出δs中的扰动。
按照推导等式 1 的相同逻辑,我们可以查看流水线的前半部分( b = M( a ))并写出以下内容:
∂ b /∂ a 是雅可比矩阵。结合等式 1 和等式 2,我们将得到(基本上是链式法则…):
这正是我们所追求的。我们在例子中已经表明,∂s/∂ b 可以很容易地计算出来,所以我们只剩下∂ b /∂ a 来处理。我们只知道 a 𝒸, b 𝒸,以及 b 通过 n 次运算从 a 计算出来的函数。因此,让我们通过以下顺序再次应用等式 1 的推导:
其中上标(I)表示 iᵗʰ运算后的相应输出。上面的第三个等式意味着 0ᵗʰ操作直接应用于 a 上。在一些菊花链(或链规则)之后:
方程(4)中偏导数的乘积链是∂ b /∂ a ,正是我们求解方程(3)所需要的。更明确地说,我们有以下内容:
万岁!我们已经找到了答案。与论文不同的是,我特意保留了用于计算偏导数的 a 和 b 的值,因为我想展示计算 s 中的扰动所需的一切,同时将它们写出来有助于该算法的实现(如果需要)。
关于公式 6,有两点需要注意。(1)我们需要模型中整个操作序列的所有输出(𝒸的所有输出)。这可以通过在从 a 𝒸.计算 b 𝒸时保存所有中间输出来实现(2)为了计算∂ b /∂ a ,我们需要计算沿着模型操作的所有偏导数,并用保存的输出对它们进行评估。由于操作通常是相同的(例如,牛顿法在每一步都被使用),雅可比矩阵是相同的,因此计算起来并不昂贵。
到目前为止,这种方法似乎没有什么“伴随”之处,但诀窍就在这里。由于 s 是标量,通过分子布局,∂s/∂ a 是行向量。如果我们通过转置∂s/∂ a 来迫使它成为列向量,则等式 6 变成:
这里原雅可比矩阵的转置,即(∂ b /∂ a )ᵀ称为伴随,方程 7 称为方程 2 的伴随模型。有了等式 7,我们将总是能够知道我们的天气预报模型是否对输入过于敏感,并且没有人将不得不再次在海滩上冻结。****
到目前为止,我们已经用一个气象学例子重新演示了 ASM。现在我们将推广 ASM 并用拉格朗日乘数法推导灵敏度。这里是对拉格朗日乘数的一个温和的介绍。
拉格朗日乘子通常用于约束优化问题,气象学示例也可以用公式表示。
用约束优化问题表述的气象学例子
我们讨论的关于气象学例子的一切都可以应用于这个优化问题。假设模型有一些参数 p ,我们可以调整这些参数来改变性能,我们的目标是通过调整 p 来最大化最终输出 b ⁽ᴺ⁾的性能,约束由序列中的单个操作b⁽ⁿ⁾= mₙ(b⁽ⁿ⁻⁾】定义。如果序列中的所有运算都一样,我们可以简单地写成b⁽ⁿ⁾= m(b⁽ⁿ⁻⁾).我们将需要 ds/d p 来迭代更新优化 s 的参数,这个想法和我们如何计算 ds/d a 是一样的。我们将不讨论这个具体的问题,而是考虑一个连续时间的问题,这个问题可以很好地推广到气象学的例子中,并指出它们的相似之处。
DAE 作为其约束的一部分的优化问题
考虑最优化问题 9,其中 F( x , x ',t, p )称为微分代数方程(DAE)。像这样的方程组也被称为隐式系统、广义系统或广义系统。请注意,对于时间导数,我们将 x '与\dot{x}互换使用,因为很难在 x 上键入点。人们可能更熟悉半显式 DAE,或常微分方程(ODE) :
事实上,DAE 是 ODEs 的一般化形式,因为并非所有 DAE 都可以用半显式形式编写。但是我们将假设 F( x , x ',t, p ) = 0 确实可以写成一首颂歌,以便于理解。所以为了优化 G(。)关于问题 9 中的参数 p ,我们将需要计算 dG/d p 。让我们首先将这个问题与气象学的例子进行比较。
第一个约束 x ’ = f( x ,t, p )可以认为是气象学例子中b⁽ⁿ⁾= m(b⁽ⁿ⁻⁾)的连续时间版本。前者计算 x 的导数,然后对其进行数值积分以获得下一个状态,后者直接将当前输出 b 映射到其下一个状态。同样,初始条件 x (0)平行于控制输入 a 𝒸.
问题 8 中的目标函数是用函数 J(.),而问题 9 中的目标函数是通过对函数 g(.或者,我们可以认为灵敏度 dG/d p 是仅在时间 T 定义的函数 g( x ,T,p)的灵敏度 dg/d p
现在,让我们最终进入计算 dG/d p 的数学过程。首先,我们引入一个拉格朗日乘数λ,并形成一个增广的目标函数(从这里我将使用文件[3]中的方程截图)。像 x 和 p 这样的变量是向量,但不是用粗体书写的):
λ本身是时间的函数,而表示共轭转置,或者如果我们只关心实值,则简称为转置。接下来我们对 p 求导来表示灵敏度 dG/d p ,*
下标用来表示偏导数。例如 F ₚ = ∂F/∂ p 。接下来我们通过分部积分去掉第二个积分中的 xₚ’:
********
由于 xₚ 一般很难计算,我们想通过将 xₚ 之前的系数块设置为 0 来去掉第二个积分。这将给出条件,以及伴随方程:
最后,我们可以将灵敏度写成:
很容易找到 t=0 时的灵敏度 xₚ ,但是很难在 t=T 时计算它。因此,为了避免在 t=T 时计算 xₚ ,我们可以简单地设置λ(T) = 0。只要我们的 DAE 系统是索引 0 或索引 1 ,我们就可以这样做。因此我们的敏感度变得
现在,这种形式似乎已经远离了气象学的例子,但让我们仔细看看。为了计算灵敏度 dG/d p ,我们首先要对 F( x , x ',t, p )进行数值前向积分,得到 x 从 t = 0 到 t 的完整轨迹,初始条件为 x (0) = x₀( p 。然后我们需要计算λ从 t=T 到 0 的全轨迹,手动设置初始条件λ(T) = 0。这是通过在时间上向后对伴随方程进行数值积分来实现的。然后,λ的轨迹用于计算灵敏度。这非常类似于气象学的例子,我们首先向前计算 n 次运算以得到所有的 b ⁽ⁿ⁾,然后向后计算每个输出相对于前一个输出的所有偏导数。这些偏导数然后用于计算灵敏度。
此外,如果我们考虑拉格朗日乘子,则在每个时间步长的局部最优处的乘子是目标函数的梯度与约束函数相对于参数的梯度之比。如果我们回头参考等式 7,我们可以看到拉格朗日乘数简单地等于λ = ∂s/∂ b ,这关系到∂s/∂ a 和∂ b /∂ a 。
对于连续时间的情况来说有点复杂,但是如果我们忽略下面的伴随方程中的第一项,我们可以看到λ与∂F/∂ x 和∂g/∂ x 相关,目标函数的梯度和约束相对于 x 的梯度。那么一阶导数是干什么用的呢?肯定有很多解释,但这里有一个我想到的简单解释。在动力系统的研究中,一个变量及其导数被视为两个独立的量,因此这个优化问题的约束基本上是以两个独立的变量作为输入。因此,在计算梯度时,必须考虑两者的贡献。事实上,λ的时间导数可以被认为是增加了另一个独立于λ的乘数,以处理作为 x’的结果的约束的梯度变化。我们需要这两个分量来匹配 F 和 g 的梯度。***
另一个观察结果是伴随方程是关于 x 而不是 p 的导数。这是因为我们通过写下这个伴随方程消除了计算∂ x /∂ p 的需要。最终的灵敏度表达式将自然地增强相对于 p 的梯度。****
我已经描绘了一幅简化得多的 ASM 图。实际上,它有很多限制和应用,我在这里没有讨论。比如我们如何保证 ASM 的数值稳定性?如果 DAE 系统是 Hessenberg index-2 而不是 index-0 或 index-1 会怎样?此外,我只讨论了 ASM 在优化动力学模型参数中的应用,但它也广泛应用于翼型设计的形状优化、计算半离散偏微分方程(PDE)的灵敏度等。为了充分理解 ASM,需要挖掘更多的论文。
参考文献
[1]田、尤利娅·鲁巴诺瓦、杰西·贝当古和戴维·k·杜文瑙。“神经常微分方程。”NeurIPS,2018。
[2]罗纳德·m . n . d .埃尔里科,“什么是伴随模型?”http://bio . CG rer . ui OWA . edu/people/tchai/HTM/Reference/conjugate _ errico . pdf。
[3]曹、杨、李胜太、琳达·佩佐德和拉杜·塞尔班。2003."微分代数方程的伴随灵敏度分析:伴随 DAE 系统及其数值解."暹罗科学计算杂志 24(3):1076–89。
[4] A. M. Bradley,《PDE 约束优化与伴随方法》2019 年 10 月 15 日(原文 2010 年 11 月 16 日)。https://cs.stanford.edu/~ambrad/adjoint_tutorial.pdf
[5]曹、杨、李胜太和琳达·佩佐德。2002."微分代数方程的伴随灵敏度分析:算法和软件."计算与应用数学杂志149:171–91。
脸书获得集成分类器的故事
人工智能笔记
以及设计您自己的集成分类器的一些见解
我写这篇文章是想通过我自己的故事来描述集成方法在行业中的意义。在本文中,我不解释经典方法,因为存在各种资源。尽管如此,我还是想向你们展示集合方法的力量以及你们实现它的方式。我的目标是分享一个我们几年前发明的集合方法的故事,这个方法在脸书的领导下仍然有效。集合方法无论是经典的还是你自己设计的都比你想象的要好得多。我保证。
首先,让我告诉你故事是如何开始的。我是一家初创公司的机器学习团队的负责人,致力于开发一种智能设备。该设备旨在根据肌肉信号识别手势。这个小装置在前臂上有八个传感器,记录肌肉信号。我们处于早期阶段,产品还没有准备好。我们的原型在数据记录方面的功能让我们惊讶了很多次。此外,我们不确定可能的手势应该有针对性。然而,我们不得不在早期设计一个手势识别引擎,因为我们到处都有演示。
—基本分类器不必是弱分类器。
建议基于大量数据建立模型。然而,对我们来说很明显,原型记录的数据质量很差。另外,用例还没有确定。所以,我们用原型收集大量数据的努力可能会白费。
因此,我决定设计一个基本分类器,它不需要那么多数据,但性能仍然一般。我引入了一个向量分类器作为基本分类器,它使用余弦相似性来评估类成员。对我们来说,向量分类器比弱分类器好(比随机分类器稍好),但它离可接受的分类器还很远。这是设计一个集合方法的第一步,这个方法在多年后仍归脸书所有。
—基本分类器应基于相同的算法构建。
集成分类器是关于组合或聚集几个分类器,而不管它们的类型或算法。还建议基分类器应该相互独立。
知道我决定开发大量简单的具有相似算法的基分类器,而不是几个具有不同算法的基分类器。这个决定是由随机森林算法的直觉启发的,其中它的基本分类器有一个类似的算法。还可以想到聚合一系列一级决策树的 Adaboost 还是类似的算法。
拥有相似的基分类器也给了我一个机会来获得更好的洞察力,然后控制集成方法,因为基分类器的行为在这个过程中被广泛地研究。下一个问题是我们应该如何聚集基本分类器。
建议——你应该对基本分类器使用相同的算法。这给你一个更好的机会来控制你的集成分类器的进化。
—必须精心设计聚合基本分类器的策略。
下面简要列出了聚合基本分类器的不同经典策略。在这个概述之后,我解释我们使用了什么策略。
- 策略一:注意机制。该算法使用夸张或注意机制以自适应的方式学习基本分类器。这意味着算法更加关注基本分类器失败的区域。这有助于减少预测中的偏差。这些方法通常被称为升压。
- 策略二:数据拆分。该算法在没有交互的情况下并行学习基本分类器。每个基本分类器是在训练数据集中随机生成的数据集上学习的。这有助于减少预测中的差异。这些方法通常被称为装袋。
- **策略三:模型堆叠。**该算法在没有交互的情况下并行学习基分类器。每个基本分类器是在整个训练数据集上学习的。然后,它通过训练元模型来组合基本分类器的结果,该元模型采用初步结果并创建最终预测。
在这里,我想描述我们如何选择一种策略来聚合基本分类器的结果。
机器学习问题中存在偏差-方差权衡。我们也有。然而,我们决定以不同于教科书建议的方式来应对这一挑战。我们介绍了两个模型:人口模型和个性化模型。人口模型旨在为一大群人完美地工作,但不是每个人。该模型是使用训练数据集学习的。个性化模型旨在为一小组用户工作,而人口模型工作正常。这个模型是利用一个人在每次使用中记录的数据来学习的。
简而言之,我们希望这个小工具能够完美地为一大群人工作,而不是为所有人工作。我们决定在人口模型中减少对方差的关注来改善偏倚。因此,旨在减少方差的策略 2 不可能是一个选择。
我们还有另一个挑战。用户可以根据方位和旋转以多种形式佩戴这个小工具。因此,每次用户佩戴小工具时,都必须调整基本分类器。我们花费了大量的时间和精力来开发一种可以有效调整基本分类器的算法,这超出了本文的范围。在 boosting 算法中,基本分类器是按顺序模式设计的,这种模式会产生相互依赖性,从而增加复杂性。因此,战略 1 也不是一个选择。
建议——构建强分类器的一个好策略是使用模型堆叠方法聚集大量使用相同算法训练的简单基础分类器,但是使用不同的数据集和/或超参数。
正如您所猜测的,我们选择了模型堆叠策略。我们设计的元模型是概率分类器和投票机制的结合。我们处理长度不固定的时间序列数据。例如,一个手势可能需要一秒钟,另一个手势可能需要两秒钟。因此,您可以在此列表中添加大量的超参数调谐。具有大量灵活基分类器的模型堆叠策略很好地解决了我们的问题。
临终遗言
简而言之,集成方法背后的哲学是使用“加权专家群体的智慧”。我喜欢这句话,这句话引自帕特里克·温斯顿教授在麻省理工学院开放式课程中讲授的人工智能课。
在工业中,你经常有许多未知,但你被要求定期提供结果。这不会通过应用花费大量时间学习和调整的方法来实现。另外,您总是希望设计一个可以在未来得到增强的分类器。集合方法可能是正确的方法。
开发一种能够解决不同问题的通用方法将是非常好的。但是,你可能想不出这样的方法。然而,如果你用整体方法来解决一个行业问题,你永远不会后悔。
感谢阅读!
如果你喜欢这个帖子,想支持我…
[## 通过我的推荐链接加入 Medium—Pedram Ataee 博士
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
pedram-ataee.medium.com](https://pedram-ataee.medium.com/membership)
数据的故事——设计的隐私
讨论在数据管理生命周期的早期采用隐私设计等框架的必要性
作者图片
每一个字节的数据都有一个故事要讲。问题是这个故事的叙述是否准确可靠。通常,我们非常关注数据的趋势,目标是提高收入,但通常会忘记由于糟糕的数据管理而导致的漏洞。
数据拥有巨大的力量,但是巨大的力量伴随着更多的责任。在当今世界,收集、分析和建立预测模型是远远不够的。我不断提醒我的学生,在我们这个时代,对数据安全性的要求可能已经超过了对数据正确性的需求。因此,通过设计来保护隐私的需求比以往任何时候都大。
在我们讨论设计隐私之前,让我们先了解一些关于数据安全和隐私的问题。
安全性——数据处理器和数据控制器的作用
几年前,对于许多组织来说,仅仅构建一个数据湖就是一个巨大的飞跃。对于有安全意识的组织来说,数据湖的安全性仅仅局限于启用 Kerberos 进行身份管理。我们很少谈论静态数据或动态数据的安全性。不再是了…
在当今世界,数据处理器和数据控制器的角色已经被重新定义。无论是静态数据还是传输中的数据,都不能安全地处理。最重要的是,组织在法律上有义务在检测到任何数据泄露时立即通知相关方。
数据速度
直到最近,企业还在关注长时间的数据,大数据使这成为可能。随着物联网(IoT)的出现,分析实时数据变得非常重要。如今,在我们的家中拥有收集个人数据并将其传输到外部位置以进行监控或分析的设备非常常见。在许多情况下,贫穷的消费者发现很难权衡放弃个人数据的好处和提供这些数据的风险。需要达到一种恰当的平衡。
设计隐私
我们处在一个每天都在创造历史的时代。当脸书、谷歌和其他巨头正在寻找收集、处理、使用和共享数据的创新方法时,立法者正在起草和执行关于数据隐私和所有权的新法规。像欧洲 GDPR 这样的法规试图定义数据控制器和数据处理器的法律责任。该法规更加关注围绕个人数据可移植性、保留和销毁的数据治理政策。
什么是设计隐私?
从一开始就将隐私问题融入整个开发周期。
同样的方法应该适用于所提供的服务以及内部流程。这种方法背后的理论是,隐私不能仅仅通过立法来实施。
隐私设计基于 7 项基本原则,由安·卡沃金开发,并在与安大略省信息与隐私专员的联合报告中正式确定。
在一个注重安全的世界里,IT 公司比以往任何时候都更努力地帮助客户实现数据创新和数据治理的正确结合。随着机器学习和人工智能的使用越来越多,我们需要帮助我们的客户采用像 Privacy by Design 这样的框架,以使他们未来的数据路线图更加简单、安全和经济高效。
我希望这篇文章有助于传播关于设计采用隐私的消息。像这样的主题是由 Datafence Cloud Academy 提供的大数据 Hadoop、Spark 和 Kafka 课程的一部分。课程是周末自己在网上教的。
新发现的友谊的故事:艾、曼梯·里和新常态
这篇文章讲述了这个疫情如何给了 AI-ML 阿朵急需的推动力,以及这种新发现的友谊是如何产生良好效果的!
图片由 btaskinkaya 和combreak来自 Pixabay
技术进化背后的一个持续动力是——我们人类喜欢保持控制。我相信这是我们对 AI & ML 着迷的最常见的原因。
- “我打算开始一项新业务。哪个行业将在未来 5-10 年内变得最赚钱?”
- “我是学生。就我的专业而言,我希望选择一门与未来相关的学科。”
- “未来 15 年,哪只股票能给我带来最大回报?”
新冠肺炎疫情让所有人都措手不及,没有人真正知道如何控制这种新形势。企业遭受损失,如果不关闭,人们死亡,医疗设施过度使用等等!
人工智能和机器学习在这个疫情中拯救了我们。它们已经存在了足够长的时间,但疫情让人工智能和人工智能变得比以往任何时候都更加重要。
在这篇文章中,我将谈论这个疫情如何给 AI-ML 阿朵急需的推动,以及这种新发现的友谊如何产生良好的效果!
预测未来:人类 vs AI (& ML)?
让人类独自做未来预测的事情是,他们不太可能倾向于预测,如果预测结果是真的,那么预测背后的人会被认为是“非凡的”。而且,在大多数情况下,他们是!
即使我们在过去目睹了大流行,医疗机构和政府也开始怀疑他们怎么会没有预见到新冠肺炎的爆发。问题依然存在— 我们是否能够使用人工智能& ML 来预测下一次病毒爆发,比如冠状病毒?
人工智能,加上最大似然法,对未来的预测更可靠,因为它们处理的是数据,而不是偏差或任何其他异常。但是,一次又一次,我们看到 人类预测失败 人工智能预测也是如此。
埃尔文·费雪预言
埃尔文·费雪是 20 世纪著名的经济学家。他被另一位美国经济学家米尔顿·弗里德曼称为“美国有史以来最伟大的经济学家”。鉴于他的地位,人们会认为他的预测永远不会出错,但事实并非如此。
就在 1929 年华尔街崩盘的前几天,埃尔文·费雪说——“股票似乎已经到达了一个永久的高原”,这显然是不正确的!
人工智能预测出错了
回到 2018 年,一名 女子在亚利桑那州 被一辆自动驾驶优步撞死。有很多这样的场景,即使经过多次测试,人工智能驱动的解决方案也失败了。
所以,现在的问题是,当组合的解决方案可以更有效时,人工智能(& ML)预测与人类预测在这场疫情中是正确的战斗吗?
人工智能、机器学习和人类智能——疫情的更好组合
一个可以被引为完美例子的完美例子,在这种情况下,就是——【地缘政治事件协同预期(SAGE) 。由信息科学研究所(ISI)的 Aram Galstyan 领导的 SAGE 完全是利用人工智能&非专家来预测地缘政治事件。
专家预测,在未来 10-20 年,人工智能和人工智能将帮助人类更有效地工作。可以肯定地说,这些工作中的一项将是预测未来像新冠肺炎这样的大流行。
好消息是,尽管人工智能和人工智能工具无法预测冠状病毒的爆发,但它们肯定可以在遏制疫情的传播方面发挥重要作用。
疫情是如何改变我们对人工智能和人工智能的偏好的?
暂且不谈技术细节,在这个疫情,AI & ML 可以帮助企业和医疗机构实现许多领域。以下是其中的几个。
远程工作成为新常态
在疫情之前,远程工作和在家工作被认为是一种奢侈。现在,远程工作已经成为新常态。
IT 部门和其他部门的公司正在寻找方法来定义流程,以使远程工作像在办公室工作一样有益和高效。AI & ML 正在帮助远程团队在疫情期间高效运作。
微软甚至在其最新发布的产品中使用了人工智能引擎——Surface Pro X 到 让视频聊天“不那么怪异 ”
- 人工智能售票系统正在帮助远程团队在疫情期间有效处理内部问题和客户投诉。
- 人工智能简化了远程对话的增加。LivePerson 报道称,由于疫情,其对话式 人工智能聊天机器人 &消息工具的数量正在“显著”增加。
- 在这次疫情期间,机器学习正在促进对数据的稳健访问和公司的远程计算需求。
一些企业可以在大幅削减预算的情况下生存
由于疫情导致严重的预算削减,一些企业遭受了巨大的损失。
根据国家经济研究局 的一项 研究,与整个大衰退相比,疫情 3 个月内(2 月至 4 月)倒闭的企业更多!
在这种情况下,AI & ML 可以帮助企业在这个疫情生存。
正确的是,公司现在正在积极学习采用人工智能和人工智能驱动的自动化工具,并在预算大幅削减的情况下保持功能。
在 Algorithmia 的一项 调查中,43%的 IT 领导者受访者认为,由于疫情,人工智能&比他们最初认为的重要得多。
医疗保健领域的精确预测分析比我们预期的更加重要
从多方面来看,新冠肺炎疫情是对全球医疗机构的一次“压力测试”。
为了应对新冠肺炎病毒的爆发,来自不同领域的研究人员挺身而出,值得注意的是,其中就有 ML 研究人员。
在过去的二十年里,人工智能和人工智能都在医学领域取得了令人鼓舞的成果。甚至在某种程度上,它们已经被应用于解决一些顶级的社会挑战——其中之一是预测疾病的传播。
与传统分析和当前疫情的临床决策技术相比,将人工智能和人工智能能力用于对抗新冠肺炎无疑会让医疗机构占据上风。
机器学习可用于有效地从复杂的数据集中识别数据模式,以提供关于疾病传播、患者结果、药物发现等前所未有的见解!
疫情的人工智能和人工智能——面向企业
鉴于正在进行的疫情,企业正在加倍他们的人工智能/人工智能支出,这是有充分理由的!
人工智能和人工智能已经存在很长时间了,但它们的潜力没有被公司充分认识到。疫情为实施这些技术带来了迫切需要的紧迫感。
机器学习技术使现代计算机能够在海量数据集中模仿人类智能,识别模式,并预测疫情的传播。
另一方面,人工智能正在学习执行任务,这些任务以前是使用传统方法执行的,在这个疫情中更有效,更符合它们的紧迫性。
人工智能开发人员 以及 ML 开发人员 正在帮助组织无缝转移到新常态,而不会影响客户体验、商业智能和扩展机会。
无论是小型企业还是大型企业,企业都在寻找新的方式来高效运营,同时满足社交距离的规范。当然,这些技术可以在哪些领域帮助您的运营,这将取决于您的业务。
以下是人工智能和人工智能如何在疫情帮助企业的几个例子。
- 利用(AWS 的)机器学习能力来预测每日订单, 达美乐比萨以创纪录的时间 。
- 拉丁美洲食品配送公司 iFood 能够使用人工智能 将覆盖的净配送距离减少 12%,将人员停机时间减少 50%,并将 SLA 从 80%提高到 95% 。
- Certipass 是一家提供数字技能认证的认证机构,在正在进行的疫情测试中,它正在使用亚马逊 Rekognition 对其候选人进行自动身份验证。
在疫情期间,AI 和 ML 在企业中实施的其他案例包括客户支持聊天机器人、预测现金流、文档/身份验证等等。
疫情的人工智能和人工智能—面向医疗保健机构
流行病是对人工智能和机器学习的真正考验。就在 2000 年之后,全球各地的医疗保健机构一直在尝试使用这些技术来预测疾病传播、预测病毒爆发、防止虚假信息传播、药物发现、自我分析等。
- AI & ML 可以让人们了解官方规则和交流。例如,法国初创公司 Clevy.io 推出了一款聊天机器人,让人们可以轻松获取关于新冠肺炎疫情的官方政府信息。
它由来自法国政府和世界卫生组织的实时信息驱动,迄今已发送超过 300 万条信息!奥尔良、斯特拉斯堡、楠泰尔和其他法国城市正在使用 Clevy.io 将经过验证的信息直接分散到居民手中。 - 机器学习也被用于分析大量关于病毒传播的数据,并预测早期预警信号。Chan Zuckerberg Biohub 和 AWS 诊断开发计划(DDI) 的合作就是一个典型的例子。
利用机器学习,Biohub 开发了一个系统,用于 检测和量化未被发现的新冠肺炎 传播。 - 信息的早期访问可以真正帮助医疗机构和企业为像正在进行的新冠肺炎这样强大的疫情做好准备。
BlueDot**—**一种 AI 驱动的算法,梳理了整个互联网,65 种不同算法中的新报告,植物&动物疾病网络,以及官方文告提前发送警告的方式。
Kamran Khan 博士(BlueDot 创始人兼首席执行官)说— “我们所做的是使用自然语言处理和机器学习来训练这个引擎,以识别这是不是蒙古的炭疽爆发,还是重金属乐队炭疽的重聚。”
蓝点甚至成功预测了 南佛罗里达州寨卡病毒爆发的位置。随着谷歌 BigBird 等 NLP ML 改进的发布,BlueDot 等工具将变得更加强大。
谷歌研究人员最近在 arXiv 上发表了一篇题为《大鸟:更长序列的变形金刚》的论文。
towardsdatascience.com](/understanding-bigbird-is-it-another-big-milestone-in-nlp-e7546b2c9643)
疾病预防控制中心、世卫组织和类似的组织收到了大量关于新冠肺炎病毒传播和相关事件的数据。值得注意的是,许多其他研究人员也指出,全球范围内医疗保健组织之间的协作和合作对于实现机器学习和人工智能的真正潜力至关重要!
除了收集和分析庞大的数据集,ML 和 AI 还可以在疫情期间以多种其他方式帮助医疗机构。例如,ML 技术可以大大减轻医学成像的任务,像 胸部 CT 扫描 **,**结合专家输入来检测新冠肺炎病毒。
AI & ML——二人组将继续存在
疫情已经签署了 AI & ML 的协议,我们都对这一新建立的友谊寄予厚望。
然而,这些技术在像新冠肺炎疫情这样的前所未有的情况下面临的最大问题之一是缺乏可靠的数据集(来自过去)。目前,各组织在疫情爆发之初就开始提供尽可能多的相关数据集。希望研究人员也能找到更明确的解决方案。
你对此有什么想法?请在评论中告诉我!
参考文献:
【1】Swami Sivasubramanian(亚马逊机器学习副总裁,AWS),AI 和机器学习如何帮助对抗新冠肺炎, 世界经济论坛
【2】萨蒂安·达南贾扬和杰拉德·马歇尔·拉杰,疫情时期的人工智能:以 COVID‐19 为例, 威利在线图书馆
【3】Nathan Pei ffer-Smadja 及其团队,机器学习对于新冠肺炎来说需要全球协作和数据共享, 自然机器智能
【4】在《疫情》中为 AI 找角色, 自然机器智能
寻找我作为数据科学家的第一份工作的努力
KY=MX+B
在我选择撰写的这个奇怪的个人专栏的最新部分中,我分享了我对数据科学的兴趣以及我参加编码训练营的决定。虽然这篇文章本身很有趣,但它也是以自我为中心的,只关注我的经历,仅此而已。
更重要的是,对于那些寻找建立数据科学职业生涯中最重要一步的信息的人来说,它提供的信息很少——找到你的第一份数据科学工作 。
我在 2017 年试着找一份像这样的工作
这个疫情无疑是一个找工作的可怕时期,尤其是如果你即将毕业并寻求你在机器学习领域的第一份工作。作为一个目前采访入门级数据科学家的人,我想就新数据科学家可以更好地集中精力的地方提供我的故事和观点。
所以,这一次,我想谈谈我找到第一份数据科学工作的经历——失败、缺点等等。
无论你已经参加或正在参加编码训练营,即将获得该领域的学位,或者只是想利用这段时间改变职业生涯,我希望我可以从我自己的错误和我目睹的其他人所犯的错误中提供一些见解。
写过去的天真有点尴尬,但我希望我能提供一些建议,我希望我在寻找我的第一份全职工作时就有这些建议。
背景
如果你没有阅读本专栏的上一篇帖子,我在 2016 年完成 MS 后参加了一个数据科学训练营(在一个不相关的领域)。我还在一家生物技术公司做了一年的数据分析师,做非常基础的研究。在培养了对数据的实际兴趣之后,我找到了数据科学训练营,接受更正规的技术教育。
从那时起,我开始了从一个没有什么技术技能的新手到一个有竞争力的数据科学申请者的旅程。
第一个月:手机屏幕和被误导的自信
我在数据科学训练营的经历让我成为了一名全面发展的候选人。训练营本身是全面的。我几乎一无所知(我不相信你,我不得不问一个同学什么是机器学习甚至是第二周),然后出来了一个数据科学通才——在 R、Python、SQL 和各种 ML 知识方面都有实践。
数据科学欢乐时光
当我获得认证并开始申请和联网时,我练习 Python、SQL 和通用机器学习,为技术面试做准备。在不过分谨慎或挑剔的情况下,我向我能找到的每一份相关数据科学的工作发出了一长串不费力的申请。我的这种懒惰行为得到了 4-5 个电话屏幕的奖励——鉴于我的生物学背景,两家生物技术公司和几家初创公司。
对于那些不熟悉的人,数据科学职位的面试通常遵循以下两个或更多步骤:
- 招聘人员或团队成员的初始电话筛选
- 技术电话屏幕或带回家的编码挑战
- 与团队成员的面对面访谈(通常也是技术性的)
手机屏幕本身非常简单。许多招聘人员可能会更多地谈论职位和公司本身,而不是问你任何技术性的问题。在这个阶段,我对这些公司做了很少的研究。比起我可能为之工作的公司,我对有工作的前景更加兴奋。我阐述了我的经历中似乎特别相关的部分。手机屏幕似乎总是运行良好。很快,我进行了两个阶段的面试。
我满怀信心地拿起电话参加了我的第一次技术面试,我之前参加大学考试和技术性较低的工作时也有同样的心态和准备:记住一堆相关信息,并即兴回答所有问题。
我相信你能想象这是怎么回事。
面试官问了一个相对简单的 Python 问题,可能类似于“给我写一个函数,判断列表中任意两个数字的总和是否为 0”。我彻底搞砸了。在这次采访之前,我已经浏览了 Python 的信息,但是我还没有足够的练习编码。我很难找到解决方案,对自己的语法和逻辑也不自信。我可耻地离开了电话,意识到我将从那家公司得到的回应(或缺乏回应)。
第二个月:一长串技术面试
被这种不熟悉的经历弄得底气不足,我开始练习各种 Python 题。列表中哪些数字的总和为 0?两个列表之间有哪些值相交?我自问自答,直到我为下一次面试做好准备。
我再次拿起电话,对自己的技能充满了自信和自豪,渴望被问到任何我练习过的 Python 问题。
只是这次我没有被问到任何关于 Python 的问题。相反,我被问了一个 SQL 问题——和我第一次面试中的 Python 问题一样复杂。从数据库中检索一些统计数据,同时替换一些字符串,基本上是一个带有GROUP BY
和HAVING
的CASE
语句。
这不是我,但我经常有这种感觉。
愤怒之余,我听从了自己的意见,再次跌跌撞撞地走上了第一次面试的老路。我确信两周前就知道的可笑的简单事情从我的大脑中消失了。面试的焦虑加上我对 SQL 的缺乏,表现在对我的回答明显缺乏信心。再说一次,我离开电话时知道公司的反应会是什么。
这种循环持续的时间比我愿意承认的要长,所以我在这里总结一下:在每次技术面试中,我都被问到一些我似乎没有实践过的事情,尽管每次面试后我都有显著的进步,但我仍然无法对这种模式做出积极的反应。
这并不是说我是一个糟糕的程序员。我只是依赖于手边的文本编辑器和学习材料。从更难的问题(在纸上进行逻辑回归)到最简单的问题(列表和元组之间有什么区别),我开始意识到我的方法的问题。
我很高兴地说,我所有的失败不一定是因为技术挑战。由于这是我的第一份工作,也有少数几份工作我表现不错,但没有达到最低经验要求。我不太确定与技术和经验相关的失败的比例,但是令人尴尬和尴尬的技术缺陷肯定是最困扰我的——也是后来迫使我更加努力的原因。
带回家的技术挑战肯定要好得多(显然)。我从训练营获得的大量材料有助于支持我解决问题的方法。我甚至收到了一些邀请!然而,他们更侧重于分析(这是我不感兴趣的),或者没有提供我觉得能够在纽约生活的薪水。
总的来说,我肯定有过 15 次左右的技术面试,涵盖了令人沮丧的广泛内容——没有一次有结果。我有一个选择:我可以通过失败的经历继续磨练我的技能,或者我可以努力变得积极主动,而不是被动的 T2。
是时候重新评估我的方法了。
第三个月:找到我的节奏
虽然我在这里专注于我的失败,但我确实取得了一些成功:我最终为我毕业的 bootcamp 做了兼职工作,并接受了一家小型应用初创公司的另一份兼职数据科学家职位。
现在我忙于两份兼职工作,我放慢了疯狂的全方位求职过程,并重新考虑了我的方法。我申请了大量的工作,并获得了大量的面试机会。
然而,我在面试中应用的理念和我发送申请时一样:数量重于质量。起初,批量申请并尝试学习天底下的每一项数据科学技能是没问题的。然而,当涉及到具体的采访时,我严重缺乏准备和研究。
所以,我改变了我的流程。我不再浏览公司的使命和工作要求,而是更深入地了解公司在寻找什么。我开始小心翼翼地为每个空缺职位准备我的简历。甚至在最初的电话筛选之前,我就重读了工作描述的更多细节。可能我意识到的最重要的事情是不是所有的数据科学工作都是平等的。也许这个角色侧重于商业智能,也许它更面向数据工程,或者也许它需要 Python 中的机器学习。
我把我的申请集中在我最擅长的领域:编程。我开始放弃那些我可能表现不佳或者对追求长期职业不感兴趣的角色。
看看她做的所有研究。我打赌她会通过面试的。
结果,我面试的技术部分有了显著的提高。工作描述基本上是我为测试准备的学习单——我的复习。我一直试图掌握整个学科,但什么也没记住,而每份工作都公开发布他们认为重要的技能列表,甚至为你订购这些技能。
同时,我从我的两个兼职数据科学角色中获得了实践经验。用 Python 处理真实的客户数据,并试图解决真实的业务问题,让我在与招聘人员交谈时更加流利和舒适。在技术面试中,我明显更冷静。我发现自己可以从容不迫地给出深思熟虑且充满自信的答案。
不要花几个月的时间自己学这个。从我的错误中吸取教训。通过阅读职位描述和在电话面试中提出的好问题,尽可能多地了解技术面试。
第四个月:寻找我的实习和职业
找到我已经转化为职业生涯的实习,是我的一般经验、特定角色准备和纯粹运气的完美结合。
有一天,我正在训练营工作,突然被另一个不知道从哪里冒出来的员工打断了。他说辉瑞在隔壁面试人,想知道我有没有兴趣。我低头看着我的装备:一个图形 t 恤,紧身牛仔裤和面包车。怎么回事,对吧?不妨。
这次面试和其他许多面试一样:混合了 Python、SQL 和理论问题。只是这次我终于觉得舒服了。我事先没有时间做心理准备,而且(与之前的许多面试不同)我现在有了可以依靠的真实经验。面试感觉很顺利。
我的女朋友对拍这张照片百分百不满意
我晋级了下一轮。通过带回家挑战后,我被邀请参加最后一轮现场面试——3 个小时的现场面试。在无偿地研究了职位描述之后,我满怀信心地走进了辉瑞大楼,并为最后的挑战做好了准备。
虽然我肯定没有搞定,但我的准备和经验得到了回报。这可能是我迄今为止面临的最大的技术挑战:Python、ML、SQL、Spark、通信、逻辑……这绝对是艰难的。我差一点就通过了初级流程,并接受了实习,这让我成为了现在的机器学习工程师。
小费和…嗯,是的,小费。
这就是了。虽然这是个故事,但我确信将实际的要点浓缩成零碎的功能单元会更有帮助。所以,给你:
每天练习。决定你技术面试成败的是经验和舒适度,这不是你一天就能学会(或一周就能记住)的。每天分配时间来解决问题,而不需要谷歌或堆栈溢出的支持。
用数据科学解决现实商业问题。通过将您的技能应用到您认为可以从数据科学中受益的真实场景中来实践。你不会从你的角色中复制/粘贴教程——你可能正在解决尚未解决的问题。让自己陷入困境会迅速提升你的技能。
*集中你的技能。*数据科学是一个定义不清的宽泛领域。你是程序员、数学家、讲故事的人,还是别的?入门水平不可能什么都精通。专注于发展你的优势和兴趣,申请适合这些技能的工作。
阅读职位描述。在技术面试之前,这一点怎么强调都不为过。虽然有时会有很多招聘人员,但是各种技能的优先顺序和措辞可以让你通过专注于你的学习来通过技术部分。使用这个和电话屏幕作为您的技术学习表。
面试时要放松,慢慢来。自信在面试中大有帮助。就我个人而言,当我紧张、变得难以理解时,我会说得很快。在面试过程中放慢速度来组织你的思维没有什么不对,这样你就可以给出一个简洁明了的答案,而不是一个不知所云的意识流。
*不要气馁!*熟能生巧,技术面试也不例外。您必须同时应对压力和不熟悉的技术环境(白板编码比 MS Paint 中的编码更糟糕)。你肯定会失败,但这只会让你为下一次做好准备。
我会补充更多我想到的建议,通常你可以在 LinkedIn 上联系我,或者在 Twitter 上成为我黯淡追随者的一部分。
点击此链接或下图,选修更全面的数据科学课程!
当我从 R 转换到 Python 时的挣扎
观点| Python |常规
学会识别你最常见的错误会让你的效率提高十倍
当我开始学习数据科学时,我是从 R 开始学习的,我是统计学专业的,在学术界,R 比 Python 有更重的偏好。学习这两种语言本身并没有什么错,但是在我参加工作之前,我已经花了几年的时间来掌握 R,Python 也成为了一项要求。
我开始我的第一份工作时,期望能够使用我在 r 中拥有的工具建立模型并自动化一切。当我发现我的工作中没有人了解 r 的任何事情时,我预测和消除所有工作的梦想很快破灭了。这意味着如果我继续前进,我创建的任何东西都不会得到 IT 部门或任何同事的支持。我可以让自己的工作自动化,但如果我开始在公司里往上爬,没有人能像我这样做。
随着时间的推移,我开始更多地与数据科学团队和他们的 IT 支持团队合作。他们向我介绍了一种叫做 Python 的奇妙语言。和任何新的语言或工具一样,都有一段学习曲线。我挣扎了很久。下面是 Python 的一些不同之处,它们确实让我犯了一个错误。
哦,我没有保存
由Damir spanick在 Unsplash 上拍摄的照片
是的,首先是我无法保存修改后的数据框。在 R 中,可能是这样的(当使用dplyr
时):
dataframe <- dataframe %>%
select(-col1)
如果您不太了解dplyr
,这段代码只是删除了名为col1
的列。由于数据帧dataframe
和函数select
在物理上是相互分离的,我并不期望输出被保存,所以我不假思索地将它分配给dataframe
来覆盖它,而不使用col1
列。
为了用 Python 做同样的事情,我曾经做过这样的事情:
# The wrong way!
>>> dataframe.drop('col1')
头几次我这样做的时候,我会在接下来的一两个小时里小声嘟囔脏话,想知道为什么col1
仍然是我数据框的一部分。你可能会问,为什么我不把输出赋给原始变量呢?在 python 中,我们得到了这些叫做方法的好东西,比如.drop()
。它们在物理上依附于它们所作用的物体。对于 Python 新手来说,我们希望相信他们只是改变对象,而我们不需要保存任何东西。唉,Python 的奇妙世界并不是那样运作的。
# This actually SAVES the modification
>>> dataframe = dataframe.drop('col1')
这就是我从 R 转换到 Python 的第一次挣扎:
我从来不记得在修改 Python 数据框后保存它们
但是等等,你能做到的!
这本身并不是世界上最令人困惑的事情,只是与 R 处理事情的方式不同。但是熟悉 Python 数据框方法的人可能知道一个小技巧,它不要求您在删除列后保存数据框…
在你们所有的 python 专家都竭力反对如何修改数据框之前,是的,我现在知道了。如果我真的不想重新分配变量,我可以把inplace=True
参数添加到.drop()
方法中。很好很灵活,问题解决了,对吧?
# We don't need to save changes here
>>> dataframe.drop('col1', inplace=True)
这当然可以,但是如果一个方法没有inplace
参数,或者我使用了一个函数而不是一个方法,会发生什么呢?对这门语言来说,有选择并不能使东西更容易记忆或使用。
在具备完成操作到位的能力方面,我是完全赞成的。见鬼,它甚至实现得很好,因为就地修改数据框并不是默认行为。但那是针对数据帧的。
列表呢?如果我创建一个字符串列表,许多字符串方法,如.append
、.insert
、.pop
和.remove
会修改列表,而不需要保存结果。以这个例子为例,我们从列表中删除了 9(显然,因为 7 吃了 9😏).
>>> x = [7, 8, 9]
>>> x.remove(9)
>>> print(x)
[1] [7, 8]
更糟糕的是,在学习 Python 的典型方式中,在学习任何关于数据框的知识之前,您将学习列表及其工作方式。这种混乱是因为在 Python 中,列表不同于数据框列,就像 R 向量不同于数据框列一样。
这是我学习 Python 的第二个大问题:
一些对象(列表)通过它们的方法被就地修改,而另一些对象(数据帧)需要保存以便通过它们的对象方法修改它们
这是需要学习的事情之一,在某种程度上只是记住每个不同的对象是如何工作的。我想从 R 到 Python,有些东西看起来不一样。这让我开始了下一场斗争…
函数住在哪里?
马库斯·温克勒在 Unsplash 上拍摄的照片
在 R 中,我们经常不经意地将所有包加载到工作区中。r 将尝试通过名字在加载的库中找到一个函数,如果它存在就执行。
有时你加载一个包,它会从另一个包中“屏蔽”一个函数。如果您不熟悉,这仅仅意味着它将使用最新加载的包含该函数的包中的函数版本。如果你想指定一个不同的库版本的函数,你可以这样做。只需将包名放在函数之前,用双冒号(::
)隔开。以下是一些例子:
# Uses the "base" library version of filter
filter(x)# Uses the "dplyr" library version of filter
library(dplyr)
filter(x)# Uses the "base" version, even if it's masked
base::filer(x)
这就是 r 中函数的全部内容。它使用最新加载的版本,除非你另外告诉它。
在 Python 中,事情有点不同。有三种主要的方法可以调用函数。我在这里不太严格地使用函数这个术语,因为对于 R 用户来说,方法看起来很像函数。
- 一个函数名,类似于
len()
- 一个模块的功能,就像
pd.DataFrame()
- 来自对象类的方法,比如
df.drop()
您可能会在如下代码中看到它们。
# A function
len(df)# A function from a module
pd.DataFrame(myDict)# An object class method
df.drop('col1')
我是否完全需要一个函数、方法或其他东西?
这怎么搞混了?在 Python 中,你需要知道如何调用 R 中的函数。在 R 中,如果你想知道一个数据帧有多少列,你只需使用ncol()
函数。在 Python 中,没有内置的函数来做这件事。相反,您可以在 DataFrame 的.columns
属性上使用len()
函数。
# R
ncol(df)# Python
len(df.columns)
Python 函数让 R 用户感到困惑的另一个例子是寻找数据帧中的行数。在 R 中,我们再次使用一个函数,nrow()
。在 Python 中,我们对整个数据框调用len()
,而不是它的columns
属性。
# R
nrow(df)# Python
len(df)
所以在这里,我们使用完全相同的len()
函数来获取关于 Python 中数据框的不同信息。缺点是必须记住将什么作为参数传递给len()
。r 保持简单。如果我们想要列的数量,使用ncol()
。行数?没错,nrow()
。
让我们再举一个例子来说明知道函数在 Python 中的位置有多困难。假设我们想知道行数和列数。在 R 中,dim()
函数将很好地为我们服务。它将返回一个带有行数和列数的向量。为了在 Python 的一次调用中做到这一点,我们需要使用.shape
属性。.shape
将返回一个具有行数和列数的元组。
# R
dim(df)# Python
df.shape
因此,如果您仍然同意我的观点,我们甚至没有使用 Python 中的方法或函数,我们只是在查找数据框的属性。现在你知道了:
r 使用函数来完成任务,而在 Python 中,您可能必须使用函数、对象方法、对象属性或某种组合来完成相同的任务
这并没有错,但是对于习惯于只使用一个函数的人来说,要记住如何获取信息就变得困难多了。
我怎么能调用正确的函数呢?
让我们试试别的东西。假设我们想要创建一个数据框架,这在两种语言中都是很常见的任务。在 R 中,我们只使用 dataframe 函数。在 python 中,我们必须指定 python 应该在哪里寻找 dataframe 函数,特别是在pandas
库中。
# R
x <- data.frame(X = c(1, 2, 3, 4, 5))# Python
x = pd.DataFrame({X: [1, 2, 3, 4, 5]})
这是不同的,因为我们必须在 Python 中指定函数来自哪个包。r 将只使用包含该函数的最新加载的包。python 实现的好处是你总是知道函数来自哪个包。这是不同的,如果您不习惯于需要指定您的函数来自哪个包,这会引起一些混乱。
有时候在 Python 中,你需要指定你的函数来自哪个模块,其中 R 会猜测使用哪个包
为什么我的函数会附加到我的对象上?
最后一个让我对 Python 函数着迷的是对象方法。它们本质上并不坏,但它们可能会让我们这些 R 用户感到困惑。正如我们前面提到的,它们有时就地作用于对象,而其他时候它们需要被保存在原始对象上来修改它。这一节是关于如何使用函数的,这在 python 中很难记住。
在 R 中,我们通过名字调用函数,添加对象和选项作为参数。使用管道操作符%>%
,您可以定义一个对象作为函数的第一个参数。每个动作都在告诉 R“这样做”,每个管道操作员都在说“然后”当我们把它们串在一起时,我们可以以一种高度可读的格式同时完成多个动作。
df %>%
select(-col1) %>%
summarize(avg_col1 = mean(col1))
使用管道是我在 R 中能想到的与 Python 中对象方法工作方式最接近的类比。它们可以串在一起,每一步都充当一组“那么做吧”的指令。它们的书写方式只是有一点不同。
df.drop('col2', 1).mean()
上面的语句取df
,然后去掉col2
,然后得到其余值的平均值。类似的行为,但是不同的实现。
Python 方法可以串在一起,就像我们在 R 中使用管道操作符一样,只是不太容易阅读
阅读你的错误
不,真的,这听起来可能很奇怪,但是去 Python 的时候,我从来不想看错误是怎么说的,或者花力气去找出它们。我已经掌握了 R,当事情不运行时,我通常不用读错误就已经知道要查找什么。
在获得一些这方面的经验后,帮助其他 R 到 Python 的转换者变得容易多了。这些错误会告诉我他们在处理哪些问题。
仔细阅读你的错误,理解它所指的代码和它所说的是错误的
在 Python 中,我得到的错误比在 R 中多得多,这令人沮丧。但是错误对学习和掌握一门语言非常有帮助。让我们以这个为例:
>>> '2' + 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
python 中的错误被很好地标注出来。错误的第一部分会说回溯,通常带有一些带有文件和行号的文本。对于初学者来说,对于更复杂的错误,这并不总是最有帮助的,但是请记住它就在那里。
错误文本的下一部分是类型错误。这是一种错误。Python 中有许多类型的错误(参见官方 Python 文档中的一大堆错误)。这个说明了代码中使用的对象类型导致了错误。
错误的下一部分给出了遇到的错误的更多细节。这里我们可以看到 python 不知道如何将一个int
对象添加到一个str
对象中。从这里,我们可以很容易地修复我们的代码。如果目标是将两个字符串连接在一起,我们可以给第二个 2 加上单引号。
>>> '2' + '2'
[1] '22'
如果目标是将两个数字相加,我们需要去掉第一个数字上的单引号,这样它就有了正确的类型。
>>> 2 + 2
[1] 4
无论哪种方式,阅读错误都有助于我们了解对象需要是相同的类型,我们的代码才能工作。
不确定错误意味着什么?在网上搜索一下。有些错误比其他的更复杂,有些可能是由于代码的其他部分造成的。尽可能简单地分解它,一点一点地解决它。
结论
您将很快掌握 python,就像您掌握 R 一样快。在你们之前有许多人有从一种语言到另一种语言的经历。
让我们回顾一下我作为 R 用户学习 Python 时学到的经验:
- 在 Python 中,一些方法就地修改对象(如列表方法),而另一些方法需要保存原始变量的输出来修改它(如数据框方法)
- r 几乎对所有事情都使用函数,而 Python 混合使用函数、对象方法和对象属性来做同样的事情
- r 一般会猜测你的函数来自哪个库。Python 通常需要被告知去哪里找
- r 可以使用钻杆操作器
%>%
将作业串在一起。Python 对象方法有时可以串在一起实现相同的结果 - 当代码失败时,r 和 Python 都会提供错误。这些包含有价值的信息,学习阅读和纠正它们是真正掌握语言的唯一途径
如果其他方法都失败了,问问你的团队或班上更有经验的人你哪里做错了。如果那不起作用,就去问互联网。有大量的免费和付费资源。看看下面的一些:
- w3schools.com—Python、R、SQL 和其他编程和脚本语言的综合知识库。它对每个人都是免费的,并且有更多语言和概念的交互式例子。
- Datacamp.com(付费链接)——互动编程教程,主要围绕 R 和 Python 进行数据分析。他们免费提供每门课程的第一章,所以继续尝试他们的 Python for R 用户课程吧!
- Python for R Users (付费链接)——专为让你快速掌握 Python 而写,这本书主要关注可操作代码和执行你已经知道的 Python 分析!
[## 通过我的推荐链接加入 Medium-Drew Seewald
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
realdrewdata.medium.com](https://realdrewdata.medium.com/membership)
斯皮尔曼等级相关系数的微妙性
统计数字
单调关系的未知部分
照片由 Linus Mimietz 在 Unsplash 上拍摄
**Table of Contents**[**Introduction**](#1edb)1\. [Spearman’s Rank Correlation with identical values](#b785)
2\. [Finding mathematically Spearman’s Rank Correlation](#8058)
3\. [With Numpy](#bfdd)
4\. [With Pandas](#22d4)
5\. [Investigation the subtlety of Spearman correlation coefficient](#0a22)[**Conclusion**](#ed46)
介绍
在本文中,我想使用包含相同值的数据来探究 Spearman 的等级相关系数。我还揭示了斯皮尔曼值如何根据函数的性质而变化。
在[scipy.stats.spearmanr](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.spearmanr.html)
文档中,没有明确说明使用序数数据。我也想深入研究一下。
如果你有兴趣阅读关于 Spearman 使用有序数据的等级相关系数。请参考以下文章。它解释了使用四种不同的方法找到 Spearman 的值,简化公式、通用公式、Pandas corr
和手动计算。
在本文中,我想使用包含相同值的数据来探究 Spearman 的等级相关系数。我还比较了斯皮尔曼和皮尔逊价值观之间的差异。
在[scipy.stats.spearmanr](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.spearmanr.html)
文献中,没有明确说明使用序数数据。我也想深入研究一下。
具有相同值的 Spearman 秩相关
斯皮尔曼等级相关系数, 𝜌𝑟𝑥 , 𝑟𝑦 显示了两个有序数据之间的相关性。一个序数数据如何随着另一个序数的变化而变化。
斯皮尔曼秩相关的一般公式如下。当你有相同等级的数据时,你必须使用这个公式而不是简化的公式。
让我们导入必要的库。
请注意,我们下面的数据有相同的排名。我们使用scipy.stats.spearmanr
找到斯皮尔曼系数。返回的系数值是 0.710560。
熊猫角
Pandas corr 需要设置方法。我们用spearman
。它返回相关矩阵,所以我们需要选择[0,1]
这是 Spearman 的相关系数。
用数学方法寻找 Spearman 秩相关
公式需要 𝑟𝑥 和 𝑟𝑦 的协方差, 𝜎𝑟𝑥 , 𝜎𝑟𝑦 的标准差。
排名数据
我们需要使用scipy.stats.rankdata
对数据进行排序。
它返回以下内容。
[5\. 3.5 2\. 1\. 3.5 6\. 7\. ]
[2\. 4\. 4\. 1\. 4\. 7\. 6.]
在 A 组中,有两个 6,他们的排名是第三和第四。
在集合 B 中,有三个 4,它们的排名是第 3、第 4 和第 5。因此,他们的级别是:
使用 Numpy
Pandas 和 Numpy 对标准差、方差和协方差等使用不同的 ddof 值。
和熊猫一起
在 Pandas 文档中,没有说明pandas.cov
使用默认值ddof=1
。我们需要用ddof=1
来表示标准差。
斯皮尔曼相关系数的微妙性研究
现在让我们研究一下 Spearman 和 Pearson 相关系数之间的差异。
正如我在引言中所写的,斯皮尔曼的等级相关系数、 𝜌𝑟𝑥的、 𝑟𝑦的显示了两个序数数据之间的相关性。一个序数数据如何随着另一个序数的变化而变化。不为人知的是,即使 rx 和 ry 和谐地变化,当 𝑟𝑦 减少而 𝑟𝑥 增加时,斯皮尔曼值下降。
让我告诉你这是什么意思。首先,我们用线性关系比较皮尔逊和斯皮尔曼相关系数。
研究线性关系
对于线性函数,Spearman 和 Pearson 是相同的值。
调查二次关系
# Spearman
1.0
# Pearson
0.9833690525971426
斯皮尔曼值为 1。然而,即使我们使用相同的函数,使用不同的域会产生不同的 Spearman 值。这是因为当 x 值增加时,f(x)的值减少。一旦函数上下波动,Spearman 值就会降低。
# spearman
0.48511548511548513
# pearson
0.6104541477467882
研究三次函数
# spearman
0.9144132575042309
# pearson
0.8176029571135436
由于上面的三次函数在给定的域内减少了值,因此 Spearman 值不是 1。如果把定义域限制在函数增加的值,Spearman 就是 1。
# spearman
1.0
# pearson
0.9849816814186138
结论
spearmanr
需要排序数据,因此您的数据需要是有序的。一般来说,你的数据不是有序的,所以当你寻找矛兵时,使用scipy.stats.rankdata
是一个好习惯。- 以上观察来自于协方差的定义。如果一个变量的较大值对应于另一个变量的较大值,则协方差为正。当一个变量的较大值主要对应于另一个变量的较小值时,变量往往表现出相反的行为,协方差为负。这影响了斯皮尔曼的价值。
- 也建议绘制一个图表来查看任何值正在减少,因为它会影响你的 Spearman 值。
通过 成为 会员,可以完全访问媒体上的每一个故事。
https://blog.codewithshin.com/subscribe
相关故事
发现单调关系的力量
towardsdatascience.com](/discover-the-strength-of-monotonic-relation-850d11f72046) [## 用 Jupyter 笔记本探索正态分布
使用 scipy 和 matplotlib 的正态分布初学者指南
towardsdatascience.com](/exploring-normal-distribution-with-jupyter-notebook-3645ec2d83f8)
“大数据”的成功与彻底失败
炒作周期顶部的回顾
图片由 Samuele Porta 提供
前几天在做一些研究时,我偶然发现了一份我在一次餐厅营销高管会议上做的演示文稿的修改版,当时“大数据”正处于 Gartner 炒作周期的顶峰。很难相信这是 7 年前的事了,距离 Gartner 完全停止跟踪“大数据”已经过去了 5 年。流行语是一种有趣、善变的东西,尤其是当它们突然席卷了一个以前由极客和内向者居住的行业。几年之内,我们的头衔从“数据极客”升级到了“数据科学家”,然后是一个令人不安的标题 HBR 说我们是 21 世纪最性感的职业。到 2014 年,大数据处于炒作周期的顶端,投资资金正涌入任何能够足够快速地改变其本地语言的业务。这是一个超现实的事件转折,突然有人自称为“大数据”专家,他们甚至从来没有笑过一个数学笑话,我在台上面对 300 名营销高管讲话,他们中的许多人在数据科学家性感之前很久就在自己的董事会房间里睡过我的数据演示。像所有的流行词一样,“大数据”这个词开始变得模糊只是时间问题,但宣传的有限生命不应与宣传背后的运动的经济和社会影响混淆。数据洪流是真实的,在实现地震般的经济和社会影响方面,我们仍处于早期阶段,但这种影响与我们许多人的预期不同。
“大数据”的成功
对 2020 年数据经济总经济价值的估计大相径庭,从数千亿美元到数万亿美元不等,因此这一现象的规模可能有争议,但其规模巨大的事实不再有争议。尽管在文章中避免使用“大”这个词,但《经济学人》在 2017 年预测,“数据经济”将成为本世纪的驱动力,就像化石燃料驱动 20 世纪一样。在大多数对当今“数据经济”的估值中,它们计入了数据移动、处理和存储公司,以及亚马逊、谷歌和脸书等公司的广告和商业收入。
“大数据”的失败
尽管数据经济大幅增长,并且人们普遍认为利用数据的企业比不利用数据的企业更成功,但“大数据”和数据科学实施的成功率却低得惊人。虽然很难得到一个精确的数字,但据我估计,失败率在 60%-85%之间。
60–85%的失败率是一个不必要的惨淡记录,虽然数据项目失败的原因有很多,但罪魁祸首通常是因为项目是由数据基础架构专家牵头的,他们没有完全理解数据项目服务的更大的业务目标。通常,他们的资质对于构建电子商务网站或基本的报告引擎来说是无可挑剔的,但对于数据科学计划与电子商务或报告引擎的技术和流程要求的深刻差异却知之甚少。
成功的数据科学项目始于对需要解决的特定业务问题的清晰愿景,并由自上而下与该愿景保持一致的团队推动。不幸的是,“大数据”时代的大多数数据项目并不是这样开始的。相反,他们会从构建一个通用数据平台或“数据湖”开始,旨在存储来自所有来源的所有数据,而不涉及具体数据用途的细节。第一站是一个看似便宜的 HDFS 文件系统(又名 Hadoop),它看起来像是廉价的文件存储——除非你想查询它——然后你必须召集一个工程师团队,由于没有人有新技术的经验,你必须从脸书挖他们,并付给他们每个人比你的首席财务官更高的薪水。一旦您的数据湖在 6-12 个月后启动并运行,您仍然需要在其上构建一个报告层。如果您碰巧负责通过定制分析创建数据洞察力,那么很可能您是一个遥远的事后想法,并且在这个技术堆栈中没有真正的接入点。所以你通过报告层偷工减料地导出到沙盒服务器,在那里你必须恳求它让你安装 Python Jupyter 笔记本或 R 服务器。雪上加霜的是,您发现在这个超级强大的现代数据架构中,没有任何地方考虑到持续的数据卫生,因此您操纵的“简单”数据导出在每次拉取时都会返回相同的错误,并且没有用于纠正上游数据的协议。为了克服大规模数据湖的缺点,它实际上使相关数据难以访问,您的简单导出变成了一个单独的工作流和数据库,带有用 python 或 R 编写的独立 ETL 过程,您的“沙箱”在大小上迅速开始与主数据湖相匹敌。由于您的工作仍然是数据堆栈的非官方部分,您的 ML 代码仍然在您的沙箱中(或者您的笔记本电脑中)。上帝保佑那个可怜的家伙,他试图在你离开后收拾你留下的东西!
随着组织对数据的需求越来越多,人工智能/人工智能驱动的世界的期望成为焦点,在这场数据革命的第一阶段建立的数据系统和流程的缺点是一个肮脏的秘密,没有人愿意承认他们过高的数据湖投资。但这是事实,它很普遍,很明显。
知识扩散
将海量的比特和字节数据转化为有意义的信息是一项艰巨的任务,它正在我们眼前改变整个行业,重塑全球经济。然而,这与下一个层次相比就相形见绌了,下一个层次是将信息转化为知识。我不只是做一个语义上的论证——知识意味着对信息中的模式有更深一层的理解,以及做出推论的能力。知识推断事实,而理解——如果你相信某件事是假的,你实际上没有知识,但你有信息。在这个时代,这是一个至关重要的区别,因为信息流动的速度比我们判断事实和虚构的能力要快得多,正确或不正确以及坏演员通常会因为第一个而受到奖励,而不管准确性或真实性。在组织/项目层面,当你开始根据你正在寻找的知识/事实定义项目目标,并围绕知识目标调整系统和团队,而不是首先被你输入的数据驱动时,你将更快、更便宜和更持久地得到答案。
图片由 Samuele Porta 提供
在社会层面,像我们正在经历的数据和信息的大规模爆炸应该导致科学、技术和文化的同等或更大的爆炸。自机械印刷机发明以来,这是一次举世罕见的启蒙运动。人工智能将成为这一转变的中心,不是作为决策机器人,而是作为事实、知识的提供者,如果做得对,我敢说是公正的真理。然而,在我们当前的数据泥潭中,我们无法在信息作为错误信息和宣传传播之前将其转化为知识,这给我们的社会结构造成了真正的损害。从政治到反科学运动,它放大的声音不仅缺乏实质内容,而且造成真正的伤害。“大数据”或我们今天喜欢称之为“大数据”的成功从未像现在这样重要。
项目:使用探索性数据分析和机器学习分析自杀集群
你刚刚被世界卫生组织世卫组织聘为数据科学家
目录
1。简介
2。数据争论
3。探索性数据分析
4。机器学习+预测分析
5。结论
6。参考文献
1。简介
场景:
你刚刚被世界卫生组织(世卫组织)聘为数据科学家,世界各地报告的自杀集群数量惊人。一名数据收集员将这些数据交给执行数据分析**,并希望你检查我们数据中的趋势 & 相关性。我们想做一个机器学习算法,在那里我们可以训练我们的 AI 到学习 &从经验中改进。因此,我们希望预测特定人群中的自杀人数。**
从在硅谷的心里长大,我一直很好奇因素在自杀中起了什么作用。我在帕洛阿尔托的高中有太多的自杀案例。这个项目旨在探索潜在的因素。我们将使用从 141 个不同国家收集的 44,000 个数据点的样本,在 80 年代的到 2016 之间。
研究问题
1.哪一年自杀人数最多?哪一年自杀人数最少?
2.哪个国家自杀人数最多?哪个国家自杀人数最少?
3.某些年龄段的人更倾向于自杀吗?
4.性别和自杀人数有什么关系?
特征和预测:
我们的预测器 (Y,自杀数由 5 个特征 (X)决定:
1.国家(分类)
2。年份:自杀年份(分类)
3。**性别:**男,女(分类)
4。年龄(分类)
5。人口 : (#)
2。数据争论
**import** **pandas** **as** **pd**
**import** **matplotlib.pyplot** **as** **plt**
**import** **numpy** **as** **np**
**import** **seaborn** **as** **sns**
**data = pd.read_csv('/Users/jarar_zaidi/Desktop/ML Projects/Practice Excel/who_suicide_statistics.csv')** *# look at 1st 5 data points*
data.head(5)
帮助我们了解我们正在处理的数据。
我们的数据集有 5 个特征(国家、年份、性别、年龄、人口)。我们将详细探讨所有这些。而自杀 _ 不正是我们想预测的吗。
**data.info()**
打印数据集的简明摘要
**print("(Rows, columns): " + str(data.shape))
data.columns**
显示行数和列数。以及列名
**data.isna().sum()**
计算具有空值的每列中的总行数
#注意:所有 NA 列都是 Object 类型
我们有 2256 个失踪数据来自自杀 _ no5460 个失踪数据来自人口。
**data= data.fillna(0)
data.isna().sum()**
从上面我们可以看到,自杀 _ 人数&人口,有空值。
让我们使用“ fillna ”用零填充空值。现在,我们没有空列了!
**data['age'].unique()**
不同的年龄组
**data['country'].unique()**
列出了不同的国家
注意:我们无法执行 1 热编码,因为“国家”的唯一值太多。
**data['country'].nunique()**
返回数据来自的不同国家的数量
**data['year'].unique()**
返回我们的数据所来自的所有独特年份的数组
这里我们用填充中的表示缺失数据的值!
现在我们对人口做同样的事情& 用他们的平均值值替换 NA 值!
3。探索性数据分析
研究问题 1:哪一年自杀人数最多?哪一年自杀人数最少?
data['suicides_no'] = data['suicides_no'].replace(0,np.NAN)
mean_value=data['suicides_no'].mean()
data['suicides_no']=data['suicides_no'].fillna(mean_value)
**def** find_minmax(x):
*#use the function 'idmin' to find the index of lowest suicide*
min_index = data[x].idxmin()
*#use the function 'idmax' to find the index of Highest suicide*
high_index = data[x].idxmax()
high = pd.DataFrame(data.loc[high_index,:])
low = pd.DataFrame(data.loc[min_index,:])
*#print the Year with high and low suicide*
print("Year Which Has Highest "+ x + " : ",data['year'][high_index])
print("Year Which Has Lowest "+ x + " : ",data['year'][min_index])
**return** pd.concat([high,low],axis = 1)
find_minmax('suicides_no')
这里我们创建了一个 Min Max 函数,它允许我们定位一个列分组的 Min Max。
*# year-wise analysis of mean number sucidies of each year* **data.groupby('year')['suicides_no'].mean().plot()** *#setup the title and labels of the figure.* **plt.title("Year vs. Suicide Count",fontsize = 14)**
**plt.xlabel('Year',fontsize = 13) plt.ylabel('Suicide Count',fontsize = 13) ** *#setup the figure size.* sns.set(rc={'figure.figsize':(10,5)}) **sns.set_style("whitegrid")**
年度分析
通过观察我们的时间序列线图,我们可以看到 1985 年自杀人数的急剧下降。这种下降可能是由于对 80 年代自杀& 心理健康的认识以及对那些处于危险中的人的认识的提高。这的确是准确的**,正如《老年人自杀》的研究所支持的这种说法,**
研究问题 2:哪个国家自杀人数最多?哪个国家自杀人数最少?
**def** find_minmax(x):
*#use the function 'idmin' to find the index of lowest suicide*
min_index = data[x].idxmin()
*#use the function 'idmax' to find the index of Highest suicide*
high_index = data[x].idxmax()
high = pd.DataFrame(data.loc[high_index,:])
low = pd.DataFrame(data.loc[min_index,:])
*#print the country with high and low suicide*
print("Country Which Has Highest "+ x + " : ",data['country'][high_index])
print("Country Which Has Lowest "+ x + " : ",data['country'][min_index])
**return** pd.concat([low,high],axis = 1)
find_minmax('suicides_no')
再次利用我们的最小最大功能,但是通过国家分组
特征工程
为了更好地理解我们的数据,让我们制作一个新的栏目来计算每人口自杀的比例
# perform operation
data['suicide_per_pop'] = data['suicides_no']/data['population']data.tail(3)
注意:以下是替代的操作方法
data[‘suicide_per_pop’] = data.apply(lambda row: row.suicides_no / row.population, axis = 1)data.tail(3)
现在,你可以看到我们的新专栏了!这是特征工程的一个例子,在这里我们获得新的见解&使用给定的内容创建新的栏目!
find_minmax('suicide_per_pop')
上面的图表& find_minmax 函数证实了阿尔巴尼亚的自杀率最低,而津巴布韦&俄罗斯联邦的自杀率最高。一个原因俄罗斯联邦可能有一个大的自杀计数可能是因为他们有非常大的人口(1.445 亿,而阿尔巴尼亚只有大约 300 万)。据报道,俄罗斯的酒精消费水平在很大程度上影响了自杀率,但是由于苏联的保密,缺乏数据来支持这一说法。
研究问题 3:某些年龄段是否更倾向于自杀?
**sample = data.sample(3)
sample**
现在我们的“年龄”栏是由分隔成和连字符组。我们要将这些组作为数值数据进行分析。我们必须将去掉连字符&创建一个函数,它将每个类别分类到一个特定的数字中。我们首先必须移除一个破折号的所有实例&将对象改为 int 类型以进一步分析它。
注意:我们首先必须删除破折号的所有实例-
*# grabs first 2 chars from Age Column*
**data['AgeNum'] = data['age'].str[:2]**
*# remove all instances of dash -*
**data['AgeNum'] = data['AgeNum'].map(lambda x: x.replace('-',''))**
*# now, convert it to type int (not Object)*
**data['AgeNum'] = data['AgeNum'].astype(int)
data['AgeNum'].tail(3)**
*# creates Age Categories*
**def** AgeGroup(x):
**if**(x >= 60):
**return** "Elderly"
**elif**(x >= 30):
**return** "Middle_Aged_Adults"
**elif**(x >= 18):
**return** "Adults"
**else**:
**return** "Adolescent"
*# Map each row in the Col to the AgeGroup Method*
**data['AgeCategory'] = data['AgeNum'].map(lambda x: AgeGroup(x))** *# convert it back to type String*
**data['AgeCategory'] = data['AgeCategory'].astype(str)****data['AgeCategory'].tail(3)**
抓取“年龄”列的最后 3 行
我们现在创建了一个名为’ AgeNum '的新列。现在让我们检查该列,看看它是否更新了
**data['AgeNum'] .tail(3)**
如你所见,我们现在已经成功地将中的每一行放入对应的数字年龄中。为了在全动作中看到它,让我们看看下面的输出。
**data.head(3)**
**sns.catplot(x="AgeCategory", y="suicides_no",palette="ch:.25", kind="bar",data=data);
plt.title('Age vs. Suicide Count',size=25)
plt.xlabel('Age Category',size=20)
plt.ylabel('Suicide Count',size=20)**
数据显示,30 至 60 岁的中年人自杀率最高。而老年人和青少年大约是中年人的一半。
研究问题 4:性别和自杀人数之间有什么关系?
# there is an equal number of Males & Females in our data
**data['sex'].value_counts()**
注意 : 色调,允许我们添加另一个维度到我们的分析中!
**sns.catplot(x="sex", y="suicides_no", hue="AgeCategory", kind="bar", data=data);**
以性别和年龄类别表示的自杀人数
自杀是所有美国成年人死亡的主要原因之一。数据显示不同性别的自杀率有很大差异。很明显,男性比 T21 更倾向于自杀。对于女性来说,4 个年龄层似乎在 150 岁时趋于平稳。我们不能说男性也是如此。男性成年人&男性中年人自杀的风险非常高。两种性别都显示中年人是自杀的主要年龄组。
4.机器学习+预测分析
本节中我们的目标是构建一个多元线性回归模型,该模型将被训练以理解我们的特征和我们的预测器之间的相关性**。我们想预测 Y(自杀人数),给定一个特定的年份,属于一个特定的年龄组&性别。**
为建模准备数据
要为建模准备数据,只需记住 AES(赋值、编码、拆分)。
一个一个把 4 个特征赋值给 X,&最后一列给我们的预测值 Y****
**newData= data.loc[:,['year','sex','AgeNum','suicides_no']]**
**newData.head(3)****X = newData.iloc[:, :-1].values** # grab the every col except last
**y = newData.iloc[:, -1].values** # grab last col
E 编码分类数据。性别特征,现在是使用 0 的& 1 的编码的二进制输出。
**from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = np.array(ct.fit_transform(X))**
将数据集拆分为训练集和测试集
**from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X,y,test_size = 0.2, random_state = 1)**
在训练集上训练多元线性回归模型
**from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(x_train, y_train)**
预言
假设我们希望预测自杀人数,给定一定的人口统计数据。
一个 55 岁男**,从 2001 年开始,**
**print(regressor.predict([[1,0,2001,55]]))**
****会产生大约 187 的自杀数吗?
5.结论
- 到了 80 年代,自杀率有所下降。这可能是由于 80 年代人们对自杀心理健康的认识,以及对那些处于危险中的人认识的提高。但是在那之后不久,我们看到自杀率上升。
- 俄罗斯的酒精消费水平在很高的自杀率中起了很大的作用,但是由于苏联的保密,他们缺乏数据来支持这一点。
- 数据显示,30 至 60 岁的中年人自杀率最高。而老年人和青少年的摄入量是中年人的一半。
- 自杀是所有美国成年人死亡的主要原因之一。数据显示不同性别的自杀率存在惊人的差异。很明显,男性比女性更倾向于自杀。此外,心理健康是自杀的主要预测因素。
使用机器学习算法的进一步预测分析是所需要的。
以下是从我的 GitHub 页面获得的数据集和代码:
https://github.com/jzaidi143/The-Suicide-Crisis-in-Data
欢迎推荐和评论!
6.参考
SSM 健康 2019 年 10 月 14 日。"为什么中年白人男性更有可能自杀?"SSM 健康,www . SSM Health . com/blogs/SSM-Health-matters/October-2019/中年男性-更有可能死于自杀。
“老年人自杀。”老年人自杀——gpnotebook.com/simplepage.cfm?ID=1711669253.全科医学笔记本
从哪里获得帮助
加拿大或美国:如果你遇到紧急情况,请拨打 911
你可以拨打 1-800-273-8255 联系美国国家自杀预防生命线,或者发短信到 741741 联系危机测试热线
需要帮助的年轻人可以拨打儿童求助电话 1-800-668-6868
《英雄联盟》比赛预测中冠军职业构成的疑似无效性
讨论使用 k-均值聚类对冠军进行分类及其对预测比赛结果的有限影响
在一场联赛的选秀阶段,普遍的观念是至少要有一辆坦克,平衡的 AD 和 AP 冠军比例等等,以形成一个强大的冠军组合。如果这是真的,有没有一种方法可以结合冠军类的构成数据来预测比赛结果?当然,有许多其他因素会影响比赛的结果,但很多时候,当一场比赛赢了或输了,人们会将结果归咎于选秀阶段(冠军选拔阶段)。也许对此的一项研究可以告诉我们,我们可以在多大程度上指责教练的正确/错误选择和禁令。
在这个研究中,我使用 k-means 聚类将冠军分成各种簇,我有时会从现在开始将这些簇称为“类”。一些衍生的集群与我们对冠军职业的常规概念相吻合:例如,一个集群充满了远程的,基于 AD 的冠军,一个我们可以称之为射手职业的集群。其他的就不那么直观了。然而,使用这种分类并没有对各种神经网络模型的预测精度产生任何积极的提高。这似乎表明,尽管不是决定性的,冠军阶层的构成本身没有预测能力。
背景和期望
以前的文献
以前没有文献研究冠军的分类。然而,为了预测这项研究的结果,有几项研究值得注意。Hall (2017)表明,完全忽略冠军选择,仅从过去 20 场比赛中获取球员统计数据,足以在 LoL 比赛预测中产生 84.4%的准确性。考虑到 LoL 的复杂性,很难假设像冠军职业组合这样的额外功能可以添加到这种已经令人窒息的高准确性上。
此外,黄等人(2015)使用特定冠军的个人胜率来预测比赛结果,达到了惊人的 91%的准确率,这比他们仅使用冠军选秀权作为输入特征所达到的 64%要好得多。考虑到他们在冠军精选特征上的朴素贝叶斯分类器可能包含了比冠军合成更多的知识,我们可以得出结论,无论这项研究中选择的特征多么有效,最终的准确度都将低于 64%。
这两项过去的研究表明,球员技能的重要性压倒了冠军选秀权的重要性;因此,冠军级作文的重要性要低得多。
那么这一切有什么意义呢?
如果课堂作文被认为是如此的不重要,为什么还要测试它呢?
没有办法表达出来,让它看起来更有意义;这项研究的唯一原因是实际证明冠军类构成不重要的直觉。或者,奇迹般地,发现它在某种程度上确实意义重大。
基线精度
如果我们使用一个浅前馈神经网络,将冠军类标签作为输入特征,结果的精度在 50%左右,正负 1%。改变训练集和测试集、调整超参数和在各次运行中求平均值无助于提高预测精度。
我说的冠军职业标签是指 Riot 在发布时给每个冠军的职业标签。例如,凯特琳被赋予神枪手标签,戴安娜被赋予战士标签和法师标签。总共有六个职业:战士,法师,射手,刺客,坦克,支援。
为了获得上面的基线预测准确性,我尝试的第一种方法是检索游戏中每个团队的每个冠军的标签,将它们转换为一个热门向量,然后将它们相加,从而为每个团队获得一个 6 大小的向量。然后,我将它们连接成一个 12 大小的向量,并在输入神经网络之前进行相应的标准化。
由于这没有任何意义,我过滤了数据集,提取了正确标记了冠军通道和角色的游戏文件(RiotApi 因搞砸了这一点而臭名昭著……smh ),然后只使用这些过滤的游戏文件作为训练/测试集,只是这次我根据通道(按顺序分别为顶部、丛林、中部、底部、支持)连接了所有的一个热点向量,并跳过了求和部分。这让我得到了一个 60 大小的输入特性,尽管进行了所有的超参数调整,它仍然显示出令人沮丧的预测准确性。
然而,将结果建立在 Riot 的冠军类标签上是不公平的,因为 Riot 经常弄错(就像他们的 RiotApi 一样)。因此,为了更好地对冠军进行分类,我决定使用 k-means 聚类,这是一种无监督聚类算法。
数据预处理
使用的数据集
我在 Kaggle 上使用了 michel 的 fanboi 数据集来检索白金级 9800 款游戏的 gameId,并在运行 ec2 实例的 2~3 天内获取这些,使用 RiotWatcher 进行限速指导。从累积的匹配数据中,9000 个用作训练集,其余 800 个用作测试集。
我还应用了与计算基线精度时相同的过滤函数。编号为 3695 的过滤训练集和编号为 343 的过滤测试集。
应用 K-均值聚类
为了应用 k-means 聚类,我必须指定 LoL 冠军将在哪些维度上分类。选定的尺寸如下:
towerKills ‘,’ inhibitorKills ‘,’ baronKills ‘,’ dragonKills ‘,’ riftHeraldKills ‘,’ stats.kills ‘,’ stats . stats . magicdamagedealt ‘,’ stats.physicalDamageDealt ‘,’ stats.trueDamageDealt ‘,’ stats.largestCriticalStrike ‘,’ stats . totaldamagedealttochampions ‘,’ stats . magicdamagedealttochampions ‘,’ stats . physicaldamagedealttochampions ‘,’ stats ‘,’ totalHeal ','等
我使用 Pandas framework 加载所有的训练集 csv 文件,然后取上面列出的所有列的平均值。下一步是标准化数据,然后使用 sklearn 的聚类库来应用 k-means 聚类算法。对于 k-means,有必要指定聚类的数量,这使得它成为该项目的超参数之一。峰值提前,15~20 个集群显示为最佳。
为了形成输入特征,我使用了与计算基线精度相同的两种方法,只是这次使用了 champion 分类的聚类算法的结果。
由 k-means 算法产生的 20 个聚类如下:
- ’ Sion ‘,’ Warwick ‘,’ DrMundo ‘,’ Trundle ‘,’ JarvanIV ‘,’ Skarner ‘,’ Poppy ‘,’ Shen ‘,’ Ornn ’
- 凯乐,伊莉斯,希瓦娜,齐格,戴安娜,埃克科
- ‘勒布朗’,‘提莫’,‘科尔基’,‘维伽’,‘奥丽安娜’,‘朗布尔’,‘仙后座’,‘黑默丁格’,‘肯南’,‘马尔扎哈尔’,‘艾克瑟瑞斯’,‘阿里’,‘维克多’,‘辛德拉’,‘奥雷连索’,‘佐伊’,‘维尔科兹’,‘塔利耶’,‘阿济尔’
- ‘莫甘娜’,‘闪电侠’,‘利昂娜’,‘鹦鹉螺’,‘布劳姆’,‘拉什’,‘巴德’,‘拉坎’,‘皮克’
- 约里克,俄洛伊
- ‘战争女神’,‘特莉丝塔那’,‘财富小姐’,‘阿什’,‘凯特林’,‘瓦鲁斯’,‘凯撒’,‘金克斯’,‘卢西恩’,‘卡莉斯塔’,‘赛亚’
- ‘奥拉夫’,‘赵信’,‘沙科’,‘夜曲’,‘莱辛’,‘乌迪尔’,‘格雷夫斯’,‘伦加’,‘赫卡里姆’,‘卡济克斯’,‘卡因’,‘亲族’,‘六’,‘雷科赛’
- 阿木木’,‘披甲龙龟’,‘毛凯’,‘塞胡阿尼’,‘扎克’
- 马斯特伊’,‘薇恩’,‘盖伦’,‘柯格玛’,‘大流士’,‘卡米尔’,‘塞特’
- 弗拉迪米尔、莱泽、伊芙琳、卡瑟斯、卡萨丁、莫迪凯塞、菲兹、西拉
- 特伦达米尔’,‘菲奥拉’,‘德莱文’,‘奎因’,‘亚修’,‘阿弗利奥斯’
- “安妮”,“扭曲的日期”,“阿尼维亚”,“卡塔琳娜”,“暗影之拳”,“西萩五十铃”
- 艾翁的
- “加利奥”,“小提琴”,“烧毛”,“乔加特”,“斯温”,“马尔菲特”,“古拉加斯”,“丽桑卓”
- 索拉卡’,‘基兰’,‘索纳’,‘迦娜’,‘卡玛’,‘力士’,‘露露’,‘塞纳’,‘娜美’,‘大村裕美’
- 努努,奈达利
- 品牌’,’ Zyra ’
- ’ Urgot ‘,’ Jax ‘,’ Irelia ‘,’ Renekton ‘,‘悟空’,’ Nasus ‘,’ Riven ‘,’ Gnar ‘,’ Kled ‘,’ Aatrox ’
- 阿里斯塔’,‘宝石骑士’,‘塔姆肯奇’
- ‘抽动’,‘跳板’,‘万神殿’,’ Ezreal ',‘塔龙’,‘杰斯’,‘泽德’,‘奇亚纳’
培训和结果
网络体系结构
通常我会写下超参数、神经网络的层数等,但我没有这样做,因为最终的预测精度不令人满意,其中一个可疑的原因是我在超参数调整方面的无能。
也就是说,曾多次尝试对网络进行微调。值得注意的是,增加层数&网络层数的大小似乎只会鼓励过度拟合。逻辑回归实际上产生了最好的结果。
结果/讨论
由于最终的预测精度因运行而略有不同,所以我取了 50 次运行的平均值,结果为 54.17%。虽然它击败了基线准确性,但最终的准确性仅比蒙住眼睛猜测获胜团队略好。这可能有几个原因。
首先,k-means 聚类算法选择的维度可能不合适。以第 9 组为例。这里的冠军因为他们高百分比的真实伤害而明显被分组在一起,但是在这个过程中,远程射手冠军薇恩和近战坦克冠军盖伦被分组在一起。应该做进一步的工作来为各个维度分配权重,以更准确地对冠军进行分类,尽管其对整体预测准确性的影响是可疑的。
第二,我可能在任务中使用了错误的聚类算法。K-means 聚类算法将冠军分为离散的组,但更好的选择可能是,例如,用于期望最大化聚类的高斯混合模型,它允许将某些数据点包含在多个聚类中。这对于联盟中的许多冠军来说是有意义的,他们可以被归类为法师、射手、发起者等等。
第三,所选数据集仅来自白金级。如果这个技能水平存在一定的偏差,以至于对冠军构成的强调已经过时,那么这里的结果不能推广到整个 LoL 游戏。
然而,我确实相信,基于上述因素改进模型可能不会大大提高预测准确性。事实上,正如我在前面提到的,这里的结果与以前文献的结论一致。
因此,似乎有理由得出这样的结论:冠军职业的构成很可能在决定比赛结果方面并不重要。
- 霍尔,肯尼斯·t,2017,深度学习进行英雄联盟比赛预测
- 黄,托马斯和金,大卫和梁,格雷戈里,2015,英雄联盟胜利预测师
- 米歇尔的 fanboi,2020,英雄联盟钻石排名赛(10 分钟),https://www . ka ggle . com/bobby science/League-of-Legends-Diamond-Ranked-Games-10 分钟
- https://riot-watcher.readthedocs.io/en/latest/暴乱观察者
普洛特利的甜蜜点
为什么 Plotly 是数据科学家的伟大探索工具
演职员表:plot.ly
在过去两年作为一名数据科学家在科技行业工作的过程中,我使用了各种探索性工具来为技术和非技术利益相关者构建 web 应用程序。除了其他许多工具之外,Plotly 是一个专门为数据科学家、工程师和程序员设计的图形库,可以使用 Python、R、Matlab 或 Javascript 轻松地可视化他们的数据趋势。
肯定还有其他工具可以帮助您绘制数据,如 Matplotlib、Seaborn、Bokeh,如果您想构建一个像纽约时报网页那样流行的可视化仪表板,甚至可以使用 D3。
然而,开发奇特的网络应用程序伴随着构建时间的机会成本和陡峭的学习曲线。这是 Plotly 优于其他工具的地方,这使得数据科学家可以更容易地可视化任何规模的数据。如果你认为自己符合以下许多标准,这个工具可能是最适合你的。
为什么它对数据科学家和工程师非常有用
大多数数据科学家和工程师用 Python 编写。他们的角色经常要求他们能够流畅地聚合大小数据集,高效地操作任何类型的数据,并与像 Pandas 这样的库一起工作。Plotly 允许我们直接从熊猫数据框架中构建网络图表。
此外,对于非前端工程师来说,用 Javascript (HTML/SVG)构建交互式图表可能是一个陡峭的学习曲线。Plotly 允许从 Python/R 等常用脚本语言进行交互式绘图。它确实是建立在 d3.js 和 stack.gl 之上的。
拥有用户交互式可视化
如果您或您的客户希望与您的图形进行一些交互,Plotly 可能是一个很好的尝试。构建于 Plotly JavaScript 库之上(Plotly。plotly.py 使用户能够创建漂亮的交互式基于 web 的可视化效果,可以在 Jupyter 笔记本上显示,保存到独立的 HTML 文件中,或者作为使用 Dash 的纯 Python 构建的 web 应用程序的一部分。
虽然 Seaborn 和 Matplotlib 图形是静态的,但 Plotly 图表允许您悬停在值上并放大/缩小图形,就像在大量数据点中识别异常值或检测时间序列图中的异常。
自由使用任意多的数据源
使用 Plotly,您不会受到数据源中指定的布局的约束——这是我在 Tableau 等工具中经常遇到的情况。你可以很容易地纠缠,转换,或者随意分配代码变量。
Tableau、Kibana 和 Superset 等平台提供了 dropdown 等特性,这些特性只接受一个数据表作为每个图形的输入。这使得很难对多个来源进行复杂的可视化。另一方面,Plotly 允许开发涉及数据库中两个或更多表格的操作和计算的图表。
价值观转变的灵活性
我注意到,在可视化数据列之前,我们还可以对其执行任何种类的算术运算。一个简单的例子是单位转换。这是 Plotly 优于其他工具的一个优势,因为使用数学运算来调整列的值通常比较困难或者不被支持。
用 Dash 讲述你的故事的创意
灵活性带来创造力。使用 Plotly 的一个主要优点是,它鼓励我们尽可能创造性地进行可视化,因为任何复杂的绘图只使用三个主要概念:数据、布局和图形对象。作为一名工程师,这可能是最好的事情之一,因为我们可以以任何我们想要的方式构建和重建图形。
我们还可以用 Plotly Dash 创建一个仪表板,这是一个显示一组 Plotly 图表的工具。在我的工作中,我建立了许多仪表板,允许团队了解不同用户输入的数据趋势。
仪表板上的交叉过滤功能也可以使用 Plotly Dash 轻松管理。而在 Metabase 这样的工具中,您必须调整 SQL 查询来一次修改多个图表。
实时更新的内置功能
我记得在 Jenkins 或 Airflow 中设置了一个自动化作业,只是为了更新我在 Tableau 或 Superset 中的图形。在 Plotly 中,我可以简单地编写一大块代码来添加间隔功能,它可以在后台自动激活实时更新,而无需任何外部作业。
处理庞大的数据集
数据科学家处理庞大的数据集和数百万行并不罕见。Plotly Dash 集成了 datashader 来处理大数据可视化。
我希望以上任何一个理由能够帮助那些对 Plotly 感兴趣或者刚刚开始构建有洞察力的 web 应用的人。这篇文章绝不是由 Plotly 赞助的——所以如果您对下一篇文章涉及的其他工具有任何反馈或建议,或者如果您只是想要更多这样的文章,请随时在下面发表评论!
Tableau 桌面认证:为什么你应该关心和你如何通过
通过 Tableau 桌面认证助理考试的介绍和综合指南
图片由 siscadraws 提供
哇,画面!
到目前为止,几乎每个人都听说过将可视化分析带给公众的数据可视化软件。其直观的拖放界面使连接数据、创建图表和共享仪表板比以往任何时候都更容易。
但是你为什么要关心它呢?
根据 Tableau 的网站,2017 年有超过 30 万人使用 Tableau Public(每个人都可以使用的 Tableau 免费版本)来创建可视化并在线分享数据。
您可以使用 Tableau 创建“标准”的业务可视化,如下面的电子商务仪表板示例。
你也可以充分发挥你的创造力,用 Tableau 来讲故事。Tableau 允许您在一个视图中将上下文解释、易于理解的图表和视觉效果结合在一起。一位 Tableau 公众用户用它来回答一个古老的问题“菠萝属于披萨吗?”问题,你可以在下面看到。
Pizza Tableau 公共仪表盘作者 Amy Tran
除了在 Tableau Public 上创建可视化的个人之外,像 Chipotle 、摩根大通和汉莎航空这样的公司只是使用 Tableau 来促进数据驱动决策的少数组织。Tableau 帮助公司将数据带到所有员工的手中,允许从运营管理到财务的团队跟踪和分析数据。你的公司可能在你不知情的情况下使用了 Tableau!
Tableau 认证的快速概述(以及为什么你应该得到一个)
Tableau 提供了两个主要的认证分支:桌面和服务器。服务器认证更适用于与系统管理员相关的角色,您的重点是安装、部署和维护 Tableau 服务器。桌面认证途径,这是本文的重点,是作为分析师工作的人会发现有用的。
有三种台式机认证:
- Tableau 桌面专家(建议 3 个月以上经验)
- Tableau 桌面认证助理(建议 5 个月以上经验)
- Tableau 桌面认证专家(建议 12 个月以上经验)
我建议从桌面认证助理开始。专家认证衡量基本技能,如创建基本图表并将其格式化。虽然掌握这些知识很重要,但 Tableau 足够直观,因此您可以通过使用 Tableau 简单地学习专业考试中的大多数材料。
此外,认证助理考试不要求您将专家认证作为先决条件,这意味着您可以跳过支付 100 美元的专家认证费用,直接进入认证助理。注册助理考试的每次考试费用为250 美元,所以在参加考试之前一定要做好充分的准备。
根据 Tableau 的认证目录,截至 2020 年 8 月,共有 4,101 人获得了活动桌面认证助理认证。这个数字可能会更高,因为有些人可能会选择不出现在名单上。获得这个证书是证明你知道的不仅仅是 Tableau 的基础知识的一种方式。
当你为了一份需要数据技能的工作与上百人竞争时,这份证书可能足以让你至少获得一次面试机会。
如果我们快速浏览一下谷歌趋势,“tableau 工作”和“tableau 认证”是过去十年中持续增长的搜索词。
谷歌“tableau 工作”和“tableau 认证”趋势
每个业务职能部门的工作都以某种形式处理数据,Tableau 可以帮助将这些数据转化为可操作的商业智能。这一点以及“商业分析师”和“数据分析师”类型的工作越来越受欢迎,可能是 Tableau 和 Tableau 认证相关搜索趋势受欢迎的原因。因此,如果你想在每一个空缺职位的申请人中脱颖而出,学习 Tableau 可能是一种方法。
因为我最近通过了 Tableau 桌面认证助理考试,所以我想花点时间解释一下我是如何准备的,以及考试体验是怎样的。如果你也有兴趣参加考试,我希望在这篇文章结束时我能帮上忙!
考试分为及格或不及格,及格分数为 75%。为了充分披露,这是我的证明:
认证证明
如你所见,我没有成功通过。我只是用普通颜色通过了。我有点震惊地看到,我只有 55%的“计算”问题是正确的,但我看不到我错了哪些问题,因为 Tableau 不提供对你的考试的每个问题的反馈。从好的方面来看,这种高水平的反馈确实有所帮助,因为在考试后,你知道下一次尝试(如果你需要重新参加考试)或认证专家考试需要复习和关注哪些方面。
测试技能部分总结和细分
如果你已经浏览了介绍,并来到这里,这是真正的开始。
官方桌面认证助理考试指南(本文末尾的链接)会告诉您考试将测试哪些技能,以及考试中每个部分的权重。考试包括 36 个问题,因此我们可以估算出下面每个部分的问题数量:
考试的估计问题数量
每个部分的问题数量只是一个指导原则。考试的实际百分比分配可能与上表所示略有不同。一个问题可能意味着通过和失败的区别,所以不要因为你乍一看觉得简单就跳过任何部分。
所有问题都是选择题,你要么选择一个正确选项,要么选择多个(如果适用)正确选项,要么选择对/错。然而,在“动手”和“理论”问题之间还有一个区别,你应该做好准备。
在动手问题中,您将根据提供的数据源回答一个问题。所有数据源都是在虚拟机上的一个文件夹中提供的文件(稍后将详细介绍),因此您很可能不需要连接到任何云数据库或 web 数据。一个简单的动手问题结构可能是这样的:“根据 WoahMarket 全球销售数据集,2019 年欧洲的销售额总和是多少?”要回答这个问题,您必须找到“WoahMarket Global Sales”文件,确定它是 Excel 还是 CSV,连接并打开 Tableau 中的表,然后处理数据以获得答案。
对于理论问题,从技术上讲,你不需要连接到任何数据源来回答。这些问题测试你对每个不同技能部分的 Tableau 功能的理解。例如,一个简单的理论问题是:“仪表板集操作如何影响视图?”之后,您会有几个选项可供选择。
现在,让我们快速回顾一下每项技能,并讨论一下您应该在考试前复习的每个领域。
数据连接(17%)
如果不首先连接到数据,任何数据分析或可视化都无法开始。这可能就是为什么考试大量使用这一部分的原因,17%的选择题可能会使用数据连接。除了如何将 Tableau 连接到 Excel 文件之外,您还需要了解更多。
要知道 Tableau 可以连接各种数据库,包括微软 SQL Server 和 MySQL。Tableau 还内置了与几个亚马逊服务的连接,包括 Athena 和 Redshift。你不一定会被要求连接到这些,但它们可能会出现在选择题中。
数据连接选项
还有许多不同的方式来组合表格,为可视化做准备。您需要知道如何区分连接、混合和联合,以及使用每个连接的场景。
考试中可能需要用到的另一个重要特性是“数据解释器”,这是一个内置的 Tableau 特性,可以帮助在加载前清理数据。如果你得到一个有很多空白单元格、标题和其他奇怪格式的文件,只要勾选“使用数据解释器”框,Tableau 就会尝试从文件中检测表格。
数据解释功能
Tableau 还允许您创建“提取”或保存的数据子集,以减少您分析的数据大小,并有可能提高工作簿的响应速度。10.5 版中更新了摘录,您可能会遇到一些关于新旧摘录格式功能差异的理论问题。
提取特征
组织和简化数据(10%)
这一部分相对简单,这可能是 Tableau 对它的权重低于其他部分的原因。为了过滤数据,通常需要将一个维度拖到过滤器面板上,并根据需要进行定制。要构建组、层次结构和集合,您需要做的就是右键单击相关的维度并选择您想要创建的内容。
创建组、集合和层次结构。
虽然执行这些任务很容易,但是你仍然需要理解为什么和什么时候去执行它们中的每一个。
对于动手题来说,你选择怎样得到正确的答案并不重要,只要你得到正确的答案。
如果您遇到的问题使您看起来需要一个计算字段,那么首先尝试一下本节中的技术可能是值得的。
在 Tableau 中创建一个集合可以回答许多不同类型的问题。当您自定义一个集合时,您会将适合某个类别的数据分配为“在”集合中,而将不适合的其余数据分配为“在”集合之外。例如,如果您必须根据总销售额确定前 10 名客户,您可以通过创建一个集合并选择“top”选项卡以及自定义“By field”选项来回答这个问题。
创建集合
如果您需要比较两种类型的客户,您还可以更进一步,创建一个组合集。例如,如果您只想查看总销售额前 10 名的客户和总利润后 10 名的客户,您可以右键单击其中一个集合,然后单击“创建组合集合”,之后您可以选择只获取符合这两个集合的成员。
创建组合集
这是回顾 Tableau 的"操作顺序"的一个很好的部分,Tableau 以什么样的顺序实现你放在视图中的过滤器和计算。例如,当您希望您的一个维度过滤器在其他过滤器之前实现时,您需要将它设置为“上下文过滤器”,因为它们在常规维度过滤器之前实现。
Tableau 官方操作顺序图片- 来源
字段和图表类型(15%)
本节涉及Tableau 如何通过理解用于创建可视化效果的组件来创建可视化效果。
第一步是理解度量和维度之间的区别。Tableau 中的度量表示数据源中的数值,而维度是用于分类和聚合数据的定性值。当您将一个维度拖到视图上时,Tableau 将根据该类别自动聚合视图。
假设你刚开始有一张图表,上面记录了每笔销售额随时间的变化。如果您随后将“Region”拖到视图中,您仍然会得到一段时间内的销售额,但是图表上的单个点可能会减少,因为每个相同区域中的所有单个点会被加在一起(即 Tableau 会将[Sales]更改为 SUM([Sales])。
你还需要知道离散字段和连续字段的区别。乍一看,您可能会认为所有度量都必须是连续的,所有维度都必须是离散的。然而,事实并非如此。一些度量可能是离散的(很少),而一些维度可能是连续的(很少)。
在大多数情况下,度量往往是连续的,因为连续的值形成一个完整的整体,并趋于无穷大。例如,“销售额”度量是连续的,因为从技术上讲,公司的销售额没有上限,销售额可以是任何数字。相反,离散的值是那些彼此不同的值。例如,“产品类别”维度中的不同值是离散的,因为该维度可以采用固定数量的值。
此外,您最初可能认为所有度量都是绿色的,所有维度都是蓝色的。事实并非如此,如果您右键单击一个度量并选择“转换为维度”,就可以看到这一点。您将看到所有离散字段为蓝色,所有连续字段为绿色。
Tableau 还自动生成了一些你可以使用的字段。它们出现在维度和度量列表的底部,并以斜体显示,以便您可以快速识别它们。最好只是将它们拖到视图中,这样您就可以了解它们的作用。您还会看到,当您选择某些图表类型时,其中一些字段会自动添加到视图中。记录数量度量也是 Tableau 中自动生成的字段。您可以将它看作是表中的一个额外的列,每行中的值都是“1”,因为它是数据源中所有行的计数。
您可以在 Tableau 上构建各种各样的图表,从直方图到热图。如果您点击右上方有用的“示范”选项卡,Tableau 将向您显示创建每种类型的图表所需的维度和/或度量的组合。
向我展示功能
同样重要的是,不仅要知道如何创建每种类型的图表,还要知道何时可能需要使用它们。例如,直方图看起来类似于条形图,但用途完全不同。
计算(18%)
哦,天啊,计算。
这是考试中权重最高的部分,理由很充分。将度量和维度拖放到视图中可以很容易地创建信息可视化。但是一旦你习惯了使用计算,你将为你的分析增加一个全新的深度层,并释放 Tableau 的全部潜力。
**在这里,区分有聚合值的计算和没有聚合值的计算非常重要。**例如,如果您要计算某个特定地区的利润/销售额比率,您可能会认为可以创建一个带有[利润]/[销售额]的计算字段。但是,如果将此计算添加到视图中,将不会得到正确的结果,因为 Tableau 将在对每一行执行计算,然后将所有单个利润与销售额的比率相加。您真正想要的是 SUM([利润])/SUM([销售额]),因为这个计算将考虑您的视图上的粒度。
Tableau 解释了在创建计算字段时每个计算需要哪些值,因此没有必要记住哪些值应该放在哪里。然而,Tableau 提供的不同的字符串、日期、算术和逻辑计算是值得的,因此至少在考试期间您会知道计算的名称。要创建计算字段,请单击“分析”,然后单击“创建计算字段”。您也可以右键单击维度或度量,然后单击“创建计算字段”。
创建计算字段
您还应该了解表格计算是如何工作的,并尝试使用最常见的方法,如“占总额的百分比”、“移动平均”和“差额”。您可能会收到一个问题,其中特别包含您需要的表格计算类型,因此您只需从“快速表格计算”中选择正确的一个即可。
快速表格计算
了解何时以及如何创建“细节层次”(LOD)计算也很重要,因为可能有些问题看起来很简单,但实际上需要这种类型的计算。LOD 计算允许您控制要执行计算的粒度级别,并且可以在计算中使用不在视图上显示的值。
详细等级表达式(也称为 LOD 表达式)允许您在数据源级别和可视化级别计算值。有 INCLUDE、EXCLUDE 和 FIXED LOD 表达式,但一般来说,在大多数情况下可以使用 FIXED expression。当您需要相对于视图上的过滤器以不同的顺序计算 LOD 表达式时,可能会出现例外情况(参见第一节中的"操作顺序)。
固定 LOD 表达式允许您使用与视图上显示的内容无关的值来执行计算。您可以使用这些表达式执行的一种有用的活动类型是群组分析,它可以让您回答这样的问题:“2011 年、2012 年、2013 年首次订购的客户带来了多少利润??"这里,您根据客户的第一个订单日期创建客户组,为此,您需要使用一个固定的 LOD 表达式。
LOD 表达式示例
制图(13%)
啊,地图。它们看起来很简单,但是你可以用它们做更多的事情,而不仅仅是给不同的区域标上颜色。
首先有一个重要的提示:查看数据源是否为您提供了“纬度和“经度度量值。如果是这样的话,您将希望使用这些度量来代替 Tableau 自动生成的“纬度”和“经度”度量,这些度量以斜体显示在数据窗格的底部。这是因为有时 Tableau 无法为数据集中的自定义位置生成坐标。这就是为什么许多具有特殊地理位置的数据集都有自己的“纬度”和“经度”度量。
基本地图创建
Tableau 还允许您使用其“径向选择工具检查不同位置之间的距离。但是,您需要确保您已经放大到足够近,这样工具才会显示距离。这是因为地球不是平的,所以 Tableau 可以显示两个位置之间到某一点的“直线距离”。
地理搜索和径向选择
您可以通过选择不同的“地图分层”选项为地图添加更多细节,这些选项可以添加诸如城市标签、街道/公路/路线、州/省边界等项目。如果您需要搜索特定的地理项目,如城市或州,您可以使用 Tableau 在地图视图左上角的地图搜索栏。
地图图层
分析(15%)
“分析”选项卡可能看起来有点吓人,但是和它的其他界面一样,Tableau 使统计数据易于理解并在您的可视化中使用。
通过从默认的“数据”窗格移动到“分析”窗格,您可以执行大多数与分析相关的技能。在这里,您将看到“总结”、“模型”或“定制”分析的选项。例如,在“模型下,您可以将“趋势线拖到视图中,这将为您提供一条线性、对数、指数、多项式或幂趋势线的选择。这里值得指出的是,虽然理解这些是如何工作的很重要,但简单地知道有哪些选项(或在考试期间检查哪些选项)可以帮助你快速回答基于理论的问题。
从分析选项卡创建趋势线
对于本节,除了能够创建包含可视化分析项目的视图之外,您还应该查看每个项目的组件。例如,如果你不熟悉盒图,看看上铰链和上须之间的区别。同样,如果您需要向视图中添加预测,请记住您可以单击“描述预测”来仔细查看模型。
描述预测
仪表板(12%)
最后但同样重要的是操纵仪表板!
仪表板是多个表的组合,可用于在一个页面上显示大量信息。与其他部分一样,理解仪表板如何工作的最好方法是自己创建仪表板并与之交互。Tableau 的示例超市工作簿有几个设计良好的仪表板,您可以看一看开始使用。
仪表板示例
知道何时以及如何使用不同类型的“仪表盘操作”将为您提供很好的服务。滤镜和高亮 动作创建和使用起来都相当快捷。当您想要直接与可视化交互并查看基于动态更新时,您可以选择创建参数动作和设置 动作。它们允许您分别编辑参数和设置值,这在您想要自定义可视化显示的数据时非常有用。
仪表板操作
另一个重要的部分是如何为不同的设备创建自定义仪表盘布局。除了默认布局之外,Tableau 还允许您专门为桌面、平板电脑和移动设备创建布局。您还可以选择为移动设备自动生成布局。
仪表板布局选项
为考试做准备
这些都是你考试需要的技能部分。我试着尽可能多地包含,但显然我不能一篇一篇地复习考试指南中的每一点。确保复习每一部分的每一项技能,因为它们都有可能在考试中出现。
现在,让我们来看一下报名参加考试以及考试当天的情况。
访问 Tableau 的桌面认证助理页面,然后单击“立即注册”。您将被重定向到他们的考试门户网站,在那里会提示您创建一个帐户,选择您要参加的考试,并添加您的付款信息。一旦完成,你就可以设置你想参加考试的日期和时间,它必须在你报名日期的六个月之内。
在考试当天,有一些事情需要记住:
- **参加并通过互联网连接测试。**他们强烈建议您使用有线连接来避免延迟问题,但只要您的连接结果满足最低要求,就应该使用 Wi-Fi。我使用了 Wi-Fi,没有遇到任何问题(在开始考试之前,我还关闭了其他设备上的所有 Wi-Fi)。
- **准备好政府颁发的身份证以备核查。**考试开始前,你的监考人会要求查看你的身份证。
- 设置你的测试环境。你必须是一个光线充足的小房间,没有纸张、材料和其他小玩意。你的监考人会要求你移动你的相机,这样他们就可以验证你的房间是干净的。我没有自习室,所以我在我的卧室里参加了考试,但我强烈建议找一个有实际桌椅的好房间(也许去朋友家)。测试持续了两个小时,随着时间的推移,我的房间变得异常闷热,所以请确保你感到舒适。你可以随身携带一个水瓶,但也要确保不要喝太多,因为一旦考试开始,你就不能离开去洗手间。
- 如果考试前有任何连接问题,请将手机放在手边,以便接到监考人的电话或电子邮件。成功连接后,确保将手机带出房间(你的监考老师可能会提醒你这样做)。
- 考试前重启电脑,关闭除 Google Chrome (你用来登录考试门户开始考试的)以外的所有应用。
考试将在虚拟机上进行,监考人将在考试设置期间帮助您连接到该虚拟机。这就是为什么您的互联网连接必须稳定的原因,因为如果您在考试中途断开与虚拟机的连接,您将没有任何额外的时间来尝试重新连接。
考试期间,可以使用互联网!
这对于理论问题来说是很方便的,但是你通常不能直接在谷歌上输入问题。只要不要求您登录,您就可以访问大多数公共网站。总的来说,我发现“ Tableau 帮助”和“ Tableau 社区论坛”页面是最有用的。我建议浏览这些页面,熟悉一下关键词和布局。
如果你至少知道每个部分或子主题的标题,你会很快知道考试期间要谷歌什么。例如,如果您对默认仪表板布局有疑问,您应该知道 Tableau 帮助在“创建仪表板”下有一个“为不同设备类型创建仪表板布局”部分。你不一定要记住页面上的所有内容(虽然如果你有时间的话会很好),但至少你会在考试前知道信息在哪里。
需要记住的重要一点是测试是计时。你有两个小时来完成它,所以不要花太多时间去谷歌搜索答案。如果你真的卡住了,在线搜索的一个替代方法是连接到 Tableau 上的任何数据源,并测试出问题所问的任何内容。例如,如果您被问及度量值是否可用作筛选器,而您不记得答案,只需打开一个新工作表,将度量值拖到筛选器窗格,然后看看会发生什么。
一些最后的学习建议
作为这篇文章的结尾,我想我会用一些更通用的技巧来结束这篇文章。
截至 2020 年 8 月,您将使用 Tableau 版本 2020.1 参加考试。知道考试在哪个版本的 Tableau 中进行是很重要的,因为新版本的 Tableau 的功能可能会发生巨大的变化。例如,Tableau 在 2020.2 版本中通过引入“关系”极大地简化了数据连接,但该功能在考试的 Tableau 版本中不可用。请留意官方页面的更新。
Tableau 看起来非常直观,所以当你观看教程视频时,你似乎可以准确地复制正在显示的内容。然而,我经常发现,当我跳过视频而不跟随时,特别是对于更复杂的主题,如混合计算和细节层次表达式,我无法在视频结束后解决问题。它有助于准确复制教程视频中的内容,这样您就可以在自己的屏幕上看到相同的结果。之后,你就有了一个模型来回答未来的问题。
我的最后一个建议是,在第二天开始时,花些时间回顾一下你前一天所学的内容。这看起来很耗时,尤其是当你学到更多技能的时候,但这是值得的。很可能你会在考试前花两周到一个月或更长时间学习,所以如果你不花时间复习,你可能会在考试前 10 天记不住概念。
如需进一步了解,请查看 Tableau 帮助页面。我知道这很难懂,但是你需要通过考试的所有信息都在那几页上。不要忘记在桌面认证助理页面下载完整的考试指南。
祝你考试学习顺利!我迫不及待地想看到你们的名字出现在可认证的 Tableau 人才页面上!
如果您想了解更多关于 Tableau 预测的信息,请查看这篇文章:
[## 学习用 Tableau 在 6 分钟或更短时间内有效预测
谁知道会这么容易?
towardsdatascience.com](/learning-to-forecast-effectively-with-tableau-in-6-minutes-or-less-3d77a55930a0)
关于一些非考试仪表板优化技巧,请查看这篇文章:
只要问自己几个简单的问题,确保人们不会忽视你的努力工作
towardsdatascience.com](/dont-forget-these-three-things-when-creating-a-dashboard-eaadb1c02582)
超现代可视化的故事-桑基图表
在这一系列用于数据科学的高级可视化技术中,让我们深入探索 Sankey 图表的用例。
在过去的几年里,数据科学的发展势头越来越大。这无疑是当今最热门的领域之一。在本文中,我将讨论数据科学的一个重要部分——数据可视化。
马库斯·温克勒在 Unsplash 上的照片
数据可视化是数据科学过程中不可或缺的一部分,它可以帮助您获得洞察力并更好地理解您的数据,以便您可以在构建机器学习模型时优化数据的使用。
在这个系列中,我将带您浏览一些非常有用但尚未开发的图表。让我们从这个开始:
桑基图表
桑基图类似于流程图,其中箭头的宽度代表流量。节点是数据流出和流入的值,链接的宽度代表数据流量。源和目标是相对于节点的索引指定的,并且应该提到表示数据流量的值。
在这里,我加入了一个非常基本的 Sankey 图表,该图表显示了第一年和第二年来自基础、白银和黄金等级的客户流量。我用 Plotly 制作了它,所以它是交互式的。因此,请随意悬停在它上面以获得更多见解:)
此处,节点为第一年基数、第二年基数,进出数据的值是流动的,将鼠标悬停在图表上,将显示来源、目标和值。
作者图片
你可以在这里找到我的全部源代码。在鼠标悬停时,你会发现它向我们展示了有多少客户从一个层级迁移到另一个层级。
因此,当我们希望可视化大型数据集时,这个图表非常有用。我使用从 Plotly 引用的内容重新创建了一个图表,这是一个完美的例子,反映了当我们处理具有大量内部连接的大型数据时,桑基图的有用性。下图显示了 2050 年的能源预测。确保您将鼠标悬停在图表上,以获得更好的见解。节点的位置可以根据用户的方便而改变。
附言:您可以在这里点击“编辑图表”选项来摆弄图表并尝试使用您自己的值:)
作者图片
这里的一个附加特性是节点和链接的颜色可以根据喜好定制。这张来自 Google Charts 的图表就是一个很好的例子。
桑基图表。来源:谷歌图表
结论:
桑基图是最好的图表之一,可以用来表示大数据从源节点到目标节点的流动。
- 当我们处理大数据时,并且我们希望可视化大量参数之间的数据流时,这尤其有用。
- Sankey 图表中的定向箭头有助于理解生产环境中的数据流,这使得它们非常有用。
- 桑基图主要用于物质或能量流的可视化。
- 由于有吸引力和信息丰富的设计,它们有助于非常容易地发现数据中的不一致。
我会强烈推荐大家尝试一次!
参考文献:
任务自动化指南。
当今世界在不断发展,当你可以聪明地工作时,就不再需要努力工作了。对任务自动化的需求现在不仅仅是一种爱好,而是一种需要。
从教科书的定义来看,自动化基本上是一个过程,它使一项体力劳动的任务变得不那么容易完成,并且只需要最少的人工干预。自动化任务有助于减少在该任务上浪费的人力,缩短时间,并降低在完成或实施该任务的过程中可能导致的人身伤害的风险。然而,在这个故事中,我们将主要关注软件领域的自动化任务。也就是说,用各种编程语言编写自动化脚本来更容易、更快、更准确地完成工作。
自动化是通过缩紧边角不切边来削减成本。
― 哈里什吸管
自动化脚本
对于我们随机挑选的每一个人,特别是从事计算机工作的人,将会有一个任务或者一个你经常做的任务列表。你会发现这些任务通常很费时费力。这些任务可以简单到发送电子邮件、探索数据集、分析电子表格文件等等。不管任务看起来有多简单,它都是非常有压力的,尤其是如果你每天都要花好几个小时来完成它。那么自动化将是非常必要的,可以节省你的压力和每天花在任务上的时间,这样你就可以把这些时间和精力用在更有价值的事情上。自动化脚本非常类似于你可以用编程语言编写的常规脚本,除了自动化脚本寻求自动化一个过程或任务。
任何需要 5 分钟的日常工作任务一年将花费超过 20 个小时,或者超过一个工作周的一半。即使每天 5 分钟的任务自动化需要 20 个小时,自动化也会在一年内达到收支平衡。安东尼·斯蒂伯
使用 Python 自动化任务
现在有很多编程语言,但是 python 是迄今为止最受欢迎的语言,也是任何想要学习任务自动化艺术的人最喜欢的语言。Python 非常容易学习和编写,代码实验和实现也可以在 Python 中非常容易和快速地进行。大多数人更喜欢 python 的自动化,因为围绕它建立了一个大型社区,人们可以很容易地分享他们的问题,并从社区中的其他人那里获得帮助。此外,互联网上有各种各样的资源可供选择,以指导您使用 Python 进行自动化,我个人最喜欢的是这本书, 用 Python 自动化枯燥的东西。这是一本非常有见地且对初学者友好的书,它让每个人即使没有 python 编程语言的知识,也能从初学者到精通自动化艺术,如果你对学习一般 python 有浓厚的兴趣,你应该读一读,因为你也专门研究自动化。
自动化会让你的工作过时吗?
技术进步有时确实意味着某些工作随着时间的推移变得不那么需要,但这并不意味着整个行业都不走运。事实上,研究表明自动化不会减少工作岗位的数量,甚至会给劳动力增加更多的工作岗位。
— 西部州长大学博客
自动化任务的想法对某些人来说非常可怕,因为它给他们的印象是他们的工作将被自动化机器人取代或过时。老实说,自动化仅仅是为了节省时间和减少工作量。如果你的工作既耗时又需要太多的人工或劳动来完成,如果有自动化的选择或服务,它最有可能是自动化的。然而,在这个技术不断发展的时代,让自己变得有用是你唯一的责任。自动化预计将创造比它所取代的更多的工作,而且它将最适合从事自动化任务或工作的人。与技术一起成长。教会自己学习、忘却和再学习。通过这样做,您可以为当今快速发展的技术世界中不断发展的时代做好准备。
自动化不会夺走你的工作,但工业隔离的自我监禁会。
― 里奇·诺顿
在软件开发领域,自动化可以有多种形式;编写和打包自动化脚本或类作为包或库使用,是最常见的方式之一。这可以节省您的压力和时间,每次您需要实现某个东西时,都必须编写许多行代码。作为一名敏捷软件开发人员、数据科学家、人工智能或 ML 工程师,自动化简单但耗时的任务应该是你的首选方法。它让你在你所做的事情上脱颖而出,同时节省你的时间和精力😉。
我目前有两个大的自动化脚本,已经作为 python 包发布了, FastML 和 Xplore 。我还有几个正在测试中,很快就会发布。我对自动化充满热情,因为我希望让数据科学家或分析师、人工智能和人工智能工程师的工作变得简单。如果你想和我聊聊我在这个故事中提到的事情,或者只是想和我交朋友,请联系我😊如果你想在 Twitter 上亲自聊天,或者在 LinkedIn 上联系,我都可以。编程快乐!
我衷心感谢 安娜·阿依库 校对并纠正了我写这篇文章时犯的许多错误。
厌倦了在互联网上查找数百个方法和函数来探索您的数据集吗?Xplore 使…
towardsdatascience.com](/data-exploration-simplified-2c045a495fe4) [## fastML 指南
作为一名数据科学家、人工智能或 ML 工程师,速度是从事一个项目的基本要素。fastML 为您提供了…
towardsdatascience.com](/the-fastml-guide-9ada1bb761cf)
度量标准的诱惑
目标和激励如何伤害你的生意
韵律学
在数据科学中,指标非常有趣。来自大数据的结果可以为我们提供诱人的量化见解,我们可以利用这些见解来改进我们的业务。度量让我们更加了解——我们对某件事“检查”得越多,我们就越能观察到随时间的变化。指标激励我们——它给我们一些“努力”的目标。度量标准提供了成就或失败的二元组合——如果我们符合既定的目标,那么我们就成功了。否则,我们就会失败。
在商业中,度量标准一直被使用。度量提供关于特定过程的测量,并提供改进或“优化”的基础。一些指标包括:
- 解决一个客户服务问题平均需要多长时间?
- iPhone 装配线上每天会出现多少缺陷?
- 我们的员工每周工作多少小时?
显然,指标很重要。他们在我们的生活和商业中扮演着重要的角色。它们提供了我们可以用来“跟踪”我们进展的定量测量。但是有时候,度量标准可能是有害的。有时,我们用来指导决策的指标最终对我们的伤害大于帮助。
古德哈特定律
英国经济学家查尔斯·古德哈特写下了我们今天熟知的古德哈特定律。该理论指出:
一旦出于控制的目的而对任何观察到的统计规律性施加压力,它就会崩溃。
提炼出它的本质:
“当一个度量成为目标时,它就不再是一个好的度量.”
我们来分析一下。该行的第一部分写着,*“当一个度量成为目标时……”因此,对于某个被跟踪的指标,一个标杆被设定为人们要达到的目标。这一行的后半部分写着,“…它不再是一个好的衡量标准。”*一旦人们知道目标实现后会有回报,他们就会调整努力来实现目标,即使企业的整体结果很糟糕。
古德哈特定律的一个简单例子是首席执行官试图使他/她的公司利润最大化。一位数据科学家发现了加薪和员工绩效之间的关系。然后,数据科学家将这一见解提供给首席执行官。首席执行官接受了数据科学家的建议,通过只向达到特定指标的人提供奖金来激励更高的员工绩效。所有员工都想要奖金,因此首席执行官设定的指标成为优先事项,每个人都相应地调整自己的工作习惯。但古德哈特定律告诉我们,这个计划可能会对首席执行官产生适得其反的影响,这将对提供洞察力的数据科学家产生不良影响。在提供见解时,数据科学家必须注意目标指标可能导致的不可预见的后果。
正如史蒂夫·乔布斯曾经说过的:
“激励结构起作用……所以你必须非常小心你激励人们做的事情,因为各种各样的激励结构会产生你无法预料的各种后果。”
满足目标指标的激励措施并不总是能带来预期的结果。来源:呆伯特
纸杯蛋糕
假设在一家精品纸杯蛋糕店,店主想要增加利润。这家店的顾客如此之多,以至于他们需要比平时每天多烤一些纸杯蛋糕。所有者知道需求是存在的,并且需要以某种方式提高效率。她没有足够的钱来雇佣更多的面包师,所以她决定通过诱人的金钱激励来提高现有面包师的工作效率——每周末烘焙最多纸杯蛋糕的面包师将获得额外的 100 美元。自然地,每个面包师都想要钱,并把他们的“纸杯蛋糕计数”放在首位。因此,在激励计划的第一周,顾客络绎不绝,面包师拼命工作,总是有大量的纸杯蛋糕可供购买。一周结束时,老板检查账目,注意到利润增加了。店主很激动——看起来计划成功了!
然而,当她查看手机时,店主注意到在过去的几天里,这家面包店在 Yelp 上收到了很多非常负面的评论。一些顾客抱怨黏糊糊、没煮熟的纸杯蛋糕——里面有生鸡蛋。一些人抱怨说顶部的糖衣和装饰很乱。其他人抱怨粗鲁的客户服务,以及在点餐和付款时“感觉很匆忙”。此外,当店主检查她的面包师时,她注意到他们看起来很累。她还看到他们的手和前臂上有许多烧伤的痕迹。在给获胜的面包师 100 美元奖金后,一位同事面包师将围裙交给店主,然后辞职。他说他觉得在这里工作不安全,并声称获胜的面包师故意“破坏”他的一个面包,只是为了赢得奖金。随着时间的推移,越来越多的 Yelp 负面评论影响了顾客量,几周后,纸杯蛋糕店就破产了。
曾经是一家高端纸杯蛋糕精品店,快乐、合作的面包师制作高质量的纸杯蛋糕,突然产生了疯狂、背后捅刀子的面包师,他们把纸杯蛋糕的数量作为唯一的指导原则。纸杯蛋糕质量、顾客满意度和员工满意度都直线下降。业务遭受了多种不可预见的后果,并最终由于指标激励而失败。
美味、好看的纸杯蛋糕需要很多爱、关怀和时间来制作!试图最大限度地提高纸杯蛋糕的产量以获得更多利润不会生产出像这些一样甜的纸杯蛋糕!^
教训
虽然这个例子有点戏剧性,但是它说明了度量标准非常有用,但是如果我们过分关注它们,也会带来灾难性的后果。当一个企业沉迷于一个度量标准时,那么这个企业的其他可能无法测量但可以感知的质量可能会被无意地牺牲掉。
让我们回到纸杯蛋糕店的例子。店主希望获得更多的利润,并决定以每位面包师生产的纸杯蛋糕数量作为衡量生死的标准。但是,确保她事业成功的其他更微妙但同样重要的品质呢?她的面包师们的快乐呢?她的面包师之间的合作水平如何?她的面包师的安全性怎么样?这些是面包店工作文化的基础品质,使企业保持强大、稳定和成功,这才是最终的目标。
教训是:在提供针对特定指标的建议之前,数据科学家应该注意潜在的后果。
无限游戏
因此,在古德哈特定律的背景下,我们可以说,短期业务指标,如每月利润目标、员工工作的总小时数和烘焙的纸杯蛋糕总数,只能服务于有限的思维模式。在最基本的层面上,测量应该提供一种进度的感觉。通过他们的工作,人们只想感受到他们正在进步,正在推进他们所关心的事业。企业应该认识到这一点。
在**《无限游戏》**中,西蒙·西内克把商业说成是一场没有开始也没有结束的游戏。当资源耗尽或不愿意继续玩游戏时,企业可以继续玩游戏或停止玩游戏。Sinek 认为,优秀的企业明白没有“赢”或“输”。在无限游戏中,只有游戏中的商家和没有的商家。在这种情况下,作者建议企业应该有一个可持续、灵活和持久的总体心态,以继续“玩游戏”这与专注于短期指标、击败竞争对手、不断追求短期“胜利”的企业截然不同。
“…为了在无限的商业游戏中取得成功,我们必须停止考虑谁是赢家或谁是最好的,而开始考虑如何建立足够强大和足够健康的组织,以便在未来的许多代人中保持竞争。”-西蒙·西内克,无限游戏
事实上,指标对于数据科学家和企业来说至关重要。然而,我们必须意识到指标的诱惑。这不全是为了达到利润目标。这不仅仅是优化生产力。这并不意味着成为“第一”并击败所有的竞争对手。对于企业来说,这是关于尽可能长时间地留在游戏中。
来源:
你知道你在玩什么游戏吗?西蒙越是开始理解有限和无限的区别…
simonsinek.com](https://simonsinek.com/the-infinite-game?ref=home) [## 什么是指标,为什么它们很重要?
家庭图书馆运营六适马——定义阶段什么是指标,为什么它们很重要?指标是指…
www.managementstudyguide.com](https://www.managementstudyguide.com/what-are-metrics.htm)**
文本必须流动
在弗兰克·赫伯特的沙丘上训练一个生成文本模型
《沙丘》讲述了遥远未来的一个封建社会的故事。它聚焦于一个公爵和他的家人,他们被迫成为沙漠星球阿拉基斯的管家。弗兰克·赫伯特在 1965 年出版了这部经典著作。几乎任何现代科幻小说都可以追溯到沙丘的一些元素。你认为卢卡斯是从哪里得到塔图因的灵感的?
我最近完成了沙丘,它的续集(沙丘的弥赛亚),刚刚开始系列的第三部,沙丘的孩子。有六个故事最初是赫伯特写的,然后的儿子写了一吨。我没读过那些。
我一直在探索生成建模,并想尝试一些文字!我觉得用 Dune 试试会很有趣。更“经典”的机器学习模型用于预测和聚类等事情。生成式建模允许模型创建它所学习的训练数据的新颖配置。最近的一个例子就是 StyleGAN,看看它的实际应用。
我的过程
- 获得文本数据的语料库
- 清理数据!我有一些 unicode 字符,每当有分页符时就有“page”这个词——真烦人。每一章的开头都有摘录自一本真实世界的回忆录或书,我决定把这些拿出来。我还删除了每一章的后半部分,以帮助处理时间。
- 令牌化!这是删除标点符号,使事情小写,然后分裂成一个个单词的长字符串。该模型将从这些单词标记的顺序和频率中学习。还要注意,我们不会像这样删除 NLP 任务的停用词
- 建立模型。一定要使用 LSTM 层,输出层是词汇的大小。基本上,它所做的是给定一小部分文本,对下一个单词可能是什么进行分类
- 训练模型!Keras 建议在事情听起来不再像废话之前至少 20 个纪元。在我不小心关闭我的笔记本电脑并结束 Colab 会话之前,我已经 33 岁了。哎呀。
- 生成文本!我将在下面展示模型的一些输出
第一章:男爵的
我想测试一个纪元后,只是为了看看它吐出了什么。种子词是“男爵”——这本书的一个卑鄙的对手。
‘Baron The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron Of The Baron’
就这样一直持续下去。一点都不太好!
33 个纪元后的模型表现明显更好,但它仍然陷入循环,只是不停地重复各种名词。以下是种子词“Spice”的输出:
The Spice Itself Stood Out To The Left Wall The Fremen Seeker Followed The Chains The Troop Was A Likely Shadow And The Natural Place Of The Great Places That Was A Subtle City Of The Room'S Features That The Man Was A Master Of The Cavern The Growing The Bronze The Sliding Hand
以下是“保罗”(主要角色)的输出:
Paul Stood Unable To The Duke And The Reverend Mother Ramallo To The Guard Captain And The Man Looked At Him And The Child Was A Relief One Of The Fremen Had Been In The Doorway And The Fedaykin Control Them To Be Like The Spice Diet Out Of The Wind And The Duke Said I Am The Fremen To Get The Banker Said When The Emperor Asked His Fingers Nefud I Know You Can Take The Duchy Of Government The Sist The Duke Said He Turned To The Hand Beside The Table The Baron Asked The Emperor Will Hold
以下是“她看了看”的输出:
'She Looked At The Transparent End Of The Table Saw A Small Board In The Room And The Way Of The Old Woman He Had Been Sent By The Wind Of The Duke And The Worms They Had Seen The Waters Of The Desert And The Sandworms The Troop Had Been Subtly Prepared By The Wind Of The Worm Had Been Subtly Always In The Deep Sinks Of The Women And The Duke Had Been Given Last Of Course But The Others Had Been In The Fremen Had Been Shaped On The Light Of The Light Of The Hall Had Had Seen'
想法和下一步措施
我认为这肯定显示了进步和改善。我想把它训练到至少 100 个纪元,但是进展很慢。每个时期大约 11 分钟,所以总共超过 18 个小时。我需要一台更好的电脑。
非常感谢 Susan Li 对这个主题的精彩描述,我在进行这个探索时使用了她的例子。这里是她的文章的链接。
最后,我想补充一点,我没有忘记这么做的讽刺意味。在沙丘宇宙中,在远古的某个时刻,“思维计算机”背叛了人类,几乎将他们消灭。在这本书的时代,计算机已经被“心智”所取代——人类被培育和训练来模仿计算机的计算能力。
关于数据可视化工具
我对 Power BI 和 Spotfire 的体验
裘德·贝克在 Unsplash 上的照片
D 从某种意义上来说,数据可视化是视觉研究领域,通过查看仪表板中的图表,数据上的信息(如模式、趋势和相关性)将呈现给查看者。众所周知,人类通过图像吸收和记忆信息的能力是最好的,这是数据可视化实用化的关键。在更实际的层面上,在公司内部,数据可视化的目的是帮助业务部门进行决策,简化数据分析过程,并经常提供直接分析数字可能会错过的证据见解。
术语可能因工具而异,但在进行数据分析时,您必须处理的基本术语并不多:数据源(本地文件或云中的数据)数据模型(具有整体关系的数据集)可视化(基于数据模型的图表)和报告/仪表板(包含可视化的整个页面)。我们不要忘记过滤器,报告中的所有内容都围绕过滤器旋转。
创建报告的通常过程包括将不同的数据源放在一起(并非所有的数据都存储在同一个位置是很常见的),使数据源彼此对话(创建数据表的关系)和数据清理(可视化的经验法则,不一致很快就会在绘制时显现出来)。剩下的就靠数据、探索和一点故事讲述了;最接近神奇规则的是不同类型图的一般解释,如散点图用于表示数据的分布以及检测异常值,箱线图也是使用 5 个指标(最小值、第一个四分位数、中值、第三个四分位数和最大值)表示分布,折线图用于显示趋势等。报告创建后,将发布并与感兴趣的人共享,这些人可以浏览报告并了解报告所基于的数据。发布报告时,会安排数据刷新,以便报告始终保持最新,并向最终用户显示最新和最正确的数据。
现在有无数的工具来做这项工作,但我最近不得不使用的两个是 Power BI(微软)和 Spotfire (TIBCO)。
功率 BI
Power BI 是微软的一项商业分析服务,它为用户提供了创建交互式可视化的可能性,以及为他们提供商业智能功能的能力。用于开发报告的桌面版是免费的,但其他任何关于发布和分享报告的内容都需要付费许可,无论是专业版还是高级版,你都必须为上述报告的每个用户购买。
支持大量的数据源,您也可以将它们组合在同一个报表中。它提供了多种可供您使用的可视化效果,如“可视化”窗格中所示,并且这些可视化效果可以高度交互地呈现,即使它们位于报表的不同页面上。这些可视化可以定制,你几乎可以改变一切。您还可以对可视化应用各种过滤器,通常是关于日期的,通过切片器或在过滤器窗格下,您可以相当动态地呈现它们。此外,作为微软的一个工具,以及在某种意义上对 Excel 的改进,它与 Excel 有许多共同之处。
这个工具的一个特别之处是它有自己的查询语言:DAX(数据分析表达式)语言。它有很少的规则和大量的函数,您可以使用它们来查询您的数据,并在 PBI 创建所谓的度量或新列。它很容易理解,但使用和优化起来有点困难。然而,这可能是一个缺点,因为任何想要使用该工具的人都需要学习一种新的查询语言,这需要额外的努力。
作为一个工具,它提供了很多功能,但是它的一个限制是关于你可以定义的表之间的关系。如果一段关系可能会引起歧义,你就无法定义它,你必须在这个问题出现的任何时候找到解决办法,这种情况并不少见。最常见的问题是,正如我们所知,数据集并不完美,也不像最初想象的那样完美。当这些问题出现时,找到一个解决方案是相当令人沮丧的。
趣闻:Power BI 中报表和仪表盘是有区别的。一个报告是您在 Power BI Desktop 中开发和发布的,而一个仪表板是使用来自不同报告的可视化效果在 Power BI 服务中创建的。
TIBCO Spotfire
tibco.com
Spotfire 是 TIBCO 收购的另一个商业分析工具。该工具的目的与 Power BI 的目的相同:您创建报告来可视化地分析您的数据。演练几乎是相同的,支持不同的数据源,许多类型的可视化是可用的,您可以根据需要自定义它们,并使它们彼此交互,可以应用过滤器等等。
在这种情况下,用于查询数据的语言是 SQL 语言,因此没有必要为该工具学习新的特定语言。然而,这些工具的棘手之处在于了解“隐藏的”功能,如文档属性、静态和动态变量或插入 R/Python 脚本。我在使用这些工具时产生的总体想法是,这些功能更接近于经典的编程语言,在这种语言中,您必须定义变量,然后在以后使用它们。这些工具的功能不是无穷无尽的,也不是很难使用,但与 PBI 功能相比,它们不是即时的。
Spotfire 的另一个很酷很有用的特性是,你可以使用 HTML 和 JavaScript 脚本来更好地定义你的报告,并尽可能地定制它,这毕竟是像这样一个工具的全部目的。
分享是关怀
这些工具的特点是,它们是为了分享而创建内容的。仪表板的构建是为了在公司内部或外部共享,这取决于所使用的数据和共享的信息。在某种意义上,这些工具针对整个过程的最后一步进行了优化,即创建用户类别的可能性,以创建角色并将这些角色分配给人或人群,并向每个角色显示指定的数据,而不必创建许多适合于该用户组的副本。在这两种工具中,所有这些选项都是可能的。但是,也有一些限制,例如,在 Power BI 的情况下,如果您想为用户分配角色,并让他们有可能刷新数据集,就会有一些限制。
自我 BI
当查找这种可视化工具时,你会注意到一件事,那就是它们也提供了做所谓的自我 BI 的可能性。Self BI 的含义是终端用户在给定数据集的情况下创建自己的报告,而无需 IT 或分析团队的干预。报告的最终用户可以是任何人,这意味着 一切都需要简化和一般化 ,以便工程师和没有任何数据库和 SQL 知识的人都可以使用。虽然可视化的生成本身很容易,但构建数据模型并不容易,因此数据模型经常被提供给最终用户,他们在此基础上构建自己的报告。另一种选择是培训所述用户获得基础知识以构建这些模型,这需要时间和金钱的投入,并且可能适得其反。
名称中的智能部分也指的是这样一个事实,即除此之外,这些工具还提供一些人工智能功能,如对序列、聚类或分类的预测。由于这些工具旨在简化和概括数据分析过程,因此它们也概括了预测算法的应用,将其简化为一个黑盒。这些是另一天的话题,但不用说,任何人工智能算法的推广尚未显示任何结果。
没有免费的午餐
就像机器学习中的“没有免费的午餐”定理,或者对一项任务的编程语言进行比较后得出的结论是,不存在最适合每种情况的语言,这同样适用于数据可视化工具。有很多,每一个都有利弊,人们在选择之前必须评估。然而,由于他们现在提供的功能几乎是一样的,在大多数情况下,这涉及到一个简单的因素:公司内部使用和维护此类服务的成本。成本不包括工具本身,这是一个终端用户的许可和仪表板使用频率的问题。
当我第一次开始使用数据可视化工具时,我的工程师身份经常会对这些工具在查询数据和删除一些可能的场景时的低效感到沮丧。我会立即想到使用编程语言可以多么容易地完成一些简单的数据操作,因为我们习惯于使用 Python 或 r 进行数据可视化。这些工具确实提供了在其中插入脚本的可能性,但这些功能最常用于仪表板必须与其他系统交互的情况,如触发算法的运行。尽管如此,作为他们的唯一焦点,可视化分析,更重要的是,他们提供的共享特性使这些工具成为进行数据可视化的首选。