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


10

Существует ли какой-либо программный пакет для решения линейной регрессии с целью минимизации нормы L-бесконечности.


Ну, любой пакет линейного программирования будет работать. Это оставляет вам много вариантов. :)
кардинал

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

Ключевая фраза : чебышевское приближение. (Далее. Идея состоит в том, чтобы ввести дополнительную переменную, а затем превратить цель в ограничения.)
кардинал

@cardinal Вы имеете в виду это: mathworld.wolfram.com/ChebyshevApproximationFormula.html Это кажется довольно сложным.
Фан Чжан

Ну, это немного связано, но не относится к этой проблеме. Ваша проблема может быть решена с помощью простого LP. Как только я доберусь до компьютера, я выложу ответ.
кардинал

Ответы:


17

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

Эту проблему минимизации часто называют чебышевским приближением .

Пусть , со строкой обозначенной и . Затем мы стремимся минимизировать функцию относительно . Обозначим оптимальное значение через y=(yi)RnXRn×pixiβRpf(β)=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свести к минимуму т подлежащего у - Х & beta ; & le ; т 1 н

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

Связь с версией линейной регрессии (полная вариация)1

Интересно отметить, что нечто очень похожее можно сделать с нормы . Пусть . Затем аналогичные аргументы приводят к выводу, что так что соответствующий LP является г ( & beta ; ) = | | у - Х & beta ; | | 1 г = инф { т Т 1 п : - т яу я - х я & beta ; ≤ т я ,1g(β)=yXβ1Свести к минимуму т Т 1 л при условии у - Х & beta ; & le ; т

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

Обратите внимание, что теперь является вектором длины вместо скаляра, как это было в случае . п л tn

Сходство в этих двух проблемах и тот факт, что они оба могут быть разыграны как LP, конечно, не случайны. Две нормы связаны в том, что они являются двойственными нормами друг друга.


Как бы вы нашли некоторую меру точности для параметров и / или прогнозов? Я спрашиваю из-за следующего недавнего вопроса: mathematica.stackexchange.com/questions/214226/… .
ДжимБ

3

Малаб может сделать это, используя cvx. получить cvx (бесплатно):

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

В cvx вы бы написали это так:

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

(см. пример на странице 12 руководства )

Существует реализация Python для CVX ( здесь ), но команды немного отличаются ...


1

Ответ @ cardinal хорошо сформулирован и принят, но ради полного закрытия этой темы я предлагаю следующее: Числовые библиотеки IMSL содержат процедуру для выполнения регрессии нормы L-бесконечности. Процедура доступна на Фортране, 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.