是否有一种很好的系统方法来探索和分析数据(在建模之前)?

数据挖掘 方法
2022-03-03 03:34:53

我在 Kaggle 上发现了一些内核示例,他们似乎遵循某种方法,以便系统地分析和探索数据,以确保找到所有异常值、缺失值等。它们只是实际示例并离开不少问题。

我只是假设必须有一个或几个食谱/方法/流程图我可以学习/使用,以便有一个好的清单并系统地处理我的数据并捕获所有数据质量问题并记录它们以明确的方式。即 1. 这样做,2. 这样做,如果结果 A 这样做,如果结果 B 请注意,以后再这样 3. 这样做等等。

为了找到这样的东西,我应该调查什么?我无法想象这不存在。它看起来很像数据科学课程 101(我目前正在学习,但看起来很糟糕),但我找不到任何东西。

任何对解释这一点的 YouTube 视频或 Coursera 课程的引用也将受到欢迎。

2个回答

我假设您询问的是表格数据而不是视觉或 NLP。它不存在是因为 1) 有太多类型的数据和奇怪的问题,以及 2) 单变量 EDA 通常是不够的。如果有帮助,我可以详细说明我通常对单变量分析所做的工作。

在监督机器学习的背景下。我有一个通用的 R 降价文件,用于生成给定变量的 Word 报告。我喜欢 word 格式,因为我可以在专业环境中轻松地注释、评论和分享它们。我使用另一个 R 脚本为我的所有变量生成这些报告。在某些时候,我试图在 Python 中做同样的事情,但没有设法通过简单的格式化得到类似的东西。

在本报告中,我默认(括号中的调整)用于连续变量:

  • 变量名,格式
  • 生成单变量分布图和对数图(删除 0.001 和 0.999 分位数异常值,缺失值,如果变量为负数,可能会变得棘手 - 我经常使用 |x| * log(1+c*|x|) 转换 - 不是最佳的,而是行)。
  • 相同的图表,但具有正/负类的分布(对于不平衡的问题,缩放可能很棘手)
  • 某种部分依赖图(将变量分组在桶中并查看相关的正比率)
  • 一个包含主要值的表(平均值、中值、最小值、最大值、极端分位数、缺失值计数、NA 的奇怪编码计数,它还检测某个值是否被超过 5% 的实例采用并给出该计数)和如上计算的相关阳性率
  • 关于我的一些主要识别变量(想想性别或种族)、时间(看看是否有一些漂移)和一些平均值的地理分布的分布(通常以对数刻度)。

这是相对困难的,因为每个变量都是不同的,而且你总会有一个奇怪的变量导致一些错误,而且格式化很痛苦。如您所见,这完全取决于您的变量和问题。没有什么容易的(我花了大约 150 次尝试让它第一次处理我的所有变量)。

然后您必须单独查看每个报告,如果您想正确执行此操作可能需要几天时间,因为对于您要查找的内容没有任何规定。有时它是一个奇怪的分布颠簸,有时是缺失编码不正确的值,有时是类别差异,有时是一个非常倾斜的变量。由于问题通常取决于数据生成过程,因此它们的解决方案也取决于此,并且没有通用的规则来处理它们。

在某些时候,我试图为分类提供类似的东西,但没有得到任何令人满意的东西。如果类别数量非常低,我只是按类别和上面提到的一些主表计算正类。

然后,当您使用多元 EDA 时,事情会变得很奇怪。我通常做什么:

  • 对 2D 绘图进行一些降维 (UMAP),以查看是否存在集群,如果输出也是集群的。
  • 一些线性相关分析,相关矩阵+一些聚类/树状图,但很少删除任何东西,因为我有不平衡的数据集,其中信息可能来自两个高度相关变量之间的差异。
  • 我放弃了迭代变量选择过程的任何想法,并使用一个带有十几个变量(由专家选择)的简单模型来创建基准(想想 glmnet),然后对我的所有变量使用具有强正则化的模型(xgboost 或 vanilla NN) .
  • 然后我删除了在大模型中不重要的 50%-80% 的变量。
  • 之后就没有规则了(除了正面回答你的经理)

是的,有这个。

  1. 经常检查目标的分布。如果分类,每个类的百分比。这对于许多类型的指标和损失都很重要。如果回归,检查某个固定值的最终高浓度。例如,经常发生由于处理目标的一些错误最终被估算并且有很多零。

  2. 始终检查漂移。通常这些是 id。它们没有任何意义,但由于一些隐藏的偏见,它们常常使模型达到荒谬的高性能。

  3. 了解特征的分布。通常,您在生产中的期望与测试中的不匹配。想想一些人口分布,这些人口在训练中以特定方式抽样,但在生产中会更加均匀匹配。这经常发生在流失/目标模型中

  4. 如果您正在使用结构化数据,请花时间了解您的功能的含义。如果有可用的数据目录,请阅读它。示例:用户倾向于在购买前在网站上注册。然后,如果您正在拟合目标模型,可能是由于将注册用作功能(顺便说一句:这是一个真实的例子,我在三个不同的公司中看到的不止一次,也不是两次,而是超过三次。)

  5. 如果您正在处理文本。花一些时间阅读几个例子。只是不要把它扔进模型里。NLP 是您对模型需要理解的内容最有直觉的少数用例之一。