Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

K-meansクラスタリングで何かつくる

15,036 views

Published on

「PRML勉強会 #6 @筑波大学」の発表資料

Published in: Engineering
  • Be the first to comment

K-meansクラスタリングで何かつくる

  1. 1. K-meansクラスタリングで 何かつくる プルさわ(@oscillograph) PRML勉強会 #6 @筑波大学 12015/7/31 PRML勉強会 #6 @筑波大学
  2. 2. おしながき 1. 自己紹介 2. K-meansとは何ぞや 3. 主成分分析でできること(概要のみ) 4. 文書はどのように多次元データとして 扱われるか(簡単な説明のみ) 5. こんなシステムを作った 22015/7/31 PRML勉強会 #6 @筑波大学
  3. 3. 【自己紹介】 プルさわ @oscillograph • 本業:図書館情報学 図書館のレファレンスサービスの研究 ⇒図書館のカウンターで質問できるやつ • 趣味でPRML的な活動をやっている 人工知能、情報検索、画像認識、(自然言語処理) • 好きな言語 Ruby, Python, C#, 中国語, VBA 32015/7/31 PRML勉強会 #6 @筑波大学
  4. 4. K-means ㊦p.140~144 42015/7/31 PRML勉強会 #6 @筑波大学
  5. 5. K-meansクラスタリング(×クラス分類) • クラスタリングとは 教師データ(このクラスタはこんなデータがあ るよという例)を用いずに、データ集合の各 データがどのクラスタに属するか決定する • おおざっぱに データ集合をいくつかのまとまりに分ける 52015/7/31 PRML勉強会 #6 @筑波大学
  6. 6. K-meansでしたいこと • N個のデータをK個のクラスタに分割したい =あるデータを特定のクラスタに対応させたい x2 x3 x1 x4 x5 x6 K-means k=2, x2 k=2, x3 k=1, x1 k=1, x4 k=1, x5 k=2, x6 62015/7/31 PRML勉強会 #6 @筑波大学
  7. 7. K-meansの定式化(準備①) • データ集合 𝐷 𝑥 = 𝒙1, 𝒙2 , … , 𝒙 𝑁 • プロトタイプ(クラスタの中心点) 𝐷𝜇 = 𝝁1, 𝝁2 , … , 𝝁 𝐾 (通常K<N) • 二値指示変数(あるデータxnがクラスタkなら1) 𝑟𝑛𝑘 ∈ 0, 1 (𝑘 = 1, 2, … , 𝐾) 72015/7/31 PRML勉強会 #6 @筑波大学
  8. 8. K-meansの定式化(準備②) • 目的関数(歪み尺度) 𝐽 = 𝑟𝑛𝑘 𝒙 𝑛 − 𝝁 𝑘 2 𝐾 𝑛=1 𝑁 𝑛=1 • 目的 J を最小にする以下の2つの値を求める • 𝐷𝜇 = 𝝁1, 𝝁2 , … , 𝝁 𝑁 • 𝑟𝑛𝑘 ∈ 0, 1 特定のクラスタの中心点 と 特定のクラスタに所属する データ集合 との二乗距離の総和 二乗距離 そのデータ点が特定クラスタに所属するかどうか 82015/7/31 PRML勉強会 #6 @筑波大学
  9. 9. アルゴリズム的な(最適解を求める手続き) 以下の2つのステップを収束するまで 交互に繰り返す ※最初に𝝁 𝑘の初期値を選ぶ 1. E(Expectation)ステップ 𝝁 𝑘を固定しつつ 𝑟𝑛𝑘についてJを最小化する 2. M(Maximization)ステップ 𝑟𝑛𝑘を固定しつつ𝝁 𝑘についてJを最小化する 92015/7/31 PRML勉強会 #6 @筑波大学
  10. 10. 1. 𝑟𝑛𝑘の決定 • N番目のデータから最も近いクラスター 中心を割り当てる 𝑟𝑛𝑘 = 1 𝑘 = arg 𝑚𝑖𝑛𝑗 𝑿 𝑛 − 𝝁 𝑗 2 0 それ以外 X1 μ2 μ1 μ3 こんな感じの例の場合 𝑟11 = 0 𝑟12 = 1 𝑟13 = 0 という感じになりますね! 102015/7/31 PRML勉強会 #6 @筑波大学
  11. 11. 2. 𝑟𝑛𝑘を固定して𝝁 𝑘の最適化 Jが𝝁 𝑘の二次関数なので、𝝁 𝑘に関する偏微分 を0とおくと以下の式が求まる 2 𝑟𝑛𝑘 𝑿 𝑛 − 𝝁 𝑘 𝑁 𝑛=1 = 0 上の式を𝝁 𝑘について解いて以下の式を得る 𝝁 𝑘 = 𝑟𝑛𝑘 𝑿 𝑛𝑛 𝑟𝑛𝑘𝑛 112015/7/31 PRML勉強会 #6 @筑波大学
  12. 12. 𝝁 𝑘の意味するところ 𝝁 𝑘 = 𝑟𝑛𝑘 𝑿 𝑛𝑛 𝑟𝑛𝑘𝑛 を見ると、分母は「クラスタkに割り当てら れたデータの個数」、分子は「クラスタkに 割り当てられたデータの合計」とみれる ⇒平均(means)ぽい式になっている…! 122015/7/31 PRML勉強会 #6 @筑波大学
  13. 13. そして繰り返す 先ほど求めた𝝁 𝑘をまた初期値として𝑟𝑛𝑘を 求め、そして𝝁 𝑘を求め… 収束するまで、もしくは一定回数繰り返す ※収束は保障されている(証明は略) MacQueen, J. (1967, June). Some methods for classification and analysis of multivariate observations. In Proceedings of the fifth Berkeley symposium on mathematical statistics and probability (Vol. 1, No. 14, pp. 281-297). URL:http://www.umiacs.umd.edu/~raghuram/ENEE731/Spectr al/kMeans.pdf 局所解への収束に注意! 132015/7/31 PRML勉強会 #6 @筑波大学
  14. 14. K-meansまとめ • 以下のアルゴリズムで求まる! 1. クラスタ中心点群(プロトタイプ: 𝝁1, 𝝁2 , … , 𝝁 𝑁 )の初期値を設定 2. 二値指示変数(𝑟𝑛𝑘)を求める 3. プロトタイプを計算、更新 4. 2~3を収束するまで、もしくは一定回数 繰り返す 142015/7/31 PRML勉強会 #6 @筑波大学
  15. 15. 具体的に見てみる nitoyon (にとよん)さん 「K-means 法を D3.js で ビジュアライズしてみた」 てっく煮ブログ URL:http://tech.nitoyon. com/ja/blog/2013/11/07 /k-means/ 152015/7/31 PRML勉強会 #6 @筑波大学
  16. 16. K-meansの補足① • K-meansの実行速度(ちょいと遅い) 解決策(詳しくは㊦p.143を…): 元データに細工したり、計算で不等式を利用したり • 二乗ユークリッド距離以外の非類似度を使う 𝐽 = 𝑟𝑛𝑘 𝜈 𝐾 𝑛=1 𝑁 𝑛=1 (𝑋 𝑛, 𝜇 𝑘) 上記のJを最小化する、K-medoidsアルゴリズ ム(K-medoids algorithm)と呼ばれる より一般的な非類似度 162015/7/31 PRML勉強会 #6 @筑波大学
  17. 17. K-meansの補足② EMアルゴリズムへの道 • K-meansだと各データ点がただ1つのクラスタ にバシっと決まってしまう(ハード割り当て) • それもいいけれど、クラスタの割り当てをもう ちょっと確率的にやりたい(ソフト割り当て) • そこで、EMアルゴリズムです!詳細は割愛… (㊦p.151~) 172015/7/31 PRML勉強会 #6 @筑波大学
  18. 18. 主成分分析 PCA: Principal component analysis 182015/7/31 PRML勉強会 #6 @筑波大学
  19. 19. 主成分分析:概要(㊦p.277) • 主成分分析でできること! • 次元削減←今回作ったシステムの用途 • 非可逆データ圧縮 • 特徴抽出 • データの可視化 • 工学や通信系などの分野ではKL変換と 言ったりします 192015/7/31 PRML勉強会 #6 @筑波大学
  20. 20. K-meansの説明で疲れてしまった + スライドが長すぎる ので詳細はカットしました。 しかしPCAは大好きな手法なので、 次回(かわからんけどいつか) 発表したいと思います。 202015/7/31 PRML勉強会 #6 @筑波大学
  21. 21. 文書はどのように多次元データ として扱われるか 色々な方法のうち1例を紹介 212015/7/31 PRML勉強会 #6 @筑波大学
  22. 22. bag of words モデル • 各データ=各文(書) • 一つの文書にどのような単語が表れるか 文書ズ 文書ベクトルズ (Document-term matrix Matrix) 文書 寿司 エビ 焼肉 卵 ご飯 A 1 0 0 0 0 B 0 1 0 1 1 C 4 0 2 0 0 222015/7/31 PRML勉強会 #6 @筑波大学
  23. 23. 文書もベクトル空間に配置できる! • 例えば、3つの語から構成される空間 (「私」の出現回数,「好き」の出現回数,「寿司」の出現回数) 私 好き 寿司 それぞれの文書は3次元の ベクトルになってますね! 距離なんかも定義可能! (2, 1, 0) (3, 1, 2) 232015/7/31 PRML勉強会 #6 @筑波大学
  24. 24. まとめ • 文書も一工夫するとベクトルとして定義で きて、数学的な演算がバリバリ適用できる • こんな大雑把な特徴でも意外と良い感じ クラスタリングしたときに同じような文章がき ちんとまとまったり、機械学習でクラス分類し たときに割と良く分類できたり • 他にもいろんな特徴の取り方(ベクトル化 の方法)があります 242015/7/31 PRML勉強会 #6 @筑波大学
  25. 25. 応用! こんなシステムを作った 文書群のクラスタリング+ラベル付けを自動化 252015/7/31 PRML勉強会 #6 @筑波大学
  26. 26. 困っていること(なぜ作ったか) ワタシ 機械学習 チョット デキル 欲しい論文を探せない キーワードがなかなか思いつかない! 論文や概念を体系付けられない! 262015/7/31 PRML勉強会 #6 @筑波大学
  27. 27. こんなシステムが欲しかった 超仕事できる人が大量の論文に目を通して良 い感じにまとめて、良い感じにラベル付して くれる感じ 人工知能 レシピ推薦 渋滞学 ロンブン ヨンデ マトメトイタヨ ツイデニ ラベル ツケトイタヨ 272015/7/31 PRML勉強会 #6 @筑波大学
  28. 28. 概要 1. 論文データ 人工知能系の論文(“Web of Science”から約1000件) 2. クラスタリング 単語の出現を特徴量として、文書ベクトルを作成 主成分分析を用いてベクトルの次元を圧縮 k-meansで論文を階層的にクラスタリング 3. ラベリング TF-IDFを元に文書群を特徴づけるようラベリング ※TF-IDFについてはまたの機会に説明します、悪しからず… 282015/7/31 PRML勉強会 #6 @筑波大学
  29. 29. クリックで木構造が展開するUIはJavascript(d3.js)で実装 「葉」をクリックするとそのクラスタの論文が表示される 292015/7/31 PRML勉強会 #6 @筑波大学 URL: http://p.frsw.net/dmt.html
  30. 30. 今日のまとめ 302015/7/31 PRML勉強会 #6 @筑波大学
  31. 31. こんなことを話しました • K-meansでクラスタリングできる • 主成分分析の効能 • 文書をベクトルとして扱う • 勉強した理論とかで、それっぽいシステム 作るのは楽しい! Thank you for listening! 312015/7/31 PRML勉強会 #6 @筑波大学

×