所以我在网页上有一堆超链接。从过去的观察中我知道用户点击这些超链接的概率。因此,我可以计算这些概率的均值和标准差。
我现在为此页面添加一个新的超链接。经过短暂的测试后,我发现20个用户看到了这个超链接,5点击它。
考虑到其他超链接上的点击概率的已知均值和标准差(这形成了“先前期望”),如何有效地估计用户点击新超链接的概率?
一个天真的解决方案是忽略其他概率,在这种情况下,我的估计只是5/20或0.25 - 但这意味着我们丢弃了相关信息,即我们之前对点击概率的预期。
所以我正在寻找一个看起来像这样的函数:
double estimate(double priorMean,
double priorStandardDeviation,
int clicks, int views);
我会问,因为我比数学符号更熟悉代码,所以任何答案都使用代码或伪代码而不是数学。
答案 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这样的网站,你有很多先验知识,你必须考虑到你的计算。 这导致了多变量统计。