数据科学实践中常犯的十二种错误

简介:

如果是初学者,当你参加数据科学项目时,应避免以下十二种常见错误。

1没有检查你的数据

你需要检查自己即将收集/使用的数据的量与质。“你的工程中大部分的时间,通常是80%的时间,将用于获取和清洗数据,”data.world的数据科学家和知识工程师Jonathan Ortiz如是说。“你需要检查是否记录好了需要用于分析的数据”

如果你正在记录与收集数据,可能会记录错误,记录的方式可能前后不一致,记录的系统可能会改变 “如果每个月内部都有增量,那么当你分析数据或构建模型时,就不能使用整月份数据,”Ortiz警告说,因为系统内部已经发生了变化。

TechTarget首席营销官John Steinert表示,即使你收集的数据正确无误,但是如果数据量过低或独立变量过多,那么也很难用来为B2B市场营销和销售等业务领域创建预测模型。“数据量越大、数据科学工具的效果就越好,预测模型就越强大。因为交易利率很低,所以独立的变量会对交易造成较大影响。不够大的数据集和复杂的相互作用削弱了预测模型的力量。

解决数据量过少的一种方法是购买像purchase-intent这样的数据集,只要你能够找到一个可以应用于你的业务的数据集。另一种方法是使用模拟产生的数据,但Avanade高级数据专家Chintan Shah警告务必要十分谨慎地使用模拟数据。他表示模拟数据可能不会符合我们的假设。”

2没有理解你的数据

你可能对你的数据集将显示的结果有预先判断,但是数据团队应该在使用数据训练数据模型之前花些时间仔细研究数据。Ortiz说:“如果你看到一些违反直觉的东西,说明你的假设可能是错误的,或者数据是错误的。我认为最重要的事情就是研究数据,绘制图表并进行探索性分析。很多人都匆匆略过这一步,甚至完全忽略。但是实际上你需要了解数据是什么样子的。如果事先进行一些探索,你就可以更快地确定这些数据是否能根据专业知识和商业敏锐性告诉你合理有用的结果。

3期望过高

Chintan Shah说,对人工智能的炒作让太多的人相信只要我们向计算机算法扔数据,它就会自己解决所有问题。尽管公司拥有大量的数据,但要将数据转换成可用的格式,还需要有专门的人力。

只关注公司以前做了什么只能使做以前的事的效率提高而不能发现新的事物。“你越是只把过去作为预测未来的依据,你就越不愿意去寻找新的途径,”Steinert说。“即使你用第三方的数据来解决你的产品或服务的需求,它也不能保证你一定能完成这些销售任务。”他补充称:“数据模型可以告诉你,一家公司与你提供的服务相匹配,但它不能告诉你该公司现在是否有需求。”

“人们开始对数据科学家进行投资,这些他们以前在各种领域中都从未信任过的人。”Ortiz说:“在他们看来,用数据科学家的观点来回答问题,用数据来解决难题,并推动决策,这是一件很有希望的事。”Ortiz建议,数据科学家应该从小型项目和快速的成功中证明他们能够实现目标,从而向组织展现价值。“应该从一个小目标开始,而不要一开始就挑战技术难题,花一个月之久做一个你认为有巨大价值的大项目。”

4未对新模型进行测试

如果你已经花费了时间和金钱来构建一个数据模型,那么你希望在任何地方都能使用它来充分提高模型利用率。但是,如果这样做,就无法衡量这个模型的效果。另一方面,如果用户不相信模型,他们可能不会使用它,然后你就不能测试它,Steinert说。

那么解决方案是什么呢?用一个使用模型的组来确保模型有效,一个不使用它的控制组来对照,Steinert补充道。有一个随机组去寻找模型成立的场合,而对照组则按原先的情况设计。

5只有目标,没有假设

寻找可以提供特定改进的数据模型是很诱人的,例如,在48小时内解决80%的客户案例,或者在一季度内获得10%的业务增长,但这些指标还不足以应对问题。

“最好先从假设开始“奥尔蒂斯说。“通常你会看到一条曲线或一条线作为整体度量标准,并且你想要移动它。这可能代表一个伟大的商业目标,但很难想象你需要采取哪些措施才能做到这一点。“通过对照组或探索数据来验证你的假设,即什么能改善模型。“如果你可以在对照组进行分组测试并且样本都具有代表性的情况下运行测试,则可以实际确定你使用的方法是否实际影响了你希望其影响的方法。如果你只是在事后查看数据,那么从假设开始可以帮助缩小范围。我需要将这个指标增加10%;我的假设是什么?可能会影响到什么?然后我可以对数据中的数据进行探索性分析跟踪。在你提出的问题和你正在测试的假设中清楚地说明,可以帮助你减少在这个问题上花费的时间。”

6模型已过时

如果你有一个适合你的问题的数据模型,你可能认为你可以一直使用它,但是模型需要更新,并且随着时间的推移,你可能需要构建另外的模型。Ortiz警告说:“功能会随着时间而改变。你需要不断地观察其有效性并更新你的模型。”

模型过时有很多原因;世界在变化,你的公司也在变化(尤其是当模型被证明有用的时候)。模型不应该被视为静态的;市场当然不是一成不变的。“如果市场的偏好正在偏离你的旧有模型,它将使你走入歧途。”模型的性能衰退。或者竞争对手从你的市场表现中学习时它就过时了。问题是随着时间的推移,我们该如何发现新的模型?这就要求我们进行一系列实验,以发现新的找到模型的机会。

7不监控最终结果

使用控制组的另一部分作用是测量模型的输出的效果,你需要在整个过程中跟踪它,或者最终针对错误的目标优化。

Steinert指出:有的公司使用机器人来提供电话服务,而且不持续检查机器人是否能够带来更高的客户满意度,只庆幸减少了人力成本。如果客户结束合作是因为机器人无法给他们正确的答案,而不是因为解决了他们的问题,那么客户满意度将大幅下降。

8忽略业务专家的作用

如果你认为需要的所有答案都在数据中,而开发人员或数据科学家可以自己找到它们,那就大错特错了。你必须要确保了解实际业务问题的人参与这项工作中。

Shah解释说:“虽然一个知识渊博、经验丰富的数据科学家最终能够解决手头的问题,但如果业务专家和数据科学家合作来解决问题,问题就会容易得多。”任何数据科学算法的成功都取决于成功的特征。为了获得更好的特征,一个懂行专家总是比一个花哨的算法更有价值。

Ortiz建议,开始项目时,甚至在查看数据之前,要在数据团队和业务专家之间进行对话,以确保每个人都清楚项目要实现什么效果。然后,你可以做探索性的数据分析,看看你是否能够实现它,如果不能,你可能需要用一种新的方式重新表述这个问题,或者采用一个不同的数据源。但这个具体领域的专家应该帮助确定目标是什么以及项目是否符合目标。

9选择过于复杂的工具

机器学习的最前沿是令人兴奋的,新技术可能非常强大,但它们也可能是多余的。Shah指出:“也许像逻辑回归或决策树这样的简单方法就能完成这项工作。” Ortiz对此表示赞同。

人们很容易将大量的计算机资源和复杂的模型用于解决问题。也许我对一个项目的某个方面有着很好的理解,我想测试一个全新的算法,这个算法可以做的比要求的更多。或者我只是想尝试一下是否能找到一个简单的方法来解决这个问题。在使用复杂办法之前,应该将所有简单的办法考虑一遍” Ortiz说道,注意到过拟合更可能发生在像深度学习这样的复杂算法中:过拟合可能使新数据不符合原有模型

你应该与业务专家商量目标然后选择技术。很多数据科学家关注机器学习,机器学习往往关注的是预测。但不是你面临的每一个问题都是预测问题。我们需要关注上季度的销售情况,这可能意味着很多不同的事情。我们是否需要预测新客户的销售额,有可能你只需要知道为什么在上个季度的某一周销售情况不佳。

10选择不合适的模型

有很多数据科学和机器学习的例子,你可以从中学习和适应。“数据科学热度呈指数增长的原因之一是几乎所有算法的开源模型都可用,这使得快速开发模型变得很容易,”Shah解释说。但是这些模型通常是针对特定的用例开发的。他说,如果你从系统中需要的是不同的功能,那么最好构建自己的版本。实现自己的数据清理和功能构建过程。他建议道。“它给你更多的控制权。”

11曲解基本概念和基础原理

当你没有足够的数据用于单独的训练集时,交叉验证可帮助你评估预测模型的准确性。对于交叉验证,你可以分几次设置数据,使用不同的部分训练。然后分次测试模型, 以确定是否无论你使用哪部分数据集进行训练都能获得相同的精度。但是你不能用它来证明你的模型总是和它的交叉验证分数一样准确,Ortiz解释道。一个可归纳的模型是对新传入的数据作出精确反应的模型,但交叉验证永远无法证明这一点。“因为它只使用你已经拥有的数据,它只是能显示你的模型的尽可能准确的数据。”

从根本上说,“相关性不是因果关系;看到两个相关的东西并不意味着一个影响另一个,”他指出。你对数据集进行的探索性绘图可以让你了解它可以预测什么,以及哪些数据值不会告诉你任何事情的相关性。如果你正在跟踪你的电子商务网站上的客户行为,以预测哪些客户将返回,以及何时返回,记录他们登录并不会告诉你任何信息,因为他们已经回到你的站点来做这些事情。登录与返回有高度的相关性,但将其纳入模型是错误的。

12低估用户的理解能力

Ortiz指出,业务用户可能无法自己进行统计分析,但这并不意味着他们不了解错误边际、统计意义和有效性这些指标。通常,当一份分析报告提交给商业团队时,它最终会变成一张只有一个数字的幻灯片。无论是一个准确的数字、一个估计还是一个预测,误差范围是非常重要的。如果在数据分析的基础上做出商业决策,那么就要清楚地说明解释结果来使决策者相信这个系统,不要认为他们在技术上什么都不懂,无法理解结果。


原文发布时间为:2018-09-13

本文作者:Mary B

本文来自云栖社区合作伙伴“数据分析”,了解相关信息可以关注“数据分析”。

相关文章
|
22天前
|
SQL 算法 架构师
【软件设计师备考 专题 】程序设计评审的重要性和方法
【软件设计师备考 专题 】程序设计评审的重要性和方法
59 0
|
程序员 编译器 C语言
程序员内功心法之程序环境和预处理(2)
程序员内功心法之程序环境和预处理(2)
144 0
程序员内功心法之程序环境和预处理(2)
|
Java C语言
计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会事半功倍!
各位学弟学妹们好,作为稍微年长的我(岁月是把杀猪刀啊),今天就给大家补补课。 在大学里的,我们上的计算机专业课程一般都是像操作系统、编译原理、计算机组成原理、计算机网络这些理论课程,还有一些像C语言、Java、.Net这些可以实践的课程,甚至还有可能让你焊一个收音机,但是对于一些基本习惯却很容易被忽略,需要学弟学妹们自行摸索。
176 0
计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会事半功倍!
|
机器学习/深度学习 Python 人工智能
教程 | 一文读懂自学机器学习的误区和陷阱(附学习资料)
本文为你指出一些自学的误区,推荐学习资料,提供客观可行的学习表并给出进阶学习的建议。
4789 0
|
NoSQL 测试技术 程序员
关于代码的那些低级错误,都是血泪的教训
无论你是初级工程师,中级工程师,高级工程师,甚至是全栈工程师、架构师,都是从零开使一步一步走出来的,想必都会犯过一些低级错误。 那些错误都是怎么发生的,如何避免发生错误呢,看看我们各位资深的程序员以自身为例,告诫我们敬畏每一段代码
5392 0
|
机器学习/深度学习 算法 大数据