rによるクラスター分析
TRANSCRIPT
![Page 1: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/1.jpg)
によるクラスター分析 入門 ~階層的クラスター編~
1
※いろいろなサイト・本を 自分なりにまとめてみました。
![Page 2: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/2.jpg)
みなさん 2
![Page 3: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/3.jpg)
突然ですが 3
![Page 4: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/4.jpg)
この選手
4
知ってますか
![Page 5: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/5.jpg)
打ってよし!投げてよし!
大 谷
翔 平
5
![Page 6: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/6.jpg)
投手でも野手でもある大谷選手をほかの選手と比較したら誰と似ているのだろう・・・
Question
6
![Page 7: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/7.jpg)
投手でも野手でもある大谷選手をほかの選手と比較したら誰と似ているのだろう・・・
Question
クラスター分析で見てみよう…
7
![Page 8: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/8.jpg)
What’s cluster analysis ? データのパターンが似ている個体を 同じグループにまとめるための手法
8
![Page 9: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/9.jpg)
Clustering process ① データから距離(類似度)を求める (ユークリッド距離・最大距離・マンハッタン距離・キャンベラ距離・
バイナリ距離・ミンコウスキー距離)
② 分析の方法を決める (最近隣法・最遠隣法・群平均法・重心法・メディアン法・ウォード法)
③ ②の方法のコーフェン行列を求める
④ コーフェン行列に基づいて樹形図を作成する
⑤ 結果について検討する 9
![Page 10: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/10.jpg)
Clustering process ① データから距離(類似度)を求める (ユークリッド距離・最大距離・マンハッタン距離・キャンベラ距離・
バイナリ距離・ミンコウスキー距離)
② 分析の方法を決める (最近隣法・最遠隣法・群平均法・重心法・メディアン法・ウォード法)
③ ②の方法のコーフェン行列を求める
④ コーフェン行列に基づいて樹形図を作成する
⑤ 結果について検討する 10
![Page 11: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/11.jpg)
About data. 使用するデータ 規定投球回の1/3以上を投げているパ・リーグの投手のデータ : 57行16列
規定打席数の1/3以上打席に立っているパ・リーグの野手のデータ : 76行15列
11
![Page 12: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/12.jpg)
ユークリッド 最大距離 マンハッタン
キャン ベラ バイナリ ミンコウ
スキー
About distance.
12
↑ のデータを R で test という名前でインポート(rownamesに名前、データフレームに防御率~自責点)
> dist(test, method=“euclidean”) # ユークリッド距離 田中 将大 金子 千尋 金子 千尋 74.41021 大谷 翔平 595.70664 657.63110
> test[1,] - test[2,] # 田中 将大と金子 千尋を比較 防御率 試合数 勝利 敗北 セーブ ホールド 勝率 対戦打者数 投球回 被安打 被本塁打 フォアボール デッドボール 奪三振 失点 自責点 -0.74 -1 9 -8 1 0 0.348 -59 -11.1 2 -4 -26 0 -17 -20 -20> sqrt(sum((test[1,] - test[2,])^2))[1] 74.41021
※普通、標準化して距離を求めますが、ここでは割愛
![Page 13: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/13.jpg)
ユークリッド 最大距離 マンハッタン
キャン ベラ バイナリ ミンコウ
スキー
About distance.
13
↑ のデータを R で test という名前でインポート(rownamesに名前、データフレームに防御率~自責点)
> dist(test, method=“maximum”) # 最大距離 田中 将大 金子 千尋 金子 千尋 59 大谷 翔平 548 607
> test[1,] - test[2,] # 田中 将大と金子 千尋を比較 防御率 試合数 勝利 敗北 セーブ ホールド 勝率 対戦打者数 投球回 被安打 被本塁打 フォアボール デッドボール 奪三振 失点 自責点 -0.74 -1 9 -8 1 0 0.348 -59 -11.1 2 -4 -26 0 -17 -20 -20> max(abs(test[1,] - test[2,])) # 最大距離の算出方法[1] 59
※普通、標準化して距離を求めますが、ここでは割愛
![Page 14: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/14.jpg)
ユークリッド 最大距離 マンハッタン
キャン ベラ バイナリ ミンコウ
スキー
About distance.
14
↑ のデータを R で test という名前でインポート(rownamesに名前、データフレームに防御率~自責点)
> dist(test, method=“manhattan”) # マンハッタン距離 田中 将大 金子 千尋 金子 千尋 179.188 大谷 翔平 1000.760 1152.468
> test[1,] - test[2,] # 田中 将大と金子 千尋を比較 防御率 試合数 勝利 敗北 セーブ ホールド 勝率 対戦打者数 投球回 被安打 被本塁打 フォアボール デッドボール 奪三振 失点 自責点 -0.74 -1 9 -8 1 0 0.348 -59 -11.1 2 -4 -26 0 -17 -20 -20> sum(abs(test[1,] - test[2,])) # マンハッタン距離の算出方法[1] 179.188
※普通、標準化して距離を求めますが、ここでは割愛
![Page 15: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/15.jpg)
ユークリッド 最大距離 マンハッタン
キャン ベラ バイナリ ミンコウ
スキー
About distance.
15
↑ のデータを R で test という名前でインポート(rownamesに名前、データフレームに防御率~自責点) > dist(test, method=“canberra”) # キャンベラ距離 田中 将大 金子 千尋 金子 千尋 4.059966 大谷 翔平 6.387633 7.476160
> test[1,] - test[2,] # 田中 将大と金子 千尋を比較 防御率 試合数 勝利 敗北 セーブ ホールド 勝率 対戦打者数 投球回 被安打 被本塁打 フォアボール デッドボール 奪三振 失点 自責点 -0.74 -1 9 -8 1 0 0.348 -59 -11.1 2 -4 -26 0 -17 -20 -20> sum(abs(test[1,] - test[2,]) / (abs(test[1,]) + abs(test[2,])))[1] NaN # 分母に0があるため(ホールド)計算できない(dist()では、それ以外の値の平均を代入する)> A <- abs(test[1,-6] - test[2,-6]) / (abs(test[1,-6]) + abs(test[2,-6]))> sum(A) + mean(as.matrix(A))[1] 4.059966
※普通、標準化して距離を求めますが、ここでは割愛
![Page 16: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/16.jpg)
ユークリッド 最大距離 マンハッタン
キャン ベラ バイナリ ミンコウ
スキー
About distance.
16
↑ のデータを R で test という名前でインポート(rownamesに名前、データフレームに防御率~自責点)
> dist(test, method=“binary”) # バイナリ距離 2進法による異なるビットの割合 一般にデータが 0,1 のときに用いるので省略
※普通、標準化して距離を求めますが、ここでは割愛
![Page 17: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/17.jpg)
ユークリッド 最大距離 マンハッタン
キャン ベラ バイナリ ミンコウ
スキー
About distance.
17
↑ のデータを R で test という名前でインポート(rownamesに名前、データフレームに防御率~自責点)
> dist(test, method=“minkowski”,p = 3) # ミンコウスキー距離 田中 将大 金子 千尋 金子 千尋 62.70502 大谷 翔平 556.07350 615.24519
> test[1,] - test[2,] # 田中 将大と金子 千尋を比較 防御率 試合数 勝利 敗北 セーブ ホールド 勝率 対戦打者数 投球回 被安打 被本塁打 フォアボール デッドボール 奪三振 失点 自責点 -0.74 -1 9 -8 1 0 0.348 -59 -11.1 2 -4 -26 0 -17 -20 -20> sum(abs(test[1,] - test[2,])^3)^(1/3)[1] 62.70502
※普通、標準化して距離を求めますが、ここでは割愛
![Page 18: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/18.jpg)
Clustering process ① データから距離(類似度)を求める (ユークリッド距離・最大距離・マンハッタン距離・キャンベラ距離・
バイナリ距離・ミンコウスキー距離)
② 分析の方法を決める (最近隣法・最遠隣法・群平均法・重心法・メディアン法・ウォード法)
③ ②の方法のコーフェン行列を求める
④ コーフェン行列に基づいて樹形図を作成する
⑤ 結果について検討する 18
![Page 19: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/19.jpg)
About clustering.
19
![Page 20: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/20.jpg)
About clustering.
きっと文章で聞いた方がわかりやすいです 20
![Page 21: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/21.jpg)
最近隣法 最遠隣法
群平均法 重心法 メディ
アン法 ウォード法
21
About clustering. ※距離はユークリッド距離を使用
Rのコードsingle <- hclust(di, method=“single”) # diはdist(パ・リーグ全体の投手plot(single,hang=-1,main="最近隣法") ,methods=“euclidean”)
最近隣法は、2つのクラスターのそれぞれの中から1個ずつ個体を選んで個体間の距離を求め、それらの中で、最も近い個体間の距離をこの2つのクラスター間の距離とする方法。
![Page 22: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/22.jpg)
最近隣法 最遠隣法
群平均法 重心法 メディ
アン法 ウォード法
22
About clustering. ※距離はユークリッド距離を使用
Rのコードcomplete <- hclust(di, method=“complete”) # diはdist(パ・リーグ全体の投手plot(complete,hang=-1,main=“最遠隣法”) ,methods=“euclidean”)
最遠隣法は、2つのクラスターのそれぞれの中から1個ずつ個体を選んで個体間の距離を求め、それらの中で、最も遠い個体間の距離をこの2つのクラスター間の距離とする方法。
![Page 23: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/23.jpg)
最近隣法 最遠隣法
群平均法 重心法 メディ
アン法 ウォード法
23
About clustering. ※距離はユークリッド距離を使用
Rのコードaverage <- hclust(di, method=“average”) # diはdist(パ・リーグ全体の投手plot(average,hang=-1,main=“群平均法") ,methods=“euclidean”)
最近隣法と最遠隣法を折衷した方法で、2つのクラスターのそれぞれの中から1個ずつ個体を選んで個体間の距離を求め、それらの距離の平均値を2つのクラスター間の距離とする。
![Page 24: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/24.jpg)
最近隣法 最遠隣法
群平均法 重心法 メディ
アン法 ウォード法
24
About clustering. ※距離はユークリッド距離を使用
Rのコードcentroid <- hclust(di, method=“centroid”) # diはdist(パ・リーグ全体の投手plot(centroid,hang=-1,main=“重心法”) ,methods=“euclidean”)
重心法は、クラスターのそれぞれの重心を求め、その重心間の距離をクラスターの間の距離とする。重心を求める際には、個体数を重みとして用いる。
![Page 25: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/25.jpg)
最近隣法 最遠隣法
群平均法 重心法 メディ
アン法 ウォード法
25
About clustering. ※距離はユークリッド距離を使用
Rのコードmedian <- hclust(di, method=“median”) # diはdist(パ・リーグ全体の投手plot(median,hang=-1,main=“メディアン法") ,methods=“euclidean”)
メディアン法は、重心法の変形で、2つのクラスターの重心の間の重み付きの距離を求めるとき、重みを等しくして求めた距離の値を、2つのクラスター間の距離とする。
![Page 26: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/26.jpg)
最近隣法 最遠隣法
群平均法 重心法 メディ
アン法 ウォード法
26
About clustering. ※距離はユークリッド距離を使用
Rのコードward <- hclust(di, method=“ward”) # diはdist(パ・リーグ全体の投手plot(ward,hang=-1,main=“ウォード法") ,methods=“euclidean”)
ウォード法は、2つのクラスターを融合した際に、生じる分散の変化が最小になるようにクラスターを形成していく方法である。(一般にはこの方法が一番感度が良いとされている。)
![Page 27: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/27.jpg)
Clustering process ① データから距離(類似度)を求める (ユークリッド距離・最大距離・マンハッタン距離・キャンベラ距離・
バイナリ距離・ミンコウスキー距離)
② 分析の方法を決める (最近隣法・最遠隣法・群平均法・重心法・メディアン法・ウォード法)
③ ②の方法のコーフェン行列を求める
④ コーフェン行列に基づいて樹形図を作成する
⑤ 結果について検討する 27
![Page 28: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/28.jpg)
• どの方法が良いかは一概には言えないので、他のデータ解析方法も用いて、多角的にデータを眺め、総合的に判断することが必要である。
• 一般的に計算方法からしてもウォード法が汎用性があると考えられている。
28
![Page 29: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/29.jpg)
ということで
29
![Page 30: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/30.jpg)
本題に戻ります
30
![Page 31: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/31.jpg)
~Pitcher編~(ユークリッド距離)
31
![Page 32: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/32.jpg)
~Pitcher編~(マンハッタン距離)
32
![Page 33: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/33.jpg)
~Pitcher編~(キャンベラ距離)
33
![Page 34: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/34.jpg)
防御率 試合数 勝利 敗北 セーブ ホールド 勝率 対戦打者数 戸村 3.33 12 4 2 0 0 0.667 284 大谷 4.23 13 3 0 0 0 1.000 274
投球回 被安打 被本塁打 フォアボール デッドボール 奪三振 失点 自責点 戸村 67.2 63 4 28 3 22 27 25 大谷 61.2 57 4 33 8 46 30 29
比 較
34
![Page 35: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/35.jpg)
防御率 試合数 勝利 敗北 セーブ ホールド 勝率 対戦打者数 戸村 3.33 12 4 2 0 0 0.667 284 大谷 4.23 13 3 0 0 0 1.000 274
投球回 被安打 被本塁打 フォアボール デッドボール 奪三振 失点 自責点 戸村 67.2 63 4 28 3 22 27 25 大谷 61.2 57 4 33 8 46 30 29
比 較
35
似てると言えば似てる
![Page 36: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/36.jpg)
~Batter編~(ユークリッド距離)
36
![Page 37: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/37.jpg)
~Batter編~(マンハッタン距離)
37
![Page 38: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/38.jpg)
~Batter編~(キャンベラ距離)
38
![Page 39: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/39.jpg)
打率 試合数 打席数 打数 安打 HR 打点 盗塁 四球 死球 三振 サブロー 0.245 73 216 184 45 5 24 0 27 0 42 大谷 0.238 77 204 189 45 3 20 4 12 1 64 犠打 併殺打 長打率 出塁率 サブロー 1 6 0.375 0.335 大谷 0 3 0.376 0.284
比 較
39
![Page 40: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/40.jpg)
打率 試合数 打席数 打数 安打 HR 打点 盗塁 四球 死球 三振 サブロー 0.245 73 216 184 45 5 24 0 27 0 42 大谷 0.238 77 204 189 45 3 20 4 12 1 64 犠打 併殺打 長打率 出塁率 サブロー 1 6 0.375 0.335 大谷 0 3 0.376 0.284
比 較
40
似てると言えば似てる
![Page 41: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/41.jpg)
まとめ ・クラスター分析単体では、計算過程から もわかる通り、うまく活用しにくい。
(しかし、数字・グラフで嘘をつきたい人に とってはとても有用な手法)
・私的には非階層クラスタリングの方がグ ラフから読み取りづらいが精度よくクラ スタ分けできると思っている。
41
![Page 42: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/42.jpg)
参考文献 プロ野球データFreak: http://baseball-data.com/ マクロミル: http://www.macromill.com/landing/words/b003.html Rによるデータサイエンス:
R逆引きハンドブック:
42
![Page 43: Rによるクラスター分析](https://reader033.vdocuments.pub/reader033/viewer/2022051212/558b3e45d8b42a18058b46e6/html5/thumbnails/43.jpg)
43
Let’s enjoy clustering!!