Çekirdek Yaklaşımı için Nystroem Yöntemi


12

Düşük seviyeli çekirdek yakınlaşması için Nyström yöntemini okudum. Bu yöntem scikit-learn [1] 'de veri örneklerini çekirdek özellik eşlemesinin düşük dereceli bir yaklaşımına yansıtmak için bir yöntem olarak uygulanır.

Bildiğim kadarıyla, bir eğitim seti verilen ve bir çekirdek fonksiyonu, bu bir düşük seviye yaklaşımı oluşturur çekirdek matris için SVD uygulayarak ve .{xi}i=1nn×nKWC

K=[WK21TK21K22] C=[WK21] ,WRl×l

Bununla birlikte, çekirdek matrisinin düşük dereceli yaklaşımının, yeni örnekleri yaklaşık çekirdek özellik alanına yansıtmak için nasıl kullanılabileceğini anlamıyorum . Bulduğum yazılar (örneğin [2]) çok yardımcı değil, çünkü az didaktik.

Ayrıca, hem eğitim hem de test aşamalarında bu yöntemin hesaplama karmaşıklığını merak ediyorum.

[1] http://scikit-learn.org/stable/modules/kernel_approximation.html#nystroem-kernel-approx

[2] http://www.jmlr.org/papers/volume13/kumar12a/kumar12a.pdf

Yanıtlar:


15

Nyström yaklaşımını, sorularınızın cevaplarını daha net hale getirecek şekilde elde edelim.

Nyström'deki temel varsayım, çekirdek fonksiyonunun rütbe olduğu yönündedir. m. (Gerçekten yaklaşık rütbe olduğunu varsayıyoruzm, ama basitlik için tam olarak rütbe olduğunu varsayalımmŞimdilik.) Bu, herhangi bir çekirdek matrisinin en fazla rütbeye sahip olacağı anlamına gelirm, ve özellikle

K=[k(x1,x1)k(x1,xn)k(xn,x1)k(xn,xn)],
rütbe m. Bu nedenle varm sıfır olmayan özdeğerler ve özdeğer kompozisyonunu yazabiliriz K gibi
K=UΛUT
içinde saklanan özvektörlerle U, şekil n×mve özdeğerler Λ, bir m×m Diyagonal matris.

Hadi seçelim m elemanlar, genellikle rastgele ama muhtemelen diğer şemalara göre - bu basitleştirilmiş versiyonda önemli olan tek şey K11tam rütbeli olmak. Yaptıktan sonra, noktaları yeniden etiketleyin, böylece çekirdek matrisini bloklar halinde elde edelim:

K=[K11K21TK21K22],
burada her girişi değerlendiriyoruz K11 (hangisi m×m) ve K21 ((nm)×m), ancak içindeki herhangi bir girişi değerlendirmek istemiyorum K22.

Şimdi, öz-kompozisyonunu bu blok yapısına göre ayırabiliriz:

K=UΛUT=[U1U2]Λ[U1U2]T=[U1ΛU1TU1ΛU2TU2ΛU1TU2ΛU2T],
nerede U1 dır-dir m×m ve U2 dır-dir (nm)×m. Ama şimdiK11=U1ΛU1T. Böylece bulabilirizU1 ve Λ bilinen matrisi oluşturan özdeğer K11.

Ayrıca biliyoruz ki K21=U2ΛU1T. Burada, bu denklemdeki her şeyi biliyoruz,U2, yani hangi özdeğerleri ima ettiğimizi çözebiliriz: her iki tarafı da sağa çarparak (ΛU1T)1=U1Λ1 almak

U2=K21U1Λ1.
Şimdi değerlendirmemiz gereken her şeye sahibiz K22:
K22=U2ΛU2T=(K21U1Λ1)Λ(K21U1Λ1)T=K21U1(Λ1Λ)Λ1U1TK21T=K21U1Λ1U1TK21T(*)=K21K111K21T(**)=(K21K1112)(K21K1112)T.

(*) 'Da, tanım olarak gördüğünüz Nyström gömmesinin bir sürümünü bulduk. Bu bize blok için ima ettiğimiz etkili çekirdek değerlerini söylerK22.

(**) 'de, özellik matrisinin K21K1112, hangi şekil (nm)×m, bu empoze edilen çekirdek değerlerine karşılık gelir. KullanırsakK1112 için m puan, bir dizi var mboyutlu özellikler

Φ=[K1112K21K1112].
Bunu hızlı bir şekilde doğrulayabiliriz Φ doğru çekirdek matrisine karşılık gelir:
ΦΦT=[K1112K21K1112][K1112K21K1112]T=[K1112K1112K1112K1112K21TK21K1112K1112K21K1112K1112K21T]=[K11K21TK21K21K111K21T]=K.

Yani, tek yapmamız gereken düzenli öğrenme modelimizi mboyutlu özellikler Φ. Bu , öğrenme sorununun çekirdeklendirilmiş sürümü ile tam olarak aynı olacaktır (yaptığımız varsayımlar altında)K.

Şimdi, tek bir veri noktası için x, özellikleri Φ karşılık vermek

ϕ(x)=[k(x,x1)k(x,xm)]K1112.
Bir nokta için x 2. bölümde vektör [k(x,x1)k(x,xm)] sadece ilgili satır K21, böylece bunları biriktirmek bize K21K1112 - yani ϕ(x) bölüm 2'deki noktaları kabul eder. Aynı zamanda bölüm 1'de de çalışır: işte, vektör K11, bu yüzden onları istiflemek K11K1112=K1112, yine katılıyorum Φ. Yani ... eğitim sırasında görülmeyen bir test noktası için hala doğruxnew. Sadece aynı şeyi yapıyorsun:
Φtest=Ktest,1K1112.
Çünkü çekirdeğin rütbe olduğunu varsaydık m, matris [KtrainKtrain,testKtest,trainKtest] aynı zamanda mve yeniden inşası Ktest hala tam olarak aynı mantıkla K22.


Yukarıda, çekirdek matrisinin Koldu tam sıralamasım. Bu genellikle böyle olmaz; örneğin bir Gauss çekirdeği için,Kher zaman rütbenO olacak öyle, ama ikincisi özdeğerler genellikle oldukça hızlı düşüyorlar yakın bir sıralama matrisinemve bizim K21 veya Ktest,1gerçek değerlere yakın olacak ama tam olarak aynı olmayacak. Daha fazla rekonstrüksiyon olacaklar.K11 buna ulaşır K genel olarak, bu yüzden doğru seçimi m puan pratikte önemlidir.

Ayrıca, K11herhangi bir sıfır özdeğeri varsa, tersleri psödoinverslerle değiştirebilirsiniz ve her şey hala çalışır; sadece değiştirK21 ile yeniden yapılanma K21K11K11.

İsterseniz özdeğer kompozisyonu yerine SVD kullanabilirsiniz; dan beriKpsd, onlar aynı şey, ancak SVD çekirdek matrisinde biraz daha sağlamdan hafif sayısal hataya ve benzeri olabilir, bu yüzden scikit-learn bunu yapar. scikit-learn'un gerçek uygulaması bunu kullanıyor olsa da,max(λi,1012) yalancı ters yerine.


1
Ne zaman A pozitif semidefinit, özdiyompozisyon UΛUTSVD ile çakışır. scikit-learn, çünkü sayısal hata nedeniyleA biraz psd olmayabilir, bunun yerine hesaplar UΣVTve kullanır A12=VΣ12VT, Böylece Aözellikleri AVΣ12VT=UΣVTVΣ12VT=UΣ12VT=A12. Aynı şey, temelde.
Dougal

1
Üzgünüz, evet kullanıyorlar UΣ12VT=K12. O zamandan beri önemli değilUV, ancak özellikleri K11 olarak bitirmek UΣVTVΣ12UT=UΣ12UT.
Dougal

1
Çapraz bir matrisi bir güce yükseltmek, her öğeyi bir güce yükseltmekle aynıdır ve x12=1/x. Numpy yayın gösterimlerinde, bir vektör ile eleman olarak çarpma, diyagonal bir matrisle sağ çarpma ile aynıdır. Ayrıca, bu kodV ne dediğimi kastetmek VT.
Dougal

1
Üzgünüz, bu sadece xm(yeniden etiketlenmiş sıralamada, böylece bunlar Nyström temel noktalarıdır). Düzeltecek.
Dougal

1
x bir veri noktasıdır, boyutu burada belirtilmez. x olabilir Rdveya bir dize falan olabilir; sadece söylexX, Böylece k:X×XR. Sonraϕ:XRm sadece istiflenir k(x,xi) için mfarklı girdiler.
Dougal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.