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 は直感的で強力な非パラメトリック手法で、適切に帯域幅と計算最適化を行えば画像処理や追跡、モード検出といったタスクで有効に機能します。一方で帯域幅の選択や高次元でのスケーリング問題には注意が必要であり、実運用では近似アルゴリズムや適応バンド幅、次元削減などの工夫が求められます。
参考文献
- Mean Shift - Wikipedia
- D. Comaniciu and P. Meer, "Mean shift: A robust approach toward feature space analysis," IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002.
- Kernel density estimation - Wikipedia
- OpenCV:MeanShift による追跡・フィルタリングの解説(pyrMeanShiftFiltering / CamShift)
- Bandwidth selection(帯域幅選択) - Wikipedia
投稿者プロフィール
最新の投稿
IT2025.12.19エンティティとは何か:データモデルから知識グラフ・NLPまで徹底解説
IT2025.12.19冗長ビットとは?仕組み・種類・実装と選び方ガイド
IT2025.12.19アドセンス狩りとは何か:被害の実態と実践的対策ガイド
IT2025.12.19セマンティックSEO完全ガイド:検索意図・エンティティ・構造化データで上位表示を狙う方法

