Chap4 クラスター分析
コンテンツ
10.1 クラスター分析の目的10.2 階層クラスター分析の流れ10.3 10.3 非類似度の定義10.4 クラスタ間の距離の計算10.5 クラスター分析の実行10.1 クラスター分析の目的
クラスター分析とは,まだ分類されていない対象を似たもの同士からなるいくつかのグループに分類することを目的とします.対象間の距離を定義して,距離によって対象を分類する方法です.分類されたグループをここでは「クラスタ」と呼びます.方法を大別すると「階層的」「非階層的」の方法に分けられます.今回は,階層的な方法について解説する.
10.2 階層クラスター分析の流れ
クラスター分析は以下のような流れで進む.(1) 対象間やクラスタの結合をする際の「距離」の計算には,様々な方法があります.そこで,まず,対象間の距離(類似度or非類似度)とクラスターを併合する際の距離の計算方法を決定します.(2) 対象間の距離を全て計算し,距離が最小になるものを最初のクラスタとする.これを全てのクラスタが結合するまで繰り返します.(3) 最後にクラスタの形成過程を示すために,デンドログラム(樹形図)を作成する.各分析者の主観で適当な距離で切断することによって,いくつかのグループに分けることができる.
10.3 非類似度の定義
非類似度(個体間の距離)には様々な定義があるが,ここではユークリッド距離について述べる.ユークリド距離は日常的に用いる定義と同じであり,最も容易である.
その他にも,マハラノビス距離やミンコフスキー距離などがある.
10.4 クラスタ間の距離の計算
クラスタ間の距離の計算には,様々な計算方法があるが,ここでは代表的な方法をいくつか紹介する.対象 x1 と x2 の間の距離をD(x1,x2) (非類似度),クラスタ間の距離をD(C1,C2)とします.最短距離法
2つのクラスタに属する対象のうち,最も近い対象間の距離をクラスタ間の距離とする方法です.
最長距離法
2つのクラスタに属する対象のうち,最も遠い対象間の距離をクラスタ間の距離とする方法です.
群平均法
2つのクラスタに属する対象間の全ての組み合わせの距離を求めて,その平均値をクラスター間の距離とする方法です.
ウォード法
新たに統合されるクラスタ内の平方和が最も小さくなるようにクラスタを形成していく方法です.
その他にも,メディアン法,群平均法,可変法などがある.実用性については,ウォード法の評価が高い.ウォード法は分類感度が高いために,樹形図を作る際の鎖効果が起こりにくい.「鎖効果」とは図●の樹形図のように,ある一つのクラスタに対象が順に1つずつ吸収されてしまう現象である.

図● 鎖効果
10.5 クラスタ―分析の実行
データの準備
では,実際にS-PLUSを用いて,階層クラスター分析をやってみます.データはS-PLUSに内蔵されているサンプルデータswiss.xを用います.まず,準備として,swiss.xを呼び出しましょう.Object Explorerを開き,左側のコンテンツから「SearchPath」をクリックする.


次に,このデータをmatrixからデータフレームに変換します.ツールバーの「データ/データフレームに変換」からデータフレームに変換できます.


クラスター分析の実行
それでは,実際にクラスター分析を行ってみましょう.ツールバーから「統計/クラスター分析」をクリックする.

Model
(1) Data Set:- swiss.xであることを確認してください.
- 距離を生成するのに用いる変数を指定します.ここではすべて選択してください.
- ■Metric:
- 距離の定義です.euclidean(ユークリッド距離)とmanhattan(マンハッタン距離)を選択することができます.ここではeuclideanを選択します.
- ■Standardize Variable:
- チェックを入れてください.
- ■Linkage Type:
Results
ここは特に変更することはないです.Plot

- 樹形図を表示するかの設定です.チェックを入れてください.
出力結果の解釈
実行後,以下のようなReportとグラフが表示されました.
*** Agglomerative Hierarchical Clustering ***
Call:
agnes(x = menuModelFrame(data = swiss.x, variables =
"Agriculture,Examination,Education,Catholic,Infant.Mortality", subset
= NULL, na.rm = T), diss = F, metric = "euclidean", stand = T, method
= "ward", save.x = T, save.diss = T)
Merge:
integer matrix: 46 rows, 2 columns.
[,1] [,2]
[1,] -8 -11
[2,] -17 -43
[3,] -31 -37
[4,] -12 -23
[5,] -7 1
[6,] -26 -30
[7,] 4 -21
[8,] -32 -34
[9,] -22 6
[10,] -13 -20
[11,] -24 -28
[12,] -41 -44
[13,] -16 -25
[14,] -36 -38
[15,] -4 2
[16,] -2 -3
[17,] 10 -15
[18,] -9 -35
[19,] -29 -39
[20,] -40 12
[21,] 8 -33
[22,] -5 -14
[23,] -18 -47
[,1] [,2]
[24,] 7 11
[25,] 16 18
[26,] -6 -10
[27,] -1 15
[28,] 19 20
[29,] 17 13
[30,] 22 9
[31,] 23 -46
[32,] 21 14
[33,] 26 5
[34,] 29 -27
[35,] 27 30
[36,] 3 32
[37,] 31 -42
[38,] 25 33
[39,] 24 34
[40,] 35 28
[41,] 37 -45
[42,] 41 -19
[43,] 40 39
[44,] 38 36
[45,] 43 44
[46,] 45 42
Order of objects:
[1] 1 4 17 43 5 14 22 26 30 29 39 40 41 44 12 23 21 24 28 13 20 15 16 25 27
[26] 2 3 9 35 6 10 7 8 11 31 37 32 34 33 36 38 18 47 46 42 45 19
Height:
[1] 1.9444855 1.1747732 0.4098972 3.0743226 1.4511237 2.1850615
[7] 1.0068268 0.7724479 5.5857115 1.3493064 2.0791582 1.4001212
[13] 1.1099559 7.2133471 0.6390842 0.8859377 1.5372408 1.0812334
[19] 4.6130755 1.0069245 1.2521254 2.1124157 1.1403590 2.6670586
[25] 12.7605077 1.1909182 1.6905144 1.2530188 4.4847371 1.8711058
[31] 2.5622966 0.7548861 0.4080438 8.0522323 0.5824876 3.2081779
[37] 0.9027435 1.4051915 2.2829147 1.1407861 15.4658160 1.4969837
[43] 2.2624017 3.6955556 5.7724466 6.2619208
Agglomerative coefficient:
[1] 0.9090698
Available arguments:
[1] "order" "height" "ac" "merge" "order.lab" "diss"
[7] "data" "call"


