クラスタリングとは

クラスタリングは,データ同士の类似度をもとにデータをグループ化するデータ解析の手法です。この手法を使うことで,データ自身がどのようなクラスター(块)から构成されているのかがわかり,データの构造に关するさまざまな知见を得ることができます。下の散布図では,データが2次元と低次元であるため,人の目でも概ね2つのグループからなることが见て取れますが,データが高次元の场合には,こうしたデータの构造を调べることはそれほど容易とは言えなくなります。

" data-toggle="lightbox">
2つのクラスターからなるデータ(散布図)

クラスタリングと呼ばれるデータ解析の手法を使うことで,こうしたデータのグループ分けを人の目ではなく,コンピュータによる处理として実现することができます。クラスタリングにも几つかの手法がありますが,まずは代表的な阶层クラスタリングķ平均クラスタリングについてご绍介しましょう。

阶层クラスタリング

阶层クラスタリングでは,データの类似度を元にデータをグループ化していきます。この类似度の近いデータを顺番にグループ化していく过程で自然な阶层构造が出来上がりますが,この阶层构造をグラフとして表したものが树形図(デンドログラム)です。

この树形図を见ることで,それぞれのグループがどのように结合していったのかを知ることができます。

MATLAB®で阶层クラスタリングを実行する手顺としては,データの类似度に关する情报をpdist关数で算出した后で,关数连锁によりクラスタリングを実行します。クラスタリングの结果は,系统树图关数により树形図として可视化することができます。

ķ平均クラスタリング

ķ平均法(k-均值)とも呼ばれるこのアルゴリズムにおいては,データがいくつのクラスターに分割されるのかを予め定めた上で,それぞれのクラスターの代表点を求め,これらの代表点からの距离によって,各サンプルがどのクラスターに属するのかを决定します。ただし,こうした代表点は,胜手に决めていい訳ではなく,全てのサンプルに対する以下の距离dの合计が最小になるような场所に定められます。

この最适化の问题は,一般には次のような反复计算により解を求めます。クラスターの个数をķ个とした场合,まずķ个のクラスターの中心として,K个のサンプルをランダムに选び出します。(K平均++と呼ばれるアルゴリズムにより选ばれることもあります)。次に,このķ个の代表点を使って,サンプルがどこのクラスターに属するかを决定していきます。つまり,各サンプルから最も近いところに代表点があるクラスターを,そのサンプルが属するクラスターとして决定します。そして,次に各クラスターの代表点をサンプルの平均から作り直します。具体的な手顺は次のようになります。

  1. 各クラスターの代表点をランダムに(あるいはķ平均++を利用して)决定する
  2. 代表点までの距离をもとに,各サンプルがどのクラスターに属するかを决定する
  3. 代表点をそのクラスターに属するサンプルの平均値として算出する
  4. 收束していなければ2に戻る

この操作が收束するまで缲り返すことで,データをクラスタリングするのがķ平均法です。「ķ平均法」という名前は,このķ个の平均値を使うことにその语源があります。なお,クラスターの个数ķの决定には,シルエット値というものが用いられることがあります。シルエット値については,关数轮廓に详しい解说にありますので,そちらをご覧下さい。

混合ガウスモデルによるクラスタリング

ķ平均法によるクラスタリングでは,あるサンプルが特定のクラスターに属するかどうかはクラスターの中心までの距离によって,かなりはっきりと决まっていました。例えば,クラスター甲の中心までの距离とクラスター乙の中心までの距离がほぼ同じくらいであったとしても,少しでもどちらかに近ければ近い方に属するとして,反复计算を进めていました。

しかし,あるサンプルのクラスター一への距離とクラスターBへの距離が同じくらいということであれば,このサンプルがそれぞれに属する確率は同じくらいだと言えるかもしれません。そこで,こうしたサンプルのクラスターへの帰属を0か1かの断定的なやり方で決めるのではなく,確率値として表現することで柔軟にクラスタリングを行う手法が生み出されました。これが混合ガウスモデルを使ったクラスタリングです。混合ガウスモデルによるクラスタリングでは,各クラスターをガウス分布により近似します。つまり,各クラスターをガウス分布でモデル化することで,各サンプルがどのクラスターに帰属するのかという情报を0か1かではなく,确率値(スコア)として柔软に表现することができるようになります。

" data-toggle="lightbox">
サンプルの各クラスターへの「帰属」を确率値として表现できる

具体的には,次のような手顺に沿って,各サンプルのスコアの算出と各クラスターのガウス分布としてのパラメータ(平均と分散共分散行列)の推定を缲り返します。

  1. 各クラスターの平均と分散协分散行列を初期化する(K平均++等のアルゴリズム)
  2. 各サンプルがどのクラスターに属するかの确率値(スコア)を算出する
  3. サンプルのスコアをもとに,各クラスターの平均と分散共分散行列を算出する
  4. 收束していなければ2に戻る

この計算を収束するまで繰り返すことで,最終的に各サンプルのスコアと各クラスターのガウス分布としての平均と分散共分散行列が決定されます(EMアルゴリズム)。これが混合ガウスモデルによるクラスタリングです。

" data-toggle="lightbox">
2次元の混合ガウス分布によるクラスタリングの例

自己组织化マップ

クラスタリングにニューラルネットの枠组みを利用したものが,自己组织化マップと呼ばれる手法です。この手法では,平面上のユニット上にサンプルを配置することでクラスタリングを実现させます。それぞれのユニットは,クラスタリング対象のデータと同じ次元のベクトルデータを保持しており,邻接するグリッド同士が保持するベクトルが似たものであるか,そうでないかによって领域を分割できますが,この分割を利用してクラスタリングを実现します。

" data-toggle="lightbox">
ユニットの保持するベクトルがクラスター同士の境界を定める

サンプルがどのユニットに配置されるのかがわかれば,そのユニットの属するクラスターから最终的にサンプルの属するクラスターが判明します。以下の図は,MATLABの深学习工具箱™を使って,自己组织化マップを実行した例です。

このグラフでは,ユニット自身と隣接するユニット同士の距離が同時に可視化されています。ユニットは紫色で表現され,ユニットが保持するベクトル同士の距離は黄色から黒の間の色で表現されています(色が濃くなるほどにユニット同士が保持するベクトルが乖離していることを意味する)。この図を見ると,概ねユニットが4つのエリアに分割されていることがわかります。ユニットが保持するベクトルデータは最初ランダムにセットされますが,その後はサンプルが配置される毎に少しずつ修正されます。

つまり,ある特定のユニットにサンプルが配置されると,そのユニットと周辺のユニットが保持するデータは配置されたデータに合せて少しずつ修正されます。このようにすることで,自动的に邻接するユニット同士は自然に同じようなベクトルデータを保持するようになります。しかし,场合によっては邻接するユニット同士であってもどうしても保持するデータの差异が大きくなることがあります。こうした差异の大きいユニットの同士の境目がクラスターを分割する境界として利用できることになります。

MATLABによる统计解析·机械学习

统计和机器学习工具箱™および深度学习工具箱を使うことで,クラスタリングを含むさまざまな统计解析·机械学习の手法を简単に试してみることができます。教师なし学习の代表とも言えるクラスタリングだけでなく,教师あり学习としての分类·回帰なども幅広くサポートしています。また,近年はGUIベースの各种ツールも提供され,各种のアルゴリズムもさらに使いやすくなっています。



ソフトウェアリファレンス

参考:统计和机器学习工具箱深度学习工具箱机械学习教师なし学习AdaBoost的データ解析数理モデリング