déterminer efficacement la probabilité d'un utilisateur en cliquant sur un lien hypertexte

StackOverflow https://stackoverflow.com/questions/1133193

  •  16-09-2019
  •  | 
  •  

Question

J'ai un tas de liens hypertextes sur une page Web. De l'observation passé, je sais que les probabilités qu'un utilisateur cliquera sur chacun de ces hyperliens. Je ne peux donc calculer la moyenne et l'écart-type de ces probabilités.

J'ajoute maintenant un nouveau lien hypertexte vers cette page. Après un court laps de tests je trouve que des 20 utilisateurs qui voient cet hyperlien, 5 cliquez dessus.

La prise en compte de la moyenne connue et l'écart type des probabilités de clics sur d'autres liens hypertexte (ce qui constitue une « attente avant »), comment puis-je estimer efficacement la probabilité d'un utilisateur en cliquant sur le nouveau lien hypertexte?

Une solution naïve serait d'ignorer les autres probabilités, dans ce cas, mon estimation est juste 5/20 ou 0,25 - mais cela signifie que nous JETER les informations pertinentes, à savoir notre attente préalable de ce que la probabilité de clics 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.

Était-ce utile?

La solution

Je l'ai fait une nouvelle réponse car il est fondamentalement différent.

Ceci est basé sur Chris Bishop, Apprentissage et reconnaissance, chapitre 2 "Les 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ée afin de construire une distribution sur les parametes. Ensuite, nous revenons 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.

Au lieu de cela: Étant donné un ensemble de (page Web, link_clicked) paires, vous pouvez calculer le nombre de pages un lien spécifique a été cliqué sur le bouton. Que ce soit m. Que le nombre de fois que le lien n'a pas été cliqué soit l.

Maintenant å le nombre de clics sur votre nouveau lien soit un et le nombre de visites sur le site soit b. Ensuite, 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 garder m et l dans le monde.

Autres conseils

P / N est correcte du point de vue fréquentiste.

Vous pouvez également utiliser une approche bayésienne pour intégrer le savoir avant, mais puisque vous ne semblez pas avoir cette connaissance, je suppose que P / N est le chemin à parcourir.

Si vous voulez, vous pouvez également utiliser la règle de Laplace qui IIRC se résume à un uniforme avant. Il suffit de donner à chaque lien sur la page d'un début de 1 au lieu de 0. (Donc, si vous comptez le nombre un lien a été cliqué, donner à chacun un bonus de +1 et ressembler à celle de votre N.)

[UPDATE] Voici une approche bayésienne:

Soit p (W) la probabilité qu'une personne est dans un groupe spécifique W. Soit p (L) la probabilité qu'un lien spécifique est cliqué. alors la probabilité que vous recherchez 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) du montant L a été cliquée, 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 particulier qui a cliqué W l divisée par la probabilité que l est cliqué.

théorème de Bayes Preuve:

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

depuis,

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

Et son remplacement (2) avec (1),

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

donc (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 Principe et Anthropic Bayes théorème.

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

Très probablement veulent aussi avoir un modèle mathématique plus complexe si vous voulez développer un grand site Web. Si vous exécutez un site comme digg vous avez beaucoup de connaissances préalables que vous devez tenir compte dans votre calcualtion. Cela conduit à des statistiques à plusieurs variables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top