行列を正定にする方法は?


10

次の因子分析モデルにEMアルゴリズムを実装しようとしています。

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

ここで、はp次元のランダムベクトル、は潜在変数のq次元ベクトル、はパラメーターのpxq行列です。a j BWjajB

モデルに使用される他の仮定の結果として、私が知っている分散共分散行列誤差項のある、 = DIAG(、、...、)。D E J D σ 2 1 σ 2 2 σ 2 PWj∼N(μ,BB′+D)DejDσ12σ22σp2

EMアルゴリズムが機能するために、および行列の推定を含むドーム反復を行っています。これらの反復中に、および新しい推定を使用して、各反復で逆を計算しています。残念ながら、反復の過程では正定性を失います(ただし、これは分散共分散行列であるため、そうするべきではありません)。この状況は、アルゴリズムの収束を台無しにします。私の質問は:D B B ′ + D B D B B ′ + DBDBB′+DBDBB′+D

  1. この状況は、EMのすべてのステップで可能性が増加するはずなので、アルゴリズムに問題があることを示していますか?

  2. 行列を正定にする実際的な方法は何ですか?

編集:私は次のように述べている行列反転補題を使用して逆を計算しています:

(BB′+D)−1=D−1−D−1B(Iq+B′D−1B)−1B′D−1

ここで、右側は行列の逆行列のみを含みます。q×q


1
が正の明確さを「失う」方法をよりよく理解するのに役立つかもしれません。これは、または(またはその両方)のいずれかが非正定になることを意味します。これは、がから直接計算される場合は困難であり、が対角に正方形を持つ対角行列として計算される場合はさらに困難です。B B ' D B B ' B DBB′+DBB′DBB′BD
— whuber

@whuber通常はFAであるため、は正定ではありません。しかし、(理論的には)は、がすべてゼロより大きいと仮定して、あるはずです。B B ' B B ' + Dは、σ 2 jでq<pBB′BB′+Dσj2
— JMS

:これは、この質問に関連しているstats.stackexchange.com/questions/6364/...
— ギリアド

1
@JMSありがとうございます。私のコメントはまだ適切だと思います:は不明確になる可能性がありますが、それでも負の固有値を持つべきではありません。、の最小値が反転アルゴリズムの数値誤差に相当する場合に問題が発生します。この場合、1つの解決策は、SVDをに適用し、本当に小さい(または負の)固有値をゼロにしてから、を再計算してを追加することです。σ 2 I B B ' B B ' DBB′σi2BB′BB′D
— whuber

1
DIq+B′D−1Bq<p

回答:


3

Bqq<p

A−1bAx=b

DBB′DDBB′+DD

σi2D

BB′+D


第二に、アルゴリズムの主要部分では、実際に行列を反転させたくないということです。ただし、標準的な見積もりを取得するには、最後に必要になる場合があります。このブログ投稿をご覧ください。johndcook.com
— Samsdram

D行列の値は、反復回数が増えるにつれて小さくなります。あなたが指摘したように、これはおそらく問題です。
— Andy Amos

1
BB′Dσi2∑qBiq2≈σi2
— JMS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.