4.19
解答だとですね…。わからん。
4.20
解答見ながら。自分の理解しやすい形にしたけどあってんのか・・・?
4.21
4.22
として、(4.136)に(4.135)を適用して対数を取るだけ?Aについても(4.132)。
解答だとですね…。わからん。
解答見ながら。自分の理解しやすい形にしたけどあってんのか・・・?
として、(4.136)に(4.135)を適用して対数を取るだけ?Aについても(4.132)。
線形分離可能であれば、
のとき、それ以外では<。よってベクトルは決定境界を満足する。
(4.90)より負の対数尤度はすべてのに対してのとき最小化される。より最小化するには。よっては無限となる。
解答見ながら。わかるようなわからないような。
・ヘッセ行列Hが正定値行列であることを示せ。
ここで
は基底関数の線形結合より非ゼロ。
・誤差関数はwの凸関数であり、唯一の最小解を持つことを示せ。
極小値でテイラー展開すると
極小値なので一次項は現れない。
任意の非ゼロベクトルを用いてとおくと
これはが凸であることを示す。
の極小値において。
正定値なのでが存在し、は唯一の極小値である。
解答見ながら。後半はあまり理解できてない。
クラスラベルの代わりに、確率モデルより、
データ集合に適切な対数尤度関数は
・(4.57),(4.58)を使って(4.65)の結果を導出せよ。
クラスの事前確率と一般的なクラス条件付の確率密度によって定義されるKクラス分類問題の生成モデルを考える。
学習データ{}が与えられたとする。データがこのモデルから独立に抽出されると仮定する。
・事前確立に対する最尤解がであることを示せ。
解答見た
クラス条件付の確率密度が(4.160)によって与えられる。
・平均に対する最尤解が(4.161)で与えられることを示せ。
・共分散に対する最尤解が(4.152)で与えられることを示せ。
各々がの離散状態を取ることのできる個の要素を持つ特徴ベクトルに対するクラスの分離問題を考える。
1-of-L符号化法によって成分の値は表現されるとする。
クラスに対し[tex\phi]の個の成分が独立で、クラス条件付確率密度はの要素に分解できると仮定する。
・(4.63)によって与えられる量がの成分の線形関数であることを示せ。
解答見ながらやったけどわからん
4章の解答見つけた www.yumpu.com
わからん
クラス分離基準(4.22)をに関して最大化すればとなること示せ。
(4.20),(4.23),(4.24)を使って(4.25)が(4.26)の形で書けることを示せ。
(4.27),(4.28),(4.34),(4.36)および4.1.5節で述べた目的値を使って(4.33)が(4.37)の形で書けることを示せ。
(4.59)がを満たすことを示せ。
逆関数がで与えられることを示せ
二つのリスト(A,B)を比較してAの各要素がBにあるかないか表示できたら便利ということがあったのでpythonで書いてみた。
listA=['a','b','c','d','e','f'] listB=['b','d','e','g','h'] #listAの各要素をkey、keyがlistBに含まれれば'あり'、含まれなければ'なし'をvalueにして辞書型作成 dct={a:'あり' if a in listB else 'なし' for a in listA} for ky in dct: print(ky+":"+dct[ky])
結果:
a:なし
b:あり
c:なし
d:あり
e:あり
f:なし
二つのリストの和集合に対して積集合をあり、差集合をなしにする場合
dct2={a:'あり' if a in set(listA) & set(listB) else 'なし' for a in set(listA) | set(listB)} for k,v in sorted(dct2.items()): print(k+":"+v)
結果:
a:なし
b:あり
c:なし
d:あり
e:あり
f:なし
g:なし
h:なし
便利だ・・・
効率(forの式毎度評価されてない?)が気になったのでリファレンスを見てみるとforの「式リストは一度だけ評価」。 ifのとこは毎回実行されるよなあということでちょっと確認。
import numpy as np listA=np.random.randint(1,10000,size=5000) listB=np.random.randint(1,10000,size=5000) start=time.time() dct={a:'あり' if a in set(listA) & set(listB) else 'なし' for a in set(listA) | set(listB)} elapsed_time=time.time()-start print('elapsed:{0}'.format(elapsed_time)) #forの式(set(listA) | set(listB))を先に評価しておく start2=time.time() orab=set(listA) | set(listB) dct2={a:'あり' if a in set(listA) & set(listB) else 'なし' for a in orab} elapsed_time2=time.time()-start2 print('elapsed2:{0}'.format(elapsed_time2)) #ifの式(set(listA)&set(listB))を先に評価しておく start3=time.time() uni=set(listA)&set(listB) dct3={a:'あり' if a in uni else 'なし' for a in set(listA) | set(listB)} elapsed_time3=time.time()-start3 print('elapsed3:{0}'.format(elapsed_time3)) #forの式(set(listA) | set(listB))、ifの式(set(listA)&set(listB))を先に評価しておく start4=time.time() uni2=set(listA)&set(listB) orab2=set(listA)| set(listB) dct4={a:'あり' if a in uni2 else 'なし' for a in orab2} elapsed_time4=time.time()-start4 print('elapsed4:{0}'.format(elapsed_time4))
結果:
elapsed:12.282702445983887
elapsed2:12.242701768875122
elapsed3:0.005000114440917969
elapsed4:0.006000995635986328
forの式は一回、ifの式は毎度評価されてるということでよさそう。
ifの式は先に評価したものを使おう。
今後の議論(4.5節)について。モデルが複雑(事後確率分布がガウス分布でない)でパラメータベクトル上で正確に積分することができないため、何らかの近似を導入する必要が出てくる。ここではラプラス近似を紹介する。
ラプラス近似の目的:連続変数の集合上に定義される確率密度分布に対してガウス分布による近似を見出すこと。
(4.127):
一次項があると(4.127)を微分したものがで0にならない。
モデルエビデンスとBIC(ベイズ情報量基準)の関係について。
(4.113)から正規化係数の近似(4.135)を得る。
モデルエビデンスに(4.135)を適用して(4.137)を得る。
パラメータの上での事前確率分布のガウス分布が広がっており、そのヘッセ行列が非退化であると仮定するなら(4.137)はBIC表現の式(4.139)で書ける。
BIC(ベイズ情報量基準):複雑性の測度。(1.73)のAICよりモデルの複雑さに重いペナルティーを科す。
ロジスティック回帰のベイズ的な取り扱いについて。厳密にベイズ推論を適用するのは難しい(特に事後確率分布の評価)ため、ラプラス近似を適用する。
ラプラス近似には、事後分布の対数の2階微分の評価が必要。これはヘッセ行列を見つけることと等価。ヘッセ行列は(4.143)。
事後確率分布のガウス分布による近似は(4.144)となる。
(4.143):
(4.97)より
近似されたガウス分布(4.144)を周辺化して新たな特徴ベクトルが与えられた場合のクラスに対する予測分布を得る。
予測分布の変分近似は(4.151)となるが、解析的に評価できない。しかし、ロジスティックシグモイド関数とプロビット関数の逆関数の類似性を利用すれば近似予測分布(4.155)を得ることができる。
(4.147):
(4.194):
(4.150):
(4.153):