determinar de manera eficiente la probabilidad de que un usuario haga clic en un hipervínculo

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

  •  16-09-2019
  •  | 
  •  

Pregunta

Así que tengo un montón de enlaces en una página web. A partir de la observación pasado Sé que las probabilidades de que un usuario haga clic en cada uno de estos hipervínculos. Por lo tanto, puedo calcular la media y la desviación típica de estas probabilidades.

añado ahora un nuevo hipervínculo a esta página. Después de un corto periodo de prueba encuentro que de los 20 usuarios que ven este hipervínculo, 5 clic sobre él.

Teniendo en cuenta la media conocida y la desviación estándar de las probabilidades de clics en otros hipervínculos (esto forma una "expectativa previa"), ¿cómo puedo eficiente estimar la probabilidad de que un usuario haga clic en el hipervínculo nuevo?

Una solución sería ingenuo ignorar las otras probabilidades, en cuyo caso mi estimación es sólo 5/20 o 0,25 - sin embargo, esto significa que estamos desperdiciando información relevante, es decir, nuestra expectativa previa de lo que la probabilidad de clics es.

Así que estoy buscando para una función que se ve algo como esto:

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

Le pediría que, desde que estoy más familiarizado con el código de notación matemática, que utilizan las respuestas código o pseudocódigo con preferencia a las matemáticas.

¿Fue útil?

Solución

Hice este una nueva respuesta ya que es fundamentalmente diferente.

Esto se basa en Chris Bishop, aprendizaje automático y reconocimiento de patrones, Capítulo 2 "Distribuciones de probabilidad" p71 ++ y http://en.wikipedia.org/wiki/Beta_distribution .

En primer lugar nos ajustamos a una distribución beta a la media y la varianza dada con el fin de construir una distribución sobre los parametes. Entonces volvemos al modo de la distribución que es el parámetro esperado para una variable de 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)

Sin embargo, estoy bastante positivo que el previo media / varianza no va a funcionar para usted ya que tiras información sobre el número de muestras que tiene y lo bien que su previo por lo tanto es.

En su lugar: Dado un conjunto de páginas web, (link_clicked) pares, se puede calcular el número de páginas se ha hecho clic en un enlace específico. Deje que sea m. Deje que la cantidad de veces que se ha hecho clic vínculo no sea l.

Ahora vamos a ser el número de clics en su nuevo enlace sea una y el número de visitas al sitio de ser b. Entonces su probabilidad de su nuevo enlace es

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

Lo que se ve bastante trivial, pero en realidad tiene una base probabilística válida. Desde la perspectiva de la aplicación, se puede mantener myl a nivel mundial.

Otros consejos

P / N es realmente correcto desde una perspectiva frequentist.

También es posible usar un enfoque bayesiano para incorporar el conocimiento previo, pero ya que no parecen tener ese conocimiento, supongo P / N es el camino a seguir.

Si lo desea, también puede utilizar la regla de Laplace, que IIRC se reduce a un uniforme antes. Sólo dar cada enlace en la página de inicio de un 1 en lugar de 0. (tanto si se cuenta el número se ha hecho clic en un enlace, dar a cada uno un +1 y se asemejan a que en su N).

[ACTUALIZACIÓN] Aquí es un enfoque bayesiano:

Sea p (W) la probabilidad de que una persona está en un grupo específico W. Sea p (L) la probabilidad, de que se hace clic en un enlace específico. entonces la probabilidad de que busca es p (L | W). Por el teorema de Bayes, se puede calcular esto

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

Se puede estimar p (L) por la cantidad de L se ha hecho clic, p (W) por el tamaño de ese grupo con respecto al resto de los usuarios y P (W | L) = p (W y L) / p (L) por el número de personas del grupo W específica que hace clic L dividido por la probabilidad de que se hace clic en L.

Teorema de Bayes prueba:

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

ya que,

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

y sustituyendo (2) con (1),

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

así (teorema 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

Las consecuencias,

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

y la definición de la independencia es,

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

Debe tenerse en cuenta, que es fácil de manipular la probabilidad a su gusto cambiando los priores y la forma en que el problema se piensa, echar un vistazo a esta discusión de la Principio Antrópico y teorema de Bayes .

Es necesario saber con qué fuerza X se correlaciona con W.

Lo más probable es que también quieren tener un modelo matemático más complejo si se quiere desarrollar un gran sitio web. Si ejecuta un sitio web como Digg tiene una gran cantidad de conocimiento previo que hay que tener en cuenta en su calcualtion. Esto nos lleva a la estadística multivariante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top