WIP

クラスタリング

2017年05月05日に更新 vsanna / public machine_learning

数学

概要

  • クラスタリングとは、データ群を特徴の似通った集団同士に分ける作業
  • 方法
    1. 凝集型クラスタリング
      • 単連結 / 完全連結 / 重心法
    2. k-means
    3. 今号正規分布によるクラスタリング
    4. EMアルゴリズム
    5. PLSA

凝集型アルゴリズム

  • データ(事例と呼ぶ)毎の類似度の計算方法は所与とする
  • 流れ
    1. まず、要素数と同数のクラスタを用意する
    2. 全当たりでもっともクラスタ間類似度の高いクラスタペアを見つける
    3. それらをマージする
    4. クラスタが1つになるまで2→3を繰り返す
D = {x1, x2, x3, ... xD}
C = {c1, c2, c3, ... cD}

c1 = {x1}, c2 = {x2} ...

while C.length >= 2
    (targetC1, targetC2) = arg max sim(ci, cj)
    merge(targetC1, targetC2)
end
  • クラスタ間類似度を図る方法が3つある
    1. 単連結
      • 2つのクラスタ内で、最も事例同士の類似度が高い事例同士の類似度をクラスタ間類似度として代表して扱う
    2. 完全連結
      • 2つのクラスタ内で、最も事例同士の類似度が低い事例同士の類似度をクラスタ間類似度として代表して扱う
    3. 重心法
      • そのクラスタの重心ベクトル同士の事例類似度を代表して扱う
      • 計算が早い
  • 練習問題を解くのがはやい

k-means

  • 最終的にいくつのクラスタに分けるのかは人間が適当に決める
  • 流れ
    1. まず、k個のクラスタそれぞれの代表ベクトルを適当に設定する
      • この初期値の置き方が精度・計算速度ともに影響をあたえるので重要
      • 凝集度クラスタの結果から置いたりする
    2. 各事例を、最も類似度の高い代表値をもつクラスタに振り分ける
    3. クラスタの代表値を、クラスタに属する事例の平均ベクトルに更新する
    4. 事例の移動がなくなるまで2→3を繰り返す
  • 練習問題をとくのが早い

混合正規分布によるクラスタリング

  • k-meansをもう少し柔軟にしたもの
  • 事例の所属クラスタを一意に決めず、「あるクラスタにはa%, あるクラスタにはb%...所属する」と、所属の度合いを持たせる
  • 代表値の更新時にはその所属度合いを勘案して更新する
  • 計算は常に微細な値が更新されるため終わりはなく、大体は更新量が小さくなったときに終わらせる

EMアルゴリズム

クラスタリングの問題点

  • クラスタリングで出来上がったクラスタがどういった意味を持つのかはわからない
  • クラスタ数をいくつにするのか、適切な決定方法はない
  • クラスタリングを評価する指標はない
    • なぜならば、明示的な意味を持ったクラスタリングはできないから

shareシェアする

forumコメント

まだコメントはありません!
ログインしてコメントを残す
{{comment.user.name}} on {{commentCreatedAt()}}

content_copy前後のイシュー

{{message}}