はじパタlt2
DESCRIPTION
Rで学ぶデータサイエンス 5 「パターン認識」 第2章 k-平均法TRANSCRIPT
パターン認識Rで学ぶデータサイエンス
第2章2013/07/02
at リクルート(CodeIQ)
@kenchan0130_aki
学生ニート
働いたら負け
自然言語処理
得意になりたい言語:Ruby
自己紹介
@kenchan0130_aki
学生ニート
働いたら負け
自然言語処理
得意になりたい言語:Ruby 女の子と仲良くなれそう
自己紹介
@kenchan0130_aki
学生ニート
働いたら負け
自然言語処理
得意になりたい言語:Ruby 女の子と仲良くなれそう
自己紹介
とりあえずsinatraでwebアプリは作れるようになった
パターン認識
第2章 k-平均法
第1章 判別能力の評価
第3章 階層的クラスタリング
第4章 混合正規分布モデル
第5章 判別分析
第6章 ロジスティック回帰
第7章 密度推定
第8章 k-近傍法
第9章 学習ベクトル量子化
第10章 決定木
第11章 サポートベクターマシン
第12章 正規化とパス追跡アルゴリズム
第13章 ミニマックス確率マシン
第14章 集団学習
第15章 2値判別から多値判別へ
パターン認識
第2章 k-平均法
第1章 判別能力の評価
第3章 階層的クラスタリング
第4章 混合正規分布モデル
第5章 判別分析
第6章 ロジスティック回帰
第7章 密度推定
第8章 k-近傍法
第9章 学習ベクトル量子化
第10章 決定木
第11章 サポートベクターマシン
第12章 正規化とパス追跡アルゴリズム
第13章 ミニマックス確率マシン
第14章 集団学習
第15章 2値判別から多値判別へ
クラスタリングのお話
by : DGtal Plus Art & Photo
• データをいくつかの『まとまり』に分け, これをクラスタと呼びます.
クラスタリング
• データをいくつかの『まとまり』に分け, これをクラスタと呼びます.
• クラスタリングは, データのまとまり具合を捉えて, そこから何かしらの情報を引き出す方法です.
クラスタリング
• クラスタリングを実行するときに以下の2つを決める必要があります.
クラスタリング
• クラスタリングを実行するときに以下の2つを決める必要があります.
クラスタリング
1) データ間の類似度をどう測るか? → 例えばユークリッド距離
• クラスタリングを実行するときに以下の2つを決める必要があります.
クラスタリング
1) データ間の類似度をどう測るか? → 例えばユークリッド距離
2) 何個のクラスタに分類するか?クラスタリングの結果からクラスタ数を調整して, 様々なパターンを試行錯誤する必要も出てきます.
k-平均法のお話
• 俗にいう「k-means」のことです.
k-平均法
• 俗にいう「k-means」のことです.• クラスタリング手法の一つとして広く使われています. (巷では定番らしい)
k-平均法
• 俗にいう「k-means」のことです.• クラスタリング手法の一つとして広く使われています. (巷では定番らしい)
• 割りと確からしい結果を返してきてくれます.
k-平均法
• 俗にいう「k-means」のことです.• クラスタリング手法の一つとして広く使われています. (巷では定番らしい)
• 割りと確からしい結果を返してきてくれます.• 初期値の取り方で結果が変わります.
k-平均法
k-平均法
k-meansのアルゴリズム
k-平均法
k-meansのアルゴリズム
• k-meansは, 評価関数 を最小化することで代表ベクトルを求めています.
k-平均法
• k-meansは, 評価関数 を最小化することで代表ベクトルを求めています.
k-平均法
• データに対応する代表ベクトルの間の距離の2乗和です. • クラスタの代表ベクトルの周りに, そのクラスタに属するデータが集まっていれば, の値は小さくなります.
そんなこと言われてもワカンネ(しかも英語で書いてあるし...)
by:hapal
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
k-平均法
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
試しにk=2でk-meansを行ってみましょう
k-平均法
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
試しにk=2でk-meansを行ってみましょう
k-平均法
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.0
1.0
2.0
3.0
x
y こんな感じです。
で、codeはー?
by : DGtal Plus Art & Photo
• みんな大好きirisデータ
Rでの実装例
• みんな大好きirisデータ• Fisherの研究で使われた, あやめ150サンプルです.
Rでの実装例
• みんな大好きirisデータ• Fisherの研究で使われた, あやめ150サンプルです.
Rでの実装例
- Sepal.Length : がく片の長さ- Sepal.Width : がく片の幅- Petal.Length : 花びらの長さ- Petal.Width : 花びらの幅- Species : 品種(setosa, versicolor, viginica)
• みんな大好きirisデータ• Fisherの研究で使われた, あやめ150サンプルです.
Rでの実装例
- Sepal.Length : がく片の長さ- Sepal.Width : がく片の幅- Petal.Length : 花びらの長さ- Petal.Width : 花びらの幅- Species : 品種(setosa, versicolor, viginica)
• statsパッケージ(デフォルトで入ってます)に「kmeans」関数が用意されています.
Rでの実装例
• statsパッケージ(デフォルトで入ってます)に「kmeans」関数が用意されています.
• nstartオプションは複数の初期値を試せるが, 増やすとその分計算時間がかかります.
Rでの実装例
• statsパッケージ(デフォルトで入ってます)に「kmeans」関数が用意されています.
• nstartオプションは複数の初期値を試せるが, 増やすとその分計算時間がかかります.
Rでの実装例
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データのクラスタリング
by :Kr. B.
で、どうやってクラスタ数きめればいいの?
• 高次元のデータも視覚化すればクラスタ判断できるのでは?
次元削減による視覚化
• 高次元のデータも視覚化すればクラスタ判断できるのでは? • よく使われるのが, 皆さんご存知「主成分分析」です.
次元削減による視覚化
• 高次元のデータも視覚化すればクラスタ判断できるのでは? • よく使われるのが, 皆さんご存知「主成分分析」です. • ここでは, 主成分分析を非線形化した『カーネル主成分分析』を使ってみます.
次元削減による視覚化
• 高次元のデータも視覚化すればクラスタ判断できるのでは? • よく使われるのが, 皆さんご存知「主成分分析」です. • ここでは, 主成分分析を非線形化した『カーネル主成分分析』を使ってみます.
• kernlabパッケージに「kpca」関数が用意されています.
次元削減による視覚化
• ガウスカーネルの の選び方は, データ間の距離の中央値を とするとき, 付近の値を用いると良い結果が得られるそうです.
• 「pcv」関数で, 固有ベクトル空間へ射影した結果が得られます.
次元削減による視覚化
次元削減による視覚化
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主成分までのプロット
次元削減による視覚化
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つのクラスタに分かれていることがわかります.
次元削減による視覚化
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つくらいのクラスタに分かれそうであることがわかります.
次元削減による視覚化
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つくらいのクラスタに分かれそうであることがわかります.
次元削減による視覚化
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つくらいのクラスタに分かれそうであることがわかります.
次元削減による視覚化
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つくらいのクラスタに分かれそうであることがわかります.
カーネル主成分分析の方は特徴が捉えられています.
で、どうやってクラスタ数きめればいいの?
by :chaysbc
part2
クラスタ数の推定
• 主成分分析でも, ある程度のクラスタ数は予測できました.
クラスタ数の推定
• 主成分分析でも, ある程度のクラスタ数は予測できました. • データに適当な分布を仮定して, 情報量規準などで推定するのもありです.
クラスタ数の推定
• 主成分分析でも, ある程度のクラスタ数は予測できました. • データに適当な分布を仮定して, 情報量規準などで推定するのもありです.
• 今回は, データに分布を仮定しない, ギャップ統計量を使います.
クラスタ数の推定
• 主成分分析でも, ある程度のクラスタ数は予測できました. • データに適当な分布を仮定して, 情報量規準などで推定するのもありです.
• 今回は, データに分布を仮定しない, ギャップ統計量を使います.
• SLmiscパッケージに「kmeansGap」関数が用意されています.
クラスタ数の推定
• 評価関数 は について単調に減少するので, を基準とすると, 以下のようになります.
• データ とほぼ同じ範囲の一様乱数から生成されたデータ集合 とします.
• クラスタ数を とするとき, データ と のそれぞれをクラスタリングして得られる評価関数の値を とします.
最適なクラスタ数 = データ数
クラスタ数の推定
• ギャップ統計量は以下の式で求めることができます.
• が最大となるような を推定値とする方法です.
クラスタ数の推定
クラスタ数の推定
05
1015
2025
k : number of clusters
frequency
2 3 4 5 6 7 8 9
まとめ
• k-meansは, 事前にクラスタ数を と決めてクラスタリングを行う手法でした.
まとめ
• k-meansは, 事前にクラスタ数を と決めてクラスタリングを行う手法でした.
• クラスタ数によってやりたいようにできてしまいます.
まとめ
• k-meansは, 事前にクラスタ数を と決めてクラスタリングを行う手法でした.
• クラスタ数によってやりたいようにできてしまいます. • クラスタ数の決定が鍵となります.
まとめ
• k-meansは, 事前にクラスタ数を と決めてクラスタリングを行う手法でした.
• クラスタ数によってやりたいようにできてしまいます. • クラスタ数の決定が鍵となります. • クラスタに分けたあとのクラスタ毎の意味付け頑張って下さい^^ (←これが一番大変だと思います. )
Have a nice clustering!!