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

データマイニングと機械学習-クラスタリング2

 データマイニングと機械学習-クラスタリング2

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

Y. Yamamoto

May 12, 2023
Tweet

More Decks by Y. Yamamoto

Other Decks in Technology

Transcript

  1. 密度ベースクラスタリングの利⽤例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). 5
  2. 密度ベースクラスタリングの利⽤例2 6 サンフランシスコで撮影された 写真の位置情報 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. 密度ベースの クラスタリング 撮影位置が密集している 場所をクラスタとして抽出 撮影位置密集場所に タグ付けされた情報を可視化
  3. 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 8 ある程度密に群がっている データ同士のみクラスタリング
  4. DBSCANの定式化 27 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 poin 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 noi 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 :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 foreach point p in database DB do // Iterate over every point if label(p) unde ned then continue // Skip processed points Neighbors N ← R (DB, dist,p,ε) // Find initial neighbors if |N | < minPts then // Non-core points are noise label(p) ← Noise continue c ← next cluster label // Start a new cluster label(p) ← c Seed set S ← N \ {p} // Expand neighborhood foreach q in S do if label(q) = Noise then label(q) ← c if label(q) unde ned then continue Neighbors N ← R (DB, dist,q,ε) label(q) ← c if |N | < minPts then continue // Core-point check 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
  5. クラスタリングの評価 〜 事前に正解が定義されている場合 31 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. 予測クラスタに正解が多く含まれている方が良い >
  6. 正解が定義されているときの評価指標 32 C1 Cj CN C1 m11 m1j m1N Ci

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

    − -+ / クラスタ内誤差平方和 クラスタkの重⼼ クラスタkの要素 同⼀クラスタ内の要素はできるだけクラスタの重⼼に 近くあるべきという発想 定義上,密度準拠型クラスタリングをうまく評価できない…
  8. クラスタリング⼿法の⽐較 K-means 階層的クラスタリング DBSCAN ケース クラスタ数を指定して データを分割したい データ分割の様子 を確認したい 密度を基に

    クラスタリングしたい 計算量 ◦ △ △ クラスタの 形状 超球状 (重心から一定距離内 の集合) クラスタ距離の 定義による (例: 最短距離法→ 鎖状) 任意 メリット 良い意味で単純 (最もよく用いられる) クラスタが作られる 様子が把握できる • 任意の形状の クラスタが抽出可 • 外れ値を考慮できる デメリット ・クラスタ数の指定 ・初期値依存 データ数が多いと 解釈が難しい パラメータ調整が 難しい (minPts & eps) 35
  9. 直感に反するK-meansの結果例(K=3) 38 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は,各クラスタ内の要素数が ほぼ等しいという暗黙的仮定を置いている
  10. クラスタ距離の定義とデンドログラム @階層的クラスタリング 39 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.
  11. より性能がよいクラスタリング⼿法 K-means X-means EMアルゴリズム ・クラスタ数指定なし & ⾼速化 ・BIC(ベイズ情報量基準)による制御 • データが複数クラスタに属してもOK

    • クラスタの形状を柔軟に 40 K-means++ 初期値によって結果が⼤きく変わらないよう 初期クラスタの設定を⼯夫(KKZ法の改良) DBSCAN OPTICS DBSCANのパラメータ調整問題を解決
  12. 超球体の“端”の体積(1/3) 43 半径がrのn次元球体と半径が0.99rのn次元球体 の間の領域の体積と外側の球体の体積の⽐は? r 0.99r Q. = *+! −

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

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

    … 39 2 … … … 67 … … … … … K-means 階層的クラスタリング DBSCAN ベクトル(表)データ グラフデータ グラフクラスタリング ベクトル 変換
  15. 今後の予定 51 回 実施⽇ トピック 1 04/12 ガイダンス 2 04/19

    機械学習の概要 & はじめての機械学習 3 04/26 演習:決定⽊ 4 05/10 クラスタリング1:k-means & 階層的クラスタリング 5 05/17 クラスタリング2:密度ベースクラスタリング 6 05/24 分類1:K近傍法 & 教師あり機械学習のお作法 7 05/31 分類2:サポートベクターマシン 8 06/07 分類3:ニューラルネットワーク⼊⾨
  16. 数学記号(集合) 52 集合 (太字でない⼤⽂字アルファベット) 0 集合の要素 (太字でない⼩⽂字アルファベット) 1 ! =

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

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

    ( + ⋯ + :9 ( ベクトルの要素の書き⽅ 実数を成分とする m次元ベクトル , = :$ ⋮ :9 ∈ =9 = :$ , … , :9 : ベクトルの⼤きさ ! と書くことも , @ A = ,:A = ∑ :; C; ベクトルの内積 !, # と書くことも
  19. 数学記号(⾏列) 55 ⾏列 (太字の⼤⽂字) 9 = &"" ⋯ &$" ⋮

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

    + ⋯ + :& D !#$ & :! = :$ :( … :& > >&) *(=) 数列の和 数列の積 偏微分 < = = >$ ?$ + ># ?# + ⋯ + >! ?! 例: A A?! < = = >!
  21. 機械学習でよく⾒かける数学的処理 (2/3) 57 argmax &∈( 8(9) argmin )∈( 8(9) max

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

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

    #$!$ $ % %% &% = '$( Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf ) )( ( & = ) )( ($( = 2( ) )( +( = +$ ) )( '$( = ' ) )( ( − - & = 2(' − -) ) )( !( − 0 & = 2!$(!( − 0) ! + # # = !$ + #$
  24. ⾏列サイズの⾒積もり 60 ⾏列A はm⾏ k列(m×k),⾏列B はk⾏ n列(k×n), ⾏列 Wはm⾏ m列(m×m),ベクトルxは

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