Давайте виведемо наближення Ністрьома таким чином, щоб зробити зрозумілішими відповіді на ваші запитання.
Основне припущення в Nyström полягає в тому, що функція ядра є рангом . (Дійсно, ми припускаємо, що це приблизно з рангу , але для простоти давайте просто зробимо вигляд, що це точно ранг на даний момент.) Це означає, що будь-яка матриця ядра має ранг не більше , і зокрема
є рангом . Тому є ненульових власних значень, і ми можемо записати ейгендекомпозицію як
мммм
К=⎡⎣⎢⎢k (х1,х1)⋮k (хн,х1)…⋱…k (х1,хн)⋮k (хн,хн)⎤⎦⎥⎥,
ммКК= UΛUТ
з власними векторами, збереженими в , форми , та власними значеннями, розташованими в , діагональною матрицею .
Un × mΛм × м
Отже, давайте підберемо елементів, як правило, рівномірно випадково, але можливо за іншими схемами - все, що має значення в цій спрощеній версії, полягає в тому, щоб був повноцінним. Як тільки ми це зробимо, просто відновіть точки, щоб ми закінчилися матрицею ядра в блоках:
де ми оцінюємо кожен запис у (що становить ) та ( ), але не хочемо оцінювати жодних записів у .мК11
К= [К11К21КТ21К22] ,
К11м × мК21( n - m ) × mК22
Тепер ми можемо розділити ейгендекомпозицію відповідно до цієї структури блоків:
де - а - . Але зверніть увагу , що тепер ми маємо . Таким чином, ми можемо знайти та шляхом ейгендо складання відомої матриці .
К= UΛUТ= [U1U2] Λ[U1U2]Т= [U1ΛUТ1U2ΛUТ1U1ΛUТ2U2ΛUТ2] ,
U1м × мU2( n - m ) × mК11=U1ΛUТ1U1ΛК11
Ми також знаємо , що . Тут ми знаємо все в цьому рівнянні, окрім , тому ми можемо вирішити, для яких власних значень, що випливає: помножте право обидві сторони на щоб отримати
Тепер у нас є все, що потрібно для оцінки :
К21=U2ΛUТ1U2( ΛUТ1)- 1=U1Λ- 1
U2=К21U1Λ- 1.
К22К22=U2ΛUТ2= (К21U1Λ- 1) Λ(К21U1Λ- 1)Т=К21U1(Λ- 1Λ )Λ- 1UТ1КТ21=К21U1Λ- 1UТ1КТ21=К21К- 111КТ21= (К21К-1211)(К21К-1211)Т.(*)(**)
У (*) ми знайшли версію вбудовування Nyström, яку ви могли бачити просто як визначення. Це говорить нам про ефективні значення ядра, які ми вводимо для блоку .К22
В (**) ми бачимо, що матриця функцій , яка є формою , відповідає цим імпутованим значенням ядра. Якщо ми використовуємо для точок, ми маємо набір -вимірних особливостей
Ми можемо швидко перевірити, чи відповідає правильній матриці ядра:
К21К-1211( n - m ) × mК1211мм
Φ =⎡⎣⎢К1211К21К-1211⎤⎦⎥.
ΦΦΦТ=⎡⎣⎢К1211К21К-1211⎤⎦⎥⎡⎣⎢К1211К21К-1211⎤⎦⎥Т=⎡⎣⎢К1211К1211К21К-1211К1211К1211К-1211КТ21К21К-1211К-1211КТ21⎤⎦⎥= [К11К21КТ21К21К- 111КТ21]= К.
Отже, все, що нам потрібно зробити - це навчити нашу модель звичайного навчання з -вимірними особливостями . Це буде точно таким же (в припущенні , що ми зробили) в якості kernelized версії завдання навчання з .мΦК
Тепер для окремої точки даних функції в відповідають
Для точки у розділі 2 вектор є лише відповідним рядком , так що укладання це дає нам - так погоджується на точки в розділі 2. Це також працює в розділі 1: там вектор є рядом , тому їх складання отримує , знову погоджуючись зхΦ
ϕ ( x ) = [k ( x ,х1)…k ( x ,хм)]К-1211.
х[k ( x ,х1)…k ( x ,хм)]К21К21К-1211ϕ ( x )К11К11К-1211=К1211Φ. Отже ... це все-таки вірно для тестового пункту часу час навчання . Ви просто зробите те саме:
Оскільки ми припустили, що ядро є рангом , матриця також займає ранг , а реконструкція все ще є точно такою ж логікою, що і для .
хновіΦтест=Ктест , 1К-1211.
м[КпоїздКвипробування, тренуванняКпоїзд, випробуванняКтест]мКтестК22
Вище ми припускали, що матриця ядра була
точно рангом . Зазвичай це не буде так; для ядра Гаусса, наприклад,
завжди є рангом , але останні власні значення зазвичай випадають досить швидко, тому воно буде
близьким до матриці рангу , і наших реконструкцій або будуть
близькі до справжніх значень, але не зовсім однакові. Вони будуть кращими реконструкціями, чим ближче власне простір дістається до
КмКнмК21Ктест , 1К11Кзагалом, саме тому вибір правильних точок є важливим на практиці.
м
Зауважте також, що якщо має будь-які нульові власні значення, ви можете замінити інверси на псевдоінверси, і все ще працює; ви просто заміните у реконструкції на .К11К21К21К†11К11
Ви можете використовувати SVD замість eigendecomposition, якщо хочете; оскільки - psd, вони те саме, але SVD може бути трохи більш стійким до незначної чисельної помилки в матриці ядра тощо. Отже, це робить scikit-learn. Фактична реалізація scikit-learn робить це, хоча він використовує у зворотному, а не псевдоінверсному.Кмакс (λi,10- 12)