2009-07-15 11 views
0

J'ai donc plusieurs liens hypertexte sur une page Web. De l'observation passée, je connais les probabilités qu'un utilisateur cliquera sur chacun de ces hyperliens. Je peux donc calculer la moyenne et l'écart-type de ces probabilités.Déterminer efficacement la probabilité pour un utilisateur de cliquer sur un hyperlien

J'ajoute maintenant un nouvel hyperlien à cette page. Après une petite quantité de tests, je trouve que sur les 20 utilisateurs qui voient cet hyperlien, 5 cliquez dessus. En tenant compte de la moyenne et de l'écart-type des probabilités de clics sur d'autres hyperliens (cela constitue une «attente préalable»), comment puis-je estimer efficacement la probabilité qu'un utilisateur clique sur le nouveau lien hypertexte?

Une solution naïve serait d'ignorer les autres probabilités, auquel cas mon estimation est juste 5/20 ou 0,25 - mais cela signifie que nous jetons des informations pertinentes, à savoir notre attente préalable de ce que la probabilité de cliquet est .

Je suis à la recherche d'une fonction qui ressemble à quelque chose comme ceci:

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

Je demande que, depuis que je suis plus familier avec le code de la notation mathématique, que les réponses utilisent le code ou pseudo-code de préférence aux mathématiques.

+0

Voici la partie que je ne comprends pas: Qu'est-ce que W a à faire avec quoi que ce soit si vous voulez seulement la probabilité que des membres du sous-groupe choisis au hasard cliquent sur le lien hypertexte? Si vous ne sélectionnez que des membres de ce sous-groupe, alors W n'a pas d'importance. X n'a ​​pas d'importance non plus, puisque nous regardons la probabilité de cliquer sur ce lien. – AlbertoPL

Répondre

3

J'ai fait une nouvelle réponse car c'est fondamentalement différent.

Ceci est basé sur Chris Bishop, Machine Learning et Pattern Recognition, Chapitre 2 "Distributions de probabilité" p71 ++ et http://en.wikipedia.org/wiki/Beta_distribution.

D'abord, nous ajustons une distribution bêta à la moyenne et à la variance données afin de construire une distribution sur les paramètres. Ensuite, nous retournons le mode de la distribution qui est le paramètre attendu pour une variable 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) 

Cependant, je suis tout à fait positif que la moyenne/variance a priori ne fonctionnera pas pour vous puisque vous jetez des informations sur le nombre d'échantillons que vous avez et la qualité de votre avant est ainsi. À la place: Avec un ensemble de paires (page Web, link_clicked), vous pouvez calculer le nombre de pages sur lesquelles un lien spécifique a été cliqué. Que ce soit m. Laissez le nombre de fois que le lien n'a pas été cliqué être l.

Maintenant, soit le nombre de clics vers votre nouveau lien soit a et le nombre de visites sur le site b. Alors votre probabilité de votre nouveau lien est

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

Ce qui semble assez trivial mais a en fait une base probabiliste valide. Du point de vue de la mise en œuvre, vous pouvez conserver m et l globalement.

+0

Si vous voulez prendre en compte le nombre d'échantillons dans le précédent, c'est bien. En ce qui concerne la deuxième fonction de estimation(), cela ne semble pas fonctionner. Si m et l sont très grands, comme c'est probablement le cas dans ce scénario car nous aurons beaucoup de données pour les autres liens, alors a et b n'ont pratiquement aucun effet. – sanity

+0

Correct, puisque plus d'informations préalables correspondent à un plus fort avant. Peut-être que ce que vous voulez est de fixer (a + b)/(clics + vues) à un mélange "raisonnable"/"arbitraire" dans la première fonction. – bayer

+0

Je ne comprends pas vraiment ce que vous voulez dire: -/Je ne vois pas (a + b)/(clics + vues) n'importe où dans les deux fonctions. – sanity

2

P/N est réellement correct d'un point de vue fréquentiste.

Vous pouvez également utiliser une approche bayésienne pour incorporer des connaissances antérieures, mais puisque vous ne semblez pas avoir cette connaissance, je suppose que P/N est la voie à suivre.

Si vous le souhaitez, vous pouvez également utiliser la règle de Laplace, qui descend jusqu'à un uniforme. Donnez à chaque lien sur la page un début de 1 au lieu de 0. (Donc, si vous comptez le nombre sur lequel un lien a été cliqué, donnez-lui un bonus +1 et ressemblez à celui de votre N.)

[MISE À JOUR] Voici une approche bayésienne:

Soit p (W) la probabilité qu'une personne soit dans un groupe spécifique W. Soit p (L) la probabilité qu'un lien spécifique soit cliqué. alors la probabilité que vous cherchez est p (L | W). Par le théorème de Bayes, vous pouvez calculer cela en

p (L | W) = p (W | L) * p (L)/p (W)

Vous pouvez estimer p (L) par la le nombre L a été cliqué, p (W) par la taille de ce groupe par rapport au reste des utilisateurs et p (W | L) = p (W et L)/p (L) par le nombre de personnes du groupe W qui a cliqué sur L divisé par la probabilité que L soit cliqué.

+0

X ne constitue-t-il pas une connaissance préalable? – sanity

+0

Pas tellement, puisque X et W ne sont pas indépendants. J'ai mis à jour la réponse avec une approche bayésienne. – bayer

+0

J'ai reformulé cette question de manière significative depuis cette réponse, donc je crains que cela n'ait plus beaucoup de sens. – sanity

0

Théorème Preuve:

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

depuis,

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

Et substituant (2) (1),

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

ainsi (Bayes' le théorème de Bayes),

  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 

Conséquences,

P(A | B) = P(A), then a and b are independent 
P(B | A) = P(B), and then 

et la définition de l'indépendance est,

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

Il convient de noter qu'il est facile de manipuler la probabilité à votre goût en changeant les prieurs et la façon dont le problème est pensé, jetez un oeil à cette discussion de la Anthropic Principle and Bayes' Theorem.

+0

Qu'est-ce que cet article général sur le théorème de Bayes a à voir avec la question? –

+0

Vous avez raison, il n'a pas du tout besoin d'une approche bayésienne. Je pense que vous pouvez comprendre quelque chose de mieux en comprenant la preuve, le théorème de Bayes en lui-même est un peu étrange, alors j'ai inclus la preuve. – nlucaroni

0

Vous devez savoir à quel point X est en corrélation avec W.

vous Très probablement veulent aussi avoir un modèle mathématique plus complexe si vous voulez développer un grand site Web. Si vous utilisez un site Web comme Digg, vous avez beaucoup de connaissances préalables à prendre en compte dans votre calcul. Cela conduit à des statistiques multivariées.

Questions connexes