はじめに
データ解析において説明変数を(線形)変換する機会は多く,機械学習の文脈では特徴量エンジニアリングの一環として理解されている.
重回帰分析の場面では,説明変数の標準化を行うことで得られる回帰係数はある種の"特徴量重要度"として解釈されることもある.
ExcelやPython,Rなどで重回帰分析をする中で,説明変数の線形変換を行った際に回帰係数がどのように変換されるか,数理の観点から確かめたくなった.(もちろん,ツールを動かしていれば変換の規則性はなんとなく掴めるので,分析者にとって経験則的には当たり前のことかもしれない.)
少し調べた限りでは,回帰係数ベクトル\hat{\bm{\beta}}を計画行列Xと目的変数ベクトル\bm{y}を使って表記するまでにとどまっている記事・文献が多いと感じている(あくまで個人の感想)が,変換の様子を見るにはそれだけでは足らず回帰係数ベクトルの成分を見ることが必要だと思ったので,実際に数式で確認してみた.
定式化
重回帰分析における線形回帰モデルは説明変数yをp個の説明変数x_1, \ldots , x_pを使って
y = f(x_1, \ldots , x_p) = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p
という形で表現・説明するモデルのことである.(今回の考察では説明変数/目的変数の入/出力を表現するにとどめ,正規分布を踏まえた議論には深入りしないつもりである.)
回帰係数\beta_iは得られている説明変数と目的変数のデータから以下の流れで推定される(最小二乗法).
サンプルサイズnのデータの関係を
\begin{align*}
\begin{pmatrix}
y_1 \\
y_2 \\
\vdots \\
y_n
\end{pmatrix}
&
=
\begin{pmatrix}
\beta_0 + \beta_1 x_{11} + \cdots + \beta_p x_{1p} \\
\beta_0 + \beta_1 x_{21} + \cdots + \beta_p x_{2p}
\\
\vdots
\\
\beta_0 + \beta_1 x_{n1} + \cdots + \beta_p x_{np}
\end{pmatrix}
\end{align*}
という形で表現したい(あくまでも願望なので厳密に等号が成り立つようにできることはほぼない).右辺はp個の説明変数データベクトル\bm{x}_1, \ldots \bm{x}_p \in \mathbb{R}^nと全ての成分が1である定数ベクトル\bm{1} \in \mathbb{R}^nを用いて定義される計画行列
X
=
\begin{pmatrix}
\bm{1} & \bm{x}_1 & \cdots & \bm{x}_p
\end{pmatrix}
\in {\rm{Mat}}(n , 1+p)
を用いて
\begin{align*}
\begin{pmatrix}
\beta_0 + \beta_1 x_{11} + \cdots + \beta_p x_{1p} \\
\beta_0 + \beta_1 x_{21} + \cdots + \beta_p x_{2p}
\\
\vdots
\\
\beta_0 + \beta_1 x_{n1} + \cdots + \beta_p x_{np}
\end{pmatrix}
&=
\beta_0
\begin{pmatrix}
1 \\
1 \\
\vdots \\
1
\end{pmatrix}
+
\beta_1
\begin{pmatrix}
x_{11} \\
x_{21} \\
\vdots \\
x_{n1}
\end{pmatrix}
+
\cdots
\beta_p
\begin{pmatrix}
x_{1p} \\
x_{2p} \\
\vdots \\
x_{np}
\end{pmatrix}
\\
&=
\beta_0 \bm{1} + \beta_1 \bm{x}_1 + \cdots + \beta_p \bm{x}_p
\\
&=
\begin{pmatrix}
\bm{1} & \bm{x}_1 & \cdots & \bm{x}_p \\
\end{pmatrix}
\begin{pmatrix}
\beta_0 \\
\beta_1 \\
\vdots \\
\beta_p
\end{pmatrix}
=
X \bm{\beta}
\end{align*}
と表せる.これは\bm{\beta}に応じて変化するが,これと実際の目的変数データ
\bm{y}
=
\begin{pmatrix}
y_1 \\
y_2 \\
\vdots \\
y_n
\end{pmatrix}
の間の(二乗)誤差を最小にするように回帰係数ベクトル\hat{\bm{\beta}}が推定される.導出の詳細は割愛するが,列とベクトルの言葉で書けば
\hat{\bm{\beta}} = (X^\top X)^{-1} X^\top \bm{y}
である(今回の考察ではX^\top Xの逆行列が存在することを仮定する).
・・・と,ここまではよく見かける.
考察したいのは説明変数の線形変換(定数倍・定数の足し引き)が係数にどのように影響するのかであるので,回帰係数ベクトル\hat{\bm{\beta}}が持つ1+p個の各成分の変換の様子をみる必要があると考える.
そのための準備として,線形代数の理論から行列の知識をいくつか復習しよう.
線形代数の復習
行列式
m次正方行列A = (a_{ij})の行列式を\det{A}や|A|,また成分を使って
\begin{vmatrix}
a_{11} & a_{12} & \cdots & a_{1m} \\
a_{21} & a_{22} & \cdots & a_{2m} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mm}
\end{vmatrix}
と表す.
行列式の性質
ある行が別の行の定数倍,またはある列が別の列の定数倍になっている(線形従属)場合,その行列式の値は0である.また,次の性質をよく使う.
\begin{align*}
&
\det
\begin{pmatrix}
\bm{a}_1 & \cdots & r \bm{a}_j + \bm{b}_j & \cdots & \bm{a}_m \\
\end{pmatrix}
\\
&=
r
\det
\begin{pmatrix}
\bm{a}_1 & \cdots & \bm{a}_j & \cdots & \bm{a}_m \\
\end{pmatrix}
+
\det
\begin{pmatrix}
\bm{a}_1 & \cdots & \bm{b}_j & \cdots & \bm{a}_m \\
\end{pmatrix}.
\end{align*}
余因子行列による逆行列の表示
m次正方行列Aの(i,j)余因子とは,Aのi行とj列を除いた成分からなるm-1次正方行列(これをA_{ij}と表す)に対して定まるスカラー(-1)^{i+j} \det{A_{ij}}のことである.
そして,Aの(i,j)余因子を成分にもつ行列((-1)^{i+j} \det{A_{ij}})の転置行列をAの余因子行列といい\tilde{A}で表す.
Aが逆行列を持つとき,\displaystyle A^{-1} = \frac{1}{\det{A}} \tilde{A}が成り立つ.
回帰係数の考察:p=2の場合
重回帰分析に話を戻そう.以上の復習をふまえると,回帰係数ベクトルは
\hat{\bm{\beta}} = (X^\top X)^{-1} X^\top \bm{y} = \frac{1}{\det{X^\top X}} \widetilde{X^\top X} \ X^\top \bm{y}
となる.説明変数の数が少ない状態で考察するほうが手計算しやすく何が起きているのか見やすいため,説明変数の数をp=2に絞って議論することにしよう.その場合,計画行列は
X
=
\begin{pmatrix}
\bm{1} & \bm{x}_1 & \bm{x}_2 \\
\end{pmatrix}
である.
この記事では\det{X^\top X}の変換の様子を見てみよう.まず
X^\top X
=
\begin{pmatrix}
\bm{1}^\top \\
\bm{x}_1^\top \\
\bm{x}_2^\top
\end{pmatrix}
\begin{pmatrix}
\bm{1} & \bm{x}_1 & \bm{x}_2 \\
\end{pmatrix}
=
\begin{pmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_1 & \bm{1}^\top \bm{x}_2 \\
\bm{x}_1^\top \bm{1} & \bm{x}_1^\top \bm{x}_1 & \bm{x}_1^\top \bm{x}_2 \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_1 & \bm{x}_2^\top \bm{x}_2
\end{pmatrix}
であるので,その行列式は
\det{X^\top X}
=
\begin{vmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_1 & \bm{1}^\top \bm{x}_2 \\
\bm{x}_1^\top \bm{1} & \bm{x}_1^\top \bm{x}_1 & \bm{x}_1^\top \bm{x}_2 \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_1 & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
である.
定数倍に関する変換性
説明変数ベクトル\bm{x}_1の各成分が一律c倍となる変換を受けたとすると,変換後の行列式は
\begin{align*}
\begin{vmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top ({\color{red}c}\bm{x}_1) & \bm{1}^\top \bm{x}_2 \\
(c\bm{x}_1)^\top \bm{1} & (c\bm{x}_1)^\top ({\color{red}c}\bm{x}_1) & (c\bm{x}_1)^\top \bm{x}_2 \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top ({\color{red}c}\bm{x}_1) & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
&=
{\color{red}c}
\begin{vmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_1 & \bm{1}^\top \bm{x}_2 \\
({\color{blue}c}\bm{x}_1)^\top \bm{1} & ({\color{blue}c}\bm{x}_1)^\top \bm{x}_1 & ({\color{blue}c}\bm{x}_1)^\top \bm{x}_2 \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_1 & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
\\
&=
{\color{red}c} \cdot {\color{blue}c}
\begin{vmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_1 & \bm{1}^\top \bm{x}_2 \\
\bm{x}_1^\top \bm{1} & \bm{x}_1^\top \bm{x}_1 & \bm{x}_1^\top \bm{x}_2 \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_1 & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
\\
&=
c^2 \det{X^\top X}
\end{align*}
からわかるようにc^2倍になる.なお,複数の説明変数ベクトルが同時に変換(\bm{x}_1 \to c_1 \bm{x}_1, \bm{x}_2 \to c_2 \bm{x}_2)される場合はそれぞれのスカラー倍が反映されて行列式がc_1^2 \cdot c_2^2倍されることを確認できる.
定数の足し引きに関する変換性
説明変数ベクトル\bm{x}_1の各成分が一律bだけ加えられる変換\bm{x}_1 \to \bm{x}_1 + b \bm{1}を受けたとして,変換後の行列式を計算すると
\begin{align*}
&
\begin{vmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top (\bm{x}_1 + b\bm{1}) & \bm{1}^\top \bm{x}_2 \\
(\bm{x}_1 + b\bm{1})^\top \bm{1} & (\bm{x}_1 + b\bm{1})^\top (\bm{x}_1 + b\bm{1}) & (\bm{x}_1 + b\bm{1})^\top \bm{x}_2 \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top (\bm{x}_1 + b\bm{1}) & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
\\
&=
\begin{vmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_1 + b \bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_2 \\
{\color{red}\bm{x}_1^\top \bm{1}} + {\color{blue}b\bm{1}^\top \bm{1}} & {\color{red}\bm{x}_1^\top (\bm{x}_1 + b\bm{1})} + {\color{blue}b\bm{1}^\top (\bm{x}_1 + b\bm{1})} & {\color{red}\bm{x}_1^\top \bm{x}_2} + {\color{blue}b\bm{1}^\top \bm{x}_2} \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_1 + b\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
\\
&=
\begin{vmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_1 + \underline{b \bm{1}^\top \bm{1}} & \bm{1}^\top \bm{x}_2 \\
{\color{red}\bm{x}_1^\top \bm{1}} & {\color{red}\underline{\bm{x}_1^\top} (\bm{x}_1 + \underline{b\bm{1}})} & {\color{red}\bm{x}_1^\top \bm{x}_2} \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_1 + \underline{b\bm{x}_2^\top \bm{1}} & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
+
\underbrace{
\begin{vmatrix}
\bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_1 + b \bm{1}^\top \bm{1} & \bm{1}^\top \bm{x}_2 \\
{\color{blue}b\bm{1}^\top \bm{1}} & {\color{blue}b\bm{1}^\top (\bm{x}_1 + b\bm{1})} & {\color{blue}b\bm{1}^\top \bm{x}_2} \\
\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_1 + b\bm{x}_2^\top \bm{1} & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
}_{第一行と第二行が線形従属であるため0}
\\
&=
\det{X^\top X}
+
\underbrace{
\begin{vmatrix}
\bm{1}^\top \bm{1} & \underline{b \bm{1}^\top \bm{1}} & \bm{1}^\top \bm{x}_2 \\
\bm{x}_1^\top \bm{1} & \underline{b \bm{x}_1^\top \bm{1}} & \bm{x}_1^\top \bm{x}_2 \\
\bm{x}_2^\top \bm{1} & \underline{b \bm{x}_2^\top \bm{1}} & \bm{x}_2^\top \bm{x}_2
\end{vmatrix}
}_{第一列と第二列が線形従属であるため0}
\\
&=
\det{X^\top X}
\end{align*}
となる.つまり変換前後で行列式は不変である.なお,上の計算を振り返ると,複数の説明変数ベクトルが同時に変換(\bm{x}_1 \to \bm{x}_1 + b_1 \bm{1}, \bm{x}_2 \to \bm{x}_2 + b_2 \bm{1})されても行列式\det{X^\top X}が不変であることを確認できる.
まとめ
回帰係数ベクトル
\hat{\bm{\beta}} = (X^\top X)^{-1} X^\top \bm{y} = \frac{1}{\det{X^\top X}} \widetilde{X^\top X} \ X^\top \bm{y}
のうち,今回は\det{X^\top X}の変換性を見た.つまり以下の二つが成り立つ:
- 説明変数の定数c倍については,\det{X^\top X}がc^2倍となる.
- 説明変数に定数を加算しても,\det{X^\top X}は不変である.
次回の記事では\displaystyle \widetilde{X^\top X} \ X^\top \bm{y}の変換性について見る.今回の記事と合わせることで,回帰係数ベクトルの変換の様子を明らかにしていきたい.
次回の記事はこちら:
https://zenn.dev/miloc/articles/224e09c0e293f8
参考文献
Discussion