ムーア・ペンローズ一般逆行列と多項式曲線による
データフィッティング - MATLAB companion
早稲田大学教育・総合科学学術院 新井仁之
公開日:2024年12月18日
2025/1/8 文の微小修正
2025/1/27 typo.
ここでは,YouTube 講義動画
[1]『一般逆行列入門 - ムーア・ペンローズ一般逆行列,最小2乗解,多項式曲線によるデータフィッティング』(講師:新井仁之)
の学習をサポートする MATLAB コードについて解説する.
はじめに数学的な概説をする.詳細は上掲の講義動画を参照してほしい.
1.一般逆行列とは
線形代数では,良く知られているように逆行列という概念がある.
行列 A に対して,
(ただし
は n次単位行列)をみたすような
行列 B が存在する場合,A は可逆あるいは正則という.このような B が存在するならば,B は一意的である.すなわち,もし
をみたすような
行列 Cが存在するならば,
である.そこで,B を A の逆行列といい,通常 B を
で表す.ただし,すべての
行列 が可逆であるとは限らない.たとえば
は可逆ではない. しかし,実際問題として現れる行列はしばしば可逆ではない.あるいは非正方行列,すなわち
行列で,
である.このような場合に逆行列を一般化した一般逆行列がある.
定義 1 (一般逆行列)
をみたすものを,A の一般逆行列という.
次の定理が知られている.
定理 1
A の一般逆行列が存在する.ただし,一般逆行列は一意的とは限らない.
この定理の証明は p.8 記載の文献 [A] の定理15.1 を参照.一意性がないことについては,次の例がある.
は可逆ではないが,
(aは任意の実数)は A の一般逆行列になっている.
検証
A = [1 1 1; 0 1 0; 1 2 1];
B = [1 -1 0; 0 1 0; -a -a a];
練習問題
行列 A が可逆(あるいは正則)であるとする.このとき,A の一般逆行列
は逆行列になっている.したがって,一般逆行列は一意的に定まる.このことを証明せよ.
2.ムーア・ペンローズ一般逆行列
一般逆行列の中で,特に有用なのがムーア・ペンローズの一般逆行列である.詳しくは以下に述べるが,ムーア・ペンローズ一般逆行列は,任意の
行列に対して存在し,しかも一意的に定まることが知られている.まずムーア・ペンローズの一般逆行列の定義をする.
定義2 (ムーア・ペンローズ一般逆行列)
A を
行列とする.
行列
が次の条件 (1)~(4) をみたすとき,A のムーア・ペンローズ一般逆行列という. (1) 
(2) 
(3)
(ここで ∗ は行列の転置をしてから各成分の複素共役をとる操作を表す) (4) 
次の定理が基本となる.
定理 2
A を
行列とする.A のムーア・ペンローズ一般逆行列がただ一つ存在する. 証明 [A,定理15.8] の証明参照.
3.ムーア・ペンローズ一般逆行列と最小2乗解
ムーア・ペンローズ一般逆行列の応用上重要な性質は,一般の連立1次線形連立方程式の最小2乗解を与えることである.最小 2 乗解の定義を復習しておこう.
最小 2 乗解とは
N 次元縦ベクトル
に対して,
をそのユークリッドノルムという.N 次元縦ベクトル(各成分は複素数でもよい)全体のなす集合を
により表す. A を
行列とし,b を m 次元縦ベクトルとする.このとき,もし をみたす n 次元縦ベクトル
が存在するとき,これを方程式
の最小 2 乗解という.もちろん方程式
の解が存在するならば,すなわち
をみたす x が存在するならば,明らかにこれは最小 2 乗解になっている.問題はこの方程式が解を持たない場合である.
ムーア・ペンローズ一般逆行列は最小 2 乗解を与える.
次の定理が有用である.
定理 3
A を
行列とし,b を m 次元縦ベクトルとする.
とすると,
は方程式
の最小 2 乗解である.特に
は
の最小2乗解のうち,ノルム最小のものを与える.
証明 [A] の 15.3節参照.
4.ムーア・ペンローズ一般逆行列の構成方法
それでは,ムーア・ペンローズ一般逆行列の具体的な構成はどのようにすればよいか.ムーア・ペンローズ一般逆行列の構成方法はいくつか知られているが([A] 参照),ここでは計算機による計算に載りやすい,特異値分解を用いた方法を解説する.特異値分解については,計算方法については
[2] 新井仁之,特異値分解のアルゴリズムと次元圧縮 - MATLAB版
また数学的証明については,YouTube講義動画
[3] 特異値分解入門 –基礎から画像処理への応用まで(講師:新井仁之)
と [A] の 16 章を参照してほしい.
ムーア・ペンローズ一般逆行列の構成
A を
行列とする. Step 1. A の特異値標準形を求める.すなわち,
とし,その 0 でない特異値
を求める.対角行列
を作る.特異値標準化のアルゴリズム([3], [1] 参照)により をみたす
ユニタリー行列 Uと
ユニタリー行列Vを作る.ここで
は
零行列である. Step 2.
の逆行列
を作る. Step 3.
がムーア・ペンローズ一般逆行列
である.
5.一般逆行列を求める MATLAB コード
MATLAB には A のムーア・ペンローズ一般逆行列を求めるコマンド pinv(A) があるが,ここでも上記の構成方法に基づいて,MATLABコード MoorePenrose を作る.なおムーア・ペンローズ一般逆行列の上記の特異値分解を用いた構成方法は MATLAB の pinv のヘルプ・ドキュメントにも記載されている.
関数ファイルを作成する.ここで特異値標準化を使う.これについては特異値分解の定理の証明のアルゴリズムを元に [2] で作成した SingNormal(A) があるが,ここでは MATLAB に内装されている svd(A) を使う.もちろん svd の代わりに SingNormal を使っても良い.
function X=MoorePenrose(A)
SS(1:Msize,1:Msize) = InverseD;
例の計算
A = [0 1 0;0 0 1; 0 0 0];
MATLAB の pinv.の結果との比較
これがわかると,最小 2 乗解も求めることができる.
A を
行列とし,b を m 次元縦ベクトルとする.このとき function x=LeastMeanSol(A,b)
多項式曲線によるデータフィッティング
最小 2 乗解を使って多項式によるデータになるべくフィットした多項式曲線を求めることができる.本節ではこれに関して解説する.
データ
が与えられたとき,これにフィットする多項式曲線を求める.
とする.たとえばを考える.多項式の次数を p とする.
特に p = 8 としよう
データが
のとき,
として
のノルム最小の最小2乗解を
とし,
とすれば,これが求める曲線となる.この多項式曲線を上掲のデータに対して具体的に求めていこう.データのグラフ
plot(x,y,'x','LineWidth',1.5,"Color",'b')
データと曲線のグラフ
%plot(x,yy,'x','LineWidth',1.5,"Color",'w')
plot(xx,f(xx),'LineWidth',2,"Color",'r')
plot(x,y,'x','LineWidth',2,"Color",'b')
参考文献
[A] 新井仁之著『線形代数 基礎と応用』(日本評論社)
の第15章と第16章の中から,ムーア・ペンローズ一般逆行列に関連する部分
Copyright © Hitoshi Arai, 2024