Улучшение плохо обусловленной матрицы

У меня есть плохо обусловленная матрица, чей rcond() близок к нулю, и поэтому обратная матрица не оказывается правильной. Я попытался использовать pinv(), но это не решает проблему. Вот как я принимаю обратное:

X = (A)\(b);

Я искал решение этой проблемы и нашел эту ссылку (последнее решение) для улучшения матрицы. Решение там предлагает использовать это:

A_new = A_old + c*eye(size(A_old));

Где c > 0. До сих пор использование этой техники позволяло сделать матрицу A лучше обусловленной, и результирующее решение выглядело лучше. Однако я исследовал, используя разные значения c, и результирующее решение зависит от выбранного значения c.

Помимо ручного поиска значения c, есть ли автоматический способ найти значение c, для которого я получу лучшее решение?


person Community    schedule 12.09.2013    source источник
comment
попробуйте также спросить на math.stackexchange.com...   -  person Autonomous    schedule 12.09.2013
comment
Выполнение A\b дает вам ошибки? Насколько велик A? Вы можете опубликовать его содержимое, или...?   -  person Rody Oldenhuis    schedule 12.09.2013
comment
А для чего нужен обратный?   -  person Rody Oldenhuis    schedule 12.09.2013
comment
Чтобы сделать Aлучше обусловленным, вам нужно изменить свою матрицу. Какой критерий у вас есть, чтобы ограничить изменения, разрешенные в матрице? В противном случае ответ типа «заменить A на матрицу идентичности» решит ваш вопрос.   -  person Luis Mendo    schedule 12.09.2013
comment
Вам будет полезен этот набор инструментов: mathworks.com/matlabcentral/fileexchange/52-regtools< /а>   -  person Amro    schedule 12.09.2013


Ответы (3)


В дискретной обратной теории добавление небольшого значения c к диагонали матрицы A, которую нужно инвертировать, называется демпфированием инверсии, а небольшое добавляемое значение c называется коэффициентом Марквардта-Левенберга. Иногда матрица A имеет нулевые или близкие к нулю собственные значения, из-за чего матрица становится вырожденной; добавление небольшого коэффициента демпфирования к диагональным элементам делает его устойчивым. Чем больше значение c, тем больше демпфирование, ваша инверсия матрицы более стабильна, но вы дальше от истинного решения. Чем меньше значение c, тем меньше демпфирование, тем ближе ваша инвертированная матрица к истинной инвертированной матрице, но она может стать нестабильной. Иногда используется один метод «адаптивного демпфирования»: начните с тестового значения c, инвертируйте матрицу A, затем уменьшите значение c, снова выполните инверсию и так далее. остановитесь, когда вы получите странные значения в перевернутой матрице из-за того, что A снова станет единственным, как действительно большие числа. Я думаю, что это не совсем ответ на ваш вопрос, но это было слишком долго, чтобы поместить его в комментарий.

person Guddu    schedule 12.09.2013

Как уже отмечалось в комментариях, ответ на ваш вопрос в решающей степени зависит от вашего приложения. Может быть, добавление малого кратного единичной матрицы — правильное решение, а может быть, и нет. Для того, чтобы это определить, вам нужно рассказать нам: Как возникла эта матрица? А для чего нужен обратный?

Два распространенных случая:

  • Если вы точно знаете матрицу A, например. поскольку это матрица проектирования в общей линейной модели b = A * X, ее изменение не является хорошей идеей. В этом случае матрица определяет линейную систему уравнений, и если матрица сингулярна, то это означает, что у этой системы нет единственного решения. Чтобы выбрать одно из бесконечного множества возможных решений, существуют разные стратегии: X = A \ b выбирает решение с максимально возможным количеством нулевых коэффициентов, а X = pinv(A) * b выбирает решение с минимальной нормой L2. См. примеры в документации pinv.

  • Если матрица A оценивается по данным, например. матрица ковариации для классификатора LDA, и у вас есть основания полагать, что истинное значение не является сингулярным, а сингулярность возникает просто из-за отсутствия достаточного количества точек данных для оценки, а затем применить регуляризацию или «усадку», добавив небольшое кратное Матрица идентичности является общей стратегией. В этом случае Шефер и Стриммер (2005) описывают способ оценки оптимального коэффициента регуляризации. из самих данных.

Но я уверен, что есть и другие случаи с другими ответами.

person A. Donda    schedule 31.10.2013

Добавление небольших значений к диагонали A примерно эквивалентно введению термина L2-нормы регуляризации в задача наименьших квадратов Ax=b. То есть каждый стремится минимизировать остаток, а также добавленное ограничение:

min ||Ax-b||^2 + lambda*||x||^2

где lamdba управляет весом, придаваемым минимизации ограничения по сравнению с минимизацией нормы невязки.

Обычно этот параметр выбирается с использованием какого-либо метода перекрестной проверки.

person Amro    schedule 12.09.2013
comment
Итак, по сути, нет ничего плохого в добавлении небольших значений к диагонали A, верно? - person ; 12.09.2013
comment
да, если быть точным, это добавление множителя матрицы идентичности, как вы сделали: c*eye(.). К package Я упоминал ранее. - person Amro; 13.09.2013
comment
Рассматривая 2 × 2 A ранга 1, но не вырожденное в остальном, визуализируйте общий пример. Первый член становится долиной параболического сечения, бесконечно далеко идущей по плоскости и несколько смещенной от центра. Второй член представляет собой параболоид с центром в начале координат. До добавления второго члена не было единственного решения. Но, добавив его, мы добавили градиент дну долины (если только оно не пересекает начало координат), и теперь вместо получения хотя бы одного правильного решения из их бесконечного множества мы получаем единственное, не т вполне правильно. - person Evgeni Sergeev; 08.03.2016
comment
хм .. Я думаю, @A.Donda сделал несколько хороших замечаний выше (+1); Это действительно зависит от приложения, и подталкивание матрицы таким образом имеет смысл только в том случае, если она была каким-то образом оценена и вышла плохо обусловленной из-за недостаточности данных во время оценки... При решении системы в целом, а матрица является единственной, тогда это тот. IMO Если вы измените его, то вы действительно решаете немного другую систему :) - person Amro; 09.03.2016