先日こんなツイートをしました。
通常の最小二乗法だとy=ax-bの直線とサンプルとのy軸上の差を最小化しようするけど、サンプルから直線まで下ろした垂線の距離を最小化しようとする良い手法はないんだろうか。自分で定式化しようとしたら、存外ややこしくて失敗。
— Minagawa Takuya (@takmin) 2020年9月15日
絵にするとこんな感じです。
それに対してありがたいことに、いくつか反応をいただきました。
主成分分析ではいかがでしょうか?
— Hideki Nakayama (@n_hidekey) 2020年9月15日
主成分分析がまさにそれかと思います
— Kenjiro Sugimoto (@wosugi3) 2020年9月16日
主成分分析でできるという回答を複数からもらいました。
なるほど!データの分散が主成分方向に最大になるように、、、という理解だったのですが、主成分ベクトルまでの距離も小さくなりそうですね。本当にそうなりそうか復習してみます。
— Minagawa Takuya (@takmin) 2020年9月15日
自分でも色々と試してみたところ、導出に成功しました。
ラグランジュの未定乗数法使って解いたら、結果として主成分分析と同じになった!おもしれー。
— Minagawa Takuya (@takmin) 2020年9月16日
というわけで、せっかくなので僕が試した方法をメモしておきます。
尚、今回このようなリプライもいただきましたが、まだこちらの内容は追えてません。
普通に手法としてありますよ。こんなイメージですよね。https://t.co/sQp3GFbSjq
— Takashi Kaneda (@kndt84) 2020年9月15日
n個の点が与えられた時、これに最もフィットする2次元平面上の直線を求めるものとします。 まずはn個の点の重心を求め、それが原点となるように各点をへ移動します。
ここでは点群の重心です。
最初にこの重心移動したの点群に対して最もフィットする直線を求めることを考えます。
とすると、点とこの直線までの距離は、
で表せます。(どうしてかわからない人は自分で導出してみましょう。)
したがって、
とした時、最もフィットする直線を求めるには、 を最小化するを の条件の下で求めることになります。
尚、は要素がすべて1のベクトルです。
さて、このようにある拘束条件のもとで最小化を行うような問題はラグランジュの未定乗数法を使って解くことができます。 つまり
と置き、 となるおよびを求めます。
まずは
と求まります。 ここでは重心が原点のため、となるので、
となります。 次には、計算すると、
となります。すなわち、の固有ベクトルを求めればが求まることになります。 ここでは共分散行列なので、共分散行列の固有値問題=主成分分析を行っていることと同じであることがわかりました。
さて、ここで固有値が最も大きい固有ベクトル(第1主成分)が求める直線方向のベクトルとなるわけですが、はその直線の法線ベクトルなので、第1主成分と直行する第2主成分をとします。
最後にここで求まったからは以下のように求まります。