Vamos derivar a aproximação de Nyström de uma maneira que torne as respostas às suas perguntas mais claras.
O principal pressuposto em Nyström é que a função do kernel é da categoria . (Realmente assumimos que é aproximadamente da classificação m , mas, por simplicidade, vamos fingir que é exatamente a classificação m por enquanto.) Isso significa que qualquer matriz do kernel terá classificação no máximo m , e em particular
K = [ k ( x 1 , x 1 ) ... k ( x 1 , x n ) ⋮ ⋱ ⋮ k ( x nmmmm
é a classificaçãom. Portanto, hámvalores próprios diferentes de zero, e que podemos escrever a eigendecomposition deKcomo
K=LΛLT
com vectores próprios armazenados emU, de formanxm, e valores próprios dispostos emΛ, umm×mmatriz diagonal.
K=⎡⎣⎢⎢k(x1,x1)⋮k(xn,x1)…⋱…k(x1,xn)⋮k(xn,xn)⎤⎦⎥⎥,
mmKK=UΛUT
Un×mΛm×m
mK11
K=[K11K21KT21K22],
K11m×mK21(n−m)×mK22
K=UΛUT=[U1U2]Λ[U1U2]T=[U1ΛUT1U2ΛUT1U1ΛUT2U2ΛUT2],
U1m×mU2(n−m)×mK11=U1ΛUT1U1ΛK11
K21=U2ΛUT1U2(ΛUT1)−1=U1Λ−1
U2=K21U1Λ−1.
K22K22=U2ΛUT2=(K21U1Λ−1)Λ(K21U1Λ−1)T=K21U1(Λ−1Λ)Λ−1UT1KT21=K21U1Λ−1UT1KT21=K21K−111KT21=(K21K−1211)(K21K−1211)T.(*)(**)
K22
K21K−1211(n−m)×mK1211mm
Φ=⎡⎣⎢K1211K21K−1211⎤⎦⎥.
ΦΦΦT=⎡⎣⎢K1211K21K−1211⎤⎦⎥⎡⎣⎢K1211K21K−1211⎤⎦⎥T=⎡⎣⎢K1211K1211K21K−1211K1211K1211K−1211KT21K21K−1211K−1211KT21⎤⎦⎥=[K11K21KT21K21K−111KT21]=K.
mΦK
xΦ
ϕ(x)=[k(x,x1)…k(x,xm)]K−1211.
x[k(x,x1)…k(x,xm)]K21K21K−1211ϕ(x)K11K11K−1211=K1211ΦxnewΦtest=Ktest,1K−1211.
m[KtrainKtest,trainKtrain,testKtest]mKtestK22
Acima, assumimos que a matriz
do núcleo
K era
exatamente a classificação
m . Isso geralmente não será o caso; para um núcleo Gaussiano, por exemplo,
K é
sempre posto
n , mas os últimos valores próprios tipicamente cair muito rapidamente, por isso vai ser
perto de uma matriz de classificação
m , e as nossas reconstruções de
K 21 ou
K teste , 1 vão estar
perto dos valores verdadeiros, mas não exatamente o mesmo. Serão melhores reconstruções quanto mais próximo o espaço próprio do
K 11 chegar ao de
KmKnmK21Ktest,1K11 geral, é por isso que escolher os
m pontoscertosé importante na prática.
Km
Observe também que se tiver valores próprios zero, você poderá substituir inversos por pseudo-inversos e tudo ainda funcionará; você acabou de substituir K 21 na reconstrução por K 21 K † 11 K 11 .K11K21K21K†11K11
Kmax(λi,10−12)