我有一个包含大约 900.000 条记录的数据集,其中大约 1000 条被标记为阳性(研究事件发生了)。
事件发生的概率总是很低(即<0.1),我想创建一个回归模型来预测事件发生的概率。
我的第一个想法是使用逻辑回归,但我不确定是否可以直接将输出解释为事件发生的概率。使用其他模型时也会出现同样的疑问,例如 SVM 或 RF。
另一个疑问是通常的评估指标(例如 RMSE)是否会在这样的模型上很好地工作,因为即使是总是输出 0 的预测器也会有很好的分数。
我有一个包含大约 900.000 条记录的数据集,其中大约 1000 条被标记为阳性(研究事件发生了)。
事件发生的概率总是很低(即<0.1),我想创建一个回归模型来预测事件发生的概率。
我的第一个想法是使用逻辑回归,但我不确定是否可以直接将输出解释为事件发生的概率。使用其他模型时也会出现同样的疑问,例如 SVM 或 RF。
另一个疑问是通常的评估指标(例如 RMSE)是否会在这样的模型上很好地工作,因为即使是总是输出 0 的预测器也会有很好的分数。
逻辑回归的输出正是——事件发生的概率。如果你的协变量信息丰富,那么你的模型会比每次都说“P=1000/900000”更好,因为它可能会说积极事件的“P=10000/900000”,甚至积极事件的“P=0.9”给定某些协变量。
如果协变量中没有预测能力(即它们与积极事件不相关),那么是的,模型会说 P=1000/900000 但就是这样。
如果你想要一个二元结果,那么你必须根据你对假阳性/阴性的恐惧或真阳性/真阴性的值来决定你选择的 P 阈值。例如,如果一个误报意味着有人死亡,您可以设置阈值,以免误报。这些阈值通常不是统计决策,而是基于应用程序逻辑。ROC 曲线可以在这里提供帮助。
这种类型的数据集通常称为倾斜数据集。这是与数据集中的其他标签相比,某个类被过度表示的时候。
有许多算法非常适合这些类型的问题。具体来说,异常检测算法能够学习一组标签的分布(事件未发生),然后它能够在异常发生(事件发生)时进行标记。这是当一个实例足够超出学习分布的时候。您可以使用它来获取基于 p 统计测试的事件发生概率,该测试使用您设置的特征空间与学习分布中的特征空间进行对比。
最简单的方法是进行广义似然比检验 (GLRT)。但是,我认为使用基于 K-NN 的方法来处理偏斜数据集,您很可能会找到更多的运气。
由于您有大量数据,您可以使用排名算法来生成您的 p 统计量。查看 rankSVM。