はじパタlt2

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

Upload: tadayuki-onishi

Post on 18-Dec-2014

1.450 views

Category:

Technology


4 download

DESCRIPTION

Rで学ぶデータサイエンス 5 「パターン認識」 第2章 k-平均法

TRANSCRIPT

Page 1: はじパタLT2

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

第2章2013/07/02

at リクルート(CodeIQ)

Page 2: はじパタLT2

@kenchan0130_aki

学生ニート

働いたら負け

自然言語処理

得意になりたい言語:Ruby

自己紹介

Page 3: はじパタLT2

@kenchan0130_aki

学生ニート

働いたら負け

自然言語処理

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

自己紹介

Page 4: はじパタLT2

@kenchan0130_aki

学生ニート

働いたら負け

自然言語処理

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

自己紹介

とりあえずsinatraでwebアプリは作れるようになった

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

パターン認識

第2章 k-平均法

第1章 判別能力の評価

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

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

第5章 判別分析

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

第7章 密度推定

第8章 k-近傍法

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

第10章 決定木

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

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

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

第14章 集団学習

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

Page 8: はじパタLT2

パターン認識

第2章 k-平均法

第1章 判別能力の評価

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

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

第5章 判別分析

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

第7章 密度推定

第8章 k-近傍法

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

第10章 決定木

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

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

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

第14章 集団学習

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

Page 9: はじパタLT2

クラスタリングのお話

by : DGtal Plus Art & Photo

Page 10: はじパタLT2

• データをいくつかの『まとまり』に分け, これをクラスタと呼びます.

クラスタリング

Page 11: はじパタLT2

• データをいくつかの『まとまり』に分け, これをクラスタと呼びます.

• クラスタリングは, データのまとまり具合を捉えて, そこから何かしらの情報を引き出す方法です.

クラスタリング

Page 12: はじパタLT2

• クラスタリングを実行するときに以下の2つを決める必要があります.

クラスタリング

Page 13: はじパタLT2

• クラスタリングを実行するときに以下の2つを決める必要があります.

クラスタリング

1) データ間の類似度をどう測るか? → 例えばユークリッド距離

Page 14: はじパタLT2

• クラスタリングを実行するときに以下の2つを決める必要があります.

クラスタリング

1) データ間の類似度をどう測るか? → 例えばユークリッド距離

2) 何個のクラスタに分類するか?クラスタリングの結果からクラスタ数を調整して, 様々なパターンを試行錯誤する必要も出てきます.

Page 15: はじパタLT2

k-平均法のお話

Page 16: はじパタLT2

• 俗にいう「k-means」のことです.

k-平均法

Page 17: はじパタLT2

• 俗にいう「k-means」のことです.• クラスタリング手法の一つとして広く使われています. (巷では定番らしい)

k-平均法

Page 18: はじパタLT2

• 俗にいう「k-means」のことです.• クラスタリング手法の一つとして広く使われています. (巷では定番らしい)

• 割りと確からしい結果を返してきてくれます.

k-平均法

Page 19: はじパタLT2

• 俗にいう「k-means」のことです.• クラスタリング手法の一つとして広く使われています. (巷では定番らしい)

• 割りと確からしい結果を返してきてくれます.• 初期値の取り方で結果が変わります.

k-平均法

Page 20: はじパタLT2

k-平均法

k-meansのアルゴリズム

Page 21: はじパタLT2

k-平均法

k-meansのアルゴリズム

Page 22: はじパタLT2

• k-meansは, 評価関数 を最小化することで代表ベクトルを求めています.

k-平均法

Page 23: はじパタLT2

• k-meansは, 評価関数 を最小化することで代表ベクトルを求めています.

k-平均法

• データに対応する代表ベクトルの間の距離の2乗和です. • クラスタの代表ベクトルの周りに, そのクラスタに属するデータが集まっていれば, の値は小さくなります.

Page 24: はじパタLT2

そんなこと言われてもワカンネ(しかも英語で書いてあるし...)

by:hapal

Page 25: はじパタLT2

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 26: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 27: はじパタLT2

k-平均法

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

試しにk=2でk-meansを行ってみましょう

Page 28: はじパタLT2

k-平均法

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

試しにk=2でk-meansを行ってみましょう

Page 29: はじパタLT2

k-平均法

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

試しにk=2でk-meansを行ってみましょう

Page 30: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 31: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 32: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 33: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 34: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 35: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 36: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 37: はじパタLT2

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

k-平均法

試しにk=2でk-meansを行ってみましょう

Page 38: はじパタLT2

k-平均法

試しにk=2でk-meansを行ってみましょう

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

Page 39: はじパタLT2

k-平均法

試しにk=2でk-meansを行ってみましょう

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y

Page 40: はじパタLT2

k-平均法

試しにk=2でk-meansを行ってみましょう

1 2 3 4 5

0.0

1.0

2.0

3.0

x

y こんな感じです。

Page 41: はじパタLT2

で、codeはー?

by : DGtal Plus Art & Photo

Page 42: はじパタLT2

• みんな大好きirisデータ

Rでの実装例

Page 43: はじパタLT2

• みんな大好きirisデータ• Fisherの研究で使われた, あやめ150サンプルです.

Rでの実装例

Page 44: はじパタLT2

• みんな大好きirisデータ• Fisherの研究で使われた, あやめ150サンプルです.

Rでの実装例

- Sepal.Length : がく片の長さ- Sepal.Width : がく片の幅- Petal.Length : 花びらの長さ- Petal.Width : 花びらの幅- Species : 品種(setosa, versicolor, viginica)

Page 45: はじパタLT2

• みんな大好きirisデータ• Fisherの研究で使われた, あやめ150サンプルです.

Rでの実装例

- Sepal.Length : がく片の長さ- Sepal.Width : がく片の幅- Petal.Length : 花びらの長さ- Petal.Width : 花びらの幅- Species : 品種(setosa, versicolor, viginica)

Page 46: はじパタLT2

• statsパッケージ(デフォルトで入ってます)に「kmeans」関数が用意されています.

Rでの実装例

Page 47: はじパタLT2

• statsパッケージ(デフォルトで入ってます)に「kmeans」関数が用意されています.

• nstartオプションは複数の初期値を試せるが, 増やすとその分計算時間がかかります.

Rでの実装例

Page 48: はじパタLT2

• statsパッケージ(デフォルトで入ってます)に「kmeans」関数が用意されています.

• nstartオプションは複数の初期値を試せるが, 増やすとその分計算時間がかかります.

Rでの実装例

Page 49: はじパタLT2

Rでの実装例

Sepal.Length

2.0 3.0 4.0 0.5 1.5 2.5

4.5

6.0

7.5

2.0

3.0

4.0

Sepal.Width

Petal.Length

13

57

4.5 6.0 7.5

0.5

1.5

2.5

1 3 5 7

Petal.Width

k=3におけるk-meansによる, irisデータのクラスタリング

Page 50: はじパタLT2

by :Kr. B.

で、どうやってクラスタ数きめればいいの?

Page 51: はじパタLT2

• 高次元のデータも視覚化すればクラスタ判断できるのでは?

次元削減による視覚化

Page 52: はじパタLT2

• 高次元のデータも視覚化すればクラスタ判断できるのでは? • よく使われるのが, 皆さんご存知「主成分分析」です.

次元削減による視覚化

Page 53: はじパタLT2

• 高次元のデータも視覚化すればクラスタ判断できるのでは? • よく使われるのが, 皆さんご存知「主成分分析」です. • ここでは, 主成分分析を非線形化した『カーネル主成分分析』を使ってみます.

次元削減による視覚化

Page 54: はじパタLT2

• 高次元のデータも視覚化すればクラスタ判断できるのでは? • よく使われるのが, 皆さんご存知「主成分分析」です. • ここでは, 主成分分析を非線形化した『カーネル主成分分析』を使ってみます.

• kernlabパッケージに「kpca」関数が用意されています.

次元削減による視覚化

Page 55: はじパタLT2

• ガウスカーネルの の選び方は, データ間の距離の中央値を とするとき, 付近の値を用いると良い結果が得られるそうです.

• 「pcv」関数で, 固有ベクトル空間へ射影した結果が得られます.

次元削減による視覚化

Page 56: はじパタLT2

次元削減による視覚化

X1

-0.8 -0.4 0.0 0.4

-0.2

0.0

0.1

-0.8

-0.4

0.0

0.4

X2

-0.2 0.0 0.1 -2 -1 0 1 2

-2-1

01

2

X3

カーネル主成分分析の第3主成分までのプロット

Page 57: はじパタLT2

次元削減による視覚化

X1

-0.8 -0.4 0.0 0.4

-0.2

0.0

0.1

-0.8

-0.4

0.0

0.4

X2

-0.2 0.0 0.1 -2 -1 0 1 2

-2-1

01

2

X3

カーネル主成分分析の第3主成分までのプロット

• 第1, 2主成分より, データが大きく2つのクラスタに分かれていることがわかります.

Page 58: はじパタLT2

次元削減による視覚化

X1

-0.8 -0.4 0.0 0.4

-0.2

0.0

0.1

-0.8

-0.4

0.0

0.4

X2

-0.2 0.0 0.1 -2 -1 0 1 2

-2-1

01

2

X3

カーネル主成分分析の第3主成分までのプロット

• 第1, 2主成分より, データが大きく2つのクラスタに分かれていることがわかります.

• 第2, 3主成分より, 3つくらいのクラスタに分かれそうであることがわかります.

Page 59: はじパタLT2

次元削減による視覚化

X1

-0.8 -0.4 0.0 0.4

-0.2

0.0

0.1

-0.8

-0.4

0.0

0.4

X2

-0.2 0.0 0.1 -2 -1 0 1 2-2

-10

12

X3

カーネル主成分分析の第3主成分までのプロット

PC1

-1.0 0.0 1.0

-3-1

13

-1.0

0.0

1.0

PC2

-3 -1 1 2 3 4 -0.5 0.0 0.5

-0.5

0.0

0.5

PC3

主成分分析の第3主成分までのプロット

• 第1, 2主成分より, データが大きく2つのクラスタに分かれていることがわかります.

• 第2, 3主成分より, 3つくらいのクラスタに分かれそうであることがわかります.

Page 60: はじパタLT2

次元削減による視覚化

X1

-0.8 -0.4 0.0 0.4

-0.2

0.0

0.1

-0.8

-0.4

0.0

0.4

X2

-0.2 0.0 0.1 -2 -1 0 1 2-2

-10

12

X3

カーネル主成分分析の第3主成分までのプロット

PC1

-1.0 0.0 1.0

-3-1

13

-1.0

0.0

1.0

PC2

-3 -1 1 2 3 4 -0.5 0.0 0.5

-0.5

0.0

0.5

PC3

主成分分析の第3主成分までのプロット

• 第1, 2主成分より, データが大きく2つのクラスタに分かれていることがわかります.

• 第2, 3主成分より, 3つくらいのクラスタに分かれそうであることがわかります.

Page 61: はじパタLT2

次元削減による視覚化

X1

-0.8 -0.4 0.0 0.4

-0.2

0.0

0.1

-0.8

-0.4

0.0

0.4

X2

-0.2 0.0 0.1 -2 -1 0 1 2-2

-10

12

X3

カーネル主成分分析の第3主成分までのプロット

PC1

-1.0 0.0 1.0

-3-1

13

-1.0

0.0

1.0

PC2

-3 -1 1 2 3 4 -0.5 0.0 0.5

-0.5

0.0

0.5

PC3

主成分分析の第3主成分までのプロット

• 第1, 2主成分より, データが大きく2つのクラスタに分かれていることがわかります.

• 第2, 3主成分より, 3つくらいのクラスタに分かれそうであることがわかります.

カーネル主成分分析の方は特徴が捉えられています.

Page 62: はじパタLT2

で、どうやってクラスタ数きめればいいの?

by :chaysbc

part2

Page 63: はじパタLT2

クラスタ数の推定

• 主成分分析でも, ある程度のクラスタ数は予測できました.

Page 64: はじパタLT2

クラスタ数の推定

• 主成分分析でも, ある程度のクラスタ数は予測できました. • データに適当な分布を仮定して, 情報量規準などで推定するのもありです.

Page 65: はじパタLT2

クラスタ数の推定

• 主成分分析でも, ある程度のクラスタ数は予測できました. • データに適当な分布を仮定して, 情報量規準などで推定するのもありです.

• 今回は, データに分布を仮定しない, ギャップ統計量を使います.

Page 66: はじパタLT2

クラスタ数の推定

• 主成分分析でも, ある程度のクラスタ数は予測できました. • データに適当な分布を仮定して, 情報量規準などで推定するのもありです.

• 今回は, データに分布を仮定しない, ギャップ統計量を使います.

• SLmiscパッケージに「kmeansGap」関数が用意されています.

Page 67: はじパタLT2

クラスタ数の推定

• 評価関数 は について単調に減少するので, を基準とすると, 以下のようになります.

• データ とほぼ同じ範囲の一様乱数から生成されたデータ集合 とします.

• クラスタ数を とするとき, データ と のそれぞれをクラスタリングして得られる評価関数の値を とします.

最適なクラスタ数 = データ数

Page 68: はじパタLT2

クラスタ数の推定

• ギャップ統計量は以下の式で求めることができます.

• が最大となるような を推定値とする方法です.

Page 69: はじパタLT2

クラスタ数の推定

Page 70: はじパタLT2

クラスタ数の推定

05

1015

2025

k : number of clusters

frequency

2 3 4 5 6 7 8 9

Page 71: はじパタLT2

まとめ

• k-meansは, 事前にクラスタ数を と決めてクラスタリングを行う手法でした.

Page 72: はじパタLT2

まとめ

• k-meansは, 事前にクラスタ数を と決めてクラスタリングを行う手法でした.

• クラスタ数によってやりたいようにできてしまいます.

Page 73: はじパタLT2

まとめ

• k-meansは, 事前にクラスタ数を と決めてクラスタリングを行う手法でした.

• クラスタ数によってやりたいようにできてしまいます. • クラスタ数の決定が鍵となります.

Page 74: はじパタLT2

まとめ

• k-meansは, 事前にクラスタ数を と決めてクラスタリングを行う手法でした.

• クラスタ数によってやりたいようにできてしまいます. • クラスタ数の決定が鍵となります. • クラスタに分けたあとのクラスタ毎の意味付け頑張って下さい^^ (←これが一番大変だと思います. )

Page 75: はじパタLT2

Have a nice clustering!!