好吧,这是一个与我的问题类似的问题(我将在下面详细说明真正的问题,但我认为这个类比会更容易理解)。
我有一枚奇怪的双面硬币,每抛 1,001 次,只会(随机)出现 1 次正面(其余均为反面)。换句话说,我每看到 1,000 个尾部,就会有 1 个正面。
我有一种特殊的疾病,我看到的每 1,000 个尾部中只有 1 个,但我注意到每个正面,所以在我看来,注意到正面或反面的比率是 0.5。当然,我了解这种疾病及其影响,因此我可以弥补它。
现在有人给了我一枚新硬币,我注意到注意到正面的比率现在是 0.6。鉴于我的疾病没有改变(我仍然只注意到每 1,000 个反面中就有 1 个),我如何计算这枚新硬币产生的正面与反面的实际比例?
<小时/>好吧,那么真正的问题是什么?好吧,我有一堆数据,由输入和输出(1 和 0)组成。我想教一种监督机器学习算法来预测给定输入的预期输出(0 到 1 之间的 float )。问题是 1 非常罕见,这会搞乱内部数学,因为它非常容易受到舍入误差的影响 - 即使使用高精度 float 学也是如此。
因此,我通过随机省略大部分 0 个训练样本来对数据进行归一化,这样看起来 1 和 0 的比例大致相等。当然,这意味着现在机器学习算法的输出不再预测概率,即。它现在预测的是 0.5,而不是应有的预测 0.001。
我需要一种方法将机器学习算法的输出转换回原始训练集中的概率。
作者注(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。
realRatio = 1 / (1000 / calculatedRatio - 999)
看来是正确的。 calculatedRatio 0.5 产生 realRatio 1/1001,0.6 产生 3/2003。
关于machine-learning - 纠正收集数据中的已知偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/719820/