5 サンプルの分類:クラスタ分析
1)クラスタ分析の考え方 |
1)クラスタ分析の考え方
・適用例
例1)動植物の種、目の分類
例2)マーケット・セグメンテーション1
「市場を何らかの意味で同質な消費者グループに市場を分割し、そのいずれかにターゲットを絞ることによって、マーケティング活動をより有効に展開する(片平 1987,p.97)」
・クラスタ分析の考え方
二つの変数をプロット。
二つの塊(クラスタ)が見られる。
クラスタ分析→特性が類似しているサンプルを塊(クラスタ)にまとめる手法。
・サンプル間の距離
どのようにしてクラスタをつくるか?
サンプル間の距離もしくは類似度を用いる。
(距離が小さいサンプルをクラスタにまとめる、類似度が高いサンプルをクラスタにまとめる)
距離、類似性の指標としては、(一般化された)ユークリッド距離が最もよく用いられる2 。
xik確率変数 Xkのサンプル iについての観測値、xij確率変数 Xkのサンプル jについての観測値 変数はp個。
→変数の単位が異なる場合には、変数を標準化して分析する。
変数間には相関がない方がよい。→変数の数が多い場合には、因子分析、主成分分析によって変数を集約した因子を抽出して、これを用いてクラスタ分析を行う。
・クラスタ間の距離
クラスタが複数できた場合、「クラスタ間の距離」が短い(類似度が高い)ものをさらにクラスタにまとめていく(1サンプル=1つのクラスタと考えてもよい)。
クラスタ間の距離の考え方にはいろいろある。
図表 いろいろなクラスタ間の距離の定義方法
概要 |
特徴 |
|
最短距離法 |
2つのクラスタ間の距離を、各クラスタの任意の2サンプル間の距離で定義し、距離がもっとも近いクラスタを併合する。 | もっとも近いサンプルを含むクラスタを併合するので、鎖(chain)状のクラスタができやすい。 |
最長距離法 farest neighbor method |
2つのクラスタ間の距離を、各クラスタの任意の2サンプル間の距離で定義し、距離がもっとも近いクラスタを併合する。 | 併合されなかった部分は併合された部分から離れる傾向がある。 |
重心法 centroid method |
2つのクラスタ間の距離を、各クラスタの重心の距離で定義し、距離がもっとも近いクラスタを併合する。 | 最短距離法、最長距離法では、クラスタに含まれている一つのサンプルの情報しか利用していないが、重心法ではすべてのサンプルの情報を利用していることになる。 |
群平均法 group average method |
2つのクラスタ間の距離を、各クラスタに含まれる全サンプル間の平均距離で定義し、距離がもっとも近いクラスタを併合する。 | 重心法と比べて、空間の濃縮や拡散が行われにくい。 |
ウォード法 Ward method |
同じクラスタには、類似するサンプルが含まれるべきであり、併合後のクラスタ内での分散の増加分がもっとも小さくなるような二つのクラスタを併合していく。 l 番目のクラスタと m 番目のクラスタそれぞれの平方和をSl,Smとする。 これらを併合したあとのクラスタ lm の平方和をSlmとすると、 Slm=Sl+Sm+△Slm ここで、△Slm=Slm-Sl-Smは、二つの異なるクラスタを併合したことによって増加した平方和。 △Slmをすべてのクラスタの組み合わせについて計算して、もっとも小さいクラスタを併合する。 |
同じクラスタ内のサンプルはできるだけ一様で、異なるクラスタ間のサンプルはできるだけ異なっているように併合されることになる。 実用上、よい結果を示すので使われることが多い。 |
出所)浅野長一郎、江島伸興(1996),『基本多変量解析』,日本規格協会,ch.10および、朝野煕彦(1996),『入門 多変量解析の実際』,講談社サイエンティフィック,ch5での記述を参考にして作成。
2)階層型クラスタ分析と非階層型クラスタ分析
出所)本多正久、島田一明(1977)『経営のための多変量解析法』産業能率短期大学出版部,p.156
どちらを用いるかは目的にもよるが、それぞれの利点、問題は次の通り。
図表 階層クラスタ分析と非階層クラスタ分析の比較
階層クラスタ分析 |
非階層クラスタ分析 |
|
利点 |
・解釈が容易 ・クラスタ数をあらかじめ決めなくても良い。 |
・信頼性が高い。 クラスタ間での移動を認めているので、初期の段階での誤りを回復できる。 ・処理が速い。 |
問題点 |
・相対的に不安定で信頼性に乏しい ツリー状に分割を進めていくので、初期の段階で分割が誤っていた場合には、その後の分析にの意味がなくなる。 初期のわずかな違いによって、大きな違いが生じてしまう。 ・サンプルの数が多いと、樹形図が巨大になり、解釈しにくい。 ・クラスタ数を事後的に決定することについての批判もある。 |
・解釈が困難な場合がある。 ・クラスタ数を決定する客観的基準が未確立。 |
出所)Aaker, David A.,V. Kumar, and Gorge S. Day,(1995),Marketing Research 5th ed.,Prentice Hall: NJ, p.330
および朝野煕彦(1996),『入門 多変量解析の実際』,講談社サイエンティフィック,p.77より作成。
3)クラスタ分析の手順
階層型で数の目安をつけてから非階層型で最終決定する手順を想定。
例)マーケットセグメントの場合
クラスタ分析する変数の選択
↓
(必要ならば)変数を平均0、分散1に正規化
↓
(必要ならば)変数を因子分析、主成分分析などによって変数を集約
似たような変数が沢山あると、それらが距離の計算に大きな貢献をしてしまう。
↓
予備分析 クラスタする変数を縦軸、横軸にして、各サンプルをプロット
クラスタがみられるか、はずれ値はないか、などを確認しておく。
↓
階層的クラスタ分析の実施→分割するクラスタ数の検討(ただし、サンプル数が多いと実行できない)
↓
(必要ならば)非階層的クラスタ分析→いくつかの分割数を指定して実施。
↓
(必要ならば)クラスタの特徴の分析→どのような変数に違いがみられるか、クラスタの大きさは?などをチェック。
あまり小さなクラスタをつくっても、それ以降の分析ができなくなる。
例 クラスタ別に回帰分析しようと思っても、そこに含まれるサンプル数が不足する。
マーケティング的に、小さなクラスタには意味がない。など)。
↓
クラスタ分割の安定性の検討 分析するサンプルを変えたりしても同じ結果になるか?
クラスタ分割を前提として、判別分析を行うなど。
↓
クラスタ数の最終決定。
クラスタ間での違いが明確にわかり、かつ各クラスタの大きさも適切なものを最終的に選定する。
4)階層型クラスタ分析 hierarchical clustering
・手順
類似度が高いもの(距離が小さいもの)を同じクラスタにまとめていく。
あるサンプルを、それともっとも近いサンプルが含まれているクラスタに含めていく(最短距離法)。
最終的に1つのクラスタになるまで併合を続ける。この過程をまとめると、樹形図dendrogramが得られる。
図表 5つのサンプル間の距離
A |
B | C | D | |
A | ||||
B | 2 | |||
C | 4 | 4 | ||
D | 4 | 4 | 3 | |
E | 5 | 5 | 5 | 5 |
図表 上のサンプルについての樹形図
6 |
5)Rによる階層型クラスタ分析
dist(データセット,method = "euclidean") データセットについて距離の計算を行う。 |
指定しなければユークリッド距離が使われる。 0/1データとのきはbinaryの方が適切。 その他の距離の定義については ?dist で参照。 |
hclust(距離データセット,method = クラスタ間の距離の計算方法,labels=ツリーを書くときのラベルとなる変数) 距離データ(非類似度)セットを用いて階層型のクラスタ分析を行う。 |
入力は生の変数ではなく、距離データセット。 相関行列など類似度データの場合でも、マイナスをつけるなどすれば非類似度データとできるので適用可能。 サンプル数が多いと計算量が多くなって、エラーになる場合もある。そのような場合は、非階層型のクラスタ分析をする。 library(mva) 使う前にとしておく必要がある。 クラスタを併合するための距離の計算にはデフォルトではcompleteだがマーケティングでの適用の場合、"ward"の方が安定するとのこと。 labels=にサンプル番号などを指定しておくと樹形図が読みやすくなる。 |
plclust(階層型クラスタ分析の結果データ,labels = ) 階層型クラスタ分析の結果を樹形図として出力 |
labels=にサンプル番号などを指定しておくと樹形図が読みやすくなる。 |
#10個の変数について |
cl$height |
6)非階層クラスタ分析 non-hierarchical clustering
n人をm個のクラスタに何らかの方法で分割。
>非階層クラスタ分析では、何個に分割するかを指定する必要がある。
この組み合わせの数は次式で表される(第2種のスターリング数、クラスタの大きさは任意)。
例 25人を5つのクラスタに分類する組み合わせの数は2437兆通りになる。
→効率のよい分割方法が必要(サンプル数が大きい場合には、階層クラスタ分析を行うことができなくなる)。
→非階層クラスタ分析
(クラスタ化の基準が改善されるならば、サンプルがあるクラスタを離れて、別のクラスタに属することができる)。
・分析のアルゴリズム3
(a)初期シードの選択
分割するクラスタの数 kを与える。→これを与えないと分析できない。
nサンプルからなんらかの方法で k個のサンプルを選ぶ。
これらを大きさ1の初期クラスタ(初期シード)と考える。
(b)各サンプルのクラスタへの割当
初期シードと残りのn-k個の各サンプルとの距離を計算して、距離が近いサンプルを各クラスターに併合する。
併合した場合には、クラスターの重心を計算し、初期シードの値と置換する。
以下同様の手順を繰り返して、サンプル数をすべてのクラスタに割り当てる。
併合にともなってクラスタの重心の位置が変化するために、クラスタに属するサンプルも変化する可能性がある。このような変化が生じなくなるまで(もしくは重心の位置が大きく変化しなくなるまで)上記の手順を繰り返す。
7)Rによる非階層的クラスタ分析
kmeans(生の変数データセット,クラスタ数) 非階層型のクラスタ分析を行う。 |
library(mva) を指定する必要あり。 クラスタ数を指定する必要がある。階層型クラスタの結果を参考にするのが一つの方法。 |
図表 非階層的クラスタ分析の例
#10個の変数について上と同様、因子分析する。 |
c3<-kmeans(f$scores,3) c3 r3<-(tss-sum(c3$withinss))/tss r3 c4<-kmeans(f$scores,4) c4 r4<-(tss-sum(c4$withinss))/tss r4 c5<-kmeans(f$scores,5) c5 r5<-(tss-sum(c5$withinss))/tss wss)/tss r5 c6<-kmeans(f$scores,6) c6 r6<-(tss-sum(c6$withinss))/tss r6 c7<-kmeans(f$scores,7) c7 r7<-(tss-sum(c7$withinss))/tss r7 c8<-kmeans(f$scores,8) c8 r8<-(tss-sum(c8$withinss))/tss r8 c9<-kmeans(f$scores,9) c9 r9<-(tss-sum(c9$withinss))/tss r9 c10<-kmeans(f$scores,10) c10 r10<-(tss-sum(c10$withinss))/tss r10 #参考 クラスタ数を多くするとこの指標は1に近くなる c95<-kmeans(f$scores,90) r95<-(tss-sum(c95$withinss))/tss r95 |
#クラスタ数検討のため計算したrsqを結合してプロット |
#どのようにクラスタされたか見てみる b<-data.frame(c2$cluster,c3$cluster,c4$cluster,c5$cluster,c6$cluster,c7$cluster,c8$cluster,c9$cluster,c10$cluster) b c2.cluster c3.cluster c4.cluster c5.cluster c6.cluster c7.cluster c8.cluster c9.cluster c10.cluster 1 1 3 4 2 5 4 1 9 3 2 1 3 4 2 6 2 3 5 2 3 1 3 4 2 5 4 1 9 6 4 1 3 4 2 5 4 1 9 6 5 1 3 4 2 5 4 1 9 6 60 1 3 4 2 5 4 1 9 3 このサンプルがひとつだけクラスタ。 61 1 3 4 2 5 4 1 9 3 62 2 1 3 4 2 5 4 8 10 63 1 3 4 2 5 4 1 9 6 64 1 2 2 3 4 6 6 6 9 データもみてみる ossdata[60,] id groupunixnam devstage nofdl oldestfiledate licgpl nlngengl oslinux osmicros ososind tpcsyste tpcsoftw 60 750 proxytools 5 261 2001-04-19 0 1 0 1 0 1 0 tpccommu tpcgames nrelease npcntb ncntb nmsgfr npml nmsgml nmsgmlmax npfrq nmsgfrq nmsgfrqmax npbug nmsgbug 60 1 0 9 3 673 0 1 2 2 1 1 1 0 0 nmsgbugmax 60 0 #4クラスタで決定。以下ではクラスタの特徴をみる。 #中心の座標 どのような特徴があるか? c4$centers # Factor1 Factor2 Factor3 Factor4 #1 -0.27742055 0.01139631 2.5144529 0.002097627 #2 0.08725987 2.55256640 -0.1229022 3.164121341 #3 9.00307477 -0.92071899 0.9309722 -0.548848195 #4 -0.08222386 -0.11754387 -0.3197987 -0.151607668 #プロットしてみる。ただし、col=オプションでクラスタ番号に応じてプロットさせる色を変える。 pairs(f$scores, col=c4$cluster) |
|
○クラスタ数決定の目安
・R-Squared =クラスタ間分散/全分散
ただし、全分散=クラスタ間分散 + クラスタ内分散
クラスター分析→同じクラスター内では一様で(クラスタ内分散が小)、異なるクラスターでは大きく異なる(クラスタ間分散が大)であるように、サンプルを分割。
→クラスタ間分散/クラスタ内分散 が大きいほどよい。
R-Squaredは0〜1の値をとる。
0: グループ間での差がない。
1: グループ間での差が最大。
横軸にクラスター数、縦軸にR-Squared、Semipartial R-Squaredをとってプロット。
R-Squaredの値が急激に変化するところに注目して、クラスターの数の目安とする。
ただし、R-Squared、Semipartial R-Squaredの値の分布は不明なので、統計的な検定はできない(例 クラスター数3とした場合と4とした場合のどちらがよいかを統計的には検定できない)。
8)クラスタ分析の問題点
クラスタ分析の方法は次の要素を組み合わせた種類だけある。→いろいろな方法がある(ありすぎる)が、どれが最良な方法かは一概に決められない。
類似性の測度
クラスタ化の基準:どのサンプルを同じクラスタに属するとするか?
クラスタ法:階層的、非階層的
クラスタ数の決定
事前に決める。
何らかの基準によって決める。
よって、同じデータでも異なるアルゴリズムでクラスタ分析を行えば、異なった結果が得られる可能性が高い。
→結果を評価するためには主観的な要素も必要となる。
・ほとんどのアルゴリズムでは、(d)(e)(f)のようなクラスタを検出することはできない。
ここで紹介したような標準的なクラスタ分析手法では明確に分離することは困難。
→まずはプロットしてみる。
出所)Manly, Bryan F. J.(1971),Multivariate Statistical Methods: A Primer,(村上正康、田栗正章訳『多変量解析の基礎』,培風館,1992年,p.92)
・(ここで示したような標準的な)クラスタ分析は統計的検定の枠組みにのっていない。
クラスタ数2がよいのか、3がよいのかといったことを統計的に検定できない。
1 セグメントについては、以下の文献を参照。
片平秀貴(1987),『マーケティング・サイエンス』,東京大学出版会,ch4.マーケット・セグメンテーション
片平秀貴(1992),「マーケティングと競争」(大澤豊編『マーケティングと消費者行動 マーケティング・サイエンスの新展開』有斐閣),p.49-79
2 この他の距離については、奥野忠一、久米均、芳賀敏郎、吉澤正(1971),『多変量解析法』,日科技連,p.395を参照。
3 ここでのアルゴリズムはほんの一例。初期シードの選択方法、シードへのサンプルの割当方法、クラスタの重心の計算のタイミングなど、いろいろなバリエーションがある。