Тепер, коли питання сходилося з більш точним формулюванням проблеми, що цікавить, я знайшов рішення для випадку 1 (відомий параметр хребта). Це також повинно допомогти у випадку 2 (не саме аналітичне рішення, а проста формула та деякі обмеження).
Короткий зміст: Жодна з двох зворотних формулювань задачі не має однозначної відповіді. У випадку 2 , коли параметр хребта невідомий, існує нескінченно багато рішень , для . У випадку 1, де задано , існує обмежене число рішень для , через неоднозначність у спектрі сингулярних значень.μ≡ω2Xωω∈[0,ωmax]ωXω
(Виведення дещо тривале, тому TL, DR: в кінці є працюючий код Matlab.)
Недостатній випадок ("OLS")
Проблема вперед -
де , , і .
minB∥XB−Y∥2
X∈Rn×pB∈Rp×qY∈Rn×q
Виходячи з оновленого питання, будемо вважати, що , тож під визначеними даними таn<p<qBXY . Як і в питанні, ми будемо вважати « по умовчанням» (мінімум норма) рішення
,
де є псевдообернених з .L2
B=X+Y
X+X
Від сингулярного розкладання значення ( SVD )X , заданого *
псевдоінверс можна обчислити як **
(* Перші вирази використовують повний SVD, тоді як другі вирази використовують зменшений SVD. ** Для простоти я припускаю, що має повний ранг, тобто .)
X=USVT=US0VT0
X+=VS+UT=V0S−10UT
XS−10
Таким чином, завдання вперед має рішення
Для подальшого посилання зазначу, що , де - вектор сингулярних значень.
B≡X+Y=(V0S−10UT)Y
S0=diag(σ0)σ0>0
У зворотній задачі нам даєтьсяY і . Ми знаємо , що прийшли з вищеописаного процесу, але ми не знаємо . Завдання полягає в тому, щоб визначити відповідний .BBXX
Як зазначалося в оновленому запитанні, в цьому випадку ми можемо відновитись X , використовуючи по суті той же самий підхід, тобто
тепер використовується псевдообернених .
X0=YB+
B
Завищений випадок (оцінювач Ріджа)
У випадку "OLS" недостатньо визначена проблема була вирішена шляхом вибору рішення з мінімальною нормою , тобто наше "унікальне" рішення було неявно узаконено .
Замість вибору мінімальною нормою, тут ми вводимо параметр для контролю "наскільки малою" повинна бути норма, тобто ми використовуємо регресію хребта .ω
У цьому випадку у нас є ряд прямих задач для , , які задаються
Збір різних векторів лівого та правого боку в
βkk=1,…,q
minβ∥Xβ−yk∥2+ω2∥β∥2
Bω=[β1,…,βk],Y=[y1,…,yk]
цієї колекції проблеми можна звести до наступної проблеми "OLS"
де ми ввели розширені матриці
minB∥XωB−Y∥2
Xω=[XωI],Y=[Y0]
У цьому завищеному випадку рішення все-таки дається псевдо-зворотним
але псевдо-обернена тепер змінюється, в результаті чого *
де нова матриця "спектру сингулярності" має (обернену) діагональ **
(* Дещо задіяний розрахунок, необхідний для його отримання, був опущений заради стислості. Він подібний до експозиції тут для випадку . ** Тут записи вектор виражається через вектор , де всі операції вводяться.)
Bω=X+Y
Bω=(V0S−2ωUT)Y
σ2ω=σ20+ω2σ0
p≤nσωσ0
Тепер у цій проблемі ми формально можемо відновити "базове рішення" як
але це вже не справжнє рішення.
Xω=YB+ω
Однак аналогія все ж полягає в тому, що це "рішення" має SVD
з особливими значеннями наведеними вище.
Xω=US2ωVT0
σ2ω
Таким чином, ми можемо отримати квадратичне рівняння, що стосується бажаних сингулярних значень до відновлюваних сингулярних значень та параметру регуляризаціїσ0σ2ωω . Тоді рішення -
σ0=σ¯±Δσ,σ¯=12σ2ω,Δσ=(σ¯+ω)(σ¯−ω)−−−−−−−−−−−−√
Наведений нижче демонстраційний опис Matlab (випробуваний в Інтернеті через Octave ) показує, що цей метод рішення, як видається, працює як на практиці, так і в теорії. Останній рядок показує, що всі особливі значення знаходяться у реконструкції , але я не зовсім зрозумів, який корінь взяти ( = vs. ). Для це завжди буде root. Це , як правило , здається, трюм для «малих» , в той час як для «великих»Xσ¯±Δσsgn
+−ω=0+ωω− корінь , здається, взяти на себе. (Демонстрація нижче встановлена на "великий" випадок.)
% Matlab demo of "Reverse Ridge Regression"
n = 3; p = 5; q = 8; w = 1*sqrt(1e+1); sgn = -1;
Y = rand(n,q); X = rand(n,p);
I = eye(p); Z = zeros(p,q);
err = @(a,b)norm(a(:)-b(:),Inf);
B = pinv([X;w*I])*[Y;Z];
Xhat0 = Y*pinv(B);
dBres0 = err( pinv([Xhat0;w*I])*[Y;Z] , B )
[Uw,Sw2,Vw0] = svd(Xhat0, 'econ');
sw2 = diag(Sw2); s0mid = sw2/2;
ds0 = sqrt(max( 0 , s0mid.^2 - w^2 ));
s0 = s0mid + sgn * ds0;
Xhat = Uw*diag(s0)*Vw0';
dBres = err( pinv([Xhat;w*I])*[Y;Z] , B )
dXerr = err( Xhat , X )
sigX = svd(X)', sigHat = [s0mid+ds0,s0mid-ds0]' % all there, but which sign?
Я не можу сказати, наскільки надійним є це рішення, оскільки зворотні проблеми, як правило, недоцільні, а аналітичні рішення можуть бути дуже крихкими. Однак побіжні експерименти, що забруднюють гауссовим шумом (тобто він має повний рангBp проти зменшеного рангу ), схоже, свідчать про те, що метод досить добре поводиться.n
Що стосується проблеми 2 (тобто невідомо), вищесказане дає принаймні верхню межу наωω . Щоб квадратичний дискримінант був негативним, ми повинні мати
ω≤ωmax=σ¯n=min[12σ2ω]
Для двозначності квадратичного корінця наступний фрагмент коду показує, що незалежно від знака будь-який дасть однаковий передній гребень-рішення, навіть коли відрізняється від .X^Bσ0SVD[X]
Xrnd=Uw*diag(s0mid+sign(randn(n,1)).*ds0)*Vw0'; % random signs
dBrnd=err(pinv([Xrnd;w*I])*[Y;Z],B) % B is always consistent ...
dXrnd=err(Xrnd,X) % ... even when X is not