我的数据集中的观察可以分为两类。第 1 类中的观察结果肯定是正确标记的。已被指定为第 2 类的观察有很大比例的错误标记数据。我也知道第 2 类中的错误标记数据与第 1 类中的观察值一样多。例如,我对潜在数据集进行了小型模拟,为了简化事情,我只模拟了 1 个变量,我只是将第 1 类观察结果复制为错误标记的第 2 类观察。(请注意,真实的数据集要大得多,并且包含多个变量,但问题仍然存在,这个模拟抓住了本质。)
Class1 = rnorm(1000,0)
Class2 = c(rnorm(1000,10),Class1)
Class1 = data.frame(score = Class1,Class1 = TRUE)
Class2 = data.frame(score = Class2,Class1 = FALSE)
dat = rbind(Class1,Class2)
我的目标是确定第 2 类中的哪些观察结果真正来自第 2 类,哪些应该属于第 2 类。由于我有多个变量,我决定对我的数据拟合逻辑回归模型,并使用概率作为衡量指标来决定是否第 2 类的观察是否被错误标记。
fit = glm(Class1~.,data= dat, family = binomial)
hist(fit$fitted.values,xlim = c(0,1),xlab = "P(Class 1)",
main='Histogram of probabilities of being in Class 1' )

如果您在直方图中绘制概率,您会在 0 附近看到很多观测值。这些可能是真正的 2 类观测值。您还可以在 0.5 附近看到很多观察结果。这是有道理的。您知道第 1 类中的观测值与第 2 类中错误标记的观测值一样多。因此,如果您看到一个观测值的参数值来自“第 1 类”分布,那么您可能有 50% 的概率是1 类标签和 50% 的概率是 2 类标签(所以贴错标签)。
但我发现直方图中显示的上述概率分布有点奇怪。我本来希望所有值都在 0 到 0.5 之间。相反,我还看到了一些值,例如 0.6 左右。因此,如果我看到带有这些变量值的观察结果,我有 60% 的把握它属于第 1 类。这怎么可能?在我的模拟示例中,我只是为类 1 和错误标记的类 2 复制了相同的值,因此理论上应该不可能进行上述观察。
我该如何解释这个?这些概率有意义吗?
编辑:作为对@whuber 的回应,我还添加了以下数据图。
plot(dat); curve(1/(1 + exp(-coef(fit) %*% rbind(1, x))), add=TRUE)