数据工程师常见的10个数据统计问题

****数据工程师自诩自己是“比任何软件工程师更擅长统计,比任何统计学者更擅长软件工程的人”。这里枚举了数据工程师常见的10个数据统计问题,希望对大家有所帮助。

  1. 不完全理解目标函数

数据工程师希望建立“最佳”的模型。但是如果不知道目标和目标函数是什么,以及它是如何运作的,那么就不太可能建立“最佳”模型。这个目标甚至可能不是一个数学函数,而是一个改进商业目标的指标。

大多数人花费大量时间理解目标函数以及数据和模型如何与目标函数相关联。但如果正在优化业务,请将其映射到适当的数学目标函数。例如,F1得分通常用于评估分类模型,而一个分类模型的成功取决于正确出现的百分比,F1得分具有误导性,即便F1显示模型在60% 的时间内是正确的,而实际上可能只有40% 的时间是正确的。

  1. 对为什么会起作用缺乏一个假设

如果没有看过数据,也没有形成一个假设,那么无法讨论哪种模型最有可能最好地捕捉数据的特征,就无法对问题建立模型。而且,模型解释会变得非常困难。因为你只是随机地向数据抛出模型。

一定要看数据!理解数据的特征并形成一个假设,该假设使得模型可能最好地捕获这些特征。从数据上看,有些数据的关系可能是一目了然的。

  1. 解释结果前不看数据

不查看数据的另一个问题是,结果可能受到异常值或其他构件的影响,对于最小化平方和的模型尤其如此。即使没有异常值,也可能会遇到数据集不平衡、值被剪切或丢失以及其他各种现实数据的奇怪问题。

看数据非常重要,要理解数据的本质是如何影响模型结果的。

  1. 没有一个朴素的基准模型

现代的机器学习库几乎让建模变得太简单了,只要更改一行代码,就可以运行一个新的模型。随着自己对模型的偏好,甚至可以忘记了预测数据的基本方法。如果没有一个朴素的基准,就无法对模型有多好进行绝对的比较,如果没有对比,那么当前的模型可能都是糟糕的结果。

预测一个值的最朴素方法是什么?超越常规,而不是打破常识。

  1. 不正确的抽样检验

模型在研发环境看起来很棒,但在生产环境中表现糟糕。所谓创造创造奇迹的模型可能正在导致非常糟糕的业务结果,可能会让公司损失大量收入。

因此, 要确保模型在现实的外部样本条件下运行,并了解它什么时候会表现良好,什么时候表现不好。例如,在研发环境中随机森林的mse=0.041和 线性回归的mse=0.181要好得多,但是在生成环境中中,随机森林的mse=0.257比线性回归的mse=0.187要差得多。随机森林过度训练,可能不会产生良好的生产结果。

  1. 对完整数据集进行预处理

强大的机器学习模型可能会过度训练。过度训练意味着它在内部样本中表现良好,但在外部样本中表现糟糕。因此,需要意识到是否有训练数据注入到了测试数据中。如果不小心,在做特性工程或交叉验证的时候,训练数据都可能潜入测试数据并放大模型效果。

因此,要确保有一个真正的测试集没有任何泄漏到训练集,特别要注意在生产环境中使用的任何依赖于时间的关系。这种情况经常发生。在将整个数据集分成训练集和测试集之前,对它进行预处理,这意味着我们没有一个真正的测试集。预处理需要分开执行,尽管训练集和测试集之间的分布特性没有那么不同,但可能并不总是如此。

  1. 不正确的外部样本检验: 截面数据和面板数据

需要学会交叉验证,很多工具甚至提供了一些很好的便捷功能,但是大多数交叉验证方法都是随机抽样的,所以可能最终会在测试集中得到训练数据,从而提高性能。

因此,需要生成测试数据,使其准确地反映在实际生产环境中使用的预测数据。特别是时间序列和面板数据,可能需要生成自定义的交叉验证数据或者进行相关测试。

  1. 不考虑决策时可以获得哪些数据

当在生产环境中运行一个模型时,它将获得运行该模型时可用的数据。这些数据可能与训练中的可用数据不同。例如,数据可能会延迟发布,当运行模型时,其他输入已经改变,而模型可能在使用错误的数据进行预测。

因此,需要做一个滚动样本前向测试。如果在生产中使用这个模型,那么训练数据会是什么样子的呢?用生产环境的真实抽样产生测试用的训练数据。此外,还想考虑一下,按照模型的预测,那么在做决策的时候会产生什么结果呢?

  1. 不易察觉的过拟合

在数据集上花费的时间越多,就越有可能过拟合。通过持续修补特征和优化模型参数并采用了交叉验证,所以一切都会很好。

实际上,在完成构建模型之后,可以尝试找到数据集的另一个“版本”,它可以作为真正的样本之外数据集的替代品,利大于弊。

  1. “需要更多数据”的谬论

与直觉相反,开始分析数据的最佳方法通常是处理数据的一个有代表性的样本集。这允许您熟悉数据并构建数据流水线,而无需等待数据处理和模型训练。但很多人似乎并不喜欢这种方式,总是觉得数据越多越好。

实际上,从一个具有代表性的小样本开始,看看能否从中获得有用的信息。终端用户能使用我们的模型吗?模型能解决真正的痛点吗?如果没有,问题可能不是因为数据太少,而是因为方法不对。

【关联阅读】

3