所以我有一个网页上的超链接一堆的。 从以往的观察,我知道,用户会点击这些链接的概率。 因此,我可以计算出的平均值和这些概率的标准偏差。
我现在添加一个新的超链接到这个网页。 测试的简短量后我发现20个用户是看到这个超链接,5点击就可以了。
考虑到已知的均值和其他超链接(这形成了一个“事先预期”)的点击概率的标准偏差,我怎么能有效地估计在新的超链接,用户点击的概率是多少?
一个天真的解决办法是忽略了其他可能性,在这种情况下,我估计只是5/20或0.25 - 然而这意味着我们扔掉的相关信息,即我们的点击通过概率就是之前的预期。
所以我在寻找一个看起来像这样的功能:
double estimate(double priorMean,
double priorStandardDeviation,
int clicks, int views);
我问的是,因为我更熟悉的代码比数学符号,任何答案使用代码或伪优先于数学。
我提出这个新的答案,因为它是根本不同的。
这是基于克里斯主教,机器学习和模式识别,第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)
不过,我很积极的,先验均值/方差不会为你工作,因为你丢掉你有多少样本具有有多好你之前因而信息。
相反:给定一组(网页,link_clicked)对,你可以计算的是点击一个特定链接的页面数。 让这为m。 我们的时代是链接被点击不为L的量。
现在,让我们一会是和是b访问网站的点击次数,以新的链接数量。 那么你的新链接的概率
def estimate(m, l, a, b):
(m + a) / (m + l + a + b)
这看起来很琐碎,但实际上有一个有效的概率基础。 从实现的角度来看,你可以继续在全球范围M和L。
P / N是从频率论透视实际上是正确的。
你也可以使用贝叶斯方法纳入先验知识,但因为你似乎并不具备这些知识,我想P / N是要走的路。
如果你愿意,你也可以使用它之前,这个都可以归结为一个统一的拉普拉斯的规则。 只要给页面上的每一个环节的1而不是0开始(所以,如果算上被点击的链接数量,给每个+1加值,并像在你的N.)
[更新]下面是一个贝叶斯方法:
令P(W)是概率,一个人在一个特定的群体W.令P(L)是概率,即特定的链接被点击。 那么你正在寻找的概率为p(L | W)。 通过贝叶斯定理,可以通过计算这个
p(L | W)= P(W | L)* P(L)/ P(W)
可以估算P(L)由所述量L被点击,P(W)由该组的大小相对于所述用户和p的剩余部分(W | L)= P(W和L)/ P(L )通过特定基团W被点击L请使L被点击的概率除以人数。
贝叶斯定理证明:
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 )
应当指出的是,这是很容易改变的先验,问题是思维的方式来操作,以自己的喜好的可能性,看看在这个讨论人择原理和贝叶斯定理 。
你需要知道X是如何强烈W.相关
最有可能你也想拥有一个更复杂的数学模型,如果你想开发一个大的网站。 如果你运行像Digg的网站你有很多的先验知识,你不得不考虑你的calcualtion。 这导致多元统计分析。