$30 off During Our Annual Pro Sale. View Details »

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

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

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

Y. Yamamoto

May 12, 2023
Tweet

More Decks by Y. Yamamoto

Other Decks in Technology

Transcript

  1. クラスタリング2
    密度ベースクラスタリング
    & クラスタリングの実用上の問題
    ⼭本 祐輔
    名古屋市⽴⼤学 データサイエンス学部
    [email protected]
    第5回 データマイニングと機械学習 2023
    2023年5月17日

    View Slide

  2. 1 「密集」しているデータをクラスタリングする
    DBSCAN

    View Slide

  3. 密度準拠型(Density-based)クラスタリングの概要
    入力
    ・ベクトルの集合(表データ)
    ・密度の閾値
    出力
    各ベクトルが所属するクラスタ
    利用するケース
    クラスタ数は未知だが,
    密集度でクラスタリングしたいとき
    A
    B
    D
    C
    E
    F
    G
    H
    I
    A
    B
    D
    C
    E
    F
    G
    H
    I
    ある程度密に群がっている
    データ同士のみクラスタリング
    4
    最も直感に近いクラスタリング手法

    View Slide

  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). 5

    View Slide

  5. 密度ベースクラスタリングの利⽤例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.
    密度ベースの
    クラスタリング
    撮影位置が密集している
    場所をクラスタとして抽出
    撮影位置密集場所に
    タグ付けされた情報を可視化

    View Slide

  6. 密度準拠型クラスタリングの2⼤系統
    7
    密度準拠型
    クラスタリング
    DBSCAN Mean-Shift
    ヒューリスティック
    に基づくアプローチ
    統計的アプローチ
    (密度勾配推定)

    View Slide

  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
    8
    ある程度密に群がっている
    データ同士のみクラスタリング

    View Slide

  8. DBSCANの直感的アイデア
    コア点となるデータから一定範囲内にデータがあれば
    それらデータは同じクラスタに属するとみなす
    距離εの範囲内にデータ
    が存在する?
    到達可能なデータは
    同じクラスタ
    9
    ( 到 達 可 能 範 囲 )
    ε: 到達可能距離

    View Slide

  9. コア点
    一定の範囲( )内に一定個数(minPts)以上の
    データがある点をコア点と呼ぶ
    Aはコア点
    (3 ≧ minPts)
    10
    ε
    ε
    ε
    A
    B
    A
    Bはコア点でない
    (2 < minPts)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. 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

    View Slide

  27. DBSCAN demo
    28
    https://www.youtube.com/watch?v=h53WMIImUuc

    View Slide

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

    View Slide

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

    View Slide

  30. クラスタリングの評価 〜 事前に正解が定義されている場合
    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. 予測クラスタに正解が多く含まれている方が良い
    >

    View Slide

  31. 正解が定義されているときの評価指標
    32
    C1
    Cj
    CN
    C1
    m11
    m1j
    m1N
    Ci
    mi1
    mij
    miN
    CN
    mN1
    mNj
    mNN
    正解
    予測
    純度(purity) =

    !"#
    $ max
    %
    &!%

    !"#
    $ '!


    … …
    … …
    &!
    = (
    "#$
    %
    )!"

    ⼀番⼤きいものがmax mij
    そもそも正解が分かっているのであれば「教師あり学習」した⽅が吉
    どんなデータを正解とするかはタスクに強く依存する…

    View Slide

  32. 代表的なクラスタリング評価指標(正解が定義されていないとき)
    33
    (() = *
    *"#
    +
    *
    ,∈.!
    + − -+
    /
    クラスタ内誤差平方和
    クラスタkの重⼼
    クラスタkの要素
    同⼀クラスタ内の要素はできるだけクラスタの重⼼に
    近くあるべきという発想
    定義上,密度準拠型クラスタリングをうまく評価できない…

    View Slide

  33. 様々なクラスタリングの⽐較
    34
    ● タスクに応じた最適な手法を選択する必要あり
    ● クラスタリングはあくまでデータ理解のための手法

    View Slide

  34. クラスタリング⼿法の⽐較
    K-means 階層的クラスタリング DBSCAN
    ケース
    クラスタ数を指定して
    データを分割したい
    データ分割の様子
    を確認したい
    密度を基に
    クラスタリングしたい
    計算量 ○ △ △
    クラスタの
    形状
    超球状
    (重心から一定距離内
    の集合)
    クラスタ距離の
    定義による
    (例: 最短距離法→
    鎖状)
    任意
    メリット
    良い意味で単純
    (最もよく用いられる)
    クラスタが作られる
    様子が把握できる
    • 任意の形状の
    クラスタが抽出可
    • 外れ値を考慮できる
    デメリット
    ・クラスタ数の指定
    ・初期値依存
    データ数が多いと
    解釈が難しい
    パラメータ調整が
    難しい
    (minPts & eps)
    35

    View Slide

  35. K-meansの初期値問題へのアプローチ
    36
    クラスタ初期値によって結果が大きく変わることが…
    KKZ法は1つの解決アプローチ
    Q.
    A.
    最も距離が離れているK点を初期クラスタとする⽅法
    K=3の場合,⾚い点を
    初期クラスタとする

    View Slide

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

    View Slide

  37. 直感に反する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は,各クラスタ内の要素数が
    ほぼ等しいという暗黙的仮定を置いている

    View Slide

  38. クラスタ距離の定義とデンドログラム @階層的クラスタリング
    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.

    View Slide

  39. より性能がよいクラスタリング⼿法
    K-means X-means
    EMアルゴリズム
    ・クラスタ数指定なし & ⾼速化
    ・BIC(ベイズ情報量基準)による制御
    • データが複数クラスタに属してもOK
    • クラスタの形状を柔軟に
    40
    K-means++
    初期値によって結果が⼤きく変わらないよう
    初期クラスタの設定を⼯夫(KKZ法の改良)
    DBSCAN OPTICS
    DBSCANのパラメータ調整問題を解決

    View Slide

  40. ⾼次元データ x 次元の呪い
    41
    次元の呪い
    データの次元数が⼤きくなるとデータの特徴をうまく捉える
    ことが難しくなる有名現象.
    具体的事項1
    データの次元数が多くなるほど,学習に必要なデータが
    指数関数的に増加(過学習につながる)
    具体的事項2
    ⾼次元空間では,データの⼤半が空間の端によってしまい,
    データの類似性判定が難しくなる(球⾯集中現象)

    View Slide

  41. 球体の体積
    42
    2次元球体の体積
    r
    !"!
    r
    3次元球体の体積
    4
    3
    !""

    n次元球体の体積
    0&/(
    Γ(3/2 + 1)
    9&

    View Slide

  42. 超球体の“端”の体積(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)
    +!
    (超球の表⾯付近)

    View Slide

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

    View Slide

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

    View Slide

  45. 機械学習においてやっかいな「球⾯集中現象」(1/3)
    46
    超⾼次元空間における
    半径がrのn次元球体と半径が0.99rのn次元球体
    の間の領域の体積と外側の球体の体積の⽐は?
    r
    0.99r
    Q.
    lim
    #→%
    (1 − 0.99#) = 1
    超高次元空間では
    超球の体積と赤い隙間の部分
    (超球の表面付近)の体積が
    同じになる!!!

    View Slide

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

    View Slide

  47. 機械学習においてやっかいな「球⾯集中現象」(3/3)
    48
    (超)球体の中にデータが均⼀に分布
    しているとすると,空間中に存在する
    データの数は体積に⽐例
    超⾼次元空間では,ある点から
    半径r以内にあるデータは
    すべて超球の端に存在する
    超高次元空間では,ある点の周りにあるデータは
    すべて「類似しない」ことになる
    ⾮常に⼤きいrを考えると…
    超⾼次元では端の体積は100%…
    超高次元空間では
    データ間の類似性(距離)をうまく扱えない
    機械学習・データマイニングができない
    距離・類似計算に依存する
    特徴選択・次元圧縮が必要

    View Slide

  48. グラフデータに対する対応
    49
    ID X1
    X3
    X3
    Y
    1 … … … 39
    2 … … … 67
    … … … … …
    K-means
    階層的クラスタリング
    DBSCAN
    ベクトル(表)データ
    グラフデータ
    グラフクラスタリング
    ベクトル
    変換

    View Slide

  49. Hands-on タイム
    以下のURLにアクセスして,
    クラスタリングの実用上の問題を体験しましょう
    https://dmml2023.hontolab.org/
    50

    View Slide

  50. 今後の予定
    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:ニューラルネットワーク⼊⾨

    View Slide

  51. 数学記号(集合)
    52
    集合 (太字でない⼤⽂字アルファベット)
    0
    集合の要素 (太字でない⼩⽂字アルファベット)
    1
    ! = #"
    , ##
    , … , #$
    = & & ∈ ( ∧ * & > 0}
    外延表現:要素を並べる書き⽅
    内包表現:要素の条件を指定する書き⽅
    (xが実数でかつ f (x)がゼロより⼤きくなるようなxの集合)
    集合の書き⽅
    集合の⼤きさ(要素数) |0|

    View Slide


  52. 53
    . = 0, 1, 2, …
    1 = … , −2, −1, 0, 1, 2, …
    3 = 2n + 1 | n ∈ .
    (⾃然数)
    (整数)
    (奇数)
    7 = りんご, みかん, なし
    |7| = 3

    View Slide

  53. 数学記号(ベクトル)
    54
    3
    ベクトル (太字の⼩⽂字)
    断りがない限り,縦ベクトル
    , (
    = :$
    ( + ⋯ + :9
    (
    ベクトルの要素の書き⽅
    実数を成分とする
    m次元ベクトル
    , =
    :$

    :9
    ∈ =9
    = :$
    , … , :9
    :
    ベクトルの⼤きさ
    ! と書くことも
    , @ A = ,:A = ∑ :;
    C;
    ベクトルの内積
    !, # と書くことも

    View Slide

  54. 数学記号(⾏列)
    55
    ⾏列 (太字の⼤⽂字)
    9 =
    &""
    ⋯ &$"

    &%"



    &%$
    ∈ (%×$
    $の各列(縦ベクトル)
    を使った書き⽅
    実数を成分とする
    m⾏ n 列の⾏列
    = &'( %×$ こんな書き⽅も
    = ="
    , … , =$
    .
    ⾏列の
    要素の書き⽅

    View Slide

  55. 機械学習でよく⾒かける数学的処理(1/3)
    56
    (
    !#$
    &
    :!
    = :$
    + :(
    + ⋯ + :&
    D
    !#$
    &
    :!
    = :$
    :(
    … :&
    >
    >&)
    *(=)
    数列の和
    数列の積
    偏微分
    < = = >$
    ?$
    + >#
    ?#
    + ⋯ + >!
    ?!
    例:
    A
    A?!
    < = = >!

    View Slide

  56. 機械学習でよく⾒かける数学的処理 (2/3)
    57
    argmax
    &∈(
    8(9)
    argmin
    )∈(
    8(9)
    max
    )∈(
    8(9)
    min
    )∈(
    8(9)
    関数を最⼤化
    関数を最⼩化
    実数の範囲でパラメータxを
    動かし関数f(x)を最⼤化・最⼩化
    関数を最⼤化する
    パラメータ
    関数を最⼩化する
    パラメータ
    関数を最適化する
    実数を⾒つける

    View Slide

  57. 機械学習でよく⾒かける数学的処理 (3/3)
    58
    sign 9 = <
    1: 9 > 0
    0: 9 = 0
    −1: 9 < 0
    符号関数
    値の符号に応じて
    ・正なら1
    ・負なら-1
    ・ゼロなら0
    を返す関数と覚える
    画像出典: https://ja.wikipedia.org/wiki/符号関数
    (sgn $ と書くことも)

    View Slide

  58. 機械学習でよく出くわす瞬時に理解すべき数式
    59
    !!" # = !$ !"
    !# # = #$!$
    $
    %
    %%
    &%
    = '$(
    Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf
    )
    )(
    ( & =
    )
    )(
    ($( = 2(
    )
    )(
    +( = +$
    )
    )(
    '$( = '
    )
    )(
    ( − - & = 2(' − -)
    )
    )(
    !( − 0 & = 2!$(!( − 0)
    ! + # # = !$ + #$

    View Slide

  59. ⾏列サイズの⾒積もり
    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)の⾏列ができあがると覚えておけばよい

    View Slide