「レストランを選ぶためのベイズの方法」
「ベイズの法則を活用したレストラン選びのテクニック」
最近、新しい良いレストランを探していました。Googleマップは私に2つのオプションを表示しました:レストランAは10件のレビューで全て5つ星であり、レストランBは200件のレビューで平均評価は4つでした。私はレストランAを選ぶつもりでしたが、少ないレビューの数が心配でした。一方で、レストランBの多くのレビューは4つ星の評価に自信を与えてくれましたが、何も優れたことを保証していませんでした。そこで、私はレストランを比較して、レビューの数やレビューの欠如に基づいて最も優れたものを選びたいと思いました。Bayesのおかげで、その方法があります。
ベイズのフレームワークを使うと、評価の初期分布について何かを仮定し、観測データに基づいて初期信念を更新することができます。
初期信念の設定
- まず、各評価(1から5つ星)についての確率については何も知りません。つまり、どの評価もレビューがない状態では等しい確率です。この状態は一様分布から始まります。一様分布はディリクレ分布(ベータの一般化)として表現することができます。
- 私たちの平均評価は単純に(1+2+3+4+5)/5 = 3であり、ここに最も確率が集中しています。
# 初期の確率推定におけるサンプリングサイズsample_size = 10000p_a = np.random.dirichlet(np.ones(5), size=sample_size)p_b = np.random.dirichlet(np.ones(5), size=sample_size)# サンプルされた確率に基づく初期の評価の平均ratings_support = np.array([1, 2, 3, 4, 5])prior_reviews_mean_a = np.dot(p_a, ratings_support)prior_reviews_mean_b = np.dot(p_b, ratings_support)
信念の更新
- 初期の信念を更新するためには、事前信念と観測データの尤度を掛け合わせる必要があります。
- 観測データは自然には多項分布(二項の一般化)で表現されます。
- ディリクレは多項分布の共役事前分布であることがわかります。つまり、私たちの事後分布もまたディリクレ分布であり、観測データを組み込んだパラメータを持っています。
# 観測データreviews_a = np.array([0, 0, 0, 0, 10])reviews_b= np.array([21, 5, 10, 79, 85])# 観測に基づく評価確率の事後推定サンプルサイズ = 10000p_a = np.random.dirichlet(reviews_a+1, size=sample_size)p_b = np.random.dirichlet(reviews_b+1, size=sample_size)# 事後評価の平均の計算posterior_reviews_mean_a = np.dot(p_a, ratings_support)posterior_reviews_mean_b = np.dot(p_b, ratings_support)
- Aの事後平均評価は、初期の3と観測の5の中間にあります。しかし、Bの平均評価は大量のレビューが初期の信念を上回ったため、あまり変化しませんでした。
では、どちらが良いですか?
- 元の質問に戻りますと、「良い」とはAの平均評価がBの平均評価よりも大きい確率を指します。つまり、P(E(A|データ)>E(B|データ))です。
- 私の場合、レストランAがレストランBよりも優れている確率は85%です。
# P(E(A)-E(B)>0)posterior_rating_diff = posterior_reviews_mean_a-posterior_reviews_mean_bp_posterior_better = sum(posterior_rating_diff>0)/len(posterior_rating_diff)
ベイジアンアップデートにより、先行信念を取り入れることができます。これは、レビューの数が少ない場合に特に価値があります。ただし、レビューの数が多い場合は、初期の信念は後の信念にほとんど影響を与えません。
コードは私のGitHubで利用可能であり、私はレストランAに行く予定です。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles