1. クラスター分析は“仲間探し”
「クラスター」という言葉を聞いたことのある人は多いと思います。この原稿を書いている時点(2020年7月上旬)も、東京都で1日100人以上の新型コロナウィルス感染者が判明し、夜の街関連でクラスターが発生したと報道されています。
現代ではクラスター(cluster)は「束、房」という意味が一般的ですが、本来は「cluster=集落」という意味で使われるそうです。「群れ・集団」という意味もありますが、これがクラスター分析の「クラスター」に一番近い表現です。つまり“仲間探し”なのです。
仲間探しですから、その基準の設定次第で色々と変わってきます。例えば象、キリン、ライオン、犬、猫、鉛筆、消しゴムを想定した時、誰でも「象、キリン、ライオン、犬、猫」と「鉛筆、消しゴム」に分けると思います。おそらく、頭の中で「動物と文房具」という集団分類をしているからでしょう。また「象、キリン、ライオン、犬、猫」をさらにクラスター分けすると、どうなるでしょうか?体の大きさでクラスターを考えると「象、キリン、ライオン」「犬、猫」になります。
このように基準をどこに設定するかで、クラスターは変わってきます。
2. 相関の高さでグループ分け
そこで、クラスター分析でよく使われる距離を一つの目安にする方法を解説します。ただ、距離といっても「大阪~東京間距離」という意味の距離ではありません。例えばライオンの摂食する餌の肉の成分比が95%、猫が70%、犬が50%、象は1%、キリンは0%とします。細かい計算は省きますが「ライオン、猫、犬」「象、キリン」のように分けることができまます。ここで使った距離は何kmではなく、餌の肉成分の比率です。当然「ライオン、猫、犬」は「ライオン、猫」「犬」にも分かれていきますが、この成分比の近さを「距離」と表現しています。早い話が相関の高さです。相関が高いと、距離が近いという考えです。
この距離についても、多くの考え方があります。
- ユークリッド距離
- ユークリッド距離の二乗:座標軸の距離の計算、その二乗※ここではこれを使って解説します
- マハラノビスの距離
- マンハッタン距離
- 標準化距離
上記あたりが挙げられますが、詳細についてここでは取り上げません。
そのクラスター間の距離を測定する方法は、以下が一般的です。
- 最短距離法:群Aの個体と群Bの個体すべての組み合わせの距離で最短
- 最長距離法:上記で最長の距離
- メディアン法上記で中央値
- 重心法:群Aと群Bのそれぞれ重心の距離
- ウォード法:2つのクラスターを一つにまとめた時の情報損失量
3. 体重とスピードで犬種のクラスター作成
以下は、ユークリッドの距離二乗で、最短距離法でクラスター分類をすることにします。
犬の話を例に解説します。カタログから犬種の標準的な体重と走るスピード(いずれも単位略)のデータが下記のようになったとした時、犬種の類似度はどういうものなのか?どのようなグループに分かれるかを考えます。
表1.犬種の体重とスピード
図1. 表1のグラフ化(横軸:体重、縦軸:スピード)
このデータから、どういった類似の犬種グループに分かれるかを見てみましょう。GやIは軽くて、非常に速いので、イタグレのような品種。Jは体重は重めだが、俊敏性に富むようなので、シェパードやシベリアン・ハスキーが該当します。
次いでいきなりですが、各犬種のユークリッド距離の二乗を表にしたものを示します。
表2.ユークリッド距離の二乗表(1)
赤字の2、つまりGとIが最も小さいです。そこでまず、GとIは同グループになります。次に、GとIを同じにする(平均でいいです)時の、二乗表を算出します。
表3.ユークリッド距離の二乗表(2)
今度は、青字の10が最小です。つまり、AとDが同じグループになります。この操作を繰り返していきます。最終的には、A&B&D&F&G&I&J&KとC&E&Hになります。その距離二乗は、847.2です。これらを、グラフ化します。図2参照。
グラフでは、グループとしてまとめてきたものを、線でつないでいます。点線は4個のグループ分けしたいときの線です。この線が切っているところが一つのグループです。このようなグラフをデンドログラムといいます。またこのような方法を階層的分類法といいます。
図2....
図1のグラフに上図のグループを囲ってみます。
図3.グループ分けの囲いこみ
- GとIはA,B,K,D,Fとは違うグループのようです。
- Jはやや特殊な用途に使われそうです。
体重とスピードで犬種のクラスターを作ってみたわけですが、それ以外にも多くの項目がありますので、この調子で計算するのは大変です。ここから先はSPSSやエクセル統計(いずれも有料)で行いましょう。手計算では2項目ぐらいです。
ただ、計算量が多いだけで、難しくはありませんので、これはコンピューター向きです。なお、AIでよく使われるディープラーニングでは、クラスター分析でも非階層的方法が良く使われます。k-means法が有名です。
下記サイトを参照してみてください。とても分かりやすいです。
http://tech.nitoyon.com/ja/blog/2009/04/09/kmeans-visualise/