多変量解析

クラスター分析

こんにちは!

ある得られたデータのサンプルをグルーピングしたい時に良く用いられる手法にクラスター分析というものがあります!

教師あり学習or教師なし学習

解析手法には教師あり学習と教師なし学習があるのですが、クラスター分析はどちらでしょうか?

教師あり学習というのは、どのグループに属するかという”ラベル”がついている既知データが手元にあり、それを用いてモデルを作って、”ラベル”がついていないデータの分類に用いるという手法。

ただ、教師あり学習は、「これはここに入るんだよ~」と丁寧に教えてくれる教師がいる状態じゃないと解析できないんですね!

教師なし学習は、ラベル付きデータがない状態で、あるデータを分類するような手法。

「これはここに入るんだよ~」と丁寧に教えてくれる教師がいなくても解析できる!優秀な手法です!

詳しくは「教師あり学習と教師なし学習」を見てみてください!

さて、もう一度!クラスター分析は教師あり学習手法でしょうか、教師なし学習でしょうか?

クラスター分析は

教師なし学習!

教師あり学習にはランダムフォレスト・SVMなど強力な手法が強いですが、既知の学習データがないような状況では解析できないので注意が必要ですね!

クラスター分析を始めとする教師なし学習は既知の学習データがなくても使えるので最終アウトプットへの橋渡しとして多く用いられています。

それでは早速クラスター分析について見ていきましょう!

クラスター分析

クラスター分析と一口に言っても階層的クラスター分析と非階層的クラスター分析があります。

一般的に最初に勉強するのは階層的クラスター分析な気がします。

階層的クラスター分析のことを単純にクラスター分析と呼んでいる例もあります。

階層的クラスター分析

階層クラスター分析では木構造のような図を作ってクラスター分けを行います。

ある類似度を表す指標をもとにサンプルを融合していき、最終的に一つのクラスターを作る手法です。

簡易的な図ですが、こんな感じの木を描いて分類していきます。

この時、どこで切るかによってクラスターの数が変わるのがお分かりでしょうか?

このように階層的クラスター分析では木構造を作った後にどこで切るかを考えクラスターの数を決めます。

クラスター分析のアルゴリズム

それでは豊田先生の書籍を参考に具体的なクラスター分析のアルゴリズムを見ていきましょう!

手順1:変数を用いて個々の対象間の距離をすべて計算し、その中で距離が最も短い対象同士を併合して最初のクラスターを作成する。

手順2:新しく併合されたクラスターと他の対象間の距離を再度計算し、手順1で計算された対象間の距離を含めて最も近いものを併合する。その際、新しく併合されたクラスターと対象間、および、クラスター間の距離の定義にはさまざまな方法が提案されているが、それは後ほど紹介する。

手順3:手順2をくり返し、すべてのクラスターが統合されるまで計算を行う。

手順4:計算結果を用いて、クラスターの併合される過程を表すデンドログラム(さっきの木構造みたいなやつ)を描く。

この手法は、N  個の対象からなるデータが与えられたとき、1個の対象だけを含む N  個のクラスターがある初期状態をまず作る。

この状態から始めて、対象 x1とx2の間の距離 d(x 1 ,x 2 ) からクラスター間の距離 d(C 1 ,C 2 )  を計算し、最もこの距離の近い二つのクラスターを逐次的に併合する。

そして、この併合を全ての対象が一つのクラスターに併合されるまで繰り返すことで階層構造を獲得する。

クラスターC1とC2の距離関数 d(C 1 ,C 2 )の違いにより以下のような手法がある。

・最短距離法
\begin{eqnarray*}
d(C_1,C_2)=\min{d(x_1,x_2)}
\end{eqnarray*}
・最長距離法
\begin{eqnarray*}
d(C_1,C_2)=\max{d(x_1,x_2)}
\end{eqnarray*}
・群平均法
\begin{eqnarray*}
d(C_1,C_2)=\frac{1}{|C_1||C_2|}\Sigma\Sigma{d(x_1,x_2)}
\end{eqnarray*}
・ウォード法
\begin{eqnarray*}
d(C_1,C_2)&=&E(C_1\lor{C_2})-E(C_1)-E(C_2)\\
E(C_1)&=&\Sigma(d(x,b_i))^2\\
b_i&=&\Sigma{\frac{x}{|C_i|}}\\
\end{eqnarray*}

一般的にはウォード法を用いる時が多いです!

非階層的クラスター分析

続いて、非階層的クラスター分析を見ていきましょう!

非階層的クラスター分析は、その名の通り、階層構造を作りません。

階層的クラスタリングと異なり、階層的な構造を持たず、あらかじめいくつのクラスターに分けるかを決め、決めた数の塊にサンプルを分割する方法です。

非階層的クラスター分析では、分割の良さの評価関数を定め、その評価関数を最適にする分割を探索します。

可能な分割の総数は指数的に増えていくので、実際は準最適解を求めることになります。

その中でも代表的なものがk-means法です。

 

簡単なアルゴリズムは以下の通りです。

1.代表点を適当に決める

2.ユークリッド距離をもとにデータを代表点を持つクラスタに割り当て

3.クラスタの重心点を代表点とする

4.代表点が変わらなければ終了。変われば2へ

 

まとめ

クラスター分析は多くの場面で使用できる汎用性の高い手法です。

クラスター分析でサンプルをまとめてみましょう!

 

参考書籍

データマイニング入門