Как сделать матрицу положительно определенной?


10

Я пытаюсь реализовать алгоритм EM для следующей модели факторного анализа;

Wj=μ+Baj+ejforj=1,,n

где - p-мерный случайный вектор, a jWjaj - это q-мерный вектор скрытых переменных, а - матрица параметров pxq.B

В результате других предположений, использованных для модели, я знаю, что где D - ковариационная матрица дисперсии ошибочных членов e j , D = diag ( σ 2 1 , σ 2 2 , ..., σ 2 рWjN(μ,BB+D)DejDσ12σ22σp2 ).

Для алгоритма EM к работе, я делаю итерации купольные с участием оценки и D матриц и в течение этих итераций я вычисляя обратное B B ' + D на каждой итерации , используя новые оценки B и D . К сожалению, в ходе итераций B B + DBDBB+DBDBB+D теряет свою положительную определенность (но не должно, потому что это матрица дисперсии-ковариации), и эта ситуация разрушает сходимость алгоритма. Мои вопросы:

  1. Показывает ли эта ситуация, что с моим алгоритмом что-то не так, поскольку вероятность должна увеличиваться на каждом шаге ЭМ?

  2. Каковы практические способы сделать матрицу положительно определенной?

Редактировать: я вычисляю обратное с помощью леммы обращения матрицы, которая утверждает, что:

(BB+D)1=D1D1B(Iq+BD1B)1BD1

где правая часть включает в себя только обратные матрицы .q×q


1
Это может помочь лучше понять, как «теряет» свою положительную определенность. Это подразумевает, что либо B B , либо D (или оба) становятся неположительно определенными. Это трудно сделать, когда B B ' вычисляется непосредственно из BBB+DBBDBBB и еще сложнее, когда вычисляется как диагональная матрица с квадратами на диагонали! D
whuber

@whuber Обычно в FA , поэтому B B не всегда определенно положительно. Но (теоретически) B B + D должно быть, предполагая, что σq<pBBBB+D больше нуля. σj2
JMS

Это связано с этим вопросом: stats.stackexchange.com/questions/6364/…
Gilead

1
@JMS Спасибо. Я думаю, что мой комментарий все еще уместен: может быть неопределенным, но все равно не должно иметь никаких отрицательных собственных значений. Проблемы возникнут, когда наименьшее из σ 2 i сравнимо с числовой ошибкой в ​​алгоритме инверсии. Если это так, то одним из решений является применение SVD к B B ' и обнуление действительно малых (или отрицательных) собственных значений, а затем пересчитать BBBσi2BB и добавить D . BBD
whuber

1
Это должны быть маленькие элементы в ; В противном случае I q + B D - 1 B должно быть хорошо обусловлено, поскольку q < pDIq+BD1Bq<p
JMS

Ответы:


3

Хорошо, так как вы делаете FA, я предполагаю, что имеет полный ранг столбца q и q < pBqq<p . Нам нужно еще несколько деталей, хотя. Это может быть численная проблема; это также может быть проблемой с вашими данными.

Как вы вычисляете обратное? Вам нужно обратное явно, или вы можете повторно выразить расчет как решение для линейной системы? (то есть, чтобы получить решите A x = b для x, который обычно быстрее и более стабилен)A1bAx=b

Что происходит с ? Действительно ли оценки малы / 0 / отрицательны? В некотором смысле это критическое звено, потому что B B ′, конечно, имеет недостаток ранга и определяет сингулярную ковариационную матрицу перед добавлением D , поэтому вы не можете ее инвертировать. Добавление положительной диагональной матрицы D технически делает ее полным рангом, но B B + D может быть ужасно плохо обусловлен, если DDBBDDBB+DD мало.

Часто оценка для идиосинкразических дисперсий (ваши , диагональные элементы D ) близка к нулю или даже отрицательна; это так называемые чехлы Heywood. См., Например, http://www.technion.ac.il/docs/sas/stat/chap26/sect21.htm (любой текст FA должен обсуждать это, это очень старая и хорошо известная проблема). Это может произойти из-за неправильной спецификации модели, выбросов, неудачи, солнечных вспышек ... MLE особенно подвержен этой проблеме, поэтому, если ваш EM-алгоритм предназначен для того, чтобы вывести MLE наружу.σi2D

Если ваш EM-алгоритм приближается к режиму с такими оценками, это возможно для , чтобы потерять свою положительную определенность, я думаю. Есть различные решения; лично я предпочел бы байесовский подход, но даже тогда вы должны быть осторожны с вашими приорами (неправильные приоры или даже правильные приоры со слишком большой массой около 0 могут иметь ту же проблему в основном по той же причине)BB+D


Позвольте мне повторить, что в основной части алгоритмов вы никогда не захотите инвертировать матрицу. Вам может понадобиться в самом конце, чтобы получить стандартные оценки, хотя. Смотрите этот пост в блоге johndcook.com/blog/2010/01/19/dont-invert-that-matrix
Samsdram,

Значения матрицы D становятся все меньше и меньше с увеличением числа итераций. Может быть, это проблема, как вы указали.
Энди Амос

1
@ Энди Амос: Я бы поставил на это деньги. Как @whuber указывает, почти невозможно, чтобы имел отрицательные собственные значения, если вы вычисляете его напрямую, а о нулях (из-за недостатка ранга) следует заботиться, добавляя D с его положительной диагонали - если только некоторые из них элементы действительно маленькие. Попробуйте сгенерировать некоторые данные из модели, где σ 2 iBBDσi2qBiq2σi2 . Чем больше данных, тем лучше, чтобы оценки были точными и стабильными. Это по крайней мере скажет вам, если есть проблема в вашей реализации.
JMS
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.