Метод Найстрома для апроксимації ядра


12

Я читав про метод Nyström для апроксимації ядра низького рангу. Цей метод реалізований у scikit-learn [1] як метод проектування зразків даних до наближення низького рангу відображення функції ядра.

Наскільки мені відомо, зважаючи на навчальний набір та функцію ядра, він генерує апроксимацію низького рангу матриці ядра ядра , застосовуючи SVD до і .{xi}i=1nn×nKWC

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

Однак я не розумію, як низьке раннє наближення матриці ядра може бути використане для проектування нових зразків у апроксимаційному просторі функції ядра . Знайдені мною документи (наприклад, [2]) не допомагають, бо вони мало дидактичні.

Також мені цікаво обчислювальна складність цього методу, як на етапах навчання, так і на етапах тестування.

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

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

Відповіді:


15

Давайте виведемо наближення Ністрьома таким чином, щоб зробити зрозумілішими відповіді на ваші запитання.

Основне припущення в Nyström полягає в тому, що функція ядра є рангом . (Дійсно, ми припускаємо, що це приблизно з рангу , але для простоти давайте просто зробимо вигляд, що це точно ранг на даний момент.) Це означає, що будь-яка матриця ядра має ранг не більше , і зокрема є рангом . Тому є ненульових власних значень, і ми можемо записати ейгендекомпозицію як mmmm

K=[k(x1,x1)k(x1,xn)k(xn,x1)k(xn,xn)],
mmK
K=UΛUT
з власними векторами, збереженими в , форми , та власними значеннями, розташованими в , діагональною матрицею .Un×mΛm×m

Отже, давайте підберемо елементів, як правило, рівномірно випадково, але можливо за іншими схемами - все, що має значення в цій спрощеній версії, полягає в тому, щоб був повноцінним. Як тільки ми це зробимо, просто відновіть точки, щоб ми закінчилися матрицею ядра в блоках: де ми оцінюємо кожен запис у (що становить ) та ( ), але не хочемо оцінювати жодних записів у .mK11

K=[K11K21TK21K22],
K11m×mK21(nm)×mK22

Тепер ми можемо розділити ейгендекомпозицію відповідно до цієї структури блоків: де - а - . Але зверніть увагу , що тепер ми маємо . Таким чином, ми можемо знайти та шляхом ейгендо складання відомої матриці .

K=UΛUT=[U1U2]Λ[U1U2]T=[U1ΛU1TU1ΛU2TU2ΛU1TU2ΛU2T],
U1m×mU2(nm)×mK11=U1ΛU1TU1ΛK11

Ми також знаємо , що . Тут ми знаємо все в цьому рівнянні, окрім , тому ми можемо вирішити, для яких власних значень, що випливає: помножте право обидві сторони на щоб отримати Тепер у нас є все, що потрібно для оцінки : K21=U2ΛU1TU2(ΛU1T)1=U1Λ1

U2=K21U1Λ1.
K22
K22=U2ΛU2T=(K21U1Λ1)Λ(K21U1Λ1)T=K21U1(Λ1Λ)Λ1U1TK21T=K21U1Λ1U1TK21T(*)=K21K111K21T(**)=(K21K1112)(K21K1112)T.

У (*) ми знайшли версію вбудовування Nyström, яку ви могли бачити просто як визначення. Це говорить нам про ефективні значення ядра, які ми вводимо для блоку .K22

В (**) ми бачимо, що матриця функцій , яка є формою , відповідає цим імпутованим значенням ядра. Якщо ми використовуємо для точок, ми маємо набір -вимірних особливостей Ми можемо швидко перевірити, чи відповідає правильній матриці ядра: K21K1112(nm)×mK1112mm

Φ=[K1112K21K1112].
Φ
ΦΦT=[K1112K21K1112][K1112K21K1112]T=[K1112K1112K1112K1112K21TK21K1112K1112K21K1112K1112K21T]=[K11K21TK21K21K111K21T]=K.

Отже, все, що нам потрібно зробити - це навчити нашу модель звичайного навчання з -вимірними особливостями . Це буде точно таким же (в припущенні , що ми зробили) в якості kernelized версії завдання навчання з .mΦK

Тепер для окремої точки даних функції в відповідають Для точки у розділі 2 вектор є лише відповідним рядком , так що укладання це дає нам - так погоджується на точки в розділі 2. Це також працює в розділі 1: там вектор є рядом , тому їх складання отримує , знову погоджуючись зxΦ

ϕ(x)=[k(x,x1)k(x,xm)]K1112.
x[k(x,x1)k(x,xm)]K21K21K1112ϕ(x)K11K11K1112=K1112Φ. Отже ... це все-таки вірно для тестового пункту часу час навчання . Ви просто зробите те саме: Оскільки ми припустили, що ядро ​​є рангом , матриця також займає ранг , а реконструкція все ще є точно такою ж логікою, що і для .xnew
Φtest=Ktest,1K1112.
m[KtrainKtrain,testKtest,trainKtest]mKtestK22


Вище ми припускали, що матриця ядра була точно рангом . Зазвичай це не буде так; для ядра Гаусса, наприклад, завжди є рангом , але останні власні значення зазвичай випадають досить швидко, тому воно буде близьким до матриці рангу , і наших реконструкцій або будуть близькі до справжніх значень, але не зовсім однакові. Вони будуть кращими реконструкціями, чим ближче власне простір дістається доKmКнмК21Ктест,1К11Кзагалом, саме тому вибір правильних точок є важливим на практиці.м

Зауважте також, що якщо має будь-які нульові власні значення, ви можете замінити інверси на псевдоінверси, і все ще працює; ви просто заміните у реконструкції на .К11К21К21К11К11

Ви можете використовувати SVD замість eigendecomposition, якщо хочете; оскільки - psd, вони те саме, але SVD може бути трохи більш стійким до незначної чисельної помилки в матриці ядра тощо. Отже, це робить scikit-learn. Фактична реалізація scikit-learn робить це, хоча він використовує у зворотному, а не псевдоінверсному.Кмакс(λi,10-12)


1
Коли додатний напівдефініт, ейгендекомпозиція збігається з SVD. scikit-learn, оскільки через числову помилку може бути трохи не-psd, замість цього обчислює і використовує , так що функції стають . Це те саме, в основному. АUΛUТАUΣVТА-12=VΣ-12VТААVΣ-12VТ=UΣVТVΣ-12VТ=UΣ12VТ=А12
Дугал

1
Ну, вибачте, так вони використовують . Це насправді не має значення з , але оскільки вони виконують перенесення функцій для кінцевому підсумку як . UΣ-12VТ=К-12UVК11UΣVТVΣ-12UТ=UΣ12UТ
Дугал

1
Підвищення діагональної матриці до потужності - це те саме, що підняття кожного елемента до потужності, а . У нумерованій нотації трансляції елементарне множення на вектор є таким самим, як право множення на діагональну матрицю. Крім того , що використання коду означає , що я дзвоню . х-12=1/хVVТ
Дугал

1
Ну, вибачте, це повинно бути до (у впорядкуванні, щоб вони були базовими точками Nyström). Виправимо. хм
Дугал

1
х - точка даних, її параметр тут не вказаний. може бути в , або це може бути рядок або щось таке; просто сказати , що , так що . Тоді просто накопичує для різних входів. хRгхХк:Х×ХRϕ:ХRмк(х,хi)м
Дугал
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.