はじパタlt3

68
パターン認識 Rで学ぶデータサイエンス 第3章 2013/07/16 at リクルート(CodeIQ)

Upload: tadayuki-onishi

Post on 24-May-2015

1.606 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: はじパタLT3

パターン認識Rで学ぶデータサイエンス

第3章2013/07/16

at リクルート(CodeIQ)

Page 2: はじパタLT3

@kenchan0130_aki

学生ニート

働いたら負け

自然言語処理

得意になりたい言語:Ruby

俺だよ俺

Page 3: はじパタLT3

@kenchan0130_aki

学生ニート

働いたら負け

自然言語処理

得意になりたい言語:Ruby 女の子と仲良くなれそう

俺だよ俺

Page 4: はじパタLT3

@kenchan0130_aki

学生ニート

働いたら負け

自然言語処理

得意になりたい言語:Ruby 女の子と仲良くなれそう

俺だよ俺

Seleniumでスクレイピング楽しすぎワロタ\(^o^)/

Page 5: はじパタLT3
Page 6: はじパタLT3
Page 7: はじパタLT3

パターン認識

第3章 階層的クラスタリング

第2章 k-平均法

第1章 判別能力の評価

第4章 混合正規分布モデル

第5章 判別分析

第6章 ロジスティック回帰

第7章 密度推定

第8章 k-近傍法

第9章 学習ベクトル量子化

第10章 決定木

第11章 サポートベクターマシン

第12章 正規化とパス追跡アルゴリズム

第13章 ミニマックス確率マシン

第14章 集団学習

第15章 2値判別から多値判別へ

Page 8: はじパタLT3

パターン認識

第3章 階層的クラスタリング

第2章 k-平均法

第1章 判別能力の評価

第4章 混合正規分布モデル

第5章 判別分析

第6章 ロジスティック回帰

第7章 密度推定

第8章 k-近傍法

第9章 学習ベクトル量子化

第10章 決定木

第11章 サポートベクターマシン

第12章 正規化とパス追跡アルゴリズム

第13章 ミニマックス確率マシン

第14章 集団学習

第15章 2値判別から多値判別へ

Page 9: はじパタLT3

クラスタ分析って?クラスタ分析って?

Page 10: はじパタLT3

• あるデータ間(2つのベクトル間)の距離を, 何かしら定義します.

クラスタ分析

Page 11: はじパタLT3

• あるデータ間(2つのベクトル間)の距離を, 何かしら定義します.

• その距離の近さでデータを分類する手法です.

クラスタ分析

Page 12: はじパタLT3

• あるデータ間(2つのベクトル間)の距離を, 何かしら定義します.

• その距離の近さでデータを分類する手法です.• つまり, データの類似度に従ってグループ分けすることが目的です.

クラスタ分析

Page 13: はじパタLT3

• 大きくクラスタ分析は以下の2つに分類されます.

クラスタ分析

Page 14: はじパタLT3

• 大きくクラスタ分析は以下の2つに分類されます.

クラスタ分析

1) 階層的クラスタリングクラスタリングしたいすべてのデータに対して距離を求め, 距離が短い順にデータをまとめる方法です.

Page 15: はじパタLT3

• 大きくクラスタ分析は以下の2つに分類されます.

クラスタ分析

1) 階層的クラスタリングクラスタリングしたいすべてのデータに対して距離を求め, 距離が短い順にデータをまとめる方法です.

2) 非階層的クラスタリング分割結果が得られるようにデータを分類しなおすことを繰返して, 最終的な分割結果を得る手法です.

Page 16: はじパタLT3

• 帰属度を考慮する場合以下の2つに分けられます.

クラスタ分析

Page 17: はじパタLT3

• 帰属度を考慮する場合以下の2つに分けられます.

クラスタ分析

1) ソフトクラスタリングデータが複数のクラスタに属することを許すクラスタリング手法です. データが各クラスタに属する度合いが出力となります. ex. 混合分布モデル, pLSI, NMF

Page 18: はじパタLT3

• 帰属度を考慮する場合以下の2つに分けられます.

クラスタ分析

1) ソフトクラスタリングデータが複数のクラスタに属することを許すクラスタリング手法です. データが各クラスタに属する度合いが出力となります. ex. 混合分布モデル, pLSI, NMF

2) ハードクラスタリングデータがある1つのクラスタに属する形で出力されるクラスタリング手法です. 一般的にクラスタリングというとこちらを示すことが多いです.

Page 19: はじパタLT3

階層的クラスタリングのお話

Page 20: はじパタLT3

• クラスタリングしたいすべてのデータに対して距離を求め, 距離が短い順にデータをまとめる方法です.

階層的クラスタリング

Page 21: はじパタLT3

• クラスタリングしたいすべてのデータに対して距離を求め, 距離が短い順にデータをまとめる方法です.

• 距離の求め方で色々名前が付いています.

階層的クラスタリング

Page 22: はじパタLT3

• クラスタリングしたいすべてのデータに対して距離を求め, 距離が短い順にデータをまとめる方法です.

• 距離の求め方で色々名前が付いています. • 全てに対して分析をかけるので, データの数が多いとその分時間がかかってしまいます.

階層的クラスタリング

Page 23: はじパタLT3

距離のお話距離のお話~データ間の場合~~データ間の場合~

Page 24: はじパタLT3

データ間の距離

• ユークリッド距離一般的な平方距離. 各成分の差の2乗和の平方根.

各ベクトル成分は

Page 25: はじパタLT3

データ間の距離

• ミンコフスキー距離ユークリッド距離をq乗に一般化した距離. 各成分の差のq乗和のq乗根.

各ベクトル成分は

Page 26: はじパタLT3

データ間の距離

• 最大距離各成分の差の中での最大値.

各ベクトル成分は

Page 27: はじパタLT3

データ間の距離

• マンハッタン距離格子状に引かれた路に沿って移動するときの距離.各成分の差の絶対値の和.

各ベクトル成分は

Page 28: はじパタLT3

データ間の距離

• キャンベラ距離原点付近での違い強調するように各座標軸における位置を考慮してマンハッタン距離を修正した距離.各成分の絶対値の和に対する成分の差の絶対値の比の合計.

各ベクトル成分は

Page 29: はじパタLT3

データ間の距離

• バイナリ距離質的変数を対象とした距離. 各成分を0と1の2値とし, 少なくともどちらか一方が1である成分数に対する一方のみである成分数の比率.

各ベクトル成分は

Page 30: はじパタLT3

• データの性質に応じて適宜使い分ける必要があります.

データ間の距離

Page 31: はじパタLT3

• データの性質に応じて適宜使い分ける必要があります.

• 単位の取り方で分析結果が異なることがあるため, データを正規化すると良い場合があります.

データ間の距離

Page 32: はじパタLT3

距離のお話距離のお話~クラスタ間の場合~~クラスタ間の場合~

Page 33: はじパタLT3

クラスタ間の距離

• 最短距離法2つのクラスタに属するデータのうち, 最も近いデータ間の距離をクラスタ間の距離とする方法.

いくつかのデータからなるクラスタ

結合後の距離は以下の式で表されます.

Page 34: はじパタLT3

クラスタ間の距離

• 最長距離法2つのクラスタに属するデータのうち, 最も遠いデータ間の距離をクラスタ間の距離とする方法.

いくつかのデータからなるクラスタ

結合後の距離は以下の式で表されます.

Page 35: はじパタLT3

クラスタ間の距離

• 群平均法2つのクラスタに属するデータ間のすべての組合せの距離を求め, その平均値をクラスタ間の距離とする方法.

いくつかのデータからなるクラスタ

結合後の距離は以下の式で表されます.

Page 36: はじパタLT3

クラスタ間の距離

• McQuitty法2つのクラスタを統合した場合に, 他のクラスタからの距離を単純平均で算出する方法.

いくつかのデータからなるクラスタ

Page 37: はじパタLT3

クラスタ間の距離

• 重心法各クラスタに含まれるデータの重心を用いてクラスタの距離を定義する方法.

いくつかのデータからなるクラスタ

結合後は以下の関係が成り立ちます.

Page 38: はじパタLT3

クラスタ間の距離

• メディアン法重心法と同様にクラスタを中心に用いて距離を定義し, クラスタ結合時に新たな重心を元の重心の中点に取る方法.

いくつかのデータからなるクラスタ

Page 39: はじパタLT3

クラスタ間の距離

• ウォード法新しいデータがクラスタに加わるとき, 最も広がりが小さく抑えられるクラスタにそのデータを加えてクラスタを形成する方法.

いくつかのデータからなるクラスタ

結合後は以下の関係が成り立ちます.

Page 40: はじパタLT3

• 最短距離法や最長距離法は外れ値などの影響を受けやすいです.

クラスタ間の距離

Page 41: はじパタLT3

• 最短距離法や最長距離法は外れ値などの影響を受けやすいです.

• 1度だけ全ての2点間の距離を計算すればよいため, 計算時間が短くて済みます.

クラスタ間の距離

Page 42: はじパタLT3

• 最短距離法や最長距離法は外れ値などの影響を受けやすいです.

• 1度だけ全ての2点間の距離を計算すればよいため, 計算時間が短くて済みます.

• 群平均法やウォード法は鎖効果が起こりにくいです.

クラスタ間の距離

Page 43: はじパタLT3

• 最短距離法や最長距離法は外れ値などの影響を受けやすいです.

• 1度だけ全ての2点間の距離を計算すればよいため, 計算時間が短くて済みます.

• 群平均法やウォード法は鎖効果が起こりにくいです. • クラスタを作るたびに距離を計算し直すため, 多量のデータに対して計算時間が増えることになります.

クラスタ間の距離

Page 44: はじパタLT3

クラスタ間の距離

巨大なクラスターが生じることを「鎖効果」といいます

Page 45: はじパタLT3

で、codeはー?で、codeはー?

Page 46: はじパタLT3

• データ間の距離を計算にはdist関数を用います.

Rでの実装例

Page 47: はじパタLT3

• データ間の距離を計算にはdist関数を用います. • methodオプションで, どの距離を使用するか選択できます.

Rでの実装例

Page 48: はじパタLT3

• データ間の距離を計算にはdist関数を用います. • methodオプションで, どの距離を使用するか選択できます.

• デフォルトではユークリッド距離が選択されています.

Rでの実装例

Page 49: はじパタLT3

• データ間の距離を計算にはdist関数を用います. • methodオプションで, どの距離を使用するか選択できます.

• デフォルトではユークリッド距離が選択されています.

Rでの実装例

- euclidean : ユークリッド距離- maximum : 最大距離- manhatttan : マンハッタン距離- canberra : キャンベラ距離- binary : バイナリ距離- minkowski : ミンコフスキー距離

Page 50: はじパタLT3

• データ間の距離を計算にはdist関数を用います. • methodオプションで, どの距離を使用するか選択できます.

• デフォルトではユークリッド距離が選択されています.

Rでの実装例

- euclidean : ユークリッド距離- maximum : 最大距離- manhatttan : マンハッタン距離- canberra : キャンベラ距離- binary : バイナリ距離- minkowski : ミンコフスキー距離

Page 51: はじパタLT3

• クラスタ間の距離を計算にはhclust関数を用います.

Rでの実装例

Page 52: はじパタLT3

• クラスタ間の距離を計算にはhclust関数を用います. • methodオプションで, どの距離を使用するか選択できます.

Rでの実装例

Page 53: はじパタLT3

• クラスタ間の距離を計算にはhclust関数を用います. • methodオプションで, どの距離を使用するか選択できます.

• デフォルトでは最長距離法が選択されています.

Rでの実装例

Page 54: はじパタLT3

• クラスタ間の距離を計算にはhclust関数を用います. • methodオプションで, どの距離を使用するか選択できます.

• デフォルトでは最長距離法が選択されています.

Rでの実装例

- ward : ウォード法- single : 最短距離法- complete : 最長距離法- average : 群平均法- mcquitty : McQuitty法- median : メディアン法- centroid : 重心法

Page 55: はじパタLT3

• クラスタ間の距離を計算にはhclust関数を用います. • methodオプションで, どの距離を使用するか選択できます.

• デフォルトでは最長距離法が選択されています.

Rでの実装例

- ward : ウォード法- single : 最短距離法- complete : 最長距離法- average : 群平均法- mcquitty : McQuitty法- median : メディアン法- centroid : 重心法

Page 56: はじパタLT3

Rでの実装例

Page 57: はじパタLT3

Rでの実装例

距離の違いによる樹形図の相違

hOd

hOdhOd

hod

hod

hod hYd

hYd

hYd

hed

hed

hed had

had

had

had hud

hud

hud

hud hUd

hUdhUd

hUd

hUd

hId

hId

hId hid hid

hEd

hEd

hAd

hAd

hAd

hAd

02

46

8

euclidean and complete

hclust (*, "complete")dist(x)

Height

hId

hId

hId hid

hid

hEd

hEd

hAd

hAd

hAd

hAd

hOd

hOd hOd

hod

hod

hodhYd

hYd

hYd

hed

hed

hedhad

had

had

had

hud

hud

hud

hud

hUd

hUd

hUd

hUd

hUd

05

1525

euclidean and ward

hclust (*, "ward")dist(x)

Height

hAd

hAd

hAd

hAd hid

hid

hId

hId

hId hEd

hEd

hOd

hOd hOd

hod

hod

hodhYd

had

hYd

hYd

hed

hed

hed had

had

had

hud

hud

hud

hud hUd

hUd

hUd

hUd

hUd

05

1015

2025

manhattan and complete

hclust (*, "complete")dist(x, method = "manhattan")

Height

hEd

hEd

hAd

hAd

hAd

hAd

hId

hId

hId hid

hid

hOd

hOdhOd

hod

hod

hod

hYd

hYd

hYd

hed

hed

hed

had

had

had

had

hud

hud

hud

hud

hUd

hUd

hUd

hUd

hUd

020

4060

80

manhattan and ward

hclust (*, "ward")dist(x, method = "manhattan")

Height

Page 58: はじパタLT3

• ユークリッド距離を用いた最長距離法では, 他と比べて鎖効果が多少強い樹形図が描かれています.

Rでの実装例

Page 59: はじパタLT3

• 樹系図をいくつかのグループに分割する方法として, rect.hclust関数があります.

• 指定した分割数の長方形が描画されます. • 必要な部分木のみを取得することもできます.

Rでの実装例

Page 60: はじパタLT3

Rでの実装例

Page 61: はじパタLT3

Rでの実装例

樹形図の分割(左)とその部分木(右)

hOd

hOd

hod

hud

hId

hId

hEd

hEd hid

hid hud

hId

hid

hud

hud hId

hId hid

hid

hOd

hYd

hYd

hAd

had

hAd hEd

hEd

hEd

hed

hed

hed hud

hed

hed had

hed

hUd

had

hod

hodhod

hUd

hUd

hod

hod

hYd

hYd

hud

hud

hud hOd

hYd

hOd

hOd

hYd

hYdhed

hed

hed hUd

hUd

hUd hod

hod

hod hid

hUd

hUd hYd

hYd

hYd

hAd

hYd

hEd

had

hAd

hAd

hEd

hEd hId

hEd

hEd hud

hud

hYd

hYd hed

hed

hed hid

hid

hId

hId hid

hId

hed

hed hed

hed

had

020

4060

80100

120

140

Cluster Dendrogram

hclust (*, "ward")dist(x, method = "manhattan")

Height

hUd

hUd

hUd

hod

hod

hod

hid

hUd

hUd0

24

68

1012

1416

Cluster Dendrogram

hclust (*, "ward")dist(x[grp[[7]], ], method = "manhattan")

Height

Page 62: はじパタLT3

今日のまとめ今日のまとめ

Page 63: はじパタLT3

まとめ

• 階層的クラスタリングは, 全てのデータに対して距離を計算するものでした.

Page 64: はじパタLT3

まとめ

• 階層的クラスタリングは, 全てのデータに対して距離を計算するものでした.

• 距離の計算方法によって計算量が変わります.

Page 65: はじパタLT3

まとめ

• 階層的クラスタリングは, 全てのデータに対して距離を計算するものでした.

• 距離の計算方法によって計算量が変わります. • データに分布を仮定したりしないので, 数学的にあまり面倒な議論をしないでもOK.

Page 66: はじパタLT3

まとめ

• 階層的クラスタリングは, 全てのデータに対して距離を計算するものでした.

• 距離の計算方法によって計算量が変わります. • データに分布を仮定したりしないので, 数学的にあまり面倒な議論をしないでもOK.

• クラスタに分けたあとのクラスタ毎の意味付け頑張って下さい^^ (←これが一番大変だと思います. )

Page 67: はじパタLT3

まとめ

• 階層的クラスタリングは, 全てのデータに対して距離を計算するものでした.

• 距離の計算方法によって計算量が変わります. • データに分布を仮定したりしないので, 数学的にあまり面倒な議論をしないでもOK.

• クラスタに分けたあとのクラスタ毎の意味付け頑張って下さい^^ (←これが一番大変だと思います. )

• Rにはクラスタリングのための機能を提供する, clusterパッケージがあるので是非使ってみて下さい!

Page 68: はじパタLT3

Have a nice clustering!!