Програмний пакет для вирішення лінійної регресії норми L-нескінченності


10

Чи є пакет програм для вирішення лінійної регресії з метою мінімізації норми L-нескінченності.


Ну, будь-який пакет лінійного програмування спрацював би. Це залишає вам безліч варіантів. :)
кардинал

1
@Cardinal Як би ви переробили це як лінійну програму? Не видно, як це зробити навіть у тривіальних випадках (наприклад, дві точки даних та один параметр): обмежень немає і цільова функція нелінійна.
whuber

Ключова фраза : наближення Чебишева. (Далі далі. Ідея полягає в тому, щоб ввести додаткову змінну, а потім перетворити мету на обмеження.)
кардинал

@cardinal Ви маєте на увазі це: mathworld.wolfram.com/ChebyshevApproximationFormula.html Це здається досить складним.
Фан Чжан

Ну, це трохи пов'язано, але не переймається цією проблемою. Вашу проблему можна вирішити простим LP. Як тільки я можу дістатись до комп’ютера, я опублікую відповідь.
кардинал

Відповіді:


19

Коротка відповідь : Ваша проблема може бути сформульована як лінійна програма (LP), залишаючи вам вибрати свій улюблений вирішувач LP для виконання завдання. Щоб побачити, як написати проблему як LP, читайте далі.

Цю проблему мінімізації часто називають наближенням Чебишева .

Нехай , з рядком позначається та . Тоді ми прагнемо мінімізувати функцію щодо . Позначимо оптимальне значення y=(yi)RnXRn×pixiβRpβ f = f ( β ) = inf { f ( β ) : βR p }f(β)=yXββ

f=f(β)=inf{f(β):βRp}.

Ключовим фактором для переробки цього формату LP є переписання проблеми у формі епіграфа . Переконати себе не важко, що насправді

f=inf{t:f(β)t,tR,βRp}.

Тепер, використовуючи визначення функції , ми можемо переписати праву частину вище як і тому ми бачимо, що мінімізація норми в налаштуваннях регресії еквівалентна LP де проводиться оптимізація над , і позначають вектор довжини . Я залишаю це (легке) вправу для читача, щоб переробити вищезгаданий LP у стандартній формі.f = inf { t : - t y i - x i βt ,fмінімізувати t за умови y - X βt 1 n

f=inf{t:tyixiβt,tR,βRp,1in},
minimizetsubject toyXβt1nyXβt1n,
(β,t)1nn

Зв'язок з версією (загальна варіація) лінійної регресії1

Цікаво зазначити, що щось дуже схоже можна зробити за допомогою норми . Нехай . Потім подібні аргументи призводять до висновку, що щоб відповідний LP був 1g(β)=yXβ1мінімізуйте t T 1 n за умови у - X βt

g=inf{tT1n:tiyixiβti,t=(ti)Rn,βRp,1in},
minimizetT1nsubject toyXβtyXβt.

Зауважимо тут, що тепер вектор довжини замість скаляра, як це було у випадку . n tn

Подібність у цих двох проблемах та те, що вони можуть бути представлені як LP, - це, звичайно, не випадково. Дві норми пов'язані тим, що вони є подвійними нормами один одного.


Як би ви знайшли міру точності для параметрів та / або прогнозів? Я запитую через таке нещодавнє запитання: mathematica.stackexchange.com/questions/214226/… .
JimB

3

Малаб може це зробити, використовуючи cvx. щоб отримати cvx (безкоштовно):

http://cvxr.com/cvx/download/

У cvx ви б написали це так:

cvx_begin
   variable x(n);
   minimize( norm(A*x-b,Inf) );
cvx_end

(Перевірте приклад на сторінці 12 посібника )

Існує реалізація CVX ( тут ) Python, але команди трохи відрізняються ...


1

@ відповідь кардинала чітко викладена і була прийнята, але, щоб повністю закрити цю тему, я запропоную наступне: Числові бібліотеки IMSL містять процедуру виконання регресії норми L-нескінченності. Програма доступна у Fortran, C, Java, C # та Python. Я використовував версії C і Python, для яких метод називається lnorm_regression, який також підтримує загальну -norm регресію, . p > = 1Lpp>=1

Зауважте, що це комерційні бібліотеки, але версії Python безкоштовні (як у пиві) для некомерційного використання.


На жаль, посилання більше не працює. Не могли б ви її оновити?
COOLSerdash
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.