TowardsDataScience-博客中文翻译-2020-一百二十八-

TowardsDataScience 博客中文翻译 2020(一百二十八)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

神经网络入门,第一部分——导论

原文:https://towardsdatascience.com/what-constitutes-a-neural-network-af6439f0cdd7?source=collection_archive---------20-----------------------

给出神经网络主要组件的简化理解。

扎卡里·克拉雷-斯科特在 Unsplash 上的照片

我一直在从事许多机器学习项目,涉及为各种背景下的不同任务建立的神经网络模型。但是我总是发现自己在使用高级框架和工具,它们大多隐藏了所使用模型的真实结构。主要是由于现有的各种库和框架帮助世界各地的开发人员快速开始使用机器学习代码,鼓励他们构建使用智能模型来完成无数任务的端点应用程序,而不一定帮助他们了解幕后真正发生的事情。

不幸的是,以这种方式行事,人们无法理解他们所使用的模型的内部运作,因此他们甚至不会考虑花时间去挖掘背后的科学。

但是你猜怎么着,理解神经网络内部发生的事情并不困难,本文的目标是以一种非常简单易懂的方式解释其背后的机制,分解主要组件,解释一般架构,并希望让你全面了解网络如何从输入数据到预期的最终结果。

我将把这个主题分成两篇文章,这样我就可以适当地关注每一部分,而不会用太多的信息淹没你。

概观

  1. 神经元的概念
  2. 网络层
  3. 不同的神经网络架构

神经元的概念

1.感知器:神经网络的基本构件

感知器可以被认为是一个基本上模仿生物神经元的二元模型。它于 1905 年首次推出,并于 1960 年由科学家弗兰克·罗森布拉特(Frank Rosenblatt)开发,灵感来自于早期的 T4 作品(T5)、沃伦·麦卡洛克(Warren Buffett)和沃尔特·皮茨(Walter Pitts)。感知器规划了一个决策模型,该模型可以基于一组给定的二进制输入输出不同的结果。这些输入可以具有不同的权重来说明它们的重要性水平,因此其思想是计算恰好大于或小于与实际感知器本身密切相关的特定阈值的二进制输入的加权和。

感知器图式

感知器也可以用一个简单的代数公式来表示:

定义感知器的代数表达式

2.乙状结肠神经元

乙状结肠神经元是比感知器稍微复杂一点的模型。与只能保存 0 或 1 值的感知不同,乙状结肠神经元可以在 0 和 1 之间的范围内变化,因此它可以保存无限个数字。它的优点是,我们极大地增加了输出规模,因此模型在数值上变得更加稳定,因为输入权重的微小变化会导致输出的微小变化。在之前的模型中,无论我们调整输入权重有多小,输出都会突然在 0 和 1 之间切换,而使用 sigmoid 神经元,我们可以在输出变化中达到一定程度的平滑度。

大脑神经元,数字图像。科技日报。

更清楚地说,这里的神经元扮演了一个 sigmoid 函数的角色,它接受所有输入的加权和,并输出一个介于 0 和 1 之间的数字。一旦加权和大于其阈值,神经元就被 激活 。内部阈值通常被称为 偏差 专门针对每个神经元进行缩放。

总而言之,sigmoid 神经元计算其输入的加权和,应用 sigmoid 函数将结果压缩在 0 到 1 之间的数字范围内,最后将获得的结果与其阈值进行比较,这样它就可以点亮或熄灭。

表示乙状结肠神经元行为的模式

网络层

1.什么是层

基本上,将多个神经元并联或串联堆叠在一起就构成了一个层。但是,正如你可能明显预期的那样,这不仅仅是简单地随意堆积神经元。每个网络都是为特定的任务而构建的,因此它具有以不同方式组合的不同类型的层。但一般来说,多种架构模式中常用的层有三种类型,输入层隐藏层、输出层

  • 输入层:输入层是第一层,直接与提供给网络的外部原始数据交互。这一层的主要目的是标准化外部数据格式,使其适合下一层和整个网络。无论给予网络的数据的性质如何,输入层对该数据应用变换以生成一组特定的数字, 张量 ,它们代表每个特定的输入。网络只和数字打交道。

输入层结构

  • 隐层:与 没有什么神秘的。 既不是输入层也不是输出层的层称为隐藏层。这些层在网络架构中非常重要。它们负责检测与数据相关的特定模式,这将帮助网络学习如何识别输入数据或将其分类到特定类别。

从更科学的角度来说,这些层参与了生成抽象层次的过程。这意味着,网络能够检测和学习的逻辑模式越多,它的“抽象能力”就越多,从而使系统从简单的原始数据归纳为高级概念。

JR Korpa 在 Unsplash 上拍摄的照片

同样的概括过程本能地发生在我们的大脑中,甚至没有注意到。从一张狗的图片中,我们会立即想到一种动物,因为对于一个狗的形象,我们已经了解了与帮助区分狗和猫的生理特征相关的特定模式。从某种意义上来说,从一只狗的形象到对它所代表的思想的高层次理解的整个过程是通过组装多个抽象层建立起来的。

每个网络根据网络要解决的问题的性质来定义其隐藏层,因此有多种设计可供使用。一种体系结构可以很好地解决某个问题,但在另一种体系结构上可能表现不佳。

这些层非常有趣的是,一层中的激活模式会导致下一层中非常特殊的模式,如此类推。这意味着每一层负责检测数据中的奇异模式。在将图像分类为目标标签的卷积神经网络的情况下,它们在其隐藏层中实现了一种机制,可以想象得到,这种机制可以将像素组合成边缘,将边缘组合成图案,最终将图案组合成数字。

你可以查看由 Omar M'Haimdat 写的一篇有趣的文章,从开发者的角度获得 CNN 的第一手资料。

[## 从 iOS 开发者的角度探索卷积神经网络(CNN)

计算机视觉领域中卷积神经网络概念的简要说明

heartbeat.fritz.ai](https://heartbeat.fritz.ai/exploring-convolutional-neural-networks-cnns-from-an-ios-developers-perspective-162664130d5b)

边注:在这个阶段,如果你正在寻找 CNN 的细节,我强烈推荐你阅读 Yann LeCun 的论文:基于梯度的学习应用于文档识别

  • 输出层:在处理复杂模式检测任务的前几层进行连接后,输出层上的激活意味着将输入数据标记为目标类别。因为在所有中间工作之后,神经网络的主要作用是正确地匹配给定的和期望的,因此就神经元而言,输出层的大小与数据中不同标签或类别的数量相同。例如,为对狗和猫进行分类而构建的网络在输出层必然有 2 个神经元,给出两种可能性中每一种的正确概率。

输出层中最常用的激活函数是 Softmax,它计算每个目标类在所有可能的目标类中的概率分布。

Softmax 数学定义

数学中,softmax 函数,也称为 softargmax 或归一化指数函数,是一个将 N 个实数的向量作为输入,并将其归一化为由与输入数的指数成比例的 N 个概率组成的概率分布的函数。

神经网络架构

神经网络动物园由阿济莫夫研究所

有大量不同的网络架构可供使用。但是请记住,架构取决于问题的类型和预期的目的。事实上,有许多设计模式或架构已经被证明更适合一组特定的问题。网络体系结构是一个活跃的研究领域,每年都有许多这方面的论文发表。

一般来说,有 5 大类神经网络:

  • 前馈神经网络:这些神经网络是 ANN ( 人工神经网络)的最简单形式之一,其中数据被馈送到网络,并且仅在一个方向上传播。数据通过输入节点,在输出节点上输出。这种神经网络可以有也可以没有隐藏层,这就是为什么称为前馈网络。
  • 径向基函数神经网络:径向基函数是一组用于距离计算的常用函数,它们考虑了一个点相对于中心的距离。RBF 神经网络使用径向基函数作为激活函数。网络的输出是输入和神经元参数的径向基函数的线性组合。
  • 递归神经网络:递归神经网络(RNN)是一种常用于语音识别和自然语言处理(NLP)的人工神经网络。rnn 旨在识别数据的顺序特征,并使用模式来预测下一个可能的场景。

长短期记忆 RNN 的示意图,由 colah 的博客提供。

  • 卷积神经网络:卷积神经网络类似于前馈神经网络,其中神经元具有可学习的权重和偏差。细胞神经网络在许多领域有许多应用,如图像识别、物体检测、人脸识别、图像分析等。

来源:神经网络仿真 GIF

  • 模块化神经网络:模块化神经网络由不同的网络组成,这些网络独立工作并对输出做出贡献。与构建和执行子任务的其他网络相比,每个神经网络都有一组独特的输入。

结论

我希望这篇文章有助于揭开神经网络背后不难理解的数学概念的神秘面纱,并且我很肯定,经过一点实践,你可以很容易地熟悉这些概念😉。

我想提一下激发我写这篇文章的不同来源:

在第二部分,我将介绍神经网络的学习方式,我们将探索许多令人兴奋的概念,如反向传播梯度下降、和等等。所以请继续关注下一部分😉😉。

人工智能增强的传染病监测的未来会是什么样子?

原文:https://towardsdatascience.com/what-could-a-future-of-ai-augmented-infectious-disease-surveillance-look-like-1950363ebb2c?source=collection_archive---------31-----------------------

今天我们离这有多远?

在新冠肺炎疫情之前,预计 2020 年全球将运营 4000 万次航班,运送近 50 亿名乘客。这一数字逐年增长,这意味着如果一种新的传染性疾病出现,它可以以前所未有的速度和规模在本地和国际上传播。

尽管过去几个世纪技术取得了巨大进步,传染病仍然威胁着全球健康。由于日益全球化,传染性病原体在世界范围内迅速、意外传播的可能性变得更高了。快速的城市化、国际旅行和贸易的增加以及农业和环境变化的改变增加了病媒人群的传播,使更多的人处于危险之中。

一次飞行中的飞机数量。来源:https://www.flightradar24.com/

当我们开始展望未来爆发预防的前景时,自动共享和汇集数据是更好地了解所关注事件的关键部分。拥有一个自动化的“事件通知器”,能够以人类无法达到的速度扫描大量数据,并标记相关模式,将使这一过程更加敏感和有效。

为了防止疫情的传播,我们需要知道哪些疾病在哪里,它们传播的速度是多少,以及它们是如何传播的。这包括汇集来自不同地点的医院、全科医生和社区卫生工作者的知识。拼凑一种疾病在一个地区的传播通常需要不同地点之间的沟通,这只有在人们特别关注的情况下才会发生。当电子笔记并不总是被记录并且通常不可互操作时,这可能是一项重要的任务。但是,由新冠肺炎引发的向数字医疗转移的紧迫性日益增加,这可能会使我们在未来更好地利用这些数据。

[## 冠状病毒危机如何影响英国的数字医疗?

拥抱新数字技术的风险/收益等式已经被颠覆了

medium.com](https://medium.com/@nwheeler443/how-has-the-coronavirus-crisis-impacted-digital-healthcare-in-the-uk-16d8182984e4)

大数据能告诉我们什么?

如果以正确的方式收集,关于患者、他们的活动、病原体的基因组序列、治疗耐药性和其他因素的大量数据可以回答一些重要的问题。下面的列表并不详尽,而是涵盖了我最近一直在思考的一些事情:

病原体可以感染哪些宿主?

大多数导致流行病或大流行的主要疾病都是病原体从另一种动物跳到我们身上的结果。感染人类的能力是一种编码在病原体 DNA 中的特性,所以如果我们有足够的信息,我们应该能够设计出根据病原体 DNA 预测其宿主范围的算法。

这一领域的一个例子是机器学习算法,它试图预测人类食物中毒可能来自哪种动物。通常情况下,如果很多人同时报告食物中毒,就怀疑爆发了。如果我们有 DNA 测序来确认感染每个人的细菌或病毒是相同的,并且所有的分离株都是密切相关的,这就更是如此。沙门氏菌是食物中毒的常见原因,它可以通过一系列动物来源进入食物链,也可以通过动物粪便污染其他食品(如沙拉蔬菜)进入食物链。几个小组正在建立机器学习模型,试图将沙门氏菌的 DNA 突变与特定的动物种群联系起来,这将使我们能够更有效地识别污染食品的来源。更多信息见下文:

[## 爆发追踪:机器人之战

两种用于食物中毒溯源的机器学习算法分析

medium.com](https://medium.com/@nwheeler443/outbreak-tracing-a-battle-of-the-bots-864daa7e0b15)

人们已经在做一些很酷的工作,研究冠状病毒,看看哪些其他病毒可以像 SARS、MERS 和 2019-nCoV 一样传染给人类。他们还在研究哪些动物可以作为新型冠状病毒的宿主或实验系统。这项工作最酷的部分是利用公民科学和我们对新型冠状病毒如何与我们的细胞相互作用的理解来设计新的病毒治疗方法。目前,这项工作涉及实验室工作和使用可视化和人类判断的计算工作的结合,但随着通过计算模拟蛋白质结构的能力的提高,这项工作在未来可能会实现数字化自动化。

[## 是什么让新型冠状病毒能够感染人类?

我们如何识别下一个疫情威胁?

medium.com](https://medium.com/@nwheeler443/what-makes-the-new-coronavirus-able-to-infect-humans-98e6a79c82b4)

给定的病原体有多危险?

在某些情况下,你可以观察一种病毒或细菌,看看它们是否比平常更具传染性或致命性。例如,我们可以寻找细菌携带的毒素,我们知道这些毒素会导致感染者出现严重症状,或者我们可以使用更复杂的机器学习方法根据我们过去看到的危险菌株的例子,寻找特定菌株更危险的迹象。

现代监测工具可以根据细菌的基因组序列评估世界各地细菌带来的风险:见本文

[## 在非洲引起血流感染的细菌几乎对所有药物都有耐药性

机器学习正在帮助我们更快地发现高危疾病

medium.com](https://medium.com/@nwheeler443/a-dangerous-new-salmonella-strain-is-emerging-in-sub-saharan-africa-eb393d932909)

哪种治疗方法能有效治愈感染?

抗生素耐药性对公共卫生的威胁越来越大。我们越来越多地看到适应医疗环境的疾病菌株,在医疗环境中抗生素无处不在,或者在社区环境中人们经常用抗生素自我治疗。开错抗生素会助长耐药性的传播,导致患者遭受不必要的痛苦,并有可能死于可治疗的感染。

像我一样的许多研究人员正在探索使用机器学习方法预测哪些抗生素对治疗特定感染有效,哪些无效的方法。但是,机器学习算法可能倾向于偏向或者在代表不足的群体中表现更差。要了解有关我们如何构建和测试这些算法的更多信息,请参见以下内容:

[## 机器学习算法应该指导抗生素处方吗?

机器学习可以解决抗生素耐药性危机。他们在现实世界中会表现良好吗?

towardsdatascience.com](/should-machine-learning-algorithms-guide-antibiotic-prescribing-f74753e28472) [## 构建预测抗生素耐药性的机器学习模型

我第一次向计算机科学学生介绍用 ML 预测抗生素耐药性的研讨会的回顾

towardsdatascience.com](/building-machine-learning-models-for-predicting-antibiotic-resistance-7640046a91b6)

一种新的疾病如何在 T2 传播?

飞行数据和手机数据的使用可以告诉我们人们是如何移动的,因此疾病可以以多快的速度传播到其他地区。作为英国广播公司资助的公民科学项目的一部分,一项研究使用一个应用程序收集人们在 24 小时内的运动和接触数据,以模拟疫情流感可能如何在英国蔓延。这些数据使研究人员能够对比控制疾病爆发的策略,看看什么是有效的。

图片来自这项研究

“在紧急情况下,拥有准确的信息非常重要,”Massaro 说。“这就是为什么手机定位数据比年度人口普查记录更好。问题是这些数据归私人公司所有。我们需要认真考虑改变获取这类信息的法律——不仅仅是为了科学研究,也是为了更广泛的预防和公共健康原因。”

脸书也参与了这项工作,利用卫星图像和人口普查数据制作高质量的人口密度地图,并与学术界分享汇总的用户数据,以帮助他们监测重大灾害和传染病的影响:

[## 灾难地图-脸书永久数据

灾难地图使用统计技术来维护个人隐私。例如,我们只共享去识别的…

dataforgood.fb.com](https://dataforgood.fb.com/tools/disaster-maps/)

一种已知的疾病是如何传播的?

通常,确定有感染该疾病风险的人需要接触追踪,即采访该疾病患者,并要求他们记住与他们接触过的每个人。据估计,46%的新冠肺炎病毒传播来自已经感染但尚未表现出任何症状的人。由于这一点,以及我们自身记忆的不可靠性,依靠患者回忆往往在正确追踪所有感染和防止进一步传播方面做得不好。在冠状病毒疫情期间,一些国家发布了手机应用程序,以更好地实时跟踪疾病的传播。这些应用的发布正在围绕数据的数量和质量、隐私、个人自主权和数据安全产生大量权衡,这些都是我们在疫情结束后可能要应对的问题。

中国发布了流行的微信应用程序的扩展,该应用程序收集用户移动和冠状病毒诊断数据。一种人工智能算法分析这些数据,并给每个人一个颜色编码的风险评估,红色表示两周的隔离,橙色表示可能要在家里呆 7 天,绿色表示允许个人自由活动。该应用程序使用手机之间的邻近感测、全球定位系统的协同定位以及手机无法进入的建筑物进出口的二维码扫描来评估人们对病毒的潜在暴露。分数的基础没有得到解释,这让那些被要求自我隔离却没有明确原因的人感到沮丧。

中国有利用重大事件的历史,如 2008 年北京奥运会和 2010 年上海世博会,引入新的监测工具,这些工具超出了其最初声明的目的。《纽约时报》对新冠肺炎软件代码的分析发现,该系统似乎与警方共享用户信息。当用户授权该应用程序访问他们的个人数据时,一段名为“reportInfoAndLocationToPolice”的代码将此人的位置、城市名称和识别码发送到服务器。这些隐私和社交控制方面的担忧可能会阻止人们使用这些应用,特别是在公民期望高度隐私的国家。

新加坡有另一种选择,它鼓励公民安装这款应用程序,志愿帮助追踪接触者。当局强调,使用该应用程序是自愿的,用户必须“明确同意”才能参与 TraceTogether。根据开发该应用程序的 GovTech 的说法,这种同意可以随时撤回。这款应用的工作原理是在手机之间交换短距离蓝牙信号,以检测附近的其他应用用户。该应用程序采取措施保护用户的隐私,定期生成新的匿名 id,在设备之间共享。这将防止恶意行为者窃听这些信息,并随着时间的推移跟踪某人的活动。该应用程序也不收集位置数据,只收集与其他应用程序用户的接近度。至关重要的是,这些接触者的记录存储在用户的本地手机中,不会发送给当局然而,如果卫生部在接触者追踪调查中要求用户分享他们的数据,而用户拒绝,他们可能会根据《传染病法》受到起诉。

英国研究人员正在开发的应用程序工作流程的一个例子。链接

其他国家正在开发自己的应用程序,对用户隐私和数据治理给予不同程度的关注。虽然这些应用程序在几个月前可能会有用得多,而且可能还需要一段时间才能公开发布和广泛采用,但它们可能会对未来的疾病爆发产生重大影响。美国和英国等国家的一个担忧是,许多群体正在同时开发应用程序,如果它们都被发布,每个应用程序可能只会抓住一部分人口。地方政府可能需要一些协调,以确保在同一个地方收集足够的数据。

由于存在传播感染的风险,世界各地的许多实验室目前都被关闭了,但计算实验可以自由进行。在“大数据”和“人工智能”成为世界各地研究项目越来越多的组成部分的时间点上,这个疫情的出现可能会成为一种催化剂,将所有人的注意力集中在这一领域,并加速采用将在未来限制传染病传播的技术。

模拟 2020 年 NCAA 男篮锦标赛

原文:https://towardsdatascience.com/what-could-have-been-the-2020-ncaa-mens-basketball-tournament-9dfecce66cd1?source=collection_archive---------24-----------------------

使用数据尽可能多次尝试模拟,以查看 2020 年疯狂三月的结果和故事情节

哪个队会有最后的投篮机会?模拟工具可以帮助我们窥视另一个现实。由马库斯·斯皮斯克通过 rawpixel (CC0 1.0)拍摄的照片。

作者注:锦标赛又回到了 2021 年!查看我的 2021 赛季 这里 关注我并订阅 让我的支架每年一次准备好就直接送到你的收件箱。

随着冠状病毒导致 2020 年 NCAA 男篮锦标赛史无前例的取消(更不用说 NCAA 的所有活动了),其球员和球迷都在想,如此受欢迎的年度仪式会发生什么。

周四的 CBS Sports ' Eye on College Basketball 播客(从 1:06:30 开始)中,主持人马特·诺兰德加里·帕里什根据杰里·帕尔姆 3 月 12 日的预测数据对本赛季进行了一次假想的比赛。这让我想到:我真的可以模拟比赛,并确定 2020 年疯狂三月的另一个现实的故事线吗?

已经有一些人模拟了锦标赛(被亲切地称为“模拟周日”),但我想自己运行模拟(并能够运行多次),以了解主要的故事线可能是什么。作为三月疯狂的超级粉丝(我广泛记录了的模型,我用它来挑选过去两年的冠军),我发现自己手头有点时间,渴望在失去的一年中有所作为。

因此,我使用 CBS Sports 的 Jerry Palm 的 3 月 12 日预测括号,建立了一个电子表格,允许你模拟整个锦标赛,使用反映每个队的 KenPom 排名的真实概率:

模拟 2020 年男子大学生篮球赛。复制一份谷歌表单自己运行模拟。

要亲自尝试,复制一份 Google 表单(需要 Google 帐户),然后如上所示选中“Bracket”选项卡上的“Simulate Tournament”复选框。括号将被填满,一个冠军将被加冕。滚动整个括号,看看疯狂是如何进行的,或者只是阅读每个模拟动态生成的顶级故事线。取消选中并重新选中复选框以再次运行模拟。

注意:每个模拟都是使用一组唯一的随机数生成的,一旦删除就无法重新创建。似乎适合一个三月的疯狂,反正没有发生!如果您喜欢某个版本的历史,请务必制作一份副本,避免在原始副本中再次运行模拟。

它是如何工作的

为了模拟锦标赛,我首先从 CBS Sports 的 Jerry Palm 的 3 月 12 日投影括号开始,以确定 68 场比赛的定位,包括前四场比赛。

CBS Sports 的 Jerry Palm 的预测的 2020 年括号用于模拟。

然后我导入了每个团队的肯波排名。在这里,我使用这种方法计算了每场比赛的获胜概率,得出了预计的积分差距和平均比赛分数,并根据两支球队的节奏进行了调整。

注意:在看到从 KenPom 得出的概率相对于由 fivethirtyeeight**生成的 历史预期获胜概率普遍看好 16 号种子后,我对 1 号种子与 16 号种子游戏的概率进行了小幅调整。我把任何基于肯波姆的获胜概率为 90%的队伍平均还原为 100%,导致大多数一号种子队的获胜概率为 90%左右,而不是 90%以下。

肯彭排名

为了构建仿真电子表格,我使用了 RANDBETWEEN 函数来动态生成 1 到 9999 之间的随机数。这将决定谁赢得了即将到来的比赛。

例如,我的模型表明#1 贝勒大学将以 96.58%的隐含概率赢得与#16 波士顿大学的第一轮比赛。因此,如果 RANDBETWEEN 函数生成的 1 到 9999 之间的随机数是 9658 或更少(匹配 96.58%的隐含获胜概率),我将获胜的一方交给 Baylor。如果随机数高于这个数,我就把胜利给波士顿大学。这确保了在模拟中获胜的可能性与团队的 KenPom 排名所暗示的获胜概率相匹配。

如何利用随机数和隐含概率确定获胜者(来自数据表

从那里,我得到隐含的点差和总点数,并对其进行调整,以创造性地显示一个假设的游戏分数。使用上面的例子,贝勒大学将比波士顿大学多 16.4 个百分点。如果生成的随机数是 4,829(上面提到的贝勒 9,658 个获胜场景的一半),我计算出一个贝勒赢~16.4 分的游戏结果。然而,随机数越接近波士顿大学的中奖幻数 9659 或以上,贝勒的胜率就越低。同样,随机数越接近 1,贝勒的胜率就越高,最高可达价差的两倍。

然后,锦标赛的每场比赛都有一个随机数,由概率加权结果确定的每场比赛的获胜者进入下一轮,直到只剩下一个冠军。

注意:这种类型的模拟相当简单,不像您在其他地方可能发现的那样复杂,因为它不会在获胜后调整团队实力,也不会根据获胜相对于预期的积分差距的优势(或劣势)进行调整。该队的肯彭得分在整个锦标赛中保持不变。

括号表上,可以使用“模拟锦标赛”复选框打开和关闭模拟,然后以括号形式显示结果,基于种子的冷门以红色表示:

我还从模拟锦标赛中动态生成关键故事线:

  1. 加冕冠军
  2. 四强赛
  3. 灰姑娘的故事(定义为任何队伍#11 或更高达到甜蜜的 16)
  4. 锦标赛最大的冷门
  5. 头号种子队是如何一路败北的

观察

总的来说,我认为模拟在真实模拟比赛方面做得很好。大多数时候选出的冠军是可信的,有适当频率的惊喜获奖者把“疯狂”放在三月疯狂。

以下是在运行和记录 500 次模拟后,每个团队进入某一轮的可能性的完整分析:

注: 没有 100%机会进入第一轮的球队意味着他们必须在前四轮比赛中才能进入第一轮 64 强。

看到# 1-整体堪萨斯以 23%的夺冠概率这么强,我很惊讶;这证明了他们的实力,或许通往冠军的道路比预期的更容易。

也许是因为他们会遇到如此强大的堪萨斯队,排名第四的肯塔基队表现不佳,只有 38%的时间进入甜蜜的 16 强。

在任何给定的模拟中,通常似乎都有适当数量的扰乱,尽管做得足够多,您会看到 16 种子扰乱多于 1 种子,这表明这些扰乱应该比实际情况更加频繁。几年前,当 UMBC 击败弗吉尼亚成为第一支击败 1 号种子的 16 号种子队时,FiveThirtyEight 写道,16 号种子没有更早赢得比赛是不太可能的。

一个可能的改进是在每场胜利后,根据胜利相对于预期的差距来调整球队的实力。我想知道它是否会对事情有那么大的影响…我生成的模拟看起来都是合理校准的,尽管这只是我未经训练的眼睛。

就是这样!对于所有没有机会体验今年锦标赛的球员(尤其是老年人)和球迷,我希望这个工具能帮助你梦想本可以成为的锦标赛。

在你走之前…

如果你喜欢这篇帖子,你可能也会喜欢我的其他关于体育和数据的帖子——给我一个关注,当我发布更多帖子时会通知我:

关于数据科学,新冠肺炎能教给我们什么

原文:https://towardsdatascience.com/what-covid-19-can-teach-us-about-data-science-1e940f258f9e?source=collection_archive---------47-----------------------

疫情给所有工作数据科学家的 3 个教训

米卡·鲍梅斯特在 Unsplash 上的照片

新冠肺炎·疫情事件是一个悲剧,但也是一个启发性的案例,说明了数据(以及统计和预测模型)在危机中的价值。它也暴露了社会与数据关系中的许多缺陷。虽然作为一名数据科学家,看到“基于代理的模拟”和“指数增长率”等术语成为主流令人兴奋,但看到统计数据以如此不科学的方式应用也令人沮丧。在本文中,我将探讨我从疫情中学到的三个数据科学经验,以及我们如何更广泛地应用它们。

1.大多数人不理解概率

作为人类,我们识别模式的能力无疑对我们这个物种非常有用,但它也会把我们引入歧途。事实是,很多统计数据是不直观的,当谈到概率时,常识往往会误导人。为了说明这一点,让我们考虑洗牌的行为(大多数人已经做了很多次,并建立了一些直觉)。我最近让我的 10 个朋友估计一下将一副牌洗牌成一个全新的顺序(即人类历史上任何一副牌都从未出现过的顺序)的概率。大多数人猜测答案是 0,并推断现在肯定已经看到了所有可能的卡片组合。一些人怀疑这是一个骗局,估计概率可能更高,但没有人提出 0.2 以上的概率。正确的答案是,每次你洗一副牌(假设真的是随机洗的),你几乎可以保证这是第一次有任何一副牌按照这个顺序洗。一副 52 张牌可能的唯一排列总数是 52!≈ 8x10⁶⁷或

80000000000000000000000000000000000000000000000000000000000000000000.

从上下文来看,如果自宇宙诞生以来,今天活着的每个人每秒都洗一副牌,那将只相当于相对较小的 3x10 ⁷洗牌或

3000000000000000000000000000.

我们无法解释概率的另一个著名例子是 2016 年美国总统大选。在大选前,政治民调机构认为唐纳德·特朗普有大约 25%的机会击败希拉里·克林顿,但当然他最终获胜了。这导致公众谴责民调公司和专家“搞错了”。现在要明确的是,这次选举确实提出了一些关于如何进行民意调查的合理方法问题,但这并不能改变这样一个事实,即当发生概率为 0.25 的事情发生时,我们永远不应该感到惊讶。抛两次硬币,两次都正面朝上(几率相同的事件)会引发类似的愤怒吗?

我们概率盲点的结果是,我们擅长识别模式,但不擅长从这些模式中得出结论。就疫情而言,这使我们特别容易受到关于新型冠状病毒病毒传播的政治诡辩和错误信息的影响。在过去的 6 个月里,我看到了无数的“分析”,其中许多都发表在主要的新闻媒体上,打破了统计学的基本规则。

2.理论很重要

随着数据科学在过去几年中的普及,进入门槛已经大大降低。现在,任何具有基本编程背景的人都可以访问庞大的公共数据集,并摆弄深度学习模型。虽然总的来说,我认为这种民主化是一种积极的趋势,但我确实担心人们会忽略数据科学中严格的、可能不那么令人兴奋的方面,如统计学、概率论和数学。我想起了一句古老的谚语一知半解是一件危险的事情,因为如果没有对这些主题的良好理解,一个业余数据科学家只是有更多的工具来寻找虚假的相关性。新冠肺炎疫情已经表明,滥用统计数据不仅是不科学的,而且可能是危险的。这篇文章没有足够的篇幅来探讨我在这个疫情中看到的所有谬误的推理,但是下面的两个例子相当典型。

杰斯温·托马斯Unsplash 上拍摄的照片

例 1:菲尔博士

菲尔博士最近通过比较新冠肺炎的死亡人数和每年 360,000 的游泳池溺水死亡人数,质疑了封锁措施的必要性。首先,我不知道这个数字从何而来。来自疾病控制和预防中心的数据表明,美国每年意外溺水的真实人数更接近 3500 人。

菲尔博士的推理不合逻辑的第二个原因是,与新冠肺炎不同,意外溺水的风险不是倍增的(即,它不会像病毒一样传播)。如果我们在一周内观察到 100 例溺水死亡,我们没有理由期望这个数字在下一周翻一番,再下一周再翻一番。如果没有遏制疾病传播的政策,这就是你在新冠肺炎会看到的那种增长。

菲尔博士在这里犯的第三个错误是暗示溺水死亡和新冠肺炎死亡来自相似的概率分布。这显然是不真实的。正如 Taleb、Bar-Yam 和 Cirillo (2020)所显示的,流行病是厚尾的,而游泳池死亡不是[2]。考虑这个病态的假设:如果有人告诉你 10%的美国人口在一年内死亡,你会认为他们更有可能死于新冠肺炎或意外溺水吗?溺水死亡(尽管是悲剧)不会造成生存威胁,但流行病会。

示例 2:任意叠加曲线

我观察到的另一个现象是人们任意叠加趋势图,胡乱外推。

这条推文中的情节比较了澳大利亚新南威尔士州和维多利亚州社区传播的确诊病例数量,并广为流传。这里明显的暗示是新型冠状病毒在新南威尔士州的传播速度比一个月前在维克的传播速度要快。下面是我对这张图表的两个担忧:

  • 1 个月的滞后是任意的,看起来是被选择的,因为曲线在视觉上是一致的。我的第一直觉是使用一个滞后时间,它等于维克的第一例社区传播和新南威尔士州的第一例社区传播之间的天数。也许有比这更好的选择,但是你当然不应该操纵数据来适应你的假设,然后说“嘿,看数据多么支持我的假设!”。
  • 每天的计数太少,无法得出关于社区传播的有意义的结论。该图表的创建者认为,新南威尔士州社区的真实传播率高于一个月前的维克,但新南威尔士州 7 天平均计数的一半不到每天 1 例!即使没有完全理解病毒如何在社区中传播的机制,我们也观察到每天的计数非常嘈杂,尤其是当这些计数很低时。从噪音中推断是不好的做法。

下面我重新制作了同样的图表,但是加入了最新的数据,我们可以看到趋势完全不同。请注意,为了保持一致性,我在 y 轴上使用了对数标度,但这实际上掩盖了这些曲线的不同之处。

作者图片

3.数据科学不是魔法

即使我们避免所有这些统计上的谬误,我们也必须诚实地说出我们对这种病毒的实际了解程度;不是很喜欢。说到底,不管你的模型有多复杂,你的技术有多先进,如果你没有关于你正在建模的系统的良好数据,你的结果就会打折扣。

我观察到的大多数病例数和死亡数预测都使用了统计和/或流行病学模型,但成功率很低。5 月份对 IHME 模型的一项调查(该模型为美国的政策决策提供了信息)发现,“该模型隐含的不确定性水平令人怀疑其在推动健康、社会和经济政策发展方面的有效性”[3]。本文的重点不是建模的技术细节,但是无论选择哪种方法,预测者在设计他们的模型时都不可避免地需要做出许多假设。模型设计的不确定性部分是由于以下领域的知识空白。

病毒的机制

我们每天都在更多地了解这种病毒的本质,但仍有许多我们不了解的地方。在撰写本文时,关于超级传播者的作用、无症状传播、气候等问题仍然存在。在病毒的传播中。直到最近,大多数文献表明,病毒主要在表面传播,气溶胶传播不是太大的问题。在最新的研究中,这种情况发生了逆转。

人类行为

由于病毒是由人传播的,模拟人类行为将是许多预测模型的核心,但这是众所周知的困难,特别是在像疫情这样的新情况下。建模者不仅需要假设人们将如何应对不断增长的病例数和公共卫生政策,病毒的传播对异常值也非常敏感。以韩国为例,在“31 号病人”感染之前,该国的病毒得到了很好的控制。据估计,这个人对超过 5000 人的感染负有责任(这是任何模型都无法预测的结果)[4]。

政策

如果病毒存在于一个静态系统中,从历史数据中建立传播模型会相对简单。不幸的是,事实远非如此。政府政策是动态变化的,人们对这些政策的反应也是如此,这就产生了一个类似于向移动目标射击的建模任务。当试图预测政策 X 的影响时,一个简单的方法是观察政策 X 在其他国家实施时的影响。虽然从过去的结果中吸取经验教训非常重要,但我们也需要记住,各个地区在许多方面可能存在巨大差异,包括人口、地理、气候、测试率、文化、政策实施和政策合规性。例如,与日本等亚洲国家相比,美国人对口罩的态度截然不同。

明确地说,我一点也不批评这些预测者正在做的重要工作。我只想解释为什么建模任务如此困难,为什么立法者和公众不应该期待奇迹。好消息是,我们收集的研究和数据越多,这些模型就会变得越好。

结论

本文概述的经验教训不仅适用于新冠肺炎疫情。最后,我将简要解释我认为这些见解如何能够更普遍地应用于数据科学工作。

  1. 大多数人不理解概率:数据科学家经常与非技术利益相关者一起工作,并需要交流复杂的概念。这个疫情已经证明了数据是多么容易被误解,所以我们有责任在报告分析结果时保持清晰和诚实。
  2. 理论很重要:虽然统计和概率可能不是数据科学中最令人兴奋的方面,但所有从业者都需要理解这些主题。如今,在没有真正理解它们如何工作的情况下,训练非常复杂的模型是可能的,但这并不意味着你应该这样做!没有统计测试、置信区间、随机变量和大数定律等概念的知识,你真的是在盲目飞行。
  3. 数据科学并不神奇:在过去的十年里,媒体对计算机视觉、推荐引擎和语音识别等领域的进步进行了大量热情报道。不管是好是坏,这导致了一种看法,即数据科学家可以创造奇迹,但事实是,许多项目就像建模新冠肺炎疫情:复杂,缺乏数据,耗时。对利益相关者坦诚并设定现实的期望是很重要的。

参考

[1]美国疾病预防控制中心,意外溺水:获取事实 (2016),https://www . CDC . gov/homeandrecreationalsecurity/water-safety/water injuries-fact sheet . html

[2] N. Taleb,Y. Bar-Yam 和 P. Cirillo,关于厚尾变量的单点预测 (2020),国际预测杂志

[3] R. Marchant,N. Samia,O. Rosen,M. Tanner 和 S. Cripps,边走边学——检验新冠肺炎每日死亡人数预测的统计准确性 (2020),新冠肺炎电子版

[4] Y. Shin,B. Berkowitz 和 M. Kim,韩国教会如何助长冠状病毒的传播 (2020 年),《华盛顿邮报》

新冠肺炎教给我的分析方法

原文:https://towardsdatascience.com/what-covid-19-has-taught-me-about-analytics-980bc0751540?source=collection_archive---------47-----------------------

内部 AI

后 Covid 世界将需要一些关于分析的新思维

图片由:【Pexels.com】上的马库斯·斯皮斯克

关于政府对新冠肺炎危机的反应,已经有很多报道,大部分都带有批评。有几个国家似乎做对了,其中一个是南非,南非的反应受到了世卫组织的赞扬。经过一个多月的艰难封锁后,南非总统西里尔·拉马福萨先生宣布了一些开放南非经济的声明。政府决定采取一种基于风险的方法,据 Ramaphosa 称,这种方法将以科学和数据为指导。

这让我想到数据和分析是如何在最厌恶信息的家庭中变得根深蒂固的。人们在谈论感染率每百万人口的死亡率,甚至有人引用 Worldometer 等数据聚合网站的统计数据。虽然你不能否认数据和分析对抗击这种疾病所做的贡献,但我不禁反思了我们作为分析从业者仍然需要关注的一些领域,因为它与业务有关。

数据整合

很明显,整合了来自几个来源(医疗保健机构、医学实验室等)的数据。)是新冠肺炎决策者的绊脚石。政府和其他组织一直在争分夺秒地从这些来源获取足够的数据,而将这些数据集成到一个中央存储库中似乎是一个相当大的挑战。

与任何分析人员交谈,他们都会确认这是房间里的大象。我们还没有能力充分整理出跨系统的集成,因此获得一个大的图景仍然是一场斗争。尽管我们经常满足于现状,但需要定期信息流的情况会凸显我们在数据集成方面的不足。因此,从集成的角度来看,必须对业务关键型数据进行优先级排序。否则,关键时刻的快速决策将受到影响。

人工智能仍被数据独裁所扼杀

人工智能在金融和保险等特定行业已经相当成熟,然而,在其他行业的采用却非常缓慢。这个疫情突显了医疗行业人工智能的缺乏,这对我们其他人来说也应该是一个危险信号。

人工智能开发的核心原则之一是足够和相关的数据集,因此数据民主化至关重要。显然数据隐私在当前危机的数据民主化缺失中扮演了重要角色,然而,对于我们其余的人来说,仍然有一个筒仓式的数据处理方法的合理理由非常少。通过数据民主化可以释放的价值远远超过对职能部门内部的某些信息进行保密的需要。这从根本上改变了组织对数据及其用途的看法,并为数据成为所有人的共享资产奠定了基础。任何经理都不应该完全控制他们部门的数据,并阻止数据科学家探索和挖掘有价值的见解。

一旦清除了这个绊脚石,数据科学家和分析从业者就可以专注于使用数据来开发高级分析模型,从而为整个组织增加价值,从而消除局部优化。

云迁移需要快速跟踪

云给一些决策者带来了恐惧,主要是因为缺乏理解。这种担心的主要原因是数据隐私可能会受到损害,公平地说,这是正确的。也就是说,对身体活动的限制凸显了本地解决方案对现代劳动力的低效性。

过去几周,世界上很大一部分工作人口被迫进行远程工作,那些几乎没有基于云的基础设施的人感到难以置信的沮丧。随着远程工作的优势逐渐显现,决策者将不得不投资云迁移,以便从远程位置提供更加协作的工作环境。对于那些使用数据集将标准硬件推向极限的人来说尤其如此。

诺亚规则将是分析成功的关键

我的老板最近向我介绍了沃伦·巴菲特提出的诺亚规则。该规则规定:

“预测下雨不算,造方舟才算”

后 Covid 世界将会是一个没有多少现金可以挥霍的世界,因此性感节目将会被关闭。幸运的是,多年来,我们在分析界一直在驾驭与我们的职业相关的浪潮。我们已经获得了大量的投资,也有很多关于分析就像是商业成功的圣杯的文章。很多宣传都站得住脚,但太多的分析项目从来没有增加切实的价值,或者只是无限期地停留在概念验证模式。

因此,我们需要超越预测,专注于让用例跨越界限。但更重要的是,我们必须与利益相关方合作,确保分析的价值在商业中得到释放。这通常意味着与企业内的执行职能部门建立更紧密的工作关系,以确保业务流程、规划、预算和运营与任何花哨的数据科学模型一起考虑。否则,分析将会慢慢变回一种功能性能力,慢慢消亡。

数据素养是一个比我们想象的更大的问题

许多著名的媒体来源都声称感染率,无论是增加还是减少。我也观察到相当多的人在 LinkedIn 等论坛上评论锁定的成功。对我来说,有一件事变得非常清楚,那就是仍然存在一个巨大的数据素养问题。我们每天面对的数据不是感染率的反映,而是确诊感染的反映。你必须考虑结合感染率进行的测试数量,才能做出任何结论。在比较一个国家和另一个国家时,同样的逻辑也适用。绝对数字并不总是说明问题,一个恰当的例子是比利时,比利时记录了每百万人口中最多的艾滋病死亡人数。

作为数据从业者,我们不仅需要对我们收集用于分析的数据更加挑剔,而且我们还需要花费更多的精力来教育数据的消费者,让他们了解数据的局限性。我们还需要更多地了解数据偏差,尤其是在开发依赖数据偏差的模型时。真正希望成为洞察力驱动的组织将不得不投资于决策者的教育项目,更具体地说是简单数据和统计基础的教育项目。这不仅能让他们提出正确的问题,还能确保从分析结果中获得正确的见解。

Spotify 播客中正在讨论哪些与 Covid 相关的话题?

原文:https://towardsdatascience.com/what-covid-related-topics-are-being-discussed-in-spotify-podcasts-bbc7eb9a3f1?source=collection_archive---------65-----------------------

从 Spotify API 检索数据,使用 LDA 算法进行主题建模

由于最近的新冠肺炎疫情,我在过去的 3 个月里一直呆在家里,一直在寻找在家自娱自乐的方式。听 Spotify 播客已经成为我周末的例行公事,同时重拾我的老爱好钩针编织。然后我就在想,Spotify 播客宇宙是什么样的?

免责声明:Spotify API 数据检索的代码大部分是根据来自Sam Brady的源代码完成的。LDA 建模大多是跟随 机器学习加 的教程完成的。两者都经过一些修改后使用。(谢谢!)

从 Spotify API 获取数据

令我兴奋的是,Spotify 已经有了一个开发者 API ,我们可以用它从 Spotify 获取数据,或者为 Spotify 用户触发某些动作。我们需要做的只是注册到网站,创建一个应用程序,并获得 API 令牌。然后,我们可以使用 Python 中的spotipy包从 API 中检索数据。

在这里,我使用的是萨姆·布雷迪的源代码(谢谢!),只需稍加修改即可获得与 Covid 相关的播客剧集列表。我使用了两种方法:

  • 获取包含 Covid 相关术语的播客节目,然后获取这些节目的所有剧集
  • 获取包含 Covid 相关术语的所有剧集

导入包和定义

在这里进口必需品。基本上我们将使用spotipyjson requests包。

import pandas as pd
import numpy as npimport json
import requests
import urllib.parseimport spotipy.util as util

接下来,我们定义与 Spotify API 的连接。

# Get your client id, secret key, and redirect URI from your application [https://developer.spotify.com/dashboard/applications](https://developer.spotify.com/dashboard/applications)client_id = 'xxxxx'  #<----------------- YOUR ID HERE

client_secret = 'xxxxx' #<----------------- YOUR SECRET HEREusername = 'xxxxx'      #<----------------- YOUR USERNAME HEREscope = 'user-library-read' #<------------- depends on your needs, you can select different scope [https://developer.spotify.com/documentation/general/guides/scopes/](https://developer.spotify.com/documentation/general/guides/scopes/)redirect_uri = '[https://developer.spotify.com/dashboard/applications/[application_id]'](https://developer.spotify.com/dashboard/applications/24c33183a3f54ba7893c740aac55d9ab')token = util.prompt_for_user_token(username=username, 
                                   scope=scope, 
                                   client_id=client_id,   
                                   client_secret=client_secret,     
                                   redirect_uri=redirect_uri)

获取播客节目

在这里,我们将获得预先选择的与 covid 相关的关键字(“科罗纳”、“Covid”、“锁定”、“隔离”、“疫情”)的播客节目。结果被添加到数据框中以供进一步研究。

# enter term to search here
search_list = ['corona', 'covid','lockdown','quarantine','pandemic']# search endpoint
endpoint_url = "[https://api.spotify.com/v1/search](https://api.spotify.com/v1/search)?"# PERFORM THE QUERYid_list = []
name_list = []                                         
desc_list = []
publisher_list = []
languages_list = []type = 'show'    
market  = 'US'for i in range(len(search_list)):
    search = search_list[i]
    print(search)
    offset = 0                                   
    more_runs = 1        
    counter = 0  
    limit = 50# max offset is 2000 including limit
while((offset <= 1950) & (counter <= more_runs)):query = f'{endpoint_url}'
    query += f'&q={search}'
    query += f'&type={type}'
    query += f'&offset={offset}'                      
    query += f'&market={market}'
    query += f'&limit={limit}'response = requests.get(query,                                           # get request
                   headers={"Content-Type":"application/json", 
                            "Authorization":f"Bearer {token}"})  
    json_response = response.json()                                           # as a json filefor i in range(len(json_response['shows']['items'])):                      # loop through json
        if json_response['shows']['items'][i] is not None:
            id_list.append(json_response['shows']['items'][i]['id'])               # pull out info from json
            name_list.append(json_response['shows']['items'][i]['name'])           # into empty lists
            desc_list.append(json_response['shows']['items'][i]['description'])
            publisher_list.append(json_response['shows']['items'][i]['publisher'])
            languages_list.append(json_response['shows']['items'][i]['languages'])

    more_runs = (json_response['shows']['total'] // 50 )            # how many more runs of 50 are needed?       

    counter += 1                                                    # increase conditional counter by 1

    offset = offset + 50# set up a dataframe from the listspodcasts_show = pd.DataFrame()podcasts_show['show_id'] = id_list
podcasts_show['show_name'] = name_list
podcasts_show['show_description'] = desc_list
podcasts_show['show_publisher'] = publisher_list
podcasts_show['show_language'] = languages_list

下面是上面代码的结果。

在这里我找到了 1998 年的节目,但是有些不是英文的,我无法分析。因此,在下一步中,我将只过滤英语节目。

过滤英语播客

有三种英语定义:通用英语(en)、美国英语(en-US)和英国英语(en-GB)

en_podcasts = pd.DataFrame()
en_podcasts = podcasts_show[podcasts_show.apply(lambda x: 'en' in x['show_language'], axis=1)]en_podcasts_us = pd.DataFrame()
en_podcasts_us = podcasts_show[podcasts_show.apply(lambda x: 'en-US' in x['show_language'], axis=1)]en_podcasts_gb = pd.DataFrame()
en_podcasts_gb = podcasts_show[podcasts_show.apply(lambda x: 'en-GB' in x['show_language'], axis=1)]en_podcasts = en_podcasts.append(en_podcasts_us)
en_podcasts = en_podcasts.append(en_podcasts_gb)en_podcasts

结果被缩短为 995 个仅用英语显示的节目。

要从上面的节目中获得剧集列表,并获得所有带有 Covid 相关术语的播客剧集,只需对上面的代码进行轻微修改(在type语法上)。使用的完整代码可以在找到

初始数据探索

从上面的数据检索方法中,我们得到了 Spotify 中与 Covid 相关的播客的一些元数据。这些元数据包括发布日期、节目名称和描述,甚至是剧集的 30 秒音频预览。

它什么时候开始流行?

虽然 Covid 案例在 2019 年 12 月下旬就已确定,但 Spotify universe 实际上直到 2020 年 3 月 6 日左右才谈论它,我们看到发布的剧集数量从之前的每天不到 20 集激增到超过 40 集。这与 2020 年 3 月 5 日开始的美国发现新冠肺炎病例相一致。

剧集数持续增加,2020 年 5 月中旬达到 ~270 集/天。尽管这一趋势在最近几周略有下降,但仍高于 180 集/天。

按发布日期排列的总集数(忽略 3 月 7 日的高峰,一个频道在那一天回填了他们的内容)

美国新冠肺炎每日新病例(来源:谷歌/维基百科)

从播客剧集图表中看到另一个有趣的模式?不知何故,这些播客在工作日发布内容(比周末高出 2-3 倍)。也许周末也是播客的节日?😄

哪个频道的内容最多?

调查节目出版商和他们的节目,发现有一些出版商有不止一个节目讨论 Covid 相关的问题。例如,iHeartRadio 有三个与 Covid 相关的讨论节目:重开美洲(每日新闻)、妇女(与疫情战斗的女性前线)、与凯蒂和博兹一起回到商业(商业会谈)。

顶级播客出版商及其与 Covid 相关的节目

查看播客内容类别,我们发现有几个关键内容类别的集数最高:

  • 宗教内容:布道、宗教鼓励
  • 新闻与研究:每日更新关于疫情的最新案例、影响和研究
  • 娱乐:有影响力的脱口秀,隔离黑客
  • 鼓励:来自因封锁/危机而抑郁的人的心理健康支持

集数最高的播客节目

月月字云

我们将在分析的第 2 部分更深入地挖掘这个主题:)

每集多长?

在大多数情况下,这些播客从15-49 分钟长。还有一些剧集的运行时间更长。观察这一持续时间与听众点击率或衰减的关系可能会很有趣(正如我们所知,一些人可能会对长时间的节目感到厌倦)。但是,Spotify API 中没有这些数据,因此无法对其进行进一步分析。

播客时长

什么是 LDA?

引用 algorithmia ,LDA 是一种算法,它获取一组文档(任何由 up 文本组成的东西)并返回与这些文档最相关的几个主题(由几个单词组成)

主题被表示为单词的加权列表。基于模型的这 3 个主要参数来计算这些单词的权重:

  • 主题的数量
  • 每个主题的字数
  • 每个文档的主题数

该模型的输出是一个主题列表,其中包含与文档中的相关的单词及其出现次数

使用 LDA 进行 Spotify 播客主题探索

数据清理

任何类型的数据分析和建模的第一步都是进行数据清理。在这种情况下,使用的数据清理技术是从文档中删除脱离上下文的字符(标点、数字、字母、空格)。这里我使用的是 Python 中gensim包的gsp模块。

from gensim import utils
import gensim.parsing.preprocessing as gsp# remove punctuation, short words, whitespaces, numeric
filters = [
           gsp.strip_punctuation,
           gsp.strip_multiple_whitespaces,
           gsp.strip_numeric,
           gsp.strip_short
          ]def clean_text(s):
    s = s.lower()
    s = utils.to_unicode(s)
    for f in filters:
        s = f(s)
    return sdf2_clean = pd.DataFrame()
df2_clean['notes'] = df2['ep_description'].astype(str).map(lambda x: clean_text(x))

下面是清洗的结果

播客剧集描述清理后

数据转换

LDA 算法计算文档中定义的每个标记的权重。因此,我们需要做的第一件事是创建要加权的令牌,可以按如下方式完成:

  • 分词单词
  • 从记号中创建 n-grams (包含短语作为主题的一部分),推荐使用二元模型和三元模型
  • 删除停用词(以及通用词,在这种情况下我会删除播客和剧集之类的词,这很常见)
  • 引理令牌,让话题进入核心形式

上述步骤的代码可在这里找到

之前的:播客剧集描述的实际文本

之后的:转换后的分词

建立模型

接下来,在预处理完成后,我们创建一个数据字典和语料库来输入到 LDA 模型中。在这个过程中,我们使用单词包来计算文档中每个语料库的频率。

# Create Dictionary
id2word = corpora.Dictionary(data_lemmatized)# Create Corpus
texts = data_lemmatized# Term Document Frequency
corpus = [id2word.doc2bow(text) for text in texts]# View
print(corpus[:1])# Human readable format of corpus (term-frequency)
[[(id2word[id], freq) for id, freq in cp] for cp in corpus[:1]]

接下来,直接进入模型定义。这里我们在gensim包中使用 LDA 算法,初始主题数为 20。请注意,这可以进一步调整。

# Build LDA model
lda_model = gensim.models.ldamodel.LdaModel(corpus=corpus,
                                           id2word=id2word,
                                           num_topics=20, 
                                           random_state=100,
                                           update_every=1,
                                           chunksize=100,
                                           passes=10,
                                           alpha='auto',
                                           per_word_topics=True)# Print the Keyword in the 10 topics
pprint(lda_model.print_topics())
doc_lda = lda_model[corpus]# Compute Perplexity
print('\nPerplexity: ', lda_model.log_perplexity(corpus))  # a measure of how good the model is. lower the better.# Compute Coherence Score
coherence_model_lda = CoherenceModel(model=lda_model, texts=data_lemmatized, dictionary=id2word, coherence='c_v')
coherence_lda = coherence_model_lda.get_coherence()
print('\nCoherence Score: ', coherence_lda)

有一个较低的困惑度分数和一个较高的连贯性分数是好的。这里我们发现模型的一致性分数很低,只有 0.28。为了改善这一结果,可以对模型进行超参数调整。

初始 LDA 的一致性分数

超参数调谐

为了进一步改进模型,我们正在进行模拟,以获得给最佳一致性值的一些主题。从模拟中,我们看到的最佳主题数是 8 ,这给出了大约 0.41 的相干值。

主题的最佳数量

根据这一发现,我们进行了模型再训练(主题的更新数量为 8),并发现了以下结果。

每个主题群的热门主题

对于某些群集,更容易推断出正在讨论的主题。比如在题目 4 中,看关键词(商业、金钱、公司、产业),我们可以推断这里讨论的题目与疫情时代的经济学有关。

为了进一步探索,我们可以使用“pyLDAvis”来可视化相关的主题和术语。

# Plotting tools
import pyLDAvis
import pyLDAvis.gensim  # don't skip this
import matplotlib.pyplot as plt
%matplotlib inline# Visualize the topics
pyLDAvis.enable_notebook()
vis = pyLDAvis.gensim.prepare(lda_model_2, corpus, id2word)
vis

主题 5 的 PyLDAvis 可视化

估价

我们可以利用 LDA 可视化,进一步探索每个文档的关键主题,以及主题在文本中的分布。

主题在文档中的分布,按出现次数排序

综上所述,我们可以将 Spotify 播客中讨论的主题进一步分类如下。

Topic 0 : All/Generic news introduction
Topic 1 : Pandemic case updates
Topic 2 : Personal impact (work, family life)
Topic 3 : Encouragement and support
Topic 4 : Financial impact (business and industry)
Topic 5 : Personal stories (let go, life, love)
Topic 6 : Social implications (crises, strike, history)
Topic 7 : Entertainment (sport, game)

有趣的东西,是吧?

结论

相当长的探索,在这篇文章中,我们探索了使用 Spotify API 检索具有 Covid 相关主题的播客剧集。我们发现了一些有趣的见解:

  • 播客在三月的第一周开始上升,在五月中旬达到高峰,这与美国的 Covid 病例趋势一致
  • 大部分都是在工作日发布!
  • 总集数最高的播客频道:(布道)****娱乐(名人脱口秀)鼓励****
  • 热门播客剧集话题:新闻介绍 (25%),对个人生活的影响 (18%),疫情案件更新 (17%),个人故事 (13%),娱乐 (11%),财务影响 (6%)

有兴趣探究并重现这一分析吗?你可以去 my GitHub 仓库查看完整的源代码。

有哪些数据工程师大学不学的东西?

原文:https://towardsdatascience.com/what-data-engineers-dont-learn-at-school-e8c10b25e804?source=collection_archive---------38-----------------------

来源:Matthis(Pexels)的一所学校校园的红色建筑

我已经做了六年多的数据工程师,我陪过几个初级工程师,每一次都让我想起我的早年。我们都会犯同样的错误,因为有些核心知识是我们在大学里学不到的。

生产用途管道

在大学,我们通常会有一些持续时间有限的“项目”,因此,我们没有时间去学习如何将我们的大学项目投入生产以及如何监控它们或者什么是热修复以及如何做。

我们在现场、实习或我们的第一份工作中学到了所有这些。为了加快学习过程,一个有经验的开发人员可以向初级开发人员传授有助于生产目的的最佳实践。

测试

我们在大学学习测试,不同种类的测试和代码设计原则。然而,不知何故,在开始时,很难找到小的可测试代码单元,我们倾向于在比需要的更大的数据集或比需要的更大的代码部分上进行测试。

找到可以测试的正确代码单元,并以一种易于测试的方式分割代码这是可以通过实践和阅读他人的代码来学习的。

“数据工程”是一个很大的领域

数据工程可能意味着不同的技术取决于你工作的公司/团队。

在大学,我们正在学习一些数据处理的核心概念。然而,技术的快速发展正迫使大学专注于该领域的某些部分,而将其他部分放在一边。

根据公司和大学的不同,初级数据工程师可能听说过/使用过某些概念。然而,众多的技术使得在选择初级数据工程师时需要妥协,并且需要加深初级数据工程师在多种技术方面的知识。

聚焦一项技术图片来源 : 詹娜·哈姆拉

“数据工程”是一个后端角色

数据工程师没有创造任何立即可见的东西,从这个意义上说,他有点像数据角色世界中的后端开发人员如果没有其他数据角色(数据科学家、数据可视化专家、..).

呈现包含数据服务的仪表板或移动应用程序比呈现数据管道更容易。呈现推荐引擎的功能部分比呈现为使其能够处理所有数据而进行的数据优化更容易。

在大学里,由于每个人都在展示他们为一个项目所做的工作,我们不一定能看出区别,但在公司里,这种区别可能是惊人的。在一家公司,这意味着拥有Maxime Beauchemin在他的文章中所说的。

Gif 来源

沟通很重要

当你开始成为一名开发人员或数据工程师时,你可能会认为沟通不是你工作的核心部分。

然而,这可能比您想象的更重要,因为不沟通意味着做出假设,而做出假设意味着项目没有回答客户的真正问题。

交付客户想要的东西— 图片来源

此外,我们通过提问学到的东西比我们自己去寻找更多。

包装

我选择了这五个核心知识,因为我认为这些领域是我自大学以来学到了很多,初级数据工程师也在努力学习的领域。

如果你想完成我的列表,请不要犹豫在下面评论,希望老师们会阅读这篇文章并相应地调整课程。

fintech 公司使用哪些数据资源来帮助他们高效运营?

原文:https://towardsdatascience.com/what-data-resources-are-used-by-fintech-companies-to-help-them-operate-efficiently-baba33cba564?source=collection_archive---------47-----------------------

了解金融机构使用的数据管理

卡洛斯·穆扎在 Unsplash 上的照片

要提高任何组织的绩效,数据的作用是不可或缺的。金融科技公司处理正确数据的能力为他们提供了巨大的竞争优势。这是因为人工智能(AI)算法可以处理这些数据,并为(I)更好地分配资源(ii)识别目标客户的人口统计数据(ii)实现客户需求和允许高质量的客户决策提供机会。因此,组织将一部分投资用于数据管理。

然而,有不同类型的金融科技公司,包括:个人金融、华尔街、加密、投资、借贷、支付和房地产。这些类别中的每一个都需要不同的数据集,这些数据集需要以不同的频率更新。根据 statista.com 的数据,到 2020 年 2 月,金融科技初创公司的数量将增加约 52%。因此,拥有关于“有用”数据的知识会让你在同领域的其他创业公司中获得竞争优势。

根据资本启动情况划分的不同金融科技行业[数据来源:2019 年福布斯]

严重依赖数据的大公司或组织的例子有亚马逊、谷歌和 facebook。当用户/客户浏览他们的平台时,他们收集他们的数据。这种普查使他们有优势获得关于他们的目标受众人口统计和他们的兴趣的信息。企业可以很容易地利用这些数据,通过应用人工智能和机器学习(ML),他们可以创造更好的产品,或许可以改善他们对客户的服务。回归分析和编程也可以预测未来事件。这些最终可以帮助公司提前计划并相应地分配资源。

数据科学中使用的基本术语

  1. 数据量 :是组织收集和存储的数据量,可用于其开发的 AI 算法的未来处理。

2。数据速率: 数据被处理的速率。有五种不同的数据速度类别。实时、近实时、批量、定制和分析。为了获得竞争优势,金融科技公司需要实时或接近实时的数据速度。不过也要看 fintech 公司的类别。例如,与华尔街、加密和投资相关的数据需要实时或接近实时地执行,因为该过程涉及到易变因素。然而,支付和贷款公司可以允许 1-2 个工作日来结算任何资金交易。这为避免任何欺诈交易提供了额外的优势。

美国宇航局在 Unsplash 上拍摄的照片

3。数据多样性: 是数据采集和处理过程中所涉及的数据的多样性。例如复杂系统很难精确建模和预测。股票价格是这个模型的完美反映。华尔街市场的自发行为会造成价格的突然大幅波动。一个“好消息或一项研究突破”可能导致股价指数级上涨,否则申请破产肯定会对股价不利。

  1. 数据即服务: 它涉及通过与数据提供商合作,聚合和提供对更广泛的公共和私有数据的访问。

  2. 分析即服务: 它利用高级分析生成预测模型。

Fintech 公司获取了哪些数据?

照片由粘土堤防溅板上拍摄

根据 a Schmidt et al. (2018),数据主要依赖于核心业务模式、关键活动和价值主张。金融科技公司使用消费者提供的数据组合,同时也依赖外部获取的数据进行补充。

支付金融科技公司通常专注于安全的在线支付解决方案。他们的大多数商业模式通常不要求存储个人客户支付数据,而是使用网上商店的交易数据。他们专注于优化与银行的交易和服务。安全和扫码支付选项是他们的首选,因为他们的收入取决于使用情况。某些支付公司只收取 3%的交易费。因此,对于支付平台来说,关注点从个人客户数据转移到优化和保护交易。

房地产金融科技公司专注于处理重要数据,并以可读的格式呈现给用户。他们执行内部描述性分析,以确定任何项目组合的风险回报分析。他们专注于从各种来源获取数据,并将其转换为客户端可读的格式。对于房地产金融科技公司来说,收入既取决于销售额,也取决于客户的使用量。同样,对于房地产,他们的数据的重点是分析和风险管理,以便他们的客户可以做出明智的投资。

数据量数据速度在处理华尔街金融科技应用时至关重要。仅纽约证券交易所(NYSE)每天就要处理超过万亿字节的数据。同样,外汇市场每天有近 5.1 万亿美元的交易,也需要实时或接近实时的数据。

帕特里克·韦森伯格在 Unsplash 上拍摄的照片

结论

金融科技公司目前面临的最大挑战之一是,他们的数据算法更适合解决技术问题,而不是针对他们的商业解决方案。一些人认为,部分原因是因为大多数数据科学家没有积极参与金融领域,并分享更多的技术观点。这最终导致难以有效地利用这些数据来实现业务增长和改进。尽管如此,该行业仍在大规模增长,自 2019 年以来,截至 2020 年,金融科技初创公司的增长率接近 52% ,因此,未来的机会和增长潜力很大。像任何其他组织一样,金融科技公司将通过利用机器学习从高效的数据管理中受益匪浅。

参考文献

[1]Ghasemaghaei,M. (2019)。理解大数据对企业绩效的影响:从概念上区分大数据特征的必要性。国际信息管理杂志,102055。

[2]约翰,史派西。(2017 年 11 月 28 日)。5 种数据速度。简单易行。
检索自:https://simplicable.com/new/data-velocity

[3]约翰·史派西。“数据多样性的 6 个例子。”Simplicable,2017 年 11 月 28 日。网络。接入方式:https://simplicable.com/new/data-variety

[4]J. Q. Trelewicz,“大数据和大资金:数据在金融领域的作用”,载于《IT 专业》第 19 卷第 3 期,2017 年第 8–10 页,doi: 10.1109/MITP.2017.45。

科学家需要了解 DevOps 的哪些数据

原文:https://towardsdatascience.com/what-data-scientists-need-to-know-about-devops-2f8bc6660284?source=collection_archive---------17-----------------------

使用持续集成(通过 GitHub Actions)构建自动模型训练系统的哲学和实践指南。

独角兽!一个神话般的数据科学家,他可以编码,编写单元测试,并在逻辑回归可以做到的时候抵制深度神经网络的诱惑。由李中清通过 Unsplash 拍摄。

随着机器学习(ML)在过去几年的快速发展,开始 ML 实验变得非常容易。多亏了像 scikit-learnKeras 这样的库,你可以用几行代码制作模型。

但是,将数据科学项目转化为有意义的应用比以往任何时候都更难,比如告知团队决策或成为产品一部分的模型。典型的 ML 项目涉及如此多不同的技能组合,对于任何一个人来说,掌握它们都是具有挑战性的,如果不是完全不可能的话——如此困难,罕见的数据科学家也可以开发高质量的软件并扮演工程师,被称为独角兽

随着该领域的成熟,许多工作将需要软件、工程和数学技能的结合。有人说他们已经

引用无与伦比的数据科学家/工程师/关键观察家 Vicki Boykis 在她的博客 中的话,数据科学现在不同了 :

越来越清楚的是,在炒作周期的后期,数据科学正逐渐向工程靠拢,数据科学家前进所需的技能不再那么可视化和基于统计,而更符合传统的计算机科学课程

为什么数据科学家需要了解 DevOps

那么,数据科学家应该学习众多工程和软件技能中的哪一项呢?我赌 DevOps 赢。

DevOps,一个由开发运营组成的综合体,于 2009 年在一次比利时会议上正式诞生。召开这次会议是为了应对科技组织两个方面之间的紧张关系,这两个方面在历史上经历了深刻的分歧。软件开发人员需要快速行动并经常试验,而运营团队优先考虑服务的稳定性和可用性(这些人让服务器日复一日地运行)。他们的目标不仅是对立的,而且是竞争的。

这听起来很像今天的数据科学。数据科学家通过实验创造价值:建模、组合和转换数据的新方法。与此同时,雇用数据科学家的组织因稳定性而受到激励。

这种分歧的后果是深远的:在最新的 Anaconda“数据科学状况”报告中,“不到一半(48%)的受访者认为他们能够展示数据科学对他们组织的影响”。据估计,数据科学家创造的绝大多数模型最终都被束之高阁。对于在创建模型的团队和部署模型的团队之间传递模型,我们还没有很好的实践。数据科学家和实现他们工作的开发人员和工程师拥有完全不同的工具、约束和技能。

DevOps 的出现是为了对抗软件中的这种僵局,回到开发者对操作的时代。这是非常成功的:许多 团队已经从每几个月部署一次新代码发展到一天几次既然我们已经有了机器学习 vs .操作,是时候考虑 MLOps 了——来自 DevOps 的适用于数据科学的原则。

引入持续集成

DevOps 既是一种理念,也是一套实践,包括:

  1. 尽你所能实现自动化
  2. 快速获得关于新想法的反馈
  3. 减少工作流程中的手动交接

在一个典型的数据科学项目中,我们可以看到一些应用:

  1. 尽你所能实现自动化。 将重复且可预测的数据处理、模型训练和模型测试部分自动化。
  2. 快速获得新想法的反馈。 当您的数据、代码或软件环境发生变化时,请立即在类似生产的环境中对其进行测试(也就是说,在生产环境中,一台具有您预期的依赖性和约束的机器)。
  3. 减少工作流程中的手动交接。 尽可能给数据科学家找机会测试自己的模型。不要等到有开发人员时才看到模型在类似生产环境中的表现。

完成这些目标的标准 DevOps 方法是一种叫做持续集成 (CI) 的方法。

要点是,当您更改项目的源代码时(通常,更改是通过 git commits 注册的),您的软件是自动构建和测试的。每个动作都会引发反馈。CI 经常与 Git-flow 一起使用,Git-flow 是一种在 Git 分支上构建新特性的开发架构(需要 Git 复习吗?试试这个。当一个特性分支通过了自动化测试,它就成为了被合并到主分支的候选者。

这是软件开发中持续集成的样子。

有了这个设置,我们就有了自动化——代码变更触发自动构建,然后进行测试。我们有快速反馈,因为我们很快得到测试结果,所以开发人员可以不断迭代他们的代码。因为所有这些都是自动发生的,所以您不需要等待其他人来获得反馈,这样就少了一次交接!

那么我们为什么不在 ML 中使用持续集成呢?一些原因是文化上的,比如数据科学和软件工程社区之间的交叉较少。其他的是技术性的——例如,为了理解模型的性能,您需要查看准确性、特异性和敏感性等指标。你可能会得到数据可视化的帮助,比如混乱矩阵或损失图。所以通过/失败测试不会减少反馈。理解一个模型是否被改进需要一些关于手边问题的领域知识,所以测试结果需要以一种有效的和人类可理解的方式被报告。

这是机器学习项目中持续集成的样子。由数据科学 Doggy 检查。

竞争情报系统是如何工作的?

现在我们将变得更加实际。让我们来看看一个典型的 CI 系统是如何工作的。对学习者来说幸运的是,由于 GitHub Actions 和 GitLab CI 等工具,障碍从未如此之低——它们有清晰的图形界面和适合首次用户的优秀文档。由于 GitHub Actions 对于公共项目是完全免费的,我们将在这个例子中使用它。

它是这样工作的:

  1. 您创建了一个 GitHub 存储库。您创建了一个名为。github/workflows,在里面,你放置一个特殊的。yaml 文件,其中包含您想要运行的脚本,
$ python train.py

2.您以某种方式更改项目存储库中的文件,然后 Git 提交更改。然后,推送至您的 GitHub 存储库。

**# Create a new git branch for experimenting**
$ git checkout -b "experiment"
$ edit train.py**# git add, commit, and push your changes**
$ git add . && commit -m "Normalized features"
$ git push origin experiment

3.只要 GitHub 检测到推送,GitHub 就会部署他们的一台计算机来运行你的. yaml 中的功能。

4.无论函数运行成功与否,GitHub 都会返回一个通知。

在 GitHub 存储库的 Actions 选项卡中找到它。

就是这样!这里真正巧妙的是,你使用 GitHub 的计算机来运行你的代码。您所要做的就是更新您的代码并将更改推送到您的存储库中,工作流就会自动发生。

回到特别节目。我在步骤 1 中提到的 yaml 文件——让我们快速看一下其中一个。它可以有你喜欢的任何名字,只要文件扩展名是。它存储在目录中。github/工作流。这里有一个:

# .github/workflows/ci.yamlname: train-my-model
on: [push]jobs:
   run:
      runs-on: [ubuntu-latest]
   steps:
      - uses: actions/checkout@v2
      - name: training
      run: |
       **  pip install -r requirements.txt
         python train.py**

有很多正在进行的操作,但大部分操作都是相同的——你可以复制和粘贴这个标准的 GitHub 操作模板,但在“运行”字段中填写你的工作流程。

如果这个文件在您的项目 repo 中,每当 GitHub 检测到您的代码(通过 push 注册)发生变化时,GitHub Actions 将部署一个 Ubuntu runner,并尝试执行您的命令来安装需求并运行 Python 脚本。请注意,您的项目报告中必须有工作流所需的文件——这里是 requirements.txt 和 train.py!

获得更好的反馈

正如我们前面提到的,自动训练很酷,但是以一种容易理解的方式得到结果是很重要的。目前,GitHub Actions 允许你访问跑步者的日志,这是纯文本。

GitHub 操作日志的打印输出示例。

但是理解你的模型的性能是棘手的。模型和数据是高维的,通常表现为非线性——这两样东西没有图片是很难理解的!

我可以向您展示一种将数据放入 CI 循环的方法。在过去的几个月里,我在 Iterative.ai(我们制作数据版本控制)的团队一直在开发一个工具包,以帮助将 GitHub Actions 和 GitLab CI 用于机器学习项目。它叫做连续机器学习(简称 CML),而且是开源免费的。

从“让我们使用 GitHub 动作来训练 ML 模型”的基本思想出发,我们构建了一些函数来给出比通过/失败通知更详细的报告。CML 帮助您将图像和表格放入报告中,就像 SciKit-learn 生成的这个混淆矩阵:

当您在 GitHub 中发出拉取请求时,会出现此报告!

为了制作这个报告,我们的 GitHub 操作执行了一个 Python 模型训练脚本,然后使用 CML 函数将我们的模型准确性和混淆矩阵写入一个 markdown 文档。然后 CML 把 markdown 文档传给了 GitHub。

我们的修订版。yaml 文件包含以下工作流(新添加的行以粗体显示以示强调):

name: train-my-model 
on: [push] 
jobs:  
   run:    
      runs-on: [ubuntu-latest]    
      **container: docker://dvcorg/cml-py3:latest**     
      steps:      
      - uses: actions/checkout@v2       
      - name: training        
        **env:  **        
           **repo_token: ${{ secrets.GITHUB_TOKEN }} **  
        run: |      

           # train.py outputs metrics.txt and confusion_matrix.png  
           pip3 install -r requirements.txt          
           python train.py                    

           # copy the contents of metrics.txt to our markdown report
           **cat metrics.txt >> report.md** # add our confusion matrix to report.md **cml-publish confusion_matrix.png --md >> report.md**            # send the report to GitHub for display  
           **cml-send-comment report.md**

你可以在这里看到整个项目库。注意我们的。yaml 现在包含了更多的配置细节,比如一个特殊的 Docker 容器和一个环境变量,以及一些需要运行的新代码。容器和环境变量细节在每个 CML 项目中都是标准的,不是用户需要操作的东西,所以把注意力放在代码上!

通过将这些 CML 功能添加到工作流程中,我们在 CI 系统中创建了一个更完整的反馈回路:

  1. 创建一个 Git 分支,并在该分支上更改您的代码。
  2. 自动训练模型并生成度量(准确性)和可视化(混淆矩阵)。
  3. 将这些结果嵌入到您的拉取请求的可视报告中。

现在,当您和您的团队决定您的变更是否对您的建模目标有积极的影响时,您有一个各种各样的仪表板要回顾。此外,Git 将该报告链接到您的确切项目版本(数据和代码)以及用于培训的运行人员和该运行的日志。非常彻底!不再有图形在你的工作空间中浮动,这些图形很久以前就与你的代码失去了联系!

这就是 CI 在数据科学项目中的基本理念。明确地说,这个例子是使用 CI 最简单的方法之一。在现实生活中,您可能会遇到更复杂的场景。CML 还有一些功能,可以帮助你使用存储在 GitHub 存储库之外的大型数据集(使用 DVC )并在云实例上训练,而不是默认的 GitHub Actions 运行器。这意味着你可以使用 GPU 和其他专门的设置。

例如,我用 GitHub Actions 做了一个项目部署一个 EC2 GPU,然后训练一个神经风格传输模型。这是我的慢性粒细胞白血病报告:

查看我在 https://github.com/iterative/cml_cloud_case 的 GitHub 项目资源库

您也可以使用您自己的 Docker 容器,这样您就可以在生产中模拟模型的环境。将来我会写更多关于这些高级用例的博客。

关于 ML CI 的最后思考

总结一下我们到目前为止所说的:

DevOps 不是一种特定的技术,而是一种哲学,一套从根本上重构软件开发的过程的原则和实践。它是有效的,因为它解决了团队如何工作和试验新代码的系统瓶颈。

随着数据科学在未来几年的成熟,理解如何将 DevOps 原则应用到他们的机器学习项目中的人将是一个有价值的商品——无论是从工资还是他们的组织影响来看。持续集成是 DevOps 的主要内容,也是为团队建立可靠的自动化、快速测试和自治文化的最有效的方法之一。

CI 可以用 GitHub Actions 或者 GitLab CI 这样的系统来实现,你可以用这些服务来构建自动化的模型训练系统。好处很多:

  1. 您的代码、数据、模型和培训基础设施(硬件和软件环境)都是 Git 版本。
  2. 您正在自动化工作,频繁地测试并获得快速的反馈(如果您使用 CML,还有可视化的报告)。从长远来看,这几乎肯定会加速你的项目的开发。
  3. CI 系统让团队中的每个人都能看到你的工作。没有人需要非常努力地寻找代码、数据和模型。

我保证,一旦您进入最佳状态,让您的模型训练、记录和报告由一个 git commit 自动启动将会非常有趣。

你会觉得好酷

做独角兽!

进一步阅读

  • 持续集成,马丁·福勒关于这个主题的开创性博客
  • 机器学习的持续交付(Continuous Delivery for Machine Learning),Martin Fowler 网站上的另一个优秀博客,关于为 ML 构建持续集成&持续交付系统
  • devo PS 手册,一本深受喜爱的指南,被推荐给几乎任何组织(ML、软件或其他)

模拟 50,000 个游戏为社交距离提供了一个案例

原文:https://towardsdatascience.com/what-dice-can-tell-us-about-the-spread-of-disease-f44ba9cf3fb?source=collection_archive---------72-----------------------

骰子能告诉我们关于疾病传播的什么

艺术由 Giphy 上的 CmdrKitten 创作

统计和概率构成了大多数预测模型的基础。在这里,我们在骰子游戏的概率和传染病的传播之间画出了平行线。对 50,000 个游戏的模拟证明了社交距离的存在。

骰子

让我们玩一个简单的骰子游戏。规则是:

  • 滚动单个骰子
  • 如果骰子落在 1 上,你输 100
  • 如果它落在任何其他数字上,你就赢 100

照片由乔纳森·彼得森Unsplash 上拍摄

有了这个设置,你有 5/6 的机会赢得每场比赛。这是很好的机会。如果你玩这个游戏 100 次,你会得到大约 6667 英镑的利润。

每局获胜的概率

现在,让我们对规则做一个小小的修改。

第二场

  • 滚动单个模具三次
  • 如果它落在任何一局的 1 上,你将失去 100
  • 如果它落在每局中的任何其他数字上,你赢得 100

现在每场比赛有三个卷。每一次掷骰的概率保持不变。但是,每场比赛获胜的概率已经从 83%下降到 57%。玩这个游戏 100 次,你可以预期只赚 1574 左右。

三掷获胜的概率

游戏 N

随着我们增加赢得每场游戏所需的掷骰数,即使每次掷骰的赔率仍然对你有利,赢的机会也会迅速减少。让我们称每场比赛的掷数为 N

在这里,我们运行一个蒙特卡罗实验,针对 N 的每个值模拟 1000 个随机游戏。前一千场游戏需要掷一次才能赢,接下来的一千场游戏需要掷两次,依此类推,每场游戏最多掷 50 次。在每一组游戏之后,我们绘制出每一个 N. 值的游戏获胜比例

蒙特卡洛模拟结果——赢的游戏占每场游戏掷骰数的比例。这里的代码

虽然每次掷骰的赔率对你有利,但随着每场游戏掷骰数的增加,赢得游戏的赔率会下降。

疾病

在之前的一篇文章中,我们介绍了传染病模型中的传播率的概念。

* [## 新冠肺炎什么时候会达到顶峰?

房室模型日常指南

towardsdatascience.com](/when-will-covid-19-peak-96a41939ac33)

我们用传染率来模拟疾病的传播。这包括两个部分:

  1. 传染性——与活跃病例密切接触后被感染的概率
  2. 接触率 —一个人与群体中其他人互动的频率

我们可以在传染病的传播和我们掷骰子游戏的组成部分之间找到相似之处。

我们的骰子游戏模拟显示了我们掷骰子越多,赢得游戏的几率是如何下降的。在这种情况下,获胜意味着在没有感染疾病的情况下离开互动。保持其他变量不变,我们离家越频繁,与他人接触越频繁,返回时未受感染的几率就越低。*

编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里

是什么将泛化能力强的神经网络与泛化能力差的神经网络区分开来?

原文:https://towardsdatascience.com/what-distinguishes-a-neural-network-that-generalizes-well-from-those-that-dont-8954f741d533?source=collection_archive---------56-----------------------

理解深度学习需要重新思考泛化

蒂娜·西尼亚在 Unsplash 上的照片

最近偶然看到这篇被广泛谈论的论文,“理解深度学习需要重新思考泛化(张等 2016) ”。这篇论文已经获得了 2017 年 ICLR 最佳论文奖。这提出了一个非常重要的问题“尽管有足够的能力来记忆输入,为什么深度神经网络会泛化?”

在这篇文章中,我将分享我的理解,并讨论不同的实验执行和结果以及影响。

在直接进入本文之前,我将解释几个有用的概念。

  • 泛化误差
  • 模型容量
  • 显式和隐式正则化

泛化误差

泛化误差被定义为训练误差和测试误差之差。

绿色曲线表示训练误差,红色曲线表示测试误差。这里我们可以看到模型过拟合,泛化误差逐渐增加。

模型容量

模型容量定义为模型适应不同类型输入的灵活程度。

通用逼近定理

具有单层的前馈网络足以表示任何函数,但是该层可能大得不可行,并且可能无法正确学习和概括。

—伊恩·古德菲勒, DLB

VAP Nik–Chervonenkis VC 尺寸

一个分类模型 f 带有一些参数向量 θ 被说成(x1,x2,…。,xn) 如果对于这些点的所有标签赋值,存在一个 θ 使得模型 f 在评估该组数据点时不会出错。

模型 f 的 VC 尺寸是可以排列的最大点数,以便 f 粉碎它们。再正式一点,就是最大基数这样一些数据点集合的基数*D***可以被 f 粉碎。

我们可以完美标记的数据点的最大数量称为模型的 VC 维。

https://en . Wikipedia . org/wiki/VAP Nik % E2 % 80% 93 chervonenkis _ dimension

在上面的例子中,我们有一个简单的线性分类器,我们希望将两个组(蓝色加号和红色减号)分开。对于四个输入数据点,存在一些可能的数据点组合,这些数据点不可能使用线性分类器分成两组。因此,线性分类器的 VC 维将是 3。

VC 维预测分类模型的测试误差的概率上界。

这里, D 是模型中的参数个数, N 是训练集的大小。

以上条件仅在 D < < N 时有效。这个概率上界对于深度神经网络是没有用的,在深度神经网络中,参数的数量通常多于数据点的数量(N<<D)

显式和隐式正则化

本文引入了两个新的定义,显式正则化和隐式正则化。辍学,数据增加,重量共享,常规正则化(L1 和 L2)都是显式正则化。隐式正则化是早期停止、批量正则化和 SGD。虽然论文中没有定义这种区别,但我觉得隐式正则化是指那些我们作为其他过程的副作用而实现正则化的过程。例如,我们使用 L1 专门用于正则化,因此显式。然而,我们使用批量规范化来规范化不同输入的激活,并且作为副作用,它也碰巧执行某种正则化,所以它是隐式正则化。

注:以上部分是我的理解,如有错请指正。

不同的随机化测试

在论文中,作者进行了以下随机测试:

  • 真实标签:未经修改的原始数据集。
  • 部分损坏的标签:独立于概率 p ,每个图像的标签被损坏为均匀随机类。
  • 随机标签:所有的标签都被替换成随机标签。
  • 混洗像素:选择像素的随机排列,然后将相同的排列应用于训练集和测试集中的所有图像。
  • 随机像素:不同的随机排列独立应用于每个图像。
  • 高斯:高斯分布(具有与原始图像数据集匹配的均值和方差)用于为每个图像生成随机像素。

随机测试的结果

https://bengio . abracadoudou . com/cv/publications/pdf/Zhang _ 2017 _ iclr . pdf

结果看起来非常有趣,因为该模型可以完美地拟合噪声高斯样本。它还可以完美地拟合带有完全随机标签的训练数据,尽管这需要更多的时间。这表明具有足够参数的深度神经网络能够完全记忆一些随机输入。这个结果非常反直觉,因为这是一个被广泛接受的理论,即深度学习通常会发现较低级别的特征、中级别的特征和较高级别的特征,如果模型可以记住任何随机输入,那么如何保证模型会尝试学习一些建设性的特征,而不是简单地记住输入数据。

正则化测试的结果

https://beng io . abracadoudou . com/cv/publications/pdf/Zhang _ 2017 _ iclr . pdf

第一张图显示了不同的显式正则化对训练和测试精度的影响。这里,关键的要点是使用正则化和不使用正则化在泛化性能上没有非常显著的差异。

第二张图显示了批处理规范化(隐式正则化)对训练和测试准确性的影响。我们可以看到,使用批量标准化的训练非常顺利,但并没有提高测试精度。

通过实验,作者得出结论,显式和隐式正则化都有助于提高泛化性能。然而,正则化不太可能是泛化的根本原因

有限样本表达能力

作者还证明了以下定理:

存在一个具有 ReLU 个激活值和 2n+d 个权值的两层神经网络,它可以在一个大小为 n d 维样本上表示任何函数。

这基本上是通用逼近定理的扩展。这个证明相当沉重,如果有兴趣可以参考论文附录中的 C 部分。

隐式正则化:线性模型的吸引力

在最后一节中,作者表明,基于 SGD 的学习赋予了正则化效果,因为 SGD 收敛于具有最小 L2 范数的解。他们的实验还表明,最小范数并不能确保更好的泛化性能。

定论

  • 几个成功的神经网络架构的有效容量足以粉碎训练数据。
  • 模型复杂性的传统度量对于深度神经网络是不够的。
  • 即使泛化能力很差,优化仍然很容易。
  • SGD 可以通过收敛到具有最小-范数的解来执行隐式正则化。

随后的一篇论文“深入研究深层网络中的记忆”对这篇论文中指出的一些观点提出了挑战。他们令人信服地证明了学习随机噪声与学习实际数据之间的定性差异。

https://dl.acm.org/doi/pdf/10.5555/3305381.3305406?下载=真

上面的实验显示,尝试记忆随机噪声的深度神经网络相对于实际数据集需要明显更长的学习时间。它还显示了拟合一些随机噪声会导致更复杂的函数(每层有更多的隐藏单元)。

https://dl.acm.org/doi/pdf/10.5555/3305381.3305406? 下载=真

这个实验表明正则化子确实控制了 DNNs 记忆的速度。

因此,总结来说,深度神经网络首先试图发现模式,而不是蛮力记忆,以适应真实数据。然而,如果它没有发现任何模式(如在随机噪声的情况下),网络能够以仅记忆训练数据的方式简单地优化。鉴于这两种情况,该论文建议我们需要找到一些更好的工具来控制概括和记忆的程度,像正则化、批量归一化和辍学这样的工具并不完美。

如果你有任何想法、评论或问题,请在下面留下评论或在 LinkedIn 上联系我。快乐阅读🙂

安塞尔·亚当斯的标志性图像在全彩色下是什么样的?

原文:https://towardsdatascience.com/what-do-ansel-adams-iconic-images-look-like-in-full-color-b70914ec6faf?source=collection_archive---------57-----------------------

一个带有少量 Wolfram 语言的计算思维故事

安塞尔·亚当斯为国家公园管理局拍摄的图片(公共领域)

我一直最喜欢的摄影师之一是安塞尔·亚当斯。也许是因为我出生在黑白摄影时代接近尾声的时候?我最早的婴儿照片都是黑白的。

亚当斯对西部的全面描绘简直令人叹为观止。虽然他最出名的是他的黑白摄影,但他也大量使用彩色图像。

1941 年,国家公园管理局委托亚当斯为 DC 华盛顿州内政部大楼的一幅壁画创作照片。为这个项目拍摄的 226 张照片仍然可以从国家档案馆获得,并被放在公共领域。

安塞尔·亚当斯为国家公园管理局拍摄的图片(公共领域)

尽管亚当斯偏爱黑白摄影,但他拍摄的照片来自一个非常丰富多彩的世界。我看到过一些旧的黑白照片,它们被彩色化后的效果非常有趣。通常,一张似乎来自遥远过去的照片会变得更有关联。我想知道如果我从国家档案馆拿走照片并给它们上色,是否会发生同样的事情。

安塞尔·亚当斯为国家公园管理局拍摄的图片(公共领域)

从给图像着色开始,我们需要一个算法或函数来猜测每个灰度像素的最佳颜色。这可以通过观察大量彩色图像的例子并推断周围颜色值如何决定单个像素的颜色来确定。

对于神经网络来说,这是一项伟大的任务,事实上,许多这样的预训练神经网络已经存在。Wolfram 语言有一个非常好的神经网络库,包括可以进行 T2 图像着色的神经网络库。

(图片由作者提供)

有三种型号可供选择。两个基于“ColorNet 图像着色”神经网络,一个主要在地点图像上训练,另一个在标准 ImageNet 竞争数据集上训练。第三个神经网络“彩色图像着色”也是在标准 ImageNet 数据上训练的。

为了更容易地比较三个神经网络的性能,我编写了一个函数,它接受一个图像和三个神经网络模型中的一个:

ColorizeGrayscaleImage[image, model]

这三种模式是:

models = {
"ColorNet Image Colorization Trained on ImageNet Competition Data",
"Colorful Image Colorization Trained on ImageNet Competition Data",
"ColorNet Image Colorization Trained on Places Data"
}

首先,让我们使用顶部的图像来比较这三种模型。请注意,在 Wolfram notebook 界面中,您可以非常容易地将图像作为代码的一部分。那太方便了!

(图片由作者提供)

从输出中可以清楚地看到,输出中的第二个图像在左上角有一些红色的伪像,因此很明显,该模型在这里的表现不好。

让我们来看另一张图片:

安塞尔·亚当斯为国家公园管理局拍摄的图片(公共领域)

这一次,第二个模型实际上表现得相当好:

图片由作者提供,基于安塞尔·亚当斯为国家公园管理局(公共领域)所做的工作

这里并排显示了两种不同的版本:

图片由作者提供,基于安塞尔·亚当斯为国家公园管理局(公共领域)所做的工作

这是另一个图像,原始图像和三个彩色版本并排显示:

图片由作者提供,基于安塞尔·亚当斯为国家公园管理局(公共领域)所做的工作

还有更多的图像供你玩。你可以用这个 Wolfram Cloud 笔记本或者使用本文末尾的代码来完成。

最后,这里是一个使用整个档案的图像拼贴。尽情享受吧!🌄

图片由作者提供,基于安塞尔·亚当斯为国家公园管理局(公共领域)所做的工作

作者的图像动画,基于安塞尔·亚当斯为国家公园管理局(公共领域)所做的工作

公司真正期望从数据和分析中得到什么?

原文:https://towardsdatascience.com/what-do-companies-really-expect-from-data-and-analytics-382c3cd07c6b?source=collection_archive---------72-----------------------

关于对数据专业人员的期望的一些提示

卡尔·海尔达尔在 Unsplash 上拍摄的照片

公司对他们的数据和分析团队真正的期望是什么?有没有想过?作为数据专业人士,企业对你有什么期望?你开发了最先进的机器学习模型?创造创新和颠覆性的解决方案,彻底改变他们的业务?他们中的一些人可能会,但大多数人希望从数据和分析中获得他们希望从任何其他部门(如营销或销售)获得的结果!

带来结果并不意味着使用大数据、分析和数据科学的所有技术、工具和趋势,而是如何智能地使用数据,以及如何从中为企业创造价值。当然是利用技术,但是作为一种手段而不是目的。

为此,公司需要优秀的数据专家。接受过主要技术的培训,但主要知道如何从数据中创造价值。他深刻理解业务的困难和挑战,知道数据如何在这一过程中提供帮助,无论是 KPI、深度分析还是复杂的机器学习模型,但始终与业务保持联系。

那么一个数据专业人员到底应该具备哪些技能呢?

很难定义数据专业人员所需的所有技能,因为该领域有许多职业,如数据工程师和数据科学家、大数据、分析和数据可视化专家等。

无论选择何种职业,关于对数据专业人员的期望,以下几点建议值得一提:

比任何人都了解商业数字——你在数据部门做的几乎所有事情都与数字有关。如果你不知道公司的主要数字,你就很难创造出与业务相关的东西。

跟随问题,而不是答案 —在分析世界中,找出正确的问题最重要,然后找出答案。一个简单的问题,比如“为什么总收入减少了?”可以很容易地带你到另外 20 或 30 个问题,你需要走这条路,不要试图逃避它。

不要生活在泡沫中 —很多时候,我们看到优秀的数据专业人员封闭在他们的世界里,与外面的世界无关。当然,有些人比其他人更内向,但是你需要知道你周围发生了什么,即使是以你自己的方式。请记住,你的使命是帮助公司利用数据赢得挑战,而你只能在公司生活、与其他部门和人员互动时才能做到这一点。

讲故事——与建立一个好的分析一样重要的是知道如何展示它。好的分析经常被展示给公司的高层管理人员,他们对了解你的火箭科学细节不感兴趣,他们更愿意相信你知道你在做什么。他们更感兴趣的是了解什么是见解和要点,以及如何将其应用于业务中。知道如何创建一个好的演示文稿以及如何讲述这个故事是至关重要的。

机器学习不能只是一个复杂而昂贵的咖啡机——在你想开发最先进的算法之前,花时间了解数据,花时间了解业务。与人交谈,与部门交谈。了解他们的痛苦和目标。并不是因为你使用了世界上最先进的技术,它才会给企业带来一些价值。

数据质量很重要——随着大数据的出现,我们能够处理大量数据,即使不是结构化的。但这并不意味着您不必再担心数据质量了。在传播你的发现之前,花时间评估它的结构,尤其是质量。

其中一些技巧可能比其他的更有用,这取决于您的职业时刻或您在数据方面的挑战。此外,记住没有神奇的秘诀,每一个挑战都是挑战,你永远需要适应它。作为数据和分析专业人员,最重要的是要理解您对结果的承诺,只有知道如何从数据中获取价值,您才能做到这一点。

棉花糖和机器学习有什么共同点?

原文:https://towardsdatascience.com/what-do-marshmallows-and-machine-learning-have-in-common-34e8ee9447e?source=collection_archive---------30-----------------------

直观地看待强化学习

在 2010 年的 TED 舞台上,汤姆·伍杰克介绍了“棉花糖实验”。这个实验包括二十根意大利面条、一码胶带、一码细绳和一个棉花糖。根据这些材料,参与者被告知他们有 18 分钟的时间来建造他们能建造的最大的独立结构。只有当它成功地将棉花糖放在上面时,这个结构才被认为是完整的。他已经在不同的人群中完成了数百次这个实验。从 MBA 毕业生到幼儿园应届毕业生;每个小组处理问题的方式都有所不同。

MBA 们将花一些时间组织自己,并为权力进行谈判。他们将花时间思考,草拟计划,并最终开始建造这座塔。他们把它堆起来,直到时间快到了,最后把棉花糖放在上面。他们退后一步,欣赏自己的作品,最终的结果往往是塔在棉花糖的重压下摇摇欲坠。

幼儿园的学生完成任务完全不同。他们不花任何时间计划,并立即开始工作和建设。不过,两种策略的关键区别在于,在整个实验过程中,棉花糖会不断地放在塔上。5 岁的孩子一点点建造塔,放置棉花糖,获得反馈(塔是否倒了),并从那里继续迭代和建造。这导致幼儿园的学生比 MBA 毕业生平均多建了两倍的高楼。

现在我知道你在想什么,这和机器学习有什么关系?过去的博客描述了监督机器学习非监督机器学习,而这个故事旨在说明强化机器学习的概念以及计算机如何使用反馈来学习。

在强化学习中,工程师将把游戏的“规则”编入计算机。在这种情况下,他们会对物品的类型、重力规则、意大利面的承重能力、棉花糖的重量等进行编程。一旦规则被编程,工程师们就可以编程反馈,让计算机“奖励”更高的塔。然后,计算机执行游戏的几次迭代,并学习所有项目的最佳路径和配置,以获得最高奖励。把计算机想象成模仿幼儿园的学生,他们尝试一次迭代,放置棉花糖,得到反馈,然后重新配置他们的结构。

最近一个成功实现强化学习的例子发生在 2017 年,当时一台计算机被编程为学习‘GO’。围棋比国际象棋更复杂,有数百万种可能的走法组合。该程序能够击败世界冠军柯洁,标志着强化学习向前迈出了一大步。

强化学习是人工智能最令人兴奋和革命性的例子之一。当您试图在一个具有清晰规则和可定义为“成功”或“失败”的最终状态的环境中确定一组最佳行动时,这是最有用的。商业案例包括:

  • 无人驾驶汽车
  • 优化投资组合交易策略
  • 使用机器人在仓库里重新进货和挑选存货

当公司能够概念化和理解强化学习时,他们就从像其他类型的机器学习那样简单地预测转向优化能力。当竞争对手的 MBA 们在争权夺利、制定计划、看着他们的塔在棉花糖的重压下倒塌时,那些实施强化学习的人已经打印出了最高最坚固的塔的蓝图。

关于我的本地 Parkrun,这些数字说明了什么?

原文:https://towardsdatascience.com/what-do-the-numbers-say-about-my-local-parkrun-4ca52002e19c?source=collection_archive---------53-----------------------

浅析凯西克公园及其参与者

在我的第一篇博客中,我决定看看我们都热爱和珍惜的东西——我在当地的公园跑步。

本周六早间机构产生了大量的数据。我试图检索(主观上)最有趣的数字,以下是我的发现。所以,让我给你展示一下你每周跑 5 公里的来龙去脉。

在我们继续之前,有一件事需要澄清。Parkrun 需要你有自己唯一的条形码来记录你的时间。如果您无法出示条形码,您完成的职位将被填写为“未知”,并且不会为此职位分配时间。

为了分析的目的,如果获胜者是这样的 John Doe,我使用已知最快的时间作为获胜时间(而获胜者的首字母仍然是“未知”)。

到目前为止,在凯西克已经举行了 303 场跑步比赛,在 2019 年的新年跑步比赛中,跑步者的人数少至 54 人,多至 500 人。

由于凯西克是一个旅游和季节性很强的城市,我预计每 52 场比赛就会周期性地出现明显的高峰和低谷,虽然季节性不像我认为的那样明显,但从滚动平均值来看,模式很明显:夏季高,冬季低,圣诞和新年公园跑步越来越受欢迎。

平均每周有 149 名选手冲过终点线,其中有 65 名女士和 74 名男士。如果你搞不清楚 65 + 74 = 149 是怎么回事,那是因为它没有。剩下的 10 个解释了那些神秘的没有条形码的跑步者。

然而,女性在数量上击败男性并不罕见,因为在 303 次跑步中,这种情况发生了 51 次。当 79 名女性只有 51 名男性陪伴时,最有影响力的表演出现了。

平均每周有 22 名跑步者打破他们的个人最好成绩,7 名 speedos 跑完 20 分钟。

男性和女性的年龄分布相当相似,Parkrun 似乎很受 40 岁以上人群的欢迎。

大多数参赛的男性年龄在 50-54 岁之间(其次是 45-49 岁和 55-59 岁)。对于女士来说,这是 45-49(其次是 50-54 和 40-44)。请注意,这些不是唯一的条目,所以如果有人输入了所有的跑步记录,它们将被计数 303 次。

约翰·m 已经完成了 44 次 90-94 级别的比赛。

如果你的目标是在比赛的前半段完成,你应该把时间定在 27:37 以上,这样你就能在一次普通的跑步中到达终点。

然而,如果你想赢,你应该让你的腿加速,目标是 17:44。当然,这可能还不够,因为记录是 15:29(萨姆·斯)。

迄今为止,该赛事已有 5 次由女性获得冠军(罗茜·s、莎拉·t、海莉·c、丽贝卡·r 和艾米丽·r)。

虽然样本很小,但女士的获胜时间平均比男士慢半分钟:18:11 比 17:38。

11-14 岁年龄组的选手(Nathan S .和 Robin R .)和 55-59 岁年龄组的选手(Greg P .)分别两次赢得这项赛事的冠军。

31 名运动员不止一次赢得凯西克公园赛跑冠军,三大冠军是萨姆·s(42 次获胜)、马克·l(31 次)和卡尔·b(13 次)。

凯西克公园路最近改变了场地,从一个风景优美的沿河来回砾石路,双向都有多汁的爬坡,变成了当地公园里平坦的柏油路。

通过查阅档案,我估计这种变化发生在事件#274 之后。

奇怪的是,整体平均时间在改变后慢了 21 秒,然而获胜时间却提高了 22 秒。

我问自己的一个问题是,参加的人数是否对平均完成时间有影响。

我在这里的想法是,跑步者越多的公园跑步平均速度会越慢,因为参加人数较少的项目主要由准备好迎接恶劣天气的铁杆运动员组成。然而,当我看一张跑步者人数与平均时间的对比图时,发现跑步者多的项目往往更一般!

你可以清楚地看到,虽然安静的活动往往是双向的(更快和更慢),但更多参与的活动往往倾向于平均结束时间(28:30)。

注意最上面,有 500 名跑步者参加的大型新年派对平均时间为 28:59——睡了 3 个小时还不错,不是吗?

最后但同样重要的是,没有冲刺跑的比赛是什么样的友好比赛。为了周六早上的聚会,我查看了前两个已知时间的差异。

如果差距是 2 秒或更少,我把它归类为“冲刺结束”。
在 303 个项目中,这种情况发生了 35 次,其中 19 次是差距小于 1 秒的“超级冲刺”。

如果凯西克的跑步爱好者想要引起国际媒体的关注,他们可能需要在这方面努力。

用于此分析的代码可在 https://github.com/KrystofMeier/parkrun找到

原载于

各个国家的医疗保健能力是什么样的?

原文:https://towardsdatascience.com/what-do-various-countries-healthcare-capacities-look-like-1581896a0601?source=collection_archive---------2-----------------------

变更数据

鉴于冠状病毒(新冠肺炎),按国家可视化和比较医疗保健数据和指标。

增长率与产能的对比(仪表板链接

对于我们许多人来说,在世界应对新冠肺炎疫情期间,我们的生活暂时停滞不前。

对许多国家来说,3 月是一个转折点,新冠肺炎镇压措施的实施大幅增加。其原因是看到了一些国家发生的事情,以及来自建模的可怕警告。

《T4 时报》写道,如果不采取控制措施,到五月底,美国每天将有 50 万新病例。

新增病例 50 万例。一天之内。就在美国。

即使采取“一些”控制措施,到 6 月底,每天仍可能出现 30 万个新病例。一线希望是,这种未来并不是一成不变的。例如,本文概述了社交距离和其他“抑制”措施可以产生巨大的影响。所以我一直这样做——呆在室内。很多。比如经常被软禁。

Unsplash 上按键拍照

在家里度过的这段时间也给了我一点思考和阅读的时间,鉴于时代的现状,最近的许多阅读材料都与疫情有关。(谁知道病毒这么有趣!)

我也开始想知道不同国家处理这个问题的能力会是什么样的。

你看,像现在的许多人一样,我有一个全球性的家庭和朋友网络。我特别的一个横跨韩国、澳大利亚、美国、英国和新西兰。

所以我决定研究世界各地的医疗保健统计数据,一件事导致了另一件事。你知道是怎么回事。在我意识到之前,我正在汇编数据,并把它们放到一个在线仪表板上。

结果证明这是一个有趣的练习。我学到了很多关于医疗保健能力、老年和弱势人口规模以及经济能力的差异和关系。此外,我还做了一个粗略的模拟,模拟了系统被需求淹没需要多长时间,尤其是在需求呈几何级增长的情况下。

非常明确地说,我不是健康或政策专家,对这两方面也知之甚少。这篇文章只是我出于好奇,在观看网飞迪士尼+ 之间,把数据放在一起,想知道当我们到达那里时,常态可能会变成什么样。

数据源和分析

我已经从世界银行开放数据项目获得了数据,他们声明他们的使命是提供免费和开放的全球发展数据。

并非所有年份的所有数据都是可用的——但我在这里收集了最新的可用数据,而且只是最近 10 年的数据。在剔除了我找不到太多数据的国家之后,我最终收集了 155 个国家的信息——大到中国,小到安提瓜和巴布达。

数据

医疗保健支出

每个系统的人均医疗支出是多少?我认为这些数字表明了购买药物和设备的能力(尽管没有考虑每个国家不同的费用)。

155 个国家可能太多了,无法显示在一张图表上,所以我将数据集中值最高的 20 个国家的数据绘制出来。

人均医疗保健支出(最高值)—数据来源:worldbank.org

相比之下,这是人口最多的 20 个国家。

人均医疗保健支出(最大人群)——数据来源:worldbank.org

资源的不平等非常明显。

鉴于资源的这种差异,以及新冠肺炎是一种呼吸系统疾病这一事实令人担忧。例如,媒体广泛报道许多患者需要机械呼吸机支持——不太富裕的国家如何负担得起?

让我们来看看其他一些措施。

65 岁或以上人口的百分比

像许多其他疾病一样,年龄似乎是你易患这种疾病的一个因素。这是 65 岁或以上人口的百分比,作为年龄分布的一个指标。

65 岁以上人口的百分比(最大人口数)——数据来源:worldbank.org

有趣的是,日本的老年人口比例非常高,法国和德国也是如此。我们可以根据这一指标绘制出排名前 20 位的国家。

65 岁以上人口的百分比(最大人口数)——数据来源:worldbank.org

有趣的是,在日本之后,这份名单似乎被欧洲国家占据了。如果这是最脆弱人口规模的指标,医疗保健系统的能力是否与这一指标相关?

每人医院床位

平坦曲线的一个关键论点是防止医疗保健系统负担过重。卫生保健系统能力的一个代表是 T2 人均医院床位数。让我们再来看看那些人口最多的国家的数据。

每千人医院床位数—数据来源:【worldbank.org

有趣的是,日本也是这一类别的领导者,因为他们有 65 岁以上的人口规模。排名靠前的国家与我们在上面的图表中看到的相似。

这是否意味着这两个指标有很好的相关性?

与医院病床数量的相关性

是,也不是。看看下面的图表。

相关性——65 岁或以上人口规模与医院床位数量

对于大国来说,似乎有很好的相关性,但看看右下角 65 岁以上人口较少的点群。在该集群中存在相当大的医院床位数分布,表明相关性较低。

一般来说,可以在下面找到更好的相关性——与人均医疗保健支出的相关性。

相关性——医疗保健支出与医院床位数

一般来说,人均医疗保健支出似乎是人均医院床位数的一个更好的预测指标。也就是除了那些 65+人口占 10%左右(或者更高)的情况。

医生人数

这是医院的基础设施能力。但是那些可能需要照顾病人的人员呢?以下是每 1000 人中医生比例最高的国家:

每 1000 人医师数(最高值)世界银行

古巴遥遥领先于此。那真的很有趣。正如我所说的,我对这个地区了解不多,但我想知道这个统计数据的一些原因可能是什么。例如,我想知道某些医疗保健系统和政策是否会选择更多地关注资源(设备、药物、R&D)而不是培训医生。

尽管如此,看到古巴名列榜首还是很惊讶。你每天都学到新的东西。

相关性——每 1000 人中老年人口与医生的比例

将数据绘制为相关性,通常在 65 岁及以上人口规模和每 1000 名医生之间也有很大的相关性。

然而,很明显,世界各地的医疗保健能力存在巨大差异。然而,就我们所见,没有一个是足够的。这里有一些简单的数学方法来解释为什么:

为什么我们都应该呆在家里

基本上,我们看到的关于这种病毒的所有数据都表明,它比流感危险得多——根据美国的福奇博士的说法,危险程度是流感的 10 到 20 倍。

它的增长速度有多快?非常快。

新冠肺炎造成的死亡增长率(来自约翰·伯恩-默多克推特

这是一条指数曲线——这只是显示死亡人数。假设住院人数以类似的方式增加(即指数增长),这就是从第一次住院人数开始的增长速度。

增长率与可用医院床位

即使所有医院床位的 10%可用,根据三天住院率的两倍计算,美国的能力将在不到两个月内得到满足。顺便提一下,截至 3 月 24 日,三天多一点的翻倍率大约是美国数据目前的水平。像纽约这样的一些地区显示出两天翻倍的速度。

从图中可以看出,容量增加 10 倍只需要几天时间(请注意,该图以对数比例显示了指数增长)。

与此同时,翻倍率的变化对结果和产能数字有着更大的影响。这就是为什么目前的重点是在拉平曲线

所以,你走吧——注意安全,呆在家里。拯救的不仅仅是一条生命,而是更多的生命。在有效和广泛的检测与追踪一起可用之前,每个人都需要保持警惕——因为目前,不可能足够快地识别疾病,并追踪他们去过的地方,让那些接触过的人知道他们可能对自己和他人有风险。

我已经在这里在线上传了这个分析的互动版本。请随意看一看,如果您有任何意见,请告诉我。

如果你喜欢这个,比如说👋/关注 twitter ,或点击此处获取更新。ICYMI:我还写了这篇关于用 Plotly Dash 构建 web 数据仪表板的文章——我就是用它来构建当前的仪表板的。

[## 使用 Python 在几分钟内构建一个 web 数据仪表板

通过将您的数据可视化转换为基于 web 的仪表板,以指数方式提高功能和可访问性…

towardsdatascience.com](/build-a-web-data-dashboard-in-just-minutes-with-python-d722076aee2b)

编者注: 走向数据科学 是一份以研究数据科学和机器学习为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里

我们所说的智力是指什么?

原文:https://towardsdatascience.com/what-do-we-mean-by-intelligence-f69673f1559e?source=collection_archive---------44-----------------------

质疑我们对智能的理解,以及如何使用人工智能创建“智能”系统。

让-路易·波林在 Unsplash 上拍摄的照片

介绍

给智力下一个正式的定义可能是一项相当艰巨的任务。事实上,到目前为止,还没有就这一主题达成共识。自从人类历史开始以来,人们对智力提出了不同的定义,这些定义因历史时间和文化而异。例如,在一个语言和交流技能起着重要作用的社会里,一个拥有这些技能的人可能会被认为比其他人“更聪明”。与此同时,在一个重视数字技能的社会里,大多数其他人可能被认为“更聪明”。

作为这一趋势的实际证明,我们可以认为,在最近的过去(直到 1960 年左右),为了被一些大学(甚至是技术课程)录取,懂拉丁语是必要的,而现在它不再被认为是一个先决条件。由于最近的技术革新,社会将他的兴趣从人文学科转移到更技术性的学科,这种变化可能已经发生了。

“每个人都是天才。但是如果你根据一条鱼爬树的能力来判断它,它会一辈子都相信自己是愚蠢的。”[1]

—未知

由于测量人类智力的这些差异,诸如智商(IQ)测试这样的标准化测试被创造出来。例如,这些类型的测试如今普遍用于评估求职者和检测智力残疾。

人工智能的诞生

艾伦·图灵模仿游戏现在被认为是定义智能系统的最初尝试之一。根据模仿游戏(图灵测试)事实上,如果一个系统能够与一个询问者交换信息而不让他/她理解它不是人类的本性,那么这个系统可以被认为是智能的。尽管智能系统的定义有一些限制,例如,它假设系统应该能够表达类似人类的智能形式,尽管理论上人类智能不是智能系统的唯一可能形式。

从这一点开始,两种不同的方法发展起来,试图重建智能系统:(强调形式逻辑的使用)和连接主义(旨在使用大脑功能的简化模型来复制智力)。

由于符号方法,机器人 Shakey 等项目已经实现,而由于连接主义方法,人工神经网络和当今的深度学习模型已经构建(图 1)。能够表达智能行为的系统的第一个成功例子是阿瑟·塞缪尔·跳棋游戏程序。这个程序实际上成功地学会了使用启发式搜索(最小最大算法)玩高水平的跳棋游戏。为了训练他的程序,Samuel 另外加入了不同的特性,这在某种程度上类似于早期的强化学习方法。事实上,该程序能够成功地与自己对抗,并从过去的错误中吸取教训,以便进行改进。

图 1:人工智能时间轴[2]

生物学视角

直到 20 世纪 80 年代初,科学家们试图通过自上而下的方法创造智能机器(例如,试图直接模仿复杂系统的行为,如人类的行为)。虽然,这种方法导致了各种限制,例如:

  • 在不断变化的环境中反应缓慢。
  • 充分扩展的能力有限,增加了挑战的难度。
  • 当试图通过搜索或从相当大查找表中检索信息来解决问题时,需要较高的存储器要求。

另一种方法(如 Brooks 所提倡的)是尝试模仿简单生物的关键特征(自下而上的方法)。这样,我们的系统就不需要任何层次系统,并且能够保证在不断变化的环境中有更快的反应时间(就像现实世界中的大多数环境一样)。最后,另一种创造受生物学启发的智能系统的可能方法是进化算法。

结论

在过去的一个世纪中,许多人工智能(AI)系统的连接主义和符号化实现已经被实现,希望创造智能系统(图 2)。尽管如此,现在我们仍然不能确定使用这两种方法中的一种(或两种)是否有可能创造一个强大的人工智能系统。

图 2:随着时间的推移,符号主义与关联主义的研究出版物[3]

强化和在线学习方法可能是解决这一任务的最佳途径。事实上,这可以被认为是能够模拟生物系统如何学习的最接近的方法:

  • 通过他们过去的经历(使用奖励/惩罚机制)。
  • 持续地,每次考虑一个刺激(或一个小样本)(不像深度学习系统,它一次训练完所有的东西,并有大量的数据)。

我希望你喜欢这篇文章,谢谢你的阅读!

联系人

如果你想了解我最新的文章和项目,请通过媒体关注我,并订阅我的邮件列表。以下是我的一些联系人详细信息:

文献学

[1]每个人都是天才。但是如果你根据一条鱼爬树的能力来判断它,它会一辈子相信自己是愚蠢的报价调查员,追踪报价。访问地点:https://quoteinvestigator.com/2013/04/06/fish-climb/

[2]人工智能时间轴信息图——从伊莱扎到泰和超越,Digitalwellbeing.org——保罗·马斯登博士。访问:https://digital well being . org/artificial-intelligence-timeline-infograph-from-Eliza-to-tay-and-beyond/

[3]神经元尖峰脉冲,归纳机器的发明和人工智能的争议,多米尼克·卡顿,让-菲利普·科因泰特,安托万·马齐埃,https://neurovenge.antonomase.fr/NeuronsSpikeBack.pdf

当一个国家否认冠状病毒时,你会怎么做?

原文:https://towardsdatascience.com/what-do-you-do-when-a-country-denies-the-coronavirus-c99942701335?source=collection_archive---------39-----------------------

使用数据估计塔吉克斯坦的新冠肺炎病例数

修订:2020 年 4 月 30 日(晚上 8:55)—本文原始出版物中列出的数据包括在不同新闻稿中重复计算的检疫编号。编辑版本纠正了这一点。

塔吉克斯坦是一个有 900 万居民的国家,然而只有十五个新冠肺炎病例。与中国接壤的塔吉克斯坦并不幸运。相反,的诊断一直被该国政府掩盖,直到今天,他们都否认该国受到病毒的影响。甚至当内务机构监督部部长贾洛丁·皮罗夫死于症状与新冠肺炎相似的病毒时,卫生和社会保障部声称死因是肺炎和猪流感。

尽管国内呼吁正式承认全球疫情,甚至世卫组织也没有干涉塔吉克政府对新冠肺炎的否认。当一个政府否认疫情或以可疑条款处理感染和死亡时,很难掌握病毒传播的规模。不过,在这种情况下,政府并没有完全否认新冠肺炎的存在。卫生部一直在检测有冠状病毒样症状的人(均为阴性),并隔离患病公民和来自其他国家的旅行者。卫生部在定期新闻发布会上公布了被隔离人员的数量。

正如每一次现代疫情一样,统计模型被用来预测新冠肺炎的传播。利用其他研究的所有结果以及卫生部发布的数据,有可能创建一个模型,追溯性地构建新冠肺炎在塔吉克斯坦的潜在传播。

方法论

这项研究收集的数据由 Franziska Buhre 汇编,她是一名驻柏林的自由记者,2019 年在塔吉克斯坦生活了三个月,得到了 Institut für auslandsbezehungen 的资助。数据摘自塔吉克斯坦共和国卫生和人口社会保障部发布的新闻简报。简报中提供的数据提供了被隔离的总人数,如从中国、韩国、日本、意大利、伊朗和阿富汗返回的公民,或来自“外国”的人。

为了了解新冠肺炎的潜在传播,需要估计这些被隔离的人群中有多少可能是病毒携带者。在日本进行的二月研究中,研究人员对乘坐三架包机从中国武汉撤离的 565 名日本公民进行了检查,以了解新冠肺炎在乘客中的流行情况。在接受检测的乘客中,1.4%的人对新冠肺炎病毒呈阳性。将这一指标应用于数据集,我们可以得出样本人群中可能的感染率。在下表中,人们可以看到,即使在最少的情况下,仅从被隔离的人数来看,塔吉克斯坦可能有大约 114 例新冠肺炎病例。

将疑似病毒携带者隔离的目的是限制他们与社会其他人的接触,从而阻止病毒的传播。然而,在她的报道中,Buhre 发现人们不是在家里被隔离,而是“被送到营地,医院,疗养院,其中许多是苏联时代的,条件恶劣。”因此,花在隔离上的时间是可变的,有报道称一些病人行贿以获得自由。

因此,上表中的受感染人数并不代表会有效传染给其他塔吉克人的人数。在最好的情况下,所有人都将被隔离,直到不再具有传染性。然而,模型必须考虑一定量的“泄漏”。在 2011 年对 H1N1(猪流感)患者进行的一项研究中,澳大利亚的研究人员发现,只有 35%到 55%的人完全遵守了他们的指示。以此为基础,我们可以乐观地假设塔吉克斯坦的泄漏率约为 50%。这意味着每两个被隔离的病人中,就有一个会传染给塔吉克社会的其他人。

病毒的威胁,使它如此可怕和致命的原因是它会传播。57 名具有潜在传染性的个人穿越塔吉克斯坦会有什么影响?考虑到目前为止在新冠肺炎收集的数据,这也是可以模拟的。病毒的传播是通过一种叫做 R0(读作 R-零)的统计数据来衡量的。这是通过接触有传染性的人而被感染的新人数。根据帝国理工学院新冠肺炎反应小组的一项研究,新冠肺炎的 R0 估计在 2.0 到 2.6 之间,换句话说,每个新冠肺炎患者都有可能把它传给 2.5 个人。

再乐观一点,R0 为 2.2,我们可以模拟这 57 名具有传染性的人如何通过塔吉克社会感染新冠肺炎病毒。在数据中的第一天,2020 年 2 月 8 日,将有 4.5 个传染人。第二天,这个数字会增加到 4.52.2 = 9.9。第二天,9.9 人现在被认为具有传染性,所以在第二天,等式是 9.92.2 = 21.78 。这就是指数增长的方式,数字继续以 2.2 的因子复合。一个警告:在这个模型中,我还假设 50%的新感染者实际上是传染性的。这个假设建立在三个可能的因素上:1)这个人表现出症状和隔离;2)此人病重不能外出;和/或 3)这个人是无症状的,试验性的研究建议让他们比有症状的人少 50%的传染性。

塔吉克斯坦卫生部的新闻稿不一致,因此我们没有每日新增病例的数字。在这个模型中,我将前一天的数字进行复合,除非添加了新的数字。这是观察随时间推移而增长的一种基本方法,但这是利用所提供的数据可以做到的。

鉴于上述模型,可以合理地预计,自 2020 年 2 月初以来,塔吉克斯坦约有 12,803 例新冠肺炎病例。这大大高于卫生部报告的 15 例。

讨论

新冠肺炎在每个社会都有不同的表现。该模型基于有限的统计数据和假设,这些数据和假设来自文化和社会因素不同、对病毒的实际传播有重大影响的其他国家。然而,鉴于政府在 2020 年 4 月底之前否认有任何病例,塔吉克斯坦的实际病例数可能更接近估计数,而不是政府声称的数字。虽然不是 100%准确,但该模型是基于新型冠状病毒如何在其他国家传播的同行评审数据。鉴于塔吉克斯坦的经济、移民模式和边境状况,没有理由认为它会与全球趋势如此大相径庭。

Franziska Buhre 通过 IFA-auslandsbezehungen 研究所的赠款住在塔吉克斯坦。她目前的研究由 WPK 科学基金会资助。这项研究的数据由 Franziska Buhre 收集,可以在这里下载。

你可以在这个谷歌表单中找到新冠肺炎在塔吉克斯坦传播的不同场景的模型。

你在其他国家有类似的案例可以从这项研究中获益吗?请在推特上联系我 @saracooper_

要成为一名数据科学家,你需要知道什么

原文:https://towardsdatascience.com/what-do-you-need-to-know-to-become-a-data-scientist-1ed52e0e1ad?source=collection_archive---------20-----------------------

数据科学家职业起步指南

图片由作者提供(使用 Canva 制作)

数据科学是一个新兴领域,能够从结构化和非结构化数据中提取有用的趋势和见解。它是一个跨学科的领域,使用科学研究、算法和图表来揭示混沌中的模式,并使用这些模式来创造惊人的东西。

作为一名数据科学家,你需要了解一些基本的数学和编程知识,并对模式和趋势有敏锐的洞察力。由于该领域的跨学科性质,数据科学家将会发现自己在从事不同的广泛的技术工作。

在我们开始讨论成为一名数据科学家需要什么之前,我们先来谈谈数据科学领域的工作需要什么。

数据科学家是做什么的?

在数据科学领域工作就像坐过山车一样。这项工作的某些方面缓慢而稳定,而另一些方面则快速而疯狂。它的其他部分就像在一个循环中,你一遍又一遍地重复事情。

每当数据科学家开始一个新项目时,他们都会经历一系列已知的步骤,以得出最终结论。

任何数据科学项目都以数据开始,以数据结束,在这两者之间,奇迹发生了。

如果您浏览互联网,您会发现许多文章涉及数据科学项目中不同数量的步骤。但是,不管步骤多少,核心方面都是一样的。对我来说,任何数据科学项目都要经历 6 个主要步骤。

图片由作者提供(使用 Canva 制作)

步骤№1:了解数据背景。

每当我们开始一个数据科学项目时,我们通常旨在解决一个问题、提高性能或预测未来趋势。要做到这一点,我们首先需要掌握数据来源的历史以及它是如何产生的。

步骤№2:收集数据。

一旦我们了解了这些数据的背景,我们就需要收集数据并开始处理。根据项目的性质,有不同的方法来收集数据。我们可以从数据库、API 或者——如果你是初学者或者刚刚开始学习技能——从开放的数据源获得。收集数据的另一个选择是避开公开可用信息的 wen。

[## Python 中 Web 抓取的分步指南

抓取任何有请求和美丽声音的网页

towardsdatascience.com](/a-step-by-step-guide-to-web-scraping-in-python-5c4d9cef76e8)

步骤№3:清理并转换数据。

大部分时间,如果不是全部时间,我们从数据源收集的数据是纯净和原始的。这种数据不适合在算法和未来步骤中使用。因此,当我们获得新数据时,我们要做的第一件事就是清理它,对它进行分类和标记,并理解它。

步骤№4:分析探索数据。

一旦我们的数据是干净的和结构化的,我们就可以开始分析它,并试图找到其中的模式。这可以通过可视化数据并寻找重复或尖峰来完成。

[## 每个数据科学家都应该知道的 5 种数据挖掘技术

如何在混乱中找到模式?

towardsdatascience.com](/5-data-mining-techniques-every-data-scientist-should-know-be06426a4ed9)

步骤№5:数据建模。

我们终于到达了神奇的一步!在我们探索和分析我们的数据之后,是时候输入机器学习算法,并使用它来预测未来的结果。这确实是数据科学的力量。

第 6 步:可视化和交流结果。

最后,也是这个过程中最关键的一步是有效地可视化和呈现项目的结果。

一旦这些步骤都完成了,一个新的项目就来了,是时候重新开始了。

[## 用 Pygal 实现 Python 中的交互式数据可视化

一步一步的教程,创造惊人的可视化

towardsdatascience.com](/interactive-data-visualization-in-python-with-pygal-4696fccc8c96)

数据科学需要哪些技能?

数据项目生命周期的每一步都需要特定的知识和技能。为了更好地连接所需的技能,我会将项目的每个阶段与完成该步骤所需的技能配对。

  • 进行数据调查,你只需要一颗好奇的心,一支笔,一张纸。您坐下来,或者询问数据源一些问题以更好地理解数据,或者如果是开源数据,阅读数据附带的文档。
  • 要执行数据收集, 您需要知道如何与数据库和 API 通信。理解这些技术的基本结构和机制将使您的数据收集变得轻而易举。如果你正在使用开源数据集,那么学习如何寻找数据集和一些好的来源会有很大的不同。
  • 要执行数据清理 您需要一些基本数据挖掘和清理技术的良好知识。您需要标记您的数据,并对其进行适当的分类。此外,您可以使用正则表达式来查找拼写错误,或者使用专门的工具来简化这个过程。
  • 要执行数据探索, 你将需要一些基本的统计学和概率论。一些数据可视化和实验设计的知识,在这个阶段可以帮到你很多。

[## 数据科学是关于概率的

数据科学中最常用的 4 种概率分布

towardsdatascience.com](/probability-theory-in-data-science-bacb073edf1f)

  • 要执行数据建模, 你需要知道一些机器学习算法,以及它们是如何工作的。你不需要什么都 100%懂;如果你能正确地使用它们,并把它们应用到正确的数据形式中,你就没问题了。
  • 最后,执行数据通信, 你可能会用到一些基本的科学通信 101。也就是了解你的听众,他们的背景知识,选择晦涩的词语来解释复杂的概念。此外,在这个阶段,有效的数据可视化可以决定项目的成败。

图片由作者提供(使用 Canva 制作)

技术工具

我们刚刚谈到的一些技能需要一种编程语言、一种算法或特殊的包。

结论

你不需要了解统计学、数学、机器学习的所有知识,也不需要成为一名专业的程序员来开始学习数据科学。你只需要这些知识的基础。随着您从事不同的项目并建立自己的档案,您的知识库将会扩大,您的“数据科学意识”将会自动提高。

所以,不要被领域吓倒,也不要被成为一名优秀的数据科学家需要“掌握”多少东西吓倒。从基础开始,逐步深入到高级主题。耐心点,全力以赴,你会成功的。

数据科学家实际上是做什么的?

原文:https://towardsdatascience.com/what-does-a-data-scientist-actually-do-7318b994b138?source=collection_archive---------41-----------------------

尺寸很重要…

查尔斯·德鲁维奥在 Unsplash 上拍摄的照片

S 自从我开始从事数据工作以来,我一直听说数据科学,所以我一直想了解更多。问题是,当你开始探索数据科学家实际上在工作中做什么时,它会变得相当混乱。

简而言之,数据科学家的角色

我们都知道,数据科学就是利用数据为公司创造尽可能多的影响。为了创造这种影响,数据科学家需要工具,如构建复杂的模型、设计简洁的图表或编写代码。

基本上,数据科学家解决真实的公司问题,使用过去的数据预测未来。

误解的两个来源

人们对数据科学有很多误解,这可能有两个原因:

1.媒体

热门话题和行业需求之间存在巨大的错位。机器学习和人工智能主导着媒体,掩盖了数据科学的所有其他方面。所以现在普通公众认为数据科学家是专注于机器学习和人工智能的研究人员,而实际上在某些情况下,该行业正在雇用永远不会实际执行任何人工智能或机器学习相关任务的数据科学家(可能是因为公司还没有做好准备)。

2.人力资源(部)

困惑的另一个原因来自人力资源经理,可以理解,他们可能会被飞来飞去的新术语和流行语淹没。这导致他们对工作职位的标注不准确。一名人力资源代表可能会称某个职位为数据分析专家,而实际上他们需要的是数据分析师。当他们需要一个商业智能分析师时,另一个可能雇用一个初级数据科学家。当然,有许多公司声称他们的工作机会很棒,但这并不是整个行业的标准。

为了让事情更清楚一点,我们首先必须了解数据世界中需要什么,我们将使用 Monica Rogati 的 需求数据金字塔 (全文 此处 ),这是受著名的马斯洛需求层次理论的启发。澄清了这个框架之后,我们就可以理解数据科学家在这个光谱中的位置了。

需求的数据金字塔

图片由 Monica Rogati黑客报上提供

数据生成&收集处于金字塔的最底层,基本需要。显然,我们必须收集某种数据,才能使用这些数据。这里的关键是了解需要哪些数据,以及哪些数据是可用的。

然后将&存储数据移动到系统中是非常重要的,而且由于大数据和与之相关的所有挑战,它实际上在媒体中被很好地捕获。

当数据可以访问时,检测和纠正(或删除)损坏或不准确的记录变得至关重要。探索&转换数据,通常称为数据清洗,是数据科学中被低估的一面。

只有当数据得到清理并且可靠时 BI & Analytics 才能发挥作用,简而言之,这意味着从数据中形成见解,并建立衡量成功的指标。

然后数据产品需要学习&优化,通过 A/B 测试和实验来评估哪个产品版本是最好的。

媒体主要报道的是金字塔的最后一部分,即 AI &深度学习。我们已经不断地听说了这件事。但是它实际上并不是最高优先级的,或者至少不是用最少的努力获得最多结果的事情。这就是为什么人工智能和深度学习位于需求层次的顶部。

尺寸很重要…

图片来自 Pexels 安德里亚·皮亚卡迪奥

既然我们已经了解了数据世界需要什么,那么数据科学家实际上在做什么呢? 公司的 规模是这里的一个关键因素。

让我用下面三个例子来解释一下为什么:

启动

初创企业通常缺乏资源。他们可能只有一名数据科学家。所以一个数据科学家必须做所有的事情。也许他不会做人工智能或深度学习,因为那不是公司的优先事项。

在初创公司工作的数据科学家可能需要建立整个数据基础设施,编写一些软件代码来添加日志记录,然后进行分析和构建指标,并通过 A/B 测试来检查不同的解决方案。

中型公司

但是让我们看看中型公司。最后,他们有更多的资源。他们至少可以将数据工程师和数据科学家分开,将金字塔的任务一分为二。

因此,他们通常会让数据工程师收集数据,并负责所有的 ETL 过程。然后,如果中型公司做了大量需要人工智能的推荐模型或东西,那么数据科学家将负责金字塔的其余部分。

大型公司

大公司可能会有更多的钱,因此他们可以花更多的钱在员工身上。因此,他们可以让许多不同的员工从事不同的工作。这样,员工可以专注于他们最擅长的事情。

因此,举例来说,通过仪器传感器收集数据都是由软件工程师处理的。清理和建立数据管道是数据工程师的工作。因此,数据科学家将只关注分析。那么人工智能和深度学习将成为研究科学家的职权范围,这可能得到机器学习工程师的支持。

作者图片

结论

总之,如您所见,数据科学家没有单一的工作描述,但根据公司的规模,定义会有所不同。

我希望这篇文章能让你对数据科学家的实际角色有更多的了解,如果你考虑将它作为你职业生涯的下一步,你可能想看看你想为之工作的公司的规模,因为这将彻底改变你的职责和整体任务。

请务必联系我,告诉我你所有的建议和意见。

感谢您的阅读!

我正在创建一个与数据科学和分析相关的所有我最喜欢的课程、书籍和用例的列表。点击 链接 即可在免费访问该内容。

[## 用我的推荐链接加入 Medium-Lore 那又怎样

阅读 Lore 的每一个故事那又怎样(以及媒体上成千上万的其他作家)。您的会员费直接支持…

medium.com](https://medium.com/@loresowhat/membership)

数据科学家创造了什么?

原文:https://towardsdatascience.com/what-does-a-data-scientist-create-f7e5b43663a1?source=collection_archive---------71-----------------------

以及为什么你,一个有抱负的数据科学家,应该关心

马尔科姆·莱特曼在 Unsplash 拍摄的照片

我的家人要求我解释我是做什么的。我试着解释了很多次都没有成功。大多数时候,对话可以归结为:“好吧,告诉我们你做了什么。你努力的结果是什么?”我开始意识到,当数据科学受到质疑时,即使是这也不是一个容易回答的问题。

这也是互联网上最常见的问题之一。数据科学家提供什么?他们做了什么让每个人都如此兴奋的事?许多想成为数据科学家的人对此并不清楚。这是因为数据科学家没有一件事可以做。你提供什么将取决于你工作的公司和你的公司/雇主对你的工作类型的要求。这就是为什么在申请或接受一份工作之前,了解你将创造什么是了解一个职位不可或缺的一部分。

让我们来看几个例子,看看作为一名数据科学家,你可能会做些什么。看看列表中是否有你最喜欢的。选择工作时,知道自己的偏好会很有用。

  • 一个经过训练的模型:数据科学家分析数据,并在这些数据上训练机器学习模型。在这种情况下,您的主要目标将是根据您的业务需求创建性能最佳的模型。在项目结束时,你将有一个训练有素的模型来交付。
  • 一个 API: 制作一个 API 就是为最终用户提供一种以简化的方式与你的模型进行交互的方式。假设您的模型根据邻近地区预测了阿姆斯特丹明天将出售的香蕉数量。然后,您的 API 将以这样一种方式设置,它将接收一个邻居名称并返回香蕉的数量。这只是外界与你的模型互动的一种方式。
  • 完整的管道:在你训练好的模型之上,可能会有一个完整的管道。管道是一个完整的产品,包括读取数据、分析、模型构建,甚至将结果准备成最终用户可以轻松访问的格式。如果你问我,在准备好你的模型(从技术角度来说)之后的一切都不再是数据科学,但一些公司更喜欢那些可以参与数据科学团队产品构建的人。这并不意味着你需要工程技能。很多时候,你可能是构建整个管道的更大团队的一员。
  • 分析结果演示:该交付件可以单独请求,也可以与其他交付件一起请求,这种情况很常见。你不仅要分析数据和建立模型,还要以一种易懂清晰的方式展示你的工作。大多数情况下,这个可交付成果是从您的工作中得出结论所必需的,并且有可能影响业务决策。你在这里需要的关键技巧是用非技术人员可以理解的术语解释一个复杂的过程。
  • 一份报告:有可能没有人会主动和你的模型互动,会是阶段性的工作。在这种情况下,该模型将被安排为每周运行一次,并生成某种报告。该报告可以是对数据进行分析的结果,也可以是对某个值的预测。格式可以是任何东西,一个 excel 表,一个 csv 文件,甚至可以是某种可视化或可视化。
  • 仪表板:这是我最不喜欢的交付品。有时,公司需要你准备一种方法来与他们拥有的数据进行交互。虽然这更像是数据分析师的工作,但我已经看到许多公司让数据科学家来做。
  • 建议:有时候,业务人员需要数据科学家来理解数据发生了什么,并向他们解释。你可能会说这听起来像是数据分析师的工作,但不一定。随着人工智能伦理和可解释性的最新需求,公司希望了解 ML 模型如何如此好地拟合他们的数据,以及为什么。因此,你的责任可能不仅限于表现非常好的模型。您可能需要准备一个解释,说明为什么某个模型符合数据,以及哪些要素解释了预测值的变化方式和变化量。

到目前为止,这些是我见过或听过的数据科学家交付的最常见的产品或交付品类型。你可以在上听到许多嘉宾提到这些,所以你想成为一名数据科学家?播客。尽管它们看起来不同,但很多时候你做的工作是相似的:分析和建模。改变的是你最终呈现的结果。

然而,你努力的目标将是你工作的一大部分。对你正在准备的东西感到有动力是很重要的。所以一定要在求职面试中提出来。了解作为一名数据科学家,你将承担什么样的责任。这不仅会显示出你真正的兴趣和知识,还会让你对你申请的工作有更深刻的了解。

🐼想更多地了解熊猫吗? 获取我的免费熊猫小抄。

一个数据科学家每天都在做什么?

原文:https://towardsdatascience.com/what-does-a-data-scientist-do-every-day-d1d0d998d1d3?source=collection_archive---------30-----------------------

对数据科学家职业生涯的逐时观察

上的拍摄的照片

对于数据科学家的日常工作,存在一些误解和困惑。对于他们交付什么,他们做了多少编码,他们和谁一起工作等等,似乎没有一个清晰的理解。这当然不是没有原因的。数据科学家的日常工作在很大程度上取决于公司、团队结构、个人,有时甚至取决于他们所在的行业。但我相信每个数据科学家在日常工作中都会经历一些共同的事情。

在本文中,我将一小时一小时地分享数据科学家的工作,让您更好地了解这项工作需要什么。作为背景,我将谈论一个在一家公司的数据科学团队工作的人。我们将从被分配到一个新项目到交付一个项目开始。当然,一个典型的项目持续的时间要比几天长得多,但是为了这个例子,让我给你一个压缩的时间表。

第一天

上午 9 点

你的主管找你谈一个新项目。你公司的团队 A 需要对他们的数据做些什么。但是你的主管也不知道他们需要什么,因为他们不能很好地向他/她解释。你告诉你的主管你会和他们联系。

你发一封电子邮件或者打电话给请求这个项目的人,和他们以及他们团队中的其他人安排一次会议。

上午 10 点

你在主管的陪同下去参加会议,试着了解他们想要什么。原来他们从其他团队那里听说你预测了他们的 xyz,这真的很有用。他们问你是否能预测他们与 xyz 非常相似的 abc。他们认为,既然您可以使用相同的型号,就不应该花这么长时间。

你向他们解释,即使 xyz 和 abc 非常相似,你也需要使用他们的数据建立一个全新的系统。你告诉他们这个项目需要一些工作。

他们说会给你寄一些数据样本。你同意调查他们的数据,并与他们再次会面,进一步讨论这个问题。

上午 11 点

你接收到少量的数据并熟悉它。你记笔记,写问题,让下一次会议更有效率。

下午 1 点

你与团队 A 会面,以便更好地了解他们需要什么。你听听他们对这个问题的看法。他们使用许多他们领域特有的行话和关键词。每次你有不明白的地方,你都会要求澄清。你也可以在研究数据时问你准备好的问题。你和他们谈得越多,你就越能意识到他们需要的和他们认为的完全不同。
你向他们解释这一点,并告诉他们为什么他们需要的东西不同而且简单得多。
你解释了机器学习的能力和局限性,甚至是一点点关于机器学习模型是如何工作的。
讨论的结果是,你同意了项目的暂定目标。你告诉他们,你需要首先更好地理解问题,然后你可以根据需要修改目标。

下午 2 点

你会接触到一些对团队 A 的系统如何工作有更深入了解的人,还有一些知道团队 A 的数据是如何收集的人。你采访他们以了解领域、数据收集过程和例外情况(如果有的话)。

下午 3 点

你想出一个如何进行项目的计划。你一定要考虑你即将开始的项目的人工智能伦理含义,并记下它们,以便与你的利益相关者(如果有的话)进行讨论。

下午 4 点

你与团队中的其他数据科学家交谈,向他们解释你的方法,并获得他们的反馈。

您根据与领域专家和同事的交谈修改您的计划和目标。

第二天

上午 9 点

你与你的利益相关者会面,向他们展示你修改后的计划。你谈论你从团队 A 领域的专家那里学到了什么,你如何相应地修改目标,你需要注意的潜在道德问题,以及你提出的建议方法。

您与他们讨论内容,并提出交付内容和时间表。您还同意在项目期间定期会面以更新他们。

上午 10 点

你收到所有的数据,并开始探索它。您进行可视化并仔细观察数据,以了解更多关于以下方面的信息:

  • 特征的分布
  • 缺少值
  • 数据中的不平衡
  • 对某一种族、性别、民族或其他群体的偏见
  • 根据数据法则,您可以使用或不可以使用哪些功能

如果数据有任何问题或者你不能理解的东西,比如一个令人困惑的特征名称,你可以回到你在团队 A 中的联系人那里,他知道这些数据并要求他们澄清。

上午 11 点

您将从数据中获得的发现准备成可展示的内容,并将其发送给您的利益相关者或自己展示。如果您的发现带来了新的挑战或影响,您可以与他们分享,并讨论重新调整目标和方法。

下午 1 点

您再次对数据进行处理,找出可以用于手头目标的其他数据源。你对公司内部其他免费可用的数据集以及互联网上可以支持这个项目的其他付费或免费数据源进行了一些研究。

第三天

上午 9 点

您将所有的数据汇集在一起,再次进行探索,这一次要为训练准备好数据。这样做时,您可以:

  • 检测和处理异常值
  • 找到缺失的价值点,并决定替代或消除它们的方法
  • 想办法把你的分类特征包括进去

下午 1 点

你想出一些新的特征来生成。与其他团队成员一起集思广益,讨论如何增加、合并或改变您所拥有的功能,以帮助算法获得更好的性能

根据您所拥有的质量/可用数据的数量,您决定所需的测试数据的数量。您还可以决定如何分割数据,因为这个决定取决于问题的类型。

下午 4 点

您花了一天的大部分时间来清理、生成新特性并准备好训练和测试集。从现在开始,你要专注于训练模特。但是在你开始建模之前,你必须确定这个项目的成功因素。

您根据利益相关者的需求来决定您将使用的评估指标。你再次与他们交谈,以确保你将结果优化到他们需要的程度。您向您的利益相关者解释这一点很重要,因为如果您使用了错误的评估指标,您将为错误的绩效类型优化模型。如果有了错误的性能类型,即使模型表现得非常好,它也可能最终对您的利益相关者不可用。

第三天

上午 9 点

你决定了几个适合这类问题的模型。

您构建第一个模型,并使用您确定的一个或多个评估指标来评估性能。

下午 2 点

您尝试不同的设置和超参数值来提高模型的性能。

第四天

上午 9 点

在实现和训练了几个不同的模型之后,你选择了最有希望的一个。为了获得更高的性能,您尝试创建一些新功能并排除一些功能。

根据您使用的模型,您可以检查功能的有用性,以查看哪个功能有助于模型更好地预测。

下午 1 点

当你达到一个可接受的性能水平后,你就完成了关于你的代码和你在开发过程中编写的模型的文档。

你准备内容以一种可理解的方式展示你的结果。

下午 3 点

你向你的利益相关者展示你的结果,提及你对他们的系统发现了什么,还有什么可以改进的。你同意在一定时间内准备好模型供使用。

第五天

上午 9 点

你与某个将要使用你的模型输出的人取得联系。他们更详细地解释了他们需要的结果格式。

上午 10 点

您会见了一位开发/运营工程师来帮助您部署您的模型。你告诉他/她这个问题,你的模型,你需要数据如何进来,你的模型会产生什么。你们一起制定部署计划。

下午 1 点

您完成代码和文档,并将其发送给开发/运营工程师。当他准备将 it 整合到您公司的生产中时,您与他保持密切联系,回答问题并解决出现的问题。

下午 2 点

同时,您向您的客户团队 A 发送信息,告诉他们一旦部署了您的模型,他们可以如何开始使用它。

下午 5 点

当你结束一周的工作时,你和你的同事谈论一周的工作。你为自己是一名出色的数据科学家而感到自豪。

你接受对你努力工作的赞美。

就是这样!你度过了忙碌的一周,但当你看到你所创造的成果时,一切都是值得的!

我希望你喜欢这个关于数据科学家一周生活的小故事。请记住,这不是对数据科学家工作的完美描述,它仅仅是我的经验和我从播客嘉宾或同事那里听到的故事的结合。根据公司的不同,数据科学家可能有更多或更少的职责。毕竟每个公司都是独一无二的。

我知道有些事情是数据科学家职责的一部分,例如,维护以前构建的模型、每周团队会议、与利益相关者定期开会以让他们了解您的最新进展、实际安排与大组织中的人开会需要多长时间,以及部署您的模型实际需要多长时间。

当然,你也可能想找一个自由职业者的职位,不用说,那种数据科学工作看起来会非常不同。

我写这篇文章的目的是让您稍微了解一下数据科学的世界。希望我实现了!请在评论中告诉我你对此的看法。

👉对数据科学领域以及如何开始学习感到困惑? 免费参加数据科学入门迷你课程

关于数据科学,公共卫生学位教会了我什么

原文:https://towardsdatascience.com/what-does-a-degree-in-public-health-have-to-do-with-data-science-854b99e256e1?source=collection_archive---------20-----------------------

为什么公共卫生研究生课程值得你考虑

哥伦比亚大学梅尔曼公共卫生学院

我看到无数的文章、博客帖子和推文热烈支持或反对为了进入数据科学领域而追求更高学位的想法。我认为这场辩论过于依赖背景,不可能有一方获胜,但大学毕业后追求更高的学位对我来说是正确的道路。通常,我在这些对话中看到的学位只有数据科学、计算机科学和统计学的硕士和博士学位。虽然所有这些学位对数据科学都有明显的价值和相关性,但我想在对话中引入公共卫生学位。

公共卫生领域是关于保护和改善公众健康的,它有一系列广泛的子领域。其中的两个,流行病学和生物统计学,是高度定量的,并且与数据科学有许多共同之处。流行病学是对疾病和其他健康相关状态和事件的分布和决定因素的研究,而不出所料,生物统计学主要关注与健康和医学相关的统计方法。我完成了为期两年的流行病学公共卫生硕士(MPH)课程,并在攻读学位期间获得了宝贵的技能和概念知识。

那么,是什么让这个学位如此适合数据科学职业呢?最重要的是,许多可用的课程都可以直接应用于数据科学领域的职业。课程包括数据科学、机器学习、SQL、地理空间分析、回归、纵向分析以及一系列高级统计方法和研究设计方法*。如果你对数据科学中最重计算机科学的分支(例如数据工程)感兴趣,现有的课程可能不够用,但对于寻找更多分析职位的人来说,有很多东西可以学习。

*注意:各学校在优先考虑 R 和 SAS(广泛用于政府和非营利机构)编程语言的程度上有很大差异,这是在考虑课程时需要考虑的重要因素。一些学校已经在很大程度上过渡到 R,而其他学校仍然坚定地致力于 SAS。在许多情况下,像我一样,你可能两者都学,但严重依赖其中一个。

值得注意的是,“数据科学”这个术语本身是从 2001 年才出现的。然而,流行病学家和生物统计学家几十年来一直在使用数据科学保护伞下的许多技术。在购买研究生课程时,这种寿命是重要的考虑因素。虽然数据科学学位项目在过去几年里层出不穷,但大多数公共卫生学校存在的时间要长得多。这意味着他们有时间管理他们的教员,多次开发课程,并建立强大的校友网络,这对你以后的职业生涯是一个重要的资源。在教授们解决他们课程中的问题时,你不会是最初几个班级的学生之一——相反,你很可能是一台运转良好的机器的一部分,在这台机器上,教授们已经一起工作了多年,开发出了相互补充的课程。

也许流行病学课程的最大好处是它为思考数据提供了丰富的背景。流行病学的最终目标是超越相关性以建立因果关系,并且非常关注研究设计、潜在的偏倚和复杂统计方法的正确使用,以实现这一异常困难的目标。风险也很高——流行病学工作被用于制定临床、政策和资金决策,产生非常真实、非常人性化的后果——因此关于数据质量和统计有效性的问题受到了重视。在这个学位项目上学习两年后,我看待数据的方式完全不同了。我的直觉是批判性地思考我们在数据中真正捕捉到了哪些人口(与我们想要捕捉的人口相比),以及基于数据收集过程我们可以有效地回答哪些问题。虽然查找图像分类教程并训练一个模型来检测皮肤图像上的恶性肿瘤是相当容易的,但流行病学家被训练成对数据进行批判性思考,例如质疑该模型是否是使用全范围的肤色训练的(通常不是),以及如果不这样做可能会对模型在已经被边缘化的人群中的性能产生影响。这些问题在医疗保健之外也有重要的后果(想想警察部门使用的面部识别软件),流行病学培训使识别和应对这些破坏性陷阱变得更加容易。流行病学思维在更良性的环境中也是一种资产,比如考虑你的销售数据是否准确地代表了你的所有客户,或者你是否能真正将销售的变化归因于广告活动。

如果你对医疗行业的数据科学工作感兴趣,公共卫生学位尤为重要。在现实世界的问题背景下,通过真实的医疗保健数据来学习统计学和算法的用法是非常有价值的,并且有许多选修课可供您选择,以更好地了解您将要处理的疾病的临床知识。这些课程,如“癌症流行病学”或“精神病学流行病学”,也涵盖了最常用于研究这些疾病的研究设计和分析技术——这些材料你可能不会在标准的统计学或数据科学学位中涵盖。许多后来进入医疗保健行业的数据科学家缺乏这种行业特定的知识,这可以让你在申请过程中脱颖而出,也让你更容易做好工作。

最后,大多数著名的公共卫生项目保证你毕业时有非常有市场价值的经验。同样,这些项目已经存在了几十年,这意味着它们有时间与各种公司和组织发展关系,可以帮助你获得成功。我的学校要求在项目的第一年和第二年之间有一段“实习”经历(实质上是实习),并在寻找和获得这些宝贵机会方面提供帮助。有了这一要求和支持,在医疗保健公司或相关组织获得数据科学经验变得容易得多,这也可能导致未来的工作机会。此外,大多数项目要求毕业论文。虽然流行病学和生物统计学硕士论文通常远没有博士论文那么令人生畏,但它们本质上是可发表的长达一年的数据科学项目,可以为你的简历和求职面试提供出色的经验。

虽然我的 MPH 经历非常积极,对我来说是正确的选择,但我坚信追求任何高级学位的决定都是高度个人化的,取决于你独特的环境。然而,我确实相信,如果你正在寻找一个学位项目,特别是如果你的长期目标是在卫生领域工作,那么公共卫生的定量学位更值得你考虑。

一个 AI 系统怎么看待奥地利?

原文:https://towardsdatascience.com/what-does-an-ai-system-think-about-austria-573c2f17ca01?source=collection_archive---------31-----------------------

关于 GTP2 语言模型的一些实验

www.pexels.com T2

自然语言处理(NLP),即计算机程序以这种方式理解人类语言的能力,是人工智能(AI)的一个应用领域。用大量文本创建(“训练”)的语言模型是 NLP 的重要基础。这些文本通常来自互联网上发表的文章,因此反映了作者的观点。

大量使用这种“训练文本”的现代语言模型是否代表了普遍观点?

在这篇文章中,我想通过一个关于奥地利观点的语言模型来研究这个问题。

使用了来自“Open AI”的模型“ GPT2 ”,这是一个强大的英语系统,它是用 40GB 的文本数据创建的。我使用最大的可用变量,其中优化了 15 亿个参数。

Max Woolf(“gp T2-simple”)的实现是在“ Google 联合实验室”上进行实验的基础。

如果你想了解更多关于 GPT2 的信息,你可以在这里找到介绍:

[## 了解新 GPT 协议源代码第 1 部分

试验 OpenAI 的 GPT-2 算法并学习其源代码

medium.com](https://medium.com/analytics-vidhya/understanding-the-gpt-2-source-code-part-1-4481328ee10b)

我们从在 Google Colab 中安装和导入所需的包开始。

然后我们下载模型。

我们现在可以使用语言模型来继续给定的文本。通过选择一个合适的起始文本,我们试图找出语言模型对奥地利的“想法”。

通过设置参数来确定文本应该有多长(长度),我们想要多少不同的延续(样本),以及模型应该有多“有创意”(温度),我们让模型生成新的文本。

让我们看一些初始文本和延续的例子:

“奥地利最受欢迎的人是……”

  • 奥地利最受欢迎的人大概是社民党党首加布里尔。他的政党在 2016 年 10 月的议会选举中赢得了最多的选票
  • 在奥地利,最受欢迎的人仍然是女王,但是越来越多的人喜欢…
  • 在奥地利,最受欢迎的人几乎总是拥有最豪华的汽车,也是全世界羡慕的汽车。

该系统似乎不太确定奥地利最受欢迎的人。在这里,我们这个小国与欧洲的大邻居德国(“社民党老大加布里尔”)和英格兰(“女王”)混为一谈。对于一个“美国语言模型”来说,这是意料之中的。第三个答案不仅幽默,或许还很贴切,即使不仅仅是在奥地利。

“奥地利最美的地方是…”

  • 奥地利最美的地方是维也纳附近的山谷。山谷的顶端是斯特劳斯巴赫村。
  • 奥地利最美丽的地方在维也纳附近,这个美丽的地标将会变得更加美丽和华丽,因为它将被卖给俄罗斯开发商 STX。
  • 奥地利最美的地方是维也纳附近的双年展艺术别墅,它以古老的乡村风格装饰。

这里的焦点是维也纳及其周边地区。

“在奥地利的历史上,经常有……”

  • 在奥地利的历史上,经常有这样的例子。一个国家的人民,生活在这样一个问题几乎是未知的时代,抗议国家社会主义
  • 在奥地利的历史上,经常有与中国人有关的问题。
  • 在奥地利的历史上,很少有邻居在和平与睦邻关系中并肩生活和工作。

一些历史知识似乎是有的。但事实上,与中国的关系经常出现问题,这似乎有点奇怪。

“奥地利最受欢迎的运动是…”

  • 在奥地利最受欢迎的运动仍然是足球,在维也纳,它也是最受欢迎的运动。
  • 奥地利最受欢迎的运动是跑步。每年都会举办一些户外联赛,还有几个以高中为基础的跑步俱乐部。
  • 在奥地利最受欢迎的运动是足球,但其他形式的运动也变得很受欢迎。

足球作为最受欢迎的运动当然是真的,但它也可能是一种侥幸,因为这是许多国家的真实情况。奥地利跑步的重要性被误判了。对我们来说如此重要的冬季运动却一无所知,这有点令人惊讶。

“奥地利的气候是……”

  • 奥地利的气候温暖而温和。7 月平均最高气温为 11℃,最低气温为-2℃,最高气温出现在 12 月。
  • 奥地利的气候与欧洲其他地方不同。每年夏天,白雪覆盖了这个国家的一些最高的山脉,这个国家经历了地球上最温暖的夏天。
  • 奥地利的气候当然非常温暖,这是一个与圣贝纳迪诺恋爱的好理由。

天气一直被认为是温暖的,这在气候变化的背景下并非不准确。然而,温度数字并不匹配。

总之,值得注意的是,语言模型能够写出语法正确的句子,而不是完全随机的废话。但是该模型的事实知识是大量非结构化文本的结果,是相当不可靠的。

如果您想尝试自己的启动文本,您可以在以下网址找到完整的 Google Colab 文档:

[## 谷歌联合实验室

实验

使用 GPT 2 colab.research.google.com](https://colab.research.google.com/drive/1_1iiwkrKZ4TiKXqv50a73DqfU0jRfJZd)

计算机视觉在 2020 年美国大选新闻提要中看到了什么?(第二部分)

原文:https://towardsdatascience.com/what-does-computer-vision-see-in-the-2020-us-election-news-feed-part-2-2-908e836fb066?source=collection_archive---------54-----------------------

第二部分——使用 Python 可视化人工智能注释图像的分步指南;2020 年美国大选图像分析

来源:Unsplash.com 搜索词:唐纳德·特朗普;Srinivas Vadrevu 的分析

person= You; #yes its you,dear reader!
print("Thanks for viewing this article")If Person.read_article([Part1](/what-does-computer-vision-see-in-the-us-election-2020-news-feed-part-1-2-a558ec7ccaa0))= False:

     print("Please check out the Part 1 of this series..") urlopen([Part1](/what-does-computer-vision-see-in-the-us-election-2020-news-feed-part-1-2-a558ec7ccaa0)) #please click on the Part1 hyperlinkunlock(Part2) # else unlock part2
print("Please scroll down. Happy reading!") | 

在我写这篇文章的时候,美国大选正一步步接近边缘。拜登-特朗普的票数为 264-213,拜登还需要 6 票才能赢得选举。我想知道前一段时间的差距有多小(224-213),我认为这些数字源于他们竞选的活力和一年多来的媒体报道。在阅读了第 1 部分之后,您现在已经有了一个关于美国选举的大量图像分析数据集,并且您已经准备好通过可视化引擎来搅动它以获得洞察力。这篇文章更像是可视化图像分析的指南,而不是见解本身。因此,我首先从可视化的代码、解释和结构开始,然后从新闻提要中获得一些见解

2A)图像分析数据的可视化方法、代码和图示

国会图书馆Unsplash 上拍摄的照片

为了便于说明,我从 Unsplash 收集了一些图像,展示如何处理和可视化图像网格中的数据。是的,我们将在坐标轴上绘制图像,就像您绘制数据点一样!

因此,我在unsplash.com上搜索了“唐纳德·川普”和“乔·拜登”,为每个查询词找到了大约 15-20 张图片。

对于“Donald Trump”和“Joe Biden”的这几批 URL,我调用了 runvisionai 函数(如果您绕过了开放代码,请参见 Part1 了解更多信息)来构建广泛的特征类别级别数据集。

你还记得 label_df 数据帧吗?我将它或它的子集分配给 test_label。

test_label=label_df['source_term'=="Donald Trump_site:Unsplash.com"
test_label['Query/alt'].fillna("NA", inplace = True) 
test_label=test_label.sort_values(["img_num"],ascending=(True))
display_images(test_label)

从这里开始,有许多可能的方法来可视化图像数据集。TI 希望构建一个视图,为我提供一个网格中所有图像的一站式概览,以及与第一个图像网格结构类似的另一个网格中每个图像的相应特征图表。

比方说,我想显示唐纳德·特朗普图像子集中所有图像的网格,其中云视觉 API 已经注释了至少一个标签。我想设计一个函数,允许我传递子集' test_label '数据帧并检索图像网格。创建我的代码模式的需求如下所示:

图 1:以类似网格的方式表示图像的草图

  • 我需要整个网格的主要情节和图像网格的每个 URL 图像的子情节。(Gist2) →
  • 我传递一批图像 URL 并提取不同的 URL(gist 2)
  • 根据图像的数量,我设置了我的子情节尺寸(行、列、宽和高)。为了更容易阅读,我将网格的列数限制为 4。

对于每个 URL,我将使用 Python 图像库(PIL)打开、读取并转换 URL 为 PIL 图像(Gist1 中的函数在 Gist2 中调用)→

对每个 URL 的循环运行显示每个子情节中的图像,并重复它,直到所有图像都被绘制出来。

要点 1:从 URL 返回 PIL 图像的函数

要点 2:在网格中绘制图像

2a.1 标签识别和可视化:

上述函数的输出是所有图像的一站式概览网格,Cloud Vision API 为这些图像识别了至少一个标签。您可以在下面找到它:

图 2:所有已经被 GCP AI 的 label_detection 标注的图片的图像网格。来源 Unsplash.com;搜索词:唐纳德·特朗普;Srinivas Vadrevu 的分析

对于上面的网格,我想以同样的顺序绘制标签图表,以便快速浏览标签网格中的关键趋势。如果一张图片弹出了任何有趣的标签,我需要在标签网格中找到与标签条形图坐标相同的对应图片。标签网格的逻辑与图像网格非常相似。您可以在下面找到代码:

要点 3:在标签网格内绘制标签图表,其尺寸与图像网格相同

我使用条形图来表示标签,按照置信度得分的降序排列。上面图像的标签网格输出如下图所示。让我们仔细看看下面的图像 9(第 2 行:第 3 列),并在图像网格的(第 2 行,第 3 列)中找到它的对应图像。

图 3:在与图像网格具有相同尺寸的标签网格内绘制的标签条形图子图,其中 y 轴为标签,x 轴为置信度得分;Srinivas Vadrevu 的分析

图 4:支线剧情中的 Img9 来源:https://unsplash.com/photos/s8RnzkNHrcM;

例如,IMG-9(下面网格中的 2x 3)的标签不同于其他标签条形图。主要的标签是雕像、玩具、缩微模型、卡通、纪念品和活动人偶。您可以通过查看图 4 中的图 9 来确认这一点

我可以即时想到一些应用程序。其中一个是在家庭安全领域,当 CCTV 图像馈送同时检测到抗议和人群标签时,就会触发移动通知来通知住户。

2a.2 目标检测和可视化

逻辑和代码与标签检测和可视化部分非常相似。逻辑相同,但结果略有不同。除了服装和配饰,照片中没有任何引人注目的东西。图像加载后,您可以放大查看下面的图像和对象网格。

图 5:所有图片的图像网格,已经由 GCP AI 的 object_detection 注释。来源 Unsplash.com;搜索词:唐纳德·特朗普;Srinivas Vadrevu 的分析

图 6:y 轴为对象,x 轴为置信度得分的对象子图,绘制在与图像网格(左)具有相同尺寸的标签网格内;Srinivas Vadrevu 的分析

2a.3 .人脸检测和可视化:

要点 4:在一个与图像网格尺寸相同的网格内绘制面部情感线

对于人脸检测和可视化,我不得不稍微修改一下代码。对于每张脸,我们有五种不同的面部情绪/特征:快乐、悲伤、愤怒、惊讶和模糊。除了这些,还有曝光和头套功能。对于这个项目,我需要情感分数和一个非情感特征来观察和比较。

每种情绪都按照 0-5 的可能性评分,其中

0:未知,1:非常不可能,2:不太可能,3:可能,4:可能,5:非常可能。

我想在 x 轴有分类值的点状图中表现情感。因此,我将数据集的跨选项卡结构扁平化,将不同列中的情绪放在一列中。情感网格和图像网格按照这个顺序绘制在下面。

从下面的情绪网格中,你可以观察每张脸在每种情绪下的得分。图 6 是脸部和他们的情绪的鸟瞰图。

如果你想描绘每张图片的情感,我更喜欢为图片中的每张脸创建一个边界框,并在框的旁边显示情感。从下面的表格中可以清楚地看到,前三张图片包含了一个快乐的人。你能在图像网格中找到它们吗?

图 7:在与图像网格(左)具有相同维度的网格内绘制的 y 轴为似然性度量,x 轴为情感类别的面部绘图线;Srinivas Vadrevu 的分析

图 8:GCP AI 人脸检测标注过的所有图片的图像网格。来源 Unsplash.com;搜索词:唐纳德·特朗普;Srinivas Vadrevu 的分析

2a.4 颜色识别和检测:

Gist5:将 colors_df 中的 RGB 值转换为十六进制格式

这类似于面部情绪,因为每种颜色都有红色、绿色、蓝色、alpha 和像素分数值。我将 RGB 值转换成十六进制值来标记颜色。我使用树形图来绘制颜色和像素分数值,以显示颜色组成。

图 9:在与图像网格尺寸相同的网格内绘制的彩色树形图(左);Srinivas Vadrevu 的分析;资料来源:unsplash.com

您可以看到红色、黑色、灰色和棕色是唐纳德·特朗普相关图片的常见颜色。

2a.5 安全搜索检测和可视化

除此之外,您还可以检查安全搜索的显式参数。您可以对成人、医疗、欺骗、暴力和色情图片使用可能性度量。我已经采取了 4 张插图的照片。在下面的例子中,第一个和第四个图像是欺骗,图表证实了这一点。

图 10:在与图像网格(顶部)具有相同尺寸的网格内绘制的安全搜索绘图线,其中在 y 轴上是可能性度量,在 x 轴上是安全搜索类别;Srinivas Vadrevu 的分析;资料来源:unsplash.com

准备好 AI 图像注释和可视化的代码后,我们现在可以将该算法部署到

  • 分析网站、google images 或使用 NewsAPI 中的图片
  • 构建强大的影像分析数据集,以及
  • 创建要素的鸟瞰图可视化,以获得洞察力。

2b。计算机视觉在美国选举新闻提要中看到了什么?

一、新闻文章

来源:我拿了两个主流媒体网站,了解他们报道 2020 美国大选新闻时对图像的选择取舍。他们的网站链接如下。我所使用的方法非常类似于上面概述的用于 Unsplash 图像的方法。

[## 2020 年美国大选:拜登、特朗普和投票的最新消息

竞选过程中你需要知道的:特朗普总统将访问密歇根州、爱荷华州、北卡罗来纳州、乔治和…

edition.cnn.com。](https://edition.cnn.com/politics/live-news/us-election-news-11-01-2020/index.html) [## 随着竞选接近尾声,早期投票接近 1 亿张

特朗普总统正在前往他在民调中落后的四个关键州,并已经准备好挑战…

www.nytimes.com。](https://www.nytimes.com/live/2020/11/02/us/trump-biden-election)

我将过去 12 天,即 10 月 20 日至 10 月 31 日,作为本文的样本。我建立了图像分析数据集,并为这段时间内发布的所有图像创建了可视化效果。我发现将时间范围划分为 3 天的窗口更容易,以确保每个窗口中有足够的图像进行有意义的分析。在这一部分中,我将集中讨论关于标签、物体、地标和标志的出版物之间的区别。在下面的所有图表中,x 轴代表计数,y 轴代表特征。我通过在 5x2 的网格中改变 3 天的窗口和网站来绘制带注释的标签、徽标和对象。

就标签而言,您可以查看链接中的图片,并与下面的图表进行比较,以区分突出的标签。

10 月 29 日至 31 日:与 CNN 相比,NYT 在这一时期似乎有许多主题和注释标签。有趣的是,你可以观察到右边有不少汽车相关的主题——{机动车、汽车设计、汽车外观、汽车、陆地车辆、车门}。在左侧,您可以找到与航空旅行/飞机相关的标签。一些照片可能是在不同州的竞选集会上登机或下飞机时拍摄的。颜色标签,红色和蓝色,是两个网站通用的。

10 月 26 日至 28 日:右边的标签又多了很多种类。有趣的是,你可以在 NYT 图像中观察到建筑、建筑和罗马神庙的主题。如果我没有看图像就看到了这些图表,我推断左边的照片是带有美国国旗的演讲照片和飞机着陆后/登机前的照片。右边的照片似乎包含了更多充满活力的主题,如大都市、建筑、城镇、高能见度服装、城市和地标以及演讲。我推测,由于主题的多样性和活力,后一组标签可能比前一组标签在网站上有更多的参与度。

您可以将单个标签链接到网站参与度指标,如跳出率、会话持续时间、页面/会话,以查看是否有任何标签持续推动更好的网站参与度表现。

10 月 20 日至 25 日:类似上述观察。如果你发现其他有趣的模式,请在文章中评论。

图 11:标注在三天窗口和新闻网站上的标签;Srinivas Vadevu 的分析

如上所述,我也绘制了人工智能识别的物体和标识。你可以在下面放大查看。同样,与左侧相比,图表右侧的徽标种类更多。

图 12:标注在三天窗口和新闻网站上的徽标(网格行:时间窗口,网格列:网站;Srinivas Vadevu 的分析

图 13:跨三天窗口和新闻网站标注的对象(网格行:时间窗口,网格列:网站);Srinivas Vadevu 的分析

从图片中识别的地标以及经度:

从地标数据中,你也可以在图片中看到人工智能识别的地标的经度。你可以在下面查看它们的开普勒图像。

图 14:从新闻网站识别并在开普勒上绘制的地标的可视化;Srinivas Vadrevu 的分析

其他特征:颜色和面部表情会产生有趣的视觉效果。我发现许多图片经常投射出快乐,偶尔会依次出现模糊、愤怒和悲伤。

我没有探索过面部的物理特征,比如滚动、倾斜、平移角度、面部界标以及边界多边形之间的距离。但是一些想法可能会很有趣。例如,人脸的边界框可以用于自动进行社交距离检查。您可以映射识别的人脸数量、一个人是否戴着面具(标签/物体),以及人脸边界框之间的距离,以检查是否遵循社交距离。

二、议案谷歌搜索对比了反弹:

为了查看多个新闻网站的图片,我使用谷歌图片提取了所有与总统候选人集会相关的图片。在本例中,我将搜索查询“拜登集会 2020”得到的图像与查询“特朗普集会 2020”得到的图像进行了比较。对于这些查询,我提取了 100 个图像,每个图像都用于注释和分析。在所有可视化效果中,拜登拉力赛的图像在左侧,特朗普拉力赛的图像在右侧。

标签

  • 这些标签对两种查询都很常见:人群、粉丝、观众、人物和粉丝——这些都是你在集会照片中所期望的。
  • “特朗普拉力赛 2020”场景中的图像也有标签,如体育场、竞技场、运动场馆、大会和运动场。我们可以推断,这些地方是唐纳德·特朗普(Donald Trump)集会演讲的热门拍照地点。
  • 就乔·拜登的集会图像而言,诸如新闻发布会、新闻、机动车和欢呼之类的标签与通用标签一起出现。

物体:

  • 特朗普集会图像中的物体也出现在拜登的集会图像中。这两个查询的共同对象是西装、外套、衣服、领带、旗帜和外套。这些通常是从他们的服装中识别出来的物品。
  • 与特朗普的集会图像相比,乔·拜登的集会图像似乎有更多种类的物体。乔·拜登(Joe Biden)集会照片中的独特物品是汽车、麦克风、手机、太阳眼镜、行李包、衬衫和服装。
  • 有趣的是,汽车和机动车似乎在乔·拜登的标签和物品中很常见。即使在第一组网站图像分析中,机动车也经常出现在乔·拜登的图像中。

标志:

您可以查看下面的徽标图表。为了得到至少 5 个标识,我将标识识别置信度分数放宽到 0.5,而不是我用于标签和物体的 0.9。下面的图表中有人工智能为每个查询识别的公司标志列表。在某些情况下,它运行良好。例如:本中阿迪达斯标志置信度为 0.8 分。

对于大多数其他情况,置信度得分在 0.5-0.6 之间,所以要有所保留。例如,在这张图片中识别出了 WeWork 徽标。我不确定从图片上看是否明显。你可以试着发现它——一个寻找瓦尔多的练习。

图 15:为源自拜登拉力赛 2020 的谷歌搜索的图像标注的标签(左)和源自特朗普拉力赛 2020 的谷歌搜索的图像的标签(右);Srinivas Vadrevu 的分析

图 16:为来自拜登拉力赛 2020 的谷歌搜索的图像标注的标识(左)和来自特朗普拉力赛 2020 的谷歌搜索的图像的标识(右);Srinivas Vadrevu 的分析

图 17:为源自拜登拉力赛 2020 的谷歌搜索的图像注释的对象(左)和源自特朗普拉力赛 2020 的谷歌搜索的图像的对象(右);Srinivas Vadrevu 的分析

面孔:

快乐是最常见的面部情绪,其次是模糊的特征。两个查询的每个情感得分的中值是 1(不太可能检测到情感)

图 18:源自拜登拉力赛 2020 的谷歌搜索的图像的面部情绪网格(左)和源自特朗普拉力赛 2020 的谷歌搜索的图像的网格(右);Srinivas Vadevu 的分析

颜色:

这两组的颜色 RGB 和像素分数绘制如下。

图 19:来自拜登拉力赛 2020 的谷歌搜索的图像的彩色网格(左);来自特朗普拉力赛 2020 谷歌搜索的图像的颜色网格(左)

结论

如果一张图片对消费者来说值一千个字,那么随着人工智能和计算机视觉算法的兴起,它对组织的价值会放大数倍。我们已经看到,计算机视觉可以解开仅来自图像的巨大数据仓库。在美国选举新闻源图像分析的情况下,我们可以提取大量的图像数据集,并搅动它们以产生洞察力。您可以在现有项目中使用这些文章中概述的代码,或者将其扩展到新的应用程序中。

如果我们可以使用这些图像数据点作为前因或独立变量来解释对结果 KPI 的变化/影响,许多应用和操作化将会实现。一些例子包括:

  • 在这种新闻提要的情况下,我们可以观察到结果度量增加的趋势,例如,当选择了具有特定特征集的图像时,知道该新闻文章的印象数、阅读数和花费的时间。
  • OTT 平台的缩略图可以通过颜色、情感、姿势、标签和她通常使用的缩略图的对象属性来识别客户偏好,从而实现个性化。对于未来的发布,该平台可以通过将焦点客户偏好映射到存储库的图像属性,从新的电影图像存储库中识别缩略图选择。
  • 对于产品公司,您还可以通过对用户社交媒体帖子的图像情感分析来了解用户如何参与产品,并使用标签和对象功能对消费者进行细分。
  • 这也可以应用于监控和安全领域——当某些特征出现在来自 CCTV 馈送的图像中时进行识别和触发通知。
  • 或者,尝试通过这种算法将你的照片标记到你的照片上,让数据揭示你的摄影风格(从角度数据点)

我认为,在使用人工智能和图像分析的洞察力和可视化方面,我们只是触及了表面。快乐探索数据的海洋!

文章中使用的图片来源:

下面是我用来绘制图像网格的 Unsplash 的图像。感谢所有的摄影师。

[## 戴夫·戴维森在 Unsplash 上拍摄的照片

2014 年 10 月 18 日在宣布竞选总统之前,唐纳德·特朗普参加了国会议员史蒂夫·金的筹款活动…

unsplash.com](https://unsplash.com/photos/wUbxCL-WXow) [## Sebastian Pociecha 在 Unsplash 上拍摄的照片

下载 Sebastian Pociecha 拍摄的德国科隆服装、服饰、风帽和毛衣的免费高清照片…

unsplash.com](https://unsplash.com/photos/D86EPYMO6iE) [## roya ann miller 在 Unsplash 上拍摄的照片

下载这张由罗亚·安·米勒拍摄的美国华盛顿的人、人、人和华盛顿的免费高清照片…

unsplash.com](https://unsplash.com/photos/xsdFiNPV0nc) [## 克里斯·博斯在 Unsplash 上的照片

下载克里斯·博斯在美国纽约拍摄的人、人、配件和附件的免费高清照片…

unsplash.com](https://unsplash.com/photos/5dGzPxy-qlk) [## 米歇尔·邦克斯基在 Unsplash 上的照片

下载米歇尔·邦克斯基在美国北卡罗来纳州阿什维尔拍摄的特朗普、政治、阿什维尔和北卡罗来纳州的免费高清照片…

unsplash.com](https://unsplash.com/photos/EwFgxZxgDAM) [## 照片通过捕捉人心。在 Unsplash 上

下载此免费高清照片的人,人,人和特朗普捕捉人心。(@死 _ _ _ _ 艺人)

unsplash.com](https://unsplash.com/photos/YI5DzUUFvqQ) [## 查尔斯·德鲁维奥在 Unsplash 上的照片

下载这张由 Charles Deluvio (@charlesdeluvio)拍摄的文字、报纸、人和人的免费高清照片

unsplash.com](https://unsplash.com/photos/9BXL-Vn22Do) [## 照片通过捕捉人心。在 Unsplash 上

下载此免费高清照片的人,人,人和横幅捕捉人心。(@死 _ _ _ _ 艺人)

unsplash.com](https://unsplash.com/photos/9Kc7mQKq-zA) [## 尤尔根·哈兰在 Unsplash 上的照片

我偶然发现了这些为特朗普访问俄罗斯制作的俗气头巾..下载约根·哈兰的这张照片…

unsplash.com](https://unsplash.com/photos/QVeRgFErOPs) [## 照片由 Unsplash 上的 mana5280 拍摄

下载这张由 mana5280 (@mana5280)拍摄的玩具、小雕像、人和人的免费高清照片

unsplash.com](https://unsplash.com/photos/s8RnzkNHrcM)

计算机视觉在 2020 年美国大选新闻提要中看到了什么?(第 1/2 部分)

原文:https://towardsdatascience.com/what-does-computer-vision-see-in-the-us-election-2020-news-feed-part-1-2-a558ec7ccaa0?source=collection_archive---------52-----------------------

第 1 部分-生成批量人工智能注释图像和预处理数据,以构建特征级图像数据集。

从美国选举 2020 图像的样本批次上标注的数据生成的数据可视化网格;丹丹尼斯Unsplash 上的背景照片;Srinivas Vadrevu 的分析

编辑:

这是两部分系列的第一篇文章。你可以在这里找到第二部分的链接

由于图像在顾客购买过程中的普遍性和重要性,视觉内容策略现在已经成为市场营销不可或缺的一部分。然而,视觉内容创作主要植根于隐性知识和创造性领域。然而,随着计算机视觉的出现,公司应该将人工智能用于建立对图像特征的明确知识,以探索什么驱动印象并影响购买决策吗?换句话说,人工智能生成的数据补充创作过程的时机成熟了吗?随着美国大选的临近,我选择它作为当前的营销背景来使用 Cloud Vision AI,并在本文的第一部分解释如何建立广泛的特征级数据集。

我相信你一定听说过这句谚语...

“一幅画胜过千言万语”

图 1:早期广告的模糊版本,强调形象的重要性,由弗兰克·巴纳德于 1921 年创作;来源:http://www2.cs.uregina.ca/~hepting/projects/pictures-worth/

你知道这句英语谚语起源于广告吗?虽然它最初是一句亚洲谚语,但一些早期的广告商用它来强调图片在产生印象中的重要性。

弗兰克·巴纳德在 1921 年的广告是这样说的:

“奶油甜很好吃”是一个很短的短语,但如果在一年中每天早上、中午和晚上向许多人展示该产品的诱人图片,它会比在相同数量的人面前放置一千字的广告销售更多的商品,一年中只有有限的几次…

仅仅是对有价值产品的良好印象的优势提醒消费者一次又一次地购买它”——弗兰克·巴纳德

[## 一张照片值| D. H .赫普廷博士

“一图抵一万字”这句话对你来说意味着什么?如果…它变得更有意义还是更无意义

www2.cs.uregina.ca](http://www2.cs.uregina.ca/~hepting/projects/pictures-worth/)

虽然有点讽刺的是,你在上面的广告中看不到任何图片,但它强调了通过其媒体(在汽车上)的图像在给观众留下良好印象方面发挥着重要作用。这些印象可能会影响他们购买产品的决定。是的,当时“印象”这个词不仅仅是一个营销 KPI 指标。

当你从 1921 年快进到今天,你发现自己在照片、广告牌、电视广告、互联网广告、模因、展示广告、Instagram feed 和其他社交媒体等方面加速前进。在令人眼花缭乱的旅程之后,你看到你正在浏览 Twitter 上的一些帖子,这是你日常工作的一部分。弗兰克·巴纳德(Frank Barnard)的汽车作为获取用户的渠道,他们的印象现在被社交媒体 feed 取代。你在 feed 中看到一个帖子(见下文),在向下滚动之前花了五秒钟考虑新产品。你会对耳塞留下一个“印象”,这可能会影响你未来使用该产品的决定。弗兰克·巴纳德一点也不知道他对广告图像的拍摄在 100 年后仍有意义。

最近的调查通过其发现强调了视觉图像在广告中的重要性和普遍性:

  • 60%的消费者表示,他们更有可能考虑或联系在本地搜索结果中有图片显示的企业
  • 67%的消费者表示,在选择和购买产品时,产品形象的质量至关重要。

动机和背景:

每 3 个顾客中就有 2 个依靠视觉创意做出购买决定,视觉创意在营销中的重要性怎么强调都不过分。然而,根据我最近和一些创业公司的经验以及阅读的大量材料,我认为视觉内容策略主要涉及(1)受众及其目标,(2)品牌形象及其目标,以及(3)分销媒体。然而,实际的图像内容和组成主要是一种创造性的努力,是建立在营销人员的隐性知识上的结果。所以这篇文章背后的动机是探索使用机器学习/计算机视觉来分析图像的可能性,并检查 AI 是否可以生成关于内容策略的明确知识,以补充创建视觉内容的创造性努力。在我看来,人工智能图像分析可以为视觉内容营销打开更多的可能性,正如 sabermetrics 在 21 世纪初对棒球世界所做的那样。

总统候选人发布的推文

设定背景:随着总统竞选活动如火如荼地进行,选举即将来临,我想不出比这更切合当前和相关的营销背景了,总统候选人正在积极主动地向美国民众推销自己,以争取投票(阅读。

购买)用于即将到来的 2020 年 11 月 3 日的选举。浏览下面列出的两篇文章,可以发现图像/图片(阅读视觉媒体)在影响选举(阅读购买决策)中的作用。此外,由于新冠肺炎,图像的作用只是被放大了。我知道这有点牵强,但我们似乎确实在政治活动和公司营销努力之间有相似之处,尤其是在形象的作用上。

[## 摄影如何在总统选举中扮演重要角色

这张照片展示了巴拉克·奥巴马总统和他的妻子,第一夫人米歇尔·奥巴马,在一次…

time.com](https://time.com/4439540/winning-the-white-house-lightbox/) [## 媒体影响选举的六种方式

安德拉·布里恰切克的故事。瑞安隆德和亚伦纳尔逊视频。照片由谢弗邦纳和 Karly DeWees。问唐纳德…

journalism.uoregon.edu。](https://journalism.uoregon.edu/news/six-ways-media-influences-elections)

在设置了背景之后,我决定分析当前主题美国 2020 年选举活动的视觉内容,这些内容来自不同的来源,如谷歌图像、报纸网站和新闻 API,以将计算机视觉用于图像分析。我把主要文章分成三个部分-

  • 围绕给定主题聚合一组图像(本文中的美国 2020 年大选)- 第 1a 部分
  • 通过视觉人工智能批量处理图像,为每幅图像添加注释特征- 第 1b 部分
  • 可视化特性以获得洞察力- 第二部分

在本文中,我将详细介绍前两个部分,以及从互联网上的一批图像中生成人工智能注释特征数据集的代码。在第 2 部分中,我将讨论更多关于绘制这些数据集的图表,并探索从中获得的见解。

第 1a 部分:数据收集-围绕一个主题聚合一组图像-2020 年美国大选

我想建立一个个人图像数据集,用于收集过去几周内关于 2020 年美国大选的照片。为此,我确定了创建图像数据库的不同来源,每张图片都将由 ML 进行注释。我列出了三个来源,代码,以及从这些来源收集 URL 的方法-

a) 新闻 API

照片由 Siora 摄影Unsplash 上拍摄

这是一个易于使用的 HTTPS REST API,您可以在其中请求关于为查询生成的文章的“一切”。您文章的“一切”端点为您提供:

状态、总结果、文章、来源、作者、标题、描述、URL、URL 到图像< the link to the image in the article>、发布和内容

您可以找到下面的代码(Gist 1)来调用 NewsAPI 并将数据推入 pandas 数据框中,以便于阅读。

要点 1:将新闻文章从 NewsAPI 拉入 pandas 数据框的代码

在要点中,我键入 URL 参数,并以 JSON 格式从 NewsAPI 收集响应。从 JSON 文件中,我选择文章并循环添加文章的属性,包括图片 URL。

Edho PratamaUnsplash 上的照片

b)谷歌图片搜索- 围绕一个主题的另一个图片来源是谷歌图片。这是任何人寻找与某个主题相关的图片的单一接触点。在寻找将谷歌图片放入数据集的方法时,我看到了这篇由@fabianbosler 撰写的文章。对于任何希望在互联网上负责任地抓取图片的人来说,这绝对是一本好书。

我在那篇文章中使用了 gist 代码来提取美国选举新闻的图片和 URL。

新闻网站——除了新闻网站本身,还有什么更好的美国 2020 年选举新闻图片来源呢?许多受欢迎的新闻网站正在为开发者创建他们自己的 API 来访问他们的数据。你可以在他们的网站上找到 API 文档和端点。其中有几个是https://developer.nytimes.com/http://developer.cnn.com/(即将推出)。如果网站没有 API,您可以尝试经典、漂亮的 soup 包来抓取网站的图像 URL。

假设你想搜集 abcdef.com 网站上 10 月 18 日到 10 月 31 日之间的所有文章。首先,您可能希望检查网站 URL 的结构,以识别可以循环生成文章 URL 的任何日期字符串。对于每个 URL,您可以找到网站上的所有图像,获取它的“src”,将它们附加到一个数据框中,并重复迭代您需要的所有文章 URL(基于日期)。

要点 2:调用 beautiful soup 提取主文章 URL 中的图片 URL

在你从网上刮下任何东西用于个人或商业用途之前,通读使用/服务条款以检查你是否违反了任何条款通常被认为是一种好的做法。

使用这些方法的组合,我从几个覆盖美国 2020 年选举新闻的热门网站收集了图像,以建立一个广泛的图像数据集来分析趋势。图像 URL 的列表存储在 links_df 中。可以将唯一的 URL 提取为注释列表。可能会有这样的情况,同一个 URL 可以从不同的来源提取,就像来自一个新闻网站的同一个图片出现在 Google 搜索图片中一样。

url_list= links_df['urls'].unique().tolist()

步骤 1b:使用 Cloud Vision API 对收集的图像进行批量注释,并将 JSON 响应转换为数据帧

准备好图像 URL 数据集后,我使用 Cloud Vision API 通过它们的 REST API 来注释各种功能。为此,我创建了一个 GCP 项目,启用了 Cloud Vision API,创建了一个服务帐户,并以 JSON 格式生成了用于身份验证的私有凭证。然后,我使用终端创建了一个虚拟环境来安装谷歌云视觉库。

virtualenv <your-env>
source <your-env>/bin/activate
<your-env>/bin/pip install google-cloud-vision

如果您还想为项目创建一个新的内核,您可以使用 ipykernel 包:

pip install ipykernel
ipython kernel install --user-- --name=yourkernelname
jupyter notebook

对于批处理,我想构建一个函数“runvisionai”,它为输入到函数中的一批 URL 生成一个特性类别数据集。在此之前,我必须决定每个要素类别级别数据集的结构。作为一个例子,我将带你从 Unsplash 为一张图片创建面部特征数据集。(见下图 4)

client = vision.ImageAnnotatorClient()
image = vision.Image()url= "https://images.unsplash.com/photo-1540502040615-df7f25a5b557?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2550&q=80"image.source.image_uri = url response_face_example = client.face_detection(image=image) 

图 4:贾尔夫Unsplash 上的照片

一旦知道了响应 JSON 文件的“face_annotations”中的数据点,就需要选择追加要素类别数据框的粒度级别。

在将图像发送到 vision AI 进行处理后,您可以在此处找到图像的 JSON 响应。如果将该响应可视化,它将看起来像下面处理过的图像。根据 JSON 响应,可能有不同的粒度级别:

图 5:视觉 AI 的面部检测响应的视觉表示

  1. 在 JSON 文件中,你可以通过为每个面添加下面的数据点(我在这个项目中就是这么做的)来压缩这些数据点。
Face 1: 
roll_angle: -9.5155668258667
  pan_angle: -5.019717216491699
  tilt_angle: 1.8756755590438843
  detection_confidence: 0.9624646902084351
  landmarking_confidence: 0.6258678436279297
  joy_likelihood: LIKELY
  sorrow_likelihood: VERY_UNLIKELY
  anger_likelihood: VERY_UNLIKELY
  surprise_likelihood: VERY_UNLIKELY
  under_exposed_likelihood: VERY_UNLIKELY
  blurred_likelihood: VERY_UNLIKELY
  headwear_likelihood: VERY_UNLIKELY 

图 6:我为每个面收集边界多边形顶点的数据框草图

2.或者…您可以在每个面的顶点级别收集数据,即,对于每个面,您可以收集包围该面的多边形的每个顶点的 x 和 y 坐标。

在这种情况下,您可能希望在“runvisionai”函数的 face 循环中创建一个嵌套循环(该循环又嵌套在 URL 中)。我发现对于最近开始编码的人来说,画出数据集的轮廓并对代码进行逆向工程以得到它是很有用的。

要点 3:提取 API 响应中标注的面的边界顶点的代码

图 6:要点 3 中代码的结果;它是一个数据框,单位是边界多边形的顶点;Srinivas Vadrevu 的分析

3.或者…您可以创建一个面部特征数据集,其中粒度级别固定在面部特征/面部标志级别。单位项目是身体面部特征。那么,在这种情况下,我的代码模式应该是

图 7:我收集面部标志及其坐标的数据框草图

(1)循环 URL →调用 RunVisionAI →采集人脸。每个 URL 的注释 JSON

(2)然后在脸部打圈脸。函数内部的注释→收集数据集中的人脸 id→

(3)为每个面部创建嵌套的环形标志→在数据集中收集面部标志→

(4)在面部标志层附加 x、y 和 z 坐标。重复直到所有循环完成。

要点 4:提取图像中标注的面部标志的顶点的代码

在确定了表面级别的数据粒度和数据框的结构后,我为每个要素类别创建了一个空数据框,以存储和追加每次 URL 迭代的数据框结果。我为面部数据集创建了一个 face_df 数据框来收集每个面部的特征——置信度得分、喜悦、悲伤、惊讶、愤怒和模糊。

face_df=pd.DataFrame(columns['Source','Query/alt','URL','img_num',
                    'face','confidence','joy','sorrow','surprise',
                    'anger','blurred'])

我将所有特征数据帧中每张图片的标识符设置为: Source (来自 NewsAPI/ News 网站的谷歌图片搜索/新闻网站名称)、 Query/alt (包含谷歌图片搜索的搜索查询或图片的 alt 描述),以及 URL (该图片的 URL 链接)

逻辑与其他功能类别非常相似。您可以在 Gist 5 中找到下面所有特性类别的完整代码。此函数“runvisionai”成功地注释了一批 URL,并将数据存储在不同要素类别的相应数据框中。

要点 RunvisionAI 函数的代码,为输入其中的 URL 构建功能级别的数据集

继续运行该函数,以获得您在步骤 1 中收集的一批 URL 的要素类别级别数据集。

urls= list_df['URLs'].unique().tolist()
runvisionai(urls)print(label_df)
print(objects_df) # check if feature category dataset is prepared

如果在步骤 1b 结束时一切顺利,您将拥有所有填充的数据框,它们具有不同的单元(URL、面孔、位置、标签、徽标等)。)和每个功能类别的相应指标。

图 8:特征类别的输出数据帧;Srinivas Vadrevu 的分析

第二步:可视化

Jakayla ToneyUnsplash 上拍摄的照片

在下一篇文章中,我将根据视觉人工智能提取的特征绘制和分析图像。我将很快更新这篇文章,提供第二部分的链接。作为下一篇文章的预览,我为 CNN 和 NYT 在过去三天(10 月 29 日-10 月 31 日)的美国大选报道中发布的图片标注了标签。y 轴以图像中出现频率的降序排列标签。x 轴代表计数/频率。我只考虑了置信度超过 90%的图像中的标签。

使用下面的图片,你可以比较 CNN 和纽约时报网站在 2020 年 10 月 29 日至 10 月 31 日期间发布的图片中标注的标签

图 9:根据出现次数排列的顶部标签(在 NYT 图像中以超过 90%的置信度识别);Srinivas Vadrevu 的分析

图 10:按出现次数排列的顶部标签(在 CNN 图像中以超过 90%的置信度识别);Srinivas Vadrevu 的分析

本文第 1 部分的结论:本文的主要目的是概述从一批图像生成大量特征数据集所涉及的代码和步骤。我用美国 2020 年大选作为营销背景,从互联网图像中提取特征。在我看来,图像特征成分有可能被用作解释视觉内容广告表现的因变量。换句话说,将这些图像数据集与活动营销分析数据(印象、喜欢、点击、点击率等)联系起来会非常有趣。).在这样做的时候,我推测我们可以找到姿势、标签、面部表情、物体、颜色组合和标志的某种组合有更好的表现,比如说点击率相对于其他组合。这种明确的知识可以反馈给参与视觉内容生成的创意团队。

数据科学家是做什么的?

原文:https://towardsdatascience.com/what-does-data-scientist-do-81aeab252eec?source=collection_archive---------63-----------------------

作为一名数据科学家,我在工作场所做些什么?

数据科学是对从数据中提取和构建知识的计算原理、方法和系统的研究。越来越多的公司开始意识到数据科学的能力,这有助于他们防范行业风险,保持行业竞争力。

数据科学的流程是什么?

数据科学流程-作者图表

数据科学过程始于我们想要回答的目标或问题。因此,首先,我们正在研究我们需要解决的领域和问题。这个过程大约需要几天到几个月的时间,这取决于域的大小和我们需要解决的问题。我们越清楚,我们就能给出更好的解决方案。

我们接下来需要获得适当的数据来帮助我们回答这个问题。这里更重要的是,我们必须考虑 4 个主要因素,“量”、“多样性”、“准确性”和“速度”,我们将其视为大数据中的 4 V。通常情况下,可能无法访问我们心目中的理想数据集,因此确定最接近的可访问数据非常重要。通常情况下,任何数据集都不会成为一道菜。因此,在获得数据后,我们必须对数据进行预处理和清理。这意味着我们得到的是原始数据,我们必须将其转换成可以用于进一步分析的格式。这一步就是我们所说的数据角力。例如,我们必须处理损坏的记录或丢失的值。这一步我用的是 Python。大多数时候 NumPy 和熊猫图书馆都在帮助我。

可以研究清理后的数据,以获得对所包含信息的高级理解。我们通常通过可视化数据和计算汇总统计数据来做到这一点。这个过程被称为“探索性数据分析”。在这一步,“Matplotlib”和其他一些可视化库,如“Seaborn”来帮忙。在这一步结束时,我们可以从数据中获得非常有用的见解。例如,通过在地图上绘制新冠肺炎患者位置的数据点,你可以注意到世界上哪些特定地理区域处于危险之中,哪些仍然是安全的。而这一步也有助于丰富数据集,衍生出更多有趣的特征。

在这一步之后,机器学习算法和适当的计算和统计方法将有助于进一步分析和预测未来趋势。这就是奇迹发生的地方!在这里,我使用了一套机器学习和统计库,如 skit-learn、Keras、SciPy 和 Statsmodels 等。这个阶段可能还包括验证我们的模型,并解释结果。

最后,我们就最初提出的问题交流我们的结果。这包括综合结果,讲述我们从数据中学到的东西。简单地说,我们称之为在整个组织中部署我们的模型。我们以报告的形式或用户交互工具的形式呈现它。

现在,我可能已经给你留下了这些阶段一个接一个发生的印象,但实际上,数据科学过程是迭代的和非线性的。这意味着我们可能会在整个项目中多次重复这个数据科学过程。我们也可能回到以前的阶段,用获得的新知识重复它。

而数据科学方面的技能呢?

数据科学家通常结合了数学、统计学、计算机科学和编程方面的技能,他们还应该知道问题出现的领域。这是关键,因为它有助于我们首先提出正确的问题,以及解释结果。

数据科学技能集-按作者分类的图表

我认为,拥有数据科学的理论知识和实践经验非常重要。因此,我也在练习编程。但我不是专业程序员,但我精通 python 编程语言。与此同时,我正在尝试不同的机器学习算法,通过应用于不同领域的案例研究的统计概念。

那么为什么是 Python 呢?

Python 在 90 年代就已经出现了,所以它是一种成熟的编程语言,对于从未编程过的人来说,它非常适用。它是开源的,可以免费安装。更重要的是,Python 是数据科学项目的热门选择,因为有许多可用的库(如 R)可以简化数据处理和分析任务。

最后,我应该提到,我从“华盛顿大学”提供的 Coursera 机器学习专业化课程和“加州大学圣地亚哥分校”提供的 Coursera 大数据专业化课程中学到了大多数东西。我以自己在“IQ Pvt ltd”一年初级数据科学家角色的经历来写这篇文章。如果有什么要补充的,欢迎在下面评论。

关于现代 NBA 的老龄化,数据告诉了我们什么?

原文:https://towardsdatascience.com/what-does-data-tell-us-about-ageing-in-the-modern-nba-31bcc396f177?source=collection_archive---------26-----------------------

以数据驱动的视角看老龄化如何影响现代 NBA。联盟中最好的球员都多大了?现代玩家是不是越来越年轻了?谁得到上场时间了?

图片:作者

在过去的几十年里,随着许多顶级体育运动从早期的乘坐公共汽车和微薄的薪水成长和成熟为数十亿美元的大企业,体育科学也是如此。这一点在 NBA 表现得最为明显,在这个联盟中,每支球队的成功都更多地依赖于少数明星球员,而不是世界上任何其他团队运动。

为了让他的身体保持在最佳状态,据说勒布朗·詹姆斯雇佣了一个令皇室羡慕的团队。据说他的团队包括一名生物机械师、康复教练、按摩师和私人厨师,而他的每间房子都包括一个高压氧舱以帮助康复。詹姆斯在 35 岁时仍然表现出 T4 MVP 的水平,当拉里·伯德这样的传奇人物在这个年龄退役时,很难对结果提出异议。

但是,这是真的吗?让我们看看这些数据,看看我们可以从现代 NBA 的最佳球员、联盟的总体构成以及球员的寿命和表现中了解到什么关于老龄化的信息。

联盟中最好的球员都多大了?

该图表显示了从 5 年期间(例如,1986-1990,或 2016-2020)收集的统计数据,绘制了每个球员的 BPM (box-plus-minus) 统计数据与他们年龄的关系。没有一个统计数据可以完美地描述一个球员的表现,但是 BPM 是一个很好的衡量一个人相对于联盟中其他人表现如何的标准。

为了关注那些有积极影响的球员,图表只显示了 BPM 值超过 2 的球员,也就是说每个赛季大约有 50 名球员。

越来越多的顶级 NBA 球员打得更好,时间更长。(图片:作者)

有两个趋势很明显。早些年的散点图在顶部更“尖”,4+BPM 的球员(全明星球员)集中在 23-28 岁。最近(页面右侧),年龄不再是个人表现水平的决定性因素,数据更加分散。

从 2016 年到 2020 年的几年中,有多名球员(保罗/邓肯/吉诺比利/德克)在 35 岁以上的年龄已经创下了 2+ BPM 的赛季记录(见各图右下角)。一个 2+ BPM 的赛季旨在成为一个“好的开局”,这些赛季对于 35 岁以上的球员来说在 1986-1990 年或多或少是闻所未闻的,除了 1986 年卡里姆的最后一个伟大赛季。

现代 NBA 是年轻人的游戏吗?

在看别的之前,我们先来看看上一个(2019–2020)NBA 赛季球员的年龄概况。下面的图表显示了 NBA 球员的年龄分布。

2019-2020 年的大多数 NBA 球员年龄在 22 至 26 岁之间(图片:作者)

尽管图表一直延伸到 43 岁(祝贺文斯·卡特惊人的职业生涯),但 NBA 球员最常见的年龄实际上是 22 岁。事实上,联盟中超过一半(55%)的球员年龄在 25 岁或以下。这的确是年轻人的游戏。

现在,让我们通过从 1990 年开始的时间快照来看看这是否总是正确的。我们在这张图表中向下移动的每一个子图都比前一个子图在时间上多了十年。

随着时间的推移,NBA 球员的平均年龄越来越年轻(图片:作者)

随着时间的推移(在图表中向下),显示每个年龄段玩家百分比的列基本上向左移动。这告诉我们,年轻选手突破的比例已经越来越大。下一张图表把数据简化成了柱状图。

NBA 中 24 岁及以下的球员比以往任何时候都多。

每组按年龄显示球员的百分比,每个颜色条显示数据来自的每个赛季。

很明显,如果你是一名 30 岁或以上的现代 NBA 球员,你的工作越来越受到 24 岁以下球员的威胁。

当然,这与招聘规则的变化以及谁有资格有很大关系。T2 并不一定意味着年轻球员变得更好。所以接下来,让我们来看看更微妙的统计数据,而不仅仅是关于谁在联盟中的统计数据。

年轻与经验——谁在球场上?

2019-2020 年的大多数 NBA 球员年龄在 22 至 26 岁之间(图片:作者)

上面的分析只是简单地看了看谁在名单上。但是整场比赛都坐在板凳上,一场比赛只得到 5 分钟的上场时间,和一场比赛得到 30-35 分钟的首发上场时间是完全不同的。所以在这一部分,我们考虑了每个球员在球场上花费的时间。

绘制球员的上场时间,并按年龄分组,下面的图表出现了。

年长的球员通常比年轻球员得到更多的上场时间(图片:作者)

每一栏都是由每个球员的上场时间占联盟上场时间的比例组成的。所以上场时间越长的球员会被标上更蓝/更深的颜色,同时在每一栏占据更多的高度。另一方面,几乎不玩游戏的玩家可能不会对专栏有所贡献,他们会被标记为浅色。

与我们看到的第一张图表(下面再次显示以供参考)相比,我们可以看到年龄较大的球员一般比年轻球员获得更多的上场时间。

NBA 球员年龄(2019–2020 赛季)(图片:作者)

在这一点上,让我们扩展我们对上场时间的分析,来绘制一段时间内的数据。

NBA 球员越来越年轻,但每个球员上场的时间也越来越少。(图片:作者)

这个图表最好用两个词来描述——“负载管理”。这一趋势始于 20 世纪 90 年代末和 21 世纪初的圣安东尼奥马刺队,现在在整个联盟广泛采用,以最大限度地减少每个球队关键球员的磨损。

更具体地说,1990 年的上场时间图表覆盖着深黑色的条,表明单个球员的上场时间高度集中。随着时间的推移,这些酒吧的频率降低到 2020 年几乎没有任何球员承担他们在 90 年代曾经承担的负担。

结果,上场时间在不同年龄段之间,以及不同球员之间看起来更加公平。

尽管如此,这仍是大量需要消化和研究的数据。让我们从更细的角度来看一下数据。

明星时代 vs 角色球员时代(和板凳球员时代)

不可否认的是,一个 NBA 球队从球星到板凳球员都有不同的球员群体。因此,让我们将数据分组进行分析。

在这里,我根据球员的上场时间将数据分为三个“等级”——粗略的理论是更好的球员得到更多的上场时间。顶层代表每队平均前 2 名玩家,第二层玩家从 3 到 7,其余玩家是第三层玩家。

这个数据是为 2019-2020 赛季绘制的。

年龄较大的球员在上场时间较长的球员中占多数(图片:作者)

尽管 NBA 的组成主要是 26 岁及以下的球员,但大部分上场时间很长的球员实际上是 27 岁及以上。

我们一会儿将回到为什么。但在此之前,我们先来看看历史数据,通过比较 2020 年与 1990 年和 2005 年的相同数据,看看情况是否一直如此。

与 1990 年相比,2020 年“一线”玩家在各年龄组中的分布更加平坦。(图片:作者)

这张图表真实地讲述了一个故事,在 2020 年,每支球队的一线(最佳)球员很可能在 21 至 30 岁之间的任何年龄,而在 1990 年,他们最有可能在 23 至 28 岁之间,实际上在 26 至 28 岁之间。

2020 年的三级玩家群体中,年龄在 28 岁及以上的玩家数量更多,而在 1990 年,这一数字还很少,尤其是当他们达到神奇的 30 岁时。

所以,这张图表显示,尽管球员平均年龄更小,但是越来越多的有足够天赋和足够优秀的球员能够延长他们的职业生涯。

我们对拥有 20 多年职业生涯的文斯、德克和科比感到惊叹。我想知道 20 年后,甚至 10 年后,我们会不会认为这些职业生涯长度是多么罕见。

但是在你离开之前——如果你喜欢这个,在推特上打个招呼/关注一下!

如果你喜欢这篇文章,你可能会喜欢这些:

[## 用 Plotly 实现交互式篮球数据可视化

用 hexbin shot 图表分析体育数据,用 Plotly 和 Plotly Express 分析气泡图(源代码&我自己的数据…

towardsdatascience.com](/interactive-basketball-data-visualizations-with-plotly-8c6916aaa59e) [## Plotly Dash 与 Streamlit——哪个是构建数据仪表板 web 应用程序的最佳库?

用于共享数据科学/可视化项目的两个顶级 Python 数据仪表板库的比较——

towardsdatascience.com](/plotly-dash-vs-streamlit-which-is-the-best-library-for-building-data-dashboard-web-apps-97d7c98b938c)

原载于 2020 年 10 月 29 日【https://www.jphwang.com】

降维到底是做什么的?

原文:https://towardsdatascience.com/what-does-dimensionality-reduction-do-really-15fb2980ea5?source=collection_archive---------65-----------------------

使用 Matplotlib 和 Scikit-learn 可视化 SNE 霸王龙

卢卡斯·本杰明在 Unsplash 上的照片

想象一下:一个学生正在上美术课,他们的老师让他们在一张纸上画一个立方体。现在,作为现实中一个精明的参与者,学生们意识到他们不能在二维平面上画三维物体。因此,凭借他们卓越的批判性思维能力,他们试图通过连接 4 个点在你的纸上画出立方体的一个面。

立方体在二维平面上的投影不正确||作者图像

这是一个很好的尝试,但是学生意识到他们没有保留立方体的特征,因为他们只在纸上画了一面。他们只在纸上画了 4 个点,而立方体上有 8 个顶点。他们继续画另一个形状:

将立方体精确投影到二维平面||作者图片

他们把这个结果给他们的美术老师看,老师对这个结果很满意。该学生减少了立方体的维度,同时仍然保留了使形状可识别的特征。你可能会问,这和 SNE 霸王龙有什么关系?嗯,这个例子就是这个算法的驱动原理。

复杂的数据集很难处理。在一家试图扩大数据集的大数据初创公司工作时,人们对收集的数据提出了许多问题。当数据集很小,仅包含几个要素时,开发人员可以创建简单的图来了解要素和所需输出之间的关系。然而,当数据集变得复杂时,会出现所有数据都失去意义的情况,开发机器学习模型来预测结果变得非常具有挑战性。这就是降维的亮点:试图降低特征集的复杂性,并产生更多可消化的数据,这些数据可以被处理并输入到机器学习模型中。在这篇文章中,我们将试图建立一个直观的关于这些降维技术是如何工作的。因此,我们已经讨论了降维做什么,但没有讨论如何降维。让我们再来看看我们的艺术学生,看看 t-SNE 是如何工作的。

当这个学生将三维物体投影到二维空间时,他在做什么?这位学生试图在高维度中查看点之间的关系,并在降维的同时保留特征。t-SNE 以非常相似的方式发挥作用,通过在更高的空间中创建点的概率分布来定义关系,然后在更低的维度中创建类似的分布。为了实现这一点,引入了一个称为困惑度的数字来描述我们的原始数据集的特征。低复杂度意味着该算法将尝试从更局部的角度减少数据,加重局部分组的权重。高复杂度意味着算法倾向于数据的全局结构。

t-SNE 找到了点与点之间的引力和斥力,最终的结果是当点在低维空间中沉淀下来。作为一个例子,我们将使用 MNIST 数字数据库,这是一个由手写数字组成的机器学习数据库,用于算法分类。这个数据集中有大量的要素,仅从数据集来看并没有内在的分组。这个数据集中有 784 个维度,每个维度对应一个手写数字图像中的一个像素。我们看不到 784 维中的点,因此我们将尝试将该数据集的聚类降低到三维,以便更好地理解分组。

MNIST 数据集上 SNE 霸王龙的可视化||作者 gif

让我们重温一下这部动画中发生了什么。t-SNE 在这个高维空间中寻找一个概率分布,然后在一个更低的维度中寻找一个与高维分布尽可能相似的概率分布。正如我们所看到的,t-SNE 正在寻找低维分布之间的相似性,然后最终确定了一个表达数据中良好分组的特征集。

从这里去哪里?

一旦这些数据点被投影到低维空间,现在就由开发人员来制定将在这个新数据集上工作的分类算法。t-SNE 不是一个分类器,而是一个工具,用来查看数据集的分类效果如何。这个系统可以被认为是一个太阳系,数据点小行星场围绕数据集的分类组旋转,t-SNE 作为引力将这些点拉近分类组。

下面是三维动画的代码。您需要做的就是将 scikit-learn 的 TSNE 实例传递给 tsneAnimate 函数,并调用 tsneAnimate.animate

作者代码

什么遵循/不遵循本福特定律

原文:https://towardsdatascience.com/what-does-doesnt-follow-benford-s-law-7d0b3c14afa5?source=collection_archive---------9-----------------------

对维基百科数百组数据的分析。

循迹而行(图片由作者提供)。

像许多其他人一样,我第一次听说本福特定律时,我想:“什么?太奇怪了!有什么诀窍?”然后,就没有诀窍了。它就在那里。这是一条没有明显理由就适用的法律。

如果你从来没有听说过,让我们来看看它是什么:想象一组来自一些现实生活现象的数字。比方说,地球上所有有人居住的地方的人口。会有成千上万的数字,有些很大,有些很小。这些数字的存在不是因为一些系统的过程,而是以某种方式出现在数十亿人数千年的生活中。因此,你会认为它们几乎完全是随机的。想想这些数字,如果我问你:“与 2、3、4 等相比,有多少是以数字 1 开头的?”,直觉上你可能会说:“差不多一样多”。你就错了。答案是:明显更多。

根据本福德定律(实际上应该称为纽康-本福德定律,见下文),在跨越多个数量级的大量自然发生的数字中,任何数字的前导数字都更有可能是小而不是大。可能性有多大?形式上,一个数字以数字 d 开始的概率 P(d) 由下式给出:

P(d) = log10(1+1/d)

这意味着,在这些自然出现的数字集中,一个数字以 1 开头的概率略高于 30%,而以 9 开头的概率略低于 5%。很奇怪吧?

根据本福特定律,一个数字开始一个数的概率。

这种奇怪的自然/数学现象最早是由西蒙·纽康(因此全名)发现的,他注意到包含对数表的书的开头页面比结尾页面(从 9 开始)磨损得多。基于这一观察,表明人们往往更需要对数表来表示从 1 开始的数字,他首先提出了现在所知的纽科姆-本福特定律,尽管第一个数字的概率公式略有不同。超过 65 年后,弗兰克·本福德再次发现了这一现象,并对几种不同的东西进行了测试,包括美国的人群。从那时起,它已经在许多事情上得到测试和应用,从金融欺诈检测到代码停车位甚至 COVID 。这个想法是,如果一组数字自然出现,没有被篡改或人为限制,它们很有可能遵循本福特定律。如果他们不依法办事,那就有猫腻了。

但是这真的普遍适用吗?适用到什么程度呢?我们可以假设代表不同现象的数字在不同程度上遵循本福特定律,有时更多,有时更少,有时没有。所以问题是:

什么遵循本福特定律,也许更重要的是,什么不遵循?

为了回答这个问题,我们需要大量自然产生的数字。

维基数据拯救世界

纽科姆和本福特没有我们这么幸运。为了找到一组数字来检验他们的定律,他们不得不从任何可用的来源手动收集这些数字。如今,我们不仅有一个普遍可访问的百科全书,我们还有它的数据版本。

维基数据是数据的维基百科。这是一个众包数据库,即使不是全部,也是相当大的一部分。例如,使用维基数据,通过一个相对简单的查询,就可以快速获得美国每个城市的人口规模以及许多许多其他信息。因此,也应该有可能获得它包含的所有数字集合。

为此,我们使用基于 RDF 的维基数据表示。RDF(资源描述框架)是一种基于图形的网络数据表示。基本上,RDF 中的事物由 URIs 表示,并通过带标签的边与其他事物或值相连。例如,下图显示了位于爱尔兰、人口为 79,504 人的高威市在 Wikidata 的 RDF 中的简化表示。

维基数据中关于戈尔韦的一些信息的图示。

RDF 的好处在于,一个非常非常大的图可以用一组三元组来表示,其形式为 <主语、谓语、宾语> 。这些三元组中的每一个都对应于图中的一条边,代表一条原子信息。

<[http://www.wikidata.org/entity/Q129610](http://www.wikidata.org/entity/Q129610)> <[http://www.w3.org/2000/01/rdf-schema#label](http://www.w3.org/2000/01/rdf-schema#label)> “Galway” .<[http://www.wikidata.org/entity/Q129610](http://www.wikidata.org/entity/Q129610)> <[http://www.w3.org/1999/02/22-rdf-syntax-ns#type](http://www.w3.org/1999/02/22-rdf-syntax-ns#type)> <[http://www.wikidata.org/entity/Q515](http://www.wikidata.org/entity/Q515)> .<[http://www.wikidata.org/entity/Q515](http://www.wikidata.org/entity/Q515)> <[http://www.w3.org/2000/01/rdf-schema#label](http://www.w3.org/2000/01/rdf-schema#label)> “City” .<[http://www.wikidata.org/entity/Q129610](http://www.wikidata.org/entity/Q129610)> <[http://www.wikidata.org/entity/P17](http://www.wikidata.org/entity/P17)> <[http://www.wikidata.org/entity/Q27](http://www.wikidata.org/entity/Q27)> .<[http://www.wikidata.org/entity/Q27](http://www.wikidata.org/entity/Q27)> <[http://www.w3.org/2000/01/rdf-schema#label](http://www.w3.org/2000/01/rdf-schema#label)> “Ireland” .<[http://www.wikidata.org/entity/Q129610](http://www.wikidata.org/entity/Q129610)> <[http://www.wikidata.org/entity/P1082](http://www.wikidata.org/entity/P1082)> “75,504”^^<[http://www.w3.org/2001/XMLSchema#Integer](http://www.w3.org/2001/XMLSchema#Integer)> .

所以从维基数据中收集数字集合的第一步是提取所有的三元组,其中对象部分是一个数字。

我们首先下载整个 Wikidata 数据库的完整转储文件,作为一个压缩的 NTriples (NT)文件。NT 是 RDF 的一种非常低效的表示,其中每个三元组用一行表示。要下载的 gzip 文件(latest-all.nt.gz)相当大(143GB),我不建议尝试解压缩。但是,因为每个三元组都在一行上完全独立于其他三元组表示,所以这种格式使得使用基本的 linux 命令行工具过滤数据变得非常容易,而不必将整个数据加载到内存中。因此,为了提取对象是数字的三元组,我们使用zgrep(grep处理 GZipped 文件)来查找引用了 decimalintegerdouble 类型的三元组,如下所示:

zgrep “XMLSchema#decimal” latest-all.nt.gz > numbers.decimal.nt
zgrep “XMLSchema#double” latest-all.nt.gz > numbers.double.nt
zgrep “XMLSchema#integer” latest-all.nt.gz > numbers.integer.nt

然后我们可以使用 cat 命令将所有这些放在一起:

cat numbers.decimal.nt numbers.double.nt numbers.integer.nt > numbers.nt

通过计算文件中的行数,检查这个 110GB 的文件最终包含了多少个三元组:

wc -l numbers.nt 
730238932 numbers.nt

每一行都是一个三元组。每个三元组作为一个数字作为值(对象)。这是一个很大的数字。

下一步是将这些数字组织成有意义的集合,并计算每个集合中有多少个数字从 1、2、3 等开始。这里,我们使用三元组的“谓词”部分。例如,该文件中有 621,574 个三元组以<【http://www.wikidata.org/entity/P1082】>为谓词。http://www.wikidata.org/entity/P1082属性维基数据用来表示有人居住的地方的人口。所以我们可以将所有这些人分组,并将其纳入维基数据已知的所有人群的集合中。这将是我们要测试的一组自然出现的数字。

下面的简单 python 脚本创建了一个 JSON 文件,其中包含属性列表、作为谓词的三元组的数量、这些三元组的最小和最大值、它们覆盖的数量级以及以 1、2、3 等开头的数字的数量。

import time
import json
import redata = {}st = time.time()
with open("numbers.nt") as f:
    line = f.readline()
    count = 0
    while line:
        p = line.split()[1]
        val = int(re.findall("\d+", line.split()[2])[0])
        val1 = str(val)[0]
        if p not in data:
            data[p] = {"i": val, "a": val, "c": 0, "ns": {}}
        if val < data[p]["i"]: data[p]["i"] = val
        if val > data[p]["a"]: data[p]["a"] = val         
        if val1 not in data[p]["ns"]: data[p]["ns"][val1] = 0
        data[p]["ns"][val1] += 1
        data[p]["c"] += 1
        count += 1
        line = f.readline()
        if count % 1000000 == 0:
            print(str(count/1000000)+" "+str(len(data.keys()))+" "+str(time.time()-st))
            st = time.time()
        if count % 10000000 == 0:
            with open("numbers.json", "w") as f2:
                json.dump(data, f2)
    with open("numbers.json", "w") as f2:
        json.dump(data, f2)

我们总共获得了 1582 个属性,代表了要根据本福特定律测试的多组数字。我们将其减少到 505 个属性,因为在 Wikidata 中,相同的关系有几个冗余的属性表示。我们还在另一个脚本中提取每个属性的标签(名称)和描述,这样我们就不必在以后查找它们。

Benfordness 测试

现在我们有了许多组数字,以及它们根据前导数字的分布,我们可以检查它们在多大程度上遵循本福特定律。几个统计测试可以用来做这件事。这里我们用一个相对简单的叫做卡方的。该测试对一组数字的值由以下公式给出

χ=σᵢ(oᵢ-eᵢ)/eᵢ

其中 i 是考虑中的前导数(1 到 9), oᵢi 的观测值(集合中以 i 开头的数的百分比), eᵢ 是期望值(根据本福特定律,应该以 i 开头的数的百分比)。结果越小,这组数字就越多。下面的脚本计算了前一个脚本创建的每组数字的卡方检验,以检查它们是否符合本福特定律。

import math
import sys
import jsonif len(sys.argv) !=2:
    print("provide filename")
    sys.exit(-1)es = {
    "1": math.log10(1.+1.),
    "2": math.log10(1.+(1./2.)),
    "3": math.log10(1.+(1./3.)),
    "4": math.log10(1.+(1./4.)),
    "5": math.log10(1.+(1./5.)),
    "6": math.log10(1.+(1./6.)),
    "7": math.log10(1.+(1./7.)),
    "8": math.log10(1.+(1./8.)),
    "9": math.log10(1.+(1./9.))    
    }print("expected values: "+str(es))data = {}
with open(sys.argv[1]) as f:
    data=json.load(f)for p in data:
    sum = 0
    for n in es:
        if n in data[p]["ns"]:
            sum += data[p]["ns"][n]
    cs = 0\.    
    for n in es:
        e = es[n]
        a = 0.
        if n in data[p]["ns"]:
            a = float(data[p]["ns"][n])/float(sum)
        cs += (((a-e)**2)/e) # chi-square test
    data[p]["f"] = cswith open(sys.argv[1]+".fit.json", "w") as f:
    json.dump(data, f)

那么,这是真的吗?

为了方便起见,获得的结果可以在谷歌的电子表格中找到。脚本和结果也可以在 Github 上获得。

查看结果时首先要注意的是,我们最喜欢的例子人口,表现非常非常好。事实上,它是本福德定律的第二最佳拟合,卡方值为 0.000445。这里面有超过 60 万个数字,只是碰巧存在而已,它们几乎完全符合本福特定律的预测。由于卡方检验值如此之低,样本又如此之大,这种巧合的可能性是如此之小,真的无法想象。它真实的。

不出所料,其他几个与人口密切相关的属性也进入了最符合本福德定律的前十名,包括识字 / 文盲男性/女性人口家庭数量

我敢肯定,每个人都渴望得到答案的问题是“那么,哪处房产是第一位的?”,由于人口仅次于。卡方值为 0.000344 时,第一名实际上属于名为游客数量的酒店,游客数量被描述为“每年参观某个地点或某个活动的人数”(总共 48,908 人)。

在非常高的本福德中,我们还发现了面积(被一个物体占据的面积),或者总有效票数(用于选举。空白票数在 Benfordness 上也做的不错)。

维基数据的高度本福德属性中似乎也有不少与疾病相关的属性,包括病例数痊愈数临床试验数、死亡数

与公司相关的数字在顶级本福德酒店中也非常明显。财产雇员(一个公司的雇员人数)是其中最强的,但我们也看到光顾净收入营业收入、总收入

体育统计也有不错的表现,职业生涯中的总投篮次数职业生涯正负评分职业生涯总得分,还有几个生物学和其他自然相关的话题,如翼展(飞机或动物)、自行(星星)、地形突起(即一座山或小山的高度)或距地球的距离(天文物体)。

当然,还有更多非常符合本福德定律的特性:上面的特性只涵盖了最适合的几组数字(卡方小于 0.01)。它们也并不特别令人惊讶,因为它们非常符合通常应该遵循本福特定律的数字集的特征:它们很大(最小的空白票数,仍然包含 886 个数字),覆盖几个数量级(从 3 到 80),更重要的是,它们是自然发生的:它们不是通过任何系统的过程产生的。他们刚刚出现。

然而,有一个非常重要的例外。卡方值为 0.00407,覆盖 7 个数量级的 3259 个数字,我们找到属性 Alexa rank。这对应于来自 Alexa 互联网服务的网站排名,该服务基于流量和受众提供网站信息。很难解释它怎么会如此吻合,因为作为一个排名,它通常应该从 1 到其最大值呈线性分布。然而,对于为什么会发生这种情况,有两种可能的解释:1-对于一个给定的网站,几个排名可能会持续几年,2-不是所有由 Alexa 排名的网站都在维基数据中。换句话说,遵循本福特定律的不是排名本身,而是维基数据中自然发生的排名选择。令人担忧的是,同样的事情也可能影响其他结果,这是一个很好的例子,表明任何数据集都可能以严重影响统计分析结果的方式产生偏差。

不好的呢?

因此,我们已经证实了本福特定律确实适用于许多自然产生的数,甚至有时适用于自然产生的非自然产生的数的选择。当它不起作用时怎么办?

首先,我们可以排除所有太小(少于 100 个数字)和数量级太少(少于 3)的集合。在大多数情况下,这些根本不符合,如果符合,我们不能排除这只是一个巧合的可能性。

我们研究的整套属性中最不合适的属性是最低大气压力,被描述为“风暴测量或估计的最小压力(热带气旋强度的度量)”,卡方为 12.6。该集合包含 1,783 个数字,从 4 到 1,016 不等。虽然这是一组符合所需特征的自然出现的数字,但很容易看出为什么它不适合。大气压力通常不会变化太大,可以预计大多数数值实际上接近于平均海平面压力 (1013 毫巴)。甚至有可能 4 的值只是数据中的一个错误。

许多其他非拟合属性可以类似地解释:它们的值通常不会变化到足以遵循本福特定律,但例外和异常值使它们仍然跨越几个数量级。包括轴距(车辆前后轮之间的距离)寿命**(物种)视野(例如设备)电源电压(在一个国家或地区)。

有趣的是(可能因为我对天文学一无所知),虽然与自然现象有关,但许多不太拟合的属性对应于与行星或空间有关的度量:轨道的半长轴(恒星或行星的)有效温度远日点* s(天体离其轨道运行的物体最远的距离)、近日点(天体离其轨道运行的物体最近的距离)、 金属性(一个天体中比氢或氦重的元素的丰度)和轨道周期(一个给定的天体绕另一个天体运行一周的时间)。 也许本福德定律是地球自然规律,甚至是人类自然规律,而不是宇宙规律。*

然而,如果是这样的话,这里有一个有趣的例外:在真正不适合的属性中,我们发现观众/听众数量(电视或广播节目的观众数量;网站上的网络流量)。这组包括 248 个数字,从 5318 到 60 亿不等。考虑到 Alexa 排名(这与网站的受众规模有关)也是我们非常合适的属性的例外,这感觉非常矛盾。然而,也许同样的解释也适用:如果我们对每件事都有一套完整的订户/观众数量,它可能会很好地遵循本福特定律,但我们没有,这 248 个可能集中在最引人注目的网站和程序的选择所引入的偏见是一个足够不自然的约束,它使它失去了本福特特性。

那又怎样?

本福特定律很奇怪。这是意想不到的,也没有很好的解释,但不知何故,实际上是可行的。很明显,有一类数字应该遵循本福特定律,事实上也确实如此。也有其他人显然不知道,在大多数情况下,知道原因相对容易。然而有趣的是,在一些情况下,数字并没有按照本福特定律的方式运行。正如本文开始时提到的,这种现象被广泛用于检测数字何时被篡改,通过检查应该遵循本福特定律而实际上没有遵循本福特定律的数字。似乎还有另一类应用程序在寻找不应该遵循本福特定律的数字选择。如果他们这样做了,这可能是一个迹象,表明看起来很像随机抽样不知何故出现了偏差的自然趋势,即不受控制的人类和自然过程必须产生高度本福特数。了解这一点,以及数据集应该属于哪个类别,对于测试数据是否存在偏差以及数据样本的代表性非常有用。

当然,还有天文学的例子。我怀疑答案只会强调我自己在这件事上的无知,但我真的很想知道为什么所有那些与天体有关的测量都如此顽固地拒绝遵守本福特定律。

可解释的人工智能有多重要?

原文:https://towardsdatascience.com/what-does-explainable-ai-really-mean-f8f2f908a9f5?source=collection_archive---------34-----------------------

数据科学,人工智能

可解释的人工智能是使决策过程透明和快速的机会

普里西拉·杜·普里兹在 Unsplash 上的照片

在这篇文章中,你可以探索可解释的人工智能,它背后的主要思想是什么,为什么需要可解释的人工智能,以及我们将如何开发可解释的人工智能?

最重要的是让任何关于人工智能的事情变得可解释、公平、安全和有传承,这意味着任何人都可以非常简单地看到人工智能的任何应用是如何发展的,以及为什么会发展。” —吉妮·罗梅蒂

什么是可解释的 AI?背后的主旨是什么?

Bret Kavanaugh 在 Unsplash 上拍摄的照片

可解释的人工智能(XAI)是使决策过程透明和快速的机会。换句话说,XAI 应该删除所谓的黑箱,并详细解释这个决定是如何做出的。

为了制作一个好的可解释的人工智能系统或程序,应该回答以下问题:

  • 这种结构背后的意图是什么,以及相关各方的影响是什么?
  • 输入到底是如何转化为输出的?
  • 要使用的数据来源是什么?

澄清的需要是由信任人工智能做出的决定的需要驱动的,特别是在商业领域,任何错误的决定都可能导致重大损失。

正如《商业》中所介绍的,可解释的人工智能提供了导致更好商业结果的洞察力,并预测了最受欢迎的行为。

首先,XAI 让公司所有者直接控制人工智能的运作,因为所有者已经知道机器在做什么,为什么。它还维护公司的安全,因为所有程序都应通过安全协议,如果有违规行为,应记录在案。

当利益相关者有能力观察所采取的行动并欣赏其逻辑时,解释人工智能系统有助于与他们建立信任关系。

绝对致力于新的安全立法和倡议,如 GDPR,是至关重要的。根据现行法律关于正当性的规定,禁止立即做出任何决定。

然而,在 XAI 的帮助下,禁止自生决定的需求将不再有效,因为可解释人工智能中的决策过程尽可能简单明了。

为什么需要可解释的人工智能?

阿尔诸那在 Unsplash 上拍摄的照片

它是关于程序向人类解释其行为背后的逻辑的能力,它的形式是能够用正式语言向计算机科学家解释,并且能够向系统用户解释。

这一点非常重要,因为它与人类对设备使用的信任密切相关,更正式的说法是,如果这种信任能够证明机器的行为,那么这种信任就很重要。

我们将如何开发可解释的人工智能?

万花筒Unsplash 上拍摄的照片

可解释的人工智能是一种人工智能,旨在以普通人可以理解的方式解释其意图、推理和决策过程。

XAI 经常在深度学习的意义上被提及,并在机器学习 (ML)范式中发挥着重要作用:

  • 公平
  • 公开
  • 机器学习的透明性

XAI 通过分享以下内容,提供了关于人工智能软件如何做出决定的一般知识:

  • 该课程的优点和缺点。
  • 软件使用的基本参数用于得出结论。
  • 为什么一个程序做出一个明确的决定,而不是选择?
  • 不同形式的判断可接受的置信度。
  • 预计软件会犯什么样的错误?
  • 哪些错误应该改正?

XAI 的基本目标是算法透明。直到最近,人工智能系统还只是简单的黑匣子。即使输入和输出是已知的,用于作出决策的等式总是专有的或不容易掌握的,尽管编程的内部工作是开放的,并使公众可以访问。

随着人工智能变得越来越普遍,揭露偏见和信任问题是如何得到回答的比以往任何时候都更重要。例如,《欧盟一般数据保护条例》( GDPR)规定了澄清条款的权利。

结论

Unsplash 上由 Austin Distel 拍摄的照片

人类层面的解释包括一系列认知功能,如自我意识、心智理论、长期记忆和记忆储存、语义学等。人工智能将描述的是它能做什么的角色,并且它与我们发现和引入的能力成指数关系。

现在,把你的想法放在 Twitter Linkedin,以及Github!!

同意 还是 不同意 与 Saurav Singla 的观点和例子?想告诉我们你的故事吗?

他对建设性的反馈持开放态度——如果您对此分析有后续想法,请在下面的 评论 或联系我们!!

推文@ SauravSingla _ 08、评论Saurav _ Singla,还有明星SauravSingla马上!

脸书知道我的位置吗?

原文:https://towardsdatascience.com/what-does-facebook-know-about-my-location-4a6c372e1254?source=collection_archive---------46-----------------------

分析和可视化脸书在个人层面收集的地理位置和跟踪数据

这是我的“脸书到底了解我什么?”系列的第二部分在那里,我用数据科学分析了脸书收集的 7500 份关于我的资料。参见第 1 部分分析我自己的脸书活动第 3 部分了解脸书认为我喜欢什么第 4 部分了解脸书在其他网站上了解我的活动第 5 部分了解我 4.5 年的感情在脸书数据中是什么样子。

如果你有一部智能手机,你使用的任何应用程序都可以追踪你的位置。令人欣慰的是,近年来限制这一点并识别哪些应用程序正在使用你的位置数据变得越来越容易,尽管许多人要么忘记检查这一点,要么根本没有意识到设置已经打开。

在这篇文章中,我将解决脸书收集了多少位置数据的问题,我将把它形象化,以展示如何用它来推断你的生活。

这就是我

第一种,也是最明显的一种,脸书获取我们位置信息的方式是我们自愿以个人资料的形式提供给他们。大多数人会输入他们的家乡、当前城市和/或工作地点,并让他们的朋友看到。

我也用脸书做过这个,下面你可以看到(大概)这些地方在英国的什么地方。希望这能提供一些背景信息,让下面的地图更容易理解。请注意,在所有这些地图中,我使用的是脸书的精确坐标,但为了更好地形象化,我在这里将它们显示为圆圈

你可以在这里看到,脸书知道我在哪里长大、上学,然后我搬到诺丁汉上大学(2014 年),毕业后留在那里,开始了新的工作(2017 年)。尽管这些都是公开信息,但值得指出的是,人们通常不会考虑这些“生活事件”是如何让你的身体位置随着时间的推移而建立起来的。

它还显示了我的“最后位置”,也就是我现在住的地方。友情提醒,脸书知道你住在哪里!

明确的个人资料位置并不是脸书存储您的位置数据的唯一方式,但是…

逻辑概念

脸书跟踪您位置的另一种方法是在您登录帐户时识别您的位置。我承认,我并不完全理解纳入这个数据集的标准,因为它不包括我每次打开应用程序的时间,但似乎主要是过去 18 个月的地点,还有一个是 2017 年的。它由 192 个地点组成。区域越暗,我从该位置登录的次数就越多。

我的脸书位置历史的地图,使用 r .标签的传单包装为进一步的上下文增加。

你可以立即看到这里的一些模式,可以用来作出推论——我在诺丁汉的生活是最明显的。我父母的房子和我女朋友的父母的房子都是热点,谢菲尔德也是,我经常去那里工作和上大学(反正是 Covid 之前)。

这些数据中包含的一些新信息是 trips 的证据。在过去的一年半时间里,我去过利物浦两次,还有苏格兰的邓弗里斯&加洛韦(地图左上角)。在这两种情况下,您可以看到我在终点登录,还可以看到我到达终点的路线:在往返苏格兰的途中经过卡莱尔,在往返利物浦的途中经过特伦特河畔斯托克。

你可以看到这些信息如何被用来跟踪我的位置,甚至预测它。如果你知道我要从家里去利物浦,你可能会认为我会经过或靠近特伦特河畔斯托克。

旅途中的生活

脸书发现我位置的第三种方法是利用我的账户活动。这是我在下载的数据中能找到的最大的一组位置信息。

追溯到 2017 年 10 月,我在进行了超过 1500 次操作,例如:登录、结束会话、更改密码或向我的账户添加信息(即支付信息)。这些的位置如下图所示。

首先要注意的一点是,这里没有显示账户活动的两个实例。一个来自华盛顿、西雅图(美国),一个来自德国的未知地点。这两个动作都是“登录检查失败”——大概是黑客试图访问我的账户。

我还应该提到,这似乎不是 100%准确。这可能是因为位置被调整到最近的城市中心/手机信号塔,或者因为位置是从 IP 地址计算的,而不是我的实际位置。话虽如此,绝大多数似乎有大致正确的位置,你可以在这里看到与以前相同的模式。

热点显示了我大部分时间呆在哪里——我的房子和家人的房子。我只能假设孤立的圆圈是我旅行的时候,要么作为乘客登录脸书,要么在去目的地的路上停下来。通过比较热点和单个位置,您可以看到实时跟踪我的位置并对我的最终目的地做出有根据的猜测是多么容易。

Et fin

“脸书到底了解我什么?”系列的第二部分到此结束。我希望它已经有所启发,你也喜欢深入了解我生命中激动人心的故事。接下来,我将通过观察脸书认为我喜欢什么和不喜欢什么来深入我自己的内心——并给出我自己对它们的准确性的看法。我也会解释为什么有时候感觉脸书在听你的谈话…以及为什么他们没有。

如果你喜欢这篇文章和这个系列,那么请给我和我的出版物数据片一个关注以保持最新。第三部分明天开始!

GPT-3 对人工智能意味着什么?

原文:https://towardsdatascience.com/what-does-gpt-3-mean-for-ai-58cd66616051?source=collection_archive---------25-----------------------

GPT-3 改变用人工智能构建软件的公司规则的三种方式

GPT-3 是一个在大块互联网上训练的非常大的机器学习模型。苏珊·尹在 Unsplash 上的照片

到目前为止,2020 年最大的人工智能新闻是 OpenAI 巨大的新语言模型 GPT-3 的成功。在这篇文章中,我将快速总结为什么 GPT-3 会引起如此大的轰动,然后强调个人和公司用人工智能建造东西的 3 个后果。

GPT-3:非常简短的入门

为什么人们对 GPT-3 感到兴奋?原因如下,在三条推文中:

这是怎么回事?

已经有很多关于 GPT-3 的总结文章,所以我不会在这里重复。

为了更好地介绍这个模型是如何工作的,请查看来自 Jay Alammar(非常优秀)的视觉指南。关于这个模型的能力和局限性的严肃讨论,请看凯文·拉克尔的给 GPT-3 做图灵测试

简而言之,GPT-3 是一个被训练成自动完成句子的模型。它已经在大量的网络上被训练过了。一路走来,它学到了很多有趣的东西。

为什么会发生这种情况?

事实证明,如果你试图从网上自动完成句子,记忆大量的东西是有用的。例如,如果你想完成关于巴拉克·奥巴马的短语,记忆一大堆关于他的东西会很有帮助。你还能怎样完成“巴拉克·奥巴马出生于 ____”这个句子?

所以这个模型已经了解了很多关于奥巴马的事情。还有川普。以及互联网上经常出现的任何人和任何事。

事实上,这不仅仅是学习事实,而是学习创造东西。你不能通过自动完成句子来创造东西,但是你可以通过自动完成代码来创造东西。原来互联网上有很多代码,所以模型已经学会写半连贯的代码。例如,它学会完成不是用普通散文写的句子。它可以完成用编码语言写的行,像 HTML & CSS。

最有趣的是,当短语的开头是代码中的而不是时,模型已经学会自动完成代码。让我们再来看看那条有趣的布局生成推文:

引擎盖下到底发生了什么?GPT-3 被输入了自然语言描述(输入到“生成”框中的提示),它会自动完成大致满足这些描述的代码。大概这个模型已经学会了这样做,因为在训练期间它看到了很多教程,在这些教程中,人们用文字描述了代码正在做什么(“接下来,我们将制作一个看起来像西瓜的按钮……)。

这类演示让开发者争相获取 API,也让风投争相获取他们的支票簿。提示 Y Combinator 的保罗·格拉厄姆,硅谷的元老之一:

那么这对于用人工智能建造东西的人来说意味着什么呢?

1.从开放的 AI 到封闭的 AI

照片由蒂姆·莫斯霍尔德Unsplash 上拍摄

当前人工智能激增的一个特点是,代码,通常还有数据,可供任何人免费使用。机器学习的学术模型已经围绕像 Arxiv 这样的开放网站上的免费预印本合并在一起。传统的同行评审已经被发布你的模型并允许其他人修改它们所取代:基本上现在你可以发布任何你喜欢的东西,如果代码有效,你会因此而得到好评。

例如,NLP 向前迈出的最后一大步是 Google 的 BERT 模型。这篇论文很快就有了代码,现在你可以通过优秀的包免费训练或使用 BERT 模型,比如变形金刚库谷歌 Colab 笔记本上的免费计算。

GPT-3 与众不同,它太大了,业余爱好者(或大多数公司)无法自我训练,甚至无法运行。通常在深度学习中,训练模型很昂贵,但使用它们相对便宜,你可以在自己的笔记本电脑上完成。

但这里的情况并非如此:该型号需要大约 350GB 的内存来运行,这是我 2019 年 MacBook Pro 的 15 倍。而且你完全可以忘记训练它: Lambda Labs 估计,使用云 GPU 进行训练需要花费 460 万美元。

那么你如何进入 GPT 3 号?通过一个 API,这意味着你在互联网上发送文本,然后 OpenAI ,创造了 GPT-3 的公司,通过模型运行文本,并向你发送响应。

要使用 GPT 3,你必须为每次使用付费

这是彻底背离在你自己的基础设施上运行模型。这意味着:

  • OpenAI 每次用模型都赚钱
  • OpenAI 观察人们使用模型的不同方式
  • 打开查看您发送给模型的数据

此外,对 API 的访问目前受到限制。这就形成了一种权力动态,一小部分人可以接触到 GPT 3 号,并对它说些好话,以保持这种竞争激烈的特权。想象一个流行的音乐节,门票有限,宣传力度很大。有点像 Fyre festival ,也许。

2.很少有人能活到老学到老

宣布 GPT-3 的论文标题是“语言模型是一次性学习者”。这到底是什么意思?

机器学习通过记忆模式来工作。从历史上看,每个模型都能够学习一组模式。例如,我们可以学习一个模型来告诉我们一条推文是正面的还是负面的。我们通过展示正面和负面推文的模型例子来做到这一点,并教它“看起来像这样的推文是正面的,看起来像这样的推文是负面的”。

如果我们想学习一个模型来告诉我们一条推文是否是关于培根的,那是一个不同的模型。你不能要求你的“正/负”模型形成对培根的看法。你训练一个新的。

这有点像一个不能真正弹钢琴的人去记忆特定歌曲的手部动作。也许他们可以完美地弹奏筷子,而且有一点灵活性:他们可以弹奏得更大声、更快或更断续。但是他们不能看乐谱给你弹首新歌。

真的,把这个和会弹钢琴的人相比。他们已经学会了如何快速学习一首新曲子。他们拿着音乐,练习几次,然后就可以演奏了。

这不是一个完美的类比,但它是一只可爱的小狗。信用:吉菲

这就是 GPT 3 号能做的。它还没有学会演奏一首曲子。它学会了如何 快速学会演奏新曲子

这就是“少拍学”的意思。GPT-3 可以从几个例子中学会做一项新任务。例如,它可以学习做加法、拼写纠正或翻译,如论文中所述:

出自原文

请记住,这个模型最初只是被训练来进行自动完成(这就是顶部的紫色箭头所代表的)。

少数镜头学习允许没有数据的 AI

这很有趣,因为它破解了在现实世界中应用人工智能的一个巨大挑战:冷启动问题。除非你有一堆训练数据,否则你无法创建一个令人信服的模型。但是在你造出人们会使用的东西之前,你不可能真正得到数据。这是一个第二十二条军规。

GPT 3 号也许能够解决这个问题,因为它能够做很多开箱即用的事情。我认为将会有一个完整的剧本,从你的产品的 GPT-3 基线开始,然后弄清楚如何在其上分层专有数据和模型以进一步改进它。Jack Clark 在 Import AI 217 中强调了这一点,描述了来自 Salesforce 的 GeDi 模型:

[它]是研究人员如何开始构建插件工具、技术和增强功能的一个例子,这些工具、技术和增强功能可以附加到现有的预训练模型(例如,GPT3)上,以提供对它们更精确的控制

杰克, 进口艾刊 217

3.作为数据库的语言模型

近几十年来,最有价值的企业技术公司一直专注于存储和检索信息。大多数消费者都熟悉帮助你从网上检索答案的服务——比如谷歌——但你可能不太熟悉维持大部分经济运转的数据库技术,这种技术由甲骨文公司和 T2 SAP 公司出售。

如果你以前使用过数据库,你会知道你必须使用特殊的语言与它们交流。例如,要确定加拿大人口最多的城市,您可以这样写:

SELECT * FROM CITIES WHERE COUNTRY='CANADA' SORT BY POPULATION LIMIT 1

对大多数人来说,这是天书。

但是正如你从介绍中所记得的,这是 GPT-3 顺便从学到的东西。所以你可能会问 GPT-3 这样的问题:

"The most populous city in Canada is ____ "

它会自动完成

Toronto

GPT-3 解决了数据库的输入和访问

这很重要,因为它解决了如何从数据库中获取数据的问题。

但它也解决了如何将数据存入数据库的问题。同样,这目前还不是很简单,需要专业知识。

在人工智能中,将事实输入数据库通常被称为“知识图构建”,这非常耗时,并且难以自动化。自 2012 年以来,谷歌一直在研究他们的知识图表——这是为出现在谷歌结果上方的有用信息框提供动力的东西——但 GPT-3 似乎在短短几个月的训练中复制了许多相同的内容,没有明显的努力。

该面板由谷歌的知识图谱提供。GPT-3 将允许其他公司以很低的成本制造类似的产品。来自维基百科。

GPT-3 只是绕过了“我应该如何构建我的数据库,以及如何将我的所有数据放入其中”的问题。它不会取代数据库的所有用途——例如,你必须有点疯狂才能让 GPT-3 存储你的航空公司的预订——但对于以一种易于检索的方式存储松散结构的数据来说,它将非常有用。

更新 GPT-3 将是一个关键的研究领域

为了让 GPT-3 成为一个有用的知识库,你需要能够轻松地更新信息。例如,如果加拿大人口最多的城市发生变化,我们需要一种方法让 GPT-3 知道。这将是一个非常热门的研究领域。显然你不想重新培训整个模型了(记得价格标签吗?),但当世界发生变化时,调整一下也不错。

如果我们能够令人信服地解决知识更新的问题,那么我认为 GPT-3 驱动的知识图会非常有用。这里有几个例子:

  • 由 GPT-3 驱动的客户服务机器人可以回答关于你的产品的问题,而无需任何人明确输入或更新这些信息。
  • 科学知识的自然语言讯问(“明尼苏达州目前的 COVID 病例数是多少?”)
  • 基于世界当前状态的自动完成系统,例如,在一封销售电子邮件中,你可以写“我们目前有 X 家商店,昨天我们服务了 Y 位顾客”,然后让 GPT-3 填写任何相关的统计数据。

结论

迄今为止,人工智能一直在努力实现其商业承诺。GPT-3 提供了一种令人耳目一新的新方法,绕过了击败许多早期人工智能项目的数据悖论。

然而,单个供应商控制对模型的访问是一个戏剧性的范式转变,还不清楚它会如何发展。OpenAI 尚未参与谷歌、亚马逊和微软发起的云人工智能战争,但如果这些公司不以某种形式复制 OpenAI GPT-3 服务,那将令人惊讶。

最后,我认为将模型放在 API 后面会在技术的创造性应用方面带来意想不到的好处。可以说,这个领域已经受到了 ML 专业人员过高薪水的损害,这抑制了专注于创造创新事物的早期创业公司的增长。如果你的早期雇佣非常昂贵,以至于你需要花费所有的时间来筹集资金,那么你就很难专注于开发为用户提供价值的软件。通过 API 访问模型强调了一个事实:这不是魔术,这是一个工具。你可以用它做一些有趣的事情。

进一步阅读

  • 深度学习怀疑论者加里·马库斯对 GPT-3 的批评
  • 来自格温的 GPT-3 创意写作实验
  • 我见过的 GPT-3 最有创意的用法:死人的教训

原载于 2020 年 10 月 13 日

以人为中心的 AI 对管理意味着什么?

原文:https://towardsdatascience.com/what-does-human-centric-ai-mean-to-management-a56a50da1d6?source=collection_archive---------31-----------------------

以人为中心的人工智能依赖于企业教育的能力,即清楚地理解管理者能带来什么

图片来源:SecureWeek

人工智能背后的管理动机仅仅是通过用机器取代员工来减少人员编制吗?如果是这样,“以人类为中心的人工智能”充其量是弄巧成拙的废话。如果麻省理工学院将以人为中心的人工智能定义为“以深入、有意义的方式向人类学习并与之合作的(信息)系统的设计、开发和部署”,那么对于管理层来说,了解机器智能在哪里以及如何增强人类潜力也同样重要。以人为中心的人工智能依赖于企业教育的能力,以培养对管理者在日益数字化的组织中能够带来什么的清晰理解。

商科和工科学生需要了解 AI 在管理方面的哪些知识?在本系列之前的文章中,我们探讨了从“人工智能就绪”和人工智能项目管理到协作智能和数字化转型的主题。在这最后一部分中,我们将关注三个领域,我们认为这三个领域是任何关于“以人为中心”的人工智能的管理课程的核心:数字伦理的重要性,人工智能和创新之间的虚假联系,以及引入对人工智能价值的讨论。

数字伦理

数据伦理包括研究和采用尊重基本个人权利和社会价值观的数据实践、算法和应用。【ii】如果道德不是数据或算法的属性,那么当管理者依赖数据做出商业决策时,道德挑战就会自然产生。当数据和算法都反映了人类决策的愿景、偏见和逻辑时,人工智能不能与它旨在解决的更大的经济和社会挑战隔离开来,这些愿景、偏见和逻辑是否忠实地反映了商业的现实,如果不是,这些反映如何影响客户、组织和市场的管理观点?数据驱动的决策制定并不意味着在客观分析数据和主观影响行为之间做出选择,而是强调理解数据如何塑造人类感知和主动性的必要性。

从这个角度来看,讨论数据伦理的目的不是帮助管理者区分对错,而是促进关于什么是可接受的数字实践的讨论。在管理教育中,可以解决和探讨五个不同的挑战。由于个人数据成为数字经济的燃料,围绕个人身份信息、明确同意以及访问权、纠正权和被遗忘权的问题值得关注。算法已经成为决策自动化的关键,但管理者应该在多大程度上对由此产生的决策负责仍有争议。隐性偏见的问题同样重要,因为个人和集体的态度和偏见影响着我们对数据、认知、逻辑和伦理的使用。技术对我们如何以及为什么交流的影响也应该得到讨论——因为我们对数据的依赖已经微妙地改变了我们对“信任”、“隐私”、“真相”和“价值”的定义。最后,我们对数据驱动决策的承诺应该将“科学主义”提升到其他形式的人类智能之上吗?【iii】

图片来源:斯坦福大学

海有 121 名教职员工——超过 80%是白人,几乎同样多的是男性

斯坦福大学以人为中心的人工智能研究所(HAI)是一个很好的例子,说明了研究伦理偏见变得多么困难和多么重要。基于“人工智能的设计者必须广泛代表人类”的立场,该大学在去年推出了 HAI,以“推进人工智能研究、教育、政策和实践,以改善人类条件”。【iv】“然而,当该机构公布领导该计划的 120 名教师和技术领导者时,他们都曾在世界顶尖的商学院和工程学院接受教育,其中超过 80%是白人,男性几乎与白人一样多。这个群体代表了整个人口,还是代表了过去五十年来主导这个行业的不同种族、文化和思想潮流?鉴于他们背景和教育的相似性,他们能够在多大程度上理解当地道德挑战的复杂性?如果数字化转型的目标是将数据转化为行动,教师们会采取行动来巩固现状,还是促进更具代表性或最终更令人满意的未来信仰多样性?

人工智能与创新

人工智能是创新的证明,还是至少是未来创新的必要条件?开发能够模仿人类行为的算法是一回事,制造能够创新的机器是另一回事。几个世纪以来,创新在很大程度上依赖于环境:不同时代的创新(技术推动、市场拉动、战略整合和网络)是由技术工具和市场动态在特定时间点的相互作用定义的。Tidd 和 Bessant 认为,今天的创新意味着通过解决经济或社会问题,应用产品、流程、立场或范式来创造价值。探索管理层如何利用机器智能来促进创新,为组织提供了一个重大机会,让他们可以将人工智能的讨论扩展到数据和算法之外,并讨论如何将这些技术应用到他们的业务中,并从中获利。

如果人工智能可以复制人类思维,企业利益相关者应该思考一下,为什么他们的管理者需要企业教育。课程讨论可以分析机器智能的现状,机器智能充其量只能掌握重复性任务(狭义人工智能),以及“超级人工智能”的承诺,即能够重新制定组织试图解决的经济、社会和政治问题。研讨会可以探索为什么机器学习一直受到解决方案逻辑的束缚,而人类创新的根源在于发现明显问题的普遍性。研讨会可以帮助管理人员了解如何利用机器智能来识别数据中的可识别模式,以及为什么他们需要关注违反可编程逻辑的异常值。这一明显的悖论可能会在可预见的未来很好地制约管理培训:尽管人工智能永远不会成为创新的证据,但当与适当的培训一起使用时,人工智能构成了开发管理好奇心、创造力和创新的关键。

图片来源:阿里巴巴

当与适当的训练一起使用时,人工智能构成了开发管理好奇心、创造力和革新的关键

中国科技巨头阿里巴巴就是一个很好的例子。在不到二十年的时间里,阿里巴巴已经拿出了充分的证据证明其创新能力:其基于平台的商业模式预计仅今年一年就能从其在零售、互联网和技术领域的投资中获得 1000 亿美元的收入。通过利用互联网技术和数据智能来开发一个开放的、依赖技术的、以价值为中心的生态系统,阿里巴巴的管理层重新定义了“新零售”行业。【VII】其“智能商业”的愿景是基于人类和机器智能的匹配——每个核心业务流程都在一个在线网络中协调,并使用机器学习技术来有效地实时利用数据。管理层利用其基于云的 Alink 平台、支付宝和淘宝等应用程序以及阿里助手等发明,创建了一个由卖家、营销人员、服务提供商、物流公司和制造商组成的创新生态系统,其表现优于传统的商业基础设施。人工智能本身并不被视为目的,而是数据化、协调、激励和启发制造商和消费者以不同方式思考商业的创新过程中的基石。

人工智能与价值

AI 的价值是什么?“物有所值”在今天很大程度上是一个赘述,即使什么是物有所值的问题仍然是一个悬而未决的问题。一方面,消费者使用参照系来选择产品和服务,这些参照系决定了他们的价值。另一方面,今天的业务流程被设计成价值链的一部分,发挥着生产者和消费者的责任。在这两种情况下,对“财务价值”的认知都受到人类“价值”的制约,如质量、效用、公平、邻近性和所有权。如果人工智能的算法可以很容易地被训练来分析和探索成本,它们迄今为止几乎没有能力预测和/或影响人类对价值的感知。指标捕捉了它们被设计用来衡量的东西,算法按照它们被教导的那样执行,而人们基于个人经验来评估数据的价值。

数据没有内在价值,除了它如何被用来解决社会和经济挑战。人工智能的管理培训需要超越机器学习指标的相关性讨论,如精确度、准确度、召回率和灵敏度,以调查金融价值和人类价值之间的复杂关系。关于影响购买决策的认知因素的案例研究可以帮助参与者理解,决策者不是根据数据进行运算的冰冷的计算机器,而是根据他们的感觉和见解做出反应的经理和消费者。在将价值讨论引入人工智能研究的过程中,企业培训可以帮助管理层关注机器和人类代理之间的交互如何影响生产率、有效性和质量。机器既不创造也不获取价值,而是人。

图片来源:灰色海岸媒体

只要人类还在购买和消费,价值的本质就永远不会被算法捕捉到

探索人工智能的管理挑战提供了一个恰当的例子。将人工智能的研究局限于其技术组成部分,可能会导致对人工智能对消费、生产和投资的不可避免的影响的盲目管理。如果价值不是在数据本身中捕获的,它就在元数据中表示,元数据的内在、外在和系统维度定义了如何组织和解释数据。如今,数字资产的管理需要深入理解评估数字资源时固有的封闭分类法和开放大众分类法的语义。【VIII】对价值而非成本的核算导致管理层反思人工智能和生产力之间的联系,这反过来又可以导致对决定数字经济中组织核心活动的生产边界的重新定义。最后,重新制定生产率指标可以促进关于激励和利润的讨论,并有机会将投资策略从计算股东的 ROI 转变为计算价值链中所有参与者的投资回报。

我们学到了什么?

如今,人工智能领域的企业培训需要帮助管理层超越数据和算法,探索人工智能如何改变组织和市场。商业努力的未来成功不取决于人工智能,而是取决于能够利用数字技术提高人类潜力的管理者。在这个由三部分组成的系列中,我们讨论了我们认为应该成为任何人工智能课程核心的九个主题:

  • 人工智能和战略——人工智能如何影响我们思考商业的方式。
  • 人工智能就绪性——组织准备利用人工智能优势的程度
  • 人工智能项目管理——将人工智能实验作为与组织的业务目标、背景和资源相一致的项目进行管理
  • 协作智能——设计人机代理网络,以促进知识、专业技能和偏好的众包
  • 管理决策——关注机器学习在何时何地可以帮助管理者将数据转化为行动
  • 数字化转型——认为数字化技术不会改变公司和市场,而是会改变人。
  • 数字伦理——管理者依靠数据做出商业决策时出现的伦理挑战
  • 人工智能与创新——人工智能在开发管理好奇心、创造力和创新中的作用。
  • 人工智能、价值和价值——人工智能的价值研究

在每种情况下,管理技能而不是技术悟性被证明是将人工智能的承诺与每个组织的战略、资源和文化相结合的基础。

Lee Schlenker 是 BAI 的校长,也是商业分析和社区管理教授。他在 LinkedIn 上的个人资料可以在的查看


【I】Schlenker,L. (2020),管理在人工智能课程中的地位匹配人机智能

【ii】Schlenker,L. (2020),嘿 Siri,成为人类意味着什么?,走向数据科学

【iii】比如,情感(人际)、语言(文字智能)、内省(自知)和精神(存在)智能

【iv】O ' Neil,P.H. (2019),斯坦福大学的新研究所,以确保人工智能是“人类的代表”,其工作人员大多是白人,Gizmodo

【v】Tidd j .,Bessant J. (2013)管理创新。整合技术、市场和组织变革

这些预测是在当前的经济衰退之前预测的。

【VII】曾,M. (2018),阿里巴巴与商业的未来

【VIII】ka gle,k .(2019)元数据的价值《福布斯》

部署机器学习模型意味着什么?

原文:https://towardsdatascience.com/what-does-it-mean-to-deploy-a-machine-learning-model-dddb983ac416?source=collection_archive---------7-----------------------

对模型部署和各种类型的简单介绍

图片由 OshDesign 来自 Pixabay

目录

  1. 简介
  2. 什么是模型部署
  3. 一个 ML 系统的高层架构
  4. 部署您的模型的不同方法
  5. 确定部署方法时要考虑的因素

介绍

想象一下,你花了几个月的时间创建了一个机器学习(ML)模型,它可以用近乎完美的 f1 分数来确定一项交易是否是欺诈性的。很好,但是你还没完成。理想情况下,您会希望您的模型能够实时确定交易是否具有欺诈性,以便您能够及时阻止交易。这就是模型部署的用武之地。

大多数在线资源侧重于机器学习生命周期的前期步骤,如探索性数据分析(EDA)、模型选择和模型评估。然而,模型部署似乎是一个很少讨论的话题——原因是它可能相当复杂。部署是一个与 EDA、模型选择或模型评估完全无关的主题,因此,没有软件工程或 DevOps 背景的人不会很好地理解它。在本文中,您将了解什么是模型部署,模型的高级架构,部署模型的不同方法,以及在确定部署方法时要考虑的因素。

什么是模型部署?

部署机器学习模型,称为模型部署,简单地说就是集成机器学习模型,并将其集成到现有的生产环境(1)中,在那里它可以接收输入并返回输出。部署您的模型的目的是使您可以将经过训练的 ML 模型的预测提供给其他人,无论是用户、管理人员还是其他系统。模型部署与 ML 系统架构密切相关,ML 系统架构是指系统内软件组件的排列和交互,以实现预定义的目标(Opeyemi,2019)。

在部署模型之前,您的机器学习模型在准备部署之前需要达到几个标准:

  • 可移植性:这是指你的软件从一台机器或系统转移到另一台机器或系统的能力。可移植模型是一种响应时间相对较短的模型,并且可以用最少的努力重写。
  • 可扩展性:这是指你的模型可以扩展到多大。可伸缩模型是不需要重新设计来保持其性能的模型。

(1)生产环境是一个术语,用于描述软件和其他产品被最终用户实际投入使用的环境(Techopedia,2012)

ML 系统的高层体系结构

概括地说,ML 系统有四个主要部分:

  1. 数据层:数据层提供了对模型所需的所有数据源的访问。
  2. 特征层:特征层负责以透明、可扩展和可用的方式生成特征数据。
  3. 评分层:评分层将特征转化为预测。Scikit-learn 是最常用的,也是评分的行业标准。
  4. 评估层:评估层检查两个模型的等价性,可用于监控生产模型。即,它用于监控和比较训练预测与实况交通预测的匹配程度。

部署模型的不同方法

部署您的 ML 模型有三种一般方式:一次性、批处理和实时。

一次性

你并不总是需要不断地训练一个机器学习模型来部署它。有时一个模型只需要一次或者周期性的。在这种情况下,可以在需要时简单地对模型进行专门训练,并将其推向生产,直到它恶化到需要修复。

批次

批量训练允许您不断地拥有模型的最新版本。这是一种可扩展的方法,一次获取一个子样本数据,无需在每次更新时使用完整的数据集。如果您在一致的基础上使用模型,这很好,但不一定需要实时预测。

实时

在某些情况下,您需要实时预测,例如,确定交易是否是欺诈性的。这可以通过使用在线机器学习模型来实现,如使用随机梯度下降的线性回归。

确定部署方法时要考虑的因素

在决定如何部署一个 ML 模型时,有许多因素和影响需要考虑。这些因素包括以下内容:

  • 预测生成的频率以及需要结果的紧迫性
  • 如果预测应该单独生成还是批量生成
  • 模型的延迟要求、用户拥有的计算能力以及期望的 SLA
  • 部署和维护模型所需的运营影响和成本

更多类似的文章,请查看 Datatron 的媒体页面或他们的博客 https://blog.datatron.com/ T2 T3

感谢阅读!

如果你喜欢我的工作,想支持我…

  1. 支持我的最好方式就是在媒体 这里关注我。
  2. Twitter 这里成为第一批关注我的人之一。我会在这里发布很多更新和有趣的东西!
  3. 此外,成为第一批订阅我的新 YouTube 频道 这里目前还没有视频,但即将推出!
  4. LinkedIn 上关注我这里
  5. 在我的邮箱列表 这里报名。
  6. 看看我的网站,terenceshin.com

参考

Techopedia (2019)。生产环境。技术百科。https://www . techopedia . com/definition/8989/production-environment

奥佩耶米,巴米格巴德(2019)。去神秘化的机器学习模型的部署(第 1 部分)。走向数据科学。

https://towards data science . com/deployment-of-machine-learning-model-demystalized-part-1-1181d 91815 D2

朱利安·凯尔维齐奇(2019 年)。在生产中部署机器学习模型的不同方法概述。 KDnuggets。https://www . kdnugges . com/2019/06/approads-deploying-machine-learning-production . html

路易吉·帕楚诺(2020)。部署机器学习模型意味着什么? KDnuggets。https://www . kdnugges . com/2020/02/deploy-machine-learning-model . html

拥有数据驱动的思维模式意味着什么?

原文:https://towardsdatascience.com/what-does-it-mean-to-have-a-data-driven-mindset-a4d5da509a99?source=collection_archive---------41-----------------------

我把它分成三个主要步骤

Unsplash 上拍摄的 ThisisEngineering RAEng

更喜欢看这个? 在 YouTube 上查看我的视频。

今天,我和一个人聊天,讨论数据科学项目的障碍。有一次,我解释了一个人成为数据科学家需要什么技能。我提到的一件事是,我认为数据科学家应该具有数据驱动的思维模式。在我说了之后,我意识到,我不太明白我说的是什么意思。关于什么是数据驱动的心态,它如何影响公司,数据意识的水平等等,有许多解释。我指的不是那种公司的胡言乱语。我的意思更多的是在个人层面上;作为人,我们如何被数据驱动。经过思考,我总结出它包括三个关键概念:

习惯用数据支持你的决定

当你成为一名数据科学家,你的生活将围绕数据展开。你需要习惯于根据这些数据做出决定。这也包括你对如何分析数据所做的决定。你必须养成不做很多不必要假设的习惯。

  • 需要为您的模型选择参数吗?比较一下,看看哪个效果最好。不要只使用随机值。
  • 不确定如何处理你丢失的价值观?看看这些数据,看看你能做些什么来填补这些空白。不要只是移除它们。

这需要一段时间来适应,因为作为人类,我们的生存要感谢我们的大脑能够根据“表面”模式假设事情。但当你在处理数据时,最重要的是能够抛开你凭信念做出假设的本能,开始通过观察做出假设。

当我刚开始的时候,我发现记下我在一个项目中所做的假设很有帮助。然后我会再看一遍,看看我能否用我掌握的数据来支持它们。

阅读数据时保持客观的能力

除了根据数据做出决定之外,你还想确保你看到的正是正在显示的内容。很容易陷入这样一个陷阱:只看到让我们高兴的东西,而忽略其他的东西。我也犯过这种错误,我会忽略滑稽的外观(因为有点太糟糕了,不舒服)性能指标,希望它没有任何意义。相信我,最后,它意味着什么,它会制造麻烦。因此,你需要能够解决出现在你面前的问题,而不把它们过滤掉。

理解使用数据的可能性和局限性

了解您可以用数据做什么是数据科学家的主要职责之一。知道你不能做什么至少和那一样重要。这都是关于保持现实的期望,同时意识到潜力。

这就是为什么能够现实地处理问题和解决方案是拥有数据驱动思维的一部分。您可以通过问自己以下问题来衡量自己对每个项目的理解:

  • 我能在脑子里把这个问题形式化吗?
  • 它符合数据科学的格式吗?
  • 什么是输入和输出?
  • 他们是如何表现的?

数据驱动的思维模式不是一夜之间就能学会的。你必须练习,接受批评,保持警惕,发现你可能犯的任何错误。它基本上是一个框架,你应该训练你的大脑通过它来看待生活。从这个意义上说,这不仅仅是数据科学家的事。这也适用于现实生活。

尤其是最近,互联网上有很多错误的信息。我们可能会在我们的提要中看到许多未经证实和不真实的“事实”。这正是数据驱动思维可以帮助你的地方。不要相信你看到的第一件事,你可以研究它,收集信息和数据,然后做出自己的决定。通过寻找事实和证据来支持你的想法和说法,你就是数据驱动型的。

这些都是需要记住的好事情,但是最终获得数据驱动思维的方法是通过实践数据驱动技术。你可以这样做的一个方法是参加我的动手数据科学课程,我们立即动手,通过做来学习。去看看。我保证,当你将自己的实践技能付诸实践,亲身体验现实生活中的项目时,你会对自己进步的速度印象深刻。

🐼想更多地了解熊猫吗? 获取我的免费熊猫小抄。

成为一名合格的数据科学家需要具备哪些条件?

原文:https://towardsdatascience.com/what-does-it-take-to-be-a-qualified-data-scientist-7fa2508a0513?source=collection_archive---------30-----------------------

我们需要最低标准的认证吗?

我对如今有如此多的学生和专业人士正在学习编程式数据科学工具感到兴奋。越来越多的学校和大学在过去的理论课程中增加了实践部分,人们需要掌握 Python 或 R,并尝试使用现实生活中的数据集。

但这引发了另一个问题:现在每个人都自称是数据科学家。无论我在招聘什么职位,这个词在我看过的 80%的简历中都出现过。事实上,这让我开始忽略这个术语,因为它不再是区分人才的标志。

所以这就引出了一个问题——什么时候一个人才能真正成为一名合格的数据科学家?

合格数据科学家的定义

根据我的个人经验,合格数据科学家(QDS)的一个重要指标是他们何时能够准确估计完成一项包含他们不熟悉的元素的重要工作需要多长时间。要做到这一点,您需要:

  1. 拥有知识来制定完成工作所需的步骤,这些步骤中哪些你已经可以做到,哪些你需要进一步研究
  2. 拥有能力去做你认为你能做到的步骤,而不会出现意想不到的问题
  3. 信心在你预计的时间内学会你不知道的部分

如果我要为 QDS 奖设计某种认证考试,它将是开卷考试,可能需要 4 个小时到一整天,它将涉及选择要解决的新问题和大量数据集。问题将按步骤设置,其中一些早期步骤将需要对所选语言的核心有很强的、流利的知识和快速的记忆,而一些后期步骤将需要对不被视为语言核心一部分的包、模块和方法进行研究和应用,并需要考生进行在线研究才能完成。高效优雅的方法会得到额外的加分。

成为合格数据科学家的步骤

学习成为 QDS 需要哪些步骤?我相信至少需要一年的全日制学习,超过两个紧张的学期,并有几个渐进的学习模块和相应的实践部分:

第一学期:

  1. 初级数学和统计:这将确保人们理解他们正在编写的一些东西。它不必非常复杂,但应该涵盖数据类型和结构、统计汇总和描述符、数据误差和准确性的度量、离散数学和其他一些概念。
  2. 语言基础:这将教授如何用所选语言操作数据的基本组件,并与 1 中所学的概念紧密相关。应该给学生一些练习,让他们用自己选择的语言进行操作,然后解释他们刚才所做的事情的数学意义。
  3. 操作系统管理:学生应该体验 Unix 和 Windows 环境,使用命令行,理解环境变量、权限和许多其他概念,这些概念在他们的语言与其平台的交互方式中起着重要作用。设置核心软件、ide 和集成应该是本模块的重要部分。
  4. 项目工作:在步骤 1 到 3 之后,实质性的项目工作应该以确保频繁的编码实践、发现和解决错误的经验、使用版本控制和产生高质量的输出和结果为目标。应该鼓励学生访问社区资源,如 StackOverflow 并学习如何恰当地与这些社区互动。

第二学期:

  1. 解释性和预测性建模:这将教授解释一种现象的建模与预测一种现象的建模之间的理论差异、可以为每种建模做出的不同设计选择以及实践中使用的最典型的方法/算法。
  2. 常用算法、方法和工具:学生应该接触到最常见的跨平台算法,它们适合做什么(与 1 相关),以及如何用自己选择的语言执行它们。
  3. 代码抽象:学生要学会干巴巴的重要性(不要重复自己),变得能舒服的写函数,明白抽象的价值。
  4. 开发:应该向学生教授软件开发的基本步骤和原则,并用他们选择的语言向他们展示开发的关键资源。应该鼓励他们参与语言发展社区。
  5. 调试:学生需要建立处理错误的信心。应该教授系统的调试过程,探索典型的错误信息和回溯。学生应该接触到语言内部以及语言与操作系统交互方式产生的错误。
  6. 更多项目工作:第二学期的项目工作应集中在 QDS 考试上,以继续鼓励在核心语言功能中快速自信地编码,但引入一些问题,这些问题需要研究学生不熟悉的方法,一些代码抽象将有助于提高工作效率,一些调试将是可能的。

我写这篇文章的主要原因是想趁现在还新鲜的时候,把一些想法从我的系统中整理出来,写在纸上,但是我很想得到一些读者对此的反应。这种结构的课程/资格会为雇用数据科学家提供更好的基础吗?我是不是反应过度了?我错过了什么?

最初我是一名纯粹的数学家,后来我成为了一名心理计量学家和数据科学家。我热衷于将所有这些学科的严谨性应用到复杂的人的问题上。我也是一个编码极客和日本 RPG 的超级粉丝。在 LinkedIn Twitter上找我。也可以看看我在drkeithmcnulty.com上的博客。

拥有学士学位需要具备哪些条件才能闯入数据科学领域?

原文:https://towardsdatascience.com/what-does-it-take-to-break-into-data-science-with-a-bachelors-degree-14265171e6e3?source=collection_archive---------12-----------------------

Unsplash 上由 Carlos Muza 拍摄的照片

我从完成数据科学训练营和获得只有本科学位的数据科学职位的经历中学到的东西。

Y 你是一名刚刚毕业的大学生,或者在获得与数据科学无关的学士学位后已经有了一年或三年的工作经验,但是你开始重新考虑你当前的职业轨迹。你已经研究过数据科学,并认为它很酷,所以你正在考虑参加数据科学训练营或自学,以便在该领域开始新的职业生涯。值得吗,像你这样背景的人有没有可能找到数据工作(数据分析师/数据科学家/机器学习工程师)?

是的,这是可能的,我认为这是值得的(你的经历可能会有所不同)。

然而,从第一天开始,你肯定是在打一场硬仗。我将建议你需要关注三件事,以最大化你从数据科学训练营出来后获得工作的机会。

在我们开始之前,这是我在求职过程中的核心资历。你的背景可能会彻底改变你的经历:

  1. 加州大学伯克利分校机械工程理学学士。(平均绩点约为 3.5)

2.一年在小公司做电气和控制工程师的工作经验。

3.三个月的全职数据科学训练营,构建机器学习、回归、分类和推荐系统项目。

带着这个背景去找工作,这是我学到的。

要准备的东西:

1.编造你的故事

无论你的背景如何,试着把它编织成一个故事,尽可能地引导你过渡到数据科学。我的真实故事是:

  1. 我最终选择了机械工程,因为我在高中玩了太多的电子游戏,不知道长大后想做什么。
  2. 当我在大学的时候,我发现我讨厌机械工程,所以我最终在小组项目中做了大部分的编程工作。
  3. 后来,我在瓦楞纸箱制造机械行业的一家陈旧、停滞不前的公司做了一名电气和控制工程师,这让我害怕每天早上去上班。

采访者听到的是以下内容:

“我学习机械工程是因为我喜欢应用数学和物理来解决现实世界的问题。由于硬件工作的逻辑限制,我发现自己被编程吸引住了,所以我做了一年的电气和控制工程师,在那里我练习了一点 Python 和 UI 设计。虽然我发现工程系统和应用物理概念令人愉快,但我一生都在玩音乐,也喜欢写一些讲述故事的歌曲。数据科学对我很有吸引力,因为它是应用数学/统计学、编程知识和分析数据来讲述一个故事的高潮,所以我辞去了工作,加入了一个全职奖学金,以追求数据科学的职业生涯。”

我没有撒谎,但这也不是全部事实。然而,它确实满足了面试官想要听到的叙述,这样他们就不会认为你会在新职位上任三个月后突然想再次转行。你必须简洁地让面试官相信你对自己的职业转型有信心,否则他们不会赌你赢。

2.如果你只能在网上申请,有可能获得数据科学家的面试,但期待数据分析师的角色

尽管新兵训练营的广告可能会告诉你不同的信息,但如果你没有关系可以获得推荐,也没有硕士学位,你的申请可能连人都不会看到。

以下是我在记录了我发出的每一份求职申请后收集的“求职统计”,包括推荐和不推荐的:

我没有被立即拒绝的七分之五的工作申请是通过推荐的。我申请了几乎所有用“数据科学家”或“数据分析师”搜索的工作。

我获得的任何现场面试(即使是数据分析师职位)都是通过推荐获得的,除了 Twitter 数据科学家学徒职位。每次我在 LinkedIn 上申请数据科学家职位时,他们的衡量标准经常说我是拥有学士学位的 5 %- 10%申请人中的一员——其余的拥有硕士或博士学位。除非你愿意等上几个月或几年,等碰巧看过你简历并决定给你打电话的那家公司回复,否则你需要一个推荐人来获得远程考虑。

如果你现在不认识这个领域的任何人,你可以尝试在数据科学活动中建立联系,但他们很容易失败。你需要自在地与陌生人交谈,询问咖啡聚会的潜在关系。

3.准备,准备,准备面试

我怎么强调都不为过。作为一个非传统背景的学士候选人,任何公司考虑雇用你都有内在的风险。你获得的任何面试机会,你都必须表现出色——尤其是技术方面的。记下面试的所有方面:

  1. 行为 —练习回答“你为什么想为公司工作”、“你会给团队带来什么”、“你最后是如何从事数据科学的”等问题。这可能看起来微不足道,但我没有通过谷歌的手机屏幕,因为我没有排练,只能覆盖这些问题。
  2. 技术 —对 SQL 了如指掌,因为它是业内处理数据的基石。空闲时间在 LeetCodeHackerRank 上做 python 和编码面试题。如果你愿意花点钱,有一些职业公司会在网上模拟数据科学家的面试。
  3. 现场 —在解决白板编程问题时,100%地谈论自己的思考过程。练习识别业务问题,并提出创新的度量标准来衡量它们。能够在简历上解释每个项目的每一步。如果你正在寻找一个数据科学家的角色,了解核心的机器学习技术,它们的优点和缺点,以及 A/B 测试的基础知识。

在第六次面试成功之前,我失败了 5 次现场面试。不要像我一样,在得到你的角色之前让那么多的机会溜走。接受所有面试,先安排你不感兴趣的职位。

事后思考和重复

“是你认识的人”

没有数据科学背景的落地面试。当人们说找工作取决于你认识谁时,这就是他们在谈论的部分。一旦你参加了面试,你只需要练习技术部分,直到你能通过。然而,像我这样的资历,你甚至很少会接到第一个电话,如果没有推荐人(有时甚至有推荐人),你永远也不会有机会证明自己。不要因为你没有准备好就让机会溜走,但也不要在你准备技术技能的时候停止申请职位。每个机会都很重要。

不要依赖新兵训练营给你找工作

除非有工作保证,否则不要指望新兵训练营能神奇地给你找到工作。它能做的是缓冲你的简历,让你接触到工作和面试中的许多话题。深入挖掘并真正内化这些话题以通过面试(和登陆面试)取决于你。然而,真正帮助我找到面试机会的一件事是与我训练营中的人建立关系网——记住,你指望的是推荐。

祝你好运!

找工作肯定会有起有落。最后,我得到了一份为期一年的合同,在一家大公司担任与电气测试数据相关的数据分析师。我失业不到 12 个月,其中 3 个月是在训练营,但你的经历可能会有所不同。

有些时候,你会质疑一切是否值得,有些时候,你离目标如此之近,但一切都分崩离析。你只需要耐心,坚强,抓住你发现的任何机会。

感谢你读到这里,现在就这些了!稍后再来听听你的第一份数据科学工作是什么样的。

如何才能获得一份数据科学家的工作?

原文:https://towardsdatascience.com/what-does-it-take-to-secure-a-job-as-a-data-scientist-9e88faaba562?source=collection_archive---------16-----------------------

基于实际工作发布数据的实用指南

马库斯·温克勒在 Unsplash 上的照片

答你是否渴望成为一名数据科学家,但不确定如何才能获得一份工作?在这篇文章中,我将从以下几个方面概述招聘人员对潜在候选人的期望

  • 工具特定知识
  • 技术
  • 软技能

我将向你解释如何获得满足工作要求的经验,以及如何提高你在面试过程中的成功率。如果你喜欢视频格式,请点击这里—https://youtu.be/2CYQJ4IFeRA

在深入研究本文之前,本文提供的详细信息是基于对跨越不同国家/地区的不同工作门户上的数据科学家职位的招聘信息的分析,相信我,模式是完全相同的。

招聘启事中通常会提到哪些工具?

数据科学家职位发布中有许多常见的工具。我将涵盖满足期望所需的最低要求以及拥有期望的好处。

编程

几乎 70%到 80%的数据科学家职位要求候选人具备一种或多种以下编程语言的经验,

  • 计算机编程语言
  • 稀有
  • 斯堪的纳维亚航空公司
  • 结构化查询语言

如果你开始学习数据科学,那么你最好选择 Python 而不是其他编程语言,因为它目前非常流行,并且拥有巨大的社区支持。编程技能非常重要,因为数据科学家会花 80%的时间来分析数据集,拥有良好的编程知识非常重要。

我目前正在用 python 编写一个为期 100 天的数据科学教程系列,涵盖数据科学家常用的所有概念和技术。如果你有兴趣加入下面的旅程

可视化

下一个最受欢迎的技能是构建良好可视化的能力。在这方面有帮助的一些工具是

  • 像 Tableau/Power BI 这样的仪表板工具
  • 像 MatplotLib 和 Seaborn 这样的 Python 库

以上两项技能(编程和可视化)是让你的简历入围的必备技能,因为数据科学家每天都会用到这些技能。其他可能非常有帮助但不是强制性的技能是

大数据框架

数据存储已经变得非常便宜,因此许多组织已经开始存储比过去更多的数据。为了理解这些大型数据集,了解大数据框架中的工具至关重要。像 Cassandra、Hadoop、Spark、Kafka 这样的工具在这种情况下特别有用,因此拥有这些工具经验的候选人会比其他人更受青睐。

云体验

云平台提供了许多优势,例如

  • 降低 IT 成本
  • 易于扩展
  • 业务连续性
  • 自动更新
  • 高级安全性

其中许多只有拥有大型 IT 团队的大公司才有,但现在有了云技术,没有专用 IT 资源的小公司也可以享受这些好处。

由于所有这些好处,许多公司都有采用云技术的趋势,因此有了一些云经验,你就能很好地找到工作。在云平台中很容易获得经验,所有主要的云平台都提供免费积分或提供免费层,可以用来使用和学习他们的平台。他们还提供对材料和培训教程的访问,以了解有关其平台的更多信息。

雇主寻找的所有技能是什么?以及如何建立它们?

下面列出了通常期望候选人具备的技术和非技术技能。

分析能力

这是一个人提出相关问题以收集所有所需信息,并在解决商业问题时使用逻辑推理和批判性思维的能力。

照片由优 X 创投Unsplash

一些在工作描述中常见的,实际上涉及到你的分析技能的关键术语是,

具有很强的分析、统计和建模技能,具有处理和“理解”来自不同系统的数据的经验

“良好的问题解决和分析技能”

使用各种技术解释结果,从简单的数据聚合到复杂的数据挖掘和统计建模

“分析头脑”

分析思维对于数据科学家来说至关重要,因为在开始处理业务用例之前,彻底理解问题陈述非常重要。好消息是,任何人都可以训练自己的分析技能。有一些技巧可以用来提高这一特定技能。他们是

提问(5W 和 1H 技巧):在处理一个业务问题时,尽可能多地提问,从以下问题开始,

  • 谁啊。
  • 什么?
  • 在哪里?
  • 什么时候?
  • 为什么?
  • 怎么会?

问这些问题会提高你的批判性思维,通过练习,这将成为一种习惯。为了用一个用例来实践这一点,让我们考虑下面的例子,

用例/业务问题:减少客户流失

现在,让我们尝试使用 5W 和 1H 技巧,就这一特定场景提出更多问题

  • 产品/公司的顾客都是些什么人?
  • 整个行业的流失趋势是什么?
  • 这些不安的顾客要去哪里?
  • 这个客户流失问题是什么时候开始的?
  • 为什么这些客户会流失?
  • 我们怎样才能阻止这些客户的流失?

这些试探性问题不仅有助于更好地理解问题,还有助于解决方案的设计

差距分析:这是关于理解当前状态以及预期的未来状态,并提出有助于从当前状态过渡到未来状态的问题和行动。例如,让我们考虑下面的例子

当前状态 : 8%的客户在注册平台后一个月内流失

未来状态:将第一个月的客户流失率降至 5%或以下。

分析:

  • 达到这个目标可以增加多少收入?
  • 导致客户流失的所有触发点是什么?是产品设计有缺陷吗?支付网关?
  • 忠诚客户群和流失客户的特征是什么?
  • 有哪些事情可以帮助实现这个目标?

商业头脑

下一个重要的技能是商业敏锐性,这意味着个人理解商业环境和场景的能力。数据科学家通常会与各种业务团队合作,并与他们一起解决业务问题,因此数据科学家以正确的方式理解问题是至关重要的。在工作描述中,一些与商业头脑相关的常用短语是:

“在通过数据科学创造可衡量的商业价值方面的成熟经验”

“开发数据科学产品”

“针对业务挑战提出解决方案和策略”

“收集所需数据并进行数据分析,以支持业务需求”

在这里,雇主只是想找到一个能够解决任何复杂问题的人。这些技能来自于解决各种商业问题的经验。但是,如果你正试图开始你的数据科学职业生涯,或者希望过渡到数据科学职业生涯,那么可以通过阅读各种分析案例来接触这些领域。有许多关于热门组织如何使用数据来改善客户体验或增加收入的案例研究。这会让你对更大的图景有所了解。根据你想申请的公司,你肯定可以试着阅读一些特定行业的案例研究。

我的公司发表文章,介绍他们如何利用数据,以及他们正在研究什么样的用例?

数据科学体验

现在来看实际的技术技能,大多数数据科学职位空缺都希望申请人拥有一定程度的数据科学项目工作经验。工作描述中常用的一些短语是,

“处理复杂多变的数据集”

“分析大量信息以发现趋势和模式”

“端到端数据科学执行”

对预测建模、机器学习、聚类和分类技术以及算法有深刻的理解

“构建预测模型和机器学习算法”

如果您有兴趣了解基于不同成熟度级别的数据科学项目的生命周期,请观看此视频

获得这种经验的最好方法是研究 kaggle 用例。kaggle 平台上有许多数据科学竞赛,也有一些学习练习。在大多数竞赛中,会提供关于问题、数据和要达到的目标的细节。在这项比赛中,你可以接触到以下一些技术技能

  • 可用于特征选择的方法
  • 可视化数据的所有可用选项是什么?它们在提取洞察力方面有什么用?
  • 如何最好地将数据分为训练和测试?
  • 有哪些不同的算法?哪种算法最适合哪种类型的场景?
  • 大多数比赛鼓励团队合作,因此你也可以学习与团队合作和版本控制

沟通技巧

无论你在一个商业问题上付出了多大的努力,真正重要的事情是将洞察力传达给相关的商业利益相关者。工作描述中常用的与沟通技巧相关的短语有

“良好的演示和可视化技能”

能够以清晰、准确和可行的方式传达复杂的定量分析、分析方法和调查结果

“根据需要支持分析和数据可视化的业务需求”

“与关键利益相关方密切合作,了解业务问题并执行提供业务解决方案的数据科学项目”

“与技术和非技术受众进行清晰有效的沟通”

活动发起人Unsplash 上的照片

下面是一些可以帮助你提高沟通技巧的事情

  • 使用正确的工具,如仪表板、图表或其他相关工具
  • 彻底理解问题,并用简单的语言向利益相关者解释
  • 避免使用行话术语
  • 同情听众,用他们习惯的语言进行解释
  • 尝试用故事情节或因果链来演示分析

如何增加你成功的机会?

让我们假设你已经提高了上述技术和软技能,那么现在如何确保你的个人资料入围?有一些技巧可以增加你接到面试电话的机会

建立一个文件夹:从事自己喜欢的项目,并为之努力。将它们发布到你的 git 知识库中,让它们变得可见,最好有一个包含你所有工作的网站,并在你的简历中提供链接

提升你的网上形象:提升自己的一些最佳地点是:

  • LinkedIn——确保你的个人资料是最新的
  • 个人博客——写下你的作品、学习和爱好项目
  • ka ggle——参与竞赛,为数据集做出贡献,参与讨论

别忘了在简历中提供这些平台的链接

推荐人:请你的朋友/同事认可你的技能并提供建议

最后一个建议

为了增加你入围的机会,一定要准备一封求职信。甚至只有一份简历,用同一个简历申请不同的职位。试着阅读并理解职位描述,然后根据你申请的职位定制你的简历和求职信,这样你的成功概率会大大提高。

关于我

我是一名拥有超过 10 年经验的数据科学专业人员,我已经撰写了 2 本数据科学方面的书籍,它们在这里有售。我有一个 YouTube 频道,在那里我教授和谈论各种数据科学概念。如果有兴趣,可以订阅我下面的频道。

[## 莎兰的数据科学

我是一名数据科学专业人员,在高级分析和应用机器领域拥有十多年的经验…

www.youtube.com](https://www.youtube.com/c/DataSciencewithSharan)

在新冠肺炎时代,如何才能成为成功的 CDO 人?

原文:https://towardsdatascience.com/what-does-it-take-to-succeed-as-a-cdo-in-the-age-of-covid-19-f01b48710f3f?source=collection_archive---------34-----------------------

2020 年首席数据官研讨会的三大要点

图片由studiostocksShutterstock

2020 年 3 月新冠肺炎袭击美国时, 疾病控制中心 聘请的第一个角色是首席数据官。毫不奇怪,在今年的全虚拟 麻省理工学院首席数据官研讨会 上,新冠肺炎和 GDPR,这两个在文化相关性方面很接近的堂兄弟,是所有人的首选。

在本文中,我分享了此次活动的三个重要收获,并提出了 CDO 在这个远程优先、数据至上的世界中保持竞争优势的后续步骤。

这是麻省理工学院年度首席数据官研讨会的第一天,第四个小时,尽管完全是虚拟的,但对话却非常真实。

我的第一个“太真实”的时刻出现在一个小组讨论会上,从麦当劳到美国银行,一些世界上最令人印象深刻的公司的 CDO,以来自 Milind Kamkolkar 、Cellarity 的 CDO 的智慧金块的形式出现:

“在当今世界,成为数据驱动型企业就意味着成为一家企业。”

!如果我在观众席上,我会开始鼓掌。(也许我做到了,只是一点点,在我的电脑屏幕前)。

在研讨会上,Milind 的评论和其他数据领导者的许多其他评论谈到了一个不可否认的事实,即数据以及 CDO 的作用对每个企业都变得越来越重要。

随着事件的进展,一个主要主题出现了:新冠肺炎和 GDPR(2020 年最热门的两个话题)永远改变了 CDO 的成功形象,无论哪个行业,数据团队都必须响应他们的要求,才能在各自的岗位上取得成功。

正如 NewVantage 首席执行官兰迪·比恩(Randy Bean)在题为“确保首席数据官角色的成功”的小组讨论会上所强调的那样,现代 CDO 的职责仍在萌芽和演变中。在研讨会的过程中,发言人提出了他们自己的论点,即 CDO 应该关注什么,以及他们应该如何制定自己的战略,以满足新冠肺炎、GDPR 和其他行业变革的需求。

尽管他们存在差异(就像雪花,没有两个 CDO 是相同的)我发现他们都同意的三个关键事情:数据治理的健壮和自动化方法的重要性,对数据质量 解决方案的需求,以及数据民主化的承诺。重要的是,数据民主化有可能在公司范围内真正扩大前两项计划和许多其他计划的影响。

数据治理应该自动化

为了跟上不断发展的法规遵从性需求,团队应该优先考虑自动化数据治理任务。图片由斯科特·格雷厄姆Unsplash 上提供。

新冠肺炎和 GDPR 已将数据治理置于许多 CDO 的前沿和中心,但手动合规方法已不再奏效。手动编目和监控上游和下游的数据依赖关系使得团队很难跟上 PII 处理需求。

尽管所有行业都被迫适应这一新规范,但或许没有哪个行业像金融服务业或联邦政府那样受到如此大的影响。问问硅谷银行的 CDO卡拉戴利和美国空军的 CDO艾琳维德林就知道了。在两次单独的会谈中,Cara 和 Eileen 详细阐述了对更高级的数据治理方法的需求,该方法利用 ML 来解决这些问题,将数据人员从繁琐、容易出错的任务中解放出来,这些任务可以通过自动化更有效地解决。

Cara 表示,自动化数据目录是其组织数据治理战略的基础。

卡拉说:“CDO 这个角色不适合胆小的人。”。“对于许多没有投资基础数据基础架构、数据管理实践和数据质量的公司来说,数据治理是一项艰巨的任务。因此,CDO 通常会重新开始或修复出错的数据治理计划。”

同样,Eileen Vidrine 分享说,美国空军投资了一个自主开发的联合数据目录(称为 VAULT)来处理数据治理。

“我们的最终目标是让 VAULT 平台对每个航空人都是可用的,就像基础设施一样,”她说。“为了实现这一目标,我们将真正投资于自助式自动化数据治理,以便我们能够在空军的各个领域同步做出有关我们数据的决策。”

优先考虑数据质量

如果数据断了,没人听到,会发出声音吗?图片来自图片来自studiostocksonShutterstock

坏数据不会放过任何人,这是一个保守得不好的秘密。

问问劳伦·加德纳博士就知道了,他是约翰·霍普金斯大学传奇的新冠肺炎全球仪表板的创造者之一,该仪表板追踪冠状病毒确诊病例、康复和死亡的数量。该地图被广泛认为是实时了解疫情状况的主要信息来源,为世界各地的社区提供了一种方便用户的方式来了解疾病如何影响他们的地区。

根据劳伦的说法,准确的数据是地图功效的核心,但不同国家跟踪和报告数据的差异影响了各种指标,包括病死率(换句话说,死亡率)。

她说:“这些比率因国家而异,从不到 1%到 25%不等。”“实际上不太可能有这么大的差异。更有可能的是,这是一个多因素的问题,即所报告数据的数据质量。”

在与其他数据领导者的小组讨论中,中国银行的 CDO Richard Goldberg 指出,进攻性和防御性数据战略之间的区别在于识别和解决数据质量问题的能力,以免它们成为问题。

“重要的是实施数据战略,认识到 CDO 不仅仅是一名消防员,”他说。“最终,我们需要开始以一种有知识和健康的方式使用数据,并以高度的信心利用数据。要真正实现创新,我们需要对数据一致性负责。”

在公司范围内推动数据民主化

数据民主化是在公司范围内扩大数据影响的关键。图片由 Unsplash 上的安妮·斯普拉特提供。

从美国空军到 Capital One,分散的数据分析方法正迅速成为新的规范。由专业的实践者团队将洞见生成锁起来的日子已经一去不复返了。

美国运通的 CDO 丹妮尔·柯普指出,她的团队对数据民主化的优先考虑有助于在公司范围内扩大数据的使用(和影响)。这种民主化为 Capital One 的所有数据团队提供了释放其数据潜力的必要工具,并进而利用这些工具做出更明智的决策。

“重要的方面是尽可能集中数据管理,然后分散/联合数据的分析、ML 和 BI 方面,”Danielle 说,这与数据网格没有什么不同。

数据民主化的另一个要素是跨公司跨职能的数据最佳实践传播。

Eileen Vidrine 认为,数据是一项团队运动。

“这不是一个办公室在数据领域的工作,”她说。“这是关于建立那些伙伴关系。为了快速行动,我需要整个部门的变革倡导者。”

尽管如此,几乎所有的数据领导者都强调,要大规模实施数据民主化,仍有许多工作要做,特别是考虑到新冠肺炎已经高度重视数据驱动决策。

ThoughtSpot 的首席数据战略官 Cindi Howson 发表了一篇关于如何发展数据驱动文化的演讲,很好地回应了这种必要性。

根据她在 ThoughtSpot 的团队委托进行的一项关于 CDO 有效利用数据的主要障碍的调查,她说,“即使在疫情期间,当释放数据的价值很重要时,82%的首席债务官也说文化是他们的主要障碍。”

我的意见:如果我们让负责任地使用数据变得更容易、更容易,这些工具将会被更多人采用,反过来,更有影响力的数据应用将会真正为您的公司发挥作用。

CDO 的下一步是什么?

CDO 的作用仍在演变。最终,解决这三个支柱(数据治理、数据质量和数据民主化)是很重要的,但是最重要的是,您需要将您的数据组织的优先级映射到您的业务需求。除此之外,没有新奇的数据目录、令人兴奋的分析工具或云仓库迁移会给你带来成功。

您的业务需求通常可以归结为影响底线的因素,无论这意味着实现收入目标、销售配额,还是新用户注册。您需要确定哪些数据将帮助您的公司实现这一目标,以及如何让您的团队成功地快速、合规且最有效地获取和利用这些数据。

就这样,我将留给你另一个来自研讨会的“太真实”的智慧金块,由万事达卡 CDO 乔安·斯通尼尔提供:

“你可以在不同行业之间调整某些数据技能,但你的数据策略绝对要遵循你的业务策略。”

欲了解更多来自数据世界的更新和热点,请务必关注蒙特卡洛的 数据停机博客

LinkedIn 了解你什么?

原文:https://towardsdatascience.com/what-does-linkedin-know-about-you-81cd65c69cb?source=collection_archive---------35-----------------------

亚历克斯·伊比在 Unsplash 上的照片

探索我们的 LinkedIn 个人数据

大哥在看着我们,我们来个眼神交流吧。

我成为 LinkedIn 会员已经 5 年了,上周我下载了我的个人数据,看看我能在里面找到什么。让我们开始吧!

为了框定背景,我会说我的 LinkedIn 使用非常被动:我几乎没有反应或发布,我主要是阅读和观看我的订阅。我不会为任何高级服务付费。平均来说,我会说我一周登录四到五次。

1.️️G️et 你的数据🗂️

LinkedIn 让你可以下载你的数据。为此,请转到设置&隐私,然后向下滚动到获取您数据的副本。你可以选择一些特定的数据,但我更喜欢下载一切。一旦存档准备就绪(花了大约 2 个小时),您将会收到一封邮件通知。你可以在同一个地方返回你的 LinkedIn 个人资料,然后获得你的数据的副本并下载 zip 存档。

2.广告目标内容📝

我们先来关注一下文件 Ad_targeting.csv

考虑到这个文件的名字,我认为它包含了广告公司共享的数据。更多信息请点击这里:business.linkedin.com/marketing-solutions/ad-targeting

我的广告简介相当详细和准确。我是一名 25-34 岁的法国男性,在一家拥有 11-50 名员工的计算机软件公司工作。我的性格适合我,大部分兴趣和技能都是正确的。

这是原始数据。让我们看看我的广告简介是什么样的:

Company Category: --
Company Connections: list of 80+ companies where my connections are involved in
Company Follower of: list of 30+ companies I'm following
Company Growth Rate: --
Company Industries: Computer Software
Company Names: list of 7 companies I've been involved in
Company Size: 11-50 employees
Degrees:
  - Secondary Education
  - Associate's Degree
  - 146
Fields of Study: list of 9 fields I've been studying
Function By Size: --
Graduation Year: --
Interface Locales: English
Job Functions: Support
Job Seniority: Entry
Job Titles: list of the 9 job titles I had in my career
Member Age:
  - 25 to 34
Member Gender:
  - Male
Member Groups: list of 7 groups I'm member of
Member Interests: list of 85+ interests keywords
Member Personae:
  - Linux
  - Android Users
  - Desktop/Laptop Users
  - Mobile Users
Member Schools:
  - Ecole Nationale Supérieure de Géologie
  - Télécom Paris
Member Skills: list of 245+ skills
Profile Locations:
  - Europe
  - France
  - European Union
  - eu.fr.*.0
  - European Economic Area
Years of Experience:
  - 4 years
degreeClass:
  - 100
  - 10
interfaceLocale:
  - en_US

乍一看,看到所有这些数据可能很吓人,但除了我没有人填补空白。我希望在 LinkedIn 中尽可能准确地被其他人看到。这是获得这种准确性的代价。一方面,它允许 LinkedIn 向我推送我喜欢看的内容。我不希望收到与我的个人资料无关的工作机会。另一方面,我会收到与我的兴趣相关的广告,因为我更有可能点击它们。

3.连接分析🤝

照片由 Perry GroneUnsplash 上拍摄

下载的文件中有一个名为connections.csv的文件。它记录了具有以下特征的所有新连接:nameemailcompanypositionconnection date

我现在有将近 1000 个连接,让我们看看我什么时候有新的连接:

LinkedIn 新关系演变

上图显示了每周的连接数。可以看出,我的网络增长有点缓慢。但是让我们考虑一下周累计曲线:

每周新连接演变(累计)

累积和图表明我的网络增长相当稳定:每周超过三个连接。开始时的趋势(曲线的左边部分)非常不同,因为我添加了我已经有的联系人。在过去的几周里,我希望扩大我的人际网络。

从相同的数据中,我们可以探究每个工作日新连接的频率:

每周日的连接分布

上图显示,大部分时间我都没有新的连接(平均每天 0.4 个连接)。这就是小提琴被拉伸到底线的原因。从小提琴的形状可以看出,我在周三、周四和周五更有可能有新的联系。

数据丰富 从我的连接名称中,我可以创建一个新的列性别。LinkedIn 可以通过分析每个个人资料轻松做到这一点。大多数时候应该是准确的。在我的网络中,有三分之一的女性和三分之二的男性。我用我在软件工程领域发展的事实来解释这种不平衡,这是不平衡的。

让我们再次生成之前考虑性别的图表:

按性别分列的 LinkedIn 联系演变(累计)

从上面累积的曲线,我们可以观察到,男性和女性的曲线似乎遵循相同的演变。男性曲线的斜率高于女性曲线,但两者都有持续增长:

  • 每天 0.19 次母接头
  • 每天 0.27 次男性连接

现在我们可以关注每个性别每周日的分布:

LinkedIn 每周每天每个性别的新连接分布

从上面的图表我们可以看到,女性半小提琴甚至更拉伸到底部。

现在我们已经考虑了连接,我们可以关注名称:

名字出现

从上面的柱状图中,我们可以看到我的网络中第一个名字出现的频率。男性/女性的不平衡在这里再次显现,因为最常见的名字大多是男性名字。我不得不选择没有性别区分的名字(例如 Camille 适合男性和女性)。从名字可以看出,我的亲戚大多是法国人。

姓氏出现

姓氏也很偏颇,因为我的人脉不具有代表性。因为我的姓是 Leprince,所以这也是我所有亲戚中最常见的姓。尽管如此,在法国还是有一些常见的姓。从我的联系人姓名中很容易猜出我的国家。

减去📌

  • LinkedIn 让你下载你的个人数据,它包含了很多信息。
  • 我的网络的增长或多或少是线性的,自 2015 年以来,平均每天有 0.5 个新连接。
  • 我的出身和职业选择严重影响了我的人际网络。
  • 探索它是一件非常有趣的事情,而且还有更多的事情可以做。用你的数据试试吧!下面是源代码:

[## yl prince/medium-LinkedIn

探索你的 LinkedIn 数据。请随时在 LinkedIn 上联系我!

github.com](https://github.com/yleprince/medium-linkedin)

我的 Instagram 消息数据说明了我什么?

原文:https://towardsdatascience.com/what-does-my-instagram-message-data-say-about-me-c29a8ff1b283?source=collection_archive---------55-----------------------

使用 Plotly 进行探索性数据分析

我承认。我使用 Matplotlib 进行数据可视化已经很久了。清晰的数据可视化对于任何数据专业人员向技术和非技术受众传达信息都至关重要。在阅读了 Chris Brownlie 的文章“Whatsapp Messages 中的 3.5 年关系”[1]后,我受到启发,使用 Python 库 Plotly 和可请求的 Instagram 数据提升了自己的数据可视化技能。

数据源

对于 Spotify、脸书、WhatsApp 和 Instagram 等应用,你可以轻松地请求并下载它们存储在你身上的所有个人数据。本文中进行的探索性数据分析使用了我的 Instagram 数据请求中的“messages.json”文件。在加载 JSON 文件并将其规范化之后,我得到了 12507 行消息(5755 条发送的消息和 6752 条接收的消息)。

为什么要用 Plotly?

我发现使用 Plotly 比使用 Matplotlib 有两个优点。首先,Plotly 提供交互式可视化,可以使用 HTML 或链接嵌入到网站/博客中。其次,Plotly 有一个名为 Chart Studio 的云服务,可以让你将可视化保存到一个免费的在线账户(一个免费账户 100 个公共可视化)。

我的发现

1)我的 Instagram 消息使用量从 2018 年开始猛增

作者图片

2018 年以来,我的 Instagram 消息使用量猛增。凭直觉,我能想到推动这种变化的两个原因。首先,随着 2016 年下半年 Instagram stories 的发布,我慢慢开始从使用 Snapchat 作为主要的消息平台转变过来。其次,我在 2018 年夏天和 2019 年夏天在脸书实习。这可以解释夏季几个月的峰值。可能我在和他们合作的时候下意识的开始更多的使用他们的平台?还是因为我的同事是更活跃的用户?

【这项分析是通过按月对我的信息进行分组并使用计数功能进行的。平滑后的趋势是 Savitzky-Golay 滤波器(39,5)]

2)我会在 30 分钟内回复超过 80%的 Instagram 信息

作者图片

这是最让我吃惊的图表。虽然有些信息我需要几个小时甚至几天才能回复,但在大多数情况下,我会很快回复。

【对于每一行信息数据,我创建了一个‘发送者’和发送时间的滞后变量。这让我可以过滤那些滞后发件人不是我而当前发件人是我的邮件。因此,我可以计算出从收到消息到做出响应的时间。我使用了一种试探法,将这些消息过滤为响应时间少于 24 小时的消息,以防止加入“新对话”。使用 numpy 的直方图和累积和函数计算标准累积分布函数。]

3)2017 年我最常用的 10 个词,2019 年有 6 个是一样的

作者图片

虽然在过去的几年里,我的大部分常用词汇并没有改变,但一些词如“干杯”已经从我的常用词汇中消失了,而“是”已经变成了“是”。“伦敦”也是 2019 年的一个入口,因为我在夏天搬到了那里,并试图让我的朋友来看我。

为了进行这一分析,我使用 NLTK 的 tweet tokenizer 将我的消息拆分成单词。由于我的语言的非正式性和表情符号的使用,tweet tokenizer 似乎比标准单词 tokenizer 做得更好。接下来,我删除了所有表情符号和停用词(常用词,如“the”、“a”、“an”等)。然后使用集合库中的计数器函数来查找最常见的单词。]

4)我喜欢使用笑的表情符号

作者图片

我认为笑表情符号的使用部分是因为通过 Instagram 信息分享的新表情符号越来越多(YoungKingsTV、Chabuddyg 和 Gujumemes 似乎是最流行的)。第三个最常见的表情符号是棕色肤色,它与各种不同的表情符号一起使用,例如👌🏽或者👍🏽但似乎已经聚集在一个集体区块下。

【这项分析是通过将我所有的信息文本连接成一个字符串,使用 list 函数将其拆分成字符,然后使用表情库提取所有的表情符号来进行的。然后使用收藏库中的计数器功能来查找最常见的表情符号。]

我在晚上最活跃,尤其是晚上 9 点到 10 点之间

作者图片

我不确定这是不是一个好趋势。可以理解的是,我的 Instagram 信息在晚上的使用率要高得多,因为我通常在白天外出或做大学作业。然而,知道睡前看屏幕对睡眠卫生有害之后,我会有意识地努力尝试减少我在深夜的使用。

【为此,我创建了一个新的‘小时’变量,将我所有的消息按‘小时’分组,然后应用计数函数。]

探索您的数据!

希望这篇文章对你使用 Plotly 和探索自己的数据有所启发。如果有人感兴趣,谷歌有一些非常详细的位置数据,可以非常酷地进行一些地理可视化,Spotify 有你听歌时间的细分。如果你想使用本文中的代码,我已经把它上传到我的 Github 这里

[1]克里斯·布朗利(Chris Brownlie),3.5 年的关系,在 Whatsapp Messages (2019),https://medium . com/data-slice/3-5 年的关系-在 Whatsapp-Messages-4f4c 95073 c9d

[2] Lemola,Sakari 等,“智能手机时代的青少年夜间电子媒体使用、睡眠障碍和抑郁症状。"《青少年杂志》44.2(2015):405–418。

营养与医疗保健支出有什么关系?

原文:https://towardsdatascience.com/what-does-nutrition-have-to-do-with-healthcare-expenditures-f5e59c62a1c3?source=collection_archive---------50-----------------------

数据新闻

一项探索性数据分析项目,调查美国的医疗保健支出及其与营养模式的关系

塔尔萨公共卫生

介绍

医疗保健支出约占美国年度 GDP 的 18%,相当于人均超过 11,000 美元。与经济合作与发展组织(OECD)成员国的平均水平相比,美国的医疗支出占其经济的比重几乎是其两倍。尽管如此,美国的医疗保健结果仍然严重落后于经合组织中的其他高收入国家;美国的预期寿命最低,慢性病负担最高,肥胖率是经合组织平均水平的两倍。与其他国家相比,美国也是因可预防原因住院人数最多的国家之一,也是可避免死亡率最高的国家之一。美国的医疗支出是怎么回事,为什么会这么高?

根据雅培 2016 年发表的一项研究,在美国,每 3 名进入医院的患者中就有 1 名营养不良。营养不良通常是患者入院的根本原因,营养更好与住院时间更短和再入院率更低有关。营养在决定医疗保健支出中可能起什么作用?

美国医疗保健支出

首先,我分析了医疗保险和医疗补助服务中心在国家和州两级发布的医疗支出数据,以了解美国的医疗支出。如下图 1A 和 1B 所示,随着时间的推移,美国医疗保健支出几乎呈指数增长。比如,1960—2020 年间,美国人均医疗支出增长了 7,500%以上;仅在 2000—2018 年间,美国人均医疗支出就增长了 130%以上。

各州的医疗保健支出有何不同?

如下图 2A 所示,1980 年,美国国家层面的医疗保健支出在州层面似乎相对同质,因为似乎没有任何一小组州主导人均医疗保健支出。随着时间的推移,这种情况似乎会发生变化,一小部分州的医疗支出似乎比其他大多数州高得多。这种转变始于 1990 年(图 2B),一直延续到 2014 年(图 2D)。到 2014 年,各州的人均医疗保健支出似乎有了更大的差异。例如,在 2014 年(图 2D ),美国北达科他州和东北部各州的人均医疗保健支出明显高于其他州。

随着时间的推移,一些州的人均医疗支出是否比其他州更高、增长更快?

在下面的图 3A 中,每个州在 1980 年似乎都有相对相似的医疗保健支出。然而,随着时间的推移,各州之间似乎出现了分歧,一些州的人均医疗支出比其他州增长得快得多。在图 3B 中,这些州中的一些被突出显示,并且包括康涅狄格州、特拉华州、马萨诸塞州、纽约州和北达科他州。因此,如图 2 所示,2014 年医疗保健支出最高的州似乎也是医疗保健支出比美国其他州增长最快的州。截至 2014 年,这些州对美国医疗支出的贡献似乎不成比例。

下文图 4 进一步强调了上述调查结果,该图显示了随着时间的推移,哪些州的人均医疗保健支出最高和最低。另一个有趣的发现是,许多 1980 年人均医疗支出最高的州也是 2014 年人均医疗支出最高的州。马萨诸塞州、阿拉斯加州、纽约州和罗德岛州在 1980 年和 2014 年都是人均医疗支出最高的 7 个州。

哪些医疗保健服务构成了美国的医疗保健总支出?

如下图 5 所示,美国医疗保健支出(以美元衡量)被细分为许多不同的特定服务,包括医院支出、医生和临床支出、牙科服务支出和处方药支出。虽然在 1960 年,美国在这些医疗保健服务中的医疗保健支出相对相似,但随着时间的推移,医院、医生和临床支出似乎急剧上升,其他医疗保健服务的支出也在增长,但增速较低。截至 2018 年,医院支出在美国医疗保健总支出中所占比例最大,人均年收入超过 5000 美元,远高于涵盖其他每项医疗保健服务的医疗保健支出。

为什么医院的支出相对于所有其他医疗保健服务支出而言飙升?如前所述,研究表明,美国各地的住院治疗是高度可预防的,住院治疗的大量患者营养不良。营养学能帮助解释医院支出水平吗?

美国的营养学

美国有营养问题吗?

根据人类健康服务部(HHS)的营养和健康饮食指南,在人们吃的任何一餐中,他们餐盘中的一半应该是水果和蔬菜。因此,水果和蔬菜的消费水平可能是影响美国营养质量的一个重要因素。我分析了疾病预防控制中心在 2017 年收集的营养调查数据,这些数据旨在确定美国各地的个人消费水果和蔬菜的频率。如下表所示,总体而言,美国的水果和蔬菜消费量很低。在一个特定的州,最多有 12.4%的人口每天食用蔬菜不到一餐。在最坏的情况下,这一比例上升至 23.9%。对于水果消费来说,这甚至变得更糟,因为在一个给定的州中,至多有 30%的人口报告每天消费水果少于一餐;在最坏的情况下,这是某个州 46%的人口。

从下面图 6 所示的地图来看,与美国其他地区相比,从路易斯安那州到加利福尼亚州的美国中西部南部地区每天消耗的蔬菜最少..美国中南部地区似乎每天消耗的水果最少。因此,与北方消费相比,南方消费的水果和蔬菜要少得多。总的来说,美国似乎没有消费足够多的水果和蔬菜,没有达到 HHS 制定的指导方针,因此没有消费营养健康饮食的主要组成部分。这可能有助于解释营养不良问题,这个问题以前与住院率高有关,反过来也与医院费用高有关。

为了评估美国许多其他主要食物种类的营养模式,我分析了美国农业部的人均食物可获得性数据。具体来说,我用经过浪费、变质和其他损失调整后的食物可获得性来代表一段时间内的消费。我在数据中寻找美国人每年食用的不同食物种类的数量(人均磅/年)和人均医院支出之间的相关性。分析过去 40 年的数据显示了美国饮食的一些重要模式。

我首先用这些数据来评估营养模式是如何随着时间的推移而演变的。从下面的图 7A 可以看出,随着时间的推移,消费量增长最快的食物类别包括家禽、高果糖玉米糖浆和食用油。这些变化应该被视为负面的,因为高果糖玉米糖浆和食用油已被证明会导致负面的健康后果。越来越多的研究还表明,大量食用家禽与不同癌症的高风险有关,97%的零售鸡胸肉受到危险细菌的污染。此外,唯一随时间大量减少的主要食物是牛奶;从营养学的角度来看,这应该是负面的,因为 HHS 建议适度饮用牛奶,一般来说,牛奶是许多维生素和营养物质的重要来源,这些对健康饮食很重要。最后,从图 7B 中可以看出,随着时间的推移,平均每日热量摄入从每天 2000 卡路里增加到每天 2500 卡路里。根据梅奥诊所的卡路里计算器,这超过了大多数成年人维持目前体重所需的量;例如,一个中等身高和体重的 40 岁男性,适度运动,需要 2400 卡路里,而具有相应特征的 40 岁女性需要 1850 卡路里。因此,似乎随着时间的推移,由于上述变化,总体营养质量一直在下降;看起来美国确实存在营养问题,消耗了过多的食物,属于国家营养和健康饮食指南推荐的错误食物组。这可能有助于解释所观察到的住院病人营养不良增加的情况,以及因此而增加的住院和医院开支。

营养与医院支出相关吗?

接下来,我想量化营养和医院支出之间的关系。具体来说,我发现了每一种主要食物的人均年消耗磅数与人均医院支出之间的相关性。从下面的相关图来看,集中在顶部的第二行,似乎营养确实在医疗保健支出中起着重要作用。几乎每一种主要的食物类别都与医院支出有中度到高度的关联。与医院支出关联度最高的食物类别包括红肉(r=-0.92)、家禽(r=0.92)、牛奶(r=-0.96)、奶酪(r=0.93)和食用油(r=0.98)。水果和蔬菜的消费与医院费用有适度的关联,有趣的是,每日总热量摄入与医院费用有很强的关联(r=0.87)。

为什么随着时间的推移,营养越来越差?

营养指南可能会很复杂,而且备受争议,美国长期以来的营养模式背后的原因是多方面的。为了对美国营养不良的潜在原因提供一些见解,我分析了美国农业部的食品环境地图集,该地图集从 2011 年开始记录解释美国各地营养差异的不同因素。这些包括在州一级进入杂货店、快餐店和全方位服务的餐馆。此外,美国农业部还开始记录 SNAP 计划的参与情况,该计划为杂货店和低收入地区提供资金,以使人们能够从杂货店购买新鲜农产品和营养食品。虽然我只能获得两年的数据,而且这些数据是在州一级记录的,但我分析了上述因素与同一年州一级医院支出之间的相关性。我这样做是为了深入了解旨在为低收入人群提供营养食品的食品沙漠和政府资助项目是如何影响医院支出的。我假设广泛的食物沙漠、快餐店的便利和收入不平等将构成强有力的因素,有助于解释美国的营养不良模式,进而解释医院支出模式。

如下面的相关图所示,给定州每 1000 人的杂货店数量与给定州的医院支出(用 value.y 表示)适度相关(r=-0.24)。虽然没有其他因素与医院支出显著相关,但在一个给定的州,每 1000 人的快餐店数量与每 1000 人的杂货店数量适度相关(r=-0.39)。因此,随着某个州杂货店数量的增加,该州的医院支出会减少。随着某个州快餐店数量的增加,杂货店的数量减少;这可能会间接影响医院的支出。而且,给定州每 1000 人的杂货店数量平均为 0.27 家,最低为 0.16 家,最高为 0.76 家。这表明,平均而言,只有一家杂货店为 3,000 多人服务。这似乎是一个低值,可能表明美国确实存在食物沙漠问题,这可能对营养产生负面影响,并因此导致医院支出。我相信这些发现可以推广到国家层面。

我们能利用上述发现来预测医院支出吗?

最后,我想看看我是否可以使用美国的营养模式预测全国的医院支出。我建立了一个多元回归模型,在上述分析中使用了与医院支出密切相关的营养模式。下面显示的结果表明,总的来说,该模型是高度显著的(p-value<2.2x10^-16),并具有令人惊讶的高调整的 r 平方值(0.988)。牛奶、食用油和水果的消费量都是美国医院支出的重要预测指标,其系数与上述营养和健康消费的利弊模式一致。例如,根据下面的模型,每人每年多吃一磅水果,他们的医院支出就会减少大约 36 美元。这种模型的局限性包括数据中有限的观察数量和模型中 39 个自由度。更稳健的模型需要更多的数据,模型的解释和意义也需要更稳健。然而,我相信这个模型通过进一步表明营养在帮助医院支出中的重要性,有助于验证上述发现。

我也很好奇,想知道在一个特定的州,每 1000 人中杂货店和快餐店的数量是否是州一级医院支出的预测指标。如下所示,该模型具有统计显著性(p 值=0.023),给定州每 1000 人的杂货店数量是给定州医院支出的高度统计显著性预测因子(**显著性)。该模型的调整后 r 平方为(0.0373),表明美国营养不良的根本原因是复杂的。我认为这个模型更稳健,因为它使用了更多的数据(147 个自由度和跨越 4 年数据收集的 150 个观察值)。食物沙漠/获取新鲜产品似乎是美国医院支出的一个重要因素

结论

总体而言,美国的医疗保健支出似乎已经成为一个非常大且持续增长的问题。医院支出是这个问题的主要原因,随着时间的推移,美国各地的营养不良模式似乎在促成医院支出趋势方面非常重要。有趣的是,随着时间的推移,食物沙漠可能是美国营养不良的原因之一..因此,我认为,寻求降低医疗支出的决策者应该更加重视营养。让营养成为国家级讨论的重要话题可能有助于鼓励人们吃得更健康,并最终有望帮助改善营养,同时减少可预防的住院治疗,进而减少医院支出。

数据和来源

  1. ERS 食物可获得性(人均)数据系统
  2. 美国农业部食品环境图集
  3. 医疗保险中心&医疗补助服务
  4. 联邦基金跨国医疗保健比较
  5. 雅培营养和住院研究
  6. HHS 健康与营养指南
  7. 疾控中心营养监测系统数据
  8. 果葡糖浆营养
  9. 食用油营养
  10. 牛奶营养
  11. 家禽营养
  12. 梅奥诊所卡路里计数器

机器学习从业者在社交媒体上的自我推销是什么样子的?

原文:https://towardsdatascience.com/what-does-self-promotion-on-social-media-look-like-for-machine-learning-practitioners-710f18524d8e?source=collection_archive---------49-----------------------

粘土银行Unsplash 拍摄的照片

意见

“自我推销”和“机器学习”这两个词在一个句子里会连在一起吗?

“当你擅长某件事时,你会告诉所有人。当你擅长某件事时,他们会告诉你。”

―华特·培顿

让我们从自我推销的定义开始吧。我希望您在本文不同地方记住这个定义。

自我推销是通过你的声音展示和展示你的能力、成就和行动的行为。

人们倾向于回避自我推销的想法,因为自我推销的人有一些特质,例如傲慢、过度自信、寻求关注等。

但我们要记住,现在是 2020 年,世界更加嘈杂,你很容易被忽视,不管你有多努力或多有才华。

不要怕无耻的塞自己。只要确保你是在正确的时间、正确的地点、对正确的观众做这件事。

例如,我倾向于无耻地将我的每周简讯塞给机器学习从业者,让他们订阅和接收我的文章和我创建的其他 AI/ML 内容的朋友链接。

本文将介绍自我推销对机器学习从业者的重要性,并添加您可以用来通过社交媒体宣传自我的现代方法。

你为什么要自吹自擂呢?

照片由Zoltan·塔斯Unsplash 上拍摄

从什么时候开始,要求机器学习从业者具备销售和营销技能,甚至建立个人品牌?

让我陈述明显的事实。

一般的机器学习从业者擅长他们的工作,我们大多数人都对技术及其可能性充满热情。

懂软件工程原理的机器学习工程师;了解至少三种现代编程语言;拥有在线作品集;甚至知道特斯拉自动驾驶汽车系统的秘密——开玩笑在这个时代被认为是好的。

不太好,很好。

优点可以让你在人工智能和机器学习行业中走得更远。

没有功德的自我推销只是噪音。但是没有自我宣传的优点在大多数情况下是沉默。

拍摄的照片Unsplash

什么是沉默?

沉默被忽视了,即使你可能是这份工作的最佳人选。

沉默是没有得到你应得的晋升或加薪。

沉默是你不为人知的最佳作品。

以下是一些令人信服的与职业相关的理由,说明你为什么应该自我推销

  • 竞争很激烈。
  • 每个人都可以做你能做的,在某些情况下,他们可以做得更好。
  • 你并不像你想象的那样独一无二,还有其他几个工程师拥有和你一样的技能和技术。
  • 你和下一个人一样值得被认可。

你可以自我推销的方法

现在你确信你至少应该做一些自我推销。这里有一些在网上推销自己的简单方法。

1.中等

Medium 不仅仅是一个博客平台。

嗯,确实是。

但是从现在开始,你需要把 Medium 看作一个展示你的知识和专长的平台。媒介是你的投资组合、个人品牌和通向世界其他地方的渠道。

尖峰时刻 3

‘ME’是单词 Medium 的前两个字母。我,就是你。

不是我,是你…

我想说的是,媒介是一个自我服务的平台,可以用来将你的技能和专业知识传达给合适的受众。

在这种情况下,合适的受众可能是顾客、招聘人员、客户或未来的雇主。

以下是我在媒体上自我推销的方法:

一个动作:选择一个 ML 主题,比如反向传播或模型实现,写并发表一篇文章,展示你在所选主题上的知识。目标是重复这个过程 5-10 次。在简历中加入你发表的文章的链接,并在 LinkedIn 上分享。

2.油管(国外视频网站)

来自像素freestocks.org的照片

使用 YouTube 进行自我推销,比本文中包含的其他自我推销方法需要更多的工作和努力。但是如果做得正确,在 YouTube 上的自我推销可以让你与众不同。

对于机器学习从业者来说,自我推销可以采取以下形式:

让我把你的注意力带到我最近偶然发现的一种自我推销的直观方法上。

Ken Jee 是一些机器学习从业者可能熟悉的名字;他创建了关注数据科学相关主题的 YouTube 内容。

Ken 有一个视频系列,他在其中对机器学习从业者的投资组合和简历进行了深入的评论。他的评论对作品集和简历所有者都很有用,但对那些拥有与他的视频系列中呈现的技能集或简历相似的机器学习从业者也很有用。

回顾数据科学组合

数据科学回顾简历

现在,你可能还不清楚肯·吉如何把审阅你的简历或作品集视为自我推销,所以让我把它说得更清楚一点。

Ken Jee YouTube 平台目前拥有 78000 名订阅用户,数千名机器学习从业者观看他的视频。他的视频的一些观众可能是能够雇佣和招募人才的机器学习从业者。

审查你的投资组合或简历不仅能为你提供一些来自经验丰富的数据科学家的有用反馈,还能让你接触到寻找免费招聘人才方法的潜在雇主。

在 YouTube 上创建机器学习相关的内容是一种自我推销的方法,提供了大量的好处。

我相信,如果你能给他们发送一个你的 YouTube 频道的链接,在那里你可以创造性地展示你的技能和专业知识,那么面试一个角色或向客户推销会顺利得多。

动作:如果你有更多的时间和资源,为什么不创建一个 YouTube 频道,用视频的形式描述一些机器学习的概念和想法。或者,如果你像我一样害怕面对镜头,为什么不把你的作品集和简历寄到 kenjee.ds@gmail.com

3.商务化人际关系网

照片由 Unsplash 上的 inlytics 拍摄

你可能在一英里外就看到了这个平台。

LinkedIn 是专业人士的首选社交媒体平台。这是一个可以用于多种用途的工具,LinkedIn 最常见的用途之一就是自我推销。

你可能见过学生和机器学习从业者在 LinkedIn 上发布课程完成证书;这是一种自我推销的方法。你不必担心所有与自我推销相关的负面特质,LinkedIn 是一个鼓励自我宣传的平台。

但是,为什么机器学习从业者还要在 LinkedIn 上自我推销?

LinkedIn 拥有超过 7 亿多用户,所以可以肯定你未来的顾客、导师、客户、学生和雇主都在 LinkedIn 上。

事情是这样的,自我提升不仅仅是成就和成功的专属。我见过有人发帖抱怨工作被拒或学业失败。

你为什么要这么做?

首先,机器学习是一个艰难的领域,失败并不一定意味着无能,大多数机器学习从业者都意识到了这一点。承担一个程序甚至开始一个项目的勇气是机器学习社区钦佩和称赞的属性。

也许你现在没有在找工作;尽管如此,LinkedIn 是一个有效的平台,可以推广你正在进行的、已经完成或尚未完成的项目、研究或想法。

请记住,你不仅要宣传你旅程的最终结果,还要让人们了解你的进步和其间的小收获。

行动:如果你还没有 LinkedIn 账户,就创建一个。联系并追随你领域内志同道合的人或你钦佩的人。不要害怕发布在你的机器学习生涯中发生的发展。

结论

我在本文中提到的在所有社交平台上创建账户和内容还有一个额外的好处。

每一个提到的平台都有很高的谷歌网页排名领域权威。这意味着当人们搜索你的名字时,他们会找到你在这些平台上创建的内容。

当你遇见一个新的人时,你做的第一件事是什么?你可以在谷歌上搜索他们的名字。

员工和客户做着完全相同的事情。当他们看到你的简历或简介时,他们会在谷歌上搜索你的名字。最好的事情就是你最好的工作和项目成为他们接触到的第一件事。

文章作者的名字在谷歌上搜索。

我会在这里结束一切。

记住,当你优秀时,你会告诉别人,但当你优秀时,别人会告诉你。但是你必须付出很多努力,让人们知道你是好的。不要被忽视。

我希望这篇文章对你有用。

要联系我或找到更多类似本文的内容,请执行以下操作:

  1. 订阅我的 邮件列表 获取每周简讯
  2. 跟着我上
  3. 通过 LinkedIn 联系我

[## 辅助项目在机器学习中的重要性

你和马克·扎克伯格有什么共同点?在这篇文章中找出,以及其他几个原因,为什么…

towardsdatascience.com](/the-importance-of-side-projects-in-machine-learning-edf9836bc93a) [## 2020 年(及以后)机器学习从业者创收的 5 种方式

了解如何利用机器学习技能增加收入或创造新的收入来源

towardsdatascience.com](/5-ways-a-machine-learning-practioner-can-generate-income-in-2020-and-beyond-2f541db5f25f)

网络看到了什么?

原文:https://towardsdatascience.com/what-does-the-network-see-4fec5aa4d2eb?source=collection_archive---------70-----------------------

人工智能

用当时最流行的网络之一探索直觉

杰里米·帕金斯在 Unsplash 上的照片

吕底亚(小亚细亚)的国王克罗伊斯曾经问特尔斐的神谕,他是否应该对波斯开战。当时的波斯由“居鲁士大帝”统治,也称为“老居鲁士”。女祭司说——“如果克罗伊斯开战,他将摧毁一个伟大的帝国”。克罗伊斯很高兴听到这个消息,并准备他的军队,出发越过哈利斯河征服波斯。当冬天来临的时候,克罗伊斯按照当时的惯例解散了他的军队。然而,赛勒斯却没有——他出其不意地击倒了克罗伊斯!

典型的含糊不清的神谕让克罗伊斯失望了——因为克罗伊斯对其预言没有三思。从那以后,一次又一次的事实证明,盲目地跟随一个预测会导致一个人的失败。

从那以后,我们进化成了更聪明的生物。我们不会盲目相信占星家的预测,对吗?的确,我们不再怀有迷信——但我们仍然盲目地追随它们。占星师?不要!—神经网络!

神经网络一直是人工智能研究社区的最大福音——它们帮助解决了人工智能领域完全无法解决的问题,并在很短的时间内取得了出色的成果。然而,随着这些结果,他们给人工智能带来了一个新的术语— 黑盒

神经网络启发式算法(通常用于描述“学习”计算机或“人工智能模拟”的计算机术语)中,黑盒用于描述程序环境中不断变化的部分,这些部分不容易被程序员测试。在可以看到程序代码的上下文中,这也被称为白盒,但代码非常复杂,在功能上相当于黑盒。—https://en.wikipedia.org/wiki/Black_box

现代复杂的人工智能技术,如深度学习和遗传算法,自然是不透明的——人们可以猜测,但永远无法知道网络内部实际发生了什么。由于它们的不透明性,在临床领域应用它们几乎是不可能的,因为人们无法信任一个无法解释的网络。

这自然产生了可解释的人工智能——一个由神经网络提供的解决方案由专家检查并可能解释的研究领域。然而,可解释的人工智能(XAI)仍在开发中,并且尚未取得重大进展来弥合研究人员和机器之间的差距。到目前为止,研究工作在很大程度上依赖于直觉和 XAI 积分的混合。

让我们探索一个简单的 CNN 分类器网络工作背后的直觉,这是当时最流行的网络之一。

[注意:这不是 CNN 的指南——相反,我希望读者对 CNN 及其工作有一些了解,因为这是对所用方法的基于直觉的解释。不用说,这篇文章不会涵盖一个通用 CNN 的全部基础知识]

卷积神经网络

重温一下基本知识,卷积神经网络是一种神经网络,在这种网络中,我们将输入与机器学习的核进行卷积,然后获得输出。换句话说,卷积核不断更新其参数,直到输出接近期望值或损失函数达到最小值。

一幅绘画作品会是—

使用 3x3 滤镜卷积的 32x32x3 图像

因此,我们可以看到 3x3 内核将 32x32 输入卷积成 30x30 输出。一个 3x3 窗口滑过输入图像(所有通道),我们获得 3x3 窗口和内核的点积——我们在输出中用单点表示。因此,单个卷积运算给出了单个通道图像。一组“n”个卷积滤波器或一个卷积“块”将给我们一个“n”个信道输出,因为来自每个滤波器的输出沿着信道宽度被级联。但是,为什么要使用‘n’个过滤器呢?

单个过滤器最多可以捕获单个特征或检测输入的特定特征。单个过滤器无法捕获更多数据,这使得在需要研究多个特征的情况下必须使用多个过滤器。

随着时间的推移,网络学习所有卷积中的所有滤波器的滤波器矩阵的值,从而开始识别它之前看到的输入中的模式。它现在可以执行复杂的任务,如对象检测和分割。

由于我们正在生成滤波器值,我们可以说这既是一个分类问题,也是一个回归问题——我们回归核矩阵,最终对图像进行分类。

现在,如果我们最终使用滤波器并获得输出,为什么我们不能在单个卷积块中完成整个网络?

我们不能使用单个 conv 块来完成整个工作,因为功能也是分层次的!除非从图像中提取低级特征,否则我们无法获得中级或高级特征。因此,我们必须首先在网络开始时使用的卷积的帮助下从图像中提取低级特征。提取低级特征后,我们对卷积输出执行未来操作,以分别提取中级和高级特征。实际上,我们从简单的特性开始,然后将它们聚合成复杂的特性。

VGG-16 架构中不同级别功能的实例

现在,图像中的底层特征到底是什么?

对于低级特征,我们谈论的是像边缘和边界这样的特征——所有信息中最基本和最重要的。中级特征将表示角点和斑点等特征,最后,我们将获得高级特征,这些特征将帮助我们按照我们的要求对图像进行分类或分割。

这是我们为什么使用卷积和为什么在一个完整的卷积网络中使用这么多层的一般直觉。所述网络还有其他方面——如用于控制正则化的丢失、用于引入非线性的激活、用于归一化每层激活的批量归一化等等。如果你想了解更多关于网络这些方面背后的直觉,请告诉我——我不会让你失望的;)

查看我的博客以获得更快的更新,不要忘记订阅:D 优质内容

[## 卷积博客

克罗伊斯,吕底亚(小亚细亚)的国王,曾经问特尔斐的神谕,他是否应该对波斯开战…

www.theconvolvedblog.vision](https://www.theconvolvedblog.vision)

Hmrishav Bandyopadhyay 是印度 Jadavpur 大学电子与电信系的二年级学生。他的兴趣在于深度学习、计算机视觉和图像处理。可以通过以下方式联系到他:hmrishavbandyopadhyay@gmail.com | |https://hmrishavbandy . github . io

“不确定性”是什么意思?

原文:https://towardsdatascience.com/what-does-uncertainty-mean-cac374bb595e?source=collection_archive---------21-----------------------

第 3 部分,共 3 部分——风险、不确定性和模糊性之间的区别

在我的文章 “什么是暧昧厌恶?”

图像是由 Hark 修改而来的模因!凯特·比顿的《流浪汉》

这里的事情可能变得相当学术,所以这篇文章是对过分感兴趣的人的一个脚注。我猜你来到这个页面是因为你渴望知道更多,所以让我尽我所能来进一步迷惑你...

什么是风险?

客观风险

在行为经济学中,在客观风险(或简称为“风险”)下的决策涉及已知的客观概率,例如抛硬币、玩骰子/纸牌。(不是现在,认识论者,安静。)

主观风险

主观风险下的决策涉及已知的主观概率,通过决策者努力处理未知的客观概率而获得,例如,你最喜欢的马赢得明天的比赛(如果你的马参加比赛的话)。换句话说,经过一些努力后,决策者觉得有能力把他们的意见/猜测/假设作为概率的占位符,以取得某种进展。

什么是歧义?

强烈推荐:看前面两篇系列文章【1】【2】

模糊下的决策涉及未知决策者感到无力应对的主观概率,例如,任何我没有任何怪异想法并且无法开始思考概率可能是什么的情况。

在这种框架中,主观风险和模糊性之间的区别与决策者的技能、感知和感觉有关,他们是否有资格做出将主观概率分配给情况参数所需的假设。

如果你熟悉贝叶斯术语,我在 这里 有一些额外的注释供你娱乐。(文字搜索“贝叶斯”,开始阅读。)

什么是不确定性?

这要看你是在哪个领域,哪个年代长大的。这里有一个不完整的列表,只包括我在自己易受影响的年代里读过其学术论文的领域(我,呃,肯定这个术语也被我一无所知的各种领域以其他方式使用):

  • 在 20 世纪 20 年代的经济学中,不确定性意味着模糊性。歧义这个词还不是讨论的一部分——它在埃尔斯伯格之后在经济学中变得流行起来(见之前的文章)。有时,今天的书呆子们将模糊性称为“奈特不确定性”,以此向奈特 1921 年的论文致敬,该论文在埃尔斯伯格出生之前很久就开启了整个“不确定性是经济学家应该更多谈论的东西”的混乱局面。
  • 在 21 世纪 20 年代的经济学中,不确定性往往意味着(主观)风险(T21)。
  • 心理学和神经科学中,不确定性往往意味着主观风险和模糊性的总称,但它与(客观)风险是分开的。(你的头还疼吗?)
  • 统计和数据科学中,不确定性应该意味着风险和模糊性的总称(即不确定性将是他们喜欢的另一个词:确定性之外的一切),但通常被用来表示风险,因为大多数数据人员没有受过处理这种心理学东西的训练,缺乏精确的语言来区分细微差别。
  • 数学和计算机科学中,通常是与统计学相同的,直到你对信息论模糊逻辑之类的小众东西感兴趣,这时你就会喜欢上诸如香农不确定性和哈特利不确定性之类的小众行话,加上诸如模糊性和不精确性之类的一大堆让人崩溃的概念。
  • 在科学领域,这通常是与统计学领域相同的,但也取决于易受影响的年轻科学家一直在读什么书。
  • 物理学中,有一种东西叫做测不准原理 …不,我不去那里。我已经学会避免触及物理学,因为否则我将无法从我的物理学博士家庭那里听到它的终结。为了这个列表的目的,把它和其他科学放在一起。凯西,物理是唯一的科学“是啊,无论如何,爸爸。”
  • 哲学中,语言变得更奇怪,因为突然间你不得不微妙地与不同种类的不确定性作斗争。当心这种令人厌恶的对三种主要不确定性的粗略总结:本体不确定性涉及不符合经验的心智模型;认知不确定性涉及因无知而缺失的事实()“什么,你的意思是告诉我科学还没有完成?!");偶然的不确定性涉及对未来的未知。唉,你需要大量的纸张来公正地处理这些细微的定义,所以也许你最好忘记我提到过它们。如果你很好奇想详细地看看它们,请注意这是一个很大的兔子洞。
  • 管理和政治中,它的意思要么是“我不知道”要么是“也许我知道,也许我不知道,现在问我一个不同的问题(不管怎样,是谁让你进来的?)"

如果你对所有这些语义不确定性感到不安(哈!是哲学笑话!),不用担心——理解风险和模糊性的区别对大多数读者来说已经足够了。系列中这一篇之前的文章【2】会为你直观的做出区别。

即使你是一名经济学家,你可能也不会特别费心去净化你对“不确定性”这个术语的使用,除非你真的在细化你的决策理论,在这种情况下,你可能已经知道什么是 ROCL (不是“笑得前仰后合”,另一个),并且应该根据它的违反来进行你的讨论。随便说话的人不会因为误用不确定性这个词而被扔出大炮作为惩罚。

现在是完全不同的东西…

感谢阅读!如果你在这里玩得开心,并且对人工智能感兴趣,这里有一个初学者友好的介绍供你娱乐:

在这里欣赏整个课程播放列表:bit.ly/machinefriend

喜欢作者?与凯西·科兹尔科夫联系

让我们做朋友吧!你可以在 TwitterYouTubeSubstackLinkedIn 上找到我。有兴趣让我在你的活动上发言吗?使用表格取得联系。

对于未来的数据科学家来说,“致力于解决实际问题”意味着什么?

原文:https://towardsdatascience.com/what-does-work-on-a-real-problem-mean-for-prospective-data-scientists-5c91329c2487?source=collection_archive---------61-----------------------

打破对最常见建议的期望

如果你向任何数据科学招聘经理寻求面试建议,他们会告诉你解决一个真正的问题,并在线上传你的代码/演示文稿。很难反驳这一点,因为谁不想要一个已经可以做这项工作的人呢?

然而,对于一个没有任何经验的学生(本科生或博士),这个建议令人沮丧。不为人知的秘密是,大多数招聘经理也无法告诉你他们到底想要什么。我们只知道,有了有经验的候选人,面试会更顺利,我们的信心也会更高。另一方面,与没有经验的候选人交谈,我们常常会觉得缺少了什么。这篇文章主要是为学生写的,但新经理也可能会有所了解。

语境

在我分解细节之前,让我告诉你在招聘经理与你通电话之前刚刚发生了什么:我们刚刚从一个不同的会议中出来,回忆起这个职位是干什么的,当我们拨你的号码时,开始浏览你的简历。简历有助于我们了解你可能的强项/弱项,并有望为一次良好的对话提供一些素材。在这一点上,我们已经厌倦了工作,厌倦了重复的问题,但真的希望你能成为结束狩猎的人。

好的一面是,我们支持你。另一方面,我们已经采访了足够多的人,这种对话可能会感觉像重播。多亏了你学校里敬业的指导老师,你的课堂项目可能太过修饰,无法提供我们喜欢的小灵感或教育片段,这与在探索频道(过去)看一集好节目没有太大区别。

如果你认为这似乎倾向于偏见,你没有错。幸运的是,我们通常被要求写下我们对面试的看法,以及我们如何判断你在沟通、技能和是否适合该角色方面的各种才能。这个文档过程很好地过滤了偏见,因为我总是写评论,相信候选人有一天会看到它们。

我们在“真正的问题”中寻找什么

我将跳过面试中的非技术性部分,描述我在“真正的问题”中寻找什么。

你明白解决问题意味着什么吗?

  • 观众是谁?医疗保健中的问题可能针对临床医生、患者、保险公司或机构。不同国家的医疗保健也大不相同。你应该能够清楚地表达这一点和你潜在的未来观众。
  • 您的受众如何验证解决方案是否有效?在农业上,这可能需要一个带状试验,需要整个种植季节。在技术方面,你的团队可能需要在 AB 测试中看到注册情况的改善。在某些情况下,定性反馈可能就足够了。记住你是销售的人,所以你的观众可能不知道他们想看什么。
  • 有时间表吗?给你多少时间来解决这个问题,你将如何分配时间?一个典型的学生错误是花太多时间在解决方案的生成上,而很少时间在验证或交付解决方案上。
  • 你的解决方案解决了问题的哪个方面?如果你试图为一个非盈利事业增加会员,你的解决方案是通过增加曝光率来增加漏斗顶端,还是通过增加保留率来减少附带影响?没有阐明问题中的细微差别是你还没有被现实生活压垮的头号标志
  • 存在哪些资源或限制?是否存在现有的数据收集,是否有法规要求,是否有预算限制?
  • 现状是什么,你为什么不把时间花在另一个问题上?这真的是个值得解决的问题吗?如果只是为了好玩,一定要知道这一点。

你能用数学的严谨来形式化想法吗?

  • 形式化一个反馈意味着什么?在 Kaggle 上,评估指标和标签会给你。对于一个真正的问题,提出指导算法的客观的数据是更具挑战性的任务。通过选择一个目标,你也应该有意识地拒绝它的选择。这可能是因为获得标签的可行性或者指标与您的最终目标无关。确保你能清楚地说明理由。
  • 你对你的问题和你的数据之间有数学上的理解吗?学生们常常认为数据是“正确的”,却没有意识到采样、测量和处理所面临的挑战。可悲的是,这也是人们经常忘记的统计学的第一课:数据充其量只是现实的一瞥。理解这种污染对于理解你的工作的局限性是至关重要的。如果你不理解你的数据,我为什么要相信你基于它的解决方案?
  • 你从你的模型中学到了什么?统计学生喜欢谈论他们尝试的模型,编程学生喜欢谈论他们的代码迭代了多少个模型。问题是,随着机器学习平台的成熟,拟合模型是一项可以自动化的任务。您对数据、模型和/或问题有所了解了吗?我想雇用一个人,因为系统是复杂的,不断变化的,你能告诉我什么时候我们应该重新训练模型吗?对任何科学家来说,模型都是为了简化现实,帮助增进我们的知识。当初级数据科学家向我展示 scikit 的几页输出时,我感到很难过——除了哪个模型最适合数据之外,我几乎没有什么洞察力。
  • 你能帮助非数学人员量化他们的直觉吗?如果你能做到这一点,你应该可以轻松地向非量化受众传达/销售你的结果——这是数据科学家通常倡导的技能。不幸的是,对于初学者来说,这又是一项难以理解和训练的技能。量化他人意见的能力需要同理心、数学严谨性和实践。幸运的是,与“将你的模型传达给领导层”不同,将非数学直觉形式化可以从与你的非量化朋友讨论一个问题开始。

你能处理不确定性吗?

  • 你如何处理意外?真正的问题从来不缺少惊喜,你如何应对这些?您的数据源可能不再可用,您的包可能被弃用,您的受众可能对您的解决方案不再感兴趣,您的合作伙伴可能突然退出,那么您该怎么办?这让我们对你可能如何处理问题有了一点了解。你会继续解决这个问题还是会停下来,你是如何做出这个决定的?有展示勇气的时候,也有早早放弃的时候。可悲的是,好的教学往往伴随着最小的惊喜,所以这是很难从学校学到的。
  • 你会问一些降低问题不确定性的问题吗?我对面试初级数据科学家最大的抱怨之一是他们经常害怕提问。学校里的问题可能是显而易见的,但真正的问题很少如此。问题可以让人们关注同一个问题,并展示对细微差别的理解程度。对于面试官来说,这是关于“和你一起工作感觉如何?”的最现实的数据点所以问!
  • 你能集中注意力吗?有些人可以没完没了地谈论一个问题的细微差别,然后跑题。虽然这展示了对主题和问题的深刻和广泛的理解,但是人们经常会忘记原来的问题。在初级数据科学家中,这通常表现为对你过去看到的所有分析的盲目尝试,或者围绕某个主题的随机事实的回流。当面对看似无穷无尽的选择时,告诉我你可以在没有指导的情况下导航。

你能发现问题吗?

  • 如果你能向我们展示一些企业家的洞察力,那就太好了,但仅仅注意到数据中的异常是否需要进一步调查就足够了。数据、模型和关系可能是混乱的,所以你发现它们是需要并且能够解决的问题吗?类似于对数据的无知,发现问题需要一定程度的关注细节,一些训练,以及一颗不认为事情理所当然的好奇的心。这可能是最难学习的技能,但这也是为什么人们经常建议你在你热爱的领域解决问题。没有好奇心去发现问题的人真的应该考虑一条不同的职业道路。
  • 什么类型的工作让你兴奋?从你的语气中可以清楚地看出激励你的工作类型,以及如果我们聘用你,你是否会继续担任这个职位。我不鼓励你假装,但我鼓励你在看似无聊的问题中发现兴奋。#数据质量

你能执行吗?

  • 在你建议的所有事情中,你自己能做多少?要解决一个真实的问题,你能写下问题吗,你能收集数据吗,你能拟合模型吗,你能验证结果吗,你能推销它吗,你能支持它吗,你能扩展它吗?每一步都需要不同的技能。虽然数据科学家的角色主要集中在这个过程的建模和编码方面,但你肯定需要对挑战和每个步骤所需工作量的理解。一位朋友告诉我,我们不应该告诉别人做我们不愿意或没有能力做的事情。我希望你也听从这个建议。
  • 你熟悉基本术语和工具吗?你应该假设所有参加面试的候选人都可以勾选这个框。如果你知道某个工具(如 tensorflow)或技能(如遥感)特别适合这个职位,试着把它偷偷放进你的项目和面试中。请注意,这方面是最低限度的,很少区分你和其他人。

结论

没有人指望一个早期的数据科学家去完善上面提到的每一个方面。如果这篇文章给你的问题比答案多,那你就在正确的轨道上。

正如我在上一篇文章中提到的,区分专家和业余爱好者的关键不仅是执行的质量,更重要的是有意识决策的数量。致力于一个“真正的问题”会让你在学校里的导师隐藏起来的所有决定浮出水面,并迫使你做出许多有意识的选择(记住不做决定也是一种选择)。希望这篇文章能让学生们对这个建议有所了解。

你的 Word Cloud 对你的 Youtube 观看稍后播放列表说了什么???

原文:https://towardsdatascience.com/what-does-your-word-cloud-say-about-your-youtube-watch-later-playlist-e75e262c4e26?source=collection_archive---------57-----------------------

自然语言处理,词云,降维,K-均值聚类

Youtube 遮罩应用词云,图片由作者提供

大多数经常使用 Youtube 的人都有大量的观看后播放列表,就像我们大多数人一样,过了一段时间后,我们完全忘记我们在那里放了什么,这就是我们的日常生活日程。稍后,在放松或停顿的时刻,我们意识到我们已经积累了很长的清单。

我们懒得检查它什么时候是这么长,如果我们检查它,我们滚动几次,然后离开它,等等…

今天在这篇文章中,我们将通过一种方式来创建一个词云,它将遍历这个“稍后观看播放列表”的所有视频标题,并从这个播放列表中生成一个词云,它将生成一个播放列表内容的摘要。我们看看它会怎么说你?

此外,我们将应用一些维度减少,并在二维空间中可视化它们,以更好地分析我们的选择。

首先,你需要的是你的 Youtube 稍后观看播放列表…我们如何得到它???

嗯,谷歌对所有账户都有一个很酷的功能,可以让你下载与你的账户相关的所有数据:谷歌外卖

谷歌外卖截图

一旦你进入主页,让我们取消所有选择,只选择 Youtube 播放列表,这可以通过点击取消所有选择然后向下滚动来完成,一旦完成,点击下一步,它会问你想下载什么,勾选播放列表,然后点击下一步,在通过一些认证检查后,你就可以走了。

一旦你下载了文件,你将有一个包含多个文件的文件夹,我们感兴趣的是“watch-later.json”。它将是一个 JSON,包含所有的视频集合及其描述等等,如下图所示。

我的手表-后来的 JSON

让我们开始破解代码吧

Print(videos[1]['snippet'])

获取所有视频的原始标题!!!

这里我们得到的是所有未经预处理的标题的总和,我没有做任何预处理,如词干化或词汇化,因为我对实际的上下文和标题名称感兴趣,所以我保持不变。

停止言语

当然,我们不希望最常见的互联网/youtube 使用的术语出现在我们的词云中,所以让我们将它们添加到原始的停用词列表中,这样它们就可以被过滤掉。

创造词云

现在,我们为什么要创造一个简单的词——云呢?当我们可以用两行代码创建一个很酷的。我们只需要下载一张你喜欢的图片,把这个蒙版应用到单词云上。我为我的 word_cloud 选择了下面这张图:你可以用任何你喜欢的图片来尝试,我个人用的是 Youtube 的 logo。灵感来自:this:https://www . data camp . com/community/tutorials/word cloud-python

在我的播放列表上生成单词云

有趣的是,我们看到有大小不同的单词,没有一个单词被重复,每个单词的大小表明了它的频率或重要性。

现在让我们尝试一些别的东西,为什么我们不在 2D 空间可视化这些视频,看看它们是如何聚集的?

首先,我们需要将集合转换成 TF-IDF 特征的矩阵。

这产生了形状的稀疏矩阵(80,382)

什么是稀疏矩阵?

形状的 x 稀疏矩阵(80,382)

it 是一个包含极少非零元素的矩阵。当稀疏矩阵用二维数组表示时,我们可能会浪费大量内存空间来表示它。[ 1 ]

截断奇异值分解(又名 LSA)

这通过截断奇异值分解(SVD)来执行线性维数缩减。与 PCA 相反,这种估计器在计算奇异值分解之前不集中数据。这意味着它可以有效地处理稀疏矩阵。[ 3

在 2D 空间中可视化视频

现在我们已经减少了维度,我们可以清楚地看到它们有两个/三个集群,一个集群有最多的视频,而第二个集群在顶部遥遥领先,只有四个视频。

为了更加准确,让我们使用肘方法:在聚类分析中,这是一种用于确定数据集中聚类数量的启发式方法。方法包括绘制解释的变化作为聚类数的函数,并选择曲线的弯头作为要使用的聚类数。[ 2

聚类的最佳数量是 3。

k 均值绘图函数

应用 K-均值

定义集群

CLUSTER_1,绿色数据点是什么视频?

簇 1 的视频索引

群组 1 视频

CLUSTER_2,紫色数据点是什么视频?

簇 2 的视频索引

CLUSTER_3,红色数据点有哪些视频?

簇 3 的视频索引

Cluster_3 视频

通过查看这两个集群,我们可以看到集群 1 包含播客,而集群 3 包含食物类型视频和 F1 的混合。这两个是一种很好的分布,其余的视频在集群 2(蓝色点)这里,我认为这可能是两个集群本身。

TF-IDF、K-means 和截断 SVD 的组合在得出 2D 分布和进一步选择这些聚类方面做得非常好,并且降维技术在没有太多信息损失的情况下工作得非常好。

摘要

我上面获得的单词云和 2D 空间分布偏向于我的播放列表(我的播放列表相对较小,只有 80 个视频),它设法使用三个集群来分离视频,尽管它可能会更精确一些,但分析具有更多数据点的更大的播放列表会更有趣。

非常有趣的是,其他每个人都有自己的分布,所以集群的组织方式和单词 cloud 一样不同,所以我强烈建议您尝试一下,亲自做这件事并查看我的结果非常有趣。还可以进一步应用一些东西来更好地评估这种分析并获得更好的见解,例如,代替应用 K-means,您可以尝试使用 GMM(高斯混合模型),尝试实现一些主题建模等等。

行列式到底是什么?

原文:https://towardsdatascience.com/what-even-is-the-determinant-1180f036cec0?source=collection_archive---------25-----------------------

它不仅仅是一个任意的公式…

在最近的一篇博文中,我提出了一个相对简单的问题——为什么线性代数教得这么差?

[## 为什么线性代数教的这么差?

线性代数是机器学习的基石之一。这比你想象的更直观

towardsdatascience.com](/why-is-linear-algebra-taught-so-badly-5c215710ca2c)

它引起了比我预料的更热烈的反应。许多评论分享了我的沮丧——线性代数教科书和课程的特点似乎是完全缺乏直觉,几乎是故意的不透明。为了论证这一点,我设了一个问题:下面这个矩阵的行列式是什么?

由于下面的公式,我们一致认为答案是 2:

但是为什么是?就此而言,什么甚至是的决定因素?

首先,让我们回到线性转换的思维模式。回想一下之前的博客,任何矩阵都可以被认为是线性变换。特别是,对于一个 2x2 矩阵,该矩阵的列告诉我们基向量[1,0]和[0,1]发生了什么,分别称为*和 ĵ.*

单位向量,ĵ

例如,通过取矩阵 a 的列[[2,0],[2,2]],我们可以看到ĵ 发生了什么,从中我们可以看到,它所表示的线性变换是一个水平向右的剪切,随后是因子 2 的缩放。

记住,在线性变换过程中,单位向量的变化,必然定义了整个 2D 平面上每一点的变化。如果我们将上述变换应用于任何 2D 矢量v=[xy ],则该矢量将在由 x 批‘已变换的加上 y 批‘已变换的 ĵ 给出的新位置处结束。所以即使变换可以很好地用单位向量来定义,我们也应该考虑变换对整个空间的影响。****

但是有没有一种方法可以在这个“空间”层次上量化一个转变的效果呢?考虑以下转换:

  • 顺时针旋转
  • 缩放比例(在这种情况下为负)
  • 水平剪切

三种类型的线性变换——想想它们是如何影响整个 2D 平面的。

在这些变换下,平面的面积会发生什么变化?我们可以看到旋转不会影响区域,但是尺度和剪切呢?我们知道,2D 平面永远向前延伸,因而具有无限的面积。但我们可以从绿色和粉色网格线中清楚地看到,在这些情况下发生了一些挤压——无限空间正在“变小”(尽管,当然,它仍然无限大)。

这显然是一次思维旅行,所以让我们回到我们信赖的单位向量t1】和 ĵ 。考虑由单位向量形成的正方形的面积,其中顶部和底部由给出,边由 ĵ.给出****

很明显,这个正方形的面积是 1,因为每个单位向量的长度都是 1。现在让我们考虑矩阵[[2,0],[2,2]]所表示的变换。再一次,让我们画出ĵ 发生了什么,另外,那个方块发生了什么。

注意—平行四边形的顶部和底部仍由表示,左侧和右侧仍由ĵ 表示

我们可以看到正方形延伸成平行四边形(当然,正方形是平行四边形的一种特殊类型)。我们知道这个形状的面积是由高度乘以底边长度得出的,在本例中是 2*2 = 4。

值得注意的是,由于线性变换的“规则”(平行线保持平行,平行线之间的距离保持相等,原点保持在原点),我们可以对 2D 平面中的任何形状应用相同的变换,而不仅仅是由ĵ 形成的正方形,其面积也将增加 4 倍。

我们能概括这种想法吗?假设我们有一个由以下矩阵表示的线性变换:

那么,这个变换会以什么系数增加 2D 平面上一个图形的面积呢?我们可以通过计算变换后的ĵ.和变换后的平行四边形的面积来回答这个问题

为此,我们可以执行一些几何欺骗,如下所示:

于是我们看到矩阵[[a,b],[c,d]]所表示的线性变换,会使一个形状在 2D 平面上的面积增加 ad-bc 的倍数。如果这个公式看起来很熟悉,那是因为它应该:

事实上,一般来说,行列式就是这样的——空间被给定的线性变换扩展的因子。

现在,尽管这很好很简洁,但这还不是整个故事。如果你以前处理过行列式,你会知道它们可能是负值——当然没有任何公式 ad-bc 排除负值。但是这个空间膨胀因子为意味着什么呢?你不可能有一个面积小于零的形状。**

让我们看看能不能找出发生了什么。考虑以下成对的变换和变换ĵ,以及它们各自的行列式:**

我们保持转换后的(蓝色)不变。随着我们将变换后的 ĵ 移得更近,我们可以看到行列式变得更小,直到 ĵ 最终移过,行列式变成负数*。*****

事实上,这种ĵ 的“翻转”正是决定一个行列式是正还是负的原因。事实上,空间是否被“翻转”,是我们可以从行列式中立即得知的另一个方面。**

还有一个与上面相关的特例——行列式为零的情况。事实上,学习所有这些的主要动机通常是检查一个矩阵何时是“零行列式”的。但是这样一个矩阵在线性变换方面有什么作用,它的结果是什么?

考虑变换后的和变换后的 ĵ.形成的平行四边形我们已经展示了行列式是由这个形状的面积给出的,那么在什么情况下它会等于零呢?**

对于这个面积为零的形状,我们需要底或者高等于零。这种情况发生在一些小情况下(即当[a,c] = [0,0]或[b,d] = [0,0]时),但当变换后的和变换后的 ĵ 彼此平行时也会发生。这种情况可能发生在它们互相叠放在一起的时候,或者它们正好相对的时候。**

有一些先存线性代数知识的可以更精确;特别地,当变换后的和变换后的【ĵ】(即矩阵的列) 线性依赖 时,我们有一个零面积平行四边形(因此有一个零行列式矩阵)。****

如果我们从线性变换的角度考虑正在发生的事情,也就是变换“挤压”2D 平面的程度,这就有了重要的结果。如果变换后的和变换后的 ĵ 是线性相关的,那么根据定义,变换后的和变换后的 ĵ 的所有线性组合都被限制在一条线上。本质上,我们失去了*一个维度;2D 空间被压缩到一条 1D 线上。*****

对于给定的零行列式矩阵,它会自动告诉我们一些事情。通过考虑线性变换,看看你现在能否用简单的英语来论证为什么下面的东西适用于这样一个 2x2 矩阵, M :

  • M
  • M是线性相关向量(以及列)。**
  • M 相关的线性方程组或者无解,或者有无穷多个解(即没有唯一的解)。

如果对行列式及其代表的意义没有直观的了解,你可能会认为这些是理所当然的(就像我刚开始学习线性代数时一样)。

不言而喻,在整篇文章中,我们一直关注行列式背后的直觉。这里没有什么是特别严格的,而且我敢说,我还没有真正在数学意义上“证明”任何东西。我们通过纯粹的二维思维相对简单地保存了事物(尽管同样的直觉在更高维度中有效——平行四边形的面积变成了平行六面体的体积,等等)。

这是故意的。正如我之前的博客一样,这种更高层次、直觉驱动的思维受到了格兰特·桑德森的视频系列“线性代数的本质”的启发(我强烈推荐给任何对数学、数据科学或机器学习感兴趣的人)。用桑德森自己的话说:

“这里的目标不是试图教你所有的东西,而是你带着强烈的直觉离开……这些直觉让你未来的学习更加富有成效……”—格兰特·桑德森******

每个有抱负的数据科学家需要了解的编码知识

原文:https://towardsdatascience.com/what-every-aspiring-data-scientist-needs-to-know-about-coding-7b8ec256acaf?source=collection_archive---------19-----------------------

尤其是如果你没有计算机科学的背景

Unsplash 上拍摄的 ThisisEngineering RAEng

如果你是数据科学的新手,你可能会纠结于编码。也许你有时会遇到一个错误,让你觉得你可能永远无法解决它。也许你觉得解决出现的错误花费了你太多的时间。我来告诉你这没关系。而事实上,它其实是好的。让我告诉你为什么。

你们中的一些人可能知道,我在近两周前推出了我的在线课程掌握数据科学方法。该课程旨在引导学生完成他们的第一个项目。所以它非常实用,并且包含大量的编码。

虽然我的前几个学生已经通过了课程,他们一直在与我分享他们的经验。我所看到的是,对于学生来说,在编码时处理出现的问题是一个挑战。他们纠结的不是代码的构建,而是错误的解决和调试,因为他们陷入了从未经历过的问题。

我为我的学生提供日常支持,帮助他们摆脱困境,并确保他们不会失去动力,但我认为听到这一点将有助于任何正在迈出第一步的人:在编码时陷入困境,不知道该做什么是正常的!

你感到不知所措的原因是你以前从未经历过这种类型的问题。你的大脑需要一些时间来适应新的解决问题的模式。解决方案?不管你喜不喜欢,都是在做动手的工作,陷入困境并找到出路。

我的一个学生在评论中说:

“当我在这个领域找工作时,我关心的一件事是,当数据科学家陷入困境时,他们的期望是什么。我自己不切实际的期望就是不会卡。”

这让我意识到,许多数据科学初学者缺乏我认为理所当然的理解:编写代码时陷入困境是工作的一部分。对于大三大四的每个人…

不过,我理解有人担心这些小乡巴佬。我记得我在大学的头几年。在编码的时候,我被卡住了很多次。每次我陷入困境,我都不敢寻求帮助,因为我觉得只有我一个人在经历困难。我觉得我是个耻辱。我想我应该更擅长这个。我生自己的气,因为我没有更快地解决问题,浪费时间用头撞墙试图理解一个错误。当我环顾我的同学时,从外表上看,每个人都编写了完美的代码。但随着我对自己的技能越来越有信心,我意识到,出现错误/漏洞,有时一连几天都无法摆脱,这就是工作的现实。毕竟,有这么多这样的漫画是有原因的:

来自 CommitStrip 的超赞漫画

‍Or 迷因是这样的:

来源

当然,如果你得到一个错误,你花了三个小时试图理解什么是错的,然后你看到它是变量名的一个错别字,你可能会觉得你浪费了三个小时的宝贵学习时间。但这与事实相去甚远。因为这个痛苦的经历,下次你看到类似的错误,相信我,你要检查的第一件事就是变量名。如果你愿意,可以称之为创伤,它会让你更快地解决错误。

当你有了足够多这样的经历,你将会成为你现在羡慕的人之一,他可以看一眼你已经努力了几天的代码,并立即告诉你哪里出了问题。

所以,如果你不断遇到错误,并且花了你大量的精力和时间去修复它们,不要气馁。对自己好一点,明白这都是进步的一部分。如果你从好的一面来看,由于这些经历,你开始享受乐趣,并开始嘲笑编码迷因。

来自Reddit/r/程序员幽默

🐼想更多地了解熊猫吗? 获取我的免费熊猫小抄。

每个数据科学家需要了解的集群知识

原文:https://towardsdatascience.com/what-every-data-scientist-needs-to-know-about-clustering-cf8f860a1883?source=collection_archive---------72-----------------------

图片来自 PixabayDevanath

机器学习导论

机器学习是一个经常被谈论的术语,然而人们往往对它的不同领域缺乏了解。

机器学习的第一个区别是所谓的监督学习和非监督学习。

当你在机器学习和数据科学的世界中铺平道路时,对这种区别和其中任何一个的目的/应用有一个基本的理解将会非常有帮助。

监督和非监督学习

监督学习当然是更著名的类别。

监督学习由分类和回归组成,这实际上意味着,你确定一个响应变量和解释变量,并使用它们来建模一种关系——无论是为了解释还是预测。(你可以在这里了解更多关于这个区别的)。

分类有效地代表了确定一个分类变量和其他变量的某种组合之间的关系。这可能是预测电子邮件属于哪个收件箱,预测某人是否会拖欠贷款,或者预测销售线索是否会转化。

回归还试图对因变量和自变量之间的关系进行建模,然而在这种情况下,我们试图对连续变量进行建模。回归可能是你听到最多的。这可能是模拟房价、收入数字、树龄、汽车最高速度、客户产品使用等。

无监督学习

既然我们已经解决了所有这些问题,让我们来谈谈无监督学习。

简而言之,我们不是预先决定我们希望我们的算法找到什么,而是提前给算法提供很少甚至没有指导。

换句话说,我们不是明确地告诉我们的算法我们想要预测或解释什么,而是踢回去,把接力棒交给算法来识别给定特征中的突出模式。

让我们从一个例子开始,看看如何在住房数据上使用监督和非监督学习方法。

一种受监督的方法可能是利用这些数据训练一个模型来预测房价。

无监督的方法可以是识别价格的自然分组或一些变量的组合,例如价格和房间数量。

我刚才解释的实际上是我们在这里学习的技术。让我们开始吧。

要了解更多关于这些机器学习领域之间区别的信息,你可以访问这里的

到底什么是聚类或聚类分析?

为了更好地理解集群,首先要理解它的基本目的。

目的

如果你是一名数据科学家,任何分析的先决条件之一就是要在某种程度上理解你的数据。这种理解的一个方面来自于数据集记录之间相似性的概念。

为了进一步定义这个想法,我们想要了解任何和所有记录之间的相对相似性或不相似性。

实现这一点的一种机制是通过识别记录的自然分组。这些分组可以被定义为彼此最相似而与其他分组的记录最不相似的记录。

如果不明显,这就是集群发挥作用的地方。这是创建所述分组的算法方法。

为了进一步阐明这一点,聚类分析可以帮助您回答一个基本问题:任意两个观察值有多相似或不相似?

如何衡量?

我们试图评估两个记录的相似性,并使用这些记录之间的距离来帮助定义。

相异度度量或距离被定义为 1-相似度

距离越大,差异越大,反之亦然。

让我们用下面的假设数据集来说明。

chess <- data.frame(
                 y = c(2, 4),
                 x = c(5, 3))
row.names(chess) <- c('knight', 'king')

我创建了一个小数据集,详细描述了棋盘的 x 轴和 y 轴。我不知道国际象棋棋盘的每个轴是否真的有名字…我知道其中一个包含字母,但为了简单起见,跟我来。

我们将使用dist函数,默认为两点之间的欧几里德距离。如你所见,它将骑士和国王之间的距离定义为 3.46

dist_chess <- dist(chess)

您也可以手动计算两个片段之间的欧几里德距离。也等于 2.82。

knight <- chess[1,]
king <- chess[2,]piece_distance <- sqrt((knight$y - king$y)^2 + (knight$x - king$x)^2)

让我们在一个阴谋上放弃我们的部分!

ggplot(chess, aes(x = x, y = y)) + 
  geom_point() +
  lims(x = c(0,8), y = c(0, 8))

聚类的应用

在所有这些解释之后,集群到底是为了什么?你为什么要花时间去学习它?

任何时候,当你想评估相似性时,聚类分析都是非常有用的。

你可能在一家软件公司工作,在那里你想了解不同的用户是如何相似或不相似的,有可能改变产品、信息等。

这些应用也远远超出了商业范畴。从植物和动物物种的分析,用户行为,天气,以及任何我们可以测量模式的东西..

什么时候用最好?

可能有许多潜在的合适时间来使用聚类分析。其中最突出的是在探索性数据分析期间。如果你不熟悉探索性数据分析,你可以在这里了解更多关于探索性数据分析的基础知识

无需深入探究探索性数据分析(EDA)的原理,EDA 的主要目的是让自己熟悉正在处理的数据集。

在这个过程中,集群非常有用。

聚类准备

让我们进入一些在进行分析之前需要的预处理步骤。

不要忘记缩放!

让我们跳回象棋的例子。值每增加 1 个单位,代表给定方向上的一个单元。这是一个很好的例子,说明了欧几里德距离是完全有意义的。

但是,如果您使用不同规模的指标进行聚类,比如年收入和员工数量,或者脚的大小和垂直跳跃,该怎么办呢?

当我们使用的价值观不能相互比较时,挑战就来了,正如我前面的例子所示。

想想下面两个场景,

场景 1:

你有两家员工人数相同的公司,但其中一家的收入比另一家多 1000 美元。

现在让我们交换不同的变量,它们有相同的收入,但其中一个比另一个多 1000 名员工。

第一种情况是两个公司非常相似,只有 1000 美元的收入差异很小,可能意味着两个公司的价值非常相似。具有讽刺意味的是,第二个例子凸显了两家截然不同的公司。它可能在行业、细分市场或其他方面有很大差异。

虽然这两个场景中的差异是 1000,但这种差异对于两个不同场景中的不同事物来说是显著的。

变化组值的问题是它们有不同的平均值和不同的变化。这正是我们刚刚讨论过的情况。

因此,在执行聚类分析时,我们调整我们的指标以具有相同的平均值和可变性是非常重要的。

我们将使用一种称为标准化的方法,有效地将我们的指标的平均值变为 0,标准差变为 1。

从技术上讲,我们可以手动缩放给定的变量,如下所示。

scaled_var = (var - mean(var))/sd(var)

虽然熟悉计算的逻辑很好,但是只使用 r 中的 scale 函数也很方便。

缩放和远离住房数据

让我们对住房数据进行同样的练习。

我从 kaggle 下载了西雅图房价数据。你可以在这里找到。

让我们快速可视化数据集的前两个数据点。

以下是我们正在处理的数据点:

housing <- housing[1:2, c('price', 'sqft_lot')]
ggplot(housing, aes(x = sqft_lot, y = price))+
  geom_point()

housing <- housing[1:2, c('price', 'sqft_lot')]
ggplot(housing, aes(x = sqft_lot, y = price))+
  geom_point()housing_dist <- dist(housing)housing_scaled <- scale(housing)
housing_scaled_dist <- dist(housing_scaled)

分类数据的相似性得分

到目前为止,我们一直在讨论两点之间的欧几里德距离,并用它来代表不相似性。

在分类数据的情况下我们该怎么做?

幸运的是;类似于范畴的欧几里得距离,我们使用一种叫做 Jacaard 指数的东西。

让我解释一下 Jacaard 指数。

假设您有一个包含案例 a 和 b 的分类字段,Jacaard 索引为我们提供了两个案例 a 和 b 都出现的情况相对于其中一个出现的次数的比率。

你也可以把它想成 a & b 的交集与 a & b 的并集之比。

使用我们之前使用的相同的dist函数,但是在这种情况下,只需将method改为'binary',您就可以测量距离了。

让我们首先创建一个数据集进行实验。下面你可以看到我为每家公司提出了两个分类变量。

companies <- data.frame(
  industry = c('retail', 'retail', 'tech', 'finance', 'finance', 'retail'),
  segment = c('smb', 'smb', 'mid market', 'enterprise', 'mid market', 'enterprise'))
row.names(companies) <- c('a', 'b', 'c', 'd', 'e', 'f')
companies$industry <- as.factor(companies$industry)
companies$segment <- as.factor(companies$segment)

确保将您的类别声明为因子!

现在我们将把我们的范畴转化为虚拟变量,你可能也听说过术语一热编码。其思想是将分类的每个值转换成一个列,并用 1 或 0 填充行值。我们将在 r 中使用dummies包中的dummy.data.frame

companies_dummy <- dummy.data.frame(companies)

如上所述,您会注意到,对于行业的每个价值,我们会看到一个与每个价值相关联的列:金融、零售和技术。我们看到每一列都是一样的。

现在让我们运行我们的dist函数。

dist <- dist(companies_dummy, method = 'binary')

在这里,每家公司都在相互比较。A & B 是 0,因为它们之间没有距离。如果你记得他们都是中小企业零售。1 是如果他们没有相似性。你会注意到,对于 C & E,它们只有一个相似之处,因此距离为 0.67。

结论

我希望您喜欢这种分类。

我们已经讨论了机器学习的两个主要领域。

聚类的定义、目的、应用和度量。

我们已经学习了预处理以及如何计算两点之间的距离,无论是数值还是分类。

随着您在分析中继续学习和实施不同的聚类方法,这些课程都将被证明是非常基础的。

祝数据科学快乐!

每个数据科学家需要从艺术中学到什么

原文:https://towardsdatascience.com/what-every-data-scientist-needs-to-learn-from-art-402b8e8eb07b?source=collection_archive---------21-----------------------

因为你也必须和非书呆子打交道

艺术家可以教你很多东西。斯蒂夫·约翰森Unsplash 上拍照

W W 帽子是一个数据科学家最大的痛苦?根据 Quora 上的这篇帖子,最痛苦的部分是数据:因为它不完整或不可靠。

当你向下滚动时,另一个反应是很难说服企业领导人接受数据科学家的工作。

YCombinator 的黑客新闻上的回应指向了类似的方向。对于一位受访者来说,最大的痛苦是与不尊重统计和数据科学的人打交道。另一方面,当人们要求他们对复杂的问题给出简单的非黑即白的答案时,这很糟糕。

艺术可以解决这一切。

艺术就像止痛药。不相信我?请继续阅读。

如果你已经相信我了,你会在这篇文章的结尾找到一切。

1.不完整数据

所以你有缺失或不完整的数据。你现在在想什么?

你可能在考虑创建内插或外插来使这一切工作。你担心你美丽的结论会被拒绝,因为对于任何非数据科学家来说,它是建立在推测之上的。

别担心了。现在。人类并不像你认为的那样倾向于逻辑思维。至少,那些不是数据科学家的人类。

让您的数据变得美丽

你知道内插法和外推法不是缺陷,当然也不仅仅是推测。但是其他人不知道。所以你需要用其他方式说服他们。

让你的数据变得漂亮。更重要的是,让你的结果变美!

大多数数据科学家来自计算机科学或相关背景。他们学会了如何与机器对话,但没有学会如何说服人类。好消息是有很多工具可以提供帮助。

你会惊讶地发现,如果你在正确的地方添加一些颜色和形状,会有更多的人——甚至是非常理性的人——欣赏你的成果。

[## 2019 年你不能错过的 9 个数据可视化工具

在数据科学领域,数据可视化无疑是当今的热门词汇。

towardsdatascience.com](/9-data-visualization-tools-that-you-cannot-miss-in-2019-3ff23222a927)

2.不可靠的数据

许多数据科学家将不一致和不可靠的数据视为痛苦,因为这非常耗时。一旦对工作的第一波热情过去,你会觉得自己更像一个看门人,而不像一个科学家。

你失望吗?想想你以前所有的工作角色,以及它们听起来有多华而不实。然后想想那些隐藏在华而不实的头衔背后的肮脏工作。

在艺术领域,浮华的外表和冷酷的内心之间的差异无处不在。

想想你最喜欢的五位艺术家——无论是音乐、绘画、文学还是其他领域。我敢打赌,其中相当多的人面临着比你经历过的任何事情都要糟糕的逆境。

当然,这些艺术家中的大多数都已经成名了。他们在生活中有一些可怕的经历,但现在他们以艺术闻名,他们过着奢侈的生活。而你还在清理数据。

你不是艺术家,但你可以向艺术家学习。弗兰·霍根在 Unsplash 上的照片

现在想一想你可能认识的艺术家,他们可能还没有成名。事实是,对于每一个成名的艺术家来说,地下有 1000 个永远不会成功的艺术家。

艺术家们创造出无人能见的神奇事物。没人会听的。他的作品,无论多么辉煌,都将在时间的长河中褪色。他们的名字将成为饥饿艺术家长长的墓地名单上的又一个条目。

现在,看看你自己。你作为数据管理员的工作并不鼓舞人心。你的客户甚至不感激你的肮脏行为。但最终,这可能会帮助你建立模型,为你的客户带来洞察力。如果他们没有,至少你会得到报酬。

不像数以百万计的艺术家每天创作鼓舞人心的作品,却永远不会激励任何人。因为没人会看到。

下次你抱怨数据清理的时候,想想这一点。

[## 数据科学家:21 世纪最肮脏的工作

40%是吸尘器,40%是清洁工,20%是算命师。

towardsdatascience.com](/data-scientist-the-dirtiest-job-of-the-21st-century-7f0c8215e845)

3.为复杂的问题提供简单的答案

这是几乎每个数据科学家在职业生涯中都会遇到的痛苦。客户会给你一堆复杂的数据,并要求你用简单的黑白方式给出答案。

作为一名科学家,过于简单化是违背你的精神的。那么你将如何给出一个简单的答案呢?

再想想吧。客户真的想要一个简单的答案吗?不。客户想要一个他能理解的答案。

所以你的工作不是过度简化你的结果。你的工作是让他们可以理解。这就是你问艺术家的地方。

你可以在没有先前知识的情况下看一幅画或听一首歌,仍然建立联系。你不能用科学做到这一点。

科学是漫长而艰苦的研究,直到你得出结论。艺术是有趣的实验,直到你找到能引起你和他人共鸣的东西。

艺术给你一种理解的感觉,即使你还没有理解。

为了让你的客户高兴,用一些艺术技巧处理你的结果。你不需要降低复杂性。你需要做的就是把它转化成能引起客户共鸣的东西。

您的客户需要能够从您的结果中学习,而不是自己成为数据科学家。艺术是实现这一目标的工具——想想视觉化,还有更广泛的创造性方面。

这将涉及一些额外的工作。但是你的客户会爱上你的。

创意才是王道。照片由艾伦·斯盖尔斯Unsplash 上拍摄

4.与非数据科学家打交道

你是数据科学家。您最喜欢的职业是独自拿着笔记本电脑坐在某个地方,根据数据集构建一个漂亮的模型。宇宙很简单:你。你的笔记本电脑。你的模特。

但你是人,你需要与人交往。那么你和谁出去?当然,还有其他数据科学家。

你们有很多共同的兴趣,并且你们不同的技能可以相互促进。你们互相学习。你们从彼此中成长。

但是数据科学家并不需要彼此。

你需要商业领袖。你需要为你的工作付钱的人。

问题是,他们不知道他们付钱给你是为了什么。他们有一个问题,例如,获得更多的客户。他们知道解决方案就在现有客户数据堆中的某个地方。但是他们不知道怎么做。你需要提取它。

但你是科学家。你知道研究很难,需要很长时间。你知道一旦你解决了一个问题,你就会面临另一个问题。你知道你做的事情很复杂。非常复杂。

这就是你讨厌截止日期的原因。你讨厌设定目标。你喜欢四处游荡,自由地寻找灵光乍现的时刻。

艺术家也喜欢四处漫游。他们喜欢随心所欲的自由。他们讨厌最后期限。但是他们比你有一个优势:

创造力。

当科学家面对商业规则时,他们会变得麻木。想想最后期限或公司目标。如果目标是本周五交报告,他们将在六个月内完成。数据科学家不想处理这种东西。

当艺术家面对规则时,他们会变得有创造力。他们可能不会违反规则,但他们会想办法绕过它。如果他们需要在周五之前交报告,他们甚至可以提前一天交。但是他们会确保他们选择了一种别致的字体,并把它印在亮粉色的纸上。不能一般!

结合双方的优点。你的存在依赖于让你的客户开心。所以你必须遵守他们的规则。不要打破最后期限。不要错过企业目标。但是稍微改变一下规则——不要太多,只要足够——加入你的个人情趣。毕竟这是你的工作。

[## 11 月版:艺术与数据科学

更多关于艺术和数据科学的关系。8 篇必读文章

towardsdatascience.com](/november-edition-art-data-science-4789c30da4ea)

5.说服商业领袖

你是科学家,不是推销员。你可以在工作中加入你的个人趣味——不管是圈内人的笑话、有趣的迷因还是任何能激发你灵感的东西。但是你不能也不想像商人一样思考。

你担心这会影响你的工作。你是科学家,你的正直源于像科学家一样思考。商业逻辑只会让你头脑混乱。

再想想。

我不是要求你在清理或分析数据时像一个商人一样思考。如果需要业务逻辑,你的客户会自己完成这项工作。

但问题是你如何展示你的作品。一个商人雇佣了你,所以你的结果的最终展示应该根据他们的需求来定制。

在得到任务和做最后陈述之间发生了什么是你的事情。但你的目标必须始终是为你的客户增加价值。

甚至在准备你的最终陈述时,你也不需要用商业逻辑来思考。但是你需要从对客户有意义的角度考虑问题。

不要试图给商务人士留下深刻印象。给商业门面背后的人留下深刻印象。

吸引他们的情感皮层。

不要想:“当他们看到这个结果时,他们会怎么想?”

而是想:“当他们看到这个结果时,他们会有什么感觉?”

使用字体、颜色、形状和视觉效果。让你的作品尽可能的精美。你的客户会因此而喜欢你的。

给你的工作增添一些情趣。照片由佛罗里达本地民间艺术家朗达克在 Unsplash 上拍摄

将数据科学与艺术相结合。提高你的产出。

你是科学家,而科学是你最擅长的。

但有时拓宽你的视野到其他学科是值得的。这会让你对工作有新的看法。了解艺术有助于你:

  • 要知道,尽管很辛苦,但你的工作比其他许多工作都要好。
  • 让你的数据变漂亮。那比打扫卫生有趣多了。
  • 增加价值。确保你的客户能从你的结果中获益。
  • 要有创意。变通规则,但不要违反规则。
  • 润色你的成果。让他们与你的客户产生共鸣。

你不是艺术家,但你可以向他们学习。并获得两个学科的优势。

每个数据科学家都需要向商业领袖学习什么

原文:https://towardsdatascience.com/what-every-data-scientist-needs-to-learn-from-business-leaders-47dcf3204076?source=collection_archive---------20-----------------------

因为软技能很重要。

商业技能不会损害你的科学诚信。女同胞Unsplash 上拍照

D D ata 科学家习惯于向商业领袖传授他们的手艺。商业领袖习惯于从许多不同的领域学习大量的东西。

因此,难怪互联网上充斥着面向商业领袖的数据科学课程——来自 edXCoursera 以及许多其他平台。

但是反过来呢?不知何故,数据科学家被视为魔法大师,他们可以与数据交谈,并从中提取商业信息。只有一个问题:大多数数据科学家对商业一无所知。

目前,数据科学家的就业市场相当不错。但这并不意味着你不应该不断提高自己的技能。事不宜迟,以下是每位数据科学家都应该具备的商业领袖的七项关键能力。

1.效率

你是科学家。如果你和我一样,你喜欢在数据集中漫游,没有一个集中的问题,让数据和你说话。

但问题是:你可能在浪费时间。

对自己诚实。你多久决定探索一次,却一无所获?你每天花多少时间调查对你的客户没用的事情?

如果你和我一样,你的很多时间并不会带来实际的结果。事实上,我经常把大部分时间花在探索事物和学习新事物上。当我不小心的时候,我花了太多的时间却没有任何产出。

商业领袖总是想着变得更有效率。他们的首要任务是试图理解如何以最小的努力获得最大的产出。

当然,你需要用新的眼光和开放的心态来看待你的数据。但不要让这导致产量减少。

我喜欢每天安排一个时间,在那里我可以自由地在数据中漫游。剩下的一天致力于项目的目标。通过这种方式,我对目标进行了优先排序,同时对我可能会错过的新发现保持开放。

想得伟大,做得伟大。Jo Szczepanska 在 Unsplash 上拍摄的照片

2.项目管理

想想你最近合作过的五位科学家。他们中有多少人在项目管理方面非常出色?他们中有多少人不擅长这个?

当然有科学家在组织他们的项目、计划下一步和控制他们的成功方面做得很好。但是也有很大一部分数据科学家可以在上面做一些课程。

因为你一直在做项目,这是一项值得投资的技能。即使你认为你已经很擅长了。

好消息是,你不需要获得 MBA 学位,也不需要狼吞虎咽地学习一大堆在线课程。通过观察那些以项目管理为生的人——商业领袖,你可以学到很多关于项目管理的知识。

无论如何,你可能每天都会见到商业领袖。为什么不向最优秀的学习呢?

3.人际关系技巧

我是那种在笔记本电脑前最开心的人。如果我不得不与人交谈,那会让我感到压力。这对科学家来说并不罕见。

但是你可能和我一样,每天都需要和人打交道。如果你搞砸了一次谈话,那可能会毁掉对未来的展望。所以你想把它做好。

当你在的时候,你是如何让人感觉良好的?你如何让他们开心?你如何让他们做你想让他们做的事?

商业领袖是——很好的——领袖。让人们做事是他们的工作职责。

观察商业领袖如何对待他们周围的人。他们如何对待处于较低、较高或同一层级的人?他们对你怎么样?他们如何满足期望?

蔻驰。教书。成长。图片由 NESA 制作Unsplash

4.辅导

伟大的领导者是伟大的教练。他们教他们的团队去哪里和做什么。他们增强团队的技能,让团队产生更大的影响。

他们这样做是因为他们知道一件事:提升别人,你自己也会被提升。

在数据科学中,这有点难。但是如果你曾经指导过实习生,或者帮助过学生,你就会知道你在这个过程中学到了多少。你不仅提高了别人的技能,也提高了你自己的技能。

你不仅扩大了自己的技能范围,还让别人对你的工作有了新的看法。你也在提高你的人际交往能力。

通过教导人们,你可以确保你的知识在你有生之年都不会过时。

5.决策

如果你认为你没有太多的决定要做,请三思。从业务人员的角度来看,数据科学的目的就是帮助做出决策。

数据有助于你决定是在 A 国还是 B 国投资更有利可图,还是生产更多的 X 产品或 y 产品。实际上,你是告诉企业领导人如何决定的人。

也就是说,如果你了解客户的技能,这将帮助你为他们带来更多的价值。如果你受雇帮助决策,但这正是你所不擅长的——那么你充其量只是一个平庸的数据科学家。因此,学习更多关于决策的知识是你最大的责任。

随着时间的推移,展示东西变得不那么可怕了。活动发起人Unsplash 上的照片

6.商业演示

同样,这是大多数商业领袖的常规活动。虽然你没有生意可以展示,但你有另外两件你可以也应该展示的东西:你的工作成果和你自己。

以一种令人惊叹的方式展示你的工作成果将确保你的客户爱你。展现自己将为新的机会打开大门。

你喜欢商业领袖展示的幻灯片吗?在你的下一个主题演讲中使用他们的技巧。

你老板展示他们愿景的方式真的激励了你?下次你展示结果时,试着传达一个真正鼓舞人心的信息。

如果你更喜欢规避风险,不要害怕:尝试新方法并不意味着你会有任何损失!如果你对自己诚实,你目前的方法可能很糟糕,所以几乎任何改变都是有益的。

[## 每个数据科学家需要从艺术中学到什么

因为你也必须和非书呆子打交道

towardsdatascience.com](/what-every-data-scientist-needs-to-learn-from-art-402b8e8eb07b)

7.谈判

如果你和我一样,你想协商更高的薪水,但你真的不知道怎么做。你已经阅读了所有的建议,但仍然不放心去敲你经理的门。

同样,这也是商业领袖一直在做的事情。他们经常在利益冲突中航行——无论是领导和员工之间,短期利润和长期质量之间,等等。

一个好的领导者通过让其他人相信这对他们来说也是最好的解决方案来确保企业的最佳结果。同样的,你可以让你周围的人相信这也是对他们最好的,从而确保对自己最好的结果。

在你认识的商业领袖谈判时观察他们可能会让你得到应得的加薪。

[## (Top)每个数据科学家都应该阅读的 5 本业务相关书籍

这份改变思维方式的书籍精选清单将帮助你成为一名更好的数据科学家

towardsdatascience.com](/top-5-business-related-books-every-data-scientist-should-read-6e252a3f2713)

从商业中学习来增强你的科学

你是个伟大的科学家。但是你可以做得更多。

观察你圈子里的商业领袖会让你的职业生涯更上一层楼。试试看!

每个数据团队在首次公开募股前需要知道的事情

原文:https://towardsdatascience.com/what-every-data-team-needs-to-know-before-you-ipo-5cb377905bb5?source=collection_archive---------45-----------------------

恭喜——你的创业公司要上市了!但是数据呢?

图片由 Shutterstock 上的Evgeniya Porechenskaya 提供。

几十年来,当一家公司准备上市时,财务和法律团队首当其冲。随着上市前公司越来越依赖数据来推动创新和增强竞争优势,数据团队也必须帮助规划公开募股的路线。以下是方法。

许多人最近都在想“我的数据团队可以做些什么来为我们公司的 IPO 做准备?”

虽然有大量的文献支持财务团队踏上上市之旅,但很少有人帮助面临同样挑战的数据团队——这是一个问题。

随着 PalantirSnowflakeAsana 等公司在过去几周上市,以及更多公司将上市( AirbnbDoorDash ),我们正在关注你!),我汇集了我的关系网,列出了数据组织为其公司成功上市做准备所需的 5 个基本步骤。

了解您的数据存储在哪里以及谁在访问它

据优步数据团队的前成员称,任何数据组织在 IPO 之前的第一项工作都是审计你正在收集和存储的数据,以及谁有权访问这些数据(他们称之为“数据爆炸半径”)。

成长中的企业(也就是你的初创企业)将广泛依赖于驻留在传统数据仓库系统中的企业级事务数据;同时,您的数据团队将希望投资构建事件流和其他数据平台功能,包括您公司的运营战略。这两个需求都强调需要一个健壮的自动化数据目录来捕获企业数据的含义、位置、使用模式和所有者。

尽早并经常与您的隐私、安全和法律团队合作

一旦确定了谁有权访问哪些数据,您就需要与您的隐私、安全和法律部门合作,以确定如何继续管理数据访问。这不仅对你即将到来的首次公开募股很重要,对任何经常处理 PII 或在数据使用方面有严格指导的地理区域运营的公司也很重要(考虑:GDPR、CCPA 等)。).

您的法律和隐私团队可能会负责定义这些规则,但您需要构建解决方案来确保数据用户遵守这些规则。你们需要一起回答以下问题:

  • 我们应该将数据存储多长时间?
  • 谁应该有权访问这些数据?
  • 我需要如何改变我当前的数据模型来遵守这些指导方针?

提示:在适用的情况下,存档而不是删除过时但具有法律意义的数据,以降低成本冷藏

借助护栏,实现数据民主化

在您为 IPO 做准备时,您的团队将需要他们能够获得的所有帮助,以满足贵公司的日常数据需求。是时候投资一些自助工具了。

数据民主化最重要的步骤之一是投资于数据探索和元数据管理,不仅针对结构化数据,也针对非结构化数据。大多数处于指数增长的早期创业公司都有大量关于数据的内部知识,因此在一个单一来源的中心捕获和管理它(我们重复一遍:数据目录!可探索的是你成功的关键。

优先考虑财政问责制

上市公司必须按照规定的数据要求和严格的 SEC 会计和披露准则,按季度和年度向 SEC 提交财务报表。

你的公司可能会在 IPO 流程开始前几年就开始大量招聘会计师和财务分析师,以期待这一重大日子的到来;尽早与他们的组织合作,并获得他们的认可;沿着这条路合作会更容易。

投资于数据的可观察性;提供数据可靠性

端到端数据可观察性解决方案可以突出字段级血统,通过 Looker 和 Tableau 分析仪表板提供对下游依赖项的可观察性。图片由蒙特卡洛提供。

无论你制定了什么样的数据准则,或者使用了什么样的分析解决方案(有人看起来像吗?),只有当您的数据资产值得信赖和可靠时,您的数据分析才会有价值。

PriceWaterhouseCooper 称,公司“必须准备好满足新的外部利益相关者的需求和要求,包括对透明度和数据可靠性的更高期望,对预算和预测的更严格审查,以及加速申报的要求。”

数据团队可以通过提供从接收到分析的端到端数据可观察性的解决方案来确保数据的可靠性。这种方法可以跟踪您的数据存储在哪里,谁在访问这些数据,并对数据中的异常情况进行监控和警告。数据可靠性解决方案提供了以下优势,从而实现了两全其美,包括:

  • 高数据质量,确保符合数据治理标准
  • 高度的数据完整性,带来更丰富、更准确的见解,推动您的业务发展
  • 节省的资金和时间用于实际产生收入或推动业务创新的数据项目
  • SEC 和其他管理机构对您公司的信任,更不用说您的客户了

以下是为公司上市做准备的数据团队的一些额外资源:

你的公司正在考虑 IPO 吗?联系 巴尔摩西 和其余的 蒙特卡洛 团队,帮助您的数据组织准备一次成功的公开募股。

关于管理数据科学和人工智能项目,每个项目经理都应该知道什么

原文:https://towardsdatascience.com/what-every-project-manager-should-know-about-managing-data-science-and-ai-projects-d13f3f8f62a?source=collection_archive---------37-----------------------

剧透:如果你是从需求开始,请三思

布鲁斯·马斯在 Unsplash 上的照片

如果你是一个项目经理,被分配到一个数据科学或人工智能项目可能是一种冲突的经历。

到 2021 年,仅人工智能一项就将创造高达 2.9 万亿美元的商业价值(是的,有一个“t”),尽管冠状病毒的整体阻尼器,仍然处于推动复苏的技术前沿。但与此同时,项目交付成功的几率对你不利。对该领域项目失败的估计开始于 80% 并走下坡路,2019 年 7 月 VentureBeat AI 的一份报告估计,87%的数据科学项目从未投入生产。

这并不是因为缺乏尝试。关于管理数据科学和人工智能项目的话题,我们有著名的大学课程发表的研究专业工具成熟的专业认证。但是,尽管做出了这些努力,我们似乎并没有离成功更近一步,除了了解到部署更多的人员和资金可能——令人惊讶的是——不是答案。

这是因为资源就像计算。在一个问题上投入更多的资源并不能得到正确的答案,只会更快地得到错误的答案。

在一个问题上投入更多的资源并不能得到正确的答案,只会更快地得到错误的答案。

从现代计算的早期开始,我们就一直在分析数据来支持决策。我们已经实施系统来帮助这些决定几乎同样长的时间。那么,为什么是把他们聚集在一起,如此。可恶。努力?

项目经理拥有非常好的技能。最根本的是,他们通过处理风险、问题、请求和提议来管理不确定性——通常在一个项目中处理几十个(甚至几百个)。此外,他们具有直觉和利益相关者管理技能,这些技能随着经验的增加而增加,使他们能够适应项目执行过程,并使他们成为从需求到解决方案的大师。

具有讽刺意味的是,正是这种从需求到解决方案的“端到端”规划的精通导致了许多数据科学和人工智能项目的失败。因为除非你已经考虑了数据的不确定性,否则从需求开始就是一个陷阱。

除非你已经考虑了数据的不确定性,否则从需求开始就是一个陷阱。

数据科学和人工智能项目的独特风险

数据科学项目的独特风险是数据的不确定性。这是一个问题:

“数据中是否有足够的信息来开发足够有用的模型?”

如果不回答这个问题,那么开发和扩展一个不能交付商业价值的解决方案将会面临真正的危险,因为模型性能还没有达到值得使用的阈值。如果这听起来很抽象,例子可能包括:

  • 预测性维护:在制造环境中,事故和偏差通常会引发稳健的缓解策略,确保故障模式很少重复,因此很难通过传统的监督学习方法进行预测。
  • 情感分析:根据模型开发的方式和所用数据的性质,性能会有很大的不同。如果一个正负情绪分析工具只有 60%的准确率,考虑到一个随机的猜测可以让你达到 50%,它可能几乎没有用处。

在每种情况下,由于手头数据的限制,项目最终都是不可行的。当一个项目的可行性还没有确定的时候,围绕架构、自动化管道和运营的对话就毫无意义。如果一个项目注定会因为数据而失败,那么让一个数据科学家工作两周来发现这个问题,不是比六个月后由十个人组成的团队来发现更好吗?

换一种方式表达,一个数据科学或人工智能项目只有在你有高预测信号或数据中有用信息的情况下才有价值。如果不存在,无论用例的业务价值和可用数据的质量如何,项目都是失败的。

那么我们应该如何构建数据科学项目呢?

问题的根源其实是茎

混乱是其核心,这种纠结来自于对 STEM(科学、技术、工程和数学)学科的捷径思考。这个首字母缩写很容易脱口而出,以至于人们很容易把 STEM 专业人士视为一个同质群体。但他们绝不是这样。

来源:埃里克·德雷克斯勒的《激进的富足》,来自法纳姆街博客

参考埃里克·德雷克斯勒对科学和工程的解释,不仅两者“不太一样”,而且通过信息流的镜头来看,它们是完全相反的。科学从现实出发,收集数据,然后——通过探究的视角来看待问题——以一个新的有用模型结束。工程始于相反的终点。它从一个模型开始,通过规范增加细节,然后——通过设计的透镜看问题——以一个新的有用的现实结束。

这是相关的,因为数据科学和人工智能项目正是在这两个阶段得到有效管理,大致对应于科学工程的镜头:

  • “科学”是数据科学项目的初始部分的特征,其中可行性是有疑问的。从一个广泛的问题范围或假设出发,这一阶段的主要目标是解决数据不确定性问题,并在项目扩大规模并“投入生产”之前确定项目是否可行。在这里,空间需要迭代和实验。这是一个明确的努力和不确定的结果的世界,为了赢得长期的比赛,管理层必须允许快速连续地尝试和失败。在这一点上——作为一名 IT 专业人员,我这样说——需求和它的大部分是无关紧要的。事实上,项目管理意义上的需求是这个阶段的输出,而不是它的起点。**
  • 当需求变得清晰时,工作就转变为“工程”。这是项目经理熟悉的领域:一个定义了结果、人员、过程和技术的世界。在这里,解决方案架构选择的广阔领域侵入您的世界。性能、安全性、自动化和可扩展性变得至关重要。严格的规范和时间表的管理是没有商量余地的,范围蔓延是一个需要被压制的敌人。

数据科学的两个“兄弟姐妹”——不同但友好。眼睛为乌木Unsplash 上拍照

数据科学项目失败的一个主要原因是科学和工程的混搭,在项目被认为可行和有价值之前,就讨论了长期的架构和操作考虑。这种功能障碍也延伸到团队,其中“成熟”数据科学团队的想法等同于使其“更加工程化”,反之亦然。

两者都是需要的,但是每一个都与数据科学项目的不同部分相关。每一种都需要截然不同的管理模式和技能组合才能茁壮成长。当有可用的工程解决方案时,进行核心研究是不必要的,而更严格的工程控制不会使科学实验室更具创造性。

要让数据科学奇迹发生,科学和工程都必须做得正确。

从这个角度来看,有几个问题值得注意:

  • 支持一个单个决策的技能与开发支持多次决策的系统所需的技能大相径庭。这是数据科学角色混乱的根本原因。作为数据科学家探索建模方法的一部分,进行数据清理与作为数据工程师建立一个自动化系统来执行相同的任务有很大的不同。
  • 培训课程经常引起混淆,因为它们隐含地在迭代科学部分或 IT 密集型工程部分的背景下教学。
  • 许多数据科学家兼任数据工程师、模型操作和系统测试人员,但数据科学家的明确职责是处理数据不确定性和检查预测信号的强度。没有其他团队成员可以胜任这个角色。
  • 如果项目没有投入生产是可行性研究早期失败的结果,并防止企业在以后遭受昂贵的失败,那么它们绝对是好的。

综上所述,我们应该分两个阶段来思考数据科学或 AI 项目。第一个明确关注处理数据不确定性,方法是派遣一个专注于数据科学的小型团队利用手头的数据进行建模,以查看是否有足够的预测信号使用例可行。如果我们在这里失败了,我们失败得很好。

当且仅当数据不确定性已经得到处理,并且可扩展的 IT 解决方案现在是明确的议事日程时,项目管理的领导地位才开始发挥作用。这是团队成长的地方,全方位的 IT 能力变得至关重要。

数据科学和 AI 魔法就发生在这里。

或者至少假设我们对数据科学和人工智能的应用是负责任和道德的。但那是另一个故事了。而且很长。

上面显示的所有图像仅用于非商业说明目的。本文是以个人身份撰写的,不代表我所工作或隶属的组织的观点。

元流到底是什么?

原文:https://towardsdatascience.com/what-exactly-is-metaflow-c007e5b75b5?source=collection_archive---------24-----------------------

网飞用于数据科学的 Python 框架的高级视图

TL; 【T4 博士】

Metaflow 是网飞开发的用于数据科学的 Python 框架;于 2019 年 12 月作为开源项目发布。它解决了数据科学家在可伸缩性和版本控制方面面临的一些挑战。处理流水线被构建为图中的一系列步骤。Metaflow 使得从在本地机器上运行管道转移到在云资源上运行(目前仅 AWS)变得容易。每一步都可以在一个单独的节点上运行,具有唯一的依赖关系,元流将处理相互通信。下面,我将我认为的关键特征进行了分解。

我总是在寻找让生活变得更简单的方法,尤其是在从事数据驱动的项目时。 Metaflow 声称“它可以快速、轻松地构建和管理现实生活中的数据科学项目”,所以我洗耳恭听。我的第一个问题是:“它实际上是做什么的?我不得不做一些调查来找出答案。在阅读了文档和教程之后,我在这里总结了我的发现。

Metaflow 使得从运行在本地机器上转移到运行在云资源上变得很容易。

主要的好处(在我看来)是元流在计算资源之上提供了一个抽象层。这意味着您可以专注于代码,而 Metaflow 将负责如何在一台或多台机器上运行它。用文档的话来说,它提供了“基础设施栈的统一 API”。

有向无环图

元流使用一个有向无环图(DAG)——包含要运行的操作的流——来提供这种抽象。管道中的每一个操作都是一个step,并且被定义为一个 Python 类中的一个方法,带有一个装饰器:

元流图是使用一个子类化 FlowSpec(网飞技术博客)的类定义的

在并行定义步骤的情况下(例如上图中的两个模型拟合步骤),如果资源可用, Metaflow 可以并行运行它们。当在单个机器上运行时,这是并行处理的一个途径,类似于 Python 中的multiprocessing包。然而,当您想要在云资源上运行时,主要优势就来了。一旦配置了集群,一个附加的命令行参数将告诉Metaflow在云中运行代码:--with batch。虽然目前只支持 Amazon Web Services,但我想这在将来会有所改变。

在每一步的末尾都有一个检查点,并且可以在稍后的阶段恢复每一步的执行,以帮助调试。但是你不能一行一行的检查你的代码。

版本控制

机器学习模型的版本控制有点挑战,所以 Metaflow 也解决了这个问题。代码和数据都被散列。图形的每次执行都会被记录下来,结果会与关键超参数一起存储:

这些可以作为命令行参数轻松操作:

python metaflow_parameter.py run --alpha 0.001

元数据以 JSON 格式存储在文件系统中,您可以访问每个步骤中存储的变量数据。回读上一次运行也很容易:

run = Flow(flow_name).latest_successful_run

依赖性管理

元流也提供了一种管理依赖关系的机制,可以使用装饰器在flow级别或step级别指定它们。这些可以指定特定的 Python 版本或特定的包:

从命令行运行时指定了conda环境标志:

python metaflow_conda.py --environment=conda run

后续步骤

如果您想试用metaflow,从命令行安装很简单,文档中有一组很好的教程:

pip install metaflow

[## 教程

元流—入门:docs.metaflow.org](https://docs.metaflow.org/getting-started/tutorials)

结论

Metaflow 的目标是“无缝的可伸缩性”,看起来它做得很好。有一点手动设置让它与 AWS 一起工作,但它的相当好地记录了。如果你可能需要将你的分析项目扩展到云,并且关心部署,你可能应该看看 Metaflow 。我还没有想出如何从版本控制和细粒度依赖管理中获得最大价值,但它们看起来像是强大的功能。

你试过 Metaflow 吗?欢迎在下面的评论区留下任何体验和反馈。

Rupert Thomas是一名技术顾问,专门研究机器学习、机器视觉和数据驱动产品。 鲁伯特·托马斯

参考

https://docs.metaflow.org/getting-started/tutorials

开源元流,一个以人为中心的数据科学框架

10 分钟学会元流

机器学习中的欠拟合和过拟合到底是什么?

原文:https://towardsdatascience.com/what-exactly-is-underfitting-and-overfitting-in-machine-learning-798da1aa0a68?source=collection_archive---------69-----------------------

你可能听说过这些术语,但是你理解这个概念吗?

公平地说,机器学习作为一门科学,既复杂又非凡。其核心是高度技术性和数学化。但是如果你不能以非技术的方式理解技术属性,你就不能开始触及机器学习的表面。例如,如果你去参加一个数据科学家的面试,你不可避免地会被问到,“你能解释一下关于机器学习的欠适应和过适应吗?”。他们不是要你拿出图表;相反,他们想知道你理解这个概念。那么,机器学习中的欠拟合和过拟合到底是什么?

过度拟合

让我们从一个简单易懂的例子开始。假设你训练你的狗在你挥动左手的时候举起它的爪子。你有一只聪明的狗,它学得很快,每次都做对了。然而,有一个问题。当你的朋友试图模仿你的左手波时,你的狗茫然地看着他们。困惑中,你再次演示了这个技巧,只是这次你用了右手。你的狗还在发呆,但是为什么?原来你的狗只是在看到你的左手做动作时才学会如何做这个动作。此外,他只学会在你做手势时做,所以他永远不会回应你的朋友,不管你的朋友用什么手。这太合身了。

德克斯·伊齐基尔在 Unsplash 上拍摄的照片

简而言之,过度拟合就是当你有一个机器学习模型试图过多地适应你所拥有的数据。当机器学习算法或统计模型捕捉到数据的噪声并显示出低偏差但高方差时,就会发生这种情况。在机器学习中,偏差指的是由于过于简单或错误的假设而产生的错误。因此,高偏差意味着算法错过了特征中的重要趋势。在高方差的情况下,模型非常适合数据,但不擅长处理新数据集,因为它捕捉了训练数据中的所有随机性。换句话说,当模型或算法与数据拟合得太好,以至于模型无法有效实现其目标时,就会发生这种情况。

欠拟合

你可能已经猜到了,适配不足是适配过度的反义词。它的特点是低方差和高偏差。该模型没有很好地跟踪训练数据,而是忽略了经验教训,无法了解输入和输出之间的关系。例如,模型可能会看到许多带有条纹的斑马,但它不理解所有的斑马都有条纹。

一般来说,欠拟合比过拟合谈得少,因为它更容易发现。如果你的模型不合适,那么你应该很容易发现它,并能够在前进之前快速纠正它。相比之下,过度拟合往往直到后来才被发现。尽管如此,不合身也是不容忽视的。为了避免过度拟合或欠拟合,您应该使用验证和交叉验证来评估预测准确性。

在某些地区,过度拟合和拟合不足可能是有害的。想象一个试图对肿瘤进行恶性或良性分类的模型。你肯定不希望它过度拟合并做出错误的预测。

现在你已经理解了过度适应和欠适应的概念,你知道当它们发生时检测它们并尽可能避免它们的重要性。

可解释的人工智能无法解释什么(以及我们如何解决这个问题)

原文:https://towardsdatascience.com/what-explainable-ai-fails-to-explain-and-how-we-fix-that-1e35e37bee07?source=collection_archive---------16-----------------------

神经网络是精确的,但不可解释。决策树是可以解释的,但是在计算机视觉中是不准确的。我们有解决办法。

由 author⁰设计

别拿走它。让我们来看看的关存泰,他承认“许多机器决策仍然知之甚少”。大多数论文甚至建议在准确性和可解释性之间进行严格的二分法。

可解释的人工智能(XAI)试图弥合这一分歧,但正如我们下面解释的那样, XAI 在不直接解释模型的情况下证明了决策的合理性。这意味着金融和医学等应用领域的从业者被迫陷入两难境地:选择一个不可解释的准确模型,还是一个不准确的可解释模型。

什么是“可解读”?

为计算机视觉定义可解释性或可解释性具有挑战性:解释像图像这样的高维输入的分类,甚至意味着什么?正如我们下面讨论的,两个流行的定义涉及显著图决策树,但是这两种方法都有它们的弱点。

可解释的人工智能无法解释的

显著图

许多 XAI 方法产生被称为显著图的热图,其突出显示影响预测的重要输入像素。然而,显著图关注于输入,而忽略了解释模型如何做出决策。

关于显著性图的更多信息,请参见这些 显著性 教程Github 资源库

描绘原始图像(左),使用 Grad-CAM 方法的显著图(中),以及另一个使用引导反向传播的显著图(右)。上图是“阶级歧视”的典型例子。以上显著图取自https://github.com/kazuto1011/grad-cam-pytorch

显著性图未能解释什么

为了说明为什么显著性图没有完全解释模型如何预测,这里有一个例子:下面,显著性图是相同的,但是预测不同。为什么?即使两个显著图都突出了正确的对象,一个预测是不正确的。怎么会?回答这个问题可以帮助我们改进模型,但是如下所示,显著图无法解释模型的决策过程。

(左)模型预测 Eared Grebe。(右)模型预测角鱼 Grebe。这些是在加州理工学院-加州大学圣迭戈分校 Birds-200–2011 或简称 CUB 2011 上训练的 ResNet18 模型的 Grad-CAM 结果。尽管显著图看起来极其相似,但模型预测却不同。因此,显著性图不能解释模型是如何达到最终预测的。

决策树

另一种方法是用可解释的模型代替神经网络。在深度学习之前,决策树是准确性和可解释性的黄金标准。下面,我们说明决策树的可解释性,它通过将每个预测分解成一系列决策来工作。

上面的决策树不是只预测“超级汉堡”或“华夫饼干”,而是会输出一系列决策,这些决策会导致最终的预测。然后,这些中间决定可以被单独验证或质疑。因此,经典机器学习将这种模型称为“可解释的”。

然而,就准确性而言,决策树在图像分类数据集上落后于神经网络高达 40%的准确性。神经网络和决策树的混合也表现不佳,甚至在数据集 CIFAR10 上也无法与神经网络相匹配,该数据集具有如下图所示的微小 32x32 图像。

展示 32x32 有多小的例子。这是来自 CIFAR10 数据集的示例。

正如我们在论文(第 5.2 节)中所示,这种精度差距损害了可解释性:需要高精度、可解释的模型来解释高精度神经网络。

进入神经支持的决策树

我们通过建立既可解释又准确的模型来挑战这种错误的二分法。我们的关键见解是将神经网络与决策树结合起来,在将神经网络用于低级决策的同时保留高级别可解释性,如下所示。我们将这些模型称为 神经支持的决策树 (NBDTs),并表明它们可以匹配神经网络的准确性,同时保留决策树的可解释性。

在该图中,每个节点包含一个神经网络。该图仅突出了一个这样的节点和内部的神经网络。在神经支持的决策树中,预测是通过决策树进行的,保留了高级别的可解释性。然而,决策树中的每个节点都是一个做出低级决策的神经网络。上面神经网络做出的“低级”决策是“有香肠”还是“没有香肠”。

NBDTs 和决策树一样可以解释。与当今的神经网络不同,NBDTs 可以输出预测的中间决策。例如,给定一幅图像,神经网络可以输出。但是,一只 NBDT 可以同时输出动物脊索动物食肉动物(下图)。

在该图中,每个节点包含一个神经网络。该图仅突出了一个这样的节点和内部的神经网络。在神经支持的决策树中,预测是通过决策树进行的,保留了高级别的可解释性。然而,决策树中的每个节点都是一个做出低级决策的神经网络。上面神经网络做出的“低级”决策是“有香肠”还是“没有香肠”。上面的照片是在 Pexels 的许可下从 pexels.com 拍摄的。

NBDTs 实现神经网络精度。与任何其他基于决策树的方法不同,NBDTs 在 3 个图像分类数据集上匹配神经网络精度(< 1%差异)。在 ImageNet 上,NBDTs 的精度也达到了神经网络的 2%以内,ImageNet 是最大的图像分类数据集之一,拥有 120 万张 224x224 图像。

此外,NBDTs 为可解释模型设定了新的最先进的精确度。NBDT 的 ImageNet 准确率为 75.30%,比基于决策树的最佳竞争方法高出约 14%。为了将这种准确性的提高联系起来:对于不可解释的神经网络来说,类似的 14%的提高花费了 research⁴. 3 年的时间

神经支持的决策树如何解释

个体预测的合理性

最有见地的理由是模型从未见过的对象。例如,考虑一只 NBDT(如下),在一只斑马上运行推理。虽然这个模型从来没有见过斑马,但是下面显示的中间决定是正确的——斑马既是动物又是有蹄动物(有蹄动物)。对于看不见的物体来说,看到个体预测的合理性的能力是至关重要的。

NBDTs 甚至可以对看不见的物体做出准确的中间决策。在这里,模型是在 CIFAR10 上训练的,以前从未见过斑马。尽管如此,NBDT 正确地将斑马识别为动物和有蹄动物。上面的照片是在 Pexels 的许可下从 pexels.com 拍摄的。

模型行为的正当性

此外,我们发现使用 NBDTs,可解释性会随着准确性的提高而提高。这与导言中的二分法相反:NBDTs 不仅具有准确性和可解释性;他们还将准确性和可解释性作为同一目标。

ResNet10 层次结构(左)不如 WideResNet 层次结构(右)有意义。在这个层次中,猫、青蛙和飞机被放在同一个子树下。相比之下,WideResNet 层次在层次的每一侧都清晰地划分了动物和车辆。上面的图片直接取自 CIFAR10 数据集。

例如,精度较低的 ResNet⁶层级(左)就没什么意义了,将青蛙飞机组合在一起。这是“不太明智的”,因为很难找到所有三个类共有的明显的视觉特征。相比之下,更高精度的 WideResNet 层次结构(右)更有意义,它清晰地将动物车辆区分开来——因此,精度越高,NBDT 就越容易解释。

理解决策规则

对于低维的表格数据,决策树中的决策规则很容易解释,例如,如果菜里有一个小圆面包,则选择正确的子元素,如下所示。然而,对于像高维图像这样的输入,决策规则并不直接。

这个例子演示了如何用低维的表格数据来解释决策规则。右边是几个项目的示例表格数据。左边是我们根据这些数据训练的决策树。在这种情况下,决策规则(蓝色)是“是否有 bun?”所有带有圆面包(橙色)的项目被发送到顶部的子项目,所有没有圆面包(绿色)的项目被发送到底部的子项目。

正如我们在论文(第 5.3 节)中定性发现的那样,模型的决策规则不仅基于对象类型,还基于上下文、形状和颜色。

为了定量地解释决策规则,我们利用了一个名为 WordNet⁷的现有名词层级;有了这个层次,我们就可以找到类之间最具体的共享意义。例如,给定类别,WordNet 将提供哺乳动物。在我们的论文(第 5.2 节)和下图中,我们定量地验证了这些 WordNet 假设。

**

左边子树(红色箭头)的 WordNet 假设是 Vehicle。右边(蓝色箭头)的 WordNet 假设是动物。为了定性地验证这些意义,我们针对看不见的物体类别测试了 NBDT:1 .寻找训练中没有看到的图像。2.给定假设,确定每个图像属于哪个子图像。例如,我们知道大象是一种动物,所以应该去右边的子树。3.我们现在可以通过检查有多少图像被传递给正确的孩子来评估这个假设。例如,检查有多少大象图像被发送到动物子树。这些每类的精度显示在右侧,看不见的动物(蓝色)和看不见的车辆(红色)都显示高精度。

注意,在具有 10 个类的小数据集即 CIFAR10 中,我们可以找到所有节点的 WordNet 假设。然而,在具有 1000 个类的大型数据集(即 ImageNet)中,我们只能找到节点子集的 WordNet 假设。

一分钟内尝试 NBDTs

有兴趣尝试 NBDT 吗,现在?不需要安装任何东西,你就可以在线查看更多示例输出,甚至尝试我们的网络演示。或者,使用我们的命令行实用程序来运行推理(使用 pip install nbdt 安装)。下面,我们对一只猫的图片进行推理。

*nbdt https://images.pexels.com/photos/126407/pexels-photo-126407.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=32  # this can also be a path to local image*

这将输出类别预测和所有中间决策。

*Prediction: cat // Decisions: animal (99.47%), chordate (99.20%), carnivore (99.42%), cat (99.86%)*

您也可以用几行 Python 代码加载一个预训练的 NBDT。使用以下内容开始。我们支持几个神经网络和数据集。

*from nbdt.model import HardNBDTfrom nbdt.models import wrn28_10_cifar10model = wrn28_10_cifar10()model = HardNBDT( pretrained=True, dataset='CIFAR10', arch='wrn28_10_cifar10', model=model)*

作为参考,请参见我们上面运行的命令行工具的脚本;只有大约 20 行直接参与转换输入和运行推理。有关入门和示例的更多说明,请参见我们的 Github 库

它是如何工作的

神经支持决策树的训练和推理过程可以分为四个步骤。

训练 NBDT 分两个阶段进行:首先,构建决策树的层次结构。第二,用特殊的损失项训练神经网络。若要运行推理,请将样本通过神经网络主干。最后,将最后一个全连接层作为决策规则序列运行。

  1. 构建决策树的层次结构。该层次结构决定了 NBDT 必须在哪些类别集之间做出决定。我们将这种层次称为诱导层次
  2. 这个层次结构产生了一个特定的损失函数,我们称之为树监督损失 ⁵.训练原始的神经网络,没有任何修改,使用这个新的损失。
  3. 通过将样本传递到神经网络主干来开始推断。主干是最终全连接层之前的所有神经网络层。
  4. 通过运行最终的全连接层作为决策规则序列来完成推理,我们称之为嵌入式决策规则。这些决定最终形成了最终的预测。

更多细节,请参见我们的论文(第 3 节)。

结论

可解释的人工智能没有完全解释神经网络如何实现预测:现有的方法解释了图像对模型预测的影响,但没有解释决策过程。决策树解决了这个问题,但不幸的是,images⁷是决策树准确性的克星。

因此,我们结合了神经网络和决策树。与实现相同混合设计的前辈不同,我们的神经支持决策树(NBDTs)同时解决了(1)神经网络提供调整和(2)决策树获得高精度的失败。这为医药和金融等领域的应用开创了一个新的精确、可解释的 NBDTs 类别。要开始,请参见项目页面

邓丽君 【尹 亨利金

其中*表示同等贡献

[0]由作者 Alvin Wan 设计。脚注的存在是为了澄清我们有权使用这个图形。

[1]有两种类型的显著图:一种是白盒,其中该方法可以访问模型及其参数。Grad-CAM 是一种流行的白盒方法,它使用梯度和类别激活图来可视化注意力。可以从论文《Grad-CAM:通过基于梯度的定位来自深度网络的可视化解释》http://open access . the CVF . com/content _ ICCV _ 2017/papers/selva raju _ Grad-CAM _ Visual _ expansions _ ICCV _ 2017 _ paper . pdf。另一种类型的显著图是黑盒,其中模型不能访问模型参数。上升就是这样一种突出方法。RISE 会遮罩输入图像的随机部分,并将此图像传递给模型-对准确性损害最大的遮罩是最“重要”的部分。你可以从论文《崛起:解释黑箱模型的随机输入抽样》,http://bmvc2018.org/contents/papers/1064.pdf中了解更多。

[2]在 TinyImageNet200 上显示了决策树和神经网络之间 40%的差距。

[3]这三个数据集特别是 CIFAR10、CIFAR100 和 TinyImageNet200。

[4]ImageNet 准确性的提高是显著的:对于不可解释的神经网络,ImageNet 上类似的 14%的提高花费了 3 年的研究。为了进行这种比较,我们考察了一个类似的准确性增益,它花了 3 年时间,从 2013 年的 Alex net(63.3%)到 Inception V3 (78.8%)。从 NofE (61.29%)到我们的 nbdt(75.30%),NBDT 在大约相同的范围内比以前的最先进结果提高了约 14%。然而,还有其他因素在起作用:一个明显的因素是,计算和深度学习库在 2013 年并不容易获得。一个更公平的比较可能是使用 ImageNet 最新的 14%的收益。最近 14%的增长用了 5 年时间,从 2015 年的 VGG-19(74.5%)开始,到 2020 年的 fix efficient net-L2(88.5%)。然而,这在技术上也是不可比的,因为在更高的精度下更难获得大的增益。尽管缺乏完全可比的基准进度,我们只是取了两个时间范围中的最小值,试图说明 14%的差距有多大。

[6]在 CIFAR10 上,ResNet10 的精度比 WideResNet28x10 低 4%。

[7] WordNet 是各种单词的词汇层次结构。大多数单词是名词,但也包括其他词类。更多信息见官网

[8]要理解树监督损失的基本思想: Horse 只是一个类。不过它也是有蹄类动物。(参见“个人预测的理由”中的图表。)在根节点处,因此需要将样本传递给子节点动物。此外,节点动物需要将样本传递给有蹄动物。最后,节点有蹄动物必须将样本传递给。训练每个节点以预测正确的子节点。我们称这种损失为树木监管损失。

[9]一般来说,决策树在处理低维数据时表现最佳。图像是这种最佳情况的对立面,非常高维。

Airbnb 上的挂牌价格是由哪些功能决定的?

原文:https://towardsdatascience.com/what-features-contribute-to-the-listing-price-on-airbnb-21af2703b269?source=collection_archive---------43-----------------------

通过 Tableau & Seaborn 可视化西雅图 Airbnb 数据

作者:言承旭

从 2000 年中期开始,Airbnb 已经成为我们日常旅行中必不可少的一部分。如今,在线旅行社业务需求巨大。但是你有没有停下来想一想到底是什么因素促成了挂牌价?

作者图片

上图显示了 Airbnb 上平均挂牌价格的密度图。整个城市的价格相差很大。

简介:

今天,我想通过 4 个步骤来探讨这些话题:

  1. 哪些小区均价差不多?给定一个具体的预算,你去哪里找 Airbnb?
  2. 挂牌均价排名前 10 的邻里团有哪些?
  3. 哪个评审得分与挂牌价的相关性最高?
  4. 挂牌价有哪些预测因素,我们如何在 Airbnb 上给房子定价?

第一部分:相似邻域(K-均值聚类)

如果我有 X 美元的预算,我应该去哪里找 Airbnb?

使用 tableau,我们可以很容易地根据标价对邻居进行聚类。

作者图片

上图显示了三个聚类在平均价格和列表数量方面的关系。颜色梯度显示价格差异。方框的大小表示 Airbnb 上的房源数量。

聚类一(深红色)表示具有很少列表和较低价格(低于 100 美元)的邻居组。集群 3 具有第二高的列表数量和最高的平均价格。而集群 2 具有最高数量的列表。

作者图片

简言之,

  1. 如果您的预算低于 100 美元,请选择 1 区的酒店。
  2. 如果你的预算在【100 美元到 150 美元 左右,就选集群 2 吧。
  3. 最后,如果你有更多的钱可以花,你可以在集群 3 中找到更贵的选择。

第二部分:平均价格排名前 10 的社区

价格最高的 10 个街区——作者图片

正如上面的单词 cloud 所示,不难看出,Magnolia 东南部房价最高的社区和第二高的社区是 portage Bay,这两个社区每晚的平均房价都超过了 200 美元。

第三部分:哪些评审分数与挂牌价相关性最高?

在 Airbnb 上,有几个审核评分来帮助区分每一个房源。评审分数也是一种反复的方法,用来巩固优秀和改正缺点。点评分数和挂牌价有关联吗?让我们仔细看看。

可变热图-作者图片

令我惊讶的是,没有一个的点评分数与上市价格有显著相关性。(皮尔逊相关系数小于 0.1)既然我们知道点评分数不是上市价格的关键指标。下一个问题是:决定挂牌价格的关键因素是什么,我们如何给房子定价?

第四部分:挂牌价的预测因素是什么?

决策树和回归分析

我想你是 Airbnb 的房主,你会知道你的定价策略是否合理。一个快速评估的方法是取你所在地区标价的平均值。然而,不同的房子之间有很大的差异,即使是在同一个邮政编码或社区。我们需要通过机器学习和可视化来了解哪些因素影响了价格。

让我们仔细看看与挂牌价相关的其他属性。

  1. 数量特征

成对情节—作者提供的图像

从上面的图中可以看出,可容纳床位和数量与价格正相关,而评论数量显示出很小的负相关性。

2.定性特征:

作者图片

如上面右图所示,我们看到一个明显的趋势,从共享房间转移到整个房间,最后是专属财产。此外,更多的床位通常意味着更高的价格。然而,在 1000 美元的价格标签周围有一些异常值

此外,在左图中,我们可以看到大多数高价房源都是房子,只有少数公寓例外。

决策树建模:

作者图片

最后,让我们仔细看看决策树模型的结果。根据上面显示的预测值,该模型可以解释 50%的挂牌价格变化。(r = 0.5)

从顶部开始,模型对卧室数量≤ 1.65 进行分割,表明卧室数量是区分挂牌价格的关键指标。沿着这个分支,我们必须确定房间类型是否是公寓,因为人们倾向于花更少的钱买公寓,花更多的钱买房子。我们还根据可用床位的数量和房间的大小分类,在适应度不超过 7.5 的情况下进行了划分。树的第三层具有作为分割点的浴室市中心街区。

前 5 名的重要分数-作者图片

上面的列表显示了根据决策树模型的重要性影响价格的前 5 个特征。

第五部分:结论

在本文中,我们研究了影响西雅图 Airbnbs 挂牌价格的因素。

  1. 我们根据标价将社区分成三个不同的群,并创建了一个基于预算的策略来寻找合适的位置。
  2. 然后我们看了价格方面最热门的社区。
  3. 然后,我们调查了与标价相关的特性。我们发现评论分数与标价不相关。
  4. 最后,我们查看影响上市价格的定量和定性特征,我们可以使用这些特征构建决策树模型。前 5 个关键属性是、卧室数量、房间数量、整个公寓空间、浴室数量以及位于市中心

附录:

  1. 链接到 Kaggle 数据源:这里
  2. 更多详细分析可以在我的 Github 知识库中找到:这里

作为一名数据科学家,什么适合你?

原文:https://towardsdatascience.com/what-fits-you-as-a-data-scientist-ef149bc774df?source=collection_archive---------57-----------------------

数据科学

发现你的位置,找到正确的方向

蒙蒂·艾伦在 Unsplash 上的照片

数据科学致力于理解自然界,而自然界本来就非常复杂。但是怎么做呢?分析数据,大量的数据(所谓的大数据,试图理解它们并挤压知识经验,从而做出决策和解决问题。为了更好地了解什么是数据科学和机器学习领域的体验,请查看我关于机器学习和人工智能的介绍性文章(下面的链接)。

[## 人工智能和机器学习。它们是一回事吗?

答案是否定的。我来告诉你为什么。

medium.com](https://medium.com/swlh/artificial-intelligence-and-machine-learning-are-they-the-same-thing-a9f6c8019a89)

作为一名数据科学家,首先要知道的是由步骤组成的数据生命周期

数据收集

如今,数据收集是一件容易的事情。数据收集是从各种来源收集数据的行为:网页、新闻、社交媒体、报告、图表、表格等。都是数字原始数据的来源,随时可供感兴趣的人使用。

数据流—来自 Giphy

在这个领域,一个优秀的数据科学家会对这个世界产生一种与生俱来的好奇心;他是数据驱动型的,所以他花费大量时间收集数据来回答感兴趣的问题。所需技能包括:

  • 想想解决你所涉及的问题需要哪些数据
  • 知道如何从各种来源收集数据,以及如何以结构化的方式组合它们
  • 了解一些收集数据和 ETL(提取、转换和加载)的工具或应用

数据清理

一旦收集,大多数时候,原始数据是“凌乱”的。

一个非常凌乱的办公室,有一堆文件和原始数据要整理——图片由 WonderlaneUnsplash 上拍摄

数据清理是一项复杂的任务,包括:

  • 检测和纠正由于部分或缺失数据收集而导致的损坏或不准确的数据
  • 基于相关现象信息的数据验证和缺失值估计依赖于问题。
  • 通过数据的协调和标准化来增强数据
  • 转换数据以获得数据集中值的一致性和可比性

探索性数据分析

探索性数据分析(EDA)是一组技术的集合,用于观察数据能告诉我们什么。在 EDA 中,我们使用数学模型和常识来处理数据的重要性。

数据的图示——照片由 Stephen DawsonUnsplash 上拍摄

作为数据科学家,我们必须知道从我们收集的数据中可以期待什么,必须制定一个假设,并“填补”我们所拥有的信息中的空白。

有许多工具可以帮助我们:

  • 描述性统计:用表格、图表、汇总值等来表示数据。
  • 推理统计学:利用我们收集的数据(这是对现实的不完全描述)来推断、假设现象的基本特征。
  • 对环境的深刻理解,也就是说,对我们试图用数据科学技术解决的问题的背景的深刻理解。

值得回忆的是,在经典的机器学习 (ML)中,数据生命周期的这一阶段取决于我们这些数据科学家。当在深度学习 (DL)甚至在强化学习 (RL)中时,这取决于模型,机器,来应对这种情况。在 DL 中,在训练阶段,算法学习所提供数据的特征并适应它们。在 RL 中,环境甚至是学习过程中的一个活跃部分。

模型结构

模型构建是 ML 过程的基本部分。当我们创建一个模型时,我们可以训练机器学习我们数据(训练集)的模式,以预测未知或未来的数据。

要有创意…是时候做模型了!—Jo SzczepanskaUnsplash 上拍摄的照片

在模型构建中,我们试图从分析中预测结果。

同样,有些技能是必不可少的:

  • 将正确的学习模式应用于我们的数据,以解决特定的问题(回归、分类、关联、聚类等)
  • 通过定义的指标测试和评估模型训练的结果,以计算性能
  • 结合多种技术和模型,以在预测、模型的稳健性等方面获得更好的结果。(合奏造型)

模型部署

当我们的模型准备好了,并且我们从训练和测试集(训练和评估阶段)得到了好的结果,就该把它投入生产了。这是我们从数据中获得结果的最后阶段,用于商业、学习、研究,或者也可能用于娱乐!

获得结果的时间到了——照片由 NeONBRANDUnsplash 上拍摄

我们需要知道:

  • 如何在各种现成的、先进的框架上部署我们的模型。想想,也就是在 Python 工具和库中,比如 NumPy、pandas、scikit-learn (ML)、TensorFlow Keras、PyTorch (DL)、openai tools for RL 等。
  • 如何将结果应用到生产环境中,用于优化、异常检测、自动化、预测等。
  • 如何向利益相关者总结结果

那么,下一步是什么?

到目前为止,我们已经讨论了这个过程。但是,每一步都需要谁呢?我们先明确一下概念,涉及到哪些角色。

首先,我们用一张图总结一下所有的过程

角色和数据管道—作者

数据科学家

正如你所看到的,一个数据科学家被期望做从数据收集到模型部署的所有事情;他必须意识到真正的问题,并且他必须知道关于过程的每个阶段的许多技术。因此,所需的技能是:

  • 掌握如何使用 SQL 和其他方法查询数据集
  • 对代数、统计和集合论有深入的理解,有助于数据建模技术
  • 了解 Python、R、Java、C++或其他用于数据清理、数据操作、EDA 和可视化的语言。
  • 能够根据数据和预期结果选择或组合适合解决问题的建模技术
  • 了解如何将生产环境中的数据管道与结果的可视化和呈现方法相结合,如 web 应用程序、报告、机器命令等。

数据工程师

A 数据工程师更专注于数据收集和数据清理。在这个职位上,除了能够从各种来源提取、转换和加载数据之外,我们还必须非常精通数据库和数据查询技术。然后,我们必须知道如何清理数据,处理空值或不一致的值,以及更多的技术,为下面的 ML 模型建立一个坚实的来源基础。

数据分析师

一个数据分析师在数据清理和 EDA 上努力。他精通统计学,无论是描述性的还是推理性的,并且总是试图从数据中挤出每一点信息。他的角色对于数据建模和构建能够实际捕捉环境行为的可靠模型至关重要。在通往知识的数据科学道路上,在我看来,这可以是第一步,然后我们可以探索该过程的其他阶段。

机器学习工程师

一个机器学习工程师知道如何充分利用数据,基于各种技术和 ML 算法;他精通 ML 模型、超参数优化、评估和度量,并处于该领域最新研究的前沿。除此之外,他还知道如何将模型扩展和部署到生产系统中。

如您所见,有许多通往数据科学的途径。在我看来,每个兴奋地参与这一领域的人都必须意识到,为了更好地理解数据和机器学习技术,从一个新的角度看待现实,他可能会对进步和未来的道路做出什么贡献。

我希望你喜欢这篇文章,并随时留下评论,关注我未来在 Medium 上的帖子。感谢大家,很快再见。

对于 DL 训练,我应该以什么格式存储我的 ECG 数据?

原文:https://towardsdatascience.com/what-format-should-i-store-my-ecg-data-in-for-dl-training-bc808eb64981?source=collection_archive---------35-----------------------

优化心电图数据布局提升深度学习训练性能的案例研究。

国立癌症研究所Unsplash 上拍摄的照片

从历史上看,我们保存数据是为了我们可以读取它。现在,随着数据科学的快速发展,机器正在读取我们的数据。我们正在从人类访问小数据转变为深度学习脚本重复访问大量数据。

这是将患者的 x 射线加载到监视器上进行视觉评估与通过神经网络运行 x 射线 1000 次之间的区别,神经网络将原始图像转换为向量,裁剪它,旋转它,模糊它,然后尝试识别气胸。

这就是为什么我们看到 GPU 越来越多地用于深度学习——我们需要对我们的数据执行越来越多的数学运算。GPU 中的计算元素专为大规模数据并行数学运算而设计,这些运算是现代图形管道的基础。事实证明,深度学习工作流程背后的数学。

但是没有[数据→ GPU]那么简单

虽然 GPU 执行深度学习的复杂数学,但每个训练工作都是一个管道,在 GPU 工作之前有一些步骤。

在训练中,在数据进入神经网络之前,它在一系列操作中得到预处理。预处理通常包括一系列任务:索引(列出)训练数据集中的项目,对它们进行洗牌,从存储中实际加载它们,然后执行变形。预处理通常发生在 CPU 上(通常发生在 GPU 服务器中的 CPU 上)。

因此,数据必须通过 CPU 从存储位置转移到 GPU 进行计算。

数据负载本身通常是训练管道最大吞吐量瓶颈的原因。

如果你正在加载一个病人的 x 光片给,你可能会发现 0.04 秒的数据加载时间是可以接受的。您几乎不会注意到延迟,因为您的“回顾”时间可能有几分钟长。

另一方面,一个只需要 0.001 秒来“检查”图像的 GPU 服务器会因为 0.04 秒的数据加载时间而变慢。和延迟化合物。对于包含不是一个项目而是数千个或数百万个项目的大规模训练数据集和迭代计算(例如,单个作业中的 20 个历元),数据加载延迟会发生很多次

不管你的 GPU 有多快,你的训练工作只能和你的数据加载时间一样快。

因此,确保数据加载高效会带来巨大的性能优势。

这篇文章描述了我们与 Geisinger 的成像科学和创新部门的项目,以优化心电图结果数据集的训练吞吐量。我们为优化测试生成了一个数据大小和类型匹配的模拟数据集。

首先,确定性能基线

开始 DL 性能调查的一个好地方是检查数据加载工作持续时间和培训工作持续时间之间的比率。

在我们运行这个基本任务分解之后,我们发现数据加载时间明显大于训练时间。这是非常低效的,因为在列车:负载比为 1:4 的情况下,我们的 GPU 在作业持续时间内处于空闲状态。

在我们等待下一批加载时,每一批都有 75%的 GPU 时间处于空闲状态。

我们需要更快地加载数据。

为什么文件加载很慢?

我们的合成训练数据代表来自 15 导联 ECG 测试的日志:15x 5GB HDF5 文件,每个文件包含 1,000,000 条记录(患者)。每个文件代表一个 ECG 通道,其中“patient_id”是关键字,该通道的结果是其记录。

我们将 HDF5 视为键值存储,但该文件格式实际上是为了支持更复杂的数据结构而设计的。HDF ( 分层数据格式)非常适合存储包含大量元数据的大型数值数据集。它支持文件内的分组,有效地使 HDF 文件成为可移植的文件系统。HDF 主要用于 HPC 用例中的科学数据集。

然而,该功能的一个缺点是,每次读取 HDF5 文件都会产生大量开销。

我们可以使用 strace 来窥探在我们发出单个 read(通过 h5py python 库发出)时发生的系统调用。

“lseek”用于将文件指针移动到文件中的特定位置,然后“read”用于实际读取数据。最后一行是一个 4992 字节的读取,以检索组成我们的 HDF5 文件的键值对中的一个值。前 5 次读取是对文件内的元数据(指针)的读取,这些元数据是定位所需数据所必需的。

为什么会有这么多元数据读取?因为 HDF 使用 a B 树结构来帮助提高其类似文件系统的元数据查询的性能。就像在文件系统上一样,知道在哪里寻找数据可能比将数据移动到 CPU 中更困难。

在看到 HDF 读取需要多少冗余系统调用后,我们确信有一种更具读取性能的方法来保存我们过于简单的数据集。我们并没有真正使用赋予 HDF 名字的层级功能。

最优会是什么样子?

作为一个思想实验,我们从一个问题开始,“文件中键值数据的最佳布局是什么,以获得最大的读取吞吐量?”

我们在解决什么?

1。我们不需要保存复杂的元数据

我们用于记录的唯一描述性信息是密钥。

让我们远离 HDF 中我们没有使用的功能。

2。快速读取单个记录和收集密钥列表

正如在培训工作中常见的那样,我们的脚本从打乱数据集开始。必须先枚举数据集的内容,然后才能洗牌。由于这个枚举步骤发生在每个作业的开始,我们不想通过缓慢的键收集(我们在 HDF5 中见过)来建立前端延迟。

3。IO 越大越好

我们更喜欢从远程存储上保存的数据集进行训练。为什么?首先,数据管理更简单,我们不必提前花费时间将数据集复制到本地设备。第二,我们的数据集太大,无法完全放入本地内存,所以如果我们从本地存储位置进行训练,我们必须管理一些数据分片过程。

因此,由于我们将发出必须通过网络到达存储的读取,我们也可以通过增大读取大小来优化网络往返成本。

我们首先将所有 15 个心电图导联的数据合并成一个记录。这一变化既简化了我们的数据集,又有助于增加 IO 大小;现在,读取单个患者的心电图结果可以通过网络在 1 次旅行中收集,而不是 15 次。

每个记录包含来自所有 15 个 ECG 导联的数据阵列:

[[第一频道],…,[第十五频道] ]

我们可以简单地通过其在数组中的位置将单个结果与其来自的 ECG 导联编号相关联。

键块包含每个记录的[key_id,value_location]。现在我们可以直接跳到文件中特定记录的数据。

我们在文件末尾存储了一个包含所有密钥的数组。打开文件后,我们会读取一个文件头,其中包含文件配置信息,如模式规范,最重要的是文件中关键块的位置。密钥加载效率极高,因为我们可以直接跳到密钥块的起始位置,然后一次性读取所有密钥。

在 HDF5 文件中,密钥随机分布在整个文件中。在我们的新文件格式中拥有连续的键允许对键块进行大量的顺序读取,从而最小化网络开销。

30 倍的解决方案

由此产生的文件格式,我们将其命名为“Fleet”并在 GitHub 上提供,为我们的工作负载提供了比 HDF5 高 30 倍的读取吞吐量。更好的是,我们的火车:负载比现在超过了 1:1(对于远程存储和本地存储)。我们可以在 NFS 利用我们的心电图数据进行有效的训练。

我们认为这样一种轻量级的文件格式最适合用于深度学习训练的大型数值数据集。如果需要分组,可以创建附加的车队文件来代表每个组。

Fleet 是一种开源文件格式。你可以在舰队 GitHub 页面上找到代码和几个助手脚本。

我们学到了什么

虽然使用 JPEG 图像或张量记录的训练脚本已经在人工智能生态系统中进行了广泛的测试和调整,但其他文件格式的训练可能需要一些性能分析,以优化整体作业吞吐量。

有时,训练数据集的格式可能会引入读取模式或计算需求,从而降低整体训练工作的速度。在这种情况下,我们通过切换到轻量级、读取优化的文件格式来优化训练性能。

随着我们继续将深度学习方法应用于更广泛的用例和数据集,我们应该继续问自己,“如果我们解决了最佳训练吞吐量,我们的数据会是什么样的?”

这项研究是我的同事 Brian Gold 在 Pure Storage 和 Geisinger 的成像科学和创新部门共同开展的项目。特别感谢 David Vanmaanen、Sush Raghunath 和 Alvaro Ulloa Cerna。

什么是卓越的图形以及如何创造它

原文:https://towardsdatascience.com/what-graphical-excellence-is-and-how-to-create-it-db02043e0b37?source=collection_archive---------27-----------------------

作为一名数据科学家,了解如何制作重要的图表至关重要

动机

假设您从 4 个不同的来源收集了 4 个数据集。你想看看他们彼此之间有多大的不同。

F.J. Anscombe,“统计分析中的图表”,《美国统计学家》,第 27 期(1973 年 2 月),第 17-21 页。

你发现它们是由完全相同的线性模型描述的。在数据数量、X 的平均值、Y 的平均值、回归线方程、标准误差、相关系数等方面没有差异。如果你要得出这些数据集是相同的结论,那么在做出任何结论之前,推迟诱惑,用 5 分钟来绘制这些数据点。

F.J. Anscombe,“统计分析中的图表”,《美国统计学家》,第 27 期(1973 年 2 月),第 17-21 页。

他们的图形显示明显不同!这就是绘图如此重要的确切原因。当我们听到数据时,我们通常会想到用数字来表示。但是的数字和计算不足以显示数据的洞察力。为了不做出错误的结论,我们不需要仅仅被统计数据所蒙蔽。

但是任何一种图形都有意义吗?答案是否定的。这就引出了图形优秀的定义。

卓越的图形

卓越的图形应该:

  • 引导观众思考物质而不是方法论、图形设计或技术
  • 最短的时间最小的空间给观众最多的想法****
  • 告诉数据的真相

如果你仍然不相信这些标准对于一个优秀的图表是重要的,我们将通过例子来说明这些标准应用于数据科学中最常用的两个图表:地图和时间序列

照片由艾萨克·史密斯Unsplash 上拍摄

地图

现在有很多工具可以让我们用地图来可视化数据。但是真正有用的地图不需要花里胡哨、色彩斑斓,而是要在最短的时间内展示最多的想法。

早期最有价值的地图是著名的约翰博士的点状地图,显示了 1854 年 9 月伦敦市中心死于霍乱的地点。

E.吉尔伯特,“英格兰健康和疾病的先驱地图”,《地理杂志》,124 (1958),172–183。

死亡人数用圆点标出,11 个水泵的位置用十字标出。通过检查地图表面的散布,斯诺观察到霍乱几乎完全发生在那些住在水泵附近的人中间。因此,他把被污染的水泵的把手拿掉了。

看地图时的一个小小的观察结束了这场夺走了 500 多条生命的流行病,并拯救了成千上万条生命!当然,泵和疾病之间的联系可以通过任何计算很容易地揭示出来。但是这张地图是一个强有力的例子,证明有时图形分析可以比任何计算更有效地证明数据。****

时间序列

时间序列图是数据科学最常用的形式之一。一维以秒、分、小时、天、周、月、年、世纪的节奏行进。这种时间顺序的安排给了这张图表解释的力度和效率,这是其他图表所没有的。

当听到时序图时,我们通常会想到这种图:

显示器中检索

事实上,上图是最常用的一种时序图。但是你知道时序图也可以是这样的吗:

查尔斯·约瑟夫·米纳德,《米纳德 1845-1869 年的绘画和卡特尔形象》

将空间维度添加到图形的设计中时,时间序列显示的解释力得到增强。上图是查尔斯·约瑟夫·密纳德的经典之作,展现了拿破仑军队在俄罗斯的可怕命运。上图中有几点需要注意:

  • 从左边开始,粗的褐色流线显示了入侵开始时大军的规模(422,000 人)。
  • 这条带子的宽度显示了地图上每个地方军队的规模。随着军队到达莫斯科,规模变得越来越小。
  • 拿破仑从莫斯科撤退的路线是较暗、较低的带,它与温度等级和日期有关。

数据地图和时间序列的结合有效地描绘了拿破仑的俄罗斯战役中遭受的一系列毁灭性损失。那是一个严寒的冬天,许多人在离开俄罗斯的途中冻死了。如果我们被告知军队的规模最初是 422,000 人,最终是 10,000 人,我们可能不会真正意识到损失的巨大数字。但是通过观察图表,我们可以生动地想象出这个人是怎么熬过来的,以及感冒有多严重。

那么我们应该如何绘制图表呢?

这篇文章并没有详尽地展示一个优秀图的每一个标准。但是我希望这篇文章给你一个重要的信息:一个优秀的图形不是用先进的图形技术展示美丽设计的图形。一个优秀的图表是由清晰、精确和高效的复杂想法组成的。一个优秀的图表,在最短的时间最小的空间里,给浏览者最大数量的想法。一个优秀的图表揭示了数据的真相。

因此,在制图时,首先要明确你的目的和你想通过图表传达的想法,然后找到表达你想法的方法。

我喜欢写一些基本的数据科学概念,并尝试不同的算法和数据科学工具。你可以通过 LinkedInTwitter 与我联系。

如果你想查看我写的所有文章的代码,请点击这里。在 Medium 上关注我,了解我的最新数据科学文章,例如:

[## 高效 Python 代码的计时

如何比较列表、集合和其他方法的性能

towardsdatascience.com](/timing-the-performance-to-choose-the-right-python-object-for-your-data-science-project-670db6f11b8e) [## 使用 Python 最大化您的生产力

你创建了一个待办事项清单来提高效率,但最终却把时间浪费在了不重要的任务上。如果你能创造…

towardsdatascience.com](/maximize-your-productivity-with-python-6110004b45f7) [## 用 Python 选择要投资的股票

您计划在未来 3 年投资几只股票,每只股票的每一美元都有不同的预期回报…

towardsdatascience.com](/choose-stocks-to-invest-with-python-584892e3ad22)

参考

爱德华·塔夫特。"定量信息的可视化显示."图形出版社有限责任公司。2007 年 8 月

黑客马拉松教会了我什么!!

原文:https://towardsdatascience.com/what-hackathons-have-taught-me-3ebbd6d3b40f?source=collection_archive---------75-----------------------

解决现实世界的问题

萨法尔·萨法罗夫在 Unsplash 上拍摄的照片

我喜欢参加黑客马拉松来测试我的技能,也学习新的技能。我发现这种学习方法很有效。在我大学二年级的时候,我曾经认为在任何一个平台上做一门在线课程就足够了。但是很快,我就会忘记我在那门课中学到的东西。就在那时,我开始探索,发现了许多发布黑客马拉松问题的网站。我参与了一些,但我不能解决问题,不知道从哪里和如何开始。因为我的兴趣在于机器学习和开发端到端应用程序,所以我只参与了这些。

问题是,每当我们在网上上课时,他们会教你该主题的全部内容,老实说,这并不是必需的,因为技术在不断更新。所以我过去常常做的是,我会寻找问题,以及使用什么类型的技术来解决这些问题。

通过这种方式,我开始了解许多不同的技术,以及何时何地使用这些技术。我是大二,所以那时候只懂 C 和 C++基础(哎呀)。我用 Python 做了一门关于机器学习的课程,这给了我一个如何用机器学习解决问题的想法。现在,我开始在黑客地球TechGigAnalytics Vidhya 上参加不同的黑客马拉松。我也知道卡格尔,但觉得太难了。我对概念有一个基本的理解,但不是在编码部分,比如使用哪个库之类的东西。

一开始,我无法完成黑客马拉松的问题。但是,即使在黑客马拉松截止日期过后,我还是继续研究同一个问题。通过阅读不同网站的文章和博客,我开始了解不同的概念,并解决了部分问题陈述。

慢慢地,我的步伐加快了,知道了如何解决问题,这时候我也开始提交我的解决方案。我在大学的时候也是这样做的,所以这需要时间,而且我的专业不是计算机,所以我花了更长的时间从不同的博客中学习这些概念。直到那时,python 成了我最喜欢的编程语言,我对机器学习和深度学习的兴趣也越来越大。

许多问题陈述可以通过创建 web 应用程序来解决。所以我开始探索数据库技术,比如 Mongodb 和 AWS 服务,并将它们与 python 集成。我从事过创建前端静态网站的工作,所以我了解 HTML、CSS 和 BootStrap。我参加过乐天黑客马拉松,我们的想法和 Magicpin(优惠券)相似。所以我们创建了一个像亚马逊一样的完整的电子商务网站,它拥有所有的功能。我们使用 MongoDB 作为数据库,HTML CSS & Bootstrap 作为网站的前端,Flask 作为网站的动态,为用户提供推荐系统。作为黑客马拉松的一部分,这个项目让我对整个堆栈开发过程有了一个全面的了解。

我的观点是,如果你有一个最终目标,比如制作一个可供用户使用的应用程序,那么你会学到比在线课程更多的东西。在线课程会指导你,但不会告诉你在哪里使用这些概念。当你参加黑客马拉松时,问题陈述是需要解决的真实问题。此外,很有可能您尝试执行的任务在 StackOverflow 上不可用,因此您需要跳出框框来完成该任务。所以你会体验到这一点,并且明白你的技能有多好。我发现这是检验我的技能和学习的最好方法。

目前,我正处于最后一年,通过用不同的技术制作应用程序来学习新的东西。

这是我想分享的个人经历。

和平。

面部识别是怎么回事?

原文:https://towardsdatascience.com/what-happened-with-facial-recognition-4799d236ab62?source=collection_archive---------93-----------------------

我们知道这有点偏颇,为什么公司现在才踩刹车?

乌曼诺德Unsplash 上拍摄的照片

上周, IBM 宣布他们将不再销售或研究面部识别技术。不久之后,亚马逊宣布他们将停止销售面部识别技术一年,微软也宣布他们将停止向执法部门销售这项技术。这是巨大的。有一段时间,面部识别技术变得更加广泛,许多人甚至使用 face id 来解锁他们的手机。对于一项广泛传播、快速发展的技术来说,突然停止发展是件大事。

发生这种情况的原因是因为这项技术存在难以置信的偏见,既不利于女性,也不利于肤色较黑的人。然而,这并不能解释为什么现在会发生这种情况。正如你可能看到的,我链接的那些文章都是一年前的了。面部识别有偏差已经不是什么秘密了。然而,改变的是公众的情绪和理解。

作为一个在社交媒体上花了很多时间的人,我有很多社会正义的朋友,我看到了很多关于在抗议中该做什么和不该做什么的帖子。我见过流传的一件大事是不要露出你的脸(这更容易做到,因为我们都戴着口罩),并且要极其小心你在社交媒体上发布的内容。这一切都源于这样一种认识,即当局会在抗议活动中使用任何图像,试图在事后很久识别某些抗议者。随着面部识别的使用越来越多,公众越来越了解它能做什么和能做什么。越来越多的人开始质疑它的使用以及它的道德性。当我展示我的关于 STEM 中#MeToo 运动的项目时,我提到了有偏见的技术(这是为什么我们需要在技术背后有一个更加多元化的团队的原因)。我可以说,根据我自己的经验,大多数人只是模糊地意识到这种偏见已经融入了技术本身。现在,我想几乎每个人都知道面部识别技术是有偏见的,并且,在错误的人手中,是危险的。

很明显,公众监督的增加导致了这些改革,另一个原因是这些有偏见的技术改革并不普遍。

6 月 11 日, OpenAI 宣布他们将发布一个 API,人们可以在那里访问他们开发的人工智能模型。这很好,除了 T2 已经有研究表明他们的自然语言世代是性别歧视和种族主义的。当然,你还能从 reddit 数据上训练出来的身上期待什么?

那么,为什么加速器被放在一个有偏见的技术的进步上,而刹车被踩在另一个上呢?很简单,现在大家都知道面部识别了。有了这个更广泛、更博学的社区,一项技术因其偏见受到了更多的审视,公司也相应地做出了回应。没有多少人知道自然语言生成会有怎样的偏差,或者这些偏差会是什么样子。因此,没有人认为 OpenAI 发布供公众使用的模型有什么错。

如果你要提交一篇重要的论文,你不能只是自己看一遍然后再提交。很有可能,你至少会有一个人检查它并给出一些反馈。我们这样做的原因是,我们需要新的和不同的观点,以确保我们的想法站得住脚,或者我们在有效地传达我们的想法。NLG 和面部识别之间的区别很简单,有更多的反馈摆在桌面上,如果这不是让数据科学和人工智能更容易获得的有力证据,我不知道还有什么。

在你能接触到有趣的分析之前会发生什么

原文:https://towardsdatascience.com/what-happens-before-you-can-put-your-hands-on-the-juicy-analysis-80c95ebc14e5?source=collection_archive---------43-----------------------

想从事数据分析师的职业?除了有趣的统计分析,你可能还需要考虑其他一些事情。

伊莲娜·科伊切娃在 Unsplash 上的照片

对于那些有志成为数据科学家或数据分析师的人来说,你有没有想过自己在接受工作后,会花大部分时间做统计分析和机器学习?嗯,是的,或者至少那是我上学时的想象。

但是现实和我想的很不一样!你仍然会花很多时间做分析,但是只有 60%左右。剩下的 40%,你将花在准备和总结分析上。你可能认为是清理数据还是报告?

毕业后,我已经做了两年左右的数据分析师,做了从小到大的不同项目,与不同的技术、半技术和非技术利益相关者团队合作(我说的“技术”是指精通数据分析。)到目前为止,我的经历真的让我大开眼界,这个职业远比我的预期更有趣,因为除了有趣的统计分析之外,还有一些东西。在这篇文章中,我想和你分享在准备分析的过程中你可以期待什么。

如果你想从事数据分析师的职业,但又不清楚自己将从事什么工作,请继续读下去!因为这篇文章真的可以帮你证明这个职业是否真的适合你

1.接受数据请求

接收来自内部或外部不同利益相关者的数据请求,以支持决策过程,这是数据分析师生活的一部分。

但是你的时间是有限的,所以一旦你收到这些请求,有一定的步骤来优先安排你的时间做最重要的工作。

首先,为什么?

第一步是理解请求的上下文。问问你自己和你的利益相关者:

  • 他们为什么想要这条信息?它是否符合公司战略或公司的首要任务清单?
  • 这些信息有多大价值——它会改变他们的思维过程或行为吗?如果信息只是一个美好的拥有,行为改变的机会为零,那么为什么要麻烦呢?

第二,我们可以利用哪些现有信息?

一个很棒的优先排序技巧是遵循 80/20 规则——在任何项目中,20%的活动产生 80%的结果。具体来说,在这种情况下,你能做些什么事而不费力就能回答问题的大部分?

对数据请求的上下文有了清晰的理解后,您现在对数据请求是否真的有助于解决问题,以及是否有任何现有的报告或您可以向风险承担者指出的问题有了更好的认识。

如果没有,并且问题被认为是需要解决的,那么你继续下一步。

2.头脑风暴解决方案

有时候,利益相关者已经确切地知道他们需要什么样的信息,你的工作就是和他们一起集思广益,看看那条信息是否真的有意义,或者他们是否需要从一个不同的角度出发。

其他时候,他们不知道,你的工作是提出想法,并通过识别相关信息来引导他们。

无论哪种方式,这一步都是不可避免的,因为这是确保所有人意见一致的重要一步,也是管理你和你的利益相关者之间的期望的重要一步。

一旦你就解决方案达成一致,把它记在每个人都能看到的地方( JIRA 票,谷歌文档,汇合页,等等)。).

3.触摸数据

但还不是最精彩的分析,只是还没有!还有一些其他的事情要处理。

我在哪里可以得到我需要的数据?

既然您已经清楚了解决方案,现在是时候考虑一些后勤问题了:

  • 需要哪些数据?
  • 你能从哪里得到数据?
  • 可以通过您的数据仓库访问它吗?还是可以通过其他途径获得?
  • 你需要其他团队的帮助来获得这些数据吗?(软件工程师、营销等。)
  • 而如果没有这些数据,可以用代理吗?

我信任这些数据吗?如果有,应该怎么用?

一旦你确定了数据,抓紧自己,你还没有做真正的分析。正如一句老话所说:“垃圾进来,垃圾出去”——你不会想用垃圾数据来提供垃圾见解。因此,数据验证部分来了。

由于数据验证没有对错之分,所以我不会过多地讨论这个问题。根据问题和您正在处理的数据的性质,步骤会有所不同。也有一些非常详细的文章来了解数据验证,比如这个 one (我觉得非常有用)。

相反,我想记下真正给我抓住机会的某些事情。

****首先抓住你:**动态性质 数据结构

是否有任何有损信息?

例如,发票状态可以是今天未结,明天已付—当状态改变或状态将被覆盖时,会有另一行数据吗?如果被覆盖,数据就会丢失。

有损数据的问题在于,分析结果会随着状态的改变而改变,这导致风险承担者如果想要查看一段时间内的趋势,他们的见解会不一致。但是如果他们想看目前的状态,这个数据是可以的。

****第二个问题:**真相的来源

“条条大路通罗马”,但具体在哪里呢——是去罗马圆形大剧场、圣彼得大教堂,还是梵蒂冈博物馆?关键是,可以有许多不同的方法来获得最终答案,但每种方法都会产生略有不同的答案。连接多个表的方式只要稍有改变,就会导致非常不同的结果。

请注意,当前的数据请求可能不是您的利益相关者为支持其决策而查看的唯一信息来源。他们也可以查看其他数据报告。他们比较所有这些信息,并在发现任何不匹配或不合逻辑的部分时提出问题,这是完全自然的。令我们失望的是,没有简单的方法来确保这种情况永远不会发生。

这在很大程度上可以归结为一个好的数据治理策略,它确保了一个干净、精简和可信的数据流。如果做得好,您可以减少验证数据的时间。如果这开始吓到你,不要紧张!因为除非你是公司里唯一的一个人,否则一个好的数据治理策略及其执行是整个公司的努力。

无论如何,我不会在这里深究,因为这不是主要部分,我也不是数据治理方面的专家。如果你发现自己没有这样的策略,两个简单的步骤是:

  • 在您的数据团队中就如何根据业务定义获取某些信息达成一致
  • 记下您在用于分析的每个数据集中看到的注意事项,并向您的利益相关者解释它们

4.最终总结

那上面有很多信息!这篇文章的关键信息是:

作为公司的数据分析师或数据科学家,您是帮助指导利益相关者(内部或外部)使用数据做出决策的专家。该指南的第一步是确保:

  • 你优先安排你的时间去解决你的公司和利益相关者最重要、最有价值的问题
  • 你的涉众看向正确的方向:这个分析或者这个度量与他们的根本问题相关吗,或者他们需要从不同的角度来处理它
  • 你提供给他们的信息来源可靠。为了确保这一点,数据验证是至关重要的一部分

当世界停止的时候 AI 会怎么样(新冠肺炎)?

原文:https://towardsdatascience.com/what-happens-to-ai-when-the-world-stops-covid-19-cf905a331b2f?source=collection_archive---------15-----------------------

新冠肺炎被证明是我们这个时代最伟大的黑天鹅事件之一。这对人工智能、机器学习和数据科学的未来意味着什么?

尤利娅·加达里娜在 Unsplash 上的照片

世界就这么停止了…

嗯,也许不是我们星球的实际轨道和旋转,而是我们大多数人都知道的经济和生活方式。新冠肺炎·疫情以令人眩晕的速度改变了世界各地从个人到政府的一切运作方式。似乎很难相信,在 2 月初,冠状病毒是一个新的流行词,只存在于海外对美国人口的新闻报道中。现在,很明显,这不仅仅是一个标题,而是对全世界每个人和企业的直接和间接威胁。

幸运的是,作为人类,我们有独特的能力在这种时候表现出适应力。即使我们的观点和信仰发生了微小的变化,我们仍然能够从会议室跳到变焦视频会议,而没有额外的沉思片刻。当然,这就是我们如何度过这场极端的挑战,这场挑战似乎是人类自身的直接对手。令人惊讶的是,在大规模封锁、隔离和物资短缺的情况下,世界仍然保持着普遍的文明。我认为这是因为像新冠肺炎这样的敌人让我们看到,是我们团队中的每一个人,而不是典型的国家或商业争端促使人们相互争斗。

一些可能不如我们人类公平的东西是预测和时间序列模型,这些模型在过去 10 年中成为人工智能和数据科学应用的焦点。我要大胆猜测一下,说:

对 2020 年的每一个预测或预言模型,无论是金融、销售、异常、交通,甚至气候,在这一点上都悲惨地失败了

我认为任何声称自己没有的人都可能是后见之明偏差或数据篡改的罪魁祸首。马后炮这次是字面上的 2020 年…

标准普尔 500(8 月 19 日—3 月 20 日)在衰退之前,没有任何模型能够预测到这一点。(鸣谢:市场数据归作者所有)

数据科学界的任何人都可以理解为什么模型不能预测这种动态变化。主要是因为现代统计建模技术是基于对过去趋势的推断进行预测的。与此同时,大多数模型仍然被关在一个偏远的小屋里,只知道当前特定领域的数据。这意味着与我们不同,大多数模型没有得到 12 月下旬肺炎爆发的消息,这是一种新病毒,将悄悄地爆发成全球疫情。像新冠肺炎这样前所未有的现象可能会被证明是旨在预测现实世界的现代人工智能方法的克星。

因为以前成功的模型依赖于几个月或几年的粒度数据,所以需要相当长的时间来适应新的世界动态,以便再次变得有用。由于这个原因,许多行业将把人类拉回到被模型夺走的预测椅子上。在此期间,重要的是要寻找在不可预见的事件中允许模型继续运行的方法,同时为下一次训练修复每个数据集中的大规模异常。

一些例子

金融是一个很容易看到这些模型失败的地方。正如上图所示,每只股票都曾接近历史高点,但在最聪明的公司预测下一步走势之前,突然被击垮。如上所述,几乎所有的收益和目标价格预测都被不久前被算法取代或辅助的人类所接管。现在,新的预测通常以“COVID 调整…”开头

除了金融,还有更多前所未见的异常现象。下面我们来看几个。

中国的氮氧化物空气污染(来源: NASA

COVID 引起的异常现象的一个主要例子是空气质量的变化。从中国开始,全球工厂、商务旅行和通勤的关闭不可避免地导致了氮氧化物、二氧化碳和颗粒物排放的大幅减少。在不知道事情将保持关闭多长时间的情况下,这将被证明是任何时间序列数据集的一次大幅度下降。

选择国际空中交通比较(来源: knoema 免费信息图

受打击最大的行业之一是旅游业。由于限制病毒全球传播的努力,大部分旅行已经停止。考虑到航空公司和邮轮公司目前面临的濒临破产,这对于这些行业来说显然是一个异常现象。这些财务故障中的大多数是由于没有算法或人能够预测到他们的现金流操作的完全关闭。

餐厅食客 YOY 零钱(来源: OpenTable 公开数据

与旅游类似,大多数政府已经强制关闭餐馆或至少只经营外卖业务。这再次引起了从餐馆到预订和评论应用到送货服务的所有事情的震惊。

谷歌搜索“卫生纸”的数据

从一个轻松的角度来看,感兴趣的项目和集体思维购买就像卫生纸一样,是滑稽有趣的变化,在大规模变化的时代,这些变化会向相反的方向发展。你认为 Charmin 的市场分析师在 2020 年的模型中考虑到这一点了吗?

除了天气之外,几乎每个收集数据的行业都有这些异常现象。很快,我们可能会看到互联网活动发生前所未有的变化,向虚拟工作场所的转变,以及电网活动的巨大转变。问题是,这些关键的基础设施是否已经为此制定了计划,因为我们知道这些又是一系列失败的预测。不过,我们很快就会度过这段艰难时期,许多行业将会回归正常。下一个任务将是找到使用新的基于时间的数据集,每个数据集都有自己的大规模下降或峰值,时间长度我们仍然不知道。

使用这些新数据

一天早上,每一位数据科学家、分析师和商业领袖都会去他们的工作地点,不戴口罩,也不渴望接触任何东西后有洗手液。战胜疫情是从过去的大流行中推断出来的,我知道这是正确的。

随着业务恢复正常,总有一天,模型可以按照它们已经习惯的算法方式重新构建。现在唯一的问题是,将会有一个巨大的异常,可能会构成这个集合的一部分,大到不能简单地认为是一个异常值。人工智能、人工智能和数据模型未来面临的最大问题是:“在世界恢复正常之前,我们应该如何应对这段时间的变化?”

理论上的 TP 购买趋势(由 MindBuilder AI Research 提供)

我想到了两个简单的选择,但却充满了矛盾。第一个也是最容易的方法是,如果可行的话,把这部分数据切掉。这显然只适用于跟踪趋势的数据集,而不适用于底层数据的影响。对于气候数据,这可能行得通(中国几乎完全反弹),但对于销售数据等模型,这就行不通了。失败的原因是,将被削减的时间对消费者和企业都有一整个时期的影响,这对下一步是有意义的。这是真的,即使它发生了巨大的变化。例如,在卫生纸购买中可以看到,任何囤积的消费者都会有比正常情况更长时间的供应,从而导致下一个时间段的销售额比正常情况下有所下降。这是从囤积或虚拟化中获益的企业的普遍趋势。

另一个技巧是使用类似于金融业的调整方法。由于到目前为止的混乱,这些计算一直严重依赖于人类的直觉来猜测如果世界没有改变,数字可能会保持在什么位置。可以使用更深入的统计工作,例如基于推理的特征工程。该方法可以将每个 COVID 真实 tilmestep 的预 COVID 投影与异常期间的统计投影平均值进行比较。这可以被认为是以自己的方式平滑。当然,这也有它自己的缺点。在气候的例子中,它会引入一段或多或少带有人为数据的时间。剩下的时间里,每个模型将被训练来模拟一个数据集,该数据集包含的点只不过是有根据的猜测。对此建模可能会在模型假设的冷漠中加入太多的人类偏见。

要更深入地分析处理缺失数据的数学方法,请查看本文。

明天的人工智能

在这最后一节之前,我想说,大多数基于非时间序列的“人工智能”应用程序应该会毫无问题地继续向前发展。这将包括计算机视觉、NLP 和许多其他封闭系统。另一方面,企业在财务上已经依赖的实时系列模型为机器学习和数据科学社区提供了一个警钟。虽然我们作为人类相对较快地适应了我们的新动态,但这些应用程序在这一点上或多或少是无用的。我运行了几个实验性的股票预测模型,它们仍然继续预测第二天股价会大幅反弹至正常水平。

对于这种近乎滑稽的不一致,我并不责怪这些模型或它们的创造者。这些模型只知道世界的常态,而创造者(也就是我)永远也不会猜到世界会像现在这样停止。在这个时候,我们能为统计建模世界做的最好的事情是更加努力地思考如何建立像我们自己一样有弹性的模型。

也许我们对上面讨论的数据所能做的最好的事情是将异常期抽出来,为停工创建一个独特的模型,就像 COVID 已经创建的那样。这可能会创造出一些乱世的首批高科技数据科学模型。同时,我们可以为我们的正常模型提供系统,以我们的方式消化全球信息,随时准备切换到危机模型模式。这听起来说起来容易做起来难,但对于一个计划越来越依赖算法的社会来说,有必要通过后见之明来了解我们现在拥有的数据的价值。

我喜欢在任何斗争中寻找积极的金块。我认为,新冠肺炎带来的冲击将引导人们、技术和企业更好地规划未来。不幸的是,进步似乎总是伴随着战争、基础设施故障和流行病等混乱,但事实是,它们推动了人类生活的许多方面变得更好。随着人工智能、机器学习和数据科学成为我们这个时代最有前途的技术,看到这场冲击给我们带来的推动是很重要的。它让我们看到了人类的韧性,我们应该努力将其植入我们的系统,让它们继续帮助我们在危机结束时更快地走向光明。

要了解更多关于人工智能的现状和发展方向,请阅读这篇文章:

[## 2020 年人工智能的状态

通过了解人工智能的起源来了解我们的未来走向。这篇文章概述了过去…

towardsdatascience.com](/the-state-of-ai-in-2020-1f95df336eb0)

继续和我在 LinkedIn 上的对话!

看看我目前在https://www.mindbuilderai.com做什么

参考文献

[1]https://earth observatory . NASA . gov/images/146362/airborne-nitrogen-dioxide-slumps-over-China

[2]https://knoema . com/infographics/lwylzr/coronavirus-impact-on-us-and-international-airport-traffic-by-advan-research

[3]https://www.opentable.com/state-of-industry

https://trends.google.com/trends/explore?q=toilet paper&geo = US

印钞机走了 BRRR 比特币会怎么样?

原文:https://towardsdatascience.com/what-happens-to-bitcoin-when-the-money-printer-goes-brrr-55024daca80b?source=collection_archive---------16-----------------------

2020 年,加密货币将会沉浮

照片:乔希·阿佩尔

随着比特币的价格在今年迄今为止大幅下跌,将 2020 年视为加密货币起飞的理想时间似乎有些奇怪。信不信由你,比特币的忠实信徒们比平常更加看好 T2,显然对 BTC 两周前经历的痛苦下跌毫不畏惧。为了理解金融环境中酝酿的信心,我们必须后退一步,理解支撑中本聪圣教会的关键故事:

  • 第一,比特币被认为是稀缺和不可改变的——由它的创造者设计成现代货币政策的解毒剂。
  • 第二,比特币应该是世界上最可靠的价值储存手段,数字黄金,当其他市场受到攻击时的避风港。
  • 第三,资源密集型的工作证明系统通过周期性的暂停来保护网络并锁定随着时间的推移而减少的发布。

尽管新冠肺炎给世界和经济市场造成了越来越大的损失,但比特币的这三个关键故事却像星星一样排成一行。

印钞机要坏了

同样的货币政策做法让中本聪十分恼火,以至于创造了比特币。正如各国央行将火力卸给以缓解 GFC 的剧烈疼痛,他们正准备在 2020 年再次这么做。这包括量化宽松——更广为人知的是“印钞”。随着可怕的新冠肺炎幽灵的出现,各国央行正在寻求更大的武器库,储备了数万亿美元。

顺便说一句——一万亿美元是如此巨大的一笔钱,以至于研究表明我们几乎不能理解这个数字意味着什么,更不用说如何量化它和运用批判的眼光了。难怪美国国会的两万亿刺激方案成为正面头条——我们不知道这意味着什么,但听起来政府肯定在做很多事情来对抗新冠肺炎!

借鉴《政治家手册》的一页,美联储在寻求减轻公众担忧和安抚紧张的市场方面走得更远。回到量化宽松政策,美联储在非常短的时间内增加了数万亿美元的资产负债表,现在首次超过 5 万亿美元。分析师认为,美联储可能会在其资产负债表上积累多达 10 万亿美元来支撑市场。

在这一点上,美国的经济领导人似乎准备好了抛出任何不可思议的巨额资金来对抗病毒(前财政部官员字面上指的是美联储可用的“无限”数量的现金)。看,不乏顶级经济学家愿意支持这种激进的方法来抵消危险的经济萧条。尽管如此,难怪“印钞机 go brrrmeme 已经成为传达美联储对 QE 一触即发的方式的一种简单方式。

知道你的热图

毫无疑问,比特币受益于越来越多的人意识到,美元的货币政策掌握在一小撮能够随意控制现金流的银行家手中。

比特币的正统观念还表明,当传统金融市场暴跌时,它会受益,因为它是一种与道指波动不相关的资产。无数比特币的使用者将 BTC 推销为安全港,不仅与传统投资不相关,而且反向相关(即,BTC 的价格不仅不受其他市场下跌的影响,还会在其他资产下跌时升值)。

这种特殊的叙事受到了抨击,随着 3 月早些时候股市在“黑色星期四”暴跌,比特币经历了 50%的噩梦般下跌。不完全是广告中的安全港,尽管 BTC——公平地说——回撤至 6000 美元。然而,新冠肺炎的经济影响才刚刚开始被感受到,大多数分析师预计在最终的衰退中,股市将持续熊市。在加密方面,比特币的支持者正在排队预测“脱钩”,BTC 开始显示出与股票的相关性降低(因此在股票熊市中对投资者变得有吸引力)。

如果所有这些财政和经济动荡还不够,比特币的武库中还有一件武器:备受吹嘘的减半,这一事件适时地将给予矿工的比特币数量减半。大约每四年才会出现一次减半的情况,这是一次供需平衡的奥林匹克庆典。出于不太可能的巧合,下一个减半非常快;预计在五月初举行。

为什么这很重要?比特币的支持者急切地指出了历史趋势,即 BTC 的价值在之前每减半后都会大幅上升。在 Twitter 上关注比特币的影响者,你会看到 BTC 的任意数量的股票到流量图表,这些图表跟踪比特币生产率下降与价格预期上涨的对比。大多数 S2F 分析表明,今年的减半应该会使 BTC 的价格明显上升到 10 万美元(是的,这是目前价格的 16 倍)。

原文中有一句乐观的话是这样的:[“这个数字不是凭空而来的。”](http://To everyone’s relief, no doubt, this figure wasn’t pulled out of thin air.)

简单回顾一下:仅在 2020 年的前三个月,比特币的三个最强叙事可能同时达到高潮:

  • 美联储正在印钞票,数万亿的钞票,并且夸张地说,如果需要的话,它将生产“无限”数量的现金;
  • 股票市场和其他传统投资已经崩溃,数百万投资者在市场进一步下跌的情况下寻求不相关的替代品;和
  • 距离比特币标志性的减半只有一个多月了,随后将出现价值不对称增长的历史证据。

已经到了买比特币的时候了吗?嗯…

比特币的机会之年也是一个存在的风险

这是一年来的第 22 条军规,绝对预示着比特币的乐观前景:本文中讨论的叙述可能被证明是错误的,这将给比特币带来灾难性的问题。

想象一下,今年年底,BTC 将在当前水平上下波动,或略高于当前水平,但仍远低于 2 万美元的历史高点。如果传统投资的牺牲、无休止的印钞和地震般的“减半”都没有激励人们离开舒适区去购买比特币,还有什么会呢?如果比特币教会的基本叙事被证明对采用或价格没有影响,那么加密货币的价值主张到底是什么?

坊间报道显示,机构投资者(钱包鼓鼓的大玩家)对这些问题感到担忧:

比特币的风险不仅很高,而且事关生死存亡。在混乱的一年,比特币投资者完全有理由感到乐观,因为他们最大的故事终于在世界舞台上得到检验。因此,2020 年迫在眉睫,这一年比特币要么沿着轨道飞向月球,要么坠落回地球。

如果你对这类关于加密货币的影响的思考感兴趣,你可能会喜欢我的新出版物, Technocracy 。我将定期撰写关于技术正在改变社会的文章,比如我最近的一篇关于冠状病毒如何让大规模监控成为我们的新常态

如果人离开一个城市,房价会怎么样?

原文:https://towardsdatascience.com/what-happens-to-housing-prices-if-people-leave-a-city-f15f51d01497?source=collection_archive---------68-----------------------

分析新冠肺炎对主要城市房价的影响

波士顿的南端街区

四年前,我搬到波士顿,开始了我的第一份工作,带着新面孔,准备体验这座城市。我很快沿着千禧一代的轨迹,在市中心为一套太小的公寓付出太多。我牺牲了空间和便利来换取进入。

我可以步行 10 分钟去上班,15 分钟去芬威公园,20 分钟去波士顿公园。我被能量包围着。纵观美国,城市的发展是因为人们、娱乐和工作在这些领域结合起来创造了这种能量。

然后,COVID 发生了。许多让我和其他人觉得城市生活很特别的东西,一夜之间就消失了。剩下的是价格和(缺乏)空间,没有城市能提供的许多好处。让一座城市充满活力的一切现在也让它变得不安全。

这让我思考——如果人们离开城市,住房会发生什么变化?根据哈里斯民意调查,如果考虑搬到郊区的 40%的城市居民真的离开了,会发生什么?如果他们中的一小部分做了会怎么样?

考虑房价的一个简单方法是供给和需求。如果有更多的人住更少的房子,价格应该更高,反之亦然。

来源:美国人口普查局

此外,人们搬到城市的速度比他们居住的地方建造的速度要快得多;这是波士顿一直在经历的现象。

2010 年至 2019 年间,萨福克县(主要是波士顿及其近郊)的人口变化率几乎是住房增长的两倍。因此,2017 年,波士顿的租赁空置率约为 3.4%,而全国范围内的空置率约为 7.3%。

2010 年至 2019 年间,波士顿人口数量的增长速度是住房数量的两倍。

我们可以通过分析一个城市的人口与住房比率(每套住房单位的人口数量;供求不平衡的代表)和待售房屋每平方英尺的价格。直觉上,随着人口:住房比率的增加,价值应该增加(理解许多其他因素影响房价)。

例如,在下面的散点图顶部附近标记为波士顿的点。波士顿市的人口约为 692,000,估计有 288,716 套住房,每平方英尺的挂牌价格中位数为 1,009 美元;人口与住房单元的比率(人口/住房单元)约为 2.399。

下面散点图上的每个点是 x 轴上的人口:住房(p:h)比率和 y 轴上的美国居民超过 150,000 的城市每平方英尺的中值标价。

供需标绘在 x 轴,价格标绘在 y 轴。

正如所料,有一个适度的积极关系,但有很大的可变性。为了进一步完善和研究这种关系,我们将超出预测值的值用蓝色表示,低于预测值的值用红色表示。

这种上下分割只是相似值的聚类;我们假设,除了推动价格上涨的人口:住房比率之外,落在这条线以上的城市都有独特之处。例如,一些沿海城镇,如迈阿密或圣地亚哥,人们重视海滩通道。其他城市如西雅图或纽约,因为是大都市而吸引更高的价格。

相比之下,这条线以下的地方“城市般”的环境缩小了(罗得岛州的普罗维登斯和俄勒冈州的波特兰),或者人口数量可能由于居民一年中的部分时间在其他地方度过而膨胀了(亚利桑那州的菲尼克斯和佛罗里达州的坦帕)。

仅考虑那些高于这条线的,我们看到 p:h 比率和每平方英尺价格之间更紧密的分布和关系。线性回归线预测,p:h 比率每变化 1 个单位(例如,从每套住房 2 人到 3 人),每平方英尺的中值价格增加约 165 美元。

这表明,在这些昂贵城市的子集中,p:h 比率和每平方英尺价值之间似乎存在适度的强相关关系。

那么,这对像波士顿这样的地方意味着什么呢?假设住房单元数量稳定,人口减少,波士顿的 p:h 比率将会下降。我们可以通过将波士顿的房价与其今天最接近的替代品和未来潜在的同类群体进行比较,来衡量市盈率下降对波士顿房价的影响。

如果我们以蓝色来看波士顿目前的“同行群体”(示例城市:纽约州纽约市、加利福尼亚州亨廷顿海滩),每平方英尺的平均价格(ppsf)为 813 美元;波士顿现在的股价约为 1,009 美元,比现在的股价有 24%的溢价。如果波士顿下降到橙色的下一个“对等组”(例如新泽西州泽西城、德克萨斯州奥斯汀、弗吉尼亚州阿灵顿),平均 ppsf 为 712 美元。

波士顿目前(蓝色)和潜在(橙色)的同龄人群体以及他们的平均。ppsf。

如果我们假设波士顿也有 24%的溢价,那就相当于每平方英尺的价格为 883 美元,下降了 14.4%。要达到这个水平,需要人口减少 11%。换句话说,物价下降的速度会比人口减少的速度快。

要回答本文开头提出的问题,有一种看似合理的情况,即高消费城市的人口下降重置了供需平衡,将更多权力放在租房者/购房者手中。

相反,城市价格的恶化与郊区价格的上涨同时发生。随着交通状况恶化,城市变得更加安全,郊区生活失去了一些吸引力。现在,我们已经看到了这种趋势的逆转,密度被蔑视,分离被重视。

价格下跌的影响在银行、投资者和近期购房者的风险中最为突出。租赁投资者和抵押贷款经营者正在根据房屋价值和租金的增长进行计算;这在短期内可能不太可能。

城市的短期前景可能是过剩单元冲击市场,因为人们对世界的不确定性做出反应,这将暂时使价格停滞不前。随着第一波不确定性的过去,人们对自己的新住所感到舒适,接下来可能会是一段住房流动性降低和单位易手的时期。最终,一个新的长期均衡将会达成,但我们离它太远了,无法有把握地预测它会是什么样子。

你认为价格会发生什么变化?主要城市的人口?长期影响会是什么?请随时在 jordan@jordanbean.com 通过电子邮件与我联系,或者通过 LinkedIn 与我联系。

资料来源和数据注释:

  • 每平方英尺的房价数据来自市一级的 Zillow。
  • 住房单元数据是使用通过 get_acs R 包获得的 2018 年美国社区调查(ACS)数据估算的。数据是在邮政编码级别获取的(有一定的误差),并根据邮政编码到城市的查找表汇总到城市级别。城市命名约定有时不同于 Zillow 命名约定。对于人口充足的城市,已尽最大努力尽可能匹配两个来源的数据。
  • 人口数据来自美国人口普查局。

数据工程师太牛逼会怎么样?

原文:https://towardsdatascience.com/what-happens-when-data-engineers-are-too-awesome-356001225fc6?source=collection_archive---------56-----------------------

数据科学家变得平凡。以下是一些确保你脱颖而出的步骤。

托拜厄斯·菲舍尔在 Unsplash 上的照片

多年来,一直有将数据工程从数据分析和数据科学建模中分离出来的趋势。从表面上看,这似乎是一项明智的投资。分析师和科学家有时间从事建模工作,并向商业赞助商进行演示。有一个隐藏的不利因素。我认为我们不应该将分析师和科学家与数据来源分开。

标准的经验法则是,数据科学家花 80%的时间清理数据。数据科学家并不便宜。将资源投入到数据工程中是有经济意义的。许多数据科学家讨厌处理原始数据。他们很乐意让工程师去操心数据的来源和格式的调整。很多时候,我是赞同这种安排的。我花了几个月的时间在我的数据分析团队中倡导数据工程角色。我喜欢自动化。有用的干净数据是自动化的关键。当一个优秀的工程师从我们的流程时间中减去 6 个小时,我们会对他们给予应得的赞扬。

那么,我为什么犹豫要不要全力以赴地进行这种结盟呢?原始数据。而不是来自 API 或管理数据集的数据。真实世界的商业数据。这种数据因其警告而令人愤怒。只有终身的主题专家才能真正理解数据的变化以及为什么会出现细微差别。真实数据很难看。工作类别在不应该的地方有空值,有人显示为 158 岁。真的吗?

数据工程师和大部分数据科学家看到这种可变数据都会发出呻吟声。它扰乱了自动化任务,并且不适合我们的算法。我们有时太快去“管理”丑陋的数据和异常值。我们可以自动对空值取中值,并排除客户年龄超过 100 岁的所有行。当我们看到这些客户名称中有些有报价,有些没有报价时,我们会低下头。我们大声问,“为什么?”

我想就数据讲述的故事提出一个观点。如果你搜索得足够多,即使是糟糕的数据点也能说明问题。您可以咨询您的 SME,而不是从 name 字段中删除引号来匹配那些没有报价的行。为什么会这样?如果精通应用的基础编码语言,可以自己找。您可能会发现,客户自己输入信息时,在“名称”字段中不会得到报价。由第三方(如医疗服务提供商)自动注册的客户会显示报价。取决于你正在测量或试图预测什么,这是丰富的数据!这种变化可能会成为客户是否自愿加入该计划的一个指标。这条信息可能不存在于数据库中的任何其他地方。

深入研究数据以识别隐藏特征的能力是一项真正的优势。这可能会让你从其他数据科学家中脱颖而出,在最好的情况下,也会让你的公司从竞争对手中脱颖而出。你需要区分你自己、你的工作和你的结果。另外,侦探工作也很有趣。我个人不喜欢在无法看到和理解构建这些数据的底层代码的情况下使用任何“精心策划”的数据源。

因此,要开始区分您的数据特征技能:

  • 靠近原始数据。它告诉你什么?
  • 在数据工程师自动化 ETL 之前,找到 SME 来讨论不规则性。
  • 研究代码库。如果你不懂这门语言,开始学习它可能会有帮助。自力更生节省时间。
  • 识别全新的丰富功能。提出你的新见解。你的商业赞助商会喜欢的。

当你打破线性回归的假设时会发生什么?

原文:https://towardsdatascience.com/what-happens-when-you-break-the-assumptions-of-linear-regression-f78f2fe90f3a?source=collection_archive---------6-----------------------

以及当你打破它们时该怎么做。

安德烈·利亚科夫在 Unsplash 上拍摄的照片

简介

线性回归是有抱负的数据科学家学习使用的第一批机器学习工具之一。

它很容易实现,其结果很容易解释,背后的数学也很容易理解。

此外,线性回归在数据科学项目中很常见,要么作为基线模型,要么作为探索性数据分析(EDA)的一部分。

难怪每周都会有一篇关于线性回归的新文章发表。

然而,虽然这些文章讨论了线性回归背后的数学和假设,但很少讨论当你打破这些假设时会发生什么。

这篇文章有三个目标:

1.解释线性回归的六个假设

2.解释当六个假设都不成立时会发生什么

3.解释当六个假设中的任何一个被打破时,你能做什么

我假设对线性回归及其假设有一个大致的了解。因此,本文的主要重点将是第二个目标和第三个目标。

线性回归的六个假设

1)总体模型(或模型)的参数是线性的。

下面是一个简单的回归模型,其中 Y 是目标变量, X 是自变量,ε是误差项(模型没有捕捉到的随机性)。

我们所说的“参数线性”是指人口模型可能在目标变量或自变量上有数学变换(平方根、对数、二次),但在参数上没有。

因此,我们的自变量的变化将具有相同的边际效应,不管它们的价值。

2)我们有 n 个观察值的随机样本。

这个假设使我们确信我们的样本是总体的代表。更具体地说,它向我们保证取样方法不会影响我们样品的特性。

3)没有完美的共线性。

独立变量之间没有完美的线性关系。它们可以以某种方式相关联——事实上,如果变量完全不相关,我们就不会将它们包含在我们的回归模型中——然而,我们不应该将一个变量写成另一个变量的线性组合。

4)零条件均值

以独立变量为条件的误差项ε平均等于零。

也就是说,误差项与我们的自变量无关。

5)同伦方差

在统计学术语中,当随机变量的方差为常数时,称为同态方差。

线性回归假设以独立变量为条件的误差项是同方差的。也就是说,

6)常态

误差项正态分布,均值为零,方差恒定。

当我们打破这些假设时会发生什么?(对此我们能做些什么呢?)

1)真实模型是非线性的

具体来说,假设真实模型的形式为

但是我们估计了一个线性模型。

我们的参数估计会有偏差,我们的模型会做出糟糕的预测。

有两种方法可以确定是使用线性函数还是非线性函数来对总体中的关系进行建模。

你可以在两个变量之间创建一个散点图,看看它们之间的关系是线性的还是非线性的。然后,您可以比较线性回归和非线性回归的性能,并选择性能最佳的函数。

第二种方法是用线性回归拟合数据,然后绘制残差图。如果残差图中没有明显的模式,那么线性回归可能是正确的模型。然而,如果残差看起来是非随机的,那么非线性回归可能是更好的选择。

2)我们的样本是非随机的

假设您想测试锁定是否影响了消费者的支出决策。您碰巧在疫情之前进行了一项在线购物者调查,并且您决定在疫情三个月后进行第二次在线购物者调查。

这是非代表性抽样的一个例子。不是每个人都喜欢在网上购物,在网上购物的人可能有拒绝网上购物的人所没有的特质。作为一名研究人员,你不可能知道是这些未被观察到的特征,还是锁定,改变了消费者的消费决策。

一个更好的研究人员会在封锁前随机选择一组 n 人,然后在封锁几个月后随机选择另一组 n 人。如果选择过程是完全随机的,那么这两组人会或多或少地相同。因此,你可以肯定疫情导致了他们支出的变化。

当然,完美的随机抽样是不可能的。因此,在构建回归模型之前做一些 EDA 来确认这两个组没有很大的不同是一个好的实践。(也有不同类型的回归技术可以用来模拟随机性——我可能会在另一篇文章中讨论这些技术)。

(注:政府擅长创建随机数据集。例如,劳动经济学家广泛使用的加拿大劳动力调查(LFS)选择了一个随机的人群。如果你正在寻找一个随机样本,那么就从政府机构中寻找数据集。

3)我们有完美的共线性

假如

而且

在这种情况下,我们的第三个变量是前两个变量的线性组合。

回想一下,多元线性回归通过保持所有其他变量不变来估计一个变量的影响。然而,这种所有其他都等于的假设在上述回归模型中是不可能的。如果我们改变一个变量,比如说第一个变量,那么第三个变量也会改变。类似地,如果我们改变第三个变量,那么第一个变量或第二个变量(或两者)也会改变。

完美共线性的解决方案是删除其中一个变量(在上面的示例中,我们将删除第三个变量)。

4)我们的误差项与我们的一个独立变量相关

如果我们的回归模型与真实模型不同,就会出现这种情况。例如,我们可能认为真正的模型是

事实上,真正的模型是,

第二个和第三个自变量的排除导致遗漏变量偏差。平均而言,我们的斜率估计值 B1 将大于或小于真实值 B1

有两种解决方案。首先,如果您知道真实模型中应该包含的变量,那么您可以将这些变量添加到您正在构建的模型中。这是最好的解决方案;然而,这也是不现实的,因为我们永远无法真正知道真实模型中有哪些变量。

第二个解决方案是进行随机对照试验(RCT)。在 RCT 中,研究人员将参与者随机分配到治疗组或对照组。因为处理是随机给出的,所以误差项和自变量之间的关系等于零。

当然,除非你是一名博士生,否则你很可能没有资金来进行 aRCT。幸运的是,有一些方法可以模拟 RCT——回归不连续性、差异中的差异等。我可能会在另一篇文章中讨论这个问题。

5)我们的误差项的方差取决于独立变量的值

这导致我们的参数方差有偏差。因此,OLS 标准误差也是有偏差的(因为它们是我们方差的平方根)。因为我们的置信区间和假设检验是基于 OLS 标准误差的,如果标准误差有偏差,那么我们的置信区间和假设检验就是不准确的。

解决方案是使用稳健的标准误差。

不涉及背后的数学,稳健的标准误差导致 OLS 的标准误差是同方差的。

在 statsmodels 中,可以将稳健的标准误差指定为 fit 方法中的参数。

OLS(...).fit(cov_type='HC1')

6)我们的错误是非正常的

类似于假设五被违反会发生什么,如果假设六被违反,那么我们的假设检验和置信区间的结果将是不准确的。

一个解决办法是转换你的目标变量,使它成为正常的。这也可以使错误正常化。对数变换和平方根变换是最常见的。如果你想变得有趣,那么你也可以使用 Box-Cox 变换,我在这里讨论。

奖金

只有当我们使用横截面数据时,上述假设才成立。如果我们有面板数据或时间序列数据,线性回归需要不同的假设。

结论

现在你知道了线性回归的六个假设,违反这些假设的后果,以及如果这些假设违反了该怎么办。

现在你可以建立更精确的线性回归模型,你可以用你的新知识打动招聘人员。

有什么变化?微软 Power 平台中无代码解决方案的持续交付方法

原文:https://towardsdatascience.com/what-has-changed-ba0f5ccf2f73?source=collection_archive---------6-----------------------

微软 POWER 平台解决方案

关于使用微软的 Power 平台和 Azure DevOps 持续交付 AI 模型、Power 应用程序和流程的分步指南。

杰西·拉米雷斯在 Unsplash 上的照片

在我最近的故事中,我解释了如何使用微软 Power 平台创建一个无代码的人工智能预测模型,来预测虚拟自行车共享服务的未来租金。

无代码解决方案很棒,这些平台支持的场景也在不断增长。但我们都知道,权力越大,责任越大。

当你的无代码解决方案变得富有成效,并且许多人依赖它时,那么是时候引入更专业的规程了,比如源代码控制和持续交付。

这是一个转折点,因为您现在面临的问题是用 pro-code 重新开发您的解决方案并将其移交给 DevOps 团队,或者说服您的组织即使使用无代码解决方案也可以遵循这些最佳实践。

这是公民开发者会见 DevOps 实践者的地方。

这个故事解释了如何将一个无代码的解决方案自动签入到源代码控制中,并使用连续交付的方法来部署它。这一切都是在 Azure DevOps 的帮助下完成的。

在我们的案例中,这样的解决方案包含人工智能预测模型、底层实体、可视化数据的应用程序以及在新数据到达时调用预测模型的工作流。

所有这些组件都是使用 Microsoft Power 平台构建的。使用以下产品:

  • 高级应用程序
  • 电力自动化(又称流程)
  • 人工智能生成器
  • 公共数据服务

该分步指南解释了以下内容:

  • 将解决方案导出并签入到 git 存储库中。
  • 将解决方案部署到不同的环境中。

在 Power Platform 中组装解决方案

如果你遵循我以前的文章,你可以简单地重用人工智能模型和自行车共享实体来创建你的第一个解决方案。

要构建这样的解决方案,请转到make.powerapps.com,选择解决方案,并点击新建解决方案。填写详细信息并点击创建。

在新创建的解决方案中,点击添加现有的,添加我在上一篇文章中创建的 AI 模型和实体。请随意向您的解决方案添加任何其他现有组件,如 Flows 或 Power 应用程序。

现在,我们有了一个解决方案,它包含了我们希望置于源代码控制之下的所有内容,并使其可部署到其他环境中。

创建签入管道

接下来,我们创建我们的签入管道,它的唯一目的是从它的源环境中导出先前创建的解决方案,并将其放入我们的 git 存储库。

Azure DevOps 中创建一个新项目

将其命名为动力平台,点击创建

作为第一步,我们必须在这个新项目中初始化 git 存储库。为此,我们转到 Repos >文件并点击下面的初始化按钮。这只是将一个漂亮的README.md提交到存储库中。请随意更新文件并解释这个项目是做什么的。

现在我们可以创建签入管道。为此,转到管道并点击创建管道

点击下面的使用经典编辑器链接。

选择您的项目 Azure Git Repo 作为源,然后单击继续。

点击 Empty job 模板,我们就完成了空管道的创建。

添加高级应用程序构建步骤

在接下来的几个步骤中,我们将使用来自 Visual Studio Marketplace 的 Azure DevOps 扩展来与我们的 Power 平台进行通信和交互。

在空管道内,点击 + 图标,搜索动力平台。从市场结果中,选择 PowerApps 构建工具并点击免费获取

您将被重定向到 Visual Studio 市场。点击免费获取为您的 Azure DevOps 组织安装它。

仅此而已。现在我们可以通过这个扩展来处理一些新任务。

导出并签入解决方案

回到我们的空管道,点击 + 图标,搜索 PowerApps 工具安装程序这必须是每个管道的第一步,因为它在运行时下载必要的资源。这一步不需要任何配置。

第二步,我们添加 PowerApps 导出解决方案,它从我们的源 Power 平台环境中导出解决方案。

这一步需要几个参数才能正常工作。首先,我们创建一个到 Power 平台环境的服务连接。

为此,点击 PowerApps 环境 URL 旁边的管理链接。

点击创建服务连接并选择通用作为连接类型。

输入您的 Power 平台环境的服务器 URL 。您可以在管理门户的环境详细信息中找到它。

输入对该环境拥有完全访问权限的任何用户的邮件地址和密码。将连接命名为类似电源平台开发的名称。

点击保存完成。

注意:很快就会有一种更安全、更现代的方法来使用服务原则连接到您的环境。GitHub 已经有一期了,你可以订阅,以便在它发布时得到通知。

回到您的管道,从下拉列表中选择新创建的连接。

接下来,我们必须为这一步配置一些构建变量,这些变量将在运行时自动解析。

解决方案名称

$(PowerPlatform.SolutionName)

解决方案输出文件

$(Build.ArtifactStagingDirectory)\$(PowerPlatform.SolutionName).zip

现在我们再次使用 + 图标添加第三个构建步骤。搜索 PowerApps 解包解决方案并将其添加到管道中。

这一步将解包解决方案 zip 文件,以获得其原始的.json.xml文件。这样,我们可以使用 git 跟踪所有的更改。

同样,我们必须配置一些构建变量。

解决方案输入文件

$(Build.ArtifactStagingDirectory)\$(PowerPlatform.SolutionName).zip

解包解决方案的目标文件夹

$(PowerPlatform.SolutionName)

作为最后的构建步骤,我们向管道添加一个简单的命令行任务。

我们使用这个步骤将下载并解压缩的解决方案存储在我们的 git 存储库中。更准确地说,我们签出我们的存储库的主分支,并将所有的变更提交给它。

echo Commit Power Platform Solution
git config user.email "[build.pipeline@xxx.com](mailto:build.pipeline@leantify.com)"
git config user.name "Build Pipeline"
git checkout master
git pull origin
git add --all
git commit -m "Automatic solution commit"
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" push origin master

现在我们已经配置了所有的构建步骤,我们对管道进行一些更改。

首先,我们允许脚本访问 OAuth 令牌。我们在前面的命令行脚本中使用了这个令牌。

接下来,我们创建在构建步骤中使用的PowerPlatform.SolutionName变量。我们将这个变量设置为我们在 Power 平台中的解决方案的名称,例如BikeSharing

现在点击保存,但是不要排队。

作为最后一步,我们必须允许管道对 git 存储库进行修改。

我们用左下方的项目设置来做这件事。点击仓库,从列表中找到您的构建服务用户。允许参与和创建分支

首次运行管道

随着我们的解决方案到位,我们的管道准备就绪,我们现在可以第一次运行它了。这将下载解决方案并将其置于源代码控制之下。

转到管道并选择先前创建的管道。

点击运行管道按钮并检查设置。

成功运行后,我们可以在 git 存储库中看到解包的解决方案。

建立一个持续的输送管道

既然一切都在源代码控制之下,我们可以开始将解决方案推广到其他测试、试运行或生产环境。

为此,我们像前面一样创建第二个管道。给它起个名字,比如Power Platform-CI-Testing或者其他任何能反映你目的的名字。

再次,添加 PowerApps 工具 安装程序作为第一步。第二步,添加 PowerApps Pack 解决方案,并配置其参数如下:

要打包的解决方案的源文件夹

$(PowerPlatform.SolutionName)

解决方案输出文件

$(Build.ArtifactStagingDirectory)\$(PowerPlatform.SolutionName).zip

这一步只是将解决方案打包成一个 zip 文件,这样就可以将它导入到目标环境中。

第三步,我们添加了 PowerApps 导入解决方案。为了使这一步有效并连接到您的目标环境,我们创建了另一个通用服务连接。

我们像以前一样配置它,但是指向另一个服务器 URL 。同样,这可以是任何其他 Power 平台环境,比如您的开发环境、您的团队环境或者您的生产/客户环境。

对于解决方案输入文件,我们放入以下内容:

$(Build.ArtifactStagingDirectory)\$(PowerPlatform.SolutionName).zip

现在我们已经准备好了管道,我们再做两个配置。我们添加PowerPlatform.SolutionName作为变量,并且我们触发器面板上启用持续集成

后者强制管道在每次有东西提交到存储库的主分支时运行。

保存您的管道,但不要将其排队。

要测试整个流程,请对您的 Power Platform 解决方案进行任何更改,并手动触发签入管道。当第一个管道完成时,第二个管道会自动启动。

在一切运行成功之后,转到您的目标环境并检查要创建的解决方案。任何后续运行都将更新目标环境中的解决方案。你不需要做任何事。

恭喜恭喜!这是无代码解决方案的持续交付。

万事如意!

👉,
塞巴斯蒂安

额外收获:使用 git 命令行跟踪。

现在我们已经将一切置于源代码控制之下,您可以使用 git 命令行来跟踪所有的更改。克隆存储库并使用类似于git log -p的命令来查看最近的更改。

作为一名数据科学家,我通过开发 Django 应用程序学到了什么

原文:https://towardsdatascience.com/what-i-a-data-scientist-learned-through-developing-a-django-app-68350df1eff1?source=collection_archive---------46-----------------------

一次意想不到却很有用的软件开发经历后,我想分享的四件事。

图片由 Unsplash 提供。作者 @markusspiske

在隔离期间,我们都以这样或那样的方式受到了长期禁闭的骚扰。尽管新冠肺炎立即影响了我们的经济系统,但我仍然感到 安全在我聪明的工作数据科学家的角色中。我错了。

我的工作是为一个著名的邮轮品牌生产机器学习模型,旨在控制船队航行期间的环境影响。你可以想象,邮轮业务在当前的疫情和许多相关活动期间有一个粗略的停止。

随着所有活动的停止,我开始把我的时间投入到更多的学习中,开发新技术,并试图建立一个更大的网络。

不过,我的公司为我准备了一张王牌。为了继续全职工作,他们向我提议开发一个与我们合作的梦幻网球应用程序的后端

我并不完全信服,因为我缺乏软件开发的专业知识,尤其是在使用著名的 Django 框架方面。然而,我绝不会尝试构建一个应用程序,但我会继续我的数据科学家之路。这个意想不到的变化让我做了一些我不打算做的事情,也许还能学到新的有用的概念,这将使我成为一名在数据和技术领域工作的专业人士。

这个直觉被证明是正确的,因为我很快就要再次成为一名科学家,我想告诉你我在 Django 发展的这几个月里学到的一些简单的想法。不要担心!这是几分钟的阅读。

编写干净的代码

我已经读了很多遍了,我总是试着写出整洁、清晰的代码。然而,没有什么比在开始之前没有太多的文档或彻底的移交就更改他人编写的代码更能让您理解遵循良好的编程规则有多重要。

很多读到这里的人会说他们非常擅长,就像我以前说的那样。然而,我发现数据科学家编程的方式是关注数据、ETL 过程和结果。我们通常在定义和限定的环境中运营。对软件开发的贡献拓宽了我的编程视野,让我明白了许多小的潜规则,这些规则肯定会在我的日常工作中帮助我。

什么规则?举几个例子:智能评论;代码中函数的顺序和变量的命名;将类细分成包;做好进口,而不是重新发明轮子等等。

可以去看看这本GitHubrepo包含了一个 python 改编的 Clean Code 名著。

IDEs 的良好使用

最近,我读了许多帖子和各种新闻,都是关于通过不同的 ide 来传播数据科学应用程序和原型开发工具的。然而,出于懒惰和方便的原因,我一直使用 Jupyter notebook 来构建我的原型。笔记本是一种疯狂且即时的工具,尽管过去我想变得“酷”并使用真正的 ide 编程,但最终,我还是屈服了,回到了我亲爱的老 Jupyters 身边。

我们可以认为这一点是前一点的子集。我曾亲自使用过 PyCharm 进行开发,我非常喜欢它,尤其是在帮助你编写更高质量的代码方面。有了这个工具提供的所有建议(和错别字纠正),你会觉得你的椅子旁边有一个助手,告诉你哪里出错了。确实不错。

有利于 ide 的一点是可以插入断点并跟随我们程序的流程,以及如何极其容易地填充变量。与所有可以手动插入到代码中的打印和日志列表(我们可以在代码中忘记)相比,结果是更加清晰和更加直接的调试。

我会把 PyCharm 也用于机器学习模型的开发吗?当然不是在初始阶段,但是当初始探索和机器学习模型被定义,你进入代码强化阶段和管道构建时,这是一个很好的选择。

如果对 python 编程的 ide 感兴趣,可以看看这里

Git 版本工具

我一直是 Git 的粉丝,但是,我经常单独工作或者和几个同事一起工作,每个人都有他们自己的项目部分和他们的参考笔记本。一个人写的代码很少会影响其他人的工作。大多数时候,我只需要 Git 来将我的代码保存在某个安全的地方

在这个项目中,我需要关注代码版本,并了解 Git 作为一个强大工具的潜力。我不得不在生产过程中立即进行干预,回到以前更安全的版本,去寻找 bug。我直接控制代码,并在运行和运行之间进行必要的修改。现在情况不同了。

创建与软件主版本平行的分支的可能性避免了以几种不同方式命名的许多文件的产生,正如我们数据科学家所习惯的那样,如“etl_production.ipynb”、“etl_with_new_feature.ipynb”、“model _ new _ v2 _ I _ hope _ this _ is _ the _ last . ipynb”等。的确,这是一次巨大的升级。

如果你想开始使用 Git 和 GitHub,你可以阅读来自 Anne Bonner 的一篇有趣的文章。

API 如何工作

这可能看起来微不足道,但是生产 API 是理解事物如何工作的好方法。这个项目帮助我了解了用户的需求是什么,最好提供所需信息的格式,以及如何优化请求本身的参数

在过去,我必须构建 web 服务来提供一些机器学习模型的输出。出于简单和缺乏组织的原因,我开发了大型 API 来负责整个模型训练过程和结果的生成。这些调用中的每一个都需要大量的参数,而且,混淆的几率很高。我的错误是假设在另一边有一个人类用户,他必须手工填写每一个请求。

现在我倾向于开发小的、可理解的、可调试的 API,这些 API 可以级联,并且易于集成到应用程序中。

此外,我终于明白了处理请求可能遇到的所有不同的异常,并帮助用户理解问题以及制定正确的请求是多么重要。始终检查 HTTP 状态代码

我现在绝对认为自己是一个更好的机器学习工程师!

其实这一点我没有什么参考,你能给我推荐点有意思的吗?

最终考虑

在网络中有一种微妙的优越感,即数据处理人员优于开发人员。我可以向你保证的是开发是一项艰苦的工作,对于许多数据科学家来说,拥有一次或多次开发经验无疑是黄金。我一直认为,数据科学家必须是纯技术人物和商业之间的纽带。然而,知道如何做不同的事情是一个优势,当你把它付诸实践时,可以帮助你预测一个项目或一个简单想法的努力和复杂性。

如果你有时间和可能去编码,那么去做

你有过类似或对比的经历吗?你可以通过 Linkedin 或者下面的评论告诉我。

感谢您的阅读!

10 个月来我对人工智能的了解

原文:https://towardsdatascience.com/what-i-have-learned-about-artificial-intelligence-in-10-months-dd47ede28273?source=collection_archive---------59-----------------------

图像:使用 Canva 创建

总结我在过去十个月里所学到的关于人工智能的一切,包括为了支持我的发现而完成的初步研究。

介绍

在过去的十个月里,我作为一名数字倡导者在实习期间有机会研究和推广新的和新兴的技术。我主要关注工作场所中的人工智能和自主过程,以及它们如何提高生产率。我观察了广泛的行业,以从更广阔的视角增加我的理解。我了解到人工智能将被用来增强人类,而不一定会取代人类。当我们将人类智能和计算智能结合起来时,我们得到了被称为“放大智能”的东西。我也开始了解到,人工智能可以在可持续发展方面为地球带来很多好处,它给了我对未来的很多希望。

我通过撰写关于许多不同行业(如法律、金融、医疗保健、时尚和音乐)的文章完成了许多次要研究,但我决定开展一个主要研究项目,以得出关于我的发现的明确结论。我进行了一项调查,旨在研究人们对进一步将人工智能应用到工作场所的想法和感受。这项调查是由来自不同行业、不同年龄的 92 名 T4 人进行的。这在我研究的时候真的很有帮助,因为我从许多不同的角度获得了意见。我决定使用甲骨文的数据可视化桌面来可视化我的结果,让数据更容易理解。

主要研究:职场的未来是什么?

  • 每个行业的人数

每个行业的人数

我想看的这项研究的第一个要素是每个行业的人数细分,因为这将极大地影响这项研究涵盖的行业范围的结果。我很幸运有 92 个人参与了调查,涵盖了 14 个不同的行业。最受欢迎的行业是技术,这是我在一家“技术”公司工作时所期望的。我还让来自媒体、金融、医疗保健、零售、教育、酒店、餐饮、通信、物流、设施、工程、儿童保育和人力资源等各行各业的人参与了我的调查。

  • 按性别细分的技术行业

按性别划分的技术行业

按性别划分结果也很重要,因为它不仅能让我们了解有多少男性和女性参与了我的调查,还能让我们了解每个行业中有多少女性。开始时,结果一度是 50/50 的比例,但参与我的调查的男女比例是男性 48.9% 和女性 51.1% 。当我按性别对科技行业进行细分时,情况稍微有些不均衡,男性占该行业的 54.9% (紫色),女性占 43.1%(淡紫色)。众所周知,科技行业缺少女性,但这些数字相差 10%,这是我很高兴看到的。

  • 按年龄细分的科技行业:

技术行业和年龄范围

年龄是我感兴趣研究的另一个因素,因为技术行业通常被认为是由非常年轻的人主导的领域,但我想表明这个行业中有所有年龄的人。我还想探究老一代人对新技术犹豫不决的观点,因为这是一个我不同意的概括。最受欢迎的年龄范围是 25-34 岁,其次是 35-44 岁。根据经济合作与发展组织的数据,25-54 岁的人被认为处于“最佳职业生涯”,这是可以预测的。

  • 人们对艾的感情:

人们对更多 AI 进入职场的可能性的感受

令我惊讶的是,完成这项调查的人 100%知道什么是人工智能。我预计会有一些人不知道什么是人工智能,但我很高兴看到每个人似乎都知道它是什么。然而,在让更多的人工智能技术进入工作场所方面,似乎确实存在一些怀疑。大多数人对更多人工智能进入工作场所的可能性持积极态度,79.3%的人持积极态度。相当比例的人( 17.4% )对人工智能进入职场的可能性感到无所谓,既不是好也不是坏,只有 3.3% 的人对此感到负面。

  • AI 提升生活:

你相信人工智能能改善我们的生活吗?

当问人们是否相信人工智能会改善他们的生活时,也有类似的结果。我理解当问人们他们是否相信一台机器能让他们的生活变得更好时的怀疑态度。仔细想想,洗衣机和洗碗机被带进来的时候,他们大概也有同样的怀疑态度。不到三分之二( 63% )的人相信人工智能可以改善他们的生活,超过三分之一( 33.7% )的人选择了“也许”,这确实传达了一定程度的不确定性。然而,只有 3.3%的人选择了“不”,这是对人们及其对人工智能的信任的积极评价。

  • 人工智能取代乔布斯:

你担心你现在的工作被 AI 取代吗?

当问及人们是否担心他们目前的工作被人工智能取代时,普遍的共识是 85.71% 不。正如所料,有一定比例的人确实担心人工智能会取代他们的工作,准确地说是 14.29% 。诚然,人工智能将被用于提高工作场所的生产率,因此它很可能取代重复性工作或那些可以自动化的工作。未来人类需要的工作将是那些需要创造力、同情心和同理心的工作。

总结

我研究新技术和新兴技术的时间进一步激励我继续在技术领域工作。这也让我有机会认识到,如果你热爱技术,你可以进入无限多的行业。我的主要研究项目支持我在过去十个月里完成的次要研究,人工智能将被用来增强人,而不一定取代人。正如丹尼尔·贝尔所说:“像艺术一样的技术是人类想象力的一次飞跃。”

所有观点和意见都是我个人的,与甲骨文无关。

我在攻读博士学位两年后学到了什么

原文:https://towardsdatascience.com/what-i-have-learned-at-the-end-of-2-years-into-my-phd-8ae9273b61e?source=collection_archive---------17-----------------------

迄今为止,我在整个博士生涯中学到的 10 个教训

读博两年过去了,最近一直在反思自己学到的东西。这是一次跌宕起伏的经历。有许多不眠之夜,令人沮丧的时刻,当然,也有许多学习经历。

在本文中,我想与您分享我在过去两年中作为一名数据科学相关领域的研究生所学到的 10 条经验。如果你正计划开始学术生涯,或者你已经开始了,我希望这 10 课对你有用。让我们开始吧。

1.以批判性思维的心态研究文学

重要的是不要停止质疑。

——阿尔伯特·爱因斯坦

Unsplash 上的 chuttersnap 拍摄

你所在领域的相关工作掌握了你需要知道的所有知识。如果你是研究和寻找一个主题的新手,最好的地方是寻找你所在领域的现有作品。但是,记得在阅读别人的作品时要有开放的心态。不要盲目相信一切,总是问问题。想想如果你要解决问题你会怎么做,以及你选择方法背后的原因。

从我开始攻读博士学位开始,我就一直在使用工具对不同的数据集进行基准测试。我曾经遇到过无法重现某些工具出版物中声称的结果的情况。有时,当我联系作者时,一个常见的回答是他们不知道,否则就会受到冷遇。这是当前研究界可悲的事实。许多人在研究质量和数量上妥协。

我不是说每件作品都有问题。也有一些杰出的作品,我尽力把它们作为坚实的基础。

2.总是讲一个故事来表达你的问题

讲故事是将想法融入世界的最强有力的方式。

—罗伯特·麦基

来自 Pixabay图米苏的图片

在计算机科学和生物学交汇的跨学科领域,比如生物信息学,你需要一个故事来解释你在做什么。不是所有的生物学家都是计算机科学家,也不是所有的计算机科学家都是生物学家。

在我读博士的早期,当有人问我研究领域之外的问题时,我会用所有的专业术语解释,最终把他们弄糊涂。这让我重新思考我的解释方法。怎样才能让别人用简单的语言理解我复杂的话题?

后来,我想出了如何用简单易懂的方式解释我的研究课题。我总是试图在现实世界中编造一个与我的问题相关的故事。这使得解释起来非常容易,任何人都可以理解。

3.定义你的范围

你可以做任何事,但不是所有事。

—大卫·艾伦

保罗·斯科鲁普斯卡斯在 Unsplash 上的照片

一个研究领域是一个广阔的领域,可以有许多课题。甚至那些单独的主题也有不同的方向供你探索。你必须选择一个主题,决定你要做什么,并确定范围。如果你试图做所有的事情,那么你将无法完成任何事情。因此,对于你要做的事情,一定要有一个明确的范围。如果你在当前的范围内停滞不前,那么你可以扩展一下,看看还有什么是可能的。

4.将您的问题与现有解决方案联系起来

研究就是看别人看过的东西,思考别人没想过的东西。

—艾伯特·森特-杰尔吉

图片由 Gerd AltmannPixabay 拍摄

在过去的几十年里,很有可能大多数的研究问题都被某人遇到过。类似的方法可能已经被提出来解决你想要解决的问题。如果你像我一样正在做跨学科研究,那么你可以通过借鉴现有工作的想法来建模你的问题。尽管还没有人提出这样一个模型,但基本的东西确实存在。你所要做的就是将这些知识应用到你的场景中,继续寻找,直到你能推断出一个解决方案,或者最终,你证明一个解决方案并不存在!

5.在现实世界中,您无法避免脏数据

数据就像垃圾。在你收集它之前,你最好知道你要用它做什么。

——马克·吐温

克里斯·利维拉尼在 Unsplash 上的照片

你需要根据你要解决的研究问题获得数据。由于我的研究问题与基因组研究有关,我需要包含基因组数据的数据集。

模拟数据集使事情变得容易得多,因为你可以很容易地获得地面真相。然而,当您处理真实数据时,很难确定确切的事实真相。此外,真实数据中存在大量噪声和模糊性,您提出的解决方案可能不会像模拟数据那样完美。你可能要做一些假设,继续你的工作。当处理真实数据时,总有一个界限,没有人知道什么是正确的。

6.尽可能清晰地展示你的解决方案

清晰和简单是复杂和不确定性的解毒剂。

乔治·凯西将军

图片由 janjf93 发自 Pixabay

一旦你想出了解决你的问题的方法,你必须把它展示给社区。我们最常做的事情是编辑一篇文章,并提交给一个会议或期刊。你必须清楚地解释你的方法,不能引起任何混乱。当谈到介绍你的方法时,写作风格很重要。

在展示解决方案时,强烈建议使用视觉提示。例如,你可以用流程图一步一步地解释你的方法。你也可以举一个简单的例子,解释这个例子的状态在你的方法的每一步是如何变化的。此外,您可以使用图表和图示来解释结果中的重大改进。

7.拒绝是正常的

成功埋在拒绝的另一面。

——托尼·罗宾斯

图片由肖恩·马森提Flickr 上提供

一旦你完成了你的文章,你可以把它提交给一个会议或杂志。我们总是鼓励以某个领域的顶级会议和顶级期刊为目标。每年,这些会议和期刊都会收到大量高质量的作品,审稿人会从中挑选一些发表。这真的取决于你作品的展示质量(以及你的运气)。你越能打动评论家,你的作品被接受的机会就越大。

第一次提交时,你的作品可能不会被接受。我的第一篇博士论文被一个会议拒绝了。做研究的时候被拒绝是很正常的。不要把它看做一次失败。将其视为改进解决方案的新机会。即使你的作品被拒绝,评论者也会提供他们的评论。这些意见通常包含

  • 你在评估中没有考虑到的要点
  • 你的方法中不清楚的地方
  • 关于更多可以测试的工具、方法和数据集的建议
  • 您的方法的可能扩展

你可以用这些评论来改进你的工作。我能够根据审稿人的意见改进我被拒绝的文章,并把它发表在我所在领域的一个顶级期刊上。关键是当你的工作被拒绝时,永远不要放弃。

8.你必须获得和发展技能

一个人必须发展拓展能力的技能,让自己超越自我。

—米哈里·契克森米哈

图片由 Gerd AltmannPixabay 拍摄

研究人员是问题的解决者。解决问题,你需要同时具备技术技能和软技能。

你需要编程和统计等技术技能来解决你感兴趣的问题,并提出一个可靠的解决方案。随着目前开源软件越来越受欢迎,如果你生产一个包含你提出的方法的自动化工具,它更有可能被研究社区所欣赏,因为任何人都可以使用它并重用你的代码。此外,您必须使用基于统计数据的适当评估指标来分析您的结果。

你需要一些软技能,比如说和写,来展示你的解决方案。想象一下,你必须向你的小组展示你提出的方法。你需要想出一个清晰的故事,并清楚地介绍你的方法。类似地,当你编辑一份要出版的手稿时,清晰和简单也同样适用。

9.在你的领域保持最新

日复一日,几乎每一分钟,过去都被更新了。

—乔治·奥威尔

图片由皮克斯拜的 Gerd Altmann 提供

每个领域都在进步,每天都有新的事物出现。提出了改进的和有效的方法来解决已经解决的问题。你必须跟上你所在领域的新发展。你可以从这些新的发展中获得灵感并运用到你的工作中。

了解新发展的一个好方法是阅读在顶级期刊和顶级会议上发表的新研究文章。这些高质量的工作可以为你的工作提供有价值的见解。我总是使用谷歌学术来寻找新的出版物,我也加入了 ResearchGate

10.与你所在领域的专家建立关系网

你的关系网就是你的净资产。

波特·盖尔

伊万杰琳·肖Unsplash 上拍摄的照片

会议和研讨会是一些主要的地方,在那里你可以见到你所在领域的专家,并了解他们的工作。你可以通过结识人来扩大你的关系网。一般来说,人们都在寻找候选人加入他们的实验室或与之合作。如果你对完成博士学位后的研究实习或博士后机会感兴趣,在你的人际网络中拥有这些联系将是有益的。

最后的想法

总结这篇文章,这里是关键的要点。

  1. 批判性分析
  2. 讲故事
  3. 清楚地定义你的范围
  4. 与现有工作相关
  5. 处理真实世界的数据
  6. 专注于简单和清晰
  7. 不要因为被拒而失望
  8. 发展新技能
  9. 跟上新的发展
  10. 发展你的人际网络

在过去的两年里,我的监督小组为我提供了宝贵的见解和指导。你应该最大限度地利用你的小组的专业知识。

我希望你能从这篇文章中得到一些有用的东西。请在评论中告诉我你的想法。我很想听听你的经历。

感谢您的阅读!

干杯!

如果您对更多与研究、数据科学和计算机科学相关的经验感兴趣,请随时查看以下文章。

[## 迈向数据科学博士

想升学?这里有一些情报!

towardsdatascience.com](/towards-a-data-science-phd-f2b563a8a682) [## 如何擅长算法?

我作为计算机科学本科生学习算法和数据结构的经历

towardsdatascience.com](/how-to-be-good-at-algorithms-bb1dd19ab54b) [## 自学 Web 开发

我的第一个与网络相关的软件工程项目,以及你如何自己掌握网络

medium.com](https://medium.com/@anuradhawick/learning-web-development-on-your-own-84e9020cd4c2) [## 如何在软件工程中有一个坚实的开端

我的第一个软件开发项目 A-Z 编程体验!

towardsdatascience.com](/how-to-have-a-solid-start-in-software-engineering-158dd9aa02c8) [## 计算生物学和生物信息学研究

子领域,研究领域,数据来源和你可以在哪里发表你在计算生物学和…

medium.com](https://medium.com/computational-biology/research-in-computational-biology-and-bioinformatics-121d92681aad)

我不是数据科学家时对数据科学的了解

原文:https://towardsdatascience.com/what-i-learned-about-data-science-while-not-being-a-data-scientist-363a4ecc0dad?source=collection_archive---------11-----------------------

如何不一定要成为数据科学家才能获得有用的数据科学技能

通过阅读数据科学社区中的许多文章,人们会相信对什么是数据科学家以及他们做什么有一个清晰的描述。成为一名数据科学家被视为一种布尔考虑。你要么是数据科学家,要么不是。

然而,在现实中,即使你获得了“数据科学家”的头衔,你可能也不会专门从事数据科学工作(如果有的话,有时根本不会)。或者,如果您担任的角色没有明确被称为数据科学家,您可能会从事数据科学(或人们所说的数据科学)。

令人欣慰的是,该行业正在经历第一波专业化浪潮,以及之前被纳入包罗万象的“数据科学”保护伞下的角色之间的区别。考虑到即使在行业内对数据科学家的构成也存在困惑,我将不再拘泥于任何特定的头衔(尤其是考虑到他们的流动性),而是寻找机会,在利用数据创造价值的同时。

出于这个原因,而且事实上我是许多从其他职位进入数据科学的人之一,我只想分享我在获得有用的数据技能的经历,在我的职称中有“数据”之前。如果史蒂夫·乔布斯能够回忆起大学辍学时参加书法班是如何帮助他在未来担任苹果公司首席执行官的话,那么我和其他人肯定能够从以前的角色中找到有价值的见解。

咨询

我职业生涯的前四年左右是在咨询行业度过的。这是一个和“数据科学家”一样宽泛而模糊的术语。我从事的是数据工作,但在数据科学以目前的形式存在之前,这是一个漫长的过程。如果我和数字打交道的话,我基本上就是一个电子表格分析师。

然而,咨询职业总体来说还是不错的,我学到了很多技能,这些技能在我过渡到数据领域后会对我有所帮助。其中包括:

  • 模仿直升机-要在数据科学领域卓有成效,你需要从业务需求出发,让你的工作管道浮出水面,并确保它与组织的整体战略保持一致。因此,你将获得一系列工具,这些工具将帮助你识别你的业务中存在的问题,并有效地“乘直升机”。也就是说,从高层次的角度有效地看待问题,考虑其战略含义,并深入细节以理解如何执行。咨询业对此了如指掌。
  • 丰富的软技能:在咨询行业,你不断地参加会议和面试,以获取解决项目所需的知识。我学会了有效地做到这一点的技巧,例如广泛地展开对话,然后缩小到细节(再次盘旋),以及提出挑战性的问题和后续行动,以确保关键假设得到彻底测试。

这也是我发现自己在数据科学领域经常做的事情。你需要利用其他人的知识来更有效地工作(从速度和准确性的角度来看),因此沟通技巧至关重要。

你可能很了解你的领域,但你很可能会跨领域工作,所以你需要学会将人们聚集在一起,围绕你的项目使命团结他们。软技能对实现这一目标大有帮助。

  • 出售你的作品和继续出售。咨询是一种服务行业,你实际上是在交易知识和知识产权。考虑到账单是通过展示知识如何对其他人有价值来支付的,一个人很快就学会了如何关注有价值的事情。数据科学家明智的做法是借鉴顾问的剧本,建立这种明确的联系。

在任何职业中,能够影响和展示你的工作如何带来价值是一项关键技能。推销也同样重要,一旦你完成了一项工作并获得了信誉,你就可以寻找你可以解决的其他问题和机会,并利用你在利益相关者中的信誉来建立对这些项目的支持,从而扩大你的影响范围。

这些是我在咨询行业学到的许多技能中的一部分,在我职业生涯的前 8 年左右,我以这样或那样的形式从事咨询工作,最终进入了数据特定咨询领域。在我的第一份咨询工作后,我去了趟欧洲,在那里我尝试加入了一家初创公司。

所需领域的启动。

创业是一场骗局。我工作过的那家初创公司是一家数据播放器公司,在一个特别受欢迎的领域工作,但是几乎没有在那个领域(或者任何领域——同样,在早期)使用数据的跟踪记录

为了参与这个特别的项目,我不得不建立关系网并努力工作,然后一旦进入团队,我们就不得不一起努力争取并留住客户,完善产品。

我在这段时间学到的主要是如何进入一个非常理想的领域,以及如何通过解决有意义的问题和我直接感兴趣的问题来牺牲眼前的回报以获得长期的利益。我还认识到,充满激情是一种资产,不像相反,你拥有“游戏中的皮肤”,可以像创始人或高管一样处理决策——这是一种宝贵的技能。

然而,我主要了解了如何进入一个竞争非常激烈的领域,这是所有有抱负的数据科学家都在努力做的事情,如果他们试图进入一个与他们的激情密切相关的领域(许多其他人也有这种激情),就更是如此。比方说在体育分析部门工作。或者,如果他们试图做真正开创性的工作。我学到的如何进入一个竞争激烈的领域的经验包括:

  • 从研究你选择的特定领域开始,研究数据驱动决策在该领域的应用有多成熟。找出正在做什么,由谁做。如果这个领域竞争特别激烈,就像直接在这个领域工作一样寻找邻近的机会——开始建立你的关系网和投资组合。
  • 基于你已经做的研究,开始跟踪那些在那个领域特别有洞察力的人,如果可能的话,和他们接触
  • 开始做和宣传与你所关注的人质量相似的工作,最好是从不同的角度(让你的工作与众不同,但质量相似)
  • 学会如何索取,让自己变得有用(并支持自己),即使在没有机会的地方。如果某个数据管理角色突然出现(与你想从事的领域相关),把它当作一个数据主管角色,做些副业来展示你的价值,让人们需要/想要你
  • 学习如何将想法付诸实践。不管你梦想中的 MVP 是什么,为了你所处的地理位置,为了你所拥有的手段,试着把它作为第一步。以体育为例,假设你想为一支 NBA 球队进行数据分析。明智的第一步是联系你当地的大学团队,成为他们运营分析的负责人。
  • 一旦你在你想要的领域有了角色,就开始疯狂地建立关系网,扩大你的影响圈。
  • 你的主要挑战实质上是将下面这句话“我是一名对所述期望领域(即篮球)感兴趣的数据科学家”(很多人)改为…“我是一名对篮球感兴趣的数据科学家,曾帮助过 x、y、z…..而且做了 a,b,c”(很少)。你应该把用尽所有可能的方法来达到后者作为你的目标

这些是我在这个竞争异常激烈的领域工作期间学到的许多经验和技能中的一部分。我接下来会去…

在干草堆里找针

最后,我最后一个不确切地说是数据角色是在一家支出分析公司工作。这是我从战略咨询过渡到更具体的数据角色时承担的第一个角色。对于那些不知道的人来说,支出分析是评估公司在给定时间段内进行的所有金融交易(即大量数据点)并发现任何异常交易的做法。通常,这些交易是错误的,但它们也可能代表欺诈等。

该角色要求您经常处理非结构化数据,并发现数据中的模式。这实际上是数据洞察的一个极好的训练场,因为这项工作的本质是在数据中发现罕见的、未知的信息。坚持不懈,不断开发和测试关于在哪里可以找到价值的假设——是工作的描述。

然而,要理解我带走的两件主要事情,你需要理解这样一个事实,即我所做的专业服务工作很大程度上是基于绩效的。我们的报酬取决于我们发现了多少异常数据点,以及它们的价值比例——一旦我们把它们还给客户。基于这种动态,你必须制定策略,并不断测试假设,看看这些策略是否有效。这里的主要教训与时间管理有关。在后来的数据角色中,我学到的主要经验是:

  1. 学习如何快速远离没有结果的假设——尽早识别这些假设,它们迟缓的根源,并快速切断诱饵,反之亦然
  2. 双倍下注那些知道的。

最后,这纯粹是金钱/时间管理的一课。快速远离那些没有被证明有洞察力和价值的事情,同时从那些有洞察力和价值的事情中获取最大价值。

这是数据科学中的一项关键技能,该领域的任何角色都在以指数级增长,大量数据正被用于分析。在一个潜在的无止境的假设和大量数据集的世界里,管理策略的有效性是非常重要的。

因此,这些是我学到的一些经验教训,在我担任数据分析和数据科学角色时,这些经验教训对我有所帮助。因此,如果你渴望成为一名数据科学家,但目前还不是,请放心,你已经获得了在你的旅程中帮助你的技能,尽管你可能还没有意识到这一点。

这个故事最初发表于这里

我从机器学习中学到的人类学习。

原文:https://towardsdatascience.com/what-i-learned-about-human-learning-from-machine-learning-40ae4fcb747b?source=collection_archive---------49-----------------------

机器学习的原则使我成为更好的学习者。从成为房地产投资者到学习印尼语。

来自皮克斯拜格尔德·奥特曼的照片

(书籍的外部链接都是附属链接,谢谢支持!)

介绍

任何涉足多个领域的人都会注意到,一个领域的原则和元叙事是如何以惊人的频率传播到其他领域的。例如,塞特亚·纳德拉(微软首席执行官)经常在他关于扭转微软的 autoethnography 中比较从板球运动到商业战略的策略。在《有意识的商业》一书中,弗雷德·考夫曼交叉运用了许多布德主义原则到企业领导中。史蒂夫·柯维在《高效人士的七个习惯》中也做了类似的事情,并不时反思他的摩门教信仰。在《被随机性愚弄》一书中,纳西姆·塔勒布将他在金融市场观察到的随机性原则与生活的其他方面进行了对比,包括商业。

这篇论文属于这一类型。我大半辈子都是自学成才的。但在我开始在机器学习领域工作后,我开始理解人类学习和机器学习之间一些有趣但有用的相似之处。现在承认,尽管有关于机器学习(在流行媒体中以“人工智能”的绰号更为人所知)的所有宣传,机器并不像人类那样学习。最近成为头条新闻的大多数令人印象深刻的“人工智能”壮举,当人们拉开《绿野仙踪》风格的帷幕时,只不过是受控环境中的统计客厅把戏——与我们认为的“智能”相去甚远。不,机器不能像人类那样“思考”或“学习”。尽管是人工智能从业者,我仍然是人工智能怀疑论者。

尽管如此,我从机器学习中学到的一些原则帮助我进行了与该领域完全不同的探索,我想在这里分享其中的一部分。这篇文章面向广泛的读者,但也夹杂了一些技术性的阐述。鼓励非技术读者快速浏览这些部分;整个信息有望保持完整。

1.递归神经网络与房地产投资

2018 年初,我决定成为一名房地产投资者。作为一个完全的新手,我知道无知地支付大笔现金会导致不稳定的风险。为了成功,我需要明智地掏出大笔现金,而不是无知地掏出。

我的一个朋友问道:“你怎么知道,你知道的足够了?”就一个主题读一本书肯定是不够的——没有任何背景知识,我无法判断这本书是否有指导意义或过于简单。读两本书也是一样的道理。但是三个呢?需要读多少书?

这是一个合理的问题。没有任何好的方法让小时间的房地产投资者客观地自我衡量他们的能力。鉴于人类倾向于高估自己在某一学科的能力(例如,虚幻的优越感或高于平均水平的效果[2]),这些天生的心理陷阱加剧了这种危险。

这并不是我第一次对一个话题神经过敏,深入阅读,之后至少看起来掌握了一些。我不担心我获取知识的能力。我担心会欺骗自己,以为自己比实际情况更有知识,但仍会不知不觉地投资于危险的盲点。

令人欣慰的是,我能够提出一个跨领域的见解,这被证明是非常有用的,这也是我想在本节中分享的内容。

生成假莎士比亚

我对现代自然语言处理(NLP)的第一次尝试是一个玩具递归神经网络,它可以生成听起来像莎士比亚的文本。它通过处理大量的莎士比亚文本(https://OCW . MIT . edu/ans 7870/6/6.006/s08/lecture notes/files/t8 . Shakespeare . txt)并最终学会模仿它来实现这一点。到目前为止,这个玩具示例已经广为人知,它出现在 Tensorflow 文档中,所以我不会重复代码。感兴趣的程序员可以在这里找到:【https://www.tensorflow.org/tutorials/text/text_generation

这是该页中的一些合成莎士比亚:

来自 Pixabay维基图片的照片

科米纽斯:我会把他抬进去的。

格雷米奥:她有很多。上帝是一个病人。我会给你打电话。告诉你的奴隶,在那里!哦,亲爱的凯文斯,别再来了!

护士:快乐,又来了;一个反对我;他们生活发誓,但栅栏,我有鱼

对于熟悉作者的人来说,这很容易被嘲笑为具有古英语的特征,但显然是假的。然而,该模型显然对莎士比亚戏剧的倾向有一些“理解”。它是怎么做到的?它在自动完成的背后使用了类似的技术:给定一串单词,最有可能跟随哪个单词?如果我给你一个莎士比亚的字符串作为“我恳求 __ ”,你可能会猜到接下来是“你”或其他专有名词,如“Horatio”或“Lucento”。能够用一个有意义的词来“填空”表明对这门学科的熟练程度。

另一方面,如果我们进入一个完全陌生的领域,比如血液肿瘤学,看到这样一句话

免疫受损患者的术后伤口愈合期延长。通常不能等待完全愈合,因为化疗的强度需要细胞毒性 ______。

我不知道下一个空白是什么。(我从 Google scholar 上的一篇随机论文中复制了我没有领域知识的 blurb)。这是一个明显的迹象,表明我在血液肿瘤学方面不够熟练。

如果没有对该领域的一些“理解”,机器学习算法将无法令人信服地填补空白。

因此,我可以说,如果机器能够预测单词序列中的下一个单词,而不仅仅是单个单词,而是整个句子和思想描述,它就对某个主题有一定程度的“理解”。这种对文本的“把握”有一个被称为“困惑”的可量化的度量,感兴趣的读者可以在这里的进行更多的调查。

这是我研究房地产的方法。继续看书,直到我能预测作者接下来要说什么。

不用说,这是一个相当昂贵和耗时的过程。在买第一套投资房产之前,我至少看了 20 本书。值得吗?吹嘘投资成功是不礼貌的,所以我就不告诉读者了。但可以说,今天我仍然热情、积极、有能力去努力。

在这个过程中,我还能更有效率吗?坦率地说,我不这样认为,因为我将在这篇文章的最后一节讨论。同时,我们来谈谈单词嵌入。

2.词汇嵌入与外语学习

作者照片。在巴厘岛,马侃已经去世。你真正的巴厘岛,一只猴子在我头上吃香蕉。

让我们快进到 2020 年,再讲一个故事。几个月前,我决定学印尼语。不出所料,我下载了 Duo Lingo,并开始记忆应用程序教给我的简单短语。

赛亚裙 minum air (我喝水)

塞拉马特·马拉姆,桑帕伊·jumpa lagi(晚上好,再次见到你!)

Kamu mau nasi dengan ayam goreng?(要不要炸鸡饭?)

然后变得很难

诸如此类。我觉得我学得很快,直到我遇到一个障碍。一开始,该应用程序有效地教你短语,而不是单个单词。

大约在第十课的时候,它决定教我一些动词:

伯哈西尔=成功

伯迪里=站起来

Bersaign = compete

Berkunjung = visit

Bekerja = work

Bermain = play

该应用程序将通过提供类似于我 ________ 和他一起的句子来教这个单词,除了印度尼西亚语,所以它将是 saya ______ dengan dia。

但是上下文中几乎没有任何东西表明“访问”、“工作”或“竞争”是更好的选择。这比通过闪存卡学习一个单词好不了多少。由于所有这些单词看起来和听起来都与我未经语言训练的眼睛和耳朵相似,这是一种具有挑战性的学习方法。

当你孤立地学习一个单词时,你不会比死记硬背做得更好,而且你不是在为你真正关心的任务而学习。使用一种语言时,你通常说出短语,而不是单个单词。你不能通过翻转抽认卡与你的外国对话者交谈。因此,跳过背单词,直接学习短语是非常有意义的,印度尼西亚语的 Duo Lingo 在开始时做得很好。学习短语有助于你学习单词。但是如果这个短语过于笼统,你实际上又是在孤立地学习单词。短语赋予单词意义,就像单词赋予短语意义一样。[4]

事实上,这正是语言学家约翰·弗斯指出的:

你可以从一个人交的朋友那里知道一个词——(约翰·鲁珀特·弗斯)

啊,但我不是因为学过语言学才学会这个概念的(我没有),我学会这个概念是因为我从机器学习中学习了单词嵌入

单词嵌入

人类通过单词与现实世界物体或现象的关系来理解单词,以及这些单词如何与其他单词相关联地使用。机器学习,至少在这个时间点上,只理解与其他单词相关的单词。尽管有这种障碍,计算机仍然可以用文字做有用和有趣的事情,这是任何与聊天机器人或数字助理互动过的人都知道的。

打个比方,想象你生来就没有视力。你仍然可以理解“气球是红色的”是一个有效的句子,而“红色是气球”是胡言乱语。同样,在听了足够多的文学作品后,尽管缺乏蓝色的视觉概念,你还是会把“蓝色”和“海洋”联系在一起。为了进一步说明,我们知道人类能够理解像“尽管有上述规定,仍应规定……”这样的短语倾向于出现在法律文件中,尽管我们不能在感官上体验该短语。单词不需要物理具体化才能被理解。

那么机器如何理解文字呢?让我们从最终结果开始,反向工作。考虑下面的图像。

作者照片

看这个情节是有道理的——机器似乎对这些词有一些理解(后面提供代码)。出现在相同上下文中的单词看起来彼此更接近。机器是如何理解单词的,从而能够明智地将它们聚集在一起的?

机器学习中单词之间的关系是通过嵌入来完成的,最著名的算法是 word2vec

在 word2vec 中,每个单词被表示为 300 维空间中的一个点(尽管 300 在某种程度上是任意选择的)。上面的图是 300 维空间“投影”到二维空间。孤立来看,300 维空间中的某个点几乎没有解释,基本上是无用的。

没有 300 维的界标来把这个词放在上下文中。然而,如果计算机学习单词如何相互联系,它将能够把单词放入与它们的相互上下文相对应的簇中。正如语言学家所说,机器将通过它所保持的伙伴来认识这个单词。单词被循环定义对机器来说并不比对人来说更困难。

如果机器正确地学习了这些单词,类似的上下文单词将会彼此靠近出现,就像它们在上面的情节中一样。在机器开始学习之前,每个单词本质上都处于随机位置,当机器阅读大量文本时,它必须在 300 维空间中迭代地重新排列单词。经过足够的重新排列,这些点将以有意义的方式相对于彼此定位,即使它们的绝对位置仍然毫无意义。

确切的实现细节可以在其他地方找到,但粗略地说,该算法接受大量文本并随机删除句子中的一个单词。然后,算法会尝试猜测缺失的单词。它一遍又一遍地这样做,并且随着每一次连续的猜测,它更新隐藏单词的 300 维位置。它对语料库中的所有单词都这样做。当单词在 300 维空间中移动时,它们最终汇聚成簇和结构,模仿它们出现的上下文。

机器(或人类)无法从一个单词孤立的 300 维点表示中理解。它只知道它与其他单词的关系。因此,当你作为一个人学习一门语言时,你不应该太在意这个单词在思维空间中的确切位置,而是它如何与这个空间中的其他单词相关联。

下面是生成上图的代码:

作者照片(Github Gist)

剩下的就在这个链接里:https://github . com/jeffreyscholz/Blog-word 2 vec/blob/master/Blog-word 2 vec . ipynb

应用单词嵌入

如果你想知道我是如何绕过这个应用程序已经演变成的闪存卡教育的,我的一个印度尼西亚朋友介入了,给了我印度尼西亚民歌和童谣让我记忆。音乐可以帮助记忆是一个单独的话题,但是这种方法让我了解了单词所保持的上下文。

谢天谢地,我的室友不懂印尼语,所以他不知道我在唱一只坐在窗户上的鹦鹉,或者爆裂的绿色气球,或者其他幼稚的傻事。事实上,我确定我在他听起来很老练。果然,我发现从令人难忘的句子中回忆单词比从像我和他在一起这样没有上下文的短语中回忆要容易得多。

将这种方法进行逻辑总结,我试图在尽可能多的不同上下文中看到印尼语单词,这样我就可以通过他们保存的公司来学习单词——或者非常书呆子,在我的脑海中反复形成印尼语单词的 300 维表示。实际上,这意味着与导师互动,听该语言的音乐,阅读关于该主题的不同教学书籍,等等。当然,一个通晓多种语言的人不会觉得这个结论有什么了不起——当然,一个人应该沉浸在一门语言中才能有效地学习。啊,但是作为一个有经验的语言学家,我并没有发现现象,我通过从机器学习中引入它的类似物重新发现了这个原理。

3.人类和机器的学习有不可简化的复杂性吗?

图片来自维基百科,公共领域

回到我学习房地产的旅程——除了阅读所有这些书之外,有没有一种不那么费力的方式来开始这项努力?说到痛苦的学习,如果学习一门语言时没有那么多重复、精神紧张和社交尴尬就好了。

但当我们考虑机器如何学习时,它同样野蛮,如果不是更野蛮的话。实践中的机器学习包括购买一堆昂贵的硬件,收集大量数据,消耗大量电力,然后砰——算法学习数据中的模式。当然,令人印象深刻的结果有时会成为一个很好的标题,但在看过香肠是如何制作的之后,这些结果似乎并不神秘。正如我在介绍中提到的,我认为许多“人工智能”是受控环境中的统计游戏。

在各种情况下,我都在思考是否有某种方法可以将海量数据输入到一个聪明的算法中,并直接跳到模型的参数上,使模型能够做出有用的预测。

关于计算复杂性的技术讨论

例如,在线性回归中,“理解”一个数据集所需的参数通常可以用下面的公式“一次性”解决:5

这里,X 是您的数据集,其中每一行是一个数据点,y 是该条目的标签。矩阵求逆相当快,可以在 O(n^2.376 时间内完成。[6]然而,能够产生令人印象深刻的文章的“令人印象深刻的”神经网络(GPT3、威震天等)是在大约 40 千兆字节大的数据集上训练的,因此 X 乘以它的转置将远远超过千兆字节的平方——这肯定不适合任何计算机的内存。另外,我们这里讨论的是线性回归,神经网络不是线性的。尽管解析求解线性回归的算法在时间和空间上都是多项式,但人工智能中使用的数据集的庞大规模使得解析或“好”解决方案不可行。

非常技术性的讨论:如果一个问题是“np-hard”或“polytime ”,这并不太相关。人们可以找到 np-hard 问题的相当好的近似解决方案——尽管旅行推销员问题是 np-hard,但 USPS 可以有效地递送包裹。同样,当 n 很大时,一个需要 O(n)时间精确解决的问题是不容易处理的。即使在相对无害的 O(n)空间需求的情况下,上述问题也表明,如果数据很大,数据甚至不适合计算机。在这两种情况下,都需要考虑现实世界资源约束的近似解决方案,但这必然会造成计算瓶颈。

这个线性回归的例子说明了手头更大的问题。

计算复杂性的含义

我不会在这里深入研究计算学习理论,因为我认为这将不必要地分散我想表达的观点。但是仅仅看一下数学、计算复杂性和统计学,我们就可以发现许多类问题没有学习统计模式的“好”方法。也就是说,给定一个我们希望机器理解的数据集,我们可以从数学上证明,不存在一种让机器发现模式的优雅或有效的方法。发现这种模式的唯一方法是从胡乱猜测开始,然后通过一次又一次地反复迭代数据,慢慢地改进这种猜测。当有大量数据时,这将成为一个非常缓慢且昂贵的过程。

如果我们可以证明,没有数学上优雅而有效的方法让计算机从大型数据集学习,那么当我们花很长时间学习感兴趣的主题时,我们不应该对自己感到沮丧。阅读大量房地产书籍或试图理解一门外语的痛苦涌上心头。

似乎有一条基本定律被编码到宇宙中(正如我们目前理解的数学所定义的),即将大量信息提取为简洁的可描述模式需要花费与数据大小成比例的最小量的能量——无论是机器的计算周期还是人类的学习时间。对于相当大的“数据集”,如房地产或语言学习,最小能量可能相当大。这是无法回避的。正如不可能在少于 O(n log n)的时间内对一个无界整数数组进行排序一样,不花费一定的精力也不可能“理解”一个数据集。

这当然提出了一些哲学问题,关于人类能获得多少知识的极限。但实际上,我觉得这很令人欣慰。当我遇到一个要花很长时间才能学会的题目时,我不需要把困难完全归因于我迟钝的才智,也要归因于宇宙神秘的形而上学属性:在数学意义上,学习通常是可证明的困难。

结论

同样,这并不是说机器学习和人类学习有什么相似之处。具有传奇色彩的计算机科学家埃德格·迪克斯特拉(Edsger Dijkstra)指出,“计算机能否思考的问题,并不比潜艇能否游泳的问题更有趣。”正如我在引言中指出的,作者们已经写了大量关于体育、宗教、概率和商业等不同领域之间的相似之处。我相信机器学习和人类学习之间的相似之处就在于此。完全不同,但有时有趣且有启发性。

你见过机器学习和人类学习之间的其他相似之处吗?请在评论中分享!

另外,我计划接着写一篇关于知识升华的文章。那原本是这个里面的一部分,但是它让整个作品变得太长了。敬请期待!

脚注

[1]链接为附属链接,谢谢支持!

【2】虚幻的优越感。访问 2020 年https://en.wikipedia.org/wiki/Illusory_superiority

3 阿恩·西蒙等人。艾尔。用抗菌蜂蜜护理伤口。https://www . research gate . net/profile/Kai _ Santos 2/publication/7684399 _ Wound _ care _ with _ antibility _ honey _ medi honey _ in _ pediatric _ hematology-oncology/links/564c 74d 008 aeab 8 ed 5 e 990 b 6 . pdf

[4]我在这里忍住讨论维特根斯坦语言游戏的冲动,但有兴趣的可以在这里进一步阅读:https://en . Wikipedia . org/wiki/Language _ game _(哲学)

5我想在这里感谢我从https://stats . stack exchange . com/questions/23128/solving-for-regression-parameters-in-closed-form-vs-gradient-descent中得出这个插图的帖子

[6]数学博士。矩阵求逆的复杂性。2020 年访问了http://mathforum.org/library/drmath/view/51908.html

我在 4 年的在线数据科学课程中学到了什么

原文:https://towardsdatascience.com/what-i-learned-after-4-years-of-online-data-science-courses-c3a6a13bd36f?source=collection_archive---------11-----------------------

来自数据学习冒险的观点

paweczerwi ski 在 Unsplash 上的照片

(注:所有观点均为本人)

介绍

实际上,我从未打算在数据科学&分析的广阔领域工作;那是 2016 年,我即将从一个 3 年制的商学学士学位毕业,当时这个学位的课程中很少有编程课程。

在结束了毕业前的最后一门考试后,最后一项未完成的工作是我的论文,它侧重于西方公司和亚洲公司之间的 M&A 交易的比较分析。我想分析东西方文化差异在多大程度上决定了 M&A 在股市的表现。

我记得必须处理和收集这些交易的大量数据,并发现在 Excel 中预先进行数据清理和处理被证明是相当笨拙的,对于我想要实现的特定任务来说肯定不是简单明了的。我想知道是否有更好的解决方案能让我更快更有效地得到最终结果。我听说过同学们使用 Python 和 R 来解决这类任务,所以我开始做我在接下来的几年中会多次做的事情,无论是在学习、研究还是在个人项目中:我被卡住了,最后停在了 StackOverflow 上。

在那里以及类似的网站上,我找到了许多在线编程课程的参考资料,因此我一头扎进去,希望从中获得一些提示,以加快对我的 M&A 论文的分析。

从那以后,我从未停止过学习,虽然我仍然非常努力,但我在这里分享了我在这一路上学到的一些关键知识,希望能激励你保持动力和兴奋,继续你以数据为中心的学习之旅。

进步是非线性的

paweczerwińskiUnsplash 上拍摄的照片

一个人技能的提高,和课程量、学习天数不成正比。有很多时候,我觉得课程的概念(函数作用域和面向对象编程)太脱离我当初为什么学习材料的实际原因(学习 R 语言中的 5 种数据处理方法,以便我可以继续我的论文),而其他时候情况正好相反,因为我发现概念在实现中太根深蒂固(“什么”),没有必要的理论背景来维持内在的理解(“为什么”)。

不管怎样,我发现这种短期的挫折感逐渐减轻了,因为一两年后,我会遇到另一门课程,这门课程会让我把我以前在大脑中记录的概念之间的许多点联系起来,但只是交易性的,没有真正消化这些材料。

本质上,如果你觉得预先定义的一系列课程不能简单地“修复”你的知识差距,不要绝望。概念内化需要时间,随之而来的是对概念的掌握(或者至少我愿意这么认为)。

理解是复合的

丹尼尔·利维斯·佩鲁西在 Unsplash 上的照片

我喜欢将某个主题或课题视为一个单一的构件,它在学生的知识库中占据其逻辑位置,然后学生有机会将新元素用于他/她喜欢试验和工作的任何应用领域。

随着学生掌握的积木数量的增加,潜在项目和实验领域的范围也呈指数增长,因为学生在他可以利用的积木之间建立了联系。这激发了学生的热情,也增强了他们学习更多知识的愿望,以不断增加某项技能的应用数量,这种技能是流动的,总是在朝着更大、更全面的方向发展。

由于数据科学和数据分析主题在很大程度上处于实施阶段,而不是纯粹的学术研究,因此非常鼓励学生以项目的形式很好地应用这些知识模块,如果成功,将导致创业努力、行业用例、酷博客帖子、有用的 GitHub repos 等..,从而在整个学习过程中产生积极的溢出效应。

认识到自己的无知= f(学习时间)

阿吉达·ATZ 在 Unsplash 上的照片

我研究得越多,就越意识到我只是触及了需要了解和吸收的东西的表面,我所知道的只是工业、学术界以及两者之间的知识海洋的一小部分。这真的很令人兴奋。

数据科学工具、框架和编程语言的数量在不断增加和发展。与此同时,越来越多的国家正在资助人工智能教育和实验研究,推动新的发现和应用领域,然后转化为新的行业用例和创业努力。

这是一个令人兴奋的领域,许多人和我一样,都想成为其中的一部分,在这种环境下,个人对知识的巩固充其量是流动的,这意味着人们只能学到这么多,主要是因为正如我们所说的那样,该领域的突破性进展正在开发中。

因此,我在这里喜欢采取的个人方法是,专注于接受自己的认知局限,但同时专注于为成为一个严肃创新和相关领域的一部分而感到兴奋,在这个领域中,一个人必须沿着与她/他自己的个人情况、行业偏好和专业领域最相关的路线开辟出她/他自己的个人道路。

本质上,我相信数据科学中有一些令人兴奋的东西。诀窍是不断学习探索一个偏好的利基市场,并学习如何在其中茁壮成长。

合作扩大了知识的增长

照片由乔希·卡拉布雷斯Unsplash 上拍摄

参加课程和学习班固然很好,但也许没有什么比与能够提供不同观点来解决问题的人一起从事很酷的项目更能巩固学习了。

协作为其他人如何处理和解决问题提供了机会,并提供了社交互动的额外好处,许多人需要在学习过程中感受和保持联系。

因此,不仅从教科书和书面材料中学习,而且从别人的直接经验中学习也是非常重要的。不得不专注于让别人解释一个概念提供了一个从以前忽略的角度看待主题的机会,迫使自己跳出传统的思维方式。另一方面,向他人解释概念会促使你专注于本质,并整理你的思维,这进一步巩固了学习。

我有很多“灵光一现”的时刻,听别人向我解释他们的代码,以及他们为什么以这种方式构建代码来解决某个问题。

最重要的是,协作可以为你的学习之旅增添更多乐趣。越早认真考虑越好,因为无论如何,这个领域是高度合作的,你必须善于与他人合作,才能在你最终追求的任何努力中取得成功。

概括起来

学习数据科学一直是一个非常有趣和有益的旅程,尽管我仍然处于其中。

为了减轻(不那么)偶尔的失落感,我发现制定一个学习计划是很有用的,这个计划也考虑到了全局。

这包括:

  1. 认识到进步是非线性的,你不会简单地马上理解任何事情。如果你坚持下去,你通常会在以后连接许多点。
  2. 明白增加新技能会使你能用它们做的事情组合起来。在处理新问题的时候享受乐趣,这些新问题结合了最近和最近获得的知识块。
  3. 意识到自己是一个不断发展的领域的一部分。发展部分专业知识是可以的。享受攻击你最喜欢的利基。
  4. 与充满热情的人在一起学习,加速和丰富你的学习。做一块海绵。

感谢阅读!

访问我的免费数据科学资源清单 这里

[## 通过我的推荐链接加入 Medium-Edoardo Romani

作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…

edo-romani1.medium.com](https://edo-romani1.medium.com/membership)

作为一名数据科学家工作一年后,我学到了什么

原文:https://towardsdatascience.com/what-i-learned-after-one-year-working-as-a-data-scientist-99773296de25?source=collection_archive---------36-----------------------

商业科学

原来有很多事情我希望我以前就知道…

照片由鲁斯兰·布拉卡派克斯拍摄

介绍

2019 年 10 月开始了我作为数据科学家的旅程。在这里,我想分享我的经验,技巧,以及我希望我以前知道的事情,以避免你被烧伤。

10 月初,我在 Evo 担任数据科学家将满一年。利用应用于零售和供应链行业的尖端技术,创造出令人惊叹的工具。

今年是不可思议的过山车,我学到了很多东西,我认为自己非常幸运能够成为令人敬畏的团队的一员,这个团队力求完美,同时乐于助人,激励人心并且能够胜任

你是和你相处时间最长的 5 个人的平均值。

嗯,我不知道这是真的还是假的,但如果是真的,我肯定会去争取。

最让我害怕的事情之一是当疫情(以及封锁来袭时:我害怕我将无法像以前那样交付,因为缺乏办公环境、同事,以及向你旁边的同事寻求帮助的可能性就这样一天天地消失了。

照片由 Pexelscottonbro 拍摄

幸运的是,和往常一样,这只是一个习惯的问题。我们通常天生害怕新事物,然而,一旦我们落入水中,要么我们(试图)游泳,要么我们下沉。

我希望我以前就知道

学术界之外,或者更明确地说,在专业环境中从事数据科学有许多不同之处,这些不同之处并不总是被教授或解释:

  • 在专业环境中,你不是专注于单一技术(如 Python)的而不是,而是处于不同技术(SQL、Docker、R、Python、Bash……)的集合体 T10 中。
  • 有时候旧的电子表格就是这样:管理者并不总是熟悉开发工具,比如pandasdplyrmatplotlib

照片由energepic.com像素拍摄

  • 你必须能够展示衡量一切:有时你需要独自完成任务,而你的队友对任务了解不多,甚至不知道你参与解决任务的技术。准备好写下结果,并能够提交衡量工作影响的报告。
  • 机器学习不是黑箱:如果交付一个解决方案,其中包括一些在后台运行的机器学习,你必须能够解释理解模型创建的每个预测。
  • 每个人都有自己的看法和观点:能够倾听并尊重他人的观点,并且永远准备好改变你的想法。
  • 通常你需要后退一步:当开发一个产品的单一特性时,很容易让不知所措,从而失去对项目的关注。这是非常危险的。永远记住你为什么在做一件特定的事情,并把它当作拼图中的一块。不是独立的实体。

来自 Pexels伊万·贝尔托拉齐的照片

  • 不要成为的粉丝:我们都有自己喜欢的技术、库、云提供商或框架,然而有时候,我们没有可能使用我们喜爱的工具,因此准备好并接受你需要使用(和从头开始学习不同的堆栈的情况。

记住,作为一个大三学生,你不必什么都懂一点,而是什么都懂一点!

  • 你将经常需要使用电子表格进行不同的操作,最后但同样重要的是:电子表格(仍然)经常是随身携带的报告工具。熟悉诸如透视表格、VLOOKUPIF、创建(和格式化)图表等操作。
  • SQL:我无法提及(至少)了解 SQL 的基础知识有多重要。数据通常存储在数据库中,这意味着熟悉 SQL 是必须的。熟悉联接选择语句、分组依据至少一种 SQL 风格(MySQL、MSSQL、Redshift)。

来源:维基百科

  • 了解不同的技术如何相互通信。在处理一项任务时,您可能需要连接到数据库以获取数据,请使用您的 to-go 语言轻松连接到数据库。
  • Bash/Powershell 脚本:你很有可能会遇到像CRON乔布斯这样的事情。熟悉 Linux 和 bash 环境,并学习如何从终端使用参数启动脚本,这是脚本启动的频率。

你总有一天会听说的…

  • 另一个非常常见的情况是,当数据来自一个 API 时,有必要了解 API如何工作,更具体的概念,如令牌认证、JSON 和 HTTP 代码。
  • 如果数据没有存储在数据库中,或者来自 API,那么您很有可能会使用存储桶,存储桶是由 AWS 提供的简单存储服务,用户可以在其中存储不同的文件,例如.csv,图像等等。

如何使用 S3 铲斗的示例。

  • 处理数据:在学习或大学期间,我们被教导如何从.csv等文件中读取数据,我们调用.read_csv等小函数,自动准备好数据进行操作。在现实生活中,通常情况下,你根本无法完成这样的事情。数据收集太大而不适合内存,以及不同的策略,例如以块的形式读取文件,使用像 T2 这样的技术,或者处理更小的数据样本。
  • Docker:为了让整个团队走上正轨,避免开发和生产环境之间的依赖问题,或者简单地避免臭名昭著的短语“它在我的机器上工作”,Docker 提供和基础设施管理环境(称为容器)。我建议你熟悉 Docker 及其基本命令,如docker-composedocker-build,并了解什么是注册表。这会节省你很多时间。

来源:RSAConference 2019

结论

正如前面提到的,很多时候,这只是一个习惯的问题。不要害怕学习新事物或者弄脏自己的双手,记住永远接受批评倾听别人的,最后:不要害怕“打破东西”。

最后,我知道学习新事物时很容易不知所措,有成千上万的资源、文章、视频、课程,当菜单太长时,选择变得越来越难,然而:

记住,你不需要把它做对,你只需要让它开始。

**I have a newsletter 📩.**Every week I’ll send you a brief findings of articles, links, tutorials, and cool things that caught my attention. If tis sounds cool to you subscribe.*That means* ***a lot*** *for me.*

[## 米尔斯形式

编辑描述

无情-创造者-2481.ck.page](https://relentless-creator-2481.ck.page/68d9def351)

作为一名管理大型开源项目的大学生,我学到了什么

原文:https://towardsdatascience.com/what-i-learned-as-a-college-student-running-a-large-open-source-project-daba07a72e7b?source=collection_archive---------39-----------------------

去飞溅

办公时间

我的名字是帕拉什·沙阿,我是 Libra 的作者:一个机器学习库,让你用一行代码建立和训练模型。我也是弗吉尼亚大学的本科生。

我在开源社区的旅程始于一名普通的大学生——课后我在宿舍里做我的图书馆工作。但很快,它开始成长为比这大得多的东西,在不到一个月的时间里从 0 到接近 2000 颗恒星。突然间,它被用在卡内基梅隆大学和麻省理工学院的几门机器学习课上。

作为一个以前在技术行业没有专业经验和/或人脉的人,与这个领域的其他人相比,我启动这个项目的经历是独一无二的。以下是我在建设这个社区过程中最大的收获:

平等对待你的团队成员。

运营一个开源图书馆就像运营一个志愿者组织。你的参与者是出于个人兴趣,他们在你的项目上投入时间没有社会或金钱上的收益。与其让他们尊重你,不如让他们尊重你。你应该尊重他们的意见:不要拒绝可能符合你目标的改变,而是将这些想法塑造成可部署的东西。尊重他们的时间:在某些功能应该何时完成方面设定崇高的目标,但是记住要非常灵活。

在 Libra,我有一个系统,每个贡献者每周完成一个小功能。设置这些时间框架是为了确保项目稳步前进,而不是迫使开发人员更加努力地工作。你的成功在很大程度上取决于你的贡献者,因此,他们支配你的时间表,而不是相反。有明显的区别;了解这种分离是运行自己的开源项目的关键。

让每个贡献者/团队成员感觉自己是使命的一部分。

当你远程参与一个项目时,项目的目标可能看起来很遥远或者不可连接。亲自在一家公司工作,你开始理解这个集团的文化和使命。因此,运行一个开源项目,你很可能永远不会遇到你的贡献者,你必须模拟这种文化,让你的开发者感觉他们是整体目标的一部分。

在天秤座,我意识到即使是最小的手势也能产生重大影响。当你有了发布,在发布说明和你的 Slack 社区中感谢贡献者。通过经常与每个贡献者就他们正在做的事情进行一对一的交谈,来保持与他们的个人关系。

让每个人都参与进来,不论经验。

经常会有没有经验或经验很少的人加入你的社区,并希望做出贡献。有时,让他们快速工作的努力可能比他们完成的实际工作要大。没关系。你的项目活着,呼吸心跳可能几乎没有生命,如果你让这些新人加入,它只会保持生命。他们和他们的朋友谈论他们参与的事情,他们最终可能会加入。项目中的每个人在某些时候都是有价值的。

通常,缺乏任何机器学习实际经验的开发人员加入 Libra,并要求参与进来。我对此的解决方案有点古怪,但似乎很有效。他们可以随时问我问题,我有一个问题频道,这样新来的人就可以获得大量已经回答的问题。

寻找其他宣传渠道。

不要把自己的宣传局限于你的社交渠道。有很多不太受欢迎的方法可以让你的 GitHub 项目受到关注。鼓励你的贡献者和/或你认识的人在你的工作中写一些中等或中等水平的科学文章。你也可以去 madewithml.com 的或者 producthunt.com 的或者看看。就个人而言,天秤座在 madewithml.com占据了大约一周的第一名,这极大地提高了关注度。这可能不会从本质上增加牵引力——至少对我来说不是。不过,它给我的项目带来了足够多的明星/浏览量,让它出现在 GitHub 趋势页面上,在那里它爆炸了。

参加每一次会议,每一次聊天,不管是谁在问。

随着你的项目开始受到关注,会有人希望与你进行专业交流,但也只是为了了解软件背后的人。不要从利益的角度来看待这些会议——你的思考过程不应该是“我能从这次会议中获得什么”。这个世界的力量以奇怪的方式运作,你永远不知道你在 LinkedIn 上遇到的随机的人会如何帮助你联系到你的下一次休息。每个人都曾经告诉我,关系通常胜过个人能力,我目睹了这一次又一次运行天秤座。

我与来自这个领域各种品牌和公司的众多研究人员、教授和创始人聊了聊。通常,他们会把我和他们认识的对天秤座感兴趣的人联系起来。再一次,参加会议,你会惊奇地发现每个人带你去了哪里。

从合适的、有经验的人那里获得建议。

一旦你的项目有点进展,你会突然发现一个充满机会的世界。起初,这是相当令人难以抗拒的,但很快,你就会意识到这正是为什么你把你的项目开源并与世界分享。在你决定下一步做什么之前,通过和有经验的人交谈来找出最好的行动。

我发现这些人的方式触及了前面提到的一点——抓住每一次提供给你的机会。问他们关于他们的背景和他们做过什么的问题,让他们讲述他们的故事。当你与他们交谈时,你会知道你找到了合适的建议对象。最后,确保从各种人那里得到这个建议。我听取了来自不同大学的风险投资家、创始人和教授的建议。他们每个人都有不同的角度:风险投资会关注规模和影响力,而教授们会专注于具体的技术细节。

获得尽可能多的演讲机会。

对你的项目感兴趣的第一批用户是最重要的。这些是开发者,社区成员,他们纯粹出于兴趣不断寻找新项目。他们会告诉他们的朋友你的工作,在社交媒体上发布,并写文章介绍你的创作。我找到这些用户的方式是通过 meetup 社区,在那里我将我的组展示给几个组。最初的几个月,我在 3-4 个聚会上展示,直到今天,最活跃的用户是我在聚会上发现的那些人。我参与的方式非常简单:我只是加入了一些我能找到的最酷的小组,比如你的数据会谈,并直接在平台上给所有者发私信。每个人都很乐意让不同的人交谈,所以这很容易做到。

扩大你的社交面。

扩大你的社交面绝对至关重要。找到你的平台:我的平台是 LinkedIn,现在它变成了 Twitter。你需要一个地方,让人们跟着你听你说些什么。在我计划发布 Libra 的一两个月前,我开始在 LinkedIn 上发布关于软件开发和机器学习的帖子。这有助于吸引已经对这一领域感兴趣的追随者到我的个人资料,因此,当我发布我的库时,我的追随者已经对它感兴趣了。

我目前正在建立我的 Twitter 个人资料:)。

不要过早开始宣传。

这可能看起来违反直觉,但请听我说完。对你的项目来说,最重要的用户群是前 200-1000 名兴奋的、积极参与社区的用户。因此,如果你在你的软件可用和健壮之前就开始宣传,这些用户可能会因为你的工作太原始而感到没有动力。

我不是一个等待的人。一旦我创造了一些东西,我想分享出来,让每个人都知道。但是等待宣传你的作品是充实的是至关重要的。

结论

希望我已经提供了一些关于运行您自己的大型开源项目的见解。虽然我可能没有涵盖所有内容,但这些是我在过去几个月里学到的最重要的几点。如果你对聊天感兴趣,我很乐意在推特上与你联系。

作为一名数据科学研究员,我在一年内成为了人工智能的领导者

原文:https://towardsdatascience.com/what-i-learned-as-a-data-science-researcher-turned-ai-leader-in-a-year-15a0224813eb?source=collection_archive---------45-----------------------

上周,我被认可并提名为 VentureBeat 的人工智能新星,这是每年颁发的人工智能领袖奖之一:

这个奖项将表彰在她人工智能职业生涯的开始阶段展示了模范领导特质的人。

这是我作为一个新人,人工智能领域的领导者所学到的。

作为这个行业的新人——刚从大学毕业,在这个行业呆了一年,我已经能够非常迅速地转变和塑造。不久前,我还只是一名数据科学研究员,在粒子加速器研究实验室自己的小实验室角落里攻读本科学位。我不应该说“只是”,因为数据科学是一项艰巨的工作!我一点也不知道,一年后,我会成为业界公认的领袖。

我在不到两秒的时间内从 0 加速到 60 英里!

迪伦·卡勒伊Unsplash 上拍摄的照片

最重要的是,我还能够以新人的视角来把握和观察这个行业。以下是我从一名数据科学研究员到行业领导者的一年中所学到的东西。

人工智能需要完全不同的视角

如今,大多数人工智能领导者都是“超越数据科学家”。他们通常会接受科学、工程或数学方面的正规培训,然后某天醒来,发现自己对领导人才更感兴趣。

在他们发现自己处于的所有太常见的情况下,技术和领导技能的双重掌握是在系列中获得的,而不是相互结合。

它们通常属于以下两种情况之一:

  1. 一个开始失去技术层面的东西,只能在高层次上谈论产品的领导者
  2. 一个如此沉迷于技术,并且通常会过度沉迷于发展的领导者

通常情况下,今天的人工智能公司分为两类:

  1. 追求技术抽象并专注于手头现实问题的公司(即领域专家)
  2. 一家公司过于依赖技术,忽视了他们最初试图解决的现实问题(即技术提供商)

这个行业需要你们所有人——技术和远见卓识的领导者,以及抽象和专注于技术的组织。但是,有一个筒仓问题。

这个行业是封闭的。在生态系统中,有些组织开发基础的、必要的技术,如框架、预先训练的模型和库。另一方面,也有专门从事特定领域的组织——他们非常了解特定的行业,最了解该行业面临的潜在问题。但是这些组织通常不会彼此紧密合作。他们建立相互独立的技术。

在这些组织中,有些人工智能领导者要么过于抽象,要么过于执着于技术。有些领导者只知道如何拼写人工智能,有些领导者懂得这背后的数学原理。他们通常不是同一个人。

为了优化人工智能技术并实现其承诺,需要的是既能抽象又能扎根于技术的领导者,以及彼此密切合作并和谐相处的组织。

但这并不容易。如果是的话,我们早就开始做了,对吗?

有一个态度问题。我们真的重视这些交叉以及技能和组织的相互交织吗?

人工智能所需的最有价值的领导特质

具有讽刺意味的是,在信息时代,由于信息量和每天产生新信息的速度,领导者通常被屏蔽在新信息之外。

仅在 2020 年 7 月 16 日的一天,就有大约 70 篇论文提交给了 arXiv.org,这些论文都与机器学习有关,每篇论文都有 15-50 页的信息。这还不包括其他研究出版商。每天都有大量新的信息和知识产生。

今天,人工智能领导者最必要的领导特质是谦逊。

在这个行业快速变化和每天变化的海洋中,纯粹依靠 20 年来对行业运作方式的智慧是不可能的。人工智能领导者需要愿意学习,并愿意向比他年轻 20 岁或比他低几级的人学习。组织需要扶持更多的后起之秀

我所追随的最有效的领导者是那些敢于向实习生和直接下属学习的人。

公司通常会聘请新人担任产品经理或项目主管,因为这种情况需要由外向内的视角和充满新想法的知识源泉。组织每天都需要改变事物并快速适应新信息。

人工智能需要民主化

人工智能只对博士研究人员和能够负担得起研究驻地计划的组织开放的日子已经一去不复返了。为了让行业实现人工智能的全部潜力,需要民主化。让技术变得可及,拓展了我们可以用它做什么的可能性和领域。

与其他任何行业相比,人工智能更需要一个大型社区来进行协作,并需要可以在彼此之间共享的数据集、见解和模型,这就是为什么今天大多数行业领导者都开放源代码。这就产生了信任。

不仅数据集和模型需要民主化,知识和诀窍也需要可访问,特别是对最了解现实世界问题的行业专家。

人工智能不是黑盒子,也不是魔法。简单地说,它是一个允许我们从例子中生成指令的构造,而不是依赖程序员来概括一步一步的指令。

一旦越来越多的行业了解这一点,我们就越能更好地理解需要人工智能和不需要人工智能的用例(是的!有些用例不需要 AI——有时,只需要数据分析和统计)。行业领导者对这一点理解得越多,我们就能越好地解读人工智能可以增强我们今天现有的解决方案并为未解决的问题创造新的解决方案的可能性,我们就越不会对我们团队中的数据科学家花一整天的工作时间阅读 arXiv 上的论文感到沮丧。

总而言之,人工智能领域的领导者需要思想开放,谦逊,并致力于使人工智能民主化。人工智能需要成为一种可访问的技术,可供每个看到并希望解决问题的人使用。

人工智能在现实世界中的成功实施需要新一代的决策者,他们能够适应不断变化的行业。

这并不是说我们只需要行业中年轻的新人领导者。与已经在这个行业工作了 20 多年的人相比,我有一个极小的智慧数据集!这是一个“是的,而且。”我们需要两位已经获得智慧基础的领导者(毕竟,没有压缩框架可以体验!)以及可能撼动整个行业的新领袖。

改变世界不是一件容易的事,如果我们互相学习,会有更多收获。

照片由马库斯·斯皮斯克Unsplash 拍摄

作为营销分析实习生,我学到了什么

原文:https://towardsdatascience.com/what-i-learned-as-a-marketing-analytics-intern-f96307976bb3?source=collection_archive---------62-----------------------

营销分析/数据科学/实习

从一个实习生的角度来看重要的经验教训

来源

作为一名营销分析实习生,我学到了很多关于营销、数据和分析的知识。随着新冠肺炎导致全国许多公司取消实习,我想分享我学到的东西,以便那些没有机会实习的人仍然可以在这个夏天学到一些东西!如果你还没有看我之前的故事: 一个营销分析实习生的一天 ,一定要看看!

我的实习是独一无二的,因为我学到了营销技能、技术技能和商业技能。我想强调这些,特别是在这篇文章的技术和业务技能方面,因为我觉得我从这些领域学到的东西帮助我成为了一名分析师、营销人员和数据科学家。让我们开始吧!

免责声明:我不是全职营销分析专家,我只是转述我暑期实习的经验。这并不意味着教你所有营销分析中使用的技巧和工具,因为我还在学习。如需了解此信息,请查看 走向数据科学 。如果你对我在这个夏天学到的东西以及它对你的帮助感兴趣,请继续阅读!

技术

Python: 刚开始实习的时候,对 Python 的了解非常少。坦率地说,我害怕开始学习它,因为我刚刚花了太多时间学习 SQL,不想再用另一种语言从头开始。从技术角度来看,学习 Python 是我从这次实习中学到的最好的东西之一。无论你是从事数据科学、商业智能还是营销分析,我都强烈建议你学习一些基本的 python。以下是我实习期间使用的几个 Python 应用程序:

  1. 快速清理小型项目的数据,而不是将其放在 SQL 数据库中。
  2. 对大型项目运行高级分析,如调查或电子邮件性能报告。
  3. 分裂。csv 文件转换成可以导入 Access 数据库的小文件(次要的应用程序,但是在安全性非常严格的公司中可以节省大量时间)。

我实习的时候已经有了一些 SQL 的经验。然而,我没有意识到这有多大的帮助。作为一名实习生或入门级营销分析师,你希望尽一切努力为营销部门增加价值,并且要及时。我会得到 250 万行的 Excel 文件,拥有导入这些文件并快速清理数据的 SQL 知识为我节省了大量时间!以下是我实习时使用的几个 SQL 应用程序:

  1. 清理大约有 250 万行 75 列的电子邮件性能数据。
  2. 能够理解终身市场分析师在做什么(因为他大量使用 SQL!).
  3. 组织调查数据,以便未来的实习生和市场分析师可以访问。

Power BI 和 Tableau: 总体而言,数据可视化在我今年夏天所做的工作中非常重要。我会完成一个项目,认为我完成了,然后意识到,“等等,我不能给出一个统计或度量的表格”。虽然我在实习时有 Tableau 经验,但实际上我没有 Tableau 执照,所以我最终学会了如何使用 Power BI!以下是 Power BI 的几个应用,但可以应用于任何可视化工具:

  1. 将电子邮件绩效报告编制成直观的图表,让观众能够理解。
  2. 为调查结果创建一个仪表板,以便我可以轻松理解并与团队成员交流。
  3. 我做的几乎所有项目(是的,数据可视化非常重要!).

商业技能

沟通:如果你曾经向数据科学家、营销分析师或商业智能分析师请教一项需要学习的好技能,大多数人总是说:“沟通”。现在我一直觉得我是一个很好的沟通者。作为一名市场营销出身的学生,我每个学期都会在我的课程中做多次陈述。我从来没有意识到的是书面交流和口头交流一样重要。这里有几个书面交流很重要的场景:

关于书面沟通的一个小提示:在新冠肺炎的这段时间里,许多雇主更加重视书面沟通,我强烈建议你在从事其他项目和技术工作时,也要努力提高这一技能!

  1. 解释为什么电子邮件翻译不工作,因为它没有使用 UTF-8 编码。
  2. 校对一个数据可视化,并尝试解释没有一个功能可用于功率 BI 中所请求的更改。
  3. 与营销分析师一起解决 Python 中的一个 bug(这在新冠肺炎期间尤其困难,因为一切都是虚拟的)。

"我从未意识到书面交流和口头交流同样重要."

建立关系:能够与你单位的其他人建立关系将大有裨益。如果你真诚地关心团队中的其他人,并真正认同团队精神,你的团队成员会更愿意帮助你,教你一些你以前不知道的东西。这是我实习时的几个例子:

  1. 我与营销分析师建立了关系,并帮助他,作为回报,他帮助我学习 Python。
  2. 我与营销自动化经理(我的主管/导师)建立了关系,作为回报,她让我从事更多的分析项目,并让我将它们与电子邮件营销结合起来。
  3. 我和其他实习生建立了关系,作为回报,我可以和另外 14 个朋友一起离开实习岗位(是的,这很重要!).

结束语

虽然我在实习期间学到了许多技术和商业方面的新技能,但这里有五个我学到的非常重要的教训,它们不属于任何一个类别,但对营销分析师和其他年轻的数据追求者来说很重要:

  1. 适应性强:把最重要的技能传承下来。如果你工作的组织没有你习惯使用的工具,你需要适应并快速学习新的工具,这样你才能为组织提供价值。
  2. 对人友好:虽然这对你的事业有帮助,但对人友好只会让你的工作环境更愉快!办公室里坐在我旁边的每个人都互相喜欢,对彼此都很好,这让我需要休息的时候变得更加有趣!
  3. 从其他角色中学习:当我在市场分析/自动化实习时,我渴望也能在商业智能或数据科学领域工作。我也有机会与担任这些角色的人一起工作,这帮助我了解了这些角色,也帮助我了解了如何与担任这些角色的人一起工作,以及如何说他们的语言。
  4. 提问:尽可能多的提问。这既适用于向他人学习,也适用于数据角色。营销策略师(他喜欢数据)给我的最好的建议之一是:“任何伟大的发现都是从一个简单的问题开始的。总是问问题”。
  5. 永远学习:这可能是第二重要的技能,与适应能力成对出现。如果您的组织需要您学习 R,因为这是营销分析团队的其他成员所使用的,即使您的背景是 Python,那么能够快速学习 R 将使您作为分析师脱颖而出,并在您的角色中更加高效。同样,你学得越多,你就越擅长学习。始终给自己灌输知识,因为归根结底,无论你是哪种类型的分析师或数据科学家,这都是我们提供价值的方式。我们通过我们的分析、数据可视化和交流来学习东西,并帮助他人学习东西。

“任何伟大的发现都始于一个简单的问题。总是问问题”。

如果这有帮助,请让我知道!我真的很喜欢写关于数据的文章,并且很乐意写更多关于数据作为一门手艺,如何在实习中脱颖而出的文章,并且分享更多我从技术角度学到的东西!大家注意安全,祝你们有美好的一天!

要联系我或接收更多内容,请在 Twitter 上关注我@BMNAnalytics

我在 NLP 硕士期间学到了什么

原文:https://towardsdatascience.com/what-i-learned-during-my-masters-in-nlp-2b430b544abc?source=collection_archive---------39-----------------------

在快节奏的研究领域获得学位的关键经验

迈克尔·克里斯滕森在 Unsplash 上的照片

⚠️读了我在⚠️博客中的原帖

关注我的推特了解更多✨的故事

我是在 Github 毕业活动的推动下想到写这篇文章的。

我于 2018 年在 LMU 慕尼黑开始了我的 NLP 硕士学位。我对机器学习感兴趣大约有一年了,已经完成了 Coursera 的深度学习专业化。我想更深入地学习自然语言处理,并成为这方面的专家。这就是硕士学位应该让你成为的人,对吗?在花了两年时间接受关于 it 的讲座和做编程作业后,我应该能够为社区做出贡献。至少我是这么认为的。

这个学位有两种背景:计算机科学和语言学。两者都有一些入门课程,这意味着你不需要其中的一半。因为学生们有着如此多样的背景,所以门槛很低。

超越讲座

我意识到如果我只是去上课和做作业,我不会学到很多东西。所以首先我找了更高级的课程。我参加了我能找到的最先进的计算机科学课程。这些要求很高,但仍有很大的发展空间。

你可能不会有太多的时间来做学生工作或作业,但如果这种情况适用于你,我强烈鼓励你以任何可能的方式使用大学提供的资源。作为嘉宾参加其他讲座,阅读课程文献,在课堂上提问并尝试与教授或讲师谈论该话题,他们会告诉你他们在课堂上没有提到的事情。

看报纸

在 NLP 中,这个领域在过去几年中发展得非常快。我们得到的课程材料试图跟上,但他们没有跟上。在作业中使用 Python 是最近的事,上学期几乎没有一门深度学习课程。我意识到如果我真的想了解 NLP 中发生的事情,我必须自己去了解。我开始看报纸。

我拿到了一篇看似介绍性的论文,我不太懂,所以我去找了这篇论文所基于的论文。我也不理解这些,所以我继续回去积累论文,直到我有了一篇我能理解的 2003 年的论文,还有 15 篇在我的队列中。

我慢慢地开始在时间中前进,理解 NLP 的基础知识,以一种我在讲课时不会做的方式。我利用这个机会用我的笔记做了一个 Github 回购,从那以后一直稳步增长。

一开始理解论文是有挑战性的,但是随着练习,你会变得更好,可以更好地理解它们所表达的内容。在某种程度上,我认为阅读这么多论文这一艰巨而漫长的任务是我在 NLP 中真正的主人。

如果可以的话,和教授一起做编程项目

在我的许多讲座中,编程方面是可选的,这意味着大多数人将他们的精力用在其他要求严格的强制性任务上。但我在这里看到了机会。我可以做一个项目,得到教授的更多关注,因为他们不会忙于其他学生,并且有更多的个人指导。

我就是这么做的。我的教授/导师是一名语言学博士,后来成为了 NLP 研究员,他对 NLP 提出了一个非常新鲜的观点,因为其他大多数教授都是计算机科学家,他们的想法来自另一方。

这位教授没有在编码方面挑战我,但她向我提出了关于我的结果、它们的可解释性、意义和影响的困难问题,并迫使我从一个与我习惯的角度完全不同的角度进行思考。

很多时候,我会花几个小时编码,最终得到一些结果,我会想“好了,工作完成了”。但是当我给她看我的作品时,她会问我一千个问题,我不得不回去思考。不要考虑如何编码这个或那个,而是考虑结果告诉我什么。这是令人沮丧和奇妙的,我学到了很多。

不幸的是学期结束了,我面临着更多的工作量,但有这么多的材料要处理,我想回去。这是我做的项目:探索语境化嵌入之间的语义相似性。

拥有你的硕士论文

当我不得不开始思考硕士论文时,我已经阅读了许多论文,知道该领域目前正在做什么,并且我有一些可以在论文期间工作的研究想法的草图。我寻找愿意指导学生写论文的平易近人的教授,我拜访了一些教授,看看他们在做什么项目。

我惊讶地看到,他们对我的倡议感到高兴,我花时间阅读论文,甚至有自己的研究想法。他们告诉我,大多数学生只是选择任何可用的项目,按照教授的指示,只是提出一些东西。

那时我意识到一点点主动性可以让你在人群中脱颖而出。最后,我选择了我的主管建议的一个项目,但我确保它是我的。我试图真正深入地理解它,阅读与它相关的论文,这时候它感觉不像是很多工作。

一开始我不明白我在做什么,我只是按照他告诉我的去做。但是慢慢的,通过提问,意识到自己的知识差距,我开始拥有了论文。我开始在会议上更多地发言,提出想法,并控制自己的论文。

截至 2020 年 5 月,我仍在为此努力。我最近成功地复制了 4 月份的一篇论文,甚至将其结果提高了 2%。我不知道我的论文会有什么结果,也不知道我们是否会设法发表论文,但我希望我能在这方面工作更长时间。我学到了很多。

结论

最终,无论你选择什么学位,你都只会学到你想学的东西。所以我鼓励你投入工作,尽力而为。你旁边会有很多人毕业,做好工作才能脱颖而出。

作为人工智能初创公司的联合创始人兼首席技术官,我学到了什么

原文:https://towardsdatascience.com/what-i-learned-from-being-an-ai-startup-co-founder-and-cto-285854f3a1ae?source=collection_archive---------22-----------------------

Unsplash

全栈 AI/ML

你如何在现实世界中应用你的数据科学,并构建一个如此规模的人工智能产品?

他的文章在我的草稿文件夹里已经有一段时间了,但我相信现在是完成它的时候了。作为一个渴望开发真实世界人工智能产品的数据驱动型个人,我从我最近的两次创业中获得了宝贵的见解,并希望与你分享。

人们经常忽略的一点是,在人工智能产品的开发中,机器学习模型只是技术栈的一小部分。虽然技术熟练是科技联合创始人的一个重要属性,但它只是成功企业所需贡献的一小部分。

隐藏在机器学习系统中的技术债务

许多创始人认为,任何有能力编写代码或创建 MVP 的人都是初创公司 CTO 的理想人选。对于人工智能初创公司来说尤其如此,拥有一名拥有人工智能专业知识的首席技术官可以转化为更有效的知识产权管理协议,并能够节省在早期阶段寻找人工智能专家的时间和资源,这可能是昂贵的。

选择正确的技术

在着手开发创新的人工智能算法之前,每个技术联合创始人都会遇到的最初挑战是技术选择过程。这包括就要利用的基础设施、框架和技术堆栈做出决策。

基础设施

建立基础设施是将你的产品推向市场的关键一步。对于那些具有 AI/ML 或数据科学背景并且工程经验有限的人来说,这可能是一个未知的领域。有几种选择,包括传统的内部服务或利用云平台即服务( PaaS )或基础设施即服务( IaaS )提供商。

利用云服务的好处是巨大的,包括:

  1. 受管服务带有服务水平协议(SLA),最大限度地减少开发团队的工作量。
  2. 随用随付定价,消除了在服务器上的大量前期资本投资,释放了营销和招聘工作的预算。(需要注意的是,云服务可能并不总是比内部成本便宜。)
  3. 可扩展性&灵活性,大多数云提供商都提供随时扩展到任何规模的能力。
  4. 创业信贷和其他福利,如创业信贷(符合条件的创业公司最高可获得 10 万美元)、接触风险投资公司和合作伙伴以及免费的技术支持和咨询服务。—一些云提供商提供创业信贷(对符合条件的创业公司最高可达 10 万美元)、接触风投/合作伙伴以及免费的技术支持和咨询。

云服务市场的三大玩家是亚马逊网络服务(AWS)、谷歌云平台(GCP)和微软 Azure。基于个人经验,作者使用了 AWS 和 GCP,并将在下面的讨论中使用它们作为例子。

虽然不同云提供商提供的基础设施大体相似,但与 GCP 相比,AWS 更成熟,在某些行业被广泛采用。我多次被问到,为什么我们选择 GCP 作为主要的云服务提供商。

伊万·刘

  • 可预编译的服务器 —GCP 提供了一种被称为可抢占实例的计算资源,与标准实例相比,可节省 60–80%的成本。尽管这些资源不附带 GCP 的正常 SLA,但保证每台服务器最多运行 24 小时。鉴于我们平台的性质,其核心组件是人工智能培训和产品管道,需要大量使用服务器, 我们选择了可抢占的资源,以平衡成本效益和足够的计算资源。
  • 集成分析 —我们的平台严重依赖 Google Analytics、Firebase 和其他事件收集工具。GCP 的 Bigquery 作为一个托管数据仓库解决方案,提供了与这些工具的无缝集成,使分析仪表板上的数据可视化变得容易。
  • 其他服务 —目前,GCP 提供稳定的 Kubernetes 解决方案(GKE)和人工智能服务,这两项服务都被我们的实时系统所利用。

然而,每一个决定都需要权衡:

  • 数据库 —虽然 GCP 提供了一系列数据库,但它目前不支持 MariaDB,并且缺乏用于 CloudSQL 读取副本的集成负载平衡器。
  • 人才的可用性 —与 AWS 相比,在 GCP 寻找有技能的工程师可能更具挑战性。

值得注意的是,每个初创企业都是独特的,技术选择应该基于特定的业务主张和用例。技术联合创始人必须做出明智的决定,为他们的业务选择合适的技术。

体系结构

一旦基础设施就位,下一个关键步骤就是平台架构的设计。考虑诸如安全性、可伸缩性、可靠性等各种高级方面是至关重要的。从我在两家创业公司的经历中,我学到了在架构中保持简单的重要性。

在设计架构时,只包含满足平台需求所必需的组件是非常重要的。

如果 MySQL + VMs 可以满足平台需求,就不要在设计中添加 Redis 或 Memcached 之类的缓存层。如果数据库读取副本可以解决并发瓶颈,那么就不要设计 MQ。

过度复杂的架构需要大量的开发工作,初创公司必须不断迭代和发展他们的产品,使设计中任何冗余和过时的组件都成为问题。人们很容易被最新、最大的技术进步所吸引,但作为一家初创公司,采取务实的方法并只实施业务所需的东西至关重要。

目标应该是以简单明了的方式实现预期的结果,而不是试图模仿大公司复杂的解决方案。

不要羡慕谷歌正在做的很酷的事情,实现一些不太酷的事情,直到你成为一个谷歌。

伊万·刘

发展

作为一家初创公司的技术联合创始人,必须全面了解技术的各个方面,包括人工智能模型和 iOS 应用。AI/ML 专家的角色不仅仅局限于简单的培训模型,因为它需要亲自参与整个代码库,尤其是在与离岸团队合作时。

为了确保初创公司技术的成功,消除代码库中的任何盲点至关重要,这些盲点可能会在未来导致灾难性的后果。

为了实现这一目标,这位技术联合创始人需要:

  • 准备好学习任何语言——尽管你可能不直接负责日常开发,但对跨多个平台的编码技能的深刻理解是至关重要的。例如,在没有 iOS 开发人员的情况下,首席技术官必须有能力排除故障并发布新版本的应用程序。在 IT 预算削减或海外团队流失时,确保产品对第三方开发团队的依赖性最小以保持无缝运营至关重要。
  • 尽早建立开发流程 —这包括发布流程、持续集成/持续交付管道和其他关键元素的实现。尽管这些过程不一定是完美的,或者遵守严格的工程最佳实践,但是将它们放置在适当的位置以避免混乱并确保最佳的团队生产力是很重要的。
  • 不要仅仅依靠测试人员来保证质量——虽然测试是开发过程的一个重要组成部分,但是测试人员在一个冲刺阶段或者在一个版本发布之前完全覆盖一个特性的每一个方面可能是不可行的。考虑到测试需要额外的时间,可能会有这样的情况,工程团队在一个紧张的期限内构建不完整的特性,期望测试人员识别并解决任何问题。为了避免这种情况,除了依靠测试之外,建议鼓励工程师进行自检。这种方法有助于简化开发过程,避免交付前不必要的来回奔波。
  • 采用灵活的语言选择方法——选择您和您的团队最熟悉、最舒适的语言或工具。避免只受受欢迎程度的影响。

xkcd

  • 技术债务并不是不可接受的——认识到承担技术债务是创业旅程的自然组成部分是很重要的。重点应该是快速构建一个功能性产品并测试业务假设,为未来的融资和扩展工作做准备。关键是要保持一种心态,即一些技术债务可以在下一轮融资获得担保时得到解决。

作为一名领导者,有效地建立和管理团队至关重要。一个团队的成功不仅依赖于熟练的工程师,还依赖于定义良好的工作流程、开发过程、明确的目标、有效的领导和激励性的激励结构。忽视这些因素会导致混乱,最终导致失败。

ZIA

作为一名技术领导者,我学到的第一课是,拥有足够的开发人员比拥有过多的开发人员更好。

需求每小时每天都在出现,我需要更多的开发人员来完成任务,这样我们才能交付更多。

上述信念可能会导致一些挑战,包括:

  1. IT 预算的大幅增加
  2. 在团队管理中投入大量时间和精力
  3. 最有可能的是团队速度和生产力的边际改进

以下是解决上述问题的一些经验:

  • 保持团队内部的简单性 —避免不必要的技术角色使团队结构复杂化,这些技术角色在项目的当前阶段可能并不需要。例如,在 MVP 的开发过程中,像站点可靠性工程师或渗透测试员这样的职位可能是不必要的。类似地,在生成足够的用户数据之前,可能不需要为数据分析师建立一个角色来支持数据驱动的上市策略。
  • 一个负责任的开发人员总是比一个有经验的开发人员更好——虽然经验当然是一笔宝贵的财富,但它不一定等同于强烈的职业道德和对分配任务的主人翁意识。另一方面,一个缺乏经验但高度负责任的开发人员不仅能为团队做出积极的贡献,还能与团队一起成长和发展。重要的是要避免雇用那些表现出逃避责任和义务倾向的开发人员,因为这样的行为会破坏利益相关者的信任,并导致有害的工作环境。
  • 毫不犹豫地更换不合适的团队成员——保持一个合适且高效的团队构成对于确保创业公司的成功至关重要。替换那些表现不尽如人意或不符合团队文化、动机和责任的团队成员势在必行。如果做不到这一点,可能会导致团队士气低落、生产力下降和错过最后期限。在团队成员表现不佳的情况下,最好及时解决问题,以避免对团队的进展产生长期的负面影响。团队的成功取决于每个成员的集体努力和承诺,确保每个人都与公司的目标和价值观保持一致是至关重要的。
  • 找到你的得力助手——作为一名首席执行官,拥有一个值得信赖的得力助手对创业公司的成功至关重要。在你的团队中找到一个可以作为你的“左臂”或导师的人是很重要的。拥有这个人可以提供额外的支持和帮助,以确保组织的有效运作。
  • 与你的团队进行技术交流 —对于技术联合创始人来说,与他们的开发团队进行有效的交流是非常重要的。这需要清晰简洁地交付技术指令,将复杂的业务需求分解成可操作的任务。展示技术专长可以赢得团队的尊重,并提高整体生产力。然而,技术联合创始人还必须能够以投资者和其他非技术利益相关者可以理解的方式阐明业务需求。
  • 学会为你的团队过滤噪音—培养选择性过滤外部输入的能力至关重要,虽然这些输入可能看起来很有创意和令人兴奋,但它们很快就会成为分散注意力的来源,阻碍团队专注于核心任务。在这些输入和开发计划之间实现一个过滤机制,可以确保与产品路线图的一致性和一致性,减少不确定性和分歧。这将为团队营造一个高效且专注的工作环境。
  • 更换整个开发团队时要小心——更换整个团队会导致项目交付的重大中断,导致长时间的无绩效,通常以周或更长时间来衡量。建议尽可能避免这种激烈的行动,而是寻求替代解决方案,帮助解决手头的问题,同时尽量减少对项目进度的影响。
  • 关心、欣赏和尊重你的团队成员——特别是在第一个团队的情况下,他们可能不具备最先进的技术技能,但他们在产品的成长和发展中起着至关重要的作用。他们拥有对企业成功至关重要的宝贵的业务和技术洞察力。失去一名团队成员会对组织产生重大影响,因此,营造一个积极和支持性的工作环境以留住有价值的团队成员至关重要。
  • 人脉——当务之急是积极参与人脉,以发现并吸引创业行业中稀缺的有才华的开发人员。建立和扩大职业关系可以提供宝贵的机会,在未来适当的时候接触潜在的候选人。即使开发人员不能立即加入团队,他们仍然可以通过这些关系提供有价值的见解和建议。

产品

作为首席技术官,积极参与产品开发是确保产品成功开发和交付的关键。你的角色包括决定最有效地利用技术来制造产品,并确保其技术可行性。这方面的主要考虑因素包括:

精益创业

  • 专注于你想要为产品测试的关键假设 —初创公司的资源有限,通过专注于关键目标和测试假设来避免分散这些资源至关重要。随着产品在市场中获得牵引力,可能会有新的想法和建议涌入,但提供指导并做出符合团队能力和产品路线图的明智决策是 CTO 的责任。通过保持对团队能力和产品战略的清晰认识,CTO 可以有效地优先考虑和分配资源,以推动成功的产品开发。
  • 在提交特性请求时要小心——提交每个请求会导致开发团队负担过重,并对他们及时交付可靠产品的能力产生负面影响。技术联合创始人应该充当把关人,与开发和产品团队密切合作,评估、优先考虑和管理利益相关者的期望,以确保团队专注于与整体业务目标和产品路线图相一致的最重要和最有影响力的任务。考虑非技术性的解决方案并随着时间的推移不断评估请求的相关性和重要性也很重要。
  • 专利保护— 专利作为一种商业保护形式,有效地增加了竞争者的进入壁垒。此外,专利在风险投资家对初创企业的估值中扮演着重要角色。为了最大化专利的好处,建议在业务发展的早期就开始专利程序。虽然最终的专利不需要立即申请,但跟踪进展和建立时间表是必不可少的。与其只专注于为人工智能算法申请专利,不如专注于整个解决方案,这涉及到技术、工程努力、端到端管道、商业主张和模型等各个方面。专利应该足够通用,以保护大多数企业,但又足够具体,以满足专利的标准。

摘要

作为 CTO,理解技术、团队和产品之间的相互依赖是很重要的。这些元素中的每一个都在推动创业成功的过程中扮演着至关重要的角色。为了提高效率,保持热情并致力于通过工作对社会产生积极影响是非常重要的。

技术的关键方面是保持精简和简单,允许快速迭代和测试产品假设。

团队管理而言,重要的是优先考虑团队成员的福祉,建立网络并扩大你的职业关系以识别潜在的人才,并过滤掉噪音以保持团队关注的一致环境。

产品开发而言,积极参与产品团队并专注于测试关键假设至关重要。作为看门人,CTO 必须管理利益相关者的期望,并确保团队正在做与产品路线图和业务目标一致的正确的事情。申请专利的过程也应尽早启动,重点关注具体到足以申请专利的通用解决方案。

总的来说,关键是不断平衡和整合技术、团队和产品,以推动创业公司的成功。

关于我

作为一名终身学习者和技术专家,我专攻软件工程、机器学习和云工程领域。

我作为工程和产品领导者拥有丰富的经验,在定义机器学习战略、建立全栈数据科学和工程团队以及大规模交付端到端机器学习解决方案方面有着良好的记录。

我从艾瑞克·希格尔学到了什么

原文:https://towardsdatascience.com/what-i-learned-from-eric-siegel-1399e1e6d944?source=collection_archive---------65-----------------------

对他的书《预测分析》的诚实评论

詹·西奥多在 Unsplash 上的照片

我读完了艾瑞克·希格尔的预测分析。我不得不说这是一个可怕的阅读。我如何定义一本很棒的书?一本永久改变你态度的书。你一定不是拿起书之前的那个你了。它影响你生活的一个或多个方面:个人、财务、社会、浪漫、家庭或职业。还有,我读一本书,只有当我能从中学到东西的时候。我不只是为了学点东西才看的。如果一本书必须放在我的桌子上,它必须在我生活中的某个领域立即可用。是的,这本书不仅对我对数据科学的专业理解产生了巨大的影响,还帮助我发现了我的兴趣。从这本书里可以学到两个主要的东西。第一个是来自 的五种效果 :

  1. 预测效果
  2. 数据效应
  3. 诱导效应
  4. 整体效应
  5. 说服效果

埃里克没有透露书中的观点,而是将他在预测分析方面的许多经验隐藏在这些效应中。预测效果证明了在商业中,准确度较低的预测比猜测要好。数据效应表示数据总有故事可讲,总有一些有价值的东西可以从中学习。诱导效应证明了驱动机器学习的是艺术。总体效应解释了协同的概念在预测中的作用。说服效果将营销技巧、商业意识和 A/B 测试联系起来。你可能认为这很简单,你已经知道了,你可能是对的,除非你有十年的预测分析经验。你还可以从书中学到一些新的东西。每种效果都用现实生活中的商业案例来解释。这本书充满了从应用这些效果中获得的实际商业结果。最鲜明的对比是,他是一所大学的教授,但他的写作风格是实用的,非学术性的,以商业结果为导向的。

来自艾瑞克·希格尔的书

我从书中学到的第二件事是对学科本身的理解。我参加了几门数据科学课程,并使用 Pandas、NumPy 和 scikit-learn 编写了一些短程序。我已经建立了一些机器学习模型,我认为我知道一些东西。我错了。这本书教会了我机器学习在现实生活中的用处。编写代码来构建、测试和评估模型不是理解机器学习。这本书详细解释了什么是机器学习。没有一行代码,对决策树有更详细的解释。这本身就表明了埃里克对机器学习建模的理解。然后是对重要主题的大量报道,如相关性并不意味着因果关系模型如何过度学习,以及为什么训练-测试数据分割存在。当然,所有这些都是真实的商业案例。看似业务风险的东西,Eric 使用预测分析将其转化为机会。这本书里没有一页是他用预测分析来解决商业问题的。

读完这本书后,我的职业兴趣永久地改变了。现在,我很好奇,也非常有兴趣了解和发现更多关于机器学习如何揭露金融欺诈,机器学习程序如何应用于企业的营销或广告问题,以及如何用于执法的信息。所有这些都是我在读这本书之前最不感兴趣的事情。我跳过了这本书的一些部分,但这仍然是一次令人费解的经历。

写我的第一篇学术文章时我学到了什么

原文:https://towardsdatascience.com/what-i-learned-writing-my-first-academic-article-980f978460d?source=collection_archive---------31-----------------------

以及在做之前我应该知道的

乔·塞拉斯Unsplash 上的照片

一篇学术论文?真的吗?

我最近一直在研究一个基于卷积神经网络的语音转换系统:虽然整个系统背后的主要思想并不太复杂,但我得到了相当令人信服的结果

拍了拍自己的肩膀后,我准备开始一个完全不同的项目,把我的旧项目放在我忙碌的桌面上的一个随机文件夹里。

然后,突然,一道闪电从天而降击中了:

一篇论文!一篇学术论文!

这确实是一个诱人的想法,如果被征服,将会带来巨大的满足感。尤其是在我这种情况下。

我是一名本科生,学习一门与机器学习完全不相关,甚至与计算机科学不相关的学科。我是在激情和唯一的激情的引导下来学习一些机器学习基础知识的,没有任何关于整个领域的学术观点。我对学术界的真实运作一无所知。

我究竟为什么要试图写一篇真实的学术文章呢?我有资格考虑这个问题吗?

我的想法是说服我放弃整个“纸”的想法,让它离我越来越远,让它看起来遥不可及,不可能。

不可能

不可能?

也许不是。

在和一些人讨论了我内心的困境后,我意识到我收到的建议总是同一个。

你可以做到的。

这个答案并没有真正消除我在这个问题上的所有犹豫,但它确实使整个局势变得更容易理解,脚踏实地,而不是一个遥不可及的任务。

我会失去什么?

没什么。

这一切可能会以一场大而美的混乱而告终,这是对学术文献的沉重一击。然而,在我内心深处,长期以来,学术研究者一直是一个迷人的人物。为了真正感受到一个研究人员的工作和经历,我需要,我想,尝试一下。

在日复一日的艰苦工作(有些人甚至称之为极度紧张的 T2 工作)之后,我拿到了我的论文。这是无论如何都不完美的,但我为我的小创造感到无比自豪。

只有在完成所有工作后,我才满怀信心地意识到我做出了正确的选择。我在整个旅程中学到了很多东西,在坐了几个月之后,我准备与你分享我在作为一个没有经验的学生作为唯一作者写论文时所学到的东西。

1.最大的障碍是认为自己做不到

这一课可能听起来很俗气,但正如我之前解释的,如果你没有经历过这个世界,你很容易感到气馁。

你可能会告诉自己,你不具备必要的知识和技能,无法在一个看起来如此遥不可及和成熟的领域产生影响。而且也许真的是这样

但是一步一步,你会到达那里的。如果你真的不知道你的工作是否值得写论文,向教授和朋友寻求帮助,他们可能会给你一些非常有用的建议,带我们进入下一课…

2.不要害怕寻求帮助,但是…

我曾经认为我可以靠自己的去做和学习一切。那一只援助之手只会分散我的注意力让我慢下来。

但是当我有机会遇到合适的人时,这种思考方式就消失了。

如果你觉得自己处于最佳状态,这可能意味着你还没有遇到合适的人。

寻求 T42 的帮助通常是实现目标最有效的方式,如果不是唯一可能的方式的话。这也可以打开新的有趣的机会,因为你现在交谈的人对你知道什么和不知道什么有想法,因此可能会将你重新引导到新的、更有趣的项目和挑战。

然而,我会建议你不要咬援助之手:永远试着尊重你请求帮助的人,如果他们不总是对你有帮助,把你自己放在他们的处境中,试着理解为什么。

对同龄人表现出极大的尊重是建立有意义和富有成果的关系的有力途径:试着沿着这条路走下去,不要表现出傲慢和支配的迹象,迟早有一天,你会承认保持这种心态的结果

3.不要着急

现在你有了自己的动力,你可以依靠某种外部指导,是时候让自己投入工作了。

对你的努力感到兴奋是一件好事,因为这会让你花在研究和写作上的时间更加愉快。然而,过度兴奋会让你真的想尽快完成你的整个项目,这可能是让错误和概念差异溜进你的论文的有效方法。

我强烈建议首先准备一份详细的待办事项清单,列出你旅途中所有必要的步骤;做完这些,你应该慢慢来,一步一步来,不要长时间工作,也不要经常感到疲劳和紧张。在这种平静放松的状态下,你的工作效率和质量只能提高

4.研究一下在你之前谁做过这件事

学术文献中的引用问题在整个学术界讨论得非常深入。

意识到谁在你之前是非常重要的。虽然大多数学者在开始他们的研究时,对他们的主题的历史有着极其广泛的了解,但就一个可能是新的而不是很好理解的主题提出一个想法并不罕见:每当研究人员将他们感兴趣的主要领域的技术应用到另一个不同的领域时,这种情况就会发生。

这种现象在机器学习中相当频繁,因为它的许多核心概念被持续应用于每一个可以想象的领域(医学、工程、农业、生物学……)。

无论如何,你所依赖的以前的技术应该总是被研究。除了将功劳给有价值的研究人员,你将对你正在研究的任何东西建立更深的理解,谁知道呢,也许你会发现你的新最先进的技术实际上在 50 年前就已经为人所知了(不幸的是,这比你想象的更经常发生)。

换句话说,试着把写论文的“以前的工作”部分作为整个研究过程的一部分,而不仅仅是你做的最后一件事,因为“你必须做”。我几乎可以保证,这种更深刻的理解将会影响并增强你看待自己研究的方式。

5.花时间在抽象上

我毫不怀疑你已经知道摘要是你在大多数时候被评判的依据。然而,我真的想坚持它的重要性。

阅读你论文摘要的人中,只有一定比例的人会继续阅读其余部分。你的主要目标不应该在于最大化这个百分比,相反你应该专注于点燃你认为可能从你的工作中受益的类人的兴趣和好奇心

虽然最近在学术文章的标题和摘要中使用加粗和笼统的说法非常普遍,但这通常会导致一种“点击诱饵”的形式,这的确吸引了许多普遍的关注,但最终论文中真正提出的东西并没有在该领域留下任何真正的凹痕

另一方面,拥有一份精确的摘要并且真实地解释了你的意图,可以真正帮助抓住对你的提议真正感兴趣的读者,并且也许有一天会建立在你的工作之上。****

这就是为什么撰写摘要极其重要并且需要大量时间和精力的原因,因为在非常有限的几行中浓缩整个月的研究,而没有落入“clickbait”陷阱的风险,是不容易的任务

6.如果不需要,就不要含糊其辞

我不止一次从这个领域的人那里听说过,你的论文中包含的公式越多,在会议中被接受的机会就越大。我不知道这个的说法是否真的成立,但我知道的是我有多不喜欢学术文章中不必要的公式

没错,公式可能非常诱人:它们似乎给你的作品打上了真实性的印记,让你,作为作者,显得更聪明、更博学。

然而,正如你可能已经理解的那样,我相信这只是另一个闪亮的陷阱,在这个陷阱里很容易掉进去。我更倾向于认为一种更加精简、直接而清晰的方法来解释你的研究只会有助于你的工作在这个领域更加成功。

在记住这一点的同时,也要记住很长的公式通常需要才能达到你的学习目的,在这些情况下,把它们包括进来是至关重要的,最理想的是旁边有一个详尽的解释说明它们是如何精确工作的。****

只是尽量不要让带走,因为有时候一个漂亮的示意图比两行希腊符号更容易理解。

7.示意图比文本更重要

当阅读论文时,我有时会非常高兴看到清晰和精心设计的图表。它们真正帮助读者抓住要点了解提议的系统是如何工作的,或者,总的来说,这一特定研究背后的直觉思维是什么。

另一方面,当在学术文章中我只能找到成堆成堆的白底黑字的文字,也许还有几个长长的公式,我对所提建议的热情急剧下降,使阅读过程变得缓慢而紧张。

这并不是说没有大,大,丰富多彩的图片的论文就不应该存在,但有时采取一个概念,它本身是很难把握的并把它变成一个清晰的示意图是可能的,并能真正帮助文章的整体清晰

在这种概念表达中使用颜色也是至关重要的:颜色可以用来给你希望用图表解释的概念增加另一层深度,但是不恰当的或者不合逻辑的使用只会制造更多的混乱,破坏清晰图表的积极效果。

8.会不会被误用?

终于到了写论文的结论的时候了。

许多研究人员会认为这一段是最容易的一段,为了尽快到达他们漫长工作的终点,不会在这一特定部分上花费太多的时间** 和思想。**

然而,结论的作用是对前面章节中提出的内容进行深刻反思,而不是简单扼要的总结。

这是花一点时间考虑你的研究如何被滥用的最佳时机,一般来说有哪些可能的缺点和弱点:我还会建议把主要的包括在你的摘要中,因为从一开始就真诚地对待你的工作总是会得到赞赏。

在机器学习领域,滥用特定提议系统的主题是广泛讨论的,通常,伴随着可能被滥用的技术,还会提出抵消相同技术的方法。

这是解决可能导致危险结果的未探索技术应用的最佳方式,但是如果你的提议只能实现完全不道德的目标,你也许应该重新考虑与世界分享它。

9.你会得到负面评价。干杯吧。

在仔细阅读和检查你的珍贵文章,并询问其他人没有参与的研究过程后,做同样的事情,击掌你自己和休息一段时间让你的大脑在沉重的负荷后放松。

你做到了!

然而不幸的是,如果你想在某个地方提交你的论文,还有很多工作要做

我应该坚持这样一个事实,即不向会议或期刊提交一篇文章,而只是在像 Arxiv 这样的平台上发表,特别是如果你是独立工作的话,是完全没问题的,不应该给你带来任何尴尬。****

在提交给会议或期刊的情况下,准备好接受一些负面评论:对于大多数研究人员来说,这可能是一个高度沮丧的时刻,因为在一篇论文上工作了几个月之后,负面评论可能来自一个对感兴趣的领域不太了解的人,可能非常有压力

无论发生什么事情,试着去理解评论者的观点:

在每一次复习中,即使是最令人气愤的复习,也应该有值得学习的地方。

说了这么多,我真的想感谢的阅读和的宝贵关注

如果你即将写一篇学术文章,或者你目前正在写一篇,我祝你好运!我希望对你来说这将是一次愉快的旅程,就像我一样。

在*LinkedInTwitter*****

阅读我的博客文章,解释我的第一篇关于 声音转换和音乐风格转换的论文 :

****** [## 使用 GANs 进行语音翻译和音频风格转换

如何使用 Spectrograms 和 GANs 将爵士乐转换为古典音乐

towardsdatascience.com](/voice-translation-and-audio-style-transfer-with-gans-b63d58f61854)

看我的博文我学到了什么 培训 GANs 一年 :

[## 一年来训练甘的 10 个教训

训练生成性对抗网络很难:让我们把它变得简单一些

towardsdatascience.com](/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628)******

我从 120 多次数据科学演讲中学到了什么

原文:https://towardsdatascience.com/what-i-learnt-from-giving-120-data-science-presentations-ce18b16cf334?source=collection_archive---------35-----------------------

办公时间

帮助驾驭世界和日常技术实践的 6 点,成为更好的数据沟通者

UnsplashAnggi Nurjaman 拍摄的照片

回想我在数据科学团队中担任的各种角色,我突然意识到我是少数几个经常被邀请参加演示的人之一。

从一大堆会议邀请,到各种团队频道的幻灯片和我笔记本电脑上无数版本的演示文稿,我意识到在过去的六年里,我已经演示了 18 个项目的 120 多个版本——大约每三周一次演示!通过这一点,我可以有把握地说,我已经耐着性子听完了各种听众不喜欢的演讲。

有人可能会说,在一个数据素养的组织中,这么多的演示对于技术相关的利益相关者来说是不必要的,但在我工作的地方,这样的人少之又少。

吉菲——过来,卡拉莫👏🏽👏🏽👏🏽

我的许多演示文稿准备起来既费时又麻烦,但它们对我成为一名更好的数据科学交流者的努力非常有价值。不管怎样,我感谢我的自省时刻,它让我对自己的内容和沟通技巧充满信心。

迄今为止,在英国《金融时报》能源峰会上,作为主题演讲人并参加能源行业 ML 专题讨论小组一直是一大亮点。虽然我还有很多东西要学,但我现在知道我可以和那些倾听的人展开有趣的对话。

所以,这里有我认为有价值的六点,以及我在考虑展示我的项目时使用的一些资源。

1.创造一个故事

无论你正在陈述的项目是探索性的、生产就绪的解决方案还是研究性的,叙述都是连贯地表达所取得的进展所必需的。虽然有许多方法,但有两个关键要素是必须的。

语境

很多时候,我们的项目落地到我们面前就没有意义了。我们必须从平庸的数据中煞费苦心地构建模型、见解和结果。为了有意义,我们一遍又一遍地剖析和探索部分数据,以在更大的画面中找到的含义。本质上,我们成为了科学家。

对我们的观众来说幸运的是,我们能够在一个更大的画面中框定我们的数据,并成为故事讲述者。我们可以包括历史,类似的趋势和其他人可能采取的方法。我们可以用探索阶段的视觉化来描述潜在的挑战、一线希望和我们的灵感。

无论你是向非常具体的团队还是更大的、多样化的团队进行演示,一个包含更多相关事实和背景的定制演示都是有益的。我倾向于按照相当高层次的叙述来组织我的幻灯片,并在必要时将注意力吸引到详细的幻灯片上。这样做可以让观众专注于挑战和解决方案,同时我也可以帮助他们欣赏我取得的进步。

时间表

坚持清晰有序的时间表(最好是线性的)非常重要,数据科学故事不应该像克里斯托弗·诺兰电影一样。

吉菲

我经常看到演讲一开始就有一个结果和解决方案。虽然这些很有影响力,但它们也引发了很多“这是什么意思?”时刻,这可能会疏远你的观众。

一个强有力的开始本质上是你的背景和你提供的情境。一个有价值的中间部分将包括对你的方法、发现、见解和必要信息的简明解释,以帮助听众理解所做的事情。在结束时,您应该总结模型结果、潜在的改进、数据的使用和挑战、生产策略以及项目是否继续的更广泛影响。

如果可以的话,留出提问的空间。这让观众有机会“更深入地”了解他们特别感兴趣的内容和任何事情。

2.不要让观众边听边读。

把你自己放在一个利益相关者的位置上,坐在一张 ML 幻灯片上,试图倾听专家的观点,阅读他们在幻灯片上的简介,理解他们的工作对商业领域的价值。这是很多杂耍。

吉菲——是啊,令人困惑…🤷🏽‍♂️

相反,应该限制每张幻灯片的文字量,尽量减少要点和陈述,以避免填鸭式的文字。你可以采取许多步骤来表达简洁明了的观点,盖伊·川崎 10/20/30 法则很好地阐明了这一点,它为推销提供了一个极好的模板。虽然它不能直接翻译为 ML 演示,但它的大部分内容是适用的。

3.观想很重要。如果你在制作图表,使用正确的视觉工具。

这对我来说可能是最重要的一点,然而,也是最难做到的一点。这些原则可能很容易讨论,但执行起来要困难得多,始终如一。

TL;视觉上的博士-

—带有标尺的图表帮助我们更准确地解释它们,减少我们的感知偏差。

—不要使用图表,因为它们不容易让人理解要点。

—通过调整对比度和亮度来突出重要内容,而不删除不重要的内容,从而为演示挑选或制作一致的调色板。

观想不仅仅是为了美学。事实上,它们有一个更高的目的,即帮助我们的大脑更容易地处理模式识别,因为它们将放大镜对准了更大数据集中已经存在的

1812 年拿破仑的俄罗斯战役——查尔斯·密纳德,维基百科。这免费存在于我的脑海里。

1869 年,法国土木工程师查尔斯·密纳德预见了 1812 年拿破仑的俄国战役。虽然即使现在也很难构建这样的图表,但这是一个非常简单的图表,在一个 2D 图中表达了六个变量!(温度、部队人数、行进距离、行进方向、纬度/经度以及相对于特定日期的位置)。它从字面上讲述了通过数据征服的悲伤故事。

整理您的见解,不仅要展示数据,还要便于阅读。我在演讲中发现的两个基本但又反复出现的主题是:缺乏比较手段和正确使用颜色。

尺子和天平

我觉得有必要用一些背景来解释为什么我们的视觉能力经常失灵。

人类的大脑善于发现相似事物的差异,但前提是它们明显不同于其他事物。如果没有共同的方法来发现多个项目之间的差异,我们很容易误解或低估大型图表(条形图或折线图)中的某些数据点。

这大概是一个琐碎的解释,但是实际差异 vs 感知或主观差异的关系在韦伯定律中陈述。

此外,史蒂文幂定律加剧了我们感知偏差的这种差异,因为每个人都有一个独特的比例系统,这个系统在长度、面积和体积上都是非线性的。

2016 美国 Dem 总统候选人, NBC 新闻 —克林顿台词可以比较,但是桑德斯怎么样?

例如,当任何两个人估计条形图中两个条形之间的差异(即比率)时,他们会得出不同的估计值。虽然这在大多数情况下可能非常小,但在非结构化图形中比较多个条形会产生复合效应。这适用于长度、面积、体积、亮度、声音强度(响度)和重量。

为了解决这个问题,我们可以使用周期标尺(或作为标尺的公共边缘),因为它们提供了图表中最好的比较工具。这对于建立一个基线来比较两个或多个项目是非常宝贵的。

虽然这个修复看起来很琐碎,但是我们经常忘记考虑它。这些错误在堆积图和面积图中最为突出,因为使用标尺要困难得多。因此,我避免使用这些图表,坚持使用更简单的图表。

我花了 15 分钟重新制作了上面图表的右侧(在 Excel 中)。我现在可以分辨出候选人 & 种族之间的差异。没有上面那么干净,但是现在可以研究一下

对比

色彩的运用,尤其是对比的差异,是吸引注意力的关键。我们通常使用颜色来区分多个变量,使用 Python 和 r 制作的图表中使用的各种顺序、发散和定性调色板。

重要的是要问清楚什么是相关的显示,一个变量所有或多个变量。前者更容易解释,需要很少的颜色变化,因此只用两种对比就能做出有影响力的区分。后者在阐明变量的变化和复杂性,描述多方面的问题和见解方面是理想的。变量越少越好。如果你真的想走得更远,就按照重要性和与观众的相关性对它们进行分组。

科学上有一个关于我们如何识别模式并解释它们的详细帖子——我强烈推荐它!

4.把它变成你自己的,充满激情。

我们的大多数项目最终会耗尽我们的热情。无论我们花多少时间清理数据和热情地优化,最终所有的利益相关者都关心我们代码的目的和结果。从全局来看,这并不有趣,至少对于那些能够资助进一步工作的非技术观众来说是如此。

Giphy —当有人问我“那又怎样?”,我听到钱德的声音。

我不得不提醒自己把注意力放在相关的事情上,是什么让解决令人沮丧的挑战变得有趣,以及我在这个过程中学到了什么有趣的东西。

我在演示过程中加入了不同的图表以增加参与度,包括生产模型的长期目标,制定策略以获得其他项目的额外收益,甚至花时间寻找组织良好的动画模板。

最糟糕的情况是,你的热情和真正的兴趣会让你的利益相关者和听众为你感到兴奋,你会从经历中学到一些有趣的东西,然后继续前进。在最好的情况下,他们会支持你,传播你的言论,召集合适的人和你一起做出正确的决定。

5.与你的观众互动。

演示开始时的互动可以让你的观众踏实下来,让他们专注于你想要吸引他们注意的东西。如果他们不得不在你起床前听完多个演示文稿,这一点尤其正确!关于这个项目的一个有趣的事实,一个有趣的统计数据,一个“举手表决…”的问题都是与你的观众互动的好方法。

总的来说,你也可以利用这个机会来了解他们所拥有的先验知识水平以及他们所熟悉的复杂程度。

当然,他们可能会撒谎或不参与,但通过与他们互动,观众有机会建立信任,并在向演讲者提问时打破任何尴尬的障碍。

6.帮助观众理解成功标准和模型评估。

如果某人对我们的世界是陌生的,那么用准确度、精确度/召回率和 AUC 等术语来衡量进展可能会让事情变得更加混乱。

具体说明你是如何评估模特的表现的。花时间回顾或向观众提供如何解释结果的悬崖笔记。如果是 AUC,解释为什么你会使用这种方法,结果和它对项目的意义。始终链接到更大的图片和它提供的价值。

如果结果不乐观,或者你认为需要更多的努力来改进,那么就要透明,并证明一种潜在的方法是合理的。如果这是一个死胡同,你已经用尽了所有的方法,同样适用。

FT 数字能源峰会 2019,Flickr —公用事业面板数据。

我们并不总是有时间来做好演示。在工程任务之间,很难找到时间来真正制作幻灯片,创作故事,并进行很好的可视化。努力是值得的!

简单而引人入胜的故事让少数产品所有者和常客对我们的项目更感兴趣。他们努力掌握基本概念。我们的站立会议和冲刺计划会议涉及了更多的抽象思维,能够减轻利益相关者的预算,更好地控制最后期限,并为我们尝试创造空间。

我愿意相信这些是我们为了成为更好的沟通者而逐渐学习和养成的习惯。我也希望我们工作的团队获得更多的赞赏,并投入时间进行沟通。我很幸运有一个思想开放的团队。

感谢您的阅读,如有任何建议,请在下方留言!

我从攻读计算机视觉和机器学习硕士学位中学到了什么

原文:https://towardsdatascience.com/what-i-learnt-from-taking-a-masters-in-computer-vision-and-machine-learning-69f0c6dfe9df?source=collection_archive---------5-----------------------

经验

如果你打算在计算机视觉或机器学习方面进行任何形式的高级研究,请阅读本文。你可能会发现一两件有用的东西。

约瑟夫·陈在 Unsplash 上的照片

我写这篇文章是为了反思我在攻读机器学习硕士学位时学到的东西。我不得不承认,我的研究有些部分有用,有些部分没用。

他的文章涵盖了我的经历和课程内容,但我相信其他大学的课程不会有太大的不同。因此,一些的读者可以将这篇文章作为一个窗口,了解机器学习和计算机视觉的硕士学位会带来什么。

除了我在学习期间学到的信息,我还将包括所获得的学术知识与我目前作为计算机视觉工程师的工作角色的相关性。

先决条件

机器学习的高级学位有几个选择的主题,反映了机器学习领域的发展方向。

机器学习的任何一门课程都有太多的内容要涵盖。因此,我攻读的理学硕士学位确保了学生在接受该课程之前具备以下先决条件。

  • 很好地理解线性代数和微积分(微分/最优化)
  • 基础水平统计和概率研究
  • 编程语言背景
  • 本科学习计算机科学、数学、物理或电子和机械工程

现在谈谈我从我的机器学习硕士那里学到的关键信息。

1.计算机视觉

让我从本课程中我最擅长的模块开始。

计算机视觉和深度学习研究是我真正感兴趣的机器学习领域。也许我被吸引到这个领域是因为技术发展的直接影响。

媒体对计算机视觉技术在过去几十年里取得的进步大加赞赏。面部识别系统的快速出现是不容错过的。在主要的国际机场、银行和政府机构很难找到面部识别系统。

我硕士期间的计算机视觉研究非常有条理。我们不期望你直接跳到实现和分析最先进的技术。

事实上,你后退了好几步。您从了解基本的图像处理技术开始,这些技术是在我们今天看到和使用的计算机视觉高级技术出现之前开发的。

Unsplash 上由 Gery Wibowo 拍摄的照片

在深度学习中,我们知道卷积神经网络的较低层从输入图像中学习低级模式,如线条和边缘。

但在卷积神经网络(CNN)引入计算机视觉之前,有基于启发式的技术用于检测感兴趣的区域和从图像中提取特征。

我的计算机视觉研究确保了我理解该领域的基础,获得了一些关于这些启发式技术如何工作以及在实际应用中如何使用的知识。

计算机视觉研究为我提供了传统机器学习技术的知识,以处理图像,提取特征并对从图像中获得的描述符进行分类。

以下是我在计算机视觉研究期间引入的几个关键主题和术语:

随意跳过定义。我把这些放在这里是为了给好奇的人提供一些信息…

  • (尺度不变特征变换)SIFT :这是一种计算机视觉技术,用于生成图像关键点描述符(特征向量)。生成的描述符包含关于诸如边、角和斑点的特征的信息。该描述符可用于检测不同比例和失真的图像中的对象。SIFT 被用在诸如对象识别、手势识别和跟踪的应用中。这里有一个介绍这项技术的原始研究论文的链接。SIFT 的关键在于它的检测特征对于任何仿射变换都是不变的,例如缩放、平移和旋转。
  • (梯度方向直方图)HOG :这是一种用于从图像中提取特征的技术。所提取的特征是从通过图像内的边缘和拐角提供的信息中导出的,更具体地说,是从图像内的对象中导出的。对这些技术的简单描述是,它识别图像内的边缘(梯度)、角和线的位置,并且还获得关于边缘方向的信息。HOG 描述符生成直方图,该直方图包含从图像中检测到的边缘分布信息和方向信息。这种技术可以在计算机视觉应用和图像处理中找到。这里有一个链接提供更多信息
  • 主成分分析(PCA): 对特征丰富的数据集进行降维的算法。降维是通过将数据点从较高维度投影到较低平面来实现的,但仍然保持信息并使信息损失最小化。

其他值得一提的话题如下:

  • 线性插补
  • 无监督聚类(K 均值)
  • 视觉单词包(视觉搜索系统)

在我学习的早期,我被期望开始开发基于计算机视觉的应用程序。对象分类是一个热门话题,也是一个相对容易获得一些基本知识和实现的话题。

在我的研究中,我的任务是在 Matlab 中开发一个视觉搜索系统。

Matlab 是一种为高效数值计算和矩阵操作而开发的编程语言,Matlab 库配备了一套算法和可视化工具。

过去在 JavaScript、Java 和 Python 方面的编程经验帮助我轻松掌握了 Matlab 编程语法,这样我就可以全心全意地专注于计算机视觉方面的研究。

更多信息…

要实现的视觉系统相当简单,它的工作方式是通过系统传递查询图像,然后系统产生一组与传递到系统中的查询图像相似的图像结果。

我应该提到,该系统包含一个存储图像的数据库,用于从中提取结果图像(q 查询图像,然后输出结果图像)。

视觉系统没有使用任何花哨的深度学习技术,而是前面提到的一些传统的机器学习技术。

您只需传递一个转换为灰度的 RGB 图像,然后对该图像应用一个特征提取器;此后,提取图像描述符并将其表示在 N 维特征空间上。

在这个特征空间中,通过计算两个 N 维点之间的欧几里德距离,可以计算出相似的图像。

事情开始变得严重…

理解计算机视觉不仅仅局限于处理图像;你被期望在视频上利用算法和技术。

请记住,视频只是图像序列,因此在输入数据的准备和处理方面,您并没有学到任何新东西。

如果你使用一个物体检测框架,比如 YOLORCNN 等,那么在一系列图像中的物体跟踪似乎是非常琐碎的。但是要认识到,研究计算机视觉不是使用预先训练好的网络和微调。它是关于理解这个领域本身是如何在这些年中发展的,获得坚实理解的最好方法是通过调查随着时间的推移而发展的各种传统技术。

因此对于目标跟踪的任务,引入了以下主题:

  • 斑点跟踪器
  • 卡尔曼滤波器
  • 粒子过滤器
  • 马尔可夫过程

作为计算机视觉工程师的相关性

老实说,在我目前的角色中,我还没有使用过任何传统的机器学习分类器,我也不认为我会很快使用。

但是,为了让您了解所提到的一些技术的相关性,有必要说明一下,自动驾驶汽车、车牌阅读器和车道检测器结合了前面讨论的一两种方法。

左图:布拉姆·范·奥斯特在 Unsplash 上拍摄的照片。右图: Trent SzmolnikUnsplash 上拍摄的照片

2.深度学习

深度学习是计算机视觉研究的自然进展。

一些深度学习主题已经包含在计算机视觉模块中,而深度学习的其他主题是传统计算机视觉技术的扩展或改进。

深度学习主题的教学采取了与我的计算机视觉研究相似的道路,即在转向高级主题和应用程序开发之前,创建对该领域基础的坚实理解。

图片来自 kisina/Getty Images

深度学习研究始于对图像基本组成部分像素的理解。

您很快就会知道,数字图像是包含像素集合的网格。

在理解了图像的原子基础之后,您将继续学习图像是如何存储在系统内存中的。

framebuffer 是系统内存中像素存储位置的名称(没有多少 MOOCS 会教你这个)。

照片由盖瑞·维博沃Unsplash 上拍摄

我也了解了照相设备是如何捕捉数字图像的。

我不得不承认,对智能手机相机如何捕捉图像有一些直觉是很棒的。

让我们快进到一些更酷的东西。

不了解卷积神经网络(CNN)就无法学习深度学习,它们是齐头并进的。

我的研究介绍了过去 20 年中 CNN 的引入和发展时间表(从 LeNet-5 到 RCNNs)以及它们在取代传统管道以完成典型计算机视觉任务(如对象识别)中的作用。

在我的研究中,介绍了在深度学习早期出现的不同 CNN 架构的探索。 AlexNetLeNetGoogLeNet 是案例研究,用于了解卷积神经网络的内部结构及其在解决目标检测、识别和分类等任务中的应用。

我学到的一项重要技能是如何阅读研究论文。

阅读研究论文不是你直接学到的技能。如果你对深度学习和一般的学习很认真,去信息和研究的来源总是一个好主意。利用深度学习框架提供的预训练模型相当容易。不过,高级研究希望您了解所呈现的每种架构的技术和组件的内在细节,这些信息只在研究论文中呈现。

以下是深度学习模块中涵盖的主题摘要:

请随意跳过这些定义。我把这些放在这里是为了给好奇的人提供一些信息…

  • 多层感知器(MLP) :多层感知器(MLP)是几层感知器一个接一个地连续堆叠。MLP 由一个输入层、一个或多个称为隐藏层的 TLU 层以及一个称为输出层的最终层组成。
  • 神经风格转移(NST): 利用深度卷积神经网络和算法从一幅图像中提取内容信息,从另一幅参考图像中提取风格信息的技术。在提取样式和内容之后,生成组合图像,其中所得图像的内容和样式源自不同的图像。
  • 递归神经网络(RNN)和 LSTM :神经网络架构的一种变体,可以接受任意大小的输入,并产生随机大小的输出数据。RNN 神经网络结构学习时间关系。
  • 人脸检测:这个术语指的是实现可以自动识别和定位图像和视频中人脸的系统的任务。面部检测存在于与面部识别、摄影和动作捕捉相关联的应用中。
  • 姿势估计:从提供的数字资产,如图像、视频或图像序列中推断身体主要关节位置的过程。姿态估计的形式存在于诸如动作识别、人类交互、虚拟现实和 3D 图形游戏的资产创建、机器人等应用中。
  • 物体识别:识别与 a 类目标物体相关的过程。对象识别和检测是具有相似最终结果和实现方法的技术。尽管在各种系统和算法中识别过程先于检测步骤。
  • 跟踪:一种在一段时间内在一系列图像中识别、检测和跟踪感兴趣对象的方法。在许多监控摄像机和交通监控设备中可以找到系统内跟踪的应用。
  • 目标检测:目标检测与计算机视觉相关联,描述了一种能够识别图像中期望的目标或身体的存在和位置的系统。请注意,要检测的对象可能出现一次或多次。

其他值得注意的主题和子主题包括神经网络、反向传播、CNN 网络架构、超分辨率、手势识别、语义分割等。

作为计算机视觉工程师的相关性

这基本上是我的面包和黄油。

迄今为止,我已经在边缘设备上集成了人脸检测、手势识别、姿势估计和语义分割模型,用于游戏目的。

在我目前的角色中,我实施、训练和评估了许多深度学习模型。如果你想在先进的公司里与许多前沿算法、工具一起工作,那么深度学习是一个可以让你处于人工智能实际商业发展前沿的领域。

3.论文

硕士论文的目的是使你能够利用你在研究中获得的所有技能、知识和直觉来设计一个基于现实生活的问题的解决方案。

我的论文是基于利用计算机视觉技术对四足动物(四条腿的动物)进行运动分析。我用来进行运动分析的关键计算机视觉技术是姿态估计。

这是我第一次接触深度学习框架的世界。我已经决定,我的运动分析解决方案将是一个基于深度学习的解决方案,利用卷积神经网络。

对于框架的选择,我在 Caffe 和 Keras 之间来回选择,但是我选择了 PyTorch,因为它有与任务相关的现成的预训练模型。Python 是我选择的编程语言。

左: PyTorch 。右: Python

以下是我通过论文学到的一些东西:

  • 迁移学习/微调
  • Python 编程语言
  • C#编程语言
  • 姿态估计的理论知识
  • 关于如何使用 Unity3D 进行模拟的知识
  • 使用谷歌云平台的体验

关于运动分析的更多信息

运动分析是一个术语,指从清晰的运动图像或代表运动顺序的图像序列中获取运动信息和细节的过程。

利用运动分析的应用和操作的结果是关于运动检测和关键点定位的最直接的形式细节。复杂的应用程序能够利用连续的相关图像逐帧跟踪对象。

如今,当在时间数据上使用时,运动分析及其各种应用形式提供了显著的益处和丰富的信息。

不同的行业受益于通过运动分析提供的结果和信息,如医疗保健、制造、机械、金融等行业。有各种各样的用例以及应用运动分析的方法来解决问题或者为消费者创造价值。

运动分析在整个行业中使用方式的多样性间接引入了运动分析的各种不同子集,如姿态估计、对象检测、对象跟踪、关键点检测和不同的其他子集。

关于论文的更多信息

本论文提出了一种利用计算机视觉和机器学习技术进行运动分析的方法。在所提出的方法中,使用合成四足动物图像的数据集来训练预训练的关键点检测网络。

关键点-RCNN 是 Pytorch 库中的一个内置模型,它扩展了原来的 Fast-RCNNFast-RCNN的功能。论文中的方法修改了在 COCO 2017 对象检测和分割数据集上预先训练的关键点-RCNN 神经网络架构,并用合成生成的数据集重新训练最后一层。

通过扩展人体上具有 17 个关节的人的关键点检测的基线框架,我提出了该框架的扩展,以预测具有 26 个关节的几个生成的四足动物的主要关节位置。

论文结果片段

定量和定性评估策略用于显示改进的关键点-RCNN 架构在预测人工四足动物关键点时的视觉和度量性能。

如果你已经做到了这一步,我为你鼓掌…让我们结束这篇文章吧

结论

机器学习领域瞬息万变;我的课程内容与 2018-2019 年相关。在 2020 年,我们已经看到了对机器学习其他几个领域的巨大贡献。因此,如果你参加了机器学习课程,并且正在学习我在本文中没有提到的主题或学科领域,请不要感到惊讶。

别忘了,在人工智能中,不仅仅是你创建的模型需要学习,作为机器学习实践者,你必须跟上新的研究,所以要不断学习。

我希望这篇文章对你有用。

要联系我或找到更多类似本文的内容,请执行以下操作:

  1. 订阅我的 YouTube 频道 即将发布的视频内容 这里
  2. 跟我上
  3. LinkedIn 上连接并联系我

[## 拿了一个机器学习的硕士学位,我(非常)没有准备

我从全职到人工智能硕士生过渡的探索。

towardsdatascience.com](/took-a-masters-in-machine-learning-and-i-was-very-unprepared-7aba95f044a8) [## 我作为计算机视觉工程师的第一天

剧透:我引起轰动

towardsdatascience.com](/my-first-day-as-a-computer-vision-engineer-8b59750c79a0)

作为数据分析师,我在第一个项目中学到了什么?

原文:https://towardsdatascience.com/what-i-learnt-in-my-first-project-as-a-data-analyst-2c97a62bf1c0?source=collection_archive---------25-----------------------

第一步通常是具有挑战性的,然而,它通常是最令人兴奋的

图片提供:www.vippng.com/

当我 22 岁开始 Enka Analytics 的时候,我刚刚毕业。我完成了统计学和数学的毕业,接着是机器学习的认证课程。机器学习似乎很有趣。它包括摆弄数据,制作合适的模型,在部署了无数合适的算法后,试图获得最高的准确性。机器学习真正让我感兴趣的是它的应用。想象一下,根据过去的行为预测未来,制定数据驱动的战略,为任何企业节省数百万美元,通过预测人体内的细胞是否会变得恶性来拯救生命,发现新的资源和技术,提高全球人民的生活水平,等等!我对这项技术的能力有了一点了解。我们在这里谈论的是范式转换技术。

凭借有限的技能和热情的创业精神,我在 22 岁生日前夕离开了第一份工作,开始对这个行业进行更多的探索。不久后,我成立了自己的分析公司,命名为 Enka(不要与土耳其建筑公司混淆)。我独自一人,没有正式的伙伴或同事一起工作。幸运的是,我马上得到了我的第一个客户,我的一个亲戚,他从事卫生巾制造业务。这是一家初创公司,对行业来说相当先进。我叔叔和他的团队从一开始就专注于创建数据基础设施来提高业务效率,到他成为我的第一个客户时,已经创建了一个大型数据库。我以无限的热情接手了这个项目。当我写这篇文章的时候,几个月过去了,我的项目已经接近尾声。在这个过程中,我学到了一些宝贵的经验,我想与读者分享:

问正确的问题

对于任何提供服务的企业来说,最重要的是理解问题陈述,即客户面临的问题,客户想要解决的问题。这是任何项目的第一步。然而,说起来容易做起来难。大多数时候,客户面临的问题是非常普通的,不可量化的。例如,一般的问题陈述是,测量组织所雇佣的销售团队的生产力。这就满足了大多数人的要求,但是当涉及到赋予它一些实质内容时,分析师可能会想知道问题陈述的关键性能指标(KPI)是什么。如何判断销售团队是否高效?生产力的基准是什么?

有大量的数据,有数百万个观察值和多个列。如果目标不明确,很容易迷失方向。这就是为什么,有一个定义明确的问题陈述是非常重要的,这只有在客户和分析师之间有更深刻的理解时才有可能。分析师的工作是提出问题,帮助他从数据中得出有意义的答案。

了解客户所属的行业

有两种类型的分析公司。一个专门从事某一特定行业,另一个处理多个行业。我的公司属于后者。作为一名数据分析师/科学家,不太可能对每个行业都有所了解。然而,知识是有帮助的。了解某个行业有助于分析师将调查结果联系起来。事情开始变得更有意义,错误很容易被发现。根据问题陈述,数据分析师/科学家对数据可能呈现的内容以及潜在的原因有一个直观的想法。更重要的是,如果发现变量之间的关系在统计上是显著的,它也有助于区分相关性和因果关系。在我看来,这是数据分析有趣的地方。在这个旅程中,你可以了解不同的行业。

在进行分析时与客户保持联系

很多时候,分析师和客户之间存在沟通障碍。这是一个比听起来更大的问题。有时,客户所属的行业变化很快。如果分析师未能理解这些变化,结果可能会产生误导。解决这个问题的一个方法是与客户保持联系。因此,在需要时,可以根据客户的需求进行分析。此外,客户被认为是她所在领域的专家。她的专业知识与分析师的技能相结合,会产生更有意义的结果。让客户尽早参与也有助于不偏离轨道,因为意图和目标经常会被讨论。

做一名优秀的数据分析师,然后做一名优秀的数据科学家

数据科学似乎比数据分析更有吸引力。但是,后者是成为一名优秀数据科学家的敲门砖。如果你不是一个好的数据分析师,你永远不可能成为一个好的数据科学家。当我开始进入这个领域时,我犯了一个很大的错误,那就是直接跳入数据科学,而没有关注太多的数据分析。我艰难地认识到数据分析的重要性。如果输入数据是垃圾,模型将永远无法高效运行。此外,数据分析提供了对数据的隐藏见解。描述性和诊断性分析可用于识别数据中的模式,然后进一步补充模型构建(预测性和规定性分析)。数据分析还有助于分析师理解数据,获得关于数据的直觉,这在更高级的分析阶段进一步帮助分析师。

以精确有效的方式传达结果

我在第一个项目中面临的主要挑战之一是传达结果。如果客户不理解调查结果,那么调查结果和所有努力都将付诸东流。因此,有必要在这最后一节花更多的心思和精力。图表要尽量用,能一口气看懂就行。客户通常没有时间通读一份 10 页的报告。因此,调查结果应该尽可能精确,有必要的背景和不言自明的图表。它应该以故事的形式来组织。制作图表时,使用合适的调色板很重要。使用不吸引眼球的颜色会对报告产生负面影响。其次,图表不能太乱。它应该简单明了,容易传达调查结果。说起来容易做起来难。所以,这一节不可掉以轻心。

这些是我作为数据分析师在第一个项目中学到的许多事情中的一部分。这是一次辉煌的经历,充满了挑战和学习。我几乎每天都学到一些东西。这有时令人沮丧,但经过几分钟或几小时的头脑风暴,我最终找到了解决办法。

我喜欢 V1 熊猫的什么

原文:https://towardsdatascience.com/what-i-like-from-pandas-v1-5d9108d9c176?source=collection_archive---------36-----------------------

熊猫 1.0.0 更新简介

来源:维基百科

毫无疑问,Pandas 已经成为 Python 社区中数据科学的重要组成部分。几乎所有的数据操作都以熊猫为基本步骤。2020 年,熊猫发布了它的 1.0.0 版本,让我撞见了它们的Documentation Page并发现了很酷的功能。在所有的特性中,这里是我最喜欢的

将数据帧转换为降价

假设我们有这样一个数据框架(确保您使用的是 1.0.0 版或更高版本)

我每天都在使用 markdown(和 latex)来写报告、文章或手册。和桌子是非常重要的一部分。我几乎所有的作品都包含一个表格。把一个表格剪成.png 文件并不是我真正擅长的,而且文件更大。所以我总是以访问表格生成器告终。

我发现有一个DataFrame.to_markdown方法真的很有帮助。我可以直接从 pandas 打印我的表格到 markdown 支持的文档。这是我最喜欢的。只要做一个pd.to_markdown(),我就可以得到它的降价形式。

注意:你需要一个tabulate库来完成。使用$ pip install tabulate安装

降价格式结果中的 df

新数据类型

Pandas 会自动设置数据类型。但是,string或除其扩展类型之外的任何非基本数据类型都将被转换为object

在熊猫 1.0.0 中,他们为stringboolean发布了自己专用的数据类型(之前用的是numpy)。而且他们还让DataFrame.convert_dtypes自动把数据类型改成最合适的。

看看下面的区别

已转换数据帧(左)和未转换数据帧(右)的数据类型

没有什么真正影响到我,因为我不太喜欢优化数据类型的使用。相反,我通常以矢量化或类似的方式结束,并将它们作为张量进行处理。

但是,显式地使用string而不是object将帮助我快速判断我的数据。

现在,让我们试试另一件事如何使用一些重新索引。观察数据类型是如何变化的。

仔细检查丢失的值。Pandas 默认情况下(在撰写本文时)将缺少的值更改为np.NaN

然而,熊猫 1.0.0 实际上支持NaN数据类型,称为pd.NA。当我们convert_dtypes时,NaN值将被转换成pd.NA。参见下面的例子

如果您看到了差异,向未转换的数据帧中添加一个缺失值会将数据类型更改为object。另一方面,转换后的 datframe dtypes 支持缺失值,因此它们不会更改数据类型。这使数据帧进入一致性。这是我长久以来一直在寻找的。

熊猫。那

Pandas.Na是缺失值的 pandas 数据类型(通常称为NaN)。正如我们之前演示的,默认情况下,pandas 将缺失值设置为 not as pd.NA。这是因为 pandas 数据类型是基于 numpy 构建的,所以它是一个numpy.nan。为了改变它,我们必须手动将数据类型从numpy改变为pandas(您可以使用convert_dtypes)。

当我想选择pandas数据类型而不是numpy时,我想向您展示一个场景。比方说,我们有缺失的值。如果我们要通过一些特定的值来使用fillna,那么NaN发生了变化,而且还改变了数据类型。

现在,最重要的是,pandas 数据类型(在convert_dtypes()之后)在某种程度上不能被改变。与前面的示例不同,用 string 填充整数缺失值可能会导致错误。这种稳健性正是我们在数据中所需要的。看看下面出现的错误

结论

Pandas 新的专用数据类型带来了与以前版本的对比差异。尽管在某些情况下使用不合适,但这些新类型是一个很大的进步。

DataFrame转换为 markdown 格式的新方法也对作者产生了很大的影响,尤其是在处理大量数据时。

熊猫 v1 更新还有很大的使用潜力。请看一下它的文档页面

通过分析 WhatsApp 聊天,我了解到

原文:https://towardsdatascience.com/what-i-understood-by-analyzing-whatsapp-chats-816a62b1aeee?source=collection_archive---------35-----------------------

我们在日常 WhatsApp 聊天中留下的数据轨迹如何揭示深刻的见解

确实很难想象我们生活中有一天不使用 WhatsApp 至少一次。这就是这个应用在我们日常生活中的重要性。Whatsapp 为有朋友、家人和同事的群体提供了一个共存的绝佳平台。多年来,我们已经在应用程序中发出了数千条信息,阅读了数百万条信息。因此,我觉得分析这些信息会产生非常令人惊讶的结果,并给出我们生活中许多方面的细节,而且确实如此!!

简单的谷歌搜索让我找到了一些允许人们分析 Whatsapp 聊天记录的网站。我尝试了大部分的应用程序,我想建立一个小的应用程序,它将提供比现有的应用程序更多的分析,以及用户想要看到的东西。

  1. 该应用程序应该能够自动检测上传的聊天是否是一个群体,或者是否是两个人之间的聊天,并相应地显示相关的可视化效果,而不必单击任何其他按钮。用户只需上传聊天。
  2. 从用户的角度来看,消息、表情符号、媒体等的绝对数量几乎没有任何意义。因此,我的重点是在两个人的统计数据之间或与平均值之间提供良好的比较,这样更容易理解和可视化,也增加了使用这个分析器的兴奋感。
  3. 在用户想要放大到某个特定时间段的情况下,可以指定要分析的聊天持续时间。有这样一个输入帮助我理解了新冠肺炎对信息的频率和影响。
  4. 能够下载分析和可视化的报告,可以很容易地与他人分享。

考虑到这些,我用 shiny 和 R-Markdown 创建了一个仪表板。

你可以在这里找到我创建的仪表盘:【https://reubenjoseph13.shinyapps.io/Whatsapp_Analyzer/】

通过这篇文章,我想向你展示从一次聊天中可以提取的信息的深度。请随意浏览文章中的不同图片,这些图片大多不言自明。如果你想了解这个项目技术方面的更多细节,你可以在这里阅读。但是别忘了看这篇文章的结论部分。

1.通用图和图形—个人聊天和群聊都通用

基本求和

这些只是一些非常基本的对话总结,如消息总数、表情符号等,以及一些使用这些信息计算的平均值。收到消息的天数百分比可用于了解聊天的活跃程度。如果是个人聊天,此表会稍有变化,因为活动成员数量、名称更改次数等项目不适用。

群组聊天的汇总表

个别聊天的汇总表

基本可视化

和你朋友的小组在周末或工作日有更多的消息吗?你倾向于在一天中的什么时候发送更多的信息?谁是小组中最活跃的人?下面的观想将帮助我们回答这些问题。下面的图表显示,星期六是大多数邮件发送的时间,大多数邮件在晚上 10 点发送。

在单独聊天的情况下,还会进行词汇分析,并比较一个人使用的独特单词的数量。您可以将这些数据展示给总是回复“mm”或“k”的人:)

“最常用的表情符号”和“常用词”的图表显示了在小组中最活跃的 6 个人,只是为了了解聊天中发生了什么。为特定的个人寻找最常用的单词和表情符号的选项也在后面的阶段给出。

字云 也显示在个人聊天和群聊中(既针对一般的群组,也针对群组内的特定人)。这有助于描述正在发送的文本。云这个词在不同的群体和不同的人之间有很大的不同。

2.个别聊天的具体分析

如前所述,我试图提供这两个人之间各种统计数据的大量比较。对于个人聊天,有两个表—一个用于比较琐碎的数据,另一个用于非常有见地和更具分析性的数据。

这个表格非常简单明了。绿色用于突出显示较高的值,红色用于突出显示较低的值。如果两个人的值相同,则使用黄色。现在让我们看下一个有更深入分析的表格。

回复的时间是我们希望在朋友中检查的一个主要因素。回复的时间也是两人关系水平的一个指标,不同的人和某人聊天的时间会有很大的不同。这个值可能有点偏高,因为很多时候,晚上发送的消息的回复要到第二天才收到。

我们总是想知道自己是不是那个总是先发信息开始谈话的人。聊天数据可以告诉我们谁是对话的发起者,谁是对话的结束者。为了找到这一点,我不得不思考 WhatsApp 中的对话通常是如何发生的。当有人开始对话时,我们会在接下来的两天里不停地给对方发信息。有时,对话在那一刻就结束了,只交换了几条信息。几天甚至几周后,当其中一方开始发信息时,下一次对话就开始了。因此,当两个连续消息之间的间隔超过 2 天时,将开始新的对话。这就是信息如何被分组到不同的对话中。

找到夜晚和早晨发送信息的平均时间将会模糊地给出一个人的睡眠模式的概念。这里很明显我一般比我的朋友醒得早(或者至少我早上比她早查看我的 WhatsApp!)

3.群聊的具体分析

报表生成

仪表板还可以选择将分析结果导出为 HTML 文件,以便与朋友分享。这里的可以看到导出文件的示例

结论

整个项目只是让我自己对数据分析和可视化有了更多的了解,帮助我理解了很多错综复杂的细节。这绝对是一个伟大的学习周期。我鼓励任何开始从事数据分析的人从事这样的项目。

与你的朋友比较各种统计数据,并就谁开始发送更多的消息和发送更多的消息与他们友好地开玩笑,这很有趣。其他朋友也跟我说,看看所有的对比表,挺有意思的。

这让我意识到,仅仅一次聊天就能挖掘出很多真知灼见。在分析一个人的几次聊天时,通过检查他通常在早上和晚上发送信息的时间以及他们的睡眠模式,了解他/她是否是对话的发起者,很容易找出这个人的信息模式?了解他们在特定群体中的活跃程度,这个列表是无止境的。这些见解将有助于描绘一幅人的本质的图画。

尽管 WhatsApp 坚称自己无法“阅读”我们的信息,但他们可以轻易获得信息发送时间、发送对象、阅读时间等数据。仅仅是一个人的这些数据就足以得到这个人的完整轮廓。如果我发现 WhatsApp 会将这些数据用于某些用途,那就不足为奇了。当你有一个非常有代表性的样本的如此丰富的数据的时候,不能得到信息的内容几乎不会是一个因素。这些见解肯定会被用于产品的开发,我希望它能保持下去。其他没有吹嘘端到端消息加密的消息平台将能够获得更丰富的数据集,天知道他们会用这些做什么!

研究这些数据让我意识到,当我们使用这些公司的产品时,我们向它们提供的数据是多么有价值。

仪表盘

希望你喜欢这个小项目,如果你想了解这个项目技术方面的更多细节,你可以在这里阅读。

如果数据自己可视化会怎样?

原文:https://towardsdatascience.com/what-if-data-visualized-itself-fd2e5dc1d744?source=collection_archive---------54-----------------------

大自然如何组织隐藏的信息层

作者图片

“在这种复杂的多维数据环境中,可视化的作用将是提供识别这些(自然)现象的涌现模式和过程的能力的关键。可视化本身将变得有机,因为它需要适应模拟来自广泛来源的信息,从微观/有机到宏观/行星状态。”[1]

在将计算和算法设计方法应用于当代设计实践的过程中,计算机已经成为一种能够将设计者的逻辑转化为计算逻辑,从而实现抽象自动化的媒介。这种应用的例子包括生成印刷系统和参数化建筑实践,其中形式由参数值的自适应和模块化范围来指定,这些变量通过输入的数据流量来定义它们自己。计算允许规则的自动化和响应这些数据的表格的实时生成,从而在许多情况下挑战了先前持有的过程和产品之间的区别。

生成的抽象允许设计师超越任意的社会形式惯例。使用模拟复杂系统的模型导致模式的产生,这些模式是超越文化和社会影响的自然发生过程的结果。生成过程帮助我们理解世界,并提醒我们宇宙本身就是一个生成系统,千变万化,千变万化。因此,从自然中寻找不仅是描述性的,也是组织性的灵感是有意义的。

在我们对熟悉的解释模型的热切渴望中,我们冒着没有注意到我们自己的倾向和自然现象中固有的可能性之间的差异的风险[2]

大自然似乎留下了它的努力的证据,我们是这些努力的见证人,却忘记了这样一个事实:每一种模式都仅仅是运动中更长时间运作的快照,一种信息交换的快照。

演职员表:利根在的免费图片

时间的流逝被记录下来,例如,树木每年都会长出一个新的保护套。树的横截面以年轮的形式揭示了这些数据层,年轮是由于四季生长速度的变化而产生的。树木年轮在有明显冷热季节的环境中更明显。典型地,一个年轮记录了树生命中一年的流逝。年轮的宽度与特定年份的降雨量成正比。因此,一棵老树的年轮可以告诉我们古代的气候,不同大陆的年轮可以进行比较,以推断不同的气候条件。在某些贝壳和珊瑚上也可以看到类似的年轮。

对于一个信息设计师来说,这种按树序的 (dendron = tree,Chronos = time,logos = the science of) 现象可以被视为一种数据可视化,因为:
1。它通过视觉或经验传达量化信息,即树龄、当地气候条件等。
2。它以某种示意形式提取信息,包括信息单元的属性或变量,即环的数量、环的宽度等。

具有再生能力的自然似乎拥有一种类似于某些生殖艺术和设计实践的智能。树木在这方面的作用是作为数据收集文化探针,通过与环境的复杂互动,不仅包含而且传达留在树木上的印记。

类似地,例如一堆西红柿或草莓,虽然形状相似,但通过其可观察到的特征来指示成熟度。它们可以放在一个可见光谱上,在这种情况下,从硬到软,或从绿色到红色。由于它们的形状相同,信息容器被忽略,而里面的内容成为焦点。以这种方式比较一个西红柿和另一个西红柿,让人想起一种可视化技术,叫做“小倍数”,由爱德华·塔夫特推广。小倍数指的是许多具有相同比例和轴的图表,这些图表彼此相邻放置,因此易于相互比较。

(左-Rod Miles at FreeImages)(右-Simone Dalmeri at Unsplash )绣球花的颜色从蓝色到粉色不等,取决于它们生长的土壤类型,直接映射到土壤的 pH 值水平。

(左图 Unsplash 的 Adam niecioruk)一些地衣品种的颜色和纹理表明了空气污染的程度(右图- 作者的图片)这些铅笔看起来非常像直方图。

这样的例子本身就是独立的系统,它为我们提供了查询信息如何在交换时自动可视化的方法,而不需要外部的干预。当我想到这个想法时,我很快发现一个类似的主题已经被 Dietmar Offenhuber】理论化了,被称为“自记”或“索引可视化”。自记可视化肯定会根据数据的物理性和物质过程对数据进行重新想象,并为此勾勒出清晰的方法。物体留下的痕迹 变成了 可视化,而不是将数据抽象成隐喻。

Autographic vis 也植根于查尔斯·桑德斯·皮尔士的符号学,它将索引定义为"一个对象与其在现实世界中的影响之间的因果联系:培养皿中染色的细菌培养物,环境中污染物的化学特征,书页上的磨损。索引将抽象的信息领域与身体经验联系起来。**【3】然而,它们往往是反馈回路的符号,而不是整个系统本身的符号。另一方面,我提到的例子,建议将自动签名方法引向系统框架。正如 Tufte 将“数据-墨水”的最大化理论化,这一有机过程推测了“数据-能量”的最大化。数据既不会从一个集中的位置出现,也不会被可视化,而是随着时间的推移从许多因果循环的相互作用中出现。这种关于大数据的讨论方法可能会减少少数科技巨头对信息的垄断。

国内数据串流公司是一家数据可视化工作室,将这种技术应用于他们交流信息的方式。他们的项目经常使用人类作为一种手段来产生集体和参与性的数据可视化体验,这可能采取以数字为媒介的物理环境的形式。通过将图形和图表从它们熟悉的数字环境中取出,并放置在这些独特的物理环境中,信息呈现出一种雕塑或面向对象的结构。人们也更有可能分享他们的故事,一旦他们在个人电脑的“个人领域”之外经历过,在那里他们可以更容易地比较不同的有形价值。

例如,在一个名为情绪测试的项目中,他们只建立了一套简单的规则,即数据将由个人贡献者进行物理颜色编码。新兴的可视化是一个人口统计叙事的新兴地图,可以很容易地阅读,同时仍然保持其复杂性。数据及其抽象只有在人们的参与下才会具体化。随着每一次互动,作品吸收了更多的层次,并在某一点上跨越了从过程到实际产品的门槛,这可以被称为可视化。尽管如此,即使在那之后,它也不会停止成为一个过程

它可以被描述为空间中的数据语言,而不是图表。这种数据空间的概念仍未被探索,其中一个图可以被放置在物理或数字世界中,以便它在空间和时间上展示自己。只有当人们意识到他们希望在受控环境中处于什么位置以及如何处于受控环境中时,信息才会出现,并且可视化是特定位置和参与者部分所独有的。在不同的背景下,艺术品会以不同的方式出现,从而展示模块化和短暂性的主题。这类项目提出了一个问题——数据生成者和数据设计者的角色必须是互斥的吗?

信息研究员韦斯利·威利特想象到 2033 年,自主智能体将如何被使用,以实时捕捉和可视化复杂的模式,从而真正模仿自然。他的设想是采用“Cetonia scarabs”的形式,可以部署成无人机群。每个机械昆虫都配备了嵌入式摄像头和传感器,显然可以调查、计算和记录几乎任何事情。据说,该集群还能够进行内部协调,以形成交互式图表、图形和可视化图表来显示数据。

如果处理得当,这种分散的设计过程可以成为可视化多样性和粒度的一种方式,否则很难做到这一点。它还可以减少将复杂莫测的事物可视化的劳动,比如互联网、加密货币或其他形式的超文本。

“如果数据的视觉表示与数字表示一致,则图形不会变形。那么数据的“视觉表现”是什么呢?在图形表面进行物理测量?还是感知的视觉效果?我们怎么知道视觉图像代表了潜在的数字?”[4]

我收集的更多例子:https://in . Pinterest . com/vivek m2/self-visualizing-information/

引文:

[1]利马·曼努埃尔,视觉复杂性:信息的映射模式(纽约:普林斯顿建筑出版社,2011)

【2】凯勒(1985)于米切尔·雷斯尼克,《了解生命》(麻省理工学院媒体实验室,剑桥:发表于《人工生命》第 1 卷,第 1-2 期,1994 年春)【https://web.media.mit.edu/~mres/papers/ALife/ALife.html

【3】奥芬胡伯,迪特尔马&奥尔坎·特尔汉,索引可视化——无数据信息显示(2015)

[4]塔夫特,爱德华·r .数量信息的视觉显示(切希尔:图形出版社,1983)

其他参考:

Anderson,Mally,探索去中心化:区块链技术和复杂协调,《设计与科学杂志》(麻省理工学院出版社,2019 年 2 月)【https://jods.mitpress.mit.edu/pub/7vxemtm3】T21(2019 年 5 月 20 日访问)

格兰特·大卫·博尔默,《数字文化的理论化》(纽约:塞奇出版有限公司;1 版 2018)

本杰明·布拉顿,《堆栈:论软件和主权》(伦敦:麻省理工学院出版社,2016 年)

本杰明·布拉顿,“后人类世的一些痕迹效应:加速论地缘政治美学”,《e-flux》,46 (2013) [后人类世的 https://www.e-flux.com/journal/46/60076/some-trace-effects-——加速论地缘政治美学/](https://www.e-flux.com/journal/46/60076/some-trace-effects- of-the-postanthropocene-on-accelerationist- geopolitical-aesthetics/)(2019 年 6 月 19 日获取)

Burnett,Kathleen,《走向超文本设计理论》(后现代文化 3.2,1993 年 1 月)http://PMC . iath . Virginia . edu/text-only/issue . 193/Burnett . 193(2019 年 6 月 19 日访问)

http://www.dataphys.org/list**&伊冯·詹森《物理可视化列表》(2012 年 7 月 6 日访问)

**加兰特,菲利普&埃伦·k·列维,《复杂性》(列奥纳多,第 36 卷,第 4 期,2003)页 259–267,JSTORwww.jstor.org/stable/1577312

加兰特菲利普什么是生成艺术?作为艺术理论语境的复杂性理论(第六届生成艺术会议,2003)

汉拉汉,帕特,《自我阐释现象》(斯坦福图形,2004 年 11 月)http://www . Graphics . Stanford . edu/~汉拉汉/talks/Self diagrating/(2019 年 6 月 28 日访问)

奥芬胡伯,迪特马尔,“自动签名可视化——在谷歌剑桥/波士顿奇演讲”(2019 年 3 月)https://www.youtube.com/watch?v=4_YNpx1R8i8(2019 年 6 月 28 日访问)

塔夫特,爱德华·r·展望信息(柴郡:图形出版社,1990)

沃尔多普,米契尔,《复杂性:在秩序和混乱边缘的新兴科学》(纽约:西蒙和舒斯特,1992)

维纳·诺伯特,《人类对人类的利用:控制论与社会》(伦敦:自由协会图书,1989)

如果 2016 年有更多年轻人投票会怎样?

原文:https://towardsdatascience.com/what-if-more-young-people-had-voted-in-2016-7242f251f8e6?source=collection_archive---------24-----------------------

如果 18-24 岁的年轻人参加了更多的投票,他们能改变选举结果吗?

几十年来,投票的年轻美国人(无论如何定义年轻)远远少于年长的美国人。这导致人们猜测,年轻人仅仅通过大量投票就可以改变美国大选的结果。考虑到这一点,我开始观察 2016 年是否会出现这种情况。具体来说,如果 18-24 岁的年轻人中有更多人投票,他们会改变选举结果吗?

众所周知,美国总统选举不使用民众投票,因此仅凭全国民调结果不一定能很好地预测结果会如何变化。选举人团意味着年轻选民的地理分布和他们的地区政治偏好都是相关的,而这两者都被国家数据所忽略。因此,我决定弄清楚如果更多的年轻人投票,各州的投票总数会有怎样的变化。

如果所有 18-24 岁的人都在 2016 年投票了会怎样?

利用各州的参与率,我能够计算出每个州 18-24 岁没有投票的人数。然后,利用每个州的投票后调查数据,我计算了每个州的每个候选人会有多少新选票。结果显示,希拉里·克林顿(Hillary Clinton)将赢得六个州,而不是唐纳德·特朗普(Donald Trump):亚利桑那州、佛罗里达州、佐治亚州、密歇根州、北卡罗来纳州和宾夕法尼亚州。这将使克林顿多获得 107 张选举人票,并以令人信服的 339 票对 199 票赢得选举团的胜利。

如果 18-24 岁的选民和 65 岁及以上的选民投票率相同会怎样?

当然,期望每个 18-24 岁的人都去投票是非常不现实的——没有哪个人口统计数据的投票率达到 90%,更不用说 100%了。也许一个更好的问题应该是——如果 18-24 岁的人和 65 岁及以上的人一样投票,会发生什么?

虽然结果不太引人注目,只是改变了两个州的结果,但这足以改变选举的结果。在这种情况下,佛罗里达州和密歇根州将由希拉里·克林顿而不是唐纳德·特朗普赢得。有了 45 张新的选举人票,希拉里将获得 277 票对 261 票的选举人团胜利。

结论

我们可以看到,如果每个 18-24 岁的人都投票,希拉里·克林顿会轻松获胜。也许这并不奇怪,因为没有人 100%参与。更有趣的结论是,18 至 24 岁的选民本可以通过与 65 岁及以上选民相同的投票率来改变选举结果,这是一个更现实的投票率。

这个最终图显示了上述每个场景中的胜利幅度,以及实际的 2016 年选举人团结果。

数据来源和假设

为了进行这项分析,我收集了投票后的民意调查数据,以及选民参与率和人口统计数据,全部按年龄分类。出口民调数据来自爱迪生研究公司,该公司为包括美国广播公司、美联社、哥伦比亚广播公司、美国有线电视新闻网、福克斯和全国广播公司在内的媒体财团进行出口民调。选民参与率和人口数据取自美国人口普查。数据操作和绘图是使用 python 中的 Pandas 和 Geopandas 完成的。我的笔记本和数据集可以在 Github 这里找到。

爱迪生收集了 29 个州的人口统计投票数据,以及全国人口统计投票偏好。他们收集了三个州 18-29 岁选民的投票数据,但没有收集 18-24 岁选民的数据。在这些州,我使用了 18-29 岁的数据。对于其余的 21 个州,我使用了全国 18-24 岁的投票偏好来代替州一级的数据。然而,值得注意的是,在这些没有州级 18-24 岁出口民调的州中,没有一个州是接近的——胜利的幅度从 12%(特拉华州,克林顿获胜)到 91%,平均胜利幅度为 29%。此外,当我添加额外的年轻选民时,这些州都没有改变获胜者,所以在这里使用全国数据应该不会影响结果。

此分析中的大假设是出口投票数据是准确的,因为在出口投票情况下很难实现代表性采样。如果那些愿意回答投票后调查的人和那些不想回答调查的人投了不同的票,结果可能会有偏差。此外,不清楚爱迪生使用了什么统计方法,所以不可能知道他们做了什么假设。幸运的是,人口普查数据非常全面,包含了所有 50 个州的大量选民参与和人口统计数据。此外,已经表明,如果选民投票率信息是错误的,那么它往往会高估投票,所以如果有什么,这种分析低估了年轻选民的潜在影响。

如果使用多个感受野进行图像修复会怎样?

原文:https://towardsdatascience.com/what-if-multiple-receptive-fields-are-used-for-image-inpainting-ea44003ea7e9?source=collection_archive---------35-----------------------

综述:基于生成多列卷积神经网络的图像修复

大家好。好久不见!今天,我们将讨论另一篇名为“通过生成式多列 CNN(GM CNN)进行图像修复”的修复论文。本文使用的网络架构类似于我们在之前介绍过的那些论文。本文的主要贡献是对损失函数的一些修正。

简短回忆

正如我在之前的文章中提到的,如何利用图像中剩余像素给出的信息对于高质量的图像修复至关重要。图像修复的一个非常直接的意义是直接复制图像本身中找到的最相似的图像补丁,并粘贴在缺失的区域上。有趣的是,我们应该认识到 对于实践中的缺失区域 并没有“正确”的答案。在现实中,给定一个损坏/屏蔽的图像,您无法知道原始图像(地面真相)进行比较。于是,我们就有了这么 许多答案中缺失的领域

简介和动机

从以前的修复论文中,我们知道感受野对于图像修复是非常重要的。对于一个 3×3 的核,我们可以通过 调整扩张率来控制它的 感受野。如果扩张率是 1,我们就有一个 3×3 的感受野。如果扩张率是 2,我们通过跳过一个相邻像素得到一个 5×5 的感受野,依此类推。你可以参考我以前的帖子来了解更多的细节。这里, 如果我们采用 3×3、5×5 和 7×7 个具有扩展卷积的内核会怎么样?本文将其定义为多栏式结构。

在我之前的关于上下文注意力层的帖子中,搜索与缺失区域最相似的图像补片的过程被嵌入到生成器网络中(即,这个过程被用在训练和测试阶段)。在这项工作中,这一过程仅通过设计一个新的损失项在训练中使用。

由于对缺失区域没有“正确”答案的事实,逐像素重建精度损失项(即 L 1 损失)似乎不适用于图像修复。作者提出 基于丢失像素的空间位置对 L1 损失项进行加权。 靠近有效(剩余)像素的空间位置对于 L 1 损失应该具有更高的权重,因为它们对于重建具有更合理的参考,反之亦然。

解决方案(简而言之)和贡献

图一。该方法给出了一些修复结果。图片来自王怡等人的论文 [1]

在我看来,这篇论文遵循了我们之前讨论过的图像修复的趋势。首先,作者采用了具有扩张卷积的多分支细胞神经网络,而不是单分支细胞神经网络。 在三个不同的分支中使用三种不同的核大小,用于实现不同的感受野和提取不同分辨率的特征。

其次, 引入两个新的损失项来训练网络 ,即置信度驱动的重建损失和隐式多样化马尔可夫随机场(ID-MRF)损失。置信度驱动的重建损失是加权的 L 1 损失,而 ID-MRF 损失与由预先训练的 VGG 网络计算的特征块比较相关。我们已经谈到了 MRF 的损失。你可以参考它来简单回忆一下。

图 1 显示了所提出的方法的一些修复结果。您可以放大以更好地查看这些高质量的结果。

方法

图二。提议的网络架构。图片来自王怡等人的论文 [1]

图 2 显示了提出的生成多列卷积神经网络(GMCNN)的网络架构。如您所见,有一个多列发生器网络、两个鉴别器(全局和局部)和一个用于计算 ID-MRF 损耗的预训练 VGG19。

发电机网络中有三列,每列使用三种不同尺寸 的滤波器,即 3×3、5×5 和 7×7。请注意,这三列的输出被连接起来,馈入另外两个卷积层,以获得完整的图像。

一维 MRF 正则化

图 3。使用不同的相似性度量搜索最近的邻居来修复结果。(a)使用余弦相似性的修补结果;( b)使用建议的相对相似性的修补结果;( c)地面真实图像(红色矩形突出显示填充区域)。图片来自王怡等人的论文 [1]

简单地说,对于 MRF 目标,我们希望 最小化生成的特征和由预训练网络 计算的地面真实值的最近邻特征之间的差异。在大多数以前的工作中,余弦相似性度量被用来搜索最近的邻居(你可以阅读我以前的帖子[ 这里 ]来回顾余弦相似性度量)。然而,这种相似性度量通常为不同的生成特征补丁提供相同的最近邻,并导致模糊的修复结果,如图 3(a)所示。

为了避免使用余弦相似性度量可能导致的模糊完整图像,作者采用了相对距离度量,修复结果如图 3(b)所示。你可以看到完成的图像具有更好的局部精细纹理。

让我们来谈谈他们是如何进行相对距离测量的。设 Y (hat)_ g 为缺失区域的生成内容,y(hat)^lgY ^ L 为预训练网络第 L 层的特征。对于分别从y(hat)^lgY ^ L 中提取的特征面片 vs ,计算从 vs 的相对相似度,

其中 mu (。, .)是余弦相似度。 r 属于 Y ^ L 不包括 vhε为正常数。显然,如果 v 比其他特征面片与 s 更相似,RS( vs )就会大。你也可以考虑一下,如果 v 有两个相似的补丁 sr ,那么 RS( vs )就会小。我们鼓励在缺失区域之外找到类似的补丁。

然后,RS 归一化如下。

最后,计算出y(hat)^l_gY ^ L 之间的建议 ID-MRF 损耗。

其中参数 max RS(bar)( vs )表示 sv 的最近邻,而 Z 是归一化因子。如果我们考虑所有生成的特征片都接近特定特征片 s 的极端情况,那么 max RS(bar) ( vr )将会很小,因此 ID-MRF 损失将会很大。

另一方面,如果 Y ^ L 中的每个 ry(hat)^l_g中有自己的最近邻居,那么最大 RS(bar) ( vr )将会很大,因此 ID-MRF 损失将会很大这里, 的主要思想是强制/引导生成的特征面片具有不同的最近邻,从而生成的特征具有更好的局部纹理

之前的工作相同,作者使用预训练的 VGG19 来计算 ID-MRF 损耗。注意,中间层 conv 3_2 和 conv 4_2 分别代表结构和语义特征。

作者声称,这种损失与最近邻搜索有关,并且仅在训练阶段使用。这不同于在测试阶段搜索最近邻居的方法。

空间变化重建损失

所提出的空间变量重建损失实际上是加权的 L 1 损失。有许多方法来决定权重,作者使用高斯滤波器来卷积掩模以创建加权掩模,用于计算加权的 L 1 损失。感兴趣的读者可以参考的论文了解详情。加权 L 1 损失的主要思想是靠近有效像素的缺失像素比远离有效像素的缺失像素受到更高的约束。因此,位于缺失区域中心的缺失像素应该具有较低的 L 1 损失权重(即较少约束)。

对抗性损失

之前的工作类似,作者采用了改进的 WGAN 损失以及局部和全局鉴别器。再次强烈推荐感兴趣的读者阅读论文

最终损失函数

这是用于训练建议模型的最终损失函数。类似于大多数修复纸,加权的 L 1 损失(第一损失项)的重要性是 1。λmrfλadv是控制局部纹理 MRF 正则化和对抗性训练的重要性的参数。

实验

作者在 5 个公共数据集上评估了他们的方法,即 Paris StreetView,Places2,ImageNet,CelebA 和 CelebA-HQ 数据集。在训练过程中,所有图像的大小都调整为 256×256,最大的中心孔大小为 128×128。供你参考,他们的发电机网络有 12.562 米的参数。在 GPU 上测试 256×256 和 512×512 大小的图像,每幅图像分别需要 49.37 ms 和 146.11 ms。

图 4。巴黎街景(上)和 ImageNet(下)的定性比较。(a)输入图像(b)上下文编码器(c) MSNPS (d)上下文注意(e)建议方法。图片来自王怡等人的论文

图 4 显示了巴黎街景和 ImageNet 数据集的定性比较。请放大以更好地查看修复结果。显然,所提出的方法 GMCNN 给出了具有最佳视觉质量的修复结果。如果你对更多的修复结果感兴趣,请参考论文或他们的项目网站。

表 1。五个数据集的定量结果。王怡等人的数据来自他们的论文 [1]

正如我以前的帖子和这篇帖子开头提到的, PSNR 与像素重建精度有关,可能不适合评估图像修复 。研究人员仍然报告 PSNR 和 SSIM 供读者参考,因为这些数字指标是所有图像处理任务的基础。如表 1 所示,所提出的方法在五个数据集上实现了相当甚至更好的 PSNR 和 SSIM。

消融研究

表二。巴黎街景数据集上不同网络结构的定量结果。王怡等人的数据来自他们的论文

图 5。巴黎街景数据集上不同网络结构的定性比较。(a)输入图像(b)单个编码器-解码器(c)粗到细(d)在所有 3 个分支中具有固定感受野的 GMCNN(e)具有变化感受野的 GM CNN。图片来自王怡等人的论文 [1]

作者评估了图像修复任务中使用的不同网络结构的性能。我们已经介绍了编码器-解码器结构粗到细结构。对于他们实验中由粗到细的结构,没有使用上下文注意。对于在所有 3 个分支中具有固定感受野的 GMCNN,他们使用 5×5 大小的滤波器。对于具有不同感受野的 GMCNN,在 3 个分支中分别使用 3×3、5×5 和 7×7 滤波器。定量和定性结果分别见表 2 和图 5。显然,具有不同感受野的 GMCNN 提供了最好的修复结果。

除了网络结构的选择和多个感受野的使用,作者还研究了两个提出的损失项的有效性,即置信度驱动的重建损失和 ID-MRF 损失。

图 6。巴黎街景数据集上不同重建损失的定性比较。(a)输入图像(b)空间折扣损失(c)建议的置信度驱动的重建损失。图片来自王怡等人的论文

图 6 显示了不同重建损失的视觉比较,即空间折扣损失和建议的置信度驱动重建损失。注意,空间折扣损失基于丢失像素的空间位置来获得权重掩模,而提出的置信度驱动的重建损失通过用高斯滤波器多次卷积掩模图像来获得权重掩模。作者声称他们的信心驱动重建损失效果更好。从我自己的经历来看,两次重建损失都差不多。也许你可以试一试。

表 3。在巴黎街景数据集上使用不同 lambda_ mrf 的量化结果。王怡等人的数据来自他们的论文【1】

图 7。在巴黎街景数据集上是否使用 ID-MRF 损失的定性比较。(a)输入图像,( b)使用 ID-MRF 损失的修补结果,( c)不使用 ID-MRF 损失的修补结果。图片来自王怡等人的论文 [1]

图 8。在巴黎街景数据集上使用不同 lambda_mrf 的 ID-MRF 损失的定性比较。(a)输入图像(b)λ_ MRF = 2(c)λ_ MRF = 0.2(d)λ_ MRF = 0.02(e)λ_ MRF = 0.002。图片来自王怡等人的论文

更重要的是,ID-MRF 损失项是本文最有力的主张。因此,作者显示了这一损失项的重要性,定量结果列于表 3。图 7 显示了使用 ID-MRF 损失和不使用 ID-MRF 损失训练的模型之间的差异。我们可以看到,ID-MRF 的使用可以增强所生成像素的局部细节。此外,图 8 显示了使用不同的λ_MRF来控制 ID-MRF 损失的重要性的效果。您可以放大以更好地查看结果。个人觉得修复效果差不多。根据表 3,lambda_ mrf = 0.02 在 PSNR 和视觉质量之间提供了良好的平衡。

结论

总之,本文的主要创新点是 ID-MRF 损失项,以进一步增强生成内容的局部细节。这种丢失的主要思想是引导生成的特征面片在丢失区域之外寻找它们的最近邻作为参考,最近邻应该是多样的,这样可以模拟更多的局部细节。

多个感受野(多列或多分支)的使用是由于感受野的大小对于图像修补任务很重要。由于局部相邻像素缺失,我们不得不借用远处空间位置给出的信息来填充缺失的像素。我想如果你关注过我之前的帖子,你就不难理解这个想法了。

使用加权的 L 1 损失也是由于缺少区域没有“正确”答案的事实。对于那些更靠近丢失区域边界的丢失像素,它们相对地受到附近有效像素的约束,因此应该给 L 1 损失分配更高的权重。另一方面,对于位于缺失区域中心的缺失像素,它们应该受到较少的 L 1 约束。

外卖食品

参考我在上面的结论,我希望你能理解提出的 ID-MRF 损失的含义,因为这是本文的核心思想。对于另外两个观点,即多栏结构和加权的 L 1 损失。实际上,如果你关注过我以前的帖子,我想你可以很好地理解背后的原因。我会说,多重/各种感受野的概念是深度图像修复中的常见做法。

对于加权的 L 1 损失,从我自己的经验来看,我认为并不能带来修复性能的明显提升。当然,实现加权 L 1 损失的方法有很多。如果你对这个感兴趣,你可以试一试。我也会继续做这方面的实验!😃

下一步是什么?

在我的下一篇文章中,我将谈论如何处理不规则的口罩。到目前为止,我们已经介绍了几种著名的深度图像修复方法。然而,它们主要集中于规则的掩模(通常是一个大的中心矩形掩模或者有时是多个小的矩形掩模)。所以,我们来看看最近研究人员是如何处理不规则口罩的。

如果你对图像修复的深度生成模型感兴趣,我强烈推荐你浏览我以前所有的帖子。希望你们喜欢:)

参考

[1],,,齐,,沈,贾亚亚,生成多列卷积神经网络图像修复Proc .神经信息处理系统,2018。

再次感谢你阅读我的帖子!如果您有任何问题,请随时给我发电子邮件或在这里留言。欢迎任何建议。系统学习对我们来说极其重要。非常感谢,下次再见!😃

如果只训练了批量归一化图层呢?

原文:https://towardsdatascience.com/what-if-only-batch-normalization-layers-were-trained-1d13e2d3f35c?source=collection_archive---------25-----------------------

你可能会感到惊讶,这很有效。

卡西·乔希在 Unsplash 上的照片

拿我来说,我绝不会把我的钱押在这上面。

最近,我阅读了由 Jonathan Frankle、David J. Schwab 和 Ari S. Morcos 撰写的论文“训练 BatchNorm 和 Only BatchNorm:关于 CNN 中随机特征的表达能力”,该论文最近在 arXiv 平台上发布。这个想法立刻引起了我的注意。到目前为止,我从未将批量标准化 (BN)层视为学习过程本身的一部分,只是作为深度网络收敛和稳定的辅助手段。几个实验之后,我大错特错了。在下文中,我将介绍我在复制这篇论文的结果时所采取的措施,以及我从中学到的东西。

更详细地说,我使用 Tensorflow 2 Keras API 成功地再现了论文的主要实验,得出了类似的结论。也就是说,ResNets 可以通过仅训练批量归一化图层的伽马(γ)和贝塔(β)参数,在 CIFAR-10 数据集中获得令人满意的结果。从数字上看,我使用 ResNet-50、101 和 152 架构获得了 45%、52%和 50%的顶级精度,这远远算不上很好,但也远非随机。

在下文中,我概述了批处理规范化的概念、其好处背后的常见解释、我使用的代码以及获得的结果。最后,我对结果及其相关性进行了讨论。

最近,这项工作被刊登在了 deeplearning.ai 的 Batch 新闻简报上。

批量标准化

简而言之,批量归一化层估计其输入的均值(μ)和方差(σ)并产生标准化输出,即,输出具有零均值和单位方差。在实践中,这种技术有意义地提高了深度网络的收敛性和稳定性。此外,它使用两个参数(γ和β)来转换和调整输出。

作为该层的 x 输入和 z 输出, z 由以下公式给出:

图 1:批量标准化表达式

虽然μ和σ参数是根据输入数据估计的,但γ和β是可训练的。因此,反向传播算法可以利用它们来优化网络。

如前所述,这种操作可以显著提高网络训练的速度,并改善其对保留数据的性能。而且,它没有禁忌症。出于这个原因,大多数模型大量使用它,经常在所有 Conv-ReLU 操作之间,形成“Conv-BN-ReLU”三重奏(及其变体)。然而,尽管这是最常见的层之一,其好处背后的原因在文献中有很多争论。这里总结了三种主要给出的解释。

编辑:在某些情况下,批量定额确实有禁忌症。最近的工作提高了人们的认识,尽管提高了收敛性,批量规范严重影响训练速度。特别是,当跨多个 GPU 和设备进行训练时,在不影响并行性能的情况下计算批量统计数据是一个巨大的挑战。出于这个原因,几位作者提出了替代方案,如自归一化网络甚至无归一化网络。这些工作旨在保留批处理规范的好处,同时避免训练期间数据点之间的任何依赖。

内部共变移位:简单来说,如果输出具有零均值和单位方差,则下一层基于稳定输入进行训练。换句话说,它防止输出变化太大。虽然这是最初的解释,后来的著作发现与证据相矛盾,否定了这个假设。简而言之,如果你训练 VGG 网络(1)没有 BN,(2)有 BN 和(3)有 BN 加上人工协方差偏移,方法(2)和(3)仍然优于(1),尽管人工协方差偏移被添加到网络中。

输出平滑: BN 也被认为是平滑优化景观,减少损失函数的变化并限制其梯度。更平滑的目标训练更可预测,更不容易出现数字问题。

长度方向解耦:一些作者认为 BN 是优化问题的改进公式,因此可以扩展到更传统的优化设置。更详细地说,BN 框架允许独立地优化参数的长度和方向,从而提高收敛性。

总之,这三种解释都集中在批处理规范化的规范化方面。相比之下,我们将着眼于 BN 的移动和缩放点,由γ和β参数实现。

复制纸张

如果一个想法是好的,它应该对实现和超参数的选择有弹性。在我的代码中,我使用 Tensorflow 2 和我自己选择的超参数尽可能简单地重新创建了主实验。更详细地说,我测试了以下命题:

ResNet 型号在 CIFAR-10 上可以达到体面的结果除了批次归一化参数外所有重量都锁定。

因此,我将使用 Keras 的 CIFAR-10 和 ResNet 模块以及对 CIFAR-10 数据集的总体建议,即分类交叉熵损失和 Softmax 激活。我的代码下载数据集和随机初始化的 ResNet 模型,冻结不需要的层,并使用 1024 个图像的批量大小训练 50 个时期。您可以检查下面的代码:

在上面的代码中应该注意一些事情:

  1. Keras API 只有 ResNet-50、101 和 152 型号。为了简单起见,我只用过这些。如果您想深入了解,请参考本指南了解整个 ResNet 架构的定制实现。
  2. ResNet 模型对γ参数使用“一”初始化策略。在我们有限的训练场景中,这过于对称,无法通过梯度下降来训练。相反,如论文中所建议的,使用“he_normal”初始化。为此,我们在训练前手动重新初始化批量标准化权重。
  3. 作者使用 128 幅图像的批量大小和动量为 0.9 的 SGD 优化器训练了 160 个时期。学习率最初设置为 0.01,并在时期 80 和 120 预定为 0.001 和 0.0001。对于这样一个幼稚的想法,我发现这太具体了。取而代之的是,我使用了 50 个纪元、1024 的批量、普通的 Adam 和 0.01 的固定学习率。如果这个想法是好的,这应该不是一个问题。
  4. 作者也使用了数据扩充,而我没有。同样,如果这个想法是好的,这些改变都不会是一个大问题。

结果

以下是我使用上述代码获得的结果:

ResNet 模型的训练精度仅训练批量归一化图层

ResNet 模型的验证准确性仅训练批处理规范化图层

从数字上看,这三个模型分别达到了 50%、60%和 62%的训练精度以及 45%、52%和 50%的验证精度。

为了更好地理解模型的表现,我们应该始终考虑随机猜测的表现。CIFAR-10 数据集有十个类。因此,随机地,我们有 10%的机会是正确的。以上方法比随机猜测要好五倍左右。因此,我们可以认为他们有不错的表现。

有趣的是,验证准确性在十个时期后才开始增加,这是一个明显的迹象,即对于前十个时期,网络只是尽可能地过度拟合数据。随后,验证性能显著提高。然而,它每五个时期变化很大,这表明该模型不是很稳定。

在论文中,图 2 显示他们实现了大约 70%、大约 75%和大约 77%的验证准确性。考虑到作者做了一些调整,使用了定制的训练计划,并采用了数据扩充,这似乎很合理,与我的发现一致,证实了假设。

使用一个 866 层的 ResNet,作者达到了大约 85%的准确率,这仅比通过训练整个架构可达到的大约 91%低几个百分点。此外,他们测试了不同的初始化方案、架构,并测试了解冻最后一层和跳过连接,这导致了一些额外的性能增益。

除了准确性,作者还研究了γ和β参数的直方图,发现通过将γ设置为接近零的值,网络学会了抑制每个 BN 层中大约三分之一的所有激活。

讨论

此时,你可能会问:为什么会这样?首先,很好玩:)第二,BN 层是司空见惯的,但我们对它们的作用还是只有肤浅的了解。我们知道的是它们的好处。第三,这种调查让我们更深入地了解我们的模型是如何运作的。

我不相信这本身有实际应用。没有人会冻结他们的层,把这一切都留给 BNs。然而,这可能会激发不同的训练计划。也许像这样训练网络几个时期,然后训练所有权重可能会导致更好的性能。相反,这种技术对于微调预先训练的模型可能是有用的。我也可以看到这个想法被用来削减大型网络的权重。

这项研究最让我困惑的是,我们都忽略了这两个参数。至少我从来不介意这两者。我记得只看到一个关于它的讨论,它认为在 ResNet 块上用“零”初始化γ是好的,这样可以迫使反向传播算法在早期使用更多的跳过连接。

我的第二个问题是关于 SELU塞卢激活函数,它们具有自我规范化的特性。这两个函数都使批处理规范化层变得过时,因为它们在训练期间会自然地规范化它们的输出。现在,我问自己,这是否抓住了批处理规范化层的全部。

最后,假设还是有点原始。它只考虑了 CIFAR-10 数据集和非常深的网络。如果这可以扩展到其他数据集或解决不同的任务,如仅 Batchnorm 的 GAN,则它是开放的。此外,我会很有兴趣看到一篇关于γ和β在完全训练好的网络中的作用的后续文章。

如果你对这篇文章有任何问题,欢迎评论或联系我。如果你是新手,我强烈推荐订阅。对于数据和 IT 专业人员来说,中型文章是 StackOverflow 的完美组合,对于新手来说更是如此。注册时请考虑使用我的会员链接。

感谢阅读:)

考试成绩不呈正态分布怎么办?

原文:https://towardsdatascience.com/what-if-the-exam-marks-are-not-normally-distributed-67e2d2d56286?source=collection_archive---------24-----------------------

皮克斯波茨皮克斯贝拍摄的照片

数据转换-使用 Python Scikit 实现标准化和规范化-学习

通常,当我告诉你一个学生得了 90 分,你会认为这是一个非常好的学生。相反,如果我说分数是 75,这可能意味着这个学生可能是平均水平。然而,作为一名数据科学家/分析师,我们至少需要立即问两个问题:

  1. 满分是 100 吗?
  2. 这个班的分数分布如何?

第一个问题很重要,也许每个人都会问,因为 90/150 并不比 75/100 好。第二个问题有点微妙,可能只有“数据人”才会有这种敏感性。

事实上,为了确保考试结果在班级中呈正态分布,通常会选择如下试题:

  1. 基本和简单的问题— 70%
  2. 需要对知识有深刻理解的扩展问题— 20%
  3. 需要用足够的知识和一些洞察力来解决的难题——10%

如果我们有 100%容易的题或者 100%难的题呢?如果是这样的话,我们很可能在一个类中得到非正态分布的结果。

为什么我们需要标准化数据?

照片由 SamuelFrancisJohnsonPixabay 上拍摄

然后,我们现在有了我们的主要话题。我在一所大学当了 5 年家教。有时不能保证考题完全符合上述比例。为了确保对所有学生都公平,换句话说,没有太多的学生不及格或太多的学生得了 A,有时我们需要将分数归一化,以确保它遵循正态分布。

此外,当我们想要比较来自不同大学的学生,或者我们想要汇总多次考试的结果时,标准化也非常重要。

为了演示的目的,让我们假设我们有 5 个不同的考试。因为我们需要随机生成期望分布,所以需要以下导入。

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltfrom scipy.stats import skewnorm  # used to generate skewed dist

1.满分是 100。太多基本问题

ex1 = np.array(skewnorm.rvs(a=-10, loc=95, scale=20, size=200)).astype(int)

2.满分是 100。太多难题了

ex2 = np.array(skewnorm.rvs(a=5, loc=30, scale=20, size=200)).astype(int)

3.满分是 100。正态分布

ex3 = np.random.normal(70, 15, 200).astype(int)
ex3 = ex3[ex3 <= 100]

4.满分是 50。正态分布

ex4 = np.random.normal(25, 7, 200).astype(int)

5.满分是 200。正态分布

ex5 = np.random.normal(120, 30, 200).astype(int)

让我们使用 Seaborn distplot将它们绘制在一起。

plt.figure(figsize=(16,10))
sns.distplot(ex1)
sns.distplot(ex2)
sns.distplot(ex3)
sns.distplot(ex4)
sns.distplot(ex5)
plt.show()

这 5 种不同的考试有完全不同的分布。当我们得到这样一个数据集时,我们无法直接比较它们。

最小-最大归一化

图片由图片栏上发布

最小-最大归一化的基本思想是将所有值归一化到区间[0,1]中。做到这一点相当容易。

from sklearn import preprocessingmin_max_scaler = preprocessing.MinMaxScaler()
ex1_norm_min_max = min_max_scaler.fit_transform(ex1.reshape(-1,1))
ex2_norm_min_max = min_max_scaler.fit_transform(ex2.reshape(-1,1))
ex3_norm_min_max = min_max_scaler.fit_transform(ex3.reshape(-1,1))
ex4_norm_min_max = min_max_scaler.fit_transform(ex4.reshape(-1,1))
ex5_norm_min_max = min_max_scaler.fit_transform(ex5.reshape(-1,1))

请注意,我们需要将 NumPy 数组转换成向量,然后才能对它们进行规范化。因此,最简单的方法是将它们重新整形为列向量reshape(-1, 1)

在它们被规格化后,我们不需要把它们转换回一维数组来可视化。下面是归一化后的直方图。现在更有信心把 5 个不同的考试结果放在一起。

z 分数标准化

aitoffPixabay 上拍摄的照片

Z-Score 是另一种常用的技术。它被称为标准化而不是规范化,因为它在两个方面“标准化”了数据:

  1. 对数据进行去均值处理,使所有标准化数据的均值等于零。
  2. 通过除以标准偏差来重新调整数据,以便数据分布根据偏离平均值的程度而“扩大”或“缩小”。

因此,我们可以这样计算。

from sklearn import preprocessingex1_scaled = preprocessing.scale(ex1)
ex2_scaled = preprocessing.scale(ex2)
ex3_scaled = preprocessing.scale(ex3)
ex4_scaled = preprocessing.scale(ex4)
ex5_scaled = preprocessing.scale(ex5)

可以看出,Z 分数标准化不仅规范了考试结果,而且重新调整了考试结果。

摘要

pasja1000Pixabay 上拍摄的照片

在本文中,考试被用作例子来解释为什么我们需要标准化或规范化数据集。事实上,我见过很多学习者和数据科学的学生是真正的算法爱好者。他们可能知道许多不同类型的数据挖掘和机器学习算法。但是,我要说的是,大多数时候数据转换比选择算法更重要。

因此,我还演示了如何使用 Python Sci-kit Learn 库来轻松地规范化/标准化数据。希望对刚刚进入数据科学和数据分析领域的人有所帮助。

本文中使用的所有代码都可以在这个 Google Colab 笔记本中找到。

[## 考试成绩不呈正态分布怎么办?

最小-最大标准化和 Z 分数标准化

colab.research.google.com](https://colab.research.google.com/drive/1L9xlldqKKXPrfatlAHDfRGU4Zcmom2fq?usp=sharing) [## 通过我的推荐链接加入 Medium 克里斯托弗·陶

作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…

medium.com](https://medium.com/@qiuyujx/membership)

如果你觉得我的文章有帮助,请考虑加入 Medium 会员来支持我和成千上万的其他作者!(点击上面的链接)

脸书新的数据电缆项目将对南部非洲产生什么影响?

原文:https://towardsdatascience.com/what-impact-will-facebooks-new-data-cable-project-have-in-southern-africa-21fd3912f9ea?source=collection_archive---------55-----------------------

南非共和国🇿🇦比勒陀利亚——照片由雷切尔·马丁Unsplash 上拍摄

赶上南部非洲🌍

F acebook 与合作伙伴如中国移动国际MTN 全球连接Orange埃及电信沃达丰西印度洋有线电视公司(WIOCC) 最近宣布了 2Africa 项目。2 Africa 项目有望成为世界上最大的海底电缆之一,连接西非和东非,并将连接大约 23 个国家,起点在英国,终点在西班牙。在 2Africa 登陆的国家,服务提供商将获得运营商中立数据中心的容量,并可以访问有线登陆站。

参与项目的国家— 脸书提供

在南部非洲发展共同体的国家中,该项目将连接到南非🇿🇦、坦桑尼亚🇹🇿、莫桑比克🇲🇿、刚果民主共和国🇨🇩和马达加斯加🇲🇬获得新的数据链路,对于这些经济体来说,这将是后新冠肺炎时代迫切需要的推动力。

37000 公里长的非洲将几乎等于地球的周长。该项目不仅长度令人印象深刻:它将提供几乎三倍于目前服务于非洲的所有海底电缆的总网络容量。完工后,这条新路线将为整个非洲提供急需的互联网容量、冗余和可靠性;补充中东地区快速增长的产能需求;并支持数亿人的 4G、5G 和宽带接入的进一步增长。— 脸书网络工程副总裁 Najam Ahmad

当我们开始展望后新冠肺炎时代的未来时,我们已经可以断定,能够投资远程解决方案的企业将在这个新世界中繁荣发展。对于非洲企业来说,这是一个挑战,因为员工在家里可能无法获得合适的互联网连接。通常,非洲的非正规市场并不依赖互联网。就移动货币技术而言,短信一直是王者,但随着支持网络连接的基础设施投资的增加,我们可能会开始看到互联网渗透水平的转变,以及更多政府推动数字战略的转变。电信技术是基础设施平台的明显赢家,可以引领非洲领先的新兴经济体。对于像津巴布韦这样地理位置不佳的内陆国家来说,这也创造了对电信枢纽进行更多投资的举措,这些枢纽将边境城镇与邻近的南共体国家的基础设施连接起来。世界银行研究贸易物流问题的三位经济学家说,地处内陆是世界上 31 个内陆发展中国家中有 16 个是世界上最贫穷国家的主要原因,

数据是新的石油🛢🙆🏾‍♂️

通信是关键,根据联合国的数据,从现在到 2050 年,预计超过一半的全球人口增长将发生在非洲,移动网络将成为连接非洲大陆的桥梁。但随着这种连接也带来了新的数据点,但目前,非洲没有底层基础设施来支持这一点。随着津巴布韦等国家不幸获得了截至 2019 年世界上最昂贵的数据包的头衔,需要做更多的工作来确保数据可访问,这包括价格以及通过对电信基础设施的持续投资来增强信号强度。非洲人是企业家,会创新!随着我们开始适应远程提供更多服务的生活,这也将为散居者创造轻松投资非洲的机会。但不仅仅是海外侨民希望在非洲投资。

目前连接非洲和世界的海底电缆— 提供多种可能性。

根据华盛顿研究公司 TeleGeography 的数据,谷歌、微软脸书亚马逊现在拥有或租用了将近一半的海底带宽。仅谷歌一家就在全球支持了至少 14 条电缆。随着谷歌通过 GCP 提供云服务,亚马逊通过 AWS 提供云服务,微软通过 Azure 提供云服务,在未来 10 年,开始看到更多的数据区域出现在非洲就不足为奇了。华为等中国公司已经开始大举投资非洲的电信项目。华为在 2018 年底完成了巴西和喀麦隆之间 3750 英里的电缆,去年开始了连接欧洲、亚洲和非洲的 7500 英里电缆的工作。

这是否会增加非洲的数据中心区域?

数据中心在非洲还没有真正起飞。需要做更多的工作和投资来提供有竞争力的市场,或者至少在电力和光纤连接方面需要某种类型的多样性。这通常被视为主要的绊脚石之一。地理位置经常发挥作用,微软 Azure 在沿海城市开普敦设立了数据中心,并于 2019 年在约翰内斯堡开设了另一个数据中心。中国的华为目前也计划在南非开设两个数据中心,开普敦被认为是一个可能的地点。亚马逊的 AWS 于 2020 年 4 月开始在开普敦运营数据中心。看到脸书在完成 2Africa 项目后也采用这一战略并不奇怪。寻求采用云战略的非洲企业通常会面临更高的成本,因为跨国云产品在非洲之外拥有数据中心区域,但这种情况很快就会改变。这不仅仅是南共体地区国家的问题,宽带普及率低和延迟差仍然是许多非洲实体面临的重大挑战。

2015 年互联网用户占一国人口的比例 非洲清楚地显示为数字鸿沟背后最大的单一地区。来源:国际电信联盟

南非的下一步是什么?

2020 年 5 月,非洲大陆自由贸易区秘书长, Wemkele Mene 宣布推迟启动 AfCFTA 下的贸易。AfCFTA 下的交易开始日期最初定为 2020 年 7 月 1 日( AfCFTA 交易日期)。由于 AfCFTA 没有宣布新的交易日期,根据疫情和 AfCFTA 的目标,考虑延期对南部非洲意味着什么是很重要的。对基础设施的投资必须继续,通过公路连接南部非洲国家,建立贸易路线并确保适合贸易的安全边界必须仍然是南部非洲发展共同体秘书处的重点。运营商和电信公司之间的跨境合作也将有助于这一过渡,确保没有一个国家被落下。

来自脸书的新数据管道不是第一条,也绝对不会是最后一条。非洲的数字革命即将到来!

斯蒂芬·查彭达玛

QQ 剧情到底是什么?

原文:https://towardsdatascience.com/what-in-the-world-are-qq-plots-20d0e41dece1?source=collection_archive---------14-----------------------

亚历山大·安德鲁斯在 Unsplash 上拍摄的照片

了解 QQ 图的功能以及如何从头开始制作

如果你曾经使用过线性回归或者使用过要求数据(或误差)呈正态分布的统计工具,那么你可能以前遇到过 QQ 图。除了知道一个直的 QQ 图(45 度线)很好之外,你可能不太记得他们了。

但是 QQ 图实际上是一种非常漂亮和直观的方式来可视化某个东西是否是正态分布的。让我们来看看它们是如何工作的,为什么它们很酷。

如果你需要复习一下正态分布,我写了这篇文章。

正态分布

正态分布的东西很棒。知道某样东西符合正态分布(并且知道它的均值和标准差),就可以让我们对它做出各种有用的推断。例如,我们可以合理地确定它的值在 95%的情况下会落在哪里(在平均值的-1.96 和+1.96 标准偏差之间)。

但是如果我们的变量实际上不是正态分布的,那么我们的推论就会是错误的,有时是非常错误的。根据应用的不同,我们不准确的推论的后果可能从仅仅是不方便到甚至是危险。

这就是 QQ 剧情的由来。它们是评估一个变量是否正态的快速而直观的方法(我们可以使用 QQ 图来对照任何分布检查我们的数据,而不仅仅是正态分布)。

QQ 图

让我们虚构一些我们已经知道是正态分布的数据:

import numpy as np# Generate some normally distributed random numbers
random_normals = [np.random.normal() for i in range(1000)]

我们可以使用 statsmodels 库中的 QQ 绘图功能:

import statsmodels.api as sm
from matplotlib import pyplot as plt# Create QQ plot
sm.qqplot(np.array(random_normals), line='45')
plt.show()

上面的代码创建了以下情节:

正态分布随机变量的 QQ 图

看到我们的数据(蓝点)是如何清晰地落在红线上的了吗?这意味着我们的数据是正态分布的(我们已经知道了)。仅此而已。如果我们的数据坚持红色 45 度线,这是正常的或接近它,如果它不,那么它是不正常的。

让我们来看看 QQ 剧情中一些不正常的东西:

import random# Generate some uniformly distributed random variables
random_uniform = [random.random() for i in range(1000)]# Create QQ plot
sm.qqplot(np.array(random_uniform), line='45')
plt.show()

产生了这个图:

非正态分布随机变量的 QQ 图

我们的数据(蓝点)离红线很远,意味着它不是正态分布的(它是均匀分布的)。所以现在我们明白了 QQ 图是做什么的,让我们弄清楚他们是怎么做的。

QQ 图如何工作

QQ 图中的“QQ”表示分位数-分位数,即QQ 图将我们数据的分位数与期望分布的分位数进行比较(默认为正态分布,但也可以是其他分布,只要我们提供适当的分位数)。

分位数是将我们按数字排序的数据分成相等比例的桶的断点。例如,您可能听说过百分位数——百分位数是将我们的数据分成 100 个桶(按值排序)的分位数,每个桶包含 1%的观察值。四分位数是将我们的数据分成 4 个桶(0–25%,25–50%,50–75%,75–100%)的分位数。即使是我们的老朋友,中位数也是一个分位数——它将我们的数据分成两个桶,其中一半的观察值低于中位数,另一半高于中位数。

那么比较分位数意味着什么呢?让我们暂时离开 QQ 图,想一个比较两个分布的更简单的方法,直方图。我们如何判断两个分布是否相同?一个不错的第一步是把分布一个接一个的叠加起来,然后盯着看。但是我们应该盯着什么看呢?一个简单的测试是在 X 轴上选择一个点,看看每种分布在它的每一边占多大比例。例如,在金融领域,我们经常关注下行风险(分布的左尾),或者换句话说,当情况变坏时,我们的投资组合会发生什么。

假设我们关心的是真正可怕的事件,所以我们决定查看位于均值左侧超过 1.65 个标准差(换句话说,低于均值)的结果——我们将把这个点称为我们的阈值。如果我们的数据分布是正态的,那么大约 5%的观察值将位于阈值的左侧:

正态分布(蓝色)和-1.65 SD 阈值(红色)

但是如果我们的数据不正常呢?我们可以进行与上面相同的分析,看看有多少观察值位于阈值的左侧:

正态分布和非正态分布的直观比较

从视觉上,我们可以看到更多的非正态分布(灰色线,这是一个学生的 1 自由度 T 分布)位于阈值的左侧。因此,如果我们投资组合的分布实际上是灰线,但我们用蓝线建模,我们将大大低估一个可怕结果的频率(可怕的结果是我们阈值左边的那些,红线)。我们假设只有 5%的可能性会出现可怕的结果,而实际上 17%的灰线下区域(其累积密度函数)位于可怕结果阈值的左侧。

因此,我们将一个可怕结果的风险低估了 3 倍!

这就是为什么检查某些东西是否正常很重要。而这才是 QQ 剧情真正出彩的地方。本质上,QQ 图做了我们刚刚用重叠直方图(和阈值)做的事情,但它对我们数据中的每个观察都做了。

QQ 情节从零开始

如果你对下面的代码感兴趣,也可以从我的 GitHub 这里抓取。

让我们从头开始制作一个简化的 QQ 图,这样我们就可以从头开始了解它是如何工作的。回想一下,分位数是将我们的数据分成数字有序、大小相等的桶的断点(如百分位数)。为了计算分位数,我们需要首先将数据从最小到最大排序。让我们生成一些数据并进行分类:

**In:**import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.stats import normN = 10
t_dist = sorted(np.random.standard_t(1, size=10))
t_dist**Out:**[-3.078322498951745,
 -0.44257926668743197,
 -0.28442575572329976,
 -0.08391894271348821,
 0.5619567861663247,
 1.0176669779384615,
 1.3448162439504447,
 1.874164646241363,
 2.936477005326059,
 5.340289177069092]

酷,我们现在有 10 个数字排序的观察值,它们来自一个随机数生成器,遵循一个学生的 1 自由度 T 分布。这和我们上面的柱状图中的分布是一样的。光是目测数字,就能看出看起来不是很正常。没有经过转换以适应经验数据的正态分布的平均值为 0,标准差为 1。如果我们从正态分布中取样,很难看到比 1 大得多或小得多的值。然而,仅仅从我们的 10 个观察样本中,我们可以看到有一个-3.08 和一个 5.34(超过预期平均值的 5 个巨大的标准偏差)。

计算实际分位数

接下来是时候计算我们观察到的数据的分位数了。因为我们有 10 个观察值,所以我们想要 9 个分位数(我们总是想要 N-1 个分位数,或者比我们的观察值少 1)。获得分位数的一个简单方法是计算我们观察值之间的中点:

t_dist_quantiles = []
quantiles_percent = []
for i, val in enumerate(t_dist[:-1]):
    t_dist_quantiles.append((val + t_dist[i+1])/2)
    quantiles_percent.append((i+1)/len(t_dist))

列表 t_dist_quantiles 记录我们计算的中点,列表 quantiles_percent 记录位于分位数以下的数据比例。一旦我们看到生成的数据帧,这将变得更加清楚:

**In:**qp_array = np.array(quantiles_percent).reshape(-1,1)
tq_array = np.array(t_dist_quantiles).reshape(-1,1)
qq_df = pd.DataFrame(np.concatenate((qp_array, tq_array), axis=1),
                     columns=['percent_below', 'quantile'])
print(qq_df)**Out:** percent_below    quantile
0            0.1   -1.760451
1            0.2   -0.363503
2            0.3   -0.184172
3            0.4    0.239019
4            0.5    0.789812
5            0.6    1.181242
6            0.7    1.609490
7            0.8    2.405321
8            0.9    4.138383

请注意,第一个分位数-1.76 位于-3.07 和-0.44 之间。而 percent_below 列告诉我们,10%的数据低于-1.76。这是有意义的,因为只有一个观察值-3.07 小于-1.76。所以 10 次观察中有 1 次低于-1.76,换句话说,10%。所以对于每个分位数,我们可以通过将小于它的观察数除以观察总数来计算出它下面的百分比。

理论分位数

一旦我们有了实际的分位数,我们需要一些东西来与它们进行比较。QQ 图的基准是我们期望的分布的理论分位数。那么我们如何得到这些理论分位数呢?

实际上我们已经有了所有需要的原料。回想一下,分位数将我们的数据分解成固定的比例。因此,如果我们知道每个桶中的比例,那么对于给定的分位数,我们也知道位于其左右的数据的比例。例如,回头参考我们的数据框架 qq_df 中的 percent_below 列,我们看到对于第三个分位数,-0.184172,30%的数据位于它的左侧。

因此,为了得到我们的第三个理论分位数,我们只需要找出正态分布上曲线下 30%区域位于其左侧的点。我们可以很容易地用下面的代码行为我们的每个分位数做到这一点:

qq_df['theoretical_quantile'] = [norm.ppf(percentage) for percentage in qq_df['percent_below']]

现在,我们已经在 qq_df : 中获得了我们的 QQ 图所需的所有值,Y 轴的实际分位数和 X 轴的理论分位数(来自正态分布)。我已经把 qq_df 的内容打印出来如下:

 percent_below    quantile  theoretical_quantile
0            0.1   -1.760451             -1.281552
1            0.2   -0.363503             -0.841621
2            0.3   -0.184172             -0.524401
3            0.4    0.239019             -0.253347
4            0.5    0.789812              0.000000
5            0.6    1.181242              0.253347
6            0.7    1.609490              0.524401
7            0.8    2.405321              0.841621
8            0.9    4.138383              1.281552

剩下要做的就是画出我们的 QQ 图:

plt.subplots(figsize=(9,7))
plt.scatter(x=qq_df['theoretical_quantile'],
            y=qq_df['quantile'], label='Actual');
plt.scatter(x=qq_df['theoretical_quantile'],
            y=qq_df['theoretical_quantile'], 
            c='red', label='Normal')
plt.xlabel('Theoretical Quantiles')
plt.ylabel('Actual Quantiles')
plt.legend()
plt.savefig('qq_plot', bpi=150);
plt.show()

我们的 QQ 情节

QQ 情节告诉我们什么

如果我没有解释如何阅读 QQ 情节就结束这篇文章,那将是我的失职。我们已经知道,如果我们图中的点落在 45 度线上,那么我们的数据是正态分布的(假设我们使用正态分布的理论分位数)。但是当它们没有落在直线上时,我们仍然可以了解很多关于我们的数据分布的信息。以下是阅读 QQ 情节的一些一般提示:

  • 斜率告诉我们数据中的步长是太大还是太小(或者刚刚好)。记住,数据中的每一步(从一个分位数到下一个分位数的一步)遍历一个固定不变的百分比 —例如,如果我们有 N 个观测值,那么每一步遍历 1/(N-1)个数据。因此,我们看到了我们的数据和正态分布之间的步长(也称为分位数)比较。
  • QQ 图的陡峭倾斜部分意味着在我们数据的这一部分,观察值比我们预期的正态分布更分散。导致这种情况的一个例子是异常大量的异常值(就像我们之前用代码画的 QQ 图)。
  • 平坦的 QQ 图意味着我们的数据比我们预期的正态分布更加集中。例如,在均匀分布中,我们的数据介于 0 和 1 之间。在这个范围内,每个值都有相同的可能性。因此,该范围的极端值(如 0.01 和 0.99)与中间值(如 0.50)的可能性一样大。这与正态分布(平均值为 0,标准偏差为 1)非常不同,在正态分布中,像-3 或 4 这样的值比 0 更不可能被观察到。因此,均匀分布变量的 QQ 图(其中观察值是等间距的,因此相对于正态分布更集中)将具有非常小的斜率。

均匀分布随机变量的 QQ 图

结论

我是 QQ 图的忠实粉丝,因为它们是将我们的数据分布与期望的统计分布进行比较的一种聪明、直观和快速的方式。希望读完这篇文章后,你也会成为他们的粉丝。干杯!

更多数据科学相关帖子由我:

了解正态分布

熊猫加入 vs 合并

了解 RNNs

了解 PCA

理解贝叶斯定理

周二晚上在弗吉尼亚到底发生了什么?!

原文:https://towardsdatascience.com/what-in-the-world-happened-in-virginia-tuesday-night-117d13cd318b?source=collection_archive---------41-----------------------

当你的样本有偏差时,统计数据就失效了

来源:2020 年 11 月 3 日谷歌宏作者截图。[1]

像大多数美国家庭一样,周二晚上,我和妈妈在下午 5 点左右结束工作,加热了一些剩菜,挤在电视机前,开始了漫长的一夜狂欢/“在家玩”选举结果。我们大部分的分析修正都是由 CNN 慷慨提供的(oop,只是用那个把我们自己叫了出来)。但我们不是你们这里的普通绵羊。不,不,我们是一些更精明的点击诱饵信息的消费者。我们也用谷歌!!我们(和许多其他人可能)很早就注意到,谷歌的小宏(由美联社提供支持)和 CNN 的经典美国地图仪表盘(尽管它肯定越来越花哨)之间存在差异。报告的数字是一样的,但是信息传递模式的不同在我们家引起了一点有趣的混乱。请允许我解释…

如果一个州当时有更多的共和党人投票,CNN 会将它涂成红色(或蓝色表示反对),这给人一种候选人已经赢得或至少“赢得”该州的印象。好吧,有道理。然而,谷歌更进一步。他们提供了两个“等级”的着色!浅色意味着候选人在该州的普选中领先,而深色则意味着候选人“赢得了】该州。添加了这个聪明、直观的可视化功能。

那么问题出在哪里?赢得该州普选的候选人难道不应该是分析之神不可避免地认为是该州“赢家”的那个人吗?不一定。以弗吉尼亚为例。美国东部时间晚上 8:30 左右,拜登的支持率下降了 20%。当 CNN 主播们正为拜登如何需要做出某种英雄般的努力来拯救这个“蓝色”州免于翻转(好像这就是选举之夜的工作方式)而焦躁不安时,谷歌的地图上充满了深蓝色,这表明拜登不仅赢得了弗吉尼亚州……他还赢了!!现在你可以想象这在这里引起了一点混乱,我决定调查一下。

设置场景

在美国东部时间晚上 8:30 左右,州政府官员已经统计了 33%的选票,拜登落后 20%。然而,谷歌宏已经将这个州涂成深蓝色,以表示拜登毫无疑问的胜利。好吧,管它呢?我妈妈也有这种感觉,但电视专家们对此也无济于事,他们继续用“希望拜登在弗吉尼亚州撤回”的说辞来保持游戏节目的幻觉。统计学家知道一些我们作为观众没有被告知的事情。

又是弹珠?

数学建模就是简化现实世界。在另一篇文章中,我们展示了如果你将模型简化为超几何等价物(一袋弹珠),你可以多快召集一次选举。我们假装在选举日那天,人们将特定颜色(红色或蓝色)的弹珠放入位于州首府的一个大弹珠袋中,而不是去各个投票站、邮箱等地方投票。我们表明,如果袋子混合得很好,我们只需要画几千个就可以很好地猜出袋子的成分。

然而,你可以看到这是多么的不现实,因为在现实生活中,不止有一袋弹珠。事实上,弗吉尼亚有 133 个县和 2500 多个选区。如果我们使用一个袋子模型,我们会犯一个惊人的错误,即假设我们可以从这些袋子中的任何一个中抽取,并对整个国家做出一个一般性的陈述。

为什么不呢?信息就是这样通过媒体展现给我们的?已经统计了 33%的选票的人!这远远超过了我们数学上认为足够的 10,000 个弹珠的阈值。特朗普赢得了弗吉尼亚州的乡亲们…合上书本!

因此,专业统计学家的真正工作在于:选择有代表性的样本很难。

大理石包中的大理石包…太棒了

但是假设我们需要说些什么,即使我们知道我们的样本有偏差。那么,如果我们不假设一袋选票,而是假设每个县都是那袋选票中的一个更小的袋子。没错,州大理石包其实就是一袋县大理石包(兔子洞继续!).

作者图片

但这能解释周二发生的事情吗?好吧,我们来看数据。我在 11 月 5 日的某个时候直接从弗吉尼亚州的官方选举报道网站上获取了一些数字(投票应该在那个时候)。当时的最终计票结果显示,拜登获得了 53%的选票。回想周二晚上,CNN 会让我们相信这是某种英雄式的推动,但我认为统计学家会认为这是不可避免的。让我们看看。

询问数据

好了,让我们从做一个快速思维实验开始,看看我们能否重现周二晚上 8:30 我们看到的情景,当时拜登输了 20%,但被宣布获胜。让我们假设从每个县统计 10,000 张选票(即弗吉尼亚州的大约 450 万张总选票中的大约 150 万张)。以下是弗吉尼亚州随机选择的 30 个县的地图,以及他们在计算第一批 10,000 张选票后的样子。(我在费尔法克斯县周围画了一个方框,因为它以后会变得很重要——敬请关注。)

作者图片

两个弗吉尼亚的故事

如果我把所有县的选票加起来,我们可以看到特朗普在早期阶段会遥遥领先于拜登(如下图所示)。然而,统计学家看了上面单个县的早期估计,意识到特朗普已经输了。怎么会?

他们可能会做的是,他们拿着已经统计过的选票,猜测拜登的选票在未统计的未来选票中所占的比例。事实上,如果我们认为我们知道有多少人会投票,我们可以使用贝叶斯推断来推断每个县的潜在投票范围(通过推断 p 的范围,就像我们对伊利诺伊州所做的那样)。然后对每个县重复这一过程,将低估计值和高估计值的总数相加(右图)。由此,你可以看到,即使对拜登来说是难以想象的最坏情况(下面标为“低”),他仍然远远高于 50%选票的红色“获胜线”。

作者图片

好的,对于那些一直跟踪到现在的人,你可能还会问:这是怎么回事?好吧,让我们看看 30 个人口最多的县的原始结果,我觉得答案应该是显而易见的。看看拜登在费尔法克斯县获得了多少选票。事实上,他赢得了弗吉尼亚州人口最多的 12 个县(在某些情况下以压倒性优势)。

作者图片

当然,投票实际上不是以同样的速度计算的,我在这里展示的小模型实际上不是周二晚上(8:30)的数字。但是……这表明,当公众被灌输一个关于特朗普领先 20%的故事时,统计学家已经意识到他没有赢得弗吉尼亚州的希望。

嗯,这些都很有趣,但是那些摇摆州呢?而且,这并不能完全说服我,我的投票是否算数。我认为确实如此,但是这篇文章有点长了。我试图在其他帖子中更详细地回答这些问题。

感谢阅读!感谢任何反馈!

如果你喜欢这篇文章

考虑鼓掌(或者 10?)所以 TDS 会更容易与他人分享

看看我关于选举的其他案例研究:

  • 伊利诺伊州(需要多少票才能举行选举)
  • 宾夕法尼亚州(摇摆州戏剧统计解读)
  • 德州(真的有多荡?)

图像:

[1]谷歌,美国大选结果(2020),https://www.google.com/search?channel=fs&客户端= Ubuntu&q =选举+结果

网络新闻文章中隐藏了哪些信息?

原文:https://towardsdatascience.com/what-information-is-hidden-in-online-news-articles-f5695eae38fd?source=collection_archive---------45-----------------------

网络新闻的数据分析

每个工作日在线新闻的长度和数量以及作者的时间/图片

日报在线发布的新闻是一个重要的信息来源。它们不仅包含要传播的声明,还隐含了关于出版商及其员工的其他信息。这种信息流通常不是有意的,发布者甚至没有意识到这一点。

这些不是隐藏在单个信息中的秘密信息,正如一些人认为在甲壳虫乐队的歌曲中找到的秘密信息,而是只有当大量数据被一起查看并正确组合时才显现出来的信息。在这篇文章中,我想用一些例子来说明这一点。

例如,我会在文章中发现,日报“Der Standard”的编辑喜欢在周末睡得更久,并在早上或周末早上写更长的文章。今天剩下的时间似乎都被机构报告占据了。

尤其是报纸《Kronen Zeitung》还要门户网站“oe24.at”刊登,不出意料,几乎不再有文章。这里的事实,与“标准”相反,它大约是十倍是有点令人惊讶的。

从被指名的编辑的出版物中,可以获得关于他们的休假行为或者他们可能与哪些其他编辑关系密切的信息。

数据

作为例子的数据,我选择了三家奥地利日报网络版的新闻文章:
-【sterreich】-www . oe24 . at-
-【kren Zeitung】-www . krone . at-
-【Der Standard】-www . Der Standard . at
前两篇可以分配到林荫大道,后者称为优质报纸。

在 3 个月的时间里(2020 年 8 月 11 日到 2020 年 11 月 9 日),我收集了新闻文本,以及一些元数据,如出版日期、作者等。这导致数据量:
-来自 derstandard.at 的 10,933 篇文章
-来自 krone.at 的 12,990 篇文章
-来自 oe24.at 的 29.868 篇文章

数据的第一个概述

为了对数据有一个初步的了解,我们将看看不同报纸每天发表的文章数量。

所有被考虑的三份报纸都显示了一个周周期,这在《标准报》中最为明显,在周末和假日出版的报纸要少得多。平均写 100 多篇。oe24.at 自 10 月初以来明显偏多。

每天在 derstandard.at 上的文章/作者提供的图片

文章是什么时候写的,有多长?

现在让我们看看新闻发布的时间和日期。圆点的大小描述了文章的数量。颜色代码还表示每次的平均文本长度(字数)。蓝色圆圈代表短文,红色调越深,文章越长。

每个工作日和时间的在线新闻长度和数量-der standard . at/按作者分类的图片

出版大多是白天,周末我们开始晚一点。编辑们似乎想多睡一会儿。一般来说,周末出版的比较少。

从颜色可以看出,《标准报》的编辑显然每天早上和周末都花时间写长文章,就像一个“优质媒体”所期望的那样。
主要是在当天晚些时候分发简短的代理报告吗?

每个工作日和时间的在线新闻长度和数量——oe24 . at/按作者分类的图片

下一张图显示了“sterreich — oe24.at”编辑部略有不同的图片,这里只有少量早上 6 点、午夜前不久和周五中午的较长文章。
这些是什么样的物品?
这里也一样,更多的是在工作日出版。

每个工作日和时间在线新闻的长度和数量——krone . at/Image by Author

你发表哪些主题的文章?

但我不仅想知道何时以及以何种文本长度出版,还想知道关于哪些主题。为此,我对每篇文章进行了自动主题分配。

分析是通过来自“ Aylien ”的“新闻情报平台”完成的,并使用“ IAB ”作为分类。开发这种分类是为了给在线广告分配正确的内容。在我的例子中,只使用了主要类别。

现在让我们看看三个新闻制作人在最重要的类别中发表了多少篇文章。圆圈的大小反映了所考虑期间的总数。

关于 derstandard.at / Image 的主题由作者提供

oe24.at 上的主题/作者图片

krone.at 上的话题/作者图片

现在,我们将看看在不同主题的文章发表的时间上是否有任何差异。下图显示了《标准》杂志在两个最常见的类别“政治”和“体育”上的出版物分布情况。

derstandard.at / Image 作者每小时的文章和主题

体育板块的文章数量在早上比政治板块的增长要慢得多。这是因为早上没有太多关于体育的报道,还是因为体育编辑喜欢睡懒觉?

“Krone”和“Oe24.at”文章的数据显示了相同的情况。

如果你也将每篇文章分配到一个“主题地图”,你会看到不同的文章是如何分布的。下图显示了文章的分布以及“标准”的最重要类别。

derstandard.at 的文章和主题图/按作者分类的图片

附近的点代表相似的文章,颜色反映了主题。
对于这个例子,为每篇文章的标题计算嵌入的句子,其编码标题的含义。文章中有更多关于这方面的内容:

[## 用句子变形库嵌入句子

使用伯特/罗伯塔/XLM-罗伯塔公司和 PyTorch 的多语言句子嵌入

medium.com](https://medium.com/towards-artificial-intelligence/sentence-embeddings-with-sentence-transformers-library-7420fc6e3815)

随后,使用“t-SNE”方法生成维度缩减的 2D 图。文章中有更多关于这方面的内容:

[## 用 Python 例子介绍 t-SNE

介绍

以 Python 为例 Introductiontowardsdatascience.com 的 t-SNE](/an-introduction-to-t-sne-with-python-example-5a3a293108d1)

不同媒体上关于该主题的文章长度如何?

“Kronen Zeitung”的平均文本长度几乎不随主题而变化,也明显短于标准。“Oe24.at”的图片与此类似,只是文章通常稍长,而且“汽车”部分的文章也更长。

krone.at 的文本长度/作者提供的图片

《标准报》的平均文字长度是《克朗报》的十倍。这些数据证实了小报很少提供文字的偏见。“标准”在主题领域之间的长度也有显著差异。例如,“新闻”文章就比其他文章短得多。

derstandard.at / Image 的文本长度(按作者)

我们能谈谈个别人员或部分编辑人员吗?

一些报纸在文章上标明编辑的名字或部分编辑人员的名字。例如,在 Kronenzeitung 的情况下,文章可以分配给各个联邦州的编辑部。这清楚地表明了各个州的编辑有多活跃。

每个州的文章/按作者分类的图片

可以看出,在所考虑的整个时期内,维也纳中央编辑部最为活跃,布尔根兰和福拉尔贝格等省的贡献很小。

如果有人评价显示作者姓名的文章,可以发表个人声明。在下图中,这些名称因此变得无法识别。

每个作者的文章和作者的日期/图片

从评估中可以获得一些有趣的信息,然后人们可以通过稿件的数量很容易地识别出被雇佣的编辑和自由工作者。颜色代码可用于将人员分配到主题区域,出版物中的间隙可表示假期。这样,也可以从这样的图形中收集编辑部共享假期的指示。这些是否表明这些人之间有更密切的个人关系?

诸如后者的问题和信息表明了评估的危险性。只使用了公开的免费数据。爆炸性只有通过将许多数据聚合和链接在一起并进行适当的可视化才能产生。由于人类强大的模式识别能力,人类能够在此基础上得出结论。

例如,竞争对手可以确定编辑的主题领域,以便招募他们。主管可以窥探员工的私人关系,等等。

什么是数据网格——以及如何不对其进行网格划分

原文:https://towardsdatascience.com/what-is-a-data-mesh-and-how-not-to-mesh-it-up-210710bb41e0?source=collection_archive---------0-----------------------

实现最新行业趋势的初学者指南:数据网格。

图片由 罗南古田 Unsplash

问问数据行业的任何人,最近什么是热门话题,“数据网格”很可能会成为热门话题。但是什么是数据网格,为什么要构建数据网格呢?好奇的人想知道。

自助式商业智能的时代,几乎每个公司都认为自己是数据第一的公司,但并不是每个公司都以应有的民主化和可扩展性水平对待他们的数据架构。

比如,贵公司将数据视为创新的驱动力。你的老板是业内最早看到雪花和 Looker 潜力的人之一。或者,您的 CDO 领导了一项跨职能计划,向团队传授数据管理最佳实践,而您的 CTO 投资了一个数据工程团队。然而,最重要的是,您的整个数据团队都希望有一种更简单的方法来管理组织不断增长的需求,从处理永无止境的即席查询到通过中央 ETL 管道处理不同的数据源。

支持这种对民主化和可伸缩性的渴望的是认识到您当前的数据架构(在许多情况下,一个孤立的数据仓库或一个具有一些有限实时流能力的数据湖)可能无法满足您的需求。

幸运的是,寻找数据新租约的团队只需要看看数据网,一种正在席卷行业的架构范式。

什么是数据网格?

就像软件工程团队从单片应用过渡到微服务架构一样,数据网格在许多方面是微服务的数据平台版本。

正如 ThoughtWorks 顾问和该术语最初的设计者 Zhamak Dehghani 首先定义的那样, 数据网格 是一种数据平台架构,它通过利用面向领域的自助式设计来接纳企业中无处不在的数据。借用 Eric Evans 的 领域驱动设计 理论,一种将代码的结构和语言与其对应的业务领域相匹配的范式,数据网格被广泛认为是数据领域的下一个重大架构转变。

与在一个中央数据湖中处理数据的消费、存储、转换和输出的传统整体数据基础设施不同,数据网格支持分布式的、特定于域的数据消费者,并将“数据视为产品”,每个域处理自己的数据管道。连接这些域及其相关数据资产的组织是一个通用的互操作性层,它应用相同的语法和数据标准。

我们将把数据网格的定义归结为几个关键概念,并强调它与传统数据架构的不同,而不是重新发明 Zhamak 精心打造的轮子。

(如果你还没有,我强烈推荐你阅读她的开创性文章如何超越单一数据湖到分布式数据网格,或者观看 Max Schulte 的技术演讲为什么 Zalando 过渡到数据网格。你不会后悔的)。

在高层次上,数据网格由三个独立的组件组成:数据源、数据基础设施和由功能所有者管理的面向领域的数据管道。数据网格架构的底层是一个通用的互操作性层,反映了与领域无关的标准,以及可观察性和治理。(图片由蒙特卡洛数据公司提供。)

面向领域的数据所有者和管道

数据网格联合了负责将数据作为产品提供的领域数据所有者之间的数据所有权,同时也促进了跨不同位置的分布式数据之间的通信。

数据基础架构负责为每个域提供处理数据的解决方案,而域的任务是管理数据的接收、清理和聚合,以生成可由商业智能应用程序使用的资产。每个域负责拥有自己的 ETL 管道,但是一组功能应用于所有域,存储、编目和维护对原始数据的访问控制。一旦数据被提供给给定的域并被其转换,域所有者就可以利用这些数据来满足他们的分析或运营需求。

自助功能

数据网格利用面向领域的设计原则来提供一个自助式数据平台,允许用户抽象技术复杂性并专注于他们各自的数据用例。

正如 Zhamak 所概述的,面向领域设计的主要关注点之一是维护每个领域中的数据管道和基础设施所需的重复工作和技能。为了解决这一问题,数据网格收集和提取与域无关的数据基础架构功能,并将其放入一个中央平台,该平台处理数据管道引擎、存储和流基础架构。同时,每个域负责利用这些组件来运行定制的 ETL 管道,为它们提供轻松提供数据所需的支持,以及真正拥有流程所需的自主权。

通信的互操作性和标准化

每个领域的基础是一组通用的数据标准,有助于在必要时促进领域之间的协作——而且通常如此。不可避免的是,一些数据(原始数据源和经过清理、转换和服务的数据集)对多个领域都有价值。为了支持跨域协作,数据网格必须在格式、治理、可发现性和元数据字段以及其他数据特性上实现标准化。此外,就像单个微服务一样,每个数据域都必须定义并同意它们将向其消费者“保证”的 SLA 和质量措施。

为什么要使用数据网格?

直到最近,许多公司还在利用连接到无数商业智能平台的单一数据仓库。这种解决方案由一小群专家维护,并且经常背负着巨大的技术债务。

在 2020 年,当今的架构是一个具有实时数据可用性和流处理的数据湖,其目标是从集中式数据平台接收、丰富、转换和提供数据。对于许多组织来说,这种类型的体系结构在几个方面存在不足:

  • 中央 ETL 管道使得团队对不断增长的数据量的控制更少
  • 随着每个公司都成为数据公司,不同的数据用例需要不同类型的转换,这给中央平台带来了沉重的负担

这种数据湖会导致数据生产者失去联系、数据消费者失去耐心,更糟糕的是,积压的数据团队难以跟上业务需求的步伐。相反,面向领域的数据架构,比如数据网格,给团队带来了两个世界的好处:一个集中的数据库(或者一个分布式数据湖),域(或者业务区域)负责处理他们自己的管道。正如 Zhamak 所说,数据架构可以通过分解成更小的、面向领域的组件来最容易地扩展。

数据网格为数据所有者提供了更大的自主权和灵活性,促进了更大的数据实验和创新,同时减轻了数据团队通过单一管道满足每个数据消费者需求的负担,从而为数据湖的缺点提供了解决方案。

同时,数据网格的自助式基础设施即平台为数据团队提供了一种通用的、领域无关的、通常是自动化的方法来实现数据标准化、数据产品谱系、数据产品监控、警报、日志记录和数据产品质量指标(换句话说,就是数据收集和共享)。综上所述,与传统的数据架构相比,这些优势提供了一种竞争优势,而传统的数据架构通常会因客户和消费者之间缺乏数据标准化而受阻。

啮合还是不啮合:这是一个问题

处理大量数据源并需要试验数据(换句话说,快速转换数据)的团队考虑利用数据网格是明智的。

我们进行了一个简单的计算,以确定贵组织投资数据网格是否有意义。请用一个数字回答下面的每个问题,并将它们加在一起,得出一个总数,换句话说,就是您的数据网格分数。

  • 数据来源数量。你的公司有多少数据源?
  • 数据团队的规模。您的数据团队中有多少数据分析师、数据工程师和产品经理(如果有)?
  • 数据域的数量。多少职能团队(营销、销售、运营等。)依靠你的数据源来驱动决策,你的公司有多少产品,有多少数据驱动的功能正在构建?把总数加起来。
  • 数据工程瓶颈。数据工程团队成为新数据产品实施瓶颈的频率有多高(1 到 10 分,1 表示“从不”,10 表示“总是”)。
  • 数据治理。在 1 到 10 的范围内,数据治理对您的组织来说有多重要,1 表示“我不在乎”,10 表示“它让我彻夜难眠”?

数据网格分数

一般来说,您的得分越高,您公司的数据基础架构要求就越复杂和苛刻,反过来,您的组织就越有可能从数据网格中受益。如果您的得分高于 10,那么实施一些数据网格最佳实践可能对您的公司有意义。如果您的得分高于 30,那么您的组织就处于数据网格的最佳位置,加入数据革命将是明智之举。

以下是如何分解你的分数:

  • 1–15:鉴于您的数据生态系统的规模和单维性,您可能不需要数据网格。
  • 15–30:您的组织正在迅速成熟,甚至可能正处于真正能够利用数据的十字路口。我们强烈建议结合一些数据网格最佳实践和概念,以便以后的迁移更加容易。
  • 30 岁或以上:您的数据组织是您公司的创新驱动力,数据网格将支持任何正在进行或未来的数据民主化计划,并在整个企业中提供自助式分析。

随着数据变得越来越普遍,数据消费者的需求不断多样化,我们预计数据网格对于拥有 300 多名员工的基于云的公司来说将变得越来越普遍。

图片由米姆·Generator.net 提供。

不要忘记可观察性

对于数据行业的许多人来说,使用数据网格架构的巨大潜力既令人兴奋又令人畏惧。事实上,我们的一些客户担心数据网格不可预见的自治和民主化会带来与数据发现和健康以及数据管理相关的新风险。

鉴于数据网格的相对新颖性,这是一个合理的关注,但我会鼓励有好奇心的人阅读小字。与其引入这些风险,数据网格实际上要求 可扩展的、自助式的可观察性 进入您的数据

事实上,如果域没有可观察性,它们就不能真正拥有自己的数据。根据 Zhamak 的说法,任何良好的数据网格所固有的这种自助服务能力包括:

  • 静态和动态数据加密
  • 数据产品版本化
  • 数据产品模式
  • 数据产品发现、目录注册和发布
  • 数据治理和标准化
  • 数据生产谱系
  • 数据产品监控、警报和记录
  • 数据产品质量指标

当打包在一起时,这些功能和标准化提供了一个健壮的可观察层。数据网格范例还规定了一种标准化的、可扩展的方式,用于各个领域处理这些不同的可观察性租户,允许团队回答这些问题以及更多问题:

  • 我的数据是新的吗?
  • 我的数据坏了吗?
  • 如何跟踪架构更改?
  • 我的管道的上游和下游依赖关系是什么?

如果你能回答这些问题,你就可以放心,你的数据是完全可观察的,也是可以信任的。

有兴趣了解更多关于数据网格的信息吗?除了 Zhamak 和 Max 的资源之外,请查看一些我们最喜欢的关于这位数据工程新星的文章:

你的公司正在构建数据网格吗?伸出 巴尔摩西和利奥加维什 带着你的经历、提示、痛点。我们希望收到您的来信!

本文由蒙特卡洛首席执行官 巴尔·摩西 和蒙特卡洛首席技术官Lior GAVI sh撰写。

有兴趣加入数据可靠性运动吗?把手伸向 蒙特卡洛团队

什么是数据集?

原文:https://towardsdatascience.com/what-is-a-data-set-9c6e38d33198?source=collection_archive---------17-----------------------

图片来源:“Via Design Pickle”——更多关于属性

作为一名研究人员和数据科学家,与您的同事分享您谈论数据集时的意思是富有成效的

介绍

T 他的文章以两个专业人士 Sam 和 Pam 的故事开始,他们在数据交流方面有困难,因为他们还没有共享的词汇。也许你会认同萨姆或帕姆。第一个角色 Sam 是一名研究员和数据科学家。第二个角色帕姆也是一个训练有素、技术高超的专业人士。

在这个轶事之后,本文继续定义什么是数据集。数据集的组成部分。数据集是如何构造的。以及研究人员或数据分析师如何应用分析技术生成数据摘要。本文讨论的分析技术被称为交叉列表法。

缺乏共同的词汇

研究员兼数据科学家 Sam 遇到了经验丰富的同事 Pam。Sam 和 Pam 需要讨论在几周后到期的季度报告中添加一个部分。Sam 尚未参与此报告,但已同意帮助完成部分分析。

萨姆和帕姆感到沮丧的原因是两人还没有共同的词汇。

在会议准备过程中,Sam 要求 Pam 带来一份相关原始数据集的副本。萨姆和帕姆认为他们相互理解。但是他们很快意识到他们没有。在会议上,Sam 提供了类似于下图的打印输出,并将其作为原始数据提供。

图 1:显示了三种四年制校园类型和五种机构规模类别中的机构数量。图片来源:“作者截屏”——更多关于归属

此图(图 1)是教育机构类型和机构规模的交叉列表。它显示了每个规模类别(跨列列出)中存在的每种机构类型(在行中列出)的数量。

事实证明,交叉制表并不是原始数据集。交叉列表可以作为数据集使用。但是交叉列表并不是“原始数据”

交叉制表是一种分析技术。交叉列表产生的表格是应用分析技术的结果。因此,当然,Sam 再次要求原始数据集。当然,Pam 认为她已经提供了数据集,因此很沮丧。

萨姆和帕姆感到沮丧的原因是两人还没有共同的词汇。他们还没有有效地沟通。因为 Sam 和 Pam 没有共享的词汇表,他们不仅感到沮丧,而且他们的数据相关项目也会受到影响。

什么是数据集?

数据集大致由两部分组成。这两个组件是行和列。此外,数据集的一个关键特征是它被组织成每行包含一个观察值。

行和列

行和列就是它们听起来的样子。这张图片(图 2)是用来制作上述交叉表格的数据摘录。这些数据来自综合中学后教育数据系统。

图 2:来自 IPEDS 目录信息调查文件的数据摘录。图片鸣谢:“作者截屏”——更多关于归属

在本例中,显示的行是机构标识号(united)、机构名称(instm)、州缩写(stabbr)、机构规模(instsize)和机构类型(sector)。研究人员和数据科学家将这些列称为变量,有时也称为维度。

观察

一个关键特征是每行对应一个观察值。观察确实与收集信息的过程有关。例如,在上表中,为了在各行之间填充信息,科学家将观察第一个机构,并询问“它的名称、州、大小和部门是什么”阿拉巴马 A & M 大学的答案是“阿尔”、“5000-9999”和“公立,4 年或以上”

对于每个机构,有一行。由于每个机构都有一行,因此该数据集适用于以高等教育机构为分析单位的分析。下一节应用一种称为交叉制表的分析技术。

运用分析技术

图 1 对图 2 所示的数据应用了一种称为交叉制表的分析技术。交叉列表引用了两个列或变量(sector 和 instsize)。

应用交叉列表技术很简单。首先,研究人员绘制了一个表格,每个机构类型占一行,每个机构规模类别占一行。然后,如图 1 所示,对于左上角的单元格,研究人员将计算并报告私立 4 年制院校和学生注册人数在 1000 人以下的院校的数量。在表格中上下移动,重复该过程,直到所有单元格都填满。

结论

在我作为一名研究人员,然后作为一名数据科学家的职业生涯中,我发现自己解释“数据集”的含义的次数多得数不清。建立对数据集等关键术语和短语的共同理解是建立数据驱动文化的一个重要方面。

本文解释并举例说明了一个数据集。具体来说,本文演示了通过观察世界上的某些事物,然后记录被观察事物的特征来填充数据集的过程。因此,数据集保存最基本的数据。

同样,本文还将数据集与交叉制表分析技术的输出进行了比较。填充数据集需要观察世界。与填充数据集相关的过程不同,不直接观察世界就可以填充交叉表格。交叉列表可以通过参考数据集来建立。

当 Sam 向 Pam 解释什么是数据集,以及为什么有必要提供 Pam 所寻求的帮助时,两个人一起学习并成长。下一次这两个人一起工作时,他们更有效地完成了他们的项目,挫折也少了很多。

[## 加入我的介绍链接媒体-亚当罗斯纳尔逊

作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…

adamrossnelson.medium.com](https://adamrossnelson.medium.com/membership)

感谢阅读

感谢阅读。把你的想法和主意发给我。你可以写信只是为了说声嗨。如果你真的需要告诉我是怎么错的,我期待着尽快和你聊天。推特:@ adamrossnelsonLinkedIn:亚当·罗斯·尼尔森在推特和脸书:亚当·罗斯·尼尔森在脸书

什么是数据仓库:基本架构

原文:https://towardsdatascience.com/what-is-a-data-warehouse-basic-architecture-ea2cd12c9bb0?source=collection_archive---------17-----------------------

数据仓库主要概念介绍

照片由金在贤Unsplash 上拍摄

数据仓库是一个组件,根据组织的需求对数据进行集中、组织和结构化。它用于数据分析和 BI 流程。

数据仓库并不是一个新概念。事实上,这个概念是在 20 世纪 80 年代末发展起来的。但是,它随着时间的推移而演变。

这篇文章的目的是解释与数据仓库相关的主要概念及其用例。此外,我们将讨论数据湖以及这两个组件如何协同工作。

TL;DR — 这篇文章包含了关于数据湖和数据仓库的基本信息。所以,如果你熟悉这些主题和它们的基本架构,这篇文章可能不适合你。如果这不是你的情况,请继续享受阅读。

为什么需要数据仓库?

一开始,一片混乱。至少这是我到达一个使用旧的电子表格和一堆 CSV 文件进行数据分析的组织时的观点。没有人不知道文件会从哪里来。他们只是…在那里。

不一致的衡量标准、不可复制的流程和大量手动复制/粘贴工作在当时很常见。

甚至没有人知道他们跟踪的指标的真正价值是什么。例如,对于月活跃用户(MAU)这样的指标,答案总是取决于你问的是谁。

如果你还和我在一起,这让你想起了什么,你可能知道拥有一个单一的真相来源是很重要的。主要是因为您不想让许多业务用户根据不一致的指标做出决策。

此外,您不希望您的数据工程师/分析师做一堆可以自动化的手动工作。当然,他们可以做比复制/粘贴电子表格更有趣的事情。

如果这是您的组织每天都面临的问题,那么您可能需要一个数据仓库。

那么,现在让我来定义什么是数据仓库…

数据仓库是一个组件,根据组织的需求对数据进行集中、组织和结构化。它用于数据分析和 BI 流程。

简而言之,在以下情况下,您可能需要数据仓库:

  • 有几个人在处理数据,他们需要数据保持一致,,他们需要一个真实的来源。因此,他们可以做出更明智的决定
  • 您有几个数据来源,以手动方式集成它们并不容易
  • 您希望自动化需要重复的手动流程
  • 您希望基于干净、有组织和结构化的数据进行数据分析
  • 您拥有维护数据仓库的资源

数据仓库基本概念

现在你知道为什么你需要一个数据仓库,让我们探索一些数据仓库的基本概念。

因此,如果您想集成多个数据源,并以一种可以执行数据分析的方式组织数据,您必须将其集中化。这就是 ETL(提取、转换和加载)过程的用武之地。

基本上,ETL 过程从数据源中提取数据,以一种可用的方式转换数据,并将其加载到数据仓库中。所以,你可以做一些很酷的分析和商业智能流程。

一个经典 ETL 过程的插图——作者制作的插图

但是,的 ETL 流程被认为是 的遗留方式 。ETL 过程表现出的一些问题是:

  • 没有原始数据形式的注册表,因为转换发生在数据仓库的途中。这使得转换过程难以重现。更有甚者,如果你的数据不是一成不变的,,数据源是不断变化的
  • 向转换逻辑中引入新的变化可能很困难,因为它可能需要您重新处理已经转换的过去的数据。根据您的要求,如果您没有原始形式的数据,这可能很难实现
  • 维护用于支持 ETL 过程的数据架构可能会更加复杂,因为您可能需要投入额外的资源来执行它们

还有另一种类似于 ETL 过程的方法: ELT 过程。 ELT (提取、加载和转换)流程被认为是现代的方法。基本上,它们执行相同的过程,但顺序不同。这种方法的一些主要优势是:

  • 数据可以以其原始形式提取,最终以提取过程中的简单逻辑结束
  • 原始形式的数据可以存储在临时区域中。这样,您可以生成不可变的数据。通过这样做,你可以使转化过程容易重现
  • 转换过程可以通过使用现代数据仓库的能力来执行,因此您不必花费额外的资源来执行这样的过程
  • 基于 ELT 的架构可能更容易维护,这取决于您的设置

集结地

根据 Maxime Beauchemin 的说法,理想情况下,数据仓库的暂存区应该是不可变的,也就是说,它应该是一个所有数据都以其原始形式存在的区域。因此,它可以作为您的数据仓库的装载平台

临时区域允许您获取原始形式的数据,并在其上执行转换过程,而无需实际更改数据。因此,基本上,您将原始形式的数据作为输入,生成新的数据作为输出。

这个概念很重要,因为如果您需要更改转换过程中的一些逻辑,如果您拥有原始形式的数据,那么重新处理数据应该更容易。请记住,这是一个理想的状态,所以实现它有时会很困难。

一个不可变的暂存区应该允许你从零开始重新计算仓库的状态,以防你需要。这可以通过实现功能转换过程和纯任务来实现——更多信息请参见这篇文章。此外,查看这篇文章,了解功能数据工程概念的实施示例。

[## 通过使用气流在数据加载过程中实现功能数据工程范例

我们在一个包含四十多个应用程序的项目中集成了几个数据源。这些来源由…整合

towardsdatascience.com](/implementing-the-functional-data-engineering-paradigm-in-data-load-processes-by-using-airflow-61d3bae486b0)

数据湖

数据湖可以定义为多个数据源的存储库,其中数据以其原始格式存储。

它类似于一个数据仓库的暂存区——参见这篇帖子了解更多信息。但是,它们解决了一些数据仓库没有解决的问题。例如,处理半结构化和非结构化数据— JSON 文件、XML 文件等等。

数据仓库体系结构

此时,您可能想知道数据仓库和数据湖是如何协同工作的。

因此,简单地说,您可以通过实施 ELT 流程并遵循一些架构原则,在数据湖之上构建一个数据仓库。

查看这篇文章,了解更多关于这些原则的信息。

[## 构建数据仓库:基本架构原则

一种简化数据仓库的方法

towardsdatascience.com](/building-a-data-warehouse-basic-architectural-principles-66bd7059ffd0)

允许实现前面解释的方法的基本架构可能如下所示:

一个数据管道体系结构的抽象——作者举例说明

这个阶段可以描述如下:

  • 来源:来自业务运营的数据。这些数据可能来自您组织的生产数据库。此外,它可能来自您组织感兴趣的其他来源,,例如,如 CRM、API 等…
  • 数据湖:应该集中所有数据源的存储库。它可以作为数据仓库的中转区。理想情况下,它应该包含不可变的数据,这样可以很容易地保证过程的再现性。
  • 数据仓库:一个根据数据分析需要构建所有数据的来源。它建立在数据湖之上。基本上,您将数据湖的数据作为输入,通过应用一些转换逻辑,在数据仓库中生成该数据的新视图。
  • 可视化:所有的工具和过程允许你通过绘制一些图表来进行酷的分析,例如,元数据库,表格等等。这些工具应该允许您可视化数据仓库中的结构化数据。所有与复杂计算相关的繁重工作都应该在数据仓库中执行。

结论

在这篇文章中,我们讨论了一些与数据仓库和数据湖相关的基本概念。

此外,我们还讨论了这两个组件如何通过组装正确的架构来实现互补。

你应该知道,关于这个话题,你应该检查更多。

例如,一旦对数据仓库进行了初始设置,就应该实施几个过程来提高其可操作性和性能。更多信息请看这篇文章

[## 构建数据仓库管道:基本概念和路线图

提高数据管道可操作性和性能的五个过程

towardsdatascience.com](/building-a-data-warehouse-pipeline-basic-concepts-roadmap-d14032890ab6)

如果你想更深入地了解数据仓库的理论,别忘了查看 Ralph Kimball 的数据仓库工具包。这本书是最受认可的关于数据仓库的书籍之一。

我希望这些信息对你有用。

感谢阅读到最后。

下期帖子再见!

如果你想随时更新我的作品, 请加入我的 通迅 !偶尔,我会和我的读者分享一些东西。如果你加入我会很感激:)

[## 对数据仓库感兴趣?

我已经写了几篇关于它的文章。这就是如何阅读它们!

ajhenaor.medium.com](https://ajhenaor.medium.com/interested-in-data-warehousing-424b49ec97e4)

什么是数据仓库,何时以及为什么要考虑数据仓库

原文:https://towardsdatascience.com/what-is-a-data-warehouse-when-and-why-to-consider-one-2e826be68e95?source=collection_archive---------32-----------------------

"什么时候我们应该考虑获得一个数据仓库?"

术语“数据仓库”在数据分析领域被广泛使用,然而,对于数据分析新手来说,问上述问题是很常见的。

这篇文章试图帮助解释数据仓库的定义,何时以及为什么要考虑建立一个数据仓库。

Ps:这是我们团队正在编写的指南的一部分,分析设置指南。如果您有兴趣了解更多关于现代 BI 堆栈的高级或最佳实践,请随时查看链接以了解我们的进展。

什么是数据仓库?

数据仓库是一种分析数据库,它存储和处理您的数据,以便进行分析。您的数据仓库将处理您的分析的两个主要功能:存储您的分析数据&处理您的分析数据

你为什么需要一个?您需要数据仓库有两个主要目的:

  1. 首先,如果来自多个业务功能的数据位于不同的来源,您就不能轻松地将它们组合起来。
  2. 其次,您的源系统不是为运行繁重的分析而设计的,这样做可能会危及您的业务运营,因为这会增加这些系统的负载。

您的数据仓库是分析管道流程每一步的核心,它有三个主要用途:

  • 存储:在整合(提取&加载)步骤中,您的数据仓库将接收来自多个来源的存储数据
  • 流程:在流程(转换&模型)步骤中,您的数据仓库将处理从转换步骤生成的大部分(如果不是全部的话)密集处理
  • 访问:在报告(可视化&交付)步骤中,报告首先被收集到数据仓库中,然后被可视化并交付给最终用户。

目前,大多数数据仓库使用 SQL 作为他们的主要查询语言。

什么时候是获得数据仓库的合适时机?

TL;博士的回答是看情况。这取决于你公司所处的阶段、你拥有的数据量、你的预算等等。

在早期阶段,您可能可以在没有数据仓库的情况下,将商业智能(BI)工具直接连接到您的生产数据库(对于刚刚起步的人来说,这是一个简单的 BI 设置)。

但是,如果您仍然不确定数据仓库是否适合您的公司,请考虑以下几点:

首先,你需要分析不同来源的数据吗?

在公司生命中的某个时刻,您可能需要组合来自不同内部工具的数据,以便做出更好、更明智的业务决策。

例如,如果你是一家餐馆,想要分析订单/服务员比率效率(一周中员工最忙和最空闲的时间),你需要将你的销售数据(来自 POS 系统)和你的员工值班数据(来自 HR 系统)结合起来。

对于这些分析,如果您的数据位于一个中心位置,就容易多了。

第二,你需要把你的分析数据和交易数据分开吗?

如前所述,您的事务系统不是为分析目的而设计的。因此,如果你在应用程序中收集活动日志或其他潜在有用的信息,将这些数据存储在应用程序的数据库中并让分析师直接在生产数据库中工作可能不是一个好主意。

相反,更好的办法是购买一个数据仓库——一个为复杂查询设计的——并将分析数据转移到那里。这样,你的应用程序的性能就不会受到你的分析工作的影响。

第三,你的原始数据源是否不适合查询?

例如,绝大多数 BI 工具不能很好地与 MongoDB 这样的 NoSQL 数据存储一起工作。这意味着在后端使用 MongoDB 的应用程序需要将其分析数据转移到数据仓库,以便数据分析师能够有效地使用它。

第四,您想提高分析查询的性能吗?

如果您的事务性数据包含成千上万行,那么创建汇总表将这些数据聚合成更易查询的形式可能是个好主意。不这样做将导致查询变得非常慢——更不用说给数据库带来不必要的负担了。

如果你对以上任何一个问题的回答是肯定的,那么你很有可能会得到一个数据仓库。

也就是说,在我们看来,获得一个数据仓库通常是一个好主意,因为数据仓库在云时代并不昂贵。

我应该选择哪个数据仓库?

以下是一些常见的数据仓库,您可以从中挑选:

  • 亚马逊红移
  • 谷歌大查询
  • 雪花
  • 点击之家(自托管)
  • Presto(自托管)

如果您刚刚开始,并且没有强烈的偏好,我们建议您使用 Google BigQuery,原因如下:

  • BigQuery 的第一个 10GB 存储和第一个 1TB 查询是免费的。之后就是按使用付费了。
  • BigQuery 是完全托管的(无服务器):没有物理(或虚拟)服务器需要启动或管理。
  • 作为其架构的结果,BigQuery 自动伸缩: BigQuery 将根据查询的复杂性和您扫描的数据量,自动确定分配给每个查询的正确计算资源量,而无需您手动微调。

(注:我们与谷歌没有任何隶属关系,我们推广 BigQuery 也没有报酬)。

但是,如果您的数据量快速增长,或者您有复杂/特殊的用例,您将需要仔细评估您的选择。

下面,我们给出了一个最流行的数据仓库表。我们在这里的目的是让您对数据仓库领域中最常见的选择有一个高层次的理解。这绝不是全面的,也不足以帮助你做出明智的决定。

但我们认为这是一个好的开始:

什么使得数据仓库不同于普通的 SQL 数据库?

此时,你们中的一些人可能会问:

“嘿,数据仓库不就像关系数据库一样存储数据以供分析吗?我就不能用 MySQL、PostgreSQL、MSSQL 或者 Oracle 之类的东西作为我的数据仓库吗?”

简单的回答是:是的,你可以。

最长的答案是:视情况而定。首先,我们需要理解几个概念。

事务性工作负载与分析性工作负载

理解两种数据库工作负载之间的区别很重要:事务性工作负载和分析性工作负载。

事务性工作负载是服务于正常业务应用程序的查询工作负载。当访问者在 web 应用程序中加载产品页面时,会向数据库发送一个查询来获取该产品,并将结果返回给应用程序进行处理。

SELECT * FROM products WHERE id = 123

(上面的查询检索 ID 为 123 的单个产品的信息)

以下是事务性工作负载的几个常见属性:

  • 每个查询通常检索单个记录或少量记录(例如,获取一个类别中的前 10 篇博客文章)
  • 事务性工作负载通常涉及简单的查询,运行这些查询需要很短的时间(不到 1 秒)
  • 任意时间点的大量并发查询,受限于应用程序的并发访问者数量。对于大网站来说,这可以达到几千或几十万。
  • 通常对整个数据记录(例如产品表中的每一列)感兴趣。

另一方面,分析工作量指的是用于分析目的的工作量,也就是这本书谈到的那种工作量。运行数据报告时,将向 DB 发送一个查询来计算结果,然后显示给最终用户。

SELECT category_name, count(*) as num_products FROM products GROUP BY 1

(上面的查询扫描整个产品表,以计算每个类别中有多少产品)

另一方面,分析工作负载具有以下属性:

  • 每个查询通常扫描表中的大量行
  • 每个查询都是繁重的,需要很长时间(几分钟,甚至几个小时)才能完成
  • 受报告数量或使用分析系统的内部员工数量的限制,并发查询并不多。
  • 通常感兴趣的只是几列的数据。

下面是事务性与分析性工作负载/数据库之间的比较表。

事务性工作负载有许多简单的查询,而分析性工作负载很少有繁重的查询。

分析数据库的后端是不同的

由于上述两种工作负载之间的巨大差异,这两种工作负载的数据库底层后端设计非常不同。事务数据库针对具有高并发量的快速、简短查询进行了优化,而分析数据库针对长时间运行的资源密集型查询进行了优化。

你问的建筑有什么不同?这将需要一个专门的部分来解释,但它的要点是分析数据库使用以下技术来保证卓越的性能:

  • 列存储引擎:分析数据库不是将数据逐行存储在磁盘上,而是将数据列组合在一起并存储。
  • 列数据的压缩:每一列中的数据被压缩,以实现更小的存储和更快的检索。
  • 查询执行的并行化:现代分析数据库通常运行在数千台机器上。因此,每个分析查询都可以分成多个较小的查询,在这些机器上并行执行(分而治之策略)

现在您可能已经猜到,MySQL、PostgreSQL、MSSQL 和 Oracle 数据库旨在处理事务性工作负载,而数据仓库旨在处理分析性工作负载。

那么,我可以使用一个普通的 SQL 数据库作为我的数据仓库吗?

就像我们之前说的,是的,你可以,但这要看情况。

如果您刚开始使用少量数据和一些分析用例,选择一个普通的 SQL 数据库作为您的数据仓库是非常好的(最流行的是 MySQL、PostgreSQL、MSSQL 或 Oracle)。如果您相对较大,拥有大量数据,您仍然可以,但是需要适当的调优和配置。

也就是说,随着 BigQuery、Redshift 等低成本数据仓库的出现,我们建议您继续使用数据仓库。

然而,如果您必须选择一个普通的基于 SQL 的数据库(例如,您的企业只允许您在自己的网络内托管它),我们推荐使用 PostgreSQL ,因为它拥有最多支持分析的特性。我们也写了一篇详细的博文讨论这个话题:为什么你应该使用 PostgreSQL 而不是 MySQL 来进行分析

摘要

在这篇文章中,我们放大到数据仓库,讨论了:

  • 数据仓库是中央分析数据库,用于存储和处理您的数据以进行分析
  • 您应该获得数据仓库的 4 个触发点
  • 可供选择的数据仓库技术的简单列表
  • 数据仓库如何针对分析工作负载进行优化,而传统数据库如何针对事务工作负载进行优化。

最初发表于Holistics 的《分析设置指南:了解数据仓库

什么是甘?

原文:https://towardsdatascience.com/what-is-a-gan-d201752ec615?source=collection_archive---------18-----------------------

左和右:甘斯和 dreamgenerator.com 的作品,中间的照片是由特拉维斯·科尔伯特Unsplash 上创作的原作

一个怪异的想法如何成为尖端人工智能的基础

T T 上任何关于机器学习的课程,你都会不可避免地遇到生成性对抗网络(GANs)。理解它们意味着掌握让计算机与自身对抗的惊人力量。

现在大约五点钟,你刚刚完成作业。

“我不干了!”

太好了!你想玩游戏吗?

耶!今天我们要玩大富翁游戏。

啊,垄断!老实说,我讨厌其中一个玩家得到所有的财产,而另一个玩家不可能赢。

加油!“求你了!”

“那好吧,”

半小时后,你我的财产还是相当平均分配的。

看到了吗?垄断没那么糟糕。

你说得对。我之前说过,因为我正在构建的算法有问题。不知何故,一个选手比另一个选手出色是出了名的。我很难解决这个问题。

用 dreamgenerator.com 上的神经网络制作的图像——原始图片是右上方中间的那张。

啊?“算法中怎么会有玩家呢,”

当你和甘斯打交道时,你就有了对手。

什么?“什么是甘斯,”

让我解释一下。“你知道什么是神经网络吗?”

“呃,不。”

神经网络基本上是一种用来识别模式的算法。例如,面部识别非常依赖神经网络。

你给它一堆无序的数据——比方说人脸的图片——随着时间的推移,它会知道一张人脸是什么样的。我们称之为训练。

“一旦我们训练了神经网络,我们可以给它看一张随机的图像,它会以令人印象深刻的准确度决定这是不是一张人脸。”

[## 什么是神经网络?

Rajarshi Bhadra 以一种非常简单的方式描述了神经网络的功能以及它们为什么如此重要。

towardsdatascience.com](/what-is-a-neural-network-a02b3c2fe3fa)

好吧,神经网络可以告诉你一张脸是不是一张脸。“那么什么是甘?”

GAN 是指我们让两个神经网络互相竞争。就像在游戏中一样。

你让电脑和自己玩?“这多愚蠢啊,”

这并不愚蠢。真是天才,”

“你得给我解释一下……”

第一个神经网络称为生成器。它会生成虚假数据点,并将其传递给对手。那是第二个网络,鉴别器。它的工作就是分辨哪个数据点是真的,哪个是假的。

[## 50 行代码中的生成性对抗网络

TL;dr: GANs 比你想象的要简单

medium.com](https://medium.com/@devnag/generative-adversarial-networks-gans-in-50-lines-of-code-pytorch-e81b79659e3f)

首先,我们在一组真实和虚假的数据点上训练鉴别器。鉴别者猜测什么是真的,什么是假的。之后,我们揭开了真正的解决方案。根据反馈,鉴别者知道什么是假的,什么不是。

就像在警察学院一样,学生们必须区分真钞和假钞。

没错。但是现在发电机开始发挥作用了。他是我们游戏中的伪钞制造者。我们给他真的和假的数据点来训练。基于这些点,它的工作是制造新的数据点来欺骗鉴别器。

但是只给生成器真实的数据点不是更好吗?因为如果你在假货上训练它,那么它会重复那些错误。如果你让我伪造一张 300 美元的钞票,警察会很快抓住它。

用 GAN 在上制作的图像——原图为中间的上图。

你说得对!但是我们不希望发电机变得太好太快。不然鉴别器跟不上。”

哦,就是那个垄断问题?在垄断游戏中一个玩家得到了太多的财产。然后就变得无聊了,因为另一个玩家无论如何都赢不了。

没错。我们想时不时地误导生成器。这样歧视者就有机会跟上了。

好吧,假设发电机制造了假数据。现在它可以骗过鉴别器了,对吗?

好吧,它会努力的。鉴别器将有望在区分真实数据点和虚假数据点方面做出合理的工作。然后,它会将自己的决定通知发电机。

比如警察什么时候会告诉一个罪犯他是否被判有罪?

没错。基于这个决定,发电机将再次开始工作。它会制造新的假货,但根据反馈,它会努力让假货变得更好,以便骗过鉴别者。

然后再轮到鉴别者,以此类推。最终,我们使用 GAN 生成了一堆新的数据点!”

好吧酷。“但这有什么用呢,”

你可以用它做各种事情。例如,你可以根据别人的想法,制作漂亮的新图片。

你可能听说过深度假货。这些照片是用甘斯做的。“你听说过可以辨别人脸年龄的应用吗?”

呸。噱头!”

[## 利用生成性对抗网络生成现代艺术

创建一个生成现代艺术的生成对抗网络,并在 Spell 平台的 GPU 上进行训练

towardsdatascience.com](/generating-modern-arts-using-generative-adversarial-network-gan-on-spell-39f67f83c7b4)

哦,它们可能有用!例如在多年后抓捕罪犯。

甘也被用来对图片进行很好的描述。这对搜索引擎非常有用,对视力受损的人也是如此。你基本上是在教计算机如何看,以及如何解释它看到的东西!

我们还没有到达终点。有太多的应用有待探索。

如果你这么说的话……但你之前说过你的 GAN 有问题。

没错。这是垄断问题——即使我给我的发电机 evough fakes 进行训练,它也变得太好太快了。所以鉴别者一直放弃……”

[## 理解生成敌对网络(GANs)

一步一步地建立导致 GANs 的推理。

towardsdatascience.com](/understanding-generative-adversarial-networks-gans-cd6e4651a29)

“哦,天哪!”

这是 GANs 的一个常见问题。如何更好地平衡系统的研究仍在进行中。

好吧,那我就让你继续解决你的问题。反正这一轮大富翁我已经赢了。

等等,什么?我一定是因为想我的甘斯而分心了…该死,这一轮你赢了!

耶!我现在就让你继续你的 GAN 垄断生意。

谢谢你。“但是等着瞧吧——明天是我的复仇之轮!”

什么是 GPU,深度学习需要 GPU 吗?

原文:https://towardsdatascience.com/what-is-a-gpu-and-do-you-need-one-in-deep-learning-718b9597aa0d?source=collection_archive---------1-----------------------

穆基尔·梅农在 Unsplash 上拍摄的照片

在深度学习中,大家似乎都推荐用 GPU。它是什么,没有它你能做什么,它到底是给谁的?

任何试图大规模提高训练模型性能的数据科学家或机器学习爱好者都会在某个时候遇到上限,并开始经历不同程度的处理延迟。当数据集变大时,使用较小的训练集需要几分钟的任务现在可能需要更多的时间,在某些情况下需要几周。

但是什么是 GPU 呢?它们与 CPU 相比如何?我的深度学习项目需要一个吗?

如果你曾经问过自己这些问题,请继续读下去…

我最近开源了我的计算机视觉库,它利用 GPU 进行动态图像和视频处理。我会留下 Github 回购的链接,以防你感兴趣:)

[## 贾斯考斯/卡尔

用于高性能人工智能研究的轻量级计算机视觉库。Caer 包含强大的图像和视频处理操作…

github.com](https://github.com/jasmcaus/caer)

任何数据科学家或机器学习爱好者都会听说,深度学习需要很多硬件,至少在他们的一生中会听到一次。一些人在他们的笔记本电脑上训练简单的深度学习模型几天(通常没有 GPU),这导致了一种印象,即深度学习需要大系统来运行执行。

这创造了一个围绕深度学习的神话,为初学者制造了一个路障。

在过去的几年里,我参考的每本书的作者总是提到以下几点:

深度学习需要大量的计算能力来运行。

但是我没有数据中心可供我使用,当我在一台相当大的笔记本电脑上构建我的第一个深度学习模型时,我知道这个共识要么是错误的,要么是用一些真理描绘的。

你不必接管谷歌就能成为深度学习专家。

为什么深度学习需要更多的硬件?

对于任何神经网络来说,深度学习模型的训练阶段是资源最密集的任务

在训练过程中,神经网络接收输入,然后使用在训练过程中调整的权重在隐藏层进行处理,然后模型给出预测。调整权重以找到模式,从而做出更好的预测。

这两种操作本质上都是矩阵乘法。简单的矩阵乘法可以用下图来表示

来源:jeremyjordan.me

在一个神经网络中,我们可以将第一个数组的输入到神经网络,而第二个数组形成它的权重。**

很简单,对吧?

是的,如果你的神经网络有大约 10,100 甚至 100,000 个参数。计算机仍然能够在几分钟内,甚至最多几个小时内处理这个问题。

但是如果你的神经网络有超过 100 亿个参数呢?使用传统方法训练这种系统需要。你的电脑可能在你完成十分之一之前就放弃了。

“一个神经网络接受搜索输入,并从 1 亿个输出或产品中进行预测,通常每个产品会有大约 2000 个参数。所以你把它们相乘,神经网络的最后一层现在是 2000 亿个参数。我没有做过任何复杂的事情。我说的是一个非常非常死简单的神经网络模型。”—莱斯大学的一名博士生

让深度学习模型训练得更快

深度学习模型可以通过简单地在同时运行所有操作而不是一个接一个地运行来更快地训练。

你可以通过使用一个 GPU 来训练你的模型来实现。

GPU(图形处理单元)是具有专用存储器的专用处理器,其通常执行渲染图形所需的浮点操作

换句话说,它是一个用于大量图形和数学计算的单芯片处理器,可以为其他任务释放 CPU 周期。

GPU 和 CPU 之间的主要区别是,与 CPU 相比,GPU 在算术逻辑单元上投入更多的晶体管,而在缓存和流控制上投入更少的晶体管。

虽然 CPU 主要适用于需要解析解释代码中复杂逻辑的问题,但 GPU 是为计算机游戏的专用图形渲染工具而设计的,后来得到了增强,以加速其他几何计算(例如,将多边形或垂直旋转到不同的坐标系,如 3D)。

GPU 比 CPU 小,但往往比后者有更多的逻辑核心(算术逻辑单元或 alu、控制单元和内存缓存)。

来源:fast.ai

在上面的图表中,您可以看到 GPU(红色/绿色)理论上可以完成 CPU(蓝色)的 10-15 倍操作。这种加速在实践中也非常适用。

如果你把 CPU 看成一辆玛莎拉蒂,GPU 可以看成一辆大卡车。

CPU(玛莎拉蒂)可以快速读取 RAM 中的少量包(3 -4 名乘客),而 GPU(卡车)速度较慢,但可以一次读取大量内存(约 20 名乘客)。

该视频进一步概述了这一概念:

为什么选择 GPU 进行深度学习

GPU 针对训练人工智能和深度学习模型进行了优化,因为它们可以同时处理多个计算

它们拥有大量内核,可以更好地计算多个并行进程。此外,深度学习中的计算需要处理大量数据——这使得 GPU 的内存带宽最合适。

有几个决定参数决定使用 CPU 还是 GPU 来训练深度学习模型:

内存带宽:

带宽是 GPU 比 CPU 计算速度更快的主要原因之一。对于大型数据集,CPU 在训练模型时会占用大量内存。

计算巨大而复杂的任务占用了 CPU 中大量的时钟周期——CPU 按顺序处理任务,并且拥有比它的对手 GPU 更少的内核数量。

另一方面,独立的 GPU 配备了专用的 VRAM(视频 RAM)内存。因此,CPU 的内存可以用于其他任务。

一段时间内 CPU 和 GPU 带宽的比较

数据集大小

在深度学习中训练模型需要大型数据集,因此在内存方面需要大量的计算操作。为了高效地计算数据,GPU 是最佳选择。计算量越大,GPU 相对于 CPU 的优势就越大。

最佳化

在 CPU 中优化任务要容易得多。CPU 核虽然少,但比成千上万的 GPU 核更强大。

每个 CPU 内核可以执行不同的指令(MIMD 架构),而 GPU 内核通常由 32 个内核组成,在给定时间并行执行相同的指令(SIMD 架构)。

考虑到所需要的努力,密集神经网络中的并行化是非常困难的。因此,复杂的优化技术在 GPU 中比在 CPU 中更难实现。

照片由亚历山大·奈特Unsplash 上拍摄

该不该用 GPU?

与任何数据科学项目一样,这取决于具体情况。在速度、可靠性和成本之间需要权衡考虑:

  1. 如果你的神经网络规模相对,没有 GPU 也可以凑合
  2. 如果你的神经网络涉及成吨的计算涉及成千上万的参数,你可能要考虑投资一个 GPU

一般来说,对于快速机器学习来说,GPU 是一个更安全的赌注,因为在其核心,数据科学模型训练由简单的矩阵数学计算组成,如果并行执行计算,其速度可能会大大提高。

参见 Reddit 上关于深度学习投资的最佳 GPU 的帖子

云 GPU 实例

你也应该给云 GPU 一个思路。如果你不想买一堆昂贵的 GPU,你可以通过云托管公司按需利用 GPU。它们将使您无需配置硬件,最重要的是,它们并不昂贵,在您使用它时,成本可以低至每小时 0.25 美元。

一旦你完成了,记得关闭你的云实例。

你将租用国外的计算机/服务器,而不是自己运行。仅仅关闭你的浏览器或你的电脑是不够的,这些只会切断你的设备和这个远程服务器之间的连接,而不是关闭你为之付费的东西。否则,你将为它运行的所有时间付费,并得到一个讨厌的账单!

CPU 最擅长顺序处理单个更复杂的计算,而 GPU 更擅长并行处理多个但更简单的计算。

GPU 计算实例的成本通常是 CPU 计算实例的 2-3 倍,因此除非您在基于 GPU 的培训模型中看到 2-3 倍的性能提升,否则我会建议使用 CPU。

一如既往,非常感谢您的阅读!请告诉我你的想法或者希望我接下来在评论中写些什么。我也乐于接受批评!

下期帖子再见!😄

什么是图形数据库?

原文:https://towardsdatascience.com/what-is-a-graph-database-249cd7fdf24d?source=collection_archive---------19-----------------------

回到第一原则…

在过去的几年中,已经有很多关于图形数据库作为一种独特的数据库类型的文章,并且很容易原谅相信附带的营销材料保证了图形数据库与任何其他数据库的区别。

那么营销材料说了什么,你应该给多少信任呢?

图形数据库和图形

图形数据库被描述为在 图形 上操作的数据库,其中事物之间的关系很重要。图形是一种结构,图形数据库的底层图形映射存储在数据库中的数据的结构或模式

下图是一个电影院座位预订数据库解决方案的图表模型。我们将使用这样的模式来预订座位,以便在电影院的特定时段观看电影。我相信可以很容易地说,图模式是一目了然的。

属性图模式

带有一个或多个箭头的每条线或表示所谓的节点顶点之间的关系,并形成所谓的有向图。模型本身的类型被称为属性图模式。属性图模式的属性组件将其名称用于节点和边可以具有属性的地方,例如喜欢边的等级节点的年龄

NB 在数学的图论中,关系不需要用一个或多个箭头来指示,或者有一个读数(例如喜欢)所以我们在这里采取许可,在座位和预订之间有一个双向边,因为,让我们面对它,所有的关系都是双向的, 在这个模式中,我们使用双向映射让我们知道一个预订可以针对许多座位,一个座位可以在许多预订中……这种信息通常不会以这种方式在属性图模式中捕获,因为当涉及到底层模型的更好的语义时,常用的图模式就显得不够了。

带有一个大箭头和一个小箭头的边让我们知道该读数在生成该模式的软件的模式中存储有一个倒数读数。例如时段 影院可能有互读影院 主持 时段

当查询数据库时,这些节点之间的关系用于在数据库中的数据上导航。例如,我们可以编写一个图形查询,如下所示:

图形查询

以图形方式查看数据库模式并以图形方式查询数据库的优势在于,查询结果也可以以图形方式查看。在我们的示例中,“大西部电影院”主持一个会话,该会话有一个座位的预订,该座位位于第 1 行……在下面显示为“1 1 ”,因为该行位于电影院 1,即我们示例数据库中的大西部电影院。类似地,那一行中有座位“A”和“B”的预订,等等。

挑战“专门建造”的格言

图形数据库的营销材料通常声称图形数据库是为图形处理而专门构建的。也许是这样,但是在这篇文章中,我们对“目的建造的说法提出质疑,并提出有效的问题,

-“所有数据库都是图形数据库吗?”;还有
——“是不是所有的数据库都可以用一种图查询语言来查询?”

也就是我们问,“什么是图形数据库?”

专用图形数据库

毫无疑问,有专门为图形处理而建立的数据库。让我们称这些为专用图形数据库。在我看来,这些是最没意思的数据库。

如果所有的数据库都可以看作一个图形数据库,为什么要把自己局限于图形处理呢?

还有哪些其他类型的数据库处理?

我们找到了这篇文章的症结所在。图形数据库的供应商经常将他们的产品与被称为“关系数据库”的数据库的主要销售类型区分开来,否则他们就只是在销售一个数据库

什么是关系数据库?

顾名思义,关系数据库是一种关系很重要的数据库。与其写一篇关于关系数据库是什么样子的论文,不如让我们把我们例子中的相同模式看作一个实体关系图(ERD) ,这是一种用于查看关系数据库关系的模式。

下面的动画在属性图模式(PGS)和实体关系图之间来回切换,显示我们谈论的是同一个模式,只是视角不同。

NB 用数学术语来说,属性图模式和实体关系图有一个概念元模型,它带有一个接近于同构同态

演示属性图模式和实体关系图之间的同态/同构

图形查询及其流行原因

因为图数据库很容易为数据库模式中的每个关系存储谓词信息,所以可以用利用谓词信息的语言来查询数据库,这有助于易于阅读的查询。

以下是对我们的影院预订模式进行图形查询的示例:

用于图形数据库的图形查询

图形查询的美妙之处不仅在于它们易于阅读,而且易于编写。上面的查询是用知识语言写的(www.factengine.ai)。

这与您如何用通常用于关系数据库的结构化查询语言编写相同的查询形成对比:

选择电影院。CinemaName,Row。Cinema_Id,世界其他地区。前排,请坐。Cinema_Id,座位。前排,请坐。信,预订。Person_Id,预订。Film_Id,订票。日期时间,预订。Cinema_Id,Person。登录名
从电影院,
排,
座,
订票,
人,
场次
,订票地点
在哪排。Cinema_Id =电影院。Cinema_Id
和座位。Cinema_Id = Row。Cinema_Id
和座位。RowNr =行。RowNr
和 BookingHasSeat。Person_Id =预订。Person_Id
和 BookingHasSeat。Film_Id =预订。Film_Id
和 BookingHasSeat。日期时间=预订。日期时间
和 BookingHasSeat。CinemaId =预订。Cinema_Id
和 BookingHasSeat。RowNr =座位。RowNr
和 BookingHasSeat。Cinema_Id =座位。Cinema_Id
和 BookingHasSeat。字母=座位。信函
和预订。Person_Id =人员。Person_Id
和预订。Film_Id =会话。电影 _Id
和预订。日期时间=会话。日期时间
和预订。Cinema_Id =会话 Cinema_Id
和会话。Cinema_Id =电影院。Cinema_Id
和人。登录名= '彼得'

我认为这就是图数据库及其查询语言流行的原因。以图表形式查看结果集也很方便。大多数图形数据库也允许您以表格格式查看结果。

表格格式的图形查询结果

与图表相同的结果

到目前为止,一切顺利

我们讨论了图形数据库如何映射数据库的模式,以及如何查询图形数据库中的数据。我们已经看到了如何以表格或图形的方式查看对图形数据库的查询返回的数据。

那么你准备好去买一个图形数据库了吗?

也许没那么快…

事情是这样的。本文中的模式、查询和结果都涉及关系数据库。FactEngine 倡议摒弃了这样一种观念,即你需要一个专用的图形数据库来达到图形数据库的质量。事实上,研究表明许多图查询在关系数据库上执行得更快[1]。

多模型数据库

我现在可以写一篇文章,“什么是关系数据库?”,但反之亦然…每个关系数据库都是一个图形数据库。因此,如果您喜欢图形和图形查询的外观和感觉,这篇文章就足够了。

支持关系和图形处理的数据库称为多模型数据库。FactEngine 的主题是“所有的数据库都是多模型的… ”并回答问题“什么是图形数据库?”“所有的数据库都是图形数据库,除了思维不同”。

这可能会让一些人感到震惊,但不应该有争议。使用正确的工具,所有的数据库都是多模型的。也就是说,所有的数据库可以同时被视为一个图形数据库和一个关系数据库。

什么是图形数据库?

您来这里是为了了解什么是图形数据库,所以让我们现实地定义它,以避免混淆。

“图形数据库是可以在其上编写图形模式和图形查询的任何数据库”。简单。

专用的图形数据库可能不利于你的企业、商业或个人应用。关系数据库可以提供关系数据库特有的好处,而这些好处是专用图形数据库所没有的。

作为一个产品和信息的消费者,我觉得我们需要意识到大多数图形数据库的定义来自那些想要卖给我们一个专用的图形数据库的人。我的工作是让人们意识到图形数据库的定义是数据库有什么属性,而不是谁把什么卖给谁。如果您已经有了一个图表数据库,为什么还要跑出去买呢?

感谢您的阅读。如果时间允许,我会写更多关于图形数据库、关系数据库和多模型数据库的文章。我希望这有助于理解什么是图形数据库,什么是专用图形数据库。

附录:自从这篇文章发表以来,术语“关系知识图”已经浮出水面,许多图形数据库供应商正致力于提供关系数据库的特性,反之亦然。参见什么是关系知识图?

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

NB 本文表达的模型原始版本版权归 Clifford Heath 和 Data Constellation 所有,在 GitHub 上的 ActiveFacts 项目下共享:https://github.com/cjheath/activefacts。示例和许可证位于:https://github.com/cjheath/activefacts-examples

  1. Rawlani,p .等人,“关系数据库的图形分析”,麻省理工学院,https://dspace.mit.edu/handle/1721.1/100670,于 2020 年 8 月 24 日获取

附录:另请参见 Jindal,a .等人的“关系数据库上的图形分析”,麻省理工学院。

什么是高阶函数?

原文:https://towardsdatascience.com/what-is-a-higher-order-function-12f5fd671e97?source=collection_archive---------44-----------------------

编程;编排

了解什么是高阶函数,如何创建它们以及如何使用它们

感谢 Clément H 分享他们在 Unsplash 上的工作

高阶函数是将函数作为参数或返回函数的函数。这种类型的函数在许多编程语言中都有实现,包括 Go、JavaScript、Python 等;它们往往是面试中使用的一个问题。我多次与开发人员谈论这个概念,他们并不熟悉这个名称,尽管他们每天都在不知不觉中使用它,所以我决定用一篇帖子来讨论这个主题,这样我们就可以清楚地知道它们是什么以及它们如何有用。

由于这个主题在多种编程语言中被广泛使用,我将提供 JavaScript 和 Python 的代码示例。

一些简单的例子

让我们看一些高阶函数的简单示例,进入主题并使用代码,然后我们将进一步构建我们使用的一些常见函数,它们是高阶函数的示例。

将函数作为参数

首先,让我们构建一个名为doOperation的非常简单的函数,它有 3 个参数:

  • 功能操作
  • 数字 1
  • 数字 2

此外,我们将创建一个名为sumBothNumbers的操作,它将简单地返回两个数的和。

Python:

def doOperation(operation, number1, number2):
    return operation(number1, number2)

def sumBothNumbers(number1, number2):
    return number1 + number2

doOperation(sumBothNumbers, 3, 5)------------
Output
------------
8

JavaScript:

function doOperation(operation, number1, number2) {
    return operation(number1, number2)
}function sumBothNumbers(number1, number2) {
    return number1 + number2
}doOperation(sumBothNumbers, 3, 5)------------
Output
------------
8

虽然在这种特殊情况下,拥有doOperation函数似乎是多余的,如果不是错误的话,但在某些情况下它可能是有用的,例如,doOperation函数可以是我们可以用自己的操作来扩展的库的一部分。

返回一个函数

接下来,我们将构建一个返回函数的高阶函数。我们的函数将被称为multiplyBy,它将接受一个数字作为参数,并返回一个将其输入乘以该数字的函数。

Python:

def multiplyBy(multiplier):
    def result(num):
        return num * multiplier
    return resultmultiplyByThree = multiplyBy(3)
multiplyByThree(4)------------
Output
------------
12

JavaScript:

function multiplyBy(multiplier) {
    return function result(num) {
        return num * multiplier
    }
}multiplyByThree = multiplyBy(3)
multiplyByThree(4)------------
Output
------------
12

构建过滤器(),映射()和减少()

让我们使用高阶函数(实际上是高阶函数)来构建一个简单版本的流行函数。

过滤器()又名过滤()

filtering函数将有两个参数,一个array和一个test函数,它将返回一个包含所有通过测试的元素的新数组。

Python:

def filtering(arr, test):
    passed = []
    for element in arr:
        if (test(element)):
            passed.append(element)
    return passeddef isSuperNumber(num):
    return num >= 10filtering([1, 5, 11, 3, 22], isSuperNumber)------------
Output
------------
[11, 22]

JavaScript:

function filtering(arr, test) {
    const passed = []
    for (let element of arr) {
        if (test(element)) {
            passed.push(element)
        }
    }
    return passed
}function isSuperNumber(num) {
    return num >= 10
}filtering([1, 5, 11, 3, 22], isSuperNumber)------------
Output
------------
> (2) [11, 22]

可以看到,我们的filter()函数非常容易编码和使用,例如从一个数组中获取所有的超级数😛。

map()又名映射()

函数mapping将接受两个参数:一个array和一个transform函数,它将返回一个新的转换后的数组,其中每一项都是对原始数组的每个元素调用transform函数的结果。

Python:

def mapping(arr, transform):
    mapped = []
    for element in arr:
        mapped.append(transform(element))
    return mappeddef addTwo(num):
    return num+2mapping([1, 2, 3], addTwo)------------
Output
------------
[3, 4, 5]

JavaScript:

function mapping(arr, transform) {
    const mapped = []
    for (let element of arr) {
        mapped.push(transform(element))
    }
    return mapped
}function addTwo(num) {
    return num + 2
}mapping([1, 2, 3], addTwo)------------
Output
------------
> (3) [3, 4, 5]

减少()又名减少()

函数reducing将接受 3 个参数:一个reducer函数、一个用于累加器的initial value和一个array。对于数组中的每一项,都调用 reducer 函数,并向其传递累加器和当前数组元素。返回值被分配给累加器。当减少完列表中的所有项目后,将返回累计值。

Python:

def reducing(reducer, initial, arr):
    acc = initial
    for element in arr:
        acc = reducer(acc, element)
    return accdef accum(acc, curr):
    return acc + currreducing(accum, 0, [1, 2, 3])------------
Output
------------
6

JavaScript:

function reducing(reducer, initial, arr) {
    let acc = initial
    for (element of arr) {
        acc = reducer(acc, element)
    }
    return acc
}function accum(acc, curr) {
    return acc + curr
}reducing(accum, 0, [1, 2, 3])------------
Output
------------
6

结论

下一次,当你进行访问时,或者只是看到一个函数被返回或者作为参数的模式,你就会知道我们在处理高阶函数。

今天,我第一次介绍了一篇涵盖多种语言的文章,如果你觉得这是展示和比较它们的好方法,或者如果你认为这是一个糟糕的想法,请在评论中或通过 twitter 告诉我,我很乐意听到你的想法。

非常感谢你的阅读!

什么是标签地图?

原文:https://towardsdatascience.com/what-is-a-label-map-f1066af6df70?source=collection_archive---------34-----------------------

注意:我们也在博客上发布了什么是标签图。在本帖中,我们将通过讨论标签图在计算机视觉注释过程中的作用来揭开标签图的神秘面纱。然后,我们将使用标签地图实际操作一些真实的例子。

作者图片

在计算机视觉数据集中,这个问题很普遍——什么是标签地图?

在本帖中,我们将通过讨论标签图在计算机视觉注释过程中的作用来揭开标签图的神秘面纱。然后,我们将使用标签地图实际操作一些真实的例子。

需要标注图的常见错误

  • 缺少类名
  • 类名显示为整数
  • 类名与我的数据集的类名不匹配
  • 无法识别类别标签
  • 类别标签是数字

标签地图的作用

计算机视觉数据集有各种格式。Roboflow 支持超过 30 种计算机视觉格式的注入、转换和输出。虽然计算机视觉数据集的自动转换很方便,但了解数据集结构以便在导出后使用还是很有用的。

在计算机视觉数据集中,通常有引用类标签的注释。在上面的图像中,我们的类标签包括棋子的不同颜色和形状。为了注释图像,图像注释文件通常会定义特定于特定图像的注释。该注释文件可能包含也可能不包含特定于相关注释的类标签。

在注释文件没有指定类标签的情况下,参考标签映射来查找类名。标签映射是类注释的单独记录源。

手动操作标签地图

需要注意的是,并非所有的计算机视觉数据集格式都使用标签图。利用标注图进行分类标注的计算机视觉数据集包括:

让我们来看一个 YOLO 暗网格式的上图f9a9a175f26d4b26bca3a5338cc1405e.jpg的注释例子。相应的f9a9a175f26d4b26bca3a5338cc1405e.txt文件包含图像中对象的注释。

1 0.23563218390804597 0.13218390804597702 0.27586206896551724 0.14080459770114942 0 0.09051724137931035 0.28304597701149425 0.1810344827586207 0.10057471264367816 5 0.03879310344827586 0.27873563218390807 0.07758620689655173 0.10344827586206896 5 0.1896551724137931 0.40804597701149425 0.16666666666666666 0.10632183908045977 2 0.1997126436781609 0.5014367816091954 0.1781609195402299 0.10057471264367816 3 0.1221264367816092 0.4942528735632184 0.14367816091954022 0.08908045977011494 3 0.2916666666666667 0.2471264367816092 0.14655172413793102 0.08620689655172414 3 0.5387931034482759 0.4224137931034483 0.15517241379310345 0.08908045977011494 3 0.8204022988505747 0.3620689655172414 0.16091954022988506 0.10632183908045977 3 0.6925287356321839 0.5488505747126436 0.16954022988505746 0.10632183908045977 2 0.8362068965517241 0.7126436781609196 0.22413793103448276 0.12643678160919541 7 0.40948275862068967 0.8951149425287356 0.28160919540229884 0.14367816091954022 11 0.05459770114942529 0.7183908045977011 0.10919540229885058 0.11494252873563218 8 0.860632183908046 0.9425287356321839 0.22701149425287356 0.10919540229885058 10 0.10488505747126436 0.5775862068965517 0.20977011494252873 0.1206896551724138 6 0.10057471264367816 0.7586206896551724 0.1925287356321839 0.10057471264367816 6 0.4209770114942529 0.6724137931034483 0.19540229885057472 0.10344827586206896 9 0.09051724137931035 0.3864942528735632 0.14942528735632185 0.08908045977011494 9 0.11494252873563218 0.6623563218390804 0.15517241379310345 0.09770114942528736 9 0.3175287356321839 0.7514367816091954 0.14942528735632185 0.08908045977011494 9 0.4367816091954023 0.7931034482758621 0.15229885057471265 0.10344827586206896 9 0.5804597701149425 0.7212643678160919 0.16379310344827586 0.10632183908045977

引用标签映射的图像标注

在这里,你会注意到类名不见了。相反,每行的第一个条目是映射到标签映射中正确类名的整数!

我们来看看标签图_darknet.labels

black-bishop black-king black-knight black-pawn black-queen black-rook white-bishop white-king white-knight white-pawn white-queen white-rook

YOLO 暗网中的标签映射将整数映射到标签映射中指定的类别列表

上面的每个整数映射到这个列表中的一个位置,这就是数据集在注释中表示类标签的方式。

这就是标签地图在实践中的工作方式!

需要注意的是,不同的标签映射在格式之间的作用略有不同。例如,TensofFlow TFRecord 格式的数据集的.pbtxt标签映射如下所示:

item { name: "black-bishop", id: 1, display_name: "black-bishop" } item { name: "black-king", id: 2, display_name: "black-king" } item { name: "black-knight", id: 3, display_name: "black-knight" } item { name: "black-pawn", id: 4, display_name: "black-pawn" } item { name: "black-queen", id: 5, display_name: "black-queen" } item { name: "black-rook", id: 6, display_name: "black-rook" } item { name: "white-bishop", id: 7, display_name: "white-bishop" } item { name: "white-king", id: 8, display_name: "white-king" } item { name: "white-knight", id: 9, display_name: "white-knight" } item { name: "white-pawn", id: 10, display_name: "white-pawn" } item { name: "white-queen", id: 11, display_name: "white-queen" } item { name: "white-rook", id: 12, display_name: "white-rook" }

TensorFlow TFRecord 格式的数据集标注图

在这里,您可以看到标签映射是以稍微不同的方式指定的,标签显示在一系列小字典条目中。此外,引用类名的整数以 1 开始,而不是 0!

结论

我们已经讨论了标签映射在注释计算机视觉数据集时所扮演的角色。我们还接触了一些真实的标签地图,看看标签地图在实践中是如何工作的。

后续步骤

原载于 2020 年 10 月 2 日

到底什么是马尔可夫决策过程?

原文:https://towardsdatascience.com/what-is-a-markov-decision-process-anyways-bdab65fd310c?source=collection_archive---------14-----------------------

了解大多数强化学习问题中使用的模型。

我为什么要关心马尔可夫决策过程?

任何对强化学习的发展感兴趣的人都应该知道他们建立的模型——马尔可夫决策过程。他们建立了一个具有不确定性的世界结构,行动将带你去哪里,代理人需要学习如何行动。

非确定性搜索

搜索是人工智能和智能代理的中心问题。通过规划未来,搜索允许代理解决游戏和后勤问题——但它们依赖于知道某个动作会把你带到哪里。在传统的基于树的方法中,一个动作把你带到下一个状态,没有下一个状态的分布。这意味着,如果你有足够的存储空间,你可以规划集,确定性轨迹到未来。马尔可夫决策过程使得这种规划具有随机性、或不确定性。与本文相关的搜索主题列表很长——图搜索博弈树alpha-beta 剪枝minimax 搜索expectimax 搜索等。

在现实世界中,这是一个更好的代理行为模型。我们采取的每一个简单的行动——倒咖啡、寄信、移动关节——都有预期的结果,但是生活中有一种随机性。马尔可夫决策过程是让计划捕捉这种不确定性的工具。

日常决策。照片由 mhtoori 拍摄。com from Pexels

马尔可夫决策过程的马尔可夫性是什么?

Markov 是关于 Andrey Markov 的,Andrey Markov 是一位著名的俄罗斯数学家,以他在随机过程方面的工作而闻名。

“马尔可夫”一般是指给定现在的状态,未来和过去是独立的。

安德烈·马尔科夫(1856-1922)。

制造马尔可夫系统的关键思想是无记忆。无记忆是指系统的历史不会影响当前状态。在概率符号中,无记忆性翻译成这个。考虑一系列的行动产生一个轨迹,我们正在看当前的行动会把我们带到哪里。长条件概率可能看起来像:

现在——如果系统是马尔可夫的,历史是 全部包含在当前状态 中。所以,我们的一步分布要简单得多。

这一步改变了计算效率的游戏规则。马尔可夫属性支撑了所有现代强化学习算法的存在和成功。

马尔可夫决策过程

MDP 由以下量定义:

  • 一组状态 s ∈ S 。这些状态代表了世界上所有可能的构型。在下面的示例中,是机器人位置。
  • 一组动作 a ∈ A 。动作是代理可以采取的所有可能动作的集合。动作下面是{北,东,南,西}。
  • 一个转移函数 T(s,a,s’)。T(s,a,s’)持有 MDP 的不确定性。给定当前位置和提供的动作,T 决定下一个状态跟随的频率。在下面的例子中,转移函数可以是下一个状态在 80%的时间里是在动作的方向上,但是在另外 20%的时间里偏离 90 度。这对规划有什么影响?在下面的例子中,机器人选择了北方,但有 10%的可能性是向东或向西。
  • 一个奖励函数 R(s,a,s’)。任何代理人的目标都是回报总和最大化。这个函数说的是每一步获得多少奖励。一般来说,在每一步都会有一个小的负奖励(成本)来鼓励快速解决问题,在最终状态会有大的正(目标)或负(失败的任务)奖励。下面,宝石和火坑是终端状态。
  • 起始状态 s0 ,也可能是终止状态。

MDP 就是一个例子。来源——我在 CS188 做的一次讲座。

这给了我们什么?

这个定义给了我们一个有限的世界,我们一套向前的动力学模型。我们知道每个转变的确切概率,以及每个行动有多好。最终,这个模型是一个场景——在这个场景中,我们将计划如何行动,知道我们的行动可能会有点偏差。

如果机器人在火坑旁边,机器人应该总是选择北方吗?知道北方有机会把它送到东方吗?

不,最佳政策是向西。撞墙最终会(20%几率)北上,将机器人送上通往目标的轨道。

政策

学习如何在未知的环境中行动是了解环境的最终目标。在 MDP 中,这被称为策略

策略是一种功能,它从一个状态给你一个动作。π*: S → A。

获得策略的方法有很多,但核心思想是价值和策略迭代。这两种方法迭代地建立一个状态的总效用的估计,也许是一个动作。

一个国家的效用是(贴现)奖励的总和。

一旦每个州都有一个效用,高层次的规划和政策制定就会遵循效用最大化的路线

在 MDP 和其他学习方法中,模型增加了一个折扣因子 r γ,以区分短期和长期奖励的优先级。贴现因子直观上是有意义的——人类和生物现在比以后更能创造手中的货币(或食物)价值。折扣因子还通过将奖励的总和变成几何级数,带来了巨大的计算收敛帮助。(如果你有兴趣, 这里有一个关于 MDP 解的收敛性的讲座 )。

来源——我在 CS188 做的一个讲座

我把它作为一个练习留给读者,让他们为这个例子找出最优策略——想想最终状态会是什么。我们能避免它吗?学习如何获得这些策略留待另一篇文章来讨论。

更多关于强化学习的介绍——你也可以在这里或者这里找到课程材料。下面是我的几篇文章。

[## 强化学习的隐藏线性代数

线性代数的基础如何支持深度强化学习的顶点?

towardsdatascience.com](/the-hidden-linear-algebra-of-reinforcement-learning-406efdf066a) [## 强化学习算法的收敛性

有什么简单的收敛界限吗?

towardsdatascience.com](/convergence-of-reinforcement-learning-algorithms-3d917f66b3b7) [## 强化学习的基本迭代方法

学习价值和策略迭代能掌握多少强化学习?很多。

towardsdatascience.com](/fundamental-iterative-methods-of-reinforcement-learning-df8ff078652a)

更多?订阅我关于机器人、人工智能和社会的时事通讯!

[## 自动化大众化

一个关于机器人和人工智能的博客,让它们对每个人都有益,以及即将到来的自动化浪潮…

robotic.substack.com](https://robotic.substack.com/)

什么是 P 值?

原文:https://towardsdatascience.com/what-is-a-p-value-2cd0b1898e6f?source=collection_archive---------18-----------------------

约翰·霍普斯金 DS 专业化系列

p 值和显著性测试的介绍,p-hacking,以及 R 中 p 值的例子

UnsplashGreg Rakozy 拍摄的照片

[Full series](https://towardsdatascience.com/tagged/ds-toolbox)[**Part 1**](/the-data-scientists-toolbox-part-1-c214adcc859f) - What is Data Science, Big data and the Data Science process[**Part 2**](/how-to-learn-r-for-data-science-3a7c8326f969) - The origin of R, why use R, R vs Python and resources to learn[**Part 3**](/a-crash-course-on-version-control-and-git-github-5d04e7933070) - Version Control, Git & GitHub and best practices for sharing code.[**Part 4**](/the-six-types-of-data-analysis-75517ba7ea61) - The 6 types of data analysis[**Part 5**](/designing-experiments-in-data-science-23360d2ddf84) - The ability to design experiments to answer your Ds questions[**Part 6**](/what-is-a-p-value-2cd0b1898e6f) - P-value & P-hacking[**Part 7**](/what-is-a-p-value-2cd0b1898e6f) - Big Data, it's benefits, challenges, and future

本系列基于约翰·霍普斯金大学在 Coursera 上提供的 数据科学专业 。本系列中的文章是基于课程的笔记,以及出于我自己学习目的的额外研究和主题。第一门课, 数据科学家工具箱 ,笔记会分成 7 个部分。关于这个系列的注释还可以在这里找到

介绍

科学领域的一个重要原则是不存在不可证伪的理论,换句话说,没有所谓的科学证据。规范和评价一个科学理论的,是一个 证据 。更多+更好的证据=更好的科学理论,反之亦然。也就是说,我们今天拥有的所有科学知识都是试验性的,这意味着它们是有待证实的,是推测的(我们尽最大努力理解我们周围的世界,并形成关于它们的理论,但它们不是最终的,可以被证伪。)

在统计学中,情况也是如此。你不能 100%确定地证明,比如明天下午 1 点会下雨,或者谁会赢得选举。所有的统计测试都是为手头的数据分配一定的概率,并指出结果来自抽样中随机波动的可能性(参考)。

也就是说,本文将重点关注显著性测试,通过示例解释什么是 p 值,以及它如何在研究领域中被利用(p-hacking),这就是所谓的再现性危机。

什么是 P 值?

p 值 xkcd

p 值告诉你一个结果发生的概率可能是随机的

为了更具体地了解 p 值是什么,我们将从研究的角度来看它,这就是它在统计分析或测试中的应用——显著性测试。

但首先,你必须知道的术语是:

  • p 值
  • 零假设(如果被拒绝,耶)
  • 替代假设

现在举个例子:古典音乐和聚焦

假设进行了一个实验来推断听古典音乐是否能提高注意力。为此,他们让 100 个人坐在一个房间里,要求他们戴着耳机听古典音乐,同时进行注意力测试。然后,他们让另外 100 个人在没有任何音乐的情况下参与测试。然后比较这两组的结果。

在上面的实验中:

零假设=古典音乐和非古典音乐没有区别

另类假设 =基本相反,有区别…

为了证明听古典音乐可以提高注意力,实验者必须能够拒绝零信号,这通常是研究人员必须清除的一大障碍。如果他们不能这样做,也就是说,没有足够的证据或数据来否定它。

在这种情况下,假设实验者对数据进行了统计分析,并得出了一个非常小的 p 值,他们很高兴并就该主题发表了论文。

那么小(显著)的 p 值又意味着什么呢?这里有几个要点

  • 它告诉你结果是多么罕见
  • 这意味着你得到的数字很少会偶然出现
  • 例如,p 值= 0.01,这意味着如果你重复实验(在相同的条件下)100 次,并且假设零假设为真,你将只看到一次结果。或者在零假设为真的情况下,只有 1%的机会看到结果。

如果你想一想,如果实现小于 0.05 的 p 值意味着验证一个人的研究,并允许他们在论文上发表它,这是非常诱人的,为了自己的利益故意攻击这个值,这正是所发生的事情。

可复制性危机

简而言之,这场危机是关于科学领域的研究和实验必须达到<0.05, which incentivized people to intentionally tweak certain conditions in their favor. This is called p-hacking.

P-hacking

  • exhaustively search data sets to find patterns and correlations that appear statistically significant by virtue of the sheer number of tests performed
  • AKA 数据挖掘的黄金数字
  • 如果你做了足够多的测试,你可以找到你想要的数据集和分析

P-hacking 也可能与大数据和我们今天拥有的更好的技术有关,这使得这些测试可以快速完成。

要查看 P-hacking 的实际例子,请查看 FiveThirtyEight 的精彩文章,其中有一个您可以使用的实际例子。

R 中的 P 值示例

这只是一个您可能会遇到 p 值的简单示例这是一个使用波士顿数据集的线性回归模型示例,以及包含 p 值的模型的 F 统计。

密码

*library(MASS) # library for loading datasetsfit = lm(medv ~ lstat, data = Boston) # regression model medv against lstatsummary(fit) # shows you summary about your model*

输出

线性回归模型中汇总函数的输出

上图显示了使用summary()函数进行显著性检验的 F 统计量。

该显著性检验的前提条件包括模型中的误差项 ϵ 与 x 无关,且正态分布,均值为零,方差恒定。并将显著性水平设置为 0.05

简单来说,如果你看右下方,你会看到p-value < 2.2e-16。这意味着 p 值远小于 0.05,这意味着我们可以拒绝零假设 β = 0。因此,在线性回归模型中,变量lstatmdev之间存在显著的关系。

同样,p 值也有助于确定在样本中观察到的关系是否也存在于更大的人群中。因此,如果 p 值具有统计学意义,则有证据表明这种影响也存在于人群水平。

当然,p 值只是告诉你有相关性。为了说明模型与数据的吻合程度,这就是 R 平方值的用处。此外,残差是模型中的“误差”(回归线和数据点之间的距离),F 统计只是比较变量的联合效应(越高越好)。所有这些都是解释你的假设检验的关键因素。

更多关于以上回归的内容在我的 kaggle 笔记本中。如果你想要一个完整的介绍,看看这篇文章。另一篇关于解释回归分析中的 P 值和系数的文章在这里

摘要

唐纳德·詹纳蒂在 Unsplash 上的照片

C 意识——我们大脑中 860 亿个神经元之间电信号传输的神秘、不可言喻的机制的产物——赋予人类对我们周围环境的主观体验,思考过去、现在和未来,质疑世界,探索深不可测的事物的能力。

我们不可思议的头脑产生了许多惊人的发现和突破,我们对世界的许多推理方式帮助我们简化了我们周围的复杂事物。但是,随着信息和技术的兴起,加速了连通性,将世界连接在一起,随之而来的是对真理的牺牲和错误信息的困扰。因此,我们必须明白,我们所有人都有偏见,我们倾向于根据激励采取行动,我们在这个现代世界的注意力不断被技术利用。

为了克服这一点,我们必须认真对待我们的行为,反思它们,并从我们的错误中吸取教训。我们必须学会把注意力放在重要的事情上,追求有意义的事情,而不是权宜之计,让我们周围都是好人,行动不是出于自私,而是为了社会和世界的更大利益。

术语摘要

  • p 值——当我们说零假设是错误的时,承认我们是错误的风险的一种方式(查看 p 值的另一种方式)
  • 零假设——两个样本之间的差异只是由于偶然
  • p-hacking——有意识地搜索数据集,寻找模式和相关性,通过大量的测试获得有统计意义的值

需要记住的几件关键事情是:

  • 显著的 p 值并不代表工作的质量
  • p 值不会告诉你一个结果为真的概率,它仅仅是一个统计测试的结果。
  • 人们无法证明/反驳假设,只能拒绝无效假设,并为替代假设提供支持

《如何不犯错:数学思维的力量》一书的作者 Jordan Ellenberg 对显著性测试有着深刻的见解:

显著性检验是侦探,而不是法官。这一具有挑衅性和统计学意义的发现并不是科学过程的结论,而是一个开端。

以及无效假设的总结:

  1. 进行实验
  2. 假设零假设为真,设 p 为(在该假设下)得到与观察到的结果一样极端的结果的概率。
  3. 数字 p 称为 p 值。
  4. 如果很小,欢喜;你可以说你的结果有统计学意义。
  5. 如果它很大,承认没有排除零假设。

作为这篇文章的结尾,这里有一些关于什么是统计的真相。

统计学的目的不是告诉我们该相信什么,而是告诉我们该做什么。统计是做决策,不是回答问题。—乔丹·埃伦伯格

感谢阅读,并保持安全。

更多关于 P 值和统计学意义的文章

如果您对学习数据科学感兴趣,请查看“超学习”数据科学系列!

* [## 如何“超级学习”数据科学—第 1 部分

这是一个简短的指南,基于《超学习》一书,应用于数据科学

medium.com](https://medium.com/better-programming/how-to-ultralearn-data-science-part-1-92e143b7257b)

查看这些关于数据科学资源的文章。

[## 2020 年你应该订阅的 25 大数据科学 YouTube 频道

以下是你应该关注的学习编程、机器学习和人工智能、数学和数据的最佳 YouTubers

towardsdatascience.com](/top-20-youtube-channels-for-data-science-in-2020-2ef4fb0d3d5) [## 互联网上 20 大免费数据科学、ML 和 AI MOOCs

以下是关于数据科学、机器学习、深度学习和人工智能的最佳在线课程列表

towardsdatascience.com](/top-20-free-data-science-ml-and-ai-moocs-on-the-internet-4036bd0aac12) [## 机器学习和数据科学的 20 大网站

这里是我列出的最好的 ML 和数据科学网站,可以提供有价值的资源和新闻。

medium.com](https://medium.com/swlh/top-20-websites-for-machine-learning-and-data-science-d0b113130068) [## 开始数据科学之旅的最佳书籍

这是你从头开始学习数据科学应该读的书。

towardsdatascience.com](/the-best-book-to-start-your-data-science-journey-f457b0994160)

联系人

如果你想了解我的最新文章,请关注我的媒体

也关注我的其他社交资料!

请关注我的下一篇文章,记得保持安全!*

什么是感知器?–神经网络基础

原文:https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590?source=collection_archive---------0-----------------------

感知器的历史及其工作原理概述

作者图片

单层感知器是神经网络的基本单元。感知器由输入值、权重和偏差、加权和以及激活函数组成。

在过去十年,我们见证了机器学习技术的爆炸式发展。从个性化的社交媒体反馈到可以从视频中移除对象的算法。像许多其他自学者一样,我已经决定该是我涉足人工智能世界的时候了。最近,我决定开始我的旅程,在 Udacity 上参加一个名为的课程,用 PyTorch 进行深度学习。当然,这篇文章是由课程启发的,我强烈推荐你去看看!

如果你上过这门课,或者读过任何关于神经网络的东西,你可能会听到的第一个概念就是感知器。但是什么是感知器,为什么要用它呢?它是如何工作的?背后有什么历史?在本帖中,我们将简要回答这些问题。

一点历史

感知机是由美国心理学家弗兰克·罗森布拉特于 1957 年在康奈尔航空实验室首次提出的(如果你感兴趣,可以点击原文链接)。罗森布拉特深受生物神经元及其学习能力的启发。罗森布拉特的感知器由一个或多个输入、一个处理器和一个输出组成。

作者图片

最初,Rosenblatt 的想法是创建一个像神经元一样运行的物理机器,然而,它的第一个实现是在 IBM 704 上测试的软件。Rosenblatt 最终在定制的硬件中实现了该软件,目的是将其用于图像识别。

图片来自维基共享资源

虽然最初,Rosenblatt 和 AI 社区对这项技术持乐观态度,但后来表明,这项技术只是线性分离,换句话说,感知机只能与数据点的线性分离一起工作。这导致该技术对不同模式的识别较差。

当时,糟糕的分类(以及其他一些负面报道)导致公众对这项技术失去了兴趣。然而今天,我们已经围绕这个线性分离问题开发了一种方法,叫做激活函数

让我们看看今天感知机是如何工作的。

感知器 101

感知器通过接受一些数字输入以及所谓的权重和偏差来工作。然后,它将这些输入乘以各自的权重(这就是所谓的加权和)。然后将这些乘积与偏差相加。激活函数将加权和与偏差作为输入,并返回最终输出。

哇,这太令人困惑了…让我们通过构建一个感知机来打破这种困惑。

感知器由四部分组成:输入值、权重和偏差、加权和以及激活函数。

假设我们有单个神经元和三个输入 x1,x2x3 分别乘以权重 w1,w2,w3如下图所示,

作者图片

这个想法很简单,给定输入的数值和权重,在神经元内部有一个函数,它会产生一个输出。现在的问题是,这个函数是什么?

一个函数可能看起来像

作者图片

这个函数被称为加权和,因为它是权重和输入的和。这看起来是一个很好的函数,但如果我们希望输出落在某个范围内,比如 0 到 1,该怎么办呢?

我们可以通过使用激活函数来做到这一点。激活函数是基于一组规则将给定的输入(在这种情况下,输入将是加权和)转换成某个输出的函数。

作者图片

存在不同种类的激活功能,例如:

  1. 双曲正切:用于输出一个从-1 到 1 的数。
  2. 逻辑函数:用于输出一个从 0 到 1 的数。

等等。

注意:激活功能也允许非线性分类。如果你有兴趣了解更多关于激活函数的信息,我推荐你看看 这个 或者 这个

因为我们要寻找的范围在 0 到 1 之间,所以我们将使用一个逻辑函数来实现这个目标。

物流功能

后勤职能的公式如下:

作者图片

图表看起来是这样的,

图片来自维基共享资源。对 x 和 y 轴及功能进行更改后重新发布。

注意 g(z)位于点 0 和 1 之间,并且这个图不是线性的。这将允许我们输出介于 0 和 1 之间的数字,这正是我们构建感知机所需要的。

现在,我们已经拥有几乎制造感知机所需的一切。我们最不缺的就是偏见。偏差是感知器在产生输出之前必须达到的阈值。所以最终的神经元方程看起来像:

作者图片

我们可以看到(通常偏差出现在输入端附近),

作者图片

请注意,激活函数将加权和加上偏差作为输入,以创建单个输出。使用逻辑函数,该输出将在 0 和 1 之间。

为什么使用感知器?

感知器是神经网络的构建模块。它通常用于二元分类器的监督学习。这可以通过一个例子得到最好的解释。我们拿一个简单的感知器来说。在这个感知器中,我们有一个输入 xy,分别乘以权重 wxwy ,它还包含一个偏差。

作者图片

让我们也创建一个图表,用红点和蓝点表示两种不同类别的数据。

作者图片

注意 x 轴标注在输入 x 之后,y 轴标注在输入 y 之后。

假设我们的目标是分离这些数据,以便区分蓝点和红点。我们如何使用感知器来做到这一点?

感知器可以为二元分类创建决策边界,其中决策边界是图上分隔不同数据点的空间区域。

为了更好地理解这一点,我们来玩一下函数。我们可以说,

wx = -0.5

wy = 0.5

并且 b = 0

那么感知器的功能将会是这样的,

0.5x + 0.5y = 0

图表看起来会像这样,

作者图片

让我们假设激活函数,在这种情况下,是一个简单的阶跃函数,它输出0 或 1。感知器函数会将蓝点标记为 1,红点标记为 0。换句话说,

如果 0.5x + 0.5y => 0,则为 1

如果 0.5x + 0.5y < 0,则 0。

因此,函数 0.5x + 0.5y = 0 创建了一个区分红点和蓝点的判定边界。

作者图片

总的来说,我们看到感知器可以使用决策边界进行基本分类。

注意:在本例中,权重和偏差是随机选择的,用于对点进行分类,但是如果我们不知道什么权重会对数据产生良好的分离效果呢?有没有一种方法可以让感知器自己对这些点进行分类(假设函数是线性的)?答案是肯定的!有一种方法叫做 【感知器戏法】 ,我会让你自己去研究这个:)。

你坚持到了文章的结尾。让我们回顾一下你所学到的!

关键要点

什么是感知器,为什么使用它们?

  • 感知器是一种非常简单的神经网络模型,用于二进制分类器的监督学习。

感知器背后有什么历史?

  • 从生物神经元及其学习能力中获得灵感后,感知机于 1957 年由美国心理学家弗兰克·罗森布拉特在康奈尔航空实验室首次推出

它们是如何工作的?

  • 感知器通过接受一些数字输入以及所谓的权重和偏差来工作。然后,它将这些输入乘以各自的权重(这就是所谓的加权和)。然后将这些乘积与偏差相加。激活函数将加权和与偏差作为输入,并返回最终输出。

week✨的 DL 视频

如果你有兴趣创造自己的感知器,看看这个视频吧!

额外资源/引用

你能在哪里找到我😝

我的 LinkedIn!请随时与我联系,我喜欢谈论人工智能!

关注我的媒体页面了解更多

什么是概率价值主张?

原文:https://towardsdatascience.com/what-is-a-probabilistic-value-proposition-3b4005db86c4?source=collection_archive---------76-----------------------

这是伟大的数据产品的秘密。

Riho Kroll 在 Unsplash 上拍摄的照片

想象一下,如果 Gmail 将 95%的电子邮件发送到正确的人的收件箱,并将另外 5%发送到不同的人的收件箱。或者,想象一下,如果 Microsoft Word 成功保存了 5 个文档中的 4 个,但是对文件进行了不正确的编码,导致文档不可读。

一个只在部分时间有效的产品——这对用户来说是疯狂和令人沮丧的。没有人会买这样的产品。除非…

想象一下,如果网飞推荐的 30 个节目中只有一个是你真正想看的,而大多数都是你已经看过的。或者想象一下,如果亚马逊的 Alexa 只能理解你问她的 10 件事情中的 8 件,通常只是回答“对不起,我不明白这个问题。”

一个只在某些时候有效的产品——在这种情况下并不疯狂。有什么不同?最后两个例子是设计成具有概率价值主张的产品特性。

概率价值主张的标志是,在任何特定的互动过程中,客户期望从产品中获得的利益可能会出现,也可能不会出现。相反,价值是通过多种互动的总和来传递的:五分之一,十分之九,百万分之一。这些交互可能发生在不同的时间段、不同的环境、极端或罕见的情况下,甚至发生在不同的客户群中。

传递概率价值的产品很少,至少与 t 恤、罐头食品和电视等更传统的产品相比是如此。然而,它们存在于计算的内部和外部。例如,安全带有一个概率价值主张。我们在每次乘车时都会系上安全带,但只有在发生事故时(理想情况下永远不会发生),我们才会体验到安全带救命的好处。

人工智能和机器学习是基于统计学的,整个学科建立在概率正确的概念上——经常足够有用,但不总是。从本质上讲,所有使用人工智能和机器学习的产品都有一个概率价值主张。因此,对于这个领域的创始人或从业者来说,理解其中的含义尤为重要。

所有人工智能和机器学习产品都有一个概率价值主张。(图片由作者提供)

概率价值主张意味着考虑所有可能的客户体验

当我们设计一个具有确定性价值主张的产品时(像 Google 的电子邮件服务器和 Microsoft Word 的保存到磁盘这样的普通产品),我们专注于通过构建新的特性和功能来最大化我们产品的优势。我们相对于客户不使用我们的产品或客户使用竞争产品的情况来定义这些优势。因此,价值主张是我们的产品为这些领域提供的所有优势的总和。

当我们设计具有概率价值主张的产品时,我们仍然关注使用我们产品的最大利益。但是,由于好处并不总是出现,我们还必须考虑客户在尝试使用我们的产品时可能遇到的任何与中性或不良结果相关的成本。我们最终需要设计两种用户体验:一种是提供好处的用户体验,另一种是不那么迷人的用户体验,在这种体验中,我们的产品什么都不做或者得到错误的答案。因此,概率产品的价值主张是使用产品的所有收益的总和减去当产品具有不良或中性结果时使用该产品的相关成本。**

安全带在发生车祸时提供了安全的好处,但也必须足够舒适,以便在其他 99.99%的时间里使用。Gmail 可以使用人工智能从我们的收件箱中过滤垃圾邮件,但也必须提供一种功能,在数据驱动的机器不可避免地出错时,将真实的电子邮件恢复到收件箱中。

没有人喜欢想象使用他们产品的不良后果;但是概率价值主张需要这种类型的思考。在某种程度上,收益必须大于成本。如何实现这种平衡会对商业模式产生战略影响。

当使用你的产品的收益明显大于成本时,以一种你的客户可以理解的方式,你的团队不再需要把你的产品的概率本质当作一个需要被压扁的 bug。以平衡的概率价值主张构建的人工智能产品明显更容易操作、扩展、监控和故障排除。

原载于 2020 年 5 月 25 日https://www . fundamental . ai

什么是编程范例?

原文:https://towardsdatascience.com/what-is-a-programming-paradigm-1259362673c2?source=collection_archive---------10-----------------------

编程范例和泛型概述

(图片由作者提供)

介绍

自从第一种高级编程语言 plank alül 的发布,以及随之而来的 FORTRAN 和 Common Lisp 等语言的发布,编程语言一直在挑战编程对计算机程序员的意义。这通常是通过所谓的编程范例来完成的。

编程范式是编程语言的方法论所遵循的概念。范式很重要,因为它们定义了一种编程语言及其工作方式。思考范式的一个很好的方式是把它看作一套思想,编程语言可以用它在更高的层次上以机器码的形式执行任务。这些不同的方法在某些情况下可能更好,而在另一些情况下可能更差。探索范式时的一条重要经验是了解它们擅长什么。虽然大多数现代编程语言确实是通用的,可以做任何事情,但是用函数式语言开发游戏可能比用面向对象的语言更困难。

陈述性与命令性

关于编程范例的概念,最有趣的事情可能是范例本身是子类,就像 C++昨天刚刚出现一样。通常在编程方法中,一种语言可以分为两大类:

  • 宣言的
  • 必要的

声明式编程

声明式编程是指坐在方向盘后面的程序员在任何给定的时刻都不能有效地准确编程计算机做什么,而是描述他们想要的结果的属性,而不解释如何计算它。落入此窗口的范例有:

  • 函数式编程范式。
  • 逻辑编程范式。
  • 数学编程范式。
  • 模块化编程范例。

命令式编程

命令式编程本质上与声明式编程相反。首先,使用命令式编程,用户通常直接与计算机的状态进行交互,并决定如何计算事物。推广这种编程方法的范例有:

  • 面向对象的编程范例。
  • 过程化编程范式。

范例应用

重要的是要记住,语言不需要遵守这些规则。尽管 C++经常被错误地认为创造了面向对象的编程范例,但它确实在编程世界中引入了一个惊人的概念:

仿制药!

泛型允许编程语言从各种编程范例中挑选某些属性,并利用最适合该语言应用的属性。在引入泛型之前,大多数语言都是为了执行非常特殊的操作而创建的。例如,Simula 是第一种真正的面向对象编程语言,它是专门为运行复杂模拟而创建的。另一个很好的例子是 COBOL,它是一种主要用于商业应用的编程语言。

大多数现代编程语言都是多范例编程语言。这是因为增加了对泛型编程概念的支持,使得编程语言可以跨范例流动,并有效地改变它们的工作方式,有时这种方式非常酷。

鉴于大多数现代编程语言都是多范式的,有些人可能会想知道为什么了解所有范式如此重要。这是一个值得问的问题,因为范式之间的界限在许多语言中是如此的不相关——我想起了我最喜欢的 Julia——为什么你应该熟悉每种范式的属性,而不是只学习一种多范式语言呢?我的反驳是这样的:

教育。

我看了莱克斯·弗里德曼(喜欢那个家伙)和比雅尼·斯特劳斯特鲁普(C++的传奇人物)的一次很棒的访谈,比雅尼·斯特劳斯特鲁普回答了这个问题的很多细节。如果你感兴趣的话,这里有一个嵌入版本,你现在可以听听:

在采访中,他继续说,一个伟大的程序员应该知道至少五种编程语言。虽然这些不一定是低级的,但是它们应该来自不同的范例。简单的事实是,函数式编程语言可以教给你很多关于编程和计算机的东西。对于命令式语言(如 C)、面向对象语言(如 Python 和 C++ ),甚至是更奇怪的范式(如结构化编程范式)来说,这当然是正确的。

这里有一个我喜欢并且知道的语言列表,可以用它们各自的范例来教你编程:

功能的

  • 普通 Lisp
  • 计划
  • 哈斯克尔
  • 稀有
  • 朱莉娅
  • 猎人

面向对象

  • C++
  • Java 语言(一种计算机语言,尤用于创建网站)
  • Java Script 语言
  • 计算机编程语言
  • 斯卡拉

必要的

  • C
  • 汇编(我个人使用 NASM/FASM,只使用 64 位注册表(amd64 汇编))
  • 公式翻译程式语言(formula translator)

如果你想让意识超越一种特定的编程方式的界限,我正式建议你深入其中的一些选项。从长远来看,许多概念也可能会回归,这很好。没有什么比在旧代码中强化新技能或新东西更好的了。

语言分类

人们可以解释编程语言的所有拼图是如何组合在一起的,但更好的方法可能是应用已经掌握的知识,以便在代码中绘制不同因素的线条。正如历史上大多数高级编程概念一样,我们应该从 c 开始。

C

c 是一种命令式编程语言。使用这种语言,人们通常会绘制指针并手动移动数据来解决编程问题。虽然这给了系统很大的控制权,但这也意味着要提防更多的东西,这意味着 C 可能不是进行快速运算的最理想的语言。

C++

C++也是一种命令式语言,因为它本质上是一种将孩子与 C 直接联系起来的语言。C++也是面向对象编程的典范,是至今仍在使用的这种语言的最经典的例子之一。

普通 Lisp

Lisp 是一种固有的函数式编程语言,然而大多数形式的现代 Lisp 不再是纯函数式的。这是编程语言中反复出现的一个主题,因为对于一门语言来说,只直接擅长一件事已经没有什么意义了。

稀有

r 是另一种存在于多范例光谱中的语言。r 主要是一种函数式编程语言,但是当然利用了泛型和方法论的优势,这使得它可以做比大多数典型的函数式语言更难享受的事情。

朱莉娅

在这方面,朱莉娅当然是一个很难谈论的人。Julia 的一个独特之处是语言本身背后的方法论。然而,从纯粹的基本形式来看,Julia 是一种函数式编程语言。当然,像 R Julia 一样,它也是一种多范式语言,而且通过多重调度将单词的含义提升到了一个全新的水平。

Rust 是多范例编程语言的另一个很好的例子。虽然 Rust 很像一个更高级的 C 语言,但它也有很多通常被认为是功能性的属性——这并不是一件坏事。

计算机编程语言

很可能我们都知道 Python 首先是一种面向对象的编程语言。然而,Python 是另一种完全多范式的编程语言。

结论

所有编程范例对教育和能力都有好处。历史上,函数式语言在科学计算领域非常引人注目。当然,拿今天科学计算最流行的语言来说,很明显它们都是多范例的。面向对象语言也有很好的应用。软件开发、游戏开发和图形编程都是面向对象编程的很好的例子。

从所有这些信息中,我们可以得出的最大结论是,软件和编程语言的未来是多范例的。不太可能有人会在短期内创建一种纯函数式或面向对象的编程语言。如果你问我,这并不是一件坏事,因为你采用的每一种编程方法都有弱点和优点,并且许多真正的优化都是执行测试,以查看哪种方法比其他方法更有效或更好。这也给每个人都应该从多种范式中了解多种语言的想法加上了一个更大的图钉。随着范型利用泛型的力量进行合并,永远不知道什么时候会遇到完全不同的编程语言的编程概念!

什么是连体神经网络?

原文:https://towardsdatascience.com/what-is-a-siamese-neural-network-b0dbeb1c6db7?source=collection_archive---------33-----------------------

专门测量相似性的神经网络

照片由 Unsplash 上的 Sereja Ris 拍摄

机器学习的许多应用都围绕着检查两个对象是否相似。例如:

  • 对于面部识别,检查输入的面部图像是否与数据库中的任何图像相似
  • 在问答网站上,检查新问题是否与任何存档的问题相似

如今,测量两个对象之间的相似性的最常见和最方便的方法之一如下:

  1. 获取每个对象的矢量表示(也称为嵌入)。例如预训练 ResNet 的中间层的输出、句子中所有单词的预训练单词向量的平均值
  2. 计算步骤(1)中两个向量之间的余弦相似度
  3. 使用步骤(2)中的值来确定这两个对象是否相似

然而,这种方法通常表现不佳,因为步骤(1)中的矢量表示在我们的应用中不是专用的。如果我们想微调这些向量表示,甚至从头开始训练一个新的模型,我们可以使用连体神经网络架构。

网络体系结构

连体神经网络由两个相同的子网组成,也称为双网络,它们的输出端相连。这两个网络不仅具有相同的架构,而且它们还共享权重。它们并行工作,负责为输入创建矢量表示。例如,如果我们的输入是图像,我们可以使用 ResNet 作为孪生网络。我们可以将连体神经网络视为孪生网络的包装器。它们通过测量向量之间的相似性来帮助产生更好的向量表示。

在上图中, x ₁和 x ₂是我们要比较的两个对象, v ₁和 v ₂是 x ₁和 x ₂.的矢量表示比较层的架构取决于损失函数和训练数据的标签。由于我们的目标是在矢量表示中获得尽可能多的信息,比较层通常具有非常简单的架构。以下是一些常见的选择:

  • 计算 v ₁和 v
    的余弦相似度标签为-1 到 1 之间的实数,损失函数为均方误差。
  • 串联 v ₁、 v ₂和绝对元素差异|v₁-v₂|,接着是全连接层和一个 softmax 层
    这是用于多类分类的,损失函数是交叉熵。
  • 计算 v ₁和 v
    之间的欧几里德距离vv₂‖损失函数是对比损失或三重损失。由于这两个损失不太为人所知,我们将在下一节简要解释它们。

请注意,比较层应该是对称的 w.r.t. v ₁和 v ₂.结合双胞胎网络具有相同架构和权重的事实,这使得整个连体神经网络对称 w.r.t. x ₁和 x ₂.

损失函数

对比损失和三重损失都是基于距离的损失函数,主要用于学习向量表示,并且通常与连体神经网络结合使用。

对比损失

假设我们的数据集由不同类别的对象组成。例如,ImageNet 数据集由汽车图像、狗图像等组成。然后对于每一对输入( x ₁, x ₂),

  • 如果 x ₁和 x ₂属于同一个类,我们希望它们的矢量表示相似。因此,我们希望最小化l=v₁-v₂‖。
  • 另一方面,如果 x ₁和 x ₂属于不同的类,我们希望v₁-v₂‖比较大。我们要最小化的项是
    L = max(0,mvv₂‖),其中 m 是一个超参数,称为余量。余量的想法是,当 v ₁和 v ₂相差足够大的时候, L 就已经是 0 了,不能再小了。因此,该模型不会浪费精力来进一步分离 v ₁和 v ₂,而是会关注其他输入对。

我们可以将这两种情况合并成一个公式:

*L* = *y ** ‖*v*₁ − *v*₂‖² + (1 - y) * max(0, *m* − ‖*v*₁ − *v*₂‖)²

其中 y = 1 如果 x ₁和 x ₂属于同一类,否则 y = 0。

三重损失

通过考虑输入的三元组( xaxpxn ),三元组损失将上述思想向前推进了一步。这里 xa 是锚对象, xp 是正对象(即 xaxp 属于同一类),而 xn 是负对象(即 xaxn 属于不同类)。我们的目标是使矢量表示 va 更类似于 vp 而不是 vn 。精确公式由下式给出

*L* = max(0, *m* + ‖*va* − *vp*‖ - ‖*va* − *vn*‖)

其中 m 是超参数余量。就像对比损失的情况一样,裕量决定了‖va**VP和‖va**VN之间的差异何时变得足够大,使得模型将不再从这三个一组中调整其权重。

对于对比损失和三元组损失,我们如何从不同类别的对象中采样输入对( x ₁, x ₂)和三元组( xaxpxn )对模型训练过程有很大影响。理想情况下,我们希望输入对和三元组对我们的模型来说不太容易,但也不太难。

履行

尽管我们在上图中有孪生网络 A 和 B,但实际上只有孪生网络的单个副本通常更方便。

def forward(self, x1, x2):
    v1 = self.twin_network(x1)
    v2 = self.twin_network(x2)
    return self.comparison_layers(v1, v2)

TensorFlow 和 PyTorch 都内置了一些常见的损失函数。

张量流

PyTorch

进一步阅读

  • [1]是对连体神经网络的一个很好的概述。特别是,它包含了在不同领域,如图像分析,文本挖掘,生物学,医学和健康的暹罗神经网络应用的许多参考。
  • [3]使用连体神经网络来微调由 BERT 产生的矢量表示。这是利用预训练模型的一个很好的例子。
  • 三联体丢失在连体神经网络中非常普遍,并且在小批量设置中引入了它的变体。[4]在一批中为每一对锚或阳性选择“半硬”阴性,并仅在这些三元组上训练网络。下图最能说明“半硬”底片的概念:

  • [2]在形成三元组时,为每个锚点选择一个批次中最难的肯定值和最难的否定值。这里最难是指最大的vaVP为正,或者最小的vaVN为负。我们参考5对这两种三重态损失变量的更详细解释,以及在 TensorFlow 中使用它们的 TensorFlow 附件文档

参考

  1. D.奇克。连体神经网络:概述 (2020),人工神经网络,分子生物学方法,第 2190 卷,Springer 协议,第 73–94 页
  2. A.赫尔曼斯、l .拜尔和 b .莱贝。为人身重新鉴定三重缺失辩护 (2017),arXiv
  3. 名词(noun 的缩写)赖默斯和我古雷维奇。句子-BERT:使用连体 BERT 网络的句子嵌入 (2019),em NLP ijc NLP 2019
  4. F.Schroff,D. Kalenichenko 和 J. Philbin。 FaceNet:人脸识别和聚类的统一嵌入 (2015),CVPR 2015
  5. tensor flow 中的三元组丢失和在线三元组挖掘

什么是生存偏差,如何避免?

原文:https://towardsdatascience.com/what-is-a-survival-bias-and-how-to-avoid-it-14296d02c0c2?source=collection_archive---------30-----------------------

斯蒂芬·凯勒在的照片

评估不同的交易策略时,你需要考虑的一个简单因素

在我以前的一篇文章中,我建造了一个交易模拟器,并展示了一些结果。那些结果好得令人难以置信,然而我却欣喜若狂。有人对我说,我是一种叫做的东西的受害者。

总的来说,生存偏见是一种逻辑错误,即专注于在某种过程或一段时间内“幸存”的事物,而忽略那些没有幸存的事物。我想介绍一个简单的方法来帮助你避免同样的错误。

我的经历

如前所述,我建立了一个交易模拟器,并在上面测试了一个策略。测试时间从 2000 年 1 月 1 日至 2019 年 12 月 31 日。在此期间,这一策略在交易 S&P500 指数成份股时本可以产生 9438%的利润。

其中一条评论后来透露,我用的是目前活跃的股票。这是真的,整个模拟假设在 2000 年初,我们观察到组成 2019 年指数的相同符号。那种假设根本就是错误的!

相反,当遍历时间时,我应该做以下事情:

  1. 列出 2000-1-1 年构成 S&P500 指数的符号。
  2. 对于索引中的每次更新(一个符号被添加,另一个被删除),我也应该更新我的符号列表。

在我看来,这是对抗生存偏见的唯一方法,因为你会把失败者和成功者都考虑进去。

“历史是由胜利者书写的”——温斯顿·丘吉尔

查找相关数据

在谷歌搜索了一些相关数据后,我发现我在寻找的解决方案并不简单。根据维基百科的数据,在 1963 年 1 月 1 日至 2014 年 12 月 31 日期间,S & P500 的成分发生了 1186 次变化,而这里只列出了其中的 227 次。显然这不能完全相信。

谷歌的另一个结果告诉我,我可以花 97 美元购买 S&P500 指数的所有变更列表。出于一点小小的好奇,这有点过分了。我有点惊讶,如此琐碎的知识不是免费分享的。

下一个结果很有趣:

*[## S&P 100/500 历史组件

特定日期(变更)标准普尔 500 和 S&P 100 指数中的公司/指数成分列表。这些数据…

nemozny.github.io](https://nemozny.github.io/datasets/)*

这位作者花了很长时间提取索引数据,结果他整理出了一个漂亮的 JSON 文件 。这些条目包含两个名称-值对:一个用于日期,另一个用于组成 S & P500 指数的符号。由于它很难阅读,我不打算把整个文件粘贴到这里。相反,下图显示了 JSON 文件中两个条目的内容。你看它有多长就知道了!

JSON 文件中的两个条目。你看它有多长就知道了!

现在我们已经对 JSON 文件有了一些了解,让我们开始一些编码工作。

把它编成密码

如果我们仔细观察这个 JSON 文件,我们可以看到它是一个字典列表——每个条目都用一个 python 字典表示。我们可以用下面的代码加载数据:

*import jsonwith open('sp500-historical-components.json') as json_file:
    data = json.load(json_file)*

同样,data只是一个包含不同字典的列表。这个列表是无序的,让它有序可能很好。首先,让我们创建一个日期列表:

*dates = []
for entry in data:
    dates.append(entry["Date"])*

我的代码终端显示dates列表如下:

*['2012/11/30', '2016/10/31', '2017/04/28', '2017/05/03', '2017/03/31', '2016/12/30', '2016/08/31', '2016/09/30', '2017/01/31', '2017/02/28', '2016/07/29', '2016/06/30', '2016/04/29', '2016/05/31', '2015/10/30', '2015/07/31', '2016/01/29', '2016/02/29', '2016/03/31', '2015/12/31', '2015/11/30', '2015/09/30', '2015/08/31', '2015/06/30', '2015/05/29', '2015/04/30', '2014/12/31', '2015/01/30', '2014/10/31', '2014/11/28', '2015/02/27', '2014/09/30', '2015/03/31', '2014/08/29', '2014/05/30', '2014/06/30', '2014/07/31', '2014/03/31', '2014/04/30', '2013/12/31', '2013/11/29', '2014/01/31', '2014/02/28', '2013/10/31', '2013/08/30', '2013/07/31', '2013/09/30', '2012/12/31', '2013/05/31', '2013/06/28', '2012/10/31', '2013/02/28', '2013/03/28', '2013/01/31', '2013/04/30', '2012/08/31', '2016/11/30', '2012/09/28', '2012/04/30', '2012/06/29', '2012/03/30', '2012/07/31', '2012/05/31', '2012/02/29', '2011/10/31', '2012/01/31', '2011/08/31', '2011/05/31', '2011/06/30', '2011/02/28', '2011/03/31', '2010/12/31', '2010/11/30', '2011/12/30', '2011/11/30', '2010/09/30', '2010/10/29', '2011/09/30', '2011/07/29', '2010/06/30', '2011/04/29', '2011/01/31', '2010/02/26', '2010/01/29', '2009/12/31', '2010/08/31', '2010/04/30', '2010/07/30', '2010/03/31', '2010/05/28', '2009/09/30', '2009/08/31', '2009/10/30', '2009/04/30', '2009/11/30', '2009/03/31', '2009/06/30', '2009/07/31', '2009/02/27', '2009/05/29', '2009/01/30', '2008/10/31', '2008/11/28', '2008/12/31', '2008/09/30', '2008/08/29', '2008/07/31', '2008/06/30', '2008/04/30', '2008/05/30', '2008/01/31', '2008/02/29', '2008/03/31']*

现在我们可以肯定地看到我们的数据列表是无序的。此外,日期从 2008 年到 2017 年。由于这个列表中的日期不多(大约 100 个),我们可以使用一种健壮的方式来调用有序数据:

*datescopy = dates.copy()
datescopy.sort()indices = []
for date in datescopy:
    indices.append(dates.index(date))*

这个方法创建了一个dates的副本,并对其进行排序。一个列表indices帮助我们映射有序和无序数据之间的日期。自己看:

*for index in indices:
    print(data[index]["Date"])*

打印出来的日期是有序的。酷!

假设你想回测你的交易策略。您已经创建了您的交易模拟器,并特别希望包括 2008 年 1 月 31 日至 2017 年 5 月 3 日期间 S&P500 的股票。

你用data[indices[0]]["Symbols"]初始化你的可交易符号,一旦根据data有了更新,你也随着时间的推移更新你的符号列表。

这种方法简单易行,效果很好。不幸的是,这些数据在 2017 年停止,并且不再定期更新。如果你有更好的免费数据,请在评论中告诉我。

摘要

  1. 维基百科 https://en.wikipedia.org/wiki/List_of_S%26P_500_companies S&P500 组件列表:
  2. 数据集的链接:https://nemozny.github.io/datasets/

资源

什么是激活功能?

原文:https://towardsdatascience.com/what-is-activation-function-1464a629cdca?source=collection_archive---------20-----------------------

来源:米里亚姆·埃斯帕奇

神经网络最重要的部分之一

激活函数定义了给定一个输入或一组输入时一个神经元/节点的输出 。这是对生物神经元刺激的模拟。

激活函数到下一层(浅层神经网络中:输入层和输出层,深层网络中到下一个隐层)的输出称为前向传播(信息传播)。它被认为是一个神经网络的非线性变换。

一个笔记本的全部代码都在这里: GitHub

有一个常用的激活功能列表:

  • 二进制
  • 线性
  • 乙状结肠
  • ReLU
  • 泄漏的 ReLU (LReLU)
  • 参数 ReLU (PReLU)
  • 指数线性单位(eLU)
  • ReLU-6
  • Softplus
  • 软设计
  • Softmax

二进制

二元激活函数是最简单的。它基于二进制分类器,如果值为负,输出为 0,否则为 1。把这个激活函数看作二元分类中的一个阈值。

二元激活函数的代码是:

def binary_active_function(x):
    return 0 if x < 0 else 1

这个函数的输出是什么?

for i in [-5, -3, -1, 0, 2, 5]:
    print(binary_active_function(i))output:
    0
    0
    0
    1
    1
    1

或者视觉上:

二元激活函数

优点:

  • 二元分类

缺点:

  • 在多标签分类中不起作用
  • 梯度计算的导数始终为 0,因此无法更新权重

线性激活函数

二元函数之后的下一步是用线性函数代替阶跃。输出与输入成正比。

对应的代码是:

def linear_active_function(a, x):
    return a*x

我们可以针对不同的a值来计算它:

$ x = numpy.linspace(-10, 10, 5000)
$ y_1 = [linear_active_function(1, i) for i in x] # a = 1
$ y_2 = [linear_active_function(2, i) for i in x] # a = 2
$ y_1
> [-10.0, -9.9, -9.8, -9.7, ..., 9.7, 9.8, 9.9, 10.0]

如果我们绘制 a = 1、2、4 和 10 的结果:

优点:

  • 二元和多元分类
  • 高度可解释性

缺点:

  • 导数对应于" a ",因此在后推过程中权重和偏置的更新将是恒定的。
  • 如果梯度总是相同,则效率不高。

乙状结肠的

Sigmoid 是使用最多的激活功能,带有 ReLUtanh 。这是一个非线性激活函数,也称为逻辑函数。该激活函数输出在 0 和 1 之间变化。神经元的所有输出都将是正的。

相应的代码如下:

def sigmoid_active_function(x):
    return 1./(1+numpy.exp(-x))

快速计算:

$ x = numpy.linspace(-10, 10, 5000)
$ y = [sigmoid_active_function(i) for i in x] 
$ y
> [4.5397868702434395e-05, 4.5854103946941324e-05, ... , 0.9999532196250409, 0.9999536850759906, 0.9999541458960531]

如果我们画出结果:

Sigmoid 激活函数

缺点:

  • 这个函数的问题是每个神经元的输出会饱和。大于 1 的值表示为 1,小于 0 的值表示为 0。
  • sigmoid 函数的最佳灵敏度在中心点(0,0.5)附近。
  • 在饱和期间出现了一个大问题,算法在这个位置期间无法学习(这是消失梯度问题的来源,对应于梯度中没有方向)。

双曲正切

正切双曲函数(tanh)与 sigmoï函数的形式相似。Tanh 在 0 中是对称的,值在-1 和 1 的范围内。作为乙状结肠,它们在中心点(0,0)非常敏感,但是它们对于非常大的数(正和负)饱和。这种对称性使它们比 sigmoid 函数更好。

应用双曲正切函数的相应代码是:

def tanh_active_function(x):
    return 2*sigmoid_active_function(2*x)-1

计算 y 值:

$ x = numpy.linspace(-10, 10, 5000)
$ y = [tanh_active_function(i) for i in x] 
$ y
> [-0.9999999958776927, -0.9999999957944167, ... , 0.9999999956227836, 0.9999999957094583, 0.9999999957944166]

以及相应的结果:

tanh 激活函数

优点:

  • 范围在-1 和 1 之间
  • 梯度比 sigmoid 更强(导数更陡)

缺点:

  • 像 sigmoid 一样,tanh 也有一个消失梯度问题
  • 浸透

热卢

开发了整流线性单元以避免大正数的饱和。非线性允许保存和学习数据中的模式,线性部分(>0-也称为分段线性函数)使它们易于解释。

下面的函数显示了如何实现 ReLU 函数:

def relu_active_function(x):
    return numpy.array([0, x]).max()

y 计算:

$ x = numpy.linspace(-10, 10, 5000)
$ y = [relu_active_function(i) for i in x] 
$ y
> [0.0, 0.0, ... , 9.97, 9.98, 9.99]

结果是:

ReLU 激活功能

优点:

  • 易于实施且速度非常快
  • 真 0 值
  • 当激活函数是线性时,优化是容易的
  • 最常用于神经网络生态系统

缺点:

  • 当 x = 0 时,函数不可微。这个点的梯度下降无法计算,但实际上这没有影响。线性部分对应于值为 1 的斜率,负部分等于零。
  • “垂死的 ReLU 问题”:如果输出为 0,则对应于神经元的不活跃部分。当神经元不活动时没有梯度,因此如果大部分神经元没有被激活,则可能导致模型的较差性能
  • 不适用于 RNN 类算法(RNN、LSTM、GRU)

泄漏 ReLU

该激活功能是 ReLU 激活功能的修改,以避免“死亡问题”。该函数返回线性斜率,其中 a=0.01,这允许用梯度流保持激活神经元。

参见下面的代码:

def leaky_relu_active_function(x):
    return 0.01*x if x < 0 else x

计算 y 轴来绘制结果:

$ x = numpy.linspace(-10, 10, 5000)
$ y = [leaky_relu_active_function(i) for i in x] 
$ y
> [-0.1, -0.0999, ... , 9.97, 9.98, 9.99]

绘制结果图:

泄漏 ReLU 激活功能

优点:

  • 纠正“将死的 ReLU 问题”
  • 零件 y=x 的 ReLU 激活功能的相同组成部分

参数 ReLU

在泄漏 ReLU 之后,创建了另一个激活函数来避免“死亡 ReLU 问题”,即参数化的 ReLU。系数 a 不锁定在 0.01(泄漏 ReLU),但可以自由估计。它是 ReLU 的推广,算法学习整流器参数。

代码:

def parametric_relu_active_function(a, x):
    return a*x if x < 0 else x

计算不同 a 值的结果:

$ x   = numpy.linspace(-10, 10, 5000)
$ y_1 = [parametric_relu_active_function(0.25, i) for i in x] 
$ y_2 = [parametric_relu_active_function(0.5, i) for i in x]
$ y_3 = [parametric_relu_active_function(0.75, i) for i in x]
$ y_4 = [parametric_relu_active_function(1, i) for i in x]
$ y_1
> [-2.5, -2.4975, ... , 9.97, 9.98, 9.99]

绘制 a = 0.25,0.5,0.75,1:

参数 ReLU 激活函数

如果 a = 0,参数 ReLU 相当于 ReLU 激活函数。如果 a=0.01,参数 ReLU 对应于泄漏 ReLU。

优点:

  • 推广 ReLU 激活函数
  • 避免“垂死的 ReLU 问题”
  • 神经网络学习参数“ a

指数线性单位

eLU 是 ReLU 函数的另一种变体。函数的负部分由缓慢平滑的指数函数处理。

相应的功能:

def elu_active_function(a, x):
    return a*(numpy.exp(x)-1) if x < 0 else x

y 计算:

$ x   = numpy.linspace(-10, 10, 5000)
$ y_1 = [elu_active_function(0.1, i) for i in x] 
$ y_2 = [elu_active_function(1, i) for i in x]
$ y_3 = [elu_active_function(2, i) for i in x]
$ y_4 = [elu_active_function(5, i) for i in x]
$ y_1
> [-0.09999546000702375, -0.09999541437933579, ... , 9.97, 9.98, 9.99]

绘制 a = 0.1,1,2,4 的结果:

eLU 激活功能

优点:

  • ELU 慢慢变得平滑,直到其输出等于-α,而 RELU 急剧平滑。
  • ELU 是 ReLU 的有力替代者。
  • 与 ReLU 不同,eLU 可以产生负输出。

缺点:

  • 对于 x > 0,可以用输出范围[0,inf]吹爆激活。

ReLU-6

ReLU 函数的另一个变体是 ReLU-6,6 是手动固定的任意参数。优点是将大正数的输出整形为 6 值。

相应的代码:

def relu_6_active_function(x):
    return numpy.array([0, x]).max() if x<6 else 6

y 计算:

$ y = [relu_6_active_function(i) for i in x]

绘制结果图:

ReLU-6 激活功能

Softplus

softplus 激活功能是 sigmoid 和 tanh 功能的替代功能。此功能有限制(上限、下限),但 softplus 在范围(0,+inf)内。

相应的代码:

def softplus_active_function(x):
    return math.log(1+numpy.exp(x))

y 计算:

$ y = [softplus_active_function(i) for i in x]

绘制结果图:

Softplus 激活功能

软设计

这种激活函数是 tanh 的一种变体,但在实践中并不常用。tanh 和 softsign 函数密切相关,tanh 指数收敛,而 softsign 多项式收敛。

相应的代码:

def softsign_active_function(x):
    return x / (1 + abs(x) )$ y = [softsign_active_function(i) for i in x]

绘制结果图:

软设计激活功能

Softmax

softmax 激活函数不同于其他函数,因为它计算概率分布。输出的总和等于 1。

相应的代码:

def softmax_active_function(x):
    return numpy.exp(x)/numpy.sum(numpy.exp(x))

计算输出是不同的,因为它是考虑到指数和的概率分布,函数需要所有的 x 点来计算输出 y

$ x = [0.8, 1.2, 2.4, 4.6]
$ y = softmax_active_function(x)
$ y
> [0.01917691, 0.02860859, 0.09498386, 0.85723064]
$ numpy.sum(y)
> 1.0

嗖嗖

Swish 是较新的激活功能,由谷歌在 2017 年发布,它提高了 ReLU 在更深模型上的性能。这个函数是 sigmoid 函数的变体,因为它可以表示为:x*sigmoid(x)。

Swish 具有在零点的单侧有界性、光滑性和非单调性,这些性质可能在 Swish 和类似激活函数的观察功效中起作用。
SWISH:一个自门控激活函数,Prajit Ramachandran,Barret Zoph,Quoc V. Le,2017

相应的代码:

def swish_active_function(x):
    return x/(1+numpy.exp(-x))

或者:

def swish_active_function(x):
    return x*sigmoid_active_function(x)

计算值:

$ x = numpy.linspace(-10, 10, 5000)
$ y = [swish_active_function(i) for i in x]
$ y
> [-0.0004539786870243439, -0.0004967044303692657, ..., 9.699405586525717, 9.799456604457717, 9.89950329556963]

绘制结果图:

Swish 激活功能

优点:

  • 与 ReLU 相比,每个点都是可微的

结论

这里展示了一些激活函数(最流行的)及其代码和表示。希望这种视觉化可以让每个人理解神经元的输出,并决定哪种功能更适合他们处理的问题。

最后一个图对应于一个图形中的激活功能堆栈。

所有激活功能(无 softmax)

参考

亚马逊 EC2 是什么,怎么用?

原文:https://towardsdatascience.com/what-is-amazon-ec2-and-how-to-use-it-2f621210cf4a?source=collection_archive---------30-----------------------

云计算

使用 AWS 云上的 GPU 实例训练您的模型。

克里斯蒂娜@ wocintechchat.com 在 Unsplash 上的照片

AWS——云计算的先锋

云计算可以被认为是将 IT 产品转变为 IT 服务。

亚马逊网络服务(AWS)是亚马逊提供的按需云计算服务和应用程序编程接口(API)。自 2006 年成立以来,AWS 经历了多年的发展,现已从全球数据中心提供超过 175 种全功能服务。

在本文中,我将介绍一下亚马逊弹性计算云(EC2) 的基础知识,这是一个允许用户启动实例的 web 服务,它在云中提供安全且可调整大小的计算能力。

稍后,我们将学习部署 EC2 实例,用于 ML/DL 模型培训。

EC2 的特点

  1. EC2 实例是随需应变的,是可靠且可扩展的基础设施,能够在几分钟内增加和减少容量。

2.预先配置的 AMIs。

3.可配置的 CPU、内存存储和网络容量称为实例类型,在实例上运行您的应用程序或软件。

4.用于安全登录实例的公钥和私钥对。

5.实例存储卷用于存储当您停止或终止实例时删除的临时数据。

6.访问 Amazon Elastic Block Store(Amazon EBS)获取持久存储卷。

7.静态 IPv4 地址称为弹性 IP 地址用于动态云计算。

8.部署与 AWS 云逻辑隔离的虚拟专用云(VPC)

9.这是一种按需服务,在实例终止之前,您将按使用情况付费。

10.当实例重新启动时,它会移动到新的主机上。请务必注意,您不能重新启动已终止的实例,但可以制作名为 images 的实例的副本,并从该映像启动新实例。

11.Amazon EC2 基础设施是可编程的,您可以使用脚本来自动化部署过程、安装和配置。

12.如果您担心 Amazon EC2 实例上的敏感和机密数据,您最好在上传之前加密数据。

基础设施

亚马逊机器映像(AMI)

为了使用 EC2 实例,我们需要使用 Amazon 机器映像创建一个虚拟机。这些虚拟计算环境被称为实例。

AMI 是一个模板,包含启动 EC2 实例所需的所有信息。您可以将 AMI 视为一个包含操作系统、应用服务器和应用程序的盒子。

您可以启动作为云中虚拟服务器运行的 ami 副本的实例。

用户可以访问预配置的 ami,也可以对它们进行定制。

可以从单个 AMI 启动多个实例,AMI 的硬件由实例类型决定。

位置

AWS EC2 实例可在全球范围内获得。这些位置具有区域、可用性区域、本地区域和波长区域。

地区是遥远的、独立的地理区域。

每个区域都有多个隔离位置的可用性区域。

这些隔离的位置具有本地区域,您可以将计算和存储等资源放置在离终端用户更近的多个位置。

波长区域向 5G 设备和终端用户部署具有超低延迟的 AWS。

储存;储备

AWS EC2 支持 AWS EC2 实例存储、AWS EBS 和 AWS S3。

图片来自 AWS EC2 开发者文档。(开源)

AWS EC2 实例商店

AWS EC2 实例存储是临时的块级存储。它位于主机的磁盘上。因为它是临时存储,所以当关联的实例停止或终止时,数据不会持续。因此,EC2 实例存储并不意味着长期数据存储。在这种情况下,你必须选择 EBS 或 S3。

AWS EC2 实例存储不可移植。这意味着您不能从一个实例分离并将其附加到另一个实例。

AWS EBS

AWS 弹性块存储(AWS EBS)是推荐的存储选项。它是持久存储。

一个实例可以有多个 EBS 卷。

AWS S3

AWS 简单存储服务(AWS S3)本质上是一个存储桶。你可以在网上的任何地方存储和检索任何数量的数据。

人们可以从 EBS 复制数据,称为快照,并将其保存在 S3。这可以在以后用于创建一个新的 EBS 卷,该卷可以连接到另一个 EC2 实例。因此,您可以从实例中分离卷,并将其附加到不同的实例。

根设备卷

根设备卷包含用于引导 EC2 实例的映像。当实例终止时,这个卷被删除(DeleteOnTermination属性是true)。然而,这种行为也是可以改变的。

网络和安全性

默认情况下,EC2 实例在启动到默认 VPC 时具有 IPv4 地址。在非默认 VPC 的情况下,应该在启动时专门分配 IPv4 地址。
当一个实例出现故障时,被替换的实例具有与原始实例不同的 IPv4 地址。如果你的应用需要一个静态 IPv4 地址,Amazon EC2 提供了弹性 IP 地址

安全组可用于控制对实例的访问。可以将单个实例分配给具有特定规则的多个组。

AWS 身份和访问管理(AWS IAM)

IAM 允许您向 AWS 帐户添加用户和组,并为每个用户分配特定的安全凭据。资源可以在同一个帐户和另一个 AWS 帐户中的用户之间共享。用户可以控制每个用户使用 AWS 资源执行任务的权限。

通过在 Amazon EC2 中使用 IAM,您可以完全控制使用 Amazon EC2 和特定 AWS 资源执行任务的用户。

设置您的 AWS EC2

我希望你已经在 AWS 上注册了一个帐户。如果不是这样做。现在前往 AWS 管理控制台。

AWS 管理控制台主页。图片由作者提供。

登录 AWS 控制台后,从标有服务的下拉菜单中选择 EC2。

在使用任何 AWS 服务之前,我们需要检查并在必要时修改我们计划使用的特定资源的 AWS 服务限制。所以让我们来研究一下。

GPU 限制增加请求

AWS 资源有一个默认配额,称为“限制”。这些限制取决于您的 AWS 帐户所在的地区。现在,我将只专门讨论 EC2 实例。

提高 GPU 极限的步骤:

1.我们首先需要选择适当的 AWS 区域,它支持我们选择使用的 GPU 实例。我们将使用 p2.xlarge. P2 是功能强大且可扩展的并行处理 GPU 实例。

2 .确保您的 AWS 区域支持该特定实例。你可以在这里交叉核对

3.现在您的地区已经设置好了,我们需要在此链接查看您的 EC2 服务限制报告,并找到您在 P2 的“当前限制”。(或者转到 EC2 仪表板,点击限值,查看 P2 限值)

AWS EC2 仪表板。点击限制。图片由作者提供。

4.你的上限将是 0。这意味着什么?AWS 将用户可以运行的 p2.xlarge 实例的数量限制为 0,这实际上阻止了您启动该实例。

P2 资源限制 0。图片由作者提供。

5.如果 p2.xlarge 实例的限制为 0,则需要增加限制才能启动实例。

6.点击计算 vCPU 限值以提出限值增加请求。极限计算器用于计算您需要多少 vCPUs(虚拟中央处理器)来启动您的按需实例,在我们的例子中是 P2。

增加限制。图片由作者提供。

7.点击添加实例类型,选择 p2.xlarge. 确保 实例计数为 1 。验证新限值显示的是 4 个 vcpu,然后点击请求增加限值。 除非你启动一个实例,否则请求增加限额不会从你的卡上扣款。这将打开以下屏幕。如果尚未选择,点击服务限制增加

服务限制增加。图片由作者提供。

8.案例详细信息中的限制类型将是 EC2 实例。现在,在请求下,选择 AWS 账户的区域,然后选择主实例类型所有 P 实例。将新的限值设置为 大于 4。

9.向下滚动填写案例描述您的限额增加案例,并点击提交。您将收到一封带有相应案例 ID 的邮件。您必须等待 AWS 批准您的限额增加请求。AWS 通常会在 48 小时内批准这些请求。

注意: 如果您从未在 AWS 上启动过任何类型的实例,您可能会收到一封来自 AWS 支持部门的电子邮件,要求您在他们批准增加限额之前,通过创建实例来初始化您的帐户。

启动我们的 EC2 GPU 实例

一旦 AWS 批准了您的 GPU 限制增加请求,您就可以开始启动实例的过程。

启动 EC2 GPU 实例的步骤:

  1. 单击启动实例
  2. 选择一个亚马逊机器映像(AMI)。我们将使用深度学习 AMI。
  3. 选择实例类型。如前所述,我们将使用 p2.xlarge.
  4. 新闻评论和发布。它会将您带到一个页面,您可以在其中进一步更新配置详细信息、存储卷等。现在,让我们只编辑安全组。
  5. 配置安全组—将一组防火墙规则附加到您的实例,以控制传入实例的流量。只需点击 e dit 安全组选项并选择创建一个新的安全组。让我们将这个安全组命名为“ Jupyter”。按下键添加规则。将端口范围 8888** 和的自定义 TCP 规则**设置为 anywhere
  6. 点击发射
  7. 现在让我们创建一个认证密钥对。这样做是为了访问您的 GPU 实例。点击 c 创建新的密钥对并点击下载密钥对按钮。这样会下载一个。pem 文件,您需要它来访问您的实例。
  8. 移动下载的。pem 文件保存到您计算机上的安全位置,因为您需要该文件来通过您选择的位置访问您的实例。下载完。pem 文件,点击 l 启动实例。
  9. 单击查看实例按钮,转到 EC2 管理控制台,查看实例引导。

启动实例(橙色按钮)。图片由作者提供。

选择 AMI。深度学习 AMI。图片由作者提供。

选择 GPU。p2.xlarge .作者图片。

编辑安全组。图片由作者提供。

实例已启动。图片由作者提供。

注意:
关闭任何未使用的实例或其他 AWS 资源,否则将按小时收费。AWS 对正在运行的实例收费,直到您停止实例。但是,在您“终止”(即删除)该实例之前,还会继续产生较小的存储费用。

AWS 计费警报

没有办法将 AWS 限制在特定的预算范围内,并在达到该阈值时自动关闭。但是,您可以设置 AWS 计费警报

登录您的 AWS EC2 实例

  1. 转到 EC2 仪表板,点击运行实例的选项。将显示您的实例。
  2. 记下 IPv4 地址。
  3. 从终端导航到您存储的位置。pem 文件。(例如,如果你把你的。pem 文件时,cd ~/Desktop/会将您移动到正确的目录。)
  4. 键入ssh -i YourKeyName.pem ubuntu@X.X.X.X,其中:X.X.X.X是在 AWS 中找到的 IPv4 公共 IP,YourKeyName.pem是您的名称。pem 文件。
  5. 在您的实例中,为了创建 Jupyter 笔记本设置的配置文件,请键入:jupyter notebook --generate-config
  6. 打开任何 GitHub repo 或克隆到实例终端。
  7. 启动 Jupyter 笔记本jupyter notebook --ip=0.0.0.0
  8. 现在,您的终端将以这种方式显示令牌 ID:
unnecessary_stuff:8888/?token=something_useful_here

9.通过访问X.X.X.X:8888/?token=...,从您的 web 浏览器访问 Jupyter 笔记本索引(其中 X.X.X.X 是您 EC2 实例的 IP 地址,以:8888/?token=开头的内容是您刚刚复制的内容)。万岁。给你。您的 Jupyter 笔记本已经在 EC2 实例上启动并运行。恭喜你。

10.要关闭笔记本,请按 ctrl-c 两次,要退出实例终端,请键入 exit。

外卖食品

您可以通过键入conda config-set auto _ activate _ base true在启动时激活 conda

有时您的实例可能没有所需的包,只需 pip 安装相同的包。

如果你有一个 requirements.txt 文件,只需输入sudo python3 -m pip install -r requirements.tx

不使用时停止并终止实例。您需要理解,即使实例没有被使用,AWS 也会向您收费。因此,正在运行和空闲的实例也会烧光你的口袋。这是 AWS 的一个缺点。另一方面,如果实例空闲,Google Cloud 不会向您收费。

结论

恭喜你。现在你知道什么是亚马逊 EC2,以及如何使用它。AWS 是最常用的云服务,因此熟悉 1 或 2 项技术是有用的。亚马逊 EC2 有更多的功能。打开 EC2 仪表板,了解更多信息。我希望您了解如何部署 GPU 实例。下一场见。干杯!

谢谢你。

什么是编码器解码器模型?

原文:https://towardsdatascience.com/what-is-an-encoder-decoder-model-86b3d57c5e1a?source=collection_archive---------3-----------------------

编码器解码器是深度学习中广泛使用的结构,通过本文,我们将了解其架构

迈克尔·泽兹奇在 Unsplash 上的照片

在本文中,我们将介绍一些情况下称为序列对序列(Seq2Seq)模型的编码器和解码器结构。为了更好地理解这个模型的结构,先前关于 RNN 的知识是有帮助的。

我们什么时候使用编码器解码器模型?

1-图像字幕

编码器解码器模型允许机器学习模型生成描述图像的句子的过程。它接收图像作为输入,并输出一系列单词。这也适用于视频。

ML 输出:“棕榈树环绕的通往海滩的道路”,照片由 Milo MiloezgerUnsplash 上拍摄

2-情感分析

这些模型理解输入句子的含义和情感,并输出情感得分。它的等级通常在-1(负)和 1(正)之间,其中 0 表示中性。它在呼叫中心用于分析客户情绪的演变以及他们对某些关键词或公司折扣的反应。

作者图片

3-翻译

这个模型阅读输入的句子,理解其中的信息和概念,然后把它翻译成第二种语言。谷歌翻译是建立在一个编码器解码器结构上的,更多细节请参见本文

作者图片

什么是编码器解码器模型?

理解编码器-解码器模型概念的最佳方式是玩猜图游戏。游戏的规则非常简单,玩家 1 从列表中随机选择一个单词,并需要在一张图中勾画出其含义。团队中第二个玩家的角色是分析图画,并识别图画所描述的单词。在这个例子中,我们有三个重要的元素玩家 1(将单词转换成图画的人)、图画(兔子)和猜测图画代表的单词的人(玩家 2)。这就是我们理解一个编码器解码器模型所需要的,下面我们将建立一个比较的猜字游戏和一个将西班牙语翻译成英语的编码器解码器模型。

猜谜游戏,作者图片

如果我们将上面的图表转化为机器学习概念,我们会看到下面的图表。在接下来的章节中,我们将详细介绍每个组件。

编码器解码器模型,图片由作者提供

1-编码器(画师)

编码意味着将数据转换成所需的格式。在图片示例中,我们将单词(文本)转换为图片(图像)。在机器学习的背景下,我们将西班牙语中的单词序列转换成一个二维向量,这个二维向量也被称为隐藏状态。编码器由递归神经网络(RNN) 堆叠而成。我们使用这种类型的层,因为它的结构允许模型理解序列的上下文和时间依赖性。编码器的输出,即隐藏状态,是最后一个 RNN 时间步长的状态。

编码器,图片作者

2-隐藏状态(草图)

编码器的输出,一个封装了输入序列全部含义的二维向量。向量的长度取决于 RNN 中细胞的数量。

编码器和隐藏状态,图片由作者提供

三解码器

解码意味着将编码信息转换成可理解的语言。小组中第二个玩猜字游戏的人将把图画转换成单词。在机器学习模型中,解码器的作用将是将二维向量转换成输出序列,即英语句子。它也建立了 RNN 层和一个密集层,以预测英语单词。

解码器,图片由作者提供

结论

这种模型的主要优点之一是输入和输出序列的长度可能不同。这为非常有趣的应用打开了大门,如视频字幕或问答。

这种简单的编码器/解码器模型的主要限制在于,对于很难实现的长输入序列,所有信息都需要在一维向量中进行总结。话虽如此,理解编码器解码器模型是 NLP 最新进展的关键,因为它是注意力模型和变压器的种子。在下一篇文章中,我们将遵循使用编码器/解码器结构构建翻译模型的过程。然后,我们将继续探索注意力机制,以实现更高的准确性。

[## 如何建立一个编码器解码器翻译模型使用 LSTM 与 Python 和 Keras。

按照这一步一步的指南来建立一个编码器和解码器模型,并创建自己的翻译模型。

towardsdatascience.com](/how-to-build-an-encoder-decoder-translation-model-using-lstm-with-python-and-keras-a31e9d864b9b)

什么是离群值?

原文:https://towardsdatascience.com/what-is-an-outlier-26888fd9870d?source=collection_archive---------46-----------------------

你就是!

其实不是。这不是一篇关于你的文章。

但是,正如格拉德威尔在《离群者》一书中所说的,如果你发现自己是那种离群者,你相当幸运。而且罕见。

什么是真正的离群值?

照片由来自 PexelsDaniel Reche 拍摄

根据 Meriam-Webster 的说法,异常值是:

“在数值上与样本中的其他值明显不同的统计观察”

但你不是为此而来的,对吧?

让我们简单地解释一下什么时候一个数据点被认为是异常值,为什么会这样,以及你能做些什么。

什么时候?

有多种方法可以识别和突出异常值,但我们的目标是保持简洁,所以让我们讨论最简单的方法。你可以在这里找到其他方法

如果任何观测值超出第一个四分位数-1.5 倍 IQR 到第三个四分位数+ 1.5 倍 IQR 的范围,则被视为异常值。

资料来源:giphy.com

呆在这里!

我保证会很容易,所以会的。我们只需要确定这个 IQR(四分位数间距)意味着什么。

让我们假设你要见你的高中同事,9 个人。都是开车来的。为了便于解释,让我们想象一下,我们按照升序收集所有汽车的马力数据。

收集了 105 | 133 | 146 | 183 | 190 | 195 | 210 | 220 | 510←个值

如果你懂一点统计学,我们有所谓的四分位数。如果您不记得,请查看此处的然后再回来。

IQR =第三个四分位数-第一个四分位数= 215–139.5 = 75.5

现在,回到我们例子中的异常值,我们需要计算 Q1-1.5 倍 IQR 和 Q3+1.5 倍 IQR。

  • Q1-1.5 x IQR = 139.5–75.5 = 64(Q1——第一个四分位数)
  • Q3+1.5 x IQR = 215+75.5 = 290.5(Q3—第三个四分位数)

我们很亲密。留在这里

如开始计算前所述,任何超出区间[64;290.5]被认为是异常值。与收集的数据相比的极值。问题是,在我们的数据中是否有超出区间的值?没错, 510 就是。(让我们假设那是你,你有一辆新的宝马 M5)。

这是从一组简单收集的数据中计算异常值的非常简单的方法。

为什么?

异常值可能出现在一组数据中有多种原因。有好有坏。

数据输入错误 →您想要键入 210 而不是 510,因此该值成为异常值;

测量错误 →你已经在一家以夸大数据闻名的服务中心测量了你的汽车的功率。510 不是真的。

实验误差→ 你的一个同事,有 105 的那个告诉你数值是 kw 而不是马力,误会是实验误差;

故意的 →你在考验你的同事,告诉他们一个不真实的值;

自然→ 这就是我们的处境,你真的是一个骗子,你的 M5 力量不是实验测量 BS,你真的是一个异数。

什么?

现在你知道它们是什么,你如何找到它们,以及什么可能导致它们,怎样做才能利用或消除它们?

  1. 如果你想吹嘘你班上的 hp 平均值有多高,保持数值。考虑平均值不具有代表性,因为它受到异常值的影响。你。
  2. 如果你认为你的车与众不同,你是其他车的例外,去掉你的价值。
  3. 如果你觉得有其他开着豪车的高中同事却没有出现,那就再开一次会,把你的小组当成一个不同的小组。

就这样。

资料来源:giphy.com

和往常一样,这是一种过于简单和幽默的方法来解释相当复杂的统计概念。

如果你喜欢我的作品,可以考虑看看我的其他帖子,我尽量每周发布:

[## 标准偏差与标准误差

[警告这太容易了] -包含简短的示例 R 代码

towardsdatascience.com](/standard-deviation-vs-standard-error-5210e3bc9c04) [## 我们为什么用 0.05?

还是不是?

towardsdatascience.com](/why-do-we-use-0-05-8cd43a39edfa)

什么是人工智能?

原文:https://towardsdatascience.com/what-is-artificial-intelligence-c1250e583619?source=collection_archive---------33-----------------------

一口大小的视角

直截了当的介绍

Jelleke Vanooteghem 在 Unsplash 上拍摄的照片

人工智能(AI)是一个你可能听说过的术语——它对社会产生了巨大的影响,并被广泛用于各种行业和应用。那么,AI 到底是什么,能做什么?这里简单介绍一下。

人工智能(AI)是我们日常生活的一部分——从语言翻译到医疗诊断和无人驾驶汽车到面部识别——它每天都在对行业和社会产生越来越大的影响。

但是 AI 到底是什么?

简单来说,AI 就是 通过计算机、系统或机器 复制人类智能的技术。

然而,这是一个相当宽泛的描述,不同的人有不同的解释方式。让我们考虑几个:

  • 《麻省理工技术评论》将人工智能描述为“T14 寻求建造能够推理、学习和智能行动的机器”
  • IBM 认为“任何能够模拟人类智能和思维过程的系统都被称为具有人工智能”
  • 安德鲁·摩尔,卡耐基·梅隆大学计算机科学系主任,建议人工智能是“让计算机以我们认为需要人类智能的方式运转的科学和工程”
  • 人工智能的先驱明斯基和麦卡锡曾说过,对于机器执行的任何任务,如果需要人工智能来完成同样的任务,那么这项任务就被认为是人工智能

无论如何描述,人工智能的概念并不新鲜,至少从 1950 年就已经存在了。当时,颇具影响力的计算机科学家和数学家艾伦·图灵(Alan Turing)推测人工智能是“会思考的机器”。

图灵接着开发了“图灵测试”,该测试基于机器以类似人类的能力进行推理谜题的能力来识别人工智能。

人工智能为什么重要?

自图灵时代以来,人工智能已经走过了漫长的道路,现在已经拥有令人印象深刻的能力,包括语言解释和复杂的推理。

例如,2011 年,IBM 的人工智能机器“沃森”在流行的单词联想游戏 Jeopardy 中击败了人类冠军。这对于人工智能来说是一个相当大的成就——对于传统的计算机程序来说,在危险中使用的关联并不容易处理。

在人工智能能力的另一次展示中,2015 年,英国公司 DeepMind Technologies 发布了 AlphaGo 。这是一台人工智能机器,它在古代围棋比赛中击败了(人类)世界冠军。

围棋是一种高度复杂的游戏,需要直觉和创造力——以前认为机器不可能在围棋上击败人类冠军。AlphaGo 的胜利是人工智能的一个重要里程碑。

但是除了这些令人印象深刻的壮举,是什么让人工智能变得重要?

人工智能很重要,因为它在许多方面有助于改善我们的生活。这是人工智能越来越有吸引力的一个简单而有力的原因。

让我们来看一些例子,看看人工智能是如何影响我们的工作和生活的。

人工智能能做什么?

人工智能的应用多种多样,以下只是几个例子:

机器人学

人工智能正在为制造装配线、仓储、消费电子产品、无人机甚至商业厨房的先进机器人技术提供动力。

例如,Miso Robotics 创造了能够烹饪和上菜的自主机器人。他们使用 3D 热视觉从周围环境中学习并获得新技能。

iRobot 制造家用机器人清洁和生活设备。他们最受欢迎的产品是真空吸尘器,可以确定房间大小,检测地板类型,记住房间里的物品位置,并选择最佳路线。

卫生保健

人工智能正在启用虚拟助手,这些助手可以节省护士的时间,并帮助医生处理工作流程。这也减少了制药公司的研究时间和成本。

人工智能正在通过以下公司进入医疗保健领域:

  • PathAI ,利用 AI 提高其诊断准确率
  • 寻呼机,使用人工智能分析患者的临床数据,以及
  • Atomwise ,利用人工智能帮助药物发现。

金融

人工智能在金融中用于提供准确、实时的报告和处理大量数据。

个人金融行业也一直在使用机器人顾问,这是一种人工智能算法,提供个性化的财务规划工具。例如,金融服务公司 Betterment 利用人工智能为其客户提供量身定制的投资组合管理服务。

在投资管理领域,AlphaSense 等公司使用人工智能金融搜索引擎来帮助他们的客户在投资过程中获得信息优势。

社会化媒体

脸书、Twitter 和 Slack 等公司正在使用人工智能来改善其平台的交互、安全性和体验。

Twitter 使用人工智能来帮助识别具有社会破坏性的语言,如仇恨言论。

Slack 是一个工作场所协作平台,利用人工智能过滤相关消息,突出知识专长,帮助员工提高工作效率。

营销

人工智能在帮助公司改善客户细分、内容创作和线索生成方面非常成功。

Amplero 是一家使用人工智能来帮助公司执行和优化营销活动的公司。它通过更好的客户细分和对购买偏好的实时分析来做到这一点。

Drift 是另一家通过聊天机器人使用人工智能来帮助客户的公司。聊天机器人帮助解决产品问题,并帮助确定满足客户需求的最佳产品或服务。

人工智能的类型

人工智能显然有大量的能力,并涵盖了广泛的应用领域。

随着人工智能的发展,它也发展了一系列子学科——监督学习、非监督学习、强化学习、神经网络、机器学习、深度学习、自然语言处理和计算机视觉都是人工智能的例子。

上述人工智能应用的例子在做它们所做的事情时使用了这些子学科中的一个或多个。

例如,Drift 使用自然语言处理来为聊天机器人提供动力,而 Miso Robotics 使用深度学习来帮助机器人“看”和准备食物,AlphaSense 使用一系列子学科来获得投资优势。

[## 自然语言处理简单解释——高要求技能

自然语言处理近年来发展迅速,并在许多方面改善了我们的生活。所以…

highdemandskills.com](https://highdemandskills.com/natural-language-processing-explained-simply/)

但是描述人工智能的不同子学科并不总是容易的,因为它们在实践中经常重叠,并且在如何组织它们方面没有明确的一致意见。

为了帮助理解它,维基百科提供了人工智能的全面概述,包括它的历史,子学科,应用和挑战。对于人工智能更简洁的总结,的这篇文章作者 Richaldo Elias 也值得一读。

或者,复杂性科学家和技术投资者 Francesco Corea 开发了一种组织人工智能的有用方法,称为“人工智能知识地图”。你可以在这篇文章里了解一下。Corea 的知识地图为人工智能的不同领域如何相互联系提供了一个简洁的视觉总结。

许多人工智能新人将可能参与机器学习、深度学习或自然语言处理。近年来,这些领域得到了大量的研究,并在大量用例中成功部署。

AI 的下一步是什么?

根据牛津理论神经科学实验室主任西蒙·斯金格的说法:

“人工智能研究的目的是开发一种机器,能够承担人脑可以完成的任何认知任务。”——西蒙·斯特林格

斯特林格这么说是什么意思?

他提出了一种人工智能状态,通常被称为“人工通用智能”或 AGI。

AGI 被视为人工智能的“圣杯”。它将有效地复制人脑的功能。这包括感知、对周围环境的感官解读以及学习因果关系的能力。

AGI 系统将在一系列情况下实现类似人类的功能。这将大大增强人工智能在我们日常生活中的作用。

今天的人工智能,尽管取得了令人印象深刻的成就,但更多地被视为“定制自动化”的复杂应用,而不是具有真正类似人类的能力。

例如,当人工智能模型被训练时,它会找到一组最适合其训练和评估框架的参数。当部署该模型时,它使用其训练参数以或多或少“类似机器”的方式完成工作。尽管这很有用,但它与 AGI 承诺的认知智能程度相去甚远。

随着我们向 AGI 迈进,我们所知的人工智能将会继续快速发展,并为社会带来巨大的利益。而且肯定有一些令人兴奋的可能性值得期待!

结论

人工智能寻求通过计算机、系统或机器复制人类智能。它已经有许多成功的使用案例,并且是一个快速发展的技术领域。

人工智能的一些领域已经非常成熟,例如深度学习和自然语言处理。其他公司开始发展并发现新的应用程序,因为他们利用了当今前所未有的数据和计算能力。

更重要的是,人工智能通过让我们做更多的事情,以更高的效率和更好的结果来帮助改善我们的生活。

人工智能的未来看起来很光明,很可能在未来几年看到大量的增长和进化。

事实上,这已经发生了。

本文原载于 高需求技能博客

什么是注意机制?

原文:https://towardsdatascience.com/what-is-attention-mechanism-can-i-have-your-attention-please-3333637f2eac?source=collection_archive---------6-----------------------

解决 Seq2Seq 问题技术的演变,从 RNN 到自我关注

作者图片

在整篇文章中,我们将首先了解我们所使用的技术的局限性,然后介绍新的机制来克服他们所面临的问题。我们将了解以下几个部分:

  • 编码器解码器,瓶颈问题
  • 注意机制
  • 自我关注

1 —编码器解码器,瓶颈问题

编码器解码器架构由 RNN 构建,广泛用于神经机器翻译(NMT)和序列到序列(Seq2Seq)预测。它的主要好处是我们可以分离编码器和解码器,所以它们有不同的长度。

例如,具有不同序列长度的模型是接收单词序列并输出数字的情感分析,或者输入是图像而输出是单词序列的图像字幕模型。这种架构非常强大,甚至谷歌都将其作为谷歌翻译的核心技术。

在下图中,我们可以看到一个翻译示例的模型:

作者图片

我们用一个输入层和一个递归神经网络(RNN)更准确地说是一个长短期记忆(LSTM)构建了编码器(蓝色矩形)。编码器接收西班牙语句子,并且输出单个向量,该向量是最后一个 LSTM 时间步长的隐藏状态,整个句子的含义在该向量中被捕获。然后解码器接收这个隐藏状态作为输入,并返回一个单词序列,即英语翻译。

图片由作者提供:编码过程中,输出的是隐藏状态的最后一个时间步。

这种架构已经展示了它在 Seq2Seq 问题上的巨大能力,然而它也有一个重要的限制。正如我们已经说过的,所有输入句子的含义都是在一个向量中捕获的,所以随着句子长度的增加,模型捕获这个向量中的信息就越困难。因此,它的性能随着长句而下降,因为它倾向于忘记部分长句,隐藏向量成为瓶颈。

注意机制建立在我们刚刚分析过的编码器解码器结构之上。存在两个主要的差异,我们将在下面的章节中进行分析

2—隐藏状态的 Stack

在前面的结构中,我们只是传递了上一个时间步的隐藏状态。有了这个新的结构,我们保持了每个时间步的所有隐藏状态。

正如我们在下图中看到的,以前编码器的输出是一个向量,我们现在有一个由每个隐藏状态组成的矩阵。这解决了只有一个向量没有足够信息的问题,但它也增加了完全相反的问题,太多的信息。对于解码器想要翻译的每个单词,它不需要完整的矩阵,因为不是所有的单词都提供相关信息,所以解码器如何知道应该关注矩阵的哪一部分或对给予更多关注?

作者图片

当人类描述一幅图像时,我们并不把它作为一个整体来分析,而是检查图像的相关部分,并关注我们所描述的内容。一个机器学习模型是如何关注的?

完全一样的方式。注意机制的一个很好的例子可以在论文“ 显示、出席和讲述 ”中找到。这里我们有一个图像作为输入,目标是生成一个描述它的句子。在下图中,我们有一个热图,显示了模型在生成单词时更关注的地方,白色区域越多,关注越多,黑色区域越少。

当它描述鸟时,注意力集中在动物身上(白色部分),而当它描述水时,注意力从动物转移到它的周围。

作者图片:模型架构

图 1:显示模型关注的地方。图片来自“展示、参与和讲述”

另一个例子可以在 Bzmitry Bahdanau 等人于 2015 年发表的论文‘通过联合学习对齐和翻译进行神经机器翻译’中找到。让我们分析下面的热图,它显示了模型在翻译句子时更关注的地方:

图 2:图片来自“通过联合学习对齐和翻译的神经机器翻译”

x 轴对应于英语的源句子,y 轴对应于生成的法语翻译。每个像素显示了模型转移注意力的地方,区域越白,注意力越集中,区域越暗,注意力越少(就像前面的例子)。

例如,为了生成单词“accord ”,它主要关注“agreement”。当模型将“欧洲经济区”转换为“欧洲经济区”时,我们可以看到关注机制的力量。在英语中,形容词用在名词之前,而在法语中,形容词在名词之后,所以在这种情况下,模型将注意力转移到后面出现的单词。

关键问题是,模型如何知道关注哪里?它计算出一个被称为对齐分数的分数,该分数量化了我们应该给予每个输入多少关注。存在多种比对分数,最流行的是加法(也称为 concat, Bahdanau et al 2015 )、位置基、一般和点积( Luong 2015 )。这种区别导致了更广泛的类别,如全局/软和局部/硬注意。

我们转移注意力的方式对我们的解释有影响,因此对结果也有影响,我们选择的比对分数函数也有类似的影响。

这种注意机制在模型中只能应用一次,它是连接编码器和解码器的部件,并允许比较输入和输出句子,如前一幅图像所示。它从编码器接收隐藏状态矩阵并根据需要注意的对齐分数进行计算,简化表示如下:

作者图片:模型架构

3 —自我关注

2017 年,在谷歌团队的论文'关注是你所需要的'中,他们介绍了一种称为变压器的新型架构,这也是变压器 (BERT) 双向编码器表示的种子。

在这篇论文中,他们提出了我们已经分析过的先前架构的两个主要变化。首先,他们把 RNN 从照片中去掉。第二,他们增加了自我关注机制。在下一节中,我们将分析这两个决定及其含义。

谢谢你载了 RNN

如果 RNN 在 NLP 任务中表现得如此出色,我们为什么要取消它呢? RNN 按顺序工作,这意味着为了计算句子的第二个单词(第二时间步),我们需要计算第一个隐藏向量(第一时间步)。然后为了计算隐藏状态,时间 t,你必须一直等待 t-1 的结果,,所以我们不能并行化。此外,RNN 意味着大量的计算需要大量的资源。

图片由作者提供,要处理单词“camino”我们必须首先计算“Estoy”和“de”

此外,注意力 RNN 已经改善了对较长句子的时间依赖的提取,但仍然与长序列作斗争,所以我们还没有完全解决这个问题。

如果我们没有 RNN,模型结构是什么?为了更好地理解这款新车型,我们来看看下图:

作者图片

正如我们可以看到的我们保留了编码器解码器的结构,但是我们不再有相互连接的注意力机制。那么注意力机制是从哪里计算出来的呢?如果我们没有 RNN,编码器和解码器里面是什么?

作者图片

编码组件是一堆编码器,这些编码器共享相同的内部结构。本文提出的模型由 6 个编码器构成,解码器也是如此。

让我们来探索这些组件:

作者图片

让我们首先关注编码器,它由两层组成自关注机制(我们将在后面探讨)和前馈网络。每个编码器都有这两层,所以如果我们之前说我们堆叠了 6 个编码器,那么我们在编码阶段就有 6 个自关注机制。这意味着我们并不局限于应用一次注意机制,而是可以应用我们所拥有的层数。

解码器共享相同的层,并增加了一层称为编码器-解码器注意的层,我们可以将这一层视为第二节中使用的注意机制(attention mechanism)来连接编码器和解码器。

这篇文章的目的是关注注意力机制,如果你想更好地了解变形金刚,我推荐下面这篇文章

由于新的结构,模型可以并行化,所需的计算对资源的要求更低,从而大大提高了训练性能,这是深度学习中的关键任务。此外,无论句子有多长,它都可以从整个句子中提取时间依存关系。那么,这种新的突破技术是如何工作的呢?

自我关注

虽然之前我们使用注意机制来连接编码器和解码器,但是这里我们使用注意机制来计算同一个句子的单词之间的依赖关系,输入的句子的单词相互作用(自身)。在下图中,我们可以看到一个翻译结果的示例,更准确地说,我们关注的是 5 号编码器:

图片来自以下链接

在这张图片中,我们看到同一个句子出现了两次。当模型翻译单词“it”时,它需要注意相关的单词并提取其含义,这个单词是指动物还是街道?在本例中,我们选择单词“it”(右栏),它会突出显示更关注的单词(左栏),在本例中是“the”和“animal”。颜色越深,模特就越关注这个特定的单词。

虽然之前我们计算了输入和输出句子之间的注意机制(图 1,图 2 ),但这里我们计算的是句子和句子本身之间的注意。

多头关注

论文不断对模型进行微调,并增加了多头关注。

图片来自下面的链接

从这个例子中我们知道单词“它”指的是动物,但是这个动物会发生什么呢?只有一个子空间,我们无法提取这么多的意义,这就是多头注意力的来源:

图片来自下面的链接

在这张图片中,我们现在有两个头或子空间(橙色和绿色),颜色越强,它越受关注。从第一个子空间我们知道“它”指的是动物,从第二个子空间我们知道动物“累了”。多头是在自我注意机制中增加维度或子空间的概念,以获取更多的意义,在本文中他们使用了 8 个头。

结论

通过这篇文章,我们分析了注意机制的演变。我们从使用 RNN 和编码器解码器结构来解决 Seq2Seq 问题开始。这些模型的问题是瓶颈,我们期望在一个隐藏状态中提取句子的全部意思。

为了解决这个问题,我们保留了编码器的所有隐藏状态但是现在信息太多,所以我们需要注意相关部分。这里当我们引入注意机制来连接编码器和解码器时。

最后,变形金刚忽略了 RNN ,它主要关注自我注意机制。在这种情况下注意不只是用于一次连接编码器和解码器,而是我们可以多次使用。而且,自我注意是用来比较一个句子和它自己,而不是输入和输出。

[## 如何建立一个编码器解码器翻译模型使用 LSTM 与 Python 和 Keras。

按照这一步一步的指南来建立一个编码器和解码器模型,并创建自己的翻译模型。

towardsdatascience.com](/how-to-build-an-encoder-decoder-translation-model-using-lstm-with-python-and-keras-a31e9d864b9b) [## 我喜欢成为数据科学家的 3 个原因

这一切都归结于马尔科姆·格拉德威尔在他的书《局外人》中解释的“有意义的工作”的概念。

towardsdatascience.com](/3-reasons-why-i-love-to-be-a-data-scientist-90696ac0d314)

什么是 AutoML,为什么它很重要?

原文:https://towardsdatascience.com/what-is-automl-6ddf27040f27?source=collection_archive---------6-----------------------

机器学习,数据科学

AutoML 是将人工智能应用于可证明问题的开始到结束的循环自动化的方法。

马库斯·温克勒在 Unsplash 上的照片

在这篇文章中,你可以探索 AutoML ,AutoML 能否取代数据科学家,AutoML 是否接近强 AI 以及,AutoML 与神经架构搜索有什么区别?

什么是 AutoML?

照片由 Katarzyna PeUnsplash 上拍摄

一个 自动机器学习(AutoML) 与为数据科学家产生机器学习解决方案相关联,而无需对数据准备、模型选择、模型超参数和模型压缩参数进行无限制的查询。

在 AutoML 框架之上,帮助数据科学家:

  • 数据可视化
  • 模型可理解性
  • 模型部署

AutoML 被视为关于算法选择、模型的超参数调整、迭代建模和模型评估。它是关于让机器学习任务更容易使用更少的代码,并避免手动过度调整。

AutoML 中使用的核心创新是超参数搜索,用于预处理组件和模型类型选择,以及优化它们的超参数。有许多种优化算法,从随机和网格搜索到遗传算法和贝叶斯。

当前的 autoML 框架还利用它们的经验来提高它们的性能。

AutoML 不能取代数据科学家的专业知识,但是企业定义鼓励他与模型开发相关的技术工作保持战略距离。

驱动 AutoML 开源包有:

  • 自动 sklearn
  • 汽车 weka
  • 自动 keras

AutoML 能取代数据科学家吗?

David LevêqueUnsplash 上拍摄的照片

无论 AutoML 将如何发展,都必须看到,它还不能真正理解明确的信息对一个组织、其业务和业务环境意味着什么。领域知识同样是一种选择性的人类才能,不能机械化。

AutoML 可能不会取代数据科学家专家。个人电脑取代了数学家吗?不,对数学家的需求显著增加,因为他们的计算假设可以被应用。

不管 AutoML 是否能根据要求制作任何机器学习模型,统计模型都不是没有缺陷的。这是专家介入的地方,他们以模型很好地适应问题为目标,整理出一些勾勒模型的方法。

AutoML 是为了加快他们的工作,允许他们快速尝试,并帮助他们改善结果。

AutoML 接近强 AI 了吗?

照片由劳伦斯·胡克汉姆Unsplash 上拍摄

我不认为 AutoML 正在接近强 AI 。强大的人工智能与在环境自主和非任务情境中实现人类水平的洞察力密切相关。AutoML 在一个固定的环境中执行一项相当确定的任务。

AutoML 和神经架构搜索有什么区别?

照片由粘土银行Unsplash 上拍摄

AutoML 和神经架构搜索(NAS)深度学习据点的新统治者。它们是快速而混乱的方法,可以让你的人工智能任务非常精确,而不需要大量的工作。基本且可行;这就是我们需要的人工智能!

  • AutoML 就是消化深度学习所有令人难以置信的部分。你需要的只是数据。就让 AutoML 做最麻烦的一块设计吧!
  • NAS 是一种寻找最佳神经网络设计的算法。让计算采用各种模块,并设置这些模块来构建网络。训练并测试网络。根据你的结果,调整你用来制作网络的积木以及你如何把它们连接在一起。

这种新的 AutoML 和 NAS 为人工智能社区提供了激励困难,并真正为科学的另一次飞跃打开了大门。

结论

AutoML 是将人工智能应用于可证明问题的开始到结束的循环机械化的方法。它基本上围绕两个重要方面——数据收集和数据预测。

中间发生的各种各样的进步可以毫不费力地自动化,同时传达一个增强良好并准备进行预测的模型。

现在,把你的想法放在TwitterLinkedin,以及Github!!**

同意 还是 不同意 与绍拉夫·辛拉的观点和例子?想告诉我们你的故事吗?

他对建设性的反馈持开放态度——如果您对此分析有后续想法,请在下面的 评论 或伸出手来!!

推文@ SauravSingla _ 08,评论Saurav _ Singla,还有明星SauravSingla马上!

什么是批量正常化?

原文:https://towardsdatascience.com/what-is-batch-normalization-46058b4f583?source=collection_archive---------17-----------------------

深度学习

有什么帮助?

里卡多·阿尔塞在 Unsplash 上的照片

批量标准化

批量规范化是由 Sergey Ioffe 和 Christian Szegedy 在 2015 年的论文中引入的:批量规范化:通过减少内部协变量移位来加速深度网络训练

批量标准化缩放层输出,使平均值为 0,方差为 1。输出以这样的方式缩放,以便更快地训练网络。它还减少了由于参数初始化不佳而导致的问题。

规范化背后的直觉

我们知道标准化或特征缩放可以加快学习过程。批处理规范化背后的直觉是相似的。批量标准化对隐藏单元做同样的事情。

为什么用批次这个词?因为它规格化了当前批次中的值。这些有时被称为批量统计

具体来说,批量标准化通过减去批量平均值并除以批量标准偏差来标准化前一层的输出。

这非常类似于特征缩放,这样做是为了加速学习过程并收敛到一个解决方案。

内部协方差移位

在谈论批处理规范化时,您可能听过一个时髦的词,那就是内部协方差移位。考虑一个学习将 x 映射到 y 的函数的网络。内部协方差偏移指的是输入 x 的分布的变化。如果发生变化,我们的网络将不够有效,并且不能泛化。因此我们必须从头开始训练。

考虑这个例子来理解协方差移动。如果我们训练一个网络来检测棕色狗的图像,然后你停止将这个网络应用于彩色狗图像的数据,它将不能很好地执行,我们将不得不再次训练。输入分布的这种变化就是协方差移动。那么批处理规范化在这里有什么帮助呢?

批量标准化到救援

如果每一层的输入分布都相同,则网络是有效的。批量标准化使图层输入的分布标准化,以对抗内部协方差偏移。它控制隐藏单位的移动量。

如何进行批量归一化?

我们取每层的平均值,称为 μB 。这被称为计算为层 x_i 的所有值的总和除以所有 m的平均值。

卑鄙。图片由作者提供。

然后我们计算方差σ B 如下:
1。从每个值中减去μB,即每个值的偏差,并对偏差的平方取平方
2。对每个值的结果求和,然后除以值的数量 m ,得到平均值或均方差。

方差。图片由作者提供。

然后我们发现标准差是均方根偏差和ε的和。ε是小至 0.001 的恒定值。这是为了避免被零除的情况,也是为了增加方差。

方差的增加有什么帮助?

既然我们已经计算了平均值和标准偏差,我们可以如下进行归一化。

标准化值。图片由作者提供。

然后,归一化值乘以γ,再加上β。这些是可学习的参数,用于进一步缩放标准化值。最终批次标准化值如下:

批量标准化值。图片由作者提供。

可以在激活功能之前和之后应用批量标准化。然而,研究表明,在激活功能之前使用效果最好。

在 PyTorch 中,可以使用batch norm 1d对线性输出进行批量归一化,对于卷积层过滤后的图像,可以使用batch norm 2d进行 2d 输出。

有什么好处?

  1. 训练更快。
  2. 使用更高的学习率。
  3. 参数初始化更容易。
  4. 通过调节输入使激活功能可行。
  5. 总体效果更好。
  6. 它会添加噪声,从而通过调整效果减少过拟合。因此,在应用批处理规范化时,请确保使用较少的丢失,因为丢失本身会增加噪声。

结论

当应用于神经网络时,批量标准化通过将输入标准化到隐藏层来产生更好的结果。有趣的是,批处理规范化是在 VGG 之后引入的,所以 VGG 可以通过批处理规范化得到改进,从而在 ImageNet 上获得更好的结果。使用更高的学习率而不消失或爆炸梯度的能力也是有希望的。注意到批处理规范化解决的问题后,我希望您现在对此有了更好的理解。

下一场见!谢谢你。

什么是偏差-方差权衡?

原文:https://towardsdatascience.com/what-is-bias-variance-tradeoff-c8b19772e054?source=collection_archive---------50-----------------------

机器学习

避免过拟合和欠拟合的错误

阿纳斯塔塞·马拉戈斯在 Unsplash 上拍摄的照片

作为一名机器学习从业者,很重要的一点是,要很好地理解如何建立高精度的有效模型。训练模型的一个常见陷阱是过度拟合和欠拟合。

让我们来看看这些主题,这样下次你建立一个模型时,你就会确切地知道如何避免过度拟合和欠拟合的错误。

偏差-方差权衡

衡量模型有效性的两个变量是偏差和方差。

请知道我们说的是模型的有效性。如果您对模型验证有疑问,我们将在另一篇文章中讨论。

偏差 是给定的点与训练集中绘制在直线上的点之间的误差或差异。

方差 是由于对训练集中微小变化的敏感性而产生的误差。

偏差-方差。图片由作者提供。(使用 Adobe Xd 制作)

我将借助上图进一步解释偏差-方差。所以请跟我来。简而言之,我们说,误差被计算为预测值和观察值/实际值之间的差。现在,假设我们有一个非常精确的模型。这意味着误差非常小,表明低偏差和低方差。(如图左上圆圈所示)。

如果方差增加,则数据分布更广,导致精确度降低。(如图中右上方的圆圈所示)。

如果偏差增加,计算的误差增加。(如图中左下方圆圈所示)。

高方差和高偏差表示数据以高误差展开。(如图右下方圆圈所示)

这就是偏差-方差权衡。早些时候,我将偏差定义为模型捕获的数据和可用数据显示的数据之间的误差,将方差定义为对可用数据微小变化的敏感度误差。具有高方差的模型捕获数据中的随机噪声。

我们希望找到具有低偏差和低方差的最佳拟合线。(如图左上圆圈所示)。

参数如何影响我们的模型?

随着参数数量的增加,模型的复杂性不断增加。这可能导致过度拟合,基本上增加方差和减少偏差。

我们的目标是在我们的模型中提出一个点,在这个点上偏差的减少等于方差的增加。那么我们如何做到这一点呢?让我们看看模型拟合。

模型拟合

我们可以找到一条线来表示这些点的大致方向,但可能无法表示数据集中的每个点。这将是最适合的模型。

为什么不总是使用高阶多项式?

好问题。遗憾的是,答案是否定的。通过这样做,我们将创建一个非常适合我们的训练数据的模型,但无法概括训练集以外的数据(比如模型没有训练过的任何测试数据)。因此,我们的模型在测试数据上表现不佳,导致精确度较低。这个问题叫做过拟合。我们也说模型有高方差低偏差。

同样,我们还有另一个问题。它被称为欠拟合。当我们的模型既不适合训练数据,也不对新数据(比如模型没有训练过的任何测试数据)进行概括时,就会出现这种情况。当我们有高偏差和低方差时,我们的模型是欠拟合的。

回归线。图片来自维基百科

上图显示了一条蓝线,这是一条多项式回归线。黑色的直线是线性函数的直线。虽然多项式函数是一个完美的拟合,线性函数可以更好地推广。因此,我们可以说多项式函数是过拟合,另一方面,直线是最佳拟合。想象一条几乎不通过这些点的假想线。那将是不合适的。

如何克服回归模型的欠拟合和过拟合?

  • 为了克服欠拟合或高偏差,我们可以向我们的模型添加新的参数,从而增加模型的复杂性,从而降低高偏差。
  • 为了克服过度拟合,我们可以使用降低模型复杂度和正则化等方法。
  • 我们将在另一篇文章中讨论正则化。

结论

我希望您理解模型最小化偏差和方差的能力之间的权衡,这在实现最适合您的机器学习模型中起着重要作用。

下一集见。谢谢大家!

什么是大数据,人工智能能做什么?

原文:https://towardsdatascience.com/what-is-big-data-and-what-artificial-intelligence-can-do-d3f1d14b84ce?source=collection_archive---------9-----------------------

探索大数据和人工智能

法比奥Unsplash 上的照片

从上世纪 90 年代开始,大数据这个名词就被人们提起。大数据发展迅速,正在越来越深刻地影响着我们的生活。人工智能是 1956 年在达特茅斯人工智能夏季研究项目中发现的。人工智能的概念和发展目标经历了几次心碎。但是今天,AlphaGo 可以在围棋棋盘上击败人类顶级棋手。

AlphaGo 对战韩国职业围棋手 Lee Sedol ,排名九段,围棋高手之一

人工智能正在进入从理论到现实的快速过渡,这将大大提高我们的生活质量。人工智能作为大数据的引擎,正在加速实现深度数据应用服务。在万物互联数据爆炸的海量连接时代,我们相信掌握了人工智能和大数据相关技术的公司将成为时代的浪潮。

大数据概念的诞生

大数据的概念并不新鲜,在 20 世纪 90 年代就被频繁提及。但是大数据这个概念最近几年又热起来了,因为在 2011 年 5 月由 EMC 牵头的以云遇上大数据为主题的 EMC world 2011 大会上又被抛出来了。同年 5 月,麦肯锡发表相关研究报告,大数据概念再度火热。那么什么是大数据呢?大数据的技术很多,方向也不一样,所以不同的人可以有不同的视角。比如海量数据计算、困难复杂的数据分析等。,这些可能就是大数据的特点。

什么是大数据?

那么我们来介绍一下什么是大数据。大数据有两种流行的定义。首先是 Gartner 说的。

大数据需要新的处理模式,以便拥有更强的决策、洞察和流程优化能力,以适应信息资产的海量、高增长率和多样化。

— Gartner

这个概念表达了一个非常重要的意义。大数据现在已经成为一种信息资产。在大数据时代,我们需要新的处理模式来处理这些信息资产。因为原有的处理模式无法在要求的时间或精度要求内处理这些数据。

另一个概念是从大数据的特点总结出来的。麦肯锡总结了大数据的四大特点,数据规模海量、数据流转快、数据类型多样、价值密度低。这就是我们通常所说的大数据的 4V 特征。IBM 后来加入了第五个特征,并由此形成了大数据的定义,也就是业界比较常见的大数据的 5V 特征。让我们一个一个来看看什么叫做 5V 特性。

第一个 V 是数据量大,所以在大数据时代,要处理的数据量级非常大。目前,这一数量级通常用于 TB 级的数据分析和挖掘。

速度

第二个特点叫做处理速度快。过去处理数据需要几周、几个月甚至更长时间才能得到结果,而现在我们需要在更短的时间内得到结果,比如几分钟甚至几秒钟。

米卡·鲍梅斯特在 Unsplash 上的照片

多样化

第三个特征叫做多种类型的数据。之前我们能处理的数据通常是结构化的,也就是二维表。但是在大数据时代,需要处理更多样化的数据类型,有结构化、非结构化和半结构化数据。这些数据必须通过大数据技术分别处理,甚至混合处理。

价值

第四个特征称为低数据值密度。数据量很大,但是对我们有价值的数据并不多。这些数据淹没在浩瀚的数据海洋中,因此其数据的价值密度相对较低,这意味着我需要在数以亿计的数据中进行筛选和挖掘,但我可能只得到几十个或几百个有用的数据。

诚实

第五个特征是相对于第四个特征的。大实话说的是商业价值的价值高或者更真实,也就是挖掘出来的数据的价值非常高,无论是对我们的决策、洞察,还是流程优化都有直接的决定性作用。所以比较直白。

卢克·切瑟Unsplash 拍摄的照片

大数据的这些 5V 特征告诉我们,今天的大数据不仅仅是指数据,而是指数据加上一系列的处理技术。我们需要在很短的时间内,从大量的数据中找到并挖掘出对我们工作有价值的那部分数据,以便我们做出决策或为工作进行优化。整个过程叫做大数据。

什么是人工智能?

人工智能是一门研究和发展模拟人类智能延伸和扩展的理论、方法、技术和应用系统的新技术学科。人工智能研究的目标是让机器执行一些需要智能人类才能完成的复杂任务。也就是说,我们希望机器可以代替我们解决一些复杂的任务,不仅仅是重复的机械活动,而是一些需要人类智慧参与的活动。

Unsplash 上由 Franck V. 拍摄的照片

所以我们来看看人工智能能做什么。

图像识别

图像识别现在广泛应用于我们的生活中。例如,一个人的身份可以基于照片或当用相机捕捉到一个人的面部时进行识别。在中国许多城市的火车站,你可以刷身份证,机器用摄像头采集你的面部图像,然后识别和验证你的身份。一些楼宇门禁使用图像识别进行识别,你不再需要门禁卡或钥匙。其他应用包括高级人机交互、视频监控、图像自动索引和视频数据库等。

procylink 访客管理系统Unsplash 上拍照

语音识别

语音识别为我们与计算机交互提供了一种更快、更方便的方式。当我们对电脑说话时,它可以知道我们在说什么,并与我们互动。这种方法和我们以前在键盘上打字完全不同。这种与计算机交互的方式可以给我们带来许多扩展的应用。像 Siri,Google Assistant,Alexa 这样的虚拟助手可以根据命令或问题为个人执行任务或服务。

自动驾驶汽车

自动驾驶或自动驾驶汽车在人工智能领域也非常受欢迎。谷歌的 Waymo 已经开始了名为“Waymo One”的商业自动驾驶汽车服务。中国互联网公司也在北京四环成功测试了自动驾驶。现在也有一些高级汽车带有自动驾驶的模块。

自动驾驶汽车

随着 5G 技术的出现,我会相信这项技术会彻底改变我们未来的出行方式。C-V2X,即蜂窝 V2X(车辆对一切),是一种使用相同 5G 网络的通信技术。它允许车辆之间进行无线通信,还可以与其他交通基础设施(如交通灯、路边等)进行通信。在下面的文章中,你可能会对 5G 有更多的了解。

[## 关于 5G 你需要知道的一切

本主题介绍 5G 网络知识,帮助您了解 5G 技术发展和未来业务…

medium.com](https://medium.com/swlh/all-you-need-to-know-about-5g-4c3fc6ad7124)

消费金融

想象一下,如果我们在一个网站上输入一笔我们想投资的钱,就像我们身边有一个财务规划师一样,人工智能会立即告诉我们哪种投资回报最高。人工智能在金融领域取得了一些重大进展。

莎伦·麦卡琴Unsplash 上拍摄的照片

结论

大数据和人工智能是当今计算机科学的两个重要分支。近年来,大数据和人工智能领域的研究从未停止。大数据与人工智能有着千丝万缕的联系。第一,大数据技术的发展依赖于人工智能,因为它使用了很多人工智能的理论和方法。其次,人工智能的发展也必须依靠大数据技术,它需要成吨的数据做支撑。技术创新才刚刚开始,还有更多的新技术需要我们不断学习。

如果你想了解大数据的发展和趋势,了解更多人工智能及其应用,也可以阅读以下文章:

[## 大数据及其应用的发展与趋势

关于大数据的发展和趋势及其在电信行业和其他领域的应用

towardsdatascience.com](/the-development-and-trend-of-big-data-and-its-applications-5dd8c52e1df6) [## 人工智能的基本概念及其应用

机器学习,深度学习,强弱人工智能,神经网络简介:BP 和…

medium.com](https://medium.com/towards-artificial-intelligence/basic-concepts-of-artificial-intelligence-and-its-applications-294fb84bfc5e) [## 人工智能的三大领域及其工业应用

人工智能是一门研究和发展理论、方法、技术和方法的新技术学科

towardsdatascience.com](/three-major-fields-of-artificial-intelligence-and-their-industrial-applications-8f67bf0c2b46)

什么是“大数据”——了解历史

原文:https://towardsdatascience.com/what-is-big-data-understanding-the-history-32078f3b53ce?source=collection_archive---------13-----------------------

一次历史之旅,我们是如何走到这一步的,我们释放了哪些能力,以及我们下一步要去哪里?

Glen Beck(背景)和 Betty Snyder(前景)在 328 号楼为 ENIAC 做节目。(美国陆军照片,加州。1947-1955)由美国陆军照片n.d .公共领域。

这一切是如何开始的(1940 年代)

很久以前,1945 年 12 月,第一台电子通用数字计算机完成。它被称为 ENIAC(电子数字积分器和计算机)。它标志着一个时代的开始,在这个时代中,我们为多类问题生产计算机,而不是为每个特定的用例定制。

为了比较性能,ENIAC 在单核上的最高时钟频率约为 5 kHz,而 iPhone (Apple A13)的最新芯片在 6 核上的最高时钟频率为 2.66 GHz。这大致相当于每秒多完成大约 400 万次循环,此外还提高了一次循环中可以完成的工作量。

从历史上看,我们已经经历了在最新的硬件进步上扩展以释放新的软件工程能力的周期。已经出现了一种增加灵活性的模式,同时也要求工程师承担更多的责任。不可避免地,人们希望在提供相同灵活性的同时,减轻工程师的额外负担。这种灵活性是通过实现最佳实践来实现的,当我们理解在特定抽象中工作的模式时,这些最佳实践会被梳理出来。

数据的演变(20 世纪 60 年代至 90 年代)

历史上,服务器成本高昂,存储、内存和计算能力有限,无法解决我们想要解决的问题,也不需要程序员付出大量努力,例如内存管理。相比之下,今天,我们有了自动垃圾收集的语言来为我们处理这个问题。这就是为什么 C、C++和 FORTRAN 被如此广泛地使用,并继续被用于高性能用例,在这些用例中,我们试图从系统中获得尽可能多的效率和价值。即使在今天,Python 中的大多数数据分析和机器学习框架都调用 C 来确保性能,并且只为程序员公开一个 API。

为了从组织数据的系统中获取尽可能多的价值,像 IBM 这样的公司在存储、检索和处理数据的特定模型上投入了大量资金。从这项工作中,我们得到了在大型机大金属时代非常流行的分层数据模型。通过创建标准模型,他们减少了启动项目所需的脑力劳动,并增加了项目间可以共享的知识。

路面改善的分级模型示例,分为三个类别,每个类别可能有自己的类别。所有结构必须向下,并且不能连接回父类别。这就形成了一个一对多的关系,称为树。层次模型美国交通部n.d .公共领域。

大型机解决了当时的问题,但过于昂贵,因此只有银行等最大的企业能够有效地利用它们。它们在遍历树状结构时非常有效,但是它们强加了非常严格的一对多关系,这对于程序员来说可能很难表达,并且使得他们的应用程序很难更改。

后来,创建了关系模型,它为我们今天的大多数数据库提供了动力。在关系模型中,数据被表示为元组(表)的集合,它们之间有关系。典型的关系是一个外键,它表示两个表中的数据应该相互关联。没有学生,你就没有分数,没有老师,你就没有课堂。

显示表如何通过 id 连接的关系图。

由于应用于数据的结构,我们可以定义一种标准语言来以这种形式与数据交互。关系模型的最初发明者还创建了它的结构化查询语言(SQL),这是今天访问数据的事实上的标准。这是因为 SQL 易于阅读,同时也非常强大。当系统具有递归和窗口功能时,SQL 甚至是完全的。图灵完备性粗略地解释为只要有足够的时间,这种语言可以解决任何计算问题。这是 SQL 的一个极好的理论属性,但并不总是意味着它是每项工作的最佳工具。这就是为什么我们使用 SQL 访问和检索数据,但利用 Python 和其他语言对数据进行高级分析。

Oracle 在 1979 年发布了第一个关系数据库产品。这些系统被称为关系数据库管理系统(RDBMS)。从那以后,几十种商业和开放源码的 RDBMS 已经大张旗鼓地发布了。这些对开源的最初贡献已经导致 Apache Software Foundation 成为“大数据”领域工具的事实上的地方,其许可在利用库的核心源代码时支持商业活动。

这些系统非常适合利用规范化数据结构管理和访问数据;然而,随着数据量的增长,它们的性能在负载压力下开始下降。我们可以利用一些优化来减轻系统的压力,比如索引、读取副本等等。关于优化 RDBMS 性能的主题可能还会有更多的博客文章和书籍,但已经超出了本文的讨论范围。

互联世界及其所有数据(20 世纪 90 年代)

在电脑成为每个家庭的必需品,手机进入每个人的口袋之前,通信和围绕通信的数据要少得多。几乎你去的每个网站都有跟踪功能,可以更好地了解用户体验,并向他们的客户提供个性化的结果。

数据收集的爆炸式增长源于自动化收集的能力,而在过去,用户必须以调查、电话等形式提供反馈。今天,我们被我们的活动所追踪,我们的行动比我们的想法更响亮。网飞不再让你对电影进行排名或评分,因为他们发现信号并没有推动生态系统的利用。

谷歌的搜索索引和对 MapReduce 的需求(21 世纪初)

谷歌是第一批涉足需要复杂技术的大规模数据收集的公司之一;然而,在 90 年代后期,他们没有像现在这样作为世界上最赚钱的公司之一的庞大预算。谷歌的竞争优势是它的数据,以及他们如何有效地利用这些数据。让我们来看看他们作为一个企业最早的挣扎之一。

谷歌的工程领导有一个难以解决的问题,他们负担不起传统公司所依赖的昂贵得多的企业级硬件。然而,与此同时,他们的计算需求与其他组织相同,甚至更多。谷歌已经建立了一个科学怪人系统来跟上他们的业务以及整个网络的增长需求。他们的服务器中的部件是消费级的,容易出现故障,运行在其上的代码对于这些故障事件也不可伸缩或不健壮。

Jeff Dean 和 Sanjay Ghemawat 是当时的工程领导。他们勤奋地重写谷歌代码库的各个方面,以更好地应对失败。他们遇到的最大问题之一是,在作业运行时硬件会出现故障,需要重启。当他们在代码库中不断解决这些问题时,他们注意到一个一致的模式正在被遵循,他们可以将它抽象出来并围绕它创建一个框架。这种抽象后来被称为 MapReduce。

MapReduce 是一个编程模型,定义在两个步骤的过程中,即 map 阶段和 Reduce 阶段。映射是函数在元素方面的应用,而归约是聚合。这个框架提供了一个简单的接口,在这个接口中,工作可以以一种智能的方式在一个集群上的不同工作者之间进行划分。如果我们花一些时间不太深入地思考这个问题,我们会意识到,如果我们可以拆分我们的工作,那么我们也可以针对单个故障恢复我们的工作,而不必重做整套工作。此外,这转化为一个更加可扩展和健壮的系统。有许多方法可以提高 MapReduce 系统的性能,随着时间的推移,我们将通过从这个概念构建的抽象层进行改进。

" WordCountFlow ",由 Magnai17,在 CC BY-SA 4.0 下授权。

通过利用 MapReduce 框架,Google 使用廉价且易于构建和维护的商用服务器有效地扩展了其基础设施。他们可以在代码中自动解决故障,甚至进一步提醒他们服务器可能需要维修或更换部件。这一努力为他们省去了大量的麻烦,因为网络图变得如此之大,以至于没有一台计算机,更不用说超级计算机,能够处理如此大的规模。

杰夫和桑杰仍然在谷歌工作,并在许多塑造数据格局的技术进步上进行合作。詹姆斯·萨默斯在《纽约客》上写了一篇关于谷歌拐点的精彩文章

MapReduce 作为开源实现 Hadoop 简介(2000 年代中期)

Google 倾向于把它的工具放在内部,因为他们是专门为他们的内部系统构建的,但是 Google 也以学术论文的形式分享它的知识。“ MapReduce:大型集群上的简化数据处理”一文概述了 MapReduce 编程模型,并在附录中提供了一个字数统计算法的示例实现。我们看到,编写 MapReduce 作业的代码量比用 Python 脚本做同样的事情要多得多;然而,Python 脚本将仅在单线程上运行,并且吞吐量有限,而 MapReduce 作业将根据我们的需要扩展服务器数量,以便在合理的时间框架内完成结果。

我们用复杂性换取了扩展能力,第一个支持 MapReduce 的系统非常笨重。当谷歌、脸书、雅虎和其他科技巨头这样的初创公司努力让组织中的每个人都可以访问其庞大的数据量时,我们吸取了许多教训。我们吸取了许多经验教训,并开发了各种工具来解决这些问题。本文的其余部分将重点讨论我们学到了什么,以及如何将其应用到“大数据”领域的后续工具中。

2000 年代中期,Doug Cutting 和 Mike Cafarella 阅读了谷歌关于 MapReduce 的论文,以及另一篇关于谷歌分布式文件系统的论文。他们正在开发 Nutch,一个分布式网络爬虫,并且意识到他们在扩展他们的系统时遇到了同样的问题。Doug 当时正在寻找全职工作,并最终参加了雅虎的面试,他们接受了建立一个开源系统来实现大规模索引的想法,因为他们当时落后于 Google。雅虎聘请 Cutting 继续从事 Nutch 的工作,Nutch 将衍生出一个分布式文件系统和一个计算框架,这两者都是 Hadoop 的核心组件。它们被称为 Hadoop 分布式文件系统(HDFS)和 Hadoop MapReduce。随着 Hadoop 进入炒作周期,这将成为一个令人困惑的术语,因为两者都被简称为 Hadoop。

MapReduce 依赖于分布式文件系统,因为它需要对整个硬件堆栈的故障具有弹性。Jeff Dean 在“云计算系统的兴起”中描述了这一点,他在描述 2006 年一个典型的谷歌集群的失败事件时说,“可靠性必须来自软件”。

  • 约 1 次网络重新布线(在 2 天内关闭约 5%的机器)
  • 大约 20 次机架故障(一个机架中的 40 到 80 台机器瞬间消失,1 到 6 个小时才能恢复)
  • 约 5 个机架出现故障(一个机架内有 40–80 台机器,50%的数据包丢失)
  • 约 8 次网络维护(4 次可能会导致约 30 分钟的随机连接丢失)
  • 约 12 个路由器重新加载(几分钟内移除 DNS 和外部 VIP)
  • ~3 个路由器故障(必须立即拉动流量一小时)
  • 大约几十个 30 秒的小信号,用于 DNS 大约 1000 个单独的机器故障
  • ~成千上万的硬盘故障使磁盘变慢,内存变坏,机器配置错误,机器易损坏等。

许多其他考虑因素对于提高整个堆栈的性能至关重要,例如通过尽可能少地移动数据来最小化网络延迟。为了实现这一目标,我们将计算带到了每台服务器中带有大型磁盘的存储中,而不是在传统的 NFS 或 SAN 存储解决方案中保持存储独立。将计算引入存储时,我们不想让群集中的某个特定节点因计算而负担过重,因为它拥有数据。我们还希望确保,如果一个节点出现故障,我们仍将拥有数据的副本,并能够有效地分割工作。如果我们更进一步,看看 Google 列出的故障事件类型,我们还需要为节点故障和机架故障做准备。这意味着我们的存储解决方案还需要机架感知能力,以及跨机架分布的多个数据副本。

每个程序员都应该知道的延迟数字作者 P .斯塔克

如果这一切看起来很复杂,那是因为它确实很复杂!此外,第一代 MapReduce Hadoop MapReduce 也同样涉及其中,需要深入了解 MapReduce 流程和框架内性能优化的基础知识。MapReduce 的一个重大挑战是将一些重要的东西定义为一组 MapReduce 进程。没有一个表达系统来创造复杂的逻辑。相反,Hadoop MapReduce 专注于为构建可扩展计算提供最底层的块,但没有有效地协调它们。Hadoop MapReduce 的另一个警告是,它完全是磁盘驱动的,没有任何东西存储在内存中。在 MapReduce 出现的时候,内存是非常昂贵的,如果你用完了内存,那么作业会不断失败,因为它不适合任何机器。所有这些考虑意味着 Hadoop MapReduce 很慢,很难编写,但是非常稳定和可伸缩。

提出了几种解决这些挑战的方案,如 Pig(脚本)、Hive (SQL)和 MRJob(配置)。这些都有效地归结为 Hadoop MapReduce 之上的包装器,以支持迭代算法、更少的样板文件和略好的代码抽象。这些工具允许不太懂技术的人利用“大数据”生态系统,即使他们不是具有丰富 Java 经验的高级软件工程师,但仍有许多不足之处。

减少责任,同时通过抽象提高灵活性(2010 年代早期)

随着 21 世纪初亚马逊网络服务(AWS)云的出现和越来越多的采用,人们开始考虑如何在 AWS 上运行 Hadoop 工作负载。这是他们梦寐以求的分析工作负载,通常以突发方式运行一小段时间,其余时间服务器只是在数据中心等待。

然而,当时 Hadoop MapReduce 严重依赖于 HDFS 文件系统。不可能利用云带来的可扩展存储解决方案,这种解决方案会使集群退役。我们如何将这些工作负载迁移到云中,同时通过扩展到我们的弹性工作负载来降低成本,从而获得云的优势?如果我们稍微放宽了无内存利用率的限制,让我们能够将一些数据保存在内存中以降低延迟,会怎么样呢?我们怎么能允许像机器学习中使用的迭代过程呢?

这些想法是 Spark 问世的核心,最初于 2014 年发布。最初的论文发表于 2010 年。他们看到,通过允许利用少量内存,性能提高了 10 倍,这也大大降低了编程的复杂性。

Spark 的 1.x 版本并不是横向扩展和高效处理数据的终极解决方案。它仍然受到复杂编程模型的困扰,这需要大量的知识来编写高效的代码。它提供了极大的灵活性,消除了不必要的责任。这是一个很棒的第二代工具,从那以后,Spark 的受欢迎程度急剧增长。它最初超越了 Hadoop,并随着新需求的出现而继续发展。

比较 Hadoop 和 Spark 的 Google 趋势

改善体验(2010 年代中期)

到 2016 年,Spark 已经足够成熟,意识到他们的编程模型正在成为采用的瓶颈。更多没有软件工程经验的人承担了从数据中创造价值的任务。一个新领域数据科学的发展正在兴起,它专注于以科学的方式从数据中提取价值,而不仅仅是用传统的商业智能工具报告数据。

熊猫作为任何人都可以用来处理数据的工具而出名。它为用户提供了一个简单的 API,由两个适马的 Wes McKinney 创建,以使定量研究人员的生活更容易。他们一遍又一遍地构建相同的代码来分析数据。两个适马开源了这个库,它已经成为人们学习如何以编程方式与数据交互的标准。

致力于 Spark 的团队意识到,他们的许多用户最初都是在 Pandas 中进行探索,然后在他们巩固了自己的想法后转移到 Spark。工具的这种隔离使得工作流不一致,并导致大量的代码重写工作来适应 Spark 中的 MapReduce 模型。Spark 通过添加 DataFrame API 做出了回应,该 API 模仿了 Pandas API,这意味着他们的用户可以利用相同的工作流,但让它在 Spark 的 MapReduce 引擎上运行,即使在分析的探索阶段也允许横向扩展功能。

除了 Spark 的编程用法之外,他们的一些用户还希望利用 SQL 来访问数据。如上所述,近 50 年来,SQL 一直是访问数据的标准。Spark 团队在这一点上做出了一个非常棒的决定,他们决定启用 Spark SQL,但是使用他们为 DataFrame API 编写的相同的底层优化引擎。通过统一优化引擎,他们编写的任何改进不仅会影响他们的 SQL 接口,还会影响他们的编程接口。这个引擎被称为 Catalyst 优化器,它的工作方式与传统 RDBMS 中的查询计划优化器几乎相同。所有这些工作在 Spark 2.0 中达到高潮,极大地提高了可用性。

催化剂优化器数据块 完成。

以同样的灵活性减少责任(2020 年)

Spark 最近在 2020 年 6 月发布了最新的 3.0 版本,将一切都向前推进了一步,但他们没有专注于新功能,而是专注于提高性能、可靠性和可用性。

为了提高性能,Spark 增加了自适应查询执行和动态分区修剪,即使在 RDBMS 领域,这也是相对较新的改进。这些性能增强可以带来巨大的收益。在 TPC-DS 基准测试中,102 个查询中有 60 个的动态分区修剪性能提高了 2 到 18 倍。这意味着,随着公司利用 Spark、降低基础设施成本、缩短价值实现时间以及更加关注结果,所需的计算量将会更少。这些性能增强对用户是透明的,不需要重写代码。

为了提高可靠性,该团队已经关闭了 2.x 和 3.0 分支之间的大量错误(3,400 个),提供了更好的 Python 错误处理以简化 Python API 的使用,等等。这些改进再次提高了灵活性,而没有改变 Spark 的责任模型。

为了提高可用性,Spark 为流用例提供了一个新的 UI,提供了对小批量统计数据和管道整体状态的更好的可见性。在许多用例中,很难理解系统何时会出现延迟,以及如何有效地响应这些变化,例如向外扩展新节点或潜在的向内扩展以降低成本。

Spark 3.0 通过减少最终用户的责任,同时保持同等水平的灵活性,继续改善生态系统。这使我们能够解决更多的挑战,并大幅加强我们的运营,使我们专注于增值工作。

“大数据”领域工具的发布历史。我们可以看到,直到最近,大约每两年在抽象方面都会有进展。随着 MapReduce 框架的成熟,最近的趋势一直集中在云的采用和通过用户可用的技术栈变得更高效。

当前的挑战和未来会怎样?

在本文中,我们将重点放在 Hadoop 和 Spark 上,以构建生态系统随时间的演变并规划其历史。“大数据”领域有数百种工具,每一种都有其使用案例和旨在应对的挑战。如果您在分布式框架中查看类似 SQL 的数据接口,您将体验 Hive、Presto 和 Impala 的历史,它们解决了该领域中的不同挑战。如果您对数据序列化感兴趣,比如非常传统且效率极低的 CSV,为了减少存储并缩短计算时间,您可以研究 Avro、Parquet、ORC 和 Arrow。可能会有 1000 篇博客文章讲述他们的历史,让我们了解我们今天在哪里以及我们是如何走到这一步的。

自 2010 年“大数据”炒作周期开始以来,我们在技术上取得了如此大的进步。我们现在有了亚马逊、微软和谷歌等云提供商,实现了以前只能梦想的能力。云侧重于弹性扩展您的工作负载以满足您的需求的理念。作为交换,您需要支付高于数据中心成本的额外费用,并减少维护数据中心基础架构的运营、监管和技术方面的需求。如果我们看一下分析用例,就会发现硬件的利用率无处不在,这是云的完美目标用例。

对于这些“大数据”工作负载,云提供商使其解决方案的扩展、缩减和扩展变得异常简单。有 EMR(亚马逊)、Azure Databricks(微软)和 Dataproc(谷歌),这些提供商都支持云中的短期工作负载。他们已经将存储分别隔离到他们的对象存储解决方案 S3、Azure 数据湖存储和谷歌云存储,从而实现了计算与存储的分离。如果您需要加速分析,您可以在一个完全隔离的集群中这样做,而不会影响任何其他人正在运行的作业。由于不同的工作负载有不同的性能限制,本地集群的调优曾经是一个难以置信的挑战。有了这些抽象,我们的团队可以专注于他们的目标,而不是基础设施。

此外,我们不仅想减少我们对基础设施的心理负担,还想减少我们的代码。在当今世界,我们有实时和批量用例。历史上,我们必须维护两个独立的代码库来支持这些用例之间的差异。原来 batch 只是 streaming 的一个特例,那么把我们对它的工作方式融合在一起难道没有意义吗?Flink、Spark 和 Beam 都在努力以某种方式解决这个问题,要么是作为一等公民(Beam),要么是通过修改他们的 API 来让最终用户感觉更舒服(Flink/Spark)。

这些进步的核心是需要对我们世界上最大规模的数据集进行极其复杂的分析。我们需要根据我们的数据来促进机器学习和人工智能(ML/AI)用例。要做到这一点,我们不仅需要非常高效地处理我们的数据,还需要在不妨碍最终用户的情况下处理数据。ML/AI 工具的民主化在过去二十年中一直在发生,scikit-learn、Keras、Tensorflow、PyTorch、MXNet 和许多更多的库除了深度学习用例之外还支持传统的统计建模。“大数据”领域的工具旨在从这些工具中吸取经验教训,并将它们直接集成到其生态系统中。

那么到底什么是“大数据”呢?

大数据是指当您有一个纵向扩展不经济的用例,并且需要转而寻求横向扩展解决方案时。不同的公司有不同的要求,每个公司都有自己独特的需求和限制。一些用例在历史上需要纵向扩展方法,但是随着我们改进了在 MapReduce 等横向扩展编程模型中工作的抽象,我们已经能够将它们重新转换为横向扩展解决方案。

几家公司通过将尽可能多的内存放入一台机器来扩大规模。一些公司在 24 TB 内存的虚拟机(VM)上运行 SAP 工作负载;其他人只能负担得起使用更传统的裸机扩展到 1.5 TB。然而,这只能让我们更快地访问数据。当我们需要对数据进行非平凡的计算时,比如机器学习或人工智能用例,该怎么办?我们只能在单台机器上保留这么多内核;例如,SAP 使用案例的 24 TB 内存虚拟机有 384 个内核。大多数“大数据”群集都有数千个可用的 CPU,并且比购买这样一个专为这些 SAP 使用案例构建的大型虚拟机更具成本效益。

如果您有超过 100 GB 的数据,那么您通常会在单节点系统上遇到一些问题。您可能会花费不合理的时间和/或精力来优化代码、索引或其他功能,以便在单个节点上运行作业。从这里开始,看看 Spark 或 Dask 等集群解决方案是有意义的,但需要在基础设施上进行大量投资才能有效工作。Amazon、Microsoft 和 Google 等云提供商一直致力于提供扩展这些集群解决方案的能力,同时减少终端客户管理基础架构所需的工作量。

随着我们技术能力的进步,单节点工作负载和集群工作负载之间的差异将开始逐渐消失。与 1945 年的 ENIAC 相比,这些功能将使我们明天能够实现更高的效率,就像我们今天所经历的一样。

生物信息学?计算生物学?

原文:https://towardsdatascience.com/what-is-bioinformatics-79c3e3ef8563?source=collection_archive---------43-----------------------

怎么这么热闹?

这似乎是一个直截了当的问题,但如果真的是这样,我就不会写文章了。快速谷歌搜索维基百科会呈现出以下定义,“一个跨学科领域,开发理解生物数据的方法和软件工具,特别是当数据集庞大而复杂时”。我们来解剖一下这个说法!

照片由micha ParzuchowskiUnsplash 拍摄

维基百科用来描述它的前三个词是“跨学科领域”。想出三个可能有帮助的广泛领域;生物学、计算机科学和数据科学。但是这三个领域中的学科到底是什么呢?当谈到生物学领域的应用时,当前领域包括从分子生物学、遗传学、基因组学、蛋白质组学和代谢组学到分类学、进化论、药理学、生物医学和健康科学的所有内容。这不是一个详尽的列表。说到计算机科学,有明显的像软件工程,数据库管理,信息工程,自然语言处理(NLP) ,图像处理。

在数据科学领域,所有这些都变得混乱,我们可以进行混合和匹配!不过,共同的主题是使用机器学习或任何其他类型的人工智能来根据经验回答生物学问题。例如,将遗传学与自然语言处理相结合使我们能够对遗传数据进行经验分析,从而获得其他方式无法发掘的见解和知识。当人类基因组计划在 20 年前启动时,许多人认为一旦我们能够对基因组进行测序,我们就能够治愈所有的遗传疾病。但这仅仅是开始。大自然不会就这样把它的秘密泄露给我们的,对吗?基因测序产生了大量嘈杂、杂乱和肮脏的数据集。输入 NLP。使用 NLP 的遗传分析可以容易地检测基因组的不同区域,例如重复位点、编码和非编码位点、同源区域等等。自从人类基因组计划以来,DNA 测序的成本已经大幅下降。据估计,2001 年花费了 9500 万美元对一个完整的人类基因组进行测序,相比之下,今天大约花费了 950 万美元,这要归功于下一代测序,这使得测序更加容易,从而产生了更多的数据。

由作者创建。数据收集自国家人类基因组研究所

另一个潜力巨大的领域是将神经网络与蛋白质组学和药理学结合起来。生物制药行业最近才意识到如何利用数据科学的力量进行蛋白质建模。有成千上万的有机分子可以与我们的生理和新陈代谢相互作用。然而,其中 98%并不是提高我们生活水平的理想选择。然而,这仍然给我们留下了数以千计的其他有机分子,剩下的 2%,确实可以用来治疗我们的许多疾病和病症,或者事实上,增强我们的体质。但是识别这些潜在的候选人是不可能的部分。进入神经网络。

其他更具体的使用案例包括分析高通量实验产生的大型数据集,模拟进化和系统生物学,模拟流行病学研究,如新冠肺炎的传播,设计合成细胞,基于核酸的信息存储系统,等等。

生物信息学的一个特别令人兴奋的领域是它在精确和个性化医学中的应用。医生正在越来越多地了解基因对一个人的生理和代谢的影响,更重要的是,药物如何与它们的确切表型相互作用。

使用患者的个人基因构成,并将其与成千上万其他患者的数据库进行比较,医生可以对治疗和治疗选择做出更明智的决定。一些药物对患者可能比其他药物更有效,而同样的药物对其他患者可能具有比预期效果更多的副作用。所有这些理论上都可以进行评估,因为医院可以访问成千上万具有相似基因型并接受过相似药物治疗的其他患者的数据库,以便预测当前患者体内的效果。与相关性和不确定性相比,医学科学将更加稳健、经验性和因果性。

另一个目前正在大步前进的研究领域是在放射图像上应用图像分析。几年前,像卷积神经网络(CNN) 这样的算法只用于计算机视觉。最近,CNN 已被用于对 MRI 和 fMRI 扫描等放射学报告进行分类。通过这种实现,聚类和分类算法迅速得到改进。以前,这些算法检测良性和恶性肿瘤的能力只有受过训练的放射科医生的一半。然后他们提高到和一个训练有素的放射学家一样好。现在他们甚至比训练有素的放射科医生还要优秀。当你把生物学、计算机科学和数据科学结合起来时,可能性真的是无穷无尽的。

该术语通常作为“计算生物学”的同义词使用。虽然这两者确实有很多相互重叠的地方,但是将它们区分开来的细微差别是,计算生物学稍微更多地涉及生物学中已经可用的计算工具的使用,而生物信息学稍微更多地涉及这些工具的开发,而不是它们的使用。然而,这两个学科之间的重叠掩盖了它们的差异。所以实际上来说,这并没有太大的区别。

与 20 年前相比,今天的生物实验产生了大量数据。有了像 NCBI 这样的开源数据库,来自世界不同地方的科学家可以共享他们的数据并轻松合作。我们现在已经跨越了“Excel 壁垒”。除了他们的领域知识之外,精通统计、数据和编程的生物信息学研究人员比以前更受欢迎。pandas、Numpy、matplotlib、RShiny 等工具更加有效和高效,尤其是随着机器学习的复兴。以前,生物信息学家更像是可以管理数据库和运行一些算法的计算机科学家。但是现代生物信息学家确定了研究人员应该问什么问题,如何寻找正确答案,以及如何处理这些研究产生的大量数据。这些科学家融入每一个研究团队,使他们成为创新的核心。生物学已经迎来了人工智能和大数据的时代,并由此创造了一批新的科学家;生物信息学家,或计算生物学家。

[## 下一场革命的基石——deep mind 的 AlphaFold 2

人工智能是如何解决 50 年来蛋白质折叠和建模的大挑战的

towardsdatascience.com](/the-cornerstone-to-the-next-revolution-deepminds-alphafold-2-2768f8d38326) [## 疫苗是如何制造的

理解临床试验和药物开发的图解方法

medium.com](https://medium.com/science-and-philosophy/how-a-vaccine-is-produced-4f2935e4a357)

附言:更多关于数据科学、编程以及生物学家如何在数据革命中导航的简明扼要的文章,请关注我的博客

感谢您的阅读!

机器学习中的 Boosting 是什么?

原文:https://towardsdatascience.com/what-is-boosting-in-machine-learning-2244aa196682?source=collection_archive---------13-----------------------

机器学习模型的超级英雄

提升机器学习模型简介

在本帖中,我们将看到对 Boosting 算法的简单而直观的解释:它们是什么,为什么它们如此强大,一些不同的类型,以及它们如何被训练和用于进行预测。

我们将避开所有沉重的数学负担,去寻找一个清晰、简单、但深入易懂的解释。然而,额外的材料和资源将留在文章的最后,以防你想更深入地研究这个话题。

在我们开始之前,这里有一些额外的资源,可以让你的机器学习生涯一飞冲天

*Awesome Machine Learning Resources:- For* ***learning resources*** *go to* [***How to Learn Machine Learning***](https://howtolearnmachinelearning.com/books/machine-learning-books/)*!* *- For* ***professional******resources*** *(jobs, events, skill tests) go to* [***AIgents.co 
— A career community for Data Scientists & Machine Learning Engineers***](https://aigents.co/)

[## 订阅我的专属列表!

订阅我的专属列表!获取您喜欢的所有新鲜文章<3! By signing up, you will create a Medium…

z-ai.medium.com](https://z-ai.medium.com/subscribe)

What is Boosting in Machine Learning?

传统上,构建一个机器学习应用程序包括采用一个单个学习者,如逻辑回归器、决策树、支持向量机或人工神经网络,向它提供数据,并通过这些数据教它执行某项任务。

然后 集成方法 诞生了,它涉及到使用多个学习器来单独增强其中任何一个学习器的性能。这些方法可以被描述为使用一组弱学习者(那些平均成绩仅比随机模型稍好的人)在一起的技术,以便创建一个更强的、聚合的学习者

一般来说,集成方法是通过对个体决策树的变体进行分组来构建的,我们将在后面看到。

助推模式 属于这种 合奏方式的家族。

Boosting 最初被命名为 假设 Boosting ,它的思想是对用于训练我们弱学习者团队的数据进行过滤或加权,以便每个新学习者给予更多的权重,或者只使用先前学习者分类较差的观察值进行训练。

通过这样做,我们的模型团队学会了对各种数据做出准确的预测,而不仅仅是对最普通或最容易的观察。此外,如果其中一个单独的模型非常不擅长根据某种观察结果做出预测,这也没关系,因为其他 N-1 个模型很可能会弥补这一点。

增强**不应与打包*** 混淆,后者是集成方法的另一个主要家族:在打包中,使用随机性并行训练弱学习器,而在增强中,顺序训练学习器,以便能够执行上一段中描述的数据加权/过滤任务。*

装袋与增压

正如我们从前面的图像中可以看到的,在提升模型中的可以具有不同的重要性或权重(用学习者的不同大小来表示),而在打包中的所有学习者在最终决策中具有相同的权重

此外,在 boosting 中,数据集被加权(由数据点的不同大小表示),从而被分类器 n 错误分类的观察值在模型 n + 1 的训练中被赋予更大的重要性,而在装袋中,训练样本从整个群体中随机选取

既然我们已经了解了什么是 boosting,以及它与 bagging 的不同之处,让我们来看看它为什么如此有效!

为什么助推这么有效?

总的来说,集成方法减少了我们机器学习模型的偏差和方差。如果你不知道什么是偏差和方差,不要担心,我让你看完了这篇文章。

集成方法通过消除对单个估计器的依赖来帮助提高机器学习模型的稳定性和性能**。这可以用一个装袋的例子看得很清楚:随机森林。****

随机森林顾名思义就是由一组个体 决策树 组成一个森林。这些单独的树很容易过量输入数据,尽管它们是非常简单和直观的模型,但它们不太擅长预测。

然而,如果我们使用许多树,这些问题就会消失,因为每棵树都使用不同的数据样本和不同的特征进行训练,从而产生一个整体上更强大、更稳健的模型。

对于 boosting,其工作方式与相同,但在 bagging 中,每个模型都是独立训练的,而在 boosting 中,N 个模型是顺序训练的,考虑到前一个模型的成功,并增加前一个模型误差最大的数据的权重,这使得后续模型专注于最困难的数据观察。**

此外,在加权训练样本上表现最好的的个体模型将变得更强(获得更高的权重),因此对最终预测具有更大的影响。

好吧,这听起来很可爱,但是这些模特实际上是如何训练的?

助推模型是如何训练出来的?

训练过程取决于我们使用的增强算法(Adaboost vs LigthGBM vs XGBoost…),但通常遵循以下模式:

  1. 所有数据样本都以相同的权重开始。这些样本用于训练一个单独的模型(比如一个决策树)。
  2. 计算每个样本的预测误差,增加具有较大误差的那些样本的权重,以使它们对后续个体模型的训练更重要。
  3. 根据这个个体模型在预测上的表现,它被赋予一个重要性/权重或发言权。一个输出非常好的预测的模型将在最终决策中有很大的发言权。
  4. 加权数据传递给后验模型,重复和 2)和 3)。
  5. 编号 4)被重复,直到我们已经达到一定数量的模型,或者直到误差低于一定阈值。

训练助推模型

在某些情况下,boosting 模型使用针对每个学习者的特定固定权重(称为学习率)进行训练,而不是给每个样本一个单独的权重,模型被训练为试图预测样本的先前预测和目标变量的真实值之间的差异。这种差异就是我们所说的。**

稍后,当我们看到不同种类的助推模型时,我们将更多地讨论这一点,然而,家庭的主要特征仍然存在:对许多个体学习者进行顺序训练,以创建更强大的聚合模型。****

厉害!现在我们知道了如何训练 Boosting 模型,让我们看看如何使用它们对新数据进行预测。

增压模型如何进行预测?

助推模型根据新数据做出预测的方式非常简单。当我们获得一个具有其特征的新观察结果时,它会通过每个单独的模型,让每个模型做出自己的预测

然后,考虑到这些模型中每一个的权重,所有这些预测被缩放和组合,并给出最终的全局预测。

使用助推模型进行预测

最后,让我们探索一下最常见的增压模型的特征。****

不同的增压模式

***AdaBoost***的简称, AdaBoost 通过前面描述的顺序训练、预测和更新误分类样本和相应弱模型的权重的精确过程来工作。

它主要与 决策树树桩 一起使用:只有一个根节点和两个叶节点的决策树,其中只评估数据的一个特征。正如我们所见,通过仅考虑我们数据的一个特征来进行预测,每个树桩都是一个非常非常弱的模型。然而,通过组合它们中的许多,可以建立非常鲁棒和精确的集合模型。

如果你想了解更多关于 AdaBoost 的信息,可以看看下面 StatQuest 制作的 视频。

与 AdaBoost 非常相似, 梯度提升机器 依次训练弱学习器,添加越来越多的估计器,但是不是调整数据的权重,而是试图预测先前估计器产生的残差。****

因此,我们不再有样本权重,所有弱模型都有相同的发言权或重要性。同样,大多数时候,决策树被用作基础预测器,然而,它们不是树桩,而是更大的固定大小的树。GBM 使用一个学习率,并朝着更好的结果迈出一小步,在概念上类似于梯度下降法。

同样,如果你想深入了解,可以查看 StatQuest 的视频。

极端梯度提升 的缩写,就像在梯度提升中一样,我们使我们的树适合先前树预测的残差,然而,XGBoost 没有使用传统的、固定大小的决策树,而是使用一种不同的树: XGBoost 树 我们可以称它们为。

它通过计算结束于 leave 节点的观察值之间的相似性得分来构建这些树。此外,XGBoost 允许正则化,减少我们的单个树和整个集合模型可能的过度拟合。****

最后, XGBoost 被优化以推动提升树算法的计算资源的极限,使其在时间和计算方面成为非常高性能快速的算法

可以看下面的视频 XGBoost Part 1:回归 ,更深入的了解 XGBoost 到底是怎么回事。

光梯度推进机、简称 LigthGBM 、是梯度推进算法改进的又一个转机。它没有像 XGBoost 中那样对决策树使用逐层增长策略,而是使用逐叶增长策略 y,这使它有机会比其他基于树的算法实现更高的每跳错误减少率。此外,与 XGBoost 相比,LigthGBM 通常更快,特别是在大型数据集上。

你可以在它的 官方 docu 页面了解更多。

** [## 订阅我的专属列表!

订阅我的专属列表!获得所有你喜欢的新鲜文章<3! By signing up, you will create a Medium…

z-ai.medium.com](https://z-ai.medium.com/subscribe)

Conclusion and additional Resources

That is it! As always, I hope you享受帖子,我设法帮助你理解什么是助推,它是如何工作的,以及为什么它如此强大。

如果您想了解有关该主题的更多信息,您可以在这里找到一些附加资源:

如果你喜欢这篇文章,请随时在@jaimezorno 上关注我。还有,你可以看看我其他关于数据科学和机器学习的帖子 这里 。好好读!

如果你想了解更多关于机器学习和人工智能的知识 关注我上媒 ,敬请关注我的下期帖子!另外,你可以查看 这个资源库 来获得更多关于机器学习和人工智能的资源!

  • 封面图片来自
  • 所有其他图像都是自己制作的。**

什么是机器学习中的 Bootstrap 采样,为什么它很重要?

原文:https://towardsdatascience.com/what-is-bootstrap-sampling-in-machine-learning-and-why-is-it-important-a5bb90cbd89a?source=collection_archive---------5-----------------------

揭开基本机器学习概念的神秘面纱

作者创建的图像

如果你喜欢这个,请查看我的免费数据科学资源,每周都有新的资料!

Bootstrap 采样方法是一个非常简单的概念,是 AdaBoost 和 XGBoost 等一些更高级的机器学习算法的构建模块。然而,当我开始我的数据科学之旅时,我不太明白它的意义。所以我的目标是解释什么是 bootstrap 方法,以及为什么知道它很重要!

什么是 Bootstrap 抽样方法?

从技术上讲,bootstrap 抽样法是一种使用带替换的随机抽样的重抽样方法。

如果这听起来令人困惑,请不要担心,让我用图表来解释一下:

假设你有一个有 3 个观察值的初始样本。使用 bootstrap 抽样方法,您也将创建一个包含 3 个观察值的新样本。每个观察都有均等的机会被选中(1/3)。在这种情况下,第二个观察值是随机选择的,将是我们新样本中的第一个观察值。

在随机选择了另一个观察点后,你选择了绿色的观察点。

最后,再次随机选择黄色观察值。记住,自举采样使用随机采样与替换。这意味着已经选择的观察结果很有可能再次被选择。

而这就是 bootstrap 抽样的精髓!

自助抽样的重要性

很好,现在你明白什么是 bootstrap 抽样了,你也知道这个概念有多简单,但是现在你可能想知道是什么让它如此有用。

1.它是许多现代机器学习算法的基础

随着你对机器学习了解的越来越多,你几乎肯定会遇到术语“ bootstrap aggregating ”,也称为“ bagging ”。Bagging 是许多 ensemble 机器学习算法中使用的一种技术,如 random forests、AdaBoost、gradient boost 和 XGBoost。

查看我关于集成学习、打包和提升的文章。

2.它可以用来估计总体的参数

有时,在估计总体参数(即平均值、标准误差)时,您可能有一个样本不足以假设抽样分布为正态分布。此外,在某些情况下,可能很难计算出估计的标准误差。在这两种情况下,bootstrap 抽样都可以用来解决这些问题。

本质上,在样本代表总体的假设下,进行自助抽样是为了提供有关样本统计量的抽样分布的估计。

这一点统计的比较多一点,如果不了解,也不用担心。你必须明白的是,bootstrap 采样是“bagging”的基础,这是许多机器学习模型使用的一种技术。

感谢阅读!

如果你想学习更多的机器学习基础知识,并了解我的最新内容,你可以在这里

如果你想继续学习,请点击这里查看我的关于整体学习、打包和提升的文章。

特伦斯·申

什么是计算?

原文:https://towardsdatascience.com/what-is-computation-9ef6f067df33?source=collection_archive---------40-----------------------

6.000.1x notes 系列

计算、知识、原语、语言、语义和 Python 基础。

Julian Hochgesang 在 Unsplash 上拍摄的照片

本系列基于课程 6.0001 计算机科学与编程导论 。本系列之后的所有文章都是我个人的课堂笔记。

电脑是做什么的?

在我们的日常生活中,电脑起着举足轻重的作用。随着计算机逐渐改进并转化为更快更好的版本,复杂性和结构不断增加,它们所做的事情可以分解为两件简单的事情。即(1) 执行计算和(2) 存储结果。

计算机每秒执行的数十亿次计算有两种类型,一种是内置于语言中的(1) 另一种是你定义为程序员的(2)(编写的程序)。基本上,计算机只知道你让它们做什么,没有软件工程师和编写漂亮代码的程序员的帮助,计算机只是一堆机器(有自我意识的 AI 除外)。**

知识的类型

在编程世界中有两种类型的知识,那就是(1) 陈述性知识和(2) 命令性知识。

1。陈述性知识

  • 事实陈述
  • 关心什么
  • ie Macbooks 是学生最好的笔记本电脑

2。必备知识

  • 一份食谱或操作指南
  • 关心如何
  • 要发送电子邮件>首先前往 gmail.com >然后选择撰写>键入收件人>编写电子邮件>发送

这两种类型的知识作为编程模型的指南——面向对象编程 (OOP) 和函数式编程,其中 OOP 遵循命令式模型,函数式与声明式编程紧密相连。因为这是一门入门课程,所以这里不做介绍,但是你可以从 Eric Elliott文章Richard Kenneth Eng文章中了解更多。

方法

类似于烘焙蛋糕或烹饪一顿饭的食谱,计算机遵循一个食谱,这是一个步骤的序列,它有一个控制流程,指定这些步骤中的每一个步骤何时执行,以及一种确定何时停止的方法。

在 Python 中,配方的例子是控制流if-elif-else,其中有确定执行哪个代码的条件,以及停止命令的breakcontinue语句。

电脑是机器

电脑有两种,(1)固定电脑,(2)存储电脑。**

1。固定电脑

  • 根据预编程功能执行任务的固定机器。
  • 简单的计算器

2。 储存电脑

  • 存储了一系列指令(由一组预定义的原始指令构建)和一个按顺序执行每条指令的解释程序的机器。
  • 例句:今天的电脑

换句话说,固定计算机被硬连线以执行特定的操作,而存储计算机具有存储在计算机存储器中的一组预定义的原始指令,这允许它使用解释器按顺序执行各种任务。

基本原语

艾伦·图灵,数学家,计算机科学的先驱,因图灵测试秀而闻名,该测试展示了 6 个基本原语:

  1. :移动机头到当前方块的右边
  2. 左侧:将机头移动到当前方块的左侧
  3. 打印:在当前方格上打印一个符号
  4. 扫描:识别当前方块上的任何符号
  5. 擦除:擦除当前方块上出现的任何符号
  6. 停止:什么都不做

这个想法是,这 6 个原语可以编程基本上任何东西。

今天的现代编程语言遵循一组更方便的原语,您可以抽象方法来创建新的原语。

创建食谱

一门编程语言提供了一组原语操作,如数学运算(***+)、逻辑运算(ANDOR)和赋值运算(=)。通过组合运算、常数和变量,你可以形成一个表达式。这些表达式和计算在编程中有和意义。有了运算和表达式,就可以形成一个语句。

表情 vs 语句

  • 表达式代表某些东西并被评估,产生一个单一的值
  • 语句做一些事情并被执行,从而产生一个动作

语言方面

就像英语一样,编程语言也有语法规则。

我们将基于以下方面对比英语和编程语言

(1)原始构造

(2)语法(语法上无效的✘与有效的\1000)

(3)静态语义(静态语义错误✘,但语法有效)

英文

  1. “狗猫人”(✘) |“狗抱人”()
  2. “我累了”(✘)——有意义,但语义错误(语法)

编程语言

  1. 数字、变量、字符串、运算符
  2. “hi”5 (✘) | 3.14*7(
  3. 3+"hi" (✘) —语义错误(TypeError)

语义学

语义基本上是关于没有语义错误的语法正确的符号串的含义。例如,在英语中,短语“这是生病的”可能意味着厌恶或惊讶,这就是语义,一个短语可以有多种含义。

这如何应用于编程语言是当编程时,一个人可能编写语法正确但语义错误的代码,这导致错误,并且在某些情况下,产生不是程序员的意图的结果。

语法错误很常见,也很容易被发现,而静态语义错误会导致不可预测的行为(无限程序、崩溃等)。),因此程序员应该小心语义规则,确保他们的代码在语法和语义上都是正确的。

Python 程序

程序被定义为一系列定义命令

  • 评估定义(表达式)
  • 命令被执行(语句)

命令基本上指示解释器做一些事情,一个例子是print语句

目标

  • 我们编写程序来操作数据对象,数据对象是程序的组成部分
  • 每个对象都有一个特定的类型,定义了程序可以对它们做什么,
  • 对象有标量(整数、浮点数)和非标量(字符串)

标量对象

  1. Int —整数
  2. 浮点数—实数
  3. 布尔— TrueFalse
  4. 无类型— None

使用type()来确定对象的类型

类型转换

使用将对象转换为另一种类型

  • float() —将整数转换为浮点数
  • int() —将浮点转换为整数

公式

  • 把对象和操作符结合起来,你就得到一个表达式。每个表达式都有一个值,这个值有一个类型。
  • 简单表达式的语法是<object> <operator> <object>
  • 例如:X + Y

经营者

  • i+j —总和
  • i-j —区别
  • i*j —产品
  • i/j —分部
  • i%j—I 除以 j 时的余数
  • i**j —我对 j 的权力

() 和 math 一样,用来告诉 Python 先执行哪些操作,符号***/有运算符优先级。

绑定变量和值

在 Python 中,= 符号是给变量赋值

x(变量)= 5(值)

要检索该值,通过键入 X 调用变量名,将输出 5。

更改绑定

在编程中,可以使用新的赋值语句重新分配变量。比如你写了x=7,你想让 x 是 10,就写x=10 again,重新绑定到 10。

抽象表达式

在编程中,给表达式的值命名是一个好习惯,比如赋值

  • 重量= 50
  • 高度= 100

然后,当您想要再次重用这些值时,您可以:

  • BMI = weight / height**2

编程 vs 数学

在数学中,我们总是求解 x,并将运算从一边转移到另一边,最终得到一个 x 值。但是,在编程中,等号仅用于给变量赋值。

这是我第一课的全部笔记。我希望这篇文章对你有所帮助。

摘要

安德斯·吉尔登在 Unsplash拍摄的照片

计算机科学是一个令人着迷的研究课题,因为你可以了解计算机是如何逐渐发展成越来越小的体系结构,现在正好可以装进我们的口袋。你还可以学习如何自己编写程序,这是一项至关重要的技能,这样你就不仅仅是技术的被动消费者,还是技术的主动使用者和控制者。

随着我们现在过渡到人工智能时代,我认为计算机科学的知识和说话的技能一样重要。如果我们没有掌握编程的技能,我们将会被这个庞大的新时代抛在后面。

计算机科学也是一个通过与其他领域(语言学、数学、生物学等)的结合而发展的领域。随着自动驾驶汽车、Neuralink 脑机接口、太空探索、CRISPR 等生物技术和基因编辑等新技术的出现,人工智能和机器学习领域将发挥巨大作用,要深入这些领域,首先必须掌握计算机科学的基础知识。

如果您对学习数据科学感兴趣,请查看“超学习”数据科学系列!

* [## 如何“超级学习”数据科学—第 1 部分

这是一个简短的指南,基于《超学习》一书,应用于数据科学

medium.com](https://medium.com/better-programming/how-to-ultralearn-data-science-part-1-92e143b7257b)

查看其他文章,了解更多关于数据科学的知识。

[## 互联网上 20 大免费数据科学、ML 和 AI MOOCs

以下是关于数据科学、机器学习、深度学习和人工智能的最佳在线课程列表

towardsdatascience.com](/top-20-free-data-science-ml-and-ai-moocs-on-the-internet-4036bd0aac12) [## 机器学习和数据科学的 20 大网站

这里是我列出的最好的 ML 和数据科学网站,可以提供有价值的资源和新闻。

medium.com](https://medium.com/swlh/top-20-websites-for-machine-learning-and-data-science-d0b113130068) [## 开始数据科学之旅的最佳书籍

这是你从头开始学习数据科学应该读的书。

towardsdatascience.com](/the-best-book-to-start-your-data-science-journey-f457b0994160) [## 数据科学 20 大播客

面向数据爱好者的最佳数据科学播客列表。

towardsdatascience.com](/top-20-podcasts-for-data-science-83dc9e07448e) [## 2020 年你应该订阅的 25 大数据科学 YouTube 频道

这里是你应该关注的学习编程、机器学习和人工智能、数学和数据的最佳 YouTubers

towardsdatascience.com](/top-20-youtube-channels-for-data-science-in-2020-2ef4fb0d3d5)

联系人

如果你想了解我的最新文章,请通过媒体关注我。

也关注我的其他社交资料!

请关注我的下一篇文章,记得保持安全!*

什么是相关性?

原文:https://towardsdatascience.com/what-is-correlation-975ea899aaed?source=collection_archive---------11-----------------------

不是因果关系。

实验让你说因果。没有它们,你所拥有的只是相关性。什么是相关性?

这不是因果关系。(!!!!!)

当然,你可能已经听到我们统计学家对你大喊大叫了。但是什么是关联呢?当一个数据集中的变量看起来像以某种方式一起移动时。

如果两个变量 X 和 Y 以某种方式一起运动,那么它们就是相关的。

比如“X 较高时,Y 趋向于(这叫正相关)或者“X 较高时,Y 趋向于 *(这叫 相关)。*****

谢谢维基百科。

如果你正在寻找(人口)相关性的公式,你的朋友维基百科有你需要的一切。但是如果你想要的话,为什么不直接去呢?你为什么在这里?啊,你想要直观的解释?酷毙了。这里有一座小山:

在左边,身高和(从左到右)距离是正相关的。当一个上升时,另一个也上升。右边,身高和距离是负相关的。

当大多数人听到相关性这个词时,他们往往会想到完美的 线性相关性 :在上面的小山上向右水平移动一步(X),在同一斜坡上的任何地方都会得到相同的高度变化(Y)。只要你从左到右向上(正相关),就不会有奇怪的锯齿/弯曲位。

记住向上是积极的只有当你从左向右走的时候,就像你读英语一样。如果你从右边接近山丘,统计学家不知道该拿你怎么办。我想统计学家试图告诉你的是永远不要从右边加息。那只会让我们困惑。

但是如果你适当地徒步旅行,那么“向上”是“积极的”

不完全线性相关

现实中这个山头并不完美,所以高度和距离的相关量级会小于 100%。(根据我们是上涨还是下跌,你会在前面弹出一个+/-符号,所以相关性在-1 和 1 之间。那是因为它的公式,从上面的维基百科粘贴过来, 除以标准差 ,从而 去掉了每个变量的离差的大小 。如果没有这个分母,无论你用英寸还是厘米来测量身高,你都很难看出这种关系的强度是一样的。每当你在统计中看到 缩放/标准化 时,它通常会帮助你比较用不同单位测量的苹果和橘子。)

不相关变量

零相关看起来像什么?你想到的是一团内部没有可辨别图案的乱云吗?类似于:

当然,那行得通。你知道我怎么知道 X 和 Y 真的没有任何关系吗?因为我创造了他们。如果你想模拟两个不相关变量的相似曲线,试着在 R online 中运行这个基本代码片段:

**X <- runif(100) # 100 regular random numbers between 0 and 1
Y <- rnorm(100) # Another 100 random numbers from bell curve
plot(X, Y, main = "X and Y have nothing to do with one another")**

但是还有另一种方法。关系越不线性,你的相关性就越接近于零。事实上,如果你把这座山作为一个整体来看(不仅仅是一次一个坡度),你会发现一个零相关,即使高度和距离之间有一个明确的关系(咄,这是一座山)。

**X <- seq(-1, 1, 0.01) # Go from -1 to 1 in increments of 0.01
Y <- -X^2 # Secret formula for the ideal hill
plot(X, Y, main = "The linear correlation is zero")
print(cor(X, Y)) # Check the correlation is zero**

相关性不是因果关系

线性相关的存在意味着数据以某种线性方式一起移动。并不意味着 X 导致 Y(或者反过来)。他们可能都在移动,完全是因为别的原因。

想要证据吗?想象一下你和我投资了同一支股票。姑且称之为 Zoom 吧,因为我觉得很搞笑的是,疫情投资者本打算收购 ZM(视频通讯公司),却意外地买了 ZOOM(中国小盘股),导致错误的 ZOOM 价格上涨了 900%,而真正的 ZM 甚至没有翻倍。拭去欢笑与泪水** 无论如何——为了纪念这部喜剧——想象一下你和我在 ZOOM 上投资了一小笔钱。**

因为我们都持有 ZOOM,所以你的股票投资组合价值(X)与我的股票投资组合价值(Y)相关。如果变焦上升,我们都获利。这并不意味着我的投资组合的价值导致你的投资组合的价值。我不能以惩罚你的方式抛售我所有的股票——如果我的投资组合价值突然变为零,因为我卖掉了所有的东西去买一堆纸杯蛋糕,这并不意味着你的现在一文不值。

正是因为这个原因,许多决策者一败涂地。看到两个相关的变量,他们投入资源影响事物 1,试图推动事物 2…结果并不是他们所期望的。没有实验,他们没有理由首先假设事物 1 驱动事物 2。

相关性不是因果关系。

可爱的术语“”指的是两个相关变量之间没有直接因果关系的情况。它们的相关性可能是由于巧合,也可能是由于第三个变量(通常是看不见的,也称为“潜在的”)的影响。永远不要从表面上看相关性——在数据中,事情往往不像它们看起来的那样。

为了寻找虚假相关性的乐趣,请访问这个主要例子的网站

总结一下,要说前因后果,需要一个(实!)实验。没有实验,你所拥有的只是相关性,对于许多基于因果推理的决策来说,这是没有帮助的。

P.S .什么是回归?

它是把线穿过东西。把它想成,“哦,嘿!这些事情是相关的,所以让我们用一个来预测另一个…”**

什么是回归?它是把线穿过东西。我来告诉你一切。

感谢阅读!一整个 AI 课程怎么样?

如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的完整的应用人工智能课程,这里有一个我为你制作的娱乐课程:

在这里欣赏整个课程播放列表:bit.ly/machinefriend

与凯西·科兹尔科夫联系

让我们做朋友吧!你可以在 TwitterYouTubeSubstackLinkedIn 上找到我。有兴趣让我在你的活动上发言吗?用这个表格联系。

什么是交叉熵?

原文:https://towardsdatascience.com/what-is-cross-entropy-3bdb04c13616?source=collection_archive---------2-----------------------

交叉熵的简要说明:什么是交叉熵,它是如何工作的,以及示例代码

ImgFlip 生成的图像

交叉熵是分类问题中常用的损失函数。

几周前,我做了一个相当重大的决定。夜深了,我躺在床上想着一天是怎么过的。因为我一直是一个分析自己选择的人,所以我问了自己两个非常重要的问题。

  1. 我应该在睡觉前停止吃薯条吗?它们相当不健康…
  2. 我是否按照自己想要的方式度过时间?

在考虑了这些想法之后,我意识到这两个问题的答案都是否定的。不,我不应该在睡觉前停止吃薯条。不,我没有用我想要的方式度过我的时间。因此,几周前,我决定尽我所能学习关于深度学习这一新兴领域的一切。我还选择写下我所学到的一切(所以如果你对旅程感兴趣,一定要跟随我)。这些文章的灵感来自 Udacity 的一门课程,名为用 PyTorch 进行深度学习。我强烈建议你去看看。

如果你是从我的上一篇文章来到这里的,你已经知道我们正在努力寻找数据分类的最佳方法。为了对数据进行最佳分类,我们希望最大化模型的概率,最小化其误差函数。这两件事是反向相关的。交叉熵基于概率和误差来衡量分类模型的性能,其中某个事物的可能性越大,交叉熵就越低。让我们更深入地研究这个问题。

交叉熵 101

交叉熵是一个损失函数,可以用来量化两个概率分布之间的差异。这可以通过一个例子得到最好的解释。

假设,我们有两个模型,A 和 B,我们想找出哪个模型更好,

作者图片

注意:数据点附近的数字代表该点是该颜色的概率。例如,模型 A 中图形顶部的蓝点是蓝色的概率是 0.4。

凭直觉,我们知道模型 B 更好,因为红点在红色分布上,蓝点在蓝色分布上。但是我们如何让一个模型预测这个呢?

一种方法是将模型 A 中每个点的概率相乘。这将给出模型的总概率,正如我们从概率中的一般乘法法则所知。我们可以对模型 B 做类似的事情,

作者图片

从上图可以看出,最有可能的模型是模型 B,因为概率更高。太酷了!我们可以用概率来找出哪个模型更好。

除了……这个模型有些问题。正如你可能已经猜到的,如果我们有许多数据点,这将导致结果概率非常小。此外,如果我们改变了一个数据点,那么结果概率就会发生巨大变化。

简而言之,使用产品并不是最好的主意。那么我们该如何解决这个问题呢?一种方法是用求和来代替。如果您记得您的日志规则,有一种方法可以将乘积与总和联系起来,

作者图片

让我们把这个规则应用到我们的概率上,

作者图片

现在,这几乎看起来不错,但让我们通过使对数为负值来消除负值,让我们也计算一下总数。

作者图片

对概率使用负对数就是所谓的交叉熵,其中高数值意味着坏模型,低数值意味着好模型。

当我们计算每个数据点的对数时,我们实际上得到每个点的误差函数。例如,模型 A 中点 0.2 的误差函数为-ln(0.2),等于 1.61。请注意,被错误分类的点具有较大的值,因此具有较大的误差。

所以让我们多理解一点交叉熵。交叉熵真正想说的是,如果你有事件和概率,基于概率事件发生的可能性有多大?如果可能性很大,我们就有一个小的交叉熵,如果可能性不大,我们就有一个大的交叉熵。我们将在一个例子后看到更多

例如,如果我们假设三扇门后有一份礼物,我们有一张如下所示的桌子,

作者图片

注意:有更多的可能性

这里我们可以看到,如果交叉熵很大,那么事件发生的概率就很低,反之亦然。

让我们更深入地看看这个例子。假设,我们取第一种情况,门 1 是 p(gift) = 0.8,门 2 是 p(gift) =0.7,门 3 是 p(gift)=0.1,

作者图片

请注意,我们将第三扇门描述为 1-p,这意味着 1 减去有礼物的概率。这样会给我们没有礼物的概率。另外,注意 y 描述了门后有多少礼物。

所以交叉熵可以用下面的公式来描述,

作者图片

注意:这是描述负对数的另一种方式。

这个公式计算了上述情况的熵。它计算负对数,也就是交叉熵。

这个函数的有用之处在于它也可以写成这种形式,

作者图片

注意:这个公式只针对二元交叉熵。如果你对多类交叉熵感兴趣,看看这个视频吧!

该函数允许两个函数,p(x)和 q(x)。我们可以把 p(x)描述为期望概率,q(x)描述为实际概率。

因此,交叉熵公式描述了预测分布与真实分布的接近程度。

结论

总的来说,正如我们所看到的,交叉熵只是一种度量模型概率的方法。交叉熵是有用的,因为它可以描述模型的可能性以及每个数据点的误差函数。它还可以用来描述与真实结果相比的预测结果。所以希望你开始看到这是多么强大!

一些代码

让我们看看如何用 python 来编写代码!

import numpy as np# This function takes as input two lists Y, P,
# and returns the float corresponding to their cross-entropy.def cross_entropy(Y, P):
    Y = np.float_(Y)
    P = np.float_(P)
    return -np.sum(Y * np.log(P) + (1 - Y) * np.log(1 - P))

这段代码直接取自 Udacity 课程, 深度学习用 PyTorch。

这个简单的代码接受两个输入并返回交叉熵。

关键要点

什么是交叉熵?
交叉熵是一个损失函数,用于量化两个概率分布之间的差异。

Week✨的 DL 视频

这个人工智能可以把你的脸变成迪斯尼人物!

额外资源/引用

这是一个关于交叉熵的很好的形式。

关于交叉熵的完美的备忘单

你能在哪里找到我😝

我的 LinkedIn!请随时与我联系,我喜欢谈论人工智能!

关注我的中页了解更多

什么是交叉验证?

原文:https://towardsdatascience.com/what-is-cross-validation-622d5a962231?source=collection_archive---------20-----------------------

此外,什么是 LOOCV 和 k 倍交叉验证技术?

Ashkan Forouzani 在 Unsplash 上的照片

现代统计学和机器学习最重要的一个方面是 重采样,这是从训练集中重复抽取样本(子集)并在每个样本上重新调整特定模型的过程,以便获得拟合的可变性等信息。

我们使用重采样的原因之一是,我们可以分析模型在同一数据集的许多样本上拟合的结果。这使我们能够获得一些额外的知识,而这些知识是通过仅仅一次拟合模型所不能获得的。使用这种方法的另一个原因是通过多次迭代来评估测试误差,以便更好地判断模型性能。

一种这样的重采样方法是 交叉验证。

交叉验证

通常用于在几个数据训练样本上拟合机器学习模型时分析测试误差(模型评估)。然后,它进一步帮助我们根据模型的复杂性选择合适的模型(模型选择)。

如果我们在训练完一个模型后就有现成的测试数据,事情会简单得多。然而,这在现实世界中很难实现。因此,数据科学家使用重采样技术从原始数据集制作他们自己的测试数据。

这样做的一种方式是通过从拟合过程中获得训练数据的一部分或子集,然后根据获得的数据估计模型的性能。这种方法被称为验证集方法。

在该方法中,原始数据集被随机分为训练集和验证集(保留集)。该模型适用于训练集,然后用于预测验证集的结果。最终的评估是在验证集上完成的,在这种情况下,它就像一个测试数据集。

观察值分为训练集和验证集。图片由 Sangeet Aggarwal 提供

上图描述了如何将观察分为训练集和验证集的示例。验证集是随机抽取的,其大小取决于用户的选择。例如,我可以将验证集选择为原始集的 40%,或者任何其他分数或百分比值。选择时通常要考虑要分割的数据的大小。

在实践中,可能需要迭代地(重复地)进行这种划分,以便在不同的样本上拟合相同的模型,并在不同的验证集上对其进行评估。然而,减少训练集的大小并不总是可取的,因为已知当在更少的观察值上训练时,统计方法表现更差。这需要一种特殊类型的交叉验证技术→ 留一交叉验证(LOOCV)

留一法交叉验证(LOOCV)

LOOCV 是交叉验证的例子,其中只有一个观察结果被提出来验证。

留一交叉验证。绿色:原始数据。紫色:训练集。橙色:单一验证点。图片由 Sangeet Aggarwal

对每个保留的观察值评估模型。然后,通过取所有单个评估的平均值来计算最终结果。

这种技术解决了使用小训练集的缺点,如在一般验证集方法中所见,因为模型适合于几乎所有的训练样本(n-1 个观察)。然而,LOOCV 有两个问题。

  1. 使用 LOOCV 在计算上可能是昂贵的,尤其是如果数据量很大,并且如果模型仅需要花费大量时间来完成一次学习。这是因为我们在整个训练集上迭代拟合模型。
  2. LOOCV 的另一个问题是,它可能会受到高方差或过度拟合的影响,因为我们向模型提供了几乎所有要学习的训练数据,而只提供了一个要评估的观察值。

这些问题可以通过使用另一种被称为 k-Fold 交叉验证的验证技术来解决。

k 倍交叉验证

这种方法包括将数据随机分成 k 个大致相等的折叠或组。然后,这些折叠中的每一个都被视为 k 次不同迭代中的验证集。

假设 k 的值是 5,那么 k 倍 CV 可以形象化如下。

k=5 的 k 倍交叉验证。图片由 Sangeet Aggarwal 提供

如图所示,选择 5 个折叠或组作为验证集,而其余数据用于训练模型。

这种方法解决了 LOOCV 的缺点,因为它只需要第k-**部分数据进行验证,从而允许模型在大量观察值上进行训练。与 LOOCV 相比,它还减少了计算开销,因为迭代次数现在从 n (其中 k < < n)减少到 k

LOOCV 是 k 倍交叉验证的一个特例,其中 k 等于数据的大小(n)。

在 LOOCV 上使用 k 倍交叉验证是偏差-方差权衡的一个例子。它减少了 LOOCV 显示的方差,并通过提供一个相当大的验证集引入了一些偏差。

这个帖子到此为止。我希望你在学习交叉验证的过程中过得愉快。欲知详情,敬请关注。

什么是数据分析?

原文:https://towardsdatascience.com/what-is-data-analysis-7bb27b5f0d4d?source=collection_archive---------45-----------------------

实际上并没有那么复杂。

阿伦·范·德·波尔在 Unsplash 上的照片

D ISCLAIMER:绝对主观的观点,官方定义请查阅词汇表或维基百科。拜托,你不会为了得到定义而阅读整篇文章。

我们每天、每小时、每分钟都在分析数据。我们的大脑使用我们的五种感官,读取输入,处理它并得出一些结论。例如,你睡觉,闹钟开始响,我们的大脑用耳朵接收数据,外面发生了一些事情,这是不正常的,所以你醒来,检查是否有任何“危险”,如果你没有任何重要的约会,你推迟闹钟:d。

我认为数据分析分为四个步骤:

  1. 定义问题
  2. 收集数据
  3. 处理数据
  4. 做出结论

例如,很多人问我:“我怎样才能成为数据分析师?你能帮忙吗?”。所以这里我们有一个问题。我们处于第一步。一个人想成为数据分析师,不知道怎么做。

第二步是收集数据。一个人开始寻找能够在专业水平上进行数据分析的需求,所有的“是什么”、“什么时候”和“为什么”。这个人可以使用谷歌来收集这些数据点,询问其他人,该领域更有经验的专业人士,检查教育计划,或者询问职业教练,如果他们公司有这样的人。

一旦收集了数据,我们进入第 3 步,我们开始处理这些数据,并结合我们的现实,试验不同的变量和环境,适用于这个人的具体情况。比如你在一家公司工作,想换个专业。你谷歌了很多,你查了不同的教育途径,你和你的职业教练谈过,你有数据,你明白要成为一名数据分析师,你必须学习新的技能。现在你必须把这些数据和你现有的数据结合起来。如果你在一家公司工作,这意味着你每天至少要在办公室呆 8 个小时,你花 30 分钟去办公室(不适用于 2020 年 XD),你也已经知道一些用于数据分析的工具,但你家里没有互联网连接,你很难独自学习等等。

你处理这些信息并得出结论,对你来说最好的是找一个为你所在城市的群体开设的学前课程。

现在你有了一个新问题——如何找到一个现成的数据分析课程。数据分析的过程一次又一次地重复。

实际上,最初的问题也来自数据分析周期:一个人意识到成为数据分析师很棒(问题,步骤 1),检查他们的知识(收集数据,或者在这种情况下,没有数据,步骤 2),意识到这个人目前没有正确的知识(处理数据,步骤 3),并得出结论,首先这个人必须填补信息空白(步骤 4)。新问题——“如何成为一名数据分析师”。所有这一切都发生在短短几秒钟内,但这就是它在更大范围内的工作方式。完全一样的方式。你有一个问题,你收集数据,你处理它,并根据数据得出结论。

数据的选择、各种偏差、不确定性、悖论等。与这一过程密切相关,但这不是今天文章的主题。我们拥有的数据越多,我们拥有的数据越多样化,我们知道的工具越多,领域知识越多——我们就能做出更好、更理性的决策。数据世界既复杂又简单,就像整个世界一样。

明智地分析你的数据,祝你有美好的一天!干杯!

原载于 2020 年 7 月 10 日【https://sergilehkyi.com】

什么是数据可观测性?

原文:https://towardsdatascience.com/what-is-data-observability-40b337971e3e?source=collection_archive---------7-----------------------

提示:这不仅仅是 DevOps 的数据。

图片由happy _ contributors提供

可观察性不再仅仅是软件工程的专利。随着数据停机时间的增加和数据堆栈的日益复杂,可观察性也成为数据团队的一个关键问题。

开发运营(亲切地称为 DevOps)团队已经成为大多数工程组织不可或缺的组成部分。DevOps 团队消除了软件开发人员和 IT 之间的孤岛,促进了软件无缝可靠地发布到生产环境中。

随着组织的发展,支持它们的底层技术体系变得越来越复杂(想想:从整体架构转向微服务架构),DevOps 团队保持对其系统健康状况的持续关注是非常重要的。

作为整个行业向分布式系统转变的结果,可观测性工程已经成为一门快速发展的工程学科。在其核心,可观测性工程被分解成三大支柱:

  • ****指标是指一段时间内测量的数据的数字表示。
  • ****日志,在给定时间戳发生的事件的记录,也提供关于特定事件何时发生的有价值的上下文。
  • ****痕迹表示分布式环境中因果相关的事件。

(关于这些更详细的描述,我强烈推荐阅读 Cindy Sridharan 的标志性帖子,监控和可观察性)。

总的来说,这三个支柱为 DevOps 团队提供了有价值的洞察力来预测未来的行为,反过来,信任他们的系统来满足 SLA。抽象到你的底线,可靠的软件意味着可靠的产品,这导致了快乐的用户。

然而,即使有最好的可观察性解决方案,如果您的数据不可靠,再多花哨的工具或工程术语也无法让客户满意。

数据停机时间的增加

作为 Gainsight 的客户成功运营副总裁,我负责领导一个团队,为我们的首席执行官编写每周报告,概述客户数据和分析。一次又一次,我们提交了一份报告,几分钟后才被告知我们的数据有问题。不管我们的管道有多强大,也不管我们检查 SQL 多少次:我们的数据就是不可靠。

不幸的是,这个问题并不是 Gainsight 独有的。在与 100 多位数据领导者谈论他们最大的痛点后,我了解到 数据宕机 高居榜首。随着数据系统变得越来越复杂,数据停机时间(数据不完整、错误、丢失或不准确的时间段)只会成倍增加,从而支持无止境的源和消费者生态系统。

对于数据工程师和开发人员来说,数据宕机意味着时间和资源的浪费;对于数据消费者来说,这会削弱他们对决策的信心。和我一样,我交谈过的领导不能相信他们的数据,这是一个严重的问题。

简介:数据可观察性

团队经常临时处理数据质量和沿袭问题,而不是制定一个整体的方法来解决数据停机问题。就像 DevOps 将可观察性应用于软件一样,我认为现在是我们利用同样的数据勤奋的时候了。

数据可观察性 ,组织全面了解其系统中数据运行状况的能力,通过将 DevOps 可观察性的最佳实践应用于数据管道来消除数据停机。与 DevOps 类似,Data Observability 使用自动化监控、警报和分类来识别和评估数据质量和可发现性问题,从而实现更健康的渠道、更高效的团队和更满意的客户。

为了简单起见,我将数据可观察性分解成它自己的五个支柱:新鲜度、分布、容量、模式和血统。这些组件共同提供了对数据质量和可靠性的宝贵见解。

  • Freshness : Freshness 试图了解你的数据表有多新,以及你的表更新的频率。决策时,新鲜感尤为重要;毕竟,陈旧的数据基本上等同于浪费时间和金钱。
  • ****分布:分布,换句话说,是数据可能值的函数,告诉你数据是否在可接受的范围内。数据分布使您能够根据对数据的预期来判断表是否可信。
  • ****卷:卷是指你的数据表的完整性,并提供关于你的数据源的健康状况的见解。如果 2 亿行突然变成 500 万行,你应该知道。
  • ****模式:数据组织的变化,换句话说,模式的变化,通常表示数据损坏。监控谁在何时对这些表进行了更改是了解数据生态系统健康状况的基础。
  • ****血统:当数据断裂时,第一个问题永远是“哪里?”数据谱系通过告诉您哪些上游来源和下游来源受到了影响,以及哪些团队正在生成数据和谁正在访问数据来提供答案。Good lineage 还收集关于数据的信息(也称为元数据),这些信息涉及与特定数据表相关联的治理、业务和技术指导原则,作为所有消费者的单一真实来源。

在您的公司释放数据可观察性

多亏了 DevOps,我们有了一个简单的镜头来看待可观测性作为应用数据的重要性。数据可观察性的五大支柱通过在数据停机事件出现时立即将其呈现出来,为实现真正的端到端可靠性提供了必要的整体框架。

与传统的 DevOps 可观察性工具一样,最好的数据可观察性解决方案不仅要监控这些支柱,还要从一开始就防止坏数据进入它们。

我们认为,一个出色的数据可观察性解决方案具有以下特征:

  • 快速无缝地连接到您现有的堆栈,并且不需要修改您的管道、编写新代码或使用特定的编程语言。这允许快速实现价值和最大化测试覆盖率,而不必进行大量投资。
  • 监控您的静态数据,并且不需要从当前存储的位置提取数据。这使得该解决方案具有高性能、可扩展性和成本效益。它还确保您满足最高级别的安全性和合规性要求。
  • 需要最小的配置并且实际上没有阈值设置。它使用 ML 模型来自动学习您的环境和数据。它使用异常检测技术让你知道什么时候有东西坏了。它不仅考虑单个指标,还考虑数据的整体视图以及任何特定问题的潜在影响,从而最大限度地减少误报。您不需要花费资源来配置和维护嘈杂的规则。
  • 不需要事先映射需要监控什么以及以什么方式监控。它帮助您识别关键资源、关键依赖项和关键不变量,这样您就可以轻松获得广泛的可观察性。
  • It 提供丰富的上下文,支持快速分类和故障排除,以及与受数据可靠性问题影响的利益相关方进行有效沟通。它不会停留在“今天表 Y 中的字段 X 的值小于 Z”上
  • 通过公开有关数据资产的丰富信息,从一开始就防止问题发生,以便负责任地主动做出更改和修改。

此外,当问题出现时,这些工具会在其他人之前提醒您的团队。是的,甚至是你的首席执行官。

如果你想了解更多,联系 巴尔摩西 或者访问 montecarlodata.com

有兴趣加入数据可靠性运动吗?把手伸向 蒙特卡洛团队

****

什么是数据可靠性?

原文:https://towardsdatascience.com/what-is-data-reliability-66ec88578950?source=collection_archive---------26-----------------------

以及如何使用它来开始信任您的数据。

图片由 Unsplash 上的 Nico E. 提供。

作为数据专业人员,我们可以从软件工程中学到很多关于构建健壮的、高度可用的系统的知识。 在之前的文章 中,我讨论了为什么数据可靠性对于数据团队来说是必须的,在这里,我分享了我们如何将这个概念应用到数据管道中。

本世纪初,谷歌 Site 本杰明·特雷诺·斯洛斯创造了 站点可靠性工程 ,这是 DevOps 的一个子集,指的是“当你要求一个软件工程师设计一个操作功能时会发生什么。”换句话说,站点可靠性工程师(简称 SREs)构建自动化软件来优化应用程序的正常运行时间,同时最大限度地减少辛劳并减少停机时间。除了这些职责之外,sre 还被称为工程界的“消防员”,致力于解决隐藏的错误、落后的应用程序和系统中断。

现在,随着数据系统在组织中达到相似的复杂程度和更高的重要性水平,我们可以将这些相同的概念应用到我们的领域,如数据可靠性——组织在整个数据生命周期中提供高数据可用性和健康的能力。

从应用停机到数据停机

虽然救火无疑是一项核心责任,但 sre 也有责任通过了解新功能和其他创新的机会成本来寻找新的方法以周到地管理风险。为了推动这种数据驱动的决策制定,建立明确的服务水平目标(SLO)来定义这种可靠性在现实世界中是什么样子,由服务水平指标(SLIs) 来衡量。

一旦 SLO 和 SLIs(比如说快 10 倍…)建立起来,SREs 就可以很容易地确定可靠性和风险之间的平衡。即使有最智能的解决方案和最有经验的 sre,实现 100%的系统正常运行时间也不是不可能的。创新依赖于迭代,消除停机的唯一方法是保持静态,但这不会给你带来竞争优势。正如我的一位 SRE 朋友恰当地指出的那样:“如果网站关闭,这不是一个的问题,而是一个何时的问题。”

就像 SREs 在可靠性和创新性之间取得平衡一样,我们也必须确保我们的数据管道足够可靠和灵活,以允许引入新的数据源、业务逻辑、转换和其他对我们的公司和客户都有益的变量。

与我们精心管理应用程序停机时间一样,我们必须专注于减少数据停机时间 —数据不准确、丢失或出现其他错误的时间段。

对于各种各样的公司来说,已经出现了许多重大的应用程序宕机事件,如 GitHubIBMDoorDashSlack——数据宕机也是一个类似的严重威胁。

救火不仅仅是为了 SREs。作为数据专业人员,我们也要处理我们应得的数据停机火灾,但我们不必这样做。图片由 周杰伦海克 un splash

坏数据不仅会导致糟糕的决策,而且监控和解决数据可靠性问题会耗费团队宝贵的时间和金钱。如果你从事数据方面的工作,你可能知道在应对数据宕机上花了多少时间。事实上,许多数据领导者告诉我们,他们的数据科学家和数据工程师花了 30%或更多的时间来解决数据问题——精力最好用在创新上。

比别人先知道

在过去的几年里,我和 150 多位数据主管谈过他们的数据停机时间,从几个空值到完全不准确的数据集。他们的个人问题包罗万象,但有一点是明确的:有更多的利害关系比一些丢失的数据点。

一家受欢迎的高端服装租赁公司的工程副总裁告诉我,在他的团队开始监控数据宕机之前,他们的整个客户信息数据库都是 8 小时停机,显示出巨大的技术债务。更糟糕的是,他们几个月都没有发现这个问题,只是在数据仓库迁移过程中发现了它。虽然它最终是一个相对简单的修复(和一个令人尴尬的发现),但如果能尽快知道并解决它就好了。

数据停机对他们的业务造成了损失。依赖及时数据为客户做出明智决策的分析师对他们的渠道缺乏信心。随之而来的是收入损失。这类事件经常发生,没有一家公司能够幸免。

就像 SRE 团队最先知道应用程序崩溃或性能问题一样,数据团队也应该最先知道糟糕的管道和数据质量问题。仅在六年前, 数据丢失和停机每年给公司造成累计 1.7 万亿美元的损失;在一个数据无处不在的时代,而数据管理工具不一定能跟上,这些数字可能会变得更糟。

为了避免数据停机,在数据的整个生命周期(从来源到消费的整个过程)中保持对数据的 完全可观察性 非常重要。强大的渠道带来准确而及时的洞察,从而做出更好的决策,真正的治理,让客户更加满意。

我如何使我的数据可靠?

我提出了数据团队在其组织中实现高数据可靠性的两种主要方法:1)设置数据 SLO,2)投资于减少数据停机时间的自动化解决方案。

为数据设置 SLO 和 sli

为系统可靠性设置 SLO 和 SLIs 是任何 SRE 团队的预期和必要功能,在我看来,也是我们将它们应用于数据的时候了。一些公司也已经在这么做了。

在数据环境中,SLO 指的是数据团队希望在一组给定的 sli 上实现的目标值范围。您的 SLO 看起来会有所不同,这取决于您的组织和客户的需求。例如,B2B 云存储公司每 100 小时的正常运行时间可能有 1 小时或更少的停机时间,而拼车服务的目标是尽可能延长正常运行时间。

以下是如何考虑定义您的数据 sli。在之前的帖子中,我已经讨论过数据可观察性的五大支柱。重新构建后,这些支柱就是你的五个关键数据 sli:新鲜度、分布、容量、模式和血统。

  • Freshness : Freshness 试图了解你的数据表有多新,以及你的表更新的频率。
  • 分布:分布,换句话说,是数据可能值的函数,告诉你数据是否在可接受的范围内。
  • Volume: Volume 指的是您的数据表的完整性,并提供关于您的数据源的健康状况的见解。
  • 模式:模式变化通常表示数据损坏。
  • 世系:数据世系通过告诉你哪些上游来源和下游祖先受到了影响,以及哪些团队正在生成数据和谁正在访问数据来提供答案。

我工作过的许多数据团队都对集成最新、最棒的数据基础设施和商业智能工具的前景感到兴奋,但是,正如我以前写的那样,这些解决方案的好坏取决于为它们提供动力的数据。这些 sli 将使你更好地了解这些数据实际上有多好,以及你是否可以信任它。

投资于数据可靠性

事实是,以这样或那样的方式,您已经在投资数据可靠性。无论是您的团队正在进行的验证数据的手动工作,还是您的工程师正在编写的自定义验证规则,或者仅仅是基于破碎数据或未被注意的无声错误所做决策的成本。这是巨大的代价。

但是有一个更好的方法。正如站点可靠性工程师使用自动化来确保应用正常运行时间并提高效率一样,数据团队也应该依靠支持机器学习的平台来使数据可靠性更容易、更易获得,从而做出更好的决策、获得更大的信任和更好的结果。

与任何优秀的 SRE 解决方案一样,最强大的数据可靠性平台将为您的管道提供自动化、可扩展、ML 驱动的可观察性,使其易于仪表化、监控、警报、故障排除、解决和协作处理数据问题,最终降低您的数据停机率,从而提高您整个数据管道的可靠性。

现在,有了清晰的 sli、SLO 和新的数据可靠性方法,我们终于可以把救火工作留给专业人员了。

如果你想了解更多,请联系 巴尔摩西

什么是数据科学?

原文:https://towardsdatascience.com/what-is-data-science-14aa95a7de98?source=collection_archive---------49-----------------------

探索数据科学的历史并了解它的现状

图片作者:特里斯特·约瑟夫

数据已经成为世界产业的驱动力。现在,企业比以往任何时候都更需要能够帮助他们优化运营的个人。正因为如此,从 2016 年到 2019 年,数据科学工作连续被评为 Glassdoor 排名第一的最佳工作。令人惊讶的是,数据可以用来讲述故事,数据分析可以让个人获得可操作的见解。

然而,数据科学不仅仅是在公园散步。数据科学家需要使用他们的工具来处理和分析大量的数据,同时还要克服数据捕获、管理分析和沟通等问题,以便做出正确的决策。这些工具为高优先级决策提供了一个媒介,可以在没有人工干预的情况下实时指导更好的业务和智能行动。但是,当人们想到数据科学时,他们会立即想到构建令人瞠目结舌的模型和编写成千上万行代码。其他人考虑创造机器人,或者网飞如何知道他们想看什么节目。因此,尽管有各种各样的合理想法,什么是真正的数据科学?

图片作者:特里斯特·约瑟夫

首先,数据科学不是构建令人瞠目结舌的模型和编写成千上万行代码。也不是真的要制造机器人或者让网飞知道什么是值得观看的好节目。更确切地说,数据科学是利用数据为相关方创造尽可能大的影响。这可以通过为公司工作或简单地尝试优化数据驱动的个人决策来实现。这种影响可以有不同的定义;它可能是发现见解、数据驱动的产品开发、产品推荐或产品增长分析。现在,为了产生这种影响,数据科学家需要构建有用的模型,生成有意义的可视化效果,并编写高效的代码。因此,数据科学家的工作就是使用一篮子工具来解决问题。

了解了这一点,为什么数据科学中使用的工具会成为数据科学的焦点呢?为了理解这一点,我们需要看一看数据科学从何而来。最初,在普及数据科学之前,术语“数据挖掘”是热门话题。那是 1996 年,从数据挖掘到数据库中的知识发现,发表在《人工智能》杂志上的一篇文章,将数据挖掘称为从数据中发现有用信息的整个过程。最终,研究人员希望利用计算能力,目的是将数据挖掘提高到另一个水平。在从数据中提取信息和模式时,研究人员需要能够做出合理的推断。因此,他们本质上将计算机科学与统计学结合起来;这被称为数据科学

图片作者:特里斯特·约瑟夫

快进到 2005 年,我们看到产生和处理的数据量变得如此之大,以至于无法再使用传统技术进行处理。于是,大数据诞生了。这种数据激增主要是 Web 2.0 的结果。也就是说,网络不再仅仅是静态的网页。相反,网络发展成了动态的、用户生成的内容集,个人现在可以在这里喜欢、分享、评论和发布!数据的激增使研究人员能够收集更多的见解并解决更多的问题,但这也意味着处理这些数据需要变得更加复杂。公司开始开发处理这些问题的新方法,大数据热潮在 2010 年左右兴起。不足为奇的是,数据科学的繁荣很快就开始了,这是因为公司意识到他们需要个人来负责这场信息海啸。

最终,数据科学一词开始指代“几乎所有与数据有关的事物”。这包括但不限于数据收集、分析、建模和数据应用。这里,数据应用指的是机器学习和人工智能。数据的激增使得训练计算机和机器执行各种任务成为可能,其中一些可能被视为今天的标准做法。以电子邮件过滤器为例;你能想象在现代生活中,没有一封垃圾邮件会进入垃圾邮件文件夹吗?那会很痛苦。但谢天谢地,还有机器学习。

图片作者:特里斯特·约瑟夫

然而,自从机器学习和人工智能的出现向世界展示了如何通过数据科学改善日常生活,这些主题逐渐超越了数据科学所必需的其他组件。现在,这并不意味着数据科学家不能开发令人瞠目结舌的模型和编写数百行代码。但也必须认识到,许多行业需要数据科学家作为分析师,执行这些任务所需的技能并不相互排斥。

再一次快进到 2020 年,我们可以看到数据科学已经发展到这样一个地步,即定义是由它所在的行业决定的。给定特定的公司和该公司的需求,进一步的细化是可能的。考虑一家公司的数据科学需求层次结构,其中数据收集位于底部,人工智能位于顶部。评估指标和 A/B 测试等流程先于人工智能,因为这些流程将为公司提供关于产品性能的洞察力。这些流程还将允许公司制定增长战略并获得适当的投资回报。然而,人工智能并不是以最少的努力获得最多结果的过程。

图片作者:特里斯特·约瑟夫

因此,什么是真正的数据科学?它是使用数据和相关工具,通过解决问题来产生影响的过程。通常,数据科学家会遇到非常模糊和困难的问题,他们的任务是使用数据引导相关方朝着正确的方向前进。所以,尽管数据科学可以包括开发令人瞠目结舌的模型、编写数千行代码、创造机器人和利用推荐系统;心脏数据科学以解决问题为中心。

参考文献:

aaai.org/ojs/index.php/aimagazine/article/view/1230

jds-online . com/about #:~:text = By % 20% 22 data % 20 science % 22% 2C % 20 we,% 2D % 2D % 2D % 20 all % 20 sorts % 20 of % 20 applications。&text = Our % 20 goal % 20 is % 20 to % 20 启用,通过% 20 生效% 20 使用% 20of %数据。

kdnugges . com/2018/01/glass door-data-scientist-best-job-America-3 years . html #:~:text = glass door % 2C % 20a % 20 popular % 20 job % 20 site,4% 2C 000% 20 job % 20 openings % 20 on % 20 glass door。

datascience.berkeley.edu/about/what-is-data-science/

thinkful.com/blog/what-is-data-science/

其他有用的材料:

oreilly.com/pub/a/web2/archive/what-is-web-20.html

expert system . com/Machine-learning-definition/#:~:text = Machine % 20 learning % 20 is % 20 an % 20 application,use % 20it % 20 learn % 20 for % 20 themes self。

edureka.co/blog/what-is-data-science/

https://www.inertia7.com/tristn

理解什么是数据科学的极简方法

原文:https://towardsdatascience.com/what-is-data-science-4565e457cc17?source=collection_archive---------25-----------------------

图片来自皮克斯拜的格尔德·奥特曼

数据科学就像青少年性一样。每个人都在谈论它,但很少有人真正知道如何去做。然而,每个人都认为其他人在做这件事,因此许多人声称他们在做这件事。

介绍

当谈到数据科学的讨论时,无论他们有什么背景-商业、金融、医学、工程或农业-人们都很容易变得非常兴奋,认为数据科学是未来的全部。数据科学也是媒体的热门话题。你可以看到或听到很多数据科学相关的术语越来越多地出现在报纸、广播和电视节目中,比如大数据、数据挖掘、人工智能、机器学习等。然而,他们(或我们)真的了解数据科学吗?

即使对于那些对成为数据科学家有浓厚兴趣的人来说,他们也可能在某些时候想知道如何才能将数据科学作为自己的职业。这绝对是一个合理的问题,因为如果他们不确切知道他们将要工作的领域,人们怎么能指望他们发展必要的技能来使他们胜任工作。

所以这里的根本问题是数据科学到底是什么。

“官方”定义

大概没有官方定义,因为没有人知道谁能代表官方实体(如果有的话)。然而,已经有各种尝试来定义数据科学的概念。

数据科学的 30,000 英尺视角

让我们首先从下图开始,该图或其变体已被广泛使用。

图片来源:数据科学社

这张图表很好地突出了数据科学作为一个研究领域的多学科性质。具体来说,数据科学主要涉及以下几个学科。

  • 计算机科学。做数据科学,我们当然需要必要的顶级硬件和软件。我们总是希望我们的代码能够以最快的计算速度运行在最好的集群上。就软件而言,如果我们能够获得软件包中更好的功能,这总是很有帮助的,这样我们就可以节省大量时间来自己编写相关的实现代码。
  • 数学和统计学。在数据科学领域,没有人敢低估数学和统计学如何增强数据科学研究的方方面面。数学和统计学为整个领域奠定了基础。我甚至不需要给出任何关于数据科学中奇特的数学应用的例子,仅举几个我个人日常使用的数学和统计工具——逻辑回归、混合模型和贝叶斯分析。
  • 内容知识。数据科学家研究数据,这些数据是从一个定义明确的内容域中产生的。没有所需的内容专业知识,就无法收集有意义的数据。对于数据科学家来说,他们必须拥有足够的内容知识,缺乏这些知识将使所有的数据科学研究毫无根据。如果他们不知道数据是如何收集的,也不知道这些数据意味着什么,他们就不能很好地利用这些有价值的数据。

这个图表当然有助于我们在 30,000 英尺的高度理解各个学科与数据科学的整体相关性,但它并没有真正告诉我们数据科学到底做什么。

维基百科怎么说?

出于一般性讨论的目的,接下来让我们参考一下维基百科的定义,看看它是否能给我们一些额外的见解。

数据科学是一个多学科领域,使用科学方法、流程、算法和系统从结构化和非结构化数据中提取知识和见解。

这个定义与上图有很好的对应关系,因为它也强调了数据科学的多学科性质。然而,这个定义中使用的一些术语太宽泛而没有意义,例如科学方法和过程。

我在这里不是想吹毛求疵(也许我是:]),但是数据科学不是宗教或小说,它是科学,从它的名字就可以明显地看出来。有没有不使用科学方法的理科科目?我想不出任何一个。另外,我们大多数人都能理解算法这个术语的意思,但是流程和系统呢?它们究竟是什么?

我认为维基百科中的定义总体来说应该是相对全面的。显然,这是一个例外,就我们所读到的而言。所以让我们继续阅读维基百科关于数据科学的页面。在下面的段落中,提供了进一步的描述性陈述,如下所述。

数据科学是“统一统计学、数据分析、机器学习及其相关方法的概念”,以便用数据“理解和分析实际现象”。

我更喜欢这句话。它给出了数据科学使用的所谓科学方法的具体例子,如统计学和机器学习。而且明确提出数据科学是通过与数据的交互来理解和分析有形的现象。

利弊

总的来说,这些陈述,加上上面的图表,阐明了数据科学的综合定义。我们可能已经形成了关于数据科学的广泛想法,因为这些定义成功地列出了关于数据科学的重要部分,尽管方式略有不同,例如算法、来自数据的知识、数学和统计、数据分析、机器学习,以及理解和分析实际现象。

毫无疑问,这些术语几乎涵盖了人们所能想到的数据科学的所有方面。然而,这样的全面是有代价的——太复杂了!想象一下,作为一名数据科学家或一名数据科学爱好者,你被要求向一个外行人解释什么是数据科学。你认为这些全面的定义能帮助外行人对数据科学有一个清晰的认识吗?他可能连统计学的线索都没有,更别提机器学习了。

我不知道你的想法是什么,你可能很好地解释了这个复杂的概念,但对我来说,这些定义太难了!

“最简洁”的方法

在一篇颇有见地的 Medium 文章中,我强烈推荐你阅读,如果你真的想学习更多关于数据科学的知识的话,谷歌的首席决策科学家 Cassie Kozyrkov 给出了她所谓的最简洁的定义。

数据科学是让数据变得有用的学科。

关注主题:数据

作为一个极简主义者,从我个人的角度来看,我认为这绝对是对以前定义的巨大改进。首先明确陈述了数据科学关注的主体——D,A,T,A——数据。没错。数据科学应该是关于数据的!

无论你在数据科学中的角色是什么,你都不可避免地要以某种方式处理数据。有些人可能会说,我只是一个为数据科学开发软件的程序员,我根本不接触数据。

嗯,听起来可能是真的。但是可以问几个问题。您的软件是否在任何功能中使用数据?当你开发你的软件时,你需要考虑数据的格式吗?你的软件会输出数据吗?大概,所有的答案都会是肯定的。

有些人可能会说,我只是一名生物医学研究人员,负责一项临床试验,以检查药物 A 治疗阿尔茨海默病的有效性,我与数据和数据科学有什么关系?

嗯,作为一名科学家,我见过太多的基础研究人员持有类似的观点。他们在某种程度上与这个时代数据科学的发展及其在几乎所有生物医学领域的应用脱节。对我来说,他们是内容专家,实际上是他们生成用于数据科学的数据。即使他们没有意识到这一点,他们也与数据科学领域直接相关。

例如,从该试验中产生的研究数据可以集成到一个更大的数据集中。最终,正如 Cassie Kozyrkov 所说,通过进行数据科学,这些临床数据可以“变得有用”,以解决几个重要问题,如阿尔茨海默病在系统水平上的病因(如神经网络、疾病进展)。

隐含目标:含义

在这个最简洁的定义(即,使数据有用)中隐藏的信息是,它还暗示了数据科学的目标— 理解数据。数据本身只是数字、文本、图像或视频,因此它们本身无法告诉我们关于给定主题的任何有意义的东西。

我们如何利用这些数据?进行数据科学研究的全部目的是理解数据,并利用各种方法批判性地和创造性地分析它们,这样数据将获得生命,它们可以帮助我们解释现象,向我们展示做某些事情的正确方法,并预测将会发生什么。

总的来说,我将这些与数据科学相关的各种结果称为影响。因此,换句话说,数据科学的目标是产生暗示。我说的暗示到底是什么意思?

这种暗示是在时间维度上的。通过数据科学,我们可以获得已经发生和为什么发生、正在发生和为什么发生以及将会发生和为什么发生的不同深度的含义。过去—例如,数据科学已被用于进化生物学和生态学,以研究生命的进化和复杂的生态系统。目前—例如,许多金融机构严重依赖数据源进行风险评估、投资评估、欺诈检测和许多其他目的。未来——例如,数据科学已被广泛用于确定许多比赛的胜算。

其含义也在空间维度。数据科学已经渗透到几乎所有的研究领域,如生物医学、制造业和空间科学,以及我们的日常生活,如自动驾驶汽车、天气预报和社交媒体中的新闻,等等。

缺失组件

在上面的两个部分中,我们讨论了数据科学这个“最简洁”定义的积极方面。然而,缺少了一个重要的东西。如果您将这个定义与“官方”定义进行比较,您就不难发现缺少了什么——“最简洁”的定义没有提到在进行数据科学时使用足够的方法。

可以说,没有人能够仅仅使用纸和笔来构建对象检测模型。如果没有任何配有相关统计软件包的复杂软件,要建立一个有用的投资风险评估模型几乎是不可能的。

对这一缺失部分的识别正引导我们使用极简主义方法来定义数据科学。

极简主义方法

想必每个人小时候都做过类似的事情。你能尽可能缩短这个句子吗?

在圣诞节前一个美丽寒冷的冬日,我花光了所有的积蓄——25 美元,在纽约市离我家 2 英里远的跳蚤市场买了一些迷人的银饰。

->我买了饰品。

我们很多人都在第二段中得到了同一个句子,因为它使用了最少的单词,而没有丢失第一段中包含的重要信息。

我们可以用同样的方法缩短本文开头提到的“官方”定义,并做一些额外的细微抽象。

数据科学是一个多学科领域,使用科学方法、流程、算法和系统从结构化和非结构化数据中提取知识和见解。

->数据科学是利用工具从数据中提取信息的领域。

当然,这个较短的定义并没有提供太多关于数据科学的细节,但它确实有一个特殊的优势。向下滚动之前,给自己几秒钟时间考虑一下。

极简主义的体现。 LUM3NUnsplash 上拍照

我打赌你可能已经想明白了。有了这个简单的定义,三个关键词很容易脱颖而出:工具信息数据。这些正是数据科学中所有重要的组成部分。

我稍微调整了一下这些词,得出了我自己对数据科学的极简主义定义,如下所示。

数据+工具->含义

在这个公式的右边,你会注意到从信息到含义的变化。这一变化使得这三个单词都是可数的,现在它们都是复数形式。因此,它们看起来更统一,也更漂亮。它读起来也更好吗?

玩笑归玩笑,我使用含义的原因是,这个复数形式明确指的是我们可以通过进行数据科学获得的大量信息。如前所述,数据科学的目标是生成含义,而含义在时间和空间上都是多维的。

在这个公式的左边,你会发现数据科学的两个重要组成部分——数据工具。不管我们用什么定义,大家都应该认同,数据科学的核心都是关于数据的:数据采集、数据处理、数据归约、数据分析、数据挖掘等等。鉴于数据在进行数据科学中的至关重要性,在这个公式中,数据绝对优先于工具。

当然,工具在数据科学中是不可忽视的。这些工具是数据科学中使用的所有有形和虚拟仪器和小工具的集合,包括但不限于硬件、软件、方法、统计模型、机器学习技术和算法。

总而言之,这个公式或定义意味着进行数据科学是让数据工具有机地反应,这将导致产生有意义的影响,这将在时间和空间领域中造福于所有人类。

结论

数据科学仍在发展,其范围也在扩大。因此,它的定义将不断演变。在它完全成熟之前,关于我们应该如何精确定义它,将会有持续的争论。本文的目的不是为这个问题提供一个明确的答案,而是通过从极简主义的角度提出一些观点,在数据科学领域内外产生一些启发性的想法。

带回家的信息

下次,当你需要向其他人解释数据科学时,你可以尝试使用简单的定义或公式,数据+工具->含义,作为你的起点。如果需要进一步澄清,您可以对每个术语进行扩展。有了这个由易到难的策略,我敢打赌你的听众会更容易接受你的解释。

什么是数据科学?

原文:https://towardsdatascience.com/what-is-data-science-4dfee08b744f?source=collection_archive---------43-----------------------

面试一个数据科学家的职位

很久以前,我毕业于计算机生物信息学专业。当人们问我学过什么时,我会告诉他们专业名称,他们会试着发音,结结巴巴几次,然后放弃。我发现向他们解释我的专业允许我为生物学家编写软件来分析生物数据并使用统计学对其进行评估是令人厌倦的。

毕业后,我努力寻找一份能让我结合研究、编程和统计技能的工作。我看得很远很广,并不断陷入角色,而这些角色并没有实现他们的承诺。有一个角色需要做大量的研究,但是需要阅读政府出版物。它还涉及一些最小样本量为 30 的统计数据(允许我假设满足中心极限定理并且分布是正态的——但它从来不是)。

为了寻找金蛋,我换了一份又一份工作,尽管对分析师、程序员以及现在的数据科学家和工程师的需求越来越大,但我找不到一个能让我做很多事情的角色。我最终管理了项目,构建了仪表板,用过多的饼图、条形图和散点图准备了精心制作的 PowerPoint 演示文稿,并参加了黑客马拉松。这些角色没有一个让我满意,我回到家感到沮丧,失去了目标感。很多天,当人们惊叹我是一名“数据科学家”有多幸运时,我冷嘲热讽地回答说,我所做的只是在工作日刷新我的收件箱——有些日子,甚至有些星期和几个月,我所做的就是等待接收数据,等待我上面的人做出决定,以及等待能够完成任何工作的工具。

最近,我成为了一名数据科学家,在那里我所做的就是查询数据库和整理表格。这些表在几个星期后被修改,以使它们更易于访问。所有的字段名都进行了更改,以满足一些模糊的格式要求。然后,这些表被加载并重新加载到数据库的不同部分。我觉得自己淹没在虚无的工作中,导致绝望。人们不停地说,我很幸运有一份什么都不用做的工作。很轻松,待遇也不错。但是,没有家人和朋友,40 个小时的空虚工作只会增加我的孤独和忧郁。

我不希望其他人在完成了本世纪最受吹捧、最具性别歧视的工作——数据科学家之后,经历我所经历的一切。目前,工作描述要求每一种编程语言、数据可视化软件和数据 ETL 工具都是必需的技能。这些招聘广告还要求演示和讲故事的技能,统计知识,以及解释和进行机器学习的能力。然而,尽管完成了 Kaggle 式的案例研究,经历了 7 轮面试,你可能最终会在一份工作中呆上几个月甚至几年,你所做的只是“从 A 中选择”。

许多雇用数据科学家的组织之所以雇用他们,只是因为其他人都是如此,他们不想在这场激烈的竞争中落后。他们希望最聪明、最聪明、最有才华的人为他们工作。他们现在就想要,在他们拥有分析平台之前,在他们拥有可访问的数据之前,甚至在他们弄清楚为什么需要数据科学家之前。他们本质上想做什么,嗯,他们试图用严肃的术语——“给猪涂口红”。

猪身上的口红

那么,你如何避免屈服于这种迷人的工作描述呢?几天后,你很快就会发现,这些工作描述不过是单调的数据 ETL 角色。嗯,也许你首先需要后退一步,理解对你来说“什么是数据科学”。

对我来说,这是解决商业问题的科学方法。这意味着你要花一些时间去了解情况,当前的业务环境,以及业务想要达到的最终目标。如果他们的目标是预测客户流失,那么理解为什么会这样,如果是的话,他们需要多快得到这些信息,以及实施解决方案是否可行。

作为一名数据科学家,你的下一个任务是通过提出一些数据假设来解决这个问题,类似于你在大学 STAT101 中提出的零假设或替代假设。一个例子是,客户是否会流失与他们在公司的任期、年龄和没有关系。

下一步是使用现有数据中的现有变量创建分析数据集,并根据与企业就可能影响客户流失的因素进行的交流设计功能。一旦你有了这个工程数据集,当你运行各种机器学习模型并调整这些模型以提高模型准确性时,世界就是你的了。这是一个迭代的方法,因为您将这些发现传递给企业,并在准备实施之前从您的模型中添加和删除变量。确保将业务中的技术人员保持在您的关注范围内,因为您需要与他们联络,以确保模型可以实施,从而为业务提供及时的结果。

所以,这是我的版本。现在,在你申请那个闪亮的钻石质量数据科学家职位之前,问问你自己和雇用你的人,这是否是你在这个职位上将会做的,以及你是否真的能做到以上几点。

什么是数据科学?

原文:https://towardsdatascience.com/what-is-data-science-8c8fbaef1d37?source=collection_archive---------13-----------------------

每个数据科学项目都有以下三个目标之一

什么是数据科学?是一个简单的问题,但答案往往令人困惑。我经常听到人们说数据科学只不过是穿上奇装异服的统计学。数据科学被戏称为 Mac 电脑上的 T2 统计学。一位数据科学家被称为,一位住在加州的数据分析师。😂

对理解的追求。资料来源:pixabay.com

虽然这些说法很幽默,但数据科学包含什么却一点都不明显。这些年来,有许多数据科学文氏图和许多定义。然而,在我的研究中,我发现的那些要么令人费解,要么缺少三个核心数据科学功能中的一个。

在本文中,您将了解数据科学的三个主要部分。您还将了解一种新兴的数据科学项目。最后,您将看到对数据科学很重要的另外两个领域,但不是核心的一部分。

一个数据科学项目有三个目标之一——要么提供洞察力建立因果关系,要么做出预测。这三个目标与数据分析统计机器学习的领域相关联。

来源:杰夫·黑尔改编自 pixabay.com。来自 https://venngage.com/blog/color-blind-friendly-palette/的色盲友好调色板

  • 分析用于从现有数据中提取和传达见解。
  • 统计用于建立因果关系。
  • 机器学习以预测为目标。

数据科学的定义

这是我的定义,涵盖了所有三个领域:

数据科学是利用数据做出更好的决策,通过分析洞察、统计因果关系和机器学习进行预测。

有可能仅仅是一名数据分析师、统计学家或机器学习工程师。然而,一个数据科学家是一个能做到这三点的人。👍

在起草这篇文章后,我看到见解深刻、雄辩的 Cassie Kozyrkov 也得出了类似的结论——她将数据科学定义为“使数据有用的学科”,然后将其分为统计学、机器学习和数据挖掘/分析。她类似的崩溃让我相信,通过关注这三个核心方面来帮助人们理解什么是数据科学是有价值的。🎉

此外,我谦卑地提醒我,几乎任何中途体面的想法,我有过,凯西可能多年前。😀

数据科学背景

这是我对数据如何在组织中流动的描述。核心数据科学角色在 peach 中突出显示。

杰夫·黑尔制图

我们先来看数据分析。

数据分析📊

数据分析的目标是在现有数据中发现真知灼见。

例题分析问题: 是什么原因导致了上个月的销量下降?

问问题的人可能希望你带来相关的研究,以节省他们的时间。向 Cassie Kozyrkov 致敬,他在本文中很好地解释了这个想法。

或者,提问者可能想让你回答他们的问题并构思一个故事。然后你会用这些数据来证明你的论点,解释为什么销售额会下降。

数据分析师的工作需要诚实地探索问题。你需要有效的假设,但是你必须跟随证据的方向,并根据你的发现产生新的假设。

数据分析需要批判性思维和理性诚实。

使用不当的数据分析是混淆。是如何用统计数据撒谎。它声称美国在新冠肺炎方面做得很好,并用一张显示死亡人数占病例比例的图表来支持这一说法。🤦‍♂ ️A 更相关的指标是死亡人数占人口的比例。你可以在下面看到大型发达国家的图表。

来源:数据中的我们的世界:https://ourworldindata . org/grapher/daily-covid-deaths-per-million-7-day-average?时间=2020-07-07..&国家=加拿大~ DEU 意大利 JPN 韩国 KOR 美国ESP

在数据分析中,你可能会涉足因果关系的领域,但你应该小心做出因果关系的断言。你不是在创造实验和使用推论统计学。

股市谈头整天做分析,经常用因果关系的语言。他们的解释似是而非,但一般都经不起检验。

  • 今天股市为什么上涨?交易员喜欢这些就业数字。
  • 为什么会下跌?交易员对糟糕的就业报告不予理会。

你应该持怀疑态度。这些因果陈述不是不可证实的。

资料来源:pixabay.com

做数据分析的时候,报告和演示往往是一次性的事情。如果您发现自己重复呈现相同的指标和图表。建立一个仪表板可能是一个好主意,它将自动获取数据,并向利益相关者显示这些指标和可视化。

最常见的数据分析技术工具依次是 SQL、Excel、Tableau。其次是用 Python 和 R 编程。点击查看我对数据分析师职位技术的分析

在这三个领域中,掌握数据分析通常需要最少的培训时间。您需要了解如何查询数据、使用描述性统计数据以及显示数据。你不一定需要编程技能或高级统计。然而,编程技能对于自动化分析通常是有用的。😀

现在让我们看看数据科学的第二个核心领域:统计学。

沿着小路走。资料来源:pixabay.com

统计数字🔢

统计学是科学方法的关键部分。这就是我们如何利用收集到的数据,运用概率和数学的严谨性来提出因果关系。

示例统计问题:我们网站的哪个版本会带来更多销售额?

假设你想提高你网站的转化率。当然,你已经在用户体验和网站设计中使用了最佳实践。😀现在你有两个不同的网站设计要测试。

您希望根据随机控制实验从总体样本中推断出总体。如果你想从 frequentest 统计数据中进行 A/B 测试,你需要预先确定要收集多少数据,以及确定显著性的临界值。不准作弊!统计学就是严谨。☝️

或者,要回答这个问题,你可以使用贝叶斯统计的多臂土匪测试。这两种方法都试图从人口的随机样本中得出推论。参见这篇博文了解更多关于这个话题的信息。

做统计时,你关心的是效应大小、p 值、置信区间或可信区间。你被中心极限定理打倒了。你知道统计分布和常见的统计测试,如卡方检验,方差分析,线性回归和逻辑回归。你可以用 ARIMA 或霍尔特-温特斯指数平滑法来处理时间序列。

您可以使用 R、Python(可能使用 pandas 或 NumPy 和 statsmodels 或 scipy)或 SAS 作为您的工具。

统计通常涉及将数据与一些现象的潜在理论分布相匹配。这里有一篇关于数据科学与统计学历史的精彩文章

根据你的研究问题,你可能需要深厚的领域专业知识,或者你的团队中有这样的人。👍

现在让我们来看看机器学习,这个让数据科学流行起来的酷小子。

在理解的道路上走得更远。资料来源:pixabay.com

机器学习🖥

机器学习的关键特征是预测占主导地位。

示例机器学习问题:下个月客户流失会是什么?

当进行机器学习时,你不太关心统计分布的假设,你关心的是什么有效。你可能不关心哪些变量导致了结果。

线性回归的方差齐性假设被违反了吗?如果你只关心模型对结果变量的预测有多好,那么“谁关心,我的模型预测得好”,就是一个合理的回答。机器学习的人是实用主义者。

然而,许多机器学习问题与统计学有相当多的重叠。

  • 有时候,可解释性是关键——例如银行贷款决策。当你需要解释为什么有人被拒绝贷款时,可解释性的统计要求就很重要。在这种情况下,你关心的是预测的有效性和可解释性。👍
  • 机器学习与统计学共享一些算法,如线性和逻辑回归。
  • 像统计学家一样,机器学习研究人员希望最简单的模型能够很好地工作。这为训练和推理节省了时间和金钱。

除了机器学习更关注预测之外,它与统计学也有一些根本的区别。

  • 从事机器学习的人应该比严格从事统计的人更擅长编程。
  • 在机器学习中,你训练你的模型,并根据他们以前没有见过的数据评估你的模型类型和超参数。这种坚持测试集通常在传统统计学中找不到。
  • 机器学习旨在利用更大的数据和更强的处理能力。当处理能力变得便宜,数据变得丰富时,它的复杂算法变得有用。

现在让我们深入研究深度学习——一个正在发生惊人突破的机器学习算法家族。☀️

深度学习🧠

深度学习,又称人工神经网络,需要多层隐藏节点。随着模型以优化损失函数为目标被训练,节点的权重被迭代更新。

深度学习正在吃掉越来越多的过去用更传统的机器学习算法解决的问题。

如果预测变量和结果变量之间的关系很复杂,深度学习通常是首选的工具。例如,图像分类就是深度学习擅长的一个领域。自然语言处理 (NLP)是深度学习被用于多种人工智能突破的另一个领域。

尽管洞察力、因果关系和预测是数据科学家通常处理的任务类型,但他们已经开始将深度学习用于第四项任务: 创造

通过使用生成性对抗网络 (GANs),创造性的突破正在发生。这个领域对人类未来的重要性是巨大的。查看最新的 GPT-3 NLP 模型,看看有什么可能。😲

大多数数据科学家都没有使用深度学习进行创作,尽管它的流行程度正在增加。在未来,创造可能会成为数据科学家角色的核心组成部分。

您已经看到了数据科学家如何使用数据分析、统计和机器学习。现在,让我们简单地看一下对数据科学很重要,但不是核心的两个领域。

数据工程

数据收集、存储和准备对于数据科学至关重要。你可能听说过一个统计数据,数据科学家 80%的工作是数据清理。然而,这个数字似乎是类似于电话游戏的结果。📞点击这里查看挖掘源头的伟大研究)

下面的图表来自 Kaggle 2018 年开发者调查,显示了受访者如何报告他们的时间。该调查收到了来自世界各地的近 24,000 份回复。请注意,它包括数据科学家以外的职业和大量学生。

来源:Kaggle 的保罗·蒂莫西·穆尼的分析

值得一提的是,收集和清理数据平均花费了受访者 25%以上的时间。那不是无关紧要,但也不是 80%。😉

最近几年,数据工程师作为一个独立的职位出现了。许多组织现在都有专门的数据工程师来构建管道,以注入、转换和存储数据供其他人使用。然而,在小型组织中,数据工程和机器学习可能由同一个人来完成。

所有这些都是说,许多数据科学家也做一些数据收集和清理工作——这只是不是他们的核心职能。

接下来,让我们将注意力转移到机器学习模型离开数据科学家后会发生什么。🚀

机器学习工程

机器学习工程师问“我们可以用这些模型建造什么,我们如何做到这一点?”——迦凯撒 这里

机器学习工程师生产模型。机器学习工程师必须确保模型不断更新,并且能够可靠地做出大规模快速、高质量的预测。在这里可以看到我关于机器学习工程师热门技术技能的文章

数据工程和机器学习工程对数据科学很重要,但不在其主要领域。

隧道尽头的光明。资料来源:pixabay.com

概述

数据科学项目的主要目标是洞察、因果关系或预测。

来源:杰夫·黑尔改编自 pixabay.com。色盲友好调色板来自https://venngage.com/blog/color-blind-friendly-palette/

做好数据科学需要有编码、伦理、沟通、数学、批判性思维的基础。它还要求理解问题的背景。虽然这个技能集很大,但数据科学家不是独角兽。🦄

数据科学家需要了解分析、统计和机器学习过程。理解数据工程和机器学习工程也很有价值。然而,你不需要在所有事情上都是专家。队友就是干这个的。😀

最重要的是,数据科学家在不断学习。我建议你专注于自己的学习之旅,并接受谦逊,因为你会觉得总有更多东西要学。总比不知所措的感觉好。😂

走出树林了!来源:pixabay.com

包装

我希望你喜欢这篇文章,并发现它是有帮助的。如果你有,请在你最喜欢的社交媒体上分享,这样其他人也可以找到它。😀

我撰写关于 PythonSQLDocker 以及其他技术主题的文章。如果你对这些感兴趣,请注册我的邮件列表,那里有很棒的数据科学资源,点击这里阅读更多帮助你提高技能的内容。👍

资料来源:pixabay.com

祝数据科学快乐!😀

什么是数据科学?

原文:https://towardsdatascience.com/what-is-data-science-a-legacy-business-guide-in-big-data-analytics-1d99fb2cb048?source=collection_archive---------50-----------------------

大数据分析中的传统业务指南

作者图片

每一秒钟都会产生大量的新数据。这些数据来自跟踪你的移动的智能手机,跟踪你的每一次点击和按键的网络浏览器,甚至是不断捕捉你——消费者——数据的智能冰箱。

这样做是为了让生产你的产品的公司能够更好地了解你的使用情况,并改进他们的服务/产品。这是它的简短版本。

在本指南中,我们将深入了解:

  • 数据科学的世界及其构成
  • 一些基本的数据科学术语
  • 数据科学如何工作
  • 数据科学如何转化为大数据分析
  • 案例研究:西南航空公司通过大数据分析节省超过 1 亿美元
  • 传统企业需要什么来开始数据科学和大数据分析

什么是数据科学?

数据科学是通过组织和分析大型数据集来获取有价值的信息(如可操作的见解)的实践。数据科学是一个复杂的领域,涉及行业专家知识以及数学、统计和编程专业知识。

数据科学维恩图

  • 黑客技能:黑客技能是指计算机编程知识,编写程序,提出复杂算法,并使用计算机语言将那些概念物化为现实的能力。
  • 数学&统计知识:数学和统计知识让数据科学家能够将他们的问题概念和算法建立在现有原则的基础上,并针对不同的现实场景调整他们的程序。
  • 领域专业知识:现实世界的场景几乎总是特定于某个行业或市场,这也是为什么需要领域专业知识的原因。

数据科学将所有这些能力结合在一起,以创建一个全新的信息流,通过自动化数据挖掘过程,使用计算机编程来访问数百千兆字节的数据,使用数学来理解算法和数据模型,使用领域专业知识来透视并使用所得信息。

基础数据科学术语:单词的含义

下面是一些重要词汇的定义,它们将帮助你理解前面解释的许多主题。

1.结构数据

有组织的数据是指按行和列(分别代表观察值和特征)分类和组织的信息。

2.非结构化数据

无组织数据是指原始数据集,包括音频文件、图片、原始/无格式文本等。

作者图片

3.人工智能和机器学习

人工智能是大数据分析和数据科学领域的核心元素。由于大数据涉及无法手动处理(收集、清理和分析)的超大型数据集,数据科学家使用人工学习,特别是机器学习来训练机器(如云人工智能)以极高的精度为他们处理数据。

机器学习是人工智能(AI)的一个子领域,它已经独立发展成为一个非常大的领域。简单来说,机器学习是指训练计算机基于模型和算法进行学习和行为的过程。当它发现新信息时,它可以调整自己的行为,并在没有任何人为干预的情况下做出准确的预测。

4.数据挖掘技术

数据挖掘是指在计算机的帮助下分析大型数据集,以找到变量之间的关系并获得洞察力。

5.大数据

与机器学习类似,大数据是一个复杂的术语,经常被误解和误用。区分大数据和一般数据集的一个简单方法是提出以下问题:

“我的家用电脑或笔记本电脑能自己处理和分析这些信息吗?”

如果答案是“不,它可能会崩溃”,那么该信息可能属于大数据类别。

6.商业智能(BI)

商业智能(BI)是指将以业务为中心的指标添加到计算机算法和模型中,以便找到与自己公司相关的见解和数据。

工作原理:数据科学的 5 个步骤

现在,您对什么是数据科学有了基本的了解,您可能会认为它只是伪装的数据分析,因为您已经在分析您的数据,所以您参与了数据科学。

这种假设是错误的,也是一种常见的误解。虽然数据分析和数据科学之间有相似之处,但后者的范围要大得多。更重要的是,数据科学遵循非常严格的流程。

那么数据科学到底是什么?数据科学可以定义为这 7 个步骤的顶点:数据争论、数据清理、数据准备、模型学习、模型验证、模型部署和数据可视化。

作者图片

但是,这不是数据科学的工程师指南,这是业务主管指南,所以在这篇文章中,我们将看一些更容易理解的东西——oz denir 的数据科学的 5 个步骤。

在他的书《数据科学原理》中,Sinan Ozdenir 概述了数据科学的五个步骤,以一种易于理解的方式总结了这一过程。

1.问一个有趣的问题

作为一名企业主,你学习数据科学的第一步应该是头脑风暴会议,甚至在查看你的数据之前就提出问题。在对数据进行任何操作之前,您想要这样做的主要原因是,这样您就不会限制自己…

通常情况下,数据不是限制,而是分析。然而,许多企业家(甚至是数据分析师)却犯了相反的想法。有趣的问题没有答案,因为公司认为回答这个问题的数据可能不存在,所以他们甚至不去尝试。

不要落入这个陷阱。

2.获取数据

第二步当然是获取数据(数据挖掘)。根据您的需求,您可能需要查看私有数据或公共领域的数据—获取数据的过程对两者来说是不同的。您将获得的数据类型也将决定所需的时间和精力。已经打包在数据库中的数据是理想的,但是很有可能,你将不得不自己收集数据。别担心,有很多工具可以用来做这件事。

3.探索数据

在收集和清理(组织)数据之后,就可以开始研究了。探索旨在帮助您理解数据、变量之间的关系以及数据集中的各种模式。如果你在做测试或预测,你将在这一步形成你的假设,并用随机数据分析来测试它。

4.数据建模

数据建模是一个非常宽泛的术语,涉及数据科学的大多数核心实践,包括创建算法和训练机器学习模型。完成早期分析后,您可以开始对数据进行建模,并且您拥有足够的数据集信息,可以使用统计模型和机器学习模型。

5.交流和可视化结果

数据可视化可能看起来是数据科学中最容易的一步,但实际上非常困难,可以说是最关键的一步。在交流和可视化结果时,重要的是要考虑到许多心理、艺术和原则,这些因素会改变决策者对数据的理解方式。

数据科学如何转化为大数据分析

大数据分析是数据科学的一个子领域,专注于使用智能计算机软件来处理海量数据,通常是通过云计算。尽管这两个术语的定义非常相似,但普通企业对大数据分析更感兴趣的一个主要原因是:易用性。

要开始研究数据科学,您需要雇佣一个数据科学家团队,简而言之,他们将获取、探索、建模和交流数据。然而,数据科学家非常抢手,因此薪水很高。谷歌云平台建议公司内部数据科学部门有以下角色:

  • 数据分析师
  • 数据工程师
  • 数据科学家
  • 统计员
  • 应用 ML 工程师
  • 伦理学家
  • 社会科学家
  • 研究员
  • 分析经理
  • 决策者(技术主管)

因此,企业转而将大数据分析作为 SaaS(服务即软件)。有一些第三方软件,企业可以用它们现有的软件团队来分析数据。为了使集成更加简单,许多公司更喜欢使用他们的云服务提供商进行大数据分析,而不是第三方供应商。例如,谷歌云平台(GCP)具有内置的大数据和机器学习能力,以及数十种支持服务,可以在一个地方管理你的数据。

案例研究:西南航空公司通过大数据分析节省超过 1 亿美元

直到 2015 年,西南航空公司还没有一个足够强大和准确的系统来规划其每周数百个定期航班。结果,该公司在燃料和机场费用上损失了数十亿美元,因为其庞大的机队闲置在停机坪上等待清关。

这种等待时间可以通过更好地计划和安排行程来避免。因此,在 2015 年底,西南航空公司成为第一家使用大数据系统解决这一问题的美国国内航空公司。该公司开始使用通用电气的飞行效率服务(FES) 部门,这是一个大数据数据分析系统,能够绘制出数百次航班。

如果没有数据科学和强大的大数据系统,就不可能考虑空气湿度和每条线路的燃料负载等变量,也不可能准确预测如此多的旅行。

包扎

总而言之,数据科学是一个非常强大的新兴分析领域,可以帮助企业从大量未使用的数据中发掘有价值的见解。然而,由于数据科学是一个耗时的过程,需要数据科学家,许多公司宁愿坚持基于云的大数据分析软件。

谷歌云这样的公司有一个完整的生态系统,致力于利用数据获得洞察力。使用您自己的云供应商的专用服务是开始使用大数据分析的最快和最简单的方法之一。

原载于https://www.d3vtech.com

什么是数据科学,数据科学家需要知道什么?

原文:https://towardsdatascience.com/what-is-data-science-and-what-does-a-data-scientist-need-to-know-e20ead10aa3a?source=collection_archive---------59-----------------------

不,不仅仅是机器学习和人工智能

随着围绕这个话题的所有讨论,许多人都在考虑从事数据科学方面的职业。但是这个领域的基本技能是什么呢?不幸的是,没有一个明显的答案,因为科学家拥有的知识数据分布在多个传统学科中。在本文中,我用我所知道的最好的方法来解决这个问题——使用 数据科学 。我的目标是讨论对数据科学成功至关重要的技术非技术技能在我发言的 小组讨论会 上也分享了这份材料。

数据科学职位发布描述中突出术语的词云

我已经把这个分析的代码 贴在这里——它可以用于任何职位。请分享你的发现!

数据科学工作流程

幸运的是,我知道在哪里可以找到数据——回答这个问题所需的数据可以在公开的招聘信息中找到。通过计算机编程,我从一个热门的求职网站上收集了 1000 多个“数据科学家”的帖子,这个过程通常被称为“网络搜集”。按照数据科学工作流程,接下来的步骤是分析、可视化和交流。结果相当不错。

数据科学工作流程

云这个词说明了什么:

  • 首先哇!许多公司都在寻找合适的人选
  • 它是产品科学信息技术统计工程的交集
  • 这是一个技术技能的角色,需要计算机科学统计学机器学习,重要的是经验
  • 团队分析功能识别关于业务问题见解
  • 最后,有一种特定的编程语言一直被提及— Python

数据科学的影响

信息技术的快速发展推动了数据科学的兴起。数据的可用性使企业能够利用新的方法来获得业务洞察力。购买历史、搜索、点击、喜欢、评论、推文以及越来越多的健康数据都通过数据处理管道输入,并产生分析、模型和算法。数据科学家负责将数据转化为可用的信息。他们的分析已经成为各种规模和行业的企业和公司的重要工具。它回答了如下问题:

  • 业务拓展的机会在哪里?
  • 公司如何提高运营效率?
  • 需要解决的潜在风险是什么?

数据科学的三大支柱—技术技能

数据科学被认为是一个跨学科领域,它使用一种科学的方法从数据中提取信息。有三大支柱:统计学计算机科学领域专长。他们每个人都为帮助数据科学家实现他们的目标做出了巨大贡献。在现实中,从业者在所有支柱方面往往不是同样强大,但在一个或多个方面的优势往往可以弥补其他方面的优势。

  • 统计学——与其他科学和研究领域不同,数据科学是一门基于数学统计学概念的科学,它建立在拥有论文实验的基础上。更高级的分析还需要对概率分布的深入了解,这用于分析事件的相对频率可能性。此外,像机器学习这样的工具和方法需要熟悉处理向量空间的线性代数和研究变化的微积分
  • 计算机科学——计算机编程让数据科学家能够使用各种工具,用于争论处理数据。它允许快速执行计算。因为每个问题都是独一无二的,所以数据科学家需要精通软件,以便根据他们的特定需求定制和应用分析解决方案。掌握循环函数if-else ,以及线下并行计算逻辑,显著提高完成任务的能力
  • 领域专长——你需要对你正在工作的行业有一个扎实的了解,了解用于跟踪 T4 业务表现的 T2 指标,以及公司试图解决的业务问题

三大支柱的核心是数据科学家:

数据科学文氏图

所需的非技术技能

  • 创造力—你的角色是在数据中建立关系和模式的模型,这并不总是显而易见的(重要的永远不会)。数据科学家从不同的角度探索数据,以克服障碍,并发明可视化来讲述简洁的故事
  • 勇气——和任何科学领域一样,通往答案的道路需要严格的实验来检验结果,然后才能得出结论
  • 求知欲——随着新工具的出现,你所在的领域发展非常迅速,你需要学习更多知识才能跟上竞争的步伐
  • 沟通 —你需要清晰流畅地将技术发现翻译给团队,即使这些发现是非技术性的,这样他们就可以从数据分析中受益

摘要

随着信息技术的不断发展,收集的数据比以往任何时候都多。我相信隐藏在数据海洋中的洞见将会改变并极大地改善人们的生活。我们需要更多的数据科学家来管理和分析数据。在本文中,我们谈到了数据科学家的技能和特征。我希望能鼓励你更深入地了解这条职业道路。

“跳进来吧,水是热的。”

数据科学是干什么的?

原文:https://towardsdatascience.com/what-is-data-science-for-2f87edc8ad38?source=collection_archive---------66-----------------------

对于从数据领域起步的人来说

想象一大堆数据,它告诉你什么?不多,除非你有时间通读。不出所料,收集的数据继续日复一日地增长,就像浏览一遍的时间一样。它导致无监督的数据存储,这有两个明显的问题:没有人知道数据是否包含一致的信息,但是存储费用不断增长。这是数据科学可以带来巨大好处的众多案例之一。

我们为未来的决策收集数据,其中统计分析是新的直觉——数据探索可以找出不在表面上的事实,并提供路线图。数据保留了许多问题的答案,做数据研究的目的是突出阐明答案的重要部分。数据科学可以支持选择或提出一个新的独特的观点,创造意想不到的机会。

对于历史收藏品来说,数据科学也可以判断数据的价值。也就是说,您可以用缺失的信息来丰富数据,并提高您存储的数据的质量和价值。一个典型的例子是缺少描述信号/对象性质的标签,甚至是故障。这种知识的恢复要么是不可能的,要么需要人工的专家标注单词。因此,及时执行数据评估可以节省可观的预算,并避免存储无用数据的风险。

亚历山大·奥西波娃授权下的赫特斯托克

我没有大数据怎么办?

数据科学是基于领域知识和/或统计学习的高级分析。它适用于大而紧凑的数据集,无论其复杂程度和数量如何。最重要的是,如果数据包含的模式、关联或趋势对回答您提出的问题非常重要。

成为数据科学家的必备技能是什么?

除了编写查询和脚本的核心技能之外,数据科学家还拥有一系列高级经验。

有面向决策者和机器学习的数据科学。前者为人们提供见解,后者提供干净、功能丰富、有标签的数据集,这些数据集被汇集在一起,形成一个将学习做出决策的模型。前者重视讲故事和有意义的可视化,后者重视不带偏见、格式良好的数据。两个共同点——对来源的理解和给出数据驱动答案的愿望。

数据团队中还有谁?

数据科学领域很广,模型和算法取决于任务的上下文,团队技能取决于应用程序。数据科学家只是链条中的一环。

简而言之:数据工程师处理原始数据源、流处理和初始清理;数据架构师优化存储,部署更好的数据访问方式;机器学习工程师构建统计和深度学习模型;业务分析师将价值和结果塑造成最佳可行的结果。因此,数据驱动的项目需要团队合作和多样化的技能组合。

总之,数据科学成为现代企业的精髓——数据知识有助于构建市场规模的个性化产品,预见隐藏的趋势,实施人工智能解决方案,并支持重大财务决策。应用程序是不断的,只需一瞬间就能想象出数据科学能给你的故事带来什么。

关于作者:
我是一名从事复杂系统建模和数据科学的应用数学家。我在计算神经科学领域进行数据翻译研究,并与各种客户一起解释业务数据源,以获得洞察力并创造产品。

什么是深度学习?

原文:https://towardsdatascience.com/what-is-deep-learning-adf5d4de9afc?source=collection_archive---------22-----------------------

考察深度学习是如何从人工智能中衍生出来的,并理解其应用

图片作者:特里斯特·约瑟夫

数据科学正在变革许多领域;从机器人学到医学,以及介于两者之间的一切。这场革命部分是由于研究、计算能力、该领域内的兴趣和数据科学工具箱的进步。通常,人们认为数据科学是人工智能(AI)的极端进步;就像,最终赋予机器人独立完成人类主导的任务的能力。

尽管这可能是数据科学的一个方面,但它并不是数据科学的全部。相反,人工智能是数据科学工具箱的一部分。机器学习(ML)和人工智能等领域已经成为数据科学的热门领域,因为它们是非常强大的工具。

这些工具是强大的,因为它们学习并适应优化他们所负责的情况的结果。这很重要,因为尽管人类可以学习和适应优化结果,但机器目前在更大范围内完成这一点上占据上风。

许多问题相当复杂,要求一个人解决一个这样的问题是不合理的。相反,人类应该利用他们对情况的了解,并将其与计算能力和数据结合起来,以实现实质性的结果。这个的交叉点就是深度学习

图片作者:特里斯特·约瑟夫

那么,深度学习到底是什么?广义来说是 AI 的一个应用。由于深度学习是人工智能的一个子集,我们必须首先了解人工智能以及它寻求实现的目标。人工智能是使计算机能够模仿人类行为的任何技术。顾名思义,它是计算机科学的一个分支,强调机器内部智能的发展。在这种情况下,智能可以被认为是处理信息的能力,这些信息可以用来为未来的决策提供信息。

因此,人工智能的目标是开发有效的算法,这些算法可以处理能够通知未来决策的信息。ML 经常被用来达到这个目的。ML 是人工智能的一个子集,它为系统提供了自动学习和从经验中改进的能力,而无需显式编程。

现在‘学习’被提了很多。然而,机器不是像人类一样阅读书籍,进行研究,也不是像人类一样提问学习。相反,ML 算法使用计算方法来直接从数据中理解信息,而不依赖于作为模型的预定方程。

为此,使算法确定数据中的模式并开发目标函数,该目标函数最佳地将输入变量 x 映射到目标变量 y 。深度学习是进一步发展这一思想的子集。深度学习的目标是自动提取最有用的信息,为未来的决策提供信息。

图片作者:特里斯特·约瑟夫

让 ML 更进一步的想法看起来有点抽象,因此,有点模糊了 ML 和深度学习之间的区别。其思想是,典型的 ML 算法试图在数据中定义一组规则,这些规则通常是手工设计的。因此,当放置在开发环境之外时,ML 算法也可能不如预期的理想。

考虑一下' ThisIsPizza ',这是我虚构的一个应用程序,用来检测图片中的对象是否是披萨片。现在,拥有一个能够准确确定一个物体是否是披萨的应用程序和算法非常重要,因为人们不会想要吃一个看起来像披萨但不是披萨的三角形物体。披萨非常复杂,回想一下,机器比人类更擅长处理复杂的情况。因此,分类规则可以是,如果有一个三角形物体至少有番茄酱、奶酪、意大利辣香肠和三角形底部的皮,那么它就是一个比萨饼。但接下来,一个显而易见的问题是,如何确定某样东西是番茄酱、奶酪还是意大利香肠?

深度学习的想法是,这些特征将仅从原始数据中学习。没有必要将意大利香肠定义为一个红色的圆形图像。你能想象给奶酪或番茄酱下定义吗?相反,深度学习模型将开发线条、曲率和其他特征的分层表示,这些特征可用于区分奶酪和番茄酱,然后结合这些特征,然后检测更高级别的特征,如披萨片。

图片作者:特里斯特·约瑟夫

虽然 ThisIsPizza 被用作一个玩具例子,但解释的概念在日常应用中被用来克服多种“现实世界”的挑战。理解 ThisIsPizza 面临的挑战,以及深度学习如何被用来克服这些挑战,对于理解深度学习到底是什么至关重要。

举个更具体的例子,让我们来看看苹果的 Face ID。这是一个面部识别系统,可用于解锁苹果设备,以及在使用 Apple Pay 等服务时安全地充当认证系统。不需要太多的细节,Face ID 系统使用强大的摄像头来检测和绘制用户的脸。但是软件怎么知道它看到的其实是一张脸呢?换句话说,如果用户不小心扫描了他们的腿,然后付款通过,这将是一个大问题。

为了确定某样东西是否是脸,算法可能会尝试识别嘴、眼睛和鼻子。一旦这些都存在,那么算法可能会将图像分类为面部。但是,问题又来了,如何区分嘴、眼睛和鼻子。因此,为了进一步区分这些特征,我们可以说嘴是一对具有特定方向的线,这些线不应该位于鼻子上方。这些规则会不断变得更加复杂,并且需要为每个感兴趣的子项创建它们。

因此,深度学习的关键思想是,这些特征只需要从原始数据中学习。该算法将通过输入成千上万张人脸图像来学习这一点,然后它将开发一种识别人脸的分层方法。首先,它可能会尝试检测线、边和角等低级特征。接下来,它可以利用这些来检测中级特征,如嘴、眼睛和鼻子。然后,将这些组合在一起以检测高级特征,例如面部毛发或酒窝。

图片作者:特里斯特·约瑟夫

那么,深度学习到底是什么?这是一个强大的过程,通过自动提取未来决策所需的最有用的信息,使计算机能够模仿人类行为。数据科学正在变革许多领域,这部分是由于人工智能和计算能力等令人难以置信的工具的进步。现实世界的问题相当复杂,所以让我们尝试使用深度学习来解决它们吧!

参考文献:

【machinelearningmastery.com/what-is-deep-learning/

neuralnetworksanddeeplearning.com/

mathworks.com/discovery/deep-learning.html

其他有用的素材:

towards data science . com/what-is-deep-learning-and-how-it-work-2ce 44 bb 692 AC

www.youtube.com/watch?v=6M5VXKLf4D4

deeplearning.mit.edu/

https://www.inertia7.com/tristn

DevSecOps 到底是什么

原文:https://towardsdatascience.com/what-is-devsecops-a5f82196ad92?source=collection_archive---------47-----------------------

安全性必须是开发运维流程的一部分,不能分割。

我说的是坏消息。你的 DevOps 流程需要改变。你可能会迷失方向,因为我要求改变你的部署程序。你花了很多时间创建一个 DevOps 流程,一切都运行良好。那为什么要改呢?当您进行手动部署时,您可能会问同样的问题,我们第一次谈到了 DevOps。IT 趋势瞬息万变,我们需要适应变化。在这种情况下,我们不是在谈论一些惊天动地的事情,而是对效率的重大改善。

现在的话题是关于安全的。拥有一个工作项目是如此的困难,以至于我们经常看到安全问题就像一个冗长乏味的步骤被留在了最后。类似于最终检查。现在,没有安全漏洞的空间了。我们的应用程序和它们管理的信息是如此珍贵,以至于我们需要将安全问题作为需求的一部分。我们不能丢下安全小组不管。他们不是坏人。这就是为什么我们需要让他们参与开发过程,减少摩擦和预防问题。

在本文中,我们将了解 SecOps,以及如何集成到实际的 DevOps 实践中来帮助实现精益和高效的流程。

沃纳·莫泽达皮克斯拜

什么是 DevSecOps?

在首字母缩写的噩梦中,DevSecOps 不是另一个弗雷迪·克鲁格。我不喜欢缩写,但是我们需要给事物命名😃

在开始定义之前,我们需要对以前的文章做一个简单的总结。我们有:

  • DevOps 是开发和运营的融合,
  • FinOps 财务与运营的融合
  • NoOps 的目标是创建一个独立工作的流程,

现在我们有了 DevSecOps,它是开发、安全和运营的混合体!这很清楚,如图所示。

作为开发、安全和运营的组成部分。丹尼尔·丰塔尼的照片。

换句话说,DevSecOps 是 DevOps 的发展,我们明确地关注安全角色。安全主题现在是所有团队成员的共同责任。

为什么我们需要给保安更多的证据?

这个问题与安全重要性无关。每个应用程序应该工作,但也需要安全。这是必不可少的要求,安全的作用不是题目。我们谈论的是部署应用程序的过程。试着忘记 DevOps 和我们现在拥有的所有好东西,只考虑经典的部署过程。流程是,开发人员构建应用程序,将工件交给系统管理员,在一些测试环境中部署,最后,安全部门在投入使用之前进行一些检查。这听起来很古老,但是,简单地说,这就是我们的过程。由于我们在运营和开发团队之间的互动上存在的所有问题,我们明白我们需要一个新的、更加敏捷的过程,在这个过程中,他们一起工作,共享知识和责任。

DevSecOps 哲学背后的主要思想是,我们需要在安全性方面做同样的事情。这导致一个扩大的团队开始考虑安全性,因为项目移动了第一步,正如 DevOps 案例中的部署一样。

DevSecOps 有什么优势?

DevSecOps 创建了一个在开发过程中测试 SecOps 主题的循环实践。这样做,您将减少团队之间的摩擦,并且您避免了这样一种棘手的情况,即功能,或者更糟糕的是整个应用程序,已经完成,并且您需要与 SecOps 团队一起在发布前一天匆忙地解决问题。如果安全检查是自动化的,并且在第一个开发日就完成了,你就不会在这个问题上跑了,因为你会被及时注意到,你就能够解决它们并防止它们的扩散。

DevSecOps 在实践中如何工作

DevSecOps 不是黑魔法。就像简单的 DevOps 一样,它基于工具并从自动化中获取动力。第一步是拥有安全检查的自动化工具,这可以从 SecOps 团队中找到。下一步是将它们自动化,这样就不需要人工去按按钮了。这一步可能有点难,但是大多数测试是由自动化工具完成的,您可以从测试的子集开始。一旦有了这些,为什么不集成到部署管道测试中呢?这将给你带来双重优势:

  1. 您被迫从一开始就集成安全性,这将防止不良意外
  2. 您的每个部署都将被自动检查,所以您不会有倒退

除此之外,当你需要的时候,你仍然可以运行手动或者监督的测试,但是很明显,你能自动化多少和更容易将是过程管理。

带什么回家

我在德弗塞科普斯没有看到任何改变生活的东西。在这个过程中集成 SecOps 是聪明的,也就是说。但是随着从孤立的部门到开发团队的趋势,合作和建立共同责任感的好处是显而易见的。这就是为什么我认为 DevSecOps 是 DevOps 的自然发展,如果安全性在您的项目中很重要,那么以一种整体的方式处理它,用一种结构良好的方法是最好的解决方案。反正有个项目安全性不重要?

什么是领域驱动设计?

原文:https://towardsdatascience.com/what-is-domain-driven-design-5ea1e98285e4?source=collection_archive---------2-----------------------

6 关于领域驱动设计的面试问题和答案

照片由德鲁·海斯Unsplash 上拍摄

这是前一阵子的事了。工作日已经结束,之后,我将参加一个潜在新客户的面试。在面试中,感觉面试官分享了相同的关于软件开发的想法,他们的产品看起来很有前途。一切都很顺利——直到——不幸的是,面试官问:“什么是领域驱动设计?”

想象你坐在那里。你会说什么?对于领域驱动设计这样一个宽泛的概念,很难给出一个很好的定义,不是吗?你从哪里开始?

很难令人信服地回答这个问题。如果不是这样,每个人都会完美地应用领域驱动设计。然后在 2003 年,埃里克·埃文斯就不会需要 560 页来写一本关于它的书。面试官希望听到的是热情和渴望学习。相反,他经历了尴尬的沉默。

他没有看到被采访者正试图在他的头脑中形成一个关于这个问题的所有概念的定义。采访者看不到这一点,事实上,我们不能因此而责怪他。大声思考是受访者的工作。提示:大声想出来,如果你不知道什么,至少说你想学。

在这篇博文中,让我们来看一下六个重要的概念。如果你遇到同样的问题,告诉你的面试官这是一个非常宽泛的概念。并且告诉他/她你对领域驱动设计的一些重要概念有所了解。讨论一些。如果你不想从读一本 560 页的书开始,可以从这里开始。之后,你会明白领域驱动设计是怎么回事。

1.什么是“域”?

正在开发的应用程序所应用的主题领域称为领域。当开发一个应用程序时,了解它应用的环境总是好的。有时,一个组织可以活跃于多个领域。例如,一个公司可以同时从事销售、运输和维修。

一个组织可以针对子领域进行不同的组织。如果你是开发销售的应用,最好从“销售”来看。所开发的应用程序的语言将与业务保持一致,应用程序总体上将更有意义( E .埃文斯,2003 )。

2.什么是“有界语境”?

在领域驱动开发中,“有界上下文”是一个重要的概念。它给出了关于如何处理大型领域模型和大型组织的更多信息。为了处理一个大的模型,你可以把模型分成不同的区域,我们称之为“有界环境”。

一个组织可以分为销售部门和支持部门,每个部门都在其上下文中运行。通过在有限的环境中工作,工作变得更容易,更有条理( M .福勒,2014 )。

3.「无处不在的语言」是什么意思?

基本上,无处不在的语言是开发团队和领域专家共享的语言。因为他们必须紧密合作来创建一个短的反馈回路,这是非常有意义的。

这种语言不仅要在领域模型中使用,还要在应用程序的代码中使用。如果开发团队和业务团队不合作,他们开发自己语言的机会就会增加。这可能会在他们之间引入语言障碍( DDD,2019 )。

让我们总结一下这种无处不在的语言的一些关键特征:

  • 必须在领域模型中表达。
  • 将“技术性的”开发人员语言排除在领域模型之外,这是领域专家无法理解的。
  • 减少领域专家引入领域模型的矛盾和不准确性。
  • 随着应用程序的增长而发展。

4.什么是“反腐败层”?

为了防止两个领域互相污染,你必须在它们之间建立一个边界。每个领域都有其无处不在的语言和领域模型。

反腐败层在两个域模型之间进行转换。该层可以是单向或双向的,并且通常由众所周知的模式(例如适配器、外观、转换器)来实现。我们必须记住,创建一个反腐败层可能非常耗时。只有当你想保护你的领域不受外界影响时才应该使用它( A Shirin,2018 )。

5.“实体”和“值对象”有什么区别?

理解实体和值对象之间的区别对于在应用程序中模拟真实世界很重要。我在这里列出他们之间的主要区别( V Khorikov,2016 ):

  • 身份:值对象没有身份,而实体有。具有相同值的值对象本质上是相等的。实体是独立存在的。
  • 生命周期:价值对象不是独立存在的,而是属于某个实体。它们可以很容易地被摧毁和创造。实体存在并有历史。

6.什么是“集合”?

埃里克·麦克林在 Unsplash 上的照片

聚合是一种领域驱动的设计模式。它是域对象(例如实体、值对象)的集群,被视为一个单一的单元。汽车就是一个很好的例子。它由轮子、灯和发动机组成。他们在概念上属于一起。

每个聚合都有一个聚合根。在我们的示例中,这可能是机箱号。它确保了骨料整体的完整性。每个集合表示一个事务边界。

结论

这些问题的答案应该让你对领域驱动设计的确切含义有一个很好的了解。不要认为这是一个完整的指南。关于这个主题已经写了很多,你可以读几本这方面的书。

如果你有这方面的必读材料,分享一下吧。回应这个故事,做个英雄。560 页之后,我觉得我才刚刚开始我的 DDD 之旅。

EDA 是什么?是的,关于 EDA 的另一个帖子

原文:https://towardsdatascience.com/what-is-eda-yes-another-post-on-eda-d8b5c06269a9?source=collection_archive---------26-----------------------

马库斯·斯皮斯克在 Unsplash 上的照片

通过 EDA 库、特征重要性、特征选择和特征提取,使您的数据美观易懂

包含所有相关代码的笔记本可以在 GitHub 上找到。

I —探索性数据分析或通常的 EDA

是的,这是许多关于 EDA 主题的文章中的一篇新文章。这一步是数据科学项目中最重要的一步。为什么?因为它允许你获得关于你的数据、想法和直觉的知识,以便能够在以后对数据建模。

EDA 是让数据说话的艺术。能够控制它们的质量(丢失的数据、错误的类型、错误的内容……)。能够确定数据之间的相关性。能够知道基数。

EDA 不仅仅是探索数据。当你有一个目标,一列包含标签(监督学习)你也有特征选择和特征重要性。没有标签,你就有了特征提取(无监督学习)。

多年来,最好的方法是不厌其烦地编写相同的函数来计算相关性,绘制变量,手动浏览列来计算感兴趣的变量,等等…

但是现在有更简单、更快速、更有效的方法来完成所有这些:

内务部。熊猫-侧写

首先, pandas-profiling 创建关于数据帧内容的报告,采用 HTML 格式,界面非常友好。基于 pandas,它允许以优异的性能(高达一百万行,这是作者推荐的最大值)对数据进行完整的探索。该报告可以通过 jupyter lab笔记本中的小工具进行整合。或者,它也可以呈现为一个框架。

正如作者指出的,您将获得以下信息:

类型推断:检测数据帧中列的类型。

要素:类型、唯一值、缺失值

分位数统计如最小值、Q1、中值、Q3、最大值、范围、四分位间距

描述性统计如均值、众数、标准差、总和、中位数绝对偏差、变异系数、峰度、偏度

最频繁值

直方图

相关性突出显示高度相关的变量、Spearman、Pearson 和 Kendall 矩阵

缺失值缺失值的矩阵、计数、热图和树状图

重复行列出最常出现的重复行

文本分析了解文本数据的类别(大写、空格)、脚本(拉丁文、西里尔文)和块(ASCII)

资料来源:熊猫简介

您可以在库的 GitHub 页面上找到示例,例如:

  • NASA 陨石降落这个报告是 profil_report() 函数的输出,它显示了这个库是多么强大。

怎么用?让我用几行代码向您展示:

与硬编码的东西相比,它需要几秒钟来计算,并得到令人印象深刻的结果。

在小部件中显示报告时的结果:

pandas-widget 中的配置文件报告(渲染)

当您在笔记本内部的框架中显示报告时,结果是:

熊猫-在框架中分析 HTML(渲染)

Ib。Dataprep.eda

另一个很棒的库是 dataprep 带模块 eda 。它在做什么?

您有三个主要功能:

  • 剧情
plot(df)

波士顿房价数据集上 dataprep.eda 包的绘图函数

该函数将显示每个特征的直方图。每个情节都基于散景库进行交互。您可以使用不同的参数来显示所需数据的信息。

  • plot_correlation
plot_correlation(df)

该函数允许您计算三种相关矩阵(Pearson、Spearman 和 KendallTau)。其优点是该图也是交互式的,只需将光标放在上面就可以看到数值。

波士顿房价数据的 plot_correlation

  • 剧情 _ 失踪
plot_missing(df)

最后一个函数非常有趣,如下图所示。它允许您可视化列中缺失数据的位置及其百分比。

plot_missing 函数

Ic。Sweetviz

最后一个有趣的库是 sweetviz 。基于 pandas-profiling,该库允许比较不同列或训练和测试数据部分,以确定测试集是否代表训练。就像熊猫简介一样,每一栏都有大量的信息。下图是库生成的 HTML 报表的仪表盘。

使用 Sweetviz 进行训练和测试的比较

II —特征选择

EDA 不仅仅关注数据内部的内容。还可以通过以下几个部分进行更深入的分析。要素选择是减少数据集中要素数量的一种方式。

在这里,我只提出三种方法。 sklearn 库拥有强大的模块来做你想要的选择或提取数据的工作。

IIa。移除低方差特征

这种技术只允许我们选择方差低于阈值的特征。默认情况下,它会移除所有零方差要素,即在所有样本中具有相同值的要素。在下面的代码中,丢失 80%以上数据的列将被自动删除。

from sklearn.feature_selection import VarianceThreshold
threshold = 0.8 *# 80% of low variance*fe_low_variance = VarianceThreshold(threshold=(threshold * (1 - threshold)))
X_variance = fe_low_variance.fit_transform(X)

联合调查局。单变量选择

在监督学习中,你有一个目标特征(俗称 y )。单变量选择的目标很简单:选取一个特征,对其进行变异,并观察这如何影响目标。最后,单变量选择将基于单变量统计测试选择最佳特征。

有了 sklearn,你有 4 种方法可以做到。

  • 【select kbest:这将选择数据集的最佳 k(由用户手动选择)特征,并移除其他特征。这个函数需要一个计分器,一个度量函数来应用选择。常用的计分器功能有chi2
  • select percentile:与 SelectKBest 相同你需要传递一个计分器,但是你传递的不是一个 k 数量的特征,而是一个百分位值。
  • SelectFpr/SelectFdr/SelectFwe:由 pvalues 根据误报率、误发现率和族错误进行选择。
  • GenericUnivariateSelect:在这里您可以用可配置的策略定制您的估计器。

在下面的代码中我使用了SelecKBestwithchi2scorer:

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2#apply SelectKBest class to extract top 10 best features
select_best_features = SelectKBest(score_func=chi2, k=10) *# where k is the number of features you want*
fit = select_best_features.fit(X,y)
df_scores = pd.DataFrame(fit.scores_)
df_columns = pd.DataFrame(X.columns) *# where X is your data*
#concat two dataframes for better visualization 
feature_scores = pd.concat([df_columns,df_scores],axis=1)
feature_scores.columns = ['Specs','Score']  #naming the dataframe columns
print(feature_scores.nlargest(10,'Score'))  #print 10 best features

IIc。递归特征消除

如下图所示,RFE 的原理很简单。估计器拟合数据并计算特征重要性(目标上数据的权重)。在每次迭代中,模型将删除重要性较低的特征,直到达到所需的 k 个特征的数量。

RFE 的图式

我们该如何编码呢?我在这里展示了 、SVM逻辑回归 的一个实现。

SVM:

from sklearn.svm import SVC
from sklearn.model_selection import StratifiedKFold
from sklearn.feature_selection import RFECV*# SVM implementation*
svc = SVC(kernel="linear")
*# The "accuracy" scoring is proportional to the number of correct*

rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(5),
                  scoring='accuracy')
rfecv.fit(X, y)print("Optimal number of features : %d" % rfecv.n_features_)

逻辑回归:

*# Feature Extraction with RFE*
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegressionmodel = LogisticRegression(solver='lbfgs', max_iter=5000)
rfe = RFE(model, 3)
fit = rfe.fit(X, Y)
print("Num Features: %d" % fit.n_features_)
print("Selected Features: %s" % fit.support_)
print("Feature Ranking: %s" % fit.ranking_)

IId。SelectFromModel

最后一种方法是前一种方法的推广,因为SelectFromModel采用 估计器 并返回一个包含缩减维度的新矩阵。

下面的代码显示了如何实现它:

from sklearn.svm import LinearSVC
from sklearn.feature_selection import SelectFromModellsvc = LinearSVC(C=0.01, penalty="l1", dual=False) *# estimator*
lsvc.fit(X, y)
model = SelectFromModel(lsvc, prefit=True)
X_new = model.transform(X)
print(f"The new number of feature is {X_new.shape[1]}")

III —特征提取

IIIa。主成分分析

主成分分析是一种用于降低数据集维度的方法。原理很简单,PCA 会用一条线或一个平面来拟合这些点,以创建数据的另一种表示。

主成分分析投影

代码使用起来很简单。你只需要指定 N_var 参数,它代表你想要的维数。

from sklearn.decomposition import PCA
N_var = 2
pca = PCA(n_components=N_var)
X_pca = pca.fit_transform(X)
df_pca = pd.DataFrame(data = X_pca, columns = ['PC1', 'PC2'])

IIIb。独立成分分析

ICA 是分离线性混合的多变量独立信号的一种强有力的技术。这项技术允许我们在信号处理中分离不同的信号。

下面的代码显示了一个 FastICA 的实现:

from sklearn.decomposition import FastICA
N_var = 2
ica = FastICA(n_components=N_var)
X_ica = ica.fit_transform(X)

IIIc。线性判别分析(LDA)

LDA […]是对 Fisher 线性判别式的推广,这是一种在统计模式识别机器学习中使用的方法,用于寻找特征线性组合,以表征或分离两类或更多类的对象或事件。得到的组合可以用作线性分类器,或者更常见的是,在稍后的分类之前用于维度缩减(来源:维基百科)

与 sklearn 一起使用的简单方法:

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
N_var = 2
lda = LinearDiscriminantAnalysis(n_components=N_var)*# run an LDA and use it to transform the features*
X_lda = lda.fit(X, y).transform(X)

IIId。局部线性嵌入(LLE)

像所有以前的特征提取方法一样,LLE 是一种无监督的降维技术(n 维到 k 维,其中 k 是确定的)。目标是保留原始非线性特征结构的几何特征。LLE 是基于 k 近邻 (k-NN)技术。该算法将计算聚类,估计每个聚类的中心,并将其映射为线性加权表示。因此,聚类中包含的点在这个向量中是近似的,它最好地再现了聚类。

实施:

from sklearn.manifold import locally_linear_embedding
N_var = 2
lle, error = locally_linear_embedding(X, n_neighbors=5, n_components=N_var, random_state=42, n_jobs=-1)

IIIe。t 分布随机邻居嵌入(t-SNE)

T-分布式随机邻居嵌入(t-SNE) 是由 Laurens van der MaatenGeoffrey Hinton 开发的用于可视化机器学习算法。【2】这是一种非线性降维技术,非常适合在二维或三维的低维空间中嵌入用于可视化的高维数据。具体而言,它通过二维或三维点对每个高维对象进行建模,以这种方式,相似的对象通过附近的点进行建模,而不相似的对象通过远处的点以高概率进行建模。(来源:维基百科)

t-SNE 通常被比作 PCA 因为用 t-SNEPCA 对数据的可视化表示更好。 t-SNEPCA 更精确地分离尺寸。

sklearn 中提供了一个简单的实现:

from sklearn.manifold import TSNE
N_var = 2
X_embedded = TSNE(n_components=N_var).fit_transform(X)

VI —特征重要性

VIa。树形方法

树算法中的每个节点都是表示数据的一种方式。节点允许将要素的值(概率)分割成单个值。这种表示导致要素权重的确定(您想要预测的要素)。因此该算法可以计算目标上每个特征的重要性。您可以使用树模型的feature _ importance _参数来显示每个特征的值和标准差。

这里我提供了两种使用基于树的方法来计算这个特性重要性的方法。第一个使用(我过去经常使用它来确定我的特征的重要性)和 RandomForest

**from sklearn.ensemble import ExtraTreesClassifier
forest = ExtraTreesClassifier(n_estimators=250,
                                  random_state=0)forest.fit(X, y)
importances = forest.feature_importances_
std = np.std([tree.feature_importances_ for tree in forest.estimators_],axis=0)
indices = np.argsort(importances)[::-1]*# Print the feature ranking*
print("Feature ranking:")for f in range(X.shape[1]):
    print("%d. feature %d (%f)" % (f + 1, indices[f],   importances[indices[f]]))**

RandomForest:

**from sklearn.ensemble import RandomForestRegressorrf = RandomForestRegressor(n_estimators = 100,
                               n_jobs = -1,
                               oob_score = True,
                               bootstrap = True,
                               random_state = 42)
rf.fit(X, y)print('R^2 Training Score: {:.2f} \nOOB Score: {:.2f} '.format(rf.score(X, y), rf.oob_score_,))results = pd.DataFrame(data=rf.feature_importances_, index=X.columns)
results.columns = ["Importance"]
results.sort_values(by=["Importance"], ascending=False)
importances = rf.feature_importances_**

VIb。排列方法

在这篇文章中,你将看到的最后一件事是排列方法。目标很简单。估计器将采用与目标相关的特征,并将其混洗以测量其与目标的关联程度。它决定了估计器如何依赖于该特征。

这种技术受益于模型不可知,并且可以用特征的不同排列进行多次计算。(来源:sklearn )

这里,我提供了使用置换方法的三个实现。第一个包由RF pipe提供:

**from sklearn.metrics import r2_score
from rfpimp import permutation_importancesdef r2(rf, X_train, y_train):
    return r2_score(y_train, rf.predict(X_train))perm_imp_rfpimp = permutation_importances(rf, X, y, r2)
importances = perm_imp_rfpimp.Importance**

eli5 库提供了一个版本的置换重要性:

**import eli5
from eli5.sklearn import PermutationImportanceperm = PermutationImportance(rf, cv = None, refit = False, n_iter = 50).fit(X, y)
results = pd.DataFrame(data= perm.feature_importances_, index=X.columns)
results.columns = ["Importance"]
results.sort_values(by=["Importance"], ascending=False)
importances = perm.feature_importances_**

置换 _ 重要性通过基于 R2 估计的 sklearn:

**from sklearn.linear_model import Ridge
from sklearn.inspection import permutation_importance

X_train, X_val, y_train, y_val = train_test_split(
         X, y, random_state=42)

model = Ridge(alpha=1e-2).fit(X_train, y_train)

r = permutation_importance(model, X_val, y_val,
                               n_repeats=30, random_state=42)

for i in r.importances_mean.argsort()[::-1]:
    if r.importances_mean[i] - 2 * r.importances_std[i] > 0:
        print(f"{r.importances_mean[i]:.3f}"
                   f" +/- {r.importances_std[i]:.3f}")**

结论

嗨,你终于做到了。你已经到达这篇关于 EDA 和其他技术的文章的末尾。你知道如何用不同的库做 EDA。您知道选择数据集最佳要素的不同方法、降维以及要素重要性。现在,您已经准备好深入探索您的数据,并以可视化的方式表示它。我希望这篇文章和相关的笔记本能帮助你。

参考

[2]范德马腾,法学家委员会;Hinton,G.E. “使用 t-SNE 可视化数据”(2008 年 11 月)。机器学习研究杂志。9:2579–2605。

注意

本文中提供的图片由作者生成或由他绘制。

什么是基于事实的建模?

原文:https://towardsdatascience.com/what-is-fact-based-modelling-106ba15649fa?source=collection_archive---------34-----------------------

基于事实的建模是一种概念建模,其中关键数据结构,即事实类型,对事实进行操作。

有一些基于事实的模型是图形化的,还有一些是基于文本的。

基于图形事实的建模方法包括对象角色建模(ORM)全面向沟通的信息建模(FCO-IM)认知(CogNIAM)。基于文本的基于事实的建模包括星座查询语言。

什么是事实?

事实是这样的陈述:

"零件‘123’在仓库‘悉尼’的‘H2’箱里. "

事实为所谓的事实类型提供数据和结构。上述事实的事实类型读数为:

“零件在仓库的箱子里”

事实类型的读数称为事实类型读数。基于事实的建模对一个论域(UoD) 进行建模,这是模型所研究的主题领域。

下图是一个简单的对象-角色模型,带有一个事实类型及其相关的事实类型读数。

对象-角色建模是一种基于事实的建模

基于事实的建模的历史可以追溯到 20 世纪 70 年代,它诞生于以图形方式描述存储事实数据的数据库结构的愿望将自然语言融入其中。FBM 在模型构造中采用自然语言有助于模型的解释。其他类型的概念建模也在模型的构造中包括自然语言,如下面的实体关系图,它也将库存项目建模为仓库中的一个箱中的部件。

实体关系图

实体关系图中的库存项目实体存储仓库中仓位的零件信息,但 ERD 不表示事实类型读数为“零件在仓库的仓位中”。

类似地,属性图模式可能有一个库存项目节点和一个边,该边表示某个特定库存项目是针对某个零件的,但不是事实类型“零件在仓库的箱中”。

属性图模式

当作为对象-角色模型创建时,基于事实的建模与实体关系图和属性图模式的不同之处在于,fbm 显示了更多的语义信息,并且将显示不仅库存项目是针对 (a)零件的,而且每个库存项目是针对(a)仓库中(a)箱中的零件的。

对象-角色模型

因为基于事实的模型语义丰富,基于事实建模的软件可以用自然语言描述实体/节点及其关系,这样人们就很容易理解他们在看什么。基于事实的建模工具可以用自然语言提供模型的术语表视图:

自然语言中基于事实的建模术语表示例

如果您是一名业务分析师,需要生成论域的文档,使用适当的基于事实的建模工具,您可以用自然语言生成文档,并带有调查区域的图片。如果您需要有人在数据库/模型模式上签字,这很有帮助:

基于事实的模型文档示例

这是对基于事实的建模的简要概述。总的来说,基于事实的建模语言(如对象-角色建模)的语义丰富性提供了最有益的概念建模体验。

用基于事实的建模语言创建的模型可以很快很容易地转换成实体关系图和属性图模式,如果你的读者喜欢的话,那么使用正确的工具,你就不会局限于基于事实的建模。

感谢您的阅读。如果时间允许,我会写更多基于事实的建模。

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

我的甘怎么了?

原文:https://towardsdatascience.com/what-is-going-on-with-my-gan-13a00b88519e?source=collection_archive---------29-----------------------

GANs 的挑战、解决方案和未来

生成对抗网络是一类新的深度生成模型,近年来受到广泛关注。我过去曾以非常概括的方式介绍过它们(表格合成数据 —第 1 部分和表格合成数据 a —第 2 部分),并特别关注它们在合成表格数据中的应用。但今天,重点将有所不同——在一系列文章中,我将涵盖你在训练 GANs 时可以发现的挑战、最常见的解决方案以及文学的未来方向。这篇评论的灵感来自这篇关于 GANs 挑战、解决方案和未来的精彩文章——我强烈建议你深入了解一下。

生成对抗网络

近年来,生成模型被广泛应用于各种各样的实际应用中。“生成模型”可以被定义为计算密度估计的模型,其中模型分布被学习来近似真实数据分布。

这带来了一些挑战,因为研究表明最大似然法不是一个好的选择,会导致样本过于一般化和不可行。

生成对抗网络(GANs)可以通过引入鉴别器网络来解决这一问题,该鉴别器网络能够鉴别原始数据样本和由模型生成的样本。

生成对抗网络体系结构

它们具有广泛的应用范围,因为它们能够通过图像、音频和数据进行隐式学习,而这些图像、音频和数据很难用显式可能性进行建模。

挑战

在某些应用领域,GANs 可能非常有用,也相当具有破坏性,但是,就像在所有事情中一样,这是在它们的好处和我们在使用它们时容易发现的挑战之间的权衡。我们可以将 GANs 面临的挑战分为三个主要问题:

  • 模式崩溃
  • 不收敛和不稳定
  • 对超参数和评估指标高度敏感

为什么模式崩溃?🔥

GAN 有时会受到生成的样本很少代表总体的限制,这意味着,例如,在 MNIST 数据集上训练 GAN 后,可能会发生我们的生成器无法生成与数字 0 不同的数字。这种情况被称为模式崩溃。

主要缺点是,由于目标函数的原因,GANs 无法集中于整个数据分布。一些实验表明,即使对于双模态分布,GANs 也倾向于产生与主模态的良好拟合,难以推广。总之,模式崩溃是泛化能力差的结果,可分为两种不同类型:

  • 来自输入数据的大多数模式在生成的数据中不存在
  • 生成器仅学习特定模式的子集。

用香草甘训练时模式崩溃的例子。https://arxiv.org/pdf/1612.02136.pdf

模式崩溃的原因可能各不相同,从不合适的目标函数到所选 GAN 架构在考虑分析数据时的影响。但是不要再害怕了,有很多选择可以解决这个问题,很多人都在努力应对这个特殊的挑战。

不收敛和不稳定

GAN 由两个网络组成,并且每个网络都有其损耗函数,这一事实导致 GAN 本质上是不稳定的——深入研究这个问题,发生器(G) 损耗会导致 GAN 不稳定,这可能是梯度消失问题的原因,此时鉴别器****【D】可以轻松区分真假样本。

鉴别器损失函数

在 GANs 架构中, D 试图最小化交叉熵,而 G 试图最大化交叉熵。当 D 可信度高并开始拒绝 G 产生的样品时,导致 G 的梯度消失。

收敛失败的 GANs 损失和精度。摘自一篇关于识别和诊断 GAN 故障模式的文章。归功于。https://machine learning mastery . com/practical-guide-to-gan-failure-modes/

这可能指的是我们在训练 GANs 时针对的非凸博弈中存在局部均衡的假设,正如一篇关于 GANs 收敛和稳定性的文章中所提出的。在文献中已经提出了一些选项来缓解这个问题,例如反转用于构建交叉熵成本的目标或者应用梯度惩罚来避免局部均衡。

超参数和评价呢?

没有好的超参数的选择,任何成本函数都不起作用,而 GANs 也不例外,它们对网络超参数的选择更加敏感。超参数的正确选择可能是冗长而费时的,到目前为止,大部分的努力都是在诸如模式崩溃或 GAN 的收敛问题上。

没有选择好的超参数,任何成本函数都不起作用!

此外,多边农业组织缺乏有意义的措施来评估其产出的质量。自创建以来,GANs 已被广泛用于各种应用领域,从监督表示学习、半监督学习、修补、去噪和合成数据创建。广泛的应用带来了大量的异构性,这使得我们更难定义如何评估这些网络的平等性。因为没有定义健壮或一致的度量标准,特别是对于图像生成,所以很难评估哪些 GANs 算法优于其他算法。为了克服这一挑战,文献中提出了一系列评估方法,您可以在本文中找到关于 GANs 评估指标的有趣细节。

解决方案

所涵盖的挑战,是时候检查已经提出并广泛应用于 GANs 的解决方案了。

如前所述,尽管 GANs 训练面临许多挑战,但对于模式崩溃和不收敛问题的解决方案有很多研究。下图描述了 GANs 挑战解决方案的一个有趣的分类,这让我们对文献中可用的选项有了一个很好的了解。

图片来自关于 GANs 挑战、解决方案和未来的文章。演职员表:【https://arxiv.org/pdf/2005.00065.pdf

此外,将涵盖三个主要技术,以改善 GANs 的培训和整体效果。

探索新的网络架构

更好的 GAN 模型架构设计无疑是一个有效的选择。事实上,文献中有几个 GAN 是通过探索新的架构来解决特定数据挑战而产生的——例如, CGAN 是第一个提出的 GAN 架构的有条件版本,它无疑会在合成数据时带来更好的结果,另一方面, VAE-GAN 遵循编码器-编码器架构,它利用学习到的表示来更好地衡量数据空间中的相似性,从而提高视觉保真度,最后,例如, 存储器 GAN 遵循一种存储器架构,该架构可以缓解与无监督学习相关的两个主要问题,即生成器正确学习训练样本的表示的能力,以及鉴别器更好地记忆已经看到的生成样本的能力。

内存 GAN 遵循一种内存架构,可以缓解与无监督学习相关的两个主要问题

总之,在架构再造方面,研究将解决方案定位如下:

  • 条件生成
  • 生成-判别网络对
  • 利用编码器加入架构
  • 改进的鉴别器架构
  • 探索记忆网络

引入新的损失函数

由于模型参数波动很大,并且可能以永不收敛的方式变化,一些人决定探索新的损失函数,以帮助 GANs 达到更好的最优。事实上,一些研究人员已经指出,选择正确的损失函数可以有效地解决训练不稳定性。损失函数的改进可以归类为新的概率距离和散度的建议,这可以解决模式崩溃问题,因为它稳定了 GAN 训练,如在 WGAN 中观察到的,或者通过引入正则化或梯度惩罚,如在 WGAN-GP 中观察到的,这改进了之前提出的 WGAN 的训练稳定性。

检查替代优化算法

GANs 优化背后的概念是最小-最大博弈,这通常导致在训练过程中我们无法找到局部纳什均衡,也就是说,它们无法收敛。在文献中发现的一些文章中,已经提出了使用 同时梯度下降 t ,即使在已知难以训练的 GAN 架构上,也导致更稳定的训练和改进的收敛。

甘斯的未来

恭喜你!简而言之,您已经了解了在与 GANs 一起工作时发现的最常见的挑战,以及文献中最常提出的一些解决方案!从这篇综述中,可以理解,尽管在与 GANs 合作时有许多挑战需要解决,但它们无疑是近年来机器学习领域最重要的发现之一。

希望这篇评论能启发你开始挖掘这些令人惊叹的算法,并探索新的应用!

有用的链接

Github Repos

法比亚娜 YData的首席数据官。

通过设计使数据在保密的情况下可用。

YData 帮助数据科学团队交付 ML 模型,简化数据采集,因此数据科学家可以将时间集中在重要的事情上。

什么是好代码?

原文:https://towardsdatascience.com/what-is-good-code-an-actionable-introduction-1cad30551ad4?source=collection_archive---------23-----------------------

编码最佳实践

10 分钟可操作的介绍。

优秀的代码转换器(图片由作者提供)

在接下来的部分,我将介绍手头的主题,让你了解这篇文章将会涵盖的内容,以及其中的每一个论点将会如何处理。希望这能帮助你决定是否值得花时间阅读这篇文章的其余部分。然而,如果你想快速找到文章的症结所在,可以跳过下面的部分。好东西在那里等着你!

你想知道成为一名伟大的程序员必须遵循的 5 个简单提示吗?或者,提升你的编码能力,并在科技巨头中获得梦想中的工作的秘方?

—如果是,停止阅读。

因为,今天我拒绝让你知道这些强大的行业秘密。我这样做的原因有三。

1。没有这样的秘密。

如果有的话,我也退出俱乐部。唉!

2.写好代码的能力对别人的帮助比对你的帮助更大

如果你想学习写好代码,从而改善你的简历,或者能够完成你的下一个可交付成果,那么这是而不是需要学习的技能。写好代码是一种团队技能;这对你的同龄人有帮助,如果他们实践了,对你也有帮助。简单地说,写好代码是礼貌的事情。

它唯一能直接帮助你的时候,是当你碰巧回到你很久很久以前写的一段代码的时候!

3。好代码是一个以用例为中心的术语。

根据守则的目的,我们衡量其好坏的尺度将会改变。虽然我将触及一些不同的用例,但作为这篇文章的一部分,我将主要探索它们,为我今天想要关注的主要用例添加一些上下文和一些对比。

一个庞大且足够复杂的代码库,这意味着由许多作者跨多年路线图逐步开发,其生产环境托管在弹性 web 服务中并依赖于弹性 web 服务,其最终客户是人。

随着我们进一步探索,我们为什么选择将自己限制在这些参数之内将变得不言而喻。但是现在,让我们介绍一个简单而著名的思想,我们将在此基础上完成这篇文章。

“代码被阅读的次数远远多于它被编写的次数”

这是一个非常简单并且在某种程度上非常明显的观察结果,但却蕴含着深刻的见解。— 为人工阅读操作优化代码。

当我们第一次学习编码时,我们编写 Hello World 程序,然后慢慢学习简单的数据结构和算法。然后我们被介绍给 Big-O(s ),并学习从时间和空间复杂性的角度来思考。在我们的整个学术生涯中,我们都带着这种如何处理代码的心智模型,然后尝试在我们的工作空间中使用它来开发软件产品。

如果我们的目标是编写编译器/解释器能够理解的代码,这是一种很好的方法。因为,在这种方法中,我们对全局状态的概念、到处使用 setters 以及编写任何晦涩复杂的逻辑(从人类的角度来看)变得很舒服,只要它生成解释器可以更快处理的字节代码。

现在,我们不应该忽视这种方法带来的好处。我们的程序工作起来,占用尽可能少的空间,运行尽可能快。并且,如果代码一旦被编写,就意味着被固定在石头上,这种方法将会是解决我们所有问题的灵丹妙药,我们将从此过上幸福的生活。但是真实世界的用例,我们正试图为其编写好的代码,要流畅得多,也要混乱得多。

在墨菲定律占主导地位的混乱的现实世界中,这种方法带来了明显的权衡。

没有人愿意接触的错误代码库。

我们都知道那些代码库,我们曾经在某个时间点工作过,并且会找一百个借口来避免再次工作。造成这种情况的原因有很多,但其中一些最常见的,也是让我不时产生夜惊的原因是。

一切都是相连的。

代码是有效的(好吧,7/10 次是有效的),但是如果你在一个内部模块中改变一个私有方法来做一件事情,它会破坏一个完全不同的模块中的一些现有特性,做一些完全不同的事情。

每个人都有副业。

在整个代码库中,方法改变它们的输入参数,并且比蛇油有更多的副作用。这使得如果不阅读整个流程,甚至是最底层的细节,就不可能理解正在发生的事情。看着你,System.out.println()【1】【2】。

请把调试器递给我,好吗?

最近我在解决一个竞争性的编码问题。我最终得到了两个解决方案,一个(在某种程度上)优化了可读性,一个优化了编译器。

以下是一般性问题陈述。

通用问题陈述解决方案

现在让我们实现一个编译器优化的。

编译器优化解决方案

代码很小,并且非常高效。太好了。但是它是如何工作的呢?没那么简单,对吧?在您开始理解这段代码是如何工作的之前,您必须进行一次演练或启动调试器。

现在想象一下。

此代码为您客户的物流系统提供动力,但存在一个缺陷。你不修好它的每一分钟,成千上万的顾客都不知道他们是否还有足够的汽油来完成旅程。 在这样的代码中,你愿意成为负责尽快修复 bug 的人吗?

现在再想象一下。

编写本代码时,天然气的价格很便宜。所以我们的顾客不在乎价格,只要他们能完成他们的旅程。最近,运营国与其石油和天然气贸易伙伴之间爆发了一场贸易战。突然之间,价格成了一个重要的变量。 这个逻辑应该放在哪里?

现在你可能会说,“哎,让当初写这个的人,照顾一下这个要求吧”。那个人可能已经换了团队,换了公司,或者成为了一名口袋妖怪训练师。谁知道呢。

代码库是整个团队/社区的共享继承。 这个法典库应该是远古时期的。开发者应该是可替换的。如果我的缺席意味着我开发的特性成为孤儿,那么我的代码就是这种继承的负担。

因此,虽然这段代码对于当前用例来说是一项资产(小、轻、快),但是最轻微的震动都会将它变成负债(难以理解、修复和扩展)

在我们混乱的现实世界中,记住墨菲定律,

“任何可能出错的事情,都会出错”【3】

现在让我们转向更人性化的可读性优化解决方案。

人类可读性优化的解决方案

好,让我们看看这里会发生什么。

  • 对于每个站,从第一个开始,评估我们是否能从那里完成路线,过滤掉所有我们不能的站。
  • 在过滤的电台中,找到具有最小索引的电台。
  • 如果没有车站符合标准,我们会通知该路线无法完成。

我们甚至不需要知道circularoutedetails 做什么或者我们如何评估路线是否可以完成,就可以在高层次上理解我们正在做什么。****

现在,如果我作为一个读者想知道一些低层次的细节是如何工作的,我可以深入研究这些方法并弄清楚它。因此,尽管代码库更大,但作为读者,我可以简单地挑选我想知道的内容。第一步,我会在一本十页的字典中摸索,字典中的单词是随机排列的;第二步,我会按照严格的字母顺序,有条不紊地阅读第一千页。

做事情的能力是一种非常强大的能力,但遗憾的是,这种能力没有得到充分的重视。

在这个解决方案中,概念和职责被分离到代码的封装部分中。此外,方法、类和字段的命名经过精心选择,以帮助轻松识别所述职责(上面的代码可以进一步改进,我同意,但是你要明白)。所以现在当一个 bug 爬进来时,我不需要摸索整个代码库,我可以找到最有可能产生问题的部分并修复它。

如果你想检查整个代码库,请看这里

[## 实践/竞争

一个解决竞争性编程问题的 Repo,既干净又优化。GitHub 是超过 50 个…

github.com](https://github.com/pratickRoy/Competitive)

但是等等,我听到你问,

“嗯,我明白你的意思了。但是第二种解决方案速度较慢,因此在日常工作中,您将向客户交付较慢的结果。还有,会产生更多的硬件成本。”

所有有效的点,我很高兴你问他们!
为了回答这个问题,我会将您重定向到我们的用例定义。所以让我重申一下。

一个庞大且足够复杂的代码库,这意味着由许多作者跨多年路线图逐步开发,其生产环境托管在弹性 web 服务中并依赖于弹性 web 服务,其最终客户是人。

所以现在以这个用例为背景,让我们来详细回答这个问题。

1.速度

“但第二种解决方案速度较慢,因此,每天向客户交付结果的速度都较慢”

为了可测量的效率差异,让我们假设第一个解取 O(n)第二个解取 O(n )加油站数量为 1000 个,每一步的操作需要 1 s 。因此第一个解决方案将花费 1 毫秒,而第二个将花费 1 秒。毫无疑问,从电子学的角度来看,这是一个巨大的差异,但从人类感知的角度来看,这几乎是不可察觉的。一个人很难判断一个页面是在 1 毫秒还是 1 秒内加载的。我们用例的核心需求是什么?— “并且其最终客户是人类。”

但这种解释有点不真诚。这是因为我选择的价值观。如果有 10⁶加油站会怎么样?那么第一个解决方案将占用 1s第二个将占用 10⁶s 。10⁶s 肯定会引起用户的注意。在这里,第一个解决方案显然是更好的。或者是?

当设计一个真实世界的应用程序时,如果希望一次性处理 10⁶实体,您首先不会希望将它作为一个同步操作。10⁶实体,每个都可能有自己的数据库查找和服务间调用,是 10⁶潜在的故障点。我们需要确保节流&重试机制、状态管理和幂等保护措施到位。如果你的代码应该在一个单线程同步调用中处理一百万个条目,也许可以再试试这个设计。

我在这里想说的是,可伸缩性在很大程度上是一个高层次的架构问题。它可以通过多种方式解决,其中许多方式与您编写的代码无关。如果您不得不担心在代码方法级别满足您的规模需求,并且为此您不得不牺牲可读性,那么首先我们应该考虑重新检查架构一次。

然而,假设你正在建立一个高频交易平台,每一纳秒都很重要。在这里,选择第一种解决方案是有意义的。但如果最终客户是人,这里或那里的几秒钟对他们来说通常不是问题。然而,如果通过牺牲可读性,你的团队花了几个月的时间来交付一个不破坏你的代码库中所有其他东西的新特性,或者花了几个小时来识别和修补一个严重的错误,这阻止了你的客户使用你的应用,这实际上影响了你的客户。所以钥匙拿走了。

始终根据您的客户进行编码。

2.硬件成本

此外,这将导致更多的硬件成本。

没错。但是今天硬件很便宜。[4]

现在我不是提倡浪费。就算便宜,还是要花钱的,还是要付出环境的代价。

但是如果你牺牲可读性来节省硬件成本,你最终会让你的团队付出更多。因为可读性低,需要花费更多的工时在 bug 和每个新功能上。从经济和环境角度来看,熟练工人的工时要昂贵得多。(我在这里不对这种说法进行限定,因为我认为简单的谷歌搜索就足够了,但如果你不同意,请给我留言,我们可以进一步讨论)

所以关键外卖。

只要不影响理解,代码应该尽可能优化。

测量可读性?

嗯,好吧,我听到你问了,

“有道理,但是可读性是一个主观的实体。我们如何衡量它?为了能够在实践中加强这一点,我需要一些客观的方法来衡量它,对吗?否则就没什么用了”

嗯,正如你提到的,这是一个主观的质量,所以虽然我们不能得到一个精确的测量,我们可以按照著名的 WTFs 每分钟规则 5得到一个相对的测量,如果你想一想,这就是我们所需要的。

所以一个简单的方法是,

让你的同事阅读你的代码。他们在阅读你的代码时吃惊的次数越少,可读性就越好。

同样值得注意的是。我们提到的用例的参数是足够模糊的,如果你仔细想想,我们在日常生活中构建和使用的许多产品都属于这个描述,包括 Medium。
——我不会进一步解释,但先详细说明一下。这是值得的。😃

唷!那是一篇很长的文章。然而,我忽略了许多细微差别和问题。因此,如果你不同意我说的任何话,或者想进一步讨论以上任何问题,或者进一步讨论我在这里可能没有提到的任何细微差别,请留言。我非常乐意参与。辩论和讨论代码是生活中为数不多的可以而且应该过度享受的乐趣之一。

来源、脚注和进一步阅读链接

最后一次外卖

在你走之前,这是最后一份外卖。如果你经常检查代码库是否满足上述用例,并且不想,也不得不向作者详细解释你期望在他们的代码中看到什么。简单地说,给他们发一张弗兰克·安德伍德这段有力而简洁(并被大量转述)的引文的截图。

最后一次外卖(图片由作者提供)

[## 点击此处订阅:)

想在我写新东西时得到通知吗?每当我发布时收到电子邮件!

有两种作家,写得多的和写得少的。我是后者。我痴迷于创造价值,回避噪音。如果想看这样的内容,可以考虑订阅。](https://pratickroy.medium.com/subscribe)

什么是谷歌广告数据中心?

原文:https://towardsdatascience.com/what-is-google-ads-data-hub-ac914636d88?source=collection_archive---------15-----------------------

来源:沉积照片

营销人员需要知道的一切

每个广告服务都有兴趣展示它是如何帮助广告商增加销售额的。为此,谷歌分析、脸书分析等服务应运而生。但是当涉及到评估媒体广告的效果时,情况就困难重重了。经典的网站分析工具无法衡量媒体广告的有效性(因为广告互动发生在广告商网站之外),其他工具也无法给出透明的估计。

为了解决这个问题, Google 推出了 Ads Data Hub ,一个评估媒体库存数据有效性的工具。它允许您将显示广告数据与网站和 CRM 数据相结合。

Ads 数据中心是为了什么而创建的?

有经典的透视转换。大多数媒体工具让你知道有多少看到横幅的用户下了订单。但是这些工具没有显示用户从查看横幅到购买的所有步骤,也没有考虑从 CRM 系统购买的订单。

广告服务提供上传的工具,比如来自谷歌的数据传输,这样广告主就可以将活动信息与自己的数据结合起来。以前,你可以从 DoubleClick Campaign Manager (DCM)上传包括用户 ID 在内的每次点击、浏览或事件的原始日志数据到 Google BigQuery。然而,在 2018 年, GDPR 规则禁止广告商下载用户数据,因为他们与出版商的平台而不是广告商的网站进行互动。

因此,谷歌允许广告商根据所有隐私要求透明地评估展示广告的效果。现在用户 id 不能从 DCM 和 DPM 下载,但是可以在 Ads 数据中心获得。

Ads Data Hub 出现还有一个原因。对于大多数广告客户来说,展示广告是电视或户外广告的一种替代方式。它不是绩效营销的替代品,而是另一种媒体推广工具。与电视广告不同,媒体广告没有既定的基准。这就是为什么广告商需要一个工具来显示他通过展示广告与哪些观众互动。

谷歌创造了这样一个工具。很快,大多数投资媒体广告的大型广告商将被迫掌握广告数据中心。

Ads 数据中心报告示例

假设您在 Google Display Network 发起了媒体宣传活动,并希望评估其效果。借助 Ads Data Hub,您可以将来自 Campaign Manager 的 SQL 查询视图、来自 Google Analytics 的会话和在线购买以及来自 CRM 的已支付订单合并在一起。

因此,您将构建一个包含以下信息的报告:

  1. 广告活动的名称。
  2. 每个活动的浏览量。
  3. 活动覆盖范围—已看到横幅的用户数量。
  4. 会话数据。它包括看到横幅广告但没有点击广告链接的用户的会话。比如用户看到了一个广告,记住了,然后在搜索中找到了你的站点。
  5. 点击广告中的链接。
  6. 在线转换。
  7. 来自 CRM 的确认订单。

图片由作者提供

这就是 Ads Data Hub 允许你测量观看后转化率的方式。如果您构建这样一个没有 ADH 的报告,它将只包括那些点击横幅进入网站的用户。你不会了解那些没有点击广告,但后来以另一种方式进入网站的人。此外,CRM 中也没有真实的销售额(报告中的黄色栏)。

谷歌广告数据中心如何工作

Ads Data Hub 是一个 API,是 Google BigQuery 中的一个数据工具。它不是一个独立的数据存储。事实上,Ads 数据中心链接了两个 BigQuery 项目——你自己的和谷歌的。

来源:谷歌博客

Google 项目存储来自 Campaign Manager、Display & Video 360、YouTube 和 Google Ads 的日志数据。根据 GDPR 规则,你无法从其他地方获得这些信息。

另一个项目存储从 Google Analytics、CRM 或其他来源上传到 BigQuery 的所有营销数据(在线和离线)。谷歌团队没有访问这个项目,因为它完全是你的。

Ads Data Hub 作为一个 API,允许您同时从这两个项目请求数据,而无需在用户级别上传它们。这使得你可以将所有的点击和转换链接到印象数据,并查看每个活动如何影响转换。

重要:Ads Data Hub 给出的查询结果聚合到 50 个用户,也就是说每个表行必须包含 50 个或更多用户的数据。您不能深入到一个特定用户。创建此限制是为了遵守 GDPR 规则。

如何使用 Ads 数据中心

您需要在 Google BigQuery 中上传网站和 CRM 数据,这些数据将与您的广告活动中的印象数据相结合,以使用 Ads Data Hub。

您还需要配置客户端 ID 用户到 Campaign Manager(以前的 DCM)的传输,以设置将网站数据与显示广告数据相结合的标识符。你可以用泛光灯做到这一点。

下一步是什么?

  1. 访问 Ads 数据中心。为此,你可以联系 OWOX 或另一家谷歌官方合作伙伴。
  2. 将您的活动管理器、DV360、Google Ads 或 YouTube 数据连接到 Ads 数据中心。
  3. 如果您还没有将您的数据连接到 Google BigQuery,您可以使用 OWOX BI Pipeline 来完成。
  4. 使用 OWOX BI 将在线转换数据从 CRM 上传到 Google BigQuery。
  5. 构建 SQL 查询来分析上传的数据。
  6. 在 BigQuery 项目中选择一个表来保存查询结果并运行查询。
  7. 将你的分析结果可视化。

如果你不熟悉 SQL,这没什么大不了的。我们将为您提供一个解决方案,通过在报告构建器中选择所需的指标和参数,在没有任何 SQL 知识的情况下,在 OWOX BI 中基于 Ads 数据中心数据构建报告。

关于广告数据中心对营销人员的优势

很久以前,营销人员创建 Excel 文件并交换它们来共享信息。后来大家发现,最好把数据存储在一个地方,按需使用最新的信息。文档云存储的想法就是这样出现的。

Excel 仍然是最流行、最快速的数据处理工具之一。但是让“编辑”访问同一文档和处理文档的副本之间有很大的区别。

MarTech data 在为每个 MarTech 服务创建数据副本以进行计算和报告方面取得了历史性的进步。每份新报告都需要大量的工作,一遍又一遍地将数据从一个来源上传到另一个来源。Ads 数据中心成为这种模式的概念性替代。

现在,每个营销人员都可以手动将谷歌广告中的数据上传到 BigQuery。如果这些数据在广告服务中被追溯性地更改,那么 BigQuery 项目中的数据将不会自动更新,并且不可靠。

有时甚至不清楚构建某个报告需要什么样的媒体广告数据。为了每周构建一次报告,营销人员需要手动将千兆字节的相应数据上传到项目中。

相反,Ads Data Hub 通过 SQL 接口引用来自 Google 广告服务的数据。您的 GBQ 项目包含来自其他来源的数据(例如,来自 CRM)。当您需要广告活动数据的报告时,您只需通过 SQL 请求所需的信息,即可立即获得所有最新信息。您不需要在项目中存储广告数据。现在更新也是自动功能,营销人员不用担心。您收集的所有数据都可以用于您的报告。

什么是谷歌分析?

原文:https://towardsdatascience.com/what-is-google-analytics-23fe684b1e75?source=collection_archive---------52-----------------------

理解谷歌分析,为什么使用它,以及如何使用它的介绍性指南。(附案例分析示例!)

来源。

介绍

本质上,谷歌分析是一种工具,它允许我们聚集、过滤和可视化数据,以了解用户如何与网站互动。我们可以访问人们在他们使用的网站上留下的数据踪迹,而不是仅仅依靠直觉和经验来影响业务成果。这种数据跟踪为企业提供了对用户行为、兴趣等的宝贵见解,以采取行动来改进他们的产品或服务。

为什么要用?

对于任何拥有交易数据和/或在线业务(几乎所有企业都这样做)的当代企业来说,谷歌分析是一个至关重要的工具。谷歌分析帮助企业衡量营销策略的有效性、在线内容的质量、点击量、用户体验和网站功能等。通常,公司会识别并跟踪KPI****(关键绩效指标)来监控增长和转换率。在数据丰富的 21 世纪,企业的成功已经成为数据收集、分析和测试以满足公司目标的严格练习。

它是如何工作的?

Cookies 是由浏览器存储在计算机硬盘上的小文本文件,用于保存用户特定的数据。Cookies 是使用 JavaScript 跟踪代码嵌入的。来源。

听说过饼干吗?嗯,cookies 是使用谷歌分析的一个基本要素。没有 cookies,就没有数据可以分析!Cookies 已经成为日常网络浏览的一部分。据 W3Techs 统计,截至 2020 年 5 月, 44.2%的网站使用 cookies。

它是这样工作的:JavaScript 跟踪代码(cookies)被嵌入到一个公司的网站中。跟踪代码为访问网站的每个用户(其中“用户”是“设备”和“浏览器”的组合)分配一个唯一的“客户端 ID”。由此,一家公司可以收集大量关于用户如何参与其网站的数据。例如,这里有一些可以收集的东西:

  • 您使用的是什么设备和浏览器。
  • 如果你是新的网站或以前访问过。
  • 你点击了什么,点击了多少次。
  • 你在网站上下载的东西。
  • 你是如何进入网站的?
  • 你在网站上花了多少时间(会话时长)。
  • 你放在购物车里的东西,你丢弃的东西,你购买的东西。

帐户-属性-视图

使用 Google Analytics 的结构是通过一个 4 层的层次来定义的:组织、账户、属性、视图。该层级通过下图进行解释。

出处。

组织 —组织是我们公司。在这里,我们可以控制组织的所有 Google 产品帐户,管理谁使用 Google 产品,以及他们的权限。

账户 —账户是我们可以访问谷歌分析产品的地方。我们选择一个帐户来访问谷歌分析,并确定我们想要跟踪的属性。我们可以将一个帐户仅与一个属性相关联,或者我们可以使用一个帐户来管理多个属性,无论哪种方式对组织我们的工作流最有意义。

属性 —属性是我们从中提取数据的位置。这可以是数字位置,如网站或应用程序,也可以是物理位置,如收银机或读卡器。当我们添加新酒店时,Google Analytics 会自动创建跟踪代码(cookies ),用于从该酒店收集数据。跟踪代码中的唯一“ID”允许 Google Analytics 识别来自该物业的数据。我们所要做的就是将跟踪代码整合到我们的网站/应用程序中。

视图 —视图是我们查看数据的方式。在视图中,我们可以解析、过滤和组织来自属性的数据。我们可以为用户分配对视图的访问权限,以控制哪些人可以看到某些数据,哪些人不能。我们通常在一个物业内有许多视图。

正在设置

首先,我们想创建一个谷歌分析帐户。幸运的是,我们可以免费做这个!谷歌将为我们设置一个“演示”帐户,其中包含来自谷歌商品商店的真实数据。这是一个很好的实验环境,让我们看看真实的数据,让我们尝试谷歌分析必须提供的一些功能。要设置这个,我推荐跟随这篇在 support.google.com 找到的文章。

完成所有设置后,您可以开始创建新视图来分析和可视化您的数据。首先,要创建一个新视图,请单击“Admin”选项卡。然后,选择您想要添加视图的“帐户”和“属性”。最后,在“视图”列中,单击“创建新视图”。参见下面的分步截图作为示例。

第一步:点击仪表板左下角的“管理”。来源:作者。

第二步:从“账户”栏下的下拉菜单中选择一个账户。来源:作者。

第 3 步:从“属性”列下的下拉菜单中选择一个属性。来源:作者。

第四步:点击“创建视图”来创建一个新的视图!来源:作者。

基本观点

视图是一个透镜,通过它可以看到我们的数据。我们经常过滤我们的数据,看我们想看什么。但是,了解筛选数据永久地包括、排除或改变视图的传入数据是很重要的。我们应该始终拥有所有数据的未经过滤的原始视图,这样我们就可以随时访问我们的全部数据集。

请注意,一旦我们删除了一个视图,与该视图相关的所有数据都将永久消失。因此,我们在创建新视图时应该非常慎重,在删除任何视图之前要非常谨慎。

最后,请注意,一旦我们创建了一个视图,该视图的仪表板将显示从视图创建之日起的数据。视图不显示创建日期之前的数据。

我们希望在谷歌分析中为每个属性创建至少 3 个基本视图,以查看我们的数据:

  1. 所有网站数据 —这个视图是在谷歌分析中默认创建的,我们不应该弄乱它。这个视图向我们展示了来自我们网站/应用程序的所有原始数据。我们可以把这个视图看作是我们数据的备份。
  2. 测试视图 —如果我们想要应用新的过滤器或者进行更改,我们可以首先使用这个视图来测试它。通过使用“测试视图”,我们可以看到新的过滤器如何影响我们的数据收集,而没有丢失数据的风险。如果我们对“测试视图”中的结果有信心,那么我们可以将这些变化应用到我们的“主视图”中。
  3. 主视图 —主视图是我们用来将数据转化为关键见解的主要视图。在这里,数据由我们之前在“测试视图”中试验过的 Google Analytics 过滤器处理。请记住,如果由于某种原因出现问题,我们总是可以依靠我们的备份视图:“所有网站数据”。

例如:谷歌商品商店

一旦我们建立了自己的观点,我们需要对数据提出问题。提问允许我们有目的地浏览数据,以便解析、过滤和可视化我们收集的数据。

例如,假设我们正在谷歌商品商店的数据分析团队工作。我们的任务是找出是否有办法增加网站上的购物量。所以我们可能会问数据这三个问题:

“每周有多少用户在网站上购买商品?

有多少用户把 merch 放在购物车里,却不买?

用户在什么时候决定不买?"

为了解决这些问题,我们可以使用 Google Analytics 中的一个名为“目标流报告”的功能。使用此报告,我们可以了解用户在结账前放弃购物车中商品的时间点。从这里,我们可以使用动态再销售来获得更多放入购物车的鞋子的顾客转化(购买)。

“目标流报告”可以在谷歌分析界面的左侧找到,在转化-目标-目标流下。在这份报告中,我们可以了解网站在购买过程中失去客户的原因。来源:作者。

在最左侧,我们可以看到显示用户在过去一周如何访问谷歌商品商店的所有不同来源。从左到右,结账过程分为五个步骤:购物车、账单+运费、付款、审核订单和购买。

从图形上看,Google Analytics 让我们很容易确定我们在哪里失去了大部分购买。从“购物车”到“账单+发货”这一步,数量会有巨大的下降。从 1600 次会议,我们减少到 300 次会议。谷歌商品商店在这第一步就失去了超过 80%的顾客!

随着客户采取更多的购买步骤,我们可以看到,我们逐渐失去越来越多的潜在买家。在图的最后一步,我们可以看到只有 30 个人最终从商店购买了东西。商店在采购过程中流失了大约 98%的顾客!想想看:每 100 个人把东西放进购物车,其中只有 2 个人最终会购买。 哇!

因此,根据这些发现,我们可能会建议对谷歌商品商店用户界面进行调整,使“购物车”到“账单+运输”的过渡不那么令人生畏,因为这是我们失去最多客户的阶段。作为一个想法,我们可以请 UX 的研究人员在这些网页上推荐一种更有效的背景颜色,然后进行 A/B 测试,并随着时间的推移对这些颜色进行实验,看看什么最能阻止人们放弃他们的购物车物品,以便最大限度地购买。

在这种情况下,谷歌分析和使用它的企业之间有一个持续的反馈回路。通过分析数据,公司可以了解客户在某些网页上的行为。这就告诉了公司应该改变他们的网站以实现他们的商业目标,无论是更多的购买,更多的点击,还是更多的流量。这就是数据分析的力量。

了解更多关于谷歌分析!

如果你很好奇,想了解更多关于 Google Analytics 的知识,有很多资源可以学习!我花了几天时间学习谷歌在 谷歌分析学院 免费提供的初级和高级实践课程,以提高我的技能。这些课程非常容易使用,而且互动性很强——考考你刚刚学过的知识,这样你就不会变得懒惰,对内容感到厌倦。

完成这些课程后,我通过了谷歌分析个人资格(GAIQ)考试,这表明了使用谷歌分析的熟练程度。这是一个 70 题的选择题考试,时间限制为 90 分钟。你可以在这里免费参加T5 考试。

结论

在 21 世纪,数据分析是一项真正令人兴奋和有价值的技能。随着公司越来越少依赖直觉和经验,而是更多地依赖数据来做出决策和发展业务,对它的需求可能会继续上升。因此,请查看 Google Analytics,了解数据如何提供见解来转变您企业的产品、服务和在线形象。

什么是 Google API 愿景?以及如何使用它

原文:https://towardsdatascience.com/what-is-google-api-vision-and-how-to-use-it-372a83e6d02c?source=collection_archive---------32-----------------------

来源:曼努埃尔·盖辛格,佩克斯

使用服务帐户通过 OCR 从图像中提取文本。

介绍

这篇文章源于一个有趣的知识提取项目。第一步是提取 pdf 文档的文本。我工作的公司是基于 Google 平台的,所以很自然,我想使用 API Vision 的 OCR,但是找不到使用 API 提取文本的简单方法。所以这个帖子。

这个帖子的笔记本可以在 GitHub 上找到

谷歌 API 愿景

谷歌发布了 API 来帮助人们、行业和研究人员使用他们的功能。

Google Cloud 的 Vision API 拥有强大的机器学习模型,通过 REST 和 RPC APIs 进行预训练。标记图像,并将它们快速组织到数百万个预定义的类别中。您将能够检测物体和人脸,阅读印刷或手写文本,并将有用的元数据集成到您的图像目录中。(来源: API 视觉)

我们对这篇文章感兴趣的 API 部分是 OCR 部分。

光学字符识别

光学字符识别或 OCR 是一种在图像内部识别和检测字符的技术。大多数时候,卷积神经网络(CNN)是在一个非常大的不同类型和颜色的字符和数字数据集上训练的。您可以想象在每个像素或像素组上有一个小窗口切片,以检测字符或部分字符、空格、表格、线条等。

服务帐户

服务帐户是一种特殊类型的 Google 帐户,旨在代表一个非人类用户,该用户需要进行身份验证并被授权访问 Google APIs 中的数据。(来源:IAM 谷歌云)

基本上你可以把它想象成一个 RSA 密钥(通过互联网在机器之间进行高安全性通信的加密密钥),用它你可以连接到谷歌服务(API、GCS、IAM……)。它的基本形式是一个 json 文件。

笔记本

在这里,我将向您展示使用 API 和从图像中自动提取文本的不同函数。

需要安装的库:

!pip install google-cloud
!pip install google-cloud-storage
!pip install google-cloud-pubsub
!pip install google-cloud-vision
!pip install pdf2image
!pip install google-api-python-client
!pip install google-auth

使用的库:

from pdf2image import convert_from_bytes
import glob
from tqdm import tqdm
import base64
import json
import os
from io import BytesIO
import numpy as np
import io
from PIL import Image
from google.cloud import pubsub_v1
from google.cloud import visionfrom google.oauth2 import service_account
import googleapiclient.discovery
*# to see a progress bar*
tqdm().pandas()

OCR 可以接受在 API 中使用的 pdf、tiff 和 jpeg 格式。在本帖中,我们将把 pdf 转换成 jpeg 格式,将许多页面连接成一张图片。使用 jpeg 的两种方式:

首先,您可以将您的 pdf 转换成 jpeg 文件,并将其保存到另一个存储库中:

*# Name files where the pdf are and where you want to save the results*
NAME_INPUT_FOLDER = "PDF FOLDER NAME"
NAME_OUTPUT_FOLDER= "RESULT TEXTS FOLDER"list_pdf = glob.glob(NAME_INPUT_FOLDER+"/*.pdf") *# stock the name of the pdf files* *# Loop over all the files*
for i in list_pdf:
        *# convert the pdf into jpeg*
        pages = convert_from_path(i, 500)

        for page in tqdm(enumerate(pages)):
            *# save each page into jpeg* 
            page[1].save(NAME_OUTPUT_FOLDER+"/"+i.split('/')[-1].split('.')[0]+'_'+str(page[0])+'.jpg', 'JPEG') *# keep the name of the document and add increment* 

在这里,您可以通过 API 使用您的 jpeg 文档。但是,你可以做得更好,不用保存 jpeg 文件,直接在内存中使用它来调用 API。

设置凭据

在深入之前,我们需要配置 Vision API 的凭证。你会发现,这很简单:

SCOPES = ['[https://www.googleapis.com/auth/cloud-vision'](https://www.googleapis.com/auth/cloud-vision')]
SERVICE_ACCOUNT_FILE = "PUT the PATH of YOUR SERVICE ACCOUNT JSON FILE HERE"*# Configure the google credentials*
credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)

图片处理

这需要更多的代码,因为我们还要连接 10 页文档来创建一个“大图”并将其提供给 API。一次调用比 10 次调用更划算,因为每次请求 API 时都要付费。

我们走吧:

操作和连接图片以将它们提供给 API 的函数

使用这两个函数,您将能够加载一个 pdf 文件,将其转换为字节,创建一个“大图片”并将其馈送到函数detect _ text _ document()(详细信息如下)。

函数detect _ text _ document用于输入图片内容和凭证(您的服务帐户信息)。

输出是从图像中提取的文本。这个函数的目标是将单词连接成段落和文档。

怎么用?

您可以像这样使用这个函数块:

for doc_pdf in tqdm(list_pdf): *# call the function which convert into jpeg, stack 10 images
        # and call the API, save the output into txt file* 
        concat_file_ocr(doc_pdf)

输入就是用 glob 函数获得的路径。该凭证是在 设置凭证 部分生成的。该循环将获取输入文件的每个 pdf,使用通过转换 pdf 获得的 jpeg 文件调用 API,并保存包含检测的文本文件。

结论

在这里,您将结束关于如何使用视觉 API 并自动生成包含检测的文本文件的教程。您知道如何使用您的服务帐户配置凭证,以及如何将 pdf 转换为 jpeg 文件(每页一个 jpeg)。是全部吗?不,我有一些奖金给你(见下文)。

好处 1:每页使用 API

前面的函数允许您使用 API 来连接页面。但是,我们可以在 pdf 文档的每一页使用 API。下面的函数将请求 API 将 pdf 转换成 jpeg 格式的每一页。

使用它非常简单,只需用 pdf 文件夹的路径和凭证调用这个函数。像这样:

if per_page: *# option True if you want to use per page*
    *# call the API vision per page of the pdf*
    for i in tqdm(list_pdf):
        *# open the pdf and convert it into a PlImage format jpeg*
        call_ocr_save_txt(i, cred=credentials)

好处 2:使用多重处理库

只是为了好玩,你可以把这个 API 和多重处理一起使用(好吧,这在 python 中不是真正的多重处理,带有全局解释器锁(GIL))。但是,这里的代码:

if multi_proc:
    nb_threads = mp.cpu_count() *# return the number of CPU*
    print(f"The number of available CPU is {nb_threads}")
        *# if you want to use the API without stacking the pages*
    if per_page:
        *# create threads corresponding to the number specified*
        pool = mp.Pool(processes=nb_threads)    
        *# map the function with part of the list for each thread*
        result = pool.map(call_ocr_save_txt, list_pdf) 

    if per_document:
        pool = mp.Pool(processes=nb_threads) 
        result = pool.map(concat_file_ocr, list_pdf)

深度学习中的梯度积累是什么?

原文:https://towardsdatascience.com/what-is-gradient-accumulation-in-deep-learning-ec034122cfa?source=collection_archive---------4-----------------------

解释了神经网络的反向传播过程

澳大利亚八月在 Unsplash 拍摄的照片

的另一篇文章中,我们解决了批量大小受 GPU 内存限制的问题,以及梯度累积如何帮助克服这个问题。

在这篇文章中,我们将首先检查一个神经网络的反向传播过程,然后通过梯度积累的技术和算法细节。我们将讨论它是如何工作的,并通过一个例子进行迭代。

什么是梯度积累?


梯度累积

在进一步研究梯度累积之前,最好先研究一下神经网络的反向传播过程。

神经网络的反向传播

深度学习模型由许多相互连接的层组成,在所有这些层中,样本在每一步中都通过正向传递进行传播。在传播通过所有层之后,网络生成样本的预测,然后计算每个样本的损失值,该值指定“网络对此样本的错误程度如何?”。然后,神经网络计算这些损失值相对于模型参数的梯度。然后,这些梯度用于计算相应变量的更新。

在建立模型时,我们选择一个优化器,它负责用于最小化损失的算法。优化器可以是已经在框架中实现的常见优化器之一(SGD、Adam 等),也可以是自定义优化器,实现所需的算法。除了梯度之外,优化器可能还会管理和使用更多的参数来计算更新,例如学习率、当前步长指数(用于自适应学习率)、动量等

优化器表示计算参数更新的数学公式。一个简单的例子是随机梯度下降(SGD)算法:V = V — (lr * grad),其中V是任何可训练的模型参数(权重或偏差),lr是学习率,grad是损失相对于模型参数的梯度:

SGD 优化器的算法

那么从技术上讲,什么是梯度累积呢?

梯度累积意味着在不更新模型变量的情况下运行配置数量的步骤,同时累积这些步骤的梯度,然后使用累积的梯度来计算变量更新。

是的,真的就这么简单。

在不更新任何模型变量的情况下运行一些步骤是我们逻辑上将一批样本分成几个小批的方式。每个步骤中使用的样本批次实际上是一个小批次,这些步骤的所有样本组合起来实际上是一个全局批次。

通过在所有这些步骤中不更新变量,我们使得所有小批量使用相同的模型变量来计算梯度。这是强制性的,以确保计算相同的梯度和更新,就像我们使用全局批量大小一样。

在所有这些步骤中累积梯度会产生相同的梯度和,就像我们使用全局批量大小一样。

遍历一个例子

假设我们在 5 个步骤中累积梯度。我们希望累积前 4 步的梯度,而不更新任何变量。在第五步,我们希望使用前 4 步累积的梯度与第五步的梯度相结合来计算和分配变量更新。让我们来看看它的实际应用:

从第一步开始,第一个小批量的所有样本通过前向和后向途径传播,产生每个可训练模型变量的计算梯度。我们不想实际更新变量,所以此时没有必要计算更新。然而,我们需要的是一个存储第一步的梯度的地方,以便在随后的步骤中可以访问它们,并且我们将为每个可训练模型变量使用另一个变量来保存累积的梯度。因此,在计算第一步的梯度后,我们将把它们存储在我们为累积梯度创建的变量中。

N 步结束时累积的梯度值

现在,第二步开始了,第二个小批量的所有样本通过模型的所有层传播,计算第二步的梯度。就像上一步一样,我们还不想更新变量,所以不需要计算变量更新。与第一步不同的是,我们不是将第二步的梯度存储在变量中,而是将它们添加到变量中存储的值中,这些值当前包含第一步的梯度。

第 3 步和第 4 步与第二步非常相似,因为我们还没有更新变量,我们通过将它们添加到变量中来累积梯度。

然后,在步骤 5 中,我们想要更新变量,因为我们打算在 5 个步骤中累积梯度。在计算出第五步的梯度后,我们将把它们加到累积的梯度上,得到这五步所有梯度的总和。

然后,我们将得到这个总和,并将其作为参数插入到优化器中,得到使用这 5 个步骤的所有梯度计算的更新,这些更新是在全局批处理中的所有样本上计算的。

如果我们以 SGD 优化器为例,让我们看看第五步结束时更新后的变量,这些变量是使用这五个步骤的梯度计算的(在下面的示例中 N=5):

N 步后可训练变量的值(使用 SGD)

太好了!所以我们来实施吧!

可以实现任何优化器的梯度累积版本。每个优化器都有不同的公式,因此需要不同的实现。这不是最佳的,因为梯度累积是一种通用的方法,应该是独立于优化器的。

的另一篇文章中,我们介绍了实现通用梯度累积机制的方法,并向您展示了如何使用您选择的任何优化器在您自己的模型中使用它。

什么是渐变裁剪?

原文:https://towardsdatascience.com/what-is-gradient-clipping-b8e815cdfb48?source=collection_archive---------4-----------------------

一个简单而有效的方法来处理爆炸梯度

Unsplash阿三 S. 的照片

递归神经网络(RNN)通过利用存储关于过去输入的信息的隐藏状态来很好地处理序列数据:隐藏状态在时间 t 的值取决于它们在时间 t -1 的值以及在时间 t 的输入。这种架构虽然强大,但在训练中会导致两个问题:爆炸渐变消失渐变。在本文中,我们将研究渐变剪辑,它处理爆炸渐变问题。

爆炸和消失渐变背后的直觉

爆炸梯度是指梯度在训练中变得过大,使模型不稳定的问题。类似地,消失梯度指的是在训练中梯度变得太小。这可以防止网络权重改变其值。这两个问题都会导致模型无法从训练数据中学习。下面的非正式讨论并不严格,但足以给我们一个关于爆炸和消失梯度来源的直觉。

当我们通过时间反向传播来训练 RNN 时,这意味着我们首先通过为每个时间步长创建网络的副本来及时展开 RNN,将其视为多层前馈神经网络,其中层数等于时间步长数。然后,我们在展开的网络上进行反向传播,考虑权重共享:

其中 W 是递归权重矩阵。可以看出,损失函数的梯度由 W ᵀ的 n 个副本的乘积组成,其中 n 是及时返回的层数。矩阵的这个乘积是爆炸和消失渐变的来源。

对于一个定标器一个一个一个 aⁿ 呈指数级收缩或增长。比如考虑 n = 30。然后比如 1.1 ≈ 17.45 和 0.9 ≈ 0.042。我们选择 30 是因为自然语言处理任务中的一个句子有 30 个单词是很常见的,时间序列分析处理 30 天的数据也是很典型的。矩阵的乘积( W ᵀ) 的情况非常相似。看到这一点的最简单的方法是假设wt19】可对角化。然后 W ᵀ = QDQ ⁻求点对角矩阵d=diag(λ,…,λ* ₓ),以及(wᵀ)=qdq⁻用【T44*

我们参考[2]对爆炸和消失梯度问题的严格处理。

渐变剪辑

渐变裁剪是一种处理爆炸式渐变的技术。渐变裁剪的想法非常简单:如果渐变变得太大,我们重新调整它以保持它很小。更准确地说,如果‖gc,则

**g** ↤ *c* · **g**/‖**g**‖

其中 c 为超参数, g 为梯度,‖ gg 的范数。由于g/g‖是一个单位向量,重新缩放后,新的 g 将具有范数 c 。注意,如果‖ g ‖ < c ,那么我们什么都不需要做。

渐变裁剪确保渐变向量 g 最多有范数 c 。这有助于梯度下降有一个合理的行为,即使模型的损失景观不规则。下图显示了 loss 地貌中一个极其陡峭的悬崖的示例。如果没有削波,参数会大幅下降,并离开“好”区域。使用削波,下降步长受到限制,参数保持在“良好”区域。

[1]图 10.17

履行

常见问题

问:我们如何选择超参数 c

答:我们可以为一些时期训练我们的神经网络,并查看梯度范数的统计数据。梯度范数的平均值是一个很好的初步尝试。

问:除了 RNN,我们能在训练神经结构中使用梯度裁剪吗?

答:是的。每当我们有爆炸梯度时,我们可以对任何神经架构使用梯度裁剪。

进一步阅读

  1. [1]的第 10.11 章很好地概述了渐变裁剪的工作原理。
  2. [3]引入了新的光滑条件,为梯度裁剪的有效性提供了理论解释。

参考

  1. 古德菲勒、本吉奥和库维尔。深度学习 (2016),麻省理工学院出版社。
  2. R.帕斯卡努、t .米科洛夫和 y .本吉奥。论训练递归神经网络的难度 (2013),ICML 2013。
  3. J.张,何铁男,施瑞华,贾德巴贝。为什么梯度裁剪加速了训练:适应性的理论证明 (2020),ICLR 2020。

什么是群体常态化?

原文:https://towardsdatascience.com/what-is-group-normalization-45fe27307be7?source=collection_archive---------10-----------------------

批处理规范化的替代方法

照片由假虎刺属·魏泽Unsplash 上拍摄

批处理规范化(BN)已经成为许多最新深度学习模型的重要组成部分,特别是在计算机视觉中。它通过批次内计算的平均值和方差对层输入进行归一化,因此得名。为了使 BN 起作用,批量需要足够大,通常至少为 32。然而,有些情况下我们不得不接受小批量:

  • 当每个数据样本都非常消耗内存时,例如视频或高分辨率图像
  • 当我们训练一个非常大的神经网络时,它只留下很少的 GPU 内存来处理数据

因此,我们需要 BN 的替代品,它能很好地用于小批量生产。分组归一化(GN)是最新的归一化方法之一,它避免了利用批维数,因此与批大小无关。

不同的标准化方法

为了推动 GN 的形成,我们将首先看看以前的一些归一化方法。

以下所有标准化方法都执行计算

*xᵢ* ← (*xᵢ* - 𝜇*ᵢ*) / √(𝜎*ᵢ*² + 𝜀)

对于输入特征 x 的每个系数 xᵢ 。𝜇 和𝜎 是对一组系数 Sᵢ 计算的平均值和方差,𝜀是一个小常数,为了数值稳定和避免被零除而添加。唯一的区别是如何选择 set Sᵢ

为了说明归一化方法的计算,我们考虑一批大小为 N = 3,具有输入特征 abc. 它们具有通道 C = 4,高度 H = 1,宽度 W = 2:

*a* = [ [[2, 3]], [[5, 7]], [[11, 13]], [[17, 19]] ]
*b* = [ [[0, 1]], [[1, 2]], [[3, 5]], [[8, 13]] ]
c = [ [[1, 2]], [[3, 4]], [[5, 6]], [[7, 8]] ]

因此,该批次将具有形状( NCHW ) = (3,4,1,2)。我们取𝜀 = 0.00001。

批量标准化

BN 对通道进行归一化,并沿( NHW )轴计算𝜇 和𝜎 Sᵢ 被定义为与 xᵢ 在同一通道中的一组系数。

对于 a 的第一个系数 aᵢ = 2,其中 i = (0,0,0),对应的𝜇 和𝜎 是在第一个通道的 abc 的系数上计算的:

𝜇*ᵢ = mean*(2, 3, 0, 1, 1, 2) = 1.5
𝜎*ᵢ*² = var(2, 3, 0, 1, 1, 2) = 0.917

将这些代入标准化公式,

*aᵢ* ← (2 - 1.5) / √(0.917 + 0.00001) = 0.522

计算一个给出的的所有系数

*a* ← [ [[0.522, 1.567]], [[0.676, 1.690]], [[1.071, 1.630]], [[1.066, 1.492]] ]

图层规范化

层标准化(LN)旨在克服 BN 的缺点,包括其对批量大小的限制。它沿着( CHW )轴计算𝜇 、ᵢ 和𝜎 、ᵢ ,其中 Sᵢ 被定义为与 xᵢ 属于同一输入特征的所有系数。因此,输入要素的计算完全独立于批处理中的其他输入要素。

a 的所有系数都被同一个𝜇 和𝜎 归一化

𝜇*ᵢ = mean*(2, 3, 5, 7, 11, 13, 17, 19) = 9.625
𝜎*ᵢ*² = var(2, 3, 5, 7, 11, 13, 17, 19) = 35.734

因此将 LN 应用于 a 给出

*a* ← [ [[-1.276, -1.108]], [[-0.773, -0.439]], [[0.230, 0.565]], [[1.234, 1.568]] ]

实例规范化

实例规范化(IN)可视为将 BN 公式单独应用于每个输入要素(也称为实例),就好像它是批处理中的唯一成员一样。更准确地说,在沿着( HW )轴计算𝜇 、ᵢ 和𝜎 、ᵢ 时, Sᵢ 被定义为与 xᵢ 处于相同输入特征并且也在相同通道中的一组系数。

由于 IN 的计算与批大小= 1 的 BN 的计算相同,因此在大多数情况下,IN 实际上会使情况变得更糟。然而,对于风格转换任务,IN 更善于丢弃图像的对比度信息,并且具有比 BN 更好的性能。

对于第一个系数 aᵢ = 2 的 at39】其中 i = (0,0,0),对应的𝜇 和𝜎 简单来说就是

𝜇*ᵢ = mean*(2, 3) = 2.5
𝜎*ᵢ*² = var(2, 3) = 0.25

这给了

*aᵢ* ← (2 - 2.5) / √(0.25 + 0.00001) = -1.000

当我们向 a 申请时,我们得到

*a* ← [ [[-1.000, 1.000]], [[-1.000, 1.000]], [[-1.000, 1.000]], [[-1.000, 1.000]] ]

群体规范化

之前,我们在中介绍了将 BN 单独应用于每个输入要素,就好像批量大小= 1 一样。请注意,IN 也可以视为将 LN 单独应用于每个通道,就好像通道数= 1 一样。

群规范化(GN)是 IN 和 LN 之间的中间地带。它将通道组织成不同的组,并沿( HW )轴和一组通道计算𝜇 和𝜎 Sᵢ 则是与 xᵢ 处于相同输入特征和相同通道组的一组系数。

组数 G 是一个预定义的超参数,通常需要除以 C 。为简单起见,我们按顺序对通道进行分组。因此,通道 1、…、 C / G 属于第一组,通道 C / G + 1、…、2 C / G 属于第二组,依此类推。当 G = C 时,意味着每组只有一个通道,GN 变为 IN。另一方面,当 G = 1 时,GN 变为 LN。因此 G 控制 IN 和 LN 之间的插值。

对于我们的例子,考虑 G = 2。为了归一化第一个系数 aᵢ = 2 的 a 其中 i = (0,0,0),我们在前 4 / 2 = 2 个通道中使用 a 的系数

𝜇*ᵢ = mean*(2, 3, 5, 7) = 4.25
𝜎*ᵢ*² = var(2, 3, 5, 7) = 3.687

将这些代入标准化公式,

*aᵢ* ← (2 - 4.25) / √(3.687 + 0.00001) = -1.172

对于 a 的其他系数,计算类似:

*a* ← [ [[-1.172, -0.651]], [[0.391, 1.432]], [[-1.265, -0.633]], [[0.633, 1.265]] ]

归一化方法的比较

下图显示了 BN、LN、IN 和 GN 之间的关系。

图二之四

蓝色区域对应于用于计算𝜇 和𝜎 的集合 Sᵢ ,然后这些集合用于归一化蓝色区域中的任何系数。

从这个图我们可以看出 GN 是如何在 IN 和 LN 之间插值的。GN 比 IN 好,因为 GN 可以利用跨信道的依赖性。它也比 LN 好,因为它允许为每组通道学习不同的分布。

当批量较小时,GN 始终优于 BN。但是,当批量非常大时,GN 的扩展性不如 BN,并且可能无法与 BN 的性能相匹配。

履行

请注意,GN 的两种实现都有一个可学习的、按通道的线性变换,遵循故障归一化。这类似于 BN、LN 和 IN 的实现。

进一步阅读

  1. GN [4]的原始论文是关于 GN 的技术细节以及不同归一化方法的比较的极好参考。
  2. 即使在批量较大时 GN 不匹配 BN,GN +重量标准化[2]也能够匹配甚至优于 BN。我们参考了文献[1]和[2]的一些实验结果。
  3. [3]展示了 BN 通过使优化前景更加平滑所做的工作。这推动了重量标准化的形成。

参考

  1. A.、L. Beyer、X. Zhai、J. Puigcerver、J. Yung、S. Gelly 和 N. Houlsby。大迁移(BiT):一般视觉表征学习 (2019),arXiv 预印本。
  2. 南乔,王,刘,沈文伟,尤耶。重量标准化 (2019),arXiv 预印本。
  3. 南桑图尔卡、齐普拉斯、易勒雅斯和马德瑞。批处理规范化如何帮助优化? (2018),NIPS 2018。
  4. Y.吴和何国梁。分组归一化 (2018),ECCV 2018。

什么是 Gumbel-Softmax?

原文:https://towardsdatascience.com/what-is-gumbel-softmax-7f6d9cdcb90e?source=collection_archive---------3-----------------------

离散数据采样的可微近似法

paweczerwi ski 在 Unsplash 上的照片

在深度学习中,我们经常想要对离散数据进行采样。举个例子,

  • 基于生成对抗网络的文本生成
  • 离散隐变量变分自动编码器
  • 具有离散动作空间的深度强化学习

然而,来自分类分布的离散数据的采样过程是不可微的,这意味着反向传播将不起作用。Gumbel-Softmax 分布是一种连续分布,它近似于分类分布中的样本,也适用于反向传播。

Gumbel-Softmax 分布

Z 是分类分布分类 (𝜋₁,…,𝜋ₓ)的分类变量,其中𝜋ᵢ是我们的神经网络要学习的分类概率。假设我们的离散数据被编码为一个热点向量。最常见的采样方式 Z由下式给出

*Z* = onehot(max{*i* | 𝜋₁ + ... + 𝜋ᵢ₋₁ ≤ *U*})

其中 i = 1,…, x 为类索引, U ~ Uniform (0,1)。由于 max 函数的存在,这个采样公式是不可微的。为了获得可微分的近似值,我们应用以下公式:

  1. 甘贝尔-马克斯诡计

Gumbel-Max 技巧提供了一个不同的采样公式 Z

*Z* = onehot(argmaxᵢ{*G*ᵢ + log(𝜋ᵢ)})

其中 G ᵢ ~ 冈贝尔 (0,1)是从标准冈贝尔分布中抽取的同分布样本。这是一个“重新参数化的把戏”,将 Z 的采样重构为参数的确定性函数和一些固定分布的独立噪声。

采样过程的重构并没有使它变得可区分。在我们的例子中,不可微性来自 argmax 函数。然而,一旦我们有了 argmax 的可微近似值,我们就可以很容易地进行反向传播,因为它只是关于计算确定性函数的梯度 w.r.t .参数。另一方面,如果没有重新参数化的技巧,我们将不得不计算分布的梯度 w.r.t .参数,这是一个更困难的问题。

2.使用 softmax 作为可微分近似值

我们使用 softmax 作为 argmax 的可微分近似值。样本向量 y 现在由下式给出

*y*ᵢ = exp((*G*ᵢ + log(𝜋ᵢ)) / 𝜏) / 𝚺ⱼ exp((*G*ⱼ + log(𝜋ⱼ)) / 𝜏)

对于每一个 i = 1,…, x当𝜏 → 0 时,softmax 计算平滑地接近 argmax,并且样本向量接近 one-hot;随着𝜏 → ∞,样本向量变得一致。

具有上述抽样公式的分布称为 Gumbel-Softmax 分布。注意,在训练期间使用连续向量,但是在评估期间样本向量被离散化为单热点向量。

使用

每当我们有一个离散变量的随机神经网络,我们可以使用 Gumbel-Softmax 分布来近似离散数据的采样过程。然后可以使用反向传播来训练网络,其中网络的性能将取决于温度参数𝜏.的选择

直通 Gumbel-Softmax

有些情况下,我们会希望在训练期间对离散数据进行采样:

  • 我们受限于离散值,因为实值连续逼近是不允许的。比如在动作空间离散的深度强化学习中。
  • 在训练期间使用连续近似和在评估期间使用一次性向量具有非常不同的动态。这导致评估期间模型性能的大幅下降。

我们可以在正向传递中使用 argmax 将 Gumbel-Softmax 样本离散化,使其与原始分类分布中的样本相同。这确保了培训和评估动态是相同的。然而,我们仍然在反向传递中使用 Gumbel-Softmax 样本来近似梯度,因此反向传播仍然有效。这种技术在文献中被称为直通 Gumbel-Softmax。

履行

常见问题

问:我们如何选择温度参数𝜏?

答:我们可以给𝜏.一个固定的值最佳值是通过反复试验确定的,通常小于等于 1。我们也可以使用退火时间表,或者让它成为一个学习参数。

问:为什么我们不需要使用 Gumbel-Softmax 进行分类任务,这涉及到离散的类别标签?

答:这是因为在解决分类问题时通常不涉及抽样过程。相反,我们只需要我们的模型输出属于不同类别的特征向量的概率。简单地应用 softmax 函数就足够了。

进一步阅读

  1. Gumbel-Softmax 分布是由[2]和[3]独立发现的,在[3]中称为具体分布。两篇论文都是很好的参考,特别是关于分布的理论方面,以及关于重新参数化的技巧。
  2. 5是[2]第一作者写的博文。这是一个很好的教程,有一个关于 Gumbel-Softmax 发行版采样的交互式小部件。
  3. 对于 Gumbel-Softmax 分布在 GAN 中的应用,我们参考[4],其中给出了 Gumbel-Softmax 如何解决用离散数据训练 GAN 的问题的大图。
  4. [1]提供了一个需要直通 Gumbel-Softmax 而不是普通 Gumbel-Softmax 的用例。

参考

  1. 南哈夫里洛夫和我蒂托夫。用多智能体游戏出现语言:学习用符号序列交流 (2017),NIPS 2017。
  2. E.张,s .顾和 b .普尔。使用 Gumbel-Softmax (2017),ICLR 2017 进行分类重新参数化。
  3. C.马迪森,Mnih 和叶维庆。《具体分布:离散随机变量的一个连续松弛》 (2017),ICLR 2017。
  4. W.聂、纳洛德茨卡和帕特尔。 RelGAN:用于文本生成的关系生成对抗网络 (2019)。ICLR 2019。
  5. 教程:使用 Gumbel-Softmax 的分类变分自动编码器,https://blog . ev jang . com/2016/11/tutorial-categorial-variable . html

什么是假设检验?老师为什么不相信骗子学生?

原文:https://towardsdatascience.com/what-is-hypothesis-testing-why-dont-teachers-believe-the-liar-students-6203a5a4b52f?source=collection_archive---------63-----------------------

免责声明:我们无意根据学生在课堂上的位置做出任何推断。该教师为男性,因为该男教师的照片是从 Unsplash 获得的。无意推断性别和/或教师。

老师的一个时期

老师正在检查每个人的作业。他一张接一张地走着。学生们带着自豪的微笑展示他们的作业。老师报以“竖起大拇指”的微笑。老师走到最后一张长凳。一个学生搔着头,一脸担忧地说:“我今天忘记带作业了”。老师相信了他,说:“没关系。下次离家前别忘了检查你的包”。

萨姆·巴耶Unsplash 上拍摄的照片

学生的模式

几天过去了。坐在最后一张长椅上的学生总是不停地说她/他忘了他/她的家庭作业。她/他几次逃脱了老师的惩罚,但当遗忘原因一次又一次出现时,老师开始怀疑。老师的怀疑是对的,是的,这个学生在作弊。

日常生活中的显著性检验?怎么会?

不仅是老师,我们每天都在使用显著性测试的概念。我们来看看老师是如何下意识地(也可能是有意识地)使用它的。

学生和老师的故事

通常,学生不会忘记他们的家庭作业。他们要么在完成作业后把练习册(或复印件)放在书包里,要么在晚上(或早上)看到(或碰巧看到)自己的复印件放在某个地方,然后把复印件放在书包里。所以,一个学生把作业忘在家里的概率可能在 0.1 左右。对于我们的提议,让我们假设概率为 0.1

如果学生连续三次忘记他/她的作业,老师可能会开始怀疑。假设 0.1 的概率,学生连续三次忘记作业的概率为 0.001 。如果发生概率为 0.1% 的事件,我们认为不正常。我们有证据怀疑有可疑的事情发生。这就是老师的遭遇。老师有证据怀疑学生的理由。

这样,我们潜意识里(或者有意识地)一直在使用显著性检验这个概念。

这里假设是:
H_o =最后一个板凳学生说的是真话。

这是零假设,因为这是老师首先相信的。他认为一切都很好,很正常(没有可疑的事情发生)。站在零假设上,老师进行观察,看到很少发生的事件。这让他怀疑自己最初对那个学生的假设。所以,老师拒绝了这个假设,认为这个学生在撒谎。

因此,显著性检验的思想是对一些假设的检验,其中假设是用观察值来检验的。在我们老师的例子中,观察是学生连续说谎的次数,假设是学生说真话的本性。

假设检验

同样,假设检验是对关于总体参数的一些假设的检验。站在零假设上,我们看到样本统计发生的概率,如果它低于显著性水平,我们拒绝零假设。

显著性水平是拒绝零假设的严格程度的度量。显著性水平越小,我们的观察结果拒绝零假设的可能性就越小。如果师生案例的显著性水平非常非常低(即 0.01% ),那么即使在连续三次撒谎之后,学生的诚实度仍然很突出。

之前,我们估算了我的脸书朋友中有尼泊尔字体名字的比例,结果是 0.0335。最近,我在我的脸书聊天版块,故事版块,甚至在墙上看到了更多尼泊尔字体的名字。我想测试一下比例有没有增加。这可能是因为我添加了新的脸书朋友,他们有尼泊尔字体的名字,或者是因为现在的脸书朋友,他们有非尼泊尔字体的名字,把字体改成了尼泊尔。为了我们的研究,让我们取 0.05 的显著性水平。

所以,这里的零假设是:
H_o: p = 0.0335

我在这里测试的是比例是否增加了。所以,交替假设是:
H_a: p > 0.0335

因为我们只在一个方向上采用替代假设,所以这是一个单尾检验。如果另一个假设仅仅是一个不等式,测试将是双尾的。

我们通过抽取样本 n = 124 来随机抽取脸书朋友的名字。在 124 个好友中, 10 个有尼泊尔字体的名字。这给出了比例的估计值: p̂ = 0.08 。这个过程是随机的。预期成功和预期失败的数量至少为 10 。样本少于总人口的 10% ,因此事件是独立的。因此,样本满足所有比例推论的条件,因此,我们可以进行推论。

现在,让我们计算测试的 p 值。 p 值是在假设零假设正确的情况下,获得至少与测试期间实际观察到的结果一样极端的测试结果的概率。为了计算 p 值,我们有比例, p = 0.035 标准差可以计算为:
σ_p̂=sqrt(p̂(1-p̂)/n)= sqrt(0.0335(1–0.0335)/124)≈0.016

由于样本量大于 30 ,这里我们使用 z 统计量。让我们在这里计算 z 值。

z 值可以计算为:
z =(p̂-p)/σ_p̂=(0.08–0.0335)/0.016≈2.9

现在在 z = 2.9 对应的概率是: 0.998

因此,测试结果至少与实际观察值一样极端的概率为1–0.998 = 0.002。这是 p 值。

由于 p 值小于显著性水平(即 0.05 ,零假设被拒绝,替代假设被接受

这就是如何使用假设检验来检验假设。假设检验是统计推断的顶点,它被广泛应用于许多领域。统计学,一个极其重要的研究工具,有很多有用的、流行的方法,假设检验就是其中之一!

什么是图像分类?数据增强?转移学习?

原文:https://towardsdatascience.com/what-is-image-classification-data-augmentation-transfer-learning-689389c3f6c8?source=collection_archive---------15-----------------------

来源:图片由作者拍摄,并有他的注释

技术及其应用之间的差异

本文是关于计算机视觉的三篇文章的第一部分。第 2 部分将解释对象识别。第 3 部分将是关于图像分割。

随本文提供一个笔记本:此处在 GitHub 上

介绍

有什么比看世界更刺激的?能够看到我们周围最好的东西?日落之美,令人难忘的瀑布,还是冰海?如果进化没有赋予我们眼睛,一切都是不可能的。

我们认识事物是因为我们已经学会了物体的形状,我们已经学会了估计与我们所遇到的不同形状可以与同一物体联系起来。我们通过经验学习,因为我们被给定了所述物体的名称。就像需要一个标签来将形状、细节、颜色与类别相关联的监督算法。狗和狼只是在像素上非常相似。计算机视觉方法已经使机器能够破译这些形状,并“学习”对它们进行分类。

现在,算法,就像我们的眼睛可以识别图片或电影,物体或形状。方法不断进化完善,达到所谓的人的水平。但是,有几种方法,图像分类、对象检测或识别以及图像分割。在本文中,我们将探讨图像分类问题。第一部分将介绍从零开始训练模型,第二部分将介绍数据增强的训练,最后是预训练模型的迁移学习。

方法

图像分类从无到有

当你拥有的数据量足够大时,图像分类可以“T6”从零开始。想法是创建一个模型并从头开始训练它。

像任何分类问题一样,数据必须被注释。当涉及到图像时,如何进行?事实上很简单,同一类的数据必须存储在同一个文件夹中。有必要为所考虑的每个类或类别准备一个文件夹。像这样:

> train/
      ... forest/
            ... img_1.jpeg
            ... img_2.jpeg
            ...
      ... moutain/
            ... img_1.jpeg
            ... img_2.jpeg
            ...
      ... sea/
            ... img_1.jpeg
            ... img_2.jpeg
      ...
  validation/
      ... forest/
            ... img_1.jpeg
            ... img_2.jpeg
            ...
      ... moutain/
            ... img_1.jpeg
            ... img_2.jpeg
            ...
      ... sea/
            ... img_1.jpeg
            ... img_2.jpeg
  test/
      ... forest/
            ... img_1.jpeg
            ... img_2.jpeg
            ...
      ... moutain/
            ... img_1.jpeg
            ... img_2.jpeg
            ...
      ... sea/
            ... img_1.jpeg
            ... img_2.jpeg

这种简单的方法允许模型将标签与图片关联起来。

之后,你建立你的神经网络。从现在开始,标准是针对卷积神经网络( CNN )在处理图片时。所以你要建立一个 CNN 并用英特尔数据集训练它。您将添加一个卷积层,然后是一个汇集层,可能是一个下降层,以降低过度拟合的风险,并以密集的全连接层结束。最后一层会输出结果,或者说预测,这最后一层的单元数就是你要预测的类数。

***# building the model***
model = tf.keras.Sequential([
  layers.Conv2D(32, 3, activation='relu'),
  layers.MaxPooling2D(),
  layers.Dropout(0.5),
  layers.Conv2D(32, 3, activation='relu'),
  layers.MaxPooling2D(),
  layers.Dropout(0.3),
  layers.Conv2D(32, 3, activation='relu'),
  layers.MaxPooling2D(),
  layers.Flatten(),
  layers.Dense(128, activation='relu'),
  layers.Dense(num_classes, activation='softmax')
])***# compile the model with adam optimizer and sparse cross entropy*** model.compile(
  optimizer='adam',
  loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics=['accuracy'])***# use early stopping to break the learning process if the model stop learning during 3 epochs*** es = tf.keras.callbacks.EarlyStopping(patience=3)
history = model.fit(
  train_x,train_y,
  validation_data=(valid_x, valid_y), callbacks=[es], batch_size=32,
   epochs=30
)

在这里,我提出了一个小的 CNN 架构,其中 num_classes 是类的数量。在本文的上下文中,我们将预测 6 个类,所以num_classes=6EarlyStopping 约束模型在过度拟合时停止,参数patience=3意味着如果在 3 个时期内模型没有改善,训练过程停止。

如果你有足够的数据,如果你的 CNN 不太深——但足够产生一个好的数据表示,你将获得好的结果。

不幸的是,这种情况很少发生,您需要尝试其他选项。

数据扩充

所以,如果你的模型不能获得良好的性能。你可以改变你的网络结构。您可以添加或删除隐藏层。您可以减少或增加每层的单元数。您可以更改激活函数或损失函数。或者,您可以更改预处理或您的数据。

但是,不够怎么办?

可以使用数据增强。这种技术允许您从内存中创建人工(合成)图像(这种方法不会影响您的原始数据)。它包括旋转等操作,相同的图片将被旋转不同的角度(创建新的图像)。移位,也就是说,图像的图案将从帧偏移,从而产生必须被内插的“洞”。这种操作可以水平进行,也可以垂直进行。缩放,新图像将是原始数据的一部分的缩放,等等…

完成这项工作的完美工具是 Keras[2] ( keras.preprocessing.image.ImageDataGenerator())提供的名为ImageDataGenerator 的对象。

from tensorflow.keras.preprocessing.image import ImageDataGenerator
data_gen = ImageDataGenerator(
        rotation_range=40,
        width_shift_range=0.2,
        height_shift_range=0.2,
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest')
test_gen = ImageDataGenerator(rescale=1./255)

以下是我在笔记本中使用的示例值。

此工具将创建合成影像来增加数据集的容量。怎么用?

CNN 中数据扩充的快速实现。结果将显示在结果部分。

不幸的是,是的,你可以有太少的图像,以获得良好的结果。如果你的数据集非常小,即使数据扩充也救不了你。接下来你会做什么?

迁移学习【3】

不,现在不是逃避害怕转学的时候。什么是迁移学习?这是一种简单的方法,你可以将学到的知识用于一项任务,并将其输出到另一项任务中。

在我们的案例中,迁移学习发生在相当大的模型(有数百万甚至上亿个参数)上,这些模型已经在海量数据(Imagenet[4]数据集)上进行了训练以进行归纳。

当您有一个小数据集时,您构建的模型不能很好地表示数据。因此,您必须使用将根据您的数据进行训练的预训练模型。

方法很简单,取预先训练好的模型,冻结它们层的权重,只留下最后一层,或者最后几层,然后用你的数据训练它们。

神经网络根据其深度越来越专门化。第一层将检测一般模式,例如线条。然后形状会出现,直到你在最后一层达到非常精细的细节。这些是必须用来根据您的数据“调整”模型的。因此,使用迁移学习,您可以在几分钟/几小时内获得一个性能极佳的模型,而不是使用 ImageNet 数据集和您的数据重新训练完整的模型(这将花费数月时间,并需要大量资金投入)。

在笔记本上,我比较不同的预训练模型,看看哪个最适合我们的学习。为了轻松快速地更改预训练模型,下面的函数包含了根据数据调整预训练模型并使用指标对其进行评估的架构。返回的是一个包含度量结果的数据框,以及绘制学习曲线的模型历史。

下一个要点将告诉你如何使用该功能。

是的,你需要指标来评估不同算法的性能,你需要绘制学习曲线(准确性和损失)来观察你的训练行为。

度量

为了评估分类模型,可以使用不同的度量,例如准确度、精确度、召回率、f1 分数等。(这些指标的详细信息可以在这里找到)。下面的代码显示了如何建立一个度量字典和将用于评估神经网络的函数。

该函数可用于二值和多值分类问题。

绘制学习曲线

在训练深度学习模型时,查看学习曲线的行为以确定模型是偏差、过度拟合还是正常行为非常重要。为此,让我们看看下面的代码,它允许绘制训练集和评估集的准确度和损失曲线。

至此,您知道了用于评估模型的不同方法和指标。

数据

为了避免经典的 MNIST5或 FashionMNIST[6]进行分类,我们将采用英特尔提供的数据集(可在 Kaggle[1]上获得)。这些数据更为奇特,它们代表了来自世界各地的场景,代表了 6 个类别(建筑、森林、山脉、冰川、海洋和街道)。对于本地计算机上的项目,数据量也是可访问的,因为训练集由 14k 图像组成,验证集包含 3k 图像和 7k 图像用于测试。每个图像的形状为(150x150)像素。

从列车组构建图像

火车场景中的森林图像

火车场景中的冰川图像

比衣服好不是吗?

如何加载和准备数据?首先,您需要配置到达数据的不同路径。

***# creating paths to retrieve the data***
ROOT = "/mnt/d"
FOLDER = "INTEL_images_classification"
TRAIN = os.path.join(ROOT, FOLDER, 'seg_train/seg_train')
TEST = os.path.join(ROOT, FOLDER, 'seg_test/seg_test')
PRED  = os.path.join(ROOT, FOLDER, 'seg_pred/seg_pred')

然后你需要通过图片(。jpg)到 NumPy 值数组。

def prepare_dataset(path,label):
    x_train=[]
    y_train=[]
    all_images_path=glob(path+'/*.jpg')
    for img_path in tqdm(all_images_path) :
       img=load_img(img_path, target_size=(150,150))
       img=img_to_array(img)
       img=img/255.0   ***# here you normalize the data between 0 and 1***
       x_train.append(img)
       y_train.append(label)
    return x_train,y_train

该函数将生成一个包含所有图像和相关标签的矩阵。您可以看到像素值将在[0,1]之间重新调整。深度学习模型在这个值范围内表现得更好,因为范围 255 是为' RGB '颜色制作的,一种算法不理解'颜色'。好了,是时候提取数据了:

***# Train dataset***
labels = os.listdir(TRAIN)
x = []
y = []
for label in labels:
    x_, y_ = prepare_dataset(os.path.join(TRAIN, label), label)
    x.extend(x_)
    y.extend(y_)
x = np.array(x)
y = np.array(y)***# Test dataset***
labels = os.listdir(TEST)
x_test = []
y_test = []
for label in labels:
    x_, y_ = prepare_dataset(os.path.join(TEST, label), label)
    x_test.extend(x_)
    y_test.extend(y_)
x_test = np.array(x_test)
y_test = np.array(y_test)

这里有一个训练集和一个测试集。接下来,您需要将训练集拆分为训练验证集(80/20 就足够了)。Scikit-learn 为我们带来了train_test_split功能:

# create a validation set 
from sklearn.model_selection import train_test_split
train_x, valid_x, y_train, y_valid = train_test_split(x, y, random_state=42, stratify=y, test_size=0.2)

几乎完美,还有一点,标签还是字符串类型。模型不欣赏这种数据,所以需要对它们进行编码(需要 int 值):

from sklearn import preprocessing***# create the label encoder***
encoder = preprocessing.LabelEncoder()
***# train it on the training labels set*** 
train_y = encoder.fit_transform(y_train)
***# apply it on the other corresponding labels*** 
valid_y = encoder.transform(y_valid)
test_y  = encoder.transform(y_test)

现在,它是完美的。您有方法、指标和数据。

结果

从零开始

方法 一节中呈现的简单 CNN 模型已经在数据集上进行了训练。在 10 个时期之后,训练停止,因为算法不再学习。

Epoch 1/30
351/351 [==============================] - 536s 2s/step - loss: 1.1578 - accuracy: 0.5443 - val_loss: 1.0311 - val_accuracy: 0.6138
...
Epoch 10/30
351/351 [==============================] - 649s 2s/step - loss: 0.2364 - accuracy: 0.9146 - val_loss: 0.6711 - val_accuracy: 0.7887

相应的曲线表明,在 3 个时期之后,在测试集上达到大约 75%的准确度。该模型在训练中继续学习,但是不能如验证准确性所示的那样进行概括。损失显示同样的事情,在 3 个时期之后,验证集上的损失没有改变。

“从头开始”模型的精确度和损耗曲线

相应的指标:

 accuracy          : 78.33%
  balanced_accuracy': 78.44%
  precision         : 78.94%
  recall            : 78.33%
  f1-score          : 78.31%
  cohens_kappa      : 73.97%
  matthews_corrcoef : 74.10%
  roc_auc           : 93.37%

在测试集上的结果并不坏,在准确度、精确度和召回率上达到了 78+%。这是分类的一个好的开始。

数据扩充

Epoch 1/50
62/62 [==============================] - 1116s 18s/step - loss: 2.0628 - accuracy: 0.1857 - val_loss: 1.7963 - val_accuracy: 0.1925...
Epoch 11/50
62/62 [==============================] - 984s 16s/step - loss: 0.9419 - accuracy: 0.6369 - val_loss: 0.9811 - val_accuracy: 0.5925

训练以糟糕的结果结束。学习曲线表明培训不够好。这可以通过调整模型来改变。

学习曲线数据扩充

如你所见,即使结果不是完美的,学习也是更好的。训练 et 和验证之间的曲线更接近。所以训练更稳定。

相关指标如下所示:

accuracy          | 68.60%
balanced_accuracy | 68.13%
precision         | 70.28%
recall            | 68.61%
f1-score          | 67.54%
cohens_kappa      | 62.18%
matthews_corrcoef | 62.76%
roc_auc           | 93.73%

转移学习

本研究中测试的模型如下:

Xception[7]           | ResNet50V2[12]  | InceptionV3[14]
VGG16[8]              | ResNet101V2     | 
VGG19                 | ResNet152V2     | 
InceptionResNetV2[9]  | DenseNet121[13] | 
MobileNetV2[10]       | DenseNet169     |
NASNetLarge[11]       | DenseNet201     |

是的,Keras 中实现了很多预先训练好的模型(这里只是其中的一部分)。他们每个人都在 ImageNet 数据集上进行了训练。下表显示了根据我们的数据训练的每个模型的结果。

使用不同的预训练模型获得的结果

由于 input_shape 的原因,NASNetLarge 模型尚未经过测试。该模型考虑了具有形状(331,331,3)的图片。

这些结果是用EarlyStopping(patience=1)获得的,这意味着如果模型没有从一个时期学习到另一个时期,学习过程就停止了。为什么一个?因为测试所有模型很费时间。这些结果也是通过仅调整每个模型的顶层而获得的。为了提高性能,可以调整更多的层。

讨论

数据扩充方法是最微妙的,结果不是预期的那样。为了提高性能,需要调整模型的复杂性。从头开始和迁移学习方法的实现是最容易建立的。

结论

使用迁移学习方法的预训练模型允许我们在数据集上获得最佳结果。通过减少对早期停止参数的限制和调整预训练模型的更多层,可以提高性能。显然,这会更费时间。
“从零开始的”和数据扩充方法已经显示出有趣的结果,但是没有超过迁移学习。
resnet 101v 2 模型在 INTEL 数据集(测试集)上取得了 90.33%的准确率和 90.36%的精度。它是比较的赢家。

我希望你会对这篇文章感兴趣,并对你将来的图像分类项目有所帮助。计算机视觉的下一篇文章将是关于图像中的物体检测。回头见。

参考

[1]https://www . ka ggle . com/puneet 6060/Intel-image-class ification
【2】keras . io
【3】Pratt,L. Y. (1993)。《基于区分度的神经网络间迁移》 (PDF)。NIPS 会议:神经信息处理系统的进展。摩根·考夫曼出版社。第 204-211 页。
[4] Olga Russakovsky 等《ImageNet 大规模视觉识别挑战赛》。IJCV,2015 年。
【5】勒村,y .等人,1998 年。"基于梯度的学习应用于文档识别."IEEE 会议录,86(11):2278–2324
【6】韩 x .,卡希夫 r .,罗兰 v .,2017。Fashion-MNIST:一个用于对标机器学习算法的新型图像数据集 arXiv 预印本
【7】Chollet f .,2016。例外:深度可分卷积深度学习 arXiv 预印本
【8】Simon Yan k .和 Zisserman A .,2014。用于大规模图像识别的极深度卷积网络 arXiv 预印本
【9】Szegedy c .等人,2016。Inception-v4,Inception-ResNet 和剩余连接对学习的影响 arXiv 预印本
【10】Sandler m .等人,2019。MobileNetV2:反演残差和线性瓶颈 arXiv 预印本
【11】Zoph b .等人,2018。可扩展图像识别的学习可转移架构 arXiv 预印本
【12】何 k 等,2016。用于图像识别的深度残差学习 arXiv 预印本
【13】黄 g .等,2017。密集连接的卷积网络 arXiv 预印本
【14】Szegedy c .等人,2016。重新思考计算机视觉的初始架构 arXiv 预印本

深度学习至高无上的原因

原文:https://towardsdatascience.com/what-is-inductive-bias-beac6ab1789b?source=collection_archive---------43-----------------------

嘶!这不是关于深入…

来自 Pexels 的 Rodolfo Clix 的照片

如果一件事不存在,它会导致曾经创建的每个深度学习模型的垮台,这是什么?

归纳能力是深度学习模型在技术领域占据主导地位的原因。

感应偏差的定义

让你的算法推断出它的推论的最小断言集。

我们来深入一下(双关,本意)。

你的模型所具有的假设,这使得它能够执行。

在狗与猫分类器的情况下,当新的狗照片遇到模型时,模型能够成功地识别它是猫还是狗。

为什么?

我们这么说是因为模型已经知道了猫和狗的样子。因为它创造了一个猫和狗的形状的内部表示。

这个模型所做的学习。是什么?

这是它的感应偏差,它的性能的基础。

深度学习模型是如何得出其归纳偏差的?

最初,当你创建一个神经模型时,在你给它输入数据之前,它逼近任何东西的能力是无限的。

因此,你输入的任何数据都开始限制无限的近似能力来完成某个特定的任务。你用数据来定义你的深度学习模型的边界。你告诉它:这就是你的工作;如果你偏离了它,你将受到惩罚。

你用数据来定义你的深度学习模型的边界。

模型开始收缩自己,并开始应用于它前面的数据。它开始发现一个一般假设(一个可以通过调查证实的尝试性解释)可以帮助它以最佳方式完成工作。本质上,模型开始寻找这个问题的答案。

我应该知道的那一件事是什么,其他的一切都应该知道?

最初,它可能会尝试学习一切,即它会尝试学习你给它的每个训练示例的特定假设。

来自佩克斯瓦莱里娅·博尔特涅娃的照片,来自佩克斯心理医生的照片,来自佩克斯埃里克·麦克林的照片

例如,在上面不同品种的狗的照片中,我们可以看到它们是多么的不同。如果我们试图创建特定的假设来对它们进行分类,例如:

第一个假设可以是如果有金色和白色的皮毛,脸上有很多皮毛,腿很小,等等,那么,它是一只狗。

第二个假设是,如果它有黑白相间的颜色,三角形的脸,等等,那么,它是一只狗。

第三个假设可以是,如果它的皮毛是棕色和白色混合的,以此类推,那么,它就是一只狗。

所有这些特定的假设根本不会帮助我们创建一个通用的分类器。因为这些特定的假设只对特定的训练图像有效。

深度学习模型的正向传递相当于这些特定假设的创建。

但是,这不是我们的目标。这就是我们进行训练的原因,即我们以拒绝这些特定假设的方式来修正模型。

如果模型倾向于特定的假设,我们会惩罚它,因为它们会导致我们使用的损失值更高,而性能度量值(比如,准确性)值更低。

深度学习模型的后向传递相当于对这些特定假设的拒绝。

向前和向后传递的每一个循环都导致对某个特定假设的拒绝,而接受一个更普遍的假设。随着更多这样的循环继续发生,模型达到越来越普遍的假设,这将允许它以最佳方式完成任务。

最后一个假设,即模型达到的最一般的假设是它的归纳偏差。最一般的假设是约束条件最少的假设。这里既有神经网络的辨别能力,也有神经网络的泛化能力。

该模型得出的最普遍的假设是它的归纳偏差

一般的假设是深度学习模型如何能够在看不见的数据上表现得非常好,因为导出的假设是如此普遍,以至于它几乎包含了问题网络被训练的所有排列和计算。

为什么深度学习模型需要大量数据?

这也暗示了为什么他们如此渴望数据,因为他们想为给定的问题推导出最佳的一般假设,所以他们需要看到越来越多的数据变化,以便他们可以将这些变化纳入其一般假设中。

简而言之,归纳偏差越好,神经网络的预测能力(对看不见的数据执行的能力)就越好。

来源:作者

旁注

归纳偏差的概念不仅适用于深度学习,它还驱动着现有所有学习算法的性能。

"眼睛只能看到头脑准备理解的东西。"罗伯逊·戴维斯

摘要

在这篇文章中,我们理解了归纳偏差的概念,以及它是如何成为深度学习模型统治的基础的。我们也了解了感应偏差是如何产生的。

聪明是一种怎样的体验?

原文:https://towardsdatascience.com/what-is-it-like-to-be-intelligent-ba0ffff8dd9c?source=collection_archive---------6-----------------------

探索人类意识的深处

让我首先声明我写一个我没有明确权威的主题的动机。到目前为止,我已经写了很多年了,既有我在公司工作的主题,也有我感兴趣的主题。我个人认为,写作是通过综合学习的一种强有力的形式。说你明白了一件事很容易,直到你不得不向别人解释它。以电梯推销的形式解释一些事情相对容易,但是演讲或博客文章需要你真正思考结构、有效性和一致性。它迫使你寻找参考资料来支持你的主张。基本上,这是一个很好的方法来确保你不会通过一系列的简化和错觉来欺骗自己。所以我这么做更多是为了我自己,而不是你,但是你可以一起来。

所以,我们来谈谈 C 字。意识。

我们一生中都有停下来思考一个大问题的难得时刻。我的蓝色和你的蓝色一样吗?为什么天空是蓝色的?外面有外星人吗?有来生吗?大爆炸之前发生了什么?宇宙的尽头是什么?这一切的意义是什么?

当然,这其中的一些,科学可以解答。天空是蓝色的,原因和海洋是蓝色的一样,它是我们用眼睛仍能看到的波长最短的光,因此从水和空气中的粒子散射到很远的距离,并逐渐支配其他颜色。有些问题我们还没有答案。有些问题我们可能永远不会知道。

虽然很容易陷入我们自己的思想和世界,但退一步想想简单的案例作为基本真理的来源是有帮助的。

你有没有…停下来想想当一只蝙蝠是什么感觉?

不是从飞行本身的意义上来说,而是从这一点上来说,它们是否也像我们一样有一种内在的体验?如果有轮回这回事,你变成了蝙蝠,灯还亮着吗?你有想法吗?自我意识?与视觉或声音相比,声纳的感觉如何?澄清一下,我选择蝙蝠的唯一原因是,这是托马斯·内格尔 1974 年关于意识的一篇著名论文的主题——这是科学遗留下来的最大谜团之一。

意识到底是什么?

嗯,我们也不清楚。我们知道当我们睡觉的时候,我们没有它。除了在梦里。当我们在高速公路上开车时,我们的车就少了。大多数关于意识的定义包括自我意识和我们经验的品质,或“感受性”。比如红色的发红。你不仅可以有情绪,而且你可以意识到你对情绪的体验及其微妙的内在品质。这是我们生活中永不停息的电影。嗯,通过冥想,有可能暂时暂停这部内在电影,并体验一种没有内在主体作为体验一部分的状态,在这种状态下,只有生命的原始输入,没有内省或判断。这可能与自我迷失有关。

冥想让我们更像人,还是事实上更不像人?骨灰堂Unsplash 拍摄的照片

当你入睡时,不管有没有梦,你的意识体验都会中断。从某种意义上说,这是一个小小的死亡。借助现代物理学,我们知道构成你身体和大脑的所有粒子都只是场中的激发,因此处于持续的微小流动中。在真正的意义上,你是一种能量模式。这两个观点证实了这样一种说法,即真正醒来的人不是你。事实上,你从来都不是你。没有你。每天早晨,一个新的生命出现,获得意识,带着对过去生命的记忆。每一天都是你的最后一天!

理解间断概念的一个简单方法是健忘症。我们大多数人从未有过临床健忘症,但可能有一两个晚上的酗酒。因为你对那些事件没有记忆,通常是负面的,你可以通过声明那不是我,在精神上把自己从那些事件中分离出来。有许多记录在案的因脑损伤而丧失短期记忆的案例,其中由于没有任何近期记忆作为参考,自我意识持续丧失。

所以如果意识从来不是连续的,我们真的会死吗?好吧,如果不说别的,似乎很难想象你大脑中代表你记忆的原子结构保持完整。当物质死亡时,复活有意识生物的可能性也就消失了。稍后,我们将再次讨论这个想法,但现在,对大多数人来说,克隆人、机器人或用你的电子大脑模式编码的模拟的想法不太像是值得过的生活。至少这不再是你的生活了。

所以我们回去吧。有一种东西叫意识。我们可以主观地把矛头指向它。据说我们都有。它在哪里?这个问题可以问吗?

意识在大脑里吗?

每个人都有一个人脑的心理图像,上面是有皱纹的部分。那是你的新大脑皮层,也就是思考的大脑。在那之下,你有我们从哺乳动物和爬行动物进化而来的各种各样的小部分。最古老的部分是脑干,它控制着我们的自主功能,如心跳和消化。那么哪些是有意识的部分呢?嗯,我们知道有些部分似乎很少表现出与意识相关的活动,而其他部分则表现出很多。小脑控制运动功能,似乎是无意识的。这就是你如何在不知道精确计时和运动所需的必要肌肉的情况下抓住棒球。从脑外伤和动物试验中,我们可以推断出大脑主要区域的一些具体特征。

Johannes Sobotta 博士——人体解剖学图集和教科书第三卷血管系统、淋巴系统、神经系统和感觉器官,公共领域,https://commons.wikimedia.org/w/index.php?curid=29135452

较新的灵长类动物新大脑皮层的某些部分处理世界的规划和感觉模型,而情绪和长期记忆由哺乳动物的边缘系统控制。似乎有意识的体验经常涉及计划、记忆、模型和情感之间的相互作用或反馈。所有这些都显示出作为进化驱动力在生存和繁殖方面的价值。例如,情绪是未来奖励的一种形式。如果某件事让你难过,你可以形成一个持久的记忆,你希望在未来避免这种悲伤。

意识有许多正式的模型,包括更高阶的意识理论。这似乎是说,意识的整体发生在新皮层的不同部分,从感觉皮层到工作记忆区有反馈回路。关键是,只有当你对自己的经历有了表征,你才是有意识的。你的大脑皮层接收到看到红色气球的视觉刺激是不够的,你必须有看到红色气球的特定表征才能意识到这种体验。

情绪作为意识的高阶状态,Joseph E. LeDoux,Richard Brown,美国国家科学院院刊 2017 年 3 月,114(10)e 2016-e 2025;DOI:10.1073/PNAS。56686.86868686666

意识的全球工作空间理论将意识活动定位为源于工作记忆,就像你电脑上的桌面一样。你只知道桌面上有什么,而不是任何时候整台电脑上成千上万的文件。意识因此被呈现为进入你大脑中表象的功能。表象可以是感官的,抽象的,或来自记忆的。

旧的理论将所有的意识置于杏仁核内的情感回路中,杏仁核是我们爬行动物边缘系统的一部分。另一个将脑干的唤醒与来自岛叶皮层和前扣带皮层的一般意识联系起来,有效地说明了我们的智能规划哺乳动物大脑是由我们的爬行动物大脑控制的。

如果这些看起来有点模糊和功能性,那么还有另一个新的理论需要权衡。著名物理学家罗杰·彭罗斯和麻醉师斯图亚特·哈默罗夫已经确定了脑细胞内的一种特殊结构是意识的潜在来源。但不仅仅是常规的,无聊的意识。这就是量子意识。排队 X 档案主题曲。

微管遍布神经元细胞,尤其是突触和轴突周围。来源:微管细胞骨架在神经发育障碍中的作用。米凯拉·拉塞尔,杰西卡·台伯,劳拉·安妮·洛维里。前面。细胞。神经科学。,2018 年 6 月 14 日|https://doi.org/10.3389/fncel.2018.00165

脑细胞内有真正微小的纳米级结构,称为微管。事实上,它们是如此之小,如此之有结构,以至于它们可以考虑到量子效应,如神经元群之间的纠缠和隧道效应。这可以解决另一个关于观察者在量子波函数坍缩中的作用的大谜团。意识于是变得有用,给了我们一个宏观尺度的宇宙,看起来是确定的,没有量子效应。哦,这也可以解释自由意志。因为量子纠缠会让你的神经元对刺激的反应比神经元启动的速度更快,即回到过去几毫秒来决定该做什么。这一切都很不可思议,但仍然是科学的。虽然已经在微管中检测到一些量子效应,但是实验学家对该理论的几个方面存在争议。

所以现在还没有定论。我们知道的一件事是,神经元是唯一不能有效地在你体内再生的细胞。所有其他类型的细胞都会定期更新,每 7 年你就能拥有所有新细胞。但是你几乎被你生来就有的脑细胞卡住了。突触不断变化,但神经元不会。这可能已经告诉我们一些关于意识的事情,因为扰乱结构对大脑的功能来说是一件坏事,大脑的功能显然包括意识。

意识是生命的意义吗?

从将某种形式的意识归因于所有生物,到将意识视为生命的必要条件,这是一个很容易的飞跃。但是让我们记住,细胞是活的。细胞有意识吗?细胞是智能的吗?

哲学家卡尔·弗里斯顿让我们考虑一滴油。它是活的吗?不,当然不是。但是一滴油和一个细胞到底有什么区别呢?两者都有一个生理边界,叫做马尔科夫毯。两者都在积极地对环境进行采样,否则,石油会与水混合,但它从来没有混合过。区别实际上在于运动。油滴只能在压力和重力等外力的作用下运动,而不会在内部运动。细胞能够移动是因为它有摄取和排出能量的能力。

Kirchhoff Michael,Parr Thomas,Palacios Ensor,Friston Karl 和 Kiverstein Julian,2018 年,《生命的马尔可夫毯:自主性、主动推理和自由能原理》, J. R. Soc。interface . 152017 07 92
http://doi.org/10.1098/rsif.2017.0792

人类是由活细胞组成的,当以正确的模式组合时,它们似乎会产生意识。如果没有意识,我们肯定会活着,但是这样的生活有意义吗?一个 Roomba 机器人真的会在乎关机吗?好像不是。显然,有某种进化的驱动力来增殖意识,因为它在不同程度上存在于动物中。也许,公平地说,意识赋予我们的生活以意义。我们可以体验,我们可以感受,我们可以希望,我们可以梦想。

所以我们都有,可以稍微摆弄一下,都在脑子里。太棒了。谁在乎呢。事情就是这样。这将如何影响我的生活?

为什么意识很重要

你可能会关心意识的原因有很多。一个当然是道德的实际问题。对于处于不可逆转的植物人状态的人来说,安乐死在道德上是可以接受的。然而,对于一个有意识的人来说,这将被认为是谋杀。所以这很重要。婴儿过去不用麻醉就可以割包皮,因为我们没有把真正的人类意识归于婴儿。哭只是一种本能。人们认为,婴儿还没有发展出意识能力,因为他们缺乏语言、记忆和运动控制能力。如果我们现在承认婴儿可以有有意义的有意识的内心体验,那界限在哪里?那条线是从卵子到胎儿再到婴儿的哪个发育阶段?动物呢?鸡被宰杀食用有意识吗?奶牛呢?

另一个原因更哲学,但本质上非常主观。意识在我们的发展中起什么作用?我们是因为有意识而成为人类,还是因为我们是人类而有意识?为什么人类会变成这样?这是什么意思?意识是生命的意义吗?如果宇宙中存在其他智慧生命,我们是否应该假设他们也是有意识的?如果我们开发出真正的人工智能,超越人类的智能,它会有意识吗?如果不是,又有什么关系呢?当你死后会发生什么,如果组织以某种方式保存下来,你会像从睡眠中醒来一样回来吗?

好吧,好吧,我们有问题,但真正的秘密或问题是什么?

意识的难题

好吧,考虑一下。大脑通过进化发展出了令人难以置信的智力和社会交往能力,并在繁殖人类基因组方面取得了惊人的成功。太棒了。我们拥有在身体和精神上统治地球上所有其他物种的所有必要功能。也许你从未停下来问一个简单的问题。为什么一点内心体验都没有?

为什么我们需要任何附加在我们经历上的品质?难道我们不能像一个功能性的人一样完成所有的任务吗,就像……一个机器人?如果有痛苦,为什么我们需要受苦?我们难道不能简单地学会不去做那种没有痛苦的本能的事情吗?为什么我们需要遗憾、渴望和爱?难道我们不能进化出所有相同的行为,而不附加任何品质吗?就像星际迷航里的瓦肯人。

如果你纠结于功能和质量的区别,就想想其他形式的生命,以及你能对他们的生命的内在体验说些什么。你的狗,有意识吗?也许你会认为是的,他们似乎有丰富的内心体验,即使他们不能告诉我们。猫,是的,但也许没那么好。仓鼠?鱼?苍蝇?虫子?细菌?冠状病毒?对大多数人来说,责任止于鱼类和爬行动物。他们似乎只是…存在,没有太多关于存在或不存在的大惊小怪。你看不到鱼在玩耍,或者展示任何人类可能会理解为主观体验的东西。海豚和鲸鱼会,但它们是哺乳动物。

等等,这不就是情报吗?

好吧,所以鱼并不特别聪明。Roomba 机器人是智能的还是有意识的?也许都不是。在国际象棋和围棋中击败所有人类的计算机程序 AlphaZero 怎么样?看起来超级聪明,但肯定不是有意识的?你可能会说 AlphaZero 没有和人类相似的智力。它在超人的水平上玩几个游戏,但没有其他功能,即使是在学习其他任务方面。它有学习和记忆,但有经验吗?它有模型,但没有感官输入。它看不到游戏板或它自己在玩,它只看到数字矩阵。所以也许,智力和意识之间有一个有用的区别?

看待智力和意识的一种方式是考虑功能输入和输出。我们通过感官感知事物,并将其转化为电信号传输到我们的大脑。同样,其他信号从我们的大脑进入我们的神经系统,触发像举起手指这样的动作。想象一下,如果某个邪恶的医生在你睡觉的时候小心翼翼地故意切断所有连接你大脑和身体的神经,毫无痛苦,然后你在早上醒来。你真的会醒来吗?这个邪恶的医生需要把所有的神经重新连接到人造器官上吗?奇怪的是,还没有人自愿参加这个实验。我们所知道的是,在事故中失去身体完整功能的人经常继续报告“幽灵”的感官体验。是的,即使是眼睛和大脑没有联系的盲人也能报告看到东西。大脑是你的意识体验的来源的证据是压倒性的,灵魂的存在,至少在大脑之外,似乎几乎是不可能的。

几千年来,这种灵魂和肉体的分离是科学家和哲学家的主要信仰。它被宗教和教会进一步强化,因为它服务于他们的世界观和创造观。这很难责怪他们,因为所谓的二元论相当直观。当你的身体在睡眠中脱离服务时,你的大脑仍然可以在梦中探索和玩耍。其他形式的意识改变似乎加强了这一概念,如灵魂出窍和幻觉。然而,目前的科学实验将灵魂放在更靠近背心的地方,很可能在你的新大脑皮层。具体来说,是大脑生成的自我模型给了我们一种自我意识,这是我们主观体验的核心。如果没有“我”,真的是一种体验吗?通过冥想练习,你可以暂时体验这种自我迷失。你可以放开自我的这一特征,只意识到原始的感官输入,如身体的感觉和声音。你仍然有意识,但不是以人类认为正常的方式。

勒内·笛卡尔身心二元论的例证。笛卡尔认为输入是通过感觉器官传递到大脑中的骨骺并从那里传递到非物质的精神。资料来源:https://commons.wikimedia.org/w/index.php?curid=1918592 勒内·笛卡尔公共领域

与似乎难以确定的智力不同,我们可以很容易地发现我们意识的局限性。试着积极地思考一些物体,比如立方体,同时注意你的呼吸。加上听听周围的声音。现在增加对你的腿的意识。你不能。大约在 2-3 步之间,你就下车了。你失去了第一个,最多只能在 2-3 个意识项目之间快速转换。所以你能意识到的是有限度的,至少对人类来说是这样。它确实为扩展人类意识或人工意识打开了一个有趣的可能性。想象一下同时意识到你的整个身体及其无数的功能。想象一下意识到互联网的存在?你能想象一下同时意识到整个星球吗?

所以都是信息,还有信息处理?没有特殊酱料,没有生物粘液,或者灵魂?

综合信息理论

意识纯粹是信息的功能这一观点被称为底物独立性。这意味着,它不受我们大脑和身体的物理系统的限制,而是可以在硅或金属中人工复制。这并不是说我们知道如何实现这样的壮举,或者这很容易,只是说这是可能的。

如果我们认为智能是输入和输出之间的处理功能,那么意识是从纯粹的信息处理中产生的吗?如果我们假设这是真的,难道我们不能用某种方式来形式化这个过程吗?这就是综合信息理论(“IIT”)的尝试,这是对意识进行科学而非哲学理解的最近和最初的尝试。

最有趣的是,它还提出了一种量化意识的方法。它叫做 Phi。更多的 Phi 意味着更多的意识。这个重要的步骤避开了迄今为止所有定义意识的主要尝试,所以 IIT 为这个领域提供了一个进行实验和验证意识假说的重要机会。

IIT 的前提是,具有整合性的信息表明因果力量,即信息中的抽象概念是因果相关的。这可能有一个进化的基础,通过对环境刺激的快速反应的要求。灌木丛中的尾巴没有任何意义,但它意味着狮子,意味着被吃掉。此外,IIT 说,所有的经历在你的物质大脑中都有相应的结构。电信号的特定模式是狮子尾巴的视觉线索,另一个是害怕被所述狮子吃掉。

从经验到大脑中的概念再到信息的整合。资料来源:托诺尼,朱利奥等人《整合信息理论:从意识到它的物理基础》。《自然评论神经科学》17(2016):450–461。

IIT 模型的一个主要好处是,它似乎可以解释小脑的无意识性质,小脑拥有所有大脑部分中最多的神经元,但与有意识的经历没有相关的大脑活动。那是棒球抓住了你大脑的一部分。假设你身体里有 600 块肌肉,每秒钟能发出 100 块,学习和复制运动模式需要大量带宽是有道理的。想象一个钢琴师在充满活力的交响乐的高潮部分。钢琴家用抽象的表达方式思考,比如音符和节拍,而不是手指的运动。因此,小脑是强大的,但缺乏在有意识的新大脑皮层中看到的高度连通性。这是 lo-phi ,双关语。

实验将向我们展示,IIT 有多少是由智力或功能而非意识单独造成的。在没有任何集成的情况下,您真的能执行需要智能的复杂任务吗?也许,这可能是一个线索,当你达到更高的智力水平时,意识会免费出现?

这一切说明了人工智能什么?

如果信息是唯一的游戏,那么你会认为神经网络是相关的考虑因素。毕竟,就我们所知,它们是我们大脑神经元如何工作的基本代表。人工智能最大的讽刺是,我们也不知道那些人工神经元是如何工作的。真的。事实上,它工作得非常好,但是我们不确定到底是怎么回事或者为什么。似乎有一些神奇的能力归因于简单算术运算的网络,非线性重复数千次。人造大脑学习的广度和速度都不如人脑,但它们仍能学到很多东西。仅仅通过显示大量标有可能输出的样本,即使是一个小的神经网络也可以学习从输入到输出的非常复杂的关系。有时甚至超出了人类的水平。

目前,进展的主要限制是围绕一般化。这意味着,如果你学习一件事,你不需要学习每一个例子才能在现实世界中有效。婴儿不需要看到所有类型的狗来识别一只狗,但计算机可以。人类可以学习玩任何类型的游戏,从网球到象棋,但计算机很难学习很多东西。他们在某一方面可能是超人,但是我们现在能做的最好的事情就是学习不同的 Atari 游戏或者从围棋到象棋。就是这样。没有网球。没有诗。少了什么?

令人惊讶的是,很少有人积极致力于这个问题。人工智能的大多数商业上可行的用途都不需要任何类似人类智能的东西。事实上,如果你只是需要控制化工厂的阀门,最好不要兼职做一点数独或爵士乐。聚焦算法在商业上非常有用。

少数积极思考这个问题的人之一是 Jan LeCun,他是图像识别领域现代机器学习技术的早期先驱之一。他的建议是强化学习才是正道。举例来说,这就是 AlphaZero 背后的算法类型。这是胡萝卜加大棒的学习方法。如果你做得好,你会得到一根胡萝卜。如果你做得不好,你会得到一根棍子。光是做大量的学习就能产生惊人的智能,比如举世无双的国际象棋算法。这让我们走了很远。然后呢?

嗯,LeCun 建议我们需要一个世界观。一个代表真实世界的框架。例如,当人类下棋时,我们看到的是棋子和棋盘。它们是有上下文和意义的对象。算法看不到这些。没有形状的骑士。棋盘上没有颜色。它只看到数字。D4 骑士。将死。

计算机可以学习规则,但对物体一无所知。移动棋盘上的一个棋子没有任何意义,因为它可以在移动苹果时重复使用。你甚至可能会争辩说,尽管计算机会下棋,但它不懂下棋。一点也不。准确地说,计算机可以学习一种函数近似,这种函数近似恰好与象棋中的好棋步有很强的相关性。这不是象棋。如果没有人类的胡萝卜加大棒,它实际上什么也学不到。计算机大脑必须是填鸭式的。这必须改变。必须给计算机一个建模世界的框架,就像人类一样。我们深刻理解我们生活的环境。如何移动,如何寻找食物,如何爬楼梯,如何开门,如何问路,如何寻找工作,如何写电子邮件,等等。

如果我们到了那里呢?如果计算机能做到这一切会怎么样?一个功能完全相同的人类复制品,但由硅和铜线制成?

但是灯还会亮着吗?

这又回到了我们的底物独立性问题。如果你克隆了你自己,这在技术上已经是可能的,那么克隆人是有意识的吗?似乎那会自动成为事实,即使它不再是你的意识。这是复制品。不过,你能做到什么程度呢?如果你只是将你的大脑在分子甚至量子水平上扫描成计算机模拟,那会是你,你的另一个副本,还是只是一个缺乏真实人类意识的虚拟僵尸?意识行为的函数近似值是否足以通过测试?

怎么才能知道呢?当艾伦·图灵在二战期间发明计算机时,他已经想到了这一点。他看到了从房间大小的计算器到人类智能的进化,这是可能的。他提出了图灵测试,该测试指出,一个人与另一个房间中的一个实体进行交互,仅仅通过书写的方式,应该能够辨别这个另一个实体是否是人。如果它们不能,结果应该是实体拥有了人类级别的智能。那么,聊天机器人呢?

已经有人声称用相对简单的算法就能通过图灵测试。通常的策略是试图引导人类朝着算法能够以人类的方式提供记忆答案的方向前进。但这不会长久。如果超过几分钟,它最终会分解。我们都和 Siri 一起经历过。随着聊天机器人可以进行更长时间、更有意义的对话,这一点将逐渐被进一步推广。即使他们对语言本身一无所知。然而,就像 AlphaZero 一样,对话只是人类智能的一个方面。一个隐士可以拥有丰富的内心生活,而不说一句话,同时创造出令人难以置信的智力或艺术成就。那么我们如何测试“真正的”智力甚至“真正的”意识呢?

有趣的是,科幻小说可能在几十年前就给了我们答案。《银翼杀手》引入了 Voigt Kampf 测试,用于从人类群体中识别类似人类的电子人。尤其是,当那些机器人变得狂暴的时候。该测试本身旨在激发情感反应,表明质量的特殊味道对人类体验至关重要。当测量学生的反应作为情绪反应的指标时,会提出困难的伦理和道德问题。有点像灵魂测谎仪测试。

然而,任何这样的测试都有一个根本性的问题。约翰·塞尔在他的中国房间实验中展示了这一点。它表明,人工智能系统可以完全像一个智能的、有意识的实体一样行事,但实际上对它所拥有的或属于它的体验的内容完全一无所知。

回到今天的世界,我们也可以看看 IIT 来衡量意识。根据该理论,信息的整合程度越高,或者说 Phi,意识就越高。通过设计,简单的前馈神经网络具有恰好为零的 Phi,并且不能是有意识的。有学习但没有融合。然而,更复杂的网络,如循环神经网络或强化学习,可以显示具有正的 Phi。这似乎意味着 AlphaZero 是有意识的。事实上,它正在进行大量的信息整合。像细菌或苍蝇一样多?由于在应用 IIT 和计算 Phi 时存在未决问题,我们还不能说这一点,但我们似乎不太可能立即对 Deepmind 将 AlphaZero 作为一个有意识实体的道德待遇产生道德担忧。

人工智能研究员 Joscha Bach 甚至声称只有模拟才能有意识,这意味着物理系统不能。请注意,由于大脑模拟世界和自我,我们的意识将属于这种模拟的定义,而岩石不会。这将是一个反对泛灵论的论点,泛灵论认为意识在宇宙中无处不在,只是在所有物质中的程度不同。AlphaZero 确实模拟了世界,但并没有真正模拟它自己,所以它现在可能还不够。

这难道不是突发现象吗?

让我们回到我们唯一能确定的有意识的存在,也就是我们自己。我们知道进化。难道这一切不能被解释为我们大脑进化过程中的突发现象吗?蚂蚁的神经元也许没有能力对死去的人感到后悔,但我们有。也许是痛苦和遗憾让我们来到这里。一旦火和武器允许我们聚集在更大的社会群体中,我们的大脑发展相对较快。如果你学会忍受痛苦,你就能学会避免一系列可能导致死亡本身最终痛苦的行为。智慧让你事后后悔,并计划未来以避免后悔的潜在来源。这一切都非常微妙,但人类互动的复杂性是无穷无尽的。

但是我们究竟是如何发展出这些细微差别的呢?猴子用棍子互相殴打,大脑是如何产生如此难以置信的深度复杂性的?如果智力和意识在人类进化中如此紧密地联系在一起,那么它在我们大脑内部是如何工作的呢?很遗憾,我们也不知道。从广义相对论到人类基因组计划,再到登上月球,我们已经用大脑做了很多事情,但我们似乎对所有这些智力进步的来源知之甚少。

我们当然知道大脑的各个部分,其中一些功能相关,它们如何从较小的物种进化而来,我们可以通过大脑各部分之间的电信号来测量大脑活动。就是这样。例如,我们不知道学习是如何进行的。没有人类的学习算法,即使我们现在可以教会神经网络在国际象棋中击败我们。当然,部分原因是我们进行实验的道德能力有限。汉尼拔·莱克特不会得到很多研究资助。另一个原因是这个系统非常复杂。一个人脑中的神经元比我们银河系中的恒星还要多,大约有 1000 亿个。每个神经元都与另外 10,000 个神经元相连。它令人困惑,一语双关。

揭示大脑输入和输出之间关系的一个有趣的新方法是千脑理论。根据这个框架,我们没有大脑。取而代之的是,我们有成千上万个相互连接的小大脑。这些是所谓的皮质柱,有些是独立的神经元堆叠,包括一种特殊类型的神经元,称为网格细胞,解释空间信息。没有一个专栏会单独做任何事情。

这个想法是,你有数百甚至数千个这样的单元接收相同的信号,就像在视觉皮层一样。然后它们都会产生某种输出。他们投票。是的,投票。这就是为什么你不用看就能知道地毯下面有地板。你的大脑可以利用各种感官和记忆输入来估计三维物体,比如杯子。这就是你如何准确地知道手指应该放在哪里才能够到并握住把手的背面。

传统(A)和 1000 个大脑(B)感知模型的比较。来源:Hawkins,Jeff 等人,基于新皮层网格细胞的智力和皮层功能框架,Front。神经回路,2019 年 1 月 11 日,https://doi.org/10.3389/fncir.2018.00121

这个模型(B)与传统模型(A)非常不同,传统模型(A)也启发了当前的深度学习技术。深度学习假设神经元的连接层的层次结构,每个层负责最终导致决策或识别的更高层次的细节。

也许这就是为什么婴儿对躲猫猫如此兴奋,因为他们的一千个大脑还没有获得记忆来说出手的幕后发生了什么,他们真的相信你在你的手背后消失了。这也适用于狗。也许这就是婴儿笨拙的原因。他们的上千个大脑仍然在练习实时投票的合唱表演,以产生正确的行动。

这整件事听起来像猪食

许多顶尖科学家都会同意。意识一直是介于哲学、心理学、物理学和神经科学之间的边缘科学,从未成为严肃的研究课题。直到现在,也许是由人工智能的快速进化引发的,以及关于对待动物的越来越多的伦理问题。我们需要这些问题的答案,压力越来越大。

然而,许多人,如肖恩·卡罗尔教授,只会说没什么特别的。华莱士说过也没有消化的物理学,这只是生物学,故事结束。然而,甚至像泛灵论这样相当古怪的概念也获得了一些支持,将意识更多地表现为一种像重力一样的自然力量,而不仅仅是一种生物功能。在这种情况下,即使是石头也是有意识的,只是……不那么有意识。

意识的未来

那么这里的最终游戏是什么?为了达到这个目标,你经历了大量的阅读和术语。让我们用一些有趣的东西来结束。

显然,年轻的埃隆·马斯克得出结论,生命的意义在于将意识传播到整个宇宙。这就是为什么探索月球、火星以及更远的地方是我们的特权。用生命和意识的礼物播种宇宙。人类的胚种。正如费米悖论似乎暗示的那样,如果那里没有外星人,这一点尤其正确。成为宇宙中生命的捍卫者取决于我们。

那么埃隆对我们的意识有什么计划呢?他想稍微修补一下。比如引入第三层。意思是互联网。可能还有人工智能。哦,这是个陷阱。它涉及到针头。但是不用担心,一个机器人会把成千上万个微米级的电极插入你的新大脑皮层。超级小心。只有一英寸左右深。哦,还有电池。我们需要取出一点头骨。没什么大不了的,你不会错过的,真的。像硬币大小的钻头。基本上是从母体中取出大脑,但可能是在全身麻醉下。不是你想意识到的事情。

保持绝对静止。Neuralink 电极插入机器人。来源:拥有数千通道的一体化脑机接口平台,Elon Musk,Neuralink,bioRxiv 703801https://doi.org/10.1101/703801

最初,像 Elon 的大部分宏伟计划一样,R&D 将通过商业用例获得资金。这对任何一个创业者来说都是一个很大的教训。在这种情况下,这意味着治愈大脑疾病,如阿尔茨海默氏症,癫痫症,自闭症或失明。是的,治愈失明在 2020 年就在菜单上了。这些都是主要的社会问题,因此也是数十亿美元的机会。它将直接帮助数百万健康状况不佳的人,同时资助健康人大脑第三层的真实愿景。

你大脑的 USB-C 插头。生产模型计划是无线的。来源:拥有数千通道的一体化脑机接口平台,Elon Musk,Neuralink,bioRxiv 703801https://doi.org/10.1101/703801

那么埃隆对 C 字的立场是什么?埃隆将落入紧急阵营。从 0 到 1 的一切。没有特别的调味汁。如果你可以通过踢电视来修复它,你可以通过这些电极来修复大脑。就是这样。恢复视力,停止癫痫。但是这些电极也可以下载。你的思想,你的记忆,你的情感。备份到云。先是通过 USB,然后是无线。

从那里,他提出也许你甚至可以恢复。就像你的手机或笔记本电脑,当它坏掉的时候。从最新备份恢复。可以走了。想抹去昨晚一些尴尬的记忆吗?向右滑动。对于人类从那里到真正永生的一小步来说,你真正需要的是一种新的生物基质。比如说像克隆人一样。

这个万亿美元的问题是:这是你吗?我的意思是,如果一个克隆人从你离开的地方开始,也许会打击你的自尊心,但是“你”仍然会永远死去。这里的区别在于睡眠和死亡。睡了一觉后你感觉像是同一个人,但死亡是一张单程票。如果我们真的分辨不出来,对你个人来说有关系吗?显然,醒来后的克隆人会说他们就是你,你的记忆完好无损。但那是同一个人在一个新的更年轻更性感的身体里醒来,还是只是你记忆的克隆?

迟早,我们都要做出自己的判断。

阿基拉宁 是两家创业公司的创始人,总部位于新加坡。Healthzilla是一家健康科技公司,也是 health zilla 健康分析应用(iOS)(Android)的创造者。Bambu是一家为金融服务公司提供数字财富解决方案的 Fintech 公司。可以关注我的 推特

Python 中的懒求值是什么?

原文:https://towardsdatascience.com/what-is-lazy-evaluation-in-python-9efb1d3bfed0?source=collection_archive---------5-----------------------

你不知道 Python 为你优化了多少代码

霍利·曼达里奇Unsplash 上拍摄的照片

如果你以前从未听说过惰性求值惰性求值 是一种求值策略,它将表达式的求值延迟到需要它的值时,同时也避免了重复求值(来自维基百科)。这通常被认为是一种优化代码的策略。

作者:高

让我们把这个理论变成一个例子。例如,你有一个简单的表达式sum = 1 + 2,Python 会试图理解这个表达式的真正含义并得出结论sum = 3。这个过程被称为评估,它需要某种计算能力。在这种情况下,评估立即完成,因此它有另一个名称:严格评估

另一方面,我们有一个不严格的评价,叫做懒评价。不同的是 懒求值不会立即对表达式求值,而是只在需要结果时才求值。有点像一个懒惰的学生,只在作业需要交给老师的时候才去做。

但是在这里偷懒不一定是坏事,它可以提高你代码的效率,节省大量资源。幸运的是,Python 已经悄悄地将惰性评估应用于许多内置函数,以优化您的代码。我敢肯定,即使没有意识到懒惰评估,您也必须熟悉这些功能。

在本文中,我将解释懒惰求值在 Python 中是如何工作的,哪些函数从中受益,以及背后的原因。最后,我将向您展示如何编写自己的惰性函数/类。我们开始吧!

范围()

很多时候 Python 还是会立即对 expression 求值。让我们看看这个例子。你觉得需要多长时间?

print([time.sleep(0), time.sleep(1), time.sleep(2)][0])

答案是 3 秒。这是因为当你创建一个列表时,Python 会立即评估列表中的每一项,即使你只需要第一个元素。

从 Python3 开始,在让这样的列表遍历更加内存高效和时间高效方面有了很大的改进,这就是range()函数。我敢打赌,每个 Python 开发人员一生中都至少使用过一次这个函数。在 Python2 中,range(5)将返回一个包含 5 个元素的列表。随着列表大小的增加,会使用更多的内存。

Python 2.7.16
>>> range(5)
[0, 1, 2, 3, 4]
>>> import sys
>>> sys.getsizeof(range(5))
112
>>> sys.getsizeof(range(500))
4072

然而在 Python 3 中,range(5)返回一个范围类型。这个对象可以被迭代以产生一个数字序列。无论范围有多大,对象总是具有相同的大小。这是因为range(5)只存储开始停止、步骤的值,需要时计算每一项。

Python 3.7.7
>>> range(5)
range(0, 5)
>>> import sys
>>> sys.getsizeof(range(5))
48
>>> sys.getsizeof(range(500))
48

如果你不熟悉生成器、迭代器及其好处,请继续阅读本节。否则,请随意跳过这一部分。

迭代器>生成器

简单来说,迭代器是一个比生成器更大的概念。迭代器是一个对象,它的类有一个__next____iter__方法。每次你调用迭代器对象时,你会得到序列中的下一个条目,直到迭代器对象用尽并引发StopIteration。然而,生成器是一个返回迭代器的函数。除了使用了yield而不是return之外,它看起来就像一个普通的函数。

当执行yield语句时,程序会暂停当前函数的执行,并将产生的值返回给调用者。这是惰性求值的关键思想,当需要调用者时计算并返回值,下一个值仍然是安静的,在程序中不做任何事情。

要创建生成器,有两种方法:

创建发电机的两种方法

然后,让我们用range()来改进第一个例子。在我们得出最终结果之前,还有另一个“陷阱”。下面的例子有两个功能:use_generator()use_list()。除了use_generator()islice()功能中使用(),而use_list()使用[]之外,它们看起来几乎一样。然而,这种微小的差异会对运行时间产生巨大的影响。

这种行为的答案已经存在于函数名中。(time.sleep(x) for x in range(3))是一个生成器,而[time.sleep(x) for x in range(3)]是一个列表,尽管它使用了range()。因此,使用 list 的函数比另一个函数花费更多的时间。

如果你理解了这部分,那么恭喜你,你已经对懒评了解了 50%。

Zip()

一个非常相似的用例是zip(),它合并两个可重复项来产生一个元组序列。在 Python2 中,zip(*iterables)将返回元组列表。

Python 2.7.16
>>> type(zip([1,2],[3,4]))
<type 'list'>
>>> import sys
>>> sys.getsizeof(zip([1,2],[3,4]))
88
>>> sys.getsizeof(zip([i for i in range(500)],[i for i in range(500)]))
4072

而从 Python3 开始,已经改进为返回一个类似于range对象的zip对象,可以迭代。

Python 3.7.7 
>>> type(zip([1,2],[3,4]))
<class 'zip'>
>>> import sys
>>> sys.getsizeof(zip([1,2],[3,4]))
72
>>> sys.getsizeof(zip([i for i in range(500)],[i for i in range(500)]))
72

原因我就不再重复了,因为它和range()的思路一样。但是如果你想了解zip的其他方面,可以随意看我的另一篇文章。

[## 理解 zip()—Python 中隐藏的瑰宝

有效地合并未知数量的列表

towardsdatascience.com](/understand-zip-a-hidden-gem-in-python-9488a255f45d)

打开()

这是另一个内置功能,我们可能每天都在使用它,并认为它是理所当然的。当我们打开一个文件时,我们通常会:

with open("file.csv", "r") as f:
    for line in f:
      print(line)

with open(...)不读取整个文件并将其存储在内存中,而是返回一个可以迭代的 file 对象。正因为如此,它能够有效地读取巨大的文件,而不伤害内存。

λ表达式

几周前,我收到了一位读者关于 Lambda 表达式的问题,这实际上引发了我写这篇文章。他的问题是:

为什么像 x = map(lambda x: x*2,[1,2,3,4,5])这样的 lambda map 对象不占用任何空间?但是如果你做了 list(x),它会打印所有的值并占用内存空间?

我希望到目前为止,你应该对这里发生的事情有所了解。map对象也是一个可以迭代的惰性对象。在每个循环中只对 1 个项目进行计算x*2。做list(x)的时候,基本上是一次性计算完所有的值。如果只是想迭代map对象,就不用做list(x)

lambda 表达式中的惰性求值

如何写一个懒惰的评价函数/类?

在文章的最后一部分,我想把我们带到下一个层次,在这里我们编写自己的懒惰评估函数/类。这有助于我们扩展内置功能之外的功能。

正如我们所理解的,惰性求值的一个关键部分无非是一个生成器。因此,我们可以简单地把函数写成一个生成器。

懒惰功能—生成器

惰性函数:生成器

懒惰属性—装饰者

自定义惰性计算的另一个常见用例是类属性的初始化。当我们初始化一个类时,某些属性可能需要很长时间来计算。在下面的例子中,属性cities花费了更长的时间,因为它需要调用一个 API 来获取城市名称列表。因此,如果我们对于一些国家对象实际上不需要这个值,那将是浪费时间。

这个博客中的一个好的解决方案是为这样的懒惰属性创建一个装饰器,这样昂贵的操作只有在需要这个属性的时候才会被执行。从控制台输出可以看到,cities property is called是在我们打印出china.cities之后打印出来的。

惰性属性:装饰者

我希望这篇文章能启发你对代码优化有一个新的看法。

参考:

[## Python 中延迟求值的属性模式

惰性求值是一种有用的模式,在许多情况下可以提高代码的效率。这方面的一个例子是…

stevenloria.com](https://stevenloria.com/lazy-properties/) [## Python 技巧:Python 中的惰性求值

虽然小数据集可能适合您的主内存,但不是所有的数据集都适合。有时您无法读取整个数据集…

sanjayasubedi.com.np](https://sanjayasubedi.com.np/python/python-tips-lazy-evaluation-in-python/)

作为一名对游戏充满热情的数据科学家是什么感觉…

原文:https://towardsdatascience.com/what-is-like-to-be-a-data-scientist-with-a-passion-for-gaming-43c067ad6415?source=collection_archive---------15-----------------------

英雄联盟:创建一个模型,根据表现预测获胜的球队

弗洛里安·奥利佛在 Unsplash 上拍摄的照片

摘要

在 2 个月的时间里,我做了一个关于英雄联盟的简短数据项目,因为我是这个游戏及其数据使用的忠实粉丝。该项目的重点是我们是否可以创建一个模型,根据表现来预测获胜的团队。我试图用逻辑回归和其他模型来预测比赛结果。特征是从Riot Games API公开的数据中提取的——包括为游戏挑选的冠军、玩家角色信息、玩家对冠军的掌握程度(赛前知识)以及游戏内玩家统计。我发现,从一开始只使用预赛知识(冠军、大师、角色、法术)只是比赛结果的一个弱预测器,但是使用游戏内统计,该模型成为一个强预测器。****

介绍

1-游戏行业数据和分析简介:

安东尼·布洛林在 Unsplash 上拍摄的照片

正如他们对传统体育所做的那样,各种数据的收集、分析和使用正在开始改变在线竞技游戏的玩法和概念。如今,随着电子竞技越来越受欢迎,关于电子竞技游戏的数据分析也变得越来越常见。

在这个项目中,我选择了 2009 年由 Riot Games 开发的著名网游作为案例研究。主要原因是我从游戏的第五个赛季就开始玩并喜欢这个游戏,我想给这个项目带来一个比其他案例研究更有见识的观点。另一个重要的动机点是 Riot Games 的 API ,它允许公众轻松地进行查询并从他们的服务器上获取信息。

2-相关工作

由于英雄联盟是一款受欢迎的游戏,在数据分析领域已经有了一些应用。像 图盟MetaSrc 这样的网站从英雄联盟 API 中收集基本的统计数据和信息,并使用它来构建简单的分析,如最受欢迎的冠军是谁,两个冠军在一起比赛时的胜率是多少...这些现有的应用程序目前没有做的是预测当前正在进行的游戏,并记住该游戏的所有功能,这正是该项目试图填补的。

英雄联盟作为游戏的背景

1-游戏概述:

英雄联盟是由开发的一款 多人在线战场竞技场(MOBA) 风格游戏。每场比赛由两个队组成,每队有 5 名队员。每个队在竞技场的相对两侧开始游戏,目标是克服障碍(炮塔、抑制剂和敌方球员),以摧毁敌方基地( Nexus) 。全地图划分的团队玩家有 5 个标准位置:顶、中、丛林、攻击伤害搬运(ADC)和支援。每场比赛通常持续二十分钟到一小时。玩家可以从 140 多个具有不同特点和能力的冠军中选择一个独特的冠军。这款游戏也代表了一个蓬勃发展的竞争场景,拥有数百万的锦标赛奖金池和在线观众。****

链接:https://www.pinterest.com/pin/579697783257078372/?lp=true

每个游戏中有这么多的参数,不可能说一个因素将决定任何特定玩家的成功或失败。此外,英雄联盟背后有这么大的社区,预测休闲玩家和锦标赛游戏的比赛结果对玩家和粉丝来说都是有趣和有价值的。

2-游戏信息:

英雄联盟是一款复杂的游戏,需要掌握许多元素的知识才能玩得熟练。游戏中,两队各五名玩家在一个名为 召唤师裂谷 的战场上对战。还有其他不同目标和布局的战场,但在我们的项目中不会研究。 召唤师裂谷 由各队的基地、三条车道、丛林组成。英雄联盟的目标是摧毁对方队伍的 Nexus,一个位于敌方基地的建筑。

链接:shorturl.at/ktAK1

gold differential是一个原始统计数据的例子,可以一眼看出比赛的状态。通常当一个队比另一个队拥有更多的金牌时,这意味着他们的冠军携带更强大的物品,如果他们进入团队战斗,更有可能获胜。结合个人【KDA(杀死数、死亡数、助攻数)** 的数字和一个团队累计的总杀死数,这是一个让观众知道谁赢了的简单方法。如果我们看一下 LCS 的广播, 黄金微分 是我们在屏幕上方看到的第一组数字之一。但是像这样的统计数据并不能说明全部情况…****

数据收集

我试图从公共 Riot Games API 中提取数据,该 API 允许收集关于召唤师(LoL 对玩家的称呼)、冠军和过去比赛的数据。然后我用 把这些都收集到一个文件里。xlsx 格式,包含 2017 赛季每场比赛的所有可用数据。

备注:下载的数据集包含超过 75 个变量,其中一些没有意义。所以我决定去掉那些对我们的分析没有帮助的变量。

我在 Kaggle 上上传了数据,可以在这里随意下载

所以,我决定删除 25 个对我们的预测没有帮助的变量。现在,我们在 中有了一个数据集。csv 格式,其中包含 50 个变量。

为了解释下载的比赛数据文件,你可以在这里找到一个包含变量名及其描述的字典。

这是我们使用 Tableau Desktop 软件分析的数据集的预览:

文件预览:2017clean.csv

探索性数据分析(EDA):

a-英雄联盟的演变:

首先,我试图通过对比我们数据中的竞技游戏数量与前一年 2016 年的对比来说明游戏令人印象深刻的增长。

2016 年 2429 场比赛。联赛继续大幅增长,2017 年达到了令人难以置信的 3117 场职业竞技比赛。

我们还可以看到,联赛 LPL、纳尔茨、LCK尤尔茨 各有超过 350 场的比赛最多。

b 队:

计算胜率相当于估算胜率占游戏总数的比例。下面我们可以看到,有球队把 0%和 100%作为胜率,这是不连贯的。

问题是有些球队只打了几场比赛,有些甚至只打了一场。为了克服这个问题,我们需要计算在不同联赛中参加 60 场以上比赛的“出场最多的球队”的胜率。

我们可以看到, SK 电讯 T1闪狼三星银河 胜率最高。我首先计算了赢&输,然后我分别计算了每个团队的胜率:

********

因此,我们得出结论:

  • 一个职业队的平均胜率45%**
  • SK 电讯 T1 胜率最高。在 139 场比赛中,他们设法赢了 97 场比赛,以 69,78% 的高胜率****
  • 闪狼93 场胜率64(68.82%)
  • 三星银河 胜率第三。他们设法赢得了 80 场比赛,胜率达到了 67.23%

c 级玩家:

这场比赛的另一个重要因素是 t 他的杀数,死亡数和助攻数 KDA(杀数,死亡数,助攻数)。公式:

KDA 比率= (K+A) / Max(1,D) 其中:K =死亡数| D =死亡数| A =助攻数

  • 职业玩家的平均 KDA 是 3.74
  • 詹森 & 比耶格森 是竞技联赛中 KDA 最高的两名球员,分别拥有 7、78&7、34

黄金和伤害

同时,我也试着用线性回归的方法来看看获得的金币和造成的伤害之间的相关性。如下图所示,黄金伤害之间有很强的线性相关性,也就是说玩家利用好游戏中获得的黄金,将黄金转化为对敌人的伤害。

********

另外,我研究了英雄联盟游戏的其他方面,这里不想解释,以免写长篇。也许我可以在未来写其他文章来呈现整个研究。现在让我们进入最重要的部分!

赢家预测:

我们能预测一场比赛的结果吗?

实际上,从一开始就只使用赛前知识(冠军,大师,角色,法术)只是比赛结果的一个弱预测器,但是使用游戏中的统计数据,该模型成为一个强预测器。这就是为什么我会试着根据游戏中的统计数据来建立我们的模型。

事实上,我们不确定哪些变量对预测结果有用。建立双变量模型通常很有帮助,双变量模型是使用单个独立变量预测结果的模型。但问题是,在双变量逻辑回归模型中,28 个变量中的哪一个是结果变量的重要预测因子?我们需要建立不同的模型,以便找到具有最高准确性的最佳模型,或者我们可以使用相关函数来了解与变量结果高度相关的变量。

首先,我开始排除游戏结束时统计数据的变量,因为在那种情况下预测胜利已经太晚了。此外,我决定忽略与个人统计数据相关的变量,因为这是一个团队游戏,一个球员不可能独自获胜。

我在同一个数据集上应用了逻辑回归随机森林。所以我得到了可变重要性(逻辑回归的绝对系数)(随机森林的可变重要性)。我试图将两者结合起来,得到一个最终的变量重要性。经过多次尝试,我设法建立了一个最终模型(叠加:逻辑回归&随机前沿),其重要变量如下:****

  • gdat 10:10 点黄金差
  • gdat15 : 金差 15:00
  • fb : 第一次血杀(1 是,0 否)
  • 团队杀戮,s : 团队杀戮总数
  • 团队死亡:团队死亡总数
  • 游戏的第一座塔被杀死(1 是,0 否)
  • 组队任务:组队杀死的塔总数
  • 敌方死亡人数:被对方杀死的总塔数
  • fd : 游戏中第一条龙被杀死(1 是,0 否)
  • 团队屠龙:团队屠龙总数
  • 被对方杀死的龙总数

混乱矩阵解释

  • 正确: 预测红队获胜,实际获胜:6318 次
  • 正确: 预测蓝队获胜,实际获胜:6351 次
  • 错: 预测红队赢但红队输了:95 次
  • 错: 预测蓝队赢但蓝队输了:106 次

准确率= 98.43 %

r 闪亮应用:

Shiny 是一个 R 包,它使得直接从 R 构建交互式 web 应用变得容易。我决定构建一个包含两部分的 web 应用程序:

  • 第一部分使用我们的最佳预测模型,其准确率为 98%;你可以填一张表格,然后得到你获胜机会的百分比。
  • 第二个用 Riot Games Api 对比英雄联盟冠军统计。一次可以比较两个冠军,补丁版本也可选。

讨论:

在这项研究中,我使用了与游戏的一个补丁相关的数据,因为 Riot Games 试图将冠军胜率保持在接近 50%。任何高于 50%的胜率意味着冠军给了玩家优势,而任何低于 50%的胜率意味着冠军给了玩家劣势。

为了保持平衡,暴动决定分别 nerfbuff 这些冠军。这意味着,如果团队选择相同的冠军,补丁的变化数量和胜率之间有很强的相关性。

结论:

我们希望将来能够看到更多的最新数据,但这是一个很好的演示,说明了数据如何能够推动任何人,从普通玩家,到暴乱游戏 专业广播,甚至团队寻找最佳方法来分析敌方团队的优势和劣势,以做出明智的决策。

通过 Riot API 挖掘数据并发布有趣的统计数据的现有网站中,没有一个能够有效地预测比赛中的冠军球队。这项研究使用与两个队的统计数据相关的不同变量来完成这项任务,以便预测获胜者。

我想提到的是, Riot API 还包含了更多我们忽略的信息,但这些信息可以用于许多其他目的。

参考资料:

什么是损失函数?

原文:https://towardsdatascience.com/what-is-loss-function-1e2605aeb904?source=collection_archive---------4-----------------------

来源:米里亚姆·埃斯帕奇

在关于激活功能的帖子之后,我们将潜入第二部分,将 【损失】目标 功能 用于神经网络

包含所有代码的笔记本可以在这里找到: GitHub 你可以找到代码来生成不同类型的数据集和神经网络来测试损失函数。

为了理解什么是损失函数,这里引用一下学习过程:

一种衡量算法是否做得很好的方法-这是确定算法的当前输出与其预期输出之间的距离所必需的。该测量被用作反馈信号来调整算法的工作方式。这个调整步骤就是我们所说的学习
Fran ois Chollet,Python 深度学习(2017),Manning,第 1 章,第 6 页

损失函数计算算法当前输出和期望输出之间距离的函数。这是一种评估算法如何对数据建模的方法。它可以分为两类。一个用于分类(离散值,0,1,2…),另一个用于回归(连续值)。

训练一个神经网络常用的损失函数有哪些?

内容

  • 交叉熵
  • 原木损失
  • 指数损失
  • 铰链损耗
  • Kullback Leibler 发散损失
  • 均方误差(MSE — L2)
  • 平均绝对误差(美-L1)
  • 胡伯损失

这些软件包是必需的:

%matplotlib inline
import keras.backend as K
import numpy as np
import matplotlib.pyplot as plt

分类

交叉熵

该函数来自信息论,其目标是测量信息分布比特数的两个平均值之差交叉熵作为对数损失函数(不相同,但它们测量相同的东西)计算两个概率分布函数之间的差异。

是传输从概率分布中随机选择的事件所需的比特数。偏斜分布具有低熵,而事件概率相等的分布具有较大的熵。

在信息论中,我们喜欢描述一个事件的惊喜。低概率事件更令人惊讶,因此有更多的信息。而事件同样可能发生的概率分布更令人惊讶,熵也更大。

-偏态概率分布 ( 不足为奇):低熵。

-均衡概率分布 ( 惊人):高熵。

交叉熵是机器学习中最常用的一类损失函数,因为它导致更好的泛化模型和更快的训练。

交叉熵可用于二元和多类分类问题(许多类具有一个标签,不同于许多类具有称为多标签分类的多标签)。

交叉熵的类型:

  • 二元交叉熵:用于二元分类问题
  • 分类交叉熵:二进制和多类问题,标签需要被编码为分类的,一键编码表示(对于 3 类:[0,1,0],[1,0,0]…)
  • 稀疏交叉熵:二元和多类问题(标签是整数——0 或 1 或… n,取决于标签的数量)

这类损失函数的取值范围:

  • 0.00 :完美概率
  • < 0.02 :大概率
  • < 0.05 :良好
  • < 0.20 :太好了
  • > 0.30 :不大
  • 1.00 :地狱
  • > 2.00 有些东西不工作

原木损耗

对数损失是高达 1 / log(2)因子的二进制交叉熵。这个损失函数是凸的,并且对于负值线性增长(对异常值不太敏感)。使用对数损失的常用算法是 逻辑回归

二元分类问题的负对数似然性通常简称为“对数损失”,作为逻辑回归的损失函数。

-对数损失=负对数似然,符合伯努利概率分布

对于分类问题,“对数损失”、“交叉熵”和“负对数似然”可以互换使用。

更一般地,术语“交叉熵”和“负对数似然”在分类模型的损失函数的上下文中可互换使用。

指数损失

指数损失被设计在 Adaboost 算法的开始,该算法贪婪地优化它。数学形式为:
exp _ loss = 1/m * sum(exp(-y * f(x)))

可以这样编码:

def exponential_loss(y_pred, y_true):
    return np.mean(np.exp(- y_pred * y_true))

结果如下所示:

指数损失与错误分类(如果 y<0,则为 1,否则为 0)

铰链损耗

在分类任务中,铰链损失函数被用来修正 SVM 算法的超平面。目标是在没有被正确预测或离超平面太近的点上进行不同的惩罚。

它的数学公式是 Hinge = max(0,1-y*f(x))和相应的代码:

def Hinge(y_pred, y_true):
    return np.max([0., 1\. - y_pred * y_true])

这个方程的结果是凸的,但不可微,需要一个次梯度算法来优化。

结果如下所示:

铰链损失 vs 误分类(1 if y <0 else 0)

Kullback Leibler Divergence Loss

The KL divergence is the score of two different probability distribution functions. The KL difference between a PDF of q(x) and a PDF of p(x) is noted KL(Q||P) where || means 散度(不是对称 KL(P||Q)!= KL(Q||P))。

KL(Q | | P)=-sum(Q(x)* log(P(x)/Q(x))或 sum(q(x)*log(q(x)/p(x))

求和是针对离散情况的,积分是针对连续情况的。这意味着,对于相同的数据,如果 q(x)的 PDF 大,而 p(x)的 PDF 小,则散度增加。在机器学习中,你可以将这表示为预测和基本事实之间的差异。

以下代码显示了如何将 KL 散度用于预测和地面实况:

def kl_divergence(y_true, y_pred):
    return y_true * np.log(y_true / y_pred)

这里可以显示一个简单的可视化:

来源:维基百科

因此,KL 散度通常被称为“相对熵

-交叉熵:用 Q 而不是 p 来表示一个事件的平均总位数

-相对熵 ( KL 散度):从 Q 而不是 p 来表示事件的平均额外比特数。

回归

均方误差损失(也称为 L2 正则化)

它是当前输出 y_pred 和预期输出 y_true 的平方差除以输出数。MSE 函数对异常值非常敏感,因为差值是给予异常值更多重要性的平方。如果我们必须预测所有目标的一个值,预测值应该是平均值。

这是这样表述的:

def mean_square_error(y_true, y_pred):
    return K.mean(K.square(y_true-y_pred), axis=-1)

我们可以将 MSE 函数的行为可视化,将一系列值(此处为-10000 到 10000)与一个常数值(此处为 100)进行比较:

均方误差损失的行为

该行为是对梯度下降算法特别有用的二次曲线。越接近最小值,梯度越小。如果异常值对问题很重要,则 MSE 非常有用。如果异常值是有噪声的、错误的数据或错误的测量值,则应使用 MAE 损失函数。

平均绝对误差损失(也称为 L1 正则化)

在前一个损失函数的差值处,平方被一个绝对值代替。这种差异对具有“V”形的损失函数的行为有很大的影响。每个点的梯度都是相同的,即使值接近最小值(可能会产生跳跃)。它需要动态修改学习速率,以减少接近最小值的步长。MAE 函数对异常值更稳健,因为它基于与 MSE 的平方相比的绝对值。这就像一个中位数,离群值不能真正影响她的行为。

您可以像这样轻松地实现它:

def mean_square_error(y_true, y_pred):
    return K.mean(K.abs(y_true-y_pred), axis=-1)

我们可以将一系列值(此处为-10000 到 10000)与一个常量值(此处为 100)进行比较,从而直观地了解 MAE 函数的行为:

平均绝对误差损失的行为

均方对数误差

胡伯损失

Huber 损失是 MAE 和 MSE(L1-L2)的组合,但它取决于一个影响损失函数形状的附加参数 delta。这个参数需要通过算法进行微调。当值很大(远离最小值)时,函数具有 MAE 的行为,接近最小值时,函数的行为类似于 MSE 。所以 delta 参数就是你对离群值的敏感度。胡伯损失的数学形式是:

我们可以用两种方式实现这个函数,这里我给出一个函数,其中所有的块都是显式的。

*# custom huber loss function* 
def huber_loss_error(y_true, y_pred, delta=0.1):
    res = []
    for i in zip(y_true, y_pred):
        if abs(i[0]-i[1])<=delta:
            res.append(0.5*((i[0]-i[1])**2))
        else:
            res.append(delta*((abs(i[0]-i[1]) )-0.5*(delta**2)))
 *# can also be write as:
 # np.where(np.abs(y_true-y_pred) < delta, 0.5*(y_true-y_pred)**2 , delta*(np.abs(y_true-y_pred)-0.5*delta))*
    return res # np.sum(res)

我们可以将一系列值(此处为-10 到 10)与一个常数值(此处为 0)进行比较,从而直观地了解 Huber 损失函数的行为:

胡伯损失行为

Huber 损耗允许对较大的数字有较大的梯度,但当值变小时梯度减小。但是,这个函数需要微调增量,但计算量很大。为了避免这种情况,您可以使用 Log-Cosh 损失(本文中没有解释,但您可以在下一个图中看到它们之间的差异)。

Huber 损失函数(δ= 1)和 Log-Cosh 损失函数的比较

参考资料:

什么是机器学习:监督、非监督、半监督和强化学习方法

原文:https://towardsdatascience.com/what-is-machine-learning-a-short-note-on-supervised-unsupervised-semi-supervised-and-aed1573ae9bb?source=collection_archive---------3-----------------------

一篇关于什么是机器学习的短文:监督、非监督、半监督和强化学习

阿瑟尼·托古列夫在 Unsplash 上的照片

1.介绍

机器学习是人工智能(AI)的一个子领域,它为系统提供自动****学习经验 中改进的能力,而不需要显式编程。

学习(模型拟合)的过程中,我们需要有一些可用的观测值数据(也称为样本样本,以便探索隐藏在我们数据中的潜在** 潜在 模式。这些学来的 模式都是没什么比一些功能决定 界限。**

这些模式由系统(计算机系统)自动学习,无需人工干预或输入。

如果你想在交互式路线图和活跃的学习社区的支持下自学数据科学,看看这个资源:https://aigents.co/learn

2.主要的机器学习类别

机器学习算法通常分为有监督的和无监督的。

2.1 受监督的机器学习算法/方法

作者做的手工素描。

对于这类模型,研究需要手头有一个数据集,其中包含一些观察值和观察值的标签/类别。例如,观察可以是动物的图像,标签可以是动物的名字(例如猫、狗等)。

这些模型从标记的数据集学习,然后用于预测未来事件。对于训练过程,输入是具有其相应标签的已知训练数据集,并且学习算法产生推断函数,以最终对可以给予模型的一些新的看不见的观察进行预测。经过充分的训练后,该模型能够为任何新的输入提供目标。学习算法还可以将其输出与正确的预期输出(基本事实标签)进行比较,并找出错误,以便相应地修改自身(例如,通过反向传播)。

****监督模型可以进一步分为回归和分类案例:

  • ****分类:分类问题是当输出变量是一个类别时,例如“疾病”/“无疾病”。
  • ****回归:回归问题是当输出变量是一个真实的连续值时,例如股票价格预测

属于这个家族的模型的一些例子如下:SVC、LDA、SVR、回归、随机森林等。

2.2 无监督机器学习算法/方法

作者做的手工素描。

对于这类模型,研究需要手头有一个带有一些观察值的数据集,而不需要观察值的标签/类别。

无监督学习研究系统如何从未标记的数据中推断出描述隐藏结构的函数。该系统不会预测正确的输出,而是探索数据,并可以从数据集进行推断,以描述来自未标记数据的隐藏结构。

无监督模型可以进一步分组为聚类关联情况。

  • 聚类:聚类问题是你想要揭示数据中固有的 分组的地方,比如根据一些特征/特性(比如腿的数量)对动物进行分组。
  • ****关联:关联规则学习就是你想发现关联规则,比如买 X 的人也倾向于买 y

属于这个家族的模型的一些例子如下:PCA、K-means、DBSCAN、混合模型等。

2.3 半监督机器学习算法/方法

这个家族介于有监督和无监督学习家族之间。半监督模型使用标记和未标记的数据进行训练。

2.4 强化机器学习算法/方法

作者做的手工素描。

这一系列模型由使用估计误差作为奖励或惩罚的算法组成。如果误差大,那么惩罚就高,奖励就低。如果误差小,那么惩罚就低,奖励就高。

试错搜索延迟 奖励是强化学习最相关的特征。该系列模型允许在特定环境下自动确定理想行为,以最大化所需性能。

奖励 反馈是模型学习哪一个动作最好所需要的,这就是所谓的“强化** 信号”。**

属于这个家族的模型的一些例子是 Q-learning

3.摘要

监督:数据集中的所有观察值都被标记,算法学习从输入数据预测输出。

无监督:数据集中的所有观察值都是未标记的,算法从输入数据中学习固有结构。

半监督:数据集的一些观察值被标记,但大多数通常是未标记的。因此,通常混合使用监督和非监督方法。

使用机器学习(ML)模型,我们能够对大量数据进行分析。人类无法识别的数据模式可以在几秒钟内(在某些情况下)使用这些最大似然模型准确地(T21)提取出来。然而,大多数情况下,准确的结果(好的模型)通常需要大量的时间和资源用于模型训练(模型学习函数或决策边界的过程)。

那都是乡亲们!希望你喜欢这篇文章!

敬请关注并支持这一努力

如果你喜欢这篇文章并觉得它有用,请关注我,这样你就可以看到我所有的新帖子。

有问题吗?把它们作为评论贴出来,我会尽快回复。

和我联系

posted @ 2024-10-16 08:59  绝不原创的飞龙  阅读(522)  评论(0)    收藏  举报