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.

パターン認識 08 09 k-近傍法 lvq

11,358 views

Published on

Published in: Technology, Education

パターン認識 08 09 k-近傍法 lvq

  1. 1. Rで学ぶデータサイエンス 5パターン認識 第8章 k-近傍法 第9章 学習ベクトル量子化 2011/07/** TwitterID:sleipnir002
  2. 2. R一人勉強会のご紹介 Rで学ぶデータサイエンス 5パターン認識 (著)金森 敬文, 竹之内 高志, 村田 昇, 金 明哲 共立出版 今ならデモスクリプトがダウンロードできる! http://www.kyoritsu- pub.co.jp/service/service.html#019256第1章 判別能力の評価 Done第2章 k-平均法 Done第3章 階層的クラスタリング第4章 混合正規分布モデル Done第5章 判別分析 おもしろネタ募集中第6章 ロジスティック回帰第7章 密度推定第8章 k-近傍法 ←イマココ!第9章 学習ベクトル量子化 ←イマココ!第10章 決定木第11章 サポートベクターマシン第12章 正則化とパス追跡アルゴリズム第13章 ミニマックス確率マシン第14章 集団学習 さぁ、今すぐAmazonでクリック!!第15章 2値判別から多値判別へ
  3. 3. 前回のあらすじ• 前回は第3回として混合正規分布とEMアルゴリ ズムによるクラスタリングを学んだよ!• 混合正規分布モデルをEMアルゴリズムを使って データから推定、事後確率を使ってクラスタリン グすることができる。
  4. 4. 第8、9章の目的 K-近傍法で教師ありクラス分類 学習ベクトル量子化で教師ありクラス分類• k-近傍法• 学習ベクトル量子化
  5. 5. k-近傍法について
  6. 6. k-近傍法のアルゴリズム K-近傍法とは近くのデータで多数決を取る方法 e.g.3-近傍法の場合• テストデータの近くに ある学習データの多 数決でテストデータ テストデータ のラベルを予測する。• 多クラス変数でも簡 3近傍のトレーニングデータ 単に予測できる。
  7. 7. Rでk-近傍法を実装する
  8. 8. Rでk-近傍法を実装するknn knn(train, test, cl, k = 1, l = 0, prob = FALSE, use.all = TRUE)• Classパッケージ• 因子型ベクトルを返す。
  9. 9. Vehicleデータセット• mlbenchパッケージ• 画像のシルエットから車種を予測する。• 4つの車種の写真から形状特徴を抽出し、18次元の ベクトルに変換したもの• n=846,m=18,クラス数=4• 今回は1:200までをテストデータ、残りを学習データと する。 http://archive.ics.uci.edu/ml/datasets/Statlog+%28Vehicle+Silhouettes%29
  10. 10. k-近傍法で予測するlibrary(class) Package classlibrary(mlbench)data(Vehicle)idtest<-seq(1,200)idtrain<-seq(201,nrow(Vehicle))xtest<-Vehicle[idtest, 1:18] テストデータの作成ytrue<-Vehicle[idtest, 19]xtrain<-Vehicle[idtrain, 1:18] トレーニングデータの作ytrain<-Vehicle[idtrain, 19] 成ypred.knn<-knn(xtrain, xtest, ytrain, k=3) 3-近傍法でで予測するtab.knn<-table(ypred.knn, ytrue) クロス集計で結果を評tab.knnsum(diag(tab.knn))/length(xtest[, 1]) 価する。
  11. 11. 結果
  12. 12. 学習ベクトル量子化(LVQ)について
  13. 13. LVQによる教師あり 多クラス判別問題• 逐次型学習でコードブックベクトル(=モデ ル)を学習する。• SOMの教師あり版、k-平均法とk-近傍法のハ イブリッドみたいなもの – 学習:コードブックベクトルで空間をボロロイ分割 (k-平均法) – 予測:コードブックベクトルでテストデータのラベ ルk-近傍法で予測する。
  14. 14. LVQで判別問題を解く流れ 入力データとラベル LVQアルゴリズム 予測結果 初期コードブックベクトル x,y初期コードブックベクトル 学習されたコードブックベクトル テストデータ
  15. 15. LVQアルゴリズム色々• LVQ1• LVQ2.1• LVQ3
  16. 16. LVQ1アルゴリズム(1)ある時点tでの代表ベクトルm(t)がある。
  17. 17. LVQ1アルゴリズム(2) そこに学習データxが入力される
  18. 18. LVQ1アルゴリズム(3)ⅰ)学習データxのラベルyと、その最短近傍の代表ベクトルmc(t)のラベルが 等しい場合⇒代表ベクトルmi(t)を学習データxに近づける。 mc (t  1)  mc (t )   (t )( x(t )  mc (t ))
  19. 19. LVQ1アルゴリズム(4)ⅰ)学習データxのラベルyと、その最短近傍の代表ベクトルmc(t)のラベルが 等しくない場合⇒代表ベクトルmc(t)を学習データxから遠ざける。 mc (t  1)  mc (t )   (t )( x(t )  mc (t ))
  20. 20. LVQ1アルゴリズム(5)2~5の過程を学習データの数だけ繰り返す。
  21. 21. LVQの注意点• 逐次型学習なので、初期代表ベクトルに結果 が依存する。• 学習データによる学習の順番にも依存する。
  22. 22. RでLVQを実装する
  23. 23. LVQで判別問題を解く 入力データとラベル LVQアルゴリズム=学習 予測結果 初期コードブックベクトル lvq1 lvqinit x,y lvqtest初期コードブックベクトル 学習されたコードブックベクトル テストデータ
  24. 24. ClassパッケージのLVQ関数 初期コードブックを生成(k-近傍法でサンプリング) lvqinit(x, cl, size, prior, k = 5) LVQアルゴリズムでコードブックを生成lvq1(x, cl, codebk, niter = 100 * nrow(codebk$x), alpha = 0.03) コードブックを用いてテスト用にラベルを与える lvqtest(codebk, test)• Classパッケージ
  25. 25. LVQ1で予測するlibrary(class) Package classlibrary(mlbench)data(Vehicle)idtest<-seq(1,200)idtrain<-seq(201,nrow(Vehicle))xtest<-Vehicle[idtest, 1:18]ytrue<-Vehicle[idtest, 19] テストデータの作成xtrain<-Vehicle[idtrain, 1:18]ytrain<-Vehicle[idtrain, 19] 初期コードブックベクトcdinit<-lvqinit(xtrain, ytrain,10) ルの生成cdvec<-lvq1(xtrain, ytrain, cdinit)ypred.lvq1<-lvqtest(cdvec, xtest) LVQ1でコードブックベクtab.lvq1<-table(ypred.lvq1, ytrue) トルの生成tab.lvq1sum(diag(tab.lvq1))/length(xtest[, 1]) クロス集計で結果を評 価する。
  26. 26. 結果
  27. 27. まとめ• k-近傍法という多数決による多クラス判別法 を勉強したよ。• 学習ベクトル量子化というk-近傍法とk-平均 法を混ぜたような学習法を学んだよ。

×