![見出し画像](https://assets.st-note.com/production/uploads/images/121834042/rectangle_large_type_2_74adc93ba3ba5967c94c138fe188d124.png?width=1200)
ベイズの定理で購買確率を予測。シンプルなレコメンドエンジンをPythonで作る。
ベイズの定理はなぜ必要なのか?
ベイズの定理は、不確実性の下での意思決定を支援する強力な統計ツールです。この理論は、過去のデータや経験に基づいて未来の出来事の確率を推定するのに役立ちます。特に、データサイエンス、機械学習、経済分析などの分野で、より正確な予測モデルの構築に不可欠です。
メリット
柔軟性: 既存の信念や事前の知識を組み込み、新しい証拠に基づいて更新することができます。
予測精度: 不確実性を考慮に入れた上で、より正確な予測が可能です。
応用範囲: 医療、金融、マーケティングなど、多岐にわたる分野で活用できます。
デメリット
計算コスト: 複雑な問題では計算が難しくなることがあります。
事前分布の選択: 事前分布の選択が結果に大きな影響を与えることがあります。
実プロジェクトでの使用例
医療診断: 患者の症状と既往歴から病気の確率を推定します。
株価予測: 過去の市場データに基づいて、将来の株価動向を予測します。
製品推薦システム: ユーザーの過去の購買行動と好みから、次に購入する可能性の高い製品を推薦します。
まずは、よくある陽性かのサンプルコード:ベイズの定理を用いた基本的な確率計算
def bayes_theorem(prior, likelihood, evidence):
return (prior * likelihood) / evidence
# 事例: 病気Aの検査で陽性となる確率の計算
# 事前確率(病気Aである確率)
prior = 0.01
# 尤度(病気Aの人が検査で陽性になる確率)
likelihood = 0.95
# 証拠(全体として検査で陽性になる確率)
evidence = 0.05
# ベイズの定理を適用して、病気Aである確率を計算
posterior = bayes_theorem(prior, likelihood, evidence)
print("病気Aである確率: {:.2f}%".format(posterior * 100))
病気Aである確率: 19.00%
次に、ベイズの定理を使用した製品推薦システムのサンプルコードを示します。この例では、ユーザーが過去に特定のカテゴリの製品を購入した確率に基づいて、新しい製品の推薦を行います。
サンプルコード:製品推薦システムにおけるベイズの定理の適用
# ベイズの定理を適用するための関数
def bayes_theorem_for_recommendation(p_user_buys, p_product_in_category, p_user_buys_given_product_in_category):
"""
ベイズの定理を用いて、特定のカテゴリの製品をユーザーが購入する確率を計算します。
:param p_user_buys: ユーザーが製品を購入する事前確率
:param p_product_in_category: 任意の製品が特定のカテゴリに属する事前確率
:param p_user_buys_given_product_in_category: ユーザーが製品を購入したときに、それが特定のカテゴリに属する確率
:return: 特定のカテゴリの製品をユーザーが購入する事後確率
"""
return (p_user_buys_given_product_in_category * p_user_buys) / p_product_in_category
# サンプル値
p_user_buys = 0.3 # ユーザーが任意の製品を購入する確率
p_product_in_category = 0.5 # 任意の製品が特定のカテゴリ(例:スポーツ用品)に属する確率
p_user_buys_given_product_in_category = 0.7 # ユーザーが製品を購入したときに、それが特定のカテゴリに属する確率
# ベイズの定理を適用
posterior_probability = bayes_theorem_for_recommendation(
p_user_buys,
p_product_in_category,
p_user_buys_given_product_in_category
)
posterior_probability_percentage = posterior_probability * 100
posterior_probability_percentage
42.0
ベイズの定理の式は以下の通りです:
P(A∣B)=P(B∣A)×P(A) / P(B)
P(A∣B)はBが与えられた時のAの条件付き確率(この場合、特定のカテゴリの製品が与えられたときに、ユーザーがそれを購入する確率)
P(B∣A)はAが与えられた時のBの条件付き確率(この場合、ユーザーが製品を購入したときに、それが特定のカテゴリに属する確率)
P(A)はAの事前確率(この場合、ユーザーが任意の製品を購入する確率)
P(B)はBの周辺確率(この場合、任意の製品が特定のカテゴリに属する確率)
サンプル値を修正して計算してみましょう。例えば、以下のように設定します:
ユーザーが任意の製品を購入する確率 P(A)= 0.3
任意の製品が特定のカテゴリに属する確率 P(B)= 0.5
ユーザーが製品を購入したときに、それが特定のカテゴリに属する確率 P(B∣A)= 0.7
特定のカテゴリの製品をユーザーが購入する事後確率は42%になります。
ユーザーにある商品を提示したらそれを買う確率。これなら簡単なレコメンドエンジンが作れそうですね。