非階層的クラスタリングは、サンプルを予め決めた数分だけ分割する方法である。分割された各クラスターは、階層構造を持たない。代表的なアルゴリズムとして k-means 法などがある。
k-means 法
k-means 法は、サンプルを k 個のクラスターに分けるアルゴリズムである。具体的に、次のような手順でクラスタリングを行う。
- N 個のサンプルから k 個を選び、クラスター中心とする。
- N 個のサンプルを、k 個のクラスター中心のうちもっとも近いクラスター平均に紐づける。N 個のサンプルが k 個のクラスターに分割される。
- k 個のクラスターそれぞれに対して重心を求める。これらの重心を、新しいクラスター平均とする。
- N 個のサンプルを、新しい k 個のクラスター中心のうちもっとも近いクラスター平均に紐づける。
- 重心(クラスター平均)の位置が移動しなくなるまで、手順 3 〜 4 を繰り返す。
ここに示した手順からわかるように、k-means 法では、最初にどの要素をクラスター平均に選ぶかで、最後のクラスタリング結果が異なってくる。そのため、k-means 法を利用してクラスタリングを行う場合は、初期値を変えて何回か実行して、クラスター内距離の平均が最小となるような初期値を選んだりした方が望ましい。
また、k-means 法によるクラスタリングは、データを塊ごとにクラス分けされる傾向がある。そのため、データの分布が塊ごとになっていないとき、クラスタリングがうまく行われないことが多い。
kernel k-means 法
kernel k-means 法は、データをカーネル関数で高次元データへ写像し、その高次元データを k-means 法によりクラスタリングする方法である。カーネル関数として、多項式カーネルやガウスカーネルなどがある。kernel k-means 法は、k-means 法と同様に初期値に依存する。初期値を変えて何回か実行して、クラスター内距離の平均が最小となるような初期値を選んだりした方が望ましい。
スペクトラルクラスタリング
スペクトラルクラスタリングでは、データをグラフに変換し、グラフを行列表現に変換した上で k-means などによりクラスタリングを行う方法である。