机器学习还是生存分析?

数据挖掘 机器学习 分类 数据清理 预处理 生存分析
2022-01-26 10:13:05

我正在构建磁盘故障的预测模型(发生磁盘故障所需的时间以及哪些参数可能会强烈影响磁盘故障)。我有点困惑-

  1. 我应该执行哪些数据预处理步骤。数据集高度不平衡(500 次失败和约 40000 次非失败)
  2. 由于数据高度不平衡,我应该考虑哪种类型的机器学习模型?
  3. 几天前,我读到了生存分析,现在我很困惑,问题是生存分析还是机器学习?

我目前正在使用 BackBlaze 提供的数据集(https://www.backblaze.com/b2/hard-drive-test-data.html)。

如果我能得到一些方向,那就太好了:)

2个回答

一些算法,例如 SVM 或逻辑回归,有可能为某个类添加权重,从而解决不平衡的问题。

这听起来确实像是生存分析的工作,它专门用于回答诸如“当机器 X 发生故障时”或“哪个属性对故障影响最大”之类的问题。您可以简单地从绘制 Kaplan-Meier 曲线开始,然后通过某些属性对其进行进一步分层。然后您可以尝试 Cox 回归模型 - 查看属性对生存的影响 - 风险比很有用。但不要忘记验证假设(函数形式和比例风险)。

在 R 中,生存分析执行得非常好,所以不要害怕。有一个简单而简短的教程可能会有所帮助。

  1. 您可以考虑使用对多数类的欠采样、对少数类数据集进行过采样或对数据集应用SMOTE来重新平衡数据集。
  2. 如果您的数据集更加平衡,那么逻辑回归/随机森林都不是一个糟糕的起点。我认为随机森林更擅长处理不平衡的分类问题,但它们可能仍然对您所说的不平衡程度存在问题。
  3. 生存分析通常与问题的时间有关(即:硬盘驱动器何时可能发生故障?)因此,如果您的数据中包含时间,那么您绝对可以将其视为生存分析问题。但是,如果时间没有进入问题,那么将其作为 ML 问题进行分析可能会更容易。