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

时间:2009-07-15 18:44:54

标签: math probability

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

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

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

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

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

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

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

4 个答案:

答案 0 :(得分:3)

我把它作为一个新的答案,因为它根本不同。

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

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

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)

然而,我非常肯定先前的均值/方差对你不起作用,因为你扔掉了有关你有多少样本以及你的先前有多好的信息。

相反:给定一组(网页,link_clicked)对,您可以计算特定链接被点击的页数。那就是m。让未点击链接的次数为l。

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

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

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

答案 1 :(得分: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的概率。

答案 2 :(得分: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 )

应该注意的是,通过改变先验和问题的思维方式来操纵你喜欢的概率很容易,看一下Anthropic Principle and Bayes' Theorem的讨论。

答案 3 :(得分:0)

你需要知道X与W有多强关系。

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