如何通过不平衡的二元结果提高神经网络的敏感性?

机器算法验证 预测模型 神经网络 二进制数据
2022-04-14 18:07:14

我正在努力预测(不解释)通常只有大约 10%“1”的 0/1 结果(我不能随意命名变量)。N ~40,000。无论是在使用大约 5-10 个主效应时,还是在我建立了 CHAID 程序建议的几个交互项之后,逻辑回归都被证明是不令人满意的。灵敏度最终只有大约 25%。

然后我转向神经网络(SPSS 中的径向基函数网络)。看到程序未能将任何案例归类为“1”,我感到非常震惊。也就是说,灵敏度为零。 第一个问题:在这些条件下,这是一个常见的或可以理解的 NN 结果吗?

接下来我尝试在训练集中随机排除大量“0”的情况,使“1”的比例达到40%左右。现在,该程序能够正确识别训练集中一半数量的案例,灵敏度约为 30%,但当该解决方案应用于测试集时,灵敏度下降到 20%,测试集再次仅包含约 10 个%“1”。

第二个问题:您将如何解决这个问题?

1个回答

是的,这在训练数据和某些类型的关系不平衡时很常见。

假设坏学生以的概率通过难课,而好学生以的概率通过课程。如果你观察到的唯一信息是学生是好是坏,那么你最准确的预测是学生每次都会失败。您可能从训练数据中得知,好学生比坏学生更有可能通过,但您永远不会相信某个特定学生通过的可能性比不及格的可能性更大。01/3

这真的是个问题吗?这取决于您希望如何使用该模型。如果你必须为每个学生赌一美元来判断学生是否会通过或不及格,那么赌每个学生都会失败可能是正确的。如果您觉得为实际属于 B 类的事物预测 A 比为实际属于 A 的事物预测 B 成本更高,那么您可能希望在训练期间将其合并到成本函数中。如果您尝试生成看起来逼真的数据,那么您可能希望随机使用模型的输出,而不是生成最可能的结果。

在某些情况下,有足够的可观察信息,但模型没有学习到这一点。例如,如果您观察纬度和经度,并尝试将位置分类为“特拉华州”与“非特拉华州”,那么您的分类器可能首先了解到特拉华州小到可以忽略不计。您可以尝试诸如更改成本函数(例如从平方误差到交叉熵损失)之类的事情,这会严重惩罚将低概率分配给正确的类。您可以选择更平衡的数据子集。如果您重新平衡数据,您可以在特拉华州内外包括相同数量的点,或者您可以专注于更简单的分类器认为接近特拉华州的点。这可能会以您认为不靠近特拉华州的区域的准确性换取已知边界附近的准确性。