ムーア・ペンローズ一般逆行列と多項式曲線による

データフィッティング - MATLAB companion

  
早稲田大学教育・総合科学学術院 新井仁之
公開日:2024年12月18日
   
ここでは,YouTube 講義動画
[1]『一般逆行列入門 - ムーア・ペンローズ一般逆行列,最小2乗解,多項式曲線によるデータフィッティング』(講師:新井仁之)
https://www.youtube.com/watch?v=QJrSik9S0_Y
の学習をサポートする MATLAB コードについて解説する.
はじめに数学的な概説をする.詳細は上掲の講義動画を参照してほしい.

 

1.一般逆行列とは

線形代数では,良く知られているように逆行列という概念がある. 行列 A に対して,
(ただし n次単位行列)をみたすような 行列 B が存在する場合,A可逆あるいは正則という.このような B が存在するならば,B は一意的である.すなわち,もし をみたすような 行列 Cが存在するならば, である.そこで,BA逆行列といい,通常 B で表す.
ただし,すべての 行列 が可逆であるとは限らない.たとえば は可逆ではない.
しかし,実際問題として現れる行列はしばしば可逆ではない.あるいは非正方行列,すなわち 行列で, である.このような場合に逆行列を一般化した一般逆行列がある.
定義 1 (一般逆行列)
A 行列とする. 行列 で,
をみたすものを,A の一般逆行列という.
次の定理が知られている.
定理 1
A の一般逆行列が存在する.ただし,一般逆行列は一意的とは限らない.
この定理の証明は p.8 記載の文献 [A] の定理15.1 を参照.一意性がないことについては,次の例がある. は可逆ではないが,aは任意の実数)は A の一般逆行列になっている.
検証
A = [1 1 1; 0 1 0; 1 2 1];
syms a;
B = [1 -1 0; 0 1 0; -a -a a];
C = A*B*A-A;
disp(C)
練習問題
行列 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 行列とし,bm 次元縦ベクトルとする.このとき,もし
をみたす n 次元縦ベクトル が存在するとき,これを方程式 最小 2 乗解という.もちろん方程式 の解が存在するならば,すなわち をみたす x が存在するならば,明らかにこれは最小 2 乗解になっている.問題はこの方程式が解を持たない場合である.
 ムーア・ペンローズ一般逆行列は最小 2 乗解を与える.
次の定理が有用である.
定理 3
A 行列とし,bm 次元縦ベクトルとする. とすると, は方程式 の最小 2 乗解である.特に の最小2乗解のうち,ノルム最小のものを与える.
証明 [A] の 15.3節参照.

 

4.ムーア・ペンローズ一般逆行列の構成方法

それでは,ムーア・ペンローズ一般逆行列の具体的な構成はどのようにすればよいか.ムーア・ペンローズ一般逆行列の構成方法はいくつか知られているが([A] 参照),ここでは計算機による計算に載りやすい,特異値分解を用いた方法を解説する.特異値分解については,計算方法については
[2] 新井仁之,特異値分解のアルゴリズムと次元圧縮 - MATLAB版
http://www.araiweb.matrix.jp/Program/SVD_program_MATLAB2.html
また数学的証明については,YouTube講義動画
[3] 特異値分解入門 –基礎から画像処理への応用まで(講師:新井仁之)
https://www.youtube.com/watch?v=2kJmGyEGwJU
と [A] の 16 章を参照してほしい.
 
 ムーア・ペンローズ一般逆行列の構成
 A 行列とする.
Step 1. A の特異値標準形を求める.すなわち, とし,その 0 でない特異値 を求める.対角行列 を作る.特異値標準化のアルゴリズム([3], [1] 参照)により
をみたす ユニタリー行列 U ユニタリー行列Vを作る.ここで 零行列である.
Step 2. の逆行列 を作る.
Step 3. がムーア・ペンローズ一般逆行列 である.

 

5.一般逆行列を求める MATLAB コード

MATLAB には A のムーア・ペンローズ一般逆行列を求めるコマンド pinv(A) があるが,ここでも上記の構成方法に基づいて,MATLABコードを作る.なおムーア・ペンローズ一般逆行列の上記の特異値分解を用いた構成方法は MATLAB の pinv のヘルプ・ドキュメントにも記載されている.
関数ファイルを作成する.ここで特異値標準化を使う.これについては特異値分解の定理の証明のアルゴリズムを元に [2] で作成した SingNormal(A) があるが,ここでは MATLAB に内装されている svd(A) を使う.もちろん svd の代わりに SingNormal を使っても良い.
function X=MoorePenrose(A)
 
[M,N] = size(A);
[U,S,V] = svd(A);
U_conj = ctranspose(U);
Msize = rank(A);
D = S(1:Msize,1:Msize);
InverseD = inv(D);
SS = zeros(N,M);
SS(1:Msize,1:Msize) = InverseD;
X = V*SS*U_conj;
 
end
例の計算
A = [0 1 0;0 0 1; 0 0 0];
MP = MoorePenrose(A);
disp(MP)
0 0 0 1 0 0 0 1 0
MATLAB の pinv.
% MATLAB の pinv による計算
MP_Matlab = pinv(A);
disp(MP_Matlab)
0 0 0 1 0 0 0 1 0
これがわかると,最小 2 乗解も求めることができる.
A 行列とし,b を m 次元縦ベクトルとする.このとき
function x=LeastMeanSol(A,b)
 
AInv=MoorePenrose(A);
x=AInv*b;
 
end

 

多項式曲線によるデータフィッティング

最小 2 乗解を使って多項式によるデータになるべくフィットした多項式曲線を求めることができる.本節ではこれに関して解説する.
データ が与えられたとき,これにフィットする多項式曲線を求める.
とする.たとえば
x=[1 2 3 4 5];
y=[8 3 1 -1 0];
を考える.多項式の次数を p とする.
特に p = 8 としよう
p=8;
データが のとき,
として
のノルム最小の最小2乗解を とし,
とすれば,これが求める曲線となる.この多項式曲線を上掲のデータに対して具体的に求めていこう.
lenx=length(x);
X = ones(lenx,p+1);
for j=1:lenx
for i=1:p
X(j,i+1) = x(j)^i;
end
end
a = LeastMeanSol(X,y');
syms t f(t)
f(t) = a(1);
for i=1:p
f(t) = f(t)+a(i+1)*t^i;
end
 
syms s
f(s)
ans = 
データのグラフ
plot(x,y,'x','LineWidth',1.5,"Color",'b')
データと曲線のグラフ
figure
xx=1:0.01:x(end);
%plot(x,yy,'x','LineWidth',1.5,"Color",'w')
%hold on
plot(xx,f(xx),'LineWidth',2,"Color",'r')
hold on
plot(x,y,'x','LineWidth',2,"Color",'b')
hold off
参考文献
[A] 新井仁之著『線形代数 基礎と応用』(日本評論社)
の第15章と第16章の中から,ムーア・ペンローズ一般逆行列に関連する部分
Copyright © Hitoshi Arai, 2024