Rでクラスター分析(階層的方法)

前回はクラスター分析の概要について記載しました。
前回の内容はこちらを参照ください。
今回は前回紹介した、「クラスター分析(階層的方法)」をご紹介します。

階層的方法の種類

階層的方法は、近しいクラスターを次々に結合し、最終的に1つのクラスターにする方法です。
クラスター間の距離(類似度)を測る方法にはいろいろな種類があります。

名称 特徴
群平均法 最も代表的 すべての個体のペアについて距離を求め 、その平均を取ります
重心法 クラスターのそれぞれの重心(例えば、平均ベクトル)を求め、その重心間の距離をクラスターの間の距離とする。重心を求める際には、クラスターに含まれる個体数が反映されるように、個体数を重みとして用います。
メディアン法 2つのクラスターの重心の間の重み付きの距離を求めるとき、重みを等しくして求めた距離の値を、2つのクラスター間の距離とします。
ウォード法 情報損失量(重心と個体との偏差の2乗和)を最小化する基準でクラスターを形成していく方法です。
最短距離法 2つのクラスターのそれぞれの中から1個ずつ個体を選んで個体間の距離を求め、それらの中で、最も近い個体間の距離をこの2つのクラスター間の距離とする方法です
最長距離法 2つのクラスターの中のそれぞれの中から1個ずつ個体を選んで個体間の距離を求め、それらの中で、最も遠い個体間の距離をこの2つのクラスター間の距離とする方法です。

各方法のイメージ図は、こちらが参考になります。

Rでのクラスター分析(階層的方法)のやり方

さて、Rでクラスター分析をする際は、「hclust」関数を利用します。
「hclust(データセット,分析方法)」で分析を行うことができます。各方法をどのように指定するかは、下記のサンプルソースをご覧ください。

今回は「iris」というサンプルデータを利用します。

#データの準備
x<-matrix(c(iris[,1],iris[,2],iris[,3],iris[,4]),ncol=4) #フィッシャーのアイリスのデータ(一部を利用)

kyori<-dist(x) #距離行列を求める

#分析開始
average <- hclust(kyori,"average")#群平均法

centroid <- hclust(kyori,"centroid")#重心法

median <- hclust(kyori,"median")#メディアン法

ward <- hclust(kyori,"ward.D")#ウォード法

single <- hclust(kyori,"single")#最短距離法

complete <- hclust(kyori,"complete")#最長距離法

#樹形図(デンドログラム)の出力

plot(ward)



取得した樹形図(デンドログラム)
071


樹形図を見て、いくつのクラスタに分類するか決定します。
クラスタ数を決定したら、どの標本がどのクラスタに辱するのか取得します。
「cutree(クラスター分析の結果,クラスター数)」で取得できます。

#分類結果の取得
> cutree(ward,3)
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[82] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 3 3 2 3 3 3 3 3 3 2 2 3 3 3 3 2 3 2 3 2 3 3 2 2 3 3 3 3 3 2 3 3 3 3 2 3 3 3 2 3 3 3 2 3 3 2

見出しがなくてわかりにくいですが、1から順に並んでおります。
これでどのサンプルがどのクラスタに所属するかわかりますね。

最後に

クラスター分析は、それ単体で使用することは少ないかもしれません。
例えば、クラスタリングした後に、クラスタ毎に回帰分析を行ってみるなど、更なる分析が必要です。
また、分類の結果、そのクラスタがどのようなグループなのかも推測しなければなりません。
分類して終わり。。。というわけにはいかなそうですね。。。


コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA