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.

はじパタLT3

3,705 views

Published on

Rで学ぶデータサイエンス 5 「パターン認識」
第3章 階層的クラスタリング

Published in: Technology
  • Be the first to comment

はじパタLT3

  1. 1. パターン認識 Rで学ぶデータサイエンス 第3章 2013/07/16 at リクルート(CodeIQ)
  2. 2. @kenchan0130_aki 学生ニート 働いたら負け 自然言語処理 得意になりたい言語:Ruby 俺だよ俺
  3. 3. @kenchan0130_aki 学生ニート 働いたら負け 自然言語処理 得意になりたい言語:Ruby 女の子と仲良くなれそう 俺だよ俺
  4. 4. @kenchan0130_aki 学生ニート 働いたら負け 自然言語処理 得意になりたい言語:Ruby 女の子と仲良くなれそう 俺だよ俺 Seleniumでスクレイピング楽しすぎワロタ\(^o^)/
  5. 5. パターン認識 第3章 階層的クラスタリング 第2章 k-平均法 第1章 判別能力の評価 第4章 混合正規分布モデル 第5章 判別分析 第6章 ロジスティック回帰 第7章 密度推定 第8章 k-近傍法 第9章 学習ベクトル量子化 第10章 決定木 第11章 サポートベクターマシン 第12章 正規化とパス追跡 アルゴリズム 第13章 ミニマックス確率マシン 第14章 集団学習 第15章 2値判別から多値判別へ
  6. 6. パターン認識 第3章 階層的クラスタリング 第2章 k-平均法 第1章 判別能力の評価 第4章 混合正規分布モデル 第5章 判別分析 第6章 ロジスティック回帰 第7章 密度推定 第8章 k-近傍法 第9章 学習ベクトル量子化 第10章 決定木 第11章 サポートベクターマシン 第12章 正規化とパス追跡 アルゴリズム 第13章 ミニマックス確率マシン 第14章 集団学習 第15章 2値判別から多値判別へ
  7. 7. クラスタ分析って?クラスタ分析って?
  8. 8. • あるデータ間(2つのベクトル間)の距離を, 何かしら定義します. クラスタ分析
  9. 9. • あるデータ間(2つのベクトル間)の距離を, 何かしら定義します. • その距離の近さでデータを分類する手法です. クラスタ分析
  10. 10. • あるデータ間(2つのベクトル間)の距離を, 何かしら定義します. • その距離の近さでデータを分類する手法です. • つまり, データの類似度に従ってグループ分けするこ とが目的です. クラスタ分析
  11. 11. • 大きくクラスタ分析は以下の2つに分類されます. クラスタ分析
  12. 12. • 大きくクラスタ分析は以下の2つに分類されます. クラスタ分析 1) 階層的クラスタリング クラスタリングしたいすべてのデータに対して距離を求め, 距離が短い順にデータをまとめる方法です.
  13. 13. • 大きくクラスタ分析は以下の2つに分類されます. クラスタ分析 1) 階層的クラスタリング クラスタリングしたいすべてのデータに対して距離を求め, 距離が短い順にデータをまとめる方法です. 2) 非階層的クラスタリング 分割結果が得られるようにデータを分類しなおすことを繰返し て, 最終的な分割結果を得る手法です.
  14. 14. • 帰属度を考慮する場合以下の2つに分けられます. クラスタ分析
  15. 15. • 帰属度を考慮する場合以下の2つに分けられます. クラスタ分析 1) ソフトクラスタリング データが複数のクラスタに属することを許すクラスタリング手法 です. データが各クラスタに属する度合いが出力となります. ex. 混合分布モデル, pLSI, NMF
  16. 16. • 帰属度を考慮する場合以下の2つに分けられます. クラスタ分析 1) ソフトクラスタリング データが複数のクラスタに属することを許すクラスタリング手法 です. データが各クラスタに属する度合いが出力となります. ex. 混合分布モデル, pLSI, NMF 2) ハードクラスタリング データがある1つのクラスタに属する形で出力されるクラスタリ ング手法です. 一般的にクラスタリングというとこちらを示すことが多いです.
  17. 17. 階層的クラスタリングのお話
  18. 18. • クラスタリングしたいすべてのデータに対して距 離を求め, 距離が短い順にデータをまとめる方法 です. 階層的クラスタリング
  19. 19. • クラスタリングしたいすべてのデータに対して距 離を求め, 距離が短い順にデータをまとめる方法 です. • 距離の求め方で色々名前が付いています. 階層的クラスタリング
  20. 20. • クラスタリングしたいすべてのデータに対して距 離を求め, 距離が短い順にデータをまとめる方法 です. • 距離の求め方で色々名前が付いています. • 全てに対して分析をかけるので, データの数が多 いとその分時間がかかってしまいます. 階層的クラスタリング
  21. 21. 距離のお話距離のお話 ∼データ間の場合∼∼データ間の場合∼
  22. 22. データ間の距離 • ユークリッド距離 一般的な平方距離. 各成分の差の2乗和の平方根. 各ベクトル成分は
  23. 23. データ間の距離 • ミンコフスキー距離 ユークリッド距離をq乗に一般化した距離. 各成分の差のq乗和のq乗根. 各ベクトル成分は
  24. 24. データ間の距離 • 最大距離 各成分の差の中での最大値. 各ベクトル成分は
  25. 25. データ間の距離 • マンハッタン距離 格子状に引かれた路に沿って移動するときの距離. 各成分の差の絶対値の和. 各ベクトル成分は
  26. 26. データ間の距離 • キャンベラ距離 原点付近での違い強調するように各座標軸における位置を考慮して マンハッタン距離を修正した距離. 各成分の絶対値の和に対する成分の差の絶対値の比の合計. 各ベクトル成分は
  27. 27. データ間の距離 • バイナリ距離 質的変数を対象とした距離. 各成分を0と1の2値とし, 少なくともどちらか一方が1である成分数 に対する一方のみである成分数の比率. 各ベクトル成分は
  28. 28. • データの性質に応じて適宜使い分ける必要があります. データ間の距離
  29. 29. • データの性質に応じて適宜使い分ける必要があります. • 単位の取り方で分析結果が異なることがあるため, デー タを正規化すると良い場合があります. データ間の距離
  30. 30. 距離のお話距離のお話 ∼クラスタ間の場合∼∼クラスタ間の場合∼
  31. 31. クラスタ間の距離 • 最短距離法 2つのクラスタに属するデータのうち, 最も近いデータ間の距離をク ラスタ間の距離とする方法. いくつかのデータからなるクラスタ 結合後の距離は以下の式で表されます.
  32. 32. クラスタ間の距離 • 最長距離法 2つのクラスタに属するデータのうち, 最も遠いデータ間の距離をク ラスタ間の距離とする方法. いくつかのデータからなるクラスタ 結合後の距離は以下の式で表されます.
  33. 33. クラスタ間の距離 • 群平均法 2つのクラスタに属するデータ間のすべての組合せの距離を求め, そ の平均値をクラスタ間の距離とする方法. いくつかのデータからなるクラスタ 結合後の距離は以下の式で表されます.
  34. 34. クラスタ間の距離 • McQuitty法 2つのクラスタを統合した場合に, 他のクラスタからの距離を単純平 均で算出する方法. いくつかのデータからなるクラスタ
  35. 35. クラスタ間の距離 • 重心法 各クラスタに含まれるデータの重心を用いてクラスタの距離を定義 する方法. いくつかのデータからなるクラスタ 結合後は以下の関係が成り立ちます.
  36. 36. クラスタ間の距離 • メディアン法 重心法と同様にクラスタを中心に用いて距離を定義し, クラスタ結合時に新たな重心を元の重心の中点に取る方法. いくつかのデータからなるクラスタ
  37. 37. クラスタ間の距離 • ウォード法 新しいデータがクラスタに加わるとき, 最も広がりが小さく抑えられ るクラスタにそのデータを加えてクラスタを形成する方法. いくつかのデータからなるクラスタ 結合後は以下の関係が成り立ちます.
  38. 38. • 最短距離法や最長距離法は外れ値などの影響を受けや すいです. クラスタ間の距離
  39. 39. • 最短距離法や最長距離法は外れ値などの影響を受けや すいです. • 1度だけ全ての2点間の距離を計算すればよいため, 計算 時間が短くて済みます. クラスタ間の距離
  40. 40. • 最短距離法や最長距離法は外れ値などの影響を受けや すいです. • 1度だけ全ての2点間の距離を計算すればよいため, 計算 時間が短くて済みます. • 群平均法やウォード法は鎖効果が起こりにくいです. クラスタ間の距離
  41. 41. • 最短距離法や最長距離法は外れ値などの影響を受けや すいです. • 1度だけ全ての2点間の距離を計算すればよいため, 計算 時間が短くて済みます. • 群平均法やウォード法は鎖効果が起こりにくいです. • クラスタを作るたびに距離を計算し直すため, 多量のデ ータに対して計算時間が増えることになります. クラスタ間の距離
  42. 42. クラスタ間の距離 巨大なクラスターが生じることを「鎖効果」といいます
  43. 43. で、codeはー?で、codeはー?
  44. 44. • データ間の距離を計算にはdist関数を用います. Rでの実装例
  45. 45. • データ間の距離を計算にはdist関数を用います. • methodオプションで, どの距離を使用するか選択で きます. Rでの実装例
  46. 46. • データ間の距離を計算にはdist関数を用います. • methodオプションで, どの距離を使用するか選択で きます. • デフォルトではユークリッド距離が選択されています. Rでの実装例
  47. 47. • データ間の距離を計算にはdist関数を用います. • methodオプションで, どの距離を使用するか選択で きます. • デフォルトではユークリッド距離が選択されています. Rでの実装例 - euclidean : ユークリッド距離 - maximum : 最大距離 - manhatttan : マンハッタン距離 - canberra : キャンベラ距離 - binary : バイナリ距離 - minkowski : ミンコフスキー距離
  48. 48. • データ間の距離を計算にはdist関数を用います. • methodオプションで, どの距離を使用するか選択で きます. • デフォルトではユークリッド距離が選択されています. Rでの実装例 - euclidean : ユークリッド距離 - maximum : 最大距離 - manhatttan : マンハッタン距離 - canberra : キャンベラ距離 - binary : バイナリ距離 - minkowski : ミンコフスキー距離
  49. 49. • クラスタ間の距離を計算にはhclust関数を用います. Rでの実装例
  50. 50. • クラスタ間の距離を計算にはhclust関数を用います. • methodオプションで, どの距離を使用するか選択で きます. Rでの実装例
  51. 51. • クラスタ間の距離を計算にはhclust関数を用います. • methodオプションで, どの距離を使用するか選択で きます. • デフォルトでは最長距離法が選択されています. Rでの実装例
  52. 52. • クラスタ間の距離を計算にはhclust関数を用います. • methodオプションで, どの距離を使用するか選択で きます. • デフォルトでは最長距離法が選択されています. Rでの実装例 - ward : ウォード法 - single : 最短距離法 - complete : 最長距離法 - average : 群平均法 - mcquitty : McQuitty法 - median : メディアン法 - centroid : 重心法
  53. 53. • クラスタ間の距離を計算にはhclust関数を用います. • methodオプションで, どの距離を使用するか選択で きます. • デフォルトでは最長距離法が選択されています. Rでの実装例 - ward : ウォード法 - single : 最短距離法 - complete : 最長距離法 - average : 群平均法 - mcquitty : McQuitty法 - median : メディアン法 - centroid : 重心法
  54. 54. Rでの実装例
  55. 55. Rでの実装例 距離の違いによる樹形図の相違 hOdhOdhOdhodhodhodhYdhYdhYdhedhedhedhadhadhadhadhudhudhudhudhUdhUdhUdhUdhUdhIdhIdhIdhidhidhEdhEdhAdhAdhAdhAd 02468 euclidean and complete hclust (*, "complete") dist(x) Height hIdhIdhIdhidhidhEdhEdhAdhAdhAdhAdhOdhOdhOdhodhodhodhYdhYdhYdhedhedhedhadhadhadhadhudhudhudhudhUdhUdhUdhUdhUd 051525 euclidean and ward hclust (*, "ward") dist(x) Height hAdhAdhAdhAdhidhidhIdhIdhIdhEdhEdhOdhOdhOdhodhodhodhYdhadhYdhYdhedhedhedhadhadhadhudhudhudhudhUdhUdhUdhUdhUd 0510152025 manhattan and complete hclust (*, "complete") dist(x, method = "manhattan") Height hEdhEdhAdhAdhAdhAdhIdhIdhIdhidhidhOdhOdhOdhodhodhodhYdhYdhYdhedhedhedhadhadhadhadhudhudhudhudhUdhUdhUdhUdhUd 020406080 manhattan and ward hclust (*, "ward") dist(x, method = "manhattan") Height
  56. 56. • ユークリッド距離を用いた最長距離法では, 他と比べ て鎖効果が多少強い樹形図が描かれています. Rでの実装例
  57. 57. • 樹系図をいくつかのグループに分割する方法として, rect.hclust関数があります. • 指定した分割数の長方形が描画されます. • 必要な部分木のみを取得することもできます. Rでの実装例
  58. 58. Rでの実装例
  59. 59. Rでの実装例 樹形図の分割(左)とその部分木(右) hOdhOdhodhudhIdhIdhEdhEdhidhidhudhIdhidhudhudhIdhIdhidhidhOdhYdhYdhAdhadhAdhEdhEdhEdhedhedhedhudhedhedhadhedhUdhadhodhodhodhUdhUdhodhodhYdhYdhudhudhudhOdhYdhOdhOdhYdhYdhedhedhedhUdhUdhUdhodhodhodhidhUdhUdhYdhYdhYdhAdhYdhEdhadhAdhAdhEdhEdhIdhEdhEdhudhudhYdhYdhedhedhedhidhidhIdhIdhidhIdhedhedhedhedhad 020406080100120140 Cluster Dendrogram hclust (*, "ward") dist(x, method = "manhattan") Height hUd hUd hUd hod hod hod hid hUd hUd 0246810121416 Cluster Dendrogram hclust (*, "ward") dist(x[grp[[7]], ], method = "manhattan") Height
  60. 60. 今日のまとめ今日のまとめ
  61. 61. まとめ • 階層的クラスタリングは, 全てのデータに対して距離を 計算するものでした.
  62. 62. まとめ • 階層的クラスタリングは, 全てのデータに対して距離を 計算するものでした. • 距離の計算方法によって計算量が変わります.
  63. 63. まとめ • 階層的クラスタリングは, 全てのデータに対して距離を 計算するものでした. • 距離の計算方法によって計算量が変わります. • データに分布を仮定したりしないので, 数学的にあまり 面倒な議論をしないでもOK.
  64. 64. まとめ • 階層的クラスタリングは, 全てのデータに対して距離を 計算するものでした. • 距離の計算方法によって計算量が変わります. • データに分布を仮定したりしないので, 数学的にあまり 面倒な議論をしないでもOK. • クラスタに分けたあとのクラスタ毎の意味付け頑張って 下さい^^ (←これが一番大変だと思います. )
  65. 65. まとめ • 階層的クラスタリングは, 全てのデータに対して距離を 計算するものでした. • 距離の計算方法によって計算量が変わります. • データに分布を仮定したりしないので, 数学的にあまり 面倒な議論をしないでもOK. • クラスタに分けたあとのクラスタ毎の意味付け頑張って 下さい^^ (←これが一番大変だと思います. ) • Rにはクラスタリングのための機能を提供する, cluster パッケージがあるので是非使ってみて下さい!
  66. 66. Have a nice clustering!!

×