こんにちは、みっちゃんです。

みなさんは、大量のデータが与えられた時、まずどのような分析をしますか?

わたしは、データが多すぎると「データのグループ分け」をして、グループ単位で分析しています。

今回の記事では、データのグループ分けを行うための「クラスター分析」について紹介したいと思います。

目次(まとめ)
- クラスター分析は、代表的な"教師なし"学習
- データとデータがどれぐらい似ているかに注目してグループ分け
- "似ている"の定義によって結果が変わるので注意が必要
- 参考文献

クラスター分析は、代表的な"教師なし"学習

これまでの記事で、判別分析正準判別分析を解説してきました。

それらの手法では、手元にある、所属グループが分かっているデータを使って、グループを分けるための数式を設計し、将来手に入るであろうデータの所属グループを判別する、ということを目的としました。

例えば、(Aさん、理系)(Bさん、文系)(Cさん、文系)・・・(Yさん、理系)というようなペアの情報がすでに分かっていて、その情報をもとに、Zさんの文理を判別していました(ここで、A-Zさんは、5教科のテストの点数で特徴づけられていると考えてください)。

つまり、学習データが与えられて、そのデータをもとに判別モデルを構築するという「教師あり学習」を行い、未来のデータを判別していました。

しかし、いつも学習データが与えられるわけではありません。

例えば、(Aさん、?系)(Bさん、?系)(Cさん、?系)・・・(Yさん、?系)というような情報が与えられても、判別モデルを構築することはできません。

そこで「教師なし学習」である「クラスター分析」が役に立ちます。

データとデータがどれぐらい似ているかに注目してグループ分け

クラスター分析では、人と人がどれぐらい似ているか調べてグループ分けをした後、グループとグループがどれぐらい似ているのかを調べる


クラスター分析では、データとデータがどれぐらい似ているのかという点に注目していきます。似ているデータが見つかれば、それを1つのグループとみなし、次は、そのグループと似ているデータを探していくことになります。

データとデータがどれぐらい似ているのか評価する際、一般的には、ユークリッド距離が用いられます。

データA \(((a_1, a_2, ..., a_p)^{\rm T})\)とデータB \(((b_1, b_2, …, b_p)^{\rm T})\)が与えられた時、ユークリッド距離は以下のように計算されます。

$$d(A, B) = \sqrt{(a_1 - b_1)^2 + (a_2 - b_2)^2 + \cdots + (a_p - b_p)^2}$$
\(d(A, B)\)が小さいほど、データAとデータBは似ているという意味になります。

次に、グループとグループがどれぐらい似ているのか評価します。

評価するための指標としては、「最短距離法」「最長距離法」「群平均法」「重心法」「メディアン法」などがあります。ここでやっていることは、グループ間の距離をどのように決めて、それぞれのグループを代表する値をどのように決めるのか、ということです。

"似ている"の定義によって結果が変わるので注意が必要

クラスター分析は、RやPython、Excel(エクセル)などでも簡単に実行可能です。

その際、上に述べた「最短距離法」「最長距離法」「群平均法」「重心法」「メディアン法」などを選択することが可能です。

どれを選ぶかによって、得られる分析結果が変わってくるので、複数の場合を試してみて、結果を比較することをお勧めします。

より詳しい解説は、参考文献をご覧ください。

参考文献

小西貞則「多変量解析入門 ー線形から非線形へー」岩波書店