Machine learning 纠正所收集数据中的已知偏差

Machine learning 纠正所收集数据中的已知偏差,machine-learning,statistics,data-mining,normalization,probability,Machine Learning,Statistics,Data Mining,Normalization,Probability,好的,这里有一个类似于我的问题的问题(我将在下面详细说明真正的问题,但我认为这个类比更容易理解) 我有一个奇怪的双面硬币,每1001次抛投中只有1次正面(随机)出现(剩余的是反面)。换句话说,我每看到1000条尾巴,就会有1个脑袋 我有一种特殊的疾病,在我看到的每1000条尾巴中,我只注意到1条,但我注意到每一个头部,所以在我看来,注意到一个头部或尾部的比率是0.5。当然,我知道这种疾病及其影响,所以我可以补偿它 现在有人给了我一枚新硬币,我注意到注意到头部的比率现在是0.6。考虑到我的疾病没有

好的,这里有一个类似于我的问题的问题(我将在下面详细说明真正的问题,但我认为这个类比更容易理解)

我有一个奇怪的双面硬币,每1001次抛投中只有1次正面(随机)出现(剩余的是反面)。换句话说,我每看到1000条尾巴,就会有1个脑袋

我有一种特殊的疾病,在我看到的每1000条尾巴中,我只注意到1条,但我注意到每一个头部,所以在我看来,注意到一个头部或尾部的比率是0.5。当然,我知道这种疾病及其影响,所以我可以补偿它

现在有人给了我一枚新硬币,我注意到注意到头部的比率现在是0.6。考虑到我的疾病没有改变(我仍然只注意到每1000条尾巴中有1条),我如何计算这枚新硬币产生的实际头尾比


好吧,那么真正的问题是什么?我有一堆数据,包括输入和输出,它们是1和0。我想教一个有监督的机器学习算法来预测给定输入的预期输出(介于0和1之间的浮点)。问题是1非常罕见,这会破坏内部数学,因为它很容易受到舍入误差的影响——即使是高精度浮点数学

因此,我通过随机省略大部分0个训练样本来规范化数据,这样看来,1和0的比率大致相等。当然,这意味着现在机器学习算法的输出不再预测概率,也就是说,它不再预测0.001,而是预测0.5

我需要一种方法将机器学习算法的输出转换回原始训练集中的概率


作者注释(2015-10-07):我后来发现,这种技术通常被称为“下采样”

您正在计算以下内容

calculatedRatio = heads / (heads + tails / 1000)
你需要

realRatio = heads / (heads + tails)
求解这两个尾部方程得到以下方程

tails = 1000 / calculatedRatio - 1000
tails = 1 / realRatio - 1
将这两种方法结合起来会产生以下结果

1000 / calculateRatio - 1000 = 1 / realRatio - 1
最后求出实比

realRatio = 1 / (1000 / calculatedRatio - 999)

似乎是正确的。计算出的比率0.5收益率1/1001,0.6收益率3/2003。

老实说,你的类比比你的实际问题更让我困惑;-)@大卫,抱歉-但至少其中一个有意义(我希望!):-)是的,我现在明白了;-)也许可以解决算法中的舍入错误,而不必调整训练输入集。。。如果你愿意发布机器学习算法的一些细节(也许是一个简单的代码示例),你可以从中得到一些信息。我发现这个类比比“现实世界”问题更清楚。无论如何,被接受的答案是完全正确的,但是为了将来的参考,看起来你正在做所谓的重要性抽样。[例如,有关更好的解释,请参阅或谷歌。]