混合モデルクラスタリング徹底解説:GMMとEM、モデル選択と実務応用
導入:混合モデルクラスタリングとは
混合モデルクラスタリング(mixture model clustering)は、観測データが複数の確率分布(「成分」)の混合によって生成されるという仮定に基づく確率的クラスタリング手法です。各データ点はどの成分から生成されたかという「潜在変数」を持ち、結果として「ソフト(確率的)な割当て」を返します。代表的な例がガウス混合モデル(Gaussian Mixture Model, GMM)です。
基本概念:混合分布とパラメータ
- 混合分布:確率密度 p(x) = Σ_k π_k p_k(x | θ_k)。π_k は成分 k の混合係数(π_k ≥ 0, Σ_k π_k = 1)、p_k は成分分布(例:多変量正規分布)、θ_k はその成分のパラメータ。
- 潜在変数:各観測 x_i に対して成分割当 z_i(カテゴリ変数)が存在するとみなし、z_i による条件付確率で観測が記述される。
- ソフト割当て:各データ点は k ごとの所属確率(responsibility)を持つため、単純なハードクラスタ(k-means)のように1対1で割り当てられない。
代表例:ガウス混合モデル(GMM)とEMアルゴリズム
GMM では各成分 p_k は多変量正規分布 N(x | μ_k, Σ_k) と仮定します。パラメータ推定には最尤推定のための期待最大化法(EM: Expectation–Maximization)が標準的に用いられます。
- Eステップ:現在のパラメータに基づき各データ点 i の成分 k への所属確率(responsibility)γ_{ik} を計算する。γ_{ik} = π_k N(x_i | μ_k, Σ_k) / Σ_j π_j N(x_i | μ_j, Σ_j)。
- Mステップ:γ_{ik} を用いてパラメータを更新する。π_k = N_k / N、μ_k = (1/N_k) Σ_i γ_{ik} x_i、Σ_k = (1/N_k) Σ_i γ_{ik} (x_i−μ_k)(x_i−μ_k)^T(数値安定化のため対角小項を加えることが多い)。ここで N_k = Σ_i γ_{ik}。
- 収束性:各 EM イテレーションで対数尤度は非減少し、局所最適に収束するが、グローバル最適とは限らないため初期化や複数回実行が重要。
モデルの選択と評価
最適な成分数 K を決めるための代表的方法:
- 情報量規準:AIC(Akaike Information Criterion)、BIC(Bayesian Information Criterion)。BIC = −2 log L + p log N(p はパラメータ数)。実務では BIC がよく使われる。
- 交差検証・ホールドアウト尤度:学習データとは別の検証データ上の対数尤度を比較する。
- 階層的手法・階層クラスタとの併用:K の候補を絞るために階層的クラスタリングや可視化を使うこともある。
- ベイズ的アプローチ:ディリクレ過程(DP)を用いた無限混合モデルや変分ベイズによりデータが支持する成分数を自動推定する方法もある。
バリエーション・拡張
- 共分散構造:成分ごとに等方(スカラー)、対角、全自由(フル)などを仮定できる。共分散構造を制約することで計算負荷や過学習を抑えられる。
- 成分分布の種類:正規分布以外に多項分布、ポアソン、t分布(外れ値に強い)などを使うことができる。
- ベイズ混合モデル:パラメータに事前分布を置き、変分推論やMCMCで推定。ラベルスイッチング問題や事後分布の不確実性を扱える。
- ディリクレ過程混合(DPGMM):潜在成分数を無限に仮定する非パラメトリック手法。集中度パラメータで有効成分数が調整される。
実装上の注意点・ハイパーパラメータ
- 初期化:k-means ベースの初期化やランダム初期化を複数回試し、最良の対数尤度を採用する。scikit-learn などは複数初期化をサポート。
- 共分散の正則化:サンプル数が少ない場合や高次元では共分散行列が特異になりやすい。対角に小さな値を加えて安定化する(regularization)。
- 収束基準と反復回数:対数尤度の変化閾値や最大反復回数を設定する。
- 再現性:乱数シードを固定して再現性を確保する。
高次元データ・スパースデータへの対応
高次元では共分散推定が不安定になりやすく、GMM の直接適用は困難です。実務的には次のアプローチが有効です:
- 主成分分析(PCA)や因子分析で次元削減する。
- 共分散の構造を制約(対角行列や共有共分散)する。
- スパース正則化やモデルベースの次元削減(混合因子分析モデル)を用いる。
欠損値・外れ値の扱い
- 欠損値:EM は欠損データに自然に対処できる。Eステップで欠損値の期待値を計算して M ステップに組み込む。
- 外れ値:ガウス成分は外れ値に敏感。重い裾を持つ分布(t分布)やロバストな混合モデルを利用すると良い。
計算コストとスケーラビリティ
典型的には計算コストは O(N K d^2)(フル共分散行列の場合、行列演算を含む)で、N:サンプル数、K:成分数、d:次元数。大規模データではミニバッチ EM、近似推論、あるいは共分散に単純化を入れるなどが必要です。オンライン変分ベイズやミニバッチ変分法も利用されます。
実務での代表的な応用例
- 顧客セグメンテーション(購買行動を確率モデルでセグメント化)
- 異常検知(低確率成分や小さな混合比率の成分を異常とみなす)
- 音声・画像処理(音源モデルや色・特徴ベクトルのクラスタリング)
- データ生成・密度推定(データの生成過程をモデリングしてサンプリング可能)
メリット・デメリットと注意点
- メリット:確率的な解釈が可能(所属確率)、欠損データへの対応、複数クラスの重なりを表現できる。
- デメリット:EM の局所最適、初期化や K 選択に敏感、外れ値に弱い(分布選択で改善可)、高次元で不安定になりやすい。
- 実務上の注意:スケーリング(標準化)、特徴設計、複数回の初期化、モデル選択指標(BIC など)を併用すること。
Python 実装のヒント(scikit-learn 等)
scikit-learn には GaussianMixture と BayesianGaussianMixture があり、主要なパラメータ(n_components, covariance_type, reg_covar, init_params, n_init, max_iter, random_state)を調整できます。BayesianGaussianMixture は変分ベイズを用いた事前分布付きの混合モデルで、実質的に成分数を自動調整することが可能です。実務では BIC/尤度曲線、複数初期化、結果の可視化(対角プロットや投影)を併用してください。
まとめ
混合モデルクラスタリングは、確率的で柔軟なクラスタリング手法として強力です。GMM と EM が基本ですが、共分散の取り扱い、成分数の選択、外れ値や高次元データへの対処といった実装上のポイントを押さえることが重要です。状況に応じてベイズ的手法や非パラメトリック手法(DPGMM)、ロバスト分布を選ぶと実用性が高まります。
参考文献
- Mixture model — Wikipedia
- Expectation–maximization algorithm — Wikipedia
- scikit-learn: Gaussian mixture models — User Guide
- Dempster, Laird, Rubin (1977). Maximum likelihood from incomplete data via the EM algorithm.
- Kevin P. Murphy. Machine Learning: A Probabilistic Perspective (book).
- Christopher M. Bishop. Pattern Recognition and Machine Learning (PRML).
- Dirichlet process — Wikipedia
- Schwarz, G. (1978). Estimating the dimension of a model. (BIC)


