TowardsDataScience 博客中文翻译 2021(四百三十八)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

理解动态时间扭曲的直观方法

原文:https://towardsdatascience.com/intuitive-ways-of-understanding-dynamic-time-warping-5fb60fcbe037?source=collection_archive---------16-----------------------

通过编辑距离和等效性

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

Joshua Sukoff 在 Unsplash 上拍摄的照片

动态时间扭曲(DTW),尽管它的名字很科幻,但它只不过是一种(特别有用的)测量两个时间序列x=(x1,...,xn)y=(y1,...,ym)之间距离的技术。

  • “动态的”,因为算法涉及动态规划
  • 时间,因为它是时间序列
  • 因为它可以被解释为计算xy的扭曲版本之间的“通常”距离

如何计算它的机制和各种可视化已经存在(例如,罗曼·塔维纳德在他们的博客上,章晓虎在 Medium 上,泰雷兹·塞恩·科尔廷在 YouTube 上),但是这些解释缺少的是一种更深层次的直觉和一种你可以自己想出距离的感觉。

我在这里的目的是通过编辑距离和等价性给出一些解释,这将让你对 DTW 的现状有一个更直观的了解。你甚至可以用这些想法来构建你自己的距离概念!

为了帮助解释,我将使用示例x=(0,1,1,-2,0)y=(0,0,1,-1)来说明为什么这两个序列之间的 DTW 距离是 1。

DTW 通过编辑距离

编辑距离通常用于自然语言处理和 DNA 分析。维基百科关于编辑距离的文章给出了很好的描述:

编辑距离是一种通过计算将一个字符串转换成另一个字符串所需的最少操作次数来量化两个字符串之间不同程度的方法

标准的操作是:删除一个字符,插入一个字符,用一个字符替换另一个字符,每一个对距离的贡献是相等的。

DTW 可以被认为是编辑距离的一种形式,其中的操作如下:

  • 可以在相邻空间中插入或删除条目的副本。这是零成本的。例如,通过复制-2条目从(0,1,1,-2,0)(0,1,1,-2,-2,0)将是零成本操作。或者从(0,1,1,-2,0)(0,1,-2,0),移除一个1将是零成本操作。
  • 可以编辑条目。如果把a编辑成b,代价就是ab之间的距离。例如,通过将1编辑为5(0,1,1,-2,0)转到(0,1,5,-2,0)将是成本为 4 的操作。
  • 可以在序列末尾插入或删除零。这是零成本的。例如,通过移除末端的0(0,1,1,-2,0)(0,1,1,-2)将是零成本操作。

xy的 DTW 距离将是使用这三种操作编辑xy的最低成本方式。注意第三个操作的原因是为了灵活地处理不同长度的系列。

作为一个小练习/挑战,尝试使用编辑距离显示x=(0,1,1,-2,0)y=(0,0,1,-1)之间的距离等于1

不,真的,我建议试一试。通过主动参与,然后被动阅读别人的答案,你会学到更多!

下面是我如何从xy。(注意,可能会有多个编辑序列达到最小距离):

  • x=(0,1,1,-2,0)开始
  • 然后是(0,0,1,1,-2,0),通过复制0。成本为 0
  • 然后通过移除重复的1来移除(0,0,1,-2,0)。成本为 0
  • 然后是(0,0,1,-1,0),将-2编辑为-1。成本为 1
  • 然后通过移除末端的0移动(0,0,1,-1),即 y 轴。成本为 0

所以总成本是 1,因此 DTW 距离是 1。

请注意,这让我们对变形的构成有了一些了解。如果你要在图表上绘制这些时间序列:

  • 添加或删除重复项对应于水平地局部挤压或拉伸事物
  • 编辑一个条目相当于局部挤压或垂直拉伸东西

经由等价的 DTW

另一种方法是问:我希望距离捕捉到xy之间的哪些差异,以及我希望距离忽略哪些差异?

有几种更正式的表达方式:

  • 我怎样才能改变xy而不影响它们之间的距离
  • 距离函数的不变性是什么
  • 我认为哪个时间序列与x的距离为 0
  • 我认为哪些序列等同于x。这是我将使用的视角。

一旦你建立了等价的概念,我们就可以定义xy之间的距离如下:

  • X是等价于x的所有级数的集合
  • Y是等价于y的所有数列的集合
  • d是一些“通常的”距离概念,例如欧几里德距离d(x,y) = sqrt(sum (xi-yi)^2)或与 L1 范数的距离d(x,y) = sum |xi-yi|
  • 然后将xy之间的距离定义为d(x', y')的最小值,其中x'距离Xy'距离Y

这是你如何使用等价来创造距离概念的一般框架。(注意,这与如何测量点集之间的距离有关,例如,在聚类中,如果您知道如何测量单个点之间的距离)。

要使用此等效框架获得 DTW 距离:

  • 我们说两个序列是等价的,如果你可以通过添加/删除重复的条目或者在末尾添加/删除 0 来从一个序列到另一个序列
  • d是距离 L1 范数的距离,所以d(x,y) = sum |xi — yi|

再一次,作为一个小练习,试着用这个视角来展示x=(0,1,1,-2,0)y=(0,0,1,-1)之间的 DTW 距离是 1。

再说一次,我真的强烈建议你试试!如果你不确定该怎么做,那就意味着我的解释不太好;如果是这样的话,请告诉我,我可以为将来做些改进!

这就是我如何得到 1:

  • (0,1,1,-2,0)相当于x'=(0,0,1,1,-2,0)
  • (0,0,1,-1)相当于y'=(0,0,1,1,-1,0)
  • x'y'之间的距离为0+0+0+0+1+0 = 1

结束语

我提供了两种不同的 DTW 算法的解释:

  • 给定一组可能的操作,确定最小编辑距离
  • 确定时间序列等价版本之间的最小 L1 范数距离

最后,我应该承认,我对小练习的回答忽略了一个重要的细节:我展示了如何可能得到 1,但我没有给出任何明确的论据证明这是最小的可能距离!对于具体的例子,这并不太难,但一般来说,这将是确定距离最困难的部分。

然而,这正是“动态”部分的用武之地!DTW 算法的好处在于,它为你提供了一个紧凑而简单的算法来计算最小值。

直观理解最大似然

原文:https://towardsdatascience.com/intuitively-understand-maximum-likelihood-121893bea5d0?source=collection_archive---------23-----------------------

基本概念

用简单的日常例子来理解基本概念,这样你甚至可以向你的祖母解释。

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

罗斯·索科洛夫斯基在 Unsplash 上的照片

数据科学和机器学习有很多术语。往往需要一段时间才能真正理解一些往往被形式定义和数学方程掩盖的概念。据称,根据爱因斯坦的说法,

“除非你能向你的祖母解释,否则你不会真正理解某件事。”

最大似然法是机器学习中估计参数的两种基本方法之一(另一种是最小二乘估计),许多新方法都是从这两种方法中得到启发的。

尽管如此,许多解释最大似然法的课程和书籍都没能清楚地表明这种技术只是常识。刚学的时候(十几年前)我的经历没什么不同。然而,读完这篇文章后,你会有更好的学习体验。我也相信在读完这篇文章后,你会很好地理解最大似然的概念,甚至可以向你的祖母解释。让我们开始吧。

我们通常都使用最大似然估计

想象一个场景,你的冰箱里有最美味的巧克力冰淇淋,可以在晚餐时享用。此外,想象你正在照顾 4 个孩子(阿尔法、贝塔、伽马和德尔塔),你明确指示他们白天不要吃冰箱里的冰淇淋。你出去买杂货。当你回来时,你发现四个孩子中的一个已经咬了一口冰淇淋。你现在的任务是确定 4 个孩子中谁吃了冰淇淋。

你将如何辨认吃冰淇淋的孩子?我们还假设这四个孩子都不合作。你现在必须像侦探一样收集线索(即收集数据)。在您收集任何数据之前,您已经提出了一个模型,它是:

【孩子的名字】 吃起冰淇淋来。

该模型有一个自由参数, 【孩子的名字】 。如果你不收集任何进一步的线索(数据),你最好的估计是模型中的自由参数可以以相等的概率(即 0.25)取四个子名中的任意一个。然而,你最终还是收集到了一些线索。让我们把这些不同的线索叫做 x1x2 ,…。, xn 暗示你一共收集了 n 条线索。一旦你考虑了你收集的所有线索,每个孩子吃过冰淇淋的概率就会改变。

利用线索(您收集的数据)来帮助识别孩子是通过最大可能性来完成的。当您试图识别正确的孩子时,您应该这样做。马上关注!

在你的脑海中,你会说:

根据我现在观察到的所有数据,那个 阿尔法 吃了冰淇淋的 可能性有多大?

然后,您将对测试版重复同样的问题:

给定我现在观察到的所有数据,那个 贝塔 吃了冰淇淋的 可能性有多大?

然后,你将为伽马和德尔塔重复它。

你会如何总结并得出答案?嗯,你只需选择可能性最高的孩子。

换句话说,你将选择给你 最大可能性的答案。

就是这样。你刚刚完成了最大似然估计程序。概括地说,您选择了一个有参数的模型。最终答案要求为该参数选择一个特定值。你观察到一些数据。然后,考虑模型中参数的每个值来估计似然值。最后,您选择了与最高可能性相关联的最终参数值。换句话说,你选择了最有可能的答案。

将直觉与现有的书籍和课程相结合

me 来看看目前大多数课程和书籍是如何教授最大似然概念的,以进一步巩固你的理解。到目前为止,解释最大似然的最常见的例子是估计正态曲线(也称为高斯曲线)的参数。正态分布曲线由平均值和标准偏差参数化。

为简单起见,以一维正态分布为例,平均值决定了曲线的位置,左边还是右边。sigma 参数决定曲线的宽度或宽度。

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

比较两条正态分布曲线。每条正态曲线都用平均值和标准偏差来表示。均值决定曲线的位置,标准差决定曲线的宽度(图片由作者提供)

现在想象一下,一个商业投资者来找你,他想开一家冰淇淋店。他在两个地点中的一个之间感到困惑,并选择你来帮助他决定。你需要弄清楚他需要选择两个地点中的哪一个来开一家新的冰淇淋店。对于每个城市,随机抽取 100 人进行抽样调查,以 1 到 10 分(10 分是最好的,0 分是最差的)表示他们对冰淇淋的喜爱程度。

你的任务是利用他掌握的这两个城市的所有数据,想出一个数据驱动的答案。你假设对冰淇淋的爱是正态分布的。接下来的任务是确定两个城市的均值和标准差的具体参数,然后确定哪一个会带来更高的利润。

对于每个城市,您使用最大似然法来估计平均值和标准差。换句话说,假设你观察了 100 个人对一个给定城市的评价,最能解释每个城市的冰淇淋评价的最可能分布是什么。

从数学上来说,我们对每个位置做了以下工作:

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

联合条件概率函数,用于确定函数最大时 θ 的值(图片由作者提供)

在较早的谁吃了冰淇淋的例子中,我们手动输入θ(孩子的名字)的每个可能值,然后找到可能性的值。我们不需要手动操作。我们使用数学和一些简化的假设来求解最大似然方程。

我希望这个帖子能够被广泛地访问,所以我不会再放任何方程了(如果你感兴趣,请留下评论,我会有一个后续的帖子,有更多的数学知识)。

说白了,我们假设这 100 个数据点是https://en.wikipedia.org/wiki/Independent_and_identically_distributed_random_variables(独立同分布)。 iid 假设有助于将联合概率函数简化为每个单独数据点概率的乘积(因为独立性假设)。随后,我们通过使用“对数”技巧将乘积项转换为总和,使我们的生活变得更加简单。最后,我们使用微积分(微分)来推导平均值和标准偏差的最终方程。**

这里的数学步骤特定于我们拥有的初始联合概率模型(似然函数)。对于法方程参数的估计,我们可以解析求解。然而,对于其他模型,我们可能不得不求助于数值解并使用迭代算法。

摘要

最大似然法是机器学习的基本方法之一。它帮助我们找到似然函数的未知参数。似然函数是以我们需要估计的参数为条件的联合概率函数。

数学方法给了我们一种估计这些参数的方法。从概率上来说,最大似然法使我们能够证明,给定我们观察到的数据,我们选择的带有估计参数的模型是最有可能解释这些数据的模型。

这都是常识,即使我们没有意识到或者没有被正式教导,我们在日常生活中已经在大脑中这样做了。

**https://ahmarshah.medium.com/membership **

从 Zillow 翻转业务的失败中吸取宝贵的数据科学经验

原文:https://towardsdatascience.com/invaluable-data-science-lessons-to-learn-from-the-failure-of-zillows-flipping-business-25fdc218a62?source=collection_archive---------3-----------------------

哪里出了问题?

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

丹尼尔·陶西斯在 Unsplash 上的照片

介绍

Zillow 是一家成立于 2006 年的在线房地产公司。它在 2019 年创造了 27 亿美元的收入。很长一段时间以来,他们在很多方面都做得更好。这篇文章不是关于进展顺利的事情。我们会关注最近的错误。这导致该公司停止其翻转业务,并削减了 25%的员工。

一、什么是房地产的翻转业务?当某人购买一处房产,并打算在将来转售获利时。该公司通常以相对较低的价格购买房产。花钱进行翻新和其他改进。然后以更高的价格出售房产。这是一种用来赚快钱的流行技术。

如你所知,这里最重要的因素是准确预测房地产价格。这样房产就能以较低的价格买进,卖出获利。

根据的文章,2006 年 Zillow 的数据库中有大约 4300 万套房屋,他们能够以 14%的中位绝对百分比误差预测房产价格。到 2017 年,他们的数据库中约有 1.1 亿套住房。误差率已经降低到 5%。用于预测房价的模型,拥有数千个复杂的统计模型和海量数据。

哪里出了问题?

由于许多原因,他们模型的精度开始下降。这导致人们以远高于售价的价格购买房产。根据这里的消息,Zillow 在 2021 年第三季度因其翻转业务亏损超过 3 亿美元。根据这篇《彭博》文章,Zillow 现在期待出售大约 7000 套房屋,价值 28 亿美元。

下面是一些显示损失有多大的推文,

这是另一篇文章,其中有许多 Zillow 试图以低于购买价格的价格出售房产的例子。

基于这些数据,很明显失败的主要原因是无法准确预测价格。数据科学家可以从这次失败中吸取很多教训。我将根据公共领域中可用的内容来阐述可能的原因。

1.数据质量

机器学习模型表现良好的首要因素是高质量的数据。当机器学习算法的输入是垃圾时,你不能指望它有多好。

https://www.investopedia.com/articles/personal-finance/111115/zillow-estimates-not-accurate-you-think.asp

根据上面的文章,肯定存在数据质量问题的可能性。Zillow 一直依赖于用户共享的数据和公开的数据集。如果说 Zillow 的数据质量是垃圾,那就太苛刻了。尤其是因为他们的模型在很多情况下都做得很好。但是这里误差的影响是巨大的。让我用一个例子来解释一下,

Zillow 正在考虑购买一处名为“ABC”的房产,然后计划投资一些资金进行改造,并在几周内出售以获取利润。假设 Zillow 的 Zestimate 对房产“ABC”的估价为 50 万美元。如果模型有 10%的误差,这意味着实际价格应该是 45 万美元。现在,Zillow 以 5 万美元的溢价买下了这处房产。Zillow 将很难在这块地产上获利。

如上例所述,对于每一个百分比,模型都偏离准确预测。附在预测上的价值正在偏离一个很大的值。价值百万美元的房产 10%的误差就是 10 万美元。仅仅几个这样的财产就可能造成超过一百万的损失。此外,预测郊区房地产价格的错误会影响附近其他房地产的价格,并在总体上影响该地区本身的房地产价值。

数据中的一个简单错误,如房产中房间的数量、离最近学校的距离,以及其他与关键属性有关的问题,都很容易导致预测错误。这很容易产生滚雪球效应。

第三课:在任何数据科学问题中,都应该关注数据的质量。有适当的指标来衡量数据的质量是很好的。在像 Zillow 这样的场景中,小错误可能导致大错误,应该有一种方法至少部分地验证数据质量。这有助于在质量问题造成巨大影响之前发现它。

2.算法依赖性

算法不错。他们很有见地。这对决策有很大帮助。他们容易出错和出问题,这也是事实。不建议完全依赖算法。尤其是当你在解决一个有很多不确定性的问题时。

房价取决于很多因素。有太多的外部因素会对房价产生影响。不可能监控这些外部因素并将其纳入模型。因为每一个改变在投入使用之前都需要经过测试。

当用例没有巨大的货币影响时。预测出现一些误差是可以的。例如,假设我们想要预测客户的终身价值。客户终身价值 10%的误差不会严重影响财务状况。但与房价类似,也有小误差不可接受的情况。

第七课:在我们无法承受预测偏差的情况下。模型输出应该作为一种补充,帮助业务用户做出决策。例如,在为保险公司承保的情况下。承销过程有巨大的财务影响。模型输出应该补充信息,但不应该做出决策。这个决定还是应该由承销商来做。因为承保人是领域专家,他可以发现算法可能遗漏的东西。

下次当你在解决数据科学问题时。总是询问关于重要性和影响的问题。如果风险很高,那么应该有一个专家小组来监督模型输出并做出决定。

3.玩弄系统

当涉及到金钱时,用户总是有可能试图欺骗系统。

https://www.theguardian.com/business/2021/nov/04/zillow-homes-buying-selling-flip-flop

上述文章清楚地阐述了系统被利用的可能性。很明显,郊区的房价很少能带动郊区的房价上涨或下跌。明白这一点的人可以人为地提高郊区房价。

想知道怎么做吗?假设有一个代理人,在郊区持有多套房产。起初,代理人会以人为抬高的价格向一个已知的内部联系人出售部分房产。一旦影响波及到郊区的其他房产。他们以更高的利润出售其他财产。

教训:确保系统不被利用的唯一方法是建立一个防欺诈团队。反欺诈团队将会获得所有以高于或低于市场价格出售的资产。以确保这些影响不会传递到模型上。

4.选择性聚焦

很明显,在 Zillow 的案例中,人们对房产及其价格预测有着太多的关注。对买家的关注还不够。最终是投资房产的人。没有很好地了解买家可能会有问题。

对于房地产公司来说,了解买家行为非常重要。不了解买家,就无法准确衡量需求。因此价格本身无法准确预测。

第一课:任何数据科学问题都要从所有可能的角度去分析。应该以整体的方式研究它们。此外,如果你在模型投入使用前就学习是不够的。即使在模型投入使用后,也应继续进行整体数据分析。情况可能会有变化。

为了简单地解释这一点,假设我们想要预测正在搅动的客户。有一个内部焦点来理解客户为什么会有各种各样的原因是一回事。这将告诉你很多关于导致客户流失的问题的信息。但是,可能有其他因素,如竞争提供更好的折扣。因此,如果不从不同的角度处理这个问题,就不可能做出有把握的决定。在这个例子中,如果只关注客户和提供的服务是不够的。它还需要对互动、社交媒体上的情绪、竞争策略等进行分析。

5.外部因素

外部因素在任何问题中都起着巨大的作用。在房价预测的情况下,也有很多外部因素会影响房地产的价格。

例如,假设 Zillow 计划以 500,000 美元的价格购买一处房产“ABC ”,计划投资 50,000 美元进行装修,并计划以 600,000 美元的价格出售该房产。

为了简单起见,让我们假设 500,000 美元的购买价格是准确的,并且反映了当前的市场价格。现在,翻新的计划预算为 50,000 美元,但由于外部因素,劳动力需求增加,因此翻新成本也增加了 25,000 美元。最重要的是,由于像 Covid 这样前所未有的事件,对房子的需求减少了。这导致了房产价格的下降。因此迫使 Zillow 亏本出售房产。此外,长期持有该物业并不理想,因为这将吸引额外的维护成本。

Zillow 拥有的许多房产现在正在亏本出售。有许多外部因素在起着巨大的作用。不可能总是识别所有的外部因素。但是应该努力将这些事件纳入模型中。此外,应该努力分散风险。

在 Zillow 的案例中,很明显,根据这里的文章,他们在投资组合中增加了太多的房产,而不是正在出售的房产。增加如此多的房产增加了对装修所需劳动力的需求。对劳动力需求的增加增加了劳动力成本。从而使局势进一步恶化。

最后一个音符

有如此多的数据科学应用为企业增加了巨大的价值。他们中的一些人帮助企业赚钱。其中一些有助于解决问题。其中一些有助于改善体验。但确实也有一些人失败了。其中一些失败并没有造成很大的损失,而另一些却造成了巨大的损失,比如 Zillow。

心智模型对于正确分析商业问题非常有帮助。它也有助于构建思维过程,从而得出最佳解决方案。这是一篇关于使用思维的基本原则来解决数据科学问题的文章

[## 如何用第一性原理思维解决数据科学问题?

towardsdatascience.com](/how-to-use-first-principle-thinking-to-solve-data-science-problems-db94bc5af21)

其他参考文献

https://www.theguardian.com/business/2021/nov/04/zillow-homes-buying-selling-flip-flop

保持联系

零售库存管理——确定性需求

原文:https://towardsdatascience.com/inventory-management-for-retail-deterministic-demand-311682c02518?source=collection_archive---------15-----------------------

建立一个简单的模型来模拟几种补货规则(基本、EOQ)对库存成本和订购成本的影响

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

需求确定的库存管理—(图片由作者提供)

对于大多数零售商来说,库存管理系统采用固定的、基于规则的方法来进行预测和补货订单管理。

考虑到需求的分布,目标是建立一个补货策略,使您的订购、持有和短缺成本最小化。

  • 订购成本:因管理成本、系统维护或制造成本而订购的固定成本(欧元/订单)
  • 持有成本:持有库存所需的所有成本(储存、保险和资金成本)(欧元/单位 x 时间)
  • 短缺/缺货成本:没有足够库存满足客户需求的成本(销售损失、罚款)(欧元/单位)

在本文中,我们将介绍一种简单的方法,使用用 Python 构建的离散模拟模型来测试几个库存管理规则。

  • 确定性恒定需求:D (单位/年)
  • 订购和补货之间的提前期**(天)**
  • 短缺和储存成本**(欧元/单位)**

💌新文章直接免费放入你的收件箱:时事通讯

**SUMMARY**
**I. Scenario
Problem Statement** As an Inventory Manager of a mid-size retail chain, you are in charge of setting the replenishment quantity in the ERP.
**Objective
II. Build your Model
Economic Order Quantity (EOQ)** *What is the best compromise between ordering and holding costs?* **1\. Visualize the current rule
2\. Economic Order Quantity: Q = Q*****3\. Include replenishment lead time
4\. Real-Time visualization of Cost of Goods Sold (COGS)**
**III. Conclusion & Next Steps**

一.情景

问题陈述

作为一家中型零售连锁店的库存经理,您负责在 ERP 中设置补货数量。

根据商店经理的反馈,你开始怀疑 ERP 的补货规则是否是最佳的,尤其是对那些跑得快的人,因为你的商店正面临着因缺货而导致的销售损失。

对于每个 SKU,您希望构建一个简单的模拟模型来测试几个库存规则,并估计对以下各项的影响:

  • 总成本:接收、储存和销售该产品的成本是多少?
  • 缺货:缺货导致的销售损失百分比是多少?

在本文中,我们将构建这个模型,

# Total Demand (units/year)
**D = 2000**
# Number of days of sales per year (days)
**T_total = 365**
# Customer demand per day (unit/day)
**D_day = D/T_total**
# Purchase cost of the product (Euros/unit)
**c = 50**
# Cost of placing an order (/order)
**c_t = 500**
# Holding Cost (% unit cost per year)
**h = .25**
c_e = h * c
# Selling Price (Euros/unit)
**p = 75**
# Lead Time between ordering and receiving
**LD**
# Cost of shortage (Euros/unit)
**c_s = 12**

为了简化理解,让我们介绍一些符号

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

方程式—(图片由作者提供)

目标

在本文中,我们将

  1. 想象商店经理使用的当前规则
  2. 计算经济订货量并模拟影响
  3. 想象订购和接收之间的交付周期的影响
  4. 每个规则的齿的实时可视化

http://samirsaci.com

二。建立模型

密码

你可以在这个 Github 资源库中找到完整的代码:链接
我的其他项目组合:萨米尔萨奇

经济订购数量(EOQ)

许多库存优化模型使用的经济订货量(EOQ)背后的理论是找到最优订货量 Q*,它将是订货成本和持有成本之间的最佳折衷。

  • 较低的订单数量会增加您的订购成本(增加:D/Q 的补货订单数量),但会降低您的持有成本(降低平均库存水平:(Q/2))
  • 高阶数量的倒数

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

总相关成本的最小值—(图片由作者提供)

评论

在上图中,我们可以看到总相关成本(TRC) (不含采购成本 cD 的总成本)在 Q=400 单位/订单*时最小。

TRC(Q *)= 5000 欧元

1.可视化当前规则

目前的规则是每 10 天订购一次满足 10 天需求所需的确切数量。

这个量远低于 Q*,我们很容易理解 TRC 将远高于其最佳值:

TRC(10) = 100,062 欧元

为了理解为什么让我们模拟 365 天的规则:

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

当前规则模型化-(图片由作者提供)

备注 非常短的补货周期,使补货订单数量成倍增加。

2.经济订货量:Q = Q*

对于每个补货周期,您订购 Q* = 400 个订单,并在库存水平为零时再次订购。

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

经济订货量—(图片由作者提供)

备注 更长的补货周期使订单数量减少 7 倍= >更低的 TRC

http://samirsaci.com

3.包括补货提前期

如果我们有一个补货提前期 LD = N 天,缺货水平会是多少?

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

提前 25 天的经济订购量—(图片由作者提供)

备注 订购和收货之间有 25 天的提前期,我们每个补货周期达到 140 单位的缺货量。

4.销货成本(COGS)的实时可视化

如果你想说服你的商业团队和商店经理;你需要说他们的语言。

您可以使用 COGS (这里我们将排除购买成本 COGS = TRC) 准备一个简单的潜在营业额可视化,以了解一年中的影响。

初始规则

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

具有初始规则的 COGS(图片由作者提供)

点评
由于补货量少导致的再订货频率高,COGS 主要由订货成本驱动。

EOQ 法则

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

与 Q*的齿轮(EOQ)——(作者图片)

三。结论和后续步骤

关注我的 medium,了解更多与供应链数据科学相关的见解。

结论

这种简单的建模是设计基本模拟模型的机会,该模型显示了客户需求和库存规则对关键绩效指标的影响。

它让您可以了解您的订购频率、库存水平以及供应链中交付周期的影响。

后续步骤

恒定确定性需求的初始假设非常乐观。在下一篇文章中,我们将研究需求的可变性对总相关成本和销售损失的影响。

**https://www.samirsaci.com/inventory-management-for-retail-stochastic-demand-2/ **

关于我

让我们在 LinkedinTwitter 上连线,我是一名供应链工程师,正在使用数据分析来改善物流运作和降低成本。

如果你对数据分析和供应链感兴趣,可以看看我的网站

**https://samirsaci.com **

参考

[1]供应链科学,华莱士·j·霍普

零售业的库存管理——随机需求

原文:https://towardsdatascience.com/inventory-management-for-retail-stochastic-demand-3020a43d1c14?source=collection_archive---------9-----------------------

假设需求呈正态分布,模拟安全库存水平对库存管理绩效指标的影响

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

需求随机的库存管理—(图片由作者提供)

对于大多数零售商来说,库存管理系统采用固定的、基于规则的方法来管理预测和补货订单。

考虑到需求的分布,目标是建立一个补货策略,使您的订购、持有和短缺成本最小化。

在上一篇文章中,我们建立了一个模拟模型**,假设确定性恒定需求** (单位/天)

在本文中,我们将改进这个模型,并向介绍一种简单的方法,使用 Python 构建的离散模拟 模型来测试几个库存管理规则,假设客户需求呈正态分布。

💌新文章直接免费放入你的收件箱:时事通讯

**SUMMARY**
**I. Scenario** 1\. Problem StatementAs an Inventory Manager of a mid-size retail chain, you are in charge of setting the replenishment quantity in the ERP.
2\. Limits of the deterministic modelWhat could be the results with a normally distributed demand?
**II. Continuous Review Policy: Order Point, Order Quantity (s, Q)** 1\. Introduction of the Inventory Policy2\. Definition of the Safety Stock3\. How do you define k? **III. Example of replenishment policies**
1\. Target of CSL = 95%
2\. Target of IFR = 99%
**III. Conclusion & Next Steps**

一.情景

1.问题陈述

作为一家中型零售连锁店的库存经理,您负责在 ERP 中设置补货数量。

根据商店经理的反馈,你开始怀疑 ERP 的补货规则是否是最佳的,尤其是对那些跑得快的人,因为你的商店正面临着因缺货而导致的销售损失。

对于每个 SKU,您希望构建一个简单的模拟模型来测试几个库存规则,并估计对以下各项的影响:

绩效指标

  • 周期服务水平(CSL) :每个周期发生缺货的概率 (%)
  • 物品填充率(IFR) :满足顾客需求而不缺货的百分比(%)

在本文中,我们将构建这个模型,

# Total Demand (units/year)
**D = 2000**
# Number of days of sales per year (days)
**T_total = 365**
# Customer demand per day (unit/day)
**D_day = D/T_total**
# Purchase cost of the product (Euros/unit)
**c = 50**
# Cost of placing an order (/order)
**c_t = 500**
# Holding Cost (% unit cost per year)
**h = .25**
c_e = h * c
# Selling Price (Euros/unit)
**p = 75**
# Lead Time between ordering and receiving
**LD**
# Cost of shortage (Euros/unit)
**c_s = 12
# Order Quantity** Q = 82 (units/order)

为了简化理解,让我们介绍一些符号

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

符号—(作者提供的图片)

2.确定性模型的局限性

在前一篇文章中,我们假设需求是一个常数确定性的;我们现在将引入随机性以更接近真实需求。

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

恒定需求 D = 5.4 单位/天的初始模型—(图片由作者提供)

需求呈正态分布会有什么结果?

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

符号—(作者提供的图片)

**µ_D = 2000 (items/year)
σ_D = 50(items/year)**

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

随机年度需求分布 N(2000,50)的初始模型

你需要改进你的补货政策,以弥补需求的波动。

你听说过库存周转率 KPI 吗?
在这个短片中了解更多,

http://samirsaci.com

二。持续审查政策:订购点、订购数量(s,Q)

密码

您可以在我的 Github 资源库中找到完整代码: 链接 (跟随我:D)
我的投资组合与其他项目:
萨米尔萨奇

1.库存政策介绍

为了解决这个需求波动的问题,我们将引入一个持续的评审策略(s,Q)

  • 持续审查=每天都会检查您的库存水平
  • (s,Q) =如果您的库存水平≤ s 您的 ERP 将订购 Q

为了简化理解,让我们介绍一些符号:

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

符号—(作者提供的图片)

2.安全库存的定义

再订购点可以定义为在订购和接收之间的交付周期内满足客户需求所需的最低库存水平。

安全库存是补偿需求波动的缓冲。

3.你怎么定义 k?

您的绩效指标将直接受到安全库存水平的影响;k 值越高,你的表现就越好:

  1. 你为这两个指标中的任何一个设定目标(例如:我希望我的 CSL 是 95%)
  2. 你计算 k 来达到这个目标
  3. 你修正你的再订购点

http://samirsaci.com

三。补充政策示例

1.CSL 的目标= 95%

根据 CSL 的定义,我们有:

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

方程式—(图片由作者提供)

k = 1.64
Reoder point with CSL: 36 units

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

s = 32 个单位的(s,Q)模型—(图片由作者提供)

评论

在这个例子中,我们可以看到,我们没有面临任何股票,最低库存水平非常接近于零。

代码

2.IFR 的目标= 99%

在前面的例子中,我们的目标是 95%的补货周期没有缺货。

在这个例子中,我们将更加关注我们以 IFR 为目标全面交付产品的能力。这个公式使用的是单位正常损耗函数(关于这个函数的更多信息可以在这里找到: 链接 )。

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

方程式—(图片由作者提供)

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

IFR 的最佳 k 值= 99%——(图片由作者提供)

# G(k) = Q/sigma_ld * (1 - IFR)
IFR = 0.99
G_k = (Q/sigma_ld) * (1 - IFR) = 0.14# Final value of k
k = 0.71
Reoder point with CSL: **31 units**

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

s = 31 个单位的(s,Q)模型—(图片由作者提供)

评论

要在不缺货的情况下达到 99%的需求单位,您需要一个较低的安全库存。(31 个单位对 32 个单位)

代码

http://samirsaci.com

四。结论和下一步措施

关注我的 medium,了解更多与供应链数据科学相关的见解。

结论

这个改进的模型带来了更好的结果,因为它考虑了安全库存大小需求的可变性。

这个过程很简单,首先确定你的绩效指标目标(IRF、CSL),然后用 k 值计算你的安全库存水平。

后续步骤

持续审查政策的主要问题是,如果您的投资组合中有许多 SKU,则需要大量的补货。

作为商店经理(或仓库经理),你更喜欢固定补货时间(例如:每周两次)。因此,我们将在下一篇文章中介绍定期审查策略。

关于我

让我们在 LinkedinTwitter 上连线,我是一名供应链工程师,正在使用数据分析来改善物流运营和降低成本。

如果你对数据分析和供应链感兴趣,可以看看我的网站

https://samirsaci.com

参考

[1]供应链科学,华莱士·j·霍普

[2]零售库存管理—确定性需求,萨米尔 Samir,链接

使用 Python 在可视化中研究图像和自定义颜色

原文:https://towardsdatascience.com/investigating-images-and-customizing-colors-in-visualizations-with-python-5226c834cb65?source=collection_archive---------33-----------------------

使用 Alteryx Designer 中的图像配置文件工具快速了解您的图像数据集,然后添加几行 Python 代码,使用自定义调色板创建数据可视化

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

萨姆比斯利

看电视侦探注意细节并通过环顾犯罪现场来破案总是很有趣。他们的观察力是戏剧性的,令人印象深刻(尽管有时他们会面临一些幽默的挑战,这取决于节目)。

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

图像通过 GIPHY

新的图像轮廓工具也非常擅长快速观察图像的细节。Alteryx Intelligence Suite 的计算机视觉工具组的新成员可以快速分析图像,使您可以将对图像的见解整合到更大的工作流程中。您可以获得关于每张图像的格式、颜色、拍摄地点的信息(如果 EXIF 数据可用并包含 GPS 细节),以及关于图像的各种汇总统计数据。(后者的一个例子是找到图像像素值的标准偏差,以量化图像中的对比度水平。)

你可以将这些信息用于各行各业,从农业到零售业到制造业。也许你想知道哪种产品颜色在你的顾客中最受欢迎。也许你想通过图像的附加位置数据来绘制图像,以寻找地理模式,并使用 Designer 的分配工具来构建人口统计细节。也许您想在推荐引擎或基于图像的搜索系统中使用图像数据。您可以从图像中收集的“证据”可以增强许多项目。

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

图片经由 GIPHY

无论您的动机是什么,我将向您快速介绍该工具及其选项,并且我将为我们的 Python 爱好者提供一个奖励:一种使用 Stitch Fix 发布的开源 Python 包为图像最常见的颜色指定人类友好名称的方法。另外,我们将探索一种方法来生成这些颜色的自定义可视化。开始调查吧!

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

图片经由 GIPHY

如果鞋子合脚:准备服装数据集

在这个演示中,我使用了 3781 张不同服装在普通背景上的图片。我使用一个目录工具将图像引入工作流,然后使用一个 Regex 工具从每个目录的名称中提取服装的类型,认为这可能对以后的排序和分析有用。然后,我使用一个图像输入工具开始工作流程的图像部分。

在进入剖析步骤之前,我使用了一个图像处理工具。我对这些图像的初步探索表明,令人惊讶的是,很大一部分图像以不同深浅的灰色为主色调。许多衣服是在灰色背景上拍摄的。我使用图像处理工具将图像裁剪为中心区域的 200 像素的正方形,以试图将焦点集中在实际拍摄的服装上。这不是一个完美的策略。裤腿和鞋子之间的间隙可能会稍微扭曲最终结果。这个过程中的一个物体检测步骤有助于将分析集中在衣服上。但是在增加这一步后,我看到了更多“丰富多彩”的不同结果,所以这似乎有所帮助。

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

图像通过 GIPHY

询问图像:工作中的图像轮廓

最后,调查者进入场景:图像轮廓工具,它需要最少的配置。只需告诉它哪个字段包含您的图像,以及您想要为每个图像检索哪个(些)简档,或此处描述的一组细节

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

作者图片

运行工作流会提供每个图像的关键细节。基本配置文件包括如下所示的字段以及更多内容。下面是显示图像中最常见颜色的字段,以 RGB 和十六进制格式表示,以及暗像素和亮像素的数量。

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

作者图片

自我解释:将颜色结果转化为人类术语

从来没有人说:“我最喜欢的颜色是#afada6!”或者“我想要一件[37,150,190]色调的衬衫。”那些是什么颜色?

您可能对 RGB 和/或十六进制代码感到满意。例如,您可以使用这些 RGB 细节来聚类图像,或者使用最近邻来匹配新图像。但是如果把你的颜色结果翻译成人类术语并想象它们的频率会有所帮助,请继续阅读。

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

图片经由 GIPHY

像往常一样, xkcd 给我们指路。由网络漫画的创作者进行的颜色命名调查的结果被集成到开源 Python 包 colornamer 中并得到增强,该包由 Stitch Fix 的数据科学团队开发。这些数据科学家尤其需要确保他们在推荐服装时对颜色进行了细微的区分。为此,他们创建了一个颜色层次,具有特定的、人类可读的名称和不同级别的区别,调色板选项的大小从 900 多种命名颜色到两种选项(“颜色”或“中性”)。他们的过程和调色板的所有细节都显示在 the Stitch Fix 博客帖子中,同时还有一个颜色的交互式图形。

使用 colornamer 和 Python 工具中的几行代码,我能够为每张图像最常见的颜色生成友好的名称,并将其添加到我的数据集中。例如,看看下面的图片和它的主色。

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

作者图片

图像配置文件工具告诉我们,最常见的颜色的 RGB 值是[70.72,28.02,37.88],该颜色的十六进制代码是#461c25。那种颜色显示在右上方。使用 colornamer,我们可以检索这些值的名称,从最具体到最不具体:

xkcd 颜色:深栗色

设计颜色:深酒红色

常见颜色:栗色

颜色系列:红色紫色

颜色类型:深色

彩色或中性:彩色

这些颜色名称可以帮助您以易于理解的方式对图像进行筛选或分组,然后在文档中使用这些图像或使用报告工具自动生成 PowerPoint 幻灯片。

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

图片经由 GIPHY

在可视化中使用自定义颜色

从这一点来看,绘制一个图表来显示每种颜色在图像数据集中占主导地位的频率是非常简单的。但就我个人而言,我发现在绘图中看到所有颜色的名称都用一种默认颜色来描绘令人不安。(这是一个很好的 Stroop 效应的例子,在这个效应中,我们的大脑努力处理不一致的刺激!)

幸运的是,根据最常出现的主要图像颜色创建自定义调色板并在绘图中使用它们并不太难。然后,我们可以简单地使用 pandas 内置的绘图功能来生成一个条形图,并将其位置输出到我们的工作流中。(我在这里写了关于从 Python 工具中获取绘图的博客。)从那里,很容易查看和/或保存情节。

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

作者图片

我绘制了这个数据集中前 10 种主色出现的频率。仍然有很多灰色,但通过一些灰色占主导地位的图片可以证实,实际的衣服,而不仅仅是背景,确实经常是灰色的。(在这里,我认为我自己的灰色主题衣柜是一个异数。)

请记住,自定义调色板可能是也可能不是色盲友好的。你可以在这篇博文中阅读更多关于这个问题的内容,并找到一些工具和资源。

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

图像通过 GIPHY

用图像求解

图像配置文件工具提供了将图像的有趣信息引入工作流程的绝佳机会。享受您自己的图像调查,配备这一新的检查工具。我希望你能找到一些激动人心的、引人注目的结果!

想试试这个吗?下载数据集,解压缩它,并获取这篇文章所附的工作流程,如最初在 Alteryx 社区上发布的。使用目录工具将数据集引入工作流。(也请确保在工作流程结束时更新渲染工具中的文件路径。)您需要以管理员身份运行 Designer,以便 Python 工具可以为您安装 colornamer 包。

原载于 Alteryx 社区数据科学博客

调查美国屋顶太阳能数据

原文:https://towardsdatascience.com/investigating-u-s-rooftop-solar-data-aeafa0206237?source=collection_archive---------43-----------------------

使用 Tableau 可视化

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

作者照片

寒假期间,我决定利用一些空闲时间来学习更多关于 Tableau 的知识。这是一个强大的工具,我在学校项目中使用过,但我想探索如何用它来帮助回答关于数据的高层次问题。鉴于我对能源的兴趣,我寻找可以用来学习更多可再生能源知识的数据集。

我偶然发现了谷歌正在做的与太阳能相关的工作,名为“天窗项目”。我想知道我是否可以利用他们的数据来更多地了解美国太阳能投资的多样性。

根据我在东西海岸和中西部生活的时间,我知道每个地区对太阳能有不同的看法。例如,与我在俄亥俄州长大的地方相比,在北加州这里的房子上看到太阳能电池板要常见得多。

虽然美国各地的天气模式明显不同,使得太阳能在一些地方比其他地方更可行,但我不得不相信在我长大的地方仍然有太阳能的潜力。这让我想到了我想回答的问题:

哪些州的太阳能潜力最大?

这篇文章的其余部分向你展示了我是如何得到我的结果的,希望你喜欢!

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

项目天窗

项目天窗是谷歌的一项事业,使个人太阳能更容易获得。他们创造了一个工具,用户可以输入他们的地址,并找出他们的房子每年接受多少可用的阳光,他们的屋顶有多少可用于太阳能电池板,以及他们潜在的能源账单节省。

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

项目天窗用户界面

它还提供了如何获得太阳能电池板的信息,这有助于居民了解他们个人可以采取的步骤,以转移到清洁能源。

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

过程

这个过程的第一步是登录 Google Cloud 控制台,并使用 BigQuery 工具。Google 在 Google 云平台 BigQuery 工具【2】上提供了大量来自 Project 天窗的数据,可以使用他们的免费层访问。在公共数据集下,项目天窗有两个数据集,一个按邮政编码分组,另一个按人口普查区域分组。我认为使用邮政编码来汇总州一级的数据是最简单的方法。

查询完所有数据后,我将其下载到一个 csv 文件中,以便在本地工作。我在 PostgreSQL 中创建了一个数据库,并导入了数据。数据集包含大量要素,但并非所有要素都是分析所必需的。下面的 SQL 查询显示了从完整的集合中提取的信息,这些信息在州级别上进行分组。每个要素都有一个注释,更详细地描述正在提取的数据。

项目天窗数据的 SQL 查询

有了这些数据,我就可以创建一个可视化的东西来理解这些信息了。我用 Tableau 创建了一个交互式的美国地图。地图根据太阳能建筑的数量给每个州涂上颜色。可用的建筑越多,橙色越深。此外,还有一个条形图,显示安装了太阳能的建筑在所有可安装太阳能的建筑中所占的百分比。例如,您可以在条形图的顶部看到夏威夷,这表示他们在所有可利用太阳能的建筑上安装了很高比例的太阳能电池板。

用户可以通过一个或多个状态进行过滤,并单击状态或相应的栏来访问更详细的信息。

点击下面的图片,亲自尝试一下吧!

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

点击上图查看交互式仪表盘

回答?

我很惊讶地得知,我的家乡俄亥俄州,以及伊利诺伊州和密歇根州,是一些最大的未充分利用的潜力。

加利福尼亚州、德克萨斯州、佛罗里达州和亚利桑那州每年能够产生的潜在 GWh 最高。俄亥俄州排名第五(48,049 GWh),伊利诺伊州排名第六(47,048 GWh),密歇根州排名第九(40,840 GWh)。

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

有序的年潜在太阳能发电量

就目前屋顶太阳能的利用量而言,这些中西部州都处于光谱的低端。俄亥俄州、伊利诺伊州和密歇根州的利用率都是 0.20,相当于所有州的第 36 个百分点。

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

已利用太阳能潜力百分比的汇总统计

在俄亥俄州长大的我,不会想到基础设施或天气会允许数据显示的潜力。这一分析很好地提醒了我们,数据可以帮助揭示挑战我们认知的事实。

未来的研究

这些数据帮助我量化了屋顶太阳能的潜力。尽管如此,还有很多事情可以做。收集更多与成本相关的数据,以了解不同转型水平所需的投资规模,或许有助于相关政策的实施,这将是令人感兴趣的。

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

这个 web 应用程序是用 Django 创建的,托管在 Heroku 上。查看 github 仓库以了解更多细节。

https://github.com/jackseagrist/Project_Rooftop_Solar

Jack Seagrist 目前是斯坦福大学的一名学生,正在攻读环境工程硕士学位。他热衷于使用最新的数据驱动流程来解决气候挑战。通过 twitterlinkedin 联系,或者查看他的网站来了解更多关于他的工作。

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

参考资料:

1-https://www.google.com/get/sunroof

2-https://cloud.google.com/bigquery

使用 Turi Create 的 iOS 计算机视觉对象检测

原文:https://towardsdatascience.com/ios-computer-vision-object-detection-with-turi-create-be109edd4257?source=collection_archive---------31-----------------------

iOS 计算机视觉项目概述,该项目的构建和部署不到一天时间

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

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

计算机视觉项目无处不在。

不幸的是,训练你的计算机视觉模型并不总是容易的。Keras 中的对象检测需要一些操作,而在 Tensorflow 或 PyTorch 中编写相同的代码需要一些严肃的代码柔术。那么,即使你能够训练你的模型,也要祝你好运把它放到移动设备上。谷歌云的 AutoML 解决了部分问题,但简单的 iOS 部署可能难以实现。

苹果用它的 Create ML 工具做了一件惊人的工作,让 iOS 的计算机视觉更加平易近人。如果你不关心超参数调整,或者如果你被 Python 或 Keras 吓到了,那么苹果提供了一种快速简单的方法,只需拖放你的标记图像,然后开始训练。训练后,模型可以很容易地放到 iOS 应用程序中,让其他人也能很容易地使用你创造的东西。作为起点,苹果开发者文档提供了一个用于对象检测的优秀示例应用

但是,如果您试图训练的模型过于耗费资源,无法在标准 Mac 硬件上构建,该怎么办?如果您想利用 GPU 来加快训练过程,该怎么办?根据这篇文章的标题,你可能会认为这是 Turi Create 的切入点。

https://github.com/apple/turicreate

为了更好地了解一个端到端的 Turi Create 项目是什么样子的,你可以看看这个用于计算机视觉扑克牌检测的 repo ,以及这个总结项目的论文这个视频概述

https://github.com/mcgovey/compvision-playing-card-detection

对于那些不熟悉 Turi Create T1 的人来说,它是一个 Python 库,抽象了 Tensorflow、PyTorch 甚至 Keras 的复杂性。它的 Python API 可以很容易地将数据格式化为所需的预处理图像格式,然后创建一个可以在不同类型的硬件上运行的模型(不仅仅是像 Create ML 这样的 MAC)。

使用笔记本电脑之外的东西最好的一点是,有一个免费的资源可以帮助使用已经可用的 GPU 进行培训,Google Colab。根据你的模型的复杂性,你可能需要升级你的账户,以利用谷歌 Colab Pro 的高内存和更快的 GPU。

项目演练

在使用 Turi Create 做任何事情之前,您必须将数据转换成一种叫做 sFrame 的格式。这意味着您计划用来训练计算机视觉模型的图像必须具有概述图像、标签和边界框尺寸的格式(如果是对象检测模型)。这本笔记本讲述了一个物体探测模型的例子。

一旦你的数据在一个 sFrame 中,你就可以开始使用 Turi Create 构建你的模型了。本笔记本会带你完成这些步骤。如上所述,加速模型训练的方法之一是使用 GPU。如果您使用的是 Google Colab,您可以通过单击运行时>更改运行时类型>然后选择硬件加速器下的下拉菜单并将其更改为 GPU 来实现。

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

在 Google Colab 中改变运行时类型。

一旦设置被更改,你仍然需要让 Turi Create 来识别你的 GPU。在 linux 系统上(这是 Google Colab 构建的基础),你可以用下面的代码块来做这件事(注意,在这些命令之间还有其他事情要做,但是我想强调一下特定于 GPU 的命令。

!pip install turicreate!pip uninstall -y tensorflow!pip install tensorflow-gpu!export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATHtc.config.set_num_gpus(-1)

要了解更多关于本库实现的细节,请查看 Turi 创建文档

一旦将数据加载到 sFrame 和环境设置中,就可以开始训练模型了。您可以决定您希望模型运行多少次迭代。对于您的第一次运行,您将希望从少量的迭代开始,以确保一切按预期运行。

# Create a modelmodel = tc.object_detector.create(train_data, max_iterations=10)

训练就是这么简单!

既然您已经训练了您的模型,请确保保存它。如果你想以后再来看它,那么你要确保把它保存为一个*。型号文件。当你准备把它放到 iOS 应用程序中时,把它存为一个。mlmodel* 。

# Save the model for later use in Turi Createmodel.save(’mymodel.model’)# Export for use in Core MLmodel.export_coreml(’mymodel.mlmodel’)

最后一件事!你会想看看你的模型表现如何。您可以使用 model.evaluate(test_data)方法来查看模型在训练数据或样本数据之外的表现。

**这并不难!**所以下一次当你试图建立一个计算机视觉模型,并且你不想担心在 Keras 中训练一个模型和担心转换格式,或者创建 ML 花费太长时间的时候,想想 Turi Create!

用于数据科学的 iPad Pro + Raspberry Pi 第 1 部分:首次操作系统初始化

原文:https://towardsdatascience.com/ipad-pro-raspberry-pi-for-data-science-part-1-first-time-os-initialization-854371dc9201?source=collection_archive---------8-----------------------

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

树莓派+ iPad

让您从拆箱到操作系统初始化都可以使用 iPad + Pi!

几周前,我写了一篇关于能够在 iPad Pro 上执行数据科学活动的状态的文章。虽然我真的很惊讶看到苹果近年来取得的进步,但我们仍然没有 100%达到有人可以放弃笔记本电脑只在 iPad 上做事情的程度。我个人希望这一切发生,因为我喜欢用我的 iPad 做任何事情,从平面设计到用屏幕播放我的钢琴曲。

正如我在上一篇文章中引用的:

因为 iOS 不是传统的操作系统,有许多事情我不能做,因为我依赖命令行工具、Docker 映像等等。我很有兴趣看看苹果是否能够克服这些障碍,但不幸的是,它们在 2021 年 1 月仍然存在。

说实话,我看不到苹果会很快拿出解决这些问题的本土方案。在做了一些关于人们如何使用 iPad 作为通用软件开发机器的互联网研究后,我遇到了一件奇怪的事情:使用树莓 Pi 作为一种“计算附件”。因为 Raspberry Pi 是它自己的电脑,它可以运行 Linux,并从原生 iOS 中带回许多缺失的功能。(不是 100%完美;稍后会详细介绍。)

此外,这些人想出了如何直接连接 Raspberry Pi,并通过命令行以虚拟屏幕和 SSH 的形式与之交互。因此,从理论上讲,你可以在一个没有互联网连接的偏僻地方,做几乎所有的数据科学工作,只要你事先保存数据并预装依赖关系。不错!

听起来很酷,所以我想试试。给刚接触树莓派的你一点鼓励:这是我第一次拥有或设置一个。我很久以前就知道它是什么了,但直到现在我才觉得有必要拥有它。现在,这是我的设置的样子:

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

作者捕获的图像

在这篇文章中,我们将从头开始讲述一切。我将像几周前第一次打开树莓酱时那样开始。当连接到显示器/键盘/鼠标时,我们将努力实现一个全功能的 Raspberry Pi。在接下来的文章中,我们将关注 iPad 和 Pi 之间的硬连接,安装数据科学工具,甚至安装一个很酷的 JupyterHub 应用程序。

首先,让我们来看看您需要的硬件。

数据科学 Pi 的硬件

这个项目实际上需要两类硬件。第一个类别显然是 Raspberry Pi 及其相应的组件,但是为了第一次设置 Pi,第二个类别包含了我们在很短时间内需要的所有东西。

让我们从第一类开始。

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

作者创建的图像

树莓 Pi 本身就是一款树莓 Pi 4 型号 B 。这种型号有三种不同的内存:2GB、4GB 或 8GB。我个人选择了 8GB,但我认为你可以用一个更小的版本。我在亚马逊上以的名义买了一个小套件,里面还包括一根电源线和散热器。回想起来,我意识到如果没有他们的电源线,我也可以直接购买 Pi。活到老,学到老!

接下来,你需要一个 microSD 卡来存放操作系统和数据。我个人有一个 200GB 的卡(是的,我有类似的东西),但我认为你可以用低得多的容量。我在网上看过最低 16GB,更推荐 32GB。鉴于目前 microSD 卡如此便宜,我肯定会选择 32GB 或更高的。

最后需要的是 USB-C 到 USB-C 电缆。它将作为 Pi 的电源和 Pi 与 iPad 之间的网络通道。这里你有很多选择,但是要注意:它必须符合 PD(功率传输)标准。令人惊讶的是,iPad 附带的电缆不起作用。如果你喜欢我的电缆,你可以在这里找到它

最后一张图片不是必须的,但绝对推荐。你会注意到我的 Pi 被一个内置冷却风扇的盒子包围着。你可能会感到惊讶,但它出奇地便宜,而且易于安装。(亚马逊上 10 美元左右。)它为 Pi 提供了一些不错的冷却和一些聊胜于无的保护。

现在,让我们来看看我们只在第一次设置时需要的东西。

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

作者创建的图像

在接下来的安装部分,你会看到我们首先需要使用外部计算机在 microSD 卡上安装 Raspberry Pi 操作系统。不幸的是,我不认为有办法在 iPad 上加载操作系统,所以你需要一台电脑。我将使用我的个人 MacBook,但由于我们只是在很短的时间内使用电脑,你可以很容易地借用朋友的电脑一个小时来完成这一步。

最后,在将 Pi 连接到 iPad 之前,我们必须直接在 Pi 上执行一些初始化步骤。也就是说,你需要以下东西:

  • USB-C 电源
  • 用于连接微型 HDMI 插槽的显示器电缆(注:不要将微型 HDMI 误认为微型 HDMI。我自己可能做过,也可能没有…)
  • 外部显示器/监视器
  • USB-有线键盘
  • USB-有线鼠标

还是那句话,可以的话可以临时借用那些东西。我自己借用我爸爸的键盘和鼠标,因为我实际上不再拥有有线键盘或鼠标了。

收集好材料后,让我们进入第一步:在 microSD 卡上安装操作系统。

在 microSD 卡上安装操作系统

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

作者创建的图像

好吧,我撒谎了。如果你和我一样,你从其他你不用的设备上拿了一张 microSD 卡。我的 200GB microSD 卡实际上是我的旧任天堂 Switch 卡,所以我首先必须吹掉那里的所有数据,为安装操作系统做准备。为此,我们将正确格式化 microSD 卡,为了确保万无一失,我甚至建议在新卡上使用这种方法。我不打算在这里讨论这个,但是这篇 WikiHow 文章实际上在展示 Windows、Mac 甚至 Android 的步骤方面做得很好。

为了让事情变得简单,我们不打算做任何花哨的事情,而是选择通过官方的 Raspberry Pi Imager 安装标准的 Raspberry Pi 操作系统。将 microSD 卡连接到计算机后,导航到成像仪软件的链接,然后按照屏幕上的说明进行操作。您应该会看到类似于我在上面的截图中显示的 UI。

大约 10 分钟后,成像仪将完成 Raspberry Pi 操作系统的安装,并为您提供“全部清除”信息,以便安全地从您的计算机中移除 microSD 卡。这就是电脑!现在,让我们继续将 microSD 卡放入 Raspberry Pi,将显示器和附件连接到 Pi 本身,并首次启动 Raspberry Pi。

Raspberry Pi 操作系统初始化

作为帮助自己回忆第一次是如何实现这一切的一部分,我清除了自己的 Raspberry Pi 来重新创建和记录我第一次遵循的相同步骤。在我初始化 Raspberry Pi 操作系统的两次过程中,都花了 3-4 次断开/重新连接 Pi 电源,因为它会随机挂起。老实说,这让我感到不安,但在这两种情况下,操作系统最终加载得很好,没有任何问题。

一旦它最终加载完毕,你应该会看到一个桌面界面,背景是日落前的一些寺庙。操作系统会问你几个问题,包括一个要求更改默认用户密码的问题,所以按照 UI 提示的去做。它可能会提示额外的更新,正如你在下面的截图中看到的那样。否则,恭喜你!你有一个功能齐全的树莓派。🎉

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

作者创建的图像

…未完待续!

现在我们已经完全初始化了操作系统,我们准备好进入将 iPad 正确连接到 Raspberry Pi 的步骤。不可否认,这个过程是漫长而艰巨的,因为这篇文章已经够长了,我们将在下一篇文章中专门讨论 Pi 与 iPad 的强硬连接。同时,欢迎您将您的 Pi 与显示器/键盘/鼠标组合一起使用,如果您愿意,甚至可以提前工作。剧透:下一篇文章将建立在互联网上其他资源的基础上。你是个精明的人,不用我帮忙,你大概也能从这里弄清楚!😉

对于那些想等到下一篇文章的人来说,我保证过不了多久我就会发表它。我已经开始写了!如果你继续关注,我会非常感激。一如既往,非常感谢你阅读这篇文章!

用于数据科学的 iPad Pro + Raspberry Pi 第 2 部分:设置硬线连接!

原文:https://towardsdatascience.com/ipad-pro-raspberry-pi-for-data-science-part-2-setting-up-the-hardline-connection-555f939c29c2?source=collection_archive---------9-----------------------

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

树莓派+ iPad

带您完成设置,让 iPad Pro 和 Raspberry Pi 通过 USB-C 硬线连接相互对话

朋友们,又见面了!在我们系列的下一篇文章中,我们将把树莓 Pi 用作 iPad Pro 的“计算 DS 附件”。如果你错过了第一篇文章,请通过下面的链接查看,因为这篇文章将建立在第一篇文章的基础上:

在我们第一篇文章的结尾,我们刚刚初始化了 Raspberry Pi 的操作系统,并使用了硬连线的显示器/键盘/鼠标。您的设置目前可能如下所示:

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

作者捕获的图像

在这篇文章的最后,我们将让你的 iPad Pro 通过一根直接的硬线 USB-C 电缆与你的 Raspberry Pi 交谈,你将不再需要硬连线的显示器/键盘/鼠标组合。您将能够以两种不同的方式从 iPad 与 Raspberry Pi 交互:通过命令行的 SSH 连接和作为虚拟显示。

公平的警告:这篇文章将会是最长和最麻烦的。我特意清除了我自己的树莓派,并重新创建了这里的所有步骤,只是为了确保您在这里没有任何问题。请务必仔细阅读每一步,我相信你会做得很好。

好了,让我们开始吧!

Raspberry Pi 网络配置

在这篇文章的第一部分,我们需要使用我们的显示器/键盘/鼠标组合来直接与 Raspberry Pi 交互,并正确配置文件,以便它可以很好地连接到 iPad。我们在很大程度上是在这篇文章的基础上发展起来的,所以要特别感谢本·哈迪尔为我们开辟了这条道路!

(注意:本文假设您知道如何使用基本的 Linux 命令进行必要的调整。如果这是你不熟悉的东西,我可以推荐这个免费的在线课程来帮助你入门。)

这些步骤是直接从本的超级便利的帖子中摘录的。我个人使用sudo nano直接从命令行修改文件。欢迎您以您最熟悉的方式进行调整。

  • dtoverlay=dwc2添加到文件/boot/config.txt的最后
  • modules-load=dwc2添加到文件/boot/cmdline.txt的最后
  • /boot目录中创建一个名为ssh的空文件(我是使用命令sudo touch ssh完成的)
  • libcomposite添加到文件/etc/modules的末尾
  • denyinterfaces usb0 (usb zero,而非“O”)添加到文件/etc/dhcpcd.conf的最后
  • 使用下面的命令安装dnsmasq:sudo apt-get install dnsmasq(在这个过程中,它会要求你点击“Y”来确认安装。)
  • 在目录/etc/dnsmasq.d下创建一个名为usb的新文件,并填入以下内容:
interface=usb0
dhcp-range=10.55.0.2,10.55.0.6,255.255.255.248,1h
dhcp-option=3
leasefile-ro
  • 在目录/etc/network/interfaces.d/下创建一个名为usb0的新文件,并填入以下内容:
auto usb0
allow-hotplug usb0
iface usb0 inet static
  address 10.55.0.1
  netmask 255.255.255.248
  • /root/目录下,创建一个名为usb.sh的新文件,并用以下内容填充它:(注意:三次检查你得到的都是正确的。这是我个人因为愚蠢的错误而犯错最多的地方。为了确保万无一失,我可能会推荐从本·哈迪尔的网站上复制/粘贴这个脚本。)
#!/bin/bash
cd /sys/kernel/config/usb_gadget
mkdir -p pi4
cd pi4
echo 0x1d6b > idVendor # Linux Foundation
echo 0x0104 > idProduct # Multifunction Composite Gadget
echo 0x0100 > bcdDevice # v1.0.0
echo 0x0200 > bcdUSB # USB2
echo 0xEF > bDeviceClass
echo 0x02 > bDeviceProtocol
mkdir -p strings/0x409
echo "fedcba9876543211" > strings/0x409/serialnumber
echo "David Hundley" > strings/0x409/manufacturer
echo "PI4 USB Device" > strings/0x409/product
mkdir -p configs/c.1/strings/0x409
echo "Config 1: ECM network" > configs/c.1/strings/0x409/configuration
echo 250 > config/c.1/MaxPower
mkdir -p functions/ecm.usb0
HOST="00:dc:c8:f7:75:14" # "HostPC"
SELF="00:dd:dc:eb:6d:a1" # "BadUSB"
echo $HOST > functions/ecm.usb0/host_addr
echo $SELF > functions/ecm.usb0/dev_addr
ln -s functions/ecm.usb0 configs/c.1/
udevadm settle -t 5 || :
ls /sys/class/udc > UDC
ifup usb0
service dnsmasq restart
  • 使用下面的命令使/root/usb.sh成为我们刚刚创建的可执行文件:sudo chmod +x /root/usb.sh
  • 在文件/etc/rc.local中,在显示exit 0的行之前添加行/root/usb.sh

唷!这无疑是本教程中最难的部分。如果一切顺利,你现在应该可以将 Raspberry Pi 直接插入 iPad,并在设置中将 Raspberry Pi 识别为以太网设备。这是我的 iPad 目前的样子:

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

作者捕获的图像

好了,我们几乎完成了显示器/键盘/鼠标的组合,但是在我们可以单独使用 iPad 之前,我们还需要做最后一件事。

Raspberry Pi 虚拟机和显示设置

在本文的最后一部分,我们将在 iPad 上使用一个特定的应用程序来连接 Pi,就像它是一个虚拟机一样,为了正确使用它,我们必须再做一些额外的调整,以便虚拟机显示可以在应用程序中正确显示。

首先,我们需要在 Raspberry Pi 配置设置中手动设置 Pi 的分辨率。这样做的原因是 Pi 应该为您动态地选择它,但是出于一些奇怪的原因,它没有显示在我们将使用的 VM iPad 应用程序中。(你只是得到这个奇怪的“显示器无法显示”的信息。)为了将屏幕分辨率设置为特定设置,您需要遵循以下说明:

  • 运行命令sudo raspi-config,这将显示一个基本的 UI
  • 导航至Display Options,然后导航至Resolution
  • 选择分辨率DMT Mode 83 1600x900 60Hz 16:9(老实说,我肯定别人也行;这只是我碰巧选的一款,而且效果很好。)

那件作品到此为止。我们需要配置的另一部分是 VNC 连接设置。你可以在右上角的任务栏中找到它。我的看起来像这样:

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

作者捕获的图像

在这个小界面中,通过点击右上角的“汉堡”图标并选择“选项”来导航到 VNC 设置在“Security”部分,您会注意到“Authentication”方法自动默认为“UNIX password”。我们将把它更改为“VNC 密码”,所以您现在应该会看到类似这样的内容:

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

作者捕获的屏幕截图

点击“应用”,你就可以开始了。在离开 VNC 连接用户界面之前,记下它在主屏幕上显示的 IP 地址。我的名字碰巧是10.0.0.74,如果你的名字也是,我也不会感到惊讶。仅供参考,我在这里分享的这些说明与我们将要使用的应用程序的支持页面上记录的说明是相同的,所以如果您迷路了或我错过了什么,请参考链接到此处的它们的文档

现在,我们终于准备抛弃显示器、键盘和鼠标了!继续关闭您的 Pi,并用 USB-C 电缆将其连接到 iPad。我们将使用各自的虚拟机和命令行应用程序。

用于与您的 Pi 交互的 iPad 应用程序

最后,我们期待已久的部分!如果你做到了这一步,你就可以开始在 iPad Pro 上直接使用你的树莓 Pi 了。在最后一个主要部分,我们将介绍两种不同的方式来与您的 Raspberry Pi 交互:一种方式作为命令行界面,另一种方式作为虚拟机显示。你可能更喜欢其中的一个,但是实际上我发现在某些用例中两者都是必要的。

让我们从命令行界面应用程序开始。

Blink Shell:与您的 Pi 交互的 CLI

对于我们的命令行界面,我们将使用 Blink Shell 应用程序(19.99 美元)。这个应用程序被设计成非常好地与 Mosh 和 SSH 客户端集成,我们将使用它作为 SSH 客户端与我们的 Pi 进行交互。

这个应用程序本身非常简单。当你第一次打开它时,你会看到一个熟悉的黑屏和一个简单的命令行界面。为了 SSH 到您的 Pi,您需要执行以下命令:

ssh <your_pi_name>@<your_ip_address>

如果您遵循我的指示并保持简单,更精确的语法将如下所示:

ssh pi@10.55.0.1

然后会提示您输入密码,一旦输入正确,您就可以开始了!现在让事情变得更简单,Blink Shell 允许您保存配置设置,以便更快地进入 Pi。为此,输入config命令。然后,您会看到一个类似如下的用户界面:

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

作者捕获的屏幕截图

这包含了 Blink Shell 应用程序的所有设置。要保存您的 SSH 凭证,请导航到“主机”并点击 UI 右上角的+按钮。在这里,您需要输入主机名(pi)、主机名(10.55.0.1)和密码。(您可以保留默认端口,在我的例子中是 22。)点击右上角的Save,现在你可以开始了。

现在,你只需要在命令行输入ssh pi,它就会自动连接到你的 Raspberry Pi。我看起来是这样的:

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

作者捕获的屏幕截图

就是这样!命令行界面完成!相对于 VM 显示方法,我个人更喜欢使用这种连接到我的 Pi 的方法,但是正如我之前提到的,VM 显示方法确实有它的用途。现在让我们继续进行配置。

屏幕:进入您的 Pi 的虚拟机窗口

伙计们,我们现在到了最后阶段。对于最后一部分,你需要下载名为Screens(19.99 美元)的应用程序。说实话,我们可以在这里使用其他免费选项,但它们不提供屏幕所提供的交互性。使用 Screens 应用程序,您可以使用键盘和鼠标光标直接与 Raspberry Pi UI 进行交互,就像它是您的 iPad 自带的一样。不幸的是,免费选项不提供这种程度的交互性。

当你第一次打开应用程序时,你会看到一个简单的空白屏幕。在用户界面的右上角,你会看到一个+图标,这将允许我们输入设置以连接到我们的树莓 Pi。点击图标,然后点击“新屏幕”按钮,你会看到这个小界面:

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

作者捕获的屏幕截图

如果你想知道,它永远不会自动找到我们的 Pi,所以我们需要通过导航到Custom...选项来插入我们自己的设置。看到Screen Settings界面后,您需要输入以下信息:

  • 名字:无论你想它是什么,这都没关系
  • IP 地址:不管你的 VNC 服务器 IP 地址是什么(我的是 10.55.0.1)
  • 端口:保持默认值 5900
  • 操作系统:改为“树莓派”
  • 认证方式:保留为“VNC 密码”
  • 密码:您可以在这里保存您的密码,否则每次您尝试登录时它都会提示您输入密码。你的选择;我个人把密码保存在这里。

保存这些设置,我们就正式完成了!现在,你可以点击屏幕用户界面中的适当项目,就像它直接在你的 iPad 上运行一样,与 Raspberry Pi 操作系统界面打招呼。

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

作者捕获的图像

唷,那是一篇很长的帖子,但我们终于成功了!你现在应该可以通过硬线连接从你的 iPad Pro 直接与你的 Raspberry Pi 连接了!我们已经完成了显示器/键盘/鼠标组合,所以如果你像我一样借了任何东西,你可以把这些东西还给你的朋友,并对他们说谢谢!

但是我们还没有完成。在下一篇文章中,我们将把我们的设置提升到一个新的水平,开始使用一些你会经常用到的数据科学工具。与普通电脑相比,在树莓派上安装东西可能有点不寻常,所以请继续关注下一篇文章。感谢您的阅读,祝您编码愉快!

用于数据科学的 iPad Pro + Raspberry Pi 第 3 部分:安装我们的数据科学工具

原文:https://towardsdatascience.com/ipad-pro-raspberry-pi-for-data-science-part-3-installing-our-data-science-tools-77d020e485f2?source=collection_archive---------18-----------------------

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

树莓派+ IPAD

在你的 Raspberry Pi 上安装从 Docker 到 Git 到 JupyterHub 的工具

欢迎回来,伙计们!我们又回来了,这是我们的第三篇,也可能是最后一篇文章,让树莓 Pi 与 iPad Pro 一起工作,进行数据科学工作。如果到目前为止你一直在跟进,那么你已经能够通过 USB-C 到 USB-C 的直接连接将 Raspberry Pi 连接到你的 iPad Pro。如果你错过了让我们走到这一步的前两个帖子,它们又出现了:

在本帖中,我们将介绍如何将所有数据科学工具正确安装到 Pi 上。如果你不知道,树莓派的 CPU 使用 ARM 架构,而其他许多现代计算机使用 x86 架构。不要担心,你不需要知道这些到底是什么意思,但它是说安装一些东西可以有点不寻常。

好了,我们有很多内容要讲,所以让我们开始吧,进入我们的第一个工具:熊猫。

熊猫

在大多数情况下,您可能熟悉使用类似pip install pandas的命令从 PyPi 下载 Python 库。好消息是pip仍然适用于许多 Python 库;坏消息是,奇怪的是,它对其他一些工具不起作用。由于 Pandas 是数据科学家工具箱中最重要的工具之一,我认为提出这种替代的安装方式是很重要的。

为了让我们的熊猫下载到 Pi,我们将使用apt。如果你不熟悉的话,这是在基于 Linux 的机器上安装软件的一种常见方式。(APT 代表“高级打包工具”。)为了在您的 Pi 上正确安装 Pandas,您需要做的就是在您的 CLI 中运行以下命令

sudo apt install python3-pandas

就是这样!你现在可以用熊猫了。我们的下一个工具!

Git / GitHub

如果您像我和大多数其他数据科学家一样,那么您很可能正在使用某种形式的 Git 来执行版本控制和与队友的代码集成。在我的日常工作中,我使用 Git 和 GitLab,对于我的个人工作,我使用 Git 和 GitHub。如果你像我一样,你也可能使用 GitHub 来展示你的个人作品。也就是说,我们将安装 git,并“git”您的 Git 与您的个人 GitHub 帐户一起工作。(你喜欢我的双关语吗?)

为了安装 git 本身,apt再次拯救了我们。你需要做的就是运行下面的命令:sudo apt install git。这就是我们安装 Git 所需要做的一切。在开始将 git 连接到 GitHub 之前,让我们首先设置 Git 配置设置。运行以下命令分别设置您的姓名和电子邮件:

git config --global user.name "Your Name"
git config --global user.email "your_email@yourdomain.com"

好了,现在我们准备好将 Git 连接到 GitHub。这将比我们到目前为止所做的要复杂一些,所以请小心遵循下面过程中的每一步。实际上,你可以在 GitHub 的官方文档中找到几乎所有这些相同的步骤,但是我将在这里继续讲述,因为官方文档并不完全是线性的。(如果你和我用的是同一个屏幕应用程序,有一件事很特别。)

在下面的步骤中,我们将执行这三个高级操作:生成一个新的 ssh 密钥,将 SSH 密钥添加到 ssh-agent,以及将 SSH 密钥添加到 GitHub。

生成新的 SSH 密钥

自从我这么做已经有一段时间了,我真的不记得 SSH 密钥是否已经成为你的 Raspberry Pi 操作系统初始化的标准了。在任何情况下,我们将继续前进,并创建一个新的,使我们自己的东西相似。以下是实现这一目标的步骤:

  1. 打开您的 CLI。(如果你遵循了我上一篇文章中的步骤,这将是你的 Blink Shell 应用程序。)
  2. 通过运行以下命令创建一个新的 SSH 密钥,替换掉您自己的 GitHub 电子邮件:
    ssh-keygen -t ed25519 -C "your_email@yourdomain.com"
  3. 当你点击“回车”时,它会要求你“输入一个保存密钥的文件”。如果您不输入任何内容,它将进入默认位置。我们对它转到默认位置没有意见,所以不要输入任何内容,继续操作并再次点击“enter”。
  4. 输入两次您希望用于 SSH 的密码,这就完成了这篇文章!

向 ssh 代理添加 SSH 密钥

现在已经创建了 SSH 密钥,我们需要将 SSH 密钥添加到 ssh-agent 中。这是一个非常简单的过程,可以分为两步:

  1. 使用以下命令在后台启动 ssh-agent:eval "(ssh-agent -s)"
  2. 通过运行下面的命令,将新的 SSH 私有密钥添加到 ssh-agent 中。请注意,如果您按照上面的建议选择了默认位置,下面的命令将正常运行。如果没有,您可能需要做一些小的调整,以确保您的 ssh-agent 获得正确的密钥。
    ssh-add ~/.ssh/id_ed25519

将 SSH 密钥添加到 GitHub

我们就快到了!这就是事情变得有点奇怪的地方,因为我们使用 iPad 连接到我们的 Pi。只有在我们上一步安装了 Screens 应用程序的情况下,这些步骤才有意义。遗憾的是,在最后一部分,我们不能只使用 CLI (Blink Shell ),因为我们将使用 iPad 的 web 浏览器来输入这些 SSH 凭证。

1.我们将使用一个名为xclip的小工具将 SSH 公钥文件的内容复制到剪贴板。为了安装这个,我们将再次使用我们的老朋友 apt:sudo apt install xclip

2.如果你还没有,现在是时候启动屏幕应用程序了。这样做的原因是因为xclip工具将 SSH 密钥文件的内容复制到 Raspberry Pi 的剪贴板,而不是 iPad 本身的剪贴板。幸运的是,Screens 应用程序允许我们在 iPad 和 Pi 之间来回传输剪贴板内容。

3.在您的 Raspberry Pi 界面中打开终端。为了确保我们在同一页上,这是我现在看到的:

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

作者捕获的图像

4.运行以下命令将您的 SSH 密钥复制到 Raspberry Pi 剪贴板:xclip -selection clipboard < ~/.ssh/id_ed25519.pub

5.为了继续在 iPad 上直接使用 SSH 密钥,我们需要将 Raspberry Pi 剪贴板的内容转移到 iPad 的剪贴板上。这在屏幕上非常容易做到。在屏幕 UI 的右下角,您会看到一个带有向上箭头的小方块。单击它,然后单击“获取剪贴板”选项。现在你的 SSH 密钥将会出现在你的 iPad 的剪贴板上!

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

作者捕获的屏幕截图

6.打开您最喜欢的浏览器,导航到您的个人 GitHub 帐户。

7.通过点击用户界面右上角的个人资料照片图标,然后点击“设置”,导航至您的帐户设置

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

作者捕获的屏幕截图

8.在左侧导航菜单中,点击“SSH 和 GPG 键”

9.单击绿色的“添加新的 SSH 密钥”按钮。

10.你现在应该可以看到下面截图中的用户界面。从你的剪贴板粘贴密钥,并给密钥起一个你喜欢的名字。我刚喝了一杯叫“树莓派”的。

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

作者捕获的屏幕截图

11.点击绿色的“添加 SSH 密钥”按钮,我们就完成了!

恭喜你。您现在可以从您的 Raspberry Pi 与您的个人 GitHub 进行交互了!

码头工人

我个人经常使用 Docker 图像,所以我对在 iPad 上进行数据科学研究的最大抱怨之一是,真的没有办法在本机上构建或使用 Docker 图像。虽然 Pythonista 是一个为直接使用 Python 提供了很好的界面的应用程序,但是没有专门的应用程序来构建 Docker 图像。(而且是的,我明白这是为什么。那不会阻止我对此感到不安。)

像我们的其他工具一样,在 Raspberry Pi 上安装 Docker 是非传统的,但幸运的是它不像其他一些东西那么复杂。再次感谢 Sofija Simic 在本网站提供这些指导

  1. 通过运行以下命令,确保我们运行的是最新的版本:sudo apt-get update && sudo apt-get upgrade
  2. 通过运行以下命令从 Docker 的官方网站下载安装脚本:curl -fsSL [https://get.docker.com](https://get.docker.com) -o get-docker.sh
  3. 执行你刚刚下载的脚本:sudo sh get-docker.sh
  4. 通过运行以下命令sudo usermod -aG docker [user_name]将您的 Pi 用户添加到 Docker 组(注意:如果您在初始化您的 Raspberry Pi 时保留了默认用户设置,您的用户名将是“Pi”。)

就是这样!如果你想确保一切运行正常,我会运行“hello-world”容器(sudo docker run hello-world),看看你是否得到了正确的输出。我们已经准备好进入我们最后的,也许是最有趣的工具:JupyterHub。

朱庇特枢纽

你可能用过 Jupyter 笔记本或者 JupyterLab,但是你可能不熟悉 JupyterHub。JupyterHub 在创建合法的发现环境方面更上一层楼。这是因为 JupyterHub 允许多个用户、多个计算资源和多个数据源聚集在一个屋檐下。它非常棒,我们实际上在我的财富 50 强公司的日常工作中使用 JupyterHub。

所以你可能会想,为什么我们要在小小的树莓派上启用这种“企业级”的东西呢?我有两个原因,你可能不在乎其中一个,但肯定会在乎另一个。您可能不关心的一点是支持多用户。但另一个更重要的原因是,我们将设置 JupyterHub 在 Pi 启动时立即启动,我们将能够从我们的 iPad 立即连接到它,而不必启动任何特殊的启动命令。

再次感谢 Gerold Busch 为我的这一部分提供了基础。让我们开始在您的 Pi 上启用 JupyterHub!(注意:我不会在这篇文章中讨论用户管理,但是如果你对此感兴趣,Gerold 的文章在这方面做得很好。)

我们将在这里讨论两个最重要的话题。第一个是在您的 Raspberry Pi 上启用 JupyterHub 的自动启动,第二个将向您展示如何直接从您的 iPad 上快速使用 JupyterHub。

在您的 Pi 上安装 JupyterHub

1.如果您还没有,请确保您已经准备好了所有的 Python 配置设置。如果到目前为止您一直在关注这个系列,那么您可以跳到下一步。否则,您需要运行以下命令:

sudo rm /usr/bin/python
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip

2.为了配置一个允许 JupyterHub 正确接收用户的代理,我们需要安装 NPM(节点包管理器)和另一个叫做configurable-http-proxy的工具。我们可以通过运行以下命令来安装它们:

sudo apt-get install npm
sudo npm install -g configurable-http-proxy

3.我们现在需要安装来自 PyPi 的 Jupyter 笔记本和 JupyterHub。我们可以通过一个简单的命令来实现:

sudo -H pip3 install notebook jupyterhub

4.JupyterHub 使用基于 Python 的配置文件来存储 JupyterHub 的设置。为了正确使用它,我们需要首先生成它,然后将它移动到/root目录中。我们可以使用以下命令来实现这一点:

jupyterhub --generate-config
sudo mv jupyterhub_config.py /root

5.我们现在需要编辑刚刚创建的配置文件中的bind_url。我们将它设置为端口 8888,但不一定非要这样。为此,运行命令sudo nano /root/jupyterhub_config.py。然后,我们需要取消注释并使用此信息更新以下行:

c.JupyterHub.bind_url = 'http://:8888'

6.好了,我们的 JupyterHub 初创企业的基本行为现在可以开始了。现在我们只需要让我们的 Raspberry Pi 在 OS 启动时启动 JupyterHub。为此,我们首先需要在systemd中创建一个新文件。为了启动这个过程,运行下面的命令:sudo nano /lib/systemd/system/jupyterhub.service.

7.用以下信息填充这个新文件:

[Unit]
Description=JupyterHub Service
After=multi-user.target[Service]
User=root
ExecStart=/usr/local/bin/jupyterhub --config=/root/jupyterhub_config.py
Restart=on-failure[Install]
WantedBy=multi-user.target

8.运行下面的命令,让一切井然有序,并启动和运行 JupyterHub:

sudo systemctl daemon-reload 
sudo systemctl start jupyterhub 
sudo systemctl enable jupyterhub 
sudo systemctl status jupyterhub.service

在 iPad 上使用 JupyterHub

如果您将我的帖子与 Gerold 的原始帖子进行比较,您会注意到我忽略了将 JupyterLab 作为 JupyterHub 实例的默认接口。这并不是因为我不喜欢 Lab,而是因为它不能与 Juno Connect 一起工作,Juno Connect 是我们用来连接 JupyterHub 的应用程序。

说到 Juno Connect,您可能还记得我在以前的一篇文章中推荐使用 Juno 作为 Jupyter 接口。Juno 和Juno Connect(9.99 美元)由同一家公司制造,但区别在于 Juno 被设计为在 iPad 上本地工作,而 Juno Connect 仅用于与远程服务器一起工作。我真的很喜欢原生的 Juno,但是它有一点限制,因为您只能使用纯 Python 库。(还是那句话,原生 iPad 的另一个局限。)Juno Connect 将使用 Raspberry Pi 的计算资源,因此我们不会受到本地 Juno 的限制。它们都有自己的用例,所以我个人都安装了。

抱歉,如果最后一段有点风的话。让我们开始设置 Juno 连接您的 Pi。你只需要打开应用程序,点击“添加 Jupyter 服务器”如果到目前为止您已经完成了本系列,您将能够使用这些设置填写服务器信息:

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

作者捕获的屏幕截图

点击“保存”,你就可以开始了!如果您现在导航到您的任何一台笔记本电脑,您将看到与您熟悉的基本 Juno 应用程序相同的用户界面。我的设置现在看起来是这样的:

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

作者捕获的图像

这种工作方式最酷的一点是,您不仅限于与 Juno Connect 甚至 iPad 进行交互。如果你喜欢更自然的体验,你可以在普通的浏览器中直接用你的 IP 地址连接到 JupyterHub。我在我的 iPhone 上测试了同一个 IP 地址——它根本没有直接连接到 Pi——你瞧,它工作了!(虽然这将是一个可怕的工作方式!)

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

作者捕获的图像

这篇文章到此结束!我确信我们还可以添加更多的工具,但我认为这已经足够让您开始使用了。我不确定这个系列是否会有另外一个帖子。我目前正在寻找方法来启用一个小型 Kubernetes 集群,只是为了学习,但是我目前正在努力启用它。如果我能让它工作,我会写另一篇文章。但就算我不再写“树莓 Pi + iPad”的帖子,我也一定会多写一些数据科学的帖子。敬请关注,再次感谢您的阅读!

用于数据科学的 iPad Pro + Raspberry Pi 第 4 部分:为学习目的安装 Kubernetes

原文:https://towardsdatascience.com/ipad-pro-raspberry-pi-for-data-science-part-4-installing-kubernetes-for-learning-eb7f8ac31198?source=collection_archive---------17-----------------------

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

树莓派+ iPad Pro

教你如何在你的树莓派上安装 Kubernetes 来展示新的学习理念

你好,朋友们!我们再次回到我们系列的第四部分,让树莓派直接与 iPad Pro 配合使用。如果你一直在关注,你会记得我不确定我会写第四篇文章。我已经花了几个星期的时间在这个特定的帖子上,因为,老实说,让它工作起来是一场斗争。在我们开始讨论为什么我要写第四篇文章之前,我想鼓励新读者看看之前的三篇文章:

作为一名机器学习工程师,我日常工作的主要职责是与我们的数据科学家合作,生产他们构建的机器学习解决方案,以便与我们的其他企业级系统进行适当的交互。当然,执行这项工作的部署环境不止一个,但是最近出现的最流行的一个是 Kubernetes。当谈到我的日常工作时,我要么在内部 Kubernetes 集群上工作,要么使用像 SageMaker 这样的 AWS 服务。

也就是说,我喜欢在沙盒空间中测试我的新实验,以免影响生产中运行的任何东西。说到我的个人设置,我一直在一个名为 Minikube 的工具的帮助下,在我的个人 MacBook Pro 上运行单节点 Kubernetes 集群。Minikube 已经很棒了,但不幸的是它不能与树莓 Pi 一起工作。这是因为 Raspberry Pi 使用基于 ARM 的 CPU 架构,不幸的是,目前还没有一款 Minikube 支持这种架构。

但是不用担心!我发现了一个不同的解决方案,叫做 K3s,我们将在这篇文章中启用它。如果你不知道,Kubernetes 经常被缩写为“k8s”,这是因为在 Kubernetes 的“k”和“s”之间有 8 个字符。我不能肯定地说这一点,但我不得不猜测 K3s 的命名方式,因为它是一个更轻量级版本的 Kubernetes。我不知道我是否会将它推荐给一个完整的企业级生产系统,但作为一个测试新想法的沙盒空间——就像在我们的 Raspberry Pi 上——K3s 肯定能完成任务。

在开始安装 K3s 之前,我应该注意到这篇文章不会涉及任何关于使用 Kubernetes 的“操作方法”。即使你从未使用过 Kubernetes,你也一定可以继续关注这篇文章,但是我们不会在这篇文章中讨论任何类型的机器学习部署模式。但请继续关注,因为我还有一些其他的帖子将在 Kubernetes 上演示,我个人将使用我的 iPad/Raspberry Pi 组合来执行这项工作。

好了,让我们开始安装吧!

K3s 初始安装

好的,在我们进入实际安装之前,我们需要做一件简单的事情。您需要在/boot/cmdline.txt文件中添加一些东西。将这些项目添加到该文件的末尾,与其他项目位于同一行:

cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory

重启你的 Pi,现在我们可以继续了!

K3s 在你的 Raspberry Pi 上的实际安装非常简单,尽管在我最终弄清楚我需要做什么之后才变得简单。您只需运行以下命令:

curl -sfL [https://get.k3s.io](https://get.k3s.io) | sh -s - --write-kubeconfig-mode 644

这个命令做了几件事。正如你可能从这里的curl命令中知道的,我们首先从 K3s 网站下载适当的文件,然后用从下载中得到的 shell 脚本安装组件。我第一次做的时候没有注意到的是--write-kubeconfig-mode命令。这个 Kubernetes 部署的独特之处在于,K3s 使用一个特定的k3s.yaml文件进行配置设置。如果你不运行带有644值的标志,K3s 将不能识别那个文件,你基本上不能使用 Kubernetes。

完成安装需要一点时间,但是一旦完成,您应该能够运行下面的命令并看到某种成功消息:sudo systemctl status k3s。除了启动 Kubernetes 集群本身,K3s 安装脚本还会做一些其他的事情。首先,它将创建一个额外的 shell 脚本来轻松卸载 K3s。如果您遇到任何问题,并且需要从头开始,运行以下命令将完全清除您的 Pi 中的 K3s:

bash /usr/local/bin/k3s-uninstall.sh

K3s 安装做的第二件事是它会为你安装kubectl命令行工具,这非常方便。如果你不熟悉那是什么,kubectl是我们用来与 Kubernetes 环境交互的主要工具。当在 Kubernetes 集群中安装东西、检查东西的状态等等时,您将使用kubectl来执行所有这些命令。

好了,尽管我们已经启动并运行了基线 Kubernetes 集群,但是还需要做一些事情来设置我们的理想配置。让我们继续设置一种方法,将本地存储用于持久性卷。

为永久卷设置本地存储

如果您以前没有使用过 Kubernetes,您将会了解到,Kubernetes 计算资源(例如 pods)默认使用临时存储。Kubernetes 的伟大之处在于,如果某个资源由于某种原因而死亡(比如从集群断开电源),它会在可能的时候重建该资源。坏消息是,由于 pod 存储的短暂性,您将丢失存储后创建的任何新数据。

当然,Kubernetes 有一个机制来保护我们。Kubernetes 允许我们在被称为“持久卷”或简称为 PV 的存储设备中使用广泛的存储设备。有了实例化的 PV,Kubernetes 部署就可以以持久卷声明(简称 PVC)的形式使用 PV 的一小部分。

对于我们的实验目的,我们可以通过我们的 Raspberry Pi 利用我们的 microSD 卡上的存储,只需进行一点额外的配置。当然,这取决于你的 microSD 卡的大小。我个人使用的是 200GB 的 microSD 卡,所以我有足够的空间来使用这种模式。如果您使用的是容量较小的卡,您可能不想为您的 PV 启用本地存储。

注意到这一点,K3s 的制造商——Rancher——创建了一个小脚本,使您能够非常容易地使用您的本地存储。您只需运行以下命令:

kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml

就是这样!现在,您可以通过 K3s 使用您的本地存储。如果你想进一步测试,Rancher 在他们的 GitHub 页面上提供了一些很棒的说明和演示材料。你可以在这个链接找到那个

至此,在结束这篇文章之前,我们还有最后一部分要讲,这肯定是你会感兴趣的一部分。让 K3s 列车继续前行吧!

利用自定义 Docker 图像

所以我真的不知道这是为什么,但默认情况下,K3s 不能使用自定义的 Docker 图像。如果您找到一个发布到 Docker Hub 的,您就可以使用这些现成的,但是如果您使用自己的本地映像进行本地测试,这确实需要一点额外的步骤。(说实话,我觉得可能有更好的方法来做这件事,但我还没有想出来。如果有,我会回来更新这篇文章。)

为了使用你自己的自定义镜像,你必须压缩你的 Docker 版本并使用 K3s 命令行,以便在你的 K3s 部署中使用它们。以下是实现这一点的步骤:

  • 使用标准的docker build命令构建您的容器。
  • 将构建的 Docker 图像保存为 TAR 文件。Docker 天生就有这种能力,您可以通过运行这个命令来启动它:docker save --output YOUR_IMAGE.tar NAME_OF_YOUR_DOCKER_IMAGE:latest。(如果您使用不同的标签,请将其替换为最新的。)
  • 使用 K3s CLI 将目标映像复制到 K3s。这里有一个如何做到这一点的例子:sudo k3s ctr images import YOUR_IMAGE.tar

坦率地说,每次更新图像时,这都是一件令人头疼的事情,所以我建议您构建一个小的 shell 脚本来实现自动化。这里有一个例子,我是如何在我的另一个个人项目中做到这一点的。

朋友们,这就是我们这篇文章的结尾!如果我找到更好的方法来做上面的任何事情,我一定会用更好的内容更新这篇文章。否则,你应该很乐意在你的树莓派上搭配 K3s!正如我的 Pi 上的其他数据科学工具一样,我发现启用这种模式有很多价值。事实上,整篇文章,从标题图片到正文内容再到代码片段,都是在我的 iPad 上写的。所以你知道,当我说这种模式有效并且很棒的时候,我是认真的。😃

与计算机科学学位相比,编码训练营值得吗?

原文:https://towardsdatascience.com/is-a-coding-bootcamp-worth-it-compared-to-a-computer-science-degree-140a9fa38130?source=collection_archive---------39-----------------------

这完全是时间和金钱的问题

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

通过像素成像

当你想知道,“编码训练营值得吗?“你要看几个因素。编码训练营的平均费用在 13,000 美元左右。无论你选择亲自参加还是在线参加编码训练营,都是如此,尽管编码训练营的费用有很大的差异,根据语言、时长和负责人的不同,从 3000 美元到 20000 美元不等。

你还应该考虑其他选择。也许你会问“一个编码训练营值得吗?“因为你正处于计算机科学潜在职业的开端。你看到了你学习计算机科学道路上的障碍,你想知道是否值得去克服它们。13,000 美元(甚至 3,000 美元)是一笔不小的数目。

然而,如果你想知道编码训练营要花多少钱,一个编码训练营是否值得,你可能知道一个典型的选择:计算机科学学位。不仅需要更长的时间——至少两年,更可能是四年——才能完成,而且通常也更昂贵。通常,文凭比编码训练营花费更多的钱。

这是许多人说是的,一个编码训练营值得吗的部分原因:因为计算机科学雇主对计算机科学学位的价格有问题。对合格的、有才华的计算机科学家有极高的需求。而且供应量少。2019 年,有 50 万个职位空缺,但只有 72000 名毕业生。编码训练营有助于填补这一空白。

计算机科学工作很有趣,因为它们是一些最不传统的雇主。你还能想象出哪一门课程可以用 13 周的课程取代 4 年的结构化学习?但他们足够绝望,也足够开明,以技能来判断申请人,而不是一张纸上的名字,这张纸花费了数十万美元和四年时间来完成。

好消息是,对于想知道训练营费用的人来说,你比其他科目有更多的灵活性。只要你能证明你知道自己在做什么,你就能在你最喜欢的雇主那里获得一份理想的工作。

让我们来看看编码训练营要花多少钱,一个计算机科学学位要花多少钱,以及它们对你来说是否值得。简而言之,每个人的情况不一样,所以每个人的答案也会不一样。

编码训练营要花多少钱?当你看价格的时候,一个编码训练营值得吗?

在考虑一个编码训练营的成本时,没有足够多的人考虑到的一件事是机会成本。是的,这有直接的金钱成本——而且编写训练营代码并不便宜!你至少要花几千美元。3000 美元被认为是训练营的低价。

但是仅仅比较金钱忽略了编码训练营更大的成本:当你选择编码训练营时,你放弃了什么。

无论编码训练营花费你多少钱,你选择的那个也将花费你时间,这是在编码训练营是否值得的问题中要考虑的另一个因素。编码训练营比计算机科学学位花费的时间少,是的,但是放弃你的生活,在这个编码训练营上花费几个星期或几个月也会让你付出代价。

虽然学位很难与工作或生活平衡,但这是可能的。编码训练营对精神要求如此之高,以至于你不得不把所有的时间都投入到完成编码训练营的单一追求中。你花在苦读功课上的每一个小时,都可能是花在获得工作经验、观看 YouTube 教程,甚至只是花时间和你的狗在一起。

此外,编码训练营是专业化的。应该学围棋还是 Python?计算机科学学位将为你提供多种语言和技术经验的坚实基础,而训练营将专注于获得入门级工作的单一途径,即使这意味着抄近路,使你在未来更难进步。编码训练营会让你失去学习其他语言或技能的选择,因为你必须在早期致力于一个单一的主题。大多数编码训练营的学生缺乏做出正确决定的基础知识。

一个编码训练营值得吗?

老实说,这取决于你想要什么。如果你已经做了研究,并且你致力于用一些在线学习来补充你在营地获得的简化教育,那么是的,一个编码训练营可能是值得的,即使价格很高。你可以很容易地证明花费 2 万美元和 4 个月的时间来获得你的完美工作,支付 10 万美元以上的惊人福利和奇妙的工作/生活平衡是合理的。

如果不是,那么不,编码训练营对你来说是不值得的。你冒着花费几个月时间和大量金钱的风险,这些可能会让你得到一次面试机会,但不会让你为真正的面试要求做好准备。更糟糕的是,你可能会发现自己把时间和金钱花在一个特定的项目上,却发现自己其实想学习一门不同的技能或语言。

这完全取决于你的个人情况。考虑替代方案也很重要。如果编码训练营是获得你梦想工作的唯一途径,那么任何代价都是值得的。幸运的是,就业形势对申请者非常有利,这意味着你可以通过多种途径学习技能来获得编码工作。

计算机科学学位要多少钱?

一个这样的选择是计算机科学学位。当然,如果你正在读这篇文章,你可能已经获得了另一个学科的学位,或者一开始就不想要学位,这让你开始研究一个编码训练营要花多少钱,是否值得。在人生的这个阶段,你甚至可能不会考虑将计算机科学学位作为一个可能的选择。

但这将是一个错误。计算机科学学位绝对是一个选择,无论你在生活中处于什么位置,都应该被视为编码训练营的替代选择。

以前是你大学毕业,用学历找工作。但是,现代社会的工作已经超出了学位所能提供的传统范围,工作机会也远远超过了颁发的文凭数量。计算机科学就是这样一个领域。

如果你已经 50 岁了,并且获得了你的第一个计算机科学学位,雇主不会看不起你。如果你不是从麻省理工学院拿到的,他们不会拒绝你。许多当地社区大学提供计算机科学学位——我姐姐毕业于佐治亚理工学院,获得了计算机科学学位,5 年的教育费用为 40,000 美元,包括学费、住宿费、伙食费和教科书费。

当然,计算机科学学位比编码训练营花费更多,也需要更多的时间。但是它们有两个明显的成本优势。首先,它们更加灵活。一个学位需要几年时间,但是你可以在网上完成你的课程,同时工作,存钱,住在家里,等等。此外,它们提供了更多的知识。你学到的不仅仅是一套专业技能——你获得了更多的信息,一旦你有了基础,你就可以选择专业化。

这个网站列出了顶尖大学计算机科学学位的在线费用——根据你是否在本州,一个计算机科学学位的费用在 15000 美元到 67400 美元之间。

就像一个编码训练营,计算机科学学位值得吗?是的,在某些情况下。如果你有更多的时间,你不太确定你想如何使用你的计算机科学知识,你需要一个彻底的基础知识,这个代价是值得的。如果这些情况不适合你的情况,计算机科学学位对你来说可能不值得。

你冒着花费数年时间和大量金钱的风险,而实际上你并不需要。更糟糕的是,你冒着花费金钱和时间的风险,然后仍然在毕业前辍学,就像我们 40%的本科生一样。

确实存在比编写训练营代码更便宜、更快捷的替代方案。

如果你已经做到了这一步,但没有一个选择吸引你,你会很高兴知道还有其他选择。再次,我想重申计算机科学雇主是多么开明。他们不关心你是如何获得知识或技能的。这些雇主只是想知道你有什么需要。来自编码训练营的文凭或证书是获得和证明这些技能的一个有用的方法,但是有替代编码训练营和学位的选择,花费更少的时间和金钱。一个编码训练营值得吗?有时候成本太高。

首先,你总是可以选择自学。许多大学免费提供讲座,如今 YouTube 上的信息之丰富是不可想象的。如果你能为自己设计一个在线学习计算机科学的课程,那么你就很有可能从网上著名的、知识渊博的资源那里获得免费的教育和信息。

优势是显而易见的——它是免费的,或者非常便宜。这完全是自定进度的。你可以挑选你所涉及的话题。成本也很简单:要达到你将要面试的标准需要一些时间,另外你必须激励自己坚持下去,老师或讲师可能会在学位课程或编码训练营中激励你。

另外,你必须做大量的跑腿工作来证明你值得一次机会。文凭和编码训练营证书很好地向雇主证明了你有知识,并能让你通过面试。自学意味着你必须找到另一种方式在简历上展示你的知识,以便进入面试的大门。在这方面,编码训练营值得吗?是的。

还有一些地方可以在线获得计算机科学证书,价格比编程训练营和计算机科学学位便宜得多。例如, Qvault 是一个在线计算机科学学习平台,提供编程基础、计算机科学基础、围棋、实用密码学等课程。Qvault 按月或按年收费,两年的访问费用在 144 美元到 480 美元之间。它还有一个作品集,你可以向潜在雇主展示你所获得的技能和经验。

对我来说什么是正确的选择?

归根结底,只有你能回答这个问题。一个编码训练营值得吗?你应该以文凭为目标吗?能不能靠进一个自考课程?网上证书够你用吗?我不能回答你,因为每个人的正确答案都不一样。

本指南旨在帮助您为自己提供一个答案。到目前为止,您应该对每个选项的具体优势和成本(金钱和其他方面)有了透彻的了解。在你投入同样宝贵的金钱或时间之前,彻底考虑和调查每一个选择都是值得的。

你可以选择将编码 bootcamp 的成本花在相对快速、极具针对性的知识上。你可以在慢节奏、填鸭式的课程上花更多的时间和金钱,让你从一所认证的大学获得学位,并彻底了解计算机科学的基础知识。你可以遵循自己的自学课程,并接受向雇主证明你的知识的费用。或者你可以选择 Qvault 这样的平台,它提供一些计算机科学基础领域的自我驱动的证书。

无论如何,要记住的重要一点是,你可以相信雇主迫切需要合格的计算机科学员工。你所要做的就是找到最适合你的道路,知道如何最好地向雇主展示自己,让他们了解你的技能和经验。这使得编码训练营是否值得,或者计算机科学学位是否值得,这些问题的答案进入适当的环境,让你做出选择。

原载于 2021 年 3 月 29 日https://qvault . io

艾是来找你工作的吗?

原文:https://towardsdatascience.com/is-ai-coming-for-your-job-2f593ab72b55?source=collection_archive---------22-----------------------

意见

矛盾的是,用人工智能取代工人创造了对更多工人的需求

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

AI 正在抢走很多工作。但它也创造了新的。作者图片

自大规模工业化开始以来,自动化导致了大规模、广泛的失业。当汽车工业用机器人取代大量人类时,像 T2、底特律和 T3 这样的城市成了受害者。今天,许多受灾最严重的地方几乎看不到过去繁华和繁荣的影子。

给经济增加机器人会取代工人。芝加哥大学的一项研究发现,每 1000 名工人增加一台机器会导致就业率下降至少 0.18%。这听起来可能不多,但在美国这样大的国家,这相当于大约 50 万人失业。这相当于一个中等城市的工人没有工作。

这些工人面临着直接的危机,因为他们不得不寻找新的工作,甚至可能是全新的领域。他们的失业还会对更广泛的经济产生下游影响,因为他们在失业期间会削减支出。失业影响到每个参与经济的人。

随着第四次工业革命的全面爆发,这种恐惧再次显而易见。人工智能有潜力自动化甚至非常复杂的任务,更不用说简单和重复的任务了。只有在你考虑社会后果之前,这种节省劳动力的潜力听起来才是伟大的。没有一个城市想在破产和衰落中狼狈收场。没有人愿意失去他们的生计,尽管他们工作的某些部分可能是枯燥和重复的。

但是消息并不都是坏的。如果没有汽车工业中的机器人,像通用汽车或特斯拉这样的公司制造的创新产品甚至不会存在于我们最疯狂的梦想中。没有科技工厂里的机器人,你正在阅读这篇文章的设备也不会存在。如果没有基于人工智能的推荐算法,你可能永远不会偶然发现这篇文章。

像底特律衰落这样的故事令人心痛。但有理由相信,在人工智能推动的革命方面,历史不会重演。

采用机器人的公司雇佣更多的工人

在宏观经济层面,逻辑似乎很简单:如果人工智能让工人过时,那么采用它将导致失业率上升。乍一看,法国的一项研究证实了这种怀疑。作者发现,在一个给定的行业中,机器人增加 20%会导致该行业的就业率下降 1.6%。当然,机器人是一个比人工智能更通用的术语,但我们可以假设人工智能会导致类似的结果。

然而,当把视角从国家经济转移到个体企业时,现实是不同的。有些违反直觉的是,采用机器人的公司雇佣更多的工人。诚然,这一数据可能有点误导,因为增长更强劲的公司可以更快地购买更多机器人,这使得它们的规模更快。

然而,有几个令人信服的理由相信机器人有助于公司扩大人力资源。法国的研究表明,如果工人和机器人分担工作量,那么每个工人的附加值就会增加。

例如,假设一家公司雇佣五名工人生产价值 100 美元的产品。平均每个工人为最终产品贡献 20 美元。在经历了一些增长后,这家公司购买了一些机器人,现在每件产品只需要两名工人,因为机器人完成了剩下的工作。结果,剩下的两个工人每人为最终产品贡献了 50 美元。由于这是效率的大幅提高,该公司可能会扩大其活动并雇用更多的工人,由于效率的提高,他们现在也可以贡献 50 美元——相比之下,机器人出现前的阶段是 20 美元。这种机制增加了公司的劳动力需求,因此它可能会决定雇佣更多的工人来扩大其产品和服务的范围。

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

人类和 AI 走的是不同的路。作者图片

采用机器人的企业也增加了员工人数,因为当它们不是手工制作时,提供产品和服务通常会变得更便宜。当然,购买机器是一项前期投资,一些维护工作是必要的。然而,机器人不会累、生病或需要去度假。从长远来看,这种效率是值得的。成本的降低使这些公司更容易在他们的行业中获得更多的市场份额,因为他们可以以相同的价格提供更高质量的产品,或者保持相同的质量,但提供比竞争对手更低的价格。

来自加拿大、T2、丹麦、T4 和西班牙的研究也得出了相似的结论。尽管美国尚未开展此类研究,但如果公司想保持竞争力,就需要投资机器人,即使该行业的就业率因此下降。

然而,我们应该记住,每个人工智能系统都可以被看作是一个机器人,但不是每个机器人都包含人工智能。投资人工智能可能会像通用机器人一样带来更多的企业增长。幸运的是,与其他机器人不同,人工智能可能不会导致整个行业的就业率下降。

荷兰的一项研究得出了与法国、加拿大、丹麦和西班牙相似的结论,即更多的自动化——意味着更多的机器人——会导致更多的失业。尽管如此,电脑化,我们可以安全地计算人工智能,对失业没有影响。

换句话说,虽然物理机器人确实在一定程度上消除了工作岗位,但计算机和 AI 并没有同样的效果。然而,这项研究没有表明人工智能和经济增长之间的联系。但是其他的研究有。

人工智能将推动爆炸式增长

那些见证了互联网崛起的年纪足够大的读者(作者当时还太小)可能还记得它是如何引起人们对失业的类似担忧的。尽管它在仅仅 20 年前变得普遍,但它已经创造了数百万个工作岗位,并占美国国内生产总值的 10%。或许更重要的是,互联网并没有像汽车工业的自动化那样导致城市的衰落。

根据普华永道的数据,目前,63%的首席执行官认为人工智能将比互联网产生更大的影响。在他们的全球人工智能研究中,普华永道估计,到 2030 年,仅人工智能一项,全球 GDP 就将增长 26%。这比中国和印度目前的 GDP 总和还要多。

普华永道不是房间里唯一的乐观主义者。世界经济论坛估计,到 2025 年,人工智能将创造 9700 万个新工作岗位。他们还估计,同期将有大约 8500 万个工作岗位流失,但这仍然是 1200 万个工作岗位的净盈余。

也就是说,这些工作的分配可能是不平等的。在瑞典和美国,由于人工智能,到 2035 年,生产力预计将增加超过 35%。然而,对于法国和西班牙来说,增长可能不到 20%。

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

我们将创造和消费越来越多的人工智能。作者图片

不过,这种影响可能没有听起来那么大。世界经济论坛估计到 2030 年,只有 40%的人工智能相关的经济增长将来自生产力的提高;另外 60%将来自消费。换句话说,不到一半的增长将来自工人变得更有效率或被人工智能取代。其余的增长将来自于人们将使用人工智能产品,如社交网络或流媒体服务。关于这一点需要注意的是,我们在这里比较两个不同的时间跨度,因为一个预测是 10 年,另一个是 15 年。然而,很明显,生产率只是对整体经济增长做出贡献的等式的一部分。

尽管存在合理的担忧,但似乎人工智能的采用将导致持续的经济增长,从而刺激就业率。重要的是让这种增长对国内和国际上尽可能多的公民公平公正。在一个国家内,这意味着确保边缘化群体,如妇女、LGBTQ+个人、超重者、残疾人和有色人种获得人工智能方面的培训和教育。我们还必须努力根除目前存在的算法偏差。在国际层面上,这意味着让低收入国家能够获得计算资源,并促进不同国家之间的合作和研究。

基于人工智能的管理可能是不健康的

然而,在你对世界经济论坛的发现过于热情之前,想想经济增长并不意味着每个人都更富有。冒着听起来过于社会主义和欧洲化的风险(没关系,那是我来自的地方),让我说工人的权利经常被 AI 压榨致死。

The Verge 很清楚地报道了这一点:用 AI 来接手枯燥重复的任务是可以的。但是如果你把一个算法提升到一个中层管理人员呢?算法经理专注于 KPI,没有怜悯和人性。这台机器的唯一目标是尽可能高效地达到预期效果。结果是,它减少了休息时间,提高了目标,最终可能会裁员。

我们已经看到人工智能管理的负面结果。在 AI 经理的管理下,工人们通常会耗尽的精力。有些人甚至会受到严重的身体伤害。人工智能管理的生产率指标似乎也不太有效。例如,算法被用来衡量软件开发人员的生产力。矛盾的是,这种测量方法似乎并没有提高生产率,而是摧毁了生产率。

如果我们不是把算法作为最底层的工人,而是作为管理者来使用,我们至少应该教他们一些人类的礼仪。例如,在算法中包含一些硬边界,指定员工有资格享受多少次休息。此外,即使没有人工智能,激励员工超越团队中最好的人也是常见的做法。但是,让他们稍微高于平均水平,然后用算法实现这个目标怎么样?

这些方法在短期内可能听起来像是浪费资源,但我的直觉是它们最终会有回报。事实上,如果我们不采取一种更温和的方法来提高生产率,我们很可能会以大量没有工作、收入和未来的工人而告终,不是因为他们被解雇,而是因为他们已经超出了极限。

强调人工智能在创造新就业机会方面的能力非常重要。然而,这些必须是人道的,否则就没有意义了。

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

我们需要创造为工人服务的人工智能,而不是让工人为人工智能服务。作者图片

如何防止人工智能末日

我不是在提出社会平等的观点,因为我是一个守护天使。我只是一个普通的,自私的人。但我相信,作为人类,如果我们周围的人过得好,我们就会受益。当失业率下降时,这为政府节省了一大笔钱,并为未来开辟了新的机会。毕竟,在这些保住工作的底层工人中,或许有一两个人有一天会成为未来几十年的史蒂夫·乔布斯(Steve Jobs)或埃隆·马斯克(Elon Musk)。

还有另一个问题:如果像世界经济论坛所建议的那样,通过人工智能创造了 9700 万个工作岗位,而只有 8500 万个工作岗位被摧毁,那么没有人能保证这 8500 万名下岗工人会在 9700 万名幸运儿的行列中。人口增长,人们迁移,因此 9700 万个工作岗位可能终究是一种相当稀缺的资源。

为了给 8500 万下岗工人一个视角,必须对他们进行再培训和技能提升,最好是在他们丢掉原来的工作之前。人工智能可以成为解决方案的一部分,因为学习机器人可以自动完成继续教育的课程。人工智能算法也应该被创造出来,以使工人与新的机会相匹配,并为全新的工人配备必要的技能,最好是在他们离开大学之前。

人工智能创造的就业机会将超过它摧毁的就业机会。但我们需要人工智能来确保这些新工作的公平分配。

https://medium.datadriveninvestor.com/at-the-origin-of-c-were-a-school-teacher-and-a-string-of-failures-efebcb6c91db

投资于您的员工

幸运的是,政府开始明白发生了什么。例如,法国非常重视人工智能主导的未来世界。在一份来自 2019 年的报告中,France Stratégie 提议培养更多真正理解人工智能对技术、法律、经济和整个社会意味着什么的人工智能专家和工作者。

此外,France Stratégie 建议“改进计划,以保障将受到自动化风险严重影响的部门和子部门的职业道路。”换句话说,商界和政府中一些聪明的决策者需要聚在一起,在一个快速变化的环境中,一个行业一个行业地为工人制定计划。我赞成这种做法。

这需要很大的远见,没有人有水晶球。我们会犯错误。但是如果我们,作为一个社会,想要向前发展,我们需要解决对衰落的根本恐惧,对跟不上不断变化的技术的恐惧。人工智能会给许多人带来繁荣,给少数人带来厄运,但我们需要现在就行动起来,遏制这种厄运,让繁荣惠及每一个工人。

AI 到了吗?

原文:https://towardsdatascience.com/is-ai-there-yet-ef57cd306555?source=collection_archive---------32-----------------------

今天人工智能面临的问题的快速总结

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

照片由杰克森煨Unsplash

人非圣贤,孰能无过。

底特律的冬天很冷,但阳光灿烂。罗伯特·威廉斯决定花些时间和他的两个女儿一起处理房子的前期贷款。他的妻子和岳母在一个角落里徘徊,一边喝着热饮,一边闲聊。突然,警察不知从哪里冒了出来,让一个完美的家庭日戛然而止。罗伯特被从他哭泣的女儿们的怀里夺走,没有任何解释,冰冷的手铐现在抓住了他的手。警察立刻把他带走了!他的家人被展现在他们眼前的场景震惊得不敢相信。接下来罗伯特被警方拘留了 30 个小时。随后,他因盗窃指控被传讯,需缴纳 1000 美元的保释金。但是没有人费心去问罗伯特在所谓的盗窃发生时他是否有不在场证明!对他来说幸运的是,在抢劫发生时,他刚刚在 Instagram 上发布了一段来自另一个地点的视频,从而给他提供了确凿的数字证据。

但是哪里出了问题呢?密歇根州警方收集了所有与盗窃有关的镜头,并使用面部识别软件从 4900 万张图像的数据库中识别出潜在的嫌疑人。罗伯特·威廉斯是被算法识别出的不幸的人。司法的崩溃凸显了两个关键问题。

首先,面部识别并不完美;事实上,它只有 95%的准确率。当然,人们可能认为这个比例相当高。但是这 5%的误差会带来什么影响呢?这个小小的错误对罗伯特·威廉斯和他的家人产生了悲剧性的影响,因为他们现在已经伤痕累累。再者,如果罗伯特在抢劫时没有在 Instagram 上发布照片,他今天可能还在监狱里。有些人可能会说,这是为这些系统提供的额外保护付出的小小代价。毕竟,这只是一个小小的错误,是吗?

2009 年,中国开始部署全国性的社会信用体系。它建立了一个由超过 2 亿个公共摄像头和大量传感器组成的网络。这些数据,加上从移动设备上获取的所有信息,给了中国当局关于其公民的精确信息。该系统背后的理念是促进“值得信赖”的行为。如果一个人违反了中国法律(如不纳税、闯红灯或在火车上吸烟),这个人的社会信用评分就会降低。如果他依法办事,社会信用分就会上去。事实上,就在 2018 年,有 2400 万中国人被禁止旅行,因为他们的社会信用评分太低。

考虑到中国近 14 亿的总人口,这个问题变得更加复杂。他们的摄像系统中 5%的误差率可能会对 7000 万人造成错误分类和负面影响。因此,说真的,尽管人工智能系统在过去几十年中表现出了令人难以置信的壮举(在某些情况下甚至超过了人类的水平),但我们还没有达到那种程度,如果管理不善,它们的影响可能是灾难性的。

偏见在于旁观者的电子眼

我们应该关心的不仅仅是错误。当我们创建人工智能算法时,偏见是另一个有问题的问题。佐治亚理工学院对最先进的自动驾驶汽车系统进行的分析发现,这些汽车中使用的传感器和摄像头更有可能检测到肤色较浅的人。这自然意味着自动驾驶汽车在撞上有色人种之前不太可能停下来。这适用于所有被测试的系统,对于肤色较深的人,准确率下降了 5%。

有些人可能会说,机器不可能是种族主义者,因为它不理解种族的概念。这是真的,事实上,问题不在于我们的算法的固有性质。出现的问题反映了我们用来训练算法的基础数据。几个月前发布了一款名为 Face Depixelizer 的新工具,证明了这一点。这个程序背后的想法是拍摄一个人的像素化照片作为输入。然后,系统将使用人工智能对其进行处理,并返回清晰、准确的面部图像。当给系统输入美国前总统巴拉克·奥巴马的像素化图像时,该算法将他变成了一个白人,尽管这张像素化图像用肉眼非常容易识别。同样的算法被用于测试亚历山德里亚-奥卡西奥·科尔特斯(Alexandria-Ocasio Cortez)的像素化图像,这位美国国会女议员有着拉丁裔血统,刘玉玲是著名的亚裔美国女演员。在这两种情况下,算法都将他们的脸重建成白色。

这些算法易受用于训练的数据的影响。正如早期 IBM 程序员 George Fuechsel 曾经说过的:“垃圾进,垃圾出”。这些算法是一张白纸;如果在不平衡的数据集上训练它们,它们会自动产生错误的分类。正因为如此,数据科学家必须竭尽全力确保他们的数据集能够代表正在建模的领域。考虑到我们生活的世界已经存在偏见,这并不容易。在谷歌上快速搜索护士,可以找到 80 万名女护士和 60 万名男护士的参考资料。另一项对医生的搜索发现 200 万个男医生的链接,而 150 万个女医生的链接。这些数字代表了典型的性别陈规定型观念,即护士通常被描绘成女性,医生被描绘成男性。如果这些数据在没有首先平衡数据集的情况下被直接输入到算法中,算法将会学习偏差并将其应用于判断中(从而扭曲结果的有效性)。

2015 年,亚马逊成为这个问题的受害者。由于该公司在全球范围内招聘了数千人,他们的工程师决定创建一个人工智能招聘工具。使用几次后,很明显这个工具歧视妇女。原因如下。当工程师设计人工智能时,他们需要在一些数据上训练算法。他们突然意识到,亚马逊目前的员工完全符合该组织的企业文化,他们有适当的要求,公司对他们的表现很满意。工程师们推断,如果人工智能学会识别与已经受雇的人相似的人,它将成功地识别出有前途的候选人。因此,他们使用当前员工的简历来训练算法。然而,他们没有意识到在科技行业有 75%的劳动力是男性主导的。所以偏见是不可避免的!亚马逊的系统告诉自己,男性候选人更受欢迎,并惩罚包含“女性”一词的简历。它也偏爱那些在简历中充斥着某些带有男性含义的动词的候选人。

这不是一个孤立的案例。微软也研究过人工智能,但最终发展出了许多负面特征。这一切都是从对话理解的实验开始的。微软创建了一个名为 Tay 的 Twitter 聊天机器人,它的任务是通过随意的对话与人交流。对话的戏谑没有持续很长时间,Tay 开始对人们发表厌恶女人和种族主义的评论,并夹杂着脏话。聊天机器人开始时几乎是一片空白,在不到 15 个小时的时间里,它成功捕捉到了与之互动的人的负面情绪。这就好像你在丛林中抚养一个孩子,并期望他长大后能识字。事情不是这样的。

此外,网络世界充斥着各种不同的观点,如果不加以引导,人工智能系统很快就会误入歧途。事实上,Tay 在其短暂的生命周期中成功处理了数千条消息,每秒钟产生近 2 条消息。人们只能想象这种系统会给人们带来多大的伤害。这个事件也应该提醒我们,即使像微软这样的大公司有时也会忘记采取预防措施来保护我们免受粗糙的人工智能。

解释自己的时间

近年来出现了一个新的人工智能子领域,称为可解释人工智能(XAI),以解决这些问题。其目的是创建不隐藏其底层工作的算法,而是透明地提供完整的解释。我们已经看到了各种例子,证明人工智能算法产生的结果是有问题的。但在其他情况下,问题并不那么明显。计算机科学家创造了看起来运行良好的系统,人们盲目地相信结果,但它们并不总是正确的。

神奇的雪分类器

区分哈士奇和狼并不是一项简单的任务,但算法可以达到 90%的准确率。或者他们有吗?

华盛顿大学最近的一项实验试图创造一种能够区分狼和哈士奇图像的分类器。该系统在几张照片上进行训练,并在一组独立的图片上进行测试,这通常是机器学习中的情况。令人惊讶的是,即使哈士奇与狼非常相似,该系统也能达到 90%左右的准确率。研究人员对这样的结果欣喜若狂。然而,在运行一个能够解释为什么算法能够获得如此好的结果的解释器函数时,很明显该模型主要是基于背景做出决定的。狼的图片通常描绘了一个多雪的环境,而哈士奇的图片很少描绘。因此,研究人员无意中创造了一个伟大的雪探测器,而不是创造一个狼对哈士奇的分类器。仅从准确性等传统性能指标来看,这种错误并不明显!当然,这样的玩具实验是基于实验室的,但如果病人的生命依赖于那个人工智能,会发生什么?

缺失环节

对患者的风险等级进行分类并不是一件简单的事情,尤其是考虑到这个决定所带来的责任。20 世纪 90 年代,匹兹堡大学进行了一项预测肺炎患者并发症风险的研究。目标是找出哪些肺炎患者是低风险或高风险的。低风险患者被送回家,并开了抗生素鸡尾酒和鸡汤,而其他人则被送入医院。该系统围绕人工神经网络(ANN)架构(一种受大脑启发的模型)设计,分析了 23 个州 78 家医院的不少于 75 万名患者,死亡率为 11%。令人惊讶的是,它设法获得了大约 86%的高精度。

当该系统在实际病人身上进行测试时,医生们注意到了一个严重的错误。同时患有哮喘的肺炎患者被归类为低风险患者。医生们立刻皱起了眉头,因为分类错误太严重了。他们向程序员指出了这个问题,系统被送回了绘图板。计算机科学家对其进行了彻底的分析,然而他们在数据或现有系统中找不到任何错误。然而,当他们试图进一步探究该系统如何得出这样的结论时,他们立即面临一堵墙。系统核心的人工神经网络受到大脑内部工作方式的启发。然而,它通常被认为是一个黑匣子。这意味着我们给它一个输入,我们得到一个输出,但我们不能清楚地看到算法的内部工作。这使得寻找解释的任务变得异常复杂,在某些情况下,对于人类来说是不可能完成的。为了克服这个障碍,他们在人工神经网络架构的基础上建立了一个基于规则的系统。这样做,他们能够阅读和理解系统生成的规则。

令人惊讶的是,基于规则的系统也得出了与人工神经网络相同的结论。然而,研究人员进一步发现,根据数据,患有肺炎和哮喘的患者比其他人的恢复率更高。算法漏掉的是他们变好的原因。这绝对不是因为他们有哮喘!原因是在过去,哮喘患者被医生自动标记为高风险。正因为如此,他们立即被送入重症监护室,最终比普通病人更有效地恢复了健康。这证明了两件事;首先,人类的直觉是必不可少的,因为当面对自动化系统的结果时,医生立即标记了这个问题。其次,它应该提醒我们,相关性并不意味着因果关系。

太多的选择导致糟糕的决定。

到目前为止,我们看到的决策相对简单,但是如果事情变得无限复杂呢?自动驾驶汽车将不得不做出艰难的决定,我们需要能够理解这些决定背后的基本原理。对于肺炎病例中的患者来说幸运的是,一个人控制了那个系统,但是如果我们有像自动驾驶汽车这样的自主系统呢?想想著名的电车问题,无人驾驶汽车无法避免事故。而这样的结果,肯定会有人死!人工智能应该选择什么?

优先考虑人类而不是动物?

乘客超过行人?

以少救多?

重女轻男?

年轻人优先于老年人?

选择社会地位高的人?

奖励守法者而不是罪犯?

或者保持航向,不要干预?

在大多数情况下,没有对错。结果会有人死。事实上,我们没有这些问题的答案。但是让我们把争论放在一边,因为这不是问题的结束。有人死亡后,一个中肯的问题是,谁将对事故负责?程序员、生产汽车的公司还是车主?

车主对车辆的驾驶没有直接的发言权。他可以决定目的地,但也差不多了。所以不太可能是车主的过错。生产这种汽车的公司使用软件开发商开发的程序。它对代码本身没有发言权,而且在安装到汽车上之前,它确实通过了国家当局强加给汽车公司的严格测试。程序员可能使用最新的方法来开发正确的代码。一旦车辆开始运行,它就开始根据自己的道路经验获取信息。在某些情况下,这些汽车甚至会借鉴其他车辆的经验。当然,一旦机器上路,程序员几乎无法控制它实际知道什么。因此,我们兜了一个圈子,似乎没有人对此负责,我们也不知道。

结论

我们面临的挑战是找出推进人工智能的最佳方式,同时创造我们可以信任和理解的解决方案。正因为如此,向 XAI 转移是很自然的。当前的人工智能模型对于人们来说是不透明、不直观和复杂的,但如果我们希望人们信任人工智能系统的自主决策,用户必须理解、有信心并有效地管理它。

除了前面提到的问题,还有其他考虑因素,例如:

  • 算法和自动化变得越来越普遍。人工智能驱动的分析正在解决许多商业挑战,我们看到人类专家在传统上无可争议的领域(例如医疗诊断)取得了进展。AI 可以处理比人类操作员多得多的数据;他们速度更快,而且不会累。另一方面,我们必须小心,因为偏见和错误的决定会传播得更快。
  • 人工智能模型正变得庞大,有数百万个参数,这使得人类用户更难理解它们。一些系统正在对人类操作员进行培训,但这不足以获得人们的信任。此外,一些模型无法控制算法背后的逻辑,也没有简单的方法来纠正任何错误。
  • 随着 2018 年 5 月 25 日欧洲通用数据保护条例(GDPR)的出台,黑盒方法在商业中的使用变得更具挑战性,因为它们无法提供对其内部工作方式的解释。除了被遗忘权之外,GDPR 还引入了删除权。因此,任何人都可以向任何组织提出请求,要求删除他们的个人数据。然而,这比听起来要复杂得多。这不仅仅是从搜索结果中删除个人数据的问题。必须将其从存储该数据的知识库、故障恢复备份、其他数据中心镜像的数据中删除,并从硬盘中物理删除(而不仅仅是删除链接)。所有这些都使得删除任务过于复杂。

我们面临的挑战是找出推动这些创新的最佳方式,同时创造我们可以信任和理解的解决方案。我们还没到那一步,AI 也不应该被认为是我们盲目追随的这个神奇的神。另一方面,我们不能忽视它和它给我们带来的好处。如果我们能够设法应对前面提到的挑战,我们就能真正改善许多人的生活。

这是我想出的一本书的节选,我还在找出版商**。因此,如果你喜欢这篇文章,并想与我联系,请这样做🐦*https://twitter.com/alexieidingli,🔗*LinkedIn,📷Instagram或者😊 脸书

**

阿列克谢·丁力教授 是马耳他大学的 AI 教授。二十多年来,他一直在人工智能领域进行研究和工作,协助不同的公司实施人工智能解决方案。他的工作被国际专家评为世界级,并赢得了几个当地和国际奖项(如欧洲航天局、世界知识产权组织和联合国等)。他已经出版了几本同行评审的出版物,并成为马耳他的一员。由马耳他政府成立的人工智能特别工作组,旨在使马耳他成为世界上人工智能水平最高的国家之一。**

Apache Airflow 2.0 是否足以满足当前的数据工程需求?

原文:https://towardsdatascience.com/is-apache-airflow-2-0-good-enough-for-current-data-engineering-needs-6e152455775c?source=collection_archive---------6-----------------------

新版本中有什么变化:气流 2.0

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

照片由 Pexels 的 Alexas Fotos 拍摄

几个月前,我写了一篇文章讨论 Apache Airflow 作为 ETL 和数据科学的工作流管理平台的利与弊。由于最近的重大升级,我想更新一下气流 2.0 中的变化。为了全面了解情况,您可能想先看看之前的文章:

目录

air flow 2.0 相对于以前版本的优势
新的 UI 看起来清新而现代
调度程序不再是瓶颈
Airflow 终于有了一个成熟的 REST API
智能传感器
整个项目已经过重组
新的特性没有说服我 通过任务流抽象在任务间共享
新版本中尚未解决的气流弱点
令人困惑的调度逻辑
仍然没有对您的数据管道进行版本控制
配置过载
本地开发
结论

与以前版本相比,Airflow 2.0 的优势

新的用户界面看起来更好

安装 Airflow 2.0 后,您将能够访问比以前版本看起来更好的 UI。新用户界面的主要优势是自动刷新功能— 您不再需要不断刷新浏览器来获取工作流程的最新状态。相反,用户界面会自动刷新,您可以通过单击来停用它,如下图所示。

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

Airflow 2.0 的 UI——图片由作者提供

调度程序不再是瓶颈

您不再需要在触发 DAG 运行后休息一会儿来查看工作流程的进度。与以前的任何气流版本相比,这个调度程序似乎快了好几光年。根据天文学家[6]进行的性能基准测试,调度器现在比以前快了 17 倍(取决于用例)。

最大的(积极的)惊喜是调度程序在超过 100 秒没有接收到心跳后重新启动。

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

调度程序日志—作者提供的图像

气流终于有了一个成熟的 REST API

到目前为止,Airflow 只有一个功能有限的实验性 API。在 2.0 版本中,您现在可以利用完整的 REST API 来创建、读取、更新或删除 DagRuns、变量、连接或池。

如果本地有 Airflow 运行,可以通过以下网址访问 Swagger UI:http://localhost:8080/API/v1/UI/。它为您提供了完整的文档,以便您可以开始在 Airflow 的基础上构建额外的功能,甚至可以使用 Python 之外的编程语言。

智能传感器

传感器很棘手,因为它们不断探测状态,可能会消耗大量资源。在新版本中,Airflow 对传感器的逻辑进行了更改,使其更加节省资源和“更加智能”。对于那些希望将所有工作流放在一个地方,而不是依赖于 FaaS(如 AWS Lambda )的事件驱动用例的人来说,这个特性可能会有所帮助。

整个项目已经进行了重组

Airflow 有一个受欢迎的社区,到目前为止,它允许对操作符、传感器或钩子的库进行贡献,而无需过多考虑这些贡献模块的结构。随着时间的推移,它导致airflow.contrib变得如此之大,以至于依赖性管理,以及下一个版本的计划和测试变得具有挑战性。正如 Jarek Potiuk(气流 PMC 成员)说得好[3]:

除了厨房水槽,所有东西都被扔进了一个“阿帕奇气流”包里,不管你想不想用。

在 Airflow 2.0 中,模块已经根据可以与 Airflow 一起使用的外部系统进行了重组。这意味着,如果您想使用与 AWS 相关的操作符,而不是与 GCP 和 Kubernetes 相关的操作符,那么您只能使用 Amazon provider 子包来安装 Airflow:

pip install apache-airflow[amazon]

这种变化是显著的,因为它允许关注点的分离、特定组件的更快的发布周期,以及可以找到与特定外部系统相关的代码的更清晰的组织结构。从先前版本迁移工作流时,请确保使用正确的导入。例如,代替:

from airflow.contrib.operators.aws_athena_operator import AWSAthenaOperator

您应该使用[4]:

from airflow.providers.amazon.aws.operators.athena import AWSAthenaOperator

看起来不成熟的新功能

有些新的抽象表面上看起来很棒,但需要谨慎对待。

任务组功能

这种新的抽象允许将一组任务视为单个任务。它的动机是许多数据工程师在使用子标记时遇到的低效和错误。尽管这种任务分组在 UI 中似乎很有帮助,但是从设计的角度来看,它并没有解决许多数据工程师试图使用子标记来解决的实际问题,即关注点的分离和分离。

通过任务流抽象在任务之间共享数据

这是一个很多人都很好奇的特性,因为它承诺了数据共享功能,并且应该允许编写简单的 Python 函数而不是 Airflow 操作符。在回顾了这个特性之后,它似乎是这个版本的一个弱点,因为任务流抽象留下的问题比它回答的问题要多。

以下是这些功能(任务流和任务组)的详细概述:

新版本中尚未解决的气流的弱点

令人困惑的调度逻辑

调度逻辑没有任何变化。Airflow 仍然在调度间隔的结束时开始调度工作流,这意味着您的 DAG 不会在调度周期的时间立即启动,而只会在execution_date达到start_date + schedule_interval时启动。

作为最终用户,这对您意味着什么?这意味着,当您看到计划作业的最后一次运行“2020–12–28”是在凌晨 1 点整,如下图所示,这并不一定意味着工作流实际上是在当天凌晨 1 点整运行的,而是作业的执行日期,它是工作流计划周期的开始时间戳。在这段时间结束时触发作业的执行。在本例中,作业实际上是在一天后触发的。仅对于手动触发的作业,上次运行字段将指示作业运行的实际时间戳。

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

计划作业的上次运行时间=执行日期,而不是作业实际运行时间的时间戳-按作者排序的图像

如果您想更多地了解整个调度逻辑,本文提供了一个很好的解释:

仍然没有数据管道的版本控制

存储关于工作流的元数据更改有助于分析随着时间的推移发生了什么变化。使用 Airflow 2.0,您仍然无法跟踪工作流程的版本历史。如果你感兴趣的话,这里有一个关于计划如何实施的提议

配置过载

气流是为了满足许多不同人群的需求而建造的。它可以作为一种工具来协调 Kubernetes 上的容器化工作负载,使用几种不同的技术作为您选择的消息代理,它试图在一个产品中以半灵活的方式完成所有这些工作。这种方法的缺点是增加了复杂性和您需要配置的东西的数量,以便根据您的需要定制工具。作为新用户,您需要学习许多组件和广泛的 Airflow 词汇,以便以正确的方式利用该工具。

例如,您需要了解与前面提到的调度逻辑相关的所有细微差别(包括带有 catchup 的潜在陷阱)、如何编写气流代码的语法、执行器的逻辑、消息代理和芹菜队列、操作符、钩子、XComs、元数据数据库,以及如何将所有这些不同的组件放在一起并维护它们。

你可以说这适用于任何工具。但是气流只是有如此多的特定的(不直观的)词汇和成分,它可能导致一个重要的进入壁垒。除非你学会了这个工具的所有组件和词汇,否则你不可能成为一个有效的用户。这样做可能需要大量昂贵的培训,而使用具有更直观抽象的平台可以避免这些培训。事实上,令人头痛的气流管理可能是工作流编排空间目前出现新的更用户友好的解决方案的原因。

气流如何解决这个问题?如今,抽象出一些与最终用户无关的内部组件可能是有益的。举个例子:作为最终用户,你为什么要关心开始和执行日期?定义您的时间表和部署您的 DAG,并让调度平台处理其余的事情还不够吗?

如果您自己动手,为生产设置气流架构是很困难的

维护气流及其所有组件只需要管理平台和底层基础架构的全职资源。有几家供应商提供商业气流产品。财务上参与这个开源项目的公司要么提供全面管理的气流服务、咨询、培训服务,要么提供所有这些服务的组合。

  • 天文学家 —提供托管服务,在开源版本、企业支持、培训和咨询的基础上提供一些额外的功能,并有几名 PMC 气流成员作为员工为开源项目做出贡献。
  • Polidea —与天文学家类似,它也有几名 PMC 成员,但他们似乎主要专注于维护代码库和提供咨询服务。
  • 谷歌(Google)——提供全面管理的服务:GCP 上的云作曲家服务
  • Amazon —提供完全托管的服务,具有弹性(即自动扩展)工作节点容量的额外优势:Apache Airflow 的托管工作流。本文提供了更多相关信息:

地方发展

使用开源版本的 Airflow 进行本地开发很困难,因为您的本地环境通常与生产中使用的环境完全不同。当使用默认的本地安装时,您可能会遇到许多奇怪的错误。为了使这一过程不那么痛苦,来自天文学家的astro CLI 有助于本地开发[1]。他们的 CLI 允许您初始化一个本地气流环境,该环境旋转包括 Postgres 数据库在内的 Docker 容器。如果您使用他们的商业产品,您可以利用另一个 CLI 命令将 Dag 部署到生产环境中。借助码头化环境,您可以确保开发和生产环境的对等性,这有助于在将 Dag 从开发环境转移到生产环境时避免任何意外。

结论

总的来说,借助 Airflow 2.0,该项目已经达到了允许其用于生产工作负载的成熟水平。与以前的版本相比,该调度程序快了几个数量级,也更可靠。由于将不同提供者的代码分离到子包中,您还可以期待更快的发布周期。

感谢您的阅读!

参考资料&附加资源

[1] 使用 astro CLI 开始指南—天文学家 io

[2] Airflow 2.0: DAG 创作重新设计的 — Polidea

[3] 气流 2.0 提供商——Polidea

[4] 一个新的提供商包的例子—Github 上的气流

[5] Apache Airflow 2.0 在此 —文档

[6] Airflow 的调度程序基准—天文学家 io

[7] 发行说明 —显示了 Airflow 2.0 版本中添加的完整功能列表。

《变形金刚》中你真正需要的是关注吗?

原文:https://towardsdatascience.com/is-attention-what-you-really-need-in-transformers-6c161c2fca83?source=collection_archive---------20-----------------------

实践教程

探索变形金刚模型中自我注意机制的有希望的替代和改进。

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

近年来,基于自我关注的方法,尤其是变形金刚,出现了爆炸式增长,首先出现在自然语言处理领域,最近也出现在计算机视觉领域。

如果你不知道什么是变形金刚,或者你想了解更多关于自我关注的机制,我建议你看看我关于这个话题的第一篇文章。

与以前的架构(如自然语言处理中的 RNNs 或计算机视觉中的卷积网络)相比,变压器的成功与它们以更好的方式解决重要问题的极端效率和能力有关。在变形金刚的基础上,有而且一直都有注意力的机制,被认为是“你所需要的一切”,是这个建筑不可或缺的和真正跳动的心脏。但并非所有闪光的都是金子,事实上,自我注意力的计算带来了巨大的计算和存储成本,例如需要非常大量的视频存储器并导致很高的训练时间。

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

苹果和谷歌等大公司并没有忽视这一点,它们一直在努力制造不仅能够实现最先进效果,而且效率也很高的变压器。

高效变压器

最近,《变形金刚》的联合创作者之一、谷歌的研究员卢卡斯·凯泽(Lukasz Kaiser)提出了一系列改进,让变形金刚在保持自我关注机制的情况下更加高效,而他关注的第一个、可能也是最重要的一个方面就是内存效率。

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

基于高效变压器

变形金刚使用大量内存,因为在它们执行期间会创建和维护多个中间张量,并且随着它们的累积,它们会在缺少大量资源的情况下很快使视频内存饱和。

Google Brain 提出的解决这个问题的方法是避免将所有张量保存在内存中,而是使这个过程的每一步都是可逆的。

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

基于高效变压器

为此,每一步都要维护两个张量,一个来自层的应用,另一个是前一个张量的副本。这允许过程继续,而不必维护整个中间张量链,而只维护最后一步的那些。

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

基于高效变压器

通过这种策略,我们可以显著降低内存成本,同时仍能获得与普通变压器相同的效果。这可能是目前已知的最聪明的方法之一,以保持变压器架构完全基于传统的自我关注,但成本较低。

AFT:无注意变压器

但是在什么情况下,自我关注的计算变得如此复杂而难以管理呢?有没有消除二次复杂度的方法?我们现在真的需要注意力计算吗?这些是苹果公司的研究人员问自己的问题,也是注意力自由变形金刚的基础。

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

问题在于点积,点积用于组合查询、键和值,它是通过将每个输入向量都视为一个查询来完成的。意识到这一点,注意力自由变压器的目的是永远不会点产品,同时保留的好处。

与最初的转换器一样,AFT 最初创建 Q、K 和 V,作为输入与查询、键和值的矩阵的线性转换的结果。

独特之处在于,在这一点上,不是执行点积来创建关注矩阵,而是对每个目标位置执行值的加权平均。这样做的结果通过逐元素乘法与查询相结合。

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

来源:一个注意力不集中的变形金刚

通过这种机制,可以获得依赖于输出特征数量和所考虑序列长度的线性计算和空间复杂度。从概念上讲,这只是一种不同的使信息在序列中流动的方式,但成本要低得多。

通过使用原始变压器在文献中先前测试的许多任务上测试注意力自由变压器,可以看到,例如在图(左)所示的视觉变压器的情况下,从 AFT(右)获得的特征(在这种情况下,是 AFT-Conv 版本)即使被近似也似乎仍然是有意义的。

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

来源:一个注意力不集中的变压器

通过这种机制,不仅可以降低计算注意力的成本,而且在所有考虑的任务中都获得了优异的结果,这表明该解决方案能够保持点积的所有优点,而不需要计算成本。

FNet:傅立叶网络

但也有人考虑完全放弃注意力的计算,转而寻求一种与注意力同样有效但计算成本却不那么高的机制。

看起来傅立叶变换是这项任务的一个很好的候选者。傅立叶变换只不过是在一个域(如时间域)中取一个函数,并将其带入另一个域(如频率域)中。

谷歌提出的基于该机制的傅立叶网络与普通变压器完全相同,但注意力计算模块被一个处理傅立叶变换的层所取代。

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

具有由 T 个记号组成的 N 个输入向量,傅立叶变换首先应用于所谓的“隐藏域”,然后应用于“序列域”。所有这些都是在没有任何类型的参数的情况下完成的,这带来了巨大的优势,因为其他层中存在的参数是唯一可以训练的参数,从而减少了模型参数的数量。

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

因此,转换是线性的,首先按列,然后按行应用于输入。除了通过应用傅立叶变换获得的简单性之外,还有它是可逆的优点。

与 AFT 的情况完全一样,这一系列转换使得序列的各个部分能够相互影响,并且结果是包含从输入序列的各个部分导出的信息的转换表示。

显然,这似乎是一个非常有趣的方法,能够显著降低注意力计算的成本,并获得离散的结果。事实上,FNet 似乎并不比经典变压器更好,可能有其他更好的方法以更低的成本获得类似的结果,但在缺乏大量计算资源的情况下,FNet 可能是一个真正有效的选择。

未来等待我们的是什么?

现在很清楚,Transformer 是一个非常强大的架构,能够以我们从未见过的结果解决最多样化的问题,从翻译到分割到分类。然而,这些问题长期以来一直与它们对资源的过度消耗联系在一起,它们在计算机视觉领域的出现更加突出了这个问题,并促使许多研究人员寻求解决方案。在未来,我们可能会看到基于注意力的变形金刚,但经过优化后变得更轻,或者变形金刚失去了注意力机制,为更近似的技术腾出空间,或者全新的网络,类似于变形金刚,但采用不同的输入变换策略,如傅立叶变换。如果你想做好准备并了解更多,我建议你读一下我写的关于变形金刚 T2 和恐龙 T4 的文章。

有一件事是肯定的,如果目前大多数人还不可能充分利用这种架构,它很快就会为每个人所用,其巨大的潜力加上可访问性将使变形金刚比现在更加普遍和重要。

参考文献和见解

[1]《卢卡什·凯泽》。"高效变压器

[2]《双飞斋等人》。“无注意力变压器

[3]《李中清-索普等人》。" FNet:用傅立叶变换混合令牌"

[4]《扬尼克·基尔彻》。" FNet:混合令牌与傅立叶变换(机器学习研究论文讲解)"

[5]《大卫·柯考米尼》。“关于变压器、定时器和注意事项

[6]《大卫·柯考米尼》。在迪诺上,无标签自蒸馏

云数据科学是未来吗?

原文:https://towardsdatascience.com/is-cloud-data-science-the-future-5d3b1eb40535?source=collection_archive---------38-----------------------

所有的算法会很快运行在云中吗?

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

(图片由 GDJPixabay 上提供)

介绍

一年多来,我一直想在我的博客上讨论云中的机器学习和数据科学。问题是我觉得我对这个软件领域的一个组成部分——集成开发环境(ide)本身没有足够的了解。当然,作为程序员,工具很重要。每个人都有自己选择的 IDE 或文本编辑器。正如我的读者可能知道的,我更喜欢 Atom 作为基于 GUI 的文本编辑器,然后我喜欢使用 GNU Nano 作为我所有的终端文本编辑会话。

然而,随着人工智能和数据科学服务在过去几年中的激增,我们已经看到越来越多的新平台推出,这些平台希望利用云计算的便利来赚钱。有一大堆可用的工具,其中一些可以成功地创建一个完全有效的开发环境,在这个环境中,用户永远都不需要下载文件。

这方面的一些东西总是引起我的兴趣,所以我开始在 Julia 中制作我自己的笔记本服务器会话。我仍在编写该模块,实际上我对此非常兴奋——因为它将与我正在做的许多其他工作结合在一起。今天,我想参观一下基于云的数据科学 IDE 的世界,并讨论我是否认为数据科学会议可以完全转移到 web 上。

计算机

让我们绕一会儿弯路,谈谈计算机。我的意思是,计算机毕竟是数据科学工作流程中非常重要的一部分。计算机正朝着更薄的方向发展,几乎没有挡板,也不包括大量的硬件。这并不是说现在没有 15 英寸的大笔记本了,只是这种电脑远没有那么受欢迎。因此,今天可能使用的大多数计算机可能是更小的外形、学校、工作、上网本和笔记本电脑。其中一些可能运行 WebOS,比如谷歌 Chromebook。

有趣的是,虽然完全有可能在 Chrome books 或任何类似这样的轻量级笔记本电脑(或在某些情况下,手机)上进行数据科学研究,但重点当然仍然是网络浏览器。这里真正的问题是,考虑到我们现在必须使用的所有基于网络的解决方案来进行科学研究,这样的笔记本电脑对于数据科学家的日常使用是否可行。答案可能有点复杂,但是考虑到今年以及 IDE、计算机和服务器的技术水平,现在可能是开始考虑使用服务器而不是笨重的计算机的好时机。此外,如果您想了解更多关于将 Chromebook 转变为数据科学机器的信息,我实际上在大约 2 年前写了一篇文章,在这篇文章中,我使用了一台联想 C330 Chromebook,并且能够在 ARM-64 处理器上运行我所需要的一切,您可以在这里阅读:

优点和缺点

很难不谈论 CloudML,远程进行数据科学确实有很多优势。对于这些优势,我将积累不同类型的 IDE、服务器和设置可能提供的优势。对于多台计算机或多个环境的用户来说,一个显著的优势可能是远程环境将所有东西都放在一个地方。在我的例子中,我的局域网(LAN)上有大容量存储,我可以从地球上的任何地方通过路由器上的转发端口 SSH 到其中。

明确地说,这仍然符合云计算的定义,因为我是通过 SSH 在互联网上执行文件的。这涵盖了在您自己的服务器上做一名系统管理员的全部想法。您可以构建一个坚固的服务器,然后在其上启动您的笔记本会话,您甚至可以拥有一个始终运行并随时可用的笔记本服务器。老实说,对于这种事情,人们可以有很多很酷的选择和长度——可能性是无穷无尽的。

也就是说,不是所有人都知道如何管理 Linux 服务器,尽管他们可能应该知道。幸运的是,这些人在互联网上还有其他选择。一个这样的选择是 Google Colab,它可以用你的 Google 帐户立即启动一个完全远程的虚拟笔记本会话,然后将这些文件保存到 Google Drive——甚至 Github。Github 的交互性,以及诸如此类的东西将成为一台不想做下载文件之类事情的机器的巨大推动力。也就是说,Colab 可能是这种设置的最佳选择之一,但仍然存在问题。

Google Colab 有许多令人惊叹的功能,而且访问起来非常方便。然而,Google Colab 的规模是静态的,这是有问题的。在你回到无处计算的起点之前,你只能使用这么多的磁盘和内存。这给 Google Colab 带来了一个可能——我认为 Colab 的有效性很可能与项目实际涉及的数据量有关。只需加载一个数据帧,就可以达到 Colab 的极限,因此很容易理解为什么会有问题。

当然,云计算、数据科学笔记本等其他平台也在发展。然而,除了 Colab,几乎所有的都需要付费。根据我的经验,这种计算的成本通常都很高。因此,我对数据科学家是否可以只为他们的项目使用云有一些想法…

当他们的所有数据都在云中时,还会遇到一些基本问题。当然,在某些情况下,可能会丢失数据或无法访问数据。所有东西都在互联网上的坏处是,如果没有互联网,就没有所有东西。我认为这可能是人们最大的担忧。

你应该只用云吗?

这个问题仍然存在…作为一名数据科学家,完全转向云计算是个好主意吗?在大多数情况下,答案肯定是否定的。然而,我确实认为肯定有一些很好的方式,人们可以使用服务器来受益于数据科学。然而,我认为在某些情况下,只使用云是一个好主意。请考虑以下规格。

数据科学家…

  • 有权访问他们的默认网关。
  • 可以转发端口。
  • 有备用计算机或服务器。
  • 有服务器管理经验(或者了解 Linux)。)

考虑到这些条件,可能有一些服务器上的事情你不能做!也就是说,有了合适的工具和专业知识,肯定有办法在当地实现这一目标。话虽这么说,这一切还是围绕着兰的想法。我只是不认为有任何服务器可以让人们获得自由和灵活性来创建真正的数据科学应用程序、算法和发现。这在未来可能会改变,真的我们只需要等着看行业走向。

结论

数据科学令人兴奋的一点是不断有新的事情发生。拥有一个先进的数据科学设置可以提高生产力,并使一个人的工作容易得多。我计划用我的新软件包 Jockey.jl 使我的个人数据科学生活变得容易得多,我完全可以看到我自己建立一个网络服务器,供我网络中的所有计算机访问。也就是说,我不是每个数据科学家,也不是每个数据科学家都了解 Bash。关于数据科学需要特别注意的一点是,它是一套多样化的技能,因此数据科学家通常来自这些技能范围内的各行各业。我可能比其他人更擅长做这样的事情。出于这个原因,我对 Jockey 的未来感到兴奋,因为 Jockey 应该非常容易使用——一旦软件包完成,我可能会考虑只使用云服务。

如果您想了解 Jockey.jl 的更多信息,因为这个包还处于早期阶段(我仍在开发后端来处理所有的会话数据),您可以查看 Jockey.jl Github 并查看我存储在那里的代码和文件。

https://github.com/ChifiSource/Jockey.jl

谢谢你读这篇文章,它对我来说意味着整个世界。我希望在数据科学和人工智能方面有一个伟大的未来,希望这些项目有助于这样的事情。祝您有美好的一天,祝您数据科学工作愉快!

D3.js 有看起来那么难吗?从头开始创建数据探索应用程序

原文:https://towardsdatascience.com/is-d3-js-as-hard-as-it-looks-creating-a-data-exploration-app-from-scratch-c87dafb04c90?source=collection_archive---------25-----------------------

比较电影平台——TMDb 与 IMDb

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

Unsplash 上由 Myke Simon 拍摄的照片

JavaScript 的 D3 库以其创建交互式和/或动画可视化的灵活性和功能以及陡峭的学习曲线而闻名。

这个库是由 Mike Bostock 开发的,他也提供了大量高质量的可视化及其代码。这些例子可以在官方网站这里找到。我发现这些可视化示例是很好的资源,甚至可以用来集思广益,决定哪种类型的可视化更适合您的目的,不过,主要的力量来自所提供的代码,这些代码在理解了一些 D3 基础知识后可以很容易地进行修改。

真的有看起来那么难吗?

事实上,与其他数据可视化工具相比,初始投资成本更高,尽管我认为这个库的难度被夸大了。当我开始学习 d3(通过直接开始一个可视化项目)时,我甚至没有任何 JavaScript 方面的经验。我想说的是,在学习了一些概念(如数据连接、进入、更新、退出循环)后,事情变得非常清楚,甚至非常复杂的动画/交互式可视化也变得非常容易实现。

那这个项目是什么?

这是一个数据探索和可视化项目,是不久前作为作业完成的。这是关于创建一个数据可视化工具来比较电影和电影数据库。

我们都熟悉 IMDb 这是一个盈利组织,另一方面, TMDb 是另一个众包平台。我最初想调查他们的用户的电影口味之间是否有任何显著的差异。因此,我开发了这个应用程序。

我在下面添加了可视化的链接,你可以去发现什么类型的电影受到社会的喜爱,或者为他们幸运的制片人带来更多的利润。

http://anilgurbuz.com/visualisation/Page2.html

PS:我知道网页的设计违背了所有的启发法,但是当时唯一的担心是可视化的设计。

在下一部分中,我将尝试解释我在项目中使用的 D3 的一些方面,并希望它能对一些在网上寻找什么是进入-更新-退出循环的初学者有所帮助——我们都经历过。

如何使用 D3 创建交互式/动画可视化?

显然,这是一个非常宽泛的问题,可能有很多答案,但所有这些答案都需要首先学习 D3 如何将数据绑定到 DOM 元素。因此,我们会研究一下。

如果你问自己什么是 DOM 元素,这个链接可能有助于理解 DOM 的概念。简而言之,DOM 元素是一个存储网页中对象的容器,是的,D3 将数据分配给这些容器,因此我们可以使用该数据的任何维度对网页/容器/DOM 元素的相应部分进行更改。

D3 里如何控制数据绑定?—进入、更新、退出循环

我们通过一个 3 步的过程控制数据绑定到 DOM 元素;
进入-更新-退出循环。

  1. 在 Enter 步骤中,我们选择没有匹配 DOM 元素的数据,并创建新的 DOM 元素来分配所选数据。
  2. 在 Update 步骤中,我们选择被绑定的 DOM 元素和数据,并由于 DOM 元素的现有绑定数据的任何变化而更新所选 DOM 元素的属性。这一步要求 DOM 元素和匹配数据都存在。
  3. 退出是我们选择没有匹配数据的 DOM 元素并删除这些 DOM 元素的步骤。

进入-更新-退出循环

在这个可视化中,我们将创建 DOM 元素来渲染散点图中的圆圈,绑定数据将是关于电影的,因为图中的每个点将代表 IMDb 或 TMDb 中的一部电影。

让我们看看应用程序的一些用户动作和相应的反应,以了解数据绑定如何控制所有这些动作-反应循环,然后我们将查看代码。

在此处再添加一次链接以访问应用程序。

http://anilgurbuz.com/visualisation/Page2.html

用户使用滑块或按钮过滤数据

  1. 当用户使用 gif 中的滑块过滤数据时应用程序的反应:
  • 反应 1.1:重新缩放 x 轴,以在 x 轴上为新点集获得更合适的值范围。
  • 反应 1.2:移除(点的下落)和增加点(从顶部落入可视化)。

用户悬停点

2。当用户悬停在 gif: 中的& off 点时应用程序的反应

  • Reaction2.1:发出一个 API 请求,构造响应,并呈现由悬停点表示的电影的海报和元数据。
  • 反应 2.2:增加悬停点的不透明度。
  • 反应 2.3:当用户悬停时,回滚到可视化的初始状态。

密码

下面的代码显示了“render”函数,每次用户通过过滤数据进行更改时都会调用该函数。此代码包括散点图圆圈的整个进入-更新-退出循环。

代码中的一些变量:
d:
将要呈现的数据。它存储电影的利润、评级、投票数信息。海报图像不包括在这个加载的数据集中,因为这些图像是通过 API 请求与用户动作同时获得的。
xScale: D3 缩放对象。从技术上讲,是输入数据值到轴值的映射器。

重新缩放 x 轴

我们首先通过改变映射器的域来重新调整 x 轴(反应 1.1),以便我们的 x 轴将只包括过滤用户后保留的值。比如用户想和 Min 一起看电影。利润 6 亿美元,那么,借助代码第 5–7 行的修改,x 轴将从 6 亿美元开始。

但还有一点,我们不希望我们的轴只是消失,并重新出现一个新的值看起来平滑。因此,transition.duration(1000) part 使 DOM 元素的变化在一秒钟内发生,而不是立即发生。—在这种情况下,DOM 元素是“xAxis”。d3.select()选择的元素。

进入阶段

这个阶段从这个代码的selectAll("circle").data(d)开始,我们选择现有圆圈的所有 DOM 元素,然后给每个圆圈分配一行数据。使用enter()之后的命令,我们为没有任何绑定 DOM 元素的数据创建一个新的圆圈。例如,如果我们在图中有 100 个圆,我们改变了过滤器,使其为 150,这意味着我们的数据点比 DOM 元素多。这是在进入步骤中通过创建 50 个额外的 DOM 元素(“圆圈”)来处理的,以便与手边的数据匹配。

如上所述,enter 是我们为没有有界 DOM 元素的数据创建新 DOM 元素的步骤。append("circle")是创建这些新元素的命令,然后我们指定这些圆的属性。例如,attr("cx",d=> xScale(d.Profit))指定圆的“cx”属性,这是数据“d”的“利润”属性。xScale 将原始利润值转换为绘图中的坐标。

.on("mouseover"...可以被认为是这些圆圈的另一个属性,它描述了用户悬停时 DOM 元素的反应。我们已经提到了反应 2.1 和反应 2.2。因此,通过为“mouseover”属性定义一个函数来实现这些反应。

使用 d3.json()函数,我们发出一个 API 请求,并获取电影海报下呈现的海报图像和信息。这样,我们就不用在服务器上保存海报图像,当用户悬停在一个圆圈上时,就可以立即从 API 中获取。

showPoster 是我实现的一个函数,用来调整海报图像的大小并渲染它。这个函数也在.on("mouseout"...中使用,当用户把鼠标从圆圈中拿出来时,不渲染任何东西。另外,.on("mouseover"...)中的d3.select(this).on("mouse out"...选择用户悬停的 DOM 元素。

更新阶段

这是更新现有 DOM 元素属性的步骤。如果在 d3.select 中选择了一个 DOM 元素,这个步骤将数据的变化反映到 DOM 元素的属性中。更新步骤没有关键字,可以在输入步骤之后通过选择已经与数据绑定的现有 DOM 元素来启动。只有当数据和 DOM 元素都存在,并且数据发生变化时,这一步才会发生变化。

退出阶段

如果 DOM 元素没有附加数据,我们将在这里删除它们。当我们通过向右移动奥斯卡雕像来应用滤镜时,这种情况就会发生。我们过滤数据,所以一些 DOM 元素的数据被过滤了。因此,这些 DOM 元素在这一步被删除。

Mycircle.exit()选择过滤了数据的圆,使用attr("cy",...,我们在remove()命令前改变这些圆的位置。我们还使用了transition().duration(1000),所以这些点的 y 轴值不会立即改变,尽管这些点会在 1 秒钟内转换到新的位置。这样,我们可以使点像反应 1.2 中描述的那样下落,而不是消失。

结论

进入-更新-退出阶段只是代表了我们选择没有 DOM 的数据,数据和 DOM 都有对方,或者没有数据的 DOM 元素的步骤。通过这种方式,我们可以控制数据— DOM 元素绑定并操纵 DOM 元素的属性。这个概念在开始的时候可能有点混乱,但是一旦你明白了,它看起来就很直观了。

数据分析也适用于中小型公司吗?

原文:https://towardsdatascience.com/is-data-analytics-also-available-for-small-and-medium-sized-companies-677356b92867?source=collection_archive---------32-----------------------

关于分析如何帮助中小型企业提高绩效的一些提示。

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

Austin DistelUnsplash 上拍摄

MEs 在一个高度动态和竞争日益激烈的市场中运作。提高和保持盈利能力和竞争优势的压力一直存在。他们必须应对不断增长的客户需求,以维持自己的地位。

随着中小企业在发展和创新方面面临越来越多的挑战,一种业务友好的方法,特别是一种专注于数据分析(DA)的方法,可以用来帮助企业采取正确的措施,在日益复杂和混乱的世界中保持相关性和竞争力。

什么是数据分析,它如何帮助中小型企业?

数据或业务分析可以用简单概括的方式来解释:DA 将大数据技术和原理与高级统计、算法和商业智能工具相结合,从海量数据中获取商业价值,并提供对关键业务问题的客观分析。

这些只是分析可以为中小企业带来的众多好处中的一部分:

消除不必要的开支:许多企业在营销、广告、企业对企业关系和其他通常不相关的成本上花费数百万美元。然而,分析允许公司监控对成功至关重要的最具成本效益的资源。通过只关注重要的支出,他们可以降低总体成本,并使他们的产品和服务对客户更具吸引力。

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

Damir spanickUnsplash 上拍摄的照片

更好的服务质量:当客户投诉增加时,公司可以使用分析工具轻松识别问题。这样,他们可以快速开发新的程序来避免这种情况,并使服务更合适。

多元化和全球化:分析的另一个好处是,公司能够专注于核心业务,而不是只关注活动的小方面。这意味着,在分析数据时,他们将能够发现每个市场的需求,并适应它们。当一家小型企业发展壮大,需要关注越来越多的服务和客户时,他们可以很容易地跟踪他们的销售额和利润率,这在大型企业中是非常困难的。

更好的客户服务:客户的要求越来越高。他们希望企业能够理解他们的需求,并提供高质量的服务。分析将帮助公司了解他们的客户群,因此他们将能够根据他们的反馈改进他们的业务。

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

Amy Hirschi 在 Unsplash 上的照片

更高效的业务流程:分析的一个重要好处是它能够帮助企业变得更加有效。DA 广泛用于改善业务流程,如生产、客户服务和库存管理。这是通过关注过程、理解它们是如何工作的以及识别它们的弱点来实现的。

最后但并非最不重要的是,商业风险管理的实质性改善,这对中小企业来说至关重要,因为大公司在大多数情况下都有迅速从错误中恢复的财务能力,但对较小的公司来说,情况就大不相同了。

处理业务不确定性的最佳方式之一是实施基于数据分析的特定技术。例如,异常检测在生成业务洞察和维护核心运营方面发挥着至关重要的作用。对异常情况的及时检测可以帮助您防范风险并遏制其对业务的累积影响。

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

约翰·莫塞斯·鲍恩在 Unsplash 拍摄的照片

如果没有具备这方面知识的员工,中小企业如何从这些新方法中受益?

如上所述,分析应该是任何业务的核心,但经理们经常忙于日常运营问题,不知道如何或几乎没有时间分析做出更好决策所需的数据。

在中小型公司中实现数据分析的最有效方法之一是通过经验丰富的业务顾问的服务,他们将指导您应用定义良好的流程和以业务为导向的方法,这将保证更好的结果。业务分析顾问将通过订购和分析数据来确保持续的进展,以 360 度的视角改善您的业务。

中小企业实施分析的主要限制是,他们认为这些新方法只适用于大公司,或者他们没有足够的资源来处理这种性质的项目。

当然,这些类型的服务在过去非常昂贵,至少从中小企业的角度来看是如此,但是随着新技术(计算能力、存储容量、云服务等)的进步。)这些解决方案越来越容易获得,只需很少或不需要硬件或软件投资,而且相对于它带来的好处,价格非常合理。

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

Unsplash 上的 krakenimages 拍摄的照片

DA 流程是如何工作的?

数据分析通常从业务的一般描述或诊断开始,然后应用一个过程来帮助详细了解主要限制、改进选项以及如何将数据分析作为一种新的管理方式,从而在您的行业中产生显著的竞争优势。

DA 流程通常遵循以下步骤:

1.确定并描述你的业务需求。

2.评估您当前的数据

3.确定数据来源

4.寻找潜在的分析方法和模型

5.测试想法和模型

6.实施解决方案

需要注意的是,这个过程不是线性的,相反,它永久性地回到前面的阶段进行改进。

一旦这一过程完成,就有可能评估企业在哪些方面可以提高效率和资源利用率。这种方法不仅允许中小企业监测、衡量和跟踪其业务的进展,而且它们还可以试验一些变化并快速衡量其有效性。

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

照片由 Myriam JessierUnsplash 上拍摄

与传统方法相比,数据分析有几个关键优势。它允许在跨多个异构数据库管理大量数据时实现更高的速度、可扩展性、适应性、效率和灵活性,从而实现更主动的信息管理策略。

这种方法可以帮助中小企业发现新的有利可图的商业机会,更好地评估风险,清楚地了解客户及其购买行为,更有效地了解竞争格局,从而为中小企业带来竞争优势。

DA 可以帮助中小型企业通过提高效率和寻找新方法来节省大量资金,从而变得更高效、更有利可图,最重要的是,变得更加成功。

数据网格适合您的组织吗?

原文:https://towardsdatascience.com/is-data-mesh-right-for-your-organisation-adde60786576?source=collection_archive---------34-----------------------

如何知道您的组织是否真的准备好深入数据网格?

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

照片由 马里奥·高

在上一篇文章中,我们讨论了像野火一样在数据社区中传播的新企业数据架构— 数据网格架构。我们提到,它代表了数据架构中的一种范式转变,数据行业也随之转变,从优先考虑集中式、整体式数据湖和数据库的大规模数据团队转变为优先考虑数据域和数据产品的一等公民。

简而言之,它呈现了分布式领域驱动架构、自助服务平台设计和数据化产品思维的融合。为了更好地理解这一概念,我们与 Data Edge 的合作伙伴管理顾问 Daniel Tidströ进行了交谈,他至少在相当长的一段时间内一直从事数据网格的部分工作。

丹尼尔解释说,当公司快速扩张时,数据网格变得至关重要。随着数据源和数据消费者的激增,让一个中央团队来管理和掌控数据接收、数据转换以及向所有潜在利益相关方提供数据,将不可避免地导致扩展问题鉴于数据在我们的组织中日益重要,为可扩展团队和可扩展平台进行设计至关重要,”Daniel 解释道。

关于数据网格,他提到的一件重要的事情是开始讨论数据的分布,因为数据创建在所有公司中都是固有分布的。“随着数据源的数量每天都在增长,许多组织可能至少应该考虑一下他们的扩展选项。

对于想知道数据网格是否适合他们的公司,丹尼尔建议,如果你有领域驱动的开发,开始使用微服务,或者如果你进行云迁移,这是一个考虑它的好时机。

Monte Carlo 的联合创始人兼首席执行官 Barr Moses 表示,面向领域的数据架构,如数据网格,为团队提供了两个世界中最好的东西:一个集中式数据库(或分布式数据湖),其中的领域(或业务领域)负责处理他们自己的管道。这样,数据网格通过将数据架构分解成更小的、面向领域的组件,使得数据架构更容易扩展。

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

来自派克斯派克斯的照片

数据网格对所有类型的组织都有意义吗?

在采访中,Scling 的创始人 Lars Albertsson 将数据网格描述为扩展大型数据组织的一种方式,在大型数据组织中,由于在数据平台中工作的团队数量众多,数据管理和治理变得非常具有挑战性。

“通过将数据管理和治理联合到拥有数据源和数据管道的团队,数据网格可以让公司进一步扩展,”Lars 解释道。

采用大数据和数据运营的公司在多年的时间里经历了围绕数据的组织结构的几个阶段。在早期阶段,有一个团队或几个紧密协作的团队使用单个数据平台,其中的核心组件通常是与批处理管道相结合的数据湖,潜在地补充了流处理能力。

大多数公司要么处于这些早期阶段,要么还没有建立起他们的第一个数据平台。越来越多的数据成熟公司已经成功地将数据创新扩展到先锋团队之外,并将数据处理能力大众化。为了促进数据民主化并使治理易于管理,数据平台技术和开发流程保持同质。Lars 补充说,通常会有小的变化,但是如果熵没有得到控制,过度的摩擦将会阻止数据民主化。

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

照片由西格蒙德Unsplash 上拍摄

集中式数据平台可以扩展到大型组织。对于其文化难以扩展集中式服务的公司来说,集中式数据治理可能被视为一个瓶颈。在这种情况下,数据网格可以通过分配治理责任来进一步扩展。在实践中,数据网格化身是一个数据平台和湖,它被分成多个池和多个处理环境,由不同的团队控制和操作。Lars 解释说,数据网格的大小取决于公司协调中央数据平台的能力。

最后,Lars 指出,数据网格并不是扩展到大量团队的唯一选择;有足够能力协调数据管理的公司可以保持一个集中的数据平台,避免分散化的开销。

阅读 Lars Albertsson 的全部采访内容

然而,如何知道您的组织是否真的准备好深入数据网格?为了帮助公司做出决定,Barr Moses 和她的团队以调查的形式为公司创建了计算,以确定你的组织投资数据网格是否有意义。通过回答有关他们的数据源、数据团队、数据域、数据工程瓶颈、数据治理和数据可观察性的问题,他们会得到一个分数,帮助他们决定是否应该采用数据网格。您可以在蒙特卡洛首席执行官 Barr Moses 和蒙特卡洛首席技术官 Lior Gavish 撰写的数据网格实施指南中找到计算方法。

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

照片由马太·亨利

数据网格和数据操作的未来展望

Data Mesh 和 DataOps 都将在未来十年颠覆数据和分析行业。但是他们会进步并改变组织吗?

关于上述内容,Lars 表示,与传统公司相比,完全采用 DataOps 的组织在处理数据方面的效率要高出 10-100 倍。尽管这些特征是基于对成熟度范围内许多公司的观察而做出的主观估计,并且没有针对数据运营的科学测量,但 Lars 表示,它们与不同 DevOps 成熟度水平的公司的科学测量运营指标相匹配,如 DevOps 报告的状态所示。数据运营在新想法的交付时间和出现故障时的恢复时间方面似乎具有类似的效果。

"这种效率差距如此之大,以至于具有破坏性."DataOps 实际上是从机器学习技术中获得可持续价值的一个要求。构建和运行机器学习应用程序,保持它们的健康,并进行迭代以不断改进它们是复杂和昂贵的。Lars 说,没有实现高水平数据成熟度的公司可能会碰上一两次运气,但无法以可持续和可重复的方式提供人工智能创新。

与此相反,Lars 表示,数据网格不是一个颠覆性的概念,但它是数据非常成熟的大公司进一步扩展的一种方式。“这些公司已经从数据中获得了颠覆性的价值,并完全采用了机器学习技术。”

拉尔斯认为令人担忧的是,围绕数据网格的大部分讨论是在尚未达到这一成熟度水平的公司之间进行的。

“过早采用数据网格可能是有害的;如果您尚未在数据平台中建立强大、同质的约定和流程,那么分散化将会引入异构性,从而减缓创新并阻止有效的数据民主化。”

Lars 认为,对于大多数组织来说,采用数据网格实际上可能是一种倒退,并重新引入大数据时代之前的数据孤岛。“对数据网格的描述倾向于强调拥有数据的团队有责任将干净、高质量的数据作为数据产品发布,这种模式也被称为数据中心。”

他说,将数据质量改进的责任转移给拥有领域专业知识的团队通常是一个好主意,也是迈向数据成熟的一个进化步骤,但基础原始数据也必须可用。

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

照片由 Anyrgb

为了澄清,Lars 举了无效金融交易的例子,对于财务报告的情况来说,可能需要清除这些交易,但它们可能是欺诈检测信号的金矿。“将原始数据隐藏在筒仓中是数据中心的一个缺点,也是采用数据网格时的一个重大风险,除非公司首先在一个集中式平台中建立强大的数据民主实践。因此,我担心围绕数据网格的讨论将是有害的,并诱使数据不太成熟的公司建立数据孤岛。”

与此相反,DataOps 没有这种风险。“如果您的公司能够让拥有不同技能的人很好地合作,那么只会带来好处,并会加速您的数据成熟之旅。”

您有过实施数据网格的经验吗?请在下面的评论中分享你的想法。

原载于 2021 年 1 月 28 日 Hyperight.comhttps://hyperight.com/is-data-mesh-right-for-your-organisation/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值