パターン認識
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.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
k-平均法
1 2 3 4 5
0.01.02.03.0
x
y
試しにk=2でk-meansを行ってみましょう
k-平均法
1 2 3 4 5
0.01.02.03.0
x
y
試しにk=2でk-meansを行ってみましょう
k-平均法
1 2 3 4 5
0.01.02.03.0
x
y
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.0
x
y
k-平均法
試しにk=2でk-meansを行ってみましょう
1 2 3 4 5
0.01.02.03.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.56.07.5
2.03.04.0
Sepal.Width
Petal.Length
1357
4.5 6.0 7.5
0.51.52.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.20.00.1
-0.8-0.40.00.4
X2
-0.2 0.0 0.1 -2 -1 0 1 2
-2-1012
X3
カーネル主成分分析の第3主成分までのプロット
次元削減による視覚化
X1
-0.8 -0.4 0.0 0.4
-0.20.00.1
-0.8-0.40.00.4
X2
-0.2 0.0 0.1 -2 -1 0 1 2
-2-1012
X3
カーネル主成分分析の第3主成分までのプロット
• 第1, 2主成分より, データが大
きく2つのクラスタに分かれて
いることがわかります.
次元削減による視覚化
X1
-0.8 -0.4 0.0 0.4
-0.20.00.1
-0.8-0.40.00.4
X2
-0.2 0.0 0.1 -2 -1 0 1 2
-2-1012
X3
カーネル主成分分析の第3主成分までのプロット
• 第1, 2主成分より, データが大
きく2つのクラスタに分かれて
いることがわかります.
• 第2, 3主成分より, 3つくらいの
クラスタに分かれそうであるこ
とがわかります.
次元削減による視覚化
X1
-0.8 -0.4 0.0 0.4
-0.20.00.1
-0.8-0.40.00.4
X2
-0.2 0.0 0.1 -2 -1 0 1 2
-2-1012
X3
カーネル主成分分析の第3主成分までのプロット
PC1
-1.0 0.0 1.0
-3-113
-1.00.01.0
PC2
-3 -1 1 2 3 4 -0.5 0.0 0.5
-0.50.00.5
PC3
主成分分析の第3主成分までのプロット
• 第1, 2主成分より, データが大
きく2つのクラスタに分かれて
いることがわかります.
• 第2, 3主成分より, 3つくらいの
クラスタに分かれそうであるこ
とがわかります.
次元削減による視覚化
X1
-0.8 -0.4 0.0 0.4
-0.20.00.1
-0.8-0.40.00.4
X2
-0.2 0.0 0.1 -2 -1 0 1 2
-2-1012
X3
カーネル主成分分析の第3主成分までのプロット
PC1
-1.0 0.0 1.0
-3-113
-1.00.01.0
PC2
-3 -1 1 2 3 4 -0.5 0.0 0.5
-0.50.00.5
PC3
主成分分析の第3主成分までのプロット
• 第1, 2主成分より, データが大
きく2つのクラスタに分かれて
いることがわかります.
• 第2, 3主成分より, 3つくらいの
クラスタに分かれそうであるこ
とがわかります.
次元削減による視覚化
X1
-0.8 -0.4 0.0 0.4
-0.20.00.1
-0.8-0.40.00.4
X2
-0.2 0.0 0.1 -2 -1 0 1 2
-2-1012
X3
カーネル主成分分析の第3主成分までのプロット
PC1
-1.0 0.0 1.0
-3-113
-1.00.01.0
PC2
-3 -1 1 2 3 4 -0.5 0.0 0.5
-0.50.00.5
PC3
主成分分析の第3主成分までのプロット
• 第1, 2主成分より, データが大
きく2つのクラスタに分かれて
いることがわかります.
• 第2, 3主成分より, 3つくらいの
クラスタに分かれそうであるこ
とがわかります.
カーネル主成分分析の方は
特徴が捉えられています.
で、どうやって
クラスタ数きめればいいの?
by :chaysbc
part2
クラスタ数の推定
• 主成分分析でも, ある程度のクラスタ数は予測できました.
クラスタ数の推定
• 主成分分析でも, ある程度のクラスタ数は予測できました.
• データに適当な分布を仮定して, 情報量規準などで推定す
るのもありです.
クラスタ数の推定
• 主成分分析でも, ある程度のクラスタ数は予測できました.
• データに適当な分布を仮定して, 情報量規準などで推定す
るのもありです.
• 今回は, データに分布を仮定しない, ギャップ統計量を使い
ます.
クラスタ数の推定
• 主成分分析でも, ある程度のクラスタ数は予測できました.
• データに適当な分布を仮定して, 情報量規準などで推定す
るのもありです.
• 今回は, データに分布を仮定しない, ギャップ統計量を使い
ます.
• SLmiscパッケージに「kmeansGap」関数が用意されてい
ます.
クラスタ数の推定
• 評価関数 は について単調に減少するので, を基準とす
ると, 以下のようになります.
• データ とほぼ同じ範囲の一様乱数から生成
されたデータ集合 とします.
• クラスタ数を とするとき, データ と のそれぞれをク
ラスタリングして得られる評価関数の値を とします.
最適なクラスタ数 = データ数
クラスタ数の推定
• ギャップ統計量は以下の式で求めることができます.
• が最大となるような を推定値とする方法です.
クラスタ数の推定
クラスタ数の推定
0510152025
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!!

はじパタLT2