TowardsDataScience 博客中文翻译 2019(五百六十)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

为什么资产组合管理中期望收益最大化在实践中失败了

原文:https://towardsdatascience.com/why-maximising-expected-return-in-asset-portfolio-management-fails-in-practice-with-imperfect-978ba964b0c?source=collection_archive---------26-----------------------

使用模拟快速解释为什么在使用估计数据建模时,优先考虑低风险在现实中更有效

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

High return or low risk: which should we choose? (Photo: Clipartkey / Baekhyun)

在投资组合管理中,给定各种各样的资产,每种资产都有自己的预期回报率和方差,我们想要决定我们应该在每种资产上投资多少(从而决定一个决策组合),以便实现某个结果。这个结果通常包括优化(最大化或最小化)某个值。

直觉和几乎自然地,我们希望最大化我们投资回报的预期价值。同样,如果回报不如我们预期的那样丰厚,我们也希望将我们在回报差异方面承担的风险最小化。

但是,这两个选项哪个更好呢?你应该最大化你的预期收益还是最小化它的可变性?

如果你只有不精确值或估计值 来模拟资产回报行为,这两个选项哪个更好?

现在,在试图回答这个问题之前,我们首先需要了解如何选择和识别给定不同风险回报偏好的最佳投资组合。

来自《走向数据科学》编辑的提示: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

马科维茨模型

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

Harry Markowitz | Fun fact: The Nobel Memorial Prize in Economic Sciences was not established by Alfred Nobel. (Photo: ORTEC)

经济学家哈里·马科维兹(Harry Markowitz)开发的马科维兹模型(他因此获得了诺贝尔经济学奖)的原理是,理性投资者会:

  1. 给定两个风险相等的投资组合,他/她会选择回报较高的一个,并且
  2. 给定两个回报相等的投资组合,他/她会选择风险较低的一个。

因此,与其在收益最大化或方差最小化之间进行选择,我们可以将两者结合起来,寻求最小化这个等式:

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

The first term in the objective function represents the expected return while the second term its variance.

其中, x 是一个向量,代表你应该投资于每项资产的资金比例(从 1 中选择)。Lambda 作为一个权重来改变两个因素(预期回报和方差)对目标的贡献,而第一个约束确保投资于每项资产的资金比例总和为 1。

给定一组输入参数(将真实资产回报建模为正态分布),如下所示,然后我们可以针对不同的 lambda 值求解最优的 x* 向量。

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

Input parameters that model the monthly returns of 5 different investment assets. Mu refers to the mean, sigma refers to the standard deviation, while rho refers to the correlation matrix between the asset returns.

由于每个 x* 代表每个风险回报偏好水平的最佳投资组合(我们通过改变λ来改变),我们能够使用以下公式计算每个风险回报偏好水平的预期回报和标准偏差值:

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

Note how we are calculating these values using the optimal value x*

这些单个的价值然后被绘制在一个图表上,产生了一个被称为“ 真实有效边界 ”的图表,它代表了我们在不同风险回报水平下可以拥有的最佳投资组合。

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

As expected, the greater the risk you take, the greater your expected return gets.

从上面的图表中,我们似乎可以非常准确地确定我们愿意接受的每个标准差(或风险)的预期收益。

然而,请记住,到目前为止,我们只是假设我们有关于每个资产回报如何表现的完美信息。如果我们对这种行为毫无头绪,会发生什么事情呢?事实上,情况几乎总是如此。

然后我们必须估计他们的模型参数。

不完全信息

在现实场景中,即使我们可能没有任何关于真实模型参数的信息,我们所拥有的是关于月度回报的历史数据(例如,n = 24 个月)。为了模拟这些可用的数据,我们必须从我们之前指定的“真实”模型参数中生成随机月度回报。

由于真实的模型参数是看不见的,并且应该是未知的,我们只能通过使用下面指定的估计器来估计真实的模型参数,其中 r 是指我们已经生成的月度回报(或历史数据):

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

Each line gives the estimated mean, estimated variance and estimated correlation coefficient respectively

然后,我们可以尝试解决之前定义的最小化问题,以获得最佳决策向量*x *’—*它用撇号(’)表示,表示它是使用 估计 参数而不是真实参数计算的。

由于我们想要预测可用的最佳投资组合(也称为前沿),我们将使用估计的模型参数值来计算(估计的)平均回报和标准差:

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

Note how the estimated mean and covariance is used instead of their actual values.

鉴于我们已经使用了估计的模型参数来“预测”平均回报和标准差,我们将把生成的前沿面称为“”。

然而,这里有一个问题——不管我们如何确定我们的投资组合,我们将 实际 赚取的回报最终将取决于 真实 模型参数,而不是 估计的 参数。

因此,我们需要根据之前获得的 x (s)以及真实模型参数,计算另一组平均回报和标准偏差值:*

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

因为这代表了我们基于优化的决策向量 x 得到的 实际 结果,所以我们称之为“ 实际边界 ”。换句话说,这个边界代表了我们基于(不完美的)决策所期望看到的实际结果。*

那么不同的前沿相比如何呢?他们彼此有很大的不同吗?我们去看看。

严重的误判

在下图中,我们有以下三个边界:

  • 真实边界—代表基于使用完美模型参数确定的最佳投资组合的实际投资组合回报和标准差
  • 平均估计边界-表示基于使用估计模型参数确定的最优投资组合的估计投资组合回报和标准差
  • 平均实际前沿——代表基于使用估计模型参数确定的最优投资组合的实际投资组合回报和标准差

后两个前沿中的“平均”是指每组 24 个模拟月度“历史数据”的 1000 次模拟运行的平均。

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

Looking at the actual and estimated frontiers alone, we can see that there is always a systematic overestimation of mean return and a systematic underestimation of standard deviation

初看起来,这三条曲线根本没有相互重叠;估计边界位于真实边界之上,真实边界位于实际边界之上。

这有什么意义?这意味着,只有月收益估计参数的投资者将总是得到比他/她拥有的平均收益以及 真实 平均收益实际 平均收益,即使他/她从一开始就拥有完美的信息。标准差的情况正好相反。**

更有趣的是,与平均回报率高时相比,当标准差低时,曲线彼此更接近。这表明,以高平均回报率为目标所遇到的估计误差,比我们以低标准差为目标时看到的误差要大得多。

换句话说,在只有不完全信息的情况下,优先考虑最小化风险(或标准差)比最大化回报更可取,这样才不会高估你的投资组合的表现。

知识就是力量,只要它是现实的

一个自然的后续问题是,如果历史数据量增加(例如 n = 360 或 n = 1800),上述估计误差是否会减少。简单直观的答案是肯定的,模拟显示。

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

The curves seem to be converging in general, with the left ends packed more closely than those on the right

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

The curves get even more closely packed here, so all seems well when we get more data to make better estimates but…

我们需要多少数据?360 或 1800 个月有多长?那可是 30 年 150 年啊!得到这样的数据甚至现实吗?即使是这样,我们又怎么知道月度回报分布背后的基本面没有改变呢?也许在若干年后,这些数据甚至不再那么相关了。我们可能需要另一种方式来解决这个问题,但这完全是另一回事…

现在怎么办?

因此,正如你所看到的,如果你不想严重高估你的收入,特别是当你使用估计的模型参数时,只最大化预期收益可能是个坏主意。相反,依靠最小化方差将获得更可预测和一致的结果。

幸运的是,多年来人们已经开发出了其他的工具和方法来解决我刚刚展示给你们的问题。机器学习也进入了资产管理领域,你可能会有兴趣看看迄今为止它是如何改变事情的。

我希望您觉得这个演练很容易理解—您可以自己编写一些简单的代码来模拟它(我是在 MATLAB 上完成的)—并且您喜欢这篇文章。感谢阅读!

参考

马克·布罗迪。使用估计参数计算有效前沿。运筹学年鉴:金融工程特刊,第 45 卷,第 21–58 页。

为什么测量精度很难(也很重要!)第二部分

原文:https://towardsdatascience.com/why-measuring-accuracy-is-hard-and-important-part-2-the-common-problems-in-measuring-accuracy-cc26a977823e?source=collection_archive---------25-----------------------

测量精度中的常见问题

介绍

本文是我撰写的关于测量精度挑战的 4 篇文章系列的第 2 篇。如果你还没有阅读第一篇文章,请点击这里查看:https://www . electric brain . io/blog/why-measuring-accuracy-is-hard-and-very-important-part-1

在本文中,我们将讨论在测量精度方面出现的主要挑战。我们将尽可能用例子和图表来说明。

您的训练数据通常与真实世界的数据不同

使测量准确性变得困难的最常见的事情是,有时我们使用的训练集与算法预期处理的真实世界数据不同。出现这种情况可能有许多不同的原因:

  • 您在合成或增强数据方面的培训
  • 您的数据集是一个有偏见的小样本,不能代表算法需要操作的真实世界数据
  • 您的数据集是使用与真实世界数据不同的流程收集的,例如,您通过搜索 google 为问题数据集收集潜在问题,但实际问题是通过您的网站输入的,可能会有所不同
  • 您可能无法访问真实世界的数据,例如,这是一个发布前的新产品,或者该产品的部署方式使您无法将任何数据发送回总部
  • 您的算法可能必须运行在客户数据集上,而不是您自己控制的数据集上
  • 真实世界的数据可能是一个不断发展的移动目标,例如股票市场

我最近在几个不同的项目中遇到了这个问题,其中最突出的是一家聊天机器人公司。这是一个虚构的例子,但是来自我在公司工作的真实经历。

想象我们正在为呼叫中心开发一个聊天机器人产品。在我们获得第一笔销售之前,我们需要证明产品是有效的。为了让产品发挥作用,我们需要数据。我们需要的数据只是提问的不同方式,例如,你想检查订单状态的不同方式,或者在餐馆订购披萨的不同方式。我们用我们唯一知道的方法收集数据——关于机械土耳其人。然而,通过直接要求人们想出订购比萨饼的不同方法,我们确实得到了一些变化,但我们开始得到许多重复的内容,如:

  • 能给我一份披萨吗
  • 我能要一份披萨吗,先生
  • 我能要份披萨吗先生先生
  • 我能吃个披萨吗,兰斯洛特先生
  • 我能要个披萨吗,兰斯洛特夫人
  • 我能要一份披萨吗,兰斯洛特夫人
  • 能给我一份披萨吗
  • 我能要一份披萨吗
  • 能给我一份披萨饼吗

他们确实想出了很多不同的例子,成百上千个。事实上,这些都是有效的句子,应该可以触发我们的聊天机器人去订披萨。但是这里没有太多的变化——不是我们想要的那种变化。这并不代表真实世界的数据。

最终,我们求助于制定规则,比如最小句子长度、句子在整个数据集中的唯一性要求、与他们输入的其他样本的最小差异等…这些东西确实有助于我们获得更多的多样性。然而,我们担心数据集仍然不能真正代表真实世界的数据:

  • 你好,先生或女士,你能允许我在你的好地方吃披萨吗
  • 你好很好先生,你能允许我在这个神奇的餐厅吃一个美味油腻的披萨吗
  • 嘿,请允许我从你们漂亮的餐馆给我一个比萨饼

我们最终拼凑了一个我们喜欢的数据集,并取得了+90%的准确率。似乎是个不错的结果。

然后我们把这个带给客户,给他们看。但机器人最多只能在演示中工作 70%的时间,经常摔倒并误解看似简单的命令。算法运行的数据集,真实世界的数据,与算法训练的数据集完全不同。我们技术上勾选了所有方框的数据集:

  1. 它很大——我们有数以千计的每个意图的例子
  2. 它包含了多样性——这些例子在与概括相关的方面是不同的
  3. 这是有效的,例如,这些句子确实是我们想要触发机器人订购比萨饼的句子
  4. 它没有不正确或无效的条目

然而,关键问题在于第二点的细微差别。尽管数据集包含多样性,但它并不像真实世界的数据那样包含同样的多样性。尽管我们有许多不同的订购披萨的方式,但我们没有真人向我们的机器人订购披萨的具体方式。

你会非常惊讶,我们经常被期望在一种类型的数据上建立模型,并在不同类型的数据上执行它们。它之所以有效,是因为机器学习对今天的算法来说非常棒,非常强大。他们能够找到一般模式,然后将这些模式转移到新的环境中。但它提出了一个新问题,即在这些新环境中测量系统的准确性。

你比其他人更关心某些失败案例

通常情况下,你的机器学习算法可能在不同方面都是错误的。随着算法变得越来越复杂和强大,并被用于更多的事情,其行为的具体细节变得更加重要。

在某些情况下,有一整套算法协同工作来创建一个完整的系统——预处理、增强、多种机器学习算法、后处理、过滤、阈值处理、验证——人工智能系统有许多组件使其工作。每一步可接受的错误和正确答案的形式是不同的,这使得测量和改进整个系统成为一项复杂的任务。

在其他情况下,即使算法的最终输出也必须呈现特定的形状和形式,很难减少到一个数字。在自动驾驶汽车中,我们关心车辆在边缘情况下的性能——恶劣的天气、其他司机驾驶不当等…从许多 YouTube 视频中可以很清楚地看到,自动驾驶汽车在典型情况下可以很好地工作。

我可以找出你比其他人更关心某些失败案例的各种原因:

  • 某些类型的错误检测可以通过处理管道的后续部分排除,但失败的检测无法恢复。因此,你更关心捕捉所有的真阳性,而不是减少假阳性。
  • 也许你更关心边缘情况下的算法性能,例如恶劣天气条件下的自动驾驶汽车
  • 当算法对其预测没有信心时,也许有可能进行人工干预
  • 也许如果这个算法被用于一个警告系统,当有真正的危险时,发出警告并有一些误报比不发出警告要好
  • 也许你的算法在某些重要的数据子集上表现极差
  • 也许某些类型的故障会让你的用户非常恼火,而其他类型的故障很容易被掩盖

这些类型的问题通常通过提出替代的度量标准来解决。有时我们会使用混淆矩阵,比如这个,来帮助我们理解正在发生的事情:

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

其他时候,我们可能会使用替代指标,如精确度和召回率、https://en.wikipedia.org/wiki/Precision_and_recall,它们分别忽略了假阴性和假阳性,而原始精确度则考虑了所有类型的错误。

我认为这种现象的另一个有趣的表现是机器学习算法中的歧视性偏见问题。例如,这包括面部识别算法对白人和亚洲人比对其他种族的人更有效的问题。这里的问题是,在数据集的未标记子集上,您的算法表现不佳。当一个人在制作面部识别算法时,你可能只会收到一个巨大的图像数据集,而没有任何关于谁是哪个种族和性别的数据。比方说,如果你是一名收到匿名数据集的脸书研究人员,这种情况就可能发生。如果这个数据集来自脸书的美国数据集,那么发现它主要包含白种人的图像就不足为奇了。你训练算法,并声称其 95%准确。但是算法 5%的失败都是谁呢?对于您的匿名数据集,您无法真正知道-唯一的解决方案是手工检查。你对准确性的简单衡量没有抓住算法的重要社会政治属性。

模型、数据集或测量值有噪声

另一个妨碍测量精度的大问题是存在噪声,包括模型固有的噪声、数据集中的噪声和我们测量精度的噪声。

拆分数据

基本的困难可能出现在任何模型中。请考虑以下情况。您有一个数据集,并且您希望衡量您训练的算法的准确性,以了解它概括数据集属性的能力。你做一个明智的数据科学家做的事情,将你的数据分成三部分——培训、测试和验证:

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

但是现在你面临着这个问题——你应该把哪些项目归入哪个组?如果我使用这种分割方式会怎么样:

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

最简单的方法可能是随机打乱你的数据集,然后分成三份。但是当您训练您的模型时,您会发现每次这样做,您都会得到不同的结果,即使您的模型没有变化:

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

沮丧的是,你可能会认为这是因为数据集从一次运行到下一次运行非常不平衡。也许您可以决定使用数据集中的标签来构建训练集、测试集和验证集,其中每个目标标签的数量都是偶数。通过每个标签有效地将数据集划分为一系列子数据集,随机地将这些数据集分成 3 份,然后将它们重新组合在一起。现在你的数据集是类平衡的,但仍然是随机的。现在您已经降低了噪音,但是仍然存在问题:

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

您已经减小了扩散,但是在您的测量中仍然有噪声。您发现,对于每个标签,数据集中实际上有更难和更容易的样本,这些样本仍在不断变化。但是你能做什么呢?

您可能会决定使用交叉折叠方法,也就是说,取数据集内所有 5 个可能的 80/20 分割的平均值。这确保了每个样本在测试集中至少出现一次。但这种方法对于许多深度学习模型来说可能是昂贵的,在这些模型中,GPU 能力匮乏,并且您渴望运行尽可能多的实验。也许您只是锁定了一个固定的测试和培训集,并且只针对它进行度量。但是在动态的真实世界环境中,这可能很困难,因为我们的数据集在不断发展,变得越来越大,实际上要求我们维护一个将条目标记为训练、测试或验证的数据库。

维持良好、稳定、一致、无噪声的模型精度测量所需的额外基础设施可能会快速增长,具体取决于您希望降低噪声的程度。

数据集中的噪音

我见过的另一个大问题来源是嘈杂的数据集。嘈杂和充满错误的数据集是我生存的祸根。与第三方数据外包公司打过交道后,我亲眼目睹了获得高质量、干净标签的数据有多么困难。

这个问题是这项任务固有的——标记数据很糟糕。无论我们开发了多少花哨的工具来帮助贴标签,它仍然是一个平凡的数据输入任务。它天生容易出错。

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

人们采取了许多措施试图解决这个问题:

  • 也许我们把这个过程游戏化,试图鼓励用户“玩得开心”,同时提供标签化的数据。
  • 当人工智能提出“建议”时,我们也许能够让我们的用户为我们提供标记数据,作为他们工作的一部分,然后他们可以纠正和修改这些“建议”。由于工作对用户的价值,用户已经被鼓励要小心谨慎
  • 我们可能会使用双重验证(将相同的项目发送给多人以达成共识),或者由经理进行随机抽样和验证等技术
  • 一些人甚至使用人工智能分析技术,试图识别数据集中的异常值

然而,无论我们如何做,我们正在处理的数据集通常是有噪声的。

在机器学习方面,只要数据集不是太嘈杂,我们仍然可以经常教会算法学习模式。尽管有很多噪音,深度学习仍然特别擅长概括。但是在测量和验证方面,数据集中的噪声给我们带来了一些固有的问题

  • 我们不知道我们的准确性度量是否提高了,因为我们对一些标签不好的样本进行了过度拟合,或者模型是否成功地进行了推广。这意味着需要更大幅度地提高精确度来确认改进
  • 即使我们的模型已经完美地概括了数据,也没有办法达到完美的准确性。最好的可能精度是一些不可知的,不可测量的数字。如果你的数据集真的很吵(+10%),当你坐在 89.7%时,这可能会让你真的旋转你的轮胎,试图找出更多的方法来改善你的模型。你的模型实际上可能对真实世界的数据是 100%准确的,你没有办法知道它。

数据集中的一致错误

可能比数据集中的噪声或随机错误更糟糕的是注记团队所犯的一致性错误。如果以一致的方式出现错误,那么机器学习算法可以尝试学习这些错误模式,作为其整体学习的一部分。

在几个现实世界的项目中,我都被这种情况困扰过。在我们最近与一家大型加拿大银行执行的一个项目中,我们得到了由第三方注释的提供的数据。我们没有进行足够的监督和测试。我们收到的样本很好,但我们未能检查完整的数据集。我们继续训练我们的模型,最终达到了非常高的精确度。但当向客户展示算法时,他们很快指出最终结果似乎充满了错误。当深入研究时,我们意识到,不仅数据集的大部分被错误地注释了,它还一直以同样的方式被错误地注释。

因此,我们仍然有可能通过我们可用的每一个测量来实现高度的准确性,并且模型仍然是错误的。这个模型确实学习了模式,它精确地学习了注释数据集的人所犯的错误模式。很明显,我们不能只检查过程中通过电子邮件发送给我们的“提供的样品”,因为这些样品可能已经由正确理解要求的经理准备和审查过了。我们需要分析和验证最终的样本,这些样本是由该公司的各种低收入数据输入人员汇总而成的,这些人可能会也可能不会收到足够的指示来正确地注释数据。

在我看来,这是做真实世界 AI 项目最难和最令人沮丧的方面之一。使用经过验证的测量准确度的技术,你可以有很高的准确度,但最终仍然是错误的。

您的管道中有多个指标

测量精度时有时会出现的另一个问题是变得太多而无法测量。您可能有十几个不同的度量标准来代表您系统的不同阶段。

这个问题是我最近在构建文本提取引擎时遇到的。该模型将一个单词及其周围的上下文作为输入,并为该单词生成一个分类。

然而,我们的管道包括两个阶段。第一个机器学习算法只是在 null 或 extract 之间做决定,第二个阶段做最后的分类。在实践中,我们降落在一个四层系统,但 2 层系统将足以解释。设置如下所示:

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

所以现在我们有两种不同的机器学习算法,有两种独立的精度测量。我们还有几种不同的失败案例:

  • #1 处的误报(在应为空时提取)
  • #1 处的假阴性(当它应该被提取时为空)
  • #2 处的误报(一个应该为空的类别)
  • 第二个错误的否定(当它应该是一个类别时为空)

此外,我们有额外的复杂性,我们的第二阶段算法能够部分补偿第一阶段的误差。例如,在第一阶段的假阳性可能在第二阶段仍然被正确预测为空,并且仍然导致正确的最终输出。因此,这两个阶段的精度测量可能会以复杂的非线性方式相互影响。层#1 中的假阳性的更差的准确性不一定导致最终输出中的更低的准确性。

事实上,层#1 上更差的精度可能意味着正好相反。为了让这种方法有效并产生更好的最终准确性,我们不得不将第 1 层向更多的假阳性倾斜。默认情况下,它会产生更多的假阴性,然后假阳性,与单层系统相比,降低了准确性。但是将层#1 向更多的假阳性倾斜(降低其准确性),意味着它只过滤掉它高度确信实际上是空值(真阴性)的条目,而其他一切都可以传递到层#2 进行最终分类。这提高了模型的最终精度。因此,以那种特定的方式伤害第 1 层会使整个模型更加精确。过滤层(层#1)帮助模型处理输出中不平衡的类和高度的空值,但只有在以正确的方式测量和使用时。

就其本身而言,拥有多个处理阶段,甚至在这些不同的处理阶段进行多次精度测量并没有什么错。然而,太多的好事会产生新的问题:

  • 当你的一些指标提高了,而另一些变得更差时,这就造成了混乱。实际发生了什么?
  • 很难向涉众传达他们对模型的期望
  • 很难理解模型的最终行为是什么

根据我们的经验,当你处于这种情况时,只有一个解决方案:*将所有的研发&集中在提高你的端到端或最终结果指标上,也就是说,从系统处理的最后阶段退出的准确性。*我们并不是说您不应该测量中间精度——它们对于理解各种处理阶段如何相互作用以及想出可行的方法非常有用。但是当谈到衡量一个改进是否真的是一个改进时,只有最终结果的准确性才是重要的。

您有多个具有多种粒度级别的指标

这个问题类似于您的管道中的多个度量的问题,但是它由于不同的原因而表现出来。让我们考虑一下从收据中提取数据的问题,我在这里最突出地看到了这个问题。基本问题是获取收据的图像并将其转换为完全结构化的数据:

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

所涉及的过程是:

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

如果您注意的话,您会注意到这个设置在整个管道中也有多个指标。OCR 引擎、逐字母分类和后处理都可能出错,并可能在每个阶段产生不同的准确度测量值。根据他们之前的输入是否被认为是准确的,他们也有不同的测量,例如,我们可以在假设 OCR 准确性是完美的情况下逐个字母地测量准确性(通过输入真实的 OCR 数据),并且我们可以在原始 OCR 输出上逐个字母地测量准确性,包括错误。

然而,我想集中讨论另一个扳手,它被扔在系统的中间部分,即逐字母分类的准确度测量中。

测量准确度最明显的方法似乎是从字面上测量正确的字母分类的数量:

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

但这种方法的问题是,大部分字符都要被归类为“空”,或者不提取。在这个标准下,我们相对容易达到 97%和 98%的准确率。但是我们很快发现,那些被认为是 2%或 3%的错误非常重要。

我们分析的许多收据不是星巴克的空头收据,而是像这样的庞然大物:

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

在这些收据中,几乎 95%的字符被归类为空。然而,剩下的 5%的角色是我们关心的。根据我们的传统度量,即使我们的模型除了预测空值之外什么也不做,这些收据也能获得 95%的准确率。从一个收据到下一个收据,测量自然是不稳定的,并且没有给我们足够的洞察力来了解实际发生了什么。

因此,这个问题催生了各种替代的精度测量方法,旨在让我们更深入地了解系统的行为以及它所犯的错误类型:

  • 单词级别的准确性—没有错误的单词的百分比
  • 线级准确性—无错误线的百分比
  • 章节级准确性——无错误的章节百分比(收据分为标题、项目、税收、总计、页脚)
  • 收款级别准确性—无错误的全部收款的百分比

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

发现我们的模型的字符级准确率为 98%,收据级准确率为 67%,这是非常深刻的。收据至少有 200 个字符,所以我们预计在字符级别上每张收据平均有 4 个错误。您可能会认为,收据级别的准确性应该是 0%,因为平均而言,收据应该至少有 4 个字符级别的错误,根据收据级别指标,这是一个错误。但是我们的大部分收据都很顺利,完美地分类了每个角色。其他收据完全是乱七八糟的,有多达 20%到 30%的错误分类。

如果可能的话,拥有不同粒度级别的度量标准有助于理解您的模型是如何失败的。但是它们也会给你的测量增加混乱和噪音,当一些指标改善而另一些变得更差时,你会原地打转。更多关于在这种情况下该怎么做的内容将在第 4 篇文章中介绍。

你只有系统中间步骤的基础数据

这个问题出人意料地经常出现,事实上它也在上面的收据示例中出现过。你有一个机器学习系统,你已经标注了需要进行的学习中最重要和最困难的部分。但是你的算法在得到最终结果之前需要进行某种后处理。这种后处理是基于一些简单的试探法和假设,这些试探法和假设是针对您所遇到的问题的。

这种启发的一个突出而简单的例子是当我在电子表格上提取数据时。电子表格中的每个单元格都必须归入几个类别中的一个。然后,这些单元将被组合成一组输出。设置大致如下:

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

该系统需要能够处理各种不同格式的电子表格,这些表格是由不同的人手工准备的,可以任意决定格式和结构。

构建这个系统的一个合理的方法是对所有的细胞进行分类,就像这样:

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

然后创建一些预测特征,并训练一个算法来预测每个单元的分类。但是为了得到最终的结果,你必须做一个更重要的处理步骤——你必须将细胞组合在一起。在我们的例子中,方法看起来很明显:同一行上的任何单元格都应该被分组到同一个输出中。99%的电子表格的本质是人们每行有一个条目。

然后,您可能会认为只有分类像元作为基本事实数据是安全的,并且您的算法的最终输出实际上没有基本事实数据。你优化你的模型,测量你的准确度,得到 99%。万岁!但是等等,有个问题。在您的数据集中,有一些看起来像这样的电子表格(是的,这确实发生在我身上):

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

现在很明显,只在细胞水平上拥有基本事实数据是一种责任。我们的后处理中的一个关键假设,即每行只有一个输出,已经被违反。我们从我们的系统测量的准确度是极好的。我们的代码按照设计完美运行,并且我们所有的单元测试都通过了。但是系统作为一个整体仍然在产生无效的结果,我们最初并不知道,因为我们只有系统中间步骤的基础数据,而不是最终结果。

这个问题可以在任何情况下表现出来,在你的机器学习算法完成后,你有额外的后处理步骤,但没有任何方法来衡量最终输出的准确性。虽然这个例子简单易懂,但在机器学习算法输出和最终结果之间的阶段,可能会出现更加复杂和微妙的情况。永远不要浪费时间和金钱去获取真实的数据来衡量准确性,否则你会被烧伤。

结论

测量精度很难。机器学习系统的许多最好的方面,比如它们归纳出新的、从未见过的例子的能力,也给我们带来了巨大的头痛。测量精度的许多问题源于机器学习的有益特性:

  • 训练数据不同于真实世界数据的问题,直接来自于好的机器学习模型能够进行概括的能力,所以我们一直在推动我们希望它们能够做到的极限
  • 关心不同故障案例的问题直接来自于这样一个事实,即我们的模型能够在复杂的环境中以智能行为运行,因此我们对它们的期望变得越来越细微和具体
  • 测量中的噪声问题直接来自于我们的模型是不精确的和近似的,但这也是允许它们一般化的原因
  • 多管道度量的问题来自机器学习算法的可预测的成功行为,允许我们将它们连接到日益复杂的序列和管道中
  • 粒度的多种度量的问题来自于我们的模型对复杂的、高度多维的问题进行操作的能力
  • 只有中间步骤的基础事实的问题,来自于机器学习应用于特定的、孤立的问题,然后被拼凑成更大的、更传统的计算系统的灵活性。

衡量准确性很难,很大程度上是因为机器学习算法非常擅长它们的工作——智能。我们很少谈论衡量人们的准确性,因为我们承认很难预先定义什么是正确的行为。机器学习模型将越来越多地受到同样的限制——准确性将变得更加模糊,更加难以衡量。我们越来越多地将机器学习应用于精确度难以定义的环境,更不用说测量了——想想为创作音乐而设计的算法。你如何衡量这方面的准确性?但是,我们现在已经创造出了能够很好地产生令人愉快的音乐的算法。

在这一系列博客文章的第 3 部分中,我将讨论一些更有趣、更微妙的测量准确性的问题。如果没有现成的标准来衡量您的问题的准确性,您会怎么做?当你无法衡量自己真正在乎的结果时,你会怎么做?如果你没有任何地面真实数据怎么办?如果你甚至不能在你的问题的上下文中定义什么是准确性呢?

在这一系列博客文章的第 4 部分中,我将尝试提出一个更好地度量准确性的框架——如何度量、何时度量以及度量什么。最重要的是,我将说明如何测量精度取决于你想用这个精度值做什么。无论是为了提前停止还是阈值校准,为了模型参数的贝叶斯优化,为了对模型进行迭代改进,为了了解模型的故障情况,为了向经理传达绩效,或者为了向客户传达绩效,对于不同的情况有不同的测量方法。没有放之四海而皆准的解决方案。

原载于www . electric brain . io

为什么测量精度很难(也很重要!)第三部分。

原文:https://towardsdatascience.com/why-measuring-accuracy-is-hard-and-important-part-3-the-hard-problems-in-measuring-accuracy-74c7249e7308?source=collection_archive---------26-----------------------

测量精度中的难题。

这是讨论测量精度主题的系列文章的第三篇。

在本系列的第 1 部分中,我们讨论了正确测量精度非常重要的原因。点击这里查看:https://www . electric brain . io/blog/why-measuring-accuracy-is-hard-and-very-important-part-1快速 TLDR:测量准确度很重要,有两个主要原因。首先,它让我们可以让我们的模型变得更好——并且知道它们目前有多好。第二,它允许我们与利益相关者交流他们对模型的期望。

在本系列的第 2 部分中,我们讨论了影响测量精度的最常见和最典型的问题。如果你还没有读过,请点击这里查看:https://www . electric brain . io/blog/-why-measuring-accuracy-is-hard-and-important-part-2快速 TLDR:有一大堆事情阻碍了测量准确度,从我们希望我们的模型如何表现的复杂预期,到它预期操作的数据的复杂性质,再到我们必须将多种算法拼凑在一起以形成一个完整系统的复杂方式。

在这篇文章中,即本系列的第 3 部分,我将讨论在尝试度量模型的准确性时出现的更不寻常、有趣和困难的场景。

您的模型可能没有任何实际数据

一般来说,这可能是机器学习中最难处理的场景。你可能会问,没有任何地面真实数据,你怎么可能训练一个机器学习算法?难道用于训练算法的数据不能用于地面实况吗?

如果你仔细想想,有很多情况下,我们在没有实际数据的情况下应用机器学习:

  • 当执行多种类型的无监督学习时,例如聚类或推荐引擎。对于什么集群或什么建议是正确的,没有正确的答案,只有各种更好或更差的衡量标准
  • 当我们从头开始构建新产品时,使用合成数据来引导系统,但在发布后基于真实世界的数据构建数据集。对于算法所应用的数据来说,合成数据不是真实的地面事实。
  • 在许多数据科学流程中,例如排列两个不同的噪声数据集,例如基于公司和品牌名称匹配两个不同的数据库。对于两个数据集之间的正确比对,我们可能没有任何基本事实。建立一些基本事实也许是可能的,但是过于昂贵或耗时,以至于组织觉得不值得。在这种情况下,模型的要点是避免手动排列条目
  • 我们可能正在从系统的中间步骤训练我们的机器学习算法,但输出然后经过一系列后处理算法,将它转化为最终结果。我们不知道最终结果。
  • 当进行强化学习时,比如在模拟环境中训练机器人人工智能,然后试图将这些知识转移到真正的机器人身上。
  • 我们可能会大量使用迁移学习来构建我们的产品
  • 我们正在建立一个不涉及机器学习的管道,例如,使用传统的计算机视觉技术来建立一个人跟踪算法。在你的环境中,标记任何大量的数据可能太昂贵,或者当你的 R&D 预算更大时你会做的事情。现在,你只需要一个看起来可以工作的原型。

你在机器学习上工作得越多,你就越会在没有你需要解决的问题的真实基础的环境中工作,或者至少它是如此之少以至于几乎没有用处。

可能没有现成的度量标准来有效地衡量您的模型的准确性

当你在人工智能和数据科学领域做真正开创性的工作时,你可能会遇到不太清楚如何衡量模型性能的情况。这并不是说性能不可测量,而是可能有多种看似同样有效的方法来测量性能,但对结果却有不同的说法。可能有隐藏在研究和文献中的模糊的度量和测量,或者甚至一些你不熟悉的更常见的度量。

我发现这种情况出现在一些不同的环境中:

  • 你正在将一种最近建立的机器学习方法带入一个全新的领域:例如,生成-对抗-网络,图像生成 GAN 通常由一种称为初始分数的东西来衡量,它使用标准的分类类型图像网络来检查它们的行为,并结合熵的度量来得出分数。现在,如果你将甘的应用于建筑、3d 模型或音乐的蓝图,可能没有现成的分类模型可以用来形成类似盗梦空间的乐谱
  • 你的产品可能有一种独特的输出/行为形式,这种形式是新颖的,在研究社区中并没有真正建立起来。例如将夜间图像变成白天图像的神经网络。你是如何衡量的?
  • 你可能不是你工作的特定领域的专家。可能确实存在一些度量标准,但是如果没有这个狭窄研究领域的深厚专业知识,你永远不会知道它们
  • 您的机器学习类型的常用指标可能有与您的算法相关的特定弱点,这意味着它将对与您相关的重要失败案例给予较低的权重

我会告诉你这是我最近想到的,我觉得有必要真正设计一个指标。我在开发一个分析简历的系统。该系统的基本前提如下:

  1. 用户上传 1000 份简历
  2. 用户浏览 20-30 份简历,给每个候选人一个“喜欢,也许,不喜欢”
  3. 该算法根据你教给它的喜欢/不喜欢的偏好,对其他 970 份简历进行排序和排名

构建和测量这个系统面临几个挑战。首先是构建适当的测试用例,我们可以用它来精确地测量系统的结果。第二是挑选什么样的度量标准和形式有意义。第三是提高成绩。

我们构建测试用例的方式是创建一组算法应该找到的“目标”简历。然后,我们会为每份目标简历添加 25-50 份“负面”简历。底片是从整个数据集中随机抽取的。然后,我们会像任何筛选一样检查测试案例,审查 20-30 份简历,其中只有几个目标是喜欢的,并查看系统如何对剩余的简历进行排名。

由于不熟悉信息检索研究,我真的不知道这里应该使用什么度量标准。一个衡量标准可能存在,但我不想深究并找出答案。另外,这个系统是基于喜欢/不喜欢,而不是关键字匹配,更像是一个推荐系统。在我的脑海中,有一些最初的想法:

  • 在较大的简历排序中,目标简历的平均“排名顺序”。较低的排名意味着更接近顶端,这正是我们想要的。它有一个很大的问题——它根据目标与否定的比率以及目标的总数而变化。
  • 人们可以做到以上所述,但是将等级顺序标准化在 0 和 1 之间。这个度量是一个改进,但是如果目标与负面的比率发生变化,它仍然会受到阻碍,这在真实环境中是肯定会发生的。它也没有明确的最佳值——多个目标的平均排名永远不会是 0,因为它们也是相互排名的
  • 相反,我们可以衡量为了让所有目标排名靠前,你需要浏览的简历的最少数量。这将直接从用户的角度构建衡量标准——与手动浏览整叠简历相比,我从这种机器学习算法中获得了多少价值。
  • 我们也可以用准确度、精确度和回忆来表示分数。例如,我们会衡量前 10 名、前 20 名或前 30 名(甚至前 10%)的目标简历数量。这个指标的优点是对数据集大小和比率的一些变化有一定的不变性,但是我不喜欢引入额外的问题,为 Top-K 指标选择什么 K。
  • 我的另一个想法是,最终我们可能会根据算法的准确性来衡量它,根据以前的简历来预测用户是否喜欢/不喜欢一份简历。但是我们没有足够的数据来训练这种类型的机器学习算法——更不用说测量它了。此外,它并不能真正代表我们试图解决的问题,也不能代表用户界面中显示结果的方式。用户界面中的结果是分级的,而不是分组的。

所以最终我不得不自己想出一个度量标准应该是什么样子。它必须捕捉算法的能力,仅基于少量的学习将目标简历放在堆的顶部,它必须对测试案例的大小和目标与否定的比率不变,如果可能的话,它需要抗噪声。

因此,我将我想要的度量的数学属性公式化如下:

  • 如果所有目标简历的排名都高于所有负面,则该值为 1.0
  • 如果所有负面简历的排名都高于所有目标,则该值为 0.0
  • 该值介于其他所有值之间
  • 该值尽可能不随目标与负数的比率以及测试用例的总大小而变化。

因此,我得出的公式如下(请原谅我的 pythonic 数学):

  • 归一化等级[Nr] =等级/总简历数
  • bestyposablemeanrank[Bpmr]= average(Nr(Rank)表示 Rank in range(NumberOfTargets))
  • worstpossible mean Rank[Wpmr]= average(Nr(total resumes-Rank)表示 Rank in range(NumberOfTargets))
  • mean rank[Mr]= average(Nr(target rank)for target rank in Targets)
  • 得分= 1.0 — ( (Mr — Bpmr) / (Wpmr — Bpmr))

该等式基本上使用目标简历在简历总体排名中的平均排名。这些等级首先被标准化为 0 到 1 之间,然后所有目标的平均等级被标准化为介于最佳可能平均等级和最差可能平均等级之间。最好的平均排名实际上不是 0——因为目标简历也是相对于彼此排序的。最好的平均排名是所有目标简历都排在列表顶部时的排名。因此,如果 10 份简历中有 3 份目标简历,那么最佳可能平均排名是 0.0、0.1 和 0.2 的平均值,整体最佳可能平均排名是 0.1。对最差可能排名也是如此,测试用例的最终得分是它在最好和最差可能平均排名之间的归一化位置。

有了这个自定义评分公式,我就能够创建一个与我喜欢的其他类型的指标具有相对一致行为的指标,例如,1.0 是可能的最佳结果,0.0 是可能的最差结果。对于目标值与负值之间的比率以及数据集的整体大小的变化,它也具有良好的行为。这允许我们比较不同测试用例之间的分数,然后进一步允许我们计算所有测试用例的平均分数。

像这样设计你自己的度量方程是一种先进的技术,但是当你在一个模型上开发测量时,它应该是你的工具库中包含的东西。

可能没有明确的方法来定义模型的准确性

这种挑战通常出现在你进行无监督学习的时候,例如聚类和生成模型,或者一些形式的强化学习。

如果您正在处理一个集群问题,您最终会遇到这样的问题:什么是好的集群?这个问题不明显。您肯定可以使用一些指标来以统计的方式定义什么是更好的或更差的聚类,例如:

  • 轮廓系数-测量每个聚类相对于其他聚类的平均中心的平均中心
  • Davies-Bouldwin——测量每个数据点到聚类中心的平均距离与聚类之间的距离

但是使用这些指标可能无法从算法中捕捉到您真正想要的东西。例如,如果在营销环境中部署算法来细分客户,那么您真正想要的是根据特定营销策略对他们的影响程度将他们分组,因为这最终是这些集群的用途。但是,您可能会对非常嘈杂的数据进行聚类,而这些数据对营销策略可能只有很小的预测价值。你在那里开发任何有价值的东西,然后继续前进。像上面这样的措施可能会完全误导你开发这种算法来实现这一目的——创建有效的数据聚类,而不是在任何程度上与有效营销策略中的相似性相一致的数据聚类。

另一个有趣的例子是生成模型。我们关心的是模型是否能够产生健康多样的现实输出。但是现实的定义是什么?很难根据它被训练的数据集来衡量算法——如果算法只产生与其训练数据集高度相似的输出,那么它将是一个非常糟糕的生成模型。目前用于此的技术,如 Inception-score(使用神经网络和熵的统计测量来对模型进行评分),是非直观的,并且有缺陷。在某些情况下,如在自然语言合成中,评估改进的最可靠技术仍然是由人类进行的主观评分,例如从 1 到 10 的质量评分。你还会如何评价一个通用聊天机器人能和你聊得多好?

你真正关心的结果是不容易衡量的

在这种情况下,我们可能有一些方法来衡量我们的模型的准确性,并且我们有合理的期望我们的度量应该与模型的真实世界性能相关,在某种意义上,更高的度量可能意味着更好的真实世界性能。但是模型在现实世界中的表现可能不是你实际上可以容易地测量和报告的。可能很难确定您的指标与现实世界的表现有多相关,以及您损失了多少准确性。

我能想到很多可能发生这种情况的场景:

  • 您在边缘部署模型,例如在物联网设备中,这些设备不可能上传它们正在咀嚼的所有数据
  • 您部署在隐私受限的环境中,如安全摄像头,在那里您无法真正将数据传回总部以测量准确性
  • 您最关心的是模型在边缘情况下的性能,例如在危险驾驶条件下运行的自动驾驶车辆,或者经济衰退时股票交易模型的性能。你关心的边缘情况并不经常发生
  • 你可能正在为迁移学习建立一个模型,例如,旨在作为预先训练好的网络运行的模型,然后将这些模型粘合到最终用户系统中并应用于他们的问题。您关心模型如何适应新的和不可预见的问题,根据定义,这些问题是您无法度量的
  • 您正在开发一个通用算法,该算法在您无法访问的客户端环境中的客户端数据上进行训练和运行。同样,你关心算法在不可预见的情况下工作得如何,包括训练和执行
  • 你的算法必须将总部的培训元素与客户的私人数据结合起来,才能产生一个结果

像这样的一些最困难的情况是,你的算法可能需要几年的时间来解决好的或坏的选择。例如,如果一个算法预测你应该买一栋特定的房子或一支特定的股票,因为从长期来看它似乎被低估了。根据这个问题的定义,可能需要数年时间来确定算法的猜测是否会变成现实。

有效地测量精确度在计算上太昂贵了

在某些情况下,通常有非常合理的方法来衡量算法的准确性。但是,要有效地做到这一点,计算量可能非常大,需要对精确度进行部分测量。

我能想到很多可能出现这种情况的情况:

  • 在训练神经网络时测量其验证准确性。为了获得精度如何随时间变化的精确、无噪声的测量,通常必须在分配给验证测量的 CPU 能力和分配给训练测量的 CPU 能力之间进行折衷
  • 您的数据集如此之大,以至于您不可能对所有数据集进行训练甚至测量准确性,而是必须对数据样本进行训练(例如大数据中常见的样本)
  • 算法的生产环境与它的训练方式不同。例如用于一次性学习和图像搜索的连体/三元网络。以可预测的缩放特性分批训练神经网络。但是在生产中,神经网络使用 K-最近邻来产生与非常大的数据库中的其他向量相匹配的向量。这是您关心并想要度量的完整数据库的最终结果,但是大量进行这些查找可能会非常昂贵
  • 你的算法噪音很大,计算量也很大。如果在一个已经很贵的模型上不增加 5 倍的计算时间,5 重交叉验证将是你减少测量中噪声的常用技术。

在这些情况下,我们必须非常小心地从较大的生产数据集中抽取数据,以便测量我们的算法。我们必须选择一个合适的样本大小,该样本大小在计算上是易处理的,但也是整体的代表,我们必须以一种考虑到较大数据集中各种可能的类别不平衡的方式进行随机选择。

你的算法可能与人类协同工作

在测量精确度方面,可能最良性的难题是当一个算法要与人类结合使用时。总的来说,我们真正关心的是人机结合系统的有效性——这才是最重要的。衡量机器方面可能很容易——衡量人的方面通常要昂贵得多。

想想下面的情况:

  • 人工智能供电的安全摄像头,旨在向安全人员触发警报。这些系统通常倾向于发出假警报,以确保安全人员捕捉到每一个可能的入侵。但是如果你给了太多的假警报呢?警卫可能会习惯他们,并开始忽略他们。在太多的假警报和太少的假警报之间有一个最佳的平衡,这使得整个系统在捕捉入侵者方面的效率最大化。
  • 许多人正在研究人工智能医生,帮助人们诊断。许多团队不只是取代医生,而是采取这样的方法,即人工智能应该与真正的医生协同工作,以便诊断病人。现在你关心的是医生-人工智能团队的有效性,而不是仅仅一个医生或仅仅一个人工智能。人工智能的建议只是迷惑医生,还是真正帮助他们诊断情况。
  • 许多人工智能团队经常使用他们来自人工智能系统的输出来指导人类的数据标签,这些人类正在建立训练人工智能系统的数据集。例如,当构建一个文档解析系统时,我们有一个人工智能来解析文档,然后人类会检查人工智能做了什么并纠正任何错误。虽然这对人类来说使事情变得更快,但它也导致了自满,因为系统在识别文档方面变得越来越好。人类将无法捕捉错误,批准错误填充的文档进入数据集,然后对其进行训练,导致人工智能在未来犯更多的错误。

如果方法正确,人类在解决方案中的存在通常会比单独进行机器学习带来更好的性能。通常,当开发新的人工智能产品时,让人类参与进来以增加数据集是非常必要的。但是在这种情况下,人类的存在确实使准确性的测量变得复杂。

人类很难衡量。例如,我们如何衡量数据集中有多少噪音和错误?当数据集由人构建时,唯一的选择是将一个人的意见与另一个人的意见进行比较。例如,管理人员可能会检查其下属的标记数据子集,并将其与他们自己对正确分类的意见进行比较。

在极端情况下,这种技术变成了我所说的双重验证,同样的数据被送到两个不同的人那里进行分析和分类。如果两个人意见不一致,它可以被发送给第三个人,第四个人,第五个人,等等,直到就正确答案达成共识。这不仅可以生成高质量的标注数据,还可以为您提供数据集中错误数量的清晰统计数据。但是这个过程是昂贵的——大大增加了已经昂贵的数据标签过程的成本。

您的数据集或问题空间可能会随着时间的推移而变化和发展

生活中有许多事情是一成不变的,或者至少演变得如此缓慢,以至于需要几代人的时间才能改变。从一年到下一年,有时甚至从一个月到下一个月,还有其他事物在特征和形式上迅速变化。数据集和机器学习问题也是如此。

以下是一些我们可能会发现我们正在解决的问题正在我们脚下演变的情况:

  • 你是一家新的创业公司,你的数据集是在你成长的同时建立的。您可能从英语语言数据开始,但是由于数据的增长,数据集开始包括许多其他语言
  • 你是一个聊天机器人,你不断地添加新的特性和功能,同时对你的核心 NLP 进行研究。数据集在种类和形式上都在扩展,需要更多的功能,因此,在具有 10 个标签的小数据集上工作的算法在具有 100 个标签的大数据集上可能不再获得好的结果。
  • 你在 21 世纪初做电子商务,互联网上的消费者行为和我们跟踪消费者行为的复杂性随着时间的推移在迅速发展和变化,2005 年相关的趋势到 2010 年完全不相关。
  • 你正在为股票市场的高速交易做一个算法,你在与一组进化中的其他公司的算法竞争,这些算法也在做同样的事情,每个算法的最佳行为由其他算法的行为决定

在这些情况下,有时有必要不断地将 R&D 应用到您的核心算法中,只是为了停留在同一位置,更不用说改进它了。随着你使用机器学习的雄心的增长,你的数据集也随之增长,维护这样一个雄心勃勃的系统的挑战也在增加。测量准确性的主要用途是了解您的系统在现实世界中的工作情况,这受到了“现实世界”不断变化的定义的挑战。在事情发生变化和准确度下降之前,你的准确度测量可能只有几个月是好的。

有多个维度需要你的算法去归纳

这个概念是我最近在考虑对来自复杂数据库的数据进行机器学习时产生的,这些复杂数据库中有多个与预测相关的表,数据集相当小,因此泛化很重要。在思考了这个问题之后,我开始意识到它实际上已经在我过去的一些不同的项目中出现过。

考虑下面的例子。您正在构建一个算法来解析文档中的数据。您正在解析的文档有许多不同的总体格式,在这些总体格式中,文档中可能有不同的数据。在您的训练数据集中,您可能积累了 50 种不同格式的文档,每种格式的文档都有大约 500 个示例。你有理由相信,最多有 100-200 种格式“存在”,其中大多数至少与现有格式相似。

现在,如果您只是对这些数据进行传统的 80/20 分割,您可能会获得非常好的结果,假设您获得了完美的训练准确性和 99%以上的验证准确性。在这种情况下这是非常可能的(已经发生在我身上),特别是如果每种格式呈现的数据非常一致,并且你有很好的数据扩充。您可以根据验证的准确性将您的模型投入生产。但是当你收到一个 51 格式的文件时会发生什么呢?

事实上,您的算法需要沿着两个维度进行归纳,而第二维度并没有被所有样本的基本 80/20 分割所捕获。您的算法首先需要能够从相同格式的新文档示例中学习。那是维度 1。不过,理想情况下,您的算法也可以推广到新格式的文档。那就是次元 2。如果您有文档格式的标签,您也可以按照不同的格式进行 80/20 分割(在本例中为 40/10)。这两种划分都很重要,并且告诉你不同的东西,关于你的模型归纳到新例子的能力。

如果您对格式进行 80/20 分割,您的验证准确性可能与 99%大相径庭,这并不奇怪。如果一种格式中的文档彼此高度相似,但格式彼此非常不同,那么当机器学习算法只接触 40 种现有格式的文档时,无论数据集有多大或有多少文档,它都无法推广到新格式就不足为奇了。

我想得越多,就越意识到这个问题发生的频率有多高。例如,如果您正在为一个电子商务平台构建一个推荐引擎,您的算法需要在一系列维度上进行归纳:

  • 跨系统的不同用户,例如,概括为在训练数据中没有确切看到的行为的新用户
  • 目录中的不同项目,例如,当它们被添加到系统中时,需要归纳为新的项目和描述
  • 涵盖全新类别的商品,使用现有商品目录中未使用的词汇和短语
  • 沿着时间维度——例如,它需要随着用户行为和产品趋势的变化和发展而概括。它还需要具有前瞻性,例如,在给定用户先前行为的情况下,它可以预测用户的未来行为。你上个月推荐的不一定是这个月最好的推荐。

如果您正在训练一个来自复杂数据库的数据的算法,包括连接一堆不同的表,这些表实际上代表不同类型的数据,那么非常合理的做法是对这些表中的每一个进行 80/20 分割,每一个产生不同的度量,或者它们的某种组合。例如,设想一个房地产估价系统,该系统必须将地理数据(如特定地区的市场状况)与特定房产的数据以及该地区最近相关销售交易的数据相结合。您需要该算法对所有三个不同的数据源进行归纳,因为所有三个数据源都是在生产环境中混合和匹配进行预测的,并且所有三个数据源都随着业务的增长而不断增长和变化。模型需要能够适应。

这是一个需要处理的不寻常且微妙的场景,它使准确性的测量变得复杂。无论你用哪种方法做 80/20 分割,没有一种方法能完全捕捉到算法的准确性和行为。您的算法可能很好地概括了您测量的维度,例如预测房地产估价时数据集中的不同建筑物,但不擅长概括不同的维度,例如市场条件不同的不同地理区域。在这些情况下,为了充分理解算法的行为,您总是需要多个度量。

结论

在本文中,我们讨论了许多更具挑战性和微妙的问题,这些问题阻碍了有效地测量准确性。这些挑战中有许多是从机器学习的力量中固有地衍生出来的——它可以灵活地应用于不完美的数据和新的环境和情况,并仍然可以获得合理的结果。机器学习是强大的。

如果您一直读到这一点,特别是如果您一直在阅读我们在本系列中以前的文章,那么您可能会像我一样得出结论,测量准确性非常困难。有这么多的方法可以让你做得不正确,有这么多的问题可以阻止你做好它,很容易接受错误是生活中不可改变的事实。然而,作为模型的构建者,测量准确性是我们工作的基础。因此,除了翻身接受失败,我们还能做些什么呢?

在本系列文章的第 4 部分,也是本系列文章的最后一部分,我将尝试介绍一个更好地测量准确性的框架。这个框架将试图给你一个更好的方法来思考如何为你的模型选择和设计度量标准。我们的提议很简单。我们不是从您的模型和它的作用开始,而是走向可以衡量它的指标,然后分析该指标,而是向您展示如何反向进行。从你到底希望你的度量标准告诉你什么关于你的模型,以及你想如何分析它的问题开始,然后向后移动到什么样的度量标准可能支持告诉你这些信息。指标是为一个目的服务的,因此不同的指标必须为不同的目的而设计——没有放之四海而皆准的解决方案。

原载于www . electric brain . io

为什么测量精度很难(也很重要!)第四部分。

原文:https://towardsdatascience.com/why-measuring-accuracy-is-hard-and-important-part-4-how-to-measure-accuracy-better-e072a26f4827?source=collection_archive---------27-----------------------

如何更好地测量准确度

这是关于测量精度的 4 篇系列文章中的最后一篇。

在第一篇文章中,我讨论了精确测量的重要性。如果你还没有,去看看这里:https://www . electric brain . io/blog/why-measuring-accuracy-is-hard-and-very-important-part-1

在本系列的第二篇文章中,我讨论了最常见的场景,这些场景阻碍了模型准确性的度量。如果你还没有看过这篇文章,可以看看这里:https://www . electric brain . io/blog/why-measuring-accuracy-is-hard-and-important-part-2

在本系列的第三篇文章中,我讨论了在度量模型准确性时出现的更困难和不寻常的场景。如果你还没有读过这篇文章,可以在这里读一读:https://www . electric brain . io/blog/why-measuring-accuracy-is-hard-and-important-part-3

现在,在本系列的第四部分也是最后一部分,我将讨论真正的内容——我们都渴望的信息。我们如何做得更好?在测量精度时会出现所有这些问题,我们如何避免陷阱并更好地测量精度?不幸的答案是——视情况而定。这个问题没有简单的答案,也没有放之四海而皆准的解决办法。因此,我不是仅仅给你一些提示和建议(会有一些),而是想给你一个思考如何度量一个模型的框架。选择度量模型的标准是一项智力练习。最佳前进路线可能涉及几个不同的指标,不同的数字用于不同的原因。

一般来说,我们的流程有几个步骤:

  • 仔细考虑并讨论您希望该指标做什么。该指标的目的是什么?它是一个沟通的标准吗,是为了让外部的涉众理解一个模型吗?或者它是一个研究指标,帮助指导你的团队研究模型?或者该指标是由模型本身的元素内部使用的?您是否有多种不同的度量目的/原因?
  • 集体讨论候选指标列表。不要害怕设计你自己创造的标准或公式
  • 对于每个指标,考虑相对于指标目的的利弊。不要只是把这些留在脑子里,真正把这些利弊写在纸上,摆在你面前。
  • 选择一个指标,坚持下去,直到它达到目的。

现在,我们将逐一介绍这些步骤。

定义指标的目的

测量模型的第一步是定义测量的目的。很容易就可以一头扎进去,写一堆模型代码,用五重交叉验证把它包起来,然后就到此为止。更难的是后退一步,看看你为什么要测量准确性,并仔细构建一个度量标准来为你的目的服务。

度量可以有许多不同的目的,每一个都有自己的细微差别和问题。我发现这些目的可以分为几大类:

该指标用于与利益相关方沟通:

  • 经理和老板可以用这个标准来评估团队的表现
  • 产品经理和设计者可以使用该度量来理解算法的行为及其对用户的潜在影响
  • 销售人员可以使用该度量向潜在客户兜售该系统的优势和功效
  • 客户可以使用该度量,以便了解相对于他们可获得的其他信息,他们应该对模型的结果有多信任
  • 监管机构可以使用该指标来了解该模型的潜在社会影响
  • 客户可以使用该指标来检查模型是否满足他们的性能要求
  • 其他行业专家可能会使用该指标,以便将您的模型与其他模型进行比较
  • 各种各样的利益相关者可以使用该指标来确定是否应该使用该模型——它是否满足投入生产的最低性能水平

该指标用于内部研发&和研究:

  • 该指标用于比较模型在一段时间内的性能,以及 R&D 团队做出了多少改进
  • 该指标用于直接评估模型中的特定变化是否会导致更好或更差的性能
  • 该指标用于理解算法的行为,并生成关于什么可以提高性能的线索(而不是用于评估已经想到的特定变化)
  • 该指标用于评估随着数据集大小的增加,您的模型预计会随着时间的推移而提高多少
  • 该指标用于解决模型的特定/离散问题,例如特定的表现不佳的组件或子系统,或者评估模型在重要数据子集上的表现

该指标由算法本身在内部使用,以规范或改进其自身的行为:

  • 优化算法使用该度量来调整核心模型的超参数并最大化其准确性
  • 该度量被广泛的模型搜索算法用来从各种不同的模型中自动选择,例如,在 AutoML
  • 该度量用于对算法执行早期停止,例如,通过在神经网络过度拟合之前停止神经网络,或者选择提升树算法中的提升轮数
  • 该指标用于设置算法结果的可接受置信度阈值

度量模型的每一个不同的目的都需要不同的度量模型的策略。您必须选择和设计适合您情况的指标。

例如,让我们大致考虑一下为外部利益相关者设计的指标和为内部研发设计的指标之间的一些差异。

外部利益相关方的衡量标准

  • 必须简单,易于非技术人员理解
  • 需要非常精确,给答案以信心
  • 需要捕捉系统的端到端/最终结果行为
  • 需要可靠且无噪音,以设定正确的期望值
  • 需要反映模型在生产中的当前性能,全面考虑
  • 需要从用户的角度反映数据分布,例如

内部 R 的度量& D

  • 必须提供改善或倒退的明确指示
  • 所需的精度因模型中的噪声水平以及您是要大的改进还是小的增益而异
  • 需要捕捉系统的内部行为
  • 需要相当快速且易于经常计算
  • 需要作为一个长期稳定的基准,将研究团队对模型的影响与其他因素隔离开来
  • 需要从研究的角度反映数据分布,例如,将类别余额标准化

正如您所看到的,对于如此不同的受众和目的,度量的需求是非常不同的。

因此,我们的框架的第一步只是从您的指标的目的开始。不要只是在脑子里想——真正把你测量的原因写在纸上,写在文件里。您可能会发现测量模型有多种原因。如果您真的想更好地度量,这可能意味着您必须投资于维护多个不同的度量。这可能是很多额外的工作,但结果是你可以对你的测量有信心,并集中精力于你的研究目标。

在经历这一过程时,请尝试回答以下问题:

  • 谁是该指标的受众?他们对技术了解多少?他们有多精通机器学习?
  • 观众会对这个指标做什么呢?如果指标是好的,他们的行为会有什么不同?如果是坏的呢?
  • 观众会只使用一次这个指标吗?或者他们是否在监控指标随时间的变化?

集体讨论/设计几个候选指标

更好地度量您的模型的下一步是集思广益,列出潜在的候选指标。像任何好的头脑风暴会议一样,最好不要过早下结论。真的试着吐槽一下,就如何衡量一个模型提出不同的想法。如果没有多种可能性可供选择,你就无法真正做出决定。

头脑风暴时,你至少应该写下/考虑所有符合你目的的众所周知的指标。这可能需要您做一些研究,尤其是如果您正在将数据科学应用到一个您不擅长的新领域。

然而,您还应该考虑工程度量服务于特定目的的可能性。通常,这可能涉及以特定于您的问题的方式修改一个众所周知的指标。在其他方面,它可能涉及到真正地走出去到一个新的领域,创造新的方程式和原始的分析方法。构建指标的一些方法包括:

评估众所周知的指标,但仅针对数据集的特定子集。

  • 例如,如果你是一家自动驾驶汽车公司,你可能更关心你的车辆在边缘情况下的性能。因此,尽管您的大数据集可能主要包含阳光充足的正常驾驶条件下的数据,但您可能会决定在各种恶劣的天气条件下(如下雨或下雪)测量您的模型,并在测量中完全忽略阳光充足的数据

专门为测量目的创建小数据集。

  • 例如,在进行聚类时,您可能会遍历 100 或 200 个条目,然后自己手动将它们分成多个聚类。然后,您可以测量由算法聚类的项目被人类放入相同聚类的频率。
  • 另一个例子是,如果您的算法在系统中间运行,但其输出要经过进一步的后处理才能产生最终结果。然后,您可能希望将最终结果的一个小数据集放在一起并进行验证,以确保您的后处理是正确的

对测量您的指标的数据应用某些类型的增强:

  • 比如做图像处理的时候,训练增强就是标配。但是在某些情况下,您可能也希望测量增强验证图像的准确性。例如,在处理药丸等完美圆形物体的图像时,您可能希望测量所有 360 度旋转角度的精度,以确保网络不会过度适应任何特定方向。

根据数据中的类别分解指标结果:

  • 例如,在处理多种形式的文档时,您可能希望测量不同格式的文档的不同准确性,即使您对所有这些文档共同训练算法也是如此

如果您的模型处于典型指标的高端或低端,使您的指标“更难”或“更容易”:

  • 当在非常标准化的文档上执行某些类型的数据提取时,通过在一个单词一个单词的基础上进行测量,可能相对容易达到非常高的准确度。相反,您可以将您的度量转换为基于整个文档——只有当文档中的每个单词都被正确分析时才是正确的。

考虑修改指标,以便某些被认为是失败的事情被积极地计算在内,反之亦然:

  • 例如,当做一个有大量标签的硬分类模型时,你可以考虑一个 Top-5 风格的度量。也就是说,如果正确的标签出现在前 5 个预测标签中的任何位置,则它被认为是正确的结果。
  • 在许多情况下,当进行数据提取时,我们会遇到这样的问题:文档中的绝大多数单词都被预测为“空”或“不提取”。这可能会导致我们使用精度/召回/F1 分数等指标,但我们觉得这些指标很难向指标的受众(客户,非技术人员)解释。相反,我们选择了一个更简单的度量标准,测量原始精度,但有一个变化:排除任何在数据集中被预测为“null”和实际上“null”的条目。也就是说,我们测量了真阳性对假阳性和假阴性的准确性,但是我们从度量中排除了真阴性。这为该指标提供了非常需要的可解释性,但没有人为地将其夸大到接近 99%,因为有大量的真实否定。

考虑在训练、测试和验证之间分割数据的不同方式:

  • 你可以根据情况考虑做或多或少的交叉验证。例如,对于大型深度学习模型,您可能只训练一个模型,而没有交叉验证。在高噪音的问题上,你可以用 10 倍的十字架来解决。
  • 您可以考虑沿着不同的维度拆分数据。例如,当试图预测用户购买行为时,你有几种可能的划分。通常,您可以对所有数据进行 70/20/10 的拆分。您也可以拆分 users 表,以查看您的算法如何在用户之间进行推广。你也可以在时间维度上进行拆分(有时称为回溯测试),例如,给定 2 月份及之前的所有数据,你对 3 月份用户行为的预测有多准确。
  • 您还可以考虑为进入系统的“实时”数据制定一个指标。例如,如何根据 2018 年和 2019 年之前的数据实时训练模型

以各种方式规范度量:

  • 您可以使用一个典型的度量标准,但要对其进行修改,使其不受样本的巨大差异的影响,例如,在 0 和 1 之间进行标准化。
  • 你可以试着使度量标准对不同样本中的等级不平衡保持不变
  • 考虑到算法的噪声,您可能决定对您的度量及其变化使用统计 P-test,而不是直接查看度量

您可能只考虑您的模型相对于“基准”模型的性能:

  • 当进行各种形式的模型压缩时,我们采用深度神经网络并将其压缩,以便在手机和汽车等边缘设备上进行处理,我们可能会有一个全尺寸的模型,该模型已经过验证,可以高精度地工作。我们关心的是我们的缩小模型与全尺寸模型相比的性能。这种方法可以让我们在更大的数据集上测量性能,例如无法用于训练的未标记数据。我们可以使用全尺寸模型作为地面实况的基准来测量缩小模型的精确度

你可以考虑使用某种验证程序来测量准确度。也就是说,如果你有一个有效的方法来验证模型的输出是否至少是好的(虽然不正确),这可能会给你一个额外的方法来测量你的模型的未标记数据

  • 例如,在构建收据处理技术时,我们实际上有一个简单的验证例程,可以在我们的模型的输出上运行,以查看它们是否有意义:我们获取所有提取的项目总数,并检查它们是否加起来就是收据底部的最终总数。如果所有的数字都加起来,我们可以知道我们的模型的输出至少是合理的,即使没有任何地面真理。在实践中,我们遇到了某些零售商的问题,他们的收据实际上并没有加起来(咳咳…沃尔玛,苹果),但验证程序在大多数时候对大多数商家都有效。

创建你自己的方程式来描述你想要的行为:

  • 例如,在机器学习的更深奥和新颖的用途中,可能没有关于如何衡量你的模型的明确方向。很多生成模型和强化模型都属于这一类。使用一些熵统计和其他度量的科学怪人混搭,你可能会完全失去理智
  • 在对深度神经网络进行贝叶斯优化的一种情况下,我遇到了网络很快陷入良好的局部最小值的问题,但之后没有改善。因此,我没有优化最终的验证精度,而是优化了算法训练的精度斜率。我想要一个不断改进的神经网络,而不是快速改进然后变平。令人惊讶的是,它成功了!

考虑到所有这些因素,您应该能够提出至少几种不同的方法来度量您的模型。同样重要的是,不要只抓着一些常用的指标不放,比如 F1 分数,然后用它来跑。如果你没有真正为自己考虑过各种选项,那么你可能最终会用一个让利益相关者困惑并且不能反映真实世界表现的指标来搬起石头砸自己的脚。

评估每个指标的利弊

有了多个可能的指标,您现在需要考虑每个指标相对于指标目的的利弊。

尝试考虑您的指标的每个属性:

  • 该指标的“可解释”程度如何?也就是说,对于一个非技术外行人来说,被告知度量标准并预测模型应该表现得有多好容易吗?
  • 度量的噪音有多大?你的目的能处理多少噪音?
  • 该指标告诉您什么类型的概括?它可能忽略或没有捕捉到什么类型的概括?您的度量标准可能很好,而您的模型在某些方面仍然表现不佳吗?
  • 该指标没有捕捉到的成功案例有哪些?您的指标没有捕捉到哪些失败案例?你的衡量标准如何衡量不同类型的成功和失败案例?
  • 你能想到这个指标的“更难”的版本吗?一个“简单”的版本?
  • 这个指标应该获取的概括是否与您的模型在生产中需要的概括相匹配?
  • 是否有某些你已经知道的失败案例,但不会在这个指标中强烈反映出来?
  • 该指标如何应对数据集中样本大小/属性/组成的变化?您的度量标准是否“有偏见”,因为它可能会过度表示或不足表示比其他数据更大或更复杂的数据的某些子集?
  • 有没有什么方法可以让这个指标很高,而模型仍然以您所关心的方式表现不佳?这个指标是直接衡量你关心的结果,还是仅仅间接衡量与你关心的事情相关的结果?
  • 在本系列文章的第 2 篇和第 3 篇中讨论的测量准确性的失败案例是否适用于您的情况?这个指标如何解决这个问题?

现在,我们提供一些关于如何从糟糕的指标中挑出好的指标的技巧。这些只是我们自己的想法和想法,基于我们过去测量模型的经验。您应该彻底评估自己的情况,以确保您的指标符合目的:

面向非技术人员的指标需要简单。

  • 它们不能从晦涩的数学方程式或统计数据中构建出来。即使是 MSE(均方误差)也不容易解释。相反,我发现 MAE(平均绝对误差),有时归一化为百分比,允许我的客户在他们的头脑中真实地可视化模型的性能。对于非技术人员来说,普通的准确性比模糊的统计数据更好,如 F1 分数或 AUC
  • 他们需要讲一个故事。他们需要让人们在脑海中想象与模型交互的人,无论是成功还是出错。这意味着指标需要从最终用户的角度以及他们将如何体验该模型的角度来构建,而不是描述系统的一些内部属性。
  • 他们需要人们理解的单位。在每一帧的基础上测量自动驾驶汽车的图像识别精度对于非技术观众来说没有意义。相反,更好地以分钟或小时来构建度量,例如没有错误的分钟或小时数。
  • 它们通常应该更加简单——不那么规范化,并且包含类内平衡。你应该做的唯一的标准化工作就是用百分比来表示一个数字。非技术人员不喜欢 0 到 1 之间的数字,但是百分比很容易理解。

用于内部研发的指标&需要稳定一致:

  • 如果你的指标会随着时间而变化,而代码没有任何变化,那么它对研发就没有用。例如,如果你的训练数据集随着时间快速增长。至少在继续之前,您需要锁定那些测试、培训和验证集。你可以在需要的时候定期更新它们,但是你应该至少用一两个月的时间来更新彼此可比的数字。时间越长越好。
  • 您的度量标准需要对数据集中样本的各种属性保持相对不变。它应该根据样本的大小或复杂程度进行标准化。
  • 理想情况下,您的度量对于数据集中任何已知的不平衡类都是不变的
  • 您的度量标准需要相对“居中”,例如,它不应该真正接近完美,并且应该随着您的改进以有意义的方式改变。如果你已经接近 99.7%,但你的工作仍然是对那些 0.3%的误差进行改进,那么你可能会更好地重新定义你的指标“更难”,这样那些 0.3%误差的改进会被放大,更明显。不要测量前 5 个分类结果,而是向下移动到前 1 个测量。相反,即使你正在取得进步,一个指标保持在 0 附近也不是很有用。粒度必须适合你所在的研究阶段。
  • 该指标通常应该更倾向于“硬”的一面。这个指标的一个非常高的值应该给你最大的和完全的信心,你的模型真的很好。它不应留下任何不确定性或未决问题
  • 度量标准应该提供一个“清晰的答案”,也就是说,当你得到度量标准的结果时,它不应该让你不确定你的改变实际上是更好还是更差。如果你用你的模型研究一个特定的子系统或问题,使用一个专门为该子系统或问题建立的指标会给你一个比你的通用端到端指标更清晰的答案。如果您的结果的噪声率大于您的预期改善,您需要增加交叉验证。
  • 使用模糊的、结构化的指标更容易被接受。更容易接受的是拥有多个指标,系统特定子集的指标,并使用图形和图表来代替单一指标。

用于衡量两个模型之间相对性能的指标不同于衡量其绝对性能的指标:

  • 在衡量相对绩效时,我们有更多的自由来选择不同的指标。我们能想到的大多数指标都有一个“更好”或“更差”的良好定义,我们有与最终用户结果相关的合理预期。
  • 当试图衡量绝对绩效时(例如,为了与经理、外部利益相关者沟通,或者仅仅是为了我们自己在产品发布前的评估),我们需要更加挑剔。该指标需要与系统的“端到端”或“最终结果”行为非常一致。与非技术人员的度量标准非常相似,这些度量标准需要从用户的角度来构建。它们需要在最新可能的数据上完成,而不是在几个月前锁定的训练/测试集上完成。他们需要反映该模型的当前预期生产性能,如果它现在被部署到生产中的话。

用于编程目的的度量,如超参数优化或早期停止,对噪声的容忍度更高,但对差的度量构造的容忍度要低得多。

  • 根据定义,贝叶斯优化器是概率性且抗噪声的。这些算法可以从 5 倍的运行中获得更多的推理和知识,但是具有 5 倍的噪声结果,那么它们可以用 5 倍的运行减少 5 倍的噪声。如果您的度量标准构造得很差,问题就来了——现在您的贝叶斯优化器可能会使您的模型越来越适应您关心的方向,同时看起来会使它变得更好。当您接近模型的峰值性能时,通常会发生这种情况,此时定义不良的度量会阻止模型达到正确的峰值。

用于所有目的的度量标准都需要捕捉你的算法用来概括的维度:

  • 对于旨在根据过去的数据预测未来行为的系统,在广泛概括不同样本时测量算法性能的错误是常见的,而没有考虑这些样本是如何构造的。例如,对整个数据集进行 70/20/10 分割。但通常我们真正关心的是衡量它在时间维度上的表现。例如,基于用户在 9 月份及之前的数据来预测用户在 10 月份的行为。进行标准的 70/20/10 分割会给你的指标带来不公平的优势,因为该算法是根据未来的数据训练的,而衡量的是过去的数据。您的算法在真实的操作环境中实际上没有任何未来的数据可以学习,从而导致某种形式的泄漏。

同样,这些只是我们注意到的关于选择好的度量标准的一些技巧和事情。对于如何衡量一个模型的问题,没有一个答案。稍微调整一下你的测量值,然后得到你想要的结果是非常容易的。如果你的模型表现不尽如人意,你可以调整你的衡量标准。但是这不是一个合理的科学实践——这只是自欺欺人。度量标准使用不当会导致错误的期望和错误的希望。

选择一个指标并坚持下去

当我第一次对数据科学和人工智能的理解变得复杂时,我在一家名为 Sensibill 的初创公司工作。我们的基本问题是从图像收据中提取结构化数据。但是我们都没有任何数据提取的专业知识——我们只是一群聚集在一起构建解决方案的全栈开发人员。在我们进行的过程中,他们操作的算法和数据集都被拼凑在一起。

我对测量精度问题的第一次体验来自于那些日子。在我开发这个系统的两年多时间里,我们不断引入越来越多的指标。当一个指标表明表现出色时,经理们会感到困惑,因为他们对现实世界中的表现的主观评价并不好。对此的回应将是引入一种新的衡量标准。这将每 3-6 个月重复一次。我们将创建用于测试的数据集的特定子集(一堆)。我们将对结果创建不同的验证程序,并根据它们来衡量我们的准确性。我们在不同的环境中会有不同的度量标准(生产对阶段对开发)。我们有滚动平均数和月度数字,最近 100 个数字,以及在测试集上即时计算的数字。我们会有一些指标报告优秀的结果,而其他指标似乎表明该模型几乎完全是狗屎。对我来说,它变成了度量沙拉,我们中没有人真正知道系统对我们的最终用户表现得有多好。我们也不清楚是什么让这个系统变得更好或更坏。

随着经验的增加,回顾这些年,我开始明白问题不在于我们没有试图测量准确性。我们在系统的测量上投入了大量的精力。我们也不是不知道如何度量我们的系统——我们在这方面当然有很多专业知识,而且我们有的一些度量标准我现在会认为是我们应该信任的“正确”的(尽管我会做一些改进)。

它不起作用的原因是我们从根本上混淆了不同指标的不同目的。我们知道我们想要回答的问题。但是,我们没有仔细选择哪些可用的指标可以给我们这些答案。此外,我们的度量标准并不真正适合我们的目的,并且总是有一些与我们所关心的相违背的缺陷。这个问题导致不同团队和部门之间的沟通中断,因为人们的期望与他们在应用程序中看到的不一致。这并不总是负面的——某些用户从应用程序中获得了异常好的结果——然而这只是因为他们上传了简短、简单的收据。这是一个有偏见的样本。期望和现实之间的这种不匹配导致花费更多的精力去开发更多的度量标准。

如果你已经仔细设计了你的度量标准,并且考虑了与之相关的所有问题;如果你确信它会真正回答你想回答的问题,那么就坚持下去。相信它。使用它来改进你的模型。适当地与人交流。当您添加新的指标时,请仔细考虑,不要让自己被指标沙拉淹没。为你的需求设计一些具体的、深思熟虑的度量标准。尝试升级、改进或替换现有指标,而不是创建额外的指标。创建临时的度量来解决特定的问题,然后在问题解决后丢弃它们,或者至少,将它们限制在自动化测试中。把你的眼睛放在奖品上。

结论

在本文中,我们已经讨论了一个更好地度量模型的过程,通过一个深思熟虑的练习来了解您的度量需求。这个练习不应该超过几个小时,但是耗尽大脑能量并彻底完成这个过程可能会让你得到更好的模型。

该过程从考虑测量的原因开始。事实上,你会发现你有多个不同的目标。至少,每个人都会经历度量的外部沟通目的和度量的内部 R&D 目的之间的二分法。

然后,我们继续头脑风暴一堆候选指标。我们的目标不应该仅仅是假定一些常用的测量方法对我们来说是正确的。我们真的应该尝试考虑不同的测量方法,以及我们可以做出的潜在修改,以更好地服务于指标的目的。然后,只有在集思广益多个候选人的选择,我们评估每个人的利弊,为我们的目的。

最后,在经历了这个过程并实际选择了一个(或多个)服务于您的目的的指标之后,您应该坚持使用它们。随着时间的推移,拥有一套可以作为可靠基准的指标对每个人都有好处——利益相关者、管理者和研究人员都受益。

感谢您通读这一系列关于测量精度的文章。

原载于www . electric brain . io

为什么测量精度很难(而且非常重要)!

原文:https://towardsdatascience.com/why-measuring-accuracy-is-hard-and-very-important-part-1-why-measuring-right-is-important-a279e8a6fcd?source=collection_archive---------18-----------------------

第一部分。为什么正确衡量很重要。

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

我们正在开始一系列关于测量准确性的新博客文章。有很多内容要涵盖——当我第一次开始写这篇文章时,它很快变成了 12 个小时的键盘敲击和 20 页的想法和笔记。因此,我们将把它分成 4 篇独立的文章:

  1. 测量准确度问题的概述,为什么它很重要,为什么它很难
  2. 测量精度中出现的大多数主要问题的详细描述
  3. 详细描述了我们在测量准确度时遇到的一些更不寻常和有趣的情况
  4. 我们能做什么——如何更好地测量准确性

测量精度的问题

为什么衡量机器学习模型的准确性很难?如此多的机器学习模型似乎有一个非常简单的精确度定义。

让我们看一个简单的例子——检测糖尿病的算法。该算法报告个人实际上患有糖尿病。该预测要么是正确的(该个体实际上患有糖尿病),要么是错误的(该个体没有糖尿病)。看起来准确性是由一个非常简单的问题定义的:有多少预测实际上是正确的。看起来衡量一个模型的准确性应该是简单明了的。

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

稍微仔细研究一下这个问题,以及该算法在生产中是如何使用的,将会给我们一个更加细致入微的答案。典型的疾病预测算法没有给出疾病的对与错的预测,没有其他信息。即使是最基本的实现也至少会提供一个介于 0%和 100%之间的置信度得分。该算法可以预测 73%的糖尿病置信度,以及 27%的非糖尿病置信度。然后,医生可以利用这种信心,结合自己的知识和分析,做出决定。但是什么是准确性呢?当算法报告 73%的置信度时,它的准确率是 73%吗?

在这种情况下,准确性意味着什么?准确性是指置信度超过 50%的正确答案的数量吗?50%是合适的门槛吗?我们如何计算空答案?如果“是”和“否”都没有达到要求的可信度,那该怎么办?那是怎么算的?一个稍微细致和有经验的数据科学家将得到受试者操作特征曲线,或 ROC 曲线。ROC 不再是一个单一的数字,而是一条曲线,代表在不同点设置阈值时出现的假阳性和真阳性之间的权衡。它表明,在一个特定的置信水平下,将会有多少错误对真理。这是一个聊天机器人的 ROC 曲线的例子。这个很不错:

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

这是另一个来自 Scikit-learn 网站的例子,对于医学分类器来说可能更真实:

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

所以现在我们不仅仅有一个精确的数字。我们有…我们对不同精度的选择。现在我应该提到,ROC 曲线有一个相关的单一数字指标,AUC 或曲线下面积,字面意思是 ROC 曲线下的面积。AUC 是一个稳健且非常有用的指标。但是 AUC 不是一个容易向利益相关者解释的指标,也没有任何容易的解释让我们理解。也许我们会求助于精确和回忆?我们在 ROC 曲线上找到一些可接受的点,将阈值设置为该点,并使用这两个新数字来描述其输出。但是,当你的输出中有多个类时,这很快就变得复杂了——我们现在有一系列的精度和召回——试图解释一个模型如何表现和执行很快就变得令人困惑。

精确度的测量甚至会受到原始数学的影响,这会使改进看起来更糟。这个例子是我在阅读谷歌人工智能博客文章糖尿病检测算法时想到的:http://AI . Google blog . com/2018/12/improving-efficiency-of-diabetic . html

他们提到,他们已经将他们的算法从二元分类(糖尿病/非糖尿病)转换为 5 分严重性等级。正在分析的数据是相同的,只是输出发生了变化。但是现在想想这个:在二进制分类中,系统可以完全随机地猜测,并且有 50–50 的机会得到正确的答案。在 5 分制的评分系统中,当系统随机猜测时,只有 20%的机会得到正确答案。

现在想象一下,为了给你的模型提供更丰富的学习信息,你从 2 分制转换到 5 分制。然而,如果你测量原始精度,你可能会注意到你的开关降低了精度。在 5 分分级系统中,该系统独自偶然得到正确答案的机会低得多。这篇文章的作者通过使用 Kappa 评分而不是普通的准确性(根据随机正确答案的机会进行调整)来解决这个问题。但是这个基本问题是我这篇文章主题的核心。

衡量你的准确性并不像看起来那么简单。我们如何衡量准确性将改变我们对模型所做的改进,我们对模型的信任程度,以及最重要的是,商业人士、工程师、政府、医疗保健或社会服务组织等利益相关者如何采用、整合和使用这些算法。

为什么正确测量准确度很重要

为什么要测量准确度?这似乎是一个容易回答的问题。没有测量的准确性,就没有办法知道你的模型是否有效。与常规代码不同,常规代码可以在事先假设其完美运行的情况下进行测试,100%的时间都符合设计,机器学习代码预计会在一定数量的样本上失败。因此,测量失败的准确数量是测试机器学习系统的关键。

但我想花点时间谈谈我们衡量准确性的一些原因,以及为什么正确地做这件事变得如此重要。

改进您的模型

衡量模型准确性的第一个也是最容易理解的原因是为了提高其准确性。当您试图提高准确性时,几乎任何准确性度量标准都可以使用。只要这个指标有一个清晰的定义,那么这个指标的确切值并不重要。您关心的是指标是在改善还是在恶化。那么什么会出错呢?

好吧,如果你不正确地测量你的模型的准确性,你实际上可能以伤害你的真实世界性能的方式修改你的模型,而他们看起来正在改进你的度量。举个例子,泛化和过度拟合的问题。

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

如果你不正确地测量你的准确性,你可以做一些看似改进你的度量的改变,但是相反,他们只是让你的模型过度适应你的度量所测量的数据。

解决这个问题的标准方法是将您的数据 80/20 分成训练/测试。但这也充满了困难,因为我们有时使用准确性的测量来做一些事情,如提前停止或设置信心阈值,这样测试数据本身就成为你训练过程的一部分。你可能高估了自己的信心阈值。所以你决定把数据分成三份,70/20/10,最后用一个额外的验证集来测量你的准确性。但是现在,如果数据集相对较小,或者不能完美地代表它必须操作的真实世界的数据,该怎么办呢?

你现在不得不担心另一种类型的过度拟合,我称之为架构过度拟合,在这种情况下,你的模型的设计和参数对于数据集来说变得过于完美,当它们被添加到数据集时,不能推广到新的样本或很好地学习它们。例如,如果您准备了大量基于数据集的自定义要素,却发现当数据集随着时间的推移而增长、发生重大修改或与其他数据集合并时,这些要素不再适用,就会出现这种情况。你得到了极好的训练、测试和验证准确性。但是你仍然过拟合数据集。

如果你的数据集有噪音怎么办?数据有一致错误怎么办?你可能认为你的模型很神奇——事实也确实如此,它已经完美地学习了数据集中错误的一致模式。你兴高采烈地把模型放到下一个产品中,结果在产品发布时,你的屁股被人给踢了。看来你的模型在现实世界中并不奏效。你可能会想,“它在测试中非常准确”。“哪里出了问题?”

你的精度测量本身有噪音怎么办?假设您在多次运行中有 1–3%的准确度差异。现在,这使得进行渐进式改进变得更加困难。每个改进都需要大于 2–3 %,以便您能够通过一次运行可靠地确认它。要么你花费更多的 CPU 能力来使用平均值得到清晰的答案,要么你冒险在原地打转,只寻找大胜利,放弃增量改进。

更好地测量您的准确性意味着当您对您的模型进行更改时,您可以确信这些更改是否会以您所关心的方式带来更好的模型。当您错误地度量了您的准确性时,您可能最终会撕毁更改或回到绘图板,因为您“认为”99.9%准确的模型实际上与生产中的模型相差甚远。更精确的测量意味着更快的研究、更好的产品和更多的荣誉。它甚至可以拯救生命。

与使用我们模型的利益相关者沟通

我们衡量模型准确性的另一个原因是,我们可以与利益相关者交流,他们可以使用我们的模型。模型绝不仅仅是数学和代码的碎片——它们必须在真实世界中运行,对真实的人的生活产生真实的影响。

如果医生要使用算法来做出医疗决策,那么让他们知道算法可能是错误的,以及这种情况发生的频率是很重要的。如果一家公司打算用电脑取代一组数据录入人员,了解电脑出错的频率很重要,因为这会影响公司的流程。如果我们声称一个模型只会犯 3%的错误,但它实际上犯了 5%的错误,我们可能会认为这是一个很小的差异。但这可能意味着所有受算法错误影响的人打给支持部门的电话增加了 60%。成本的大幅增加可能会完全抵消实现该算法的任何好处。

利益相关者需要理解算法的准确性及其典型的失败案例,因为准确性具有现实世界的含义。准确性可能会影响预算和资产负债表、真实人群的生活和健康,甚至我们民主的结果(当谈到记者现在使用的事实核查算法时)。它可以创造或破坏新的人工智能产品,并在创造技术的工程师和使用技术的消费者之间造成真正的脱节。在测量准确性方面犯错误很可能意味着生命的丧失和新产品的失败。

为什么测量精确度很难

那么,是什么让测量精度变得如此困难呢?为什么一个看似容易回答的问题变得如此困难?

在本系列的第 2 部分中,我们将回顾在测量精度中出现的一些常见问题:

  • 您用来训练算法的数据与预期在生产中使用的数据不同
  • 比起其他类型的失败,你更关心某些类型的失败
  • 您的模型、数据集或测量值可能存在固有的噪声或随机性
  • 您的管道可能有多个不同的测量精度的点
  • 您的模型可能有几个不同粒度级别的不同指标
  • 您可能只有系统中某个中间步骤的基本数据,但没有最终结果
  • 您的数据集可能被分成不同的类别,它们之间的性能有很大的不同

在本系列的第 3 部分中,我们将解决在测量精度时面临的一些更困难也更有趣的问题:

  • 您的模型可能没有任何实际数据
  • 可能没有现成的度量标准来衡量您的模型的准确性
  • 可能没有明确的方法来定义模型的准确性
  • 你真正关心的结果是不容易衡量的
  • 有效地测量精确度在计算上太昂贵了
  • 你的算法可能与人类协同工作
  • 您的数据集可能会不断变化和发展,例如,如果它正在由数据标注团队积极扩展
  • 你的问题空间可能会随着时间不断演变

鉴于所有这些衡量准确性的潜在问题,我开始欣赏一个基本的智慧: 无论你如何衡量它或你使用什么度量,我们通常可以就完全正确和完全错误的样子达成一致。重要的是这两者之间的一切。

期待即将推出的本系列的第 2 部分!

原载于www . electric brain . io

为什么用基尼指数衡量城市不平等是个坏主意

原文:https://towardsdatascience.com/why-measuring-urban-inequality-with-the-gini-index-is-a-bad-idea-3d67b555dded?source=collection_archive---------17-----------------------

基尼系数

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

基尼系数

在制定城市政策时,我们经常需要评估城市人口的收入不平等情况,以便为针对某些收入群体的企业提供减税,或者确定低收入家庭,以低息贷款的形式提供住房补贴。然而,城市规划者感兴趣的不仅仅是财富和收入的不平等或异质性。例如,城市交通流量通常集中在几个区域,在整个城市交通流量中占据不成比例的大部分,了解这种异质性有多严重,并监测其长期趋势,将是制定有意义的交通政策、服务分配和停车等基础设施以及总体规划的第一步。

也就是说,衡量不平等最常用的方法是经济学家已经使用了一百多年的基尼系数(T2)。

对于一个城市中利益值 X 的任意分布,基尼系数可以定义为:

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

xi 位置 i = [ 1,2,…,n ]的 X 值和分母中 X 的平均值。

如前所述,最初用于衡量财富和收入不平等的基尼系数也可以用来量化其他变量的异质性。在表征城市中不同位置的值的异质性的情况下,从上面的等式可以看出,如果感兴趣的变量在城市位置上均匀分布,则基尼系数将呈现零值。相反,当所有感兴趣的变量都集中在一个位置时,基尼系数达到最大值,导致基尼系数GI = 11/n,对于大的 n 非常接近 1。

计算基尼系数

我们举个例子把事情说清楚。假设我们想了解不平等的停车需求在伦敦是如何分布的,并使用基尼系数作为这种不平等的衡量标准。下图显示了分辨率为 500 x 500 米网格的可用数据。

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

正如人们所料,我们看到了高停车需求的热点。事实上,如果我们观察一周内在给定位置结束的出行数量的分布(基本上是每周的总停车需求),

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

我们看到一个不对称的帕累托分布,少数位置显示非常高的需求,而大多数位置非常低的需求。如果我们用上面的表达式计算基尼系数,我们得到的值大约为 0.6。尽管跟踪这一指标的时间演变更有意义,但如果从经济角度考虑,这一数值表明存在中高不平等。

那么这有什么问题呢?

在基尼系数的定义中,我们提到了一个关键词:地点。城市规划首先是关于空间。无论是设计、管理、物流,还是规划,从业者都在与空间合作。但是仔细看看广泛使用的基尼系数的定义:空间——在这种情况下是地理——不在其中。基尼系数与感兴趣的值的位置的空间排列完全无关。以下四种安排——真实停车需求及其空间重组配置都具有完全相同的基尼系数:

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

换句话说,基尼系数没有捕捉到我们感兴趣的变量的任何空间信息。

我们做什么呢

空间统计领域,已经提出了许多指示所研究变量的空间分量的度量。在研究城市环境时,我们将讨论其中两个我认为与基尼系数结合起来特别有用的因素。

空间基尼系数

为了获得携带有意义的空间信息的基尼系数,我们进一步使用空间基尼指数。本质上,它是对经典基尼系数的分解,目的是考虑不平等和空间自相关的共同影响。更具体地说,它利用了这样一个事实,即所有成对差异的和可以分解成地理上的邻居和非邻居的和:

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

其中 w 是二元空间邻接矩阵的元素。

空间基尼指数可以解释如下:随着正的空间自相关增加,上述等式中的第二项相对于第一项增加,因为地理上相邻的值将趋向于呈现相似的值。相反,负的空间自相关将导致相反的分解,因为非邻居之间的差异将小于地理邻居之间的差异。在任一情况下,这提供了量化这两个术语的相对贡献的可能性。从这种方法获得的结果可以通过使用随机空间排列来进一步测试统计显著性,以在零假设下获得采样分布,该零假设是感兴趣的变量在空间中随机分布。

本质上,我们感兴趣的是发现基尼系数有多少是由于非邻居的异质性。为此,我们使用上述基尼分解中的非相邻项作为统计数据来测试空间自相关性:

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

这个表达式可以解释为与非相邻网格单元对相关的整体异质性的一部分。通过将从观测数据获得的 GI2 与从随机空间排列获得的 GI2 值的分布进行比较来计算伪 p 值,从而对该统计进行推断。应当指出,这种基于随机空间排列的推断是基于上述表达式给出的基尼系数的空间分解,而不是基尼系数本身的值。

按照所述方法,我们继续计算基尼系数的空间分解,将邻接矩阵中的邻域半径从 0(原始基尼系数)变化到 6 千米:

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

随机空间排列方法产生了统计上显著的空间分解(p = 0.01)。从图中我们可以看到,随着邻域半径的增加,由于非邻域停车需求值导致的不平等减少,因为不断增长的邻域捕获了越来越多的不平等。然而,有趣的是,观察值分布和随机化分布具有相似的空间基尼曲线(图中的 AD ),而停车值具有高斯分布的两次重排( BC )显示完全相同的曲线,其下降速度比 AD 慢。这是完全预期的,因为在高斯衰减中,下降是“平滑的”,因此增加半径不会使邻域捕获同样多的多样性,因此与非相邻分量相关联的不平等保持相对较高。

扩散指数

尽管基尼系数及其空间变量具有信息相关性,但它们利用的是 X 的平均值,在厚尾分布下,许多社会经济变量可能是不确定的。在这种情况下,基尼系数无法用非参数方法可靠地估计,并将导致厚尾下出现向下偏差。

用基尼系数法测量停车需求异质性的另一个不利之处是,它无法研究“热点”的空间布局——需求非常大的位置。热点被定义为停车需求高于某个阈值 x* 的网格单元。阈值的直观首选是全市平均需求。然而,这通常是一个太低的阈值,已经提出了一个更好的方法。一旦选择了阈值,并且热点被识别为停车需求值大于所选阈值 x* 的像元,我们就可以使用最近提出的扩散指数来测量热点之间的平均距离与作为城市规模度量的平均城市距离之间的比率:

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

其中 N(x)* 是停车需求大于 x* 的网格单元的成对距离数, N 是覆盖城市的所有网格单元之间的成对距离数, d(i,j) 是单元 i 和单元 j 之间的距离,在命名器中接下来是用于识别停车需求较大的单元的指示函数扩散指数本质上是用 x > x* 的单元间的平均距离除以所有城市单元间的平均距离。如果停车需求大的小区遍布全市,这个比例会很大。相反,如果高需求单元集中在彼此靠近的地方,如在单中心城市,这个比率将会很小。

代替选择一个特定的阈值,我们将它设置为一个参数,并观察对于四种类型的空间排列,扩展指数如何表现为阈值 x* 的函数。

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

从图中可以看出,完全随机重排( D )显示最高的扩散指数剖面,其次是观测数据( A )。接下来是双峰高斯重排( C ),随着阈值的增加,单中心高斯重排轮廓迅速下降。
这四种类型的扩散指数分布图对城市社会经济总量的空间布局中广泛的单中心与多中心结构进行了或多或少的完整分类。单中心空间配置将导致轮廓的快速下降和总体低的扩散指数,而多中心配置将具有总体高的扩散指数

在处理伦敦停车需求空间分布的用例中,我们看到热点遍布整个城市,形成了多中心的空间结构。

结论

在即将到来的来自城市各种来源的丰富数据流时代,设计和应用简单的指标来捕捉并向城市规划者和决策者提供有意义的信息变得越来越重要。在本文中,我们讨论了基尼系数作为值分布异质性的度量,用一个简单的技巧展示了它的缺点,并提出了用其他能够捕捉空间信息的度量来补充它的方法。

更多信息请点击查看。有这篇文章代码的 jupyter 笔记本可以在这里找到

为什么模型可解释性是下一个数据科学超级大国

原文:https://towardsdatascience.com/why-model-explainability-is-the-next-data-science-superpower-b11b6102a5e0?source=collection_archive---------3-----------------------

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

Model explainability techniques show you what your model is learning, and seeing inside your model is even more useful than most people expect.

在过去的 10 年里,我采访了许多数据科学家,模型可解释性技术是我最喜欢的话题,可以用来区分最好的数据科学家和普通的数据科学家。

一些人认为机器学习模型是黑盒,对预测有用,但在其他方面难以理解;但是最好的数据科学家知道从任何模型中提取真实世界洞察力的技术。对于任何给定的模型,这些数据科学家可以很容易地回答如下问题

  • 模型认为数据中的哪些特征最重要?
  • 对于模型中的任何单个预测,数据中的每个特征是如何影响该特定预测的
  • 要素之间的哪些交互对模型的预测影响最大

回答这些问题比许多人意识到的更有用。这启发我创建了 Kaggle 的模型可解释性微课。无论你是从 Kaggle 还是从像统计学习的元素这样的综合资源中学习技术,这些技术都将完全改变你构建、验证和部署机器学习模型的方式。

这些见解为什么有价值?

模型洞察的五个最重要的应用是

  • 排除故障
  • 通知特征工程
  • 指导未来的数据收集
  • 为人类决策提供信息
  • 建立信任

排除故障

世界上有许多不可靠的、无组织的、通常是肮脏的数据。在编写预处理代码时,您添加了一个潜在的错误源。再加上目标泄露的可能性,在真正的数据科学项目中,在某些时候出现错误是正常的,而不是例外。

鉴于错误的频率和潜在的灾难性后果,调试是数据科学中最有价值的技能之一。理解模型正在寻找的模式将帮助您识别这些模式何时与您对现实世界的了解不一致,这通常是追踪 bug 的第一步。

通知特征工程

特征工程通常是提高模型精度的最有效方法。特征工程通常涉及使用原始数据或先前创建的特征的变换来重复创建新特征。

有时你可以通过对潜在主题的直觉来完成这个过程。但是当你有 100 多个原始特征或者你缺乏关于你正在做的主题的背景知识时,你将需要更多的指导。

一场预测贷款违约的竞赛给出了一个极端的例子。这场比赛有 100 多个原始特征。出于隐私原因,这些功能的名称像 f1、f2、f3,而不是常见的英文名称。这模拟了一个场景,你对原始数据没有什么直觉。

一个竞争对手发现,f527 和 f528 这两个特性之间的差异创造了一个非常强大的新特性。包含这种差异的模型比没有这种差异的模型要好得多。但是,当您从数百个变量开始时,您可能会想到如何创建这个变量呢?

你将在本课程中学习的技术将使 f527 和 f528 的重要特性变得清晰明了,并且它们的角色紧密相连。这将引导你考虑这两个变量的转换,并可能找到 f527-f528 的“黄金特性”。

随着越来越多的数据集从数百或数千个原始要素开始,这种方法变得越来越重要。

指导未来的数据收集

你无法控制你在线下载的数据集。但是许多使用数据科学的企业和组织有机会扩展他们收集的数据类型。收集新类型的数据可能会很昂贵或不方便,所以他们只希望在知道值得的情况下这样做。基于模型的洞察让您很好地理解您当前拥有的特性的价值,这将帮助您思考哪些新的价值可能最有帮助。

为人类决策提供信息

有些决策是由模型自动做出的。亚马逊不会让人类(或精灵)匆忙决定你什么时候去他们的网站给你看什么。但是许多重要的决定是由人类做出的。对于这些决策,洞察力可能比预测更有价值。

建立信任

在没有验证一些基本事实的情况下,许多人不会认为他们可以信任你的模型来做出重要的决定。考虑到数据错误的频率,这是一个聪明的预防措施。在实践中,展示符合他们对问题的总体理解的见解将有助于建立信任,即使是在对数据科学了解不多的人之间。

本文改编自 模型讲解微课 讲解 Kaggle 学

为什么动机是学习数据科学的关键

原文:https://towardsdatascience.com/why-motivation-is-the-key-to-learning-data-science-af6a1c47102b?source=collection_archive---------14-----------------------

设定正确的目标,创建自己的课程,制定学习路线图

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

Photo by Fab Lentz on Unsplash

在我在正规教育之外学习数据科学的过程中,我发现动机是驾驭这门学科复杂性的关键,并且不会因构成广为人知的数据科学家技能集的大量信息而气馁。在下面的文章中,我将谈论为什么学习数据科学时动机如此重要,解释如何获得并保持动机,并与您分享一份我个人学习数据科学的学习课程和评分系统。

*为什么学习数据科学时动机如此重要?*如果你在谷歌上搜索“从事数据科学职业需要哪些技能”,你会看到一个广泛的技能列表。

这些将包括以下内容:

  • 软件开发
  • 计算机科学
  • 统计数字
  • 数学
  • 数据工程
  • 领域知识
  • 机器学习
  • 深度学习
  • 沟通
  • 还有更多

数据科学被认为是一门独立的学科,但这些领域本身就是一门学科。那么,你如何在合理的时间内学会看似不可逾越的技能呢?怎么知道先学哪些技能?刚开始的时候,面对看起来几乎不可能完成的任务,很容易变得没有动力,放弃学习。

“没有人谈论学习的动机。数据科学是一个广泛而模糊的领域,这使得它很难学习。真的很难。如果没有动力,你会半途而废,认为自己做不到,这不是你的错,而是教学的问题,” Vik Paruchuri

*那么,为什么数据科学学科似乎需要这么多技能呢?*包含“数据”和“科学”两个词的快速求职会让你有所领悟。下面是我在 7 月份最近的一次求职中找到的一些工作的快照。这些工作都属于数据科学范畴,但每一项都需要不同的技能。

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

如何获得动力

在你旅程的开始,有一个计划真的很重要。要制定计划,你首先需要一个目标。面对数据科学中快速变化的技术,以及定期变化的工作角色和要求,我认为最好不要将目标与特定的职位联系起来。等你到了那里,那份工作可能已经不存在了。

相反,你的目标应该是一个目的,换句话说,想想你想做什么。例如,当我学习数据科学时,我的目标是“用数据产生积极影响”。为了在尽可能短的时间内产生最大的影响,我的学习集中在数据科学的应用方面。

你的目标应该是一个目的,换句话说,想想你想做什么

在我的清单上,最重要的技能是软件开发、数据工程、使用现有的数据科学库以及了解足够的数学和统计学知识,以理解正在发生的事情以及如何解释结果。如果我更专注于创建新的数据建模方法,那么我的技能可能会更专注于研究数据科学的角色,因此我需要更深入知识的领域会有很大不同。

关注哪里

好了,你有了自己的目标,也知道应该把大部分时间集中在哪一组技能上。为了最有效地实现你的目标,你需要确保你只学习与你的目标直接相关的技能。此外,你很可能会有一个过渡到数据科学的背景。例如,你可能以前从事过软件工程或者有高等数学学位。在这种情况下,有些领域你已经有了广泛的知识。

我建议你不要依赖在线课程或教育机构给你提供课程,而是创建自己的课程。有许多学习数据科学的极好资源,其中许多完全免费(我之前写过一篇关于我的前 5 名)的文章)。你可以根据适合你的目标、背景和学习风格的材料来组织你自己的课程。

创建自己的课程

我不会拒绝在线课程,但我的建议是,与其完成一两个流行的 MOOC(大规模开放在线课程)来获得证书。相反,你从许多不同的课程中挑选相关的部分。如今,越来越多的课程平台,如 Coursera 正转向的订阅模式,这样你就可以按月付费,而不必支付一次性课程费用。除了能够为您的个人学习路径选择最相关的课程部分,您还可以以更具成本效益的方式学习。

如何保持动力

一旦你设定了目标,确定了课程,你需要一些方法来保持动力。我建议做三件事:

  1. 写下你的目标,并经常参考。为了确保你正在学习的技能能够帮助你尽快实现目标,定期回顾你的长期目标非常重要。每当你开始学习新的东西时,带着你的目标检查并问自己*‘这相关吗?’。*这将确保你一直在学习与你的长期目标密切相关的技能。
  2. *创建路线图。*在设计你的课程时,把它记录下来是个好主意。我自己的路线图,我将在本文底部分享一个链接,由一个带有评分系统的 google 表单上的一长串技能组成。每月一次,我会对照这个技能和熟练程度列表给自己打分,并与前几个月进行比较。当你在学习一门课程的时候,你经常会从完成一些事情和获得徽章和等级中获得一种满足感。在路线图上给自己打分给了我类似的满足感和庆祝成功的方式。学习的巨大动力!
  3. 采取实用的第一种学习方法。一旦你觉得有能力,我建议你将正在学习的技能付诸实践。你可以通过多种方式做到这一点,包括参加机器学习竞赛,如 Kaggle ,从公共数据集创建自己的数据项目或为开源项目做出贡献。能够建造有用的东西会给你巨大的满足感,并且比任何打勾的人都更有动力。

我的路线图

这是我在学习数据科学时使用的路线图的链接。当你打开它时,会要求你复制一份,这将在你自己的 Google drive 上创建一个可编辑的版本。如果你喜欢,我也写了一个版本的博客,你可以在这里找到。

感谢阅读!

为什么神经网络让我想要孩子

原文:https://towardsdatascience.com/why-neural-networks-make-me-want-to-have-children-b6b0b7e9a1cd?source=collection_archive---------30-----------------------

…或者是一首花的颂歌

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

Photo by Su San Lee on Unsplash

人工神经网络是目前计算机科学和人工智能研究中最重要的事情之一,你很有可能已经听说过它们,或者至少知道它们有一些东西:否则你可能不会点击这篇文章。

大肆宣传自然让我好奇:在反复听说他们似乎如何将人工智能研究的边界越推越远后,我知道我必须仔细阅读他们。

这不会是对神经网络的技术介绍(查看这个,或者,为了更详细的了解,或者阅读伟大的统计学习理论介绍)。相反,我将专注于神经网络做什么样的事情,以及这如何改变我在日常生活中的一些看法,以一种奇怪的方式激励我要孩子。

科学家的困境。

让我们面对现实吧:许多科学家都是过度思考者。

为了解决这个问题,我们把过度思考作为我们的职业。为你的弱点买单永远是生活中的好建议。

我们一天中的大部分时间都埋头于抽象思维的领域。我们对主纤维丛上的全息论、弯曲流形上的度量张量(我对这些东西感到兴奋,所以闭嘴)、神经元信号速率、蛋白质折叠的细节、在量子计算机上分解素数的数学复杂性,或者在神经网络中使用激活函数感到兴奋。

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

A typical scene in a physics lab. If we don’t know what to do, we write down couple of random formulas on a blackboard and finish it up with E equals m c squared. Works everytime. Photo by JESHOOTS.COM on Unsplash

作为专业的过度思考者,我们对一切世俗和普通的事物都有一种微妙的厌恶,这些事物既不密集也不复杂,或者与我们整天思考的极其具体的事情无关。

因此,很自然地,我们中的一些人会发现孩子有点迟钝。

你真的无法与他们就知识结构或改变基因的道德含义进行任何有意义的对话。

相反,孩子们主要关心的话题是他们的新消防车,或者他们的一个朋友如何告诉另一个朋友他很愚蠢。

但看哪,还有补救办法!

学习统计学习理论

神经网络提供了一个非常简单的数学学习模型。

比方说,你试图找出某样东西是哪种颜色。你要分类的物体的颜色由一个 特征向量 来表征。这个 特征向量 可以例如在三维 RGB 空间中表示,但是原则上可以被许多其他事物跨越(你的个人特征向量可以例如包括你的身高和体重)。

RGB 空间中的示例如下所示:

  1. 黑色= [0,0,0]
  2. 一种“完美”的蓝色= [0,0,255]
  3. 一种“完美的”红色= [255,0,0]

神经网络如何学习分类数据?

然后,使用一组示例数据开始学习过程。这些只是很多元组[x,x,x],附加到这些元组上的标签告诉你这些元组属于哪种颜色。上面的三个例子是带有三个标签黑色、蓝色和红色的三元组。

然后你可以将数据集输入你的神经网络。网络将通过以下方式“学习”如何正确分类数据

  1. 尝试分类: 网络从分类的任意分布开始。然后,它会尝试对这些例子进行随机分类,可能不会成功。
  2. 寻找错误函数: 这告诉网络它做出的选择离正确的选择有多远。
  3. 调整其权重: 网络根据查看误差函数获得的洞察力,通过调整其内在结构来从其错误中学习。这改进了将来的分类。
  4. 涂肥皂,冲洗,重复: 运行训练程序足够长的时间,以便你的网络学会正确地对训练数据进行分类。测试未用于训练的数据的分类质量。

小时候,我们都学过对颜色进行分类,尽管我们可能不记得了。

有趣的是,颜色如何分类并没有统一的标准。虽然我们都认为我们可以做到,但我们无法真正解释我们是如何做到的。

关于正确的颜色分类的困难,有一些公认的见解。文化依赖和语言依赖(很多语言甚至没有蓝绿之分)已经被证明是存在的。甚至还有语境依赖:你可以欺骗人们根据周围圆点的颜色,一次称同一个圆点为绿色,一次称之为蓝色。

这表明大脑中可能没有一个完整的预定结构来对颜色进行分类(尽管看起来这至少是交易的一部分),我们都在某种程度上学习它,基于我们环境的输入。

让你的孩子更有趣

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

Photo by Robert Collins on Unsplash

我最近想到,当孩子们学习对颜色、动物或车辆等事物进行分类时,你可以想象他们在做这件事,就像一个神经网络,用一组带标签的训练数据。他们是

  1. 尝试分类: 孩子们不断地说出他们看到的周围物体的名称。
  2. 使用错别字功能: 当他们用错一个字时,他们的父母会告诉他们。
  3. 调整权重: 大脑以一种有意义的方式变化,提高自己在未来分类中的成功率。
  4. 起泡沫,冲洗,重复: 他们重复这样做,直到有一天他们能够与周围的世界正常交流。

我最好的朋友之一有一个两岁的儿子,我最近经常和他在一起。学习了统计学习理论后,我体会到了孩子们是如何在很短的时间内同时学习非常多不同的东西的。

有一次,我们翻阅一本杂志,里面有汽车、卡车和各种其他车辆的图片。当他看到一辆他以前没见过的卡车时,我们告诉他这是一辆卡车(我们后来被他妈妈批评,因为我们非法教他说脏话,但那是另一回事了)。

当一张公交车的图片在他面前时,他也称之为卡车,但我们纠正了他。

我突然意识到我在充当这孩子的错误函数。瞧,又过了两页,他正确地将一辆卡车和一辆公共汽车归类到了一起。

拥抱过度思考。

下次你告诉一个孩子某样东西是绿色的而不是蓝色的,要意识到你面对的是一个试图学习新分类程序的神经网络。

记住,信息会直接流入他的大脑,根据你的反馈调整他大脑的权重。

拥抱过度思考,让身边的孩子更有趣。

一朵花的颂歌

虽然这有点开玩笑,我希望你现在不要认为我是一个可怕的人,但实际上我想表达一个更深层次的观点。

我非常支持这样一种观点,即科学地理解事物会增加它们的惊奇,而不是减少它。

理查德·费曼的一个比喻(他在这个视频中谈到了这个比喻)一直萦绕在我的脑海中:

我能欣赏花的美丽。同时,我对这朵花的了解比他多得多。我可以想象那里的细胞,里面复杂的动作,也有一种美。我的意思是,它不仅仅是这个维度,一厘米的美丽;在更小的维度上也有美,内部结构,还有过程。花朵颜色的进化是为了吸引昆虫来授粉,这个事实很有趣;这意味着昆虫可以看到颜色。这就增加了一个问题:这种美感是否也存在于低级形式中?为什么是审美?各种有趣的问题,科学知识只是增加了一朵花的兴奋、神秘和敬畏。只会增加。我不明白它是怎么减法的。
—理查德·费曼

理解我们如何用数学方法建立一个学习程序只会让我更着迷于看到人类学习的速度和效率,以及他们需要多么少的数据来找到好的分类。

不仅孩子们会这样做,我也开始意识到我自己的大脑是如何对周围的世界进行分类和再分类的,以及我一直在潜意识和有意识地学习多少东西。

神经网络的伟大之处在于,它们的基本设置非常简单,但在我们看来,它们做的事情就像是智能行为(例如,图片分类、语音、文本生成等)。).

理解学习背后的一些形式结构帮助我再次认识到简单的数学结构不仅可以帮助我们思考自然世界,还可以帮助我们思考我们自己的感知和行为(正如我在我关于自由意志的热力学的文章中所述),扩展了我们在思考我们自己和我们在世界中的角色时可以使用的概念框架。

对我来说,这真的增加了这一切的兴奋和神秘……最后,更严肃地说,这真的让我想有孩子来分享这一切。

为什么 NLP 很重要,它将是我们的未来

原文:https://towardsdatascience.com/why-nlp-is-important-and-itll-be-the-future-our-future-59d7b1600dda?source=collection_archive---------4-----------------------

由数据科学家解释

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

两年前,当我还在 CERN 进行我的 海外实习时,我与 乐天 Viki (你可以把它想象成另一个网飞)进行了一次电话面试,应聘数据科学实习生职位。

所以我打电话给一个人,他问我是否有 NLP 的经验。

嗯…你猜怎么着?

我问他,“你是说神经语言程序?”当我还在谷歌搜索 NLP 术语的时候——我想这是多任务处理的最佳状态。

长话短说,我知道我没有通过电话面试,尽管他在最后说了一句安慰的话,“谢谢你的时间。如果你被列入候选名单,我会尽快与你联系。”

经过一番谷歌搜索,当我知道 NLP 指的是自然语言处理时,那是一个“啊哈”的时刻(在面试电话之后)。

NLP——也被称为计算语言学——是人工智能和语言学的结合,它让我们能够像人类一样与机器对话。

换句话说,自然语言处理是一种处理、分析和理解大量文本数据的方法。

事实上,自然语言处理并不是什么新东西,它可以追溯到 20 世纪 50 年代,当时它是作为机器翻译(MT)开始的。

在数据科学领域工作了一段时间后,我开始意识到 NLP 及其广泛应用在我们日常生活中日益增长的重要性——无论是现在还是将来。

在这篇文章结束时,我希望你能理解自然语言处理的重要性,以及为什么它会成为未来——我们的未来。

我们开始吧!

为什么 NLP 很重要?

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

(Source)

让我们面对现实吧。每天都有数十亿的文本数据生成。

看看我们周围。

应用内消息(Whatsapp、微信、Telegram 等。)、社交媒体(脸书、Instagram、Twitter、YouTube 等。)、论坛(Quora、Reddit 等。)、博客、新闻发布平台、谷歌搜索等诸多渠道。

所有这些频道每秒钟都在不断地产生大量的文本数据。

由于大量的文本数据以及高度非结构化的数据源,我们不能再使用普通的方法来理解文本,这就是 NLP 的用武之地。

1.处理大量文本数据

随着大数据技术的发展,NLP 已经成为主流,因为这种方法现在可以通过云/分布式计算以前所未有的速度处理大量的文本数据。

想象一下,给你一个句子,任务是手动识别这个句子是否有积极/消极/中性情绪

太好了。这太容易了,你在几秒钟内就完成了。

想象一下,现在给你几百万个句子,再次进行情感分析。那要花你多长时间?嗯……你明白了。

今天的机器可以分析比人类更多的基于语言的数据,没有疲劳,并以一致、公正的方式

考虑到每天生成的非结构化数据数量惊人,从医疗记录到社交媒体, 自动化对于高效地全面分析文本和语音数据至关重要 。句号。

2.结构化高度非结构化的数据源

将文本数据描述为非结构化数据是一种保守的说法。

文本数据一塌糊涂。

阿德蒙德·李

想象一下你通常给朋友发信息的方式,“你在哪里啊😫”

仅仅一条短信我们就看到有缩写词(“r”和“u”)、俚语(“ah”)、省略的标点和表情符号。最棒的是,我们在这里只谈论英语。

总之,人类语言极其复杂多样。

不仅有数百种语言和方言,而且每种语言中都有一套独特的语法和句法规则、术语和俚语。

NLP 很重要,因为它有助于解决语言中的歧义,并为许多下游应用程序(如语音识别或文本分析)的数据添加有用的数字结构

为什么 NLP 将成为未来——我们的未来?

随着每天产生越来越多的文本数据,自然语言处理对于理解数据和在许多其他应用中的使用将变得越来越重要。

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

Google Translate from Chinese to English

您可能已经使用过一些最强大的 NLP 应用程序,但还没有意识到这一点。

看一下谷歌翻译就知道了。它是由谷歌开发的免费多语言机器翻译服务,由幕后的 NLP 提供支持。

或者也许你已经尝试过亚马逊 Alexa谷歌助手通过语音识别准确理解并回答你的问题——同样,通过 NLP。

更有意思的是,连数字营销行业都在向数据驱动的数字营销迈进。通过分析海量的文本数据和大规模,数字营销人员和品牌现在能够通过社交倾听了解客户的兴趣、痛点和品牌感知是什么。

在金融行业,聊天机器人已经为保诚的金融顾问提供了更好的服务体验,更加及时、准确,最重要的是,以人性化的方式回应了客户的查询。

NLP 已经改变了我们与计算机交互的方式,并且在未来还会继续下去。这些人工智能技术将成为从数据驱动向智能驱动转变的潜在力量,因为它们将在未来几年塑造和改善通信技术。

最后的想法

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

(Source)

感谢您的阅读。

我希望现在你已经更好地理解了为什么 NLP 变得越来越重要,以及它将如何影响我们的未来。

也许你是一名数据科学家,正在考虑专攻哪个领域。

也许你在数字营销领域工作,想知道如何在你的营销策略中利用 NLP 的力量。

没关系。

NLP 不再仅仅是未来。已经到了。

了解 NLP 如何应用于各种行业以及它如何塑造我们的未来非常重要。

一如既往,如果您有任何问题或意见,请随时在下面留下您的反馈,或者您可以随时通过 LinkedIn 联系我。在那之前,下一篇文章再见!😄

关于作者

Admond Lee 目前是东南亚排名第一的商业银行 API 平台 Staq 的联合创始人/首席技术官。

想要获得免费的每周数据科学和创业见解吗?

你可以在 LinkedInMediumTwitter脸书上和他联系。

** [## 阿德蒙德·李

让每个人都能接触到数据科学。Admond 正在通过先进的社交分析和机器学习,利用可操作的见解帮助公司和数字营销机构实现营销投资回报。

www.admondlee.com](https://www.admondlee.com/)**

为什么没人看你的仪表盘

原文:https://towardsdatascience.com/why-no-one-is-looking-at-your-dashboards-cbc495df0c41?source=collection_archive---------32-----------------------

不要犯这些错误

每个人都喜欢仪表板,但是它们实际上给你的企业带来了多少价值呢?仪表板应该给你即时的反馈,并让你改变你的行动,但更多的时候,我们现在看到的仪表板充满了新奇和噱头的视觉效果,降低了仪表板的实用性。今天,我想谈谈是什么让仪表板变得如此出色,并强调创建仪表板时的一些常见错误以及如何避免它们。

什么让仪表板变得伟大?

汽车仪表板是最常见的仪表板之一。它简单而有效,正是我们需要的仪表板。它被如此广泛地使用有几个原因,而且当我们创建我们的数字等价物时,有一些东西可以借鉴。

容易理解

仪表板对观众来说应该是直观的,内容应该容易理解,不需要太多的说明。这很像汽车仪表板的功能。汽车上的仪表板突出显示速度、每分钟转数和燃料,因为它们是司机在驾驶时应该知道的最重要的信息。类似地,一个好的业务仪表板应该只显示重要的指标,并且是对业务人员有意义的指标。

直接反馈

当仪表盘为你的行动提供反馈时,它是很有用的。在汽车里,速度表告诉司机他开得有多快,这样他就可以调整速度,这很有用,因为它使观众能够根据信息采取行动,并提供相关的反馈。同样,在商业中,向受众展示他们能够影响并尽快获得反馈的指标也很重要。

告诉你你需要知道的

汽车仪表板上的另一个特征是警示灯,当车辆出现问题需要驾驶员注意时,警示灯会闪烁。它们是仪表板的一个有用的特性,因为在正常操作中,它们不会占用用户的任何注意力,只在需要时才出现。对于企业来说,及时的警告同样有用,可以让人们在需要的时候意识到企业正在发生什么。

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

Photo by Daniel von Appen on Unsplash

为什么没人看你的仪表盘

以下是我们在创建仪表板时经常犯的一些错误。

利益不一致

人们只看他们感兴趣的东西,仪表板最常见的问题之一是它显示的信息与观众无关。在您的企业中为多种目的构建一个仪表板很有诱惑力,但它就是不起作用。如果您试图构建一个为所有人服务的单一仪表板,它最终不会为任何人服务。在创建仪表板时,我们应该首先将受众分成兴趣相同的群体,因为他们对同一组信息感兴趣。您可以使用现有的业务单位作为起点,但将来可能需要进一步细分它们。一旦你记住了你的受众,试着理解他们关心什么信息,他们用什么标准来衡量成功。这一步说起来容易做起来难,因为不是所有的组织都有一个清晰的方法来衡量成功,但你必须帮助你的受众确定正确的衡量标准。从正确的指标开始将确保你的观众对你试图展示给他们的东西感兴趣。

无法行动

回到速度计的例子,虽然它对司机有用,但对乘客毫无用处。虽然他可能对速度感兴趣,但他没有办法根据该信息采取行动。当我们创建仪表板时,也可以应用同样的原则。如果您的受众不能根据收到的信息采取行动,他们就不太可能对仪表板感兴趣。例如,利润是最重要的指标之一,但由于它是一系列行动的结果,人们很难直接影响它。通过将利润分解成各个组成部分,你可以开始帮助不同的人认识到他们可以如何为顶线指标做出贡献,例如,让客户支持侧重于留住客户,销售侧重于获得客户的成本,等等。

虚荣度量

在构建有效的仪表板时,指标的选择至关重要。您希望制作一个显示良好性能的仪表板,但有时您可能会陷入虚荣度量的陷阱。虚荣心指标让人们感觉良好,但对业务来说并不实际可行或至关重要。总页面浏览量或应用下载量等指标是虚荣指标的例子,因为它们总是会随着时间的推移而向右上方移动,但它不会给人们提供任何关于他们表现如何以及他们可以做些什么来改善的有用信息。

缓慢变化的数据

人们看仪表板是因为它们是动态的,告诉你你的业务从一天到下一天是如何运作的,有时甚至是从一秒到下一秒。因此,当您构建仪表板时,您需要考虑在人们查看您的仪表板的时间段内,信息是否合适。如果你的客户获取周期比人们查看仪表板的频率长得多,那么像客户人口统计这样的信息是没有用的,因为它看起来是静态的,只会占用宝贵的空间和注意力。虽然这种静态信息对于上下文非常重要,但是应该将它们从日常仪表盘中分离出来。

糟糕的图形

虽然使用花哨的图形和新图表给你的仪表板带来不同的东西很有诱惑力,但与更传统的可视化相比,它们不一定能以同样的效率传达信息。视觉设计在这方面也起着很大的作用,间距、颜色、形状和其他视觉元素的使用都有助于传达你想要向用户展示的信息。所以下次当你创建一个新的仪表板时,坚持使用简单的图表来传达信息。你的听众越快得到他们需要的信息,他们就能越快调整他们正在做的事情。

现在怎么办?

归根结底,没有完美的仪表板,因为事情总是在变化,无论是您的业务优先级、您的受众兴趣,甚至是您的技能。我们需要认识到,仪表板只是一种工具,我们可以用它来统一理解和标准化度量标准,它们不意味着是一种静态的东西,我们只需构建一次,然后盲目地遵循它。我们应该定期重新评估它们对受众是否有用,因为仪表板的价值在于它所激发的行动。请记住,仪表板是为了客观地告诉你你的业务是如何执行的,有时指标看起来不太好,但这正是为什么你有一个仪表板。你永远不会想要一辆在你超速时不会告诉你的车,所以你为什么想要一个在你的结果不如预期时不会告诉你的仪表盘。

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

为什么没人关心你的数据科学项目

原文:https://towardsdatascience.com/why-nobody-cares-about-your-data-science-project-94dc4fe91e42?source=collection_archive---------4-----------------------

以及该怎么做

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

Source: https://unsplash.com/photos/tMXjU4cGsNA

刺猬和狐狸

最近,在读约翰·路易斯·加迪斯的《论大战略》时,我看到了哲学家以赛亚·伯林的著作。加迪斯基于以赛亚·伯林 1953 年的书《刺猬和狐狸:一篇关于托尔斯泰历史观的论文》对狐狸和刺猬的分类框架给我留下了特别有趣的印象。在他的书中,柏林建立在一个被认为是希腊哲学家阿奇洛库斯的片段之上,据说他说过“狐狸知道很多事情,但是刺猬知道一件重要的事情。”根据这句话,伯林认为作家和思想家可以被归类为狐狸或刺猬。根据柏林的说法,狐狸有着广泛的兴趣,并且依靠大量的经验和资源来做决定。在更详细地阐述狐狸的特征时,伯林认为亚里士多德和歌德是具有狐狸特征的思想家的潜在例子。另一方面,刺猬倾向于将他们对世界的解释建立在一个单一的、明确的想法上。为了说明他的观点,伯林将柏拉图和尼采等思想家列为具有刺猬般特质的思想家。

大型组织中的数据科学项目

虽然乍一看,柏林的框架可能为数据科学项目提供相对较少的价值,但研究其背后的核心思想会揭示一个完全不同的画面。由于最近数据科学的普及,许多主要投资于技术行业的组织开始雇用数据科学家。然而,这些数据科学家发现自己所处的环境与科技公司截然不同。首先,负责数据科学团队的主管可能根本没有数据科学或分析背景。因此,数据科学团队将很难向管理层传达其提议的项目。除了负责预算的人不完全了解数据科学团队的需求之外,数据科学家可能还会发现自己面临着来自大型组织的普通员工对其项目的大量怀疑。虽然这种怀疑背后可能有许多驱动因素,但最普遍的原因通常是缺乏对数据科学团队实际工作的了解。业务与技术关系不大的组织通常有可能知道如何使用 Microsoft Office 的员工(如果你幸运的话)。因此,数据科学家和剩余劳动力之间的知识差距从一开始就相当大。在我看来,把一切都贴上*’AI’*的标签,更是雪上加霜。大多数人,当面对“人工智能”这个术语时,会立即想到拥有与人类或其他科幻小说虚构人物相同能力的机器人。在这种情况下,人们对数据科学团队所做的一切都会产生一种自然的犹豫,认为它太复杂而难以理解,因此不值得在一开始就投入时间。

数据科学家应该是刺猬还是狐狸?

柏林提出的分类框架从几个方面说明了数据科学团队面临的挑战。在以下段落中,我将尝试通过将一般概念应用于数据科学家日常生活中的具体挑战,将 Berlin 的框架扩展到大型组织中的数据科学家。

让我们先来看看什么样的特征会导致数据科学家被归类为刺猬。在我看来,如果一个数据科学家坚持不懈地专注于自己的动机,他或她就可以称得上是一只刺猬。当提出一个项目时,他或她不关心非技术利益相关者(他们实际上可能是负责预算的人)的意见和担忧,而只关心她自己对这个特定项目的迷恋。虽然被项目的技术方面迷住绝对没有错,但恰恰相反,试图用这种心态追求数据科学项目将在非技术组织中导致巨大的问题。如果只能从数据科学家的角度来看待项目,你很快就会忽略负责预算的人的想法和顾虑。在与管理层沟通时,特别是在非技术组织中,项目批准与管理层能够看到您的项目如何为组织创造价值高度相关。在大多数情况下,价值要么是降低成本,要么是增加收入。因此,数据科学家 hedgehog 遇到的许多困难与从不同角度处理问题的能力以及相应地制定项目提案的能力直接相关。

与刺猬不同,狐狸依靠大量的输入来帮助引导它们。直觉上,这似乎是与数据科学相关的两者中更有益的一个,因为已经确定了对技术方面的狭隘关注会带来各种问题。然而,在数据科学领域只做一只狐狸并不一定比只做一只刺猬好。虽然严格专注于你的观点可能会对你的项目获得支持有害,但试图将其他人的意见纳入你的项目同样会注定项目的成功。向你周围的每一个人保证你会根据他们的需求调整你的项目可能会简化项目的资金保障,然而,这可能会扭曲你的项目,使之成为一个完全不同的项目。在我看来,不得不将项目推销给一个完全不熟悉数据科学的人的问题,最好的解决方法不是几乎完全放弃你的输入,而是纯粹依靠那些对手头的事情没有你理解得那么深入的人的意见。在这种情况下,我认为在涉及到项目的核心概念时能够坚持自己的立场是非常重要的。

结论

总而言之,在我看来,为了完成数据科学项目,拥有刺猬般的能力来保持对最终目标的专注是至关重要的。与此同时,不要陷入你的个人看法和思维方式,而是努力理解其他利益相关者来自哪里,以及如何最好地接近他们,对我来说同样重要。我不确定这个结论是否符合伯林提出的框架,然而,据报道,伯林本人从来不希望人们把这种分类看得太重。尽管如此,hedgehog 和 fox 框架可以为重要的讨论提供刺激。

如果你对这篇文章有任何想法,请随时联系我。我很高兴听到并讨论你的意见。

参考文献:

[1]加迪斯,约翰·路易斯,论大战略 (2018),企鹅出版社

[2]柏林,以赛亚,《刺猬和狐狸》 (1953),魏登菲尔德&梁君诺

为什么规范很重要——机器学习

原文:https://towardsdatascience.com/why-norms-matters-machine-learning-3f08120af429?source=collection_archive---------19-----------------------

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

Play with norms: https://www.desmos.com/calculator/wznruz7mxs

评估是所有建模和机器学习问题的关键步骤。因为我们经常对整个数据集进行预测,所以提供一个简单有效的数字来概括我们模型的性能。

在很多情况下,我们需要将关于一个数据集的信息压缩成一个单独的。例如:

  • 确定多维数据点的大小
  • 计算机器学习模型的损失
  • 计算预测模型的误差

在本文中,我将回顾在这些情况下最常用的规范,即 L 和 L 规范。我将描述它们的异同,以及何时使用哪个规范。此外,我将展示如何可视化这些规范以及它们在优化问题中的使用。

术语

有几个名字描述了相同的数量,所以让我们先把它清除掉。你可能在不同的上下文中听说过这些短语,但它们可能描述的是同一个东西!如上所述,这些规范用于量值和距离、误差近似值和回归的上下文中。

l 范数

L 范数通常被称为曼哈顿/出租车距离平均绝对误差(MAE)最小绝对收缩和选择算子 ( LASSO)。

L 定额

L 范数通常被称为欧几里德距离均方误差(MSE) /最小二乘误差脊算子。

定义 L & L 规范(以及更多!)

L 和 L 范数通常用于给向量指定一个量级。对于一个向量 xN 个分量,L 只是把这些分量相加。因为我们希望我们的幅度总是正的,所以我们取分量的绝对值。

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

L 范数取平方值之和,最后取平方根。L 范数和 a 标准距离公式一样,求 A 到 b 的最短路径。

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

如果你开始看到一个模式,那么你可能会问:为什么停在 2?我们也可以用这种方法为所有 1 ≤ p < ∞创建一个范数!

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

可视化 L & L 规范

从定义中我们可以看出,L 范数只关心单个的分量,而 L 范数寻找的是最短的距离。

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

L¹ and L² norms on a city block grid.

红色、蓝色和黄色距离都计算 L 距离,而绿色距离计算 L 距离。L 范数被描述为出租车距离的一个原因是因为它描述了你到达目的地必须经过的街区数。

可视化差异—优化

假设我们试图解决一个最优化问题。这意味着我们试图找到最佳的输入,使输出损失最小化。

范数是惩罚的最佳选择,因为它们为每个输出分配了一个合理的大小。

考虑最简单的优化问题——解决一个线性问题。这涉及到矩阵 A 和向量 b 。这些问题往往没有单一的解决方案,可能有一系列或一个平面的解决方案。

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

在这种情况下,我们需要从这一整套解决方案中找到最佳解决方案。引入范数惩罚,如 L 或 L 范数,是一种常见的方法。

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

Play around with this graph: https://www.desmos.com/calculator/wznruz7mxs

上图中,红线代表了方程 x + 3y = 5 的所有可能解。蓝色菱形代表固定 L 范数为 5 的所有解,橙色圆圈代表 L 范数相同为 5 的所有解。

如你所见,解决方案是不同的,这取决于我们决定使用哪个规范。由于 L 范数具有菱形形状,因此通常使用 L 范数可以找到稀疏的解。此外,由于 L 范数最小化了欧几里德距离,所以使用 L 范数经常可以找到消除异常值的解决方案。

谢谢!

如果您想玩玩上面的图表,看看 L 和 L 规范之间的差异,请查看 Desmos 上的这张交互式图表!

为什么不把均方差(MSE)作为 Logistic 回归的损失函数?🤔

原文:https://towardsdatascience.com/why-not-mse-as-a-loss-function-for-logistic-regression-589816b5e03c?source=collection_archive---------3-----------------------

作者:*, Souradip Chakraborty * (*表示同等贡献)。

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

在这篇博文中,我们主要比较了逻辑回归的“对数损失与**“均方误差”,并基于经验和数学分析,说明了为什么同样推荐使用对数损失**。

两个损失函数的等式如下:

日志丢失:

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

均方损失:

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

在上面的两个等式中

y:实际标签

ŷ:预测值

n:类别数

假设我们有一个包含 2 个类(n = 2)的数据集,标签分别表示为**“0”“1”。**

现在,我们计算预测值和实际标签完全不匹配时的损失值,并了解 log-loss 如何优于 MSE。

比如:

比方说

  • 数据集中给定样本的实际标签是“1”
  • 应用 sigmoid 函数= 0 后模型的预测

使用 MSE 时的损失值:

(1- 0)² = 1

使用测井损耗时的损耗值:

在插入损耗方程的值之前,我们可以看看 log(x) 的图形是什么样的。

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

Figure 3: f(x) = log(x)

从上图可以看出随着 x 趋于 0, log(x)趋于-无穷大。

因此,损失值为:

-(1 * log(0) + 0 * log(1) ) =趋于无穷大!!

如上所述,与使用对数损失函数计算的损失值相比,使用 MSE 的损失值要小得多。因此,对我们来说非常清楚的是,MSE 不会强烈地惩罚错误分类,即使是完美的不匹配!

但是,如果预测值和实际标签完全匹配,则两个损失值都将为“0”,如下所示。

实际标签:“1”

预测:“1”

MSE: (1 - 1) = 0

日志损失:-(1 * Log(1)+0 * Log(0))= 0

这里我们已经说明了 MSE 对于二元分类问题并不是一个很好的选择。但是如果目标值是一次性编码的,这同样可以扩展到多类分类问题。

Logistic 回归中的均方误差和非凸性问题。

在分类场景中,我们经常使用基于梯度的技术(牛顿拉夫森,梯度下降等…)通过最小化损失函数来找到系数的最佳值。因此,如果损失函数不是凸的,就不能保证我们总是达到全局最小值,而是我们可能会陷入局部最小值。

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

Figure 4: Convex and non-Convex functions

在深入探讨为什么 MSE 在逻辑回归中使用时不是凸函数之前,首先,我们来看看函数是凸的条件是什么。

定义在一个n 维区间上的一个实值函数,如果函数的图上任意两点之间的线段位于图的上方或图上,则称该函数为

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

Figure 5: Convexity of a function

如果 f 是两次可微的,并且定义域是实直线,那么我们可以将它刻画如下:

f 为凸当且仅当f”(x)≥0对于所有 x 。因此,如果我们能证明损失函数的二重导数≥ 0,那么我们就可以说它是凸的。 更多详情,可以参考 这段视频。

现在我们从数学上证明了逻辑回归的 MSE 损失函数是非凸的。

为了简单起见,我们假设对于给定的数据集,我们有一个特征**【x】【二进制标签】。在下图中,f(x) = MSE** ,ŷ是应用 sigmoid 函数后获得的预测值。

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

Figure 6: MSE double derivative

从上面的等式中, ŷ * (1 - ŷ) 位于[0,1]之间。因此,我们必须检查 H(ŷ) 对于**“x”**的所有值是否为正,是否为凸函数。

我们知道 y 可以取两个值 01。让我们检查两种情况下的凸性条件。

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

Figure 7: Double derivate of MSE when y=0

所以在上述情况下,当 y = 0 时,从方程中可以清楚地看出,当 ŷ位于区间**【0,2/3】时,函数【h(ŷ】**≥0,当 ŷ位于区间【2/3,1】时,函数【h(ŷ)≤0。这说明函数不是凸的。

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

Figure 8: Double derivative of MSE when y=1

现在,当 y = 1 时,从等式中可以清楚地看出,当 ŷ位于区间**【0,1/3】**时,函数 H(ŷ)0,当 ŷ位于区间【1/3,1】**时,函数 **H(ŷ) ≥ 0。这也说明函数是不凸的。

因此,基于凸性定义,我们从数学上证明了逻辑回归的 MSE 损失函数是非凸的,不推荐使用。

现在是“对数损失”函数的凸性问题!!我们将从数学上证明对数损失函数对于逻辑回归是凸的。

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

Figure 9: Double derivative of log loss

θ:自变量“x”的系数。

如最终表达式(对数损失函数的双导数)所示,平方项总是≥0,而且,一般来说,我们知道 e^x 的范围是 (0,无穷大)。因此,最终项总是≥0,这意味着在这种情况下对数损失函数是凸的!!

最终想法:

我们希望这篇文章能够让你理解在逻辑回归中使用 MSE 作为损失函数的缺点。如果您有任何想法、意见或问题,请在下面留下评论或在 LinkedIn 上联系我们,别忘了点击👏如果你喜欢邮报。

[## Rajesh Shreedhar Bhat -数据科学家-印度沃尔玛实验室| LinkedIn

查看 Rajesh Shreedhar Bhat 在世界上最大的职业社区 LinkedIn 上的个人资料。

www.linkedin.com](https://www.linkedin.com/in/rajeshshreedhar/) [## Souradip Chakraborty -统计分析师-沃尔玛印度实验室| LinkedIn

查看 Souradip Chakraborty 在全球最大的职业社区 LinkedIn 上的个人资料。

www.linkedin.com](https://www.linkedin.com/in/souradip-chakraborty/)

参考资料:

[## 凸函数

在数学中,定义在 n 维区间上的实值函数称为凸(或下凸或…

en.wikipedia.org](https://en.wikipedia.org/wiki/Convex_function)

为什么不在分割数据之前选择要素

原文:https://towardsdatascience.com/why-not-to-select-features-before-splitting-your-data-2d6aba2e9fb?source=collection_archive---------10-----------------------

使用编码示例解释交叉验证的正确和错误方式

想象一下:一名斯坦福大学的博士生试图利用基因数据预测一种罕见心脏病的发生。该学生为 50 名患者收集了超过 10 万个基因表达数据(预测值)。然后,该学生从 10 万个预测者中挑选出最好的 100 个作为“初步筛选”的一部分,使用交叉验证将统计模型仅拟合到 100 个筛选的预测者,并报告准确率超过 65%(这对罕见的心脏病来说是一件大事)。听起来不错?

不!

这位学生对最近应用统计学中的一个危险趋势做出了贡献,即使用交叉验证来呈现他们的研究中高度偏颇的精选结果。重要的是不仅要了解学生错在哪里,还要了解他们为什么也会掉进这个陷阱。事实上,他们已经“窥视”了他们的验证集,甚至没有意识到这一点。

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

Don’t peek into your validation/test data

在本文中,您将学习-

  1. 快速识别可疑的统计研究,这些研究声称在初步筛选特征后进行了“独立验证”
  2. 以正确的方式进行交叉验证
  3. 在 R 笔记本上练习实现它

随着机器学习在收集数据的几乎每个领域的爆炸式增长,人们越来越多地找到了快速训练和部署现成模型的方法,而无需完全理解它们背后的算法。仅用一行代码就能让机器学习库“容易”实现的最新趋势只会增加问题。因为这些捷径,我们不时会遇到可能出错的例子,比如斯坦福学生的例子。

那个学生并不孤单——错误估计的交叉验证错误偶尔也会出现在一些高知名度的学术期刊上。事实上,一整篇文章都致力于在美国国家科学院学报上记录这种选择偏差的例子。所以,让我们来看看上面的例子中到底哪里出错了。

交叉验证:错误的方式

在上面的例子中,学生使用所有的例子(患者)来筛选预测因子,而不是将他们自己仅仅限制在训练折叠中。由于他们正在处理一个广泛的数据集——特征数量(基因)> >样本数量(患者)——执行特征选择以缩小到基因子集是一个自然的选择。这实际上也是防止模型过度拟合的有价值的步骤。但是通常情况下,筛选是在项目的早期阶段进行的,导致人们在使用交叉验证建模时忘记了它。如果我们使用所有的例子来选择我们的预测器(图 1),模型甚至在预测之前就已经“窥视”到验证集了。因此,交叉验证的准确性必然比真正的模型准确性高得多。

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

Fig. 1. | The wrong way to perform cross-validation. Notice how the folds are restricted only to the selected predictors.

下面是一个交叉验证陷阱的工作示例,我们在预测像掷硬币这样真正随机的事情时获得了 99%的准确率!完整的 R 笔记本也可以在这里买到。

交叉验证:正确的方法

另一方面,如果我们运行与上面相同的模型,但是**只使用训练折叠来筛选预测器,**我们将有一个更好的模型真实误差的表示。分割数据的正确方式如图 2 所示。在这种情况下,同一个模型的交叉验证准确率为 46%,或者换句话说,该模型在预测抛硬币时的正确率不到一半。

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

Fig. 2 | The right way to cross-validated. Notice how the validation fold is separated before selecting the features

经验教训

在本文中,我们学会了以正确的方式进行特征筛选,而不是落入交叉验证陷阱。要复习,记得-

  1. 仅将训练数据(或训练折叠)用于特征筛选或任何其他数据操作
  2. 在对同一验证集进行预测时,不要使用模型可以从中受益的验证集中的任何信息。验证应该总是独立的。

至于那个严重高估了他们模型预测心脏病准确性的斯坦福学生呢?幸运的是,在将他们的错误公之于众并误导医学协会之前,这位学生遇到了罗布·提布拉尼(我的教授)。如果你想听听 Rob 自己是怎么说的,这里有他的视频

为什么 Python 对基于人工智能的项目有益

原文:https://towardsdatascience.com/why-python-is-beneficial-for-ai-based-projects-15b28ba19982?source=collection_archive---------16-----------------------

你是否困惑于为你的下一个大的人工智能项目选择哪种语言?了解有关 Python 核心功能的更多信息。

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

今天,很难想象没有不同程度的人工智能技术的现代商业。聊天机器人、虚拟助手、语音搜索和其他融入市场的创新正在增加企业的收入,同时改善客户的体验。如果你想开始自己的基于人工智能的项目,那么你会事先制定出一个策略,用于编码和所有其他过程的编程语言(进一步 PL)。

为什么选择 Python 做 AI 驱动的项目?

毫无疑问,人工智能技术是未来。考虑到这一趋势越来越受欢迎,以及准备投资于此的人数,到 2025 年,全球人工智能市场将达到898 亿美元。

PL 是你首先应该考虑的。编码的复杂性以及有经验的合格开发人员的可用性也是需要考虑的关键因素。当涉及到人工智能行业时,你需要有效地处理和处理大量数据,在这里我们为你提供了至少 8 个理由为什么你会选择 Python 来开发你的人工智能项目

陡峭的学习曲线

由于是基于 OOP 的,Python 提供了来自所用 PL 的 API,简化了学习过程,减少了新开发人员学习基础知识和开始编写 AI 应用程序所需的时间。此外,它具有简单的语法,类似于真正的英语,即使是初级或无经验的 Python 开发人员也可以使用复杂的系统。

伟大的图书馆生态系统

满足各种需求的巨大预建库是 Python 如此适合人工智能项目的下一个原因。选择任何符合您需求的。因此,如果你的项目需要高级计算,那么 SciPy 就是你需要的,对于科学计算——NumPy 和 ML,你最好使用 Pybrain。领导者是 AIMA 或*“人工智能:现代方法”*,它将通过缩短开发人员编码所需的时间来节省您的预算。这只是用于基于人工智能的项目的内置库的一部分。而这就是 Python 的亮点。

灵活性

Python 基于面向对象编程,专注于 RAD,DRY,对变化有很好的适应性,没有逻辑重复的风险。您的选择是:编写脚本或使用 OOPs。开发人员修改几行代码,很快就能得到结果。不需要重新编译源代码。除此之外,由于在 IDE 本身中检查代码的能力,还有机会利用不同的算法和语言以及 Python。

平台独立性

Python 的下一个亮点是平台独立性。可以对代码和人工智能应用程序在新操作系统中运行的方式进行一些修改。在不同的平台上,如 Windows、Linux、MacOS、Unix 或任何其他平台上,迁移代码和测试应用程序肯定会节省时间。该过程变得更容易和更明显,并且因此降低了成本。

和睦相处

下一个强大的特性为 Python 增加了更多的灵活性,因为 AI 项目与其他语言和各种平台高度兼容。多亏了 Python 包索引(PyPI) 包含了许多第三方模块,允许 Python 与其他语言交互。它简化了开发人员的工作,并节省了您的资金。

社区支持

独一无二的是 Python 有一个强大的开发者社区支持。这是一个开源平台,让您可以访问免费的 Python 在线文档和面向新手和专家的论坛。在那里,您可以获得许多有用的信息、库和工具,还可以参与讨论、解决问题、找到修复错误的程序,以及在开发的每个阶段的各种问题上获得帮助。

良好的可视化选项

正如我们上面所写的,Python 有各种各样的内置库。另一件很棒的事情是,它们中的一部分只是可视化工具。它为开发人员提供了一个机会,例如通过直方图来表示非程序员可以访问的数据。通过这种方式,您可以有效地呈现数据和可理解的报告,以可视化流程,从而在每个层面上减轻您的控制。

越来越流行

没有人能忽视上面列出的 Python 的好处。所有这些都激起了 PL 越来越受欢迎的趋势,这种趋势将持续到 2020 年,这取决于 StackOverflow 提供的数据。例如,今天找到和/或替换一个经验丰富的 Python 程序员比找到一个熟练的 LISP 或 Prolog 专家要容易得多。更重要的是,这种情况下成本会更低。

哪些行业会受益于 AI?

如果你准备开始自己的人工智能项目,剩下要做的就是选择行业来实现你未来的应用。在那里你有很多选择。在这里,我们将帮助您拉近距离并简化您的决定。下面你会发现在不久的将来,7 个行业将从人工智能中获益最多。

卫生保健

实施人工智能技术最有前景的行业之一是医疗保健。据报道,到 2026 年,通过采用人工智能医疗应用,美国每年可以节省高达 1500 亿美元。即时手术、虚拟护理助理、放射工具的改进、诊断测试和管理任务的自动化、治疗的准确性、疾病的预测,是该技术可以应用的几个领域。

银行业务

据预测,到 2030 年,通过实施人工智能技术,银行业将节省约1 万亿美元,传统成本将降低约 22%。改进和个性化的客户服务、管理投资、收集财务数据、使用预测分析、风险评估等。T4 人工智能可以应用于金融公司和银行。

教育

电子学校新闻报道称,到 2021 年,人工智能技术在教育领域的应用将增长 47.5%。使用人工智能应用进行教学有望实现更个性化的学习、更高的学习效率和速度、对增强内容的访问、准确的规划以及新水平的指导等。很明显,人工智能将在未来几年重塑电子学习。

农业

由于劳动力短缺,采用人工智能是世界农业的一个生存问题。因此,在许多过程中实施自动化技术将会给农业带来巨大的好处。这样可以降低成本,增加公司的收入。

营销

营销可以通过技术栈的方式利用人工智能,员工手动制作的流程可以自动化,例如,它可以带来更高的效率和快速分析大型数据集。Gartner 表示,到 2020 年,全球 30%的公司将在至少一个销售流程中使用人工智能技术。此外,根据埃森哲的报告,到 2035 年,盈利能力将增长 38%,人工智能将创造14 万亿美元的额外收入

汽车的

你肯定听说过自动驾驶汽车,所以这是关于人工智能技术的。然而,这并不是在汽车行业使用人工智能技术的所有方式:

  • AI 驾驶特性(驾驶员辅助和自动驾驶驾驶);
  • AI 云服务(预测性维护、个性化营销);
  • 汽车保险和风险评估;
  • 汽车制造中的人工智能。

根据最近的研究,专家预计汽车人工智能市场到 2025 年将达到105.733 亿美元,2017 年至 2025 年间的 CAGR 为 38.46%。

电子商务

到 2021 年,电子商务销售额预计约为 4.5 万亿美元。这并不是没有使用人工智能技术。由于人工智能,这些网站通过聊天机器人为客户提供 24/7 服务和帮助,通过利用人工智能技术、物联网和其他在电子商务中使用人工智能的例子分析 CRM 数据来改善消费者体验。

结束语:Python 是人工智能项目的理想选择吗?

所以,我们来总结一下上面写的。内置库的高度多样性、简单的语法、可读性、兼容性、复杂算法的快速测试、非程序员的可访问性和其他特性使 Python 值得您关注。所有这些都简化了流程,节省了预算,增加了 Python 的受欢迎程度。考虑到使用 PL 的所有优势,结论是显而易见的——Python 是你在基于人工智能的项目中需要考虑的。

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

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

Roman Zhidkov 是 DDI 开发公司的首席技术官。Roman 负责 DDI 的技术战略,并在公司内部推动新技术计划方面发挥着关键作用。他了解技术在其他技术领域、客户需求、业务影响和公司战略方面的背景。

为什么零售商希望填补更多的数据科学家职位

原文:https://towardsdatascience.com/why-retailers-want-to-fill-more-data-scientist-positions-b0c042cfadfe?source=collection_archive---------29-----------------------

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

总体而言,数据科学家的角色是最受欢迎的职位之一,但在零售部门,人们尤其努力利用数据科学家提供的技能。

无论你目前是一名数据科学家还是渴望成为一名数据科学家,零售商可能会有各种各样的理由雇佣你。这是其中的四个。

1.他们想效仿主要竞争对手的做法

一些零售商在注意到其他公司在这方面取得成功后,感到有必要专注于雇用数据科学家。Target 是第一批利用数据作为业务增长方式的公司之一,它是在众多零售商遭遇低迷的时候做到这一点的。

尽管 2012 年至 2013 年期间,塔吉特的整体销售额有所下降,但那一年的在线销售额增长了近 30%,同时也增加了该公司积累的数据量。

2013 年,该公司聘请 Paritosh Desai 担任商业智能、分析和测试副总裁。那个人开始建立一个数据科学家团队,并巩固了该公司更加关注其数据的愿望。

德赛进行了许多以数据为中心的变革,包括允许经理们访问汇编的数据。他们还被鼓励提出与数据相关的问题,并依靠数据科学家找到答案。

Target 还精心制定了其数据战略,深知需要投入时间和人力资源来实现其目标。该公司对数据科学的关注仍有回报,同行零售商可能会意识到,他们不能忽视数据,以跟上 Target 或其他以类似方式看待信息价值的零售商的步伐。

2.数据相关的见解有助于零售商吸引顾客

在他们有机会通过现在如此容易获得的方法来挖掘数据之前,零售商经常使用猜测和经验来评估如何让客户满意和忠诚。雇佣数据科学家可以让零售商决定如何利用实时数据吸引顾客,而不是基于历史信息进行预测。

数据科学允许采取更个性化的方法,并总结如何向更小部分的客户甚至个人购物者提供令人兴奋的优惠,而不是找出哪个大客户群体最有可能对特定优惠做出有利的反应。然后,零售商更有能力提供人们最想要的东西。

如果没有数据的帮助,他们可能会给出吸引力较小的激励措施,因为目标群体更广泛。

未能清楚了解顾客的需求可能会让零售商浪费金钱和时间,因为他们的活动失败了。相反,当商店就新产品、营销方法、价格和限时优惠做出重要决策时,利用数据加深品牌对顾客的了解应该会带来更多信心。

商店还可以要求他们的数据科学家查看与产品相关的细节,例如人们有多大可能会退回某件商品或需要对其提出保修申请。了解这些事情可以促使商店决定停止销售特别有问题的商品。

3.技术让数据收集变得更加简单

当今零售商使用的服务点(POS)系统有各种有用的组件来协助商店的运营。除了现金抽屉和收据打印机等基本设备,许多商店还为收银员配备了触摸屏面板,以及用于跟踪销售和库存的分析软件。人们可以直接在 POS 系统中查看统计数据,也可以将数据导出到专业分析软件中。

数据收集的便利性使得许多零售商渴望利用唾手可得的信息。他们通常通过雇佣能够彻底检查信息并发现有意义趋势的数据科学家来做到这一点。他们也可能通过外部数据进行挖掘。

Lowe’s 利用 Pinterest 数据来了解用户意图。更具体地说,它将内部交易数据添加到客户的 Pinterest 档案中,并依靠这些数据来改进广告。

例如,如果 Lowe’s 的数据表明一个人经常购买园艺用品,它可以提供相关的 Pinterest pins 作为广告策略。Lowe’s 表示,使用 Pinterest 并与可购物胸针互动的客户的 T2 点击率比平均点击率高出 20%。

这家家装零售商还希望与一家位置数据提供商合作,衡量 Pinterest 互动是否会带来更多实体店流量。

无论零售商是单独使用内部数据,还是将内部数据与社交媒体网站等外部数据相结合,都有更多的机会来收集数据并根据数据采取行动。

作为采用这种方法的公司的数据科学家,您可以帮助零售商从现有数据源中提取有价值的见解,或者推荐其他与指标相关的投资。

4.数据有助于零售商决定进行哪些改进

零售专家经常谈论正在影响实体店的“零售末日”,以及品牌可以做些什么来保持业务。

截至 2018 年 8 月,数据已经显示,按平方英尺计算,2018 年是零售商店关门的 10 年高点。在最近的一次全国零售联盟会议上,热门话题之一是科技可以帮助实体零售商恢复

一些品牌使用增强现实(AR)、机器人和应用程序来补充购物者的店内体验。FAO Schwartz 用 iPad 技术更新了其 Rockefeller Plaza 商店,包括让孩子们在 iPad 应用程序中组装赛车,然后让“机械师”在现场组装玩具。

当零售商让数据科学家加入他们的团队时,他们可以通过数据挖掘,发现哪些改进最能引起客户的共鸣。这样做可以帮助实体零售商和网上零售商。

例如,数据科学家可能会注意到,网站上超过一半的首次购物者在到达注册表单后没有完成购买就离开了。

在这种情况下,该品牌可能会简化其注册表格,使其不那么吓人,或者让购物者导入脸书或谷歌等其他公司存储的数据,以简化注册过程。然后,顾客感到更受鼓励去买东西,这增加了零售商的利润。

作为一名受雇于零售商的数据科学家,你可以建议应用数据来解决该品牌存在的特定已知问题。有了这种以目标为导向的方法,商店就可以从他们的数据中获得最大价值,这样数据就不会被浪费掉。

数据科学家拥有零售业急需的技能

作为一名数据科学家,你拥有零售商想要和需要的能力。本概述详细介绍了商店使用数据的一些最常见的原因,但并不全面。

如果你要把你的技能带到零售业,它们会让公司在充满挑战的环境中保持稳定和增长。

照片由 迈克·彼得鲁奇 拍摄

为什么样本方差除以 n-1

原文:https://towardsdatascience.com/why-sample-variance-is-divided-by-n-1-89821b83ef6d?source=collection_archive---------3-----------------------

解释你的老师没有教过的高中统计学

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

Photo by Tim Bennett on Unsplash

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

如果你正在阅读这篇文章,我假设你已经遇到了样本方差的公式,并且知道它代表什么。但为什么分母是 (n-1) ,而不是 n 仍然是个谜。原因如下。

目录

最初发表于edenau . github . io

术语

群体:包含群体
所有成员的集合:包含群体部分成员的集合(技术上讲是群体的多子集)

独立同分布(i.i.d .)随机变量 :
假设所有样本(a)都相互独立,且(b)具有相同的概率分布。

中心极限定理 :
当样本量足够大时,独立同分布随机变量的抽样分布趋于一个正态(高斯)分布

预期值 :
同一实验重复次数的长期平均值

无偏估计量 :
无偏估计量的期望值等于被估计参数的真值。换句话说,无偏估计量的分布集中在正确的值上。

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

Photo by Austin Neill on Unsplash

设置

给定一个具有未知总体均值和总体方差 σ 的大型高斯总体分布,我们从总体中抽取个独立同分布样本,使得对于来自集合的每个样本 x_i******

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

x_i 的期望值是 μ ,而 x_i 的期望值是大于 μ 。是因为平方函数的非线性映射,其中较大数字的增量大于较小数字的增量。例如,set (1,2,3,4,5)的均值为 3,方差为 2。通过平方每个元素,我们得到平均值为 11=3 +2 的(1,4,9,16,25)。我们在以后的阶段需要这个属性。

评估者

由于我们不知道真实的总体属性,我们可以尽力使用类似的结构从样本集中定义这些属性估计量**

让我们给***【σ戴上一顶帽子(^)称它们为‘伪均值和方差’,我们以如下方式定义:*

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

这些定义有点武断。理论上,你可以用更好的方式定义它们并测试它们,但是让我们尝试最简单的方法。我们定义伪均值 为所有样本 X 的平均值。感觉这是我们能做的最好的了。对伪均值的快速检查表明,它是一个无偏总体均值估计量**😗*

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

简单。然而,真正的样本方差取决于总体均值,这是未知的。因此,我们用如上所示的伪均值 来代替它,这样伪方差反而依赖于伪均值。**

1.自由度

假设我们有一个公平的骰子,但没有人知道它是公平的,除了杰森。他知道人口平均数 μ (3.5 分)。可怜的威廉乞求得到统计属性,但杰森不会让步。威廉不得不通过抽样进行估计,即尽可能多地掷骰子。他滚了三次就累了,前两次试得了 1 分和 3 分。

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

Photo by Mike Szczepanski on Unsplash

给出真实的总体均值(3.5 分),你还是不知道第三卷是什么。然而,如果你知道样本均值 是 3.33 分,你就肯定第三次掷出的是 6,因为(1+3+6)/3 = 3.33——快速数学。**

换句话说,样本平均值正好包含样本集中的一位信息,而总体平均值不包含。因此,样本均值给样本集 少了一个自由度

这是我们通常被告知的原因,但这并不是一个强大而完整的证明,说明为什么我们必须用 (n-1) 来代替分母。

2.偏差来源

使用相同的骰子示例。Jason 知道真实平均值,因此他可以使用真实总体平均值(3.5 分)计算总体方差,并得到 4.25 分的真实方差。威廉在计算伪方差(我们定义的方差估计量)时必须采用伪均值 、^μ (本例中为 3.33 分),伪方差为 4.22 分。**

事实上,伪方差总是 低估 真实样本方差(除非样本均值与总体均值重合),因为伪均值是伪方差函数的 极小值 ,如下图所示。

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

你可以通过一阶导数测试,或者通过基于函数凸性的检验来检验这种说法。

这表明使用伪均值会产生偏差。然而,这并不能给我们偏见的价值。

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

Photo by Tudose Alexandru on Unsplash

3.贝塞尔校正

我们唯一的目标是调查这个方差估计量 有多大的偏差。我们期望伪方差是一个有偏估计量,因为如前所述,它总是低估真实方差。通过检查我们的伪方差的期望值,我们发现:

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

一步一步来。 x_j x_k (如下图)的期望值取决于你是采样不同的(独立的)样本其中 j≠k ,还是相同的(在这种情况下肯定是依赖的!)样其中j = k*。既然我们有了 n 个 样本,那么得到相同样本的可能性就是 1/n 。因此,*****

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

还记得开头提到的 x_i 的期望值吗?通过扩展 ,我们有了

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

将这些公式代入,我们发现伪方差的期望值不是总体方差,而是总体方差的 (n-1)/n 。由于对于所有有限正的 n ,比例因子都小于 1 ,这再次证明我们的伪方差低估了真实的总体方差。

为了调整无偏方差估计量,我们简单地应用贝塞尔修正,使估计量的期望值与真实总体方差一致。

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

这就是了。我们定义 s无偏样本方差(n-1) 分母来自贝塞尔修正,贝塞尔修正是由在两个连续试验中采样相同样本(替换)的 1/n 概率产生的。

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

Photo by freddie marriage on Unsplash

随着样本数量增加到无穷大 n→∞ ,偏倚消失( n-1)/n→1 ,因为两次试验中抽样同一样本的概率趋于 0

相关文章

感谢您的阅读。如果您对 Python 或数据可视化感兴趣,以下文章可能会有用:

** [## 我希望我能早点知道的 5 个 Python 特性

超越 lambda、map 和 filter 的 Python 技巧

towardsdatascience.com](/5-python-features-i-wish-i-had-known-earlier-bc16e4a13bf4) [## 使用交互式地图和动画可视化伦敦的自行车移动性

探索 Python 中的数据可视化工具

towardsdatascience.com](/visualizing-bike-mobility-in-london-using-interactive-maps-for-absolute-beginners-3b9f55ccb59)

最初发布于edenau . github . io**

为个人色彩分析设定基准

原文:https://towardsdatascience.com/why-seasons-do-not-show-up-in-the-data-27fff04c0976?source=collection_archive---------16-----------------------

色彩领域的数据科学家无法获得可量化的数据来确保可信的映射。

2 月 7 日,研究员 Peter Gaston 在的《走向数据科学上发表了一篇的文章,名为《时尚科学进行季节性色彩分析》。他描述了建立一种算法的过程,这种算法复制了一种流行的方法,即寻找能够增强个体自然美的最佳颜色。这种方法被称为季节颜色分析(SCA ),它根据共有的特征将人类分为四类。彼得·加斯顿得出的结论是:数据中找不到季节。基本上,SCA 没有系统。

自 2008 年以来,我一直在使用 24 个样本调色板为客户构建高度个性化的动态调色板。这些调色板整齐地组织在四个集群系统中。聚类与季节颜色分析(SCA)方法中的季节相对应,但是我使用的实际方法与 SCA 的普及版本不同。更科学,留给主观感知的空间更少。我看到了为什么季节没有出现在彼得的数据中的两个主要原因。

  1. 研究人员无法获得可量化的数据来设定适当的基准。
  2. 数据收集过程比一张随意的智能手机自拍要复杂一些。

SCA 的流行版本提供了四个集群:春、夏、秋、冬。他们根据两个因素来划分季节:色温(暖、冷)和颜色强度(暗、亮)。这是 SCA 的一个普通版本,由 Carole Jackson 在她的书 Color Me Beautiful (1980)中推广。这个概念被简化,以适应 9.99 美元的平装本,并摆脱可怕的科学语言。布局如下:

  • 春天:温暖的光
  • 夏天:冷光
  • 秋天:温暖-黑暗
  • 冬天:凉爽-黑暗

我使用的 Caygill SCA 方法设置了不同的基准来组织四个季节性集群,使其更加可量化。切换到不同的基准测试使得大多数 SCA 实践者几乎认不出这个方法,但是我们仍然称它为 SCA,并且使用标签春天、夏天、秋天和冬天。更多的时候,我们发现自己在用枯燥的数字语言交流,说一些类似于“他是数字 7”或“她是数字 21”的话 Caygill 方法与流行的 SCA 版本的两个主要区别是:

  1. 光和暗在季节内是可变的。为了设定季节之间的基准,我们使用主要皮肤色素褪黑激素、胡萝卜素和血红蛋白的比例。这些比率形成了一个范围,在从亮到暗的过程中保持一致。这允许创建更加动态和灵活的个性化调色板。这个比例是可以算出来的。分析皮肤成分是一项艰巨的任务;我们看着重型医学研究与它斗争,但它是可以做到的。
  2. 温暖和凉爽在季节内是可变的。为了设定季节之间的基准,我们再次使用主要皮肤色素褪黑激素、胡萝卜素、血红蛋白的比率。

当谈到温度时,我避免使用“冷”和“暖”这两个词,而改用更专业的“蓝色”和“黄色”这确保了我们更接近可以量化的东西,比如波长,而不是某人的个人观点。这里有一个例子。

在凯吉尔 SCA 方法中,这个女人属于夏天,一个基于蓝色的星团。你看她的时候会想到酷炫还是蓝基?不,我也没有。

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

Blue-Based, Summer Cluster. SCA Caygill Method.

被她文艺复兴时期的金色鬃毛和皮肤的金色光芒所引导(或者说是误导),我开始给这个女人穿上同样充满活力的暖色调,却看到她的脸变得毫无生气,黑眼圈出现在她的眼睛下面。这就是我如何得知在她金色的光芒下有一种强烈的紫灰色底色。当我给她穿上暖色调的衣服时,淡紫色的底色就显现出来了,从起泡的黄色到朴实的土色。我与一位更有经验的同事分享了我的沮丧,她提醒我夏季系列中的特殊调色板#27 适合这种肤色:看起来很温暖,底色中有很多灰色和淡紫色。这是一个结合了暖色(以黄色为基础)和冷色(以蓝色为基础)的夏季边缘案例。)由于我的客户对所有优雅的、布鲁内罗·库奇内利式的灰色反应如此之差,我甚至懒得为这样一个看起来“温暖”的人尝试夏季色调。我没有想到 27 号边缘调色板,因为我把它的深宝石色和浅黑色联系起来了。但是当我开始小心翼翼地挑选那些不是明显的紫灰色,只含有一点点紫灰色的深色色板时,她波提切利式的美出现了。适合她的颜色都来自我们称之为“夏天”的蓝色系。它们比典型的夏季调色板更温暖(心理上),但它们仍然是以蓝色为基础的(可量化)。准确地说,它们是紫红色的。

顺便说一句,在他的文章中,彼得·加斯顿提到所有肤色看起来都是暖色,这听起来让他很困惑。所有肤色看起来温暖是完全自然的。胡萝卜素是主要的皮肤色素之一,它能确保我们的皮肤看起来温暖。根据 T2 的这项研究,富含胡萝卜素的皮肤被认为是最有魅力的。胡萝卜素给了我们这种阳光般的金色光芒,人眼本能地寻找这些温暖的迹象。作为一名个人色彩顾问,我的任务是确定皮肤成分中还有哪些色素,哪些占主导地位,它们构成了什么比例,并希望有助于像彼得·加斯顿这样的研究人员将这一点量化。

以下是与夏秋两季 edge case 肤色相对应的样本。左下角的两个样本是夏天。右边的样本是边缘案例秋季。差别是微妙的。但是,一旦我们意识到了这些成分,我们就可以用公式表示出微妙之处:左下方的样本包含灰色;右边的没有。这将决定适合每种肤色的衣服色调。灰色(以蓝色为基础的淡紫色)是夏天区别于其他三个季节的地方。这种灰色的存在是我们的基准,而不是某种逃避的“温暖”,一种因人而异的心理感知。

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

The Benchmark between the Summer and Autumn Clusters is the presence of mauve grey, not some evasive “warmness.”

现在,让我们看看为这两种肤色推荐的样本调色板。秋天(黄色为主)在上面。夏天(蓝色为主)在最下面。

两者,夏秋边缘案例看起来都一样黑暗温暖(心理上)。但在夏天,我们看到紫色和淡紫色(蓝色:可量化的数据)。秋天,我们不再看到紫色和淡紫色。秋天的蓝色变成了茶色,更多的是绿色,而不是蓝色。(可量化的数据)。秋天的调色板里没有灰色(可量化的数据)。

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

Sample Palettes for Edge Cases Summer and Autumn Clusters

现在,让我们看看为这两种肤色推荐的样本调色板。秋天(黄色为主)在上面。夏天(蓝色为主)在最下面。

夏秋边缘案例看起来都是同样的黑暗和温暖(心理)。但是在夏天,我们看到紫色和淡紫色(基于蓝色的可量化数据)。在秋天,我们不再看到紫色和淡紫色,取而代之的是秋天的蓝色变成了茶色,茶色以绿色为主,而不是蓝色。(可量化的数据)。秋天的调色板里没有灰色(可量化的数据)。

2019 年 3 月 14 日,时尚业巨头斯科特·楚门在他的 Instagram 账户上发布了一张照片,照片上的男孩与我的客户非常相似:皮肤成分富含胡萝卜素,带有强烈的淡紫色。他穿着与夏季集群相似的颜色:深,有希思罗机场,蓝色为基础。具有讽刺意味的是,在他的评论中俯视色彩理论时,这位著名的品位创造者挑出了一个(很可能是直觉上)遵循非常严格规则的人。肤色的原始法则——底色,这是季节性色彩分析的基础。

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

比起名人,我更喜欢斯科特·楚门(服装设计师)作为我的标准。我们要么看到名人完全解体,在他们的休息时间被八卦的狗仔队抓住,要么我们看到他们在高压事件和电影剪辑的严密策划格式中,当大量世界级的人才涌入他们的外表。这在普通人的日常生活中是无法复制的。这位服装设计师因其对时装周常客以及纽约、巴黎、伦敦、米兰和全球各地街道上各个年龄段的普通人的坦率、自发的拍摄,吸引了时尚巨头和普通人的注意。这是我们造型师所推崇的。

上图是我客户的肖像,四年后由世界上最有影响力的时尚大师复制,这完全归功于季节色彩分析。它由好莱坞造型师苏珊娜·凯吉尔(Suzanne Caygill)的黄金时代开发,延续了欧洲绘画的悠久传统。

大多数 SCA 从业者没有 Caygill 方法的肤色织物样本和复杂的工具集,因为它昂贵且复杂。在 20 世纪 80 年代,它被更“全面”(可销售)的格式所取代。但对于任何有志于在颜色方面训练人工智能的人来说,凯吉尔 SCA 是可靠、可量化数据的来源。

医生为什么要懂机器学习?

原文:https://towardsdatascience.com/why-should-doctors-understand-machine-learning-e2433bd5ac76?source=collection_archive---------28-----------------------

现实世界中的数据科学

以及为什么医疗保健人工智能领域需要更多医生

我们看到,在所有领域,人工智能(AI)和机器学习(ML)的使用和讨论越来越多;包括医疗保健。更大的数据量、更高的计算能力和机器学习技术的突破为创新提供了肥沃的土壤。在医疗保健领域,涉及人工智能的研究呈指数增长,出版物和学术资助也相应激增,反映了这一点。

但是医生真的需要懂机器学习吗?我们认为是这样的,以下是我们的主要原因。

与患者的交流

我们开始看到机器学习工具用于临床环境,随着我们当前的新研究浪潮,我们看到更广泛的使用只是时间问题。这意味着,在不久的将来,你的“普通”医生将使用基于机器学习的决策支持工具,并推荐基于机器学习的治疗作为他们日常实践的一部分。

在解释测试时,理解特异性、敏感性、阳性和阴性预测值等术语对我们来说很重要。我们知道 PSA 升高的患者不一定患有前列腺癌,或者 D-二聚体升高不一定意味着 DVT/PE,因为这些测试具有高灵敏度但低特异性。这通常是我们与病人讨论的一部分。

然而,我们现在需要扩展这一点,以包括 AUC 和 F1 分数的讨论,以及基于机器学习的预测的其他细微差别。

此外,许多患者希望了解新的解释和预测是如何工作的。他们会发现“然后一个非常复杂的算法得出一个预测”的解释远不如“该算法在 1000 名患者身上进行训练,以学习发现可以预测 X 与 Y 的模式,以便我们可以考虑你的年龄、基因特征、合并症等,以给出个性化的预测”令人满意。

为研究和创新做出贡献

医疗保健中的人工智能是最具活力和最令人兴奋的研究领域之一,具有巨大的潜力和太多有待探索的地方。作为一名了解多发性硬化症的医生,你可以通过很多方式为这一领域做出贡献。

许多医院存储了大量数据,这些数据是令人兴奋的医疗保健人工智能研究的沃土。然而,如果部门中没有人了解如何使用这些数据,这些数据通常会被闲置。作为一个了解人工智能的人,你可以帮助建立一个从事前沿人工智能研究的部门。(我们将在未来上传这样做的指南:观看这个空间。)

与在医疗保健人工智能领域工作的许多公司合作也有巨大的潜力。他们的团队通常包括机器学习工程师、研究人员,当然还有医疗保健专业人员。虽然 ML 工程师将构建工具,但他们需要医疗保健专业人员的投入来指导他们的工作。对能够“说自己的语言”的医务人员有很大的需求;能够将他们的医学见解转化为“数据”和“变量”的人。您还可以洞察哪些内容可以整合到医疗工作流程中,哪些内容用处不大。我们是否应该训练一种算法来识别绝对观察/生命体征,或个体基线的波动?对 AKI 具有高敏感度的算法提供弹出通知是有益的还是有害的?有许多见解只能从医疗保健系统中获得,所以我们不应该把医疗保健人工智能的发展留给那些没有的人。

参与讨论

理解 ML 也将使你能够透过炒作,并有助于将讨论转向对当前事态的更有分寸、更准确的评估。当一位领先的机器学习研究人员报告说,人工智能现在可以比放射科医生更好地诊断肺炎时,你将有洞察力解释为什么不是这样。

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

在整个社会和医疗保健领域实施 ML 将代表我们这一代人的关键转变之一。作为医生,我们希望对这是如何发生的有发言权。有许多道德问题需要考虑,这些问题并不总是与在该领域工作的公司的财务激励一致。了解 ML 可以使我们成为我们医疗社区中知情和负责任的成员,他们可以为讨论和政策决策做出贡献,从而促进以安全、有效和以患者为中心的方式引入 AI。

怎么会?

下一步是如何培养对机器学习的理解。查看我们推荐的资源,建立理解的基础,然后保持最新

原帖chrislovejoy . me

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

为什么每个工程师都应该开始考虑发展分析和编程技能?

原文:https://towardsdatascience.com/why-should-every-engineer-consider-start-developing-analytical-and-programming-skills-d510eadb146c?source=collection_archive---------7-----------------------

面向非程序员的编程

一个非计算机科学工程师的视角

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

Image from Christopher Gower available at Unsplash

数据科学家:21 世纪最性感的工作。数据是新油数据正在塑造我们看待世界的方式。在一个人的头脑中隆隆作响的短语让你想知道你在选择学术专业或职业生涯时是否做出了最好的决定。我的专业不需要编码技能’。不需要学习如何开发软件’。如果我知道如何编码,我会学习计算机科学。在当今高度技术化和竞争激烈的世界中,持续教育和不断自学是保持更新和合格的关键,在这样一个时代,范式需要被打破。作为一名工业和系统工程师,我想邀请非计算机科学工程师和专业人士开始发展分析和编程技能,分享他们如何帮助我在年轻时提升职业生涯,以及他们也可以给他们带来的优势和好处。

“连接人、技术和业务”

作为一名工业和系统工程师,我的主要目标是充当工程和管理之间的桥梁,以分析并调整流程或创建新流程。我的职责包括确定人员、材料、技术、信息和能源,以确保流程高效,并确定这些资源如何相互作用才能有效。

工程师喜欢数字,和他们一起工作感觉很舒服

或者至少他们应该这么做。数据和信息隐含和明确地存在于每个工程任务中。然而,从这些数据中获得的有用性、实用性和洞察力可能会被一个人捕获、理解和转换数据的能力所削弱。花点时间来分析下面显示的 DIKW 金字塔。越往上走,台阶的宽度越小;这代表了知识和能力的差距。由于数据本身并不说明任何问题,因此必须以某种方式将其转换为信息,以便更好地理解。但是真正的挑战在于向金字塔的上端跳去。

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

DIKW Pyramid

数据挖掘、机器学习和深度学习算法(例如线性回归、逻辑回归、k 均值聚类、支持向量机、人工神经网络)的使用主要涉及 DIKW 金字塔上端的步骤。然而,由于您将接触到大量的数据,手动实施它们将变得低效、耗时且无止境。 这就是编程技能发挥其主要作用的地方 。能够将这些算法编码到计算机程序中,将允许您以更快和更有效的方式处理大型和非结构化数据集。然而,开发、训练、测试和验证数学、预测、分类或分析模型(仅举几个例子)只是这些步骤中涉及的部分任务。得出结论、获得洞察力、获得知识和获得智慧是最终目标,也是数据分析师、数据科学家和数据工程师成为公司和组织宝贵资产的原因。这就是强大的分析能力发挥其主要作用的地方。

“传达你的结果和发现与获得它们一样重要(甚至更重要)”

太好了!你开发了一个伟大的算法。你们已经取得了成果和重大发现。下一步是什么?与你的团队交流和分享。乍一想,这可能听起来是整个过程中最简单的任务,但事实是,许多人发现这是最困难的。 少即是多 。你必须能够用一种即使没有很强的统计和编程背景的人也能理解的技术语言,尽可能清晰简洁地交流你的结果和发现。管理者很少会问你获得最终结果的过程,但他们会要求你解释、证明并捍卫你的最终结果。这就是为什么大多数职位招聘都要求候选人同时具备很强的分析和沟通能力。

在我作为一名非计算机科学工程师的整个学术和短暂的职业生涯中,我总结了以下七个个人理由,说明为什么不管你的年龄、大学专业或职业生涯的当前阶段,你都应该开始考虑发展分析和编程技能:

1。它将帮助你加强逻辑思维

写代码需要你进行逻辑思考。你必须考虑从给定的输入到期望的结果的逻辑路径,考虑代码执行过程中的约束、限制和潜在错误。在循环和条件语句中使用逻辑运算符 while loops,可以增强你的逻辑思维和构建有效程序、分析情况和提出解决方案的能力。

2。它将帮助你强化你的系统思维

你会形成一种系统的思维,你会意识到每件事都与每个人相关。团队、部门和部门都相互联系,朝着相同的目标工作,而不是独立工作。在分析问题和提出解决方案时,你必须分析和评估它对整个企业和组织的影响和意义,而不仅仅是对你所在的部门。整体大于部分之和。

3。这将帮助你增强解决问题的能力

在编写代码或开发程序以执行特定任务或解决给定问题时,您必须将其分解成更小的组件*。通过更小的组件分析问题会比分析全局更有效;它将帮助你更快地找到问题的根源;这将帮助你看到别人可能看不到的小细节。分而治之。*

4。它将在开发解决方案时激发你的创造力

你会意识到,在大多数情况下,一个给定的问题会有不止一个解决方案。但是,在实施之前,您必须评估和比较每个解决方案的有效性以及可行性程度。有些解决方案需要更多的编码工作,有些则需要更少,有些则需要你扩展现有的知识来编码。在开发解决方案的过程中,你可能会多次改变主意,重新思考所用的方法是否真的解决了问题,寻求反馈并接受建议,这些建议将激发你的创造力,以最有效和高效的方式实现你的目标。

5。这将帮助你更好地理解流程

为了知道你想去哪里,首先你必须明白你的立场。了解被分析流程的当前状态将成为必须做的事情。哪些是当前流程的输入、流程、决策、转换、交流、延迟、错误和结果?谁是这个过程的主要参与者和利益相关者?谁是最终客户?我们想要实现什么?我们离我们想去的地方还有多远?您必须能够在代码开发之前和开发期间回答这些问题,以确保您对正在分析的过程及其要解决的问题有重大的贡献和影响。

6.这会让你在做决定时更有信心

拥有扎实的分析技能,以及强大的统计背景,将有助于您建立更好的决策支持系统,能够评估多种情况,引导您根据给定的约束做出最佳决策。在陈述你的解决方案时,你会自信地用统计和数学支持来证明你的结果,而不仅仅是凭直觉或因为计算机告诉你这样做。

7.它会带你走出你的舒适区

和任何其他新任务一样,你需要克服一个学习曲线。毫无疑问,在旅程的某个时刻,你可能会发现自己陷入困境或挣扎,但是,嘿,有很多在线资源可以帮助你摆脱困境。一旦你越来越深入这个主题,你会发现你认为你知道的越多,你实际上不知道的就越多,这将驱使你的好奇心去扩展你的知识和学习新的东西。有大量的软件包、库、算法、函数、程序、语言和软件用于各种目的。虽然你不必为了成为下一个编程大师而学习所有这些,但是你需要确定哪一个最符合你的目标和你想要达到的结果。

总结想法

没有人会因为年龄太大、太晚或职业生涯太晚而有借口不开始培养分析和编程技能。世界和市场正以前所未有的速度飞速变化。乔布斯的大部分资格都在某种程度上转化为分析和编程技能(或者能够使用特定的计算机程序或软件)。我们应该为机会的到来做好准备。市场不会适应我们的需求,相反,我们才是需要适应市场需求的人。

试试看。运行自己编写的有效代码的感觉是惊人的。

鸣谢

特别感谢 Andrés Hernández-Guitérrez 博士在我的学术生涯中提供的所有明智的建议,以及将我引入编程、数据科学和机器学习的世界。

— —

如果你觉得这篇文章有用,欢迎在 GitHub 上下载我的个人代码。你也可以直接在 rsalaza4@binghamton.edu 给我发邮件,在LinkedIn上找到我。有兴趣了解工程领域的数据分析、数据科学和机器学习应用的更多信息吗?通过访问我的媒体 个人资料 来浏览我以前的文章。感谢阅读。

——罗伯特

为什么我应该关心理解我的模型?

原文:https://towardsdatascience.com/why-should-i-care-about-understanding-my-model-52a8bba2b1d8?source=collection_archive---------14-----------------------

现实世界中的数据科学

深入分析非参数模型、非参数模型所属的系统及其在现实世界中的影响的重要性。

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

When parametric met non-parametric. (source: pexels.com)

非参数机器学习(ML)模型(例如随机森林、神经网络)是高度灵活但复杂的模型,可以获得比基于回归的方法(例如逻辑、线性、多项式等)等参数模型高得多的精确度。).它们还可以更容易使用,更强大,为不当使用和误解留下更少的空间。但是这些优势是有代价的。与它们的参数模型和线性模型相比,这些模型不能产生可以解释的预测,它们的结构也不能直接可视化,也就是说,它们是不可解释的。所以让我先说:

理解你的模型很重要。算了吧。理解你的模型是很有必要的。

这不是哲学观点。这是一个实用的方法。我将举例说明一些关键原因。

为了正确性(也就是!=精确度)

强大的 ML 模型将适合数据的许多角落和缝隙中的复杂模式,分析师不可能试图直接理解这些模式,因为它们在本质上是组合的。尽管如此,在模型开始在现实世界中进行预测之前,对模型的一般行为、它与数据的交互方式以及错误所在进行某种程度的分析,可以帮助识别数据与模型的问题。在脸书上提供广告的预测系统中犯错误是一回事,在医院环境中对某人的推荐治疗做出错误的预测可能是致命的。在这篇论文中可以找到一些关于后者可能出现的问题的很好的例子。例如,在 90 年代中期,大量资金投入到各种降低医疗诊断成本的努力中。在一个特定的例子中,目标是预测肺炎患者的死亡概率,以便低风险病例可以作为门诊患者治疗,而高风险人群将被接纳。建立了各种模型来解决这个问题,然后测量曲线下面积(AUC)以及其他指标。一些最准确的方法被证明是神经网络,然后是基于规则的模型,然后是良好的逻辑回归。理解神经网络是不可能的,但是基于规则的模型中的一个规则看起来很可疑:

Has Asthma (x) => Lower Risk (x)

这是违反直觉的。患有肺炎和有哮喘病史的患者处于高风险状态,几乎总是被送入重症监护室接受积极治疗(我自己最近也接种了肺炎疫苗,因为我有哮喘和肺部感染史)。稍加挖掘后发现,有肺炎和哮喘病史的患者被作为高危患者收治,因此得到了明显更好的治疗。因此,他们的预后通常要好得多,该模型了解到患有肺炎的哮喘患者的死亡概率较低(请看图!).这突出了一个关键问题,其中模型可以学习数据中的非预期假象,哪些与问题不一致,以及非参数模型的不透明性(我拒绝使用术语黑盒!)让我们很难确定到底发生了什么。

事实上, LIME (局部可解释模型不可知解释),一种越来越受欢迎的算法的创造者之一,试图解释任何预测者的预测,做了一件伟大的工作,提出了另一个有许多相似之处的例子。他们强调的预测问题是能够从这些图像中区分哈士奇和狼。他们是华盛顿大学的。他们的吉祥物是一只哈士奇。他们希望能够让人们带哈士奇而不是狼来参加体育赛事(自然,我感觉我的宠物狼在这里受到了歧视)。

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

Which one is a wolf? Or, how to build a great snow detector! (source: pixabay.com)

为了做到这一点,他们决定使用深度学习来训练一个分类器,它能够很好地做到这一点,并向技术人员展示他们的结果,看看他们是否认为该模型可以接受并可以使用。但是,唉,这里面有诡计,他们知道图像分类器学会了一个巧妙的技巧,他们使用的狼的图像都包含雪,而哈士奇的图像不包含雪,分类器将背景作为一个特征,而不是动物本身的特征。他们建造了一个巨大的雪探测器!这样做是为了研究精明的用户(研究生,很可能是博士,有 ML 经验)对准确但有缺陷的模型的接受程度,结果是大约一半的用户接受了该模型(另一半直接或间接指向背景或相关特征,并持怀疑态度)。虽然这项研究规模很小,但它很好地说明了在没有关于模型如何工作的定性信息的情况下可能发生的问题。

在对肺炎患者进行医学诊断的情况下,最终决定逻辑回归是更好的模型,因为与更精确的神经网络模型相关的风险太大。

为了责任和公平。

刑事司法系统是公正的。

我知道这是一个挑衅性的、捅马蜂窝的声明。但我们在谈论机器学习,我只是在利用一个紧张的政治环境。

ProPublica 最近发表的一项研究让我感到震惊,该研究涉及一种在全国范围内使用的算法,用于生成累犯分数(已定罪罪犯再次犯罪的趋势)。

法官、缓刑和假释官越来越多地在预审和量刑中使用这些分数,即所谓的刑事司法系统的“前端”。该研究使用了佛罗里达州一个县的数据,发现分数明显偏向非裔美国人(惊讶?).尽管任何研究都肯定有警告,进行深入审查并得出自己的结论是明智的,但研究发现的几个关键统计数据来自预测累犯时的困惑矩阵。据发现,非裔美国人被告的假阳性率为 45%,而白人被告的假阳性率为 23%。换句话说,将近一半被归类为累犯(再次犯罪)的非洲裔美国人实际上不会,而大约四分之一的白人被告被错误地归类为可能累犯,但没有。这两个数字都很高,分数被官员和法官用作“决策支持系统”的一部分,但近 2 倍的错误率的明显差异令人担忧。第二个指标是假阴性率,即算法识别为没有再次犯罪但最终犯罪的被告,白人被告(48%)明显高于非裔美国人(28%),即白人被告获得无罪推定的机会明显更高。另一方也有公平的论点,创造该算法的公司发表了反驳,可以在这里找到,ProPublica 这里再次反驳。

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

(source: propublica.org)

尽管如此,这些数字仍然令人不安,并引发了人们对这些工具的道德本质以及对这些模型应该给予多少考虑和研究的巨大担忧。这是一个难题,不仅因为它很难,还因为它关系到什么。模型的创建者花了多大的力气去钻透数据,分析各种角度,模拟并从本质上记录分析?请记住,“种族”不是算法中使用的变量(这将是非法的),遗憾的是,判决委员会目前没有对风险评估中的偏见进行分析。让我们明确一下,潜在的人口统计信息通常在其他特征的数据中表示,需要非常小心地测试这些偏差。在这些情况下,很容易遵守法律条文,但却不遵守其精神。我要问读者这个问题:用一个人上学的地方来决定是否给他们提供贷款公平吗?这不是什么技巧性的问题,这只是技巧性的问题。

为了更好的科学

大约十年前,我之前的创业公司 Skytree 在纽约最大的信用卡公司之一进行概念验证,其中涉及到一个二进制分类问题,数据集有点大,但非常不平衡(正类与负类的比例为 1:1000)。我们使用k-最近邻居(是的,我知道你们中的一些人在想什么)并以分层的方式寻找邻居,也就是为每个班级单独寻找邻居,以解决不平衡问题。该解决方案具有较高的 AUC,但客户端的数据科学家跟踪的另一个指标存在较大误差。分层搜索扭曲了输出概率的规模,对于规模至关重要的应用,如风险(如信用评分、贷款违约),这不是一个可行的解决方案。

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

(source: pixabay.com)

我们的工程师想出了一个聪明的方法(我们称之为“穴居人”解决方案)来对概率进行后处理,成功了!但是团队中的教授并不满意(我们也不满意,但是…),决定从数学上推导出一个“合适”的解。你瞧,对我们来说幸运的是,这两种解决方案是等价的。

这个故事的寓意是,客户端的数据科学家研究了更深层次的指标,以理解算法设计者没有考虑的模型,正是由于这种数据科学,才有了由数学家设计和实现的重要突破。网-网是更好的科学和更好的模型,可以说是双赢(生命中的稀罕物等等。).

结束语:建立信任!

今天,有更多的工具和技术可以用来更好地理解非参数模型,应该有效地加以利用。同样重要的是,模型构建者不应孤立地看待模型,而应将其视为更广泛系统的重要组成部分。人们不再应该说

我只是一名工程师

当一个人的模型有可能在严重影响人们的生活。

最终,为了我们的科学取得成功,并使 ML 模型的扩散成为现实,预测系统是负责任的,决策路径清晰并有追索权的空间,以及作为机器学习人员,我们需要用理解模型及其在现实世界中的影响的科学来支持构建模型的科学。

所以我再跟你说一遍:了解你的模式是必要的。预测好!

如果你没什么好隐瞒的,为什么还要在乎隐私呢?

原文:https://towardsdatascience.com/why-should-you-care-about-privacy-if-youve-got-nothing-to-hide-2bbe663e6252?source=collection_archive---------16-----------------------

数据隐私

因为你相对不道德

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

Photo by ev on Unsplash

Y 你永远也猜不到她的许多成就——剑桥大学的博士学位,一本畅销的回忆录——但是在她生命的大部分时间里,塔拉·韦斯特多弗的环境一点也不利于智力探索。当我们的父母兴高采烈地撞见我们在读课本时,塔拉惩罚了她。

在爱达荷州偏远地区的一个生存主义家庭中长大,她的童年是与世隔绝和体力劳动的。她的父亲是一个激进的宗教阴谋论者,她被严格禁止上学或与其他孩子交流。相反,她的青春都花在了家庭危险的废品场,分拣废品。无论何时发生事故——无论是金属棒穿过她的腿还是三度烧伤——她母亲的草药是唯一的治疗方法,因为医生也被禁止。

然而,最重要的是,这个家庭对书籍的审查——当然《圣经》除外——让年轻的塔拉难以忍受。她抑制不住自己好奇的心,反抗专横的父亲,开始偷偷地吞食文学。被书页赋予生命的野生世界让她着迷得无以复加,因为它们与她自己限制性的存在如此不同。她经常躲在地下室的沙发后面看书。或者在晚上,一本书真的推到她的脸上,因为月光是她唯一的照明源。

风险得到了回报。十六岁时,没有受过任何正规教育的她通过了大学入学考试,逃离了她家这座名副其实的监狱。

ara Westover 与她童年时代的立法者——她的父母——的亲密个人斗争在我们社会的大尺度上反映了整个历史。在人类道德和伦理发展的每一个值得注意的时刻,对明天有着非凡远见的小社区不可避免地与他们今天的普遍规则发生冲突。

想想一小撮理想主义者反抗专制的罗马帝国传播基督教。或者许多科学家为了揭示我们宇宙的真实运作而被烧死。或者外科医生冒着失去生计的危险闯入停尸房研究人体解剖,而当时解剖是被禁止的。也不要忘记,美国本身就是在一场叛乱中诞生的,独立宣言是对英国法律的公然违反。

当然,历史并没有结束——即使是现在,人们也在不断打破腐朽的现状,因为他们的价值观领先于法律。也许是一对同性恋情侣在一个暴虐的政权下表达爱意。也许是一个儿子在一个认为安乐死等同于谋杀的状态下,帮助父亲有尊严地离开这个世界。我敢说,也许这是一个陷入困境的年轻女子最终使用仍然非法的迷幻药战胜了她的抑郁症。

教训很简单:我们的社会朝着一个更加公正的世界前进,却因其敢于反抗自身不公正的法律而受到削弱。

优化理论家——研究一个系统,无论是整个全球经济还是一个小蚁群,达到最佳状态的条件的科学家——称之为探索-开发权衡。这是一个古老的难题,如何权衡探索新的可能性和利用旧的确定性。

过分强调探索本身就是沉溺于有害的理想主义。结果是:顽固地拒绝接受任何宪法,让位于无政府状态。我们可以在法国大革命期间最清楚地看到过度革命热情的严重后果,反叛者像一对在柏油路上旋转的轮胎一样燃烧自己。

法国资产阶级终于流血摆脱了压迫。好心但致命的优柔寡断的路易·VXI,他浮夸的妻子玛丽·安托瓦内特,以及他们宫廷的大部分人都被斩首。君主制被推翻后,是时候建立一个来之不易的共和国了。但是他们不能。这种打击将持续一年的大部分时间,因为任何站出来提出新的、更公平的宪法的人都被致命的堂吉诃德式的大众视为暴君,并被立即处决。每一项提议的法律,无论多么公正,都没有达到革命者模糊的理想。一个处于完全探索模式的社会——一个混乱的社会。

另一方面,对既定秩序的严格利用——不允许背离法律以最大限度地保持一致——不会给道德进步留下任何空间。一个法律从未被违反的世界是一个我们的价值观从未受到挑战的世界,因为前者反映并永远滞后于后者。

这样的世界将是一个隐性压迫的世界。如果不是在空间,那么肯定是在时间,因为我们会约束后代遵守他们祖先的不完整的规则。正如我们回顾过去,厌恶罗马人的野蛮习俗——厌女症、奴隶制、被斗兽场完美概括的普遍暴行——我们的后代会回顾我们,憎恶我们目前忽视的司法系统的不公正。

因此,很明显,通往公平社会的道路是通过中间路线,而不是不稳定的极端路线。一种主张在实施严格的指导方针和将它们边缘化之间保持谨慎平衡的观点。从这个角度看,隐性犯罪的存在不是制度上的缺陷,而是一种特征。

只有在一个允许违反规则和强制执行规则之间有所松懈的社会里,对既定秩序的必要违反才是可行的。偶尔,不当行为必须不受惩罚,这既是为了让人们保持勇气来测试我们目前原则的界限,也是为了让这种富有成效的不安有机会被忽视足够长的时间,以获得动力并推动我们前进。

这一本质缺陷的基础是隐私。

如果没有机会秘密行事,塔拉·威斯多佛仍然会在垃圾堆里寻找废金属。如果我们被剥夺了不公平的规则可以被偷偷打破而不被迫害的希望,我们就没有变革的催化剂。事实上,往往是那些最明显受到压迫的人,那些知道他们在实践中,而不仅仅是在理论上为之奋斗的人——被迫分开的同性恋者,一名因堕胎而入狱的强奸受害者——他们要求解放的呼声最高。

意识到社会进步和人民隐私之间的密切关系,开国元勋们发誓将后者的权利融入他们新生国家的结构中。整部宪法的一个共同主题是,执法工作被故意变得更难,而不是更容易,为改革派叛乱的酝酿提供了急需的空间。《权利法案》概述的十项修正案中有整整一半是关于故意制造低效率和阻碍州政府行使权力和进行监督的能力。

这一点在第四条中特别清楚,该条禁止不合理的搜查和扣押,只允许“基于可能的原因……并特别说明要搜查的地方,要扣押的人或物。”正是由于这一修正案,一个明显有罪的罪犯有时会逍遥法外,因为他的凶器只是在一次无根据的搜查中发现的,因此不能作为证据。如果你认为这是不公平的,考虑一下这也是你不能监禁一个丈夫的原因,如果在一个不相关的 911 电话中,警察发现了他为治疗他妻子的癫痫而种植的大麻植物。

日复一日,我们正在失去不被人注意的基本自由。我们的隐私权被如此公然地侵犯,以至于引起人们对它的关注是一种平庸的行为。众所周知,我们的“私人”信息通过社交网络与几乎任何人共享,我们的身体对话被虚拟助理记录,我们的家被我们的网络摄像头窥视。全面监控。

现在,当然,在目前,持续的监控并没有被广泛的起诉所补充。当我们抽大麻的私人视频偷偷从我们的手机上传到国家安全局的数据库时,我们的大门不太可能被踢开。但是,通过允许我们的隐私不断被侵犯,我们使得这种可能性非常容易发生。这就好像我们允许警察永久驻扎在我们的房子里,不停地监视我们的一举一动。目前,他们奉命对我们的个人不端行为不予理会,但一个更严厉的回应只是一个政治家的签名。

我们永远不知道什么时候一个煽动性的事件——9/11 类型,群众被愤怒弄得失去理性——可能会引发这样的反应。在动荡时期做出冲动的、有严重缺陷的政治决策的先例比比皆是,但也许最恰当的例子是美国不光彩地入侵伊拉克。当然,如果我们允许自己基于“私人”信息受到普遍压迫,就不会有随后的运动能够推翻这一短视的裁决,因为历史上为他们提供便利的地下组织将会浮出水面。

更重要的是,没有人提醒我们失去的自由,我们很快就会完全忘记它们。不知道任何更好的,社会将默认为盲目顺从,完全满足于它的停滞。从这个意义上说,它不太像奥威尔的《1984》,在那里暴政是公开和生硬的,而更像赫胥黎的《勇敢的新世界》,在那里征服和自由之间的界限是模糊和主观的。

隐私问题很像气候变化问题,我们疏忽的大部分后果都存在于未来。要解决这两个问题,我们需要首先承认我们已经入不敷出,然后为了不那么不稳定的明天,牺牲掉许多我们今天认为理所当然的舒适。

我们必须摒弃的便利之一是我们互联网平台的免费性质。正是谷歌和脸书目前基于广告的商业模式,促使他们辜负了用户的信任。这样一个系统预示着数字巨兽的成功取决于他们瞄准广告的能力,这反过来又使他们的收入与他们能够测量用户倾向的精确度成正比。

因此,这在很大程度上是我们自己吝啬态度的错——我们不愿意为我们消费的服务明确付费——这导致了我们个人数据的大规模收集。如果我们集体接受一个搜索引擎和社交网络在基于订阅的模式下运行的世界,他们在决定是否监视我们之前所做的风险回报计算无疑会对我们有利。正如剧作家伯德·布莱克特所说,“先有一个饱肚子,然后才是道德。”

赢回我们隐私之战的第二个因果关系是人工智能和机器人等数据饥渴领域目前的发展速度。像亚马逊 Alexa 和谷歌 Duplex 这样的虚拟助手能够传达如此惊人的真实性,只是因为我们允许他们的开发者在我们家中假想的隐私对话中搭载他们的发明。

这种安排本身没有什么本质上的错误,但我们需要完全确保用于训练这些机器学习模型的个人数据永远不会被存储或分析。我们的重点应该是开发系统,通过加密和操作管道的巧妙结合,使我们的数据免受窥探(以数学上可证明的方式),而不损害其对算法开发的可用性。事实上,这样的技术已经存在了,但是他们的部署是缺乏的,很大程度上是由于有限的公众压力。

我这是问题的微妙本质,原因——允许我们自己在当前的个人层面上被监控——和结果——未来社会层面上的道德停滞——之间的反差使得隐私成为我们这个时代的一个定义性问题。由于我们无法超越自己和眼前的事物,我们无法从个人原因走到客观结果。所以我们半途而废,错误地认为隐私只与有罪和可疑的人有关。

就拿我来说,我过去常常在镇上四处宣称:“我不在乎隐私,因为我没有什么可隐瞒的。”我一点也不知道,我看起来就像是在宣布:“我不在乎言论自由,因为我无话可说!”

你为什么要搬到德克萨斯州的普莱诺?

原文:https://towardsdatascience.com/why-should-you-move-to-plano-texas-ec69ad08be3d?source=collection_archive---------20-----------------------

使用 ARIMA 模型预测房价——并知道何时相信这些数字

在之前的一篇博客文章中,我讨论了能够预测房子价值的潜在好处(主要的好处是能够积累可观的个人财富)。

作为一个成年后大部分时间都受伦敦租赁市场支配的人,我不习惯支持房地产投机生意。然而,对于数据科学家来说,预测房价是一个有趣的应用,它让我们有机会探索预测技术、它们的优势和它们的局限性。

注意——包含该博客中所有数据和分析的 Github repo 可以在这里找到。我大多使用标准库(Pandas,Matplotlib 等。)但是还有一些更奇特的功能,比如用于地图视觉效果的 Geopandas,以及 Statsmodels 的 ARIMA 功能,这些功能可能会很有意思。

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

Take your pick… (image: Pexels)

任务

我们分析的目的看似简单——根据美国房地产市场的历史数据,如果我们的目标是在十年内获得尽可能大的投资回报,我们会建议现在在哪五个地区购买房产?

我们从使用来自 Zillow 的数据生成的数据集开始。这一数据相对来说比较精确,覆盖了美国 14,103 个“地区”。对于每个地区,我们得到一些基本信息(城市、大都市地区、州等。)以及该地区从 1996 年 4 月到 2018 年 4 月的每月房价中位数。

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

每个州都出现在数据集中,但是,正如我们所料,我们有更多来自人口更多的州的地区(加利福尼亚、德克萨斯、纽约、佛罗里达)。

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

Heatmap of the number of regions in dataset, by state

诱惑可能是直接投入预测。但是,数据的某些属性会显著影响我们处理和解释结果的方式。

美国房地产市场

你需要在过去十年左右的时间里一直住在山洞里,才知道美国房地产市场最近有些波动。

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

事实上,在金融危机期间(在本分析中定义为 2007 年 4 月至 2012 年 4 月之间的几个月),投资一个洞穴可能比投资一套亚利桑那州的公寓或佛罗里达州的公寓要好。在此期间,除了三个州之外,所有地区的价格增长中值都是负数,受影响最严重地区的许多房屋价值损失超过一半。

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

然而,如果我们再看一下 2012 年以来的情况,我们会发现,与前五年形成鲜明对比的是,所有国家的平均增长率都有所上升。我们还看到,在危机中受影响最严重的州(内华达、佛罗里达、亚利桑那和加利福尼亚)已经成为增长最快的州之一。

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

当我们开始拟合预测模型时,这些都是非常重要的背景:

  • 我们不应该使用完整的历史数据来训练我们的模型。金融危机对时间序列的形态产生了实质性影响,但(我们只能希望)是一个反常的外生事件。如果我们不希望类似的事情再次发生,那么我们就不应该让我们的模型根据那个时期的数据来训练自己。因此,我们应该关注 2012 年 4 月以来的价格数据…
  • …但是,采用这种方法会带来自身的问题。通过只使用过去六年的数据,一个模型可能会假设像内华达州和佛罗里达州这样的地区是肯定的赌注,并热情地建议我们在那里投资。当然,我们知道在这些情况下的增长只是从严重的衰退中复苏。在任何情况下,我们都应该谨慎投资于那些一旦发生不可预见的经济冲击就有可能贬值一半的地区。

这是一个基本的例子,说明盲目地向数据集扔模型(不管有多复杂)只能让你走到这一步。如果可能的话,应该首先运用一些人类常识和批判性思维。

为此,我们绘制了所有地区的散点图,水平方向是最近的价格增长,垂直方向是金融危机期间的价格增长。

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

Bubble size denotes the relative value of houses in each region as at April 2018

通过观察这两项指标均高于平均水平的地区,我们可以找出那些在 2007 年至 2012 年间经受住了金融风暴(至少表现出一定的抵御经济冲击的能力)并在未来几年拥有强劲增长潜力的地区。

因此,这 1737 个增长区域都是我们原则上可以放心推荐给投资者的区域。事实上,通过将这些地区 2007 年 4 月的价格指数化,我们发现至少自 1996 年以来,这些地区的表现优于其他地区。

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

有趣的是,我们也看到导致金融危机(2003 年至 2007 年)的增长实际上更慢。这支持了一种观点,即这些地区的“基本面”更强,它们的房价没有因次级贷款而过度膨胀。

模特们

现在,我们已经缩小了数据集的时间范围和区域范围,我们可以开始考虑对数据进行建模以生成预测。我们可以使用几种不同类型的模型,选择正确的模型取决于数据的特征。

1)数据是静态的吗?

简而言之,平稳时间序列的均值、方差和协方差(即,如果数据是季节性的,则周期的规律性)随着时间的推移保持不变(或者,如果您喜欢,平稳)。**

目测我们的数据表明,这些条件中至少有一个不满足——平均房价或多或少是随着时间的推移而上涨的(它肯定不是恒定的)。

我们可以使用迪基-富勒测试从数学上证明这一点。如果我们使用 Python,那么我们可以从 Statsmodels 包中导入一个现成的函数。

*p-value for all data = 0.587*

注意,Dickey-Fuller 本质上是一个假设检验,其中的零假设是数据不是平稳的。因此,我们想要一个低于经典值 0.05 的 p 值来拒绝这一点,并显示数据稳定的。

很明显,在这种情况下,p 值有一段距离。缺乏平稳性立即排除了一些更简单模型的使用,如白噪声随机游走,或基本自动回归

2)数据是季节性的吗?

季节性是一个简单的概念,它表明数据值不仅取决于时间序列的总体时间框架,还取决于该时间框架内的定期时段。

例如,每月的航空乘客数量将是季节性的,尽管下图中的平均趋势明显增加,但乘客数量也取决于季节,人数在夏季增加,在冬季再次下降。

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

我们可以通过调查自相关来测试季节性。为此,我们复制时间序列,将其向后移动 x 个周期,并测试移动后的数据与原始时间序列之间的相关性。例如,如果月度数据在年度背景下是季节性的(比如,谷歌搜索“饮食”的数量,这往往在 1 月份特别受欢迎),那么 12 个月的滞后应该会产生高水平的相关性。

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

An example of strong autocorrelation — we move the orange line 12 months backwards, and see how well it correlates with the blue line (which is, of course, the same data, just shifted by 12 months).

令人高兴的是,有 Statsmodels 函数可以生成一个图表,同时显示不同滞后期的相关性。

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

正如我们所看到的,房价与一个时期的滞后有很强的自相关性,但除此之外完全没有。如果我们有季节性数据,我们预计会在,例如, x= 12,看到一个峰值。我们没有观察到任何这样的峰值,这告诉我们,我们的数据不是季节性的,只是某个月的房价往往与上个月的价格非常相似。

论 ARIMA 造型

上面的平稳性和季节性测试表明,我们有权利在这个练习中使用 ARIMA 模型。在这篇博客中,我不打算过多地谈论 ARIMA 的数学(看这里有一个比我能给自己的更好的解释)。

简而言之,ARIMA 模型可以分为三个主要部分:

  • AR :自回归。模型的一部分,使用观察值和 p 滞后观察值之间的依赖关系。**
  • : 综合。使用原始观测值的差分(例如,从之前的观测值 d 周期中减去一个观测值)以使时间序列平稳。注意— d 如果数据已经是静态的,可能等于 0,在这种情况下我们不做差分。
  • : 移动平均线。模型的一部分,使用观察值和移动平均模型残差之间的相关性,该模型应用于 q 滞后观察值。

因此,我们说 ARIMA 模型的阶数为(p,d,q) — p 是自回归项的数量, d 是我们求差的周期数量, q 是移动平均项的数量。

具有相同阶数的两个 ARIMA 模型可以具有不同的系数,因此是完全不同的模型。事实上,为每个地区创建一个定制的模型以最大限度地提高我们预测的准确性是可取的。然而,由于我们有大约 1,737 个时间序列(每个“增长区域”一个),我们应该创建一些函数来自动化模型构建过程。

首先,我们定义一个函数,给定一个地区的时间序列数据,将返回该地区的“最佳”ARIMA 模型。这是我们用来预测该地区未来房价的模型。为此,我们可以依靠 Statsmodels 的 ARIMA 建模函数,它采用两个关键输入:

  1. 一些时间序列数据
  2. 所需的模型阶数,即我们希望用于(p,d,q)的数字

然后,它输出最适合指定阶数的数据的模型(即系数集)。因此,我们需要找出哪一个能够为给定区域生成最佳模型。为此,我们可以采取简单的“网格搜索”方法,生成潜在“订单”列表…

**[(0, 0, 1), (0, 0, 2), (0, 1, 0), (0, 1, 1), (0, 1, 2), (1, 0, 0), (1, 0, 1), (1, 0, 2), etc...]**

…然后遍历这些模型,并比较 Statsmodels 为每个模型生成的模型。

有几种方法可以进行比较。在这种情况下,我们进行训练/测试分割,使用前 90%的数据(比如,截至 2017 年 1 月的价格)拟合模型的每个版本,然后计算每个模型对最后 10%的预测的均方根误差(RSME) 。然后,我们采用其预测具有最低(即最佳)RSME 的模型。

注意——另一种方法可能是比较模型的AICBIC

明确地说,我们用这个函数同时优化了两件事;

  1. ARIMA 模型的阶(p,d,q)
  2. 模型的系数

在此之后,创建第二个函数来遍历我们的每个“增长区域”是相当简单的,并使用上述函数来输出每个区域的最佳模型。让我们的 arima_selection 函数将 arima 模型本身作为一个对象返回的好处是,我们可以存储它并在以后调用它。

实际上,让我们假设我们已经将所有 1737 个模型存储在熊猫数据帧的列中(熊猫数据帧非常乐意存储几乎任何你可以扔向它的对象)。

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

A Pandas dataframe, with model objects stored in the ‘FittedModel’ column

然后我们可以使用 Pandas 的映射函数调用模型对象方法,并将结果存储为新列。

例如,假设我想计算并存储每个模型的 AIC。然后我可以做以下事情:

**df[‘ModelAIC’] = df[‘FittedModel’].map(lambda x: x.aic)**

这将在数据帧中生成一个新列:

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

当然,我们可以使用这种技术提取关于每个模型的大量信息,使用 Statsmodels 内置的许多方法。这些方法的完整列表可以在这里找到,但是我们将在本练习中使用的关键方法是:

  • T1。预测() —使用模型预测时间序列的下 n 个值
  • 。conf_int() —给出预测的范围(基于定义的置信区间)
  • 。arparams() —告诉我们自动回归参数的模型系数是什么
  • 。maparams() —告诉我们移动平均参数的模型系数是什么
  • 。pvalues() —给我们参数的 t-stat 的双尾 p 值

这些额外的统计数据非常有用,因为我们可以使用它们来进一步过滤我们的区域(例如,我们可以排除模型参数具有统计上不显著的 p 值的任何区域)。

我们还注意到,一些预测的范围非常广(如。conf_int()方法)。例如,我们的模型预测,10 年后,科罗拉多州普韦布洛县的回报率可能在 21%到 766%之间。

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

虽然这可能对风险偏好强烈的投资者有吸引力,但这种不确定的回报并不会给大多数人带来明智的建议。在选择推荐的最终地区时,我们需要平衡增长潜力和增长不确定性。

为此,我们可以在另一个散点图上比较各个区域,在水平方向上显示预测价格增长,在垂直方向上显示预测范围的宽度(占预测值的百分比)。

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

通过这种方式,我们可以隔离出潜在增长强劲、预测值范围相对较窄的地区,从而将风险降至最低。为了做到这一点,我们选择了绿色阴影区域中最右边的五个区域。

结果呢

我们选择的五个地区相当多样化,并带来了一些惊喜——加利福尼亚州的帕洛阿尔托可能看起来是一个相对明显的房地产热点,但德克萨斯州的普莱诺不太可能引起投资者的注意。

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

假设我们在这五个地区平均投资 100 万美元,我们预计我们的投资组合价值将在十年内翻一番以上。我们有 95%的把握预测,该投资组合的价值将在 178 万美元至 243 万美元之间

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

查看此“推荐”投资组合与由五个预测增长最高的地区(不考虑风险,即“高增长”地区)组成的不太细微的投资组合的对比。

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

虽然我们的预测表明,到 2028 年,这种“高增长”投资组合的价值可能达到 454 万美元(回报率超过 350%,远高于“推荐”投资组合的 110%),但它也有可能在此期间损失 86%的价值;这是有闲钱的风险爱好者可能会去做的事情,但对普通投资者来说不是明智的建议。

所以,如果你确实在寻找一个新的美国社区,为什么不去德克萨斯州的普莱诺试试呢?据说这是一个非常适合居住的城市。而且,如果 ARIMA 模型是可信的,你的投资可能会获得可观的回报。

感谢你一直读到博客的结尾!我很乐意听到任何关于上述分析的评论,或者这篇文章涉及的任何概念。欢迎在下面留言,或者通过 LinkedIn 联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值