TowardsDataScience 博客中文翻译 2020(九百九十)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

你的车值多少钱?

原文:https://towardsdatascience.com/whats-your-car-worth-a-simple-tour-of-used-car-prices-using-linear-regression-eda-section-e98f89804dd6?source=collection_archive---------21-----------------------

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

一个简单的旅游二手车价格使用线性回归,EDA 部分。

今天,我们将从我的熨斗体验中稍作休息,投入到我在熨斗工作时参与的一个项目中。线性回归是当今数据分析领域最常用的工具之一。结果是清晰的,易于编译(通常),并且易于翻译。它所做的是绘制数据点,并尝试确定可能会或可能不会影响每个数据点沿着某个基线下降的能力的因素。它还可以用来确定几乎任何事物的趋势和预测。这绝不是一个突破性的项目,但更多的是在日常车主面临的实际问题上使用线性回归的有趣练习。我的二手车值多少钱?

那么让我们来谈谈二手车吧?我承认,这不会是一个长时间的讨论,因为我对汽车知之甚少。所以这将是一个对汽车知之甚少的人对汽车及其特征的分析。让我们开始吧!

第一步是收集数据。我和我的搭档奥玛尔去 Cars.com 凑钱买车。为了避免被屏蔽和破坏我们的项目,我们从他们的网站上搜集了 3055 个二手车列表。所有的房源都位于距离邮政编码 10004 不到 10 英里的地方,我们对所有品牌和型号都开放。车型年份限定为 2014 年至 2018 年。我们假设比那更老的车会进入真正的竞争领域,或者那些列表会进入独特或古董列表,所以我们想避免污染我们的数据。我们收集的信息分为以下几类:

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

现在,这似乎是很多信息。我们立即放弃了内饰颜色、库存、VIN 和装饰,因为我们觉得前三个与汽车的转售价值基本无关,最后一个有太多的 nan。很容易想象有人可能会有购买红色汽车的动机,但只要内饰不太过分,没有人真的在乎内饰是米色还是黑色。库存由一个字母数字代码组成,我们认为这是特定于品牌的,我们认为与品牌相关,但与其他汽车没有太大关系,除非特定库存有一些明显的问题。请记住,我对汽车几乎一无所知,所以如果你们中的任何人认为我错了,请尽一切办法让我知道。

现在我们有了新整理的数据,下一步是对它进行一些清理。我们从排除任何主要的数据问题开始。例如,有人列出了一辆特斯拉,其城市英里数为 102,公路英里数为 105。我们不准备评估他们每加仑汽油的具体指标,也不认为这是与我们 3000 辆其他汽油车的适当比较。接下来,我们删除了没有列出年份的条目,将年份转换为 2019 年之后的年数,并确保我们所有的数字都是整数,以便正确建模。最后,我们留下了 2677 个条目,包括 13 个特征、4 个连续特征和 9 个分类特征。

EDA

让我们看一看我们得到了什么,好吗?首先,我们检查了我们挑选的品牌,看看哪些汽车在二手市场上最常见:

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

对我来说,这个饼图很有意义。出于某种原因,我们看到许多以日产为首的中档汽车,但也包括其他日本制造商。有趣的是,在福特或现代之前,梅赛德斯占我们二手车市场的 6.0%。有趣的是,这是否与这些汽车的整体市场占有率有关,或者梅赛德斯或其所有者是否有什么东西鼓励在前 4 年内转售。例如,也许购买奔驰的人痴迷于形象,总是想要一辆更新更闪亮的车。或者,也许梅赛德斯经常生产升级版汽车,足以吸引人们购买最新款。其他有趣的可视化包括检查 city_mpg、highway_mpg 和 price 的分布,如下所示:

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

我很肯定,尽管我们的样本量很小,但这是当前行业趋势的一个非常准确的快照,当谈到 mpg 时。如果你想知道什么车是最出彩的,那些在城市和公路上都超过 40 英里的车都是混合动力车。那些在城市中低于 20 英里/加仑的主要是 SUV 和现代 Genesis。那些在公路上低于 20 英里/加仑的是 SUV,但不包括现代 Genesis。我认为这值得大笑一场。

从这个初步分析中可以挖掘出一些精华。数据的可视化有助于我们从一些谷壳中分离出小麦。我不需要滚动数据来寻找奇怪的数字,图表告诉我很多我需要关注的地方。我也知道,也许现代 Genesis 并不适合像我这样想要超值而不是奢华的人。

以下是一些更有趣的图表,显示了我们正在合作的几个品牌的价格分布:

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

哇,这真的给你的车的未来价值带来了有趣的启示。本田轿车的平均价格在 16-30k 左右,而当你看他们的 SUV 和卡车时,价格会接近 40k。这个分布看起来很有希望。尼桑也是如此。当我们进入豪华车的范畴时,分布开始看起来绝对热闹。以玛莎拉蒂为例。所有 5 款车型均为 2016–2017 款玛莎拉蒂 Ghibli:

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

现在谷歌告诉我,这些汽车在 2020 年的零售价约为 10.1 万美元。三年后,你可以用本田雅阁的价格买到这些车。在最好的转售情况下,降幅为 59%。现在让我们来看看保时捷。

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

保时捷卡宴 S 今天的零售价为 11.6 万美元满载。在同一时间段内,2016 款 Cayenne S 的零售价为 48,594 美元,仍超出本田的范围,降幅为 58%。让我们看看那辆奔驰!

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

梅赛德斯 S550 显然不再生产了,所以我们来对比一下更贵的 2020 S560 4matic。这款车的零售价约为 12 万美元。以 72,901 美元出售的条目 2031 显示在 4 年中价值仅损失了 39%!我的意思是,这不完全是苹果对苹果,但也不完全是苹果对橘子。

好了,我想我就此打住。EDA 非常有趣,我可以花几个小时来观察可视化效果和处理数据,寻找新的关系。我知道我承诺了线性回归,但我想我今天已经吸引了你们足够的注意力。此外,我们希望使用回归来预测二手车的价格,而不是计算具有最佳转售潜力的汽车。下周我们将进入线性回归和我们发现的一些有趣的系数!此外,如果了解汽车的人可以加入他们的观察,我很乐意了解更多关于这一切是如何工作的!

续在你的车值多少钱第二部分!

你的车值多少钱?—现在有了线性回归和相关!

原文:https://towardsdatascience.com/whats-your-car-worth-part-2-ee0500d5c997?source=collection_archive---------23-----------------------

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

埃里克·麦克林在 Unsplash 上的照片

你的车值多少钱?

相关和线性回归时间!

你好你好,欢迎回到我的线性回归价格预测。上周我们检查了一些汽车的 EDA,发现玛莎拉蒂的转售价值非常糟糕。简单回顾一下,我们从 Cars.com 搜集了数据,将我们的车型年份限制在 2014 年至 2018 年,清理了我们的数据,去掉了我们认为对我们的车型没有用的东西,并拍了一些品牌及其转售价值的快照。

下一步,建立我们的线性回归!对于那些想跳到最后看看模型运行的人,我已经把它上传到 heroku,点击这里

初始步骤

因此,在进行线性回归时,你需要做的第一件事就是确定是否有任何显而易见的关系可以用来确定你的最终结果。我们这个模型的目标变量是价格,幸好它是一个连续变量,所以我们不必转换它或做任何疯狂的事情。那么什么可能和价格有很好的关系呢?马上,我可以说我们的 years_old 列可能有很好的相关性,mileage 也是一个很好的相关性。

所以我们有一些理论,但是当然熊猫和 matplotlib 帮助我们简化了这个过程。一个简单的 df.corr()为我们提供了以下内容:

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

对于那些更倾向于视觉的人来说,sns.heatmap()也会给我们带来一些不错的结果:

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

鉴于我们正在与二手车价值市场合作,看到负相关性是有意义的。例如,汽车行驶的里程越多,价格就越低。这是有道理的。有趣的是,城市英里数和公路英里数之间有很强的负相关性。人们会认为一辆 mpg 更大的车会有更好的转售价值,但事实显然不是这样。我对此的理论是,那个时期的汽车是在人们仍受经济衰退影响的时候生产的,而且汽油更贵。但现在汽油价格下降了,人们更关心其他汽车功能,高 mpg 对 2019 年的买家来说没有那么有价值了。我想对话是这样的“哦,看,这是一辆很酷的车,低里程,而且不太旧。哦,它有一个高城市英里?我想这很酷。”请注意,city_mpg 中的相关性比 highway_mpg 中的稍弱。或许这与优步在纽约为优步出租车融资的浪潮有关?

热图很酷,但我发现 sns.pairplot 在确定相关性方面更有帮助,如下所示:

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

现在这绝对酷多了。我们实际上可以看到相关性的强度……它们并没有那么大。但是!他们肯定给了我们一个开始寻找的地方!让我们仔细看看。

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

我们最初的相关性属于茄子、辣椒和花的标准模式。开玩笑,那些并不是真正的标准模式,事实上,它们并不擅长帮助我们建立模型。有趣的是,我们看到了一些异常值,一些价格最高的汽车,例如 city_mpg 和 highway_mpg,分别在 20 和 30 mpg 线之后。里程(或花)到处都是,但你可以看到 50,000 英里线后面的高度集中。

对这些数据进行线性回归并不能真正帮助我们开发模型。看看我们用 OLS 得到了什么:

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

不是很有希望,我们的 R 值,或者解释数据差异的统计数据,非常低,我想看到更高的数据。更能说明问题的是,欧

肖恩·阿布·威尔逊方法

那么,当我们的数据对我们不利时,我们该怎么办呢?数据科学家、统计学家等使用各种方法来转换他们的数据,以找到隐藏的关系。但是我们肯定要做的第一件事是我的教练肖恩·阿布·威尔逊说的“让我们把他们放在一起,看看会发生什么!”

下面是我们的 OLS 总结的假人汽车品牌,以及城市 _ 英里,公路 _ 英里,里程和年龄 _ 旧:

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

不错吧?我们将 R 值提高到了 0.709,这意味着我们数据中几乎 71%的差异可以在我们的模型中得到解释。这很酷,但如果我们检查我们的残差,我们得到的不是超级棒。r 是一个很大的数字,但它不是决定我们的模型是否合适的全部。查看我们的残差散点图:

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

你可以为我们的模型画一条线,但它不会很漂亮。我们能从这些数据中学到什么呢?

值得注意的是,一旦我们纳入品牌,我们的模型有多少是可以解释的。这很有道理,宝马很可能会先获得更高的转售价格,因为车主花了这么多钱购买新车。此外,它们在市场上很受欢迎,很容易就有很强的需求,因此有一个强大而现成的转售市场。

同样有趣的是,现代汽车在转售市场上表现很差。我爸爸会说他们也是蹩脚的车,但我从来没有真正开过,所以我不能在这个小事实上权衡。

大众汽车在转售市场上也非常糟糕,但有趣的是,在我们的数据集中,它们的数量要少得多。在我们的数据集中,与现代的 144 个条目相比,只有 41 个大众。也许我们没有看到他们价值的恰当体现,也许大众是守护者。我很想知道他们在汽车市场上占据了多大的份额,以及我的数据是否真实地反映了这一点。通过这种方式,我可以对某个特定品牌的真正价值得出更多结论。

奢侈品的价格是多少?

我和我的搭档注意到的一件事是,在转售市场上,豪华车似乎拥有特殊的溢价。如前所述,这似乎是显而易见的,但我们很好奇奢侈品类别对我们的模型和转售市场有多大影响,所以我们将我们的奢侈品品牌包装成自己的类别。该奢侈品类别由以下品牌组成:

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

这产生了一些有趣的结果。看看下面的 OLS:

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

这里系数是我特别感兴趣的数字。对于豪华车类别,我们查看特定的汽车是否在我们的豪华车类别中,价格向上移动$8208.03。对于奢侈品来说,这是一个显著的提升,有趣的是,我在心里把这个数字贴上了“奢侈品价格”的标签。

让我们看看这个新模型的残差,好吗?

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

有趣的是,我们已经设法平滑了我们的散点图,这有一点意义,因为我们没有太多的噪音,多个类别将我们的点拉向各处。

现在,我们小小的转移似乎已经获得了一些有希望的结果,以及我们在追求适当的预测模型时可以采取的新方向。

直到下一次…

我就此打住。我想我还有 5 分钟的材料要读,这将使这个博客被阅读 15 分钟,我知道这要求很多我亲爱的读者。

在这次会议中,我们学到了很多很酷很有趣的东西,识别相关性,混合和匹配类别来构建我们的模型。我们还学习了奢侈品的价格,我认为这是俏皮的,但你可能认为是显而易见的。最重要的是,我们的系数使我们能够准确量化汽车的每个部件在总价中所占的比重。下周我会把事情分解得更多,所以期待看到更多的 OLS 和更多的残差图!

续在你的车值多少钱第三部分!

你的数据科学人格类型是什么?

原文:https://towardsdatascience.com/whats-your-data-science-personality-type-a8ff7110b664?source=collection_archive---------23-----------------------

人是不一样的。在组建数据科学团队时,明确认识到这些差异会有所帮助。

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

伦敦汉普斯特德的弗洛伊德沙发。你可能会想派一些数据科学家来这里。

几年前,我和一位首席工程师一起工作,他发誓软件开发人员可以分成不同的人格原型。他管理过太多的团队,在这些团队中,人们认真地、着重地谈论着彼此的过去,对其他人在说什么视而不见。似乎在它的下面,有一些深刻的情感在进行,胜过了任何理性的争论。

嗯。认真而着重地谈论对方。这听起来很熟悉。见过数据科学家这样做吗?

我猜有一两次吧。

考虑到这一点,我认为按照针对数据科学家的 Myers-Briggs**【1】**测试,绘制一些数据科学个性维度会很有趣。如果我是对的,那么这些维度将对数据科学团队应该如何运行产生一些实际影响。我们将在最后回到这些效果,但首先声明!这些维度都是基于我自己的亲身经历,所以充其量是一个起点。请在评论中说出你的想法!

维度 1: 首发 vs 终结者

对我们中的一些人来说,一切都是关于一张白纸,白板。从无到有创造的快感。这一次,我们将产生完美的数据科学,清楚地解释世界的一些东西!

然后现实来了。数据杂乱无章,或者根本不存在。有很多令人困惑的变量。也许我们只是草草记下一个理论上可行的方法,然后暂停。等等,还有一个问题出现了!先把旧的暂时搁置,反正基本解决了…

不理想。另一方面,还有终结者。给他们一个开放式的任务,你会得到担忧的表情和一大堆“可能”。也不理想!然而,给一个整理者一个可行的解决方案,告诉他们改进它,然后他们就离开了。浏览代码,指出对方是个白痴,他们突然就如鱼得水了。然后,当他们提出一个有他们名字的可行的、改进的解决方案时,会有一种满足感。成功!

维度 2: 科学家 vs 工程师

数据科学仍然是一个相对较新的学科,它吸引了在 2012 年之前接受过学科培训的人。人们通常带着反映他们最初训练的心态。我经常在小组讨论中看到两种心态。一个是科学家的心态,就像“我们需要找出是什么过程在驱动我们关心的事情,然后我们可以积极地影响这些过程”。从某种意义上说,他们首先发现世界是如何运转的,然后才知道如何利用这些知识。

相比之下,似乎有一种工程师的思维模式,这种思维模式始于这样一个前提,即他们在那里是为了做出改变来改善事情。通常,这归结为他们试图优化的数字(点击、销售、页面停留时间等等)以及他们可以做的一系列事情来提高这个数字。然后问题就简化为“找到最能提高数字的事情组合”。关于 为什么 会工作的问题是次要的,如果有人问的话。

当然,一个团队需要两种心态。所有的科学家和你花了这么长的时间去弄清楚为什么事情在工作,你实际上从来没有抽出时间去改善事情。所有工程师,例如在 2008 年,你注意到加州和佛罗里达州从来没有相关的房地产市场,最终损失了巨额资金,因为你从来没有想过 为什么 这些市场在历史上是不相关的,以及为什么它们现在可能是不相关的。

维度三:蛋头 vs 补锅匠

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

修补匠的荒谬的简化[2]

有些人喜欢理论。蛋头们喜欢从一些基本原则中得出“正确”的答案,他们喜欢知道数据科学技术“真正发生了什么”。他们的意思是,他们想了解基础数学,以及它如何与世界上所有其他基础数学相结合。

相反,有些人对这个理论毫不关心。他们只是想瞎搞,利用技术作为达到目的的手段。这可能是为了提高他们正在优化的数字(工程师),或者展示真实世界过程的效果(科学家)。数学是如何计算出来的肯定是次要的。如果你是那种喜欢夸夸其谈的人,你可以将此视为柏拉图的形式世界与亚里士多德的经验主义之间的区别,前者需要通过纯粹的理性来把握,后者需要通过观察和经验来理解世界。

很容易得出这样的结论:蛋头是无用的,你需要一队修补匠。然而生活并不是如此清晰。虽然你会每天从你的修补者那里看到大部分的进步,但是真正的大飞跃会让你到达某个地方,你通常需要一些理论。这通常会涉及一个鸡蛋头。

维度四:社交追求者 vs 结果迷恋者

这是外在动机的人和内在动机的人之间的区别。对一些人来说,同事(和直线经理)的尊重和赞扬是他们来工作的原因。相反,我的直接下属不在乎我对他们的数据科学的看法,但真的真的很在乎他们能从中获得好的结果。从某种意义上来说,他们根据自己在数据科学方面的能力来定义自己,这些数据科学对业务产生了影响。

同样,注重结果显然是一种更好的方式。没人需要在意我的想法,只要他们能做到!然而,有时社交活动也会派上用场。它可以让你不再沉迷于自己的世界,让自己相信一些在别人看来有点… 奇怪的事情。

那么,经理应该做些什么呢?

现在你看到了我的四维空间。我要重申,它们是基于经验,而不是任何正式的聚类分析。然而,如果你购买这些尺寸,我认为有一些事情会自然而然地随之而来。

首先,你有责任了解自己的性格类型,以及这可能会如何影响你对团队的反应。出于好奇,我认为自己是一个创业者、科学家、有点蛋头的人和社会追求者——我写这篇博客是有原因的,对吗?因此,我记得有些情况下,我对完成者和结果执迷者感到沮丧,而实际上他们只是在做他们自己。相反,我记得至少有一次我给了蛋头太多的回旋余地,因为,嗯,我也有点感兴趣。

其次,你必须平衡团队,这样它才能在更大的组织内完成使命。开始与结束很容易。你只是有一些开始原型的东西,和一些结束叹息,称他们为牛仔和操作原型。蛋头 vs 修补匠取决于你的团队对研究的专注程度。研究越多,你能装的蛋就越多。然而,在大多数情况下,我会建议你主要想要修补匠,只有较大的团队携带一些蛋头。把它们看作是你平衡投资组合中的风险赌注。是的,有风险,他们不会提供任何东西,但有一个小的机会,他们为你赢得大。对于社交追求者和结果执迷者,我认为团队中有谁并不重要,你只需要认识到差异并相应地工作。你必须更加努力地向社会求职者展示一些技术,并给他们机会向更广泛的团队展示他们的工作。另一方面,你必须关注结果强迫症患者,以确保在没有社会反馈的情况下,他们不会自己走开,做一些不相关的事情。

细心的读者会注意到我跳过了科学家与工程师。我自己的偏见是线索就在名字里。数据科学家应该主要从事科学研究。我对在 Kaggle 竞赛(和工作面试任务)中推行的“优化数字”世界观有很大保留。然而,这是另一天的职位。现在,让我们采取折中的办法,假设你可能需要几个人同时做这两件事。

综上所述,希望这四个维度,开始者/完成者,科学家/工程师,蛋头/修补者,社会追求者/结果强迫症对你来说听起来合理。如果他们这样做了,我认为他们可以成为运行一个和谐的数据科学团队的实用工具,提供它应该提供的东西!

脚注

对于门外汉来说,这篇维基百科的文章就是开始的地方。事实证明,迈尔斯-布里格斯测试也没有多少证据。

鲁布·戈德堡漫画——1921 年 11 月 18 日《德卢斯先驱报》

像哲学一样古老的争论不会在这里得到解决。对于那些想把自己逼疯的人,你可以从:https://plato.stanford.edu/entries/rationalism-empiricism/开始

你的脸值多少钱?

原文:https://towardsdatascience.com/whats-your-face-worth-4c55cb4ed67d?source=collection_archive---------52-----------------------

人脸识别对我们日常生活的影响

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

瓦伦丁·拉科斯特在 Unsplash 上的照片

虽然大多数欧洲公民仍然对人工智能和面部识别保持警惕,但马耳他公民似乎没有意识到这种技术的影响。人工智能专家,prof . Alexei Dingli(马耳他大学), 回归思考 分享他的见解。

摄像机扫过一群人,定位一个可能的嫌疑犯的脸,隔离并分析它。几秒钟内,警方通过面部识别技术和人工智能(AI)的反复无常的力量逮捕了嫌疑人。

欧盟基本权利机构最近的一项调查揭示了欧洲公民对这项技术的看法。一半的马耳他人愿意与公共实体分享他们的面部图像,这令人惊讶,因为平均只有 17%的欧洲人对这种做法感到舒服。马耳他不成比例的表现有原因吗?人工智能专家,Alexei Dingli 教授(马尔他大学),回归思考分享他的见解。

面部识别使用生物数据从照片或视频中映射出人的面部(生物数据是指纹、步态、声音和面部模式等人类特征)。然后,通过与数据库进行比较,人工智能被用来将这些数据与正确的人进行匹配。这项技术现在足够先进,可以扫描大型集会,根据警察局的记录识别嫌疑人。

数据是新的石油

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

克里斯·利维拉尼在 Unsplash 上拍摄的照片

面部识别和 AI 有无数的用途。他们可以帮助防止犯罪和寻找失踪人员。他们准备解锁你的手机,分析并影响我们的消费习惯,甚至跟踪学校的出勤率,以确保儿童的安全。但是不是应该有个限度吗?人们真的希望自己的脸被广告商利用吗?或者,被政府知道你和一个反对的政党调情?本质上,放弃这些信息,我们的生活会变得更好吗?

丁力指出,法律要求你知情。生物特征数据可以识别你的身份,这意味着它属于 GDPR。未经他人同意,人们不能给他们拍照;未经许可,不得使用私人数据。丁力继续解释说,当商店出于安全目的使用它(面部识别技术)时,我们不得不问这些数据是否会导致进一步的滥用。您应该被告知您的数据正在被收集,为什么被收集,以及您是否同意。每个人都有隐私权。

大公司依赖于他们的受众数据。他们根据这些数据定制广告活动,以最大限度地提高销售额。营销人员需要这些数据,从你在脸书的兴趣到跟踪网站上的 cookies 丁力笑着说,那么数据是新的石油就不足为奇了。’

欧盟的调查还发现,参与者不太倾向于与私营公司而不是政府实体分享他们的数据。丁力推测,“政府是我们选举出来的,这往往比私人公司更可信。“2018 年的脸书-剑桥分析公司数据泄露丑闻是另一个可能的变量。”

中国接受面部识别的程度远远超过西方世界。数以百万计的摄像机被用来建立一个公民个人的“社会分数”。如果有人乱扔垃圾,他们的分数就会降低。这种做法是有争议的,并提出了错误的问题。算法可以把一个公民错配成另一个。虽然个位数的错误率可能看起来不是很大的差距,但即使是微不足道的 1%的错误率对不匹配的个体来说也可能是灾难性的。在拥有超过 13 亿人口的中国,假设 1%的错误率,将意味着超过 1000 万中国公民被错配。

隐私有必要吗?

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

托比亚斯·图利乌斯Unsplash 上拍摄的照片

丁力教授断言,我确信我们不了解自己的权利。我们并不重视我们的隐私,我们发现分享我们的数据很容易像脸书这样的社交媒体平台进入了我们的日常生活,而人们却不知道它是如何运作的。人工智能和面部识别也是如此。它已经渗透到我们的生活中,我们中的许多人已经在使用它——完全没有意识到。但问题是,我们如何保证 AI 被负责任地设计和使用?

丁立微笑道:“你怎么能保证刀子被负责任地使用呢?”人工智能就像刀子一样,每个人都在使用。问题是我们很多人甚至不知道自己在用 AI。我们需要教育人们。目前,我们对人工智能的了解是通过好莱坞电影形成的。“人们只需要多一点意识,就能意识到他们此时此地正在使用人工智能。”

每个人都有隐私权,企业在道德上有义务尊重这一权利,个人也要对自己处理数据的方式负责。刀和数据一样,都是工具。它既可以用来行善,也可以用来作恶。我们对如何使用这些工具负责。

管制还是不管制?

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

约书亚·苏考夫Unsplash 上拍摄的照片

我们的数据可能不是有形的,但它是一种非常有价值的商品。对我们数据的粗心处理,无论是通过网络攻击还是我们自己的疏忽,都可能导致身份盗窃。尽管人工智能和面部识别背后的技术非常先进,但还远非完美,仍然容易出错。人工智能的滥用可以通过散布虚假信息来操纵人群,从而危及人权

调控 AI 是一种可能性;它将建立技术标准并保护消费者,然而,这可能会扼杀研究。鉴于人工智能是一个横向研究领域,建筑和医学等领域必须考虑限制使用的未来的影响。监管的替代方案是创建伦理框架,这将使研究人员能够在道德界限内继续扩展人工智能的能力。这些界限将包括尊重参与者的权利,并在可能导致身体或精神伤害或财产损失的研究中划定界限。

当关于监管的争论愈演愈烈时,我们需要更仔细地审视我们控制范围内的事情。虽然我们无法控制人工智能和面部识别技术将我们带到哪里,但我们可以控制与谁分享我们的数据。我们将把它托付给一个道德的来源,让他用它来改善人类,还是交给那些只关心利润的无耻之徒?

脸书-剑桥分析公司数据泄露事件涉及数百万脸书用户的数据在未经他们同意的情况下被剑桥分析公司收集,这些数据后来被用于政治广告;

Chan,R. (2019)。剑桥分析公司的告密者解释了该公司如何利用脸书的数据来影响选举。商业内幕。2020 年 7 月 8 日检索,来自https://www . business insider . com/Cambridge-analytic a-beoneer-Christopher-wylie-Facebook-data-2019-10

马耳他的人工智能伦理框架;金融服务、数字经济和创新议会秘书处。(2019).马尔他走向值得信赖的艾。马耳他的伦理 AI 框架。Malta . AI . 2020 年 7 月 8 日检索,来自https://Malta . AI/WP-content/uploads/2019/10/Malta _ toward _ Ethical _ and _ trust worthy _ AI _ vfinal . pdf

原载于 2020 年 7 月 9 日 THINK 杂志。请在下面留下你的想法评论。如果你喜欢这篇文章,并想与我联系,请这样做🐦推特,🔗领英,📷 Instagram 或者😊脸书

[## 如何使用人工智能提升你的业务

一本给没有人工智能背景的人的简明指南

towardsdatascience.com](/how-to-pump-up-your-business-using-ai-ff9d7edb1d77) [## 一个全新的人工智能世界

疫情之后人工智能的兴起

towardsdatascience.com](/a-whole-new-ai-world-6a5e9e49aa12) [## 如何用 10 步打造世界级人工智能国家战略

关于马耳他及其如何成为世界上人工智能排名前 10 位的国家的案例研究

towardsdatascience.com](/how-to-create-a-world-class-ai-national-strategy-in-10-steps-eec5bc1f91fd)

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

Python 中的数据分析:在 WhatsApp 消息上使用正则表达式

原文:https://towardsdatascience.com/whatsapp-messages-visualizing-interjections-sent-by-users-and-other-perks-ea97bbd7f7c5?source=collection_archive---------37-----------------------

在识别消息中的感叹词的上下文中,使用 Python 和 Pandas 中的正则表达式进行数据分析的面向示例的教程

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

照片由AARN·GIRIUnsplash 上拍摄

大概以前也发生过:你打开你的 WhatsApp,通过很多群看了很多“早上好”、“晚上好”、“下午好”的消息。现在,假设您想要可视化该群组的消息,以便获得更多的洞察力,例如,来自某人的消息数量,或者哪一天的消息数量最多,或者在这种情况下,发现每个人在特定的 WhatsApp 群组中发送了多少个“早上好”式的感叹词。如何做到这一点?

在本帖中,我们将研究 Python 和 Pandas 的正则表达式的使用,以达到我们的目的。

数据

这些数据是从 WhatsApp 的群聊中获取的,并通过该应用程序导出。就该职位而言,该小组有 57 名成员,其语言为葡萄牙语。

对于消息,数据遵循以下格式:

DAY/MONTH/YEAR HOUR:MINUTE — USER: MESSAGE

该项目

这个项目是基于kurasaiteja/WhatsApp-Analysis。虽然这个项目遵循类似的路径,但一些核心设计选择和其他改进将被讨论。它是用 Python 写的。

进口

本项目使用熊猫NumPyMatplotlib表情符号regexPlotly

import re
import regex
import pandas as pd
import numpy as np
import emoji
import plotly
import plotly.express as px
import matplotlib.pyplot as plt
from os import path

助手功能

为了确定输入中的行是否以日期时间符号开始,starts_with_date_time 函数被定义为:

def starts_with_date_time(s):
    pattern = '^([0-9]+)(\/)([0-9]+)(\/)([0-9]+)[ ]([0-9]+):([0-9]+)[ ]-'
    result = re.match(pattern, s)
    if result:
        return True
    return False

既然我们已经完成了开始日期的验证,我们继续寻找是否有一个 author 字段(即 USER: MESSAGE 是否存在)。为此,我们要查看该行中出现的字符’:'的数量。在这一步中,Whatsapp-Analysis 项目不考虑消息正文中是否有字符。如果存在,则消息没有作者,因为“:”的数量不等于 2。为了防止这种情况,需要验证“:”字符的数量是否大于 1。

def find_author(s):
  s=s.split(":")
  if len(s) > 1:
    return True
  else:
    return False

split_count 函数被定义为列出每条消息中出现的表情符号。

def split_count(text):
    emoji_list = []
    data = regex.findall(r'\X', text)
    for word in data:
        if any(char in emoji.UNICODE_EMOJI for char in word):
            emoji_list.append(word)
    return emoji_list

既然我们的助手函数已经定义好了,现在是时候把数据解析成一个数组了,这样就可以把它转换成 Pandas DataFrame。函数 get_data_point 是一个使用 has_author 的函数,它将该行拆分为日期、时间、作者和消息字段。一旦消息被解析成大小为 4 的数组,它就被追加到解析后的变量中。

def get_data_point(line):
    split_l = line.split(' - ')
    date_time = split_l[0]
    date, time = date_time.split(' ')
    message = ' '.join(split_l[1:])
    if has_author(message):
        split_msg = message.split(': ')
        author = split_msg[0]
        message = ' '.join(split_msg[1:])
    else:
        author = None
    return date, time, author, messageparsed = []
path = './input/wpp_input.txt'
with open(path, encoding="utf-8") as fp:
    fp.readline()
    msg_buffer = []
    date, time, author = None, None, None
    while True:
        line = fp.readline()
        if not line:
            break
        line = line.strip()
        if starts_with_date_time(line):
            if len(msg_buffer) > 0:
                parsed.append([date, time, author, ' '.join(msg_buffer)])
            msg_buffer.clear()
            date, time, author, message = get_data_point(line)
            msg_buffer.append(message)
        else:
            msg_buffer.append(line)

创建数据帧

既然信息被解析成一个二维数组,我们可以把它转换成熊猫数据帧。

df = pd.DataFrame(parsed, columns=['date', 'time', 'author', 'message'])
df["date"] = pd.to_datetime(df["date"])
df.info()

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

作者匿名

但现在我们有一个问题:我们不想使用组中那些人的名字或电话号码,但我们更希望他们被匿名识别。为了做到这一点,我们可以使用 author 列的 unique()函数,然后根据作者在 unique()数组中的位置对其姓名进行更新,再加上 1 以获得更好的可读性。

anon = df.copy()
anon = anon.dropna() # This drops any null author messages
authors = anon.author.unique()anon.author = anon.author.apply(lambda author: 'Author ' + str(np.where(authors == author)[0][0] + 1))
authors = anon.author.unique()anon.tail()

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

数据过滤

既然作者的身份已经保留,我们就可以过滤数据了。在这个项目中,我们将过滤字数,表情列表,网址计数和问候的数据,但是,由于目标是找出用户发送了多少感叹词,只有问候将被使用。

为了发现消息中是否有感叹词,使用了正则表达式匹配。

media_msgs = anon[anon['message'] == '<Arquivo de mídia oculto>']
text_msgs = anon.drop(media_msgs.index)
text_msgs['word_count'] = text_msgs['message'].apply(lambda s : len(s.split(' ')))
text_msgs["emoji"] = anon["message"].apply(split_count)
text_msgs['urlcount'] = text_msgs.message.apply(lambda x: re.findall(r'(https?://\S+)', x)).str.len()
text_msgs['greetings'] = anon.message.apply(lambda msg: True if re.match('([B|b]om dia)|([B|b]oa tarde)|([B|b]oa noite)', msg) else False)text_msgs.tail()

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

测绘

现在我们有了 greetings 值,我们只需要绘制它。在这种情况下,条形图提供了很好的可视化效果。

author_group = text_msgs.groupby("author").sum()
author_group.reset_index(inplace=True)
fig = px.bar(author_group, y="author", x="greetings", color="author", color_discrete_sequence=["red", "green", "blue", "goldenrod", "magenta"])plotly.offline.plot(fig, filename='output/wpp_analysis.html')

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

结论

可以看出,作者 43 使用定义感叹词最多,作者 30 次之。他们是使用公告的最频繁的用户。通过这个可以收集更多的信息,例如用户平均说了多少感叹词,或者一周中的哪一天显示了最多的感叹词。但是,因为这篇文章的目标是正则表达式和消息解析,所以这将是以后的工作。这里有很多可能性,这确实显示了正则表达式的强大功能。

在我的 GitHub 上可以找到这个项目,以及运行它的说明。

参考

[## 熊猫

pandas 是一个快速、强大、灵活且易于使用的开源数据分析和操作工具,构建于…

pandas.pydata.org](https://pandas.pydata.org) [## NumPy

为什么是 NumPy?强大的 n 维数组。数值计算工具。可互操作。表演。开源。

numpy.org](https://numpy.org) [## Matplotlib: Python 绘图- Matplotlib 3.3.2 文档

Matplotlib 是一个全面的库,用于在 Python 中创建静态、动画和交互式可视化…

matplotlib.org](https://matplotlib.org) [## 绘文字

Python 的表情符号。这个项目的灵感来自 kyokomi。unicode 定义的整套表情代码…

pypi.org](https://pypi.org/project/emoji/) [## 正则表达式

问题编号与 Python bug tracker 相关,除了列为“Hg 问题”的地方。一个条件的测试…

pypi.org](https://pypi.org/project/regex/) [## plot ly:ML 和数据科学模型的前端

Plotly 为 ML、数据科学、工程和科学创造和管理领先的数据界面工具。语言…

plotly.com](https://plotly.com/) [## murilobnt/whatsapp-感叹词

此时您不能执行该操作。您已使用另一个标签页或窗口登录。您已在另一个选项卡中注销,或者…

github.com](https://github.com/murilobnt/whatsapp-interjections)

当人工智能算法出轨时

原文:https://towardsdatascience.com/when-ai-algorithms-go-off-the-rails-ace5cc8794f1?source=collection_archive---------73-----------------------

这里有一个非虚构的场景:一个运行了多年的算法警告信用卡使用中的异常行为,突然识别出不是异常值的人的行为异常(意味着假警报显著增加)。信用卡无缘无故被封;沮丧和紧张的客户打电话到客户服务中心投诉。

在客户服务中心经历了几个小时的异常压力后,服务团队意识到可能有不寻常的事件发生,并将问题传递给他们的开发团队。在一段额外的时间后,他们意识到算法出现了故障,并禁用它,直到它“回到正轨”。与此同时,其他客户也受到了信用卡异常行为警报缺失的影响,信用卡公司的财务和声誉也遭受了进一步的损害。

这是一个肯定会发生的场景。

随着人工智能越来越受欢迎,算法在我们日常生活和各种组织的关键流程中的使用越来越多,过去两年来,关于故障的报告越来越多,即人工智能算法犯了重大错误。

亚马逊的人脸识别算法为例,该算法“漏掉”了几名著名的国会议员,并将他们识别为著名的罪犯。在另一个不幸的案例中,谷歌的物体检测算法将一名女子标记为大猩猩。

这听起来可能很有趣,但图像识别中的错误可能会导致致命的结果,特别是在医疗领域——例如当另一种谷歌算法通过视网膜图像分析检测糖尿病时,未能在现实环境中准确检测。在另一起事件中,IBM 的沃森系统为癌症患者创造了错误的见解,迫使医生立即停止使用该机器。

“本品为一片 s——”

朱庇特医院的医生

不正确的算法结果的不利和破坏性影响是显而易见的。虽然人工智能还不能取代人,但它无疑可以为我们做出糟糕的决定。

这种情况肯定会继续发生。数据治理团队(如首席数据官)负责创建和防止这种风险。

但是,组织对算法日益增长的依赖可能会像回旋镖一样回来吗?答案是,当然要看情况。这取决于它们允许持续维护过程的能力,以及理想情况下算法性能随时间的改进。此外,它还依赖于实时故障检测。当疾驰的列车脱离轨道时,他们必须有效地处理损害。

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

来源:Johannes Plenio 在 Unsplash 上拍摄的照片

组织如何为这种情况做好准备,制定控制、预防和上报流程?在本文中,我将提出几种方法来处理这个问题。

但是在我们讨论解决方案之前,理解上述场景的起源是至关重要的。算法和人工智能的预测是基于反映特定时间点和描绘特定现实的数据训练过程。当这些算法遇到不断变化的现实并因此遇到不断变化的数据时,它们在学习过程中仍然保持静态,这正是这个问题出现的原因。

因此,首先需要的是机器学习算法运行时的监控能力。

算法的监控能力是正确和成功使用人工智能的必要条件。监控假设如果出了问题,它会随着时间的推移而发生。也就是说,如果将算法作为黑盒来监控,而输入和输出是已知的,则在时间线上,可以检测到实时异常和偏差(即,在训练阶段观察到的数据的预期分布的中断)。这种监控可以在伤害大量消费者之前被发现。

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

来源:斯蒂芬·道森在 Unsplash 上拍摄的照片

但这还不够。理解到算法应该保持“活性”,我们需要产生一个解决最新数据的频繁版本升级机制。需要这样的工具来实现对算法的最终用户结果的反馈。这种反馈简化了实时学习过程。在线学习使模型适应变化的现实并减少损害。算法更新过程需要将其重新部署并集成到生产系统中。与敏捷时代的任何软件更新一样,需要进行健全性和逆向测试,以确保这种部署不会造成新的二次损害。

最后,向最终用户反映和解释算法的性能和结果是非常重要的。这种经历产生了必要的信任和解释,以防出现任何不相容的情况。仅仅为了澄清结果(解释权)而将解释的倾向是不充分的。解释的额外价值在于能够监控不想要的现象并允许它们被纠正,类似于质量保证软件过程。

解释用途是直接面向最终消费者,或面向客户服务团队。除了解释结果,它还允许即时反馈,从而可以实时改进算法。

所有这些都导致了一个结论,即人工智能算法不能再被视为企业应用程序的固有组件。之所以这样,是因为这种方法离不开监控和改进那些“黑箱”算法的过程。同时,我们希望他们的结果能够反映在组织应用程序的决策过程中。

因此,正确的技术解决方案是生产可以消费、监控、维护和改进的人工智能微服务(SaaS)——不管它们与什么应用程序集成。

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

来源:Bill Oxford 在 Unsplash 上的照片;罗伊·梅赫雷兹编辑

让我们回到信用卡的场景。不满意的顾客打电话给服务中心。他们的问题会对照算法的解释结果进行检查,并立即进行纠正。结果被反馈到算法的实时学习过程中。与此同时,数据运营和治理团队的监控会警告正在出现的异常行为。在算法稳定之前,他们努力将对数以千计的客户的有害影响降至最低,甚至不惜以手动处理被检查为警告的查询为代价。

总之,从某个时间点的快照中学习的人工智能算法很可能随着时间的推移而不再使用。为了减轻静态使用人工智能算法的潜在损害,需要一个持续维护流程,监控异常实时事件,给出每个结果的解释,并确保算法的持续学习。我们还推荐将算法打包为服务来支持这种动态方法。

努里特·科恩·英格

产品副总裁@ BeyondMinds

BeyondMinds 是一家企业人工智能公司,它在学术研究和企业级人工智能应用的大规模采用之间架起了一座桥梁。BeyondMinds 解决方案套件使企业能够加速其人工智能转型,促进增长和降低成本。

我们开发了一种高效的技术来构建、部署和维护最大价值的人工智能应用,将价值实现时间从数年缩短到数周。

当 AI 遇上艺术——用 magenta.js 进行神经风格转移

原文:https://towardsdatascience.com/when-ai-meets-art-neural-style-transfer-with-magenta-js-ceb50e702730?source=collection_archive---------30-----------------------

将杰作与现代科技相结合,AI 能制作出多么惊艳的艺术品?

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

UnsplashToa Heftiba 拍摄的照片

当人类和机器合作时,我们可以生产出超乎想象的东西。艺术和人工智能的交叉是我觉得非常令人兴奋的一个领域。神经风格转移是人工智能在创造性背景下最令人惊叹的应用之一。

深度学习使得捕捉一幅图像的内容并将其与另一幅图像的风格相结合成为可能。这种技术被称为神经风格转移。

下面是我如何使用神经风格转换技术来生成人工艺术作品的演示。

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

来源:bensonruan.com

点击下面的链接亲自尝试一下:

[## 当 AI 遇上艺术——用 magenta.js 进行神经风格转移

当人类和机器合作时,我们可以生产出超乎想象的东西。艺术与人工智能的交集…

bensonruan.com](https://bensonruan.com/when-ai-meets-art-neural-style-transfer-with-magenta-js)

履行

你喜欢人工智能生成的新艺术品吗?你很好奇它在幕后是怎么运作的吗?好吧,让我们在这篇文章中探索更多。

它使用了一种叫做神经类型转移的技术。它是一种优化技术,用于获取两个图像,一个内容图像和一个样式参考图像(如著名画家的作品),并将它们混合在一起,使输出图像看起来像内容图像,但“绘制”为样式参考图像的样式。

这是通过优化输出图像以匹配内容图像的内容统计和样式参考图像的样式统计来实现的。这些统计数据是使用 CNN(卷积神经网络)从图像中提取的。

如果你想进一步挖掘,你可能会发现吴恩达教授的教程很有用

如果你觉得太难理解,没关系。感谢 Magenta (机器学习的开源研究项目),即使你是机器学习和 AI 的新手,你仍然可以制作由 AI 驱动的音乐和艺术。让我们一步步来看我是如何利用 Magenta.js 来实现风格转换的。

#步骤 1:包含 magentaimage.js

首先,简单的在 html 文件的<头>部分包含脚本magentaimage.js或者缩小版magentaimage.min.js

<html>
  <head>
    <script src="[https://cdn.jsdelivr.net/npm/@magenta/image@0.2.1/dist/magentaimage.min.js](https://cdn.jsdelivr.net/npm/@magenta/image@0.2.1/dist/magentaimage.min.js)"></script>
  </head>

如果您使用的是 npm,也可以通过运行下面的命令来安装它

npm i @magenta/image

#步骤 2:设置 html 元素

接下来我们需要做的是添加下面的 html 元素

  • 内容图像
  • 风格图像
  • 转移按钮
  • 组合图像的画布
<img id="contentImg" src="images/turtle.jpg"/>
<img id="styleImg" src="images/kadinsky.jpg"/>
<button  class="btn btn-transfer">
  <i class="fas fa-random"></i><span>Click to transfer</span>
</button>
<canvas id="stylized"></canvas>

#步骤 3:初始化 javascript 变量

const model = new mi.ArbitraryStyleTransferNetwork();
const canvas = document.getElementById('stylized');
const ctx = canvas.getContext('2d');
const contentImg = document.getElementById('contentImg');
const styleImg = document.getElementById('styleImg');

#步骤 4:运行风格化功能

当点击传送按钮时,调用库的initialize()stylize() API

差不多就是这样!只需 4 个简单的步骤,您就可以构建自己的风格转换应用程序。选择您自己的照片和风格,观看神奇的艺术作品像魔法一样降临!

GitHub 知识库

您可以通过下面的链接下载上述演示的完整代码:

[## 本森阮/神经类型转移

艺术神经风格转移与品红色。js 艺术神经风格转移是一种优化技术,用于采取…

github.com](https://github.com/bensonruan/Neural-Style-Transfer) 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

斯蒂夫·约翰森Unsplash 上拍照

结论

Magenta 是一个探索机器学习在艺术和音乐创作过程中的作用的研究项目,它建立在 TensorFlow 之上。如果你对人工智能遇见艺术感到兴奋,我强烈推荐你去看看他们的网站magenta.tensorflow.org,那里有更多你可以尝试的例子。

感谢您的阅读。如果你喜欢这篇文章,请在脸书或推特上分享。如果你有任何问题,请在评论中告诉我。在 GitHubLinkedin 上关注我。

当人工智能真正拥有优势时:在设备上学习

原文:https://towardsdatascience.com/when-ai-really-has-the-edge-learning-on-device-aa2b8b20b091?source=collection_archive---------41-----------------------

如何将学习带到芯片上是人工智能未来最重要的一次飞跃

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

图片由 PickPik 提供

有了无数关于 2020 年人工智能的预测,我渴望看到什么会成真,什么会半途而废。我认为,一个更能改变模式的预测将会把人工智能的学习能力推向边缘。

在人工智能的通用名称下,隐藏着各种方法,从在分布式云基础设施上处理数据的大型模型到在小型处理器上分析和挖掘数据的小型边缘友好人工智能。

从我在波士顿大学的学术研究到共同创立的 Neurala,我一直敏锐地意识到这两种类型的人工智能之间的差异——姑且称之为“重”和“轻”人工智能。重度人工智能需要巨大的计算基板来运行,而轻度人工智能可以做重度人工智能能够做的事情,但需要较小的计算能力。

GPU 等商用处理器的引入——以及后来它们的便携性——使得将人工智能/深度学习/DNN/神经网络算法带到众多行业的边缘在技术上和经济上都是可行的。

带宽、延迟、成本和简单的逻辑决定了边缘人工智能的时代,并将帮助我们实现下一个技术飞跃。但在我们这样做之前,理解这项技术的细微差别很重要,因为让人工智能算法在小型计算边缘上运行有一些问题。事实上,至少有两个过程在起作用:推理,或由边缘生成的“预测”(例如,我看到一个正常的帧与一个可能有缺陷的帧),以及边缘学习——即,使用获得的信息来改变、改进、纠正和完善边缘人工智能。这是一个很小的、经常被忽视的差异,却有着巨大的影响。

生活在边缘

我第一次意识到推断/预测和边缘学习之间的区别是在 2010 年和 NASA 一起工作的时候。我和我的同事实施了一个小型大脑仿真来控制一个类似火星漫游车的人工智能设备,该设备需要能够在边缘运行和学习。

对于美国宇航局来说,机器人能够完全独立于地球上任何可用的计算能力来学习“新事物”是非常重要的。数据瓶颈、延迟和大量其他问题意味着他们需要探索不同于当时开发的人工智能。他们需要具有消化和学习能力的算法——即,适应人工智能的行为和可用数据——而不需要大量的计算能力、数据和时间。

不幸的是,传统的深度神经网络(DNN)模型达不到标准,所以我们继续构建我们自己的人工智能来满足这些要求。被称为“终身深度神经网络”(终身-DNN ),这种新的 DNNs 方法具有在其整个生命周期中学习的能力(而传统的 DNNs 只能在部署前学习一次)。

边学边死

当谈到今天人工智能的实现时,最大的挑战之一是它的不灵活性和缺乏适应性。当可用时,人工智能算法可以在大量数据上进行训练,如果事先捕捉所有数据进行训练,人工智能算法可以相当健壮。但不幸的是,这个世界不是这样运作的。

我们人类之所以适应性如此之强,是因为我们的大脑已经搞清楚了终身学习(每天学习)是关键,我们不能只依赖于我们与生俱来的数据。这就是为什么我们在一岁生日后不会停止学习:我们不断适应我们一生中遇到的不断变化的环境和场景,并从中学习。作为人类,我们不会丢弃数据,我们会不断使用它来微调我们自己的人工智能。

人类是支持边缘学习的机器的主要例子。事实上,如果人类大脑的行为方式和 DNN 一样,我们的知识将仅限于我们的大学时代。我们过着朝九晚五的生活,每天例行公事,第二天早上醒来时却没有学到任何新东西。

具备学习能力的人工智能优势

传统的 dnn 是当今人工智能的主导范式,具有固定的模型,需要在部署前进行训练。但是,诸如终身 DNN 这样的新方法将使人工智能驱动的计算边缘不仅能够理解向它们提供的数据,而且能够适应和学习。

所以,如果你也想利用边缘的力量,这是我的建议。首先,你需要抛弃人工智能只能在部署前训练的思维模式(和限制)。由此,一个新的需求出现了:一种让用户与边缘交互并增加知识的方式。这意味着需要可视化新收集的数据,并且用户能够选择添加哪些数据。这可以由用户手动或自动完成。

例如,在制造场景中,质量控制专家可能会拒绝从机器中出来的产品,并通过这样做,向 AI 提供新的线索,即刚刚制造的产品或其部分必须被视为有缺陷。因此,更新你的人工智能培训协议,以允许集成持续的培训工作流,其中人工智能根据新的线索进行更新,是寻求利用这种新型人工智能的组织和个人所必须的。

在边缘学习的人工智能是一种范式转变技术,最终将使人工智能真正服务于其目的:将智能转移到需要的计算边缘,其速度、延迟和成本使每个设备都可以负担得起。

展望未来,在竞争日益激烈的人工智能生态系统中,学习优势将在自然选择中幸存下来。愿适者生存的 AI!

最初发表于【https://www.forbes.com】

当算法去购物时

原文:https://towardsdatascience.com/when-algorithms-go-shopping-6a98caa88fe3?source=collection_archive---------60-----------------------

在算法代表我们做出购物决定的世界里,所有的赌注都是错的。

2011 年 4 月 18 日,一本关于苍蝇生物学的书在亚马逊上以 23,698,655.93 美元的价格出售(加上 3.99 美元的运费)。这不仅仅是一个小故障——在 T1 之前的日子里,这本书的价格稳步上升。然后,第二天,价格降到了 106.23 美元(加上 3.99 美元的运费)。

发生了什么事?

高价不是人的决定。故事发生在在线平台上交易的两种算法之间的一场奇怪的竞价战中。

这本书可能拥有的算法之一是定期检查价格,并以低于最高价约 1%的价格出售其副本。另一家公司采取了不同的策略:它以比下一个最佳报价高出约 27%的价格出售同一本书,希望买家不会注意到更便宜的选择。我们可以假设第二个算法没有这本书,在收到订单后,它会购买更便宜的书并将其交付给客户,在此过程中赚取利润。

两种算法每天陷入“百分之一回,百分之二十七进”的循环,达到数百万美元的价格。大概直到某个算法的人类所有者注意到了这个循环并停止了它。

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

克雷格·赛伯特在 Unsplash 上的照片

对竞争的影响

在过去的几年里,我们生活在一个算法或软件购买代理代表我们“购物”的世界里。LG ThinQ 洗衣机可以在洗涤剂快用完时自动重新订购洗涤剂。通用电气、惠而浦和 LG 提供自动重新订购洗涤盒的洗碗机。有咖啡机、打印机,甚至可以重新订购咖啡盒、墨水和电池的烟雾报警器。

虽然这听起来令人兴奋,但也有令人担忧的一面。

几乎所有的“智能再订购”解决方案都绑定到一个供应商,并且总是订购相同的产品。虽然他们实现了购物过程的完全自动化,但他们让顾客只能选择一家零售商和一种产品。

这听起来非常像微软在 20 世纪 90 年代和 21 世纪初享有的准垄断地位,有效地迫使用户使用 Windows Media Player 和 Internet Explorer。美国、T2 和欧洲的政府介入进来,为比赛创造公平的环境。

将人类拒之门外

机器人不仅被用来购买咖啡,还被用来预订露营地和约会。露营者分享算法来预订约塞米蒂公园的露营点,愿意预约纽约机动车部门的顾客可以“雇佣”他们自己的自动呼叫机来预约,并不断检查是否有更好的空位。最近,机器人几乎抢走了 Nvidia 发布的所有新显卡。

算法购物者可以瞬间做出决定。

他们一天可以打几千个电话或访问几千个网站。当试图获取可能有需求的产品和服务时,人类没有机会对抗机器人。然而,阻止软件购买代理并不能解决问题。随着技术的进步,机器人找到了访问系统的新方法。

我们需要明确的规则来管理软件购买代理的行为。

这些可以包括制定机器人排除标准,类似于那些用于阻止搜索引擎访问某些网站的标准。我们还需要一种协调的方法,让软件购买代理在他们可能被人类混淆的情况下公开他们是谁。

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

在市场中掀起波澜

大多数股票市场交易都是完全自动化的,由算法执行。

什么可能会出错?

2017 年,道琼斯意外发布了一条关于苹果和谷歌合并的消息。大约有一秒钟的时间,苹果的股票从 2 美元涨到了 158 美元,暴露了算法在股市中的脆弱性。

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

作为对这一事件和类似事件的回应,韩国现在正试图加强对算法交易的控制。其他国家有望效仿。

新兴的算法经济,即软件代理代表我们的行为,有可能极大地改变我们的生活、工作和思考方式。然而,我们需要确保清晰的规则管理算法的行为。有了保护市场竞争的正确机制,监管产品和服务的准入,并强制执行代表我们购物的算法的最低质量标准,我们就有很大的机会通过购物的算法来享受我们的未来。

我何时以及为何停止收集数据科学证书

原文:https://towardsdatascience.com/when-and-why-i-stopped-collecting-data-science-certificates-cca44e99701d?source=collection_archive---------49-----------------------

而我开始做的是。

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

【GIPHY 的 GIF

数据科学证书无处不在。对它们的需求很高,而且还在不断增加,所以一款新的很快就推出了。有几个原因可以解释为什么在许多不同的平台上存在丰富的证书选择。

  • 数据科学领域尚未成熟,仍在不断发展。因此,它在传统教育系统中仍然没有得到很好的确立。提供数据科学本科学位的大学数量远少于任何其他 STEM 专业。
  • 高等教育是昂贵的。人们倾向于花几百美元(最多)去考证书,而不是花几万美元去获得一个学士或硕士学位。
  • 容易接近!证书适合你的时间表,而且大多是在线的,这使得它们对那些抽不出时间接受传统教育的人很有吸引力。

这种介绍似乎是收集证书的一种动力。事实上,是的,但在一定程度上。

我也从证书开始了我的数据科学之旅。我考的第一个是 IBM 数据科学专业证书。它奠定了基本原则,并提供了一个领域的一般,结构良好的概述。我又收了几个证,然后就停了。

在这篇文章中,我将写下我什么时候和为什么停止收集数据科学证书,以及我开始做什么。

下降趋势

根据我的观点,让我们从花费大量时间收集大量证书的缺点开始。

证书有助于教授基础知识,让你熟悉这个领域。由于数据科学是一个跨学科的领域,范围很广,因此从一开始就要有一个结构良好的概述。

但是,获得其中几个之后,证书就开始重复了。你从不同的角度回顾相同的原则和实践。你每次花费所学到的东西开始大幅减少。

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

我的证书学习曲线与知识和技能

证书通常过于笼统,不够深入。他们所覆盖的是表面的。让你与众不同的技能就在这些深层领域。

为了真正“学习”一些东西,你需要接受挑战。浏览简单的视频记录和完成相当简单的任务对你来说绝对不够有挑战性。

挑战自己的一个方法是做项目。例如,你可以尝试重新创建一个正在使用的机器学习微服务。它不必完美无缺。即使你接近了,你也会学到很多有价值的信息。另一个选择是改进一个简单的用例或项目。

我想用 Keras 创始人 Francois Chollet 的一条推文来强调我的观点,他是数据科学领域的先驱之一。

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

他提到了重新创造变化的重要性,我认为通过获得许多证书无法实现这一点。相反,完成项目会帮助你“学习”得更深更好。

建议

在我看来,你应该在你覆盖了基础之后停止收集证书。你可能会问,那我们该怎么办?

以下是我的建议:

很明显,第一条就是做项目。我已经提到了项目的重要性。如果你想获得更详细的概述,我写了一篇单独的文章,列出了我做项目的 5 个理由。

文档是您的财富!所有著名的库都有很好的文档记录,它们还提供了用户指南。花时间阅读这些非常有帮助。即使你在寻找一个特定的任务或操作,你学到的东西也比你寻找的要多。

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

Scikit-learn ,一个广泛使用的机器学习库,提供了一个有启发性的文档

阅读其他人面临的问题和困难,以及他们如何解决这些问题。 StackoverflowQuora 是两个常用的平台。当出现您无法解决的问题时,很可能是其他人以前遇到过同样的问题。你可以在这样的平台上寻找问题和解决方案。

此外,你可以浏览热门问题,并尝试提供答案,这肯定会提高你的技能。我刚刚在 stackoverflow 上快速搜索了一下关于熊猫的内容,这是一个著名的 python 数据分析库。结果如下:

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

截至目前,stack overflow上有超过 166,000 个关于熊猫的问题

数据科学是一个不断发展的领域。它也是一个由数学、统计学和软件组成的跨学科领域。新的技术和工具不断发布。因此,保持更新是很重要的。我有两个建议:

  1. 关注每周或每月的时事通讯。我密切关注来自 deeplearning.ai 的批处理。但是,还有其他选项。
  2. Twitter 是名副其实的最新平台。跟随先行者,业内有经验的人,学者,科学家。他们首先在推特上发布公告。他们还分享了他们对主题和一些用例的想法。

最后的想法

我分享过我在数据科学领域关于“学习”的经验和看法。当然,你的学习路径和风格可能不同。例如,有些人更喜欢在 youtube 上阅读或观看视频。

无论你走哪条路,一定要挑战自己。

尝试创造。从简单的开始,逐渐增加复杂性。

感谢您的阅读。如果您有任何反馈,请告诉我。

基于树的模型何时以及为什么(通常)优于神经网络

原文:https://towardsdatascience.com/when-and-why-tree-based-models-often-outperform-neural-networks-ceba9ecd0fd8?source=collection_archive---------2-----------------------

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

作者图片

以及为什么它们没有那么大的不同

神经网络通常被视为机器学习的圣杯,无所不知,解决一切问题,主要是因为它们很复杂。另一方面,基于树的方法没有受到同样的敬畏和宣传,主要是因为它们看起来简单。虽然它们看起来如此不同,但它们只是一枚硬币的两面。

基于树的方法通常优于神经网络。任何 Kaggler 都知道,XGBoost 是迄今为止最受欢迎的顶级竞赛提交选择。本质上,将基于树的方法和神经网络放在同一类别的是,它们通过逐个解构来处理问题,而不是像 SVM 或逻辑回归那样,找到一个复杂的边界来分隔整个数据集。

非常明显,基于树的方法沿着各种特征逐步分割特征空间,以优化信息增益。不太明显的是,神经网络以类似的方式完成这项任务。每个神经元监视特征空间的特定部分(具有各种重叠)。如果一个输入进入那个空间,某些神经元就会被激活。

神经网络对这种分段模型拟合采取概率观点,而树则采取确定性观点。无论如何,它们的性能都依赖于模型的深度,因为它们的组件与特征空间的部分相关。

一个有太多组件的模型——在树的情况下是节点,在网络的情况下是神经元——会过度拟合,而一个组件太少的模型根本不能给出有意义的预测。(两者都是开始记忆数据点而不是实际学习归纳。)

为了更直观地了解神经网络如何分解特征空间,请查看通用逼近定理

尽管决策树有许多强大的变体,如随机森林、梯度提升、自适应提升和深度森林,但一般来说,基于树的方法本质上是神经网络的简化版本。

  • 基于树的方法通过垂直和水平线一点一点地解决问题,以最小化(优化器&损失)。神经网络通过操纵激活函数的形状来一点一点地解决问题(参见【relu 如何工作得这么好?).
  • 基于树的方法是确定性的,而不是概率性的。这导致了一些很好的简化,比如自动特征选择。
  • 决策树中被激活的条件节点类似于被激活的神经元(信息流)。
  • 神经网络拟合参数以转换输入,并间接指导后续神经元的激活。决策树明确地拟合参数来引导信息流。(这是确定性相对于概率性的结果。)

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

信息在两种模型中的流动是相似的,只是在树中的方式更简单。图片作者。

当然,这是一个抽象的,甚至可能是有争议的说法。诚然,建立这种联系存在许多心理障碍。无论如何,这是理解基于树的方法何时以及为什么优于神经网络的重要部分。

表格,或以表格形式出现的结构化数据,对于决策树来说是很自然的。大多数人都认为神经网络对于表格数据回归和预测来说是多余的,所以我们做了一些简化。我们选择 1 和 0,而不是概率,这是两种算法之间差异的主要根源。因此,在概率的细微差别没有必要的情况下,比如结构化数据,树是成功的。

例如,基于树的方法在 MNIST 数据集上表现得足够好,因为每个数字都有几个定义特征。概率根本不是必要的计算。这根本不是一个非常复杂的问题,这就是为什么设计良好的树集成的性能与现代卷积神经网络相同甚至更好。

通常,人们会倾向于说‘树只是简单地记忆规则’,这是真的。神经网络也是一样,它记忆更复杂的、基于概率的规则。神经网络不会对类似于x3 的条件显式地产生真/假,而是将输入放大到一个高值,以产生一个 sigmoid 值 1 或产生一些连续的表达式。

另一方面,因为神经网络非常复杂,所以可以用它做很多事情。卷积和递归层都是神经网络的出色改编,因为它们对经常需要概率计算细微差别的数据进行操作,所以工作得很好。

很少有图像可以用 1 和 0 来建模。决策树值不能处理具有许多中间值(例如 0.5)的数据集,这就是它在 MNIST 上工作良好的原因,其中像素值几乎都是黑色或白色,而不是其他值(例如 ImageNet)。同样,文本有太多的信息和太多的例外,无法用确定性的术语来表达。

这也是为什么神经网络主要用于这些领域,以及为什么神经网络研究在没有大量图像和文本数据时停滞不前(< 2000 年代)。神经网络的其他常见用例仅限于大规模预测,如 YouTube 的视频推荐算法,其中规模如此之大,以至于必须涉及概率。

去一家公司的任何数据科学团队,他们可能会使用基于树的模型,而不是神经网络。除非他们正在构建一个重型设备,如在 Zoom 中模糊视频的背景,否则树的确定性使日常业务分类任务变得轻量级,与神经网络的一般方法相同。

在许多现实世界中,确定性建模比概率性建模更自然,这也是有争议的。例如,树将是预测用户是否从电子商务网站购买商品的好选择,因为用户自然会遵循基于规则的决策过程。它可能看起来像这样:

  1. 我以前在这个平台上有过愉快的经历吗?如果是,请继续。
  2. 我现在需要这个项目吗?例如:我应该在冬天买太阳镜和泳裤吗?如果是,请继续。
  3. 根据我的人口统计,这是我有兴趣购买的产品吗?如果是,请继续。
  4. 这个东西太贵了吗?如果没有,请继续。
  5. 是否有其他顾客对该商品的评价达到了一定的标准,让我觉得可以放心购买?如果是,请继续。

总的来说,人类遵循非常基于规则和结构化的决策过程。在这些情况下,概率建模是不必要的。

总而言之,

  • 基于树的方法最好被认为是神经网络的缩小版本,接近特征分类、优化、信息流等。简单来说。
  • 基于树的方法和神经网络在使用上的主要区别在于数据的确定性(0/1)和概率性结构。使用确定性模型对结构化(表格)数据进行建模总是更好。
  • 不要低估基于树的方法的力量。

关于何时重新训练机器学习模型的指南

原文:https://towardsdatascience.com/when-are-you-planning-to-retrain-your-machine-learning-model-5349eb0c4706?source=collection_archive---------15-----------------------

了解更多关于再培训策略的信息

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

照片由 Aron 视觉效果Unsplash 上拍摄

你可能会发现很多教程可以帮助你建立端到端的机器学习管道。但是一般来说,这些教程并没有太多地提到如何保持从 ML 系统生成的预测的质量。

保持已部署模型的预测能力被认为比从头构建 ML 模型更困难,因此这是我们今天讨论的主题。

但是在开始讲述**“模特再培训”的细节之前,让我们先快速了解一下“模特培训”**:

  • 假设有足够的可用历史数据,模型构建从学习一组独立特征和目标变量之间的依赖关系开始。
  • 基于一些评估度量来计算最佳学习相关性,以最小化验证数据集上的预测误差
  • 该最佳学习模型随后被部署到生产中,期望尽可能长时间地对的未知数据进行准确预测

现在,让我们更加强调我们所说的“尽可能长”是什么意思?

从来不会出现最终部署一次的 ML 模型就永远带走了担忧,并一直给出准确的预测。

这是为什么呢?让我们弄清楚下面的问题:

  1. 模型漂移:

为了理解这一点,让我们回忆一下 ML 建模中最关键的假设之一——训练和测试数据集应该属于相似分布。并且,如果新数据与过去观察到的数据相似,模型将是好的,其中模型是基于过去观察到的数据进行训练的。

因此,我们知道,如果测试数据的分布偏离了训练数据的分布,那么这个模型就不成立。但是这种偏离的可能原因是什么呢?根据商业案例,这可以归因于许多原因,例如,消费者偏好的变化、快速变化的竞争空间、地理位置的变化、经济状况等。

因此,漂移数据分布需要一个持续的过程来定期检查旧模型的有效性。简而言之,让你的机器学习模型保持更新是很关键的;但关键是什么时候?我们将继续讨论这一点以及更多内容,敬请关注。

2。鲁棒性

受 ML 模型结果影响的人/实体可能故意改变他们的响应,以便向模型发送虚假输入,从而逃避模型预测的影响。例如,欺诈检测、网络安全等模型接收被操纵和扭曲的输入,导致模型输出错误分类的预测。这种类型的对手也降低了模型性能。

3。当模型训练时地面实况不可用时

在大多数机器学习模型中,基础事实标签不可用于训练模型。例如,捕获最终用户响应的目标变量是未知的。在这种情况下,您的最佳选择可能是基于来自业务理解的特定规则集来模拟用户操作,或者利用开源数据集来启动模型训练。但是,该模型可能不一定代表实际数据,因此在开始挑选(也称为学习)最终用户的真实行为之前,不会表现良好。

什么都属于模特再培训的范围?

  • 更新模型参数?
  • 在超参数搜索空间上重复
  • 在候选算法池中重新运行模型选择管道
  • 如果这也不能提升模型的性能,那么我们是否需要在模型中引入新的特性,也许重新进行特性工程和选择流程?

理想情况下,再培训包括用新数据运行整个现有管道,就是这样。它不涉及任何代码更改或重新构建管道。

然而,如果您最终探索了在先前模型训练时可能不可用的新算法或特征,那么在部署重新训练的模型时合并这些将进一步提高模型准确性。

如何衡量模型性能的下降?

假设预测值与地面真实值一起存储和映射,则在连续的基础上计算下降(或不下降)以评估漂移。

但是,如果预测的地平线在更远的未来,我们不能等到地面真实标签被观察到,以评估模型的良好性。那么,在这种情况下,我们可以通过回溯测试来粗略估计再培训窗口。这包括使用历史数据中的基本事实标签和预测来估计准确性开始下降的时间范围。

实际上,寻找模型漂移的整个过程可以归结为推断两个数据集(训练和测试)是否来自同一个分布,或者性能是否低于可接受的范围。

让我们看看评估分布漂移的一些方法:

  • **直方图:**可视化比较的一个快速方法是绘制直方图——两个直方图之间的重叠程度给出了相似性的度量。
  • **K-S 统计:**检查即将出现的新数据是否与训练数据属于同一分布。
  • **目标分布:**检查 ML 模型一致性预测能力的一个快速方法是检查目标变量的分布。例如,如果您的训练数据集不平衡,99%的数据属于类 1,剩余的 1%属于类 0。并且,预测反映这种分布在 90%-10%左右,那么它应该被视为进一步调查的警报。
  • 相关性:监测单个预测因子之间的成对相关性将有助于揭示潜在的漂移

再培训策略:

固定周期间隔

  1. 动态周期性—如果传入的数据经常变化,模型重新训练甚至可以每天进行。
  2. 与上面的方法相比,自动监控性能指标以决定再训练触发点更加有效。您需要确定指定可接受的绩效差异水平的阈值,以启动再培训。在决定阈值时,需要考虑以下因素:
  • 过低的阈值将导致频繁的重新训练,这将导致计算成本方面的开销增加
  • 过高的阈值将输出“偏离预测”

再培训前应该收集多少新数据?

应该是“n 行进,n 行出”吗?或者,我们应该继续添加新数据而不删除旧数据。什么是好的搭配?对此,没有“一个解决方案适合所有人”的答案,但很大程度上取决于以下因素:

  • 如果业务经验表明新数据是高度动态的,那么通过替换旧数据来包含新数据。
  • 但是,如果数据漂移不经常发生,那么就等待收集足够的新训练数据样本。

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

再训练信号触发,来源:作者

参考文献:

当密码遇到 ML

原文:https://towardsdatascience.com/when-crypto-meets-ml-79ed4e2aba7d?source=collection_archive---------41-----------------------

对加密图像应用均值过滤器(使用完整的 Colab 笔记本)

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

杰森·黑眼在 Unsplash 上的照片

在这篇文章中,我们将看到如何使用同态加密对加密图像进行均值滤波【1】【2】。为什么会有人这么做?嗯,只要你在本地进行处理,加密就没有意义,但如果你想使用在线服务,你确定要把你的个人图像交给远程网络服务器吗?如果你的答案是否定的,请继续阅读这篇文章。

为什么是均值滤波器?

均值滤波器用于创建模糊效果。在某些情况下,这种效果有助于消除图像中的噪点。有许多 web 服务允许您对图像应用均值过滤器【3】【4】。所有这些服务都按照以下步骤工作:

  1. 你把图像上传到网络服务器上
  2. 在服务器上处理图像(应用均值滤波器)
  3. 你下载服务器返回的经过处理的图像

这种方法的主要问题是隐私:你将你的个人图像交给一个你一无所知的远程服务器!为了解决这个问题,我们在上述过程中增加了两个步骤:

  1. 您使用您的公钥加密图像
  2. 你把加密图像上传到网络服务器上
  3. 服务器处理加密的图像
  4. 你下载服务器返回的加密结果
  5. 解密你下载的东西

图像在服务器上的所有时间都是用你的公钥加密的。为了让服务器能够解密它,它需要你的私钥,只有你知道😎

幕后

为了加密图像,我们将使用 Paillier 密码系统【5】。该方案关于加法和常数乘法是同态的。这对派利尔计划意味着什么?
关于加法的同态是指,如果 c1m1 的密文 c2m2 的密文,那么 c1c2* 是 m1+m2 的密文。 关于常数乘法的同态是指,如果 cm 的密文, k 是一个大家都知道的常数,那么 c^k 就是 ck.* 的加密由于除法就是乘法我们也可以用一个常数做同态除法。如果你想了解更多关于 Paillier 加密方案的信息,请查看这个漂亮的解释。
对于本帖,我们不需要该方案的所有细节,这已经在 phe 库中实施【6】

主要思想

为了应用维度为 kxk 的均值滤波器,我们简单地用当前像素位于中心的 kxk 正方形中所有像素的均值替换每个当前像素。所以,均值滤波器的核心由一个和后面跟着一个常数值的除法组成( k ,大家都知道)。这听起来像是 Paillier 加密的完美应用😁
如果我们使用 Paillier 方案加密图像,我们可以直接计算加密像素的总和。然后,如果我们将加密的总和除以一个常数(这是滤波器的大小),我们将得到像素的加密平均值。

服务器将永远不需要知道原始图像来应用均值滤波器。

如果你正在寻找一个完整的实现和进一步的解释, 这里 ,我已经为你准备了一个 Colab 笔记本,可以在你的浏览器上运行😉

参考

[1]https://medium . com/privacy-preserving-natural-language-processing/同态-encryption-for-初学者-a-practical-guide-part-1-b 8 f 26d 03 a 98 a

[2]https://homepages.inf.ed.ac.uk/rbf/HIPR2/mean.htm

[3]https://www10.lunapic.com/editor/?action=blur

[4]https://pinetools.com/blur-image

[5]https://medium . com/coin monks/paillier-shines-a-light-on-a-new-world-of-computing-15c aceed 3 ab

https://pypi.org/project/phe/

当数据遇到汉堡——探索性数据分析

原文:https://towardsdatascience.com/when-data-meets-burgers-exploratory-data-analysis-bd1f10f3b168?source=collection_archive---------49-----------------------

麦当劳菜单的探索性数据分析。

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

我们将使用熊猫图书馆对麦当劳菜单进行分析。(来源— 越轨艺术中的潘杜莫尼姆

你好。你将如何完成爬山的任务?你会直接走到顶端吗?或者你会探索基地并找到到达顶端的最佳路线吗?第二个想法似乎是更好的选择。为什么我要说山?你很快就会找到答案。在此之前,请观察堆积如山的数据科学。

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

使用 Canva 创建

导入数据集,选择合适的算法,应用.fit() 函数,调整超参数以减少损失函数,以及 BAMM!!!!!!您将获得您的准确性指标!上述过程只是大部分 MOOCs 和在线课程上教授的机器学习范式的概述。
等待…!!!!!

如果你认为你会一直处理干净的数据,那么你就错了。现实生活中的数据是杂乱的。它包括缺失值、错误的数据类型、大量不必要的列等等。那你怎么处理这个?

这就是探索性数据分析(EDA) 的用武之地。它是清理数据并使用适当的可视化工具来提取见解和总结数据的过程。例如,假设我们正在使用线性回归模型,我们的数据集包含一些与目标变量完全不相关的特征。不移除这些功能并运行模型不会产生最佳结果。因此,在对数据应用伟大的深度学习模型之前,EDA 是必须的。(这就是为什么我一开始就用了山这个比喻!)

在现实世界中,EDA 没有固定的流程。这取决于我们正在处理的数据。我们将使用麦当劳菜单数据集执行 EDA 和 Pandas 库,以及 Matplotlib 和 Seaborn 进行数据清理和数据可视化。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

理解数据

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

我们可以看到数据集总共有 260 行和 24 列。类别栏表示某个项目是否属于早餐、冰沙、沙拉等。我们还可以注意到一些栏目,如总脂肪、胆固醇等。有两栏,其中一栏表示以克为单位的数量,而“每日价值百分比”可以告诉你一份食物中的营养成分是高还是低,以及一份食物对你每日饮食中每种营养成分的贡献是多还是少。(引自 fda.gov)

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

**例如:**看看一份鸡蛋松饼中的钠含量(最后一栏)。31%的%DV(%每日价值)对你的饮食贡献大还是小?该产品含有 31%的钠 DV,这表明这是一种高钠产品(如果一个项目的 DV 超过 20%,则被视为高!).如果你吃了 2 份鸡蛋松饼,那就能提供 62%的钠摄入量——接近一整天钠摄入量的 60%。因此%DV 大于 20 的物品被认为是不健康的。

数据清理

观察上面的鸡蛋松饼排。你可以注意到总脂肪是 13,饱和脂肪是 5,胆固醇是 260,钠是 750。如果我们绘制这些值的条形图,看起来钠在该项目中占主导地位,但事实并非如此,因为这些值不在同一范围内(因此我们可以删除这些列)。

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

使用 Canva 创建

此外,像服务大小的列可以被删除,因为缺乏他们的贡献。

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

为了方便起见,在删除列并重命名所有列之后,我们可以注意到我们有 260 行和 16 列。我们还可以注意到,所有的列类型都是合适的。

处理缺失值

当给定行中的某一列没有数据值时,我们称之为缺失值。处理缺失值是很重要的,因为它们可能导致弱的/有偏见的分析。让我们使用热图来直观显示每列中缺失值的数量。df.isnull()方法返回一个布尔值,说明每个单元格是否有值。通常,热图会根据数据值为每个数据单元格分配一种颜色。

sns.heatmap(df.isnull())
plt.show()

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

我们可以用两种方法替换缺失值:
1。删除— 处理缺失值的最简单方法。可以使用dropna()方法完成。但由于数据丢失,这不是最佳解决方案。
2。到处都遵循的标准方法。使用fillna()方法,用该列的平均值/中值替换缺失值。
3。插值— 使用线性插值来猜测缺失值并填充数据。

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

我们现在可以观察到所有的列都没有缺失值。

比较类别

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

我们可以注意到,有 9 个独特的项目类别,这意味着总共 260 个项目分为 9 个类别。饼图显示,咖啡和茶类在菜单中占主导地位,而沙拉类最少。

根据营养成分比较类别

让我们试着分析哪一类蛋白质、胆固醇、脂肪等含量更多。在可视化数据之前,理解 pivot_table()的概念很重要。让我们看一个例子。

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

除了钠值的np.mean(),我们还可以执行其他聚合函数,如np.max()np.sum()等。因为我们是按类别比较营养值,所以最好取平均值。

类似于上面的例子,让我们为类别和蛋白质创建一个 pivot_table,并尝试理解其分布。让我们绘制所有平均蛋白质值 wrt 的柱状图。到类别。

我们可以使用熊猫内置的plot()方法来创建情节。因为我们要创建一个柱状图,所以我们将柱状图作为参数传递给种类参数。

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

我们可以注意到,鸡肉和鱼肉的蛋白质含量最高。同样,让我们按类别分析所有的营养分布。

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

不出所料,我们可以注意到思慕雪中有更多的糖,沙拉中有更多的维生素 A 和维生素 C。鸡肉和鱼肉中的卡路里含量较高,而牛肉和猪肉中的铁含量较高。正如第一个柱状图所示,由于胆固醇含量高,最好在家吃早餐。

您认为条形图在描述离散类别之间的比较时是否正确?这里我们计算了所有项目类别的平均值,并创建了一个条形图。但是我们也知道均值对异常值非常敏感。
*异常值在上面的柱状图中起作用吗?*为了了解每个项目的分布,我们可以创建群体图。 在群体图中,每一列中的每一项都用一个点来表示,而不是像条形图那样取该特定类别中所有项的平均值。

让我们为维生素 C 和类别列创建一个群集图,并将其与条形图进行比较。

我们可以使用 Seaborn 的swarmplot()方法创建一个群体图。为了便于阅读,X 轴标签旋转了 90 度。

sns.set(style="whitegrid", color_codes=True)ax1= sns.swarmplot(x="Category", y="Vitamin C", data=df)
ax1.set_xticklabels(ax1.get_xticklabels(),rotation=90)

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

这里我们可以看到蜂群图由所有项目的维生素 C 值组成。类别。在查看群集图时,我们可能假设饮料或小吃和配菜类别的维生素 C 含量最高,但是经过仔细观察,我们可以注意到这两列中零值项目(在群集图中圈出)的数量远远多于沙拉列,后者的所有值都在 20-30 左右。与其他两列相比,这导致沙拉类别的平均值更高。同样,我们可以为其他类别创建群体图,并对其进行分析。

选择合适的情节是洞察力产生的关键部分。

相互关系

这是一种用于描述数据集的特性(不同列)之间的相互依赖性的度量。两个变量之间的强正相关(接近 1)意味着一个变量的增加会导致另一个变量的增加。负相关(更接近-1)意味着一个变量的增加导致另一个变量的减少。如果该值更接近 0,则意味着它是弱相关/无相关。

注意:相关性仅在线性关系的情况下有用。在非线性关系的情况下,相关性往往会低估相互依赖性。

correlation_matrix = df.corr()
ax = sns.heatmap(correlation_matrix, square=True, annot = True, mask=mask, fmt = ".1")
ax.set_xticklabels(ax.get_xticklabels(),rotation=90)

我们可以使用 Seaborn 的heatmap()方法创建一个热图。如果annot参数为真,则相关值显示在每个单元格中,并且fmt参数限制小数点。为了便于阅读,X 轴标签旋转了 90 度。

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

好吧,没有令人震惊的事实被发现!相关矩阵证实了卡路里数随总脂肪量增加的观点(0.9 表示强正相关)。糖和铁之间存在微弱的负相关性,表明这两个特征彼此成反比。我们还可以注意到,铁和维生素 C 没有相关性(几乎为零表示没有相关性!).现在让我们试着回答一个有趣的问题!

烤的还是脆的?哪个是健康的?

在浏览数据集时,我发现 13 种食物有两种不同的口味,一种是烤的,另一种是脆的。我用柱状图来了解这些食物中卡路里和脂肪的分布,从而得出结论。

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

我将数据按项目分类,并根据烧烤或酥脆储存热量和脂肪。现在我们可以生成水平条形图来获得更好的图片。

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

嗯,图说故事。如果你在节食,最好有烧烤食物!

完整代码可从 Github 这里获得。

结论

在应用机器学习和深度学习之前,我试图解释探索性数据分析的重要性。希望您已经掌握了一些概念,这些概念将有助于您实时执行 EDA。没有特定的方法,不同的数据集有不同的方法。请随时分享您的反馈和回应。如果你今天学到了新东西,请举手。

当数据科学让我们失望时

原文:https://towardsdatascience.com/when-data-science-fails-us-78599de6423c?source=collection_archive---------36-----------------------

过去的趋势与预测未来的趋势有多相关?

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

马修·巴黎水在 Unsplash 上的照片

2020 年是非常特殊的一年,covid 在年初风靡全球,改变了所有行业的计划。时间表已经改变,客户互动已经转变,内部沟通也不再物质化。因此,我们所有基于前几年和历史智慧的模型都受到了质疑和挑战。它们在今天的环境中有什么相关性?

“我们如何协调利用过去作为指导的需要和我们对未来可能不同的认识?”信号和噪音

史料什么时候能忽悠你?

数据科学中的一个常见做法是检查可用的历史数据,以便得出有用的结论来进行更好的规划。

研究 90 年代的欧洲市场肯定会对历史学家有很大帮助;但是,既然机构和市场的结构已经发生了如此大的变化,我们还能做出什么样的推论呢?纳西姆·塔勒布

数据集是过去发生的事情的表格表示。但是这种表示也伴随着不确定性、偏差和误差。此外,它仅代表您正在研究的现象的一个子集,可能无法反映与您的问题相关的子集(数据可用性)。

回顾历史数据时,应注意以下几点:

  • 分配可能不是固定的
  • 今天的初始条件不同
  • 行动者(贡献者)已经进化
  • 外部互动已经进化
  • 如何兼顾随机性
  • 未知的未知(你甚至没有意识到并且没有包括在内的事情)

在这种情况下,相似的输入可以导致不同的结果。

你的药真的有效吗?:数据选择步骤

在设计临床试验时,一个重要的步骤是选择患者群体。应该选择哪个人口类别?哪个年龄组,他们的状况如何,他们的起源,他们的生物标记?我们如何确保这个样本尽可能接近我们想要提供药物的目标客户,而不遗漏任何一个人?

相反,如果您的样本不能准确代表总体,您的药物可能不如您的试验显示的有效。例如,如果你为乳腺癌患者开发一种药物,但你的样本中不包括肥胖的糖尿病患者,你可能会发现这些人对治疗反应不佳,不能使用它。

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

国立癌症研究所Unsplash 上拍摄的照片

这同样适用于使用历史数据来建立推论,但其局限性更难以把握。如果你看看所有过去的金融贷款数据,你可能会认为它们反映了总的趋势,未来很可能也是如此。然而,这些金融贷款可能只发放给了拥有足够财富的人,并没有考虑到其他人,因为他们甚至没有包括在数据集中。

真的有因果关系吗?:协变量移位

当模式主要是方差和随机性的反映时,确定的因果关系将误导对现象的实际行为的理解。正如纳西姆·塔勒布在他的书《被随机性愚弄》中指出的,这就是一些从交易结果的差异中受益的非常成功的交易者的遭遇。[1]

“许多人是如此缺乏独创性,他们研究历史以寻找重复的错误”纳西姆·塔勒布

挑战可能更加微妙,因为最近的一项研究发现,一些经过训练可以在胸部 x 射线上检测肺炎的模型在训练集中看不到的实际数据上的结果较差。这部分是由于图像采集和处理的差异。[2]

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

协变量偏移是指输入的训练集不同于真实世界的数据(作者的图片)

这就是我们所说的协变量转移。与训练集相比,生产模型(真实设置)中输入变量的分布不同。

在美国黑人更容易成为警察的目标吗?:分母偏差

模型不仅是从数据中构建的,更重要的是从我们决定关注的可用(相对于不可用)数据的子集构建的。这个决定会影响模型学习的方向,并导致更多的歧视。

劳拉·布朗纳在她的文章中揭露了针对黑人社区暴力的误导性统计数据。[3]许多公布的统计数字与每次遭遇警察时的死亡人数有关。然而,这些统计数据掩盖了以前发生的歧视,当时警察有权决定在街上与谁打交道。这些措施的分母不应是遭遇,而是人口。

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

妮可·巴斯特在 Unsplash 上的照片

同样,唐纳德·特朗普(Donald Trump)在接受 HBO 采访时表示,以每名感染者的死亡人数衡量,美国与其他国家相比表现良好。

在采访的 14’-15 '左右,川普试图利用这一统计缺陷为美国在打击疫情方面的糟糕表现辩护。下图突出了他推理中的统计缺陷。

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

(图片作者)

在这个例子中,B 国在相同的人口中有更多的感染病例和更多的死亡。对于两个人口相当的相似国家,理性的思考会表明,A 国对疫情的管理比 b 国好

然而,如果你看看每个感染者的死亡比例,如测试结果所示,情况就不同了。特朗普在视频中就是这么做的。在上面的例子中,A 国的死亡率为 0.23,而 B 国的死亡率仅为 0.2。

这一指标将突出更好的检测能力或全球人口的更高感染率。这使得人们很难理解一个国家如何能够更好地控制病毒的传播及其死亡率。

少数人的智慧:网络偏见

网络偏见的发生是因为网络活动的扭曲本质。里卡多·巴埃萨-耶茨[4]的一项研究表明:

  • 亚马逊 50%的评论来自前 4%的活跃用户
  • 50%的脸书帖子来自前 7%的活跃用户

这表明,我们看到的大部分信息来自少数来源,这种模式也被称为少数人的智慧:一小群精心挑选的用户是预测活动的良好代理。然而,进一步的分析表明,许多顶级用户来自软件或发布低质量的内容。很明显,原始用户数据不能用来做出这样的推论。

当数据和机器学习不足以预测时

“在现在与过去最不相似的时刻,回顾过去寻找未来的线索是没有意义的”j·彼得·斯考布里克

如果未来看起来与过去截然不同,那么把你对未来的所有决定建立在你目前所经历的基础上就不再有效了。你正在错过机会,因为你没有看到世界是如何变化的。

在一个未来似乎与过去截然不同的世界里,这种识别模式的能力甚至可能是一种劣势,因为你会假设你知道接下来会发生什么,但你会错。你会对未来做出不正确的假设。

“历史告诉我们,以前从未发生过的事情会发生。[……]历史教导我们避免天真的经验主义,这种经验主义是从偶然的历史事实中学习而来的。”纳西姆·塔勒布

即使我以前见过类似的东西,这次可能会有所不同。因此,与其对将要发生的事情做出假设,我怎么才能快速了解新趋势,我怎么才能知道我对将要发生的事情的想法是好是坏?

根据您的需求,有些工具可能很有价值:

  • 情景思维有助于应对多变的商业环境。
  • 蒙特卡洛模拟可以揭示可能的未来及其影响。
  • 敏捷建模有助于理解可变性。

场景是一个对未来有重大影响的“如果…会怎样”的大问题

结论

大多数模型都基于我们可以预测未来的假设,但在当今复杂多变的环境中,有时我们做不到。

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

SeanUnsplash 上拍照

参考

[1] 纳西姆·塔勒布,被随机性愚弄:机会在市场和生活中的隐藏角色。纽约:Texere,2001 年。

[2] Zech JR,Badgeley MA,Liu M,Costa AB,Titano,Oermann EK (2018)深度学习模型检测胸片肺炎的可变泛化性能:一项横断面研究。PLoS Med 15(11): e1002683。https://doi.org/10.1371/journal.pmed.1002683

fivethirtyeight.com,劳拉·布朗纳,为什么统计数据没有反映出警察系统偏见的全部程度

[4] 里卡多·巴埃萨-耶茨。2018.卷筒纸上的偏差。Commun。ACM 61,6(2018 年 6 月),54–61。土井:https://doi.org/10.1145/3209581

当数据科学遇上足球(第 1 部分):简介

原文:https://towardsdatascience.com/when-data-science-meet-football-part-1-introduction-4cf9d0207ebd?source=collection_archive---------32-----------------------

足球数据科学导论

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

照片由本斯·巴拉-肖特纳Unsplash 拍摄

在足球比赛中利用数据对于发展球员技能或比赛分析已经变得非常重要。今天,我们可以比以前更深入和详细地讨论足球世界。对于刚开始在足球领域探索数据分析的你,有 WyscoutOpta 等第三方提供的公开数据集。

数据集包含足球比赛事件(例如,球员和比赛统计)。我们可以探索这些数据,努力更深入地理解足球数据。在这一节中,我们将检查进行足球分析的变量。

让我们开始吧,如果你想看这篇文章的完整代码,请访问我的 github 。在本文中,我们将使用 Jupyter 笔记本作为代码编辑器。如果你不熟悉 Jupyter 笔记本,可以看看下面这篇文章。你可以自由使用另一个代码编辑器,不必遵循我所使用的。

[## 1.Jupyter 笔记本是什么?- Jupyter/IPython 笔记本快速入门指南 0.1 文档

在这一页中,简要介绍 Jupyter 笔记本环境的主要组件。有关更完整的概述…

jupyter-笔记本-初学者指南. readthedocs.io](https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html)

首先,我们必须下载所需的数据。本文将使用 Pappalardo 等人(2019) 研究中使用的数据集。你可以在这里 下载数据集

导入包

如果您已经下载了所需的数据集,下一步就是导入将要使用的包。这里我们将使用collectionsjson包,它们是 python 和matplotlibnumpy的内置函数。

如果您还没有安装我最后提到的一个或两个软件包,请首先使用下面的命令安装它们。

$ pip install numpy
$ pip install matplotlib

安装完包之后,进入前面提到的包。

%matplotlib inline

**from** **collections** **import** defaultdict
**import** **matplotlib.pyplot** **as** **plt**
**import** **numpy** **as** **np**
**import** **json**

加载公共数据集

我们可以通过编写下面的代码来加载数据集。数据集从 figshare 存储库中导入,并以 JSON 格式存储。在这个会话中,我们导入比赛、球员、比赛和球队数据。也可以看看这个 Github 作为参考,作为我做这篇文章的灵感。

def load_dataset(tournament):
    matches, events = {}, {}
    matches = json.load(open('./data/matches/matches_{}.json'.format(tournament)))
    events = json.load(open('./data/events/events_{}.json'.format(tournament)))
    players = json.load(open('./data/players.json'))
    competitions = json.load(open('./data/competitions.json'))
    teams = json.load(open('./data/teams.json'))
    return matches, events, players, competitions, teams

之后,我们定义函数来获取我们需要的每一个数据。从比赛和事件开始。

def get_match(matches, events):
    match_id2events = defaultdict(list)
    match_id2match = defaultdict(dict)
    for event in events:
        match_id = event['matchId']
        match_id2events[match_id].append(event)

    for match in matches:
        match_id = match['wyId']
        match_id2match[match_id] = match

玩家。

def get_player(players):
    player_id2player = defaultdict(dict)
    for player in players:
        player_id = player['wyId']
        player_id2player[player_id] = player
    return player_id2player

竞赛。

def get_competitions(competitions):
    competition_id2competition = defaultdict(dict)
    for competition in competitions:
        competition_id = competition['wyId']
        competition_id2competition[competition_id] = competition
    return competition_id2competition

团队。

def get_teams(teams):
    team_id2team = defaultdict(dict)
    for team in teams:
        team_id = team['wyId']
        team_id2team[team_id] = team
    return team_id2team

现在,一切都准备好了。让我们加载数据。这里我们只使用 2018 年世界杯数据,所以输入World_Cup参数。

matches, events, players, competitions, teams = load_dataset('World_Cup')

之后,我们将数据转换成字典形式。

match_id2events, match_id2match = get_match(matches, events)
player_id2player = get_player(players)
competition_id2competition = get_competitions(competitions)
team_id2team = get_teams(teams)

探索数据结构

在这里,我们将尝试查看每个数据的结构。例如,我们可以在字典中显示索引为 32777 ( player_id2player[32777])的球员相关信息。如你所见,我们可能有很多关于球员的信息,从护照区域信息到球员在 Wyscout 系统中的标识符。

{'passportArea': {'name': 'Turkey',
  'id': '792',
  'alpha3code': 'TUR',
  'alpha2code': 'TR'},
 'weight': 78,
 'firstName': 'Harun',
 'middleName': '',
 'lastName': 'Tekin',
 'currentTeamId': 4502,
 'birthDate': '1989-06-17',
 'height': 187,
 'role': {'code2': 'GK', 'code3': 'GKP', 'name': 'Goalkeeper'},
 'birthArea': {'name': 'Turkey',
  'id': '792',
  'alpha3code': 'TUR',
  'alpha2code': 'TR'},
 'wyId': 32777,
 'foot': 'right',
 'shortName': 'H. Tekin',
 'currentNationalTeamId': 4687}

我们还可以使用下面的代码探索其他数据的结构。

match_id2events[2058017]

这就是结果。

{'status': 'Played',
 'roundId': 4165368,
 'gameweek': 0,
 'teamsData': {'9598': {'scoreET': 0,
   'coachId': 122788,
   'side': 'away',
   'teamId': 9598,
   'score': 2,
   'scoreP': 0,
   'hasFormation': 1,
   'formation': {'bench': [{'playerId': 69964,
      'assists': '0',
      'goals': 'null',
      'ownGoals': '0',
      'redCards': '0',
      'yellowCards': '0'},
...
 'seasonId': 10078,
 'dateutc': '2018-07-15 15:00:00',
 'winner': 4418,
 'venue': 'Olimpiyskiy stadion Luzhniki',
 'wyId': 2058017,
 'label': 'France - Croatia, 4 - 2',
 'date': 'July 15, 2018 at 5:00:00 PM GMT+2',
 'groupName': '',
 'referees': [{'refereeId': 378051, 'role': 'referee'},
  {'refereeId': 378038, 'role': 'firstAssistant'},
  {'refereeId': 378060, 'role': 'secondAssistant'},
  {'refereeId': 377215, 'role': 'fourthOfficial'}],
 'duration': 'Regular',
 'competitionId': 28}

其他数据可以自己试试。如果你需要例子,我已经在 Github 上提供了。

可视化数据

我们可以通过将数据绘制成更具交互性的视图来进行有趣的数据分析。例如,我们可以将所有球员的身高绘制成直方图。

heights = [player['height'] **for** player **in** player_id2player.values()   **if** player['height'] > 0]fig,ax = plt.subplots(1,1)
ax.hist(heights)
ax.set_title('histogram of height')
ax.set_xlabel('height [cm]')
ax.set_ylabel('frequency')
plt.show()

这就是结果。

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

高度直方图

或者你可以做这个。

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

重量直方图

除了分析球员统计数据,我们还可以通过在比赛数据中发现事件来进行其他有趣的分析。编写下面的代码,创建一个函数来标识匹配事件的数据结构。

event_key = []
sub_event_key = []

for events **in** match_id2events.values():
    for event **in** events:
        event_key.append(event['eventName'])
        sub_event_key.append(event['subEventName'])

event_key = list(set(event_key))
sub_event_key = list(set(sub_event_key))event_stats = []
sub_event_stats = []**for** events in match_id2events.values():
    event_stat = {key: 0 for key in event_key}
    sub_event_stat = {key: 0 for key in sub_event_key}

    for event in events:
        event_stat[event['eventName']] += 1
        sub_event_stat[event['subEventName']] += 1 event_stats.append(event_stat)
    sub_event_stats.append(sub_event_stat)

这是event_key变量的结果。

{'Duel',
 'Foul',
 'Free Kick',
 'Goalkeeper leaving line',
 'Offside',
 'Others on the ball',
 'Pass',
 'Save attempt',
 'Shot'}

而这是sub_event_key变量的结果。

{'',
 'Acceleration',
 'Air duel',
 'Clearance',
 'Corner',
 'Cross',
 'Foul',
 'Free Kick',
 'Free kick cross',
 'Free kick shot',
 'Goal kick',
 'Goalkeeper leaving line',
 'Ground attacking duel',
 'Ground defending duel',
 'Ground loose ball duel',
 'Hand foul',
 'Hand pass',
 'Head pass',
 'High pass',
 'Late card foul',
 'Launch',
 'Out of game foul',
 'Penalty',
 'Protest',
 'Reflexes',
 'Save attempt',
 'Shot',
 'Simple pass',
 'Simulation',
 'Smart pass',
 'Throw in',
 'Time lost foul',
 'Touch',
 'Violent Foul'}

我们可以看到比赛事件有一些有趣的变量。我们可以分析每个变量,以获得更有意义的匹配分析。例如,我们可以在我们的字典(event_stats[0])的第一场比赛中打印一些事件统计数据。

{'Goalkeeper leaving line': 0,
 'Duel': 468,
 'Free Kick': 105,
 'Offside': 4,
 'Others on the ball': 128,
 'Foul': 32,
 'Shot': 18,
 'Pass': 827,
 'Save attempt': 7}

就像前面一样,我们还可以为匹配事件中的每个变量创建一个直方图,以简化分析过程。我们来做一个直方图。

pass_stat = [event['Pass'] for event in event_stats if 'Pass' in event]
fig,ax = plt.subplots(1,1)
ax.hist(pass_stat)
ax.set_title("histogram of passes")
ax.set_xlabel('passes')
ax.set_yticks([0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
ax.set_ylabel('frequency')
plt.show()

这就是结果。

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

通道直方图

你也可以做这个。

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

镜头直方图

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

守门员离场线直方图

最后,你也可以创建目标统计。

scores = []
for match in match_id2match.values():
    score = 0
    for team in match['teamsData'].values():
        score += team['score']
    scores.append(score)

然后使用这段代码查看统计数据。

scores = np.array(scores)
fig,ax = plt.subplots(1,1)
ax.hist(scores, bins = [0, 1, 2, 3, 4, 5, 6, 7])
ax.set_title("histogram of goals")
ax.set_xticks([0, 1, 2, 3, 4, 5, 6, 7])
ax.set_xlabel('goals')
ax.set_yticks([0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
ax.set_ylabel('frequency')
plt.show()

这就是结果。

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

目标直方图

上面的教程是对足球分析如何工作的介绍。在下一篇文章中,我们将探索更复杂的数据。

参考

  • 卢卡·帕帕拉多;伊曼纽马苏科(2019 年):足球比赛事件数据集。figshare。收藏。https://doi.org/10.6084/m9.figshare.c.4415000.v5
  • Pappalardo 等,(2019) 足球比赛时空比赛事件公开数据集,《自然科学数据》6:236,https://www.nature.com/articles/s41597-019-0247-7
  • Pappalardo 等人(2019) PlayeRank:通过机器学习方法在足球比赛中进行数据驱动的表现评估和球员排名。ACM 智能系统与技术汇刊(TIST) 10,5,第 59 条(2019 年 9 月),27 页。https://doi.org/10.1145/3343172

当数据科学遇到数据工程

原文:https://towardsdatascience.com/when-data-science-meets-data-engineering-48f982dfb566?source=collection_archive---------30-----------------------

如何让他们很好地合作

随着数据行业变得越来越成熟,我们现在看到越来越多的角色专业化。在整个数据科学/分析生命周期中,拥有涵盖不同需求的不同技能组合的人固然很好,但专业化的兴起意味着我们需要开始定义工作方式,使不同的角色能够有效地合作。数据团队中最常见的工作关系之一是数据科学家和数据工程师之间的关系。这种关系可能存在的时间最长,但绝不是一种很好理解的关系。我一直在与业内不同的人交谈,有趣的是,似乎没有让这两个角色相互合作的最佳方式。因此,我们将看看为什么这些角色需要一起工作,了解两者之间的差异和潜在的紧张关系。最重要的是,看看几种不同的工作方式,并强调一些利弊,以帮助您找到适合您团队的方式。

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

Unsplash 上拍摄的“我的镜头人生”

为什么数据科学家和数据工程师需要合作?

数据科学和数据工程是一枚硬币的两面,因为要从数据中获得价值,我们需要数据科学家创造性的问题解决方案和商业敏锐度,我们需要数据工程师稳健的实施和可扩展的架构。没有彼此,两者最终都不会有效地提供一个好的解决方案。在更实际的层面上,这两个角色需要很好地合作,因为他们的工作在解决方案开发过程中来回交织。因为一个人的工作何时结束和另一个人的工作何时开始之间没有明确的界限,这可能会在两个学科之间产生不健康的紧张关系。

数据科学和数据工程必须很好地合作,因为它们在整个开发过程中会多次交互。与我们在该流程中的其他关键关系相比,例如后端和前端开发以及应用程序开发和运营,双方只需有一个单一的界面来提供解决方案。数据科学和工程在整个过程中需要更加流畅的交互和协作,这是由于数据工作的以下特征。

数据科学不是一个简单的解决方案

实验是数据科学的核心,从数据中获取价值的很大一部分是从数据中发现见解,设计可以利用这些见解的算法。根据定义,这是一个迭代过程,它需要两端的工程,从管理和提供可靠的数据馈送到获取算法并使其可用于其他系统和过程。

数据工程建立在数据上,而不是规范上

软件工程师根据规范构建解决方案,但这对数据工程师来说还不够,因为数据系统是建立在数据之上的,而规范通常不会涵盖现实生活中数据的所有细微差别和错误。数据工程师需要不断调整和改进数据处理方式,以确保下游用户和应用获得及时准确的数据。为了有效地做到这一点,数据工程师应该利用数据科学家对业务的理解和对数据的熟悉。

这只是两个明显的例子,这两个学科需要很好地合作,但这表明这里绝对需要合作。因此,让我们探讨一下这两种角色之间的主要区别,以了解紧张感来自哪里,更重要的是如何改善两者之间的工作关系。

有什么区别?

对于那些参与这场辩论的任何一方的人来说,数据工程师将数据科学家视为不知道如何编程的牛仔编码员并不罕见,而数据科学家认为数据工程师是花费太长时间来构建数据管道并且不理解业务逻辑的开发人员。两者的区别在于他们的背景、经历和动机所形成的观点冲突。

背景

数据科学家大多来自商业背景,而数据工程师大多来自计算机科学背景。我相信学科的选择仅仅代表了他们已经是谁,所以尽管毫无疑问,这两个学科经历了不同的课程,但这不是形成两种不同观点的原因。在数据科学成为一个独立的学位之前,工作数据科学家来自统计学、经济学、精算学和其他专注于使用数学解决现实世界问题的定量领域。另一方面,在数据工程成为一个独立的主题之前,数据工程师来自软件和数据库开发,他们更关注技术解决方案而不是应用程序。这不是巧合,因为从根本上说,他们是不同的人,有不同的兴趣。然而,现在发生的变化是,随着数据和技术成为大多数公司关注的焦点,这两者紧密合作的压力增加了,从而使它们的差异受到关注。

经验

随着人们一起工作,这些差异被放大了,如果没有对彼此优势的正确理解,这两个学科之间的差距可能会扩大。考虑到学科的不成熟,这个领域的大多数人都没有很多与他人合作的经验。此外,因为这两个角色来自如此不同的背景,很容易期望对方理解你的优势,但这很少发生。

激励

了解如何根据绩效评估角色也很重要。从一个过于简单的角度来看,我们的数据科学家受到激励,最大限度地提高他们的见解或算法能够为企业带来的价值,并鼓励他们不断尝试新的方法和技术。随着时间的推移,这将不可避免地增加解决方案的复杂性,因为在大多数情况下,数据科学家不负责最终系统的可伸缩性和可操作性,所以他们没有动力确保他们的解决方案是可以构建和维护的。另一方面,数据工程师受到激励,以确保系统稳定和可管理,因为他们将确保系统长期按预期运行。这最终鼓励数据工程师降低复杂性,并阻止向系统中添加更改。在那里你可以看到两种不同的视角是如何在两个角色之间制造紧张关系的。

有效的参与模式?

认为目标是消除这种差异是错误的。我们需要这两者之间的张力来构建最佳解决方案,关键是找到一种方法来有效地利用这种张力,而不是让它在团队中引起不必要的摩擦。

清晰定义的界面

职能之间的模糊性是摩擦的来源,改善这种情况的一种方法是在数据科学家和数据工程师之间建立预定义的接口。实际的界限在哪里并不重要,重要的是它们在两个角色之间是一致的。虽然这种方式不鼓励完全协作,但它是减少模糊性的有效方法。通过设置界限,它鼓励每个团队对他们的可交付部分承担所有权和责任,无论是数据管道还是模型训练。这类似于 DevOps 的“您构建它,您运行它”原则,所有权是这里的关键主题,因为为了鼓励人们生产高质量的工作,他们需要在完成工作后负责维护他们的工作。

然而,实现这个策略最困难的部分是定义有意义的边界。数据科学和数据工程的实际界限在哪里?没有一个明确的答案,你可能会看到两个学科之间的界限。为了让这个模型工作,你需要让两个角色达成一致。还存在这样的风险,即每个团队生产出次优的工作,将责任推给另一方,这可能不利于整体的成功。也就是说,这仍然是一个被广泛采用的模式,在许多公司都行之有效。

跨职能团队

另一方面,我们有跨职能模式,在这种模式下,您有一个由学科和实现目标所需的其他职能组成的团队。这是一个更灵活的模型,因为它在团队中没有任何明确定义的角色。这种灵活性在实现新想法时表现得很好,因为需求更加模糊,变化更有可能发生。这种模式非常适合那些对彼此的能力有很好理解的团队,以及一个安全和协作的环境。您将看到这种模式运行良好,因为在没有任何指导的情况下,任务在团队内部被有效地委派。这有助于每个队友了解对方,学会欣赏自己的优势。这种模式通常需要更长的时间才能生效,并且需要团队结构和目标的稳定性,这是许多组织在数据之旅的早期阶段无法提供的。然而,如果操作得当,这种模式可以带来巨大的好处。

我们应该注意到,这只是数据科学家和数据工程师如何合作的两个例子,它们绝不是说明性的。这些参与模型的目的是通过强调每个学科对另一个学科的需求来促进两者之间的合作,并鼓励他们利用彼此的技能。随着技术让协作变得更容易,工作方式将会随着时间的推移而改变,但如果你希望你的团队一起出色地工作,你需要专注于让他们解决你需要他们解决的问题。需要一个强有力的领导者将不同背景的人团结在一起,这一点没有也不会随着时间的推移而改变。

如果您喜欢我的内容,请在 https://jchoi.solutions/subscribe注册更多内容

当每个人都成为“数据专家”时

原文:https://towardsdatascience.com/when-everyone-becomes-the-data-expert-a1c91109b4de?source=collection_archive---------57-----------------------

自助分析时代的人员和流程管理。

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

图片由 Unsplash 上的新数据服务提供

当我在 90 年代初开始我的开发生涯时,在互联网出现之前(是的,那是很久以前),没有像我们今天这样的数据可视化。相反,我们的“查询”基本上是黑白 DOS 屏幕上列出的信息,或者是用噪音很大的点阵打印机打印的信息,要花很长时间才能完成。只是在几年后,当我被介绍并发现“数据透视表”的力量时,我对数据可视化的兴趣才显示出第一个火花。剩下的就是历史了;如你所知,我们现在可以很舒服地看到我们的数据以我们愿意想象的任何形状或形式出现。只要我们检查数据模型、定义和集成等,就没有什么能阻止我们发现我们一直在寻找的趋势或能促进我们销售的功能/元素。

如果你没算错,你现在应该知道我在 IT 行业已经工作了 30 年,并且很高兴看到信息可视化发展到今天的样子。我很高兴越来越多的公司开始着手建立自助式数据分析。借助 PowerBI、Tableau 和 Metabase 等商业智能工具。然而,这个自我服务的新时代让我强调它伴随着责任;因此,是什么促使我写这篇文章。

通常,数据堆栈和模型、集成等等。并不总是完全符合标准。这可能来自几个原因;

  • 公司实际上经常淹没在自己生成的以及来自第三方应用和平台的数据中。
  • 数据团队缺乏更新文档的纪律和管理
  • (这很常见)我们没有给予数据治理和文档足够的重视
  • 好的数据工程师和科学家很难找到
  • 没有建立系统请求管道来给数据/商业智能团队他们迫切需要的时间来做所有必要的文档和检查。
  • 数据/商业智能团队经常人手不足
  • 最后但并非最不重要的一点是——“我需要这份报告,尽快放下你正在做的一切” 这种请求成为常态而不是例外。

时间、纪律和优先顺序是最重要的,以确保他们记录、测试和验证了他们提供给团队的表格。定期维护的数据定义、跟踪计划和验证检查是确保报告提供一致结果的关键,无论是谁创建的报告。

如果没有围绕您的数据的既定政策和治理,您最终会与使用旧的不一致的模型的人在一起,并与他们一起创建他们自己的仪表板-一场灾难即将发生。这体现在人们身上,随后引用与“官方”不同的数字。

然后事情发生了,突然之间每个人都变成了数据‘专家’,而且通常情况下,你的数据团队最终会花更多的时间来维护他们的仪表盘和数字,而不是其他任何东西。

当你知道你有问题的时候。

有几个“红灯”需要注意,我列出了几个来识别一些警示信号。

你知道你有一个问题,当:

  • 您有数百个新旧仪表板和报告,它们来自不同的数据源,不一定经过验证和确认
  • (我最喜欢的)首席执行官更喜欢“他自己”版本的收入报告,他自豪地把自己放在一起,只“相信”那份报告,因为…他自己做的🤓
  • 销售部的乔·布洛格斯引用了他自己的非官方销售数字
  • 在您的组织中,关键数据元素有不同的定义,它们各自在仪表板上的值与自制的值不一致。

有希望!

您能做些什么来确保数据质量和一致性?

  1. 给你的数据团队时间和空间来记录他们的工作。
  2. 建立“数据管道”,以便对数据请求进行优先排序和管理。
  3. 禁用尽可能多的旧报告和仪表板,当有人叫嚷要重新启用他们的报告时,只有在您对其进行了验证之后。
  4. 清理您的表并创建经过测试和验证的主表。
  5. 设置和维护您的数据定义,并确保每个人都可以访问它们,并且它们简单明了,任何人都可以理解。
  6. 建立“主仪表板,每个人都可以参与并理解这是每个人活动的焦点,测试它,验证它,并从那里开始。所有其他仪表板都应该指向并对应于主仪表板。

了解一个人需要一个人。

稍微坦白一下,因为我已经在 3 个国家管理数据和信息团队多年,所以我没有犯过这么多错误。从那些我已经指出的一些,我已经亲身经历过,也承认有时是罪魁祸首。所以,是的,这需要一个人去了解一个人,如果错误是造成一个人的原因,这可能使我有资格成为一个专家。虽然我很感激我有机会与不同的文化、人才和技能一起工作,但我直接知道事情并不总是像我们希望的那样简单。

专家是在一个狭窄的领域里犯了所有可能犯的错误的人。—尼尔斯·玻尔

总之,管理您自封的数据专家。

我希望你从这里学到的是,你的数据/BI 团队(我承认我可能有偏见,但我确实相信这一点)是你组织中最重要的部分之一。他们可以成就或摧毁一家企业,因为你的数据及其质量取决于他们,要在这个时代生存,你需要做出更多由数据驱动的决策,而不是像 Joe Blogg 所说的决策。要做到这一点,你需要你的信息准确、一致,并以一种与你的客户及其对你的产品/服务的行为相关的方式组织起来。

总而言之,要警惕自封的数据专家及其对你业务的影响。确保您的数据/商业智能团队是唯一的数据专家,支持他们,赋予他们权力,优先处理所有工作,并观察您的业务增长。

欢迎评论和反馈。

给我一行 rosi.bremec@gmail.com,DM 或评论

【https://www.linkedin.com】最初发表于

当难以解释小企业如何从大数据中受益时

原文:https://towardsdatascience.com/when-its-difficult-to-explain-how-small-businesses-can-benefit-from-big-data-731a09d7dacb?source=collection_archive---------57-----------------------

小型企业| INSTAGRAM |分析

我最终创建了一个非常简单的 Instagram 分析工具供他们使用,你可以在这里试试

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

照片由Unsplash

You can try "a very simple Instagram analytics" [**here**](/when-its-difficult-to-explain-how-small-businesses-can-benefit-from-big-data-731a09d7dacb#66ef)**.**

一点背景为了让背景变得清晰,我在一家初创媒体公司做产品分析师,之前做过两年数据分析师。在这个疫情,我的雇主没有强迫我来办公室。我没有像他们建议的那样在家工作,而是去了我的伴侣居住的另一个城市。在那里,我的合作伙伴与独立出版商和在线书商社区的我见了面。

“你能为这个社区举行一次关于大数据的会议吗?”

我没有马上答应。之前在校园活动的时候,我是大数据实验室助理,帮助讲师给其他同学上课。我曾经为一个政府机构做过情绪分析的培训。实际上,教书对我来说并不可怕。但是,我想这一次我面对的是一个完全不同的观众:这个群体不是任何人,他们是书籍爱好者,虔诚的读者,在我的国家的知识和文化发展中发挥着重要作用。此外,他们中的许多人对数据和信息技术不太熟悉。

上课前,我会见了他们中的一些人,了解他们到底需要什么。他们对数据做了什么,以及他们的商业策略。

大多数书商在社交媒体和在线市场上做生意。营销工作在社交媒体上进行,进一步的交易通过在 WhatsApp 上聊天进行。有些人已经建立了自己的网站。然后我问他们如何存储数据,包括客户数据和交易数据。

正如我在这个对话发生之前所想象的那样,他们大多数都是用 Excel 手动完成的。而且不应该忘记,虽然不是全部,但大多数小企业只有一两个擅长使用 Excel 的人。记忆函数、旋转和可视化数据。只有一家企业使用 POS 服务,而且费用很高。

我与他们讨论了通过在线市场销售时存在的障碍。他们与同样在市场上销售的原书出版商(通常是大型出版商)展开了一场折扣战。比方说,这些朋友提供了 15%的折扣,并在社交媒体上为该页面做广告。许多人访问了这个网页。但是,交易并不多。发生这种情况是因为原始出版商给出了更高的折扣,并且原始出版商的页面作为市场推荐的产品出现在卖方的页面上。最初的出版商是吃水果的人,尽管他们不必为广告付费。

在与这个社区的独立出版商讨论时,他们会问如何利用大数据进行市场调查,寻找有能力的新作家,以及如何预测什么样的书会有需求,会卖得好。

经过漫长的讨论,我留给自己一个大问题,“当财务和技术能力有限时,是否有必要举办一次大数据介绍会?小企业的大数据 5 V 等概念?那不是太抽象不切实际了吗?”

我可能是错的,或者仍然缺乏能够为小型企业解释大数据问题的经验。但我知道的事实是,存在的数据量确实很大,可以很快获得,数据类型多种多样。但所有这些都属于其他人,尤其是大公司:很少有人能轻松、廉价地获得。

从那时起,我决定不再过多关注大数据的宏伟概念,而是更加重视如何使他们迄今为止拥有的数据更加有用,并提出了一些更好地收集、组织和分析数据的方法。

存储数据

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

布莱克·维斯兹在 Unsplash 上的照片

我之前跟你说过,他们大多用 Excel。社交媒体管理员必须将社交媒体聊天中出现的图书订单改写成表格。除了交易细节之外,从社交媒体获得的数据还有客户数据,如姓名、地址、电话号码,有时还有性别。奖金是关于顾客询问但缺货的书籍的数据。

关于这个问题,我的主要任务是提供一个想法,如何使这个过程更容易,并使数据存储在一个更有组织的方式。

遗憾的是,在这一点上,我无法就如何简化和自动化记录保存流程以减少人工工作提供具体答案。(如果这篇文章的读者对此有什么建议,将会很有帮助。)

但是对于数据存储的问题,我建议与其保存到几个 excel 文件中,不如用数据库。我当时能想到的最简单最便宜的方法就是使用类似开源销售点这样的产品,或者类似 WooCommerce 这样他们更熟悉的平台。这两个例子都可以很容易地托管在一台有本地网络的计算机上,如果需要,也可以托管在互联网上。这些平台适合存储订单数据、交易、客户信息、仓库中可用商品的库存或存货,甚至收入和收益。

统计思维和数据分析技术

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

照片由艾萨克·史密斯Unsplash 拍摄

这些年来,我明白了提出正确的问题、决定衡量什么、提取见解和建议行动是数据分析师的主要任务。一般来说,它可以归结为创建和管理仪表板,以监控业务绩效并对问题进行深入分析。我给他们举了一个好的公司月报是什么样子的例子,只是让他们简单了解一下数据分析师是做什么的。

在谈论大数据之前,我强调如何分析我们已经拥有的数据的重要性。我要求他们从统计学角度思考。

我解释了如何从多个角度查看数据。如果数据有时间维度,那么可以用折线图来直观显示趋势,例如,过去三年的销售趋势。从可视化中,可以看到三年中是否有某些时间具有类似的趋势,以便他们可以知道,例如,哪个月的销售额往往很高。在他们掌握的数据中,还有买家所在城市和省份的维度。结合时间维度,我们可以看到各地区的趋势如何。最近三年销量最高的地区实际上可能在下降,其他地区在上升。

从图书销售数据的例子中,我们还可以看到小说或非小说类图书的销售百分比。从更深的层面来说,哪些类型的非小说畅销?历史、传记、散文集还是哲学?我们可以再次看到每种类型的趋势。

他们的数据也可以通过检查,例如,五个最畅销的地区,并按性别和年龄,然后按书籍类型进行划分来进行分析。通过看年龄识别买家,他们是工人还是学生?通过这种方式,我们可以了解特定年龄段的人对什么类型的电影感兴趣。也可能是作者或出版商。或者像书的厚度和重量这样的物理东西,因为,嘿,那会影响运输成本!

我在 Allan Rossman 的博客上找到了一个关于为什么我们应该在更详细的维度上检查数据的完美参考。

销售数据也可以通过进行市场篮分析来分析。这种分析可以帮助书商确定捆绑促销。这可以用来赢得折扣战。这里有一个有用的参考

回到大数据

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

Icons8 团队Unsplash 上的照片

数据随处可得,但简单地检索数据需要一点技巧。

在讨论中,出版商意识到印度尼西亚东部的市场正在增长。他们想知道哪些地区的阅读兴趣高,那里的教育水平如何。这些数据由政府的 API 提供。所以这不是一个简单的。 xlsx 或者。 csv 文件。这只是大多数人无法获得数据的一个例子。

我告诉他们,我们需要一种技能来创建一个可以提取数据的程序。我还演示了如何创建一个简单的程序来获取 R 的数据并为他们可视化。

接下来是关于营销的更具体的问题:

“作为一名社交媒体管理员,我如何才能看到竞争对手在发布什么,以及他们的参与度如何?当然,如果我们不必一个个打开他们的个人资料,记录他们的关注者和他们帖子上的赞数和评论数,这也很有趣。”

有很多很好的工具可以做到这一点。但是要查看几个账户并进行比较,需要用户付费。由于财政能力有限,现有数据也不容易获取。

一个非常简单的 Instagram 分析工具

我不想破坏人们对数据有用性的想象。因此,我创建了一个简单的工具来解决关于竞争对手研究的问题。

一个非常简单的 Instagram 分析

顾名思义,它确实非常简单。但至少这个工具可以更容易地分析你的业务档案的表现,并将其与竞争对手的档案进行比较。还可以帮助了解所选配置文件的最近帖子的性能如何。

如果嵌入效果不好,你可以在这里访问它

结论

这个社区的整个过程为我举办知识分享会提供了很好的经验和教训。如果我要再做一次,下面是我应该做的一些事情:

  • 研究参与者的业务需求和技术能力。理解这一点至关重要,这样我们分享的知识和经验才能真正让他们受益。
  • 意识到参与者的局限性,无论是技术上的还是经济上的。小心很重要。对不熟悉该领域的人谈论编码,谈论小型企业昂贵的技术基础设施,会让会议变得乏味。在极端情况下,人们甚至会对数据产生反感,并不指望自己会变得伟大。
  • 使用与参与者正在做的事情相近的案例研究示例。这有助于使材料更容易消化,并使会议更具互动性。
  • 不要忘记这样一种可能性,即使不是全部,一些参与者也是主题专家。我们可能擅长处理和分析数据。正是他们可能从里到外认识到他们的业务。
  • 如果可能的话,送他们小礼物。在学习了两周 JavaScript 之后,我开始构建一个简单的 Instagram 工具。

这就把我带到了这篇文章的结尾。我在解释大数据的好处方面可能不太成功,但希望它可以为小企业提供一个数据好处的例子。

当机器学习和物理学发生碰撞时

原文:https://towardsdatascience.com/when-machine-learning-and-physics-collide-96d983f4a567?source=collection_archive---------55-----------------------

学习机

用基于图形网络的模拟器模拟真实世界的物理

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

彼得·巴塔格利亚的模型演示(来源)

前阵子在浏览 arXiv 最近在机器学习方面的论文投稿,偶然发现一个有趣的标题。

学习用图形网络模拟复杂物理

我决定更深入地研究它,并发现作者成功地结合并使用了几个机器学习模型来创建一个名为“基于图形网络的模拟器”(GNS)的框架。

正如你在上面的图像中看到的,预测的水粒子运动设法表现得与地面真实情况相似。对于不同的起始条件和其他颗粒,如粘性物质和沙子,它也产生了可比较的结果。

与现有的需要对起始条件的任何变化进行重新渲染的模拟相反,该模型只需要训练一次,并且可以成功地预测粒子在不同条件下的行为。

下面是我对他们如何做的一个非常简单的解释。

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

GNS 框架的架构(来源)

GNS 框架由三个主要模块组成:编码器、处理器和解码器。

编码器

编码器将基于每个粒子的当前位置构建初始图。粒子将作为图中的节点。同时,将在某个连接半径内的相邻节点之间构建边。

在下一个和每个时间步,将使用最近邻算法重构图的边。

输入向量由以下内容组成:

  • 粒子的位置
  • 粒子以前的速度(5 倍步)
  • 材料属性(水、沙、粘性物质等。)

处理器

处理器通过边在节点之间传递“消息”。这是模型学习的部分。有 M 个图形网络(GN)用于学习(并最终预测)粒子之间的相互作用。

在物理学中,这些相互作用应该是粒子之间能量和动量的交换。在该论文中,对这些相互作用建模的任务被交给 M GNs 栈。

解码器

解码器的任务是从图中提取信息,特别是每个节点的位置。然而,解码器并不输出每个粒子的坐标。

输出是该时间步中每个粒子的平均加速度。

一旦你有了每个粒子的平均加速度的信息,你就可以计算每个粒子的速度和最终位置。

如果我们回头看看编码器的输入,当前位置和速度以及 5 个先前的速度将用于计算下一个时间步长的平均加速度。

就像普通的神经网络一样,这个过程重复 t 时间步长。

为了可视化模拟结果,关于每个粒子位置的信息用于在每个时间步长上绘制粒子。

显然,对于所有三个模块(编码器、处理器和解码器),作者简单地使用了多层感知器(MLP ),具有 2 个隐藏层(ReLU)和 1 个输出层(无激活功能),每个都有 128 个节点。

最让我惊讶的是,看似简单的神经网络结构,由两层 MLP 和 ReLU 以及最近邻算法组成,却能捕捉看似复杂的交互。

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

不同材料和约束条件下 GNS 的模拟结果(来源

上图描绘了不同的起始条件(a-h)以及几个时间步后预测和地面实况的结果。

  • (a)显示了粘性颗粒的相互作用
  • (b)显示了水粒子的相互作用
  • ©显示了沙粒的相互作用
  • (d)显示粒子与刚性障碍物的相互作用
  • (e)显示不同粒子之间的相互作用
  • (f)显示模型如何处理比训练中多得多的粒子
  • (g)显示与看不见的物体的相互作用
  • (h)显示对较大领域的概括

我们的主要发现是,我们的 GNS 模型可以学习不同流体、可变形和刚性固体的精确、高分辨率、长期模拟,它可以超越训练,推广到更长、更大和更具挑战性的环境(来源)

作者还表示,GNS 模型可以很好地处理一般化。在图(f)中,该模型可以处理多达 28k 个粒子的相互作用,这是他们在训练中使用的 2.5k 个粒子的 10 倍以上。

图(g)显示了该模型还可以处理各种材料的相互作用,同时在每个时间步中有连续的水流入。

最后但同样重要的是,图(h)显示了 5000 步后的模拟状态,比用于训练的步数多 8 倍,其中 85k 个粒子位于比模型训练区域大 32 倍的区域中。

你可以在这里看到更多由模型生成的例子。

他们还包括一些失败案例,在这些案例中,实体可能会在更长的模拟时间内变形,粘性颗粒有时会粘在墙上而不是落下。

在当前状态下,该模型可能无法 100%准确地完全取代粒子模拟的手动渲染。然而,它已经成功地正确模拟了大部分物理现象。一个可以实现近乎完美模拟的模型可能就在不远的将来。

物理模拟领域可能不像自然语言处理或计算机视觉等机器学习领域那样受欢迎。然而,想象一下如果这个模型可以取代现有的粒子模拟,它将带来的影响。

当前的粒子模拟需要很长时间来创建,因为它手动计算每个时间步长上每个粒子的状态。如果你仅仅移动了一个粒子,你就需要重新计算所有的东西。

另一方面,机器学习模型只会在训练阶段花费大量时间进行处理。一旦模型被训练,通过简单地在模型中传递信息就可以创建模拟。这个过程需要更少的计算能力,因为它比当前的粒子模拟简单得多。

这可能节省了未来粒子模拟所需的大量能量,因为该模型只需要训练一次,并且可以重新使用运行非机器学习驱动的物理模拟所需的一小部分能量。

参考

[1] Sanchez-Gonzalez 等,学习用图网络模拟复杂物理 (2020),arXiv:2002.09405【cs .LG]

学习机是一系列关于机器学习世界中发生的事情的故事,我觉得很有趣,可以分享一下。哦,有时也是关于机器学习的基础。关注我,定期获取新故事的更新。

[## 里奥纳尔迪·钱德拉塞塔—培养基

数据科学家。我写的是 DS & ML。有时候。

chandraseta.medium.com](http://chandraseta.medium.com/membership)

当机器学习训练你时

原文:https://towardsdatascience.com/when-machine-learning-trains-you-2345871c87e?source=collection_archive---------44-----------------------

从个人经历到经验教训

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

Unsplash 上的 Element5 数码拍摄

神经网屋

20 世纪 90 年代初,一位教授带我们几个人参观了他的房子。他专攻“神经网络”。(是的,即使那样。)他用“神经网络”控制他的房子。(是的,即使那样。)旅游期间的主要(也是唯一)话题——你猜对了——是“神经网络”。(房子只是背景。)

这次访问给我印象最深的是神经网络如何训练他的故事。事情是这样的。神经网络被训练学习的一项任务是自动设置恒温器。具体来说,既要让教授感到舒适,又要降低取暖费。更正式地,自适应地优化捕获两个竞争项的损失函数:1。(最小化)加热(或冷却)成本和 2。(最大化)教授的舒适度。

神经网络想出了一个有趣的方法来做到这一点。(故事大概是这样的。)考虑冬季。如果你不注意恒温器的设置,取暖费可能会很高。最初,神经网络学会了偏爱“舒适”。据推测,教授的反馈将它推向了这个方向。(不确定如何向一个神经网络抱怨太冷,但那些都是细节。嗯,也许这些天你向 Alexa 抱怨。)神经网络逐渐降低了温度。取暖费持续下降。教授适应了(习惯了)。

似乎神经网络已经(实际上)发现,人类可以习惯于逐渐降低不适程度(即,过一段时间后,他们会停止抱怨),而成本在这个过程中不断降低。

后来考虑到这一点,我确实思考了神经网络功能是否增加了房子的转售价值。但话说回来,你真的会为让一个智能神经网络让你习惯于逐渐增加不适程度的额外好处支付额外费用吗?

语音识别

20 世纪 90 年代中期,我决定尝试一下语音识别软件。我当时购买了一个知名商业软件的副本,安装在我的 Windows 电脑上。(是的,Windows 在那时就已经存在了。)我的意图是用它来记录和转录语音笔记,以后我会编辑这些笔记以避免偶尔的错误。有道理。原则上。

在实践中不太管用。我喜欢认为我的英语说得很好,我一生都是这样认为的。毫无疑问,还有改进的余地。没多久软件就指点了哪里!我会在下一段详细说明。

在我使用这个软件的早期阶段,它要求我训练我的口语。很公平。在这些训练中,它犯了几个错误。它建议我重新训练它说错的单词。再说一遍,很公平。然而,这一拖就是一个月。一周几个小时。虽然该软件识别我声音的准确性确实有所提高,但没有我希望的那么高,与我投入的训练努力相当。

在这个月的过程中,我开始意识到不是我在训练软件,而是软件在训练我!为了提高我的英语口语能力……(嗯,实际上我们都在学习。)

尽管如此,我还是觉得这个软件在暗示我在其中的角色很关键。你只是说得更好,它似乎在说——剩下的交给我。

什么?嗯,好吧,在某种程度上是公平的。当软件重复犯同样的错误,并不断暗示“如果我能说得更好就好了”,我觉得受够了。“它就在眼前”这种一厢情愿的想法你还能坚持多久?

那时我放弃了。我没想到会这样。这确实让我想知道,除了目前的目标市场之外,该软件是否应该以帮助人们更好地学习英语为卖点。

吸取的教训

这些仅仅是有趣的插曲吗?还是有更重要的教训需要吸取?从数据科学的角度来看,我将这两种情况下发生的事情描述为主动合作 - 学习。也就是说,人类和 ML 都学会了。(在神经恒温器的例子中,教授了解了他自己对不适的习惯。)

也就是说,学习肯定是由 ML 引导的。它控制着它希望人类关注的东西。(这在语音识别案例中最为明显,我们将在下一段中讨论。)嗯,我想这就是主动学习的意思。

让我们更深入地研究语音识别案例。最初的训练发现了 ML 出错的单词。它有理由认为我说得不够好。很公平。所以实际上,它要求我把这些单词说得更好。再说一遍,很公平。某种程度的主动学习是可以的。当它走得太远时,也就是说,当你付出了很多努力却没有得到你期望的回报时,它就开始成为一个问题。

好了,现在我们已经通过给它一个深奥的名字主动学习来使这个过程合法化,让我们思考一下这可能有助于哪些其他用例。简而言之,我的预感是,它们可能无处不在,即在监督机器学习适用的所有不同领域。

好吧,让我们挑选几个细节来检查一下。(我们已经看过两个了。下面还有两个。)

自动驾驶汽车。如果你的自动驾驶汽车可以对你说类似“我在山路上开车有困难,所以你可以带我去(练习)一下吗?”这样的话,那就太酷了。(“合作”部分如下:也许你也因此在这种环境下提高了你的驾驶技术。)

医学影像。ML 在识别特定医学图像中的病理时有困难。它会请放射科医生来看看。这可能不仅有助于医学博士,也有助于放射科医师提高他们的医学图像分析技能。

当混合效应(分层)模型失败时:汇集和不确定性

原文:https://towardsdatascience.com/when-mixed-effects-hierarchical-models-fail-pooling-and-uncertainty-77e667823ae8?source=collection_archive---------13-----------------------

一个直观和可视化的指南,介绍部分池化变得麻烦的情况,贝叶斯方法可以帮助量化不确定性

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

国家癌症研究所Unsplash 上拍摄的照片

在这篇文章中,我提供了一个直观的,可视化的混合效果(层次)模型的基础,以及“池”的概念和应用实例。如果您对在R/Python中实现贝叶斯层次模型感兴趣,我已经在后续文章 中发布了 分步指南。

这个世界充满了嵌套(分组)结构,我们经常强加这种结构来简化我们对世界的理解。你从小就接触过这些嵌套结构(不管你有没有意识到)。例如,在地理类中,国家嵌套在大陆或地区内,州嵌套在国家内。同样,你可以想到团队中的玩家,区域中的客户,甚至大学中的部门。

鉴于我们倾向于构建世界的本质,我们通常会在分析中遇到具有嵌套结构的数据集(即作为组成员的观察)。

混合效应模型是回归模型的简单扩展,它考虑了群体成员对感兴趣结果的影响。

就像任何广泛使用的跨学科方法一样,人们无法就一个通用名称达成一致。这些模型被称为“混合模型”、“分级模型”、“多级模型”、“随机效应模型”等。(为什么人们不能在一个名字上达成一致对我来说是个谜。🤷‍♂)

在你想“哦,太好了,另一篇关于线性模型的文章…😒“让我告诉你:是的,这涵盖了线性模型**,但不要忽视一个通常被忽视的点——当模型不起作用时,以及这可能产生的后果。**

为简单起见,我将重点讨论线性模型,并将在后续出版物中讨论广义混合模型。

一眼

以下是我将介绍的内容

  1. 快速直观、直观地进入线性混合效果建模( 强烈推荐,如果你在 之前没有见过混合模型,否则跳过这一部分,但确保你熟悉它们的分布形式
  2. **“池化”**的概念以及它如何驱动这种方法的底层机制( 以及动画和营销中的应用示例 )
  3. 一个不希望“汇集”的案例,以及对频繁主义(即非贝叶斯)方法的一些限制的讨论

什么是线性混合模型(LMM)?

以下部分基于[sleepstudy](https://rdrr.io/cran/lme4/man/sleepstudy.html) 数据集的子集。这些数据来自睡眠剥夺研究,其中的观察值是对多个受试者进行的一系列测试中每天睡眠剥夺的平均反应时间。

简单线性回归

想象一下,我们正试图评估睡眠剥夺天数对受试者平均反应时间的影响。我们可以从一个简单的线性模型开始理解这种关系,如下所示

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

其中对于每次观察i,睡眠剥夺的天数(Days,即独立变量)影响基于β变量的平均反应时间/延迟(react delay,即因变量)。这些 β 参数被称为固定效应,因为它们对于所有观测值(即总体)都是恒定的

请注意,给定的线性回归假设数据是正态分布的,我们也可以将其定义为分布形式。上式可以读作****观测值正态分布,均值β0+β1 天,总体方差σ (因为我们假设所有观测值i方差相同)*

现在,如下所示,睡眠剥夺对每个受试者的影响不同,因此使用一个将所有观察结果分组在一起的模型(称为完全汇集)是没有意义的。

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

那么,我们怎样才能模拟主体间的差异呢?嗯,我们可以使用各种风格的线性混合效果模型。

1.变截距

我们可能首先要考虑这样一种情况,即受试者有不同的基线,但他们的反应时间增加的速率(斜率)是相同的。在这种情况下,我们扩展了之前的模型,允许截距随主题subj而变化,如下所示

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

其中,β0 和β1 为 固定/群体效应 (在所有观察中保持不变),而b0,subj随机效应 ,允许截距因受试者而异(即偏离群体截距β0)。这就引出了我们的第一个混合效果模型变截距模型。在分布方面,每个受试者的平均值根据正态分布的b0,subj受试者特定方差 τ _0 而变化。(这就是为什么这个术语被认为是“随机的”)

下图提供了一个这种型号的例子。我们可以看到,它给出了一个确定的拟合,但没有考虑到跨对象的斜率变化。

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

2.变斜率

现在,如果我们认为每个受试者的反应时间增加不同,那么我们可能想让斜率变化(通过subj)并保持截距固定如下

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

其中β0 为固定( 群体 )截距,斜率根据β1 ( 固定斜率 ) + b1,subj ( 随机斜率 )变化。这就引出了我们的第二种混合效应模型,一个变斜率模型。在分布方面,根据正态分布的b1,subj*Days受试者特定方差 τ _1,每个受试者的均值不同。

下图提供了该模型的一个示例,我们可以看到它实际上比之前的模型更符合数据。我们能结合这两种方法吗?是的,我们可以。🙂

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

3.变截距、变斜率

观察上面的图,可以合理地考虑每个受试者的基线反应时间增加率与其他受试者不同的情况。

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

我们既有斜率和截距固定效应(β0 和β1),也有随机效应(b0,subjb1,subj)。这就引出了我们最后一种混合效应模型,一种**变截距、变斜率模型。就分布而言,基于b0,subjb1,subj*Days,每个受试者的平均值不同,但现在这两个受试者特定的随机效应是相关的。**因此,方差分量现在是包括斜率和截距方差(τ_22 和截距τ_11)以及它们的协方差(τ_21 和τ_12)的矩阵。

与前两个图相比,我们可以看到,该模型倾向于更紧密地拟合数据,因为它改进了如何解释受试者特定的差异。

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

请注意,这只是一种混合模型(线性)的直观指南。为了实现这些,您需要理解您正在回答的问题、您的数据,并能够用其他方法仔细评估模型性能/拟合,其中一些方法我将在下一节中介绍。

什么是“联营”?(一个应用实例)

本节是对 Github 中更全面的分析的总结。它使用基于以下 Kaggle 数据集模拟数据。为了简单起见,这个例子是用 R 编写的,但是你也可以在 Github 中找到 Python 的例子。

假设您的公司最近更新了网站,营销部门想知道网站的运行情况。具体来说,他们想知道年轻顾客比老顾客在网站上花多长时间。

为了回答这个问题,你收集了 8 个不同地点(county)的客户“跳出率”(bounce_time,秒)和age,跳出率衡量客户在网站上花费的时间。但是,正如您在下面看到的,您无法在所有位置获得相同数量的观察值(例如,一个位置有 150 个观察值,而另一个位置只有 7 个)。

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

完全汇集(或简单线性回归)

首先,假设你试图理解bounce_timeage的依赖性,你拟合一个线性模型。但是,在这样做之前,您需要对您的age变量(均值=0,方差=1)进行中心缩放,以提高模型稳定性并简化以后的解释(即截距现在是平均值age)。

该模型被视为完全汇集模型,因为它忽略了县与县之间的差异,并且将所有观察结果视为同一组或池的一部分。因此,它为所有数据估计单一斜率和截距 (β0=200,β1=4.69)。然而,考虑到模型显示缺乏拟合(评估未显示),您想看看在县一级建模差异是否会提高性能。

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

快速的 EDA 收益使您可以观察到平均bounce_time似乎在不同地点(county)之间有所不同,并且县内的可变性并不是所有地点都相同。因此,简单线性回归的独立性假设不成立。

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

无池模型(或单独的线性回归)

相反,你可以使用lme4 R 包来拟合每个县的回归线。由此产生的无池模型假设各县之间的客户没有相似之处,并独立考虑每个县。因此,我们估计了 8 个不同的截距和斜率(即每个县一个),如下所示。

这个新模型似乎更适合(未显示),比前一个模型表现更好,并且在视觉上似乎捕捉到了每个群体的趋势。

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

此外,斜率估计值比以前小得多,这一现象可以通过辛普森悖论来解释(即,在县或组级别估计的趋势可能与全球估计的趋势完全不同)*。*下面的动画展示了完全池化和无池化模型估算之间的变化。

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

然而,基于一个看似更紧密的匹配就得出无池模式是最好的结论还为时过早。

正如 Gelman 所描述的“完全汇集忽略了[组]之间的差异,而非汇集分析夸大了它[并且]…过度拟合了每个[组]内的数据”。换句话说,这个模型夸大了各县之间的差异,使它们看起来更加不同,而事实上,各县之间的客户似乎(甚至预期)有一些相似之处。

部分汇集模型(或线性混合效应)

为了捕捉各县之间的相似性,您拟合了一个介于两个极端之间的模型(即完全模型和无池模型)。使用 R 的lmer函数,你拟合一个线性混合效应模型,再次估计 8 个不同的斜率和截距。

然而,这些是通过部分汇集估算的,简单来说,结合了来自完全汇集模型的人口(固定)效应和非汇集模型的县特定(随机)效应的信息。

查看摘要输出,您会看到一些有希望的指标。随机截距似乎解释了县与县之间的大部分差异(≈195),但仍有一些总体水平的差异(即残差)。(两者都有表明固定和随机效应都在起作用,如果剩余方差≈0,那么拟合无池模型也是一样好的。)

然而,您注意到来自函数的警告消息,指出模型拟合可能是“奇异的”(上面输出的底部)。您可能会忽略此消息,因为该模型具有良好的拟合性(未显示)并且与无池设置的性能相当。

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

那么,为什么不用这个模型来回答市场部关于反弹时间的问题呢?

我会告诉你为什么,但首先让我们快速绕道进入部分池

对部分池化的直观探究

部分统筹是混合效应模型强大的本质,我发现人们往往倾向于描述部分统筹的作用,而不是解释它。部分池化代表了完全模式和无池化模式之间的一种折衷。让我们探索一下这意味着什么。

首先,左边的动画(下图)提供了一个实时例子**为什么部分池是一种“妥协”**我们可以看到斜率和截距估计值在我们刚刚讨论的三个模型中是如何变化的。采用部分混合法时,具体县(无混合法)的估计值将用于人口(完全混合法)的估计值。但是,为什么有些估计值比其他的变化大?

我们可以用右边*、的一组方程式来回答这个问题,这组方程式的颜色编码与左边的动画相匹配。简单地说,部分合并估计值(蓝色)是完全合并模型(红色)和非合并模型(绿色)的加权平均值,其中权重由方差和组样本大小定义。(注意:这些等式取自一个稍微简单的例子,并不是在上述模型中计算出的精确等式。)*

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

人们称群体为“携带”或多或少信息的群体,是基于群体样本大小和/或这个等式中方差的影响。例如,在样本量较小的县n_j(即n_j -> 0)中,我们看到左边的项权重变小。因此,估计值被拉至或*【缩小】*更接近总体平均值,这是有益的,因为我们通常不希望用很少的数据点来估计参数。对于样本量较大的群体来说,这种效应是相反的——我们对这些数据中群体水平效应的估计更有信心。

从本质上说,我们看到的是较小的群体从较大的群体“借用信息”,并使他们的估计值向总体值缩小。

当部分集中出现问题时

让我们回到网站跳出率的例子。

鉴于您对手头问题的深刻(或新开发的)理解,以及在这种情况下部分池化如何能够导致更好的估计,您选择混合效应模型来回答年龄如何影响跨县的跳出率。部分合并似乎已经“缩小”了预期的估计值和置信区间(见下文)。请注意斜率估计的一些有趣之处——置信区间几乎消失了!这怎么可能呢?发生了什么事?

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

1.消失置信区间

还记得我之前提到的“奇异适合”警告吗?好吧,那已经发生了。简单地说,这个警告告诉我们,模型太复杂,数据无法支持。在我们的案例中,在样本规模较小的县中,随机截距是大部分可变性的原因,因此当我们尝试拟合特定于县的斜率时,没有足够的信息来完成这项工作。

我们可以简化我们的模型,去掉随机斜率,但是如果我们认为特定于县的斜率可能有一些优点呢?我们可以使用贝叶斯方法包括这两个组件(见下一节)。

2.意外收缩(警示故事)

在继续之前,重要的是要记住一个重要的教训,即部分集中/收缩可能会导致意想不到的后果。2016 年 George et al. 研究表明,部分统筹会导致较小医院的预测死亡率被人为压低。如下图所示,对于床位较少的医院(x 轴),预测死亡率(y 轴)被“人为缩小”。也就是说,该模型系统地降低了小医院中观察到的(较高的)死亡率。在这种情况下,从一个标准的混合效应模型的部分汇集有潜在的噩梦般的公共卫生和法律后果。这种对观察到的死亡率的低估可能会影响以后的病人。😱

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

改编自乔治等人(美国统计局,2016 年)

在他们的论文中,乔治等人提供了混合效应模型的扩展,有助于限制部分统筹的不良影响。

贝氏拯救

如果你不太熟悉贝叶斯推理,我推荐 Aerin Kim惊人文章

此外,假设拟合贝叶斯模型本身就是一个对话(例如,选择先验、诊断等。)本节将只关注结果。未来的文章将更详细地讨论贝叶斯拟合。

贝叶斯混合效应方法是更常用的频率主义方法(如上)的有力替代。特别是,他们能够在估计群体水平的影响时考虑不确定性,并在弱信息先验的帮助下,为样本量较小的群体提供稳定的估计。

让我们想象一下,你最近了解到贝叶斯方法可以帮助你处理模型中的“奇异拟合”问题。另外,你从一个同事那里听说有一个很棒的 R 包(brms)包,它提供了一个易于使用的公式构建器来拟合带有stan的贝叶斯混合模型。在选择了你的先验后(在以后的文章中会涉及到*),你可以像以前一样使用相同的混合效果模型。*

这个新模型似乎有一个很好的拟合(未显示)和后验预测检查给你的估计和相关误差的信心。更重要的是,您会注意到埃塞克斯、肯特、伦敦和诺福克斜率的 95%可信区间包含 0(即这些斜率实际上有可能为零)。

从视觉上,你可以看到每个县的趋势线的后验图()似乎符合数据,这种新方法在 RMSE 方面对模型的性能()有微小的改进。

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

最重要的是,您的估计仍然利用部分池,但这次没有我们前面看到的消失误差界限。这是因为你通过你的弱信息前科引入了“信息”。这是贝叶斯推理的核心思想,它将观察到的数据中的信息与指定的先验分布(我们通常可以认为是基线估计)中的信息相结合。后验估计在理论上总是可能的(不像我们的“奇异拟合”例子),但是在数据不足的情况下,这些估计默认与我们的先验相似。

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

最后,我不是说贝叶斯主义者>常客,或者你应该放下一切,成为贝叶斯主义者。在任何情况下,你选择的方法都应该反映出你对手头问题的理解。在这里,我拟合了一个贝叶斯模型来帮助说明它是如何帮助处理消失误差界限的。然而,我可以简化这个模型(见上面的rintercept_only RMSE 表格)。这完全取决于你想回答什么问题。

结论

以下是一些需要考虑的最终想法

  1. 混合效应模型是帮助我们解释数据中复杂的嵌套结构的强大方法
  2. 请记住,根据具体情况/问题部分共用可能会伤害你而不是帮助你
  3. 在适当的时候考虑使用贝叶斯框架 ( 我将在下一篇文章中详细介绍这一点)

参考

  1. 吉尔曼,安德鲁和珍妮弗·希尔。使用回归和多级/分层模型的数据分析。剑桥:剑桥大学出版社,2007。打印。
  2. 安德鲁·吉尔曼。"多级(层次)建模:它能做什么和不能做什么."48.3(2006):432–435。
  3. **盖布里、乔纳等人,《贝叶斯工作流程中的可视化》英国皇家统计学会杂志:A 辑(社会中的统计)182.2(2019):389–402。
  4. BRMS。https://paul-buerkner.github.io/brms/

如果你喜欢这篇文章,请随意分享!如果您有任何问题或看到任何不正确/有问题的内容,请发表评论或发表推文( @ecoronado92 )。

我要特别感谢金·罗奇不辞辛苦地帮我校对这篇文章。

本文中使用的所有代码和笔记都可以在这里找到

*** [## ecoronado 92/走向 _ 数据 _ 科学

Repo 包含实现贝叶斯和频率分层模型的基础材料和例子…

github.com](https://github.com/ecoronado92/towards_data_science/tree/master/hierarchical_models/foundations) [## R/Python 中线性混合模型(LMM)的贝叶斯方法

实现这些比你想象的要简单

towardsdatascience.com](/a-bayesian-approach-to-linear-mixed-models-lmm-in-r-python-b2f1378c3ac8) [## 在 R/Python 中评估贝叶斯混合模型

了解“后验预测检查”的含义以及如何直观地评估模型性能

towardsdatascience.com](/evaluating-bayesian-mixed-models-in-r-python-27d344a03016)***

何时不使用数据科学

原文:https://towardsdatascience.com/when-not-to-use-data-science-f2e42a3a77d3?source=collection_archive---------54-----------------------

意见

数据科学不占优势的例子。

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

安德里亚斯·克拉森在Unsplash【1】上拍摄的照片。

目录

  1. 介绍
  2. 例子
  3. 何时应该使用数据科学
  4. 摘要
  5. 参考

介绍

数据科学和机器学习都是有用的领域,它们应用多种工具来预测、建议、分类并最终解决常见的业务问题。您可以创建高度精确的模型,将以前的手动任务自动化。数据科学非常强大,可以为公司节省资金和时间。然而,你会发现你不一定需要数据科学来解决你遇到的每一个问题。在某些情况下,人工干预更重要,或者情况不允许通用模型。

我将描述何时不使用数据科学的四个例子。作为一名数据科学家,我发现随着时间的推移,我已经慢慢了解或体验到数据科学和机器学习不是必需的。我希望我能为你和你未来的处境提供一些启示和直觉。

例子

关于何时使用数据科学,何时不使用数据科学,有几个例子。以下是我想到的一些不需要数据科学模型的情况,这些情况可能会使情况变得更糟:

如果这个模型预测不正确,会有什么后果?

然而,数据科学、机器学习和人工智能正在不断发展,你可以期待很快看到新兴技术和模型准确性的改进。

  • 当你没有足够的数据时

这个例子比较常见。当您生成模型时,您希望确保您有足够的数据。可能会出现坏数据输入和坏模型输出,同样,如果没有足够的数据,也会产生坏模型。该模型甚至可能表现良好,但它不会很好地推广到新的情况。您可能会过度适应,或者只是没有将环境暴露给足够多的可能的训练数据实例。在你建立一个模型以及在开发和资源上花费时间之前,先检查你是否有足够的数据。

  • 一次性任务时

这个例子更依赖于具体的情况。您可能会被公司中的非技术利益相关者或领导者要求执行数据科学模型,也许您应该问问自己数据科学是否有必要。

—如果您不是每天、每周甚至每月都输出结果,您可能不想花费时间或创建一个复杂的模型来整合接收新数据的计划。

您可以应用类似的技巧来回答这个业务问题,并向利益相关者建议,例如,因为您只需要一个输出的 CSV 文件,所以您可以用一个简单的 Python 函数来回答这个问题(您可能不需要与您的利益相关者深入探讨为什么您不打算使用数据科学模型,因为一些利益相关者只是想要一个输出的结果,并不关心您是如何得到它的)。您可能只需要一个手动模仿数据科学模型主题的小函数。如果您非常了解这种情况,您可以自己创建容器或权重,并将其应用于特征或列,得出您自己的分数。以下是我描述的一个例子:

***Example:******.50*(feature_1) + .20*(feature_2) + .30(feature_3) = score (scaled)***

虽然这可能不是最准确的*,但是如果你需要一种快速的方法来组织数据,像这样的函数或者类似的函数就足够了。*

  • 没有标记数据时

有时,您可能会遇到这样的情况:您想要对成千上万的观察值进行分类,但是您的数据集中有太多未标记的数据。有办法解决这个问题,如标签软件或无监督技术来创建新的标签。但是,如果您发现使用人工或其他软件服务来标记花费了太多的时间和金钱,那么您可能需要重新评估这种情况。也许在实现数据科学模型之前,您需要执行更多的数据工程技术,比如访问 API。

  • 预算紧张时

根据您接收和预测的数据量,训练模型可能会很昂贵。您的公司可能还没有足够的资源,昂贵的数据科学模型也不可行。

当你没有足够的时间时,这一点也与一致。您可能有一个即将到来的截止日期,除了数据科学之外,还有一些方法是有益的,比如 Python 函数和规则。**

何时应该使用数据科学

有无数的情况下,你应该使用数据科学和机器学习。本质上,你可以翻转上面的例子,或者看看当你应该使用数据科学时,你是否有一个无监督的,监督的,时间序列等情况。

您也可以应用上面的示例,但是也可以结合数据科学技术和手动流程。人在回路作为这两种实践之间的桥梁变得越来越普遍。

何时使用数据科学的一些具体示例包括但不限于:

  • 向用户推荐电影
  • 预测一家公司的销售额
  • 分析评论的情感
  • 预测给定月份的温度
  • 等。

何时不使用数据科学的例子并不是阻止你使用数据科学,而是强调“的重要性,因为你可以,并不意味着你应该。最终,这取决于您的具体情况以及输出会影响什么。因此,在给定的特定环境下,每个示例都可以被反驳为数据科学的用例。

摘要

所有这些例子都有注意事项,在这些情况下,您可能最终会使用数据科学。数据科学正在发展,新的方面正在出现。请记住,本文是以观点为导向的,这些观点或例子可能会很快改变。当您认为在特定情况下应该或不应该使用数据科学时,请随时在下面发表评论。总而言之,这里有四个不应该使用数据科学的例子。

*When you don’t have enough dataWhen it’s a one-off taskWhen you don’t have labeled dataWhen your budget is tight*

我希望你喜欢我的文章。感谢您的阅读!

参考

[1]图片由 Andreas KlassenUnsplash 上拍摄,(2017)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值