机器学习中的 IID 违规

数据挖掘 机器学习 神经网络 统计数据 数据
2021-09-19 15:59:50

想象一下,我正在收集一些训练数据。假设我从 1000 人中收集了一个 30 分钟的时间序列,所以我的特征矩阵中有 1000 个观察值(行)。我训练了一些模型(让我们说这个例子的神经网络),我发现我的 AUC 真的很差,我认为问题在于我只有 1000 个观察值 - 所以我没有足够的数据

但是,我现在无法收集更多数据。我可以做的一件事就是将 30 分钟的时间序列分成 30 个 1 分钟的部分。然后将这些 1 分钟系列用作我的数据中的行。所以我最终会得到每人 30 次观察和 1000 个人,在我的特征矩阵中给我 30000 行。我现在将训练集的大小增加了 30 倍

如果我在进行统计/推理测试时这样做,我将违反独立性假设,并且我将被迫使用一些多级模型对其进行建模以进行纠正

这是否与机器学习中的 IID 假设相同,即您的每一行都必须相互独立?

对于推理测试,这个假设很重要的(其中一个)原因是它会影响推理的类型 1 错误。但是,在机器学习中,我们没有进行任何推理测试,那么违反 IID 对结果究竟有什么影响呢?换句话说,为什么行需要相互独立?尤其是在上述情况下,我可以通过重用 1 个人数据的不同部分来大幅增加训练集的大小

2个回答

假设您正在调查心率是否可以预测一个人是否吸烟。您连续测量 30x1m 次 bpm,并询问此人是否吸烟以构建您的训练模型数据集。

什么有助于更好的预测器?一个吸烟者的 30 次观察,还是 30 名吸烟者的 1 次观察?鉴于一个人的心率在 30m 内不会发生太大变化,显然您宁愿从 30 人中获取 1 个样本,而不是从一个人中获取 30 个样本。一个人的 30 个样品不如 30 人的 1 个样品值钱。

因为一个人的样本不是独立的。

我认为,如果您将非独立样本放入神经网络,那么只要所有训练数据的非独立性相似,它就不会对预测能力产生太大影响。在一种极端情况下,如果所有吸烟者和非吸烟者在 30m 期间的心率相同,那么您所做的就是将输入数据精确地重复 30 次,并且不会有任何改变(除了运行时间会增加 30 倍) ...)。

但是,如果吸烟者的心率是恒定的,而非吸烟者的心率是变化的,那么您可以在模型中添加 30 个每个吸烟者心率的测量值,以及将这些心率与不吸烟相关联的一组随机测量值。您的 NN 很可能会预测具有这些吸烟者心率的任何人都是吸烟者。这显然是错误的——每个吸烟者的 30 次测量值只值一次测量,将它们放入 NN 会错误地训练网络。

我觉得不够安全,无法给出明确的答案,但是当数据被分成任意小部分时,这种情况会出现在音素分类中。在这里,即使它是相同的问题,它也不会引起我所知道的任何问题。

所以我会尝试违反这个假设,看看它是否有效。这种方法经常用于机器学习。例如,当训练数据的行为不像对角协方差高斯等时,有时会使用朴素贝叶斯。