多項分布とは?ビジネスの活用範囲の多い分布

多項分布って?

多項分布とは、複数のカテゴリにまたがって起こりうる事象を、一定回数の試行によって観測したときに、その観測結果がどのような確率で生じるかを表す分布です。

具体的には、サイコロを何度も振った場合に1の目が何回、2の目が何回……というように、それぞれの目が出る回数をまとめて考えたいときに多項分布が登場します。

管理人

二項分布が「成功」と「失敗」の2カテゴリだけで扱うものであるのに対し、多項分布はカテゴリの数をより大きく拡張したものとイメージしていただければよいと思います。

多項分布の確率質量関数(PMF)

数学的には、${K}$個のカテゴリがあり、そのカテゴリ${i}$が1回の試行で現れる確率を${\pi_i}$(ただし ${\sum_{i=1}^K \pi_i = 1}$)とします。

そして、合計で${n}$回の試行を行ったときに、それぞれのカテゴリが${k_1, k_2, \ldots, k_K}$​ 回出現したとしましょう。ここで${k_1 + k_2 + \cdots + k_K = n}$ となるのは当然です。

このとき、そのような観測結果が得られる確率は、次のような形で与えられます。

$${P(k_1, \ldots, k_K \mid n, \boldsymbol{\pi}) = \frac{n!}{k_1!\, k_2! \cdots k_K!} \,\pi_1^{k_1} \pi_2^{k_2} \cdots \pi_K^{k_K}}$$

これは「階乗の比」と「カテゴリごとの確率の累乗」を掛け合わせた形になっているため、少し圧迫感がありますね。

しかし、二項分布の式を思い浮かべていただくと、その拡張バージョンになっているのだと分かりやすいと思います。

二項分布を基礎から応用まで解説
ベルヌーイ分布をわかりやす く解説【青の統計学】

ソフトマックス関数との関わり

さてさて、多項分布は機械学習の分野でもよく利用されます。その一つの例が「ソフトマックス関数」と組み合わせた多クラス分類です。ソフトマックス関数とは、あるパラメータ(たとえばニューラルネットワークの最終層にあたる部分)から算出されたスコア ${z_i}$を

$${\pi_i = \frac{\exp(z_i)}{\sum_{j=1}^K \exp(z_j)}}$$

の形で確率に変換してくれる仕組みです。

これによって、各カテゴリ(クラス)に割り当てられた数値を、きれいに0と1の間に正規化し、しかも全体で和が1になるように調整できます。

多項分布の考え方を応用すれば「この入力データに対してクラス${1}$が生じる確率は${\pi_1}$​です。クラス${2}$が生じる確率は${\pi_2}$​です…」と表現でき、学習データに対してパラメータを更新していくことで、分類精度を高めていくわけです。

Transformerでも使われるソフトマックス関数について解説する
グラフニューラルネットワークの基礎と応用事例

ディリクレ分布との関わり

さらにベイズ推定の世界では、${\pi_i}$​と呼ばれるカテゴリ確率自体を「どんな値を取りうるか」という視点で確率分布として扱うこともあります。

ここで登場するのがディリクレ分布です。

ディリクレ分布

ディリクレ分布は、${\pi_1, \ldots, \pi_K}$が「0以上1以下で、合計が1になるベクトル」として動き回る確率分布です。

$${\mathrm{Dirichlet}(\boldsymbol{\alpha}) = \frac{1}{B(\boldsymbol{\alpha})} \prod_{i=1}^K x_i^{\alpha_i – 1}, \quad \sum_{i=1}^K x_i = 1}$$

  • ${\boldsymbol{\alpha} = (\alpha_1, \ldots, \alpha_K)}$
  • ${B(\boldsymbol{\alpha})}$は正規化定数であるベータ関数の高次元版(ディリクレの正規化定数)
ディリクレ分布の活用事例
ベータ分布について数学的背景からわかりやすく解説する

共役事前分布

多項分布において、もし事前に確率パラメータ${\pi_i}$が「どんな分布であるか」をディリクレ分布で表現しておけば、観測データ${\mathbf{k} = (k_1, \ldots, k_K)}$を得たあとでも、事後分布は再びディリクレ分布の形になります。

管理人

同じ関数形に保たれると言うことですね

このような性質を持つ組合せのことを「共役事前分布」と呼び、ベイズ推定ではたいへん便利に使われています。

標本データを得た後の事後分布は、以下のようになります。

$${\mathrm{Dirichlet}(\alpha_1 + k_1, \ldots, \alpha_K + k_K)}$$

共役事前分布は、上記以外にもたくさんあるので、興味のある方はこちらの記事がおすすめです。

ここまでのまとめ!

多項分布は「離散的なカテゴリに関する確率を、ある回数の試行でまとめて扱いたいとき」に登場する分布。そして機械学習の文脈では、多クラス分類を扱ううえでソフトマックス関数との相性が良く、ベイズ推定の文脈ではディリクレ分布と共役な関係にある点が大きな特徴。

ビジネスでどんな時に使う?

複数の製品カテゴリが用意されている状況を考えてみてください。

たとえば「A社の製品」「B社の製品」「C社の製品」など、同じ用途の製品が複数の企業から発売されているケースをイメージしていただくとわかりやすいかもしれません。実際のビジネス現場では、顧客がそのうちどの製品を最終的に購入するかを追跡したい場面がしばしばあります。

具体的には、ある期間中に来店した ${n}$人の顧客がいて、それぞれがいずれかの製品を購入したという履歴が残っているとしましょう。これを集計すると「A社製品は何回売れたか」「B社製品は何回売れたか」「C社製品は何回売れたか」といった形で、購入回数をカテゴリごとにまとめることができます。たとえば、

$${(A社\text{製品}: k_A \text{回},\; B社\text{製品}: k_B \text{回},\; C社\text{製品}: k_C \text{回}),}$$

というような数が得られるわけです(もちろん、${k_A + k_B + k_C = n}$になります)。

多項分布は、まさにこのように「複数の選択肢に対して、どのくらいの割合で選択されるか」を確率的にモデル化したいときに用いられます。

もし顧客の属性(年齢や地域など)によって選ばれる製品カテゴリの割合が変わりそうだと想定される場合は、顧客層ごとに購入データを収集し、「A社製品の購入頻度が他の層よりも高いグループはあるのか」といった検証を行うことができます。さらに、違いがある場合は「なぜその層ではA社製品が選ばれやすいのか」といったマーケティング上の仮説を立てやすくなるでしょう。

施策に直結する、と言うよりも仮説を出すための示唆を探すってイメージですね。

このように、複数の製品カテゴリへの選択状況をまとめるとき、カテゴリごとの「選ばれやすさ」について理解を深めたい場合には、多項分布に基づくモデルが役に立ちます。「カテゴリーが2つ」しかないときは二項分布を使えば十分ですが、3つ以上の複数の選択肢を考慮したいなら、多項分布が自然な枠組みですよね。

たとえば、ある層では${\pi_A}$​が高く、別の層では${\pi_B}$が高い……といった具合に、顧客グループごとにパラメータ(購入確率)がどのように異なるかを推定し、その違いを比較することもできます。

管理人

ロイヤリティマーケに繋がる手法ですね。より簡単にやるなら、商品ごとの売れ行きか顧客ごとの購入単価をのどちらかだけをみて度数分布を見てざっくり意思決定する、って感じですね。

で、その際、事前知識があるときはディリクレ分布を使ってベイズ推定を行うと、少ないデータでもなめらかに推定が進むため、特にマーケティングの領域では好んで使われる手法です。

要は何が嬉しい

単なる「この製品がこれだけ売れた」という断片的な情報だけでなく、「製品の選択をカテゴリごとに確率的に捉えたとき、今後新しい顧客が現れたらどの製品をどれぐらいの割合で選びそうか」という将来の予測にもつなげやすくなります。

FOLLOW ME !