@sambodhi
2018-08-01T16:15:41.000000Z
字数 4770
阅读 1651
作者 | Alberto Artasanchez
译者 | Sambodhi
编辑 | Debra
AI前线导读:前不久,小编看到这么一个数据,说是截止到目前,最近三年大约有两万个机器学习项目失败了。这到底是怎么回事呢?我们姑且撇开失败这一现象不谈,就来看看Alberto Artasanchez给我们总结的项目失败的九个原因,避开失败的陷阱吧!这篇文章很有看头,详细介绍了在机器学习项目中可能会遇到的一些问题。
老实说,这文章题目起得……诸位看官是不是觉得有点末日启示录的既视感呢?嗯,实际上,我并不希望有人因此感到受了伤害,我要你们知道,我是支持你们的,衷心希望你们的项目能够取得超出预期的成功!我写本文的初衷,并非要给你们施加什么巫毒啊,什么诅咒啊,让你们的项目只能失败无法成功。不是这样滴!我写这篇文章,只是例举了数据科学项目失败的最常见的原因,我希望,我列举的这九个原因,如果能够帮助你们避开项目失败的陷阱,我的目的就达到了。
如果你提错了问题,那么你得到的答案肯定是错误的。金融行业和欺诈识别问题就是这样的一例。本来嘛,最初提出的问题可能是“这笔特定的交易是否存在欺诈?”。如果想要确认是不是存在这个问题,你就需要一个包含欺诈和非欺诈交易示例的数据集。而这个数据集很有可能就是人工帮助下生成的,也就是说,这个数据集里的数据标记可以由专门负责检测欺诈行为的主题专家(subject matter experts,SME)来决定。但是,专家很有可能使用他们以前所见过的欺诈行为来标记数据集,这样一来,用这种数据集对模型进行训练,模型将只会捕获所标记的老旧模式的欺诈行为。如果犯罪分子发现了一种新的欺诈方式,我们的系统就会无法发现这一欺诈行为。所以,更好的问题可能是“这笔交易是否有异常现象?”。因此,它不一定要去查找过去已被证明存在欺诈行为的交易,它应该寻找的是不符合交易“正常”签名的交易。即使在最为复杂的欺诈检测系统中,也要依靠人类来进一步分析预测的欺诈交易来验证模型的结果。这种方法有一个副作用就是,它很有可能会比以前的模型产生更多的误报。
这种失败类型的另一个例子同样来自金融领域。投资界的传奇人物Peter Lynch就经历过这种类型的失败。
在担任Fidelity Magellan基金担任董事期间,Lynch的年化回报率高达29%,在多数年份中超越了市场水平。但Lynch自己也指出了美中不足之处。他计算出,他基金中的普通投资者在同一时期只赚了7%左右。例如,当Lynch遇到挫折时,资金就会通过赎回流出基金;而当他重回正轨时,资金又流回基金,但这样一来就错过了市场的复苏。
看看下面提出的两个问题,你觉得哪个更好回答?
第二个常犯的错误就是不关注业务用例。在提出需求时,你应该将注意力集中在这个问题上:“如果我们解决了这个问题,它会不会大大增加业务的价值呢?”要回答这个问题,当你将问题分解成子任务时,初始任务就应该集中在回答这个问题上。举个例子,假设你想出了一个人工智能产品的好点子,现在,你开始想兜售这个点子。让我们假设这个点子是一项服务,使用这种服务,你可以将全身照上传到网站,人工智能应用程序会确定你的尺寸,这样它就可以根据你的体型,为你量身定做一套适合你的西装。让我们来看看完成这个项目需要执行的任务都有哪些吧。
作为技术人员,我们会渴望进行设计和编写代码,因此,我们可能会立即着手处理前两项任务。你可以想象,如果我们执行完前两项任务后,才开始进行可行性研究,而研究结果表明,我们的产品没有市场,那该是一个多么可怕的错误啊!
我有一些项目已进入生命科学领域,我们遇到的一个问题就是,某些数据根本就买不到,哪怕花多少钱都不行。生命科学行业对受保护的健康信息(protected health information,PHI)的存储和传输非常敏感,因此你所能找到的大多数数据集都会删除这种信息。在某些情况下,这些信息是相关的,会提高模型的结果准确率。例如,个人位置可能对他们的健康统计有显著的统计影响:像密西西比州的人群比康涅狄格州的人患糖尿病的可能性更高。但由于这些信息可能无法获得,因此我们将无法使用。
另一个例子就是金融行业的。在这个领域中可以找到一些最有趣和相关的数据集,但是出于同样的原因,这些信息中的大部分,都可能非常敏感,并且受到严密保护。因此对它的访问可能会受到很大的限制。但是如果没有这种访问权限,就不可能实现相关的结果。
就算你有最好的模型,但你如果使用了错误的数据或者脏数据的话,可能会得到预测错误的结果。在监督学习中,我们使用之前标记过的数据。在许多情况下,这种标记通常是人工完成的,但有可能会出错。假设的一个极端例子就是,有一个准确性很完美的模型,但它使用的是不准确的数据,会怎么样呢?想一想那个MNIST的数据集吧,当我们使用这个数据集来运行模型时,我们假设图像的人工标记是100%准确的。现在,我们假设有三分之一的数据被错误标记,会发生什么样的结果呢?那么,不管你的模型有多好,你还会觉得你的模型产生任何像样的结果,有多大的困难吗?要记住,“无用数据入,无用数据出”(garbage in, garbage out)这一古老的格言,在数据科学领域仍然存在。
从理论上讲,你永远不会有太多的数据(只要它是正确数据的话)。在实践中,即使存储和计算成本、性能有了巨大的进步,我们仍然会受到时间和空间的物理限制。因此,就目前来讲,数据科学家最重要的工作之一,就是明智地选择出他们认为会实现准确的模型预测产生影响的数据源。举个例子,我们假设正在尝试预测婴儿的出生体重。直觉告诉我们,产妇年龄似乎是一个相关特征,但母亲的名字可能不相关,而地址可能是相关的。另一个例子是MNIST数据集,在MNIST图像中,大多数信息都在图像的中心,因此我们可以在不丢失大量信息的情况下删除图像周围的边框。同样的,在这个例子中,需要人工干预和直觉来确定移除一定数量的边界像素将对预测产生最小的影响。最后一个降维的例子是使用主成分分析(Principal Component Analysis,PCA)和T分布随机邻域嵌入(T-distributed Stochastic Neighbor Embedding,t-SNE)。在运行模型之前,确定这些特性中哪些是相关的仍然是计算机的一个难题,但它是一个成熟的领域,可以将该过程实现自动化。与此同时,拥有太多数据仍然是一个潜在的陷阱,可能会破坏你的数据科学项目。
你不会相信医生会给你修好车子的,对吧?但你应该会相信机械师会给你做好结肠镜检查。如果你有一个小型的数据科学实践,你可能别无选择,只能依赖一个或几个人来执行所有的任务,从数据采集和数据获取、数据清理和数据再加工,特征工程和生成,到模型选择以及在生产中部署模型。但随着团队的成长,你应该考虑为每一项任务聘请专家。ETL开发专家所需的那些技能,自然语言处理专家未必也掌握同样的技能。此外,对于某些行业,如生物技术和金融,拥有深厚的领域知识应该是有价值的,甚至是至关重要的。然而,拥有主题专家背景和具备良好沟通技巧的一个数据科学家可能是一个合适的选择。随着你的数据科学实践的进展,拥有合适的专业资源确实是一项棘手的平衡工作,但拥有合适的资源和人才库才是你成功实践的最重要因素之一。
这里有很多使用错误工具的例子。一种常见的陷阱是谚语“我有一把锤子,那么所有东西在我眼里都只是一枚钉子”(译注:这是英语谚语,用来形容狭隘的思维方式。对于那些偏爱某种特定的分析或解决问题方法的人,会不由自主地用它来解释或解决任何现象或问题。)我举个行业上更具体的一个例子:最近,你派遣了团队进行MySQL培训,完成培训之后,你需要设置一个分析流水线,让他们牢记所培训的东西而不会遗忘,于是他们建议使用新的工具。但是,根据流水线将要处理的数据量以及你需要对结果执行的分析量,这种选择对作业来说,很可能是一种错误的选择。因为许多SQL产品对可存储在单个表上的数据量有严格的限制。在这种情况下,使用像MongoDB这样的NoSQL产品或者像AWS Redshift这样的高度可扩展的列式数据库(columnar database)可能是更好的选择。
模型,就是对现实的简化表示。这些简化是为了去掉不必要的错误、噪声和细节。一个好的模型能够让用户专注于在特定领域中重要的现实的特定方面。例如,在市场营销应用中,保留客户电邮和地址等属性可能很重要。但在医疗环境中,患者的身高、体重和血性可能更为重要。这些简化都是基于假设;这些假设在某些情况下可能成立,但在其他情况下不见得同样成立。这一点表明,在某种情况下运行良好的模型,在另一种情况,可能未必也适用。
在数学中有一个著名的定理:“没有免费午餐定理”(No Free Lunch,NFL)。这个定理指出,没有一种模型能够适用于所有的问题。适合一个领域的假设运行很好的模型,未必适合另一个域,因此,在数据科学中使用多个模型进行迭代,试图找出最适合给定情况的模型并不罕见。这点在监督学习尤为如此。验证或交叉验证通常用于评估具有不同复杂性的多个模型的预测准确率,以找到最合适的模型。此外,一个有效的模型也可通过多种算法进行训练得到,例如,线性回归可以通过正规方程或梯度下降来训练。
AI前线注:没有免费午餐定理(No Free Lunch,简称NFL)是wolpert和Macerday提出的“最优化理论的发展”之一。该定理的结论是,由于对所有可能函数的相互补偿,最优化算法的性能是等价的。该定理暗指,没有其它任何算法能够比搜索空间的线性列举或者纯随机搜索算法更优。该定理只是定义在有限的搜索空间,对无限搜索空间结论是否成立尚不清楚。
根据用例的不同,确定不同模型和算法的速度、准确性和复杂性之间的权衡是至关重要的,并使用最适合给定领域的模型。
在机器学习中,能够评估已训练的模型的性能至关重要。必须根据训练数据和测试数据来衡量模型的性能。这些信息将用于选择要使用的模型、超参数选择以及确定模型是否已准备好用于生产。
为了衡量模型的性能,最重要的就是要为手头的任务选择最佳评估指标。关于指标选择的文献有很多,因此我们不会深入讨论这个话题,但是在选择指标时,我们要及记住的一些参数是:
导致项目失败的方法有很多,但解决问题的最好方法只有一种。成功的定义,可以由不同的标准来衡量。这个解决方案是寻找快速而肮脏的补丁来解决问题的吗?你是在寻找最好的解决方案吗?你看重的是模型训练速度呢,还是看推理端点可用性呢?或者模型的准确性?也许发现某个解决方案不起作用也可视为一个胜利,因为现在你不必在这个解决方案上再浪费时间,可以把重点放在寻找其他替代方案上。
原文链接: 9 Reasons why your machine learning project will fail
https://www.kdnuggets.com/2018/07/why-machine-learning-project-fail.html