MENU
カテゴリー
おすすめプログラミングスクール紹介中! 一覧はこちらから

最小二乗法とは?公式の導出をわかりやすく高校数学を用いて解説!【平方完成の方法アリ】

こんにちは、ウチダです。

今回は、数Ⅰ「データの分析」の応用のお話である

「最小二乗法」

について、公式の導出を高校数学の範囲でわかりやすく解説していきたいと思います。

スポンサーリンク
目次

最小二乗法とは何か?

まずそもそも「最小二乗法」ってなんでしょう…

ということで、こちらの図をご覧ください。

今ここにデータの大きさが $n=10$ の散布図があります。

数学Ⅰの「データの分析」の分野でよく出される問題として、このようななんとな~くすべての点を通るような直線が書かれているものが多いのですが…

皆さん、こんな疑問は抱いたことはないでしょうか。

そもそも、この直線ってどうやって引いてるの?

よくよく考えてみれば不思議ですよね!

まあたしかに、この直線を書く必要は、高校数学の範囲においてはないのですが…

書けたら超かっこよくないですか!?(笑)

実際、勉強をするうえで、そういうポジティブな感情はモチベーションにも成績にも影響してきます!

ウチダ

この記事を読んだらぜひ友達に自慢してみて下さいね^^

最小二乗法とは回帰分析の一種

ここはがっつり大学の内容なので軽く飛ばしたいと思います。

回帰分析…あるデータ( $y$ )を、もう一方のデータ( $x$ )で予測や説明をするために、関数として表し分析すること。

ようするに、

「 $x$ と $y$ の関係ってどうなってんの?」
→「それを知るためには、関数として表すのが一番手っ取り早いよね!」

そういう発想です。

ですから、相関係数を求める意味と結構近いですね。

スポンサーリンク

最小二乗法のやり方その1【偏微分】

この「偏微分」という聞き慣れない言葉を説明する前に、まずは「微分」について正しく認識しておく必要があります。

簡単に「微分」と「偏微分」を定義するならば…

微分…1変数関数に対して、その点における関数の接線の傾きを求める道具。
偏微分…2変数以上の多変数関数に対して、1つの変数のみに関する微分を行うこと。

このような違いがあります。

まとめると、この最小二乗法を行うには、「多変数関数に対して微分のようなことを行う必要がある」ということです。

ウチダ

ですから、数学Ⅱを履修済みの方は、原理までは理解できなくとも計算は行えると思うので、調べてやってみても面白いかもしれませんね。

※ちなみにやり方は、「1つ変数を決めたらそれ以外の変数を定数と固定し、微分するという操作をすべての変数に対して行う」という感じです。こっちの方が計算が少しラク。

(補足)
ポイントは、偏微分が「 $1$ つの変数のみに関する微分」であることです。
つまり、それ以外の変数は定数として扱う、という意味になります。
ちなみに、すべて変数として微分することを「全微分」と言います。

さて、もちろんこの偏微分を使えば、最小二乗法はクリアできます。

しかしせっかくですので、ここでは高校数学のみの知識を用いて最小二乗法を紐解いていきます。

最小二乗法のやり方その2【平方完成】

さて、本題です。

今回は数学Ⅰで必ず習う「平方完成」を用いた最小二乗法のやり方を解説していきます。

手順1【距離を最小にしたい】

図をご覧ください。

まずはじめに、今求めたい関数(赤の点線)は直線なので1次関数です。

よって、$$y=ax+b$$というふうに、「 $a,b$ 」という2つの文字を用いて表すことができます。

次に、それっぽい直線を引くための考え方ですが…

直線とすべての点までの距離の合計値を最小にすればいい!

距離の合計値が最小であれば、なんとなくそれっぽくなりそうですよね!

ウチダ

「距離を求めたい」…これはデータの分析で扱う”分散”の記事にも出てきましたね。

距離を求めるときは、

  • 絶対値を用いる方法
  • 2乗する方法

この2つがありました。

今回利用するのは、「2乗する」方法です。

(距離の合計の最小値を二乗することで求めるから、最小二乗法」と言います。

手順2【距離を求める】

ここでは実際に距離を数式にしていきましょう。

具体的な例で考えていきたいので、ためしに $1$ 個目の点について見ていきましょう。

※左の点の座標から順に $( \ x_i \ , \ y_i \ )$( $1≦i≦10$ )と定めます。

データの点の座標はもちろ $( \ x_1 \ , \ y_1 \ )$ です。

また、$x$ 座標が $x_1$ である直線上の点(図のオレンジの点)は、 $y=ax+b$ に $x=x_1$ を代入して、$y=ax_1+b$ となるので、$$(x_1,ax_1+b)$$と表すことができます。

座標がわかったので、距離を2乗することで出していきます。

$$距離=\{y_1-(ax_1+b)\}^2$$

さて、ここで今回求めたかったのは、「すべての点と直線との距離」であることに着目すると、この操作を $i=2,3,4,…,10$ に対しても繰り返し行えばいいことになります。

そして、それらをすべて足せばよいですね!

ですから、今回最小にしたい式は、

\begin{align}\{y_1-(ax_1+b)\}^2+\{y_2-(ax_2+b)\}^2+…+\{y_{10}-(ax_{10}+b)\}^2\end{align}

※この数式は横にスクロールできます。(スマホでご覧の方対象。)

になります。

さあ、いよいよ次のステップで「平方完成」を利用していきますよ!

スポンサーリンク

手順3【平方完成をする】

早速平方完成していきたいのですが、ここで皆さん、こういう疑問が出てきませんか?

変数が2つ(今回の場合 $a,b$)あるのにどうやって平方完成すればいいんだ…?

大丈夫。 変数がたくさんあるときの鉄則を今から紹介します。

1つの変数のみ変数としてみて、それ以外の変数は定数扱いとする!

これは「やり方その $1$ (偏微分)」でも少し触れたのですが、

  • まず $a$ を変数としてみる… $a$ についての2次式になるから、その式を平方完成
  • つぎに $b$ を変数としてみる… $b$ についての2次式になるから、その式を平方完成

このようにすれば問題なく平方完成が行えます!

式がものすごいごちゃごちゃしてしまうので、係数を無視して2乗の部分だけ載せると、

\begin{align}\{a+\frac{b(x_1+x_2+…+x_{10})-(y_1+y_2+…+y_{10})}{10}\}^2\end{align}

\begin{align}\{b-\frac{10(x_1y_1+x_2y_2+…+x_{10}y_{10})-(x_1+x_2+…+x_{10})(y_1+y_2+…+y_{10})}{10({x_1}^2+{x_2}^2+…+{x_{10}}^2)-(x_1+x_2+…+x_{10})^2}\}^2\end{align}

※この式は横にスクロールできます。

となります。

今回は $n=10$ としてやっているので、式の中の $10$ という部分を $n$ に変えるだけで、一般的に同様な議論ができます。

まあ、今日の話は”流れ”と”結果”さえ押さえられれば十分です。

ウチダ

数学の勉強において結構大切なことですが、「頑張らなくていいことに頑張りすぎない」ようにしましょう。

手順4【連立方程式を作る】

ここではまず、「平方完成を行う意味」について考えていきましょう。

  1. 平方完成とは、文字通り $(実数)^2$ を作ること。
  2. そして、$(実数)^2≧0$ は常に成り立つ。

この2つを組み合わせると…

( )の中身が $0$ になるとき最小値を取る!

ということになりますね。

よって、先ほど平方完成した式の $( )の中身=0$ という方程式を解けばいいことになります。

今回変数が2つなので、( )が2つできます。 よってこれは連立方程式になります。

ちなみに、こんな感じの連立方程式です。

\begin{align}\left\{\begin{array}{ll}a+\frac{b(x_1+x_2+…+x_{10})-(y_1+y_2+…+y_{10})}{10}&=0 \\b-\frac{10(x_1y_1+x_2y_2+…+x_{10}y_{10})-(x_1+x_2+…+x_{10})(y_1+y_2+…+y_{10}}{10({x_1}^2+{x_2}^2+…+{x_{10}}^2)-(x_1+x_2+…+x_{10})^2}&=0\end{array}\right.\end{align}

※この数式は横にスクロールできます。(スマホでご覧の方対象。)

…見るだけで解きたくなくなってきますが、まあ理論上は $a,b$ の2元1次方程式なので解けますよね。

ウチダ

では最後に、実際に計算した結果のみを載せて終わりにしたいと思います。

手順5【連立方程式を解く】

ここまで皆さんお疲れさまでした。

最後に連立方程式を解けば結論が得られます。

※ここでは結果だけ載せるので、興味がある方はぜひチャレンジしてみてください。

$$a=\frac{ \ x \ と \ y \ の共分散 }{ \ x \ の分散 }$$
$$b=-a \ ( \ x \ の平均値) + \ ( \ y \ の平均値)$$

この結果からわかるように、「平均値」「分散」「共分散」が与えられていれば $a$ と $b$ を求めることができて、それっぽい直線を書くことができるというわけです!

スポンサーリンク

最小二乗法の問題を解いてみよう!

では最後に、最小二乗法を使う問題を解いてみましょう。

問題1. $(1,2),(2,5),(9,11)$ の回帰直線を最小二乗法を用いて求めよ。

さて、この問題では、「平均値」「分散」「共分散」が与えられていません。

しかし、データの具体的な値はわかっています。

こういう場合は、自分でこれらの値を求めましょう。

実際、データの大きさは $3$ ですし、そこまで大変ではありません。

では解答に移ります。

結論さえ知っていれば、このようにそれっぽい直線(つまり回帰直線)を求めることができるわけです。

逆に、どう求めるかを知らないと、この直線はなかなか引けませんね(^_^;)

ウチダ

「分散や共分散の求め方がイマイチわかっていない…」という方は、データの分析の記事をこちらにまとめました。よろしければご活用ください。

最小二乗法に関するまとめ

いかがだったでしょうか。

今日は、大学数学の内容をできるだけわかりやすく噛み砕いて説明してみました。

データの分析で何気なく引かれている直線でも、「きちんとした数学的な方法を用いて引かれている」ということを知っておくだけでも、数学というものの面白さを実感できると思います。

ぜひ、大学に入学しても、この考え方を大切にして、楽しく数学に取り組んでいってほしいと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
スポンサーリンク

コメントを残す

コメント一覧 (2件)

  • 親しみ深くしようと、日常的な用語を用いて、日常的な口調でお話になられていると思いますが、正しい言い方をしても通じるところまで、日常語を用いて、悪くいえばいいかげんな言い方で書くことに意味はないと思います。

    そして無駄に長いように思います。親しみ深くしようとして、日常語で反語のようなものをいれて、書いてあるととそのあいだにもう読むのが嫌になってしまいます。

    • 匿名様、コメントありがとうございます!
      そして匿名様の仰ることに、執筆者の私も大大大賛成でございます。

      こちらの最小二乗法の記事は、ブログを始めて半月の頃に書き上げたものです。
      2年半以上運営してきた今の私から見ると、まあwebライティングの基本を何も分かっていないといいますか、今すぐにでも書き直したいと思うばかりでございます。
      実際、この頃に書いた記事の多くはリライトをし、ある程度質を高くしてまいりました。

      この記事についてもいつかリライトできれば…と思っていましたが、今の私にはブログ以外に取り組みたい明確な目標があり、この記事をリライトする予定は今の所ありません。
      とにかく匿名様のご指摘はごもっともですが、直すモチベーションがわかないので、このまま公開させていただきたい、ということをお伝えしたかったです。

      この度は貴重なご意見、誠にありがとうございます。
      よろしければこれからも遊ぶ数学を、何卒宜しくお願いいたします。

コメントする

CAPTCHA


目次