滋賀大学におけるデータサイエンス教育 - ssken.gr.jp … · •公的統計 •社会心理 •地域文化情報 データサイエンスの専門知識とスキル
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
-
Upload
hnisiji -
Category
Technology
-
view
8.895 -
download
2
Transcript of Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
![Page 1: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/1.jpg)
Tokyo.R#10
R によるデータサイエンス第五章:クラスター分析
![Page 2: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/2.jpg)
自己紹介• 本名
– 西島 寛• Twitter ID
– hnz
• 現在:某社運用担当エンジニア 1 年目
![Page 3: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/3.jpg)
R とわたし• 大学で使っていました
– 図書館情報学をやっていました– 論文の共著や引用のネットワークの分析など
• 好きな CRAN モジュールは igraph
• 会社では R はつかってません...
![Page 4: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/4.jpg)
アジェンダ
• クラスター分析って?• 階層的クラスター分析• 非階層的クラスター分析• モデルに基づいたクラスター分析• 各クラスタリングの比較( R でデモ)
R によるデータサイエンス第五章:クラスター分析
http://mjin.doshisha.ac.jp/R/28/28.html
![Page 5: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/5.jpg)
クラスター分析とは• 似ている物をまとめる手法
– データの分類
• 学習データのあるクラスター分析(教師つき)
• 学習データのないクラスター分析(教師なし)
本章ではこっちを扱います
![Page 6: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/6.jpg)
階層的クラスタリング
![Page 7: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/7.jpg)
デンドログラム
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
![Page 8: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/8.jpg)
デンドログラム
クラスタが一つずつ併合され,最終的に一つのクラスタにまとまる
階層的クラスタリング
併合されてゆく過程をグラフで表現したもの=デンドログラム
![Page 9: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/9.jpg)
デンドログラム
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
併合されたクラスターの距離
![Page 10: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/10.jpg)
コーフェン行列• クラスタ間の距離の行列
– 同じ数字の所は同じ高さで併合されたもの
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
階層的クラスタリングの手法はこの行列の求め方の違い
![Page 11: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/11.jpg)
アルゴリズム
データ 座標データ 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 つのデータの階層的クラスタリングを考える
![Page 12: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/12.jpg)
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)
初期のコーフェン行列はデータ間の距離
![Page 13: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/13.jpg)
STEP2 コーフェン行列の更新• ここではクラスタ A,B の距離 D(A,B) とし
て以下の式を利用する
m
i
n
jji badmn
BAD1 1
),(1
),({A
},,,{},,,,{ 2121 nm bbbBaaaA
間の距離とデータ babad ji :),(
クラスタ i とクラスタ j 間のすべてのデータの組み合わせの距離の平均を使用 (= 群平均法)
![Page 14: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/14.jpg)
以下繰り返し…
クラスタ 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)
![Page 15: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/15.jpg)
以下繰り返し…
クラスタ 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)
![Page 16: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/16.jpg)
以下繰り返し…
クラスタ 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)
![Page 17: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/17.jpg)
クラスタ間の距離 (1/4)
• 最近隣法– クラスタ間の最小の距
離を与えるデータ対を選び,その距離をクラスタ間の距離とする
• 最遠隣法– クラスタ間の最大の距
離を与えるデータ対を選び,その距離をクラスタ間の距離とする
j
i
k
j
i
k
Cij
Cij
![Page 18: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/18.jpg)
i
i
クラスタ間の距離 (2/4)
• 群平均法– クラスタ i とクラスタ j
間のすべてのデータの組み合わせの距離の平均を使用
• 重心法– クラスターのそれぞれ
の重心(例えば平均ベクトル)間の距離を使用
jk
jk
Cij
Cij
![Page 19: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/19.jpg)
クラスタ間の距離 (3/4)
• メディアン法– クラスタ i と j の重心の中点からの距離
i
jk
Cij
![Page 20: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/20.jpg)
クラスタ間の距離 (4/4)
• ウォード法– クラスタ A と B を併合したときに,クラスタ
内の平方和の増加分が最小のものを併合• クラスタ内の平方和の増加分
)()()(),( BEAEBAEBAD
※ 平方和 : クラスタ X 内の各データ x に対して,クラスタ X の重心 center(X) との距離 d(x,center(X))
の自乗の和
![Page 21: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/21.jpg)
手法を選ぶ上での注意点• 重心法 / メディアン法 / ウォード法は初期
のコーフェン行列がユークリッド距離の自乗と定義されている…らしい– 新納浩幸「 R で学ぶクラスタ解析」に載って
いた– なので,他の距離を使いたいときはこれらの
手法は避けましょう
![Page 22: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/22.jpg)
hclust 関数
• d … 距離行列• method … single,complete,average,centroi
d,median,ward, McQuitty から選択
hclust(d, method = “complete”, …)
![Page 23: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/23.jpg)
hclust に関連する関数
• summary– 結果のオブジェクトのリストを返す
• plot,plclust– 樹形図を作成する
• cutree– クラスター数を指定し,グループ分けする
• cophenetic– コーフェン行列を返す
![Page 24: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/24.jpg)
非階層的クラスター分析• 階層的クラスタリングはデータ数が多い
と計算が大変...
• 非階層的クラスター分析は大規模なデータセットに向く
• 代表的な手法として, k-means 法( k 平均法)
![Page 25: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/25.jpg)
k-means のアルゴリズム• 前提:クラスタの数を K と決める
K 個のクラスタの代表点 を適当に作成STEP 1
KCCC ,, 21
![Page 26: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/26.jpg)
k-means のアルゴリズム
各データ X とクラスタの代表点 との距離を測り最も距離が近いクラスタを Xのクラスタとする
STEP 2iC
![Page 27: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/27.jpg)
k-means のアルゴリズム
形成されたクラスターの中心を求めるSTEP 3
![Page 28: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/28.jpg)
k-means のアルゴリズム
クラスタの中心が変化しない時点まで STEP2,3 を繰り返す
STEP 2
![Page 29: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/29.jpg)
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"))
![Page 30: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/30.jpg)
モデルに基づいたクラスター分析• 観測データが異なる確率分布による混合分布
θ= ( μ , σ , α )であると仮定する– 3 つのパラメータを一度に推定するのはムリ
• 個体が属するラベル(=どのクラスタに属するか)を隠れ変数として推定する– これが分かれば θ も推定できる
• どのような確率分布を仮定するかは任意– 正規分布を拡張した楕円分布がよく用いられる
![Page 31: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/31.jpg)
EM アルゴリズム
不完全データ x
どのクラスタで発生したかがわからない
隠れ変数: c ( どのクラスタで発生したか)を付与
完全データ: y=(x,c)
x の分布の最適化問題を y の分布の最適化問題の繰り返しに帰着させるアルゴリズム
EM アルゴリズム
![Page 32: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/32.jpg)
EM アルゴリズムの流れ
θ :固定c : 尤度最大
E-step
θ :尤度最大c : 固定
M-step
c を推定! θ を推定!
パラメータ θ と隠れ変数 c を交互に推定→ 収束したときのパラメータを採用!
![Page 33: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/33.jpg)
R で混合分布モデルを使うときの3STEP
• [STEP1]– mclust パッケージの EMclust 関数でクラスター数
と使用する混合分布のモデルを推定• BIC 値の大きいモデルとクラスター数を選択
• [STEP2]– hc(modelName,data) 関数でクラスタリングを実行
• [STEP3]– hclass(hc の結果,クラスタ数 ) 関数で結果を取得
• ※mclust パッケージ内に Mclust という関数もあります.
![Page 34: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/34.jpg)
hc で選択できるモデル• E
– 一次元等分散• V
– 一次元可変な分散• EII
– 球形・等分散• VII
– 球形・異なる体積• EEE
– 楕円球形,等体積,形状,向き• VVV
– 楕円球形,異なる体積,形状,向き
![Page 35: Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析](https://reader033.fdocument.pub/reader033/viewer/2022061419/55660e1cd8b42aa6628b5359/html5/thumbnails/35.jpg)
実行例• 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)