2009-07-15 11 views
0

ウェブページにはハイパーリンクがたくさんあります。過去の観測から、ユーザーがこれらのハイパーリンクのそれぞれをクリックする確率を知っています。したがって、これらの確率の平均および標準偏差を計算することができます。ユーザーがハイパーリンクをクリックする確率を効率的に判断

このページに新しいハイパーリンクを追加しました。短いテストの後、私はこのハイパーリンクを参照している20人のユーザーのうち5人をクリックします。

クリックスルー確率の既知の平均および標準偏差(他のハイパーリンクの「事前予測」)を考慮して、ユーザーが新しいハイパーリンクをクリックする確率を効率的に見積もる方法を教えてください。

純粋な解決策は、他の確率を無視することです。この場合、私の見積もりは5/20または0.25にすぎませんが、これは関連情報、つまりクリックスルー確率の予想。

だから私はこのようになります機能を探しています:私は数学の表記よりも、コードをよりよく知っているので、私はすべての答えは、コードまたは擬似コードを使用すること、それを尋ねると思い

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

数学に優先して

+0

ここで私は分からない部分があります。サブグループのメンバーをランダムに選択してハイパーリンクをクリックする確率が欲しいのであれば、Wとは何が関係していますか?あなたがそのサブグループのメンバーだけを選んでいるなら、Wは関係ありません。 Xはそのリンクをクリックする確率を調べているので、どちらも問題ではありません。 – AlbertoPL

答えて

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) 

しかし、私は前に平均/分散があなたのために動作しないことが非常に肯定的です。

代わりに、(webpage、link_clicked)の組を指定すると、特定のリンクがクリックされたページ数を計算できます。それをmとしよう。リンクがクリックされなかった時間をlとする。

ここで、aは新しいリンクへのクリック数をa、サイトへの訪問数をbとします。次に、あなたの新しいリンクのあなたの確率は非常に簡単に見えますが、実際には、有効な確率論の基礎を持っている

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

です。実装の観点からは、mとlをグローバルに保つことができます。

+0

前回のサンプル数を考慮する場合は問題ありません。 2番目のestimate()関数に関しては、これはうまくいかないようです。 mとlが非常に大きい場合、このシナリオのように、他のリンクのデータが多いので、aとbはほとんど効果がありません。 – sanity

+0

より多くの先行情報がより強い前の情報に対応するので、正しい。 あなたが望むのは、(a + b)/(クリック+ビュー)を最初の関数の "合理的な"/"任意の"混合に修正することです。 – bayer

+0

私はあなたが何を意味するのか本当に分かりません: - /(私は+ b)/(クリック+ビュー)いずれの機能のどこにも表示されません。 – sanity

2

P/Nは実際には頻繁な観点から正しいです。

ベイジアンアプローチを使用して事前知識を組み込むこともできますが、その知識がないと思われるので、P/Nが行く方法だと思います。

あなたが望むなら、iircが均一な前に来るラプラスのルールを使うこともできます。ページの各リンクに0の代わりに1つのリンクを与えます(リンクをクリックした数を数えれば、それぞれ+1ボーナスを与えてNに似ています)。

[UPDATE]ここにあります

人が特定のグループWにいる確率をp(W)とし、特定のリンクがクリックされる確率をp(L)とします。あなたが探している確率はp(L | W)です。 = P(W | L)|ベイズの定理によって、あなたは

P(W L)することで、これを計算することができます* P(L)/ P(W)

あなたがでたp(L)を推定することができます(W | L)= p(WとL)/ p(L)とすると、特定の人物の人数分だけ、他のユーザに対してそのグループの大きさでp(W) LをクリックしたグループWをLがクリックされる確率で割った値。

+0

Xは事前知識を構成していませんか? – sanity

+0

XとWは独立しているわけではありません。 私はベイジアンのアプローチで答えを更新しました。 – bayer

+0

私はこの答えからこの質問を大幅に再構成しましたので、もう意味をなさないと思います。 – sanity

0

ベイズの定理証明:

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

ので、

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

こうして(1)、

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

(ベイズと(2)を代入定理)、

  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のこのディスカッションをご覧ください。

+0

ベイズの定理に関するこの一般的な記事は、この質問と何が関係していますか? –

+0

あなたはそうです、彼はベイジアンのアプローチを全く必要としません。ベイズの定理そのものがちょっと変わったので、私はその証明を含めました。 – nlucaroni

0

あなたはXが最も可能性の高いあなたはまた、あなたは大きなウェブサイトを開発したい場合は、より複雑な数学的モデルを持つようにしたいW.

と相関している方法を強く知っておく必要があります。 diggのようなウェブサイトを運営しているのなら、あなたの計算を考慮する必要があるという多くの事前知識があります。 これは、多変量統計につながります。