こんにちは、みっちゃんです。
みなさんは、大量のデータが与えられた時、まずどのような分析をしますか?
わたしは、データが多すぎると「データのグループ分け」をして、グループ単位で分析しています。
今回の記事では、データのグループ分けを行うための「クラスター分析」について紹介したいと思います。
目次(まとめ)
- クラスター分析は、代表的な"教師なし"学習
- データとデータがどれぐらい似ているかに注目してグループ分け
- "似ている"の定義によって結果が変わるので注意が必要
- 参考文献
クラスター分析は、代表的な"教師なし"学習
これまでの記事で、判別分析や正準判別分析を解説してきました。
それらの手法では、手元にある、所属グループが分かっているデータを使って、グループを分けるための数式を設計し、将来手に入るであろうデータの所属グループを判別する、ということを目的としました。
例えば、(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(エクセル)などでも簡単に実行可能です。
その際、上に述べた「最短距離法」「最長距離法」「群平均法」「重心法」「メディアン法」などを選択することが可能です。
どれを選ぶかによって、得られる分析結果が変わってくるので、複数の場合を試してみて、結果を比較することをお勧めします。
より詳しい解説は、参考文献をご覧ください。
参考文献
小西貞則「多変量解析入門 ー線形から非線形へー」岩波書店