逻辑回归残差分析

机器算法验证 物流 残差
2022-03-26 09:23:31

这个问题有点笼统和冗长,但请多多包涵。

在我的应用程序中,我有许多数据集,每个数据集包含约 20,000 个数据点,具有约 50 个特征和一个依赖二进制变量。我正在尝试使用正则化逻辑回归(R 包glmnet)对数据集进行建模

作为分析的一部分,我创建了如下残差图。对于每个特征,我根据该特征的值对数据点进行排序,将数据点分成 100 个桶,然后计算每个桶内的平均输出值和平均预测值。我绘制了这些差异。

这是一个示例残差图:

在上图中,该特征的范围为 [0,1](高度集中在 1)。如您所见,当特征值较低时,模型似乎偏向于高估 1 输出的可能性。例如,在最左边的桶中,模型高估了大约 9% 的概率。

有了这些信息,我想以一种直接的方式改变特征定义,以粗略地纠正这种偏差。更换之类的改动

xx

或者

xfa(x)={a if x<a x else

我怎样才能做到这一点?我正在寻找一种通用方法,以便人类可以快速滚动浏览所有约 50 个图并进行更改,并对所有数据集执行此操作并经常重复以使模型随着数据随时间的推移而保持最新。

作为一个普遍的问题,这甚至是正确的方法吗?谷歌搜索“逻辑回归残差分析”并没有返回很多带有实用建议的结果。他们似乎专注于回答这个问题,“这个模型合适吗?” 并提供各种测试,如 Hosmer-Lemeshow 来回答。但我不在乎我的模型好不好,我想知道如何让它变得更好!

2个回答

您无法在逻辑回归中以这种方式真正评估偏差。Logisitic 回归仅预计对 log 几率或 logit 分数 log(p/(1-p)) 没有偏差。比例会出现偏差,因此看起来有偏差。您需要根据对数几率绘制残差。

不太可能存在任何通用软件来执行此操作。很可能是因为没有解决回归问题的一般理论。因此,这更像是一个“我会做什么”类型的答案,而不是一个基于理论的程序。

您生成的图基本上是具有 100 个分箱的视觉 HL 测试,但使用单个预测器而不是预测概率来进行分箱。这意味着您的程序可能会继承 HL 测试的某些属性。

尽管您应该意识到“过度拟合”您的标准,但您的程序听起来很合理。您的标准作为诊断也不太有用,因为它已成为估计过程的一部分。此外,每当你凭直觉做某事时,你应该尽可能详细地写下你的决策过程。这是因为您可能会发现一般过程或理论的种子,当开发这些过程或理论时,它会导致更好的过程(相对于某些理论而言更加自动化和最优)。

我认为一种方法是首先减少您需要调查的地块数量。一种方法是将每个变量拟合为三次样条,然后研究具有非零非线性估计的图。考虑到数据点的数量,这也是非线性的简单自动修复。这会将您的模型从 50 扩展到 200+50k,其中 k 是节数。您可以将其视为应用“真实”转换的“统计泰勒级数展开”。

如果在此之后您的诊断仍然看起来很糟糕,那么我会尝试添加交互项。

您的部分问题似乎更多地是关于编写一个交互式程序,这比这里更像是 stackoverflow 的领域。搜索探索性数据分析工具也可能很有用,因为这些工具更有可能具有您可以“搭载”的功能。