是否可以根据季度实现分类器?缺少数据怎么办?

数据挖掘 机器学习 分类 支持向量机 阶级失衡
2022-02-18 08:17:13

我有一个包含多个个人和特征的数据集。我正在研究一年中的行为(例如,获得的金钱、工作等的平均值或迭代次数)。

我的最终目标是实现一个分类器,因为我对每个人都有一个特定的特征(等于 0、1 或 2)。当我第一次尝试实现 SVM 时,结果很糟糕,因为我没有足够的数据/特征:我有太多的 1 号个体而没有足够的 0 和 2 的个体,所以我的分类器几乎总是将人们归为 1 类。因此,我尝试通过将数据分成四个季度来增加行数(即 JAN、FEV、MAR,然后是 APR、MAY、JUN,然后是 JUL、AUG、SEPT,最后是 OCT、NOV、DEC)

我想知道两件事:

  • 这是个好主意吗?我是否必须对可能影响我的结果的特定假设保持谨慎?
  • 如果这是一个好主意,我有一些一年中某些季度的可用数据,但有时它会丢失(例如,假设我上一个季度没有可用的“年龄”);我必须放弃这个功能吗?还是放弃最后一个季度会更明智?或者是否有可能在没有实际删除任何信息的情况下使分类器工作?
1个回答

这是个好主意吗?

从你的描述很难看出。这不是一个立即的坏主意。如果它产生了更好的分类器(根据交叉验证),那么它可能已经奏效了。

关于按季度拆分行为数据并将其视为独立数据,我关心的主要问题是:

  • 当他们共享一个人时,您的数据样本很可能是相关的。您可以通过仔细划分训练集和交叉验证/测试集来解决此问题。不要进行完全随机拆分,而是按人拆分 - 任何个人记录都应仅出现在训练、交叉验证或测试集中之一中(假设您的目标是在生产中从不在您当前的用户那里获取类似的数据数据库,并预测他们的类别)。

  • 记录中可能存在季节性变化,从而降低拆分的有效性。因此,APR-JUN 中的“类型 1”人员的记录可能看起来像 JAN-MAR 中的“类型 0”人员。

  • 当您想要对新用户进行分类时,您将如何在生产中接收数据?如果您只想处理单季度数据,那么您的新分类器就可以了。如果您有更多数据,则必须处理分类器,可能会根据季度为同一个人预测不同的目标变量。您可以以某种方式将它们组合起来 - 但如果您这样做,您还应该在测试中执行此操作以查看这样做的影响,这可能会适得其反(您最终得到的测试示例数量与你还没有完成拆分)。也可能没问题,也许它会增加一些正则化。

我是否必须对可能影响我的结果的特定假设保持谨慎?

你必须非常谨慎地测试你的分类器,因为你可能会从交叉验证和测试集到训练集的数据泄漏,这会让你认为分类器的泛化能力很好,而实际上并非如此。上述解决方法 - 在决定 train/cv/test 拆分时按人拆分。

我在一年中的某些季度有一些可用数据,但有时会丢失(例如,假设我上一个季度没有可用的“年龄”);我必须放弃这个功能吗?

处理丢失的数据本身就是一个复杂的话题,有很多选择。你可以从:

  • 如果数据随机丢失(即没有理由怀疑它与目标变量相关,或者只影响某些类型的记录),您可以从训练集中替换该特征的平均值,根据来自其他特征的统计模型。

  • 如果由于可能影响目标变量的原因而丢失数据,那么您应该将该信息提供给分类器,因为它本身可能是一个重要特征。您可以像以前一样为原始特征取平均值或更复杂的估算值,但您应该添加一个新的布尔特征“特征 X 缺失”。

您是否应该使用部分数据或丢弃一般来说是不可能的。如果您不确定,请尝试两者并选择具有最佳交叉验证结果的版本。