0

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

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

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

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

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

double estimate(double priorMean, 
                double priorStandardDeviation, 
                int clicks, int views);

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

4

4 回答 4

3

我提出了一个新的答案,因为它根本不同。

这是基于 Chris Bishop,机器学习和模式识别,第 2 章“概率分布”p71++ 和http://en.wikipedia.org/wiki/Beta_distribution

首先,我们将 beta 分布拟合到给定的均值和方差,以便在参数上建立分布。然后我们返回分布的模式,它是伯努利变量的预期参数。

def estimate(prior_mean, prior_variance, clicks, views):
  c = ((prior_mean * (1 - prior_mean)) / prior_variance - 1)
  a = prior_mean * c
  b = (1 - prior_mean) * c
  return ((a + clicks) - 1) / (a + b + views - 2)

但是,我非常肯定先验均值/方差对您不起作用,因为您丢弃了有关您拥有多少样本以及您的先验有多好的信息。

相反:给定一组 (webpage, link_clicked) 对,您可以计算特定链接被点击的页面数。让它成为m。设未点击链接的次数为 l。

现在让 a 为新链接的点击次数为 a,网站的访问次数为 b。那么你的新链接的概率是

def estimate(m, l, a, b):
  (m + a) / (m + l + a + b)

这看起来很微不足道,但实际上有一个有效的概率基础。从实现的角度来看,您可以全局保留 m 和 l。

于 2009-07-25T08:39:27.413 回答
2

从常客的角度来看,P/N 实际上是正确的。

您也可以使用贝叶斯方法来整合先验知识,但由于您似乎没有这些知识,我想 P/N 是要走的路。

如果你愿意,你也可以使用 iirc 归结为统一先验的拉普拉斯规则。只需给页面上的每个链接以 1 而不是 0 开头。(因此,如果您计算链接被点击的次数,请给每个链接一个 +1 奖励,并与您的 N 类似。)

[更新]这是一种贝叶斯方法:

设 p(W) 是一个人在特定组 W 中的概率。设 p(L) 是单击特定链接的概率。那么你正在寻找的概率是 p(L|W)。根据贝叶斯定理,您可以通过以下方式计算

p(L|W) = p(W|L) * p(L) / p(W)

您可以通过点击量 L 来估计 p(L),通过该组相对于其余用户的大小来估计 p(W),并且 p(W|L) = p(W 和 L) / p(L ) 由点击 L 的特定组 W 的人数除以点击 L 的概率。

于 2009-07-15T19:00:36.440 回答
0

贝叶斯定理证明:

P(A,B) = P( A | B ) * P( B )    (1) 

自从,

P(A,B) = P(B,A)                 (2)

并用(1)代替(2),

P(A | B) * P( B ) = P (B | A) * P(A)

因此(贝叶斯定理),

           P( B | A ) * P(A)
P(A | B) = -----------------
                 P(B)

P(A)   -- prior/marginal probability of A, may or may not take into account B
P(A|B) -- conditional/posterior probability of A, given B.
P(B|A) -- conditional probability of B given A.
P(B)   -- prior/marginal probability of B

结果,

P( A | B ) = P( A ), then a and b are independent
P( B | A ) = P( B ), and then

独立性的定义是,

P(A,B) = P(A | B) * P( B ) = P( A )* P( B )

应该注意的是,通过改变先验和思考问题的方式很容易根据自己的喜好来操纵概率,看看这个关于人择原理和贝叶斯定理的讨论。

于 2009-07-15T19:15:20.750 回答
0

你需要知道 X 与 W 的相关性有多强。

如果您想开发一个大型网站,您很可能还希望拥有一个更复杂的数学模型。如果你经营一个像 digg 这样的网站,你有很多先验知识,你必须考虑到你的计算。这导致多元统计。

于 2009-07-15T20:08:03.013 回答