Rを通じて統計学を学ぶ備忘録ブログ

SPSSからRに移行したい私のような人向けのR解説ブログ兼学習用備忘録。

第61回 クラスター分析

クラスター分析

クラスター分析とは、個体の類似性を(距離)をもとにいくつかのクラスター(房)に分け、集団の特徴を捉えるための分析手法。大別すると、デンドログラム(樹形図)で表現される「階層的」な方法と、あらかじめクラスターの数を固定し、その重心との「距離」を最小にすることで分類する「非階層的」な方法に分けることができます。

 

□デンドログラム(dendrogram)

f:id:teruaki-sugiura:20151010180706p:plain

例えば、上記のような図の2変量データが得られたとします。これをもとにデンドログラムを見ていきます(最短距離法の場合)。類似性を測定する指標として「ユークリッド距離」を使います。距離が近いと類似性が高い、距離が遠いと類似性が低い、というような感じです。図の[d,e]=距離が1番近い、次に近い[d,e]を1組、[a,c]、[g,f]というように組を作ります。次にbと[a,c]と[d,e]と[g,f]の4組のユークリッド距離を算出します。そして距離を比較します。ここではbと[a,c]が距離が1番短く、次に[a,b,c]と[d,e]が近く、最後に[f,g]というように最短距離を結ぶことで以下のようなデンドログラムを作ることができます。赤い線が示すように人為的クラスターの個数を決定することで、クラスターを作成します。今回は3つのクラスターができています。

f:id:teruaki-sugiura:20151010180818p:plain

ここで疑問に思うのが、クラスターの作り方や、そのクラスター間の距離の計算方法が他にもあるのでは!?と考えられそうです。

 

□距離の定義

・最短距離法

k個のクラスターをpクラスターとqクラスターを統合してtクラスターを作り、t-1クラスター数になる状態を考えます。このときtクラスターと別のクラスター(rクラスターとします)との類似度をS_tr、まとめる前のp&rの類似性をS_pr、q&rクラスターの類似度をS_qrとします。ここで、S_tr=min(S_pr, S_qr)と定義します。各クラスターが1つずつの対象を含む場合から考えてみると、2つのクラスター間の類似度は、おのおのがそのクラスターに属する、類似度が高い対の類似度により与えられることになります。次々とクラスターを作っていくので多くのクラスターが作られることになる。順序尺度以上であればOK。

 

・最長距離法

内容は最短距離法と似ています。一部、最短距離法とは異なり、2つのクラスター間の類似度は、おのおののクラスターに属する、類似度が最も低い類似度により与えられることになります。

 

・群平均法

クラスターの全ての組み合わせの距離の平均をもとに距離を決定する手法。pクラスターに属する対象と、qクラスターに属する対象の可能なすべての対の間の類似度の平均により、類似度を定義します。nはクラスターに含まれる対象の数であり、添字でクラスターを識別。

f:id:teruaki-sugiura:20151010180852p:plain

・ウォード法

ウォード法では、クラスター内の平方和のSが小さくすることが望ましく、平方和が小さくなるようにクラスターを作っていきます。最も分類感度が高いのでよく使われる。では見ていきましょう。pクラスター内の変動を表す平方和は以下のように表すことができ、まずαクラスターの平方和を以下のように考えます。

f:id:teruaki-sugiura:20151010181211p:plain

同様にβクラスターの平方和も以下のように考えます。

f:id:teruaki-sugiura:20151010181233p:plain

次にαクラスターとβクラスターを統合して、γクラスターを作ります。この時、γクラスターの平方和は以下のようになります。

f:id:teruaki-sugiura:20151010181441p:plain

f:id:teruaki-sugiura:20151010181447p:plain

f:id:teruaki-sugiura:20151010181455p:plain

f:id:teruaki-sugiura:20151010181508p:plain

以上より以下のように展開できます。

f:id:teruaki-sugiura:20151010181610p:plain

を最小になるようにクラスターの組み合わせを選んでいくのがウォード法です。

 

□実例

f:id:teruaki-sugiura:20151010181843p:plain

以上のような観測値が得られたとします。各個体のユークリッド距離を算出し、1番最小になるものの組み合わせの重心計算します。ここではA,Bの組み合わせが最も距離が近く、これをひとまとめにします。

f:id:teruaki-sugiura:20151010182022p:plain

次も同様に距離が最小な組み合わせを一つにまとめます。今回はD,Eですね、これも重心を求めておきましょう。

f:id:teruaki-sugiura:20151010182731p:plain

これも同様です。そろそろ終盤。

f:id:teruaki-sugiura:20151010182802p:plain

紫の丸印に最終的には集まりました。各ステップで群内の平方和の増分を最小するということは、距離が短いクラスター対を選んで統合していくことといえそうです。

 

□R実践

> football <- read.csv("football.csv",header=TRUE)

> ability.dist <- dist(football) #ユークリッド距離を算出

> round(ability.dist)

f:id:teruaki-sugiura:20151010033222p:plain

> ability.hclust <- hclust(ability.dist) #分析の情報

> summary(ability.hclust ) 

f:id:teruaki-sugiura:20151010033314p:plain

> ability.hclust $merge 

#階層情報マイナス=個体、他=クラスター番号 

f:id:teruaki-sugiura:20151010033404p:plain

> ability.hclust $height #樹形図の高さ 

f:id:teruaki-sugiura:20151010033507p:plain

> ability.hclust $method #距離の方法

complete

最長距離法

single

最短距離法

median

メディアン法

ward

ウォード法

average

群平均法

centroid

重心法

 f:id:teruaki-sugiura:20151010033530p:plain=最遠距離法

> ability.hclust $order #樹形図の左→右方向への個体番号 

f:id:teruaki-sugiura:20151010033555p:plain

> plot(ability.hclust) #樹形図の作成 

f:id:teruaki-sugiura:20151010033609p:plain

> plot(hclust(dist(football,method="canberra"),"ward.D"),hang=-1)  

#キャンベラ距離、ウォード法 #hang=-1は葉の高さを揃える

f:id:teruaki-sugiura:20151010033628p:plain

こんな感じです。以上で今回はおしまい。