フォンミーゼス・フィッシャー分布の定義と性質を解説する

方向データを表現するために、フォンミーゼス・フィッシャー分布(Von Mises-Fisher Distribution)と呼ばれる確率分布があります。この分布は、方向データをモデリングする際に広く使われており、自然言語処理の文書分類や地球科学、天文学など多くの分野で活用されています。

通常の正規分布が実数直線上のデータに対する分布であるのに対し、フォンミーゼス・フィッシャー分布は単位球面上のデータに対する分布です。

本記事の内容

  • フォンミーゼス・フィッシャー分布の定義
  • パラメータの直感的な意味
  • 2次元の特殊ケース(フォンミーゼス分布)
  • Python での可視化

前提知識

  • ベクトルの内積とノルムの基本
  • 正規分布の基本的な知識

フォンミーゼス・フィッシャー分布の定義

$M$ 次元の単位球面 $S^{M-1} = \{\bm{x} \in \mathbb{R}^M : \|\bm{x}\| = 1\}$ 上の確率分布として、フォンミーゼス・フィッシャー分布は次のように定義されます。

$$ \begin{equation} \mathcal{M}(\bm{x}|\bm{\mu}, \kappa) = \frac{\kappa^{M/2-1}}{(2\pi)^{M/2} I_{M/2-1}(\kappa)} \exp(\kappa \bm{\mu}^T \bm{x}) \end{equation} $$

ここで、

  • $\bm{x} \in S^{M-1}$:単位球面上のデータ点($\|\bm{x}\| = 1$)
  • $\bm{\mu} \in S^{M-1}$:平均方向ベクトル($\|\bm{\mu}\| = 1$)
  • $\kappa \geq 0$:集中度パラメータ
  • $I_{M/2-1}(\kappa)$:第1種変形ベッセル関数

パラメータの意味

平均方向 $\bm{\mu}$

$\bm{\mu}$ は分布の「中心」に相当する方向を表します。データ点は $\bm{\mu}$ の方向に集中する傾向があります。

集中度パラメータ $\kappa$

$\kappa$ は分布の集中度を制御します。

  • $\kappa = 0$:球面上の一様分布(すべての方向に等しい確率)
  • $\kappa$ が大きい:$\bm{\mu}$ の周りに強く集中
  • $\kappa \to \infty$:デルタ関数的に $\bm{\mu}$ に集中

正規分布における精度パラメータ $1/\sigma^2$ に相当します。

第1種変形ベッセル関数

正規化定数に現れる $I_\nu(\kappa)$ は、

$$ \begin{equation} I_\nu(\kappa) = \frac{(\kappa/2)^\nu}{\sqrt{\pi} \Gamma(\nu + 1/2)} \int_0^\pi e^{\kappa\cos\theta} \sin^{2\nu}\theta \, d\theta \end{equation} $$

で定義されます。scipy では scipy.special.iv で計算できます。

2次元の場合: フォンミーゼス分布

$M = 2$ のとき、単位円上の分布となり、角度 $\theta$ のパラメトリゼーションで、

$$ \begin{equation} f(\theta|\mu, \kappa) = \frac{1}{2\pi I_0(\kappa)} \exp(\kappa \cos(\theta – \mu)) \end{equation} $$

これはフォンミーゼス分布(Von Mises Distribution)と呼ばれ、「円上の正規分布」と考えることができます。

正規分布との関係

$\kappa$ が十分大きいとき、フォンミーゼス分布は平均方向 $\mu$ を中心とした正規分布に近似できます。

$$ f(\theta|\mu, \kappa) \approx \sqrt{\frac{\kappa}{2\pi}} \exp\left(-\frac{\kappa(\theta – \mu)^2}{2}\right) $$

Python での可視化

import numpy as np
import matplotlib.pyplot as plt
from scipy.special import iv as bessel_iv

# フォンミーゼス分布のPDF
def von_mises_pdf(theta, mu, kappa):
    return np.exp(kappa * np.cos(theta - mu)) / (2 * np.pi * bessel_iv(0, kappa))

fig, axes = plt.subplots(1, 3, figsize=(16, 5))

theta = np.linspace(-np.pi, np.pi, 500)
mu = 0

# 左: 異なるkappaでのPDF
ax1 = axes[0]
for kappa in [0, 1, 3, 10, 30]:
    pdf = von_mises_pdf(theta, mu, kappa)
    ax1.plot(theta, pdf, linewidth=2, label=f'kappa={kappa}')
ax1.set_xlabel('theta', fontsize=12)
ax1.set_ylabel('f(theta)', fontsize=12)
ax1.set_title('Von Mises Distribution (mu=0)', fontsize=13)
ax1.legend(fontsize=10)
ax1.grid(True, alpha=0.3)

# 中央: 極座標でのプロット
ax2 = axes[1]
ax2 = plt.subplot(132, projection='polar')
for kappa in [1, 5, 20]:
    theta_polar = np.linspace(0, 2*np.pi, 500)
    pdf = von_mises_pdf(theta_polar, 0, kappa)
    ax2.plot(theta_polar, pdf, linewidth=2, label=f'kappa={kappa}')
ax2.set_title('Von Mises (Polar Plot)', fontsize=12, pad=20)
ax2.legend(loc='lower right', fontsize=9)

# 右: 3次元球面上の分布(射影)
ax3 = axes[2]
np.random.seed(42)
n_samples = 2000
# kappa=10でのサンプリング(近似: 3次元vMF分布)
kappa_3d = 10
mu_3d = np.array([1, 0, 0])

# 簡易サンプリング(棄却法)
samples = []
while len(samples) < n_samples:
    # 球面上の一様分布からサンプル
    z = np.random.randn(3)
    z = z / np.linalg.norm(z)
    # 受理確率
    log_prob = kappa_3d * np.dot(mu_3d, z)
    if np.log(np.random.uniform()) < log_prob - kappa_3d:
        samples.append(z)

samples = np.array(samples)
colors = samples @ mu_3d  # muとの内積で色付け
sc = ax3.scatter(samples[:, 1], samples[:, 2], c=colors, cmap='Reds', s=5, alpha=0.5)
ax3.set_xlabel('y', fontsize=12)
ax3.set_ylabel('z', fontsize=12)
ax3.set_title('vMF Samples on Sphere (projected, kappa=10)', fontsize=12)
ax3.set_aspect('equal')
plt.colorbar(sc, ax=ax3, label='cos(angle with mu)')
ax3.grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

左のグラフでは $\kappa$ が大きくなるほど分布が集中すること、中央の極座標プロットでは方向性が視覚的に確認できます。

応用例

  • 自然言語処理: TF-IDFベクトルを正規化して単位球面上に配置し、文書のクラスタリングに利用
  • 地球科学: 地磁気データの方向分布のモデリング
  • コンピュータビジョン: 特徴量の方向ベクトルのモデリング

まとめ

本記事では、フォンミーゼス・フィッシャー分布について解説しました。

  • フォンミーゼス・フィッシャー分布は単位球面上の確率分布であり、方向データのモデリングに使われる
  • 平均方向 $\bm{\mu}$ と集中度 $\kappa$ の2つのパラメータで特徴づけられる
  • $\kappa = 0$ で球面一様分布、$\kappa$ が大きいほど $\bm{\mu}$ の周りに集中する
  • 2次元の特殊ケースはフォンミーゼス分布(円上の正規分布)と呼ばれる

次のステップとして、以下の記事も参考にしてください。