Mean Shiftとは?仕組み・実装・帯域幅選択・応用を徹底解説

Mean Shiftとは

Mean Shift(ミーンシフト)は、確率密度関数の極大(モード)を探索するための非パラメトリックな手法で、クラスタリングや画像処理、物体追跡などで広く使われます。与えられたデータ点の集合に対して、データ空間上を「密度の上り坂」に従って移動し、各点が収束した位置(モード)に基づいてクラスタを生成します。代表的な参照はComaniciu と Meer による総説的な論文(2002年)です。

直感と基本概念

Mean Shift の直感は単純です。ある点 x における局所的なデータの重心(平均)を計算し、点をその重心方向に移動させます。これを繰り返すことで点は最終的にデータ密度の局所最大(モード)に集まります。カーネル(重み関数)とその帯域幅(バンド幅、h)が局所の重み付けを決定し、バンド幅はアルゴリズムのスケールを制御します。

アルゴリズムの定式化

与えられたデータ集合 {x_i} に対し、位置 x におけるカーネル密度推定(KDE)を用いると、カーネル K とバンド幅 h に対し密度推定は次の形を取ります。

f(x)= (1/nh^d) Σ_i K( (x - x_i)/h )

ここで Mean Shift ベクトルは、現在の位置 x に対して次のように定義されます。

m(x) = ( Σ_i x_i K( (x - x_i)/h ) ) / ( Σ_i K( (x - x_i)/h ) ) - x

更新則は単純で、x ← x + m(x) を繰り返します。Gaussian カーネルなど滑らかなカーネルを用いると、このベクトルは密度推定の勾配に比例し、したがって勾配上昇法(hill-climbing)として解釈できます。各出発点で収束した先(局所モード)に基づき、近いモードに到達した点どうしを同一クラスタと見なします。

カーネルの選択と帯域幅(バンド幅)

カーネル K は一般に正則化されており、代表的なものは「平坦(均一)カーネル(Epanechnikov 等)」や「ガウシアンカーネル」です。実務ではガウシアンカーネルが滑らかで収束が安定するためよく使われます。

最も重要なハイパーパラメータは帯域幅 h です。h が大きいと多くの局所モードがマージされ、粗いクラスタが得られます。逆に h が小さいと多くのノイズ由来のモードが生じ、オーバークラスタリングになります。帯域幅の選び方としては、

  • ドメイン知識に基づく固定値設定
  • Silverman の法則や Scott の規則といった統計的規則(主に密度推定用)
  • 近傍点数に基づく適応帯域幅(各点で k-NN 距離を用いる)
  • 複数のスケールで実行して安定なモードを探すマルチスケール解析

といった方法が用いられます。特に次元が高くなると、固定のスカラー h ではうまくいかない場合が多いので、各次元で個別のスケールを持たせるなどの工夫が必要です。

収束性と理論的性質

Mean Shift は、適切なカーネルを用いると反復更新が停止条件を満たして局所モードに収束することが示されています。ガウシアンカーネルの場合、Mean Shift ベクトルは密度推定の相対勾配に比例するため、勾配上昇法の一種として扱えます。ただし、収束先は初期位置に依存するため、グローバル最適や真のクラスタ数の保証はありません。ノイズやサンプルの分布によっては多くの局所モードが生じえます。

計算量と高速化手法

単純実装では各反復で全データ点を参照するため、1ステップあたり O(n) の計算を各点に対して行い、収束反復を T とすると O(T n^2) の計算量になり、データ数が増えると計算負荷が非常に高くなります。実際の運用では以下の高速化が用いられます。

  • KD-tree や Ball-tree による近傍探索でカーネルに寄与する点を高速に絞る
  • グリッド(バイニング)を使って初期点を集約し代表点群で計算する(ヒストグラム法)
  • 近似的なカーネル近似(Fast Gauss Transform や近似最近傍)
  • サブサンプリングやランダムランドマークによる近似クラスタリング
  • ブラーリング Mean Shift(Blurring Mean Shift):データ自体を反復的に移動させて点の数を減らす手法

実用ライブラリ(たとえば OpenCV の pyrMeanShiftFiltering)は画像の空間・色空間を同時に扱うために効率化が施され、リアルタイム性を高めています。

クラスタ生成(モードへの統合)

各点の収束地点を計算した後、収束したモードどうしの距離が閾値以下であれば同一のクラスタとしてマージします。したがってクラスタの最終数と構造は、帯域幅 h とモードマージの閾値に敏感です。しばしば「収束点が近いものを同一クラスター」とする簡便なルールが使われますが、場合によっては後処理(階層的マージなど)が必要です。

応用例

  • 画像セグメンテーション:色空間+位置空間で Mean Shift を適用して領域分割(エッジに依存しない滑らかな領域を生成)。OpenCV に実装あり。
  • 物体追跡(Mean Shift/CamShift):ヒストグラムベースの分布を追跡し、移動先をMean Shiftで見つける。CamShiftはウィンドウサイズを推定する拡張。
  • モード検出・ピーク検出:特徴量空間の局所密度のピークを発見するために用いる。
  • 異常検知:低密度領域に位置するサンプルを異常値候補として扱う応用

実装上の注意点とチューニング

  • 帯域幅の選定は最重要。小さすぎ・大きすぎに注意し、複数スケールで検証する。
  • 初期点の選び方:全点を開始点にするのか、代表点のみを用いるのかで計算量が変わる。クラスタ目的なら代表点で十分なことが多い。
  • 収束判定:Mean Shift ベクトルのノルムが十分小さくなったら停止する。最大反復回数も設定する。
  • 高次元データでは距離の集束(距離の濃淡が小さくなる)問題があり、次元ごとのスケール合わせや次元削減(PCAなど)を検討する。
  • 数値安定化:分母がゼロに近くなる点に対する保護や、データ正規化を行う。

長所・短所のまとめ

  • 長所:クラスタ数を事前に決める必要がなく、非線形なクラスタ形状を検出できる。パラメトリックな分布仮定を必要としない。
  • 短所:バンド幅選択に敏感で、高次元や大規模データに対しては計算コストが高い。初期条件に依存して局所解に収束する。

実践的なワークフロー例

1) データの前処理(標準化、不要次元の削除)。 2) 複数の帯域幅で Mean Shift を試し、安定したクラスタ構造を確認。 3) 近傍索引やバイニングで計算を高速化。 4) 収束後に近接モードをマージして最終クラスタを決定。 5) 必要ならクラスタ評価(シルエットスコア等)で品質を検証。

まとめ

Mean Shift は直感的で強力な非パラメトリック手法で、適切に帯域幅と計算最適化を行えば画像処理や追跡、モード検出といったタスクで有効に機能します。一方で帯域幅の選択や高次元でのスケーリング問題には注意が必要であり、実運用では近似アルゴリズムや適応バンド幅、次元削減などの工夫が求められます。

参考文献