Spec-Zone.ru › Octave 9

Предыдущее: Нелинейное программирование, Выше: Оптимизация [Оглавление][Индекс]

25.4 Линейно-наименьшие квадраты ¶

Octave также поддерживает минимизацию линейных наименьших квадратов. То есть, Octave может найти параметр b такой, что модель y = x*b наилучшим образом подходит к данным (x,y), предполагая шум с нулевым средним и гауссовым распределением. Если шум предполагается изотропным, задачу можно решить с помощью операторов ‘\’ или ‘/’ или функции ols. В общем случае, когда шум предполагается анизотропным, необходима функция gls.

: [beta, sigma, r] = ols (y, x) ¶

Оценка методом наименьших квадратов (OLS).

OLS применяется к многомерной модели y = x*b + e, где y — матрица t×p, x — матрица t×k, b — матрица k×p, а e — матрица t×p.

Каждая строка матрицы y представляет собой p-мерную наблюдение, в которой каждый столбец представляет собой переменную. Аналогично, строки матрицы x представляют собой k-мерные наблюдения или возможные заданные значения. Кроме того, множество наблюдений x должно иметь достаточный ранг, k, иначе b не может быть однозначно оценено.

Ошибки наблюдений e предполагается исходят из базового p-мерного распределения с нулевым средним и p×p матрицей ковариации S, которые постоянны при условии x. Кроме того, матрица S постоянна относительно каждого наблюдения, так что mean (e) = 0 и cov (vec (e)) = kron (s, I). (Для случаев, которые не соответствуют этому критерию, например, автокоррелированные ошибки, см. обобщённые наименьшие квадраты, gls, для более эффективных оценок.)

Значения возврата beta, sigma и r определяются следующим образом.

beta

Оценщик OLS для матрицы b. beta вычисляется напрямую через inv (x'*x) * x' * y если матрица x'*x имеет полный ранг. В противном случае, beta = pinv (x) * y, где pinv (x) обозначает псевдообратную матрицу x.

sigma

Оценщик OLS для матрицы s,

sigma = (y-x*beta)' * (y-x*beta) / (t-rank(x))
r

Матрица остатков OLS, r = y - x*beta.

См. также: gls, pinv.

: [beta, v, r] = gls (y, x, o) ¶

Модель обобщённых наименьших квадратов (GLS).

Выполняет оценку обобщённых наименьших квадратов для многомерной модели y = x*B + E, где y — матрица t×p, x — матрица t×k, b — матрица k×p и e — матрица t×p.

Каждая строка матрицы y представляет собой p-мерную наблюдение, в которой каждый столбец представляет собой переменную. Аналогично, строки матрицы x представляют собой k-мерные наблюдения или возможные заданные значения. Кроме того, множество наблюдений x должно иметь достаточный ранг, k, иначе b не может быть однозначно оценено.

Предполагается, что ошибки наблюдений e исходят из подлежащего p-мерного распределения с нулевым средним, но, возможно, с гетероскедастическими наблюдениями. То есть, в общем случае, mean (e) = 0 и cov (vec (e)) = (s^2)*o , в котором s — скаляр, а o — матрица t*p×t*p.

Значения возврата beta, v и r определяются следующим образом.

beta

Оценщик GLS для матрицы b.

v

Оценщик GLS для скаляра s^2.

r

Матрица остатков GLS, r = y - x*beta.

См. также: ols.

: x = lsqnonneg (c, d) ¶
: x = lsqnonneg (c, d, x0) ¶
: x = lsqnonneg (c, d, x0, options) ¶
: [x, resnorm] = lsqnonneg (…) ¶
: [x, resnorm, residual] = lsqnonneg (…) ¶
: [x, resnorm, residual, exitflag] = lsqnonneg (…) ¶
: [x, resnorm, residual, exitflag, output] = lsqnonneg (…) ¶
: [x, resnorm, residual, exitflag, output, lambda] = lsqnonneg (…) ¶

Минимизировать norm (c*x - d) при ограничении x >= 0.

c и d должны быть вещественными матрицами.

x0 — необязательная начальная оценка решения x.

options — структура параметров для изменения поведения алгоритма (см. optimset). lsqnonneg распознаёт эти параметры: "MaxIter", "TolX".

Выходы:

resnorm

Квадрат 2-нормы остатка: norm (c*x-d)^2

residual

Остаток: d-c*x

exitflag

Индикатор сходимости. 0 означает, что количество итераций превышено, и, следовательно, сходимости не достигнуто; >0 указывает, что алгоритм сошёлся. (Алгоритм стабилен и сойдётся при достаточном количестве итераций.)

output

Структура с двумя полями:

  • "algorithm": Использованный алгоритм ("nnls")
  • "iterations": Количество проведённых итераций.
lambda

Множители Лагранжа. Если они отличны от нуля, соответствующие значения x должны быть равны нулю, указывая, что решение прижато к координатной плоскости. Величина указывает, насколько улучшился бы остаток, если бы ограничения x >= 0 были ослаблены в этом направлении.

См. также: pqpnonneg, lscov, optimset.

: x = lscov (A, b) ¶
: x = lscov (A, b, V) ¶
: x = lscov (A, b, V, alg) ¶
: [x, stdx, mse, S] = lscov (…) ¶

Вычислить обобщенную линейную аппроксимацию методом наименьших квадратов.

Оценить x в модели b = Ax + w, где шум w предполагается имеющим нормальное распределение с ковариационной матрицей {\sigma^2} V.

Если размер матрицы коэффициентов A равен n×p, размер вектора/массива константных слагаемых b должен быть n×k.

Необязательный входной аргумент V может быть n-элементным вектором положительных весов (обратные дисперсии) или n×n симметричной положительно полуопределённой матрицей, представляющей ковариацию b. Если V не указан, возвращается решение обычного метода наименьших квадратов.

Входной аргумент alg, указывающий метод решения, в настоящее время игнорируется.

Помимо матрицы оценки наименьших квадратов x (p×k), функция также возвращает stdx (p×k), стандартное отклонение ошибки оценки x; mse (k×1), оценки масштабов ковариации ошибок данных (\sigma^2); и S (p×p или p×p×k, если k > 1), ковариационную матрицу ошибок x.

Ссылка: Golub и Van Loan (1996), Матричные вычисления (3-е изд.), Johns Hopkins, раздел 5.6.3

См. также: ols, gls, lsqnonneg.

: optimset () ¶
: options = optimset () ¶
: options = optimset (par, val, …) ¶
: options = optimset (old, par, val, …) ¶
: options = optimset (old, new) ¶

Создать структуру параметров для функций оптимизации.

При вызове без входных или выходных аргументов, optimset выводит список всех допустимых параметров оптимизации.

При вызове с одним выходным и без входных аргументов, возвращает структуру параметров с инициализированными всеми допустимыми параметрами по [].

При вызове со списком пар «параметр/значение», возвращает структуру параметров, где инициализированы только указанные параметры.

Если первый входной аргумент — существующая структура параметров old, значения обновляются из списка par/val или из структуры параметров new.

Если par не точно совпадает с именем стандартного параметра, optimset попытается сопоставить par со стандартным параметром и установит значение этого параметра, если совпадение найдено. Сопоставление нечувствительно к регистру и основано на совпадении символов в начале имени параметра. optimset вызовет ошибку, если найдёт несколько неоднозначных совпадений. Если стандартный параметр не найден, выводится предупреждение, и создаётся нестандартный параметр.

Стандартный список допустимых параметров:

AutoScaling
ComplexEqn
Display

Запрос подробного отображения результатов оптимизации. Значения:

"off" [по умолчанию]

Без отображения.

"iter"

Отображать промежуточные результаты на каждой итерации цикла.

"final"

Отобразить результат последней итерации цикла.

"notify"

Отобразить результат последней итерации цикла, если функция не сошлась.

FinDiffType
FunValCheck

При включении отображает ошибку, если целевая функция возвращает недопустимое значение (комплексное число, NaN или Inf). Должно быть установлено на "on" или "off" [по умолчанию]. Примечание: функции fzero и fminbnd корректно обрабатывают значения Inf, и только комплексные значения или NaN вызовут ошибку в этом случае.

GradObj

Если установлено на "on", функция минимизации должна возвращать второй аргумент, который является градиентом, или первой производной, функции в точке x. Если установлено на "off" [по умолчанию], градиент вычисляется с помощью конечных разностей.

Jacobian

Если установлено на "on", функция минимизации должна возвращать второй аргумент, который является матрицей Якоби, или первой производной, функции в точке x. Если установлено на "off" [по умолчанию], матрица Якоби вычисляется с помощью конечных разностей.

MaxFunEvals

Максимальное количество вычислений функции, прежде чем оптимизация остановится. Должно быть положительным целым числом.

MaxIter

Максимальное количество итераций алгоритма, прежде чем оптимизация остановится. Должно быть положительным целым числом.

OutputFcn

Пользовательская функция, выполняемая один раз на каждой итерации алгоритма.

TolFun

Критерий завершения для выходных данных функции. Если разность в вычисленной целевой функции между одной итерацией алгоритма и следующей меньше чем TolFun, оптимизация останавливается. Должно быть положительным скаляром.

TolX

Критерий завершения для входных данных функции. Если разность в x, текущей точке поиска, между одной итерацией алгоритма и следующей меньше чем TolX, оптимизация останавливается. Должно быть положительным скаляром.

TypicalX
Updating

Этот список может быть расширен пользователем или другими загруженными пакетами Octave. Обновленный список допустимых параметров можно запросить, используя форму без аргументов optimset.

Примечание 1: При сопоставлении коротких имён параметров учитываются только имена параметров из стандартного списка, и par всегда будет расширен для соответствия стандартному параметру, даже если существует точное совпадение с нестандартным параметром. Значение нестандартного параметра, который неоднозначен с одним или несколькими стандартными параметрами, не может быть установлено с помощью optimset и может быть установлено только с помощью setfield или точечной нотации для структур.

Примечание 2: Структура параметров оптимизации предназначена в основном для управления известными параметрами функциями optimset и optimget. Непредсказуемое поведение при последующих вызовах optimset или optimget может возникнуть при создании нестандартных или неоднозначных параметров, или при загрузке/выгрузке пакетов, которые меняют список известных параметров после создания структуры параметров оптимизации.

См. также: optimget.

: val = optimget (options, par) ¶
: val = optimget (options, par, default) ¶

Возвращает значение конкретного параметра par из структуры параметров оптимизации options, созданной функцией optimset.

Если par не определён, возвращает значение по умолчанию default, если оно указано, иначе — пустую матрицу.

Если par не точно совпадает с именем стандартного параметра, optimget попытается сопоставить par со стандартным параметром и вернёт значение этого параметра, если совпадение найдено. Сопоставление нечувствительно к регистру и основано на совпадении символов в начале имени параметра. optimget вызовет ошибку, если найдёт несколько неоднозначных совпадений. Если стандартный параметр не найден, выводится предупреждение. См. optimset для информации о стандартном списке параметров.

Примечание: При сопоставлении коротких имён параметров учитываются только имена параметров из стандартного списка, и par всегда будет расширен для соответствия стандартному параметру, даже если существует точное совпадение с нестандартным параметром. Значение нестандартного параметра, который неоднозначен с одним или несколькими стандартными параметрами, не может быть возвращено функцией optimget и может быть получено только с помощью getfield или точечной нотации для структур.

См. также: optimset.

Предыдущая: Нелинейное программирование, Вверх: Оптимизация [Оглавление][Указатель]

© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.2.0/Linear-Least-Squares.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API