ムーア・ペンローズ一般逆行列と多項式曲線による
データフィッティング - MATLAB companion
早稲田大学教育・総合科学学術院 新井仁之
公開日:2024年12月18日
ここでは,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コードを作る.なおムーア・ペンローズ一般逆行列の上記の特異値分解を用いた構成方法は 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