tokyo r#10 rによるデータサイエンス 第五章:クラスター分析

Post on 28-May-2015

8.895 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Tokyo.R#10

R によるデータサイエンス第五章:クラスター分析

自己紹介• 本名

– 西島 寛• Twitter ID

– hnz

• 現在:某社運用担当エンジニア 1 年目

R とわたし• 大学で使っていました

– 図書館情報学をやっていました– 論文の共著や引用のネットワークの分析など

• 好きな CRAN モジュールは igraph

• 会社では R はつかってません...

アジェンダ

• クラスター分析って?• 階層的クラスター分析• 非階層的クラスター分析• モデルに基づいたクラスター分析• 各クラスタリングの比較( R でデモ)

R によるデータサイエンス第五章:クラスター分析

http://mjin.doshisha.ac.jp/R/28/28.html

クラスター分析とは• 似ている物をまとめる手法

– データの分類

• 学習データのあるクラスター分析(教師つき)

• 学習データのないクラスター分析(教師なし)

本章ではこっちを扱います

階層的クラスタリング

デンドログラム

seto

sa1

seto

sa5

seto

sa2

seto

sa3

seto

sa4

virg

inic

a1

03

virg

inic

a1

01

virg

inic

a1

04

virg

inic

a1

05

vers

ico

lor5

1

vers

ico

lor5

3

vers

ico

lor5

2

vers

ico

lor5

5

vers

ico

lor5

4

virg

inic

a1

02

05

10

15

20

25

Cluster Dendrogram

hclust (*, "ward")iris.d

He

igh

t

デンドログラム

クラスタが一つずつ併合され,最終的に一つのクラスタにまとまる

階層的クラスタリング

併合されてゆく過程をグラフで表現したもの=デンドログラム

デンドログラム

seto

sa1

seto

sa5

seto

sa2

seto

sa3

seto

sa4

virg

inic

a1

03

virg

inic

a1

01

virg

inic

a1

04

virg

inic

a1

05

vers

ico

lor5

1

vers

ico

lor5

3

vers

ico

lor5

2

vers

ico

lor5

5

vers

ico

lor5

4

virg

inic

a1

02

05

10

15

20

25

Cluster Dendrogram

hclust (*, "ward")iris.d

He

igh

t

併合されたクラスターの距離

コーフェン行列• クラスタ間の距離の行列

– 同じ数字の所は同じ高さで併合されたもの

  setosa1

setosa2

setosa3

setosa4

setosa2 1.1

setosa3 1.1 0.3

setosa4 1.1 0.3 0.2

setosa5 0.1 1.1 1.1 1.1

階層的クラスタリングの手法はこの行列の求め方の違い

アルゴリズム

データ 座標データ 1 (2,1)

データ 2 (1,2)

データ 3 (2,4)

データ 4 (4,4)

データ 5 (4.5,2)

C(1)

C(2)

C(3) C(4)

C(5)

• 以下のような 5 つのデータの階層的クラスタリングを考える

STEP1 併合

クラスタ C(1) と C(2) が併合され,クラスタ C(1,2) が作られる

  C(1) C(2) C(3) C(4)

C(2) 1.14      

C(3) 3.00 2.2

4    

C(4) 3.61 3.6

1 2.00  

C(5) 2.69 3.5

0 3.20 2.06

C(1)

C(2)

C(3) C(4)

C(5)

初期のコーフェン行列はデータ間の距離

STEP2 コーフェン行列の更新• ここではクラスタ A,B の距離 D(A,B) とし

て以下の式を利用する

m

i

n

jji badmn

BAD1 1

),(1

),({A

},,,{},,,,{ 2121 nm bbbBaaaA

間の距離とデータ babad ji :),(

クラスタ i とクラスタ j 間のすべてのデータの組み合わせの距離の平均を使用 (= 群平均法)

以下繰り返し…

クラスタ C(3) と C(4) が併合され,クラスタ C(3,4) が作られる

  C(1 ,2 )

C(3) C(4)

C(3) 2.61    

C(4) 3.61 2.00  

C(5) 2.69 3.20 2.06

C(1,2)

C(3) C(4)

C(5)

以下繰り返し…

クラスタ C(3,4) と C(5) が併合され,クラスタ C(3,4,5) が作られる

  C(1 ,2 )

C(3,4)

C(3,4)

3.11  

C(5) 3.09 2.63 C(1,2)

C(5)

C(3,4)

以下繰り返し…

クラスタ C(1,2) と C(3,4,5) が併合され,クラスタ C(1,2,3,4,5) が作られる

  C(1 ,2)

C(3,4,5)

3.10

C(1,2)C(5)

C(3,4)

クラスタ間の距離 (1/4)

• 最近隣法– クラスタ間の最小の距

離を与えるデータ対を選び,その距離をクラスタ間の距離とする

• 最遠隣法– クラスタ間の最大の距

離を与えるデータ対を選び,その距離をクラスタ間の距離とする

j

i

k

j

i

k

Cij

Cij

i

i

クラスタ間の距離 (2/4)

• 群平均法– クラスタ i とクラスタ j

間のすべてのデータの組み合わせの距離の平均を使用

• 重心法– クラスターのそれぞれ

の重心(例えば平均ベクトル)間の距離を使用

jk

jk

Cij

Cij

クラスタ間の距離 (3/4)

• メディアン法– クラスタ i と j の重心の中点からの距離

i

jk

Cij

クラスタ間の距離 (4/4)

• ウォード法– クラスタ A と B を併合したときに,クラスタ

内の平方和の増加分が最小のものを併合• クラスタ内の平方和の増加分

)()()(),( BEAEBAEBAD

※ 平方和 : クラスタ X 内の各データ x に対して,クラスタ X の重心 center(X) との距離 d(x,center(X))

の自乗の和

手法を選ぶ上での注意点• 重心法 / メディアン法 / ウォード法は初期

のコーフェン行列がユークリッド距離の自乗と定義されている…らしい– 新納浩幸「 R で学ぶクラスタ解析」に載って

いた– なので,他の距離を使いたいときはこれらの

手法は避けましょう

hclust 関数

• d … 距離行列• method … single,complete,average,centroi

d,median,ward, McQuitty から選択

hclust(d, method = “complete”, …)

hclust に関連する関数

• summary– 結果のオブジェクトのリストを返す

• plot,plclust– 樹形図を作成する

• cutree– クラスター数を指定し,グループ分けする

• cophenetic– コーフェン行列を返す

非階層的クラスター分析• 階層的クラスタリングはデータ数が多い

と計算が大変...

• 非階層的クラスター分析は大規模なデータセットに向く

• 代表的な手法として, k-means 法( k 平均法)

k-means のアルゴリズム• 前提:クラスタの数を K と決める

K 個のクラスタの代表点      を適当に作成STEP 1

KCCC ,, 21

k-means のアルゴリズム

各データ X とクラスタの代表点 との距離を測り最も距離が近いクラスタを Xのクラスタとする

STEP 2iC

k-means のアルゴリズム

形成されたクラスターの中心を求めるSTEP 3

k-means のアルゴリズム

クラスタの中心が変化しない時点まで STEP2,3 を繰り返す

STEP 2

kmeans 関数

• x... 距離行列• centers… クラスターの数,あるいはクラスターの中心• iter.max… 繰り返しの最大数• nstart… 初期中心を何回繰り返して求めるか

– 最も平方和が小さいものを初期中心として採用• algorithm…4 つから選べる.通常, Hartigan-Wong が良

kmeans(x, centers, iter.max=10,nstart=1,algorithm= c("Hartigan-Wong", "Lloyd", "Forgy", "MacQueen"))

モデルに基づいたクラスター分析• 観測データが異なる確率分布による混合分布

θ= ( μ , σ , α )であると仮定する– 3 つのパラメータを一度に推定するのはムリ

• 個体が属するラベル(=どのクラスタに属するか)を隠れ変数として推定する– これが分かれば θ も推定できる

• どのような確率分布を仮定するかは任意– 正規分布を拡張した楕円分布がよく用いられる

EM アルゴリズム

不完全データ x

どのクラスタで発生したかがわからない

隠れ変数: c ( どのクラスタで発生したか)を付与

完全データ: y=(x,c)

x の分布の最適化問題を y の分布の最適化問題の繰り返しに帰着させるアルゴリズム

EM アルゴリズム

EM アルゴリズムの流れ

θ :固定c : 尤度最大

E-step

θ :尤度最大c : 固定

M-step

c を推定! θ を推定!

パラメータ θ と隠れ変数 c を交互に推定→ 収束したときのパラメータを採用!

R で混合分布モデルを使うときの3STEP

• [STEP1]– mclust パッケージの EMclust 関数でクラスター数

と使用する混合分布のモデルを推定• BIC 値の大きいモデルとクラスター数を選択

• [STEP2]– hc(modelName,data) 関数でクラスタリングを実行

• [STEP3]– hclass(hc の結果,クラスタ数 ) 関数で結果を取得

• ※mclust パッケージ内に Mclust という関数もあります.

hc で選択できるモデル• E

– 一次元等分散• V

– 一次元可変な分散• EII

– 球形・等分散• VII

– 球形・異なる体積• EEE

– 楕円球形,等体積,形状,向き• VVV

– 楕円球形,異なる体積,形状,向き

実行例• iris データを使用• 階層的クラスタリング

– table(iris[,5],cutree(hclust(d=dist(iris[1:4],method="euclidian")**2,method="ward"),3))

• k-means– table(iris[,5],kmeans(dist(iris[1:4],method="euclidian

"),centers=3)$cluster)

• 混合分布モデル– table(iris[,5],Mclust(iris[1:4],G=3,modelName="VVV")

$classification)

top related