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に基づいています。

まず、パラメーター全体に分布を構築するために、ベータ分布を指定された平均と分散に適合させます。次に、ベルヌーイ変数の期待されるパラメーターである分布の最頻値を返します。

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、サイトへのアクセス数を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が事前に均一になるラプラスの規則を使用することもできます。ページ上の各リンクに0ではなく1の開始を与えるだけです(したがって、リンクがクリックされた数を数える場合は、それぞれに+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)で見積もることができます。 )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)

そして、(2)を(1)に置き換えて、

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とどれほど強く相関しているかを知る必要があります。

大規模なWebサイトを開発する場合は、より複雑な数学的モデルも必要になる可能性があります。あなたがdiggのようなウェブサイトを運営しているなら、あなたはあなたがあなたの計算に考慮しなければならない多くの予備知識を持っています。それは多変量統計につながります。

于 2009-07-15T20:08:03.013 に答える