projets

17 mars 2013

Le commerce électronique (parfois) le fait mal

La plupart des sites de commerce électronique vous proposent de trier vos résultats de recherche par évaluations des clientst beaucoup le font mal. Supposons ici que je cherche un livre sur CSS. Je veux obtenir le meilleur livre que l’argent puisse acheter, alors je vais certainement cliquer sur le bouton trier par note. Le site propose deux options

  • livre A: 1 note de 5. Note moyenne de 5.
  • livre B: 50 notes. Note moyenne de 4.5

Pensez-y, préférez-vous que le livre A passe d’abord au livre Bcome d’abord. Probablement le livre B, non? Cela signifie que nous avons besoin de choses plus simples que de trier par note moyenne.

Une première réponse simple, qui serait certainement une amélioration par rapport au tri par note moyenne pourrait être de mettre le produit avec moins de k notes en bas. Mais alors, comment choisir k? Que se passe-t-il si nous recherchons un créneau et que tous les produits ont moins de k notes, sauf un, qui a un k + 1 notes horribles. Devrait-il aller au-dessus?

Une deuxième réponse à laquelle vous pourriez arriver serait de choisir une formule de notation empirique qui semble correspondre à nos contraintes.

La plupart des formules disponibles reposent sur une estimation bayésienne. D’une manière générale, l’estimation bayésienne brille vraiment sur ce genre de situation: vous voulez mesurer quelque chose, mais vous savez que vous n’aurez pas assez de données pour atteindre une estimation parfaite.

Si m est la moyenne des évaluations et n est le nombre des évaluations, nous pourrions considérer quelque chose comme:

$$rating(m, n) = {mn \over {n+K}}$$

Cela fonctionnera probablement très bien. Probablement you Encore faut-il choisir le bon K sans savoir à quelles valeurs physiques il se rapporte. Plus important encore, vous devrez convaincre votre collègue que c’est la bonne solution qui couvrira parfaitement les cas de bord.

Cours intensif d’estimation bayésienne

La grande idée est, plutôt que d’essayer de calculer directement notre estimation, d’abord nous calculons une distribution de probabilité décrivant “ce que nous savons” de la valeur que nous voulons estimer, puis (et seulement alors) nous pouvons extraire une estimation de cette valeur qui correspond à notre objectif.

La séparation des préoccupations dans ce dernier bit est en fait assez importante. Selon votre point de vue, vous pouvez considérer des valeurs très différentes comme des estimations d’une valeur physique.

Par exemple, si j’ai besoin d’estimer le nombre de sérums qu’un gouvernement doit acheter pour faire face à une épidémie, je vais vouloir livrer un chiffre pour lequel je peux dire: Je suis sûr à 90% que ce sera suffisant. Ce chiffre peut parfois être très éloigné des attentes. Si je travaille réellement comme comptable dans l’entreprise qui vend ces sérums, et que je veux avoir une idée d’une limite inférieure de mon revenu pour le mois prochain, je prendrai probablement un quantile totalement différent.

Un exemple simple

Supposons que vous veniez de découvrir un parasite appelé toxoplasmose et que vous souhaitiez estimer le rapportXX of des personnes infectées par un parasite appelé toxoplasmose.

Les patients humains infectés par le parasite ne présentent aucun symptôme, vous êtes donc jolie pour autant que vous sachiez que cela pourrait être n’importe quoi. Nous pourrions décrire votre vision sur la distribution de probabilité de cette valeur comme une distribution uniforme. .

Parler de probabilité ici peut sembler un peu bizarre.Tout d’abord, est-il légitime de parler de probabilité lorsque nous estimons quelque chose d’une valeur très tangible et non aléatoire? En terme de probabilité bayésienne, une variable est aléatoire si vous ne connaissez pas sa valeur exactement. C’est une information qui résume nos connaissances sur quelque chose.

Mais revenons à notre problème. Lorsque vous testerez la toxoplasmose chez les gens, vous ferez des observations.Chaque personne aura une probabilité X d’avoir une toxoplasmose, et vous voulez estimer cela très X. Supposons qu’après avoir vu $n persons personnes, vous avez détecté k personnes atteintes de toxoplasmose.

Vous avez commencé avec une probabilité préalable uniforme, et chaque observation pliera votre vision sur X, la rendant de plus en plus précise.Cette vision mise à jour de X s’appelle sa distribution postérieure.Nous appelons O (comme en observation) la séquence des résultats de nos N tests.

Bayes fournit une petite formule pour la calculer

 $$P(X | O) = { P( O | X) P(X) \over { P(O)} }$$

PP(O) is est la probabilité d’observer ce que nous avons observé. Il est constant avec X, et donc de peu d’intérêt. De même, nous avons choisi notre probabilité antérieurePP(X) to pour être uniforme et elle ne varie donc pas avec X. Nous ne nous intéressons qu’à la relation de proportionnalité :

 $$ P(X | O) \propto P( O | X) $$
$$P(O X)$$ s’appelle la probabilité. On lui donne X (la valeur que nous recherchons) la probabilité d’observer ce que nous avons observé. C’est généralement quelque chose d’assez simple à calculer.

Dans notre cas, la probabilité d’observer la séquence d’observations indépendantes

 $$ O = ({o_1}, ..., {o_N}) $$

est donnée en multipliant la probabilité de chaque observation:

 $$ P(O | X) = P({o_1}| X) \times ... \times P({o_N} | X) $$

Pour une seule observation, la probabilité d’observer oi positive (respectivement négative) est par définition X (respectivement 1-X). Au final, si on observe K positif, et N-K négatif la probabilité postérieure est

 $$ P(X | O) \propto X^{K}(1-X)^{N-K} $$

Cette distribution est aussi appelée distribution binomiale.

Il est intéressant de voir comment la probabilité postérieure évolue avec le nombre d’observations. Le graphique ci-dessous montre comment le postérieur s’affine de plus en plus avec le nombre d’observations que nous obtenons.

Maintenant que nous avons la probabilité exacte, nous pourrions envisager de calculer n’importe quel type d’estimations à partir de cette distribution. La sortie la plus courante serait sans doute de calculer un intervalle de confiance: un intervalle pour lequel nous pouvons prétendre avec une confiance de 90% que notre valeur se situe quelque part entre a et b.

De nos jours, tout le monde a un ordinateur et probablement le moyen le plus simple de produire un tel intervalle de confiance est probablement de calculer la fonction de distribution cumulative de cette distribution.

De nombreux statisticiens ont également travaillé à trouver des intervalles de confiance très précis pour les distributions binomiales lorsque l’approximation normale ne tient pas. Vous voudrez peut-être vérifier cette page wikipedia si vous souhaitez utiliser l’une de ces formules.

Retour aux étoiles

Revenons au classement par étoiles ! Dans cette section, pour simplifier, nous considérerons une plage de 1, 2 ou 3 étoiles. Nous allons essayer d’estimer, compte tenu de la réponse des gens, la distribution postérieure de la proportion de personnes qui lui donneraient respectivement 1,2, ou 3 étoiles, si nous avions la chance de demander à un nombre infini de personnes.

La variable aléatoire que nous observons suit une distribution dite catégorielle. C’est essentiellement une variable qui prend ses valeurs dans {1,2,3} avec quelques probabilités p1, p2, p3 avec

$$ {p_1} + {p_2} + {p_3} = 1 $$

Ce qui rend les choses plus difficiles, c’est que nous ne regardons pas la distribution d’une valeur scalaire, mais la distribution conjointe de trois valeurs scalaires (ou plutôt deux en considérant la contrainte linéaire).

Néanmoins, nous pouvons appliquer le même raisonnement que nous l’avons fait avec l’estimation d’une seule probabilité:

 $$ P({p_1}, {p_2}, {p_3} | O) \propto P( O | {p_1}, {p_2}, {p_3}) P({p_1}, {p_2}, {p_3}) $$

Cette fois, nous inclurons cependant un précédent. Afin de simplifier les calculs, il est toujours judicieux de choisir un prior qui a la même forme que la vraisemblance. Calculons d’abord la probabilité.

Tout comme dans notre exemple précédent d’estimation de paramètres, nous pouvons utiliser l’indépendance de notre observation.

 $$ P(O | {p_1}, {p_2}, {p_3}) = P({o_1}| {p_1}, {p_2}, {p_3}) \times \cdots \times P({o_N} | {p_1}, {p_2}, {p_3}) $$

Et la probabilité de chaque observation individuelle est donnée par la probabilité associée

 $$\forall j \in \{1,2,3\}, ~~ \forall 1\leq i \leq N, ~~P( {o_i = j} | {p_1}, {p_2}, {p_3}) = {p_j} $$

Par conséquent, si dans les N avis que nous avons reçus, il y avait respectivement des avis K1, K2, K3 avec respectivement 1,2 et 3 étoiles, nous avons une probabilité de

 $$ P(O | {p_1}, {p_2}, {p_3}) = {p_1}^{K_1} {p_2}^{K_2} {p_3}^{K_3} $$

Qui s’appelle une distribution de Dirichlet avec le paramètre

 $$ \alpha = \left( \begin{array}{c} {K_1} + 1 \\ {K_2} + 1 \\ {K_3} + 1 \end{array} \right) $$

Afin de simplifier les calculs, considérons un prior avec la même forme, et le paramètre alpha0.

Le postérieur, est proportionnel à

 $$ P({p_1}, {p_2}, {p_3} | O) \propto { {p_1}^{K_1} } { {p_2}^{K_2} } { {p_3}^{K_3} } { {p_1}^{ {\alpha_1^0} - 1 } } { {p_2}^{ {\alpha_2^0} - 1 } } { {p_3}^{ {\alpha_3^0} - 1 } } $$

Que nous pouvons factoriser en

 $$ P({p_1}, {p_2}, {p_3} | O) \propto { {p_1}^{ {K_1} + {\alpha_1^0} - 1 } } { {p_2}^{ {K_2} + {\alpha_2^0} - 1 } } { {p_3}^{ {K_3} + {\alpha_3^0} - 1 } }. $$

dans lequel nous voyons une distribution de dirichlet avec le paramètre

 $$ {\alpha^1} = \left( \begin{array}{c} {K_1} + \alpha_1^0 \\ {K_2} + \alpha_2^0 \\ {K_3} + \alpha_3^0 \end{array} \right) $$

Maintenant ce que nous voulons vraiment est une estimation du nombre moyen d’étoiles. Considérons l’utilisation de l’espérance de cette moyenne, compte tenu de notre postérieur.

 $$ E( {p_1} + 2{p_2} + 3{p_3} | O ) = E( {p_1} | O ) + 2 E({p_2} | O ) + 3E({p_3} | O ) $$

L’espérance de la probabilité d’obtenir 1,2, ou 3 nombre d’étoiles est donnée par la distribution de dirichlet

 $$ E(p_i | O) = { {\alpha_i^1} \over { {\alpha_1^1} + {\alpha_2^1} + {\alpha_3^1} } } $$

Nous avons donc pour notre moyenne bayésienne :

 $$ rating({K_1}, {K_2}, {K_3}) = \frac{ {K_1} + \alpha_1^0}{ N + A} + 2 \frac{ {K_2} + \alpha_2^0}{ N + A} + 3 \frac{ {K_3} + \alpha_3^0}{ N + A}, $$

où nous définissons

 $$ N = {K_1} + {K_2} + {K_3}~~and~~A = {\alpha_1^0} + {\alpha_2^0} + {\alpha_3^0} $$

On peut regrouper ça comme

 $$ rating({K_1}, {K_2}, {K_3}) = \frac{ \left(\alpha_1^0 + 2 \alpha_2^0 + 3 \alpha_3^0 \right) + \left({K_1} + 2{K_2} + 3{K_3}\right) }{A + N} $$

Voilà! Digérons simplement cette formule afin d’en faire quelque chose d’utilisable dans la vraie vie. La moyenne bayésienne pour la notation des étoiles consisterait à choisir un paramètre C et m dans lequel

  • m représente un prior pour la moyenne des étoiles
  • C représente notre confiance en notre prior. Cela équivaut à un certain nombre d’observations.

Alors la moyenne bayésienne sera

 $$ rating({K_1}, {K_2}, {K_3}) = \frac{ C \times m + total~number~of~stars }{C + number~of~reviews } $$

Si vous avez les données pertinentes et le temps infini, vous pouvez définir ces deux valeurs en ajustant une distribution de Dirichlet sur l’ensemble de données des notes de tous vos livres informatiques. Cependant, il est très courant de simplement choisir une paire de paramètres qui imitent le comportement que nous recherchons. m est la valeur vers laquelle nous ajusterons l’évaluation moyenne des produits avec très peu d’avis. Plus C est grand, plus le nombre d’avis requis pour “s’éloigner de m” est élevé.

Jetons maintenant un coup d’œil à notre premier exemple. Deux valeurs possibles peuvent être par exemple, m=3 et C=5.

Les moyennes bayésiennes des deux livres deviennent

 $$ {rating_{book~A}} = \frac{5 \times 3 + 5 \times 1}{ 5 + 1 } = 3.3 $$ $$ {rating_{book~B}} = \frac{5 \times 3 + 4.5 \times 50 }{ 5 + 50 } = 4.36 $$

Comme prévu, le Livre 2 a une meilleure moyenne bayésienne que le livre 1.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.