Rを使ったコレスキー分解例

正定値行列を分解する方法。 正定値行列は、すべての可能なベクトル\(x\)に対して\(x’Ax>0\)の対称行列として定義されます。 コレスキー分解および他の分解方法は、行列計算を明示的に実行することはしばしば実現可能ではないため、重要です。

コレスキー分解は、コレスキー分解とも呼ばれ、正の定義行列を分解する方法です。 任意のベクトル\(x\)に対して\(X’Ax>0\)が存在するとき、\(X’Ax>0\)は\(X’Ax>0\)を満たす対称行列として定義されます。 コレスキー分解やその他の分解法は、しばしば行列計算を明示的に実行可能ではないため、重要です。 Coleskydecompositionincludeのいくつかのアプリケーションは、線形方程式、モンテカルロシミュレーション、andKalmanフィルタの解くシステムを含みます。

コレスキー分解は、正定値行列\(A\)を次のように分解します:

$ $A=LL^T$ $

コレスキー分解で行列を分解する方法

コレスキーアプローチで行列分解を計算するには、多くの方法があります。 この記事では、これと同様のアプローチを取ります実装。

行列を因数分解する手順は次のとおりです:

  1. 計算\(L_1=\sqrt{a_{11}}\)
  2. \(k=2,\dots,n\)の場合、\(k=2,\dots,n\)は:

  3. \(L_{k-1}l_k=a_k\)を見つける\(l_k\)を見つける\(L_{k-1}l_k=a_k\)を見つける\)

  4. \(l_{kk}=\sqrt{a_{kk}-l_K^T l_k}\)
  5. \(l_K=
    \開始{bmatrix}L_{k-1}&0\l_k^T&l_{kk}端\{bmatrix}}

    \)

コレスキー分解

の例として、次の行列\(A\)を考えてみましょう。

a A=\begin{bmatrix}$ $a=\begin{bmatrix}$ $A=\begin{bmatrix}$ $} 3 & 4 & 3 \\ 4 & 8 & 6 \\ 3 & 6 & 9\上記の行列\(A\)は、alvin RencherによるMethods ofmultivariate Analysisという本の演習2.16から取られています。

\(L_1\)を見つけることから始めます。

l l_1=\sqrt{a_{11}}=\sqrt{a_{11}}=\sqrt{a_{11}}=\sqrt{a_{11}}=\sqrt{3} = 1.732051 $$

次は\(l_2)を見つけます。\)

$$ l_2=\frac{a_{21}}{L_1}=\frac{4}{\sqrt{3}} = 2.309401 $$

それから\(l_{22}\)を計算することができます。A L_{22}=\sqrt{A_{22}-L_2^T L_2}=\sqrt{A_{22}-L_2^T L_2}=\sqrt{A_{22}-L_2^T L_2}=\sqrt{A_{22}-L_2^T L_2}{8 – 2.309401^2} = 1.632993 $$

我々は今、\(L_2\)行列を持っている:

l L_2=\開始{bmatrix}L_1&0\L_2^T&L_{22}端\{bmatrix}=\開始{bmatrix}l L_1&L_2^T&L_{22}端\{bmatrix}=L_2=\開始{bmatrix}l L_1&L_2^T&L_{22}端\{bmatrix} 1.732051 & 0 \\ 2.309401 & 1.行列は\(3\times3\)であるため、もう1回の反復しか必要としません。Computed l_3=\frac{a_3}{l_2}=a_3l_2^{-1}=\begin{bmatrix}fracとなります。l l_3=\frac{a_3}{l_2}=a_3l_2^{-1}=\begin{bmatrix}Lとなります。l l_3=\frac{a_3}{l_2}=\frac{a_3}{l_2}=\frac{a_3}{l_2}=\frac{a_3}{l_2}=\frac{a_3}{l_2}=\frac{a_3}{l_2} 1.732051 & 0 \\ 2.309401 & 1.632993\端{bmatrix}begin{-1}\開始{bmatrix}3\6\端{bmatrix}$$
$$l_3=\開始{bmatrix}1.7320508\1.224745\端{bmatrix}$$

\(a L_{33}=\sqrt{A_{33}-L_3^T L_3}=\sqrt{9-\begin{bmatrix}1.7320508&1.224745\end{bmatrix}\begin{bmatrix}1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\1.7320508\224745}} = 2.12132 $$

これは私たちに\(L_3\)行列を与えます:

l L_3=\begin{bmatrix} 1.7320508 & 0 & 0 \\ 2.309401 & 1.632993 & 0 \\ 1.7320508 & 1.224745 & 2.12132\end{bmatrix}

\(L_3\)行列を解として取ることができます。 分解を転置すると、行列は上三角行列に変更されます。

R

におけるコレスキー分解関数chol()は、アポスティティブ定値行列に対してコレスキー分解を実行します。 行列\(A\)を次のように定義します。

A = as.matrix(data.frame(c(3,4,3),c(4,8,6),c(3,6,9)))colnames(A) <- NULLA
## ## 3 4 3## 4 8 6## 3 6 9

次に、行列をchol()関数で因数分解します。

A.chol <- chol(A)A.chol
## ## 1.732051 2.309401 1.732051## 0.000000 1.632993 1.224745## 0.000000 0.000000 2.121320

関数chol()は、上三角行列を返します。 転置分解された行列は、上記の結果のように下三角行列を生成します。

t(A.chol)
## ## 1.732051 0.000000 0.00000## 2.309401 1.632993 0.00000## 1.732051 1.224745 2.12132

上記の結果は、chol()関数の出力と一致します。

また、結果とid\(A=LL^T\)を表示することもできます。

t(A.chol) %*% A.chol
## ## 3 4 3## 4 8 6## 3 6 9

概要

コレスキー分解は、行列の直接計算が最適でない場合に頻繁に利用されます。 この方法は、その相対的に有効な性質および安定性のために、多変量解析などの様々な用途に使用される。

(2011).

コレスキー分解のためのアルゴリズム。 Http://www.math.sjsu.edu/~foster/m143m/cholesky.pdf

Cholesky分解(2016)から取得しました。 ウィキペディアで。 から取得https://en.ウィキペディア…org/wiki/Cholesky_Decomposition

Rencher,A.C.(2002). 多変量解析の方法。 ニューヨーク:J.Wiley。

  • いくつかのグループの二次判別分析
  • 二つのグループの二次判別分析
  • いくつかのグループの判別分析
  • いくつかのグループの分類のための線形判別分析
  • 二つのグループの分類のための線形判別分析