統計的学習の基礎 4章 前半
-
Upload
kenichi-matsui -
Category
Data & Analytics
-
view
1.314 -
download
1
Transcript of 統計的学習の基礎 4章 前半
http://www.slideshare.net/matsukenbook
MASAKARI Come On! щ( щ)https://twitter.com/_inundata/status/616658949761302528
Y
G
X N
X N ⇥ p
K
K
p
N ⇥ pxi X
yigi
Kp
N
X
xi
N
p
...
...
xj
N ⇥ p
X,Y,G
Xxi
XT1
XTi
XTN
G(x) G
G = {class1, class2, · · · , classK}
k
fk(x) = �k0 + �
Tk x
k ` fk(x) = f`(x)
{x : (�k0 � �`0) + (�k � �`)Tx = 0}
x
🌾
pp
1
1
k �k(x)
x
k Pr(G = k|X = x)
x
�k(x) Pr(G = k|X = x) x
Pr(G = 1|X = x) =
exp(�0 + �
Tx)
1 + exp(�0 + �
Tx)
Pr(G = 2|X = x) =
1
1 + exp(�0 + �
Tx)
log
✓p
1� p
◆
logit(Pr(G = 1|X = x)) = �0 + �
Tx = log
Pr(G = 1|X = x)
Pr(G = 2|X = x)
X1, · · · , Xp
D = (X1, X2) D0 = (X1, X2, X21 , X
22 , X1X2)
p(p+ 1)/2
Rp 7! Rq (q > p) h(X)
sklearn.discriminant_analysis.LinearDiscriminantAnalysisD0 = (X1, X2, X
21 , X
22 , X1X2)
G K
G(x) k
Y
Y = (Y1, Y2, · · · , Yk, · · · , YK)
= (0, 0, · · · , 1, · · · , 0)
N
YN
K
N ⇥Kk K1 2
Y = X(XTX)�1XTY B
N
K
Np+ 1
p+ 1
NN
p+ 1
p+ 1
p+ 1
p+ 1
NN
K
p+ 1
K
X p+ 1
x
f(x)T = (1, xT )B K
Kx
ˆ
G(x) = argmax
k2Gˆ
fk(x)
Y = X(XTX)�1XTY
ˆ
G(x) = argmax
k2Gˆ
fk(x)
E(Yk|X = x) = Pr(G = k|X = x)
fk(x)
E(Yk|X = x) = Pr(G = k|X = x)
[ 0.19942274, -0.01553064, 0.8161079 ]
X
k2Gfk(x) = 1
0 fk(x) 1
minB
NX
i=1
kyi �⇥(1, xT
i )B⇤T k2
tk
G(x) = argmink
kf(x)� tkk2
K1 1
Kp+ 1
B
f(x) tk
f(x)
p+ 1
G(x) = argmink
kf(x)� tkk2
ˆ
G(x) = argmax
k2Gˆ
fk(x)
minB
NX
i=1
kyi �⇥(1, xT
i )B⇤T k2
K K � 3
[ 0.3549 0.5517 0.712 0.8062 0.8631 0.9095 0.9458 0.9739 0.9916 1.0000 ]
Pr(G|X)
fk(x) G = k X
⇡k kKX
k=1
⇡k = 1
Pr(G = k|X = x) =fk(x)⇡kPK` f`(x)⇡`
fk(x) =1
(2⇡)
p/2|⌃k|1/2exp
✓�1
2
(x� µk)T⌃
�1k (x� µk)
◆
1
p+ 1
p+ 1p+ 1 p+ 1
1
x
tAx =
nX
i,j=1
aijxixj
µ = (0, 0)
⌃ =
✓�21 �12
�12 �22
◆=
✓1 0.60.6 1
◆
⌃k = ⌃, 8k
log
Pr(G = k|X = x)
Pr(G = `|X = x)
= log
fk(x)
f`(x)+ log
⇡k
⇡`
= log
⇡k
⇡`� 1
2
(µk + µ`)T⌃
�1(µk + µ`) + x
T⌃
�1(µk + µ`)
= log
fk(x)⇡k
f`(x)⇡`
k `
�k(x) = x
T⌃
�1µk � 1
2
µ
Tk⌃
�1µk + log ⇡k
G(x) = argmaxk�k(x)
⇡k = Nk/N
µk =X
gi=k
xi/Nk
⌃ =KX
k=1
X
gi=k
(xi � µk)(xi � µk)T/(N �K)
x
Tˆ
⌃
�1(µ2 � µ1) >
1
2
(µ2 + µ1)Tˆ
⌃
�1(µ2 � µ1)� log
N2
N1
�1(x) = x
T⌃
�1µ1 �
1
2
µ
T1 ⌃
�1µ1 + log ⇡1
�2(x) = x
T⌃
�1µ2 �
1
2
µ
T2 ⌃
�1µ2 + log ⇡2
⇡k = Nk/N
µk =X
gi=k
xi/Nk
⌃ =KX
k=1
X
gi=k
(xi � µk)(xi � µk)T/(N �K)
µk = µk,⌃�1 = ˆ⌃�1
x
Tˆ
⌃
�1(µ2 � µ1) >
1
2
(µ2 + µ1)Tˆ
⌃
�1(µ2 � µ1)� log
N2
N1
fk(x), f`(x)
log
Pr(G = k|X = x)
Pr(G = `|X = x)
= log
fk(x)
f`(x)+ log
⇡k
⇡`
= log
⇡k
⇡`� 1
2
(µk + µ`)T⌃
�1(µk + µ`) + x
T⌃
�1(µk + µ`)
fk(x) =1
(2⇡)
p/2|⌃k|1/2exp
✓�1
2
(x� µk)T⌃
�1k (x� µk)
◆
�k(x) = �1
2
log |⌃k|�1
2
(x� µk)T⌃
�1k (x� µk) + log ⇡k
�k(x) = x
T⌃
�1µk � 1
2
µ
Tk⌃
�1µk + log ⇡k
(K � 1)⇥ (p+ 1)
(K � 1)⇥ {p(p+ 3)/2 + 1}
⌃k(↵) = ↵⌃k + (1� ↵)⌃ ↵ 2 [0, 1]
url <- "https://cran.r-project.org/src/contrib/Archive/ascrda/ascrda_1.15.tar.gz" pkgFile <- "ascrda_1.15.tar.gz" download.file(url = url, destfile = pkgFile) # Install package install.packages(c("rda", "sfsmisc", "e1071", "pamr")) install.packages(pkgs=pkgFile, type="source", repos=NULL) # http://www.inside-r.org/packages/cran/ascrda/docs/FitRda install.packages("ascrda") require(ascrda)
df_vowel_train <- read.table("../vowel.train.csv", sep=",", header=1) df_vowel_test <- read.table("../vowel.test.csv", sep=",", header=1)
df_vowel_train$row.names<- NULL df_vowel_test$row.names<- NULL y <- df_vowel_train$y y_test <- df_vowel_test$y X <- df_vowel_train[ ,c(F,T,T,T,T,T,T,T,T,T,T)] X_test <- df_vowel_test[ ,c(F,T,T,T,T,T,T,T,T,T,T)]
a <- rep(0, 100) res_train <- rep(0, 100) res_test <- rep(0, 100)
for(i in 1:101){ a[i] <- 0.01*(i-1) print (a[i]) startTime <- proc.time()[3] ans <- FitRda(X, y, X_test, y_test, alpha=a) endTime <- proc.time()[3] print(endTime-startTime) res_train[i] <- ans[1] res_test[i] <- ans[2] } df_result <- data.frame(train=res_train, test=res_test) write.table(df_result, file="df_result.csv", sep=",")
⌃(�) = �⌃+ (1� �)�2I � 2 [0, 1]
⌃k = UkDkUTk
log |ˆ⌃k| =X
`
log dk`
(x� µk)T ⌃�1
k (x� µk) =⇥UT
k (x� µk)⇤T
D�1k
⇥UT
k (x� µk)⇤
⌃k = UkDkUTk
p⇥ p dk`(AB)�1 = B�1A�1
⇡k = Nk/N
µk =X
gi=k
xi/Nk
⌃ =KX
k=1
X
gi=k
(xi � µk)(xi � µk)T/(N �K)
X⇤ D�1/2UTX
⌃ = UDUT
X⇤ def sphere(X): S = np.cov(X.T) U = np.linalg.eig(S)[1] D = np.diag(np.linalg.eigvals(S)) D_rt = scipy.linalg.sqrtm(D) D_rt_inv = np.linalg.inv(D_rt) return np.dot(D_rt_inv, np.dot(U.T, X.T)).T
⇡k
D1/2
p KK � 1
p K
HK�1
K > 3 K � 1L < K � 1 HL ✓ HK�1
L
Z = aTX
a
a
max
a
aTBa
aTWa
(m1 �m2)2
m1
m2
µ2
µ1
a
= (aT (µ1 � µ2))2
= (aT (µ1 � µ2))(aT (µ1 � µ2))
T
= aT (µ1 � µ2)(µ1 � µ2)Ta
1p+ 1p+ 1
1
1p+ 1 p+ 1
1
max
a
aTBa
aTWamax
a
aTBa
aTWa
= aTBa⇥N
max
a
aTBa
aTWamax
a
aTBa
aTWa
a
m1
µ1
x1
x2
x3
y3y2
y1
=KX
k=1
X
gi=k
(yi �mk)2
=KX
k=1
X
gi=k
(aT (xi � µk))2
=KX
k=1
X
gi=k
(aT (xi � µk))(aT (xi � µk))
T
=KX
k=1
a
T
0
@X
gi=k
(xi � µk)(xi � µk)T
1
Aa
= aTWa⇥N
max
a
aTBa
aTWamax
aaTBa subject to aTWa = 1
@
@a[aTBa+ �(aTWa� 1)] = 0
@
@�[aTBa+ �(aTWa� 1)] = 0
Ba = �Wa
W W�1Ba = �a
@
@x
x
TAx = 2Ax
W�1Ba = �a
a
m1
m2
µ2
µ1
a
W W�1Ba = �a
M⇤ = MW�1/2
B⇤ = V⇤DBV⇤T
v` = W�1/2v⇤`
K ⇥ pM
W
WM⇤
B M⇤
B⇤ B
V⇤v⇤`
` Z` = vT` X
p+ 1
p⇥ p
W�1/2 = UD�1/2W U�1
W = UDWU�1
K
M = {µ1, · · · , µK}T
[-1.23290493 1.00301738]
[-0.30483077 -0.78126293]
v1 =v2 =
v2
v1
Z1
Z2
log ⇡k⇡k