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.

続わかりやすいパターン認識11章(11.1 - 11.4)

5,605 views

Published on

Published in: Engineering

続わかりやすいパターン認識11章(11.1 - 11.4)

  1. 1. 続・わかりやすい パターン認識 @teramonagi 第11章 (11.1-11.4) ノンパラメトリックベイズモデル
  2. 2. 誰や?
  3. 3. 俺や • ID: @teramonagi • 職種:データ分析おじさん • 業務:ブカーの育成&会議&Code • 言語:/R/F#/Python/C++/Ruby/ • 特技:早起き・根回し 3 優秀な新人怖い
  4. 4. 11.1: 分割の確率モデル 4
  5. 5. これまでのクラスタリング • 9-10章で扱ったクラスタリング手法 –混合正規分布のパラメータ推定 –K-Means法 –凸クラスタリング法 • これらはクラスタ構造のモデル化が欠如 • クラスタ構造をモデリングし、クラスタ リング実行中に最適なクラスタ数が自動 決定される手法が欲しい 5
  6. 6. ノンパラメトリックベイズモデル • そんな時のためのノンパラメトリックベイズ • (今まで)最尤推定 → ベイズ推定 • ベイズ推定に基づきクラスタリング構造も事 前分布としてモデル化する • 方法は大きく分けて2つ(次ページ) • 定義 –パターン集合: –クラスタ集合: –クラスタのパラメータ: 6
  7. 7. クラスタリング法1 • パターンの所属クラスタsおよび、 そのクラスタのパラメータθの双 方を決定する 7 事後確率 MAP推定値
  8. 8. クラスタリング法2 • パターンの所属クラスタのみを決 定する • クラスタのパラメータθは不要な ので積分消去(Marginal out) 8 事後確率 MAP推定値
  9. 9. 解決すべき問題 • 問題1:クラスタの事前確率p(s)の設定 • 答:分割の確率モデルを用いる(11.2, 11.3) • 問題2:事後分布p(s, θ|x), p(s|x)を最大化 するための計算をどうするか • 答:ギブスサンプリング(12.1) 9 ※ここでは単一割り当てを仮定し、特にディリクレ過程を詳細に説明、 多重割り当ての場合はベータベルヌーイ過程については(A.7)で
  10. 10. 11.2: ホップの壺モデル 10
  11. 11. ホップの壺モデル • Hoppe’s urn model • 壺に1個の黒玉と他の色の玉(色 玉)が混在 • 玉の重さ:黒玉(α)・他の色(1) • 次ページに示すルールに従って、 壺から玉を出し入れする 11
  12. 12. ホップの壺モデル 1. 壺の中に黒玉が1個入ってる 2. 玉の重さに比例した確率で玉を 1つ取りだす 3. If 玉色=黒→新色玉を1つ追加・ 黒玉戻す 4. Else その色と同じ玉を1つ追加 5. 2に戻る 12
  13. 13. ホップの壺モデル(例) 13 α/α はじめ 黒玉選択 新色(赤)追加 ※壺中の数値は玉の選択確率
  14. 14. ホップの壺モデル(例) 14 黒玉選択 α/(1+α) 新色(黄)追加 1/(2+α) 黄玉選択
  15. 15. ホップの壺モデル(例) 15 同色追加 赤玉選択 同色追加 1/(3+α)
  16. 16. ホップの壺モデル(例) 16 赤玉選択 同色追加 黒玉選択 2/(4+α) α/(5+α)
  17. 17. ホップの壺モデル(例) 17 新色(緑)追加 おしまい …となる確率 R:赤 Y:黄 G:緑
  18. 18. この例となる確率 18 上昇階乗:
  19. 19. 色が入る順番を入れ替える • 色が入る順番を入れ替えて、確率 を計算してみると… • 前の結果 19 確率一致!
  20. 20. イーウェンスの抽出公式 • 今の話の一般化 –確率は色の順番に非依存 –色玉の種類数とその個数のみに依存 20 第i色の色玉 の個数n_i
  21. 21. イーウェンスの抽出公式 • 特徴1:交換可能性 –色玉の組み合わせの確率は、玉を入れ る順番に非依存 • 特徴2:クラスタ数の非規定 –壺に入れられる色玉の種類は試行とと もに増加 • 特徴3:クラスタ数の調整 –αの値大→色玉の種類増 –αの値小→色玉の種類減 21
  22. 22. 11.3: 中華料理店過程 22
  23. 23. 中華料理店過程 • Chinese Restaurant Process, CRP • ホップの壺モデルの特徴を全て満 たす(等価な)分割の確率モデル • 中華料理店の複数のテーブルに順 次客が着席 • 同テーブルの客を1つのまとまり と考える 23
  24. 24. 中華料理店過程 • 最初の客は任意のテーブルに着席 • N番目以降の客 –既にn_i人着席しているテーブルi に確率n_i/(n-1+α) –誰も着席していない最も番号の小 さいテーブルに確率α/(n-1+α) で着席 (nは自分も含めて数える!!!) 24
  25. 25. 中華料理店過程(例) • 6番目の客のテーブル選択 25 テーブル 1 テーブル 2 テーブル 3 1 2 34 5 3/(5+α) 2/(5+α) α/(5+α) ※↑は6番目の客が各テーブルを選択する確率
  26. 26. 中華料理店過程(例) • 6人の客が順にテーブル1,2,2,1,1,3に着席する確率 26 テーブル 1 テーブル 2 テーブル 3 1 2 34 5 6
  27. 27. 中華料理店過程(例) • 6人の客が順にテーブル1,1,2,1,2,3に着席する確率 27 テーブル 1 テーブル 2 テーブル 3 1 3 52 4 6 ※順番を変えても着席確率は不変!
  28. 28. 中華料理店過程の特徴 • 特徴1:交換可能性 –着席確率は客の到着順序に非依存 • 特徴2:クラスタ数の非規定 –着席しているテーブルの数は客の到来と ともに増大する • 特徴3:クラスタ数の調整 –αの値大→空席でないテーブルが増加 –αの値小→特定のテーブルに固まりやすい • これらの特徴はホップの壺モデルの特徴と 一対一対応(客の着席⇔色玉の追加) 28
  29. 29. 11.4: 事前確率のための確率モデル 29
  30. 30. クラスタリングと2つのモデルの関係 クラスタリング ホップの壺モデル CRP k番目のパター ン 壺に入れるk番目の 玉 k番目の来店客 総パターン数: n 壺中の色玉の総数 来店客総数 クラスタ: ω_i 第i色 テーブルi クラスタ数: c 色の種類数 使用テーブル数 ω_iに属するパ ターン数: n_i 壺中の第i色の玉の 数 テーブルiに着席 した客の数 30
  31. 31. テーブルへの分割方法とその生起確率 (n=4, α=2) (a)テーブル数c (b)テーブルの客数 客の分割方法 (d)生起確率 1 (4) (① ② ③ ④) 1/10 2 (2, 2) (① ②) (③ ④) 1/30 (① ③) (② ④) 1/30 (① ④) (② ③) 1/30 (3, 1) (① ② ③) (④) 1/15 (① ② ④) (③) 1/15 (① ③ ④) (②) 1/15 (② ③ ④) (①) 1/15 3 (2, 1, 1) (① ②) (③) (④) 1/15 (① ③) (②) (④) 1/15 (① ④) (②) (③) 1/15 (② ③) (①) (④) 1/15 (② ④) (①) (③) 1/15 (③ ④) (①) (②) 1/15 4 (1, 1, 1, 1) (① ② ③ ④) 2/15 31
  32. 32. 演習問題11.1(2)の答え • n人の客をn1, …, nc人ずつc個の テーブルに分割する方法の数N1 (テーブルの区別なし) • 間違ってたら正直スマン 32
  33. 33. CRPからピットマン・ヨー過程へ • CRP – 既にn_i人着席しているテーブルiに確率 n_i/(n-1+α) – 誰も着席していない最も番号の小さいテーブ ルに確率α/(n-1+α) • ピットマン・ヨー過程 – 既にn_i人着席しているテーブルiに確率(n_i- β)/(n-1+α) – 誰も着席していない最も番号の小さいテーブ ルに確率(α+cβ) /(n-1+α) • β=0でCPRに帰着 33
  34. 34. CRPからピットマン・ヨー過程へ • CRPでのテーブル数cの期待値 • ピットマン・ヨー過程でのテーブ ル数cの期待値(べき乗則) 34
  35. 35. ピットマン・ヨー過程 • 使用テーブル数の期待値が、べき 乗則に従う(y=ax^b) • 値の範囲が非常に広くなるロング テールな現象が現れる • 頑張ってシミュレーションしてみ た 35
  36. 36. 図11.5 CRPにおける使用テーブル数の変化 36 α=10 α=2 来客数n 使用テーブル数c
  37. 37. 図11.6 CRPにおけるテーブルと着席客数(n=1000人) 37テーブル 各テーブルの客数 α=2・使用テーブル数=14 (テキストに無いケースなんだ、すまない)
  38. 38. 図11.7 ピットマン・ヨー過程における使用テーブル数の変化 38来客数n 使用テーブル数c β=0.4 β=0.3 β=0.2 β=0(CRP)
  39. 39. 図11.8 べき乗則に従うピットマン・ヨー過程(n=10^5人) 39テーブル 各テーブルの客数 ピットマン・ヨー(β=0.8) CPR(β=0) 直線
  40. 40. ピットマン・ヨー過程兼CPRのコード 40 #ピットマン・ヨー過程+CRPを生成する関数 pitman_yor <- function(size, alpha, beta) { table <- c(1) x <- matrix(c(1,1), ncol=2) for(n in seq_len(size)) { denominator <- sum(table) + alpha prob <- c(table - beta, alpha + (length(table)-1)*beta)/denominator i <- sample(1:(length(table)+1), 1, prob=prob) table[i] <- ifelse(is.na(table[i]), 0, table[i]) + 1 x <- rbind(x, c(n, length(table))) } list(x=x, table=sort(table, decreasing=TRUE)) }
  41. 41. ピットマン・ヨー過程兼CPRのコード 41 #図11.5 x10 <- pitman_yor(10^3, 10 , 0) x2 <- pitman_yor(10^3, 2 , 0) ylim <- range(x10$x[,2]) plot(x10$x, ylim=ylim) par(new=T) plot(x2$x, ylim=ylim) #図11.6 x <- pitman_yor(10^3, 2 , 0) barplot(x$table, names.arg=seq_len(length(x$table)))
  42. 42. ピットマン・ヨー過程兼CPRのコード 42 #図11.7 x4 <- pitman_yor(10^3, 2, 0.4) x3 <- pitman_yor(10^3, 2, 0.3) x2 <- pitman_yor(10^3, 2, 0.2) x0 <- pitman_yor(10^3, 2, 0.0) ylim <- range(x4$x[,2]) plot(x4$x, ylim=ylim) par(new=T) plot(x3$x, ylim=ylim) par(new=T) plot(x2$x, ylim=ylim) par(new=T) plot(x0$x, ylim=ylim)
  43. 43. ピットマン・ヨー過程兼CPRのコード 43 #図11.8 ylim <- range(c$table) xlim <- range(seq_len(length(p$table))) plot(seq_len(length(c$table)), c$table, log="xy", xlim=xlim, ylim=ylim) par(new=T) plot(seq_len(length(p$table)), p$table, log="xy", xlim=xlim, ylim=ylim)
  44. 44. おしまい 44

×