好的,所以这是一个类似于我的问题的问题(我将在下面详细说明真正的问题,但我认为这个比喻会更容易理解)。
我有一个奇怪的双面硬币,每1,001次投掷只剩下头(随机)1(其余为尾巴)。换句话说,对于我看到的每1000个尾巴,将有1个头。
我有一种特殊的疾病,我只注意到我看到的每1000条尾巴中有1条,但我注意到每个头部,所以在我看来,注意头部或尾部的速度是0.5。当然,我知道这种疾病及其影响所以我可以弥补它。
现在有人给了我一个新的硬币,我注意到头部的注意率现在是0.6。鉴于我的疾病没有改变(我仍然只注意到每1000个尾巴中有1个),我如何计算这个新硬币产生的头尾的实际比例?好的,那么真正的问题是什么?好吧,我有一堆由输入和输出组成的数据,分别是1和0。我想教一种有监督的机器学习算法来预测输入时的预期输出(0到1之间的浮点数)。问题是1s是非常罕见的,这会搞乱内部数学,因为它变得非常容易出现舍入误差 - 即使是高精度浮点数学也是如此。
因此,我通过随机省略大多数0训练样本来规范化数据,使得看起来大小相等的1和0。当然,这意味着现在机器学习算法的输出不再是预测概率,即。而不是预测0.001,它现在预测0.5。
我需要一种方法将机器学习算法的输出转换回原始训练集中的概率。
作者注(2015-10-07):我后来发现这种技术俗称“下采样”
答案 0 :(得分:2)
您正在计算以下
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。