はじめに
『Pythonで学ぶ空間データサイエンス入門』の独学ノートです。本の内容から寄り道してアレコレ考えます。
本を読んだ上で補助的に読んでください。
この記事では、線形回帰モデルの最小二乗法について、数式を使って解説します。
【前の内容】
【他の内容】
【今回の内容】
3.2.1-3 線形回帰モデルの最小二乗法の導出
線形回帰モデル(linear regression model)に対する最小二乗法(OLS・ordinary least square)におけるパラメータの計算式を導出します。
モデルの設定
まずは、線形回帰モデルの定義を数式で確認します。
個のデータについて、 番目の説明変数(入力データ)を 次元ベクトル とします。
個の説明変数をまとめて、 の行列 とします。
各変数に関して、 番(列)目の要素を とします。(インデックスを0から割り当てているので) 次元(列)です。
番目の要素 に対する真の係数パラメータを として、 個の真の係数パラメータをまとめて、 次元ベクトル とします。
番目の要素 は定数項に対応します。
番目のデータの誤差項を として、 個のデータの誤差項をまとめて、 次元ベクトル とします。
各誤差 は、平均が で分散が (標準偏差が )の正規分布に従って、独立に生成されると仮定します。
番目と 番目の誤差項 の共分散を とすると、誤差項間は無相関(無関係に生成される)なので、 です。各誤差項自身との共分散は分散 です。
番目の被説明変数(出力データ)を として、 個の被説明変数をまとめて、 次元ベクトル とします。
(1つのデータにおける)線形回帰モデルは、次の式で定義されます。
途中式の途中式(クリックで展開)
- 1: 説明変数 とパラメータ の内積と誤差項 の和の式を立てます。
- 2: ベクトル の要素を明示します。
- 3: ベクトルの内積(要素ごとの積の和)を計算します。
- 4: 個の項の和を でまとめます。
- 5: (項の形が異なる) 番目の項 を取り出し( 個の要素の和を でまとめ)ます。
個のデータをまとめると、次の式で計算できます。
途中式の途中式(クリックで展開)
- 1: 説明変数 とパラメータ の積と誤差項 の和の式を立てます。
- 2: 行列とベクトル の要素を明示します。
- 3: 行列とベクトルの積(行とベクトルの内積)を計算します。
- 4: ベクトルの和(要素ごとの和)を計算します。
説明変数の定義 より、 番(列)目の項は となり、 は(説明変数の係数ではなく)定数項になります。
ここまでは、線形回帰モデルを確認しました。次からは、観測データとして が得られたときの線形回帰モデルのパラメータを推定します。
係数パラメータの計算式
線形回帰モデルに対するOLSによる係数パラメータの推定値の計算式を導出します。
説明変数の 番目の要素 に対する係数パラメータの推定値(最小二乗推定量)を として、 個の係数パラメータの推定値をまとめて、 次元ベクトル とします。
番目の被説明変数の推定値を として、 個の被説明変数の推定値をまとめて、 次元ベクトル とします。
各被説明変数 の推定値 は、推定パラメータ を用いて求めた値です。
途中式の途中式(クリックで展開)
- 1: 説明変数 とパラメータ の内積の式を立てます。
- 2: ベクトル の要素を明示します。
- 3: ベクトルの内積(要素ごとの積の和)を計算します。
- 4: 個の項の和を でまとめます。
- 5: (項の形が異なる) 番目の項 を取り出し( 個の要素の和を でまとめ)ます。
個のデータをまとめると、次の式で計算できます。
途中式の途中式(クリックで展開)
- 1: 説明変数 とパラメータ の積の式を立てます。
- 2: 行列とベクトル の要素を明示します。
- 3: 行列とベクトルの積(行とベクトルの内積)を計算します。
観測データとして得られた を実現値、推定パラメータから求めた を理論値とも呼びます。
各データに関して、実現値 と理論値 の差を残差と言い、 とします。
個のデータの残差をまとめて、 次元ベクトル とします。
途中式の途中式(クリックで展開)
- 1: 実現値 と理論値 の差の式を立てます。
- 2: ベクトル の要素を明示します。
- 3: ベクトルの差(要素ごとの差)を計算します。
残差 の定義式に関して、理論値 の式(2)で置き換えて使います。
残差 の2乗和(残差平方和・ の内積)を考えます。
途中式の途中式(クリックで展開)
- 1: の式(3)より、 の内積の式を立てます。
- 2: 括弧を展開します。
- 3: スカラは転置しても変化しないので、2つ目の項は で置き換えられ、転置行列の性質 より、 となります。
- 3: 転置行列の性質 より、3つ目の項は となります。
- 4: 式を整理します。
残差平方和 を推定パラメータ に関して微分します。
途中式の途中式(クリックで展開)
- 1: に対する の偏微分の式を立てます。 に関する微分なので、 は定数として扱います。
- 2: 和の微分 より、項ごとの微分の和に分割します。
- 3: 定数の微分 より、1つ目の項は0ベクトルになり消えます。
- 3: 定数倍の微分 より、 の係数を の外に出します。
- 3: 対象行列の二次形式の微分 より、 を1つの行列とみなして変形します。
- 4: 変数の微分 より、2つ目の項の微分が単位行列になり消えます。
残差平方和の微分 が0ベクトル となる推定パラメータ を求めます。
途中式の途中式(クリックで展開)
- 1: とおきます。
- 2-3: について式を整理します。
- 3: 両辺に左から の逆行列を掛けます。
の計算式が得られました。
以上で、線形回帰モデルの係数パラメータの推定値の計算式が求まりました。
分散パラメータの計算式
線形回帰モデルに対するOLSによる誤差項の生成分布の分散パラメータの推定値の計算式を導出します。
冪等行列 を用いて、残差 の式(3)を変形します。
途中式の途中式(クリックで展開)
- 2: を式(4)で置き換えます。
- 3: を式(1)で置き換えます。
- 4: 括弧を展開します。
- 5: 逆行列の性質 より、 が単位行列になり消えます。
- 6: を括り出して、式を整理します。
- 7: 冪等行列の定義 より、置き換えます。
冪等行列については「3.2.2:冪等行列の性質の導出【空間データサイエンス入門のノート】 - からっぽのしょこ」を参照してください。
ちなみに、ハット行列 を用いて、残差 の式(3)を変形すると
途中式の途中式(クリックで展開)
- 2: を式(4)で置き換えます。
- 3: ハット行列の定義 より、置き換えます。
- 4: を括り出します。
となり、さらに冪等行列 を用いて変形すると、同じ式になります。
途中式の途中式(クリックで展開)
- 1: ハット行列を用いた冪等行列の定義 より、置き換えます。
- 2: を式(1)で置き換えます。
- 3: 括弧を展開します。
- 4-5: 冪等行列の性質 より、0ベクトルになり消えます。
ハット行列(射影行列)については「3.2.2:ハット行列の性質の導出【空間データサイエンス入門のノート】 - からっぽのしょこ」を参照してください。
残差(観測値と推定値の差) と誤差(観測値と真値の差) の関係式が得られました。
残差 の式(5)を用いて、残差平方和を考えます。
途中式の途中式(クリックで展開)
- 1: の式(5)より、 の内積の式を立てます。
- 2: 転置行列の性質 より、 となります。
- 3: 冪等行列の性質 、 より、式を整理します。
さらに、要素を明示して計算します。
途中式の途中式(クリックで展開)
- 2: 横ベクトルと行列 の積を計算します。
- 3: ベクトル の内積を計算します。
残差平方和 の期待値を考えます。
途中式の途中式(クリックで展開)
- 1: の期待値の式を立てます( の式(6)の両辺で期待値をとります)。
- 2: によって定義される は と無関係なので、期待値の性質 より、 の各要素 を の外に出せます。
各誤差項 は平均 の正規分布に従い生成されると仮定しているので、 の期待値は です。
よって、 の積の期待値は の共分散 になります。
途中式の途中式(クリックで展開)
- 1: 左辺 に関して、 に変形します。
- 2: で置き換えます。
- 3: 共分散の定義 より、置き換えます。
また、誤差項間は独立に生成されると仮定しているので、異なるインデックスの要素 の共分散は です。各誤差項は分散 の正規分布に従い生成されると仮定しているので、同じインデックスの要素 の共分散( の分散)は です。
この関係を用いて、残差平方和の期待値 の式(6)を整理します。
途中式の途中式(クリックで展開)
- 1: の式(7)の に関する項の和 を展開します。
- 2: 各組み合わせの積の期待値 を式(8)で置き換えます。
- 3: 各組み合わせの共分散 を式(9)で置き換えます。
- 4: 同じデータインデックスの組み合わせ の項のみ残ります。
さらに変形します。
途中式の途中式(クリックで展開)
- 1: は各データと無関係なので の外に出せます。
- 2: は の対角要素の和なので、行列のトレース(対角要素の和) に置き換えます。
- 3: 冪等行列の性質 より、 のトレースは の行数と列数の差になります。
この式を分散パラメータ について解きます。
の計算式が得られました。
残差平方和の期待値 を残差平方和 で近似
して、置き換えます(なぜこんな操作をしてもいいのか?)。
以上で、線形回帰モデルの誤差項の分散パラメータの計算式が求まりました。
係数パラメータの分散共分散行列の計算式
線形回帰モデルに対するOLSによる係数パラメータの推定値の分散共分散行列の計算式を導出します。
誤差項 の期待値は、0ベクトルになります。
途中式の途中式(クリックで展開)
- 1: の期待値の式を立てて、ベクトル の要素を明示します。
- 2: ベクトルの期待値を要素ごとの期待値に変形します。
- 3: 誤差項の仮定より、各誤差項の期待値は です。
誤差項 の分散共分散行列は、 の2乗和(内積)の期待値になります。
途中式の途中式(クリックで展開)
- 1: 分散共分散行列の定義 より、 の分散共分散行列の式を立てます。
- 1-2: を式(10)で置き換えると、0ベクトルになり消えます。
さらに、要素を目指して計算すると、分散パラメータ と単位行列 の積になります。
途中式の途中式(クリックで展開)
- 1: ベクトル の要素を明示します。
- 2: ベクトル の積を計算します。
- 3: 行列の期待値を要素ごとの期待値に変形します。
- 4: 各組み合わせの積の期待値 を式(8)で置き換えます。
- 5: 各組み合わせの共分散 を式(9)で置き換えます。
- 6-7: スカラと行列の積に分解します。
係数パラメータの推定値 の式(4)を変形します。
途中式の途中式(クリックで展開)
- 2: を式(1)で置き換えます。
- 4: 括弧を展開します。
- 5: 逆行列の性質 より、 が単位行列になり消えます。
推定パラメータ の期待値は、真のパラメータ になります。
途中式の途中式(クリックで展開)
- 1: の期待値の式を立てます( の式(12)の両辺で期待値をとります)。
- 2: 和の期待値 より、項ごとの期待値に分割します。
- 3: 観測値 は定数として扱うので、 の外に出せます。
- 4-5: を式(10)で置き換えると、後の項が0ベクトルになり消えます。
よって、推定パラメータ と推定パラメータの期待値 は、次の式になります。
途中式の途中式(クリックで展開)
- 1: の差の式を立てて、 を式(13)で置き換えます。
- 2: を式(12)で置き換えます。
- 3: 式を整理します。
推定パラメータ の分散共分散行列を考えます。
途中式の途中式(クリックで展開)
- 1: の分散共分散行列の式を立てます。
- 1-2: の差を式(14)で置き換えます。
- 3: 転置行列の性質 、転置行列と逆行列の関係 より、 となります。
- 4: 観測値 は定数として扱うので、 の外に出せます。
- 5: を式(11)で置き換えます。
- 6: スカラ を前に出します。
- 7: 逆行列の性質より、 または が単位行列になり消えます。
の分散共分散行列の計算式が得られました。
この記事では、線形回帰モデルの最小二乗法を数式で確認しました。次の記事では、プログラムで確認します。
参考文献
おわりに
これまでにいくつかの回帰モデルを扱ってきましたが、ナントカ回帰じゃないシンプルなモデルはやってなかったかもしれません。いやこのモデルは重回帰なので、よりシンプルな単回帰をまだやってないのですが。(忘れてるだけで扱ってるかもしれませんが…)
シンプルなら簡単かというとそんなことはなく、行列計算が普通に重かったです。1年以上ぶりにthe matrix cookbookを引くことになりました。二次形式の微分を公式的に書いてしまったのが心残りです。行列の性質シリーズを導出してみたいなぁ(と思うこと3年ほど?)、ネタ切れしたらやるかも。
このシリーズの想定読者が定まっていなかったのですが、軽い行列計算はできるレベルということでいいですかね。
2024年8月4日は、私立恵比寿中学の結成15周年の記念日です。
15年前に自分が何をしていたかぱっと思い出せませんが、結成当初(かは分かりませんがももクロの妹分と呼ばれてた(よね?)頃)には少し聞いたことがあったはずなんですよね。当時の私はアイドル自体に興味がなかったのですが、10年以上の時を経てまさかライブに行くほどハマることになるとは、人生何が起こるか分かりません。今後どうなるかは分かりませんが、とりあえず年度末のライブのチケットを申し込んだので今はそれが楽しみです(次こそエニエニをお願いします!)。
おめでとうございます!これからも永遠に中学生♪
【次の内容】