machine-learning - 纠正收集数据中的已知偏差

标签 machine-learning statistics data-mining normalization probability

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

我有一枚奇怪的双面硬币,每抛 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/

相关文章:

python - eli5 show_prediction 不显示概率

matlab - 使用 Octave\MatLab 进行 ML 梯度下降成本函数的简单演算到底是如何工作的?

matlab - 从 Matlab 中的 Gumbel 分布中抽取随机数

python - 如何在Python中获得Pareto分布的Q-Q图?

c# - 使用 Accord.Net 的编码对象编码第二个数据集

r - R 中的 NearZeroVar 是什么?

machine-learning - 是否可以将支持向量机与凝聚聚类器结合使用?

anaconda - 元数据可以成为 Orange3 中的目标变量吗?

c++ - 通过提供数据对象和中心点之间的距离来实现 k-medoids 算法

python - target = train ['claim' ] 和 target = train ['claim' ].copy() 有什么区别?