More Related Content
Similar to はじめてのパターン認識 第5章 k最近傍法(k_nn法)
Similar to はじめてのパターン認識 第5章 k最近傍法(k_nn法) (13)
More from Motoya Wakiyama
More from Motoya Wakiyama (7)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
- 7. 最近傍法の識別規則は?
other
txxd
reject
xxd
i
j
i
j
i
の時
識別クラス
)()(
,min,minarg
コインのサイズ
コインの重量
真
偽
距離が一番小さいデータ
が属するクラス
一番近い鋳型との
距離がtより大きい
時はreject !
- 11. 最近傍法での判別
ボロノイ境界
3,...,1 NxxS N
ボロノイ境界
学習データxiとxjのボロノイ境界B(xi, xj)
B(xi, xj) = {x|d(xi, x) = d(xj, x)}
⇒xiとxiから等距離のxの集合
1と3の境界だと
この辺も境界…?
- 13. 最近傍法での判別
jiji
T
xxnxxxnxx ,2/,0
半空間(超平面のあっち側とこっち側)
超平面は、
xiを含む半空間D(xi, xj) = {x|d(xi, x) < d(xj, x)}と
xjを含む半空間D(xj, xi)に
二分割する
半空間
D(1, 3)
半空間
D(3, 1)
超平面
- 60. 近似最近傍探索
最良優良探索
Step.1:2分木を作成
Step.2:入力データと同じ領域内のデータxDとの距離d(q,xD)を算出
Step.3:次に近い領域Aとの距離d(q,A)を算出し、とd(q,xD)比較
Step.4:領域AのデータxAとの距離d(q,xA)を算出し、d(q,xD)も含めて
距離が短い方を保存(ここではd(q,xD)の方が短いとする)
Step.5:次に近い領域Bとの距離d(q,B)を算
出し、とd(q,xD)比較
xA
xB
xC
xD
xE
q
A B
C
D E
d(q,B)
次に進む
が近似解DD
x
Bqd
xqd
),(
1
),(
※比較対象がxDなのは、今回はxDがxAよりが
近いから
- 61. 近似最近傍探索
最良優良探索
Step.1:2分木を作成
Step.2:入力データと同じ領域内のデータxDとの距離d(q,xD)を算出
Step.3:次に近い領域Aとの距離d(q,A)を算出し、とd(q,xD)比較
Step.4:領域AのデータxAとの距離d(q,xA)を算出し、d(q,xD)も含めて
距離が短い方を保存(ここではd(q,xD)の方が短いとする)
Step.5:次に近い領域Bとの距離d(q,B)を算
出し、とd(q,xD)比較
Step.6:距離d(q,xB)を算出し、d(q,xD)と比
較して短い方を保存(ここでは
d(q,xB)の方が短いとする)
xA
xB
xC
xD
xE
q
A B
C
D E
d(q,xB)
- 62. 近似最近傍探索
最良優良探索
Step.1:2分木を作成
Step.2:入力データと同じ領域内のデータxDとの距離d(q,xD)を算出
Step.3:次に近い領域Aとの距離d(q,A)を算出し、とd(q,xD)比較
Step.4:領域AのデータxAとの距離d(q,xA)を算出し、d(q,xD)も含めて
距離が短い方を保存(ここではd(q,xD)の方が短いとする)
Step.5:次に近い領域Bとの距離d(q,B)を算
出し、とd(q,xD)比較
Step.6:距離d(q,xB)を算出し、d(q,xD)と比
較して短い方を保存
xA
xB
xC
xD
xE
q
A B
C
D E
次に近い領域Cに対して実施
⇒ d(q,xB)を保存して次へ
d(q,C)
d(q,xC)
- 63. 近似最近傍探索
最良優良探索
Step.1:2分木を作成
Step.2:入力データと同じ領域内のデータxDとの距離d(q,xD)を算出
Step.3:次に近い領域Aとの距離d(q,A)を算出し、とd(q,xD)比較
Step.4:領域AのデータxAとの距離d(q,xA)を算出し、d(q,xD)も含めて
距離が短い方を保存(ここではd(q,xD)の方が短いとする)
Step.5:次に近い領域Bとの距離d(q,B)を算
出し、とd(q,xD)比較
Step.6:距離d(q,xB)を算出し、d(q,xD)と比
較して短い方を保存
xA
xB
xC
xD
xE
q
A B
C
D E
次に近い領域Dに対して同じ処
理を実施
⇒以下の条件を満たさないので、
xB を近似解として終了
d(q,E)
次に進む
が近似解BB
x
Eqd
xqd
),(
1
),(
これが近似解!
- 65. 近似最近傍探索
なんで を満たすと、近似解と言えるのか?
(1+ε)r = d(q, xB) として円を描く
r < d(q,E) < d(q, xE)
(1+ε)r < (1+ε)d(q,E) < (1+ε)d(q, xE)
d(q, xB) < (1+ε)d(q,E) < (1+ε)d(q, xE)
xA
xB
xC
xD
xE
q
A B
C
D E
),(
1
),(
Eqd
xqd B
(1+ε)r
r
d(q,E)
発表の時は図がおかしかったので修正しました。
バランスが悪いので、できれば本の方の図を見てください
本だとr’ 本だと
d(q, xE)
- 66. 近似最近傍探索
なんで を満たすと、近似解と言えるのか?
(1+ε)r = d(q, xB) として円を描く
r < d(q,E) < d(q, xE)
(1+ε)r < (1+ε)d(q,E) < (1+ε)d(q, xE)
d(q, xB) < (1+ε)d(q,E) < (1+ε)d(q, xE)
),(
1
),(
Eqd
xqd B
近似解が、厳密解の1+ε倍以内
xA
xB
xC
xD
xE
q
A B
C
D E
(1+ε)r
r
d(q,E)
- 67. 近似最近傍探索
なんで を満たすと、近似解と言えるのか?
(1+ε)r = d(q, xB) として円を描く
r < d(q,E) < d(q, xE)
(1+ε)r < (1+ε)d(q,E) < (1+ε)d(q, xE)
d(q, xB) < (1+ε)d(q,E) < (1+ε)d(q, xE)
),(
1
),(
Eqd
xqd B
探索の
判定と同じ
),(
1
),(
Eqd
xqd B
xA
xB
xC
xD
xE
q
A B
C
D E
(1+ε)r
r
d(q,E)
- 86. 次元の呪い
0,lim 1
NNN
N
xxdT
*2**
2
1
NN1NN3NN4NN2
漸近過程がなりたつと、
ベイズ誤り率の上限と下限が決まる
- 87. 次元の呪い
0,lim 1
NNN
N
xxdT
*2**
2
1
NN1NN3NN4NN2
漸近過程がなりたつと、
ベイズ誤り率の上限と下限が決まる
次元が大きいと漸近過程が
成り立たない!
ということで、データの
次元は小さい方がいい。
- 91. RでNN実行してみた
install.packages("class")
library("class")
data(iris)
#irisデータを学習データとテストデータに分ける
train = rbind(iris[1:25,1:4], iris[51:75,1:4], iris[101:125,1:4])
test = rbind(iris[26:50,1:4], iris[76:100,1:4], iris[126:150,1:4])
c = factor(c(iris[1:25,5], iris[51:75,5], iris[101:125,5]))
levels(c) = c("se", "ve", "vi")
knn1(train, test, c) #学習と予測がセット
実行結果
- 92. RでkNN実行してみた
install.packages("class")
library("class")
data(iris)
train = rbind(iris[1:25,1:4], iris[51:75,1:4], iris[101:125,1:4])
test = rbind(iris[26:50,1:4], iris[76:100,1:4], iris[126:150,1:4])
c = factor(c(iris[1:25,5], iris[51:75,5], iris[101:125,5]))
levels(c) = c("se", "ve", "vi")
knn(train, test, c, k = 3, prob=TRUE) #kNNの実行
attributes(.Last.value) #詳細の表示
実行結果
knn.cv関数でクロスバ
リデーションも一緒に
できるようだけど、挙
動が謎だった・・・