Multinomial distributionとCategorical distributionの違い

些細な違いなんだけど調べたのでメモ。Multinomial distributionは多項分布のこと。Categorical distributionは、一般的な日本語表現が見つからなかった(なのでタイトルは英語)。打つのが大変なので、以下カテゴリカル分布と書く。

結論としては、多項分布のn=1の特殊な場合がカテゴリカル分布ですよってこと。以下少しまとめる。

分布を仮定する離散変数をカテゴリと呼ぶとして、

  • 多項分布は、n回試行したときに各カテゴリが何回出るかを表す確率分布
  • 多項分布は、二項分布を多カテゴリに一般化したもの
  • カテゴリカル分布は、多項分布のn=1の場合に相当する
  • カテゴリカル分布は、ベルヌーイ分布を多カテゴリに一般化したもの

以上

nokunoさんによるこの記事→ 多項分布の最尤推定 は、多項分布というよりカテゴリカル分布の話。本文には書いてあるけどね。あと最尤推定の結果はどちらにしろ同じなんだけどね

導出メモ

一応最尤推定をやってみる。前回のナイーブベイズのメモの時は省略したので。入力の変数を $ Y = {y_n}_{n=1}^{N} $ とする。

カテゴリカル分布

\begin{align} p(l) = \pi_{l}, \hspace{2mm} \sum_{l=1}^{L}\pi_{l} = 1 \end{align}

ここで、$\pi_{l}$がパラメータ、lはカテゴリの番号

最尤推定

尤度関数を立てて、最大化することでパラメータを求める。各データは独立に生起すると仮定すると、尤度関数は以下のようになる。

\begin{align} L(Y; \theta) = \prod_{n=1}^{N} \pi_{y_{n}} \end{align}

$\theta$はパラメータの集合ということで。

ラベルlの出現回数を$N_{l} = \sum_{n=1}^{N} \delta (y_{n} = l)$とすると、次のように書き直せる。

\begin{align} L(Y; \theta) = \prod_{l=1}^{L}\pi_{l}^{N_{l}} \end{align}

よって、対数尤度は以下のようになる。

\begin{align} \log L(Y; \theta) = \sum_{l=1}^{L} N_{l}\log \pi_{l} \end{align}

ラグランジュの未定乗数法で解く

nokunoさんの記事の通りだけど、一応手でも解いたのでメモ

\begin{align} G = \sum_{l=1}^{L} N_{l}\log \pi_{l} + \lambda \Bigl[ \sum_{l=1}^{L} \pi_{l} -1) \Bigr] \end{align}
として、
\begin{align} \frac{\partial G}{\partial \pi_{l}} = \frac{N_{l}}{\pi_{l}} + \lambda =0 \end{align}

よって、

\begin{align} \pi_{l} = -\frac{N_{l}}{\lambda} \end{align}

ここで、以下の制約条件に代入すると、

\begin{align} \sum_{l=1}^{L} \pi_{l} = 1 \end{align}

$\lambda = -N$となることがわかるので、求めたかったパラメータは以下のようになる

\begin{align} \pi_{l} = \frac{N_{l}}{N} \end{align}

カテゴリの頻度を計算するだけ、カンタン!!

参考

Ryuichi Yamamoto
Ryuichi Yamamoto
Engineer/Researcher

I am a engineer/researcher passionate about speech synthesis. I love to write code and enjoy open-source collaboration on GitHub. Please feel free to reach out on Twitter and GitHub.