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

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

クラスター分析(非階層的方法)とは

非階層的方法のクラスター分析(K-means法)では、
あらかじめ分析者が決めたクラスター(グループ)数になるように、サンプルを分類する方法です。
大規模データに適した方法になります。

クラスター分析(非階層的方法)の実施方法

今回は非階層クラスター分析の中でも代表的な「K-means法」をご紹介します。
「K-means法」は、あらかじめ定めたクラスターに分割した後、そのクラスターの重心を求め、「重心と各データの距離」の総和が最小になるように繰り返し分類を行います。
Rで「K-means法」を行うには、「kmeans(データ,クラスター数)」関数を利用します。
結果は2次元にプロットするため、「cmdscale」を利用して主座標分析(類似度行列を元にして,対象の二次元配置を求める手法)を行い、その結果を利用します。

なお、「K-means法」を行う前に、100程度のサンプルを無作為に抽出し、階層的方法を行って見当をつけるといいです。
今回は、階層的方法と同じく、「iris」データを利用しますのでクラスター数は3にします。

dat<-iris[1:4] #フィッシャーのアイリスのデータ

kyori<-dist(dat) #距離行列を求める
x<-cmdscale(kyori) #主座標分析で2次元配置を求める
loc<-kmeans(x,3) #非階層クラスター分析k-means法
plot(x,col=loc$cluster) #座標値のプロット

points(loc$centers,col=1:4,pch=8) #中心点のプロット



K-means法で得た散布図
073

kmeans関数の戻り値に、どのサンプルがどのクラスタに属しているかの情報があります。

> loc
K-means clustering with 3 clusters of sizes 61, 39, 50

Cluster means:
[,1] [,2]
1 0.665676 -0.3316042
2 2.346527 0.2739386
3 -2.642415 0.1908850

Clustering vector:
[1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 2 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 1 1 1
[82] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 2 2 1 2 2 2 2 2 2 1 1 2 2 2 2 1 2 1 2 1 2 2 1 1 2 2 2 2 2 1 2 2 2 2 1 2 2 2 1 2 2 2 1 2 2 1

Within cluster sum of squares by cluster:
[1] 31.87959 18.87111 13.06924
(between_SS / total_SS = 90.4 %)

Available components:

[1] “cluster” “centers” “totss” “withinss” “tot.withinss” “betweenss” “size” “iter” “ifault”


最後に

クラスター分析の方法をご紹介しましたが、ケースによってどの手法を利用するか変わってくると思います。
クラスター分析だけでなく、ほかの手法と組み合わせて精度を高めていく必要がありそうです。


コメントを残す

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

CAPTCHA