Upgrade to Pro — share decks privately, control downloads, hide ads and more …

知的情報システム開発2021-第3回20211020

059fb717431a8cd2b509ffebc57d905a?s=47 Y. Yamamoto
October 14, 2021

 知的情報システム開発2021-第3回20211020

1. DBSCAN
2. クラスタリングの実用上の問題

059fb717431a8cd2b509ffebc57d905a?s=128

Y. Yamamoto

October 14, 2021
Tweet

Transcript

  1. クラスタリング2 密度ベースクラスタリング & クラスタリングの実用上の問題 ⼭本 祐輔 静岡⼤学 情報学部 准教授 yusuke_yamamoto@acm.org

    第3回 知的情報システム開発 2021 2021年10月20日
  2. 1 「密集」しているデータをクラスタリングする DBSCAN

  3. 密度準拠型(Density-based)クラスタリングの概要 入力 ・ベクトルの集合(表データ) ・密度の閾値 出力 各ベクトルが所属するクラスタ 利用するケース クラスタ数は未知だが, 密集度でクラスタリングしたいとき A

    B D C E F G H I A B D C E F G H I ある程度密に群がっている データ同士のみクラスタリング 3 最も直感に近いクラスタリング手法
  4. 密度ベースクラスタリングの利⽤例1 米国のGPSの位置情報データをクラスタリングして 人が密集している地域を抽出 L. Cao et al., 2009. Enhancing semantic

    and geographic annotation of web images via logistic canonical correlation regression. In Proceedings of the 17th ACM international conference on Multimedia (MM '09). 4
  5. 密度ベースクラスタリングの利⽤例2 5 サンフランシスコで撮影された 写真の位置情報 on Flickr 画像出展: https://www.buzzfeed.com/ L. Kennedy

    et al.: ”How flickr helps us make sense of the world: context and content in community-contributed media collections. In Proceedings of the 15th ACM international conference on Multimedia (MM ‘07)”, 631–640, 2007. 密度ベースの クラスタリング 撮影位置が密集している 場所をクラスタとして抽出 撮影位置密集場所に タグ付けされた情報を可視化
  6. 密度準拠型クラスタリングの2⼤系統 6 密度準拠型 クラスタリング DBSCAN Mean-Shift ヒューリスティック に基づくアプローチ 統計的アプローチ (密度勾配推定)

  7. DBSCAN (Density-based spatial clustering of applications with noise)の概要 入力 ・ベクトルの集合(表データ)

    ・密度の閾値 - 到達可能距離: ε - コア点の数: minPts 出力 各ベクトルが所属するクラスタ & ノイズデータ 利用するケース クラスタ数は未知だが, 密集度でクラスタリングしたいとき A B D C E F G H I A B D C E F G H I 7 ある程度密に群がっている データ同士のみクラスタリング
  8. DBSCANの直感的アイデア コア点となるデータから一定範囲内にデータがあれば それらデータは同じクラスタに属するとみなす 距離εの範囲内にデータ が存在する? 到達可能なデータは 同じクラスタ 8 ( 到

    達 可 能 範 囲 ) ε: 到達可能距離
  9. コア点 一定の範囲( )内に一定個数(minPts)以上の データがある点をコア点と呼ぶ Aはコア点 (3 ≧ minPts) 9 ε

    ε ε A B A Bはコア点でない (2 < minPts)
  10. DBSCANのアルゴリズム(1/16) ランダムに点を選び,一定の範囲内に 他のデータ点がないかを調べる 1. 10

  11. DBSCANのアルゴリズム(2/16) 一定の範囲内に一定個数の点がない場合, その点はノイズと見なし,次の点を調べる 1a. 11 ε

  12. DBSCANのアルゴリズム(3/16) 1a. 12 一定の範囲内に一定個数の点がない場合, その点はノイズと見なし,次の点を調べる ε

  13. DBSCANのアルゴリズム(4/16) 一定の範囲内に一定個数の点がある場合, 起点データをコア点と見なす.範囲内にある 点はコア点と同じクラスタと見なす 1b. 13 ε

  14. DBSCANのアルゴリズム(5/16) 1b. 14 一定の範囲内に一定個数の点がある場合, 起点データをコア点と見なす.範囲内にある 点はコア点と同じクラスタと見なす ε

  15. DBSCANのアルゴリズム(6/16) ステップ1の処理を繰り返す 2. 15 ε

  16. DBSCANのアルゴリズム(7/16) ステップ1の処理を繰り返す 2. 16 ε

  17. DBSCANのアルゴリズム(8/16) ステップ1の処理を繰り返す 2. 17 ε

  18. DBSCANのアルゴリズム(9/16) 2. 18 ステップ1の処理を繰り返す ε

  19. DBSCANのアルゴリズム(10/16) ステップ1の処理を繰り返す 2. 19 ε

  20. DBSCANのアルゴリズム(11/16) 2. 20 ステップ1の処理を繰り返す ε

  21. DBSCANのアルゴリズム(12/16) 2. 21 ステップ1の処理を繰り返す ε

  22. DBSCANのアルゴリズム(13/16) 2. 22 ステップ1の処理を繰り返す ε

  23. DBSCANのアルゴリズム(14/16) 2. 23 ステップ1の処理を繰り返す

  24. DBSCANのアルゴリズム(15/16) 3. 24 ε すべての点について,ステップ1の処理が 完了すれば,クラスタリング終了

  25. DBSCANのアルゴリズム(16/16) すべての点について,ステップ1の処理が 完了すれば,クラスタリング終了 3. 25 コア点から⼀定範囲内に含まれない データは外れ値と⾒なされる

  26. DBSCANの定式化 26 ALGORITHM 1: Pseudocode of Original Sequential DBSCAN Algorithm

    Input: DB: Database Input: ε: Radius Input: minPts: Density threshold Input: dist: Distance function Data: label: Point labels, initially unde ned 1 foreach point p in database DB do // Iterate over every point 2 if label(p) unde ned then continue // Skip processed points 3 Neighbors N ← R (DB, dist,p,ε) // Find initial neighbors 4 if |N | < minPts then // Non-core points are nois 5 label(p) ← Noise 6 continue 7 c ← next cluster label // Start a new cluster 8 label(p) ← c 9 Seed set S ← N \ {p} // Expand neighborhood 10 foreach q in S do 11 if label(q) = Noise then label(q) ← c 12 if label(q) unde ned then continue 13 Neighbors N ← R (DB, dist,q,ε) 14 label(q) ← c 15 if |N | < minPts then continue // Core-point check 16 S ← S ∪ N 9:4 E. Schubert et al. LGORITHM 1: Pseudocode of Original Sequential DBSCAN Algorithm Input: DB: Database Input: ε: Radius Input: minPts: Density threshold Input: dist: Distance function Data: label: Point labels, initially unde ned 1 foreach point p in database DB do // Iterate over every point 2 if label(p) unde ned then continue // Skip processed points 3 Neighbors N ← R (DB, dist,p,ε) // Find initial neighbors 4 if |N | < minPts then // Non-core points are noise 5 label(p) ← Noise 6 continue 7 c ← next cluster label // Start a new cluster 8 label(p) ← c 9 Seed set S ← N \ {p} // Expand neighborhood 0 foreach q in S do 1 if label(q) = Noise then label(q) ← c 2 if label(q) unde ned then continue 3 Neighbors N ← R (DB, dist,q,ε) 4 label(q) ← c 5 if |N | < minPts then continue // Core-point check 6 S ← S ∪ N E. Schubert et al.: "DBSCAN Revisited, Revisited: Why and How You Should (Still) Use DBSCAN". ACM Transactions on Database Systems. 42 (3): 19:1–19:21
  27. DBSCAN demo 27 https://www.youtube.com/watch?v=h53WMIImUuc

  28. Hands-on タイム 以下のURLにアクセスして, DBSCANによるクラスタリングを体験しましょう https://dmml2021.hontolab.org/ 28

  29. 2 クラスタリングの実用上の問題

  30. クラスタリングの評価 〜 事前に正解が定義されている場合 30 C1 C2 C3 C1 97 0

    3 C2 5 191 4 C3 4 10 87 正解 予測 正解 予測 C1 C2 C3 C1 33 30 37 C2 51 125 24 C3 26 30 44 正解 予測 Q. どちらの手法のほうが正しく分割できているか? クラスタリング⼿法X クラスタリング⼿法Y A. 予測クラスタに正解が多く含まれている方が良い >
  31. 正解が定義されているときの評価指標 31 C1 Cj CN C1 m11 m1j m1N Ci

    mi1 mij miN CN mN1 mNj mNN 正解 予測 純度(purity) = ∑!"# $ max % 𝑚!% ∑!"# $ 𝑀! … … … … … … 𝑀! = # "#$ % 𝑚!" 和 ⼀番⼤きいものがmax mij そもそも正解が分かっているのであれば「教師あり学習」した⽅が吉 どんなデータを正解とするかはタスクに強く依存する…
  32. 代表的なクラスタリング評価指標(正解が定義されていないとき) 32 𝑆𝑆𝐸 = * &"# ' * 𝒙∈*! 𝒙

    − 𝒎' + クラスタ内誤差平方和 クラスタkの重⼼ クラスタkの要素 同⼀クラスタ内の要素はできるだけクラスタの重⼼に 近くあるべきという発想 定義上,密度準拠型クラスタリングをうまく評価できない…
  33. 様々なクラスタリングの⽐較 33 • タスクに応じた最適な手法を選択する必要あり • クラスタリングはあくまでデータ理解のための手法

  34. クラスタリング⼿法の⽐較 K-means 階層的クラスタリング DBSCAN ケース クラスタ数を指定して データを分割したい データ分割の様子 を確認したい 密度を基に

    クラスタリングしたい 計算量 ◦ △ △ クラスタの 形状 超球状 (重心から一定距離内 の集合) クラスタ距離の 定義による (例: 最短距離法→ 鎖状) 任意 メリット 良い意味で単純 (最もよく用いられる) クラスタが作られる 様子が把握できる • 任意の形状の クラスタが抽出可 • 外れ値を考慮できる デメリット ・クラスタ数の指定 ・初期値依存 データ数が多いと 解釈が難しい パラメータ調整が 難しい (minPts & eps) 34
  35. K-meansの初期値問題へのアプローチ 35 クラスタ初期値によって結果が大きく変わることが… KKZ法は1つの解決アプローチ Q. A. 最も距離が離れているK点を初期クラスタとする⽅法 K=3の場合,⾚い点を 初期クラスタとする

  36. エルボー法 〜 K-meansクラスタリングのクラスタ決定⽅法 36 クラスタ数の増加に対してクラスタ内誤差平方和(SSE)の 減少傾向が大きく変わるクラスタ数を最適クラスタ数とする K=3でSSEの減少傾向が⼤きく変化 → 最適クラスタ数=3とする 最適なクラスタ数はどう決める?

    Q. A.
  37. 直感に反するK-meansの結果例(K=3) 37 S. Guha et al. “CURE: an efficient clustering

    algorithm for large databases”, In Proceedings of the ACM SIGMOD international conference on Management of data (SIGMOD '98)., pp.73–84, 1998. K-meansは,各クラスタ内の要素数が ほぼ等しいという暗黙的仮定を置いている
  38. クラスタ距離の定義とデンドログラム @階層的クラスタリング 38 524 14. Unsupervised Learning Average Linkage Complete

    Linkage Single Linkage FIGURE 14.13. Dendrograms from agglomerative hierarchical clustering of hu- ヒト腫瘍DNAマイクロアレイデータに対する階層的クラスタリング 群平均法 最⻑距離法 最短距離法 デンドログラムはクラスタ距離やデータの分布に敏感 画像出典: T. Hastie et al. (2009): “The Elements of Statistical Learning”, Springer.
  39. より性能がよいクラスタリング⼿法 K-means X-means EMアルゴリズム ・クラスタ数指定なし & ⾼速化 ・BIC(ベイズ情報量基準)による制御 • データが複数クラスタに属してもOK

    • クラスタの形状を柔軟に 39 K-means++ 初期値によって結果が⼤きく変わらないよう 初期クラスタの設定を⼯夫(KKZ法の改良) DBSCAN OPTICS DBSCANのパラメータ調整問題を解決
  40. ⾼次元データ x 次元の呪い 40 次元の呪い データの次元数が⼤きくなるとデータの特徴をうまく捉える ことが難しくなる有名現象. 具体的事項1 データの次元数が多くなるほど,学習に必要なデータが 指数関数的に増加(過学習につながる)

    具体的事項2 ⾼次元空間では,データの⼤半が空間の端によってしまい, データの類似性判定が難しくなる(球⾯集中現象)
  41. 球体の体積 41 2次元球体の体積 r 𝜋𝑟! r 3次元球体の体積 4 3 𝜋𝑟!

    ? n次元球体の体積 𝜋&/( Γ(𝑛/2 + 1) 𝑟&
  42. 超球体の“端”の体積(1/3) 42 半径がrのn次元球体と半径が0.99rのn次元球体 の間の領域の体積と外側の球体の体積の⽐は? r 0.99r Q. = 𝑘𝑟! −

    𝑘 % 0.99!𝑟! 𝑘𝑟! = 1 − 0.99" 𝜋!/# Γ(𝑛/2 + 1) 𝑟! − 𝜋!/# Γ 𝑛/2 + 1 (0.99𝑟)! 𝜋!/# Γ(𝑛/2 + 1) 𝑟! (超球の表⾯付近)
  43. 超球体の“端”の体積(2/3) 43 半径がrのn次元球体と半径が0.99rのn次元球体 の間の領域の体積と外側の球体の体積の⽐は? Q. (超球の表⾯付近)

  44. 超球体の“端”の体積(3/3) 44 半径がrのn次元球体と半径が0.99rのn次元球体 の間の領域の体積と外側の球体の体積の⽐は? Q. (超球の表⾯付近) ほぼ100%

  45. 機械学習においてやっかいな「球⾯集中現象」(1/3) 45 超⾼次元空間における 半径がrのn次元球体と半径が0.99rのn次元球体 の間の領域の体積と外側の球体の体積の⽐は? r 0.99r Q. lim "→$

    (1 − 0.99") = 1 超高次元空間では 超球の体積と赤い隙間の部分 (超球の表面付近)の体積が 同じになる!!!
  46. 機械学習においてやっかいな「球⾯集中現象」(2/3) 46 (超)球体の中にデータが均⼀に分布 しているとすると,空間中に存在する データの数は体積に⽐例 超⾼次元空間では,ある点から 半径r以内にあるデータは すべて超球の端に存在する 超高次元空間では,ある点の周りにあるデータは すべて「類似しない」ことになる

    ⾮常に⼤きいrを考えると… 超⾼次元では端の体積は100%…
  47. 機械学習においてやっかいな「球⾯集中現象」(3/3) 47 (超)球体の中にデータが均⼀に分布 しているとすると,空間中に存在する データの数は体積に⽐例 超⾼次元空間では,ある点から 半径r以内にあるデータは すべて超球の端に存在する 超高次元空間では,ある点の周りにあるデータは すべて「類似しない」ことになる

    ⾮常に⼤きいrを考えると… 超⾼次元では端の体積は100%… 超高次元空間では データ間の類似性(距離)をうまく扱えない 機械学習・データマイニングができない 距離・類似計算に依存する 特徴選択・次元圧縮が必要
  48. グラフデータに対する対応 48 ID X1 X3 X3 Y 1 … …

    … 39 2 … … … 67 … … … … … K-means 階層的クラスタリング DBSCAN ベクトル(表)データ グラフデータ グラフクラスタリング ベクトル 変換
  49. Hands-on タイム 以下のURLにアクセスして, クラスタリングの実用上の問題を体験しましょう https://dmml2021.hontolab.org/ 49

  50. 今後の予定 回 実施⽇ トピック 1 10/06 ガイダンス:機械学習の概要 & はじめての機械学習 2

    10/13 クラスタリング1:k-means & 階層的クラスタリング 3 10/20 クラスタリング2:密度ベースクラスタリング 4 10/27 分類1:K近傍法 & 教師あり機械学習のお作法 5 11/10 ゲスト講師による講演1(松村先⽣ from Wantedly) 6 11/17 分類2:サポートベクターマシン 7 11/24 分類3:ニューラルネットワーク⼊⾨ 8 12/01 時系列データとモデリング1:時系列データの統計的な扱い 9 12/08 ゲスト講師による講演2(加藤先⽣ from 筑波⼤学) 10 12/15 時系列データとモデリング2:時系列データの解析 11 12/22 時系列データとモデリング3:シミュレーションによる 時系列データの検討 12 01/12 時系列データとモデリング4:未知環境での時系列データ 13 01/19 ゲスト講師による講演3(⼭本岳先⽣ from 兵庫県⽴⼤学) 14 01/26 時系列データとモデリング5:解析と学習モデル 15 予備⽇ 50
  51. 数学記号(集合) 51 集合 (太字でない⼤⽂字アルファベット) 𝑆 集合の要素 (太字でない⼩⽂字アルファベット) 𝑠 𝑆 =

    𝑠! , 𝑠" , … , 𝑠# = 𝑥 𝑥 ∈ 𝑅 ∧ 𝑓 𝑥 > 0} 外延表現:要素を並べる書き⽅ 内包表現:要素の条件を指定する書き⽅ (xが実数でかつ f (x)がゼロより⼤きくなるようなxの集合) 集合の書き⽅ 集合の⼤きさ(要素数) |𝑆|
  52. 例 52 𝑁 = 0, 1, 2, … 𝑍 =

    … , −2, −1, 0, 1, 2, … 𝑂 = 2n + 1 | n ∈ 𝑁 (⾃然数) (整数) (奇数) 𝐹 = りんご, みかん, なし |𝐹| = 3
  53. 数学記号(ベクトル) 53 𝒙 ベクトル (太字の⼩⽂字) 断りがない限り,縦ベクトル 𝒙 ( = 𝑥$

    ( + ⋯ + 𝑥) ( ベクトルの要素の書き⽅ 実数を成分とする m次元ベクトル 𝒙 = 𝑥$ ⋮ 𝑥) ∈ 𝑅) = 𝑥$ , … , 𝑥) * ベクトルの⼤きさ 𝒙 と書くことも 𝒙 7 𝒚 = 𝒙*𝒚 = ∑ 𝑥+ 𝑦+ ベクトルの内積 𝒙, 𝒚 と書くことも
  54. 数学記号(⾏列) 54 ⾏列 (太字の⼤⽂字) 𝑿 = 𝑥!! ⋯ 𝑥#! ⋮

    𝑥$! ⋱ ⋯ ⋮ 𝑥$# ∈ 𝑅$×# 𝑿の各列(縦ベクトル) を使った書き⽅ 実数を成分とする m⾏ n 列の⾏列 = 𝑥&' $×# こんな書き⽅も = 𝒙! , … , 𝒙# 𝑿 ⾏列の 要素の書き⽅
  55. 機械学習でよく⾒かける数学的処理(1/3) 55 # !#$ & 𝑥! = 𝑥$ + 𝑥(

    + ⋯ + 𝑥& ; !#$ & 𝑥! = 𝑥$ 𝑥( … 𝑥& 𝜕 𝜕𝑥( 𝑓(𝒙) 数列の和 数列の積 偏微分 𝑓 𝒙 = 𝑤$ 𝑥$ + 𝑤# 𝑥# + ⋯ + 𝑤! 𝑥! 例: 𝜕 𝜕𝑥! 𝑓 𝒙 = 𝑤!
  56. 機械学習でよく⾒かける数学的処理 (2/3) 56 argmax %∈' 𝑓(𝑥) argmin (∈' 𝑓(𝑥) max

    (∈' 𝑓(𝑥) min (∈' 𝑓(𝑥) 関数を最⼤化 関数を最⼩化 実数の範囲でパラメータxを 動かし関数f(x)を最⼤化・最⼩化 関数を最⼤化する パラメータ 関数を最⼩化する パラメータ 関数を最適化する 実数を⾒つける
  57. 機械学習でよく⾒かける数学的処理 (3/3) 57 sign 𝑥 = < 1: 𝑥 >

    0 0: 𝑥 = 0 −1: 𝑥 < 0 符号関数 値の符号に応じて ・正なら1 ・負なら-1 ・ゼロなら0 を返す関数と覚える 画像出典: https://ja.wikipedia.org/wiki/符号関数 (sgn 𝑥 と書くことも)
  58. 機械学習でよく出くわす瞬時に理解すべき数式 58 𝑨%& ' = 𝑨𝑻 %& 𝑨𝑩 ' =

    𝑩𝑻𝑨𝑻 $ ) 𝑤) 𝑥) = 𝒘𝑻𝒙 Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf 𝜕 𝜕𝒙 𝒙 * = 𝜕 𝜕𝒙 𝒙𝑻𝒙 = 2𝒙 𝜕 𝜕𝒙 𝑴𝒙 = 𝑴𝑻 𝜕 𝜕𝒙 𝒘𝑻𝒙 = 𝒘 𝜕 𝜕𝒙 𝒙 − 𝒂 * = 2(𝒘 − 𝒂) 𝜕 𝜕𝒙 𝑨𝒙 − 𝒃 * = 2𝑨𝑻(𝑨𝒙 − 𝒃) 𝑨 + 𝑩 ' = 𝑨𝑻 + 𝑩𝑻
  59. ⾏列サイズの⾒積もり 59 ⾏列A はm⾏ k列(m×k),⾏列B はk⾏ n列(k×n), ⾏列 Wはm⾏ m列(m×m),ベクトルxは

    m⾏ 1列(m×1) とする.このとき以下の演算結果のサイズは? Q1. 𝑨𝑻𝒙 Q2. 𝒙𝑻𝑾𝒙 Q3. 𝒙𝑻𝒙 スカラー スカラー (k×1)の⾏列(k次元ベクトル) (m×k)の⾏列と(k×n)の⾏列の積をとると, (m×n)の⾏列ができあがると覚えておけばよい