27
Rで学ぶデータサイエンス 5パターン認識 8k-近傍法 9学習ベクトル量子化 2011/07/** TwitterID:sleipnir002

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

Embed Size (px)

Citation preview

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

Rで学ぶデータサイエンス5パターン認識第8章 k-近傍法

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

2011/07/**

TwitterID:sleipnir002

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

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章集団学習第15章 2値判別から多値判別へ

さぁ、今すぐAmazonでクリック!!

おもしろネタ募集中

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

前回のあらすじ

• 前回は第3回として混合正規分布とEMアルゴリズムによるクラスタリングを学んだよ!

• 混合正規分布モデルをEMアルゴリズムを使ってデータから推定、事後確率を使ってクラスタリングすることができる。

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

第8、9章の目的

• k-近傍法

• 学習ベクトル量子化

K-近傍法で教師ありクラス分類学習ベクトル量子化で教師ありクラス分類

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

k-近傍法について

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

k-近傍法のアルゴリズム

• テストデータの近くにある学習データの多数決でテストデータのラベルを予測する。

• 多クラス変数でも簡単に予測できる。

K-近傍法とは近くのデータで多数決を取る方法

e.g.3-近傍法の場合

テストデータ

3近傍のトレーニングデータ

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

Rでk-近傍法を実装する

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

Rでk-近傍法を実装するknn

knn(train, test, cl, k = 1, l = 0, prob = FALSE, use.all = TRUE)

• Classパッケージ

• 因子型ベクトルを返す。

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

Vehicleデータセット

• mlbenchパッケージ• 画像のシルエットから車種を予測する。• 4つの車種の写真から形状特徴を抽出し、18次元のベクトルに変換したもの

• n=846,m=18,クラス数=4• 今回は1:200までをテストデータ、残りを学習データとする。

http://archive.ics.uci.edu/ml/datasets/Statlog+%28Vehicle+Silhouettes%29

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

k-近傍法で予測する

library(class)

library(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)

tab.knn<-table(ypred.knn, ytrue)

tab.knn

sum(diag(tab.knn))/length(xtest[, 1])

Package class

テストデータの作成

3-近傍法でで予測する

トレーニングデータの作成

クロス集計で結果を評価する。

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

結果

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

学習ベクトル量子化(LVQ)について

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

LVQによる教師あり多クラス判別問題

• 逐次型学習でコードブックベクトル(=モデル)を学習する。

• SOMの教師あり版、k-平均法とk-近傍法のハイブリッドみたいなもの

–学習:コードブックベクトルで空間をボロロイ分割(k-平均法)

–予測:コードブックベクトルでテストデータのラベルk-近傍法で予測する。

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

LVQで判別問題を解く流れLVQアルゴリズム

初期コードブックベクトル

学習されたコードブックベクトル

x,y

テストデータ

予測結果

初期コードブックベクトル

入力データとラベル

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

LVQアルゴリズム色々

• LVQ1

• LVQ2.1

• LVQ3

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

LVQ1アルゴリズム(1)

ある時点tでの代表ベクトルm(t)がある。

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

LVQ1アルゴリズム(2)

そこに学習データxが入力される

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

LVQ1アルゴリズム(3)ⅰ)学習データxのラベルyと、その最短近傍の代表ベクトルmc(t)のラベルが

等しい場合⇒代表ベクトルmi(t)を学習データxに近づける。

))()()(()()1( tmtxttmtm ccc

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

LVQ1アルゴリズム(4)ⅰ)学習データxのラベルyと、その最短近傍の代表ベクトルmc(t)のラベルが

等しくない場合⇒代表ベクトルmc(t)を学習データxから遠ざける。

))()()(()()1( tmtxttmtm ccc

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

LVQ1アルゴリズム(5)

2~5の過程を学習データの数だけ繰り返す。

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

LVQの注意点

• 逐次型学習なので、初期代表ベクトルに結果が依存する。

• 学習データによる学習の順番にも依存する。

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

RでLVQを実装する

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

LVQで判別問題を解くLVQアルゴリズム=学習

初期コードブックベクトル

学習されたコードブックベクトル

x,y

テストデータ

予測結果

初期コードブックベクトル

入力データとラベル

lvqinit

lvq1

lvqtest

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

ClassパッケージのLVQ関数

• Classパッケージ

初期コードブックを生成(k-近傍法でサンプリング)lvqinit(x, cl, size, prior, k = 5)

LVQアルゴリズムでコードブックを生成lvq1(x, cl, codebk, niter = 100 * nrow(codebk$x), alpha = 0.03)

コードブックを用いてテスト用にラベルを与えるlvqtest(codebk, test)

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

LVQ1で予測する

library(class)

library(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)

tab.lvq1<-table(ypred.lvq1, ytrue)

tab.lvq1

sum(diag(tab.lvq1))/length(xtest[, 1])

Package class

テストデータの作成

LVQ1でコードブックベクトルの生成

初期コードブックベクトルの生成

クロス集計で結果を評価する。

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

結果

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

まとめ

• k-近傍法という多数決による多クラス判別法を勉強したよ。

• 学習ベクトル量子化というk-近傍法とk-平均法を混ぜたような学習法を学んだよ。