问题标签 [probability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
210 浏览

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

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

我有一个奇怪的双面硬币,每 1,001 次投掷中只有 1 次正面(随机)出现(其余为反面)。换句话说,每看到 1,000 个尾巴,就会有 1 个正面。

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

现在有人给了我一枚新硬币,我注意到注意到正面的概率现在是 0.6。鉴于我的疾病没有改变(我仍然只注意到每 1,000 个尾巴中有 1 个),我如何计算这枚新硬币产生的实际正面与反面的比率?


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

因此,我通过随机省略大部分 0 训练样本来对数据进行归一化,以使 1 和 0 的比率看起来大致相等。当然,这意味着现在机器学习算法的输出不再是预测概率,即。它现在将预测 0.5,而不是按应有的预测 0.001。

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

作者注(2015-10-07):后来发现这种技术俗称“下采样”

0 投票
3 回答
4818 浏览

python - Python,SimPy:如何从三角概率分布中生成一个值?

我想运行一个模拟,它使用从具有下限 A、模式 B 和上限 C 的三角概率分布生成的值作为参数。如何在 Python 中生成这个值?这个分布有没有像 expovariate(lambda) (随机)这样简单的东西,还是我必须编写这个东西?

0 投票
3 回答
823 浏览

math - 概率和相对频率

如果我使用相对频率来估计事件的概率,那么基于实验次数的估计有多好?标准差是一个很好的衡量标准吗?纸质/链接/在线书籍将是完美的。

http://en.wikipedia.org/wiki/Frequentist

0 投票
2 回答
250 浏览

language-agnostic - 分裂概率

我在 PHP 中有以下代码可以正常工作(每次运行时返回或多或少 10 个结果):

Chance() 函数如下:

现在,我想将这 10 个(平均)结果随机分成以下 4 个部分:

  1. 第一个概率为 10% * 10 = 1
  2. 第二个概率为 20% * 10 = 2
  3. 第三个概率为 30% * 10 = 3
  4. 第四个概率为 40% * 10 = 4

如您所见,所有段的总和 (1 + 2 + 3 + 4) 等于 10,因此我编写了以下函数来执行此操作。

问题是我已经运行了几十次 GetAboutTenWeightedRandomNumbers 函数,结果远低于 GetAboutTenRandomNumbers 函数返回的结果。我确定我犯了一个基本的数学错误,我怀疑在哪里,但我不知道如何解决它。

0 投票
5 回答
26129 浏览

language-agnostic - 如何评估哈希冲突概率?

我正在为搜索系统开发一个后端应用程序。搜索系统将文件复制到一个临时目录并给它们随机命名。然后它将临时文件的名称传递给我的应用程序。我的应用程序必须在有限的时间内处理每个文件,否则它会被关闭——这是一种类似看门狗的安全措施。处理文件可能需要很长时间,因此我需要设计能够处理这种情况的应用程序。如果我的应用程序在下次搜索系统想要索引同一个文件时关闭,它可能会给它一个不同的临时名称。

显而易见的解决方案是在搜索系统和后端之间提供一个中间层。它将请求排队到后端并等待结果到达。如果请求在中间层超时 - 没问题,后端将继续工作,只有中间层重新启动,当搜索系统稍后重复请求时,它可以从后端检索结果。

问题是如何识别文件。他们的名字随机变化。我打算使用像 MD5 这样的散列函数来散列文件内容。我很清楚生日悖论,并使用链接文章中的估计来计算概率。如果我假设我的文件不超过 100 000 个,则两个文件具有相同 MD5(128 位)的概率约为 1,47x10 -29

我应该关心这种冲突概率还是只是假设相等的哈希值意味着相等的文件内容?

0 投票
5 回答
2459 浏览

algorithm - 选择满足特定属性的随机数组元素

假设我有一个名为 的列表,elements每个列表都满足或不满足某些布尔属性p。我想选择满足p随机且分布均匀的元素之一。我不知道有多少项目满足这个属性p

下面的代码会这样做吗?:

(返回一个带有.randInt(n)的随机整数。)k0 <= k < n

0 投票
4 回答
1353 浏览

java - 在给定先验的其他概率的情况下估计概率

我有一堆关于一个人是否购买特定产品的数据(打给自动呼叫中心的电话),1 表示购买,0 表示不购买。

我想使用这些数据来创建一个人购买特定产品的估计概率,但问题是我可能需要使用相对较少的历史数据来做这件事,即有多少人购买/没有购买该产品。

一位朋友建议使用贝叶斯概率,您可以通过提出“先验概率分布”来“帮助”您的概率估计,本质上这是在考虑实际数据之前关于您期望看到的信息。

所以我想做的是创建一个具有类似签名(Java)的方法:

priorProbabilities 是我在以前的产品中看到的一组概率,该方法将使用它来创建此概率的先验分布。buyCount 和 noBuyCount 是该产品特定的实际数据,我想从中估计用户购买的概率,给定数据和先验。这是从方法作为双精度返回的。

我不需要数学上完美的解决方案,只需要比统一或平坦先验更好的解决方案(即概率 = buyCount / (buyCount+noBuyCount))。由于我对源代码比对数学符号更熟悉,如果人们可以在解释中使用代码,我将不胜感激。

0 投票
1 回答
825 浏览

python - 概率时间序列,观察到的数据概率(似曾相识)

好的,伙计们...感谢您查看这个问题。我记得在大学里做了以下事情,但是我忘记了确切的解决方案。任何接受者都要朝着正确的方向前进。

我有一个 N 的时间序列数据(我们将使用三个)。数据序列按时间顺序是连续的(例如 obsOne[1] 与 obsTwo[1] 和 obsThree[1] 一起发生)

obsOne[47, 136, -108, -15, 22, ...], obsTwo[448, 321, 122, -207, 269, ...], obsThree[381, 283, 429, -393, 242, ...]

第 2 步。从数据系列中,我为每个数据系列创建了一系列宽度为 Z 的 X 范围箱。(例如观察 obsOne:bin1 = [<-108, -108] bin2 = [-108, -26] bin3 = [-26, 55] ... binX = [136, > 136]

步骤 3。现在创建一个包含数据系列所有可能组合的表。因此,如果我有 4 个 bin 和 3 个数据系列,所有组合将总计 4x4x4 = 64 个可能的结果。(例如 row1 = obsOne bin1 + obsTwo bin1 + obsThree bin1, row2 = obsOne bin1 + obsTwo bin1 + obsThree bin2, ... row5 = obsOne bin1 + obsTwo bin1 + obsThree binX, row6 = obsOne bin1 + obsTwo bin2 + obsThree bin1, row7 = obsOne bin1 + obsTwo bin1 + obsThree bin2, row9 = obsOne bin1 + obsTwo bin2 + obsThree binX, ...)

第 4 步。我现在回到数据系列,找出数据系列中的每一行在表格中的位置,并计算观察次数。(例如 obsOne[2] obsTwo[2] obsThree[2] = 表上的第 30 行,obsOne[X] obsTwo[X] obsThree[X] = 表上的第 52 行。

第 5 步。然后我只取表中具有正匹配的行,计算有多少观察落在该行上,除以数据系列中的观察总数,这给了我在观察数据上该范围的概率。

我为这个基本问题道歉,而不是数学专家。很多年前我已经这样做了。我忘记了我用的是哪种方法,它比这种漫长的(古老的“手工”)方法要快得多。当时我没有使用 python,它是 c++ 中的其他一些专有包。我想看看是否有什么东西可以用python(现在是python商店)解决这个问题,总是可以扩展,所以它是软约束。

0 投票
10 回答
28067 浏览

algorithm - 如何有效地计算二项式累积分布函数?

假设我知道“成功”的概率是 P。我运行测试 N 次,我看到 S 成功。该测试类似于扔一枚重量不均匀的硬币(也许正面是成功的,反面是失败的)。

我想知道看到 S 次成功或成功次数少于 S 次成功的大致概率。

因此,例如,如果 P 为 0.3,N 为 100,并且我获得 20 次成功,我正在寻找获得 20 次或更少成功的概率。

另一方面,如果 P 为 0.3,N 为 100,并且我获得 40 次成功,我正在寻找获得 40 次更多成功的概率。

我知道这个问题与找到二项式曲线下的区域有关,但是:

  1. 我的数学无法完成将这些知识转化为高效代码的任务
  2. 虽然我知道二项式曲线会给出精确的结果,但我的印象是它本质上是低效的。一种快速计算近似结果的方法就足够了。

我应该强调,这种计算必须很快,并且理想情况下应该可以通过标准的 64 位或 128 位浮点计算来确定。

我正在寻找一个接受 P、S 和 N 并返回概率的函数。由于我更熟悉代码而不是数学符号,因此我希望任何答案都使用伪代码或代码。

0 投票
4 回答
1474 浏览

math - 有效确定用户点击超链接的概率

所以我在网页上有一堆超链接。根据过去的观察,我知道用户点击每个超链接的概率。因此,我可以计算这些概率的平均值和标准差。

我现在添加一个新的超链接到这个页面。经过短暂的测试后,我发现在看到此超链接的 20 个用户中,有 5 个单击它。

考虑到其他超链接上的点击概率的已知均值和标准差(这形成“先验期望”),我如何有效地估计用户点击新超链接的概率?

一个天真的解决方案是忽略其他概率,在这种情况下,我的估计仅为 5/20 或 0.25 - 然而这意味着我们正在丢弃相关信息,即我们对点击概率的先前预期。

所以我正在寻找一个看起来像这样的函数:

我会问,因为我更熟悉代码而不是数学符号,所以任何答案都使用代码或伪代码而不是数学。