σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Linear Algebra スキル›モジュール 4 · 最小二乗法と行列分解›トピック 4.2·~50 分中級

QR分解とグラム・シュミット法

スキル上の位置モジュール 4/4 · トピック 2/4
4.2 QR分解とグラム・シュミット法
—ラボスコア— / 100合計XP—連続日数—

正規直交基底を作る

正規直交な列は、行列が持ちうる最も扱いやすい列です。QTQ=IQ^{T}Q=IQTQ=I なので QQQ は長さと角度を保ち、誤差を拡大しません。グラム・シュミット法は、任意の独立な列 a1,…,an\mathbf{a}_1,\dots,\mathbf{a}_na1​,…,an​ を正規直交な列に変えます。q1=a1/∥a1∥\mathbf{q}_1=\mathbf{a}_1/\|\mathbf{a}_1\|q1​=a1​/∥a1​∥ とし、次の列からは、すでに得た q\mathbf{q}q への射影を引いて、残りを正規化します。

A=QR,Rij=qi⋅aj (i≤j),qj=aj−∑i<jRijqiRjjA=QR,\qquad R_{ij}=\mathbf{q}_i\cdot\mathbf{a}_j\ (i\le j),\qquad \mathbf{q}_j=\frac{\mathbf{a}_j-\sum_{i<j}R_{ij}\mathbf{q}_i}{R_{jj}}A=QR,Rij​=qi​⋅aj​ (i≤j),qj​=Rjj​aj​−∑i<j​Rij​qi​​(1)

使った数を記録するとQR分解になります。QQQ は正規直交な列を持ち、RRR は上三角行列で、Rij=qi⋅ajR_{ij}=\mathbf{q}_i\cdot\mathbf{a}_jRij​=qi​⋅aj​、対角成分は長さ RjjR_{jj}Rjj​ です。最小二乗では、∥Ax−b∥=∥QRx−b∥\|A\mathbf{x}-\mathbf{b}\|=\|QR\mathbf{x}-\mathbf{b}\|∥Ax−b∥=∥QRx−b∥ を Rx^=QTbR\hat{\mathbf{x}}=Q^{T}\mathbf{b}Rx^=QTb が最小にします。これは三角系で、後退代入で解け、ATAA^{T}AATA を一度も作りません。そのため条件数は κ(A)2\kappa(A)^2κ(A)2 ではなく κ(R)=κ(A)\kappa(R)=\kappa(A)κ(R)=κ(A) です。

2列へのグラム・シュミット法A=(3142)A=\begin{pmatrix}3&1\\4&2\end{pmatrix}A=(34​12​)、列は a1=(3,4)\mathbf{a}_1=(3,4)a1​=(3,4) と a2=(1,2)\mathbf{a}_2=(1,2)a2​=(1,2) とします。R11=∥a1∥=5R_{11}=\|\mathbf{a}_1\|=5R11​=∥a1​∥=5、q1=(0.6, 0.8)\mathbf{q}_1=(0.6,\,0.8)q1​=(0.6,0.8)。次に R12=q1⋅a2=2.2R_{12}=\mathbf{q}_1\cdot\mathbf{a}_2=2.2R12​=q1​⋅a2​=2.2 で、a2−2.2 q1=(−0.32, 0.24)\mathbf{a}_2-2.2\,\mathbf{q}_1=(-0.32,\,0.24)a2​−2.2q1​=(−0.32,0.24) の長さが R22=0.4R_{22}=0.4R22​=0.4 なので q2=(−0.8, 0.6)\mathbf{q}_2=(-0.8,\,0.6)q2​=(−0.8,0.6)。よって Q=(0.6−0.80.80.6)Q=\begin{pmatrix}0.6&-0.8\\0.8&0.6\end{pmatrix}Q=(0.60.8​−0.80.6​)、R=(52.200.4)R=\begin{pmatrix}5&2.2\\0&0.4\end{pmatrix}R=(50​2.20.4​)。確認:det⁡A=2=det⁡R\det A=2=\det RdetA=2=detR。
  • Q:正規直交な列、QTQ=IQ^{T}Q=IQTQ=I。誤差は拡大されない。
  • R:上三角行列。対角成分は、前の方向を取り除いた後に残る長さ。
  • 修正グラム・シュミット法(ライブラリではハウスホルダー反射)は浮動小数点でも QQQ の直交性を保つ。教科書版は、ほぼ従属な列で直交性を失う。
ライブラリが回帰にQR分解を使う理由金融の回帰変数はほぼ共線になりがちです(相関の強い多数のファクター、多項式の項)。正規方程式はその条件数を2乗し、何も知らせずに無意味な値を返しますが、QR分解(やSVD)なら対処できます。これがNumPyやstatsmodelsの最小二乗ルーチンの裏にあるアルゴリズムで、総仕上げで皆さんが実装するものです。

ラボ:採点される内容

  • 最初の対角成分10点
  • 行列 Q20点
  • 行列 R20点
  • R から行列式を求める15点
  • QR分解による最小二乗15点
  • QR分解の精度が高い理由20点
0/ 6問回答済み
問題
1数値で答える10点未回答

A=(3142)A=\begin{pmatrix}3&1\\4&2\end{pmatrix}A=(34​12​)、列は a1=(3,4)\mathbf{a}_1=(3,4)a1​=(3,4) と a2=(1,2)\mathbf{a}_2=(1,2)a2​=(1,2) とします。R11=∥a1∥R_{11}=\|\mathbf{a}_1\|R11​=∥a1​∥ を求めてください。

R11=R_{11} =R11​=許容:± 0.001
2行列・ベクトル20点未回答

A=(3142)A=\begin{pmatrix}3&1\\4&2\end{pmatrix}A=(34​12​)、列は a1=(3,4)\mathbf{a}_1=(3,4)a1​=(3,4) と a2=(1,2)\mathbf{a}_2=(1,2)a2​=(1,2) とします。グラム・シュミット法を行い、Q=(q1 q2)Q=(\mathbf{q}_1\ \mathbf{q}_2)Q=(q1​ q2​) を埋めてください(小数でかまいません)。

Q=Q =Q=
3行列・ベクトル20点未回答

A=(3142)A=\begin{pmatrix}3&1\\4&2\end{pmatrix}A=(34​12​)、列は a1=(3,4)\mathbf{a}_1=(3,4)a1​=(3,4) と a2=(1,2)\mathbf{a}_2=(1,2)a2​=(1,2) とします。A=QRA=QRA=QR となる上三角行列 RRR を埋めてください。

R=R =R=
4数値で答える15点未回答

A=(3142)A=\begin{pmatrix}3&1\\4&2\end{pmatrix}A=(34​12​)、列は a1=(3,4)\mathbf{a}_1=(3,4)a1​=(3,4) と a2=(1,2)\mathbf{a}_2=(1,2)a2​=(1,2) とします。QQQ は回転(det⁡Q=1\det Q=1detQ=1)なので ∣det⁡A∣=∣det⁡R∣|\det A|=|\det R|∣detA∣=∣detR∣ です。R=(52.200.4)R=\begin{pmatrix}5&2.2\\0&0.4\end{pmatrix}R=(50​2.20.4​) の対角成分から計算してください。

∣det⁡A∣=|\det A| =∣detA∣=許容:± 0.001
5選択15点未回答

A=QRA=QRA=QR が与えられたとき、Ax≈bA\mathbf{x}\approx\mathbf{b}Ax≈b の最小二乗解を与える手順はどれですか。

6言葉で説明する20点未回答

最小二乗をQR分解で解くほうが正規方程式より精度が高い理由を2文で述べてください。

数学モードキーボードまたは LaTeX で入力問題1/6 · Ctrl ⏎ で確認

コードを実行するにはログインしてください。

レクチャーはすべて無料で読めます。コードの実行、テスト、ラボの提出にはアカウントの作成かログインが必要です。

  • ブラウザ内IDEとbashターミナル。インストール不要
  • 即時採点、XP、スキルでの現在地
アカウントを作成ログイン
または
GitHubで続ける