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

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

人工智能存在于 1950 年吗?——早期人工智能的 8 个现实应用?

原文:https://towardsdatascience.com/is-artificial-intelligence-exist-in-1950-8-real-world-applications-of-ai-in-1950s-d1de4b939c?source=collection_archive---------19-----------------------

内部人工智能

人工智能应用的革命

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

人工智能的革命

为什么古代人工智能是现代人工智能的基础?

人们认为人工智能是几年前刚刚诞生的新兴技术。但是实际的人工智能在现实中有很强的根基。在古代,研究人员也使用像神经网络和机器智能这样的技术。今天的技术和旧方法的基本区别仅仅在于计算和数据。今天,我们拥有巨大的计算能力,可以处理任何数量的数据。在过去,我们只有几千字节的内存和很小的 CPU 能力,只能做非常基本的操作。但是今天,我们有图形处理单元,具有大量的 RAM 和处理能力,可以进行高指数和复杂的计算。此外,我们也有无数的数据。这些数据可以帮助我们用人工智能做出更好的决策。但今天的人工智能只是旧时代的升级版。人工智能的根源始于 20 世纪 50 年代。今天的一些趋势应用可以追溯到 1950 年。约翰·麦卡锡在 1956 年创造了这个术语,他将人工智能定义为“制造智能机器的科学和工程”[1]

人工智能革命及其应用

1.“翻译”备忘录

Warren Weaver[2]第一次介绍了使用计算机将文档翻译成自然语言。沃伦对逐字翻译法有四个建议。

在第一个提议中,他处理了单词歧义的问题。在英语中,有很多单词在不同的上下文中有不同的意思。同一个词可以有两种或两种以上的意思。他提出了一种方法来翻译人类语言中的单词,该单词出现在上下文单词的附近和数量。[2]在第二个建议中,他描述了使用基于逻辑上下文的神经网络的基于结论的翻译。第三个建议是用信息论进行加密翻译。[3]第四个建议是关于语言共性,以使语言和对话更好。[4]

2.逻辑理论家

艾伦·纽厄尔、萧伯纳和司马贺写的《逻辑理论家的第一次论证》。它被设计成模仿人类解决问题的技术,被称为“第一个人工智能程序”。它证明了怀特海和罗素的《数学原理》中前 52 个定理中的 38 个。

对商业组织的研究需要洞察人类解决问题和决策的本质。

纽维尔和西蒙开始讨论让机器学会思考的可能性。他们的第一个项目是一个可以证明数学定理的程序。由于他们实现了这个程序,这个程序成功地证明了定理,这让数学家们感到震惊。最终,Shaw 能够完成这个程序,并且能够在 RAND 圣莫尼卡工厂的机器上运行这个程序。

1)逻辑理论家对人工智能的影响:

  • 作为搜索的推理:这个定理有助于探索搜索树:根节点是初始假设,每个分支是基于给定逻辑规则的推理。
  • 启发式:他们意识到搜索树将呈指数增长,他们需要修剪一些不必要的分支,使用“经验法则”来获得可能导致死胡同的路径。
  • 列表处理:为了实现逻辑理论家,三名研究人员开发了一种编程语言 IPL,它使用了相同形式的符号列表处理,后来形成了麦卡锡的 Lisp 编程语言的基础。

2)哲学意蕴:

他们发明了一种能够进行非数字思维的计算机程序,从而解决了这个古老的程序,解释了一个由物质组成的系统如何具有思维的特性。

3.模糊逻辑

模糊逻辑是一种多值逻辑形式,其中值应该是 0 和 1 之间的任何实数。

人们在非数值和不精确信息的基础上做出决策,并利用这些逻辑引入模糊逻辑。这些模型具有解释和利用数据和信息的能力,能够识别、操作和表示模糊的和缺乏确定性的数据和信息。

程度、真值和概率的范围都在 0 到 1 之间,因此初看起来可能相似,但是模糊逻辑使用真值程度作为模糊的数学模型,而概率是无知的数学模型。

1)应用程序:

  • 模糊逻辑的第一个值得注意的应用是在日本实现的,它在仙台的地铁列车上实现,它有助于提高乘坐的经济性、舒适性和精确性。
  • 模糊逻辑对于医疗决策是一个更重要的概念。一个常见的应用领域是使用模糊逻辑的计算机辅助诊断。

4.人工智能逻辑游戏

人工智能一直擅长自我学习,并在国际象棋、跳棋、奥赛罗和围棋等逻辑游戏中发挥了巨大作用。1952 年,Arthur Samuel [5]创建了第一个通过自学人工智能方法玩跳棋的程序。经过几年的国际象棋革命,“深蓝”于 1997 年被国际商业机器公司(IBM)开发出来,它击败了特级大师加里·卡斯帕罗夫。在人机锦标赛中,计算机程序奇努克成为 1994 年世界跳棋冠军。物流学家还在 1997 年用计算机程序击败了世界冠军。

5.自动微分

自动微分是一套计算函数导数的技术。AD 利用了每个程序都有一系列算术运算,如乘法、除法、加法、减法等,以及基本运算,如正弦、余弦、指数、对数等。应用链式法则,可以自动地、精确地计算序列的导数,达到工作精度。

一般有正向积累和反向积累两种方式。

  • 前向累加:首先确定与执行微分相关的独立变量,并递归计算每个子表达式的导数。
  • 反向累加:要微分的因变量是固定的,导数是递归地计算每个子表达式的。

目前,这些技术被称为前向传播和反向传播

实施:

  • 源代码转换:它可以在所有编程语言中实现,并且使编译器更容易编译和优化时间。但是,AD 工具本身的实现难度更大。
  • 运算符重载:实数和初等数学运算的对象必须重载,以适应增加的算术计算

6.霉菌素

MYCIN 是斯坦福大学在 1972 年开发的推荐抗生素治疗的专家系统。根据报告的症状和医学测试结果对患者进行诊断[7]。这是一个基于规则的程序,有一系列是/否或文本问题,并提供按概率排列的细菌结果。这是贝叶斯概率和条件概率的基本概念。它是用 LISP(列表处理)编程语言编写的,这种语言是约翰·麦卡锡在 1959 年为人工智能的普遍使用而开发的。

7.波莉

Polly 是第一个使用先进技术和人工智能的计算机视觉的移动机器人。这个机器人与基于行为的机器人一起工作。它是由麻省理工学院人工智能实验室的 Ian Horswill 开发的。Polly 算法是足够有效的,它以非常低的分辨率向前移动像素。

8.深蓝

深蓝是 IBM 开发的计算机,它是第一台在锦标赛中击败国际象棋大师加里·卡斯帕罗夫的计算机。[8]这与诸如单芯片国际象棋搜索引擎、具有多级并行性的大规模并行系统、对搜索扩展的高度重视、复杂的评估功能以及对特级大师游戏数据库的有效使用等伟大的策略一起工作。[9]在 Alpha-beta 剪枝上实现的深蓝是一种搜索算法,用于减少由 minimax 算法在其搜索树中评估的节点数量。

结论

简而言之,人工智能在很久以前就开始了,但现在刚刚成为一项足够成熟的技术。今天我们知道 AI 只是因为更多的数据和更多的能力。研究人员确实带来了新的高效算法,以加快工作速度。人工系统、自然语言处理、计算机视觉、推荐系统已经存在,但只是在最近几年才变得更加强大。

参考资料:

[1]科学日报,“人工智能”,科学日报,[在线]。可用:https://www . science daily . com/terms/artificial _ intelligence . htm。[2020 年 1 月 20 日获取]。

[2]“沃伦·韦弗”,维基百科,2019 年 10 月 16 日。【在线】。可用:【https://en.wikipedia.org/wiki/Warren/_Weaver】T2。[访问日期:2020 年 1 月 22 日]。

[3]“克劳德·香农”,维基百科,2020 年 1 月 17 日。【在线】。可用:【https://en.m.wikipedia.org/wiki/Claude_Shannon】T4。[访问日期:2020 年 1 月 22 日]。

[4] E. Rich,“AILongForSeminar”,2004 年 10 月 4 日。【在线】。可用:http://www.cs.utexas.edu/users/ear/AILongForSeminar.ppt。[2020 年 1 月 20 日访问]。

[5]“亚瑟·塞缪尔”,维基百科,2020 年 1 月 7 日。【在线】。可用:https://en.wikipedia.org/wiki/Arthur_Samuel。[访问日期:2020 年 1 月 22 日]。

[6]“深蓝(象棋计算机)”,维基百科,2020 年 1 月 18 日。【在线】。可用:https://en . Wikipedia . org/wiki/Deep _ Blue _(chess _ computer)。【访问时间:2020 年 1 月 22 日】。

[7] B. J .科普兰,《霉素》,大英百科全书,2018 年 11 月 21 日。【在线】。可用:https://www.britannica.com/technology/MYCIN。[访问日期:2020 年 1 月 22 日]。

[8]“深蓝”,IBM 100——深蓝。【在线】。可用:https://www . IBM . com/IBM/history/IBM 100/us/en/icons/deepblue/。[访问日期:2020 年 1 月 22 日]。

[9] M. Campbell、A. J. Hoane 和 f . hsiung Hsu,“深蓝”,人工智能,2001 年 8 月 9 日。【在线】。可用:https://www . science direct . com/science/article/pii/s 0004370201001291。[访问日期:2020 年 1 月 22 日]。

非常感谢😎

AutoML 准备好投入使用了吗?

原文:https://towardsdatascience.com/is-automl-ready-for-business-ffe4c2d8b5af?source=collection_archive---------45-----------------------

意见

我们还需要数据科学家吗?

AutoML 工具在过去的几年里获得了越来越多的关注,这是由于技术进步和它们被“公民数据科学家”利用的潜力。公民数据科学(Citizen Data Science)是数据科学(DS)的一个有趣(通常有争议)的方面,旨在自动化机器学习(ML)/深度学习(DL)模型的设计,使其更容易被没有数据科学家专业技能的人使用。

在这篇文章中,我们将尝试理解 AutoML,它的承诺,今天什么是可能的?,AutoML 失败的地方(今天)?,它是只针对公民数据科学家,还是对熟练的数据科学家也有一定价值?

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

AutoML:基于来自 PexelsAndrea Piacquadio 的 pic

AutoML 内部

让我们从机器学习(ML)的非常高级的入门开始。今天的大多数最大似然模型被监督并应用于预测/分类任务。给定一个数据集,数据科学家必须经历一个称为特征提取的艰苦过程,模型的准确性完全取决于数据科学家选择正确特征集的能力。为简单起见,可以将每个要素视为以 CSV 文件形式提供的数据集的一列。

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

图 1:预测问题的线性回归图解(图片由作者提供)

即使数据集只有一个特征,模型选择过程仍然起着至关重要的作用,因为需要根据数据集分布尝试不同的算法来找到最佳拟合。例如,让我们考虑一个由两列组成的数据集:“薪水”和“经验年数”。目标是根据经验水平预测工资。图 1 显示了问题场景的线性回归图。

然而,线性回归通常是低效的,其他回归技术,例如多项式、支持向量、回归树等。需要尝试找到最适合的。在这种情况下,最佳拟合对应于根据不同度量测量的最小预测误差(模型精度),例如均方误差(MSE);其一个例子是将数据点连接到图 1 中的(回归)线的线的长度的平方的平均值。

给定这个数据集和知识,数据科学家将通过编写程序来对数据集应用不同的回归模型。使用 ML 框架,例如 scikit-learn ,这转化为编写/修改几行代码来实现模型,然后根据不同的误差度量来分析模型的准确性。

# *Training a Linear Regression model* from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)# *Training a Support Vector Regressor* from sklearn.svm import SVR
regressor = SVR(kernel = ‘rbf’)
regressor.fit(X, y)

我想现在您已经了解到目前为止在特征提取和模型选择方面的过程是可以自动化的。这正是 AutoML 工具所做的。

给定一个数据集,AutoML 工具将使用不同的特征集和数据分布应用已知的 ML 算法,在排行榜上显示按不同误差指标(预测/分类准确度)排序的结果。

深度自动化

现在让我们在深度学习(DL)环境中考虑 AutoML。DL 的优点是程序在没有监督的情况下自己选择特征集,即特征提取是自动的。这是通过在大型标记数据集上训练大规模神经网络(称为深度神经网络(DNNs ))来实现的。

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

图 2:人工神经网络(ANN)架构(图片由作者提供)

训练 DNN 发生在多次迭代(历元)中。每次前向运行都有一个反馈回路,其中在运行结束时识别的分类误差相对于地面实况(训练数据集)被反馈到先前的(隐藏的)层,以适应它们的参数权重——“反向传播”。图 2 中示出了一个样本 DNN 架构。

从实现的角度来说,如果我们要写一个神经网络(NN)来解决前面的‘员工工资’预测问题;数据科学家会使用 DL 框架编写类似下面的代码,例如 TensorFlow

# Initializing the NN
ann = tf.keras.models.Sequential()
# input layer and first hidden layer
ann.add(tf.keras.layers.Dense(**units**=8, **activation**=’relu’))
# hidden layer
ann.add(tf.keras.layers.Dense(units=8, activation=’relu’))
# output
ann.add(tf.keras.layers.Dense(units=1, activation=’sigmoid’))
# compilation
ann.compile(**optimizer** = ‘adam’, loss = ‘binary_crossentropy’, metrics = [‘accuracy’])
# training 
ann.fit(X_train, y_train, **batch_size** = 64, **epochs** = 50)

然而,dnn 的开发和训练非常棘手。通常,DL 模型是由数据科学家团队精心设计的。这种手动设计 dnn 的过程很困难,因为所有可能模型的搜索空间可能组合起来很大,一个典型的 10 层网络可能有大约 1010 个候选网络!因此,设计网络的过程通常需要大量的时间和实验,即使是那些具有丰富 DL 专业知识的人也是如此。

在实践中,这转化为试错过程,尝试上述一些可配置超参数(粗体)的不同组合,例如隐藏层数、每层神经元数、激活函数、优化器、批量大小、训练时期数等。有一些已知的架构,例如人工神经网络—ann(预测)、卷积神经网络— CNNs(图像分类)、递归神经网络—RNNs/长短期记忆网络— LSTMs(时间序列预测);已经证明对于特定类型的问题(在括号中)很有效。然而,除了这些知识和一些预先训练的神经网络的可用性(例如用于图像分类的 ImageNet 为新问题开发和训练 NN 的过程—【NAS】【1】—在很大程度上仍然是一个未解决的问题。**

而且,这也是 AutoML 具有自动化神经架构搜索(NAS)潜力的地方,它通过高效的启发式和分布式计算以加速的方式覆盖搜索空间。

强化学习(RL)已被证明是 NAS 的一种有前途的方法[2],其中控制器神经网络提出了一个“子”模型架构,然后对其进行训练并评估特定任务的质量。该反馈然后被用于通知控制器如何改进其下一轮的提议。这一过程重复了数千次——生成新的架构,测试它们,并向控制器提供反馈以供学习。最终,控制器网络学会将高概率分配给在保留的验证数据集上实现更好准确性的架构空间区域。

AutoML 工具—最先进的

了解了一些 AutoML 内部知识,对 ML/DL 管道有了更好的理解;让我们来看看当前 AutoML 工具的成熟度。

公平地说,AutoML 正处于 DL 几年前所处的阶段——人们对它的期望很高。

Gartner 预计,“到 2020 年,超过 40%的数据科学任务将实现自动化”(链接)。

Forrester 分析师在其 2019 年 5 月的 Wave 报告[3]中表示,“几乎每个公司都将拥有独立的 AutoML 工具。我们预计,随着产品变得更好,以及人们对这些工具如何适应更广泛的数据科学、人工智能和人工智能前景的认识增加,这个市场将大幅增长”。在同一份报告中,他们将 DataRobotH2O.aidotData 列为 AutoML 的三大领先提供商。

CB Insights [4]列出了目前超过 40 家汽车公司。在这里,重要的是要提到,虽然将一个工具标记为 AutoML 现在已经变得很“酷”,但是它们提供的 AutoML 功能(就 ML/DL 算法而言)并没有太大的区别。

今天的 AutoML 工具的“自动化”部分在于它们提供端到端数据科学/机器学习平台的能力——允许你做从开发模型到在同一平台上大规模部署它们的一切事情。

当不同的团队在不同的平台上训练和部署 ML/DL 模型时,AI/ML 从业者将会意识到挑战。因此,今天的 AutoML 工具主要帮助解决许多已知 ML 算法的端到端训练部署问题。

此外,虽然成熟的 AutoML 工具,例如 DataRobot,可能相当昂贵;AutoML 最近变得非常容易访问,更普遍的云平台提供了集成的 AutoML 功能:谷歌云的 AutoML微软 Azure 的机器学习服务AWS Sagemaker AutoPilot 。公平地说,这些工具在现阶段非常有限,仅支持基于基本回归的预测和文本分类。例如,在这个阶段,它们都不支持深度学习(或 NAS),这很可能是由于运行 NAS 的计算开销非常高。

结论

最后,让我们回到最初的问题:“AutoML 是否意味着数据科学家的终结,基本上是对专门数据科学技能的需求?

要回答这个问题,让我们从用户界面开始。对于 AutoML,我们指的是一种工具,它给定一个 excel/csv 作为输入数据,能够以合理的精度输出训练好的模型。是的,目前的 AutoML 工具可以做到。

当模型需要改进时,挑战就出现了。记住,DS/ML 是一个迭代的过程。问题是,您很少会遇到在您提供的第一个数据集上获得非常高的准确性的情况。如果你做了就有问题,或者你的问题太琐碎-😃 所以 AutoML 的问题在它需要改进一个模型的时候就开始了。

让“可解释的人工智能”变得如此困难的推理同样适用于此。AutoML 工具对于为什么一个模型会有这样的行为的理解非常有限。它可以探索输入数据的分布,以指出可以改进的某些数据特征。然而,它将永远不能推荐添加新的数据,例如天气、位置等。会提高模型精度。这是因为它缺乏业务/领域知识。同时,目前缺乏技术知识来发现一种全新的神经网络结构。例如,虽然它可以为人工神经网络推荐正确的隐藏层数,但它的 NAS 将无法推荐添加“记忆”将解决 RNNs 的消失梯度问题,从而导致 LSTMs 的发现。

今天的 AutoML 工具还不适合您的战略用例。然而,它们可以在企业数据科学模型开发的原型/MVP 和探索阶段提供重要的价值。

总的来说,今天的 AutoML 工具远不能取代你熟练的数据科学家——你仍然需要它们。然而,它们可以作为数据科学家的补充或独立的 DS/ML 平台,通过自动化构成任何新 DS 用例一部分的许多探索阶段,大大加快他们的工作。

参考

[1]神经架构搜索文献综述,(链接)

[2] Google AI:利用机器学习探索神经网络架构,(链接)

[3] Forrester New Wave:专注于自动化的机器学习解决方案,Q2 2019,(链接)

[4]CB Insights:2020 年值得关注的人工智能趋势,(链接)

[5]比斯瓦斯。伦理人工智能:其对企业人工智能用例及治理的影响,走向数据科学,2020 年(链接)。

AWS SageMaker Studio 自动驾驶仪准备好迎接黄金时段了吗?

原文:https://towardsdatascience.com/is-aws-sagemaker-studio-autopilot-ready-for-prime-time-dcbca718bae7?source=collection_archive---------28-----------------------

带有一些评论的自动驾驶界面演示

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

丹尼尔·利维斯·佩鲁西在 Unsplash 上的照片

在过去的几年里,我一直在关注企业自动化领域的最新产品。在这段时间里,我看到了十几个应用程序的现场和远程演示。随着竞争对手频繁添加功能和改进界面,这一领域的发展使得保持更新成为一项挑战。最近 AWS SageMaker Studio 自动驾驶仪变得可用,所以我有一组商业案例想通过它运行。对于本文,我通过自动驾驶功能运行表格 Kaggle 数据集,并分享用户体验。

一、为什么要用 autoML?

使用 autoML 有各种各样的原因,包括让更广泛的受众可以访问机器学习,便利性,易用性和生产力。我研究的重点是数据科学家建立可重复业务流程的易用性,数据分析师、数据工程师或机器学习工程师可以接管该流程。易用性和丰富的用户界面功能是必须的。

为什么选择 AWS 自动驾驶?

AWS 是个畜生。他们以惊人的速度发布产品和更新。如果你已经在 AWS 生态系统中,尝试一下是有意义的。

AWS 还有一个吸引人的地方是,你可以在使用的基础上使用 SageMaker 和 Autopilot。不需要昂贵的许可证。不过,如果你能关注一下你的账单就更好了。正如我在我的量子计算文章中提到的,这种设置允许个人访问和使用这些高级工具。有一些其他产品有不同的成本结构,使这不可能。

设置

以下所有信息都假设您已经设置了 AWS 帐户,包括账单。如果你是第一次设置你的账户,有一些自由层选项,尽管那只适用于前两个月的 Sagemaker

一旦你有了一个账户,如果你想做实验,你需要命名一个 S3 桶和文件夹。您将把您的数据文件加载到 S3 位置。

数据

只是为了使用一个对每个人都可用的公共数据集,我从 Kaggle 竞赛中抓取了几个数据集。还有一些可能的度量值的范围,您可以用它们来比较您的结果。* * *注意,阅读 Kaggle 竞赛规则详情。有些允许使用 autoML,有些不允许!您可以使用数据集,但不一定要将结果作为条目提交。

我从这两个 Kaggle 比赛中提取了训练数据集,并将它们加载到我的 S3 桶中的不同文件夹中。

矛盾,我亲爱的华生。使用 TPUs 检测多语言文本中的矛盾和蕴涵。在这个入门竞赛中,我们将句子对(由一个前提和一个假设组成)分为三类——T0、T1 或 T2。

6 列 x 13k+行—斯坦福 NLP 文档 n

  • id
  • premise
  • hypothesis
  • lang_abv
  • language
  • label

真实与否?灾难推文的 NLP。预测哪些推文是关于真实灾难的,哪些不是

5 列 x 7503 条独特推文

  • id -每条推文的唯一标识符
  • text -推文的文本
  • location -发送推文的位置(可能为空)
  • keyword -推文中的特定关键词(可能为空)
  • target -仅在 train.csv 中,这表示一条推文是否是关于一场真正的灾难(1)或者不是(0)

开始自动驾驶训练和型号选择

自动驾驶仪在 AWS SageMaker 服务上。他们最近推出了一个名为 Studio 的界面。正是在这里,您可以启动自动驾驶实验。

从 AWS 控制台,导航到 SageMaker 服务。在那里你会找到工作室控制台的链接

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

作者截图

在那里你可以添加一个用户(你自己)和 Open Studio。

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

作者截图

这个链接将带你到 JupyterLab 的 SageMaker 工作室。您将看到一个自动构建模型的选项。那是我们想去的地方。

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

作者截图和 gif

您输入关于输入文件和初始设置的信息。然后你创造一个实验。在这个过程中达到这一步是非常简单的。界面很直观。

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

作者截屏

用户体验直线下降

好的——那还不错。我们在路上了……

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

….这是 UX 团队在发布前冲刺的最后时刻。没有状态栏让您知道处理进行到什么程度。没有迹象表明幕后到底发生了什么。你坐着等待,希望有什么事情发生。

在分析数据步骤之后,您可以访问几个笔记本。

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

我打开数据探索笔记本,准备好一些像样的信息和可视化。那本笔记本里没有任何东西能提供简单的数据分析无法告诉我的真正见解。你可以在下面检讨自己。

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

极简数据探索——作者截图

最终,实验进行了,你开始在列表上看到试验。我注意到随着试验的完成和新试验的运行,度量标准也在改进。

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

作者截图

在测试运行期间,你可以仔细阅读“亚马逊 SageMaker 自动驾驶候选人定义笔记本”本笔记本包含模型调整过程的详细信息。你需要查阅这个笔记本来理解试验和输出。

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

作者截图

通过回顾这个笔记本,我可以看到模型似乎是 XGBoost 和线性学习者。它指定了您将使用的准确性/成功性指标。“这个笔记本将构建一个 二进制分类 模型,该模型由最大化已训练模型的“ F1 ”质量度量。“ F1 ”度量适用于具有正类和负类的二元分类。它介于精确度和召回率之间,建议在负面例子比正面例子多的情况下使用。”

结果呢

可以在分配给您的 S3 存储桶中找到输出文件。但是所有的文件都是按试验 id 分类的。你必须知道你在寻找什么。

当试验结束时(或者如果您设置了 250 个作业限制,那么您会达到这个限制),其中一个模型有一个小的星形指示器,表明它是试验中最准确的。

老实说,在这一点上,这个界面一点都不直观。我确实看到了一个部署模型按钮——假设通过 SageMaker 部署一个 API。

结论

缺少一个直观的 UI 来方便地访问模型选择和准确性度量,这使得这个工具超出了我的业务用例的范围。自动驾驶仪控制太多了。你可以自己微调,但是寻找你想要的东西的战斗似乎不值得。

我很可能会等待大约一年,并监控 AWS 为 AutoPilot 添加的功能。其他工具如 DataRobot 和 H2O.ai DriverlessAI 在可用性和可视化领域遥遥领先。

先睹为快

我过去评估过 H2O.ai 无人驾驶 ai,并将做一个新的测试来检查他们的最新功能。我也想看看 GoogleML。我对 DataRobot 有丰富的经验,所以不需要单独评估。

以下是其他用户界面的一些截图:

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

H2O.ai 作者截图

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

DataRobot 作者截图

数据科学家真的是最性感的工作吗?太好了。

原文:https://towardsdatascience.com/is-being-a-data-scientist-really-the-sexiest-job-around-hell-yeah-b652a20b302?source=collection_archive---------57-----------------------

数据科学领域的职业&人工智能

为什么你应该认真考虑从事数据科学的职业

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

转子密码机(图片由 skeeze 来自 Pixabay

第二次世界大战爆发时,艾伦·图灵 27 岁,他开始为英国密码破译组织工作,帮助他们破译德国密码。

通俗地说,密码是一种通过将信息转换成代码来有条不紊地伪装信息的系统。换句话说,密码是一种实现信息加密的算法。第二次世界大战期间,密码系统被广泛用于保护战时机密。图灵和他的团队专注于密码分析来解码这些信息。在其核心,这种解码涉及建立反算法解构德国密码系统的工作,最著名的是纳粹德国的恩尼格玛密码机。图灵和他的团队在这方面取得了一些进展。

据估计,图灵的工作将战争缩短了两年多,拯救了 1400 多万人的生命。说说有影响!

有趣的是,在许多方面,图灵的工作,无论是密码分析还是他随后对早期计算系统的研究,都涉及到智能机器的一些初步发展。因此,这确实代表了人工智能本身影响的开端。

如果我们快进到几十年后的未来,有充分证据表明,人工智能的影响只会进一步增加——远远超出了战时的密码破译,进入了我们的日常生活。让我们举几个例子。

数据科学改变 LinkedIn 的增长轨迹

2006 年,LinkedIn 还是一家雄心勃勃的小公司。就在那时,一位年轻的分析师在斯坦福大学获得物理学博士学位后不久,加入了 LinkedIn,成为他们的第一批数据科学家之一。他的名字是乔纳森·戈德曼。他一点也不知道他将会产生多么深远的影响,不仅是对 LinkedIn 的未来,也是对明确确立数据科学对全球公司的重要性的影响。

当时,LinkedIn 已经开始收集大量关于用户的数据,在这些数据中,高盛想到了一个有趣的想法。他意识到,虽然用户加入了网络,也邀请了他们的朋友/同事加入,但仍然存在差距。他们无法与已经在平台上的熟人联系。

他深入研究了关于用户的数据——谁在哪里工作,何时何地学习,与谁有联系,在哪里等等。他根据这些参数,围绕认识一个人的概率形成了假设,并对它们进行了测试。他寻找模式——例如,如果我和 X 一起工作,X 知道 Y,我知道 Y 的可能性有多大?最终,这是高盛打造“你可能认识的人”产品的基础,该产品现在是 LinkedIn 体验中无处不在的一部分。该功能一经发布,LinkedIn 的增长数字就迅速飙升。其余的,正如他们所说,都是历史了。

网飞开创了数据分析的新时代

网飞一直是一家深深植根于数据的公司。你们中的一些人可能记得,网飞最初是一家在线 DVD 租赁公司(在 2000 年代中期转向在线视频流媒体之前)。决定网飞早期成功的一个关键因素是,它能够将客户最有可能租赁的电影放在客户面前,而不是必须搜索整个目录才能找到感兴趣的内容。本质上,这是世界上第一个大规模推荐系统。

但是网飞做了一些改变游戏的事情。对于网飞,对于整个世界。

2006 年 10 月,网飞发起了一场比赛,开始时很谦虚,但很快就像滚雪球一样成为有史以来最大的机器学习比赛。

规则很简单。网飞向成功击败网飞内部电影推荐公司(名为 Cinematch)超过 10%的团队提供了 100 万美元的大奖(或者,技术上正确的说法是,要求将错误率降低 10%以上——RSME)。参与者被给予了大约 1 亿个评级的稀疏分布的训练数据集来构建他们的模型。

比赛持续了 3 年,共有来自 186 个国家的 40,000 多支队伍参赛。

网飞竞赛在应用于优化基于机器的推荐的分析领域带来了深刻的见解和相应的性能改进。它不仅彻底改变了推荐系统,其应用远远超出了电影,它迫使从业者在机器学习应用方面真正突破极限。今天,你很难找到一家企业对消费者的公司不以某种方式或形式利用推荐系统,包括配对!(更多阅读我关于这个话题的文章: 《人工智能能否帮你找到爱情:了解婚介的生意》 )

现在我们已经确定了数据科学和人工智能对人类和商业的不可否认的影响,让我们看看这种影响是短暂的还是持续增长的。简单的回答是——是的,一千次是的——持续的指数增长!但是不要相信我的话。让我们来看看几个硬数据点。

公众的兴趣水平

人们不得不做大量的原始研究或调查来了解公众的脉搏的日子已经一去不复返了。谷歌趋势现在只需点击几下鼠标就能提供这些见解。

具有讽刺意味的是,在这种情况下,数据帮助我们确立了数据日益增长的重要性!

图一。提供了从 2008 年到 2020 年谷歌上三个关键搜索词在全球范围内稳步显著增长的趋势——“机器学习”、“数据科学”和“人工智能”。

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

图 1:选择关键词的谷歌趋势数据*(2008 年 1 月-2020 年 1 月)*

专攻 AI 和机器学习的学生

某一特定学科越来越受欢迎的主要指标之一是渴望在该学科接受教育的学生人数。2019 年的人工智能指数报告描绘了几所顶尖大学的这些趋势。图 2a 和 2b 分别提供了*【机器学习导论】【人工智能导论】*课程报名人数的增长趋势。请注意,大学入学人数也受到座位数量的限制,所以这些图表虽然在最近几年飞速增长,但很可能不足以代表对这些学科的实际兴趣!

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

图 2a:机器学习导论总报名人数(来源:2019 人工智能指数报告)

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

图 2b:“人工智能导论”总注册人数*(数据来源:2019 人工智能指数报告)*

另一个有趣的学生统计数据是博士生人数的增长。根据 2019 年人工智能指数报告,人工智能已迅速成为美国计算机科学博士生最想要的专业。

与第二大热门专业(安全/信息保障)相比,人工智能专业的博士生人数是前者的两倍多!

投资开发人工智能能力

我们生活在一个绝对资本主义的世界里。因此,资金流动的方向几乎总是衡量周围最热门事物的最佳指标之一。因此,我们关注人工智能初创公司吸引的总资金。

从 2009 年在人工智能领域投资 3 亿多美元开始,在不到十年的时间里,情况发生了迅速变化。2018 年,全球共有 404 亿美元投资于人工智能创业公司。这是一个令人难以置信的增长,累计年增长率(CAGR)超过 70%!

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

PE-VC 对 AI 的总投资(以十亿美元计)(来源:CAPIQ,Quid,Crunchbase,2019)

总结一下——人工智能、数据科学和机器学习已经真正到来。纵观近代历史,这门新兴学科对人们的生活方式和公司的经营方式产生了巨大的影响。这种趋势不仅会持续下去,而且毫无疑问将见证增长率的进一步爆发,从最优秀的人才和大量资金被吸引到这些领域就可以明显看出这一点。

如果有什么时候是进入一个新的职业领域的最佳时机,那就是现在!

大数据正在把我们拖向另一个人工智能冬天吗?

原文:https://towardsdatascience.com/is-big-data-dragging-us-towards-another-ai-winter-95e79c5fefac?source=collection_archive---------69-----------------------

意见

为什么数据囤积是一个问题,我们如何解决它

人们可能很难记住过去几年令人窒息的剪报数量,但人工智能的历史充满了障碍和挫折。记性长的人都记得 70 年代初和 80 年代大部分时间的第一对所谓的“AI Winters”。第一个是对人工智能普遍失望的结果,而第二个,可以说是更重要的冬天诞生了,因为技术和物理硬件远远落后于当时的理论。例如:科学家发明了反向传播的概念,这是深度学习的主干,但直到现代 GPU 大量出现,必要的计算能力才真正可用。

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

一个人工智能的夏天似乎更好(图片来源:马库斯·斯皮斯克Unsplash

当然,现在情况变了。计算机很容易得到。我们在数据中游泳。政府正在投资研究。本科生正在学习机器学习。媒体将人工智能报道为科技领域的下一次巨变。一切似乎都在朝着这样一个未来发展:人工智能相当普遍,普通公众理解并接受它的承诺和效用。

不幸的是,“似乎”是最后一句话中的关键词。企业正在投资人工智能,但只有大约三分之一的企业看到了投资回报。如果投资回报率仍然难以捉摸,很容易预测投资将开始萎缩,尤其是在全球经济气候因前所未有的疫情而变得不稳定和不确定的情况下。我们将很容易看到气温再次下降,而不是享受上一个人工智能冬季的持续解冻。

但你看,问题不在于人工智能不赚钱或不能赚钱——它赚钱了。例如,大量的过程自动化人工智能项目是成功的。想想那些“阅读”法律文件并提取信息的人工智能,或者那些筛选和处理客户通信或调解账单问题的人工智能。当然,这些不是最性感或最复杂的用例,但它们为公司节省了资金,所以你知道它们不会很快去任何地方。

那么,如果人工智能可以赚钱,为什么只有 35%的公司看到投资回报?一个重要原因是,建立和训练模型的成本仍然高得惊人。好吧,但是为什么是那个?这是因为最近另一个席卷商业——尤其是科技——世界的趋势:大数据。

问问你自己:你听过多少次“更多的数据”是模型变得更好的原因?事实上,那是错误的。高质量的数据让模型更好。有用的、标记良好的数据使模型起作用。拥有大量的数据?这其实并不重要。尤其是在无法证明数据有用的情况下。当你处理我们在这里讨论的数量时,这就很难做到了。

现实情况是,投资者和大数据行业(因为没有更好的术语)一直在宣扬大数据的首要地位。大数据的成本是人工智能成本的巨大推动力。人工智能和人工智能从业者的担忧是,全心全意认为他们需要囤积所有数据的公司(即使他们看不到这样做有任何明显的效用)可能会开始撤回对人工智能的投资,转而支持大数据。但是,首先存储所有这些数据的最大原因是,你可以根据这些数据进行预测并构建人工智能。换句话说,我们实际上处于大数据扼杀人工智能投资的危险之中——矛盾的是,这是它存在的首要原因!

还有一个问题是,小公司受到大数据负担的影响更严重。对于较小的组织来说,存储数据和训练模型的门槛更高。当你将所有这些与摩尔定律已经结束的事实结合起来时,你可以开始看到未来对服务器空间和计算的真正经济竞争。这感觉像是对潜在的人工智能冬天的预测。

那么在这里能做些什么呢?从业者将不得不带头前进。我们需要表达我们的需求,而不是大数据的需求。我们需要投资有助于人工智能盈利的公司和解决方案,而不是那些目标只是组织和结构化大数据的解决方案。我们必须努力让这个行业在经济和环境两方面都可以持续发展。我们必须摒弃拥有更多数据总是更好的旧观念。因为,坦白说,不是的。太多公司囤积数据,却没有多少实际用途。我们需要能够清除那些我们没有理由保留的旧的、无用的数据。我们必须投资于数据质量措施,而不是存放我们数量的地方。

换句话说,为了避免人工智能的冬天,我们需要拒绝大数据,拥抱智能数据。

越大也越聪明吗?—开放人工智能发布 GPT 3 语言模型

原文:https://towardsdatascience.com/is-bigger-also-smarter-open-ai-releases-gpt-3-language-model-adbb8b3b8126?source=collection_archive---------50-----------------------

对更大的语言模型的竞争正在进入下一轮。

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

图片:www.pexels.com

NLP 应用的进步是由使用 Transformer 架构的神经网络组成的更大的语言模型推动的。值此最近公布当前最大模型——开放人工智能的 GPT-3 的结果之际,我想仔细看看这些进展。

模型不仅仅是带有智能插值方法的巨大“查找表”吗?

2020 年 5 月 28 日,OpenAI 研究人员的一篇论文(【https://arxiv.org/abs/2005.14165】)发表在 ArXiv 上,内容是关于 GPT-3 的,这是一种语言模型,能够在许多基准语言处理任务中取得良好的结果,从语言翻译和新闻文章写作到问题回答。它的特别之处在于,这些结果是在没有对所考虑的基准进行微调的情况下获得的,但是是由语言模型在没有任何进一步信息(零触发)或几乎没有附加信息(“一次触发”或“几次触发”)的情况下获得的。

GPT 3 号有不少于 1750 亿个参数。相比之下,最大版本的 GPT 2 有 15 亿个参数,世界上最大的基于转换器的语言模型——由微软在本月早些时候推出——有 170 亿个参数。

当 Open AI 在一年前发布上一代 GPT-2 时,媒体反响很大,这也是因为宣布不发布最大的型号,因为它可能会产生假新闻等有害的事情。与此同时,用这种模型从给定的上下文中生成新闻不再是什么特别的事情了。然而,正如实验所显示的,生成的文章不仅仅是从训练数据的文章部分拼凑起来的,而是真正新的。

乍一看,这些稿件往往与真实新闻难以区分。在当前的 GPT-3 论文中,一个结果是人们很难将生成的新闻文章与真实的新闻区分开来。在一个实验中,只有 52%的人被正确识别,这接近于切割所能达到的 50%。这也可能是因为一些真实的新闻项目是如此荒谬,以至于分界线不再能够被清晰地划分。

正如我自己对奥地利故事的实验所显示的,

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

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

towardsdatascience.com](/what-does-an-ai-system-think-about-austria-573c2f17ca01)

这些文章在很大程度上是语法正确的,读起来令人愉快,事实听起来很符合逻辑,但当一个人熟悉事实时,往往会被认为是不正确的。

似乎这个模型通过给定的上下文从一种“记忆”中过滤匹配的文章,然后将它们“插入”到一个新的故事中。记忆由大量参数形成,这些参数在用文本数据训练时被优化。GPT-3 在 2016 年至 2019 年期间收集的近 1 万亿个单词的 CommonCrawl 数据集上进行训练,以及与网络文本、书籍和维基百科相关的数据集。

这让我想起了深度学习只是美化了“曲线拟合”的说法,我在之前的一篇文章中讨论过:

[## 看机器学习模型拟合曲线!

图灵奖获得者朱迪亚·珀尔的声明表达了当前流行的机器背后的简单机制…

towardsdatascience.com](/watching-machine-learning-models-fitting-a-curve-c594fec4bbdb)

但这并不是真正的“理解”文本,甚至不是从文本中得出结论。正如这篇新论文中的结果所显示的,GPT-3 模型日子不好过,尤其是在需要真实结论的测试中。

文中一个有趣的实验也是尝试计算作为文本给出的例子,例如:

“48 加 76 是多少?”

由模型计算。这里显示,最大的模型(1750 亿个参数)允许两个或三个数字的简单加法和减法,但还不允许更长的计算。而这又没有为这个任务进行特别的微调!

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

图表来自论文【https://arxiv.org/abs/2005.14165

好像“查找表”的大小对于较短的计算来说足够大,但是对于较长的计算来说不够大。这些“表格”的数据来自哪里?

在用于培训 GPT-3 的互联网文本中,有足够的这方面的材料。在互联网上搜索这些计算结果会提供如下表格:

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

截图来自 https://www.dollartimes.com/calculate/percentage/

我的问题是,模型和数据的进一步扩大是否会导致 NLP 应用程序的进一步实质性改进,或者是否是时候引入新的想法和方法了?

CNN 在中分辨率卫星数据上也同样闪亮吗?

原文:https://towardsdatascience.com/is-cnn-equally-shiny-on-mid-resolution-satellite-data-9e24e68f0c08?source=collection_archive---------12-----------------------

Python 中的 Landsat 分类教程

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

卷积神经网络(CNN)的变体继续被誉为图像相关问题的强大机器学习(ML)算法。CNN 在多个领域获得了前所未有的准确性——基于对象的卫星图像分类就是近年来激增的此类应用之一。虽然基于对象的分类所需的高分辨率卫星图像不是免费提供的,但研究人员经常依赖免费提供的中分辨率数据(例如 Landsat——每个像素代表一个 30 米* 30 米的地块)。CNN 的机制阐明了它考虑相邻像素并依赖于它的模式和纹理,而不仅仅是一次一个像素。

在中分辨率卫星数据(如 Landsat)的土地覆盖分类中,目标是根据不同波段的数字编号(DN)值对每个像素进行分类。当从 CNN 模型的角度来看时,一个明显的问题是,“在确定像素的类别时,位于几个像素之外的近邻或相邻像素的 DN 值会起任何作用吗?”大多数人可能会回答“不”。这是否意味着 CNN 尽管是解决形象难题的有力工具,但在这样的形象上会失败?仅凭假设就下结论太快了。在本帖中,我们将调查 CNN 模型在中分辨率数据上的可用性,在这种情况下,目标识别既不可能也不是目标。

这篇文章被强烈推荐,非常适合地理空间领域的人们,他们想开始他们的 CNN 遥感之旅。

知识不是目的地,而是旅程。所以不要只是为了搜索脚本而向下滚动。👀

使用的数据 这里使用的是 2011 年班加罗尔 Landsat 5 多光谱数据的波段 2 至 6 及其相应的二进制构建层。陆地卫星 8 号或 2A 哨兵将是我们许多人的显而易见的选择,因为它们是最近的,并将在未来继续下去。但是不选择它们的原因是更高的辐射度和光谱分辨率;这将产生比大地卫星 5 号更好的结果。如果我们设法在 Landsat 5 数据(8 位像素深度)上获得好的结果,我们可以在稍加修改的情况下将其扩大到 Landsat 8 或 Sentinel-2A(两者都有 16 位数据);但反过来可能不会很好。要了解更多关于如何为模型创建训练数据,您可以查看这个视频

对于那些在开始之前想要快速 ML 胶囊(受监督的)的人来说,它是在一个实体的几个特征(特征或 x)与其其他属性(值或标签或 Y)之间建立关系——我们为模型提供了大量的示例(带标签的数据),以便它从中学习,然后预测新数据(未标记的数据)的标签。在这里,按照惯例,多光谱数据将被称为要素,而分类构建数据将被称为标注。

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

多光谱训练数据及其相应的二进制构建层

先决条件 我们将使用 Python 3.7.4 和以下库进行建模(查看此视频了解安装说明):

  1. pyrsgis 0 . 3 . 9—读写 GeoTIFF
  2. sci kit-learn 0 . 22 . 1—用于数据预处理和准确性检查**
  3. Numpy 1 . 17 . 2—用于基本的数组操作
  4. tensor flow 2 . 0 . 0—构建和部署 CNN 模型**

了解数据 数据的分布在为特定目的选择模型时起着重要的作用。下图显示了所有波段中 DN 值的频率。

Landsat 5 多光谱直方图

直方图显示了不均匀的分布,像神经网络这样的模型对这种类型的数据分布很敏感,因为它们自然倾向于赋予具有较高值的特征更多的重要性。例如,频带 6 似乎具有相对大量的具有高 DN 值(高平均值)的像素。如果模型表现不佳,或者如果我们想最后一次提高模型的准确性,那么处理这个问题是值得的,现在,我们绕过对数据的任何更改,专注于 CNN 部分。

A 部分:读取图像芯片并存储为 Numpy 数组

生成用于训练模型的训练样本 生成用于深度学习的训练数据 QGIS 插件将帮助我们在进行模型训练之前生成训练样本并更好地可视化。通常,这是在后端完成的,但是可视化数据及其结构总是有用的,尤其是对于初学者。以下是我在这次迭代中使用的一组参数(如果需要,我们可以随时回来调整这些参数):

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

用于生成图像芯片的 QGIS 插件的屏幕截图

根据您传递的参数和您的计算能力,这一步可能需要几分钟。我使用了一个 7x7 步长的 7x7 窗口(窗口幻灯片)来生成训练样本,结果产生了 84,972 个图像芯片,足以训练一个 ML 模型,但我们将在接下来的步骤中减少这个数字。通过减少或增加步幅,随意生成更多或更少的图像。点击阅读更多关于插件用法的信息。

现在是编码的时候了!
下面的代码片段按顺序执行以下操作:

  • 将工作目录更改为生成的图像芯片的位置
  • 循环读取图像芯片
  • 在四维 NumPy 阵列中堆叠芯片
  • 显示一些关于数据的基本信息。
**Input features shape: (84972, 6, 7, 7)
Input labels shape: (84972,)
Values in input features, min: 1 & max: 255**

要素的形状显示数据堆叠为四维数组,其中第一个索引是记录的位置,第二个是图像的波段数,第三和第四个分别是图像碎片的高度和列数。
理想情况下,波段数应位于最后一个位置,如下图所示,这是 Tensorflow 对图像碎片的预期方式。稍后我们将着手解决这个问题。

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

CNN 模型的训练芯片生成模式(5*5 内核演示)

更新日期:2021 年 5 月 29 日

以上部分是为了帮助您理解后端工作流程。如果您不想走 QGIS 这条路,所有的步骤都可以使用下面的代码块以编程方式完成。请注意,以这种方式直接生成图像芯片将导致波段数位于最后一个索引的特征数组。为了使这个代码块与其余部分保持一致,我使用 NumPy 滚动了轴。稍后将使用“tf.transpose”撤消此操作。如果你愿意,你可以删除这个代码块中的‘roll axis’行,并在后面的代码块中‘transpose’行。

将 NumPy 数组保存为文件以便快速访问 根据机器的功率,遍历文件可能会很耗时。为了避免每次运行脚本时出现这种情况,更好的方法是将 NumPy 数组存储在磁盘上。npy 格式)。下面几行将完成这项工作:

b 部分.数据预处理和训练模型

要从第二次开始运行该脚本,可以从阅读。npy 文件。现在,机器学习模型期望相同数量的所有类(这里是两个类)的例子。如果每个类中的训练数据数量相差很大,训练模型就很困难(但不是不可能)。让我们看看我们的数据。

**Number of records in each class:
Built: 10082, Unbuilt: 74890**

*好吧!这看起来并不吸引人。假设我们在稍后阶段通过简单地计算已建或未建预测的比例来计算模型的准确性。如果模型训练不足,并预测一切为未建,它仍然具有 88%的误导准确性(100 正确分类的未建/总记录)。这是因为未构建类中的训练样本数量占了绝大多数。修复这个是强制性的!
下面的代码片段将通过随机选取样本来减少未构建类中的训练样本数量,以匹配已构建类中的样本数量。

**Number of records in balanced classes:
Built: 10082, Unbuilt: 10082**

训练样本的总数已经显著减少,但是仍然比具有极度不平衡的类要好。

数据标准化 缩放数据对于确保平等对待所有特征非常重要,因为神经网络对数据的分布很敏感,如第一幅图所示。数据可以在 0 到 1 的范围内(标准化)或-1 到 1 的范围内(标准化)。我们将假设所有六个波段的最大值和最小值分别为 0 和 255,从而对数据进行归一化处理。下面的代码片段将合并上一步中分离的特性,并将其规范化。

**New values in input features, min: 0 & max: 1**

从数据本身计算最小值和最大值始终是一个好的做法。但是对于卫星数据分类,如果我们希望模型预测其他一些区域的建筑面积,而这些区域的最小值和最大值与我们用于训练的区域存在显著差异,该怎么办呢?这是一场完全不同的辩论,我们不会讨论,也不会继续讨论 8 位数据的最小值和最大值的传统假设。

测试/训练分割 为了能够在稍后阶段评估模型的性能,数据按照惯例被分割成两半,训练和测试。我们将为此定义一个函数,这里的训练测试比例是 60–40。

创建张量 正如我们在开始时看到的,我们的特征数据中的波段数位于第二个索引处。为了能够使用 Tensorflow 建立模型,我们需要将 通道中的数据转换为最后一个索引 格式。Tensorflow 为此提供了一个转置函数,如下所示:**

**Reshaped split features: (12098, 7, 7, 6) (8066, 7, 7, 6)
Split labels: (12098,) (8066,)**

赢得模型的关键是特性工程和构建正确的模型架构。特征工程是为了提取最有意义的信息或增强数据的内容,但这是一个相当大的主题,将在以后的单独文章中讨论。在之前的帖子中,一个简单的神经网络模型在没有任何特征工程的情况下令人满意地执行了组合提取(可能已经成功地建立了波段和组合类之间的关系)。因此,工程输入特征可能并不总是强制性的,它取决于问题和模型的复杂性。这里,我们通过简单地缩放数据(如前一步所做的)来摆脱“特征工程”。

模型的架构需要几周的时间来制作,因此,“你的第一个模型永远不会达到预期”。我只从输入和输出层开始检查基础精度。我继续添加层,并改变每层中的卷积数,以达到接近预期的结果。以下是我的理由:

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

这里采用的 CNN 模型架构

下面的代码片段将构建模型并对其进行训练。

与大多数深度学习模型不同,我们没有使用池层,它专注于在图像中找到对象。你可以在官方网站上随意阅读模型的每个参数的细节,相当好的记录了

对于神经网络来说,它们记忆训练数据并且不能建立关系是非常常见的,这导致对新数据的不良预测,通常称为过拟合。因此,在训练后,我们使用测试数据交叉检查模型的准确性。

**Confusion matrix:
[[3781, 269],
[252, 3764]]P-Score: 0.933, R-Score: 0.937, F-Score: 0.935**

我们达到的精确度似乎令人印象深刻,对于不同的图像,您将不得不花费一些时间来达到正确的模型架构。为了方便起见,您可能需要添加几行代码,使用下面的代码片段将模型保存在磁盘上(HDF5 格式)。

c 部分.加载保存的模型以预测新的结果

现在,让我们看看模型如何处理新数据。下面的代码片段将:

  • 加载保存的模型,
  • 在存储器中生成图像碎片,以及
  • 重复预测的所有预处理步骤。

下面定义的 CNNdataGenerator 函数可用于绕过我们在图像芯片生成开始时采用的 QGIS 插件步骤。

下图显示了印度海得拉巴一个新区域的预测建筑(红色)。

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

使用 CNN 模型(7x7 内核)对新数据进行预测。

总体而言,分类看起来不错,但对于混合的堆积像素-置信度值较低。检查 QGIS 中的结果显示,该模型对混合堆积像素不太有信心,这可能是因为它在训练期间没有看到足够的示例。您可以尝试通过减小步幅来解决这个问题,这可能会按比例增加训练功能的数量。另一个选择是使用稍微低一点的阈值来提取所有的堆积像素,这样应该就可以了。

关于我们实现的模型的极高精度,这也是我们的测试集中混合像素数量较少的结果。该模型在预测测试类方面表现良好,因为它们在多维空间中容易微分。然而,该模型很好地学会了区分纯像素的类别,并且似乎在新数据上工作得很好。

我们开始讨论的是中等分辨率数据的内核大小,为了研究这个问题,我使用了另外两个内核大小(3 和 11)。

值得一提的重要一点是,深度学习架构是敏感的,也就是说,我们不能指望完全相同的模型架构在不同的内核大小上产生相似的精度。因此,预计会对体系结构进行一些小的修改。由于当前问题的简单性,相同的模型架构在不同的内核大小上产生了令人信服的结果。

使用不同的内核大小实现的准确性

现在,我们已经从不同的内核大小和来自前一篇文章的人工神经网络模型的输出中获得了最佳结果(至少对于一个基本的 CNN 来说),让我们使用所有的模型预测新的数据,并想象它看起来是什么样子。

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

对我来说,内核越大,预测的图像越平滑(希望你也能注意到这一点)。来自较大核的输出看起来像 100m 或 200m 分辨率数据的分类图像,这违背了原始图像的分辨率。

在 CNN 模型中,3x 3 内核是最好的选择。总的来说,看起来人工神经网络模型保留了最大分辨率,但是人工神经网络的精度和召回率比目前的 CNN 模型低(0.815 & 0.838);可能是由于不平衡的训练课程和较大的数据量。保留最大分辨率(仅视觉上)并不能简单地得出 ANN 在中分辨率数据方面优于 CNN 的结论,我们相信统计数据!

我们构建的 CNN 模型是一个非常基础的版本,我们只调整了层数和每层中卷积滤波器的数量。然而,还有许多其他更重要的参数(步幅、激活函数、汇集、退出、时期、批量大小、学习速率等。)可以用来解决上述问题——为了避免延长帖子的时间,这里忽略了它们。

如果你觉得这篇帖子有用,不妨找我的另一篇帖子“ 神经网络用于卫星数据分类使用 Tensorflow 中的 Python有趣。请继续关注类似的帖子,了解一些我身边有趣的地理空间信息。 TwitterLinkedIn

完整的脚本、数据和训练好的模型可以在这个 GitHub 库上找到。开放知识万岁!🎓👺

新冠肺炎一级防范禁闭正在净化米兰的天空吗?

原文:https://towardsdatascience.com/is-covid-19-lockdown-cleaning-the-skies-over-milan-42dbba1ec812?source=collection_archive---------25-----------------------

新冠肺炎控制如何影响伦巴第的空气污染水平

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

Pixabay 上的 JuergenPM

一个多月前,意大利政府在中国以外采取了最全面的措施来应对冠状病毒的爆发,锁定了 T2 人口最多、最富裕、生产力最高的地区:伦巴第。

随之而来的旅行禁令关闭所有非必要的商业和工业对意大利脆弱的经济产生了巨大的影响,但也给了研究人员一个独特的机会来收集数据和研究我们在从未见过的条件下生活的环境

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

米兰大教堂及其空旷的主广场被封锁。根据《晚邮报》的报道,大教堂广场通常每天有超过五万人通过。(天际线网络摄像头)

事实上,阻碍我们的大部分日常活动几乎抵消了污染等式中的人类成分,并允许我们研究当人类的贡献变得可忽略时环境如何反应,这种方式在正常情况下根本不可能考虑。

我们的日常交流、活动和习惯对我们呼吸的空气质量有影响吗?

每个住在伦巴第的人都可以很容易地回答这个问题,只要看看明亮的天空,享受前所未有的晴朗的星空。然而,作为科学家,我们寻求数据来支持我们的经验,试图解释一个比我们肉眼看到的更复杂的现象。

伦巴第的空气污染

空气污染:它是什么?我们为什么要关心它?

我们把空气污染称为空气中化学成分的不均匀混合物。当我们谈论污染物时,我们可以指气体化合物——如二氧化碳和二氧化氮——以及大气气溶胶粒子,悬浮在空气中的不同直径的固体和液体物质,如 PM10 或 PM2.5

呼吸污染空气的长期健康影响包括心脏病肺癌呼吸系统疾病如肺气肿。即使在较低的浓度下,这些化学物质也具有毒性,长期接触可能会对健康造成影响。例如,PM2.5 颗粒非常小,它们可以在 30 分钟内渗入肺部,导致严重的呼吸问题。

根据世卫组织每年有 420 万人因暴露在环境空气污染中而死亡,而世界上 91%的人口生活在空气质量超过指导限值的地方

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

索林·格奥尔基塔在 Unsplash

呼吸毒素:为什么波河流域是欧洲污染最严重的地方之一

鉴于这些空气污染物的致命毒性,欧洲联盟已经制定了大量的立法,为空气中存在的许多污染物建立了基于健康的标准和目标。

2019 年米兰在 2 月底前超过了全年法定限额。同年年底,该市记录了 135 天(2019 年全年的 37%)污染水平远高于指导阈值。米兰和一长串城市一样有着糟糕的分数:威尼斯、都灵、布雷西亚、罗提、贝加莫、帕维亚、蒙扎等等。
所有这些城市都位于**同一个地理点:**波河流域。截至今天,这里被认为是欧洲空气质量最差的地区。

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

2020 年 1 月,SeaWiFS 卫星如何观测意大利北部伦巴第平原上空的空气

波河流域被称为意大利工业化程度最高的地区,主要工厂位于都灵、米兰和热那亚之间的工业三角地带。波河流域的大部分田地都被耕种,既供人食用,也用来喂养密集饲养的动物。

波河流域空气污染的大污点确实与工厂汽车集约农业、有关,但也是非常不幸的地理构造的结果。在这片被阿尔卑斯山环绕的平原上,风很少,长时间的逆温事件频繁发生。这导致排放物停留在山谷中,而不是被吹走

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

croma concept visual onpix abay

空气污染和封锁:初步分析

问题

既然我们介绍了空气污染的主要方面和我们的参考环境的特征,我们可以使用这些知识来收集适当的数据并尝试回答一些问题。

  1. 封锁后空气质量有变化吗?
  2. 怎么变的?哪种污染物变化最大?
  3. 为什么变了?对于这种行为,有数据给出合理的猜测吗?

数据

为了回答这些问题,我们依靠伦巴第地区环境保护局(ARPA)。ARPA 有地面传感器,可以持续监控几个天气参数,如温度、风力、降雨量,以及重要的空气污染指标,如上述颗粒物。数据可以通过这个表格询问。

在同一天的不同地点多次监测污染物。我们构建的数据集对这些观察值进行平均,以获得从 2018 年 1 月 1 日起每天的单个值。因此,执行的分析不是空间分析,也没有考虑昼夜变化。

以下是收集到的特征的摘要:

  • :收集数据的年份(2018、2019、2020)
  • :测量的日子(1–365)
  • 污染物:污染物的日浓度(g/m^3)
  • :日平均风力强度(米/秒)
  • :一天的降雨量(毫米)
  • 温度:当天的平均温度(℃)
  • 封锁:这一天是封锁日(布尔型)
  • LockCount :从隔离开始的天数(0-进行中)

监测的污染物有二氧化氮(NO2)一氧化碳(CO)PM10PM2.5臭氧(O3) (NH3),以及二氧化硫 (SO2)。

协调数据集可在此处找到:

[## detsutut/ARPAdataHarm

这个库包含一个 R 脚本,可以用来合并和协调来自…

github.com](https://github.com/detsutut/ARPAdataHarm)

1)封锁后空气质量有变化吗?

在检查数据之前,让我们先看看来自欧洲航天局的卫星图像:

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

过去三个月欧洲各地的二氧化氮水平

ESA 的 Sentinel-5 强调了对流层中二氧化氮水平的明显下降趋势。这在波河流域尤其明显,但也影响到西班牙和中欧。类似的行为已经在香港、北京、上海和武汉出现。

这已经表明一些变化肯定正在发生,在一个范围太广而不能仅仅用当地的气候因素来解释的地区。然而,这些变化可能仍然是由于季节性趋势造成的。这就是我们需要核对数据的原因。

例如,让我们看看伦巴第地区过去三年的二氧化氮趋势。

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

伦巴第二氧化氮污染趋势。黄色区域突出显示了 2020 年趋势与前两年的最小日值之间的距离。

正如我们从黄色突出显示的区域的大小可以看到的,NO2 下降似乎不仅仅是季节性的2020 年检疫期间测量的二氧化氮浓度低于我们在 2019 年和 2018 年同期经历的浓度
在此时间窗内执行 ANOVA 测试显示,三组之间确实存在显著差异,而 Tukey 的多重均值比较测试表明,这种差异在比较 2018–2020 和 2019–2020 时有意义,而在 2018–2019 时没有意义。

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

那么,的空气质量在封锁期间发生了变化。

2)空气是怎么变化的?

证明我们现在呼吸的二氧化氮浓度与我们以前呼吸的不同并不一定意味着空气污染因为封锁而下降,也不意味着所有涉及的污染物都在 T2 发生。

让我们测试一下其他污染物。一氧化碳、臭氧、苯、氨和二氧化硫的 p 值也低于显著性水平 (0.05)。但 Tukey 对这些成分的测试显示,只有二氧化硫在 2020 年有显著下降。

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

多年来苯(左)和二氧化硫(右)的箱线图。时间窗口:3 月 8 日(锁定开始)—4 月 8 日(记录的最后一天)

PM10PM2.5 的方差分析测试均为阴性,因此这里的猜测是它们这些年来没有太大变化(从统计学上来说:我们不能拒绝测试的零假设,因此说它们这些年来有变化是不安全的**

3)空气为什么变了?

既然我们知道一些污染物在封锁期间经历了前所未有的下降,而另一些没有,不言而喻,理解为什么会发生这种情况会很好。

这确实是一个微不足道的问题。相关性并不意味着因果关系,而且有太多的因素被包括在内,以至于真的很难评估这种下降的直接因果路径**。因果关系还需要对主体的深刻理解,这在这里根本达不到。**

然而,我们仍然可以使用相关性和文献来做出合理的猜测,排除尽可能多的压力因素。

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

2018-2020 年期间空气污染物和气候因素的相关图。

**方差分析倾向于排除季节性趋势是这些空气污染下降的主要原因,但它们仍可能是由于当地气候因素。相关表清楚地表明污染物与风、温度和——对于 PM10 来说—**—降水量有显著的负相关性。然而,在 2018 年、2019 年和 2020 年的 2 月和 3 月进行的一些测试显示,气象条件在这些年里基本相同

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

从 1 月 1 日到 4 月 6 日的降雨(绿色)、风力(紫色)和 no2(橙色)的标准化观测值。no2 水平和降雨之间没有相关性,但我们发现风和 NO2 之间有轻微的相关性。然而,这还不足以完全解释 NO2 的大量下降。

鉴于我们没有经历重要的局部气候变化,我们剩下的就是人类活动。人类活动以多种不同方式广泛造成空气、土地和水污染。

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

空气污染的来源(英国政府

相反,从我们看到的气候因素来看,绝大多数这些密集的人为活动在全国关闭后面临着历史性的下降。禁止通勤意味着周围的车辆更少,意味着氮氧化物、颗粒物、一氧化碳和苯更少。封锁工厂意味着更少的工业流程更少的能源消耗**(同样,更少的道路和非道路运输)**。****

在我们分析的所有原因中,人类活动的强度是唯一与前几年相比发生重大变化的参数。这是封锁的直接后果,并允许我们合理猜测隔离对我们呼吸的整体空气质量的积极影响**。**

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

三月份每辆车行驶的公里数。封锁后,公里/车数量急剧下降。(ARPA)

假设封锁是空气质量改善的主要原因,我们仍然必须为那些浓度在隔离开始后没有太大变化的污染物找到合理的解释。考虑到不同的人类活动排放不同的污染物**,并且并非所有的活动都以同样的方式受到封锁的影响,这是有动机的。**

例如,让我们考虑一下颗粒物质。在这里,住宅和商业燃烧在排放中起着重要作用。关闭工业减少了商业成分,但增加了住宅成分,因为人们现在大部分时间都呆在家里。这可能导致排放从商业来源向住宅来源转移**,尽管已经锁定,但仍将 PM10 和 PM2.5 锁定在平均水平附近。
另一个相关的例子是 NH3农业是氨排放的最大来源:到目前为止,欧洲超过 90%的 NH3 排放来自动物养殖、粪便处理和合成肥料。农业活动没有像工业活动那样遭受严重的封锁,这可能解释了为什么氨没有下降这么多。**

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

结论

在复杂的环境中研究正在发生的现象从来都不是一件容易的事情。然而,的统计数据提供了聪明的工具,帮助我们在制定合理的猜测**,以便在未来验证或拒绝。**

在这篇文章中,我们将我们的猜测集中在伦巴第的空气质量上,展示了与前几年同期相比空气质量是如何显著改善的。****

虽然空气污染的年内下降可能与季节性现象有关,但一年内统计上的显著下降需要进一步解释。由于我们没有发现当地气候因素的相关变化,唯一似乎发生巨大变化的是人类活动,由于新冠肺炎实施封锁,人类活动在上个月受到了极大的限制。尽管如此,并不是所有的活动都已经完全停止,一些污染物如 PM10 和 NH3 仍然保持在高浓度水平。

我们因此声明新冠肺炎的封锁可能事实上是伦巴第上空的空气看起来前所未有的干净的原因。****

****更新 * ***

ARPA Lombardia 公布了一项 初步调查的结果 关于气压因素的变化和空气质量趋势数据所产生的限制性措施出台以对抗病毒的传播。这项调查似乎证实了整体空气质量的改善和国家封锁之间的联系。

参考

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

** [## Tommaso Buonocore -作者-走向数据科学| LinkedIn

查看世界上最大的职业社区 LinkedIn 上 Tommaso Buonocore 的个人资料。托马索列出了 5 项工作…

www.linkedin.com](https://www.linkedin.com/in/tbuonocore/)**

数据科学适合你吗?

原文:https://towardsdatascience.com/is-data-science-for-you-6cbe995ad349?source=collection_archive---------58-----------------------

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

克里斯·卡里迪斯在 Unsplash 上的照片

你可能已经知道答案了。

跟着感觉走

想想一个国家。

你想到了哪一个?法国?巴西?澳大利亚?

现在仔细想想这个。答案从何而来?你感觉到它突然出现在你的脑海里了吗?

作者山姆·哈里斯用这个问题来强调这样一个事实:我们不会“选择”很多,甚至可以说是任何看似有意识的决定。我想说的是,在回答这篇博文标题中提出的问题时,同样的潜意识决策过程已经在起作用了。

总的来说,我并不是一个非常直觉的人。我倾向于带着过度复杂的思考来处理生活中的重大和次要决定,有时甚至会在电子表格中记录不同的选项(当我输入时,这听起来很可笑)。然而,有时候你的直觉(嗯,你的潜意识)会给出一些相当不错的答案。

几年前,我发现自己在一个工程部门工作,做一些与科学设备开发相关的工作。我喜欢这份工作,但有些地方不对劲。

我是从物理学背景慢慢进入这个角色的,起初,当公司很小的时候,我能够成为一名工程通才。我真的很喜欢那段时间,能够做任何事情,但是随着公司的成熟,我周围的专家越来越多。我突然和机械工程师、软件工程师和电气工程师一起工作*,他们只做那些事情,不关心其他事情*。

我羡慕他们。他们似乎都有一个激光聚焦的愿景,他们想做什么与他们的职业生涯,绝对没有兴趣转向他们的核心领域之外。另一方面,我开始承担越来越多的项目管理责任。毕竟,我处在一个独一无二的位置,对每件事都略知一二,但对做严肃的、动手的专业工作却知之甚少。我当监工是有道理的。

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

尼古拉斯·托马斯在 Unsplash 上拍摄的照片

有一天,我决定如果我要全力支持工程师们,我应该增加我在他们领域的知识。我首先选择了机械工程,并完成了基本的 SolidWorks 资格认证,然后继续复习我的电子学。我报名参加了一门课程,并保证在业余时间学习这门课程。

然而,几个月过去了,我发现自己经常找借口解释为什么“今天不适合”上这门课。我也尝试过电子项目,但还是进展缓慢。

事实是,我对工程没有任何热情。我感到非常困惑,不知道该怎么办。

数据的力量迫使我

然后,在一天下午的会议上,我无意中听到有人谈到一位同事正在研究“一种算法”,但却很难找到时间来完成它。我不知道这到底意味着什么,但它的某些东西引起了我的兴趣。

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

Carlos MuzaUnsplash 上拍摄的照片

我找到了那个人,和他谈了这件事,问我是否能参与其中,他很高兴地把整件事都交给了我。这是我第一次体验到我后来发现的简单的机器学习算法。在我意识到之前,我正在努力学习 Coursera 数据科学专业。我在午餐时间愉快地完成了课程。晚上都浪费在这上面了。我发现自己爱上了统计学,这是我在学校讨厌的一门学科,因为它完全没有任何现实世界应用的意义。

我说的不是头条新闻,前沿新闻。当然,我后来做了关于深度学习和大数据的课程和项目,但我也喜欢更平凡的东西。我真的喜欢运行 t-test,或者清理数据,或者制作一个非常好的图。这听起来可能有点悲哀,但我永远也不会理解为什么有人会去看板球比赛。我猜每个人都有自己的想法。

就这样。有一天我突然意识到我找到了我想做的事情。物理学和工程学曾经很棒,但是这种感觉就像是一种爱好。从那以后我再也没有回头。

(为我)做出决定

关键是,我并没有有意识地做出这个决定。这并不是职业机会和工资等级经过计算和合理划分的结果。它不是基于对行业和公司的仔细研究。这感觉很好,很有趣。

所以,我给你的建议是。如果你正在考虑进入数据科学,或者你已经进入了,而这不是你的感觉,它可能不适合你。如果你从事数据科学是为了荣誉、金钱或只从事超级酷的人工智能项目的想法,你可能需要再想想。

毕竟,可能有你喜欢的东西,如果你打算一周做几十个小时,甚至几十年,难道你不想找到它吗?

尽可能多地探索各种途径。你会知道什么时候有进展。不要担心你的年龄。不要担心必须学习大量的新东西。不要担心抛弃其他领域的成熟技能(无论如何,它们可能会派上用场)。从长远来看,你会更快乐。

祝你好运。

数据科学很难吗?

原文:https://towardsdatascience.com/is-data-science-hard-20a159f1e5e9?source=collection_archive---------31-----------------------

诚实的现实生活视角

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

塞巴斯蒂安·赫尔曼在 Unsplash 上的照片

在我的职业生涯中,我领导了许多分析转型,使组织能够进入高级分析和数据科学领域。这包括领导技术团队和教育业务主管。一个很常见的问题是:

“[数据科学]难吗?”

我来自一个量化背景,并取得了精算师资格。我职业生涯的早期是在“非传统的”精算学科中度过的。然后,我偶然进入了数据和分析领域,这一领域在数字和技术转型中蓬勃发展。

在我早年,大多数统计模型都已经建立起来了。我们的主要责任是确保其假设和调整因素得到更新。

向前看,大多数预测模型都引入了 AutoML(自动机器学习)的概念。这包括基于某些业务用户设置的自动模型选择和校准。

如果全部自动化,数据科学家的实际作用是什么?还有,怎么会这么难?

模型设计

每个模型都高度依赖于输入配置。例如,什么是因变量,什么是输入范围变量,我们想要一个通用的还是特定的模型,等等。

虽然 AutoML 编排了这一过程,但人类的决策仍然存在。然后,数据科学家应该理解底层的统计模型机制、假设和原则。这确保了所选模型的行为符合预期。

业务相关性

数据科学模型是为解决业务问题而构建的。数据科学家负责模型根据业务流程工作。处理数学的是商业职业,而不是处理商业的数学职业。

除了模型构建,数据科学家还需要宣传和提升组织的数据素养。这包括诸如模型透明度、模型数据谱系和模型理解等领域,以增加组织数据的可信度。

数据清理

在我多年的经验中,寻找干净的数据是一件很难的事情。我相信这是一个旅程,需要一个明确的过程来不断改进和整合。

数据科学家预计将在数据清理中发挥重要作用。“90%的时间用于数据准备,10%的时间用于建模”这句老话仍然适用。按照我上面的推理,高管信任了解业务的数据科学家。这是数据管道中每个人的责任,包括数据工程师和报告分析师,也是他们的责任。

模型货币化

对于组织来说,模型应该被视为一种资产。对于任何资产,都需要治理和维护。此外,它需要用于各种用例,而不仅仅是单一用途。

例如,我们为我以前的一个客户创建了一个客户流失预测模型。除了识别有风险的客户,我们还将其用于客户参与细分,并作为信用风险记分卡的输入。构建一个并重用许多将为任何资产带来更高的 ROI,这将为其他模型开发促进更多的用例。

“数据科学很难吗?”

数据科学家需要很好地掌握数学、业务和技术。那些认为坚实的定量学位就足够了的人,会发现在商业环境中茁壮成长很有挑战性。那些有正确关注点的人将能够拥抱数据科学之旅,并带着其他人一起同行。

如果你喜欢这篇文章,并希望看到更多的内容,请考虑加入媒体会员,使用下面的链接来支持我和其他作者:

[## 通过我的推荐链接加入 Medium-Albert Suryadi

阅读艾伯特·苏亚迪(以及媒体上成千上万的其他作家)的每一个故事。您的会员费直接支持…

albertsuryadi.medium.com](https://albertsuryadi.medium.com/membership)

如果您想了解更多实用且有影响力的数据分析主题,请查看我的其他文章。如果你有进一步的问题或话题建议,请随时通过 LinkedIn 联系并进一步留言。

关于作者:Albert sur yadi是蓝筹组织中实现高级分析和数据科学能力的公认领导者。他被公认为分析团队(实践社区)的领导者,该团队授权并激励他人超越现状。

数据科学正在与数据工程融合吗?

原文:https://towardsdatascience.com/is-data-science-merging-with-data-engineering-d992aaf90d95?source=collection_archive---------28-----------------------

苹果 | 谷歌 | SPOTIFY | 其他

肯尼宁上 TDS 播客

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

背景图片由兰斯格兰达尔

编者按:迈向数据科学播客的“攀登数据科学阶梯”系列由 Jeremie Harris 主持。Jeremie 帮助运营一家名为sharpes minds的数据科学导师初创公司。可以听下面的播客:

有很多关于数据科学未来方向的讨论,这是有充分理由的。这一领域终于进入了自己的时代,随着 2010 年代中期的狂野西部阶段真正结束,数据专业人士非常有兴趣保持领先,并了解他们的工作在未来 2 年、5 年和 10 年可能会是什么样子。

在所有的噪音中,一个趋势正在明显出现,并且已经在很大程度上实现了:随着越来越多的数据科学生命周期被自动化或抽象化,数据专业人员可以花更多的时间以更具战略性的方式为公司增加价值。做到这一点的一个方法是投入时间深化你的专业知识,并掌握等式的业务方面。另一种方法是在技术技能上加倍努力,专注于拥有越来越多的数据堆栈——特别是包括生产和部署阶段。

我今天这期《走向数据科学》播客的嘉宾已经走上了这两条路,首先是作为 Spotify 的一名专注于业务的数据科学家,在那里他花时间定义业务指标和评估产品,其次是作为 Better.com 的一名数据工程师,在那里他的重点已经转向生产和工程。在我们的聊天中,Kenny 分享了他对每种方法的相对优点以及该领域未来的见解。

以下是我们谈话中我最喜欢的一些带回家的东西:

  • 即使是专业的数据科学家也对复杂性有强烈的偏见。毕竟,大多数数据科学家进入这个领域是因为他们对机器学习算法的力量感到兴奋,并倾向于任何应用这些系统的机会,即使在没有被要求的时候。出于这个原因,组织需要这样的人,他们的工作是确保数据科学解决方案不会被过度设计,并确保真实用户和客户的实际需求优先于疯狂的堆叠模型和神经网络。这些人被称为产品经理。
  • 当大多数人听说“简单”模型效果最好时,他们会认为这意味着“逻辑回归是你应该首先尝试的”。但在现实中,即使是基于规则的系统也可能足够好——它们还有一个额外的好处,那就是迫使构建它们的人深刻理解他们正在解决的问题。出于这个原因,雇主经常寻找的一项技能是你决定何时机器学习是不必要的能力。
  • 最近,Kenny 从 Spotify 中以业务和人员为中心的角色转变为全职数据工程师。他这样做的部分原因是为了成为一名更好的领导者:尽管他倾向于更喜欢人的问题而不是技术问题,但经验告诉他,最好的想法来自于技术领域。
  • Kenny 强调了构建全栈产品的重要性,即使你是新手,只是想打入这个领域。我们在之前的几集里已经讨论过全栈数据科学的重要性(我也写了一篇关于关于这个话题)但是它值得再次强调:即使你没有工作经验,你也可以将模型部署到 AWS 或 Google Cloud,并且理解使用 Docker 的容器化,或者使用 git 的版本控制。这些正迅速成为数据科学就业市场的新核心生存技能。
  • Better.com 在招人!你可以点击查看他们的数据科学职位招聘

你也可以在这里的 Twitter 上关注肯尼,在这里关注我

数据科学的成功超越了技术

原文:https://towardsdatascience.com/is-data-science-really-a-technology-business-99bbcc5534b?source=collection_archive---------42-----------------------

复杂的算法光芒四射,由丰富的数据推动…但在更个人化的东西上蓬勃发展

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

我们做的第一个专业分析项目获得了巨大成功。随之而来的是认可、机遇……以及某种程度上错位的自信。

这让我们相信,通过稳健的方法、正确的工具选择和系统的数据分析,我们可以了解事情是如何运作的,并提供一个有人会付钱给我们的结果*。*

我们错得多离谱。

当最初的裂缝开始出现时,我们自然倾向于从工程缺陷开始。

错误的机器学习算法……糟糕的数据库选择……薄弱的界面……设计糟糕的数据处理……令人困惑的仪表盘……这些因素会阻碍我们追求的无缝客户体验。

但是数据科学可能会让人不知所措

网上如此多的技术内容不断让你怀疑你是否选择了正确的方法…以及正确的软件。

当新产品承诺在没有前期成本的情况下取得巨大进步时,它会刺激探索。而且有被转移的危险。

这可能需要一个僧侣的纪律来抵制潜入张量流的诱惑,其谷歌遗产和美味的口号**“一个完整的生态系统来帮助你用机器学习解决具有挑战性的现实世界的问题”**。

现在,如果时间不是短缺的话…而且是不可恢复的。

超越工程

最终,我们被迫质疑我们在其他领域的局限性。

也许我们的营销很差。也许我们正在解决一个不相关的问题。或者我们沟通得不够清楚。

毕竟,在短短的几年里,我们已经被那些无处不在的“十大数据科学失败”列表中突出的许多痛点所烫伤。

即使知道这一点也被证明是令人沮丧的——有太多的原因、太多的解决方案、太多的修正、太多的细节……而我们拼命寻找一个共同的线索。

简化一个威胁着我们的世界。

有共同的联系吗?

在经历了足够多的失败、不寻常的成功和多次应用建议的尝试后,圆点开始出现。

当我们试图加入他们时,我们发现在很大程度上,他们都绕过了人类动态,即数据科学和分析的概念…数据中有意义模式的发现、解释和交流过程(维基百科)。可能只是关于人和关系。

John Thuma 在他的思想文章中提到了这个问题。他推断,数学和数据科学的复杂性可能会出现在理解的人和不理解的人之间的交流中。

如果没有共识,企业或项目在分析工作中取得领先的机会有多大?

错综复杂的需求网

我们刚刚花了数百个工时构建了一个 4G 移动网络交通拥堵预测模型。

这来自一个简短的陈述“我们需要你根据一周的历史数据来预测交通拥堵的可能性,这样我们就可以改善交通管理。”

在接下来的几周里,我们在多次会议上展示了我们的解决方案,并努力解决一些抛给我们的问题。

业务案例负责人 —这些预测在 6 个月内的价值是多少?(“这个问题很合理,但你不应该先问问你的团队吗?”我们默默地想)

中层经理 —营销部门想知道有多少用户在拥堵期间受到影响。(“网络供应商不会更了解吗?”)

项目经理 —投入生产需要多长时间?(“终于有我们能回答的了!”)

技术架构师 —我们需要预测未来 6 个月的流量模式。(“打住,这不是另一个问题吗?”)

技术负责人 —网络容量将在 3 个月内增加,预测也是如此。(“啊啊啊!”)

我们的答案**“我们测试了一个模型,可以预测 70%的拥堵准确率”**显然不够完整

令人难以置信的是,没有人关心预测准确性、潜在偏差、数据完整性和样本大小……忘记我们非常想解释的 K 均值辅助非线性回归模型吧!

相反,所有的道路似乎都通向**“你的黑匣子应该能告诉我我想知道的事情”**。

这不是第一次了…

技术的作用

我们不情愿地得出结论,在我们的工作中,拥有一个有效的数据科学解决方案仅仅是一个赌注…仅此而已。

它只是允许我们听到桌上真正的问题……这些问题似乎只有在建立了足够的信任后才会出现。

这些问题提供了关于业务及其人员的状态以及内部关系的更多背景信息。

在这一点上,有人可能会嘀咕:“这到底是从哪里来的?”到了高耸的山峰,以前看不见,挡住了前进的道路。

突然之间,Gartner 的和其他的人不断抛出的 80%的数据科学项目失败率听起来毕竟不是编造的。

我们希望我们已经知道的

当涉及多方时,如何知道他们脑子里到底在想什么?

什么样的商业甚至个人背景影响了人们所说的话?

这与他们对你和你所代表的东西的看法有什么关系?

在团队层面上,如何从字里行间去理解同一个团队中人们之间的互动?

感受一下**“这会让我看起来更好吗”**有多重要?

鉴于通常有限的互动量,有可能得到更多的答案吗?

数据科学透视

似乎这些年来,我们一直忙于解决技术问题,以至于失去了一点人性。

或许……有没有可能……数据科学,这个被大肆宣传和吹捧的复杂算法、尖端软件和富有洞察力的数据领域,真的是一个**人的行业?**满载技术干扰?

这让我们有些害怕,因为突然之间,这不再仅仅是掌握技术、优化管道或提高精度…这些我们可以控制的事情!

在数据科学领域取得更大成就的秘诀是什么?

它可能只是我们与人联系、建立关系、说共同语言和理解他们来自哪里的努力。

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

(2020 年 1 月)冬日里的救生员巡逻,南加州海滨

深度学习是不是碰壁了?

原文:https://towardsdatascience.com/is-deep-learning-hitting-the-wall-d2f560419daf?source=collection_archive---------71-----------------------

深度学习——人工智能的钻石

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

深度学习。由我们的设计师重新设计的 照片 。我们拥有这张照片的完全独家完全许可…

在越来越多的机器学习(ML)相关项目、简化的 ML 框架和环境以及云中预先打包的 ML 解决方案的世界中,失望的声音越来越多。

这种不断增长的声音来自该领域的顶级专家,因此我们 Avenga Tech 希望花一点时间来分享我们对深度学习是否真的碰壁的看法。企业 AI 目前的状态是需要再一次重大突破,还是可以用现在的技术不着急?

Avenga 在数据科学尤其是深度学习方面拥有丰富的专业知识。所以,我们在这里帮助你理解当前情况的原因和实际影响。

这是什么

AI 已经不恰当但肯定地成为了机器学习的代名词,机器学习几乎总是与深度学习有关(也是错误的,因为有更多的技术),深度学习通常与卷积神经网络(CNN,一种学习如何识别和分类输入数据中的模式的人工神经网络)有关。

对于一组给定的问题,通常是模式识别,深度学习能够实现非常高的准确性、相对快速的学习,以及快速和低资源的模型执行,包括移动电池供电的设备。由于算法优化,以及利用 GPU 甚至更专业的硬件(即 TPU)的并行向量计算的巨大进步,几十年前的想法变得触手可及。

深度学习革命使得在实现之前不可能的事情变得流行起来。

成功案例

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

人脸识别。由我们的设计师重新设计的 照片 。我们对这张照片拥有完全的专有权。

计算机视觉就是其中的一个应用——拿起你的手机,它会以极高的速度和准确度识别你的脸(T21 ),并解锁手机。达到这种性能和质量水平需要很多年。

语音识别 —和你的数字助理说话——语音识别百分比非常高。它可能没有答案,也无法像人类一样进行对话,但识别已经非常准确了。

语音合成 —开车、跑步、上下班,声音是交流的唯一选项。语音合成的进步如此之大,以至于越来越难从真实的人声中识别出计算机生成的声音。

自然语言处理自动翻译——今天还不完美,但比几年前好得多。今天任何语言写的网络文章,一键就能看懂。

精选电脑游戏 — AI 赢棋,然后围棋,然后是星际争霸 2 游戏。进步是显而易见的,并且登上了新闻的头版。

ML 项目的数量在增长,机器学习专家越来越难找到。

在某种程度上,许多人认为,由于这些成功,我们将走向更通用的机器智能。只是给算法更多的数据和计算能力;一切都解决了!

失望和对更多的渴望

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

机器学习。由我们的设计师重新设计的 照片 。我们对这张照片拥有完全的专有权。

我们不断看到非常疯狂地缩小人工智能优于人类的领域,以人工智能(AGI)领域为代价,人工智能远远落后于人类的能力,似乎根本没有进步。

系统在很大程度上依赖于人类向它们提供大量的数据(比人脑需要的多几千倍),执行大量的手动数据标记,并提供反馈。

即使这样,在数据集上训练并通过所有测试的模型,突然在不同的数据输入集中失败,原因不明,通常是在人类可能会犯错误的完全不同的场景中。例如,在著名的图像识别例子中,狼因为白色(雪)背景而被识别为狼,而当背景是绿色时就失败了。

另一个已知的问题是学习过程本身。基于过去的大量数据或实验室中准备好的数据→当一个模型面对一组新的真实世界数据时,它通常会失败,这个过程会再次重复。

例如,有时曼梯·里不认得我们的脸,以一种几乎不可能的理由让我们进去;正如我们在手机和笔记本电脑上不时体验到的那样。

仍然是人类定义了高级概念,比如动物的种类。DL 仍然处于非常低的水平,更高层次的概念支持很差。

DL 是在碰壁吗?用顶级数据科学家的话说似乎是这样。几年前,这似乎很容易。随着越来越大的数据集和更多的 TPU/GPU/CPU 能力,我们能够解决更多的人工智能相关问题。现在有更多的怀疑,新的做事方式有望被发现。

例如,汽车公司承诺自动驾驶汽车的日期为 2020 年或 2030 年,现在他们不再承诺自动驾驶汽车将成为可能。另一方面,人们只需经过几个小时的训练就能开车,并能正确识别他们以前没有见过的物体和情况。

DL 当前状态的另一个问题是,一方面缺乏可预测性,另一方面缺乏可解释性。大多数时候它运行得很好,但是人们想知道为什么。尤其是当 DL 被用于决策过程时——人们总是想知道为什么。目前,即使是顶尖的科学家也承认他们自己也难以解释网络的行为。

当前的算法集是在没有考虑这一需求的情况下构建的。就像黑盒一样,一些科学家声称将它们变得更容易解释会大大削弱它们的有效性。

更快、更好、更便宜并不聪明

DL 被期望在消耗更少能量的同时,基于更少量的数据更有效地学习和更快地概括。

人工智能,数字逻辑或其他什么,被期望发现,找出高层次的抽象,并从分布概括,领域和关系中完成它们。人们期望人工智能对世界有更好的了解,有类似人类的感知能力,并最终拥有“常识”。

现在可以说,DL 识别各种模式,但它不理解它们,因此它碰壁了。

一些科学家建议从头开始(就像新版本的进化算法),并认为 DL 是一个死胡同解决方案。其他人看到了一条道路,就像从 DL 的当前状态向更通用的机器智能的迁移。科学家们也在关注自然,比如认知过程是如何工作的以及为什么,特别是在神经进化算法中,不仅网络本身的权重发生了突变,网络结构也发生了突变。也许元算法,设计算法的算法,就是答案?

让我们问问我们的专家

我们的机器学习科学家,有实践经验,分享他们的观点。

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

Lyubomyr Senyuk,研发总监& D
Olena Domanska,ML 能力主管

问:是深度学习本身有问题,还是深度学习实现的现状有问题?

让我们以语音合成和机器翻译为例:如果你去直截了当你得到一个丑陋的结果。生成的语音没有语调,真的很难听。你听得懂单词,但更复杂的语言结构却不存在,你的大脑努力识别声音在说什么。哪个是主要的,哪个是次要的?在翻译人员中,我们也有类似的情况。没有“理解”文本是关于什么的,就不可能翻译文本(除非用真正相近的语言)。然而,有统计机器翻译的 DL 技术可以给出令人印象深刻的结果,它们甚至可以进行交叉翻译;即日语到波兰语,仅具有在日语-英语和英语-波兰语上训练的模型。语音生成模型可以建立在类似的原理上,并且它们给出的结果更好听,但是在复杂的句子和真实人类使用语调的主题上,附加的解释元素 DL 语音合成模型通常失败。同样的情况也发生在译者身上:如果上下文超出了几个单词,这个模型就失败了

所以,DL 目前的状态在这里肯定是失败的,但关于 DL 本身很难说这一点。也许加入一些小的特征,可以让神经网络在运行中改变自己的拓扑结构,这将极大地改变这种情况,我们只需要将计算机的能力提高 100 倍,就可以达到可行的学习曲线,让这样的神经网络去模仿,例如 10 岁的人。

“思维机器”的概念并不新鲜,也就是说它们没有明确的指令。深度学习试图通过在人工神经元中使用数学矩阵操作来模仿人脑。尽管生物神经元激发了 DL 的想法,但人工神经元是一个简化得多的版本。世界上最大的神经网络由 1600 万个神经元组成,相当于一只青蛙的大脑大小。深度学习只是人工大脑思想的一种实现,它在大小、拓扑结构、信号处理和结构方面都有局限性。现在,我们甚至不明白人类的大脑是如何如此有效地工作的,我们也不明白一般的智力是如何工作的。如果我们发现了,DL 会怎么样?我们是否会想出一种新的方法来实现大脑,作为一台机器永远活着的想法将成为现实?让我们看看。

问:DL 真的碰壁了吗?

即使在创建了假设的类似人类的 NN 之后,我们也应该思考与它交互的方法。在这里,我认为,目前的 DL 方法肯定会碰壁。在给这个像虚拟生物一样的人类提供了大量数据,却没有对其决策做出合理解释之后,这绝对不是我们想要的。

深度学习仍然有着自始至终都存在的障碍:用于训练的标记数据量和计算能力。直到十年前,DL 还被该领域的大多数研究人员认为是一个死胡同。虽然第一个 CNN 是在 20 世纪 80 年代创建的,但直到从 CPU 上的计算切换到 GPU,允许多线程和更快的计算,它们才取得进展。CIFAR-10 和 ImageNet 数据集的创建带来了另一个提升。谷歌开发的用于执行张量计算的 TPUs 进一步推动了这一领域的发展。当前的 GPU 和 TPU 比以往任何时候都更强大,但增长速度不如以往。因此,我们接近“天花板”是一个合理的假设。然而,还有一项技术我们必须牢记在心——量子计算。它可能会在总体上改变和加速计算,但深度学习可能是受这项技术影响最大的技术之一。

最近,自然语言研究已经采用了一种新的范式:自我监督学习或自主监督学习,它使用大量的现有文本来预训练模型的参数,而不需要数据注释。人类可以从上下文中确定单词的语义。类似地,Word2Vec 算法根据周围的单词预测单词的语义上下文。自我监督学习遵循相同的原则,并使用自然可用的上下文。这种技术有可能解决 DL 的一个重大限制,但是需要大量的训练例子。

此外,就在几个月前,研究人员提出了一种更智能、更简单的训练神经网络的方法,称为彩票假设。主要思想是,一个大型神经网络将包含一个较小的子网,如果从一开始就进行训练,将达到与更大的结构相同或相似的精度。这个假设可以减轻 DL 的计算开销。

这个领域是如此年轻和受欢迎,以至于它的研究人员不断提出新的范例和架构。在最受欢迎的子领域:NLP 和 CV 有持续的改进。已经出现了令人惊讶甚至危险的结果,例如通过替换看起来和听起来像真实事物的面部或音频记录来伪造视频的能力,制作静止图像的动画,以及生成创造性的虚构文本、诗歌或其他文学艺术。

也许进展缓慢,但今天开发的某些东西可能是未来的突破。

问:在哪些领域使用其他技术更好?

这是一个棘手的问题。我可能会用一个例子来回答。想象一下,你想通过面部识别人,但你有不同角度的照片。更好的方法是分解任务,并进行一些面部参数测量,比如将旋转角度作为一个单独的子任务(也可以是 NN ),将分类作为一个单独的子任务,而不是将所有照片输入一个 NN。这为您提供了可用于调整全局算法和处理阈值的附加参数。

另一方面,如果我们更全面地思考相反的问题,“我们应该在哪里使用 DL?”我会回答,在医疗保健领域。生物生命对我们所谓的逻辑思维产生了非常复杂的挑战,因此计算机的二进制逻辑也是如此,所以拥有一个能够以高统计概率治愈人们的黑盒对于现在来说是一件大事,在未来,当 AI 能够建立理论并在这些理论的范围内解释其决策时也是如此。

另一个目前没有数字图书馆会更好的领域是机器人学。

很可能,我们都听说过波士顿动力公司。他们的机器人被设计用来完成各种任务,似乎是迄今为止最成功的发明之一。他们控制机器人运动的秘密是什么?他们根本不用深度/强化学习。

到目前为止,机器人技术是人们利用物理定律取得更大成功的领域。它限制了功能,但它仍然可以覆盖机器人引擎的足够好的部分。

深度学习总是渴望大量的数据来学习。在真实的机器人中不可能收集到这么多的数据。数以百万计的试验成本太高,执行时间太长。

一般来说,深度学习可以解决计算机视觉或自然语言处理等领域的多个复杂任务,但它不是万能的。深度学习在监督学习中最有效,这意味着模型是用标记数据训练的。它可以实现高精度,找到更复杂的模式,并且不需要显式的特征工程,但只有在足够的计算和标记数据的情况下才可能实现。在下图中,我们看到了经典机器学习模型和 DL 的性能如何依赖于标记的数据的数量:

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

数据科学技术如何随着数据量而扩展。我们设计师画的一张照片。这是一张独特的照片。我们对这张照片拥有完全的专有权。

对于标记数据量有限或需要快速原型化的问题,使用深度学习可能会矫枉过正。当我们实际上可以通过使用更简单的方法获得相同的结果时,例如用于分类的逻辑回归或随机森林,或者用于预测的线性回归/XGBoost 回归器,这将是对资源的浪费。当我们需要解释和说明结果时,从线性或基于树的算法开始理解特征重要性更有益。最后但同样重要的是数据质量,垃圾输入—垃圾输出。有了低质量的数据,任何模型的表现都很差,更不用说深度学习模型了。对 DL 来说,项目的领域并不重要。重要的是任务、数据和业务需求。

阅读有关 的更多信息,了解 Avenga 数据科学团队在社区 参与 Kaggle 竞赛时正在做些什么来帮助他们。

深度学习的下一步是什么?

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

深度学习的下一步是什么。由我们的设计师重新设计的 照片 。我们对这张照片拥有完全的专有权。

除了改进像胶囊神经网络这样的 DL 技术,胶囊神经网络是卷积神经网络的增强,还有一些重要的全球趋势应该提到,以描绘人工智能的未来:

  • 当 NN 可以解释它的决定时的解释性人工智能。
  • 当神经网络可以重用其经验时,迁移学习和类似的方法。
  • 硬件加速器——改进当前神经网络执行并支持新型神经网络的特殊芯片。
  • 当整体大于部分之和时,全球人工智能的全球网络将启用规则。

对于许多企业来说,深度学习的软肋是将神经网络视为黑盒决策者。这给项目带来了不便,因为在这些项目中,该模型具有显著的经济影响。对于许多企业来说,依靠 DL 模型的不可解释的结果来做出关键的决策和损失金钱是不可接受的。这就是为什么我们在可解释的人工智能方向上有很多研究,这些研究将能够提供数据和理由来证明这个决定。

其他研究课题:

  • 扩大 NLP 的成功,以开放对话和交谈
  • 多任务学习
  • 常识推理
  • 主动学习和终身学习
  • DL 在自动驾驶汽车中的应用

下一步是什么?

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

将深度学习和符号系统集成到混合人工智能架构中。由我们的设计师重新设计的 照片 。我们对这张照片拥有完全的专有权。

人工智能(AI)的梦想是理解让人类能够看到和听到、思考和推理、希望和梦想的神奇事物——大脑——是如何工作的,然后在智能系统工程中再造一个版本。

当前的 DL 模型擅长完成特定的任务和进行预测。DL 所缺乏的是类比或超越训练集进行推断的概念制造/生成能力,并且它的可解释性很差。幸运的是,DL 并不是唯一的 AI 工具。60 年代开创的符号人工智能是人工智能社区的主导范式,直到 20 世纪 80 年代末。符号推理的实现被称为规则引擎或知识图。这些是一组嵌套的“if-then”语句,得出关于实体及其关系的结论。在 DL 中,算法在建立输入和输出之间的关联时学习规则。在符号推理中,规则是通过人为干预创建的。这就是为什么符号人工智能在可解释性、泛化和整合先验知识方面如此强大,但在处理大量经验数据流方面却表现不佳。这两种方法相辅相成,因为前者的缺点是后者的优点,反之亦然。因此,将深度学习和符号系统集成到混合人工智能架构中,如结合深度强化学习的神经符号系统,可能是人工通用智能(AGI)的下一步,这种智能可以根据行为调整模式,并可以执行一般任务。如果能在这方面取得一些成就,那将是一件好事。

→了解更多 AI、深度学习、高级分析和大数据如何辅助医药行业 进行临床试验管理和药物开发。

最后的话

正如你所看到的,AI 不是一个简单的话题,因为在深度学习本身中,你的组织的实际商业价值来自于基于经验的技能。现代解决方案通常是几种技术和方法的恰当组合,即混合。

选择他们中的哪一个?在你的特殊情况下,如何扬长避短?我们的人工智能团队随时准备帮助您在您的业务环境中找到合适的解决方案。

欧洲是否已经度过了新冠肺炎疫情的第一个高峰?

原文:https://towardsdatascience.com/is-europe-past-the-first-peak-of-coronavirus-outbreak-d6410a578684?source=collection_archive---------46-----------------------

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

安娜斯塔西娅·切平斯卡在 Unsplash 上的照片

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

2020 年 4 月 18 日,《华盛顿邮报》发布了一条激动人心的消息,标题是:

欧洲认为冠状病毒的第一波高峰已经过去

[## 欧洲认为疫情冠状病毒的高峰期已经过去

伦敦-在整个欧洲,数字正在下降。有好消息分享。病毒正在被击退…

www.washingtonpost.com](https://www.washingtonpost.com/world/europe/europe-is-emerging-from-the-pandemic-its-hospitals-stable-with-beds-available/2020/04/17/c7aa46cc-7f37-11ea-84c2-0792d8591911_story.html)

据新闻报道,整个欧洲的新冠肺炎感染人数已经显示出达到顶峰的迹象,并开始趋于平稳。更令人兴奋的事实是,新住院人数每天都在减少。这意味着可以腾出更多的重症监护室给有需要的人,也有更多的呼吸机可供使用。这与三月份最后一个月发生的事情形成了鲜明的对比,一些病人不得不睡在地板上等待医疗救助。

当我们都期待着我们的生活能够尽快恢复正常时,我们中的一些人可能仍然会思考:是否真的有迹象表明冠状病毒在欧洲的爆发已经达到顶峰并开始消退?有没有更实质性的证据可以证明《华盛顿邮报》发布的消息是正当的?

在本文中,我将介绍几种数据可视化技术,使用 Python Plotly 库来可视化新冠肺炎数据,并根据从 Kaggle 获得的数据集观察五个选定的欧洲国家(英国、法国、德国、意大利和西班牙)的疫情进展状态。为了实现这个目标,我将一步一步地介绍如何使用 Python Plotly 创建时间序列折线图、条形图和量表图来检查欧洲的新冠肺炎记录。

你需要什么

先决条件 Python 库

python Plotly—【https://plotly.com/python/

蟒蛇熊猫—【https://pandas.pydata.org/

安装指南可在官方网页上找到。

数据集

冠状病毒报告(来自 Kaggle)

第 1 部分:数据预处理

1.1 探索数据

在生成 Plotly 图表之前,让我们快速浏览一下从 Kaggle 获得的数据集。

预览数据集的 Python 代码

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

前 20 条记录(左)和后 20 条记录(右)

首先,我们使用熊猫方法(第 5 行& 6)来预览前 20 行和后 20 行记录。从预览图中,我们知道该数据涵盖了从 2020 年 1 月 22 日到 2020 年 4 月 20 日全球每日确诊、死亡和恢复的新冠肺炎病例的累积总和。

1.2 过滤数据

因为我们的目标是检查五个选定的欧洲国家(英国、法国、德国、意大利和西班牙)的案例,所以我们需要过滤原始数据。过滤后的数据应该只包括五个选定的欧洲国家的记录。为此,我们使用 Pandas isin 方法来过滤我们的数据(第 10 行)。

基于五个选定国家过滤数据的 Python 代码

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

过滤记录

1.3 汇总数据

现在,除了五个选定的欧洲国家之外的国家的记录都被筛选出来了。然而,我们当前过滤的数据还有一个问题。法国和英国等国家的每日数据是在省/州级别记录的,而德国、意大利和西班牙分别是在国家级别记录的。这个数据不一致的问题会给以后创建图表带来问题。

我们需要在国家级别而不是区域级别聚合我们的过滤数据,并且聚合数据应该按日期排序。幸运的是,Pandas 提供了在几行代码中完成这项任务的简便方法(第 14 -20 行)。

聚合数据的 Python 代码

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

汇总数据

我们可以使用 Pandas data framegroup by方法对我们的日期和国家进行分组,并使用 agg 方法根据每个国家的每日确诊、死亡和康复病例总数汇总数据。

1.4 转换数据

在这个阶段,我们已经成功地过滤了数据,并根据日期对它们进行了排序。在我们继续绘制图表之前,还有一个步骤。每行记录中的确诊、死亡和康复病例数为之前的累计数。我们的目的是绘制一些时间序列图表,这些图表可以揭示每日新报告病例的进展情况,而不是累积的总和。从逻辑上讲,我们应该用前一个日期的数据减去当前日期的数据,以得出每日新病例的数量。Pandas 使我们能够使用 diff 方法转换数据(第 24、27、30 行)。

转换数据的 Python 代码

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

转换数据

我们将转换后的数据分配给三个新列,分别为 Confirmed_Plus 、 *Death_Plus、*和 *Recovered_Plus、。*这三栏用于保存每日新增确诊病例、死亡病例和康复病例的记录(为而非**累计数)。

注:

diff 方法中设置的周期值是使当前行的数量减去前 5 行的数量。此处需要此设置,因为每天有五个国家/地区的记录,所以同一国家/地区的后续日期的每条记录都会在接下来的 5 行中交替显示。

fill na 方法(第 25,28,31 行)是将转换后的数据中的 NA 值替换为 0。

第 2 部分:时间序列折线图

现在,我们准备使用Python Plotly Express包绘制我们的第一个折线图(第 27–28 行)。

Python 代码创建 Plotly 时间序列折线图

Plotly 时间序列折线图

fig = px.line(df_filtered, x=”Date”, y = “Confirmed_Plus”, color=”Country/Region”, title=”Daily Confirmed Cases In Five European Countries”)fig.write_html('first_figure.html', auto_open=True)

有了上面的两行代码,就生成了一个时间序列折线图。该时间序列折线图显示了欧洲五国从 2020 年 1 月 22 日至 2020 年 4 月 20 日的每日新增确诊病例。我们可以观察到,疫情大约在 2 月底开始爆发,自那以后,整个 3 月份的增长曲线越来越陡。

我们可以放大 Plotly 折线图来查看从 2 月 29 日起的增长率。

注:

要放大折线图,我们只需在图上按住鼠标并拖动鼠标,选择覆盖一系列日期的区域。

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

从折线图中,我们可以确定每个国家达到顶峰的日期:

法国:2020 年 4 月 12 日

2020 年 4 月 2 日

2020 年 3 月 21 日

西班牙:2020 年 3 月 25 日

联合王国:2020 年 4 月 10 日

意大利曾被报告为欧洲受影响最严重的地区,自 2020 年 3 月 30 日以来,该疾病已得到明显控制。尽管此后病例数仍在波动,但与其他选定国家相比,意大利记录的病例数一直较低。此外,自 2020 年 4 月 11 日以来,德国也显示出对该疾病的更好控制,目前每日病例数最低。

另一方面,法国的情况可能相当令人担忧,因为新病例在 2020 年 4 月 12 日的一天内突然激增至 26849 例。他们的第二个高峰发生在相对较近的时间,2020 年 4 月 16 日。英国的新增病例在 2020 年 4 月 10 日达到高峰后波动较小。然而,他们的病例数仍被认为相对高于意大利和德国。

从 2020 年 3 月 23 日至 4 月 11 日,西班牙在五个国家中显示出最高或第二高的病例数。即使在最近,他们的案件仍然波动很大。

第 3 部分:条形图

上面的时间序列折线图为我们提供了五个选定的欧洲国家作为一个整体的新冠肺炎确诊病例的总体概况。现在,我们将创建五个条形图来显示每个国家的新冠肺炎数据趋势。

为此,我们需要再次过滤我们的数据(第 27 行),并为每个国家创建一个数据子集(第 28 行)。这些过滤后的数据用于绘制条形图,以显示一个国家每天的确诊和恢复病例(第 30–33 行)。重复这些相同的逻辑步骤,为其余选定的欧洲国家创建多个条形图(第 35–65 行)。

Python 代码创建 Plotly 条形图

Plotly 条形图揭示新冠肺炎病例在法国

Plotly 条形图显示英国的新冠肺炎病例

Plotly 条形图揭示德国新冠肺炎病例

Plotly 条形图揭示西班牙的新冠肺炎病例

Plotly 条形图揭示新冠肺炎病例在意大利

与线形图相比,条形图为我们提供了额外的信息。我们不仅可以检查新确诊病例,还可以检查同一地块中的恢复病例(色标)。康复病例的数量可以让我们大致了解一个国家对疾病的控制程度,以及当前患者的医疗供应水平。

自 2020 年 3 月 28 日以来,意大利已显示出确诊病例稳步下降,自 2020 年 4 月 8 日以来,也显示出恢复数字的巨大迹象。另一个现在似乎得到更好控制的国家是德国。它显示,2020 年 4 月 2 日之后,确诊病例数下降更明显,其康复人数在五个国家中名列前茅。它在 2020 年 4 月 8 日一天之内就实现了超过 10000 例康复病例(几乎是当天确诊病例的两倍)。法国、英国和西班牙相对不稳定。自 2020 年 4 月 1 日以来,英国的确诊病例数一直很高,直到 2020 年 4 月 20 日,病例数没有明显减少。另一方面,法国和西班牙的确诊病例数波动较大。在 4 月中旬,病例数量有时会激增至异常高的水平。这可能是由于发现了以前未被发现的新的感染群体。

第 4 部分:仪表图

Plotly 库提供的另一个有用的图表是仪表图。仪表图是一种显示单个值的指示器,用于估计目标进度。在这种情况下,我们假设每个国家的目标都是完全恢复。考虑到这一点,我们可以尝试为每个国家创建一个量表,以显示他们实现目标的程度。

要创建仪表图,我们只需

  • 将 2020 年 4 月 20 日的累计回收金额设置为参数(第 7 行)。
  • 为图表设置一个相关的标题(第 9 行)。
  • 为轴属性中的图表设置最小和最大值范围(第 11 行)
  • 为具有指定颜色的条形设置数值范围(第 14–17 行)。该颜色条将用作显示当前成就水平的指示器。
  • 设置阈值(目标)(第 20 行)。在这种情况下,阈值基于 2020 年 4 月 20 日确诊病例的累计总数减去死亡的累计总数。

其余的参数设置可以保留为默认值,并重新用于为另一个国家生成类似的仪表图。

为意大利创建仪表图的 Python 代码

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

意大利仪表图

为德国创建仪表图的 Python 代码

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

德国仪表图

为西班牙创建仪表图的 Python 代码

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

西班牙仪表图

为法国创建仪表图的 Python 代码

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

法国仪表图

上面的图表让我们清楚地了解了每个国家患者的康复率。在这些国家中,只有德国实现了超过 50%的回收率,而其他国家都低于 50%。这意味着欧洲国家仍有一场漫长的战斗要克服并度过这一关键时期,以提高其恢复率,同时抑制确诊病例的增长率。

注:

没有生成英国的仪表图,因为恢复记录中有太多可疑的异常值。这可能是由于一些人为错误,如错误的数据输入或其他不可预见的技术问题。但是,其余四个国家的轨距图应足以满足本文的目的。

结束语

本文的主要目的是介绍几种使用 Plotly 库的数据可视化方法,以显示 2020 年 1 月 22 日至 4 月 20 日在五个选定的欧洲国家中新冠肺炎疫情的进展状态。由于数据每天都在定期更新,因此在您阅读本文时,这里提供的分析可能不再有效。此外,在检查一个国家的新冠肺炎疫情状况时,需要考虑更多因素,而不仅仅取决于几个变量,如确诊病例、死亡病例和康复病例的数量。

但是,我希望这篇文章仍然能够提供一个入门指南,帮助您使用 Plotly 库中的一些有用功能来创建一些信息丰富的图表,如时间序列折线图、条形图和数据可视化仪表图。希望你能从这篇文章中受益。

Github

这里展示的所有代码都可以在我的 GitHub 库中找到。

参考

  1. https://www . Washington post . com/world/Europe/Europe-is-emerging-from-the-the-疫情-its-hospitals-stable-with-beds-available/2020/04/17/c7aa 46 cc-7f 37-11ea-84 C2-0792d 8591911 _ story . html
  2. https://plotly.com/python/plotly-express/
  3. https://plotly.com/python/gauge-charts/

可解释的 AI (xAI)是下一步,还是只是炒作?

原文:https://towardsdatascience.com/is-explainable-ai-xai-the-next-step-or-just-hype-b3d4c3768c62?source=collection_archive---------26-----------------------

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

近年来,人工智能已经扩展到一系列不同程度的行业。一旦一项地平线技术(或许类似于我们现在看待量子计算的方式)人工智能正式突破了日常生活,知情的观点不再是技术爱好者和精英数据科学家的专利。现在,利益相关者包括高管、投资者、经理、政府,最终是客户。

虽然关于可解释人工智能(xAI)的对话可以追溯到几十年前,但这个概念在 2019 年底重新焕发了活力,当时谷歌宣布了其面向开发者的新 xAI 工具集。xAI 的概念相对简单:历史上,机器学习模型在“黑箱”内运行,结果由数量惊人的交织参数决定,这些参数如此复杂(以百万计),以至于无法解释它们。xAI 的目标是将透明性和字面解释设计到模型中,最终允许最终结果配备上下文。例如,xAI 可能会确定一幅图像是一只狼,并给出解释:它是一种有着锋利牙齿和皮毛的动物,背景中有雪。

尽管 xAI 被认为是一种技术,但它同样可以被理解为一种最佳实践。人工智能在深陷伦理困境的领域表现优于人类,例如医疗金融法律。虽然实施技术来减少人类偏见和提高效率的承诺很诱人,但组织要为他们的决策(人类或机器人)负责,如果他们不能解释决策,他们就容易受到多重责任的影响。AI 也许能够以一种比法官更公平的方式来设定保释金;然而,即使是 AI 也可能被糟糕的数据或过度拟合所误导,当 AI 导致不公平的判决、拒绝抵押贷款申请或误诊癌症时,问题就不可避免地出现了。错误是不可避免的,但解释错误对于任何这些高风险的环境也是必要的。

在极端情况之外,xAI 为公司提供了一个扩展的功能类别来进行推广和销售。加内特预计,到 2022 年,全球人工智能经济将从 2019 年的 1.2 万亿美元扩大到的 3.9 万亿美元,每家公司都应该期待定义超越承诺结果的竞争模式。提供一个保证改进的黑盒人工智能模型可能很有诱惑力,但识别特定的高级功能为组织提供了谈话要点,以增强他们自己的营销和客户的意识。

赛的崛起

这个时机或者说 xAI 的走红并不是巧合。近年来,公众对科技行业的看法在直线下降,只有 50%的参与者认为科技公司在美国产生了积极影响,低于四年前超过 70%的比例。尽管许多公司适应这一趋势的速度很慢,但善于协调的领导者认识到了向问责和信任的转变。实施 xAI 让科技公司朝着这个方向前进,并在一个不可避免的问题上显示出主动性政策

2017 年,谷歌宣布他们“人工智能优先”战略政策的决定似乎很大胆;然而,仅仅几年后,科技高管紧紧拥抱人工智能的概念似乎几乎在意料之中。自从世界上第一家公司开张以来(谷歌称它是 1602 年的荷兰东印度公司,至少是公开上市的),领导者们一直依赖于财务信息灵通的决策。近年来,大数据和物联网的兴起为以前无法获得的见解打开了闸门;高管们调整了他们的语言,加入了“基于数据”的决策。接下来,自然进化是人工智能支持的决策。领导者应该向利益相关者、公众、媒体和法律讨论和捍卫自己的决策;这种期望不会随着复杂人工智能的引入而消失。

使 xAI 有效

为了让 xAI 变得可靠,它不能是临时添加的或者事后想到的。开发人员和工程师必须在他们构建的应用程序的设计和架构中实现 xAI。同样需要注意的是,并不是每个人工智能项目都需要解释;在视频游戏、娱乐或生产分析类型中,xAI 可能是笨重且成本过高的。

人工智能和机器学习中一个反复出现的现象是无法解释“黑盒”内的操作,从而产生某些理想的结果。开发者社区的成员对 xAI 的承诺表示怀疑,认为有些模型太复杂了,无法解释,被迫解释会阻碍创造性的进步。在某些情况下,这无疑是正确的。这种现实是由我们对技术的原始理解造成的,还是一个更普遍、不可避免的原因有待讨论。

走向 xAI 并不要求工程师或架构师停止生产黑盒模型;它只是提高了最关键的面向公众的技术的标准,这些技术在严重依赖健全的道德规范的领域中运行。任何人工智能的理想结果和期望都应该在早期会议中确定,xAI 应该是讨论的一部分。

一些项目可能需要专门为性能而设计的复杂的黑盒模型,而没有解释,而其他项目可能没有价值。每个项目都有独特的需求,xAI 提供了多一层可能性。

标题图片

面部识别技术是种族歧视吗?解释了最先进的算法

原文:https://towardsdatascience.com/is-facial-recognition-technology-racist-state-of-the-art-algorithms-explained-dbb1c95c4f5d?source=collection_archive---------37-----------------------

了解在新闻中引起轩然大波的人脸识别算法。

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

版权 2018 美国公民自由联盟。
最初由美国公民自由联盟发布于https://www . ACLU . org/news/privacy-technology/wrong ly-arrowed-cause-face-recognition-cant-tell-black-people-apart/

这个人看起来眼熟吗?这是罗伯特·威廉斯,他被警方的面部识别系统错误识别,不得不被逮捕一天。随着这一事件在媒体上四处传播,重要的是要记住,在对技术如何工作的信息有限或不存在的情况下,批评技术是很容易的。无数媒体来源批评了该技术的每一个组成部分,而实际的算法仍然是谜。

在这篇博文中,我将通过一种既迎合有经验的专业人士又迎合普通无知读者的方式,来介绍最先进的人脸识别算法。我希望这篇文章能帮助你理解现在在新闻中被批评的算法,并帮助你将急需的信息带入关于这一争议的讨论中。

什么是人脸识别?

当我说“人脸识别”这个词时,各种视觉效果应该会浮现在脑海中,其中许多你可能还记得《詹姆斯·邦德》或《碟中谍》电影中主角的团队必须改变人脸数据库才能让主角进入秘密掩体。或者你可能会想到中国或朝鲜这样的国家使用人脸识别技术侵犯人们的隐私。

人脸识别的官方定义剥夺了所有的流行文化。简单来说,就是对人脸的检测和分类。这意味着面部识别系统应该有两个组成部分,首先检测图像中的面部,然后找到面部的身份。

  • 人脸检测是一个非常类似于物体检测的问题,除了感兴趣的实体不是日常物体,而是个人的脸。
  • 人脸识别是将检测到的人脸与预先存在的数据库中的识别图像进行匹配的问题。这是黑客在每部间谍电影中改变的同一个数据库。

人脸检测

为了理解人脸检测是如何工作的,让我们来看看最先进的算法, RetinaFace 。现在不经意的读者们,不要一提到论文就跑。不要担心,在这篇博客中,我将尽我所能使算法尽可能直观,同时也避免困扰媒体的过度简化。

视网膜人脸算法在行话中被称为端到端或单级检测器。如果您熟悉对象检测策略,它类似于 SSD 或 YOLO 架构。

输出详细信息

RetinaFace 算法输出关于检测到的面部的三条信息:

  • 面的边界框,由框的左下角及其宽度和高度表示。
  • 表示眼睛、鼻子和嘴巴位置的五个面部标志
  • 密集的 3D 点映射非常类似于你的手机用来识别你的功能,如 iphone 上的 Face ID。

特征抽出

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

用于目标检测的特征金字塔网络( arXiv:1612.03144 ) (CC)

像大多数现代计算机视觉算法一样,RetinaFace 使用深度神经网络作为特征提取器。更具体地说,RetinaFace 使用 ResNet 架构以及全金字塔网络(FPN)来生成图像的丰富特征表示。

直观上,你可以想象这些特征捕捉到图像中不同层次的抽象特征。在人脸检测领域,这相当于对边缘进行早期特征编码,对眼睛、嘴巴、鼻子等面部特征进行中级特征编码,以及对人脸本身进行高级特征编码。FPN 只是允许模型利用高级和低级特征,这大大有助于检测图像中较小的人脸。

培养

训练是教导随机初始化的网络执行其任务的过程。训练的过程类似于教一个孩子在考试中取得好成绩。给孩子关于这个话题的信息,然后给他们一些评估测试,看看他们做得如何。深度神经网络的训练是类似的,除了给定标记的数据,在这种情况下,图像中的面部被标记,并且使用损失函数进行评估。要更详细地了解深度神经网络,请参见我的博文

通常,深度学习模型的训练过程是最重要的部分。整篇论文都是关于一个新的损失函数所带来的巨大改进。RetinaFace 算法也不例外。让我们检查用于训练 RetinaFace 的损失函数。

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

RetinaFace:野外单阶段密集人脸定位( arXiv:1905.00641 ) (CC)

让我们一个一个地分解这个函数。

  • 第一部分,人脸分类,简单地惩罚模型说在一个位置有人脸,而在图像中没有人脸。
  • “面部框回归”是预测面部的边界框坐标和标记面部的坐标之间的距离的一个有趣术语。具体来说,这个距离是使用所谓的平滑 L1 损耗计算出来的,你可以在下面看到它的图表。
  • 面部标志回归类似于框回归损失,除了不是找到边界框之间的距离,而是找到预测的五个面部标志和标记的面部标志之间的距离。
  • 最后的损失有点复杂,超出了这篇博文的范围。由于这些特征没有被标记,我们需要一些方法来帮助模型学习这些特征。为此,使用模型的输出特征来重建人脸,然后将重建的人脸与图像中的人脸进行比较

人脸识别

既然我们有了图像中人脸的详细信息,人脸识别系统的下一个任务就是对照 ID 图像数据库来识别人脸。

再次,我们将看看另一个国家的艺术纸,弧面。在深入研究这个算法的细节之前,我们需要复习一下人脸识别的基础知识。面部识别使用一类称为暹罗网络的网络。以下是我之前关于此事的博文节选:

暹罗网络背后的核心直觉是试图学习面部的表征。这种表征类似于人类储存在大脑中的关于面部特征的信息,如面部特征的大小、肤色、眼睛颜色等。人类可以理解,如果它看到另一张具有相似特征的脸,那么新的脸很有可能属于同一个人。另一方面,如果人类看到新的面部与其先前看到的面部不匹配,那么人类再次制作新面部的表示以存储在其存储器中。

这正是暹罗网络的运作方式。一个函数将人脸的输入图像转换成包含人脸特征表示的向量。然后,我们希望这个向量与同一张脸的向量相似,而与另一张脸的向量非常不同。

简而言之,该模型学习如何提取人脸的重要特征,从而将人脸与其他人脸区分开来。一旦获得特征映射,就可以将其与数据库中要匹配的其他人脸的特征映射进行比较。

那篇博文更深入地探讨了人脸识别的技术细节,以及完整实现它的代码。

再一次,暹罗网络的训练过程是奇迹发生的地方。暹罗网络首先在裁剪的人脸上被训练为完整的图像分类模型,其中该模型学习直接从图像中对人脸进行分类,而不需要任何识别图像。这需要在所使用的数据集中预先定义身份列表,这在大多数人脸识别数据集中是常见的。

输出详细信息

面部识别模型输出特征向量,该特征向量将面部特征编码成一些数字的列表,通常是 256 或 512。注意,这个向量不同于 RetinaFace 算法输出的密集特征,因为这些特征专门用于比较两张脸。

特征抽出

面部识别模型使用标准的、最先进的图像分类模型。ArcFace 算法使用 ResNet 架构。

培养

像 RetinaFace 一样,ArcFace 算法的症结来自于它的训练方式。正如我前面提到的,网络首先像正常的分类网络一样被训练,然后被微调到输出编码。

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

ArcFace:深度人脸识别的附加角度余量损失( arXiv:1801.07698 ) (CC)

通常,分类网络使用交叉熵损失来输出类别概率的向量。对这个类向量的解释是,它输出图像的可能分类,以及模型对每个类的置信度。虽然这对于分类任务很有用,但 ArcFace 算法的设计者指出,在人脸识别中不应该考虑不确定性,因为一张脸不可能属于多个人。为了减轻这一点,他们设计了一个余弦损失,迫使输出类概率聚集在一个类周围。正如在上面的图像中可以看到的,这种损失使用一个余量来“推动”输出概率向量更接近任何类别,这被证明在人脸识别方面有巨大的改进。

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

通过佛潘在(【https://www.youtube.com/watch?v=tgnitF1irVM】T4)

这是 ArcFace 架构在 MNIST 数据集(手写数字数据集)上输出的特征向量的可视化效果。正如你所看到的,图像输出的向量紧密地聚集在一起,这在人脸识别中非常有用。

获得结果

人脸识别系统的典型流程是首先获得图像中每个人脸的位置和特征。然后将裁剪后的人脸输入人脸识别模型,得到特征向量。然后使用欧几里德距离函数将该向量与识别数据库中的其他向量进行比较。与面部向量“最接近”的识别向量告诉我们图像中的人的身份。

举一个更具体的例子,在 MNIST 数据集矢量的可视化中,我们假设深蓝色点对应于数字 4 的矢量,青色点对应于数字 3。这类似于我的脸的图像和你的脸的图像。如果我从另一幅图像中获得一个特征向量,并且它非常接近深蓝色的点,我会怀疑该图像是否是 a 4。类似地,我认为图像是 3 是毫无疑问的,因为数字 3 的向量离特征向量很远。

那么算法怎么可能是种族歧视呢?

正如你现在看到的,任何深度学习模型的训练过程都是其性能的关键,以及它继承的偏见。新闻中的问题与算法在识别非裔美国男子时的低性能有关,其他文章批评算法与女性斗争。

这个问题并不像《卫报》的文章所宣称的那样是“固有的种族偏见”。问题只是用于训练人脸识别模型的训练数据集。你可以这样想,如果一个人从未见过苹果,或者一生中见过一次,那么这个人将来会很难认出苹果,因为他们没有见过足够多的苹果来了解它们的样子。对这个人来说,解决办法就是简单地向他们展示更多的苹果。人脸识别模型正是如此。

我们所需要做的就是拿出更具包容性和平衡的数据集来训练模型,所有的偏见都会消失。

未来和结束语

面部识别算法可以成为安全和监控许多方面的关键工具。它们可以成为任何自动化监控系统的宝贵补充,并可以为公司节省数百万美元的人力成本。

对于那些对实现这些算法感兴趣的人,请查看一下 Tensorflow 2 对 RetinaFaceArcFace 的实现。

使用人脸识别的合法问题是对隐私侵犯的担忧。但那是另一天的话题:)

感谢你阅读我的博文!我希望你学到了一些东西,并在谈论人脸识别及其缺陷时更加知情。我很乐意在下面的评论中讨论这个问题!

家庭团体有那么糟糕吗?结果会让你震惊

原文:https://towardsdatascience.com/is-family-group-that-bad-results-will-shock-you-573f64e194be?source=collection_archive---------27-----------------------

文本处理、Plotly 图形和 Heroku 部署

分析 WhatsApp 群聊&构建网络应用

谁不知道 WhatsApp?它是广泛使用的移动应用程序,与设备操作系统无关。我们都使用这个应用程序在旅途中快速完成工作。我不知道其他国家的情况,但是在印度,家庭团体因为在团体中分享垃圾/虚假信息而受到很多批评。这也意味着产生了大量数据,WhatsApp 给出了导出这些数据的选项!在本文中,我将向您展示如何挖掘这些数据,以发现隐藏的事实**,并最终制作一个可部署的 web 应用。**

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

照片由AARN·GIRIUnsplash 上拍摄

在继续之前,让我们看看如何从组中导出这些数据:

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

作者提供的图片(在 Google Drawings 中创建)

数据预处理

文本文件包含消息的时间戳、作者和消息。如果数据被转换成一个 pandas 数据帧,那么数据处理和操作就很容易,在这里,我们将把这个文本信息转换成这个。该文件中的单个条目如下所示:

21/04/20, 5:47 pm - Author Name: Message sent

对于每一行,一个简单的正则表达式可以从该条目中提取日期和时间,在该日期拆分该行,分号将给出相同的作者和消息,但这里有几个问题:

  1. 多行消息没有新的时间戳,因此需要将继续的消息添加到主线程中。
  2. 有一些 WhatsApp 的默认消息,如:“消息是端到端加密的”或“XYZ 将你添加到组中”,这些消息可能有也可能没有时间戳,而且它们都不是多行的。这些可以打破我们的逻辑。此外,它们与我们的分析无关,可以跳过**。**

考虑到这些情况,数据帧提取的代码可以引用如下:

将文本文件转换为熊猫数据框的抽象代码

我在这里没有包括整个实现,但是如果你想知道的话,你可以去我的 GitHub 库:

** [## kaustubhgupta/WhatsApp-群组-分析器

这个 Web 应用程序给出了关于 WhatsApp 群聊的详细报告。解散 GitHub 是超过 5000 万人的家园…

github.com](https://github.com/kaustubhgupta/WhatsApp-Groups-Analyser)

除了将它转换成一个数据框,我也有兴趣知道关于群组中共享的表情符号的信息。这可以通过使用名为 emoji 的库来实现。对于每条消息,我们将检查它是否包含表情符号,然后为它们的计数创建一个单独的列。出于演示目的,我将分析我的家庭组。让我们看看新数据集是什么样子的:

df.tail(10)

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

作者图片

这是数据帧的尾部,您可以看到大约有 9k 行的**。日期列具有日期-时间数据类型,以便于操作,正如前面提到的,数据是在没有媒体的情况下提取的,包含媒体的消息被 WhatsApp 赋予了“媒体省略”的标签。现在我们的数据集已经准备好了,是时候回答一些问题了。**

家庭群只有媒体聊天吗?

所有包含消息的媒体都被重命名为忽略的消息,这使得对这些消息进行分组、计数并除以消息总数以获得媒体消息的百分比变得容易。代码实现将是:

((df[df['Message'] == ' <Media omitted> '].Message.count()) / (df.Message.count()))*100

当我在我的家庭组数据集上运行这个命令时,它返回了 53.6% 这意味着 100 条消息中有 53 条是照片、视频或任何 GIF。令人惊讶的是,当我在我的学院组数据集上运行相同的命令时,它返回了一个 3% 的结果!这意味着我们可以说,在某种程度上,这些小组有更多的媒体,但这种说法是很有争议的,因为我的大学小组有更少的媒体,但其他小组可能有更多的媒体。

家庭群体只使用一种表情符号吗?

表情符号是每个人都喜欢的东西。有时,人们只是在交谈时交换表情符号,以传达他们的情绪,减少交谈。探索表情符号在群体中的分布会很有趣。在继续之前,这里有一件事需要考虑。我的母语是印地语,当我从信息中提取表情符号时,一些语言字符被归类为表情符号。让我们来看看这个群体最常用的 10 个表情符号:

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

(家庭组分布)按作者分类的图像

这是一个甜甜圈图,通过观察它,我可以说这个组有很多变化!合十礼表情符号(🙏)占使用表情符号总数的 32% 。总共使用了 2005519】表情符号,其中 498 个是独一无二的。如果我们看学院组分布,(😂)表情符号领衔排行榜:

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

(学院组分布)按作者分类的图像

让我们探索更多的统计数据来理解这些组的性质。

活跃和懒惰的成员

我们有该小组成立以来每天的数据。因此,我们可以分析该组成员在任何时期的活动。这里我们将考虑从第一天开始的整体活动。为此,我们将按作者对数据进行分组,应用 count 作为聚合,并将它们绘制成条形图。另一种方法是使用 value count 函数直接获得每个作者的数量。无论您选择哪种方法,您都可以绘制数据,下面是一个例子:

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

作者图片

如果你仔细观察,你会发现这个活跃的成员发送了 **50%的群组信息!**你可以通过将最少的计数作为决定因素,为懒惰的成员绘制相同的图:

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

作者图片

当我在我的大学小组中运行相同的命令时,结果几乎是相同的,但我预计这里会有一个凸起。(因为在手机清理过程中,我丢失了很多数据,现在我只有有限的数据对应的组)

夜猫子还是早起的鸟儿?

这个问题很简单,哪个成员早上更活跃,哪个成员晚上更活跃。一个家庭团体通常有所有的亲戚和老年人,因为他们通常醒得早,很明显,在家庭团体的情况下,早上会有更多的活动,而在大学团体的情况下,晚上会有更多的活动。在我的分析中,我发现家庭小组的集体活动在上午 8 点到 9 点之间,而大学小组的集体活动在上午 11 点到下午 1 点之间。大学集体远足是因为这是我们讨论是否应该去实验室的黄金时间!

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

家庭小组活动(图片由作者提供)

现在看看其他小组活动:

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

大学小组活动(图片由作者提供)

节假日的组状态

我进一步分析了在重要节日的集体活动。这里我将考虑印度的国定假日。有一种强烈的观点认为,在假期,家庭团体充满了来自不明来源的信息,在某种程度上这是真的。虽然大学小组在这些天很少或没有活动,但家庭小组在这些天有很大的图表。选择的日期是共和国日、独立日、圣诞节和其他一些节日。我无法捕捉到排灯节或胡里节等更著名的节日的模式,因为这些节日没有任何固定的日期,它们的日期每年都在变化。以下是生成的一些图表:

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

作者图片

把所有的放在一起

分析部分已经结束,现在是时候把所有的东西放在一起,形成一个结构化的格式。为了使这种分析对每个用户都是可访问的,在那里他们可以获得他们自己上传的数据的报告,我必须构建一个 web 应用程序来服务于这个目的。我将整个分析代码分为 3 个阶段或模块。一个模块帮助处理、清理和创建数据框。一个模块生成我在这里展示的所有统计数据(只有原始数据),另一个模块生成要在 web 上呈现的交互式图形。我用 Heroku 部署了这个应用程序,它是用 flask framework 构建的,jinja 模板帮助将这个后端连接到 web 前端。这款网络应用名为 Whatsapp-Analyzing

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

演示如何使用这个网络应用程序

结论

在本文中,我们介绍了如何访问 WhatsApp 数据、处理信息、回答一些流行的问题,以及最终在 could 平台上部署应用程序。根据对数据的理解程度,可以发现很多东西。我没有给出图片中显示的 Plotly 图形的代码实现,因为这会使文章变得混乱。所有代码都可以在我的 GitHub 库中找到。

这篇文章提出的问题“家庭团体有那么糟糕吗?”毫无根据。每个群体都有几乎相同的趋势,但是的,有一些因素,其中一个胜过其他人,但不能一概而论。让我知道你的想法,你可以在 medium 上关注我,以获得更多有见地的故事的通知。说完了,再见!

您可以通过以下方式与我联系:

[## Kaustubh Gupta -机器学习作家- upGrad | LinkedIn

嗨,我是一名 Python 开发人员,能够进行 Web 抓取、Selenium 自动化、数据科学、后端 Web 开发…

www.linkedin.com](https://www.linkedin.com/in/kaustubh-gupta-612767ab/) [## kaustubhgupta -概述

技术爱好者|程序员| Python |数据科学|深度学习| Flask l Django l 开源贡献者…

github.com](https://github.com/kaustubhgupta)**

财务独立是财富的产物吗?

原文:https://towardsdatascience.com/is-financial-independence-a-product-of-fortune-22905a48107b?source=collection_archive---------44-----------------------

用蒙特卡罗方法和 Python 模拟随机微分方程

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

在雾中航行很困难,但并非不可能。波兰 2020 。作者照片。

介绍

这是工作的第二部分,试图找到通往财务独立的秘方——一个你不再需要工作来养活自己的阶段。

之前的文章中,我们试图通过一个常微分方程系统(ODE)来描述个人财务问题,后来我们使用 python 对其进行了数值求解。给定一组输入参数,我们的数值模型能够确定你的财务状况。

在这篇文章中,我们把它带到下一个阶段。我们在等式中加入随机性来解释生活的不可预测性。这一次,我们想知道你的财务成功在多大程度上真正掌握在你手中?

我们将通过重温数学和添加一些随机贡献来开始这一旅程。然后,我们开始使用所谓的蒙特卡罗方法模拟一些假设的场景。最后,我们将使用我们的增强模型,在世界历史数据的帮助下预测您的机会。

让我们开始吧。

数学重温

最后一个模型依赖于两个耦合的微分方程系统,为了简单起见,我们将简化为一个:

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

这个等式通过 x 来模拟你的总财富,这是一个随时间变化的变量。它的左边是导数,右边由两个起作用的项组成:

  • δ(t ),表示年度余额:所有收入减去所有费用和税收——简单地说就是每年之后还剩多少。
  • x ln(⋅),表示投资通货膨胀的合力,产生复利。请注意它本身的比例性,更多关于为什么这些术语位于对数之下,你可以在早期文章中找到。

这里,三个参数代表:

  • R -你投资的预期平均利率,
  • ξ -年平均通货膨胀率,
  • β ∈ [0,1]——你选择投资的那部分财富,我们称之为承诺系数

第二项可以用一个数字 ln λ 来表示,并理解为有效利率。因此,每当 λ > 1 时,你赚钱,而 λ < 1 与你一起亏损。

方程本身是一个线性一阶微分方程,可以解析求解。然而,由于我们稍后将“随机化”它,我们将坚持使用数值方法并使用 python 集成它。

重要的评论

我们使用标准化的值来表示 x 和δ,以使该方法尽可能适用于任何国家、货币或个人态度。因此,δ= 1 可以简单地解释为“你设法存下了你承诺的 100%”,例如,这可以转化为三个月的“财务枕头”。

就财务独立而言,这种方法将一个收入 10 万美元、支出 5 万美元的人与另一个收入 1 万美元、支出 5 万美元的人置于同等地位。毕竟,财务独立被理解为一种状态,在这种状态下 x > 0 ,产生的金额为正,尽管δ≤0。换句话说,增长至少补偿了损失,并且不需要主动工作。因此,你可以永远坐着吃饭。

确定性解决方案

为了找到解决方案,我们需要计算:

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

这只是一个函数。这里,我们任意设置 t0 = 25,我们将平衡函数建模为

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

第一个区间,我们称之为活跃时间,因为它代表了我们大多数人都在积极工作和赚钱的时间。第二个区间代表退休,在这段时间内 xp 表示平衡。让事情变得更困难的是,我们让XP1。因此,对于一个合理的养老金计划,我们可以假设 xp = 0,这意味着你可以花掉 100%的养老金,而这不会影响你的总财富。

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

图一。x 的确定性级数。左上:承诺因子扫描,右上:改变初始条件,左下:有效利率扫描,右下:活跃时间扫描。在所有情况下,平衡函数在活动期间设置为 1,此后设置为-0.5。图片作者。

为了测试不同参数的影响,我们展示了在不同条件下 x 的级数(图 1)。正如我们所见,高投资承诺 β ,高预期利率 R ,以及更长的活跃期 T = t - t0 导致在增长产生更多增长的机制中找到解决方案。相反,初始条件 x0 = x(t0) 根本不影响增长——只影响 x 的绝对量。

成功条件

如前所述,当 x,dx/dt > 0 而δ≤0时,我们财务独立的条件得到满足。我们应该强加的另一个条件是,这个阶段是永久性的,也就是说,一旦达到这个阶段,就没有必要再回来做固定工作。

然而,一旦我们考虑了随机性,第二个条件将会把这一点变成方程稳定性问题的一个相当麻烦的分析。为了避免这种情况,并考虑到典型的先挣后花的生活场景,我们将坚持把δ表示为以下函数

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

也就是说,一旦你过了退休年龄,你的年度余额预计将是你之前活动时间余额的-50%。因此,如果你退休后( t > t0 + T )保持正值,并且的导数平均为正值,我们就称之为成功。

增加生活的随机性

这是一个有趣的部分。“主”方程为我们提供了一个完美决定论世界的解决方案。事实是,无论是你的条件还是(尤其是)市场的条件都不一样。自然,我们需要考虑过程中的一些随机性,但要以一种我们的模型仍然有意义的方式来做。

出于这个原因,我们将用参数化分布代替方程的参数。然后,我们将使用所谓的蒙特卡罗方法来找出它将我们引向何处。一旦我们通过多次迭代收集了结果,我们就可以使用统计数据来讨论结果。

参数化

影响因素可分为人为因素和市场因素。因人而异的因素是δ和 β ,因为只有这两个因素会受到你的决策的影响。相反, Rξ 更多的是世界的状况,除非你是其中的一个砖石,否则你对其没有影响;)

数学上,我们可以通过以下方式注入高斯噪声来说明平衡函数的随机性:

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

其中δ定义为早先的,而 N 是特定方差的零中心高斯噪声。

类似地, Rξ 可以使用高斯噪声建模为:

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

对于β,我们有β

β 的建模要复杂一些。由于 0 ≥ β ≥ 1 ,不能用正态分布,但可以用所谓的贝塔分布代替。该发行版不仅支持约束,还为我们提供了两个参数(我们将它们命名为和以避免重载),

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

这在很大程度上“描绘”了人们对投资的总体态度。

履行

有了这种武器,我们可以建造一个“模拟生活”的课堂。

class RealLife:
    def __init__(self):
        self.t0 = 25                        # starting age
        self.beta = np.random.beta(2, 5)    # somewhat natural
        self.mu_r = 0.05                    # investment rate avg
        self.sigma_r = 0.25                 # investment rate std
        self.mu_xi = 0.028                  # inflation avg  
        self.sigma_xi = 0.025               # inflation std
        self.x0 = 0.0                       # initial wealth
        self.balance_fn = self._rect        # balance fn (callable)
        self.sigma_delta = 2.0              # balance fn std

        self._rs = []
        self._xis = []
        self._deltas = []

    def live(self, x, t):
        delta = self.sigma_delta * np.random.randn()
        r = self.sigma_r * np.random.randn() + self.mu_r
        xi = self.sigma_xi * np.random.randn() + self.mu_xi

        self._rs.append(r)
        self._deltas.append(delta)
        self._xis.append(xi)

        rate = self.balance_fn(t - self.t0) \
             + np.log(1 + self.beta * r) * x \
             - np.log(1 + xi) * x
        return rate

    def _rect(self, t, t0, duration=30, floor=-0.5):
        x = np.where(t - t0 <= duration, 1.0, floor)
        mask = np.where(t > t0, 1.0, 0.0)
        return x * mask

在这里,所有参数都被设置为类似于真实场景,但是基于历史数据的结果在最后给出。

还有一点很重要,即self.beta被认为是与时间无关的。因此,我们可以将其解释为一种情况,即一旦一个人出生(一个对象被实例化),投资承诺就被选择并保持不变。由于我们将使用蒙特卡罗方法,我们应该期望在人群中有足够的随机性(在多次运行之后)。

接下来,我们需要对新的随机微分方程进行数值积分。由于scipy.integrate.odeint表现不佳,我们创建了与odeint接口匹配的例程sdeint

def sdeint(func, x0, t):
    x = np.zeros(t.size, dtype=float)
    x[0] = x0

    for i, dt in enumerate(t[1:]):
        x[i + 1] = x[i] + func(x[i], dt)

    return x

最后,模拟代码可以包装在下面的函数中。

import numpy as np
import pandas as pd

def simulate_with_random(you):
    t0 = np.linspace(0, you.t0 - 1, num=you.t0)
    t1 = np.linspace(you.t0, 120, num=(120 - you.t0 + 1))

    x_t0 = np.zeros(t0.size)
    x_t1 = sdeint(you.live, you.x0, t1)

    df0 = pd.DataFrame({'time': t0, 'x': x_t0})
    df1 = pd.DataFrame({'time': t1, 'x': x_t1})
    return pd.concat([df0, df1]).set_index('time')

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

图二。随机化方程的积分结果。在这里,投资率和通货膨胀率标准差被赋予相同的“sigma”。在所有情况下,我们让它运行 50 次。图片作者。

蒙特卡洛

现在,我们让它运行 1000 次,增加期望的 R 。此外,我们随机化活动时间 T 以完全随机化群体。图 3。显示结果。

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

图 3。完全随机化方程的蒙特卡罗模拟。平衡功能的活动时间被设置为 15 到 40 年之间的随机整数。图片作者。

正如我们所看到的,无论何时,经济独立几乎是不可能的。这是因为 lnλ0,并且在积分之后,解经历指数衰减,并且方程保持稳定。然而,由于活动时间 T 和承诺因子 β 的影响,增加 μR 也不能保证成功。即使对于人为的高 μR ,由于上述原因,很大一部分运行会失败。

好在 βT 都是取决于每个人个人选择的因素。因此,如果我们将这些冻结,同时让 Rξ 保持随机,我们应该能够至少在一定程度上估计出你成功的几率。

你对抗历史数据的机会

要想感受一下对抗市场是什么感觉,我们需要插上 μR、 σR、 μξ 和 *σξ的一些合理值。*假设“历史重演”,我们可以论证我们可以利用历史数据模拟未来。为了得到通货膨胀的数值,我们使用美国的历史(1914-2020 年)数据。类似地,为了估计市场在均值和方差方面的行为,我们使用了 1928-2020 年的数据。

根据数据我们有ξ= 3.24+/-4.98%R= 7.67+/-19.95%。

接下来,我们扫描 Tβ ,同时使用我们刚刚计算的值。

from itertools import product

t = np.linspace(0, 120, num=121)
ACTIVE_TIME = np.linspace(10, 40, num=31)
BETAS = np.linspace(0.0, 1.0, num=11)
np.random.seed(42)

diags = []
for wy, beta in product(ACTIVE_TIME, BETAS):
    for _ in range(1000):
        you = RealLife()
        you.mu_r = 0.01 * mu_r          # S&P500 mean
        you.sigma_r = 0.01 * sigma_r    # S&P500 std
        you.mu_xi = 0.01 * mu_xi        # inflation mean
        you.sigma_xi = 0.01 * sigma_xi  # inflation std
        you.beta = beta                 
        you.balance_fn = lambda t: rect(t, you.x0, wy)
        df = simulate_with_random(you)

        passive = int(float(df[df.index > you.t0 + du] \
                    .diff().sum()) > 0)

        diags.append({
            'active': wy,
            'beta': you.beta,
            'avg_r': you.get_average_r(),
            'avg_delta': you.get_average_delta(),
            'avg_xi': you.get_average_xi(),
            'passive': passive,
        })

df = pd.DataFrame(diags)
df_agg = df[['active', 'beta', 'passive']] \
    .groupby(by=['active', 'beta'] \
    .mean() \
    .unstack() * 100

决赛成绩

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

图 4。每个(T,beta)对与历史市场数据的 1000 次运行的最终结果。结果以%表示。图片作者。

图 4。显示了每个( Tβ )对的蒙特卡洛模拟的最终结果。正如我们所看到的,任何 1/2 的收入实际上都将你排除在经济独立之外。事实是,如果你梦想为自己争取一个光明的未来,你需要学会投资——不管这对你意味着什么。这可能意味着从一个普通的交易者到一个熟练的企业家——你需要学会增加你所拥有的。

第二重要的因素是你的活跃时间。然而,这一次更应该被看作是一个积累财富的“机会”窗口。时间越长,你就越有可能获得足够的“燃料”让你的财务之船飞起来。

然而,即使有 100%的承诺和 40 年的艰辛,胜算似乎对你不利!幸运的是,你应该记得我们对δ(t)函数使用了一个过于简化的模型。事实上,如果你设法将所学转化为更高的薪水,并且远离过度消费的诱惑,你的财富会积累得更快。此外,没人说你会被留给市场“反复无常”。除非你唯一的投资策略是将你的钱安全地分配给一些基金,否则即使在暴风雨中,你也可能会学会导航和航行。

考虑到这一点,请将这些结果作为鼓励你尝试的一种方式,因为它们不是最终的食谱,而是试图找出什么是重要的。祝你好运!

PS。如果你想玩代码,自己模拟,可以在 Github 上找代码。

还会有更多…

我计划把文章带到下一个层次,并提供简短的视频教程。

如果您想了解关于视频和未来文章的更新,订阅我的 简讯 。你也可以通过填写表格让我知道你的期望。回头见!

原载于https://zerowithdot.com

通量比张量流好吗?

原文:https://towardsdatascience.com/is-flux-better-than-tensorflow-d39d3ba8c0ce?source=collection_archive---------8-----------------------

放松点。Flux 是机器学习库,不会让你张量!

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

(src = http://fluxml.ai)

什么是通量?

Fl ux 是一个机器学习库,用于多范例、快速、麻省理工学院开发的统计编程语言 Julia。Flux 的核心特征是取 Julia 码的梯度。换句话说,Flux 能够接受另一个 Julia 函数和一组参数,并返回一个梯度。Flux 是一个非常酷的包,因为它能够做很多 Google tensor flow 能够做的事情,但是是在一个“由用户开发”的包中。此外,Flux 具有用 Julia 编写的优势。虽然这也意味着 Flux 遭受了其他 Julia 软件包所遭受的同样的缺点,但是这种交换并不可怕。

如果你想真正了解 Flux,我这里有一个关于在 Flux 中批处理和训练卷积神经网络的介绍性教程。

什么是张量流?

Tensorflow 是数据科学工具箱中的经典工具。根本不会编程的人甚至知道 Tensorflow 是什么,这是有充分理由的:

Tensorflow 太牛逼了。

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

https://www.tensorflow.org/(src =

Tensorflow 由“谷歌大脑团队”开发,并于 2015 年 11 月在 Apache 许可下发布。Tensorflow 为许多现代机器学习算法背后的梯度模型提供动力,包括谷歌、英伟达、高通、联想和数百家公司使用的算法。Tensorflow 不仅在 Python 中,而且在整个机器学习中已经成为一个主要部分。

我喜欢通量的地方

Flux 是一个很棒的机器学习框架,因为它带来了许多有趣的想法和一些非常酷和简单的语法。有很多个人主义在不断变化,但总的来说,好处归结为一些关键因素。

朱莉娅

你可能已经知道了,Flux 是给 Julia 的。用 Julia 编写的 Flux 比用 Python 编写的软件包有很大的优势。Julia 是一种快得多的语言,在我看来,它的语法比 Python 好(这是我个人的偏好。)

然而,这也带来了巨大的代价。Julia 在很大程度上仍然是一门相对较新的语言,其用户基础远不如 Python。在这种情况下,Julia 失去了像 Python 这样庞大的语言所带来的大量支持。这意味着虽然 Flux 在某种程度上可能是更好的解决方案,但它不一定适用于所有情况。这是因为你很难找到任何打嗝的答案。首先很难找到学习如何使用这种语言和软件包的文档,尽管这正在稳步改善。

很酷的语法!

我之前说过,比起 Python,我更喜欢 Julia 的语法。虽然这纯粹是主观的,但不主观的是 Julia 语言的可变性,随之而来的是一种完全不同的、非常酷的在 Julia 内部创建渐变模型的方式:

句法表达

这些真的很酷,如果你想了解朱莉娅,你一定要好好看看它们。它们主要用于两种特定情况:

f(w) = v = v + 5 for v in w
  • 功能操作
f(w) = w + 5 - 6

然而,Julia 中的语法表达式可以以数百种其他方式使用,这些方式都很有趣,使程序员更加容易和直观。

但是这如何适应通量呢?

Flux 充分利用了这些通用表达式,并将它们作为整个库的基础。看一看 Flux 文档中的这个例子:

julia> **using** Flux
julia> f(x) = 3x^2 + 2x + 1;  
julia> df(x) = gradient(f, x)[1]; *# df/dx = 6x + 2*  julia>
df(2) 14  
julia> d2f(x) = gradient(df, x)[1]; *# d²f/dx² = 6*  
julia> d2f(2) 6

我喜欢 Tensorflow 的地方

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

(src = http://Google.com/)

Tensorflow 以一种完全不同的方式拥有自己的语言优势,Python 是一种非常通用的语言,因为大多数其他高级语言都能够与之接口,而且它是基于 c 的。然而,Flux 和 Julia 的致命弱点绝对是 Tensorflow 和 Python 的流行。

很容易找到帮助

使用任何受欢迎的东西的好处;正如需求随着供应而增长,可用性随着用户而增长。使用产品的人越多,关于产品的对话就越多,这对于 Tensorflow 或 Flux 这样的工具来说是绝对有用的。

遵循规则

我可以推测,数据科学家在尝试使用 Flux 时会遇到的一个大问题是,很多事情的处理方式都与其他地方截然不同。Flux 使用一种非常特定于语言的语法,这种语法不符合高级 ML 代码的典型类型。然而,在对冲的另一边是 Tensorflow,他采取了完全相反的方法,并倾向于符合机器学习内部已经建立的东西。

庄严的

毫无疑问,Tensorflow 臭名昭著。这是有道理的,因为 Tensorflow 不仅在这个行业存在的时间更长,而且还得到数据巨头谷歌的支持。说到底,对于一个拥有数百万开发人员的企业来说,使用一个工具来维护和改进软件要比少数几个 Github 维护人员容易得多,这些维护人员甚至不得不去做他们的日常工作。

结论

我认为 Flux 非常酷,我非常喜欢在其中工作。Tensorflow 在我心中有一个特殊的位置,但看到更多的人在他们的模型中使用 Flux 肯定会很有趣。Flux 带来了一些非常酷的想法,虽然这使它非常独特,但它也有一个非常陌生的用法。通量会取代张量流吗?很可能不会,也不可能,但是通量能代替张量流吗?

是啊!

Julia 当然仍然是一个婴儿,许多软件包都徘徊在足够包容的边缘,可以依赖,但不管它年轻与否,Julia 肯定是数据科学中现在和未来的一种伟大语言。谁知道呢?在 10 到 15 年内,我们很可能会看到 Julia 的使用激增,随之而来的还有 Flux 的使用。

投资 AI 是投资回报率最高的机会吗?

原文:https://towardsdatascience.com/is-investing-in-ai-the-highest-roi-3d84725e315e?source=collection_archive---------48-----------------------

数据科学、人工智能、投资、金融

人工智能是一个革命性的行业。

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

克里斯蒂安·杜博万在 Unsplash 上拍摄的照片

这篇文章探讨了为什么 AI 是最高 ROI 机会。

随着人工智能日新月异的发展,这项技术是多么具有革命性,它的实现是巨大的,几乎每个杂志和报告都对此进行了报道。然而,解释它的特定方面以及人工智能及其子集机器学习深度学习如何改变我们看待生活的方式已经变得势在必行。

这两家公司都在或将要以这样或那样的方式实现人工智能,这是企业界的未来。如果你知道自己在做什么,投资正确的人工智能将带来非常高的投资回报率。

创业者没有感官,没有测试的必要,什么都做不了。幸运的是,人工智能的早期阶段为金融投资者提供了更先进、更有利可图的战略,并在建立新公司时提供了有价值的战略视角。

小公司现在可以产生可靠的数据,从股票的基本市场波动到公司公告,而这仅仅是个开始。在传输数据时很难选择重要的一个。作为长期投资者,你打算投资什么?随着时间的推移,任何金融分析师都知道如何处理关键数据。此时,他们有稳定的工具来补充他们的投资组合。

人工智能可以评估早期初创企业对投资者的表现,并通过预测销售增长、市场规模、商业专长等所有变量来捕捉初创企业的成功机会。它将对细节进行评估,以确定统计数据是否真的有所改进。这意味着值得投资的初创公司有能力开始筹集资金。

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

Austin DistelUnsplash 上拍摄的照片

大多数投资者使用人工智能进行重要的投资选择。通过集成算法、数据挖掘和语言处理,人工智能可以创建关系和模型,根据投资者的偏好提出建议。随着人工智能不断吸收新数据,它将随着分析新信息而增长,并最终变得可靠和深远。

EQT Ventures 开发的用于对潜在初创企业进行分类的机器学习系统 MotherBrain 将其算法应用于历史数据,以便有可能区分投资申请人。该平台使用财务统计数据、网站排名、设备放置和社交媒体功能等细节,大多数企业可以实际测试和评估这些细节。令人惊讶的是,如果 Motherbrain 的发明已经被用于企业的种子和天使融资。

包括天使投资者在内的小投资者也可以利用只有历史上重要的公司才能获得的专业知识和服务。风险投资家和天使投资者的另一个真正的不利因素是以前寻求令人愉快的投资目标。这是一个持续的强大和旅行密集型的挑战。然而,机器学习预测分析开始改变策略。

对于其他用户来说,也有商品,比如 Allegro,一个完全不受人类偏见影响的智力算法投资专注于 AI 。这是一个很好的投资产品,但当市场对这一承诺较低时,在市场强劲时转向股票基金和债券基金,这意味着投资是安全的。

事实上,当错误的数据存在或市场缺陷发生时,遵从行业含义的财务经理通常处于艰难的境地。这些缺陷可能是谣言,财务盗窃,或无辜的关系失误。由于金融市场与持续不断的数据流保持联系,数据流的脆弱性或中断似乎比坏消息更糟糕。

那么,是什么限制了人工智能在遵循对冲基金模式的传统业务中的实施?最重要的问题来自大规模的金融和人力资本投资。

可能最常见的抑制因素是可用人才库的稀缺。作为另一个领域,有一批具有该领域专门知识和经验的被拘留者。数据科学家和人工智能从业者也是如此,他们通常期望对关键公司行为和目标的观察总结。Pesa 报告称,仅在美国就有超过 1 万个人工智能职位空缺。

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

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

除了缺乏专业知识之外,投资公司还需要对这一独特的潜力池的优先事项和愿望做出反应,这一潜力池将学术界、学术界和博士生结合在一起。这些人中的许多人不参与传统的投资工作,而是受到资本和金融安全的激励。这个人才库很常见,涉及到他们的喜好。相反,投资公司需要营造一个人才需求得到满足的环境,高度重视给人留下积极的印象,放手一搏,寻求改变游戏规则的增长。

当谈到担心钱的时候,投资者仍然相信这个想法背后的人。这就给个人倾向和情感不端留下了很大的空间。感情投资岌岌可危。人工智能正在平衡这一点。人工智能帮助投资者更容易依赖研究和统计数据。我们不能清空我们目前的感官,然而,我们可以用 AI 来规避我们的存在。

结论

人工智能的增长估计是巨大的,并表明它将在未来几年增加数十亿。人工智能的规模可能会大得多,分析师表示,这个领域每年将增长 30%。人工智能具有巨大的潜力,因为它可以在任何领域从工程走向技术,并可以影响这两者之间的一切。

人工智能的应用是巨大的,不可能只展示它的几个方面。但如果你是一个企业家,你对了解这个行业有特别的兴趣,那么你可以适当地看待和评估它。机会是巨大的,技术将会增长,因为世界经济受到了疫情的打击,一个爆发的领域是技术。

现在,把你的想法放在TwitterLinkedin,以及Github!!**

同意 还是 不同意 与绍拉夫·辛拉的观点和例子?想告诉我们你的故事吗?

他对建设性的反馈持开放态度——如果您对此分析有后续想法,请在下面的 评论 或伸出手来!!

推文@ SauravSingla _ 08,评论Saurav _ Singla,还有明星SauravSingla马上!

放弃

本报告中表达的想法和观点仅代表我个人,不一定代表我公司的观点。本报告旨在提供教育,不应被理解为个人投资建议,也不应被理解为购买、出售或持有任何证券或采取任何投资策略的建议。

容易解释吗?局部可解释性

原文:https://towardsdatascience.com/is-it-easy-to-explain-local-explainability-4f325565210c?source=collection_archive---------21-----------------------

我为什么要相信你的解释?对最常见的解释方法,它们的优点和局限性有更批判性的观点。随着对可解释性需求的增加,越来越多的公司、专业人士和组织引入了一些方法来为他们的模型产生解释。然而,这些方法能实现吗?我们能相信他们的结果吗?

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

照片由安德里亚斯亲切的Unsplash 上拍摄

在这篇博文以及已经发表的另一篇博文中,我们旨在调查非线性模型可解释性的现有方法,重点关注实用性、局限性以及现有实现方法的开箱即用行为。
在当前的博文中,我们将着重于局部解释。
链接到上一篇关于全局可解释性的博文可以在 这里 找到。

如前一部分所述,可解释性方法大致可以分为全局解释和局部解释。虽然当我们处于研发阶段时,从整体上对模型进行说明更有意义,并且可能对专业人员(如数据科学家)更有用,但本地解释也意味着对最终用户的解释。这些人可能是监管者、公司或从模型预测中受益的人。这意味着给出正确的解释是不够的。你还需要它对人类来说清晰易懂(你可以在米勒的综述(1)中读到更多关于什么构成了“好的”解释)。重要的是,当解释是出于监管目的时,你需要它提供一些保证,你所看到的确实解释了预测。

在这篇博文中我将讨论现有的两种最流行的局部可解释方法:

  1. 石灰
  2. SHAP

这篇文章中使用的所有代码的笔记本可以在这里查看。

模型和数据

我将在这一部分使用的数据是 Kaggle 的经典“泰坦尼克号:机器从灾难中学习”。关于数据集的更多细节可以在这里找到。我所使用的数据的预处理阶段是非常基本的,可以在上面 链接的知识库中查看。

我选择使用的型号是 XGBoost 。这是一个基于决策树的集成模型。关于树集合模型和 boosting 的简要说明可以在本系列的第一部分中找到。

完整的 XGBoost 类,也包括使用贝叶斯优化的超参数搜索,可以在这里找到。该类的当前用法:

石灰

关于石灰已经写了很多,也说了很多。我不会进行太多的技术解释,这些可以在许多其他来源中找到(例如在这本伟大的书的文档)。但是,简单地说,我将解释基本的想法,并转移到实际应用和限制。

总的来说,这个想法很简单:问题的整个空间是复杂的,因此不能用简单的线性模型来建模,所以我们改为训练一个更高容量的“黑盒”模型。然而,给定一个特定的实例(样本)和它周围的一个小环境,我们也许可以假设局部线性,在这个局部环境上训练一个线性简单模型,并产生一个“实例相关”的解释。这个简单的线性模型被称为代理模型。 局部训练的数据是通过置换我们想要解释的感兴趣的实例获得的。使用欧几里德距离度量,通过它们与原始样本的距离对生成的样本进行加权。标签是通过探测我们的黑盒模型获得的。

需要记住的一件非常重要的事情是,代理模型是我们模型的近似模型,而不是精确的复制品。因为(a)局部线性是一个假设,并且(b)我们产生一个单独的训练模型,该模型具有 K 个特征、N 个样本和来自不同于基本事实的分布的标签。原始模型和代理模型并不总是产生相同的预测。

让我们将石灰解释应用到测试数据中的几个例子。

理论上,使用石灰可以像运行这两行代码一样简单:

然而,要用 XGBoost 运行 LIME,我们需要生成一个包装器类(存储库中的主函数),它处理一些输入输出匹配。

以下图的类别用途:

>样本#4:男性,年龄= 27 岁,头衔=先生……没有活下来

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

图 1:测试样品 4 的石灰说明

在图 1 中,我们可以看到局部线性模型的预测(0.22)与全局模型的预测(0.13)相对接近。根据当地的模型,这位先生的死亡预测主要是因为他是一个“他”和一个“先生”,属于 C 类,而他的年龄会对他有利。最后,他的家庭地位(Parch,SibSp)似乎在预测中起很小的作用。
解释不是很明确,特别是对于连续的特征。虽然 27 岁似乎有助于生存,但这是否意味着年龄越大或越小越糟糕呢?多少钱?

让我们看另一个例子:

>样本#35:男,年龄= 11 岁,头衔=先生……没有活下来

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

图 2:测试样品 35 的石灰说明

这种情况展示了局部预测(0.31)和全局预测(0.64)之间可能的不匹配。事实上,看起来本地模型比全球模型更准确,因为这个个体根据真实标签没有存活下来。我们的代理模型是“正确的”,而我们的 XGBoost 模型是“错误的”,这是一个巧合,而不是一个特征。
代理模型应该解释我们的复杂模型的预测,不管它是对还是错。在我们开始考虑解释的正确性或质量之前,他们的预测将是相同的,这是非常重要的。

LIME 方法的另一个潜在缺点是需要手动选择我们的代理模型将要训练的特性的数量,以及定义本地环境大小的内核的大小。

理论上,LIME 优化器应该最小化复杂性,从而最小化特征的数量,同时最小化损失,从而得到一些最佳的特征数量。实际上,我们需要将特征的数量(K)传递给模型。这影响了解释的稳定性,如下所示:

样本#42:女性,年龄=63 岁,头衔=夫人…幸存

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

图 3:具有不同 K 值的测试样品 42 的石灰说明

看起来改变 K 对结果有潜在的两种影响:(1)它可以稍微改变局部预测值,以及(2)它可以改变顶部选择的特征,当从 5 个特征转移到 7 个特征时可以注意到。当选择 K=5 时,第三个重要的特征是“Pclass ”,而当选择 K=7 时,特征“Cabin”占据这个位置并将“Pclass”向下推一位。对这种现象的部分解释是特征依赖。一些特征只有在与其他特征相结合时才能成为“好的”预测器。因此,只有当“足够”的特征被允许用于训练时,组合才是可能的。
由于 K 是手动给定的,因此缺乏稳定性是一个主要缺点。对于相同的训练模型和测试集,使用不同的 K 可能会改变解释(特别是如果它是基于前 X 个特征的子集)。

虽然石灰简单易懂,相对容易使用,但它也有许多缺点。即,局部线性假设,需要手动定义 K 个要使用的特征,主要是替代模型预测和我们的复杂模型预测之间的潜在不一致。最后,LIME 输出的值似乎缺乏比较价值和意义。每个特性的价值代表什么?这些值和本地模型预测之间的关系是什么?给定多个样本,看看它们在 LIME 中的特征值,能推断出什么吗?

SHAP

SHAP 是一个基于 shapley 值方法的局部可解释模型。Shapley 值法是一种有理论基础的博弈论方法,主要缺点是计算量大。
SHAP 通过提出两个子方法解决了这个问题:KernelSHAP 和 TreeSHAP。因为我们试图解释我们的 XGBoost 模型,所以使用 TreeSHAP 模型更有意义。但首先,我将简要说明沙普利价值方法和 SHAP 的主要创新。

在匀称的价值观中,我们把我们的特征(或它们的组合)视为玩家。这些玩家可以组成“联盟”玩游戏。一场比赛的结果是我们的预测。我们的目标是计算一个特征对不同联盟预测的平均贡献,并与所有实例的平均预测进行比较。匀称的价值就是来自这一特征的贡献。然而,随着特性数量的增加,遍历所有的联盟成指数级增长。这就是 SHAP 应该帮忙的地方。

KernelSHAP 将解决方案视为之前引入的石灰和 Shapely 值的组合。这个想法是训练一个代理模型来学习不同联盟的价值。在不同的排列中,缺少一些特征。缺失的特征由来自其边缘分布的样本代替(很像第一部分中描述的全局置换方法)。与 LIME 不同,联盟不是根据距离度量(欧几里德)而是根据联盟理论(大和小排序更重要)来加权的。
在这篇博文中,我们不会讨论 KernelSHAP,但是需要注意的是,它有一个置换方法的主要缺点:当置换一个不存在的特征时,它忽略了特征之间的任何依赖关系,因此产生了许多不真实的组合。此外,虽然许多公司将 SHAP 值视为 shapely 值,因此对其正确性有数学保证,但 KernelSHAP 是一种近似方法,并不能给出精确值。

TreeSHAP 提出了一种算法,该算法随着特征的数量以多项式速率增长。此外,Shapley 值的可加性意味着我们可以通过对单个树进行加权平均来计算树集合的 Shapley 值。TreeSHAP 算法只采用树中“允许的”路径,这意味着它不包括置换方法中的非现实组合。相反,它采用某个联盟“可到达”的所有最终节点的加权平均值。

让我们看一个类似 LIME 的例子,用 TreeSHAP 来解释这个预测。

>样本#35:男性,年龄= 11 岁,头衔=先生……没有活下来

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

红色箭头表示提高预测的要素,而蓝色箭头表示降低预测的要素。基本值是所有预测的平均值。输出值是全局模型输出。每个特征旁边的值是目标样本中该特征的实际输入值,**而不是 shapley 值!**最后,虽然箭头的大小与推力的大小成正比,但它们实际上是用对数比数而不是概率来衡量的。下面将详细介绍这一点。

看一下这个具体的例子,我们可以发现石灰预测的两个主要差异:

  1. SHAP 解释了我们模型的预测。也就是说,它不会训练另一个模型,因此让我们的解释者预测和解释不同的结果是没有危险的。
  2. TreeSHAP 着眼于与一般基值相比的特征重要性,而 LIME 训练局部模型。这意味着,当在本地环境之外观察时,一些特征,如年龄,可能具有相当不同的影响。

SHAP 工作空间:对数优势与概率

在分类中,很容易将全局输出视为一个类的概率,一个介于 0 到 1 之间的值。然而,它不是可加的。因此,TreeSHAP 在对数优势空间中工作,输出 shapley 值作为对数优势贡献。由于对数优势空间中的输出很难解释,因此将其转换回概率是有意义的。这是通过使用上面的可视化函数中的“链接”参数来完成的,事实上,力图的可视化刻度标签显示的是概率。但这只是变换了轴(现在不是线性的,因此分布不均匀),而不是单个的 SHAP 值。如果出于某种原因,您需要特性的单个 SHAP 值,您只能使用近似法来获得它们(至少是有效的)。您需要将输出值和基础值转换为概率,并拉伸它们之间的 SHAP 值。
:在最新版本(0.34)中增加了一个*model _ output = ’ probability '*的选项。使用此选项,我们可以使用 DeepSHAP 重定标器直接将 SHAP 值转换为概率。然而,它只适用于“干预性”特征扰动,这意味着它使用因果推理规则来打破特征之间的依赖关系,并需要背景数据集。

SHAP 全局可解释性

这一部分可能属于“第一部分:全局可解释性”的博客文章,但是我认为在这里,在阅读了关于 SHAP 的解释之后,会更好地理解。

SHAP 可用于使用所有本地实例的组合或平均来进行全局解释。为此,我们可以使用“条”选项和“点”选项绘制汇总图,以生成两种类型的图:

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

左侧图中的每个点都是单个要素的单个实例中的 shapley 值。颜色代表该特定实例中的特性值。在右图中,我们可以看到所有实例中每个特征的平均 shapley 值。虽然右边的图产生了“特征重要性”的一些版本,如在全局可解释性部分中所描述的,但是在这种情况下,重要性值表示特征影响结果的程度,而不是模型性能或模型构造。然而,右边的图没有显示影响的方向,此外,也没有显示特征值和特征影响之间的相互作用。这些可以在左图中看到。看左边的图,我们可以清楚地看到一些特征(性别,客舱等…)在他们的价值和的影响方向之间有很强的关联。另一个选项(有点类似于 SibSp 特性)是在值和影响幅度之间建立强关联。

摘要

  • 虽然相对简单且易于使用,但石灰法不能满足监管机构的要求,应谨慎使用,以确保最终用户的可解释性。事实上,代理模型可以潜在地解释一个完全不同的预测,这是令人担忧的。
  • SHAP 方法有很多优点。首先也是最重要的,源于博弈论,背后有数学证明。这对监管者来说当然是很有吸引力的。其次,它解释了预测本身(考虑到时间因素,这并不明显)。第三,至少对于 TreeSHAP(但是对于 KernelSHAP 来说不是),它通过只使用有效的树路径消除了所有排列方法中的依赖性问题。最后,对 SHAP 值的解释是相对直观的:“每个特征导致偏离基准值的程度”。记住这一点,并不是一切都是完美的。SHAP 解释仍然缺少对反事实解释的引用(改变特征的值将如何影响结果)。此外,与 LIME 给出的简单解释不同,SHAP 提供的解释包括所有功能,这很难让人理解和使用。
  • 虽然没有在本文中讨论,但是 LIME 和 KernelSHAP 也可以用于非结构化数据,比如图像和文本。对于这样的数据,两种模型都依赖于额外的强假设和启发来产生将被使用的特征。然后,在 SHAP 置换这些特征是幼稚的,不一定有任何意义。
  • 最后,两篇博文中回顾的大多数方法都将特性视为独立的个体。它们既没有解决特征相关性,也没有解决特征依赖性。但是,虽然像 TreeSHAP 这样的方法解决了特征依赖偏差,但是没有一种方法在解释中结合了一个以上的特征。也就是说,他们忽略了“整体大于部分之和”的现象。这是所有解释方法的一个主要缺点。

参考

  1. 米勒蒂姆。"人工智能中的解释:来自社会科学的见解."人工智能267(2019):1–38。
  2. https://christophm.github.io/interpretable-ml-book

容易解释吗?增强树的全局可解释性

原文:https://towardsdatascience.com/is-it-easy-to-explain-part-i-global-explainability-in-boosted-trees-cac51ae63a4c?source=collection_archive---------18-----------------------

我为什么要相信你的解释?对最常见的解释方法,它们的优点和局限性有更批判性的观点。随着对模型可解释性需求的增加,越来越多的公司、专业人士和组织引入了一些方法来为他们的模型产生解释。然而,这些方法能实现吗?我们能相信他们的结果吗?

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

毛绒设计工作室Unsplash 上的照片

在这篇博文以及以后的一篇博文中,我们的目标是调查现有的非线性模型可解释性的方法,重点关注实用性、局限性以及现有实现方法的开箱即用行为。
我们将从全局解释开始,特别是那些在树和提升树上实现的解释。一篇关于本地可解释性的未来文章的链接将会在发表后添加到这里(很快……)

随着模型变得越来越复杂,它们通常也变得更像一个“黑箱”。虽然准确性似乎有所提高,但在许多领域这还不够。为了让人们和监管者相信模型做出的预测,他们通常需要推理——理解什么 导致模型做出某种预测。此外,研究、开发、尤其是调试黑匣子几乎是不可能的。对模型中活跃力量的洞察有助于数据科学家和专业人员更好地理解他们的模型以及模型何时更有可能失败。

虽然存在许多解释的方法,我们可以粗略地把它们分成两大类:(1)全局解释和(2)局部解释。
全局可解释性努力从整体上展示关于模型的一些东西,从整体上接近它,而局部解释与小环境或特定实例相关。

全局可解释性对于“幕后”目的特别有用。当我们想要了解我们的模型依赖于哪个特性,并且能够调试它,识别数据泄漏或者考虑执行特性选择时。

在这篇博文中,我将关注三种不同的全局可解释性方法:
1 。树构建措施(特征重要性)
2
**模型评分措施(排列)3。**全球化的本地方法(SHAP)

这篇文章中使用的所有代码的笔记本可以在这里查看。

特征重要性

我将讨论的第一种全局可解释性方法是基于树的模型特征重要性。为了演示所提出的一些观点,我将首先创建一个合成数据集,并在其上训练一个 XGBoost 模型。这是一个非常简单的玩具数据,实际上并不需要所使用的 XGBoost 形式的“大枪”,但是请耐心听我说一会儿。

玩具数据和模型

一些背景:我们正在与一个非营利组织合作,该组织需要帮助从 18-25 岁的人群中识别潜在的奖学金候选人。获得奖学金最明显的条件是成为一所公立大学的学生。此外,平均收入对个人的机会也有影响。为了帮助他们,我们构建了一个 XGBoost 模型,该模型基于奖学金获得者的历史数据和这两个特征输出分类预测:
1。此人目前是否是学生
2。收入平均值根据四分位数分类:Q1(最低),Q2,第三季度,第四季度(最高)。
由于 XGBoost 不能处理分类数据,我们必须进行标签编码或热编码。我们选择标签编码,因为四分位数显然有一个内部顺序。四分位数 1 将被编码为 0,Q2 被编码为 1,以此类推…

对于模型,如上所述,我们使用 XGBoost。这是一个基于决策树的集成模型。
简而言之,树集成模型属于两种方法中的任何一种:Bagging 或 Boosting。虽然 Bagging 利用组合来自多个树的多个决策来形成最终预测,但是 Boosting 更加动态。在提升中,学习是连续的,其中错误分类的样本在随后的学习器中被给予更高的权重。
XGBoost 代表“极限梯度提升”。梯度推进是推进的特例,而极端梯度推进是极端梯度推进。在梯度推进中,我们使用梯度下降作为优化器和损失函数。每棵树都试图恢复前一棵树的损失。

完整的 XGBoost 类,也包括使用贝叶斯优化的超参数搜索,可以在这里找到。该类的当前用法:

在训练了 XGBoost 模型之后,我们构建了我们的决策树集合。在这一阶段,人们很容易开始询问每个特征在构建树的过程中所扮演的角色。但是,由于这是一个树的集合,并且在一个梯度上有更多的树,简单地看树的节点和分支并推断这是不可能的。幸运的是,XGBoost python 模块有一个绘图 API,它提供了一个“plot_importance”函数,可以为我们绘制各种特性的重要性。这个函数可以作为黑盒,但是我们实际得到的是什么呢?

重量度量

有趣的是,比较 XGBoost 中不同特性重要性的默认度量是权重。来自文档:

权重 ': 一个特征被用于跨所有树拆分数据的次数

对具有上述合成数据的训练模型使用 plot_importance 给出以下结果:

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

图 1:使用权重度量的特性重要性

结果似乎表明,收入群体比是否是学生更重要。但是,如果我们改变一个小事情:对收入组进行稍微不同的编码,那么现在我们在组号 0 而不是 1 之后:

接下来,我们在两个数据集“编码 1”和“编码 2”上训练模型 n 次(100 ),并绘制两者的平均特征重要性和标准偏差:

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

图 2:使用两种标签编码之间比较的权重度量的特征重要性。

突然间,学生特征和收入特征变得几乎同等重要!简单地改变编码会导致函数输出完全不同的结果。

这个非常简单的例子演示了使用“重量”度量时可能出现的一个主要问题。由于权重被定义为一个特征被用于分割数据的次数的**,因此与多分类/连续特征相比,它非常偏向于二元特征。简单地改变编码可以让模型对收入群体进行更少的划分,从而降低其重要性。但是一个特征所负责的分裂数量真的证明了它的重要性吗?**

其他功能重要性指标

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

图 3:使用所有可用指标的特性重要性

特征重要性函数为我们提供了更多的度量选项。上面我用所有选项绘制了重要性结果,原始(左图)和归一化(右图)。对比结果真的很混乱。对于特征重要性问题,每个度量产生不同的结果,不仅仅是绝对值,还有特征之间重要性的相对分布。那么哪个标准是正确的呢?哪个特性更重要?

通过检查每个度量标准,至少可以提供这些问题的部分答案。

增益所有分割的平均增益用于

总增益该特性在中使用所有分割的总增益

**😗*XGBoost 中的“增益”是指分割的平均值,而通常不是(此处与“总增益”相同)。

增益表示由于分离而获得的纯度。这由到达该节点的数据量来加权。
常规决策树中,使用“基尼指数”计算增益:

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

c——类别总数

对于标签中的每个类,随机选取该类的概率乘以互补概率。

该指数是为每个节点计算的,增益由通过该节点的数据的纯度相对于子节点的纯度的增加来定义。完整的等式还包括基于到达每个节点的样本百分比的加权归一化:

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

w —到达每个节点的样本百分比,G —基尼指数

**在 Xgboost 中,所用的增益有点复杂。**有兴趣的可以在这里阅读文档中的完整描述。

Cover使用该特性的所有分割的平均覆盖率。

总覆盖率所有分割特征的总覆盖率用于

从代码文档中(不容易找到):“覆盖率是分类到叶子的训练数据的二阶梯度的总和,如果它是平方损失,这简单地对应于该分支中的实例的数量。节点在树中越深,这个度量就越低,这意味着,对于每个分裂,我们需要计算每个样本的二阶梯度,并乘以样本的数量。
对于 p(预测)和 y(真实标签),在“reg:logistic”目标的情况下,成本函数是 (y-p),,因此二阶导数是常数。而对于“二元:逻辑”目标的情况,成本函数是**-(y * log§+(y-1)*(log(1-p))**,二阶导数(关于 x,用 p=1/(1+e^-x)是 p(1-p)。

查看图 3 和各种指标的定义,我们可以得出一些一般性的观察结果:

  • 权重覆盖增益对每个特征参与的分割数量敏感。虽然权重随着分割数量的增加而增加,从而有利于具有更多面元的特征,但是如果分割发生在树的深处,则覆盖增益随着分割数量的增加而减少,从而导致相反的效果。考虑使用“总增益”或“总覆盖”。
  • 在选择用于评估和可解释性的指标时,另一个考虑是在创建树时查看 XGBoost 优化器使用的指标。如果没有参数传递给优化器,那么 XGBoost 的默认选择是“gain”度量(1)。

排列重要性

另一种推断特征重要性的方法是看当特征不存在时分数是如何被影响的。确切地说,这个特性并没有被完全丢弃,因为我们需要它来构建模型,而是被“噪声”所取代。噪声是从与原始数据相同的分布中抽取的随机值。为了避免需要为特征产生新的值,通过混洗现有数据来引入噪声。

数据和工具

对于这一部分以及以后的部分(包括未来的帖子),我将使用来自 Kaggle 的更复杂和更高维度的数据集:“泰坦尼克号:机器从灾难中学习”。关于数据集的更多细节可以在这里找到。

eli5 包提供了与许多模型兼容的排列重要性包装器。我们将使用它。
:我们用于排列重要性计算的测试集是不是ka ggle 提供的测试集,而是从训练前的训练集分离出来的随机生成的测试集,因此有标签。

eli5 置换功能重要性函数的最基本用法如下所示。

使用这个函数,我连续五次置换测试集和训练集,收集输出并绘制它们:

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

图 4:根据训练集和测试集计算的排列特征重要性

y 轴显示了不同特征的权重,即导致置换该特定特征的得分的减少。值越高,影响越大,因此特性的重要性也越大。
不同颜色的条代表整个函数的单独运行,而误差条代表由排列产生的运行内标准偏差。

应该用训练集还是测试集?直观上,评分的评估应该在测试集上进行,因此特征重要性也是如此。具体来说,我们希望了解模型没有训练的样本上的特征的重要性,从而使用测试集。或者,出于调试目的,我们可能想要评估我们的模型。在这种情况下,我们希望了解它在多大程度上需要一个特定的特征来进行预测,然后使用训练集可能更有意义。
最后,也许
比较
训练集和测试集之间的排列重要性可以给我们最深刻的见解。特别是,训练集和测试集中的特征的顺序和重要性之间的不匹配可以揭示我们的模型中缺乏泛化能力。

在任何情况下,是否使用测试集、训练集或比较它们的决定应该基于我们的目标:我们想要评估我们的训练过程还是我们想要评估新数据上的特征的使用。

**应该如何处理方差?**内部方差(运行中的标准偏差)和交叉方差(图 4,不同颜色的条)都存在。这当然是由于算法中的随机性,以及当我们将排列等同于“丢弃特征”时,我们实际上是在使用现有的值,这可能导致所有不同的组合。特别是在小数据集,这甚至可以导致组合,甚至增加分数。当然,这种变化是有问题的,但是可以通过平均重复次数来稳定。

**如何处理特征依赖和关联?**这是该方法的一个主要问题(事实上,也是大多数被审查方法的主要问题)。相互依赖的特性的重要性只有在一起衡量时才有意义。考虑到它们的组合,它们将成为强有力的预测器,而它们中的每一个单独也不能解释输出。目前在库中没有一个选项来排列特征的组合。

此外,随机排列的相关特征可能会导致不太可能的组合,这些组合可能被认为是不符合分布的。这可能会产生偏差,导致表示“特征丢失”情况的错误值。

比较和对比

为了比较所讨论的方法,我们将查看排列部分中出现的相同的巨大数据。我们将比较所有特征的重要性排序(忽略实际值): XGBoost 特征重要性函数与测试集上的“总增益”度量和置换方法以及训练集上的置换方法。

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

上表显示了每种方法的特性重要性排序。根据该方法,排名#1 的特征是最重要的特征,而排名#9 的特征不太重要。
从表中可以很容易地看出,虽然在测试数据上计算的排列和在训练数据上计算的排列之间存在一些相似性,但是使用总增益方法与特征重要性的相关性很小。事实上,在所有三个模型的前三个特性中,只有一个特性是三者共有的:

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

有趣的是,但并不奇怪(如果你读了这篇博文的第一部分),特征重要性明显优先于连续/分类特征,如年龄或费用。请注意,即使我们使用一次性编码并将合成特征之间的得分相加也是如此(如果您使用诸如“增益”之类的平均重要性度量,则不能直接这样做)。

最后,为了与一种已知的局部方法进行比较,这种方法有更多的理论基础,我们还将与 SHAP 方法进行比较。关于局部预测的 SHAP 方法的更多解释,你可以在即将发布的《局部可解释性 系列文章中阅读。不过,在这里,我将对测试集中的所有实例使用 SHAP 方法,并对它们进行平均,以产生一个全局解释。

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

图 5:使用平均 SHAP 值的全局解释

在上图中,我们看到各种特性的平均绝对值 SHAP ,因为它们是在整个测试集上计算的。这里的一些更“重要”的特征在先前测试的全局方法中也排名较高(性别、年龄、费用),而其他特征(客舱、头衔)在全局方法中排名相对较低,但是当使用局部方法进行全局观察时,似乎具有更大的影响。总的来说,SHAP 方法似乎产生了一种其他两种方法的混合结果,对分类(标题)、连续(年龄)和二元(性别)特征都给出了较高的排名。我们将在以后的博客文章中讨论它的优点和局限性。

摘要

  • 我们讨论的这两种方法各有优缺点,但是虽然特征重要性方法只适用于基于树的模型,但是置换方法是模型不可知的,并且被广泛使用。
  • 置换方法可用于训练集或测试集(或两者)。这是一个重要的决定,它取决于解释的目标。比较特征对训练集的贡献和对测试集的贡献,一方面可以帮助理解模型的泛化,另一方面可以发现过度拟合。
  • 在置换方法中忽略特征依赖性和相关性意味着被评估的许多组合实际上是不可能的,但是用作比较模型性能下降的参考。
  • 也许这些方法最明显的限制(剧透:这些方法也将在以后的文章中介绍,将处理局部可解释性)是不能产生交互相关的解释。即使在我们超级简单的玩具数据中,两个特征(作为学生或收入群体)都不能单独解释这个结果。这是他们的组合(作为学生属于收入组 1)造成的结果,然而没有一种方法可以产生这种解释。

总的来说,虽然还没有方法被证明能够完整地回答“在我们的模型中,哪些是最重要的特征”这个问题,但是“重要”到底是什么意思还不是很清楚。重要性应该反映我们的模型在构建过程中最依赖的特征吗?或者是那些最有帮助的概括?或者,也许我们应该看看能够实现最佳平均精度的特性?
与此同时,似乎通过仔细检查我们的数据(依赖性、二进制对分类对连续特征)并牢记特定的意图,我们可以开始在这些方法之间导航。

参考资料:

  1. https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf
  2. https://christophm . github . io/interpretable-ml-book/
资源下载链接为: https://pan.quark.cn/s/f1ead55c4354 以下标题“H5页面模板源码,很不错的例子”暗示了我们讨论的主题是关于HTML5页面模板的源代码。HTML5是现代网页开发的核心技术,它提供了丰富的功能和元素,让开发者能够构建出更具交互性、动态性和响应式的网页。“很不错的例子”表明这些源码不仅具有实用性,还具备一定的教学意义,既可以作为项目开发的直接素材,也能供学习参考。 在描述“H5页面模板源码,非常酷炫的HTML5模板,可以直接使用,也可以参考学习”中,“非常酷炫”意味着这些模板可能融合了诸多高级特性,例如动画效果、媒体元素的运用以及响应式设计等,这些都是HTML5技术的优势所在。可以直接使用表明用户无需从零开始编写代码,能迅速搭建出吸引人的网页。同时,这些模板也适合学习,用户通过查看源代码可以了解特定设计和功能的实现方式,从而提升自身的HTML5开发能力。 标签“H5 手机网页 H5源代码 手机html”进一步明确了主题。“H5”是HTML5的简称,“手机网页”和“手机html”则强调这些模板是针对移动设备优化的。在如今移动优先的时代,适应各种屏幕尺寸和触摸操作的网页设计极为重要。这表明这些源码很可能是响应式的,能够根据设备自动调整布局,以适配手机、平板电脑等多种设备。 从“压缩包文件的文件名称列表”来看,虽然无法直接从文件名得知具体源码内容,但可以推测这些文件可能包含多种HTML5模板示例。“不错的样子.txt”可能是一个介绍或说明文件,对模板进行简要描述或提供使用指南。而“1-30”这样的命名方式可能意味着有30个不同的模板实例,每个模板对应一个独立文件,涵盖多种设计风格和功能,为学习和实践提供了全面的平台。 总的来说,这个资源集合为HTML5开发者或初学者提供了一套实用且酷炫的移动网页模板源代码。这些模板既可以直接应用于项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值