Aritalab:Lecture/Math/LR
(→最小二乗法) |
|||
(3 intermediate revisions by one user not shown) | |||
Line 10: | Line 10: | ||
ここでは最適パラメータを求める最小二乗法を単回帰を使って説明します。 | ここでは最適パラメータを求める最小二乗法を単回帰を使って説明します。 | ||
+ | <big> | ||
: y<sub>1</sub> = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub> + r<sub>1</sub> | : y<sub>1</sub> = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub> + r<sub>1</sub> | ||
: y<sub>2</sub> = b<sub>0</sub> + x<sub>2</sub> b<sub>1</sub> + r<sub>2</sub> | : y<sub>2</sub> = b<sub>0</sub> + x<sub>2</sub> b<sub>1</sub> + r<sub>2</sub> | ||
: : : | : : : | ||
: y<sub>n</sub> = b<sub>0</sub> + x<sub>n</sub> b<sub>1</sub> + r<sub>n</sub> | : y<sub>n</sub> = b<sub>0</sub> + x<sub>n</sub> b<sub>1</sub> + r<sub>n</sub> | ||
+ | </big> | ||
+ | |||
+ | {| class="wikitable" style="float:right" | ||
+ | |- | ||
+ | |y ... 目的となる変数(説明される側なので従属変数とよぶ) | ||
+ | |- | ||
+ | |x ... 説明に使う変数(原因となる側なので独立変数とよぶ) | ||
+ | |- | ||
+ | |r ... 残差 (説明しきれない部分) | ||
+ | |} | ||
+ | |||
+ | というデータがあると仮定しましょう。y と x が与えられ、ここで決めたいのは最適な b<sub>0</sub>, b<sub>1</sub> の値です。r は残差 (residual) といって、y<sub>i</sub> と b<sub>0</sub> + x<sub>i</sub>b<sub>1</sub> との差を表します。 | ||
− | |||
最小二乗法とは残差の二乗和 S を最小化するアプローチです。 | 最小二乗法とは残差の二乗和 S を最小化するアプローチです。 | ||
− | : S = <big>Σ</big><sub>i</sub> | + | <big> |
− | S の最小値を満たす b<sub>0</sub> と b<sub>1</sub> を求めるには、S を b<sub>0</sub> と b<sub>1</sub> | + | : S = <big>Σ</big><sub>i</sub> r<sub>i</sub><sup>2</sup> = <big>Σ</big> (b<sub>0</sub> + x<sub>i</sub>b<sub>1</sub> - y<sub>i</sub>)<sup>2</sup> |
+ | </big> | ||
+ | S を b<sub>0</sub> と b<sub>1</sub> による二次関数とみなします。S の最小値を満たす b<sub>0</sub> と b<sub>1</sub> を求めるには、S を b<sub>0</sub> と b<sub>1</sub> のそれぞれで(偏)微分して 0 とおいた連立方程式を解けばOKです。二乗の式をそのまま微分します。 | ||
+ | |||
+ | :∂S/∂b<sub>0</sub> = ∑ 2( b<sub>0</sub> + x b<sub>1</sub> - y) = 0 | ||
+ | :∂S/∂b<sub>1</sub> = ∑ 2( b<sub>0</sub> + x b<sub>1</sub> - y) x = 0 | ||
+ | |||
+ | ここから、 y = x b<sub>1</sub> + b<sub>0</sub> という式が出てきます。つまり、目的の b<sub>0</sub> と b<sub>1</sub> は | ||
: y<sub>1</sub> = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub> | : y<sub>1</sub> = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub> | ||
Line 26: | Line 45: | ||
を満たすことになります。これを行列の形に書くと | を満たすことになります。これを行列の形に書くと | ||
− | :<math>\mathbf{y = Xb} \quad \mathbf{y} = \begin{bmatrix} y_1\\ y_2\\ | + | :<math>\mathbf{y = Xb} \quad \mathbf{y} = \begin{bmatrix} y_1\\ y_2\\ \vdots \\ y_n \end{bmatrix}, \mathbf{X} = \begin{bmatrix} 1&x_1\\ 1&x_2\\ \vdots&\vdots\\ 1&x_n \end{bmatrix}, \mathbf{b} = \begin{bmatrix} b_0\\ b_1 \end{bmatrix}</math> |
+ | |||
これから逆行列を用いて <b>b</b> を表せば | これから逆行列を用いて <b>b</b> を表せば | ||
+ | |||
+ | <big> | ||
:<b>b = (X<sup>T</sup>X)<sup>-1</sup>X<sup>T</sup>y</b> | :<b>b = (X<sup>T</sup>X)<sup>-1</sup>X<sup>T</sup>y</b> | ||
− | + | </big> | |
+ | |||
+ | となります(X<sup>T</sup>については、以下の一般逆行列の説明を参照)。重回帰の場合も同じ式になります(行列 <b>X</b> の列数が増えるだけ)。 | ||
与えられた y, x からこの式を計算するだけで自動的に b の値が求まるのです。 | 与えられた y, x からこの式を計算するだけで自動的に b の値が求まるのです。 | ||
+ | ;[[Aritalab:Lecture/Math/LR/R_LM| R による実習ページ]] | ||
+ | |||
+ | ===一般逆行列=== | ||
+ | すべての行列に逆行列があるわけではありません。そもそも正方(X,Y方向が同じ段数)でないと、逆行列はありません。しかし普通の行列は正方ではありません。そこで正方行列を無理やり作る方法が、自分の転置行列をかけるやり方です。 <b>X<sup>T</sup>X</b> は必ず正方になります。そこで <b>y = X b</b> の左側から <b>X<sup>T</sup></b> をかけて | ||
+ | |||
+ | :<b>X<sup>T</sup> y = (X<sup>T</sup>X) b </b> | ||
− | + | この式から b を求めることができます。 | |
+ | ===行列のランク落ち=== | ||
線形代数における行列のランク落ちとは、線形独立な変数の数が次数より少ない状態を指します。 | 線形代数における行列のランク落ちとは、線形独立な変数の数が次数より少ない状態を指します。 | ||
− | + | 回帰分析でいうと、説明変数間に非常に相関が高いものがある場合です(共線性といいます)。 | |
− | + | このとき、逆行列の計算も上手くいかず、 <b>b</b> の値がおかしくなります。 |
Latest revision as of 11:45, 8 September 2016
Contents |
[edit] 回帰分析
回帰分析には 1 変量の単回帰 (univariate linear regression) と多変量の重回帰 (multivariate linear regression) があります。モデルしたい変量を y (目的変量)、説明に使う変量を x 、係数を b で表します( b0 は定数項)。
- (重)回帰モデル
- y = b0 + x1 b1 + x2 b2 + ... + xn bn (つまり y を複数の変量 x1~xn の線形結合でモデルするやり方)
特に 1 変数の場合を単回帰モデルといいます。
[edit] 最小二乗法
ここでは最適パラメータを求める最小二乗法を単回帰を使って説明します。
- y1 = b0 + x1 b1 + r1
- y2 = b0 + x2 b1 + r2
- : :
- yn = b0 + xn b1 + rn
y ... 目的となる変数(説明される側なので従属変数とよぶ) |
x ... 説明に使う変数(原因となる側なので独立変数とよぶ) |
r ... 残差 (説明しきれない部分) |
というデータがあると仮定しましょう。y と x が与えられ、ここで決めたいのは最適な b0, b1 の値です。r は残差 (residual) といって、yi と b0 + xib1 との差を表します。
最小二乗法とは残差の二乗和 S を最小化するアプローチです。
- S = Σi ri2 = Σ (b0 + xib1 - yi)2
S を b0 と b1 による二次関数とみなします。S の最小値を満たす b0 と b1 を求めるには、S を b0 と b1 のそれぞれで(偏)微分して 0 とおいた連立方程式を解けばOKです。二乗の式をそのまま微分します。
- ∂S/∂b0 = ∑ 2( b0 + x b1 - y) = 0
- ∂S/∂b1 = ∑ 2( b0 + x b1 - y) x = 0
ここから、 y = x b1 + b0 という式が出てきます。つまり、目的の b0 と b1 は
- y1 = b0 + x1 b1
- y2 = b0 + x2 b1
- : :
- yn = b0 + xn b1
を満たすことになります。これを行列の形に書くと
これから逆行列を用いて b を表せば
- b = (XTX)-1XTy
となります(XTについては、以下の一般逆行列の説明を参照)。重回帰の場合も同じ式になります(行列 X の列数が増えるだけ)。 与えられた y, x からこの式を計算するだけで自動的に b の値が求まるのです。
[edit] 一般逆行列
すべての行列に逆行列があるわけではありません。そもそも正方(X,Y方向が同じ段数)でないと、逆行列はありません。しかし普通の行列は正方ではありません。そこで正方行列を無理やり作る方法が、自分の転置行列をかけるやり方です。 XTX は必ず正方になります。そこで y = X b の左側から XT をかけて
- XT y = (XTX) b
この式から b を求めることができます。
[edit] 行列のランク落ち
線形代数における行列のランク落ちとは、線形独立な変数の数が次数より少ない状態を指します。 回帰分析でいうと、説明変数間に非常に相関が高いものがある場合です(共線性といいます)。 このとき、逆行列の計算も上手くいかず、 b の値がおかしくなります。