最小二乗法による近似直線の係数を行列計算で求める方法
最小二乗法を使って近似直線を引くには、行列計算を使うと考え方が簡単です。
まず準備運動として、平面上の2点を通る直線
を引いてみましょう。このとき、
とおけば、
と書けます。よって、
と表すことができます。求めたいベクトルは、左から
の逆行列をかけて、
とすれば求まります。ここまでは問題ありませんよね?
最小二乗法を使う場合は、点の数が3点以上になる場合であって、
として、
と書くことができます(直線が必ずしもすべての点を通らないのでニアリイコールを使っています)。でも、が正方行列ではないので、逆行列を求めることができません。
ところが、左から転置行列をかけてしまえば、正方行列になるではありませんか。
つまり、
とすれば、は
の行列で、
が
の行列なので、
は
の正方行列になります。
この正方行列が正則であれば、逆行列が存在します。それを左から掛けると、
となり、何かしらのが解析的に求まるではありませんか!
実は、これが最小二乗法で求めた解と一致するのです。
何と素晴らしい!
ちなみに、ここでは、の2次元平面について述べていますが、3次元以上の多次元でも同様に考えることができます。
念のため、実データで検算してみる
行列を使わずに係数を求めた前回の記事で使ったデータで検算してみます。この答えは
でした。
まず、データから配列を作ります。
よって、
となり、あらかじめ示しておいた答えと一致しました。
証明
念のため、証明します。
まず、誤差の二乗和を考えます。
ここで、
とおくと、
となります。ただし、最後の式変形では、
であることを使いました。は、
、
、
の行列の積なのでスカラ値であり、転置をとっても値が変わりません。
ここで、
および
であることに注意して、を
それぞれで偏微分して、勾配ベクトルを求めると、
となります。
誤差の二乗和が最小値になる条件は、この勾配ベクトルが0になるときで、
です。これは、(1)に示した条件になるので、(2)で係数が計算できることが示されました。
コメント