いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

新・写真から立体を再現(4)最小2乗法を行列で説明する

 連立方程式を解きます。最初の2本でx、yが決まってしまうので、3本を満たす普通の意味の解はありませんが、なるべくうまい値を見つけます。

f:id:Inuosann:20200507125922p:plain

行列、ベクトルを使って考えるため、次のように書き換えます。

f:id:Inuosann:20200507134542p:plain

後の都合で、これをx+yと書いておきましょう。つまり

f:id:Inuosann:20200507142826p:plain

とおくのです。また次のようにおきましょう。

f:id:Inuosann:20200507144107p:plain

さっきの式はさらに次のように書き換えられます。

f:id:Inuosann:20200507134638p:plain

つまりAと書けます。

 さて、例えばx=1,y=2としたときの右辺のベクトルと目標のベクトルを比較します。

f:id:Inuosann:20200507140653p:plain

引き算して成分を2乗し和をとると0+1+1=2。この値は小さい方がよいですよね。こうしてx、yを「目標との差のベクトルの成分の2乗の和」が最も小さくなるように定める方法最小2乗法と言います。

 図で説明しましょう。

f:id:Inuosann:20200507190957p:plain
+y 、つまりAとうまい具合には行きません。が作る平面α上にがないからです。そこでを平面αに正射影したベクトルを考え、x+y つまり AAはα上のベクトル)となるようx、yを定めることにします。「次善の策」ということです。この「次善の策」のと書きましょう。つまりAです。

 さて、平面α上のベクトル Aに対し、A⊥() となればよいですね。つまり A・()=0 となればよい。よって A・(-A)=0。ここから少し変形します。

f:id:Inuosann:20200507191246p:plain
f:id:Inuosann:20200507153242p:plain

f:id:Inuosann:20200507154119p:plain
これで「次善の策」であるが求まりました。

 最後、詰めです。この方法では |||| 、つまり誤差の成分の2乗の和(のルート)が最小になるのでした。つまり、さっきのz=……で出た式が「最小2乗法」による答えです。

 この内容は次の本にあります。初めての人に向け、大変丁寧に解説してあります。抽象的な議論でなく、具体的に話を進めています。 

わかりやすい測量の数学―行列と最小二乗法

わかりやすい測量の数学―行列と最小二乗法

 

記号や説明はこちらの事情であちこち変えてしまっています。何度も紹介している『線形代数セミナー』(金谷健一2018共立出版)にも同様の説明がありますが、(こちらも大変分かりやすいのですが)抽象的な部分があります。記号の扱いに慣れていない方などは今回紹介した本の方がいいかも知れません。

 実際にこれを使うのは今回例にした Ax=b をなるべくよく満たすxを求める場面などで、このブログでも写真上の点から空間内の点を求める際に利用しています。でも上の式(z=……)を直接用いたわけではありません。Pythonで一般逆行列を求め、これを使ったのでした。最小2乗法でx、yを求めることは一般逆行列を使うことなのです。上の式(z=……)の中の

f:id:Inuosann:20200507161555p:plain

の部分がAの一般逆行列です。

 最後に大事なことを。必要があればPythonなどのライブラリを使えばよいのですから、その意味では「今回の内容は知らなくても大丈夫」ということになります。しかしそればかりだと、理論を自分で勉強してゆくことができなくなってしまいます。多分、関係する本を読もうとしても手も足も出ないでしょう。状況次第で仕方ない場合もあるとは思いますが、やはり数学や物理、工学が好きなら自分で一歩一歩理解しながら知識を身につけるのが一番です。