数据科学家犯下的十大统计错误 - kdnuggets

20-09-06 banq


以下是数据科学家犯下的一些最常见的统计错误。
数据科学家是:在统计方面比任何软件工程师都更好,在软件工程方面比任何统计学家都更好。
 

1.不完全了解目标功能
数据科学家希望建立“最佳”模型。但是情人眼里出西施。如果您不知道业务目标和目标功能是什么以及它的行为方式,则不太可能建立“最佳”模型。而且,目标可能甚至不是数学函数,而是可能改善业务指标。
解决方案:大多数Kaggle获奖者都花费大量时间来了解目标函数以及数据和模型与目标函数的关系。如果要优化业务指标,请将其映射到适当的数学目标函数。
示例:F1分数通常用于评估分类模型。我们曾经建立了一个分类模型,其成功取决于正确的出现百分比。F1分数具有误导性,因为它表明该模型在大约60%的时间内是正确的,而实际上只有40%的时间是正确的。
 

2.没有关于为什么应该起作用的假设
通常,数据科学家希望建立“模型”。他们听说XGBoost和随机森林效果最好,所以让我们使用它们。他们阅读了有关深度学习的文章,也许这将进一步改善结果。他们在没有查看数据并且没有形成假设的情况下将模型直接放入问题的解决方案中,希望通过试验知道:哪种模型最有可能最好地捕获数据的特征。这就很难解释您的工作,因为您只是随机地向数据投掷模型。
解决方案:看数据!了解其特征并形成一个假设,即哪个模型最能体现这些特征。
示例:仅通过绘制此样本数据就无需运行任何模型,您已经可以很清楚地看到x1与y线性相关,x2与y没有太多关系。 


 

3.解释结果前不查看数据
不查看数据的另一个问题是,异常值或其他工件可能会严重影响您的结果。对于最小化平方和的模型尤其如此。即使没有异常值,您也可能会遇到数据集不平衡,值被裁剪或丢失以及其他在课堂上看不到的真实数据的其他奇怪工件的问题。
解决方案:它是如此重要,值得重复:查看数据!了解数据的性质如何影响模型结果。
例:离群值,x1斜率从0.906变为-0.375! 

 

4.没有天真的基准模型
现代ML库几乎使它变得太简单了……只需更改一行代码,就可以运行一个新模型,还可以有一个、还可以有一个,太天真。这会导致错误度量标准正在减少,由于模型变得奇异,您可以忘记预测数据的愚蠢方式。如果没有基准测试,就无法对模型的性能进行很好的绝对比较,就绝对值而言,它们可能都是不好的。
解决方案:预测值的最愚蠢的方法是什么?使用最后一个已知值,(滚动)平均值或某个常数(例如0)构建“模型”。将您的模型性能与零智能预测猴子进行比较!
示例:使用某个时间序列数据集,模型1必须优于模型2,MSE分别为0.21和0.45。可是等等!仅取最后一个已知值,MSE就会降至0.003!

ols CV mse 0.215
rf CV mse 0.428
last out-sample mse 0.003


 

5.不正确的样本外测试
这可能会破坏您的职业!您构建的模型在研发方面看起来很棒,但在生产中却表现糟糕。您说的模型会令人惊奇地导致真正糟糕的业务成果,并可能使公司损失数百万美元。剩下的所有错误都非常重要,最后一个重点就是它。
解决方案:确保已在实际的超采样条件下运行模型,并了解何时可以运行良好,何时不运行。
示例:下面样本内随机森林比线性回归的mse 0.048相对于ols摩尔0.183的线性回归要好得多,但样本外随机森林比mse 0.259的线性回归mse 0.187的线性回归要差得多。随机森林训练过度,无法在生产中表现良好!

in-sample
rf mse 0.04 ols mse 0.183
out-sample
rf mse 0.261 ols mse 0.187


 

6.错误的样本外测试:对整个数据集进行预处理
您可能知道强大的ML模型可能会过度训练。过度训练意味着它在样本内表现良好,但样本外表现却很差。因此,您需要意识到训练数据会泄漏到测试数据中。如果不小心,无论何时进行功能设计或交叉验证,训练数据都可能会渗入测试数据并提高模型性能。
解决方案:确保您有一个真实的测试集,并且没有任何训练集泄漏。尤其要注意在生产使用中可能发生的任何时间依赖关系。
 

7.不正确的样品外测试:横截面数据和面板数据
您所需要的只是交叉验证。sklearn甚至为您提供了一些不错的便利功能,因此您认为已选中所有复选框。但是大多数交叉验证方法都是随机抽样的,因此您最终可能会在测试集中得到训练数据,从而提高了性能。
解决方案:生成测试数据,以使其准确反映您将在实际生产使用中进行预测的数据。特别是对于时间序列和面板数据,您可能必须生成自定义的交叉验证数据或进行前滚测试。
 

8.不考虑决策时可用的数据
在生产环境中运行模型时,模型将获得运行模型时可用的数据。该数据可能与您认为在训练中可用的数据不同。例如,数据可能会延迟发布,因此在您运行模型时,其他输入已更改,并且您使用错误的数据进行预测,或者您的为真的y变量不正确。
解决方案:进行样本展开前向测试。如果我在生产中使用了该模型,那么我的训练数据将是什么样的,即您需要进行预测的数据是什么?这就是您用来进行真正的样品外生产测试的培训数据。此外,考虑如果您对预测采取行动,那么在决策时会产生什么结果?
 

9.过度训练
您花在数据集上的时间越多,对它进行过度训练的可能性就越大。您将不断修改功能并优化模型参数。您使用了交叉验证,因此一切都必须很好。
解决方案:建立完模型后,尝试查找数据集的另一个“版本”,它可以替代真实的样本外数据集。如果您是经理,请故意保留数据,以免将其用于培训。
 

10.“需要更多数据”谬论
与直觉相反,开始分析数据的最佳方法通常是处理数据的代表性样本。这使您可以熟悉数据并建立数据管道,而无需等待数据处理和模型训练。但是数据科学家似乎不喜欢这样-更多的数据更好。
解决方案:开始使用一个小的代表性样本,看看是否可以从中得到有用的东西。还给最终用户,他们可以使用吗?它能解决真正的痛点吗?如果不是这样,则问题可能出在不是因为您的数据太少,而是您使用的方法。

作者简历:诺曼·尼默Norman Niemer)是一家大型资产管理公司的首席数据科学家,他在该公司提供数据驱动的投资见解。他拥有哥伦比亚大学的金融工程硕士学位和伦敦卡斯商学院的银行与金融学士学位。